原文链接:http://www.zlgmcu.com/luminary/Stellaris/ARM-Cortex-M3.pdf<br /><br />首先谈谈我对这个系列先入为主的感觉。<br />Cortex-M3是ARM7的升级版本。<br />个人认为:ARM7本身并不是完全针对MCU来设计的,但是众多芯片厂家以ARM7为内核做了很多32位MCU芯片。例如Atmel和NXP的ARM7系列。Cortex-M3是真正针对MCU应用来设计的,这一点在功能取舍和性能偏向上得到反映。<br /><br />那么与ARM7相比较,Cortex-M3有哪些区别和特点呢?<br /><br />加速设计:<br />哈佛结构替代ARM7的冯.诺伊曼结构。<br /> 哈佛结构就是指令和数据总线分开。<br /> 这样取指令和取数据可以同时进行。<br /> 很适合将指令放在片内FLASH,将数据放在片内SRAM的MCU结构。<br />在ARM7的3级流水线之上增加了分支预测。<br /> 减少了程序跳转时流水线被打断的时间消耗。<br />ALU支持硬件乘法和硬件除法。数学计算能力增强。<br /> 单周期32位乘法。<br />Bit-Band技术:<br /> 简单地说,就是增强了位操作性能。<br /> SRAM中有专门的Bit-Band区域,可以按位进行寻址(使用别名地址)。<br /> 而且,这样的位操作是原子操作。这在实现互斥功能时有用。<br /> 一些DSP运算专用的位操作指令,比如bit翻转。<br /><br />节省存储器使用量的技术:<br /> 位寻址是可以节省bool型变量的存储器使用的。<br /> ARM7的short变量要16位对齐、int变量要32位对齐。Cortex-M3不用对齐。<br /> 这个问题,一般看法是,对齐可以简化设计。<br /> 个人认为这个好处有限。<br /> 指令集的优化。现在叫Thumb-2了。<br /> ARM7有两种指令集:ARM和Thumb,两种指令模式可以切换。个人感觉比较怪。<br /><br />处理器模式的简化:<br /> 我们知道ARM7有很多种处理器模式,目的主要应该是支持复杂的操作系统。<br /> Cortex-M3的处理器模式现在有两个:Thread模式和handler模式。<br /> Thread模式相当于用户模式了,有两种访问方式:有特权方式和无特权方式。<br /><br />结构区别:<br /> ARM7是个纯内核,中断控制器和存储器接口是芯片厂家扩展的。<br /> Cortex-M3包含了中断控制器(NVIC)和存储器接口单元。当然,在结构上仍然可以看作核心和外围两个部分。<br /><br />最最重要的改变:中断处理<br /> ARM7只有两个中断请求信号:IRQ和FIQ。<br /> 对多个外部中断请求的支持是通过不属于ARM7的外部的中断控制器实现的。<br /> 不直接支持基于优先级的中断抢占。<br /> Cortex-M3的中断控制器叫NVIC,是Cortex-M3的一个完整的部分。<br /> 可以支持一个NMI和32个物理中断。可抢占,有优先级。<br /> 中断向量表可重定位。<br /> 中断处理时的寄存器保护采用基于堆栈的方式,在响应中断和退出中断时,硬件自动对寄存器进行压栈和出栈。<br /> 在连续处理两个中断时,通过末尾连锁(tail_chaining)技术,减少压栈和出栈的操作。<br /> 所以,中断响应的延时显著减少了。这个对控制系统来说很重要。<br /> 当然,增加复杂性容易出BUG。有待观察。<br /><br />存储器保护单元MPU:<br /> 可支持操作系统对进程空间的保护。<br /> 个人对此持保留态度。<br />关于操作系统:<br /> 个人认为,linux和wince在这个处理器上是无法运行的。这是它的产品定位。<br /> 其它喜欢在扁平(flat)内存模式下运行的RTOS,要看怎么移植了。未必能充分使用Cortex-M3的特性。<br /><br />总线接口:<br /> 有说法它目前不支持外部存储器接口。这个好象有点严重。待确认。<br /><br />有了新架构的处理器,就看开发环境、调试工具、操作系统对它的支持了。<br /><br /><br />最后,俺才疏学浅,又喜欢望文生义。有错误大家指出或一笑吧,谢谢。 |
|