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的一些特性作出的最佳选择。