7

我阅读了 NVIDIA Fermi 白皮书,并在计算 SP 内核、调度程序的数量时感到困惑。

根据白皮书,在每个 SM 中,有两个 warp 调度器和两个指令调度单元,允许同时发出和执行两个 warp。一个SM中有32个SP核,每个核都有一个全流水线的ALU和FPU,用于执行一个线程的指令

众所周知,一个warp是由32个线程组成的,如果我们每个周期只发出一个warp,这意味着这个warp中的所有线程将占用所有SP核心,并在一个周期内完成执行(假设没有任何停顿)。

然而,NVIDIA 设计了双调度器,它选择两个 warp,并从每个 warp 向一组十六个内核、十六个加载/存储单元或四个 SFU 发出一条指令。

英伟达表示,这种设计可以带来最高的硬件性能。也许最高的硬件性能来自于不同指令的交错执行,充分利用了硬件资源。

我的问题如下(假设没有内存停顿并且所有操作数都可用):

  1. 每个 warp 是否需要两个周期才能完成执行,并且所有 32 个 SP 内核都为每个 warp 调度程序分为两组?

  2. ld/st 和 SFU 单元由所有 warp 共享(对于双调度程序的 warp 来说看起来是统一的)?

  3. 如果一个经线分为两部分,首先安排哪一部分?有调度程序吗?或者只是随机选择一个部分来执行。

  4. 这种设计的优势是什么?只是最大限度地利用硬件?

4

1 回答 1

7

每个 warp 是否需要两个周期才能完成执行,并且所有 32 个 SP 内核都为每个 warp 调度程序分为两组?

是的。与后代不同,Fermi 有一个“热时钟”(着色器时钟),其运行速度是“核心”时钟的 2 倍。每个单精度浮点指令(例如)发出超过 2 个“热时钟”,但发送到同一组 16 个 SP 内核。最终效果是每个调度程序每个“核心”时钟一个问题。

ld/st 和 SFU 单元由所有 warp 共享(对于双调度程序的 warp 来说看起来是统一的)?

不是很明白这个问题。 所有执行资源都是共享的/可用于来自任一调度程序的指令。

如果一个经线分为两部分,首先安排哪一部分?有调度程序吗?或者只是随机选择一个部分来执行。

为什么这很重要?机器的行为就像在一个核心时钟中安排了两个完整的扭曲指令,即“双重发布”。无论如何,您无法看到热时钟级别发生的任何事情。

这种设计的优势是什么?只是最大限度地利用硬件?

是的,正如 fermi 白皮书中所述:

" 使用这种优雅的双问题模型,Fermi 实现了接近峰值的硬件性能。"

于 2016-05-04T23:52:37.537 回答