Cuda GPU开普勒CC3.0处理器不仅是流水线结构,还是超标量?

Cuda GPU开普勒CC3.0处理器不仅是流水线结构,还是超标量?,cuda,gpgpu,nvidia,gpu,kepler,Cuda,Gpgpu,Nvidia,Gpu,Kepler,CUDA 6.5的文档中写道: 5.2.3。多处理机级 8L适用于计算能力为3.x的设备,因为多处理器问题 一个时钟周期内每个扭曲的一对指令 计算能力3.x中提到的时间 这是否意味着GPU开普勒CC3.0处理器不仅是流水线结构,而且是超标量 管道-这两个序列并行执行(一次执行不同的操作): 加载[addr1]->ADD->STORE[addr1]->NOP NOP->加载[addr2]->添加->存储[addr2] 超标量-这两个序列并行执行(一次执行相同的操作): 加载[reg1]

CUDA 6.5的文档中写道:

5.2.3。多处理机级

  • 8L适用于计算能力为3.x的设备,因为多处理器问题 一个时钟周期内每个扭曲的一对指令 计算能力3.x中提到的时间
这是否意味着GPU开普勒CC3.0处理器不仅是流水线结构,而且是超标量

  • 管道-这两个序列并行执行(一次执行不同的操作):

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

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

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

  • 说明是独立的
  • 这些指令来自同一个方向
  • SM中有足够的执行资源来执行这两条指令
  • 如果这符合你对超标量的定义,那么它就是超标量

    关于管道,我的看法不同。开普勒SM中的各种执行单元都是流水线的。让我们以浮点乘法为例。 在给定的时钟中,开普勒扭曲调度程序可以在浮点单元上调度浮点乘法操作。此操作的结果可能不会在以后的一些时钟上出现(即,它们在下一个时钟周期不可用),但在下一个时钟周期,可以在非常相同的浮点功能单元上调度新的浮点操作,因为硬件(在本例中为浮点单元)是流水线的

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


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

    谢谢!是的,我的意思是相同的管道,但您的描述更详细。也就是说,开普勒不仅可以在同一单元的不同阶段(FPU、IU、SFU…)-流水线中执行,而且可以在不同单元的相同阶段数中执行(并行:FPU上的第一阶段和SFU上的瞬时第一阶段),这是真的吗?是的,开普勒可以在同一管道/单元的不同阶段中执行飞行指令,以及在不同的管道/装置上。两条指令可以在同一个时钟中发送到不同的管道/单元。两条指令可以在后续时钟上启动到同一管道/单元中。
    clock    operation    pipeline stage   result
    0           MPY1   ->   PS1
    1                       PS2
    ...                     ...
    N-1                     PSN         ->  result1