内部概述
[本文档仅供预览,并可能在以后的版本中更改。 Blank topics are included as placeholders.]
Microsoft 专用
3DNow! 技术提供 26 个附加阐明支持高性能三维图形和音频处理。 3DNow! 命令是对 64 位寄存器的向量命令。 3DNow! 命令是 SIMD;每个命令运行对 32 位值。 请参见3DNow!引用文档的内在 AMD 内部。
向量命令在两个运行并行安装 32 位单精度浮点,单词。 标量命令对一组 32 位操作数 (从两个 64 位操作数的低一半)。
3DNow! 单精度浮点格式,与单精度 IEEE 754 格式兼容。 此格式包括符号 1 位、 8 位偏重的指数和总共 24 位与一个隐藏的整数位的 23 位 significand 在 significand。 指数那样偏重为 127,符合单精度 IEEE 条件。 规范化 significands 在范围内 [1,2)。
与指定四个舍入模式的 IEEE 标准不同, 3DNow! 支持一个舍入模式,如圆到最近或设置为零 (截断)。 3DNow 的硬件实现! 方法确定该轮的模式。 AMD 处理器实现将对最新的模式。 无论使用哪种该舍入模式,则浮动指向整数和整数为浮动点转换命令, PF2ID,并 PI2FD,始终使用设置为零 (截断) 模式。
在大小的最大中可用的规则编号在十六进制的此精度的具有指数和 7FFFFFh significand,一个数值的 2127 (2 – 2-23)。 所有结果在最大可以可用的正值上的溢出该到此最大可以可用的规则数字或为正无穷大。 同样,所有结果在最小中可用的负值下的溢出该此最小可以可用的规则或数字为负无穷大。
实现 3DNow! 方法确定算术溢出的处理方式,为适当签名的最大或最小可以可用的规则数字或适当签名的无限制。 处理器生成适当签名的最大或最小可以可用的规则编号。
无穷大和 NANs 不支持为 3DNow 的操作数! 命令。
在大小的最小可以可用的规则编号在十六进制的此精度的具有 01h 指数和 000000h significand,一个数值的 2-126。 因此,在最小可以可用的值下的所有结果的尺寸被保留为零。 下表显示该 3DNow 支持的指数范围! 技术。
3DNow!技术指数范围
偏重的指数 |
说明 |
---|---|
FFh |
不支持。 不支持的数字可以使用作为操作数。 操作的结果与不支持数字的是未定义的。 |
00h |
零。 |
00hAMP_LTxAMP_LTFFh |
正常。 |
01h |
2 (1-127) 最低的指数。 |
FEh |
2 (254-127) 最大的指数。 |
与 MMX 指令, 3DNow! 命令不生成数字异常也不设置任何标志状态。 是用户将负责确保范围数据提供给 3DNow! 命令与所有计算在活动范围内保持 (或保存按预期)。
所有 3DNow 注册操作! 浮点命令以注册 x 单元或注册 Y 单元执行。 一个操作可以发送到在每个时钟周期的每个注册单元最大数量问题和两个 3DNow 的执行速度的! 操作每个循环。
通常,在高性能 3DNow! 代码,所有 3DNow! 命令正确计划除了彼此外部避免执行资源争用导致的延迟 (以及考虑依赖项和执行延迟)。
有关在该 AMD-K6 处理器的代码优化的详细信息,请参见 AMD-K6 处理器代码优化应用备注,订单数字 21924。 本文档提供有关代码该处理器的优化技术的深入讨论。
执行有关 AMD Athlon 处理器的资源信息,请参见 AMD Athlon x86 处理器代码优化准则,订单数字 22007。
3DNow! 性能 AMD 处理器的改进命令在下表中总结。
AMD 3DNow!浮点命令
操作 |
功能 |
该操作码 |
---|---|---|
PAVGUSB |
打包的 8 位无符号整数求平均值 |
BFh |
PFADD |
打包的浮点添加 |
9Eh |
PFSUB |
打包的浮点减法 |
9Ah |
PFSUBR |
打包的浮点反向减法 |
啊 |
PFACC |
打包的浮点累积 |
Aeh |
PFCMPGE |
打包的浮点比较,大于或等于 |
90h |
PFCMPGT |
打包的浮点比较,更大 |
A0h |
PFCMPEQ |
打包的浮点比较,等于 |
B0h |
PFMIN |
打包的浮点最小值 |
94h |
PFMAX |
打包的浮点最大值 |
A4h |
PI2FD |
使用浮点转换的打包的 32 位整数 |
0Dh |
PF2ID |
打包的浮点为 32 位整数 |
1Dh |
PFRCP |
打包的浮点相互近似 |
96h |
PFRSQRT |
打包的浮点相互平方根近似 |
97h |
PFMUL |
打包的浮点乘法 |
B4h |
PFR CPIT1 |
打包的浮点相互第一个迭代步骤 |
A6h |
PFRSQIT1 |
打包的浮点相互平方根第一个迭代步骤 |
A7h |
PFR CPIT2 |
打包的浮点相互/相互平方根第二个迭代步骤 |
B6h |
PMULHRW |
打包的 16 位整数而与舍入 |
B7h |
AMD 3DNow!性能改进命令
操作 |
功能 |
该操作码第二个字节 |
---|---|---|
FEMMS |
更快的项/退出该 MMX 或浮点状态。 |
0Eh |
PREFETCH/PREFETCHW |
|
0Dh |
AMD Athlon 处理器 3DNow!技术 DSP 扩展
操作 |
功能 |
该操作码/imm8 |
---|---|---|
PF2IW |
打包的浮点为整数使用符号的字符串转换扩展 |
0Fh 0Fh/1Ch |
PFNACC |
打包的浮点负的累计 |
0Fh 0Fh/8Ah |
PFPNACC |
打包的浮点杂项正负累积 |
0Fh 0Fh/8Eh |
PI2FW |
使用浮点转换的打包的整数。 |
0Fh 0Fh/0Ch |
PSWAPD |
打包请交换双字 |
0Fh 0Fh/BBh |
从开始 AMD Athlon 处理器的 MMX 指令设置的扩展
操作 |
功能 |
该操作码/imm8 |
---|---|---|
MASKMOVQ |
流 (缓存使用字节掩码跳过) 存储 |
0Fh F7h |
MOVNTQ |
流 (缓存跳过) 存储 |
0Fh E7h |
PAVGB |
打包的平均无符号字节 |
0Fh E0h |
PAVGW |
打包的平均无符号。 |
0Fh E3h |
PEXTRW |
提取运行到整数寄存器 |
0Fh C5 h |
PINSRW |
从整数寄存器的单词插入 |
0Fh C4 h |
PMAXSW |
打包的最大值签名的字符串 |
0Fh Eeh |
PMAXUB |
打包的最大无符号字节 |
0Fh Deh |
PMINSW |
打包的最小签名的字符串 |
0Fh Eah |
PMINUB |
打包的最小的无符号字节 |
0Fh Dah |
PMOVMSKB |
移动字节掩码到整数寄存器 |
0Fh D7h |
PMULHUW |
打包 multiply 高无符号。 |
0Fh E4h |
PREFETCHNTA |
离使用 NTA 的该处理器的环境的移动数据引用 |
0Fh 18h 0* |
PREFET CHT0 |
移动离使用 T0 的该处理器的环境的数据引用 |
0Fh 18h 1* |
PREFET CHT1 |
离使用 T1 的该处理器的环境的移动数据引用 |
0Fh 18h 2* |
PREFET CHT2 |
离使用 T2 的该处理器的环境的移动数据引用 |
0Fh 18h 3* |
PSADBW |
绝对字节差异的打包的总和 |
0Fh F6h |
PSHUFW |
打包的拖曳。 |
0Fh 70h |
SFENCE |
存储范围 |
0Fh AEh/7h |
在操作码后的 *The 数字在 modR/M 字节指示不同的预提取模式。
有关在该 AMD-K6-2 处理器的代码优化的详细信息,请参见 AMD-K6-2 处理器代码优化应用备注,订单数字 21924。 本文档提供有关代码 AMD-K6 处理器系列的优化技术的深入讨论。
执行有关 AMD Athlon 处理器的资源信息,请参见 AMD Athlon x86 处理器代码优化准则,订单数字 22007。 本文档提供有关代码 AMD Athlon 处理器的优化技术的深入讨论。
有关这些标识符的联机版本参见 https://go.microsoft.com/fwlink/?LinkID=95131 文档。