Skip to content
HORIE Tetsuya edited this page Jun 22, 2018 · 8 revisions

Rocket Chip ソースコード解析

解説資料

http://www-inst.eecs.berkeley.edu/~cs250/fa13/handouts/lab2-riscv.pdf

パッケージ構成

構成については、READMEを参照。

読むべきパッケージ

フォルダ 内容
src/main/scala/rocket/ CPUのコア実装
src/main/scala/tile/ CPUのインターフェイス的な定義はここ

Rocket Chip core

src/main/scala/rocket/

にあるので、まずはここを読む事。

ファイル一覧

ファイル名 内容 優先順位
ALU.scala 算術演算装置(割と簡単) 2
AMOALU.scala アトミック命令版算術演算装置
BTB.scala Branch Target Buffer, Return Address Stack等
Breakpoint.scala
BusErrorUnit.scala
CSR.scala Control Status Register関連
Consts.scala 命令コードのデコード用の定数
DCache.scala データメモリ用キャッシュ
Decode.scala 命令デコード?
Events.scala ???
Frontend.scala プログラム・カウンタ、命令のフェッチ処理   2
HellaCache.scala ?
HellaCacheArbiter.scala
IBuf.scala ??
ICache.scala 命令メモリ用キャッシュ
IDecode.scala 命令のビットパターンと内部表現の対応表定義
Instructions.scala 命令のビットパターン。Control Status Register関連定数
Multiplier.scala 乗算器(パイプライン版と分かれている)
NBDcache.scala Non Blocking データキャッシュ?
PMP.scala ???
PTW.scala ???
RVC.scala 圧縮命令用?
RocketCore.scala Rorcketコアのトップ(ここから下位モジュールを読む) 1
ScratchpadSlavePort.scala ??
SimpleHellaCacheIF.scala ?
TLB.scala Translation Lookaside Buffer
TLBPermissions.scala

Tile

CPUを外部と繋げる部分。Rocket coreのインターフェイスもここで定義

src/main/scala/tile/