(57)【要約】【課題】簡易な構成によりプロセッサのアドレス空間と演算処理装置の専有メモリとの間のデータ転送効率を向上させる。【解決手段】専有メモリは、プロセッサのアドレス空間とは異なる専有領域を記憶する。データ転送部は、アドレス空間と専有メモリとの間でデータの転送処理を行う。演算部は、専有メモリに記憶されたデータ間の演算処理を行う。コマンドレジスタ群は、プロセッサから受けたコマンド列の各コマンドを各々のレジスタに保持する。ステートマシンは、データ転送部および演算部における処理の状態を管理する。制御部は、コマンドを保持するようにコマンドレジスタ群を制御するとともに、ステートマシンによって管理された状態に応じてデータ転送部および演算部の何れかに対してコマンドレジスタ群に保持されたコマンドを供給するようにコマンドレジスタ群を制御する。【選択図】図１
2018120448.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサのアドレス空間とは異なる専有領域を記憶する専有メモリと、
前記アドレス空間と前記専有メモリとの間でデータの転送処理を行うデータ転送部と、
前記専有メモリに記憶されたデータ間の演算処理を行う演算部と、
前記プロセッサから受けたコマンド列の各コマンドを各々のレジスタに保持するコマンドレジスタ群と、
前記データ転送部および前記演算部における処理の状態を管理するステートマシンと、
前記コマンドを保持するように前記コマンドレジスタ群を制御するとともに、前記状態に応じて前記データ転送部および前記演算部の何れかに対して前記コマンドレジスタ群に保持された前記コマンドを供給するように前記コマンドレジスタ群を制御する制御部と
を具備する演算処理装置。
【請求項２】
前記ステートマシンは、前記コマンド列に対応して予め定められたコマンド数に従って前記状態を遷移させて前記状態を管理する
請求項１記載の演算処理装置。
【請求項３】
前記コマンド列は、前記アドレス空間から前記専有メモリにデータを転送する第１のデータ転送処理を行うコマンドと、前記専有メモリに記憶されたデータ間の演算処理を行うコマンドと、前記専有メモリから前記アドレス空間にデータを転送する第２のデータ転送処理を行うコマンドとを含み、
前記ステートマシンは、前記第１のデータ転送処理を行うコマンドが入力されると前記第１のデータ転送処理を行うコマンドを実行する状態に遷移させ、前記第１のデータ転送処理を行うコマンドに要する時間が経過すると前記演算処理を行うコマンドを実行する状態に遷移させ、前記演算処理を行うコマンドに要する時間が経過すると前記第２のデータ転送処理を行うコマンドを実行する状態に遷移させる
請求項１記載の演算処理装置。
【請求項４】
前記コマンドレジスタ群は、複数のサブレジスタ群を備え、
前記制御部は、前記プロセッサから複数の前記コマンド列を受けた際に前記複数のサブレジスタ群毎に異なる前記コマンド列が保持されるように制御する
請求項１記載の演算処理装置。
【請求項５】
前記制御部は、前記異なるコマンド列におけるコマンドが前記データ転送部および前記演算部に対して排他的に供給されるように制御する
請求項４記載の演算処理装置。
【請求項６】
前記ステートマシンは、前記異なるコマンド列に対応してそれぞれ固有の前記状態を管理する
請求項４記載の演算処理装置。
【請求項７】
前記ステートマシンは、前記複数のコマンド列の状態を管理する際に前記複数のコマンド列の一のコマンド列に対応して予め定められたコマンド数および他のコマンド列の前記状態に従って前記一のコマンド列の前記状態を遷移させる
請求項４記載の演算処理装置。
【請求項８】
前記複数のコマンド列の各々は、前記アドレス空間から前記専有メモリにデータを転送する第１のデータ転送処理を行うコマンドと、前記専有メモリに記憶されたデータ間の演算処理を行うコマンドと、前記専有メモリから前記アドレス空間にデータを転送する第２のデータ転送処理を行うコマンドとを含み、
前記ステートマシンは、前記複数のコマンド列のうち第１に処理されるべきコマンド列の前記第１のデータ転送処理を行うコマンドに要する時間が経過すると前記複数のコマンド列のうち第２に処理されるべきコマンド列の前記第１のデータ転送処理を行うコマンドを実行する状態に遷移させ、前記第１に処理されるべきコマンド列の前記演算処理を行うコマンドに要する時間が経過すると前記第２に処理されるべきコマンド列の前記演算処理を行うコマンドを実行する状態に遷移させ、前記第１に処理されるべきコマンド列の前記演算処理を行うコマンドに要する時間が経過すると前記第１に処理されるべきコマンド列の前記第２のデータ転送処理を行うコマンドを実行する状態に遷移させる
請求項４記載の演算処理装置。
【請求項９】
前記ステートマシンは、前記第１に処理されるべきコマンド列の前記演算処理を行うコマンドに要する時間が経過し、または、前記第１に処理されるべきコマンド列の前記演算処理を行うコマンドが終了した状態に遷移すると、前記第２に処理されるべきコマンド列の前記演算処理を行うコマンドを実行する状態に遷移させる
請求項８記載の演算処理装置。
【請求項１０】
プロセッサと、演算処理装置と、前記プロセッサのアドレス空間を記憶して前記演算処理装置からもアクセス可能な共有メモリとを具備する情報処理システムであって、
前記演算処理装置は、
前記プロセッサのアドレス空間とは異なる専有領域を記憶する専有メモリと、
前記アドレス空間と前記専有メモリとの間でデータの転送処理を行うデータ転送部と、
前記専有メモリに記憶されたデータ間の演算処理を行う演算部と、
前記プロセッサから受けたコマンド列の各コマンドを各々のレジスタに保持するコマンドレジスタ群と、
前記データ転送部および前記演算部における処理の状態を管理するステートマシンと、
前記コマンドを保持するように前記コマンドレジスタ群を制御するとともに、前記状態に応じて前記データ転送部および前記演算部の何れかに対して前記コマンドレジスタ群に保持された前記コマンドを供給するように前記コマンドレジスタ群を制御する制御部とを備える
情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、演算処理装置に関する。詳しくは、プロセッサの外部において演算機能を提供する演算処理装置、および、その演算処理装置を含む情報処理システムに関する。
【背景技術】
【０００２】
プロセッサの負荷を軽減させる手法として、一部の演算機能をプロセッサの外部の演算処理装置によって実現する技術が知られている。この演算処理装置は、一般に、コプロセッサと称される。この演算処理装置の用途は、浮動小数点演算やＦＦＴなど多岐にわたる。演算処理装置は、内部に専用のメモリ領域を有する。プロセッサおよび演算処理装置の両者がアクセスすることができる共有の記憶装置と、演算処理装置の専用のメモリ領域との間では、ＤＭＡ（Direct Memory Access）転送によりデータのやりとりが行われる。
【０００３】
ＤＭＡ転送においては、転送されるデータが複数の領域に分散している場合、プロセッサからＤＭＡ転送部に対してアドレスの指定をする制御を複数回行う必要がある。この制御は通常、ＤＭＡ転送の転送終了の割込み通知をプロセッサが受け、適宜必要な制御データをＤＭＡ転送部に対して与えることによって行われる。ＤＭＡの割込み通知の処理は頻繁に発生するため、プロセッサの負荷としては軽いものではなく、プロセッサの利用効率を低下させるおそれがある。また、このＤＭＡの割込み通知は、プロセッサに対してＤＭＡ転送の次の動作の指示を求めるものである。そのため、プロセッサが他に優先順位の高い処理を行っていて、このＤＭＡの割込み要求に対してＤＭＡ転送部への処理内容を指示できないときには、ＤＭＡ転送部は処理内容の指示待ちとなり、ＤＭＡ転送効率は低下する。
【０００４】
そこで、プロセッサとＤＭＡ転送部との間にその制御内容（コマンド）を記憶するコマンドバッファを設けることが提案されている（例えば、特許文献１参照。）。すなわち、プロセッサが予め確定している複数の制御内容をこのコマンドバッファに書き込んでおき、ＤＭＡ転送部からの割込み通知に対してコマンドバッファが直ちに処理内容をＤＭＡ転送部に供給する。コマンドバッファが用意されている場合には、コマンドバッファがＤＭＡ転送部に対して連続的に処理内容を供給することができるため、プロセッサは他に優先的に処理すべき事項がないときにまとめてコマンドバッファに制御内容を格納すればよい。これにより、ＤＭＡ転送効率の低下を避けることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１５７７１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の従来技術では、コマンドバッファを設けることにより、ＤＭＡ転送部からの割込み通知に対して、必要な処理内容をＤＭＡ転送部に供給することができる。しかしながら、プロセッサの外部の演算処理装置が演算を行うためには、演算に必要なデータの転送、演算処理、演算結果データの転送といった手順に沿った制御を逐次行う必要がある。この一連の制御を割込みによってプロセッサが直接制御を行うことは、プロセッサに対する大きな負荷となる。プロセッサが他に優先順位の高い処理を行っていて、この演算処理装置の割込み要求に対して演算処理装置への処理内容を指示できないときには、演算処理装置は処理内容の指示待ちとなる。これにより、プロセッサのアドレス空間と演算処理装置の専有メモリとの間のデータ転送効率は低下する。そこで、ＤＭＡ転送部での改善を拡張してコマンドバッファによる制御を演算処理装置全体に及ぼそうとした場合、コマンドバッファは異なる機能の制御を逐次行う必要がある。例えば、プロセッサの外部の演算処理装置が演算を行うために必要なデータの転送、演算、演算結果データの転送といった手順に沿って演算処理装置内のＤＭＡ転送部や演算装置など異なる機能の制御をコマンドバッファが逐次行う必要がある。そのため、コマンドバッファは演算処理装置が行う演算の進行状況を常に把握し、必要に応じて演算処理装置内の各機能の制御を行わなければならない。一方、演算処理装置が行う演算の内容をコマンドバッファが把握するためには、その制御内容をコマンドバッファが正確に解釈する必要があり、コマンドバッファ内部に制御内容のデコーダ等が必要になり、コマンドバッファの構成が複雑になるおそれがある。
【０００７】
本技術はこのような状況に鑑みて生み出されたものであり、簡易な構成によりプロセッサのアドレス空間と演算処理装置の専有メモリとの間のデータ転送効率を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、プロセッサのアドレス空間とは異なる専有領域を記憶する専有メモリと、上記アドレス空間と上記専有メモリとの間でデータの転送処理を行うデータ転送部と、上記専有メモリに記憶されたデータ間の演算処理を行う演算部と、上記プロセッサから受けたコマンド列の各コマンドを各々のレジスタに保持するコマンドレジスタ群と、上記データ転送部および上記演算部における処理の状態を管理するステートマシンと、上記コマンドを保持するように上記コマンドレジスタ群を制御するとともに、上記状態に応じて上記データ転送部および上記演算部の何れかに対して上記コマンドレジスタ群に保持された上記コマンドを供給するように上記コマンドレジスタ群を制御する制御部とを具備する演算処理装置である。これにより、データ転送部および演算部における処理の状態をステートマシンにより管理して、データ転送効率を向上させるという作用をもたらす。
【０００９】
また、この第１の側面において、上記ステートマシンは、上記コマンド列に対応して予め定められたコマンド数に従って上記状態を遷移させて上記状態を管理するようにしてもよい。これにより、コマンド数に基づく簡易な方法により状態を管理するという作用をもたらす。
【００１０】
また、この第１の側面において、上記コマンド列は、上記アドレス空間から上記専有メモリにデータを転送する第１のデータ転送処理を行うコマンドと、上記専有メモリに記憶されたデータ間の演算処理を行うコマンドと、上記専有メモリから上記アドレス空間にデータを転送する第２のデータ転送処理を行うコマンドとを含み、上記ステートマシンは、上記第１のデータ転送処理を行うコマンドが入力されると上記第１のデータ転送処理を行うコマンドを実行する状態に遷移させ、上記第１のデータ転送処理を行うコマンドに要する時間が経過すると上記演算処理を行うコマンドを実行する状態に遷移させ、上記演算処理を行うコマンドに要する時間が経過すると上記第２のデータ転送処理を行うコマンドを実行する状態に遷移させるようにしてもよい。これにより、コマンドに要する時間の経過に基づく簡易な方法により状態を管理するという作用をもたらす。
【００１１】
また、この第１の側面において、上記コマンドレジスタ群は、複数のサブレジスタ群を備え、上記制御部は、上記プロセッサから複数の上記コマンド列を受けた際に上記複数のサブレジスタ群毎に異なる上記コマンド列が保持されるように制御するようにしてもよい。これにより、コマンドレジスタ群へのコマンドの書込みと読出しとを並行に動作させるという作用をもたらす。
【００１２】
また、この第１の側面において、上記制御部は、上記異なるコマンド列におけるコマンドが上記データ転送部および上記演算部に対して排他的に供給されるように制御するようにしてもよい。これにより、データ転送部および演算部において排他的に処理を実行させるという作用をもたらす。
【００１３】
また、この第１の側面において、上記ステートマシンは、上記異なるコマンド列に対応してそれぞれ固有の上記状態を管理するようにしてもよい。これにより、コマンド列毎に固有の状態によって動作させるという作用をもたらす。
【００１４】
また、この第１の側面において、上記ステートマシンは、上記複数のコマンド列の状態を管理する際に上記複数のコマンド列の一のコマンド列に対応して予め定められたコマンド数および他のコマンド列の上記状態に従って上記一のコマンド列の上記状態を遷移させるようにしてもよい。これにより、他のコマンド列の状態を加味して動作させるという作用をもたらす。
【００１５】
また、この第１の側面において、上記複数のコマンド列の各々は、上記アドレス空間から上記専有メモリにデータを転送する第１のデータ転送処理を行うコマンドと、上記専有メモリに記憶されたデータ間の演算処理を行うコマンドと、上記専有メモリから上記アドレス空間にデータを転送する第２のデータ転送処理を行うコマンドとを含み、上記ステートマシンは、上記複数のコマンド列のうち第１に処理されるべきコマンド列の上記第１のデータ転送処理を行うコマンドに要する時間が経過すると上記複数のコマンド列のうち第２に処理されるべきコマンド列の上記第１のデータ転送処理を行うコマンドを実行する状態に遷移させ、上記第１に処理されるべきコマンド列の上記演算処理を行うコマンドに要する時間が経過すると上記第２に処理されるべきコマンド列の上記演算処理を行うコマンドを実行する状態に遷移させ、上記第１に処理されるべきコマンド列の上記演算処理を行うコマンドに要する時間が経過すると上記第１に処理されるべきコマンド列の上記第２のデータ転送処理を行うコマンドを実行する状態に遷移させるようにしてもよい。これにより、第１のデータ転送処理を行うコマンドに要する時間および演算処理を行うコマンドに要する時間の経過に基づく簡易な方法により状態を管理するという作用をもたらす。
【００１６】
また、この第１の側面において、上記ステートマシンは、上記第１に処理されるべきコマンド列の上記演算処理を行うコマンドに要する時間が経過し、または、上記第１に処理されるべきコマンド列の上記演算処理を行うコマンドが終了した状態に遷移すると、上記第２に処理されるべきコマンド列の上記演算処理を行うコマンドを実行する状態に遷移させるようにしてもよい。これにより、他のコマンド列の状態を加味して動作させるという作用をもたらす。
【００１７】
また、本技術の第２の側面は、プロセッサと、演算処理装置と、上記プロセッサのアドレス空間を記憶して上記演算処理装置からもアクセス可能な共有メモリとを具備する情報処理システムであって、上記演算処理装置は、上記プロセッサのアドレス空間とは異なる専有領域を記憶する専有メモリと、上記アドレス空間と上記専有メモリとの間でデータの転送処理を行うデータ転送部と、上記専有メモリに記憶されたデータ間の演算処理を行う演算部と、上記プロセッサから受けたコマンド列の各コマンドを各々のレジスタに保持するコマンドレジスタ群と、上記データ転送部および上記演算部における処理の状態を管理するステートマシンと、コマンドを保持するように上記コマンドレジスタ群を制御するとともに、上記状態に応じて上記データ転送部および上記演算部の何れかに対して上記コマンドレジスタ群に保持された上記コマンドを供給するように上記コマンドレジスタ群を制御する制御部とを備える情報処理システムである。これにより、データ転送部および演算部における処理の状態をステートマシンにより管理して、プロセッサと演算処理装置との間のデータ転送効率を向上させるという作用をもたらす。
【発明の効果】
【００１８】
本技術によれば、簡易な構成によりプロセッサのアドレス空間と演算処理装置の専有メモリとの間のデータ転送効率を向上させるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００１９】
【図１】本技術の実施の形態における情報処理システムの構成の一例を示す図である。
【図２】本技術の第１の実施の形態におけるコマンドバッファ３０１の構成の一例を示す図である。
【図３】本技術の実施の形態におけるコマンド列の一例を示す図である。
【図４】本技術の第１の実施の形態におけるステートマシン３２０が管理する状態の遷移例を示す図である。
【図５】本技術の第１の実施の形態における出力レジスタ選択フラグ３３１の制御の一例を示す図である。
【図６】本技術の実施の形態における入力レジスタ選択フラグ３３２の制御の一例を示す図である。
【図７】本技術の第２の実施の形態におけるコマンドバッファ３０１の構成の一例を示す図である。
【図８】本技術の第２の実施の形態におけるセレクタ３１３の構成の一例を示す図である。
【図９】本技術の第２の実施の形態におけるステートマシン３２１が管理する状態の遷移例を示す図である。
【図１０】本技術の第２の実施の形態におけるステートマシン３２２が管理する状態の遷移例を示す図である。
【図１１】本技術の第２の実施の形態におけるステートマシン選択フラグ３３３の制御の一例を示す図である。
【図１２】本技術の第２の実施の形態における動作タイミングの一例を示す図である。
【図１３】本技術の第２の実施の形態における動作タイミングの他の例を示す図である。
【図１４】本技術の第３の実施の形態におけるステートマシン３２１が管理する状態の遷移例を示す図である。
【図１５】本技術の第３の実施の形態におけるステートマシン３２２が管理する状態の遷移例を示す図である。
【図１６】本技術の第３の実施の形態における動作タイミングの一例を示す図である。
【図１７】本技術の第３の実施の形態における動作タイミングの他の例を示す図である。
【発明を実施するための形態】
【００２０】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（１つのステートマシンにより制御する例）
２．第２の実施の形態（２つのステートマシンにより制御する例）
３．第３の実施の形態（演算処理と演算結果の出力との並列処理を許容する例）
【００２１】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの構成の一例を示す図である。この情報処理システムは、プロセッサ１００と、共有メモリ２００と、コプロセッサ３００とを備える。これらは、コントロールバス１０１およびメモリバス１０２によって相互に接続される。
【００２２】
プロセッサ１００は、情報処理システムの全体の処理を行う装置である。コプロセッサ３００は、プロセッサ１００からの指示に従って所定の演算処理等を行う演算処理装置である。共有メモリ２００は、プロセッサ１００のアドレス空間を記憶するメモリである。共有メモリ２００には、プロセッサ１００およびコプロセッサ３００の両者からアクセスすることができる。なお、コプロセッサ３００は、特許請求の範囲に記載の演算処理装置の一例である。
【００２３】
コプロセッサ３００は、コマンドバッファ３０１と、バスインターフェース３６０と、データ転送部３７０と、演算部３８０と、専有メモリ３９０とを備える。コマンドバッファ３０１は、コマンド保持部３１０と、ステートマシン３２０と、制御部３３０とを備える。
【００２４】
コマンドバッファ３０１は、内部に専用の制御命令（コマンド）を保持するコマンド保持部３１０を備える。このコマンドは、プロセッサ１００からコントロールバス１０１を介してコマンド保持部３１０に書き込まれる。
【００２５】
ステートマシン３２０は、データ転送部３７０および演算部３８０における処理の状態を管理するものである。
【００２６】
コマンド保持部３１０は、プロセッサ１００から受けたコマンド列の各コマンドを、保持するものである。このコマンド保持部３１０は、制御部３３０による制御に従って、各コマンドを保持する。
【００２７】
制御部３３０は、コマンド保持部３１０を制御するものである。この制御部３３０は、プロセッサ１００から受けたコマンド列の各コマンドを保持するようコマンド保持部３１０を制御する。また、この制御部３３０は、ステートマシン３２０が管理する状態に応じて、データ転送部３７０および演算部３８０の何れかに対してコマンド保持部３１０に保持されたコマンドを供給するようにコマンド保持部３１０を制御する。
【００２８】
バスインターフェース３６０は、コントロールバス１０１とコマンドバッファ３０１との間のインターフェースである。プロセッサ１００とコプロセッサ３００内のコマンドバッファ３０１との間は、コントロールバス１０１を経由して接続される。
【００２９】
専有メモリ３９０は、プロセッサ１００のアドレス空間とは異なる専有領域を記憶するメモリである。
【００３０】
演算部３８０は、専有メモリ３９０に記憶されたデータ間の演算処理を行うものである。
【００３１】
データ転送部３７０は、プロセッサ１００のアドレス空間と専有メモリ３９０との間でデータの転送処理を行うものである。このデータ転送部３７０は、データの転送処理を行う際、共有メモリ２００と専有メモリ３９０との間でＤＭＡ（Direct Memory Access）転送を行う。そのため、データ転送部３７０には、ＤＭＡ転送の際に開始アドレスや転送データ量などが設定される。このデータ転送部３７０と、プロセッサ１００と、共有メモリ２００との間は、メモリバス１０２を経由して接続される。
【００３２】
データ転送部３７０および演算部３８０は、専有メモリ３９０と接続されており、データ転送部３７０および演算部３８０は専有メモリ３９０に対してそれぞれ読出しおよび書込みのアクセスを実行することができる。
【００３３】
図２は、本技術の第１の実施の形態におけるコマンドバッファ３０１の構成の一例を示す図である。このコマンドバッファ３０１は、レジスタ群３１２と、スイッチ３１１と、セレクタ３１３と、ステートマシン３２０と、出力レジスタ選択フラグ３３１と、入力レジスタ選択フラグ３３２とを備える。
【００３４】
レジスタ群３１２は、プロセッサ１００から受けたコマンド列の各コマンドを保持するレジスタである。この例では、レジスタ群３１２は、レジスタＡ１乃至Ａ３およびＢ１乃至Ｂ３を備える。レジスタＡ１およびレジスタＢ１は、共有メモリ２００のデータを専有メモリ３９０に書き込む際の、データ転送部３７０に対するコマンドを保持するレジスタである。レジスタＡ２およびレジスタＢ２は、演算部３８０のコマンドを保持するレジスタである。レジスタＡ３およびレジスタＢ３は、専有メモリ３９０のデータを共有メモリ２００に書き込む際の、データ転送部３７０に対するコマンドを保持するレジスタである。これらレジスタＡ１乃至Ａ３およびＢ１乃至Ｂ３は、それぞれ複数のコマンドを格納することができ、格納した順番に読み出すことのできるＦＩＦＯ（First-In First-Out）機能を有する。なお、レジスタ群３１２は、特許請求の範囲に記載のコマンドレジスタ群の一例である。
【００３５】
レジスタ群３１２から見ると、レジスタＡ１乃至Ａ３およびレジスタＢ１乃至Ｂ３は、それぞれサブレジスタ群として把握され、互いにサブレジスタ群毎に異なるコマンド列が保持されるように制御される。すなわち、第１のサブレジスタ群であるレジスタＡ１乃至Ａ３は第１のコマンド列を保持し、第２のサブレジスタ群であるレジスタＢ１乃至Ｂ３は第２のコマンド列を保持する。
【００３６】
スイッチ３１１は、プロセッサ１００からのコマンドをレジスタＡ１乃至Ａ３およびＢ１乃至Ｂ３の何れかに振り分けるスイッチである。このスイッチ３１１は、レジスタＡ１乃至Ａ３またはＢ１乃至Ｂ３のどちらかにコマンドを入力するかを、入力レジスタ選択フラグ３３２に従って判断する。また、このスイッチ３１１は、レジスタＡ１乃至Ａ３の何れか、または、レジスタＢ１乃至Ｂ３の何れかのアドレス選択を、コントロールバス１０１からのアドレス情報に従って判断する。
【００３７】
セレクタ３１３は、レジスタＡ１乃至Ａ３およびＢ１乃至Ｂ３の何れかの出力を選択して、データ転送部３７０または演算部３８０に供給するセレクタである。レジスタＡ１、Ａ３、Ｂ１およびＢ３の出力は、データ転送部３７０に供給される。レジスタＡ２およびＢ２の出力は、演算部３８０に供給される。セレクタ３１３は、レジスタＡ１乃至Ａ３およびＢ１乃至Ｂ３のどちらからコマンドを出力するかを、出力レジスタ選択フラグ３３１に従って判断する。
【００３８】
ステートマシン３２０は、データ転送部３７０および演算部３８０における処理の状態を管理するステートマシンである。このステートマシン３２０により管理される状態の遷移については後述する。
【００３９】
出力レジスタ選択フラグ３３１は、データ転送部３７０および演算部３８０にレジスタＡ１乃至Ａ３およびＢ１乃至Ｂ３のどちらからコマンドを出力するかをセレクタ３１３が選択するためのフラグである。
【００４０】
入力レジスタ選択フラグ３３２は、レジスタＡ１乃至Ａ３またはＢ１乃至Ｂ３のどちらにコマンドを入力するかをスイッチ３１１が決定するためのフラグである。
【００４１】
図３は、本技術の実施の形態におけるコマンド列の一例を示す図である。この例では、コマンド列１および２の２つのコマンド列を想定する。なお、コマンド列１は特許請求の範囲に記載の第１に処理されるべきコマンド列の一例であり、コマンド列２は特許請求の範囲に記載の第２に処理されるべきコマンド列の一例である。
【００４２】
コマンド列１においては、まず、演算を行うために必要なデータ列Ａｉ、Ｂｉ、Ｃｉ（ｉ=０，１，２,…,ｎ。以下同様）を、共有メモリ２００から専有メモリ３９０にコピー（ダウンロード）する処理（ＤＭＡ＿Ｄ処理）を想定する。以下では、データ列Ａｉを転送する処理をＤＭＡ＿Ｄ処理１−１、データ列Ｂｉを転送する処理をＤＭＡ＿Ｄ処理２−１、データ列Ｃｉを転送する処理をＤＭＡ＿Ｄ処理３−１と称する。なお、ＤＭＡ＿Ｄ処理は、特許請求の範囲に記載の第１のデータ転送処理の一例である。
【００４３】
また、専有メモリ３９０に用意されたデータ列について演算（calculation）処理（ＣＡＬＣ処理）を行って、その演算結果を専有メモリ３９０に書き込む処理を想定する。ＡｉおよびＣｉに関して、Ｄｉ＝ｆ（Ａｉ，Ｃｉ）の処理を行い、データ列Ｄｉを専有メモリ３９０に書き込む処理をＣＡＬＣ処理１−１と称する。ＢｉおよびＣｉに関して、Ｅｉ＝ｆ（Ｂｉ，Ｃｉ）の処理を行い、データ列Ｅｉを専有メモリ３９０に書き込む処理をＣＡＬＣ処理２−１と称する。
【００４４】
そして、演算結果を専有メモリ３９０から共有メモリ２００にコピー（アップロード）する処理（ＤＭＡ＿Ｕ処理）を想定する。データ列Ｄｉを専有メモリ３９０から共有メモリ２００にコピーする処理をＤＭＡ＿Ｕ処理１−１と称する。データ列Ｅｉを専有メモリ３９０から共有メモリ２００にコピーする処理をＤＭＡ＿Ｕ処理２−１と称する。なお、ＤＭＡ＿Ｕ処理は、特許請求の範囲に記載の第２のデータ転送処理の一例である。
【００４５】
このようなデータ列Ａｉ、Ｂｉ、Ｃｉから演算結果のデータ列ＤｉおよびＥｉを得ることが、コマンド列１におけるコプロセッサ３００の処理内容である。
【００４６】
コマンド列２においては、演算を行うために必要なデータ列Ｆｉ、Ｇｉを、共有メモリ２００から専有メモリ３９０にコピー（ダウンロード）する処理（ＤＭＡ＿Ｄ処理）を想定する。以下では、データ列Ｆｉを転送する処理をＤＭＡ＿Ｄ処理１−２、データ列Ｇｉを転送する処理をＤＭＡ＿Ｄ処理２−２と称する。なお、ＤＭＡ＿Ｄ処理２−３としては、転送されるデータ列がないため、何もせずに処理をスキップすることになる。
【００４７】
また、専有メモリ３９０に用意されたデータ列について演算処理（ＣＡＬＣ処理）を行って、その演算結果を専有メモリ３９０に書き込む処理を想定する。ＦｉおよびＧｉに関して、Ｊｉ＝ｆ（Ｆｉ，Ｇｉ）の処理を行い、データ列Ｊｉを専有メモリ３９０に書き込む処理をＣＡＬＣ処理１−２と称する。ＦｉおよびＪｉに関して、Ｋｉ＝ｆ（Ｆｉ，Ｊｉ）の処理を行い、データ列Ｋｉを専有メモリ３９０に書き込む処理をＣＡＬＣ処理２−２と称する。
【００４８】
そして、演算結果を専有メモリ３９０から共有メモリ２００にコピー（アップロード）する処理（ＤＭＡ＿Ｕ処理）を想定する。データ列Ｊｉを専有メモリ３９０から共有メモリ２００にコピーする処理をＤＭＡ＿Ｕ処理１−２と称する。データ列Ｋｉを専有メモリ３９０から共有メモリ２００にコピーする処理をＤＭＡ＿Ｕ処理２−２と称する。
【００４９】
このようなデータ列Ｆｉ、Ｇｉから演算結果のデータ列ＪｉおよびＫｉを得ることが、コマンド列２におけるコプロセッサ３００の処理内容である。
【００５０】
図４は、本技術の第１の実施の形態におけるステートマシン３２０が管理する状態の遷移例を示す図である。この第１の実施の形態では、ステートマシン３２０が管理する状態は、状態＃１、＃３、＃５および＃６の４つの状態の何れかである。
【００５１】
状態＃１は、図２のレジスタ群３１２がコマンドを保持しておらず、プロセッサ１００からコマンドが入力されるのを待機している状態である。この状態＃１においてプロセッサ１００からコマンド（例えば図３におけるコマンド列１）が入力されると、次の状態＃３に遷移する。
【００５２】
状態＃３は、データ転送部３７０が共有メモリ２００から専有メモリ３９０にデータをＤＭＡ転送（ＤＭＡ＿Ｄ処理）している状態である。この状態＃３において共有メモリ２００から専有メモリ３９０へのデータ転送が終了すると、次の状態＃５に遷移する。
【００５３】
状態＃５は、専有メモリ３９０に転送されたデータについて演算部３８０が演算（ＣＡＬＣ処理）している状態である。この状態＃５において演算部３８０の演算が終了すると、次の状態＃６に遷移する。
【００５４】
状態＃６は、データ転送部３７０が専有メモリ３９０から共有メモリ２００にデータをＤＭＡ転送（ＤＭＡ＿Ｕ処理）している状態である。この状態＃６において専有メモリ３９０から共有メモリ２００へのデータ転送が終了すると、最初の状態＃１に遷移する。
【００５５】
これら状態遷移においては、各機能ブロックからの処理終了の通知を待って遷移する手法と、一定時間待機した後に自動的に次の処理を行う手法の何れの手法も採用することができる。以下では前者を想定する。ＤＭＡ＿Ｄ処理、ＣＡＬＣ処理およびＤＭＡ＿Ｕ処理の各処理については、それぞれに要するコマンド数は予め定められているものとする。これにより、ステートマシン３２０は、各コマンドのデコード処理を行うことなく、状態を遷移させることができる。例えば、状態＃３においてＤＭＡ＿Ｄ処理を行うコマンドに要する時間が経過すると、ステートマシン３２０は、ＣＡＬＣ処理を行うコマンドを実行する状態＃５に状態を遷移させる。また、ＣＡＬＣ処理を行うコマンドに要する時間が経過すると、ステートマシン３２０は、ＤＭＡ＿Ｕ処理を行うコマンドを実行する状態＃６に状態を遷移させる。
【００５６】
図５は、本技術の第１の実施の形態における出力レジスタ選択フラグ３３１の制御の一例を示す図である。
【００５７】
状態検出回路３４１は、ステートマシン３２０における状態遷移を監視する回路である。状態検出回路３４１は、状態＃６から状態＃１への遷移を検出すると、有効信号を表すパルスをフリップフロップ３４２の有効端子ＥＮに出力する。
【００５８】
フリップフロップ３４２は、「０」または「１」の何れかを保持するフリップフロップである。フリップフロップ３４２の出力端子Ｑは、反転器３４３を介して入力端子Ｄに接続されており、有効端子ＥＮにパルスが入力されるたびに保持内容が反転する。
【００５９】
出力レジスタ選択フラグ３３１は、フリップフロップ３４２の出力端子Ｑの値を保持する。したがって、この出力レジスタ選択フラグ３３１の内容は、ステートマシン３２０の状態が状態＃６から状態＃１に遷移するたびに反転することになる。すなわち、データ転送部３７０および演算部３８０にレジスタＡ１乃至Ａ３およびＢ１乃至Ｂ３のどちらからコマンドを出力するかは、ステートマシン３２０の状態が状態＃６から状態＃１に遷移するたびに変更されて、交互に選択される。
【００６０】
図６は、本技術の実施の形態における入力レジスタ選択フラグ３３２の制御の一例を示す図である。
【００６１】
書込み監視回路３４４は、レジスタＡ１乃至Ａ３およびＢ１乃至Ｂ３に対する書込みの完了を監視する回路である。書込み検出回路３４５は、レジスタＡ３への書込みの完了を検出する回路である。書込み検出回路３４６は、レジスタＢ３への書込みの完了を検出する回路である。ＳＲフリップフロップ３４７は、「０」または「１」の何れかを保持するフリップフロップである。
【００６２】
書込み検出回路３４５は、レジスタＡ３への書込みの完了を検出すると、セット信号を表すパルスをＳＲフリップフロップ３４７のセット端子ＳＥＴに出力する。このセット信号により、ＳＲフリップフロップ３４７は、「１」を保持するようになる。一方、書込み検出回路３４６は、レジスタＢ３への書込みの完了を検出すると、リセット信号を表すパルスをＳＲフリップフロップ３４７のリセット端子ＲＥＳＥＴに出力する。このリセット信号により、ＳＲフリップフロップ３４７は、「０」を保持するようになる。なお、これら書込み検出回路３４５および３４６における検出は、コマンド自体に例えば処理スタートのようなフラグを用意してもよく、また、ステートマシン３２０自体にレジスタを持たせてプロセッサ１００が書き込むようにしてもよい。以下では、コマンドの中に書込みが終了して実行可能であることを示すレジスタが含まれることを想定する。
【００６３】
入力レジスタ選択フラグ３３２は、ＳＲフリップフロップ３４７の出力端子Ｑの値を保持する。したがって、この入力レジスタ選択フラグ３３２の内容は、レジスタＡ３またはＢ３への書込みが完了するたびに反転することになる。すなわち、レジスタＡ１乃至Ａ３またはＢ１乃至Ｂ３のどちらにコマンドを入力するかは、レジスタＡ３またはＢ３への書込みが完了するたびに変更されて、交互に選択される。
【００６４】
このような出力レジスタ選択フラグ３３１および入力レジスタ選択フラグ３３２の制御により、レジスタＡ１乃至Ａ３およびＢ１乃至Ｂ３へのコマンドの書込みと読出しとを独立に切り替えることができる。
【００６５】
［情報処理システムの動作］
ここでは、上述のコマンド列を想定して、情報処理システムの動作を説明する。まず、プロセッサ１００は、コマンド列１のＤＭＡ＿Ｄ処理１−１乃至３−１に必要なコマンドを、コントロールバス１０１を介してレジスタ群３１２に書き込む。このとき、出力レジスタ選択フラグ３３１および入力レジスタ選択フラグ３３２の初期値は、ともに「０」であるとする。
【００６６】
ＤＭＡ＿Ｄ処理１−１乃至３−１に必要なコマンドは、スイッチ３１１に入力される。スイッチ３１１は、入力されたコマンドがＤＭＡ＿Ｄ処理１−１乃至３−１に必要なコマンドであることを、例えばコントロールバス１０１のアドレス情報によって把握できる。ここでは、入力レジスタ選択フラグ３３２の値が「０」であるため、ＤＭＡ＿Ｄ処理１−１乃至３−１に必要なコマンドはレジスタＡ１に書き込まれる。
【００６７】
また、プロセッサ１００は、ＣＡＬＣ処理１−１および２−１に必要なコマンドを、コントロールバス１０１を介してレジスタ群３１２に書き込む。このとき、入力レジスタ選択フラグ３３２の値は「０」であるため、ＣＡＬＣ処理１−１および２−１に必要なコマンドはレジスタＡ２に書き込まれる。
【００６８】
さらに、プロセッサ１００は、ＤＭＡ＿Ｕ処理１−１および２−１に必要なコマンドを、コントロールバス１０１を介してレジスタ群３１２に書き込む。このとき、入力レジスタ選択フラグ３３２の値は「０」であるため、ＤＭＡ＿Ｕ処理１−１および２−１に必要なコマンドはレジスタＡ３に書き込まれる。
【００６９】
なお、プロセッサ１００は、コマンドをレジスタ群３１２に書き込むよう指示するが、レジスタ群３１２の内部でどのレジスタに書き込まれるのかを知る必要はない。すなわち、プロセッサ１００からは、レジスタ群３１２が一種のＦＩＦＯメモリとして見えていることになる。
【００７０】
コマンド列１の最後のＤＭＡ＿Ｕ処理２−１に必要なコマンドがレジスタＡ３に書き込まれると、入力レジスタ選択フラグ３３２は「０」から「１」に反転する。
【００７１】
続いて処理すべき他のコマンド列２がある場合は、プロセッサ１００は、次のＤＭＡ＿Ｄ処理１−２乃至３−２に必要なコマンドを、コントロールバス１０１を介してレジスタ群３１２に書き込む。入力レジスタ選択フラグ３３２が「１」であるため、スイッチ３１１は、ＤＭＡ＿Ｄ処理１−２乃至３−２に必要なコマンドをレジスタＢ１に書き込むように制御する。
【００７２】
また、プロセッサ１００は、ＣＡＬＣ処理１−２および２−２に必要なコマンドを、コントロールバス１０１を介してレジスタ群３１２に書き込む。このとき、入力レジスタ選択フラグ３３２の値は「１」であるため、ＣＡＬＣ処理１−２および２−２に必要なコマンドはレジスタＢ２に書き込まれる。
【００７３】
さらに、プロセッサ１００は、ＤＭＡ＿Ｕ処理１−２および２−２に必要なコマンドを、コントロールバス１０１を介してレジスタ群３１２に書き込む。このとき、入力レジスタ選択フラグ３３２の値は「１」であるため、ＤＭＡ＿Ｕ処理１−２および２−２に必要なコマンドはレジスタＢ３に書き込まれる。
【００７４】
コマンド列２の最後のＤＭＡ＿Ｕ処理２−２に必要なコマンドがレジスタＢ３に書き込まれると、入力レジスタ選択フラグ３３２は「１」から「０」に反転する。
【００７５】
次に、コマンド列１に関する状態の遷移について着目する。出力レジスタ選択フラグ３３１が「０」のとき、レジスタＡ１乃至Ａ３にコマンドが書き込まれたことが書込み検出回路３４５によって検出されると、ステートマシン３２０の状態は、状態＃１から状態＃３に遷移する。
【００７６】
ここで、例えばプロセッサ１００が割込みを受けて処理を中断していて演算部３８０の実行内容が確定していない場合であっても、データ転送部３７０は処理を進めることが可能である。したがって、レジスタＡ１のみが実行可能となっていれば、レジスタＡ２およびＡ３が実行可能となっていなくても、データ転送部３７０の処理を実行することができる。この場合には、レジスタＡ１の中の実行可のレジスタに「１」が書き込まれたことを検出することにより、ステートマシン３２０は状態＃１から状態＃３に遷移する。
【００７７】
このとき、出力レジスタ選択フラグ３３１が「０」であるため、状態＃３に遷移したステートマシン３２０は、セレクタ３１３を制御して、レジスタＡ１の内容のうち、ＤＭＡ＿Ｄ処理１−１のコマンドをデータ転送部３７０に供給する。ステートマシン３２０が状態＃３であるときには、データ転送部３７０による専有メモリ３９０から共有メモリ２００への書戻しに関しては、動作しないような設定を供給する。また、演算部３８０に関しては、演算を行わないような設定を供給する。
【００７８】
レジスタＡ１のコマンドを受けてデータ転送部３７０はＤＭＡ＿Ｄ処理１−１の処理を実行し、しかるべき後にその処理が終了したことをステートマシン３２０に通知する。ステートマシン３２０は、ＤＭＡ＿Ｄ処理１−１の処理終了の通知を受けると、セレクタ３１３を制御してレジスタＡ１を選択させる。セレクタ３１３は、レジスタＡ１内に書き込まれた、ＤＭＡ＿Ｄ処理２−１のコマンドをデータ転送部３７０に供給する。データ転送部３７０はＤＭＡ＿Ｄ処理２−１の処理を実行し、しかるべき後にその処理が終了したことをステートマシン３２０に通知する。
【００７９】
ＤＭＡ＿Ｄ処理３−１に関しても、同様の処理が行われ、データ転送部３７０からの処理の終了通知をステートマシン３２０が受け取ると、ステートマシン３２０は状態＃５に遷移する。
【００８０】
出力レジスタ選択フラグ３３１が「０」であるため、状態＃５に遷移したステートマシン３２０はセレクタ３１３を制御して、レジスタＡ２の内容のうち、ＣＡＬＣ処理１−１のコマンドを演算部３８０に供給する。ステートマシン３２０が状態＃５であるときには、データ転送部３７０に関しては、動作しないような設定を供給する。
【００８１】
演算部３８０はＣＡＬＣ処理１−１の処理を実行し、しかるべき後にその処理が終了したことをステートマシン３２０に通知する。ステートマシン３２０は、ＣＡＬＣ処理１−１の処理終了の通知を受けると、セレクタ３１３を制御してレジスタＡ２を選択させる。セレクタ３１３はレジスタＡ２に書き込まれた、ＣＡＬＣ処理２−１のコマンドを演算部３８０に供給する。
【００８２】
演算部３８０はＣＡＬＣ処理２−１の処理を実行し、しかるべき後にその処理が終了したことをステートマシン３２０に通知する。ステートマシン３２０はＣＡＬＣ処理２−１の処理終了の通知を受けると、状態＃６に遷移する。
【００８３】
このとき、出力レジスタ選択フラグ３３１が「０」であるため、状態＃６に遷移したステートマシン３２０は、セレクタ３１３を制御してレジスタＡ３を選択させる。セレクタ３１３はレジスタＡ３に書き込まれた、ＤＭＡ＿Ｕ処理１−１のコマンドをデータ転送部３７０に供給する。状態＃６では、データ転送部３７０による共有メモリ２００から専有メモリ３９０への書込みに関しては、動作しないような設定を供給する。また、演算部３８０に関しては、演算を行わないような設定を供給する。
【００８４】
データ転送部３７０は、ＤＭＡ＿Ｕ処理１−１の処理を実行し、しかるべき後にその処理が終了したことをステートマシン３２０に通知する。ステートマシン３２０は、ＤＭＡ＿Ｕ処理１−１の終了通知を受けると、セレクタ３１３を制御してレジスタＡ３を選択させる。セレクタ３１３はレジスタＡ３に書き込まれた、ＤＭＡ＿Ｕ処理２−１のコマンドをデータ転送部３７０に供給する。データ転送部３７０はＤＭＡ＿Ｕ処理２−１の処理を実行し、しかるべき後にその処理が終了したことをステートマシン３２０に通知する。
【００８５】
ステートマシン３２０は、ＤＭＡ＿Ｕ処理２−１の終了の通知を受けると、コマンドに含まれていた実行可能を示すレジスタを「０」に書き換えることにより、プロセッサ１００に対してコマンド列１の一連の処理が終了したことを通知して、状態＃１に遷移する。また、出力レジスタ選択フラグ３３１は「０」から「１」に遷移する。
【００８６】
状態＃１に遷移したステートマシン３２０は、出力レジスタ選択フラグ３３１が「１」になっているため、レジスタＢ１に含まれている実行可能を示すレジスタが「１」になっていることを検出して、状態＃３に遷移する。そして、同様の手順により、レジスタＢ１乃至Ｂ３に保持されたコマンド列２のコマンドをデータ転送部３７０および演算部３８０に供給する。
【００８７】
プロセッサ１００は、コマンド列２の一連の処理の終了の通知を受けると、レジスタ群３１２に対して新たなコマンド列３の書込みを行う。このとき、入力レジスタ選択フラグ３３２が「０」を示すため、レジスタ群３１２はプロセッサ１００からの新たなコマンドをスイッチ３１１によって、レジスタＡ１乃至Ａ３に書き込む。そして、コマンド列３の最後のレジスタＢ３に格納されている処理を全て終了すると、出力レジスタ選択フラグ３３１は再び「１」から「０」に遷移する。
【００８８】
このようにして、プロセッサ１００から供給されたコマンドは逐次実行されていく。コマンド列１の各コマンドはレジスタＡ１乃至Ａ３に保持される。コマンド列２の各コマンドはレジスタＢ１乃至Ｂ３に保持される。新たなコマンドがない場合には、ステートマシン３２０は状態＃１において新たなコマンドを待ち続ける。
【００８９】
このように、この第１の実施の形態では、コマンド列に対応して予め定められたコマンド数に従ってステートマシン３２０が状態を遷移させて、その状態に従って各部が動作する。これにより、簡易な構成によりプロセッサ１００のアドレス空間を記憶する共有メモリ２００とコプロセッサ３００の専有メモリ３９０との間のデータ転送効率を向上させることができる。また、コマンド列ごとに使用するレジスタを、レジスタＡ１乃至３とＢ１乃至Ｂ３とで選択して切り替えることにより、コマンド列同士でレジスタへの書込みと読出しを並行して行うことができる。
【００９０】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、１つのステートマシン３２０によりコプロセッサ３００の状態を制御する例について説明したが、この第２の実施の形態では２つのステートマシンによりコプロセッサ３００の状態を制御する例について説明する。すなわち、この第２の実施の形態では、異なるコマンド列に対応してそれぞれ異なるステートマシンを割り当てて、各ステートマシンによりコマンド列毎に固有の状態を管理する。なお、情報処理システムの全体構成については上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
［情報処理システムの構成］
図７は、本技術の第２の実施の形態におけるコマンドバッファ３０１の構成の一例を示す図である。この第２の実施の形態のコマンドバッファ３０１は、レジスタ群３１２、スイッチ３１１、セレクタ３１３、入力レジスタ選択フラグ３３２、および、スイッチ３３４を備える点においては、上述の第１の実施の形態と同様である。一方、この第２の実施の形態のコマンドバッファ３０１は、ステートマシン３２０に代えて、２つのステートマシン３２１および３２２を備える。また、この第２の実施の形態のコマンドバッファ３０１はさらに、ステートマシン選択フラグ３３３、スイッチ３３４および反転部３３５を備える。
【００９１】
ステートマシン３２１および３２２は、データ転送部３７０および演算部３８０における処理の状態を、コマンド列毎に管理するステートマシンである。例えば、コマンド列１に関する状態をステートマシン３２１が管理し、それに続くコマンド列２に関する状態をステートマシン３２２が管理することが想定される。
【００９２】
ステートマシン選択フラグ３３３は、ステートマシン３２１および３２２の何れかを選択するためのフラグである。このステートマシン選択フラグ３３３の値は、ステートマシン３２１、３２２およびセレクタ３１３に供給される。
【００９３】
ステートマシン選択フラグ３３３が「０」を示すときには、ステートマシン３２１によって管理される状態に従って処理が行われる。一方、ステートマシン選択フラグ３３３が「１」を示すときには、ステートマシン３２２によって管理される状態に従って処理が行われる。
【００９４】
レジスタ群３１２は、新たなコマンド列の書込みに先立って初期化される。そのため、レジスタの初期化命令がスイッチ３３４を介してステートマシン３２１または３２２に供給される。スイッチ３３４は、初期化命令をステートマシン３２１および３２２の何れかに振り分けるスイッチである。このスイッチ３３４は、レジスタＡ１乃至Ａ３またはＢ１乃至Ｂ３のどちらかに初期化命令を入力するかを、入力レジスタ選択フラグ３３２に従って判断する。
【００９５】
反転部３３５は、ステートマシン選択フラグ３３３の値を反転する回路である。これにより、ステートマシン３２１および３２２には、互いに相対する値がステートマシン選択フラグ３３３から供給されることになる。
【００９６】
スイッチ３３４および３１１は、入力レジスタ選択フラグ３３２の値に従って制御される。すなわち、入力レジスタ選択フラグ３３２が「０」を示すときには、スイッチ３１１はコマンドをレジスタＡ１乃至Ａ３に書き込む。また、このとき、スイッチ３３４は、プロセッサ１００からの初期化信号をステートマシン３２１に供給する。一方、入力レジスタ選択フラグ３３２が「１」を示すときには、スイッチ３１１はコマンドをレジスタＢ１乃至Ｂ３に書き込む。また、このとき、スイッチ３３４は、プロセッサ１００からの初期化信号をステートマシン３２２に供給する。
【００９７】
図８は、本技術の第２の実施の形態におけるセレクタ３１３の構成の一例を示す図である。このセレクタ３１３は、制御部３１３９と、選択器３１３１、３１３２および３１３３とを備える。
【００９８】
制御部３１３９は、選択器３１３１乃至３１３３に選択信号を供給するものである。この制御部３１３９は、ステートマシン選択フラグ３３３の値に従ってステートマシン３２１または３２２によって管理される状態を選択し、その状態に応じてレジスタＡ１乃至Ａ３またはＢ１乃至Ｂ３の値を出力する。ステートマシン３２１および３２２のうち、選択された方の状態が状態＃３を示す場合には、選択器３１３１においてレジスタＡ１およびＢ１の何れかを選択して、データ転送部３７０に供給する。その状態が状態＃５を示す場合には、選択器３１３２においてレジスタＡ２およびＢ２の何れかを選択して、演算部３８０に供給する。その状態が状態＃６を示す場合には、選択器３１３３においてレジスタＡ３およびＢ３の何れかを選択して、データ転送部３７０に供給する。
【００９９】
ただし、データ転送部３７０または演算部３８０に供給すべきコマンドがない場合には、動作しないことを表す「ＮＯＰ」が選択される。
【０１００】
図９は、本技術の第２の実施の形態におけるステートマシン３２１が管理する状態の遷移例を示す図である。図１０は、本技術の第２の実施の形態におけるステートマシン３２２が管理する状態の遷移例を示す図である。これらの状態は、第１の実施の形態における状態＃１、＃３、＃５および＃６の４つの状態に加えて、状態＃０、＃２および＃４の計７つの状態の何れかとなる。
【０１０１】
状態＃０は、初期化命令を待っている状態である。この状態＃０においてプロセッサ１００から初期化命令が入力されると、次の状態＃１に遷移する。
【０１０２】
状態＃１は、レジスタ群３１２がコマンドを保持しておらず、プロセッサ１００からコマンドが入力されるのを待機している状態である。この状態＃１においてプロセッサ１００からコマンドが入力された際、ステートマシン選択フラグ３３３によって自身のステートマシンが選択されていれば、状態＃３に遷移する。すなわち、ステートマシン３２１においてはステートマシン選択フラグ３３３が「０」を示している場合であり、ステートマシン３２２においてはステートマシン選択フラグ３３３が「１」を示している場合には、状態＃３に遷移する。
【０１０３】
一方、この状態＃１においてプロセッサ１００からコマンドが入力された際、ステートマシン選択フラグ３３３によって自身のステートマシンが選択されていなければ、状態＃２に遷移する。すなわち、ステートマシン３２１においてはステートマシン選択フラグ３３３が「１」を示している場合であり、ステートマシン３２２においてはステートマシン選択フラグ３３３が「０」を示している場合には、状態＃２に遷移する。
【０１０４】
状態＃２は、データ転送部３７０が共有メモリ２００から専有メモリ３９０にデータをＤＭＡ転送する処理（ＤＭＡ＿Ｄ処理）の終了を待機している状態である。これは、ステートマシン３２１および３２２のうちの他方の状態が状態＃３となってＤＭＡ＿Ｄ処理を行っているため、データ転送部３７０における衝突を避けるために待ちが生じている状態である。この状態＃２において、他方におけるＤＭＡ＿Ｄ処理が終了すると、状態＃３に遷移する。
【０１０５】
状態＃３は、データ転送部３７０が共有メモリ２００から専有メモリ３９０にデータをＤＭＡ転送（ＤＭＡ＿Ｄ処理）している状態である。この状態＃３において共有メモリ２００から専有メモリ３９０へのデータ転送が終了した際、ステートマシン選択フラグ３３３によって自身のステートマシンが選択されていれば、状態＃５に遷移する。すなわち、ステートマシン３２１においてはステートマシン選択フラグ３３３が「０」を示している場合であり、ステートマシン３２２においてはステートマシン選択フラグ３３３が「１」を示している場合には、状態＃５に遷移する。
【０１０６】
一方、この状態＃３においてＤＭＡ＿Ｄ処理が終了した際、ステートマシン選択フラグ３３３によって自身のステートマシンが選択されていなければ、状態＃４に遷移する。すなわち、ステートマシン３２１においてはステートマシン選択フラグ３３３が「１」を示している場合であり、ステートマシン３２２においてはステートマシン選択フラグ３３３が「０」を示している場合には、状態＃４に遷移する。
【０１０７】
状態＃４は、演算部３８０が演算している処理（ＣＡＬＣ処理）の終了を待機している状態である。これは、ステートマシン３２１および３２２のうちの他方の状態が状態＃５となってＣＡＬＣ処理を行っているため、演算部３８０における衝突を避けるために待ちが生じている状態である。この状態＃４において、他方におけるＣＡＬＣ処理が終了すると、状態＃５に遷移する。
【０１０８】
状態＃５は、専有メモリ３９０に転送されたデータについて演算部３８０が演算（ＣＡＬＣ処理）している状態である。この状態＃５において演算部３８０の演算が終了すると、次の状態＃６に遷移する。
【０１０９】
状態＃６は、データ転送部３７０が専有メモリ３９０から共有メモリ２００にデータをＤＭＡ転送（ＤＭＡ＿Ｕ処理）している状態である。この状態＃６において専有メモリ３９０から共有メモリ２００へのデータ転送が終了すると、最初の状態＃０に遷移する。
【０１１０】
このような状態の遷移により、異なるコマンド列におけるコマンドがデータ転送部３７０および演算部３８０に対して排他的に供給されるように制御される。また、ステートマシン３２１および３２２は、異なるコマンド列１およびコマンド列２に対応して、それぞれ固有の状態を管理する。
【０１１１】
図１１は、本技術の第２の実施の形態におけるステートマシン選択フラグ３３３の制御の一例を示す図である。状態検出回路３５１は、ステートマシン３２１における状態遷移を監視する回路である。状態検出回路３５２は、ステートマシン３２２における状態遷移を監視する回路である。ＳＲフリップフロップ３５３は、「０」または「１」の何れかを保持するフリップフロップである。
【０１１２】
状態検出回路３５１は、ステートマシン３２１において状態＃０を検出すると、セット信号を表すパルスをＳＲフリップフロップ３５３のセット端子ＳＥＴに出力する。このセット信号により、ＳＲフリップフロップ３５３は、「１」を保持するようになる。
【０１１３】
状態検出回路３５２は、ステートマシン３２２において状態＃０を検出すると、リセット信号を表すパルスをＳＲフリップフロップ３５３のリセット端子ＲＥＳＥＴに出力する。このリセット信号により、ＳＲフリップフロップ３５３は、「０」を保持するようになる。
【０１１４】
ステートマシン選択フラグ３３３は、ＳＲフリップフロップ３５３の出力端子Ｑの値を保持する。したがって、このステートマシン選択フラグ３３３の内容は、ステートマシン３２１および３２２の一方が状態＃０に遷移するたびに反転することになる。すなわち、データ転送部３７０および演算部３８０にレジスタＡ１乃至Ａ３およびＢ１乃至Ｂ３のどちらからコマンドを出力するかは、ステートマシン３２１および３２２の一方の状態が状態＃０に遷移するたびに変更されて、交互に選択される。
【０１１５】
なお、入力レジスタ選択フラグ３３２の制御については、上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
【０１１６】
［情報処理システムの動作］
ここでは、上述のコマンド列を想定して、情報処理システムの動作を説明する。まず、プロセッサ１００は、コマンド列１のＤＭＡ＿Ｄ処理１−１乃至３−１に必要なコマンドを、コントロールバス１０１を介してレジスタ群３１２に書き込む。このとき、入力レジスタ選択フラグ３３２およびステートマシン選択フラグ３３３の初期値は「０」であるとする。
【０１１７】
プロセッサ１００は、コマンド列１を供給する前に、初期化命令をレジスタ群３１２に対して発行する。このとき、入力レジスタ選択フラグ３３２が「０」を示すため、レジスタＡ１乃至Ａ３が初期化される。また、この初期化命令は、ステートマシン選択フラグ３３３が「０」を示すため、スイッチ３３４を介してステートマシン３２１を状態＃０から状態＃１に遷移させる。なお、ステートマシン３２２に関しては、入力レジスタ選択フラグ３３２が「０」を示すため、スイッチ３３４が初期化信号を供給せず、状態＃０のままで遷移しない。
【０１１８】
続いて、プロセッサ１００は、ＤＭＡ＿Ｄ処理１−１、２−１および３−１に必要なコマンドを、コントロールバス１０１を介してレジスタ群３１２に書き込む。スイッチ３１１は、入力レジスタ選択フラグ３３２が「０」を示すため、コントロールバス１０１のアドレス情報に従って、レジスタＡ１にコマンドを書き込む。
【０１１９】
次に、プロセッサ１００は、ＣＡＬＣ処理１−１および２−１に必要なコマンドをレジスタ群３１２に書き込む。スイッチ３１１は、レジスタＡ２にそのコマンドを書き込む。
【０１２０】
さらに、プロセッサ１００は、ＤＭＡ＿Ｕ処理１−１および２−１に必要なコマンドをレジスタ群３１２に書き込む。スイッチ３１１は、レジスタＡ３にそのコマンドを書き込むことを選択する。ＤＭＡ＿Ｕ処理２−１がレジスタＡ３に書き込まれたことが書込み検出回路３４５によって検知されると、入力レジスタ選択フラグ３３２は「１」となる。
【０１２１】
次に、プロセッサ１００は、コマンド列２を供給する前に、初期化命令をレジスタ群３１２に対して発行する。このとき、入力レジスタ選択フラグ３３２が「１」を示すため、レジスタＢ１乃至Ｂ３が初期化される。また、この初期化命令は、ステートマシン選択フラグ３３３が「１」を示すため、スイッチ３３４を介してステートマシン３２２を状態＃０から状態＃１に遷移させる。
【０１２２】
さらに、プロセッサ１００は、ＤＭＡ＿Ｄ処理１−２、２−２および３−２に必要なコマンドを、コントロールバス１０１を介してレジスタ群３１２に書き込む。スイッチ３１１は、入力レジスタ選択フラグ３３２が「１」を示すため、コントロールバス１０１のアドレス情報に従って、レジスタＢ１にコマンドを書き込む。
【０１２３】
続いて、プロセッサ１００は、ＣＡＬＣ処理１−２、２−２、ＤＭＡ＿Ｕ処理１−２および２−２に必要なコマンドをレジスタ群３１２に書き込む。これにより、スイッチ３１１によって、レジスタＢ２およびＢ３にコマンドが書き込まれる。ＤＭＡ＿Ｕ処理２−２がレジスタＢ３に書き込まれたことが書込み検出回路３４６によって検知されると、入力レジスタ選択フラグ３３２は「１」から「０」に変化する。
【０１２４】
次にステートマシン３２１および３２２の動作について説明する。ステートマシン選択フラグ３３３が「０」を示していることから、レジスタＡ１乃至Ａ３にコマンドが書き込まれると、ステートマシン３２１は状態＃１から状態３に遷移する。ステートマシン３２２には反転部３３５を介してステートマシン選択フラグ３３３の反転信号が入力されるため、レジスタＢ１乃至Ｂ３にコマンドが書き込まれると、ステートマシン３２２は状態＃１から状態＃２に遷移する。
【０１２５】
ステートマシン選択フラグ３３３が「０」を示すとき、ステートマシン３２１は状態＃３になると、選択器３１３１には「１０」が供給され、レジスタＡ１のコマンドをデータ転送部３７０に供給する。そして、順次、ＤＭＡ＿Ｄ処理１−１、２−１および３−１の処理を行っていく。また、選択器３１３２および３１３３には「００」が供給され、これによって、データ転送部３７０の専有メモリ３９０から共有メモリ２００に書き込む動作が行われる。このとき、演算部３８０には「ＮＯＰ」が通知されるため、処理は何も行われない。
【０１２６】
その後、ＤＭＡ＿Ｄ処理３−１の終了通知をデータ転送部３７０から受けたステートマシン３２１は状態＃５に遷移する。ここで、ステートマシン３２２は、ステートマシン３２１が状態＃５に遷移したこと、すなわち、ステートマシン３２１が司るＤＭＡ＿Ｄ処理が終了したことを検出し、状態＃２から状態＃３に遷移する。この結果、選択器３１３１には「１１」が供給され、レジスタＢ１の内容がデータ転送部３７０に供給される。また、選択器３１３２には「１０」が供給され、レジスタＡ２の内容が演算部３８０に供給される。また、選択器３１３３には「００」が供給され、「ＮＯＰ」となる。
【０１２７】
演算部３８０には、レジスタＡ２に格納されたＣＡＬＣ処理１−１および２−１に必要なコマンドが供給される。データ転送部３７０には、レジスタＢ１に格納されたＤＭＡ＿Ｄ処理１−２、２−２および３−２に必要なコマンドが供給される。これにより、ＤＭＡ＿Ｄ処理１−２、２−２および３−２と、ＣＡＬＣ処理１−１および２−１とが、並行して処理されることになる。
【０１２８】
ＤＭＡ＿Ｄ処理１−２、２−２および３−２が終了すると、ステートマシン３２２は状態＃３から状態＃４に遷移する。ステートマシン３２１は、ＣＡＬＣ処理１−１および２−１の処理の終了を演算部３８０から通知されると、状態＃６に遷移する。ステートマシン３２１が状態＃６に遷移すると、選択器３１３２には「００」が供給され、「ＮＯＰ」となる。選択器３１３３には「１０」が供給され、レジスタＡ３に格納されたＤＭＡ＿Ｕ処理１−１および２−１に必要なコマンドをデータ転送部３７０に供給していく。選択器３１３１に関しては、ステートマシン３２２が状態＃４に遷移したときに「００」が供給され、「ＮＯＰ」となる。
【０１２９】
ＤＭＡ＿Ｕ処理２−１の処理が終了した通知をデータ転送部３７０から受けると、ステートマシン３２１は状態＃０に遷移し、プロセッサ１００に対して一連の演算が終了した旨の通知を行い、ステートマシン選択フラグ３３３を「０」から「１」に遷移させる。状態＃０ではレジスタの初期化を待機するため、第１の実施の形態のようなレジスタＡ１乃至Ａ３の実行許可フラグの書き換えは不要となる。
【０１３０】
プロセッサ１００は、一連の処理の終了通知を受けると、適当な時期に次のコマンドをレジスタ群３１２に書き込む。このとき、入力レジスタ選択フラグ３３２は「０」となっているため、コマンドはレジスタＡ１乃至Ａ３に書き込まれることになる。ステートマシン選択フラグ３３３が「１」になったことで、ステートマシン３２２に入力されるフラグは「０」となり、これにより、ステートマシン３２２は状態＃４から状態＃５に遷移する。ステートマシン選択フラグ３３３が「１」になり、ステートマシン３２２が状態＃５になったことにより、選択器３１３２には「１１」が供給され、レジスタＢ２に格納されたＣＡＬＣ処理１−２および２−２のコマンドが演算部３８０に供給されていく。
【０１３１】
プロセッサ１００が次の処理を書き込んでいれば、選択器３１３１には「１０」が供給され、新たにレジスタＡ１に書き込まれたコマンドがデータ転送部３７０に供給される。選択器３１３３には「００」が供給され、「ＮＯＰ」となる。その後、ステートマシン３２２は状態を遷移させ、ＤＭＡ＿Ｕ処理１−２および２−２のコマンドをデータ転送部３７０に供給する。
【０１３２】
図１２は、本技術の第２の実施の形態における動作タイミングの一例を示す図である。この例では、ＣＡＬＣ処理１−１および２−１の処理時間に対して、ＤＭＡ＿Ｄ処理１−２、２−２および３−２の処理時間が短い場合を示している。
【０１３３】
ＤＭＡ＿Ｄ処理１−２、２−２および３−２の処理時間がＣＡＬＣ処理１−１および２−１の処理時間よりも短い場合には、ＣＡＬＣ処理２−１を待ってＤＭＡ＿Ｕ処理１−１および２−１が実行されるため、データ転送部３７０における競合は生じない。
【０１３４】
図１３は、本技術の第２の実施の形態における動作タイミングの他の例を示す図である。この例では、ＣＡＬＣ処理１−１および２−１の処理時間がＤＭＡ＿Ｄ処理１−２、２−２および３−２の処理時間よりも短い場合を示している。
【０１３５】
ＣＡＬＣ処理１−１および２−１の処理時間がＤＭＡ＿Ｄ処理１−２、２−２および３−２の処理時間よりも短い場合には、ＤＭＡ＿Ｕ処理１−１および２−１の処理とＤＭＡ＿Ｄ処理１−２、２−２および３−２の処理とが混在して行われることになる。この場合、データ転送部３７０はＤＭＡの通常の機能として、データの読出しおよび書込みの仲裁（アービトレーション）機能を有しているため、ＤＭＡ＿Ｄ処理３−２が後から実行されるように制御される。
【０１３６】
このように、この第２の実施の形態では、２つのステートマシン３２１および３２２によってコマンド列毎の状態を管理する。これにより、コマンド列同士で、先行するコマンド列の演算部３８０におけるＣＡＬＣ処理と後続のコマンド列のデータ転送部３７０におけるＤＭＡ＿Ｄ処理とを並列に実行することができる。
【０１３７】
＜３．第３の実施の形態＞
上述の第２の実施の形態では、自身に入力されるステートマシン選択フラグが「０」となったことでＣＡＬＣ処理１−２乃至２−２を開始していた。これに対し、ＤＭＡ＿Ｕ処理１−１乃至２−１で転送すべきデータが次のＣＡＬＣ処理１−２乃至２−２で上書きされないのであれば、ＤＭＡ＿Ｕ処理１−１乃至２−１とＣＡＬＣ処理１−２乃至２−２とを並列に実行することができる。そこで、この第３の実施の形態では、これらを並列に実行することにより、さらに演算部３８０における処理の効率化を図る。
【０１３８】
なお、情報処理システムの構成については上述の第２の実施の形態と同様であるため、詳細な説明は省略する。
【０１３９】
図１４は、本技術の第３の実施の形態におけるステートマシン３２１が管理する状態の遷移例を示す図である。図１５は、本技術の第３の実施の形態におけるステートマシン３２２が管理する状態の遷移例を示す図である。これら第３の実施の形態における遷移例は、状態＃４から状態＃５への遷移条件が第２の実施の形態と異なっている。
【０１４０】
ステートマシン選択フラグ３３３が「０」を示す場合、ステートマシン３２１が状態＃５から状態＃６に遷移したときに、ステートマシン３２２が状態＃４にあったとすると、ステートマシンは状態＃５に遷移する。その結果、選択器３１３１には「００」が供給され、選択器３１３２には「１１」が供給され、レジスタＢ２に書き込まれたＣＡＬＣ処理１−２および２−２のコマンドが演算部３８０に逐次供給されていく。また、選択器３１３３には「１０」が供給され、データ転送部３７０にはレジスタＡ３に書き込まれたＤＭＡ＿Ｕ処理１−１および２−１のコマンドが逐次供給されていく。
【０１４１】
この場合、上述の共有メモリ２００から専有メモリ３９０へのデータ転送と、演算部３８０の並列動作に加えて、専有メモリ３９０から共有メモリ２００へのデータ転送と、演算部３８０の並列動作も可能となる。
【０１４２】
このような状態の遷移により、異なるコマンド列におけるコマンドがデータ転送部３７０および演算部３８０に対して排他的に供給されるように制御される。また、ステートマシン３２１および３２２は、異なるコマンド列１およびコマンド列２に対応して、それぞれ固有の状態を管理する。
【０１４３】
また、この第３の実施の形態では、ステートマシン３２１および３２２は、コマンド列に対応して予め定められたコマンド数に従って状態を遷移させる一方、状態＃４から状態＃５への遷移のように他のコマンド列の状態を加味して状態を遷移させる。
【０１４４】
図１６は、本技術の第３の実施の形態における動作タイミングの一例を示す図である。この例では、ＣＡＬＣ処理１−１および２−１の処理時間がＤＭＡ＿Ｄ処理１−２、２−２および３−２の処理時間よりも長い場合を示している。
【０１４５】
この場合、第２の実施の形態とは異なり、ＤＭＡ＿Ｕ処理１−１および２−１の処理と並列に、ＣＡＬＣ処理１−２および２−２が実行されていることがわかる。
【０１４６】
図１７は、本技術の第３の実施の形態における動作タイミングの他の例を示す図である。この例では、ＣＡＬＣ処理１−１および２−１の処理時間がＤＭＡ＿Ｄ処理１−２、２−２および３−２の処理時間よりも短い場合を示している。
【０１４７】
この場合は、データ転送部３７０においてＤＭＡ＿Ｕ処理１−１および２−１の処理とＤＭＡ＿Ｄ処理１−２、２−２および３−２の処理との競合が発生するため、第２の実施の形態と同様に、ＤＭＡ＿Ｄ処理３−２が後から実行されるように制御される。
【０１４８】
このように、この第３の実施の形態では、先行するコマンド列のＣＡＬＣ処理の終了をもって、後続のコマンド列の状態を遷移させる。これにより、コマンド列同士で、先行するコマンド列のデータ転送部３７０におけるＤＭＡ＿Ｕ処理と後続のコマンド列の演算部３８０におけるＣＡＬＣ処理とを並列に実行することができる。すなわち、演算処理と演算結果の出力との並列処理を行うことができる。
【０１４９】
なお、コマンドバッファ３０１の一連のコマンドを格納する内部のレジスタとして、レジスタＡ１乃至Ａ３およびＢ１乃至Ｂ３の２系統を設けた例について説明したが、これらレジスタは、３系統以上設けるようにしてもよい。
【０１５０】
また、レジスタＡ１およびＢ１ではデータ転送部３７０に対して３回、レジスタＡ２およびＢ２では演算部３８０に対して２回、レジスタＡ３およびＢ３ではデータ転送部３７０に対して２回の処理命令を格納できるＦＩＦＯである旨説明した。これに対し、各レジスタにおいて処理命令の格納数（ＦＩＦＯの段数）を増やすようにしてもよい。
【０１５１】
さらに、上述の実施の形態ではデータ転送部３７０および演算部３８０を例にとって説明したが、演算部３８０は複数設けられてもよい。この場合、データ転送部３７０もその複数の演算部３８０毎に設けることも可能である。
【０１５２】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１５３】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０１５４】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【０１５５】
なお、本技術は以下のような構成もとることができる。
（１）プロセッサのアドレス空間とは異なる専有領域を記憶する専有メモリと、
前記アドレス空間と前記専有メモリとの間でデータの転送処理を行うデータ転送部と、
前記専有メモリに記憶されたデータ間の演算処理を行う演算部と、
前記プロセッサから受けたコマンド列の各コマンドを各々のレジスタに保持するコマンドレジスタ群と、
前記データ転送部および前記演算部における処理の状態を管理するステートマシンと、
前記コマンドを保持するように前記コマンドレジスタ群を制御するとともに、前記状態に応じて前記データ転送部および前記演算部の何れかに対して前記コマンドレジスタ群に保持された前記コマンドを供給するように前記コマンドレジスタ群を制御する制御部と
を具備する演算処理装置。
（２）前記ステートマシンは、前記コマンド列に対応して予め定められたコマンド数に従って前記状態を遷移させて前記状態を管理する
前記（１）に記載の演算処理装置。
（３）前記コマンド列は、前記アドレス空間から前記専有メモリにデータを転送する第１のデータ転送処理を行うコマンドと、前記専有メモリに記憶されたデータ間の演算処理を行うコマンドと、前記専有メモリから前記アドレス空間にデータを転送する第２のデータ転送処理を行うコマンドとを含み、
前記ステートマシンは、前記第１のデータ転送処理を行うコマンドが入力されると前記第１のデータ転送処理を行うコマンドを実行する状態に遷移させ、前記第１のデータ転送処理を行うコマンドに要する時間が経過すると前記演算処理を行うコマンドを実行する状態に遷移させ、前記演算処理を行うコマンドに要する時間が経過すると前記第２のデータ転送処理を行うコマンドを実行する状態に遷移させる
前記（１）または（２）に記載の演算処理装置。
（４）前記コマンドレジスタ群は、複数のサブレジスタ群を備え、
前記制御部は、前記プロセッサから複数の前記コマンド列を受けた際に前記複数のサブレジスタ群毎に異なる前記コマンド列が保持されるように制御する
前記（１）から（３）のいずれかに記載の演算処理装置。
（５）前記制御部は、前記異なるコマンド列におけるコマンドが前記データ転送部および前記演算部に対して排他的に供給されるように制御する
前記（４）に記載の演算処理装置。
（６）前記ステートマシンは、前記異なるコマンド列に対応してそれぞれ固有の前記状態を管理する
前記（４）または（５）に記載の演算処理装置。
（７）前記ステートマシンは、前記複数のコマンド列の状態を管理する際に前記複数のコマンド列の一のコマンド列に対応して予め定められたコマンド数および他のコマンド列の前記状態に従って前記一のコマンド列の前記状態を遷移させる
前記（４）または（５）に記載の演算処理装置。
（８）前記複数のコマンド列の各々は、前記アドレス空間から前記専有メモリにデータを転送する第１のデータ転送処理を行うコマンドと、前記専有メモリに記憶されたデータ間の演算処理を行うコマンドと、前記専有メモリから前記アドレス空間にデータを転送する第２のデータ転送処理を行うコマンドとを含み、
前記ステートマシンは、前記複数のコマンド列のうち第１に処理されるべきコマンド列の前記第１のデータ転送処理を行うコマンドに要する時間が経過すると前記複数のコマンド列のうち第２に処理されるべきコマンド列の前記第１のデータ転送処理を行うコマンドを実行する状態に遷移させ、前記第１に処理されるべきコマンド列の前記演算処理を行うコマンドに要する時間が経過すると前記第２に処理されるべきコマンド列の前記演算処理を行うコマンドを実行する状態に遷移させ、前記第１に処理されるべきコマンド列の前記演算処理を行うコマンドに要する時間が経過すると前記第１に処理されるべきコマンド列の前記第２のデータ転送処理を行うコマンドを実行する状態に遷移させる
前記（４）または（５）に記載の演算処理装置。
（９）前記ステートマシンは、前記第１に処理されるべきコマンド列の前記演算処理を行うコマンドに要する時間が経過し、または、前記第１に処理されるべきコマンド列の前記演算処理を行うコマンドが終了した状態に遷移すると、前記第２に処理されるべきコマンド列の前記演算処理を行うコマンドを実行する状態に遷移させる
前記（８）に記載の演算処理装置。
（１０）プロセッサと、演算処理装置と、前記プロセッサのアドレス空間を記憶して前記演算処理装置からもアクセス可能な共有メモリとを具備する情報処理システムであって、
前記演算処理装置は、
前記プロセッサのアドレス空間とは異なる専有領域を記憶する専有メモリと、
前記アドレス空間と前記専有メモリとの間でデータの転送処理を行うデータ転送部と、
前記専有メモリに記憶されたデータ間の演算処理を行う演算部と、
前記プロセッサから受けたコマンド列の各コマンドを各々のレジスタに保持するコマンドレジスタ群と、
前記データ転送部および前記演算部における処理の状態を管理するステートマシンと、
前記コマンドを保持するように前記コマンドレジスタ群を制御するとともに、前記状態に応じて前記データ転送部および前記演算部の何れかに対して前記コマンドレジスタ群に保持された前記コマンドを供給するように前記コマンドレジスタ群を制御する制御部とを備える
情報処理システム。
【符号の説明】
【０１５６】
１００  プロセッサ
１０１  コントロールバス
１０２  メモリバス
２００  共有メモリ
３００  コプロセッサ
３０１  コマンドバッファ
３１０  コマンド保持部
３１１  スイッチ
３１２  レジスタ群
３１３  セレクタ
３２０〜３２２  ステートマシン
３３０  制御部
３３１  出力レジスタ選択フラグ
３３２  入力レジスタ選択フラグ
３３３  ステートマシン選択フラグ
３３４  スイッチ
３３５  反転部
３４１  状態検出回路
３４２  フリップフロップ
３４３  反転器
３４４  書込み監視回路
３４５、３４６  書込み検出回路
３４７、３５３  ＳＲフリップフロップ
３５１、３５２  状態検出回路
３６０  バスインターフェース
３７０  データ転送部
３８０  演算部
３９０  専有メモリ
３１３１〜３１３３  選択器
３１３９  制御部
【図１】
2018120448.tif 000003
【図２】
2018120448.tif 000004
【図３】
2018120448.tif 000005
【図４】
2018120448.tif 000006
【図５】
2018120448.tif 000007
【図６】
2018120448.tif 000008
【図７】
2018120448.tif 000009
【図８】
2018120448.tif 000010
【図９】
2018120448.tif 000011
【図１０】
2018120448.tif 000012
【図１１】
2018120448.tif 000013
【図１２】
2018120448.tif 000014
【図１３】
2018120448.tif 000015
【図１４】
2018120448.tif 000016
【図１５】
2018120448.tif 000017
【図１６】
2018120448.tif 000018
【図１７】
2018120448.tif 000019