Intel 64
読み:インテル-ろくじゅうよん
外語:Intel 64
Intel
プロセッサーの64ビット技術(
x64
)の一つ。「インテル64」とも書かれる。旧称「
EM64T
」。
目次
概要
機能
由来
対応する製品
機能の有無判別
特徴
互換性
フラグレジスター
その他
対応環境
概要
機能
Intel
x86
シリーズ
マイクロプロセッサー
のうち、
i386
以降で使用される32ビット機械語命令セットを
IA-32
という。
これを拡張し、
AMD64 ISA
(
x64
、旧称
x86-64
)互換の64ビット拡張機能が追加された命令セットがIntel 64である。
由来
Intelは64ビット化として従来とは非互換の
IA-64
を提唱したものの鳴かず飛ばずであった。このためIntelは、開発コードネーム
Yamhill
(ヤムヒル)として、極秘でIA-32上位互換の命令セットを開発していた。
しかし、極秘の開発であったにも係わらずその情報は漏れ、Intelはその存在を公表せざるをえなくなる。
また、この技術はAMDに先を越された。Microsoft側から、AMD64と非互換の仕様は受け入れられないという通告があったとする説があり、Intelは開発コードネームは
Clackamas
(クラカマス)として、AMD64互換機能の開発をせざるをえなかったともされる。
かくして、Clackamas、つまりAMD64互換のこの機能は2004(平成16)年2月17日(現地時間)に正式発表された。一時期は「
IA-32e
」とも呼ばれたが、すぐに改名され「EM64T」に名前が落ち着き、2006(平成18)年7月27日の
Core 2
発表後は更に「Intel 64」を正式名称とした。
なお、AMD64もIntel 64も企業名が含まれていて扱いにくいため、Microsoftはそれらを無視して「
x64
」と呼んでいる。
対応する製品
Intel 64はXeonの新CPUコア
Nocona
(ノコナ)、Xeon MP用新CPUコアPotomac(ポトマック)・Cranford(クランフォード)、および
Pentium 4
の新CPUコア
Prescott
(プレスコット)からこの機能に対応させ、製品は2004(平成16)年後半に登場した。
この当時のIntel 64対応プロセッサーは、周波数の後に
F
を付けて表示した。
対応する製品に、次のようなものがある(順不同)。
Core 2
シリーズ
Core 2 Extreme
(全製品)
Core 2 Quad
(全製品)
Core 2 Duo
(全製品)
Xeonシリーズ
Xeon (Nocona以降の製品。Sossamanは除く)
Xeon MP (Potomac/Cranford以降の製品)
Pentiumシリーズ
Pentium D
(全製品)
Pentium Extreme Edition
(全製品)
Pentium 4 Extreme Edition
(Potomac/Cranford以降の製品)
Pentium 4 (Prescott以降の製品。対応品は周波数の後に「F」が付いている)
Celeronシリーズ
Celeron D
(全製品)
Celeron M
(Merom-L以降の製品)
及び、これ以降の製品すべて。
機能の有無判別
Intel 64対応プロセッサーにはAMD64と同様に
IA32_EFER
というレジスターがあり、この有無を調べることでIntel 64対応の有無を知ることができる。但し特権命令を使用する必要があり、一般のアプリケーションでは不可能である。
拡張CPUID対応のプロセッサーで、かつEAX=80000001HでCPUIDを実行した結果EDXレジスターのビット20ないしビット29が1であれば、IA32_EFERが存在する。
特徴
基本的なコンセプトはAMD64 ISA(旧称x86-64)と同様で、IA-32アーキテクチャーに64ビットアドレッシング機能などを搭載したものである。
つまり、設計はIntelではなくAMDであり、Intel 64はAMD設計品の互換品である。
もっとも、Intel 64はAMD64 ISAとは
完全互換
ではない。しかし新命令の機械語コードや64ビットモードで使えない命令、変更になった機械語コード等の仕様は全く同じであり、実用上は問題がない水準になっている。
特筆すべき点は、これは決して、単に64ビット命令を利用できたり64ビットアドレッシングに対応したりするだけの仕様ではなく、あくまでも「AMD64 ISAの互換品」ということである。
3DNow!
には当然非対応だが、AMD K6から追加されたAMDの独自命令
syscall
/sysret命令も、Intel 64にはしっかりと実装されている。
互換性
仕様の差異は、色々と確認されている。
フラグレジスター
例えば
フラグレジスター
の違いがある。
AMD64では他の
汎用レジスター
と同様に64ビットに拡張され、RFLAGSと呼ばれている。但し上位32ビットは予約扱いで、現在は未使用である。
対してIntel 64では32ビットのままで、名前も
EFLAGS
のままである。
その他
その他の差異として、次のような点が知られる。
IA32_EFER
のNXE(No-Execute Enable)ビットが無い
CPUID命令
(EAX=80000008h)で
物理アドレス
と
仮想アドレス
のビット数を得ることができる
CMPXCHG8B命令にREXプリフィックスを付けCMPXCHG16B命令として使うことができる(AMD64では未定義のため無効命令となる)
Intel 64モードでも
sysenter
/sysexit命令が利用可能
対応環境
Intel 64に対応するWindowsは、
Windows XP
の64ビット版以降および
Windows Server 2003
(SP1)以降である。
Linux
では、Red Hatが
Red Hat Enterprise Linux
version 3から対応する。またNovellがSUSE Linux Server 9から対応する。
再検索