CPU + GPU = FPUの刷新?
後藤弘茂のWeekly海外ニュース「GPU命令のx86体系への統合」「CPUとGPUの統合プロセッサのチャレンジ」を読んで、GPU命令をx86命令セットに取り込むことまで見据えているというのを見て、K8の頃からCPUの設計段階ではFPUを刷新する(新FPU+新命令体系を提供する)とプレゼンテーションの一番最後にちらっとだけ書かれているのに、いつの間にか消えるのを繰り返しているのを思い出しました。
K8の時は結局SSEを使ってくださいというところに落ち着いてしまって詰まらないな〜と思っていたのですが、この話はその流れも汲んでいるんじゃないかと感じました。
ユーザーの欲求としては「x86 CPUにも”まとも”なFPUがほしい」ということになるのですが、”まとも”ってどういうことなのかを以下に並べます。
現存するプロセッサだとPowerPCなんかでは実現されているような、今では垣根があいまいになってしまった旧来のワークステーション、サーバー向けプロセッサでは当たり前に実現されているものを、隣の芝生が青いのを羨むようにほしいと思っていたのでした。それらはSSEで多少ましになったものの、未だ実現されていません。
そこでこのGPU命令をx86の命令体系に取り込むという話なのですが、うまくいくと浮動小数点演算に関しては旧来のワークステーション、サーバー向けプロセッサの実装を追い越す可能性すらあります。単なるGPGPUとは明らかに次元が違う話です。
ただ、いまいちそういった観点からは歯切れがよくない話に聞こえるのはCPUに組み込むに当たってどこまでサポートするのかということの議論が終わっていないからなのでしょう。GPUは単精度演算でもIEEE754規格に対応するかしないかというのが現状で、倍精度演算はNvidiaが今年中から来年の対応予定で、AMD(ATI)は時期未定です。既存のCPU組み込みFPUは倍精度までのサポートは当たり前でSPARCは128bitの拡張精度に対応していたりします。GPUをCPU組み込みにする場合は既存のCPU組み込みFPUに対してどこまでキャッチアップするのかということと、GPUならではの特殊機能に対応する命令をどこまで露出させるかのバランスが問題になるのだと思います。
今度こそ、というかAMD64でx86を発展させたAMDに、FPUについてもx87の呪縛を断ち切ってくれることに期待したいです。