FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

IBM POWER7の論文を読む (1. イントロダクション)

マイクロアーキテクチャに関する論文を読んでいる。今回はIBM POWER7に関する論文。

ieeexplore.ieee.org


本論文では、POWER7プロセッサの主な機能について説明する。

  • 各コアは4-wayの同時マルチスレッディングが可能な8コアのプロセッサが搭載されている。
  • IBMの45nm SOIテクノロジで製造
  • メモリサブシステム : 3レベルのオンチップキャッシュが搭載されている

イントロダクション

Power7の目標は、1つのテクノロジ世代で以下のすべてを達成することである。

  • Power6と同じ電力で、プロセッサチップ上に4倍のコアを配置できるようにする。
    • 消費電力を削減するため、Power7では周波数を下げるが、マイクロアーキテクチャの改善を行う。
      • アウトオブオーダ実行
      • 4-wayマルチスレッド(SMT)
      • 高度な分岐予測
      • 高度なプリフェッチ
      • キャッシュとメモリのレイテンシ削減
    • Power7チップをPower6と同じソケットで設計する。
    • 以前の設計で使用していた外部L3キャッシュを削除する。
    • 浮動小数点演算能力をPower6と比較して2倍とした。
  • 図1はPower7チップの外観を示している。8個のプロセッサコアを持ち、各コアは4つのスレッドを実行できる。
  • Power7はチップの両側に2つのメモリコントローラを搭載しており、4チャネルのDDR3メモリをサポートしている。
  • プロセッサチップ上の8つのコアは、32個の同時実行スレッドを持っており、高いスループットを実現する。
画像は本論文より引用

POWER7コアの概要

  • 図2は、プロセッサコアのフロアプランを示している。以下の機能により、Single Thread性能を大幅に向上させる。
    • 高度な分岐予測機能
    • プリフェッチ機能
    • アウトオブオーダ機能
  • 1コアあたり4スレッドを効率的にサポートする。
図は本論文中より引用
  • 図3は、プロセッサコアの命令フローを示したものである。
  • いくつかのスレッドモードを備えている。
    • ST (Single Thread)
    • SMT2 (Two-way SMT)
    • SMT4 (Four-way SMT)
図は本論文中より引用
  • 2スレッドが1つの汎用レジスタ(GPR)を共有する。これにより、Power5に対してより少ない物理GPRファイルエントリ数で、2倍のスレッドのレジスタを効率的にリネームすることができる。
  • Power7では、整数レジスタ(GPR)、浮動小数レジスタ(FPR)、ベクトルレジスタ(VR)のレジスタリネームが別々だったが、これらをすべて統合した。これにより、面積と消費電力が大幅に低下した。
  • 浮動小数点命令と固定小数点命令(FX)の命令発行キューは別々だったが、これを統一した。
    • これをUnified Issue Queue (UQ)と呼んでいる。
    • 1ユニットで24エントリのキューを、2ユニット実装している。
  • 浮動小数点ユニット(FPU)とベクトルメディア拡張(VMX)ユニットをベクトルスカラユニット(VSU)に統合した。
  • L1命令キャッシュとデータキャッシュをバンク化し、キャッシュへの読み込みと書き込みの同時アクセスが可能となった。

    • 1サイクルで2-readもしくは1-writeのみサポート
  • 図4は、命令が様々な発行キューに流れ、その後機能ユニットに送られる様子を示している。

  • 殆どのVSU命令は、すべてのモード(Single Thread, SMT2, SMT4)でUQ0もしくはUQ1にディスパッチ可能だが、以下の例外がある。
    1. VMX浮動小数点演算命令、スカラおよび複合整数演算はUQ0にのみディスパッチ
    2. Permute(PM)演算、10進数浮動小数点演算、128ビットストア演算はUQ1にのみディスパッチ可能
    3. UQ0に割り当てられたVSU命令は常にベクトルスカラパイプライン0(VS0)で実行
    4. UQ1に割り当てられたVSU命令は常にベクトルスカラパイプライン1(VS1)で実行
  • コアは以下のユニットから構成されている。
    • 命令フェッチユニット (IFU)
      • 32KB命令キャッシュ (I-Cache)
    • 命令シーケンスユニット(ISU)
    • ロードストユニット(LSU)
      • 32KBデータキャッシュ (D-Cache)
    • 固定小数点ユニット(FXU)
    • ベクトル演算ユニット(VSU)
    • 10進数FPU (DFU)
  • 1サイクルで最大8命令フェッチ、最大6命令ディスパッチ、最大8命令発行。
  • 12個の機能ユニットから構成されている
    • 2つの固定小数点ユニット
    • 2つのLSUユニット
      • さらに、単純なFX演算も実行可能となっている。
    • 2つの倍精度浮動小数点演算(DP)ユニット
    • 1つのベクトルユニット
    • 1つの分岐ユニット
    • 1つの条件レジスタ論理ユニット
    • 1つの10進数浮動小数点ユニット