ARM的演变
ARM的V1,V2,V3版本主要是出于实验和开发阶段,并没有大范围占领市场,v4版本开始性能大大提升。
ARM系列 | 版本 | 处理器核 |
---|---|---|
ARM1 | V1 | ARM1 |
ARM2 | V2,V2a | ARM2,ARM2aS |
ARM3 | V2 | ARM3 |
ARM6 | V3 | ARM6,ARM600,ARM610 |
ARM7 | V3,V4 | ARM7,ARM700,ARM710,ARM710T… |
ARM8 | V4 | ARM8,ARM810 |
ARM9 | V4,V5 | ARM9TDMI,ARM9E-S |
ARM10 | V5 | ARM10TDMI,ARM101020E |
ARM11 | V6 | ARM11,ARM11562-S |
ARM Cotex | V7 | ARM Cotex-A ,ARM Cotex-R,ARM Cotex-M |
与arm7比之优势
采用更先进的流水线
从arm7的三级流水线开始,arm的流水线不断升级,从三级,到arm9的五级,再到arm10的六级,最后到arm11的八级流水线。到了Cortex-M版本又降回了三级。但这是具有更强的三级流水线,新增分支预测,在处理器内核的预取单元中也有一个指令缓冲区,它允许后续的指令在执行前先在里面排队,遇到分支将不再刷新流水线。
更好的架构
arm7采用的冯诺依曼结构,数据和指令一起存储,难免会遇到总线瓶颈。而Cortex-M采用哈佛结构,指令和数据分开存储,效率更高。
更低的功耗
新增位段操作
arm7无法直接修改寄存器的某一位,需要将一个寄存器读取出来,修改后,再写会寄存器。而Cortex-M支持位段操作,存储器映像包括两个位段。这两个位段区将别名存储器区中的每个字映射到位段存储器区的一个位,在别名存储区写入一个字具有对位段区的目标位执行读-改-写操作的相同效果
优化了工作模式
arm7具有七种工作模式:用户模式,FIQ模式,IRQ模式,管理模式,中止模式,未定义指令异常模式,系统模式。使用起来特别繁琐,Cortex-M优化成了两种工作模式,处理者模式和线程模式,支持两种特权操作
优化了中断
arm7的中断种类还是挺多的,如软件中断,预取指中断,FIQ中断,IRQ中断等。但到M3后,不再支持快中断等,它支持11 种系统异常外加 240 个外部中断输入,中断统一由NVIC来进行管理,不再需要软件去判断中断源。
支持新的指令
支持ARM Thumb指令,已扩展到同时支持16位和32位指令Thumb-2版本,因为Thumb-2可以满足所有的处理,所以消灭了状态切换的额外开销,节省了 both 执行时间和指令空间,不。
新增了查表跳转指令,条件执行(使用IT指令),硬件除法指令和乘加指令(MAC)等
新的寄存器
1,新增嵌套向量中断控制器NVIC,内置的嵌套向量中断控制负责中断处理,自动处理中断优先级,中断屏蔽,中断嵌套和系统异常处理。
2,新的程序状态寄存器SPR,将原来的CPSR分成三个子寄存器,应用程序PSR(APSR),中断号 PSR(IPSR),执行 PSR(EPSR)
3,屏蔽状态寄存器PRIMASK, FAULTMASK 和 BASEPRI ,这三个寄存器用于控制异常的使能和除能
4,控制状态寄存器,用于定义特权级别,还用于选择当前使用哪个堆栈指针。
更低的功耗
虽然比之arm7高了三代,性能更高,运算更快,但功耗却降低了
更强的应用
arm7是没有内存管理单元(MMU)的,所以只能运行一些实时的系统ucOS、ucLinux。
M3等有内存管理单元,可以运行inux、WinCE等操作系统。
分类
Cortex分成Cortex-A、Cortex-R、Cortex-M三个系列。三大系列分工明确:“A”系列面向尖端的基于虚拟内存的操作系统和用户应用也就是用于手机移动领域的CPU;“R”系列针对实时系统;“M”系列对微控制器。,Cortex-R和Cortex-M系列是用于实时控制领域的MCU。