2008年04月29日

インテルの新しいCPU命令セット

インテルやAMDなど、x86系CPUの命令は、
可変長のバイナリデータで表現されています。
例えば、EAXというレジスタ(CPU内の変数)を操作する
基本的な命令だけでも、

0x40: EAXを1増やす
0x01 0xc8: EAXにECXを足す
0x08 0x78 0x56 0x34 0x12: EAXに0x12345678を代入する

など、命令によって長さはバラバラです。

さらに、あまり使わない命令には
0x3eなどをつけて区別しましょうとか、
最初に0x0fをつけて新しい命令を区別しましょうとか、
そういう「命令を区別するための1バイトのコード」によって、
命令コードはかなり複雑になってしまっています。
この、1バイトのコードはプリフィックスと呼ばれています。

複雑な可変長コードは、たぶん、昔メモリが足りなかった頃に、
なるべくバイナリコードが短くなるように工夫した結果なのでしょう。
当時はそれで良かったのでしょうけど。

最近のCPUだと、プリフィックスが大量についたために
命令の解析がとても大変になっているみたいです。
コンピュータに実行してもらう命令を解析する部分が、
クロックとか消費電力のボトルネックになっちゃうわけです。

インテルは64ビットCPUを作る時点で一度、
この複雑なプリフィックス命令を捨てた、
新しいCPUを作る試みをしていたのですけど。

この新しい64ビットCPUは結局、
x86をほとんどそのまま64ビットに拡張した、
AMDの64ビットCPUに負けてしまいました。
今のCore 2などに搭載された64ビット拡張は、
AMDのCPUと互換の64ビット拡張に対応したものです。

で。
インプレスの記事を見ていて気づいたのですけど。

インテルはもう一度、複雑な命令を捨てる試みをするみたい。
ただ、今度は命令をフルスクラッチするのではなくて、
新しい命令を区別する1バイトを最初において、
続くコードを綺麗に設計しなおしたものとするみたい。
たぶん、新しい命令にうまく移行できたときには、
古い命令をエミュレーションに切り替えるつもりなのでしょう。

今度はうまくいくのかしら。
同じコトができるのなら
無駄が少ないほうがうれしいのですけど。
posted by あやまり+ at 18:55| Comment(1) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
swimeviljp.biz レディース水着 大きいサイズ 水着 激安 ワンピース http://www.swimexaggeratejp.biz/
Posted by 水着 激安 ワンピース at 2013年08月03日 00:39
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。