CPU実験終了、追記

あとで班wikiにまとめると思いますが、一般向けに簡単に我が班のCPUの特徴を。
(足りてなかったらごめんなさい)

  • 四段パイプライン(命令フェッチ&レジスタ読み込み、デコード&実行(ALU)、実行2(FPU)&SRAMアクセス、レジスタ書き込み)
  • 歴代二位(多分)の動的命令実行数
  • 命令は32bit長、3オペランド
  • IPC(instructions per clock)が異様に高い(0.97とかだったはず)
  • 「絶対当たる命令キャッシュ」という名のプログラムROM(16kwords上限)
  • データキャッシュなどというものはなく、レイテンシ2でSRAMにLOAD/STOREを行う
  • 分岐命令は条件、無条件に依らずデコード&実行段から何故か次の命令までに間に合うので、分岐予測をしなくても100%当たる
  • レジスタはBlockRAMを二つ使用し、1clkに読み書きが両方行える
  • 汎用レジスタへの書き込みレイテンシは2であるが、LR(link register),JR(jump register),比較分岐用特殊レジスタに関してはレイテンシ1で書き込みが行える
  • ハードウェアでの依存関係判定は行わないので、NOPを予め必要な場所に入れておかなければならない
    • ただしソフトウェアスケジューラである程度は埋められる
  • FPU命令のうち、加減乗は全て1clkで収まる
    • 乗算、平方根は数クロックかかる(その間他の命令は実行できない)
    • floor,itof,ftoiはソフトウェア実装
  • I/O命令はRS232C
    • 実はflow controlもこっそりできてたりする

やはり50MHzで100MHzの記録と互角に戦えたという点が大きいと思う。
よくも悪くも1位というのは重要な存在であって、三年生が一位の班のみの情報を得て、他の班の有意義な情報が欠如するということが起こりにくくする上でもこの記録は大きいことであると感じる。やはり可能性は広く持って欲しいものである。
記録を更新するためには100MHzより早いものを出すのも確実であるが、そうでなくてもIPCを上げる(うちではやっていないがスーパスカラとかVLIWとか)ことで十分記録更新は望めると思う。もちろんクロック周波数を上げられることはすごいことなんだけど、どうも100MHzよりも上は運の領域が大きすぎるように感じる。