ぎわやまのFPGAといろいろ

大学の研究室から発信中〜

Zynq UltraScale+ MPSoCの内部メモリと外部メモリについて概要

Xilinx FPGAのメモリについて勉強する。

BRAM・URAMと外部DDRメモリの違いなどが知りたい。(参考サイト

XilinxFPGA 内部のメモリ階層は(中略)、分散 RAM (Distributed RAM), BRAM (Block RAM), URAM (Ultra RAM) の 3種は FPGA 内に実装されています。

この”FPGA内”というのは次の写真の①のことかな。SoCのこと。

f:id:giwayama:20211014083751p:plain

 

3つをざっくり説明すると...

【内部メモリ(RAM)】

・分散RAM:LUT を使用し、係数の格納、ステート マシン、および小規模バッファーとして有効。

・BRAM:高速かつ柔軟なデータ ストレージおよびバッファリングとして有効。

・URAM:各ブロック 288Kb のストレージを提供し、またブロックを接続して大規模なオンチップ ストレージを構築できます。(引用元

 

内部メモリと比較して、外部メモリは次のようになっている(Zynq UltraScale+ MPSoCの場合)。

【外部メモリインタフェース】

Zynq® UltraScale+™ MPSoC には、プロセッシング システム内にハード メモリ コントローラーが含まれています。これらのデバイスは、32GB のアドレス可能なメモリをサポートできます。その他のメモリは、プログラマブル ロジック領域に追加できます。

f:id:giwayama:20211014130621p:plain

f:id:giwayama:20211014130653p:plain

上の表にある全てが搭載されるんじゃなくて、デバイスごとに搭載されるメモリは違うよね。

次に示すFigure3-1はMPSoCのブロックダイアグラムだけど、赤い円で囲った部分が「プログラマブルロジック メモリソリューション」のことかな。

(PSメモリソリューションはFigure2-1の②)

f:id:giwayama:20211014131331p:plain

Programmable Logic の中にはBRAMやURAMなどの「内部メモリ」がある、という認識でいいだろうか。

もっと詳しいことは...ZCU102の場合UG1182に書いてあるからいつか見よう。今日は概要だけつかみたい。

 

次に、研究している自己組織化マップのハードウェアについてVitisでSystem DIagramを見てみる。

f:id:giwayama:20211014120919p:plain

URAMはN/Aとなっているが、ビルド対象としたZCU102はURAMが使えない?

調べてみたら、使えるみたい。じゃあ単に利用してないのか。

f:id:giwayama:20211014122704p:plain

↓小さいので抜き出してみた

f:id:giwayama:20211014123210p:plainf:id:giwayama:20211014123315p:plain

UltraRAMは36Mb使えるみたい。

BRAMは最大で36Mbとなっていて、1つ36Kbだから865個で31140Kb。大体94.85%に近い値かな。

自分の書いたソースコードのうち、どの記述がBRAMを消費しているのか把握しよう。多分、カーネルで定義した配列はBRAM領域(=内部メモリ)を使うっぽい?

 

次に知りたいこと・疑問

・難しそうだけど、FPGAの内部メモリ(カーネル)とグローバルメモリ(ホストとカーネル共用のメモリ)のアクセス方法について知りたい。

・enqueueMigrateMemObjectsのおさらい