互換性を保ちつつ64bit拡張を実現した
AMDの拡張命令「AMD64」
![]() |
|---|
| 拡張命令の変遷で見たCPUロードマップ |
拡張命令から見るx86 CPUの3回目は、まず64bit拡張について取り上げよう。前回の最後で触れた通り、AMDは2003年4月にリリースした「Opteron」で、x86命令の64bit拡張である「x86-64」(現在のAMD64)を導入する。
![]() | 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までが追加された。
![]() | 図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も対象にする形に拡張されている。
この連載の記事
- 第118回 CPU黒歴史 夢の5GHz CPUは燃費最悪 Prescott~Tejas
- 第117回 忘れ去られたCPU黒歴史 StrongARMの前に破れたi960
- 第116回 忘れ去られたCPU黒歴史 渾身のRISC CPUが駄作 i860
- 第115回 忘れ去られたCPU黒歴史 20年早すぎたCPU iAPX 432
- 第114回 忘れ去られたCPU黒歴史 幻の統合CPU Timna
- 第113回 見えてきた上位CPU Sandy Bridge-Eのラインナップ
- 第112回 2012年のインテルチップセットはPCIe 3.0&USB 3.0
- 第111回 アーキテクチャーから予測するBulldozerコアの性能
- 第110回 バスの歴史を振り返る PCI Expressと関連規格を総ざらえ
- 第109回 バスの歴史を振り返る PCIからAGP、PCI-X編
- この連載の一覧へ

















