GPU开普勒CC3.0处理器不仅是流水线架构,还是超标量?
Are GPU Kepler CC3.0 processors not only pipelined architecture, but also superscalar?
在 CUDA 6.5 的文档中写道:http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#ixzz3PIXMTktb
5.2.3. Multiprocessor Level
...
- 8L for devices of compute capability 3.x since a multiprocessor issues
a pair of instructions per warp over one clock cycle for four warps at
a time, as mentioned in Compute Capability 3.x.
这是否意味着GPU Kepler CC3.0处理器不仅是流水线架构,而且是超标量的?
流水线 - 这两个序列并行执行(一次执行不同的操作):
- 加载 [addr1] -> 添加 -> 存储 [addr1] -> NOP
- NOP -> 加载 [addr2] -> 添加 -> 存储 [addr2]
超标量 - 这两个序列并行执行(一次执行相同的操作):
- 加载 [reg1] -> 添加 -> 存储 [reg1]
- 加载 [reg2] -> 添加 -> 存储 [reg2]
是的,Kepler 中的 warp 调度器可以每个时钟调度两条指令,只要:
- 指令是独立的
- 指令来自同一个warp
- SM 中有足够的执行资源用于两条指令
如果这符合您对超标量的定义,那么它就是超标量。
关于流水线,我对流水线有不同的看法。 Kepler SM 中的各种执行单元都是流水线化的。以浮点数乘法为例
在给定的时钟中,Kepler warp 调度程序可以在浮点单元上调度浮点乘法运算。此操作的结果可能不会在稍后的一些时钟出现,(即它们在下一个时钟周期不可用)但在下一个时钟周期,new 浮点运算可以被调度在完全相同的浮点功能单元上,因为硬件(在本例中为浮点单元)是流水线。
clock operation pipeline stage result
0 MPY1 -> PS1
1 PS2
... ...
N-1 PSN -> result1
时钟0后的下一个时钟,可以在同一个HW上调度新的乘法指令,对应的结果会在result1
出现后的下一个周期出现。
不确定这是否是您的意思"different operations at one time"
在 CUDA 6.5 的文档中写道:http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#ixzz3PIXMTktb
5.2.3. Multiprocessor Level
...
- 8L for devices of compute capability 3.x since a multiprocessor issues a pair of instructions per warp over one clock cycle for four warps at a time, as mentioned in Compute Capability 3.x.
这是否意味着GPU Kepler CC3.0处理器不仅是流水线架构,而且是超标量的?
流水线 - 这两个序列并行执行(一次执行不同的操作):
- 加载 [addr1] -> 添加 -> 存储 [addr1] -> NOP
- NOP -> 加载 [addr2] -> 添加 -> 存储 [addr2]
超标量 - 这两个序列并行执行(一次执行相同的操作):
- 加载 [reg1] -> 添加 -> 存储 [reg1]
- 加载 [reg2] -> 添加 -> 存储 [reg2]
是的,Kepler 中的 warp 调度器可以每个时钟调度两条指令,只要:
- 指令是独立的
- 指令来自同一个warp
- SM 中有足够的执行资源用于两条指令
如果这符合您对超标量的定义,那么它就是超标量。
关于流水线,我对流水线有不同的看法。 Kepler SM 中的各种执行单元都是流水线化的。以浮点数乘法为例
在给定的时钟中,Kepler warp 调度程序可以在浮点单元上调度浮点乘法运算。此操作的结果可能不会在稍后的一些时钟出现,(即它们在下一个时钟周期不可用)但在下一个时钟周期,new 浮点运算可以被调度在完全相同的浮点功能单元上,因为硬件(在本例中为浮点单元)是流水线。
clock operation pipeline stage result
0 MPY1 -> PS1
1 PS2
... ...
N-1 PSN -> result1
时钟0后的下一个时钟,可以在同一个HW上调度新的乘法指令,对应的结果会在result1
出现后的下一个周期出现。
不确定这是否是您的意思"different operations at one time"