多核技术就是在处理器上拥有两个或更多一样功能的处理器核心,即将数个物理处理器核心整合人一个内核中。数个处理核心在共享芯片组存储界面的同时,可以完全独立地完成各自地工作,从而能在平衡功耗的基础上极大地提高CPU性能。2005年4月18日,英特尔全球同步首发基于双核技术桌面产品英特尔奔腾D处理器,正式揭开x86处理器多核时代。如今多核技术在PC机上已经得到极为广泛的普及。
SMP:指在两个相似(或相同)的处理器通过一条高速通道连接,并且共享外设和存 储器空间的体系结构上,运行同一个操作系统实例,上层应用对于多CPU、线程多实例无需了解,由操作系统自动协调运行,并管理共享资源。
AMP:在一个由两颗或者多颗相同或者不同的处理器通过各种通信通道连接(比如可以将一个MCU(Main Control Unit)和一个DSP集成在一起) ,在逻辑上共享或者独占外设、存储器的体系架构上,运行不同的操作系统实例,相互之间通过TIPC(Transparent Inter-Process Communication)等机制通讯。往往是用于主控处理单元与各种协处理器协同工作的情形。
多核:是一种处理器的结构,在一个芯片上集成了多个处理器核心。一般各个核有独立的L1cache,但共享L2 Cache,同时,也共享存储器、外设。
SMT(HT):同时多线程技术(在intel称为超线程技术),是在CPU中提供多个半独立的处理器单元,其中寄存器独立,但共享L1 cache和ALU单元,其目的是提高ALU的利用率,提升CPU效率。从物理上来看,是一个类多CPU体系。当然各芯片厂家实现方案可能不同。
多处理器:由多颗相同或者不同的独立完整的CPU通过通信通道连接,可共享也可独立拥有存储器、外设。
AMP:每个核运行独立的OS,或者同种OS的独立实例;
SMP:一个OS的单一实例同时管理所有CPU,所有应用可以浮动到其中任一个去运行;
BMP:一个OS的单一实例同时管理所有CPU,但可以将某些应用或者线程锁定在指定的CPU上运行,实际上是SMP的一种特例;
1 架构方面:
提升软件并行性
算法级(使用并行算法、使用OpenMP编程)
任务级(流水线、多实例)
合理规划资源分配(中断资源分配、处理器分配)
2 编程方面:
选用适当的同步手段
控制锁粒度
充分认识多核带来的程序并发性提高(同时多任务运行、关中断将不确保安全的同步)
3 下层支撑平台提供支持:
多种类型同步手段(spinLock,读写锁、全局中断锁…)
快速核间通讯手段(IPI机制)
并发任务管理,二级调度任务间的同步性
多核处理器面临的挑战之一就是处理器能耗的极限。性能增强了,能量消耗却不能增加。由于今天的能耗已经处于一个相当高的水平,需要避免将CPU做成一个“小型核电厂”,所以双甚至多核处理器的能耗问题将是多核处理器制造商仔细考虑的事情。
另外,由于多内核芯片将两个或更多的独立CPU核心集成在一块芯片上,数据在这些CPU核心之间移动时,可能有不同的应用程序争夺同一条I/0路径,这是可能出现的性能瓶颈。目前英尔在研的csl(CommonSystemInterconn高速互联总线可以实现处理器内核与芯片组以点对点的方式连接,而CSI总线还可以实现不同速率内核的互联,这与目前的双前端总线只能支持同频内核形成了鲜明的反差。
当用户在体会双核带来的优越性能的时候,Intel公司却又宣布未来将推出集成10核甚至100核的处理器。对于高端用户而言,多核处理器的优势是显而易见的,多任务处理、数据分析和网络分流等对计算性能要求较高的应用是多核服务器的主流应用。
与目前主流的双核平台相比,多核服务器平台提供更多内存和I/0,这样大大减少了通信瓶颈并优化了性能,内存和I/0共同为每一个处理器提供相关数据,从而使所有内核能够以速度执行计算负载。运行虚拟化技术,在同一个服务器上能够运行多种应用软件,因此能够充分地利用服务器的容量。系统能够让用户将应用整合到数量更少、更加强大的服务器上,并且控制数据中心的能源开销。
科研单位、企业等部门需要大量数据运算,对于性能有很高的要求,而多核技术在数据处理上占有很大的优势;进行大型数据库应用的服务器,往往对于数据访问、调用与更改等操作的优化有很高的要求,多核处理器的采用是个不错的助力;运行Web网站的服务器,大流量的数据也带来了处理性能的高要求,多核会更具优势。可见,多核服务器可为企业级应用,可以定位在数据库服务器、邮件服务器以及ERP应用等,在很多的应用领域上已经或即将得到用户的认可,诸如海量数据处理、大规模网络应用、复杂科学计算及大型图形建模上,满足企业在数据库、创作3D图像、数学分析和网络服务等多线程多任务的处理需求等领域。双核和多核的优势也会在其中得到体现。多核的虚拟化技术适用于各类企业,特别是数据密集型行业,例如金融服务、医疗、航空和零售业。这些企业正在寻求计算资源利用率的化。
但多核必然有些问题无法回避,因为多核处理器的一个基本思路就是将计算任务经过分解,然后并行执行,那怎样将多任务有效地分解,目前在软件方面还存在较大的难度。如果只是单纯增加内核数,如果处理不当,很有可能会出现性能反而下降的问题。如何开发出支持多内核处理器的多线程软件。目前的并行处理技术虽然可以适应多内核的处理环境,但是当内核多达lO个甚至更多的时候,现有的并行处理技术必须进行修正才能满足需要。否则在存取和处理数据时很可能导致错误的数据返回值。这主要是由于当多个线程同时存取内存数据时彼此很可能发生冲突。英特尔对此提出的解决方案是增加事务内存(Transactional Memory),以解决多线程同时读写内存时的冲突,而通过Java语言作为例子证实了这种方法的正确性。’
从以前几代处理器的结构来看,处理器内核的晶体管数量是逐步上升的,处理能力也不断增强。尽管随着工艺的进步,在单位面积上所能部署的晶体管数量还会继续上升(ITRS预测到2010年单芯片上品体管数量将达到22亿个),但是晶体管数量的上升有一定的限度,尤其是8内核以上处理器诞生时,过于复杂的内核其部署所占的空间和功耗等问题也越来越不容忽视。同时,多核对应用带来的影响也将越来越不同。对于单纯的诸如Word这种软件,更多核处器的性能提升可能将越来越不明显。但是在一些新兴的领域,比如对多媒体信息尤其是在视频信息中进行搜索、处理时以及视频挖掘等,是多核技术今后要重点面对的问题。同时运行越多的程序,多核的性能表现就越强。
从多核到很多核时代,走向异构多核化是一个很值得关注的趋势。一方面功能强大的内核其结构必然复杂,不但大马拉小车,而且执行特定任务的时候效率会受影响,功耗也难以控制。而对于一些特定的任务,比如XML、多媒体信息、TCP协议处理等,一些专用硬件在性能和功耗方面很可能会比通用处理器更有优势。有专家也提到,将计算机常用的一些功能不断集成到处理器,用强大的硬件来处理软件,也就是将软件固化到处理器上。
多核时代的到来将改变人们的生活,降低经济生活的成本,但也存在着问题。提高效率不是单纯通过增加“核”的数量而实现的,要多方面配合,尤其是客户端软件开发商,要重新编写代码。拭目以待多核时代的来临。