null多核处理器与多核编程
多核处理器与多核编程
2009年1月12日微处理器发展史微处理器发展史1945年,世界上第一台全自动电子数字计算机ENIAC
计算机的发展按照硬件工艺可以分为
第一代(1946~1958):电子管数字计算机。
第二代(1958~1964):晶体管数字计算机。
第三代(1964~1971):集成电路数字计算机。
第四代(1971年以后):大规模集成电路数字计算机。
微处理器
第一代微处理器(4位):英特尔4004,8008
第二代微处理器(8位):采用NMOS工艺,采用汇编语言、BASIC、Fortran编程,使用单用户操作系统。如英特尔8080,8085。
第三代微处理器(16位):以1978年英特尔的8086出现为起点。
第四代微处理器(32位):运算模式包括实模式、保护模式和“虚拟86”。英特尔80386 DX, 80486, Pentium 4…
并行计算机并行计算机由一组处理单元组成,这组处理单元通过相互之间的通信与协作,以更快的速度共同完成一项大规模的计算任务。
出现背景:
60年代初期,晶体管以及磁芯存储器的出现,处理单元变得越来越小,存储器也更加小巧和廉价。出现规模不大的共享存储多处理器系统,即大型主机(Mainframe)。
60 年代末期,同一个处理器开始设置多个功能相同的功能单元,流水线技术也出现了,在处理器内部的应用大大提高了并行计算机系统的性能。
两个最主要的组成部分
计算节点
节点间的通信与协作机制并行计算机的弗林分类并行计算机的弗林分类Flynn根据指令流和数据流的不同组织方式,把计算机系统的结构分为以下四类:
单指令流单数据流(Single Instruction stream Single Data stream, SISD)
单指令流多数据流(Single Instruction stream Multiple Data stream, SIMD)
多指令流单数据流(Multiple Instruction stream Single Data stream, MISD)
多指令流多数据流(Multiple Instruction stream Multiple Data stream, MISD)并行计算机系统结构分类并行计算机系统结构分类分布式存储器的SIMD处理机
含有多个同样结构的处理单元(PE),通过寻径网络以一定方式互相连接。每个PE有各自的本地存储器(LM)。
向量超级计算机(共享式存储器SIMD)
集中设置存储器,共享的多个并行存储器通过对准网络与各处理单元PE相连。在处理单元数目不太大的情况下很理想。
对称多处理器(SMP)
一个计算机上汇集了一组处理器,各处理器之间共享内存子系统以及总线结构。
并行向量处理机(PVP)
集群计算机片上多核处理器架构片上多核处理器架构片上多核处理器(Chip Multi-Processor,CMP)就是将多个计算内核集成在一个处理器芯片中,从而提高计算能力。
按计算内核的对等与否,CMP可分为同构多核和异构多核
CPU核心数据共享与同步
总线共享Cache结构:每个CPU内核拥有共享的二级或三级Cache,用于保存比较常用的数据,并通过连接核心的总线进行通信。
基于片上互连的结构:每个CPU核心具有独立的处理单元和Cache,各个CPU核心通过交叉开关或片上网络等方式连接在一起。
给程序开发者带来的挑战芯片组对多核的支持——固件芯片组对多核的支持——固件固件是一种嵌入到硬件设备中的软件。它通常烧写在flash等介质中,可以被当作一个二进制映像文件由用户从硬件设备中调用。
固件是在集成电路只读存储器中的计算机程序,是可擦写可编程芯片,其上的程序可以通过专门的外部硬件进行修改,但是不能被一般的应用程序改动。 芯片组对多核的支持——固件(续)芯片组对多核的支持——固件(续)BIOS(Basic Input/Output System)
作为系统硬件和操作系统之间的抽象层,主要用来初始化和配置系统的硬件,启动操作系统以及提供对系统设备底层的通讯。
BIOS是连接CPU、芯片组和操作系统的固件,是IBM兼容计算机中启动时调用的固件代码。
由两部分组成:上电自举即POST(Power On Self Test)和在线的中断服务(主要由legacy 操作系统使用)。
计算机加电时BIOS从flash、PROM或是EPROM中启动并完成初始化,进行加电自检,对硬盘,内存,显卡,主板等硬件进行扫描检查,然后它将自己从BIOS内存空间中解压到系统的内存空间中,并开始从那里运行。
正在被以EFI(Extensible Firmware Interface,可扩展固件接口)为代
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
的新一代技术所取代。芯片组对多核的支持——固件(续2)芯片组对多核的支持——固件(续2)EFI(可扩展固件接口)
在操作系统与平台固件之间的软件接口。
EFI
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
定义的接口包括包含平台 信息的数据表和启动时及启动后的 服务。
EFI启动管理器被用来选择装载操 作系统,不再需要专门的启动装载 器机制辅助。
Framework是一种固件的架构, 它是EFI固件接口的一种实现,用 来完全替代传统的BIOS。EFI对多核支持EFI对多核支持在Framework中定义了两类处理器
BSP(boot strap processor),执行EFI的初始化代码,设置APIC环境,建立系统范围的数据结构,开始并初始化AP。
AP (application processor),在系统上电或重启之后,AP会自己进行一个简单的设置,然后就等待BSP发出Startup信号。
Framework在多核计算机中初始化过程如下:
SEC:从实模式切换到保护模式,处理不同的重启事件、对每个处理器进行缓存设置。
PEI:做尽量少的硬件初始化,而把更多的留给DXE。
DXE:对所有可用的硬件设备进行初始化,为建立控制台和启动操作系统提供必要的服务。
BDS:建立所需的控制台设备,在输出控制台上显示用户界面。
当系统最后选择启动到操作系统时,EFI需要提交包括处理器在内的有关信息。
操作系统对多核处理器的支持方法操作系统对多核处理器的支持方法调度与中断
对任务的分配进行优化。使同一应用程序的任务尽量在一个核上执行。
对任务的共享数据优化。由于CMP体系结构共享二级缓存,可以考虑改变任务在内存中的数据分布,使任务在执行时尽量增加二级缓存的命中率。
对任务的负载均衡优化。当任务在调度时,出现了负载不均衡,考虑将较忙处理器中与其他任务最不相关的任务迁移,以达到数据的冲突量小。
输入输出系统
存储管理与文件系统
虚拟化技术
平台虚拟化
资源虚拟化