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

Ale*_*lex 4 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的设备,因为多处理器在一个时钟周期内每次发生一对指令,一次四个经线,如Compute Capability 3.x中所述.

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

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

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

    • LOAD [reg1] - > ADD - > STORE [reg1]
    • LOAD [reg2] - > ADD - > STORE [reg2]

Rob*_*lla 10

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

  1. 说明是独立的
  2. 指令来自同一个经线
  3. 对于两个指令,SM中都有足够的执行资源

如果这符合你对超标量的定义,那么它就是超标量.

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

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

clock    operation    pipeline stage   result
0           MPY1   ->   PS1
1                       PS2
...                     ...
N-1                     PSN         ->  result1
Run Code Online (Sandbox Code Playgroud)

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

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

  • 是的,kepler可以拥有飞行中的指令,这些指令位于同一管道/单元的不同阶段,以及不同的管道/单元.可以在同一时钟中向不同的流水线/单元启动两条指令.可以在后续时钟上将两条指令发送到同一管道/单元. (5认同)