多核SoC的嵌入式软件开发
推荐给好友
打印
加入收藏
更新于2007-12-11 13:58:40


摘 要:

        与几年前相比, 生产嵌入式应用产品的OEM越来越多的感受到了市场的压力。产品的新功能新特性、业界新标准、市场供求、用户对低功耗甚至零功耗的不断追求,以及产品成本等愈来愈多的因素都会对典型嵌入式设计产生影响。这使目前市场上的各种应用产品,从纯粹的消费电子(如蜂窝电话、MP 3播放器、数码相机)到基础设备(如磁盘驱动器、路由器、视频卡)到平台设施( 如基站, 电话系统,WAN开关等),都产生了变化。这些变化促使研发人员开发了更加完善复杂的软件,并在高端产品上使用了大量的FPGA

        这些变化同时也将设计者推向了ASIC/SOC(专用集成电路/片上系统)与非传统硬件模型― ―多核设计。

        多核系统的产生是行业发展的必然产物A S I C/S O C有较高的集成度,适合低功耗的特殊应用,但是多数注重成本的设计都会包含更多的功能特性与可编程的元素,这与行业标准与协议的不停改变密不可分。无论G S M电话,MP3 ,DivX/Mpeg4, DSL/Cable调制解调器,无线局域网或者任何其它产品标准,其协议都以非常快的速度变化着,顾客并不希望频繁升级硬件,从生产成本(工具、流水线的建立,等等)考虑,对单一产品平台重复使用是非常必要的。这意味系统对软件的要求更高了,因此也需要更多的软硬件协作。软硬件交互过程势必使系统集成时间延长,并且产生了大量的只能针对特定硬件使用的软件。为此,大量的可编程微处理器被加入到系统中。虽然只要处理器的速度足够快,所有由于软硬件交互引起的性能下降问题都可以迎刃而解,但是无论从成本还是功耗来看,提高处理器的主频换取性能都是一种非常“不划算”的解决方案。 

        一个典型的例子就是使用D S P处理连续数据的应用。开发者完全可以使用一个低端的D S P芯片来处理标准的媒体流协议,相对于高端处理器组成的系统,其功耗损失非常小,而且降低了系统成本。D S P的特定指令集与专用存储器、总线结构使其能够完成较复杂的数字处理算法,但是这些特性往往不支持高级语言。所以,基于D S P的很多应用都必须使用汇编语言来编码。由于不同D S P的汇编指令与编程模型不同,所以D S P之间的代码移植非常困难。这造成了应用开发的瓶颈。为了解决这个瓶颈,一种方案是将应用代码根据功能分为两部分——必须由D S P执行的代码、可以被其它处理器执行的代码,D S P只需要处理前者即可。这样就出现了多核(多处理器)设计。

         典型的多核系统将应用代码分成两个主要部分:控制与用户接口代码、不间断处理代码。控制用户接口部分运行在ARM微处理器上,不间断处理代码运行在DSP上或者第二个ARM内核上。这种多核解决方案有很多好处,但它的主要弊端是增加了交互软件设计与调试应用程序的复杂性。这两篇连载文章(第2部分将发表在2006年12月刊)将详细讨论开发、调试多处理器系统时将遇到的一系列复杂问题及其系统级解决方法。 

         与几年前相比,生产嵌入式应用产品的OEM感受到了越来越大的市场压力。产品的新功能和新特性、业界新标准、市场供求、用户对低功耗甚至零功耗的不断追求,以及产品成本等愈来愈多的因素都会对典型嵌入式设计产生影响。这使得目前市场上的各种应用产品,从纯粹的消费电子(如蜂窝电话、MP3播放器、数码相机) 到基础设备(如磁盘驱动器、路由器、视频卡)和平台设施(如基站,电话系统,WAN交换机等),都产生了变化。这些变化促使研发人员开发更加完善和复杂的软件,并在高端产品上使用大量的FPGA。这些变化同时也将设计者推向了ASIC/SOC与非传统硬件模型——多核设计。

多核系统的特点和优缺点 

         ASIC/SOC 具有较高的集成度,适合低功耗的特殊应用,但多数注重成本的的设计都会包含更多的功能特性与可编程的元素。这与行业标准与协议的不停改变密不可分。无论是 GSM电话、MP3、DivX/Mpeg4、 DSL/Cable调制解调器,还是无线局域网或者其它任何产品标准,其协议都以非常快的速度变化着,但顾客并不希望频繁升级硬件。从生产成本(工具、流水线的建立等)角度来考虑,对单一产品平台重复使用是非常必要的,这意味系统对软件的要求更高了,因此也需要更多的软硬件协作。 

         软硬件交互过程势必使系统集成时间延长,并产生大量的、只能针对特定硬件使用的软件,因此大量的可编程微处理器被加入到系统中。虽然只要处理器的速度足够快,软硬件交互引起的性能下降问题都可以迎刃而解,但是无论从成本还是功耗来看,提高处理器的主频换取性能都是一种非常“不经济”的解决方案。 

         典型的多核系统将应用代码分成两个主要部分:控制与用户接口代码、不间断处理代码。

图1:典型的多核系统将应用代码分成两个主要部分:控制与用户接口代码、不间断处理代码。控制用户接口部分运行在ARM微处理器上,不间断处理代码运行在DSP上。 

         一个典型的例子就是利用DSP处理连续数据的应用。开发者完全可以利用一个低端DSP芯片来处理标准的媒体流协议,相对于由高端处理器组成的系统,这种方法的功耗损失非常小,而且可降低系统成本。DSP的特定指令集与专用存储器、总线结构使其能够完成较复杂的数字处理算法,但是这些特性往往不支持高级语言,因此基于DSP的很多应用必须采用汇编语言来编码。由于不同DSP的汇编指令与编程模型不同,所以DSP之间的代码移植非常困难。这已成为应用开发的瓶颈。为解决这个瓶颈,一种方案是根据功能将应用代码分为两部分:必须由DSP 执行的代码和可以被其它处理器执行的代码,DSP只需要处理前者即可,这样就出现了多核(多处理器)设计。 

         典型的多核系统将应用代码分成两个主要部分:控制与用户接口代码、不间断处理代码。控制用户接口部分运行在ARM微处理器上,不间断处理代码运行在DSP上(图1)或者第二个ARM内核上(如图2。由于以下一些原因,这种模型非常有意义。

(1)开发者可以使用高级语言,如C/C++或者Java对微处理器进行编程。基于DSP的很多应用都必须使用汇编语言来编码,而很多其它处理器,如ARM则没有这些限制。

(2)在微处理器上可以运行RTOS或者OS,更加充分的利用微处理器的优势(合理的中断响应时间,大量的存储资源,虚拟的或者被保护的存储器,简单的上下文切换操作等等)。

(3) DSP对不间断处理的代码有很好的支持。如果控制用户接口代码与不间断工作的代码都由同一个处理器来执行的话,频繁的中断(连续的切换)会导致系统功耗非常大。而且,DSP往往有很多特殊功能,可以加速数据移动与处理操作(DMA,双端口存储器,针对滤波处理的MACs,针对FFT与编码的位操作,索引查找表,针对内部/外部器件访问的分离总线结构,等等)。

(4)两个不同的内核可以分别独立运行。这意味着当不需要执行任何操作时,微处理器可以进入休眠状态(唤醒微处理器的方式可以是:定时器、刷新LCD的按键、电池电量检查,等等)。当对数据流没有操作时,DSP同样可以进入休眠状态。由于微处理器与DSP都可以进入休眠状态,所以系统的功耗被大大的降低了。而且,不同的内核可以分别运行在不同的主频下,只要能够满足主频的要求,设计者完全可以使用更低功耗更低成本的芯片。

(5)两种处理器可以使用不同的总线模型。

(6)两种处理器芯片可以通过共享的片外存储器、中断、邮箱、串口、FIFO,或者其它连接方式进行通信,并且所有通信机制不但支持松耦合,而且支持紧耦合同步。 

         但是,多核解决方案的主要弊端是增加了交互软件设计与调试应用程序的复杂性。 

         多核系统的不间断处理代码还可以运行在第二个ARM内核上

图2:多核系统的不间断处理代码还可以运行在第二个ARM内核上,如ARM公司的MPCore。




 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.