中文 英语

软件定义硬件增加地基了

人工智能应用程序正在促使芯片制造商再看看不同选项可重构硬件。

受欢迎程度

的传统方法在基于x86的cpu上运行通用软件的蒸汽对于许多应用程序由于摩尔定律和并发的指数增长放缓在软件应用程序的复杂性和规模。

在这种环境下,软件和硬件的不同是由于x86架构的统治地位。”的必要性和硬件加速器的出现改变了这种关系,现在软件程序员需要了解底层硬件架构为了编写高效的软件,”拉塞尔说詹姆斯,AI的副总裁&计算策略想象力的技术

如果这听起来很熟悉,它应该。在2000年代早期,有一个隆起的兴趣与公司如变色龙软件定义硬件,Trimedia和一些人试图刺激采用可重构计算方法,能够很快的根据情况改变计算为了适应应用程序。

“人工智能,你实际上想要计算网络更新正确和足够快,”Frank Schirrmeister说,集团董事,高级营销解决方案节奏。“在2000年代早期,当软件定义硬件被认真讨论,人们不完全预见的结束Dennard扩展Amdahl法则,现在所有的事情都是理解。现在,我们准备好了,我们只花了15年,因为我们真的需要架构的域特异性。”


图1:微处理器数据趋势。来源:节奏

但特定于域的架构有一个缺点。

体系结构可能是固定的,和可编程性是很困难的,所以你需要回到你的编程模型的概念实际上程序这部分,”Schirrmeister说。”已经说过,真的很艰难的磨练在一个特定的体系结构没有给它自由配置至少一点。否则,你基本上回到了ASIC / FPGA的问题了。可重构的部分给你一个目标领域体系结构,然后在它给你,因为重构性,空间更新。这是一个非常明显的和有趣的优势。你想要真的足够灵活配置的内容,这就是为什么软件定义硬件/可重构硬件复出。人工智能将是一个很大的起点,推动对重构性。”

许多人同意。塞吉奥Marchese、技术营销经理OneSpin解决方案说,是复杂的fpga如Xilinx整个的、与可编程逻辑设备和大量的资源(AI引擎、cpu、dsp、等)。“工程师编写人工智能软件(框架水平),有一个工具链自动配置硬件、优化特定的软件,”他说。“这是伟大的原则上,特别是当算法可以快速变化对人工智能和其他削减edge-applications一样。然而,将最后一个周期挤出硬件以获得性能需要更改在RTL级和工程师的专业知识。此外,任何更改RTL需要彻底重新核定,尽可能使用正式的确定方法。这包括正式的等价性检查以确保FPGA实现目标功能。”

如果重新配置是足够快,理论上它甚至可以在运行时进行,但这个流是不现实的,Marchese说。

有不止一种方式来实现这种可配置性。通用运行NVIDIA的CUDA gpu,专有并行软件平台,是一个很好的例子。“今天,我们有很多不同类型的硬件加速器,fpga全定制asic如谷歌TPU,”他说。“需要多个计算类型也扩展到嵌入式SoC域,cpu、gpu, dsp、NNPUs,等等,都可以集成到一个芯片上。这导致所需的软件定义范式硬件、软件定义了硬件的运行程序。从云数据中心服务器到手机等嵌入式设备,愿望都是一样的。”

具体地说,软件定义的硬件基础设施(SDHI)进一步扩展这个地方基础设施选择一套几乎集成计算处理器,运行软件有效地正确的元素。“有效运作这些硬件加速器需要一个软件计算的框架,使底层软件语言有效且高效地利用所有可用的硬件,“想象力的詹姆斯说。“一个例子是流行的软件计算框架,OpenCL。这和其他框架固定工作在两种主要类型的硬件加速器——像GPGPU底层硬件架构,或全部定制ASIC和fpga, hardware-programmable ICs可以达到一定比例的性能相比,相同的设计在一个完整的定义ASIC”。

OpenCL框架提供了必要的结构、api和资源来执行底层c语言算法可用的硬件。这是很重要的,因为更大的利用率和效率可以通过启用并行执行在均匀/异构计算核心。gpgpu和FPGA之间的区别是,在FPGA的情况下,使用HLS OpenCL内核映射工具硬件内核的交涉,而不是一个执行的内核底层固定架构硬件加速器。

有几个努力使软件更接近硬件多年来,包括:

  • OpenCL,开源,可以编译和合成为实际硬件设计,或者映射到现有的计算体系结构(如gpu)。
  • CUDA和张量RT,使软件编程更接近硬件(尽管在这种情况下,硬件架构是基于GPU和固定)。
  • CUDA SYCL,开放竞争对手。
  • SystemC,时机带注释的C语言。
  • HDL-Coder Matlab。

高级合成(HLS)工具,所有硬件最终被定义为软件。抽象级别是一种方法从另一个主要区别。RTL(硬件描述语言(VHDL)或Verilog)是一种硬件描述语言在半导体行业中广泛应用。RTL编译器、合成和地点和后端布局工具RTL代码映射到一个集成电路物理布局文件(GDSII或OASIS)。

作为一种语言RTL运作非常不同于一个“软件”的语言和C一样,主要区别是执行顺序。

“C,像许多其他软件语言,执行顺序,这是一个CPU的运行方式,”詹姆斯说。“RTL并发执行所有的代码行,其他的设计师必须显式地代码执行顺序规则。这种差异意味着,它通常需要硬件设计背景的人正确理解和编写RTL代码。编写RTL代码是一个长期和艰苦的过程,如果行为或算法模型可以合成RTL代码,那么这可能使更快的设计过程。HLS工具来做这个已经存在了过去30年左右,但更抽象的症结一直经常导致更少的最佳硬件设计(抽象点球)。FPGA供应商提供内部OpenCL FPGA实现工具,使更广泛的开发人员使用FPGA(没有深入RTL设计和编码经验)”。

为什么SDH是必要的
软件定义的硬件具体指的映射应用fpga,代替昂贵的特定于应用程序的soc的发展。不过,这个词也可以更广泛地用于任何特定于域的可编程、可配置的SoC是针对一组选定的应用程序进行了优化。蒂姆•Kogel主要应用工程师Synopsys对此说这个词适用于形式服从功能的一般原则,在芯片设计功能确定计算架构。

软件定义的硬件需要每当通用cpu、gpu或需求方不提供必要的性能和/或计算效率,当专用硬件不提供必要的灵活性。“受欢迎的例子是IPs和soc人工的加速度神经网络,这需要高灵活性来适应快速发展的神经网络图,而且定制架构来实现所需的性能和功率效率,”Kogel说。“根据目标市场的需求,这将导致各种可编程和配置计算机体系结构,从通用cpu与向量扩展,优化的gpu,向量dsp、fpga、特定于应用程序的指令集处理器,register-programmable数据路径。”

詹姆斯认为SDH至关重要。“计算框架抽象的开发人员,在某种程度上,从底层硬件架构,和开放式计算平台如SYCL再进一步和允许更高的抽象底层硬件(在开发人员级别),”他说。“写OpenCL对GPGPU这定义了硬件执行定义的内核。写OpenCL FPGA加速,这将创建一个完全定制的内核在FPGA上。为一个包含一个CPU的SoC编写OpenCL, GPGPU和专门的神经网络加速器,这可以使异构计算最大效率的执行。”

但是这种方法不是没有挑战,尤其是当AI。

“人工智能是一个快节奏,快速发展的技术,所以任何这方面的产品需要开发,验证,验证和部署很快或者他们失踪的船风险,”他说。应用SDH ASIC设计方法会导致一个硬件架构,有多种类型和数量的计算元素。这些计算元素会更通用的,和其他更多的固定功能,但结合将给最好的灵活性时,算法和应用程序开发软件现在和将来,都给一种适应未来房展的安然度过AI进化程度风暴足够长的时间,直到下一个ASIC。”

这可能看起来像计算硬件的完整的民主化,但并不是所有的计算核心都是平等的,而且他们都不会执行同样。这就是硬件供应商可以创建添加自定义垂直分化优化到开放计算框架,或者或者,完全自定义优化关闭计算解决方案。

同时,硬件软件定义的无竞争的优势是能够增加显著改善性能和计算效率。Kogel召回谷歌2015 TPU v1深层神经网络运行15到30倍和30到80倍的能源效率比现代cpu和gpu在类似的技术。“AI的确是特定于域的架构的杀手级应用,它提供了一个尴尬的并行性,以充分利用定制的处理资源。因此,我们看到一个新的黄金时代的计算机体系结构,促使成百上千的芯片设计项目,设计的数量开始前是不断下降的。”

但最大的挑战与软件定义硬件的复杂性是必要的软件编程流程。“需要复杂的编译器和运行时环境地图应用程序定制的硬件和充分利用可用的资源,”他说。“开发有竞争力的软件流需要重大投资和硬件和软件团队之间的密切合作。”

其他识别类似的问题。“如果你看看人们在神经网络,神经网络更好的符合一个扩展的c++描述比大多数其他的东西,因为它是一个异步的网络小流程描述,它符合计算范式叫做CSP(通信顺序进程),”凯文·卡梅伦说,顾问卡梅隆EDA。CSP是通信顺序进程,70年代以来已经存在但从未实施。一个问题有很多这个东西在硬件/软件权衡语言,这样的人是很困难的,和软件工程师不会做VerilogSystemVerilog。它是昂贵,很难。”

不过,卡梅伦认为如果的一些概念c++被扩展以支持硬件描述语言在做什么,以及事件驱动指令和数据通道,也许工程社区会使用它们。

“人们认为OpenCL很棒,但它并不觉得它了,”Schirrmeister说。“仍有各种各样的编程模型。今天有非常酷的,有趣的架构重构性,但我们如何计划?它的编程模型是什么?这些都是有趣的问题来回答。”

其他工具和方法
虚拟样机添加另一个可配置的旋钮。在计算机体系结构和软件开发的规范流程,虚拟样机可以联合优化算法,编译器,和建筑。

“我们的想法是创建一个高级仿真模型,使权力/应用程序工作负载的性能权衡分析,编译器转换,和硬件资源,“Kogel说。“我们的目标是提出一个最优的硬件和软件实现团队的规范。加速投放市场的时间等在高度竞争的市场AI SoC设计、虚拟原型使左移位嵌入式软件的开发和编译器。在这里,一个仿真模型作为一个虚拟目标pre-silicon验证和优化的编译器,固件和驱动程序的早期发展,以及早期AI加速器融入主机主机CPU上运行的软件栈”。

结论
这些方法最终成功还不清楚。日益明显的是需要设计的灵活性以应对持续的软件和市场需求的变化,加上硬件本身并不能提供更高的性能。而不是更快的硬件建设,重点是调整硬件提供足够的性能,同时仍然能够留下足够的灵活性来适应变化。

这是一个艰难的平衡,它需要知识的一些复杂的硬件和软件的编程。但如果方法正确,结果可以显著改善在速度和功耗,剩下有足够的灵活性来添加一些设计能否经得住时间的考验。



留下一个回复


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

Baidu