Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
[go: Go Back, main page]

Let's go Katmai
10/20 れっつごー カトマイ


 やっぱさぁ、インテルだよ。え?うーん。提灯記事?何とでも言ってくれ。とにかく揺るがない事実はひとつ。インテルは世界最大のCPUメーカーだし、彼らの決定は時代の決定であり、時代は常に勝者によって築かれるということさ。






真打は最後にやってくる




 インテルが満を持して市場に投入する(予定の)Katmaiは最適化でヒイヒイ言ってる僕らをさらにワクワクさせるシリコンバレー・コレクションの最先端モードだ!

 Katmaiというのはもちろん開発コードで、実際の製品名とは異なると思うけど、まぁみんながkatmaiって呼んでるから、カトマイって呼べばいいんじゃないだろうか。

 AMDの3D Now!の登場によって浮動小数点のSIMD処理(Single Instruction Multiple data stream)の重要性が注目されてきたわけだけど、3D Now!は所詮はMMXの拡張命令に過ぎず、しかも二つの単精度浮動小数点をパックで使うという(MMX並に)使いどころを見つけにくいテクノロジーだった。

 僕が以前、MMXに期待していたのはひとつのレジスタに三次元(ないし四次元)ベクトルをひとつのっけてしまって、加算とスカラー乗算くらいならレジスタレベルで可能にならないかということだった。

 しかし、高だか二つの浮動小数点しかパックできない3D Now!ではそれは適わぬ夢に過ぎなかったんだ。

 しかし、このインテルの最新鋭プロセッサ、katmaiでは、なんと僕の欲しかったレジスタそのものがCPUレジスタとして増設されている!

 MMXはFPUレジスタのエイリアスに過ぎなかったので、切り替えるのに時間がかかったり、併用するのが難しかったりした。

 だが、katmaiで増設されるレジスタはFPUレジスタとは独立しているので、もはやそんな心配はどこにも必要ない。そしてkatmaiは4つの単精度浮動小数点をパックして使うことができるのだ。

 これはすごいことだぜぇ!!!

 さすがのAMDも、いきなりレジスタを増設するわけにはいかない。なぜならそうすると一気にPentiumシリーズとの互換性がとれなくなるからだ。特に、WindowsのようなマルチタスクOSではレジスタの待避と復旧が必要であり、レジスタをいきなり増やすと、タスクが切り替わったときにレジスタの同一性がまるで保証されないことになる。

 しかしインテルがレジスタを増設すれば、Windows自体の改変も視野に入るわけだ。考え様によっては卑怯な手段ともとれるけど、ここは将来を見据えてレジスタを増設したインテルに拍手を送るべきだろう。そのことによって、僕らはよりエキサイティングなコードの最適化を体験することができるんだから、ね(笑)

 そのほかにもkatmaiでは(3D Now!にもあるけど)新しくプリフェッチ命令などが追加されて、キャッシュを明示的にコントロールできるようになった。キャッシュの明示管理はすごく重要で、これからもっと注目される技術のひとつだと思う。

 キャッシュの重要性は、基本的にはCPUと同一クロックで動作するメモリであること、つまり高速であることがある。基本的にはレジスタよりやや遅いという程度でデータが拾えるし、それはパイプラインストールをおこしがちなRISC型プロセッサにとっては凄く重要なポイントだ。

 たとえば32KBあるL1キャッシュをどう使うかというのは、今まではプログラマの勘に頼る部分が大きかった。ソースコードレベルでは当てずっぽうにキャッシュに載るかどうかを考え、V-TUNEなどの高度なオプティマイズ・ツールを使って調査するしか方法がなかったのだ。

 プリフェッチ命令を使えばキャッシュの制御を確実にできる。なにがキャッシュに載っているのかが明確になり、最適化がしやすくなる。それまでの「気休め」程度の最適化ではなくなるのだ。

 リードオンリーのレジスタとしてキャッシュ上のデータを活用するようにすれば、最適化の手法はまるで違ったものになる。キャッシュ上のデータは読み込みだけに使う限りは超高速のメモリなのだ。読み込みにしか使わないレジスタなどは捨てて、積極的にメモリへの直接アドレッシングを行う方が、場合によっては効率的なわけである。

 このようなタイプの命令はSH-4にもあるので、この種の命令を使った最適化はようやく一般化したとも言える。どんなに優れた命令であっても、インテルのチップにない命令はマイノリティなのだ。




アドバンスド・マイクロ・デバイセズ



 対するA.M.D.はK7という新しいプロセッサを投入する動きだ。これはベースクロック200MHzで動作するというアグレッシブなチップで、それまでインテルより「二歩遅れた」戦術をとっていたA.M.D.が、インテルより先行するかたちで技術革新をしていくという意気込みさえ感じられる。

 K7についてはまだ資料が殆ど無いのでコメントするのは難しいけど、CPU戦争ふたたび、という様子になってくると面白いかもしれない。でも、独自拡張の嵐になってしまうのは誰もが避けたいことだと思うし、ギリギリの制約のなかで思う存分暴れて欲しいと勝手に思ったり。

 市販メーカー製マシンでもK6が積極的に採用されたり、市場もいい動きを見せ始めてきたなぁ、と思う。今日このごろ。

 また最適化に明け暮れる日々を送ってみたいです。マル。