缓存、内存层次结构与IBM Blue Gene超级计算机架构解析
1. 缓存与内存层次结构
在多处理器系统中,缓存和内存层次结构的管理至关重要。当请求的内存块的脏位为1时,会从存在位为1的处理器j请求该内存块。到达后,内存块会转发给处理器i,i的存在位设为1,j的存在位设为0,脏位保持为1,j的缓存控制器将该内存块状态设为I。
当处理器i的缓存中状态为M的内存块要被替换时,必须将其写回主存,因为这是该内存块的唯一有效副本。具体操作是,i的缓存控制器将内存块发送到主节点的目录控制器,目录控制器将其写回本地内存,并将该块的脏位和处理器i的存在位设为0。
状态为S的缓存块在本地缓存中被替换时,可不向负责的目录控制器发送通知。不过,发送通知可避免在写缺失时,目录控制器向替换处理器发送不必要的失效消息。
实际使用的目录协议通常更复杂,会包含额外的优化以尽可能降低开销。它不仅用于分布式内存机器,也可用于共享内存机器,如Sun T1和T2处理器。
2. 内存一致性
缓存一致性确保并行系统中的每个处理器通过其本地缓存对内存有一致的视图。但它未规定写访问对其他处理器可见的顺序,这由内存一致性模型解决。
内存一致性模型为程序员提供了内存系统行为的正式规范,对共享地址空间中读操作返回的值设置了限制。直观上,读操作应返回最后写入的值。在单处理器中,程序顺序唯一确定该值;在多处理器中,不同处理器并发执行程序,内存访问顺序可能因处理器的相对进度而异。
例如,有三个处理器P1、P2、P3执行包含共享变量x1、x2、x3的并行程序,初始值都为0。程序如下:
| 处理器 | 程序 |
| -
超级会员免费看
订阅专栏 解锁全文
1472

被折叠的 条评论
为什么被折叠?



