中文 英语

在芯片中选择要优化的任务

大多数应用程序可以分解为许多任务,并且有许多选项可以创建更好的实现。

受欢迎程度

一个或多个任务的优化是每个SoC创建的一个重要方面,但现在桌面上有这么多选项,通常不清楚哪个是最好的。

就在几年前,大多数人还乐于购买英特尔(Intel)、AMD和英伟达(Nvidia)等公司的处理器,以及Arm的IP核。有些人甚至想要来自Tensilica和ARC等IP内核的可扩展性。然后,在2018年,John Hennessy和David Patterson发表了题为“计算机架构的新黄金时代:特定领域的硬件/软件协同设计,增强安全性,开放指令集和敏捷芯片开发”的图灵演讲。虽然并不是这次讲座开启了进一步优化的动力,但它肯定将其提升到了全球意识。

我们很容易误入歧途,只考虑解决方案的一个子集。“我们的任务不是优化处理器。西门子EDA.相反,任务应该是优化一个任务或一组任务的执行。这与处理器无关,而是与您试图优化的进程有关,因此您必须考虑将实现任务的系统。在开始考虑选择CPU和确定是否需要自定义CPU之前,如何构建和划分系统设计是一个关键问题。正是这些系统范围内的需求将有助于‘CPU需要做什么以及如何做’。”

最优的解决方案总是ASIC。“如果你为一个特定的用例和问题构建所有的硬块,你就会在性能和功率方面得到极大的优化,”曼努埃尔·乌姆(Manuel Uhm)说AMD.“然而,如果标准仍在发展,如果所有的算法都没有100%锁定,或者如果客户希望能够与众不同,那么你就有充分的理由需要灵活性,需要可编程性和可重构性。如果你进入一个已经严格标准化和定义的领域,并且背后有一个巨大的市场,老实说,你不可能打败ASIC。如果你能在正确的时间进入市场,你可以在下一次进化到来之前利用它两三年。但是有越来越少的地方存在这样的真实场景。对灵活性、可编程性、可重构性的需求越来越高。”

随着时间的推移,开发了几种处理器体系结构来优化广泛的问题类别。Imagination公司技术创新副总裁Kristof Beets说:“当谈到优化处理器设计时,我们必须记住每个处理块都有不同的优点和缺点。“例如,CPU倾向于对支持高时钟频率的单指令流处理进行优化,其处理架构为分支进行了微调,通常连接到大型缓存结构。另一方面,gpu在设计时考虑了更多固有的并行性。gpu最初是管理数十亿像素和顶点的处理,这些都可以并行处理,没有任何依赖关系,并且具有最小或零分支。”

有几种方法可以达到优化目标,通常会同时考虑其中许多方法。“你使用处理器的主要原因是你想要有软件可编程性,这在今天是一个显而易见的问题,”at的ASIP工具高级主管Gert Goossens说Synopsys对此.“应用程序的发展如此之快,即使在SoC建成之后,你也想在SoC中添加智能功能。因此,您需要可编程性。所以你需要在soc中嵌入处理器。但如果你将自己限制在标准处理器上,那么迟早你会在性能和功耗方面受到限制。”

最优的定义有很多,企业必须弄清楚这对他们意味着什么。对于同一个SoC中包含的每个任务,它可能是不同的。“最优是什么?”AMD的Uhm问道。“有一系列的权衡,没有完美的解决方案。通常在灵活性和优化之间进行权衡,特别是在可能没有设置标准或正在发展标准的情况下。在对价格敏感的市场,你可能会尽量减少成本。或者可能是关于易用性,因为让处理器易于使用需要时间。它可能需要像ASIC一样加固所有东西,因此对最终客户来说更容易使用。或者你可能有一套先进的工具,这是一笔巨大的投资。如果你想要扩大灵活性,那就必须在易用性之间做出权衡。”

优化目标的列表很广泛。公司的创始人兼首席执行官西蒙•大卫曼说:“有多少公司,目标就有多少治之软件.“有些人想要在尽可能短的时间内完成工作,有些人想要尽可能低的开发成本,有些人想要最小的面积,最低的功率,高性能,成本效益。每个人都有不同的要求。这是所有这些的叉乘。当你在优化某件事时,你必须把最终结果放在心上。您必须从查看您的架构设计开始。这可能包括您将要使用的处理器体系结构类型。然后你就可以专注于优化了。”

了解问题的背景是很重要的。“你是在考虑通用的可编程性,还是针对特定部署用例进行优化?Expedera公司的首席科学家沙拉德·科尔(Sharad Chole)问道。“这两种方法之间的区别在于,通用可编程解决方案不一定要考虑特定的工作负载。他们将工作量视为一个非常宽泛的标准,比如它是科学计算、图形、超级计算、神经网络训练还是推理?当我们看这个域的时候我们会问,90%的操作是什么样子的?我如何优化这90%的操作呢?我如何确保我在这个地区得到最好的表现?我怎样才能获得最佳的电力性能?”

这一切都始于任务的定义。“你审视自己的算法,分解它,找出瓶颈所在,”微软的研究员兼系统架构师迈克尔•弗兰克(Michael Frank)表示Arteris IP.“然后你想想你能做什么。你可以对一组指令序列进行分组,然后考虑是否可以在硬件中构建一些直接执行该操作的东西,而不必对少量指令进行排序。你试图摆脱循环,因为循环是不好的。数据流比控制流更容易分析,但是您需要进行数据流分析,以确保您不会花费太多时间输入和输出数据。这意味着需要解决依赖关系。”

了解工作量
从定义上讲,基准测试是在看后视镜。他们定义了什么对足够多的人来说是重要的,以至于他们费心为它创建了一个基准。应用领域,特别是人工智能领域正在迅速变化。设计人员必须考虑到硅被生产出来的时候应用会是什么样子。

然而,它们可以为分析提供一个起点。Imperas的Davidmann说道:“基准对于现有的IP来说非常重要。“你可以下载或使用Arm、SiFive、Andes或Codasip,你可以把你的基准测试放在他们的周期精确模型上运行。很多处理器IP供应商会运行一套基准测试,并说这就是我们核心在这些基准测试上的速度。然后你就知道我的应用领域需要这些基准,这些工作负载,所以如果他们试图选择一个核心,并在这些领域对不同的供应商进行基准测试。”

但这可能只是第一步。Tensilica Extensa处理器IP组的产品营销总监George Wall说:“行业基准、现有软件或粗略的原型软件将提供一些性能瓶颈的想法,以及它们是否可以缓解。节奏.“随着业界讨论左移策略,更多的软件开发和软件分析在设计周期的早期就完成了。几乎可以肯定的是,到芯片上市的时候,有些事情已经发生了变化。总会有新的网络出现,可能会更好地解决问题,这就是为什么你要尽量保留可编程性。”

即使最终的应用程序是未知的,它的属性也可能是相当成熟的。Synopsys的Goossens说:“性能取决于应用程序中的关键内核,处理器架构必须优化以运行这些关键内核。”“在像神经网络这样的应用程序中,人们很清楚那些关键的内核是什么。这总是有点猜测,因为你永远不知道会发生什么样的算法变化,但在这个领域的人非常清楚架构必须如何专门化才能运行那些关键的内核。此外,在这些内核周围还有很多内部管理软件,很多控制流,这些可以根据应用程序的不同而改变。所以这就是为什么处理器有一些精心优化的关键内核的功能单元,加上整个软件基础设施的管家代码,这种组合很有意义。”

有不同的方法来看待这些关键核。Expedera营销副总裁Paul Karazuba说:“我们研究了ResNet、YOLO、MobileBERT、FSRCNN等神经网络的特征。”“对于每个网络,你可以看到网络具有的操作数量、需要处理的权重数量、整个神经网络执行期间必须处理的激活数量(见图1)的非常不同的特征。”

网络的日益多样化要求灵活性。来源:Expedera。

图1:网络的日益多样化要求灵活性。来源:Expedera。

有些人可能会尝试优化卷积网络或已知具有稀疏性的网络。Expedera的Chole补充道:“我们的架构不是为运行CPU工作负载而定制的。“该架构是为运行神经网络量身定制的。我们知道神经网络中有层,有一个静态图,有连接,有工作负载的依赖性,这些层可以被分解成更小的块。我们称它们为数据包,因此问题就变成了如何调度这些数据包,如何优化工作负载以充分利用系统。”

有时基准并不存在。“你真的了解你的目标市场吗?AMD的Uhm问道。“这不仅仅是行业,而是行业的动态以及它在生命周期中的位置。如果你想要成功,你最好明白这一点。这需要惊人的洞察力和协调能力,但也需要预期,因为半导体产品的交货时间很长。”

Uhm指出了AMD在Versal产品中AI引擎的最初关注点。“人工智能引擎最初被称为数学引擎。它们是为无线而设计的,特别是针对我们未来将使用5G和6G的地方。仅仅对可编程逻辑和DSP模块做渐进式的改进是不够的。我们不得不采取不同的方法。我们采用了基于处理器的方法。它支持矩阵数学和线性代数。我们这样做的原因是因为很多高级信号处理的基本内容,比如波束形成,都是矩阵数学。知道了这一点,我们就可以把它分解成我们需要支持的指令。其中一些必须得到实时支持,这就限制了延迟和他们的周期时间。 And that expands even further to accommodate the memory and I/O, because if you end up bottlenecked in one or the other, all the compute in the world doesn’t matter. As it turns out, a lot of AI algorithms, particularly neural networks, use fundamentally the same mathematical functions. The difference between wireless and AI are the data types. Wireless uses complex data, usually 16-bit IQ. For AI learning, you’re using real data. When we came up with the first iteration of the engines, it was 8-bit, but now we’ve seen that you can get to 4-bit, and you can actually go lower than that without sacrificing hardly any accuracy.”

结论
有许多方法可以实现处理器以有效地执行任务,但在完全了解目标市场和应用程序之前,永远不要尝试这些方法。在许多情况下,它需要构建大量的灵活性,因为目标应用程序可能是一个移动的目标。

一旦理解了工作负载,就可以讨论解决方案的体系结构和实现。



留下回复


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

Baidu