Reconfigurable computing
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Reconfigurable Computing(再構成可能コンピューティング)は、高度に柔軟なコンピューティング構造によるコンピュータ処理である。一般的なマイクロプロセッサを使った場合との根本的な違いは、制御フローに加えて実際のデータ経路を変更する能力があることである。
目次 |
[編集] 歴史と特性
Reconfigurable Computing の概念の発祥は1960年代ごろ、Gerald Estrin の記念碑的論文で一般的なプロセッサに「再構成可能な」ハードウェアの配列を接続したコンピュータの提案をしたのが最初である。メインプロセッサは再構成可能ハードウェアのふるまいを制御する。再構成可能ハードウェアは画像処理やパターンマッチングなどの特定のタスクを実行するよう可及的速やかに仕立てられる。タスクが完了したら、そのハードウェアは別のタスク向けに構成し直される。これによってコンピュータはソフトウェアの汎用性とハードウェアの高速性を兼ね備えたものとなる。しかし残念なことにこのアイデアは時期尚早であり、当時の電子回路技術では実現不可能だった。
ここ十年の間に、この分野の研究は再び活気を帯びてきた。産業側でも学究側でも様々な再構成可能なアーキテクチャが開発された。たとえば、Matrix, Garp, Elixent, XPP, Silicon Hive, Montium, Pleiades, Morphosys などである。これらのデザインが可能となったのは、半導体技術の進歩によって複雑なデザインをひとつのチップに実装できるようになったためである。世界初の再構成可能な商用コンピュータ Algotronix CHS2X4 は1991年に完成した。これは商業的には成功したとは言えないが、ザイリンクス社(FPGAの発明社)はこの技術と Algotronix の技術者を買い取った[1]。1996年、シーモア・クレイが最後に設立した会社である SRCコンピュータ社は、IMPLICIT+EXPLICIT アーキテクチャと MAP プロセッサに基づいた再構成可能な商用コンピュータシリーズを発売した[2]。2004年、クレイ社は OctigaBay 社とその再構成可能なコンピュータを買収した。これを現在クレイ社は XD1 として販売している[3]。SRCもクレイも Estrin 風のハイブリッドなコンピュータであり、普通のマイクロプロセッサとユーザがプログラム可能なFPGAが組みになっている。SRCのコンピュータもクレイのコンピュータもFPGAを使わないで単なるクラスタ型コンピュータとして使うことができる(実際、XD1 では FPGA はオプションである)。XD1のFPGA再構成は従来からのHDL (ハードウェア記述言語)による設計フローに従ったもので、いくつかのサポートAPIライブラリが付属している。XD1 プログラマーガイドには、「生のFPGAロジックファイルの開発は複雑なプロセスで、特別な知識とツールを必要とする」とある。対照的に SRC の Carte コンパイラはC言語やFORTRANのような高級言語であり、少し修正するだけで FPGA とマイクロプロセッサの両方を使ったコードが生成される。SRC の文書には、「アプリケーションのアルゴリズムは C や Fortran といった高級言語で記述される。Carte はコードから並列性を最大限に引き出して、MAP上に実装されるパイプライン化されたハードウェアのロジックを生成する。また、MAP とマイクロプロセッサ間のデータ入出力に関するインターフェイスコードを生成し、マイクロプロセッサが MAP 上のロジックを使えるようにする」(SRC は従来のHDLフローも使えるようにしている)。XD1 は FPGA とマイクロプロセッサ間を RapidArray という相互接続ネットワークで結んでいる。SRC システムでは SNAP メモリ・インターフェイスと(オプションの)Hi-Bar スイッチで通信する。しかしながら2006年現在SRC MAP、Cray XD1ともにFPGAを利用しなければならない実用アプリケーションが動作したという報告は存在しない。
[編集] 用語
- Reconfigurable Device(再構成可能なデバイス)
- FPGA、あるいは実行中に機能を変更できる何らかのデバイス。再構成可能なデバイスは粒度の細かいアーキテクチャかもしれないし、中程度の粒度のアーキテクチャかもしれない。プロセッシング要素の機能とそれらをつなぐ相互接続を全て再構成可能なら、そのハードウェアは再構成可能なデバイス(あるいはアーキテクチャ)と言うことができる。
- Bitstream(ビットストリーム)
- FPGAを構成するファイル(拡張子は .bit)。実行準備ができたら Bitstream が FPGA にロードされる。配置と経路のフェーズの最終結果として生成される。
- Common Memory(共通メモリ)
- 一種の共有メモリ。複数のFPGAを搭載したボード上のメモリを指し、FPGA間の直接通信やFPGA以外との通信に使われる。
- Compile/Compilation(コンパイル)
- この用語はマイクロプロセッサ上で動作するコードに関して使うべきである。それにはプロセッサ上で動作するFPGAのシミュレーションやエミュレーションも含まれる。一方、この用語を再構成可能なデバイスの合成のプロセスと配置と経路の生成にも使っている例もある[4]。
- Cocompilation(共コンパイル)
- ソフトウェアのコードとコンフィグウェアのコードを生成するコンパイルを意味する。自動的なソフトウェア/コンフィグウェアの分割も含む[5]。
- Configware(コンフィグウェア)
- Configuration(構成)
- 現にFPGA上にロードされている Bitstream を指す。もっと大まかに言えば、基板上の部品やチップを意味することもあるし、再構成可能マシン全体の構成を意味することもあるが、現在の文脈では関係ない。
- Cycle accurate simulation(サイクル精度のシミュレーション)
- FPGAのクロックレベルの動作を正確にシミュレーションするものであり、クロックパルスの上がり/下がりのタイミングに従ってデータの変化を記録する。
- Emulation/Simulation(エミュレーション/シミュレーション)
- シミュレーションあるいはモデリング。FPGAハードウェアのふるまいを通常のプロセッサを使って真似るプロセスである。
- High Performance Computing (HPC)(高性能計算)
- 高性能組み込みコンピューティングあるいは並列コンピューティング。並列コンピューティングはマイクロプロセッサ群によるものか Reconfigurable HPC によるもの。Reconfigurable HPC とは FPGA群か rDPA 群を使ったもので、計算時間がかかり、並列化して実装できるアルゴリズムが特徴である。
- Hybrid(混成)
- この文脈では Hybrid とは、ノイマン型コンピューティング(命令をメモリから読み込んで実行)と再構成可能コンピューティング(実行時に命令をフェッチしない)の共生である[7]。
- On-chip memory(オンチップ・メモリ)
- Block RAMやキャッシュ。この用語はひとつのチップ内に存在するメモリを指す(BlkRAM か SRAM)。キャッシュという用語は通常のマイクロプロセッサについてのみ使用すべきである。
- Aggregate On-chip memory(オンチップ・メモリの合計)
- マルチFPGAシステムでのオンチップ・メモリの合計を指す。
- Local Memory(ローカルメモリ)
- DRAM, SRAM, QDR, DDR SRAM, ZBT RAM。この用語は FPGA や rDPA に直接接続される外部メモリに使用すべきものである。チップ内にある場合はオンチップ・メモリと呼ばれる。
- Reconfigurable Computing(再構成可能コンピューティング)
- FPGA、rDPA、マイクロプロセッサを混成させてデータを処理するコンピューティングパラダイム。プログラム実行中やプログラム実行前に Bitstream を変更できる。
- Reconfiguration(再構成)
- 構成、プログラミング、再プログラミング(Configwareを参照)
- System Memory/Host Memory(システムメモリ/ホストメモリ)
- マイクロプロセッサのマザーボード上のメモリ。
- Reconfigurable Computer(再構成可能コンピュータ)
- マイクロプロセッサとそのメモリ、およびFPGAや rDPA とそのメモリから構成されるコンピュータ。
- Synthesis(合成)
- HDL (Hardware Description Language), HLL (High Level Language), GUI (Graphical User Interfaces)を使って記述されたロジックの netlist を作るプロセス。
- Place and Route(配置と経路)
- netlist をFPGAや rDPA の物理的構造に変換すること。これによって Bitstream が生成される。
[編集] 粒度
再構成可能ロジックの粒度は最小機能ユニットのサイズで定義され、マッピングツールで扱う単位となる。粒度が細かいとアルゴリズムをハードウェアに実装する際の柔軟性が増す。しかし、細粒度では消費電力が増加し、経路変更に時間がかかるため、再構成による遅延が大きくなる。細粒度アーキテクチャはビット単位の操作が可能だが、大雑把な粒度ではより一般的なアプリケーション向きに最適化されている。粒度が大きいアーキテクチャの問題点は計算対象が小さいと使われない回路要素が出てくる点である。例えば、1ビットの加算を4ビット幅の機能ユニットで構成すると3ビット分無駄にすることになる。この問題は粒度の粗いものと粒度の細かいものを混合した構成にすることで解決できる。
粗い粒度のアーキテクチャでは、ワード幅のデータパスを必要とするアルゴリズムを実装することを想定している。このため、細かい粒度の機能ユニットで同等機能を実現した場合に比べて消費電力も性能も有利である。中には一般的な特定のアルゴリズムを実装済みで、それに限定された修正を加えるための機能ユニットが付属したタイプのデバイスも存在する。
[編集] 再構成の頻度
再構成は実行中あるいは実行と実行の間に行われ、それを deployment time(配備時間)と呼ぶ。deployment timeの間に bitstream を使ってデバイスを再構成する。細粒度のシステムは前述した通り経路接続が多くなるために再構成に時間がかかり、消費電力も増える。また、再構成の頻度が少なければ、消費電力的にも遅延時間の面からも有利となる。部分的に再構成を行いつつ、同時に再構成していない部分で計算を続けるということもあり、その場合は消費電力もあまり増えないし遅延も最小に抑えられる。bitstream を圧縮することも原理的には可能であるが、データを伸長する際の計算にかかる時間と電力を考慮すると効果はそれほど大きくは無い。
[編集] ホストとの接続
再構成可能デバイスはホストとなるプロセッサに接続してアクセラレータとして使われる。どのような構成が最適かを考えるには、データ転送の種類、遅延時間、電力、性能向上の度合いを考慮する必要がある。最も直感的なデザインとしては、コプロセッサを接続するようなバスで再構成可能デバイスを接続する方法がある。しかし、中にはホストプロセッサのレジスタに再構成可能デバイスが直接アクセスできるような密な接続をした例もある。ホストプロセッサは再構成可能デバイスの機能を呼び出したり、再構成を行ったり、外部とのインターフェイスを受け持つ。
[編集] ルーティング/相互接続
再構成可能デバイスの柔軟性は、主にその相互接続のルーティングによるものである。FPGAのベンダーであるザイリンクスやアルテラの相互接続のスタイルは、アイランド(島)型のレイアウトであり、二次元の配列状に機能ユニットが並んでいる。不適切なルーティングをすると、柔軟性が損なわれ、資源が無駄となり、性能が制限される。相互接続を余分に行ってしまうと、必要以上にトランジスタを使ってしまい、シリコン上の領域を消費し、経路が伸びて電力消費が多くなる。
[編集] ツールフロー
一般に再構成可能コンピューティングのツールはふたつに分類される。再構成可能デバイスのCADツールとCPUのコンパイルツールである。フロントエンドのコンパイラはこれらを統合したツールであり、構造化されたハードウェア表現形式を生成してハードウェア設計フローへの入力とする。ハードウェア設計フローは、テクノロジーマッピング、配置アルゴリズム、経路設定アルゴリズムの三段階に分けられる。
データフロー型プロセッサには再構成可能コンピューティングを使って実装されたものもある。
[編集] 関連項目
- プログラマブルロジックデバイス (PLD) - FPGA は PLD の一種。
- ハードウェア記述言語 (HDL)