後藤弘茂のWeekly海外ニュース
AIアクセラレータコアをFPGAに組み込んだXilinxの新カテゴリ「Versal」
2019年9月30日 11:00
FPGAにCPUコアとAIアクセラレータを組み合わせたVersal
FPGA(Field-Programmable Gate Array)ベンダーのXilinxは、まったく新しいカテゴリの製品「Versal」を発表した。Versalは「ACAP(Adaptive Compute Acceleration Platform)」とXilinxが呼ぶ、マシンラーニング(機械学習)や5Gにフォーカスした製品だ。Xilinxは、8月に米スタンフォードで開催されたチップカンファレンス「Hot Chips」において、Versal ACAPの概要を説明した。
ディープラーニング(深層学習)ブームで、FPGAもニューラルネットワークアクセラレータとしてデータセンターに浸透した。Xilinxは、その波に乗って、FPGAをベースにしたより機械学習に最適化した製品を送り出す。
Versalは、FPGAとCPUコア、そしてAIアクセラレータエンジンの3種類のハードコアを搭載する。FPGAは、さまざまなハードコアを搭載して来たが、ACAPはそれを押し進めた製品カテゴリとなっている。FPGAはコンポーネントの一部となり、多数のAIアクセラレータコアが重要なコンポーネントとなっている。
ACAP初の製品であるVersal VC1902は、TSMCの7nmプロセス「7FF」で製造される。性能CPUコアをデュアルで搭載し、AIエンジンコアも400個搭載する。トランジスタ数は37B(370億)で、オンダイメモリはトータルで855M-bit、I/O数は785、SerDesが44と贅沢な構成となっている。
プロセッシング部分はスカラエンジンとプログラマブルエンジン、AIエンジンの3種類。スカラエンジンとして「Cortex-A72」デュアルコアと「Cortex-R5」デュアルコアを搭載する。
FPGA「Versal Programmable Logic(PL)」は1.8MFLOPSで900K LUTs(LookUp Tables)の構成で、158MBのBlock RAM(BRAM)とUltraRAM(URAM)を分散して配置する。FPGA部のDSPアレイはFP32/16 浮動小数点演算とINT8/16/24、CMPLX18の固定小数演算をサポートする。FP32でのピーク性能は2.8TFLOPS、INT8では11.8TOPSとなる。
メッシュネットワークでタイル構成されたAIエンジン
AIエンジンコアは400コアで、トータルのピーク性能は8-bit整数(INT8)で133 TOPS。AIエンジンは、メッシュネットワークで接続されており、タイル状に配置されている。各コアにL1メモリとDMAエンジンが分散されている。
各AIコアの内部は、32-bitのスカラRISCプロセッサベースのスカラユニット、512-bit SIMD(Single Instruction, Multiple Data)のベクタユニット、3個のアドレス生成ユニットがある。命令セットアーキテクチャはVLIW(Very Long Instruction Word)。ベクタユニットは、INT8なら1サイクルにvec128の演算が可能という。
INT8のvec128で1サイクルだと、512-bitというベクタ幅と計算が合わない。積和算を2オペレーションとして計算しているとも考えられるが、Hot Chipsの資料では128積和算(MACs)となっている。計算上は、400個のAIエンジンのvec128を各サイクルに積和算で2オペレーションとして、1.3GHzで動作させると133TOPSとなる。
各AIエンジンは、2ロードユニットと1ストアユニットを備える。コアユニットのメモリは、ローカルメモリが32KBで、4コアで共有のアドレッサブルメモリが128KB。また、16.3MBのL2 SRAMが共有されている。AIコア部はオンダイのメッシュネットワークで接続されている。
広帯域のNOC(Network-on-Chip)にAIコアメッシュとプログラマブルロジックがそれぞれ接続されており、NOCはDRAMインターフェイスにも接続されている。AIコアはそれぞれDMAエンジンを持ち、データをコアからコアへと受け渡すストリームベースの処理ができる。
アクセラレータインターコネクトの「CCIX」に対応
スカラエンジンの「Versal Processor System (PS)」は、Cortex-A系コアとCortex-R系コアのヘテロジニアスマルチコア構成。今回は、Cortex-A72がデュアル、Cortex-R5がデュアルの構成となっている。Cortex-R5がファンクショナルセーフティコアという位置づけだ。
また、PSに隣接して「Versal PMC and Security」が配置されている。これは、Platform Management Ctrl(PMC)とセキュリティを担当するユニットだ。
Versal NOCは、物理的には垂直方向の「Vertical NoC」と水平方向の「Horizontal NoC」となっている。ダイ中央部はプログラマブルロジック部で、ダイ上側がAIコア、ダイ下側がメモリインターフェイスなど、ダイ左右にI/O、ダイ左下にスカラプロセッサやプラットフォームマネージメントなどが配置されている。NOCはそれらのブロックの間を走るように配置されている。
メモリインターフェイスはDDR4/LPDDR4でx256インターフェイス。I/Oでは、PCI Express Gen4だけでなく、アクセラレータインターコネクトであるCCIXもサポート。CCIXでは、最高25Gbpsの2x8の構成が可能だ。CCIXによって、ホストCPU側と、メモリコヒーレントを維持した接続が可能となる。
汎用性の高いVersalのAIエンジン
Versalでは、演算ユニット自体も、ニューラルネットワーク向けプロセッサに多いマトリックス専用演算ユニットではなく、ベクタ演算ユニットを採用した。演算精度もFP32までサポートし、AIコアと呼びながらも、汎用性の高いコアとなっている。深層学習だけに専門化したコアではなく、シグナルプロセッシングなどにも適用可能だ。Xilinxは5Gワイヤレス処理をACAPで実現する場合の例を挙げた。
ACAPでのチャレンジは、プログラミング。Arm CPU、プログラマブルロジック、AIコアという異なる3つのエンジンにまたがる包括的なプログラミングのプラットフォームが必要となる。XilinxはそのためにAIコアのライブラリ等を用意する。AIコア間でのデータフローを自動生成できるコンパイラの準備もしているという。
FPGAを巡る状況の変化が生んだXilinxのVersal ACAP
半導体プロセスが複雑になるに連れて、FPGAの重要度は増してきた。現在では、比較的新しいプロセスでの半導体チップの設計と製造のコストは跳ね上がっており、以前のように簡単にASIC(Application Specific Integrated Circuit : 特定用途向けIC)を作ることができなくなっている。とくに、最先端プロセスとなると、よほど高価格で売れる製品でなければ、ASICを起こすことがコスト的に見合わない。
そのため、代替としてFPGAを最終製品に使う流れが定着して来た。以前なら、FPGAは製品試作のみで、最終製品にはASICを起こして使っていた。しかし現在では、FPGAをそのまま最終製品にも載せることが多い。そのほうが、ASIC設計コストをかけるよりも経済的だからだ。
また、ムーアの法則の鈍化とデナードCMOSスケーリングがほぼ停止したことで、汎用プロセッサの性能を引き上げることが難しくなった。そのため、性能を引き上げるポイントは、ワークロードに特化したドメインスペシフィック(Domain Specific : 領域特化)なアプローチとなった。データセンターなどでも、特定のワークロード領域に特化したアクセラレータの導入が活発化している。
こうした状況で、ハードウェアロジックをプログラマブルに変更できるFPGAは、多用途に使うことができるアクセラレータとして導入されて来た。Microsoftのように、データセンタに全面的にFPGAを導入して、深層学習ロジックなどをFPGAで実現した例もある。半導体プロセスの行き詰まりによって、FPGAはメインステージに躍り出た。
そうしたFPGAブーミングの過程で、FPGA自体も変化してきた。単純なプログラマブルロジックアレイではなく、CPUコアや高速メモリや高速I/Oのインターフェイスブロックをハードコアとして搭載するようになって来た。また、プログラマブルロジック自体も、より性能を追求した構造へと進化して来た。
XilinxのACAPは、そういった一連の流れの延長にある。高性能なアクセラレータを求めるデータセンタなどに、フレキシビリティを維持しながら性能を高めたソリューションを提供する。そのために、ハードウェアロジックをプログラマブルに組むことができるFPGAの利点と、ハードコアでのAIアクセラレーションの利点を組み合わせる。高コストなASICに対するフレキシブルな代替として、フレキシビリティが必要となる5Gシステムなどへのソリューションも提供する。