与几年前相比,生产嵌入式应用产品的OEM感受到了越来越大的市场压力,产品的新功能和新特性、业界新标准、市场供求、用户对低功耗甚至零功耗的不断追求,以及产品成本等越来越多的因素都会对典型嵌入式设计产生影响,这使得目前市场上的各种应用产品,从纯粹的消费电子(如蜂窝电话、MP3播放器、数码相机)到基础设备(基站、电话系统、WAN交换机等),都产生了变化,这些变化促使研发人员开发更加完善和复杂的软件,并在高端产品上使用大量的FPGA。这些变化同时也将设计者推向了ASIC/SoC与非传统硬件模型——多核设计。
多核系统的特点和优缺点
ASIC/SOC具有较高的集成度,适合低功耗的特殊应用,但多数注重成本的设计都会包含更多的功能特性与可编程的元素,这与行
软硬件交互过程势必使系统集成时间延长,并产生大量的、只能针对特定硬件使用的软件、因此大量的可编程微处理器被加入到系统中,虽然只要处理器的速度足够快,软硬件交互引起的性能下降问题都可以迎刃而解,但是无论从成本还是功能来看,提高处理器的主频换取性能都是一种及其“不经济”的解决方案。
一个典型的例子就是利用DSP处理连续数据的应用。开发者完全可以利用一个低端DSP芯片来处理标准的媒体流协议。相对于由高端处理器组成的系统,这种方法的功耗损失非常小www.cechina.cn,而且可降低系统成本www.cechina.cn,DSP的特定指令集与专用存储器,总线结构使其能够完成较复杂的数字处理算法,但是这些特性往往不支持高级语言,因此基于DSP的很多应用必须采用汇编语言来编码。
由于不同DSP的汇编指令与编程模型不同,所以DSP之间的代码移植非常困难www.cechina.cn,这已成为应用开发的瓶颈,为解决这个瓶颈,一种方案是根据功能将应用代码分为两部分:必须由DSP执行的代码和可以被其他处理器执行的代码,DSP只需要处理前者即可,这样就出现了多核(多处理器)设计。
典型的多核系统将应用代码分成两个主要部分:控制与用户接口代码,不间断处理代码。控制用户接口部分运行在ARM微处理器上,不间断处理代码运行在DSP上或者第二个ARM内核上(见上图)。由于以下一些原因,这种模型非常有意义。
1、开发者可以使用高级语言,如C/C++或者Java对微处理器进行编程,基于DSP的很多应用都必须使用汇编语言来编码,而很多其他处理器,如ARM则没有这些限制。
2、在微处理器上运行RTOS或者OS,可以更加充分利用微处理器的优势(合理地中断响应时间、大量的存储资源、虚拟的或者被保护的存储器、简单的上下文切换操作等)。
3、DSP对不间断处理得代码有很好的支持,如果控制用户接口代码与不间断工作的代码都由同一个处理器来执行的话,频繁的中断(连续的切换)会导致系统功耗非常大,而且,DSP往往有很多特殊功能,可以加速数据移动与处理操作(DMA、双端口存储器、针对滤波处理的MAC、针对FFT与编码的位操作,索引查找表、针对内部/外部器件访问的分离总线结构等)。
4、两个不同的内核可分别独立运行。这意味着当不需要执行任何操作时,微处理器可进入休眠状态(唤醒微处理器的方式可以是:定时器、刷新LCD的按键、电池电量检查等)。
5、两种处理