当前位置:文档之家› 多核处理器的发展前景和存在问题综述

多核处理器的发展前景和存在问题综述

多核处理器的发展前景和存在问题综述目录1.概述 (2)2.处理器的发展趋势 (2)从单核到多核 (3)同构多处理器与异构多处理器 (3)多核处理器发展面临的挑战 (4)多核与多线程技术 (4)3.多核处理器的高速缓存一致性问题 (4)增强一致性的基本方案 (5)目录式Proximity-aware 协议 (5)4.多核加速串行程序的主要方法 (8)并行编译器 (8)推测多线程 (9)基于线程的预执行机制 (9)5. 总结 (10)参考文献 (11)1. 概述在过去的几十年时间里,处理器的性能一直按照莫尔定律在发展。

提高处理器性能的基本方法就是不断提升主频。

从初期的几十MHz到不久前IBM的Power 6达到了,设计人员甚至想过提升到7G~8GHz。

不过,进入2002年以来,CPU 提升主频的困难越来越大,因为主频的提升带来了散热和功耗的大幅增加等问题。

在几年前,英特尔和AMD都调整了研究方向,开始研究在同一CPU中放置多个执行内核。

说到底,出现多核处理器的最根本原因是人们对计算能力永无止境的追求。

尽管这些年来,处理器从来没有停止过前进的脚步,但每一次性能的突破,换来的只是对更高性能的需求,特别是在油气勘探、气象预报、虚拟现实、人工智能等高度依赖于计算能力的场合,对性能的渴求更加迫切。

既然单处理器的发展已经到了瓶颈,而多核将会引领以后处理器发展的潮流,那么我们就看看多核处理器带给我们什么样的性能提升,多核处理器要全面应用到各个领域所需解决的问题。

多核的好处非常明显。

首先,由于是多个执行内核可以同时进行运算,因此可以显著提升计算能力,而每个内核的主频可以比以前低,因而总体功耗增加不大。

其次,与多CPU相比,多核处理器采用与单CPU相同的硬件架构,用户在提升计算能力的同时无需进行任何硬件上的改变,这对用户来说非常方便。

然而,多核处理器要发挥它的作用必须要解决许多问题,不像CPU的频率提升,无论如何你都可以从中受益,要从多核处理器中受益,首先在设计多核处理器时,要注意不同核心之间的通信与数据的一致性,另外,在软件层次上也需要对多核进行改进,以充分利用多核的性能。

本文结合了几篇最新的多核方面的论文和一些网上评论,从处理器的发展趋势,前景以及存在的挑战几个方面介绍了多核的相关问题。

文章第二部分主要介绍处理器的发展趋势,第三部分主要阐述多核的一个关键问题高速缓存一致性已经如何通过预取来提高带宽,第四部分主要阐述多核在提高串行程序性能方面的作用。

2. 处理器的发展趋势从单核到多核10年前的推出的Pentium系列处理器的时候,以微米的制程制造出来的100mhz左右的处理器,频率仅为10多瓦,如果按照理想的产品模型来计算,现在高达3G的奔腾D处理器功率也应该在十几瓦,可实际情况是,其功率已经达到了惊人的100瓦,这还只是普通的台式机所使用的CPU。

同时,Intel以前也曾承认最近几年每代处理器架构,其晶体管数目以2~3倍的数量在增加,而性能提升不超过一倍,如果照此下去,继续增加晶体管数量来提高CPU的性能,每一代CPU的功率就要提高约50%。

从技术上来说,单核心处理器的已经不能满足日益增长的对性能的要求了,多核心处理器也便越来越受到大家的青睐。

随着晶体管数量的增加,功率也会同比增加,性能却不能同比增加,可以说是得不偿失,但是如果我们把同样数量的处理器集合在一起,虽然功率仍会同比增加,性能却也能够同比增加,而且事实上,CPU并不都是满载运行的,我们可以通过技术,动态调整电压、频率,控制某一颗核心的开关,一般使用中,可以把功率降低,当工作负荷较大的时候,打开所有的核心,全负荷的投入工作,这种控制方法,能够让多核心处理器智能的“控制功率”[1]。

因此,为了在实际工作中能够获得更高性能的处理器,多核心处理器可能是我们唯一的选择,多核心也将取代单核心处理器,成为未来处理器发展的趋势。

多核处理器(Multi-core processor)是指在一块处理器芯片中集成两个或多个完整的计算引擎(内核)。

多核处理器具有控制逻辑简单、高主频、低延迟、低功耗、设计和验证周期短等优点。

从单核(Single-core)到多核(Multi-core) ,不仅仅是处理器核心的数量的增多,对处理器体系架构,计算机整体架构,I/O到操作系统、应用软件提出巨大的挑战。

同构多处理器与异构多处理器多核处理器的实质是在同一芯片中集成很多同样的处理核。

这一方法降低了设计的复杂性,减小了处理节点,并成为多核处理器发展的一种趋势。

多核处理器从结构上可以分为同构(homogenous)和异构(Heterogeneous)。

在同构多核结构中,每个核都是一样的,所处的地位相同;而在异构多核结构中,每个核不都是一样的,而且每个核完成的功能都不同,例如有主要处理计算的,有负责图形加速的(GPU—Graphic Processor Unit)等等。

而在AMD收购ATI之后,AMD向异构多核架构设计迈出了第一步;而之后Intel公司在其Core 2 Duo处理器和主板上集成了GMA X3000图形加速器[2]也表明Intel也开始在异构多核方向进行探索和研究。

同构多核还是异构多核都有其各自的优势和缺点,具体选择哪一种体系结构还要取决于具体的需求和成本等其他外部因素。

根据Amdahl定理,程序的加速比决定于串行部分的性能,所以,从理论上来看似乎异构微处理器的结构具有更好的性能[5],不过在实际设计中需要具体问题具体分析。

多核处理器发展面临的挑战多核处理器发展面对的一个重要的挑战就是如何保持高速缓存的一致性(Cache Coherence)。

高速缓存的引入带来了输入输出操作的一致性问题,这是因为从高速缓存得到的存储器视图可能会与从输入输出子系统得到的存储器视图不同。

在多核处理器中存在同样的问题,因为多个不同的处理器所保存的存储器视图是通过它们各自的高速缓存得到了,而它们各自的高速缓存之间的一致性是需要保持的。

多核处理器带来了体系结构上的挑战。

由于计算机需要考虑到如何让现有软件有效运行,所以代码的兼容性成为重要问题。

同时带来的问题还有以及怎么用有效的方式来表达并行性、存储器瓶颈和功耗的需求,以及当我们集成更多功能时如何做到芯片的容错设计等。

不过正是有了这些挑战,才会不断的推动多核技术不断向前发展,多核技术才会越来越成熟,应用越来越广泛。

多核与多线程技术多线程就是把单个内核上最大的性能发挥出来,而多核是把整个系统运算能力发挥到极至[4]。

在高性能处理器中,有很多性能本身其实没有被完全利用,而是被浪费了。

有了多线程,就能够把每个单一处理器的所有性能充分加以利用,再加上,就能提升总体性能。

所以多线程+多核技术在未来处理器发展中必定会扮演相当重要的角色。

3. 多核处理器的高速缓存一致性问题随着core的数量在多处理器芯片上的不断增加,cache的一致性(cache coherence)很快的变成了一个影响多核性能的主要问题。

采用何种Cache一致性模型和机制都将对CMP整体性能产生重要影响。

在传统多处理器系统结构中广泛采用的Cache一致性模型有: 顺序一致性模型、弱一致性模型、释放一致性模型等。

与之相关的Cache一致性机制主要有总线的侦听协议和基于目录的目录协议。

目前的CMP系统大多采用基于总线的侦听协议。

目前有一种新的基于目录的目录协议(Proximity-aware directory-based coherence protocol[5])也被运用起来,之后会详细介绍。

高速缓存的一致性需要系统保存关于数据访问不同cache的可能的地址,从而系统可以当新的消费者(consumer)请求数据拷贝的时候找到数据,当有写内存操作发生时(这块内存是共享内存),系统可以通知cache去做写操作。

增强一致性的基本方案多处理器和输入输出的一致性问题在很多情况下是类似的,但还是具有一些不同的特征,这些特征会影响相应的解决方案。

输入输出中,很少出现一个数据有多个副本的情况—这是要尽量避免的,而多处理器系统中的情况恰恰相反,在多个处理器系统上运行的程序会要求在多个高速缓存中有同一个数据副本。

支持高速缓存一致性的多处理器系统中,高速缓存提供共享数据的迁移和复制。

因为数据项何以迁入本地高速缓存并以透明的方式使用,所以一致性的高速缓存要提供数据迁移。

这样不但能减少访问远程共享数据项的延迟,而且可以减少对共享内存的带宽要求。

因为高速缓存在本地为被同时读取的共享数据做了备份,所以一致性的高速缓存也要为这些数据提供复制。

而副本可以减少访问延迟和读取共享数据时的竞争现象。

支持这种迁移和复制对于访问共享数据的性能来说是至关重要的。

因此,小规模多处理器系统并没有通过在软件中避免出现不连贯的现象解决这个问题,而是通过在硬件上引入一个协议维护高速缓存的一致性来解决该问题。

这个用于维护多个处理器一致性的协议成为高速缓存一致性协议(cache-coherence protocols)。

实现告诉缓存一致性协议的关键在于跟踪所有共享数据块的状态。

广泛采用的有两类协议,它们采用不同的技术跟踪共享数据:(1). 目录式(Directory-based)–把物理存储块的共享状态存放在一个地点,称之为目录。

(2). 监听式(Snoop-based)–每个含有物理存储器中数据块副本的高速缓存还要保留该数据块共享状态的副本,但是并不集中的保存状态。

高速缓存通常放在共享存储总线上,所以的高速缓存控制器对总线进行监听,来确定它们是否含有总线上请求的数据块副本。

目录式Proximity-aware 协议目录协议在分布式共享内存(DSM – Distributed Shared Memory)多处理器中已经被建议使用。

虽然目录协议已经在DSM中流行起来,但是它还没有在CMP总如何利用私有L2 cache得到很好的研究[5]。

Proximity-aware directory-based coherence protocol是一种目录式协议的实现方式(以下简称PAC)。

PAC是基于一项观察得到的,当cache line[超高速缓冲存储器线(路)]可以在多级缓存中处于共享状态的情况下,那么cache的home node 将不会保证和线上保持一致。

这种实现方式假设在芯片上的分布式目录的每个node上具有目录控制器和目录缓存。

缓存目录状态就是要减少内存访问目录的日常开销[5]。

PAC一致性,从另外一个方面来说,不需要知道共享者的数据映射的变更信息。

3.2.1PAC的体系结构:这个体系结构是由一个16核的多处理器芯片组成,核的排列是一个4*4的网孔(tile)。

每个tile具有一个core(该core有L1缓存), 一个L2缓存,一个目录控制器,一个目录缓存,一个网络开关,一个内存通道。

相关主题