Intel 64 【EM64T】 Extended Memory 64 Technology
概要
Intel 64(EM64T)とは、米インテル(Intel)社がx86系マイクロプロセッサ(CPU/MPU)製品に組み込んだ64ビット命令セットで、32ビットのx86系命令セットとの互換性を維持したまま64ビットコードの実行を可能にしたもの。米AMD社のAMD64(x86-64)とほぼ同じもの。x86は米インテル(Intel)社の8086を源流とするプロセッサ製品シリーズに搭載されてきた命令セットの体系で、i386以降は32ビットに拡張されたものが使用されてきた。Intel 64はこれを64ビットに拡張した命令セットで、新たに64ビット用に開発されたソフトウェアは高い性能や拡張性を得られる一方、旧来の32ビットx86プロセッサ向けのコードもそのまま実行することができる。
主な仕様
Intel 64では個々の32ビット命令の先頭に特定の識別子(REXプレフィックス)を追加することで、同じ動作の64ビット命令とすることができる。各レジスタも64ビットに拡張され、汎用レジスタが8個から16個に新たに8個追加された。SSE命令などで使われる128ビット長のXMMレジスタも8個から16個に倍増した。
メモリ空間のアドレッシングも32ビットの上限である4GiBから大きく拡張され、48ビットのアドレスを用いることで理論上は一つのプロセスが最大で256TiBまでの単一のメモリ空間を使用できるようになった。
動作モード
動作モードとして64ビットOSを実行するための「Longモード」と、旧来の32ビットOSなどを実行する「Legacyモード」がある。Longモードでは64ビットのソフトウェアを実行できるほか、32ビット互換モードで32ビット向けソフトウェアもそのまま実行できる。これにより、64ビットOS上で新しく64ビット向けに設計されたアプリケーションと古い32ビットのアプリケーションを混在させることができる。
Legacyモードはプロテクトモード、仮想8086モード、リアルモードなど旧来のx86プロセッサの動作モードをサポートし、64ビット機能をオフにして古いx86プロセッサとして振る舞う。古いプロセッサを前提に設計された32ビットOSなどをそのまま実行することができる。
IA-64/AMD64との関係
Intel社は当初、64ビット命令セットとしてx86とまったく互換性のない新規設計のIA-64を米ヒューレット・パッカード(Hewlett-Packard)社(当時)と共同開発し、Itaniumなど高性能サーバ向けプロセッサ製品として販売していた。しかし、従来のx86向けソフトウェアをエミュレーションにより動作させるため極端に性能が落ちる点などが敬遠され、普及は一向に進まなかった。
一方、x86系プロセッサの互換製品を開発・販売していたAMD社は32ビットx86との互換性を維持しながら64ビットに拡張したAMD64(当初の名称は「x86-64」)を開発し、2003年から自社製品に組み込んでいった。
この方式は過去のソフトウェア資産を引き継ぎながら64ビットの機能や性能も活かすことができるとして好評を博し、開発者や市場に広く受け入れられたため、Intel社もこれとほぼ同じ仕様の64ビット拡張としてIntel 64(当初の名称は「EM64T」)を発表し、これを自社製品に組み込む方針に転換した。
Intel 64とAMD64は一部に細かな差異はあるもののほぼ同じ仕様となっており、OSやコンパイラなどが仕様の違いを吸収してくれるため、ソフトウェアの開発者や利用者が違いを意識することはほとんどない。ソフトウェアメーカーなどは両者に同じように対応していることを示すため、どちらの名称も用いず「x64」といった表記を用いる場合もある。