(57)【要約】【課題】  条件判定の結果に応じて演算部が実行する処理を従来に比べて早く開始し、半導体集積回路の性能を向上する。【解決手段】  半導体集積回路は、再構成可能な複数の演算器を含む演算部と、複数の演算器による論理演算の結果をそれぞれ示す複数のフラグ信号に応じて、演算部の回路構成を示す複数のコンフィグレーションデータのいずれかを選択し、選択したコンフィグレーションデータを演算部に出力する制御部とを有する。【選択図】    図１
2015011375.tif 000002
【特許請求の範囲】
【請求項１】
再構成可能な複数の演算器を含む演算部と、
複数の前記演算器による論理演算の結果をそれぞれ示す複数のフラグ信号に応じて、前記演算部の回路構成を示す複数のコンフィグレーションデータのいずれかを選択し、選択したコンフィグレーションデータを前記演算部に出力する制御部と
を備えることを特徴とする半導体集積回路。
【請求項２】
前記演算部は、前記演算器から出力される複数の前記フラグ信号のいずれも偽を示す場合に、真を示すフラグ信号を前記制御部に出力するフラグ制御回路を備えること
を特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記複数のコンフィグレーションデータを保持する複数の記憶領域を含み、第１アドレスによりアクセスされる第１記憶部と、
複数組の前記第１アドレスおよび第２アドレスを記憶する複数の記憶領域を含み、前記第２アドレスによりアクセスされる第２記憶部と
を備え、
前記制御部は、前記第２記憶部から出力される複数組の前記第１アドレスおよび前記第２アドレスのいずれかの組を、前記フラグ信号に応じて選択し、選択した前記第１アドレスを前記第１記憶部に出力し、選択した前記第２アドレスを前記第２記憶部に出力する第１セレクタを備えること
を特徴とする請求項１または請求項２記載の半導体集積回路。
【請求項４】
前記制御部は、真を示す前記フラグ信号に対応して、前記第２記憶部から出力される複数組の前記第１アドレスおよび前記第２アドレスのいずれかの組を選択するとともに、真を示す複数の前記フラグ信号を受けた場合、真を示す複数の前記フラグ信号のうち、他のフラグ信号より優先度が高い前記フラグ信号の１つに対応する前記第１アドレスおよび前記第２アドレスの組を選択すること
を特徴とする請求項３記載の半導体集積回路。
【請求項５】
前記演算部は、前記演算器の出力と前記フラグ信号を出力するフラグ端子とを前記優先度に応じて接続する接続部を備えること
を特徴とする請求項４記載の半導体集積回路。
【請求項６】
前記第２記憶部の前記各記憶領域は、前記フラグ信号に応じた前記コンフィグレーションデータを選択する動作を有効にする有効フラグを記憶する領域を備え、
前記制御部は、
前記有効フラグが無効を示す場合に、前記第２記憶部から出力される前記第２アドレスの１つを順次に更新する更新回路と、
前記有効フラグが有効を示す場合に、前記第１セレクタから出力される前記第２アドレスを選択し、前記有効フラグが無効を示す場合に、前記更新回路から出力される前記第２アドレスを選択し、選択した第２アドレスを前記第２記憶部に出力する第２セレクタと
を備えることを特徴とする請求項３ないし請求項５のいずれか１項記載の半導体集積回路。
【請求項７】
再構成可能な複数の演算器を含む演算部を含む半導体集積回路の動作方法であって、
複数の前記演算器による論理演算の結果をそれぞれ示す複数のフラグ信号に応じて、前記演算部の回路構成を示す複数のコンフィグレーションデータのいずれかを選択し、
選択したコンフィグレーションデータを前記演算部に出力すること
を特徴とする半導体集積回路の動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路および半導体集積回路の動作方法に関する。
【背景技術】
【０００２】
データ処理等を実行する動的再構成回路を含む半導体集積回路は、演算部に搭載される演算器の機能および演算器間の接続を切り替えることで、複数種のデータ処理を実行可能である。この種の半導体集積回路は、例えば、実行するデータ処理の状態毎に、分岐処理の実行により遷移する可能性のある状態を順位付けして保持し、保持した順位付けの情報を実際の状態の遷移に応じて更新する（例えば、特許文献１参照）。あるいは、この種の半導体集積回路は、実行するデータ処理の状態毎に分岐処理時の分岐先を示す情報を保持し、保持された情報に応じて回路を再構成する（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２００９／０９６２４７号
【特許文献２】特開２００６−６５７８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、３以上の分岐処理の１つを条件判定に応じて選択して演算部を再構成する場合、分岐処理毎に条件判定を実行するため、分岐処理の数が多いほど条件判定に掛かる時間は長くなる。
【０００５】
本件開示の半導体集積回路および半導体集積回路の動作方法は、条件判定の結果に応じて演算部が実行する処理を従来に比べて早く開始し、半導体集積回路の性能を向上することを目的とする。
【課題を解決するための手段】
【０００６】
一つの観点によれば、半導体集積回路は、再構成可能な複数の演算器を含む演算部と、複数の演算器による論理演算の結果をそれぞれ示す複数のフラグ信号に応じて、演算部の回路構成を示す複数のコンフィグレーションデータのいずれかを選択し、選択したコンフィグレーションデータを演算部に出力する制御部とを有する。
【０００７】
別の観点によれば、再構成可能な複数の演算器を含む演算部を含む半導体集積回路の動作方法は、複数の演算器による論理演算の結果をそれぞれ示す複数のフラグ信号に応じて、演算部の回路構成を示す複数のコンフィグレーションデータのいずれかを選択し、選択したコンフィグレーションデータを演算部に出力する。
【発明の効果】
【０００８】
本件開示の半導体集積回路および半導体集積回路の動作方法は、条件判定の結果に応じて演算部が実行する処理を従来に比べて早く開始することができ、半導体集積回路の性能を向上することができる。
【図面の簡単な説明】
【０００９】
【図１】半導体集積回路の一実施形態を示す図である。
【図２】図１に示した半導体集積回路の動作の例を示す図である。
【図３】半導体集積回路の別の実施形態を示す図である。
【図４】図３に示した演算器アレイの例を示す図である。
【図５】図４に示したフラグ演算器の例を示す図である。
【図６】図４に示したフラグ演算器の例を示す図である。
【図７】図３に示したコンフィグレーションメモリの例を示す図である。
【図８】図３に示した演算器アレイに実行させる処理の例を示す図である。
【図９】図８に示したコンテキストＣＴＸＪを実行する演算器アレイの回路構成の例を示す図である。
【図１０】図９に示した回路構成におけるデータの値、フラグ信号および実行されるデータ処理の関係を示す図である。
【図１１】図８に示した処理を実行する半導体集積回路の動作の例を示す図である。
【図１２】図８に示した処理を実行する半導体集積回路の動作の別の例を示す図である。
【図１３】図３に示した演算器アレイに実行させる処理の別の例を示す図である。
【図１４】図１３に示したコンテキストＣＴＸＪを実行する演算器アレイの回路構成の例を示す図である。
【図１５】図１４に示した回路構成におけるデータの値、フラグ信号および実行されるデータ処理の関係を示す図である。
【図１６】図１３に示した処理を実行する半導体集積回路の動作の例を示す図である。
【図１７】図３に示した演算器アレイに実行させる処理のさらなる別の例を示す図である。
【図１８】図１７に示したコンテキストＣＴＸＪを実行する演算器アレイの回路構成の例を示す図である。
【図１９】図１８に示した回路構成におけるデータの値、フラグ信号および実行されるデータ処理の関係を示す図である。
【図２０】図１７に示した処理を実行する半導体集積回路の動作の例を示す図である。
【図２１】図３に示した半導体集積回路の動作の別の例を示す図である。
【図２２】半導体集積回路図の別の例を示す図である。
【図２３】図２２に示した演算器アレイの例を示す図である。
【図２４】図２２に示した演算器アレイに実行させる処理の例を示す図である。
【図２５】図２４に示した処理を実行する半導体集積回路の動作の例を示す図である。
【図２６】図２２に示した演算器アレイに実行させる処理の別の例を示す図である。
【図２７】図２６に示した処理を実行する半導体集積回路の動作の例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を用いて実施形態を説明する。信号が伝達される信号線および端子には、信号名と同じ符号を使用する。複数ビットの信号が伝達される信号線は、太線で示す。
【００１１】
図１は、半導体集積回路の一実施形態を示す。この実施形態の半導体集積回路ＳＥＭ１は、演算部２および制御部４を有する。演算部２は、コンフィグレーションデータＣＦＧ（ＣＦＧ０、ＣＦＧ１）に応じて動的に再構成可能であり、論理演算の結果に応じてフラグ信号ＦＬＧ（ＦＬＧ０、ＦＬＧ１）を出力する複数の演算器ＯＰ（ＯＰ０、ＯＰ１）を有する。制御部４は、複数のフラグ信号ＦＬＧに応じて、演算部２の回路を再構成する複数のコンフィグレーションデータＣＦＧ（ＣＦＧ０、ＣＦＧ１）のいずれかを選択し、選択したコンフィグレーションデータＣＦＧを演算部２に出力する。
【００１２】
例えば、制御部４は、フラグ信号ＦＬＧに応じて、コンフィグレーションデータＣＦＧのいずれかを選択する選択信号ＳＥＬを出力する。コンフィグレーションデータＣＦＧ０、ＣＦＧ１がメモリに格納される場合、選択信号ＳＥＬは、コンフィグレーションデータＣＦＧ０、ＣＦＧ１が格納される記憶領域を示すアドレスを含む。なお、コンフィグレーションデータＣＦＧ０、ＣＦＧ１を格納するメモリは、半導体集積回路ＳＥＭ１の外部に配置されてもよい。
【００１３】
例えば、制御部２は、真を示すフラグ信号ＦＬＧに対応するコンフィグレーションデータＣＦＧを選択する。例えば、演算部２は、フラグ信号ＦＬＧ０の優先度をフラグ信号ＦＬＧ１の優先度より高く設定し、複数の演算器ＯＰのうち、論理演算の結果を他の演算器ＯＰより優先させる演算器ＯＰの出力をフラグ信号ＦＬＧ０として出力してもよい。この場合、制御部４は、フラグ信号ＦＬＧ０、ＦＬＧ１の両方が真を示す場合に、優先度が高いフラグ信号ＦＬＧ０に対応するコンフィグレーションデータＣＦＧを選択する選択信号ＳＥＬを出力する。
【００１４】
図２は、図１に示した半導体集積回路ＳＥＭ１の動作の例を示す。すなわち、図２は、半導体集積回路の動作方法の一実施形態を示す。なお、かぎ括弧で囲った動作は、演算部が１つのフラグ信号ＦＬＧを出力し、制御部が１つのフラグ信号ＦＬＧに基づいて、コンフィグレーションデータＣＦＧを選択する別の半導体集積回路の動作を示す。
【００１５】
半導体集積回路ＳＥＭ１の演算部２は、条件判定用のコンフィグレーションデータＣＦＧＪ１により回路が予め再構成されており、演算器ＯＰ０、ＯＰ１による条件判定を実行する（図２（ａ））。この例では、演算器ＯＰ０は、演算部２に供給されるデータｘが”０”であるか否かを判定し、演算器ＯＰ１は、データｘが”１”であるか否かを判定する。例えば、演算部２に供給されるデータｘが”１”の場合、演算部２は、演算器ＯＰ０の出力に対応するフラグ信号ＦＬＧ０を出力しない（例えば、フラグ信号ＦＬＧ０は偽を示す）（図２（ｂ））。一方、演算部２は、演算器ＯＰ１に対応するフラグ信号ＦＬＧ１を出力する（例えば、フラグ信号ＦＬＧ１は真を示す）（図２（ｃ））。
【００１６】
制御部４は、フラグ信号ＦＬＧ０、ＦＬＧ１に基づいて、真を示すフラグ信号ＦＬＧ１に対応するコンフィグレーションデータＣＦＧ１を選択して演算部２に転送する（図２（ｄ））。演算部２は、コンフィグレーションデータＣＦＧ１に基づいて回路を再構成した後、データｘが”１”の場合の処理を実行する（図２（ｅ））。
【００１７】
これに対して、演算部が１つのフラグ信号ＦＬＧを出力する場合、まず、演算部の演算器ＯＰは、データｘが”０”であるか否かを判定する（図２（ｆ））。データｘは”１”であるため、フラグ信号ＦＬＧは出力されない（図２（ｇ））。制御部は、フラグ信号ＦＬＧに基づいて、条件判定用のコンフィグレーションデータＣＦＧＪ２を選択して演算部に転送する（図２（ｈ））。演算部は、コンフィグレーションデータＣＦＧＪ２に基づいて回路を再構成した後、演算器ＯＰにより、データｘが”１”であるか否かを判定する。
【００１８】
演算部に供給されるデータｘは”１”であるため、演算部は、フラグ信号ＦＬＧを出力する（図２（ｉ））。制御部は、フラグ信号ＦＬＧに基づいて、コンフィグレーションデータＣＦＧ１を選択して演算部に転送する（図２（ｊ））。演算部は、コンフィグレーションデータＣＦＧ１に基づいて回路を再構成した後、データｘが”１”の場合の処理を実行する（図２（ｋ））。
【００１９】
図２に示したように、この実施形態では、複数のフラグ信号ＦＬＧ０、ＦＬＧ１に応じてコンフィグレーションデータＣＦＧが選択される。すなわち、複数の演算器ＯＰ０、ＯＰ１による複数の論理演算（条件判定）の結果に基づいて、演算部２を再構成するコンフィグレーションデータＣＦＧを選択することができる。この結果、１つのフラグ信号ＦＬＧに応じてコンフィグレーションデータＣＦＧを選択する場合に比べて、条件判定に掛かる時間を短縮でき、条件判定の結果に応じて演算部２が実行する処理を早く開始できる。これにより、半導体集積回路ＳＥＭ１の性能を向上することができる。換言すれば、動的に再構成可能な演算部を有する半導体集積回路ＳＥＭ１において、条件判定の結果に応じて再構成される演算部２の回路を、図２の括弧内に示した動作より早く構築することができる。
【００２０】
以上、図１および図２に示した実施形態では、１つのフラグ信号ＦＬＧに応じてコンフィグレーションデータＣＦＧを選択する場合に比べて、条件判定に掛かる時間を短縮することができる。この結果、条件判定の結果に応じて演算部２が実行する処理を早く開始でき、半導体集積回路ＳＥＭ１の性能を向上することができる。
【００２１】
図３は、半導体集積回路の別の実施形態を示す。図１および図２に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。
【００２２】
この実施形態の半導体集積回路ＳＥＭ２は、システムバスＳＢＵＳを介してＭＣＵ（Micro Control Unit）２０、メモリ３０および周辺回路４０に接続される。半導体集積回路ＳＥＭ２は、共有メモリ１２、シーケンサ１４、コンフィグレーションメモリ１６Ａ、１６Ｂおよび演算器アレイ１８を有し、例えば、クロック信号に同期して動作する。
【００２３】
システムバスＳＢＵＳは、ＭＣＵ２０と、半導体集積回路ＳＥＭ２、メモリ３０および周辺回路４０との間の通信に使用される。例えば、半導体集積回路ＳＥＭ２、ＭＣＵ２０、メモリ３０、周辺回路４０およびシステムバスＳＢＵＳは、システムＳＹＳ２に搭載される。なお、ＭＣＵ２０、メモリ３０、周辺回路４０およびシステムバスＳＢＵＳは、半導体集積回路ＳＥＭ２内に配置されてもよい。
【００２４】
ＭＣＵ２０は、例えば、メモリ３０に格納されたプログラムを実行することで、半導体集積回路ＳＥＭ２および周辺回路４０の動作を制御するとともに、システムＳＹＳ２の全体の動作を制御する。ＭＣＵ２０は、演算器アレイ１８に構築する回路のデータをコンフィグレーションメモリ１６Ａに書き込み、コンフィグレーションメモリ１６Ａのアドレスを示す情報をコンフィグレーションメモリ１６Ｂに書き込む。また、ＭＣＵ２０は、演算器アレイ１８に演算させるデータを共有メモリ１２に書き込み、演算器アレイ２４による演算により得られ、共有メモリ１２に書き込まれたデータを共有メモリ１２から読み出す。
【００２５】
メモリ３０は、フラッシュメモリやＳＲＡＭ（Static Random Access Memory）等であり、ＭＣＵ２０が実行するプログラムや、ＭＣＵ２０および周辺回路４０で使用するデータを記憶する。周辺回路４０は、通信回路、タイマ、ＡＤ（Analog to Digital）変換器およびＤＡ（Digital to Analog）変換器等である。
【００２６】
共有メモリ１２は、ＭＣＵ２０および演算器アレイ１８によりアクセス可能であり、例えば、ＳＲＡＭである。共有メモリ１２は、演算器アレイ１８により演算するデータ（演算データ、すなわち入力データ）および演算器アレイ１８による演算により得られたデータ（演算結果データ、すなわち出力データ）を保持する。
【００２７】
共有メモリ１２は、書き込み要求を示す制御信号、アドレス信号およびデータ（演算データ）を、システムバスＳＢＵＳを介してＭＣＵ２０から受けた場合、受けた演算データをアドレス信号が示す領域に書き込む。共有メモリ１２は、読み出し要求を示す制御信号およびアドレス信号を、システムバスＳＢＵＳを介してＭＣＵ２０から受けた場合、アドレス信号が示す領域に保持したデータ（演算結果データ）をＭＣＵ２０に出力する。
【００２８】
また、共有メモリ１２は、読み出し要求を示す制御信号ＣＮＴおよびアドレス信号ＡＤを演算器アレイ１８から受けた場合、アドレス信号ＡＤが示す領域に保持した演算データを演算器アレイ１８に出力する。共有メモリ１２は、書き込み要求を示す制御信号ＣＮＴ、アドレス信号ＡＤおよびデータ（演算結果データ）を演算器アレイ１８から受けた場合、受けた演算結果データをアドレス信号ＡＤが示す領域に書き込む。
【００２９】
コンフィグレーションメモリ１６Ａは、演算器アレイ１８に構築される回路のデータを記憶する複数の記憶領域を有する。回路のデータは、各回路の機能を示す情報および回路間の接続を示す情報を含む。コンフィグレーションメモリ１６Ａは、読み出し要求を示す制御信号ＣＮＴａおよびアドレス信号ＡＤａをシーケンサ１４から受けた場合、演算器アレイ１８に構築する回路のデータＲＤＴをコンフィグレーションデータＣＦＧとして演算器アレイ１８に出力する。
【００３０】
コンフィグレーションメモリ１６Ｂは、シーケンサ１４のレジスタＲＥＧ０−ＲＥＧ７に格納する８組のアドレスＡＤａ、ＡＤｂ、分岐制御フラグＢＲＡおよび終了フラグＥＮＤＳを記憶する複数の記憶領域を有する。コンフィグレーションメモリ１６Ｂは、読み出し要求を示す制御信号ＣＮＴｂおよびアドレス信号ＡＤｂをシーケンサ１４から受けた場合、アドレス信号ＡＤｂに対応する記憶領域に格納されたアドレスＡＤａ、ＡＤｂ、分岐制御フラグＢＲＡおよび終了フラグＥＮＤＳの値を出力する。
【００３１】
コンフィグレーションメモリ１６Ａ、１６Ｂに保持されるデータは、シーケンサ１４が動作を開始する前に、半導体集積回路ＳＥＭ２が搭載されるシステムの仕様に応じて、システムバスＳＢＵＳを介してＭＣＵ２０から書き込まれる。コンフィグレーションメモリ１６Ａ、１６Ｂの例は、図７に示す。
【００３２】
シーケンサ１４は、制御回路ＣＮＴＬ、レジスタＲＥＧ（ＲＥＧ０、ＲＥＧ１、ＲＥＧ２、ＲＥＧ３、ＲＥＧ４、ＲＥＧ５、ＲＥＧ６、ＲＥＧ７）、セレクタＳＳＥＬ１、ＳＳＥＬ２およびインクリメンタＩＮＣを有する。シーケンサ１４は、複数のフラグ信号ＦＬＧに応じて、演算器アレイ１８の回路構成を示す複数のコンフィグレーションデータＣＦＧのいずれかを選択し、選択したコンフィグレーションデータＣＦＧを演算器アレイ１８に出力する制御部の一例である。
【００３３】
制御回路ＣＮＴＬは、例えばステートマシンを含み、演算器アレイ１８の構成の変更（コンテキストの切り替え）を制御する。制御回路ＣＮＴＬによるコンテキストの切り替え制御は、コンフィグレーションメモリ１６ＢからレジスタＲＥＧに書き込まれるレジスタデータＲＥＧＤに応じて決定される。
【００３４】
制御回路ＣＮＴＬは、コンフィグレーションメモリ１６Ａから演算器アレイ１８にコンフィグレーションデータＣＦＧを転送するタイミングを示すトリガ信号ＴＲＧと、演算器アレイ１８の動作を一時的に停止するストール信号ＳＴＬとを生成する機能を有する。
【００３５】
制御回路ＣＮＴＬは、演算器アレイ１８によるデータ処理（コンテキスト）の完了を示す終了信号ＥＮＤおよびフラグ信号ＦＬＧ（ＦＬＧ０、ＦＬＧ１、ＦＬＧ２、ＦＬＧ３、ＦＬＧ４、ＦＬＧ５、ＦＬＧ６、ＦＬＧ７）を演算器アレイ１８から受ける。各フラグ信号ＦＬＧは、演算器アレイ１８による論理演算（条件判定）の結果（真または偽）を示す。なお、フラグ信号ＦＬＧの数は、２つ以上であればよい。
【００３６】
制御回路ＣＮＴＬは、終了信号ＥＮＤに応答して、コンフィグレーションメモリ１６Ａに制御信号ＣＮＴａを出力し、コンフィグレーションメモリ１６Ｂに制御信号ＣＮＴｂを出力する。制御回路ＣＮＴＬは、演算器アレイ１８の動作を一時的に停止する場合、ストール信号ＳＴＬを演算器アレイ１８に出力する。
【００３７】
また、制御回路ＣＮＴＬは、フラグ信号ＦＬＧに基づいてセレクタＳＳＥＬ１に選択信号ＢＳ１を出力する。例えば、制御回路ＣＮＴＬは、真を示すフラグ信号ＦＬＧに対応するレジスタＲＥＧを選択する選択信号ＢＳ１を出力する。真を示す複数のフラグ信号ＦＬＧがある場合、制御回路ＣＮＴＬは、優先度が他のフラグ信号ＦＬＧより高いフラグ信号ＦＬＧに対応するレジスタＲＥＧを選択する選択信号ＢＳ１を出力する。例えば、優先度は、フラグ信号ＦＬＧの番号が小さいほど高く設定される。演算器アレイ１８での論理演算の結果と、フラグ信号ＦＬＧの優先度との対応付けは、図４で説明するように、演算器アレイ１８内のネットワーク回路ＮＷＦにより実行される。なお、制御回路ＣＮＴＬは、リセット状態の分岐制御フラグＢＲＡを受けている期間、選択信号ＢＳ１を”０”に固定し、レジスタＲＥＧ０に格納された情報をセレクタＳＳＥＬ１に選択させる。
【００３８】
各レジスタＲＥＧ０−ＲＥＧ７は、制御回路ＣＮＴＬからの制御信号ＣＮＴｂおよびアドレス信号ＡＤｂに応じてコンフィグレーションメモリ１６Ｂから読み出されるレジスタデータＲＥＧＤに含まれる８組のアドレス値をそれぞれ保持する。各レジスタＲＥＧ０−ＲＥＧ７が保持する１組のアドレス値は、コンフィグレーションメモリ１６ＡにアクセスするアドレスＡＤａおよびコンフィグレーションメモリ１６ＢにアクセスするアドレスＡＤｂとして使用される。例えば、レジスタＲＥＧ０−ＲＥＧ７は、フラグ信号ＦＬＧ０−ＦＬＧ７にそれぞれ対応しており、フラグ信号ＦＬＧと同様に、番号が小さいほど優先度が高い。
【００３９】
なお、コンフィグレーションメモリ１６Ｂが、次の読み出し要求を受けるまでレジスタデータＲＥＧＤを保持する保持回路を有する場合、シーケンサ１４は、レジスタＲＥＧ０−ＲＥＧ７を持たなくてもよい。この場合、レジスタデータＲＥＧＤは、セレクタＳＳＥＬ１の入力端子に供給される。
【００４０】
セレクタＳＳＥＬ１は、フラグ信号ＦＬＧに基づいて制御回路ＣＮＴＬが生成する選択信号ＢＳ１に応じて、レジスタＲＥＧ０−ＲＥＧ７からそれぞれ出力されるアドレスＡＤａ、ＡＤｂの１組を選択する。セレクタＳＳＥＬ１は、選択したアドレスＡＤａ、ＡＤｂをコンフィグレーションメモリ１６Ａ、１６Ｂに出力する。そして、アドレスＡＤａが示すコンフィグレーションメモリ１６Ａの記憶領域から、次に実行されるコンテキストを示すコンフィグレーションデータＣＦＧが読み出される。また、アドレスＡＤｂが示すコンフィグレーションメモリ１６Ｂの記憶領域から、レジスタＲＥＧ０−ＲＥＧ７に新たに格納される８組のアドレスＡＤａ、ＡＤｂ、分岐制御フラグＢＲＡおよび終了フラグＥＮＤＳの値が読み出される。
【００４１】
すなわち、シーケンサ１４は、演算器アレイ１８による複数の条件判定の結果を示すフラグ信号ＦＬＧ０−ＦＬＧ７に応じて、演算器アレイ１８に次に再構成させる回路を８種類のうちから決定する機能を有する。これにより、図８に示すｃａｓｅ文または図１３に示すｉｆ文に相当する多分岐の条件判定を、一度に実行することが可能になり、演算器アレイ１８の書き換え頻度を従来に比べて削減することが可能になる。さらに、フラグ信号ＦＬＧ０−ＦＬＧ７に優先度を割り当てることにより、複数のフラグ信号ＦＬＧが真を示す場合にも、セレクタＳＳＥＬ１により、正しいレジスタＲＥＧを選択することができる。
【００４２】
分岐制御フラグＢＲＡは、フラグ信号ＦＬＧに基づく条件分岐を実行する場合にセット（＝”１”）され、フラグ信号ＦＬＧに基づく条件分岐を実行しない場合にリセット（＝”０”）される。例えば、終了フラグＥＮＤＳは、条件判定用のコンテキストを実行する場合にリセットされ、条件判定により選択された演算用のコンテキストを実行する場合にセットされる。制御回路ＣＮＴＬは、終了フラグＥＮＤＳがセットされた場合、所望のデータ処理が実行され、演算結果が得られた後にシーケンサ１４の動作を停止する。
【００４３】
インクリメンタＩＮＣは、レジスタＲＥＧ０に格納されたアドレス値ＡＤａを保持し、保持したアドレス値ＡＤａをセレクタＳＳＥＬ２に出力する。また、インクリメンタＩＮＣは、分岐制御フラグＢＲＡがリセットされた場合に、保持しているアドレスＡＤａを順次に”１”ずつ増加し、増加したアドレス値ＡＤａをセレクタＳＳＥＬ２に出力する。インクリメンタＩＮＣは、有効フラグＢＲＡが無効を示す場合に、コンフィグレーションメモリ１６Ｂから出力されるアドレスＡＤｂの１つを順次に更新する更新回路の一例である。なお、インクリメンタＩＮＣは、アドレス値ＡＤａを”１”ずつ減少させてもよい。
【００４４】
セレクタＳＳＥＬ２は、分岐制御フラグＢＲＡのセット中にセレクタＳＳＥＬ１から出力されるアドレス値ＡＤａを選択し、分岐制御フラグＢＲＡのリセット中にインクリメンタＩＮＣから出力されるアドレス値ＡＤａを選択する。すなわち、シーケンサ１４は、フラグ信号ＦＬＧの論理に応じた条件分岐の処理を実行しない場合、レジスタＲＥＧ０に保持されたアドレスＡＤａを順次に更新して、コンフィグレーションメモリ１６ＡからコンフィグレーションデータＣＦＧを読み出す。
【００４５】
演算器アレイ１８は、ネットワーク回路ＮＷＤ、複数の演算器ＯＰ、複数のフラグ演算器ＦＯＰ、ネットワーク回路ＮＷＦおよびフラグ演算器ＤＦＯＰを有する。演算器アレイ１８は、演算器ＯＰ、フラグ演算器ＦＯＰ、フラグ演算器ＤＦＯＰをネットワーク回路ＮＷＤ、ＮＷＦを介して連結することで、所定のデータ処理手順（データフロー）を実現する演算モジュールである。演算器アレイ１８は、演算器ＯＰ、フラグ演算器ＦＯＰ、フラグ演算器ＤＦＯＰの動作仕様、演算器ＯＰとフラグ演算器ＦＯＰ間の接続仕様をＭＣＵ２０の動作中に切り替え可能である。すなわち、演算器アレイ１８は、動的再構成回路である。演算器アレイ１８は、再構成可能な複数の演算器ＯＰ、ＦＯＰを含む演算部の一例である。なお、演算器アレイ１８に搭載される演算器ＯＰおよびフラグ演算器ＦＯＰの数は、設計仕様（回路規模・消費電力・演算内容）に応じて決定される。演算器アレイ１８の例は、図４に示す。
【００４６】
図４は、図３に示した演算器アレイ１８の例を示す。演算器アレイ１８は、図３に示したネットワーク回路ＮＷＤ、ｎ個（ｎは正の整数）の演算器ＯＰ、ｍ個（ｍは正の整数）のフラグ演算器ＦＯＰ、ネットワーク回路ＮＷＦ、フラグ演算器ＤＦＯＰ、カウンタＡＣＯＵＮＴおよびメモリ制御回路ＭＣＮＴを有する。
【００４７】
ネットワーク回路ＮＷＤは、各演算器ＯＰにデータを出力するデータ出力端子ＤＯ（ＤＯ０［１：０］、...、ＤＯｎ［１：０］）と、各演算器ＯＰからデータを受けるデータ入力端子ＤＩ（ＤＩ０、...、ＤＩｎ）とを有する。データ出力端子ＤＯの符号”［１：０］”の数値は、ポート番号を示す。例えば、各データ出力端子ＤＯは、６４ビット（３２ビットのポートが２つ）であり、各データ入力端子ＤＩは、３２ビット（３２ビットのポートが１つ）である。
【００４８】
また、ネットワーク回路ＮＷＤは、図３に示した共有メモリ１２からデータを受けるデータ入力端子ＤＩＭ（ＤＩＭ０、...、ＤＩＭｐ）と、共有メモリ１２にデータを出力するデータ出力端子ＤＯＭ（ＤＯＭ０、...、ＤＩＭｐ）とを有する。例えば、各データ入力端子ＤＩＭおよび各データ出力端子ＤＯＭは、３２ビット（すなわち、”ｐ”は、”３１”）である。
【００４９】
そして、ネットワーク回路ＮＷＤは、トリガ信号ＴＲＧに同期して受信するコンフィグレーションメモリ１６ＡからからのコンフィグレーションデータＣＦＧに応じて、演算器ＯＰ間の接続仕様を変更する。ネットワーク回路ＮＷＤは、接続仕様を変更した後、共有メモリ１２から受ける入力データＤＩＭを出力データＤＯとして所定の演算器ＯＰに転送する。
【００５０】
各演算器ＯＰは、ネットワーク回路ＮＷＤからの出力データＤＯを受けるデータ入力ポートＤＩ［１：０］と、演算により得られたデータを出力するデータ出力ポートＤＯとを有する。データ入力端子ＤＩの符号”［１：０］”の数値は、ポート番号を示す。例えば、各演算器ＯＰは、２つのデータ入力ポートＤＩ（ＤＩ［１］、ＤＩ［０］）と１つのデータ出力ポートＤＯとを有するが、データ入力ポートＤＩおよびデータ出力ポートＤＯの数は、演算器ＯＰの仕様に応じて変更可能であり、図４に示す例に限定されない。
【００５１】
また、各演算器ＯＰは、ネットワーク回路ＮＷＦからの一対のフラグ信号ＡＦＯ（ＡＦＯ０、...、ＡＦＯｎ）を受けるフラグ入力端子ＦＩ１、ＦＩ０と、ネットワーク回路ＮＷＦにフラグ信号ＡＦＩを出力するフラグ出力端子ＦＯとを有する。各フラグ入力端子ＦＩ１、ＦＩ０およびフラグ出力端子ＦＯは、２ビットである。
【００５２】
そして、各演算器ＯＰは、トリガ信号ＴＲＧに同期して受信するコンフィグレーションデータＣＦＧに応じて、例えば、四則演算のいずれかまたは複数種の論理演算のいずれかを実行する演算器に切り替えられる。演算器ＯＰは、入力ポートＤＩ０、ＤＩ１の少なくとも一方で受けるデータを演算し、演算結果を出力ポートＤＯまたはフラグ出力端子ＦＯに出力する。算術演算の結果は、出力ポートＤＯに出力され、比較処理または符号判定の結果はフラグ信号としてフラグ出力端子ＦＯに出力される。
【００５３】
なお、各演算器ＯＰは、フラグ入力端子ＦＩ１、ＦＩ０で受ける他の演算器ＯＰまたはフラグ演算器ＦＯＰからのフラグ信号に基づいて、データ入力ポートＤＩ［１：０］で受けるデータの一方を選択するセレクタとして動作させてもよい。演算器ＯＰは、ストール信号ＳＴＬを受けている期間、動作を停止する。
【００５４】
各フラグ演算器ＦＯＰは、ネットワーク回路ＮＷＦを介して演算器ＯＰまたは他のフラグ演算器ＦＯＰからフラグ信号を受けるフラグ入力端子ＦＩ１、ＦＩ０と、フラグ演算の結果を出力するフラグ出力端子ＦＯとを有する。各フラグ入力端子ＦＩ１、ＦＩ０およびフラグ出力端子ＦＯは、２ビットである。
【００５５】
フラグ演算器ＦＯＰは、フラグ信号の論理積または論理和の処理を実行することで、複数の演算器ＯＰ、ＦＯＰの判定結果に基づく条件判定を可能にする。そして、各フラグ演算器ＦＯＰは、トリガ信号ＴＲＧに同期して受信するコンフィグレーションデータＣＦＧに応じて、複数種の論理演算のいずれかを実行するフラグ演算器に切り替えられる。各フラグ演算器ＦＯＰは、クロック信号に同期してフラグ演算を実行し、演算結果をフラグ出力端子ＦＯに出力する。フラグ演算器ＦＯＰは、ストール信号ＳＴＬを受けている期間、動作を停止する。
【００５６】
ネットワーク回路ＮＷＦは、各演算器ＯＰにフラグ信号を出力する２ビットのフラグ出力端子ＡＦＯ１、ＡＦＯ０（ＡＦＯ０１、ＡＦＯ００、...、ＡＦＯｎ１、ＡＦＯｎ０）を有する。ネットワーク回路ＮＷＦは、各演算器ＯＰからフラグ信号を受けるフラグ入力端子ＡＦＩ（ＡＦＩ０、...、ＡＦＩｎ）とを有する。また、ネットワーク回路ＮＷＦは、各フラグ演算器ＦＯＰにフラグ信号を出力する２ビットのフラグ出力端子ＦＦＯ１、ＦＦＯ０（ＦＦＯ０１、ＦＦＯ００、...、ＦＦＯｍ１、ＦＦＯｍ０）を有する。ネットワーク回路ＮＷＦは、各フラグ演算器ＦＯＰからフラグ信号を受ける１ビットのフラグ入力端子ＦＦＩ（ＦＦＩ０、...、ＦＦＩｍ）とを有する。各フラグ出力端子ＡＦＯ１、ＡＦＯ０、フラグ入力端子ＡＦＩ、フラグ出力端子ＦＦＯ１、ＦＦＯ０およびフラグ入力端子ＦＦＩは、２ビットである。
【００５７】
そして、ネットワーク回路ＮＷＦは、コンフィグレーションデータＣＦＧに応じて、演算器ＯＰまたはフラグ演算器ＦＯＰのフラグ出力端子ＦＯを、他の演算器ＯＰまたはフラグ演算器ＦＯＰのフラグ入力端子ＦＩに接続する機能を有する。また、ネットワーク回路ＮＷＦは、コンフィグレーションデータＣＦＧに応じて、演算器ＯＰおよびフラグ演算器ＦＯＰのフラグ出力端子ＦＯを、フラグ端子ＦＬＧ（ＦＬＧ０−ＦＬＧ７）のいずれかに接続する機能を有する。
【００５８】
すなわち、ネットワーク回路ＮＷＦは、トリガ信号ＴＲＧに同期して受信するコンフィグレーションデータＣＦＧに応じて、演算器ＯＰとフラグ演算器ＦＯＰとの間の接続仕様およびフラグ端子ＦＬＧへのフラグ信号の転送仕様を変更する機能を有する。ネットワーク回路ＮＷＦは、演算器ＯＰ、ＦＯＰの出力とフラグ信号ＦＬＧを出力するフラグ端子ＦＬＧとを優先度に応じて接続する接続部の一例である。
【００５９】
図３で説明したように、フラグ信号ＦＬＧ０−ＦＬＧ７の優先度は、番号が小さいほど高い。ネットワーク回路ＮＷＦは、任意の演算器ＯＰまたはフラグ演算器ＦＯＰの出力を、優先度に応じてフラグ端子ＦＬＧ０−ＦＬＧ７のいずれかに接続することができる。この結果、優先度が設定されたフラグ信号ＦＬＧ０−ＦＬＧ７をネットワーク回路ＮＷＦからシーケンサ１４に出力することができ、シーケンサ１４による優先度の判定処理を省くことができる。
【００６０】
フラグ演算器ＤＦＯＰは、トリガ信号ＴＲＧに同期して受信するコンフィグレーションデータＣＦＧに応じて、通常モードあるいはデフォルトモードのいずれかで動作する。フラグ演算器ＤＦＯＰは、通常モード中に、２ビットのフラグ入力端子ＦＩ７で受けるフラグ信号ＦＬＧ７をフラグ出力端子ＦＯからフラグ信号ＦＬＧ７として出力する。フラグ演算器ＤＦＯＰは、デフォルトモード中に、２ビットのフラグ入力端子ＦＩ６−ＦＩ０でそれぞれ受けるフラグ信号ＦＬＧ６−ＦＬＧ０が偽または無効を示す場合、真を示すフラグ信号ＦＬＧ７を出力する。また、フラグ演算器ＤＦＯＰは、デフォルトモード中に、フラグ入力端子ＦＩ６−ＦＩ０で受けるフラグ信号ＦＬＧ６−ＦＬＧ０のいずれかが真を示す場合、偽を示すフラグ信号ＦＬＧ７を出力する。
【００６１】
フラグ演算器ＤＦＯＰは、演算器ＯＰ、ＦＯＰから出力される複数のフラグ信号ＦＬＧ０−ＦＬＧ６のいずれも偽を示す場合に、真を示すフラグ信号ＦＬＧ７をシーケンサ１４に出力するフラグ制御回路の一例である。フラグ演算器ＤＦＯＰの例は、図６に示す。
【００６２】
例えば、各フラグ信号ＦＬＧは、２ビットであり、上位ビットで真または偽を示し、下位ビットで有効または無効を示す。比較処理または符号判定の結果が真（ｔｒｕｅ）の場合、フラグ信号ＦＬＧは、２進数の”１１”に設定され、比較処理または符号判定の結果が偽（ｆａｌｓｅ）の場合、フラグ信号ＦＬＧは、２進数の"１０”に設定される。フラグ信号ＦＬＧの出力を伴わない演算が実行される場合、フラグ信号ＦＬＧは、無効を示す２進数の”００”または”０１”に設定される。以下の説明では、フラグ信号ＦＬＧの値を示す２桁の数値は、２進数である。
【００６３】
この実施形態では、演算器アレイ１８は、優先度が予め設定された複数のフラグ信号ＦＬＧを出力し、フラグ信号ＦＬＧの優先度に応じて、次に実行するコンテキストをシーケンサ１４に選択させる。これにより、次に演算を実行するコンテキストを決定するための条件判定で使用されるクロックサイクル数を従来に比べて減らすことができ、演算器アレイ１８の動作効率を向上することができる。
【００６４】
カウンタＡＣＯＵＮＴは、コンテキストの実行に応じて、例えば、メモリ制御回路ＭＣＮＴが生成するアドレス信号ＡＤの増分を示すインデックス信号ＩＤＸを生成する。また、カウンタＡＣＯＵＮＴは、コンテキストの処理に掛かるサイクル数をカウントし、実行中のコンテキストの終了を判定した場合に、終了信号ＥＮＤを出力する。カウンタＡＣＯＵＮＴは、トリガ信号ＴＲＧに同期して受信するコンフィグレーションデータＣＦＧに応じて、インデックス信号ＩＤＸの値や増分、終了信号ＥＮＤの生成仕様や生成タイミングが変更される。また、カウンタＡＣＯＵＮＴは、ストール信号ＳＴＬを受けている期間、動作を停止する。
【００６５】
メモリ制御回路ＭＣＮＴは、コンフィグレーションデータＣＦＧに含まれるアドレス信号ＡＤの基準値と、カウンタＡＣＯＵＮＴからのインデックス信号ＩＤＸの値とからアドレス信号ＡＤを生成し、制御信号ＣＮＴとともに図３に示した共有メモリ１２に出力する。そして、メモリ制御回路ＭＣＮＴにより共有メモリ１２の動作を制御することで、ネットワーク回路ＮＷＤを介して、共有メモリ１２と演算器アレイ１８との間でデータが授受される。メモリ制御回路ＭＣＮＴは、トリガ信号ＴＲＧに同期して受信するコンフィグレーションデータＣＦＧに応じて、アドレス信号ＡＤおよび制御信号ＣＮＴの生成タイミング等を変更可能である。
【００６６】
図５は、図４に示したフラグ演算器ＦＯＰの例を示す。フラグ演算器ＦＯＰは、フリップフロップＦＦ１、極性反転器ＰＲＶＳ０、ＰＲＶＳ１、セレクタＳＥＬ０、ＳＥＬ１およびフラグ演算部ＦＬＧＯＰを有する。
【００６７】
フリップフロップＦＦ１は、トリガ信号ＴＲＧの有効レベル中にクロック信号ＣＬＫに同期して３ビットのコンフィグレーションデータＣＦＧを受信し、受信したコンフィグレーションデータＣＦＧを制御信号Ｃ［２：０］として出力する。
【００６８】
極性反転器ＰＲＶＳ０は、入力端子ＦＩ０［１：０］で受けるフラグ信号の極性を反転し、極性反転器ＰＲＶＳ１は、入力端子ＦＩ１［１：０］で受けるフラグ信号の極性を反転する。例えば、極性反転器ＰＲＶＳ０、ＰＲＶＳ１は、真を示すフラグ信号”１１”を、偽を示すフラグ信号”１０”に変換し、偽を示すフラグ信号”１０”を、真を示すフラグ信号”１１”に変換する。フラグ演算器ＦＯＰにフラグ信号の極性を反転する機能を設けることで、例えば、図１３に示すｉｆ文のネスト処理に相当する処理で使用するフラグ演算器ＦＯＰの数を、フラグ信号の極性を反転する機能を持たない場合に比べて削減できる。
【００６９】
セレクタＳＥＬ０は、制御信号Ｃ［０］がハイレベルの場合に入力端子ＦＩ０［１：０］で受けるフラグ信号を選択し、制御信号Ｃ［０］がロウレベルの場合に極性反転器ＰＲＶＳ０により極性が反転されたフラグ信号を選択する。そして、セレクタＳＥＬ０は、選択した信号をフラグ信号ＦＩ０としてフラグ演算部ＦＬＧＯＰに出力する。
【００７０】
セレクタＳＥＬ１は、制御信号Ｃ［１］がハイレベルの場合に入力端子ＦＩ１［１：０］で受けるフラグ信号を選択し、制御信号Ｃ［１］がロウレベルの場合に極性反転器ＰＲＶＳ１により極性が反転されたフラグ信号を選択する。そして、セレクタＳＥＬ１は、選択した信号をフラグ信号ＦＩ１としてフラグ演算部ＦＬＧＯＰに出力する。
【００７１】
フラグ演算部ＦＬＧＯＰは、例えば、制御信号Ｃ［２］がハイレベル（”１”）の場合にフラグ信号ＦＩ０、ＦＩ１の論理積（ＡＮＤ）をフラグ信号ＦＯ［１：０］として出力する。フラグ演算部ＦＬＧＯＰは、例えば、制御信号Ｃ［２］がロウレベル（”０”）の場合にフラグ信号ＦＩ０、ＦＩ１の論理和（ＯＲ）をフラグ信号ＦＯ［１：０］として出力する。フラグ演算部ＦＬＧＯＰは、フラグ信号ＦＩ０、ＦＩ１の少なくとも一方が無効（”００”または”０１”）の場合、無効を示すフラグ信号ＦＯ［１：０］（”００”）を出力する。
【００７２】
図６は、図４に示したフラグ演算器ＤＦＯＰの例を示す。フラグ演算器ＤＦＯＰは、フリップフロップＦＦ２、アンド回路ＡＮＤ１、ＡＮＤ０、オア回路ＯＲ、ノア回路ＮＯＲおよびセレクタＳＥＬ３、ＳＥＬ２を有する。
【００７３】
フリップフロップＦＦ２は、トリガ信号ＴＲＧの有効レベル中にクロック信号ＣＬＫに同期して９ビットのコンフィグレーションデータＣＦＧを受信し、受信したコンフィグレーションデータＣＦＧを制御信号Ｃ［８：０］として出力する。
【００７４】
アンド回路ＡＮＤ１（ＡＮＤ１０、ＡＮＤ１１、ＡＮＤ１２、ＡＮＤ１３、ＡＮＤ１４、ＡＮＤ１５、ＡＮＤ１６、ＡＮＤ１７）は、フラグ信号ＦＬＧ０−ＦＬＧ７の上位ビットを受ける。アンド回路ＡＮＤ１ｊ（ｊは、０から７のいずれか）は、フラグ信号ＦＬＧｊの上位ビットＦＩｊ［１］と制御信号Ｃ［ｊ］の論理積をフラグ信号ＦＧｊ１として出力する。制御信号Ｃ［ｊ］は、上位ビットＦＩｊ［１］を条件判定に使用する場合（入力が有効の場合）、ハイレベルに設定され、上位ビットＦＩｊ［１］を条件判定に使用しない場合（入力が無効の場合）、ロウレベルに設定される。すなわち、アンド回路ＡＮＤ１ｊは、条件判定に使用しないフラグ信号ＦＬＧｊをマスクするマスク回路として機能する。
【００７５】
オア回路ＯＲは、フラグ信号ＦＧｊ１の少なくとも１つがハイレベルの場合、ハイレベルを出力し、全てのフラグ信号ＦＧｊ１がロウレベルの場合、ロウレベルを出力する。換言すれば、オア回路ＯＲは、フラグ信号ＦＧｊ１の少なくとも１つがフラグ信号ＦＬＧの有効状態を示すときに、有効状態を示す信号をセレクタＳＥＬ３に出力する。
【００７６】
セレクタＳＥＬ３は、制御信号Ｃ［８］がハイレベルの場合にオア回路ＯＲの出力を選択し、制御信号Ｃ［８］がロウレベルの場合にフラグ信号ＦＬＧ７の上位ビットＦＩ７［１］を選択する。そして、セレクタＳＥＬ３は、選択した信号をフラグ信号ＦＬＧ７の上位ビットとして出力端子ＦＯ１に出力する。
【００７７】
アンド回路ＡＮＤ０（ＡＮＤ００、ＡＮＤ０１、ＡＮＤ０２、ＡＮＤ０３、ＡＮＤ０４、ＡＮＤ０５、ＡＮＤ０６、ＡＮＤ０７）は、フラグ信号ＦＬＧ０−ＦＬＧ７の下位ビットを受ける。アンド回路ＡＮＤ０ｋ（ｋは、０から７のいずれか）は、フラグ信号ＦＬＧｋの下位ビットＦＩｋ［０］と制御信号Ｃ［ｋ］の論理積をフラグ信号ＦＧｋ０として出力する。制御信号Ｃ［ｋ］は、下位ビットＦＩｋ［０］を条件判定に使用する場合（入力が有効の場合）、ハイレベルに設定され、下位ビットＦＩｋ［０］を条件判定に使用しない場合（入力が無効の場合）、ロウレベルに設定される。すなわち、アンド回路ＡＮＤ０ｊは、条件判定に使用しないフラグ信号ＦＬＧｋをマスクするマスク回路として機能する。
【００７８】
ノア回路ＮＯＲは、フラグ信号ＦＧｋ０の少なくとも１つがハイレベルの場合、ロウレベルを出力し、全てのフラグ信号ＦＧｋ１がロウレベルの場合、ハイレベルを出力する。換言すれば、ノア回路ＮＯＲは、全てのフラグ信号ＦＧｋ１が偽（ｆａｌｓｅ）を示す場合、真（ｔｒｕｅ）を示す信号をセレクタＳＥＬ０に出力する。また、ノア回路ＮＯＲは、フラグ信号ＦＧｋ１の少なくとも１つが真を示す場合、偽を示す信号をセレクタＳＥＬ２に出力する。
【００７９】
セレクタＳＥＬ２は、制御信号Ｃ［８］がハイレベルの場合にノア回路ＮＯＲの出力を選択し、制御信号Ｃ［８］がロウレベルの場合にフラグ信号ＦＬＧ７の下位ビットＦＩ７０を選択する。そして、セレクタＳＥＬ２は、選択した信号をフラグ信号ＦＬＧ７の下位ビットとして出力端子ＦＯ０に出力する。
【００８０】
フラグ演算器ＤＦＯＰは、通常モードまたはデフォルトモードで動作する。通常モードでは、制御信号Ｃ［８］はロウレベルに設定され、セレクタＳＥＬ３、ＳＥＬ２は、フラグ信号ＦＩ７［１］、ＦＩ７［０］をそれぞれ選択する。そして、フラグ演算器ＤＦＯＰは、ネットワーク回路ＮＷＦからのフラグ信号ＦＬＧ７を、フラグ信号ＦＬＧ７としてシーケンサ１４（図３）に出力する。
【００８１】
デフォルトモードでは、セレクタＳＥＬ３、ＳＥＬ２は、ハイレベルの制御信号Ｃ［８］を受けて、オア回路ＯＲおよびノア回路ＮＯＲの出力をそれぞれ選択する。そして、フラグ演算器ＤＦＯＰは、ネットワーク回路ＮＷＦからのフラグ信号ＦＬＧ０−ＦＬＧ６が全て偽（ｆａｌｓｅ）のときに真（ｔｒｕｅ）を示すフラグ信号ＦＬＧ７（”１１”）をシーケンサ１４に出力する。また、フラグ演算器ＤＦＯＰは、ネットワーク回路ＮＷＦからのフラグ信号ＦＬＧ０−ＦＬＧ６のいずれかが真のときに偽を示すフラグ信号ＦＬＧ７（”１０”）を出力する。
【００８２】
図７は、図３に示したコンフィグレーションメモリ１６Ａ、１６Ｂの例を示す。例えば、コンフィグレーションメモリ１６Ａは、演算器アレイ１８に回路を構築するコンフィグレーションデータＣＦＧを記憶する３２個の記憶領域を有する。コンフィグレーションデータＣＦＧは、例えば、数百ビットであり、図４に示した演算器ＯＰ、フラグ演算器ＦＯＰ、ＤＦＯＰ、ネットワーク回路ＮＷＤ、ＮＷＦ、カウンタＡＣＯＵＮＴおよびメモリ制御回路ＭＣＮＴの機能を設定する情報を含む。すなわち、コンフィグレーションデータＣＦＧは、演算器アレイ１８が実行するコンテキストＣＴＸの仕様を含む。
【００８３】
コンフィグレーションメモリ１６Ａの３２個の記憶領域は、５ビットのアドレスＡＤａにより識別可能である。そして、コンフィグレーションメモリ１６Ａは、制御信号ＣＮＴａに応じて読み出し動作を実行し、アドレス信号ＡＤａにより示される記憶領域から読み出した情報を図７に三角形で示した読み出し回路を介して、コンフィグレーションデータＣＦＧとして出力する。なお、コンフィグレーションメモリ１６Ａは、６ビットのアドレスにより６４種類の回路の仕様を記憶してもよく、４ビットのアドレスにより１６種類の回路の仕様を記憶してもよい。コンフィグレーションメモリ１６Ａは、複数のコンフィグレーションデータＣＦＧを保持する複数の記憶領域を含み、アドレスＡＤａによりアクセスされる第１記憶部の一例である。
【００８４】
例えば、コンフィグレーションメモリ１６Ｂは、図３に示したレジスタＲＥＧ０−ＲＥＧ７に転送する８組のアドレスＡＤａ、ＡＤｂ、分岐制御フラグＢＲＡおよび終了フラグＥＮＤＳを記憶する１６個の記憶領域を有する。コンフィグレーションメモリ１６Ｂの１６個の記憶領域は、４ビットのアドレスＡＤｂにより識別可能である。
【００８５】
コンフィグレーションメモリ１６Ｂの各記憶領域は、レジスタＲＥＧ０−ＲＥＧ７に対応する８組のアドレスＡＤａ、ＡＤｂを記憶する８個のサブ領域と、分岐制御フラグＢＲＡおよび終了フラグＥＮＤＳを記憶する２個のフラグ領域とを有する。例えば、各サブ領域は、９ビット（ＡＤａ＝５ビット、ＡＤｂ＝４ビット）であり、各フラグ領域は、１ビットであり、各記憶領域は、７４ビットである。そして、コンフィグレーションメモリ１６Ｂは、制御信号ＣＮＴｂに応じて読み出し動作を実行し、アドレス信号ＡＤｂにより示される記憶領域から読み出した情報を図７に三角形で示した読み出し回路を介して、レジスタデータＲＥＧＤとして出力する。コンフィグレーションメモリ１６Ｂは、複数組のアドレスＡＤａ、ＡＤｂを記憶する複数の記憶領域を含み、アドレスＡＤｂによりアクセスされる第２記憶部の一例である。
【００８６】
なお、図７に示すように、コンフィグレーションデータＣＦＧと演算器アレイ１８の回路構成を切り替えるレジスタデータＲＥＧＤとは、互いに独立したコンフィグレーションメモリ１６Ａ、１６Ｂに格納される。これにより、図２１で説明するように、半導体集積回路ＳＥＭ２に搭載するメモリの容量を従来に比べて削減でき、半導体集積回路ＳＥＭ２の回路規模を従来に比べて削減できる。
【００８７】
なお、コンフィグレーションメモリ１６Ａ、１６Ｂの代わりに、コンフィグレーションデータＣＦＧ、８個のアドレスＡＤ、制御フラグＢＲＡおよび終了フラグＥＮＤＳを記憶する３２個の記憶領域を有するコンフィグレーションメモリを配置してもよい。この場合、図３に示したレジスタＲＥＧ０−ＲＥＧ７は、コンフィグレーションメモリから読み出される８個のアドレスＡＤをそれぞれ保持する。シーケンサ１４は、条件判定の結果を示すフラグ信号ＦＬＧ０−ＦＬＧ７に応じて、レジスタＲＥＧ０−ＲＥＧ７のいずれかに保持されたアドレスＡＤを選択する。そして、選択したアドレスＡＤおよび１つの制御信号をコンフィグレーションメモリに出力し、コンフィグレーションメモリからコンフィグレーションデータＣＦＧ、８個のアドレスＡＤ、制御フラグＢＲＡおよび終了フラグＥＮＤＳを読み出す。
【００８８】
図８は、図３に示した演算器アレイ１８に実行させる処理の例を示す。この例では、半導体集積回路ＳＥＭ２内の演算器アレイ１８は、コンフィグレーションデータＣＦＧの受信に基づいて、条件判定を実行する回路（コンテキストＣＴＸＪ）を構築する。例えば、演算器アレイ１８は、コンテキストＣＴＸＪの処理を実行し、共有メモリ１２から受けるデータ”ｘ”が、”０”、”１”、”２”、”３”のいずれであるかを判定する。すなわち、コンテキストＣＴＸＪは、図８に示したＣ言語等のｓｗｉｔｃｈ文に相当する処理を実行する。演算器アレイ１８は、判定結果をフラグ信号ＦＬＧ０−ＦＬＧ３、ＦＬＧ７としてシーケンサ１４に出力する。この例では、条件判定は４回実行され、分岐先が５つあるため、５つのフラグ信号ＦＬＧ０−ＦＬＧ３、ＦＬＧ７が使用される。フラグ信号ＦＬＧ４−ＦＬＧ６は、無効を示すレベルに設定される。
【００８９】
シーケンサ１４は、フラグ信号ＦＬＧ０−ＦＬＧ３、ＦＬＧ７の値に基づいて、演算器アレイ１８が次に処理を実行する回路を構築するコンフィグレーションデータＣＦＧをコンフィグレーションメモリ１６Ａから読み出す。演算器アレイ１８は、コンフィグレーションメモリ１６Ａから読み出されるコンフィグレーションデータＣＦＧを用いて、次に処理を実行する回路（コンテキストＣＴＸ０−ＣＴＸ４のいずれか）を構築する。
【００９０】
例えば、フラグ信号ＦＬＧ０−ＦＬＧ３、ＦＬＧ７の値が、”ｘ＝０”を示す場合、演算器アレイ１８は、コンテキストＣＴＸ０（処理Ａ）を実行する回路に構築される。例えば、”ｘ＝０”は、フラグ信号ＦＬＧ０の真、フラグ信号ＦＬＧ１−ＦＬＧ３、ＦＬＧ７の偽により示される。フラグ信号ＦＬＧ０−ＦＬＧ３、ＦＬＧ７の値が、”ｘ＝１”を示す場合、演算器アレイ１８は、コンテキストＣＴＸ１（処理Ｂ）を実行する回路に構築される。例えば、”ｘ＝１”は、フラグ信号ＦＬＧ１の真、フラグ信号ＦＬＧ０、ＦＬＧ２、ＦＬＧ３、ＦＬＧ７の偽により示される。
【００９１】
フラグ信号ＦＬＧ０−ＦＬＧ３、ＦＬＧ７の値が、”ｘ＝２”を示す場合、演算器アレイ１８は、コンテキストＣＴＸ２（処理Ｃ）を実行する回路に構築される。例えば、”ｘ＝２”は、フラグ信号ＦＬＧ２の真、フラグ信号ＦＬＧ０、ＦＬＧ１、ＦＬＧ３、ＦＬＧ７の偽により示される。フラグ信号ＦＬＧ０−ＦＬＧ３、ＦＬＧ７の値が、”ｘ＝３”を示す場合、演算器アレイ１８は、コンテキストＣＴＸ３（処理Ｄ）を実行する回路に構築される。例えば、”ｘ＝３”は、フラグ信号ＦＬＧ３の真、フラグ信号ＦＬＧ０−ＦＬＧ２、ＦＬＧ７の偽により示される。
【００９２】
一方、フラグ信号ＦＬＧ０−ＦＬＧ３、ＦＬＧ７の値が、”ｘ＝０”、”ｘ＝１”、”ｘ＝２”、”ｘ＝３”のいずれでもないことを示す場合、演算器アレイ１８内の回路は、処理Ｅを実行するコンテキストＣＴＸ４に構築される。例えば、”ｘ＝０”、”ｘ＝１”、”ｘ＝２”、”ｘ＝３”のいずれでもないことは、フラグ信号ＦＬＧ７の真、フラグ信号ＦＬＧ０−ＦＬＧ３の偽により示される。そして、演算器アレイ１８は、コンテキストＣＴＸＪの実行後に、ＦＬＧ０−ＦＬＧ３、ＦＬＧ７の値に基づいて新たに構築したコンテキストＣＴＸ０−ＣＴＸ４のいずれかの処理を実行する。
【００９３】
図３に示した半導体集積回路ＳＥＭ２では、条件判定の結果に応じて複数の処理のいずれかが選択的に実行される場合に、実行するデータ処理を１つの条件判定用のコンテキストＣＴＸＪにより決定することができる。すなわち、実行するデータ処理の決定のために複数の条件判定用のコンテキストＣＴＸが構築されないため、条件判定からデータ処理の実行が開始されるまでのタイミングを従来に比べて早くすることができる。この結果、半導体集積回路ＳＥＭ２の性能を従来に比べて向上することができる。
【００９４】
図９は、図８に示したコンテキストＣＴＸＪを実行する演算器アレイ１８の回路構成の例を示す。図９は、コンフィグレーションデータＣＦＧの受信に基づいて、演算器アレイ１８が、条件判定を実行する回路（コンテキストＣＴＸＪ）に構築された状態を示す。換言すれば、図９は、所定の演算を順次に実行する演算フロー（データフローとも称される）を示す。
【００９５】
例えば、ネットワーク回路ＮＷＤは、コンフィグレーションデータＣＦＧに基づいて、データ”ｘ”を出力する共有メモリ１２のデータ端子ＲＤＴを、演算器ＯＰ０、ＯＰ１、ＯＰ２、ＯＰ３のデータ入力端子ＤＩ０に接続する。演算器ＯＰ０は、コンフィグレーションデータＣＦＧに基づいて、データ入力端子ＤＩ０で受けたデータ”ｘ”が”０”であるか否かを判定する回路に構築される。演算器ＯＰ０は、データ”ｘ”が”０”である場合、フラグ出力端子ＦＯから真（ｔｒｕｅ）を示すフラグ信号（”１１”）を出力し、データ”ｘ”が”０”でない場合、フラグ出力端子ＦＯから偽（ｆａｌｓｅ）を示すフラグ信号（”１０”）を出力する。
【００９６】
コンフィグレーションデータＣＦＧにより回路が構築された演算器ＯＰ１、ＯＰ２、ＯＰ３は、演算器ＯＰ０と同様に動作する。すなわち、演算器ＯＰ１は、データ”ｘ”が”１”である場合、フラグ出力端子ＦＯから真を示すフラグ信号を出力し、データ”ｘ”が”１”でない場合、フラグ出力端子ＦＯから偽を示すフラグ信号を出力する。演算器ＯＰ２は、データ”ｘ”が”２”である場合、フラグ出力端子ＦＯから真を示すフラグ信号を出力し、データ”ｘ”が”２”でない場合、フラグ出力端子ＦＯから偽を示すフラグ信号を出力する。演算器ＯＰ３は、データ”ｘ”が”３”である場合、フラグ出力端子ＦＯから真を示すフラグ信号を出力し、データ”ｘ”が”３”でない場合、フラグ出力端子ＦＯから偽を示すフラグ信号を出力する。なお、図８に示したｓｗｉｔｃｈ文に相当する処理を実行する場合、複数の演算器ＯＰ（ＯＰ０−ＯＰ３の２つ以上）は、真を示すフラグ信号を重複して出力しない。
【００９７】
ネットワーク回路ＮＷＦは、コンフィグレーションデータＣＦＧに基づいて、演算器ＯＰ０、ＯＰ１、ＯＰ２、ＯＰ３のフラグ出力端子ＦＯをシーケンサ１４のフラグ端子ＦＬＧ０、ＦＬＧ１、ＦＬＧ２、ＦＬＧ３にそれぞれ接続する。ネットワーク回路ＮＷＦは、演算器ＯＰ０、ＯＰ１、ＯＰ２、ＯＰ３のフラグ出力端子ＦＯをフラグ演算器ＤＦＯＰのシーケンサ１４のフラグ入力端子ＦＩ０、ＦＩ１、ＦＩ２、ＦＩ３にそれぞれ接続する。ネットワーク回路ＮＷＦは、フラグ信号が無効であることを示す値（”００”）をシーケンサ１４の空きのフラグ端子ＦＬＧ４−ＦＬＧ６にそれぞれ出力する。
【００９８】
フラグ演算器ＤＦＯＰは、コンフィグレーションデータＣＦＧに基づいて、図６に示したフラグ入力端子ＦＩ３［１：０］−ＦＩ０［１：０］を有効にし、フラグ入力端子ＦＩ７［１：０］−ＦＩ４［１：０］を無効にする。フラグ演算器ＤＦＯＰは、コンフィグレーションデータＣＦＧに基づいて、図６に示したオア回路ＯＲの出力を、セレクタＳＥＬ３を介してフラグ出力端子ＦＯ［１］に接続する。また、フラグ演算器ＤＦＯＰは、コンフィグレーションデータＣＦＧに基づいて、ノア回路ＮＯＲの出力を、セレクタＳＥＬ２を介してフラグ出力端子ＦＯ［０］に接続する。換言すれば、図６に示したフラグ演算器ＤＦＯＰのフリップフロップＦＦは、コンフィグレーションデータＣＦＧに基づいて、制御信号Ｃ［８：０］の値を１６進数で”１０Ｆ”に設定し、デフォルトモードで動作する。
【００９９】
そして、フラグ演算器ＤＦＯＰは、フラグ入力端子ＦＩ３［０］−ＦＩ０［０］で受けるフラグ信号ＦＬＧ３−ＦＬＧ０が全て偽を示す場合、図６に示した論理にしたがって、真を示すフラグ信号ＦＬＧ７をフラグ出力端子ＦＯ［０］から出力する。これにより、いずれの判定条件にも該当しない場合の処理を選択するフラグ信号ＦＬＧの論理を、演算器ＯＰやフラグ演算器ＦＯＰを用いて生成する場合に比べて簡易に生成することができる。
【０１００】
シーケンサ１４は、フラグ信号ＦＬＧ０−ＦＬＧ３、ＦＬＧ７の論理に基づいて、図３に示した選択信号ＢＳ１を生成する。また、シーケンサ１４は、レジスタＲＥＧ０−ＲＥＧ３、ＲＥＧ７に保持されたアドレスＡＤａ、ＡＤｂの組のいずれかをセレクタＳＳＥＬ１で選択し、選択したアドレスＡＤａ、ＡＤｂを制御信号ＣＮＴａ、ＣＮＴｂとともにコンフィグレーションメモリ１６Ａ、１６Ｂに出力する。
【０１０１】
図９に示す例では、図８に示したコンテキストＣＴＸＪの実行前に、フラグ信号ＦＬＧ０−ＦＬＧ３、ＦＬＧ７に対応するレジスタＲＥＧ０−ＲＥＧ３、ＲＥＧ７（図３）に、有効なアドレスＡＤａがそれぞれ格納される。例えば、レジスタＲＥＧ０−ＲＥＧ３、ＲＥＧ７は、コンテキストＣＴＸ０−ＣＴＸ４に対応するコンフィグレーションデータＣＦＧが格納されたコンフィグレーションメモリ１６ＡのアドレスＡＤａをそれぞれ保持する。
【０１０２】
そして、フラグ信号ＦＬＧ０−ＦＬＧ７の論理に基づいて、コンフィグレーションメモリ１６Ａから新たなコンフィグレーションデータＣＦＧが読み出され、演算器アレイ１８は、次に処理を実行する回路（図８に示したコンテキストＣＴＸ０−ＣＴＸ４のいずれか）を構築する。
【０１０３】
図１０は、図９に示した回路構成におけるデータｘの値、フラグ信号ＦＬＧおよび実行されるデータ処理の関係を示す。データｘの値が”０”、”１”、”２”、”３”の場合、フラグ信号ＦＬＧ０、ＦＬＧ１、ＦＬＧ２、ＦＬＧ３が、網掛けで示すようにそれぞれ真（”１１”）に設定される。そして、真を示すフラグ信号ＦＬＧに応じてコンフィグレーションデータＣＦＧが演算器アレイ１８に転送され、コンテキストＣＴＸ０、ＣＴＸ１、ＣＴＸ２、ＣＴＸ３のいずれかが実行される。
【０１０４】
データｘの値が”０”、”１”、”２”、”３”のいずれでもない場合、フラグ信号ＦＬＧ７が真（”１１”）に設定され、コンフィグレーションデータＣＦＧが演算器アレイ１８に転送され、コンテキストＣＴＸ４が実行される。
【０１０５】
図１１は、図８に示した処理を実行する半導体集積回路ＳＥＭ２の動作の例を示す。図１１に示す例では、演算器アレイ１８は、デフォルトモードで動作するため、図６に示したフラグ演算器ＤＦＯＰのセレクタＳＥＬ３、ＳＥＬ２は、オア回路ＯＲおよびノア回路ＮＯＲの出力をそれぞれ選択する。レジスタＲＥＧ０−ＲＥＧ３、ＲＥＧ７には、コンテキストＣＴＸ０−ＣＴＸ４のコンフィグレーションデータＣＦＧが格納されたコンフィグレーションメモリ１６Ａ、１６ＢのアドレスＡＤａ、ＡＤｂが予め格納される（図１１（ａ））。
【０１０６】
この例では、１番目から５番目のクロックサイクルで、図８に示したコンテキストＣＴＸＪが実行され、６番目以降のクロックサイクルで、コンテキストＣＴＸ２が実行される（図１１（ｂ）、（ｃ））。すなわち、コンテキストＣＴＸＪの条件判定の結果に基づいて、演算器アレイ１８にコンテキストＣＴＸ２の回路が構築され、処理Ｃが実行される。コンテキストＣＴＸＪに対応する回路は、１番目のクロックサイクルより前に演算器アレイ１８に転送される。図１１に示す例では、フラグ信号ＦＬＧに基づく条件分岐が実行されるため、図３に示した分岐制御フラグＢＲＡの値は”１”にセットされる。また、図３に示した終了フラグＥＮＤＳの値は、コンテキストＣＴＸ２の実行の終了に応答するコンフィグレーションメモリ１６Ｂの読み出し動作により”１”にセットされる。
【０１０７】
２番目のクロックサイクルにおいて、共有メモリ１２のデータ端子ＲＤＴからデータｘ（＝２）が読み出され、読み出されたデータｘは、ネットワーク回路ＮＷＤを介して演算器ＯＰ０−ＯＰ３に供給される（図１１（ｄ））。２番目のクロックサイクルまで、フラグ信号ＦＬＧ０−ＦＬＧ７は、無効のレベル（”００”または”０１”）に設定される（図１１（ｅ））。フラグ演算器ＤＦＯＰは、無効のフラグ信号ＦＬＧ０−ＦＬＧ６の下位ビットＦＩ７［０］−ＦＩ０［０］を受け、ノア回路ＮＯＲから出力されるハイレベル”１”をフラグ信号ＦＬＧ７の下位ビットＦＩ７［０］として出力する（図１１（ｆ））。
【０１０８】
３番目のクロックサイクルにおいて、演算器ＯＰ０−ＯＰ３は、図９に示した条件判定をそれぞれ実行し、実行結果を示すフラグ信号ＦＬＧ０−ＦＬＧ３をそれぞれ出力する（図１１（ｇ））。この例では、演算器ＯＰ２は、真（”１１”）を示すフラグ信号ＦＬＧ２を出力し、演算器ＯＰ０、ＯＰ１、ＯＰ３は、偽（”１０”）を示すフラグ信号ＦＬＧ０、ＦＬＧ１、ＦＬＧ３をそれぞれ出力する。
【０１０９】
フラグ演算器ＤＦＯＰは、フラグ信号ＦＬＧ０−ＦＬＧ６の値に応じて、偽（”１０”）を示すフラグ信号ＦＬＧ７を出力する（図１１（ｈ））。演算器アレイ１８は、フラグ信号ＦＬＧ０−ＦＬＧ７の出力とともに終了信号ＥＮＤを出力する（図１１（ｉ））。シーケンサ１４の制御回路ＣＮＴＬは、真を示すフラグ信号ＦＬＧ２に応答して、選択信号ＢＳ１を”２”に設定する（図１１（ｊ））。
【０１１０】
４番目のクロックサイクルにおいて、シーケンサ１４のセレクタＳＳＥＬ１は、選択信号ＢＳ１に応じてレジスタＲＥＧ２が保持するアドレス値ＡＤａ２、ＡＤｂ２をコンフィグレーションメモリ１６Ａ、１６Ｂに出力する（図１１（ｋ））。制御回路ＣＮＴＬは、コンフィグレーションメモリ１６Ａへの読み出し要求を示す制御信号ＣＮＴａと、コンフィグレーションメモリ１６Ｂへの読み出し要求を示す制御信号ＣＮＴｂとを出力する（図１１（ｌ）、（ｍ））。
【０１１１】
５番目のクロックサイクルにおいて、コンフィグレーションメモリ１６Ａは、アドレス値ＡＤａ２が示す記憶領域からコンテキストＣＴＸ２を示すコンフィグレーションデータＣＦＧを出力する（図１１（ｎ））。コンフィグレーションメモリ１６Ｂは、アドレス値ＡＤｂ２が示す記憶領域からレジスタデータＲＥＧＤを出力する（図１１（ｏ））。制御回路ＣＮＴＬは、コンフィグレーションメモリ１６ＡからのコンフィグレーションデータＣＦＧの出力に合わせて、トリガ信号ＴＲＧをハイレベルに設定する（図１１（ｐ））。
【０１１２】
そして、６番目のクロックサイクルにおいて、演算器アレイ１８は、トリガ信号ＴＲＧのハイレベルに応じてコンフィグレーションデータＣＦＧを取り込み、コンテキストＣＴＸ２を実行する回路を構築する（図１１（ｑ））。演算器アレイ１８は、６番目のクロックサイクルで構築した回路を動作させて、コンテキストＣＴＸ２（処理Ｃ）を７番目のクロックサイクルから実行する。
【０１１３】
図１２は、図８に示した処理を実行する半導体集積回路ＳＥＭ２の動作の別の例を示す。図１１と同様の動作については、図１１と同じ符号を付し、詳細な説明は省略する。この例では、図８に示したコンテキストＣＴＸＪの条件判定の結果に基づいて、演算器アレイ１８にコンテキストＣＴＸ４の回路が構築され、処理Ｅが実行される。
【０１１４】
３番目のクロックサイクルにおいて、演算器ＯＰ０−ＯＰ３は、図９に示した条件判定をそれぞれ実行し、実行結果を示すフラグ信号ＦＬＧ０−ＦＬＧ３をそれぞれ出力する（図１２（ｇ））。この例では、演算器ＯＰ０−ＯＰ３は、偽（”１０”）を示すフラグ信号ＦＬＧ０−ＦＬＧ３をそれぞれ出力する。このため、フラグ演算器ＤＦＯＰは、フラグ信号ＦＬＧ０−ＦＬＧ６の値に応じて、真（”１１”）を示すフラグ信号ＦＬＧ７を出力する（図１２（ｈ））。シーケンサ１４の制御回路ＣＮＴＬは、真を示すフラグ信号ＦＬＧ７に応答して、選択信号ＢＳ１を”７”に設定する（図１２（ｊ））。
【０１１５】
４番目のクロックサイクルにおいて、シーケンサ１４のセレクタＳＳＥＬ１は、選択信号ＢＳ１に応じてレジスタＲＥＧ７が保持するアドレス値ＡＤａ７、ＡＤｂ７をコンフィグレーションメモリ１６Ａ、１６Ｂに出力する（図１２（ｋ））。制御回路ＣＮＴＬは、コンフィグレーションメモリ１６Ａへの読み出し要求を示す制御信号ＣＮＴａと、コンフィグレーションメモリ１６Ｂへの読み出し要求を示す制御信号ＣＮＴｂとを出力する（図１２（ｌ）、（ｍ））。
【０１１６】
５番目のクロックサイクルにおいて、コンフィグレーションメモリ１６Ａは、アドレス値ＡＤａ４が示す記憶領域からコンテキストＣＴＸ４を示すコンフィグレーションデータＣＦＧを出力する（図１２（ｎ））。コンフィグレーションメモリ１６Ｂは、アドレス値ＡＤｂ４が示す記憶領域からレジスタデータＲＥＧＤを出力する（図１２（ｏ））。
【０１１７】
そして、６番目のクロックサイクルにおいて、演算器アレイ１８は、トリガ信号ＴＲＧのハイレベルに応じてコンフィグレーションデータＣＦＧを取り込み、コンテキストＣＴＸ４を実行する回路を構築する（図１２（ｑ））。演算器アレイ１８は、６番目のクロックサイクルで構築した回路を動作させて、コンテキストＣＴＸ４（処理Ｅ）を７番目のクロックサイクルから実行する。
【０１１８】
図１３は、図３に示した演算器アレイ１８に実行させる処理の別の例を示す。図８と同様の処理については、詳細な説明は省略する。
【０１１９】
この例では、演算器アレイ１８は、コンテキストＣＴＸＪ（条件判定）の処理を実行し、図１３に示したＣ言語等のｉｆ文に相当する処理を実行する。例えば、演算器アレイ１８は、データｘが”１００”より大きく、データｙ、ｚの積が”１０００”より小さい場合、コンテキストＣＴＸ０（処理Ａ）を実行する。演算器アレイ１８は、データｘが”１００”より大きく、データｙ、ｚの積が”１０００”以上の場合、コンテキストＣＴＸ１（処理Ｂ）を実行する。演算器アレイ１８は、データｘが”１００”以下の場合、コンテキストＣＴＸ２（処理Ｃ）を実行する。
【０１２０】
演算器アレイ１８は、データｘ、ｙ、ｚの判定結果をフラグ信号ＦＬＧ０、ＦＬＧ１、ＦＬＧ７としてシーケンサ１４に出力する。この例では、条件判定は２回実行され、分岐先が３つあるため、３つのフラグ信号ＦＬＧ０、ＦＬＧ１、ＦＬＧ７が使用される。フラグ信号ＦＬＧ２−ＦＬＧ６は、無効を示すレベルに設定される。フラグ信号ＦＬＧ０、ＦＬＧ１、ＦＬＧ７を生成する論理は、図１４で説明する。
【０１２１】
シーケンサ１４は、フラグ信号ＦＬＧ０、ＦＬＧ１、ＦＬＧ７の値に基づいて、演算器アレイ１８が次に処理を実行する回路を構築するコンフィグレーションデータＣＦＧをコンフィグレーションメモリ１６Ａから読み出す。演算器アレイ１８は、コンテキストＣＴＸＪの実行結果に応じてコンフィグレーションメモリ１６Ａから読み出されるコンフィグレーションデータＣＦＧを用いて、次に処理を実行する回路（コンテキストＣＴＸ０−ＣＴＸ２のいずれか）を構築する。
【０１２２】
図１４は、図１３に示したコンテキストＣＴＸＪを実行する演算器アレイ１８の回路構成の例を示す。図９と同様の処理については、詳細な説明は省略する。
【０１２３】
図１４は、図１３と同様に、コンフィグレーションデータＣＦＧの受信に基づいて、演算器アレイ１８が、条件判定を実行する回路（コンテキストＣＴＸＪ）に構築された状態を示す。
【０１２４】
例えば、ネットワーク回路ＮＷＤは、コンフィグレーションデータＣＦＧに基づいて、データ”ｘ”を出力する共有メモリ１２のデータ端子ＲＤＴを、演算器ＯＰ０のデータ入力端子ＤＩ０に接続し、データ”ｙ”、”ｚ”を出力する共有メモリ１２のデータ端子ＲＤＴを、演算器ＯＰ１のデータ入力端子ＤＩ０、ＤＩ１に接続する。演算器ＯＰ０は、コンフィグレーションデータＣＦＧに基づいて、データ入力端子ＤＩ０で受けたデータ”ｘ”が”１００”より大きいか否かを判定する回路に構築される。演算器ＯＰ０は、データ”ｘ”が”１００”より大きい場合、フラグ出力端子ＦＯから真（ｔｒｕｅ）を示す”１１”を出力し、データ”ｘ”が”１００”以下の場合、フラグ出力端子ＦＯから偽（ｆａｌｓｅ）を示す”１０”を出力する。
【０１２５】
演算器ＯＰ１は、コンフィグレーションデータＣＦＧに基づいて、データ入力端子ＤＩ０で受けたデータ”ｙ”とデータ入力端子ＤＩ１で受けたデータ”ｚ”との積を求め、求めた積をデータ出力端子ＤＯから出力する回路に構築される。演算器ＯＰ２は、コンフィグレーションデータＣＦＧに基づいて、演算器ＯＰ１から出力されるデータ”ｙ”、”ｚ”の積が”１０００”より小さいか否かを判定する回路に構築される。演算器ＯＰ２は、データ”ｙ”、”ｚ”の積が”１０００”より小さい場合、フラグ出力端子ＦＯから真を示す”１１”を出力し、データ”ｙ”、”ｚ”の積が”１０００”以上の場合、フラグ出力端子ＦＯから偽を示す”１０”を出力する。
【０１２６】
フラグ演算器ＦＯＰ０は、コンフィグレーションデータＣＦＧに基づいて、演算器ＯＰ０、ＯＰ２のフラグ出力端子ＦＯから出力されるフラグ信号の論理積を判定する回路に構築される。フラグ演算器ＦＯＰ０は、演算器ＯＰ０、ＯＰ２のフラグ出力端子ＦＯから真が出力される場合、フラグ出力端子ＦＯから真を示すフラグ信号を出力する。フラグ演算器ＦＯＰ０は、演算器ＯＰ０、ＯＰ２のフラグ出力端子ＦＯの少なくとも一方から偽が出力される場合、偽を示すフラグ信号を出力する。
【０１２７】
フラグ演算器ＦＯＰ１は、演算器ＯＰ０のフラグ出力端子ＦＯから出力されるフラグ信号をフラグ入力端子ＦＩ０で受け、演算器ＯＰ２のフラグ出力端子ＦＯから出力されるフラグ信号をフラグ入力端子ＦＩ１で受ける。そして、フラグ演算器ＦＯＰ１は、コンフィグレーションデータＣＦＧに基づいて、演算器ＯＰ０のフラグ出力端子ＦＯから出力されるフラグ信号と、演算器ＯＰ２のフラグ出力端子ＦＯから出力されるフラグ信号を反転した信号の論理積を判定する回路に構築される。図１４において、フラグ演算器ＦＯＰ１内に示した符号”／ＦＩ１”は、フラグ入力端子ＦＩ１で受けるフラグ信号の論理を反転することを示す。
【０１２８】
フラグ演算器ＦＯＰ１は、演算器ＯＰ０のフラグ出力端子ＦＯから真が出力され、演算器ＯＰ２のフラグ出力端子ＦＯから偽が出力される場合、フラグ出力端子ＦＯから真を示すフラグ信号を出力する。フラグ演算器ＦＯＰ１は、演算器ＯＰ０のフラグ出力端子ＦＯから偽が出力され、あるいは演算器ＯＰ２のフラグ出力端子ＦＯから真が出力される場合、フラグ出力端子ＦＯから偽を示すフラグ信号を出力する。
【０１２９】
図５に示したように、フラグ演算器ＦＯＰ１は、極性反転器ＰＲＶＳ０、ＰＲＶＳ１を有するため、他のフラグ演算器ＦＯＰを使用することなく、演算器ＯＰ２から出力されるフラグ信号ＦＬＧを反転した値を用いて、条件判定を実行することができる。すなわち、極性反転器ＰＲＶＳ０、ＰＲＶＳ１を持たないフラグ演算器が使用される場合に比べて、条件判定に使用するフラグ演算器ＦＯＰの数を減らすことができる。条件判定に使用するフラグ演算器ＦＯＰの数が減る場合、演算器アレイ１８に搭載するフラグ演算器ＦＯＰの数を減らすことが可能になり、演算器アレイ１８の回路規模が削減可能になる。
【０１３０】
なお、図１３に示したｉｆ文に相当する処理を実行する場合、複数のフラグ演算器ＦＯＰ０、ＦＯＰ１は、真を示すフラグ信号ＦＯを重複して出力しない。
【０１３１】
ネットワーク回路ＮＷＦは、コンフィグレーションデータＣＦＧに基づいて、フラグ演算器ＦＯＰ０、ＦＯＰ１のフラグ出力端子ＦＯをシーケンサ１４のフラグ端子ＦＬＧ０、ＦＬＧ１にそれぞれ接続する。ネットワーク回路ＮＷＦは、演算器ＯＰ０のフラグ出力端子ＦＯをフラグ演算器ＦＯＰ０、ＦＯＰ１のフラグ入力端子ＦＩ０に接続し、演算器ＯＰ２のフラグ出力端子ＦＯをフラグ演算器ＦＯＰ０、ＦＯＰ１のフラグ入力端子ＦＩ１に接続する。
【０１３２】
また、ネットワーク回路ＮＷＦはフラグ演算器ＦＯＰ０、ＦＯＰ１のフラグ出力端子ＦＯをフラグ演算器ＤＦＯＰのシーケンサ１４のフラグ端子ＦＬＧ０、ＦＬＧ１に接続する。ネットワーク回路ＮＷＦは、フラグ信号が無効であることを示す値（”００”）をシーケンサ１４の空きのフラグ端子ＦＬＧ３−ＦＬＧ６にそれぞれ出力する。
【０１３３】
フラグ演算器ＤＦＯＰは、コンフィグレーションデータＣＦＧに基づいて、図６に示したフラグ入力端子ＦＩ１［１：０］−ＦＩ０［１：０］を有効にし、フラグ入力端子ＦＩ７［１：０］−ＦＩ２［１：０］を無効にする。フラグ演算器ＤＦＯＰは、コンフィグレーションデータＣＦＧに基づいて、デフォルトモードで動作し、図６に示したオア回路ＯＲおよびノア回路ＮＯＲの出力をフラグ信号ＦＬＧ７として出力する。そして、フラグ演算器ＤＦＯＰは、フラグ入力端子ＦＩ１［０］−ＦＩ０［０］で受けるフラグ信号ＦＬＧ１−ＦＬＧ０が全て偽を示す場合、真を示すフラグ信号ＦＬＧ７を出力する。
【０１３４】
シーケンサ１４は、図９での説明と同様に動作する。すなわち、シーケンサ１４は、フラグ信号ＦＬＧ０−ＦＬＧ７の論理に基づいて、コンフィグレーションメモリ１６Ａから新たなコンフィグレーションデータＣＦＧを読み出し、演算器アレイ１８は、次に処理を実行する回路（図１３に示したコンテキストＣＴＸ０−ＣＴＸ２のいずれか）を構築する。
【０１３５】
図１５は、図１４に示した回路構成におけるデータｘ、ｙ、ｚの値、フラグ信号ＦＬＧおよび実行されるデータ処理の関係を示す図である。条件判定の結果が真である場合、対応するフラグ信号ＦＬＧ０、ＦＬＧ１は、網掛けで示すようにそれぞれ真（”１１”）に設定される。そして、図１０と同様に、真を示すフラグ信号ＦＬＧに応じたコンフィグレーションデータＣＦＧが演算器アレイ１８に転送され、コンテキストＣＴＸ０、ＣＴＸ１のいずれかが実行される。
【０１３６】
条件判定の結果がいずれも偽である場合、フラグ信号ＦＬＧ７が真に設定され、真を示すフラグ信号ＦＬＧ７に応じたコンフィグレーションデータＣＦＧが演算器アレイ１８に転送され、コンテキストＣＴＸ２が実行される。
【０１３７】
図１６は、図１３に示した処理を実行する半導体集積回路ＳＥＭ２の動作の例を示す。図１１と同様の動作については、詳細な説明は省略する。この例では、図１３に示したコンテキストＣＴＸＪの条件判定の結果に基づいて、演算器アレイ１８にコンテキストＣＴＸ１の回路が構築され、処理Ｂが実行される。コンテキストＣＴＸＪに対応する回路は、１番目のクロックサイクルより前に演算器アレイ１８に転送される。
【０１３８】
２番目のクロックサイクルにおいて、共有メモリ１２からデータｘ（＝１２０）、ｙ（＝２０）、ｚ（＝６０）が読み出され、読み出されたデータｘ、ｙ、ｚは、ネットワーク回路ＮＷＤを介して演算器ＯＰ０、ＯＰ１に供給される（図１６（ａ））。
【０１３９】
３番目のクロックサイクルにおいて、演算器ＯＰ０は、図９に示した条件判定を実行し、真を示す”１１”を出力する（図１６（ｂ））。演算器ＯＰ１は、図９に示した演算を実行し、実行結果（”１２００”）を出力する（図１６（ｃ））。
【０１４０】
４番目のクロックサイクルにおいて、演算器ＯＰ２は、図９に示した条件判定を実行し、偽を示す”１０”を出力する（図１６（ｄ））。フラグ演算器ＦＯＰ０、ＦＯＰ１は、図９に示した条件判定を実行し、偽（”１０”）を示すフラグ信号ＦＬＧ０と、真（”１１”）を示すフラグ信号ＦＬＧ１とをそれぞれ出力する（図１６（ｅ）、（ｆ））。フラグ演算器ＤＦＯＰは、フラグ信号ＦＬＧ０−ＦＬＧ６の値に応じて、偽（”１０”）を示すフラグ信号ＦＬＧ７を出力する（図１６（ｇ））。シーケンサ１４の制御回路ＣＮＴＬは、真を示すフラグ信号ＦＬＧ１に応答して、選択信号ＢＳ１を”１”に設定する（図１６（ｈ））。
【０１４１】
５番目のクロックサイクルにおいて、シーケンサ１４のセレクタＳＳＥＬ１は、選択信号ＢＳ１に応じてレジスタＲＥＧ１が保持するアドレス値ＡＤａ１、ＡＤｂ１をコンフィグレーションメモリ１６Ａ、１６Ｂに出力する（図１６（ｉ））。そして、図１１と同様に、コンフィグレーションメモリ１６ＡからコンテキストＣＴＸ１を示すコンフィグレーションデータＣＦＧが読み出される（図１６（ｊ））。演算器アレイ１８は、コンフィグレーションデータＣＦＧに基づいて、９番目のクロックサイクルにコンテキストＣＴＸ１を実行する回路を構築し、コンテキストＣＴＸ１（処理Ｂ）が、８番目のクロックサイクルから実行される（図１６（ｋ））。
【０１４２】
図１７は、図３に示した演算器アレイ１８に実行させる処理のさらなる別の例を示す。図８および図１３と同様の処理については、詳細な説明は省略する。
【０１４３】
この例では、演算器アレイ１８は、コンテキストＣＴＸＪ（条件判定）の処理を実行し、図１７に示したＣ言語等のｉｆ文に相当する処理を実行する。例えば、演算器アレイ１８は、データｘが”１００”より大きく、データｙ、ｚの積が”１０００”より小さい場合、コンテキストＣＴＸ０（処理Ａ）を実行する。演算器アレイ１８は、データｘが”１００”より大きく、データｙ、ｚの積が”１０００”以上の場合、コンテキストＣＴＸ１（処理Ｂ）を実行する。
【０１４４】
演算器アレイ１８は、データｘが”１００”以下で、データｙが”２００”より小さい場合、コンテキストＣＴＸ２（処理Ｃ）を実行する。演算器アレイ１８は、データｘが”１００”以下で、データｙが”２００”以上の場合、コンテキストＣＴＸ３（処理Ｄ）を実行する。
【０１４５】
演算器アレイ１８は、データｘ、ｙ、ｚの判定結果をフラグ信号ＦＬＧ０、ＦＬＧ１、ＦＬＧ２、ＦＬＧ７としてシーケンサ１４に出力する。この例では、条件判定は３回実行され、分岐先が４つあるため、４つのフラグ信号ＦＬＧ０、ＦＬＧ１、ＦＬＧ２、ＦＬＧ７が使用される。フラグ信号ＦＬＧ３−ＦＬＧ６は、無効を示すレベルに設定される。フラグ信号ＦＬＧ０、ＦＬＧ１、ＦＬＧ２、ＦＬＧ７を生成する論理は、図１８で説明する。
【０１４６】
図１８は、図１７に示したコンテキストＣＴＸＪを実行する演算器アレイ１８の回路構成の例を示す。図９および図１４と同様の処理については、詳細な説明は省略する。
【０１４７】
図１８は、図１４と同様に、コンフィグレーションデータＣＦＧの受信に基づいて、演算器アレイ１８が、条件判定を実行する回路（コンテキストＣＴＸＪ）に構築された状態を示す。図１８は、データｙの値を判定しフラグ信号ＦＬＧ２を出力する演算器ＯＰ３が追加されること、および演算器ＯＰ３から出力されるフラグ信号ＦＬＧ２がフラグ演算器ＤＦＯＰのフラグ入力端子ＦＩ２に接続されることを除き、図１４と同様である。
【０１４８】
演算器ＯＰ３は、コンフィグレーションデータＣＦＧに基づいて、データ”ｙ”が”２００”より小さいか否かを判定する回路に構築される。演算器ＯＰ３は、データ”ｙ”が”２００”より小さい場合、フラグ出力端子ＦＯから真を示す”１１”を出力し、データ”ｙ”が”２００”以上の場合、フラグ出力端子ＦＯから偽を示す”１０”を出力する。
【０１４９】
フラグ演算器ＤＦＯＰは、コンフィグレーションデータＣＦＧに基づいて、図６に示したフラグ入力端子ＦＩ２［１：０］−ＦＩ０［１：０］を有効にし、フラグ入力端子ＦＩ７［１：０］−ＦＩ３［１：０］を無効にする。フラグ演算器ＤＦＯＰは、コンフィグレーションデータＣＦＧに基づいて、デフォルトモードで動作し、図６に示したオア回路ＯＲおよびノア回路ＮＯＲの出力をフラグ信号ＦＬＧ７として出力する。そして、フラグ演算器ＤＦＯＰは、フラグ入力端子ＦＩ２［０］−ＦＩ０［０］で受けるフラグ信号ＦＬＧ２−ＦＬＧ０が全て偽を示す場合、真を示すフラグ信号ＦＬＧ７を出力する。
【０１５０】
図１９は、図１８に示した回路構成におけるデータｘ、ｙ、ｚの値、フラグ信号ＦＬＧおよび実行されるデータ処理の関係を示す図である。条件判定の結果が真である場合、対応するフラグ信号ＦＬＧ０、ＦＬＧ１、ＦＬＧ２は、網掛けで示すようにそれぞれ真（”１１”）に設定される。そして、図１５と同様に、真を示すフラグ信号ＦＬＧに応じたコンフィグレーションデータＣＦＧが演算器アレイ１８に転送され、コンテキストＣＴＸ０、ＣＴＸ１、ＣＴＸ２のいずれかが実行される。
【０１５１】
なお、データｘが”１００”より大きく、データｙ、ｚの積が”１０００”より小さく、データｙが”２００”より小さい場合、２つのフラグ信号ＦＬＧ０、ＦＬＧ２が真（”１１”）に設定される。また、データｘが”１００”より大きく、データｙ、ｚの積が”１０００”以上であり、データｙが”２００”より小さい場合、２つのフラグ信号ＦＬＧ１、ＦＬＧ２が真（”１１”）に設定される。真を示す複数のフラグ信号ＦＬＧ０、ＦＬＧ２（またはＦＬＧ１、ＦＬＧ２）が生成される場合、図２０に示すように、制御回路ＣＮＴＬは、優先度がフラグ信号ＦＬＧ２より高いフラグ信号ＦＬＧ０（またはＦＬＧ１）に対応する選択信号ＢＳ１を出力する。
【０１５２】
条件判定の結果がいずれも偽である場合、フラグ信号ＦＬＧ７が真に設定され、真を示すフラグ信号ＦＬＧ７に応じたコンフィグレーションデータＣＦＧが演算器アレイ１８に転送され、コンテキストＣＴＸ３が実行される。
【０１５３】
図２０は、図１７に示した処理を実行する半導体集積回路ＳＥＭ２の動作の例を示す。図１１および図１６と同様の動作については、詳細な説明は省略する。
【０１５４】
この例では、データｘの値は”１００”より大きく、データｙ、ｚの積は、”１０００”以上であるため、図１６と同様に、フラグ信号ＦＬＧ１が真（”１１”）に設定される（図２０（ａ））。さらに、データｙの値は”２００”より小さいため、フラグ信号ＦＬＧ２が真（”１１”）に設定される（図２０（ｂ））。
【０１５５】
制御回路ＣＮＴＬは、真を示す複数のフラグ信号ＦＬＧを受けた場合、優先度の高い（すなわち、番号の小さい）フラグ信号ＦＬＧにしたがって動作する。この例では、制御回路ＣＮＴＬは、真を示すフラグ信号ＦＬＧ２を無視し、番号がフラグ信号ＦＬＧ２より小さいフラグ信号ＦＬＧ１に基づいて選択信号ＢＳ１を”１”に設定する。そして、半導体集積回路ＳＥＭ２は、６番目のクロックサイクル以降、図１６と同様に動作する。
【０１５６】
フラグ信号ＦＬＧ０−ＦＬＧ７に優先度を設定することにより、真を示す複数のフラグ信号ＦＬＧ０−ＦＬＧ７が出力される場合にも、正しいコンフィグレーションデータＣＦＧに基づいて演算器アレイ１８の回路を再構成することができる。換言すれば、真を示す複数のフラグ信号ＦＬＧ０−ＦＬＧ７が出力される場合にも、演算器アレイ１８の回路が、誤ったコンフィグレーションデータＣＦＧにより再構成されることはなく、演算器アレイ１８は誤動作しない。
【０１５７】
図２１は、図３に示した半導体集積回路ＳＥＭ２の動作の別の例を示す。図１１と同様の動作については、図１１と同じ符号を付し、詳細な説明は省略する。この例では、コンテキストＣＴＸ０による条件判定の結果に基づいて、コンテキストＣＴＸ３が実行され、コンテキストＣＴＸ３による条件判定の結果に基づいて、コンテキストＣＴＸ６が実行される。コンテキストＣＴＸ６以降は、分岐制御フラグＢＲＡがロウレベルにリセットされ、条件判定によらず、アドレスＡＤａが順次にインクリメントされ、コンフィグレーションメモリ１６ＡからコンフィグレーションデータＣＦＧが読み出される。
【０１５８】
まず、１番目から５番目のクロックサイクルでは、図１１と同様に、シーケンサ１４は、真を示すフラグ信号ＦＬＧ２に基づいて、レジスタＲＥＧ２に格納されたアドレスＡＤａ３、ＡＤｂ３を選択する（図２１（ａ）、（ｂ））。そして、６番目のクロックサイクルにおいて、コンフィグレーションメモリ１６Ａから読み出されるコンテキストＣＴＸ３を示すコンフィグレーションデータＣＦＧにより、演算器アレイ１８の回路が更新される（図２１（ｃ））。
【０１５９】
なお、レジスタＲＥＧ０、ＲＥＧ３、ＲＥＧ７等に格納されたアドレスＡＤｂ１は、コンフィグレーションメモリ１６Ａに格納されたコンフィグレーションデータＣＦＧをアドレスＡＤａの順に読み出す場合に共通に使用される。コンフィグレーションメモリ１６ＢのアドレスＡＤｂ１が示す記憶領域には、リセット状態を示す分岐制御フラグＢＲＡと、ダミーのアドレスＡＤａ、ＡＤｂが格納される。
【０１６０】
７番目から９番目のクロックサイクルでは、シーケンサ１４は、真を示すフラグ信号ＦＬＧ０に基づいて、レジスタＲＥＧ０に格納されたアドレスＡＤａ６、ＡＤｂ１を選択する（図２１（ｄ）、（ｅ））。ここで、８番目のクロックサイクルまで、コンフィグレーションメモリ１６Ｂから読み出される分岐制御フラグＢＲＡはハイレベルであるため、図３に示したセレクタＳＳＥＬ２は、セレクタＳＳＥＬ１の出力を選択する。すなわち、シーケンサ１４は、フラグ信号ＦＬＧに応じて選択されるレジスタＲＥＧに格納されたアドレスＡＤａ、ＡＤｂを出力する。
【０１６１】
この例では、９番目のクロックサイクルでコンフィグレーションメモリ１６Ｂから読み出されたレジスタデータＲＥＧＤに含まれる分岐制御フラグＢＲＡは、リセット状態（ロウレベル）である（図２１（ｆ））。シーケンサ１４は、トリガ信号ＴＲＧに同期して分岐制御フラグＢＲＡの値を受信し、フラグ信号ＦＬＧの値に拘わらず選択信号ＢＳ１を”０”に設定する（図２１（ｇ））。
【０１６２】
図３に示したインクリメンタＩＮＣは、分岐制御フラグＢＲＡのハイレベルからロウレベルへの変化に応じて、レジスタＲＥＧ０に格納されたアドレスＡＤａ（この例ではＡＤａ６）を取り込み、コンテキストＣＴＸの実行毎にアドレスＡＤａをインクリメントする（図２１（ｈ）、（ｉ））。例えば、インクリメンタＩＮＣは、終了信号ＥＮＤのハイレベルに同期してアドレスＡＤａを増加する。
【０１６３】
そして、分岐制御フラグＢＲＡがロウレベルの間、セレクタＳＳＥＬ２は、レジスタＲＥＧ０−ＲＥＧ７に格納されたアドレスＡＤａではなく、インクリメンタＩＮＣにより生成されるアドレスＡＤａをコンフィグレーションメモリ１６Ａに出力する。分岐制御フラグＢＲＡがロウレベルの間、選択信号ＢＳ１は”０”に設定されるため、シーケンサ１４は、レジスタＲＥＧ０に格納されたアドレスＡＤｂをコンフィグレーションメモリ１６Ｂに出力する（図２１（ｊ））。
【０１６４】
分岐制御フラグＢＲＡがリセット状態を示す場合に、セレクタＳＳＥＬ１の動作は停止し、アドレスＡＤａは、インクリメンタＩＮＣにより順次に生成される。これにより、アドレスＡＤａの各ビットの論理レベルが変化する可能性を低くすることができ、アドレスＡＤａの変化に伴って発生する電源ノイズを抑制することができる。
【０１６５】
コンフィグレーションメモリ１６ＡからコンフィグレーションデータＣＦＧをアドレスＡＤａの順に読み出す場合、条件判定の結果を用いない。この場合、コンフィグレーションメモリ１６Ｂに格納された情報は、複数のコンテキストＣＴＸにより共通に使用することが可能になる。この結果、コンフィグレーションメモリ１６ＢのアドレスＡＤｂの範囲をコンフィグレーションメモリ１６ＡのアドレスＡＤａの範囲に比べて小さくできる。換言すれば、条件判定の結果を用いずに次に実行するコンテキストＣＴＸが決定できる場合、図３に示した半導体集積回路ＳＥＭ２に搭載するメモリの容量は、コンフィグレーションメモリ１６Ａ、１６Ｂを１つのメモリで実現する場合に比べて削減できる。
【０１６６】
図２２は、半導体集積回路ＳＥＭの別の例を示す。図３に示した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明を省略する。半導体集積回路ＳＥＭ３は、共有メモリ１２、シーケンサ１４Ａ、コンフィグレーションメモリ１６および演算器アレイ１８Ａを有する。共有メモリ１２は、図３と同一または同様である。半導体集積回路ＳＥＭ３は、図３と同様に、ＭＣＵ２０、メモリ３０および周辺回路４０に接続されるシステムバスＳＢＵＳに接続される。すなわち、半導体集積回路ＳＥＭ３、ＭＣＵ２０、メモリ３０、周辺回路４０およびシステムバスＳＢＵＳは、システムＳＹＳ３に搭載される。
【０１６７】
演算器アレイ１８Ａは、ネットワーク回路ＮＷＤ、複数の演算器ＯＰ、複数のフラグ演算器ＦＯＰおよびネットワーク回路ＮＷＦ２を有する。演算器アレイ１８Ａは、図３に示した演算器アレイ１８のフラグ演算器ＤＦＯＰを持たない。また、演算器アレイ１８Ａのネットワーク回路ＮＷＦ２は、１つのフラグ信号ＦＬＧ（２ビット）を生成する。
【０１６８】
例えば、コンフィグレーションメモリ１６は、図３に示したコンフィグレーションメモリ１６Ａと同様に、５ビットのアドレス端子ＡＤと、数百ビットのデータ端子ＲＤＴと、データ端子ＲＤＴから出力される数百ビットのデータを保持する記憶領域とを有する。データ端子ＲＤＴから出力される数百ビットのデータであるコンフィグレーションデータＣＦＧは、コンテキストＣＴＸの仕様を示す情報と、図３に示したレジスタデータＲＥＧＤの情報とを含む。
【０１６９】
シーケンサ１４Ａは、制御回路ＣＮＴＬ２、レジスタＲＥＧ（ＲＥＧ０、ＲＥＧ１）およびセレクタＳＳＥＬ３を有する。制御回路ＣＮＴＬ２は、トリガ信号ＴＲＧおよびストール信号ＳＴＬを演算器アレイ１８に出力し、演算器アレイ１８から終了信号ＥＮＤおよび１つのフラグ信号ＦＬＧを受ける。フラグ信号ＦＬＧは、演算器アレイ１８内の演算器により論理演算による結果（真または偽）を示す。また、制御回路ＣＮＴＬ２は、フラグ信号ＦＬＧおよび終了信号ＥＮＤに基づいて、コンフィグレーションメモリ１６に制御信号ＣＮＴを出力し、セレクタＳＳＥＬ３に選択信号ＢＳ２を出力する。制御回路ＣＮＴＬ２は、１つのフラグ信号ＦＬＧの真、偽に応じて選択信号ＢＳ２を生成する。
【０１７０】
各レジスタＲＥＧ０、ＲＥＧ１は、制御回路ＣＮＴＬ２からの制御信号ＣＮＴおよびセレクタＳＳＥＬ３からのアドレス信号ＡＤに応じてコンフィグレーションメモリ１６から読み出されるレジスタデータＲＥＧＤを保持する。各レジスタＲＥＧ０−ＲＥＧ１は、保持したレジスタデータＲＥＧＤをセレクタＳＳＥＬ３に出力する。各レジスタＲＥＧ０−ＲＥＧ１に保持されたレジスタデータＲＥＧＤの値は、コンフィグレーションメモリ１６のアクセスに使用されるアドレスＡＤの値を含む。
【０１７１】
セレクタＳＳＥＬ３は、真のフラグ信号ＦＬＧに対応する選択信号ＢＳ２の値に応じてレジスタＲＥＧ０を選択し、偽のフラグ信号ＦＬＧに対応する選択信号ＢＳ２に応じてレジスタＲＥＧ１を選択する。そして、セレクタＳＳＥＬ２は、選択したレジスタＲＥＧに格納されたアドレスＡＤをコンフィグレーションメモリ１６に出力する。
【０１７２】
図２３は、図２２に示した演算器アレイ１８Ａの例を示す。演算器アレイ１８Ａは、図４と同様のネットワーク回路ＮＷＤ、ｎ個（ｎは正の整数）の演算器ＯＰ、ｍ個（ｍは正の整数）のフラグ演算器ＦＯＰ、カウンタＡＣＯＵＮＴおよびメモリ制御回路ＭＣＮＴと、ネットワーク回路ＮＷＦ２とを有する。ネットワーク回路ＮＷＦ２は、コンフィグレーションデータＣＦＧに基づいて、演算器ＯＰまたはフラグ演算器ＦＯＰのいずれかのフラグ出力端子ＦＯから出力されるフラグをフラグ信号ＦＬＧとして出力する。すなわち、演算器アレイ１８Ａは、図４に示したフラグ演算器ＤＦＯＰを持たないこと、および１つのフラグ信号ＦＬＧを出力することを除き、図４に示した演算器アレイ１８と同様である。
【０１７３】
図２４は、図２２に示した演算器アレイ１８Ａに実行させる処理の例を示す。演算器アレイ１８Ａが実行する処理は、図８に示した処理と同様である。すなわち、演算器アレイ１８Ａは、共有メモリ１２から受けるデータ”ｘ”の値に応じて、処理Ａ、処理Ｂ、処理Ｃ、処理Ｄ、処理Ｅのいずれかを実行する。
【０１７４】
但し、演算器アレイ１８Ａは、１つのフラグ信号ＦＬＧの真、偽に基づいて演算器アレイ１８Ａ内の回路を順次に更新し、実行する処理が処理Ａ、処理Ｂ、処理Ｃ、処理Ｄ、処理Ｅのいずれであるかを１つずつ判定する。このため、演算器アレイ１８Ａは、図８より多いコンテキストＣＴＸＪ１、ＣＴＸＪ２、ＣＴＸＪ３、ＣＴＸＪ４（条件判定）の処理を実行する。
【０１７５】
例えば、データ”ｘ”の値が”２”で処理Ｃが実行される場合、演算器アレイ１８Ａ内の回路は、条件判定のために２回書き換えられる。また、データ”ｘ”の値が”０”、”１”、”２”、”３”のいずれにも該当せず、処理Ｅが実行される場合、演算器アレイ１８Ａ内の回路は、条件判定のために４回書き換えられる。
【０１７６】
図２５は、図２４に示した処理を実行する半導体集積回路ＳＥＭ３の動作の例を示す。図１１と同様の動作については、詳細な説明は省略する。シーケンサ１４Ａは、演算器アレイ１８Ａから１つのフラグ信号ＦＬＧを受け、一度に１つの条件判定を実行する。このため、２番目、６番目、１０番目のクロックサイクルにおいて、共有メモリ１２のデータ端子ＲＤＴからデータｘ（＝２）が読み出される（図２５（ａ）、（ｂ）、（ｃ））。
【０１７７】
演算器アレイ１８Ａは、３番目のクロックサイクルで、データｘが”０”でないことを判定し、７番目のクロックサイクルで、データｘが”１”でないことを判定する（図２５（ｄ）、（ｅ））。演算器アレイ１８Ａは、１１番目のクロックサイクルで、データｘが”２”であることを判定し、１５番目のクロックサイクルからコンテキストＣＴＸ２（処理Ｃ）を実行する（図２５（ｆ）、（ｇ））。
【０１７８】
図２５において、コンテキストＣＴＸ２の実行が開始されるタイミングは、図１１において、コンテキストＣＴＸ２の実行が開始されるタイミングより、８クロックサイクル遅い。すなわち、図３に示した半導体集積回路ＳＥＭ２は、図２２に示した半導体集積回路ＳＥＭ３に比べて、コンテキストＣＴＸ２を８クロックサイクル早く開始できる。
【０１７９】
図２６は、図２２に示した演算器アレイ１８Ａに実行させる処理の別の例を示す。演算器アレイ１８Ａが実行する処理は、図１３に示した処理と同様である。すなわち、演算器アレイ１８Ａは、図１３と同様のＣ言語等のｉｆ文に相当する処理を実行する。
【０１８０】
但し、演算器アレイ１８Ａは、１つのフラグ信号ＦＬＧの真、偽に基づいて演算器アレイ１８Ａ内の回路を順次に更新し、実行する処理が処理Ａ、処理Ｂ、処理Ｃのいずれであるかを１つずつ判定する。このため、演算器アレイ１８Ａは、図１３より多いコンテキストＣＴＸＪ１、ＣＴＸＪ２（条件判定）の処理を実行する。
【０１８１】
図２７は、図２６に示した処理を実行する半導体集積回路ＳＥＭ３の動作の例を示す。図１１および図２５と同様の動作については、詳細な説明は省略する。シーケンサ１４Ａは、演算器アレイ１８Ａから１つのフラグ信号ＦＬＧを受け、一度に１つの条件判定を実行する。このため、２番目、７番目のクロックサイクルにおいて、共有メモリ１２のデータ端子ＲＤＴからデータｘ、ｙ、ｚが読み出される（図２７（ａ）、（ｂ））。
【０１８２】
演算器アレイ１８Ａは、３番目のクロックサイクルで、コンテキストＣＴＸＪ１による判定が偽（”１０”）であることを検出し、８番目のクロックサイクルで、コンテキストＣＴＸＪ２による判定が真（”１１”）であることを検出する（図２７（ｃ）、（ｄ））。そして、演算器アレイ１８Ａは、１２番目のクロックサイクルからコンテキストＣＴＸ１（処理Ｂ）を実行する（図２７（ｅ））。図２７において、コンテキストＣＴＸ１の実行が開始されるタイミングは、図１６において、コンテキストＣＴＸ１の実行が開始されるタイミングより、４クロックサイクル遅い。すなわち、図３に示した半導体集積回路ＳＥＭ２は、図２２に示した半導体集積回路ＳＥＭ３に比べて、コンテキストＣＴＸ１を４クロックサイクル早く開始できる。
【０１８３】
以上、図３から図２１に示した実施形態においても、図１および図２に示した実施形態と同様に、条件判定の結果に応じて演算器アレイ１８が実行する処理を早く開始でき、半導体集積回路ＳＥＭ２の性能を向上することができる。
【０１８４】
さらに、コンフィグレーションデータＣＦＧと演算器アレイ１８の回路構成を切り替えるレジスタデータＲＥＧＤとは、互いに独立したコンフィグレーションメモリ１６Ａ、１６Ｂに格納される。これにより、半導体集積回路ＳＥＭ２に搭載するメモリの容量を従来に比べて削減でき、半導体集積回路ＳＥＭ２の回路規模を従来に比べて削減できる。
【０１８５】
フラグ信号ＦＬＧ０−ＦＬＧ７に優先度を設定することにより、真を示す複数のフラグ信号ＦＬＧ０−ＦＬＧ７が出力される場合にも、正しいコンフィグレーションデータＣＦＧに基づいて演算器アレイ１８の回路を再構成することができる。換言すれば、真を示す複数のフラグ信号ＦＬＧ０−ＦＬＧ７が出力される場合にも、演算器アレイ１８の回路が、誤ったコンフィグレーションデータＣＦＧにより再構成されることはなく、演算器アレイ１８は誤動作しない。
【０１８６】
ネットワーク回路ＮＷＦにより、演算器ＯＰ、ＦＯＰの出力を、優先度に応じてフラグ端子ＦＬＧ０−ＦＬＧ７のいずれかに接続し、優先度が割り当てられたフラグ信号ＦＬＧを出力することで、シーケンサ１４による優先度の判定処理を省くことができる。
【０１８７】
フラグ演算器ＤＦＯＰは、フラグ信号ＦＬＧ０−ＦＬＧ６が偽を示す場合に、真を示すフラグ信号ＦＬＧ７を出力する。これにより、いずれの判定条件にも該当しない場合の処理を選択するフラグ信号ＦＬＧの論理を、演算器ＯＰやフラグ演算器ＦＯＰを用いて生成する場合に比べて簡易に生成することができる。
【０１８８】
分岐制御フラグＢＲＡがリセット状態を示す場合に、セレクタＳＳＥＬ１の動作は停止し、アドレスＡＤａは、インクリメンタＩＮＣにより順次に生成される。これにより、アドレスＡＤａの各ビットの論理レベルが変化する可能性を低くでき、アドレスＡＤａの変化に伴って発生する電源ノイズを抑制できる。
【０１８９】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０１９０】
２…演算部；４…制御部；１２…共有メモリ；１４、１４Ａ…シーケンサ；１６Ａ、１６Ｂ…コンフィグレーションメモリ；１８、１８Ａ…演算器アレイ；２０…ＭＣＵ；３０…メモリ；４０…周辺回路；ＡＣＯＵＮＴ…カウンタ；ＡＤａ、ＡＤｂ…アドレス信号；ＢＲＡ…分岐制御フラグ；ＣＦＧ…コンフィグレーションデータ；ＣＮＴＬ…制御回路；ＤＦＯＰ…フラグ演算器；ＥＮＤ…終了信号；ＥＮＤＳ…終了フラグ；ＦＬＧ…フラグ信号；ＦＬＧＯＰ…フラグ演算部；ＦＯＰ…フラグ演算器；ＩＮＣ…インクリメンタ；ＭＣＮＴ…メモリ制御回路；ＮＷＤ、ＭＷＦ…ネットワーク回路；ＯＰ…演算器；ＰＲＶＳ０、ＰＲＶＳ１…極性反転器；ＲＥＧ…レジスタ；ＲＥＧＤ…レジスタデータ；ＳＢＵＳ…システムバス；ＳＥＭ１、ＳＥＭ２、ＳＥＭ３…半導体集積回路；ＳＳＥＬ１、ＳＳＥＬ２、ＳＳＥＬ３…セレクタ；ＳＴＬ…ストール信号；ＴＲＧ…トリガ信号
【図１】
2015011375.tif 000003
【図２】
2015011375.tif 000004
【図３】
2015011375.tif 000005
【図４】
2015011375.tif 000006
【図５】
2015011375.tif 000007
【図６】
2015011375.tif 000008
【図７】
2015011375.tif 000009
【図８】
2015011375.tif 000010
【図９】
2015011375.tif 000011
【図１０】
2015011375.tif 000012
【図１１】
2015011375.tif 000013
【図１２】
2015011375.tif 000014
【図１３】
2015011375.tif 000015
【図１４】
2015011375.tif 000016
【図１５】
2015011375.tif 000017
【図１６】
2015011375.tif 000018
【図１７】
2015011375.tif 000019
【図１８】
2015011375.tif 000020
【図１９】
2015011375.tif 000021
【図２０】
2015011375.tif 000022
【図２１】
2015011375.tif 000023
【図２２】
2015011375.tif 000024
【図２３】
2015011375.tif 000025
【図２４】
2015011375.tif 000026
【図２５】
2015011375.tif 000027
【図２６】
2015011375.tif 000028
【図２７】
2015011375.tif 000029