异构soc调优

仅仅增加更多的内核并不能保证更好的性能或更低的功耗。

受欢迎程度

将多个处理器核心打包到一个设计中是一回事,但要确保硬件与软件的需求匹配,或者确保软件以最佳方式使用硬件则困难得多。硬件和软件团队现在都面临着这些问题,很少有工具可以帮助他们充分理解问题或提供解决方案。

设计团队继续增加更多的复杂性,他们希望软件能够优化功率/性能的权衡。但这是谁的问题,又将如何解决?目前答案还不清楚。

增加更多的核心可以使规格看起来更好,但这种方法很少会带来正确的解决方案。at公司物理原型产品营销总监汤姆•德舒特(Tom de Schutter)表示:“增加更多处理器是一个简单的解决方案,但从软件的角度来看,很难利用所有的处理能力。Synopsys对此.“这是因为缺乏可以帮助解决并行处理相关问题的工具和方法。的SoC团队仍在努力找到合作的最佳方式,并找到一种方法,让系统中的所有东西都得到使用。”

Anush Mohandass,营销副总裁NetSpeed系统,是一致的。“你不能只是说,‘我有这样一个伟大的架构,它有一千个处理器,并期望软件重组它们的代码来利用它。“这样不行。你需要一些通用的api,从这些api开始,你必须推动软件的采用。”

大多数遗留软件是顺序代码。“典型的解决方案是,你不能仅仅通过编写连续的代码来发展这些应用程序,”库玛尔·文卡特拉玛尼(Kumar Venkatramani)说Silexica.“你必须开始做一些并行的捕获和规范。即便如此,挑战变成了如何处理多个任务并将它们映射到多核平台上。这不是一个简单的调度问题,你不能用循环调度来解决它。你必须在地图上投入更多的智慧。”

嵌入式领域经常使用专门的核心来帮助系统优化。“如果我们能以可接受的成本和功率通过构建缓存一致性处理器阵列来达到所需的功能和性能水平,我们就会这么做,”超音速.“关键是,这些都不是问题的最佳解决方案。我们之所以有异构性,是因为我们试图集中硬件以更好地匹配系统应用程序。因此,我们发现有不同风格的处理器或硬连线部件在性能/功能/功率/面积矩阵方面比通用可编程处理器要好得多。”

定义问题
帮助进行映射优化的一种方法是提供基准测试,这些基准测试可以显示映射的有效性,从而可以作为优化工具进行操作。这是嵌入式微处理器基准联盟(EEMBC)正在处理。EEMBC总裁马库斯•列维(Markus Levy)表示:“在EEMBC早期,我们编写基准代码,人们可以选择自己的编译器,然后在自己的处理器上运行,这一切都是非常可移植的。”“这不再适用于异构芯片。今天,它们包括加速器,如GPU和DSP,可能还有硬件加速器。异质性的级别是无限的,所以您必须从更高的抽象级别来看待它。从基准测试的角度来看,我们开发了一个可以在特定架构上运行的模板。但我们的目标是,人们将接受并修改它,使其与自己的自定义实现一起工作。”

目前正在讨论几种编程模型。“它们高度依赖于应用领域,”微软系统与验证组产品管理高级组主管Frank Schirrmeister指出节奏“OpenCL是一种选择。OpenMP和MCAPI是其他的替代方案,其他图形特定的编程模型(如CUDA)也是如此。挑战在于将高级编程模型映射到实际的硬件结构中,这有时是通过编译和运行时多核通信框架完成的。这一切都是关于将硬件从编程本身抽象出来。”

这个问题有几个层面。“在这个行业中有很多倡议,”认证平台集团的架构专家詹姆斯·阿尔迪斯(James Aldis)说想象力的技术.“总是需要一种用于捕获应用程序的编程语言,许多新的/现有的语言都在确保它们支持异构和并行应用程序。目前最有趣的可能是OpenCL-C和像c++ -AMP这样的专有语言,但c++可能是长期的赢家。”

然后是平台本身。Aldis继续说道:“我们还需要支持不同平台上的语言实现。“虚拟体系结构试图抽象底层处理器及其体系结构,以便在编译时不需要硬件细节,这种体系结构尚处于起步阶段。”

一个这样的尝试正在多核协会内进行。“大约一年前,他们宣布了SHIM(多核软硬件接口)的第一个版本。新利体育在线完整版Silexica.“我们现在正在研究下一代标准。该标准定义了一个XML文件,该文件将描述核的数量、核的类型、不同大小的内存、通信体系结构。它是公共汽车吗?是NoC吗?什么频率而且电压的岛屿存在吗?然后我们可以使用编译器技术来理解软件,不仅在计算需求方面,而且在哪个时间点发送了多少数据方面。”

垫片
多核协会SHIM 2。礼貌Silexica

移动数据对于整体性能同样重要。“原则上,通信开销限制了可伸缩性,”David Kruckemyer说,他是微软的首席硬件架构师Arteris.“在早期,当你想要共享一段数据时,你必须检入所有的缓存。你必须在很多不同的地方检查,因为你要复印。他们非常简单,他们到处检查。当你把系统放大时,你得到(N2在沟通方面。这为可伸缩性设置了上限。因此,他们实现了目录和窥探过滤器来跟踪副本在整个系统中的位置。在面积上有一个小的权衡,但在可伸缩性方面是一个胜利。”

任务图
一些组织正在处理映射和优化问题,并将任务图作为其核心。EEMBC首先定义用例,例如ADAS或嵌入式视觉.每个用例都被划分为内核级的单独处理步骤,每个步骤都封装在µBenchmark中。这使它能够在任何可用的计算设备上运行,然后捕获每个步骤中固有的处理性能和延迟。然后使用有向无环图(DAG)将它们组合在一起。基准测试在异构架构上的可用计算设备上部署μ benchmark节点,确定最佳分布和应用程序流程。

Synopsys的De Schutter解释了原型是如何实现这种优化的:“在硬件和软件的边界上,我们试图通过提取问题和查看任务图而不是软件堆栈来帮助创建原型。您可以查看您想要执行的任务类型,并可以探索它们是如何映射的,以及这将如何影响特定应用程序的整体性能和性能概要。这也有助于构建系统。”

硬件和软件方面的工具仍然有很大的差距。De Schutter继续说道:“在硬件方面,我们已经提出了许多工具来探索并行性,并在软件和硬件中需要实现的内容之间进行权衡。“但当你进入软件世界时,我们有一些机制可以提供帮助,但它更初级,往往更多的是一遍又一遍地运行测试。软件社区似乎需要更长的时间来接受变化和新方法,并理解新功能或原型的功能,这些功能或原型可以帮助解决硬件相关问题。”

已经有一些尝试从硬件世界获取知识并开发工具来帮助软件开发。“Imperas 1.0走的是一条使用模拟来帮助用户优化多处理器平台软件的道路,无论多处理器平台是同质的还是异质的,”ibm销售副总裁拉里·拉皮德斯(Larry Lapides)说治之.“我们走在时代的前面,我们没有足够的软件方面的知识来构建有效的解决方案。其他公司,如关键的蓝色他从另一个角度攻击它:“我怎样才能并行化软件?他们通过分析软件并找到可以并行化的潜在领域来做到这一点。在接下来的10年里,他们转移了重点,因为他们还没有找到一种自动化的方法,而是提供了一种利用他们的工具的服务模式。”

今天,Silexica正试图做类似的事情。除了拥有可以将任务映射到处理器上的工具之外,它还试图解决遗留问题。Silexica的Venkatramani说:“并行器可以吸收传统的顺序C代码,并允许你探索这个空间。“编译器中有数据级并行或任务级并行等技术,这些是我们用来分析C代码的固有技术,无需修改或编译。由此我们可以提取出可能的并行度。有了这些信息,你就能知道该把时间花在哪里,从而获得最大的效益。”

Silexica公司的Odendahl解释了它的工作原理。“我们同时做静态和动态分析。静态分析以前已经做过了,但是它并不是非常成功,因为您被限制在您真正能够理解的C的子集中。因此,我们同时进行静态和动态分析,从而对应用程序的执行有代表性的理解。我们可以提供从静态分析中收集到的附加信息。它不仅是并行度的识别,而且是目标时序的分析。这必须考虑到目标平台,以便能够理解热点。然后,如果您发现了不重要的位置,那么在该位置进行并行化可能就没有意义了。但是如果您发现了一个热点,那么您就必须开始查看控件和数据依赖项。我们可以提供风险分析,提高生产率。”

大多数嵌入式系统都有多层复杂性,当设备上运行多个操作系统和用户定义的应用程序时,这种复杂性就更加复杂了。“当你用不同的操作系统实例(也许是管理程序)构建一个新产品时,不同内核上各种软件的引导和管理是硬连接在一起的,”微软产品管理和营销总监Warren Kurisu说Mentor Graphics的嵌入式软件部门.“这是一个巨大的工程努力,但不是火箭科学。问题是,一旦你开始重新配置投资,你只是在重新做一遍工程。这就是代价高昂的部分。”

同样,需要一些框架概念。Kurisu列出了一些必须解决的问题。“跨异构处理器配置和部署多个操作系统和应用程序;跨异构处理器核心以协调的方式有效地启动多个操作系统;多核处理器上孤立子系统之间或异构处理器之间的通信;可视化异构多核平台上异构操作系统之间的交互;专有功能,允许开源和专有环境与所有上述功能的互操作性。”

在所有这些之后,您可以开始考虑任务可能在哪里实际执行。

结论
目前正在尝试几种解决方案类型。他们中的一些人创建虚拟指令集,这样代码就可以映射到各种各样的处理器。其他人创建api,允许每个平台看起来有点通用。其他的方法是定义平台或硬件/软件边界。还有一些编程语言或现有语言的扩展。

很明显,这个问题还远远没有解决,这个行业还处于起步阶段。前面还有很长的路要走,问题越来越难解决。希望解决方案出现的速度比问题变化的速度快。

有关的故事
异构多核头痛
在一个系统中使用不同的处理器对功率和性能来说是有意义的,但这会使缓存的一致性变得更加困难。
Silexica:多核软件自动化
德国初创公司分析核心数量和类型,编译软件。
异构系统挑战增长
如何确保不同种类的处理器在SoC中工作。



留下回复


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

Baidu