与几年前相比,生产嵌入式应用产品的OEM感受到了越来越大的市场压力,产品的新功能和新特性、业界新标准、市场供求、用户对低功耗甚至零功耗的不断追求,以及产品成本等越来越多的因素都会对典型嵌入式设计产生影响,这使得目前市场上的各种应用产品,从纯粹的消费电子(如蜂窝电话、MP3播放器、数码相机)到基础设备(基站、电话系统、WAN交换机等),都产生了变化,这些变化促使研发人员开发更加完善和复杂的软件,并在高端产品上使用大量的FPGA。这些变化同时也将设计者推向了ASIC/SoC与非传统硬件模型——多核设计。
多核系统的特点和优缺点
ASIC/SOC具有较高的集成度,适合低功耗的特殊应用,但多数注重成本的设计都会包含更多的功能特性与可编程的元素,这与行
软硬件交互过程势必使系统集成时间延长,并产生大量的、只能针对特定硬件使用的软件、因此大量的可编程微处理器被加入到系统中,虽然只要处理器的速度足够快,软硬件交互引起的性能下降问题都可以迎刃而解,但是无论从成本还是功能来看,提高处理器的主频换取性能都是一种及其“不经济”的解决方案。
一个典型的例子就是利用DSP处理连续数据的应用。开发者完全可以利用一个低端DSP芯片来处理标准的媒体流协议。相对于由高端处理器组成的系统,这种方法的功耗损失非常小,而且可降低系统成本,DSP的特定指令集与专用存储器,总线结构使其能够完成较复杂的数字处理算法,但是这些特性往往不支持高级语言,因此基于DSP的很多应用必须采用汇编语言来编码。
由于不同DSP的汇编指令与编程模型不同,所以DSP之间的代码移植非常困难,这已成为应用开发的瓶颈,为解决这个瓶颈,一种方案是根据功能将应用代码分为两部分:必须由DSP执行的代码和可以被其他处理器执行的代码,DSP只需要处理前者即可,这样就出现了多核(多处理器)设计。
典型的多核系统将应用代码分成两个主要部分:控制与用户接口代码,不间断处理代码。控制用户接口部分运行在ARM微处理器上,不间断处理代码运行在DSP上或者第二个ARM内核上(见上图)。由于以下一些原因,这种模型非常有意义。
1、开发者可以使用高级语言,如C/C++或者Java对微处理器进行编程,基于DSP的很多应用都必须使用汇编语言来编码,而很多其他处理器,如ARM则没有这些限制。
2、在微处理器上运行RTOS或者OS,可以更加充分利用微处理器的优势(合理地中断响应时间、大量的存储资源、虚拟的或者被保护的存储器、简单的上下文切换操作等)。
3、DSP对不间断处理得代码有很好的支持,如果控制用户接口代码与不间断工作的代码都由同一个处理器来执行的话,频繁的中断(连续的切换)会导致系统功耗非常大,而且,DSP往往有很多特殊功能,可以加速数据移动与处理操作(DMA、双端口存储器、针对滤波处理的MAC、针对FFT与编码的位操作,索引查找表、针对内部/外部器件访问的分离总线结构等)。
4、两个不同的内核可分别独立运行。这意味着当不需要执行任何操作时,微处理器可进入休眠状态(唤醒微处理器的方式可以是:定时器、刷新LCD的按键、电池电量检查等)。
5、两种处理
器可以使用不同的总线模型。6、两种处理器芯片可以通过共享的片外存储器、中断、油箱、串口、FIFO、或者其他连接方式进行通信,并且所有通信机制不但支持松耦合,而且支持紧耦合同步。
但是,多核解决方案的主要弊端是增加了交互软件设计与调试应用程序的复杂性。
多核系统的设计方案
系统设计之初,设计人员必须对如何满足系统所有需要有一个总体的规划,如果可能,设计人员还应该预留一部分系统资源以备将来功能的扩展。
1、硬件总体设计
硬件总体设计是指对系统基本器件的选择与配置,出主要处理器的类型、主要通信配置、如何使用、用户接口的选择等。
 
; 2、软件总体设计
在大多数嵌入式应用中,软件设计在很大程度上依赖于的硬件配置,部分软件模块与系统软件联系并不紧密,程序员可以将其模块化,此外还有很多模块与底层硬件直接联系,很难模块化。
目前通常的做法是讲尽可能多的与硬件相关的软件模块隔离成为HAL(硬件提取层)的形式进行处理,既然处理器的速度足够快,存储器相对便宜。那么HAL的使用是安全可行的,在设计中,使用RTOS或者其他标准软件非常重要。
3、开发工具与资源
这方面的具体内容包括JTAG访问,交叉触发、逻辑分析仪或者实时跟踪,以及明显反应芯片内部状态的输出管脚等,使用支持多核调试的调试器与仿真器,如RealView Debugger与RealView ICE,系统的调试过程会变得非常简单,利用RealView Debugger,开发人员可以同时对两个处理器进行调试,此外,RealView Debugger带有同步功能,可以使两个处理器内核同时启动或者停止。
处理器的造型
处理器的选型受多种因素的影响,对多核系统,尤其是ARM+DSP系统(虽然DSP可以由支持或者不支持DSP功能的微处理器,微控制器来代替),进行处理器选型时主要考虑以下几点:
1、处理外部事件需要的响应时间;
2、致力于实时算法的应用代码数量。例如,将MP3播放器与无线电话中的音频处理功能模块相比较,前者的功耗远远小于后者,其原因是MP3播放器仅仅需要解码音频流,产生相应的正确信号,并发送到模拟输出单元即可,而无线电话必须处理与MP3播放器相比低的多的外部比特率,这迫使处理器必须完成更多工作来实现压缩/解压缩、解码/解码,并应用滤波/声音合成,以最终达到合乎要求的音质。
此外,无线电话中的音频处理很可能需要进行协议的转换,当然,硬件方面的支持可以代替处理器的一部分工作,MP3播放器不是一个实时系统,它可以使用简单预取缓存来减少响应时间,而无线电话必须在相对较短的时间窗口内(或者音质下降不甚明显时)对信号进行处理。
3、相比软件处理,采用硬件可以达到更好效果的应用模块的数量,当标准变化比较快时,修改软件是一种比较安全的做法,这样可以避免改动新产品的物理设计,但当标准相对比较稳定时,采用最合适的硬件可使成本降到最低,并且能在相同功耗或价格的基础上使系统达到最高性能。
4、对算法要求较高的应用的数量,DSP的独特设计使其有以下三点特殊功能,能够高效地处理迭代
算法,特别是乘加运算(MAC);能够迅速地传输数据(接收外设输入,并在处理循环之后将数据返还到外设输出);能够与外设紧密交互。5、市场对价格与功耗的灵敏度。
针对这些需求,ARM处理器的功能越来越强大,其应用也越来越广。例如新一代ARM内核提供了对DSP扩展指令的支持(如ARM9E)。部分ARM芯片可以被用作微控制器,拥有微控制器的一系列特性,例如紧密耦合的片上外设,增强的位访问与控制,大容量片内存储器,片内flash、多种片内外设,等待状态控制和向量中断等,ARM处理器还开始支持真正的可变时钟频率。
在具体芯片设计完成之前,用于原型平台的开发板可以帮助开发人员对多核系统进行验证。通常,这些板大多使用特定的总线结构进行连接,使用FPGA仿真部分外设、存储器以及部分总线模型。Integrator是ACM提供的原型验证平台,它提供对多核系统的支持。
 
更进一步,当硬件平台还没就绪时,很多设计只能通过仿真来开发软硬件模型和应用算法,对于多核系统来说,仿真的方法并
不是很多,ARM公司的SoC Designer工具可以将ARMulator仿真与特定的DSP仿真进行绑定,类似于SOC Designer的产品同样也支持使用C语言编写的硬件模型进行联合仿真。
同时,某些仿真甚至可以直接仿真中加入纯粹的行为元素,很多仿真的速度非常快,几乎与真正芯片的速度相同(因为PC机的主频非常高),通过仿真,开发人员可以得到系统硬件的许多内部状态信息,以实现更好的设计。