读GPU相关

操作数和操作符是如何在这个流水线中传递的呢?

六层流水线:取指,译码,发射,操作数传送,执行,回写

涉及的硬件单元:

前端:

  1. I-fetch:
  2. Instr-cache:
  3. Dcode:
  4. SIMT-stack: 管理控制流指令,管理PC
  • SIMT中使用SIMT mask处理线程分支

线程分支会带来死锁,GPU用什么策略解决死锁问题?

为每一个thread提供PC指针

schedule optimizer决定哪些线程可以在一个warp内解决

  • 线程分支回带来死锁问题,SIMT如何解决?
  1. scoreboard: 跟踪寄存器状态:是否被写入, 解析线程的独立性
  2. Instr-buffer:
  3. Odd warps scheuler:
  4. Even warps scheduler:

后端:

  1. 操作数块:
  • arbiter:

  1. Memory块:

  1. 执行块:SM
  2. 回写

分别从operand和operator的角度解释六层流水线模型:

Operand:

Register bank/data cache/shared memory/global memory -> arbiter -> crossbar -> operand collector -> dispatch unit -> 执行阶段的memory单元和执行单元 -> register bank/data cache/ shared memory/global memory

Operator:

I-fetch块 -> I-cache -> decoder -> I-buffer -> warp scheduler -> dispatch unit -> SM

全部评论

相关推荐

评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客企业服务