2018年3月25日 西米奇

利用仿真实现硬件设计中的小批量

客座作者雅各布·恩布洛姆(Jakob Engblom)

jakob-for-wr-jive

在里面之前的部分在这两个部分博客中,我讨论了小批量工作的一般原则,它带来的很大效益,以及如何在传统的软件开发领域外应用原则。在这一部分中,我将讨论一些关于如何应用模拟的具体示例,以实现小批量,早期调整以及硬件和系统设计的更好效率。

首先,通过查看像物联网这样的大型系统,然后看看芯片和计算机设计。

系统级小批次

想象一下,您已决定使用IoT技术构建监控网络。您可以选择每个传感器节点的有用硬件以及购买100个。您可以开发一些软件,以便在收集传感器读数的IOT节点上,并将它们返回给云服务器。您开发云服务器数据收集和分析系统。最后,部署系统,数据开始流入。有时数据流误命出了有点不稳定,并且数据缺失或在后续到预期的数据。罪魁祸首原来是购买最便宜的网络连接,GPRS ......而且您需要从节点的更多带宽。直到系统部署,这并不明显。修复此类错误金额到完整的调用:开发新版本的节点,更新软件,然后退出,带回节点,更改其无线子系统,然后重新部署。不便宜,快速,容易或流行。

您真的需要有关数据连接和系统性能的反馈,在初始设计和体系结构阶段。您希望减少批量大小和设计工作。从“构建整个系统”到“在设计阶段的快速反馈”。实现这一目标的一种方法是以更高的抽象级别模拟模型。

而不是运行实际代码的物理硬件板,您可以使用以特定速率生成数据的抽象节点来构建模拟。没有必要将实际数据从节点移动到云端,重要属性是数据的数量及其路径通过各种网络。这种模型是一种自然匹配Intel®CoFluent™物联网技术

使用CoFluent,很容易建立模型,让您在投入实际硬件和开发软件之前,先探索设计空间.这提供了一种开发模型,使系统设计和调整到一系列小批次,在继续进行详细实现之前将参数置于一系列的小批次。

体系结构反馈循环出现得比较早,而且由于您只是在更改一个抽象模型,所以更改是快速而容易的。模型比实际代码小得多,并且没有需要更改或重新配置的硬件。通过这种方式,模拟支持大规模硬件-软件系统的小批量工作,而无需构建和部署硬件迭代。

计算机体系结构与小批量

接下来,让我们看看处理器,片上系统(SOC)和其他芯片的设计方式。在这里,仿真基本上是标准的工作方式,并且已经长时间才能适度复杂。为什么?这完全是关于设计和构建工作的硬件的努力。

制造一个测试芯片的成本取决于工艺节点,但一般估计,对于一个领先的工艺来说,成本在数百万美元左右。更不用说实现硬件的所有细节和从制造中获得可用的硅需要很长时间。因此,如果一个设计师依赖于“一点代码,一点测试”的软件模型,我们将永远不会完成任何事情。

在许多方面,构建一个芯片就是“大批量”的定义——特别是随着我们看到每一代新芯片集成水平的提高。在芯片生产和测试之前,所有的部件都必须就位。这不是进行设计探索的理想方式。从设计单个IP块到集成一个完整的SoC,芯片设计是一个漫长而复杂的过程。让我们把它分解一下。

一般来说,计算机处理器核心和处理模块的架构是通过使用“周期精确”架构模拟器来完成的。的确,软件模拟器通常是计算机架构师的主要工具。通过使用模拟器,你可以很自然地得到小批量——设计现在只是软件,可以像软件更改一样容易地更改。

对架构进行更改,更新模型以反映更改,然后基于跟踪、软件、基准运行模拟——任何可以获得并针对模型执行的输入。这为架构师提供了信息,他们可以重新设计、更新模型并重复。使用基于计算机的模拟来进行计算机架构工作已经有很长的历史了,可以追溯到大约60年前的50年代末,当时IBM*使用模拟器构建了世界上第一个流水线处理器设计著名的7030“Stretch”超级计算机。计算机架构模拟有许多不同的方法,我不会在这里详细介绍——可以找到更多的分析和阅读这里这里, 和这里(以及从这些博客帖子相关的各种资源)。

硬件-软件接口小批量

除了确定IP模块如何为最大性能和最小功耗工作的架构设计,还可以在块的软件界面上进行设计工作。必须编写驱动程序和其他支持软件以使IP块和芯片实际上是有用和有价值的。

曾几何时(有时甚至是今天),硬件-软件集成是作为一个大批完成的:

这种方法会导致软件团队对硬件设计延迟反馈或者没有反馈。这又会导致硬件的出现很难编程和使用通过该软件堆栈。以下是我几年前写的一篇关于迭代软硬件界面设计的博文中的一个例子Windows驱动程序团队:

如果每个硬件工程师都明白只写寄存器使得调试几乎不可能,那么我们的工作就会容易得多。许多产品都设计了可以写入但不能读取的寄存器。这使硬件设计更容易,但这意味着无法快照硬件的当前状态,或进行寄存器的调试转储,或进行读-修改-写操作。

如果一块硬件难以编程,它通常在市场中往往不那么成功 - 如果没有支持软件,那么对用户的价值如何?因此,我们需要进入小批处理的硬件 - 软件集成,并尽早获取反馈循环。

使用模拟器,我们可以构建一些东西,编写一些程序,并且有一个短的反馈循环,有大量的机会来调整硬件和软件,以创建一个更好的系统。

这样的模拟并不一定像前面提到的架构模拟器那样具有周期准确性。实际上,要在硬件-软件界面上工作,通常使用像这样的快速功能模拟器会更好西米奇一个可以运行大的软件负载,并提供完整的BIOS + OS环境用于驱动程序和应用程序。

整合小批次

在构建了一组IP块和它们各自的软件堆栈之后,下一步是将它们全部集成到一个系统中(通常制造为一个片上系统,即SoC)。与在项目结束时将所有东西都放在一起的大爆炸大批量集成不同,集成应该在小步骤中执行、测试和验证。整合一些区块,检查它们是否有效,然后随着时间的推移使用越来越多的区块进行构建。如何在虚拟平台上做到这一点在我之前的博客文章中在英特尔™开发人员区域

总结

在这对博客帖子中,我讨论了小批量原理以及如何在小批次中进行工作提高产品质量,减少浪费,使得开发风险更少。它是替代制定的“敏捷”,更容易将作为软件外部区域的指导原则施加。专门于硬件,硬件软件和系统开发,各种抽象级别的模拟可用于批量小批次。仿真从硬件中删除了一些“硬”,并更轻松地在阶段构建事物并在设计上快速迭代。

文章最初发表于英特尔软件开发者专区

以前的风河螺旋设备云:2018年物联网年度全球大奖平台获得者
下一个Wind River加入开源计划,加速电信边缘云部署