中文 英语

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

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

受欢迎程度

在过去的20年里,油气行业一直在寻求硬件/软件协同设计的概念。在取得进展的同时,软件/硬件协同设计似乎有着更加光明的未来。

为了理解这两种方法之间的区别,有必要定义一些基础知识。

硬件/软件协同设计本质上是一个自底向上的过程,首先开发硬件时要有一个关于如何使用硬件的一般概念。然后将软件映射到该硬件。这有时被称为基于平台的设计。最近的一个例子是手臂新的可扩展嵌入式边缘开放架构(SOAFEE),旨在实现软件定义的汽车开发。

相比之下,软件/硬件协同设计是一个自顶向下的过程,其中软件工作负载用于驱动硬件体系结构。如今,这正成为一种更流行的方法,它的典型代表是AI推理引擎和异构架构。高级综合也是这种方法的一种形式。

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

但随着摩尔定律的扩展速度放缓,如今还有其他压力在发挥作用。微软首席执行官西蒙•大卫曼表示:“现在的情况是,软件正在驱动硬件的功能治之软件.“产品需要更高效的软件,这将推动硬件架构的发展。”

两种方法都没有优劣之分。“我们看到了硬件优先和软件优先的设计方法,这两种方法都不会产生次优结果,”Tim Kogel说Synopsys对此.“在AI中,优化硬件、AI算法和AI编译器是一个相位耦合问题。它们需要一起设计、分析和优化,以达到优化的解决方案。举个简单的例子,AI加速器中本地内存的大小决定了AI编译器中的最佳循环平铺。”

成本是这个等式中非常重要的一部分。“协同设计是为特定问题实现高度优化硬件的一种非常好的方法,”Andy Heinig说,他是微软高级系统集成小组负责人兼高效电子部门负责人夫琅和费IIS自适应系统工程部.“但这种高度优化是这种方法的缺点之一。优化设计是非常昂贵的,因此,这种方法只能在生产的设备数量非常高的情况下才能工作。大多数应用程序不需要优化的硬件,而是使用更灵活的体系结构,可以在不同的应用程序中重用。高度优化但灵活的架构应该是下一代硬件/软件协同设计流程的结果。”

高级合成
几十年来,从软件自动生成硬件一直是学术界和工业界的目标,这导致了高阶合成.“在CPU上运行的软件并不是高级合成的最佳代码,”安诺普·萨哈(Anoop Saha)说,该公司战略和业务发展高级经理西门子EDA。“映射本质上是串行代码到并行块,这是具有挑战性的。这就是HLS的价值和你如何去做。的用法SystemC它有多线程的原生支持,但它是面向硬件的,而不是面向软件的。”

这种方法仍然面临挑战。腾讯营销、软件和人工智能解决方案总监尼克•尼(Nick Ni)表示:“我们一直在持续投资,并继续增加对它的采用。赛灵思公司.“十年前,99%的人只会写字Verilog而且硬件描述语言(VHDL).但是现在我们有超过一半的开发者在一个IP上使用HLS,所以我们在采用方面已经取得了很大的进展。我认为,从硬件/软件协同设计的角度来看,没有任何东西真正起飞。在语言方面有很多有趣的提议,使其更加并行,更加多处理器友好,这些都是朝着正确的方向发展的。例如,OpenCL一直在努力实现这一目标,但它已经失去了动力。”

基于平台的方法
基于平台的设计并不试图注入尽可能多的自动化。相反,它依赖于基于分析的人为干预。“硬件/软件协同设计已经出现了很长一段时间,”微软的研究员兼系统架构师迈克尔•弗兰克(Michael Frank)表示Arteris IP.“很长一段时间以来,人们一直试图用真正的软件来评估平台的行为和性能。该行业一直在构建更好的模拟器,如Gem5和Qemu。这已经扩展到包含加速器的系统,在这些系统中,您可以构建加速器模型,并通过在加速器上运行部分代码来卸载cpu。然后你试着平衡这一点,把更多的功能从软件转移到硬件。”

Arm最近宣布了一个新的软件架构和参考实现,称为嵌入式边缘的可伸缩开放架构(SOAFEE),以及两个新的参考硬件平台,以加速软件定义汽车的未来。Arm汽车和物联网业务部门汽车业务副总裁Chet Babla表示:“为了满足汽车的软件定义需求,必须提供一个标准化的框架,以增强经过验证的云原生技术,并在汽车应用程序中实现实时和安全功能。”“同样的框架也可以使其他实时和安全关键用例受益,例如机器人和工业自动化。”

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

临界点
有人认为,英伟达用CUDA创造了一个临界点。虽然这不是第一次创建新的编程模型和方法,但可以说是第一次取得成功。事实上,它把一个深奥的并行处理硬件架构变成了一个针对特定类别问题的通用计算平台。如果没有这一点,GPU仍然只是一个图形处理器。

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

Xilinx的Ni同意这一观点。“如果用户可以添加显式并行,就像CUDA或OpenCL,这总是最简单的。这使得它显式且更容易编译。充分利用管道,充分利用内存,仍然是一个不容忽视的问题。”

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

当软件必须满足延迟需求时,需要专门的硬件来部署软件。Imperas的大卫曼说:“许多人工智能框架被设计为在云中运行,因为这是获得100个或1000个处理器的唯一方式。“现在的情况是,人们希望所有这些数据都在终端设备上处理,并在物联网的边缘附近处理。这是软件/硬件协同设计,人们构建硬件来实现软件。他们不像20年前那样,先制造一块硬件,然后再看看上面能运行什么软件。现在,它们是由软件的需求驱动的。”

虽然人工智能是一个明显的应用,但趋势远比这更普遍。“正如Hennessy/Patterson所说,人工智能显然正在推动计算机架构进入一个新的黄金时代,”Synopsys的Kogel说。“摩尔定律正在失去动力,预计未来10年设计复杂性将增长1000倍,人工智能的要求超过了摩尔所能提供的。唯一的出路是创新计算机架构,根据目标人工智能应用程序的特定需求定制计算、存储和通信的硬件资源。”

经济性仍然很重要,这意味着虽然硬件可以针对一项任务进行优化,但它通常必须保持足够的灵活性来执行其他任务。Cadence公司的Young表示:“人工智能设备需要是多功能的,并且可以进行不同的改造。“例如,监控系统也可以监控交通。你可以数出有多少辆车在红灯后排队。但它只需要识别一个立方体,以及它背后的立方体,并聚合这些信息。它不需要面部识别的分辨率。您可以训练设计的不同部分以不同的分辨率或不同的尺寸运行。当您为32位CPU编写程序时,就是这样。即使我只使用8位数据,它仍然占用整个32位路径。你在浪费其他部分。 AI is influencing how the designs are being done.”

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

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

图1:y图方法,在硬件平台上映射应用程序工作负载,构建虚拟原型进行宏观架构分析。来源:Synopsys对此
图1:y图方法,在硬件平台上映射应用程序工作负载,构建虚拟原型进行宏观架构分析。来源:Synopsys对此

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

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

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

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

聚在一起
单纯的硬件优先或软件优先的方法不太可能长期成功。这需要合作。世界语公司的弗拉纳根说:“人工智能应用需要一个全面的方法。“从低功耗电路设计师到硬件设计师,再到架构师,再到软件开发人员,再到数据科学家,并扩展到最了解其重要应用的客户。”

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

完全自动化可能需要很长时间。杨说:“这将始终涉及到人体工程学方面的问题,因为这是一个非常困难的决定。”“你在哪里定义这条线?如果你犯了一个错误,代价可能非常高昂。这就是为什么模拟、模拟和原型非常重要,因为你可以运行‘如果’场景并执行架构权衡分析。”

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

结论
新的应用程序正在迫使改变软件的编写方式、硬件的定义方式以及它们之间的映射方式。定义新软件范式的瓶颈已经被打破,我们可以期待看到硬件-软件结合流的创新速度加快。它是否会扩展到运行在单个cpu上的连续C空间?可能暂时不会。但最终,这可能是问题中非常小而微不足道的一部分。



留下回复


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

Baidu