中文 英语

新利体育在线完整版软硬件协同设计成为现实新利娱乐群

将软件自动映射到现有硬件上,或使用软件驱动硬件设计,是非常迫切需要的,但也非常困难。

受欢迎程度

在过去的20年中,该行业试图部署硬件/软件共同设计概念。虽然它正在进行进度,但软件/硬件共同设计似乎具有更加光明的未来。

为了了解两种方法之间的区别,重要的是定义一些基础知识。

硬件/软件协同设计本质上是一个自下而上的过程,在这个过程中,硬件首先是在一个关于如何使用它的一般概念下开发的。然后软件被映射到硬件上。这有时被称为基于平台的设计。最近的一个例子是SOAFEE致力于实现软件定义的汽车开发。

相比之下,软件/硬件共同设计是一项自上而下的过程,用于驱动硬件架构的软件工作负载。这是今天成为一种更流行的方法,它由AI推理引擎和异因架构典型。高级合成也是该方法的一种形式。

两者都是可行的设计方法,有些设计流程是两者的结合。该公司产品营销总监迈克尔•杨(Michael Young)表示:“它总是要回到基本面,即规模经济。节奏.“它基于您需要实现的功能,并且通常转化为响应时间。某些功能具有实时,关键任务约束。在这些情况下,硬件和软件之间的平衡很清楚,因为您需要确保无论您做到,响应时间都在定义的限制范围内。其他应用程序没有此限制,可以在资源可用时完成。“

但是,今天有其他压力,因为摩尔的定律缩放减速了。“发生了什么,软件正在推动硬件中的功能,”CEO,Simon Davidmann说Imperas软件.“产品需要更高效的软件,这推动了硬件架构的发展。”

两种方法都不比另一种好。“我们看到了硬件优先和软件优先的设计方法,这两种方法都不能产生次优的结果,”该公司首席应用工程师Tim Kogel说Synopsys对此. 在人工智能中,优化硬件、人工智能算法和人工智能编译器是一个相位耦合问题。它们需要一起设计、分析和优化,以获得优化的解决方案。举个简单的例子,人工智能加速器中的本地内存大小决定了人工智能编译器中的最佳循环平铺

成本是等式中非常重要的一部分。“协同设计是针对给定问题实现高度优化硬件的一种非常好的方法,”Andy Heinig说,他是先进系统集成小组的组长和高效电子部门的主管弗劳恩霍夫学院自适应系统工程分部.但这种高水平的优化是这种方法的缺点之一。优化设计是非常昂贵的,因此这种方法只能在生产设备的数量非常高的情况下才能奏效。大多数应用程序不需要优化的硬件,而是使用更灵活的体系结构,可以在不同的应用程序中重用。高度优化但灵活的架构应该是下一代硬件/软件协同设计流程的结果。”

高级合成
几十年来,从软件中自动生成硬件一直是学术界和工业界的目标,这导致了软件的发展高级合成(HLS).“为在CPU上运行而开发的软件,并不是高级合成的最佳代码,”安诺普•萨哈(Anoop Saha)表示西门子EDA。“映射本质上是将串行代码划分为并行块,这是具有挑战性的。这就是HLS的价值和方法。我们已经看到了SystemC,它本机支持多线程,但面向硬件,不面向软件。“

这种方法仍然存在挑战。“我们一直在持续投资,我们一直在增加对它的采用,”尼克·尼(Nick Ni)说,他是微软的营销、软件和人工智能解决方案总监赛灵思公司. “十年前,99%的人只写VerilogVHDL.但我们的一半以上的开发人员今天正在使用HLS进行一块IP,因此我们在采用方面取得了很大的进步。底线是,我认为任何事情都没有从硬件/软件共同设计的角度下脱离。语言前面有很多有趣的建议,使其更平行,更加多处理器友好,这些既肯定会朝着正确的方向走。例如,OpenCL真的试图到达那里,但它已经失去了Steam。“

基于平台的方法
基于平台的设计并没有尝试注入太多的自动化。相反,它依赖于基于分析的人类干预。“硬件/软件协同设计已经发生了相当一段时间,”迈克尔·弗兰克说,他是Arteris IP.“很长一段时间以来,人们一直试图用真实的软件来评估平台的行为和性能。该行业一直在打造更好的模拟器,如Gem5和Qemu。这已经扩展到包含加速器的系统中,在这些系统中,您可以构建加速器模型,并通过在加速器上运行部分代码来卸载cpu。然后你会试图平衡这一点,将更多的功能从软件转移到硬件。”

Arm最近宣布了一种新的软件架构和参考实现,称为可扩展的嵌入式边缘开放架构(SOAFEE),以及两个新的参考硬件平台,以加速汽车软件定义的未来。“解决软件定义需要的汽车,必须提供一个标准化的框架,提高证明原生云技术,在规模和工作所需的实时和安全特性在汽车应用中,“Chet Babla说,汽车的汽车副总裁和物联网业务。“同样的框架也可以使其他实时和安全关键用例受益,如机器人和工业自动化。”

这对于某些类型的应用程序很有效。西门子的萨哈表示:“我们看到越来越多的硬件/软件协同设计,这不仅是因为处理模式发生了变化,而且硬件模式也发生了变化。”“在过去,硬件是非常通用的,在上面有一个ISA层。软件就在上面。它清晰地划分了软件和硬件之间的界限,以及它们如何相互作用。这减少了上市时间。但为了改变这一点,他们必须改变软件编程模式,这将影响投资回报率。”

一个转折点
有人建议Nvidia与CUDA建立一个转折点。虽然这不是第一次创建新的编程模型和方法,但可以说这是第一次成功。事实上,它将一种深奥的并行处理硬件体系结构转变为一种针对某些问题的通用计算平台。如果没有这一点,GPU仍然只是一个图形处理器。

“CUDA远远领先于OpenCL,因为它基本上是在描述并行平台,”Arteris的Frank说。但这已经不是第一次了。托勒密(UC Berkeley)是一种并行建模和数据驱动模型建模的方法。OpenMP,自动并行编译器——人们已经在这方面工作了很长时间,解决它并非易事。事实证明,将硬件平台构建为编译器的良好目标是正确的方法。英伟达是最早做到这一点的公司之一。”

Xilinx的倪表示同意。“如果用户能够加入明确的并行性,比如CUDA甚至OpenCL,那总是最简单的。这使得它显式且更容易编译。充分利用管道,充分利用内存,仍然是一个不小的问题。”

ai的影响
人工智能的快速发展已经将重点从硬件优先转向了软件优先。“理解AI和ML软件工作负载是开始设计硬件架构的关键第一步,”世界语技术CBO Lee Flanagan说。“人工智能中的工作负载在模型中进行抽象描述,人工智能应用程序中有许多不同类型的模型。这些模型用于驱动人工智能芯片架构。例如,ResNet-50(剩余网络)是一种卷积神经网络,它驱动了图像分类对密集矩阵计算的需求。然而,ML推荐系统需要一种支持深度记忆系统中跨大型模型的稀疏矩阵的体系结构。”

当需要满足延迟需求时,需要专门的硬件来部署软件。Imperas ' Davidmann说:“许多人工智能框架被设计成在云端运行,因为这是你获得100或1000个处理器的唯一途径。”“现在的情况是,人们希望所有这些数据处理在终端设备上,接近物联网的边缘。这就是软件/硬件协同设计,人们通过构建硬件来实现软件。他们不会建造一个硬件,然后看看上面运行的是什么软件,这是20年前发生的事。现在他们是受软件需求的驱动。”

虽然人工智能是显而易见的应用,但趋势远比这更为普遍。“正如轩尼诗/帕特森所说,人工智能显然正在推动计算机架构的一个新的黄金时代,”Synopsys的科格尔说。“摩尔定律正在失去动力,预计未来10年的设计复杂性将增长1000倍,人工智能的要求超出了摩尔的能力。唯一的出路是创新计算机体系结构,根据目标人工智能应用的特定需求定制计算、存储和通信硬件资源。”

经济学仍然很重要,这意味着虽然硬件可以针对一项任务进行优化,但它通常必须足够灵活地执行其他任务。“AI设备需要多才多艺,而变形做不同的东西,”Cadence的年轻人说。“例如,监控系统也可以监控流量。您可以计算红灯后面排列有多少辆汽车。但它只需要识别立方体,以及落后的立方体,并汇总信息。它不需要进行面部识别的解决方案。您可以在不同的分辨率或不同尺寸下培训设计的不同部分。当您为32位CPU编写一个程序时,就是这样。即使我只是使用8位数据,它仍然占据整个32位的路径。你浪费了其他比特。 AI is influencing how the designs are being done.”

在人工智能之外,同样的趋势也发生在其他领域,这些领域的处理和通信需求超过了通用计算的发展。Kogel补充说:“在数据中心,已经出现了一类用于基础设施和数据处理任务的新处理单元(IPU, DPU)。“这些是为内务和通信任务优化的,否则会消耗大量的CPU周期。此外,超低功耗物联网设备的硬件是为该软件量身定制的,以降低开销功率,最大化计算效率。”

软件/硬件现实
要使一个新的范例成功,需要大量的技术将程序员与硬件的复杂性隔离开来。“宏体系结构的规范和优化需要应用程序工作负载和硬件资源的抽象模型,以探索粗粒度分区权衡,”Kogel解释道。“Y形图方法(见图1)的思想是将应用程序工作负载与硬件资源模型相匹配,以构建一个虚拟原型,允许对性能、功耗、利用率、效率等KPI进行定量分析。”

图1 Y-chart方法,映射HW平台上的应用工作量,构建虚拟样机进行宏观架构分析。来源:Synopsys对此
图1 Y-chart方法,映射HW平台上的应用工作量,构建虚拟样机进行宏观架构分析。来源:Synopsys对此

“工作负载模型以独立于体系结构的方式捕获任务级的并行性和依赖性,以及每个任务的处理和通信需求,”Kogel解释道。硬件平台模拟了预期SoC的可用处理、互连和内存资源。实际的适用性需要一个虚拟样机环境,提供必要的工具和模型库,以高效的方式构建这些模型。”

这在很大程度上仍然是一种直接的、手工的方法。杨说:“在这个领域有一个缺口。”“每家大公司都在做自己的事。我们需要的是一个复杂的或智能的编译器,它可以基于实时约束和对经济的理解来处理不同的应用程序。如果我有各种处理资源,我如何分配工作负载以获得适当的响应时间?”

随着处理平台变得更加异构,这使得问题变得更加困难。Saha说:“你不再有一个简单的ISA层来安装软件。”“界限已经改变。软件算法应该很容易地指向硬件端点。搞算法的应该会写加速器模型。例如,他们可以使用硬件数据类型来量化他们的算法,并且他们应该在完成他们的算法之前这样做。他们应该能够看到某物是否可合成。对于软件开发人员来说,算法的可实现性应该是固有的概念。我们在这方面已经看到了一些变化。我们的算法数据类型是开源的,我们看到下载量比用户数量高出两个数量级。”

具有讽刺意味的是,自动化对人工智能来说比许多其他任务更容易。“我们有编译器,不仅可以将这些人工智能模型的软件编译成运行在芯片内处理器上的指令,还可以重新编译成特定领域的架构。整个硬件设计是基于实际模型的。”这才是真正的软硬件协同设计。这之所以成为可能,是因为尽管我们面临着像人工智能这样具有挑战性的问题,但它也是一个定义明确的问题。人们已经发明了AI框架和所有的api,所有的插件。TensorFlow或PyTorch已经定义了如何编写层之类的东西。编译器需要处理的事情更少,在这些范围内,我们可以做很多优化和调整硬件创造。”

结合在一起
从长远来看,纯硬件优先或软件优先的方法不太可能取得成功。需要合作。“人工智能应用需要一个整体的方法,”世界语的弗拉纳根说。“这涵盖了从低功耗电路设计师到硬件设计师、建筑师、软件开发人员、数据科学家的所有人,并延伸到最了解其重要应用的客户。”

自动化的能力还不如人类。Kogel说:“基于人工智能的方法将帮助专家优化算法、编译器和硬件架构,但在可预见的未来,每个领域的人类专家都将‘在循环中’。”“最具竞争力的产品将由团队开发,不同学科在一个开放和富有成效的环境中合作。”

完全自动化可能需要很长时间。“这将永远参与其中的人力工程方面,因为这是一个非常艰难的决定,”年轻人说。“你在哪里定义这条线?如果你犯了一个错误,它可能是非常昂贵的。这就是为什么模拟,仿真和原型设计非常重要,因为你可以运行'如果'方案是否有什么情况并执行架构权衡分析。“

有时候,技术并不是阻碍。萨哈说:“这需要进行组织变革。”“你不可能有互不交流的软件和硬件团队。这一界限必须消除。我们看到的是,虽然许多团队仍然是不同的,但他们通过相同的层级进行报告,或者他们有更密切的合作。我曾见过这样的情况:硬件组有一个算法人员向同一个经理汇报工作。这有助于识别算法的可实施性,并允许他们对软件进行快速迭代。”

结论
新的应用程序正在强制更改对所写软件的方式,定义硬件以及它们如何映射到彼此。定义新软件范例的log-jam已被破坏,我们可以期望在组合的硬件软件流中看到创新速度来加速。它会延伸回单个CPU上运行的顺序C空间吗?可能没有一段时间。但最终,这可能是一个非常小而微不足道的问题。



留下一个回复


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

Baidu