英特尔的AVX512技术支持多个子寄存器的并行化,例如:每个512位向量寄存器中有8个64位FP子寄存器。那么,多个向量寄存器也可以并行运行?以下是并行化的符号示例吗?
parbegin;
ZMM0 (operation) ZMM1 -> ZMM2;
ZMM3 (operation) ZMM4 -> ZMM5;
...
ZMM27 (operation) ZMM28 -> ZMM29;
parend;
答案 0 :(得分:1)
根据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。
这更复杂,因为AVX512是SIMD 指令的扩展,并非所有处理器都支持它们。
我只能猜测(我强烈建议您重新解释您的问题或附上一个示例以进行详细分析)您的意思是,如果多个指令都可以在一个周期中发出?简短的回答,IMOP,它取决于具体的架构。
建议的读数是"英特尔64和IA32架构优化参考手册" 2即使它还没有包括市场上唯一的AVX512就绪微芯片 - Xeon Phi(代号Knights Landing)。至少它表明"吞吐量"与执行端口和特定指令的功能单元有关,见附录C-3。
至于你的迷你例子,因为它只使用寄存器操作数,很可能这些都可以在一个周期内发布。