两年前,天河1A在超级计算机500强榜单上称雄,将中国第一次带到了高性能计算领域的巅峰,随着天河1A的崛起,混合加速架构在超大规模并行计算的应用也一同开始觉醒。两年后,架构革新的天河2号上演了王者归来的好戏,同时也将英特尔Xeon Phi协处理器带入了我们的视线。超级计算机为何钟爱加速卡?Xeon Phi与NVIDIA Tesla有何不同?它会成为下一轮变革的起点吗?
在2007年6月以前,加速卡对于超级计算机来说还是只闻其声不见其人的概念产品,在当时的超级计算机五百强榜单上,使用加速卡的系统数量还停留在0,所有的系统都采用了暴力堆彻CPU核心的架构。在一家名不见经传、雇员人数尚不到10人的英国小公司Clear Speed推动下,加速卡第一次进入了超级计算机市场。业界巨头NVIDIA随后跟进将前浪Clear Speed拍死在沙滩上,高性能计算市场迎来第一轮井喷,只花了5年时间榜单上就已有超过6 0台超级计算机转向异构体系。
异构体系迅速收获众多认可,原因是多方面的,其中的重要一环,便是加速卡具备传统CPU无法比拟的优势,分析2011年登顶的天河一号以及被它击败的美洲虎就不难找出答案。美洲虎基于CrayXT5架构,是一个由纯CPU组建的超级计算机,CPU核心数目接近22.5万个,虽然美洲虎成功地在快速洗牌的五百强榜单前三甲停留了两年之久,但是它的能耗也高达700万瓦特,为它供电、冷却都要花费不菲开销,而天河一号则是CPU+GPU的异构体系,CPU核心数目只有18.6万个,但却搭配了七千多张Tesla 2050加速卡,运算速度领先美洲虎42%,但是功耗却只有400万瓦特。如果天河一号放弃采用异构而继续坚守传统纯CPU架构的话,要达到同等性能,核心数量需超过30万,这意味着两倍的占地面积和四倍的功耗,等同于更大的运营开销。对比之下可以发现,异构系统能够以更少的核心数量,实现更强大的运算能力以及更高的能耗效率,看到如此显著的优势,就不难理解为何有越来越多的超级计算机采用异构体系,开始引入加速卡和协处理器了。
DEC公司于1992年所期望的CPU发展进程,当时预期2017年会出现20发射的CPU。
现代高性能CPU架构的技术,许多都脱胎于上世纪八九十年代、甚至是六七十年代的研究,经过了充足的时间沉淀,是一个发展较为成熟的领域,在众多高性能CPU架构相互厮杀的战场上,加速卡何以能够后发制人抢得一席之地?这是一个值得说道的话题。翻阅上世纪八十年代末期至九十年代中期的资料便不难发现,当时学术界与工业界热衷于具备宽发射、长流水、乱序执行、分支预测能力的CPU,认定这将是未来的发展方向,这些技术的研究热火朝天,有的学者甚至乐观地展望,未来将出现每周期15发射以上的惊人前端发射宽度。这样激进的宽发射CPU当然并未成为现实,作为对比,Haswell架构的发射宽度为4(因为可以发射融合微指令,所以实际等效发射宽度稍高),安腾2架构在编译器调度的帮助下也只能做到12发射。这种乐观预期的存在很好地反映了当年的时代局限,九十年代微架构设计的主流观点是,若想提高计算速度,加强CPU核心的执行能力是重点。在这样的指导思想下,著名的Intel P6微架构诞生了,双发射+长流水+乱序执行+分支预测一应俱全,核心频率越来越高,逻辑越来越复杂,直至Net Burst架构的高频奔腾4芯片沉沙折戟。
重新审视当时的失败原因,主要有两个。其一,功耗墙(power wall)。用以加强CPU核心执行能力的这些技术将大幅推高功耗,以乱序执行为例,每一条指令的发射和执行都需要经过一整套逻辑的检查以确保流程正确,并占用额外的寄存器,这意味着每一条指令的执行都需要更多功耗。这种愈发激进的CPU设计在Netburst架构时代迎来顶峰,随后狠狠地撞上了功耗墙。前英特尔副总裁Patrick Gelsinger曾在2001年的国际固态电子电路会议上发表主题演讲,警告说CPU的功耗密度如果继续提高,不出几年就将摆脱现有一切冷却手段的束缚,彻底失去控制。更加不妙的是,仿真结果揭示,即便倾尽全力,给定无限多的芯片面积预算去设计一个发射宽度远超当下,配备极强的乱序执行能力和分支预测器的CPU,其整数指令发射能力也不过提高区区几倍,这样的设计思路下,改进潜力已经不大。
其二,存储墙(memory wall)。愈发激进的CPU设计将CPU核心的执行速度提得很高,存储器系统已经越来越力不从心。提供足够大的存储容量和提供足够快的响应速度在本质上是矛盾的,冯·诺依曼早在1945年就断言容量和速度的需求无法同时满足,这位大师级人物不幸再度言中,存储器系统越来越难以用足够快的速度交付和接受指令与数据,引发了架构设计者们的担忧。DEC公司Alpha架构的首席架构师理查德·赛特斯在1996年的《微处理器报告》上撰写了一篇标题为《瓶颈在内存,愚蠢!》的惊世雄文,据他披露的测试结果,当时出色的乱序超标量处理器若是管线填满,理论上每周期可以完成两条左右的指令,而实际执行时每四到五个周期才会有一条指令完成,落差几乎达到十倍,花费学术界与工业界无数心血研究测试的超标量乱序执行并未如想象中那样强大,优势几成泡影。这项测试非常有力地证明,整个执行模式存在极其严重的瓶颈,制约了整个CPU的性能,而这个瓶颈就在于存储访问速度。花费如此大的精力设计的高性能CPU,却花费了90%的时间等待存储器系统的响应,这不能不说是一种莫大的讽刺。赛特斯不无悲观地认为,在未来的处理器微架构设计中,存储器系统将成为唯一的关键因素。
面对这些挑战,业内较有远见的架构师已经开始讨论另一种全新的架构设计方式,他们设想抛弃高能耗的复杂乱序执行核心,转而采用设计精巧简单、功耗较低的小核心,将设计重点放在提高对存储器系统的延迟容忍上,依靠多核心多线程并行执行来躲避存储器系统的延迟—这便是后来NVIDIAGPGPU的核心设计理念之一。无独有偶,英特尔XeonPhi也有相同的考虑。基于这种全新的设计思路,异构加速卡才得以异军突起。