胡苏太
受布线延迟和功耗上升的双重影响,处理器技术正处于一个微妙的转折期。一方面,物理工艺至少还将遵照摩尔定律延续十年,这就意味着处理器的功能部件还将不断膨胀,但如何用充足的指令和数据充满这些计算部件,持续地提高有效性能面临着重重困难;另一方面,晶体管数量的增加使功耗的增长超过了性能的增长,给处理器的可靠工作带来了致命性的影响。
业内普遍认识到,应该研究新型的微处理器架构以适应性能增长和功耗下降同时发生这样看似矛盾的需求。单芯片多处理器(CMP,俗称多核)是一条可行之路。而围绕着多核的一系列技术问题也成为近期业界研究的重点。
本期专题我们约请了江南计算技术研究所的专家介绍相关的技术发展,内容涉及新型多核处理器体系结构、多核的关键技术、多核对软件和应用方面的影响等,另外也介绍了市售的典型多核处理器产品的技术情况。以期对读者了解多核技术的发展有所帮助。
通用微处理器设计遭遇挑战
传统的通用微处理器设计主要采用冯·诺依曼模型,利用指令级并行性(ILP)开发资源集中的单处理器单指令流的芯片。从上世纪70年代到90年代,业界一直在为提高微处理器的指令级并行度做不懈的努力。
一直以来,开发ILP 主要有两种方法: 一是采用超流水线结构提高主频,增加每秒钟执行的指令数。另一种是采用超标量或超长指令字(VLIW)结构增加指令发射和执行的并行度,每个周期发射多条指令到多个功能部件上执行,从而提高每个时钟周期执行的指令数。当前大多数超标量处理器的发射宽度一般为4-6发射。
但是,随着半导体工艺进入深亚微米,线延迟超过门延迟,使得在传统结构上提高ILP 变得越来越困难。同时,随着芯片集成度的增加和线宽变窄,设计、验证和测试变得越来越困难; 近几年,提高处理器时钟虽然促进了性能的提高,但处理器功耗越来越大,其增长率甚至超过性能的增长,限制了单处理器性能按摩尔定律增长。
另外,未来的主流应用需要处理器具备同时执行更多条指令的能力,但是对单一控制线程的依赖限制了多数应用可提取的并行性,而主流商业应用,如在线数据库事务处理(Online Database Transaction)与网络服务(如Web服务器)等,一般具有较高的线程级并行性(TLP,Thread Level Parallelism),传统处理器设计已经不能满足应用的需要。
从几种传统高性能处理器结构的发展来看,超标量处理器在单个时钟周期内可以发射执行多条指令。为了使这多条指令可以并行执行,超标量处理器一般具有多个功能部件,如多个定点运算部件、浮点运算部件和Load/Store部件等。目前流行的桌面微处理器,如Intel 奔腾4、AMD Athlon64系列都属于典型的超标量处理器。超标量处理器提升性能的关键在于通过硬件本身尽可能多地从应用中寻找指令级并行性,但是它只能从发掘单个线程的指令级并行性来提高对微处理器资源的利用率,因此对具有较高线程级并行性且较低指令级并行性的商业应用,超标量处理器无法体现其性能优势。当超标量处理器无法在某个时钟周期找到足够的指令级并行度,那么它就不能在这个周期填满全部指令发射槽,这样就造成了所谓水平浪费(Horizontal Waste); 如果超标量处理器由于Cache未命中或访问内存延迟而造成随后某些时钟周期中出现空置的指令发射槽,那么就产生了所谓垂直浪费(Vertical Waste)。
超长指令字处理器也是一种可以在单个时钟周期内发射多条指令的处理器。与超标量处理器不同,它主要是通过编译器来寻找指令级并行性,然后编码成一条可同时发射的多条微指令组合而成的超长指令。与超标量处理器一样,VLIW也无法避免垂直与水平浪费的出现。
因此,传统微处理器结构存在着如何进一步提高指令并行度、充分利用片上硬件资源和如何适应变化着的应用的技术挑战。
解决办法
集成电路制造技术的快速发展使得芯片上的晶体管集成度不断提高,据2005年ITRS(International Technology Roadmap for Semiconductors,国际半导体技术路线图)的预测(表1),单个硅芯片上目前已经可以集成11亿个晶体管,到2010年,单个芯片上的晶体管数目将达到22亿个。
这就意味着,在一个芯片内可以集成更多的功能部件,单个微处理器的峰值性能将大大提高。但是,如何同时为芯片内的几十个、甚至上百个功能部件提供足够的指令和数据,使得执行部件尽可能地“繁忙”,以达到较高的持续性能,仍然是微处理器设计中的一大难题。同时,芯片面积的增加,使得芯片上全局信号的线延迟变得更长,也约束了芯片频率进一步的提升。同时伴随着频率的提升,微处理器的功耗和发热量也随着不断攀升,由此会带来系统成本、散热、运行稳定性等一系列问题。而且频率快速提高,使运算器与存储器之间的速度鸿沟不断扩大,这也会使计算机系统的效率下降。传统处理器设计中大多通过并发执行单个串行程序中的多条指令来提取并行性,但为了发现这些指令,传统处理器设计一般采用一些复杂的技术,如乱序指令执行、猜测执行和硬件分支预测等。但硬件过于复杂,不仅难以保证结构的正确性,而且也难以优化流水线和电路,实现更高的主频。
业界已经意识到,随着集成电路技术的发展,要想使微处理器性能继续按摩尔定律推进,必须研究新的微架构,以适应这种变化。一些颇具实力的大学和研究机构纷纷提出了自己的方案,如“同时多线程”(SMT)、可重构多处理机、PIM(Processors In Memory),以及“单芯片多处理器”(CMP,Chip Multi-Processor)。进入21世纪,美国主要计算机制造厂商开始开发基于上述各种微架构的处理器。其中在高性能微处理器中使用最多的就是SMT和CMP。CMP又以其良好的可扩展性、可重用性,以及在较低的工作频率,实现较高的聚合性能而备受青睐,CMP的提出,正是可以利用芯片上的有效面积来进一步提升芯片性能的有效方法之一。
以多核为中心
CMP即俗称的“多核”,即在一个处理器芯片(Chip)内集成了多个处理器核心(Core),使用高速片内互连结构进行连接。核间通过共享总线、Cache、存储器或命令缓冲进行通信。多核之间不但互连结构多种多样,不同处理器芯片中核本身也可以采用不同的结构。比如标量结构、超标量结构,甚至是SMT结构(也就是CMT,Chip Multi-Threading)。而同一处理器芯片内部可以采用完全相同结构的核心,称为“同构单芯片多处理器”(Homogeneous CMP,或称为“同构多核处理器”); 相对的,也可以采用不同结构的核心,称为“异构单芯片多处理器”(Heterogeneous CMP,或称为“异构多核处理器”)。
CMP采用了相对简单的单线程微处理器作为处理器核心,主要有以下优点:
● 高主频: CMP中绝大部分信号局限于处理器核心内,包含极少的全局信号,因此线延迟对其影响比较小,可以实现高主频。
● 设计和验证周期短: 微处理器厂商一般采用现有的成熟单核处理器作为处理器核心,从而可缩短设计和验证周期,节省研发成本。
● 控制逻辑简单,扩展性好,易于实现。
● 功耗低: 通过动态调节电压/频率、负载优化分布等,可有效降低功耗。
● 通信延迟低: CMP采用共享Cache或者内存的方式,多线程的通信延迟较低。
多核芯片是发展摩尔定律的一条途径,能使用户在一个芯片上得到更高的性能。芯片制造商,诸如AMD、IBM、英特尔和Sun,现在都为服务器、桌面电脑和笔记本电脑提供多核芯片。将来厂商会通过提高单核的速度来改善多核芯片的性能。在今后几年里,芯片的特征工艺尺寸将从现在的90nm降低到45nm,因此将有更大的空间部署更多的内核。服务器、桌面系统、低价位的PC今后将出现向多核芯片广泛的过渡。这将给半导体业界足够时间利用新工艺和新材料改进单核芯片的技术。
不过,双核心及多核心设计也会带来一些潜在的问题:
一是内存与系统总线的频宽可能因此不足,这将会直接影响其效能表现。
二是因维持与单核心近似的功耗规格,双核心及多核心处理器的频率普遍较低,如果操作系统和应用程序无法有效地并行化,很可能导致效能反而较差。
三是双核心处理器如何实现电源管理功能,更好地降低功耗。
四是相较于处理器的成本,现有以处理器数目为基础的软件授权方式,以及软件厂商如何定义“处理器”,更是迫切的问题,因为如果采用核心数目作为授权的基础,将会大幅增加导入双核心及多核心处理器的实际使用成本。如果这个问题不解决,将会严重影响使用者采用新型处理器的意愿,这也是在技术发展的背后,隐而不现的非技术性因素。
随着技术的进步,相信上述问题将逐步得到解决,多核处理器的发展前景是光明的。在未来10年内,并行处理(Parallel Processing)、虚拟化平台(Virtual Platforms)以及硅光学组件(Photonics)将成为多核处理器最重要的核心技术。未来的计算机平台将会具备以下的特色:
● 数十或数以百计的核心及线程;
● 芯片与芯片之间的数据传输频宽,将高达数百Gbps;
● 数以百亿计的晶体管数目;
● 适合语音及视频的应用;
● 类似人类的行为模式;
● 平台完全虚拟化;
● 高度并行化与可程序化。