ICAP、PCAP、MCAP

XilinxのFPGAをパーシャルリコンフィグで書き換えるモジュールとしてICAPってのがしばしば登場する。

そういえば、ZYNQのときはPCAPだったよなぁ、PCIeにはMCAPが付いてたよなぁと思いながら、これ以外に「なんとかCAP」(以後、xCAP)ってあるんだっけ?とか思いつつ、調べてみた。

ICAP、PCAP、MCAPはそれぞれInternal Configuration Access Port、PCAPがProcessor Configuration Access Port、Media Configuration Access Portの略である。

MCAPはなぜMedia-CAPなのか、どこからこのネーミング何だろう?と思ったけどPCIe-CAPとできなかったから苦し紛れのMediaなんだろうなぁと思っている。

それは別に良いとしてこのxCAPはFPGAをコンフィグレーション後にFPGAロジックからFPGAコンフィグレーション機能にアクセスモジュールである。

ICAPはFPGA領域に実装されている。

単なるFPGAデバイスでパーシャルリコンフィグをするときはICAPを使ってFPGAロジックがリコンフィグ領域を書き換えたりする。

逆にプロセッサが実行されているデバイス、ZYNQ系のデバイスはPCAPが実装されて、ARMからFPGAコンフィグレーション機能にアクセスすることができる。

VitisなどのフレームワークはLinux環境のXRTというランタイムでPCAPからPL領域を書き換えたりしている。

MCAPはUltraScaleから登場したモジュールでPCIeのハードウェアマクロにくっついている。

ALVEOなど、FPGAデバイスがPCIeバス上ですでに認識していていれば「PCIe→稼働中のFPGAロジック→ICAP→リコンフィグ領域」という経路でFPGAを書き換えるのではなく、「PCIe→リコンフィグ領域」へと直接書き換えることができる。

xCAPはこんな感じなのでプロセッサが載っていなくてUltraScaleでPCIeがないデバイス、Virtex、KintexやUltraScale+(PCIeが無いデバイス、UltraScaleでPCIeがないデバイスってあったかな?)はICAPしか存在しないことになる。

ICAPはFPGAロジックからアクセスするのでICAPE3のようなモジュールがあるけど、PCAP、MCAPはFPGAロジックから直接アクセスできないため、モジュールはない。

私は最近、ICAPは使わなくなったもののPCAPやMCAPは何気によく利用していて、おそらく、FPGAのいくつかあるハードマクロ(MMCMやPCIe、GTYなど)のマクロのうちxCAPを一番、よく利用していると思う。

write: 2021/01/20/ 00:00:00