仅通过单独查看硬件或软件来优化在系统上运行的工作负载是不可能的。这项工程需要共同开发并错综复杂地交织在一起,还需要将两个具有悠久独立运行历史的领域连接起来。在计算的早期,硬件和软件是由完全独立的团队设计和构建的,通常在不同的企业或部门中,并且很少或根本没有直接通信或共同管理。这使得优化任何设计都很困难。
最近,硬件和软件工程团队已经了解到,通过加强合作可以取得巨大收益。随着世纪之交电子系统级设计(ESL)的引入,软硬件的界限逐渐模糊。当时EDA公司试图构建从统一描述自动创建硬件和软件的流程。使用ESL,设计被划分为几个部分,各部分都能够以最佳技术实现。事实证明,对于ESL来说,这项工程过于庞大,以致于难以获得过多的支持。但是现在,为定义的工作负载定制处理器的概念逐渐成为标准做法。
在更快、更高效的设计竞赛中,优化不仅仅是构建更好的硬件或更好的软件。它是关于以识别实现能力的方式定义工作负载。例如,重要的是要了解与定义准确性提高1%的AI学习算法相关的含义。成本是否超过收益?或者,如果使用量化,这将对精度、功耗、成本和其他因素会产生什么影响?将应用映射到硬件编译器或其他工具的效率如何?
同样,在量子计算中,考虑到硬件的错误率和其他限制,哪些工作负载是可能的?有一个使系统成熟的过程,但并非所有事情都以相同的时间或相同的速率发生。
当前的芯片架构
要了解正在发生的变化,了解该过程过去的工作方式会很有帮助。“长期以来,业界都以某种方式开展芯片设计工作,”Cadence Tensilica AI产品的产品营销总监Suhas Mitra表示。“随着时间的推移,工程师开发了更多的软件,硬件也在发展。有人为处理器设计了一个工作架构,可获取指令并执行。这适用于简单的应用程序。但是,当他们想要扩展到更高的应用程序时,他们意识到需要更多的内存,也许是一些缓存。然后他们需要内存保护,或者其他东西,需要以某种方式做某些工作,因为功耗低,所有这些都是由竞争驱动的。”
任何与中断相关的设计都可能面临很高的风险。“多年前,GPU架构是通过查看算法要求来设计的,”Tensilica Xtensa Processor IP,Cadence的产品营销总监George Wall指出。“但在硬件原型存在之前,软件开发人员实际上并没有太多事情可做。在他们拥有硬件之前,他们无法针对该硬件开发软件。因此,硬件开发将先于软件。然而,这种情况正在改变。开发左移正在推动该行业加速软件开发的启动,这样他们就不会被困在等待硬件的困境中。”
处理器架构的开放也正在推动这一趋势。在最近的一篇博客中,Codasip大学项目负责人Keith Graham写道:“由于固定和封闭的处理器架构,传统的研究仅限于软件算法和外部硬件资源。不幸的是,研究方程式的一个重要组成部分(处理器)被遗漏了。处理器架构优化涉及两个关键概念,将特定于应用的功能紧密耦合到处理器中,并通过减少周期数来提高处理器性能。”
但这不是传统上用于优化系统的路径。“真正的挑战是,对于特定领域的架构开发人员来说,要击败CPU和GPU等现有架构,他们需要高度专业化的解决方案,”西门子EDA的HLS平台项目总监Russell Klein表示。“但要获得足够大的市场,使其在商业上取得成功,它们将需要高度灵活的方案。也就是说,它们必须是可编程的。这是一个艰难的组合,因为这两个目标截然相反。具有非常特殊需求的开发人员可能希望创建自己的硬件加速器,这消除了高度可编程或针对大型市场的需要。”
许多提议的架构似乎都是在寻找一个问题。“从CPU到xPU的演变仍在继续,几乎没有一天不会看到一家新公司推出新的计算平台,”西门子EDA IC设计验证部门战略总监Neil Hand指出。“许多企业不会成功。从本质上讲,为工作负载创建新架构完全与风险/回报率有关。潜在的问题是,是否会发生某些事情来改变这种风险/回报等式。如果是这样,它是否加速了从通用处理到特定于工作负载处理的过渡。”也许是市场失败了,而不是提议的架构。“我不会假设有人设计了一个芯片,然后想,‘让我找到一个我可以使用该芯片的应用,’”Arteris IP的研究员兼系统架构师Michael Frank指出。“这是倒退思维。您可能有一个芯片,然后您正在寻找该芯片的替代用途。最初,该芯片的设计考虑了特定的用例。”
所有这些都假设硬件可以满足最低要求。“当今量子计算的主要重点是,创建更可靠的量子计算机,这些计算机可以执行容错量子计算所需的所有操作,并具有所需的准确性和精度,”是德科技研发运营经理Joel Wallman称。“需要两个主要的升级。首先,量子系统的物理实现需要更加健壮。其次,需要开发量子计算机的控制系统,以实现极其精确和快速的亚微秒级控制序列,并具有实时反馈,从而实现高效的电路执行和错误诊断。”
芯片架构演进
需要执行大量分析才能选择正确的体系结构。“首先,你要考虑该用例的要求,”Arteris的Frank表示。“热点在哪里?什么是内存占用量?特定用例的内存带宽要求是什么?大公司的架构师曾经做过电子表格驱动的分析。这已经让位于更逼真的建模,可能使用像Gem5或QEMU这样的模拟器。通过获取应用程序软件,运行并收集跟踪。可以分析一定时间内的读取和写入次数,内存占用量以及正在执行的操作类型。例如,如果有很多矢量类型的操作,则可以使用此数据来推动构建计算机的决策。这是一场平行化事物的竞赛。这是一个多层次的分析类型,希望不会留下任何障碍,因为如果错过了一些重要的东西,你的系统可能无法处理工作量。”
一旦工作负载被市场接受,对它的要求通常会发生变化。“我在开发社区看到的不是太多的新工作负载,而是对现有算法的更好性能和效率的需求,以提供过去不实用的解决方案,”西门子的Klein指出。“用户希望将实时4K图像处理和AI内置到一副眼镜中以实现增强现实,他们希望它的重量不足一盎司,更轻薄小型化,并且一次充电即可运行一周。”
“视频播放是一个很好的例子,”Frank认为。“在过去,他们为此制造了专门的芯片,只是为了解码视频。如今,每个小设备都有一个视频解码器和编码器,用于所有不同标准的高分辨率视频。有一个需要针对不同的市场的用例。性能要求是一个通用术语,因为性能要求可能不仅包括在一定时间内完成工作,而且可以用一定的可用能量完成工作。这是一个多维的问题。”
我们看到人工智能也出现了类似的情况。“数据中心的模型正变得越来越复杂,”Cadence的Mitra表示。“模型也需要在边缘上简化。这意味着频谱非常广泛,这就是推动特定领域计算的原因。一家公司可能希望以物联网为目标,这决定了仅适用于该特定领域的硬件。”对于可能在两个位置都发生的推理,这具有重要意义。“推理不再仅仅发生在云中,也发生在边缘,”Untether AI产品高级总监Philip Lewer称。“这更是加深了对AI工作负载加速的需求,从可以达到500 TOPs的独立高端AI加速器到微控制器的专用AI加速知识产权,性能低至数十个GOPs。”
硬件设计面临挑战
硬件设计面临着重大挑战。“任何开发设计都存在挑战和风险,”Mitra认为。“你为某种类型的工作负载构建了一些硬件架构,尽管花了三年时间,但该架构并没有成功普及。如今,市场正朝着不同的方向发展。模块在不断发展,而不仅仅是通过扩展。现阶段,转换器架构正在接管自然语言处理。对于ASIC的构建,开发者将会对任何结构进行强化。在某些市场领域,更青睐于使用FPGA,因为FPGA不必强化所有东西。它们可以在结构中保留一些功能,使设计更加灵活自如。”
这一挑战正在影响着整个行业的发展。“我们可以看到,在基于变压器的网络上构建的大型语言模型的使用有所增加,”Untether的Lewer表示。“这些网络最初专注于该用例,但我们现在看到它们越来越多地用于其他应用,如视觉,它们正在取代CNN。”
经济效益驱动一切。“如果有人认为某个领域已经足够稳定,并且可以构建硬件来支持其在几年内运行所需的网络,他们就更有信心加固,”Cadence的Wall称。“但是,对于任何这些工作负载解决方案而言,具备一定程度的可编程性很重要。开发者不希望看到的是,在仅针对一类特定类别的网络进行设计之后,发现两年后市场已经向前发展。因此,在硬件设计开发方面,应该考虑可编程性和灵活性。”
除了算法的演进之外,还有一些技术进步可能会产生很大的影响。“目前将所有数据移动到中央处理单元的范式(操作词是‘中心’),然后返回内存,这种方式是非常低效的,”Klein表示。“在许多系统中,数据移动限制了整体性能。在更靠近存储位置的地方处理数据可以极大地提高性能和功耗。可以看到,在编程中,存内计算或近内存计算面临着巨大的挑战。软件开发人员如何描述操作并同步活动?在某种程度上,这是一个并行编程问题,到目前为止,软件开发社区在很大程度上回避了这个问题。”
人工智能算法改变芯片架构
AI由GPU实现。“对于软件开发而言,它定义了一组硬件要求,”Frank指出。“当时,GPU是最好的产品。GPU可以对独立元素进行良好的并行处理。实际上,有时开发者必须修改算法才能在现有硬件上更好地工作。在某些时候,他们意识到不需要整个GPU。相反,他们需要一些更专业的东西。”
GPU的许多方面已经发展成为AI加速器。“GPU使用浮点,”Mitra称。“但你只需要这些浮点模型的定点版本进行推理。如今,开发者正在尝试更小版本的浮点模型,比如bfloat16。对于某些工作负载,即使是8位量化也可能足够了。而对于另一些工作负载,可能需要更高的量化。这并没有一个统一的正确答案,没有一种量化格式适用于所有工作负载。这种情况给芯片公司或研究所带来了很多困难,因为他们开发面向未来的技术和产品。开发者必须能够重新定位、重新运行,以找到合适的方案。”
随着对工作负载的理解越来越明确,其他架构变化也随之出现。“对于计算并行化,你将继续看到各种类型的空间架构,”Lewer表示。“这些允许将复杂图形分解为数千个通过某种类型片上网络连接的处理元素。内存速度和更大的内存深度使快速访问大量权重和激活成为可能,反过来,内存和计算之间的耦合也将越来越紧密。”
如今,大多数架构都在尝试优化操作,而不是优化工作负载。“硬件寻找应用,但工作负载是底层基础,”Frank介绍。“工作负载可能是矩阵乘法。通过构建能够良好运算矩阵乘法的算法架构,以广泛应用于诸多应用领域。但是,应用不能和工作负载混淆一谈。这是你试图加速的一个算法元素,它定义了所谓的工作负载。”
总结
如今,软件的发展升级速度要比硬件更为快速。这就导致硬件逐渐寻求更多策略,来满足当今软件的发展需求,同时能够在不牺牲性能的前提下适应未来的发展需求。硬件与软件应当协同发展,而不是成为竞争者。由于对多个操作环境的考虑,市场对软件的需求也在不断发展。
“软硬件架构的优化将分为几个阶段,”Mitra表示。“即新网络开发阶段、新架构阶段,及以需求为导向,对现有架构的改进开发阶段。开发者可根据需求考虑培训或推理,或者两者兼有,这意味着他们将需要满足PPA要求的多种解决方案。”
硬件正以前所未有的速度发展,现在必须解决这个问题的经济性。软件直接成为硬件的驱动力,但它也受到硬件可能性的影响。