处理器架构 (七) armv4v5v6 架构参考手册(3) VFP架构

VFP简介

  • 包括内容
VFP 编程模型
VFP 指令集
VFP 寻址模型
  • VFP 架构的定义
矢量浮点(VFP)体系结构是ARM®体系结构的协处理器扩展。
  • VFP架构 的作用
向量运算 // 在计算机学科中,向量代表一个有序的数表
  • VFP架构相关标准
VFP 基本 服从 IEEE754
VFP 不完全兼容 754,如果要完全兼容,需要软件库例程的扩充.
VFP不完全兼容 754 的原因
	在某些环境中,并非754中的每个操作都是必需的
  • VFP架构分层
硬件实现 和 支持代码 // 同级
硬件无法处理 trapped floating-point exceptions,所以这种情况干脆就产生一个异常.//(未定义的指令异常)
在异常处理函数中,调用 *支持代码* ,在该支持代码中,将现场传送给 应用程序软件,然后应用程序软件处理这个异常.

编程模型

  • VFP寄存器
	通用寄存器
		VFP有32个通用寄存器,每个寄存器都能保存一个单精度浮点数或一个32位整数。
			在该体系结构的D变体中,这些寄存器还可以成对使用,以容纳多达16个双精度浮点数。
	系统寄存器 // 还有三个或更多系统寄存器: // FPEXC寄存器和任何其他系统寄存器的剩余位是子架构定义的,通常用于VFP实现的硬件和软件组件之间的内部通信(见第C1-6页的硬件和软件实现)。
		FPSID是只读的。可以读取它来确定正在使用VFP体系结构的哪个实现。
		FPSCR提供所有用户级别的状态和控制。状态位保存比较结果和浮点异常的累积标志。提供控制位以选择舍入选项和向量长度/跨距,并启用浮点异常陷阱。
		FPEXC包含一些用于系统级状态和控制的位。
  • CP10与CP11寄存器 // 相当于 控制寄存器
VFP体系结构的设计完全符合ARM协处理器体系结构。
所有VFP指令都是ARM通用协处理器指令(CDP、LDC、MCR、MRC和STC)的特例,使用协处理器1011。
通常,协处理器10用于单精度指令,协处理器11用于双精度指令。
VFP被CP10和CP11中的寄存器控制
  • 指令集
	•将浮点值从内存加载到寄存器中,并将浮点值存储到内存中。
		其中一些指令允许传输多个寄存器值,提供与ARM LDM和STM指令等效的浮点值。
		除其他用途外,此类指令可用于加载和存储浮点值的短向量。

	•直接在VFP和ARM通用寄存器之间传输32位值。
	
	•直接在VFP系统寄存器和ARM通用寄存器之间传输32位值。
	
	•加、减、乘、除,取浮点寄存器值的平方根。
		这些指令既可用于短向量,也可用于单个浮点值。

	•在寄存器之间复制浮点值。
		在此过程中,符号位可以反转或清除(或保持不变),提供否定和绝对值指令以及简单的拷贝。所有这些指令也可用于短向量。
	
	•对浮点值和短向量执行乘法-累加组合操作,为乘法、求反、加法和减法的常见序列提供节省空间的等价物。
	
	•执行单精度值、双精度值、无符号32位整数和两个补符号32位整数之间的转换。
	
	•将寄存器中的浮点值相互比较或与零进行比较。

  • 异常
	VFP体系结构支持IEEE754标准中定义的所有五种浮点异常:
		• Invalid Operation
		• Division by Zero
		• Overflow
		• Underflow
		• Inexact

		VFPv2体系结构增加了对 输入非规范浮点异常 的支持,如浮点异常中所述。

配置:
	可以通过 在FPSCR中设置适当的控制位来选择 是否 跟踪该异常.
	如果跟踪,则硬件一顿操作,并且最后PC被设置为异常向量表中的地址.
	如果不跟踪,则硬件一顿其他操作,但是最后没有设置PC.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值