AMD64
読み:エイエムディーろくじゅうよん
外語:AMD64
x86命令セットアーキテクチャーを64ビットに拡張した、
AMD
の64ビットプラットフォーム。「AMD64プラットフォーム」ともいう。
目次
概要
由来
変更点
名称
特徴
コンセプト
レジスター
アドレス空間
RIP相対アドレッシング
命令セット
概要
由来
32ビットだったx86アーキテクチャー
IA-32
に対し、Intelは
IA-64
という独自のアーキテクチャーを提供した。Intelは、IA-64との競合を避けるため、x86アーキテクチャーは32ビットに限定する方針とした。
一方市場は、x86と互換性のある64ビットアーキテクチャーを求めていた。この需要に応えたのが、AMD64アーキテクチャーだった。
後塵を拝することになったIntelにも、64ビット化の計画はあった。これはもちろんAMD64とは全く互換性が無かったが、OS市場を事実上独占していたMicrosoftはx86の64ビット拡張を一本化することを要求、これによってIntelは先行したAMD64互換の64ビットアーキテクチャーを
EM64T
として採用せざるをえなくなった。EM64Tは、後にIntel 64に改名され、現在に至っている。
変更点
x86命令とほぼ完全な互換性を維持しながら、命令セットを64ビット化した。
既存の32ビットレジスターを拡張して64ビットレジスターを実装し、更に汎用レジスターとSSEレジスターを従来の8本から16本へと増設した。従来の拡張はRAXなどとなる他、追加されたレジスターはR8-R15、XMM8-XMM15などとなる。アドレス空間が64ビット化されたため、命令のポインターも64ビット化された。
但し、FPU/MMXレジスターは変更がなく、従来通り80ビットのレジスターが8本のままである。
K8系
の製品シリーズから導入されている。2003(平成15)年4月23日に発売された
Opteron
が初の製品であり、その後、デスクトップ/モバイル用として2003(平成15)年9月に
Athlon 64
が発表された。
名称
AMD64という名称が発表される以前は「x86-64テクノロジ」などと呼ばれていた。
また、プラットホーム自体は、CPUの開発コードネームであるSledgeHammerやClawHammerなどの名で呼ばれていた。
AMDは、プラットホームは「AMD64プラットフォーム」とし、この技術で使われる命令セットアーキテクチャーx86-64を「
AMD64 ISA
」とした。
特徴
コンセプト
IA-32はCISCであり、また8ビットCPUとの互換性も考慮されていたため、独特の設計になっていた。
AMDは、この独特の設計の改善をもくろんでいた。DEC Alphaの設計者もAMD64の仕様策定に参加しており、
64ビットマイクロプロセッサー
として先行していたRISCに似せたアーキテクチャーを導入することにした。
レジスター
汎用レジスター
は、IA-32は8本(EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI)だった。これに更にR8〜R15の8本を追加して16本とした。
また、各レジスターのビット幅も、32ビットから64ビットへと拡張された。
IA-32は汎用レジスターの数が少なく、このためコンパイラーによる最適化にも限界がありRISCより不利な点とされていた。16本のレジスターも、RISCと比べると多いとは言えないが、本数が倍になったことで最適化が進み、これによる性能向上も期待されている。
加えて、128ビット長の
XMMレジスター
も、従来の8本から16本に増やされた。
なお、64ビット長のMMXレジスターは、8本のまま変更がない。SSEが主流となった現在では、MMXおよび
x87 FPU
は、もはや互換性のために残されている存在である。
アドレス空間
アプリケーションが扱える
仮想アドレス
空間は従来の32ビットから64ビットに拡張され、64ビットのフラット仮想アドレッシングに対応した。
IA-32の初期のプロセッサーは
物理アドレス
空間が32ビットであるため、2
32
バイト=4Giバイトまで扱うことができた。Pentium Pro以降では、物理アドレス拡張機能(PAE)を使うことで
物理アドレス空間
が36ビットに拡張されたため、64Giバイトまで扱うことができるようになった。
AMD64でも物理アドレス拡張を使用するが、これを拡張した。64ビットCPUだが、設計仕様上の最大を52ビット、2
52
バイト=4Eiバイト、当面の実装では48ビット、2
48
=256Tiバイトまで扱えるようにしている。
RIP相対アドレッシング
プログラムカウンター相対アドレッシングに対応した。RIPは、IP/EIPが64ビット化したことに伴い導入された64ビットレジスターである。
従来も、ジャンプ命令にPC相対は存在したが、データアクセスでは存在しなかった。このアドレッシングを使うことで、データアクセスを完全な
リロケータブル
にできる。
命令セット
AMD64プラットフォームの機能を実現するために導入された新たな命令セットを
AMD64 ISA
という。
従来のAMDの命令セットと同様、
x87 FPU
、
MMX
、
3DNow!
、
Enhanced 3DNow!
に対応し、更に、
SSE
、
SSE2
にも対応する。
SSE/SSE2では8本の128ビット
XMMレジスター
を使用するが、AMD64ではこれを拡張し、16本にレジスターを増やしている。
AMDがSSE/SSE2を正式に導入したことで、従来のMMXや3DNow!で提供されていた機能がSSEシリーズで網羅されることになった。x87 FPUやMMX系の従来命令は、既に互換性のためだけに残されたレガシーなものとなっている。実際にMMXの拡張である3DNow!は、後に廃止されている。
再検索