多核程序设计多核程序设计第一章第一章多核技术导论多核技术导论(1)(1)主讲:李金刚哈尔滨理工大学软件学院主讲:李金刚教材主教材:《多核程序设计》,ISBN9-787302-158356,清华大学出版社,2007年8月参考书:《多核程序设计技术-通过软件多线程提升性能》,电子工业出版社,ISBN9787121038716,2007年3月哈尔滨理工大学软件学院主讲:李金刚微处理器发展史微处理器发展史1945年,世界上第一台全自动电子数字计算机ENIAC计算机的发展按照硬件工艺可以分为第一代(1946~1958):电子管数字计算机。第二代(1958~1964):晶体管数字计算机。第三代(1964~1971):集成电路数字计算机。第四代(1971年以后):大规模集成电路数字计算机。微处理器第一代微处理器(4位):英特尔4004,8008第二代微处理器(8位):采用NMOS工艺,采用汇编语言、BASIC、Fortran编程,使用单用户操作系统。如英特尔8080,8085。第三代微处理器(16位):以1978年英特尔的8086出现为起点。第四代微处理器(32位):运算模式包括实模式、保护模式和“虚拟86”。英特尔80386DX,80486,Pentium4…哈尔滨理工大学软件学院主讲:李金刚微处理器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处理器哈尔滨理工大学软件学院主讲:李金刚世界第一台电子计算机ENIAC18,000个电子管70,000电阻器18,000电容器30吨哈尔滨理工大学软件学院主讲:李金刚第一台可操作的存储程序机器-Mark-I1948年,曼彻斯特大学,小型计算机样机。存储器大小:32字(可扩充到8K字)机器字长:32位哈尔滨理工大学软件学院主讲:李金刚1952年,IBM公司的第一台机器IBM701哈尔滨理工大学软件学院主讲:李金刚世界上第一台通用流水线机器-IBM7030它采用四级流水线结构,以使取指、译码和执行阶段重叠,从而提高速度。哈尔滨理工大学软件学院主讲:李金刚1964年,IBM公司宣布了IBM360系列Amdahl和Blauw等人在介绍IBM360时,提出了“系统结构”这一重要概念。采用了微程序技术。哈尔滨理工大学软件学院主讲:李金刚1965年DEC推出第一台商用小型机PDP-8哈尔滨理工大学软件学院主讲:李金刚1964年DEC推出第一台超级计算机CDC6600哈尔滨理工大学软件学院主讲:李金刚1971年Intel开始出售它的第一种微处理器芯片Intel4004哈尔滨理工大学软件学院主讲:李金刚1976年,Cray-1第一台每秒亿次浮点计算能力第一台商业化的向量超级计算机。哈尔滨理工大学软件学院主讲:李金刚Intel80X86系列哈尔滨理工大学软件学院主讲:李金刚世界最快的计算机2001年度(IBM)2001年宣布制造出全球运算速度最快的超级电脑,占地达两个篮球场之大,重达106吨,它的运算能力相当于击败国际象棋世界级棋手的超级电脑“深蓝”的1000倍,达7万亿次。现在2009年度最快的已经超过千万亿次了哈尔滨理工大学软件学院主讲:李金刚2002年世界最快的计算机NEC地球模拟器35万亿次哈尔滨理工大学软件学院主讲:李金刚中国最快的计算机曙光3000,4,032亿次联想机群系统,4万亿次“曙光4000A”采用2560枚美国超微(AMD)公司的服务器芯片,每秒可进行超过10万亿次浮点运算。哈尔滨理工大学软件学院主讲:李金刚日本展示512核芯片浮点运算每秒5120亿次GrapeDR处理器采用90nm制程,由台积电代工,尺寸为17×17mm。哈尔滨理工大学软件学院主讲:李金刚硬件发展的六个规律Moore定律:微处理器内单位面积上能够集成的晶体管数量每十二~十八个月翻一番。Bell定律:如果保持计算能力不变,微处理器的价格每十八个月减少一半。Gilder定律:未来25年里(1996年的预言),主干网的带宽将每6个月增加一倍。Metcalfe定律:网络价值同网络用户数的平方成正比。半导体存储器发展规律:DRAM的密度每年增加60%,每三年翻四倍。硬盘存储技术发展规律:硬盘的密度每年增加约一倍。哈尔滨理工大学软件学院主讲:李金刚多核技术是处理器发展的必然推动微处理器性能不断提高的因素半导体工艺技术的飞速进步体系结构的不断发展半导体工艺技术的每一次进步都为微处理器体系结构的研究提出了新的问题,开辟了新的领域;体系结构的进展又在半导体工艺技术发展的基础上进一步提高了微处理器的性能。这两个因素相互影响,相互促进工艺和电路技术的发展使得处理器性能提高约20倍体系结构的发展使得处理器性能提高约4倍编译技术的发展使得处理器性能提高约1.4倍。如今,这些规律已经很难维持哈尔滨理工大学软件学院主讲:李金刚Whatismulti-coreMulti-core,externallyvisibleprocessorsonasingledie(硬模)wheretheprocessorshaveindependentcontrol-flow,separateinternalstateandnocriticalresourcesharing(临界资源共享)AlsocalledChip-levelMulti-Processor(CMP)哈尔滨理工大学软件学院主讲:李金刚Whatismulti-core(IEEE2005)Heterogeneous异构的(orasymmetric不对称的)chipmultiprocessorspresentuniqueopportunitiesforimprovingsystemthroughput(吞吐量),reducingprocessorpower,andmitigatingAmdahl’slaw.On-chipheterogeneityallowstheprocessortobettermatchexecutionresourcestoeachapplication’sneedsandtoaddressamuchwiderspectrumofsystemloads——fromlowtohighthreadparallelism——withhighefficiency.哈尔滨理工大学软件学院主讲:李金刚Amdahl’slaw(安达尔定理)基本概念:加速比并行计算中的加速比是用并行前的执行速度和并行后的执行速度之比来表示的,它表示了在并行化之后的效率提升情况。Amdahl定理固定负载(计算总量不变时)的量化标准可用如下公式表示,即加速比为:式中Ws,Wp分别表示问题规模的串行分量(问题中不能并行化的那一部分)和并行分量,p表示处理器数量。哈尔滨理工大学软件学院主讲:李金刚Amdahl’slaw(安达尔定理)Amdahl'slaw,alsoknownasAmdahl'sargument,isnamedaftercomputerarchitectGeneAmdahl,andisusedtofindthemaximumexpectedimprovementtoanoverallsystemwhenonlypartofthesystemisimproved.Itisoftenusedinparallelcomputingtopredictthetheoreticalmaximumspeedupusingmultipleprocessors.哈尔滨理工大学软件学院主讲:李金刚Amdahl’slaw(安达尔定理)哈尔滨理工大学软件学院主讲:李金刚Amdahl’slaw(安达尔定理)Forexample,ifaprogramneeds20hoursusingasingleprocessorcore,andaparticularportionof1hourcannotbeparallelized,whiletheremainingpromisingportionof19hours(95%)canbeparallelized,thenregardlessofhowmanyprocessorswedevotetoaparallelizedexecutionofthisprogram,theminimalexecutiontimecannotbelessthanthatcritical1hour.Hencethespeedupislimitedupto20x,asshowninthediagramonthelastslide.哈尔滨理工大学软件学院主讲:李金刚Amdahl’slaw(安达尔定理)讨论:Amdahl定理是个悲观的结论,只要注意到当pÆ∞的时候,安达尔定理的极限是W/Ws,其中W=Ws+Wp。这意味着无论如何增加处理器的数目,加速比是无法高于这个数的。但其实,事实并非如此。哈尔滨理工大学软件学院主讲:李金刚Gustafson’slaw(古斯塔夫森定理)事实上,在很多计算中,计算负载是可以改变的,我们在增加处理器的同时增加了问题的规模,那么就得到了Gustafson定理的加速比公式,问题规模在并行之后变成了Ws+pWp,即增加了可并行部分的问题规模Gustafson定理无疑给我们带来了希望,但是在实际计算中,由于存储空间受限,故我们的并行部分问题规模常常不能增加p倍,后面的Sun-Ni定理就此对Gustafson定理做了一点修正。哈尔滨理工大学软件学院主讲:李金刚Sun-Ni()Sun-Ni定理中引入了一个函数G(p)表示存储容量受限时工作负载的增加量。在Gustafson定理中,加速比与处理器数几乎呈线性关系,这是Sun-Ni定理中G(p)=p的情况;而如果G(p)=1,则是表明工作量无增加,即Amdahl定理中的情况。哈尔滨理工大学软件学院主讲:李金刚多核处理器每个芯片上有多个完整的处理核心共享外部接口Context1FunctionalUnitsL1Cache…Context2FunctionalUnitsL1CacheL2Cache…MainMemoryEXECoreEXECoreFPUnitFPUnitEXECoreEXECoreFPUnitFPUnitL2CacheL2CacheL1CacheL1CacheL1CacheL1CacheSystemBusSystemBus哈尔滨理工大学软件学院主讲:李金刚为什么要用多核用户对性能的需求无止境哈尔滨理工大学软件学院主讲:李金刚为什么要用多核端到端因特网流媒体服务器架构终端用户眼中的因特网流媒体服务哈尔滨理工大学软件学院主讲:李金刚软件并发的作用和意义并发能够让系统资源得到最有效的利用。如上例(串行方式)等待网上数据到达;对数据进行解压缩;对数据进行解码;将解码数据发送到视频设备或音频设备。并发方式:·系统在等待下一视频帧到来的时间内,CPU可以对前一帧数据进行解码操作,从而提高系统效率。许多软件问题是自然并发问题。哈尔滨理工大学软件学院主讲:李金刚并行与并发的区别并行(Parallel)目前活动的线程在不同的硬件资源或者处理单元上同时执行,也就是说多个线程在任何时间点都是同