多内核芯片将在市场中大展雄风
当前,多内核处理器和并行架构成为了行业的一个新热点,过去微处理器公司希望不断提高时钟频率和提供越来越多的指令级并发率(ILP)来提高微处理器的性能。
但这意味着在性能提高的同时,伴随而来的是越来越大的功耗和不断上升的成本,让这种方法让芯片跑得更快很久以前就已经开始得不偿失。
从1986年到2002年,微处理器性能每年提高52%,每18个月性能就翻一番。但到2006年,这一进步速度已下降到每年不足20%,因此今天微处理器性能翻番可能要花费5年时间。造成这一速度下降的具体原因有很多。最初,系统架构师不再能够从ILP技术中挖掘出更多的增益。他们最常采用的诀窍包括简单指令的预提取,但他们现在已被非常复杂的技术(如执行溢出和分支预测)所包围。在许多情况下,增加的复杂性已超过了增加的性能。用任务级和命令级并行性代替ILP已是获得更多增益的唯一途径。
功率是单内核处理器发展的等式已被改变的另一领域。在亚90纳米工艺节点上,有效功率密度(已经达到在核反应堆中发现的每平方厘米100W,并很快将上升到空间火箭喷嘴处发现的每平方厘米1000W)不是唯一的限制因素。由泄漏电流引起的静态功耗现在可能已占到芯片总功耗的40%。
目前业界大多数人都同意,多内核是一个必然的发展方向:多内核设计的主要挑战已经成功地被业界克服,实际开发大潮即将启动。多内核技术的发展背后有两大主要推动力。第一大推动力是:‘真实世界是并行的’这一认知已经变得很清晰。当然,台式计算机经常通过非常快速地转换顺序执行的任务,让用户误以为好几件任务正在并行执行。来自业界的显而易见的要求是更高的性能,从而导致更多的内核需要集成在一块芯片上,而这将影响到现有的编程模式。
多内核和并行处理系统传统上一直被认为是很难进行编程的,因为它要求专用工具和专家知识(‘唯一能够对该芯片编程的人是设计该芯片的架构工程师’)。这确实是为什么多内核处理器在历史上一直不成功的主要原因。不过,今天的产品(如picoChip的多内核DSP家族)可以利用基于标准的工具进行配置和编程,而且芯片设计师和编程人员可以很直观地理解这些工具。
但更加重要的是,当计算机科学家设法确定他们可用作通用构造块来开发更复杂程序的原型功能时,他们几乎总是发现这些构造块在本质上是并行工作的。而且,电子应用市场增长最迅速的部分(例如多媒体处理和数据压缩)正是这一并行性需求最显著的地方。
帮助设计师开发将这一应用需求和并行架构很自然地融合在一起的产品正是近年来已经取得许多技术进步的领域之一。英特尔和AMD开发的‘主流’处理器正在朝松散耦合的双内核或四内核处理器方向发展,这一架构允许在不大幅改变现有编程模式的情况下获得一些性能增益(大约提高2倍和4倍)。
目前已经在市场中销售的picoChip公司picoArray家族就是一种高效和方便的多内核产品,它是一个含有几百个不同种类处理器阵列的芯片,特别针对信号处理任务进行了优化。每个任务在一对一原则上分配给处理器,每个任务的处理可采用标准C或汇编进行编程。芯片的性能与处理器的数量成线性关系,最为关键的是,普通工程师也可以很容易地以很高的效率对该芯片进行编程。
picoArray在本质上允许快速和直观地实现并行计算任务(如无线基带处理和软件无线电),它也允许设计师充分利用这一异质多内核架构。与同质多内核架构相比,异质多内核架构可以提供更多的计算能力、更好的功耗特性和更小的硅片面积,业界很早就认可了异质多内核架构的这些优点,但一直缺乏直观的实用的设计开发工具。
除了不断提高的可用性和业界对许多计算任务内在并行本质的更多认可,多内核技术的采用又增添了一个新的推动力。尽管时钟频率现在已达到3GHz,集成的晶体管数量也已达到几亿门,但在过去的5年里,业内在单内核处理器方面已经完全失去了发展的动力。多内核架构提供的解决方案能够解决已导致这一现象的所有挑战。
像picoArray这样的并行架构可在不止一个层面解决功率问题。首先,它们已被证明在本质上是执行一个给定功能的高效能方法,尤其是如果它们是由多个不同的功能模块构成,而且每个功能模块又是根据特定的应用而设计。其次,一个紧凑的多内核架构可以更自然地适应现代电源管理技术,如时钟门控和局部电源关闭,即任何在其时没有参与动态处理过程的器件可以暂时关闭电源。这一技术使得我们有可能更智能地处理动态功耗和由于现代制造工艺而引起的静态泄漏电流问题。
多内核器件也有助于解决现代先进半导体工艺带来的另一个问题,即器件正变得越来越不可靠。尤其在65nm和45nm节点,“合格-失败”方法正让位于统计性能评估方法。此外,采用这些工艺制造的器件更易于产生硬错误和软错误。
多内核架构使这些器件可以更自然地采用冗余设计技术(有段时间常见于存储器生产中),它允许关闭器件中超出规格或错误的部分。一家微处理器供应商已经在销售其一款芯片的4内核、6内核和8内核版本,它们均基于一个8处理器设计。
功耗和呈统计变化的性能也已经对单内核处理器系统的近期发展产生了间接的影响,因为它限制了芯片制造商通过增加的时钟频率来提高性能的能力。目前最高的3GHz时钟频率已经被证明是处理器时钟频率的实际上限,而自1979年以来时钟频率一直是处理器制造商用于提高性能的实用方法。不过,并行架构维持了恢复连续工艺缩小的好处的承诺,因为它使得制造商能够实现每一代工艺都使每个芯片上的标准内核数量翻番的目标。
当然,使这些附加的内核做真正的工作是设计一个适当架构的问题,而这至少包括处理器之间通信架构和计算单元本身的设计。它们两者均平等地取决于设计流程和编程工具,它必须在单一环境内支持多种阵列大小。编程工具自动配置并行单元的低级别细节、自动为多个内核分配相应任务和配置互连的能力是至关重要的。一个便于使用的多内核设计环境如picoArray能够使编程人员将精力集中在设计元素本身,而不是放在它们到底是如何实现的精确细节上。这与另一种并行结构器件FPGA正好相反,FPGA设计工程师必须处理时序收敛和行为综合的细节。
这些问题正与过去数年中在计算领域已发生的另一巨大变化捆绑在一起:大多数处理性能现在被它们转移数据的能力而不是计算能力所限制。一次DRAM读写可能要花费200个时钟周期,而一次浮点乘法经常只需要4个时钟周期就能实现。成本也不仅仅只用时间来衡量,使用本地寄存器的效率比读写全局存储器高一个数量级,而这对能耗有限制的环境来说可能是一个关键。
PicoArray是一个含有几百个异质处理器和存储单元(或‘内核’)阵列的芯片,它专门针对信号处理任务而优化。该阵列是异质的,这些不同种类的内核分别适合不同的任务,但基本的构造模块是一个16位的数字信号处理器。这是有意的,因为带本地存储器、乘加器和哈佛结构的16位处理器非常传统和易于编程。多内核架构的创新和力量是其互连交换结构和编程模式:每个单元都有一个独特的已获专利的互连经由一个双缓冲接口对它进行服务,系统架构设计师在软件编译时对它进行精确配置。
多个独立的任务在一对一基础上分配给每个处理器,每个处理器的处理过程采用标准ANSI C或汇编语言进行编程。每个互连由工程师进行描述和配置,这就允许工程师根据特定应用的需求对通信进行优化。
在本质上,编程模式是一个方块图,每个方块是自包含的,并通过明确定义的信号互连。理论范例是“顺序通信”,但“适用于DSP的对象导向编程”是另一个描述,每个处理程序封装在一个单独的DSP内,它可在该DSP上独立执行,并仅按定义好的方式通过严格类型的链接与其它DSP进行通信。这使得开发过程可以更快,因为集成和验证变得非常容易。
因此,多内核系统的设计师可以通过选择正确的通信架构、实现本地和全局寄存器资源的正确平衡解决许多问题。一个高效的通信交换结构甚至能够通过内核之间的直接数据传输取代存储器读写。
有些架构的关键瓶颈之一已经是互连带宽,或更准确地说是信号流的允许复杂度。例如,一些架构使用“NEWS”或“最近的邻居”连接,这很快就限制了处理器的使用。而在picoArray架构下,每个阵列包括一个32位通信链接的正方形网孔,它在水平和垂直线交汇处采用了开关矩阵单元。每个执行单元都有到网孔的多端口通道。通过在编译时定义开关矩阵的状态,网孔可配置成允许各单元之间进行任何通信,包括多路结构如扇出和扇入。
这一方法可在各单元之间提供专有的确定性通信,每个单元被视为运行独立的处理程序。由于这些单元的行为表现像“提供者和消费者”,即自动处于等待状态直到它们遇到请求时某个结果变成有效,从编程的角度来看,它们就可被当作异步功能调用。此时不需要任何形式的总线仲裁,从而可在硅片面积和程序执行速度两方面降低通信开销。
这一通信资源和设计基础架构的结合意味着,任务可以模块化方式进行编程、验证和调试,因为我们认识到,尽管系统是集成的,但其各个组成部分将继续与它们被单独验证时一样工作(亦即“你仿真的就是你所得到的”)。这些相同的特性意味着,picoArray架构随着处理单元数量的增加,可提供绝对线性性能改善:随着半导体工艺一代一代地向前发展,这一架构可有效地替代传统的时钟频率路线。
多内核架构被呼吁解决的最终问题是一个人性化问题。许多年来,芯片已变得如此巨大以致于设计工程师不可能再从头开始理解它们,并设计或使用它们。所以设计师和编程人员已经要依靠越来越高的抽象级来帮助理解。
但在65nm节点及以下,这也已经变得不可能。信号完整性、时钟抖动和许多其它小范围约束已经变成很突出的问题,并已使得设计工程师发现不可能再从头开始或基于上一代产品的抽象描述设计新的大型芯片。不过,多内核架构提供了一种新的抽象模型,它允许设计工程师充分利用90nm以下芯片提供的数量庞大的晶体管。而且,就像我们已经看到的那样,当我们设计更小的子单元时,只要该设计随后能借助一个精心设计的通信基础架构‘扩大’,设计、验证和确认都可能变得更容易。
结论
自Jack Kilby和Bob Noyce分别在上世纪50年代后期提出硅平面工艺以来,半导体工业一直在“更小和更快”的鼓声中前进。但到了今天,传统的推动力量(片上更多的晶体管和更高的时钟速度)已经用尽了。现在设计师需要开始考虑“更智能”,即便它意味着要超过人类几十年来积累的智慧。随着象picoArray这样的带几百个内核的产品进入批量生产阶段,以及它可被工程师采用在主流应用(如3G和WiMAX基带)处理中获得广泛应用的标准工具轻松进行编程,多内核架构在今天和未来的这一新工业秩序中看来将必然起一个关键的作用。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论