Intel Pentium 4 (Prescott)
这里我们使用频率3800MHz,2MB L2缓存的Pentium 4作为对比,虽然支持超线程技术,但仅为单核的架构。相信网友会对Prescott的测试成绩很感兴趣,由于为虚拟双核,因此某种意义上可以说Pentium 4采用了共享L1与L2的设计。这种架构使从缓存读取数据的结果几乎没有意义,因此这里只展示读取修改数据的结果。

Pic.18: Intel Pentium 4 + HT. 顺序读取未修改数据

Pic.19: Intel Pentium 4 + HT. 随机读取未修改数据
结果不出所料,读取数据块时的4个延迟周期对应了L1数据缓存,顺序读取最大2048KB数据和随机读取最大256KB数据块时二级缓存都存在22个时钟周期的延迟,由于TLB容量的限制,在随机读取512KB以上数据时延迟增加明显。
总的来看,测试结果很明显的反映了Pentium 4 (Prescott)虚拟双核共享缓存的特点。
Intel Core Duo (Yonah)
下面测试的对象是当前Intel移动平台的主力军Core Duo T2400 ,该CPU主频为1833MHz,Core Duo作为Intel目前主流技术的代表,最大的特点就是采用了共享型的二级缓存设计。

Intel Core Duo
由于采用共享L2缓存,因此当数据在第一核心内进行操作时应该可以被第二核心“看到”,我们很期待好成绩的诞生。

Pic.21: Intel Core Duo (Yonah). 顺序读取载入另一核心未修改数据.

Pic.21: Intel Core Duo (Yonah). 随机读取载入另一核心未修改数据.
在进行1MB以下的未修改数据读取时,延迟为14个时钟周期,可以确信这来自于L2缓存内部的延迟。也许会有爱好者提出疑问,Core Duo拥有2MB缓存,但为什么数据块在2MB时延迟会大幅度提升?这主要是由于TLB的大小决定的,由于TLB只能同时处理1024KB的,当新页面被读取时,将会进行相当耗时的虚拟地址转换过程。那么再让我们来看一下Core Duo在读取修改数据时的成绩如何。

Pic.22 : Intel Core Duo (Yonah). 顺序读取载入另一核心已修改数据

Pic.23: Intel Core Duo (Yonah). 随机读取载入另一核心已修改数据
结果似乎不是很清晰,但让我们试着理解一下。数据块为1MB时延迟最低,但随着数据块的减小,延迟逐渐增大,在32KB时达到峰值,注意,32KB其实就是L1的大小。难道测试结果出错了?对比一下我们就可以发现读取接近L1大小数据块时的图形和前面的Athlon 64 X2 很相似,同样的阶梯型变化,每阶的为11个时钟周期,恰好为T2400的倍频。因此,我们可以得出结论:在读取修改数据时Core Duo采用了和Athlon 64 X2、Pentium D 相同的方式,待处理数据首先要通过系统总线的传送才能到达第二颗核心。这是由于Core Duo采用了回写型缓存策略,因此当数据没有在L2中命中时,第二核心会通过系统总线发出请求指令,第一核心也就会通过系统总线传送数据。暂时我们还不清楚Intel选择系统总线交换数据的原因,但这肯定是针对Core Duo的一些特性作出的最佳选择。
|