高级综合(hls)软件协同设计的方法

在过去的20年中 , 该行业一直在寻求部署硬件/软件协同设计概念 。在取得进展的同时 , 软件/硬件协同设计的前景似乎更加光明 。
为了理解这两种方法之间的区别 , 定义一些基础知识很重要 。
硬件/软件协同设计本质上是一个自下而上的过程 , 首先开发硬件并具有如何使用它的一般概念 。然后将软件映射到该硬件 。这有时称为基于平台的设计 。最近的一个例子是Arm新的嵌入式边缘可扩展开放架构(SOAFEE) , 它旨在实现软件定义的汽车开发 。
【高级综合(hls)软件协同设计的方法】相比之下 , 软件/硬件协同设计是一个自上而下的过程 , 其中软件工作负载用于驱动硬件架构 。这在今天正成为一种更流行的方法 , 它的典型代表是AI推理引擎和异构架构 。高级综合也是这种方法论的一种形式 。
两者都是可行的设计方法 , 有些设计流程是两者的结合 。“它总是回到基本面 , 即规模经济 , ”Cadence产品营销总监MichaelYoung说 。“它基于您需要实现的功能 , 而这通常转化为响应时间 。某些功能具有实时的关键任务限制 。在这些情况下 , 硬件和软件之间的平衡很明显 , 因为您需要确保无论做什么 , 响应时间都在定义的限制内 。其他应用程序没有这个限制 , 可以在资源可用时完成 。”
但随着摩尔定律的缩放速度放缓 , 今天还有其他压力在起作用 。ImperasSoftware的首席执行官西蒙·戴维曼(SimonDavidmann)说:“正在发生的事情是软件正在推动硬件中的功能 。”“产品需要更高效的软件 , 这推动了硬件架构的发展 。”
这两种方法都不比另一种更好 。Synopsys首席应用工程师TimKogel表示:“我们看到了硬件优先和软件优先的设计方法 , 两者都不会产生次优结果 。”“在人工智能中 , 优化硬件、人工智能算法和人工智能编译器是一个相位耦合的问题 。它们需要一起设计、分析和优化 , 以得出优化的解决方案 。举个简单的例子 , AI加速器中本地内存的大小决定了AI编译器中的最佳循环平铺 。”
成本是等式中非常重要的一部分 。“协同设计是针对给定问题实现高度优化硬件的一种非常好的方法 , ”弗劳恩霍夫IIS自适应系统部工程高级系统集成组组长兼高效电子部门负责人AndyHeinig说 。“但这种高水平的优化是该方法的缺点之一 。优化设计非常昂贵 , 因此这种方法只有在生产的设备数量非常多的情况下才能奏效 。大多数应用程序不需要优化的硬件 , 而是使用可以在不同应用程序中重复使用的更灵活的架构 。高度优化但灵活的架构应该是下一代硬件/软件协同设计流程的结果 。”
高级综合发展
几十年来 , 从软件自动生成硬件一直是学术界和工业界的目标 , 这导致了高级综合(HLS)的发展 。“为在CPU上运行而开发的软件并不是高级综合的最佳代码 , ”西门子EDA战略和业务开发高级经理AnoopSaha说 。“映射本质上是将串行代码转换为并行块 , 这具有挑战性 。这就是HLS的价值以及您如何做到这一点 。我们已经看到SystemC的使用 , 它具有对多线程的本机支持 , 但它是面向硬件的 , 而不是面向软件的 。”
这种方法仍然存在挑战 。Xilinx软件和人工智能解决方案营销总监NickNi表示:“我们一直在持续投资 , 并继续提高它的采用率 。”“十年前 , 99%的人只写Verilog和VHDL.但是今天 , 我们有超过一半的开发人员正在将HLS用于一个IP , 因此我们在采用方面取得了很大进展 。最重要的是 , 我认为从硬件/软件协同设计的角度来看 , 没有任何东西真正起飞 。在语言方面已经有很多有趣的建议 , 使其更加并行 , 更加多处理器友好 , 而且这些绝对是朝着正确的方向发展的 。例如 , OpenCL真的很想达到这个目标 , 但它已经失去了动力 。”