GPU Kepler CC3.0处理器不仅是流水线架构,还是超标量?

时间:2015-01-19 19:51:06

标签: cuda gpgpu nvidia gpu-programming kepler

在CUDA 6.5的文档中写道:http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#ixzz3PIXMTktb

  

5.2.3。多处理器级别

     

...

     
      
  • 8L用于计算能力3.x的设备,因为多处理器问题   在一个时钟周期内每次扭曲的指令对进行四次扭曲   如计算能力3.x中提到的那样。
  •   

这是否意味着GPU Kepler CC3.0处理器不仅是流水线架构,还是超标量?

  1. 流水线操作 - 这两个序列并行执行(一次执行不同的操作):

    • LOAD [addr1] - > ADD - >商店[addr1] - > NOP
    • NOP - > LOAD [addr2] - > ADD - > STORE [addr2]
  2. 超标量 - 这两个序列并行执行(一次执行相同的操作):

    • LOAD [reg1] - > ADD - >商店[reg1]
    • LOAD [reg2] - > ADD - >商店[reg2]

1 个答案:

答案 0 :(得分:9)

是的,Kepler中的warp调度程序可以为每个时钟安排两条指令,只要:

  1. 说明是独立的
  2. 指令来自同一个warp
  3. SM中有足够的执行资源用于指令
  4. 如果这符合你对超标量的定义,那么它就是超标量。

    关于流水线技术,我以不同方式查看流水线操作。 Kepler SM中的各种执行单元都是流水线的。我们以浮点乘法为例。

    在给定时钟中,Kepler warp调度器可以在浮点单元上调度浮点乘法运算。此操作的结果可能在以后的某些时钟中不会出现(即它们在下一个时钟周期不可用),但在下一个时钟周期,可以安排 new 浮点运算< em>在相同的浮点功能单元上,因为硬件(在这种情况下为浮点单元)是流水线

    clock    operation    pipeline stage   result
    0           MPY1   ->   PS1
    1                       PS2
    ...                     ...
    N-1                     PSN         ->  result1
    

    在时钟0之后的下一个时钟,可以在同一个HW上调度新的乘法指令,相应的结果将在result1出现后的下一个周期出现。

    不确定这是否是“一次不同操作”的意思