第6章并行计算机的同步与通信.ppt
《第6章并行计算机的同步与通信.ppt》由会员分享,可在线阅读,更多相关《第6章并行计算机的同步与通信.ppt(120页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6章章 并行计算机的同步与通并行计算机的同步与通信信计算机系统结构胡越明计算机系Agendan6.1并行计算机系统的通信n6.2Cache与存储器数据一致性n6.3并行计算机的同步n6.4并行计算机程序设计6.1 并行计算机系统的通信并行计算机系统的通信n并行计算机对程序的要求q代码的可重入q并行线程之间的竞态现象n线程之间对共享变量的不同的读-写和写-写访问顺序导致不同的程序执行结果n源自线程间的数据相关性n并行计算机的通信方式q共享存储器q互连网络的消息传递共享存储器通信n共享变量共享变量q最简单的通信方式q没有同步功能n信号信号(signal)q一个二进制变量q可以表示条件、状态、锁
2、和其它同步信息q不能传递数据内容n信箱信箱q固定格式的通信结构q通常包含一个标志位n在发送方和接收方之间起到同步的作用q寻址和管理比较简单,不够灵活n消息消息q具有灵活格式的通信单位共享存储器通信n线程同步q给线程执行顺序施加约束的机制q控制线程执行的相对顺序q建立在互斥机制的基础上n互斥机制q使得一次只有一个线程对共享变量进行访问q以保证每个线程对于共享变量访问的完整性n常见的互斥机制q锁q信号量q临界区共享存储器通信n锁q一种互斥变量q一次只能被一个线程获得n信号量q通过PV操作在线程间传递同步信息n原子操作qP操作将一个变量减1n减后的变量小于0时线程被阻塞qV操作将一个变量加1n加后的
3、变量大于或等于0时释放一个线程共享存储器通信n临界区q短小的、不能被中断的程序段q进入的线程数量是有限制的q通常只允许一个线程进入临界区q可以采用锁机制来实现锁n两个基本的原子操作qAcquiren原子地等待锁的状态变成打开的状态n将打开的锁状态变成关闭的状态q这时该线程获得了锁qReleasen原子地将锁的状态从关闭状态变成打开的状态q这时线程释放了锁锁的类型n互斥量q用PV操作上锁和解锁q有阻塞q可以加上时间属性n递归锁q可以递归地获得的锁q用于递归程序n读写锁q多读单写锁n限制写操作只能由一个线程执行q用于对共享变量的读写操作n自旋锁q非阻塞的锁q用于多处理机系统和多核系统阻塞型锁机制的
4、问题n优先级的颠倒优先级的颠倒priorityinversionq当一个低优先级的线程占用了一个锁之后,需要同一个锁的高优先级线程就只能等待。n护航护航Convoyingq当一个线程拥有一个锁而被切换出去时其他的线程如果需要同一个锁的话都不能运行下去q其他线程都围着拥有锁的线程团团转n死锁死锁Deadlockq锁的拥有和依赖关系形成一个环死锁及其解决n死锁的原因q对资源(锁)的访问是独占的q线程在已经持有一个资源时继续请求其他资源q所有线程都不放弃已经持有的资源q线程对资源的请求形成一个环n解决方法q复制需要独占访问的资源q按照一定的顺序获取资源n有序嵌套q无法获取其他资源时放弃已持有的资源q
5、调用构件时避免使用锁信号n硬件信号q一种黏滞性的逻辑电平n一旦被设置就一直保持不变n直到被清除q如访存完成、cache失效、时钟信号q可以表示为一个寄存器变量n对于信号变量的读操作清除这个信号n软件信号q表示为共享变量q如进程中止信号互连网络的消息传递通信方式 n消息q结点间通信的基本逻辑单位q消息头n目标结点号、源结点号、消息类型和消息长度等q消息体n通信数据互连网络的消息传递通信方式n数据包数据包q数据传输的物理单位n寻径信息n序号n数据内容n校验位n协议号n时间戳存储转发store-and-forward电路交换circuitswitching虚拟切换virtualcut-through
6、虫孔寻径wormhole互连网络的消息传递通信方式存储转发store-and-forwardn问题:延迟大,缓存多互连网络的消息传递通信方式电路交换circuitswitching问题:冲突多,利用率低互连网络的消息传递通信方式虚拟切换virtualcut-through问题:缓存多flits互连网络的消息传递通信方式虫孔寻径wormhole问题:死锁和活锁互连网络的消息传递通信方式n虫孔寻径与存储转发的比较互连网络的消息传递通信方式衡量指标n通信带宽通信带宽q单位时间能够传输的数据量q取决于处理器的通信处理吞吐率、存储器的吞吐率和互连网络的传输带宽n通信延迟通信延迟q发送的时间开销q信号传输
7、时间q传输持续时间q接收方的时间开销n通信延迟隐藏能力通信延迟隐藏能力q通信时间与计算时间或者其他通信时间的重叠程度例例6-2 n1个计算任务在单个核的计算机上运行的启动时间为1秒,运算时间为10秒,数据结果汇总的时间为1秒。如果将该计算任务放在多核处理器的计算机上运行,将运算部分分解成多个线程并行执行。n(1)假如任务的启动和数据汇总操作不能并行执行,运算部分可以进行任意的任务分解,任务之间的通信量可以忽略,也不考虑任务分解后存储系统对性能的影响。问在处理器核的数量分别为2、4、8、16时的任务执行时间和加速比。n(2)上述情况下,假如每两个处理器核之间的通信时间为0.1秒,每对处理器核的通
8、信串行进行,问在核的数量分别为2、4、8、16时的任务执行时间和加速比。解:(1)任务在单个核的计算机上运行时间为12秒;n在双核计算机上的运行时间为1+10/2+1=7秒,加速比为12/7=1.71;n在4核计算机上的运行时间为1+10/4+1=4.5秒,加速比为12/4.5=2.67;n在8核计算机上的运行时间为1+10/8+1=3.25秒,加速比为12/3.25=3.69;n在16核计算机上的运行时间为1+10/16+1=2.63秒,加速比为12/2.63=4.56。解:(2)n任务在单个核的计算机上没有通信时间,运行时间为12秒;n在双核计算机上的通信时间为10.1,运行时间为1+10
9、/2+1+0.1=7.1秒,加速比为12/7.1=1.69;n在4核计算机上的通信时间为60.1=0.6,运行时间为1+10/4+1+0.6=5.1秒,加速比为12/5.1=2.35;n在8核计算机上的通信时间为280.1=2.8,运行时间为1+10/8+1+2.8=6.05秒,加速比为12/6.05=1.98;n在16核计算机上的通信时间为1200.1=12,运行时间为1+10/16+1+12=14.63秒,加速比为12/14.63=0.82,即比单核计算机的计算时间更长。解加速比单核2核4核8核16核无通信开销11.712.673.694.56有通信开销11.692.351.980.82习
10、题n66.2 Cache与存储器数据一致性与存储器数据一致性 n共享存储器多处理机系统的问题q访存冲突与数据一致性q数据多个副本之间的相同性数据一致性的实现n软件方法q编译分析q避免cache共享数据n总线监测q各cache设置监测部件nMESI协议n目录表法q全映射q有限目录q链式目录nSCI总线监测n所有cache不断监测总线上的每一个地址q总线使得写操作变成串行的qCache失效时需要确定数据块的位置nwriteinvalidateprotocolqinvalidatesothercopiesonawrite.nwriteupdateorwritebroadcastprotocolqup
11、dateallthecachedcopiesofadataitemwhenitiswrittencpu1cpu2cache1cache2Mainmemory总线监测n写无效方式q多次写操作时只需一次invalidateq对于整个cache数据块进行n写更新方式q对于数据块中的个别字进行q读操作的命中率高q所有写操作通过总线写入所以相关的其他cache中n写操作的开销较大总线监测n每个处理器的cache中设置一个监测部件q监测总线上的写操作q根据监测的情况改变本地cache块的状态n无效、修改、独占、共享n监测条件q主存中有一个单元被其他处理器所修改q而这个单元在本地cache中也有一个副本n对
12、于写更新方法q拥有数据最新版本的cache需向其他cache提供数据块内容q阻止其他处理器从共享存储器的读操作MESI协议例例6-3 n设单总线连接的两个CPU中采用MESI协议进行一致性操作,初始时某cache块都在无效状态,然后两个CPU对该存储块分别进行如下操作:nCPUA读,CPUB读,CPUA写,CPUB读,CPUB写n试写出每次访问后两个块的状态变化情况。事件状态A状态B说明初始无效无效(I)数据未装入CPU A读独占无效(I)读操作cache失效,装入CPU B读共享共享(S)读操作cache失效,装入后共享CPU A写修改无效(I)写操作命中CPU B读共享共享(S)读操作失效
13、,装入CPU B写无效修改(M)写操作命中例例6-4 n在一个共享L2cache的双核处理器芯片中,两个L1cache通过片内总线与L2cache连接,并采用MESI协议保持一致性。假设L1cache各有4个块,采用全相联地址映像和LRU替换策略,每个块的初始状态都是无效的。在以下读访问块地址序列下,试画出两个L1cache中块的分配情况,并标出每个块的状态。nA核:1,0,6,7,8,0,1nB核:0,2,7,8,9,2,0解目录表法n全映射q每个快表目录项包含N个指示位段nN为系统中处理器的个数q指示位段构成一个位向量n0表示相应的处理器cache没有该块n1表示有该块n有限目录q每个快表
14、目录项包含固定数量的指示位段q指示位段的位数与处理器数量无关n链式目录例例6-5 n设4个CPU的并行计算机中采用全映射的目录表法进行一致性操作,初始时某cache块都在无效状态,然后4个CPU对该存储块分别进行如下操作:nCPU0读,CPU1读,CPU2读,CPU1替换,CPU0写n试写出每次访问后该块的有效指示位段的变化情况,假设一致性操作采用写无效策略。事件指示状态位段初始0000CPU 0读0001CPU 1读0011CPU 2读0111CPU 1替换0101CPU 0写0001例例6-6 n在一个由2个CPU构成的并行计算机中采用全映射的目录表法进行一致性操作。假设各CPU的cach
15、e都只有4个块,采用全相联地址映像和LRU替换策略,每个块的初始状态都是无效的。在以下读访问块地址序列下,试画出两个L1cache中块的分配情况,并标出每个块的指示状态位段。nCPUA:1,0,6,7,8,0,1nCPUB:0,2,7,8,9,2,0解目录表法n链式目录q将目录分布到各个cacheq每个cache的块表中只需存放一个cache指针q单链或双链qSCI数据一致性对cache性能的影响n影响cache性能的因素q单个处理器cache失效的数据传输q数据通信引起的传输n导致invalidations和后继cache失效n一致性失效处理机数量Cache容量块大小数据一致性对cache性
16、能的影响一致性失效n真共享失效真共享失效true sharing misses q由cache一致性操作的通信引起q对共享数据的第一个写操作引起invalidationn伪共享失效伪共享失效false sharing misses q由每个cache块只有一个有效位引起q一个块中其他数据的写操作引起cache块读操作的失效qCache块是共享的,但是数据字并没有共享数据一致性对cache性能的影响n一致性失效的例子q假定数据字x1和x2在同一个数据块中n数据块在P1和P2之间共享q假定以下事件序列存储器数据的一致性时间一致性(consistency)q一个写操作写入共享存储器中的数值什么时候能
17、够被读到n串行一致性n弱化一致性n处理机一致性n松散一致性存储器数据的一致性串行一致性串行一致性sequentialconsistencyn处理机P对于存储单元X的写操作之后进行的读操作,其间如果没有其它处理机对X进行写访问,则总是返回由P写入的数值。n在一个处理机P1对于单元X进行写操作之后,另一处理机P2对于单元X的读操作只要两者足够分离并且没有其它对于X的写操作发生,就能够返回P1写入的数值。n对于同一单元的写操作是顺序进行的,即两个处理机对于相同单元进行的写操作的顺序从任何处理机看都相同。如果数值1和2依次写入一个位置,处理机不可能先读得2,再读得1。存储器数据的一致性n弱化一致性弱化
18、一致性weakconsistencyq程序通过同步操作强调一致性,使得在这些同步点上数据保持一致,而不要求数据随时都是一致的。n处理机一致性处理机一致性processorconsistencyq每个处理机发出的写操作被其它处理机看到的都保持原顺序,但两个不同处理机的写操作顺序可被其他处理机以不同的顺序看到。n松散一致性松散一致性releaseconsistencyq采用acquire-release同步操作使得数据保持一致,从而减少对硬件一致性处理的要求。SCInscalablecoherenceinterfaceqIEEE1596-1992n支持链式目录表法q双向链表n采用双向链路n采用虚拟
19、切换传输方式n支持大规模并行系统q不要求消息按顺序提交q使用64位固定长度地址的分布式存储器的寻址方案n高16位用于寻找结点n低48位地址指定结点内的存储器地址n采用16位差分ECL信号链路q信号时钟250MHzq链路的数据传输带宽为1GB/s习题n11n12n13n146.3 并行计算机的同步并行计算机的同步 n同步机制q并行系统中保持各并行程序正确运行的控制机制q建立在通信机制的基础上q需要采用的硬件提供的机制来实现n硬件原语硬件原语n原子交换atomicexchangeq实现锁n测试并设置test-and-setq实现锁n读取并加1fetch-and-incrementq实现屏障n读取并
20、更新test-and-updateq实现PV操作原子交换原子交换n将一个寄存器的数值与一个存储器中的数值进行交换n难以在并行机中实现n要求存储器读写操作在一条不可中断的指令中完成n硬件不能在读写操作之间响应中断AB原子交换原子交换n解决方案q用两条指令实现n链接装载loadlinkedn条件存储storeconditionalq返回一个数值q表示其存储操作是否成功n两条指令按顺序执行q如果链接装载指令指定的存储单元在对应的条件存储指令执行之间被改变,则存储指令执行时失败。q如果处理机在这两条指令之间进行了上下文交换,则该条件存储指令也将失败。原子交换原子交换原子交换的实现exchR4,0(R1
21、)try:mov R3,R4;move exchange value from R4 to R3ll R2,0(R1);load linkedsc R3,0(R1);store conditionalbeqz R3,try;branch store failesmov R4,R2;put load value in R4宏指令macroinstructionR3BR4R2读取并加1try:ll R2,0(R1);load linkedaddi R2,R2,#1;incrementsc R2,0(R1);store conditionalbeqz R2,try;branch store fail
22、sR2BR2+1派生原语转锁spinlock处理机用循环方法试图得到的锁n没有没有cache一致性机制时一致性机制时li R2,#1;load immediatelockit:exch R2,0(R1);atomic exchangebnez R2,lockit;already locked?n有有cache一致性一致性机制时机制时lockit:lw R2,0(R1);load of lockbnez R2,lockit;not available-spinli R2,#1;load locked valueexch R2,0(R1);swapbnez R2,lockit;branch if
23、lock wasnt 0派生原语采用链接装载/条件存储实现转锁lockit:ll R2,0(R1);load linkedbnez R2,lockit;not available-spinli R2,#1;locked valuesc R2,0(R1);storebeqz R2,lockit;branch if store failes1BR2派生原语n屏障同步barrierq强制所有的线程等待n直到所有的线程都到达屏障时释放所有的线程n用一个计数器对到达的线程计数(Gather阶段)n用一个信号释放所有的线程(release 阶段)q用两个自旋锁实现n一个用于保护计数器n一个用于锁住线程re
24、lease派生原语屏障同步的实现lock(counterlock);/*ensure update atomic */if(count=0)release=0;/*first arrival reset release*/count=count+1;/*count arrivals */unlock(counterlock);/*release lock*/if(count=total)/*all arrived */count=0;/*reset counter*/release=1;/*release processes*/else/*more to come*/spin(release=
25、1);/*wait for arrivals*/派生原语n问题q屏障可能循环使用q从屏障离开的线程可能再次进入屏障q一个线程可能在另一个线程离开屏障之前又进入屏障n代码的bugrelease派生原语n解决方案q对离开的线程计数n不允许线程在其他线程都离开上一个屏障之前又进入屏障q从而又初始化屏障q传感反相屏障sense-reversingn使用线程局部变量q初始化为1q交替地等待1和0release派生原语n屏障同步的实现q传感反相屏障local_sense=!local_sense;/*togglelocal_sense*/lock(counterlock);/*ensureupdateat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 并行 计算机 同步 通信
限制150内