并不是所有的:异构多处理器设计工具

工具正在开发优化单个处理器对于一个给定的软件,但差距仍然多核系统。

受欢迎程度

设计、实现和编程的多核异构系统正变得越来越常见,通常由软件工作负载,但是工具来帮助优化处理器,互连和内存是脱节的。

在过去的几年中,出现了许多工具,帮助与单个处理器的定义和实现,对于一个给定的一组软件进行了优化。而节奏等公司和Synopsys对此已经有了自营架构的内部工具几十年来,RISC-V创造了一个新的这样的工具和开放市场。选择的广度和必要的生态系统来支持他们,已经迅速接受新事物的速度。

但一旦设计包括多个处理器,或异构计算环境中,可用的工具将大打折扣。有一个缺乏工具可以帮助分区软件,或优化处理器,同时考虑到内存子系统或通信网络。还有差距的工具可以分析系统中的数据流。虽然有一些工具,可以做一些任务,没有什么能做的,也没有流结合多个工具来完成这项任务。

许多问题尽快提高多核进入画面。说:“有一个RISC-V多核狂热Frank Schirrmeister负责营销的副总裁Arteris IP。“你通常以相似的方式扩展它们。也许你有多个集群。在集群中你可能有多个计算单元,也许你co-optimize计算和运输。你可以决定与集群相关的应用程序加速器或附加到每个核心。每个处理器可能是一个特定于应用程序的指令处理器做了大量优化(ASIP)使用从Codasip CodAL之类,或者从Synopsys对此LISATek /核磁测井。您可以使用高级合成构建一个应用程序加速器”。

少了什么
一些基本的流根本不存在,和其他人不一样无缝需要一起工作。但正在取得一些进展。

“缺口设计方法可以使用更少的自动化,传统的RTL设计方法,“说Zdeněk Přikryl,首席技术官Codasip。”随着处理器设计自动化工具的进一步发展,我们可以期望差距关闭,一个完整的硬件/软件合作设计方法出现。”

巨大的差距仍在流。“没有什么像一个自动并行化的工具,即使是均匀的多核心,更少对异构多核系统,”蒂姆•Kogel表示虚拟样机的首席工程师Synopsys对此。“人们正在努力找到合适的数据模型。NVIDIA CUDA的巨额投资特许经营,发展各种各样的编程模型来解决。有很多,仍然需要发生。我今天看到你有单独的工具链不同的子系统。例如,你的机器学习编译器工具链神经网络,然后你有传统的CPU编译器工具链,然后努力的有点缝在一起。”

限制时,解决方案变得更加可能。“RISC-V紧密集成的能力加速器处理器是一个巨大的优势,因为它可以减少异质性的范围需要支持Linux,”查理·豪克说在Bluespec CEO。“它可以没有限制的范围异质性实现加速器。这减少了所需的工具变化范围支持领域特定的处理器在异构多处理环境。这包括cycle-approximate系统级C / SystemC建模快速建筑探索完善规范实施和验证之前。”

其中,从那里开始,到硬件工作。“基于模型的系统工程,从整体功能,跨多个域,软件,硬件,物理,”尼尔说,设计验证技术战略总监西门子数字行业软件。”开始压低,他们看着分工的硬件和软件,进入每个处理器。通常,他们想去的处理器将在最有效的方式做这项工作。如果他们能侥幸单个单片处理器上运行算法,他们可能会这样做。如果不满足要求,他们想要一种皮,决定什么功能都有自己的嵌入式核心,或者自己的加速器”。

但一旦你把它们之间的任何形式的网络,你必须分析通信开销。“有流工作的子集,“说Arteris Schirrmeister。“例如,在我们的工具套件,我们吐出一个模型,可以帮助你分析NoC本身。你找出你需要多少交换机有10个发起者和15个目标。这些是我的优先级。体系结构分析,然后你在上下文。然后你出口平台架构师。这些关系,但更大的问题是他们是断开连接。即使技术流,一个人或者一个团队的能力,有效地使所有这些分析优化基于交互架构反馈非常分散。”

他们可能并不总是提出正确的问题。“当你看看产品从网络芯片公司,他们还把世界视为系统,希望能够执行任何任务,”拉塞尔·克莱恩说,西门子弹射HLS团队计划主任。“他们看您需要的数据,我们延迟,带宽是必需的。但他们没有考虑把这个内存的可能性和把它在这里在这个计算面积。的数据不需要移动或使用互连。如果我们隔离组数据的需要,和组的计算元素,通信可以最小化。内存中计算呢?这些事情需要考虑当你看着你的互联。哪一个我们可以从互连和没有在第一时间吗?我不认为我们有工具能够理解问题并提供解决方案。”

更多的是必需的。“有一类勘探和分区和合作设计功能存在,今天你可以蛮力,“说西门子的手。“但是有更多的需要。我们有很多的功能来帮助回答这个问题,“我遇见了我的目标吗?但与自顶向下流动的一个挑战是你需要能够使测量,估计,你需要的模型,你需要性能信息,你需要软件来理解系统的开销,系统权衡。这是一个非常棘手的问题来解决。如果你有一个NoC,是否你有共享内存,共享内存——这些都是巨大的对整体性能的影响。和你不能抽象,在软件容器,不幸的是。”

软件准备
能够找到最佳的映射到可用的硬件软件,或定义最合适的硬件体系结构的软件,需要广泛的分析功能。

“当你有一个复杂的芯片的硬件特性,软件开发人员如何使用?这是最大的挑战所在,”说Synopsys对此Kogel。“很多人都为人工智能开发硬件,但战场是毫升编译器。你可以设计漂亮的硬件加速器,但如果编译器不能有效地使用它,这很有可能不会被使用。这是一个需要解决的大问题。”

今天,这些环境分布。“软件环境,允许您分析是有价值的,”乔治说,产品营销组主任Tensilica Xtensa处理器IP节奏。“但这可能是一个以上的软件环境。可能有一些非常processor-centered环境你可以看,像一个空间站SystemC模型周围使用处理器供应商的开发工具。还有可能是一件高级的虚拟平台。”

甚至RISC-V正在努力维护的软件生态系统完全自由时利用。“为了控制软件复杂性,需要标准化的指令集,“Kogel说。“整数和浮点数,每一组指令,他们有一个预定义的设置,你应该使用为了受益于一般基础设施。而不是完全开放,标准配置文件定义。但是,如果你选择不使用这些,然后你自己。”

概要文件限制硬件来帮助简化软件生态系统。“RISC-V软件生态系统准备,“Codasip的Přikryl说。“我们有不同的组致力于概要和平台,很好地总结一下预计作为基准和领域特定功能可以使用。到位,软件生态系统能很好地生长,因为它是明确应该如何处理不同的软件栈的一部分。”

事情变得不太清楚当异质性。“我们看到人们把虚拟机监控程序在异构系统中,“杰夫•汉考克说西门子嵌入式软件产品管理主管。“当然,这可能被认为是单线程的应用程序的核心,但在汽车运行Linux和Android的汽车,例如,在一个系统管理程序,四A53,之类的。然后他们这些R核心是运行在同一芯片Autostar。所以即使在一个所有多核SoC,他们实际运行异型环境。”

特定领域的解决方案。“我们看到SOAFEE倡议从手臂在汽车领域,“Kogel说。“这软件开发形式化的一个尝试,你可以无缝地从云本地开发部署,试图与码头工人和虚拟化封装的东西。这样的需要作为项目提出在这个级别的东西。”

但是该软件必须改变。“不管你有八个英特尔核心在你的笔记本电脑,或者在你的电话一打核,编程模型仍然是一个单线程的应用程序,“西门子Klein说。”,这是限制因素。只要软件的人会要求我们与一个核心项目,和幻想,我们唯一处理器——直到我们能过去的,我们要一直试图建立更大的处理器和加速的东西在这个模型。一旦你打破这种模式,各种很酷的事情发生。但这并不是一个硬件技术问题。这是一个软件,文化问题。”

尝试了多核上分区一个线程。”建筑师建立这些系统的工作如何事情分解和并行进行,”Simon Davidmann说创始人兼首席执行官治之软件。“C的应用程序不是一个线程,因为那样会很难做任何事。没有魔法并行C代码。”

能够以任意武断的硬件软件和目标是圣杯。只是一个步骤是能够得到一个数据流模型,这是非常困难的问题解决在一般情况下。

“ML框架用它工作,因为你有一个数据模型开始,两点之间的“Kogel说。“TensorFlow,具有固有的并行性和数据依赖关系定义在一个更好的方式比一些任意的C, c++代码。目前,我们所看到的是人们使用跟踪,试图从正在运行的应用程序重新设计这些依赖项在虚拟平台上或在目标硬件提取实际的依赖关系。这是一个困难的问题,自动基于静态或动态代码分析。我们已经看到在这个方向上努力,但它仍然是一个研究主题。它会带来巨大的好处,如果它可以解决。”

这个问题一直是数据依赖关系。“关于神经网络的一件事是他们已经有了一个固定结构和高度平行,”克莱恩说。“有这么多的并行性,它变得更容易去理解可以分割在不同的加速器不引入任何数据依赖关系。当我们搬到通用软件,通用算法,这仍然是一个螺母没有人了。我们如何把C程序,有人写道,幻觉,他们将是唯一一个在电脑上,这将是一个单线程的应用程序,并能够此举为多个小的cpu吗?这仍然是一个非常难的问题。再一次,软件社区似乎没有拥抱的潜在好处去那里。”

这个问题存在于所有的应用领域。“大多数设计团队和IP供应商在AI /毫升专注于第一条规则——提供处理功率匹配工作负载,”史蒂夫说罗迪,首席营销官二次曲面。“但他们忽略了规则2号——不要应用软件开发人员的负担。大多数毫升解决方案已经卸载部分从遗留CPU或DSP图像处理,但并不是整个毫升图工作量。这进一步使软件开发人员的生活。”

改变是困难的。说:“我们想要抑扬顿挫的墙。“这是一个非常具有挑战性的问题的软件开发环境与建筑完全解耦。即使一个利用类似OpenMP,总是有某种程度的架构的依赖。”

那么多被留在桌子上。“你离开桌子上的性能和效率时,系统的整体功能设计硬件,然后夹头在墙上或把它卖给另一家公司,然后编写软件——是巨大的,”克莱恩说。“有这么多损失的能力,有这么多的效率损失,损失的性能。我知道很少组织必要的人坐下来设计硬件,同时考虑软件的体系结构上运行它。他们几乎总是专注于设计硬件运行任何单线程的应用程序,并试图把它的模具。可能开始打破。”

它需要一个团队。“理解的问题需要团队的努力,”Schirrmeister说。“它需要一组架构师,是一个非常复杂的任务。与此同时,系统的复杂性的增长非常迅速。我们正接近一个时代的工具可能会连接到这来工作。我们是垂直连接的工具,和一些流动。有一些结构的优化工具。我们当然没有人可以运行,这是一个教育问题。但如果你把它与机器学习和人工智能,然后我们有机会——如果你能承受周期通过有意义的变化。”

结论
在过去的25年里,人们一直在关注潜在的系统级工具可能包括硬件和软件。能够优化和一个映射到其他有明显的优势,但他们显然从未足以克服软件生产率的问题。进入市场速度比产品更重要,运行更快,功耗更小,或更便宜。许多业内人士认为,变化是不可避免的,但是他们错了很长一段时间。



留下一个回复


(注意:这个名字会显示公开)

Baidu