このページの本文へ

ロードマップでわかる!当世プロセッサー事情 第166回

インテルCPU進化論 パイプラインを大幅改良したCore 2

2012年08月27日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/

  • この記事をはてなブックマークに追加
  • 本文印刷

実態は6ポートの実行ユニットだが、
効率面では5ポート相当?

図1 Meromの内部構造図。赤枠内がYonahからの主な変更部分

 「Register Alias Table」(RAT)から先がアウトオブオーダー部になる。RATや「Re-order Buffer」(ROB)、「Ready/Schedule」(Rdy/Sch)の構成そのものは変わらないが、同時に送り出すμOpの数は、Yonahまで3μOps/サイクルだったのに対して、Meromでは4μOps/サイクルに強化されている。

 また、各ステージで保持されるμOpsの数も大幅に強化されている。YonahではROBのサイズが40エントリ以上(48?)、Rdy/Schのサイズが24エントリだったのに対し、Meromではそれぞれ96エントリ、32エントリに増強されている。同時に処理できる命令数が増えた分、バッファも大きめにしないと「次に処理すべき命令がない」という状況に陥りやすいため、これを防止するための方策と考えればいい。

 実行ユニットも面白い構成になっている。前回では、Yonahの実行ユニットが6ポート(うちALUに3ポート)の構成であるのに対して、Meromや続く「Penryn」の実行ユニットは5ポート(ALUは3ポートのまま)に減らされていると書いた。この構成にはもちろん、それなりに理由があってのことだ。

インテルの資料にある、Coreマイクロアーキテクチャーのパイプライン構成

 「Intel Core Microarchitecture Pipeline Overview」というマニュアルを見ると、ALU/FPU/MMX/SSEの実行ユニットが3ポート、Load/Storeが各1ポートで、合計5ポートに減ったかのように描かれている。これを見ると一見、Dispatchユニットが5ポートに減らされたかのように見える。

 ところが、同じマニュアルの「Issue Ports and Execution Units」にある図では、Port 0/1/5がALU/FPU/SIMD向けで、LoadがPort 2、Store AddressがPort 3、Store dataがPort 4に割り当てられていると描かれている。

同じマニュアルでの別の図。各ユニットについている番号がディスパッチユニットのポート番号

 つまり、先の図でDispatchユニットが5ポートに見えるのは、図が簡略化されているだけで、実際には6ポート相当の構成である。そこを5ポートとしたのは、インテル自身が「物理的には6ポートだが、Store addressとStore dataは独立して動くケースが少ないので実質5ポート相当」と判断している……ように思われる。この話は、次回の「Nehalem」の際に、もう一度説明しよう。

部分的に止まった
Meromでの64bit対応

 2点目の改良点は、64bitモード「EM64Tへの対応」である。Pentium 4世代の「Prescott」で初めて実装されたEM64Tだが、一種のマイクロコードによるデコードだったおかげで、ファームウェアの書き換えで簡単に実装できた(関連記事)。

 しかし、マイクロコードの利用を最小限に抑えていたYonahでは、デコード段の開発をやり直すことになるため、出荷時期から逆算すると対応させるのは間に合わない。結局EM64Tへの対応は、Meromまで実現できなかった。Meromの世代でもEM64Tを完璧に実装できたとは言いがたい。一部をマイクロコードに頼って動作をさせており、このあたりが完璧になるのはNehalemまでお預けとなった。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン