资源描述:
《高级计算机体系结构ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ZJU_ComputerArchitecture_multiprocessor_sqs1MultiprocessorsandThread-LevelParallelismPart26.4~6.66.4同步2ZJU_ComputerArchitecture_multiprocessor_sqsZJU_ComputerArchitecture_multiprocessor_sqs3概念•运行在不同处理器上的进程之间需要通信以协调地完成一个任务。进程间的通信可以通过使用共享变量来实现信息交换。但对共享变量的访问要保证互斥访问。即:保证每次只有一个进程访问共享变量。•同步机制的实现–硬件
2、提供同步原语;–用户层软件实现。•在小规模或竞争较少的情况下–硬件的关键功能:提供不可中断的指令;或实现原子地读和更新一个值的指令。–软件机制在硬件基础上建立:如自旋锁。ZJU_ComputerArchitecture_multiprocessor_sqs4•在规模较大或竞争较多的情况下–同步成为性能瓶颈。(延时增加)–需研究更好的硬件机制来支持同步。•介绍顺序:–硬件基本原语→构造基本同步例程→同步操作过程中竞争如何产生→更强的硬件原语ZJU_ComputerArchitecture_multiprocessor_sqs56.4.1基本硬件原语•硬件原语的功能–支持原子地读和修
3、改存储单元;–以某种方式告知是否进行了原子读或写操作(执行反馈)。是构造同步操作和同步库的基本构造模块。•几种典型的硬件原语–原子交换(atomicexchange)–测试和设置(test-and-set)–取值和增值(fetch-and-increment)–LL/SC指令对:链接Load指令/条件Store指令(Loadlinked/storeconditional)ZJU_ComputerArchitecture_multiprocessor_sqs6一、原子交换•exch:原子地交换一寄存器和一个存储单元的值。•实现上锁:DADDUIR2,R0,#1lockit:EXCH
4、R2,0(R1)BNEZR2,lockit•若有多个处理器竞争同一个锁,即试图同时执行交换操作,则由写操作的串行化保证,只有其中的一个处理器能首先执行交换操作。ZJU_ComputerArchitecture_multiprocessor_sqs7•二、TEST-AND-SET–例子:(test0)and(set1)•三、FETCH-AND-INCREMENT–例子:ZJU_ComputerArchitecture_multiprocessor_sqs8四、链接Load指令/条件Store指令•指令对顺序执行;•如果某个被链接Load指令指定的存储单元的内容在条件Store指令对
5、其操作之前改变了,那么条件Store指令就失败。如果处理器在两条指令之间作了一次进程切换,那么条件Store指令也失败;•链接Load指令返回存储单元的初始值;•条件Store指令返回的值表明Store操作是否成功。如果成功,返回1,否则返回0。ZJU_ComputerArchitecture_multiprocessor_sqs9链接Load指令/条件Store指令的优点:•可以用来构建其它同步原语。读写操作是分离的。•例:实现原子交换try:ORR3,R4,R0;传送交换值LLR2,0(R1);链接loadSCR3,0(R1);条件StoreBEQZR3,try;条件Stor
6、e失败,跳转MOVR4,R2;取回的值送R4•例2:实现取值并增值try:LLR2,0(R1);链接LoadDADDUIR3,R2,#1;增值SCR3,0(R1);条件StoreBEQZR3,try;条件Store失败,跳转ZJU_ComputerArchitecture_multiprocessor_sqs10链接Load指令/条件Store的实现:•具体实现:–设置链接寄存器。将LL指令中的访存地址保留在链接寄存器中。–跟踪链接寄存器中的存储器地址,若发生中断或与该地址匹配的Cache块无效后,链接寄存器就被清除。–SC指令只是简单地检查操作地址与链接寄存器中的存储器地址是否
7、匹配,若匹配成功,则成功,否则失败。•使用注意:–一般只有r-r指令能插在指令对之间,否则可能发生死锁;–插入两指令间的指令应尽可能少。ZJU_ComputerArchitecture_multiprocessor_sqs116.4.2利用一致性实现锁同步一、原子交换•自旋锁:DADDUIR2,R0,#1lockit:EXCHR2,0(R1)BNEZR2,lockit•无Cache一致性时,锁变量存放在内存中。•有Cache一致性时,锁变量可存放在本地Cache中。–获得锁的自旋