本発明は、再構成可能な論理演算部を再構成する情報を生成する装置および方法に関するものである。
国際公開WO2005/022380号公報には、アプリケーションを実行するための回路の少なくとも一部であるオブジェクト回路を動的に再構成可能な論理回路の一部にマッピングするためのオブジェクト回路情報と、オブジェクト回路に接するインタフェース回路を論理回路にマッピングするためのインタフェース回路情報と、インタフェース回路において実現する境界条件とを含むアーキテクチャコードを使用するデータ処理装置が記載されている。
回路を再構成可能な装置に実装するコンフィグレーション情報を生成する装置および方法が求められている。
本発明の態様の1つは、再構成可能な論理演算部を再構成する構成情報を生成する装置である。論理演算部は、再構成可能なエレメントであって、整数kの入力を含むエレメントと、複数のエレメントの間で演算用のデータを転送するチャネルであって、再構成可能なデータ転送チャネルとを含む。当該装置は、論理演算部において処理する仕様に基づき生成されたネットリストに含まれる各ノードに対する全てのカットの中から、カットした後のノードの数が整数k以下のk−フィージブルカットを列挙するユニットと、列挙されたk−フィージブルカットの中でエレメントに割り当てるカットを選択してエレメントを再構成するエレメント再構成情報と、再構成されたエレメントを接続してネットリストを実現するようにデータ転送チャネルを再構成するチャネル再構成情報とを含む構成情報を生成する生成ユニットとを有する。
生成ユニットは、エレメント再構成情報およびチャネル再構成情報が時分割で論理演算部を再構成する単位に分割された構成情報を生成するユニットを含むことが望ましい。列挙するユニットは、列挙された複数のk−フィージブルカットの重複を検出するユニットを含むことが望ましい。
本発明の他の態様の1つは、CPUとメモリとを含むコンピュータにより、再構成可能な論理演算部を再構成する構成情報を生成する方法である。当該方法は、以下のステップを含む。
1.コンピュータが、論理演算部において処理する仕様に基づき生成されたネットリストに含まれる各ノードに対する全てのカットの中から、カットした後のノードの数が整数k以下のk−フィージブルカットを列挙すること。
2.列挙されたk−フィージブルカットの中でエレメントに割り当てるカットを選択してエレメントを再構成するエレメント再構成情報と、再構成されたエレメントを接続してネットリストを実現するようにデータ転送チャネルを再構成するチャネル再構成情報とを含む構成情報を生成すること。
生成するステップは、エレメント再構成情報およびチャネル再構成情報が時分割で論理演算部を再構成する単位に分割された構成情報を生成するユニットを含むことが望ましい。さらに、この方法は、列挙されたk−フィージブルカットの重複を検出することを有することが望ましい。この方法は、CPUとメモリとを含むコンピュータにより、再構成可能な論理演算部を再構成する構成情報を生成するプログラム(プログラム製品)として提供できる。プログラムは、上記の各ステップを実行する命令を含む。
データ処理装置のブロック図。
DRPサブシステム(ANR)の概略構成を順次拡大して示す図。
サイクル単位で回路が再構成される様子を示す図。
ANRのデータの流れを示す図。
異なるデータの流れを示す図。
ANRの配線チャネルが時分割で使われる様子を示す図。
ANR−BASEモジュールの概要を示す図。
ANR−C1×4モジュールの概要を示す図。
ANR−C1モジュールの概要を示す図。
配線チャネルセルの概要を示す図。
配線チャネルセルを示す図。
配線チャネルセルをワイヤードロジックで示す図。
異なる配線チャネルセルを示す図。
配線チャネルセルのネットワークを示す図。
時分割でスライスして論理を実装する例。
データ処理装置をプラットフォームとしてアプリケーションを実装する例。
設計フローの例。
ネットリストコンバータの概略構成を示すブロック図。
LUTを用いて論理回路を実装する例。
ネットリストをANRに実装する例。
異なるネットリストを実装する例。
ネットリストコンバータにおいてコンフィグレーション情報を生成する概略の過程を示すフローチャート。
ブーリアンネットワークによる最適化の例。
カット(ノードの組み合わせ)で分離した論理をLUTに実装する様子を示す図。
カットを探索する方法を示す図。
RTLの例を示す図。
ネットリストの例を示す図。
データ・フロー・グラフの例を示す図。
ノードのマッピング情報の例を示す図。
パッキングアルゴリズムを示す図。
最適化されたマッピング情報の例を示す図。
発明の実施の形態
図1に、再構成可能な回路(DRPサブシステム)10を含むデータ処理装置1の概要を示している。この装置1は、OSをフラッシュメモリからブートするタイプであり、メインメモリとしてDDR3−DRAM2aを含む。この装置1は、たとえば、POP(Package On Package)あるいはその他の方式で量産できる。装置1は、AMBA3.0などの内部バスアーキテクチャを採用したバス(AXIバス)2cと、CPU(CPUコア)2bと、バス2cによりPUC2bと接続されたDRPサブシステム10とを含む。DRPサブシステム10は、再構成用の情報(コンフィグレーション情報)を格納するコンフィグレーションメモリ10mを含む。
この装置1においては、DRPサブシステム10として本願の出願人が新たに開発したシステム(AxioNipeR)が採用されている。DRPサブシステム10は、適当な数の入出力を含み論理演算をサイクル単位で変更(再構成)できる複数の論理エレメント(エレメント)を含み、部分的にサイクル単位で再構成が可能なものであれば良い。本例のDRPサブシステム(AxioNipeR)10は、縦横にそれぞれ64個のエレメントが配置されたマトリクス(アレイ)を備えている。
装置1は、さらに、USBコントローラ2r、高精細度メルチメディアインターフェースコントローラ2d、セキュリティエンジンコントローラ2e、LANコントローラ2f、DMAコントローラ2g、PCIコントローラ2h、SDXCコントローラ2i、SATAコントローラ2j、MIPIインターフェース・コントローラ2k、LCDCコントローラ2l、NANDフラッシュコントローラ2m、周辺機能2n、周辺機能用レジスタ2o、INTCコントローラ2sとを含み、これらは内部バス2cおよびブリッジ回路2p、2qを介して接続されている。
本例のDRPサブシステム(AxioNipeR、以降ではANR)10は動的再構成可能なプロセサ(Dynamic Reconfigurable Processor)であり、細粒度(Fine Grain)の構成を持つアレイを含む。装置1にANR10を実装することで、比較的規模の大きな並列データ処理が期待される化学物質分析のような分野では、分析処理の各ステージで纏まった並列データ処理を行うとともに、他の処理にも資源を時分割であるいは並列に使用できる。たとえば、ANR10として、最大実行性能の要求されるハードウェア面積を準備しておき、これを最大として、他の処理をある順序で並列処理するという手法は、極めて経済的である。並列データ処理が順次確定して進む場合は特に有用である。
また、将来的にシステム要求や性能UP要求があった場合に、ソフトウェア的修正や改良を行い、ハードウェア実装そのものを変更したような効果が得られる。実際に、将来的な変更を許容可能なLSIのニーズは極めて大きくシステム実装リスクを極端に低減し、ハードウェア開発期間を実質的に短期化する。異なる処理あるいはアプリケーションを共通の演算装置で行おうとするプラットフォーム戦略において、開発の短期化と、顧客要求に柔軟に応えるという重要なメリットが得られる。
細粒度の構成を持つリコンフィギュラブルデバイスとして一般的にFPGAが知られているが、ANR10は、FPGAが持つ効率の悪さと動作周波数の低さという問題を解決し、また、粗粒度の構成のリコンフィギュラブルデバイスの柔軟性の低さを解消する。
図2にANR10の概要を示している。図2は、装置1からANR10の一部であり、複数のセル11を含む領域(タイル)19を拡大し、さらに、セル11の概略構成を拡大して示している。1つのセル11は複数(最大8または16)の再構成用の情報単位(コンフィギュレーション情報)を持ち、それらを1クロックで動的に切り替えながら回路を生成する。それぞれのセル11は、1クロック、たとえば1ns後は、別の論理演算ユニット(論理演算回路)として動作可能であり、見かけ上、1つのセル11が複数の多重化された回路モジュールとして機能する。
ANR10は、シンメトリックなネットワークトポロジをとり、隣接セル間接続チャネルおよび、離れたセル間のグローバル接続チャネル20により、データはセル11の上下、左右いずれの方向にも転送可能である。以下では2次元にセル11が配置された例を説明するが、セル11は3次元に配置されていてもよく、接続チャネル20も3次元的な構造を備えていてもよい。さらに、接続チャネル20は配線のように基板などに固定されたものであってもよく、可視光通信などの光通信のように空間を信号が伝搬するものであってもよく、さらに、接続チャネル20は固定化された経路を持たず、セル11の間をダイナミックに再構成可能に接続するものであってもよい。
グローバル接続チャネル20は、時間分割による多重化で信号(データ)を伝送するシステムを含み、チャネル20の使用率を上げるとともに配線コストをさげる。チャネル接続のスケジューリングは回路生成と同様に、以降で詳述するデータフロー解析により、プリスケジューリングされる。データ転送方式は、ラベルの付いたパケットデータ転送方式であってもよく、データ創出、受取タイミングの指示によるシンプルな構造のデータ転送方式でもよい。グローバス接続チャンネル20は、動的イベントにより生成された回路のデータ転送のため帯域を確保することが望ましく、ANR10において動的イベントによる回路生成を可能とする。
ANR10の各セル(エレメント、論理演算エレメント)11は多重化され、1クロック(1ns)単位でコンフィギュレーション可能な構成を持つ。必要なコンフィギュレーションを指定することで、あらかじめ設定されたコンフィギュレーションメモリ10mを参照することで、任意の回路構成が可能となる。
図3に、実際のコンフィギュレーション変更による回路を再構成する例を示す。構成変更はセル11の単位でも、複数のセル11を含む単位でも可能である。再構成する機能モジュール(構成モジュール)に応じて、複数のセルを1個のモジュールの単位(タイル)19として扱うことができる。
図3においては、タイル19が、最初の1クロック目(nクロック)は加算回路18aとして機能し、2クロック目(n+1クロック)ではデコーダ回路18bとして機能し、3クロック目(n+2クロック)ではシフタ回路18cとして機能するように再構成される。たとえば、タイル19の外部または内部に演算結果を格納するレジスタを設けることにより、各クロックで演算した入出力データ18xは再構成される機能を超えて伝搬(入出力)することが可能であり、物理的に同一のタイル19をシームレスに複数の論理機能で多重化することが可能である。したがって、多数の、あるいは複雑な論理演算を行うために要求される回路規模を削減できる。もちろん、物理的に同一でないタイル19に複数の論理機能を時分割にあるいは並列に実装することも可能であり、また、物理的に一部重複するようなタイル19や、実装するタイル19の大きさを変えて再構成することも可能である。
ANR10においては図4、5および6に示すように、データ31の流れも多重化されている。あるセル11に入出力されるデータの方向は、セル11同士およびセル11とグローバル接続チャネル20の間を接続する接続間チャネル28により制御できる。接続間チャネル28の一例はクロスバースイッチであり、内部クロスバースイッチにより、同時に2つのコンポーネント(セル11、グローバル配線チャネル20)への出力および入力の制御が可能である。グローバル配線チャネル20は、セル11間を跨いだデータ転送を行う配線チャネル29を含む。配線チャネル29は、縦方向2チャンネル、横方向2チャンネルを含む。グローバル配線チャネル20はセル11のコンフィギュレーション情報と同様に各セル11の間で決められたタイムスロットを利用することで、複数のセル11の間のデータ転送を1つのチャネルを多重化して行うことができる。
図4に示したタイル19は、データ31がセル11の下方向かつ右方向に流れるように構成されている。図5に示したタイル19は、データ31がセル11の左方向かつ上方向に流れるように構成されている。
図6はタイミングチャートを用いて、横方向の配線チャネルX6と、縦方向の配線チャネルY2において多重化されている様子を示している。図6(a)は、セルC33とセルC11との間でデータ交換が行われる処理(論理演算)と、セルC32とセルC21との間でデータ交換が行われる処理とを時分割で物理的に同じタイル19に構成することを示している。図6(b)は配線チャネルX6およびY2の占有を示すタイミングチャートであり、セルC33とセルC11との間でデータ交換が行われる処理(論理演算)が構成されるスロットTS1と、セルC32とセルC21との間でデータ交換が行われる処理が構成されるスロットTS3とにより、同一の配線チャネルX6およびY2が時分割で占有されることを示している。
論理演算部であるANR10は、論理演算動作(ファンクション動作)を規定するセル(エレメント、ファンクションセル)11とセル11間のデータ転送制御を行う配線チャネルセル20とを含む。複数のセル11を含むタイル19あるいはマトリクスであるANR10に実装される論理演算は多くの場合、回路構成として認識される。しかしながら、ANR10においては、クロック単位で構成を変更できるので、意味のある、すなわち、論理演算が明確に把握できる回路が構成されている必要はなく、所定のクロックが経過した後(所定のレイテンシで)、所定の論理演算結果が得られるように、タイル19またはANR10が構成されればよい。各セル11は対称性を持っており、複数のセル11をN個×M個という単位でタイル状(マトリクス状)に接続してANR10を構成できる。
個々のセル11は、コンフィグレーション情報(再構成情報、ファンクションコンフィギュレーション情報)により、動的に回路動作が規定される。個々のセル11が独立して再構成されてもよく、複数のセル11が同期して再構成されてもよい。セル11は、最小時間1クロック(1サイクル)で論理演算(回路構成)が再構成され、再構成された論理演算が使用可能となる。セル11は、複数クロックにわたり同一の論理演算を行うように設定することも可能であるが、1クロックで同じ論理演算を行うように再構成されているというように理解してもよい。
図7、8および9にANR10に採用されているセル11の階層的な構成を示している。図7(a)は、セル(エレメント)11の構成を示す。セル11は、ANR−BASEモジュール14とも称される。ANR−BASEモジュール14は、ANR10のファンクションセルのトップモジュールとなり、4つのANR−C1x4モジュール13と、3種の固定補助論理モジュール14bと、補助論理モジュール14bの出力を選択するセレクタ14cと、セレクタ14cを制御することで補助演算の内容を制御(決定)する補助演算コンフィグレーション選択ユニット14aとを含む。補助論理モジュール14bでサポートされる固定補助論理は特定されないが、加算演算のためのキャリールックアヘッド、デコーダの向けの補助論理が含まれる。
図7(b)に、ANR−BASEモジュール14の端子表を示す。ANR−BASEモジュール14は4ビット×4入力、4ビット×4出力の論理動作を行うことができるモジュール(エレメント)である。再構成される論理動作は、コンフィグレーション指定アドレスCRAで指定される。再構成するためのコンフィグレーション情報(コンフィグレーション設定情報)CWDは適当なタイミングで各ANR−BASEモジュール14に転送され、コンフィグレーション設定アドレスCWAで指定されたコンフィグレーションメモリのアドレスに事前に書き込まれ、コンフィグレーション指定アドレスCRAにより読み出される。
図8(a)にANR−Cx4モジュール13の構成を示す。ANR−Cx4モジュール13は、4個のANR−C1モジュール12から構成され、4ビット×1入力(1ビット4入力)、4ビット×1出力の論理動作を行う。図8(b)はANR−Cx4モジュール13の端子表である。
図9(a)に、ANR−C1モジュール12の構成を示す。ANR−C1モジュール12は、3ビットのファンクションコンフィギュレーション情報CWAで規定された論理演算を行う1ビット×4入力−1ビット×1出力の論理演算エレメントである。ANR−C1モジュール12は17ビット×16ワードの容量のコンフィグレーションメモリ(コンフィグレーションRAM)12aと、コンフィグレーション指定アドレスCRAが入力される読み出し側のアドレスデコーダ12bと、コンフィグレーション設定アドレスCWAが入力される書き込み側のアドレスデコーダ12dと、コンフィグレーション設定情報CWDが入力されるデータ入力インタフェース12cと、入力データAをコンフィグレーション指定アドレスCRAにより選択された論理により演算した結果が出力される出力側のセレクタ12eと、演算結果の出力Xを組合せ回路出力とするか、FF12gによりタイミングを切った順序回路として出力するかを選択するセレクタ12fとを含む。
図9(b)のタイミングチャートは、コンフィグレーション指定アドレスCRAが供給されるタイミングと、入力Aが供給されるタイミングと、それにより選択された論理演算結果Xが出力されるタイミングとを示している。図9(c)は、ANR−C1モジュール12を端子表も示す。
ANR−C1モジュール12には、コンフィギュレーション情報として、4入力(4ビット入力)に対する16種の「0/1」パターンからなる値を設定することで、任意の論理演算を行う組み合わせ回路が実現(実装)できる。ANR−C1モジュール12は、ファンクションコンフィギュレーション情報CRAで規定された4入力−1出力の回路構造を基本セルとし、組合せ回路として出力するか、FF12gによりタイミングを切った順序回路として出力するかを選択できる。コンフィギュレーション情報CWDは最大16種類までRAM(またはFF)12aに格納でき、格納されたコンフィギュレーション情報CWDはコンフィグレーション指定アドレスCRAにより1クロックで切り替え可能である。したがって、ANR−C1モジュール12は、1クロックで論理を動的再構成できる論理演算エレメントである。
図8(a)に示したANR−Cx4モジュール13は、同一入力信号(4本)AをもったセルANR−Cモジュール12を4個組み合わせて1エレメントとする。図7(a)に示したANR−BASEモジュール14は、図8(a)で示した、4つのANR−Cx4モジュール13で1つのファンクションセルを構成する。コンフィギュレーション情報CWDの切り替え制御は、コンフィグレーション指定アドレスCRAをCPU2bなどの外部コントローラから外部イベント等に基づいて供給して行ってもよく、ANR10の内部でコンフィグレーション指定アドレスCRAを発生させて自律的に行ってもよい。コンフィギュレーション情報CWDの切り替え制御は、ANR−BASEモジュール14、ANR−Cx4モジュール13および/またはANR−C1モジュール12の内部でコンフィグレーション指定アドレスCRAを所定の順番で、または、イベントによりサイクリックに生成して切り替えてもよい。
ファンクションコンフィギュレーション情報CWDは所定のアプリケーション、機能、論理を実行する前に外部メモリより専用バスによりローディングされる。コンフィギュレーション情報CWDを配送する専用の配線を設けてもよく、データ転送配線チャネル20を兼用してもよい。メモリ12a内のコンフィギュレーション情報CWDも繰り返し使用することによりコンフィグレーション情報CWDの書換えに要するハードウェアおよび時間的なコストを削減できる。コンフィグレーション情報CWDの書換えは、2ポートRAMなどを用いることによりファンクションセル11の実行時およびアイドル時のいずれにおいても変更可能である。
図10に配線チャネルセル(ANR−CORE)21の接続構成を示す。ANR−CORE21は、ファンクションセル11(ANR−BASEモジュール14)と、セル11の出力データを隣接するファンクションセル11、もしくは1セル以上離れたファンクションセル11に転送するための配線チャネル27とを含む。ANR−CORE21は、さらに、グローバル配線チャネル20との接続回路を含む。配線チャネル27およびグローバル配線チャネル20による転送元の選択、転送タイミングの指定は配線コンフィギュレーション情報により、動的に変更され、最小1クロックで転送元の選択変更が可能となる。
配線チャネルセル(ANR−CORE)21は、内部にファンクションセル11(ANR−BASE14)が含まれ、ANR10としては、配線チャネルセル21をタイル状に接続して構成される。ANR−CORE21の基本的な機能は以下の通りである。
・隣接する上下左右の4つのファンクションセル11からの出力データ(各16ビット)を取り込み、配線コンフィギュレーション情報によりそれらを選択して、自ファンクションセル11の入力とする。
・セル11の間をまたぐデータ転送のためにグローバル配線チャネル20を設置する。ANR−CORE21の単位で管理(接続)されるグローバル配チャネル20は上下方向に2本20dおよび20u、左右方向に2本20lおよび20rであり、それぞれのチャネル20はデータ転送の方向性(上から下、下から上、右から左、左から右)を備えていてもよい。
・グローバル配線チャネル20上のデータにはタグ情報等は含まれず、転送元のANR−CORE21の送出タイミングと、転送先のANR−CORE21の受取タイミングを合わせることでデータ転送を行う。グローバル配線チャネル20の中で占有されることになる配線チャネルにデータを出力可能なファンクションセル11は1つのタイムスロットに1個のみである。そのスケジューリングはコンフィギュレーション情報と連動して行われる。
・グローバル配線チャネル20は複数のセル11からドライブ可能であり、スケジューリングによりコンフィリクションを避ける。マルチプルドライブの物理的手段は実際に使用するプロセステクノロジー、セル仕様等により決定される。たとえば、ワイヤードOR構成を採用できる。
・配線チャネルセル(ANR−CORE)21は内部にグローバル配線チャネル20同士を接続するブリッジ機構を持つ。これより、左右の配線チャネル20lまたは20rからのデータを、上下の配線チャネル20dまたは20uに転送でき、逆方向も可能となる。
配線チャネルセル21には隣接するファンクションセル11から4本、グローバル配線チャネル20から4本が入力され、各入力は16ビットバス方式である。したがって、ANR−CORE21には計128本の入力信号が接続される。これを完全に自由に選択させると128:1のセレクタが16本(それぞれ個別に選択)必要になる。このため、現状以下の2つの制約を加えることで回路規模を抑えている。
・エレメント単位(ANR−Cx4)13の出力は、対エレメントに対して固定入力とする。例えば各エレメント13のビット0の出力はエレメント入力のビット0に、ビット1はビット1にしか接続されない。これにより、接続関係は32:1になる。ただし、エレメントのビット位置関係は固定されるが、接続対象となっている位置のビットにコンフィギュレーションを移動することで、実質的な論理的制約にはならない。
・同一方向からの隣接配線チャネル27とグローバル配線チャネル20はエレメント単位で切り替える。
ANR−BASEモジュール14は、隣接モジュール14からの入出力4本とグローバル配線チャネルの入出力4本とのインタフェースを持つ。ANR−CORE21は内部にもつ配線コンフィギュレーション情報をもとに必要な転送元のデータが必要なタイミングで参照される。
図11に配線チャネルセル(ANR−CORE)21の接続構成を示す。ANR−CORE21は、ANR−BASEモジュール14と、インタフェース21aとを含む。インタフェース21aは、ANR−BASEモジュール14に対して隣接モジュール14から配線チャネル27を経由した入出力4本のインタフェースと、グローバル配線チャネル20の入出力4本のインタフェースとを含む。ANR−CORE21内にもつ配線コンフィギュレーション情報をもとに必要な転送元のデータが必要なタイミングで参照される。ANR−BASE14への入力16本は、原則、1ビット単位で隣接モジュール14からの信号およびグローバル配線チャネル20からの信号から選択可能である。
図12に配線チャンネルセル21におけるANR−BASEモジュール14とグローバル配線チャネル20との接続構成を示す。グローバル配線チャネル20は配線チャネルセル21に対して4方向から入力し、同一方向に出力する。グローバル配線チャネル20との接続インタフェース21aは、複数の配線チャネルセル21からデータが出力されるため、論理的にはワイヤードOR形式の構成が採用される。接続インタフェース21aは、ANR−BASEモジュール14からの出力を選択する出力制御ユニット21bと、出力制御ユニット21bにより選択された出力とグローバル配線チャネル20により伝達される信号とが入力されるORゲート21cとを含む。
出力制御ユニット21bには、方向の異なるグローバル配線チャネル20からの信号が入力されている。したがって、接続インタフェース21aは、自セルからの出力の他、上下方向のグローバル配線チャネル20には左右方向からのデータの出力、左右方向のグローバル配線チャネル20には上下方向からのデータを出力してドライブする機構を持つ。接続インタフェース21aは、コンフィギュレーション設定時に割り当てられたタイムスロットのみ自セル21のデータまたは、異方向のグローバル配線チャネル20のデータを出力する。コンフィギュレーション設定時にタイムスロットの割り当ても行われる。
ANR10の大きな特長の一つは配線チャネルの有効利用である。従来のFPGAでは、ポイントとポイントとの間のコネクションが必要であると、そのデータ転送の有無にかかわらず、配線チャネルを確保してワイヤリングコストを上げてしまう。ANR10は配線チャネルの時分割による多重利用が可能である。ファンクションセル11の再構成により、柔軟性を高め、かつ論理量、配線量を下げることで、コストパフォーマンスの高いシステムを構築する。これを実現するには、ANR10のハードウェア(チップ)のみならず、アプリケーションのデータフロー解析による多重化プロセスの抽出や、緻密なデータ転送スケジューリングなど、高度なソフトウェア処理が要求される。
配線チャネルセル21は、配線チャネルセル21に含まれるANR−BASEモジュール14、接続インタフェース21aなどの構成を制御する構成制御ユニット50を含む。構成制御ユニット50は、コンフィグレーション情報230が格納されるコンフィグレーションメモリ10mを含む。コンフィグレーション情報230は、後述するように、エレメント再構成情報231と、チャネル再構成情報232とを含む。
図13(a)に配線チャネルセル21の異なる例を示している。この配線チャネルセル21の接続インタフェース21aはアンドゲート21dをさらに含み、図13(b)に等価なゲート回路で示しているように、前段からの配線チャネルの出力が加わり、自セル21からの出力、上下方向のグローバル配線チャネル20には左右方向からのデータの出力、左右方向のグローバル配線チャネルには上下方向からのデータ出力の計4本から1つを選択してデータをドライブする機構を持つ。
図10に示したように、ANR10は各セル(ANR−BASEモジュール)14の上下左右4方向に直接データ転送可能なローカル配線チャネル27を含む。したがって、隣接するセル(ANR−BASEモジュール)14にデータ転送を行うケースにも容易に対応できる。さらに、データを出力したセル14に対して、そのデータ演算結果を、ローカル配線チャネル27を通して、折り返して転送できる。データが折り返されたセル14(11)は次のタイミングで別ファンクションに再構成された演算を行う。データの折り返しが可能になるため、ファンクションセル14(11)の物理的に、局所化した配置が可能となり、マッピングのグルーピング化が容易になる。
配線チャネルセル21には隣接するファンクションセル11からのローカル配線チャネル4本、グローバル配線チャネル20から4本がそれぞれ、16ビットバスで入力とすると、計128本の入力信号が接続される。これを完全に自由に選択させると128:1のセレクタが16本(それぞれ個別に選択)必要になる。以下の2つの条件を加えることで回路規模を抑えてもよい。
・エレメント単位(ANR−Cx4)13の出力は、対エレメントに対して固定入力とする。例えば各エレメントのビット0の出力はエレメント入力のビット0に、ビット1はビット1にしか接続されない。これにより、接続関係は32:1になる。これにより、エレメントのビット位置関係は固定されるが、接続対象となっている位置のビットにコンフィギュレーションを移動することで、実質的な論理的制約にはならない。
・同一方向からのローカル配線チャネル27とグローバル配線チャネル20はエレメント13の単位で切り替える。データの局所性から、同一方向からのローカル配線チャネル27とグローバル配線チャネル20の混在の可能性は少ない。
図14にANR10のネットワーク構成を示している。ANR10はファンクションセル11を含む配線チャネルセル21を基本構成とする。ANRネットワーク10aの構成は64x64を基本とするが、これに限定されない。ANR10はデータ論理演算とデータ転送のコンビネーションが基本動作となる。そのため、ANR10には、入力データの供給回路と出力データの格納回路、及び、コンフィギュレーション情報の供給回路が必要となる。それら機能はANRインタフェースモジュール(ANR−IF)10bで実現する。また、ANR−IF10bはAXIバスインタフェースモジュール(AXI−ANR−IF)10cを経由してデジタルチップのメインバスであるAXIバス2cを通じて、DDR−RAM2aからデータおよびコンフィギュレーション情報の転送を行う。
ANR−IF10bはANRネットワーク10aの周辺部の配線チャネル21とグローバル配線チャネル20とに接続する。ANR−IF10bは外部に対しては、AXIバス10cもしくは専用I/O経由でデータ転送を行う。コンフィギュレーション情報の転送はグローバル配線チャネル20を共有して行うが、転送用の専用チャネルを設けてもよい。ANR−IF10bはモジュール内部に入出力用の2kバイトのバッファを持ち、最大で16ビット(1GHz)のバースト転送でANR10とデータの入出力を行う。
コンフィギュレーション情報はDDR−RAM2aに格納されたものを、グローバル配線チャネル20を経由してファンクションセル21(11)と配線チャネル20に供給する。コンフィギュレーション情報は起動開始前に各セル21に転送してもよく、起動開始後、動作中に転送してもよい。アプリケーション全体で必要とされる論理回路、データフローの解析はソフトウェアにより最適化され、起動開始前に可能な限りコンフィギュレーション情報を各セル21のコンフィグレーションメモリ転送しておき、起動開始後はコンフィギュレーション情報のデータ転送量を抑えることが望ましい。
図15にANR10の基本動作を確認するモデルを示している。動作モデルは、4ビット入力2本、4ビット出力1本のモジュールで6つのコンフィギュレーションを変更することで、それぞれ加算器、減算器、デコーダなどとして動作させることを示している。このモデルは、加算器の部分を基本セル(ANR−C1)12にマッピングしたものである。今回のマッピングでは2段のスライス(スライス1およびスライス2)に分けたことにより、物理的に同一のセル13を論理実行後に別の論理に再構成する。
図16に、ANR10を備えたデータ処理装置1を含むシステム(OLP)100の一例を示している。このシステム100は、FAIMSなどのセンサーから得られたデータ101を解析するシステムであり、ANR10に様々な機能を時分割または並列に実装することが可能である。このシステム100は、様々なアプリケーションのプラットフォームとして使用できる。アプリケーションのいくつかの例は、ヘルスケアモニタリング100a、プロセスモニタリング100b、セキュリティーモニタリング100c、コンシューマー向けの匂いビジネスアプリケーション100dである。装置1には、FAIMS(イオン移動度センサー)、MS(質量センサー)などのセンサーから得られるデータ101の他に、温度、湿度、圧力、周辺画像、GPSなどの補助センサーデータ102と、サンプリングシステムのデータ、たとえば、サンプリングタイム、サンプリング対象に関するデータ103が入力される。
ANR10には、たとえば、測定対象物のカテゴリーなどを判断して解析条件を設定するパーサ110と、ベースライン補正などのデータ補正を行うユニット111と、ピークを規格化したり、ノイズを低減するユニット113と、センサーデータ101に含まれるピークを検出したり分離するユニット114と、分離されたピークから種類(性質、属性)および量を判断する分析エンジン115と、SOM(自己組織化写像)、ニューラルネットワークなどの手法を用いて分析エンジン115において得られた情報から測定元の化学物質を類推または分類するエンジン116と、装置内部のデータベースまたはネットワークを経由してデータベースサーチを行い、測定対象の化学物質を判断するユニット(機能)117が、時分割でマッピングされる。
CPU2bは、ANR10の再構成を支援すると共に、ANR10における処理を支援するための機能を実現する。たとえば、CPU2bは、参照データベースにアクセスする機能124、クラウド(LAN)にアクセスする機能123、ユーザーインタフェース機能122、データ取得制御機能121を提供する。これらの機能は、ANR10の空きスペースや空き時間を用いてANR10に実装することも可能である。
リアルタイムで化学物質を検出および分析のためには大規模並列データ処理エンジンが要望される。リアルタイムで化学物質を検出および分析することにより、疾患検出のバイオマーカの同定や定量化、健康状態あるいは生体機能の監視、遠隔監視技術による管理医療の提供といった画期的なサービスをユーザーに提供することが可能となる。そのためのプラットフォームは、知的であり、拡張可能であり、さまざまなアプリケーションやパフォーマンスへの要求に答えられる必要がある。ANR10を含む装置1は、並列処理ハードウェアとしての機能に加え、動的にプログラム可能であり、上記の要求にマッチしたハードウェアである。
センサーの1つは、FAIMS(Field Asymmetric ion mobility spectrometer)である。FAIMSは、空気などに含まれる微量な化学成分の検出に適しており、警備、環境モニタリング、ヘルスケア、産業プロセス、エネルギーなどの広範囲にわたるアプリケーションに適用されようとしている。FAIMSおよびMS(質量センサー)はチップレベルの小型軽量なものが市場に提供され始めており、チップレベルで実現できるANR10を含む装置1を解析用のプラットフォームとして採用することにより、小型、軽量、機械的および熱的に堅牢で、低パワーの、チップレベルでのリアルタイム化学物質分析装置を提供できる。
図17に、装置1において実現するアプリケーション(仕様)131から、高位合成132、RTLコーディング133、論理検証134、論理合成(ネットリスト合成)135の過程を経てネットリスト136を生成し、装置1へのマッピング137、ボードレベル評価138までの流れ(設計フロー)を示している。ANR10の設計フローの大部分は、標準的な設計フローを採用している。違いとしては、RTL133がリミテッド・セル・ライブラリを有する構造的なゲート・レベルのネットリストに合成されることである。リミテッド・セル・ライブラリでサポートされるプリミティブは、2または3入力のANDゲート、ORゲート、XORゲート、インバータ、FF、MUXなどである。このライブラリは、性能への要求に応じて他のプリミティブを含むように進化させることができる。
図18に、RTL181からネットリスト136を介してANR10に実装する情報(コンフィグレーション情報)230を生成する装置(ネットリストコンバータ)200の概略構成を示している。ネットリストコンバータ200は、CPUおよびメモリを備えたコンピュータであり、以下に説明する機能を実行する命令を含むプログラム(プログラム製品)をインストールすることによりネットリストコンバータ200として機能する。仕様131に基づいて生成および合成されたネットリスト(ゲートレベルネットリスト)136を、マッピングのターゲットとなるファンクションセル11に実装する情報230に変換し、その際に、総面積もしくは遅延時間といった目的となる機能を最適化することである。本例においては、ターゲットセル11は、上述したANR−BASE14である。
デザインコンパイラ190が、RTL181と、上述したリミテッド・セル・ライブラリ182を用い、ゲートレベルネットリスト136を生成する。このタスクは、サブジェクト・グラフと呼ばれるシンプルなゲートのグッド・イニシャル・マルチレベル・ネットワークとして、与えられたネットリストを表すことを含む。サブジェクト・グラフは、その後、サブジェクト・グラフ内の各ノードにマッチする異なるライブラリ・ゲートを列挙(マッチング・ステップ)し、最適な組み合わせを選択することによりライブラリ・ゲートのマルチレベル・ネットワークに変換可能である。
ネットリストコンバータ200は、ネットリスト136から、ユーザーセル構成ライブラリ197と、Axioniperセルライブラリ(ANRセルライブラリ)198とを参照して、ANR10にマッピングされるコンフィグレーション情報230を生成する。コンフィグレーション情報230は、論理演算を実装する単位(エレメント、ブロック、セル)となるリソースを再構成するエレメント再構成情報231と、単位(エレメント)を接続するチャネルを再構成するチャネル再構成情報232とを含む。ネットリストコンバータ200は、ネットリスト解析・最適化ユニット210と、コンフィグレーション情報生成ユニット220とを含む。ネットリスト解析・最適化ユニット210は、最適化ユニット211と、テクノロジーマッピングユニット(分析ユニット)212とを含む。テクノロジーマッピングユニット212は、k−フィージブルカットを行うユニット213と、カットを解析するユニット214とを含む。
ANR−BASEモジュール14の基本構成であるANR−C1モジュール12は基本要素として4ビット入力のLUTとFFとを含む構成と解釈される。4つのANR−C1モジュール12により構成されるANR−C1x4モジュール13は、4つのLUTと、4つのFFとを含む構成と解釈される。したがって、マッピングユニット212はLUTベーステクノロジーマッピングユニットとしての機能を含む。
図19(a)に組合せ論理の例として、フル・アダーのゲート回路141を示し、図19(b)に、その真理値表142を示し、図19(c)に真理値表142をLUT143に実装した様子を示している。組合せ論理は、同じ数の入力と出力を持つLUT143に実装される。LUT143は、3入力143iと、2出力143oとを含む。
真理値表のサイズは、入力の数に基づいて指数関数的に大きくなる。3入力であれば8行、4入力であれば16行、5入力であれば32行である。真理値表とLUT内の行数とが同じであり、LUTは入力数に基づき指数関数的に大きくなる。LUT内のSRAMのビット数は2i×oで表される。ただし、iは入力数、oは出力数である。たとえば、64入力、1出力の組合せ論理では、264(1.84×1019)のSRAMのビットが必要となる。このような大きなLUTを使用することは明らかに実現可能ではない。
ANR10は、階層的な構造のセル12〜14を含み、それぞれを単位としたとしてLUTが構成でき、それら複数のLUT上に回路(論理演算)をマッピングできる。したがって、実装する回路を(入力と出力が同じ数の)LTUにフィットするように小さな回路に分割することでLUTが膨大な大きさになることを抑制する。LUTベーステクノロジーマッピングユニット211はネットリスト136を、たとえば、3入力、2出力のLUTにフィットするように分割する。
図20(a)に、リミテッド・セル・ライブラリ182を用いたネットリスト171を、ANR10にマップするネットリスト172に変換した例を示している。ANR10にマップするためのネットリスト172は、エレメント再構成情報231と、チャネル再構成情報232とを含むコンフィグレーション情報230に対応する。この例では、ネットリスト171を、3入力、2出力のLUTにフィットするように分解し、図20(b)に示す4入力、4出力のANR−C1x4モジュール13をエレメントとしたネットリスト172を生成してANR10にマップしている。
図21は、ネットリスト145を4入力のエレメント146に分解する例を示している。エレメントに分けて実装する論理回路に含まれるゲート数は、LUTへのマッピングに影響を及ぼさない。重要なことは、エレメントに分解する際の入力と出力の数である。2個または3個の入力しか持たない大規模回路は一般的ではないが、そのような大規模回路も小規模回路と同様に入力数が同じであれば、1つの3入力、1出力のLUTに実装されうる。
図22に、ネットリストコンバータ200において、論理演算部であるANR10を再構成するコンフィグレーション情報230を生成する過程250をフローチャートにより示している。このコンフィグレーション情報を生成する過程(生成方法)250は、CPU、メモリなどのハードウェア資源を含むコンピュータを動作させるプログラム(プログラム製品)として適当な記録媒体に記録された状態またはネットワークを介して提供される。
ステップ251でネットリスト136を読み込み、ステップ252でべリログ解析を行い、ステップ253でデータフローグラフ解析を行い、ステップ254で論理を最適化する。その後、ステップ255でk−フィージブルカットを含むテクノロジーマッピングを行い、ステップ256でカットされた結果を解析する。その解析結果に基づいて、ステップ257において、エレメント再構成情報231とチャネル再構成情報232とを含むコンフィグレーション情報230を生成する。
ステップ252のベリログ解析(Verilog Parser)においては、リミテッド・セルを持つ構造的なゲート・レベルのネットリスト136から中間の最適化されていないデータフローグラフが構築される。ステップ253のデータフローグラフ解析(Data flow graph analysis)においてはマルチ出力AIG(And-Invert-Graph)が、回路の各プライマリ出力に対して構築される。データフローグラフ解析においては、ユーザ・セル構造ライブラリ197がパーサ(function cell parser)261を介して参照され、グラフ内の各ノードにマッチする異なるライブラリ・ゲートが列挙され、ライブラリ・ゲートのマルチレベル・ネットワークに変換される。
ステップ254の論理最適化(Logic Optimization)はデザイン・フローの中で重要なステップである。論理は、冗長な論理を削除するために最適化される。論理の最適化においては、まず、テクノロジー・インディペンデントな論理最適化を行う。1つは、単純化(簡素化)であり、機能が表現されている方法を変更する。次にネットワークを再構築する。たとえば、ノードを追加および削除する。さらに遅延時間を再構築する。たとえば、クリティカル・パスの高さを減少させる最適化を行う。また、コストに基づく回路の改善を行う。同じ機能性を維持させることが考えられる。さらに、ブーリアンネットワークを用いた最適化(ブール評価/分解)、単純ファクタリング、リテラルの最少化といった最適化を行う。以降の処理においては、Axioniperセル構造ライブラリ198がパーサ262を介して参照される。
図23にブール評価の例を示している。図23(a)は入力されたブーリアンネットアーク261の例を示す。図23(b)は、適当なコスト関数を用いて最適化した状態で複数のLUTを用いてネットワークを実装した回路262を示す。
本例では、ステップ255において、ANR−C1モジュール12を再構成の最小要素(エレメント)として選択し、LUTベースのテクノロジーマッピングによりANR−C1モジュール12へテクノロジーマッピングを行う。LUTベーステクノロジーマッピングにおいては、面積および/または遅延が最少になるようにLUTにネットリストをマッピングする。全体的なLUTマッピング・アルゴリズムの中でレイテンシが最適化される。
ステップ255では、マッピングユニット212が、テクノロジーマッピングのためにノードの組み合わせでAIGをカットする。マッピングユニット212のノードカットユニット213が、構造表現AIGを入力表現としてAIG内の各ノードに対する全てのカット(k−フィーシブル・カット)を網羅的に列挙する。カットは論理を分離できるノードの組み合わせを示す。テクノロジーマッピングにおいては、最善のレイテンシ数となるカットを選択し、ヒューリスティックアプローチによりマッピングする。k−フィーシブルカットは、カットした後のサイズが整数k以下であることを意味する。
図24にk−フィージブルカットの例を示す。本例のエレメントであるANR−C1モジュール12の入力数は4であり、4−フィージブルカットが探索されるが、簡単のため、以下では3−フィージブルカットを例に説明する。図24(a)の構造表現AIG270において、カット(a、b、c)272およびカット(p、b、c)271は、ノードrの3−フィーシブルカットである。k−フィーシブルカットを行うことによりレイテンシを調整できる。また、ノードとそのカット内にあるノードとの間の論理は、図24(b)および(c)に示すようにk−LUT(本例では3入力LUT)275および276によりそれぞれ置き換えられる。
ステップ255においては、ネットリスト136に含まれる各ノードに対する全てのカットの中から、カットした後のノードの数がテクノロジーマッピングを行うエレメント、本例では4入力のANR−C1モジュール12の入力数4以下のk−フィージブルカット(4−フィージブルカット)が列挙され、それぞれのカットについてテクノロジーマッピング処理が行われる。その際、最良のレイテンシと面積が得られるカットのセットが選択される。整数kは、1以上、エレメントの入力数以下の整数である。エレメントの入力数が数百になることは基本的にはなく、整数kは256以下であることが望ましく、32以下であることがさらに好ましく、16以下であることがさらに好ましい。
全てのk−フィーシブルカットのセットを網羅的に取得するためのアプローチの例は、ボトム・アップ・アプローチとトップ・ダウン・アプローチである。図25に示したAIG280において、ボトム・アップ・アプローチ289では、カットの計算はボトムアップで行われ、kよりも大きいサイズのカットは破棄される。トップ・ダウン・アプローチ288においては、まず、ノードtのカット(u、y)281を展開する。ノードyをそのカット(r、s)で置き換えることにより、ノードtの新しいカット(u、r、s)282が展開される。以降、同様にしてカットが展開される。
網羅的にカットを列挙する際は、あまりにも多くの組み合わせが可能となる。このため、適当な数、たとえばkが7以上のものは破棄するような処理を採用することが可能である。ただし、ファット・ベリーの問題があることを認識しなければならない。すなわち、トップ・ダウン・アプローチ288において、フィージブルカットの整数kが3の場合でも、ノードtのカット(a、b、c)284を取得するために、kが4以上のファット・ベリーであるカット(p、q、r、s)283を越えて拡張しなければならない。したがって、ステップ255は、全てのk−フィーシブルカットを得るために整数kよりも大きな中間カットを生成する処理を含む。
ステップ255において、全てのk−フィーシブルカットを列挙する代わりに、サブセットF(ファクタ・カット)を列挙してもよい。サブセットFから他のk−フィーシブルカットが簡単に生成できる。
ステップ256において、マッピングユニット212のカット解析ユニット214が、上記にて得られたk−フィージブルカットを網羅的に解析する。最も重要な着目点(ファクタリング)の1つは、カットの重複を検出することである。重複したカットは同一のANR−C1モジュール12に実装できる可能性がある。重複したカットは入力が一致するので、上位階層である同一のANR−C1×4モジュール13に含まれる他のANR−C1モジュール12に実装できる可能性がある。
着目点の他の1つは、列挙されたカットの圧縮である。k個以下のノードを含むカットを複数集めてk個のノードのカットに圧縮することにより1つのANR−C1モジュール12に実装できる可能性がある。さらに異なる着目点はカットの支配や、kの最適化である。
ステップ257においては、生成ユニット220がカットの解析結果に基づいて、エレメントであるANR−C1モジュール12を再構成する情報231と、ANR−C1モジュール12の接続を、グローバルチャネル20を含めて再構成する情報232とを含むコンフィグレーション情報230を生成する。このステップ257においては、エレメント再構成情報231およびチャネル再構成情報232が時分割で論理演算部であるANR10を再構成する単位に分割され、ANR10にローディングされるコンフィグレーション情報230が生成される。
図26にRTLの例として8ビットのエンコーダーのRTL表現291を示している。9つの入力と3つの出力がある。このRTL181がリミテッド・セル・ライブラリを持ったゲートレベルネットリスト136を得るために、デザイン・コンパイラ190または類似する合成ツールに送られる。
図27は、リミテッド・セル・ライブラリ182を用いてデザイン・コンパイラ190により生成された等価なゲートレベルネットリスト136のコード292を表している。このコード292が、ネットリスト・コンバータ200に入力として与えられる。
図28に合成後のデータ・フロー・グラフ293を示している。ゲート・レベルのネットリストの入出力が図的な表現として三角形で示されている。各中間ノードは、円で表示されている。このグラフは、ネットワークの再構築、ブール評価および分解といった標準的な論理最適化ステップを用いて最適化された後のものであり、中間ノードが29個から12個に削減されている。
図29に各ノードのマッピング情報294を示している。それぞれの式を1つのANR−C1モジュール12にマッピングできる。図30にコア(ANR−C1モジュール)12へのパッキングのアルゴリズム295を示している。まず、ANR−C1モジュール12の入力が最も多くなる論理が選択され、次に、このモジュールとシェアする入力または出力が最も多くなる論理が選択され、入力数がオーバフローするまで繰り返される。そして、ANR−C1モジュール12の必要数が最小値になる組合せを見つける。たとえば、ANR−C1x4モジュール13がANR−BASEモジュール14に含まれた状態で実装されるのに最適な数が得られるまで上記を繰り返す。
図29に示すように、ノードn14とノードn15とは3つの入力をシェアしており、これらの2つのノード間での入力の最大数は4である。これらの2つのノードは、1つのノードを形成するために組み合わされる。同様にして、ノードn19およびn20が、ノードn18を形成するために組み合わされる。
図31に最適化後の各ノードのマッピング情報296を示している。最適なパッキングにより、12個の方程式が10個の方程式になる。各方程式(代入文)は、最大4つの入力と1つの出力を持つ。各文は、簡単にANR−C1モジュール12にマッピングすることができる。したがって、8ビットの符号化回路に10個のANR−C1モジュール12が用いられる。