协处理器
协处理器(coprocessor)是一种协助中央处理器完成其无法执行或执行效率、效果低下的处理工作而开发和应用的处理器。
- 中央处理器无法执行的工作有很多,比如设备间的信号传输、接入设备的管理等。
- 中央处理器执行效率、效果低下的有图形处理、声频处理等。
为了进行这些处理,各种协处理器就诞生了。需要说明的是,内建于CPU中的协处理器,同样不算是辅助处理器,除非它是独立存在。
ARM协处理器
ARM32位的架构最多支持16个协处理器(CP0~CP15)。之所以强调32位架构,是因为从ARMv8开始的64位架构弱化了协处理器的概念。
- CP15:ARM中重要的协处理器。通过协处理器指令MCR和MRC提供共计15个寄存器来配置和控制cache、MMU、保护系统、配置时钟模式等。
- CP14:Debug调试。
- CP10/CP11:处理向量浮点运算(VFP)。
- CP8/CP9/CP12/CP13:预留给ARM厂家。
- CP0-CP7:预留给第三方厂家。
注意:并不是每个SOC都会支持多个协处理器,有时候只会有CP15协处理器
常见的ARM协处理器应用
- VFP(Vector Floating Point)架构使用CP10(单精度指令)和CP11(双精度指令)来进行矢量浮点运算。
- 数学协处理器提供常规的数学运算能力以及许多三角函数及超越函数的运算能力等。