中文 英语

针对工作负载优化芯片架构的挑战

硬件/软件协同设计已经超越了将一个映射到另一个。它是关于在给定的一组约束条件下以最有效的方式整体解决问题。

受欢迎程度

仅通过分别查看硬件或软件来优化系统上运行的工作负载是不可能的。它们需要共同发展,错综复杂地交织在一起,这是一项工程壮举,还需要连接两个有着长期独立运作历史的世界。

在计算的早期,硬件和软件是由完全独立的团队设计和构建的,通常在不同的房间或不同的建筑中,很少或没有直接的沟通或共同的管理。这使得优化任何东西都变得困难。

最近,硬件和软件工程团队已经认识到,通过加强合作可以获得巨大收益。墙壁首先开始软化的引入电子系统级设计(ESL)在世纪之交,当EDA公司试图建立流程,自动创建硬件和软件从一个统一的描述。使用ESL,设计被划分,各个部分被映射到最优的实现技术。事实证明,这对于ESL来说过于雄心勃勃,无法获得显著的吸引力,但如今,为已定义的工作负载定制处理器的概念正在成为标准实践。

在追求更快、更高效的设计的竞赛中,优化不仅仅是构建更好的硬件或软件。它是关于以认识到实现功能的方式定义工作负载。例如,理解与定义精度提高1%的AI学习算法相关的含义非常重要。成本是否大于收益?或者,如果使用量化,对准确性、功率、成本和其他因素会有什么影响?帮助将应用程序映射到硬件的编译器或其他工具的效率如何?

类似地,在量子计算中,考虑到错误率和硬件的其他限制,什么样的工作负载是可能的?系统成熟是有一个过程的,但不是所有的事情都在同一时间或相同的速度发生。

我们今天在哪里?
为了理解发生了什么变化,看看这个过程在过去是如何工作的是很有帮助的。Tensilica AI产品的产品营销总监Suhas Mitra说:“事实是,你有一个架构很多年了,它以某种方式做事节奏.随着时间的推移,你开发了更多的软件,硬件也在不断发展。有人为处理器设计了一个工作架构,它获取指令并执行。这适用于简单的应用程序。但是当他们想要扩展到更高的应用程序时,他们意识到他们需要更多的内存,也许是一些缓存。然后他们需要记忆保护,或者其他东西,他们需要以特定的方式做特定的事情,因为低功耗——所有这些都是由竞争驱动的。”

与任何中断相关的风险都可能很高。Tensilica Xtensa处理器IP (Cadence)的产品营销总监乔治·沃尔(George Wall)说:“许多年前,GPU架构是根据算法需求设计的。“但在硬件原型出现之前,软件人员真的没什么可做的。在他们拥有硬件之前,他们无法利用这些硬件。因此,硬件开发先于软件开发。这种情况正在改变。左移位正在推动行业加速软件开发,这样他们就不会被困在硬件的等待中。”

处理器架构的开放也推动了这一趋势。在最近博客凯斯·格雷厄姆(Keith Graham)说Codasip他写道,“由于固定和封闭的处理器架构,传统的研究一直局限于软件算法和外部硬件资源。(见图1。)不幸的是,研究方程式的一个重要组成部分——处理器——被忽略了。处理器架构优化涉及两个关键概念,将特定于应用程序的功能紧密耦合到处理器中,并通过减少周期计数来增强处理器性能。”

图1:处理器架构优化现在已纳入大学研究。来源:Codasip

图1:处理器架构优化现在已纳入大学研究。来源:Codasip

但这不是传统上用于优化系统的路径。HLS平台项目总监Russell Klein说:“真正的挑战是,对于特定领域的架构开发人员来说,要想显著击败现有的架构,如cpu和gpu,他们需要高度专业化。西门子EDA.“但是,为了应对一个足够大的市场,在商业上取得成功,它们需要高度灵活——也就是说,它们必须是可编程的。这是一个艰难的组合,因为这两个目标是截然相反的。有特殊需求的开发者可能想要创建自己的硬件加速器,这样就不需要高度可编程或瞄准大市场。”

许多提议的体系结构似乎都在寻找一个问题。“从CPU到xPU的演进仍在继续,几乎每天都有新公司推出新的计算平台,”西门子EDA IC设计验证部门的战略总监Neil Hand说。“许多人不会成功。在其核心上,为工作负载创建新架构完全是关于风险/回报比的。潜在的问题是,是否发生了任何改变风险/回报等式的事情。如果是这样,它是否会加速从通用处理到特定工作负载处理的转变?”

也许失败的是市场,而不是提议的架构。“我不会假设有人设计了一个芯片,然后想,‘让我找到一个问题,我可以使用该芯片,’”迈克尔弗兰克说,研究员和系统架构师Arteris IP.“这是逆向思维。有可能你有一个芯片,然后你寻找这个芯片的替代用途。最初,该芯片是根据特定的用例设计的。”

所有这些都假定硬件可以满足最低要求。“目前量子计算的主要焦点是创建更可靠的量子计算机,能够执行容错量子计算所需的所有操作,并具有所需的准确性和精度,”量子计算的研发运营经理Joel Wallman说Keysight技术.他说:“我们需要取得两项主要进展。首先,量子系统的物理实现需要更加健壮。其次,需要开发量子计算机的控制系统,以实现具有实时反馈的极其精确和快速的亚微秒级控制序列,从而实现高效的电路执行和错误诊断。”

不断发展的体系结构
为了选择正确的体系结构,需要执行大量的分析。“首先你要考虑用例的需求,”Arteris的Frank说。“热点在哪里?什么是内存占用?特定用例的内存带宽要求是什么?大公司的架构师过去常常做电子表格驱动的分析。这已经让位于更真实的建模,可能使用像Gem5或QEMU这样的模拟器。您使用应用程序软件,运行它,并收集跟踪。可以分析在一定时间内的读写次数、内存占用以及正在执行的操作类型。例如,如果您有很多向量类型的操作,您将使用这些数据来驱动您构建机器的决策。 It’s a race to parallelize things. It’s a multi-level type of analysis that you do, and hopefully you don’t leave any rock unturned, because if you miss something important your system may not be able to deal with the workload.”

一旦一个工作负载被市场所接受,对它的需求通常会发生变化。“我在开发社区看到的不是太多新的工作负载,而是对现有算法更好的性能和效率的需求,以提供过去不实际的解决方案,”西门子的Klein说。“用户想要实时4K图像处理和内置在增强现实眼镜中的人工智能,他们希望它的重量不到一盎司,不显眼,一次充电就能运行一周。”

成功滋生繁殖。“视频回放就是一个很好的例子,”Frank说。“在过去,他们专门为此制造芯片,只是为了解码视频。今天,每个小设备都有不同标准的高分辨率视频解码器和编码器。你有一个用例,这个用例需要处理不同的市场。绩效要求是一个通用术语,因为绩效要求可能不仅包括在一定时间内完成工作,还包括我可以用一定的可用精力完成工作。这是一个多方面的问题。”

我们也看到了类似的情况人工智能.Cadence公司的米特拉说:“数据中心的模型变得极其复杂。“模型也需要在边缘进行简化。这意味着频谱非常宽,这就是驱动特定领域计算的原因。一家公司可能想要瞄准物联网,这就要求硬件只适用于该特定领域。”

对于两个地点都可能发生的推断来说,这具有重要的意义。Untether AI高级产品总监菲利普•勒威尔(Philip Lewer)表示:“推断不再只发生在云端,也发生在边缘。”“这坚定地确立了对AI工作负载加速的需求,从独立的高端AI加速器,可以达到500个TOPs,到专用的AI加速知识产权,用于性能低至数十个GOPs的微控制器。”

预测未来
设计硬件的人面临着重大挑战。“每件事都有挑战,也有危险,”米特拉说。“你为某种类型的工作量开发了一些东西,但它没有成功,因为它花了3年时间,现在市场正在朝着不同的方向发展。模型在不断发展,而且不仅仅是通过缩放。如今,对于自然语言处理,转换器体系结构正在成为主流。如果你建立一个ASIC,你使一切变得坚硬。你在玩权力和面积的游戏,以及什么才能在市场上成功。有一些市场是人们喜欢的fpga因为他们不需要把所有东西都硬化。它们可以在织物中保留一些功能。这些更灵活。和其他事情一样,你做的每一个决定都有正反两面。”

这一挑战在整个行业都得到了回应。Untether的Lewer说:“我们同意并看到基于变压器网络的大型语言模型的使用正在增加。”“这些网络最初专注于这个用例,但我们现在看到它们越来越多地用于其他应用,比如视觉,它们正在取代这些应用美国有线电视新闻网.”

经济驱动一切。“如果有人认为一个地区已经足够稳定,并且他们可以构建硬件来支持他们在几年内需要运行的网络,他们就会更有信心加强它,”Cadence的Wall说。“但在任何这些工作负载解决方案中都具有一定程度的可编程性是很重要的,因为你不想只针对某一类网络进行设计,然后在两年后发现市场已经发生了变化。你需要在硬件上具有可编程性和灵活性。”

除了算法的进步,还有技术的进步可能会产生很大的影响。Klein说:“目前的模式是将所有数据转移到中央处理单元(关键的词是‘中央’),然后再移回内存,这是非常低效的。”“在许多系统中,数据移动限制了整体性能。在数据存储位置附近处理数据可以极大地提高性能和功耗。我看到了一个巨大的挑战内存中/near-memory计算机编程。软件开发人员如何描述操作和同步活动?在某种程度上,这是一个并行编程问题,迄今为止,软件开发社区在很大程度上回避了这个问题。”

人工智能的现状
人工智能是由gpu.“这是一种软件开发的情况,它定义了一组硬件需求,”Frank说。“当时,GPU是市面上最好的东西。GPU能够很好地并行处理独立元素,这非常棒。这就是我的算法。’或者,‘这就是我如何塑造我的算法。事实上,有时候你必须修改算法才能在现有硬件上更好地工作。在某种程度上,他们意识到他们不需要整个GPU。相反,他们需要一些更专业的东西。”

GPU的许多方面已经演变成人工智能加速器。“GPU使用浮点运算,”Mitra说。“但你只需要这些浮点模型的定点版本来进行推理。今天,人们正在尝试更小版本的浮点模型——比如bfloat16。对于某些工作负载,甚至8位量化可能就足够了。你可能需要更高的量化。我们没有理由相信只有一个正确答案。没有一种量化格式适用于所有事物。这对一家硅公司或一些学术公司来说非常困难,因为他们想要的是面向未来的东西。你必须能够重新定位,重新做事,让事情发生。”

随着对工作负载的更好理解,还会出现其他架构更改。“对于计算并行化,您将继续看到各种类型的空间架构,”Lewer说。“这使得复杂的图形可以被分解成数千个通过某种类型的芯片网络连接的处理元素。内存速度和更大的内存深度使快速访问大量的权重和激活成为可能,反过来,你将继续看到内存和计算之间更紧密的耦合。”

目前大多数架构所做的是试图优化操作,而不是工作负载。“硬件寻找应用程序,但底层是工作负载,”Frank说。“工作量可能是矩阵矩阵乘法。你建立了一个矩阵矩阵乘法运算很好的东西,知道有很多应用可以利用它。但是您不应该将应用程序与工作负载混淆。这是你试图加速的一个算法元素,它定义了我所说的工作量。”

结论
如今,软件比硬件发展得更快,这导致硬件寻找不仅能满足当前软件需求,而且能适应未来需求的策略,同时又不会牺牲性能要求,从而变得不具有竞争力。对软件的需求也在不断变化,因为它们必须考虑不止一个操作环境。

Mitra说:“优化是分阶段的。“将会有新的网络开发阶段,新的架构阶段,以及人们将修改现有架构以满足他们需求的开发阶段。人们可能会考虑训练或推理,或两者兼而有之,这取决于他们想做什么,这意味着他们将需要满足PPA要求的不同解决方案。”

硬件的发展速度比以往任何时候都要快,现在必须解决其中的经济问题。软件已经直接成为硬件的驱动因素,但它也受到硬件功能的影响。



1评论

Balvinder辛格 说:

精彩的文章,谢谢

留下回复


(注:此名称将公开显示)

Baidu