FPGA開発日記

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

自作CPUのVIPTキャッシュポリシ導入検討

現在の自作CPUは,キャッシュのポリシとしてPIPTを採用している. PIPTというのは,Physically Index, Physically Taggedのことで,物理アドレスを使用してキャッシュのインデックスを参照し,物理アドレスを使用したタグの比較を行う.

これのメリットは,LSU内のデータパスを,

  • PIPT : レジスタアクセス → アドレス計算 → 物理アドレスへ変換 → キャッシュアクセス

というのを,VIPTは

  • VIPT : レジスタアクセス → アドレス計算 → 物理アドレスへ変換
  • VIPT : アドレス計算 → キャッシュアクセス → 物理タグの比較

とすることで,LSU内のクリティカルパスを削減することができる.

で,単純にデータキャッシュのポートを全部このように変えればよいわけではなくて,一部はVIPT,一部はPIPTで作る必要があるように思う.

  • LSUパイプラインからのアクセス:VIPT
  • スヌープ用のポート:PIPT
  • PTW用のポート:PIPT
  • MSHRからの読み込みポート:PIPT
  • Store Bufferからの読み込みポート:PIPT

とする必要があると思う.PIPTを用意しなければならない場所は結構あって,かついくつかのポートはマージできそうな気がしているので,この辺の調整をしていけばいいのだと思う.