こんなツール,使っています
FPGAとVivadoで実現する高速データ処理
こんなツール,
使っています
1
はじめに
我々の社会はコンピュータによって支えられている.コンピュータは一般に,入力装置(キーボードやマウスなど),出力装置(ディスプレイなど),記憶装置,CPU (Central Processing Unit,中央処理装置=制御装置+演算装置)から成る(1),(2).コンピュータにおいて,データの処理,計算を担当するのはCPUである.しかし近年では特に,動画像処理,人工知能演算,ビッグデータ解析など,大量のデータを高速に処理することがより強く求められるようになってきており,CPUだけではこの要求に応え切れないケースも増えてきている.そのようなとき,処理速度を加速(アクセラレーション)するハードウェアアクセラレータが有用である.
ハードウェアアクセラレータとしては,最近ではNVIDIA社(3)のGeForceシリーズなどGPU(Graphics Processing Unit)が非常によく使われている.一方で,もう一つ有力なハードウェアとして,本稿の主役でもあるFPGA(Field-Programmable Gate Array)がある(2),(4).CPUやGPUなどがプログラムを実行するプロセッサであるのに対し,FPGAは論理回路の動作をエミュレート(模倣)しており,理論上はCPUやGPUより高速な演算を実現できる.
図1に各ハードウェアの特徴をまとめる.CPUはアクセラレータと比べると余り速くない.(なお,アクセラレータを使う場合,CPU−アクセラレータ間の通信に係る時間が発生するので,余り大量のデータを処理するのでなければ,CPUの方が速いことも多い.)GPUとFPGAとでは FPGAの方が速い.ただ,FPGAには一つ無視できない問題がある.CPUとGPUは共に開発環境が非常に整っており,Pythonなどを使えば,ハードウェアのことを一切意識しないで,それこそ,電子情報通信系の知識を持たない者でも,プログラミングを行うことができる.一方のFPGA は,開発環境が整っているとは言い難く,電子情報通信系の知識がない者では,その力を十分に引き出すことは難しい.とりあえず動くものは作れても,GPUより高速な演算を実現させることは困難である.
しかしそうは言っても,FPGAのポテンシャルはやはり無視し難く,世界最大級の半導体メーカ,Intel(5)と AMD(6)が2015年と2020年に,相次いでFPGAトップメーカであったAltera,Xilinxを買収している.そんな可能性のあるデバイスFPGAに興味を持った者のために,本稿ではその導入となる情報を与えるべく,FPGA開発ツールの一種であるAMD Vivado HLSを用いたデータ処理システム設計手順の一部を示す.

図1 ハードウェアの比較
開発は容易ではないが,高速処理を可能にするFPGA.
2
2HDL 〜 FPGA 開発言語
FPGA上での設計にはハードウェア記述言語(HDL: Hardware Description Language)がよく使われる.HDLは論理回路を記述するための言語で,一見,プログラミング言語みたいである.しかし,プログラミング言語が「まずはこれをやって」「次にあれをやって」と実行される手順を記述する,人間の考え方に近いところ