历史上的今天

今天是:2024年09月22日(星期日)

正在发生

2021年09月22日 | ARM体系架构—ARMv7-A协处理器

发布者:ShimmeringMoon 来源: eefocus关键字:ARM  体系架构 手机看文章 扫描二维码
随时随地手机看文章

一、ARMv7-A协处理器

ARM体系架构支持协处理器,用于扩展ARM处理器功能。协处理器指令用于访问协处理器。协处理器支持16个协处理器,编号0-15,使用CP0-CP15(Coprocessor)描述。

CP0-CP15协处理器的基本功能如下:


CP15:提供系统控制功能。包括架构和特性ID,以及控制,状态信息和配置支持。

CP14:提供硬件Debug功能。

CP10,CP11:共同支持浮点运算和向量操作。控制和配置浮点和高级SIMD扩展架构。

CP8,9,12,13:为ARM架构保留协处理器。

CP0-7:由厂家定义协处理功能。

二、CP15协处理器

CP15协处理器称之为系统控制协处理器,被用于控制和配置ARM处理器系统。其主要功能在于对系统内存的控制,包括cache,页表,TLB(Translation Lookaside Buffer),MMU(Memory Management Unit)等组件的控制。

除了对系统内存的控制外,CP15处理器还负责控制CP0-CP13的访问。CP0-CP13对于ARMv7-A架构可能是可选特性,其中CP10-CP11用于支持浮点运算指令,而CP0-CP7的实现由厂家定义。


2.1、CP15协处理器寄存器

CP15寄存器的实现和ARM体系架构的实现强相关:


ARMv7-A实现VMSA (Virtual Memory System Architecture),支持虚拟地址,使用MMU(Memory Management Unit)管理地址空间;

ARMv7-R实现PMSA (Protected Memory System Architecture),支持虚拟地址,使用MPU(Memory Protection Unit)管理地址空间;

本文只关心ARMv7-A架构。


CP15提供了16个32位主寄存器,命名为c0-c15。c0-c15寄存器可能对应多个不同的物理寄存器,常见的寄存器见下表。

image.png

2.2、CP15协处理器寄存器组织

CP15协处理器保护c0-c15共16个寄存器,寄存器32位的组织形式如下:


CRn,opc1,CRm,opc2


CRn:第一个协处理器寄存器;

opc1:协处理器操作码;

CRm:第二个协处理器寄存器;

opc2:协处理器操作码。


寄存器64位的组织形式如下:


CRm,opc1


opc1:协处理器操作码;

CRm:协处理器寄存器;

各字段的具体取值如下图所示。以c0寄存器为例,第一个协处理器寄存器CRn为c0,协处理器操作码opc1取值为[0-2],第二个协处理器寄存器CRm为c0-c7,协处理器操作码opc2取值为[0-7]。

在这里插入图片描述

c0:ID寄存器;

c1:系统控制寄存器;

c2,c3:内存保护及控制寄存器;

c4:未用;

c5,c6:内存fault寄存器;

c7:cache寄存器;

c8:TLB寄存器;

c9:性能监控寄存器;

c10:内存映射寄存器;

c11:TCM DMA访问寄存器;

c12:安全扩展寄存器;

c13:上下文寄存器;

c14:通用时钟寄存器;

c15:IMPLEMENTATION DEFINED;

2.3、c0-c15寄存器具体组织

c0寄存器的具体组织形式如下图, {CRn, opc1, CRm, opc2}值不同对应了c0中不同的寄存器。

在这里插入图片描述

c1寄存器的具体组织形式如下图。

在这里插入图片描述

c2,c3寄存器的具体组织形式如下图,含64位组织。

32位组织形式:

在这里插入图片描述

64位组织形式:

在这里插入图片描述

c5,c6寄存器的具体组织形式如下图。

在这里插入图片描述

c7寄存器的具体组织形式如下图。

在这里插入图片描述

c8寄存器的具体组织形式如下图。

在这里插入图片描述

c9寄存器的具体组织形式如下图。

在这里插入图片描述

c10寄存器的具体组织形式如下图。

在这里插入图片描述

c11寄存器的具体组织形式如下图。

在这里插入图片描述

c12寄存器的具体组织形式如下图。

在这里插入图片描述

c13寄存器的具体组织形式如下图。

在这里插入图片描述

c14寄存器的具体组织形式如下图。

在这里插入图片描述

2.4、虚拟内存控制寄存器组

CP15协处理器的重要功能在于内存控制,虚拟内存控制寄存器组包含了页表转换基址寄存器和页表转换控制寄存器等重要的寄存器。

虚拟内存控制寄存器其组如下表所示。

在这里插入图片描述

其中 AMAIR0,AMAIR1,TTBR0-64bbit,TTBR1-64bit用于LPAE(Large Physical Address Extension),启用LAPE的系统可以寻址40bit物理地址空间。


TTBCR是页表转换控制寄存器,可以控制系统使用哪个页表基址寄存器TTRB0或者TTRB1。TTRB0或者TTRB1用于记录一级页表转换的基址。

TTBCR分为长描述符和段描述符两种形式,长描述符用于开启LPAE的情况,短描述符用于32bit地址空间页表转换控制。

TTBCR寄存器短描述格式如下。

在这里插入图片描述

EAE[31]:地址扩展使能。值为0表示32bit物理地址空间寻址,TTBCR寄存器为短描述符格式;值为1表示40bit物理地址空间寻址,TTBCR寄存器为长描述符格式。

N[2:0]:指示TTBR0页表基址寄存器基址位宽,同时指示使用TTBR0还是TTBR1作为页表基址寄存器,以及TTBR0页表尺寸。

TTBCR.N的详细作用如下表所示。

在这里插入图片描述

N==0,使用TTBR0。

N>0,如果虚拟地址[31:32-N]为0,则使用TTBR0;其他情况使用TTRB1。这种情况下,N指示了TTBR1的页表地址,也指示了TTBR0的页表大小。

TTRB0的页表大小由TTBCR.N控制,TTRB1的页表大小为16KB。

TTRB0寄存器的描述如下图所示。

在这里插入图片描述

Bits[31:x]:x=(14-(TTBCR.N))。一级页表地址;

Bits[x-1:7]:Reserved;

NOS:非外部共享,TTBR0.S == 0时,该bit无效;

S:共享位。指示内存共享属性与页表转换的关系;

RNG:Region bits,指示外部cache属性与页表转换的关系;

IRGN[6,0]:Inner region bits,指示内部cache属性与页表转换的关系;

TTRB1寄存器的描述如下图所示。只有高位bit不一样,TTRB1的[31:14]一级页表地址长度固定,而TTBR0的长度受TTBCR.N影响。

在这里插入图片描述

读写CP15中TTBCR,TTBR0,TTBR1寄存器的指令如下。

image.png

在Linux中用户空间页表映射基址寄存器使用TTBR0,内核空间页表映射基址寄存器使用TTBR1。在进程切换时,TTBR0内记录的页表基址要刷新成新进程的PGD,而TTBR1的页表基址无需刷新。


2.4、异常处理寄存器组

在实现虚拟化扩展的处理器上,异常上报分可能是处理器处于如下两种模式中的一种:


PL1特权模式,包括安全模式和非安全模式;

PL2特权模式( Hyp模式),只有非安全模式。

异常信息寄存器,对于PL2特权模式存放在HSR(Hyp Syndrome Register)寄存器,对于PL1特权模式存放在FSR( Fault Status Register)寄存器。

对于同步异常,异常返回地址存放在FAR(Fault Address Registers)寄存器。

异常信息寄存器和地址寄存器如下表所示。

在这里插入图片描述

DFSR:数据中止异常(Data Abort exception)信息;

DFAR:数据中止异常(Data Abort exception)地址;

IFSR:预取中止异常(Prefetch Abort exception)信息;

IFAR:预取中止异常(Prefetch Abort exception)地址;

AxFSR:ADFSR辅助数据异常状态寄存器,AIFSR辅助指令异常状态寄存器。

DFAR寄存器内容如下所示,记录了异常发生时的虚拟地址。

在这里插入图片描述

DFSR寄存器内容如下所示,记录了异常发生时的信息。

在这里插入图片描述

CM:异常原因是否由于操作cache导致;

WnR:异常原因是由于读指令或者写指令导致;

LAPE:大地址扩展位,指示短描述或长描述格式;

Domain:异常原因是Debug导致,或是访问权限导致;

2.6、cache寄存器组

cache寄存器组主要完成分支预测,chace刷新等功能。

在这里插入图片描述

2.7、TLB寄存器组

TLB(Translation-lookside buffer)是一个硬件单元,用于缓存虚拟地址到物理地址的映射关系。TLB寄存器组主要用于刷新TLB表项。

在这里插入图片描述

2.8、CPACR

CP15协处理器的c1寄存器CPACR( Coprocessor Access Control Register)控制CP0-CP13的访问(在PL0和PL1特权模式下)。CPU上电初始化或者复位后,CP0-CP13是去使能的。

CPACR寄存器32bit分布情况。

在这里插入图片描述

ASEDIS[31]:去使能高低SIMD功能;

D32DIS[30]:去使能D16-D31浮点扩展寄存器;

[29]:Reserved;

TRCDIS[28]:去使能CP14 trace寄存器;

cpn[2n+1, 2n](n=[0,13]):访问CP0-CP13协处理器(PL0和PL特权模式);

CPACR寄存器中cpn[2n+1, 2n](n=[0,13]),每个协处理器占用2bit,存在4中情况:


0b00:拒绝访问,任何对CPn的访问都会产生未定义指令异常;

0b01:仅PL1特权模式可以访问,在PL0模式下任何对CPn的访问都会产生未定义指令异常;

0b10:Reserved;

0b11:可以访问,PL0和PL1特权等级都可以访问CPn协处理器。

对CPSR寄存器的访问可以使用协处理器指令MRC和MCR。

在这里插入图片描述

关键字:ARM  体系架构 引用地址:ARM体系架构—ARMv7-A协处理器

上一篇:ARM协处理器指令
下一篇:ARM协处理器指令详解

推荐阅读

全球工业机器人产业正以惊人的速度发展,而协作机器人作为未来的一大趋势,逐步显现出巨大的市场潜力。高度灵活、易于编程的协作机器人可以应用到更多的场景当中,未来的机遇很大,越来越多的企业开始投身其中。近日,在上海举办的第二十届中国国际工业博览会上,众多全球知名机器人企业展示了最新的机器人技术和产品解决方案,而来自丹麦的OnRobot也带来...
1、自主品牌工业机器人销量、市占率双双上升 一路高歌猛进的中国机器人市场在2018年出现了销量下滑,全年共累计销售机器人13.3万台,同比下降了3.75%,而自主品牌机器人却在糟糕的大环境下交出了一份不错的答卷。 2007-2018中国工业机器人出货量 来看这样一组数据:2013年国产机器人国产占有率为25.7%,2016年国产机器人的市场占有率为32.7%,2017年...
未来,越来越多的人将生活在城市。据联合国预测,到 2022 年,全球 56%的人口将是城市居民;到 2050 年,这一数字将上升至 68%。这意味着我们必须更高效地利用现有资源,同时必须减少总体能源消耗和二氧化碳排放。 楼宇可以在解决这一挑战中发挥决定性作用。仅在欧盟,能源消耗的 40%,和二氧化碳排放中的 36%都是因建筑物而引起的。而根据评估...
  磁翻板液位计可用于各种塔、罐、槽等设备的介质液位检测。一般地,磁翻板液位计的安装方式有多种,而顶装磁翻板液位计是常见的一种方式。通常,顶装磁翻板液位计是安装在地埋罐,或者在容器不适宜侧面开孔及侧面安装空间很小时选用。顶装磁翻板液位计的浮筒内设有磁浮子,该浮筒外设有磁翻板指示器,该磁翻板指示器和该磁浮子磁性耦合,通过耦合作用,...

史海拾趣

问答坊 | AI 解惑

请教quartus ii 测试模块仿真问题!!

quartus II 中的#display在哪显示结果,新手,运行了个测试模块 不知道哪看显示结果! 没用第三方工具..modelsim。新手上路,望多指教!! 代码如下: `timescale 100ns/10ns module alu(a,b,add_en,result); input wire     & ...…

查看全部问答∨

GPS开发求助(40分在线等,解决速度散分)

小弟现在正在做一个GPS导航的项目,用的是GR-89的模块。自己先在PC机上写了一个接受程序,发现能正常接受GPS发过来的信息。四条语句都能就收到(GLL语句出厂默认被关闭)。现在想写一个控制程序,通过写控制报文来对GPS的工作模式进行控制。可是不 ...…

查看全部问答∨

PROTEL99SE的封装库无法识别了如何解决

请教各位一个问题:我用的protel是99se的,原来自己的库可是却无法打开,说是文件格式无法识别。先前用一直好好的,装了AD9后就这样了,可我卸载了AD9还是不行,请问有什么解决办法吗???万分感谢…

查看全部问答∨

WinCE下如何读取SD卡信息?包括SD卡大小,剩余容量等?

WinCE下如何读取SD卡信息?包括SD卡大小,剩余容量等? 是否得用IO口去读? 得用哪个函数? 另外,同时问一下如何读取RAM内存信息,包括总大小以及已经使用的大小? …

查看全部问答∨

eCGUI-微型嵌入式GUI-图形界面系统(支持DOS 16/32bit,Linux,uC/OS等等)

eCGUI-微型嵌入式GUI-图形界面系统(支持DOS 16/32bit,Linux,uC/OS等等)                                 微型16/32位嵌入式GUI,自主开发,历时四年左右 ...…

查看全部问答∨

杭州 家和智能控制公司 怎么样 啊

这家公司说是搞什么传感网的,不知道待遇如何?以及公司内部氛围如何,麻烦相关人士解答啊…

查看全部问答∨

wince 几个基本问题(在线等)谢谢

a在activesync 已经连接的情况下,pc上的程序怎么样能直接访问wince的文件下的文件,就像pc访问文件一样? bactivesync怎么同步指定文件,比如,我要把wince上的\\windows\\xxx.txt文件同步到pc的d:\\xxx\\文件夹下怎么设置 啊? cwince5.0怎么实现开机 ...…

查看全部问答∨

光电鼠标传感器测应变

求助,能不能用光电鼠标传感器测平面应变,求相关资料及设计指导…

查看全部问答∨

易电源学习心得

易电源最本质的特点就是容易。易电源的游戏设计的非常好,通过看电源管理模块的原理图,已经知道器件的放置位置了。游戏过程中只要分析一下芯片的工作原理,其实就可以很轻易分析到器件使用场合。这个比原来单独设计,计算参数方便很多了…

查看全部问答∨

【求助】初学FPGA,有几个与verilog相关的问题请教各位高人:

1.verilog里的$display系统函数是否能被quartusII9.0支持,在哪里能看到运行的结果? 2.一个半加器的verilog文件如下 `timescale 1ns/100ps module abc(a,b,sum,c);         input a,b;         outp ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved