FPGA開発日記

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

自作CPUのVIPTキャッシュポリシ導入検討 (4. クリティカルパスの削減検討)

自作CPUのキャッシュについて,VIPTを導入して実装を開始した.

だいたい4ステージに分けて,なるべくクリティカルパスが発生しないように気を付けているつもりだが. 問題は,LSUの外から入ってきて,それがそのままLSUの外に出ていくようなパスを可能な限り避けるという点だ.

  • EX0: レジスタの読み込みと,命令の詳細をデコードする
  • EX1: レジスタの応答とアドレス計算.TLBへのアクセスとデータキャッシュへのアクセス.
  • EX2: データキャッシュのタグチェックと,各種ハザードのチェック.LDQ/STQのアップデート
  • EX3: ハザードが発生した場合のリプレイキューへの挿入,MSHRへの挿入

この時に,フォワーディングパスが入ってそのまま出ていかないかをチェックする必要がある.

はやめのウェイクアップについていくためには,以下のようなシーケンスになり,この時だけはレジスタに最新の値が入っていないのでフォワーディングが必要となる.

Wakeupとともに命令が発行され,ターゲットデータを受け取ると同時にアドレスを計算する
Wakeupとともに命令がReadyとなるが,1サイクル遅れることで同様にフォワーディングパスを使用する

それ以外の時は,一応フォワーディングをケアする必要はないはずだ.