FPGA開発日記

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

ISSに分岐予測を実装する検討(1. 分岐予測の機構について)

f:id:msyksphinz:20160524232435p:plain

前回までで、ISSに命令キャッシュ、データキャッシュを実装する方法について検討し、実装した。

Verilog-HDLでCPUを実装するにあたり、まだまだ必要な機能はある。次は、分岐予測を命令セットシミュレータ(ISS)を用いて実装する機能について検討しよう。

分岐予測とは

これらはコンピュータアーキテクチャの書籍を参照すると解説を簡単に見付けることができるので、こちらを参考にして欲しい。

ヘネシー&パターソン コンピュータアーキテクチャ 定量的アプローチ 第5版

ヘネシー&パターソン コンピュータアーキテクチャ 定量的アプローチ 第5版

分岐予測の基本は、これまでに分岐したかどうかだ。

f:id:msyksphinz:20160923191242p:plain

上記の分岐予測の機構は、Hisa Ando氏の「プロセッサを支える技術」から若干引用させて頂いた。

プロセッサを支える技術  ??果てしなくスピードを追求する世界 (WEB+DB PRESS plus)

プロセッサを支える技術  ??果てしなくスピードを追求する世界 (WEB+DB PRESS plus)

これまでの分岐予測結果と、分岐結果から次の分岐結果を予測する機構だ。

必要なのは、

  • 当該分岐命令の「これまでの分岐結果(分岐結果ビットテーブル)」
  • 当該分岐命令の「これまでの分岐予測結果(分岐予測結果ビットテーブル)」

例えば、分岐予測に使用するアドレスが10ビットであるならば、分岐結果ビットテーブルのエントリは210ビット=1024ビットとなる。 分岐結果ビットテーブルが3ビットで構成されているならば、分岐予測ビットテーブルのエントリ数は2(10+3)ビットの8192ビットとなる。 分岐予測結果と、分岐結果の2つを利用して次の分岐結果を予測する方式だ。

分岐予測は、2ビットを保持する分岐予測機構だ。

f:id:msyksphinz:20160923192356p:plain

まずはこれらの、ISSにモデル化すべき分岐予測機構について仕様を確定させよう。 そしたら、次はISSへの実装となる。