FPGA開発日記

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

フェッチ能力向上させるための種々の技法

現在作成している自作CPUは、簡単な命令キャッシュを持っており、キャッシュの空き容量が十分になると次の命令のフェッチにかかる。 現在の構成の問題として、そもそも128ビットの命令列をフェッチするためには、

  • AXIへリクエスト発行
  • AXIからレスポンスあり(最短1サイクル)
  • 命令キャッシュへ格納

の3ステージであり、これを単純なステートマシンで作成してしまうと、 128/3となり1サイクルあたり1命令と半分しかパイプラインに命令を供給できない。これではシングル発行のパイプラインとなんら変わらないので、 AXIのレスポンスがあれば、命令キャッシュへの格納と同時に次の命令列をフェッチ 命令キャッシュ中にすでに命令が残っていればそもそも発行しない 分岐予測 という方法が考えられる。 2番目のそもそも発行を抑えるという操作は、AXIアクセスが発生しないので一番効果がある。

これにより、最内ループで常に命令キャッシュにヒットするならば、パイプラインを使い切るための128ビット/サイクルでの命令供給が可能になる。