
[英]How do nVIDIA CC 2.1 GPU warp schedulers issue 2 instructions at a time for a warp?
[英]Why there are two warp schedulers in a SM of GPU?
我讀了NVIDIA Fermi白皮書,當我計算SP核心,調度程序的數量時感到困惑。
根據白皮書,在每個SM中,有兩個warp調度器和兩個指令調度單元,允許兩個warp同時發出和執行。 SM中有32個SP內核,每個內核都有一個完全流水線的ALU和FPU,用於執行線程的指令
眾所周知,如果我們只是在每個周期發出一個warp,那么warp由32個線程組成,這意味着這個warp中的所有線程都將占用所有SP內核,並將在一個周期內完成執行(假設沒有任何停頓) )。
但是,NVIDIA設計了雙調度器,它選擇兩個warp,並從每個warp發出一條指令到一組16個內核,16個加載/存儲單元或4個SFU。
NVIDIA表示,這種設計可以帶來最高的硬件性能。 也許最高硬件性能來自交錯執行不同指令,充分利用硬件資源。
我的問題如下(假設沒有內存檔和所有操作數都可用):
每個warp是否需要兩個周期才能完成執行,並且每個warp調度程序將所有32個SP內核分成兩組?
ld / st和SFU單元是由所有warp共享的(對於來自雙調度程序的warp看起來是統一的)?
如果將經線分為兩部分,哪部分先安排好? 有沒有調度員? 或者只是隨機選擇一個部分來執行。
這種設計有什么優勢? 只是最大限度地利用硬件?
每個warp是否需要兩個周期才能完成執行,並且每個warp調度程序將所有32個SP內核分成兩組?
是。 與后代不同,費米有一個“時鍾” (着色時鍾),它的運行頻率是“核心”時鍾的2 倍 。 每個單精度浮點指令(例如)發出超過2個“hotclocks”,但是發布到同一組16個SP核心。 每個調度程序的每個“核心”時鍾的凈效應是一個問題。
ld / st和SFU單元是由所有warp共享的(對於來自雙調度程序的warp看起來是統一的)?
真的不明白這個問題。 所有執行資源都可用於來自任一調度程序的指令。
如果將經線分為兩部分,哪部分先安排好? 有沒有調度員? 或者只是隨機選擇一個部分來執行。
為什么這很重要? 該機器表現得好像在一個核心時鍾中安排了兩個完整的扭曲指令,即“雙重問題”。 無論如何,您無法看到在hotclock級別發生的任何事情。
這種設計有什么優勢? 只是最大限度地利用硬件?
是的,正如費米白皮書中所述:
“使用這種優雅的雙重問題模型,Fermi實現了接近峰值的硬件性能。”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.