自作CPUのL1Dキャッシュアップデートポリシ再考、少し実装を始めた。なんか最近これしかやってないけど。
これまではMissUnitがL2へのリクエストを出し、L1Dキャッシュがレスポンスを受け取るようにしていた。 L1DキャッシュはMissUnitを検索して当該リクエストを出したエントリを探索し、そこから要求物理アドレスを取得して書き込んでいた。 しかし何となく効率が悪いので、L2からのレスポンスはMissUnitが受け取ってそのままL1Dに向けて書き込み要求を出すことにする。
L1Dに向けて書き込んだときのレスポンスとして置き換え対象のキャッシュラインを取得する。 そのキャッシュラインをL2に向けてストアするまでがMissUnitの役目となる。
とりあえず、簡単に実装したところでテストパタンを実行した。単純なものはPassできるが、複雑な仮想アドレスを使用するケースではFailしてしまう。もうちょっとデバッグが必要かな。