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


基于平台的方法
平台的设计不会尝试注入尽可能多的自动化 。相反 , 它依赖于基于分析的人工干预 。“硬件/软件协同设计已经有一段时间了 , ”ArterisIP研究员和系统架构师MichaelFrank说 。“人们一直在尝试使用真实软件来估计平台的行为并评估其性能已经有一段时间了 。业界一直在构建更好的模拟器 , 例如Gem5和Qemu 。这已经扩展到包含加速器的系统中 , 您可以在其中构建加速器模型并通过在加速器上运行部分代码来卸载CPU 。然后您尝试平衡这一点 , 将更多功能从软件转移到硬件中 。”
Arm最近宣布了一种新的软件架构和参考实现 , 称为嵌入式边缘可扩展开放架构(SOAFEE) , 以及两个新的参考硬件平台 , 以加速汽车的软件定义未来 。副总裁ChetBabla表示:“为了满足汽车的软件定义需求 , 必须提供一个标准化框架 , 以增强经过验证的云原生技术 , 这些技术可与汽车应用所需的实时和安全功能大规模协同工作 。”Arm的汽车和物联网业务线的汽车 。“同样的框架还可以使其他实时和安全关键用例受益 , 例如机器人和工业自动化 。”
这适用于某些类别的应用程序 。“我们看到更多的硬件/软件协同设计 , 不仅因为处理范式发生了变化 , 而且硬件范式也发生了变化 , ”西门子的Saha说 。“过去 , 硬件是非常通用的 , 上面有一个ISA层 。该软件位于此之上 。它为软件和硬件之间的边界以及它们如何相互交互提供了非常清晰的分割 。这缩短了上市时间 。但为了改变这一点 , 他们必须改变软件编程范式 , 这会影响投资回报率 。”
一个引爆点
有人建议Nvidia用CUDA创建一个引爆点 。虽然这不是第一次创建新的编程模型和方法 , 但可以说这是第一次成功 。事实上 , 它把深奥的并行处理硬件架构变成了一种接近通用计算平台的东西 , 可以解决某些类别的问题 。没有它 , GPU仍然只是一个图形处理器 。
“CUDA远远领先于OpenCL , 因为它基本上使并行平台的描述变得不可知 , ”Arteris的Frank说 。“但这不是第一次 。托勒密(加州大学伯克利分校)是一种建模并行性和建模数据驱动模型的方法 。OpenMP , 自动并行化编译器——人们已经在这方面工作了很长时间 , 解决它并非易事 。将硬件平台构建为编译器的良好目标被证明是正确的方法 。英伟达是最早做到这一点的公司之一 。”
Xilinx的Ni表示同意 。“如果用户可以设置显式并行性 , 例如CUDA甚至OpenCL , 那总是最简单的 。这使得编译更加明确和容易 。充分利用管道 , 充分利用内存 , 仍然是一个不平凡的问题 。”
AI
的影响AI的快速发展已将焦点从硬件优先转向软件优先流程 。“了解AI和ML软件工作负载是开始设计硬件架构的关键第一步 , ”EsperantoTechnologies的CBOLeeFlanagan说 。“人工智能中的工作负载在模型中被抽象地描述 , 人工智能应用程序中有许多不同类型的模型 。这些模型用于驱动AI芯片架构 。例如 , ResNet-50(残差网络)是一个卷积神经网络 , 它推动了图像分类密集矩阵计算的需求 。然而 , 机器学习的推荐系统需要一种架构 , 该架构支持深度内存系统中跨大型模型的稀疏矩阵 。”
当软件必须满足延迟要求时 , 需要专门的硬件来部署软件 。“许多AI框架被设计为在云中运行 , 因为这是获得100个或1000个处理器的唯一途径 , ”Imperas的Davidmann说 。“现在发生的事情是 , 人们希望在端点的设备中以及靠近物联网边缘的设备中处理所有这些数据 。这是软件/硬件协同设计 , 人们正在构建硬件以启用软件 。他们不会构建硬件 , 也不会查看其上运行的软件 , 这是20年前发生的事情 。现在 , 他们受到软件需求的驱动 。”