Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

StarFive の JH7100 の内部を覗いてみた

はじめに

昨日のブログでは、StarFiveのJH7000搭載のVisionFive AI について書きました。JH7000についても書きましたが、github に公開されているドキュメントやLinuxからどんな感じになっているのかがちょっとわかったので記録のために残します。

ブロック図

JH7000 のブロック図は、ここ にあります。説明のために、下記に引用します。

f:id:Vengineer:20211128132442p:plain

上記の図では、各ブロックがどのように接続しているかはよくわかりません。しかしながら、Memorandum -L2 Cache Coherence なる pdf ファイルで、各ブロックの接続が分かるようなページが公開されています。

一つ目は、下図です。説明のために引用します。図の上の真ん中の U74_MC なるブロックがあります。これは CPUコアの部分です。U74_MCは、NOC BUS 以外に、NNE50 と SG-DMA2P に Front Port で接続しています。Front Portは、ArmのACPのようなもので Cache を覗けるようになっています。NNE50はStarFiveが開発したNeural Network Engineです。SG-DMA2Pの実体は、SynopsysのDMA IP (snps,axi-dma-1.01a) のようです。

f:id:Vengineer:20211128132826p:plain

SG-DMA2P の詳細が下図です。説明のために引用します。U74MC4+S76というブロックの front0 と front1 が stg_top (DMA2P) と繋がっています。front0 と stg_mtrx_grp0 が繋がっていて、front1 と stg_mtrx_grp1 が繋がっています。stg_mtrx_grp1 が Master で stg_mtrx_grp0 が Slave になっていて繋がっています。stg_mtrx_grp0 には、E24(SiFiveのマイコン、Arm Cortex-M4に対応するもの)、USB 2 & 3 DRD、PCIe 0、SDIO 0、Secure Engine (sec_top)が繋がっています。stg_mtrx_grp1 には、PCIe 1、SG-DMA1P、SDIO 1、GMACが繋がっています。

f:id:Vengineer:20211128133402p:plain

上記の図の右側には下記のような表があり、どのIPがどこに繋がっているかがわかります。説明のために引用します。また、Coherencyの有無も書いてあります。Coherencyが有るのは、U74MCのfront portに接続しているものです。VP6(Tensilica DSP)、NNE50、ISP+VIN、GPU(Imagination)、VOUT、WAVE511(H264/H265 Decoder)、WAVE521(H264/265 Encoder)、JPEGは System Port 経由で NOC BUS 接続になります。

f:id:Vengineer:20211128134938p:plain

IP

Linux の dts ファイルを覗いてみると、各IPがどこのかが分かります。

  • CPU sifive, u74-mc
  • SDIO : Synopsys, dw-mshc
  • GMAC : Synopsys, dwmac
  • DMA : Synopsys, axi-dma-1.01a
  • QSPI : Cadence, sqpi-nor
  • UART : Synopsys, dw-apb-uart
  • SPI : Synopsys, dw-apb-ssi
  • I2C : Synopsys, designware-i2c
  • Video Encoder : cm, cm521-vpu
  • VIdeo Decoder : cm, cm511-vpu
  • JPEG : cm, codaj12-jpu-1
  • NVDLA : nvidia, nvlda_os_initial
  • DSP : Cadence, xrp (Tenlisica VP6)

それ以外は、StarFive が開発している IP のようです。

現時点では、Linux では、

は、サポートしていないようです。

Video Decoder/Video Encoder/JPEG は、どうやら、Chip & Media のもののようです。CHIP & MEDIAのIPリストにも載っていました。 GPUは上には載っていませんが、Imagination Technology の IMG BXE-4-32 が載っているようです。

おわりに

StarFiveのJH7100の中を掘ってみました。大物のIPはほぼすべて外部調達

  • CPU : SiFive
  • GPU : Imagination
  • DSP : Cadence (Tensilica)
  • NVDLA : Nvidia (OSS版)
  • Video Encoder/Video Decoder JPEG : Chip & Media
  • GMAC/SDIO/I2C/QSPI/SPI/UART : Synopsys

StarFive独自開発は、Neural Network Engine (NNE50)とその他もろもろのIPです。