流式单指令多数据扩展(Streaming SIMD Extensions)技术详解
1. MXCSR 寄存器相关操作
应用程序可修改 MXCSR 的控制标志或状态位,以满足特定的 SIMD 浮点处理需求。但向保留位写入非零值会使处理器产生异常,且 MXCSR 的状态标志在错误发生后不会自动清除,需手动重置。可使用 ldmxcsr(加载 MXCSR 寄存器)或 fxrstor(恢复 x87 FPU、MMX、XMM 和 MXCSR 状态)指令修改 MXCSR 寄存器的控制标志和状态位。
当错误条件发生时,处理器会将 MXCSR 错误标志置为 1。将 MXCSR.DAZ 控制标志置为 1,在非正规值舍入为零可接受的算法中能提升性能;MXCSR.FZ 控制标志可用于加速常见浮点下溢的计算,但使用这两个控制标志选项会导致不符合 IEEE 754 浮点标准。
MXCSR 部分位字段说明如下表:
| 位 | 字段名称 | 描述 |
| — | — | — |
| RC | 舍入控制 | 指定 X86 - SSE 浮点结果的舍入方法,有效选项包括舍入到最近值 (00b)、向下舍入到 -∞ (01b)、向上舍入到 +∞ (10b) 以及向零舍入或截断 (11b)。 |
| FZ | 下溢归零 | 置为 1 时,若下溢异常被屏蔽且发生 X86 - SSE 浮点下溢错误,则强制结果为零。 |
2. X86 - SSE 处理技术
2.1 整数操作
x86 处理器使用多种技术处理 x86 - SSE 数据类型。涉及打包整数操作数的大多数 x86 - SSE SIMD 操作与 MMX 技术使用相同计算
超级会员免费看
订阅专栏 解锁全文
516

被折叠的 条评论
为什么被折叠?



