首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ALU如何在AMD GPU (VLIW)中执行指令?

ALU如何在AMD GPU (VLIW)中执行指令?
EN

Stack Overflow用户
提问于 2013-12-27 02:10:17
回答 1查看 922关注 0票数 1

我想问一些关于OpenCL编程的问题。我知道四分之一的波前可以为每个周期时钟发出指令,它需要四个周期时钟来调用一个波前。要完成VLIW结构的指令,需要八个周期时钟。因此,调用另一个波前是一个解决方案。如果我调用两个波前,那么它将是八个周期时钟。因此,在执行波前A后(4个周期时钟),然后执行波前B(另一个四个周期时钟)。在执行波前B(总周期时钟为8)后,波前A将再次使用另一条指令执行。

问题是:

如果每个处理元素已经被用于执行另一条指令,那么如何执行另一条指令??

例如:在循环1中,工作项0-15开始执行指令"ADD“。每个处理单元中的第一个ALU ( SIMD /计算单元中总共16个PE )计算"ADD“指令。

它发生在周期2,3和4波前(现在在每个PE中有4个ALU忙于执行第5周期中的“添加”指令),四分之一的波前2开始执行指令“减法”。处理元素中的ALU如何计算指令,因为他们忙于计算第一个波前的"ADD“指令(还记得对第一个周期中四分之一波前的指令"ADD”的执行是未完成的,因为它需要8个周期时钟)?

更新:8周期时钟是指写入后的读取延迟。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-28 11:48:15

正如您已经说过的,处理一个波前需要4个时钟周期。该指令的结果被发送到寄存器,但是,由于读写延迟,这些结果只能在8个时钟周期后才可用。这里的重要区别是ALU在4个周期内完成了他们的工作,这样他们就可以继续处理其他指令。寄存器内存需要8个周期来完成它的工作,即存储新数据并使其再次可见。

对于所有类型的内存访问,包括寄存器:内存访问的处理方式与普通算术不同,all可以继续执行不依赖于内存访问结果的指令,同时等待内存访问完成。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20793813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档