多核设计的重大转变

系统级的问题在人工智能和汽车迫使硬件和软件团队一起工作,但仍然存在差距。

受欢迎程度

硬件和软件工程师的工作历史悠久是彼此独立的,但是这种孤立的行为变化等新兴领域的人工智能,机器学习和汽车作为重点转向系统层次。

随着这些新市场消费更多半导体内容,它们对整个设计过程有很大的影响。这些设计的起点是数据,而不是硬件或软件,主要目标是找出如何处理数据快使用最少的能源。所做的什么硬件和软件并不总是明确的开始,它可以改变设计的进展。

感知一直都是硬件和软件开发人员之间存在裂痕,导致一个“我们和他们”的心态,经常导致指责当问题出现时,嵌入式软件技术专家科林墙壁说导师,西门子业务。相比之下,作为一个团队工作可以带来很多好处,包括:

  • 早期对硬件的访问。随着设计变得更大、更复杂的保守与多核系统软件开发需要尽早开始按计划完成。软件开发人员可以更进步更快如果他们可以运行代码看起来像最后的硬件。如果硬件团队分享其仿真模型,软件可以更详细地验证之前真正的硬件是可用的。
  • 调试。摇出多核软件中的错误极具挑战性,需要复杂的调试器或分析工具。这些工具只能用于如果适当的连接设施(JTAG等等)都包含在设计。这不是一个巨大的开销,但它需要被认为是在硬件设计的早期,所以团队合作需要在项目的开始开始。
  • 电源管理。大多数现代设计有紧迫的功耗限制时,电池寿命保护或环境方面的考虑。电源管理已经成为一个软件的问题,因为只有软件“知道”什么资源(外围设备、CPU性能等)所需的任务。实现电源管理软件,外围的硬件需要适应软件控制块(允许他们被开启和关闭),动态电压和频率扩展(调整CPU)和提供CPU的低功耗模式。作为权力的设计必须考虑从第一天,早期团队之间的合作是至关重要的。

更多的核心,更多的混乱
转移到多个核,这些多核或许多核心设计,是否需要更多这些学科之间的合作,在未来只会变得更加明显。

“多核意味着我有几个处理器在一个芯片上,这是我们已经有多年来,“说Xavier佛罗伦,产品经理有限元分析软件。“你的电脑有几个核心,人们已经开发的应用程序。现在,这一趋势是双重的。首先,将没有更多的单核处理器。铸造厂将停止生产,因为没有办法获得更多权力计算通过使用一个单一的核心。这一趋势在未来几年将多核,肯定的。那是好的为你的笔记本电脑,可以视频游戏。这是完全不同的,当你谈论高安全性的应用程序时,因为这样一个必须确保完整的电子系统,包括硬件和软件,将正常工作。”

工程师在汽车、航空航天和国防已经试图找出如何确保整个系统正常工作,他说。“除此之外,现在有许多核心平台。所不同的是,多核可能是五或六核。许多核心有更多专业和更多的计算单位。他们经常去256甚至更多的处理单元,这是一个完全不同的平台。编程这是真正复杂的一方面。另一方面,你必须证明应用程序正常工作,目前并没有人确切地知道如何实现这一目标。”

不过,尽管对硬件和软件都是有意义的团队工作同时,肩并肩,在整个设计和验证过程,这很少发生。

”汽车,有一个硬件团队和有一个软件团队和他们不说话相互迷恋,而这是非常及时断开连接,”观察到的马克斯•Odendahl的首席执行官Silexica。在硬件方面在项目的开始,基于Excel,我选择我的目标硬件平台。在某种程度上我开始实现代码,我将以后担心这是否适合或不适合我是否需要改变算法。肯定有很大的差距,但软件团队内甚至还有很大的差距。Matlab算法有一个团队,不关心如果他们写实际上是可实现在任何给定的硬件,因为他们鼓励惊人的演示,神奇的算法,最好的视觉算法,最好的识别、最好的。然后,他们随便扔在栅栏的多核实现团队,回到他们说,‘你知道,它不适合。然后来回包括,你只是不知道如何实现它,“你不是一个很好的执行者,”或者,“不,你的算法是不可能在任何给定的硬件实现。所以即使在软件团队我们看到一个巨大的鸿沟。”

从C, c++的转变,从静态调度动态调度,从裸机/超级嵌入式,POSIX实时操作系统,和自适应AUTOSAR,等等,都是发生在同一时间。扩大的差距是实施与运行在硬件仅仅因为有几层之间。

“例如,操作系统、中间件、和最终用户应用程序,”Odendahl说。“如果你看看电力火车,更嵌入,更多的裸机,静态调度,所以我可能使用Excel。但也有很大的差异。有趣的是,汽车行业似乎进一步抽象仅仅因为它是如此困难。“我有中间件,有很多不同传感器我需要把,我需要连接到云,我需要让它可更新的。我想去隔离,所以我可以有单独的团队实现它。的问题,然后你需要它。共同发展很好,但不适合在硬件上。它对确保执行根据你的要求,所有不同的场景。什么行业是做什么的?“哦,我在云中运行十亿英里,但是所有的这些是我的功能测试算法。的是可实现的硬件?这是50%的利用我的硬件或100%吗?没有人真正知道。我们要做的,一旦大演示工作。”

想着的差距
有迹象表明心态已经开始改变,特别是在汽车等市场,系统性的复杂性远远超出一个芯片,甚至一个车。

“在过去,如果你是一个软件工程师,想,‘我有这种芯片。我可以用我的软件生产,”库尔特·舒勒说,负责营销的副总裁Arteris IP。“如今,尤其是ADAS的一面,有一个人工智能组件或某种ADAS的可编程对象检测功能,或一个人工智能chip-whether为数据中心,边缘、推理或训练思维转移更多的设计决策。如果这是设计给定的一组软件算法,很明显需要发生在一个系统级的硬件和软件的观点。我应该在何种水平的细节优化这个硬件的特定软件运行我期待?这意味着硬件和软件现在比他们更紧密集成在这些用例中可能有过,除非它是一个非常详细的嵌入式应用。现在,在设计的早期阶段这些类型的芯片,无论是自主驾驶芯片或人工智能芯片,软件架构师也在那里。”

这是一个明确的进展的迹象。“以前,他们不在乎,”舒勒说。“硬件和软件之间的层/ API是越来越不通用的和更具体的这些用例,解决这类问题。这意味着什么,不过,有软件的人去斯坦福大学和训练有素的Java脚本和不知道什么是注册。还有硬件不知道的人一个系统管理程序或面向对象编程。”

虽然可能没有总协议关于当前的硬件/软件差距的程度,它一直在减少由于进步的工具,尤其是在软件原型。“这并不是说他们现在一起工作那么多,但是发展的软件可以在硬件的发展正在发生,因为创建了虚拟环境,允许团队构建整个SoC在虚拟环境中,这样做的方式循环正确,”迈克汤普森说,高级产品营销经理弧处理器Synopsys对此。“有很多需要通过虚拟环境中开发软件,确保软件与系统的其余部分适当地进行交互。软件开发通常从一开始的设计开始,即使建筑发展仍在发生,因为在虚拟环境建模他们做至关重要的硬件工程师如何把系统放在一起。”

除了汽车之外,多核cpu变得普遍在所有行业,受到几个因素的推动。首先,有一个需要规模SoC计算性能,但这是不可能的单核CPU。第二,工作负载从较小的cpu和单片机可以有效地整合到更大的多核soc。

“在汽车,有一种趋势取代电子控制单元(ecu)和多核soc的被称为“域控制器”或“汽车电脑,”罗伯特说,汽车解决方案和平台主任手臂。“但不主导市场,软件能有效地努力跟上核心数量,增加和工业中使用的软件平台,汽车、物联网、医疗和其他“实时”市场并不总是多核系统的优化。因此,他们不能意识到多核的性能没有重新设计。处理多核soc的方法之一是建立系统与真正的对称多处理(SMP)操作系统。”

另一个重要的层在嵌入式平台软件堆栈是嵌入式虚拟化,天。嵌入式虚拟化,有时被称为一个裸机,或ⅰ型虚拟机监控程序允许系统集成商师系统能够运行多个操作系统或应用程序在不同的核心在多核系统上。

处理器提供商手臂等使虚拟机监控程序的有效利用提供硬件虚拟化的功能在不同的体系结构,这意味着可以轻量级虚拟机监控程序,能够实时性能,safety-certifiable。这也意味着可以有实时和通用的操作系统,混合的安全临界水平,和一个专有的混合物,遗产和开源软件在一个多核CPU。这种虚拟化方法允许软件帮助与最新一代的多核soc的桥梁,他说。

不过,任何差距仍然是令人惊讶的考虑到硬件开发过程在这一点上,就很好理解了,软件是不可或缺的一部分。

“仍然有挑战几十个甚至几百个IP块放在一起时,关闭时间等等,但是通常我们知道怎么做,”鲁珀特•贝恩斯说,公司的首席执行官UltraSoC。“同样的,软件开发过程在单元级别就很好理解了。但在今天,大多数的问题在系统开发的时候我们一起集成的硬件和软件。当问题是第一次见过,这是他们第一次成为明显的因为你不能预测pre-silicon有依赖性,即使今天最强大的仿真平台。你不能模仿或模拟周期足以覆盖每一个可能的角落。真正的硅运行代码总是呕吐不可预见的现象。”

许多这样的错误不兼容性,贝恩斯强调。“他们可能依赖导致系统执行比它可以或应该少一点好,他们往往是安全问题,来自硬件软件交互。这与多核设计变得更加恶化,因为有那么多的排列。有一个组合爆炸。”

软件的困境
从软件的角度看起来更糟。“软件开发往往是复杂得多,这是由于自由度当你开发软件,”萨姆说那场糟糕,高级经理、研发Synopsys对此。“如果你设计一个硬件,可能有一些你可以选择不同的体系结构。与软件,这几乎是无限的。你可以解决这个问题在许多方面,“

在多线程软件开发这是尤其明显,没有很多标准的方法来做。“虽然被至少在一定程度上解决这些问题在新领域和新软件,如人工智能和图形的标准框架,它不会解决遗留软件的问题,这是大问题,”那场糟糕说。“许多,如果不是大多数,工程团队往往是重用软件从以前的项目在他们的新项目,因为没有人愿意写的,这不是一个好方法目前的旧的软件,将它转换为一个多核环境。”

具体地说,今天的工程团队想加快他们的应用程序,最好的方法就是并行化操作。但除非软件开发有鉴于此,很难看到如何这样做。“工程师不再是在最初设计软件,所以可能不是一个伟大的理解是如何联系在一起的,它是如何工作的,”他说。“所以你可能面对设计,以得到一个合理程度的性能提高多核环境。,这不仅仅是这些问题发生在这个行业。很多其他的复杂性也进来了。问题的另一个方面是,以及多核cpu,这些分布。如果你看看现代汽车,它有很多分布式处理的岛屿和每一个多核。所以不仅将您的软件的问题。所有的连接处理,,这使得整个事情更加复杂。”

给定数量的不同的方法,可能有标准化的一些实践的空间。高级组主任弗兰克Schirrmeister产品管理和营销模拟,fpga原型和硬件/软件实现节奏说,这可以从标准化的描述目标架构可以拓扑来找出应用程序或函数映射到它。

”是有道理的标准化体系结构的拓扑结构以及如何编写函数的映射,“Schirrmeister说。“一个很好的例子就是工作发生在多核协会的工作小组。如果你标准化软件(功能)地图/相互通信,你与互连类型学然后可以映射到底层硬件体系结构。一旦你标准化,你有能力写编译器和描述语言,你真的区分由编译器的质量和进入硬件。”

未来趋势
除了看系统整体和实际上,芯片上的分析可能有一个角色,说UltraSoC贝恩斯,因为它提供了实时洞察实际系统的性能。“你可以看到软件运行和如何与硬件交互。一些主要的硬件监控建设成为SoC的好处感到的跟进和软件团队。这是一个可行的方法,硬件团队可以帮助“下游”团队做他们的工作给一些硅的成本。这是某人首席技术官的问题,芯片架构师或whoever-investing过程的一部分在别处得到巨大的改善。”

展望未来,汤普森认为架构师越来越控制管理设备,建筑师,建筑师或团队将设备放在一起,然后CTO驱动设计,负责硬件和软件。“建筑发展的芯片比硬件/软件的实现变得更加重要,”他说。“如果你不使其运行在架构层面,你不妨不打扰的。系统的设备的今天,构建块本身主要系统。现在你将与10或12其他主要系统创造的总功能芯片。特别是如果你看一个视觉芯片或人工智能设备。处理水平的复杂性是惊人的。”

相关文章
展望未来的CPU
虽然cpu继续发展,性能是不再局限于单个处理器类型或过程几何。
确保异构设计工作
为什么添加多个处理元素和记忆引起恐慌。



留下一个回复


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

Baidu