1. XOP 与 FMA4 指令简介
AMD 抢出推出 SSE5 指令集,但 Intel 打着如意算盘,却不跟进,推出了全新的 AVX 指令集。
AVX 借鉴了一些 SSE5 的思想,但进行了扩充改良。客观地说,AVX 比 SSE5 更优,但 SSE5 既然有 Intel 值得学习的地方,AMD 是知道的。
AMD 最终决定放弃 SSE5 指令集跟进 Intel,除发布兼容 AVX 指令集的 FMA4 指令外,另外推出一套 XOP 指令集。但是 AMD 的 FMA4 指令只是对 AVX 指令集有限支持。
XOP 指令集的产生是 AMD 也不愿 SSE5 被全盘推翻,保留了一些 SSE5 指令的优秀的地方。
FMA4 指令是 FMA 指令的 AMD 版本。
可以说 AMD 的 FMA4 与 Intel 的 AVX 指令(包括 Intel 的 FMA 指令)在编码方式上大同小义,差异很小。
即可说:FMA4 指令沿用 AVX 指令的编码方式,并进行一些修改与扩充。
AMD 的 FMA4 指令与 Intel 的 AVX 指令(包括 Intel 的 FMA 指令)区别就象是:AMD 的 SSE 指令与 Intel 的 SSE 指令之间的区别。
也就是说:Intel 的 AVX 中的 FMA 指令有的,AMD 的 FMA4 可能会有,可能不会有。而 AMD 有的,Intel 不会有。
可以说 XOP 指令集编码方案是基于 AVX 指令集的。只是有些修改。当然 XOP 指令集有自已的特点。
说白了,在 XOP 中称为 XOP prefix 而不是 VEX prefix,但并不是简单的名称不同,虽然编码方案一样,但内容差异很大。
XOP 与 AVX 之间的区别就像是: AMD 的 3Dnow 指令与 Intel 的 SSE 指令之间的区别。
XOP 是 AMD 自已推出的另一套指令。这是 Intel 目前不具备的。
而 Intel 的 AVX 指令 AMD 则进行了有限的支持。
mik 写于 2009-05-17 00:38