浅谈ARMv7-A协处理器CP15

2021-12-21 09:47:25 digiproto
协处理器,顾名思义就是协助型处理器,主要协助做一些主处理器无法执行或者执行效率不佳的事情,比如浮点、图像、音频处理这一类,随着硬件的发展,大多协处理器的功能都慢慢集成到主处理器中,但是某些特定的工作还是需要协处理器进行辅助。


ARM拥有16个协处理器,常被命名为 CP0—CP15,其中CP0—CP7由厂家定义协处理功能,而CP8—CP15预留给ARM使用:

1.CP15 提供一些系统控制功能,这包括体系结构和特征识别,以及控制、状态信息和配置支持,还提供了性能监视器寄存器。


2.CP14 主要提供 debug 系统的控制、Thumb执行环境、Java字节码执行。


3.CP10、CP11 两个协处理器一起,提供了浮点运算和向量操作,以及高级的 SIMD 指令扩展。


4.协处理器8、9、12和13预留给ARM将来使用。


01

CP15寄存器特性:

CP15 一共有 16 个寄存器,通常是需要 PL1 特权级才能访问,ARMv7 的 CP15 寄存器都是复合功能寄存器,多种功能对应多个寄存器内存实体,由访问指令的参数来决定访问的是哪种功能对应的内存。


对于 ARMv7 架构而言,A 系列和 R 系列是统一设计的,A 系列带有 MMU 相关的控制,而 R 系列带有 MPU 相关控制,针对不同的功能需要做区分,同时又因为协处理器 CP15 只支持 16 个寄存器,而需要支持的功能较多,所以通过同一寄存器不同功能的方式来满足需求。


在指令的编码中,支持 16 个寄存器只需要使用 4 位,如果需要支持 32 个寄存器,就需要多使用一位寄存器位,要知道,对于指令编码而言,每一位的资源都是非常紧缺的,关于指令编码可以参考 ARM指令集编码。



02

CP15寄存器的访问:

ARMv7 中对于协处理器的访问,使用 mcr 和 mrc 指令,分别表示将 ARM 核心寄存器中的值的写到 CP15 寄存器中和从 CP15 寄存器中读到 ARM 核心寄存器中,大部分指令都需要在 PL1 以及更高的特权级下才能正常执行,这是因为 CP15 协处理器大多都涉及到系统和内存的设置,user 模式没有操作权限,user 模式仅能访问 CP15 中有限的几个寄存器比如:ISB、DSB、DMB、TPIDRURW、TPIDRURO 寄存器。


下面以mrc和mcr指令为例,进行讲解:


MRC:

image.png

作用:将协处理器寄存器的值读取到ARM的寄存器中

实例:mrc p15, 0, r0, c0, c1, 1

将协处理器CP15的寄存器的值读取到ARM的r0寄存器中。


MCR:

image (1).png

作用:将ARM的寄存器的值读取到中协处理器寄存器

实例:mcr p15, 0, r0, c0, c1, 1

将ARM的r0寄存器的值读取到协处理器CP15的寄存器中。


03

CP15寄存器和操作数总览:

尽管 CP15 的寄存器是 c0—c15,但是根据上文中的介绍,实际上真正的寄存器实体完全不止 16 个,而是通过 “<opc1>(通常是0),<CRn>,<CRm>{,#<opc2>}” 来确定需要操作的目标寄存器,下表就是整个 c0—c15 寄存器以及功能的总览:

image (2).png


c0:

c0是标识寄存器,对应的功能列表如下表:

image (3).png


c1:

c1是系统控制寄存器,对应的功能列表如下表:

image (4).png


c2、c3:

c2和c3是内存保护和控制寄存器,对应的功能列表如下表:

image (5).png


在ARM v7-A的大型物理地址扩展或虚拟化扩展的实现中,CP15的c2寄存器包括一些64位的系统控制寄存器。

image (6).png


c4:

c4未使用


c5、c6:

c5和c6是内存系统错误寄存器,对应的功能列表如下表:

image (7).png


c7:

c7包括缓存维护、地址转换,以及其他功能,对应的功能列表如下表:

image (8).png


c8:

c8是TLB维护操作,对应的功能列表如下表:

image (9).png


c9:

c9寄存器预留了缓存、TCM控制和性能监视器,对应的功能列表如下表:

image (10).png


c10:

c10是内存重映射和TLB控制寄存器,对应的功能列表如下表:

image (11).png


c11:

c11保留给TCMDMA寄存器,对应的功能列表如下表:

image (12).png


c12:

c12是安全扩展寄存器,对应的功能列表如下表:

image (13).png

c13:

c13是进程、上下文和线程ID寄存器,对应的功能列表如下表:

image (14).png


c14:

c14,保留给通用计时器扩展,对应的功能列表如下表:

32位的c14寄存器:

image (15).png


64位的c14寄存器:

image (16).png


c15:

ARMv7保留CP15的c15用于实现定义的目的,并且对CP15的c15编码的使用不做任何限制。


从上述的协处理器寄存器列表可以看出,每个寄存器都对应多种功能,通过 mcr 或者 mrc 指令的参数来指定需要操作的具体寄存器,同时,CP15 协处理器的大部分寄存器功能都是和系统的内存相关,比如 MMU、TCM、TLB、DMA、Memory protection 等等。



SkyEye相关仿真介绍


由本公司自主研发的SkyEye全数字实时仿真软件,是基于可视化建模的硬件行为级仿真平台,利用拖拽的方式快速搭建任意的虚拟硬件平台,保证虚拟嵌入式系统的可靠性和实时性,进行嵌入式软件的开发和调试。SkyEye目前支持主流的嵌入式硬件平台,可以运行主流的操作系统,此外还能适配国内自主研发的操作系统天脉。通过利用基于LLVM的动态二进制翻译技术,使虚拟处理器在典型的桌面计算机上运行速度可以达到2000MIPS以上。对标产品为美国风河公司的Simics。

图片关键词


在SkyEye软件里面,关于ARM架构的仿真芯片中,主要设置了CP10、CP11协处理器来进行VFP和SIMD相关指令运行,CP15协处理器来复用协处理器的多功能。


通过仿真的协处理器,可以使得仿真芯片实现协处理器相关指令的操作。


END

推荐阅读

图片关键词
图片关键词

产品介绍

图片关键词
图片关键词
图片关键词
图片关键词


迪捷软件是国内领先的关键领域MBSE工具软件供应商,以「助力中国高端装备制造业的腾飞」为使命,立志「成为国际一流的基础软件供应商」

图片关键词


标签: ARM MBSE
首页
产品
新闻
联系