「アーキテクチャ」と「マイクロアーキテクチャ」という言葉がある。ともすれば、同じ意味で使ったりもするこの2つの用語だが、インテルによると“x86”や“IA-64”といった「命令セットレベルの違い」がアーキテクチャで、特定のアーキテクチャを「どう実装するか」(命令セットのインプリメンテーションだけでなく回路設計やレイアウト、インタフェースなども含む)を“マイクロアーキテクチャ”と呼ぶ。要するに「x86」というアーキテクチャ向けの“マイクロ”アーキテクチャとして「NetBurst」や「Core」がある、という定義だ。
アーキテクチャであるx86は、1978年に登場した8086以来、2008年でついに30周年を迎える。この間、動作モードや命令セットなどの拡張は行われたものの、今でも8086用コードとの基本的な互換性を維持している。「x86互換」というのは、このアーキテクチャレベルでの互換性を指す。
一方、マイクロアーキテクチャは、アーキテクチャレベルの互換性をどうやって実現するかという手法であり、これについてインテルは、2年ごとに更新するTick-Tock(チックタック)戦略を唱えている。製造プロセスを更新する「Tick」とマイクロアーキテクチャを更新する「Tock」を毎年交互に繰り返すことで、それぞれを2年単位で更新していこうという戦略だ。
以前からインテルは、製造プロセスの更新とマイクロアーキテクチャの更新を同時に行うことは避けてきた。ただ、2年ごとに更新される製造プロセスに対し、マイクロアーキテクチャの更新は定期的ではなかった。PentiumのP5マイクロアーキテクチャは約4年、Pentium ProのP6マイクロアーキテクチャは約6年、Pentium 4のNetBurstもやはり約6年と、それぞれ長期にわたって新製品が投入されていた。これを2年ごとに改めるというのは、更新サイクルの大幅な短縮に思える。だが、そもそも「マイクロアーキテクチャを更新する」というのはどういうことなのだろうか。
過去においてマイクロアーキテクチャの更新といえば、もっぱら命令セットのインプリメンテーションにかかわる部分やパイプラインを中心としたCPUのコア部分の更新を意味した。というより、従来のCPUにおいて、コア以外の部分は「必要だけれど補助的なもの」という位置づけに過ぎなかった。
Nehalemの開発においてインテルは、CPUをモジュール化し、そのコア部(Core)とそれ以外の部分(Uncore)を明確に切り分ける方針を打ち出した。CoreとUncoreの2つを合わせてマイクロアーキテクチャ、という考え方で、これまでよりもUncoreの重要性がアピールされている。その理由は、Nehalemの大きな目標の1つが、メモリコントローラの内蔵と、それにともなう外部インタフェースの変更(FSBからの決別)にあったからだろう。
Coreの設計については、コアマイクロアーキテクチャの開発に功績のあったモビリティ事業部の意向が大きなウエイトを占めるのに対し、UncoreについてはNehalemの開発を主導するデジタルエンタープライズ事業部が大きな裁量権を維持しているから、ともとれなくはない。実際、上海で行われたIDF 2008で次のTockフェーズ(マイクロアーキテクチャの更新)のCPUとなる「Sandy Bridge」に搭載されるAVXのセッションを担当したのは、モビリティ事業部のアーキテクトとソフトウェア事業部のコンパイラアーキテクトであった。
余談になるが、このセッションのタイトルは「Upcoming Intel 64 Instruction Set Architecture Extensions - Intel Advanced Vector Extensions(Intel AVX)」といい、ストレートに解釈すると256ビットのSIMD命令セットとなるAVXが利用できるのはIntel 64環境(64ビットモード)のみ、ということになる。
Nehalem世代におけるCPUの特徴は、Core/Uncoreモデルによるモジュール化と、すべてのセグメントで共通のCoreを利用する一方で、セグメントごとの区別はUncore部で行う、ということの2点だ。つまりノートPCからデスクトップPC、ワークステーション、サーバで同じコアを用い、それぞれのセグメントで要求が異なる部分はUncoreで吸収するという方針である。
CPUの構成要素をモジュール化するというアイデアは、Nehalemが最初というわけではない。インテルは現行のPenryn(開発コード名)をモジュールデザインの第一世代としており、それにより、派生型の設計から生産に要する時間が大幅に短縮されたとしている。Nehalemのモジュール化はさらに進化したもので、CoreとUncoreの組合せの自由度が格段に高い。要求される性能、消費電力、機能性などに応じて、かなり自由にモジュールを組み合わせることができる。
モジュール化を進めるということは、モジュール間のインタフェースを定義するということであり、各モジュールはその仕様を守らねばならない。そこに若干だがオーバーヘッドが生じることになる。が、そのデメリットより構成の自由度のメリットをインテルは優先した、ということなのだろう。インテルのTick-Tockモデルにおいて、各世代のCPUはトップモデルとしての寿命が1年しかない。派生型の投入に時間がかかっては、商機を逃してしまう。
Copyright © ITmedia, Inc. All Rights Reserved.