(57)【特許請求の範囲】
【請求項１】
１以上の演算を含む複数の演算処理を実行する演算装置と、前記演算装置を制御する制
御装置とを備える半導体装置であって、
前記制御装置は、前記演算装置が実行中の演算処理の次に実行する演算処理と、前記演
算装置が実行中の演算処理の次に実行する演算処理を実行するタイミングとを決定するた
めの第１装置制御情報を記憶する第１記憶部を備え、
前記演算装置は、演算処理に含まれる演算の内容を決定するための第２装置制御情報を
記憶する第２記憶部を備え、
前記制御装置は、前記第１記憶部から前記第１装置制御情報を読み出し、演算処理ごと
に定められた、前記演算装置が実行中の演算処理の次に実行する演算処理を決定可能な条
件である決定開始条件が、満たされたか否かを、前記第１装置制御情報を用いて判定する
処理、前記決定開始条件が満たされた場合に、前記演算装置が実行中の演算処理の次に実
行する演算処理を、前記第１装置制御情報を用いて決定し、前記演算装置が実行中の演算
処理の次に実行する演算処理を識別するための識別情報を前記演算装置へ出力する処理、
および、演算処理ごとに定められた、前記演算装置が次に実行する演算処理を実行可能な
条件である処理開始条件が、満たされたか否かを判定し、前記処理開始条件が満たされた
場合に、前記演算処理の開始を前記演算装置に指示する処理、を含み、演算処理と並列に
実行しうる分岐制御処理を実行し、
前記演算装置は、前記第２記憶部から前記識別情報に対応する第２装置制御情報を読み
出し、前記識別情報によって識別される演算処理に含まれる演算の内容を前記第２装置制
御情報を用いて決定し、前記制御装置から前記演算処理の開始が指示されたときに、前記
識別情報によって識別される演算処理に含まれる演算の内容の実行を開始し、
前記第２装置制御情報は、複数の演算処理のうちの第１演算処理に含まれる予め定めら
れた第１演算の実行が完了したことを表す第１完了情報と、複数の前記演算処理のうち予
め定められた第２演算処理に含まれる予め定められた第２演算の実行が完了したことを表
す第２完了情報と、をさらに含み、
前記演算装置は、前記第１演算を実行したときに前記第１完了情報を出力し、前記第２
演算を実行したときに前記第２完了情報を出力し、
前記制御装置は、前記第１完了情報が出力された場合に、前記第１演算処理の次に実行
する演算処理を決定して前記演算装置に指示し、前記第２完了情報が出力された場合に、
実行する前記演算処理の開始を前記演算装置に指示すること、
を特徴とする半導体装置。
【請求項２】
前記制御装置は、前記第１完了情報が出力されたか否かを表す前記決定開始条件に基づ
いて、前記第１完了情報が出力されたか否かを判定し、前記第１完了情報が出力されたと
判定した場合に、前記第１演算処理の次に実行する演算処理を決定して前記演算装置に指
示すること、
を特徴とする請求項１に記載の半導体装置。
【請求項３】
前記制御装置は、前記第２完了情報が出力されたか否かを表す前記処理開始条件に基づ
いて、前記第２完了情報が出力されたか否かを判定し、前記第２完了情報が出力されたと
判定した場合に、実行する前記演算処理の開始を前記演算装置に指示すること、
を特徴とする請求項１に記載の半導体装置。
【請求項４】
前記演算装置は複数備えられ、
前記制御装置は、現在実行中の演算処理の次に実行する演算処理と決定した演算処理を
、複数の前記演算装置のいずれかに指示すること、
を特徴とする請求項１に記載の半導体装置。
【請求項５】
前記演算装置は、前記制御装置から出力された１つ以上の識別情報を一時的に記憶する
ためのキューをさらに備え、
前記演算装置が実行中の演算処理の次に実行する演算処理は、前記演算装置が、前記キ
ューに記憶された演算処理を実行したあとに実行する演算処理であることを特徴とする請
求項１に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、半導体装置に関する。
【背景技術】
【０００２】
ハードウェア構成に依存せずにシーケンス処理を実現するために、特許文献１では、実行中の処理の単位（単位プログラム）に対して、予め指定した次に実行する可能性のある複数の単位プログラムの内の１つを条件分岐制御により選択し、実行する情報処理装置が提案されている。【０００３】
このような情報処理装置は、予め指定されたプログラムに従い処理を実行するプログラム可能な演算装置と、次に実行すべき処理を決定する制御装置と、演算装置に供給する設定データを保持する記憶装置を備える。ある処理の次に実行する処理とその処理を実行する条件については所定のプログラムにより規定され、条件分岐を決定する情報は演算装置が処理を実行することにより生成される。プログラムの切り替えタイミングに対応するタイミングで次に実行すべき設定データが出力される。制御装置は、演算装置から出力される条件分岐を決定する情報に従い、次の処理を判定し、記憶装置から次の処理を実行する設定データを演算装置に出力する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１８７４７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の方法では、分岐する処理の決定と、決定した処理の実行の開始とが同じタイミングで行われる。そのため、次処理を決定可能な状態となっても、前の処理が完了するまで次処理の実行はできず、効率的に並列処理を行うことが困難となる問題があった。【０００６】
本発明の一観点は、上記に鑑みてなされたものであって、分岐処理を含む処理をより効率的に実行することができる半導体装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一観点は、１以上の演算を含む複数の演算処理を実行する演算装置と、前記演算装置を制御する制御装置とを備える半導体装置であって、前記演算装置は、前記制御装置から指示された演算処理を、前記制御装置から開始が指示されたときに開始し、前記制御装置は、演算処理ごとに定められた、前記演算装置が実行中の演算処理の次に実行する演算処理を決定可能な条件である決定開始条件が、満たされたか否かを判定し、前記決定開始条件が満たされた場合に、前記演算装置が実行中の演算処理の次に実行する演算処理を決定して前記演算装置に指示し、演算処理ごとに定められた、前記演算処理が次に実行する演算処理を実行可能な条件である処理開始条件が、満たされたか否かを判定し、前記処理開始条件が満たされた場合に、前記演算処理の開始を前記演算装置に指示することを特徴とする。
【発明の効果】
【０００８】
本発明の一観点によれば、分岐処理を含む処理をより効率的に実行することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１−１】図１−１は、本実施の形態に係る半導体装置の構成例を示すブロック図である。
【図１−２】図１−２は、複数の演算装置を備える場合の半導体装置の構成例を示すブロック図である。
【図２−１】図２−１は、本実施の形態に係る半導体装置の構成の一例を示すブロック図である。
【図２−２】図２−２は、本実施の形態の変形例に係る半導体装置の構成の一例を示すブロック図である。
【図３−１】図３−１は、第１装置制御情報のデータ構造の一例を示す図である。
【図３−２】図３−２は、第１装置制御情報のデータ構造の別の一例を示す図である。
【図４−１】図４−１は、第２装置制御情報のデータ構造の一例を示す図である。
【図４−２】図４−２は、第２装置制御情報のデータ構造の一例を示す図である。
【図４−３】図４−３は、第２装置制御情報のデータ構造の一例を示す図である。
【図４−４】図４−４は、第２装置制御情報のデータ構造の一例を示す図である。
【図５−１】図５−１は、制御装置の決定回路および開始制御回路のより詳細な構成の一例を示すブロック図である。
【図５−２】図５−２は、制御装置の決定回路および開始制御回路のより詳細な構成の一例を示すブロック図である。
【図６−１】図６−１は、演算装置の演算制御回路のより詳細な構成の一例を示すブロック図である。
【図６−２】図６−２は、演算装置の演算制御回路のより詳細な構成の一例を示すブロック図である。
【図７】図７は、演算装置の実行回路のより詳細な構成の一例を示すブロック図である。
【図８】図８は、図７の構成で用いる演算制御情報の一例を示す図である。
【図９】図９は、図７と異なる構成の実行回路を含む演算装置の詳細な構成の一例を示すブロック図である。
【図１０】図１０は、処理情報記憶装置に記憶される処理情報のデータ構造の一例を示す図である。
【図１１】図１１は、定数情報記憶装置に記憶される定数情報のデータ構造の一例を示す図である。
【図１２】図１２は、図９の構成で用いる演算制御情報の一例を示す図である。
【図１３】図１３は、図７および図９と異なる演算装置の詳細な構成の一例を示すブロック図である。
【図１４】図１４は、図１３の構成で用いる演算制御情報の一例を示す図である。
【図１５】図１５は、本実施の形態の変形例２に係る半導体装置の構成の一例を示すブロック図である。
【図１６】図１６は、図１５の変形例２の制御装置のより詳細なブロック図である。
【図１７】図１７は、図１５の変形例２の演算装置のより詳細なブロック図である。
【図１８】図１８は、本実施の形態における制御装置の動作全体の流れを示すフローチャートである。
【図１９】図１９は、本実施の形態における演算装置の動作全体の流れを示すフローチャートである。
【図２０】図２０は、実行するプログラムの一例を示す図である。
【図２１】図２１は、図２０のプログラムを実行するための第１装置制御情報を表す図である。
【図２２】図２２は、図２０のプログラムを実行するための第２装置制御情報を表す図である。
【図２３】図２３は、図２０のプログラムを従来の汎用プロセッサで処理した場合のタイミングチャートを示す図である。
【図２４】図２４は、図２０のプログラムを、演算装置を１つ備える半導体装置で処理した場合のタイミングチャートを示す図である。
【図２５】図２５は、図２０のプログラムを、演算装置を２つ備える半導体装置で処理した場合のタイミングチャートを示す図である。
【図２６】図２６は、図２０のプログラムが図２５のように動作する場合の第１装置制御情報の例を示した図である。
【図２７】図２７は、ハードウェアによる制御により振り分ける場合の半導体装置の構成例を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、この発明にかかる半導体装置の好適な実施の形態を詳細に説明する。
【００１１】
本実施の形態にかかる半導体装置は、１個以上の命令（演算）を含む複数の演算処理を実行する演算装置と、演算装置による演算処理を制御する制御装置とを含む。各演算処理は、例えばあるプログラムに含まれる演算のうち、条件分岐が発生せずに逐次的に実行できる複数の演算をまとめた処理単位である。条件分岐に相当する処理であっても逐次的に実行できれば処理単位に含めてもよい。例えば、ある演算の結果から複数の信号のうち１つを選択するような処理は逐次的に実行可能であるため、処理単位に含めることができる。本実施の形態では、処理単位である演算処理に含まれるすべての演算の実行が完了する前であっても、条件分岐の判断に必要な情報が得られたときにその情報を演算装置から制御装置に出力する。そして、制御装置は、この情報を参照して条件分岐制御を行う。これにより、制御装置による分岐演算（条件分岐制御のための演算）と、演算装置による演算処理とを並列に実行できる。すなわち、分岐処理を含む処理をより効率的に実行することが可能となる。
【００１２】
（全体の概要）
図１−１は、本実施の形態に係る半導体装置１の構成例を示すブロック図である。図１−１に示すように、本実施の形態に係る半導体装置１は、制御装置１００と、演算装置２００と、記憶装置３００とを備えている。
【００１３】
制御装置１００は、処理実行開始の制御を行う。演算装置２００は、記憶装置３００に保持される情報に対して制御装置１００により指示された演算処理を実行する。記憶装置３００は、制御装置１００と演算装置２００とが参照する各種情報を保持する。半導体装置１は、外部からのクロック信号に同期して動作する。
【００１４】
（演算処理の制御）
制御装置１００は、条件分岐制御に用いる情報である分岐制御情報を記憶装置３００から入力し、演算装置２００が実行する演算処理と、当該演算処理を開始可能な条件とを決定し、実行する演算処理を一意に識別する識別情報を含む処理制御情報を演算装置２００に対して出力する。
【００１５】
識別情報は、演算装置２００が実行する演算処理を特定できれば特に形態は問わない。例えば、０以上の整数（自然数）を各演算処理に割り当てて識別情報として用いても良い。また、数値および文字列を含む識別情報を用いても良い。また、例えば、演算処理の中で実行する命令を保持するメモリのアドレスポインタであってもよいし、メモリのアドレスポインタと１対１に対応する識別子でもよい。また、より具体的に１つ以上の命令を含む情報で構成してもよい。
【００１６】
演算装置２００は、処理制御情報を制御装置１００から入力し、演算処理の対象となる情報である処理対象情報を記憶装置３００から入力し、処理制御情報にしたがって、処理制御情報に含まれる識別情報で識別される演算処理を実行し、処理結果を記憶装置３００に出力する。
【００１７】
なお、図１−１には１つの演算装置２００のみを記載しているが、半導体装置１が複数の演算装置２００を備えてもよい。図１−２は、複数の演算装置２００ａおよび２００ｂを備える場合の半導体装置１−２の構成例を示すブロック図である。また、演算装置２００が、記憶装置３００以外の記憶装置を備えてもよい。例えば、外部システムメモリのような外部記憶装置や、各演算装置２００専用のローカルメモリのような専用記憶装置などを備えてもよい。演算装置２００が記憶装置３００以外の記憶装置を備える場合は、処理対象情報の入出力は記憶装置３００でなくともよい。
【００１８】
演算装置２００は、処理制御情報に含まれる識別情報で識別される演算処理を実行する装置なら特に形態は問わない。例えば、構成情報が示す処理を行うリコンフィギャラブル回路でも良いし、プログラムが示す処理を行うプロセッサであっても良い。ただし、演算装置２００が実行する演算処理は、制御装置１００から入力された処理制御情報に含まれる識別情報により一意に定まる。例えば、同一の処理制御情報が入力される場合は同一の演算処理を実行し、通常のプロセッサの条件分岐等の機能はサポートせず、実行する演算処理は入力情報や内部状態等に影響されないことを前提とする。この前提により、演算処理ごとの演算装置２００の動作時間、動作タイミングを一意に決定することができるため、演算処理のスケジュールが容易となる。特に、半導体装置１が複数の演算装置２００を備える場合は、複数の演算装置２００間でのデータ共有およびデータ転送などの同期処理などの制御が容易となる。
【００１９】
記憶装置３００は、演算装置２００が演算処理を施す対象である処理対象情報と、制御装置１００が条件分岐制御に用いる分岐制御情報を保持する。記憶装置３００は、１つ以上の演算装置２００と、制御装置１００とで処理対象情報を共有することができる構造をとる。例えば、記憶装置３００としてマルチポートのメモリを用いても良い。また、演算装置２００および制御装置１００それぞれに対して専用のメモリを用意し、処理対象情報を共有するための制御装置を別途用意しても良い。
【００２０】
（タイミングの制御）
制御装置１００は、制御装置１００の動作を制御するための予め設定された第１装置制御情報に従い制御を行う。第１装置制御情報は、演算処理を実行開始可能な条件（処理開始条件）と、演算処理の次の演算処理（以下、次処理という）の決定処理が実行開始可能な条件（決定開始条件）と、次処理を決定する条件（決定条件）と、決定条件による判定結果ごとの次処理を示す情報（次処理候補情報）と、を含む。第１装置制御情報の詳細については後述する。
【００２１】
制御装置１００は、決定開始条件と、演算装置２００や記憶装置３００から入力される情報（第１完了情報、詳細は後述）とに従い、次処理を決定するタイミングを判定する。決定開始条件を満たす場合、制御装置１００は、記憶装置３００から入力される分岐制御情報を用いて決定条件を判定する。そして、制御装置１００は、決定条件により判定された次処理の識別情報を生成し、適切なタイミングで演算装置２００に出力する。
【００２２】
条件判定後、制御装置１００は、決定された次処理の識別情報に対応する処理開始条件を判定し、演算の実行を開始するか否かを表す開始制御情報を生成して演算装置２００に出力する。まず、制御装置１００は、処理開始条件と、演算装置２００から入力される情報（第２完了情報、詳細は後述）と、に従い、識別情報が示す演算処理の実行開始タイミングを判定する。処理開始条件を満たす場合、制御装置１００は、実行開始可能であることを表す開始制御情報を生成して演算装置２００に出力する。処理開始条件を満たさない場合、制御装置１００は、実行開始不可であることを表す開始制御情報を生成し、演算装置２００に出力する。
【００２３】
また、制御装置１００は、次処理を決定する処理（以下、決定処理という）が完了後、更に次に実行する演算処理を決定するための決定処理を実行する。更に次に実行する演算処理を決定するための決定処理は、識別情報が示す演算処理に対する第１装置制御情報を用いることで同様に実行することができる。この決定処理を実行するタイミングは、識別情報を生成した後でも良いし、識別情報を生成し、更に処理開始条件を満たし、処理実行可能である旨の開始制御情報を生成した後でもよい。
【００２４】
演算装置２００は、制御装置１００から入力される識別情報が示す演算処理を実行する。演算処理を開始するタイミングは開始制御情報により制御される。次処理が決定していても、開始制御情報により次処理の実行が許可されていない場合は、決定された次処理を実行することはできない。ただし、次処理の実行に必要な準備を行うことは可能である。例えば、リコンフィギャラブル回路の場合は、識別情報が示す演算処理の構成情報を予め演算装置２００に設定するように構成してもよい。これにより、演算処理開始時の設定に関するオーバヘッドを削減することができる。また、キャッシュを備えた演算装置２００の場合、演算処理に必要な設定情報を予めキャッシュにプリフェッチするように構成してもよい。これにより実行中のキャッシュミスを回避することができ、パフォーマンスの向上が期待できる。このように、実行開始前に次処理の準備を行うことにより全体のパフォーマンスを向上することができる。
【００２５】
また、制御装置１００と演算装置２００との間、または、制御装置１００および演算装置２００の少なくとも一方の内部に、識別情報および開始制御情報を保持するための記憶装置（図示せず）を備えてもよい。このような構成により、制御装置１００は、次に実行する１つの演算処理のみだけでなく、その後に実行する複数の演算処理それぞれに対応する複数の処理制御情報を生成することができるようになる。また、演算装置２００は、今後実行すべき複数の演算処理が確定した状態となるため、効率的に演算処理の準備を行うことができる。特に、複数の演算装置２００を備える構成の場合には、１つの演算装置２００に対して、同一または類似した演算処理を割り当てることで制御の効率化を図ることが可能となる。
【００２６】
（装置構成の概要）
図２−１は、本実施の形態に係る半導体装置１の構成の一例を示すブロック図である。最初に、制御装置１００の各構成部の機能について説明する。図２−１に示すように、制御装置１００は、次処理を決定する決定回路１０１と、演算装置２００が演算処理を開始するタイミングを制御する開始制御回路１０２と、第１装置制御情報を保持する記憶装置１０３と、を備える。
【００２７】
決定回路１０１は、第１完了情報を演算装置２００から入力し、分岐制御情報を記憶装置３００から入力し、第１装置制御情報を記憶装置１０３から入力する。第１完了情報とは、演算装置２００により特定の演算処理に含まれる特定の演算の実行が完了したことを表す情報である。本実施の形態では、条件分岐制御に必要な情報を出力する予め定められた演算の実行が完了したことを表す情報を第１完了情報として用いる。
【００２８】
例えば、第１完了情報は、演算処理の決定に必要な情報を記憶装置３００に書き込んだことを示す割り込み信号でも良いし、演算処理に含まれる個々の命令（演算）のうち特定の演算が完了したことを通知する割込み信号でも良い。また、記憶装置３００に情報を書き込む際のアドレス情報でも良い。
【００２９】
なお、第１完了情報を演算装置２００から入力する代わりに、記憶装置３００から入力するように構成しても良い。図２−２は、このように構成した本実施の形態の変形例１に係る半導体装置１の構成の一例を示すブロック図である。本変形例では、演算制御回路２０１−２が第１完了情報を記憶装置３００−２に保存し、決定回路１０１−２が記憶装置３００−２から第１完了情報を入力する点が、図２−１の構成と異なっている。その他の構成は図２−１と同様であるため同一の符号を付し説明を省略する。特に、書き込まれたアドレス情報を通知する場合には、本変形例のように記憶装置３００から第１完了情報を入力することにより制御が単純化できる。
【００３０】
図２−１に戻り、決定回路１０１は、第１装置制御情報に含まれる決定開始条件、決定条件および処理開始条件と、分岐制御情報とから、次処理の識別情報と処理開始条件を含む開始条件情報とを生成する。そして、決定回路１０１は、識別情報を演算装置２００に出力し、開始条件情報を開始制御回路１０２に出力する。
【００３１】
開始条件情報に含まれる処理開始条件は、演算処理の実行開始の可否を判定する条件である。例えば、処理開始条件は、演算装置２００または記憶装置３００から特定の割込み信号または情報が入力されたか否かを判定する条件を表す。なお、識別情報により演算装置２００が実行する演算処理が一意に定まるため、識別情報ごとに演算処理全体の実行サイクル数や特定の情報が生成されるまでのサイクル数も特定できる。したがって、処理開始条件が、特定した演算処理開始までの待機時間（サイクル数）が経過したかを判定する条件を表すように構成してもよい。
【００３２】
決定回路１０１は、決定開始条件を満たした場合に決定条件に従い次処理を決定する決定処理を実行し、決定開始条件を満たさない場合は決定処理を行わない。決定回路１０１は、第１完了情報が決定開始条件を満たすか否かにより判定を行う。例えば、決定開始条件がある割込みフラグの入力である場合、決定回路１０１は、演算装置２００から該当する割込みフラグが入力されたら決定処理を実行する。決定回路１０１は、決定処理では、決定条件により次処理を決定する。次処理が決定すると、決定回路１０１は、次処理の処理開始条件を含む開始条件情報を生成して開始制御回路１０２に出力する。また、決定回路１０１は、決定した次処理に対応する第１装置制御情報を記憶装置１０３から読出し、更に次処理の次の処理の決定処理を行う。
【００３３】
開始制御回路１０２は、開始条件情報を決定回路１０１から入力し、第２完了情報を演算装置２００から入力する。第２完了情報は、第１完了情報と同様に、演算装置２００により特定の演算処理に含まれる特定の演算の実行が完了したことを表す情報である。本実施の形態では、他の演算処理に必要な情報を出力する予め定められた演算の実行が完了したことを表す情報を第２完了情報として用いる。言い換えると、第２完了情報は、ある演算処理と、当該演算処理の出力結果を用いる他の演算処理との同期を取るために利用する情報である。
【００３４】
開始制御回路１０２は、開始条件情報と第２完了情報とから、演算処理の実行が開始できるか否かを判断し、結果を表す開始制御情報を出力する。例えば、開始制御回路１０２は、第２完了情報により内部状態を遷移し、内部状態が開始条件情報に含まれる処理開始条件を満たす場合に、演算処理が実行開始可能であることを表す開始制御情報を生成する。また、開始制御回路１０２は、内部状態が処理開始条件を満たさない場合に実行開始不可であることを表す開始制御情報を生成する。そして、開始制御回路１０２は、生成した開始制御情報を演算装置２００に出力する。
【００３５】
開始制御回路１０２による実行開始可否の判断方法は上記に限られず、開始条件情報に含まれる処理開始条件に応じてあらゆる方法を用いることができる。例えば、処理開始条件が、サイクル数が経過したかを判定する条件を表す場合、開始制御回路１０２は、サイクル数のカウンタの値が一定値に達した時点で実行開始許可を示す開始制御情報を出力すればよい。また、処理開始条件が、演算装置２００または記憶装置３００から特定の割込み信号が入力されるまで待機するという条件を表す場合、開始制御回路１０２は、この割込み信号が入力された時点で実行開始許可を示す開始制御情報を出力すればよい。
【００３６】
記憶装置１０３は、第１装置制御情報を保持する。記憶装置１０３は、決定回路１０１から要求を受けると、決定回路１０１に対して第１装置制御情報を出力する。
【００３７】
ここで、第１装置制御情報の詳細について説明する。第１装置制御情報は、現在実行している演算処理に対して、次処理と次処理を実行するタイミングとを制御装置１００が決定できれば特に形態は問わない。図３−１は、第１装置制御情報のデータ構造の一例を示す図である。
【００３８】
図３−１に示すように、第１装置制御情報は、現在実行中の演算処理（現処理）に対して、処理開始条件と、決定開始条件と、決定条件と、次処理候補情報とを含む。図３−１では、決定条件による判定結果が真のときの演算処理の識別情報（１）、および、偽のときの演算処理の識別情報（２）が次処理候補情報として設定される例が示されている。
【００３９】
なお、第１装置制御情報が処理制御に関するその他の情報を含んでも良い。例えば、第１装置制御情報が、次処理を候補から確定する条件を含んでも良い。また、図３−１では省略しているが、記憶装置１０３は、すべての演算処理が完了したことを示す情報を含む第１装置制御情報を記憶する。例えば、最後に実行する演算処理の次処理候補情報に、すべての演算処理の完了を示す情報を設定する。
【００４０】
図３−１の例では、現処理および次処理をそれぞれ識別情報で示しているが、演算処理の内容自体を記載してもよい。また、演算処理の内容を保持する記憶装置２０３のアドレスポインタを記載してもよい。識別情報を用いる場合は、第１装置制御情報をメモリに保持する場合に第１装置制御情報の読出しが容易となる。また、アドレスポインタを用いる場合は、演算装置２００内部での演算処理への変換が容易となる。
【００４１】
また、図３−１の例では、処理開始条件および決定開始条件として、「ｆｌａｇ１」などのように特定のフラグが入力されたことを表す条件が示されている。各条件の指定方法はこれに限られず、演算処理または決定処理を開始する条件を示せれば形態は問わない。例えば、「３サイクル待機」のように具体的な待機サイクル数で指定してもよいし、「ｃ＝＝０」のように特定の情報が特定の値域になる条件を指定してもよい。特定の情報は、演算装置２００から入力される情報（第１完了情報、第２完了情報等）でもよいし、記憶装置３００に保持される情報でもよい。
【００４２】
また、図３−１の例では、決定条件として、「ｃ＝＝０」のように真偽の２通りの判定結果を取る条件を指定しているが、適用できる条件はこれに限られるものではない。例えば、（ａ＜ｂ）＆＆（ｃ＜ｄ）の真偽判定による２通りの判定や、（ａ＜ｂ）の結果と（ｃ＜ｄ）の結果の組合せた４通りの判定などのように複数の条件比較を用いても構わない。また、３個以上の判定結果を取る条件でもよい。その場合は、判定結果それぞれに対応する次処理も、判定結果の個数分用意する必要がある。例えば、「ｘ＆０ｘ７」のような条件の場合は、判定結果に対応する次処理は８つ用意する必要がある。このような条件を用いれば、より柔軟な条件判定が可能となる。また、図３−１の例のように特定のフラグの入力を待つような条件を用いる場合は、判定回路の単純化、および、判定処理の高速化が可能となる。
【００４３】
ここで、記憶装置３００が記憶する分岐制御情報の詳細について説明する。分岐制御情報は、決定条件の指定方法に応じて様々な構成をとることができる。「Ｃ＝＝０」や「Ｘ＜０」のような演算を伴う決定条件の場合は、例えば演算に用いる変数（Ｃ、Ｘなど）を記憶するアドレスとして指定されたアドレス、または、当該変数を分岐制御情報とすることができる。また、「ｆｌａｇＡ」のような特定のフラグの有無などを判定する決定条件の場合は、情報そのものではなく、１つ以上の割込み信号等のフラグを示す信号を分岐制御情報としてもよい。また、記憶装置３００の特定のアドレスにフラグの有無を示す情報を格納し、制御装置１００が当該アドレスの値の判定（例えば非ゼロ判定）により条件分岐を行うように構成してもよい。
【００４４】
また、実行すべき処理が常に一意に定められており、条件を判定する必要がない場合は、処理開始条件、決定開始条件、および決定条件を、真および偽のいずれかを用いて表現しても良い。例えば、常に演算処理を実行可能な場合は処理開始条件に「真（ｔｒｕｅ）」を登録し、演算処理が常に実行不可な場合は処理開始条件に「偽（ｆａｌｓｅ）」を登録すれば良い。また、常に決定処理を実行可能な場合は決定開始条件に「真」を登録し、決定処理が常に実行不可な場合は決定開始条件に「偽」を登録すれば良い。また、常に次処理が１つの演算処理に定まっている場合は、決定条件を「真」として、真を示す判定結果に当該演算処理を登録するか、全ての判定結果に当該演算処理を登録すれば良い。
【００４５】
なお、一意に定まる処理を実行することを示す方法はこれらに限られるものではないが、上記のような方法であれば、条件判定の有無に関わらず同一のフォーマットで表現可能であるため、フォーマットを解釈する回路を簡略化できる。
【００４６】
図３−２は、第１装置制御情報のデータ構造の別の一例を示す図である。図３−２の第１装置制御情報の構成は、処理開始条件のみが図３−１の構成と異なる。図３−２の第１装置制御情報は、処理開始条件として、現処理の処理開始条件ではなく、次処理の処理開始条件が登録される。これにより次処理の候補ごとに処理開始条件を示す必要があるため、情報量は増大するが、演算処理の前後関係により処理開始条件が異なる場合には制御が容易となる。また、次処理が決定後、新しい第１装置制御情報を読み込む前に処理開始条件が決定する点でも制御の単純化に貢献できる。
【００４７】
図２−１に戻り、次に演算装置２００の各構成部の機能について説明する。図２−１に示すように、演算装置２００は、制御装置１００から入力された識別情報および開始制御情報に従い、演算処理の実行を制御する演算制御回路２０１と、記憶装置３００から入力した処理対象情報に対して演算処理を実行する実行回路２０２と、演算処理に必要な情報を保持する記憶装置２０３と、を備える。
【００４８】
記憶装置２０３は、演算制御回路２０１からの要求に従い、識別情報が示す演算処理に対応する第２装置制御情報を演算制御回路２０１に出力する。記憶装置２０３は、演算処理開始前に予め演算処理に必要な第２装置制御情報が入力される。演算処理実行中に外部から記憶装置２０３に第２装置制御情報を入力してもよい。また、識別情報が１つ以上の命令を含む構成の場合には記憶装置２０３は備えなくても良い。
【００４９】
演算制御回路２０１は、識別情報と開始制御情報とを制御装置１００から入力し、識別情報が示す演算処理を、開始制御情報が示すタイミングで実行するように制御する。また演算制御回路２０１は、演算処理に含まれる各演算の実行を制御するための演算制御情報を生成し、実行回路２０２に出力する。
【００５０】
演算制御回路２０１は、記憶装置２０３から、入力された識別情報に対応する第２装置制御情報を読み出す。第２装置制御情報は、識別情報で識別される演算処理に含まれる各演算の内容等を定めた情報である。なお、識別情報が１つ以上の命令を含む構成の場合、実行する命令が識別情報に含まれているため、記憶装置２０３から第２装置制御情報を読み出す必要はない。
【００５１】
識別情報が記憶装置２０３のアドレスである場合、演算制御回路２０１は、当該アドレスから第２装置制御情報を読み出す。演算制御回路２０１は、読み出した第２装置制御情報から生成した演算制御情報を実行回路２０２に出力する。その後、演算制御回路２０１は、記憶装置２０３の次の第２装置制御情報を保持するアドレスから第２装置制御情報を読み出す。次の第２装置制御情報のアドレスは、例えば識別情報として指定されたアドレスの次のアドレスとして特定する。第２装置制御情報内に次の第２装置制御情報のアドレスを特定できる情報を備えていても良い。以上の処理を、演算完了を示す情報を含む第２装置制御情報を読み込むまで繰り返す。
【００５２】
図４−１〜図４−４は、記憶装置２０３に保持される第２装置制御情報のデータ構造の一例を示す図である。図４−１の例では、第２装置制御情報は、演算処理の識別情報と、実行回路２０２が実行する命令と、処理開始条件の判定に用いられる第２完了情報と、決定開始条件の判定に用いられる第１完了情報と、演算処理に含まれるすべての演算が完了したか否かを示す情報（演算完了）と、を含む。
【００５３】
なお、第２装置制御情報の各行は、１つの演算処理に含まれる１つの演算に対応する。１つの演算処理が複数の演算を含む場合は、実行する順序で各演算を上から記載する。図４−１では、２番目以降に実行する演算の識別情報に「−」を設定する例が示されている。演算完了は、１つの演算処理に含まれる演算のうち、後に実行する演算が存在しない演算に対して「Ｙｅｓ」が設定される。後に実行する演算が存在する場合は、演算完了に「Ｎｏ」を設定する。
【００５４】
演算装置２００は、制御装置１００から入力された処理制御情報に含まれる識別情報で識別される演算処理を逐次的に実行する場合、識別情報が一致する命令から最も近い演算完了を示す命令までを順番に実行する。
【００５５】
図４−１では、識別情報として数値を用いる例が示されている。上述のように、識別情報としてアドレスポインタを用いてもよい。図４−２は、識別情報としてアドレスポインタを用いる場合の第２装置制御情報のデータ構造の例を示している。
【００５６】
数値を識別情報として用いる場合は、少ない情報量で演算処理の特定を行うことが可能である。一方、アドレスポインタを用いる場合は、特定の演算処理の途中の演算から開始するといった柔軟な指定が可能となる。
【００５７】
命令（演算）は、演算装置２００の構成により大きく異なる。図４−１等の例では命令として算術演算が示されているが、演算装置２００が外部メモリのコントローラの場合は、ロードストア等の命令が登録されても良い。また、演算装置２００が動的再構成可能なデバイスのように命令が複雑な回路の場合は、命令の代わりにコンフィギュレーションＩＤなどの識別子を用いても良い。
【００５８】
第２完了情報および第１完了情報は、制御装置１００に対して出力するフラグを示しているが、それぞれ処理開始条件および決定開始条件による判定で利用できる情報であれば形態は問わない。例えば、フラグではなく特定の値を指定してもよいし、特定のアドレスと値の組を指定してもよい。また、第２完了情報および第１完了情報がいずれも同じ構造の場合（例えば図４−１、４−２のようにフラグで表される場合）は、第２装置制御情報内で区別する必要はない。例えば、第２装置制御情報が１つの「完了情報」を含むように構成してもよい。この場合は、演算制御回路２０１は、第１完了情報と第２完了情報とを区別せずに「完了情報」として送信し、制御装置１００内の決定回路１０１および開始制御回路１０２がそれぞれ受信した「完了情報」を用いて条件を判定する。
【００５９】
演算処理に含まれるすべての演算が完了したか否かを示す情報は、図４−１および図４−２のような情報（演算完了）に限られるものではない。例えば、識別情報により識別される演算処理の最初の演算に対して実行命令数を付加してもよい。この場合、演算制御回路２０１は、実行命令数分の演算を実行したときに、すべての演算が完了したと判断する。また、図４−３のように、命令の欄に「ＨＡＬＴ」等の処理の完了を示す命令を登録してもよい。
【００６０】
また、図４−１〜図４−３の第２装置制御情報は、制御装置１００からの制御信号（開始制御情報）によりタイミング制御が行われる場合の構成例を示している。制御装置１００内部で静的にタイミング制御を行う場合は、第１完了情報および第２完了情報が不要となるため、図４−４に示すように、第２装置制御情報が識別情報と命令と演算完了とを含むように構成しても良い。
【００６１】
図２−１に戻り、演算制御回路２０１は、制御装置１００から入力される開始制御情報に従い、指定された演算処理が実行開始可能な状態になるまで待機し、実行開始可能な状態になった場合に、第２装置制御情報から演算制御情報を生成し、生成した演算制御情報を実行回路２０２に出力する。演算制御情報は、例えば、図４−１のような第２装置制御情報の各行の命令を含む。
【００６２】
演算制御回路２０１は、逐次的に演算を実行するため、処理実行可能な状態の間は連続的に第２装置制御情報を読み出し、読み出した第２装置制御情報に定められた命令を含む演算制御情報を実行回路２０２に出力する。読み出した第２装置制御情報が演算完了を示す情報（演算完了＝「Ｙｅｓ」など）を含む場合は演算処理を完了し、状態を処理実行停止状態に遷移する。
【００６３】
演算制御回路２０１は、実行回路２０２に演算制御情報を出力するとともに、自身や別の演算装置２００の演算処理の実行可能状態の制御を行う第２完了情報や、自身や別の演算装置２００の次処理を決定する決定処理の開始可否を制御する第１完了情報を生成し、制御装置１００に出力する。また、図２−２に示すように第１完了情報が記憶装置３００から制御装置１００に入力される場合には、演算制御回路２０１は、第２完了情報のみを制御装置１００に出力する。
【００６４】
実行回路２０２は、演算制御情報を演算制御回路２０１から入力し、処理対象情報を記憶装置３００から入力し、演算制御情報が示す演算を処理対象情報に対して実行し、演算の結果を記憶装置３００に出力する。
【００６５】
実行回路２０２は、演算制御回路２０１から演算制御情報が入力されると、演算制御情報から、処理対象情報、実行する演算、および、演算結果の保存先などを特定する。そして、実行回路２０２は、特定した処理対象情報を記憶装置３００から読出し、特定した演算を実行し、特定した保存先に演算結果を保存する。処理対象情報の読出し元や、書き出し先は記憶装置３００のみではなく、例えば半導体装置１外部のシステムメモリや半導体装置１内部の別の記憶装置を指定してもよいし、演算装置２００内部のローカルメモリを指定してもよい。
【００６６】
次に、制御装置１００の各構成部のさらに詳細な構成について説明する。図５−１は、制御装置１００の決定回路１０１および開始制御回路１０２のより詳細な構成の一例を示すブロック図である。最初に、決定回路１０１の詳細構成について説明する。図５−１に示すように、決定回路１０１は、判定回路１０１ａと、比較回路１０１ｂと、選択回路１０１ｃと、保持回路１０１ｄと、を備える。
【００６７】
判定回路１０１ａは、次処理が確定するタイミングを判定する回路である。判定回路１０１ａは、内部状態と、演算装置２００または記憶装置３００から入力される情報（第１完了情報または第２完了情報）などが、記憶装置１０３から入力される決定開始条件を満たすか否かを判定する。判定回路１０１ａは、判定結果を比較回路１０１ｂに出力する。例えば、判定回路１０１ａは、決定開始条件が満たされた場合に「有効（ｔｒｕｅ）」を表す判定結果を出力し、決定開始条件が満たされない場合に「無効（ｆａｌｓｅ）」を表す判定結果を出力する。また、判定回路１０１ａは、記憶装置１０３に対して、次処理に該当する演算処理の第１装置制御情報を要求する要求情報を出力する。
【００６８】
判定回路１０１ａによる判定処理は、決定開始条件を満たすか否かを判定できれば特に限定されない。例えば、決定開始条件が待機サイクル数のみを示す場合は、サイクル数のカウンタが一定値になった時点で判定回路１０１ａが判定結果＝「有効」を出力する構成とすればよい。
【００６９】
このような構成は、次処理が確定するタイミングが決定開始条件に示される構成であるといえる。例えば、演算装置２００が条件分岐機構などを持たず、逐次的、静的に動作する場合には、処理の実行タイミングが静的に確定する。このような場合は、決定開始条件に待機サイクル数のみ指定する構成でタイミング制御を行うことが可能となる。このような構成により、制御装置１００を単純な構造とすることが可能となる。
【００７０】
決定開始条件が、演算装置２００、記憶装置３００、および制御装置１００の内部から特定の制御信号が入力するまで待機する条件の場合は、判定回路１０１ａが当該制御信号を判定するような構成としてもよい。例えば、判定回路１０１ａが、演算装置２００または記憶装置３００から入力される第１完了情報により決定開始条件を判定しても良い。
【００７１】
このような構成により、固定サイクル数待機する場合に比べて、より柔軟なタイミング制御が実現できる。また、第１完了情報が入力されるタイミングが異なる場合でも、タイミング制御のために同一の制御情報を利用することができるため、制御情報のサイズを削減することが可能となる。判定回路１０１ａは、次処理が確定した後に、記憶装置１０３に対して、次処理に該当する第１装置制御情報を要求する要求情報を出力する。
【００７２】
比較回路１０１ｂは、判定回路１０１ａによる判定結果を判定回路１０１ａから入力し、決定条件を記憶装置１０３から入力し、分岐制御情報を記憶装置３００から入力する。判定回路１０１ａによる判定結果が有効である場合、比較回路１０１ｂは、分岐制御情報が決定条件を満たすかを判定し、判定結果を選択回路１０１ｃに出力する。判定回路１０１ａによる判定結果が無効である場合、比較回路１０１ｂは、無効を表す判定結果を選択回路１０１ｃに出力する。
【００７３】
比較回路１０１ｂが出力する判定結果の構成は、第１装置制御情報に含まれる次処理候補情報の候補数により定められる。次処理候補情報の数が１つの場合は、次処理の候補からいずれを選択するかを表す情報は必要なく、条件が満たされたことを表す情報のみで十分である。次処理候補情報の候補数が２つの場合は、条件が満たされたことを表す情報の他に、２つの候補から選択できる情報（例えば真と偽などの情報）を判定結果に含めればよい。また、次処理候補情報の候補数が３以上の場合、適切な候補を選択できる情報を判定結果に含めれば良い。
【００７４】
比較回路１０１ｂは、決定条件に示す処理を実行できる回路であれば特に構成は限定しない。例えば、決定条件が入力された分制御情報の有無のみで判定する条件の場合は、比較回路１０１ｂが、分岐制御情報が真か偽かを判定する回路で構成されてもよい。また、決定条件が、Ｃ言語等のプログラミング言語の条件文（例えば「ｃ＝＝０」）のように、数値計算の結果の値域を判定する条件の場合は、比較回路１０１ｂが、比較演算、論理演算、および四則演算など演算を実行できる構成をとっても良い。
【００７５】
選択回路１０１ｃは、次処理候補情報および処理開始条件を記憶装置１０３から入力し、比較回路１０１ｂによる判定結果を比較回路１０１ｂから入力する。選択回路１０１ｃは、次処理候補情報に含まれる次処理の候補から、比較回路１０１ｂによる判定結果が示す次処理を選択する。選択回路１０１ｃは、次処理の識別情報に対応した処理開始条件を選択し、次処理の識別情報と選択した処理開始条件とを含む開始条件情報を生成する。選択回路１０１ｃは、次処理の識別情報を保持回路１０１ｄへ出力し、開始条件情報を開始制御回路１０２に出力する。
【００７６】
開始条件情報の生成は、第１装置制御情報のデータ構造により異なってもよい。第１装置制御情報が、現在実行中の演算処理の処理開始条件を含む場合は（図４−１の例）、次処理が確定後、確定した次処理の処理開始条件を読み出して出力する構成をとっても良い。また、次処理候補情報とともに次処理の処理開始条件を付加する構成をとる場合は（図４−２の例）、次処理候補情報とともに処理開始条件を選択する構成をとってもよい。
【００７７】
保持回路１０１ｄは、選択回路１０１ｃから入力される識別情報を保持し、演算装置２００に対して出力する回路である。保持回路１０１ｄは、１つの識別情報のみを保持する構成でもよいし、複数の識別情報を保持する構成でもよい。複数の識別情報を保持する構成の場合、識別情報の入力順序を保障する構成であればどのような構成であってもよい。例えば、汎用の記憶装置と制御回路でもよいし、ＦＩＦＯのような先入れ先出し記憶装置でも良い。
【００７８】
保持回路１０１ｄは、識別情報を受理したことを表す受理情報が演算装置２００から入力されると、該当する識別情報は演算装置２００に受理されたと判断し、演算装置２００に対する当該識別情報の出力を完了する。１つの識別情報のみを保持する構成の場合は、内部に識別情報を保持している間は、選択回路１０１ｃから新しい識別情報が入力されても、保持回路１０１ｄは内部の識別情報を更新せず、演算装置２００に受理された後に新しい識別情報を内部に保持する。
【００７９】
複数の識別情報を保持できる構成の場合は、内部に識別情報を保持している間に、選択回路１０１ｃから新しい識別情報を入力されたとき、保持回路１０１ｄは、内部の記憶領域に空きがあれば、新しい識別情報を保持することができる。内部の記憶領域に空きがない場合は、保持回路１０１ｄは、１つの識別情報のみ保持できる構成と同様に、演算装置２００に識別情報が受理されるまで待機する。また、内部の記憶領域に２つ以上の識別情報を保持している状態で演算装置２００から受理情報が入力されると、保持回路１０１ｄは、出力している識別情報を内部の記憶領域から廃棄し、次に入力された識別情報を演算装置２００に対して出力する。
【００８０】
次に、開始制御回路１０２の詳細構成について説明する。図５−１に示すように、開始制御回路１０２は、保持回路１０２ａと、判定回路１０２ｂと、を備える。
【００８１】
保持回路１０２ａは、決定回路１０１から開始条件情報が入力されると、内部に開始条件情報を保持し、判定回路１０２ｂに対して該当する開始条件情報を出力する。保持回路１０２ａは、判定回路１０２ｂから第２完了情報が入力されると、開始条件情報が受理されたと判断し、開始条件情報の出力を完了する。保持回路１０２ａは、１つの開始条件情報のみ保持できる構成でもよいし、複数の開始条件情報を保持する構成でもよいが、保持回路１０１ｄによる識別情報の保持数と同等数の開始条件情報を保持する必要がある。また、保持回路１０１ｄと同様に、複数の識別情報を保持する場合は、入力順序を保障する必要がある。
【００８２】
判定回路１０２ｂは、保持回路１０２ａから入力される開始条件情報と、演算装置２００から入力される第２完了情報から、次処理の実行可否を判定し、演算装置２００に対して判定結果である開始制御情報を出力する。判定回路１０２ｂは、開始条件情報に含まれる処理開始条件が示す処理を実行できれば特に構成は問わない。例えば、処理開始条件が待機サイクル数を示す場合は、判定回路１０２ｂがカウンタなどでサイクル数をカウントし、待機サイクル数と現在のカウント数とを比較する構成としても良い。この場合は、演算装置２００からの第２完了情報は不要となり制御が単純化できる。また、処理開始条件が、演算装置２００、記憶装置３００、および制御装置１００から特定の割込み信号の入力を待つという条件の場合は、判定回路１０２ｂが、指定された割込み信号の入力判定が可能な構成とする。この場合は、一定サイクルを固定的に待つ場合に比べて柔軟性の高い制御が可能となる。また、処理開始条件が、記憶装置３００に保持される特定の情報が特定値になるまで待機するという条件の場合は、判定回路１０２ｂが、記憶装置３００へのアクセス、四則演算、および論理演算などの処理をサポートする構成としても良い。
【００８３】
次に、制御装置１００の各構成部の他の構成例について説明する。図５−２は、他の構成例での決定回路１０１−２および開始制御回路１０２−２のより詳細な構成の一例を示すブロック図である。
【００８４】
図５−２は、制御装置１００（保持回路１０２ａ）ではなく、演算装置２００内に開始条件情報を保持する場合の構成例を示している。図５−２に示すように、開始条件情報は、識別信号とともに選択回路１０１−２ｃから保持回路１０１−２ｄを経由して演算装置２００に出力される。また、判定回路１０２−２ｂは、演算装置２００から開始条件情報を入力し、図５−１の保持回路１０２ａから開始条件情報を入力する場合と同様に判定処理を行う。そして、判定回路１０２−２ｂは、開始制御情報を演算装置２００に出力する。
【００８５】
このような処理により、保持回路１０１−２ｄが、開始条件情報と常に対応づけられた状態で複数の識別情報を保持する場合でも回路の制御を単純化することができる。また、複数の演算装置２００を備える構成の場合は、それぞれの演算装置２００が開始条件情報を保持することで、条件判定の制御が容易になる。
【００８６】
次に、演算装置２００の各構成部のさらに詳細な構成について説明する。最初に、演算制御回路２０１の詳細構成について説明する。図６−１は、演算装置２００の演算制御回路２０１のより詳細な構成の一例を示すブロック図である。図６−１に示すように、演算制御回路２０１は、第１生成回路２０１ａと、実行制御回路２０１ｂと、第２生成回路２０１ｃと、を備える。なお、図６−１は、図５−１の制御装置１００に対応する演算制御回路２０１の構成例を示している。
【００８７】
第１生成回路２０１ａは、制御装置１００から入力される識別情報に従い、演算制御情報を生成し、生成した演算制御情報を実行制御回路２０１ｂに出力する。また、識別情報を受信可能な状態で制御装置１００から識別情報が入力された場合、識別情報を受理したことを表す受理情報を制御装置１００に出力する。
【００８８】
第１生成回路２０１ａが、識別情報から演算制御情報を生成する方法は、識別情報の構成により様々である。例えば、識別情報が具体的な命令などの実行する演算そのもので構成される場合は、第１生成回路２０１ａは、識別情報をそのまま演算制御情報として生成する。識別情報が記憶装置２０３のアドレスポインタである場合は、第１生成回路２０１ａは、アドレスポインタに該当する記憶装置２０３のアドレスから第２装置制御情報を読み出し、読み出した第２装置制御情報内の命令を含む演算制御情報を生成して実行制御回路２０１ｂに出力する。また、識別情報が数値等で表される場合は、第１生成回路２０１ａは、例えば識別情報と演算制御情報とを対応付けたルックアップテーブル等を用いて、識別情報に対応する演算制御情報を生成する。また、この場合、第１生成回路２０１ａが、識別情報と記憶装置２０３のアドレスポインタとを対応付けたルックアップテーブルを用いるように構成してもよい。
【００８９】
また、識別情報が実行する演算と、第１完了情報と、第２完了情報とを含んでも良い。この場合、演算装置２００は記憶装置２０３を備えず、制御装置１００から入力される識別情報内の演算を含む演算制御情報を実行回路２０２に出力し、演算を実行した後に、制御装置１００に対して、第１完了情報または第２完了情報を出力する。
【００９０】
演算制御情報には、実行回路２０２が実行する命令の他、演算装置２００の制御に必要な情報が含まれる。例えば、演算制御情報が、識別情報が示す演算処理の完了を示す情報を含んでも良い。また、演算制御情報が、制御装置１００および他の演算装置２００と同期を取るための情報（以下、同期制御情報という）を含んでも良い。同期制御情報は、例えば上述の第１完了情報および第２完了情報が該当する。演算処理が複数の命令で構成される場合には、１つの演算処理につき１つの同期制御情報を持つように構成しても良いし、１つの命令につき１つの同期制御情報を持つように構成しても良い。
【００９１】
第１生成回路２０１ａは、識別情報が入力されると、記憶装置２０３に対して識別情報で識別される演算処理に含まれる最初の演算に対応する第２装置制御情報を要求する。記憶装置２０３から第２装置制御情報が入力されると、第１生成回路２０１ａは、第２装置制御情報内の命令を含む演算制御情報を生成し、実行制御回路２０１ｂに生成した演算制御情報を出力する。
【００９２】
第１生成回路２０１ａは、実行制御回路２０１ｂから、実行制御回路２０１ｂの状態を表す状態情報を入力する。第１生成回路２０１ａは、入力された状態情報が処理実行中を示す場合は、引き続き次の第２装置制御情報の要求を記憶装置２０３に出力する。
【００９３】
第１生成回路２０１ａが、実行制御回路２０１ｂの状態が実行状態になった場合に初めて第２装置制御情報を読み出してもよいが、実行状態でない場合に予め第２装置制御情報を読み出すことで、実行開始時の初期化オーバヘッドを削減することが可能となる。
【００９４】
実行制御回路２０１ｂは、制御装置１００から入力される開始制御情報と、第１生成回路２０１ａから入力される演算制御情報とから、演算装置２００の動作状態を制御し、第１生成回路２０１ａに状態情報を出力する。
【００９５】
実行制御回路２０１ｂは、制御装置１００から入力される開始制御情報に従い、内部状態を更新する。初期状態では、実行制御回路２０１ｂは停止状態である。停止状態中に実行開始可能であることを表す開始制御情報が入力されると、実行制御回路２０１ｂは実行可能状態となる。実行制御回路２０１ｂは、実行可能状態の場合、第１生成回路２０１ａから入力される演算制御情報を実行回路２０２に出力する。これにより、一連の演算を連続して実行することができる。また、実行可能状態中に、第１生成回路２０１ａから入力される演算制御情報にすべての演算が完了したことを示す情報が含まれる場合は、実行制御回路２０１ｂは、内部状態を停止状態に遷移し演算処理を完了する。
【００９６】
演算制御情報に同期制御情報が含まれる場合、実行制御回路２０１ｂは、第２生成回路２０１ｃに対して同期制御情報を出力する。実行制御回路２０１ｂは、実行制御回路２０１ｂが実行状態の場合に、演算制御情報に含まれる同期制御情報を、第２生成回路２０１ｃに対して出力する。例えば、同期制御情報が第１完了情報の場合、第２生成回路２０１ｃは、制御装置１００が次処理の決定処理が実行開始可能か判定するための情報として第１完了情報を出力する。同期制御情報が第２完了情報の場合、第２生成回路２０１ｃは、制御装置１００が次処理の実行開始可能か判定するための情報として第２完了情報を出力する。
【００９７】
次に、演算制御回路２０１の他の構成例について説明する。図６−２は、他の構成例にかかる演算制御回路２０１−２の詳細な構成の一例を示すブロック図である。図６−２は、図５−２の制御装置１００に対応する演算制御回路２０１−２の構成例を示している。
【００９８】
図６−２に示すように、この構成例では、第１生成回路２０１−２ａに識別情報とともに開始条件情報が入力され、第１生成回路２０１−２ａが実行制御回路２０１−２ｂに開始条件情報を出力する。実行制御回路２０１−２ｂは、制御装置１００に対して開始条件情報を出力し、開始制御情報の入力の真偽により状態遷移を行う。
【００９９】
次に、演算装置２００の実行回路２０２のさらに詳細な構成について図７〜図１４を用いて説明する。図７は、演算装置２００の実行回路２０２のより詳細な構成の一例を示すブロック図である。図７に示すように、実行回路２０２は、演算回路７０１を備える。
【０１００】
上述のように、実行回路２０２は、演算制御回路２０１から演算制御情報を入力して演算を実行する。演算制御情報は、例えば実行する演算を特定する演算識別情報と、入力データの読出し先および演算に用いる定数値を含む入力元情報と、演算結果の書込み先を含む出力先情報と、を含む。演算制御情報の具体的なデータ構造は、実行回路２０２の構成により異なる。
【０１０１】
図７に示す構成の場合、実行回路２０２は、単一の演算回路７０１により構成される。演算回路７０１は、データと命令を入力とし、入力したデータに対して、入力した命令に従い演算を実行する。演算回路７０１は、例えば、単一のＡＬＵなどの演算器で構成してもよいし、複数の演算器を備え、全ての演算器で同一の命令を入力するＳＩＭＤ構成としてもよい。また、演算回路７０１が複数の演算器を備え、演算器ごとに別々の命令を入力可能なＭＩＭＤ構成としてもよい。さらに、これらの構成の演算器を組み合わせて演算回路７０１を構成してもよい。
【０１０２】
図７の構成例のような場合には、演算回路７０１に対応した単一の命令を演算識別情報とすればよい。図８は、図７の構成で用いる演算制御情報の一例を示す図である。図８に示すように、演算回路７０１が単一の演算器の場合には、演算制御情報は、命令（演算識別情報）と、入力元情報と、出力先情報とを備えればよい。なお、例えば図８の１行目の演算制御情報は、ｒｅｇ０から入力データを読み出して定数値２を加算（ａｄｄ）してｒｅｇ０に書き込むことを表している。複数の演算器を備える構成の場合は、演算制御情報が、命令、入力元情報、および出力先情報をそれぞれ複数備えればよい。
【０１０３】
図９は、図７と異なる構成の実行回路２０２−２を含む演算装置２００−２の詳細な構成の一例を示すブロック図である。図９に示すように、実行回路２０２−２は、演算回路７０１−２と、定数情報記憶装置７０２−２と、処理情報記憶装置７０３−２と、を備える。
【０１０４】
処理情報記憶装置７０３−２は、演算識別情報を入力とし、演算識別情報に対応する命令を出力する。図１０は、処理情報記憶装置７０３−２に記憶される処理情報のデータ構造の一例を示す図である。図１０に示すように、処理情報記憶装置７０３−２は、命令自体ではなく記号および数値等で表された演算識別情報（例えばｃｍｄ０）と命令とを対応付けた処理情報を記憶する。
【０１０５】
定数情報記憶装置７０２−２は、演算に用いる定数値を識別する定数識別情報を入力とし、定数識別情報に対応する定数値を出力する。図１１は、定数情報記憶装置７０２−２に記憶される定数情報のデータ構造の一例を示す図である。図１１に示すように、定数情報記憶装置７０２−２は、定数識別情報と定数とを対応付けた定数情報を記憶する。
【０１０６】
演算回路７０１−２は、処理情報記憶装置７０３−２から入力した命令と、定数情報記憶装置７０２−２から入力した定数値と、記憶装置３００から入力した入力データとを用いて演算を行い、演算結果を記憶装置３００に出力する。
【０１０７】
図１２は、図９の構成で用いる演算制御情報の一例を示す図である。図９の例のような場合には、図１２に示すように、演算制御情報は、処理情報記憶装置７０３−２の処理情報に含まれる演算識別情報と、定数情報記憶装置７０２−２の定数情報に含まれる定数識別情報とを含めばよい。図１２では、入力元情報内に定数識別情報（ｉｍｍ０など）を含む例が示されている。
【０１０８】
なお、図９の例では処理情報記憶装置７０３−２と、定数情報記憶装置７０２−２のそれぞれを備えるが、いずれか一方のみを備えてもよいし、両者をまとめて単一の記憶装置として備えてもよい。処理情報記憶装置７０３−２のみ備える場合は、演算制御情報が定数識別情報の代わりに演算に必要な定数値を示す情報を含めばよい。また、定数情報記憶装置７０２−２のみ備える場合は、演算制御情報は記号および数値等で表された演算識別情報の代わりに、演算に必要な命令自体を含めばよい。
【０１０９】
演算回路７０１−２が、多数の演算器それぞれに対して別々の命令を入力可能なＭＩＭＤ構成の場合、図７の例のように演算識別情報に全ての命令を保持させると、記憶装置２０３に大きなメモリが必要となる。そのため、図９の例のように、処理情報記憶装置７０３−２と、定数情報記憶装置７０２−２にそれぞれ命令と定数を保持し、記憶装置２０３にはそれらの識別情報（演算識別情報および定数識別情報）のみを保持することにより、より少ない情報量で同一の処理を実現することができる。
【０１１０】
図１３は、図７および図９とさらに異なる演算装置２００−３の詳細な構成の一例を示すブロック図である。図１３に示すように、演算装置２００−３は、図９の実行回路２０２−２にセレクタ（セレクタ７０４−３ａ、７０４−３ｂ）を追加した２つの実行回路２０２−３ａおよび２０２−３ｂを備えた構成となっている。なお、実行回路２０２−３の個数は３以上であってもよい。
【０１１１】
図１４は、図１３の構成で用いる演算制御情報の一例を示す図である。図１３の例のような場合、演算制御情報は図１４に示すように実行回路２０２−２の数分の演算識別情報、入力元情報、および出力先情報の組を含めばよい。
【０１１２】
上述のように、処理開始条件および決定開始条件は、特定の割込み信号の入力を待つという条件である必要はなく、サイクル数などの静的に決定される値を待つ条件でもよい。以下に、このように構成する場合の本実施の形態の変形例２について説明する。図１５は、本実施の形態の変形例２に係る半導体装置１の構成の一例を示すブロック図である。
【０１１３】
本変形例では、演算装置２００−４の演算制御回路２０１−３から制御装置１００−３の決定回路１０１−３に対する第１完了情報の出力、および、演算装置２００−４の演算制御回路２０１−３から制御装置１００−３の開始制御回路１０２−３に対する第２完了情報の出力が不要となる点が、図２−１の構成と異なっている。その他の構成は図２−１と同様であるため同一の符号を付し説明を省略する。
【０１１４】
また、図１６および図１７は、それぞれ図１５の変形例２の制御装置１００−３および演算装置２００−４のより詳細なブロック図である。
【０１１５】
制御装置１００−３の決定回路１０１内の判定回路１０１ａ−３は、処理開始条件を入力後、一定サイクル数待機した後に有効である旨の判定結果を出力すれば良いため、構造を単純化できる。例えば、判定回路１０１ａ−３の内部にカウンタ（図示せず）と、カウンタの値と待機サイクル数を比較する比較器（図示せず）とを備えれば実現できる。判定回路１０２ｂ−３も同様に単純な構造で実現できる。
【０１１６】
また、演算装置２００−４の演算制御回路２０１−３は、第１完了情報および第２完了情報を出力する必要がないため、第２生成回路２０１ｃが不要となり、制御が単純化できる。
【０１１７】
本変形例のように、処理開始条件および決定開始条件を静的に決定できる値で構成する場合は、処理の前後関係が異なる場合には別の制御が必要になるため、柔軟な制御が困難になるが、回路を単純化できる。
【０１１８】
次に、このように構成された半導体装置１の制御装置１００および演算装置２００の動作について図１８および図１９を用いて説明する。図１８は、本実施の形態における制御装置１００の動作全体の流れを示すフローチャートである。
【０１１９】
まず、制御装置１００の決定回路１０１は、記憶装置１０３から第１装置制御情報を読み出す（ステップＳ１０１）。読み出す際に指定するアドレスは、固定であってもよいし、処理開始時に指定してもよい。また、これ以降、記憶装置１０３から第１装置制御情報を読み出す際のアドレスは、逐次的に増加させてもよいし、第１装置制御情報内で指定するように構成してもよい。
【０１２０】
次に、決定回路１０１は、第１装置制御情報に含まれる決定開始条件が満たされたか否かを判断する（ステップＳ１０２）。決定開始条件が満たされない場合（ステップＳ１０２：Ｎｏ）、決定回路１０１は、決定開始条件が満たされるまで待機する。決定開始条件が満たされた場合（ステップＳ１０２：Ｙｅｓ）、決定回路１０１は、次処理を決定する決定処理を実行する（ステップＳ１０３）。
【０１２１】
上述のように、決定処理が実行開始可能な状態の検出方法（決定開始条件）は、第１装置制御情報に含まれる。決定開始条件は、回路上で条件の判定が実現可能であれば、例えば決定処理が実行開始可能になるまでの待機サイクル数で示しても良いし、演算装置２００または記憶装置３００から入力される、決定処理が実行可能状態になること表す入力情報で示しても良い。
【０１２２】
決定回路１０１は、決定した次処理の識別情報を含む処理制御情報を演算装置２００に出力する（ステップＳ１０４）。
【０１２３】
次に、開始制御回路１０２が、第１装置制御情報に含まれる処理開始条件が満たされたか否かを判断する（ステップＳ１０５）。処理開始条件が満たされない場合（ステップＳ１０５：Ｎｏ）、開始制御回路１０２は、処理開始条件が満たされるまで待機する。処理開始条件が満たされた場合（ステップＳ１０５：Ｙｅｓ）、開始制御回路１０２は、次処理が実行開始可能であることを表す開始制御情報を演算装置２００に出力する（ステップＳ１０６）。
【０１２４】
上述のように、処理開始条件は第１装置制御情報に含まれる。処理開始条件は、回路上で条件の判定が実現可能であれば、例えば、演算処理が実行可能となるまでのサイクル数で示しても良い。また、処理開始条件は、演算装置２００または記憶装置３００から入力される、演算処理が実行可能となることを表す入力情報で示しても良いし、制御装置１００の内部状態で示しても良い。また、その際に制御装置１００の内部状態は、演算装置２００、記憶装置３００、および外部からの信号により状態遷移してもよい。
【０１２５】
図１８では、決定処理（ステップＳ１０３）の後で、処理開始条件の判定（ステップＳ１０５）を行っているが、これらのステップは順番が前後しても良いし、同時に行っても良い。ただし、開始制御情報が対応する処理制御情報と関連付けられて演算装置２００に入力される必要がある。例えば、処理制御情報と開始制御情報とを同時に出力する、処理制御情報の後で開始制御情報を出力する、または、開始制御情報の後で処理制御情報を出力する等のプロトコル上の制約を設ける方法を用いることができる。また、対応する処理制御情報と開始制御情報とをタグ付けして関連付けるなどの方法を用いても良い。
【０１２６】
開始制御情報を出力後、決定回路１０１は、第１装置制御情報が演算処理の完了を示す情報を含むか否かを判断する（ステップＳ１０７）。演算処理の完了を示す情報を含まない場合は（ステップＳ１０７：Ｎｏ）、次の第１装置制御情報を読み出し（ステップＳ１０１）、処理を繰り返す。演算処理の完了を示す情報を含む場合は（ステップＳ１０７：Ｙｅｓ）、制御装置１００は動作を終了する。
【０１２７】
図１９は、本実施の形態における演算装置２００の動作全体の流れを示すフローチャートである。
【０１２８】
まず、演算装置２００の演算制御回路２０１は、制御装置１００から処理制御情報が入力されるまで待機する（ステップＳ２０１）。処理制御情報が入力されると、演算制御回路２０１は、処理制御情報に従い、コンフィギュレーションの設定等の準備を行い（ステップＳ２０２）、開始制御情報が入力されるまで待機する（ステップＳ２０３）。処理の準備は行わなくてもよいが、準備を行うことで、開始制御情報を入力するときのコンフィギュレーション設定によるオーバヘッドを削減することができる。
【０１２９】
開始制御情報が入力されると、演算制御回路２０１は、記憶装置２０３から第２装置制御情報を読み出し、第２装置制御情報に含まれる命令の実行を実行回路２０２に指示する（ステップＳ２０４）。
【０１３０】
演算制御回路２０１は、読み出した第２装置制御情報に第１完了情報が含まれか否かを判断する（ステップＳ２０５）。第２装置制御情報に第１完了情報が含まれる場合は（ステップＳ２０５：Ｙｅｓ）、演算制御回路２０１は、制御装置１００に第１完了情報を出力する（ステップＳ２０６）。また、演算制御回路２０１は、読み出した第２装置制御情報に第２完了情報が含まれか否かを判断する（ステップＳ２０７）。第２装置制御情報に第２完了情報が含まれる場合は（ステップＳ２０７：Ｙｅｓ）、演算制御回路２０１は、制御装置１００に第２完了情報を出力する（ステップＳ２０８）。演算の実行（ステップＳ２０４）、第１完了情報の出力（ステップＳ２０６）、および、第２完了情報の出力（ステップＳ２０８）は、図１９に示された順番である必要はなく、任意の順序で実行してもよいし、同時に実行してもよい。
【０１３１】
演算制御回路２０１は、実行回路２０２による演算の実行が完了した後、演算制御情報に演算完了を示す情報が含まれるか否かを判断する（ステップＳ２０９）。演算完了を示す情報が含まれない場合は（ステップＳ２０９：Ｎｏ）、次の第２装置制御情報を読み出し（ステップＳ２０４）、処理を繰り返す。演算完了を示す情報が含まれる場合は（ステップＳ２０９：Ｙｅｓ）、演算装置２００は動作を終了する。
【０１３２】
次に、半導体装置１の動作の具体例について図２０〜図２５を用いて説明する。図２０は、この例で実行するプログラムの一例を示す図である。
【０１３３】
図２０に示すプログラムは、４つのベーシックブロックから構成される。ベーシックブロックは、条件分岐が発生せずに逐次的に実行できる１以上の演算を含む処理単位、すなわち、上述の演算処理に相当する。図２０の例では、識別情報＝０〜３の４つのベーシックブロックを含むプログラムが示されている。
【０１３４】
識別情報＝１および２のベーシックブロックは、（３）式により条件分岐が行われ、いずれか一方のみが実行される。また、（３）式はデータｃを用いるため、（３）式を実行するには、データｃを算出する（０）式が完了している必要がある。以下、この依存関係を依存関係Ａという。
【０１３５】
識別情報＝１のベーシックブロックは、当該ベーシックブロック外のデータｅを演算に用いているため、データｅを算出する（１）式が完了するまで、演算を開始できない。以下、この依存関係を依存関係Ｂという。同様に、識別情報＝２のベーシックブロックは、データｆを算出する（２）式が完了するまで演算を開始できない。以下、この依存関係を依存関係Ｃという。識別情報＝３のベーシックブロックは、データｈを算出する（５）式または（９）式が完了するまで演算を実行できない。以下、この依存関係を依存関係Ｄという。
【０１３６】
図２１および図２２は、図２０のプログラムを実行するための第１装置制御情報および第２装置制御情報をそれぞれ表す図である。
【０１３７】
上述した演算の依存関係はフラグレジスタ等に保持するフラグを用いることにより解決している。依存関係Ａについては「ｆｌａｇＡ」で解消される。依存関係Ｂおよび依存関係Ｃは「ｆｌａｇＢ」で解消される。依存関係Ｄについては「ｆｌａｇＣ」で解消される。
【０１３８】
なお、図２１の表の右欄に記載した（Ａ）〜（Ｆ）は、図２３〜図２５で説明する演算処理との対応のために記載したものである。また、図２２の表の右欄に記載した（０）〜（１２）は、図２０の各式である（０）式〜（１２）式に対応することを表している。これらの記号は説明の便宜上記載したものであり、第１装置制御情報および第２装置制御情報がこれらの記号を含む必要はない。
【０１３９】
図２３、図２４、および図２５は、それぞれ図２０のプログラムを、従来の汎用プロセッサで処理した場合、演算装置２００を１つ備える半導体装置１（図１−１）で処理した場合、および演算装置２００を２つ備える半導体装置１−２（図１−２）で処理した場合のタイミングチャートを示す図である。
【０１４０】
従来の汎用プロセッサで処理する場合は、図２３に示すように、分岐演算と、その他の演算処理とを全て同じプロセッサで実行する必要があるため、並列性を得ることはできず実行時間が大きい。
【０１４１】
演算装置２００を１つ備える半導体装置１で処理する場合は、図２４に示すように分岐演算と演算処理とを並列に実行できる。そのため、条件分岐に要するコストを削減でき、従来のプロセッサに比べ高速に処理を実行することが可能となる。
【０１４２】
制御装置１００は、演算処理（Ｂ）の条件判定を実行するのに演算装置２００の実行する（０）式が完了することが必要（決定開始条件のｆｌａｇＡ）であるため、演算処理（Ａ）が完了後、演算装置２００の演算（０）が完了するまで待機する。また、演算処理（Ｃ）および演算処理（Ｅ）は決定開始条件が真であるため、他の演算処理を待つことなく次の演算処理を決定することができる。
【０１４３】
また、演算装置２００が１つしか存在しないため、識別情報＝１および３の演算処理のように、処理開始条件でフラグが指定されている演算処理であっても、各演算処理を実行開始する時点では処理開始条件（それぞれｆｌａｇＢおよびｆｌａｇＣの入力）を満たしている。そのため、演算処理をすぐに実行することができる。
【０１４４】
図１−２のように２つの演算装置２００ａおよび２００ｂを備える場合は、図２５に示すように、分岐処理と演算処理とを並列に実行するだけでなく、演算装置２００ａと演算装置２００ｂとの間で演算処理を並列に実行可能となる。これにより、実行時間をさらに短縮することができる。図２５の例では、演算装置２００ａによる識別情報＝１の演算処理（（０）、（１）、（２）式）および識別情報＝３の演算処理（（１１）、（１２）式）と、演算装置２００ｂによる識別情報＝２の演算処理（（４）、（５）、（６）式）と、を並列に実行できる。
【０１４５】
識別情報＝２の演算処理は、処理開始条件がｆｌａｇＢであるため、演算装置２００ａが（１）式を完了するまで、演算装置２００ｂは識別情報＝２の演算処理を実行開始せずに待機する。同様に、識別情報＝３の演算処理は、処理開始条件がｆｌａｇＣであるため、演算装置２００ａは演算装置２００ｂが（５）式を完了するまで、識別情報＝３を実行開始せずに待機する。
【０１４６】
上記のように依存関係を解消したのちは、各演算処理を並列に実行可能であるため、（２）式と（４）式、（６）式と（１１）式のように複数の演算装置２００ａおよびＢで処理を並列に実行することで実行時間を短縮することが可能となる。
【０１４７】
次に、図１−２のように複数の演算装置２００ａおよび２００ｂを備える場合に、各演算装置２００ａおよび２００ｂに演算処理を振り分ける方法について説明する。最初に、ソフトウェアによる静的な制御により振り分ける方法を説明する。
【０１４８】
この場合は、例えば第１装置制御情報の次処理候補情報で指定される次処理の識別情報それぞれに対して、実行する演算装置２００の識別子を付加する。これにより、実行する演算処理（次処理）に対して明示的に実行する演算装置２００を指定することができる。図２６は、図２０のプログラムが図２５のように動作する場合の第１装置制御情報の例を示した図である。図２６の例では、識別情報＝０および３の演算処理３は、演算装置２００ａが実行し、識別情報＝１および２の演算処理は演算装置２００ｂが実行することを示している。なお、図２６の例では、演算装置２００ａおよび２００ｂの識別子をそれぞれ「Ａ」および「Ｂ」で表している。なお、図２６は、一度に１つの演算装置２００の処理のみ決定する例を示しているが、一度に複数の演算装置２００の処理を決定するように構成してもも良い。
【０１４９】
このように、第１装置制御情報により各演算処理を実行する演算装置２００を指定することで、複数の演算装置２００間で記憶装置１０３の内容（第１装置制御情報）が異なっても対応可能である。
【０１５０】
次に、ハードウェアによる動的な制御により振り分ける方法を説明する。図２７は、ハードウェアによる制御により振り分ける場合の半導体装置１−３の構成例を示すブロック図である。図２７に示すように半導体装置１−３は、制御装置１００−３と、演算装置２００−３ａおよび２００−３ｂと、記憶装置３００と、分散装置４００と、を備えている。
【０１５１】
制御装置１００−３は、分散装置４００に対して処理制御情報を入力する。分散装置４００は、処理制御情報が入力されると、各演算装置２００の動作状況に応じて、所定の判断基準により適切な演算装置２００を選択し、選択した演算装置２００に対して処理制御情報を出力する。例えば、分散装置４００は、負荷の小さい演算装置２００に処理制御情報を出力するという判断基準を用いる。この場合、分散装置４００は、例えば演算装置２００が実行中か停止中かを判断し、停止中の演算装置２００に対して処理制御情報を出力する。
【０１５２】
また、分散装置４００は、演算装置２００が処理制御情報を格納するメモリを保持している場合は、メモリに保持されている処理制御情報が少ない演算装置２００に対して処理制御情報を出力するという判断基準を用いてもよい。このように負荷の小さい演算装置２００に優先的に演算処理を割り当てることで、効率的な負荷分散が実現でき、処理性能の向上が期待できる。
【０１５３】
また、負荷以外の判断基準を用いてもよい。例えば、演算によるデータの依存関係の強い演算処理を同じ演算装置２００で実行するように割り当てることで、メモリへのアクセス回数を削減できる。また、必要に応じて演算処理の割当てに必要な情報を処理制御情報に付加してもよい。
【０１５４】
このように動的な振り分け制御を行うことで、負荷に応じて最適な演算装置２００で処理を実行することができる。全ての演算装置２００に対して動的に演算処理が発行されるため、各演算装置２００が同一の演算制御情報を保持する必要がある。すなわち、各演算装置２００の記憶装置１０３の内容を全て統一する必要がある。その際に、マルチポートメモリや階層キャッシュ構造により記憶装置１０３を共有すれば、より少ないハードウェア資源で同一の演算制御情報の保持が可能となる。また、性能劣化を許容できる場合は、記憶装置１０３を共有メモリとし、複数の演算装置２００からアクセスがあった場合には調停を行うことで、より少ない資源で演算制御情報の共有が可能である。
【０１５５】
このように、本実施の形態にかかる半導体装置１は、演算装置と制御装置とを含む。実行中の演算処理に含まれる演算で条件分岐の判断に必要な情報が得られたときに、演算装置が、その情報を制御装置に出力する。制御装置は、この情報を参照して条件分岐制御を行う。これにより、制御装置による分岐演算と、演算装置による演算処理とを並列に実行できる。すなわち、分岐処理を含む処理をより効率的に実行することが可能となる。
【０１５６】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【０１５７】
１  半導体装置
１００  制御装置
１０１  決定回路
１０１ａ  判定回路
１０１ｂ  比較回路
１０１ｃ  選択回路
１０１ｄ  保持回路
１０２  開始制御回路
１０２ａ  保持回路
１０２ｂ  判定回路
１０３  記憶装置
２００  演算装置
２０１  演算制御回路
２０１ａ  第１生成回路
２０１ｂ  実行制御回路
２０１ｃ  第２生成回路
２０２  実行回路
２０３  記憶装置
３００  記憶装置
４００  分散装置
７０１  演算回路
７０２−２  定数情報記憶装置
７０３−２  処理情報記憶装置
【図１−１】
0005580404.tif 000002
【図１−２】
0005580404.tif 000003
【図２−１】
0005580404.tif 000004
【図２−２】
0005580404.tif 000005
【図３−１】
0005580404.tif 000006
【図３−２】
0005580404.tif 000007
【図４−１】
0005580404.tif 000008
【図４−２】
0005580404.tif 000009
【図４−３】
0005580404.tif 000010
【図４−４】
0005580404.tif 000011
【図５−１】
0005580404.tif 000012
【図５−２】
0005580404.tif 000013
【図６−１】
0005580404.tif 000014
【図６−２】
0005580404.tif 000015
【図７】
0005580404.tif 000016
【図８】
0005580404.tif 000017
【図９】
0005580404.tif 000018
【図１０】
0005580404.tif 000019
【図１１】
0005580404.tif 000020
【図１２】
0005580404.tif 000021
【図１３】
0005580404.tif 000022
【図１４】
0005580404.tif 000023
【図１５】
0005580404.tif 000024
【図１６】
0005580404.tif 000025
【図１７】
0005580404.tif 000026
【図１８】
0005580404.tif 000027
【図１９】
0005580404.tif 000028
【図２０】
0005580404.tif 000029
【図２１】
0005580404.tif 000030
【図２２】
0005580404.tif 000031
【図２３】
0005580404.tif 000032
【図２４】
0005580404.tif 000033
【図２５】
0005580404.tif 000034
【図２６】
0005580404.tif 000035
【図２７】
0005580404.tif 000036