【发布时间】:2013-12-27 02:10:17
【问题描述】:
我想问一些关于 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个周期时钟意味着写后读的延迟
【问题讨论】:
-
对不起,8个周期时钟是指写后读的延迟。我已经阅读了维基百科并理解了这个概念,但是如果一条指令需要八个周期,如果每个处理元件中的所有 ALU 仍然执行来自第一个波前(周期 0-4)的指令,那么 ALU 如何执行来自第二个波前(周期 5-8)的指令8个周期时钟完成??