硬件-软件协同设计重现

可能会有第二次合作设计的机会,但同样的障碍也可能成为阻碍。

受欢迎程度

硬件-软件协同设计的核心概念在这种方法首次被引入并未能流行起来近20年后,正在得到另一种看法。

这一次的不同之处在于日益增长的复杂性和对架构改进的强调,以及设备扩展,特别是对于人工智能/毫升应用程序。软件是一个关键的组件,软件集成得越紧密,功能和性能就越好。软件还增加了灵活性的元素,这在许多设计中是必不可少的,因为算法几乎处于不断变化的状态。

协同设计的最初想法是,可以用一种语言来描述硬件和软件。有了单一的描述,就可以优化实现,将进入加速器的功能分区,在自定义硬件中实现的功能分区,以及在处理器上作为软件运行的功能分区——所有这些都在一个按钮的触摸下完成。

由于几个原因,这种工作方式未能实现。当时的系统主要是单线程应用程序,设计用于运行在具有相当简单系统架构的单处理器上。为了进行分析,环境及其实现必须是确定的,并且任何分区都必须足够粗粒度,以便能够分摊通信成本。在这些限制下,大多数分区在某种程度上是直观的,因此自动化并不能提供足够的价值。

人们希望协同设计能够拉近硬件和软件团队之间的距离。“这需要重组一个完整的行业,”特朗普设计方法论主管罗兰•扬克(Roland janke)表示弗劳恩霍夫IIS /东亚峰会.“这将意味着减少硬件和软件设计团队之间的边界,并使其成为一种规则,而不是例外,为硬件和软件设计师提供可执行的架构模型,而不是数页纸的书面规范。”

在这一点上有广泛的共识。“一个项目团队为了采用协同设计方法而需要做出的改变数量是巨大的,”公司产品管理和营销高级集团总监Frank Schirrmeister说节奏.“当你考虑到大多数项目团队是多么保守时,采用新方法的可能性与它所需的更改数量成反比。”

直到最近,从商业的角度来看,这并不重要。但即使复杂性不断上升,仍不清楚这是否足以颠覆现有的做事方式。HLS平台项目总监Russ Klein说:“公司已经能够摆脱过度设计硬件和独立开发软件,并仍然生产经济上可行的产品,特别是当他们的竞争对手也在做同样的事情时Mentor是西门子旗下的企业.“协调设计硬件和软件有很多好处,但现有的方法已经深深植根于硬件和软件开发人员的文化,以及他们工作的公司。克服这种惰性将是困难的。”

什么活了下来
尽管如此,在协同设计的努力下,还是出现了一些技术,包括虚拟原型、协同验证、高级合成(HLS)和软件合成,尽管最后一项技术并不是在传统的EDA公司内部开发的。

虚拟的平台都是硬件实现的抽象。Schirrmeister说道:“我认为,在虚拟的硬件模型上运行软件的虚拟平台朝着协同设计迈进了一小步。“虚拟平台已经获得了一些吸引力,因为改变的数量仅限于硬件,而软件人员则乐于使用它,因为它是早期和快速的。”

但这还不足以带来改变。Klein说:“协同验证产品首次让开发人员能够同时运行和调试硬件和软件。“我们认为这将是硬件和软件团队之间巨大鸿沟结束的开始。这对整个行业没有太大影响。虽然使用它的人真的很喜欢它,但它通常不会导致公司采用更合作的开发方法——尽管有明显的好处。”

在软件行业中,一些公司使用基于模型的开发方法,其中软件是从经过验证的模型自动生成的。Schirrmeister说:“想想F16项目。“大部分软件都是自动生成的。各种UML工具套件仍然存在,今天,人们正在考虑SysML。还有Mathworks Real Time Workshop这样的工具也可以生成软件。”

软件语言也有先进性。“CUDA可以被看作是一个异构的处理环境,其中gpu和cpu一起工作,”Raymond Nijssen指出Achronix.“OpenCL是fpga在这种情况下的另一个应用。”

在硬件领域,SystemC是为了连接两个世界。的技术营销顾问Tom Anderson说:“架构师可能只写一个描述,也许是在SystemC中OneSpin解决方案.“但在设计过程中,它被广泛修改,以产生适合合成的RTL代码,以及在SoC的嵌入式处理器上运行的C/ c++代码。”

使用泛型C代码还会出现其他问题。”高级合成(HLS)做的是抽象的事情,但你不能只是下载一些软件,然后通过HLS来获得硬件。”“你必须以一种可预测的方式编写输入,并且你知道它将被映射到硬件中。”

解决这些问题的一种方法是在通过HLS运行C代码之前使用实用程序来优化它,Max Odendahl说Silexica.该工具执行自动和指导代码重构,使代码可由HLS编译器合成。然后我们分析代码以找到并行性,并自动插入HLS pragmas来指导编译器如何在硬件中实现函数。这种方法可以显著降低使用HLS的障碍,并优化IP的性能。”

通过必要性来改变
有两件事可能导致突破——必要性和/或机遇。

弗劳恩霍夫大学的扬克说:“压力是存在的,无论是用于L4/L5自动驾驶的极其高效的人工智能处理器,还是用于分布式传感器网络的超低功耗设计,或者用于触觉互联网的超低延迟通信。”“如果像RISC-V这样的开源硬件架构从学术界走向工业界,并且互补的开源设计工具正在成熟,也许突破确实会加速。”

行业压力也在发生变化。Achronix的Nijssen表示:“周转时间正开始越来越多地推动这一趋势。“系统已经达到了可以手工进行分区的规模,你可能会做得更好,但你没有时间或人来做这件事。因此,你要在效率方面付出代价,让这些工具更快地给出结果。”

技术也可能迫使变革。“我们看到现有的被打破方法门拓的克莱因说。“在过去,作为软件开发的算法将作为运行在嵌入式处理器上的软件部署在嵌入式系统上。如果它们运行速度不够快,答案很简单,就是获得更快的处理器或更多的处理器,处理器供应商不得不在更大的集群中提供更大、更快的内核。我们现在所看到的,尤其在推理空间上卷积神经网络最大的问题是,他们根本无法以足够快的速度运行软件。这些算法必须在硬件中实现,至少是部分实现。对许多开发商来说,这是一个新领域。”

机器学习正在为行业内的变革创造机会。Imperas首席执行官Simon Davidmann解释说:“业界已经创建了庞大的软件堆栈,比如TensorFlow和Caffe,它们是用于进行ML和推理的复杂软件算法。”“现在他们问,我们可以在什么平台上运行它?人们试图把它放在x86 SMP上,在gpu上,他们意识到这仍然需要很长时间。他们需要的是并行硬件。他们需要有大量加工机的大型织物。15年前,每个人都在构建这些硬件结构,而没有软件。今天,全世界都有这种软件,他们需要更好的平台来运行它。因此,我们已经进入了一个完全不同的领域,他们拥有软件,并试图构建一个硬件结构,以有效地并行执行这些软件。这创造了建筑的复兴。”

这不仅仅是推理迫使更多的硬件解决方案。Klein补充道:“我们也看到视频处理正在推动软件的发展。”“不断增加的图像分辨率和帧速率正在推动一些计算负荷超出软件所能解决的范围。我怀疑会有与处理某些协议相关的算法5克套件将推动算法开发人员转向硬件实现。”

原始概念的一个问题是它依赖于完全确定的平台和工作负载。公司首席技术官加金德•帕内萨(Gajinder Panesar)表示:“你从架构探索开始,包括一些粗略的计算,一切都很顺利。UltraSoC.“但人们会把事情搞砸,有时甚至非常严重。您需要对系统的可见性。像20年前软硬件协同设计那样的开环系统是行不通的。您需要一个闭环系统,在这个系统中,您必须与现有的硬件共存,但要提供整个系统内部的可见性,并提供信息,这些信息可以馈送给某个自动代理,告诉它一切都表现得很好,或者不是。然后你可以提供一些补救措施或一些明智的调整来解决问题。”

新的机遇
一些新技术正在创造机会,要么是因为它们改变了现状,要么是因为它们推动了我们利用现有技术所能做的事情。

RISC-V处理器ISA架构就是这样一种技术。它提供了一个可以生成解决方案的规范。“RISC-V代表了一个非常有趣的机会,”克莱因说。“这是开发者可以优化设计的额外维度。作为开源软件,我们应该会看到很多传统处理器IP无法实现的创新和创造力。”

这代表了一个有趣的合作设计机会。OneSpin的安德森表示:“在硬件和软件之间切换功能并非易事,而且这种情况很少发生。RISC-V可能会稍微改变这种情况,因为该规范允许自定义指令添加到处理器中。是否在硬件中实现新功能的决定可以在项目的后期做出。这给验证过程带来了压力,因为必须验证新特性,并且必须证明基线功能是完整的。任何RISC-V验证解决方案都必须足够灵活,以适应这种扩展。”

即使在验证之前,预先分析也很重要。“先进的软件分析工具是必须的,这样就可以创建软件知情的硬件,”克里斯琼斯,营销副总裁Codasip.“当然,通过软件统计分析生成的硬件有机会实现更多的自动化,尽管人工指导的输入总是更有效。RISC-V架构的开放性使其成为ISA优化创新方法的沃土。”

这种可能性有多个方面。Imperas的大卫曼表示:“我们在三个领域看到了创新。“首先,在个人说明书中;第二,在结构和它们与不同处理器的布局方式上,第三,在新的内存层次结构上。传统上,你有L1, L2和L3缓存,这似乎工作得很好。但随着新面料的出现,这种结构不再正确,人们需要对其进行创新。”

固定的硬件解决方案可以创建有限的解决方案。”嵌入式FPGA解决了这一限制,允许设计针对bug和新功能进行更新。”“为了这个好处,它牺牲了一些功率和性能,但它也允许对硬件实现进行一定程度的定制,没有它是不可能的。eFPGA中的算法可以随着系统的使用而修改自己,以适应系统的环境。这对于在该领域学习的系统至关重要。”

这并不像在高层次抽象上编程软件那么简单,但是结果更有效。“fpga以难以编程而闻名,”Nijssen说。“当然,与推出一些Perl或Python相比,这不是在公园里散步,但很多人都在尝试做一些事情。fpga的普及已经取得了很大的进展,这得益于英特尔对Altera的收购。正在发生变化的是,加速工作负载不是静态的。它需要高度可编程,而且它在不断发展,甚至是后硅时代。”

这从根本上改变了系统的协同设计观点。Nijssen解释说:“在文献中,你会发现加速器作为一组固定的功能加速度呈现给协同设计工具。”您可以在eFPGA中进一步使用这些概念,因为函数库变得更加丰富。这对于协同设计来说是一个巨大的机会,可以提出更有效的映射。然后他们可以选择哪些函数将在加速器中。实际上,编译器是在提供自己的指令。”

机器学习在这方面可能会有影响。克莱因说:“算法体现在某种形式的软件中,可能是c++、Python或R。”编译器技术可以用于这些算法的自动转换。我们看到很多人对在这种能力下使用高级合成很感兴趣。这可能是最终将硬件开发人员从RTL推向更高抽象级别的催化剂。”

一个不同的空间
当您开始质疑一个体系结构选择时,其他的也会出现。Nijssen预测:“你将看到对更细粒度的协同处理的需求。”“这也带来了缓存一致性的问题,因为它变得越细,你就需要更多的控制来管理内存资源,这样你就不会在内存传输的方式上有任何冲突或不一致。”

其他人则认为有必要改变记忆系统。UltraSoc的Panesar说:“缓存是魔鬼的诅咒。”“我知道这对某些事情来说是必要的邪恶,但一旦你放入缓存,系统就不再是可预测的。有了机器学习,我们也有了一种不同的编程范式,它将打破硬件,因为硬件一直停留在以前的编程范式中,局部性和时间假设不再有效。”

现有的工具必须适应这些新出现的机会。“我们在RISC-V世界中发现,人们没有构建复杂的乱序管道,他们没有投机地执行——他们正在构建64位有序相对简单的管道,没有很多超标量,”Davidmann说。“我们可以在这方面做很好的时机分析。我们可以通过评估软件在单个处理器上运行的方式来进行性能分析,然后允许您添加指令并为它们设置计时,并帮助人们调整算法在硬件上运行的方式。这与过去的情况大不相同,过去人们期待的是精确的周期计时。”

系统也变得更加动态。Panesar说:“你可能需要在产品的整个生命周期内调整你的系统。“将会有软件更新。传感器发生了变化。环境发生了变化。所有这些都会影响在硬件上运行的软件的行为。一些芯片将有一个片上分析子系统,它将从监视器中获取数据,并进行级别调整或局部异常检测,然后在某些情况下,这些信息将被转换为元数据。例如,在物联网领域,你可能有一些东西可以增强本地分析或云中的异常检测。”

结论
20年前,很多人对协同设计寄予厚望。这次会有所不同吗?现在下结论还为时过早。

克莱因说:“人们被迫应对这种情况。“我们才刚刚开始。也许我们最终会得到一种同时适用于硬件和软件的语言。但是,那时,我希望我们能在设计系统方面取得更大的进步,而不是像现在这样把软件和硬件分开来设计。向硬件和软件一起开发的文化阻力是一股非常强大的力量,需要很长时间才能克服。”



1评论

罗恩Lavallee 说:

“如果你总是做你一直在做的事,你总是会得到你一直得到的。”

留下回复


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

Baidu