新闻  |   论坛  |   博客  |   在线研讨会
软件:下一个大挑战
fellow | 2012-06-28 11:03:38    阅读:2263   发布文章

  看到这篇文章,觉得很不错,特翻译过来大家共同探讨,如有翻译不妥之处,敬请指教。

        如何让电子产品更加高效,软件被寄予厚望,但是事实上遇到的挑战比系统设计师想象中的要大得多。

  在软件中,有一些很重要的问题需要解决,为一些小处理器编写有效代码并非问题之一,事实上,在SoC上的微处理器会使软件问题更简单。代码可以直接跑在裸机上,有一些也仅仅是一个可执行文件,还有一些其他代码可以运行在为特殊应用写的实时操作系统或者简化的操作系统上。

  尽管这是控制功率和降低芯片尺寸的最好办法,但是让所有代码受一个SoC控制就是另外一回事了,解决这个问题的办法就要求同一个芯片具备整体性和一致性,这就需要软件架构和系统架构首先能够一起工作。这是所有厂商的共同目标,但是很难实现。

  Mentor Graphic嵌入式软件部门的软件架构师Dan Driscoll说,“一致性可以彰显其为高端软件设计,从这一点来看整体性也是需要努力去做的,但是仍然还未能解决,唯一能够起作用的就是需要一个单一的开发环境,如果使用多种开发工具,把他们集合到一个系统中,但是这很困难。”

  细节问题

  即使是主流处理器,很多厂商会使用模块或者子系统来应对这个复杂问题,他们工作在一个个小的模块上,然后再把他们集合起来,看起来像是在一个单一系统上工作。

  因为现在越来越多的软件通过芯片实现功能,这无疑就增加了软件的难度。软件可以决定哪些功能继续、哪些需要关断、以及他们的排列次序、运行速度以及优先级,它还决定某一特定的功能或者逻辑子系统消耗多少电能或者占用多少内存,起码在2D的设计中的这样的。

  Cadence产品市场主管Frank Schirrmeister说:“上面列举的就是系统中控制软件的工作,你告诉他们去运行API或者把数据传输上去,这就是比较高级的应用了,他们还可以连接一个处理器中的多个核,你可以增加由此引起的能量消耗和存储消耗。”

  多核和多处理器

  第二个难点源于所使用的处理器的类型,编写应用软件可以利用多核出现多年并且容易理解的优势(大概有四十年之久了),实际上,对于处理器工程师来说在一个硅片上增加更多的核并将之交给应用软件开发者去处理并非难事。

  对于数据库、科学计算和图像处理这应用,多核显得有点多余,即使是一些游戏的功能分析也不需要。然而,对于其他的一些应用可能会限定在2个或4个核。如果这些核都是跑在非常流行的操作系统中,比如Windows、Mac OSX或者Linux,即使事实证明它是最便利的方式,却未必能很好的执行某一项功能,。

  作为能量效率非常高的替代品,实时操作系统在军工行业应用已有多年,尽管他们考虑安全性和性能比效率更多一些。他们转向手机这样的商业应用,就特别适合在一个SoC上的独立处理上管理一些特殊应用。举例来说,为了增强声音而使用多核的通用处理器就毫无意义,如果它不需要运行在通用处理器上,那么使用通用的操作系统也就没有必要了。但是这些功能仍然需要与芯片上的其他部分共同工作,并且不会影响信号的完整性、不会产生硬件的邻近效应比如说散热、回声和电迁移。

  有经验的Driscoll说“对于大多数应用,除了8核到16核,多处理器的均衡方法根本无法实现,我们在努力的将异步多核处理作为多核处理的一部分,但是我们已经看到了一些解决方案比如TI OMAP 5,运行双核ARM Cortex A-9,A4和一个DSP处理器。你可以有6个或8个核,有一个通用的操作系统,这个操作系统可能控制其他的DSP接口,包括实时操作系统。”

  验证测试难题

  然而,这一方法会引发另外一个问题,工程师如何验证测试这个复杂的SoC,这里面包括多种类型处理器、处理器核以及多种软件和可能包括标准操作系统的中央软件管理程序,甚至包括一些起连接作用的中间件,和能够跑在裸机上的一些管理程序的虚拟机。

  Cadence公司的Schirrmeister说,“在此你首先要做的是处理一步步的错误,在这种情况下,你需要手动分割,但是如何将他们整合在一起会影响你的调试策略,二氧化硅不允许有大量的模型参与进打印机的设计中,因为他们有功能和内核的结构图。打印机公司使用二氧化硅内核,因为可以允许他们用可编程功能模块代替原来在电阻晶体逻辑电路完成的功能。连接器的工作,存储器的工作,所有在软件中完成的功能就如在裸机上、低水平的软件上完成的一样。

  Driscoll表示,尽管这是一个折中的办法,但是将所有的功能都推至下端的处理器会使整合更加复杂,而且测量功耗会变得更加困难,因为这会增加由存储引发的能量消耗。

  Schirrmeister说,这就意味着你需要数据来证明子系统或者整个系统工作在钳位信号电平,你不能出于安全考虑从外部存取一些东西。考虑到安全,在软件方面你需要灵活性,但是你又不能从外部看到他们。

  结论

  已经很努力的在寻找软件和硬件工程师之间的一种共同的语言,现在最有效的解决方案就是在结构阶段匹配目标,然后在设计处理器的时候将其转换为信息。

  实际平台允许软件先完成,所以有些功能正在实时操作系统中建立,而且,在开发一个新的的功能时,堆叠式芯片也有助于去掉一些冗余。但是,整合硬件和软件以及各种各样的软件仍然存在很多实际困难,因为需要始终关注有没有合理分配功耗,以及整个过程中软件代码消耗能量的情况。

原文链接:http://eecatalog.com/lps/2012/04/10/the-next-big-challenge/

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客