多核体系结构与并行编程模型计算机科学导论第八讲.ppt
《多核体系结构与并行编程模型计算机科学导论第八讲.ppt》由会员分享,可在线阅读,更多相关《多核体系结构与并行编程模型计算机科学导论第八讲.ppt(42页珍藏版)》请在三一办公上搜索。
1、多核体系结构与并行编程模型计算机科学导论第八讲,计算机科学技术学院陈意云0551-,簇圆追引刁蘑咸辛家疚轧阮伪兆雾帖闪菇篱汰益哦走通盏乎询撰知理技咐多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,课 程 内 容,课程内容围绕学科理论体系中的模型理论,程序理论和计算理论1.模型理论关心的问题 给定模型M,哪些问题可以由模型M解决;如何比较模型的表达能力2.程序理论关心的问题给定模型M,如何用模型M解决问题包括程序设计范型、程序设计语言、程序设计、形式语义、类型论、程序验证、程序分析等3.计算理论关心的问题给定模型M和一类问题,解决该类问题需多少资源,
2、对渴寡赵卸砂履学榴收祈滴精浇决姓懦彩冀亚恒弛念守郝刻赊温栗铂份肤多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,讲 座 提 纲,基本知识多核体系结构、并行编程模型内存一致性模型严格一致性模型、顺序一致性模型、内存一致性模型的重要性共享内存并行编程模型同步、锁、临界区、条件变量、死锁、数据竞争消息传递并行编程模型消息传递、同步与异步,困晒寂同案获桃衷骆炳怕阵冷鼻逛杠拇匪放霍裙僚诀甚找仕瘸睛佃奄纠蛹多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,对称多处理器对称多处理器的体系结构,基 本 知 识,必须在处理
3、器的缓存中找到它操作的大部分数据,以保证性能,通过共享内存来进行通信,拜叫窖睛庐亢杂眯抄裸遍熬旬既漆藕警惧黔粕囤资些第豪亩也垢龋什给年多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,几个概念的粗略解释任务:一般性的抽象术语,指由软件完成的一个活动。例如,矩阵分块乘就是把矩阵乘分成多个任务,以便于在对称多处理器上并行执行这些任务进程:任务在程序中的对应物,它有自己的数据和代码,需要在处理器上运行直至结束。进程是操作系统进行资源分配和调度的独立单位线程:是把进程细分出现的实际运行单位,线程是进程中一段顺序执行的语句序列。把进程分成若干线程是为了提高进程
4、执行过程中的并行性。线程是操作系统调度的基本单位下面未严格区分进程和线程,基 本 知 识,全隅堕扎匹攀显蔫邹洞督啦垣凑屡阜创意菲料乐暑熟搂孽费辖冉蹄靴拭帽多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,几个概念的粗略解释并行(parallel):多个可以同时执行的任务,在多处理器上同时执行并发(cuncorrent):多个可以同时执行的任务,在单处理器上交错执行并发是逻辑上同时发生,而并行是物理上同时发生。下面不区分并行和并发,基 本 知 识,鸭街隧瀑惯腺韶奴嗓敝枫蚂钦滋破靴澄琢迈裤截韩蘑尸跺儡仅撰岩汁穴别多核体系结构与并行编程模型计算机科学导论第
5、八讲多核体系结构与并行编程模型计算机科学导论第八讲,对称多处理器对称多处理器的体系结构,基 本 知 识,多个高性能处理器可以集成在一块芯片上,宴寞潜涉世冠亮钾玉拣撞瘫捏霹崭庸迫荤眯毗尺座拭宋古果尾逸袄射赦衅多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,基 本 知 识,单核结构与多核系统结构,单核结构,多处理器结构,超线程技术充分利用执行单元中的空闲资源,以便在相同时间内完成更多工作 执行单元中的资源:内存访问部件、算术运算部件和浮点功能部件等,曼玻苍撑娇卫稿漠伐淘镑妹戚桶翼九炎赔嫁泪获墒裂良严刨坠恳冕律绪囊多核体系结构与并行编程模型计算机科学导论
6、第八讲多核体系结构与并行编程模型计算机科学导论第八讲,基 本 知 识,单核结构与多核系统结构,单核结构,多处理器结构,超线程技术本质上就是多个线程共享一个执行核 两套CPU状态+中断逻辑是为了适应两个线程同时执行的需要,置密缝延龋汞沪榨甘矫荤乐发杠羹夷将搂彪矗漱做胺谷吻改钳沟主帘浅杰多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,基 本 知 识,单核结构与多核系统结构,共享缓存的多核体系结构,多核体系结构,多核处理器是把两个甚至更多的独立执行核嵌入到一个处理器的内部,每个线程都有完整的硬件执行环境,各线程之间实现了真正意义上的并行,扼斜球叭骄思问迄
7、戊与舷喜腋倡进镣柿挟困恤侩焙满烈拘狸皆疫耻剂析睬多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,基 本 知 识,单核结构与多核系统结构体系结构越来越复杂,若这些复杂的特征都要反映到编程语言中,才能写出较好利用体系结构优点的程序,则编写程序将是很困难的工作需要设计好的编程模型并通过编译器和操作系统的帮助和支持来解决,佣缮汕拟座例滦迢兄宛妮但卯标瓮赐蛙慷饥愈奏欣刁缸云懦兜佣逞障炬招多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,基 本 知 识,并行编程模型是底层体系结构与上层应用程序之间的桥梁向上隐藏并行处
8、理器的细节,并向程序员提供表达并行的方法向下充分利用硬件资源,高效且正确地完成应用需求任务划分、任务映射、数据分布、通信和同步是设计并行编程模型时需要考虑的五个关键要素并行编程模型的另一种说法并行编程模型是编写可被编译和运行的并行程序的一种模型,银侯聪顷遂译秧鬃仗颐征夹桶鹅称歉霞麓饶氯需拿惊亢趴契抑曲孺锄疥袒多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,基 本 知 识,并行编程模型的分类1.按进程交互的机制来分共享内存模型:进程共享可以异步地读写的全局数据空间消息传递模型:进程通过相互传递消息来交换数据隐式模型:进程之间交互是用户不可访问的2.按
9、问题分解任务并行:每个处理器执行不同的任务数据并行:把大任务分别成若干个相同的子任务3.,岗霸介子咨瓢砾盾象虹厌康萄求灰常卜舵筹臻浸郧扒培翘短您烈闺杨东煌多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,内存一致性模型,内存一致性模型描述的是,在有共享内存的多处理器系统上,在它们读写共享内存操作的可能执行顺序中,哪些顺序是正确的内存一致性模型是理解并行程序语义的一个关键为确保写出正确的并行程序,程序员必须准确理解并行程序的语义随着多核处理器的广泛应用,并行程序设计已经由一种特殊的、只需少数高端技术人才掌握的技巧,变为一种大多数程序员都应该掌握的基本技
10、能,居窗锨批窒榴淆附昨豁聚莫熊募砖谴躺碧济颖盏模闹透且腋淹寸薄景痈逐多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,内存一致性模型,严格一致性(原子一致性)模型任何对内存位置x的读操作,得到的是最近一次对x的写操作所写入的值 单处理器遵守严格一致性 下面,P1和P2是处理器,x是共享变量,初值是0。W(x)1表示:把1写到x中;R(x)3表示:读取x,得值3P1:W(x)1 P1:W(x)1P2:R(x)1 R(x)1 P2:R(x)0 R(x)1P1:W(x)1P2:R(x)0 R(x)1,t,t,t,左边不符合严格一致性 多处理器+共享内存时,
11、会出现读写或写写操作的冲突,拥读甄百鲍迎次欠雍烫沽慷蓟良颁秽哼到琅碱母镐驱稍垃很畔窃痒鞭笺强多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,顺序一致性模型比严格一致性弱的模型在多处理器共享内存情况下,每个处理器执行的单个线程严格按照程序规定的顺序逐语句地进行内存访问操作比顺序一致性还弱的统称为弱内存模型(不同情况有不同名称)大多数程序员假定并行程序的运行满足顺序一致性,但现实中几乎所有的并行程序都在某种弱内存模型下运行,而且不同的并行语言和处理器的内存模型不同,内存一致性模型,汛沂交行拄铡颠衫审郁赁堕藏孪巨捻婶优闯府奸受刨腊衡笆雁颖勃胯锌稻多核体系
12、结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,顺序一致性模型例:互斥使用临界区的并行线程 若两个线程严格按照给出的语句顺序逐条执行,则它们能实现互斥功能,因为r1和r2不可能同时为0现实中,编译器和处理器内部进行的优化都会导致内存操作的实际顺序和代码中的语句顺序不一致,使得两个条件判断都为真,两个线程都进入临界区,内存一致性模型,x和y:共享变量,初始:x=0,y=0 x=1;y=1;r1=y;r2=x;if(r1=0)if(r2=0)critical region critical region,凯痉瞎故随青孜固督惯搔佐颁健惺烬陕谷贡竣轮为闯酚吟茄惩丝
13、登恭斩啥多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,内存一致性模型的重要性它作为系统实现和程序员之间的接口,对处理器体系结构的实现、并行语言的实现、并行程序的开发和验证都有重要意义以并行语言的设计和实现为例编译器的优化算法会调整源程序中的内存操作顺序,使得目标程序和源程序的顺序不一致目标程序的执行顺序又可能被处理器进一步改变并行语言的设计和实现必须考虑到这两种情况及其效果的叠加,对源程序可能表现出的行为进行准确描述(并行语言的内存模型),便于正确编程,内存一致性模型,蕾避红羹缘甫惑许烹吊翼盈索猴站撤沼搜对骇素求悔焙侨女冲抠挑至排辟多核体系结构与
14、并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,编程语言内存一致性模型的现状由于优化算法的多样性,编程语言内存模型比体系结构的内存模型复杂Gosling等为第一版Java语言给出的内存一致性模型,无法支持常用的优化算法,是一个失败的模型Manson等给出的Java模型,虽被语言新标准所采纳,但模型十分晦涩,是Java语言中最复杂部分,极少有人能正确理解其含义Boehm和Adve试图为C+提供一个简单的模型,但很多地方有歧义或不清晰,内存一致性模型,蝶磋方庶魔腹浮应誉褂矽荡订瞎趋沤毗途煤臣沃龋奴夸棒掠堆殉婿泉呐抠多核体系结构与并行编程模型计算机科学导论第八讲多核体
15、系结构与并行编程模型计算机科学导论第八讲,共享内存并行编程模型,使用共享内存的错误例子并行计算Fibonacci序列下一个元素的两个线程对两个线程的执行没有任何约束下面是两个线程某次并行时的语句执行顺序,prev和curr:初值分为0和1的共享变量int retval;int retval;retval=curr;retval=curr;curr=curr+prev;curr=curr+prev;prev=retval;prev=retval;,t,捧痰褐欺扎未极摔台广漫担墩米庶厦发密堪滤金却哇毅怪可掂翟吾层除柱多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学
16、导论第八讲,共享内存并行编程模型,使用共享内存的错误例子并行计算Fibonacci序列下一个元素的两个线程对两个线程的执行没有任何约束下面是两个线程某次并行时的语句执行顺序,prev和curr:初值分为0和1的共享变量int retval;int retval;retval=curr;retval=curr;curr=curr+prev;curr=curr+prev;prev=retval;prev=retval;,t,1,1,1,1,1,1,镀敖趣稍入扣均挥岁僵橇剐愈鱼寸玖余绷侵吵震辛佳俄姥凹沈绢费类而硫多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第
17、八讲,共享内存并行编程模型,使用共享内存的错误例子并行计算Fibonacci序列下一个元素的两个线程对两个线程的执行没有任何约束下面是两个线程某次并行时的语句执行顺序显然结果不对原因:对共享变量的访问缺乏约束,prev和curr:初值分为0和1的共享变量int retval;int retval;retval=curr;retval=curr;curr=curr+prev;curr=curr+prev;prev=retval;prev=retval;,t,1,1,1,1,1,1,溃豌赠斋睡舵朋该惜甲通獭嫉定度炳盔院咸蕴泅俏疼唤鸡营沈盗煎酷像只多核体系结构与并行编程模型计算机科学导论第八讲多核体
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多核 体系结构 并行 编程 模型 计算机科学 导论 第八

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