●アーキテクチャを次々に拡張
「HT(Hyper-Threading)、LT(LaGrande Technology)、VT(Vanderpool Technology)……それからCT(Clackamas Technology)」「NetBurst(Pentium 4のアーキテクチャ)が出てから、4つの大きな機能を追加してきた」とIntelのPatrick P. Gelsinger(パット・P・ゲルシンガー)CTO兼上級副社長(CTO & Senior Vice President)は強調する。 実際にはHTは、Pentium 4の最初の設計に含まれていたため、追加しつつある拡張はLT、VT、CTの3つ。だが、Pentium 4をベースに、次々に大がかりなアーキテクチャ上の改良を加えつつあることは確かだ。 そして、興味深いのは、いずれの実装も、CPUの基本的な部分を大きく拡張するものであることだ。スレッドの並列処理を実現する「Hyper-Threading」はもちろん、64-bitへの命令拡張である「64-bit Extension Technology(Clackamas:クラカマス)」、パーティショニングによりセキュリティを実現する「LaGrande(ラグランド)」、仮想マシンをハードウェア支援する「Vanderpool(バンダプール)」、いずれもCPUの根幹に関わる拡張だ。インパクトという点では、これまでのMMXやSSEといった命令拡張より大きい。 IntelのNetBurstアーキテクチャ(Pentium 4系CPUのマイクロアーキテクチャ)の最大の特徴は、このようにアーキテクチャ上の拡張を簡単に行なうことができる点だ。従来通りなら、64bit拡張や新特権レベルや新動作モードの追加のような拡張は、CPUアーキテクチャの刷新の時に行なうはずだ。それは拡張のために、CPUのベースアーキテクチャの大幅な設計変更が必要になるからだ。しかし、今回、IntelはNetBurstに基本的な部分への拡張をどんどん加えている。また、それらの機能を自由にオンオフすることもできる。 NetBurstアーキテクチャは、Pentium 4登場時は高クロック化のためのアプローチだと考えられていた。ところが、Hyper-Threadingの存在が明らかになったことで、じつはマルチスレッディングのための技術だと認識が改められた。そして、今回明らかになったのは、じつはNetBurstの本質は、アーキテクチャの拡張性と柔軟性にあることだった。NetBurstのユニークな構造-デコーダをトレースキャッシュ(L1命令キャッシュ)の前に出すなど-は全てそのための工夫だったと推測される。 ●64bit拡張に柔軟に対応 NetBurstの柔軟性が際だったのは、今回の64bit拡張(通称CTまたはIA-32e)の件だ。まず、IntelはCPUコアの64bit拡張を、NetBurstアーキテクチャの拡張として行なった。さらに、IntelはPrescottの物理設計が完了した後で64bit実装の仕様を変更、AMD64とすりあわせたと思われる。このどちらも、NetBurstが強力な柔軟性と拡張性を備えていることを示している。 以前のレポートで伝えた通り、Intelが64bitの仕様をAMD64とすりあわせる変更を決定したのは、比較的最近(昨秋?)だったと推測される。もし、AMD64互換への変更が昨秋でなかったとしても、2003年5月まではIntel関係者もAMD64互換は否定していたため、2003年春以前であった可能性は少ない。2003年9月の段階でもIntelとMicrosoftの軋轢は歴然としており、AMD64互換を望むMicrosoftと決着がついていたとは思えない。 IA-32eを実装した「Nocona(ノコーナ)」の投入は第2四半期。すると、Intelは製品投入までわずか2~4四半期で64bit拡張の実装を変更できることになる。CPUのような複雑な製品の場合、これは通常考えられないことだ。ASICのようにIPブロックを入れ替えて簡単に機能を変更するといったことができないからだ。 パイプラインには手をつけず64bit拡張のプログラミングインターフェイスだけを変えたとしても、通常なら数カ月で変更が利くような話ではない。しかし、情報が正しいとすると、Intelはサンプル出荷までわずか数カ月で変更を行なったことになる。例え、オプションプランとしてAMD64互換テクノロジを開発していたとしても、かなり離れ業だ。 一体どうやって、Intelはこれらを可能にしたのだろう。 ●Microcodeでアーキテクチャ拡張を実装 IntelのGelsinger CTOは、NetBurstの拡張性について次のように説明する。 「Pentium 4で導入したNetBurstアーキテクチャは、非常に柔軟でスケーラビリティがある。今後、向こう10年間、どんどん機能拡張することができる。486、Pentiumを長期にわたり改善したのと同じことがNetBurstでも可能だ」、「我々は4つの大きな機能拡張をNetBurstに加えたが、このことは、ディープでフレキシブルなパイプラインと、我々のMicrocode(マイクロコード)アーキテクチャの組み合わせによって、時間の経過と共に機能拡張ができることを証明している」 「非常にフレキシブルでマルチイシューのOut-of-Order型マイクロアーキテクチャであるNetBurstに、Microcodeと多少のハードウェアを追加することで、大きな革新が可能になる。LT、HT、VTさらに他の機能も含めて、大きなシステム改革は、全て下層のマイクロアーキテクチャの上にオーバーレイできる」 この説明から明らかなのは、(1)NetBurstはもともと拡張性・柔軟性を主眼として設計されていること。(2)その拡張は、Microcodeによってかなりの部分が実現されていること。(3)マイクロアーキテクチャを隠蔽する形で実装されること。(4)NetBurstの特徴である極めて深いパイプラインも、高速化だけでなく、拡張性・柔軟性のためのアプローチでもあることだ。 ●機能拡張でもトランジスタ数増加は比較的少量 そのため、Intelはメジャーな拡張でありながら、CPUへの実装で必要となるトランジスタ数は比較的少なかったと説明する。それは、機能拡張の多くの部分が、CPUの実行リソース側ではなく、Microcodeに実装されているからだ。 「機能拡張は、多くのMicrocodeと少量のゲート(トランジスタ)をシリコン(チップ)に追加することで実現している」、「テクノロジー拡張はいずれも、わずかなトランジスタをパイプラインに追加するだけで実現できた」 「HTを例に取ると、Pentium 4より4~5%程度、トランジスタを増やしただけで実装できた。後は、かなりの量のMicrocodeと、OS側のスレッドのスケジュールなどで実現している」、「LaGrandeでも、比較的少ない数のトランジスタしか増やしていない。(機能の)多くはMicrocodeで実装している。(Microcodeが)OSとシリコンの間に、多くの革新的なインターフェイスを実現する」 「64bit拡張も同じだ。非常に少ない量のハードウェアと多数のMicrocode拡張で実現している。32-bitから64bitへの倍増で必要になったトランジスタ数は数%程度と、それほど影響は大きくはない」 過去数週間のGelsinger氏のコメントを集めると上のようになる。つまり、HT、LV、CTのいずれも、実装に際してPentium 4のトランジスタ数はそれほど増やしていない。その代わり、多くのMicrocodeを追加、Microcode部分に豊富な機能を実装しているようだ。この“リッチな”Microcode層が、NetBurstの特徴のひとつだとGelsinger氏は言う。 ●NetBurstのパワフルなトランスレーション では、具体的にNetBurstアーキテクチャでは、どうやって拡張機能を実装しているのか。最大のポイントはx86命令から、CPUの内部命令MicroOPsへのトランスレーションにあるらしい。Gelsinger氏は次のように説明する。 「MacroOPs、我々はx86命令のことをこう呼んでいるが、このMacroOPs(x86命令)は、まずMicrocodeのエントリポイントにトランスレートされる。Microcodeは、巨大なアレイで、膨大なワード数で構成されている」 「各MacroOPs(x86命令)は、Microcodeに対するポインタにトランスレートされる。Microcode自体は一連のMicroOPsとなっている。つまり、マクロレベルの命令が、マイクロレベルの命令に変換される。マシン自体に実際に発行されるのは、このマイクロレベルの命令だ。(この仕組みに)よって、プログラム側の記述と、マシン側の実行の間の、高レベルのトランスレーションが実現される」
現在のx86系CPUは、ほとんどがx86命令を内部命令MicroOPsに変換、実行する仕組みを取っている。複雑なx86命令を、比較的シンプルなMicroOPsに変換することで、効率よく並列実行できるようにする。もっとも典型的な例は、メモリアクセスを含む演算命令を、演算MicroOPとメモリアクセスMicroOPに分離することだ。 x86命令をMicroOPsに変換する仕組み自体は、Pentium 4もAthlon 64も変わらない。しかし、実際には各CPUアーキテクチャで、MicroOPsのフォーマットやMicroOPsへのトランスレートの仕組みなどは大きく異なる。例えば、Athlon系アーキテクチャでは、メモリアクセスを含む演算命令は、最初のデコードの段階では分離されない(命令発行の時点で分離される)。VIAのC3アーキテクチャでも、メモリアクセスを含む演算命令は分離されない。 そして、Gelsinger氏は、NetBurstではトランスレートの部分に、さらに多くの秘密が隠されていることを明かした。 「(NetBurstでは)このトランスレートの部分が非常にパワフルだ。マクロレベル命令をミクロレベル命令にトランスレートする際に、命令の特性(Characteristic)まで変えることができるからだ。製品を出荷した後ですら、MicrocodeをUpdateすることで特性を変えることができる」 「NetBurstのパワフルな(トランスレートの)メカニズムによって、同じMacroOPs(x86命令)でも、様々な異なるオペレーションモードのトランスレートができる。例えば、LaGrandeでは、(通常モードからセキュアモードへの)マシンステイトトランジションを行なう。その場合、セキュアサイドに(命令が)ある時と、オープンサイドに(命令が)ある時では、(同じx86命令に対して)異なる(トランスレーション)方法を行なう。オペレーティングステイトの変化に対応した、全く異なるMicrocodeへとトランスレートされる」 ●デコーダ部分でモード切り替えを実現 LaGrandeでは、プログラム実行に際して、マシンステイトを切り替える。従来のモードから、特定のレジスタを切り替えるなどの方法で、セキュアモードに移行する。どうやら、NetBurstでは、同じx86命令でも、通常モード時とセキュアモード時では、異なるMicrocode/MicroOPsへとトランスレートするらしい。つまり、同じx86命令であっても、モードが異なると、実際に内部ハードウェアに発行されるのは、異なるMicroOPsになるわけだ。トランスレートによって、命令の特性も簡単に変えることができる。この利点は、実行リソース側をシンプルに保ちながら、様々なモードをCPUに実装することが可能になる点だ。 「この仕組みにより、強力な新しいオペレーションモードを、最小限のハードウェアの変更だけで導入できる。なぜなら、マシン(CPUの実行リソース)の特性の大きなチェンジは、Microcodeの違いによってハンドルされているからだ」 「これが、NetBurstがパワフルである理由だ。マシンはMicroOPsだけを実行する。マシンからはMacroOPs(x86命令)は見えない。MacroOPs(x86命令)がトランスレートされた結果(MicroOPs)しか見えない。MicroOPsを、NetBurstアーキテクチャの中でネイティブ実行する」 つまり、NetBurstでは、他のCPUアーキテクチャと比べて、内部のマイクロアーキテクチャとプログラムインターフェイス部分の分離が進んでいるらしい。リッチなMicrocode層が、内部マイクロアーキテクチャを仮想化する仕組みとなっている。そのため、Microcode部分を切り替えることで、簡単に機能拡張やアップデートができるということだと推定される。 その場合、内部の実行ハード側には、その拡張に対応したリソースを加えるだけでいい。例えば、LaGrandeならセキュアモード時のx86命令は、通常モードとは異なるMicroOPsにトランスレートされる。実行リソース側は、単純にそれに対応して、セキュア実行やセキュアメモリアクセスができる機能を備え、それに対応したMicroOPsを用意すればいい。モードの切り替えはトランスレート時に終わっているため、実行リソース側がレジスタを見てモードを切り替えたりする必要はない。 こうして見てゆくと、NetBurstは拡張性を確保するには最適な手法だ。そして、NetBurstのパイプラインは、こうしたNetBurstに最適化されている。次回は、NetBurstパイプラインを見直して見たい。 □関連記事【2月25日】【海外】Intelは昨年秋にAMD64互換を決めた http://pc.watch.impress.co.jp/docs/2004/0225/kaigai067.htm (2004年3月9日) [Reported by 後藤 弘茂(Hiroshige Goto)]
【PC Watchホームページ】
|
|