コンピュータアーキテクチャの話 (345) Kepler GPUの構成
図3-36に話を戻すと、Kepler GPUでは、4つのワープスケジューラで最大1サイクルに8命令を発行できるという構成になっている。その下には全体では、32bit語のエントリを65,536個持つレジスタファイルがあり、ディスパッチャからの命令とレジスタファイルからのオペランドを演算器群に送って演算を行う。
図3-36では、Coreと書かれた単精度の演算器が16個縦方向に並んでおり、2列32個の演算器のグループが1つのワープを処理する。
コアと書かれた緑の小さな箱は32bit単精度の浮動小数点の積和演算と整数の演算を行うユニットである。このユニットは32bit整数の演算や論理演算も担当する。少し大きいオレンジのDP Unitは64bit倍精度浮動小数点の積和演算を行うユニットである。
SFUはSpecial Function Unitで、グラフィックスの計算で良く出てくる三角関数や逆数、平方根の逆数、Log、10のべき乗などの、超越関数を計算するユニットである。なお、超越関数とは、多項式で表現できない関数を意味するが、実際にはSFUは区間分割して多項式でこれらの関数を近似計算している。
近似といっても32bitの単精度浮動小数点数の範囲では、誤差が大きいケースでも最下位ビットで数ビット程度の誤差であり、通常は問題にならない程度の誤差である。
Ld/Stユニットはロード/ストアユニットで、ロードストア命令を処理するユニットである。
GK110チップでは、図3-36のように、SMあたり、単精度の演算器は6命令分、倍精度の演算器は2命令分、SFUとLd/Stユニットは(4サイクル実行であるので)2命令分存在し、発行される命令にダイナミックに割り当てられる構造になっている。このため、レジスタフィルと実行ユニットの間の接続を切り替えるクロスバが必要になるが、命令ディスパッチャごとにすべてのタイプの演算ユニットを置く構造に比べて無駄が少ない。
単精度の浮動小数点演算器は6命令分存在する。これらの演算器をフルに動かすには6命令/サイクルの命令発行バンド幅があればよい。そして、ロード/ストアユニットとSFUはそれぞれ16個であるが、前に書いたように、4サイクルでの実行であるのでそれぞれが4命令を並行して処理できるのであるが、これも各1命令/サイクルの命令発行バンド幅があれば良い。つまり、4つのワープスケジューラで毎サイクル8命令を発行できれば、192個の単精度演算器と32個のロード/ストアユニット、32個のSFUに、切れ目なく、命令を供給し続けることができる。
64bit倍精度の演算を行うDP Unitは、特別である。64bitのオペランドを必要とするのであるが、レジスタファイルのポートは32bit幅しかない。このため、レジスタ0と1というように2つの連続したレジスタをまとめて64bitの値を記憶している。倍精度演算ユニットは、各オペランドに2つのレジスタポートを使って、レジスタ0と1のようなペアのレジスタを読み出し、書き込みを行っていると思われる。このようにレジスタポートを2倍使ってしまうので、倍精度演算命令は2つのディスパッチャを使って他の命令と一緒に発行することができない構造になっている。
レジスタファイルのポートグループの数は、単精度演算ユニットとLd/Stユニット、SFUの数と同じ16ポートと考えられ、SM全体でエントリ数が65,536ということは4096エントリ×32bitのアレイが16個で構成されているのであろう。ただし、このアレイは積和演算を考えると、3つのリードポートと1つのライトポートを必要とし、単純なシングルポートのSRAMアレイではない。
関連リンク
-
new
「熱があるから子守り無理」夫の身勝手な言葉で親友の結婚式が消えた日
-
new
真田ナオキ 浅草公演が大盛況! 公演の一部をYouTube限定公開中&10/29生配信決定!12月には、歌謡ポップスチャンネルでテレビ初放送も!
-
new
「公的な場でぶっ殺せる」ショートスリーパー堀大輔氏 高須幹弥氏への発言が波紋…父・克弥氏も「容赦しない」とブチ切れ参戦で泥沼展開へ
-
new
《実刑の可能性も》元ジャンポケ斉藤 判決3週間前にYouTube開設の苦しい懐事情…借金は億単位の噂も
-
new
「こんなママで大丈夫?」息子の前で陰口を叩く義母。息子「おばあちゃんは…」⇒静まり返る食卓に響いた“まさかの暴露”に、義母が言葉を失ったワケ