中文 英语

软件驱动更多硬件设计

功能和新的操作系统成为soc的起点,但硬件仍然很重要。

受欢迎程度

软件工程师在芯片和系统公司内部的影响力正在增长,扭转了几十年来将软件与最快或最节能的硬件相匹配的趋势,并提出了迄今尚未回答的问题,即SoC设计将发生什么变化。

这种转变在为手机和平板电脑等大批量市场开发的芯片上表现得尤为明显。这种情况也发生在为服务器和网络开发的高价值处理器上,以及为一些对功率或性能至关重要的应用开发的处理器上,比如汽车和汽车物联网/万物互联设备。在所有这些市场中,都有足够的工程资源和足够的价格弹性,可以花时间先把功能做好,然后再找出解决工程挑战的最佳方法。

这是硬件-软件协同设计背后的最初想法,但随着半导体行业从20世纪90年代开始分解为无晶圆厂芯片制造商,这种方法从未受到像芯片制造商这样的公司的关注CoWare预期。最近大量的大型收购,加上完全集成的系统公司(如苹果、三星、谷歌和亚马逊)的增长,重新激活了这个市场,提高了这些设计中软件的价值。虽然硬件仍然是使系统工作的关键——可以说还有更棘手的问题——但软件现在在定义需要包括哪些功能以及优先考虑哪些功能方面有更大的利害关系。

微软产品管理和企业发展副总裁Patrick Soheili表示:“软件正在推动硬件计划eSilicon.“我们看到对硬件加速器的需求越来越多。最重要的是,用Python定义东西的人比用Python定义东西的人更容易找到Verilog而且硬件描述语言(VHDL).这是一个巨大的转变,而且已经发生了一段时间。软件并没有取代硬件,但它是建立在硬件之上的。”

这一点在创业公司的融资中也很明显。2014年,软件领域的风险投资增至198亿美元,较2013年增长77%报告国家风险投资协会半导体硬件没有上榜。

但这些数据也有一定的欺骗性。虽然风投对投资芯片或EDA初创公司兴趣不大,但他们很愿意为开发人工智能和深度学习的公司提供资金。在这些情况下,硬件是专门为在其上运行的算法而构建的,而不是相反。

亚马逊、谷歌和Facebook正在开发的数据中心也是如此。亚马逊的重点是商业。谷歌的重点是搜索,而Facebook的主要标准是图像和面部识别。每一种都需要非常专业的设计。

“ASSP无法处理这些差异,ASIC也不能,”Soheili说。“如果你想要令人难以置信的快速搜索,一切都必须越来越快。复杂性越来越深,但芯片并没有变得更小或更容易。如果你想管理进出数据中心的电源,你就必须去掉延迟或电源。”

针对特定市场的新操作系统
另一方面,软件也需要为特定的目的而创建,这就解释了为什么有这么多新的操作系统正在创建——专为物联网/物联网编写的裸机、极其高效的代码。手臂mb2014年10月的推出是这一趋势的开始(或者至少是它的复兴)。5月,谷歌推出钢丝球同月华为推出了LiteOS.还有许多其他操作系统也在逐渐获得市场份额,包括基于bsd的TinyOS、思科的NX-OS,以及英特尔和Mentor Graphics的一些较老的实时操作系统,这些操作系统正在互联汽车信息娱乐等领域找到新的应用。

“如果你看看智能手表,它的操作系统很小,而步长追踪器的操作系统要小得多。节奏的系统开发套件。“所以你有一个非常特定于设备需要做什么的低级操作系统,你可以在裸露的金属上完成所有这些。专注于有限数量的事情更加专业化。根据应用领域的不同,你可以根据操作系统进行设计。它具有相同的抽象级别,所以你不必看运动传感器来利用它,你可以使用API。”

他说,除了某些市场,专业化也在发展。因此,在医疗保健领域,将会有更多的安全性,而在休闲等其他市场,对安全性的关注将会减少。

半导体行业和软件行业已经玩了很多年的捉对厮打了,有时他们比其他行业更紧密地合作,有时则完全分开工作,以至于软件团队和硬件团队第一次在员工会议上交换名片。

“这种转变的一部分是从智能手机开始的。超音速.“操作系统环境决定了什么硬件是有用的。例如,你需要一个基本的硬件集合来支持Android。如果你回顾一下,微软和英特尔可能是我们所见过的最完整和平等的。在这个领域,它基本上是détente。”

他说,当应用程序开发人员推动在多个芯片上运行他们的代码,而不是只由一个供应商生产的代码时,这种联合开发的转变就发生了。虽然这使得软件更加便携,但它以更好的性能和更低的功耗为代价,这些性能和功耗可能会被升级所抵消摩尔定律以及90nm之前的经典缩放。

Wingard说:“在有限的形式因素和物联网中,我们可以容忍的懒惰程度已经降低了。”“你能够运行的软件层的数量也必须缩减。但物联网不仅仅是硬件和软件。它也是你进行计算的系统。”

上下左右移动
硬件方面的这种转变最明显的证据可能是三大EDA公司对软件的日益关注。Synopsys对此去年收购Coverity是其中最突出的一个,但所有大型EDA公司多年来都在以某种方式涉足软件领域。

Synopsys负责IP和原型开发的营销副总裁John Koeter表示:“Coverity标志着行业的一个非常重要的趋势。“软件驱动的设计已经成为现实。在没有在模拟器或FPGA原型上运行软件的情况下制作芯片是非常罕见的。客户需要原型设计和软件开发平台的解决方案。”

一开始只是一个实验,现在几乎无处不在。公司总经理Zibi Zalewski表示:“几年前,硬件仿真主要由硬件团队使用,而软件团队则坚持使用虚拟平台Aldec微软的硬件部门。“早期为软件开发人员提供平台的需求导致了混合解决方案,例如连接到硬件模拟器的虚拟平台,这允许软件人员使用模拟器中实现的最新RTL源在整个SoC上工作。所有这些都是为了软件测试和不同软件层的早期交付——驱动程序、中间件、操作系统框架,当然还有应用程序。此外,从硬件验证解决方案提供商的角度来看,现在客户的需求肯定是由软件团队驱动的。像‘在你的工具或协同仿真api上实现的操作系统启动时间是多少’这样的问题现在很常见。”

Zalewski指出,增加对软件的关注也会给硬件带来好处。早期的软件测试允许进行更多的硬件测试,从而揭示使用典型硬件测试未检测到的问题。

这种变化究竟有多大,何时开始,在一个分解的全球生态系统中是不可能确定的。有很多不同的观点。但可以肯定的是,每个人都认为软件在未来将比过去发挥更大的作用。

“我们正在进入一个软件定义硬件的时代,”微软董事长兼首席执行官查理·亚纳克(Charlie Janac)说Arteris.“如果我有一个商业模式,我与自动驾驶汽车共享服务,我想要构建软件来实现这一点,我会向硬件供应商指定硬件是什么样子的。不是先创建硬件架构,而是由软件定义硬件的功能。”

变化的定义
这里需要注意的是,软件驱动设计的定义差别很大。软件驱动的设计、软件定义的硬件或软件定义的网络这些术语已经交替使用了一段时间。所有主要的EDA公司都使用硬件原型来促进早期软件开发,大部分工作都集中在驱动程序上。

这种方案的新特点是基于功能的更量身定制的硬件规范,它可以在软件和硬件中定义,这取决于应用程序和开发该规范的公司的重点。它还可以涉及更多的软件堆栈上下迭代,并通过硬件设计返回,只要有足够的容量和价格弹性。
这在单个公司,甚至这些公司内部的单个芯片设计中是如何发挥作用的,差异很大。不过,大多数专家都认为,即使是那些没有完全改变方法的公司,也有很多唾手可得的机会。

“不同的公司有不同的侧重点。导师图形竞赛部。“很明显,在软件领域,你可以比在硬件领域更深刻地影响性能。但我们也没有看到人们充分利用软件来降低功耗。在软件方面,开发人员过去不必太担心功能,因为他们没有那么多的控制权。现在他们需要满足功耗规格,我们看到更多的人将他们的软件带入仿真和FPGA原型。”

他指出,大部分的活动仍然发生在驱动程序上,因为即使在理想的条件下,它们也很难编写和调试。但随着这些驱动程序的开发,更多的软件可以作为虚拟原型在其之上分层,因为它通常被这些驱动程序与硬件隔离开来。

Klein解释说:“作为一名驱动程序作者,你真的很想引入一个示例应用程序,因为你需要真实的模拟来排除所有的错误。”他说,目前还不可能有一个完整的硬件设计模型,并为该模型开发软件,因为加载应用程序和运行它需要很长时间。但他表示,在较低水平上仍有足够的进展,以保证改善硬件和软件之间的交互所需的时间。

结论
虽然这种对软件优先的关注可能看起来像déjà vu,但现实是整个生态系统正在发生变化。为电脑甚至手机创建的操作系统笨重而缓慢,就像通用处理器不再被认为是执行某些代码的最快和最有效的方式一样。

变化在各个方面都是不断的,但在软件方面变化更明显,因为低效率的问题只是偶尔得到解决。随着这些低效率被消除,硬件将需要更多的改变。随着软件与特定功能的联系越来越紧密,尤其是在电池寿命非常有限的情况下,软件上的变化将开始对硬件设计产生更大的影响。

eSilicon的Soheili表示:“半导体行业正在增长,因为所有这些软件都需要基于某种东西。”“但我们看到的是更深层次的复杂性,而不是广泛的复杂性,这是由不同的功能驱动的。这就像把全科医生比作神经科医生。两者都是知识,但它们处理不同类型的复杂性。”



2的评论

卡尔·史蒂文斯 说:

有没有人考虑过像OOP对象那样的硬件结构,使参数通过值传递,但数据通过引用传递?

然后功能可以在硬件或软件中完成,因为要完成的逻辑功能是最重要的。
编译源代码以在CPU上运行只是执行源代码的一种方式,也是最昂贵和最慢的方式。
程序的基本流程是执行一个比较,然后启用一个或多个赋值,然后在下一次比较时重复。设计硬件来比CPU更有效地完成这一点是很简单的。
重要的是,逻辑功能可以表示为程序流,可以作为程序运行,也可以在硬件中实现,因为面向对象程序的模块化结构类似于硬件的模块化结构。

garydpdx 说:

Karl,使用IEEE 1666 (SystemC库和TLM-2.0接口)在C/ c++中进行设计,将为您提供您所描述的设计抽象。对于具有硬件-软件分区的系统级设计,在设计探索过程中跨越边界是由蒙特利尔理工学院(U de Montreal’s polytechnic Institute)提出的,现在是Space Codesign技术的核心。请访问我们的网站,并利用参考资料部分获取背景信息和白皮书,以及我们YouTube频道上的演示和演示。(还有SlideShare、Twitter和LinkedIn。)

留下回复


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

Baidu