ARM处理器简介及RISC设计要点

发布者:悠闲自在最新更新时间:2018-04-02 来源: MCU开发加油站关键字:ARM  寄存器  RISC 手机看文章 扫描二维码
随时随地手机看文章

第一ARM处理器简介及RISC特点


ARM处理器简介


ARM(Advanced RISC Machines)是一个32位RISC(精简指令集)处理器架构,ARM处理器则是ARM架构下的微处理器。ARM处理器广泛的使用在许多嵌入式系统。ARM处理器的特点有指令长度固定,执行效率高,低成本等。


RISC设计主要特点


1、指令集——RISC减少了指令集的种类,通常一个周期一条指令,采用固定长度的指令格式,编译器或程序员通过几条指令完成一个复杂的操作。而CISC指令集的指令长度通常不固定。


2、流水线——RISC采用单周期指令,且指令长度固定,便于流水线操作执行。


3、寄存器——RISC的处理器拥有更多的通用寄存器,寄存器操作较多。例如ARM处理器具有37个寄存器。


4、Load/Store结构——使用加载/存储指令批量从内存中读写数据,提高数据的传输效率。


5、寻址方式简化,指令长度固定,指令格式和寻址方式种类减少。


第二ARM指令集特点


ARM处理器是基于RISC的,但不是纯粹的RISC体系结构。为了使ARM处理器能够更好的满足嵌入式系统的需要,ARM指令集和单纯的RISC指令集有以下几点不同:


1、一些特定的指令周期数可变。例如多寄存器装载或存储的Load/Store指令执行周期就是不确定的,这个会根据相关的寄存器个数而定。如果是访问连续的内存地址,就可以改善性能,因为连续的内存访问比随机访问要快。根据这个特点,由于在函数的起始和结尾通常会有多个寄存器与内存进行数据交换的操作,因此相应操作的指令条数会减少,提高了代码的密度。


2、内嵌的桶形移位寄存器产生了更复杂的指令。桶形移位寄存器是一个硬件部件,在一个寄存器被一条指令使用之前,桶形移位寄存器可以处理这个寄存器中的数据。桶形移位寄存器扩展了许多指令的功能,以此改善内核的性能,提高代码密度。


3、Thumb16位指令集。ARM处理器有两种工作状态,一种是ARM状态,一种是Thumb状态。ARM状态下指令长度为32位,Thumb状态下指令长度为16位。这种特点使得ARM既能执行16位指令,又能执行32位指令,从而增强了ARM内核的功能。


4、条件执行。只有当某个特定条件满足时指令才会被执行。这个特性可以减少分支指令的数目,从而改善性能,提高代码密度。


5、增强指令。一些功能强大的数字信号处理器(DSP)指令被加入到标准的ARM指令中,以支持快速的16*16乘法操作及饱和运算。ARM的这些增强指令,使得ARM处理器不需要加上DSP即可实现。


第三ARM处理器特点


1、ARM指令都是32位定长的


2、寄存器数量丰富(37个寄存器)


3、普通的Load/Store指令


4、多寄存器的Load/Store指令


5、指令的条件执行


6、单时钟周期中的单条指令完成数据移位操作和ALU操作


7、通过变种和协处理器来扩展ARM处理器的功能


8、扩展了16位的Thumb指令来提高代码密度


第四ARM处理器命名规则 


ARM编程模型 


1、字(Word):在ARM体系结构中,字的长度为32位。


2、半字(Half-Word):在ARM体系结构中,半字的长度为16位。


3、字节(Byte):在ARM体系结构中,字节的长度为8位。


ARM处理器存储格式


ARM体系结构将存储器看作是从0地址开始的字节的线性组合。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB。


ARM体系结构可以用两种方法存储字数据,分别为大端模式和小端模式。


大端模式(高地高低):字的高字节存储在低地址字节单元中,字的低字节存储在高地址字节单元中。


小端模式(高高低低):字的高字节存储在高地址字节单元中,字的低字节存储在低地址字节单元中。


ARM处理器工作状态


从编程的角度来看,ARM微处理器的工作状态一般ARM和Thumb有两种,并可在两种状态之间切换。


1、ARM状态:此时处理器执行32位的字对齐ARM指令,绝大部分工作在此状态。


2、Thumb状态:此时处理器执行16位的半字对齐的Thumb指令。


ARM处理器工作模式


1、用户模式(usr,User Mode):ARM处理器正常的程序执行状态。


2、快速中断模式(fiq,Fast Interrupt Request Mode):用于高速数据传输或通道处理。当触发快速中断时进入此模式。


3、外部中断模式(irq,Interrupt Request Mode):用于通用的中断处理。当触发外部中断时进入此模式。


4、管理模式(svc,Supervisor Mode):操作系统使用的保护模式。在系统复位或执行软件中断指令SWI时进入。


5、数据访问中止模式(abt,Abort Mode):当数据或指令预取中止时进入该模式,可用于虚拟存储及存储保护。


6、系统模式(sys,System Mode):运行具有特权的操作系统任务。


7、未定义指令中止模式(und,Undefined Mode):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。


除了用户模式之外,其余六种模式都是特权模式。除了用户模式和系统模式之外,其余五种模式都是异常模式。


在特权模式下程序可以访问所有的系统资源。非特权模式和特权模式之间的区别在于有些操作只能在特权模式下才被允许,例如直接改变模式和中断使能等。而且为了保证数据安全,一般MMU会对地址空间进行划分,只有特权模式才能访问所有的地址空间。而用户模式如果需要访问硬件,必须切换到特权模式下,才允许访问硬件。


ARM处理器寄存器组织


ARM共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器,包括R0-R15,R8_fiq-R14_fiq,


R13_svc,R14_svc,R13_abt,R14_abt,R13_irq,R14_irq,R13_und,R14_und,CPSR,SPSR_fiq,SPSR_svc,SPSR_abt,SPSR_irq,SPSR_und。如图。



通用寄存器包括R0-R15,可以分为3类:


1.未分组寄存器R0-R7


在所有运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途。因此在中断或异常处理进行异常模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,所以可能造成寄存器中数据的破坏。


2.分组寄存器R8-R14


对于分组寄存器,他们每次所访问的物理寄存器都与当前的处理器运行模式相关。具体如上图。


R13常用作存放堆栈指针,用户也可以使用其他寄存器存放堆栈指针,但在Thumb指令集下,某些指令强制要求使用R13存放堆栈指针。


R14称为链接寄存器(LR,Link Register),当执行子程序时,R14可得到R15(PC)的备份,执行完子程序后,又将R14的值复制回PC,即使用R14保存返回地址。


3.程序计数器PC(R15)


寄存器R15用作程序计数器(PC),在ARM状态下,位[1:0]为0,位[31:2]用于保存PC;在Thumb状态下,位[0]为0,位[31:1]用于保存PC。


由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节。


程序状态寄存器CPSR和SPSR


CPSR(Current Program Status Register,当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位以及其他一些相关的控制和状态位。


每一种运行模式下都有一个专用的物理状态寄存器,称为SPSR(Saved Program Status Register,备份的程序状态寄存器),当异常发生时,SPSR用于保存当前CPSR的值,从异常退出时则可由SPSR来恢复CPSR。


由于用户模式和系统模式不属于异常模式,这两种状态下没有SPSR,因此在这两种状态下访问SPSR,结果是未知的。


CPSR保存数据的结构:



1.N(Negative):当用两个补码表示的带符号数进行运算时,N=1表示结果为负,N=0表示结果为正数或零。


2.Z(Zero):Z=1表示运算结果为0,Z=0表示运算结果非零。


3.C(Carry):有4种方法可以设置C的值:


(1)加法指令(包括比较指令CMP)


(2)当运算产生进位时(无符号数溢出),C=1,否则C=0


(3)减法运算(包括比较指令CMP)


(4)当运算产生了借位(无符号数溢出),C=0,否则C=1


对于包含移位操作的非加/减运算指令,C为移出值的最后一位。对于其他的非加/减运算指令,C的值通常不变。


4. V(Overflow):有2种方法设置V的值:


(1)对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。


(2)对于其他的非加减法运算指令,V的值通常不变。


5. I(Interrupt Request):I=1表示禁止响应irq,I=0表示允许响应


6. F(Fast Interrupt Request):F=1表示禁止响应fiq,F=0表示允许响应


7. T(Thumb):T=0表示当前状态位ARM状态,T=1表示为Thumb状态


8. M4-M0:表示当前处理器的工作模式,如图:



工作模式的切换


(1)执行软中断(SWI)或复位命令(Reset)指令。如果在用户模式下执行SWI指令,CPU就进入管理(Supervisor)模式。当然,在其他模式下执行SWI,也会进入该模式,不过一般操作系统不会这么做,因为除了用户模式属于非特权模式,其他模式都属于特权模式。执行SWI指令一般是为了访问系统资源,而在特权模式下可以访问所有的系统资源。SWI指令一般用来为操作系统提供API接口。


(2)有外部中断发生。如果发生了外部中断,CPU就会进入IRQ或FIQ模式。


(3)CPU执行过程中产生异常。最典型的异常是由于MMU保护所引起的内存访问异常,此时CPU会切换到Abort模式。如果是无效指令,则会进入Undefined模式。


(4)有一种模式是CPU无法自动进入的,这种模式就是System模式,要进入System模式必须由程序员编写指令来实现。要进入System模式只需改变CPSR的模式位为System模式对应的模式位即可。进入System模式一般是为了利用System模式和用户模式下的寄存器相同的特点,因此一般情况下,操作系统在通过SWI进入Supervisor模式后,做一些操作后,就进入System模式。


(5)在任何特权模式下,都可以通过修改CPSR的MODE域来进入其他模式。不过需要注意的是由于修改的CPSR是该模式下的影子CPSR,即SPSR,因此并不是实际的CPSR,所以一般的做法是修改影子CPSR,然后执行一个MOVS指令来恢复执行某个断点并切换到新模式。 

关键字:ARM  寄存器  RISC 引用地址:ARM处理器简介及RISC设计要点

上一篇:使用FreeRTOSViewer跟踪调试FreeRTOS工程
下一篇:高铁WiFi时代要来了!铁总30亿出售动车网路49%股权

推荐阅读最新更新时间:2024-05-07 17:57

嵌入式设计必备ARM仿真器知识
一、嵌入式产品的开发周期 典型的 嵌入式 微控制器开发项目的第一个阶段是用C编译器从源程序生成目标代码,生成的目标代码将包括物理地址和一些调试信息。目前代码可以用软件模拟器、目标Monitor或在线仿真器来执行和调试。软件模拟器是在PC机或工作站平台上,以其CPU(如x86)及其系统资源来模拟目标CPU(如P51XA),并执行用户的目标代码;而目标Monitor则是将生成的目标代码下载到用户目标板的程序存储器中,并在下载的代码中增加一个Monitor任务软件,用来监视和控制用户目标代码的执行,用户通过目标板上的串行口或其它调试端口,利用桌面计算机来调试程序。 程序的调试是通过设置断点、使程序在指定的指令位置停止运行来实现的。
[电源管理]
DSP2808与ARM STM32F103的SPI通讯例程及详解
本程序经验证可实现DSP和ARM的SPI通讯。 一、 SPI的通信协议 SPI(Serial Peripheral Interface)是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。SPI 接口一般由4根线组成,CS片选信号(有的单片机上也称为NSS),SCLK时钟信号线,MISO数据线(主机输入从机输出),MOSI数据线(主机输出从机输入),CS 决定了唯一的与主设备通信的从设备,如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟信号来发起通讯。通讯时主机的数据由MISO输入,由MOSI 输出,输入的数据在时钟的上升或下降沿被采样,输出数据在紧接
[单片机]
DSP2808与<font color='red'>ARM</font> STM32F103的SPI通讯例程及详解
ARM】led·fs2410流水灯
开发环境 1、硬件平台:FS2410(s3c2410) 2、主机:Ubuntu 12.04 LTS LED原理图 LED的GPIO的配置 配置GPFCON寄存器,设置GPF4-7为输出 配置GPFDAT,设置LED灯亮与灭 主要步骤 通过设置GPFCON将GPF4-7设置为输出 设置GPFDAT,可以将led灯亮或灭,GPFDAT的相应位置1灯灭,置0灯亮 源代码 NAND flash启动 关狗 设置栈 //start.S .text .global _start _start: #define WATCHDOG 0x53000000 ldr
[单片机]
【<font color='red'>ARM</font>】led·fs2410流水灯
基于ARM芯片S3C2410的TFT-LCD驱动方法
    S3C2410是三星公司生产的基于ARM920T内核的RISC微处理器,主频率可达203MHz,适用于信息家电、Smart Phone、Tablet、手持设备、移动终端等领域。其中,集成的LCD控制器具有通用性,可与大多数的LCD显示模块接口。     PD064VT5是一种用非晶硅TFT作为开关器件的有源矩阵液晶显示器,该模块包括TFT-LCD显示屏、驱动电路和背光源,其接口为TTL电平。分辨率为640 x480像素,可通过18bit数据信号显示262 144种色彩。     1 S3C2410的LCD控制器     S3C2410中的LCD控制器可用于传输视频数据并产生必要的控制信号(像VFRAME、VLI
[嵌入式]
ARM7平台下基于VxWorks的网络接口设计
  VxWorks操作系统以其高度的可靠性、优秀的实时性、灵活的可裁减性等优势在嵌入式系统中备受关注,广泛应用于许多行业;而随着网络技术的发展,嵌入式技术与网络技术的结合已成必然。VxWorks是最早在其内核中加入TCP/IP协议的嵌入式实时操作系统。如何设计基于VxWorks的网络接口,是摆在嵌入式开发人员面前的首要课题。本设计以三星公司的ARM7(S3C44B0)为核心CPU,开发了VxWorks下的网络接口,包括硬件设计和软件实现两个部分。 1 硬件设计   核心CPU采用三星公司的S3C44B0。S3C44B0采用ARM7TDMI内核,它通过提供全面的、通用的片上外设,大大减少了系统电路除处理器以外的元器件配置,降低了系
[单片机]
<font color='red'>ARM</font>7平台下基于VxWorks的网络接口设计
读取stm32 产品的唯一身份的寄存器
读取stm32 产品的唯一身份的寄存器 voidGet_ChipID(void) { uint32_t temp0,temp1,temp2; temp0 = *(__IO uint32_t*)(0x1FFF7A10); temp1 = *(__IO uint32_t*)(0x1FFF7A14); temp2 = *(__IO uint32_t*)(0x1FFF7A18); // temp0=(*( uint32_t *)0x1FFF7A10); //产品唯一身份标识寄存器(96位) // temp1=(*( uint32_t *)0x1FFF7A14); // temp2=(*( ui
[单片机]
ARM公司为下一代移动游戏定义新愿景
     2009年3月30日,代表着优秀CPU设计的ARM公司继续展示着其在提供具有最高性能的ARM® Mali™ 图形处理单元(GPU)技术方面所取得的成功。ARM近日在美国加利福尼亚州旧金山举行的第22届游戏开发者大会(GDC)上提出了公司对于打造下一代图形处理以及移动游戏未来的愿景。通过采取合作的方式开发图形加速解决方案,并结合ARM完整的Mali图形堆栈以及ARM合作伙伴生态系统,Mali技术现已被广泛采用,至今已有27个合作伙伴通过授权获得该技术。在此成功的基础上,ARM正在继续努力,提供众多强大的、易于配置的Mali图形IP,并与游戏和图形行业中领先的芯片合作伙伴、设备制造商和内容提供商一起,向市场提供越来越多的基于
[网络通信]
小广播
最新网络通信文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved