FPGA開発日記

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

マイクロアーキテクチャ・シミュレータのトレースログに必要な情報の解析についての論文を読む (5)

前回の続き:

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com


4. 手法と結果

CVP-1トレースをChampSimフォーマットに変換した後でChampSimのメインブランチで変更の影響を評価した.

フロントエンドの分岐予測では,16KエントリのBTBと64KBのITTAGEと,TAGE-SC-Lを含んでいる.

また,L1Dプリフェッチャとしてip-strideプリフェッチャとL2キャッシュのNext-Lineが含まれる.

4.1. 予測性能への影響

図1は,CVP-1の公開トレースにおける提案された改善点のIPCの幾何平均の,オリジナル版との比較を示している.

  • base-update(ベースレジスタのアップデートレイテンシの改善):IPCが平均1.9%向上
  • mem-footprint(2つのキャッシュラインを含むメモリ命令の改善):ほとんど影響はない
  • mem-regs(ロード先のレジスタを厳密に保持する):ほとんど影響はない
  • flag-reg(ALU命令とFP命令にフラグレジスタを追加する):性能に大きな悪影響を与える
  • brach-regs(分岐元レジスタと分岐先レジスタを保持する):性能に大きな影響を与える
  • call-stack(コールスタックの修正):性能が0.8%向上する

全体的に見ると,IPCは平均で3.5%程度減少した.

branch-regsとflag-regの改良が単独で持つパフォーマンスへの影響は、それらを一緒に適用した場合に重複することは注目に値する。flag-regは、フラグレジスタを持たないすべてのALU命令およびFP命令のデスティネーションレジスタとしてフラグレジスタを追加する。そのため、すべての条件分岐が古いALUまたはFP命令に依存するようになる。しかし、branch-regs を適用する際、CVP-1 命令にソースレジスタがある条件分岐の場合、flag レジスタをそのようなレジスタに置き換えるため、flag-reg が単独で与える影響は小さくなる。

図2は,CVP-1の各公開トレースに対して,それぞれの改善策を個別に適用した場合と,すべて適用した場合のIPCの変動を示す.各トレースはIPCに対して降順にソートされている.

図は本論文より引用

flag-regおよびbranch-regsを通じて分岐命令の依存関係が考慮されることによって引き起こされるIPCの低下が最も大きな影響である.しかしFetcherを切り離すことによって,分岐予測器とBTBが正確であれば分岐の実行が遅延されることの悪影響を隠ぺいできる.さらに,フロントエンドおよびバックエンドでの他のストールも,分岐の遅延によるペナルティが露呈するか否かに影響する.

図3は,branch-regsとflag-regの改善による速度低下を示している.トレースは,分岐のMPKIが低いものから高いものへとソートされている.これを見ると,分岐のMPKIとIPCの向上に対して完全な相関は期待できないことが分かる.しかい分岐のMPKIが大きくなるにつ入れて,改善による速度低下も大きくなっていることが分かる.

base-updateの改良

この改良は,ベースレジスタのアップデートのタイミングを,メモリ演算の完了を待つのではなく,ALU演算のレイテンシ後に利用可能にする.図4は,これによって達成された高速化を示しており,base-updateを行うロード命令の割合が増えるにつれて,高速化が進むことを示している.

図は本論文より引用

コールスタックの改善

図5は,この改善により関数リターンのMKPIがどのように改善するか,およびその結果生じるIPCの変化を示している.図に示すように,この問題はキロ命令あたりのリターンの予測ミス数が他のトレースよりも1桁多いサブセットにのみ影響し,IPCが約7%から3%程度向上した.

図は本論文より引用

mem-footprintの改善

元のワークロードのメモリフットプリントを ChampSim に正確に伝えるための重要な制限は、 ChampSim トレースフォーマットにメモリアクセスサイズがないことである。

ChampSimのトレースフォーマットにメモリアクセスサイズが無いことによる制限を改善する.しかし,これに影響する命令(キャッシュラインを跨いでアクセスするような命令)はわずかに0.3%に過ぎず,この改善は性能向上に大きな影響を与えない.

mem-regs の改善

この改良は、CVP-1 のトレースにおいて、デスティネーションレジスタを持たないメモリ命令である命令の 9.4%に影響し、この命令には、改良したコンバータは何も追加しない。また、複数のデスティネーションレジスタを持つロード命令である命令の 5.2%に影響し、この命令には、改良したコンバータが保持するようになった。影響を受ける命令数から、この改善は性能に大きな影響を与えると予想される。

この改善は,書き込みレジスタを持たないメモリ・アクセス命令の9.4%に影響,および複数の書き込みレジスタを持つメモリ・アクセス命令の5.2%に影響をするものであるが,実際にはそれほど大きな影響を与えない.これは,最後の命令のみが偽の依存関係を導入しているため,性能への影響がごくわずかであるためである.