データ・プリフェッチの技法であるBingoの論文を読んでいるので、概要をまとめる。
https://ieeexplore.ieee.org/document/8675188
評価
評価にはChampsimとよばれるシミュレーション環境を使用している。これはData Prefetching Championshipでも使用されたシミュレータで、各種様々な提案手法のプリフェッチャがこのシミュレータをベースに開発されているので、公平な比較がやりやすいというメリットがある。
評価のベースラインとしては、Xeon Processorに相当する以下の構成を想定した。
パラメータ | コンフィグレーション値 |
---|---|
Chip | 14nm, 4GHz, 4 cores |
Cores | 4-wide OoO, 256-entry ROB, 64-entry LSQ |
Fetch Unit | Preceptron, 16-entry, pre-dispatch queue |
L1-D/I | Split I/D, 64KB, 8-way, 8-entry MSHR |
L2 Cache | 8MB, 16-way, 4banks, 15-cycle hit latency |
Mani Memory | 60 ns, zero-load latency, 37.5GB/s peak bandwidth |
比較評価として、以下のプリフェッチャを同時に評価した:
- Best Offset Prefetcher (BOP, 2016): Sandbox Prefetcherを改良したもので、ジャストインタイムにプリフェッチを行うための改良が行われている。いくつかのオフセットを評価し、最もタイムリーなプリフェッチを発生させるオフセットを算出する。256エントリのBOPを用いて比較評価を行った。
- Signature Path Prefetcher (SPP, 2016): オフセットパタンのデルタを算出してシグニチャを計算し、デルタ予測の確率を推測する。確率を最適化することにより、SPPはプリフェッチの深さを調整することができ、DRAMモジュールとのバンド幅を最適化することができる。256エントリのSPPを評価し、シグニチャテーブルは256エントリ、パタンテーブルは512エントリ、プリフェッチフィルタは1024エントリ用意した。
- Variable Length Delta Prefetcher (VLDP, 2015): 複数のデルタ履歴を持つ最新の空間データ・プリフェッチャである。16エントリのデルタヒストリバッファを持ち、64エントリのオフセット予測テーブルを持ち、3種類の64エントリデルタ予測テーブルを持つ。
- Access Map Pattern Matching (AMPM, 2009): もう一つの最新の空間データ・プリフェッチャである。テーブル内の最近のアクセスしたキャッシュブロックを、Memory Access Mapに記録し、この情報に基づいてアクセスパタンのストライドを決定して将来のブロックを予測する。
- Spatial Memory Streaming (SMS, 2006): 強力な空間データ・プリフェッチャであり、SMSはフットプリントのメタデータをPC+Offsetに関連付ける。16Kエントリ、16-wayのヒストリテーブルを作成した。
まずはストレージ要件として、履歴テーブルの大きさに応じてどの程度性能が変わるのかについて計測を行った。Figure 6はその結果である。16Kエントリを超えるとカバレッジは頭打ちになるため、今回は16Kエントリを用意する。これによりプリフェッチャの総記憶容量は119KBとなり、LLC容量のわずかに6%となる。
次にミスカバレッジである。Figure 7.はカバレッジと過剰プリフェッチをすべての種類のプリフェッチについて調査している。
- カバレッジミス:プリフェッチャにより正常に捕捉されたデマンドミス
- 過剰プリフェッチ:不正確に生成されたプリフェッチ
Bingoはすべてのワークロードについて高いミスカバレッジを提供することができている。
複雑なアクセスパタンは、単純なデルタベースのアプローチでは捉えることができず、SSHベースの空間プリフェッチャ(BOP, SPP, VLDP)は、高いミスカバレッジを提供できないという問題がある。また、過剰予測に応じてプリフェッチをスロットリングするタイプのプリフェッチャ(BOP, SPP)では、ミスカバレッジも低下させてしまう。
フットプリントのメタデータを維持するタイプであるAMPMとSMSは非常に高いカバレッジを提供するが、SMSはAMPMよりもアグレッシブであるため過剰プリフェッチとなる。
次に、システム性能について考える。Figure 8.は、Bingoはすべてのベンチマークについて大きな性能向上を示している。
次にパフォーマンス密度について考える。パフォーマンス密度というのは、プリフェッチャが消費する回路面積オーバヘッドに対して性能向上がどの程度であったかという比率である。これは特に組み込み要素のCPUにおいて重要である。Figure 9はパフォーマンス密度を評価したものになっており、Bingoは高い性能向上を達成するが、メタデータテーブルが他のプリフェッチャと比較して回路面積が大きい。それでもBingoは他のプリフェッチャと比較して最も高い性能密度を達成している。