chiselで簡単なベクタ演算器を書いてみました

chiselで除算機を書いたので、次にメモリと少し複雑な制御論理を書く練習がしたくなりました。 最近、アレイ型演算機に興味を持っていたので、まずは1次元アレイ、すなわちベクトル演算機を書いてみることにしました。 ベクトル演算機も1命令で多数のデータを扱え、便利なので前から中身が気になってたんです。

以下レポジトリでコーディングしてみましたが、 設計なんかあったもんじゃなく、書き殴っただけなので、リファクタリングが必要です。 しかし、書いているとchiselは書きやすく、便利なものということがわかってはきました。 明らかにsystem verilogVHDLと比べると高位言語感がすごいです。

GitHub - moamoai/chisel_vectorprocessor

  • ブロック図は以下のイメージで作っています。
  • Load imm, Load, Store, Add instructionの単純な実装だけしました。

f:id:thira2:20200212211425p:plain:w500

追って実装したいこと

  1. Memoryの外部モジュール化 + ダンプ対応
  2. ベクタレジスタのメモリ化
  3. 各種レジスタ
  4. Controllerにfifoおき、複数命令列をキューできるようにする。full時は受け付けない。readyがemptyの役割
  5. Op(算術演算、Load/Storeなど)とFunc(+-*-など)で分ける。
  6. デバッグポート追加、トレース
  7. MasterとのInterfaceモジュールを追加し、様々な命令に対応できる下地を作る