一文深入搞懂ARM处理器架构

这篇具有很好参考价值的文章主要介绍了一文深入搞懂ARM处理器架构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、嵌入式处理器基础

典型的微处理器由控制单元、程序计数器(PC)、指令寄存器(IR)、数据通道、存储器等组成 。

指令执行过程一般分为:
 

arm架构,arm开发

取指:
从存储器中获得下一条执行的指令读入指令寄存器;
PC: 程序计数器, 总是指向下一条将要执行的指令;
IR: 指令寄存器,用于保持已取得指令;如图:

arm架构,arm开发

译码:
解释指令,决定指令的执行意义;如图:
 

arm架构,arm开发

执行:
从存储器向数据通道寄存器移动数据;
通过算术逻辑单元ALU进行数据操作;如图:
 

arm架构,arm开发

存储:
从寄存器向存储器写数据。如图:

arm架构,arm开发

在一些微处理器上,如ARM系列处理器、DSP等,指令实现流水线作业,指令过程按流水线的数目来进行划分。如5级流水线的处理器将指令分5个阶段执行。

(1)按存储结构分:冯·诺依曼体系结构和哈佛体系结构

冯·诺伊曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。

处理器,经由同一个总线传输来访问程序和数据存储器,程序指令和数据的宽度相同。如X86系列、ARM7等,如图:

arm架构,arm开发

哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,目的是为了减轻程序运行时的访存瓶颈。哈佛结构的微处理器通常具有较高的执行效率。

Microchip公司的PIC系列芯片,摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11
等。如图:

arm架构,arm开发



按指令类型可分为:复杂指令集(CISC)处理器和精简指令集(RISC)处理器 。
 

CISC:复杂指令集(Complex Instru

ction Set Computer);

具有大量的指令和寻址方式,那么就需要更多的解释器。

8/2原则:80%的程序只使用20%的指令;

大多数程序只使用少量的指令就能够运行。

CISC具有如下显著特点:

(1) 指令格式不固定,指令长度不一致,操作数可多可少;

(2) 寻址方式复杂多样,以利于程序的编写;

(3) 采用微程序结构,执行每条指令均需完成一个微指令序列;

(4) 每条指令需要若干个机器周期才能完成,指令越复杂,花费的机器周期越多。

RISC:精简指令集(Reduced Instruction Set Computer):指令数目少,在通道中只包含最有用的指令;执行时间短,确保数据通道快速执行每一条指令;使CPU硬件结构设计变得更为简单;每条指令都采用标准字长。
 

arm架构,arm开发

   资料直通车:Linux内核源码技术学习路线+视频教程内核源码

学习直通车:Linuxc/c++高级开发【直播公开课】

零声白金VIP体验卡:零声白金VIP体验卡(含基础架构/高性能存储/golang/QT/音视频/Linux内核)

2、ARM处理器体系架构

ARM即Advanced RISC Machines的缩写。

1985年4月26日,第一个ARM原型在英国剑桥的Acorn计算机有限公司诞生。


20世纪80年代后期,ARM很快开发成Acorn的台式机产品,形成英国的计算机教育基础。

1990年成立了Advanced RISC Machines Limited。

20世纪90年代,ARM32位嵌人式RISC(Reduced Instruction Set Computer)处理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位。

目前己经占有75%以上的32位嵌入式产品市场。

32位RISC处理器受到青睐,领先的是ARM嵌入式微处理器系列。

ARM公司虽然只成立20多年,但在1999年因移动电话火爆市场,其32位RISC处理器占市场份额超过了50%,2001年初,ARM公司的32位RISC处理器市场占有率超过了75%。ARM公司是知识产权供应商,是设计公司。由合作伙伴公司来生产各具特色的芯片。

ARM处理器特点:

(1)ARM指令是32位定长的(除AArch64架构部分增加指令为64位外)
(2)寄存器数量丰富(37个寄存器)
(3)普通的Load/Store指令
(4)多寄存器的Load/Store指令
(5)指令的条件执行
(6)单时钟周期中的单条指令完成数据移位操作和ALU操作
(7)通过变种和协处理器来扩展ARM处理器的功能
(8)扩展了16位的Thumb指令来提高代码密度

ARM的命名规则, 大致分成两类类:


基于ARM Architecture版本的“处理器系列”命名规则;


基于ARM Architecture版本的“处理器型号”命名规则。
 

arm架构,arm开发

arm架构,arm开发

arm架构,arm开发

ARMv6 架构,引进了包括单指令多数据(SIMD)运算在内的一系列新功能。

ARMv6-M 架构,为低成本、高性能设备而设计,向以前由8位设备占主导地位的市场提供32位功能强大的解决方案。如Cortex™-M0和Cortex-M1。

ARMv7架构,所有ARMv7架构处理器都实现了Thumb-2 技术(一个经过优化的16/32位混合指令集),此架构分为3类处理器:Cortex-A -应用处理器、Cortex-R - 实时处理器、Cortex-M - 微控制器。

ARMv8架构,ARMv8-A将64位体系结构支持引入ARM体系结构中,其中包括:64位通用寄存器、SP(堆栈指针)和 PC(程序计数器),64位数据处理和扩展的虚拟寻址,兼容32位处理。

ARMv9架构,最重大的升级在于AI和安全,在兼容ARMv8的基础上,提升了安全性,增加了矢量计算、机器学习和数据信号处理等多方面能力,性能表现也将得到极大幅度的提升。

1)ARM数据类型

(1)双字节(Double-Word):64位

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

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

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

2)ARM处理器存储格式

作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB。

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

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

arm架构,arm开发

3)ARM处理器工作状态

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

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

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

THUMB指令的特点:


THUMB代码所需空间为ARM代码的70%;
THUMB代码所使用的指令数比ARM代码多40%;
用32位存储器,ARM代码比THUMB代码快40%;
用16位存储器,THUMB代码比ARM代码快45%;
使用THUMB代码,外部存储器功耗比ARM代码少30%

4)ARM处理器工作模式
 

arm架构,arm开发

5)ARM Cortex-A处理器工作模式

arm架构,arm开发

6) Cortex-A寄存器组

34个通用寄存器,包括各种模式下的R0-R14和共用的R15程序计数器(PC),这些寄存器都是32位的。8个状态寄存器,Hyp模式独有一个ELR_Hyp寄存器。


 

arm架构,arm开发

7)程序状态寄存器CPSR和SPSR

和其他处理器一样,ARM有程序状态存储器来配置处理器工作模式和显示工作状态。ARM处理器有两个程序状态寄存器CPSR (Current Program Status Register,当前程序状态寄存器)和SPSR (Saved Program Status Register,备份的程序状态寄存器)。

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

每一种运行模式下都有一个专用的物理状态寄存器,称为SPSR为状态寄存器。
 

arm架构,arm开发

(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:表示当前处理器的工作模式

arm架构,arm开发

8)工作模式的切换条件

(1)执行软中断(SWI)或复位命令(Reset)指令。如果在用户模式下执行SWI指令,CPU就进入管理(Supervisor)模式。


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


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


(4)有一种模式是CPU无法自动进入的,这种模式就是System模式,要进入System模式必须由程序员编写指令来实现。要进入System模式只需改变CPSR的模式位为System模式对应的模式位即可。


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

3、ARM处理器内存管理1)什么是内存映射

内存映射指的是在ARM存储系统中,使用内存管理单元(MMU)实现虚拟地址到实际物理地址的映射,如图所示。

arm架构,arm开发

2)为什么要内存映射

A32架构的ARM的地址总线为32位,故CPU可寻址范围为0x00000000~0xffffffff寻址空间为4GB,所有的内部和外部存储或者外设单元都需要通过对应的地址来操作,不同芯片外设的种类数量寻址空间都不一样,为了能让内核更方便的管理不同的芯片设计,ARM内核会先给出预定义的存储映射。

芯片设计公司需要根据内核提供的预定义的存储器映射来定义芯片内部外设和外部的保留接口,这样做的好处是极大地减少了同一内核不同芯片间地址转化的麻烦(CPU操作统一的虚拟地址,实际物理地址交由MMU管理)。


 

arm架构,arm开发

3)位带操作

(1)什么是位带操作


举个简单的例子,在使用51单片机操作P1.0为低电平时我们知道这背后实际上就是往某个寄存器某个比特位中写1或0的过程,但在CPU操作的过程中每一个地址所对应的都是一个8位字节,怎么实现对其中某一位的直接操作,这就需要位带操作的帮助。

(2)哪些地址可以进行位带操作


上图中有两个区中实现了位带。其中一个是 SRAM 区的最低 1MB 范围(Bit band region),第二个则是片内外设区的最低 1MB 范围。

4)寄存器的地址计算

在ARM中所有的外设地址基本都是挂载在AHB或者APBx总线上,因此我们往往采用基地址+偏移地址+结构体的方式,来快速明了计算某一外设具体寄存器的地址,如图所示。
 

arm架构,arm开发

5)集成外设寄存器访问方法

arm架构,arm开发

原文作者:面包板社区

arm架构,arm开发文章来源地址https://www.toymoban.com/news/detail-861349.html

到了这里,关于一文深入搞懂ARM处理器架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【架构】探索计算机处理器的世界:ARM和x86架构解析及指令集

    计算机处理器是数字化时代的核心引擎,而在众多处理器架构中,ARM和x86是备受关注的三个。本文将带您深入探索这三个架构,介绍它们的特点、公司背景以及应用领域。让我们一起揭开计算机处理器的神秘面纱吧! ARM(Advanced RISC Machines)是一种计算机指令集架构(ISA),

    2024年02月11日
    浏览(37)
  • 2023年Arm最新处理器架构分析——X4、A720和A520

    上一篇文章我们介绍了Arm的Cortex-X1至Cortex-X3系列处理器,2023年的5月底,Arm如期发布了新一年的处理器架构,分别为超级大核心Cortex-X4,大核心A720和小核心A520。在智能手机行业,Arm始终保持每年一迭代的处理器架构升级节奏,让用户可以不断体验到最先进的产品设计。本文主

    2024年02月16日
    浏览(33)
  • 【软件工具】 Linux 中的 ARM 和 AMD 两种不同的处理器架构简介

    Linux 中的 ARM 和 AMD 两种不同的处理器架构。ARM 和 AMD 架构的主要区别在于它们的设计哲学、性能特性、能效和主要应用场景。以下是一些关键差异: 架构设计 : ARM(Advanced RISC Machine) :ARM 架构基于 RISC(精简指令集计算)原理。它使用更少的指令和简化的指令集,这有助

    2024年04月10日
    浏览(37)
  • ARM处理器概述

    RISC处理器和CISC处理器 首先了解一下两种处理器名字: RISC(Reduced Instruction Set Computer): 精简指令集 处理器 与之相对应的是: CISC(Complex Instruction Set Computer): 复杂指令集 处理器 顾名思义,RISC比CISC更加简单,那么对于处理器来说什么能称为简单呢?可以联想为生活中可

    2024年02月13日
    浏览(36)
  • 除法的效率 arm处理器

    除法的效率 性能结论: 除法:545ms 乘法:93ms 差了3倍 代码: 测试结果 : void fun(Pack1* restrict in, Pack2* restrict out) ; __restrict__ 申明该指针为唯一的访问该内存的指针 优化成果: 时间优化为原来的82% 指令优化为74% cache miss 没有变化 优化对比 测试平台 MTK arm天机 8000

    2024年02月10日
    浏览(39)
  • [ARM 汇编]进阶篇—异常处理与中断—2.4.2 ARM处理器的异常向量表

    异常向量表简介 在ARM架构中,异常向量表是一组固定位置的内存地址,它们包含了处理器在遇到异常时需要跳转到的处理程序的入口地址。每个异常类型都有一个对应的向量地址。当异常发生时,处理器会自动跳转到对应的向量地址,并开始执行异常处理程序。 异常向量表

    2024年02月09日
    浏览(62)
  • [ARM汇编]ARM体系结构简介—1.2.1 ARM处理器的历史与发展

    ARM(Advanced RISC Machine,先进的精简指令集计算机)处理器是一种广泛应用于嵌入式系统的处理器架构,具有低功耗、高性能、低成本等特点。接下来,我们将介绍 ARM 处理器的历史与发展。 ARM 处理器的历史 ARM 处理器的历史可以追溯到 1983 年,当时英国的 Acorn 电脑公司为了

    2024年02月09日
    浏览(37)
  • ARM微处理器的指令集概述

    ARM处理器是基于精简指令集计算机(RISC)原理设计的 ,指令集和相关译码机制较为简单。ARM微处理器的指令集是加载(Load)/存储(Store)型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来

    2024年02月02日
    浏览(39)
  • ARM处理器有哪些工作模式和寄存器?各寄存器作用是什么?ARM异常中断处理流程?

    快速学习嵌入式开发其他基础知识? 返回专栏总目录 《嵌入式工程师自我修养/C语言》 Tip📌:鼠标悬停双虚线/句,可获得更详细的描述   ARM处理器有多种工作模式,如下表所示。应用程序正常运行时,ARM处理器工作在 用户模式(User mode) ,当程序运行出错或有中

    2024年02月21日
    浏览(49)
  • 嵌入式ARM设计编程(三) 处理器工作模式

    文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。或者公众号【AIShareLab】回复 嵌入式 也可获取。 (1) 通过实验掌握学会使用msr/mrs 指令实现ARM 处理器工作模式的切换,观察不同模式下的寄存器,加深对CPU 结构的理解; (2) 通过实验掌握ld 中如何使

    2024年02月03日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包