纵观微处理器领域的发展历史,布满无数创新结构和品牌的遗骸。多数的创新结构都具有优于当时主流结构的技术优势。但大多数崛起的创新结构都经受过类似的残酷教训,即:在市场方面,被当时备受赞誉的结构所形成的生态环境所给予的残酷垄断挤压。然而,本文所介绍的公司由于有富有经验的管理团队组成,避免了过去的教训,用创新的结构发展自己的微处理器新品。
32 位的MCU没卖上一条胳膊/腿的价钱
Luminary Micro是一家使用32位ARM基CPU核的公司。Luminary Micro的初始经营方略是,使用ARM公司所特殊设计的、具有低价位、低功耗的紧缩型Cortex-M3核的优势来开拓市场。
为加速发展基于Cortex-M3核的新型群星(Stellars)系列产品,于今年3月26日公司宣布,以每1万片1美元的分销商价出售,震撼了业界。这比低价格的领先者Philips公司的ARM基 MCU还低1/3。Luminary Micro的价格策略正扭转着人们对32位CPU仅适用于高端系统的认知。使原使用8、16位的设计有了更多理由升级到32位的结构。
公司的另一个关键的营销策略就是迅速地扩大群星系列的产品谱系,以适应不同客户对于片内存储容量和通用I/O口的需要。因为I/O口的增加,LM3S301, LM3S310,LM3S318和LM3S316等新品种的引脚相应地增加到48个,价格从2.53美元起步。有了较多的I/O口,可以额外地集成多通道的片内A/D变换器。
Luminary Micro相信自己的ARM基 MCU结构会比其他公司的传统8位结构具有更多的诱人魅力。公司器件门类的迅速扩充和良好的业绩已经引起了业界广泛的侧目。
Luminary群星系列产品的性能具有相当于Microchip 和Freescale 8位微处理器的性能。
内置Cortex内核
ARM和Luminary Micro虽是两个不同的公司,但在MCU的策略观点方面却很默契。双方一致深信Cortex-M3必将取代传统的MCU结构。Cortex-M3具有基于ARMv7M的ISA (指令集结构),当初曾因Cortex-M3用了并非是完整的32位ARM指令集,而是自成一派的Thumb-2指令集,引起过激烈地争议。Cortex-M3是专为低功耗、小尺寸、短的中断延时和优异的确定性而设计。为此,Thumb-2专门增加了130 条Thumb指令。原来的32位ARM指令集的16位指令子集用于大幅度地降低代码容量。原ARM处理器支持多种CPU模式,其Thumb指令则在两种模式之间频繁地来回切换,以运行32位和16位的ARM指令。但是,当意外发生时,必须立刻切换到32位模式予以处理,从而引起很多的麻烦。与此相反,Thumb-2则有32位和16位各自的单周期的指令集,无需再有模式间的来回切换。当然,过去的ARM二进制指令不再能够运行于像Cortex-M3那样的Thumb-2机型之上,与原始 Thumb指令兼容的Thumb-2编程器可以使用统一的ARM汇编程序库来转换ARM汇编语言的代码,但是使用C语言库时则必须重新编译。
Cortex-M3同十年前原始的低价位ARM7TDMI处理器一样,都不具有指令和数据的缓存器。缓存器会给实时控制引入最忌讳的不确定性。但是,Cortex-M3比ARM7TDMI的尺寸要小,内核需用的逻辑门少(仅需33K个)。另外,Cortex-M3还比ARM7TDMI增加了存储器保护单元(MPU)、总线接口、和其他一些及逻辑。全部所需计算在内,也仅需60K个逻辑门。Cortex-M3还专门为Cortex-M3设计了有两个任选的逻辑部件:存储器保护单元(MPU)和嵌入的跟踪宏单元 (ETM,embedded trace macrocel)。因此,Cortex-M3具有优于ARM7TDMI核的性能。
图2是Cortex-M3的逻辑框图。为适应实时控制需要的确定性,已删除了指令和数据缓存器。图中的保护单元(MPU)和内嵌跟踪宏单元 (ETM) 属于任选项。
图2 Cortex-M3逻辑框图
给RISC CPU引入 MCU
MCU有许多异于一般嵌入式处理器的特殊功能。试看一个简单的马达控制系统。系统必须存在一条反馈通道,令MCU及时知晓当前马达所处的位置或者是由马达拖动的设备的位移,以便MCU迅速做出下一步响应。例如一只机械手,在捡拾一只蛋的时候,必须要在手指触到了蛋的表面时,指尖上的传感器应该发出信号给MCU,使机械手适度收紧手指,抓住蛋并将蛋提起。如果机械手由于嵌入式处理器内部存在的缓存未能一次命中或偶尔发生分页错误,致使处理器未能在预定的时间点上停住适度收紧手指的马达,那么机械手将变成煎蛋饼的手。为了不捏碎那只蛋,Cortex-M3删除了产生不确定性的指令和数据缓存器部分,改用片内的闪存或SRAM。
控制系统还必须尽可能快地对异常事件做出响应,并且得到充分的保证。试想,当CPU正在处理其他任务时,突然外部中断发来机械手中的蛋出现破裂危机的警报,CPU必须立刻停下当前的任务,争取时间赶去停掉马达,防止把裂蛋进一步捏碎。Cortex-M3采用硬件的办法来缩短中断的延迟,以及有效节省CPU在接到中断后转入处理程序所花费的时间。Cortex-M3的这段时间仅需12个时钟周期。
除此之外,Cortex-M3还有嵌套的中断控制器,免除不必要的堆栈操作。正在处理前次中断的过程中又接收到较高优先级的中断请求,这时没有必要将前次中断保存在堆栈中的信息弹出,可以一直留到该次中断服务程序结束时再行弹出。Cortex-M3知道应先把控制转到高优先级的中断及将必要的信息压栈。这种尾链(tail chaining)操作可以减少不必要的存储流量和加速中断处理,将延迟降到6个时钟周期。
1美元32位MCU的构成
作为新创建的Luminary Micro公司必须紧紧地抓住市场的的注意力,所以大胆地做出极具杀伤力的价格策略:32位的ARM 基MCU 仅卖1块美元!公司没有透露这些器件的芯片尺寸。TSMC(台积电)生产这类器件使用的是0.25微米 CMOS工艺,具有5层金属和2层多硅的工艺。可以实现混合信号的部件和嵌入闪存,并且具有良好的门密度和低漏电流。而Cortex-M3选用的是简单的3级流水线、无缓存、以及低钟频(最初的器件使用20MHz)的设计。ARM指出,如果Cortex-M3使用TSMC的0.18微米的G工艺的话,其钟频可以达到120 MHz,但是使用低的钟频可以降低功耗和封装成本。廉价的金属引线键合和塑料SOIC封装对于这类器件已是足够。只有8KB闪存和2KB SRAM的LM3S101 和 LM3S102肯定是低端的应用,其性能和存储量对于成百万计的MCU应用绰绰有余。
图1 Luminary Micro公司的LM3S3xx系列只卖1美圆
Luminary Micro的目标是要迅速扩大产品的种类,故而决定研制与购买专利并重。最早,全部外设靠买专利,而将所有精力集中于设计流程和生产各个环节的开发。工程团队将设计开发的重点放在时新产品的功能创新。
很快,在1美元产品的Cortex-M3核上增加了类似于先进MMU (memory-management unit)的MPU。MPU仅用简单的对照表将虚拟存储地址译成物理地址,用简单的映射技术向存储区提供多达8种相互隔离的物理地址,用于隔离代码、数据、和堆栈等。
公司使用带有MPU的Cortex-M3生产了4种群星系列的新MCU,并为它们扩充了通用I/O口,使引脚增加到48只。群星系列的I/O设计具有所有外设能够同时访问的特点,不像一些其他公司的I/O口需要重新单独设置复用。
灵活型ADC拓宽应用领域
除去对边缘扫描和调试逻辑的改进之外,工程设计团队在设计对现成逻辑模块的翻新设计方面费了很大的精力。虽然已有买来的现成混合信号的ADC IP模块,但是团队最终放弃了它,改而设计自己的外设硬件。创新的灵活型ADC共有8个输入通道,其总和的采样率为每秒25万次。除去对外部模拟源进行采样外,还有专门通道对内部温度传感器加以采样。为将CPU从轮番采样每个通道的单调工作中解放出来,ADC另有一套4组可独立编程的循环顺序控制器逻辑。它们可以控制某一个单通道的循环采样(包括过采样),也可以用不同的速率同时采样多个通道。用户可以灵活随意地选择。唯一的限制,就是总的采样率不超过每秒25万次。
灵活型ADC的每个循环顺序控制器都有多个可供选择的触发源。灵活型ADC特别适用于低价位的医用传感器采样和其他多种工业控制。
群星系列及其竞争者
Luminary Micro的目光放在分销商们所服务的通用市场。低时钟频率和杀手价使群星系列可以直接面对8、16位的应用市场。但是,LM3Sxx系列向上游移动的时候,便有可能会遭遇来自低端32位MCU的激烈碰撞。
环视8、16位MCU 的核结构,Luminary Micro面对的是来自大量厂家的少数结构。其中最重要的是无处不在的8051结构。8051有大量的生产厂家如:ADI,Atmel,Dallas,Infineon, NEC,Philips,Renesas,Silicon Labs,STM,TI, 以及 Intel自己。应该指出,其中的许多厂家已经将8051结构进行改造和移向一些其他的结构。
Freescale是另一个具有自己8-bit MCU核结构的领头大公司,2005的市场份额仅占8-bit MCU 14%。其他具有自己低端MCU核结构的公司还有:Microchip 的PICmicro MCU, NS的COP, Renesas的R8 和M16, 以及NEC的78K等。
当然,不可能各种8位的应用都来使用32位结构,价格这一关就过不去。工程师应该明白:天下没有免费的东西。需要深入研究8位能干的事,改用32位结构究竟有哪些潜在的好处和坏处,这是真正应该认真研究的下手之处。
RISC代码已经不再那么臃肿
历史上曾经发生过,RISC结构较之CISC结构存在过代码臃肿的事实。但是,有了16位指令子集的现代CISC结构之后,问题已经得到克服,甚至有所逆转。ARM公司已经宣布Cortex-M3的代码密度是8051的4倍,这已是事实。
之所以有这种巨大的变化,还与现代的高级语言被用于RISC结构有关。通过对指令集和寄存器文件的调整,提高指针和函数参数的传送效率等措施,情况已经改观。EEMBC对软件所作的典型的测评报告中有关于代码容量的信息,可惜许多公司未予公开,故尚难以做出全面的比较。一般说来,Cortex-M3所需的代码不会大于其他MCU,这是最低水平。至于切换到32位,如果真有一天得出负面的结果,那可能还是好事一桩。
对于功耗的比较
Atmel AT89LP是改进版的8051结构,执行的指令大多数都是单周期的,速度改进了10倍。它属于低功耗的芯片。整片的有效功耗是1 mA@3.0V 和1.0MHz。 相当于AT89LP的整片功耗是3mW / MHz。而Cortex-M3的净核功耗为0.19mW/ MHz。当然,比较时未计及工艺的不同。但是,其数值还是可以反映出来32位内核的有效功耗并非很大,而说明占用功耗比例很大的却是外设、内存、和I/O等。
Luminary Micro说,LM3Sxxx 系列的整片有效功耗是35 mA@3.3V 和20MHz。 相当于整片功耗是5.8mW / MHz。这个数字里应该说也包含着有比AT89LP更多外设的部分在内。最好的比较应是在同等外设条件下的比较。
备用状态下的功耗则完全是另一个概念。它取决于晶体管的数量、设备电压、和与工艺有关的晶体管漏流。显然,32位的CPU结构比8位需用更多的晶体管,不可避免地加大备用时的功耗。
群星系列芯片使用外部3.3V电源,片内经过电压调节器转为2.5V供应内部逻辑电路。所以,Luminary Micro必须采用低电压工艺以获得功耗的改善。当然,随之而来的必然是漏流的增大。高端的CPU采用先进的设计技术使低压时的漏流减少,这是廉价的低端CPU无能力问津的方法。所以一般说来,8位CPU在备用模式下(包括休眠)具有比32位绝对的功耗优势。
开发工具是主要因素
当最后进入用技术观点来剖析使用8位或32位结构之时,开发工具经常成为取舍的决定性因素。若想从功耗、价格、代码效率等方面优选候选器件的话,设计者经常选用具有最好硬件和软件的工具。这就是为什么Freescale在经历过长时间的磨难,最后走上了各种MCU统一的开发工具策略。
Luminary令其8、16位 MCU的系统设计者一定要为优化高水平的软件开发,而下赌注于使用现代的32位结构一样的工具。2006年,全世界生产ARM基CPU的诸厂商出货总计达将200万单位,ARM公司期望2010年之前,达到450万单位。那时,无处不在的现实将成长成巨大的生态圈,摆在MCU系统设计者面前的健康之选,将是转向ARM。
约半数Luminary的客户已在使用ARM微处理器,他们的系统也要用到MCU。 Luminary现有开发工具可供使用,但公司还将投重金,专为群星系列的外设开发支持软件,创建可扩展的API库和样片的各种驱动程序,帮助客户能够将自己的系统尽快地转入运行。
来自其他32位MCU厂商的竞争
只要群星系列的MCU 满足功耗要求,Luminary Micro就拥有对其它 8、16位MCU厂商的优势。除非其他厂商家将用户引向32位MCU,那时将使竞争变得严酷。主要的竞争还应是性能。
作为开始起步的Luminary Micro,能够分得13 00万美元的MCU市场的一小杯羹已经算是成功了。在短暂的时间里,公司有了自己的Cortex-M3市场,并且快速地取得领先地位。有许多有实力的公司正热衷于追赶,所以公司不可以有些许的懈怠和止步不前。(梁合庆译自《微处理器报告》)