(57)【要約】【課題】リコンフィギュラブル回路における条件実行をより高速に行うことができる半導体装置を提供すること。【解決手段】第１の演算を行う演算器１０Ａと、第２の演算を行う演算器１０Ｄと、命令アドレスを演算器１０Ａと演算器１０Ｄとへ出力するとともに、データの演算器１０Ａへの入力を制御するコントローラ１１と、演算器１０Ａが演算した第１の演算結果を演算器１０Ｄに転送する間接命令アドレスバス１４とを備え、演算器１０Ａは、命令アドレスにより特定される第１の演算に必要な実行回路により、データに対して第１の演算を行い、第１の演算結果を間接命令アドレスバス１４に出力し、演算器１０Ｄは、命令アドレスをアドレスとして内部に備えるメモリ１００１から読み出される情報に基づいて、命令アドレスまたは第１の演算結果のいずれかにより特定される第２の演算に必要な実行回路により、データに対して第２の演算を行い、演算結果を出力する。【選択図】        図１
2010117806.tif 000002
【特許請求の範囲】
【請求項１】
第１の演算を行う第１の動的リコンフィギュラブル回路と、
第１の記憶手段を内部に備え、第２の演算を行う第２の動的リコンフィギュラブル回路と、
前記第１の演算に必要な実行回路および前記第２の演算に必要な実行回路を特定するための値である第１アドレスを、前記第１の動的リコンフィギュラブル回路と前記第２の動的リコンフィギュラブル回路とへ出力するとともに、前記第１の演算に用いられるデータの前記第１の動的リコンフィギュラブル回路への入力を制御するコントローラと、
前記第１の動的リコンフィギュラブル回路が演算した第１の演算結果を、前記第２の動的リコンフィギュラブル回路に転送するバスと、を備え、
前記第１の動的リコンフィギュラブル回路は、
前記第１アドレスにより特定される前記第１の演算に必要な実行回路により、入力された前記データに対して前記第１の演算を行い、前記第１の演算結果を前記バスに出力し、
前記第２の動的リコンフィギュラブル回路は、
前記第１アドレスに指定される前記第１の記憶手段上の情報に基づいて、前記第１アドレスまたは前記第１の演算結果のいずれかにより特定される前記第２の演算に必要な実行回路により、入力されたデータに対して前記第２の演算を行い、第２の演算結果を出力すること、
を特徴とする半導体装置。
【請求項２】
前記第２の動的リコンフィギュラブル回路は、前記第１の記憶手段から読み出される情報が、第１の値の場合には前記第１アドレスにより前記第２の演算に必要な実行回路を特定し、第２の値の場合には前記第１の演算結果により前記第２の演算に必要な実行回路を特定すること、を特徴とする請求項１に記載の半導体装置。
【請求項３】
前記第２の動的リコンフィギュラブル回路は、第２の記憶手段をさらに備え、前記第１アドレスまたは前記第１の演算結果のいずれかに指定される、前記第２の記憶手段上の情報に基づいて、前記第２の演算結果を前記バスに出力するかどうかを決定すること、を特徴とする、請求項１または２に記載の半導体装置。
【請求項４】
前記第２の動的リコンフィギュラブル回路は、前記第２の記憶手段から読み出される情報が、第３の値の場合には前記第２の演算結果を前記バスに出力し、第４の値の場合には前記第２の演算結果を前記バスに出力しないこと、を特徴とする請求項３に記載の半導体装置。
【請求項５】
前記第２の動的リコンフィギュラブル回路は、前記第２の演算結果を前記バスに出力する際に、前記入力されたデータを前記第２の演算結果とともに出力すること、を特徴とする請求項１から４のいずれか一項に記載の半導体装置。
【請求項６】
前記コントローラと、前記第１の動的リコンフィギュラブル回路と、前記第２の動的リコンフィギュラブル回路とはパイプライン式に接続され、前記第１アドレスと、前記第１の演算結果は、パイプライン式に転送されること、を特徴とする請求項１から５のいずれか一項に記載の半導体装置。
【請求項７】
前記第２の動的リコンフィギュラブル回路と接続し、第３の演算を行う第３の動的リコンフィギュラブル回路をさらに備え、
前記バスは、前記第１の演算結果または前記第２の演算結果を、前記第３の動的リコンフィギュラブル回路に転送し、
前記第３の動的リコンフィギュラブル回路は、
前記コントローラが出力する前記第１アドレスに指定される、内部に備える第３の記憶上の情報に基づいて、前記コントローラが出力する前記第１アドレス、または、前記バスから読み出される前記第１の演算結果または前記第２の演算結果のいずれかにより特定される前記第３の演算に必要な実行回路で、入力されるデータに対して演算を行い、第３の演算結果を出力すること、
を特徴とする請求項１から６のいずれか一項に記載の半導体装置。
【請求項８】
第１の動的リコンフィギュラブル回路と、記憶手段を内部に備える第２の動的リコンフィギュラブル回路と、コントローラと、バスと、を備えた半導体装置によるデータ処理方法において、
前記コントローラが、第１アドレスを、前記第１の動的リコンフィギュラブル回路と前記第２の動的リコンフィギュラブル回路とへ出力する第１の出力ステップと、
前記コントローラが、データの前記第１の動的リコンフィギュラブル回路への入力を制御する制御ステップと、
前記第１の動的リコンフィギュラブル回路が、前記第１アドレスにより特定される前記第１の演算に必要な実行回路により、入力された前記データに対して前記第１の演算を行う第１の演算ステップと、
前記第１の動的リコンフィギュラブル回路が、前記第１の演算ステップで演算した第１の演算結果を前記バスに出力する第２の出力ステップと、
前記バスが、前記第１の演算結果を、前記第２の動的リコンフィギュラブル回路に転送する転送ステップと、
前記第２の動的リコンフィギュラブル回路が、前記第１アドレスに指定される前記第１の記憶手段上の情報に基づいて、前記第１アドレスまたは前記第１の演算結果のいずれかにより特定される前記第２の演算に必要な実行回路により、入力されたデータに対して前記第２の演算を行う第２の演算ステップと、
前記第２の動的リコンフィギュラブル回路が、第２の演算ステップで演算した第２の演算結果を出力する第３の出力ステップと、を含むこと、
を特徴とする半導体装置によるデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的リコンフィギュラブル回路技術を用いた半導体装置、および、半導体装置によるデータ処理方法に関するものである。
【背景技術】
【０００２】
近年、携帯機器など小面積・低消費電力が求められる機器においても、機能の複雑化、多様化が進み、このような機器にも高い性能が必要とされてきている。高性能と小面積・低消費電力を両立させるためには、専用ハードウェアの製造・開発は避けられない。しかしながら、機能の複雑化・多様化に伴い専用ハードウェアの製造・開発費は年々増大している。この製造・開発費を削減するものとして、動的リコンフィギュラブル回路技術を用いた半導体装置が注目されている。
【０００３】
動的リコンフィギュラブル回路技術を用いた半導体装置は、ＦＰＧＡのようなリコンフィギュラブル回路と、そのリコンフィギュラブル回路に実行させたい回路（以下、単に実行回路と称す）を構築するのに必要な回路情報を複数蓄えておくための記憶装置を備えており、ソフトウェアなどによりあらかじめ決められた規則に従って、動作時に必要な回路情報を読み出して実行回路を構築できる装置である。動作時に実行回路を変えられる点が、ＦＰＧＡを用いた従来の半導体装置とは異なる。
【０００４】
この半導体装置を用いると、ＦＰＧＡ同様に専用ハードウェアの開発費が低減されるだけでなく、実行回路を動的に構築することにより小さな半導体装置上に多様な機能が実現できるため、専用ハードウェアの製造費も低減されると期待されている。
【０００５】
動的リコンフィギュラブル回路技術を用いた半導体装置の例としては、ＮＥＣエレクトロニクスのＤＲＰ（Ｄｙｎａｍｉｃａｌｌｙ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ・・・非特許文献１参照）や、ＩＭＥＣのＡＤＲＥＳ（Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｄｙｎａｍｉｃａｌｌｙ  Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍ・・・非特許文献２参照）が挙げられる。
【０００６】
ＮＥＣエレクトロニクスのＤＲＰは、演算を行う基本要素であるＰＥ（Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）が２次元アレイ状に並べられ、その中央に状態遷移コントローラが配置されるという構造を持つ。ＰＥは実行回路を構築可能な演算装置で、ＰＥ内部にある命令メモリに演算の種類やＰＥ間の接続関係といった回路情報が複数格納されている。各ＰＥは状態遷移コントローラから与えられる命令ポインタに従って命令メモリから回路情報を読み出して、動的に実行回路を構築する。
【０００７】
ＤＲＰの状態遷移コントローラでは、単純な状態分岐が可能となっており、ＰＥアレイ部から状態遷移コントローラに送られるイベント信号により分岐先の状態を決定する。この機構により、ＰＥアレイにより演算された結果を条件として、次にＰＥアレイで行われる演算を動的に決定するという、条件実行の仕組みを実現できる。
【０００８】
一方、ＩＭＥＣのＡＤＲＥＳは、演算を行う基本要素であるＲＣ（Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｃｅｌｌ）が２次元アレイ状に並べられ、一部のＲＣがデータレジスタを介して、プロセッサと結合されるという構造を持つ。ＲＣは実行回路を構築可能な演算装置で、ＲＣ内部にあるコンフィギュレーションメモリに演算の種類やＲＣ間の接続関係といった回路情報が複数格納されている。これらの回路情報が、ＲＣの内部にあるコンフィギュレーションカウンタの出力をアドレスとして、コンフィギュレーションメモリから読み出され、動的に実行回路が構築される。
【０００９】
ＡＤＲＥＳのプロセッサは、ＲＣ内部のコンフィギュレーションカウンタを初期化することにより、ＲＣにおける実行回路の構築を制御する。ＡＤＲＥＳのプロセッサは、データレジスタを介してＲＣによる演算結果を読み出せるため、読み出した演算結果に応じてＲＣのコンフィギュレーションカウンタを初期化することにより、ＲＣの演算結果を条件として、次にＲＣで行われる演算を動的に決定するという、条件実行の仕組みを実現できる。
【００１０】
また、ＲＣにおける演算ではｐｒｅｄｉｃａｔｅ論理がサポートされているため、異なるＲＣで異なる演算を実行したのち、別のＲＣにより演算されたｐｒｅｄｉｃａｔｅ値に従って、一つの演算結果だけを選択してＲＣ内部のレジスタにセットすることにより、データ単位での条件実行も実現できる。
【００１１】
【非特許文献１】「リコンフィギュラブルシステム」、オーム社、ページ１８９−１９４
【非特許文献２】“Ｃｕｓｔｏｍ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ｏｆ  ｔｈｅ  ｃｏａｒｓｅ−ｇｒａｉｎｅｄ  ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  ＡＤＲＥＳ  ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  ｍｕｌｔｉｍｅｄｉａ  ｐｕｒｐｏｓｅｓ”，  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  ａｎｄ  Ａｐｐｌｉｃａｔｉｏｎｓ，  ｐａｇｅ  １０６−１１１
【発明の開示】
【発明が解決しようとする課題】
【００１２】
高性能な動的リコンフィギュラブル回路技術を用いた半導体装置を実現するためには、半導体装置において実行された演算の結果に応じて次に実行する演算を決定するという条件実行を高速に行う必要がある。
【００１３】
ところがＤＲＰでは、状態遷移コントローラにおける状態分岐の仕組みを用いて条件実行を実現しているため、ＰＥごとに異なる演算結果を条件とする条件実行を同時に行うことはできず、すべてのＰＥで一つの演算結果を条件とする条件実行しかできない。
【００１４】
また、ＡＤＲＥＳにおけるｐｒｅｄｉｃａｔｅ論理を用いた条件実行の仕組みでは、データ単位で条件実行を行えるが、一つの条件実行を行うために多数のＲＣを利用しなければならないという問題がある。
【００１５】
さらに、ＡＤＲＥＳにおけるプロセッサを用いた条件実行の仕組みでは、ＤＲＰにおける単純な状態分岐の仕組みを用いた条件実行よりも複雑な条件実行が行えるが、ＲＣでの演算結果を条件として、次に実行する演算を決定するための処理をプロセッサにより行っているため、条件実行にかかる時間はＤＲＰよりも長い。
【００１６】
本発明は、上記に鑑みてなされたものであって、リコンフィギュラブル回路における条件実行をより高速に行うことができる半導体装置、および、半導体装置によるデータ処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１７】
上述した課題を解決し、目的を達成するために、本発明は、第１の演算を行う第１の動的リコンフィギュラブル回路と、第１の記憶手段を内部に備え、第２の演算を行う第２の動的リコンフィギュラブル回路と、前記第１の演算に必要な実行回路および前記第２の演算に必要な実行回路を特定するための値である第１アドレスを、前記第１の動的リコンフィギュラブル回路と第２の動的リコンフィギュラブル回路とへ出力するとともに、前記第１の演算に用いられるデータの前記第１の動的リコンフィギュラブル回路への入力を制御するコントローラと、前記第１の動的リコンフィギュラブル回路が演算した第１の演算結果を、前記第２の動的リコンフィギュラブル回路に転送するバスと、を備え、前記第１の動的リコンフィギュラブル回路は、前記第１アドレスにより特定される前記第１の演算に必要な実行回路により、入力された前記データに対して前記第１の演算を行い、前記第１の演算結果を前記バスに出力し、前記第２の動的リコンフィギュラブル回路は、前記第１アドレスに指定される前記第１の記憶手段上の情報に基づいて、前記第１アドレスまたは前記第１の演算結果のいずれかにより特定される前記第２の演算に必要な実行回路により、入力されたデータに対して前記第２の演算を行い、第２の演算結果を出力すること、を特徴とする。
【００１８】
また、本発明は、第１の動的リコンフィギュラブル回路と、記憶手段を内部に備える第２の動的リコンフィギュラブル回路と、コントローラと、バスと、を備えた半導体装置によるデータ処理方法において、前記コントローラが、第１アドレスを、前記第１の動的リコンフィギュラブル回路と第２の動的リコンフィギュラブル回路とへ出力する第１の出力ステップと、前記コントローラが、データの前記第１の動的リコンフィギュラブル回路への入力を制御する制御ステップと、前記第１の動的リコンフィギュラブル回路が、前記第１アドレスにより特定される前記第１の演算に必要な実行回路により、入力された前記データに対して前記第１の演算を行う第１の演算ステップと、前記第１の動的リコンフィギュラブル回路が、前記第１の演算ステップで演算した第１の演算結果を前記バスに出力する第２の出力ステップと、前記バスが、前記第１の演算結果を、前記第２の動的リコンフィギュラブル回路に転送する転送ステップと、前記第２の動的リコンフィギュラブル回路が、前記第１アドレスに指定される前記第１の記憶手段上の情報に基づいて、前記第１アドレスまたは前記第１の演算結果のいずれかにより特定される前記第２の演算に必要な実行回路により、入力されたデータに対して前記第２の演算を行う第２の演算ステップと、前記第２の動的リコンフィギュラブル回路が、第２の演算ステップで演算した第２の演算結果を出力する第３の出力ステップと、を含むこと、を特徴とする。
【発明の効果】
【００１９】
本発明によれば、リコンフィギュラブル回路における条件実行をより高速に行うことができるという効果を奏する。
【発明を実施するための最良の形態】
【００２０】
以下に添付図面を参照して、この発明にかかる半導体装置、および、半導体装置によるデータ処理方法の最良な実施の形態を詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００２１】
（半導体装置の構成）
図１は、本実施の形態にかかる半導体装置の構成を示すブロック図である。半導体装置１は、プロセッサなどの外部装置２からの指示によりデータ処理を行うものであって、９個の演算器１０Ａ〜１０Ｉ、コントローラ１１、データメモリ１２、直接命令アドレスバス１３、および、間接命令アドレスバス１４を備えて構成されている。なお、ここでは、データ処理とは、個々の演算を行った一連の演算の総称のこととする。
【００２２】
演算器１０Ａ〜１０Ｉは、演算に必要な実行回路を特定するための回路情報に従って実行回路を構築し、データ処理を実現する。回路情報としては、演算器１０Ａ〜１０Ｉに対する入力データと出力データの対応関係を示すテーブルや、演算器１０Ａ〜１０Ｉの演算の種類を決定する設定信号の値など、実施例によりさまざまな情報が用いられる。回路情報は、外部装置２により、演算器１０Ａ〜１０Ｉの内部のメモリに格納される。
【００２３】
演算器１０Ａ〜１０Ｉは、直接命令アドレスバス１３および間接命令アドレスバス１４に接続する。演算器１０Ａ〜１０Ｉは、直接命令アドレスバス１３の値と、間接命令アドレスバス１４の値のいずれか一方の値をアドレスとして、演算器１０Ａ〜１０Ｉの内部にあるメモリ（後述する回路情報記憶部１０１）から回路情報を読み出して実行回路を構築する。
【００２４】
また、演算器１０Ａ〜１０Ｃは、データメモリ１２および演算器１０Ｄ〜１０Ｆに接続し、データメモリ１２から入力されるデータに対して、構築された実行回路により演算を行い、演算結果を演算器１０Ｄ〜１０Ｆおよび間接命令アドレスバス１４に出力する。また、演算器１０Ｄ〜１０Ｆは、演算器１０Ａ〜１０Ｃおよび演算器１０Ｇ〜１０Ｉに接続し、演算器１０Ａ〜１０Ｃから入力されるデータに対して演算を行って、演算結果を演算器１０Ｇ〜１０Ｉおよび間接命令アドレスバス１４に出力する。さらに、演算器１０Ｇ〜１０Ｉは、演算器１０Ｄ〜１０Ｆおよびデータメモリ１２に接続し、演算器１０Ｄ〜１０Ｆから入力されるデータに対して演算を行って、演算結果をデータメモリ１２に出力する。
【００２５】
なお、演算器１０Ａ〜１０Ｉには、それぞれ最大３つのデータが入力される。これらのデータを演算器１０Ａ〜１０Ｉに入力するためのデータポートを、それぞれ演算器１０の入力０、入力１、および、入力２とする。ここで、図１において、演算器１０Ａ〜１０Ｉの各ブロック内に表記されている０、１、および、２は、それぞれ入力０、入力１、および、入力２のデータポートを示している。なお、本実施の形態では、演算器１０Ａ〜１０Ｃには、２つのデータ（入力０、入力１）のみ入力される。
【００２６】
ここで、演算器１０Ａ〜１０Ｉは、動的リコンフィギュラブル回路を構成する。なお、動的リコンフィギュラブル回路とは、複数の異なる値をとりうる情報（回路情報）に応じて、入力信号と出力信号の関係が変更される回路を有していれば、どのようなものであってもよい。例えば、動的リコンフィギュラブル回路とは、メモリに記憶された複数の回路情報のうち、命令アドレス（例えば、ポインタなど）によって指定される回路情報に応じて、入出力関係が変更される回路を備えるものであってもよい。さらに、動的リコンフィギュラブル回路とは、複数の演算器を備え、回路情報に応じて、各演算器の演算内容（入出力関係）および各演算器間の接続関係が変更されるものであってもよい。
【００２７】
なお、本実施の形態では、演算器１０の数は９個であるが、半導体装置１に必要とされる演算能力などに応じて変更してもよい。また、各演算器１０の間を接続するデータ線の数や、演算器１０とデータメモリ１２とを接続するデータ線の数も、必要とされるデータ転送能力などに応じて変更してもよい。また、演算器１０Ａ〜１０Ｉは、内部のメモリから回路情報を読み出すのではなく、外部のメモリから回路情報を読み出してもよい。演算器１０の構成については、後ほど、演算器１０におけるデータ処理の説明で、さらに詳しく説明する。
【００２８】
コントローラ１１は、データメモリ１２および直接命令アドレスバス１３に接続する。コントローラ１１は、記憶部（後述するプログラムコードメモリ１１Ｂ）に記録されたコードに従って、演算器１０Ａ〜１０Ｉが内部のメモリから回路情報を読み出すためのアドレスを、サイクルごとに直接命令アドレスバス１３にセットする。また、コントローラ１１は、同じコードに従って、データメモリ１２からのデータ読み出しおよびデータメモリ１２へのデータ書き込みを制御するための制御情報を、データメモリ１２に出力する。ここでサイクルとは、同期式回路において記憶素子部の値が変化してから、次に記憶素子部の値が変化するまでの最小時間単位である。コントローラ１１の構成については、後ほど、コントローラ１１におけるデータ処理の説明で、さらに詳しく説明する。
【００２９】
データメモリ１２は、半導体装置１がデータ処理の開始時に与えるデータや、半導体装置１によるデータ処理の中間結果または最終結果を一時的に保持する。データメモリ１２には、データ処理の開始前に外部装置２により初期の入力データが書き込まれる。また、半導体装置１は、データメモリ１２に保持されたデータ処理の中間結果を再び入力データとして、データ処理を続けることもできる。データメモリ１２に保持された最終結果は、外部装置２によりデータメモリ１２から読み出される。
【００３０】
直接命令アドレスバス１３は、コントローラ１１から受け取った命令アドレスを演算器１０Ａ〜Ｉに出力する。間接命令アドレスバス１４は、前段の演算器１０から受け取った演算結果を後段の演算器１０へ転送する。
【００３１】
（データ処理の流れの概要）
次に、本実施の形態にかかる半導体装置１におけるデータ処理の開始から終了までの流れの概要を説明する。
【００３２】
コントローラ１１は、記憶部（後述するプログラムコードメモリ１１Ｂ）に格納されたコードを毎サイクル解釈し、それに従って、演算器１０Ａ〜１０Ｉがデータ処理に必要な回路情報を内部のメモリ（後述する回路情報記憶部１０１）から読み出すためのアドレスを、直接命令アドレスバス１３にセットする。また、コントローラ１１は、同じコードを解釈して、データメモリ１２に制御情報（データ読み出し要求とデータ書き込み要求）を転送する。
【００３３】
データメモリ１２は、コントローラ１１からデータ読み出し要求を受け取るたびに、その要求に従ってデータメモリ１２からデータを読み出し、演算器１０Ａ〜Ｃに転送する。また、データメモリ１２は、コントローラ１１からデータ書き込み要求を受け取るたびに、その要求に従って演算器１０Ｇ〜Ｉから出力されたデータをデータメモリ１２に書き込む。
【００３４】
演算器１０は、サイクルごとに演算を行う。図２は、演算器１０の動作を示すフローチャートである。初めに、演算器１０は、演算器１０の内部のメモリ（後述する回路情報記憶部１０１）から回路情報を読み出すためのアドレスとして、直接命令アドレスバス１３の値と間接命令アドレスバス１４の値のどちらを用いるかを決定する（ステップＳ１）。なお、決定の方法については、後ほど、演算器１０におけるデータ処理についての説明の中で説明する。
【００３５】
次に、演算器１０は、ステップＳ１で決定された値をアドレスとして内部のメモリ（後述する回路情報記憶部１０１）から回路情報を読み出し、データ処理に必要な実行回路を構築する（ステップＳ２）。
【００３６】
次に、演算器１０は、ステップＳ２で構築された実行回路により、データメモリ１２または別の演算器１０から入力されるデータを演算し、演算結果を接続するデータメモリ１２または別の演算器１０に出力する（ステップＳ３）。
【００３７】
最後に、演算器１０は、ステップＳ３で演算された結果を、間接命令アドレスバス１４に設定するかどうかを判定し、設定が必要と判定された場合には、ステップＳ３で演算された結果を間接命令アドレスバス１４に設定する（ステップＳ４）。一方、設定が不要と判定された場合には、ステップＳ３で演算された結果は間接命令アドレスバス１４に設定されず、間接命令アドレスバス１４には、以前に別の演算器１０で設定された結果がそのまま設定される。
【００３８】
なお、ステップＳ４で演算器１０により間接命令アドレスバス１４に設定された値は、その演算器１０が演算結果を出力する別の演算器１０が、ステップＳ１で回路情報を読み出すためのアドレスとして用いられる。このようにして、すべての演算器１０Ａ〜Ｉがサイクルごとに行う演算が決定され、演算が行われる。
【００３９】
そして、コントローラ１１が全てのコードを解釈し終えた時点で、コントローラ１１は外部装置２に処理の完了を通知し、データ処理は終了する。
【００４０】
最後に、外部装置２は、処理の完了通知を受けた後に、データメモリ１２に蓄えられた半導体装置１の演算結果を読み出す。
【００４１】
（演算器におけるデータ処理）
次に、演算器１０におけるデータ処理について詳しく説明する。図３は、演算器１０の構成を示すブロック図である。演算器１０は、命令アドレス決定部１００、回路情報記憶部１０１、演算部１０２、および、間接命令アドレス出力部１０３を備えて構成されている。
【００４２】
命令アドレス決定部１００は、回路情報記憶部１０１から回路情報を読み出す際のアドレスとして、直接命令アドレスバス１３の値と間接命令アドレスバス１４の値の、どちらを用いるかを決定する。命令アドレス決定部１００は、直接命令アドレスバス１３、間接命令アドレスバス１４、回路情報記憶部１０１、および、間接命令アドレス出力部１０３に接続する。
【００４３】
命令アドレス決定部１００は、メモリ１００１とセレクタ１００２とを備えて構成されている。メモリ１００１には、直接命令アドレスバス１３の値であるアドレスとそれに対応する出力値が対応付けて記憶されており、この出力値が回路情報記憶部１０１のアドレスを決定するための情報となる。本実施の形態では、直接命令アドレスバス１３の値であるアドレス０、１、２、．．．、ｎに対して、出力値として０または１の値が記憶されている。メモリ１００１は、直接命令アドレスバス１３の値であるアドレスが入力されると、それに対応する出力値をセレクタ１００２へ出力する。
【００４４】
図４は、メモリ１００１に記憶されている直接命令アドレスバス１３の値であるアドレスとそれに対応する出力値の一例を示す図である。なお、メモリ１００１に記憶されている直接命令アドレスバス１３の値であるアドレスとそれに対応する出力値の関係は、各演算器１０Ａ〜１０Ｉごとに任意に設定が可能である。なお、本実施の形態では、図４のような情報がメモリ１００１に記憶されているが、これに限定されるものではなく、直接命令アドレスバス１３の値と間接命令アドレスバス１４の値のいずれか一方を一意に選択可能な情報であればよい。
【００４５】
セレクタ１００２には、直接命令アドレスバス１３の値、間接命令アドレスバス１４の値、および、メモリ１００１からの出力値が入力される。そして、セレクタ１００２は、メモリ１００１からの出力値に基づいて、直接命令アドレスバス１３の値と、間接命令アドレスバス１４の値のいずれかを選択し、この値を回路情報記憶部１０１と間接命令アドレス出力部１０３とへ出力する。そして、出力された値（アドレス）は、回路情報記憶部１０１から回路情報を読み出すためのアドレスとなる。なお、本実施の形態では、メモリ１００１から読み出される値が０の場合には直接命令アドレスバス１３の値が選択され、１の場合には間接命令アドレスバス１４の値が選択される。
【００４６】
回路情報記憶部１０１は、演算部１０２に構築される実行回路を決定するための回路情報を格納するメモリである。回路情報記憶部１０１は、命令アドレス決定部１００および演算部１０２に接続する。回路情報記憶部１０１からは、命令アドレス決定部１００が出力する値（アドレス）に対応する回路情報が読み出され、演算部１０２に出力される。
【００４７】
図５は、回路情報記憶部１０１に格納される回路情報の構造の一例を示す図である。回路情報は、演算指定フィールド、入力データ指定フィールド、出力データ指定フィールド、および、即値フィールドからなる。
【００４８】
演算指定フィールドは、演算部１０２で行う演算の種類を指定するための回路情報である。なお、本実施の形態では、演算指定フィールドは２ビットとし、図５に示す規則に従って演算部１０２の演算の種類を決定するが、演算部１０２が必要とする演算の種類（数）に合わせて、演算指定フィールドの定義は変更しても構わない。
【００４９】
入力データ指定フィールドは、演算器１０に入力されるデータのいずれを、演算部１０２における入力Ａ、Ｂとして用いるかを指定するためのフィールドである。なお、本実施の形態では、演算器１０に入力されるデータとしては、入力０、入力１、および、入力２の各データポートから入力される各データと、即値フィールドに格納された各データとがある。また、本実施の形態では、入力データ指定フィールドは４ビットとし、図５に示す規則に従って演算部１０２の入力Ａ、Ｂを決定するが、各演算器１０間の接続本数や、演算部１０２が必要とする入力データの数に合わせて、入力データ指定フィールドの定義は変更しても構わない。
【００５０】
出力データ指定フィールドは、演算器１０が出力するデータを指定するためのフィールドである。なお、本実施の形態では、出力データ指定フィールドは２ビットとし、出力データ指定フィールドが“００”の場合には、演算部１０２で演算された結果が演算器１０から出力され、“０１”、“１０”、“１１”の場合には、それぞれ演算器１０の入力０、入力１、入力２の各データポートから入力される各データが演算器１０からそのまま出力される。出力データ指定フィールドの定義は、演算器１０に入力されるデータの数などに応じて変更しても構わない。
【００５１】
このように、演算器１０の入力０、入力１、入力２の各データポートから入力される各データの値を、演算器１０からそのまま出力する機能は、演算器１０により演算した結果を間接命令アドレスバス１４にセットしておき、別の演算器１０において、この演算結果を回路情報記憶部１０１に記憶されている演算に用いる回路情報を読み出すためのアドレスとして使用することが可能である半導体装置１においては、データ処理に必要なデータを転送するためのデータパスを十分に確保するという点で効果がある。この機能がない場合には、演算器１０が演算結果を間接命令アドレスバス１４にセットする際には、その演算器１０からデータ処理に用いるデータを他の演算器１０に転送することはできなくなり、使用可能なデータパスの数は減少する。
【００５２】
即値フィールドは、入力データ指定フィールドにより演算部１０２の入力として即値が指定された場合に、演算部１０２に入力されるデータを格納するフィールドである。また、選択演算の結果として出力されるデータを指定するフィールドとしても利用される。なお、即値フィールドに格納されたデータは、演算部１０２に入力されるデータ、および、選択演算の結果として出力されるデータとして共用することが可能である。なお、本実施の形態では、即値フィールドは８ビットとし、４ビットごとにそれぞれ演算部１０２の入力Ａ、入力Ｂに即値が指定された場合に入力されるデータを格納するが、即値フィールドの定義は、必要とされる即値の精度や演算部１０２の入力数などに応じて適宜変更しも構わない。
【００５３】
演算部１０２は、回路情報記憶部１０１から入力される回路情報に従って、演算に必要な実行回路を構築して演算を行う。演算部１０２は、回路情報記憶部１０１、間接命令アドレス出力部１０３、入力０、入力１、および、入力２の各データポート、および、後段の演算器１０（最後段の演算器１０の場合はデータメモリ１２）に接続する。
【００５４】
図６は、演算部１０２の構成の一例を示すブロック図である。図６では、回路情報に従って、入力Ａ、入力Ｂ、および、演算器１０の出力を選択するための実行回路の構築は、回路情報の入力データ指定フィールドおよび出力データ指定フィールドに従って、セレクタ１０２０、１０２１、１０２３の出力を選択することにより実現している。また、回路情報の演算指定フィールドにより指定される演算を行うための実行回路の構築は、演算指定フィールドにより指定され得る演算を、それぞれ加算器１０２４、減算器１０２５、シフタ１０２６、選択器１０２７で別々に実行し、それらの結果を、演算指定フィールドに従って、セレクタ１０２２により選択することで実現している。
【００５５】
セレクタ１０２２により選択されたデータは、回路情報の出力データ指定フィールドの値によらず、そのまま間接命令アドレス出力部１０３に出力される。一方、演算器１０の出力データは、入力０、入力１、および、入力２の各データポートから入力される各データ、および、セレクタ１０２２の出力の中から、出力データ指定フィールドの値に従いセレクタ１０２３により選択され、出力される。
【００５６】
間接命令アドレス出力部１０３は、演算部１０２から入力されるデータを、間接命令アドレスバス１４にセットするかどうかを決定する。間接命令アドレス出力部１０３は、命令アドレス決定部１００、演算部１０２、および、間接命令アドレスバス１４に接続する。
【００５７】
間接命令アドレス出力部１０３は、メモリ１０３０を備えて構成されている。メモリ１０３０には、命令アドレス決定部１００から出力される値（直接命令アドレスバス１３の値か間接命令アドレスバス１４の値のいずれか）であるアドレスとそれに対応する出力値が対応付けて記憶されており、この出力値が演算部１０２から入力されるデータ値を間接命令アドレスバス１４に設定するか否かを決定するための情報となる。本実施の形態では、命令アドレス決定部１００から出力される値であるアドレス０、１、２、．．．、ｎに対して、出力値として０または１の値が記憶されている。メモリ１０３０は、命令アドレス決定部１００から出力される値であるアドレスが入力されると、それに対応する出力値を間接命令アドレスバス１４へ出力する。
【００５８】
図７は、メモリ１０３０に記憶されている命令アドレス決定部１００から出力される値であるアドレスとそれに対応する出力値の一例を示す図である。なお、メモリ１０３０に記憶されている命令アドレス決定部１００から出力される値であるアドレスとそれに対応する出力値の関係は、各演算器１０Ａ〜１０Ｉごとに任意に設定が可能である。なお、本実施の形態では、図７のような情報がメモリ１０３０に記憶されているが、これに限定されるものではなく、演算部１０２から入力されるデータ値を間接命令アドレスバス１４に設定するか否かを一意に決定可能な情報であればよい。
【００５９】
間接命令アドレス出力部１０３は、メモリ１０３０から出力される出力値を間接命令アドレスバス１４に出力するとともに、演算部１０２から入力されるデータをそのまま間接命令アドレスバス１４に出力する。本実施の形態では、メモリ１０３０から出力される出力値が０の場合には、演算部１０２から入力される値は間接命令アドレスバス１４に設定されず、メモリ１０３０から出力される出力値が１の場合には、演算部１０２から入力される値が間接命令アドレスバス１４に設定される。なお、演算部１０２から入力される値が間接命令アドレスバス１４に設定されない場合には、以前に設定された値が変更されずそのまま設定された状態となる。
【００６０】
（コントローラにおけるデータ処理）
次に、コントローラ１１におけるデータ処理について詳しく説明する。図８は、コントローラ１１の構成を示すブロック図である。コントローラ１１は、制御部１１Ａ、プログラムコードメモリ１１Ｂ、および、プログラムカウンタ１１Ｃを備えて構成されている。
【００６１】
制御部１１Ａは、プログラムコードメモリ１１Ｂおよびプログラムカウンタ１１Ｃに接続する。制御部１１Ａは、プログラムカウンタ１１Ｃの値をアドレスとして、プログラムコードメモリ１１Ｂからプログラムコードを読み出す。さらに、制御部１１Ａは、読み出されたプログラムコードに基づいて、データメモリ１２からのデータ読み出しのための制御情報（読み出しアドレス）と、データメモリ１２へのデータ書き込みのための制御情報（書き込みアドレスおよび後述する有効フラグ）とをデータメモリ１２へ出力するとともに、命令アドレスを直接命令アドレスバス１３へ出力する。
【００６２】
なお、プログラムコードメモリ１１Ｂには、データ処理の開始前に、外部装置２によりプログラムコードが書き込まれる。また、プログラムカウンタ１１Ｃの値は、プログラムコードの先頭アドレスに更新される。
【００６３】
図９は、プログラムコードメモリ１１Ｂに格納されるプログラムコードの構造例を示した図である。本実施の形態では、プログラムコードは、データメモリ１２の読み出しアドレスを示す入力アドレス（読み出しアドレス）、データメモリ１２の書き込みアドレスを示す出力アドレス（書き込みアドレス）、命令アドレス、有効フラグ、および、終端フラグからなる。なお、本実施の形態では、入力０と入力１の２つのデータポートにデータを入力するため、入力アドレスは、入力アドレス０と入力アドレス１の２種類ある。
【００６４】
プログラムコードは１サイクルで１アドレスずつ解釈される。プログラムカウンタ１１Ｃは、１アドレスの解釈を終えるたびに１つ増加する。そして、入力アドレス（読み出しアドレス）、出力アドレス（書き込みアドレス）、および、有効フラグは、データメモリ１２に転送される。ここで、有効フラグは、データメモリ１２への書き込みが有効であるかどうかを示すもので、有効でない場合には、演算器１０Ｇ〜Ｉの演算結果はデータメモリ１２に書き込まれない。
【００６５】
終端フラグは、プログラムコードの終端を示すもので、制御部１１Ａはプログラムコードの終端アドレスの解釈を終えると、データ処理の完了を外部装置２に通知する。また、制御部１１Ａは、外部装置２から新たなデータ処理の開始を通知されるまで、データメモリ１２への書き込みは無効となるように有効フラグを出力する。
【００６６】
（半導体装置の動作例）
次に、本実施の形態における半導体装置１で、条件に応じて演算が実行される際の動作例を説明する。図１０は、半導体装置１が演算を行う際の動作を説明する図である。なお、図１０では、動作例で説明されている半導体装置１の構成ユニットのみを示し、他の構成ユニットについては省略する。また、説明を容易にするために、動作例の説明に必要な演算器１０の動作のみを説明し、他の演算器１０の動作については説明を省略する。
【００６７】
初めに、コントローラ１１は、直接命令アドレスバス１３に“０”をセットするとともに、データメモリ１２に対して、演算器１０Ａおよび１０Ｂの入力０および１のデータポートに転送するデータの読み出し要求を転送する。なお、本動作例では、入力アドレス（読み出しアドレス）０のアドレスは０、入力アドレス（読み出しアドレス）１のアドレスは１であり、データメモリ１２のアドレス０に記憶されたデータ３が、演算器１０Ａおよび１０Ｂの入力０のデータポートに転送され、データメモリ１２のアドレス１に記憶されたデータ１が、演算器１０Ａおよび１０Ｂの入力１のデータポートに転送される。また、直接命令アドレスバス１３にセットされた“０”は、演算器１０Ａおよび１０Ｂの命令アドレス決定部１００に転送される。
【００６８】
そして、演算器１０Ａにおいては、以下の動作が行われる。まず命令アドレス決定部１００では、メモリ１００１の直接命令アドレスバス１３のアドレス“０”に対応する出力値“０”が読み出され、セレクタ１００２へ出力される。セレクタ１００２では、メモリ１００１から読み出される出力値が“０”であるため、直接命令アドレスバス１３の値“０”を選択し、直接命令アドレスバス１３の値“０” が回路情報記憶部１０１に出力される。
【００６９】
そして、回路情報記憶部１０１からは、命令アドレス決定部１００が出力するアドレス“０”に対応する回路情報が読み出され、演算部１０２に出力される。なお、この時の回路情報は、演算指定フィールドが“１１”、入力データ指定フィールドが“０００１”、出力データ指定フィールドが“０１”、即値フィールドが“０００１００１０”である。演算部１０２では、この回路情報に従って演算が行われる。回路情報の入力データ指定フィールドが“０００１”なので、入力Ａは、入力０のデータポートからのデータ３となり、入力Ｂは、入力１のデータポートからのデータ１となる。さらに、回路情報の演算指定フィールドが“１１”なので、演算は選択となり、入力Ｂは０でないため、即値フィールド “０００１００１０”の上位４ビットである“０００１”、すなわち、“１”が選択され、演算部１０２の演算結果は“１”となる。
【００７０】
また、間接命令アドレス出力部１０３では、命令アドレス決定部１００から出力される値が“０”であるため、メモリ１０３０のアドレス“０”から出力値“１”が読み出される。そして、出力値が１の場合には、演算部１０２の演算結果である“１”が間接命令アドレスバス１４にセットされる。また、回路情報の出力データ指定フィールドが“０１”であるため、データメモリ１２から演算器１０Ａの入力０のデータポートに入力されるデータ“３”が、演算器１０Ａから出力データとして出力される。
【００７１】
そして、演算器１０Ａからの出力データ“３”が演算器１０Ｄの入力０のデータポートに転送され、演算器１０Ｂからの出力データ“５”が演算器１０Ｄの入力１のデータポートに転送される。また、直接命令アドレスバス１３にセットされた“０”は、演算器１０Ｄの命令アドレス決定部１００に転送される。
【００７２】
その後、演算器１０Ｄにおいては、以下の動作が行われる。まず命令アドレス決定部１００では、メモリ１００１の直接命令アドレスバス１３のアドレス“０”に対応する出力値“１”が読み出され、セレクタ１００２へ出力される。セレクタ１００２では、メモリ１００１から読み出される出力値が“１”であるため、間接命令アドレスバス１４の値“１”を選択し、間接命令アドレスバス１４の値“１” が回路情報記憶部１０１に出力される。
【００７３】
そして、回路情報記憶部１０１からは、命令アドレス決定部１００が出力するアドレス“１”に対応する回路情報が読み出され、演算部１０２に出力される。なお、この時の回路情報は、演算指定フィールドが“００”、入力データ指定フィールドが“０００１”、出力データ指定フィールドが“００”、即値フィールドが“００００００００”である。演算部１０２では、この回路情報に従って演算が行われる。回路情報の入力データ指定フィールドが“０００１”なので、入力Ａは、入力０のデータポートからのデータ３となり、入力Ｂは、入力１のデータポートからのデータ５となる。さらに、回路情報の演算指定フィールドが“００”なので、演算は加算となり、演算部１０２の演算結果は３＋５＝“８”となる。
【００７４】
また、間接命令アドレス出力部１０３では、命令アドレス決定部１００から出力される値が“１”であるため、メモリ１０３０のアドレス“１”から出力値“０”が読み出される。出力値が０の場合には、演算部１０２の演算結果である“８”は間接命令アドレスバス１４にセットされず、以前の演算器１０Ａでの演算結果である“１”がセットされたままとなる。また、回路情報の出力データ指定フィールドが“００”であるため、演算部１０２の演算結果である“８”が、演算器１０Ｄから出力データとして出力される。
【００７５】
上述した動作例では、データメモリ１２から演算器１０Ａの入力１のデータポートに入力されるデータが“１”であったため、間接命令アドレスバス１４に“１”がセットされて、演算器１０Ｄでは回路情報記憶部１０１のアドレス“１”から読み出される回路情報に従って演算が行われたが、データメモリ１２から演算器１０Ａの入力１のデータポートに入力されるデータが“０”の場合には、以下の様になる。
【００７６】
すなわち、入力Ｂは、入力１のデータポートからのデータ０となり、回路情報の演算指定フィールドが“１１”なので、演算は選択となり、入力Ｂは０であるため、即値フィールド “０００１００１０”の下位４ビットである“００１０”、すなわち、“２”が選択され、演算部１０２の演算結果は“２”となる。そして、間接命令アドレス出力部１０３では、命令アドレス決定部１００から出力される値が“０”であるため、メモリ１０３０のアドレス“０”から出力値“１”が読み出され、演算部１０２の演算結果である“２”が間接命令アドレスバス１４にセットされて、演算器１０Ｄでは回路情報記憶部１０１のアドレス“２”から読み出される回路情報に従って演算が行われる。
【００７７】
このようにして、ある演算器１０で実行される演算を、データメモリ１２や別の演算器１０から入力されるデータを条件として条件実行することが可能になる。
【００７８】
また、上述した動作例では、演算器１０Ａにデータメモリ１２から入力されるデータに応じて、演算器１０Ｄの演算を条件実行する際の動作を説明したが、命令アドレス決定部１００のメモリ１００１と、間接命令アドレス出力部１０３のメモリ１０３０に、適切な値を設定することにより、様々な型の条件実行が可能となる。
【００７９】
例えば、上述した動作例において、演算器１０Ｇのメモリ１００１のアドレス“０”に出力値“１”をセットしておけば、間接命令アドレスバス１４にセットされた演算器１０Ａでの演算結果である値“１” が回路情報記憶部１０１に出力されることにより、結果として、演算器１０Ａにデータメモリ１２から入力されるデータに応じて、演算器１０Ｇの演算をも条件実行することが可能となる。
【００８０】
また、上述した動作例において、演算器１０Ｄのメモリ１０３０のアドレス“１”に出力値“１”をセットし、演算器１０Ｇのメモリ１００１のアドレス“０”に出力値“１”をセットしておけば、演算器１０Ｄの演算結果が間接命令アドレスバス１４にセットされることにより、演算器１０Ｇでは演算器１０Ｄの演算結果をアドレスとして、回路情報記憶部１０１から回路情報が読み出されて演算が行われる。この動作例では、まず演算器１０Ａにデータメモリ１２から入力されるデータに応じて、演算器１０Ｄで演算が条件実行されたあと、さらに演算器１０Ｄで実行された演算結果に応じて演算器１０Ｇで演算が条件実行されるという動作になる。
【００８１】
さらに、上述した動作例において、演算器１０Ｄのメモリ１００１のアドレス“０”に出力値“０”をセットし、演算器１０Ｇのメモリ１００１のアドレス“０”に出力値“１”をセットしておけば、演算器１０Ｄでは、演算器１０Ａの演算結果にかかわらず、常に直接命令アドレスバス１３が示す値“０”をアドレスとして回路情報記憶部１０１から読み出された回路情報に従って演算が行われる。一方、演算器１０Ｇでは、演算器１０Ａの演算結果に応じて演算が条件実行される。
【００８２】
（変形例）
次に、本実施の形態にかかる半導体装置の変形例について説明する。本実施の形態にかかる半導体装置１では、初めに、演算器１０Ａ〜Ｃで演算が行われ、次に、演算器１０Ａ〜Ｃの演算結果に応じて演算器１０Ｄ〜Ｆで演算が条件実行され、続いて、演算器１０Ｄ〜Ｆの演算結果に応じて演算器Ｇ〜Ｉで演算が条件実行されるというように、１サイクルの間に３段の演算が順に行われる必要がある。そのため、半導体装置１における１サイクルの時間を十分に長くする必要があるが、１サイクルの時間が長くなると、半導体装置１の性能が低下するという問題がある。この問題を解決するため、変形例にかかる半導体装置１’では、演算器１０Ａ〜Ｉがパイプライン式に演算を行うようにする。
【００８３】
図１１は、半導体装置の変形例の構成を示すブロック図であり、図１２は、コントローラの変形例の構成を示すブロック図である。半導体装置１’は、９個の演算器１０Ａ〜１０Ｉ、コントローラ１１’、データメモリ１２、直接命令アドレスバス１３、間接命令アドレスバス１４、および、複数のタイミングラッチ１５を備えて構成されている。また、コントローラ１１’は、制御部１１Ａ、プログラムコードメモリ１１Ｂ、プログラムカウンタ１１Ｃ、および、複数のタイミングラッチ１１Ｄを備えて構成されている。
【００８４】
タイミングラッチ１５は、直接命令アドレスバス１３、間接命令アドレスバス１４、および、演算器１０Ａ〜Ｉの出力に設けられ、演算器１０Ａ〜Ｉがパイプライン式に演算を行うようにする。タイミングラッチ１５は、フリップフロップなどのクロックごとに出力が変化する記憶素子が用いられる。
【００８５】
タイミングラッチ１１Ｄは、コントローラ１１からデータメモリ１２へデータ書き込みのための制御情報（書き込みアドレスおよび有効フラグ）を送信する線の途中に設けられ、データ書き込みのための制御情報（書き込みアドレスおよび有効フラグ）がコントローラ１１からデータメモリ１２へパイプライン式に転送されるようにする。タイミングラッチ１１Ｄは、フリップフロップなどのクロックごとに出力が変化する記憶素子が用いられる。
【００８６】
なお、図１１では、タイミングラッチ１５の数は１８個であるが、この数は、演算器１０の数などの回路設計によって適宜変更される。同様に、図１２のタイミングラッチ１１Ｄの数も回路設計によって適宜変更される。
【００８７】
図１１の半導体装置１’では、あるサイクルに演算器１０が間接命令アドレスバス１４にセットする値や、演算器１０が出力する演算結果は、そのサイクルのうちには演算器１０が接続する後段の演算器１０には伝搬せず、その次のサイクルで後段の演算器１０に伝搬する。そのため、半導体装置１’における１サイクルは、演算器１０において１つの演算が行われるのに十分な長さであればよいため、理想的な場合には、図１で説明した半導体装置１における１サイクルの時間の３分の１にまで減少させることができる。
【００８８】
図１１の半導体装置１’では、演算器１０Ａ〜Ｉがパイプライン式に演算を行うため、１つのデータ処理を行うのに要するサイクル数は、図１で説明した半導体装置１の３倍となり、１つのデータ処理を行うのに要する時間は変わらない。しかしながら、２つのデータ処理を連続してパイプライン式に行うのに要するサイクル数は、１つのデータ処理を行うのに要するサイクル数より１つ大きいだけである。このように、２つ以上のデータ処理を連続して実行する場合には、図１１の半導体装置１’は、図１の半導体装置１よりも高い性能が得られる。
【００８９】
一方、図１１の半導体装置１’では、図１の半導体装置１と比べて、挿入される記憶素子（タイミングラッチ）の分だけ面積が大きくなるため、半導体装置に求められる性能や面積の要求に応じて、適切な実施の形態を用いる必要がある。
【００９０】
このように、本実施の形態にかかる半導体装置によれば、リコンフィギュラブル回路により演算された結果を、別のリコンフィギャラブル回路がメモリから回路情報を読み出す際のアドレスとして利用することができ、複数のリコンフィギュラブル回路で各々異なる演算結果を条件として条件実行を行う仕組みを従来よりも少ないリコンフィギュラブル回路を利用するだけで実現できるので、より多くの条件実行を並列に実行できるようになり、リコンフィギュラブル回路における条件実行をより高速に行うことが可能となる。
【産業上の利用可能性】
【００９１】
本発明は、演算処理を行う全ての半導体装置に有用である。
【図面の簡単な説明】
【００９２】
【図１】本実施の形態にかかる半導体装置の構成を示すブロック図である。
【図２】演算器の動作を示すフローチャートである。
【図３】演算器の構成を示すブロック図である。
【図４】メモリに記憶されている直接命令アドレスバスの値であるアドレスとそれに対応する出力値の一例を示す図である。
【図５】回路情報記憶部に格納される回路情報の構造の一例を示す図である。
【図６】演算部の構成の一例を示すブロック図である。
【図７】メモリに記憶されている命令アドレス決定部から出力される値であるアドレスとそれに対応する出力値の一例を示す図である。
【図８】コントローラの構成を示すブロック図である。
【図９】プログラムコードメモリに格納されるプログラムコードの構造例を示した図である。
【図１０】半導体装置が演算を行う際の動作を説明する図である。
【図１１】半導体装置の変形例の構成を示すブロック図である。
【図１２】コントローラの変形例の構成を示すブロック図である。
【符号の説明】
【００９３】
１、１’  半導体装置
２  外部装置
１０Ａ、１０Ｂ、１０Ｃ、１０Ｄ、１０Ｅ、１０Ｆ、１０Ｇ、１０Ｈ、１０Ｉ  演算器
１１、１１’  コントローラ
１１Ａ  制御部
１１Ｂ  プログラムコードメモリ
１１Ｃ  プログラムカウンタ
１１Ｄ、１５  タイミングラッチ  
１２  データメモリ
１３  直接命令アドレスバス
１４  間接命令アドレスバス
１００  命令アドレス決定部
１０１  回路情報記憶部
１０２  演算部
１０３  間接命令アドレス出力部
１００１、１０３０  メモリ
１００２、１０２０、１０２１、１０２２、１０２３  セレクタ
１０２４  加算器
１０２５  減算器
１０２６  シフタ
１０２７  選択器
【図１】
2010117806.tif 000003
【図２】
2010117806.tif 000004
【図３】
2010117806.tif 000005
【図４】
2010117806.tif 000006
【図５】
2010117806.tif 000007
【図６】
2010117806.tif 000008
【図７】
2010117806.tif 000009
【図８】
2010117806.tif 000010
【図９】
2010117806.tif 000011
【図１０】
2010117806.tif 000012
【図１１】
2010117806.tif 000013
【図１２】
2010117806.tif 000014