对于英特尔的AVX-512有32位(如此多!)512位寄存器向量,ZMM0到ZMM31?

时间:2016-11-04 18:09:07

标签: x86 avx512

英特尔的AVX512技术支持多个子寄存器的并行化,例如:每个512位向量寄存器中有8个64位FP子寄存器。那么,多个向量寄存器也可以并行运行?以下是并行化的符号示例吗?

parbegin;

 ZMM0 (operation) ZMM1 -> ZMM2;  

 ZMM3 (operation) ZMM4 -> ZMM5;  
 ...  
 ZMM27 (operation) ZMM28 -> ZMM29;    

parend;

1 个答案:

答案 0 :(得分:1)

1。 "每个512位向量寄存器中有8个64位FP子寄存器"

根据1

不正确
  

AVX-512指令支持512位宽SIMD寄存器(ZMM0-ZMM31)。 ZMM寄存器的低256位别名为相应的256位YMM寄存器,低128位的别名为相应的128位   XMM注册。

     

AVX-512指令还支持64位模式下的32个SIMD寄存器(XMM0-XMM31,YMM0-YMM31和ZMM0-ZMM31)。 32位模式下的可用向量寄存器数仍为8。

2。 May"多个向量寄存器并行运行"?

这更复杂,因为AVX512是SIMD 指令的扩展,并非所有处理器都支持它们。

我只能猜测(我强烈建议您重新解释您的问题或附上一个示例以进行详细分析)您的意思是,如果多个指令都可以在一个周期中发出?简短的回答,IMOP,它取决于具体的架构。

建议的读数是"英特尔64和IA32架构优化参考手册" 2即使它还没有包括市场上唯一的AVX512就绪微芯片 - Xeon Phi(代号Knights Landing)。至少它表明"吞吐量"与执行端口和特定指令的功能单元有关,见附录C-3。

至于你的迷你例子,因为它只使用寄存器操作数,很可能这些都可以在一个周期内发布。