不再依赖假设,要的是精准预测

在线性编程任务中,首选工具仍然是电子表格。然而面对现有系统设计复杂度到达三维挑战时又该如何应对呢?Andrew Caples在本文里讨论了嵌入式工程师不再是通过基于经验的猜测,而是使用最新的软件工具,使自己的设计取得最佳效果。

不久以前,在下一代处理器和SoC的设计阶段,新的功能和特性都已经规划和设计好了,这是远远在用户的需求到来之前发生的。

我甚至记得当时在新处理器发布的时候,嵌入式软件开发人员还不得不被迫思考一下,怎么才能创新地使用好这些处理器里新发布的功能和特性,来使自己的产品和同类竞争品相比能到达足够的差异化,从而让自己的产品不至于落伍。

到现在,从很多方面来看,情况都已经发生了巨大的变化。软件工程师对计算能力的要求已经无法得到满足了。一个芯片里到底能搭载多少内核呢? 现在的实际情况是软件开发人员在正在推动或者倒逼半导体厂商尽快提供更多的芯片计算能力,自动驾驶、人工智能、还有5G只是其中的一些应用例子。

这些垂直市场似乎前景一片光明。软件工程师们不仅已经使用完了现代多核SoC的所有计算能力,在可预见的未来SoC可用的额外计算能力也早就已经在计划中分配使用完。产业在发生巨大变革,比如从Classic AUTOSAR到Adaptive AUTOSAR,车辆中的集中式计算将让位于分布式计算。这一变化将促使半导体必须要提供相当于嵌入式超级计算机的产品,从而跟上下一代系统的步伐。

对嵌入式开发者而言,难度在于对现有系统进行芯片整合和代码重构优化的同时还要生成下一代功能所需的代码。这并不是说现有的系统不够复杂,恰恰相反,现有的系统已经相当的复杂,如果要确认这点只需要问问现在负责做软件系统集成的软件工程师即可。

随着越来越多的核心被添加至SoC,软件正被逐步整合,软件开发人员面临的是优化系统的挑战。毕竟,更多内核提供了更多选项来分配流程、任务和线程。我想大家可以试着回忆一下关于排列的公式:

nCr = n! / r!(n – r)!

相信我,不用通过数学计算就知道,根据可用的内核数量以及需要映射到核的软件任务数量,其可能发生的不同的排列组合将以千万级别指数快速增长。

但是,问题本身不是任务到核的映射,而是如何去仿真测试这些任务到多核的映射。要测试系统是否正确地将任务映射到核,将需要用到非常复杂的工具。这样的工具必须要能够兼顾任务依赖性、内存访问负担、通道消耗、软件依赖性等等,这不是一场零和游戏。

将任务从一个核移动到另一个核可能会增加内存开销、通道负担、变量访问和许多其他依赖关系从而导致相关的延迟,这样一来可能会导致一系列问题,比如性能问题、错过事件、竞争条件等。相对于硬件开发人员拥有较为先进的EDA工具来帮助他们解决类似问题,软件开发人员则没有这么幸运,同样这些问题在软件开发过程中发生时没有什么手段可以使用。

当系统设计变得越来越复杂,EDA工具的确提高了硬件开发人员的工作效率。但是,对于软件工程师来说,现有工具的能力好像已经停滞不前了。

因此,我看到电子表格现在仍然在用来帮助做多核任务映射和调度。是的,在一维问题上,电子表格可能是完美的。然而,问题是现代的系统设计已不再是线性的一维问题,它更像是一个魔方,拥有多维优化空间需要考虑。然而,今天的设计工具还停留在和过去使用的线性工具的能力一样。

Cube_Blog-lets-stop-assuming-and-start-predicting-precisely

我想现在大家能看到我的观点了。与每个系统设计一样,各种系统性能假设必须做出。在以前,这些性能假设可以在系统设计完成前得到验证– 可以说当时的自动化设计工具能来帮助验证这些假设。今天,复杂多核系统的软件开发人员则很难去验证这些假设,因为自动化设计工具能来帮助他们回答由于不同任务映射和调度下的多核性能分析(比如存储访问、通信通道等的开销负担)的自动化工具(做what-if分析)并不存在。用过往的系统设计经验数据很难回答简单的问题,比如我需要4个还是8个核来完成设计呢?怎么才能分布这些任务到多核系统,来提高性能、数据包处理和响应速度?对于嵌入式软件开发人员而言,现在可供使用的工具要么成本太高,要么速度慢,要么没有扩展性,要么不存在。

我虽然还没有市场或经验数据来支持这一伦点,但是通过我和大量嵌入式开发人员进行过的交流以及他们提供的数据,得出的结论是许多软件问题的产生原因都能追溯到系统设计过程中的不准确假设。更不幸的是,由不准确的假设导致的问题可能在项目开发周期的后期才出现:绝大多数在产品开发中最后的软件集成阶段。

错误的假设会导致错误的系统设计决定,这将造成许多问题只有到设计周期快结束的时候才会出现……系统开发晚期出现的问题修复恰恰是最昂贵的人力物力开销。

而这正是Silexica致力于解决的问题。

multicore-software-optimization-parallel-prgramming-improvements-heterogeneous-computing
ANDREW CAPLES

Andrew先生在科技销售与商业发展领域拥有超过25年的经验,生在他的职业生涯中用超过12年的时间为初创公司及上市公司成功打造出了多个优秀的国内和全球性的销售团队。他曾多次在世界级的物联网与嵌入开发大会上发表演讲,并发表了多篇业内文章,其主题丰富,涵盖了诸多领域,如物联网设备的安全性、工业及医疗系统的安全性、异构多核芯片的软件优化等等。

Get a full overview of the range of SLX programming tools here

发表评论

电子邮件地址不会被公开。 必填项已用*标注