历史上的今天
返回首页

历史上的今天

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

正在发生

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

2021-09-22 来源:eefocus

一、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?imageView2/2/w/550

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?imageView2/2/w/550

在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。

在这里插入图片描述

推荐阅读

史海拾趣

固驰(GUERTE)公司的发展小趣事

固驰电子深知产品质量是企业生存之本,因此始终将品质控制放在首位。公司不仅建立了完善的质量管理体系,还通过了ISO9001:2015质量管理体系认证和美国UL产品认证,这标志着固驰电子的产品质量达到了国际先进水平。此外,公司还积极申请专利,目前已拥有50项国家专利,进一步巩固了其在行业内的技术领先地位。

HM International公司的发展小趣事

浙江固驰电子有限公司,即固驰(GUERTE)品牌的发源地,于1995年在浙江省丽水市创立。公司由范*先生创立,初期专注于半导体器件的生产。经过数年的不懈努力,固驰电子逐渐在行业内崭露头角,通过持续的技术创新和产品优化,成功开发出ZQ系列整流管芯、CELL芯片、5-200A单三相整流桥及电力半导体模块等核心产品。这些产品广泛应用于变频器、逆变焊机、UPS电源等领域,为公司的快速发展奠定了坚实基础。

3D PLUS公司的发展小趣事

在电子行业的浪潮中,3D PLUS公司以其前瞻性的技术视角,率先投身于3D技术的研发。公司初期便聚焦于3D扫描技术的突破,成功开发出全自动彩色桌面型3D扫描仪,该设备能够在短短几分钟内实现实物向数字的转变,为行业带来了前所未有的高效与便捷。这一创新产品的推出,不仅迅速获得了市场的认可,更在行业内树立了3D PLUS的技术领先地位。

FCT electronic公司的发展小趣事

在电子行业的初期,FCT electronic公司由一群富有远见和激情的工程师创立。他们看到了挠性电路板在未来电子产品中的巨大潜力,并致力于研发出更高效、更可靠的挠性电路板解决方案。经过数年的不懈努力,FCT electronic公司终于研发出了具有革命性意义的挠性电路板技术,这一技术为公司在行业中树立了良好的口碑,也为公司的后续发展奠定了坚实的基础。

广东奥科公司的发展小趣事

在国内市场取得一定成绩后,广东奥科公司开始积极拓展国际市场。公司参加了多个国际电子展会,与国际知名企业建立了合作关系,成功将产品打入国际市场。同时,广东奥科公司还注重品牌建设,通过提升产品质量和服务水平,逐渐树立了良好的品牌形象。这些努力使得广东奥科公司在国际市场上也获得了广泛的认可和好评。

DRS Technologies公司的发展小趣事

近年来,DRS在红外探测器技术领域取得了重要进展。公司在12μm像元尺寸非制冷红外探测器技术的基础上,成功研制出10μm像元尺寸的产品。这一技术的突破不仅展示了DRS在红外探测领域的实力,也为其在未来的市场竞争中提供了有力的技术支撑。

问答坊 | AI 解惑

如何鉴别芯片真假,cecclab为你解答

怎么判定芯片的真伪? 概述: 通过化学腐蚀及物理显微观察、简单电性能等方法,来检验鉴定器件是否为原半导体厂商的器件。 检验的内容: A、货品外包装、湿度标示卡、器件日期批号等检查确认及记录 B、外观检测,器件的表面状况、印字标准、重 ...…

查看全部问答>

WINCE SDK平台改变后出现的问题!求助!

WINCE SDK平台改变后出现的问题: fatal error LNK1112: module machine type \'ARM\' conflicts with target machine type \'SH3\' 这要怎么解决啊???…

查看全部问答>

串口读取数据过滤

在用ddk做驱动时,在对 IRP_MJ_READ截获后 然后改变指向的buffer中的数据 最总发现用串口调试助手读取数据时并没有改变串口读到数据的内容, 请问应该怎样做能够从底层改变收到数据,最终使用串口调试助手时显示的是我修改的数据…

查看全部问答>

求驱动函数

菜鸟请高手指点 有三个设备A、B、C A是最底层,然后挂载B到A上面,也就是原来设备栈的顺序是 A--B (由底到顶) 现在我想在A,B的设备栈里面加入C,但是我不希望设备栈的顺序是 A--B--C(由底到顶) ,而是希望希望设备栈的顺序 是 A--C--B(由底到顶) ...…

查看全部问答>

SEFS安全透明加密内核

软件名称:SEFS安全透明加密内核 软件版本:1.0 建议分类:系统安全/文件加密 软件大小:635K 安装平台:Win2000/xp/2003 软件语言:简体中文/繁体中文/英文 软件授权:共享软件 软件主页:http://www.sefs.net 支持邮箱:admin@sefs.ne ...…

查看全部问答>

LPC2141的无刷直流电机控制系统设计

LPC2141的无刷直流电机控制系统设计 导读: 无刷直流电机是最常用的无刷电机。它易于驱动,速度可调且工作寿命长,适用于各类大小型工业应用,诸如小型马达的控制(如12 V直流无刷电机)。 关键字 LPC2141   ...…

查看全部问答>

怎样在vxworks设置网卡的混杂模式?

vxworks 下怎样将网卡设置为混杂模式vxworks 下怎样将网卡设置为混杂模式? 我想利用vxworks编程实现将网卡设置成混杂模式,希望高手帮助!…

查看全部问答>

vb上位机 51单片机下位机 编程

Visual Basic设计完成了上位机界面;同时利用51单片机作为下位机微处理器,采集无刷电机运行工作中的电压、电流和转速等基本参数,通过串行通讯口将数据上传至上位机系统中。上位机系统对下位机上传的数据加以分析计算,直观的绘制个参数的变化曲线 ...…

查看全部问答>

大电流可控硅 问题

请教大侠,大电流可控硅是否可以串联作为控制电源的开关?…

查看全部问答>

电子工程师(开发)

电子专业本科以上学历,长期(至少五年以上)从事电子产品开发,能独立设计单片机软件、硬件,能独立完成产品研发,拥有丰富的开发和工艺经验。待遇从优。 五年以下工作经验者勿投 工资:3000-8000元。 福州名品电子科技有限公司现位于福州市科 ...…

查看全部问答>