EM64T
Extended Memory 64 Technology (EM64T) とはIntelの32ビットアーキテクチャの64ビット拡張である。マニュアルはIntel® Extended Memory 64 Technology Software Developer's Guide Volume 1 of 2 http://developer.intel.com/technology/64bitextensions/300834.htm である。先日来記しているExecution Disable Bitの機能もEM64Tから導入された。Intel Xeonのコード名Noconaで実装されている。Pentium 4ではPrescottから実装されている。
32ビットアーキテクチャの64ビット拡張というのは、わかったようでいてわけのわからない話である。お前は32ビットなのか?それとも64ビットなのか?はっきりしろ、おい。Intelはもう一つの64ビットアーキテクチャIA-64を持っているからますますわけがわからなくなり。はっきりしろ、おい。
まあまあ、そーゆー難しいことは言わないことにして、64ビット拡張したんだからいいではないですか。そうですね、誰も困らないわけだし。ここは一つ丸くおさめましょう。
ということで穏便に事を進めることにする。
IntelのEM64TというのはIA-32eという新しくできた拡張モードとレガシーIA-32モードというのがある。レガシーIA-32モードは既存のIA-32アプリケーションがそのまま動くというモードで、IA-32eは、(1)多くの(昔の)32ビットアプリケーションがそのまま動く64ビットのコンパチビリティモード、(2)64ビットのアドレススペースを利用するアプリケーションが動く64ビットモードの二つからなる。
EM64Tの64ビットモードで、アプリケーションは
- 64ビットフラットリニアアドレス
- 新規の汎用レジスタ8個(GPR)
- 新規のSIMD用レジスタ8個(SSE,SSE2,SSE3)
- 64ビット長の汎用レジスタと命令ポインタ
- 統一化したバイトレジスタアドレス
- 高速な割り込み優先方式
- 新規の相対アドレスモードの命令ポインタ
などにアクセスできる。
EM64TのプロセッサはレガシーIA-32モードないしIA-32eモードを実行できる。プロセッサは当初レガシーIA-32モードで起動し、そしてIA32-EFERのビットが設定されかつPAEモードが有効になっているとIA-32eモードに移行する。
OS的にはレガシーIA-32モードで起動して、IA-32eモードへ移行する。アプリケーションの多くは当面はコンパチビリティモードで動くというのがEM64T導入の典型的なシナリオであろう。アプリケーションの変更はほとんどなしでOSの最小限の変更で移行できるので導入コストが安いからである。
今日はこのくらいにしておく。