自作CPUのキャッシュについて,VIPTを導入して実装を開始した.
論理合成時に気になるのは,フォワーディングパスから,早期Wakeupのための信号が直結しておりそれによりクリティカルパスが大きくなっているという点だ.
今のところ見えているのは,フォワーディングチェックをしてから,そのままMispredictionにつながるパスだ.これは1サイクルで完結しており,かついろんな場所へのフォワーディングチェックが入っている.
これは,フォワーディングに失敗するとどっちにしろ立ち上げないといけない信号なので省略はできない.
ではどうするか?1サイクル前に立ち上げるのは,物理アドレスが確定していないので使えない. 単純に考えると,早期WakeupとMisprediction通知,実書き込みをさらに1サイクル遅らせることによることだが,せっかくVIPTでパイプステージを切り詰めているのに,もったいない気がする.
うーん,しかしやむを得ないかな.VIPTの導入でクリティカルパスを切り詰められているということで,1ステージ伸ばすのもやむを得ないかもしれない.