第六章 分布式共享存储器 (20141013)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

簇缓存
干净

6.2 共享存储器
6.2.5 NUMA多处理机
特点
在大型多处理机上实现硬件缓存并不简单。硬件必须维护复杂 的数据结构。
NUMA机的虚拟地址空间对所有CPU都可见。任何CPU在地址a 写入值,接下来别的处理机对a的读操作将读取刚刚写入的值。
6.2 共享存储器
6.2.5 NUMA多处理机
缓存 属主 存储器
CPU 私有存储器
单一主机
6.2 共享存储器
6.2.3 基于环的多处理机
每个机器的Memnet设备上有一个块表,包括每个块在共享地址空 间的入口,以块序号为索引。
有效位:判断块是否在缓存中且已被 更新
互斥位:确定本地拷贝是否唯一
属主位:只有当本机是该块的属主机 器时才置位。
写操作时,数据块只能在一个缓存中。
区别: 基于总线的多处理机是紧耦合的,基于环的多处理机是耦 合的较松一些。

基于环的多处理机没有集中式全局存储器。
6.2 共享存储器
6.2.4 交换式多处理机
基于总线和基于环的多处理机当CPU增加到一定数量时,总线或 环的带宽达到饱和。两种方法解决带宽不足问题: 减少通信流量 增加通信容量
与传统的虚拟存储器系统比较
相同点:当一进程访问一未驻留存储器的页时,激活陷阱,操作系统 获取相应页并将其调入。 不同点:操作系统不是从磁盘而是通过网络从另一个处理机中获取页。
6.1 简介
分布式共享存储器
不足之处 页在网上频繁的调入调出。 改进 不共享整个地址空间,而只共享那些由多个进程引用的变量 和数据结构,或对象。
中断位:用于强制中断
块表
定位位:表明若块存在并有效,它定 位在缓存中何处。
6.2 共享存储器
6.2.3 基于环的多处理机
读操作
当 CPU 要从共享存储器中读一个字时,该存储器地址传送给 Memnet设备, Memnet设备检查表项以确定该块是否存在。
若存在,读请求立即的到满足。
CPU
A
W1 干净
B
W1
C
干净
W1
存储器正确
图6-3 (b)
Write once 协议
A写入值W2,B在总线上监听,一旦发现写操作,将自己的 缓存项置无效。A的拷贝标记为脏数据。
CPU
A
W2 脏
B
W1
C
无效
W1
存储器错误
图6-3 (c)
Write once 协议
A再次写W,A所进行的这些和以后的写操作都在本地执行, 没有任何的总线通信。

未缓存——存储器中有此块的唯一拷贝 干净——存储器已更新,块可能在若干缓存中 脏——存储器错误,块仅在一个缓存中
每个缓存块的状态存于其目录项的状态域中
6.2 共享存储器
6.2.4 交换式多处理机
协议(读操作)
块状态 未缓存 R的缓存 邻近者缓存 属主所在簇的存储器 发送块到R;标记为干净, 仅在R簇的缓存中 使用块 复制块到R的缓存中 从存储器到R拷贝块;标 记表明也在R簇的缓存中 发送块到 R 和属主所在簇 (如果在其他地方缓存 过),通知属主所在簇将 其标记为干净且它也在 R 簇的缓存中 簇缓存
易于理解和使用。缺点:所有写操作必须通过总线。
6.2 共享存储器
6.2.2 基于总线的多处理机
Write once协议
思想:允许正被多个CPU读取的字出现在它们所有的缓存中。 而仅被一个CPU经常写的字将只保存在它的缓存中,为减少总线 流量,不必每次都写回存储器。

该协议管理缓存块,每个块处于以下三种状态之一:
环接口、MMU(存储器管理单元)、缓存和一部分存储器集成在一个称 为Memnet 设备的器件中。
Memnet中没有集中式的全局存储器。共享地址空间中的每个32字节数据 块都有一个属主机器。
属主机器在其属主存储器域中为32字节数据块保留物理存储器。数据块可 被置于除属主机器以外的任何机器的缓存中。 MMU
6.2.2 基于总线的多处理机
通写(write through)缓存一致性协议
事件
读失败 读命中 写失败 写命中
缓存响应本地CPU操作时执行的动作
从存储器中取得数据并存储到缓存中 从本地缓存中取得数据 更新存储器中的数据并存储到缓存中 更新存储器和缓存
缓存响应远程CPU操作时执 行的动作
无动作 无动作 无动作 使缓存项无效
增加总线带宽
改变互联网络的拓扑结构,增加通信容量。 建立层次结构
6.2 共享存储器
6.2.4 交换式多处理机
建立层次结构 仍在一根总线上挂一些CPU,当将整个单元看作一个簇。系统中有多个簇,用
簇间总线相连。
6.2 共享存储器
6.2.4 交换式多处理机
基于网状簇的分层设计
16个簇、每簇有一条总线,4个CPU,16M全局存储器和一些I/O设备 总共地址空间256M,分为16块,每块16M 存储器以16字节的块为单位,因此1簇有1M存储器块。
...
...
地址和数据线连接 CPU和主存 a) 单片计算机 a) b) 理想的共享存储器多处理机
CPU4
b)
6.2 共享存储器
6.2.2 基于总线的多处理机
基于总线的多处理机:当任一CPU要从存储器中读取数据时,它 将数据的地址放在总线上,并在控制总线上加上“读”信号。
存储器读出需要的数据,将其放在总线上,在控制总线上加“准 备好”信号,CPU可读到相应的数据。
CPU
B 无效
W1
A W3
C 无效 W3 脏
W1
存储器错误
图6-3 (e)
Write once 协议
存储器何时更新?

当缓存缺乏空间而必须清除某一字时,如果该字的状态为dirty。 那时,该字从所有的缓存中消失,写回到存储器。
缓存一致性协议具有三个重要的属性


缓存对总线的监听保证了一致性。 协议建立在存储器管理单元中 整个算法在一个存储器周期中完成
干净

使用块ห้องสมุดไป่ตู้
发送块到 R 和属主所在 簇,通知属主所在簇将 其标记为干净,并存储 在R所在簇
6.2 共享存储器
6.2.4 交换式多处理机
协议(写操作)
块状态 未缓存 R的缓存 邻近者缓存 属主所在簇的 存储器
发送块到 R ;标记为脏, 只有在R簇中才缓存 发送信息给属主所载 复制块并使其无效,发送 簇,请求脏状态的唯 信息给属主所在簇,请求 一拥有权如果被允许, 脏状态的唯一拥有权 使用块 使用块 缓存到缓存地传送到 R 中, 将邻近的拷贝置无效 发送块给 R ,将所有的缓 存置无效;将它标记为脏 并存在于R簇的缓存中 发 送块 到 R 和 属主所 在 簇(如果在其他地方缓 存过),通知属主所在 簇将其标记为脏并只存 在于R簇的缓存中
否则,Memnet设备捕获令牌,将请求信包送入环中。请求信包 包含目标地址和32字节的哑域。
信包在环中传递,每个Memnet设备检查自己是否有所需的块, 若有则将块置于哑域,修改信包头使下一机器不再重复此工作。 若块中的互斥位置位,则清除它。
6.2 共享存储器
6.2.3 基于环的多处理机
写操作
6.3 一致性模型
6.3.1 严格一致性
严格一致性模型由下述条件定义: 从存储器地址X处读出的值为最近写入X的值 假定绝对全局时间存在 举例:
设X是存储在B机器上的变量,A机器上的进程在T1时刻读X,即发送信包 到B以读取X。稍后,在T2时刻,B机器上的进程写X。
答:按照严格一致性模型,A应该读取原来的值。
例子(Cm*)
CPU 簇 间 总 线 CPU 访问存储器时,请求到达 CPU 的 MMU , MMU 检查高位 地址以确定需要哪块存储器。 • 若为本地地址, MMU仅在本 地总线发出请求。 • 若为远程存储器, MMU建立 一个包括地址的请求信包,通 过簇间总线发送到目的簇。
M
I/O
本地总 线
第6章 分布式共享存储器
共享存储器简介
一致性模型
基于分页的分布式共享存储器 共享变量的分布式共享存储器 基于对象的分布式共享内存
6.1 简介
分布式共享存储器
设计思想 一组由局域网互联的工作站共享一个分页的虚拟地址空间。设置每页 刚好在一台机器上。对本地页的访问由硬件实现。试图访问其他机器上 的页时,由操作系统处理。 既易于编程,又易于建立!
CPU
M
I/O
CPU
微程序 控制存 储器管 理单元 MMU
M
本 地 存 储 器
I/O
6.2 共享存储器
6.2.5 NUMA多处理机
例子(BBN碟形)
每个CPU和一块存储器直接相连。 右边CPU和存储器对和左边的相 同。 通过 8 个交换器相连。每个交换 器4个入口,4个出口。 • 本地访问的请求直接完成 • 如果访问远程存储器,发送请 求信包,通过交换网络将信包 发送入相应存储器。
如果T2-T1=1ns A机器与B机器距离3米
那么,信号传输的速度应为光速的十倍。
6.3 一致性模型
若包含要写字的块存在于本地并且是系统中的唯一拷贝,字就 在本地写入。
若所需块在本地存在,但不是系统中的唯一拷贝
CPU将在环中发出置无效信包,强制其它机器抛弃此块的拷 贝。


置无效信包返回时,将该块的互斥位置位,字在本地写入。
6.2 共享存储器
6.2.3 基于环的多处理机
写操作 若本地不存在所需块, CPU 发出包含读请求和置无效请求的信 包。
6.2 共享存储器
6.2.5 NUMA多处理机
NUMA机器的三个主要属性
可以访问远程存储器
访问远程存储器比访问本地存储器慢 没有缓冲机制隐藏访问远程存储器的时间 NUMA软件设计的一个重要问题是决定每页放在何处以寻求最好 的性能
6.2 共享存储器
6.2.6 分布式共享系统的比较
CPU CPU CPU 存储器
总线
为防止多个CPU同时访问存储器,需要总线仲裁机制。
6.2 共享存储器
6.2.2 基于总线的多处理机
基于总线的多处理机容易超载。为了降低总线负载,给每个CPU 提供一个监听高速缓存。 缓存一致性协议
CPU 缓存
CPU 缓存
CPU 缓存
存储器
总线
6.2 共享存储器
6.2 共享存储器
6.2.1 芯片存储器
芯片包含CPU和存储器。CPU和存储器通过地址线和数据线直接相连。广泛 用于汽车、电气用具、玩具等。 将芯片扩展,使多个 CPU可以共享同一存储器。不仅复杂,而且非常昂贵和 不实用。 CPU2
芯片包
...
...
CPU
存储器
CPU1
存储 器
...
CPU3
6.2 共享存储器
6.2.3 基于环的多处理机
一个独立的地址空间被分成一个私有区和一个共享区。
私有区被分成段,使得每个机器都有一个段用来存放堆栈和其他 非共享的数据和代码。共享区对所有的机器都是一样的。
共享存储器被分成32字节的块,是机器间传输的单元。
6.2 共享存储器
6.2.3 基于环的多处理机
无效——本缓存块无有效数据 干净——存储器被更新,该块可能在别的缓存中 脏 ——存储器错误,该数据块不在其他缓存中
Write once 协议
初始状态,地址W,值为W1在主存中,同时也在B的缓存中。
CPU A B
W1
C
W1
存储器正确
干净
图6-3 (a)
Write once 协议
A读取字W获取W1,B不响应读操作,只是内存响应。
CPU
A
W3 脏
B
W1
C
无效
W1
存储器错误
图6-3 (d)
Write once 协议
C读写W,A通过在总线上监听而发现请求,则发信号禁止 存储器响应。然后A提供C所需要的字,并将自己的缓存项 置无效。 C 发现该字来自其他的缓存而不是存储器,并且其状态为 Dirty,则相应的标示为dirty。C 现在有唯一的有效的拷贝。
6.2 共享存储器
6.2.4 交换式多处理机
目录
记录哪些簇拥有哪些块的拷贝。因为每簇有1M存储块,目录中 有1M个项。每一簇的每个表项保留一个一位的位图,以判定簇是 否将该块放入缓冲区。
簇0是否拥有存 储器中的块 3的拷贝
6.2 共享存储器
6.2.4 交换式多处理机
缓存
每个缓存块有以下三个状态之一:
第一个有此数据块的机器将该块考入信包,同时抛弃自己的
拷贝。
其余机器仅从自己的缓存中抛弃该数据块。当信包返回到发
送者时,本地存储该数据块并执行写操作。
6.2 共享存储器
6.2.3 基于环的多处理机
Memnet和基于总线的多处理机比较 相似之处: 读操作返回的都是最近写入的值。读操作时,数据块可能在 一个缓存中,也可能在多个缓存中。
相关文档
最新文档