资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1,多核程序设计,多核技术概述,2,第一章 多核技术概述,一、微处理器的发展史,二、,并行计算机,三、,系统芯片发展,四、,片上多核处理器构架,五、,芯片组对多核的支持,六、,操作系统对多核处理器的支持方法,3,一、微处理器发展史,1945,年,世界上第一台全自动电子数字计算机,ENIAC,(埃尼阿克)。采用电子管,作为基本原件,每秒可进行,5000,次加减乘除,占地,172,平米,重,30,吨,耗电,150,千瓦。,他的问世表明计算机时代的到来。,从此以后计算机技术的发展日新月异。,4,计算机的发展按照硬件工艺可以分为四个阶段,:,第四代,(1971,年以后):,大规模集成电路,数字计算机。逻辑原件和主存都采用大规模集成电路。,第三代(,19641971,):,集成电路,数字计算机。,软件完善,分时操作系统、会话式语言都有发展。,第二代(,19581964,):,晶体管,数字计算机。,外存采用磁盘;出现各种高级语言及编译程序。,第一代(,19461958,):,电子管,数字计算机。,主存使用汞延迟线、磁鼓、磁芯;外存采用磁带。软件主要使用机器语言、汇编语言。,5,计算机的发展方向,:,巨型机,微型机,银河系列、曙光系列,PC,机,核心,:,微处理器(体积小、重量轻、功耗低、功能强、可靠性高、结构灵活),6,1971,年,第一款微处理器,4004,,,4,位,,2300,个晶体管,1978,年,英特尔公司,8086,,,16,位,80186,1979,年,英特尔公司又开发出了,8088,,集成完善,80188,1981,年,美国,IBM,公司将,8088,芯片用于其研制的,PC,机,1982,年,英特尔公司研制出了,80286,微处理器,1985,年,10,月,17,日,英特尔,80386 DX,正式发布,,32,位,Cache,1989,年,英特尔推出,80486,芯片,,120,万个晶体管,1993,年,新一代,586 CPU,问世,奔腾系列,,0.5,m,1996,年底,多能奔腾,Pentium MMX,1998,年,奔腾二代,Pentium II,(,0.25,m,)、至强微处理器,Xeon,、赛扬,Celeron,1999,年春,英特尔公司,Pentium III,奔三,2000,年,英特尔公司,Pentium 4,,奔四(,0.18,m,),2002,年,英特尔超线程技术(,HT,,,Hyper-Threading,),2005,年,4,月,18,日,英特尔全球同步首发奔腾,D,处理器,.,微处理器的发展史,:,7,第一代微处理器,(4,位,),:英特尔,4004,8008,第二代微处理器,(8,位,),:采用,NMOS,工艺,采用汇编语言、,BASIC,、,Fortran,编程,使用单用户操作系统。如英特尔,8080,8085,。,第三代微处理器,(16,位,),:以,1978,年英特尔的,8086,出现为起点。,第四代微处理器,(32,位、,64,位,),:运算模式包括实模式、保护模式和,“,虚拟,86,”,。英特尔,80386 DX,80486,Pentium 4,微处理器的发展史,:,8,4004:4,位,8086:16,位,8008:8,位,80386:32,位,位数,:,缓存,:,80386,开始有高速缓存,(cache).,Pentium II,开始有二级缓存,(L2).,多核,:,奔腾,D,处理器,.,关于处理器发展史的说明,:,Itanium(,安腾,):64,位,9,1,高速缓存,(Cache),技术,:,处理器发展史中的一些重要技术,:,Cache,是位于,CPU,与,Mem,之间的临时存储器,它的容量比,Mem,小但交换速度快。在,Cache,中的数据是,Mem,中的一小部分,但这一小部分是短时间内,CPU,即将访问的,当,CPU,调用大量数据时,就可避开,Mem,直接从,Cache,中调用,从而加快读取速度。,CPU,速度快,Mem,速度较慢,Cache,技术可解决该矛盾。,10,流水线技术是一种将每条指令分解为多步,并让各步操作重叠,从而实现几条指令并行处理的技术。,程序中的指令仍是一条条顺序执行,但可以预先取若干条指令,并在当前指令尚未执行完时,提前启动后续指令的另一些操作步骤。,这样可以加快程序的运行。,2,流水线技术,:,11,3,超线程,(Hyper-Threading,HT),技术,:,超线程技术就是利用,特殊的硬件指令,,把两个逻辑内核,模拟,成两个物理芯片,让单个处理器能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了,CPU,的闲置时间,提高,CPU,的运行效率。,采用超线程技术能同时执行两个线程,是因为他们使用了,芯片的不同部分,他们并不能象两个真正的,CPU,那样,每各,CPU,都具有独立的资源。,当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗,CPU,的性能。,12,MMX(MultiMedia Extensions),多媒体扩展指令集,.,SSE2,SSE3,SSE4,提高在多媒体和,3D,图形方面的处理能力,要使用这些新指令集,需使用专业编译器。,4,新指令集,:,SSE(Streaming SIMD Extensions),第二套多媒体专用指令集,加速,CPU,的,3D,运算能力。,3D Now,:,3D,加速指令集,加速,CPU,的浮点运算。,13,二、并行计算机,概念,:,由一组处理单元组成,这组处理单元通过相互之间的通信与协作,以更快的速度共同完成一项大规模的计算任务。,两个最主要的组成部分(发展的方向),:,节点间的通信与协作机制,计算节点,14,出现背景:,60,年代初期,晶体管以及磁芯存储器的出现,处理单元变得越来越小,存储器也更加小巧和廉价。出现规模不大的共享存储多处理器系统,即大型主机(,Mainframe,)。,60,年代末期,同一个处理器开始设置多个功能相同的功能单元,流水线技术也出现了,在处理器内部的应用大大提高了并行计算机系统的性能。,15,下面我们讨论如下两方面的内容:,1,并行计算机的弗林(,Flynn,)分类,2,并行计算机系统结构分类,16,1,并行计算机的弗林(,Flynn,)分类,:,指令流(,Instruction stream,),:,机器执行的指令序列,.,数据流(,Data stream,),:,指令调用的数据序列,(,输入数据和中间结果,),从计算机的运行机制进行分类:,17,多指令流单数据流,(Multiple Instruction stream Single Data stream,MISD,),单指令流多数据流,(Single Instruction stream Multiple Data stream,SIMD,),单指令流单数据流,(Single Instruction stream Single Data stream,SISD,),多指令流多数据流,(Multiple Instruction stream Multiple Data stream,MIMD,),Flynn,根据指令流和数据流的不同组织方式,把计算机系统的结构分为四类:,18,Flynn,分类法:,19,SISD:,传统串行计算机,20,SIMD,结构,一个控制部件,多个专门设计的处理单元,21,MIMD,结构,(,主流并行机结构,),采用通用的,CPU,,通过互联网进行通信,22,MISD,结构,实际中存在争议,有的学者认为没有这种结构的计算机,而有的文献则把流水线结构的计算机看成,MISD,结构。,23,2,并行计算机系统结构分类,:,(1),分布式存储器的,SIMD,处理机,含有多个同样结构的处理单元(,PE,),通过寻径网络以一定方式互相连接。,互连网络,PE,LM,LM,PE,CU,前端机,LM,PE,每个,PE,有各自的本地存储器(,LM,)。,向量数据总线,控制单元,24,(2),向量超级计算机(共享式存储器,SIMD,),集中设置存储器,共享的多个并行存储器通过,对准网络,与各处理单元,PE,相连。,M,M,M,互连网络,PE,PE,PE,CU,前端机,存储模块数目等于或者略大于处理单元的数目。为减少冲突应合理分布数据。,25,(3),对称多处理器(,SMP,),一个计算机上汇集了一组处理器,各处理器之间共享内存子系统以及总线结构。同时由多个处理器运行操作系统的单一副本,共享内存和其它的资源。,MIMD,26,(4),并行向量处理机(,PVP,),在并行向量处理机中有少量专门定制的向量处理器。每个向量处理器有很高的处理能力。并行向量处理机通过,向量处理,和,多个向量处理器并行处理,两条途径来提高处理能力。,VP,VP,VP,交叉开关网络,VP,VP,VP,27,(5),集群计算机,集群是一组独立的计算机(节点)的集合体,节点间通过高性能的互连网络连接;各节点除了可以作为一个单一的计算资源供交互式用户使用外,还可以协同工作并表现为一个单一的、集中的计算资源供并行计算任务使用。,集群是一种造价低廉,易于构筑,并且具有较好可扩展性的体系结构。,分布式 集中式,同构 异构,高性能机群(,HP Cluster,),高可用性机群(,HA Cluster,),分类,:,28,并行计算机技术与超级计算机技术为多核计算机的出现奠定了基础,而集成电路技术的发展是多核芯片得以实现的物理条件。,29,三、系统芯片发展,处理器技术紧密地依托于集成电路技术的发展而发展,集成电路的迅猛发展引发了多核技术的出现。,集成电路是采用半导体制作工艺,在一块较小的单晶硅片上制造许多晶体管及电阻器、电容器等元器件,并按多层布线或隧道布线的方法将元器件组合成完整的电子电路。,1,、超大规模集成电路技术,30,集成电路比分立器件电路成本更低、更容易调试和应用、更加可靠、更容易更换。,集成电路的出现使得一块芯片上可以集成更多的运算和存储单元,计算机的体积减小,成本降低。,摩尔定律,-,集成电路的集成度每,18,个月翻一番。,当前集成电路已进入特大规模(千万个以上的元器件)阶段,主流生产工艺达到,90nm,,,65nm,和,45nm,。,摩尔定律不可能无限持续,若不能在设计原理、工艺技术和原材料方面有所突破,无法更大程度地缩小晶体管的尺寸。,1,、超大规模集成电路技术,31,2,、系统芯片,SoC,:,20,世纪,90,年代中期,因使用,ASIC,(专用集成电路)实现芯片组受到启发,萌生应该将完整计算机所有不同的功能块一次直接集成于一颗硅片上的想法。,这种芯片,初始起名叫,System on a Chip(SoC),,直译的中文名是“系统级芯片”,又称“片上系统”。,SoC,IP,SOPC,Tolapai,介绍,4,个概念:,32,随着设计与制造技术的发展,集成电路设计从,晶体管的集成,发展到,逻辑门的集成,,现在又发展到,IP,的集成,,即,SoC,设计技术。,SoC,可以有效地降低电子,/,信息系统产品的开发成本,缩短开发周期,提高产品的竞争力,是未来工业界将采用的最主要的产品开发方式。,33,(,1,),SoC,应由可设计重用的,IP,核组成,,IP,核是具有复杂系统功能的能够独立出售的,VLSI,(超大规模集成电路)块;,(,2,),IP,核应采用深亚微米以上工艺技术;,(,3,),SoC,中有至少一个的,MPU,(微处理器)、,MCU,(微控制器)、,DSP,(数字信号处理器)或其复合的,IP,核。,这个定义虽然不是非常严格,但明确地表明了,SoC,的特征。,到底怎么准确定义,SoC,有着各种不同的说法,在经过了多年的争论后,专家们就,SoC,的定义达成了一致意见:,34,IP,(,Intellectual Property,)核:一种预先设计好的甚至已经过验证的具有某种确定功能的集成电路、器件或部件。,IP,核有,3,种不同形式:软核,硬核和固核。,软核,:通常是用某种,HDL,文本提交用户,它已经过行为级设计优化和功能验证,但其中不含有任何具体的物理信息。,毛坯,硬核,:具有和特定工艺相联系的物理版图,已有固定的拓扑布局和具体工艺,并已经过工艺验证,具有可保证的性能。,成品,固核,:设计深度介于软核和硬内核之间,除了完成软核所有的设计外,还完成了门电路级综合和时序仿真等设计环节。,半成品,35,从灵活性和可重用性来看:,如果想付出少量劳动、又不在乎高价:,硬核最好,软核最差,软核最好,硬核最差,IP,核的选择:,36,SOPC,(,System-on-a-Programmable-Chip,)是,SOC,和,PLD,(,可编程逻辑器件,)的结合物。,SOPC,(可编程的系统芯片):,SOPC,技术是美国,Altera,公司于,2000,年最早提出的,并同时推出了相应的开发软件,Quartus II,。,SOPC,是,SoC,和可编程逻辑技术的结合,与,ASIC,的,SOC,解决方案相比,,SOPC,系统及其开发技术具有更多的特色。例如,可裁减,可扩充,可升级,并具有一定的系统可编程功能。,Altera,的,Nios,和,NiosII,核是目前最有代表性的,软核嵌入式系统处理器,之一。,37,“Tolapai”,是英特尔针对企业级市场的,SoC,计划,也是企业级,SOC,产品家族的第一款产品。,Tolapai,集成了北桥和南桥,其中北桥拥有单通道,64-bitDDR2,内存控制器、四通道,DMA,控制器、,18,条,PCI-E,通道,(,一个,x2,、两个,x4,、两个,x1),,南桥则支持两个,USB,、两个,SATA,、两个,UART(,通用异步串行收发接器,),、,37,个,GPIO(,通用输入,/,输出,),、,Timer(,定时器,),、,RTC(,实时时钟,),、,WDT(,看门狗定时器,),等。,Tolapai,:,在一枚英特尔架构处理器中集成了多种关键系统组件。,38,39,四、片上多核处理器构架,一直以来,处理器芯片厂商都通过不断地提高主频来提高处理器的性能。但随着芯片制造工艺的不断进步,从体系结构来看,传统的处理器体系结构已面临瓶颈,晶体管的集成度已超过上亿个,很难单纯地通过提高主频来提升性能,而主频的提高也带来功耗的提高。,从应用需求来看,日益复杂的多媒体、科学计算、虚拟化等多个应用领域都呼唤更为强大的计算能力。,40,处理器结构,41,处理器结构,42,处理器结构,43,处理器结构,44,片上多核处理器(,Chip Multi-Processor,,,CMP,)就是将多个计算内核集成在一个处理器芯片中,从而提高计算能力。,按计算内核的对等与否,,CMP,可分为同构多核和异构多核:,计算内核相同,地位对等的称为“同构多核”,计算内核不同,地位不对等的称为“异构多核”,,异构多核采用“主处理核协处理核”的设计。,45,CPU,核心之间的数据如何共享与同步?,1,总线共享,Cache,结构:,每个,CPU,内核拥有共享的二级或三级,Cache,,用于保存比较常用的数据,并通过连接核心的总线进行通信。,2,基于片上互连的结构:,每个,CPU,核心具有独立的处理单元和,Cache,,各个,CPU,核心通过交叉开关或片上网络,(,NoC,),等方式连接在一起,通过消息通信。,结构简单,速度快;扩展性差。,带宽有保证,可扩展性好;结构复杂。,46,处理器结构,47,Inter-Core Bus Interface,Pentium D with 975X Chipset,Memory,Controller,Hub,I/O Controller,Hub,DDR2 Memory,PCI Express x16,6 PCI,4 Serial ATA Ports,6 PCI Express x1,High-Definition Audio,2 PCI Express x8,or,DMI(2 GB/s),1066/800 MHz FSB,Core 1,L2 Cache,(for Core 1),Core 0,L2 Cache,(for Core 0),6 USB 2.0,Intel Matrix Storage,BIOS Support,Intel Pro 1000 LAN,48,Cell,架构,49,2007-02-11,核心面积,275,平方毫米,主频,3.16GHz,电压,0.95V,数据带宽,1.62Tb/s,浮点运算能力,1.01TFlops,相当于,1,万颗,10,年前的,Pentium Pro,功耗不过,62W,比,core 2 duo,还低,是四核心,Xeon X5355 2.66GHz,的大约一半,采用了,NoC,(非对称接口),80,核处理器:,50,51,五、芯片组对多核的支持,固件:嵌入到硬件设备中的软件,烧写在,flash,等介质中,可以被当作一个二进制映像文件由用户从硬件设备中调用,在只读存储器中的计算机程序,是可擦写可编程芯片,程序可以通过专门的外部硬件进行修改,不能被一般的应用程序改动,52,BIOS,(,Basic Input/Output System,),功能:,初始化和配置系统的硬件,启动操作系统,提供对系统设备底层的通讯,BIOS,是系统硬件和操作系统之间的抽象层,连接,CPU,、芯片组和操作系统的固件。,正在被以,EFI,所取代!,53,可扩展固件接口,EFI,Extensible Firmware Interface,操作系统与平台固件之间的软件接口,接口包括平台信息的数据表和启动时及启动后的服务,最早是,Intel,开发的,旨在取代,BIOS,,现在由,UEFI,组织来进行开发。,54,UEFI,55,在,Framework,中定义了两类处理器:,BSP,(,boot strap processor,),执行,EFI,的初始化代码,建立系统范围的数据结构,开始并初始化,AP,。,AP,(,application processor,),在系统上电或重启之后,,AP,会自己进行一个简单的设置,然后就等待,BSP,发出,Startup,信号。,EFI,对多核支持:,Framework,是一种固件的架构,它是,EFI,固件接口的一种实现。,Tiano,是,EFI,的一个具体实现,符合,EFI,规范接口实现的标准。,56,Framework,在多核计算机中初始化过程如下:,SEC,:从实模式切换到保护模式,处理不同的重启事件、对每个处理器进行缓存设置。,PEI,:做尽量少的硬件初始化,而把更多的留给,DXE,。,DXE,:对所有可用的硬件设备进行初始化,为建立控制台和启动操作系统提供必要的服务。,BDS,:建立所需的控制台设备,在输出控制台上显示用户界面。,57,58,六、操作系统对多核处理器的支持,分配和调度:,多核处理器环境下操作系统的任务分配调度是目前研究的一个热点。,操作系统的一个重要工作就是分配和调度任务。,59,调度包括多个方面:,负载不均衡时是否迁移任务?,如何保证负载均衡?,如何调度实时任务和普通任务?,一个进程是否始终在一个核上运行?,是否采用一致的调度算法?,每个核如何调度它上面的任务?,新的任务分配给谁?,采用单独还是共同的就绪队列,?,60,目前,还没有专门针对,CMP,体系结构的多核操作系统出现,缺乏成熟的,CMP,调度算法。,虽然,Windows,和,Linux,可以作为,CMP,多核体系结构的操作系统,但是他们对多核的支持不是对,CMP,的支持,而是对,SMP,的支持。,CMP,处理器的各个,CPU,核心会共享一些部件,如二级,Cache,、,I/O,端口等,当它们同时竞争访问这些资源的时候,就会发生冲突。,与传统的,SMP,并行架构相比较,,CMP,架构最大的特点在于片上的多个处理器核之间是紧密的耦合关系。,迁移任务的代价。,61,几个具有代表性的多核调度算法:,1,对任务的分配进行优化。使同一应用程序的任务尽量在一个核上执行,提高缓存命中率。,2,对任务的共享数据优化。由于,CMP,体系结构共享二级缓存,可以考虑改变任务在内存中的数据分布,使任务在执行时尽量增加二级缓存的命中率。,3,对任务的负载均衡优化。当任务在调度时,出现了负载不均衡,考虑将较忙处理器中与其他任务最不相关的任务迁移,以达到数据的冲突量小。,62,中断和,IO,系统:,高级编程中断控制器,APIC,IPI,:中断消息,63,典型支持多核的操作系统:,Windows NT,之后的,Windows,系列操作系统,其中可以支持,SMP,的都可以支持多核。,Windows,系列:,Linux,:,SMP,版本的,Linux,内核能够很好地支持多核,,Linux 2.0,内核以后的操作系统都支持,SMP,。,64,如果要将多核构架处理器的潜能完全发挥出来,需要开发一个新的操作系统和一批相应的工具,而目前这样的操作系统和工具是没有的,需要操作系统厂家努力研发。,目前发挥多核潜能的最好方法就是多线程编程。,
展开阅读全文