新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 在SoC器件中如何平衡嵌入式软件的关键作用?

在SoC器件中如何平衡嵌入式软件的关键作用?

—— ——“SoC软件应用讨论会”精彩问答
作者:Mentor,MIPS,Tensilica,Wipro时间:2007-12-04来源:电子产品世界收藏

嵌入式系统开发主要有板级、芯片级与台式机三大领域。在本专刊中,主要探讨了应用MCU、微处理器、DSP进行板级开发的工具。但是在美国,嵌入式开发主要指芯片级的SoC(系统芯片)。
在本刊7月期108~110页上,曾介绍了美国“2007电子高峰会议”上的“SoC软件设计讨论会”。在此报道的基础上,这里荟萃了会上的部分精彩问答。

会场:从左至右代表来自:Mentor,MIPS,Tensilica,Wipro
会议举办地——美国加州Monterey风景

多核环境vs并行化

  主持人:Gartner的John Barber:对于那些利用了并行化的架构的设计,多核环境构成了一大挑战。如果我们能克服这一挑战,Tensilica的多核推想就可能成真?
  Tensilica - Steve Roddy:我认为关键在于我们整个行业尝试并应用通用型计算的架构,还是去应用更适合于嵌入式计算的技术。我曾经对两种情况进行了比较:分别将一个嵌入了Pentium内核的器件和一个嵌入式设计提交流片前的对比。嵌入式设计利用了如下的优势,即功能度可以划分为独立的小系统,并在独立的模块中实现,从而能实现优化的功能度。过往,这些都是硬件上的模块,你在通用型的主控上有软件API(应用程序接口),让编程者访问这些硬件上存在的资源。如果你尝试过一个20~30万门阵列模块,这是一种很正常的设计风格。正是因为这些模块可能恰好是处理器,用处理器进行设计将具有更高的效率,而且用处理器进行设计将更宽容一些,你如果以处理器作为设计的基础引擎的话,则在交付流片后还可以对其进行重新编程。你有更多的处理器,也不必改变使用的模式,并不意味着你现在要面对另外的15个处理器,而你必须了解另外15种可编程设计。如果你给编程者所提供的是定义良好的API,以便访问内核-内核的资源。一般的编程者都可以轻松地应对这样的编程任务,只有SoC设计者需要知道某个模块是处理器,了解并行化软件的内核是如何运作的。
  Wipro - Siby Abraham:我与你们的看法有一点不同。如今,谈到工程,为了利用好多核架构,你必须拥有编译器、编程语言。随着你进入更高性能水平,这些工具显得更为重要。在功能被清晰划分的地方,我同意你们的看法。但是,我们越来越多地看到,应用中所采用的处理器数量增长很快,而性能如何提高也将成问题。
  Tensilica – Steve:随着时间的推移,软件的工作变得愈来愈重要。那些目前业界的标准化组织正在着手进行标准的制定,多核组织已经建立了一个工作组,着手制定关于API的标准,使之能根据多核的特点来分配workload。随着时间的推移,人们必须推出基础架构,使开发者不必去面对多核带来的复杂性,不必让一个半导体公司的客户、软件工程师,打开说明书去查清其芯片架构的每一个细节,我们不能强迫每个工程师去了解清楚芯片上的每一个细节。
  MIPS科技 - Jack Browne:我认为,如果你考察器件的复杂性,130nm的SoC上市前成本是1300~1500万美元;90nm时,成本是3000万美元。人们推出了ASSP,他们不是针对某个具体问题进行定制的ASIC。在今天的65nm和45nm节点上,人们的设计方法是大量地复用。所以80%的设计是复用的。我们需要API来推进这些开发工作,我们可以划分各种东西,划分音频Codec(编/解码器),此后,我可以将其放到任何一个设计中。但是,除了API,还应该有一个平台化的架构,以便保证你的上市时间。
  为了实现这一点,我们需要厂商能提供电子系统级的模型,这样软件人员不用去读说明书。只要有一张CD,上面有可执行的芯片模型,它的运行速度足够快。所以,你能够实现你的应用。于是,当芯片被取回来时,你就有相应的软件了。你可以解决芯片上存在的缺陷。而你可以实现相应的并行化,让芯片上的各个部分能工作。

代码编写人力不足?

  问:的代码的行数每年以46%的速度增长。而编写代码所动用的人力,则以7.5%的年均增长率成长。你看,这里的障碍在于人力的缺乏。

{{分页}}
  MIPS – Jack:人们解决这个问题的方式,同样是复用。每一件产品不能从一张白纸起步——公司采取这种策略的话,就会倒闭。你必须推出相互间有继承性的产品线。一个好的例子就是802.11。它最早是以小带宽的b开始的,而g则成为主流,而去年圣诞节,802.11n也降低到了100美元的价位,达到了消费类的空间。软件也是这样运作的。复杂性在于,你必须让数据包能四处移动,而且让吞吐率提高2个数量级。如果你第一个软件行不通的话,你在开发第二款产品时就必须重新编写,而这样的公司是没法生存的。我们这个行业对于那些策略上犯错误的公司是很残酷的。
  Mentor – Bill Chown:我继续扩展这个话题,80%的程序是复用的。但是并不是每个软件都有那么高的复用率。随着软件的开发,越来越多的软件形成了软件包、软件栈,从而能被方便地复用。因此,并不需要人力也增长46%来解决这个问题。我发现复用的一个问题是,我的手机包含了手机厂商从1990年以来编写的所有软件——这里面实在有些是垃圾。

  问:软件46%的增长速度与人力7.5%的增长速度间的差距将会逐年增大,你们最终会遇到人力方面的问题?
  Mentor – Bill:我们会发现类似的情况曾经发生过,在硬件空间中,如今的自动化技术已经无法进一步产生动力了。我们就必须引入新的人力,以便在硬件上能进一步提升其层次。看看软件领域,头号的软件工具是什么?是VI。VI中不是全套的自动化工具,它的自动化是在不断提升的,当然不一定与你提到的人力的增长速度同步。它的发展速度当然与软件代码的行数的增加是一致的。在软件空间中,自动化是一个非常开放的领域,作为我们这样的自动化厂商来说,软件业已经习惯了VI的价格,试图说服他们,自动化的价格与VI的价格不太一样,将是一项有趣的挑战。
  Tensilica - Steve:正如Bill提到的那样,也许现在复用是过多了,这会影响到用户的体验。

协议栈已成熟?

  问:当Jack提及802.11时,实际上谈论的是两种不同的软件。他所说的是协议栈,与Paul实际谈到的软件是不一样的。这个说法对吗?协议栈现在是一个比较成熟的技术了。
  MIPS – Jack:随着程序的行数,例如电视的操作系统软件从100万行程序进步到300~800万行,我再添加50万行,就可以形成相应的环境中间件,则我一旦编写完一套软件包,就可以在其他任何地方使用。你应该看到的挑战是——上市的时间。设计工程师们要完成足够好的设计。我进行的设计满足了客户的需求,而Steve所做的设计超出了用户的需求,其设计开销也是我的2倍,而且所花的时间更长,则在市场上我将会取胜。我经常遇到同行谈技术上挑战的困惑:我的设计更好,但为什么我的竞争对手能卖出去,而我却不能?当设计足够好的时候,客户就愿意为任何别的东西付钱。这就是为什么以前人们为了努力将程序缩小20%而付钱的时代早已一去不复返的原因,因为内存已经很便宜了。我在买新手机时,只要花20美元就可以买到一张1GB的内存卡。

低功耗标准化

  问:软件对于SoC的低功耗来说已经成为一个关键性的因素。现在低功耗的标准化吸引了人们的密切关注,几家组织已经希望我们能在不久的将来制定出大家都同意的标准。
  MIPS – Jack:影响功耗的问题有两个:一是泄漏,为了保证晶体管的速度,现在的栅叠层只有3个分子厚。芯片上一半的功耗都可归结为漏电。现在有许多制造方面的信息,用于解决漏电问题。另一方面,是多核和单核之间的差别。一个双倍频运行的处理器内核,其功耗将低于多个以一半的频率运行的内核的总功耗。如果你能把任务分解为若干部分,我可以在多个内核上分配这些任务,我可以关闭其中的若干个内核 。我的手机可以通过802.11网络来实现,我不需要开启GSM无线部分。这些系统的定义都可以由客户通过OEM(委托制造)来完成。你可以看到许多其他的重点,可以是标准化,等等。我们之所以从事这些工作,其原因就是设法赚钱。客户可不愿意付钱,但他们的确需要解决方案。随着时间飞轮的转动,我想,我们今天却没有我们所需要的吸引力。
  Tensilica – Steve:我认为要降低功耗,现在的层的划分太过于分明。在EDA界对共用的流程的讨论,通过信息的交换,一个针对具体架构的设计实现,可以快速优化,以便实现功耗的降低,但是在架构层次上实现,这里是实现大幅度节能的地方,无论他是像Jack所说的那样,可以把任务分配给多个更小的处理器,并针对特定的功能对处理器进行任何优化,我们对数据流的架构进行设计,提供ESL层次的建模,如果你灌入总线的数据太多,而且影响到了速度,这就也许在不同的模块间实现直接连接。通过硬件和软件方面的建模而实现更高层次上的建模,则可以实现极大的节约,并了解你的架构选择的影响,以及它是否合适。

互操作和可移植的标准化

  问:如何看待开放标准架构的发展潮流,因为这实现了系统间的互操作性,尤其在嵌入式系统间的互操作性和可移植性方面?

{{分页}}
  Tensilica – Steve:这的确是开放式架构的事,这又回到了并行化的问题。互操作性真正起作用的地方,趋向于我们首先要解决的部分,互操作性在实践中突出的地方,是我们的具体应用间的通信机制,而不是这些应用间的互作用机制,完全在系统层次上。是否要实现某种程度上的互操作,不妨去看看流程流向哪里。
  MIPS – Jack:另一个推动互操作性发展的动力是如下的事实:软件的品质要达到可以投产的程度。一旦我拥有802.11解决方案,所有的协议都已经解决。我经过验证,证明其不会丢失包,或者失去对某些包的存储。这就是我们的下一件产品努力的对象。我要在我的膝上机上装上无线LAN,我希望我的手机装上无线LAN,我希望我的照相机也装上无线LAN。但是一天结束时,我不用为多出来的价值而付费。所以我希望软件能够工作,我并不太在乎它有点过大。因为我面临的挑战,是保证推向市场的产品能像我所宣称的那样工作。
  如果我有高品质的代码,我就可以更快地上市。那就是业界的情况,因为人们所使用的这些装置是可以互操作的,知道它们能正常工作。在座的人有多少向自己的PC上下载过东西?当你直接下载到硬件上时,会导致其他部分的崩溃。当我们不能提供相应的性能时,就设法绕开它,这就违反了规则。系统已经变得如此复杂,以至于你必须进行有序的设计,因此人人都必须遵守规则。

软件适配器

  问:关于软件的复用性。Siby说,软件对于性能、内存占用、功耗、效率、对骇客的抵御能力和可视化来说,应该负更多的责任。最终则还是要依赖于硬件来实现。那么,如果你不断改动模块的架构,并改变相应的硬件,那么你如何保证软件的复用性?
  MIPS - Jack:我们必须有一个软件适配层。也就是说,我可以改变USB端口。我在这个产品上没有USB,而在其他产品上有5个,最终使软件并不会在意,因为它是在平台上运行的。

问:通过适配层能否改动软件的架构?
  MIPS – Jack:是的,你所希望做到的是,建立若干个出色的孤岛,而我不希望过问这些岛的互操作性,我不希望过问芯片上的多个处理器。你不用过问芯片本身,不用过问操作系统,不用去管编程手册。这些岛都极为出色,是供应链上的顶级厂商所开发的。我们的最佳的产品将通过把这些串联起来而形成产品,将其推向产品,而且能工作。所以,它们是独立的,但人们必须遵循某种规则,他们必须能信任对方——这些产品是可用的。
  Wipro - Siby:我们必然看到软件的复用越来越多,而且我们会看到还会推出具有鲜明特色的软件,体现在硬件架构上。
  Tensilica – Steve:我认为达到那一点的途径是找出哪里放置抽象层才具有意义。而对那一点进行标准化,的确能提供互操作性。形成先进的功能划分,并保证其性能模块间的互操作性,对其进行优化,重新设定其架构,或者任何其他的工作,使之能更好地完成其工作,而不必担心它与系统的其他部分的互操作能力如何。因为你已经从这件任务中解放出来。复用本身并不能实现复用。

自动代码生成器

  问:从汽车电子应用的角度来看,自动代码生成器一直得到广泛的应用。它有可能成为未来的解决方案吗?
  MIPS – Jack:我想,汽车业追求的一点是驾乘的完美性。在某些汽车上,装备了100多个处理器。而有些汽车所能用到的处理器更少,这是因为人机接口的应用很糟糕。因此客户无法在对汽车进行保养后,通过原先的编程来将座椅回复原位。现在是有很多变革,但人们必须在编程语言的层次上开展工作,而我们现在还找不出产出率比C++更高的编程语言。我认为那就是挑战的一部分。
  Mentor – Bill:但我的确看到汽车工业是一个高度讲求安全性、品质的行业。新一代代码的推出也必须满足法规和标准,而且通过采用这些条文的运用来进行修正。汽车、医疗等行业都要按规章来实行,并通过长时间的执行来获得专业水准,这样才能承担任务。因此这些规则将逐步转化成标准和法规。汽车电子业推出了许多标准。而在各个模块间实现标准化的时候,代码生成器才能真正得到应用。但它也会限制革新。

  问:在Bosch,80%的代码是由代码生成器生成的。
  Mentor – Bill:我的确看到了很多这些例子。有趣的一点是,在20%的软件上仍然能够实现鲜明特色。

产业断层

  问:我看到了现在有这么多的架构和产品,人们使用了大量的IP内核、IP处理器,而从架构的角度来看,你所看到的架构随着应用的不同而有较大的差异。在10多年内,这会导致大兼并吗?这个会不会导致专业的分化,于是会出现大的公司,而且出现一些从软件上支持他们的、专业化的小公司?
  MIPS – Jack:我在参加一个EDA会议时,一家小公司曾问了同样的问题。半导体业和电子业是存在断层的行业,它们是由一批独立的公司来领导的。但是同时,为了获得最大收入,你必须遵守一些规则,但是如果我的软件1990年有这些软件的话,因为我用的是Nokia,但是,我买了个新手机后,我所得到的是一张白纸,不用再忍受20年前的程序中的那些错误。独立的空间是有的。当新产品和新标准推出后,你会感到断层,要考虑如何得到足够的批量,以保证商业模式的可行性。这也就是适者生存,我们希望存在竞争的原因。


(迎九根据此次会议的录音整理)



评论


相关推荐

技术专区

关闭