FPGA開発日記

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

自作CPUの面積削減検討 (1. STQのフォワーディングパスの削減検討)

自作CPUの面積が結構大きいので、面積削減を検討していきたい。

まずはStore Queue(STQ)から。いろいろ見ていると、フォワーディングパスからストアデータの取得のための判定論理が大きいようだ。

STQは、ストア命令のアドレスとデータを保持して、データをキャッシュに書き戻すための情報を保持する。 ストアデータは、基本的には別の命令から生成されてパイプラインからフォワードされるか、物理レジスタから読んでくる。

フォワーディングパスを削除してしまうと、命令がコミットされるまでSTQにデータが保持されないことになり、ロード命令へのフォワーディングがサポートできなくて性能が落ちてしまう。 したがって、フォワーディングの検知はするのだが、データ自体は物理レジスタから読み込むように論理を変更してみる。 つまり、フォワーディングにヒットすると、フォワーディングパスから複雑な論理でデータを取得するのではなく、物理レジスタを読みに行く。これにより、フォワーディングパス全体を削減することができる。

面積の削減は以下のようになった:LUT 8400 --> 6438で、23%程度の削減だ。

性能的にも、Degradeすることはないかな?とりあえずこれで様子を見てみよう。

Original   : 118,822-cycle
STQ modify : 118,509-cycle