中文 英语

优化驱动微架构的变化

随着对提高功率和性能的需求超过了设计工具,新的方法出现了。

受欢迎程度

半导体生态系统正处于一个转折点,如何根据数据爆炸、人工智能使用量增加以及领先应用程序的差异化和定制需求来最佳地架构CPU。

在过去,大部分工作都是通过移动到下一个流程节点来完成的。但是随着在每个新节点上扩展带来的好处逐渐减少,重点转移到架构上,特别是微架构上的更改,以管理资源分配、功率、吞吐量和面积等方面的权衡。这给EDA供应商带来了压力,要求他们开发一套新的功能来优化功率、性能和区域,以应对不同任务和应用程序的复杂组合。与此同时,它重新点燃了人们对设计工具的兴趣,这种“令人惊叹的因素”多年来从未见过。

“我清楚地记得,当我们向设计师提出第一个(使用合成)设计时,”Aart de Geus说Synopsys对此他在最近的一次演讲中说。“我们采用了他们的设计,在几个小时内就能把它做得更小、更快。起初,他们不相信。然后他们看了看,检查了一下,突然发现这是正确的。但问题来了,他们认为这是魔法,可以做任何事情。不,不,不,我们在过去的30年里做了很多工作来让它变得更好。这里也会发生同样的事情。”

其他人也指出了类似的例子,他们观察到半导体生态系统正在转变,以应对数据、人工智能和新应用的融合。

回顾CPU的设计,有一些通用CPU遵循某些规则,如摩尔定律、登纳德缩放定律和阿姆达尔定律,但这些要么停止工作或者限制性能,”zdenk picikryl说Codasip.“我们必须找到不同的方法来提高表现。一种选择可能是异构计算,其中某些块专注于它们擅长的某些事情。这就是半导体生态系统开始关注的东西。我们知道不能超过5千兆赫。是的,还有其他方法可以实现这一点,比如光学,或者碳纳米管,但这些都需要10年的时间。所以异构计算是最好的选择,因为我们有没有解决性能问题现在问题。”

不过,这不仅仅是设计硬件。这也是如何利用硬件的问题。“我们过去常常看通用微架构,然后去做独立地,而不考虑目标域或者软件。”“现在,在异构计算中,你不只是有一个通用的计算。有一个是针对人工智能的,还有一些是针对其他部分或领域的。人工智能尤其有趣,因为每一个都有一些关键的不同点,CPU必须根据这些不同点进行调整和定制。”

图1:增加芯片设计的复杂性。来源:Codasip

其中许多变化都是革命性的,但它们是建立在许多领域的进化改进之上的。其结果是更大的灵活性和处理快速增加的复杂性和异质性的能力。

“如果你回到几十年前,想想当时的处理器是什么样子的,你有这些或多或少为单个用户设计的硅片,它们或多或少被设计成可以做任何事情,”史蒂文·吴(Steven Woo)说Rambus.“这些cpu负责所有的计算。它们负责处理I/O,处理网络流量,以及处理任何图形。快进几十年,我们有了数量级的大门。现在人们对处理器的看法是多核和多功能的。所以除了拥有多个CPU核心,现在它们还拥有图形等功能,其中一些还拥有专门的加速器,用于加密等功能,甚至还有像向量引擎这样的高性能计算。”

现在的cpu通常具有多核、多线程,甚至可以同时支持多个用户。

他说:“这个问题开始变成,‘如果我有所有这些内核,可能还有所有这些用户,或者可能有多个程序都在CPU上执行,那么如何公平地分配所有这些资源。“所谓‘公平’,你必须让每个人都能拥有自己的资源。但如果不是每个人都在使用所有这些资源,你不想让它们浪费,所以它们必须是可共享和可分割的。在过去,我们不必担心这类事情。”

这也使得系统设计更加复杂。“就像这类工作中的所有事情一样,我们又一次收到了相互矛盾的要求,”at的数字设计经理亚历山大·米贾托维奇(Aleksandar Mijatovic)说Vtool.“我们希望在最小的面积内拥有最小的功耗,以获得最大的灵活性和性能。这让世界上的每一个设计师都很沮丧,当管理来了,“我们不想浪费精力,但我们想拥有所有的功能,它必须是可配置的和优化的,以获得最大的性能。”有一件事是真的,你不可能得到所有这些。但是你要尽可能多地得到。对于不同的用例,对于相同的ASIC,您将进行优化的优化,以找到需要进行的所有优化更改的共同特征。你要尽量不影响整个系统,或者成为自己的一个芯片,而不是内部的一个块,这可能是这种最大可配置性和灵活性方法的最大危险。”

这是术语ASIC的根本矛盾,它不再局限于单一应用程序。Mijatovic说:“ASIC现在被要求具有最大的灵活性,这是FPGA设计在很长一段时间内保留的东西。”“但从某种角度来看,你根本无法从FPGA获得与ASIC相同的性能(时钟速度)和价格。我们正在缩小FPGA和ASIC方法之间的差距。例如,有些asic集成了小型fpga,以便根据处理器请求的应用程序加载一些自定义过滤和数据处理优化代码。芯片上有一些冗余,这需要在面积、设计时间、验证时间和功耗方面付出代价。”

然而,asic的某些方面仍然保持不变。“一旦你建立了它,你支持什么,你就支持什么,”他说。“没有回头路。你不能只是修复和发布一个补丁。这就是它不同于软件的地方。一旦它出了工厂,你就必须按照你的计划工作。如果在某个时候,您忘记从您的ASIC中需要某些东西,那么它就会过时。所以许多公司都试图在一开始就添加一些东西,他们怀疑这些东西会被使用。”

这使得围绕微架构以及如何设计它们的决策变得越来越困难。

“对每个市场研究团队来说,最大的问题之一是支持什么,”他说。“我们是选两个筹码,一个,还是一家人?”如果我们只做一个超大的芯片,而且价格有点贵,市场前景会如何?当我们决定做五块而不是一块的时候,会有人买我们的芯片吗?我们最终会有一两个没人用吗?这些决定变得很棘手,因为这都是关于更高的性能、更高的复杂性以及随市场变化的需求。如果你迟到了,或者你错过了一个大家都在使用的功能,你就是一个彻底的市场失败者。”

移动数据
当今许多应用程序需要考虑的一个重要问题是数据移动以及数据需要在哪里被处理。架构决定了哪些组件需要放在哪里,以及它们运行的速度和数据移动的速度。相比之下,微架构决定了如何利用所有这些资源,这在不同的应用程序之间可能有很大的差异。

“你会看到人们改变算法,”Rambus的Woo说。“你会看到人们重新组织计算。还有重构,当你审视你的应用程序时,你可能在10年前编写它的方式与你现在编写它的方式完全不同。这是一个概念,‘如果我重构我的应用程序,以不同的方式分解它,使用可用的新芯片,我该如何做事情?这就是发生的很多事情。有了可用的硬件,有了你想要实现的算法,你如何重构这些东西?对于其中一些已经存在多年的应用程序,您知道它是有效的,同时您知道有很多嵌入式知识可以为当今存在的体系结构优化它。对于某些应用程序来说,重构任务是非常密集的,并且在试图计算开发成本时也需要进行一些权衡。有时候这样做并不有利。做软件开发和重新验证一切都是很昂贵的,有时等式就是不成立。

但基本要素仍然很重要。在探索不同区域、计时和时钟优化时,所有点都必须通过基本计时测试。“他们必须这么做,”Synopsys的德吉斯说。“否则,芯片就不能工作。优化首先只有一个目标。它说:“所有这些都将加快芯片的速度,因此时间完全无关紧要。“其次,功率是另一个维度,取决于你做的是什么类型的芯片,功率更重要还是时机更重要,所以你能做的大多数改变都是优化改变,比如移动东西,确定布局的边际,从而影响产量等。”-然后,关于你不能真正修改的结构,比如测试结构。因此,在优化过程中,时间一直是优化功能中最相互关联的部分。”

这不是一个新想法。他说:“虽然Synopsys以合成著称,但它实际上是带有内置定时验证的合成。”“当然,随着时间借用、移动时钟以及查看计时统计数据,时间验证变得更加复杂。大多数人在拿回筹码后,最终会选择扔骰子,这是有原因的。这是因为在时间上有一个统计分布。我们不仅优化时机,我们还尽可能优化这些时机的统计分布,因为如果只有一个可接受的窗口,这对产量有巨大的影响。如果您可以进行分箱操作,这意味着如果有些东西比预期的好,您可以以更高的价格出售它们,而其他东西则用于性能较差的应用程序。时机可能是我们所做的优化中最相互交织的一个方面。正如你所知道的,你可以在设计中改变很多东西来满足时间要求。”

这个过程的一个重要部分是设计空间探索。Codasip的pinkikryl说:“你有自己想要的规格和工作量,但你想要找到最好的解决方案,所以你必须非常快速、有效、高效。”“如果你看看标准的方法,如RTL或Verilog编码,是的,你可以这样做,而且它仍然被广泛使用。但在今天的挑战中,你并没有探索所有可能的选择。我这里谈论的是SDK因为RTL是只有一个部分。Y你需要一个编译器来满足这个RTL。”

pinkikryl建议转向更高级别的抽象,比如架构描述语言。“我们写Codal在某种程度上,我们有一个单一的描述,你可以从某种功能模型开始,”他说。“然后我们开始用现有的工作负载评估系统,在那里你可以调优、完善架构,并不断添加细节和重新评估。您最终得到的设备RTL非常适合您的需求。但是通过这种设计空间探索的步骤,从功能模型到实现模型,必须尽可能顺利。这不能在RTL中完成,因为它太低级了。如果你停留在C级别,那就太高级了。架构描述语言提供了完成这个过程的能力。”

压力下的EDA工具
但是微架构的复杂性也对EDA工具提出了更高的要求。

“挑战在于,消费者需要的远远超过现在的电子产品所能满足的。治之.“电子产品现在复杂了几个数量级。它正从各个方面推动EDA。对于一个拥有150多个处理器的AI推理引擎来说,12亿个晶体管芯片并不罕见。这类芯片在很多方面都改变了事情。”

巨大的异构芯片也在扩展EDA工具。Davidmann举了一个例子,一个客户运行了一个有150个处理器的AI推理引擎,其中大部分是AI框架中的复杂向量。“运行一个测试序列可能需要两个小时,而且是在一个相当复杂的模拟器上。但它抽象地运行了数十亿条指令,所以这个工具在各个方面都被拉伸了。”

大卫曼认为,半导体行业正在进入一个不同的阶段,在这个阶段,复杂性和挑战都是非常重要的。“这就像Inmos在20世纪80年代开始做transputer一样。他们决定自己建造一切。或者当Graphcore的Simon Knowles说,“我们要建造一个巨大的并行机器,”他们认为,“和大型EDA谈没有意义,因为他们只会试图卖给我Verilog。”我对Verilog不感兴趣。我正在寻找一种可以模拟人工智能的机器,所以他们必须自己建造。随着时间的推移,人们可能会就芯片公司需要的技术类型达成共识,帮助他们做不同的事情,也许他们的工具将变得可用。”

这个新周期是由谷歌、Facebook、亚马逊、微软、苹果和特斯拉等系统公司推动的,这些公司正在进行架构和设计创新,其中许多都围绕人工智能展开。

“20年前,每个人都在试图构建并行硬件,但没有软件,”他说。“没人能编程,没人知道该怎么做。很少有公司成功地建立了并行系统。快进到现在,问题是如何在硬件上运行这些AI框架。它们不能很好地在x86上运行,所以让我们构建一个100核,1000核的处理器。这就是为什么Graphcores,以及所有这些公司围绕着它开发东西手臂或者是私有的RISC-V-每个人都在构建自己的微架构。他们正在构建这些架构来解决他们的软件问题。从EDA的角度来看,这是非常令人兴奋的,因为他们正在用他们需要的技术和解决方案以及容量的大小来推动EDA。前缘说,‘我不想模拟一个,我想模拟1000个运行这个东西。我想在一小时内完成。我不想在一个月或一年之内完成。我每次都需要明天早上的结果。“所以他们就这样推。他们还提出了新的架构,包括向量和其他高级操作,这些操作的方式非常不同。我们不需要真正理解这些软件算法是什么在上面运行。我们只需要让微架构来模拟它,并让他们对此感到兴奋。”

开源也在这里发挥了作用,在开源领域中有很多围绕机器学习的东西。

Davidmann认为,先进的工程团队正在寻找他们可以配置和自定义的工具,从而将这种情况融入到EDA工具中。“大多数传统工具都是专有且封闭的。他们不想制造模拟器。他们想要构建架构,而这正是我们与他们合作的最佳点。他们不关心下面的模拟。这是他们想要控制的架构,而不是局限于它应该是怎样的。开源为人们在新工具中寻找的灵活性带来了曙光。”

结论
总的来说,微架构挑战是由推动EDA的新世界软件需求驱动的。“这意味着EDA必须更高效,”Davidmann说。“它必须开始使用一些新的软件,因为我们将无法帮助人们设计500亿个晶体管芯片,除非我们有更好的工具。这让我们更进一步,建立可扩展、更高效、更快、更容易使用的工具,基于云计算,并具有灵活的许可。”

然而,这些都不简单,而且永远都不够。

“一旦你有了有用的东西,用户就会说,‘但它慢得像狗一样,为什么它不能做这个和那个?de Geus说:“很明显,只要你能自动优化较低的台阶,作为建筑师,你就能提升一个台阶。”“然后你可以说,‘如果它知道并行是可以的,而不仅仅是串行,它就可以做得更好。“你为什么不告诉我?”因为在那个时间点你不能用它做任何事情。优化既支持您,也在一定程度上限制了您。但在这种情况下,如果我们能够一步一步地丰富语言,从本质上更多地关注你必须决定的可选性,这就是你永远不会满意[EDA]的原因。然而,它会让你高兴,你可以提升,因为你有每一个新的见解,工具不能立即吸收,你会说,'这仍然是原始的东西。’它仍然是原始的东西。”

但它也在迅速变化。



留下回复


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

Baidu