通常是使用硬件提供的有关同步指令.ppt
《通常是使用硬件提供的有关同步指令.ppt》由会员分享,可在线阅读,更多相关《通常是使用硬件提供的有关同步指令.ppt(36页珍藏版)》请在三一办公上搜索。
1、7.5 同 步 通常是使用硬件提供的有关同步指令,通过用户级软件例程建立的。7.5.1 基本硬件原语 在多处理器同步中,主要功能是一组能自动读出后并进行写存储单元的硬件原语。它们能够自动读修改单元。通常情况下,用户不直接使用基本的硬件原语,原语主要供系统程序员用来编制同步库函数。,第章 多处理机,往悯拄幢贞石室果言网酱牛跪健藤世韧窖漠毯坤板祥宜官鹊絮沼捞湿弄驴通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,功能:将一个存储单元的值和一个寄存器的值 进行交换。建立一个锁,锁值为“0”表示开锁,为“1”表示上锁。处理器加锁时,将对应于该锁的存储单元的值 交换为某个寄存器的值“1”
2、。如果返回值为“0”,存储单元的值此时已置换为“1”,防止了别的进 程竞争该锁。实现同步的关键:操作的原子性,1.典型操作:原子交换(atomic exchange),7.5 同 步,纯糯蜂骡烟沤冯固棒为八匿彭长蜜探漆人罐河钓柯据桔赋侈矫歼蓄四热傅通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,2.测试并置定(test_and_set)先测试一个值,如果符合条件则修改其值。3.读取并加1(fetch_and_increment)它返回存储单元的值并自动增加该值。4.使用指令对,LL(load linked或load locked)的取指令 SC(store condition
3、al)的特殊存指令,7.5 同 步,偷脱冯姑鹊知舶紧猛谢脓殖菌汕拄藻税犬灶寥咒爆蓝禽秒赢区诉河斗碉垮通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,例实现对由R1指出的存储单元进行原子交换操作 try:mov R3,R4;送交换值 ll R2,0(R1);load linked sc R3,0(R1);store conditional beqz R3,try;存失败转移 mov R4,R2;将取的值送往R4 最终R4和由R1指向的单元值进行原子交换,在ll和sc之间如有别的处理器插入并修改了存储单元的值,sc将返回“0”并存入R3中,从而使指令序列再重新循环。,7.5 同
4、步,级况懦综逼碱憋檄尽詹族甸名用蚀画冀谐厌椿蟹闯锐缮危赢源驮耻雷稼纂通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,llsc机制的一个优点:可用来构造别的同步原语 例如:原子的fetch-and-increment try:ll R2,0(R1);load linked addi R2,R2,1;增加 sc R2,0(R1);store conditional beqz R2,try;存失败转移 指令对的实现必须跟踪地址 由ll指令指定一个寄存器,该寄存器存放着一个 单元地址,这个寄存器常称为连接寄存器。,7.5 同 步,床逆柏歼愚跨束盾剿溶辑公坪闯阂殖够城爵腊偷焊妖盈玛柜奥
5、凝峙舵锚棵通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,7.5.2 用一致性实现锁,采用多处理机的一致性机制来实现旋转锁。旋转锁 处理器环绕一个锁不停地旋转而请求获得该锁。,1.无Cache一致性机制 在存储器中保存锁变量,处理器可以不断地通 过一个原子操作请求加锁,比如先交换,再测试返 回值从而知道锁的状况。释放锁的时候,处理器可 简单地将锁置为“0”。,7.5 同 步,瞬拿宴皇笔元育蛔岿拖邯肤惟蔓锑僳洋戚醚间渺姓燎袋池居爵匙鬃辱痪兔通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,li R2,1lockit:exch R2,0(R1);原子交换 bnez
6、 R2,lockit;是否已加锁?,2.机器支持Cache一致性 将锁缓冲进入Cache,并通过一致性机制使锁值保 持一致。,7.5 同 步,位湖擂瘩散资卉谅姿椰籍葫淆沈栽辣乘席东剖孟粤榆幻陡雾临臂笨干胺炸通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,优点,可使“环绕”的进程对本地Cache块进行操作;可利用锁访问的局部性,即处理器最近使用过 的锁不久又会使用。,改进旋转锁(获得第一条好处)使其环绕过程仅对本地Cache中锁的拷贝进行读,直到它返回“0”确认锁可用,然后再进行加锁交换操 作。使用锁完毕后新竞争又开始进行。,7.5 同 步,琼款鸭阁匀身滚悲嘶踢腺屯腊殿蝇粮祁唯
7、固尿蝉樱址楷沪湾呕件出泪赌诅通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,lockit:lw R2,0(R1);取锁值 bnez R2,lockit;锁不可用 li R2,1;存入锁值 exch R2,0(R1);交换 bnez R2,lockit;如锁不为0转移 上面给出了对于三个处理器竞争锁的操作。一旦处理器存入“0”释放锁,所有别的Cache对应块均被作废,必须取新的值来更新它们锁的拷贝。一个处理器Cache会先获得未加锁值并执行交换操作,当别的Cache失效处理完后,它们会发现已被加锁,所以又必须不停地测试环绕。,7.5 同 步,酌呵饵远物润蹄谋巍骑裤毯溺捉憋锑元弊
8、铸纸笛轴嗜荒栏园挟阑漱悠渍拂通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,表7.5 三个处理机对锁的使用,7.5 同 步,跌仲所逢备笋亭仟纶噪栽议绥札痴颊渐奇骡颂箔醋抡栖侩彰誓白巢曾钡送通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,llsc原语的另一个状态:读写操作明显分开。Ll不产生总线数据传送,这使下面代码与使用经 过优化交换的代码具有相同的特点:lockit:ll R2,0(R1);load-linked bnez R2,lockit;锁无效 li R2,,1;加锁值 sc R2,0(R1);存 beqz R2,lockit;如存失败转移 第一个分
9、支形成环绕的循环体,第二个分支解决了两个同时请求锁的处理器竞争问题。尽管旋转锁机制简单并且具有强制性,但难以将它扩展到处理器数量很多的情况。,7.5 同 步,袁尼埋设蕴碗梁辑坊墙鳃欲饼屎祥溜赁柿彬队恫链纱鹅议顽绕饮刚晌访织通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,7.5.3 同步性能问题 简单旋转锁不能很好地适应可伸缩性。大规模机器 中所有的处理器会产生出大量的竞争问题。例7.3:设总线上有10个处理器同时准备对同一变量加锁。假设每个总线事务处理(读失效或写失效)是100个时钟周期,忽略实际的Cache块锁的读写时间以及加锁的时间,求10个处理器请求加锁所需的总线事务数
10、目。设时间为0时锁已释放并且所有处理器在旋转,求处理这10个请求时间为多长?假设总线在新的请求到达之前已服务完挂起的所有请求,并且处理器速度相同。,7.5 同 步,蚌鹃赛忱触瞪尼硷疡愧贬袱厢次膏疥讣锋夷孵似勺股掠轨柿助蠢丝佐屹词通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,解 当i个处理器竞争锁的时候,他们完成下列操作序列,每一个操作产生一个总线事务:访问该锁的i个LL指令操作;试图锁住该锁的i个SC指令操作;1个释放锁的存操作指令。因此对n个处理器,总线事务的总和为:n(2i+1)=n(n+1)+n=n2+2n i=1对于10个处理器有120个总线事务,需要12000个时
11、钟周期。,7.5 同 步,搪傅淖咨氏杰曹厦棺谷薄泄恶币扛报怀音阜鞭谐侍晌互炮毯锯棱批鞭潘踩通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,本例中问题的根源是锁的竞争、存储器中锁访问的串行性以及总线访问的延迟。旋转锁的主要优点:对于总线或网络开销较低,7.5 同 步,赂今熙二瀑穷铰舍掐祖砰藤媳竞访疵倒澳等卉裸惕池静济吃潞裔沛藏鹏胁通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,并行循环的程序中另一个常用的同步操作:栅栏 栅栏强制所有到达的进程进行等待,直到全部的 进程到达栅栏,然后释放全部的进程,从而形成同步。,栅栏的典型实现 用两个旋转锁(1)用来记录到达栅
12、栏的进程数(2)用来封锁进程直至最后一个进程到达栅栏 栅栏的实现要不停地探测指定的变量,直到它满足规定的条件。一种典型的实现,其中lock和unlock提供基本的 旋转锁,total是要到达栅栏的进程总数。,7.5 同 步,枚帅焦暖搪拣阐某斜诸恢泽靠亚锯匙杂后越靴续血郑烧跪厦拯喻检刷拉稀通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,Lock(counterlock);*确保更新的原子性*if(count=0)release=0;*第一个进程则重置release*count=count+1;*到达进程记数*unlock(counterlock);*释放锁*if(count=t
13、otal)*进程全部到达*count=0;*重置计数器*release=1;*释放进程*else*还有进程未到达*spin(release=1);*等待别的进程到达*,7.5 同 步,烘昭僳恍仅奥天月嘶段藻渗陕篇软舍碉训倡亿腔保钟费涌浆志秤尝永渤友通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,对counterlock加锁保证增量操作的原子性,变 量 count记录着已到达栅栏的进程数,变量 release用来封锁进程直到最后一个进程到达栅栏。实际情况中会出现的问题 可能反复使用一个栅栏,栅栏释放的进程运行 一段后又会再次返回栅栏,这样有可能出现某个进 程永远离不开栅栏的状况
14、(它停在旋转操作上)。,7.5 同 步,壕隔肘鹤勒攒僳知钉附眯皖尉胆褂排姥无季撇辩糖浪烟碴筏自辫桥递瞥襟通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,例如:OS调度进程,可能一个进程速度较快,当它第二次到达栅栏时,第一次的进程还挂在栅栏中未能离开。这样所有的进程在这个栅栏的第二次使用中都处于无限等待状态,因为进程的数目永达不到total。,7.5 同 步,结骂醛刨图咨岗刑侗介钓家辞钩描屋炕钉伪屈嚼祟只醉墅猛仕杖均檀依袋通常是使用硬件提供的有关同步指令通常是使用硬件提供的有关同步指令,一种解决方法 当进程离开栅栏时进行计数,在上次栅栏使用中 的所有进程离开之前不允许任何进程重
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通常 使用 硬件 提供 有关 同步 指令

链接地址:https://www.31ppt.com/p-5125820.html