原创
Cache Coherence on AMD HyperTransport
2008-7-15 13:29
2049
2
2
分类:
汽车电子
http://ivanwangcn.spaces.live.com/blog/cns!F291BBD27380D1CA!255.entry
1月25日
( 很多东西是我的推测,请带着的怀疑的眼光看这篇文章 )
这两天研究了一下AMD在hypertransport上实现cache coherence的方法,总结如下:
(1)
Memory 1 = Processor 1 -------- Processor 2 = Memory 2
| |
| |
| |
| |
Memory 3 = Processor 3 -------- Processor 4 = Memory 4
AMD 的hypertransport是一种基于package-switch的interconnection,不同于传统的bus,他是peer-2- peer的。每个socket有自己的local memory,如果要访问remote memory,要通过hypertransport。这种系统就叫NUMA,每个processor和属于它的memory叫做一个node。不过, AMD实现的这个NUMA,local memory和remote memory latency差距不大,和SMP很像。下文中HyperTransport简称为HT,cache coherence简称为cc。
(2) 一般在bus的系统上,cc是通过broadcast/snooping完成的;在interconnection的NUMA系统上,是通过 directory来实现的。但是,AMD的ccHT实现介于两者之间,它是interconnection/NUMA,但是没有使用 directory,而是使用broadcast来实现cc。这是因为AMD主要针对2,4,8个node的低端市场(实际上是需求最大的市场), scalability不是他们的目标,用broadcast可以简化实现。
(3)多个processor对同一个memory block(cache line)的操作需要serialization(比如两个几乎同时发生的write的操作,要保证所有的node上看到相同的更新顺序)。在bus上,所有的操作都会被bus自动的serialize。但是peer-2-peer上message的传递是没有这种全局同步的。如果想达到这种 serilization,就需要依赖一个共享资源。在AMD的ccHT中,所以的transaction都是先发送到相应memory block(cache line)的home node,然后由这个home node发出广播message,从而做到了对同一个memory block (cache line)操作的serilization。
(4)ccHT使用的不是经典的MESI协议,而是MOESI的协议,多了一个owner的状态。对于某个处于modified状态的cache line A,如果有其他的node发生了对它的数据的read miss,A可以把数据发送给发生read miss的node(假设写到cache line B上)。B的状态被设为shared,这个A的状态则被修改为owner。如果A自己发生了write hit,会通过home node来broadcast invalidate的message,这是owner状态和modified状态不同的地方:如果是modified状态,自己的write hit不产生任何message。传统MESI,对于处于modified状态的cache line,如果被其他processor读取,必须把它写回memory,并把自己改到shared状态。这个写回memory的操作有开销,而且即使这个modified cache line可以通过bus把值直接传给需要它的processor,也是很慢的,可能比从内存读值更慢。ccHT的MOESI则解决了这个问题。
(5) 如果有一个node(requesting node)发生了cache read miss,他会通过这个cache line的物理地址找到它的home node,然后向home node发送一个request。当home node收到这个request后,会将一个read request广播给系统里所有的node,包括他自己,然后home node自己会发出memory access的命令。所有的node在收到home node的broadcast之后,会给requesting node发送response:如果某个node有这个cache line的copy,response就包含该cache line的结果(如果该cache line的状态是exclusive则变为shared,modified则变为owner,如果是shared或是owner则不变),如果没有相应的 copy, response就标明没有。requesting node会收集好所有的response,如果其他的node传来了cache line的值,则写入cache(状态为shared),abort home node的memory access的请求;否则就等待memory access的结果(写入cache后,cache line的状态是exclusive)。最后requesting node向home node发送一个message,表明本次transaction结束。
(6) 如果有一个node(requesting node)发生了cache write miss,他会通过这个cache line的物理地址找到它的home node,然后向home node发送一个request。当home node收到这个request后,会将一个read/invalidate request广播给系统里所有的node,包括他自己,然后home node自己会发出memory access的命令。所有的node在收到home node的broadcast之后,会给requesting node发送response:如果某个node有这个cache line的copy,response就包含该cache line的结果并将其invalidate掉。如果没有相应的copy,response就标明没有。requesting node会收集好所有的response,如果其他的node传来了cache line的值,则和需要write的值一起写入cache(状态为modified),abort home node的memory access的请求;否则就等待memory access的结果。最后requesting node向homenode发送一个message,表明本次transaction结束。
(7) 如果有一个node发生了cache read hit,那么什么都不做。
(8) 如果有一个node发生了cache write hit,如果cache line本身是modified/exclusive,那么什么都不做,直接修改cache,如果cache本身是exclusive的,则改为 modified。如果cache line是shared或是owner,则与(6)做相同的处理。
(9)每个node在收到home node的broadcast之后,会通过crossbar发送给自己所有的core,然后把所有core的结果拼成一个response返回给requesting node.
AMD速龙? MP处理器的主要架构特性包括:
用于实现更加快捷的多处理的 Smart MP技术:
- 两条点对点的高速系统总线
- 创新的总线侦听功能
- 经过优化的MOESI缓存一致性协议
有助于提高性能的QuantiSpeed? 架构
- 每次可以发出九个指令,超管线、超标量微架构为高性能专门设计
- 多个并行的x86指令编译码器
- 3个乱序的超标量全管线浮点运算单元,可以执行x87(浮点)、MMX? 和3DNow!? 指令
- 3个乱序的超标量全管线整数运算单元
- 3个乱序的超标量全管线地址计算单元
- 72个入口指令控制单元
- 先进的硬件数据预取功能
- 专用及预测式翻译后备缓冲器
- 高级动态分支预测
专业3DNow!? 技术可以提供领先的3D运算能力
- 21个独创的3DNow!? 指令可以支持超标量单指令多数据流(SIMD)
- 19个附加的指令可以增强针对语音或者视频编码的整数运算能力与针对互联网插件和其他流应用的数据传输能力
- 5个DSP指令可以增强软调制解调器、软ADSL、杜比数字环绕立体声和MP3应用
- 添加了单指令多数据流(SIMD)整数和浮点运算功能的52个SSE指令可以提供与英特尔的SSE技术的出色兼容性
- 兼容Windows? MP、Windows 2000、Windows ME和 Windows 98 操作系统
266 MHz的AMD 速龙 MP 处理器系统总线可以为需要传输大量数据的应用提供充足的系统带宽
- 源同步时钟(时钟信号发送)技术
- 可以对数据中心的完整性进行8位ECC校验
- 数据传输速率最高可达2.1GB/s
- 多处理支持:点对点拓扑,SMP系统中的处理器的个数由芯片组决定
- 每个处理器支持24个待处理交易
AMD速龙MP处理器内建高性能缓存,其中包括128K L1缓存(包括64K指令缓存和64K数据缓存)和512K集成式片载L2缓存,即总共640K全速的片载缓存。
Socket A基础架构设计建立在高性能平台的基础上,可以支持一整套经过优化的基础架构解决方案(芯片组、主板、BIOS):
- 可以采用针栅阵列(PGA)封装,安装在一个插槽式基础架构中
- 电气接口兼容266 MHz AMD 速龙 MP系统总线,基于Alpha EV6? 总线协议
核心面积 :在101mm2 的面积上分布着大约5430万个晶体管。使用AMD最先进的0.13微米铜处理技术,在AMD位于德国德累斯顿的Fab30晶圆组装厂制造。
文章评论(0条评论)
登录后参与讨论