ARM——体系架构_amr和arm有什么区别-程序员宅基地

技术标签: 基础知识  ARM  

1.ARM简介     

ARM是Advanced RISC Machines的缩写,它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC (精简指令集)处理器。公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。


1.1 ARM(Advanced RISC Machines)的几种含义:

1、ARM是一种RISC MPU/MCU的体系结构,如同x86架构是一种CISC体系结构一样。另外,还有MIPS架构、PowerPC架构等等。

2、ARM是Advanced RISC Machine Limited公司的简称。

3、ARM是Advanced RISC Machine Limited公司的产品,该产品以IP Core(Intellectual Property Core,知识产权核)的形式提供的。

4、ARM还用以泛指许多半导体厂商买了这种设计后生产出来的“ARM处理器”系列的芯片及其衍生产品。

半导体厂商固然可以光购买ARM公司的设计而直接生产ARM处理器芯片,但是更好的方法是以ARM处理器为核心,在同一块芯片上配上自己开发的外围模块,形成面向特定应用和市场的专用芯片,甚至“片上系统(System on a Chip,SoC)”。这样,作为专用处理器/控制器芯片的生产商既可以减少开发中的风险,又可以大大缩短开发周期,降低成本。所以,“ARM处理器”一般是作为“内核”存在于一些专用处理器/控制器的内部,因而又常常叫做“ARM核”。特别地,如果一个处理器核不带浮点运算功能,有时候就对此特别加以强调,称之为“整形核”。

1..2  ARM微处理器的特点

(1)ARM指令都是32位定长的

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

(3)普通的Load/Store指令

(4)多寄存器的Load/Store指令

(5)指令的条件执行

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

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

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

ARM作为RISC微处理器与CISC微处理器技术对比如下:

1.3 ARM微处理器系列

1.3.1 Classic ARM Processors (经典 ARM 处理器)
     • ARM11 系列 - 基于 ARMv6 架构的高性能处理器
     • ARM9 系列 - 基于 ARMv5 架构的常用处理器
     • ARM7 系列- 面向通用应用的经典处理器 
       ARM 经典处理器适用于那些希望在新应用中使用经过市场验证的技术的组织。这些处理器提供了许多的功能、卓越的能效和范围广泛的操作性能,适用于成本敏感型解决方案。这些处理器每年都有数十亿的发货量,因此可确保设计者获得最广泛的生态系统和资源,从而最大限度地减少集成过程中出现的问题并缩短上市时间。

1.3.2  Embedded Cortex Processors (ARM Cortex 嵌入式处理器)
    • Cortex-R 系列 - 面向实时应用的卓越性能
    • Cortex-M 系列 - 面向具有确定性的微控制器应用的成本敏感型解决方案
    Cortex 嵌入式处理器旨在为各种不同的市场提供服务。

    Cortex-M 系列处理器主要是针对微控制器领域开发的,在该领域中,既需进行快速且具有高确定性的中断管理,又需将门数和可能功耗控制在最低。

    而 Cortex-R 系列处理器的开发则面向深层嵌入式实时应用,对低功耗、良好的中断行为、卓越性能以及与现有平台的高兼容性这些需求进行了平衡考虑。

 • Cortex-A 系列

 

ARM编程模型

1. ARM数据类型

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

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

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

2. ARM处理器存储格式

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

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

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

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

3. ARM处理器工作状态

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

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

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

4. 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会对地址空间进行划分,只有特权模式才能访问所有的地址空间。而用户模式如果需要访问硬件,必须切换到特权模式下,才允许访问硬件。

5. 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个字节。

6. 程序状态寄存器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:表示当前处理器的工作模式,如图:

7. 工作模式的切换

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

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wangguchao/article/details/98475345

智能推荐

cube/SSAS 数据级权限解决方案----不使用域身份验证-程序员宅基地

文章浏览阅读301次。一个多月没更新博客了,不是不想写而是真的没有什么高质量的文章与大家分享,最近在做一个集团公司的BI解决方案,客户提出了一个合理但是又比较棘手的一个问题,就是北京的经理和南京的经理都有权限访问公司内部的报表,但是需要对其进行透明化的权限区分,北京的区域经理不能浏览任何关于南京区域的销售信息。这个需求是很合理的,但是客户方不一定会在一个域中,也就是这个经理可能到美国到非洲(呵呵,当然这是比喻..._没有加域怎么连ssas

gradle下载的缓存路径-程序员宅基地

文章浏览阅读368次。为什么80%的码农都做不了架构师?>>> ..._download_jsc.gradle下载路径

如何在iPhone或iPad上安装iOS 11 Beta-程序员宅基地

文章浏览阅读2.6k次。The public beta of iOS 11 is now available for iPhones and iPads. Anyone who wants to play withiOS 11’s new featurescan install it today. However, we recommend backing up your device first so you ca..._ios11bate

UE4_UE5结合offline voice recognition插件做语音识别功能_ue5语音识别-程序员宅基地

文章浏览阅读6.2k次,点赞4次,收藏24次。市面上主流的语音识别大多是用科大讯飞的SDK,但是那个也不是完全免费使用的,于是我选择使用offline voice recognition的语音识别,购买插件终生使用。offline voice recognition插件在UE官方商城卖200多元。我将它需要的资源都打包成一个rar,分享给有需要的人。其中就有两个UE工程,一个是UE4.27版本的,另外一个是UE5的版本。并且也下载了两个中文的语言包,一个是简版,另外一个是完整版,对于 只是做简单的主意指令的只需要用简版的语言包即可,大大提升识别速度。第_ue5语音识别

联想计算机哪款好用,华为和联想电脑哪个好用-程序员宅基地

文章浏览阅读1.8k次。对于一些具有电脑购买需求的朋友来说,在选择购买的时候经常会有一个困惑,那就是华为的电脑和联想的电脑哪一个好用?如果您现在也存在着这样的问题,那么不妨一起来看一下下面对于这两个品牌电脑的相关介绍。联想是比较早生产电脑的一家厂商,本身也是依靠做台式电脑和笔记本电脑起家的,所以也在经过长时间的发展之后一定有成熟的一面,我的一个朋友在多年之前购买了一台联想台式电脑,现在他仍然还在用着这一款台式电脑,由此可..._联想电脑和华为电脑哪个好

为什么搜狗输入法显示服务器异常,为什么搜狗拼音输入法一直出现错误报告?...-程序员宅基地

文章浏览阅读2.6k次。官方论坛有解释和解决办法 对近期输入法弹出str数据错误报告的声明和致歉 尊敬的搜狗拼音用户: 近期我们收到了很多对搜狗拼音输入法3.5奥运版str数据文件错误报告的问题反馈。其某个版本中出现错误后法会弹出类似下面所述的错误报告,影响了您的操作和体验,对此我们非常抱歉。 str数据文件格式错误: C:Documents and SettingsuserApplication DataSogouPY..._sogoupy/sgim_keymap.bin

随便推点

CentOS 7.X 源码编译安装MariaDB-10.2.X_group ‘mail’ not found-程序员宅基地

文章浏览阅读2.5k次。CentOS 7 编译安装MariaDB-10.2.XCentOS 7下mariadb-10.1.22 源码编译安装过程笔记,希望对大家有帮助。 下载文件https://mariadb.com/ 或 https://downloads.mariadb.org/mariadb/10.2.11/
源码包的下载下载链接: https://mirrors.tuna.tsinghua.edu.cn/m_group ‘mail’ not found

wps中的大客户版本_wps 大客户版-程序员宅基地

文章浏览阅读462次,点赞11次,收藏8次。网上的WPS各个版本基本都带有稻香插件,广告一堆堆,用户需要注册才能减少广告的显示,但依然时不时跳出来显示。其实WPS给大学做过一些版本,这种定制版本应用于大学院系的文档编写使用。最关键的是这个版本没有广告,没有稻香,没有推荐模板,只有纯净的WPS。界面虽然不华丽,风格还是很传统office2000风格,不是烦人的多标签页,也不会隐藏。工具栏不会藏着掖着直接横排展示所有图标,鼠标不用切换页,所有工具一目了然。这集美大学版本是办公软件的不二之选。_wps 大客户版

Android自动化页面测速在美团的实践-程序员宅基地

文章浏览阅读587次,点赞8次,收藏19次。我们都知道ViewPager的Tab切换是可以通过一个 OnPageChangeListener 对象进行监听的,所以我们可以为ViewPager添加一个自定义的Listener对象,在切换时记录一个时间,这样可以通过用这个时间减去页面创建后的时间得出这个多余的等待时间,上报时在总时间中减去即可。这里的 getConfigModel() 方法中,会使用页面的类名或者全路径类名,去初始化时解析的配置Map中进行id的匹配,如果匹配到说明页面需要测速,就会创建测速对象 PageObject 进行测速。

百度竞价悄然改版-程序员宅基地

文章浏览阅读42次。前段时间百度因为“魏则西事件”而被要求整改,百度的竞价排名也被推向了风口浪尖。最近有网友@闪电精灵SEO张扬爆料:百度竞价已改版,竞价显示4条,或许取消了右侧排名! 但是在经过风波之后,百度的确有了一些变化,最明显的变化就是对推广的网站的标注,之前的对百度推广只有推广两个字,现在是成了蓝色..._python 百度竞价排名

《剑指offer》学习笔记_面试题35_复杂链表的复制-程序员宅基地

文章浏览阅读334次。题目描述 请实现一个函数,复制一个复杂链表。在复杂链表中,每个节点除了一个next指针指向下一个节点,还有一个random指针指向链表中的任意节点或者为空。 思路 1.分治先复制当前的节点,然后递归的分别复制next或random。在复制next和random的过程中会重复复制相同节点,因此需要一个map来记录当前的复制情况。2.拆分法首先,将复制节点拼接到原始节点的...

嵌入式linux项目介绍与分享-基于 Linux 下 Socket 网络编程的局域网聊天室_linux项目局域网聊天室-程序员宅基地

文章浏览阅读1.4k次,点赞52次,收藏14次。本项目是基于 Linux 下 Socket 网络编程的局域网聊天室,实现了账号注册与登录、私聊消息、群发消息、发送离线消息、查看聊天记录、修改昵称密码等功能,并设置管 理员,实现将用户禁言、解禁、踢出聊天室等,采用多线程并发服务器模型处理多个客户端的同时连接和请求,服务器创建并管理用户数据、在线用户数据、聊天数据、离线消息数据等 SQlite 数据库,并提供后台服务,客户端通过 TCP 协议建立与服务器的稳定连接,并通过格式化输入输出实现与用户的交互。_linux项目局域网聊天室

推荐文章

热门文章

相关标签