原创 如何利用嵌入式软件设计SoC

2007-12-23 21:33 2437 3 3 分类: MCU/ 嵌入式

美国Globalpress公司举办的2007电子高峰会议上,举办了一场SoC(系统芯片)的专题讨论会:设计师如何利用嵌入式软件作为SoC器件设计的关键。会议上的专家各抒己见。
  
完整方案比单个硬件重要
  
主持人:Gartner公司的高级分析师John Barber
  
软件在嵌入式产品中的份量越来越重。自2000年来,价值观念发生了巨大的变化,2000年以前,主张是器件,即让我们的器件与竞争对手的性能、品质进行对比具有优势,这就是那时形成鲜明特色的关键。现今,制造商和客户需要的是解决方案,而不仅仅是器件。我的价值主张,我的鲜明特色,必须是完整的解决方案,包括与硬件一块推出的可以立即投入大批量制造的软件栈。
  
硬件与软件将设法整合到单个流程
  
Mentor Graphics系统级设计总监Bill Chown
  
我们过去所从事的是硬件设计,现在则还需要辅以软件应用方面的大量工作。但这两者的“婚姻”却并不幸福。在两者之间,我们需要填补在基础架构方面的鸿沟,如今的硬件不是从头设计的,需要进行基础架构的复用。需要复用的包括处理单元、内存、接口器件... ...许多基 础设计事先已经被人们所了解、得到了分析和预先进行了配置。我们需要把它插入到系统中,提供针对硬件的软件能力,以及针对具体应用的软件能力。在用户对硬件和应用软件的使用目标的这两个空间之间,我们必须确保能让他们寻求到与他们的具体需求相应的问题所在,但是最大限度减小他们花在两个空间之间的工作量。
  
EDA代表电子设计自动化,但我们有时候会迷失,而忘却了“自动化”一词正是我们在这个空间中应该完成的工作。我们应该回顾在这个流程中应该实现自动化的对象是什么?那并不仅仅意味着工具的改进,而且意味着我们能通过标准化来简化问题。
  
总结一下,我们能让人们去做的事情,是从一个在系统空间中的概念设计,一直到完成整个流程。概念设计上的革新是关键,我们需要灵活多样;随着设计的进行,我们需要尝试不同的解决方案。如果我不知道我在做什么,就无法去尝试替代方案。所以良好的分析将告诉我,我所做的工作将会把我带向何方。这些不同的任务中的每一项,都对应着每一个团队所从事的领域。因此,这是一个复杂的世界,但我们将设法将其整合到一起。在实现整合的过程中,我们应该能加速、改动,并将来自于不同领域的软件与硬件、系统与验证集成到单个流程中。
  
软件的关键作用是保证批量
  
MIPS Technologies公司市场行销副总裁Jack Browne
  
在SoC设计时,我们所面临的挑战是多方面的。首先我们希望能向市场上推出种类多样的产品。以MIPS公司为例,有3种不同的微架构系列,10种不同的处理器内核。我们必须具有某种能让我们能投入制造的业务模式,因为本公司的业务模式是基于IP(知识产权)使用费的,我们的年收入的一半来自于授权和版权使用费。客户的产品要达到制造批量,交货则需要3~4年;他们拿到所设计出的芯片,要2年,然后他们再让OEM来设计出系统,而这又要花上2年。所以,该供应链有一个问题:如果我的收入严格取决于制造批量,你应该如何来支付这些开发的费用?费用的支付要延后4年,财经界是不能容忍战略性项目上的亏损的,你必须展示出业务的良好性。
  
另外一个挑战是,你希望进入不同的、类型各异的市场。其中每个市场的成功的临界数量(客户数量)是不同的。同时你还必须支持不同的OS(操作系统)。你必须有解决所有这些问题的方案。我们的做法是,承认人们有一个平台。软件,无论是Linux还是其他的实时操作系统,一直到应用层次。我们所追求的关键一点,是使用硬件抽象层。从根本上来说,如果我有两家不同的客户,他们决定购买不同的套装,或者甚至不同的USB控制器,则通过硬件抽象层,如你的PC中的BIOS,我可以实现不同的偏好,而不用移植操作系统。
  
你去考察供应链上的不同玩家的商业模式的话,就会发现,将操作系统移植到另一个硬件平台上的工作并不能提供多少余地。如果你所选择的应用不对路的化,则很难实现足够的产量。如果你考察如今的标准数字电视的话,就会发现其中有些采用了300万行的软件。而你将看到2年后的HDTV将采用500万行的软件,而且其中有16个处理器,用于处理不同的任务。
  
所以软件的关键作用就是保证批量。如何找到一个合理的财经运作模式,是EDA、IP公司、半导体公司、软件公司共同努力解决的挑战。

多处理器的软件设计法
  
Tensilica公司市场行销副总裁Steve Roddy
  
软件的重要性到底有多高?有人认为市场规模尚小,有些人认为它很重要,另一些人则主张我们处在一个临界阶段,许多软件都实现了移植。
  
3种观点也许都是正确的,具体取决于其市场。但我想退一步思考一下处理器也许倒也无妨。一个有趣的问题是,如今和未来的应用应该需要多少个处理器?这里借用ITRS(国际半导体技术发展路线图),来展示在每个工艺节点对应着的、每个SoC上平均使用的处理器的数量(图1)。当前,ITRS宣称每个SoC上平均有32个可编程器件。我们知道,有些可能数量会多些,有些则少些。Tensilica与Cisco合作,推出了基于130nm节点的、采用192个处理器的设计。所以处理器的数量会出现迅速增长。而软件正是在此之上运行的。

qrs_073324d-1.jpg

图1 2005 IRTS MPSoC 发展图可看出,多核设计时代来到了
  
是的,软件的复杂程度和架构的复杂程度都正在增加。即便处理器的数量在增长,它们并不全都一模一样。这些器件上将出现多样化的处理器。
  
关于嵌入式的设计,很明显的一点是,软件的形式必然迥异于普通的通用型软件。事实上,嵌入式世界迥异于与通用型软件世界。在通用型应用的世界中,如Intel和AMD,在处理器上运行的软件在器件开始推出时尚不为人所知。因此一般采用通用型的计算,对于通用型的计算,人们采用通用的SMP Die Bucket 架构。在嵌入式世界中,如果你设计用于路由器的芯片的话,它就是供路由器专用的。优点就在于你知道器件的用途,所以其设计会针对具体应用进行优化,让人们能利用专用的处理器,如可重构的和可扩展的处理器,以节省面积、成本和功耗。因此两者的设计之道大相径庭。拥有许多可重编程的处理器,并不意味着你有一个全新的世界。系统架构和硬件架构研发者努力解决这个问题已经有几十年了。他们将其称为SoC,现在人们以处理器为单位进行设计,而不是硬件模块,他们在系统中引入了许多软件的东西。但这并不意味着在设计这些东西的方式上会遇到什么危机。


设计这些系统的风格,仍然具有一个SoC只有一个处理器的年代的SoC设计、架构所具备的那种多样性。你可以让处理器间具有一个看起来非常传统的联系,采用SMP通用型架构,你可以让处理器之间根据具体应用来建立互动关系,你可以在处理器间建立硬件风格的数据流。事实上,某些处理器甚至根本都不清楚芯片上有其他处理器的存在。这些东西的实现有多种多样的途径,成功的关键是功能划分,人们可以在功能模块中放入标准、API,事实上,在这些系统上运行的软件,可以造成复杂性极大增长,而我们在实现上仍然感受不到危机的存在,通过功能划分,经过优化的处理器、经过优化的API将通用型的程序与软件的所有复杂性隔离开来。

qrs_073324db-1.jpg

图2  随着处理器复杂度上升软件比例上升
  
设计者完全可以利用直截了当的设计方法来掌握如此复杂的,设计数百万行程序的软件工作。
  
软件发挥至关重要的作用
  
Wipro公司半导体/消费事业单位副总裁Siby Abraham
  
今天,推动半导体业发展的仍然是摩尔定律。对我来说,在设计中如何放入更多的逻辑、在一定的芯片面积上能放入多少个晶体管这一问题所带来的痛苦和挑战—这是技术经理和工程师们关心的问题,倒还比不上呈指数化增长的IC设计成本。源程序的复杂性的日益增长,而成本的上涨幅度超过了硬件的。
  
如今,逻辑电路的80%都被复用。这意味着SoC上只有20%的逻辑是用来体现其不同之处的。这也就是利用软件来实现SoC鲜明特色的地方。我们所看到的趋势是,根据我们过去4年所从事的项目,我们在软件和半导体业摸爬滚打了多年,SoC的未来在于多核架构方面的改进,而这正是软件发挥其效用的地方。
  
如今,我们的软件还不能有效而自然地利用好多架构带来的优势。挑战在于,软件工程师如何能利用众多核架构带来的优点。我们已经看到了在SoC中对软件的多方面的应用。软件的挑战,可以认为与硬件工程师们所面临的挑战是一样的。
  
我们今天所看到的更重要的一点是,现在需要那些不仅仅把自己划入硬件工程师或软件工程师等类别的工程师们,他们了解更多的专业,从而能利用众多领域的知识。我们看到一个大挑战,有的客户要求在产品供货时就能提供软件。
  
我们所看到的技术上的挑战,价格、性能、功耗,而如今软件团队也将承担相应的责任。如果没有可调试性,硬件团队将困难重重。
  
注1:关于此次讨论的详细报道及记者问答,将刊登在10月出版的专刊—《嵌入式系统开发》上;
注2:迎九根据此次会议的录音整理

 

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /2 下一条