从顺序读取和随机读取可以看出,AMD X2处理器在进行只读操作时始终需要经过系统内存的传输。下面再来看一下读取并修改数据的操作。

Pic.3: AMD Athlon 64 X2. 另一核心内顺序读取已修改数据

Pic.4: AMD Athlon 64 X2. 另一核心内随即读取已修改数据
从图中可以看到,结果仍然不太好,第二线程的数据读取延迟实在是太高了,因此没有可能从第一条线程直接读取数据。为了确认数据从系统总线读取,进行了更深入的试验
首先降低CPU倍频至6,此时CPU频率为1200MHz,下图读取已修改数据情况

Pic.5: AMD Athlon 64 X2, 1200MHz frequency. 另一核心随机读取已修改数据
现在每级的差距变成了6个周期,这证明了数据在CPU内部的传输仅经过内部缓存。
下面关闭第一线程中的读操作,仅让第二线程进行操作,以此来计算数据读取速度,也就是第二线程直接从内存读取数据块,测出延迟时间,然后清空缓存。

Pic.6: AMD Athlon 64 X2. 从系统内存顺序读取数据

Pic.7: AMD Athlon 64 X2. 从系统内存随即读取数据
比较后可以得知,读取在第一线程中未修改数据(图1和2)与直接从系统内存读取几乎完全重合,因此,随机读取的延迟应该是由硬件数据预读取技术决定的。
从对AMD X2的测试中我们看不到数据可以直接在两颗物理核心间交换的迹象。根据测试,最近的待处理数据总是通过系统内存读取。至于AMD为什么不采用crossbar switch交换数据,恐怕只有AMD自己明白了。
双路 AMD Opteron 系统
相信很多玩家都很对双路处理器的性能很感兴趣,抛开Intel,先让我们来看一下工作于2.8G的Opteron 254 的测试结果。

Pic.8: Dual-processor AMD Opteron system.顺序读取载入另一核心未修改数据

Pic.9: Dual-processor AMD Opteron system. 随机读取载入另一核心未修改数据

Pic.10: Dual-processor AMD Opteron system. 顺序读取载入另一核心已修改数据

Pic.11: Dual-processor AMD Opteron system.随机读取载入另一核心已修改数据
测试成绩和 Athlon 64 X2很相似,但是延迟更加严重了,特别是随机存储。据我们分析,顺便读取时的延迟很有可能是由于数据传输超过了 HyperTransport 总线带宽造成的。很明显,双核处理器在处理普通数据时较双路单核处理器效率要高一些。
|