ARM 通过增加硬件协处理器来支持对其指令集的通用扩展,通过未定义指令陷阱支持这些协处理器的软件仿真。 简单的ARM 核提供板级协处理器接口,因此,协处理器可以作为一个独立的元件接入。 高速时钟使得板级接口非常困难,因此,高性能的ARM 协处理器接口仅限于片上使用。
最常使用的协处理器是用于控制片上功能的系统协处理器。 例如,控制ARM720 上的高速缓存Cache 和存储器管理单元MMU 等。
ARM 也开发了浮点协处理器,也可以支持其他的片上协处理器。 ARM 体系结构支持通过增加协处理器来扩展指令集的机制。
(1)协处理器的体系结构
协处理器的体系结构最重要的特征是:①支持多达16 个逻辑协处理器。 ②每个协处理器可使用的专用寄存器多达16 个;其大小不限于32 位,可以是任何合理的位数。 ③协处理器使用load-store 体系结构,有对内部寄存器操作的指令,有从存储器读取数据装入寄存器和将寄存器数据存入存储器的指令,以及与ARM 寄存器传送数据的指令。
(2)协处理器寄存器
ARM 协处理器具有自己专用的寄存器组,它们的状态是由控制ARM 寄存器的指令的镜像指令来控制的。 由于控制流指令由ARM 负责处理,所以协处理器指令只与数据处理和数据传送有关。 按照RISC 的load/store 体系原则,这些指令类别是清楚区分的,指令的格式反映了这种情况。(www.xing528.com)
(3)协处理器数据操作
协处理器数据操作完全是协处理器内部的操作,它完成协处理器寄存器状态的改变。 一个例子是浮点加法,在浮点协处理器中两个寄存器相加,结果放在第三个寄存器。
(4)协处理器数据存取
协处理器数据传送指令从存储器读取数据装入协处理器寄存器,或将协处理器寄存器的数据存入存储器。 因为协处理器可以支持它自己的数据类型,所以每个寄存器传送的字数与协处理器有关。 ARM 产生存储器地址,但协处理器控制传送的字数。 协处理器可能执行一些类型转换作为传送的一部分。
(5)协处理器寄存器传送
除了以上情况,在ARM 和协处理器寄存器之间传送数据有时是有用的。 再以使用浮点协处理器为例,“FIX”指令从协处理器寄存器取得浮点数据,将它转换为整数,并将整数传送到ARM 寄存器中。 经常需要用浮点比较产生的结果来影响控制流,因此,比较的结果必须传送到ARM 的CPSR。 这些指令合起来即可支持ARM 指令集的扩展,以支持专用的数据类型和功能。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。