异构系统挑战成长

如何确保不同类型的处理器将SoC工作。

受欢迎程度

更多类型的处理器添加到SoCs-CPUs, gpu, dsp和加速器,每运行一个不同的OS-there是一个越来越大的挑战,以确保这些计算元素相互作用和他们的邻居。

添加处理器和加速器的问题是这种混合不同的市场和应用程序之间的差别很大。在移动cpu、gpu视频和加密处理器。在汽车,可能会有额外的视觉处理加速器。在网络和服务器有各种各样的包处理和加密加速器。服务器应用程序通常依赖于通用的CPU,但未来带来更多专用加速引擎,这可能是为特定的自定义应用程序,可以使用fpga实现。

而异构处理已经使用了一段时间,它正变得越来越复杂。在1989年,英特尔推出80487数学80486 CPU协同处理器。2011年,部门推出了节电异构大。小建筑。之间和自那时以来,已经被越来越多的cpu和gpu和许多其他类型的加速器。

“这是常见的,例如,将常见的任务一个专用的硬件加速器,视频压缩,加密加速度等,”尼尔·帕里斯说,高级产品经理手臂。“这成本硅面积相比,使用一个通用的处理器,但它提供了一个效率和低的解决方案。”

从过去一个关键的区别,尽管这些不再是独立的模块在系统。

”,我们发现自己今天是所有的复杂性是按比例缩小以适应在一个手机,但同样的问题依然存在,”费利克斯鲍姆说,高级产品经理运行时解决方案导师图形的嵌入式软件部门。“你有一个SoC。你有一个芯片。它有三个或四个核心,这曾经是完全独立的设备和董事会在过去。你有所有这些相互作用。一个核心运行实时操作系统,另一个核心运行Linux,第三个核心有加密和卸载安全操作,和GPU为显示图形。”

一旦写复杂,复杂的软件,可能存在时间问题在公共汽车上或主张。但是因为现在都融入一个芯片,几乎是不可能的暴露和可视化,鲍姆说。

为了解决这个问题,有很多不同的框架为软件工程师管理软件的复杂性。但是所有的这些停止在软件层面。“我们有代理。我们有JTAG工具和其他工具来捕获锁到任何痕迹的小信息可能在这些系统收集和向用户提供可视化系统的行为。例如,这个操作系统是这样做,操作系统是这样做,我的触摸屏是没有响应不是因为操作系统的控制,因为某些并行发生了另一件事。这些非常困难的问题,”他解释道。

在过去,软件工程师用来嘲笑硬件工程师将创建模型来验证和验证设备。这些天,这是一个不同的故事。现在是软件工程师急于利用工具,硬件设计,把它变成一个芯片或董事会的软件模型。

连接处理器和软件
到连接,如缓存相干互联等公司Arteris,NetSpeed系统,超音速和手臂,一条连接在不同的架构处理器和加速器。

它不是经常会有不同的操作系统和操作系统实例的运行在一个SoC,帕里斯说。大量的处理器将会以不同的方式取决于应用程序交互,包括信号量、邮箱和中断。在服务器和网络领域,虚拟化可能运行多个操作系统实例,这些实例将共享同样的硬件。在汽车和智能机器应用程序中,多个处理器和操作系统可能需要进行交互。然后,在安全的应用程序,可能会注意在SoC提供不同域之间的隔离。例如Cortex-A处理器可以运行一个丰富的类似Linux的操作系统的用户界面和感知,Cortex-R会照顾安全关键功能包括致动器。

可以模拟跟上?
多年来,模拟验证的核心。更加复杂的异构系统的复杂性,有质疑的还可以模拟。

首席执行官西蒙Davidmann治之软件认为,它可以模拟,但一些警告。“挑战总是与环境的交互。你怎么跟现实世界中,因为在某些应用程序中你有四个或五个不同的无线电系统相互作用吗?每一个都是独立的,但它们都需要走到一起,不同的线程在软件。这显然是一个相当大的挑战。您可以使用模拟一个点,但接近产品发布时,你需要走出去,尝试系统在现实世界中。”

同时,Davidmann指出,如果只有真实世界的数据被认为是当系统尝试了,不够好,,因为它是有限的,它是如何工作的。

许多设计团队的共同目标就是让Linux启动。但随着越来越多的处理复杂性被添加到系统验证,这也许仅仅是一个起点,面临的挑战是理解上下文中的可靠性的完整的系统交互。

“现实世界并不使它非常容易,甚至让你测试在角落里的情况下,“Davidmann说。“模拟可以让你把东西移到角落里的情况。你有更好的可控性和可见性,所以如果你有一些不同的cpu的系统it-accelerators和其他活性成分在真实硬件,很难配置和控制它与特定的角落中值。然后很难看到发生了什么。而在一个软件模拟器,如果模拟器设计是正确的,它应该很容易把设计和软件进入某种状态,然后控制它。当我们正在测试一个新的处理器,我们使用所有的技术在我们的模拟器设置处理器分成不同的州,穿过几条指令,让它一步。你不需要运行它在半个小时去某处。你可以将所有你需要的值注入一定的位置,将其设置为某个状态,然后滚向前,刺激新的指令,或新的中断,或奇怪的角落,是必需的。今天工作这一事实并不表示,明天它会工作在硬件所以你需要能够探索它。”

也就是说他认为构造异构系统的唯一方法是与模拟。“虽然模拟是必要的,它是不够的。当你得到多个处理器,SMP是很困难的事情,但当你到达AMP——因为它们是异构和它们是不同的,他们都相互作用——那么它变得更加困难。你需要很多其他的工具和技术,配有一个虚拟平台,如断言,功能覆盖,代码覆盖,让你看看你验证正在运行和留意。你可以监控断言,你知道你没有违反规则,尽管它可能不会在这个时间点上,可见”Davidmann说。

分而治之不足
异构系统需要反思的老方法,。虽然各个击破的方法可能已经过去,它的叶子放在桌子上。

“有更多的缺点比优点分治法,“说Anush莫汉达斯·,营销和业务发展副总裁NetSpeed系统。“各个击破的方法非常好,如果系统是孤立的,如果他们不互相说话。考虑计算5或10年前。这只是一堆不同的CPU集群自行处理和拥有自己的版本的操作系统上运行,很少inter-compute-engine沟通。为此,分而治之的作品。模拟特定子系统的工作原理。但是只要你有复杂的交互,然后各个击破的方法分解因为它不可以暴露所有的漏洞。这就是为什么仿真流行起来。”

莫汉达斯·召回情况三年的核心仿真工作完成,然后系统启动,在本质上是15秒它耗尽那些三年的模拟。《那曾经是水平的时间表。与模拟,我们变得更好,但我们还没有特别当你谈论这些异构系统架构有cpu、gpu,加速器,需求方,一切交谈。你必须看的粘合剂是一起的。”

这通常是一个连贯的互连,如果工程团队在子系统,他们忽略了更大的图片,他们将自己暴露在更多的问题,莫汉达斯·说。”这些问题之一是死锁,你有一个等待CPU子系统,比方说,一个作为PCIe子系统,和想象一个CPU子系统作为PCIe子系统等东西。作为PCIe子系统有不同的组件。一个导致另一个,另一个的内部组件等依次从CPU子系统做出反应。你基本上有周期性的循环,一个等待另一个CPU等待作为PCIe,和作为PCIe等待CPU,所以系统本质上是陷入僵局。如果你这样做分而治之法,你的CPU验证子系统。太好了。它的工作原理。你验证作为PCIe子系统死亡和它的效果,甚至是silicon-proven。他们两人已经在不同的上下文中silicon-proven很好。 You put them together, the chip doesn’t work. Why doesn’t it work? Because there is this big deadlock that you failed to understand and failed to analyze because you were not looking at it from a system level. That is the pitfall of a divide-and-conquer method. The divide and conquer method worked really well a decade ago. Not anymore.”

手臂的帕里斯宣称,重要的是要开发的系统一起得到最好的想法如何表现,这包括处理器、互连、记忆系统和调试功能。

“模拟需要有完整的系统和分而治之。适合软件开发的性能,系统设计师使用手臂快速模型来模拟一个程序员的观点的所有硬件。获得更详细的性能,设计师可能混合分而治之,例如,从交通检查发电机的处理器互连和内存的系统特征,或运行周期模型来度量性能。也可以把这些技术。例如,手臂提供了一个交换和发挥技术与快速模型允许您快速地启动一个操作系统,然后交换周期模型准确性。关键之一是获得真正的性能数据,它是至关重要的实际代码运行在一个真正的处理器连接到系统,而不是尝试以人工方式及其交通模型,”他说。

工具与方法
工具提供商来说意味着什么?高级产品管理组主管弗兰克Schirrmeister系统&验证小组节奏认为,分而治之的问题可以逆转,“分而治之恶,防止进一步工具集成?“我的所有这些简单的答案是,是的。它仍然工作,因为很多人做分而治之,我们没能发现很多问题。有一些在不同的操作系统,只能看着。”

Schirrmeister画了一个比喻来工作Accellera的便携式刺激集团都是关于生成场景。“这是所有类型的效果,但它不是甚至在OS-to-OS级别,但在GPU-CPU-accelerator类型的领域,你评估的挑战,“我有一个缓存一致性问题。表现我的缓存是正确的如果我一定通过缓存的访问,并对当时我经历一场权力关闭在一个领域的芯片吗?这些类型的场景,在SoC级别非常复杂——即使在多SoC水平——建模有助于表达它。”

进一步说明存在的挑战,展望未来,高级产品营销经理迈克•汤普森DesignWare弧处理器Synopsys对此指出,公司的视觉处理器,与多个异构的不同类型的执行单元。他发现仍有许多均匀实现正在做,并表示在许多方面不同的挑战并不是两种结构的处理器设计。

“但是当你走出处理器,或者如果你有多个处理器,您可以有多个处理器,每个有多个处理器执行单元或内部,”汤普森说。“我们的视觉处理器可以配置八个或九个不同的执行单位。它可以独立运作。它可以独立配置。也可以一起操作。会变得越来越普遍,尤其是在应用视觉。但当我们看到一个合并的,例如,雷达和视觉,我们正在与客户想要融合来自雷达和视觉的信息。”

锡罐在路上可以用雷达看起来像一辆汽车。“视力有明显差异,可以检测到,”他说。“当你把这两个放在一起,现在你已经有了一个更完整的画面。但一起使用,数据是一个挑战,因为你要处理的雷达信息在一个宽矢量DSP结构,和你需要相同的视觉能力。现在您需要单位有不同的功能,但也很多类似的功能,但你必须把信息联系在一起。我们会看到越来越多的我们在前进。”

有关的故事
异构多核头痛
使用不同的处理器系统中,功率和性能,但它却使缓存一致性更加困难。
有多少核心?(第2部分)
扇出和2.5 d将会改变内核执行和怎样使用它们;混合架构演变。
有多少核心?(第1部分)
设计团队正在重新思考正确的数量和类型的核心,他们需要多大,和它们是如何组织的。
CPU、GPU或FPGA吗?
需要一个低功耗设备设计?你应该选择什么类型的处理器?



留下一个回复


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

Baidu