このページの本文へ

前へ 1 2 3 4 次へ

ロードマップでわかる!当世プロセッサー事情第24回

MSのプッシュでAMD64が勝者になったx86の64bit拡張

2009年10月26日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/)

  • この記事をはてなブックマークに追加
  • 本文印刷

互換性を保ちつつ64bit拡張を実現した
AMDの拡張命令「AMD64」

拡張命令の変遷で見たCPUロードマップ
拡張命令の変遷で見たCPUロードマップ

 拡張命令から見るx86 CPUの3回目は、まず64bit拡張について取り上げよう。前回の最後で触れた通り、AMDは2003年4月にリリースした「Opteron」で、x86命令の64bit拡張である「x86-64」(現在のAMD64)を導入する。

AMD Opteron AMD64に対応した初のCPU「AMD Opteron」

 AMD64は動作モードとして、以下の2種5モードを持つ。

Long Mode
64bit Mode、Compatibility Mode
Legacy Mode
Protected Mode、Virtual-8086 Mode、Real Mode

 Legacy Modeは従来の32bit CPUとして動くモードなので、拡張されたのはLong Modeの方である。こちらは64bit OS(と64bitのデバイスドライバー)が必須であり、これをフルに使えるのが64bit Mode。一方で、従来の32bitアプリケーションをそのまま動かすのがCompatibility Modeとなる。

 では何が拡張されたのか? というと、まずレジスターが図1のように大幅に拡張された。SSE用のXMMレジスターが0~15(従来は0~7)に拡張され、汎用レジスターも新たにR8~R15までが追加された。

AMD64のレジスター構成 図1 AMD64のレジスター構成

 x86 CPUがRISCプロセッサーと比べて、アーキテクチャー的に見劣りしていたのがこの汎用レジスターの少なさだ。それゆえ、x86ではスタック操作を多用していたのだが、これでやっとそうした弱点もなくなったことになる。また従来の汎用レジスターも(FPU/MMXを除き)すべて64bitに拡張された。

 一方、命令セットに関しては、従来と互換性を取りつつ、64bit拡張を行なったものとされる。例えばADD命令(加算)の場合、一例を挙げると以下のようになっている。

32bit 64bit
ADD AL,imm8 ADD AL,imm8
ADD AX,imm16 ADD AX,imm16
ADD EAX,imm32 ADD EAX,imm32
ADD RAX,imm32
ADD reg/mem8,reg8 ADD reg/mem8,reg8
ADD reg/mem16,reg16 ADD reg/mem16,reg16
ADD reg/mem32,reg32 ADD reg/mem32,reg32
ADD reg/mem64,reg64

 命令フォーマットはまったく一緒だし、従来のデータサイズを扱う命令は同じだが、そこに64bit拡張が入るという形だ。厳密に言えば、例えば「ADD reg/mem32, reg32」という命令で対象となる「reg32」は、従来ならば「EAX~ESP」までのどれかだったが、64bit環境では「RAX~RSP」に加えて「R8~R15」も演算の対象となる。このあたりは下位互換性を保ちつつ、レジスター拡張に備えたものだ。

 ちなみにMMXや3DNow!に関しては、扱うレジスターにそもそも変化がなく、また元々64bit命令だったこともあり、MMX Move命令で相手となる汎用レジスターが増えただけだ。SSEはXMM8~15も対象にする形に拡張されている。

前へ 1 2 3 4 次へ

この連載の記事

注目ニュース

ASCII倶楽部

最新記事

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン