説明

リコンフィグ可能な集積回路装置

【課題】コンテキスト間のデータ授受を無駄にハードウエアを消費することなく行うリコンフィグ可能な集積回路装置を提供する。
【解決手段】コンフィグレーションデータに基づいて任意の演算状態に構築されるリコンフィグ可能な集積回路装置において,任意の演算状態に構築可能な複数のプロセッシングエレメントと,複数のプロセッシングエレメントを任意の状態で接続するプロセッシングエレメント間ネットワークとを有し,プロセッシングエレメントは,入力データ保持レジスタと,入力データ信号を演算する演算処理回路と,演算結果データを保持する出力データ保持レジスタとを有し,ホールドモードを有効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,入力信号がバリッド,インバリッドにかかわらず,入力データ信号を保持し,演算処理回路は保持された入力データ信号について演算処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は,リコンフィグ可能な集積回路装置に関する。
【背景技術】
【0002】
リコンフィグ可能な集積回路装置は,複数のプロセッシングエレメントと,それらプロセッシングエレメント間を接続するネットワークとを有し,外部または内部のイベントに応答して,シーケンサがプロセッシングエレメントとネットワークに回路構成用のデータであるコンフィグレーションデータを設定し,当該コンフィグレーションデータに応じてプロセッシングエレメントとネットワークが任意の演算状態または演算回路を構築する。従来の一般的なプログラム可能なマイクロプロセッサは,メモリに記憶されている命令を順番に読み出し逐次的に処理する。マイクロプロセッサのハードウエア構成は画一的であるので,様々な異なる処理を行うためには,限られた命令を組み合わせたプログラムをプロセッサに実行させなければならず,処理時間の短縮には一定の限界がある。
【0003】
それに対して,リコンフィグ可能な集積回路装置は,加算器,乗算器,比較器などの演算機能を有するALUや,遅延回路,カウンタなどの複数種類の演算回路を持つ複数個のプロセッシングエレメントと,プロセッシングエレメント間を接続するネットワークとを有する。この複数のプロセッシングエレメントとネットワークを,コンフィグレーションデータによって所望の構成に構築(コンフィグレーション)し,その演算状態で所定の演算を実行する。一つの演算状態におけるデータ処理が完了すると,別のコンフィグレーションデータにより別の演算状態が構築され,その状態で異なるデータ処理が行われる。
【0004】
このように,コンフィグレーションデータを切り替えることで異なる演算状態を動的に構築し,仮想的に大きな回路を時分割で実行することができる。しかも,それぞれが専用のハードウエア回路であるので,マイクロプロセッサがプログラムを処理するよりも高速に処理することができる。リコンフィグ可能な集積回路装置については,特許文献1,2,3に記載されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2010−244238号公報
【特許文献2】特開2007−274397号公報
【特許文献3】特開2006−11924号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
上記の分割された回路の単位はコンテキスト(Context)と呼ばれる。動的に再構成可能な回路の動作方式のうち,コンテキストを切り替えることにより目的の回路動作を実現する方式をマルチコンテキスト方式と呼ぶ。近年においてLSIの回路設計は,RTLなどのハードウエア記述言語により記述された回路記述ファイルを,専用のコンパイラにより,動的に再構成可能な回路上で実行可能な形式に変換する。つまり,専用コンパイラは,LSI内の回路の物理的な制約に対応して,コンテキストの分割,各コンテキストでの回路合成,配置配線を含む変換処理を行う。
【0007】
このように,複数のコンテキストを数クロックサイクルで切り替える場合,連続するコンテキスト間で演算データを授受する必要がある。一般的には,あるコンテキストの回路が生成したデータは,RAMやLUTなどのレジスタファイルに書き込まれ,次のコンテキストの回路が,そのレジスタファイルからデータを読み出して目的の処理を行う。このように時間的に連続するコンテキスト間でのデータの授受をレジスタファイルを利用して行うと,前のコンテキストにおいてデータを書き込むレジスタファイルと,後のコンテキストにおいてデータを読み出すレジスタファイルとが必要になる。これは回路資源と配線資源の消費が増大し,効率的に再構築することを妨げることになる。
【0008】
そこで,本発明の目的は,時間的に連続するコンテキスト間のデータの授受を回路資源の消費を増大することなく可能にするリコンフィグ可能な集積回路装置を提供することにある。
【課題を解決するための手段】
【0009】
実施の形態の第1の側面は,コンフィグレーションデータに基づいて任意の演算状態に構築されるリコンフィグ可能な集積回路装置において,
それぞれ演算回路を有し,前記コンフィグレーションデータに基づいて,任意の演算状態に構築可能な複数のプロセッシングエレメントと,
前記コンフィグレーションデータに基づいて,前記複数のプロセッシングエレメントを任意の状態で接続するプロセッシングエレメント間ネットワークとを有し,
前記プロセッシングエレメントは,入力バリッド信号と入力データ信号を入力し,出力バリッド信号と出力データ信号を出力し,更に,入力データ保持レジスタと,前記入力データ信号を演算する演算処理回路と,前記演算処理回路の演算結果データを保持する出力データ保持レジスタとを有し,ホールドモードを有効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,前記入力バリッド信号がバリッド,インバリッドにかかわらず,前記入力データ保持レジスタが当該更新時の入力データ信号を保持し,前記演算処理回路は前記入力データ保持レジスタに保持された入力データ信号について演算処理を行う。
【発明の効果】
【0010】
第1の側面によれば,時間的に連続するコンテキスト間のデータの授受を回路資源の消費を増大することなく可能にする。
【図面の簡単な説明】
【0011】
【図1】本実施の形態におけるリコンフィグ可能な集積回路装置のリコンフィグ回路ユニットの構成例を示す図である。
【図2】ホールドモードを有しないプロセッシングエレメントの構成図である。
【図3】バリッド信号制御回路22の回路図の一例を示す図である。
【図4】コンフィグレーション制御回路20の一例を示す図である。
【図5】演算処理回路24の一例を示す図である。
【図6】図2のプロセッシングエレメントの演算動作を示す図である。
【図7】図2のプロセッシングエレメントのコンフィグレーションデータが更新される時の演算動作を示す図である。
【図8】結線ネットワークの一例を示す図である。
【図9】レジスタファイルを内蔵するプロセッシングエレメントの構成とそのシンボルを示す図である。
【図10】あるデータフローグラフを示す図である。
【図11】図10のデータフローグラフが2つのコンテキストに分割された例を示す図である。
【図12】図11の2つのコンテキストに分割された回路単位の動作を示すタイミングチャート図である。
【図13】本実施の形態における2つのコンテキストに分割された例を示す図である。
【図14】本実施の形態におけるプロセッシングエレメントの構成図である。
【図15】図14のプロセッシングエレメントの詳細な構成図である。
【図16】図15のプロセッシングエレメントの動作例を示すタイミングチャートである。
【図17】図13のコンテキスト#0,#1について,本実施の形態のプロセッシングエレメントのホールドモードを利用した場合の動作を示すタイミングチャート図である。
【図18】本実施の形態の変型例における動作を示すタイミングチャート図である。
【発明を実施するための形態】
【0012】
図1は,本実施の形態におけるリコンフィグ可能な集積回路装置のリコンフィグ回路ユニットの構成例を示す図である。プロセッシングエレメントPE0〜PE3と,メモリプロセッシングエレメントPE5と,それ以外のプロセッシングエレメントPE4とが,プロセッサ間ネットワークNET内のセレクタ4を介して任意に接続可能に構成されている。各プロセッシングエレメントPE0〜PE5は,コンフィグレーションデータCD0〜CD5に基づいて任意の構成に構築可能であり,また,ネットワークNET内のセレクタ4(4a,4b,4c)も,コンフィグレーションデータCDsに基づいて任意の接続状態に構築可能である。つまり,各プロセッシングエレメントの2つの入力に対応する1対のセレクタ4は,セレクタへのコンフィグレーションデータCDに基づいて,他のプロセッシングエレメントの出力と入力ポート2の入力の中からいずれかを選択する。そして,プロセッシングエレメントPEは,2つの入力を演算して1つの出力を出力する。これらの入力と出力は所定のビット数のデータである。
【0013】
セレクタ4は,図中左下に一例として示されるとおり,コンフィグレーションデータCDを格納するレジスタ41と,レジスタ41のデータに応じて入力を選択するセレクタ回路42と,セレクタ回路42の出力をクロックCKに同期してラッチするフリップフロップ43とで構成される。また,ネットワークNETは,データの入力ポート2と出力ポート3ともセレクタ4を介して所望の接続を可能にしている。
【0014】
本実施の形態におけるリコンフィグ可能な集積回路装置は,ホールドモードにリコンフィグレーション可能なプロセッサエレメントを有する。通常,プロセッサエレメントは,入力バリッド信号が有効(バリッド)の時の入力データを演算処理し,その演算処理結果データを出力データとして,それが有効(バリッド)であることを示す出力バリッド信号と共に出力する。これにより,プロセッサエレメントの出力端子に接続される後段のプロセッサエレメントは,出力バリッド信号に基づき出力データを有効な入力データとして入力し演算処理することができる。
【0015】
ホールドモードとは,入力バリッド信号がバリッドでない時でも入力データを入力して演算処理し,演算処理結果データである出力データの出力タイミングに同期して,バリッドな出力バリッド信号をその出力データと共に出力する動作モードである。これにより,コンフィグレーションデータの更新によりコンテキストが更新された時の,入力バリッド信号が無効(インバリッド)状態での入力データを,入力し演算処理することができる。その結果,コンフィグレーションデータが更新される前の第1のコンテキスト内のプロセッサエレメントの出力データを,コンフィグレーションデータが更新された後の第2のコンテキスト内のプロセッサエレメントに,レジスタファイルを介することなく直接引き渡すことができる。
【0016】
一方,コンフィグレーションデータ更新時には,プロセッシングエレメントは出力バリッド信号を一時的にインバリッドにして,プロセッシングエレメント間でのデータのやりとりを禁止する。これによりコンフィグレーションデータ更新時での誤動作の可能性をなくしている。ホールドモードに構築されたプロセッシングエレメントは,出力バリッド信号がインバリッドであっても入力データを入力して演算することができる。
【0017】
図2は,ホールドモードを有しないプロセッシングエレメントの構成図である。図2では,一般的なクロック,リセット信号などは,既知の信号であるので省略している。このプロセッシングエレメントPEは,1ビットの入力バリッド信号VI0,VI1と共に2つのnビットの入力データ信号DI0,DI1を入力し,入力バリッド信号がバリッドの時の入力データ信号の演算結果であるnビットの出力データ信号DOを1ビットの出力バリッド信号VOと共に出力する。入力バリッド信号VI0,VI1は,入力データ信号DI0,DI1が演算対象として有効なデータか否かをそれぞれ示す信号である。また,出力バリッド信号VOは,出力データ信号DOが演算結果データとして有効なデータか否かを示す信号である。この出力バリッド信号VOは,後段に接続されるプロセッシングエレメントにとっては入力バリッド信号になる。
【0018】
更に,プロセッシングエレメントPEは,コンフィグレーションデータCFGをフェッチイネーブル信号FETCHENに応答して入力し内部にコンフィグレーションデータを分配するコンフィグレーション制御回路20と,入力データ信号DI0,DI1を演算処理する演算処理回路24と,入力バリッド信号VI0,VI1からバリッドモード信号Vmodeに応じて内部入力バリッド信号i_vinを生成するバリッド信号制御回路22と,出力バリッド信号保持レジスタFF2と,出力データ保持レジスタFF3とを有する。演算処理回路24は,コンフィグレーション制御回路20から供給されるオペレーションコードOpeCodeに応じてコンフィグレーションされる。また,ストップ信号STOPは,デバッグ工程において全ての回路動作を停止させるための信号であり,通常動作状態ではストップ信号STOPは常時Lレベルである。
【0019】
図3は,バリッド信号制御回路22の回路図の一例を示す図である。バリッドモードには,両方の入力バリッド信号VI0,VI1が共にバリッド(Hレベル)の時に内部バリッド信号i_vinをHレベルにするモードと,いずれかの入力バリッド信号VI0,VI1がバリッドの時に内部バリッド信号i_vinをHレベルにするモードと,入力バリッド信号VI0がバリッドの時に内部バリッド信号i_vinをHレベルにするモードと,入力バリッド信号VI1がバリッドの時に内部バリッド信号i_vinをHレベルにするモードと,合計で4つのモードがある。これら4つのモードがバリッドモード信号Vmodeにより区別される。そして,バリッド信号制御回路22は,1/4のセレクタ221を有し,2ビットのバリッドモード信号Vmodeに応じて,セレクタ221が,上記の4つのモードに対応する信号を選択し,内部バリッド信号i_vinとして出力する。
【0020】
図4は,コンフィグレーション制御回路20の一例を示す図である。コンフィグレーション制御回路20は,フェッチイネーブル信号FETCHENがHレベルの時のmビットのコンフィグレーションデータCFGをクロックCLKの立ち上がりエッジに応答してラッチし,内部にコンフィグレーションデータo_CFGを出力するレジスタFFaを有する。レジスタFFaはフリップフロップである。通常動作状態ではストップ信号STOPがLレベルであるので,ANDゲート201を介してフェッチイネーブル信号FETCHENがそのままフリップフロップFFaのイネーブル信号として入力される。また,コンフィグレーションリセット信号CRSTXに応答してフリップフロップのラッチ状態がリセットされる。
【0021】
図5は,演算処理回路24の一例を示す図である。この演算処理回路24は,オペコードOpecodeによって種々の演算状態にリコンフィグレーション可能な演算回路ALUを有し,2つの入力データ信号DI0,DI1に対して,コンフィグレーションされた演算回路が演算処理を行い,演算結果信号ALU_outとして出力される。リコンフィグレーション可能な演算処理には,例えば,四則演算と,シフト動作と,比較動作と,AND,OR,EXOR,NOTなどの論理演算などが含まれる。また,プロセッサエレメントのうち,後述するようにRAMやLUTなどのレジスタファイルを内蔵するものもある。
【0022】
図6は,図2のプロセッシングエレメントの演算動作を示す図である。この例では,コンフィグレーションデータで指定されるバリッドモードは,Vmode=11の例であり,両入力バリッド信号VI0,VI1が共にHレベル(バリッド)の場合に内部バリッド信号i_vinをHレベルにするモードである。つまり,入力データ信号DI0,DI1が共にバリッドな信号の場合に,演算結果の出力データ信号DOがバリッドな出力バリッド信号VOと共に出力される。また,この例でのプロセッシングエレメントの演算レイテンシは1クロックサイクルである。
【0023】
最初に,クロックCLKのサイクルT0,T1で,入力バリッド信号VI0,VI1が共にHレベル(バリッド)になり,データ信号i0,i1が有効な入力データ信号DI0,DI1として入力されている。そして,演算処理回路24がそれらの入力データ信号i0,i1を演算処理し,1クロックサイクルのレイテンシ後のサイクルT1で,出力バリッド信号VOのHレベル(バリッド)と共にデータ信号o0が有効な出力データ信号VOとして出力されている。同様に,サイクルT3で入力バリッド信号VI0,VI1が共にHレベルになり,データ信号i4,i5が有効な入力データ信号DI0,DI1として入力され,1クロックサイクルのレイテンシ後のサイクルT4で,出力バリッド信号VOのHレベル(バリッド)と共にデータ信号o1が有効な出力データ信号VOとして出力されている。
【0024】
図2に示されたプロセッシングエレメントPEは,演算処理回路24が入力データ信号DI0,DI1を入力バリッド信号VI0,VI1の状態にかかわらず直接入力して演算処理を行う。これは,図1に示したとおり,プロセッシングエレメントPEの入力端子の前段に設けられたネットワークNET内のセレクタ,およびプロセッシングエレメントPEの演算回路の論理遅延と配線遅延が大きくなるため,プロセッシングエレメントPE内での入力データ信号への論理追加による遅延をできるだけ少なくするためである。ここでいう論理追加とは,たとえば入力データ信号DI0,DI1を入力バリッド信号の状態によってマスクするなどの論理回路を挿入することなどを意味する。
【0025】
ただし,プロセッシングエレメントPEは,バリッド状態の入力バリッド信号VI0,VI1に応答して,演算処理回路24の演算処理に必要なレイテンシ後に,バリッドな出力バリッド信号VOを出力する。これにより,有効な入力データ信号VI0,VI1に対応する演算結果データである出力データ信号VOが,バリッドな出力バリッド信号VOと共に出力される。サイクルT2でのインバリッドな入力バリッド信号と共に入力される入力データ信号DI0,DI1に対しては,演算処理に必要な1レイテンシ後のサイクルT3では出力バリッド信号VOはインバリッド状態になっている。したがって,サイクルT2での有効でない入力データ信号に対する出力データ信号DOに対しては,出力バリッド信号VOがインバリッド(Lレベル)となる。このことは,実質的に,プロセッシングエレメントPEが有効でない入力データ信号に対する演算処理は行わないことと等価である。
【0026】
なお,演算処理回路のレイテンシは,オペレーションコードOpecodeに応じて設定され,出力バリッド信号の出力レジスタFF2もそのレイテンシに対応したタイミングで出力バリッド信号VOを生成する。
【0027】
図7は,図2のプロセッシングエレメントのコンフィグレーションデータが更新される時の演算動作を示す図である。この例でも,コンフィグレーションデータで指定されるバリッドモードはVmode=11であり,ストップ信号STOPはLレベルである。
【0028】
図7の例では,サイクルT1でフェッチイネーブル信号FETCHENがHレベルになると共にコンフィグレーションデータCFG=Aが入力されて,サイクルT2〜T5の期間,プロセッシングエレメントPEがコンフィグレーションAの状態に構築される。同様に,サイクルT5でフェッチイネーブル信号FETCHENがHレベルになりコンフィグレーションデータCFG=Bが入力されて,サイクルT6〜T9の期間プロセッシングエレメントPEがコンフィグレーションBの状態に構築される。
【0029】
サイクルT1で入力されるコンフィグレーションデータCFG=Aは,次のサイクルT2のクロックCLKの立ち上がりエッジでコンフィグレーション制御回路20によりラッチされ,内部コンフィグレーションデータo_CFGとして内部に供給され,その結果プロセッシングエレメントPEはコンフィグレーションAの状態に構築される。つまり,サイクルT2がコンフィグレーションが更新されるクロックサイクルである。そして,サイクルT3でバリッドな入力バリッド信号VI0,VI1と共に入力データ信号i0,i1が入力され,1クロックレイテンシ後のサイクルT4でバリッドな出力バリッド信号VOと共に演算結果o0が出力データ信号DOとして出力される。
【0030】
同様に,T5で入力されるコンフィグレーションデータCFG=Bは,次のサイクルT6のクロックCLKの立ち上がりエッジでコンフィグレーション制御回路20によりラッチされ,内部コンフィグレーションデータo_CFGとして内部に供給され,その結果コンフィグレーションBの状態に構築される。サイクルT6でバリッドな入力バリッド信号VI0,VI1と共に入力データ信号i4,i5が入力され,1クロックレイテンシ後のサイクルT7でバリッドな出力バリッド信号VOと共に演算結果o1が出力データ信号DOとして出力される。
【0031】
いずれのコンフィグレーションA,Bでも,サイクルT1,T5でのフェッチイネーブル信号FETCHENのHレベルに応答して,次のサイクルT2,T6では出力バリッド信号VOが共にインバリッド(Lレベル)にされている。これは,図2のアンドゲート25による。このように,コンフィグレーションデータの更新時であるサイクルT2,T6では出力バリッド信号VOがLレベルにされて,コンフィグレーション切り替え後の意図しないデータの伝播を防いでいる。ただし,コンフィグレーションBでは,サイクルT6で既にバリッドな入力バリッド信号VI0,VI1と共に入力データ信号i4,i5が入力されている。これは,後述するレジスタファイルを内蔵したプロセッシングエレメントからの入力データ信号である。
【0032】
図8は,結線ネットワークの一例を示す図である。図8の左側には,8個のプロセッシングエレメントPE0〜PE7と,プロセッシングエレメント間を接続するネットワークNETと,1個のプロセッシングエレメントPE8とが示され,ネットワークNETは,コンフィグレーションレジスタ41と,4入力1出力の2つのセレクタ4_1,4_2を有する。セレクタ4_1の4つの入力には4つのプロセッシングエレメントPE0〜PE3の各出力が接続され,セレクタ4_2の4つの入力には4つのプロセッシングエレメントPE4〜PE7の各出力が接続される。そして,セレクタ4_1,4_2へのコンフィグレーションデータは,それぞれsel0=2,sel1=0である。つまり,セレクタ4_1がプロセッシングエレメントPE2の出力を選択してプロセッシングエレメントPE8の一方の入力に接続し,セレクタ4_2がプロセッシングエレメントPE4の出力を選択してプロセッシングエレメントPE8の他方の入力に接続している。
【0033】
図8の場合,ネットワークNETにおける有効な入力の結線はPE2,PE4であり,有効な出力の結線はPE8である。そこで,図8の右側には,有効な結線のみを抽出して簡略化したモデル図(コネクションモデル)が示されている。このコネクションモデルは,処理されるデータの流れを表現するデータフローを示す目的のためにデータフローグラフとしてしばしば使用される。
【0034】
図9は,レジスタファイルを内蔵するプロセッシングエレメントの構成とそのシンボルを示す図である。レジスタファイル内蔵型のプロセッシングエレメントPEは,図5の演算処理回路であるALUの代わりに,RAM(ランダムアクセスメモリ)やLUT(ルックアップテーブル)などで構成されるレジスタファイル32を有する。そして,入力制御回路31がライトデータo0-o3を入力してレジスタファイル32に書き込み,出力制御回路33がレジスタファイル32内のデータを読み出しリードデータi0-i3として出力する。そして,レジスタファイル32の入出力制御や,アドレスによるアクセス制御は,コンフィグレーションレジスタ30に供給されるコンフィグレーションデータによって構築される。また,レジスタファイル32は,システムバス35からライトまたはリードアクセスされる。
【0035】
図9の右側には,レジスタファイル内蔵型のプロセッシングエレメントのシンボルが示されている。図中36がレジスタファイル32内のデータをリードデータi0-i3として出力する場合のシンボルを示す。この場合は,レジスタファイル内のデータが,出力制御回路33の後段に接続される図示しないプロセッシングエレメントへの入力データ信号i0-i3として出力されることを意味する。
【0036】
一方,図中37がライトデータo0-o3をレジスタファイル32に格納する場合のシンボルを示す。この場合は,入力制御回路31の前段に接続される図示しないプロセッシングエレメントからの出力データ信号o0-o3が入力されることを意味する。いずれも,データのフローを示すデータフローグラフとして表される。
【0037】
図10は,あるデータフローグラフを示す図である。このデータフローフラグを参照して,問題点を説明する。図10のデータフローグラフでは,入力データ信号i0,i1をプロセッシングエレメントPEaが乗算し,その出力をプロセッシングエレメントPEdが反転して出力データ信号o2を出力し,入力データ信号i2,i3をプロセッシングエレメントPEbが加算して出力データ信号o1を出力し,入力データ信号i4,i5をプロセッシングエレメントPEcが減算し,その出力と入力データ信号i6をプログラムPEeが加算して出力データ信号o3を出力する。
【0038】
入力データ信号i0-i5は,図示しないレジスタファイル内蔵型のプロセッシングエレメントから読み出され,出力データ信号o1-o3は,同プロセッシングエレメントに書き込まれる。
【0039】
一般に,このようなデータフローを目的とする回路は,ハードウエア記述言語やスケマティックエディタで回路動作を記述し,その記述ファイルをリコンフィグLSI用の専用コンパイラで論理合成することで得ることができる。この回路を構築するために必要な回路のリソースは,データの入出力を行うレジスタ群50,51と,5つのプロセッシングエレメントPEa-PEeと,それらを接続する結線ネットワーク52である。
【0040】
ただし,リコンフィグ可能なLSIで利用可能な回路リソースは有限であるので,データフローグラフに必要な回路のリソースが,利用可能なリソースの制限を超える場合は,コンパイラはデータフローグラフ全体を一度に実行可能な単位,即ちコンテキストに分割する。たとえば,利用可能なプロセッシングエレメントの数が最大で3個の場合を仮定すると,図10中の破線で囲まれた単位53,54がその一例である。
【0041】
図11は,図10のデータフローグラフが2つのコンテキストに分割された例を示す図である。すなわち,図11では,図10のプロセッシングエレメントPEa,PEbを含む回路単位53を構築するPE0,PE1を有するコンテキスト#0と,図10のプロセッシングエレメントPEc,PEd,PEeを含む回路単位54を構築するPE0,PE1,PE2を有するコンテキスト#1とに分割されている。
【0042】
それに伴って,コンテキスト#0では,入力データ信号i0-i3が入力され,出力データ信号o1,n0が出力されている。一方,コンテキスト#1では,入力データ信号i4-i6とn0とが入力され,出力データ信号o2,o3が出力されている。2つのコンテキストに分割されたことにより,コンテキスト#0のプロセッシングエレメントPE0は出力データ信号n0を一旦レジスタファイル内蔵型プロセッシングエレメントに書き込み,コンテキスト#1のプロセッシングエレメントPE1がそのデータを入力データ信号n0としてレジスタファイル内蔵型プロセッシングエレメントから読み出す。つまり,両コンテキストはレジスタファイル内蔵型プロセッシングエレメントを介して,データn0の引き渡しを行うことが必要になる。
【0043】
図12は,図11の2つのコンテキストに分割された回路単位の動作を示すタイミングチャート図である。図12には,サイクルT2-T5でのコンテキスト#0とサイクルT6-T9でのコンテキスト#1の動作が示されている。また,プロセッシングエレメントPE0,PE1,PE2の入力データ信号DI0,DI1と入力バリッド信号VI0,VO1と出力データ信号DOと出力バリッド信号VOに加えて,レジスタファイル内蔵型プロセッシングエレメントPErの読み出し信号i0-i6,n0と書き込み信号n0,o1-o3が示されている。
【0044】
コンテキスト#0において,プロセッシングエレメントPE0,PE1がそれぞれ,サイクルT3で入力される入力データ信号i0,i1とi2,i3とを演算して,サイクルT4で演算結果である出力データ信号n0,o1を出力している。出力データ信号n0はサイクルT5でレジスタファイル内蔵型プロセッシングエレメントPErに書き込まれている。
【0045】
そして,次のコンテキスト#1において,リコンフィグデータ更新時のサイクルT6で,プロセッシングエレメントPE1が,レジスタファイル内蔵型プロセッシングエレメントPErから読み出される入力データ信号n0を入力し,1サイクル後のサイクルT7で演算結果データとして出力データ信号o2を出力している。
【0046】
このように,レジスタファイル内蔵型プロセッシングエレメントPErを介してデータn0のやり取りを行うことは,プロセッシングエレメントPErとそれに接続するための配線コストを消費してしまい,ハードウエアを無駄に消費することを意味する。また,レジスタファイル内蔵型プロセッシングエレメントPErへの書き込みや読み出しのレイテンシが,データフローの性能低下を招くことにもなる。
【0047】
[実施の形態におけるプロセッシングエレメント]
本実施の形態におけるプロセッシングエレメントは,コンフィグレーションデータによりホールドモードに構築可能である。ホールドモードに構築されたプロセッシングエレメントは,バリッドを示す入力バリッド信号が入力されなくても,コンフィグレーションが更新された時の入力データ信号をラッチし,コンフィグレーションされた演算処理回路のレイテンシ後に出力バリッド信号をバリッドにすると共に演算処理された出力データ信号を出力する。
【0048】
したがって,図12で説明したように連続する別のコンテキストの間でデータ信号のやり取りをすることなく,先行するコンテキスト内のプロセッシングエレメントの出力データ信号を,後続のコンテキスト内の別のプロセッシングエレメントが入力データ信号として入力することができる。それにより,ハードウエアを無駄に消費することがなく,レジスタファイル内蔵型プロセッシングエレメントへの書き込みや読み出しのレイテンシの問題を回避できる。
【0049】
つまり,図12に破線で示したように,サイクルT6でプロセッシングエレメントPE0が未だ保持している出力データ信号n0を,サイクルT7でプロセッシングエレメントPE1が入力データ信号n0として入力し演算処理を行う。そして,その後プロセッシングエレメントPE0が新たな演算結果i4-i5を入力しないようにするために,プロセッシングエレメントPE1はサイクルT6の入力データ信号n0を入力データ保持レジスタにラッチして保持する。
【0050】
図13は,本実施の形態における2つのコンテキストに分割された例を示す図である。すなわち,図11と同様に,図10のプロセッシングエレメントPEa,PEbを含む回路単位53を構築するPE0,PE1を有するコンテキスト#0と,図10のプロセッシングエレメントPEc,PEd,PEeを含む回路単位54を構築するPE0,PE1,PE2を有するコンテキスト#1とに分割されている。そして,コンテキスト#0では,入力データ信号i0-i3が入力され,出力データ信号o1が出力されている。一方,コンテキスト#1では,入力データ信号i4-i6が入力され,出力データ信号o2,o3が出力されている。ただし,図11と異なり,コンテキスト#1のプロセッシングエレメントPE1が,コンテキスト#1に更新された時に,コンテキスト#0においてプロセッシングエレメントPE0が出力して保持している出力データ信号n0を,入力している。そのために,コンテキスト#1においてプロセッシングエレメントPE1はホールドモードに構築されている。それ以外のプロセッシングエレメントPE0,PE2はホールドモードには構築されていない。
【0051】
図14は,本実施の形態におけるプロセッシングエレメントの構成図である。このプロセッシングエレメントPEは,ホールドモードを有効にするコンフィグレーションデータが与えられると,ホールドモードに構築される。図14のプロセッシングエレメントPEは,図2のPEと同様に,コンフィグレーション制御回路20と,バリッド信号制御回路22と,演算処理回路24と,出力バリッド信号を保持する出力バリッド信号保持レジスタFF2と,出力データ信号保持レジスタFF3とを有する。さらに,このプロセッシングエレメントPEは,コンフィグレーションデータにホールドモード信号が含まれ,コンフィグレーション制御回路20が,ホールドモードを有効にするコンフィグレーションデータに応答して,ホールドモード信号Hmodeを出力する。さらに,プロセッシングエレメントPEは,入力データ信号DI0,DI1を保持する入力データ保持レジスタFF0,FF1と,演算処理回路24に入力する内部入力データ信号i_DI0,i_DI1を選択するセレクタSEL0,SEL1と,入力ホールド制御回路27と,出力データ保持レジスタFF3と,出力バリッド信号を生成する回路25とその出力バリッド信号保持レジスタFF2とを有する。
【0052】
図15は,図14のプロセッシングエレメントの詳細な構成図である。図15において,コンフィグレーション制御回路20は,3つの回路20a,20b,20cを有する。第1のコンフィグレーション制御回路20aは,フェッチイネーブル信号FETCHENがHレベルのときに,バリッドモード信号CFG_VMODEをクロックCLKの立ち上がりエッジでラッチするフリップフロップであるレジスタFFaを有する。第2のコンフィグレーション制御回路20bは,フェッチイネーブル信号FETCHENがHレベルのときに,ホールドモード信号CFG_DHMODEをクロックCLKの立ち上がりエッジでラッチするレジスタFFbを有する。そして,第3のコンフィグレーション制御回路20cは,フェッチイネーブル信号FETCHENがHレベルのときに,オペレーションコードCFG_OPECODEをクロックCLKの立ち上がりエッジでラッチするレジスタFFdを有する。これらのレジスタFFa,FFb,FFdは,ラッチする信号のビット数に対応しており,またコンフィグレーションリセット信号CRSTXがLレベルのときにリセットされる。そして,それぞれラッチされたコンフィグレーション信号は内部に分配される。
【0053】
入力ホールド制御回路27は,フェッチイネーブル信号FETCHENをクロックCLKに応答してラッチして1クロックサイクル遅延した遅延フェッチイネーブル信号sr_fetchen_1dを生成するフリップフロップFFcと,ホールドモード信号sr_cfg_dhmodeと遅延フェッチイネーブル信号sr_fetchen_1d を入力するANDゲート62,63とANDゲート64,65とを有する。これらにより入力データ保持レジスタFF0,FF1のイネーブル信号と,セレクタSLE0,SEL1への選択信号を生成する。
【0054】
セレクタSEL0,SEL1は,それぞれセレクタ回路S1,S2とS3,S4を有する。セレクタ回路S2,S4がホールドモード「1」と非ホールドモード「0」とに応じて入力信号を選択し,セレクタ回路S1,S3がホールドモード時において入力信号を切り替える。
【0055】
ホールドモード信号sr_cfg_dhmodeがLレベル(非ホールドモード)になると,セレクタ回路S2,S4は「0」側を選択し,入力データ信号DI0,DI1を演算処理回路24に入力する。一方,ホールドモード信号sr_cfg_dhmodeがHレベル(ホールドモード)になると,セレクタ回路S2,S4は「1」側を選択し,セレクタ回路S1,S3の出力を演算処理回路24に入力する。さらに,セレクタ回路S1,S3は,ANDゲート62,63の出力「1」または「0」に応じて,入力データ信号DI0,DI1か,入力データ保持レジスタFF0,FF1の出力かを選択する。そして,ホールドモード信号sr_cfg_dhmodeがHレベルの場合に,ANDゲート62,63の出力は,コンフィグレーションの更新時のフリップフロップFFcの出力のLレベルにより,Lレベルになり,更新から1クロック遅延して生成されるフリップフロップFFcの出力のHレベルにより,Hレベルになる。つまり,セレクタ回路S1,S2は,ホールドモードに更新されたとき,更新時のクロックサイクルで入力データ信号DI0,DI1を選択し,更新時の次のクロックサイクル以降は入力データ保持レジスタFF0,FF1に保持されている入力データ信号を選択する。
【0056】
さらに,バリッド信号制御回路22は,前述のセレクタ回路221に加えて,入力バリッド信号VI0,VI1とホールドモード信号sr_cfg_dhmode[1:0]との論理和を生成するORゲート60,61とを有する。すなわち,バリッド信号制御回路22は,非ホールドモードの場合は入力バリッド信号VI0,VI1がHレベルの時に内部バリッド信号i_vinをHレベルにし,ホールドモードの場合は入力バリッド信号VI0,VI1がHレベルの時に加えて,ホールドモード信号sr_cfg_dhmode[1:0]がHレベルの時も内部バリッド信号i_vinをHレベルにする。
【0057】
出力バリッド信号生成回路25は,内部バリッド信号i_vinを反転するインバータ25aと,それとフェッチイネーブル信号FETCHENとの論理和をとるORゲート25bと,その出力を反転するインバータ25cとを有する。これにより,出力バリッド信号生成回路25は,フェッチイネーブル信号FETCHENがHレベルになるとクロックCLKに同期して外部バリッド信号VOをLレベル(インバリッド)にし,フェッチイネーブル信号FETCHENがLレベルの期間は,内部バリッド信号i_vinがHレベルなるとクロックCLKに同期して外部バリッド信号VOをHレベル(バリッド)にする。また,出力バリッド信号生成回路25の最終段のフリップフロップFF2は,クロックCLKの1サイクルのレイテンシを有し,これは演算処理回路24の演算処理のレイテンシが1であることに対応している。したがって,このフリップフロップFF2は,コンフィグレーションデータに応じて演算処理回路24のレイテンシと同じレイテンシになるように構築される。
【0058】
また,ORゲート70,71とインバータ72は,出力データ保持レジスタFF3のイネーブル信号を生成する回路である。この回路は,フェッチイネーブル信号FETCHENがHレベルになるとFF3のイネーブル信号をLレベルにして出力データ保持レジスタFF3のラッチ動作を禁止し,入力バリッド信号VI0,VI1がHレベルになると内部バリッド信号i_vinがHレベルになりFF3のイネーブル信号をHレベルにしてFF3のラッチ動作を許可し,さらに,ホールドモード信号sr_cfg_dhmodeがHレベルになるときも内部バリッド信号i_vinがHレベルになりFF3のイネーブル信号をHレベルにしてFF3のラッチ動作を許可する。
【0059】
図16は,図15のプロセッシングエレメントの動作例を示すタイミングチャートである。図16でも,図12と同様に,クロックサイクルT1でフェッチイネーブル信号FETCHENがHレベルになりT2でコンフィグレーションが更新され,プロセッシングエレメントはサイクルT2-T5でコンテキスト#0に構築される。同様に,サイクルT5でフェッチイネーブル信号FETCHENがHレベルになりT6でコンフィグレーションが更新され,プロセッシングエレメントはサイクルT6-T9でコンテキスト#1に構築される。
【0060】
図16の例では,コンテキスト#0では,バリッドモードCFG_VMODEが「00」,ホールドモードCFG_VMODEが「00」,オペレーションコードCFG_OPECODEが「add(加算演算)」になり,コンテキスト#1では,バリッドモードCFG_VMODEが「00」,ホールドモードCFG_VMODEが「11」,オペレーションコードCFG_OPECODEが「sub(減算演算)」になっている。つまり,コンテキスト#0では非ホールドモードに構築され,コンテキスト#1ではホールドモードに構築される。
【0061】
まず,コンテキスト#0の非ホールドモードの場合について説明する。サイクルT1でフェッチイネーブル信号FETCHENがHレベルになり,次のサイクルT2のクロックCLKの立ち上がりエッジでフリップフロップFFa,FFb,FFdが各コンフィグレーションデータをラッチし,ラッチしたコンフィグレーションデータにより内部の回路が構築される。前述のとおり,ホールドモードCFG_DHMODEが「00」であるので,内部ホールドモード信号sr_cfg_dhmode[1:0]が共にLレベルになり,セレクタSEL0,SEL1のセレクタ回路S2,S4は共に「0」側を選択し,入力データ信号DI0,DI1が演算処理回路24の入力信号i_DI0,i_DI1になる。
【0062】
サイクルT3で入力バリッド信号VI0,VI1がHレベルになると,バリッド信号制御回路22が内部バリッド信号i_vinをHレベルにする。これで出力データ保持レジスタFF3はイネーブル状態になる。また,出力バリッド保持レジスタFF2はストップ信号STOPがLレベルであるのでイネーブル状態になっている。
【0063】
演算処理部24は,入力信号i_DI0,i_DI1である入力データ信号i0,i1の減算処理をレイテンシ1で行い,サイクルT4で演算結果データを出力し,出力データ保持レジスタFF3が出力データ信号o0(i0+i1)を出力する。同様に,出力バリッド信号生成回路25の最終段のフリップフロップFF2が,入力バリッド信号VI0,VI1がHレベルになるサイクルT3からレイテンシ1後のサイクルT4で,出力データ信号o0(i0+i1)の出力に同期して,出力バリッド信号VOをHレベルにする。
【0064】
このように,非ホールドモードでは,演算処理回路24が常時入力データ信号DI0,DI1を入力し,入力バリッド信号VI0,VI1がHレベルに対応する入力データ信号i0,i1に対応する出力データ信号o0(i0+i1)の出力に同期して出力バリッド信号VOをHレベルにする。これにより,実質的に,有効な入力データ信号しか演算されず,それに対応する有効な出力データ信号だけが有効な信号として出力される。演算そのものの論理と,バリッド,インバリッド判定の論理を分けることで,論理回路の段数を短くしている。
【0065】
次に,コンテキスト#1のホールドモードの場合について説明する。ホールドモードに構築されたプロセッシングエレメントPE1では,入力バリッド信号VI0,VI1がバリッド,インバリッドにかかわらず,入力データ保持レジスタFF0,FF1が更新時(サイクルT6)の入力データ信号i2,i3をサイクルT7でのクロックCLKの立ち上がりエッジで保持し,演算処理回路24が入力データ保持レジスタに保持された入力データ信号i2,i3について演算処理を行う。さらに,図15の例では,セレクタ回路S1,S3を設けて,更新時(サイクルT6)での入力データ信号i2,i3をサイクルT6のタイミングから演算処理回路24に入力している。
【0066】
まず,入力データ保持レジスタFF0,FF1とセレクタSEL0,SEL1側について説明する。サイクルT5でフェッチイネーブル信号FETCHENがHレベルになり,次のサイクルT6のクロックCLKの立ち上がりエッジでフリップフロップFFa,FFb,FFdが各コンフィグレーションデータをラッチし,ラッチしたコンフィグレーションデータにより内部の回路が構築される。今度はホールドモードCFG_DHMODEが「11」であるので,内部ホールドモード信号sr_cfg_dhmode[1:0]が共にHレベルになり,セレクタSEL0,SEL1のセレクタ回路S2,S4は共に「1」側を選択する。
【0067】
さらに,サイクルT6では,フリップフロップFFcが,サイクルT5のフェッチイネーブル信号FETCHENのHレベルをクロックCLKの立ち上がりエッジでラッチし,1クロック遅延した遅延フェッチイネーブル信号sr_fetchen_1dをHレベルにする。その結果,サイクルT6だけ,ANDゲート62,63の出力はHレベルになり,セレクタ回路S1,S3が「0」側を選択して,入力データ信号i2,i3を演算処理回路24の入力信号i_DI0,i_DI1として出力する。これにより,サイクルT6から演算処理回路24は入力データ信号i2,i3について減算処理を開始する。
【0068】
同時に,サイクルT6だけANDゲート64,65の出力もHレベルになるので,入力データ保持レジスタFF0,FF1はイネーブル状態になり,次のサイクルT7のクロックCLKの立ち上がりエッジに応答してサイクルT6での入力データ信号i2,i3をラッチする。
【0069】
次のサイクルT7以降では,遅延フェッチイネーブル信号sr_fetchen_1dがLレベルなるため,ANDゲート62−65の出力がLレベルになり,セレクタ回路S1,S3は「0」側を選択し,入力データ保持レジスタFF0,FF1が保持する入力データ信号i2,i3が演算処理回路24に入力される。しかも,サイクルT7以降は,入力データ保持レジスタFF0,FF1のイネーブル信号はLレベルになり,新たな入力データ信号i4-i5を保持することはない。
【0070】
このように,データホールドモードに構築されたプロセッシングエレメントは,コンフィグレーションデータの更新時T6における入力データ信号DI0,DI1(i2,i3)を,直接,演算処理回路24に入力して演算を開始させ,更新直後T7において入力データ保持レジスタFF0,FF1が入力データ信号DI0,DI1(i2,i3)をラッチし,T7以後保持した入力データ信号を演算処理回路24に出力する。
【0071】
一方,バリッド信号側では次のような動作になる。まず,サイクルT6では,サイクルT5のフェッチイネーブル信号FETCHENのHレベルの反転が出力バリッド保持レジスタFF2に取り込まれ,出力バリッド信号VOはサイクルT6だけLレベルになる。一方,サイクルT6のクロックCLKの立ち上がりエッジで取り込まれた内部ホールドモード信号sr_cfg_dhmode[1:0]のHレベルにより,入力バリッド信号VI0,VI1がバリッドかインバリッドかにかかわらず,内部バリッド信号i_vinがHレベルになる。これで,サイクルT6での入力データ信号DI0,DI1(i2,i3)は,実質的に有効な入力データ信号として取り扱われる。
【0072】
サイクルT5でのフェッチイネーブル信号FETCHENのHレベルによりORゲート71の出力信号keep_ff_dがHレベルになり,サイクルT5だけ出力データ保持レジスタFF3はディセーブル状態になるが,サイクルT6以降は内部バリッド信号i_vinのHレベルによりイネーブル状態になる。
【0073】
サイクルT6からレイテンシ1後のサイクルT7で,演算処理回路24は演算結果データを出力し,出力データ保持レジスタFF3は出力データ信号o1(i2-i3)を出力する。これに同期して,出力バリッド信号生成回路25と出力バリッド保持レジスタFF2とが,出力バリッド信号VOをHレベルにする。これにより,プロセッシングエレメントに接続された後段の回路は,出力データ信号o1(i2-i3)を有効な信号として入力する。
【0074】
図17は,図13のコンテキスト#0,#1について,本実施の形態のプロセッシングエレメントのホールドモードを利用した場合の動作を示すタイミングチャート図である。図13では,コンテキスト#0でプロセッシングエレメントPE0が生成した出力データ信号n0を,コンテキスト#1に更新された時に,プロセッシングエレメントPE1がその出力データ信号n0を入力して保持する。そして,コンテキスト#1では,少なくともプロセッシングエレメントPE2は非ホールドモードにコンフィグレーションされ,コンテキスト#1でプロセッシングエレメントPE0が新たに生成した出力データ信号を入力する。
【0075】
図17において,各プロセッシングエレメントは,クロックサイクルT1のフェッチイネーブル信号FETCHENのHレベルによりサイクルT2でコンフィグレーションデータが取り込まれ,コンテキスト#0の内部回路が構築される。つまり,図13に示されるように,プロセッシングエレメントPE0は入力データ信号i0,i1を入力し乗算し乗算値である出力データ信号n0を出力する回路に,プロセッシングエレメントPE1は入力データ信号i2,i3を入力し加算し加算値である出力データ信号o1を出力する回路にそれぞれ構築(コンフィグレーション)される。いずれのプロセッシングエレメントPE0,PE1も,非ホールドモードにコンフィグレーションされている。
【0076】
従って,図17において,プロセッシングエレメントPE0は,サイクルT3でHレベルの入力バリッド信号VI0,VI1と共に入力された入力データ信号i0,i1を乗算し,レイテンシ1後のサイクルT4でその出力データ信号DO(n0)をHレベルの出力バリッド信号VOとともに出力する。この出力データ信号n0は,レジスタファイル内蔵型プロセッシングエレメントに書き込まれることはない。
【0077】
プロセッシングエレメントPE1も同様に,サイクルT3でHレベルの入力バリッド信号VI0,VI1と共に入力された入力データ信号i2,i3を加算し,レイテンシ1サイクル後のサイクルT4でその出力データ信号D0(o1)をHレベルの出力バリッド信号VOとともに出力する。この場合,プロセッシングエレメントPE1は非ホールドモードであるので,入力データ保持レジスタFF0,FF1には入力データ信号は保持されない。入力データ信号DI0,DI1は,コンテキスト#0に更新された後継続して演算処理回路24に入力され続ける。
【0078】
次に,サイクルT5のフェッチイネーブル信号FETCHENのHレベルによりサイクルT6でコンフィグレーションデータが取り込まれ,コンテキスト#1の内部回路が構築される。つまり,図13に示されるように,プロセッシングエレメントPE0は入力データ信号i4,i5を入力し減算し減算結果を出力データ信号として出力するよう構築され,プロセッシングエレメントPE2は入力データ信号i6とプロセッシングエレメントPE0の出力データ信号とを入力し加算し加算結果を出力データ信号o3として出力するよう構築される。これらのプロセッシングエレメントPE0,PE1は非ホールドモードに構築される。さらに,プロセッシングエレメントPE0の出力端子はプロセッシングエレメントPE1の入力端子に接続されるように構築されるとともに,プロセッシングエレメントPE1は入力データ信号を反転して出力データ信号o2を出力するように構築される。プロセッシングエレメントPE1はホールドモードに構築される。
【0079】
サイクルT6で新たなコンフィグレーションデータが取り込まれて内部に設定されることで,コンテキスト#0からコンテキスト#1に更新される。このコンフィグレーションの更新時であるサイクルT6では,各プロセッシングエレメントの出力バリッド信号VOはLレベルになり,プロセッシングエレメントPE0は未だコンテキスト#0で生成した出力データ信号n0を出力データ保持レジスタFF3内に保持している。
【0080】
そこで,プロセッシングエレメントPE1は,コンフィグレーションの更新時であるサイクルT6において入力データ信号DI0として入力されるデータ信号n0を,演算処理回路24に入力する。演算処理回路24はサイクルT6から反転演算を開始する。さらに,次のサイクルT7のクロックCLKの立ち上がりエッジで,サイクルT6で入力されている入力データ信号n0を,入力データ保持レジスタFF0がラッチし演算処理回路24に入力する。ラッチされた入力データ信号n0はその後継続して演算処理回路24に入力される。そして,サイクルT6の入力データ信号n0に対する演算結果信号がレイテンシ1後のサイクルT7で出力データ信号o2として出力される。つまり,サイクルT6で入力バリッド信号VI0,VI1がHレベル(バリッド)でないにもかかわらず,サイクルT7で出力バリッド信号VOがHレベルになっている。これは,図15,16で説明したとおり,ホールドモード信号によって出力バリッド信号VOがHレベルにされたからである。その結果,プロセッシングエレメントPE1は,サイクルT7で有効な出力データ信号o2を出力することになる。
【0081】
そして,プロセッシングエレメントPE1では,サイクルT7でプロセッシングエレメントPE0の出力データ信号i4-i5が入力データ信号DI0に入力されているが,入力データ保持レジスタFF0は入力データ信号n0を保持し続けるので,プロセッシングエレメントPE0の出力データ信号i4-i5はラッチされず内部に取り込まれない。
【0082】
一方,プロセッシングエレメントPE2も,サイクルT6でプロセッシングエレメントPE0の出力データ信号n0を入力しているが,非ホールドモードであるので,それに対する演算結果がバリッド(Hレベル)の出力バリッド信号VOと共に出力されることはない。
【0083】
[本実施の形態の変型例]
図15のプロセッシングエレメントは,変型例として,セレクタSEL0,SEL1のセレクタ回路S1,S3を設けないで,コンフィグレーション更新時の入力データ信号を入力データ保持レジスタFF0,FF1が保持してそれをセレクタ回路S2,S4を経由して演算処理回路24に入力しても良い。その場合は,演算処理回路24による演算処理の開始が1クロックサイクルだけ遅くなる。
【0084】
そして,演算処理の開始が1サイクル遅くなるので,Hレベルのホールドモード信号に基づいて生成されるHレベルの出力バリッド信号VOも1サイクル遅くする。そのためには,図15において, ORゲート60,61の後段に1クロックサイクル遅延させるフリップフロップを挿入する構成にすればよい。
【0085】
図18は,本実施の形態の変型例における動作を示すタイミングチャート図である。この図は,図16に対応する図である。図18では,図16と異なり,サイクルT6において入力データ信号DI0,DI1の信号i2,i3が,演算制御回路24にその入力信号i_DI0,i_DI1として入力されていない。サイクルT6の入力データ信号DI0,DI1の信号i2,i3は,次のサイクルT7のクロックCLKの立ち上がりエッジで入力データ保持レジスタFF0,FF1に保持され,演算制御回路24にその入力信号i_DI0,i_DI1として入力されている。
【0086】
さらに,図18では,図16と異なり,サイクルT8で演算結果の出力データ信号o1(i2-i3)が,Hレベルの出力バリッド信号と共に出力されている。
【0087】
以上説明したとおり,本実施の形態によればプロセッシングエレメントにホールドモードの構成を追加し,連続するコンテキスト間のデータの受け渡しを,後続のコンテキスト内のホールドモード構成にしたプロセッシングエレメントがコンフィグレーションの更新時に行う。したがって,コンテキスト間のデータの受け渡しをレジスタファイル内蔵型プロセッシングエレメントを介して行う必要はなく,ハードウエアの無駄な消費や無駄なレイテンシをなくすことができる。
【0088】
以上の実施の形態をまとめると,次の付記のとおりである。
【0089】
(付記1)
コンフィグレーションデータに基づいて任意の演算状態に構築されるリコンフィグ可能な集積回路装置において,
それぞれ演算回路を有し,前記コンフィグレーションデータに基づいて,任意の演算状態に構築可能な複数のプロセッシングエレメントと,
前記コンフィグレーションデータに基づいて,前記複数のプロセッシングエレメントを任意の状態で接続するプロセッシングエレメント間ネットワークとを有し,
前記プロセッシングエレメントは,入力バリッド信号と入力データ信号を入力し,出力バリッド信号と出力データ信号を出力し,更に,入力データ保持レジスタと,前記入力データ信号を演算する演算処理回路と,前記演算処理回路の演算結果データを保持する出力データ保持レジスタとを有し,ホールドモードを有効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,前記入力バリッド信号がバリッド,インバリッドにかかわらず,前記入力データ保持レジスタが当該更新時の入力データ信号を保持し,前記演算処理回路は前記入力データ保持レジスタに保持された入力データ信号について演算処理を行うリコンフィグ可能な集積回路装置。
【0090】
(付記2)
付記1において,
前記プロセッシングエレメントは,前記ホールドモードを有効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,前記更新直後にホールドモード信号に応答して,前記入力データ保持レジスタが前記入力データ信号を保持し,前記入力バリッド信号がインバリッドであっても前記ホールドモード信号に応答して,前記演算結果データに対応する出力データ信号の出力に同期して前記出力バリッド信号を出力するリコンフィグ可能な集積回路装置。
【0091】
(付記3)
付記2において,
前記プロセッシングエレメントは,前記ホールドモードを無効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,バリッドな入力バリッド信号に応答して,前記演算結果データに対応する出力データ信号の出力に同期して前記出力バリッド信号を出力するリコンフィグ可能な集積回路装置。
【0092】
(付記4)
付記1または2において,
前記プロセッシングエレメントは,前記入力データ信号を前記演算処理回路に入力するセレクタを有し,
前記ホールドモードを有効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,前記セレクタは,前記更新時に入力される入力データ信号を前記入力データ保持レジスタを介さずに前記演算処理回路に入力した後,前記入力データ保持レジスタに保持された入力データ信号を前記演算処理回路に入力し,
前記ホールドモードを無効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,前記セレクタは,前記入力される前記入力データ信号を前記入力データ保持レジスタを介さずに前記演算処理回路に入力し続けるリコンフィグ可能な集積回路装置。
【0093】
(付記5)
付記2または4において
前記プロセッシングエレメントは,フェッチイネーブル信号に応答して前記コンフィグレーションデータを入力してコンフィグレーションを更新し,ホールドモードか否かにかかわらず,前記フェッチイネーブル信号に応答して,前記更新時に前記出力バリッド信号をインバリッドにするとともに前記出力データ保持レジスタによる出力データ信号の取り込みを不能状態にするリコンフィグ可能な集積回路装置。
【0094】
(付記6)
付記2または4において,
第1のコンフィグレーションデータでコンフィグレーションされる回路を有する第1のコンテキストと,前記第1のコンテキストに後続し第2のコンフィグレーションデータでコンフィグレーションされる回路を有する第2のコンテキストとの間において,前記第1のコンテキストに含まれる第1のプロセッシングエレメントの出力データ保持レジスタが保持する出力データ信号を,前記第2のコンテキストへの更新時に,前記第2のコンテキストに含まれ前記ホールドモードにコンフィグレーションされた第2のプロセッシングエレメントが入力し,前記入力データ保持レジスタが保持する,リコンフィグ可能な集積回路装置。
【0095】
(付記7)
付記4において,
第1のコンフィグレーションデータでコンフィグレーションされる回路を有する第1のコンテキストと,前記第1のコンテキストに後続し第2のコンフィグレーションデータでコンフィグレーションされる回路を有する第2のコンテキストとの間において,前記第1のコンテキストに含まれる第1のプロセッシングエレメントの出力データ保持レジスタが保持する第1の出力データ信号を,前記第2のコンテキストへの更新時に,前記第2のコンテキストに含まれ前記ホールドモードにコンフィグレーションされた第2のプロセッシングエレメントが入力して前記演算処理回路が演算処理を開始し,前記更新時の前記第1の出力データ信号を入力データ信号として前記入力データ保持レジスタに保持し,前記入力データ保持レジスタに保持された入力データ信号を前記演算処理回路に入力する,リコンフィグ可能な集積回路装置。
【0096】
(付記8)
付記6または7において,
前記第2のコンテキストでは,前記第1のプロセッシングエレメントの出力端子が,前記第2のプロセッシングエレメントの入力端子に接続されるとともに,前記ホールドモードを無効とするコンフィグレーションデータでコンフィグレーションされた第3のプロセッシングエレメントの入力端子にも接続される,リコンフィグ可能な集積回路装置。
【0097】
(付記9)
コンフィグレーションデータに基づいて任意の演算状態に構築されるリコンフィグ可能な集積回路装置において,
それぞれ演算回路を有し,前記コンフィグレーションデータに基づいて,任意の演算状態に構築可能な複数のプロセッシングエレメントと,
前記コンフィグレーションデータに基づいて,前記複数のプロセッシングエレメントを任意の状態で接続するプロセッシングエレメント間ネットワークとを有し,
前記プロセッシングエレメントは,入力バリッド信号と入力データ信号を入力し,出力バリッド信号と出力データ信号を出力し,更に,前記入力データ信号を演算する演算処理回路と,前記演算処理回路の演算結果データを保持する出力データ保持レジスタと,前記出力バリッド信号を生成する出力バリッド信号生成回路とを有し,
前記プロセッシングエレメントにおいて,ホールドモードを有効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,当該更新時の入力データ信号を前記演算処理回路が演算し,前記出力バリッド信号生成回路が,前記入力バリッド信号のバリッド,インバリッドにかかわらずホールドモード信号に応答して,前記更新時の入力データ信号に対応する前記出力データ信号の出力に同期して前記出力バリッド信号を出力し,前記ホールドモードを無効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,前記出力バリッド信号生成回路が,バリッドな入力バリッド信号に応答して,前記バリッドな入力バリッド信号時の入力データ信号に対応する出力データ信号の出力に同期して前記出力バリッド信号を出力するリコンフィグ可能な集積回路装置。
【0098】
(付記10)
付記9において,
前記プロセッシングエレメントは,更に入力データ保持レジスタを有し,
前記プロセッシングエレメントにおいて,ホールドモードを有効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,当該更新時の入力データ信号を前記入力データ保持レジスタが保持して前記演算処理回路に出力し,前記ホールドモードを無効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,前記更新後に入力される入力データ信号を前記入力データ保持レジスタを介することなく前記演算処理回路が入力して演算処理するリコンフィグ可能な集積回路装置。
【0099】
(付記11)
付記9または10において,
第1のコンフィグレーションデータでコンフィグレーションされる回路を有する第1のコンテキストと,前記第1のコンテキストに後続し第2のコンフィグレーションデータでコンフィグレーションされる回路を有する第2のコンテキストとの間において,前記第1のコンテキストに含まれる第1のプロセッシングエレメントの出力データ保持レジスタが保持する出力データ信号を,前記第2のコンテキストへの更新時に,前記第2のコンテキストに含まれ前記ホールドモードにコンフィグレーションされた第2のプロセッシングエレメントが入力し前記演算処理回路が演算処理をする,リコンフィグ可能な集積回路装置。
【0100】
(付記12)
付記10において,
第1のコンフィグレーションデータでコンフィグレーションされる回路を有する第1のコンテキストと,前記第1のコンテキストに後続し第2のコンフィグレーションデータでコンフィグレーションされる回路を有する第2のコンテキストとの間において,前記第1のコンテキストに含まれる第1のプロセッシングエレメントの出力データ保持レジスタが保持する第1の出力データ信号を,前記第2のコンテキストへの更新時に,前記第2のコンテキストに含まれ前記ホールドモードにリコンフィグレーションされた第2のプロセッシングエレメントが入力して前記演算処理回路が演算処理を開始し,前記更新時の前記第1の出力データ信号を入力データ信号として前記入力データ保持レジスタに保持し,前記入力データ保持レジスタに保持された入力データ信号を前記演算処理回路に入力する,リコンフィグ可能な集積回路装置。
【符号の説明】
【0101】
PE:プロセッシングエレメント NET:プロセッシングエレメント間ネットワーク
20:コンフィグレーション制御回路 22:バリッド信号制御回路
27:入力ホールド制御回路 24:演算処理回路
FF0,FF1:入力データ保持レジスタ FF2:出力バリッド保持レジスタ
FF3:出力データ保持レジスタ DI0,DI1:入力データ信号
VI0,VI1:入力バリッド信号 DO:出力データ信号
VO:出力バリッド信号

【特許請求の範囲】
【請求項1】
コンフィグレーションデータに基づいて任意の演算状態に構築されるリコンフィグ可能な集積回路装置において,
それぞれ演算回路を有し,前記コンフィグレーションデータに基づいて,任意の演算状態に構築可能な複数のプロセッシングエレメントと,
前記コンフィグレーションデータに基づいて,前記複数のプロセッシングエレメントを任意の状態で接続するプロセッシングエレメント間ネットワークとを有し,
前記プロセッシングエレメントは,入力バリッド信号と入力データ信号を入力し,出力バリッド信号と出力データ信号を出力し,更に,入力データ保持レジスタと,前記入力データ信号を演算する演算処理回路と,前記演算処理回路の演算結果データを保持する出力データ保持レジスタとを有し,ホールドモードを有効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,前記入力バリッド信号がバリッド,インバリッドにかかわらず,前記入力データ保持レジスタが当該更新時の入力データ信号を保持し,前記演算処理回路は前記入力データ保持レジスタに保持された入力データ信号について演算処理を行うリコンフィグ可能な集積回路装置。
【請求項2】
請求項1において,
前記プロセッシングエレメントは,前記ホールドモードを有効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,前記更新直後にホールドモード信号に応答して,前記入力データ保持レジスタが前記入力データ信号を保持し,前記入力バリッド信号がインバリッドであっても前記ホールドモード信号に応答して,前記演算結果データに対応する出力データ信号の出力に同期して前記出力バリッド信号を出力するリコンフィグ可能な集積回路装置。
【請求項3】
請求項2において,
前記プロセッシングエレメントは,前記ホールドモードを無効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,バリッドな入力バリッド信号に応答して,前記演算結果データに対応する出力データ信号の出力に同期して前記出力バリッド信号を出力するリコンフィグ可能な集積回路装置。
【請求項4】
請求項1または2において,
前記プロセッシングエレメントは,前記入力データ信号を前記演算処理回路に入力するセレクタを有し,
前記ホールドモードを有効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,前記セレクタは,前記更新時に入力される入力データ信号を前記入力データ保持レジスタを介さずに前記演算処理回路に入力した後,前記入力データ保持レジスタに保持された入力データ信号を前記演算処理回路に入力し,
前記ホールドモードを無効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,前記セレクタは,前記入力される前記入力データ信号を前記入力データ保持レジスタを介さずに前記演算処理回路に入力し続けるリコンフィグ可能な集積回路装置。
【請求項5】
請求項2または4において
前記プロセッシングエレメントは,フェッチイネーブル信号に応答して前記コンフィグレーションデータを入力してコンフィグレーションを更新し,ホールドモードか否かにかかわらず,前記フェッチイネーブル信号に応答して,前記更新時に前記出力バリッド信号をインバリッドにするとともに前記出力データ保持レジスタによる出力データ信号の取り込みを不能状態にするリコンフィグ可能な集積回路装置。
【請求項6】
請求項2または4において,
第1のコンフィグレーションデータでコンフィグレーションされる回路を有する第1のコンテキストと,前記第1のコンテキストに後続し第2のコンフィグレーションデータでコンフィグレーションされる回路を有する第2のコンテキストとの間において,前記第1のコンテキストに含まれる第1のプロセッシングエレメントの出力データ保持レジスタが保持する出力データ信号を,前記第2のコンテキストへの更新時に,前記第2のコンテキストに含まれ前記ホールドモードにコンフィグレーションされた第2のプロセッシングエレメントが入力し,前記入力データ保持レジスタが保持する,リコンフィグ可能な集積回路装置。
【請求項7】
請求項4において,
第1のコンフィグレーションデータでコンフィグレーションされる回路を有する第1のコンテキストと,前記第1のコンテキストに後続し第2のコンフィグレーションデータでコンフィグレーションされる回路を有する第2のコンテキストとの間において,前記第1のコンテキストに含まれる第1のプロセッシングエレメントの出力データ保持レジスタが保持する第1の出力データ信号を,前記第2のコンテキストへの更新時に,前記第2のコンテキストに含まれ前記ホールドモードにコンフィグレーションされた第2のプロセッシングエレメントが入力して前記演算処理回路が演算処理を開始し,前記更新時の前記第1の出力データ信号を入力データ信号として前記入力データ保持レジスタに保持し,前記入力データ保持レジスタに保持された入力データ信号を前記演算処理回路に入力する,リコンフィグ可能な集積回路装置。
【請求項8】
コンフィグレーションデータに基づいて任意の演算状態に構築されるリコンフィグ可能な集積回路装置において,
それぞれ演算回路を有し,前記コンフィグレーションデータに基づいて,任意の演算状態に構築可能な複数のプロセッシングエレメントと,
前記コンフィグレーションデータに基づいて,前記複数のプロセッシングエレメントを任意の状態で接続するプロセッシングエレメント間ネットワークとを有し,
前記プロセッシングエレメントは,入力バリッド信号と入力データ信号を入力し,出力バリッド信号と出力データ信号を出力し,更に,前記入力データ信号を演算する演算処理回路と,前記演算処理回路の演算結果データを保持する出力データ保持レジスタと,前記出力バリッド信号を生成する出力バリッド信号生成回路とを有し,
前記プロセッシングエレメントにおいて,ホールドモードを有効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,当該更新時の入力データ信号を前記演算処理回路が演算し,前記出力バリッド信号生成回路が,前記入力バリッド信号のバリッド,インバリッドにかかわらずホールドモード信号に応答して,前記更新時の入力データ信号に対応する前記出力データ信号の出力に同期して前記出力バリッド信号を出力し,前記ホールドモードを無効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,前記出力バリッド信号生成回路が,バリッドな入力バリッド信号に応答して,前記バリッドな入力バリッド信号時の入力データ信号に対応する出力データ信号の出力に同期して前記出力バリッド信号を出力するリコンフィグ可能な集積回路装置。
【請求項9】
請求項8において,
前記プロセッシングエレメントは,更に入力データ保持レジスタを有し,
前記プロセッシングエレメントにおいて,ホールドモードを有効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,当該更新時の入力データ信号を前記入力データ保持レジスタが保持して前記演算処理回路に出力し,前記ホールドモードを無効とするコンフィグレーションデータでコンフィグレーションが更新された場合は,前記更新後に入力される入力データ信号を前記入力データ保持レジスタを介することなく前記演算処理回路が入力して演算処理するリコンフィグ可能な集積回路装置。
【請求項10】
請求項8または9において,
第1のコンフィグレーションデータでコンフィグレーションされる回路を有する第1のコンテキストと,前記第1のコンテキストに後続し第2のコンフィグレーションデータでコンフィグレーションされる回路を有する第2のコンテキストとの間において,前記第1のコンテキストに含まれる第1のプロセッシングエレメントの出力データ保持レジスタが保持する出力データ信号を,前記第2のコンテキストへの更新時に,前記第2のコンテキストに含まれ前記ホールドモードにコンフィグレーションされた第2のプロセッシングエレメントが入力し前記演算処理回路が演算処理をする,リコンフィグ可能な集積回路装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2013−12108(P2013−12108A)
【公開日】平成25年1月17日(2013.1.17)
【国際特許分類】
【出願番号】特願2011−145232(P2011−145232)
【出願日】平成23年6月30日(2011.6.30)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)