中文 英语

对系统分区划分

距离我们可以从软件自动化系统优化功能?目标保持移动,但是工具不断变得更加能干。

受欢迎程度

构建一个最优的实现一个系统使用功能描述一直是行业的目标很长一段时间,但它已经被证明是比听起来更加困难。

总的想法是采取软件运行在一个处理器和使用各种类型的替代硬件来提高性能。可以指定性能的各种方法和为特定的应用程序。开始的问题当你试图自动化功能,尤其是软件可能是纯粹的起点C或c++。这些都是非常通用的语言,这使得他们很难分析和操作定义的指令集处理器。

今天的系统通常包含多个异构处理器,包括dsp、gpu和cpu的各种大小。他们也可能包含可编程的面料,和系统的某些部分需要定制的加速器。

坚持软件
软件有很多积极的特点。“最值得注意的是,它可以更新,”拉塞尔·克莱恩说,HLS平台总监导师,西门子业务。“今天,它通常可以更新空气,有时从最终用户没有任何帮助。这意味着您可以修复bug并添加功能,你可以做与固定的硬件。让事情在软件最小化风险,不仅在开发过程中,在产品的生命周期。因此,任何可以被软件,应该在软件”。

但这所有的时间的解决方案是不可能的。“什么驱使我们将在硬件功能,他们不能在软件运行速度不够快,或它们消耗过多的权力或太多的精力在软件实现的,”克莱恩补充道。“软件的缺点是它是低效的。有点不合常理,但更大的CPU软件正在运行,效率越低的力量和精力。”

几乎所有的解决方案需要实际的混合。“大局观点是理想的硬件和软件之间的平衡,”凯文·麦克德莫特说,负责营销的副总裁和规则的软件。“你想要适量的固定硬件功能,提供了实现成本降低和效率,与软件适应性提供灵活性需求随时间变化的。”

它引发了一个问题关于什么应该留在软件。“应用程序代码是否连续关键路径通常不会受益于投入专门的硬件,而且应该保持在软件,”罗兰霍布斯说,产品和技术营销主管Silexica。“你可以做变频时钟的如果你需要为特定的函数,它运行得更快或能耗的原因,你可以下来。”

今天,随着RISC-V和一个不断发展的基础设施,使指令扩展的空间站和一系列的实现对于给定的空间站,即使知道软件在任意可能的处理器的性能变得更加困难。“直到现在,选择扩展一个ISA和添加自定义指令与一些处理器是可能的,但是如果没有一个一致的软件生态系统和广泛的行业支持这个未能吸引广泛采用,“还说治之麦克德莫特。但是调优一个处理器的承诺,以更好地解决应用程序仍然是一个持久的概念。”

虽然这在过去是不可能的,它变得更容易。“RISC-V上下文,你必须有一个ASIP发生器提供足够高的质量,”Frank Schirrmeister说高级组的产品管理和营销总监节奏。“你可以把指令集和修改,添加说明,看看对高级特性的影响。每次你在这一水平做出改变,你需要将所有的工具链。从那里,您可以手动实现或你使用一个ASIP autogenerate从模板生成工具。”

迁移到硬件
有时,即使一个优化处理器不给你提供足够的性能或足够低的力量。“寻找候选人迁移到硬件不是一件难事,”克莱恩说。“Amdahl法则适用于这里。无论你需要移动到包含至少50%的CPU负载、更理想。一些基本的分析可以发现。找出减少算法更有挑战性的工作,你需要考虑哪些数据访问的功能。你离开的CPU需要任何数据访问移动,。性能和功率损失很大,所以你需要确保你最小化数据移动——即使这意味着把更多算法的硬件。”

选择什么地方并不总是那么容易定义,虽然。“理想化的硬件和软件之间的平衡折衷建议与光滑边界过渡接近无限的灵活性,”麦克德莫特说。“当然,这不是那么简单,更细粒度的。硬件可以是完全固定的,天生的,或者允许一些可配置的控制选项从一个状态机或micro-coded处理器硬件。同样,软件抽象从汇编语言到C,或一个微内核的优点、操作系统或操作系统管理的任务和要求。”

适合使用迁移是什么?“通过识别关键路径的函数内并行应用程序的,设计师可以执行假设分析,确定功能移动到一个加速器,“Silexica的霍布斯说。”工具可以通过执行概要文件应用程序代码执行的动态分析和显示调用图,显示每个函数的执行时间——包括每一行代码的执行时间和内存访问每个应用程序中。可视化表示帮助你找到这些关键路径。在调用图您可以选择功能,检测每个函数中的并行性,可以利用一个定制的加速器。”

并行性是关键。“硬件乘法器以同样的速度跑,就像里面的乘数CPU、“导师的克莱恩说。“是什么让硬件速度是它可以并行地做事情。你可以做1000同时增加硬件。移动一个串行算法的CPU硬件不会帮助。事实上,它可能会让事情变得更糟。任何进入硬件必须能够利用并行性。”

节奏的Schirrmeister一直提议,有八个方式纯函数可以变成实现。它们是:

  1. 重用一个硬件块如果现成硬件IP。
  2. 手动在硬件实现的函数作为一个新的块。这是美好的。
  3. 使用高级合成硬件(HLS)来创建一个新的块。
  4. 使用一个可扩展的和可配置的处理器核心创建一个硬件/软件实现。
  5. 使用工具来创建一个特定于应用程序的指令处理器(ASIP)及其相关软件。
  6. 使用软件自动化创建软件从系统模型(如UML或SysML)和一个标准的处理器上运行它。
  7. 手动实现软件和一个标准的处理器上运行它。
  8. 重用的软件模块如果现成软件知识产权。

“这些方法来实现一个街区,”Schirrmeister说。“但是真正的问题是高一个档次,稍微正交,这是我怎么分手的事情,我把在哪里?”

有时这些选择是由市场决定的。“fpga软件的好处,但他们更慢,更多的权力比asic饿,”克莱恩说。“你需要考虑的另一件事是设计能否经得住时间的考验。与可编程结构,可以适应变化。任何人都放在一起5克系统规格完成之前应将任何硬件可编程结构。这也是真正的算法是快速变化的地方,就像我们今天看到的人工智能。”

优化为了什么?
是够优化的一个因素,但大多数设计必须考虑多个。说:“只有一个性能Schirrmeister。“刚刚这工作是最重要的。你也要考虑成本,转化为区域,和权力,这是受到多少投入硬件加速器对中运行的软件。”

优化不同的设计和应用。“对某些人来说,这就是力量,但对其他人来说,权力不是关键因素,”霍布斯说。“我们限制时钟频率,这就是我们如何获得设置你放入HLS编译器。我们考虑两件事,时钟频率的约束和资源约束水平。当你把这两件事你可以得到一个近似的功耗。我们不设定功率约束,但是你可以近似的力量。”

权衡需要合适的平台的分析。“虚拟平台长期以来提供一种方法来测试和开发软件硬件可用之前,已经广泛采用了硬件验证在专业DV流soc和处理器,”麦克德莫特说。“建筑分析总是被视为潜在的感兴趣的领域,但对于缺乏现成的问题真正的软件来分析。”

这是一个问题,因为硬件通常是设计软件可用之前,使整个自上而下流不切实际。

“我们希望帮助用户迅速做出决定,然后专注于实现,而不是努力获得绝对的性能和资源数字,“霍布斯说。“我们希望能够提供它迅速。所以你可能会牺牲准确性,但足以使决策。然后你可以瞄准一个实现你舒服和从这些工具得到更精确的数据。在处理器执行方面,这是比较容易,可以更精确的比合成的一面。但我们不谈论在性能数据或资源消耗巨大差异。”

一些人认为AI可能作用在寻找完美的分区。“这将是一个不受欢迎的声明,但我不认为你需要AI为了解决这个问题,”克莱恩说。“当然,AI可以成功地应用,但是,对我来说,这更多的是一种大数据和一些基本的统计数据可以解决的问题,至少在大多数情况下。你需要找到数据的并行性和集群有效分区系统。这可以通过跟踪系统运行在现实条件下的典型数据加载和分析这些痕迹。当然,这超出了标准的“gprof”痕迹,但所需的工具通常可用。”

一个实际的流
假设一个自上而下流之后,有几个步骤和转换。“每次你犯了分裂,你必须有一个相应的套接口实现如果他们不能自动合成,“Schirrmeister说。“每分你要看看两个街区之间的界面,找到一种方法,他们重新缝合在一起。可以用接口的合成,这只是一个聪明的组件库,可用于组装。”

然后你必须回去,并确保系统功能维护。“在系统层面的交互可能仍然需要进行分析,“霍布斯说。“你可能需要管理时间和访问是同步的,仲裁。”

”的运动数据,并行性和开发人员定义的总体体系结构都还通过修改源代码的编译和约束算法,”克莱恩补充道。“成功迁移算法从软件到硬件需要人理解硬件设计。不是软件的人无法学习如何做到这一点,但他们通常没有培训和背景需要达到一个有效的实现。”

每一块的功能转换。“最坏的方法是一个硬件开发人员一些c++源代码,和最好的希望,”克莱恩说。“任何手册翻译依赖于开发人员理解,然后正确地实现,该算法。这几乎肯定会介绍微妙的问题,很难清除。”

需要一个过程。“我们是帮助软件开发人员识别并行性,然后帮助他们与接口,“霍布斯说。“硬件专家知道HLS和他们深入应用程序使用这些工具,可视化的复杂函数,发现并行性和识别关键路径。但即使是找到正确的语法和指令来指导编译器的实现有着非常大的影响设计,没有很多的可见性。这更多的是一种试错的过程。我们帮助提供快速分析,这样他们就可以很快到达最优设置”。

自动化确保最小的引入问题。“某种自动的翻译是理想,克莱恩说。“HLS工具使算法代码翻译成RTL。这绕过了人工解释的问题。但是你仍然需要彻底的验证结果RTL。幸运的是,原始算法和RTL机器可读和可执行,并且可以转化成控制/数据流图。这些都是适合执行正式的等价检查。”

在搜索的梦想
25年前的梦想,可以转换成一个实现功能描述,并没有死。问题变得更复杂,但是研究人员仍然希望得到一个可预测的流从一个高层次的描述到一个实现。它要求语义是定义良好的。

“从一个高层次的描述,我可以进入规定的目标架构,我可定义意味着我的处理器、FPGA,“Schirrmeister说。的“引擎盖下,往往是一个中间表示。CUDA的作品,因为你有一个目标体系结构定义,然后您可以使用一个高层次的描述。OpenMP工作因为你相当灵活实现下面;我看过OpenCAPI,多核映射,有工具可以描述和自动映射到硬件组件,进入操作系统。”

问题是,我们正在努力开发工具与最小数量的限制。“C表达一切,”Schirrmeister补充道。“OpenMP OpenCL,等等,有更窄的空间。这是一个纯粹的市场问题。C是一般可采用的,但我们丢掉了正确地定义语义。然而,如果你有更好的语义定义你只能代表一个小的应用程序,你会发现,它适用于减少用户。”

有关的故事
在芯片设计解决痛点
硅铅分区、调试和初步的工作列表中需要解决的问题。
分区驱动体系结构方面的考虑
专家在餐桌上,第2部分:分区最大的权衡。
分区驱动架构考虑第1部分
专家在餐桌上,第1部分:当芯片架构师优先考虑分区?
FPGA设计权衡越来越激烈
随芯片尺寸变大,优化性能和功率要求一群新的选择和方法的变化。
缩放、打包和分区
为什么编排更好的产量是那么难。



留下一个回复


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

Baidu