Intel Skylake架构:同一端口关联的多个执行单元能否同时工作?
Intel Skylake架构中端口关联执行单元的并行工作问题
一个端口关联的多个执行单元可以同时独立工作,端口只是指令调度分发的通路,其下的不同执行单元是物理上分离的硬件资源,只要指令类型匹配对应单元、且没有数据依赖/寄存器冲突等问题,就能并行执行。
针对你举的例子:从port0发起整数向量乘法指令(如
VPMULUDQ),它会占用port0的向量ALU单元,指令延迟为5周期。在下一周期,完全可以在这条向量指令完成前,通过port0向通用ALU单元发起另一条指令(比如普通整数加减、逻辑运算)——这两个单元属于port0下的独立硬件,互相不占用资源,只要指令符合调度规则就能并行发射。关于ALU与FMA单元的并行情况:
- Skylake的port0和port1都同时配备了通用ALU单元和FMA(融合乘加)单元。这两个单元彼此独立,所以同一周期内,单个端口(比如port0)可以同时分发一条FMA指令到FMA单元、一条整数指令到ALU单元,实现并行执行。
- 需要区分延迟和吞吐量:比如FMA单元的延迟为5周期,但吞吐量是每周期1条——也就是说,在第一条FMA指令执行的过程中,后续周期只要没有数据依赖,依然可以继续向该FMA单元发射新的FMA指令,不需要等前一条完成;而ALU单元和FMA单元之间则完全不受彼此执行进度的影响,只要端口调度允许就能并行工作。
内容的提问来源于stack exchange,提问作者Frontier_Setter
相关产品推荐
相关产品推荐

