为了在单位面积下塞更多的晶体管,英特尔甚至已经准备堆叠两层了,但这是正确的方向吗?摩尔定律将终结的燃眉之急如何解?
随着芯片工艺制程逐渐进入瓶颈,计算机设计者越来越关注摩尔定律的终结。近半个世纪以来,行业依靠「逻辑电路的密度每两年翻一番」这一论断,但如果不再这样了,那意味着什么呢?这可能意味着用户对软件的思考方式发生根本性改变。
半导体设计领域的领先研究人员指出:尽管逻辑密度正在逼近物理极限,但这并不一定意味着摩尔定律的终结。戈登 · 摩尔在 1975 年国际电子器件会议(IEDM)上曾经预测:除了定期减小晶体管尺寸和互连间距以外,芯片尺寸增大和电路设计改进也是该缩放过程的重要部分。
在去年 9 月举办的 IEEE 国际设备和系统路线图小组 (IRDS) 的线上会议中,会议主席、英特尔技术策略总监 Paolo Gargini 指出:尽管戈登曾明确预测过,但人们仍然只关注维度缩放。这就是人们对下一个技术节点表示怀疑的原因。我们看似处于危机之中,但事实并非如此,因为还有另外两个组成部分。
摩尔在 1975 年演讲中所描述的「电路智慧」(circuit cleverness)在最近几年中做出了巨大贡献。斯坦福大学电气工程教授 Philip Wong 表示:电路设计师与从事内核制程技术的工程师之间的合作更加紧密,这使得从每个新节点中获取更多收益变得比仅使用维度缩放的可能性更大。在过去十年的下半场中,将电源轨埋在晶体管下和堆叠晶体管之类的进步应该继续为大约两三代芯片提供一些收益。
在物理层面上,未来改进的其他方向是通过增加更多层逻辑门或其他设备来扩大面积。但有人警告说:这种方法存在一些问题。麻省理工学院(MIT)研究科学家 Neil Thompson 表示:「三维集成会带来一些近期收益,但当多层堆叠时,散热问题会更加严重。」
「这似乎与处理器内核的情况类似。当多核处理器出现时,似乎使内核的数量持续加倍是正途。最初我们获得了收益,然而后来就出现了收益递减现象。」
一种选择是更高效地利用可用晶体管数。2017 年图灵奖得主 John Hennessy 和 David Patterson 认为,高度专业化的加速器具有丰富的挖掘潜力,这些加速器可以消除通用计算的繁重开销(这主要是由于重复的指令和数据获取导致了内存访问的高度浪费),这是一种摩尔定律可能无法支持的性能提供方式。
伦敦帝国学院软件技术教授 Paul Kelly 使用术语「图灵税」(Turing tariff) 来指代使用通用硬件执行函数的成本。该术语基于阿兰 · 图灵提出的理论机器可以执行任何函数,但不一定高效的想法。加速器为其预期函数支付较低的图灵税,因为当在通用处理器上运行时,模块电路中的隐式操作需要在软件中明确定义。
未来转向加速器丰富设计(accelerator-rich design)的潜在主要优势是,它们甚至不必局限于使用常规数字逻辑。主流计算中对人工智能(AI)的更多重视鼓励了设计人员研究当今处理器所使用 CMOS 技术的替代方案,这些替代方案要么在模拟域中执行处理,要么使用基于电子自旋或超导技术的新型开关设备来实现惊人的节能效果。尽管模拟和内存处理器面临低准确性和高噪声问题,但它们可以将需要逻辑域中成百上千个晶体管的乘法器的数量降至少数。
MIT 计算机科学与工程教授 Charles Leiserson 称:「这些方法中有很多有趣的地方,它们将对特定的少数应用有所帮助。我仍然对硬件加速器有非常深刻的印象。」
机器学习等高性能计算领域的用户发现,即使使用自定义代码,加速器也无法在大型应用中维持高吞吐量。作业启动次数和其他开销意味着它们常常使许多可用性能未被使用。Leiserson 补充说:「但多核仍然具有其性价比,」因为它们具有相对可替代性和可及性。
即使采用更常规的架构,任何多核实现的通信开销和内存层次复杂性也很容易使开发人员失望。Leiserson 说:「我们需要更多的性能工具,我们需要硬件来提供更多帮助。」
Leiserson 和 Thompson 认为开发人员应该回到算法分析的基础上,以获得更好的可预测性,并将其应用于整个子系统。Leiserson 说:「算法的一项伟大成就是,通过使用 big-O 表示法进行粗略分析即可预测大致行为。即使 N 前面的常数很大,N 平方也会非常糟糕。」
研究人员发现,代码生成技术的潜在改进比现在更加了解底层硬件及其约束,并且可以通过使用运行时优化和调度在目标架构中保留可移植性。
德国德累斯顿工业大学教授、Chair for Compiler Construction 负责人 Jerónimo Castrillón 介绍了,该机构在有助于管理工作负载的运行时软件方面的研究工作。「你可以查看所拥有的硬件功能,并将其通过堆栈渗透到应用程序编程接口中。要使其正常工作,你需要带动应用程序的模型。」
例如,如果因加速器被其他运行程序占用而导致某个模块无法使用该加速器,则调度程序可能会选择为更通用的内核编译的替代方案,而不是保留整个应用程序,前提是编译后的代码包含足够多的信息使分析成为可能。
Castrillón 认为可能需要针对应用程序中性能敏感的部分进行一次向领域特定语言(DSL)的转换,因为它们可以捕获开发人员的更多意图。「通常人们认为进行更高级别的抽象会导致性能降低,但如果正确地进行抽象,情况就不会如此。」
Kelly 补充道:「使用 DSL,工具可以理解一部分是图形,另一部分是网格,而所有 C/C++ 编译器看到的都是更底层的代码。然后,编译器必须经过艰难的过程,才能推断将要发生的事情。」
自适应异构系统提出了验证和调试的问题:当在特定时间针对特定结构对某个特定实现进行重新优化时,程序员如何知道该实现仍然有效?一种可能是使用与硬件设计人员采用技术相似的形式验证技术,以在对电路执行优化之后检查电路在功能上是否等效。
当涉及到在模拟域而不是数字域中运行的加速器时,验证问题变得更加困难。因此,对于数字精度而言,采用不同的方法将存在一定的误差。
AI 开发者已经习惯于使用损失函数和类似指标,来确定以降低后的精度运行或采用其他近似技术的神经网络能否获得令人满意的性能。但是,还没有方法可以对其他类型的程序(例如物理模拟)进行类似的分析,而用户希望使用固定的高精度格式。
Kelly 称,更全面的数值分析对于确定模拟加速器替代更耗能的数字处理器的效果至关重要。如今,常规的形式验证方法通常被用于硬件设计,以检查电路优化是否正确,但无法处理不确定性。Castrillón 表示,该领域的进展(如概率模型检测)可能会提供一种通往工具的途径,这些工具可以验证所生成的代码是否适合应用程序,且无需位级(bit-level)等价。
Castrillón 称:「我不知道这些是否可以组合在一起。或者,你可以对大型系统进行有力的形式分析。」
如果无法组合,则可能需要由程序开发者来定义他们可以忍受的准确率级别;如果平台无法满足要求,则将受影响的代码模块分配给消耗更多能源或执行速度更慢的数字处理器。
尽管自动代码生成器或许可以比现在更好地利用加速器,但它们与通用核心之间的关系仍然微妙。Leiserson 表示,尽管对于能耗方面的担忧让专用加速器更优,但通用性显然将保持其重要性。「如果你用专用硬件,最好先证明自己会在大多数时间里使用它。」
如果硬件的通用性继续被证明是更好的方法,那么向更高能效和速度发展的道路将脱离晶体管数量进入算法层面,Leiserson 总结道,「让我们真正开始对芯片性能进行研究吧,不要再等着让技术发展推动算力提升了。摩尔定律的出现让我们很长一段时间里不再担心算力问题,但历史的车轮已经开始了转动。」