1多核程序设计2008年8月18日浙江大学嵌入式研发中心教材主教材:《多核程序设计》,ISBN9-787302-158356,清华大学出版社,2007年8月参考书:《多核程序设计技术-通过软件多线程提升性能》,电子工业出版社,ISBN9787121038716,2007年3月浙江大学嵌入式研发中心实验环境硬件:英特尔多核计算机:双核酷睿2软件:Visualstudio2003/2005IntelC++compiler10.0forlinux&forwindowsIntelMKL9.1forLinux&WindowsIntelThreadChecker3.1forLinux&WindowsThreadProfiler3.1forWindowsVtune9.0forWindows&Linux浙江大学嵌入式研发中心课件、工具、录像、代码微处理器发展史1945年,世界上第一台全自动电子数字计算机ENIAC计算机的发展按照硬件工艺可以分为第一代(1946~1958):电子管数字计算机。第二代(1958~1964):晶体管数字计算机。第三代(1964~1971):集成电路数字计算机。第四代(1971年以后):大规模集成电路数字计算机。浙江大学嵌入式研发中心微处理器1971年,第一款微处理器40041978年,英特尔公司80861979年,英特尔公司又开发出了80881981年,美国IBM公司将8088芯片用于其研制的PC机1982年,英特尔公司研制出了80286微处理器1985年10月17日,英特尔80386DX正式发布1989年,英特尔推出80486芯片1993年,新一代586CPU问世1996年底,多能奔腾PentiumMMX1998年,奔腾二代PentiumII、至强微处理器Xeon、赛扬Celeron1999年春,英特尔公司PentiumIII奔三2000年,英特尔公司Pentium4,奔四2002年,英特尔超线程技术(HT,Hyper-Threading)2005年4月18日,英特尔全球同步首发奔腾D处理器浙江大学嵌入式研发中心指令集变化提高电脑在多媒体、3D图形方面的应用能力MMX57条多媒体指令SSE3DNOW!3D加速指令集怎么利用这些指令用专业编译器浙江大学嵌入式研发中心多核技术是处理器发展的必然推动微处理器性能不断提高的因素半导体工艺技术的飞速进步体系结构的不断发展这两个因素相互影响,相互促进工艺和电路技术的发展使得处理器性能提高约20倍体系结构的发展使得处理器性能提高约4倍编译技术的发展使得处理器性能提高约1.4倍。如今,这个规律已经很难维持浙江大学嵌入式研发中心十亿晶体管时代即将到来通用微处理器的主频已经突破了4GHz数据宽度也达到64位。65nm工艺的微处理器已经批量生产大连45nm工艺以下的微处理器也已问世芯片上集成的晶体管数目已经超过10亿个如何有效地利用数目众多的晶体管?多核通过在一个芯片上集成多个简单的处理器核利用这些晶体管资源发挥其最大的能效浙江大学嵌入式研发中心门延迟逐渐缩短,全局连线延迟却不断加长晶体管特征尺寸不断缩小使得晶体管门延迟不断减少互连线延迟却不断变大芯片的制造工艺达到0.18微米甚至更小时线延迟已经超过门延迟成为限制电路性能提高的主要因素CMP(单芯片多处理器)的分布式结构全局信号较少,与集中式结构的超标量处理器结构相比,在克服线延迟影响方面更具优势浙江大学嵌入式研发中心规则Pollack规则处理器性能的提升与其复杂性的平方根成正比如一个处理器的硬件逻辑提高一倍,至多能提高性能40%采用两个简单处理器构成一个相同硬件规模的双核处理器可获得70%~80%的性能提升在面积上也同比缩小浙江大学嵌入式研发中心能耗不断增长芯片的发热现象日益突出工艺技术的发展和芯片复杂性的增加多核处理器单核速度较慢处理器消耗较少的能量,产生较少的热量单核处理器里增加的晶体管可用于增加多核处理器的核多核处理器关闭(或降频)一些处理器等低功耗技术浙江大学嵌入式研发中心设计成本的考虑设计成本随时间呈线性甚至超线性的增长处理器结构复杂性的不断提高人力成本的不断攀升多核处理器处理器IP复用极大降低设计的成本模块的验证成本也显著下降浙江大学嵌入式研发中心体系结构发展的必然超标量结构和超长指令字结构在目前的高性能微处理器中被广泛采用超标量结构使用多个功能部件同时执行多条指令,实现指令级的并行控制逻辑复杂,实现困难超标量结构的指令并行程度一般不超过8超长指令字结构使用多个相同功能部件执行一条超长的指令编译技术支持问题二进制兼容问题。未来的主流应用需要同时执行更多条指令的能力单一线程不太可能提取更多的并行性不断增加的芯片面积提高了生产成本设计和验证所花费的时间变得更长更复杂化的设计也只能得到有限的性能提高浙江大学嵌入式研发中心单芯片多处理器通过在一个芯片上集成多个微处理器核心来提高程序的并行性每个微处理器核心是一个相对简单的单线程微处理器或者比较简单的多线程微处理器多个微处理器核心就可以并行地执行程序代码具有了较高的线程级并行性由于CMP采用了相对简单的微处理器作为处理器核心使得CMP具有高主频、设计和验证周期短、控制逻辑简单、扩展性好、易于实现、功耗低、通信延迟低等优点CMP能充分利用指令级并行和线程级并行目前CMP已经成为处理器体系结构发展的一个重要趋势浙江大学嵌入式研发中心并行计算机由一组处理单元组成,这组处理单元通过相互之间的通信与协作,以更快的速度共同完成一项大规模的计算任务。出现背景:60年代初期,晶体管以及磁芯存储器的出现,处理单元变得越来越小,存储器也更加小巧和廉价。出现规模不大的共享存储多处理器系统,即大型主机(Mainframe)。60年代末期,同一个处理器开始设置多个功能相同的功能单元,流水线技术也出现了,在处理器内部的应用大大提高了并行计算机系统的性能。两个最主要的组成部分计算节点节点间的通信与协作机制浙江大学嵌入式研发中心并行计算机的弗林分类Flynn根据指令流和数据流的不同组织方式,把计算机系统的结构分为以下四类:单指令流单数据流(SingleInstructionstreamSingleDatastream,SISD)单指令流多数据流(SingleInstructionstreamMultipleDatastream,SIMD)多指令流单数据流(MultipleInstructionstreamSingleDatastream,MISD)多指令流多数据流(MultipleInstructionstreamMultipleDatastream,MISD)浙江大学嵌入式研发中心并行计算机系统结构分类分布式存储器的SIMD处理机含有多个同样结构的处理单元(PE),通过寻径网络以一定方式互相连接。每个PE有各自的本地存储器(LM)。向量超级计算机(共享式存储器SIMD)集中设置存储器,共享的多个并行存储器通过对准网络与各处理单元PE相连。在处理单元数目不太大的情况下很理想。对称多处理器(SMP)一个计算机上汇集了一组处理器,各处理器之间共享内存子系统以及总线结构。并行向量处理机(PVP)集群计算机浙江大学嵌入式研发中心片上多核处理器架构片上多核处理器(ChipMulti-Processor,CMP)就是将多个计算内核集成在一个处理器芯片中,从而提高计算能力。按计算内核的对等与否,CMP可分为同构多核和异构多核CPU核心数据共享与同步总线共享Cache结构:每个CPU内核拥有共享的二级或三级Cache,用于保存比较常用的数据,并通过连接核心的总线进行通信。基于片上互连的结构:每个CPU核心具有独立的处理单元和Cache,各个CPU核心通过交叉开关或片上网络等方式连接在一起。给程序开发者带来的挑战浙江大学嵌入式研发中心2002年超线程技术(HT,Hyper-Threading)2005年4月18日奔腾D处理器,第一个多核AMDK8架构IntelCore微架构Intel四核AMD四核?浙江大学嵌入式研发中心多核特点优势功耗低性能高缺点编程复杂浙江大学嵌入式研发中心(2GB/s)1066/800MHzFSBCore1L2Cache(forCore1)Core0L2Cache(forCore0)6USB2.0IntelMatrixStorageBIOSSupportIntelPro1000LAN浙江大学嵌入式研发中心核处理器2007-02-11核心面积275平方毫米主频3.16GHz电压0.95V数据带宽1.62Tb/s浮点运算能力1.01TFlops相当于1万颗10年前的PentiumPro功耗不过62W比core2duo还低是四核心XeonX53552.66GHz的大约一半,浮点运算能力估计为50-60GFlops(每秒十亿次)浙江大学嵌入式研发中心系统芯片或称片上系统(SystemonChip,简称SoC)在一个芯片上实现完整功能信号采集、转换、存储、处理和I/O等IP核复用IP,IntellectualProperty,知识产权主要用于嵌入式系统浙江大学嵌入式研发中心芯片组对多核的支持——固件固件:嵌入到硬件设备中的软件烧写在flash等介质中可以被当作一个二进制映像文件由用户从硬件设备中调用在集成电路只读存储器中的计算机程序是可擦写可编程芯片程