深入探讨内存一致性、缓存协议与多处理器系统
1. 分布式互连与内存模型的需求
在计算机系统中,分布式互连的点到点消息带宽通常比总线更高,因为点到点消息可以通过不同的非冲突路径传输。不过,广播和广播的带宽并未改变,因为所有节点都必须被通知到。而且,分布式互连的点到点链路的时钟频率可以比总线快得多。
然而,分布式网络也存在一些问题。在分布式网络中,两个节点之间可能存在多条路径,一些自适应网络还会根据动态条件(如网络拥塞)改变消息的路由。这就导致两个节点之间的延迟并不总是可预测的,并且这类网络无法提供系统范围内所有传输请求和响应的顺序,这使得在其上实现内存模型比在总线上更加困难。有时,这些网络甚至无法保证同一对节点之间数据包的发送和接收顺序一致。
现代微架构、缓存层次结构和片上/系统互连会使不同核心和处理器发出的内存访问的延迟和顺序变得随机。这种混乱不能暴露给程序员,主要有两个原因:一是正确的程序开发、编译和移植会变得极其复杂;二是并发程序的向后兼容性会受到影响。因此,计算机架构师需要为程序员提供一个合理的内存模型,这是硬件效率和机器可编程性之间妥协的结果。内存模型作为ISA规范的一部分,将程序员与硬件的复杂性隔离开来,并保证了并行软件的向后兼容性。
2. 单处理器和多处理器系统中的内存一致性问题
2.1 单处理器系统
在具有积极的乱序内存访问执行和复杂深层内存层次结构(包括无锁定缓存和各种写策略)的单处理器系统中,内存一致性已经是一个严重的问题。不过,由于单线程上下文有明确的线程顺序,问题的表述相对简单。经典的单处理器(单线程)系统中内存一致性的定义是:“加载操作必须始终返回线程顺序中具有相同地址的最新存储的值”。这
超级会员免费看
订阅专栏 解锁全文
5万+

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



