我想问一些关于 OpenCL 编程的问题。我知道四分之一的波前可以为每个周期时钟发出指令,并且需要四个周期时钟来调用波前。要完成 VLIW 架构中的指令,需要 8 个周期的时钟。因此,调用另一个波前是一种解决方案。如果我调用两个波前,那么它将是八个周期时钟。因此,在波前 A 被执行(4 个周期时钟)之后,波前 B 被执行(另一个 4 个周期时钟)。波前 B 执行完毕后(总周期时钟为 8),波前 A 将用另一条指令再次执行。
问题是:
如果每个处理单元的四个 ALU 已经用于执行另一条指令,ALU 如何执行另一条指令?
例如:在循环 1 中,工作项 0-15 开始执行指令“ADD”。每个处理单元中的第一个 ALU(SIMD/计算单元中总共 16 个 PE)计算“ADD”指令。
它发生在波前的第 2、3 和 4 周期(现在每个 PE 中有 4 个 ALU 忙于执行“ADD”指令)在第 5 周期,波前 2 的四分之一开始执行指令“SUBTRACT”。处理元件中的 ALU 如何计算指令,因为它们忙于从第一个波前计算“ADD”指令(请记住,在第一个周期中四分之一波前的指令“ADD”执行未完成,因为它需要 8 个周期时钟)?
更新:8个周期时钟意味着写入后读取的延迟