再構成可能コンピューティングは、ソフトウェアの柔軟性とハードウェアの高いパフォーマンスを組み合わせたコンピュータアーキテクチャであり、フィールドプログラマブルゲートアレイ(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つのチップに実装できるシリコン技術の絶え間ない進歩によって実現可能になりました。これらの大規模並列再構成可能コンピュータの中には、分子進化、ニューラルネットワーク、画像処理などの特定のサブドメイン向けに主に構築されたものもあります。世界初の商用再構成可能コンピュータであるAlgotronix CHS2X4は1991年に完成しました。商業的には成功しませんでしたが、有望であったため、Xilinx (フィールドプログラマブルゲートアレイ、FPGAの発明者)がその技術を買収し、Algotronixのスタッフを雇用しました。[ 9 ]後期のマシンでは、MereGenによる遺伝子コーディングの自発的な空間的自己組織化など、科学原理の最初の実証が可能になりました。[ 10 ]
再構成可能なコンピューティング マシン パラダイムの基本モデルであるデータ ストリーム ベースのアンチ マシンは、ニック トレデニックによるコンピューティング パラダイムの分類スキーム (「表 1: ニック トレデニックのパラダイム分類スキーム」を参照)に示されているように、以前に紹介された他のマシン パラダイムとの違いによってよく説明されます。[ 11 ]
コンピュータ科学者のライナー・ハーテンシュタインは、再構成可能なコンピューティングを、彼によれば、より従来型のフォン・ノイマン・マシンからの根本的なパラダイムシフトを表す反機械という観点から説明しています。[ 12 ]ハーテンシュタインは、ソフトウェアからコンフィグウェア(ソフトウェアからFPGA)への移行によって、最大で4桁以上の高速化が報告され、電力消費も最大でほぼ4桁削減されるという再構成可能なコンピューティングのパラドックスと呼んでいます。ただし、FPGAの技術的パラメータはゴードン・ムーア曲線より約4桁遅れており、クロック周波数はマイクロプロセッサよりも大幅に低くなっています。このパラドックスは、フォン・ノイマン症候群によって部分的に説明されます。
高性能再構成可能コンピューティング(HPRC)は、フィールドプログラマブルゲートアレイなどの再構成可能なコンピューティングベースのアクセラレータとCPUまたはマルチコアプロセッサを組み合わせたコンピュータアーキテクチャです。
FPGAにおけるロジック容量の増加により、より大規模で複雑なアルゴリズムをFPGAにプログラムすることが可能になった。このようなFPGAをPCI Expressのような高速バスを介して最新のCPUに接続することで、構成可能なロジックは周辺機器ではなく、コプロセッサのように動作するようになった。これにより、再構成可能なコンピューティングが高性能コンピューティングの分野に導入された。
さらに、FPGA上でアルゴリズムを複製したり、複数のFPGAを使用したりすることで、再構成可能なSIMDシステムを製造することが可能になり、複数の計算デバイスが異なるデータに対して同時に動作できるようになり、これは高度に並列化されたコンピューティングです。
この異種システム技術は、コンピューティング研究、特にスーパーコンピューティングで使用されています。[ 13 ] 2008年の論文では、4桁以上の高速化と、ほぼ4桁の省エネルギー効果が報告されています。[ 14 ]一部のスーパーコンピュータ企業は、アクセラレータとしてFPGAを含む異種処理ブロックを提供しています。研究分野の一つは、このような異種システムで得られるツインパラダイムプログラミングツールフローの生産性です。[ 15 ]
米国国立科学財団には、高性能再構成可能コンピューティングセンター(CHREC)があります。[ 16 ] 2011年4月には、ヨーロッパで第4回マルチコアおよび再構成可能スーパーコンピューティング会議が開催されました。[ 17 ]
IBMがIBM PowerマイクロプロセッサにFPGAを統合すると発表したことで、商用高性能再構成可能コンピューティングシステムが登場し始めている。[ 18 ]
部分再構成とは、再構成可能なハードウェア回路の一部を変更し、残りの部分は以前の構成を維持するプロセスです。フィールドプログラマブルゲートアレイ(FPGA)は、部分再構成をサポートするためによく使用されます。
電子ハードウェアは、ソフトウェアと同様に、サブコンポーネントを作成し、それらをインスタンス化する上位レベルのコンポーネントを作成することで、モジュール式に設計できます。多くの場合、FPGAが動作している状態で、これらのサブコンポーネントの1つまたは複数を交換できると便利です。
通常、FPGAを再構成するには、外部コントローラが設計を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モジュール、決定論的な通信と処理のためのリアルタイムコントローラ、そして高速なリアルタイムプログラミングとFPGAプログラミングのためのグラフィカルなLabVIEWソフトウェアを内蔵した再構成可能なシャーシで構成されています。
ザイリンクスは、FPGAデバイスの部分再構成に関して、モジュールベースと差分ベースの2つの方式を開発しました。モジュールベースの部分再構成では、設計の個別のモジュール部分を再構成できますが、差分ベースの部分再構成は、設計に小さな変更を加えた場合に使用できます。
Intel [ 24 ]は、Stratix V [ 25 ] などの 28 nm デバイスおよびArria 10 20 nm デバイス[ 26 ]で、FPGA デバイスの部分再構成をサポートしています。Arria 10 の Intel FPGA 部分再構成フローは、Quartus Prime Pro ソフトウェアの階層設計手法に基づいており、ユーザーは、設計の残りの部分が動作を継続している間に、実行時に再構成できる FPGA の物理パーティションを作成します[ 27 ]。Quartus Prime Pro ソフトウェアは、階層的な部分再構成と部分再構成のシミュレーションもサポートしています。
再構成可能なアーキテクチャは新興分野であるため、その分類は新たなアーキテクチャの開発に伴い、現在も開発・改良が続けられており、現時点では統一的な分類体系は提案されていない。しかしながら、これらのシステムを分類するために、いくつかの共通するパラメータを用いることができる。
再構成可能なロジックの粒度は、マッピングツールによってアドレス指定される最小の機能ユニット(構成可能ロジックブロック、CLB)のサイズとして定義されます。高粒度(細粒度とも呼ばれる)は、アルゴリズムをハードウェアに実装する際の柔軟性が高いことを意味します。ただし、計算ごとに必要なルーティングの量が増えるため、電力、面積、遅延が増加するというペナルティがあります。細粒度アーキテクチャはビットレベルの操作レベルで動作しますが、粗粒度処理要素(再構成可能データパスユニット、rDPU)は標準データパスアプリケーション向けに最適化されています。粗粒度アーキテクチャの欠点の1つは、粒度が提供するよりも小さな計算を実行する必要がある場合、利用率とパフォーマンスが低下する傾向があることです。たとえば、4ビット幅の機能ユニットで1ビットの加算を実行すると、3ビットが無駄になります。この問題は、粗粒度アレイ(再構成可能データパスアレイ、rDPA)とFPGAを同一チップ上に搭載することで解決できる。
粗粒度アーキテクチャ(rDPA)は、ワード幅のデータパス(rDPU)を必要とするアルゴリズムの実装を目的としています。その機能ブロックは大規模な計算に最適化されており、通常はワード幅の算術論理演算ユニット(ALU)で構成されているため、相互接続されたより小さな機能ユニットのセットよりも高速かつ電力効率よくこれらの計算を実行します。これは、接続ワイヤが短いためワイヤ容量が少なくなり、結果として高速かつ低消費電力の設計となるためです。計算ブロックが大きい場合の潜在的な望ましくない結果として、オペランドのサイズがアルゴリズムと一致しない場合、リソースの利用効率が低下する可能性があります。多くの場合、実行するアプリケーションの種類は事前にわかっているため、ロジック、メモリ、ルーティングのリソースを調整してデバイスのパフォーマンスを向上させつつ、将来の適応のための一定の柔軟性も確保できます。その例として、柔軟性を低下させることで、より汎用的な細粒度FPGAよりも電力、面積、スループットの面で優れたパフォーマンスを得ることを目的としたドメイン固有アレイが挙げられます。
これらの再構成可能システムの構成は、展開時、実行フェーズ間、または実行中に行うことができます。一般的な再構成可能システムでは、展開時にビットストリームを使用してデバイスをプログラムします。きめ細かいシステムは、アドレス指定およびプログラムする必要のある要素が多いため、その性質上、より粗い粒度のアーキテクチャよりも構成に時間がかかります。したがって、転送および使用される情報が少ないため、より粗い粒度のアーキテクチャは潜在的に低いエネルギー要件の恩恵を受けます。直感的に、再構成の速度が遅いほど、再構成に関連するエネルギーコストがより長い期間にわたって償却されるため、消費電力は小さくなります。部分的な再構成は、デバイスの一部がアクティブな計算を実行している間に、デバイスの一部を再プログラムできるようにすることを目的としています。部分的な再構成により、再構成可能なビットストリームが小さくなるため、ビットストリーム内の冗長な情報を送信するためにエネルギーを浪費することはありません。ビットストリームの圧縮は可能であるが、より小さなビットストリームを使用することで節約できるエネルギーが、データの解凍に必要な計算量によって相殺されないように、慎重な分析を行う必要がある。
再構成可能なアレイは、ホストプロセッサに接続された処理アクセラレータとして使用されることが多い。結合レベルによって、再構成可能なロジックを使用する際のデータ転送の種類、レイテンシ、消費電力、スループット、およびオーバーヘッドが決まる。最も直感的な設計の中には、周辺バスを使用して再構成可能なアレイにコプロセッサのような構成を提供するものもある。しかし、再構成可能なファブリックがプロセッサにより近い位置にある実装もあり、中にはプロセッサレジスタを利用してデータパスに組み込まれているものもある。ホストプロセッサの役割は、制御機能を実行し、ロジックを構成し、データをスケジューリングし、外部インターフェースを提供することである。
再構成可能なデバイスの柔軟性は、主にその配線相互接続によってもたらされます。FPGAベンダーであるザイリンクスとアルテラが普及させた相互接続方式の一つに、垂直方向と水平方向の配線でブロックを配列したアイランド型レイアウトがあります。配線が不十分なレイアウトでは、柔軟性やリソース利用効率が低下し、パフォーマンスが制限される可能性があります。逆に、相互接続が多すぎると、必要以上に多くのトランジスタが必要となり、結果としてシリコン面積の拡大、配線の長さの増加、消費電力の増加につながります。
再構成可能コンピューティングにおける重要な課題の1つは、設計生産性を向上させ、基礎となる概念に不慣れなユーザーでも再構成可能コンピューティングシステムを簡単に使用できるようにすることです。これを実現する1つの方法は、通常オペレーティングシステムによってサポートおよび強制される標準化と抽象化を提供することです。[ 28 ]
オペレーティングシステムの主要なタスクの1つは、ハードウェアを隠蔽し、プログラム(およびそのプログラマ)に、扱いやすく、クリーンで、エレガントで、一貫性のある抽象化を提供することです。言い換えれば、オペレーティングシステムの2つの主要なタスクは、抽象化とリソース管理です。[ 28 ]
抽象化は、複雑で異なる(ハードウェア)タスクを、明確に定義された共通の方法で処理するための強力なメカニズムです。最も基本的な OS 抽象化の 1 つはプロセスです。プロセスとは、基盤となる仮想ハードウェア上で独立して実行されているという認識(OS によって提供される)を持つ実行中のアプリケーションです。スレッドの概念によってこの制約を緩和することができ、この仮想ハードウェア上で異なるタスクを同時に実行してタスクレベルの並列性を活用することができます。異なるプロセスとスレッドが作業を調整できるようにするには、OS によって通信および同期方法が提供される必要があります。[ 28 ]
抽象化に加えて、オペレーティングシステムによってプロセスやスレッドに提供される仮想コンピュータは、利用可能な物理リソース(プロセッサ、メモリ、デバイス)を空間的にも時間的にも共有する必要があるため、基盤となるハードウェアコンポーネントのリソース管理も必要です。[ 28 ]
{{cite book}}: CS1 メンテナンス: その他 (リンク){{cite book}}: CS1 メンテナンス: その他 (リンク)