ARM体系结构(1)-什么是ARM?

ARM体系结构(1)-什么是ARM?学习ARM体系结构相关知识,首先推荐阅读ARM官方文档《ARM Architecture Reference Manual 》,本文内容也是来源

大家好,欢迎来到IT知识分享网。

学习ARM体系结构相关知识,首先推荐阅读ARM官方文档《ARM Architecture Reference Manual 》,本文内容也是来源于官方参考手册,以下只是我提炼总结出一些重要部分,然后加上自己一些理解。当然内容不够全面,如果想更全面具体学习了解建议还是去看一下官方文档。

ARM是什么?

ARM有两层含义:

  1. 公司的名称 Advanced RISC Machines
  2. 处理器类别

ARM公司介绍

  • 成立于1990年11月,前身为 Acorn计算机公司(任天堂8位游戏机CPU)
  • 主要设计ARM系列RISC处理器内核,授权ARM内核给生产和销售半导体的合作伙伴
  • ARM 公司不生产芯片,提供基于ARM架构的开发设计技术
  • 软件工具, 评估板, 调试工具,应用软件,总线架构, 外围设备单元,等等

ARM处理器

ARM是一家设计处理器的公司,这家公司设计的处理器统称为ARM系列处理器内核,采用用的指令集是RISC(精简指令集), 授权ARM内核给生产和销售半导体的合作伙伴,出售知识产权,ARM 公司不生产芯片。

ARM处理器特点是采用精简指令集,指令数量少,设计相对简单,能耗较低,在移动终端应用很广。

ARM体系结构主流芯片

  • 高性能方向
  • Samsung(三星)
  • S5PV210 Cortex-A9核
  • Freescale(飞思卡尔)
  • i.MX512/ i.MX513/ i.MX515 Cortex-A8核
  • QSD8650A/ QSD8672(Snapdragon系列)
  • 低功耗、低成本的微控制器方向
  • Cortext-M3
  • Stm32系列
  • Cortex-M1
  • Cortex-M0
  • 实时方向
  • Cortex-R4
  • 安全方向
  • SecurCore
  • SC200 (ARM9)
  • SC100 (ARM7)

ARM编程模型(基于Cortex-A9)

ARM的数据和指令类型

ARM采用的是32位架构。

数据类型大小:

  • Byte:8位
  • Word:32位
  • Halfword:16位
  • Doubleword:64位 (cortext-A)

提供两种指令集:

  • ARM指令集,32位
  • Thumb指令集,16位

ARM的工作状态

Arm的工作状态可以分为两种:

  • 第一种 ARM状态 ,处理器执行32位的ARM指令。.arm
  • 第二种 Thumb状态,执行16位,半字对齐的Thumb指令。

存储器格式

四字节对齐

ARM体系结构地址是从零地址开始的字节线性组合。

从0地址处到3地址处存放第一个字的数据,然后从4地址处到7地址处存放第二个字的数据。

大小端

大端(big-endian):低地址处存放高位的数据

小端(little-endian):低地址处存放低位的数据

举个例子:比如 0x12345678

ARM体系结构(1)-什么是ARM?

如何用C语言实现判断存储格式是大端还是小端?

 1. #include<stdio.h>  
 2. #include<stdlib.h>  
 3. int main()  
 4. {  
 5.  int i = 1;  
 6.     (*(char *)&i == 1) ? printf("Little-endian/n") : printf("Big-end ian/n");  
 7.  
 8.  return 0;  
 9. }  
 

ARM处理器的工作模式

现代CPU必须具备的几个功能:

  • ① 运行程序
  • ② 处理中断异常
  • ③ 权限管理

ARM处理器的八种工作模式,我们把这八种工作模式以CPU的功能去划分:

1.正常运行

  • 用户模式(user): 正常执行程序,大部分任务处于这种模式下
  • 系统模式(system):运行特权级别任务程序
  • 特权模式(SVC):当复位或者软中断指令执行时进入这种模式,是一种保护 模式。

2.中断

  • 快速中断模式(FIQ):高优先级(FAST)中断产生时进入这种模式,用于高速 数据传输和通道处理。
  • 外部中断模式(IRQ):一个普通中断产生时进入这种模式。一般中断处理。

3.异常

  • 数据访问终止模式(ABT):当存储异常时进入这种模式。用于虚拟存储和存储 保护。
  • 未定义指令终止模式(UND):当执行未定义的指令时进入这种模式。

4.Monitor (Cortex -A)

  • 监控模式(MON): 运行安全软件,安全模式。

注意:

  • 除了user模式其它模式都属于特权模式。
  • 除了用户模式系统模式之外,都属于异常模式。

ARM状态寄存器组织

ARM体系结构(1)-什么是ARM?

如上图,Cortex-A系列CPU一共有40个32位寄存器。

什么叫做寄存器?

寄存器是软硬件接口,是存储单元。

CPU内部寄存器也是存储单元,通过寄存器地址来访问寄存器内容。

每一种CPU模式下对应有一组可以操作的寄存器。

任何模式下都有以下寄存器可以存取:

  • ① R0~R12
  • ② R13,the Stack Pointer,SP,栈指向,
  • ③ R14,the Link Register,LR,链路寄存器
  • ④ R15,the Program Pointer,PC,程序指针
  • ⑤ CPSR,the Current Program Status Register,当前状态寄存器
  • ⑥ 另外,特权模式(除了系统和用户模式)还有一个SPSR,the Saved Program Status Register,保存状态寄存器。

寄存器分组

  • R0~R7,未分组寄存器,对于所有的CPU模式下,未分组寄存器对应的都是同一的物理寄存器。
  • R8~R14,分组寄存器。可以访问的物理寄存器取决于当前CPU工作的模式。
  • 对于R8~R12,有一组专门用于FIQ模式,其它模式都是使用同一组物理寄存器。
  • 对于R13~R14,除了user和system模式共有物理寄存器,其它6种模式都各自有一组自己的物理寄存器。
  • R13,SP,栈指向寄存器,指向栈的栈顶。
  • R14,LR,链路寄存器,指向子函数返回的地址。

CPSR 程序状态寄存器

CPSR,用来保存当前程序的状态的寄存器

SPSR,程序状态保存寄存器,每一种CPU异常模式(除了system和user)下对应有一个自己的SPSR寄存器,用来在异常产生时保存CPSR寄存器的值,以便在异常之后恢复CPSR的值。所以格式和CPSR一模一样。

好,那么我们来看看CPSR/SPSR寄存器各个bit的具体含义:

ARM体系结构(1)-什么是ARM?

组成如下:

  • 28~31位,是 ALU(Arithmetic Logic Unit,算术逻辑单元)结果状态标志备份
  • 0~4位, 当前的处理器模式
  • 6~7位,中断使能标志位
  • 第5位,设置处理器的状态

ALU结果状态标志位[31:28]:

ARM体系结构(1)-什么是ARM?

ARM体系结构(1)-什么是ARM?

中断禁止位:

  • I = 1: 禁止 IRQ.
  • F = 1: 禁止 FIQ

T 位:

  • T = 1; 处理器处于 Thumb状
  • T = 0; 处理器处于 ARM 状态

Mode位(M0~M4):处理器模式位

  • 10000 User mode;
  • 10001 FIQ mode;
  • 10011 SVC mode;
  • 10111 Abort mode;
  • 11011 Undfined mode;
  • 11111 System mode;
  • 10110 Monitor mode;
  • 10010 IRQ mode;

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/65590.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信