4

在 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. 流水线 - 这两个序列并行执行(一次不同的操作):

    • 加载 [addr1] -> 添加 -> 存储 [addr1] -> NOP
    • NOP -> 加载 [addr2] -> 添加 -> 存储 [addr2]
  2. 超标量 - 这两个序列并行执行(一次相同的操作):

    • 加载 [reg1] -> 添加 -> 存储 [reg1]
    • 加载 [reg2] -> 添加 -> 存储 [reg2]
4

1 回答 1

10

是的,Kepler 中的 warp 调度器可以每个时钟调度两条指令,只要:

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

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

关于流水线,我对流水线有不同的看法。Kepler SM 中的各种执行单元是流水线的。让我们以浮点乘法为例。

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

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

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

不确定这是否是您所说的“一次不同的操作”

于 2015-01-19T20:07:34.460 回答