動的リコンフィギャラブル(動的再構成,Dynamically Reconfigurable)とは,アプリケーションの実行中に,その構成を変化させることのできるアーキテクチャです.具体的にどのような構成で,どのような仕組みでアプリケーションを実行していくのかについて解説します.
また,動的リコンフィギャラブルの利点についても解説します.
動的リコンフィギャラブルについて理解するためには,その対局にあるFPGA(Field-Programmable Gate Array)の構成についても理解する必要があります. FPGAは,実行前にアプリケーション(回路情報:コンテキストデータ)をロードします.実行が始まると,その回路構成は変化しません.回路構成を変化させることのできないFPGAは,規模の大きなアプリケーションを実行可能とするために,非常に大きな構造を取っています.サイズの大きいシリーズでは回路を構成するブロック(スライス)を何十万と搭載しており,大容量化するアプリケーションに耐え,さらには複数のアプリケーションを1チップのFPGAで実行できるようになってきています.
図:FPGAの構成(簡略図).スライスと呼ばれる回路構成単位を大量に並べた構成を取っている.
一方で,いくら大容量とはいえ,アプリケーション実行中には実行される領域は限られています.つまり,一瞬一瞬で考えると,アプリケーション回路をすべて安直に搭載すると非常に無駄があるわけです.
図:アプリケーション回路実行中でも,ある瞬間にはアクティブになっている回路は少ない.
一方で,動的リコンフィギャラブルアーキテクチャ(Dynamically Reconfigurable Processor Array)は,回路構成単位(プロセッシングエレメント:Processing Element:PE)の数を少なくし,代わりに各PEはアプリケーション実行中にその役割を切り替えることができるようになっています.この点から,FPGAと動的リコンフィギャラブルアーキテクチャは次のように見ることができます.
図:動的リコンフィギャラブルアーキテクチャの基本構成.PEの数は少ない.
動的リコンフィギャラブルアーキテクチャのPEの構成は,次の図のようになっています.(これはMuCCRA-3の例)
FPGAのスライスとはずいぶんと違います.論理素子(AND,OR)などではなく,レジスタアレイ,ALU,スイッチなどが入っています. そして,これらのALU,レジスタアレイ、スイッチなどが1クロックごとに動作を切り替えていきます.たとえばALUだと,あるクロックでは加算,つぎのクロックでは乗算といった具合です.
瞬時に役割が切り替えられると,1つのPEが複数の役割をこなせると言うことがわかりますね. 時分割された処理ならば,1つのPEが何役もこなすことができます.これが,動的リコンフィギャラブルアーキテクチャのPEの数が少なくて済む理由です.
また,動的リコンフィギャラブルアーキテクチャはPEのアレイで構成されていますが,各PEの機能は規則正しく一斉に切り替わっていきます.こうすることにより,PEアレイ全体で構成されるデータフローを切り替えていき,プログラムを実行していくというわけです.
図:動的リコンフィギャラブルアーキテクチャのアプリケーション実行の流れ.1クロックごとにデータの流れを変え,アプリケーション回路を実行していく.