去年,Luminary Micro 推出了价格低至 1 美元的基于 ARM Cortex-M3 的
32位处理器。这个价格使 32位处理器能够与很多
8位和
16位处理器直接竞争。除了 Luminary Micro 以外,Atmel 和 NXP 也提供低价的 ARM7 处理器,它包含方便了8位设计移植的功能。这些功能中的一部分在 32位方案中并不常见,包括逐位操作、部分断电检测和上电复位等。基于这些器件中包含了这些“8位”特性,因此为 16位消亡论者们说 32位可以战胜 16位 架构提供了重要论据。
指令大小是 32位架构能够与 16位架构优势共存的另一个实例。一般来说,16位 ISA(指令集架构)的代码密度明显好于纯 32位 IS
A,这一特性也证明它在设计中对程序内存的需求较低。当比较今天很多系统中的任何 8位、16位 或 32位处理器内核和内存的硅片面积时,这种优点的作用变得很明显(图 1)。很多现代 32位 ISA 都包含了一个 16位指令子集,充分说明了这种优势。Cortex-M3 ISA 更进一步,它只支持 16位 Thumb-2 ISA。在 32位架构中包含一个 16位指令子集大大降低了 16位器件所享有的代码密度优势。
激烈的争斗
正当 8位和32位架构在包含一些让它们能更好地在16位应用领域中竞争的功能时,16位架构也正在改变。例如,有些最新16位处理器(如飞思卡尔(Freescale)公司的 MC9S12XE 16位微控制器)打破了传统 64 kB地址空间限制,无需分页即可支持 1MB以上的线性寻址空间。德州仪器公司的MSP430系列是现代 16位架构的一个实例,它有内存间寻址与 16 个单周期、16位寄存器,解决了老式 16位实现中的累加器瓶颈和寄存器空间有限的问题。16位与 8位处理器都正在包含嵌入式调试电路,为开发人员提供帮助。
RTOS 的支持有助于简化编程,以及从 8位向 16位微控制器迁移的过程。这些针对 16位设计不断增多的选择也可以从RTOS得到好处。16位架构的 RTOS 支持落后于对 32位架构的支持,但这件事正在发生中。除了处理器供应商提供的核支持,第三方来源也有支持 16位架构的 RTOS,如 CMX、Mentor Graphics(Nueleus)、Micrium (mC/OS-II),以及 FreeRTOS。为了更好地支持16位RTOS,这些处理器都可能带有专用的片上寄存器,如富士通(Fujitsu)的用户与系统堆栈指针,以提供附加的 RTOS支持。
内存保护是很多嵌入式RTOS 的重要部分,但 16位处理器对系统保护的方法通常异于带有一个MPU(内存保护单元)的32位处理器。一个例子是Microchip的CodeGuard 保护方法,它使OEM能够用阶梯式安全级别,划分且共享片上内存的三个区段,这三个区段分别为引导、安全和普通段。这种分段方式使设计所或算法供应商能够将专有的软件保护在安全内存段中,而允许一些应用从其它段访问这种算法。16位架构中系统保护或故障恢复的其它例子有:防止误写闪存、捕捉堆栈溢出的机制,用于看门狗定时器的一个独立时钟源,备份振荡器,以及停电和上电复位监控器。但是,MPU 并不限于 32位处理器,飞思卡尔的 MC9S12XE 16位微控制器系列也含有一个集成的 MPU。
虽然 Intel 退出了 16位嵌入处理器市场,但仍然有十几家半导体公司活跃在 16位产品线上。很多公司都有跨8位、16位和32位架构的处理器产品线。飞思卡尔汽车产品营销经理Wayne Chavez指出:“16位处理器仍然是增长的来源,而飞思卡尔的处理器战略是一种智能重叠策略。”很多提供跨越所有数据宽度产品的公司也都持相同观点。一般来说,这些公司都是通过维护跨处理器架构的编程模型和工具,将许多价值放在为设计者提供比例换算功能上,以获得最佳价格、性能和外设组合。最后,他们主要关注自己的某款处理器会被设计采纳,而提供一个可比例换算的选择是他们实现这一目标的策略。
另外还有一个从过去主机时代复活的概念:虚拟化。基本说来,它意味着软件开发模型可以不关心是运行在单只处理器上还是在多个核上。它可以使一个硬 RTOS 运行在相同器件的一个通用操作系统上。但是,英飞凌(Infineon)工业与多市场微控制器营销经理 Ryan Scott 认为:“大多数嵌入软件开发仍然要靠最佳成本与效率的紧密结合。”可预测或确定的性能、较低的功耗,以及哪怕一分钱的 BOM(物料成本)差异都可以是嵌入系统设计采用 8 位 或 16 位处理器的考虑因素。