後藤弘茂のWeekly海外ニュース

64bit化されたIA-32「Yamhill」の正体




●64bitアドレス機能拡張を否定しないIntel幹部

 「メモリ容量の増大のため、2006~2007年には、デスクトップでも64bitの市場ニーズが台頭してくる。どこかの時点で、われわれもIA-32ファミリに64bitアドレス能力を含めるように拡張することになるだろう(At some point, we will extend IA-32 family to include 64-bit addressibility)。ただし、技術またはビジネス上、あるいはユーザー側の理由のために、それはまだ何年か先になるだろう」。

 IntelのPatrick Gelsinger(パトリック・ゲルシンガー)CTO兼副社長(Vice President & Chief Technology Officer)は、先月開催されたIDF-Jのグループインタビュー(ラウンドテーブル)でこのように、IA-32 CPUのアドレッシング機能の64bit拡張の必要性を認めた。また、ラウンドテーブルでは以下のようなやりとりもあった。

[Q] 64bitはフラットメモリアドレッシングを提供するのか。それともセグメントメモリモデルになるのか。

[Gelsinger氏] アーキテクチャの仕事を探しているのかな(笑)。それについてはまだ公表していない。

[Q] 64bitフラットメモリモデルとセグメントモデルのそれぞれの利点はどう見ているのか。

[Gelsinger氏] ……、ソフトウェアが開発されるにつれて、フラットアドレス空間の類には勢いがついて来ている。しかし、今日のアーキテクチャを見ると、もっとも重要な課題はフラット対セグメントというメモリモデルにはない。(メモリ管理の)大きなページテーブル、2、3または4レベルのページテーブルは、技術上のトレードオフの鍵となる分野で、それをどう(設計)するかがもっと重要となる。

 「……の仕事を探しているのかな」というのは、答えたくない質問が来た時のIntel幹部の常套的な返答だ。それも当然の話だと思われるのは、IntelはすでにIA-64で64bitフラットメモリモデルを採用しているからだ。IA-32が64bitフラットメモリ(=64bit論理メモリ空間)をサポートすることになれば、それはIA-64と食い合うことを意味してしまう。だから、うかつには答えられない。

 しかし、エグゼクティブは可能性がある場合には否定できない。その点では、Gelsinger氏が64bitアドレッシングも64bitフラットメモリも、可能性は否定していない点は要注意だ。

 面白いのは、Intelでも、もう少し製品に近いポジションの人物になると、メモリアドレス機能の拡張の必要性は認めるものの、64bitフラットメモリについては明確に否定することだ。だが、Gelsinger氏になると否定しない。ここから推測できるのは、製品計画として予定されている中には64bitフラットメモリがないが、CTOであるGelsinger氏が関わるアーキテクチャ開発では手をつけている可能性があるということだ。

●実際には64bit拡張は必須ではない

 では、Intelはどの程度真剣にIA-32の64bitアドレス拡張を進めているのだろう。また、それはいつになるのだろう。

 まず、原則的に言うと、IntelにとってはIA-32で真の64bitソリューションを急いで提供しなければならない理由は、実は存在しない。以前のコラム「なぜCPUは64bitへ向かうのか」と矛盾するようだが、これには理由がある。それは、Intelの場合、本当に大きな論理メモリ空間を必要とするハイエンドサーバー用途には、IA-64アーキテクチャがあるからだ。それに対して、64bitソリューションを持たないAMDの場合は、サーバーに入るために64bitフラットメモリをサポートしたい。IBMの場合はすでにサーバーで64bitソリューションを持っていて、PowerPC 970はそれを下へ降ろしてきたに過ぎない。だから、事情が異なる。

 そもそもデスクトップPCだけを見るなら、Intelはアドレッシングを拡張する必要すらない。それはページングを拡張する「PAE(Physical Address Extension)」があるからだ。Pentium Pro以降のIntel IA-32 CPUはPAEによってIA-32の32bit論理アドレスを36bit物理アドレスにマッピングできる。36bit=64GBまでの物理メモリにアクセスができるわけだ。デスクトップPCではチップセットの対応が必要となるが、VIAチップセットなどはPAEをサポートしている。

メモリ容量のトレンド
※別ウィンドウで開きます

 ところが、PAEがあっても次世代アーキテクチャ「Nehalem(ネハレム)」では必ず新たなアドレス機能の拡張をしなければならない。それは、IntelがIA-32アーキテクチャでミッドレンジのサーバーまでカバーしているからだ。デスクトップPCが32bitの壁にぶつかる時には、サーバーも実は36bitの壁(64GB)にぶつかってしまう。だから、いずれにせよ、IntelはPAE以上のアドレス能力をNehalemに加えなくてはならない。サーバーではデスクトップに対して、2倍のDRAM容量、2倍のモジュール容量、2倍のDIMM枚数が可能になるため、PAEの4bitのアドバンテージのうち3bit分は相殺されてしまう。つまり、IntelはNehalemの世代では、PAEがあっても、アドレス拡張が必ず必要になる。

 そうすると、問題はどこまでの物理アドレスが、今後10年のアーキテクチャとして必要かという話になる。例えば、40~42bitに拡張するとしよう。DRAM容量では1bit(2倍)が2年に換算されるから、40bit(1TB)なら2014年、42bit(4TB)なら2018年まで保つ計算になる。Nehalemのアーキテクチャ寿命は最長でも10年だから、これで十分に間に合う。

 そう考えると、今、64bitの物理メモリ空間が必要なわけでは全然ない。だから、もしCPUに64本のアドレスピンを設けても、全く意味がないことになる。実際、2003年に登場するPC向けの“64bitCPU”も、実際には64bitの物理アドレスは備えていない。物理アドレス(実際のCPUのアドレスピン数)はHammerファミリが40bit、PowerPC 970が42bitだ。

 こうして見ると、緊急には64bitの物理メモリは必要がないことになる。そうすると、選択肢としては、CPUを64bit化する以外に、32bitベースでメモリアドレッシング機能だけを40~42bitに拡張するアプローチもありうることになる。つまり、PAEの延長のような、ページディレクトリの階層化的な解決策を、比較的低いオーバーヘッドで提供できるなら、それでもOKということになる。

 これは推測だが、Intelはこうした方向のメモリアドレッシング拡張は開発していると思う。そう考える理由の(1)は、PAEと同様に32bitモードで32bitの壁を越える物理メモリを利用できるようにすることが重要だからだ。理由の(2)は、それがIntel CPUのこれまでの歴史だからだ。これまでも、何度もIntelはメモリアドレッシングだけを拡張してきた。しかし、Gelsinger氏が64bitアドレスも64bitフラットメモリも否定はしないところを見ると、Intelが64bit化も開発している可能性はある。

●64bitメモリはフラットかセグメントか

 そもそもIA-32での64bit化はどういうことかというと、根本的には次の3つになると思う。

  • 64bitレジスタ(データ幅)/演算ユニット
     
  • 64bit仮想メモリアドレッシング
     
  • 上の2つをサポートできる64bitモード

 x86-64の64bit拡張は、これらの素直なインプリメントだ。もっとも、x86-64の最初のインプリメントであるHammerファミリでは、仮想メモリ空間は48bitに制約されている。それは、仮想メモリでも64bitはまだ不要で、48bit(256TB)程度で間に合ってしまうからだ。しかし、x86-64のアーキテクチャ的には64bitフラットメモリアドレスはサポートされている。

 64bitフラットメモリアドレッシングの意味は、もっと煮詰めると64bitのアドレスポインタが使えて、セグメントレジスタ操作などのオーバーヘッドなしに64bit空間にリニアにアクセスできる、ということになると思う。

 ちなみに、Intelは、もし64bit仮想メモリ空間をサポートするとしても、単一のリニアな64bit空間にはしないだろう。メモリセグメントを設けることで、メモリを保護するというのがIntelの根本的な発想だからだ。例えば、IntelのセキュリティPCアーキテクチャ「LaGrande(ラグランド)」もその延長線でインプリメントされる可能性が高い。Gelsinger氏によると、LaGrandeではCPUは「セキュア仮想メモリ」を持ち、それをCPU内部でプロテクトされたページテーブルにマッピングするという。こうした方向性でいる以上、64bitでも、仮想メモリは複数持てるようにすると想像される。

 また、しばらくはセグメントサイズが64bit空間より小さくても原則的には問題はない。64bitフラットが必要になったら、その段階でセグメントサイズを最大64bitまで拡張すれば、リニアアドレッシングと同じにことになる。これだけメモリが大きくなると、実装上の課題はセグメントのオーバーヘッドよりむしろ、仮想メモリ-物理メモリでマップするテーブル管理の方に来るのだと思われる。

 先ほど説明したように、現状では64bit物理アドレッシングはまだ必須ではないと思われる。この状況で、64bitへとプッシュされる要素としては何があるのか。それは、ソフトウェア側の要請ということになる。64bitベースのフラットメモリをOS側が求め始めたら、言い替えれば、MicrosoftなどがサーバーOSを全て64bitコードベースに移行させたいと考え始めたら、それはCPUメーカーにとって圧力となる。Intelが64bitの拡張を考えているとしたら、そうした展開にも備えてということかもしれない。

 こうして見てくると、Intelがもし「Yamhill(ヤムヒル)」と呼ばれるIA-32の64bitアーキテクチャを持っているとしたら、それは、単純にフラットな64bitを提供するアプローチではないだろう。むしろ、LaGrandeのセキュア仮想メモリも含めた、長期的で包括的なアドレッシング拡張の戦略を持っていると考えた方が自然だ。

 例えば、次のようなシナリオだって考えられる。Nehalemに42bitの物理アドレス機能を加え、既存の32bitプロテクトモードで42bit物理メモリにアクセスできる拡張を実装する。さらに、Nehalem(あるいは次のCPU)に隠しモードで64bitモードも実装しておく。そして、必要になったらある日それをオンにするといった方法だ。

□関連記事
【11月7日】なぜデスクトップ用CPUは64bitへ向かうのか
http://pc.watch.impress.co.jp/docs/2002/1107/kaigai01.htm

バックナンバー

(2002年11月15日)

[Reported by 後藤 弘茂]


【PC Watchホームページ】


PC Watch編集部 pc-watch-info@impress.co.jp 個別にご回答することはいたしかねます。

Copyright (c) 2002 Impress Corporation All rights reserved.