自作CPUのキャッシュについて,VIPTを導入して実装を開始した.
何度も論理合成してクリティカルパスが消えるか試しているが,なかなかきつい.
- 複数のパイプラインで同時にメモリアクセスがあった場合,Forwarding,OoO チェックではどうにもできないのでパスを追加して検出する方法を導き出す必要がある.
- LDQ/STQのアップデートのパスは,ハザードの検出論理と混じると一気に重たくなるので後ろにずらす必要がある.
- LDQ/STQのアップデートは,物理アドレスの決定だけで決められるので,無駄なハザード信号を取り込まなくてもよい.
- Early Wakeup も EX1ステージで立ち上げるが,ここのハザード検出パスが大きい.これは正直もう少し簡略化してもいいような気がしている.
- 同じように,mispredictedの信号も重たいはずだ.EX2のハザード検出結果をそのまま出力している.
とにかく,LSUの外部から来たフォワーディングパスを,LSUの外にそのまま逃がすようなことをしてはいけない.