ARM架构,曾称进阶精简指令集机器(Advanced RISC Machine)更早称作Acorn RISC Machine,是一个32位精简指令集(RISC)处理器架构。还有基于ARM设计的派生产品,重要产品包括Marvell的XScale架构和德州仪器的OMAP系列。
ARM家族占比所有32位嵌入式处理器的75%,成为占全世界最多数的32位架构。
ARM处理器广泛使用在嵌入式系统设计,低耗电节能,非常适用移动通讯领域。
在说ARM之前先说一下ARM的小故事,ARM 成立于20世纪90年代末,从另一家位于剑桥的公司分拆而来,那家公司叫做 Acorn Computers,曾经是英国教育市场的著名个人台式计算机供应商,现已不复存在。
80年代中期时,Acorn 一个小团队接受了一个挑战,为他们的下一代计算机挑选合适的处理器,他们起草了一个技术需求说明书,经过相当长的摸索后得出一个结论:无法找到与之相符的产品,于是 Acorn 决定自己设计处理器,一个小团队只用了18个月就完成了设计并实现了这款处理器。
1985年4月26日,第一台原型机在 Acorn 的剑桥办公室中开始运行代码,那时它被称为”Acorn RISC Machine”,随着 Acorn 公司转向衰落,处理器设计部门被分了出来,组成了一家新公司,最初叫做 Advanced RSIC Machines Ltd。现在公司和处理器都简称为ARM。
ARM的内核原理图示:
ARM 数据类型约定:
Byte:8bits(1byte)
Halfword:16bits(2byte)
Word:32bits(4byte)
Char:八位(Java中为16位)
指令集:
大部分ARM支持ARM指令集与Thumb指令集
ARM指令集32bit,即每条指令占用32为的存储空间
Thumb指令集16bit
注意:
Thumb指令集不是完整的指令集,它是ARM指令集的子集。但是Thumb指令具有更高的代码密度,即
占用存储空间小,仅为ARM代码规格的65%,但其性能却下降的很少。所以,Thumb指令集使ARM处理器能应用到有限的存储带宽,并且,代码密度要求很高的嵌入式系统中去。
运行ARM指令:
所有指令必须word对齐
pc值由其[31:2]决定,[1:0]位未定义,因为指令存储的起始地址必须为4的整数倍
ARM中指令本身是多少位在内存存储时就应该多少位对其
多字节数据的存储:
1.小端对齐:低地址放低有效位,高地址放高有效位
2.大端对齐:低地址放高有效位,高地址放低有效位
ARM默认是小端对齐
许多架构通常支持两种模式,分别为“
Supervisor”和“
User”,其中一个模式拥有特权,另一个则没有。
在 Cortex-A 和 Cortex-R 处理器,无特权模式下代码可能无法直接执行某些特定的操作,比如,禁用中断,重新配置内存保护,或访问特定的内存区域,这是大多数操作系统的基本要求,允许系统从用户任务中保护自己。ARM内核通常支持七种基本运行模式,每种模式有权访问自己的堆栈空间,以及一组不同的寄存器子集,除一个外其余都是由特权的模式,如下:
User: 非特权模式,一般在执行上层的应用程序时处理器处于该模式
FIQ: 当一个高优先级的中断产生时处理器将自动进入这种模式
IRQ: 当一个低优先级(normal) 中断产生时将会进入这种模式
SVC: 当复位或软中断指令执行时将会进入这种模式
Abort: 当存取异常时将会进入这种模式
Undef: 当执行未定义指令时会进入这种模式
System: 使用和User模式相同寄存器集的特权模式
Cortex-A处理器特有模式:
Monitor:为了安全而扩展出的用于执行安全监控代码的模式
模式的分类:
1)除User模式外其他七种模式都是特权模式 – 权限比较高
2)FIQ、IRQ、SVC、Abort、Undef异常模式 – 产生异常时进入这几种模式
特定的模式下执行特定的代码,完成特定的功能,拥有特定的权限
并且ARM依据的是哈佛结构而不是冯·诺依曼结构。
冯·诺依曼结构:
1、数据与指令都存储在同一存储区中,取指令与取数据利用同一数据总线。
2、被早期大多数计算机所采用。
3、ARM7——冯诺依曼体系结构简单,但速度较慢。取指不能同时取数据
哈佛体系结构:
1、程序存储器与数据存储器分开.
2、提供了较大的存储器带宽,各自有自己的总线。
3、适合于数字信号处理.
4、大多数DSP都是哈佛结构.
5、ARM9是哈佛结构,取指和取数在同一周期进行,提高速度,改进哈佛体系结构分成三个存储区:程序、数据、程序和数据共用。
RISC和CISC:
RISC:精简指令集处理器,Reduced Instruction Set Computer
RISC结构简单,选取了使用频率高的简单指令,指令长度固定,多为单周期指令
在功耗、体积、价格等方面有很大优势,多用于嵌入式领域
CISC:复杂指令集处理器
侧重于硬件执行指令的功能性,CISC指令及处理器的硬件结构复杂
CISC指令复杂,指令长度与周期不固定,在处理能力上有优势
寄存器结构:
ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括:
1、31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。
2、6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,只使用了其中的一部分。
指令结构:
ARM微处理器的在较新的体系结构中支持两种指令集:ARM指令集和Thumb指令集。其中,ARM指令为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。
提高代码密度,保证了性能、维持了硅片的体积、减少了功耗,但完成相同的操作Thumb指令集需要更多的指令,若系统运行时间要求严苛,应使用ARM指令。
不同版本的ARM的区别:
1、架构不同
ARM7:ARMv4架构
ARM9:ARMv5架构,
ARM11:ARMv6架构,
ARM-Cortex 系列:ARMv7架构。
2、具体特点
ARM7:没有MMU(内存管理单元),只能叫做MCU(微控制器),不能运行诸如Linux、WinCE等这些现代的多用户多进程操作系统,因为运行这些系统需要MMU,才能给每个用户进程分配进程自己独立的地址空间。ucOS、ucLinux这些精简实时的RTOS不需要MMU,当然可以在ARM7上运行。
ARM9、ARM11,是嵌入式CPU(处理器),带有MMU,可以运行诸如Linux等多用户多进程的操作系统,应用场合也不同于ARM7。
Cortex来命名,并分成Cortex-A、Cortex-R、Cortex-M三个系列。三大系列分工明确:
“A”系列面向尖端的基于虚拟内存的操作系统和用户应用;
“R”系列针对实时系统;
“M”系列对微控制器。
简单的说Cortex-A系列是用于移动领域的CPU,Cortex-R和Cortex-M系列是用于实时控制领域的MCU。所以看上去ARM7跟Cortex-M很像,因为他们都是MCU,但确是不同代不同架构的MCU(Cortex-M比ARM7高了三代!),所以性能也有很大的差距。此外,Cortex-M系列还细分为M0、M3、M4和超低功耗的M0+,用户依据成本、性能、功耗等因素来选择芯片。
ARM架构与ARM内核:
本篇主要是详解处理器芯片ARM架构下的底层架构以及相关的结构信息,以及各个组成模块下的交互方式。
以上就是本次的处理器芯片架构或者指令集之ARM架构的帖子,感谢大家的参阅支持,一同学习,向大家提供更加优质的技术信息!
励志分享超清壁纸语句~~:
立志用功如种树然,方其根芽,犹未有干;及其有干,尚未有枝;枝而后叶,叶而后花。------王守仁
好的今天就到这里,老样子,感谢各位大神的参阅,孩子为了挣豆子不容易,孩子家里穷没豆子吃饭了!!!