- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
补充章节:多处理机和多计算机
;对称式共享存储器体系结构;对称式共享存储器体系结构;(2) 存储器的一致性(非正式定义)
如果对某个数据项的任何读操作均可得到其最新写入的值,则认为这个存储系统是一致的。 ;② 一个处理器对X进行写之后,另一处理器对X进行读,读和写之间无其它写,则读X的返回值应为写进的值。
③ 对同一单元的写是顺序化的,即任意两个处理器对同一单元的两次写,从所有处理器看来顺序都应是相同的。
假设直到所有的处理器均看到了写的结果,一次写操作才算完成;允许处理器无序读,但必须以程序规定的顺序进行写。
;
在一致的多处理机中,Cache提供两种功能:;(1) Cache一致性协议
对多个处理器维护一致性的协议。
(2) 关键:跟踪记录共享数据块的状态
(3) 共享数据状态跟踪记录技术 ; Cache通常连在共享存储器的总线上,各个Cache控制器通过监听总线来判断它们是否有总线上请求的数据块。;处理器行为;(2) 写更新协议
当一个处理器写某数据项时,通过广播使其它。 Cache中所有对应的该数据项拷贝进行更新。;(3) 写更新和写作废协议性能上的差别主要来自:;监听协议及其实现; 增加Cache中块的标志位
状态:
无效(invalid)—— 无副本
共享(shared)—— 至少一个副本,clean
独占(exclusive)—— 唯一副本,dirty
Cache块的拥有者:拥有唯一的Cache块副的处理器。
因为每次总线任务均要检查Cache的地址位,这
可能与CPU对Cache的访问冲突。可通过下列两种
技术之一降低冲突:
复制标志位
采用多级包容Cache (许多系统采用)
;存储器分布于各结点中,所有的结点通过网络互
连。访问可以是本地的,也可是远程的。
可以不支持Cache一致性:规定共享数据不进入Cache,仅私有数据才能保存在Cache中。
优点: 所需的硬件支持很少(因为远程访问存取量仅是一个字(或双字)而不是一个Cache块)
;缺点:
(1) 实现透明的软件Cache一致性的编译机制能力
有限。
(2) 没有Cache一致性,机器就不能利用取出同一
块中的多个字的开销接近于取一个字的开销
这个优点,这是因为共享数据是以Cache块为
单位进行管理的。当每次访问要从远程存储
器取一个字时,不能有效利用共享数据的空
间局部性。
(3) 诸如预取等延迟隐藏技术对于多个字的存取
更为有效,比如针对一个Cache块的预取。 ;
解决Cache一致性问题的关键:
寻找替代监听协议的一致性协议。 ;
(1) 目录协议必须实现两种基本操作; 共享
在一个或多个处理器上具有这个块的副本,
且主存中的值是最新值(所有Cache均相同)。
未缓冲
所有处理器的Cache都没有该块的拷贝。
专有
仅有一个处理器上有该块的副本,且已对该块
进行了写操作,而主存的拷贝仍是旧的。这个处理器
称为该块的拥有者。 ;(3) 由于写作废操作的需要,还必须记录哪些处理器
有该块的拷贝
方法:对每个主存块设置一个位向量
当该块被共享时,每个位指出与之对应的处理器是否有该块的拷贝。
当该块为专有时,可根据位向量来寻找其拥有者。
;同 步
通常是使用硬件提供的有关同步指令,通过用户级软件例程建立的。
基本硬件原语
在多处理器同步中,主要功能是一组能自动读出后并进行写存储单元的硬件原语。它们能够自动读/修改单元。通常情况下,用户不直接使用基本的硬件原语,原语主要供系统程序员用来编制同步库函数。
; 功能:将一个存储单元的值和一个寄存器的值
进行交换。建立一个锁,锁值为“0”表示开锁, 为“1”表示上锁。
处理器加锁时,将对应于该锁的存储单元的值 交换为某个寄存器的值。
实现同步的关键: 操作的原子性
;2. 测试并置定(test_and_set)
先测试一个值,如果符合条件则修改其值。
3. 读取并加1(fetch_and_increment)
它返回存储单元的值并自动增加该值。
4. 使用指令对
;例 实现对由R1指出的存储单元进行原子交换操作
try:mov R3,R4 ;送交换值
ll R2,0(R1) ;load linked
sc R3,0(R1) ;
文档评论(0)