POPPUR爱换
标题:
真相帝,同样的L3,不同的结果,K10/Nehalem哥德巴赫猜想
[打印本页]
作者:
db20
时间:
2010-4-9 21:28
标题:
真相帝,同样的L3,不同的结果,K10/Nehalem哥德巴赫猜想
AMD的K10绝不是第一个有L3的CPU架构,但它却实现了L3在X86桌面的普及。而其对手Intel Nehalem架构的出现,则意味着X86桌面全面进入了“L3时代”。K10/Nehalem均有L3,那它们的L3又有些什么区别呢?本文试着讨论这两个架构中L3的互联结构与实现方法,对其优劣评价仅为主观臆测,再加上缺乏相关资料,以及本人才疏学浅,文中难免会有错误的观点,还请见谅。另外,参考分析核心如无说明,均为Deneb和Lynnfield。
先从两者的EVEREST测试截图开始:
Deneb:
Lynnfield:
结果就如大多数人所知的那样,两者相比非常明显,Lynnfield的L3的表现基本是Deneb的两倍。但今天我们的目的明显不是讨论谁强谁弱的问题,而是探求此现象背后的本质。
还是先上图,两者的Diephoto:
Deneb:
Lynnfield:
图中我们可以看到,Deneb的L3离核心比较远,整体独立且排布在DIE的一边;而Lynnfield正好相反,L3和核心靠得比较近,但却对应4个核心分成4块。
根据测试结果和Diephoto的对比,我们几乎可以肯定,AMD K10架构和Intel Nehalem架构中的L3采用了完全不同的互联结构与实现方法,对此我猜测如下:
AMD K10核心与L3之间估计采用的是单总线互联。所谓的SRQ就是该总线的控制器,核心(L1/L2)与L3均挂在该总线之下。这种互联方法比较简单,具有硬件成本小、容易扩展的优点,但也存在总线使用冲突的问题。如果已经有某个节点在使用总线,那此时其他节点都只能等待。所以K10的核心间缓存(L1/L2)数据交换是通过写回内存再读回来来实现的,而不是两个缓存间直接交换。因为单总线中,这两种方法的总线开销是一样的,而且直接交换还多了些一致性判断,这些判断同样要占用总线。但我们不是常看到K10的架构图上有XBar吗?是的,XBar还是存在的,但SRQ只在XBar中占了一个节点,换句话说,MC、HT和SRQ之间是XBar,而SRQ、核心(L1/L2)、L3是挂在单总线上的。
Intel Nehalem核心与L3之间估计采用的是直联+XBar。L3分为多个块,其一一与核心绑定,绑定的核心和L3块之间直联,L3块之间使用XBar。这种互联方法比较复杂,需要优秀的负载均衡算法和完备的缓存一致性协议,但性能表现也非常突出。各核心可以随时访问与自己绑定的L3块,如果数据在其他L3块上,也能通过L3块间的XBar获得。但XBar的复杂度与节点数成指数比,所以当规模达到一定的时候,再扩展就会比较麻烦。Intel的解决方法是改用Ringbus,并已在最近发布的8核Nehalem-EX上实现。
简单来说就是K10的内部还是SMP,而Nehalem的内部已经是NUMA了,所以两者表现也类似当年的K8/Conroe,只是结果对调了一下。但造成两者这样设计的原因又是什么呢?K10的内部互联结构来源于K8,再加上K7/8K10一直以来的非包含缓存设计,要求各级缓存均在同个总线上,分级只隶属、使用和逻辑上的区分,所以单总线几乎是必然选择。而Nehalem的内部互联结构应该是Conroe的改进版,其灵感估计来源于宏观服务器系统的多路直联架构,Intel将其缩小后成为核心内部的互联结构。
欢迎各路大大踊跃讨论
作者:
Readon
时间:
2010-4-10 02:01
不懂的飘过
作者:
xzgjw0
时间:
2010-4-10 02:38
路过帮顶.........
作者:
沙漠之舟
时间:
2010-4-10 08:45
高深了,不过看起来分析的有依据
作者:
ndlld7308
时间:
2010-4-10 09:53
提示:
作者被禁止或删除 内容自动屏蔽
作者:
knightmaster
时间:
2010-4-10 10:21
别胡说了
K10的L3就是交换数据用的地方
作者:
Grkbowb
时间:
2010-4-10 11:37
不懂的顶下
作者:
abee
时间:
2010-4-10 11:43
纯技术术语,纯顶
作者:
sonicxz
时间:
2010-4-10 11:46
管他那么多干嘛,最终用户看的就是效果
P.S图是一张也看不见
作者:
dkmu
时间:
2010-5-7 18:16
图挂了。。。
欢迎光临 POPPUR爱换 (https://we.poppur.com/)
Powered by Discuz! X3.4