このページの本文へ

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

インテルCPU進化論 細かく変わって性能向上Sandy Bridge

2012年09月10日 12時00分更新

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

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

新たな省電力化への取り組み
Physical Register File

 だが、こうしてデータパスを256bit化することは、消費電力が増えるという新たな問題を生む。倍のデータ量を一度に転送するわけだから、これは避けようがない。この増えた消費電力の分の埋め合わせとして、新たに搭載された省電力機構が「Physical Register File」である。ちなみに直訳すると「物理レジスタファイル」になるが、これは正しい訳とはいえない。

図3 Nehalem世代までのパイプライン

 図3は、Nehalem世代までのパイプラインを簡略化した図である。黒い矢印が処理の流れで、赤い矢印がデータの流れを意味する。ここで「何かしらのLoad命令が実行され、その結果をつかって演算を行ない、最後にStore命令で結果を書き戻す」というシーケンスを考えると、以下のような処理になる。

  • ①最初のLoad命令が実行され、メモリーからデータを取り込む。取り込んだ結果は、とりあえずメモリーコントローラーの内部バッファ「C」に蓄えられる。
  • ②Load命令の完了にともない、取り込んだ結果をRetirement Unitに戻す。この際内部バッファ「C」からRegister File「A」に値をコピーする。
  • ③次の命令が実行される場合、Scheduleで実行タイミングが確定した段階で、Execute Unitの内部バッファ「B」にその値をコピーする。
  • ④Execute Unitはその値を元に演算を行ない、結果をBに書き戻す。
  • ⑤実行が終わると、結果は再びRetirement Unitに戻される。このタイミングで内部バッファ「B」からRegister File「A」に値をコピーする。
  • ⑥Store命令でメモリーに書き戻すため、「A」の内容をメモリーコントローラーのバッファ「C」にコピーする。
  • ⑦「C」の内容をメモリーに書きだして終了。

 この処理を見ると、②/③/⑤/⑥の過程で、CPU内部のユニット間でデータのコピーが発生している。これだけの回数データのコピーをすれば、それは消費電力が増えるというものである。

 ではPhysical Register Fileを使うとどうなるのか?(図4) こちらは「レジスタは1ヵ所にまとめて移動しない」のが特徴である。上と同じ処理はこうなる。

図4 Sandy Bridge世代のパイプライン

  • ①「Allocate」でレジスタ「A」を利用することを確定し、それをポインタ領域(Pointer)に設定する。
  • ②Load命令では、まずポインタにアクセスして書き込む場所を確定する。
  • ③Load命令を実行して、「A」に値を格納する。
  • ④次の演算命令のために、Allocateはポインタを更新。
  • ⑤演算命令もまずポインタをアクセスする。
  • ⑥「A」に値が入っていることを確認後、値を取り込む。
  • ⑦結果を「A」に書き戻す。
  • ⑧Store命令のために、Allocateはポインタを更新。
  • ⑨Store命令はポインタを参照する。
  • ⑩その内容をメモリーに書き出して終了。

 この場合、何度かポインタ参照は発生するが、バッファ間でのデータコピーが一切なくなるため、これにともなう消費電力を削減できるメリットがある。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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