リコンフィギャラブル・コンピューティングとは、フィールド・プログラマブル・ゲート・アレイ(FPGA)などの柔軟なハードウェア・プラットフォームを用いて処理することで、ソフトウェアの柔軟性とハードウェアの高性能を組み合わせたコンピュータ・アーキテクチャです。通常のマイクロプロセッサとの主な違いは、FPGAを使用することでカスタム計算ブロックを追加できることです。一方、カスタムハードウェア、すなわち特定用途向け集積回路(ASIC)との主な違いは、リコンフィギャラブル・ファブリック上に新しい回路を「ロード」することで実行時にハードウェアを適応させることができる点です。これにより、新しいチップを製造して既存のシステムに追加することなく、新しい計算ブロックを提供できます。
再構成可能コンピューティングの概念は、ジェラルド・エストリンの論文で標準的なプロセッサと「再構成可能な」ハードウェアのアレイで構成されるコンピュータの概念が提唱された1960年代から存在していました。 [1] [2]メインプロセッサは再構成可能なハードウェアの動作を制御します。再構成可能なハードウェアは、画像処理やパターンマッチングなどの特定のタスクを、専用ハードウェアと同等の速度で実行するように調整されます。タスクが完了すると、ハードウェアは別のタスクを実行するように調整されます。これにより、ソフトウェアの柔軟性とハードウェアの速度を組み合わせたハイブリッドコンピュータ構造が実現しました。
1980年代から1990年代にかけて、この研究分野はルネサンス期を迎え、産業界と学界で多くの再構成可能なアーキテクチャが提案されました。[3]例としては、Copacobana、Matrix、GARP、[4] Elixent、NGEN、[5] Polyp、[6] MereGen、[7] PACT XPP、Silicon Hive、Montium、Pleiades、Morphosys、PiCoGA [8]などが挙げられます。このような設計は、複雑な設計を1つのチップに実装できるシリコン技術の絶え間ない進歩によって実現可能になりました。これらの超並列再構成可能コンピュータの中には、分子進化、神経科学、画像処理などの特定のサブドメイン向けに主に構築されたものもあります。世界初の商用再構成可能コンピュータであるアルゴトロニクスCHS2X4は1991年に完成しました。商業的には成功しませんでしたが、将来性は高く、ザイリンクス(フィールドプログラマブルゲートアレイ(FPGA)の発明者)がその技術を購入し、アルゴトロニクスのスタッフを雇用しました。[9]その後のマシンでは、MereGenによる遺伝子コードの自発的な空間的自己組織化など、科学的原理の実証が初めて可能になりました。[10]
再構成可能なコンピューティングマシンパラダイムの基本モデルであるデータストリームベースのアンチマシンは、ニック・トレデニックによるコンピューティングパラダイムの分類スキームに示されているように、以前に紹介された他のマシンパラダイムとの違いによってよく示されています(「表1:ニック・トレデニックのパラダイム分類スキーム」を参照)。[11]
コンピュータ科学者のライナー・ハルテンシュタインは、再構成可能コンピューティングを反マシンの観点から説明し、彼によれば、より従来的なフォン・ノイマン・マシンからの根本的なパラダイムシフトを表しています。[12]ハルテンシュタインは、ソフトウェアからコンフィグウェア (ソフトウェアからFPGA ) への移行によって、最大 4 桁以上の速度向上と、ほぼ 4 桁の電力消費削減が報告されていることを再構成可能コンピューティングのパラドックスと呼んでいます。ただし、FPGA の技術的パラメータはゴードン・ムーアの曲線より約 4 桁遅れており、クロック周波数はマイクロプロセッサよりも大幅に低いです。このパラドックスは、フォン・ノイマン症候群によって部分的に説明されます。
高性能再構成可能コンピューティング(HPRC) は、フィールド プログラマブル ゲート アレイなどの再構成可能なコンピューティング ベースのアクセラレータと CPU またはマルチコアプロセッサを組み合わせたコンピュータ アーキテクチャです。
FPGAのロジック容量の増加により、より大規模で複雑なアルゴリズムをFPGAにプログラムすることが可能になりました。PCI Expressなどの高速バスを介してFPGAを最新のCPUに接続することで、コンフィギュラブルロジックは周辺機器ではなくコプロセッサのように動作できるようになりました。これにより、リコンフィギュラブルコンピューティングが高性能コンピューティングの分野に進出しました。
さらに、FPGA 上でアルゴリズムを複製したり、複数の FPGA を使用したりすることで、再構成可能なSIMDシステムを作成できるようになり、複数の計算デバイスが異なるデータに対して同時に操作できるようになり、高度な並列コンピューティングが可能になります。
この異種システム技術はコンピューティング研究、特にスーパーコンピューティングで使用されています。[13] 2008年の論文では、4桁以上の高速化と最大で約4桁の省エネ効果が報告されています。[14] 一部のスーパーコンピュータ企業は、FPGAを含む異種処理ブロックをアクセラレータとして提供しています。[要出典] 研究分野の一つは、このような異種システムで得られるツインパラダイムプログラミングツールフローの生産性です。[15]
米国国立科学財団には、高性能再構成可能コンピューティングセンター(CHREC)がある。[16] 2011年4月には、第4回メニーコアおよび再構成可能スーパーコンピューティング会議がヨーロッパで開催されました。[17]
IBMがIBM PowerマイクロプロセッサにFPGAを統合すると発表したことで、商用の高性能再構成可能コンピューティングシステムが登場し始めている。[18]
部分再構成とは、再構成可能なハードウェア回路の一部を変更し、他の部分は以前の構成を維持するプロセスです。フィールドプログラマブルゲートアレイは、部分再構成をサポートするためによく使用されます。
ソフトウェアと同様に、電子ハードウェアもモジュール設計が可能です。サブコンポーネントを作成し、それらをインスタンス化するための高レベルコンポーネントを作成します。多くの場合、FPGAの動作中にこれらのサブコンポーネントを1つまたは複数交換できることは有用です。
通常、FPGAをリコンフィグレーションするには、外部コントローラが設計をリロードする間、FPGAをリセット状態に保持する必要があります。部分リコンフィグレーションでは、FPGA内またはFPGA外のコントローラが部分的な設計をリコンフィグレーション可能なモジュールにロードする間も、設計の重要な部分は動作を継続できます。また、部分リコンフィグレーションは、設計間で変更される部分的な設計のみを保存することで、複数の設計のためのメモリ容量を節約するためにも使用できます。[19]
部分的な再構成が有用な例として、通信デバイスが挙げられます。デバイスが複数の接続を制御しており、そのうちのいくつかに暗号化が必要な場合、コントローラー全体を停止させることなく、異なる暗号化コアをロードできれば便利です。
部分的なリコンフィグレーションはすべてのFPGAでサポートされているわけではありません。モジュール設計を重視した特別なソフトウェアフローが必要です。通常、設計モジュールはFPGA内部の明確に定義された境界に沿って構築されるため、設計を内部ハードウェアに特別にマッピングする必要があります。
設計の機能性の観点から、部分再構成は2つのグループに分けられます。[20]

手頃な価格のFPGAボードの登場により、学生や愛好家のプロジェクトでは、ビンテージコンピュータの再現や、より斬新なアーキテクチャの実装が試みられています。[21] [22] [23]このようなプロジェクトは再構成可能なハードウェア(FPGA)を使用して構築されており、一部のデバイスでは、単一の再構成可能なハードウェア(C-One)を使用して複数のビンテージコンピュータのエミュレーションをサポートしています。
完全にFPGAベースのコンピュータとしては、コスト最適化型コードブレーカー&アナライザーであるCOPACOBANAと、その後継機であるRIVYERAがあります。ドイツのボッフム大学とキール大学のCOPACOBANAプロジェクトからスピンオフした企業であるSciEngines GmbHは、完全にFPGAベースのコンピュータの開発を継続しています。
Mitrionicsは、単一代入言語で記述されたソフトウェアをFPGAベースのコンピュータ上でコンパイル・実行できるSDKを開発しました。Mitrion-Cソフトウェア言語とMitrionプロセッサにより、ソフトウェア開発者は、グラフィカル・プロセッシング・ユニット(GPU)、セルベース・プロセッサ、並列処理ユニット(PPU)、マルチコアCPU、従来のシングルコアCPUクラスタといった他のコンピューティング技術と同様に、FPGAベースのコンピュータ上でアプリケーションを開発・実行できるようになります。(廃業)
ナショナルインスツルメンツは、 CompactRIOと呼ばれるハイブリッド組込みコンピューティングシステムを開発しました。このシステムは、ユーザープログラミング可能なFPGA、ホットスワップ可能なI/Oモジュール、確定的な通信と処理を実現するリアルタイムコントローラ、そしてRTとFPGAの迅速なプログラミングを可能にするグラフィカルなLabVIEWソフトウェアを収容する再構成可能なシャーシで構成されています。
ザイリンクスは、FPGAデバイスの部分再構成にモジュールベースと差分ベースの2つのスタイルを開発しました。モジュールベースの部分再構成では、設計の個別のモジュール部分を再構成できます。一方、差分ベースの部分再構成は、設計に小さな変更を加える場合に使用できます。
Intel [24]は、Stratix V [25]などの28nmデバイスと20nm Arria 10デバイス[26]上でFPGAデバイスの部分再構成をサポートしています。Arria 10向けのIntel FPGA部分再構成フローは、Quartus Prime Proソフトウェアの階層的設計手法に基づいており、ユーザーはFPGAの物理パーティションを作成し、実行時に再構成[27]しながらも、残りの設計は継続して動作させることができます。Quartus Prime Proソフトウェアは、階層的部分再構成と部分再構成のシミュレーションもサポートしています。
再構成可能アーキテクチャは新興分野であるため、新しいアーキテクチャが開発されるにつれて、その分類は現在も開発と改良が続けられており、統一的な分類法は未だ提案されていません。しかしながら、これらのシステムを分類するために、いくつかの繰り返しパラメータを用いることは可能です。
再構成可能ロジックの粒度は、マッピング ツールによってアドレス指定される最小の機能ユニット (構成可能ロジック ブロック、CLB) のサイズとして定義されます。粒度が高い (細粒度とも呼ばれる) ということは、多くの場合、アルゴリズムをハードウェアに実装する際の柔軟性が高くなることを意味します。ただし、計算ごとに必要な配線量が増えるため、電力、面積、遅延が増加するというペナルティがあります。細粒度アーキテクチャはビットレベルの操作レベルで動作します。一方、粗粒度処理要素 (再構成可能データパス ユニット、rDPU) は、標準のデータ パス アプリケーション向けに最適化されています。粗粒度アーキテクチャの欠点の 1 つは、粒度が提供するよりも小さな計算を実行する必要がある場合、使用率とパフォーマンスの一部が失われる傾向があることです。たとえば、1 ビットの加算の場合、4 ビット幅の機能ユニットでは 3 ビットが無駄になります。この問題は、粗粒度アレイ (再構成可能なデータパスアレイ、rDPA) とFPGA を同じチップ上に配置することで解決できます。
粗粒度アーキテクチャ ( rDPA ) は、ワード幅データパス (rDPU) を必要とするアルゴリズムの実装を目的としています。その機能ブロックは大規模計算向けに最適化されており、通常はワード幅の算術論理ユニット(ALU) で構成されるため、相互接続された小さな機能ユニットのセットよりも高速かつ電力効率に計算を実行します。これは、接続ワイヤが短くなり、ワイヤ容量が小さくなり、設計の高速化と低消費電力化が実現できるためです。大規模な計算ブロックを持つことの望ましくない結果として、オペランドのサイズがアルゴリズムと一致しない場合、リソースが効率的に利用されない可能性があります。実行されるアプリケーションのタイプは事前にわかっている場合が多く、ロジック、メモリ、配線リソースを調整してデバイスのパフォーマンスを向上させると同時に、将来の適応のために一定レベルの柔軟性も確保できます。この例として、柔軟性を低下させることで、より汎用的で細粒度のFPGAよりも電力、面積、スループットの点で優れたパフォーマンスを得ることを目的としたドメイン特化アレイが挙げられます。
これらの再構成可能システムの構成は、デプロイメント時、実行フェーズ間、または実行中に行うことができます。一般的な再構成可能システムでは、デプロイメント時にビット ストリームを使用してデバイスをプログラムします。細粒度のシステムは、その性質上、アドレス指定およびプログラムする必要がある要素が多いため、粗粒度のアーキテクチャよりも構成に時間がかかります。したがって、粗粒度のアーキテクチャでは、転送および使用される情報が少なくなるため、潜在的なエネルギー要件が低くなります。直感的には、再構成の速度が遅いほど、再構成に関連するエネルギー コストがより長い期間にわたって償却されるため、消費電力は少なくなります。部分的再構成は、デバイスの一部がアクティブな計算を実行している間に、別の部分を再プログラムできるようにすることを目的としています。部分的再構成により、再構成可能なビット ストリームが小さくなるため、ビット ストリーム内の冗長な情報の送信にエネルギーを無駄にすることがなくなります。ビット ストリームの圧縮は可能ですが、小さいビット ストリームを使用することで節約されるエネルギーが、データの解凍に必要な計算によって上回られないように、慎重な分析を実行する必要があります。
リコンフィギャラブルアレイは、多くの場合、ホストプロセッサに接続された処理アクセラレータとして使用されます。結合レベルによって、データ転送の種類、レイテンシ、消費電力、スループット、そしてリコンフィギャラブルロジックを利用する際のオーバーヘッドが決まります。最も直感的な設計の中には、ペリフェラルバスを用いてリコンフィギャラブルアレイをコプロセッサのような配置にするものがあります。しかし、リコンフィギャラブルファブリックをプロセッサに非常に近い位置に配置する実装もあり、プロセッサレジスタを利用してデータパス内に実装されるものもあります。ホストプロセッサの役割は、制御機能の実行、ロジックの設定、データのスケジューリング、そして外部インターフェースの提供です。
リコンフィギュラブルデバイスの柔軟性は、主に配線インターコネクトに由来します。FPGAベンダーであるXilinxとAlteraが普及させたインターコネクトスタイルの一つに、アイランド型レイアウトがあります。これは、ブロックを垂直方向と水平方向の配線でアレイ状に配置したものです。配線が不十分なレイアウトでは、柔軟性とリソース利用率が低下し、パフォーマンスが制限される可能性があります。インターコネクトが多すぎると、必要以上に多くのトランジスタが必要になり、シリコン面積、配線長、消費電力が増加します。
リコンフィギュラブル・コンピューティングにおける主要な課題の一つは、設計生産性の向上と、その基礎概念に馴染みのないユーザーにもリコンフィギュラブル・コンピューティング・システムを容易に利用できるようにすることです。その一つの方法は、標準化と抽象化を実現することです。これは通常、オペレーティングシステムによってサポートされ、強制されます。[28]
オペレーティングシステムの主要な役割の一つは、ハードウェアを隠蔽し、代わりにプログラム(とそのプログラマー)に、美しく、クリーンで、エレガントで、一貫性のある抽象化を提供することです。言い換えれば、オペレーティングシステムの二つの主要な役割は、抽象化とリソース管理です。[28]
抽象化は、複雑で多様な(ハードウェア)タスクを、明確に定義された共通の方法で処理するための強力なメカニズムです。OSにおける最も基本的な抽象化の一つはプロセスです。プロセスとは、OSによって提供される仮想ハードウェア上で単独で実行されているという認識を持つ実行中のアプリケーションです。この認識はスレッドの概念によって緩和され、この仮想ハードウェア上で複数のタスクを同時に実行することで、タスクレベルの並列処理を活用できるようになります。異なるプロセスやスレッドが連携して作業を行うためには、OSが通信および同期の手段を提供する必要があります。[28]
抽象化に加えて、オペレーティングシステムによってプロセスやスレッドに提供される仮想コンピュータは、利用可能な物理リソース(プロセッサ、メモリ、デバイス)を空間的かつ一時的に共有する必要があるため、基盤となるハードウェアコンポーネントのリソース管理が必要です。[28]
{{cite book}}: CS1 メンテナンス: その他 (リンク)
{{cite book}}: CS1 メンテナンス: その他 (リンク)