Mat*_*lia 23
MM寄存器是MMX指令集使用的寄存器,是首次尝试将(仅整数)SIMD添加到x86的尝试之一.它们是64位宽,它们实际上是x87寄存器的尾数部分的别名(但它们不受堆栈位置的FPU顶部的影响); 这样做是为了保持与现有操作系统的兼容性(已经在上下文切换中保存了FPU堆栈),但是使用MMX和浮点作为一项非常重要的工作.
如今它们只是一个历史性的奇怪,我认为任何人都不再使用MMX,因为它已被各种SSE扩展完全取代.编辑:正如Peter Cordes在评论中指出的那样,仍有相当多的MMX代码.
相反,XMM寄存器是一个完全独立的寄存器集,与SSE一起引入,至今仍广泛使用.它们是128位宽,具有可以将它们视为64,32(整数和浮点),16或8位(仅整数)值的数组的指令.你有8个在32位模式下,16个在64位模式下.事实上,所有浮点数学都是在64位模式下在SSE(以及XMM寄存器)中完成的,因此,与MMX寄存器不同,它们仍然非常相关.
如今你也可能会遇到YMM和ZMM寄存器; 将它们与AVX(2011)和AVX-512(2015)的指令集分别引入,并且它们展开XMM寄存器,没有什么不同的e和r扩展的通用寄存器(rax扩展eax该扩展ax可以作为被访问ah:al).
在支持AVX的处理器中,XMM寄存器文件中的每个寄存器都扩展为256位.整个256位寄存器称为YMMx(x从0到15),可以由新的AVX指令使用,下半部分是XMMx,旧的SSE指令仍然可以使用.
同样,AVX-512将上面的寄存器扩展到512位; 整个寄存器是ZMMx(可用于AVX-512指令),低256位是YMMx(也可用于AVX指令),低128位仍然是XMMx(也可用于SSE).此外,寄存器计数增加到32,因此这些寄存器更大,数量也是两倍.
| 归档时间: |
|
| 查看次数: |
8091 次 |
| 最近记录: |