首页 百科知识 浮点指令寄存器

浮点指令寄存器

时间:2023-10-17 百科知识 版权反馈
【摘要】:SSE技术中的50条SIMD浮点指令是SSE指令系统的主要指令,也是PentiumⅢ、Pentium4处理器性能提高的关键。PentiumⅢ增加了8个128位浮点寄存器,用于与SSE浮点指令相配合。某个异常位为1表示发生相应的浮点数值错。另外,紧缩浮点数有两种存取方式:128位方式用于128位的存储器操作数存取,SIMD浮点数据寄存器间128位数据传送、逻辑、解缩、算术运算等,它是将128位作为4个独立单精度浮点数都参与操作得到结果。

2.9.1 SIMD浮点指令寄存器

SSE技术中的50条SIMD浮点指令是SSE指令系统的主要指令,也是PentiumⅢ、Pentium4处理器性能提高的关键。PentiumⅢ增加了8个128位浮点寄存器,用于与SSE浮点指令相配合。

SSE技术支持的主要数据类型是紧缩单精度浮点操作数,它将4个相互独立的32位单精度浮点数组合在一个128位的数据中。128位数据最低位是D0,最高位为D127,分成16个字节,按照“低对低,高对高”的对端方式存放在主存中。设字节0(D7~D0)在主存1000H,则字节15(D127~D96)的主存地址为100FH,每连续4个字节表示一个单精度数据。

SSE技术还提供了一个新的32位控制/状态寄存器MXCSR,如图2.25所示。它用于屏蔽/允许数字异常处理程序,设置舍入类型,选择刷新至0方式,观察状态标志等,复位后寄存器的内容为1F80H。

图2.25 浮点SIMD控制状态寄存器MXCSR

(1)异常标志位

MXCSR中的D5~D0是6个反映是否产生SIMD浮点无效数值异常的状态标志,与80X87的状态含义相同,分别是精度错误PE、下溢错误UE、上溢错误OE、被0除错误ZE、非格式化错误DE和非法操作错误IE。某个异常位为1表示发生相应的浮点数值错。

(2)异常控制标志

MXCSR中的D12~D6是6个对应SIMD浮点数值异常的屏蔽控制标志。作用与80X87浮点异常一样,分别是精度异常屏蔽PM、下溢异常屏蔽UM、上溢异常屏蔽OM、被0除异常屏蔽ZM、非规格化异常屏蔽DM和非法操作异常屏蔽IM。异常屏蔽位为1,则相应异常被屏蔽,复位后所有异常屏蔽位=1,屏蔽所有的异常。

(3)舍入控制标志RC

MXCSR的D14、D13是舍入控制位,控制SIMD浮点数据操作的舍入原则。同80X87一样,SSE技术也具有最近舍入、向下舍入、向上舍入和截断舍入这四种类型。复位后,RC=00采用最近舍入类型。

(4)刷新至0标志FZ

刷新至0标志FZ=1将允许刷新至0方式,复位后FZ=0关闭刷新至0方式。MXCSR的其他位保留,并被清0。对这些位写入非0值将发生一般保护性异常。

(5)SIMD数据类型

xmm:SIMD浮点数据寄存器(XMM0~XMM7)

m128:128位存储器操作数单元

mm:整数MMX寄存器(MM0~MM7)

m64:64位存储器操作数单元

m32:32位存储器操作数单元

r32:通用32位整数寄存器

i8:8位立即数

另外,紧缩浮点数有两种存取方式:128位方式用于128位的存储器操作数存取,SIMD浮点数据寄存器间128位数据传送、逻辑、解缩、算术运算等,它是将128位作为4个独立单精度浮点数都参与操作得到结果。32位方式用于32位的存储器操作数存取,SIMD寄存器间32位数据传送和算术运算,它是将128位中最低一个单精度数参与操作得到结果,其他高位的3个单精度数不变,这种数据称为标量单精度浮点数据。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈