ひまわり

はやく人間になりたい

Untethered lowRISC(RISC-V)について

Untetheredとは簡単にいうと、”他のメインのプロセッサの支援を得ずに直にI/O使うことができる実装”のことである。
この理解についてはIRCで説明が流れていたので間違っていないはず。

これだけだと分かりづらいので、
まずlowRISCにおけるtetheredについてを説明する。

Tethered とは?

lowRISCは初期段階としてzedboardの上で実装された。
これがRelease version 0.1(tagged memory)である。

tagged memoryが何なのかはもう少し理解が進んだらまとめようと思う。

このversion 0.1がtetheredな実装で、zedboardはAll Programable SoC(AP SoC)(AlteraではSoC FPGA?)と呼ばれるZynq7000 AP SoCを搭載し、
これは、以下のようにARMコアを持つPS(Processing system)部とPE(Programable Logic)部に分かれている
PS部とPL部との接続にAXIが使われている(lowRISCはNASTI)。

Zynq-7000 All Programmable SoC Overviewより抜粋 f:id:himaaaatti:20160826203821p:plain

分かりづらいが上の大部分を占めているのがProcessing System。

RocketChip(lowRISC Chip)からとの関係の図をlowRISCより
zynq_struct

lowRISCのコアは、PL部に実装されI/O(メモリ、SDなど)はPS部経由でアクセスしている。
この利点は、
自前のメモリやI/Oのコントローラを実装しなくとも、AXIのバスを通じてアクセスができることや、 メモリを共有*1するため、lowRISCが起動する前に、BIOSに当たる処理*2を行うことができることで、 システムを一旦動かすことができるのでこの方法を選択したのだと思う。

そして、
このPS部に実装の一部を担わせるシステムの事を"tethered"と言うのだと自分は理解している。 

Untetheredとは?

以上のことより、
一旦の実装のTetheredから、メモリ、I/Oコントローラーを実装しプロセッサシステムとして独立したものを"Untethered"と呼んでいる。

この文章は間違いを含んでいる可能性があるので、コメントなどで訂正をもらえると嬉しいです。

*1:lowRISCからは後半の256MBしか見えないようだが、どこでこれを実現しているのかわからない。

*2:riscv-fesvr