2012-10-18 104 views
7

...在PTX manual中剛剛提到。沒有暗示他們有什麼好處或如何使用它們。PTX「bit bucket」寄存器

有誰知道更多?我只是錯過了一個共同的概念?

+2

如果我沒有弄錯(雖然我最有可能會糾正這個問題))寫入寄存器基本上是沒有操作的。 – Bart

+1

通常,當一個人對指令產生的寄存器結果不感興趣時​​,只是在指令的副作用中指定一個位桶作爲指令的目標寄存器。例如,對於各種微處理器,比較指令實際上是僞指令,其被實現爲具有被指定爲比特桶的目的地寄存器的減法指令,因爲人們僅對作爲旁路產生的標誌(條件代碼)感興趣,減法的效果。 harrism已經提供了以下專用於PTX的示例比特桶使用情況。 – njuffa

回答

8

巴特的評論基本上是正確的。更詳細地說,如PTX ISA 3.1 manual中所述,

對於某些指令,目標操作數是可選的。可以使用用下劃線(_)表示的「比特桶」操作數 來代替目的地寄存器。

實際上在3.1 PTX規範中列出的只有一類指令,其中_是有效目標:​​。下面是​​語義:

原子方式加載在位置的原始值到目的地寄存器d,執行與操作數B的降低的操作和在位置a的值,並存儲在位置指定操作的結果a,覆蓋原始值。

並且對於​​記:

簡單的減少可以通過使用「位桶」目的操作數「_」指定。

所以,我們可以構造一個例子:

atom.global.add.s32 _, [a], 4 

這將增加4到內存位置a有符號整數,並在寄存器不會返回位置a的前值。所以如果你不需要以前的值,你可以使用它。我認爲,既然atomicAdd的返回值不存儲到一個變量,編譯器會生成此此代碼

atomicAdd(&a, 4); 

+0

謝謝你擴展我的「一些沒有東西的東西」與一些實際的信息。很高興知道。 :) – Bart

+0

謝謝,這是有道理的。很高興知道該手冊的3.1版本已經出來。 – Dude