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

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:

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

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

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

MCR:

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

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

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

03.CP15寄存器和操作数总览:

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

c0:

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

c1:

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

c2、c3:

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

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

c4:

c4未使用

c5、c6:

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

c7:

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

c8:

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

c9:

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

c10:

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

c11:

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

c12:

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

c13:

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

c14:

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

32位的c14寄存器:

64位的c14寄存器:

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协处理器来复用协处理器的多功能。

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

浅谈ARMv7-A协处理器CP15相关推荐

  1. ARM Cortex-M0(1)---浅谈ARM Cortex-M0

    浅谈ARM Cortex-M0 一.引言 ARM公司在2009年初发布了其嵌入式处理器系列中最小型.最低功耗的CortexM0处理器.CortexM0低功耗.高性能与极精简程序代码的特性,能应用于各种 ...

  2. 浅谈关于CPU的架构和工艺(1)

    http://www.jianshu.com/p/fa7e11321cd8 inside 高通骁龙 刚入手了SONY Xperia Z5 Premium,其CPU采用了争(fa)议(re)较大的骁龙( ...

  3. 浅谈MySQL存储引擎-InnoDBMyISAM

    浅谈MySQL存储引擎-InnoDB&MyISAM 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式 ...

  4. 【大话设计模式】——浅谈设计模式基础

    初学设计模式给我最大的感受是:人类真是伟大啊!单单是设计模式的基础课程就让我感受到了强烈的生活气息. 个人感觉<大话设计模式>这本书写的真好.让貌似非常晦涩难懂的设计模式变的生活化.趣味化 ...

  5. 学校计算机机房好处,浅谈学校计算机机房维护

    浅谈学校计算机机房维护    现在的学校机房都配置了数量较多的计算机,而且机房的使用非常频繁.对于怎样维护好计算机,特别是计算机软件系统,对广大计算机教师来说是一个很重要且非常现实的问题.下面就本人在 ...

  6. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  7. mybatis与php,浅谈mybatis中的#和$的区别

    浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...

  8. 浅谈GCC预编译头技术

    浅谈GCC预编译头技术 文/jorge --谨以此文,悼念我等待MinGW编译时逝去的那些时间. 其 实刚开始编程的时候,我是丝毫不重视编译速度之类的问题的,原因很简单,因为那时我用BASICA.后来 ...

  9. 【笔记】震惊!世上最接地气的字符串浅谈(HASH+KMP)

    震惊!世上最接地气的字符串浅谈(HASH+KMP) 笔者过于垃圾,肯定会有些错的地方,欢迎各位巨佬指正,感激不尽! 引用:LYD的蓝书,一本通,DFC的讲稿,网上各路巨佬 Luguo id: 章鱼那个 ...

最新文章

  1. 算法:多数元素,多种解法
  2. idea编辑springboot,如何打成war包
  3. 枚举Enum与注解Aunotation大杂烩
  4. Github-Client(ANDROID)开源之旅(二) ------ 浅析ActionBarSherkLock
  5. android 还可以输入多少个字符
  6. 不能连接到 mysql_怎么无法连接到数据库?
  7. Spring Cloud:Security OAuth2 自定义异常响应
  8. Atitit 上传进度的实现与原理 目录 1.1. 前端 1 1.2. 读取进度 1 1.3. 后端 定时注入进度 1 1.1.前端                         wind
  9. 计算机信息安全工程师教材,第三级 安全标记保护级-信息安全工程师教材
  10. 中文手写输入法闪退问题
  11. 软件需求工程 高校教学平台 测试计划
  12. matlab解微分方程
  13. drupal与html转换,HTML转Drupal主题的方法
  14. SpringBoot+H5微信登陆(网页)
  15. java 对象数据映射_SpringMVC中json数据映射为java对象的坑
  16. 机器学习中的算法:支持向量机(SVM)基础
  17. Ubuntu12.04 Skype4.2 提示Skype can't connect,安装Skype4.3
  18. struts2 超链接a标签执行action
  19. 用python实现水纹特效
  20. 使用Python Link SDK接入阿里云物联网平台

热门文章

  1. 欧奈尔4个经典形态_股票K线图基础知识:图解4大经典K线组合形态
  2. qlv视频转换器免费版_迅捷视频转换器无法转换腾讯视频怎么办?亲测操作快速转换...
  3. echarts 动态设置标题_echart动态生成标题
  4. 在线图表分析制作_(漂亮)象形柱状图表制作 在线图表制作工具
  5. 计算机游戏高少手电影,支持switch,还有电影特技!上手简评骨伽IMMERSA Ti游戏耳机...
  6. android 让dialog保持在最前_Android 面试进阶指南 —— 唠唠任务栈,返回栈和启动模式...
  7. fat32转ntfs工具无损数据安全转换_干货真香! 无损制作UD三分区教程,新手小白的福利来了...
  8. ajax如何做到异步交互,1.ajax简单实现异步交互
  9. linux sh 必要,Linux Shell学习之基础篇(不适合学习,仅为本人笔记)
  10. mui-scroll-wrapper mui-scroll 内容增多不出滚动条