k0b0's record.

Computer Engineering, Arts and Books

メニーコアRISC-V 「Celerity」とBaseJump

 学生が開発したRISC-V メニーコアチップをwebで発見。

news.mynavi.jp

(以下はスライド : Celerity: An Open Source RISC-V Tiered Accelerator Fabric)

http://www-personal.umich.edu/~rovinski/pub/ajayi2017celerity.pdf

 「開発されたCelerityチップは5コアのRocketコア、496コアのVanilla-5コアとニューラルネットの畳み込み処理専用の10コアの合計511個のRISC-Vコアを集積している。Rocketコアとニューラルネットアクセラレータは625MHz、496コアのメニーコアチップは1.05GHzで動作し、DDR DRAMコントローラは400MHzクロックで動作させている。」

 この大規模な仕様の設計を28人の大学院生のみで開発して、わずか9ヶ月で設計を完了してテープアウット。少数精鋭で短期間開発、まさにスカンクワークスって感じだ。

 開発効率を高めるための設計方針

 ディジタル回路設計のお手本のような設計方針だ。

(詳しくは「ディジタル回路設計とコンピュータアーキテクチャ」の第1章を参照のこと。)

  1. 再利用
    - RocketやVanillaなどのRISC-Vコアを使用
    - Basejump(オープンソースIPライブラリ)を使用
    - RoCC(オープンソースオンチップコネクタ)を使用
  2. モジュール化
    - 最適化された部品(Basejump)を使い階層設計を採用
    - 最適化された部品を使うこと細かな部品の設計を省略(ブラックボックス設計)
  3. 自動設計
    - 高位合成を採用
    - 最適化されたIPを使用することで、結合テストのみで済むようにした
    - 実装とテストのフローを抽象化して、色々な設計に適用できるようにした。

Basejump

 注目したいのはBasejumpというIPライブラリ。NoCのようなネットワークルータの部品から、MUXや非同期FIFOなど、一通りの部品はそろっていて便利そう。

 System Verilog版のBasejumpはBaseJumpSTLとして以下で公開されてるみたい。Basejumpを利用して開発効率を上げるのはもちろんのことだけど、IPのコードを参考にして自分なりのIPライブラリを作っても面白いかも(?)

bitbucket.org