怎样使用AVX指令集
的有关信息介绍如下:AVX的256bits SIMD扩展支持是其最具革新的设计部分,同时也代表了指令编码格式的变更。x86(IA-32/Intel 64)指令,在op code之前增加了一个字节的prefix,从而实现了扩展的支持。增强的寄存器也使指令头部分不断增加prefix成为了可能。SIMD指令也以SIMDprefix的身份出现,另外Intel 64也增加了8个寄存器从而实现了对于REXprefix的支持。
IA-32/Intel 64的另外一个优势就是对于prefix的扩展,不过也存在一些不足,比如prefix指令格式变得更加复杂,而指令也更长等。因此IA-32/Intel 64的指令如果要实现decoding将增加难度,而decoding的同时也将带来电力的消耗。实际上Core Microarchitecture(Core MA)所遇到的最大瓶颈,就是指令的puridekodo和fetch。而prefix的不断增加也使指令的结尾产生了新的问题。
AVX的指令编码系统的产生,同时也是SSE指令进化的必然。(IA-32/Intel 64)SIMD指令最初是3个字节,不过对于追加的数据类型在这基础之上,64-bit增加了8个1字节的Prefix寄存器,并且在命令头处增加了1字节。Intel的Bob Valentine先生(CPU Architect, Mobility Group)对此进行了说明。
AVX对于变更编码指令编码格式方面,也有了解决办法,其中增加了1个重叠字节的prefix就成为低效率的解决方案,而VEX(Vector Extension)的prefix以及1-2个字节的连续VEX的payload(Payload)系统,也成为相对完美的解决办法。
VEX编码的构想,就是压缩Prefix中包含的信息,在1个字节的payload中全部包括了prefix的内容。并且在今后导入的新的寄存器中,128bits或更长的256bits的数据,也将在payload中压缩。