历史上的今天
返回首页

历史上的今天

今天是:2025年04月02日(星期三)

正在发生

2018年04月02日 | ARM处理器简介及RISC设计要点

2018-04-02 来源:MCU开发加油站

第一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指令来恢复执行某个断点并切换到新模式。 

推荐阅读

史海拾趣

Herotek Inc公司的发展小趣事

为了更好地服务中国及亚太地区的电子产业集群,Henkel在东莞市投建了汉高电子粘合剂华南应用技术中心。该中心不仅具备先进的研发设备和测试能力,还拥有一支专业的技术团队。通过模拟仿真和数字化手段,该中心能够快速响应客户需求,提供定制化的粘合剂解决方案。自启用以来,该中心已帮助众多电子企业实现了技术创新和产品升级。

G-Two Inc公司的发展小趣事

背景:随着企业规模的扩大和业务的拓展,福斯特对资金的需求也越来越大。

发展:2014年,福斯特成功在上交所上市,通过资本市场融资,为公司的发展注入了强劲动力。上市后,公司继续加大研发投入和市场开拓力度,加速企业发展步伐。

成果:上市以来,福斯特的营收和利润均保持快速增长态势,企业规模和实力不断提升。同时,公司还通过并购重组等方式,进一步巩固和扩大市场份额。

以上五个故事概述了福斯特在电子行业,特别是光伏材料领域的发展历程和成就。这些故事不仅展现了福斯特的创业精神和创新能力,也反映了中国光伏产业从无到有、从小到大的发展历程。

ESPROS [Espros Photonics corp]公司的发展小趣事

ESPROS在飞行时间(Time-of-Flight,简称ToF)技术领域取得了显著突破。ToF技术是一种用于测量光在物体上反射所需时间的测距技术,它在3D视觉应用中具有广泛的应用前景。ESPROS凭借其多年的技术积累,成功开发出从单点传感器到QVGA面阵的完整ToF产品线,为客户提供了全方位的3D ToF解决方案。

Atlantic Microwave Ltd公司的发展小趣事

随着电子行业的快速发展,Atlantic Microwave Ltd公司意识到,只有不断创新才能在激烈的市场竞争中立于不败之地。公司投入大量研发资金,吸引了一批优秀的科研人才,专注于微波技术的研发与创新。经过数年的努力,公司成功推出了一款具有颠覆性的微波产品,凭借其卓越的性能和稳定性,迅速获得了市场的认可,为公司带来了可观的收益。

中环(Central)公司的发展小趣事

近年来,中环公司经历了混合所有制改革。2020年7月,TCL科技集团成为公司控股股东。这一改革不仅为公司带来了新的发展机遇和资源支持,也为其未来的发展注入了新的活力。在TCL科技的助力下,中环公司进一步聚焦主业,加速技术创新和产业升级,致力于成为光伏领域的领军企业。

以上五个故事涵盖了中环公司在电子行业里发展起来的不同阶段和方面。通过不断创新和拓展业务,中环公司在保持主业优势的同时,也实现了多元化发展,为其未来的发展奠定了坚实的基础。

Captive Fastener公司的发展小趣事

随着全球市场的不断扩大,Captive Fastener公司意识到国际合作的重要性。公司积极寻求与国际知名电子制造商的合作机会,通过提供高质量的紧固件产品和技术支持,成功打入国际市场。同时,公司还与国外同行开展技术交流与合作,不断提升自身的技术水平和市场竞争力。

问答坊 | AI 解惑

焊接逆变电源的发展趋势浅谈

逆变电源被称为‘明天的电源’,其在焊接设备中的应用为焊接设备的发展带来了革命性的变化。首先,逆变式焊接电源与工频焊接电源比节能20%~30%,效率可达 80%~90%;其次,逆变式焊接电源体积小、重量轻,整机重量仅为传统工频整流焊接电源的1 ...…

查看全部问答>

单片机 音乐 源码

本帖最后由 paulhyde 于 2014-9-15 03:07 编辑 单片机 音乐 源码    …

查看全部问答>

求职200次被拒 优秀女大学生吞药自杀

据香港《文汇报》23日援引外电报道,英国一名成绩优秀的女大学生,两年内求职200次被拒,上月31日在家中服食过量药物自杀,并在遗书中透露因找不到工作而感到“耻辱”,表示“不再想做自己”。 21岁的哈里森曾在中学GCSE考试里获得10科A至C级的佳 ...…

查看全部问答>

哪位兄弟姐妹 帮忙找一下论文 有关交通灯的 (61板和模组v3.0)要求如下

利用61板、交通灯模组V3.0设计交通灯控制系统,要求具有下述功能: 1、系统有两个状态,设置状态和显示状态,利用61板的键盘的KEY1键盘可以进行两个状态间的切换; 2、开机时,系统为显示状态,四个路口数码管从默认的倒计时时间(本系统东南西北 ...…

查看全部问答>

单片机的开发!

atmagl怎么控制io口!…

查看全部问答>

FrameBuffer驱动和Lcd驱动的关系

大家好,我想问以下几个问题(操作系统是uclinux) 1.大家都说操纵lcd的显示就是操作framebuffer,但是从底层驱动的角度上来说如何把lcd和framebuffer挂上钩? 2.framebuffer的驱动程序是fbmem.c吗?如果是的话里面的fb_read,fb_write等函数是写 ...…

查看全部问答>

STM32的ISP热身运动开始

哈哈~~~网管马上就要上线了,插空热身热身~~~下图是擦除命令的拦截情况~~~现在开始做自己的ISP软件~~~肯定要带用户序列号和DTR/RTS控制了~~~ …

查看全部问答>

1个主机如何与100个左右的分机即通信又可以供电

                                 1个主机如何与100个左右的分机用2根电缆线即通信又可以给分机提供24V~36V的直流电压,其中会对一个分机提供时间很 ...…

查看全部问答>

高手帮帮忙ntc热敏电阻测温用查表法出问题了

ntc热敏电阻测温,用折半查表法,单片机是stc12c5410ad带10位ad,表的数据ntctab[]=1024*Rm/(Rm+Rntc),显示的结果为00,请各位高手帮帮忙!!程序如下: void NTCADC(void) { WORD ADC_TEMP = 0;//转换后的数据 BYTE i,M= 0,CHBSTART=0,CHBEND ...…

查看全部问答>

基于cortex-M3的CAN-bus设计

如题,想问问各位大虾有没有人做过这方面的,求入门资料和例程,谢谢!…

查看全部问答>