未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

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ビット拡張したんだからいいではないですか。そうですね、誰も困らないわけだし。ここは一つ丸くおさめましょう。

ということで穏便に事を進めることにする。

IntelEM64Tというのは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の最小限の変更で移行できるので導入コストが安いからである。

今日はこのくらいにしておく。