FPGA開発日記

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

"Constable: Improving Performance and Power Efficiency by Safely Eliminating Load Instruction Execution" を読んでみる(2)

ISCA 2024で発表された「Constable: Improving Performance and Power Efficiency by Safely Eliminating Load Instruction Execution」という論文を読んでみることにする。

arxiv.org

どうやら Best Paper Awardはこの論文がとったらしい。

イントロダクションからまとめていく。時間が無いので少しずつ。


msyksphinz.hatenablog.com

2. Background

命令レベルの並列性(ILP)を高めることは、現代の高性能プロセッサの設計において不可欠である。しかし、ILPはデータ依存とリソース依存によって制限されることが多い。特に、ロード命令はこの制限の主要な原因となっている。

ロード命令は、通常の非メモリ命令よりも実行に時間がかかる。これは、ロード命令がアドレス計算とデータ取得という二つの操作を行うためである。このため、ロード命令に依存する他の命令はしばしば複数サイクルの遅延を引き起こし、ILPを制限する。また、ロード命令はリザベーションステーションエントリ、アドレス生成ユニット(AGU)ポート、L1データキャッシュの読み取りポートなど、複数のハードウェアリソースを消費する。これらのリソースはスケーリングが難しいため、ロード命令はリソース依存を引き起こし、パイプライン内での命令実行を制限する。

図は本論文より引用

従来の技術であるロード値予測(LVP)とメモリリネーミング(MRN)は、データ依存を軽減するためにデータ値を予測し、推測実行を行う。LVPはロード命令の値を予測し、その予測値を用いて依存する命令を実行する。一方、MRNはストア命令とロード命令の依存関係を学習し、ストア命令から直接データを転送することで依存する命令を実行する。しかし、これらの技術は予測されたロード命令を実行して予測値を検証する必要があるため、ハードウェアリソースが消費される。このため、LVPとMRNはリソース依存を軽減することができない。

このように、従来の技術ではロード命令のデータ依存を軽減することはできるが、リソース依存を軽減することはできないため、さらなる性能向上の余地がある。

3. Motivation and Goal

ロード値予測(LVP)とメモリリネーミング(MRN)は、ロード命令のデータ依存を軽減することにより、命令レベルの並列性(ILP)を向上させる技術である。しかし、これらの技術はロード命令自体の実行を必要とし、その結果としてリソース依存を軽減できないという課題がある。

具体例を用いて説明する。LVPがない場合、ロード命令I1はロード実行ユニットに送られ、I2命令はリソースの制約により遅延する。LVPを使用すると、I1とI2は予測された値を使用して実行されるが、リソース依存によりI2の実行は依然として遅延する。もし、ロード命令I1の実行を排除できれば、I2は早期に実行され、さらなる性能向上が可能となる。

図は本論文より引用

従来のLVPとMRNはデータ依存を軽減するが、ロード命令自体を実行するため、リソース依存を軽減することができない。これにより、LVPとMRNを用いても性能向上の限界が存在することが示される。

本研究の目標は、ロード命令のデータ依存とリソース依存の両方を軽減することで、ILPを向上させることである。このために、新しい手法である「Constable」を提案する。Constableは、ロード命令の実行を安全に排除することで、パイプラインリソースを効率的に活用し、全体的な性能向上を目指す。