计算机原理与应用 第二章——ARM处理器

本文深入介绍了ARM微处理器的特性和功能结构,涵盖了ARM处理器的工作状态、模式、指令集、存储器组织等内容,并对比了经典ARM处理器与Cortex-M4处理器的不同。

第二章——ARM微处理器

一、ARM微处理器特点及功能结构

1.ARM微处理器主要特点

(1)ARM7系列采用冯诺依曼结构(输入输出、控制器、存储器、处理器),ARM9~11采用哈佛体系结构(存储器分为程序存储器和数据存储器)
(2)属于RISC型处理器结构(简单指令集),在简化处理器结构,减少复杂功能指令的同时,搞了处理器的速度。(这种是处理器简单,因为复杂指令由简单指令合成,所有编译器复杂)
(3)定义了多种处理器工作模式,提高了处理器工作效率
(4)具有ARM和Thumb两种处理器工作状态,可以很好地兼容8位、16位器件
(5)大量使用寄存器,大多数操作都在寄存器内完成
(6)具有灵活方便的接口

2.指令集方面的主要特点

(1)采用固定长度的指令格式
(2)只有LOAD和STORE指令存取内存,其他的操作都只能对寄存器中的操作数进行运算
(3)嵌入了在线仿真ICE-RT逻辑,省去了价格昂贵的在线仿真器
(4)低功耗,同时因为低功耗,更常用地应用在手持式嵌入式系统中

关于Thumb-2指令集
(1)Thumb-2中16位Thumb指令和32位ARM指令并存,处理器执行程序没有切换的额外开销,可节省执行时间和指令空间,代码密度更高,也就对存储器的需求更少。
(2)不需要将源码分成ARM和Thumb来编译,不需要花时间来切换于32位ARM状态和16位Thumb状态之间,无需反复求证和测试状态何时切换,程序效率高,易开发。这简化了软件开发和代码维护,使产品面市更快。
在这里插入图片描述 在这里插入图片描述

3.Cortex系列处理器特点

Cortex是基于ARMv7架构的最新的ARM处理器。

ARMv7架构定义了三大分工明确的系列:A——面向尖端性能好,R——针对实时系统,M——针对微控制器(简单)。(Cortex-M3和M4是应用较多的)
在这里插入图片描述
特点
在这里插入图片描述
①基于哈佛架构,取指令和数据访问可以同时进行
②使用三级流水线设计(取指、译码、执行)
32位寻址,可支持4GB存储器空间
④基于ARM AMBA计数的片上接口,支持高吞吐量的流水线总线操作
内嵌的嵌套向量中断控制负责中断处理,自动处理中断优先级、中断屏蔽、中断嵌套和系统异常处理。
⑥支持可选择的MPU,提供了存储器保护特性
⑦通过位段特性支持两个特定储存器区域中的位数据访问
⑧寄存器组和某些编程模式与经典ARM微处理器有所不同
⑨从经典ARM微处理器仅支持ARM Thumb指令,扩展到可同时支持16位和32位指令的Thumb-2版本。

关于Cortex-M4

①支持单指令多数据操作
②运算器操作数只能从寄存器输入/输出
③支持饱和运算指令,可以避免出现溢出时,计算结果产生大的畸变
④支持可选择的浮点指令——桶式位移器BS

桶式位移器BS:
是高速微处理器中的常用部件
能在单周期内完成多种方式、各种位数的移位操作。 
用于实现移位指令、浮点计算中的小数点对齐等。

在这里插入图片描述
(循环左移i位等价于右移 32-i 位)

4.ARM处理器功能结构

单片机(单片微型计算机),也称为微控制器,下面是微控制器组成示意图。

  • 处理器是微控制器的核心。除了处理器外,微控制器还需要有存储器、时钟生成和分配逻辑、系统总线以及外设等支撑模块。
  • 外设模块包括I/O接口单元、定时器、模数转换器ADC和数模转换器DAC等,这些外设模块可为检测、控制提供输入输出通道。
    在这里插入图片描述

微控制器的核心就是处理器。下面是Cortex-M3/M4微处理器的功能模块:(实线模块为必要的,虚线模块为可选)
在这里插入图片描述

(1)处理器顶层有多个总线接口:

  • I-CODE总线:指令总线,用来访问程序储存器获取指令
  • D-CODE总线:数据总线,用来访问程序储存器读取立即数,以及进行调试器访问操作
  • 系统总线:访问RAM和外设,以进行读写数据
  • 私有外设总线(PPB总线):使用先进结构协议来访问外设

(2)处理器内核

处理器内核主要涉及流水线操作、寄存器组和存储器接口,是实现RISC指令集的硬件架构基础。
(PC是程序计数器,指向被取指的指令,也就是正在译码的指令的下一条指令,是正在执行的指令的下两条指令)
在这里插入图片描述
(3)嵌套向量中断控制器是为低延迟实现异常处理处理提供了方便。

  • 主要有以下特征:
    • 可配置1~240个外部中断
    • 可配置优先级位数3~8位
    • 支持电平和脉冲(边沿)中断
    • 可以动态重新分配中断优先级
    • 优先级分组
    • 支持尾链中断
    • 进入中断时,处理器状态自动保存,退出中断时状态自动恢复,无额外指令开销

二、经典ARM处理器编程模型

编程模型——从开发者角度来看的处理器结构。编程模型涉及处理器的工作状态、工作模式、寄存器组等。

1.ARM处理器工作状态

ARM是32位微处理器,但是兼容16位指令集和数据类型。从编程角度,ARM微处理器有两种工作状态,在程序的执行中可以切换(ARM微处理器在开始执行代码时,应该处于ARM状态),切换不影响处理器的工作模式和相应寄存器中的内容:

  • ARM状态:处理器执行32位的ARM指令集,即执行字方式的ARM指令。
  • Thumb状态:处理器执行16位的Thumb指令集,即执行半字方式的ARM指令

ARM指令集有良好的执行效率,支持ARM体系架构的所有功能;而 Thumb指令集是ARM指令集的子集,具有良好的代码密度。Thumb指令低密度及在窄存储器时性能高的特点使得它在大多数基于C代码的系统中有非常广泛的应用。

只能使用ARM指令

  • 如果对于速度有比较高的要求,ARM指令在宽存储器中会提供更高的性能;
  • 某些功能只能由ARM指令来实现 ,比如:访问CPSR寄存器来使能/禁止中断或者改变处理器工作模式;访问协处理器CP15;执行C代码不支持的DSP算术指令;
  • 异常中断(Exception)处理。在进入异常中断后,内核自动切换到ARM状态。 即在异常中断处理程序入口的一些指令是ARM指令,然后根据需要程序可以切换到Thumb状态,在异常中断处理程序返回前,程序再切换到ARM状态。
  • ARM处理器总是从ARM状态开始执行 。因而,如果要在调试器中运行Thumb程序,必须为该Thumb程序添加一个ARM程序头,然后再切换到Thumb状态,调用该Thumb程序。

切换
Thumb—ARM

  • BX Rn(操作数寄存器Rm的状态位bit[0]为0
  • 如果处理器进行异常处理,在此情况下,把PC放入异常模式链接寄存器LR中,从异常向量地址开始执行也可以进入ARM状态

ARM—Thumb

  • BX Rn(操作数寄存器Rm的状态位bit[0]为1
  • 如果处理器在Thumb状态进入异常,则当异常处理返回时,自动切换到Thumb状态。
CODE32 //ARM状态下的代码
LDR R0, =Into_Thumb+1//产生跳转地址并且设置最低位
BX R0//Branch Exchange 进入Thumb状态
…
CODE16 //Thumb状态下的子函数
…
LDR R3, =Back_to_ARM//产生字对齐的跳转地址,最低位被清除
BX R3//Branch Exchange 返回到ARM状态
…
CODE32 //ARM状态下的子函数

2.ARM处理器工作模式

在这里插入图片描述

处理器模式
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值