多核程序设计多核程序设计第一章第一章多核技术导论多核技术导论(2)(2)主讲:李金刚哈尔滨理工大学软件学院主讲:李金刚处理器知识要点微处理器由多个不同的功能模块组成芯片组的作用是充当处理器与物理存储器以及其它组件之间的互连接口。处理器是容纳单个或多个基片的容器多核处理器上的高层操作与单核处理器相同Intel提供了两种不同的基本体系结构:多发射超标量结构和EPIC结构哈尔滨理工大学软件学院主讲:李金刚““核核””的概念的概念独立的指令执行和控制单元独立的功能部件独立的功能部件独立的控制器独立的控制器完整的指令流水线哈尔滨理工大学软件学院主讲:李金刚多核处理器分类单核多线程处理器单核CPU构成多核处理器多核芯片构成多核多线程处理器每个核都是多线程的哈尔滨理工大学软件学院主讲:李金刚多核处理器的分类CU:CPU状态+中断逻辑CUCacheEUCUCacheEUCUCUCacheEUCUEUCacheCUCacheEUCUCUEUCUCache单核单线程处理器单核多线程处理器多核处理器多核多线程处理器哈尔滨理工大学软件学院主讲:李金刚芯片组ProcessorProcessorHigh-SpeedI/OHigh-SpeedI/OLow-SpeedI/OLow-SpeedI/O•PCIExpress•Memory•PCI•HardDisk•LAN•USB•AudioFrontSideBusNorthBridge/MCHSouthBridge/ICH哈尔滨理工大学软件学院主讲:李金刚单核计算机哈尔滨理工大学软件学院主讲:李金刚单核处理器芯片哈尔滨理工大学软件学院主讲:李金刚单核基本组成哈尔滨理工大学软件学院主讲:李金刚系统结构示意图处理器扩展卡(可选)与所有I/O设备链接物理存储器(必须有一个昀小值)主板图形扩展卡(可选)芯片组MCH(存储器控制中枢)ICH(I/O控制中枢)DMI(直接媒体接口)哈尔滨理工大学软件学院主讲:李金刚微处理器的功能模块片上CacheL0,,,,Ln本地高级可编程中断控制器(LocalAPIC)控制逻辑接口单元寄存器组执行资源(ALU,控制单元)处理器生产→基片→封装→处理器哈尔滨理工大学软件学院主讲:李金刚处理器的内部构成片上CacheL1cache,L2cache,L3cache本地可编程中断控制器(LocalAPIC)负责相应处理器上的中断工作。与I/OAPIC有区别。接口单元的功能提供处理器与系统总线(或FSB)之间的接口。寄存器组处理器内部一组寄存器资源。每一代处理器内的寄存器数量不同。不支持64位存储扩展技术的32位处理器:只有8个寄存器64位Itanium处理器:有128个寄存器。执行资源包括ALU,浮点执行单元以及分支单元。哈尔滨理工大学软件学院主讲:李金刚指令在处理器内部的基本执行步骤片上CacheL0,,,,Ln本地高级可编程中断控制器(LocalAPIC)控制逻辑接口单元寄存器组执行资源(ALU,控制单元)处理器系统总线或者前端总线(FSB)取指模块在取指周期内将指令从主存中取出经过处理器执行后,将执行结果在后面的执行周期送回主存。哈尔滨理工大学软件学院主讲:李金刚处理器内的基本执行流程处理器系统总线或者前端总线(FSB)取指执行译码写存储器总线接口单元取指/译码执行一些特殊的任务并产生结果哈尔滨理工大学软件学院主讲:李金刚超标量结构处理器技术的分类:超标量显示并行指令计算(ExplicitlyParallelInstructionComputing,EPIC)处理器:具有单条流水线的处理器,称为标量处理器具有多条流水线的处理器,称为超标量处理器哈尔滨理工大学软件学院主讲:李金刚超标量处理器内部的基本执行流程是多发射、推断和动态执行的结构静态程序取指令、分支预测执行窗口指令重定序和提交指令分派指令发射哈尔滨理工大学软件学院主讲:李金刚IntelPentium4处理器介绍所有功能模块被分为三个不同的部分:前端后端(执行核)存储子系统哈尔滨理工大学软件学院主讲:李金刚IntelP4处理器内部执行流程图系统总线或者前端总线(FSB)总线接口单元L2CacheL2Cache存储子系统处理器取指/译码BTB分支预测TraceCache微码ROM整数与浮点执行单元乱序执行逻辑退出分支历史信息更新后端或执行核哈尔滨理工大学软件学院主讲:李金刚超标量与EPIC结构的对比同样是先尽量在Cache中寻找数据,但是会在不确定数据是否需要的情况下就将其预先载入。首先尽量在Cache中寻找数据,只有在需要的时候才从存储器中取数据在进行分支预测的时候,分支的两条路径都会推断执行在进行分支预测的时候,只选择一条路径推断执行由编译器静态完成大多数的指令调度工作运行时调度策略具有多个并行执行单元具有多个并行执行单元将三条RISC风格指令打包成一条指令RISC风格指令需要大量的寄存器资源采用最少的寄存器资源达到很高的资源利用率支持64位技术(IntelItanium体系结构)支持32位和64位(IntelEM64)技术EPIC结构超标量结构哈尔滨理工大学软件学院主讲:李金刚超标量与EPIC结构上的执行流程对比超标量结构编译器硬件隐式执行············原始源代码串行机器代码很难有效利用所有的执行单元EPIC结构大量资源············原始源代码基于Itanium2的编译器并行机器代码有效的多路执行提高可所有执行单元的利用率,但增加了编译器的复杂度哈尔滨理工大学软件学院主讲:李金刚Pentium微处理器的功能结构预取缓冲存储器指令译码256控制ROM控制部件地址生成(U流水线)地址生成(U流水线)整数寄存器组ALU(U流水线)ALU(U流水线)筒型移位器8KB数据Cache浮点部件控制寄存器组加法器除法器乘法器80808KB代码Cache分支目标缓冲器预取地址指令指针转移校验和目标地址分页部件323232323232总线部件6464位读总线64位数据总线36位地址总线控制TLBTLB32位地址总线哈尔滨理工大学软件学院主讲:李金刚Intel双核(Core2Duo)哈尔滨理工大学软件学院主讲:李金刚双核的架构INTELCOREDUO••在一个封装芯片里有两个物理核。•每个核均有属于它自己的执行资源•每个核均有属于它自己的缓存L1•32K指令and32K数据•两个核共享缓存L2•2MB8-waysetassociative;64-bytelinesize•10clockcycleslatency;WriteBackupdatepolicyAMDOpteron•共享1M缓存L2•CPU0andCPU1通过SPQ通信哈尔滨理工大学软件学院主讲:李金刚两个处理器vs.双核双核两个核在一个芯片内直接连接多线程和多进程自动并行处理热量消耗增加的很少封装成本降低两个处理器•两个分开的芯片通过外在系统总线连接•需要外在软件支持•更多的热量消耗哈尔滨理工大学软件学院主讲:李金刚多核架构将多核处理器核放在一个芯片上哈尔滨理工大学软件学院主讲:李金刚多核中的并行指令级并行线程级并行哈尔滨理工大学软件学院主讲:李金刚指令级并行(Instruction-LevelParallelism,ILP)当指令之间不存在相关时,它们在流水线中是可以重叠起来并行执行的。这种指令序列中存在的潜在并行性称为指令级并行。在机器指令级并行通过指令级并行,处理器可以调整流水线指令重执行顺序,并将它们分解成微指令,能够处理某些在编译阶段无法知道的相关关系(如涉及内存引用时),并简化编译设计;能够允许一个流水线机器上编译的指令,在另一个流水线上也能有效运行。指令级并行能使处理器速度迅速提高。哈尔滨理工大学软件学院主讲:李金刚线程级并行(ThreadLevelParallelism,TLP)线程级并行将处理器内部的并行由指令级上升到线程级,旨在通过线程级的并行来增加指令吞吐量,提高处理器的资源利用率。TLP处理器的中心思想是:当某一个线程由于等待内存访问结构而空闲时,可以立刻导入其他的就绪线程来运行。处理器流水线就能够始终处于忙碌的状态,系统的处理能力提高了,吞吐量也相应提升。服务器可以通过每个单独的线程为某个客户服务(web服务器,数据库服务器)单核超标量体系结构处理器不能完全实现TLP多核架构将会解决以上问题:完全实现TLP现在,业界普遍认为,TLP将是下一代高性能处理器的主流体系结构技术。哈尔滨理工大学软件学院主讲:李金刚多核处理器是一种特殊的多处理器所有的处理器都在同一块芯片上多核处理器是MIMD架构:不同的核执行不同的线程(多指令),在内存的不同部分操作(多数据)多核是一个共享内存的多处理器:所有的核共享同一个内存。哈尔滨理工大学软件学院主讲:李金刚实现多核架构难点内存共享(同步访问)独立缓存(cache一致性)核之间的通信与系统其他部分的通信哈尔滨理工大学软件学院主讲:李金刚单核、多处理器及多核结构的简单对比CPU状态中断逻辑执行单元Cache(a)单核结构CPU状态中断逻辑执行单元CacheCPU状态中断逻辑执行单元Cache(b)多处理器结构CPU状态中断逻辑CPU状态中断逻辑执行单元Cache(c)超线程技术CPU状态中断逻辑执行单元CacheCPU状态中断逻辑执行单元Cache(d)多核体系结构哈尔滨理工大学软件学院主讲:李金刚单核、多处理器及多核结构的简单对比CPU状态中断逻辑CPU状态中断逻辑执行单元执行单元Cache(e)共享Cache的多核体系结构CPU状态中断逻辑CPU状态中断逻辑执行单元CacheCPU状态中断逻辑CPU状态中断逻辑执行单元Cache(f)采用超线程技术的多核体系结构哈尔滨理工大学软件学院主讲:李金刚超线程技术与多核体系结构的区别超线程技术是通过延迟隐藏的方法提高了处理器的性能,本质上,就是多个线程共享一个处理核。因此,采用超线程技术所获得的性能并不是真正意义上的并行,从而采用超线程技术多获得的性能提升将会随着应用程序以及硬件平台的不同而参差不齐。多核处理器是将两个甚至更多的独立执行核嵌入到一个处理器内部。每个指令序列(线程),都具有一个完整的硬件执行环境,所以,各线程之间就实现了真正意义上的并行。哈尔滨理工大学软件学院主讲:李金刚超线程技术与多核体系结构的区别两个线程在支持超线程技术的处理器上执行两个线程在双核处理器上并行执行哈尔滨理工大学软件学院主讲:李金刚超线程技术与多核体系结构的联系超线程技术:充分利用空闲CPU资源,在相同时间内完成更多工作.与多核技术相结合:给应用程序带来更大的优化空间,进而极大地提高系统的吞吐率。哈尔滨理工大学软件学院主讲:李金刚单核与多核平台上的多线程技术对比在面对多核体系结构开发应用程序的时候,只有有效地采用多线程技术并仔细分配各线程的工作负载才能达到最高性能。而单核平台上,多线程一般都当作是一种能够实现延迟隐藏的有效变程单核与多核平台下的开发必须采用不同的设计思想:主要体现在存储缓存(memorycaching)和线程优先级(threadpriority)上哈尔滨理工大学软件学院主讲:李金刚多核特点优势适合开发线程级并行改善了性价比结构复杂性的微小增加带来了性能大幅提升更好的EEP(EnergyEfficientPerformance)和扩展性核间高带宽和延迟缺点编程复杂哈尔滨理工大学软件学院主讲:李金刚多核的特点哈尔滨理工大学软件学院主讲:李金刚微处理器体系结构的新目标–每瓦性能哈尔滨理工大学软件学院主讲:李金刚Inter-CoreBusInterfacePentiumDwith975XChipsetMemoryControllerHubMemoryControllerHubI/OControllerHubI/OControllerHubDDR2MemoryDDR2MemoryPCIExpressx166