FPGA開発日記

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

Delaying Physical Register Allocation Through Virtual-Physical Registers (2. 性能評価)

ちょっとベクトルレジスタについて似たようなアイデアを考えたので探して読んでみた。

前回の続き。

msyksphinz.hatenablog.com

  • Delaying physical register allocation through virtual-physical registers

https://ieeexplore.ieee.org/document/809456


4. 性能評価

評価にはSimpleScalar v3.0から派生した動的スケジューリング・プロセッサのサイクルベース・タイミング・シミュレータによって評価した。基本的なパラメータは以下のとおりである。

物理レジスタファイルが割り当てられているかどうかの識別は、リオーダバッファを検査し、実行完了ビットが設定されている最も若いエントリを取得する。

レジスタを要求する命令をi1、レジスタを奪われる命令をi2とする。i2によって割り当てられるVPレジスタ識別子はリオーダバッファから取得される。物理レジスタの識別子はPMTから取得される。

  • i1のVP書き込みレジスタ = VP1
  • i1のVP書き込みレジスタ = VP2
  • i2の物理書き込みレジスタ = P2

i1がi2の物理レジスタを削除すると、PMTが更新される。

  • VP1がP2にマップされる。
  • VP2はP2に関連付けられなくなる。

VP2は将来再実行する必要がある。

パラメータ
フェッチ幅 8命令
L1命令キャッシュ 32kB, 2-wayセットアソシアティブ、32Bキャッシュライン、1サイクルでヒット判定
分岐予測器 18ビットのGshare分岐予測器。投機的更新
Window size 128エントリ
機能ユニット(レイテンシ) 8つの単純な整数演算命令(1)、4つの乗算命令(7)、6つの単純な浮動小数点命令(4)、4つの浮動小数点乗算命令(4)、4つの浮動小数点除算命令(16)、4つのロード・ストア
Load/Store Queue 64エントリ、ストア・ロードフォワーディングをサポート
命令発行方式 アウト・オブ・オーダ発行。ロード命令は古いストア命令のアドレスが判明すれば発行される。
物理レジスタ 整数:40-160, 浮動小数点:48-160
L1-Dキャッシュ 32kB,2-wayセットアソシアティブ、64Bキャッシュライン、1サイクルでヒット判定
L2ユニファイドキャッシュ 1MB、2-wayセットアソシアティブ、64Bキャッシュ・ライン、12サイクルでヒット判定
メインメモリ 無限容量、50サイクルのアクセスタイム
コミット幅 8命令

ベンチマークはSpec95からいくつかのものを選択した。

4.2 性能統計

図4に、各ベンチマークにおける1サイクル当たりの平均コミット数(IPC)と、整数及びFPプログラムにおけるGeoMeanを示している。比較には3つの異なるレジスタ管理方式を使用している。

  • 従来の方式(conv)
  • オリジナルのレジスタ割り当てポリシによる仮想物理レジスタ (vp-ori)
  • 本提案のレジスタ割り当て方式 (vy-dsy)
図は本論文より引用

一般的にFPプログラムは整数プログラムよりもレジスタへの負担が大きいため、FPの方がより大きな性能向上の影響が出ている。仮想-物理レジスタ構成は、整数コードで平均5%、FPコードで平均24%の高速化を示している。

DSYでは、物理レジスタが盗まれた命令の割合は整数プログラムで5.26%、FPプログラムで11.76%となり、それぞれ9.79%, 57.75%の命令が再実行されたことになる。これは、FPプログラムはILPが高く、分岐ミス率が低いため、命令ウィンドウは通常埋まってしまうため、VPの方式はウィンドウ内の古い命令から最も離れた命令を物理レジスタに割り当てることができ、再実行回数が増える代わりに、ILPが向上する。

図5は、ロード命令が予備実行されたことによる影響を示している。これはキャッシュ・ミスしたロード命令の割合と、その中で再実行されたロード命令の割合を示している。FPのアプリケーションは若い命令が早期に実行されることによってプリフェッチの役割を果たしており、平均で28%の性能向上を示している。

図は本論文より引用

図6は、従来型の方式と仮想-物理レジスタ方式の両方について、物理レジスタ数を変化させたときにプロセッサ性能がどのように変化するかを示している。提案手法は、オリジナルの割り当てポリシおよび仮想ー物理割り当て方式のオリジナル版よりも常に優れた性能を達成できている。

図は本論文より引用

6. 結論

本論文では、物理レジスタの後期割り当てを可能にする新しいレジスタ・リネーム方式を紹介した。特に、物理レジスタは従来のプロセッサのようにデコード時に割り当てるのではなく、実行段階の最後に割り当てる。このスキームの直接的な利点は、レジスタ・プレッシャの大幅な低減である。

整数レジスタとFPレジスタの数をそれぞれ26%と24%削減し、従来の方式と同じIPCレートを達成できると評価した。このレジスタ数の削減は、今後登場するマイクロプロセッサの重要課題であるレジスタファイルへのアクセス時間の短縮につながり、大幅な性能向上が期待できる。

提案された方式には、間接的な利点もある。特に、分岐の早期解決とロード/ストア命令のデータ先取りが可能になる。さらに、スティール機能による命令の再実行は、再利用メカニズムによって非常に効果的に行うことができる。

この新しいレジスタ割り当て方針は、従来の遅延レジスタ割り当て方式よりも効果的であることが示された。スティールによるオンデマンド・アロケーションは、若いレジスタからスティールする場合に最大限の先読みを提供する。