从顺序读取和随机读取可以看出,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自己明白了。