(57)【特許請求の範囲】
【請求項１】
マスタプロセッサからの指定を受けて、複数の回路を制御する回路群制御システムであって、
前記複数の回路のいずれかに実行させるべきコマンドを複数ならべて構成されるコマンド列の指定をマスタプロセッサから受け付けるコマンド列指定受付手段と、
コマンド列指定受付手段により受け付けられた指定に係るコマンド列について、コマンド列を構成する先頭のコマンドを特定し、特定したコマンド内に指定された次コマンドの識別子を参照して順に次のコマンドを特定することによって、コマンド列に従った順序でコマンド列内のコマンドを逐次、当該コマンドを実行し得る回路に実行開始させる実行制御手段とを備え、
前記実行制御手段は、一の回路に一のコマンドを実行させている間において、他の回路により実行され得る状態にあるコマンドを検出して当該コマンドを選択して当該他の回路に実行させる並列実行制御部を含み、
前記複数の回路には少なくとも相互に異なる機能を有する２種の回路が含まれ、
前記コマンド列指定受付手段は、複数個のコマンド列の指定をマスタプロセッサから受け付け、
前記実行制御手段は、コマンド列指定受付手段により受け付けられた指定に係る各コマンド列に従った順序で各コマンド列内のコマンドを逐次、当該コマンドを実行し得る回路に実行させるものであり、
前記並列実行制御部は、一の回路に一のコマンド列中のコマンドを実行させている間において、他のコマンド列中の、他の回路により実行され得る状態にあるコマンドを、検出して当該コマンドを選択して当該他の回路に実行させ、
前記複数の回路は同一のメモリにアクセスし得るものであり、
前記各コマンド列中に含まれるコマンドには、当該コマンドを実行する回路が前記メモリへアクセスすることを指定するメモリアクセスコマンドがあり、
前記メモリアクセスコマンドは、コマンド列相互間で共通のメモリ領域にアクセスする旨の共用属性及びコマンド列相互間で互いに独立したメモリ領域にアクセスする旨の独立属性のうちいずれかの属性を含み、
前記実行制御手段は、別個のコマンド列中の各メモリアクセスコマンドを各回路に実行させる際に、独立属性を含む一のコマンド列中のメモリアクセスコマンドを実行する回路と、独立属性を含む他のコマンド列中のメモリアクセスコマンドを実行する回路とが、メモリ内の相互に独立した領域にアクセスするように制御し、共用属性を含む一のコマンド列中のメモリアクセスコマンドを実行する回路と、共用属性を含む他のコマンド列中のメモリアクセスコマンドを実行する回路とが、メモリ内の同一の領域にアクセスするように制御するメモリアクセス制御部を有する
ことを特徴とする回路群制御システム。
【請求項２】
前記回路群制御システムは前記複数の回路を備え、
前記複数の回路には、スレーブプロセッサ及びＤＭＡコントローラが含まれ、
前記実行制御手段は、スレーブプロセッサに一のコマンド列中のコマンドを実行させ、当該実行と並行してＤＭＡコントローラに他のコマンド列中のコマンドを実行させ得る
ことを特徴とする請求項１記載の回路群制御システム。
【請求項３】
前記メモリアクセスコマンドはアクセス対象部分を指定する論理アドレスを含み、
前記メモリアクセス制御部は、別個のコマンド列中の各メモリアクセスコマンドを並行して各回路に実行させる際に、各メモリアクセスコマンド中の論理アドレスを当該メモリアクセスコマンドが属するコマンド列毎に異なるメモリ領域を示す物理アドレスに変換し、変換後の物理アドレスをアクセス対象部分の特定に用いて各回路がメモリアクセスを行うように制御する
ことを特徴とする請求項１記載の回路群制御システム。
【請求項４】
前記メモリアクセス制御部は、論理アドレスの物理アドレスへの前記変換した際に、変換した物理アドレスが示すメモリ領域を特定するための領域特定情報を変換元の論理アドレスと対応付けて保持しておき、後に論理アドレスを物理アドレスへ変換する際には、当該論理アドレスを、既に保持されている領域特定情報により特定されるメモリ領域以外のメモリ領域を示す物理アドレスに変換し、
前記各コマンド列中に含まれるコマンドには、先に実行されるコマンドによって指定されたメモリのアクセス対象部分の解放を、論理アドレスを指定して指示する解放指示を含むコマンドがあり、
前記メモリアクセス制御部は、前記解放指定を含むコマンドを回路に実行させる前に、当該解放指示において示された論理アドレスと対応付けられた領域特定情報を破棄する
ことを特徴とする請求項３記載の回路群制御システム。
【請求項５】
前記コマンド列指定受付手段は、コマンド格納用メモリを有し、前記マスタプロセッサによりコマンド格納用メモリに複数のコマンドが書き込まれることを通じて前記コマンド列の指定を受け付け、
前記実行制御手段は、コマンド格納用メモリに書き込まれたコマンドを、コマンド列に従った順序で逐次参照して、参照した当該コマンドを実行し得る回路に実行させる
ことを特徴とする請求項１記載の回路群制御システム。
【請求項６】
前記コマンド格納用メモリに書き込まれた各コマンドは、当該コマンドが属するコマンド列における次順位のコマンドがある場合に当該次順位のコマンドのコマンド格納用メモリ内での所在を示すポインタ情報を含むように構成されており、
前記実行制御手段は、コマンド内に含まれるポインタ情報を参照して当該コマンドの次に実行すべきコマンドの所在を得ることにより、コマンド列に従った順序でコマンドを逐次、当該コマンドを実行し得る回路に実行させる
ことを特徴とする請求項５記載の回路群制御システム。
【請求項７】
前記コマンド格納用メモリに書き込まれた各コマンドは、当該コマンドが属するコマンド列における順に、コマンド格納用メモリのアドレスが連続する領域に並べられており、
前記実行制御手段は、各コマンド列について、コマンド格納用メモリのアドレス順に各コマンドを逐次参照して、参照した当該コマンドを実行し得る回路に実行させる
ことを特徴とする請求項５記載の回路群制御システム。
【請求項８】
前記コマンドはパラメータを含むものであり、
前記回路群制御システムは前記複数の回路を備え、
前記コマンド格納用メモリは、前記複数の回路のうち少なくとも１の回路と接続されており、
前記コマンド格納用メモリと接続されている回路は、前記実行制御手段によりコマンドが実行させられた際に、前記コマンド格納用メモリ中の当該コマンド内のパラメータにアクセスする
ことを特徴とする請求項５記載の回路群制御システム。
【請求項９】
前記コマンド列の指定は、前記コマンド格納用メモリに書き込まれた複数のコマンドから構成されるコマンド列を識別するコマンド列識別子によりなされるものであり、
前記実行制御手段は、前記コマンド列識別子で識別される各コマンド列内のコマンドを逐次、当該コマンドを実行し得る回路に実行させる
ことを特徴とする請求項５記載の回路群制御システム。
【請求項１０】
前記回路群制御システムは前記マスタプロセッサを備え、
前記マスタプロセッサは同一のコマンド列識別子を複数指定する
ことを特徴とする請求項９記載の回路群制御システム。
【請求項１１】
前記コマンド列識別子は、前記コマンド列格納用メモリ内におけるコマンドの所在を示すポインタ情報であり、
前記実行制御手段は、前記ポインタ情報で示されるコマンドを先頭要素であるものとして当該コマンドが属するコマンド列内のコマンドを逐次、回路に実行させる
ことを特徴とする請求項９記載の回路群制御システム。
【請求項１２】
前記コマンド列指定受付手段は、コマンド列識別子格納用の第１ＦＩＦＯバッファを有し、前記マスタプロセッサによりコマンド格納用メモリに複数のコマンドが書き込まれた後に、当該複数のコマンドのうちのいずれかのコマンドの組を、それぞれ列の要素とする複数のコマンド列それぞれについてのコマンド列識別子が第１ＦＩＦＯバッファに書き込まれることを通じて、前記コマンド列の指定を受け付け、
前記実行制御手段は、第１ＦＩＦＯバッファ中の各コマンド列識別子で指定されるコマンド列内のコマンドを回路に実行させる
ことを特徴とする請求項９記載の回路群制御システム。
【請求項１３】
前記コマンド列指定受付手段はさらに、コマンド列識別子格納用の第２ＦＩＦＯバッファを有し、前記マスタプロセッサによりコマンド格納用メモリに複数のコマンドが書き込まれた後に、当該複数のコマンドのうちのいずれかのコマンドの組を、それぞれ列の要素とする複数のコマンド列それぞれについてのコマンド列識別子が第２ＦＩＦＯバッファに書き込まれることを通じても、前記コマンド列の指定を受け付け、
前記実行制御手段は、第１ＦＩＦＯバッファ中の各コマンド列識別子で指定されるコマンド列内のコマンドよりも第２ＦＩＦＯバッファ中の各コマンド列識別子で指定されるコマンド列内のコマンドの方を優先して回路に実行させる
ことを特徴とする請求項１２記載の回路群制御システム。
【請求項１４】
前記回路群制御システムはさらに、
前記コマンド格納用メモリに書き込まれたコマンドを更新するコマンド更新手段を備える
ことを特徴とする請求項５記載の回路群制御システム。
【請求項１５】
前記回路群制御システムはさらに、
前記マスタプロセッサからコマンドの実行完了の通知要求を受け付ける実行完了通知受付手段と、
前記実行制御手段によりコマンドを実行させた回路から当該コマンドを実行完了した旨の通知を受け付けて、当該コマンドが前記実行完了通知受付手段により受け付けられた通知要求に係るコマンドである場合には、当該コマンドの実行完了を前記マスタプロセッサに通知する実行完了通知手段とを備える
ことを特徴とする請求項１記載の回路群制御システム。
【請求項１６】
前記並列実行制御部は、一の回路に一のコマンド列中の一のコマンドを実行させている間において、当該コマンド列中の、他の回路により実行され得る状態にある他のコマンドを検出して当該コマンドを選択して当該他の回路に実行させる
ことを特徴とする請求項１記載の回路群制御システム。
【請求項１７】
前記回路群制御システムは前記複数の回路を備え、
前記複数の回路は同一のメモリにアクセスし得るものであり、
前記コマンド列を構成するコマンドのうちには、当該メモリ内の一領域の確保又は解放を指定する属性を含み、かつ、当該領域を識別するためのバンク番号を含むメモリ指定付属コマンドがあり、
前記実行制御手段は、
メモリ内領域毎に使用中か否かを管理するメモリ管理情報を保持し、
コマンド列中において次に実行開始されるべきコマンドが、バンク番号で示された領域の確保を指定するメモリ指定付属コマンドであった場合には、当該領域が使用中であることを前記メモリ管理情報が示している限り当該メモリ指定付属コマンドを前記検出の対象から除外し、
バンク番号で示された領域の確保を指定するメモリ指定付属コマンドを回路に実行開始させる時には、当該領域が使用中である旨を示すように前記メモリ管理情報を更新し、
バンク番号で示された領域の確保を指定するメモリ指定付属コマンドを回路に実行開始させる時には、当該領域が使用中でない旨を示すように前記メモリ管理情報を更新する
ことを特徴とする請求項１６記載の回路群制御システム。
【請求項１８】
前記複数の回路には、特定のコマンドの実行中において、メモリ内の一領域についての解放通知を、当該領域を識別するためのバンク番号を伴って前記実行制御手段に伝える機能を有する回路が含まれ、
前記実行制御手段は、いずれかの回路からバンク番号で示された領域の解放通知を受けた時には、当該領域が使用中でない旨を示すように前記メモリ管理情報を更新する
ことを特徴とする請求項１７記載の回路群制御システム。
【請求項１９】
前記回路群制御システムは前記複数の回路を備え、
前記複数の回路は同一のメモリにアクセスし得るものであり、
前記複数の回路には、特定のコマンドの実行中において、メモリ内の一領域についての解放通知を、当該領域を識別するためのバンク番号を伴って前記実行制御手段に伝える機能を有する回路が含まれ、
前記複数の回路には、特定のコマンドの実行中において、メモリ内の一領域についての確保要求を、当該領域を識別するためのバンク番号を伴って前記実行制御手段に伝え、当該確保要求を伝えた後、前記実行制御手段から当該領域の確保通知を受けるまでに限り当該コマンドの実行を停止する機能を有する回路が含まれ、
前記実行制御手段は、
メモリ内領域毎に使用中か否かを管理するメモリ管理情報を保持し、
いずれかの回路からバンク番号で示された領域の解放通知を受けた時には、当該領域が使用中でない旨を示すように前記メモリ管理情報を更新し、
いずれかの回路からバンク番号で示された領域の確保要求を受けた時には、当該領域が使用中でないことをメモリ管理情報が示す状態になり次第、当該回路に当該領域の確保通知を伝え、当該領域が使用中である旨を示すように前記メモリ管理情報を更新する
ことを特徴とする請求項１６記載の回路群制御システム。
【請求項２０】
マスタプロセッサからの指定を受けて、複数の回路を制御する回路群制御システムであって、
前記複数の回路のいずれかに実行させるべきコマンドを複数ならべて構成されるコマンド列の指定をマスタプロセッサから受け付けるコマンド列指定受付手段と、
コマンド列指定受付手段により受け付けられた指定に係るコマンド列について、コマンド列を構成する先頭のコマンドを特定し、特定したコマンド内に指定された次コマンドの識別子を参照して順に次のコマンドを特定することによって、コマンド列に従った順序でコマンド列内のコマンドを逐次、当該コマンドを実行し得る回路に実行開始させる実行制御手段とを備え、
前記実行制御手段は、一の回路に一のコマンドを実行させている間において、他の回路により実行され得る状態にあるコマンドを検出して当該コマンドを選択して当該他の回路に実行させる並列実行制御部を含み、
前記コマンド列指定受付手段により受け付けられるコマンド列は、コマンドの他に、特定の回路に停止を行わせるための停止指示データであって、停止期間を示す情報及び当該回路を指定する情報を含む停止指示データを、コマンドと同等に順序付けられる構成要素として含み、
前記実行制御手段は、前記コマンド列指定受付手段により受け付けられた指定に係るコマンド列に従った順序でコマンド列内の各構成要素に逐次着目し、着目した構成要素が停止指示データであった場合には、当該停止指示データに示される回路を当該停止指示データに示される停止期間分だけ停止させる
ことを特徴とする回路群制御システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プロセッサその他の回路の集合である回路群の制御を行う技術に関し、特に、あるプロセッサからコマンドを受けて、コマンドに対応した処理を回路群中の各回路に行わせる回路群制御システムに関する。
【０００２】
【従来の技術】
従来、ある１つのプロセッサ（以下、「マスタプロセッサ」という。）が、他のプロセッサ（以下、「スレーブプロセッサ」という。）、ＤＭＡコントローラ等の回路にコマンドを伝えることにより処理の実行を依頼する方式が知られている。以下、マスタプロセッサから処理の実行を依頼されるスレーブプロセッサやＤＭＡコントローラ等の回路を、「スレーブハード（ｓｌａｖｅ  ｈａｒｄｗａｒｅ）」という。
【０００３】
この方式により、マスタプロセッサとスレーブハードとは並行動作を行うことが可能となるため、マスタプロセッサが解読実行の対象とするプログラムによる情報処理の迅速化を図ることができる。
ところで、複数のスレーブハードそれぞれに対応する複数のコマンドが、一定の順序で実行されることにより、一定目的が達成される場合がある。
【０００４】
そこで、マスタプロセッサが複数のコマンドの一定順序での実行を内容とする処理をスレーブハード群に一括して依頼すべく、いずれかのスレーブハードの実行対象となるコマンドを複数個順序付けてなるコマンド列をスレーブハード群の制御機構に伝達し、これを受けて、その制御機構がコマンド列の各コマンドを順に解読して、対応するスレーブハードを特定してそのスレーブハードにコマンドに対応する処理を行わせるといった方式が、マスタプロセッサに関わるコマンド授受手順のオーバヘッドを低減させる点で、情報処理をより迅速に実行するために有効となる。
【０００５】
なお、コマンド列は、例えば、ＤＭＡコントローラに、主メモリからローカルメモリへの数百キロバイト（ＫＢ）程度の一群のデータを転送させる指示を内容とするコマンドＡ、スレーブプロセッサにローカルメモリ中のその一群のデータに基づいて所定の演算を実行しその結果となる一群のデータをローカルメモリに格納させる指示を内容とするコマンドＢ、及び演算結果である一群のデータをＤＭＡコントローラにローカルメモリ中から主メモリに転送させる指示を内容とするコマンドＣがこの順に実行されるように結び付けられて構成される。
【０００６】
この例示したコマンド列をマスタプロセッサから受けた場合に、スレーブハード群の制御機構は、まずコマンドＡに対応する処理ＡをＤＭＡコントローラに行わせ、処理Ａが完了した後に、コマンドＢに対応する処理Ｂをスレーブプロセッサに行わせ、処理Ｂが完了した後に、コマンドＣに対応する処理ＣをＤＭＡコントローラに行わせる。
【０００７】
また、マスタプロセッサは、実行対象とする情報処理が複数のタスクとして扱える場合等において、複数のコマンド列をスレーブハード群に随時実行させる必要があるときがある。
このとき、マスタプロセッサは、複数のスレーブハードの連携的動作を指示するコマンド列を２つ以上、スレーブハード群の制御機構に伝達する。また、普通に考えられるスレーブハード群の制御機構は、１つのコマンド列に着目しそのコマンド列を構成するコマンドを順に、対応するスレーブハードに処理させることをコマンド数分繰り返し、続いて別のコマンド列に着目して同様な処理手順を実行する。
【０００８】
【発明が解決しようとする課題】
しかしながら、上述したスレーブハード群の制御機構は、マスタプロセッサから受け取ったコマンド列中の各コマンドに順次着目して、着目したコマンドに対応するスレーブハードにそのコマンドの処理を行わせる手順を繰り返すため、各時刻においては、スレーブハード群のうちの１つのスレーブハードのみが稼働していることになり、スレーブハードの有効活用が図れていない。
【０００９】
そこで、本発明は、マスタプロセッサから受け取った複数のコマンド列に対応する処理を各スレーブハードに行わせる際に、各スレーブハードの稼働率を上げるための制御を行う制御機構を含む回路群制御システムを提供することを目的とする。
また、本発明は、上述の回路群制御システムを構築する場合において有用な各種技術を提供することをも目的とする。
【００１０】
【課題を解決するための手段】
上記目的を達成するために本発明に係る回路群制御システムは、マスタプロセッサからの指定を受けて、相互に異なる機能を有する複数の回路を制御する回路群制御システムであって、前記複数の回路のいずれかに実行させるべきコマンドを複数ならべて構成されるコマンド列の複数個の指定をマスタプロセッサから受け付けるコマンド列指定受付手段と、コマンド列指定受付手段により受け付けられた指定に係るコマンド列に従った順序で各コマンド列内のコマンドを逐次、当該コマンドを実行し得る回路に実行させる実行制御手段とを備え、前記実行制御手段は、一の回路に一のコマンド列中のコマンドを実行させている間において、他のコマンド列中の、他の回路により実行され得る状態にあるコマンドを選択して当該他の回路に実行させる並列実行制御部を含むことを特徴とする。
【００１１】
また、本発明に係る回路群制御方法は、マスタプロセッサからの指定に基づいて、相互に異なる機能を有する複数の回路を制御する回路群制御方法であって、前記複数の回路のいずれかに実行させるべきコマンドを複数ならべて構成されるコマンド列の複数個の指定をマスタプロセッサから受け付けるコマンド列指定受付ステップと、コマンド列指定受付ステップにより受け付けられた指定に係るコマンド列に従った順序で各コマンド列内のコマンドを逐次、当該コマンドを実行し得る回路に実行させる実行制御ステップとを含み、前記実行制御ステップは、一の回路に一のコマンド列中のコマンドを実行させている間において、他のコマンド列中の、他の回路により実行され得る状態にあるコマンドを選択して当該他の回路に実行させる並列実行制御サブステップを含むことを特徴とする。
【００１２】
これらにより、複数のコマンド列のコマンドを各回路、つまり各スレーブハードに行わせる際に、異なるスレーブハードにより複数のコマンドを並行させるため、各スレーブハードの稼働率を上げることが可能になる。
また、本発明に係る回路群制御システムは、マスタプロセッサからの指定を受けて、複数の回路を制御する回路群制御システムであって、前記複数の回路のいずれかに実行させるべきコマンドを複数ならべて構成されるコマンド列の複数個の指定をマスタプロセッサから受け付けるコマンド列指定受付手段と、コマンド列指定受付手段により受け付けられた指定に係るコマンド列に従った順序で各コマンド列内のコマンドを逐次、当該コマンドを実行し得る回路に実行させる実行制御手段とを備え、前記コマンド列指定受付手段は、コマンド格納用メモリを有し、前記マスタプロセッサによりコマンド格納用メモリに複数のコマンドが書き込まれることを通じて前記コマンド列の指定を受け付け、前記実行制御手段は、コマンド格納用メモリに書き込まれたコマンドを、コマンド列に従った順序で逐次参照して、参照した当該コマンドを実行し得る回路に実行させることを特徴とする。
【００１３】
上記構成により、マスタプロセッサが複数のコマンドからなるコマンド列を一括して回路群制御システムに伝えることができるので基本的には同期制御が不要となり、逐次コマンドを伝える場合よりも、コマンドを伝えるための制御が容易となる。
また、本発明に係る回路群制御システムは、マスタプロセッサからの指定を受けて、複数の回路を制御する回路群制御システムであって、前記複数の回路のいずれかに実行させるべきコマンドを複数ならべて構成されるコマンド列の複数個の指定をマスタプロセッサから受け付けるコマンド列指定受付手段と、コマンド列指定受付手段により受け付けられた指定に係るコマンド列に従った順序で各コマンド列内のコマンドを逐次、当該コマンドを実行し得る回路に実行させる実行制御手段と、前記マスタプロセッサからコマンドの実行完了の通知要求を受け付ける実行完了通知受付手段と、前記実行制御手段によりコマンドを実行させた回路から当該コマンドを実行完了した旨の通知を受け付けて、当該コマンドが前記実行完了通知受付手段により受け付けられた通知要求に係るコマンドである場合には、当該コマンドの実行完了を前記マスタプロセッサに通知する実行完了通知手段とを備えることを特徴とする。
【００１４】
上記構成により、マスタプロセッサは特定のコマンドの実行完了を検出することができるようになるため、例えば同期をとる必要がある複数のコマンド列により成立するような情報処理を、回路群制御システムを用いて実行することができるようになる。
【００１５】
【発明の実施の形態】
以下、本発明の回路群制御システムについての実施の形態である処理システムについて図面を用いて説明する。
＜実施の形態１＞
＜1-1.構成概要＞
図１は、本発明の実施の形態１に係る処理システム１００の構成図である。
【００１６】
処理システム１００は、マスタプロセッサが情報処理を行うに際して、スレーブプロセッサ又はＤＭＡコントローラといったスレーブハードに部分的処理を依頼することを可能にしたシステムであり、同図に示すようにマスタプロセッサ１１０、主メモリ１２０、スレーブプロセッサ１３０、ローカルメモリ１３１、ＤＭＡコントローラ１４０及びコマンド実行制御装置１５０を備え、半導体の１チップ内に形成されている。
【００１７】
ここで、マスタプロセッサ１１０はアプリケーションプログラムその他のプログラムで特定された情報処理を実行するプロセッサである。なお、この情報処理は、スレーブプロセッサ用のコマンドとＤＭＡコントローラ用のコマンドとが一定順序で組み合わされたコマンド列によって実現される一定単位の部分的処理の集合である。
【００１８】
プログラムを実行することによってマスタプロセッサ１１０は、スレーブハードに部分的処理を行わせるために、コマンド実行制御装置１５０に随時、コマンド列を伝え、必要に応じてコマンド実行制御装置１５０にコマンドに対応する処理の実行完了の通知を要求しその実行完了を示す通知を受け取る手段として機能する。なお、以下、コマンドに対応する処理の実行を、「コマンドの実行」と表現することとする。
【００１９】
スレーブプロセッサ１３０は、専用の制御プログラムを実行することにより、コマンド実行制御装置１５０からコマンドを伝えられると、必要に応じてローカルメモリ１３１を用いて、そのコマンドを実行し、実行の完了をコマンド実行制御装置１５０に通知する機能を実現するプロセッサである。なお、ローカルメモリ１３１は、１６キロバイト（ＫＢ）のメモリバンクを４つ備えるメモリである。また、図示していないが、スレーブプロセッサ１３０はコマンドの実行にあたり直接的に実行する命令を、つまり専用の各種制御プログラムの内容を、格納している命令メモリを有している。
【００２０】
ＤＭＡコントローラ１４０は、コマンド実行制御装置１５０からコマンドを伝えられると、大容量のオンチップメモリである主メモリ１２０とローカルメモリ１３１との間でのデータ転送を制御し、データ転送の完了をコマンド実行制御装置１５０に通知する機能を発揮するＤＭＡコントローラである。
また、コマンド実行制御装置１５０は、マスタプロセッサ１１０とスレーブハードとの間のインタフェースとしての役割を果たす装置であり、マスタプロセッサに伝えられた複数のコマンド列からスレーブハードを有効活用するために適切にコマンドを選択して、スレーブハードにそのコマンドの実行開始を指示して、スレーブハードからコマンドの実行完了の通知を受け取り、マスタプロセッサが通知を要求しているコマンドに対応する処理が完了した時にはマスタプロセッサにその完了を通知する機能を有する。このコマンド実行制御装置１５０は図１に示すように、通信メモリ１５１、コマンドキュー１５２、完了受付部１５３、実行制御部１６０及び完了通知部１７０を有する。なお、コマンド実行制御装置１５０は、ＣＰＵ及びメモリで構成してもよい。
【００２１】
ここで、通信メモリ１５１は、マスタプロセッサ１１０と接続されておりマスタプロセッサ１１０が複数のコマンドを格納するためのメモリであり、２キロバイト（ＫＢ）の容量を有する。なお、通信メモリ１５１の内容構成及びコマンドのデータ構造については後に詳しく説明する。
コマンドキュー１５２は、マスタプロセッサ１１０がコマンド列を伝えるために、コマンド列を構成する先頭のコマンドについての識別情報を格納するためのＦＩＦＯバッファであり、コマンド実行制御装置１５０がスレーブハードに実行させるコマンドを特定する際に参照されるものである。
【００２２】
完了通知部１７０は、コマンドの実行が完了したか否かを示すための完了テーブル１７１を有し、マスタプロセッサ１１０からコマンドの実行完了についての通知を要求されたときにそのコマンドを特定する情報を保持しておき、そのコマンドの実行が完了した時にマスタプロセッサ１１０にその完了を通知する機能を有する。なお、完了通知部１７０は、２つまでのコマンドの実行完了をマスタプロセッサ１１０に通知する機能を有する。また、完了テーブル１７１については後に詳しく説明する。
【００２３】
完了受付部１５３は、各スレーブハードからコマンドの実行完了を示す信号を受け付けるとその実行完了を実行制御部１６０に伝え、実行が完了したコマンドに対応する完了テーブル１７１中の情報を更新する機能を有する。
実行制御部１６０は、次コマンドＩＤ保持部１６１、次コマンドＩＤ保持部１６２及びバンクテーブル１６３を有し、コマンドキュー１５２及び通信メモリ１５１を参照して、各コマンド列中のコマンドを、その属するコマンド列における順序に従ってスレーブハードに実行させつつ、コマンドの並行実行を可能にするための制御を行う機能を有する。
【００２４】
即ち、実行制御部１６０は、コマンド列中のコマンドの実行開始をスレーブハードに指示した後に完了受付部１５３からコマンドの実行完了を伝えられて、スレーブハードがコマンドを実行し終えて非稼働状態になっていることを検出する等によって、１つのコマンド列中のコマンドをあるスレーブハードに実行させている間に、他のスレーブハードを用いて他のコマンド列中のコマンドが実行可能であるかを判断し、実行可能であれば当該他のコマンド列中のコマンドを当該他のスレーブハードに並行的に実行させる制御を行う機能を有する。
【００２５】
また、コマンドにはローカルメモリ１３１を用いての処理を指示するコマンドがあり、実行制御部１６０は、複数のコマンド列中のコマンドを並行して実行対象とする上で、コマンド列毎に利用するローカルメモリのメモリ空間を独立化させるべく、コマンド列毎に各スレーブハードが別個のメモリ領域を用いて処理を行えるように制御する。
【００２６】
ここで、次コマンドＩＤ保持部１６１、１６２は、実行制御部１６０がスレーブハードに実行を開始させたコマンドと同一のコマンド列中における次順位のコマンドを特定するための情報を格納するためのメモリ領域であり、実行制御部１６０によって逐次その情報、即ち後述するコマンドＩＤが格納される。
なお、図１中に「＃１」、「＃２」と記しているように、ここでは次コマンドＩＤ保持部１６１は１という識別番号で、次コマンドＩＤ保持部１６２は２という識別番号で識別されるものとする。
【００２７】
また、バンクテーブル１６３は、コマンドにおいてローカルメモリ１３１へのアクセスの指示に用いられる仮想バンク番号と、ローカルメモリ１３１の４つのメモリバンクのいずれかを現実に特定する物理バンク番号とを対応付けて管理するためのテーブルである。以下、０という物理バンク番号で特定されるメモリバンクをバンク＃０というように、Ｎという物理バンク番号で特定されるメモリバンクをバンク＃Ｎと称する。
【００２８】
＜1-2.コマンド列指定インタフェース＞
以下、マスタプロセッサ１１０がコマンド実行制御装置１５０へ実行させるべきコマンド列を伝達する際に用いる通信メモリ１５１及びコマンドキュー１５２の内容について、並びにコマンド及びコマンド列について、図２〜図５を用いて説明する。
【００２９】
図２は、通信メモリ１５１のデータ構造を示す図である。
同図に示すように、通信メモリ１５１の先頭の１６バイトはメモリ管理テーブル３１０として用いられ、その後は１６バイト毎に１つのコマンドを格納するためのコマンド用エリアとして用いられている。２キロバイトの通信メモリ中には、同図に示すようにコマンド用エリア（１）から、コマンド用エリア（１２７）までの１２７個のコマンドを格納するための領域が設けられている。なお、Ｎ番目のコマンド用エリアをここではコマンド用エリア（Ｎ）と表現している。
【００３０】
以下、何番目のコマンド用エリアであるかを示す７ビットの数値を含む１バイトのデータをコマンドＩＤという。従って、コマンドＩＤはコマンドの通信メモリ１５１内における所在を示すことになる。
メモリ管理テーブル３１０は、１６バイト即ち１２８ビットで構成され、先頭の０ビット目を除いて、Ｎビット目はコマンド用エリア（Ｎ）の使用状態を示している。使用状態は、例えば１という値で使用中を表し、０という値で空いている即ち新たに使用可能であることを表す。
【００３１】
従って、メモリ管理テーブル３１０の先頭ビットを０ビット目として、その次のビット即ち１ビット目の値が１であればコマンド用エリア（１）が使用中であることを示し、その次のビット即ち２ビット目の値が０であればコマンド用エリア（２）が空いていることを示す。なお、マスタプロセッサ１１０が通信メモリにコマンドを全く格納していない状態においては、メモリ管理テーブル３１０の全てのビット値は０である。
【００３２】
図３は、コマンド列の一構成要素であり、通信メモリ１５１に格納されるコマンドのフォーマットを示す図である。
なお、同図では、コマンド２００を２バイト毎に区分して、１６進数で表した０バイト目からＥバイト目という位置２０１とその意味内容を示す項目２０２とを対応付けて表現している。
【００３３】
コマンドのサイズは１６バイトであり、同図に示すように、０バイト目からの２バイトはコマンド種別及び属性を表し、２バイト目からの２バイトは次コマンドＩＤを含むデータを表し、４バイト目以後からはスレーブハード毎に独自のパラメータ類を表す。
なお、０バイト目からの２バイトであるコマンド種別及び属性においては、先頭の１ビットがコマンドを実行するスレーブハードの種別を示し、具体的には１という値でスレーブプロセッサ用のコマンドであることを、０という値でＤＭＡコントローラ用のコマンドであることを示す。また、２ビット目は未使用で、３ビット目以後の属性ビットの意味はスレーブハードによって異なり、スレーブプロセッサ用のコマンドにおいては、スレーブプロセッサが実行する命令を特定するためのフォーマット番号、コマンドの実行に際して確保されるべきローカルメモリ１３１についての仮想バンクを示す仮想バンク番号、解放されるべきローカルメモリ１３１についての仮想バンクを示す仮想バンク番号等を示し、ＤＭＡコントローラ用のコマンドにおいては、主メモリ１２０からローカルメモリ１３１へか、ローカルメモリ１３１から主メモリ１２０へかといったデータ転送の方向、コマンドの実行即ちデータ転送に用いられるローカルメモリ１３１についての仮想バンクを示す仮想バンク番号、解放されるべきローカルメモリ１３１についての仮想バンクを示す仮想バンク番号等を示す。
【００３４】
コマンドの２バイト目からの２バイトのデータに含まれる次コマンドＩＤは、そのコマンドが属するコマンド列における次のコマンドの、通信メモリ１５１内での所在を示すコマンドＩＤである。
スレーブプロセッサ用のコマンドについてのパラメータ類は、スレーブプロセッサが実行する命令のスレーブプロセッサ１３０の命令メモリにおける先頭アドレスである２バイトの実行開始アドレスと、命令の実行に必要な各種パラメータとから構成される。
【００３５】
また、ＤＭＡコントローラ用のコマンドについてのパラメータ類は、主メモリ１２０についてのアドレス上位２バイト、下位２バイトと、ローカルメモリ１３１についてのアドレスと、転送すべきデータのサイズと、主メモリ１２０についてのアドレスの増分値と、ローカルメモリ１３１についてのアドレスの増分値とから構成される。
【００３６】
図４は、コマンドキュー１５２のデータ構造を示す図である。
同図に示すように、コマンドキュー１５２は、コマンドＩＤを１６個まで格納できるキューである。
マスタプロセッサ１１０がコマンドキュー１５２に各コマンド列を構成するコマンドのうち先頭のコマンドの所在を示すコマンドＩＤを逐次挿入し、挿入された順に実行制御部１６０がコマンドＩＤを取り出して処理することになる。
【００３７】
図５は、マスタプロセッサ１１０により、通信メモリ１５１に格納された各コマンド、及びコマンドキュー１５２に挿入されたコマンドＩＤの内容例を示す図である。
この例では、コマンドキュー１５２の先頭に位置しているコマンドＩＤを始点として次コマンドＩＤによりチェーンが張られたコマンド用エリア（２１）、コマンド用エリア（２２）、コマンド用エリア（３５）及びコマンド用エリア（３６）にそれぞれ格納されたコマンドからなる第１のコマンド列と、コマンドキュー１５２の先頭の次に位置しているコマンドＩＤを始点として次コマンドＩＤによりチェーンが張られたコマンド用エリア（４７）、コマンド用エリア（４８）、コマンド用エリア（４９）及びコマンド用エリア（６１）にそれぞれ格納されたコマンドからなる第２のコマンド列とを示している。
【００３８】
第１のコマンド列は、データ群間に所定の演算αを施行するためのもので、主メモリ１２０から、ローカルメモリ１３１内の仮想バンク番号が０で示される領域へのデータ転送を指示するＤＭＡコントローラ用のＲｅａｄＤＭＡコマンドと、主メモリ１２０から、ローカルメモリ１３１内の仮想バンク番号が１で示される領域へのデータ転送を指示するＤＭＡコントローラ用のＲｅａｄＤＭＡコマンドと、仮想バンク番号が０及び１で示される領域を用いて所定の演算αを行ってその結果を仮想バンク番号が１で示される領域に反映することを指示するスレーブプロセッサ用のＳＰｓｔａｒｔコマンドと、仮想バンク番号が１で示されるローカルメモリ１３１内の領域から主メモリ１２０へのデータ転送を指示するＤＭＡコントローラ用のＷｒｉｔｅＤＭＡコマンドとをこの順に連結して構成されるコマンド列である。
【００３９】
第２のコマンド列は、データ群間に所定の演算βを施行するためのもので、主メモリ１２０から、ローカルメモリ１３１内の仮想バンク番号が０で示される領域へのデータ転送を指示するＤＭＡコントローラ用のＲｅａｄＤＭＡコマンドと、主メモリ１２０から、ローカルメモリ１３１内の仮想バンク番号が１で示される領域へのデータ転送を指示するＤＭＡコントローラ用のＲｅａｄＤＭＡコマンドと、仮想バンク番号が０及び１で示される領域を用いて所定の演算βを行ってその結果を仮想バンク番号が１で示される領域に反映することを指示するスレーブプロセッサ用のＳＰｓｔａｒｔコマンドと、仮想バンク番号が１で示されるローカルメモリ１３１内の領域から主メモリ１２０へのデータ転送を指示するＤＭＡコントローラ用のＷｒｉｔｅＤＭＡコマンドとをこの順に連結して構成されるコマンド列である。
【００４０】
このように、マスタプロセッサ１１０は、コマンド列を構成する全てのコマンドを通信メモリ１５１に格納した後にコマンドキュー１５２にコマンド列の先頭コマンドについてのコマンドＩＤを挿入することにより、コマンド列の実行をコマンド実行制御装置１５０に指示することができる。
＜1-3.コマンド実行完了通知インタフェース＞
以下、マスタプロセッサ１１０からのコマンド列の指示に基づいてコマンド実行制御装置１５０がスレーブハードに実行させたコマンドの実行完了という事象を、マスタプロセッサ１１０に伝達する際に用いる完了テーブル１７１の内容について、及び完了通知部１７０とマスタプロセッサ１１０との間で授受される信号について、図６及び図７を用いて説明する。
【００４１】
図６は、完了テーブル１７１のデータ構造を示す図である。
完了テーブル１７１は、１２８ビットで構成され、先頭の０ビット目を除いて、Ｎビット目はコマンド用エリア（Ｎ）に設定されたコマンドの実行が完了したことを１という値で示すものである。即ち、完了テーブル１７１は、各コマンドについて１という値でコマンドの実行完了を示す完了フラグの集合であると言える。
【００４２】
なお、各ビットの初期値は０であり、コマンドの実行が完了した時には完了受付部１５３により、そのコマンドに対応するビットに１という値が設定される。図７は、マスタプロセッサ１１０と完了通知部１７０との間で授受される信号を示す図である。
マスタプロセッサ１１０は、コマンドの実行完了の通知を要求したい第１コマンドのコマンドＩＤを指定したコマンドＩＤ指定信号を完了通知部１７０に伝え、また、第１コマンドとは別にコマンドの実行完了の通知を要求したい第２コマンドのコマンドＩＤを指定したコマンドＩＤ指定信号を完了通知部１７０に伝えることができる。
【００４３】
完了通知部１７０は、伝えられたコマンドＩＤを第１コマンド及び第２コマンドのコマンドＩＤを保持し、完了テーブル１７１において、第１コマンド又は第２コマンドに対応する完了フラグが１に設定された時に、その設定された第１コマンド又は第２コマンドの実行が完了した旨を示す完了通知信号をマスタプロセッサ１１０に伝える。また、完了通知部１７０は、第１コマンド又は第２コマンドのコマンドＩＤが変化した場合において、第１コマンド又は第２コマンドに対応する完了フラグが既に１に設定されていたときには、直ちに完了通知信号をマスタプロセッサ１１０に伝える。
【００４４】
また、マスタプロセッサ１１０は、完了通知信号を受け取った後に、後の完了フラグの利用のために、第１コマンド又は第２コマンドの完了テーブルにおける完了フラグの値を０にすることを要求する旨の完了フラグクリア要求信号を完了通知部１７０に伝えることができる。
＜1-4.バンクテーブルによるメモリ管理＞
以下、コマンド実行制御装置１５０の実行制御部１６０が用いるバンクテーブル１６３について図８を用いて説明する。
【００４５】
図８は、バンクテーブル１６３のデータ構造及び内容例を示す図である。
バンクテーブル１６３は、同図に示すように、ローカルメモリ１３１のバンク＃０〜＃３を特定する０〜３の４つの物理バンク番号について、物理バンク番号２６１と実行コマンド列識別番号２６２と仮想バンク番号２６３とを対応付けたテーブルである。同図中括弧で示した数値は実行制御部１６０により変更され得る値であることを示している。
【００４６】
ここで、実行コマンド列識別番号２６２は、実行制御部１６０によって現在実行対象とされている各コマンド列を識別するための番号である。実行制御部１６０は、あるコマンド列中のコマンドをスレーブハードに実行させ始める時に、そのコマンド列中の次順位のコマンドのコマンドＩＤを次コマンドＩＤ保持部１６１又は次コマンドＩＤ保持部１６２に格納するので、現在実行対象とされているコマンド列を次コマンドＩＤ保持部の識別番号でもって表すことができる。このため、実行コマンド列識別番号２６２は、次コマンドＩＤ保持部の識別番号である１又は２という値で表される。但し、仮想バンク番号が対応付けられていない物理バンク番号についての実行コマンド列識別番号２６２は、対応付けられていないことを表す値として予め定めた例えば３等の値をとることになる。
【００４７】
また、仮想バンク番号２６３は、コマンド中の属性において指定された仮想バンク番号であって実行制御部１６０によって物理バンク番号と対応付けられた番号である。なお、仮想バンク番号はコマンドにおいて０〜３のいずれかの指定が可能である。
仮想バンク番号が対応付けられていない物理バンク番号についての仮想バンク番号２６３は、対応付けられていないことを表すと予め定めた例えば４等の値をとることになる。
【００４８】
なお、実行制御部１６０は、仮想バンク番号と物理バンク番号との対応関係を管理するためにこのバンクテーブル１６３を用い、あるコマンド列中のコマンドをスレーブハードに実行させる際に、そのコマンド中の属性において確保すべきものとして仮想バンク番号が指定されている場合には、空いている物理バンク番号と、コマンド列における次順位のコマンドの所在を示すコマンドＩＤを格納することになる次コマンドＩＤ保持部の識別番号と、その実行させるコマンド中の属性において指定された仮想バンク番号とを対応付けるようバンクテーブル１６３の内容を更新する。
【００４９】
また、コマンド中の属性において解放すべきものとして仮想バンク番号が指定されている場合には、実行制御部１６０は、その仮想バンク番号と対応付けられている物理バンク番号についての実行コマンド列識別番号２６２及び仮想バンク番号２６３のそれぞれを、対応付けられていないことを示す値として予め定めた例えば３及び４等の値にすべくバンクテーブル１６３の内容を更新する。
【００５０】
この実行制御部１６０による、確保又は解放すべき仮想バンク番号を含むコマンドに応じたバンクテーブル１６３の更新は、実際にスレーブハードにコマンドを実行させる直前に行われる。但し、実行制御部１６０は、仮想バンク番号を指定してメモリ領域の確保を指示するコマンドについては、ローカルメモリ１３１中の物理バンクのうちに、どの仮想バンク番号とも対応付けられていない物理バンクがある場合に限り、その対応付けられていない物理バンクとコマンドで指定された仮想バンクとを対応付けるようにバンクテーブル１６３の内容を更新してそのコマンドをスレーブハードに実行開始させる。
【００５１】
＜1-5.動作＞
以下、処理システム１００の動作について説明する。
処理システム１００において、マスタプロセッサ１１０は、アプリケーションプログラムその他のプログラムに基づいてコマンド列を随時、上述したコマンド列指定インタフェースによりコマンド実行制御装置１５０に伝えて必要に応じてコマンド実行制御装置１５０にコマンドに対応する処理の実行完了の通知を要求しその実行完了を示す通知を受け取る処理（以下、「マスタプロセッサ処理」という。）を実行し、コマンド実行制御装置１５０は、伝えられたコマンド列に基づいてコマンドをスレーブハードに実行させる処理（以下、「実行制御処理」という。）及び上述したコマンド実行完了通知インタフェースによりコマンドの実行完了をマスタプロセッサに通知する処理を実行する。
【００５２】
なお、マスタプロセッサ１１０がコマンド実行制御装置１５０に伝えるコマンド列は、予めプログラムによって特定されるものである。
以下、マスタプロセッサ処理及び実行制御処理について、図９〜図１１に示すフローチャートに沿って詳細に説明する。
＜1-5-1.マスタプロセッサ処理＞
図９は、マスタプロセッサ１１０によりなされるマスタプロセッサ処理を示すフローチャートである。
【００５３】
マスタプロセッサ１１０は、通信メモリ１５１中のメモリ管理テーブル３１０を参照し、空いているコマンド用エリアをサーチし、空いているコマンド用エリアにコマンド列を構成する各コマンドを記録する（ステップＳ１１）。
マスタプロセッサ１１０は空いているコマンド用エリアのサーチを、例えば、メモリ管理テーブル３１０のビット位置が１から１２７までの各ビットを順にチェックしてそのビット値が１でなく０であるところのビット位置を得て、そのビット位置がＮであれば、コマンド用エリア（Ｎ）を検出結果として得るという手順で行う。
【００５４】
例えば、４つのコマンドからなるコマンド列を指定する場面を想定すると、マスタプロセッサ１１０は上述の手順により４つの空いているコマンド用エリアを検出して、各コマンド用エリアに１つずつコマンドの内容を記録することになる。なお、マスタプロセッサ１１０は、コマンドを記録する際に１６バイトのコマンドの先頭から２バイト目にコマンド列における次順位のコマンドを格納したコマンド用エリアの番号であるコマンドＩＤを設定する。また、コマンドをコマンド用エリアに記録した際にマスタプロセッサはそのコマンド用エリアに対応するメモリ管理テーブル３１０中のビット値を０から１に更新する。
【００５５】
コマンド用エリアにコマンド列を構成する各コマンドを記録した後に、マスタプロセッサ１１０は、コマンドの実行完了のタイミングを検出する必要のあるコマンドを格納したコマンド用エリアの番号であるコマンドＩＤを示すコマンドＩＤ指定信号を完了通知部１７０に伝える（ステップＳ１２）。
続いてマスタプロセッサ１１０は、コマンド列の先頭のコマンドを格納したコマンド用エリアの番号であるコマンドＩＤをコマンドキュー１５２に挿入する（ステップＳ１３）。
【００５６】
なお、マスタプロセッサ１１０が実行するプログラムによっては、マスタプロセッサ１１０はステップＳ１１において複数のコマンド列それぞれを構成する各コマンドを空いているコマンド用エリアにまとめて記録し、また、ステップＳ１３において複数のコマンドＩＤをまとめてコマンドキューに挿入する場合もある。また、ステップＳ１２においては２つのコマンドについてコマンドＩＤを完了通知部に伝える場合もある。
【００５７】
ステップＳ１３の後に、マスタプロセッサ１１０は、実行完了を待つ必要があるコマンドがあればそのコマンドについての完了通知信号が完了通知部１７０から伝えられるのを待つ（ステップＳ１４）。
ステップＳ１３においてコマンドキュー１５２に挿入されたコマンドＩＤに基づいて、コマンド実行制御装置１５０の実行制御部１６０はコマンド列を構成する先頭のコマンドを特定し、コマンド内の次コマンドＩＤを参照して順に次のコマンドを特定して、コマンド列における順番に従ってコマンドをスレーブハードに実行させる制御を行う。
【００５８】
従って、このようなステップＳ１１〜Ｓ１４の手順を、マスタプロセッサ１１０が繰り返し行うことにより複数のコマンド列を構成する各コマンドがスレーブハードによって実行される。
このステップＳ１１及びＳ１３により、通信メモリ１５１及びコマンドキュー１５２は、例えば図５に例示した内容になる。
【００５９】
＜1-5-2.実行制御処理＞
図１０は、コマンド実行制御装置１５０内の実行制御部１６０によりなされる実行制御処理の一部を示すフローチャートであり、図１１は、コマンド実行制御装置１５０内の実行制御部１６０によりなされる実行制御処理のうち図１０に示した以外の部分を示すフローチャートである。
【００６０】
まず、実行制御部１６０は、１という識別番号で識別される次コマンドＩＤ保持部１６１にコマンドＩＤが保持されたことのあるコマンド列（以下、「コマンド列＃１」という。）中のコマンドをスレーブハードに実行させている状態であるか否か即ちそのコマンドに対応するスレーブハードが稼働状態であるか否かを判定する（ステップＳ２１）。
【００６１】
なお、実行制御部１６０は、コマンドの実行をスレーブハードに指示した後にそのコマンドの所在を示すコマンドＩＤを図示していない内部の作業用メモリ領域に保持し、そのスレーブハードによるコマンドの実行完了を完了受付部１５３から伝えられるまでは、コマンドをスレーブハードに実行させている状態であると判定し、コマンドの実行完了を完了受付部１５３から伝えられた後には、内部の作業用メモリ領域内に保持したそのコマンドについてのコマンドＩＤを削除して、コマンドをスレーブハードに実行させていない状態であると判定する。内部の作業用メモリ領域には、コマンドの出所であるコマンド列別に各１つのコマンドＩＤを保持でき、ここに保持されているコマンドＩＤに対応するコマンド中の先頭ビットによってどのスレーブハードが現在稼働中であるかを実行制御部１６０は検知することができる。
【００６２】
ステップＳ２１において、コマンド列＃１中のコマンドに対応するスレーブハードが稼働状態でないと判定した場合に、実行制御部１６０は、次コマンドＩＤ保持部１６１に保持されているコマンドＩＤは０以外か否かを判定し（ステップＳ２２）、そのコマンドＩＤが０であれば、コマンドキュー１５２にコマンドＩＤが格納されているか否かを判定する（ステップＳ２３）。
【００６３】
ステップＳ２２において次コマンドＩＤ保持部１６１に保持されているコマンドＩＤが０以外であると判定した場合には、実行制御部１６０は、次コマンドＩＤ保持部１６１に保持されているコマンドＩＤの示すコマンド用エリアに格納されているコマンドに着目し、そのコマンドを解読する（ステップＳ２４）。
また、ステップＳ２３においてコマンドキュー１５２にコマンドＩＤが格納されていると判定した場合には、実行制御部１６０は、コマンドキュー１５２の先頭のコマンドＩＤの示すコマンド用エリアに格納されているコマンドに着目し、そのコマンドを解読する（ステップＳ２４）。
【００６４】
ステップＳ２４に続いて、実行制御部１６０は、コマンド中の属性に確保すべき仮想バンク番号の指定が含まれている場合において、バンクテーブル１６３を参照して、その仮想バンク番号と対応付けることのできる物理バンク番号が空いているかを、即ちローカルメモリ１３１のバンクが不足することがないかを調べ（ステップＳ２５）、バンクが不足しないと判定した場合には、内部の作業用メモリ領域を参照することにより、そのコマンドを実行するスレーブハードは空いている即ち非稼働状態であるか否かを判定する（ステップＳ２６）。
【００６５】
ステップＳ２６においてそのコマンドを実行するスレーブハードが非稼働状態であると判定した場合には、実行制御部１６０は、ステップＳ２３を経由してステップＳ２４においてコマンドキュー１５２中のコマンドＩＤが示すコマンドに着目しているときに限りコマンドキュー１５２からそのコマンドＩＤを消去する（ステップＳ２７）。なお、ステップＳ２２において次コマンドＩＤ保持部１６１に保持されているコマンドＩＤが０以外であった場合には実行制御部１６０はステップＳ２７の処理を省略する。
【００６６】
続いて、実行制御部１６０は、解読したコマンド内に示される次コマンドＩＤを次コマンドＩＤ保持部１６１に格納し（ステップＳ２８）、そのコマンド内の属性により確保すべきと指定された仮想バンク番号があれば、その仮想バンク番号と空いている物理バンク番号とを対応付け、バンクテーブル１６３を更新する（ステップＳ２９）。なお、仮想バンク番号と物理バンク番号とが既に対応付けられている場合においては実行制御部１６０はステップＳ２９を省略する。更に、コマンド内の属性により解放すべきと指定された仮想バンク番号があれば、実行制御部１６０はその仮想バンク番号と対応付けられている物理バンク番号を空きの状態となるようにバンクテーブル１６３を更新する。
【００６７】
ステップＳ２９に続いて、実行制御部１６０は、コマンドの先頭ビットで指定されたスレーブハード、即ちスレーブプロセッサ１３０又はＤＭＡコントローラ１４０にコマンドの実行を指示し、そのコマンドを示すコマンドＩＤを内部の作業用メモリ領域に設定する（ステップＳ３０）。実行指示にあたり、実行制御部１６０は、コマンド内で指定された仮想バンク番号と対応付けた物理バンク番号をスレーブハードに伝え、これを受けてスレーブハードは物理バンク番号で特定されるローカルメモリ１３１中のバンクを処理対象としてコマンドの実行を行う。なお、後にスレーブプロセッサ１３０又はＤＭＡコントローラ１４０から完了受付部１５３にコマンドの実行完了が伝えられた時に、完了受付部１５３からその旨を伝えられて実行制御部１６０は内部の作業用メモリ領域から実行が完了したコマンドのコマンドＩＤを消去する。
【００６８】
ステップＳ３０における実行制御部１６０によるスレーブハードへのコマンドの実行の指示は、例えば次のように行われる。即ち、実行制御部１６０は、解読したコマンドの中でスレーブハードに必要なデータを抽出して、つまり属性と実行ハード別のパラメータ類を抽出して、その抽出したデータのうち仮想バンク番号についてはバンクテーブル１６３により対応付けられている物理バンク番号に置き換え、その結果のデータをコマンドの実行対象となるスレーブプロセッサ１３０又はＤＭＡコントローラ１４０に送信することにより行われる。
【００６９】
ステップＳ３０の後、或いは、ステップＳ２１においてコマンド列＃１中のコマンドに対応するスレーブハードが稼働状態であると判定した後、ステップＳ２３においてコマンドキュー１５２にコマンドＩＤが格納されていないと判定した後、ステップＳ２５においてローカルメモリ１３１のバンクが不足していると判定した後又はステップＳ２６においてコマンドを実行するスレーブハードが空いていないと判定した後には、実行制御部１６０は、２という識別番号で識別される次コマンドＩＤ保持部１６２にコマンドＩＤが保持されたことのあるコマンド列（以下、「コマンド列＃２」という。）中のコマンドをスレーブハードに実行させている状態であるか否か即ちそのコマンドに対応するスレーブハードが稼働状態であるか否かを判定する（ステップＳ３１）。
【００７０】
ステップＳ３１において、コマンド列＃２中のコマンドに対応するスレーブハードが稼働状態でないと判定した場合に、実行制御部１６０は、次コマンドＩＤ保持部１６２に保持されているコマンドＩＤは０以外か否かを判定し（ステップＳ３２）、そのコマンドＩＤが０であれば、コマンドキュー１５２にコマンドＩＤが格納されているか否かを判定する（ステップＳ３３）。
【００７１】
ステップＳ３２において次コマンドＩＤ保持部１６２に保持されているコマンドＩＤが０以外であると判定した場合には、実行制御部１６０は、次コマンドＩＤ保持部１６２に保持されているコマンドＩＤの示すコマンド用エリアに格納されているコマンドに着目し、そのコマンドを解読する（ステップＳ３４）。
また、ステップＳ３３においてコマンドキュー１５２にコマンドＩＤが格納されていると判定した場合には、実行制御部１６０は、コマンドキュー１５２の先頭のコマンドＩＤの示すコマンド用エリアに格納されているコマンドに着目し、そのコマンドを解読する（ステップＳ３４）。
【００７２】
ステップＳ３４に続いて、実行制御部１６０は、コマンド中の属性に確保すべき仮想バンク番号の指定が含まれている場合において、バンクテーブル１６３を参照して、その仮想バンク番号と対応付けるためにローカルメモリ１３１のバンクが不足することがないかを調べ（ステップＳ３５）、バンクが不足しないと判定した場合には、内部の作業用メモリ領域を参照することにより、そのコマンドを実行するスレーブハードが非稼働状態であるか否かを判定する（ステップＳ３６）。
【００７３】
ステップＳ３６においてそのコマンドを実行するスレーブハードが非稼働状態であると判定した場合には、実行制御部１６０は、ステップＳ３３を経由してステップＳ３４においてコマンドキュー１５２中のコマンドＩＤが示すコマンドに着目しているときに限りコマンドキュー１５２からそのコマンドＩＤを消去する（ステップＳ３７）。なお、ステップＳ３２において次コマンドＩＤ保持部１６２に保持されているコマンドＩＤが０以外であった場合には実行制御部１６０はステップＳ３７の処理を省略する。
【００７４】
続いて、実行制御部１６０は、解読したコマンド内に示される次コマンドＩＤを次コマンドＩＤ保持部１６２に格納し（ステップＳ３８）、そのコマンド内の属性により確保すべきと指定された仮想バンク番号があれば、その仮想バンク番号と空いている物理バンク番号とを対応付け、バンクテーブル１６３を更新する（ステップＳ３９）。なお、仮想バンク番号と物理バンク番号とが既に対応付けられている場合においては実行制御部１６０はステップＳ３９を省略する。更に、コマンド内の属性により解放すべきと指定された仮想バンク番号があれば、実行制御部１６０はその仮想バンク番号と対応付けられている物理バンク番号を空きの状態となるようにバンクテーブル１６３を更新する。
【００７５】
ステップＳ３９に続いて、実行制御部１６０は、コマンドの先頭ビットで指定されたスレーブプロセッサ１３０又はＤＭＡコントローラ１４０にコマンドの実行を指示し、そのコマンドを示すコマンドＩＤを内部の作業用メモリ領域に設定する（ステップＳ４０）。ステップＳ３０においてと同様に実行指示にあたり、実行制御部１６０は、コマンド内で指定された仮想バンク番号と対応付けた物理バンク番号をスレーブハードに伝え、これを受けてスレーブハードは物理バンク番号で特定されるローカルメモリ１３１中の領域を処理対象としてコマンドの実行を行う。なお、後にスレーブプロセッサ１３０又はＤＭＡコントローラ１４０から完了受付部１５３にコマンドの実行完了が伝えられた時に、完了受付部１５３からその旨を伝えられて実行制御部１６０は内部の作業用メモリ領域から実行が完了したコマンドのコマンドＩＤを消去する。
【００７６】
ステップＳ４０における実行制御部１６０によるスレーブハードへのコマンドの実行の指示も具体的には上述したステップＳ３０においてと同様に、コマンド中の属性及び実行ハード別のパラメータ類からなるデータを抽出して、仮想バンク番号を物理バンク番号に置き換えた後に、そのデータをスレーブハードに送信することにより行われる。
【００７７】
ステップＳ４０の後、ステップＳ３１においてコマンド列＃２中のコマンドに対応するスレーブハードが稼働状態であると判定した後、ステップＳ３３においてコマンドキュー１５２にコマンドＩＤが格納されていないと判定した後、ステップＳ３５においてローカルメモリ１３１のバンクが不足していると判定した後、及びステップＳ３６においてコマンドを実行するスレーブハードが空いていないと判定した後には、実行制御部１６０は、ステップＳ２１に戻って、１という識別番号で識別される次コマンドＩＤ保持部１６１にコマンドＩＤが保持されたことのあるコマンド列＃１中のコマンドをスレーブハードに実行させている状態であるか否か即ちそのコマンドに対応するスレーブハードが稼働状態であるか否かを判定する処理を行う（ステップＳ２１）。
【００７８】
こうして、実行制御部１６０はステップＳ２１〜Ｓ４０の実行制御処理を繰り返し行う。
＜1-5-3.実行制御部の動作例＞
以下、通信メモリ１５１及びコマンドキュー１５２が、図５に例示した内容になっていることを前提として、実行制御部１６０の具体的動作を説明する。
【００７９】
まず、初期状態において実行制御部１６０内部の作業メモリにはコマンドＩＤが格納されていおらず、次コマンドＩＤ保持部１６１及び次コマンドＩＤ保持部１６２はコマンドＩＤを保持していない旨を示す値０を格納しており、バンクテーブル１６３においては各物理バンク番号はまだ仮想バンク番号と対応付けられていない。
【００８０】
従って、実行制御部１６０は、ステップＳ２１においてコマンド列＃１中のコマンドは実行中でないと判定してｎｏの分岐に進み（図１０参照）、ステップＳ２２において次コマンドＩＤ保持部１６１に保持されているコマンドＩＤが０であると判定してｎｏの分岐に進み、コマンドキュー１５２内にコマンドＩＤがあるか否かを判定する（ステップＳ２３）。
【００８１】
コマンドキュー１５２には図５に示すようにコマンドＩＤが格納されているので、実行制御部１６０はそのコマンドキュー１５２の先頭の「２１」という値のコマンドＩＤで示されるコマンド用エリア（２１）内に格納されているＤＭＡコントローラ用のＲｅａｄＤＭＡコマンドに着目し、そのＲｅａｄＤＭＡコマンドを解読する（ステップＳ２４）。
【００８２】
ステップＳ２４で解読したＲｅａｄＤＭＡコマンドは仮想バンク番号が０の仮想バンクを確保することを要するものであるから、実行制御部１６０は物理バンク番号のうち仮想バンク番号と対応付けられていないものがあるかバンクテーブル１６３を参照してチェックし（ステップＳ２５）、対応付けられていないものがあるのでステップＳ２５においてｙｅｓの分岐に進み、ＤＭＡコントローラが非稼働状態であるか否かを判定して（ステップＳ２６）、非稼働状態であるためステップＳ２６においてｙｅｓの分岐に進み、コマンドキュー１５２から値が「２１」であるコマンドＩＤを消去するとともに（ステップＳ２７）、ＲｅａｄＤＭＡコマンド内における次コマンドＩＤの値である「２２」を次コマンドＩＤ保持部１６１に格納する（ステップＳ２８）。
【００８３】
ステップＳ２８に続いて実行制御部１６０は、バンクテーブル１６３を参照して、空いている物理バンク番号を検出し、解読したＲｅａｄＤＭＡコマンドで指定されていた０という仮想バンク番号に空いている０という物理バンク番号とを対応付けて、バンクテーブル１６３を更新する（ステップＳ２９）。この結果、バンクテーブル１６３は、物理バンク番号が０のバンクについて、実行コマンド列識別番号が１で、仮想バンク番号が０という情報を対応付けた内容となる。
【００８４】
ステップＳ２９の後、実行制御部１６０は、解読したＲｅａｄＤＭＡコマンドをＤＭＡコントローラ１４０に伝えて、コマンドの実行を要求する（ステップＳ３０）。即ち、実行制御部１６０は、主メモリアドレス、０という物理バンク番号、ローカルメモリアドレス、転送サイズ、主メモリアドレス増分、ローカルメモリアドレス増分、及び主メモリからローカルメモリへのデータ転送である旨を示すデータをＤＭＡコントローラ１４０に送信する。
【００８５】
これによって、ＤＭＡコントローラ１４０は、主メモリ１２０からローカルメモリ１３１のバンク＃０へのデータ転送を開始する。なお、実行制御部１６０は、そのＲｅａｄＤＭＡコマンドのコマンドＩＤを内部の作業用メモリ領域に保持する。
次に、実行制御部１６０は、ステップＳ３１においてコマンド列＃２中のコマンドは実行中でないと判定してｎｏの分岐に進み（図１１参照）、ステップＳ３２において次コマンドＩＤ保持部１６２に保持されているコマンドＩＤが０であると判定してｎｏの分岐に進み、コマンドキュー１５２内にコマンドＩＤがあるか否かを判定する（ステップＳ３３）。
【００８６】
コマンドキュー１５２には、先のステップＳ２７により値が「２１」であるコマンドＩＤは消去されているがまだ値が「４７」であるコマンドＩＤは残っているので（図５参照）、実行制御部１６０はそのコマンドキュー１５２の先頭の「４７」という値のコマンドＩＤで示されるコマンド用エリア（４７）内に格納されているＤＭＡコントローラ用のＲｅａｄＤＭＡコマンドに着目し、そのＲｅａｄＤＭＡコマンドを解読する（ステップＳ３４）。
【００８７】
ステップＳ３４で解読したＲｅａｄＤＭＡコマンドは仮想バンク番号が０の仮想バンクを確保することを要するものであるから、実行制御部１６０は物理バンク番号のうち仮想バンク番号と対応付けられていないものがあるかバンクテーブル１６３を参照してチェックし（ステップＳ３５）、対応付けられていないものがあるのでステップＳ３５においてｙｅｓの分岐に進み、ＤＭＡコントローラが非稼働状態であるか否かを判定して（ステップＳ３６）、ＤＭＡコントローラ１４０は先行するＲｅａｄＤＭＡコマンドの実行中であり稼働状態であるためステップＳ３６においてｎｏの分岐に進み、ステップＳ２１の判定に戻る。
【００８８】
ここでは、その後、ＤＭＡコントローラ１４０がコマンド用エリア（２１）に格納されていたＲｅａｄＤＭＡコマンドの実行を完了したこととして説明を続ける。なお、ＤＭＡコントローラ１４０は実行の完了を完了受付部１５３に伝え、実行制御部１６０は完了受付部１５３からの完了の通知を受けて内部の作業用メモリ領域からＤＭＡコントローラ用コマンドのコマンドＩＤを削除する。
【００８９】
実行制御部１６０は、ステップＳ２１において、作業用メモリ領域からコマンドＩＤが削除されているのでコマンド列＃１中のコマンドは実行中でないと判定してｎｏの分岐に進み、ステップＳ２２において次コマンドＩＤ保持部１６１に保持されているコマンドＩＤが「２２」であると判定してｙｅｓの分岐に進み、コマンド用エリア（２２）内に格納されているＤＭＡコントローラ用のＲｅａｄＤＭＡコマンドに着目し、そのＲｅａｄＤＭＡコマンドを解読する（ステップＳ２４）。
【００９０】
ステップＳ２４で解読したＲｅａｄＤＭＡコマンドは仮想バンク番号が１の仮想バンクを確保することを要するものであるから、実行制御部１６０は物理バンク番号のうち仮想バンク番号と対応付けられていないものがあるかバンクテーブル１６３を参照してチェックし（ステップＳ２５）、対応付けられていないものがあるのでステップＳ２５においてｙｅｓの分岐に進み、ＤＭＡコントローラが非稼働状態であるか否かを判定して（ステップＳ２６）、非稼働状態であるためステップＳ２６においてｙｅｓの分岐に進み、ＲｅａｄＤＭＡコマンド内における次コマンドＩＤの値である「３５」を次コマンドＩＤ保持部１６１に格納する（ステップＳ２８）。
【００９１】
ステップＳ２８に続いて実行制御部１６０は、バンクテーブル１６３を参照して、空いている物理バンク番号を検出し、解読したＲｅａｄＤＭＡコマンドで指定されていた０という仮想バンク番号に空いている１という物理バンク番号とを対応付けて、バンクテーブル１６３を更新する（ステップＳ２９）。この結果、バンクテーブル１６３は、物理バンク番号が１のバンクについて、実行コマンド列識別番号が１で、仮想バンク番号が１という情報を対応付けた内容となる。
【００９２】
ステップＳ２９の後、実行制御部１６０は、解読したＲｅａｄＤＭＡコマンドをＤＭＡコントローラ１４０に伝えて、コマンドの実行を要求する（ステップＳ３０）。即ち、実行制御部１６０は、主メモリアドレス、１という物理バンク番号、ローカルメモリアドレス、転送サイズ、主メモリアドレス増分、ローカルメモリアドレス増分、及び主メモリからローカルメモリへのデータ転送である旨を示すデータをＤＭＡコントローラ１４０に送信する。これによって、ＤＭＡコントローラ１４０は、主メモリ１２０からローカルメモリ１３１のバンク＃１へのデータ転送を開始する。
【００９３】
ここでは、その後、ＤＭＡコントローラ１４０がコマンド用エリア（２２）に格納されていたＲｅａｄＤＭＡコマンドの実行を完了したこととして、ステップＳ２１から説明を続ける。
実行制御部１６０は、ステップＳ２１においてコマンド列＃１中のコマンドは実行中でないと判定してｎｏの分岐に進み、ステップＳ２２において次コマンドＩＤ保持部１６１に保持されているコマンドＩＤが「３５」であると判定してｙｅｓの分岐に進み、コマンド用エリア（３５）内に格納されているスレーブプロセッサ用のＳＰｓｔａｒｔコマンドに着目し、そのＳＰｓｔａｒｔコマンドを解読する（ステップＳ２４）。
【００９４】
ステップＳ２４で解読したＳＰｓｔａｒｔコマンドは仮想バンク番号が０及び１の仮想バンクを確保することを要するものであるが、既にバンクテーブル１６３において０及び１という仮想バンク番号はそれぞれ０、１という物理バンク番号と対応付けられており、バンク不足は生じないため、実行制御部１６０は、ステップＳ２５においてｙｅｓの分岐に進み、スレーブプロセッサが非稼働状態であるか否かを判定して（ステップＳ２６）、非稼働状態であるためステップＳ２６においてｙｅｓの分岐に進み、ＳＰｓｔａｒｔコマンド内における次コマンドＩＤの値である「３６」を次コマンドＩＤ保持部１６１に格納する（ステップＳ２８）。
【００９５】
ステップＳ２８に続いて実行制御部１６０は、仮想バンク番号と物理バンク番号との対応付けは既に行われているためステップＳ２９を省き、解読したＳＰｓｔａｒｔコマンドをスレーブプロセッサ１３０に伝えて、コマンドの実行を要求する（ステップＳ３０）。即ち、実行制御部１６０は、命令を特定するためのフォーマット番号、０及び１という物理バンク番号、スレーブプロセッサ１３０の命令メモリにおける実行開始アドレス、及びパラメータ１〜５を示すデータをスレーブプロセッサ１３０に送信する。これによって、スレーブプロセッサ１３０は、ローカルメモリ１３１のバンク＃０とバンク＃１の内容に基づいて演算αを行ってその結果をバンク＃１に書き込む処理を開始する。
【００９６】
次に、実行制御部１６０は、ステップＳ３１においてコマンド列＃２中のコマンドは実行中でないと判定してｎｏの分岐に進み、ステップＳ３２において次コマンドＩＤ保持部１６２に保持されているコマンドＩＤが０であると判定してｎｏの分岐に進み、コマンドキュー１５２内にコマンドＩＤがあるか否かを判定する（ステップＳ３３）。
【００９７】
コマンドキュー１５２には、「４７」という値のコマンドＩＤで示されるコマンド用エリア（４７）内に格納されているＤＭＡコントローラ用のＲｅａｄＤＭＡコマンドに着目し、そのＲｅａｄＤＭＡコマンドを解読する（ステップＳ３４）。
ステップＳ３４で解読したＲｅａｄＤＭＡコマンドは仮想バンク番号が０の仮想バンクを確保することを要するものであるから、実行制御部１６０は物理バンク番号のうち仮想バンク番号と対応付けられていないものがあるかバンクテーブル１６３を参照してチェックし（ステップＳ３５）、対応付けられていないものがあるのでステップＳ３５においてｙｅｓの分岐に進み、ＤＭＡコントローラが非稼働状態であるか否かを判定して（ステップＳ３６）、ＤＭＡコントローラ１４０は既に非稼働状態であるためステップＳ３６においてｙｅｓの分岐に進み、コマンドキュー１５２から値が「４７」であるコマンドＩＤを消去するとともに（ステップＳ３７）、ＲｅａｄＤＭＡコマンド内における次コマンドＩＤの値である「４８」を次コマンドＩＤ保持部１６２に格納する（ステップＳ３８）。
【００９８】
ステップＳ３８に続いて実行制御部１６０は、バンクテーブル１６３を参照して、空いている物理バンク番号を検出し、解読したＲｅａｄＤＭＡコマンドで指定されていた０という仮想バンク番号に空いている２という物理バンク番号とを対応付けて、バンクテーブル１６３を更新する（ステップＳ３９）。この結果、バンクテーブル１６３は、物理バンク番号が２のバンクについて、実行コマンド列識別番号が２で、仮想バンク番号が０という情報を対応付けた内容となる。
【００９９】
ステップＳ３９の後、実行制御部１６０は、解読したＲｅａｄＤＭＡコマンドをＤＭＡコントローラ１４０に伝えて、コマンドの実行を要求する（ステップＳ４０）。即ち、実行制御部１６０は、主メモリアドレス、２という物理バンク番号、ローカルメモリアドレス、転送サイズ、主メモリアドレス増分、ローカルメモリアドレス増分、及び主メモリからローカルメモリへのデータ転送である旨を示すデータをＤＭＡコントローラ１４０に送信する。これによって、ＤＭＡコントローラ１４０は、主メモリ１２０からローカルメモリ１３１のバンク＃２へのデータ転送を開始する。
【０１００】
ここでは、その後、スレーブプロセッサ１３０がコマンド用エリア（３５）に格納されていたＳＰｓｔａｒｔコマンドの実行を継続している間に、ＤＭＡコントローラ１４０がコマンド用エリア（４７）に格納されていたＲｅａｄＤＭＡコマンドの実行を完了したこととして、ステップＳ２１から説明を続ける。
実行制御部１６０は、ステップＳ２１においてコマンド列＃１中のコマンドがまだ実行中であると判定してｙｅｓの分岐に進み、ステップＳ３１においてコマンド列＃２中のコマンドは実行中でないと判定してｎｏの分岐に進み、ステップＳ３２において次コマンドＩＤ保持部１６２に保持されているコマンドＩＤが「４８」であると判定してｙｅｓの分岐に進み、コマンド用エリア（４８）内に格納されているＤＭＡコントローラ用のＲｅａｄＤＭＡコマンドに着目し、そのＲｅａｄＤＭＡコマンドを解読する（ステップＳ３４）。
【０１０１】
ステップＳ３４で解読したＲｅａｄＤＭＡコマンドは仮想バンク番号が１の仮想バンクを確保することを要するものであるから、実行制御部１６０は物理バンク番号のうち仮想バンク番号と対応付けられていないものがあるかバンクテーブル１６３を参照してチェックし（ステップＳ３５）、対応付けられていないものがあるのでステップＳ３５においてｙｅｓの分岐に進み、ＤＭＡコントローラが非稼働状態であるか否かを判定して（ステップＳ３６）、ＤＭＡコントローラ１４０は既に非稼働状態であるためステップＳ３６においてｙｅｓの分岐に進み、ＲｅａｄＤＭＡコマンド内における次コマンドＩＤの値である「４９」を次コマンドＩＤ保持部１６２に格納する（ステップＳ３８）。
【０１０２】
ステップＳ３８に続いて実行制御部１６０は、バンクテーブル１６３を参照して、空いている物理バンク番号を検出し、解読したＲｅａｄＤＭＡコマンドで指定されていた１という仮想バンク番号に空いている３という物理バンク番号とを対応付けて、バンクテーブル１６３を更新する（ステップＳ３９）。この結果、バンクテーブル１６３は、物理バンク番号が３のバンクについて、実行コマンド列識別番号が２で、仮想バンク番号が１という情報を対応付けた内容となる。
【０１０３】
従って、この時点でバンクテーブル１６３の内容は図８に例示した状態となる。
ステップＳ３９の後、実行制御部１６０は、解読したＲｅａｄＤＭＡコマンドをＤＭＡコントローラ１４０に伝えて、コマンドの実行を要求する（ステップＳ４０）。即ち、実行制御部１６０は、主メモリアドレス、３という物理バンク番号、ローカルメモリアドレス、転送サイズ、主メモリアドレス増分、ローカルメモリアドレス増分、及び主メモリからローカルメモリへのデータ転送である旨を示すデータをＤＭＡコントローラ１４０に送信する。これによって、ＤＭＡコントローラ１４０は、主メモリ１２０からローカルメモリ１３１のバンク＃３へのデータ転送を開始する。
【０１０４】
この後、スレーブプロセッサ１３０がコマンド用エリア（３５）に格納されていたＳＰｓｔａｒｔコマンドの実行を完了し、また、ＤＭＡコントローラ１４０がコマンド用エリア（４８）に格納されていたＲｅａｄＤＭＡコマンドの実行を完了したとして、ステップＳ２１から説明を続ける。
実行制御部１６０は、ステップＳ２１においてコマンド列＃１中のコマンドは実行中でないと判定してｎｏの分岐に進み、ステップＳ２２において次コマンドＩＤ保持部１６１に保持されているコマンドＩＤが「３６」であると判定してｙｅｓの分岐に進み、コマンド用エリア（３６）内に格納されているＤＭＡコントローラ用のＷｒｉｔｅＤＭＡコマンドに着目し、そのＷｒｉｔｅＤＭＡコマンドを解読する（ステップＳ２４）。
【０１０５】
ステップＳ２４で解読したＷｒｉｔｅＤＭＡコマンドは仮想バンク番号が１の仮想バンクを確保することを要するものであるが、既にバンクテーブル１６３において１という仮想バンク番号は１という物理バンク番号と対応付けられており、バンク不足は生じないため、実行制御部１６０は、ステップＳ２５においてｙｅｓの分岐に進み、ＤＭＡコントローラが非稼働状態であるか否かを判定して（ステップＳ２６）、非稼働状態であるためステップＳ２６においてｙｅｓの分岐に進み、ＷｒｉｔｅＤＭＡコマンド内における次コマンドＩＤの値である「０」を次コマンドＩＤ保持部１６１に格納する（ステップＳ２８）。
【０１０６】
ステップＳ２８に続いて実行制御部１６０は、仮想バンク番号と物理バンク番号との対応付けは既に行われているためステップＳ２９を省き、解読したＷｒｉｔｅＤＭＡコマンドをＤＭＡコントローラ１４０に伝えて、コマンドの実行を要求する（ステップＳ３０）。即ち、実行制御部１６０は、主メモリアドレス、１という物理バンク番号、ローカルメモリアドレス、転送サイズ、主メモリアドレス増分、ローカルメモリアドレス増分、及びローカルメモリから主メモリへのデータ転送である旨を示すデータをＤＭＡコントローラ１４０に送信する。これによって、ＤＭＡコントローラ１４０は、ローカルメモリ１３１のバンク＃１から主メモリ１２０へのデータ転送を開始する。
【０１０７】
なお、ＷｒｉｔｅＤＭＡコマンド内で、０という仮想バンク番号についての解放が指定されていた場合には、ステップＳ２９のタイミングで実行制御部１６０は、０という物理バンク番号が空いている旨を示すようにバンクテーブル１６３を更新する。
次に、実行制御部１６０は、ステップＳ３１においてコマンド列＃２中のコマンドは実行中でないと判定してｎｏの分岐に進み、ステップＳ３２において次コマンドＩＤ保持部１６２に保持されているコマンドＩＤが「４９」であると判定してｙｅｓの分岐に進み、コマンド用エリア（４９）内に格納されているスレーブプロセッサ用のＳＰｓｔａｒｔコマンドに着目し、そのＳＰｓｔａｒｔコマンドを解読する（ステップＳ３４）。
【０１０８】
ステップＳ３４で解読したＳＰｓｔａｒｔコマンドは仮想バンク番号が０及び１の仮想バンクを確保することを要するものであるが、既にバンクテーブル１６３において０及び１という仮想バンク番号はそれぞれ２、３という物理バンク番号と対応付けられており、バンク不足は生じないため、実行制御部１６０は、ステップＳ３５においてｙｅｓの分岐に進み、スレーブプロセッサが非稼働状態であるか否かを判定して（ステップＳ３６）、非稼働状態であるためステップＳ３６においてｙｅｓの分岐に進み、ＳＰｓｔａｒｔコマンド内における次コマンドＩＤの値である「６１」を次コマンドＩＤ保持部１６１に格納する（ステップＳ３８）。
【０１０９】
ステップＳ３８に続いて実行制御部１６０は、仮想バンク番号と物理バンク番号との対応付けは既に行われているためステップＳ３９を省き、解読したＳＰｓｔａｒｔコマンドをスレーブプロセッサ１３０に伝えて、コマンドの実行を要求する（ステップＳ４０）。即ち、実行制御部１６０は、命令を特定するためのフォーマット番号、２及び３という物理バンク番号、スレーブプロセッサ１３０の命令メモリにおける実行開始アドレス、及びパラメータ１〜５を示すデータをスレーブプロセッサ１３０に送信する。これによって、スレーブプロセッサ１３０は、ローカルメモリ１３１のバンク＃２とバンク＃３の内容に基づいて演算βを行ってその結果をバンク＃３に書き込む処理を開始する。
【０１１０】
このようにして、実行制御部１６０は、各コマンド列内での順序に従って各コマンドをスレーブハードに実行させ、より詳しくは、一方のスレーブハードにあるコマンド列のコマンドを実行させている間においても他方のスレーブハードに他のコマンド列のコマンドを並行して実行させ得るので、１つのコマンド列ずつ順番に実行する方式と比べて、スレーブハードを有効活用でき、結果的に高速に複数のコマンド列を実行することができる。
【０１１１】
＜1-6.考察＞
図１２は、通信メモリ１５１及びコマンドキュー１５２が図５に例示した内容であることを前提として、実行制御部１６０が上述のように動作した場合の各コマンドの実行状況の変化を示すタイムチャートである。
同図では、通信メモリ１５１のコマンド用エリア（２１）に格納されたコマンドを先頭とするコマンド列を「Ａ１」で表し、コマンド用エリア（４７）に格納されたコマンドを先頭とするコマンド列を「Ａ２」で表している。
【０１１２】
仮にコマンド列「Ａ１」の全てのコマンドを順次スレーブハードに実行させた後にコマンド列「Ａ２」の全てのコマンドを順次スレーブハードに実行させることとした場合を想定したならば、ＳＰｓｔａｒｔコマンドがスレーブプロセッサ１３０に実行されている間には、ＤＭＡコントローラ１４０が非稼働状態となってしまう。
【０１１３】
ところが本実施の形態で示したコマンド実行制御装置１５０の制御により、実際は、図１２に示すように、コマンド列「Ａ１」のＳＰｓｔａｒｔコマンドがスレーブプロセッサ１３０に実行されている間にも、コマンド列「Ａ２」のＲｅａｄＤＭＡコマンドがＤＭＡコントローラ１４０に実行されるため、各スレーブハードの稼働率が高まり、複数のコマンド列全体として見れば処理が高速に行われるようになる。
【０１１４】
また、コマンド列「Ａ１」を構成するコマンドの実行に際しては、ローカルメモリ１３１のバンク＃０及びバンク＃１が用いられ、またコマンド列「Ａ２」を構成するコマンドの実行に際しては、ローカルメモリ１３１のバンク＃２及びバンク＃３が用いられ、コマンド列間で独立したメモリ空間を利用して処理が行われるため、データの不整合等が生じないことが保証される。
＜実施の形態２＞
実施の形態１で示した処理システム１００においては、実行制御部１６０は、ある仮想バンク番号を指定してメモリ領域の確保を指示する属性を含むコマンドについて、その仮想バンクに１つの空いている物理バンク番号を、バンクテーブル１６３を用いて対応付ける方式により、各コマンド列間で独立したメモリ空間を利用してスレーブハードに各コマンドの処理を行わせることとした。
【０１１５】
これに対し実施の形態２に係る処理システムは、実施の形態１に係る処理システム１００をわずかに変形した処理システム（以下、「変形処理システム」という。）であり、この変形処理システムは、処理システム１００の実行制御部１６０を変形したものである変形実行制御部がコマンド列間で共通のメモリ領域を利用してスレーブハードに各コマンドの処理を行わせ得る点に特徴がある。
【０１１６】
＜2-1.変形処理システム＞
以下、実施の形態２に係る変形処理システムについて説明する。
変形処理システムの構成は基本的に図１に示した処理システム１００の構成と一部のみ異なる。従って、変形処理システムの構成要素についても、基本的には図１に示した符号を用いて説明する。
【０１１７】
変形処理システムが処理システム１００と異なる点は、次の通りである。
（１）処理システム１００においては、マスタプロセッサ１１０から通信メモリ１５１に格納されるコマンドの属性に、仮想バンク番号の指定を伴ってメモリ領域の確保又は解放の指示を含ませることができた。
変形処理システムにおいてはマスタプロセッサ１１０から通信メモリ１５１に格納されるコマンドの属性として、上述の仮想バンク番号の指定と確保又は解放の指示とに加えて、その確保又は解放の対象となるメモリ領域がコマンド列間で共通に用いられるべきであることを指定するか否かを示すグローバル属性を、コマンドの属性に付加した点に特徴がある。
【０１１８】
即ち、コマンドフォーマットにおけるコマンドの属性中の、仮想バンク番号の指定毎に１ビットのグローバル属性の指定が含まれる。以下、コマンド列間で共通にメモリ領域を用いられるべきであることを指定することを、グローバル指定という。
（２）処理システム１００においては、バンクテーブル１６３において、各物理バンク番号２６１を、実行コマンド列識別番号２６２及び仮想バンク番号２６３と対応付けて管理しており、実行コマンド列識別番号２６２の値は、コマンド列＃１とコマンド列＃２とのいずれかを示す値、つまり１又は２をとるか、いずれにも対応付けられていないことを示す３等の値をとることとした（図８参照）。
【０１１９】
図１３は、実施の形態２に係る変形処理システムにおけるバンクテーブルの構成及び内容例を示す図である。
変形処理システムにおけるバンクテーブル５６３は、処理システム１００におけるバンクテーブル１６３と基本的に同様な構成であり、各物理バンク番号５６４に、実行コマンド列識別番号５６５及び仮想バンク番号５６３を対応付けたものであるが、実行コマンド列識別番号５６５の値が、グローバル指定に対応していずれのコマンド列にも共通する意味を示す値として０をとり得る点のみが相違する。
【０１２０】
図１３の例では、０という物理バンク番号で特定されるローカルメモリ１３１のバンク＃０は、コマンド列間で共通に用いられ、０という仮想バンク番号と対応付けられていることを示しており、またバンク＃１はコマンド列＃１における仮想バンク番号１と対応付けられており、バンク＃２はコマンド列＃２における仮想バンク番号１と対応付けられており、バンク＃３は空き状態であることを示している。
（３）処理システム１００においては、図１０及び図１１のフローチャートに即して実施の形態１で説明したように、実行制御部１６０は、コマンド中の属性に、確保すべきメモリ領域を指定する仮想バンク番号が含まれている場合において、バンクテーブル１６３を参照して、その仮想バンク番号と対応付けることのできる物理バンク番号が空いているかを、即ちローカルメモリ１３１のバンクが不足することがないかを調べ（ステップＳ２５、Ｓ３５）、不足しない場合に限りコマンドを実行することとし、コマンド内の属性に応じてメモリ領域の確保又は解放のためにバンクテーブル１６３を更新し、メモリ領域の確保をすべき旨の属性を含むコマンドをスレーブハードに実行させる際には、コマンドで指定された仮想バンク番号と対応付けた物理バンク番号をスレーブハードに伝えて（ステップＳ２９、Ｓ３９）、そのスレーブハードがその物理バンク番号で特定されるメモリ領域を処理対象等として用いることができるようにした。
【０１２１】
変形処理システムにおいても、変形実行制御部が基本的には図１０及び図１１のフローチャートで示した手順で処理を行う。但し、変形処理システムにおいては、仮想バンク番号を指定しグローバル指定付きでメモリ領域を確保すべき旨の属性が含まれるコマンドについては、バンクテーブルを参照し、指定された仮想バンク番号と０という値の実行コマンド列識別番号との組に対して、既に対応付けられている物理バンク番号が存在すれば、そのコマンドをスレーブハードに実行させる際に、その物理バンク番号をスレーブハードに伝え、また、その対応付けられている物理バンク番号が存在しなければ、空いている物理バンク番号がないかを調べ（ステップＳ２５、Ｓ３５）、空いている物理バンク番号がある場合に限りコマンドを実行することとし、その空いている物理バンク番号と、０という値の実行コマンド列識別番号と、指定された仮想バンク番号とを対応付けるべくバンクテーブル５６３を更新し、スレーブハードにその物理バンク番号を伝えて（ステップＳ２９、Ｓ３９）、そのスレーブハードがその物理バンク番号で特定されるメモリ領域を処理対象等として用いることができるようにする。
【０１２２】
＜2-2.考察＞
以上説明したような変形処理システムによれば、一のコマンド列においてグローバル指定で例えば０番の仮想バンク番号でメモリ領域を確保し、そのメモリ領域にスレーブハードによりデータを書き込んでおき、その後においては、他のコマンド列であっても、その０番の仮想バンク番号でメモリ領域を確保する指定のコマンドを置けば、互いに異なるコマンド列に属するコマンドを実行する各スレーブハードが、同一のメモリ領域を用いてコマンドの処理を行うことができるようになる。
【０１２３】
即ち、各コマンド列間でメモリ領域を共用する処理が構築できるため、この変形処理システムは、同じデータを参照する点を除いて互いに独立した複数の処理を行う必要がある場合に有用となる。
＜実施の形態３＞
実施の形態１で示した処理システム１００においては、実行制御部１６０は、ある仮想バンク番号を指定してメモリ領域の確保を指示する属性を含むコマンドについて、その仮想バンクに１つの空いている物理バンク番号を、バンクテーブル１６３を用いて対応付けて、コマンドを実行すべきスレーブハードにその物理バンク番号を伝えて、スレーブハードにその物理バンク番号で特定されるメモリ領域を用いた処理を行わせることとし、また、ある仮想バンク番号を指定してメモリ領域の解放を指示する属性を含むコマンドをスレーブハードに実行させる際にはその実行前に、その仮想バンク番号と対応付けられていた物理バンク番号を空き状態とすべくバンクテーブル１６３を更新することとしていた。また、処理システム１００においては、別個のコマンド列を構成するコマンドが、各スレーブハードによって同時に実行され得るが、一のコマンド列を構成する連続する複数のコマンドは、同時に実行されることなく、コマンドは１つずついずれかのスレーブハードで実行されるようになっていた。
【０１２４】
これに対し実施の形態３に係る処理システムは、実施の形態１に係る処理システム１００を変形した処理システムであり、コマンドの属性によってメモリ領域に確保又は解放を行うことができるのみならず、コマンドを実行中であるスレーブハードからの指示によってメモリ領域の確保、解放等を行うことができるようにした点と、一のコマンド列を構成する連続する複数のコマンドについても、各スレーブハードによって同時に実行され得るようにした点とに特徴がある。但し、実施の形態３に係る処理システムにおいても、一のコマンド列を構成するコマンドは、そのコマンド列の順に従って、いずれかのスレーブハードによって実行開始される点は、処理システム１００の場合と同じである。つまり、実施の形態３に係る処理システムにおいては、同一コマンド列内の各コマンドについての各スレーブハードによる実行期間の始期は、必ずコマンド列に従った順序となるが、各コマンドの実行期間は重複し得るし、各コマンドの実行期間の終期はいかなる順序ともなり得る。
【０１２５】
＜3-1.構成＞
図１４は、実施の形態３に係る処理システム６００の構成図である。
処理システム６００は、同図に示すようにマスタプロセッサ１１０、主メモリ６２０、スレーブプロセッサ６３０、ローカルメモリ１３１、ＤＭＡコントローラ６４０及びコマンド実行制御装置６５０を備え、半導体の１チップ内に形成されている。なお、処理システム６００の構成要素のうち、処理システム１００（図１参照）の構成要素と同じものについては図１４において図１と同じ符号を付している。ここでは処理システム６００のうち、処理システム１００と同じ部分についての説明は省略する。
【０１２６】
プログラムを実行することによってマスタプロセッサ１１０は、スレーブハードに部分的処理を行わせるために、コマンド実行制御装置６５０に随時、コマンド列を伝え、必要に応じてコマンド実行制御装置６５０にコマンドに対応する処理の実行完了の通知を要求しその実行完了を示す通知を受け取る手段として機能する。
【０１２７】
スレーブプロセッサ６３０は、専用の制御プログラムを実行することにより、コマンド実行制御装置６５０からコマンドを伝えられると、必要に応じてローカルメモリ１３１を用いて、そのコマンドを実行し、実行の完了をコマンド実行制御装置６５０に通知する機能を実現するプロセッサであり、更に、コマンド実行中において、仮想バンク番号を指定して、ローカルメモリ１３１中のバンクについて、確保すべき旨、解放すべき旨、待機している旨又は使用終了の旨をコマンド実行制御装置６５０に通知する機能を有する。
【０１２８】
ＤＭＡコントローラ６４０は、コマンド実行制御装置６５０からコマンドを伝えられると、大容量のオンチップメモリである主メモリ６２０とローカルメモリ１３１との間でのデータ転送を制御し、データ転送の完了をコマンド実行制御装置１５０に通知する機能を発揮するＤＭＡコントローラであり、並行的に２チャネルの転送が可能、つまり同時に２つのコマンドの処理が可能である。なお、ＤＭＡコントローラ６４０は、主メモリ６２０から、ある仮想バンク番号で指定されたローカルメモリ１３１内の１つのバンクへデータを転送する旨のコマンドを実行した場合には、ＤＭＡコントローラ６４０は、その実行完了時にコマンド実行制御装置６５０に、その実行が完了したチャネルが第１のチャネルであるか第２のチャネルであるかを識別するチャネル番号とともにメモリバンクの使用終了の旨を通知する機能をも有する。
【０１２９】
なお、ローカルメモリ１３１は別個のバンクには同時アクセス可能であり、また主メモリ６２０も複数のバンクで構成され、内部における別個のバンク等に同時にアクセス可能である。
また、コマンド実行制御装置６５０は、マスタプロセッサ１１０とスレーブハードとの間のインタフェースとしての役割を果たす装置であり、マスタプロセッサに伝えられた複数のコマンド列からスレーブハードを有効活用するために適切にコマンドを選択して、スレーブハードにそのコマンドの実行開始を指示して、スレーブハードからコマンドの実行完了の通知を受け取り、マスタプロセッサが通知を要求しているコマンドに対応する処理が完了した時にはマスタプロセッサにその完了を通知する機能を有し、更にスレーブハードからローカルメモリ１３１中のメモリ領域についての、確保、解放、待機又は使用終了の各旨の通知を受けて、ローカルメモリ１３１のアクセス管理を行う機能を有する。なお、コマンド実行制御装置６５０は、ＣＰＵ及びメモリで構成してもよい。
【０１３０】
このコマンド実行制御装置６５０は図１４に示すように、通信メモリ１５１、コマンドキュー１５２、完了受付部１５３、実行制御部６６０及び完了通知部１７０を有する。
実行制御部６６０は、次コマンドＩＤ保持部１６１、次コマンドＩＤ保持部１６２、バンクテーブル６６３及びメモリ通知部６６４を有し、コマンドキュー１５２及び通信メモリ１５１を参照して、各コマンド列中のコマンドを、その属するコマンド列における順序に従っていずれかのスレーブハードに実行開始させつつ、連続するコマンドを、可能な限り、異なるスレーブハードで並行実行させるための制御を行う機能を有する。
【０１３１】
即ち、実行制御部６６０は、コマンド列中のコマンドの実行開始をスレーブハードに指示した後に完了受付部１５３からコマンドの実行完了を伝えられて、スレーブハードがコマンドを実行し終えて非稼働状態になっていることを検出する等によって、１つのコマンド列中のコマンドをあるスレーブハードに実行させている間に、他のスレーブハードを用いて同一コマンド列中の次のコマンドが実行可能であるかを判断し、実行可能であればそのコマンドをその他のスレーブハードに並行的に実行させ、同一コマンド列中の次のコマンドは実行不可能であれば他のコマンド列中のコマンドが実行可能であるかを判断し、実行可能であれば当該他のコマンド列中のコマンドを当該他のスレーブハードに並行的に実行させる制御を行う機能を有する。なお、実行制御部６６０は、特に示さない点は実施の形態１で示した実行制御部１６０と同等である。
【０１３２】
なお、実行制御部６６０は、コマンドの実行をスレーブハードに指示した後にそのコマンドの所在を示すコマンドＩＤを図示していない内部の作業用メモリ領域に保持し、そのスレーブハードによるコマンドの実行完了を完了受付部１５３から伝えられるまでは、コマンドをスレーブハードに実行させている状態であると判定し、コマンドの実行完了を完了受付部１５３から伝えられた後には、内部の作業用メモリ領域内に保持したそのコマンドについてのコマンドＩＤ等を削除して、コマンドをスレーブハードに実行させていない状態であると判定する。内部の作業用メモリ領域には、コマンドの出所であるコマンド列別に各３つのコマンドＩＤを実行順に順序付けて保持できる。なお、実行制御部６６０によって、内部の作業用メモリ領域には、実行開始したコマンドのコマンドＩＤとともに、そのコマンドの実行を行っているスレーブハードが、スレーブプロセッサ６３０であるか、ＤＭＡコントローラ６４０の第１のチャネルであるか、ＤＭＡコントローラ６４０の第２のチャネルであるかを識別するハード区分情報が対応付けられて保持される。
【０１３３】
なお、実行制御部６６０内部の作業用メモリ領域にコマンド列毎に３組のコマンドＩＤ及びハード区分情報が格納できることとしたのは、スレーブプロセッサ６３０と２チャネルのＤＭＡコントローラ６４０によって並行に３つのコマンドが実行可能であることに対応している。
コマンドにはローカルメモリ１３１を用いての処理を指示するコマンドがあり、実行制御部６６０は、複数のコマンド列中のコマンドを並行して実行対象とする上で、コマンド列毎に利用するローカルメモリのメモリ空間を独立化させるべく、コマンド列毎に各スレーブハードが別個のメモリ領域を用いて処理を行えるように制御する。
【０１３４】
メモリ通知部６６４は、スレーブプロセッサ６３０から伝えられるメモリバンクの確保、解放、待機又は使用終了の通知、或いはＤＭＡコントローラ６４０から伝えられるメモリバンクの使用終了の通知を受け、これらの通知に応じて後述するようにバンクテーブル６６３を更新する機能と、スレーブプロセッサ６３０によって待機されているメモリバンクについてＤＭＡコントローラ６４０から使用終了の通知を受けた場合にはそのメモリバンクの使用が可能となったことをスレーブプロセッサ６３０に通知する機能を有する。
【０１３５】
また、バンクテーブル６６３は、コマンドにおいてローカルメモリ１３１へのアクセスの指示に用いられる仮想バンク番号と、ローカルメモリ１３１の４つのメモリバンクのいずれかを現実に特定する物理バンク番号とを対応付けて管理するためのテーブルである。
＜3-2.バンクテーブルによるメモリ管理＞
図１５は、バンクテーブル６６３のデータ構造及び内容例を示す図である。
【０１３６】
バンクテーブル６６３は、同図に示すように、ローカルメモリ１３１のバンク＃０〜＃３を特定する０〜３の４つの物理バンク番号について、物理バンク番号６６５と実行コマンド列識別番号６６６と仮想バンク番号６６７とスレーブプロセッサ状態（ＳＰ状態）６６８とＤＭＡコントローラ状態（ＤＭＡ状態）６６９とを対応付けたテーブルである。同図中括弧で示した数値は実行制御部６６０により変更され得る値であることを示している。
【０１３７】
ここで、実行コマンド列識別番号６６６は、実行制御部６６０によって現在実行対象とされている各コマンド列を識別するための番号である。実行制御部６６０は、あるコマンド列中のコマンドをスレーブハードに実行させ始める時に、そのコマンド列中の次順位のコマンドのコマンドＩＤを次コマンドＩＤ保持部１６１又は次コマンドＩＤ保持部１６２に格納するので、現在実行対象とされているコマンド列を次コマンドＩＤ保持部の識別番号でもって表すことができる。このため、実行コマンド列識別番号６６６は、次コマンドＩＤ保持部の識別番号である１又は２という値で表される。但し、仮想バンク番号が対応付けられていない物理バンク番号についての実行コマンド列識別番号６６６は、対応付けられていないことを表す値として予め定めた例えば３等の値をとることになる。
【０１３８】
仮想バンク番号６６７は、コマンド中の属性において指定された仮想バンク番号であって実行制御部６６０によって物理バンク番号と対応付けられた番号である。なお、仮想バンク番号はコマンドにおいて０〜３のいずれかの指定が可能である。仮想バンク番号が対応付けられていない物理バンク番号についての仮想バンク番号６６７は、対応付けられていないことを表すと予め定めた例えば４等の値をとることになる。
【０１３９】
ＳＰ状態６６８は、仮想バンク番号と対応付けられている各物理バンク番号に対してのみ有効な意味を持ち、スレーブプロセッサ６３０が、対応する物理バンク番号で示される物理バンクを使用する必要があるという意味の使用中状態、或いはその物理バンクが使用中でなくなるのを待っている待機状態、そのどちらでもないという不定状態のいずれかを示す値をとる。なお、使用中状態、待機状態、不定状態を示す各値は例えばそれぞれ１、２、０等と、予め定めらた値である。
【０１４０】
また、ＤＭＡ状態６６９は、仮想バンク番号と対応付けられている各物理バンク番号に対してのみ有効な意味を持ち、ＤＭＡコントローラ６４０が、対応する物理バンク番号で示される物理バンクを使用する必要があるという意味の使用中状態、使用中状態でない意味の不定状態のいずれかを示す値をとる。なお、使用中状態、不定状態を示す各値は例えばそれぞれ１、０等と、予め定められた値である。
【０１４１】
実行制御部６６０は、仮想バンク番号と物理バンク番号との対応関係を管理するためにこのバンクテーブル６６３を用いる。
＜3-2-1.コマンドによる確保、解放指定＞
実行制御部６６０は、あるコマンド列中のコマンドをスレーブハードに実行させる際に、そのコマンド中の属性において確保すべきものとして仮想バンク番号が指定されている場合には、空いている物理バンク番号と、コマンド列における次順位のコマンドの所在を示すコマンドＩＤを格納することになる次コマンドＩＤ保持部の識別番号と、その実行させるコマンド中の属性において指定された仮想バンク番号とを対応付け、ＳＰ状態６６８及びＤＭＡ状態６６９のうちそのコマンドのコマンド種別で指定されたコマンドを実行するスレーブハードについての方を使用中状態にし他方を不定状態にするようにバンクテーブル６６３の内容を更新する。
【０１４２】
但し、そのコマンド中の属性において確保すべきものとして指定されている仮想バンク番号が、既にバンクテーブル６６３において物理バンク番号と対応付けられている場合において、つまり同じコマンド列の先行するコマンドに応じて又はそのコマンドの実行に際して既にその仮想バンクの確保がなされている場合において、ＳＰ状態６６８及びＤＭＡ状態６６９が不定状態であるときには、新たに仮想バンク番号と物理バンク番号との対応付けを行うことなく、既に対応付けられている物理バンク番号に対応するＳＰ状態６６８及びＤＭＡ状態６６９のうちそのコマンドを実行するスレーブハードについての方を使用中状態にするようにバンクテーブル６６３の内容を更新する。
【０１４３】
また、コマンド中の属性において解放すべきものとして仮想バンク番号が指定されている場合には、実行制御部６６０は、その仮想バンク番号と対応付けられている物理バンク番号についての実行コマンド列識別番号６６６及び仮想バンク番号６６７のそれぞれを、対応付けられていないことを示す値として予め定めた例えば３及び４等の値にし、ＳＰ状態６６８及びＤＭＡ状態６６９を不定状態にするようにバンクテーブル６６３の内容を更新する。
【０１４４】
この実行制御部６６０による、確保又は解放すべき仮想バンク番号を含むコマンドに応じたバンクテーブル６６３の更新は、実際にスレーブハードにコマンドを実行させる直前に行われる。
なお、コマンド中の属性において確保すべきものとして指定されている仮想バンク番号が、既にバンクテーブル６６３において物理バンク番号と対応付けられている場合において、ＳＰ状態６６８又はＤＭＡ状態６６９が不定状態でないときには、実行制御部６６０は未だそのコマンドをスレーブハードに実行させることはできないと判定するため、バンクテーブル６６３の更新を行うことはない。また、コマンド中の属性において確保すべきものとして指定されている仮想バンク番号が、未だバンクテーブル６６３において物理バンク番号と対応付けられていない場合において、仮想バンク番号と対応付けることのできる物理バンク番号が空いていないときにも、実行制御部６６０は未だそのコマンドをスレーブハードに実行させることはできないと判定するため、バンクテーブル６６３の更新を行うことはない。
【０１４５】
＜3-2-2.スレーブプロセッサによる確保、解放、待機、使用終了通知＞スレーブプロセッサ６３０が仮想バンクを指定してメモリバンクの確保、解放、待機又は使用終了の旨をコマンド実行制御装置６５０に通知した場合、その通知は実行制御部６６０中のメモリ通知部６６４で受け付けられ、メモリ通知部６６４は、その通知内容に応じて以下に示すようにバンクテーブル６６３の更新を行う。
（１）確保の通知
スレーブプロセッサ６３０からメモリバンクの確保の通知を受けた場合には、メモリ通知部６６４は、そのスレーブプロセッサが実行しているコマンドがどのコマンド列に属するかを実行制御部６６０内部の作業用メモリ領域等を参照して判別し、バンクテーブル６６３を参照し、そのコマンド列における、指定された仮想バンク番号と、物理バンク番号とが既に対応付けられているか否かを判定し、対応付けられていなければ、そのコマンド列の識別番号と、指定された仮想バンク番号と、空いている物理バンク番号とを対応付け、ＳＰ状態６６８を使用中状態にしＤＭＡ状態６６９を不定状態にするように、バンクテーブル６６３の内容を更新し、スレーブプロセッサ６３０にその物理バンク番号を受け付けた仮想バンク番号とともに通知する。
【０１４６】
指定された仮想バンク番号と物理バンク番号とが既に対応付けられていた場合において、ＤＭＡ状態６６９が不定状態であるときには、新たに仮想バンク番号と物理バンク番号との対応付けを行うことなく、既に対応付けられている物理バンク番号に対応するＳＰ状態６６８を使用中状態にするようにバンクテーブル６６３の内容を更新して、スレーブプロセッサ６３０にその物理バンク番号を、受け付けた仮想バンク番号とともに通知する。
【０１４７】
なお、スレーブプロセッサ６３０から仮想バンク番号を指定したメモリバンクの確保の通知を受けた場合において、バンクテーブル６６３により、その仮想バンク番号と物理バンク番号とが対応付けられており、対応するＤＭＡ状態６６９が不定状態でないときには、メモリ通知部６６４は、対応するＳＰ状態６６８を待機状態にするようにバンクテーブル６６３の内容を更新する。その後、そのＤＭＡ状態６６９が不定状態になり次第、メモリ通知部６６４はＳＰ状態６６８を使用中状態にするようバンクテーブル６６３を更新してスレーブプロセッサ６３０にその物理バンク番号と、対応する仮想バンク番号とを通知する。
【０１４８】
また、スレーブプロセッサ６３０から仮想バンク番号を指定したメモリバンクの確保の通知を受けた場合において、バンクテーブル６６３により、その仮想バンク番号と物理バンク番号とが対応付けられておらず、仮想バンク番号と対応付けることのできる物理バンク番号が空いていないときには、メモリ通知部６６４は実行制御部６６０内部にその仮想バンク番号を保持しておき、いずれ空いている物理バンク番号が生じ次第、その仮想バンク番号と物理バンク番号を対応付けてＳＰ状態６６８を使用中状態にしＤＭＡ状態６６９を不定状態にするようにバンクテーブル６６３を更新し、スレーブプロセッサ６３０にその物理バンク番号を、保持していた仮想バンク番号とともに通知する。
（２）解放の通知
スレーブプロセッサ６３０からメモリバンクの解放の通知を受けた場合には、メモリ通知部６６４は、そのスレーブプロセッサが実行しているコマンドがどのコマンド列に属するかを実行制御部６６０内部の作業用メモリ領域等を参照して判別し、バンクテーブル６６３を参照し、そのコマンド列における、指定された仮想バンク番号と対応付けられている物理バンク番号についての実行コマンド列識別番号６６６及び仮想バンク番号６６７のそれぞれを、対応付けられていないことを示す値として予め定められている例えば３及び４等の値にし、ＳＰ状態６６８及びＤＭＡ状態６６９を不定状態にするようにバンクテーブル６６３の内容を更新する。
（３）待機の通知
スレーブプロセッサ６３０からメモリバンクの待機の通知を受けた場合には、メモリ通知部６６４は、そのスレーブプロセッサが実行しているコマンドがどのコマンド列に属するかを実行制御部６６０内部の作業用メモリ領域等を参照して判別し、バンクテーブル６６３を参照し、そのコマンド列における、指定された仮想バンク番号と対応付けられているＤＭＡ状態６６９が不定状態でないときには、メモリ通知部６６４は、対応するＳＰ状態６６８を待機状態にするようにバンクテーブル６６３の内容を更新する。その後、そのＤＭＡ状態６６９が不定状態になり次第、メモリ通知部６６４はＳＰ状態６６８を使用中状態にするようにバンクテーブル６６３を更新してスレーブプロセッサ６３０にその仮想バンク番号に対応付けられている物理バンク番号と、その仮想バンク番号とを通知する。
【０１４９】
なお、メモリバンクの待機の通知において指定された仮想バンク番号とバンクテーブル６６３において対応付けられているＤＭＡ状態６６９が不定状態であれば、メモリ通知部６６４は、対応するＳＰ状態６６８を使用中状態にするようにバンクテーブル６６３を更新してスレーブプロセッサ６３０にその仮想バンク番号に対応付けられている物理バンク番号と、その仮想バンク番号とを通知する。（４）使用終了の通知
スレーブプロセッサ６３０からメモリバンクの使用終了の通知を受けた場合には、メモリ通知部６６４は、そのスレーブプロセッサが実行しているコマンドがどのコマンド列に属するかを実行制御部６６０内部の作業用メモリ領域等を参照して判別し、バンクテーブル６６３を参照し、そのコマンド列における、指定された仮想バンク番号と対応付けられている物理バンク番号についてのＳＰ状態６６８を不定状態にするようにバンクテーブル６６３の内容を更新する。
【０１５０】
＜3-2-3.ＤＭＡコントローラによる使用終了通知＞
ＤＭＡコントローラ６４０がチャネル番号を示してメモリバンクの使用終了の旨をコマンド実行制御装置６５０に通知した場合、その通知は実行制御部６６０中のメモリ通知部６６４で受け付けられ、メモリ通知部６６４は、実行制御部６６０内部の作業用メモリ領域を参照して、そのＤＭＡコントローラ６４０から受けたチャネル番号に基づき、そのチャネル番号において使用終了した仮想バンク番号を得て、バンクテーブル６６３においてその仮想バンク番号と対応付けられている物理バンク番号についてのＤＭＡ状態６６９を不定状態にするようにバンクテーブル６６３の内容を更新する。
【０１５１】
＜3-3.動作＞
以下、処理システム６００の動作について説明する。
処理システム６００において、マスタプロセッサ１１０はマスタプロセッサ処理（図９参照）を実行し、コマンド実行制御装置６５０は、マスタプロセッサ１１０から伝えられたコマンド列に基づいてコマンドをスレーブハードに実行させる処理である実行制御処理と、スレーブハードにコマンドを実行させている間においてバンクテーブル６６３を用いてローカルメモリ１３１の管理を行う処理（以下、「コマンド実行中メモリ管理処理」という。）と、実施の形態１で示したコマンド実行制御装置１５０と同様に、コマンド実行完了通知インタフェースによりコマンドの実行完了をマスタプロセッサに通知する処理とを実行する。
【０１５２】
なお、マスタプロセッサ１１０がコマンド実行制御装置６５０に伝えるコマンド列は、予めプログラムによって特定されるものである。
以下、実行制御処理及びコマンド実行中メモリ管理処理について、図１６〜図１９に示すフローチャートを用いて詳細に説明する。
＜3-3-1.実行制御処理＞
図１６は、コマンド実行制御装置６５０内の実行制御部６６０によりなされる実行制御処理の一部を示すフローチャートであり、図１７は、コマンド実行制御装置６５０内の実行制御部６６０によりなされる実行制御処理のうち図１６に示した以外の部分を示すフローチャートである。
【０１５３】
まず、実行制御部６６０は、１という識別番号で識別される次コマンドＩＤ保持部１６１にコマンドＩＤが保持されたことのあるコマンド列＃１中のコマンドを、スレーブハードに実行させている状態であるか否かを判定する（ステップＳ７０１）。
なお、実行制御部６６０は、コマンドの実行をスレーブハードに指示する際にそのコマンドの所在を示すコマンドＩＤ及びハード区分情報を、そのコマンドの属するコマンド列と対応付けて、実行制御部６６０内部の作業用メモリ領域に保持し（ステップＳ７１１）、その後、そのスレーブハードによるコマンドの実行完了を完了受付部１５３から伝えられると、その作業用メモリ領域内に保持したそのコマンドについてのコマンドＩＤ及びハード区分情報を削除することで、実行中のコマンドを管理し、これにより、例えばコマンド列＃１について１つ以上のコマンドＩＤ等が保持されている間は、コマンド列＃１中のコマンドをスレーブハードに実行させている状態であると判定する。
【０１５４】
ステップＳ７０１において、コマンド列＃１中のコマンドをスレーブハードに実行させている状態でないと判定した場合に、実行制御部６６０は、次コマンドＩＤ保持部１６１に保持されているコマンドＩＤは０か否かを判定し（ステップＳ７０２）、そのコマンドＩＤが０であれば、コマンドキュー１５２にコマンドＩＤが格納されているか否かを判定する（ステップＳ７０３）。
【０１５５】
ステップＳ７０１において、コマンド列＃１中のコマンドをスレーブハードに実行させている状態であると判定した場合に、実行制御部６６０は、次コマンドＩＤ保持部１６１に保持されているコマンドＩＤは０か否かを判定し（ステップＳ７０４）、そのコマンドＩＤが０でないときには、実行制御部６６０は、次コマンドＩＤ保持部１６１に保持されているコマンドＩＤの示すコマンド用エリアに格納されているコマンドに着目し、そのコマンドを解読する（ステップＳ７０５）。
【０１５６】
ステップＳ７０２において、次コマンドＩＤ保持部１６１に保持されているコマンドＩＤが０でないと判定した場合には、実行制御部６６０は、次コマンドＩＤ保持部１６１に保持されているコマンドＩＤの示すコマンド用エリアに格納されているコマンドに着目し、そのコマンドを解読する（ステップＳ７０５）。
また、ステップＳ７０３においてコマンドキュー１５２にコマンドＩＤが格納されていると判定した場合には、実行制御部６６０は、コマンドキュー１５２の先頭のコマンドＩＤの示すコマンド用エリアに格納されているコマンドに着目し、そのコマンドを解読する（ステップＳ７０５）。
【０１５７】
ステップＳ７０５に続いて、実行制御部６６０は、内部の作業用メモリ領域に保持されているハード区分情報を参照することにより、そのコマンドを実行するスレーブハードは空いている即ち非稼働状態であるか否かを判定し（ステップＳ７０６）、スレーブハードが空いていると判定した場合には、コマンド中の属性に確保すべき仮想バンク番号の指定が含まれていればバンクテーブル６６３を参照して、その仮想バンク番号と対応付けることのできる物理バンク番号が空いているか又は既に対応付けられている物理バンク番号の示すメモリバンクが使用可能状態であるかを調べる（ステップＳ７０７）。このステップＳ７０７は、指定されたメモリバンクが使用可能か否かを判定する処理である。
【０１５８】
なお、ステップＳ７０６では、１個のスレーブプロセッサと、２個分つまり２チャネル分のＤＭＡコントローラとを上限とするハードウェア資源のうち、現在保持されている各ハード区分情報が示すスレーブハードを除いたものが、空いているスレーブハードということになる。
ステップＳ７０７において、指定されたメモリバンクが使用可能であると判定した場合には、実行制御部６６０は、ステップＳ７０３を経由してステップＳ７０５においてコマンドキュー１５２中のコマンドＩＤが示すコマンドに着目しているときに限りコマンドキュー１５２からそのコマンドＩＤを消去する（ステップＳ７０８）。なお、ステップＳ７０３を経由しステップＳ７０５でコマンドキュー１５２内のコマンドＩＤの指し示すコマンドを解読した場合には実行制御部６６０はステップＳ７０８の処理を省略する。
【０１５９】
続いて、実行制御部６６０は、解読したコマンド内に示される次コマンドＩＤを次コマンドＩＤ保持部１６１に格納し（ステップＳ７０９）、そのコマンド内の属性を参照して、メモリバンクの確保又は解放の指定が含まれていれば、この指定に応じてバンクテーブル６６３を更新する（ステップＳ７１０）。なお、メモリバンクの確保又は解放の指定が含まれていない場合においては実行制御部６６０はステップＳ７１０の処理を省略する。
【０１６０】
このステップＳ７１０によるバンクテーブル６６３の更新内容は、既述（3-2-1.コマンドによる確保、解放指定）の通りである。
ステップＳ７１０に続いて、実行制御部６６０は、コマンドの先頭ビットで指定されたスレーブハードを特定するためのハード区分情報とコマンドＩＤとをコマンド列＃１と対応付けて内部の作業用メモリ領域に保持し、そのスレーブハードにコマンドの実行開始を指示する（ステップＳ７１１）。
【０１６１】
なお、実行制御部６６０は、コマンド内の先頭ビットで指定されたスレーブハード種別がスレーブプロセッサである場合には、スレーブプロセッサを示すハード区分情報を保持するようにしてスレーブプロセッサにコマンドを実行開始させ、スレーブハード種別がＤＭＡコントローラである場合には、ＤＭＡコントローラの第１のチャネルが空いていれば第１のチャネルを示すハード区分情報を保持するようにして第１のチャネルを指定してＤＭＡコントローラにコマンドを実行開始させ、第１のチャネルが空いていないが第２のチャネルが空いていれば第２のチャネルを示すハード区分情報を保持するようにして第２のチャネルを指定してＤＭＡコントローラにコマンドを実行開始させる。
【０１６２】
また、スレーブハードへのコマンドの実行開始の指示にあたり、実行制御部６６０は、コマンド中の属性のうちスレーブハードに必要な情報や実行ハード別のパラメータ類を抽出してスレーブハードに送信する。なお、コマンド内の属性にメモリバンクの確保のための仮想バンク番号の指定が含まれている場合には、実行制御部６６０は、指定された仮想バンク番号とバンクテーブル６６３において対応付けた物理バンク番号をスレーブハードに伝え、これを受けてスレーブハードは物理バンク番号で特定されるローカルメモリ１３１中のバンクを処理対象としてコマンドの実行を行う。
【０１６３】
なお、後にスレーブプロセッサ６３０又はＤＭＡコントローラ６４０のいずれかのチャネルから完了受付部１５３にコマンドの実行完了が伝えられた時に、完了受付部１５３からその旨を伝えられて実行制御部１６０は内部の作業用メモリ領域から実行が完了したコマンドについてのコマンドＩＤ及びハード区分情報を消去する。
【０１６４】
ステップＳ７１１の後、或いは、ステップＳ７０６においてそのコマンドを実行可能なスレーブハードが空いていないと判定した場合、ステップＳ７０７においてメモリバンクが使用可能でないと判定した場合、ステップＳ７０３においてコマンドキュー１５２にコマンドＩＤがないと判定した場合又はステップＳ７０４においてコマンドＩＤが０であると判定した場合には、実行制御部６６０は、２という識別番号で識別される次コマンドＩＤ保持部１６２にコマンドＩＤが保持されたことのあるコマンド列＃２中のコマンドをスレーブハードに実行させている状態であるか否かを判定する（ステップＳ７２１）。
【０１６５】
ステップＳ７２１〜Ｓ７３１の処理（図１７参照）は、上述したステップＳ７０１〜Ｓ７１１の処理（図１６参照）と、処理対象となるコマンド列が別個のものである点以外は同様なので、ここでは説明を省略する。
こうして、実行制御部６６０はステップＳ７０１〜Ｓ７３１の実行制御処理を繰り返し行う。
【０１６６】
＜3-3-2.コマンド実行中メモリ管理処理＞
図１８は、コマンド実行制御装置６５０における実行制御部６６０内のメモリ通知部６６４によりなされるコマンド実行中メモリ管理処理の一部を示すフローチャートであり、図１９は、コマンド実行中メモリ管理処理のうち図１８に示した以外の部分を示すフローチャートである。
【０１６７】
コマンド実行中メモリ管理処理は、上述の実行制御処理（図１６、図１７参照）とは、例えば別スレッド構成の制御プログラム等により、並列的に実行される処理である。
なお、コマンド実行中メモリ管理処理においてのバンクテーブル６６３の更新内容は、既述（3-2-2.スレーブプロセッサによる確保、解放、待機、使用終了通知、3-2-3.ＤＭＡコントローラによる使用終了通知）の通りである。
【０１６８】
メモリ通知部６６４は、スレーブプロセッサ６３０から仮想バンク番号を指定して伝えられるメモリバンクの確保の通知を受けると（ステップＳ７４１）、内部の作業用メモリ領域においてスレーブプロセッサを特定しているハード区分情報がどのコマンド列と対応付けられて保持されているかを判別し、バンクテーブル６６３において、そのコマンド列におけるその指定された仮想バンク番号と、いずれかの物理バンク番号とが既に対応付けられているか否かを判定し（ステップＳ７４２）、対応付けられていない場合には空いている物理バンク番号があるか否かを判定し（ステップＳ７４３）、空いている物理バンク番号があるときには、指定された仮想バンク番号とその空いている物理バンク番号とを対応付け、かつ、ＳＰ状態６６８を使用中状態にしＤＭＡ状態６６９を不定状態とするようにバンクテーブル６６３の内容を更新し（ステップＳ７４４）、スレーブプロセッサ６３０にその対応付けた物理バンク番号を、指定された仮想バンク番号とともに通知する（ステップＳ７４５）。
【０１６９】
ステップＳ７４３において、空いている物理バンク番号がないと判定した場合には、メモリ通知部６６４は、メモリバンクが空くのを待って確保を行う制御に用いるために、指定された仮想バンク番号を実行制御部６６０の内部メモリ領域に格納して保持する（ステップＳ７４６）。なお、この際に、仮想バンク番号と共にスレーブプロセッサに実行されているコマンドのコマンド列を示す番号をも保持する。
【０１７０】
ステップＳ７４２において、バンクテーブル６６３により、指定された仮想バンク番号と既に対応付けられている物理バンク番号があると判定した場合には、メモリ通知部６６４は、その物理バンク番号で示されるメモリバンクが使用可能であるか否かを判定する（ステップＳ７４７）。なお、ステップＳ７４７においてメモリ通知部６６４は、バンクテーブル６６３中、その物理バンク番号と対応するＤＭＡ状態６６９が不定状態になっていることをもって、そのメモリバンクが使用可能であると判定する。
【０１７１】
ステップＳ７４７において、そのメモリバンクが使用可能であると判定した場合には、メモリ通知部６６４は、バンクテーブル６６３においてそのメモリバンクを示す物理バンク番号と対応付けられるＳＰ状態６６８を使用中状態を示す値に更新し（ステップＳ７４９）、スレーブプロセッサ６３０にその対応付けられている物理バンク番号を、指定された仮想バンク番号とともに通知する（ステップＳ７５０）。一方、ステップＳ７４７において、そのメモリバンクが使用可能でないと判定した場合には、メモリ通知部６６４は、バンクテーブル６６３においてそのメモリバンクを示す物理バンク番号と対応付けられるＳＰ状態６６８を待機状態を示す値に更新する（ステップＳ７４８）。
【０１７２】
メモリ通知部６６４は、スレーブプロセッサ６３０から仮想バンク番号を指定して伝えられるメモリバンクの待機の通知を受けると（ステップＳ７５１）、内部の作業用メモリ領域においてスレーブプロセッサを特定しているハード区分情報がどのコマンド列と対応付けられて保持されているかを判別し、バンクテーブル６６３において、そのコマンド列におけるその指定された仮想バンク番号と対応付けられている物理バンク番号を特定し、その物理バンク番号で示されるメモリバンクは使用可能であるか否かを判定し（ステップＳ７４７）、以後はその判定結果に応じて上述したステップＳ７４８、或いはステップＳ７４９及びステップＳ７５０の処理を行う。
【０１７３】
メモリ通知部６６４は、スレーブプロセッサ６３０から仮想バンク番号を指定して伝えられるメモリバンクの解放の通知を受けると（ステップＳ７５２）、内部の作業用メモリ領域においてスレーブプロセッサを特定しているハード区分情報がどのコマンド列と対応付けられて保持されているかを判別し、バンクテーブル６６３において、そのコマンド列におけるその指定された仮想バンク番号と対応付けられている物理バンク番号を特定し、その物理バンク番号が空きとなるように、つまり、その物理バンク番号についての実行コマンド列識別番号６６６を３として仮想バンク番号６６７を４としＳＰ状態６６８及びＤＭＡ状態６６９を、不定状態を示す値とするようにバンクテーブル６６３を更新する（ステップＳ７５３）。
【０１７４】
メモリ通知部６６４は、スレーブプロセッサ６３０から仮想バンク番号を指定して伝えられるメモリバンクの使用終了の通知を受けると（ステップＳ７５４）、内部の作業用メモリ領域においてスレーブプロセッサを特定しているハード区分情報がどのコマンド列と対応付けられて保持されているかを判別し、バンクテーブル６６３において、そのコマンド列におけるその指定された仮想バンク番号と対応付けられている物理バンク番号を特定し、その物理バンク番号についてのＳＰ状態６６８を、不定状態を示す値とするようにバンクテーブル６６３を更新する（ステップＳ７５５）。
【０１７５】
また、メモリ通知部６６４は、ＤＭＡコントローラ６４０からチャネル番号を指定して伝えられるメモリバンクの使用終了の通知を受けると（ステップＳ７５４）、内部の作業用メモリ領域においてＤＭＡコントローラの指定されたチャネルを特定しているハード区分情報がどのコマンド列と対応付けられて保持されているかを判別し、そのハード区分情報と対応するコマンドＩＤで特定されるコマンドの属性で示された仮想バンク番号を判別し、バンクテーブル６６３において、そのコマンド列におけるその仮想バンク番号と対応付けられている物理バンク番号を特定し、その物理バンク番号についてのＤＭＡ状態６６９を、不定状態を示す値とするようにバンクテーブル６６３を更新する（ステップＳ７５５）。
【０１７６】
ステップＳ７４５、Ｓ７４６、Ｓ７４８、Ｓ７５０、Ｓ７５３又はＳ７５５の終了後、或いは、ステップＳ７５４においてスレーブプロセッサ６３０からメモリバンクの使用終了の通知を受けていない場合には、メモリ通知部６６４は、バンクテーブル６６３においてＳＰ状態６６８が待機状態であるものが存在するか否かを判定する（ステップＳ７５６）。このステップＳ７５６において、待機状態であるものが存在すると判定した場合には、メモリ通知部６６４は、その待機されているメモリバンクは使用可能か否か、即ちその待機状態と対応する物理バンク番号についてのＤＭＡ状態６６９が不定状態であるか否かを判定し（ステップＳ７５７）、不定状態であれば、そのＳＰ状態６６８を待機状態から使用中状態に更新し（ステップＳ７５８）、スレーブプロセッサ６３０にその対応付けた物理バンク番号を、対応する仮想バンク番号とともに通知する（ステップＳ７５９）。なお、ステップＳ７５７において不定状態でないと判定した場合、或いはステップＳ７５６において待機状態のものがないと判定した場合には、メモリ通知部６６４は、ステップＳ７５８及びＳ７５９の処理をスキップする。
【０１７７】
続いて、メモリ通知部６６４は、ステップＳ７４６によってメモリバンクが空くのを待つために保持されている仮想バンク番号があるか否かを判定し（ステップＳ７６０）、保持されている仮想バンク番号がある場合には、空いているメモリバンクが存在するか否か、即ち空いている物理バンク番号があるか否かを判定し（ステップＳ７６１）、空いている物理バンク番号があれば、その物理バンク番号と、保持していた仮想バンク番号とコマンド列の番号とを対応付け、その物理バンク番号についてのＳＰ状態６６８を使用中状態とし、ＤＭＡ状態６６９を不定状態とするようにバンクテーブル６６３を更新して（ステップＳ７６２）、保持していた仮想バンク番号及びコマンド列の番号を削除し、スレーブプロセッサ６３０にその対応付けた物理バンク番号を、対応する仮想バンク番号とともに通知し（ステップＳ７６３）、再びステップＳ７４１の処理に戻る。なお、ステップＳ７６１において空いている物理バンク番号がないと判定した場合、或いはステップＳ７６０においてメモリバンクが空くのを待つために保持されている仮想バンク番号がないと判定した場合には、メモリ通知部６６４は、ステップＳ７６２及びＳ７６３の処理をスキップして、再びステップＳ７４１の処理に戻る。
【０１７８】
＜3-3-3.スレーブプロセッサの動作＞
スレーブプロセッサ６３０は、パラメータ類等の必要情報の送信を伴ってコマンドの実行開始を実行制御部６６０に指示された場合に、そのコマンドで指定された処理の実行を行う。具体的には、スレーブプロセッサ６３０は、そのコマンドの内容に対応するプログラムを解釈実行することによって、コマンドで指定された処理を実行する。
【０１７９】
スレーブプロセッサ用のプログラム中には、上述したように仮想バンク番号を指定を伴ってメモリバンクの確保、待機、解放及び使用終了のそれぞれを通知するための命令（以下、それぞれ「ａｌｌｏｃ命令」、「ｗａｉｔ命令」、「ｒｅｌｅａｓｅ命令」及び「ｄｏｎｅ命令」という。）を含ませることができる。
以下、メモリバンクの使用権について、コマンド列単位での確保及び解放と、コマンド列中のコマンドを実行するスレーブハード単位での確保及び解放との両方の概念を用いて説明する。なお、コマンド列単位で、あるメモリバンクの使用権を得ていても、そのコマンド列中のあるコマンドを実行するスレーブハードが、スレーブハード単位でのそのメモリバンクの使用権を得ている限り、同じコマンド列中の他のコマンドを実行するスレーブハードはそのメモリバンクの使用権を得ることができないように、実行制御部６６０によって管理されている。従って、同じコマンド列を構成する各コマンドを実行するスレーブハード間では、同一の仮想バンク番号を指定して同一のメモリバンクを時間をずらして共用することができるようになっている。
【０１８０】
ａｌｌｏｃ命令は、スレーブプロセッサが、指定した仮想バンク番号に対応するものとしてのメモリバンクの使用権を確保する意義を有するメモリ管理用の命令である。この使用権の確保はスレーブハード単位の確保であり、もしコマンド列単位での確保がなされていない場合においてはコマンド列単位での確保も兼ねることになる。
【０１８１】
ｗａｉｔ命令は、スレーブプロセッサが実行しているコマンドが含まれるコマンド列中における先に実行開始されたコマンドに基づいて、一旦はメモリバンクの使用権が確保されていることを前提として、換言すれば、そのコマンド列単位ではメモリバンクの使用権が確保されていることを前提として、他のスレーブハードがその仮想バンク番号に対応するメモリバンクの使用権を現在有している可能性があるため、その使用終了を待ってスレーブプロセッサがスレーブハード単位でのそのメモリバンクの使用権を得る意義を有するメモリ管理用の命令である。
【０１８２】
ｒｅｌｅａｓｅ命令は、スレーブプロセッサが実行しているコマンドが含まれるコマンド列の単位において、指定した仮想バンク番号に対応するメモリバンクの使用権を解放する意義を有するメモリ管理用の命令である。このｒｉｌｅａｓｅ命令により、コマンド列単位でのそのメモリバンクの使用権が解放されると、スレーブプロセッサについてのスレーブハード単位でのメモリバンクの使用権が未解放であってもその使用権は解放される。
【０１８３】
また、ｄｏｎｅ命令は、スレーブプロセッサが、指定した仮想バンク番号に対応するスレーブハード単位でのメモリバンクの使用権を解放する意義を有すとともに、スレーブプロセッサが実行しているコマンドが含まれるコマンド列単位においてはメモリバンクの使用権を確保したままにしておく意義を有するメモリ管理用の命令である。
【０１８４】
スレーブプロセッサ６３０は、仮想バンク番号を指定したａｌｌｏｃ命令又はｗａｉｔ命令を解釈実行して、その仮想バンク番号を付加してメモリバンクの確保又は待機をメモリ通知部６６４に通知した後、メモリ通知部６６４から仮想バンク番号及び物理バンク番号が送られるのを待って命令の解釈実行を停止し、仮想バンク番号及び物理バンク番号が送られ次第、そのａｌｌｏｃ命令又はｗａｉｔ命令の次の命令を解釈実行する。
【０１８５】
なお、スレーブプロセッサ用のプログラムにおいては、ａｌｌｏｃ命令又はｗａｉｔ命令の後に、その確保又は待機したメモリバンクへのアクセスを行う命令が置かれることが想定される。この場合、スレーブプロセッサ６３０は、メモリ通知部６６４から物理バンク番号等を受け取った後に、そのアクセスを行う命令を解釈し、受け取った物理バンク番号で示されるメモリバンクにアクセスすることになる。
【０１８６】
また、スレーブプロセッサ６３０は、仮想バンク番号を指定したｒｅｌｅａｓｅ命令又はｄｏｎｅ命令を解釈実行して、その仮想バンク番号を付加してメモリバンクの確保又は待機をメモリ通知部６６４に通知した後は、特に命令の解釈実行を停止することなく、そのｒｅｌｅａｓｅ命令又はｄｏｎｅ命令の次の命令を解釈実行する。
【０１８７】
＜3-3-4.ＤＭＡコントローラの動作＞
ＤＭＡコントローラ６４０は、チャネル番号の指定及びメモリアドレス等の必要情報の送信を伴ってコマンドの実行開始を実行制御部６６０に指示された場合に、そのコマンドで指定されたデータ転送処理の実行をその指定されたチャネルによって行い、転送終了時にメモリ通知部６６４にそのチャネル番号を付して使用終了を通知する。
【０１８８】
＜3-3-5.具体的動作例＞
図２０は、あるコマンド列の各コマンドの並列実行の様子を示すタイムチャートである。なお、同図中には、スレーブプロセッサ６３０におけるスレーブプロセッサ用のプログラム７７０の構成例をも付記している。
コマンド列「Ａ１」は、通信メモリ１５１の各コマンド用エリアに格納された各コマンド（ｃｍｄ１〜ｃｍｄ４）を構成要素に含むコマンド列である。
【０１８９】
コマンド列「Ａ１」の先頭のコマンド（ｃｍｄ１）は、０という仮想バンク番号を指定したメモリバンクの確保を示す属性を有し、主メモリ６２０から、０という仮想バンク番号で特定されことになるローカルメモリ１３１へのデータ転送を指示するＲｅａｄＤＭＡコマンドである。
コマンド列「Ａ１」の２番目のコマンド（ｃｍｄ２）は、１という仮想バンク番号を指定したメモリバンクの確保を示す属性を有し、主メモリ６２０から、１という仮想バンク番号で特定されることになるローカルメモリ１３１へのデータ転送を指示するＲｅａｄＤＭＡコマンドである。
【０１９０】
コマンド列「Ａ１」の３番目のコマンド（ｃｍｄ３）は、スレーブプロセッサ６３０にデータ演算等を実行させためのＳＰｓｔａｒｔコマンドである。
コマンド列「Ａ１」の４番目のコマンド（ｃｍｄ４）は、２という仮想バンク番号を指定したメモリバンクの確保を示す属性を有し、２という仮想バンク番号で特定されるローカルメモリ１３１から主メモリ６２０へのデータ転送を指示するＷｒｉｔｅＤＭＡコマンドである。
【０１９１】
ＳＰｓｔａｒｔコマンドを実行する際にスレーブプロセッサ６３０によって解釈実行されるスレーブプロセッサ用のプログラム７７０は、図２０に示すように、順に、命令群であるプログラム０、２という仮想バンク番号を指定したａｌｌｏｃ命令、０という仮想バンク番号を指定したｗａｉｔ命令、１という仮想バンク番号を指定したｗａｉｔ命令、命令群であるプログラム１、０という仮想バンク番号を指定したｒｅｌｅａｓｅ命令、１という仮想バンク番号を指定したｒｅｌｅａｓｅ命令、命令群であるプログラム２、２という仮想バンク番号を指定したｄｏｎｅ命令、命令群であるプログラム３を含んで構成される。
【０１９２】
プログラム１は、例えば  スレーブプロセッサ６３０の特定のレジスタに初期値を設定する等の初期処理を内容とし、プログラム２は、例えば、０という仮想バンク番号で特定されるメモリバンクの内容と１という仮想バンク番号で特定されるメモリバンクの内容とを参照した演算を行いその結果を２という仮想バンク番号で特定されるメモリバンクに格納する演算処理を内容とし、プログラム３は、２という仮想バンク番号で特定されるメモリバンクの内容に基づく演算を行いその結果に応じて、その２という仮想バンク番号で特定されるメモリバンクの内容を更新する演算処理を内容とし、プログラム３は、例えば、プログラム２による演算結果の一部を反映して、次回の実行時に参照され得るレジスタに値を設定する等の処理を内容とする。
【０１９３】
以下、コマンドが実行されていない状態を前提として、実行制御部６６０等の動作を説明する。
まず、実行制御部６６０は、実行制御処理（図１６参照）を行い、コマンドキュー１５２中のコマンドＩＤを参照して先頭のコマンドであるＲｅａｄＤＭＡコマンド（ｃｍｄ１）を解読し（ステップＳ７０１：ｎｏ、Ｓ７０２：ｙｅｓ、Ｓ７０３：ｙｅｓ、Ｓ７０５）、ＤＭＡコントローラ６４０の両チャネルが空いており（ステップＳ７０６：ｙｅｓ）、確保必要なメモリバンクは空いているため（ステップＳ７０７：ｙｅｓ）、コマンドキュー１５２からそのコマンドＩＤを消去し（ステップＳ７０８）、次のコマンド（ｃｍｄ２）を示すコマンドＩＤを次コマンド保持部＃１に設定し（ステップＳ７０９）、０という仮想バンク番号と０という物理バンク番号とを対応付けるとともに、対応するＳＰ状態６６８を不定状態とし、ＤＭＡ状態６６９を使用中状態とするように、バンクテーブル６６３を更新し（ステップＳ７１０）、ステップＳ７０５において解読したコマンド（ｃｍｄ１）を指し示すコマンドＩＤと、ＤＭＡコントローラの第１のチャネルを示すハード区分情報とを対応付けて内部の作業用メモリ領域に保持し、ＤＭＡコントローラ６４０の第１のチャネルに、データ転送を指示するＲｅａｄＤＭＡコマンド（ｃｍｄ１）を実行開始させる（ステップＳ７１１）。なお、このステップＳ７１１により、コマンド列＃１中のコマンドは実行中であるという状態になる。
【０１９４】
こうしてＤＭＡコントローラ６４０の第１のチャネルによりＲｅａｄＤＭＡコマンド（ｃｍｄ１）が実行されている間にも、実行制御部６６０は、実行制御処理を進め、コマンド列＃１中のコマンドが実行中であると判定し（ステップＳ７０１：ｙｅｓ）、次コマンド保持部＃１が保持するコマンドＩＤが０でないと判定し（ステップＳ７０４：ｎｏ）、そのコマンドＩＤが指すＲｅａｄＤＭＡコマンド（ｃｍｄ２）を解読し（ステップＳ７０５）、ＤＭＡコントローラ６４０の第２のチャネルが空いており（ステップＳ７０６：ｙｅｓ）、確保必要なメモリバンクは空いているため（ステップＳ７０７：ｙｅｓ）、次のコマンド（ｃｍｄ３）を示すコマンドＩＤを次コマンド保持部＃１に設定し（ステップＳ７０９）、１という仮想バンク番号と１という物理バンク番号とを対応付けるとともに、対応するＳＰ状態６６８を不定状態とし、ＤＭＡ状態６６９を使用中状態とするように、バンクテーブル６６３を更新し（ステップＳ７１０）、直前のステップＳ７０５において解読したコマンド（ｃｍｄ２）を指し示すコマンドＩＤと、ＤＭＡコントローラの第２のチャネルを示すハード区分情報とを対応付けて内部の作業用メモリ領域に保持し、ＤＭＡコントローラ６４０の第２のチャネルに、データ転送を指示するＲｅａｄＤＭＡコマンド（ｃｍｄ２）を実行開始させる（ステップＳ７１１）。
【０１９５】
こうして更にＤＭＡコントローラ６４０の第２のチャネルによりＲｅａｄＤＭＡコマンド（ｃｍｄ２）が実行されている間にも、実行制御部６６０は、実行制御処理を進め、コマンド列＃１中のコマンドが実行中であると判定し（ステップＳ７０１：ｙｅｓ）、次コマンド保持部＃１が保持するコマンドＩＤが０でないと判定し（ステップＳ７０４：ｎｏ）、そのコマンドＩＤが指すＳＰｓｔａｒｔコマンド（ｃｍｄ３）を解読し（ステップＳ７０５）、スレーブプロセッサ６３０が空いており（ステップＳ７０６：ｙｅｓ）、特にメモリバンクの確保が必要ではないので（ステップＳ７０７：ｙｅｓ）、次のコマンド（ｃｍｄ４）を示すコマンドＩＤを次コマンド保持部＃１に設定し（ステップＳ７０９）、メモリバンクの確保指定等がないため特にバンクテーブル６６３を更新することなく、直前のステップＳ７０５において解読したコマンド（ｃｍｄ３）を指し示すコマンドＩＤと、スレーブプロセッサとを示すハード区分情報とを対応付けて内部の作業用メモリ領域に保持し、スレーブプロセッサ６３０に、ＳＰｓｔａｒｔコマンド（ｃｍｄ３）を実行開始させる（ステップＳ７１１）。
【０１９６】
実行制御部６６０によるＳＰｓｔａｒｔコマンド（ｃｍｄ３）の実行開始指示を受けて、スレーブプロセッサ６３０は、ＳＰｓｔａｒｔコマンドに対応するスレーブプロセッサ用のプログラム７７０中の各命令を逐次解釈実行し始め、まず、プログラム０を実行し、続いてａｌｌｏｃ命令を解釈し、２という仮想バンク番号を指定して確保通知をメモリ通知部６６４に対して行う。
【０１９７】
メモリ通知部６６４は、コマンド実行中メモリ管理処理（図１８、図１９参照）を実施しており、スレーブプロセッサ６３０から確保通知を受けると（ステップＳ７４１：ｙｅｓ）、バンクテーブル６６３を参照し、コマンド列＃１について２という仮想バンク番号と対応付けられている物理バンク番号はなく（ステップＳ７４２：ｎｏ）、未だ空いている物理バンク番号が存在するので（ステップＳ７４３：ｙｅｓ）、２という仮想バンク番号と空いている２という物理バンク番号とを対応付けて、対応するＳＰ状態６６８を使用中状態となるようにバンクテーブル６６３を更新し（ステップＳ７４４）、スレーブプロセッサ６３０に２という仮想バンク番号と２という物理バンク番号とを通知する（ステップＳ７４５）。
【０１９８】
この通知を受けるとスレーブプロセッサ６３０は、次にｗａｉｔ命令を解釈し、０という仮想バンク番号を指定して待機通知をメモリ通知部６６４に対して行う。
メモリ通知部６６４は、スレーブプロセッサ６３０からこの０という仮想バンク番号を指定した待機通知を受けると（ステップＳ７５１：ｙｅｓ）、バンクテーブル６６３を参照し、コマンド列＃１について０という仮想バンク番号と対応付けられているＤＭＡ状態６６９が不定状態でないか否か、つまりその０という仮想バンク番号で指定されたメモリバンクは使用可能であるか否かを判定する（ステップＳ７４７）。
【０１９９】
まだ、ＲｅａｄＤＭＡコマンド（ｃｍｄ１）がＤＭＡコントローラ６４０により実行されている間においては、メモリ通知部６６４は、その０という仮想バンク番号で指定されたメモリバンクが使用可能でないと判定し（ステップＳ７４７：ｎｏ）、その０という仮想バンク番号と対応付けられているＳＰ状態６６８を待機状態となるようにバンクテーブル６６３を更新する（ステップＳ７４８）。
【０２００】
なお、ＳＰｓｔａｒｔコマンド（ｃｍｄ３）をスレーブプロセッサ６３０に実行開始させた後に実行制御部６６０は、コマンド列「Ａ１」における次のＷｒｉｔｅＤＭＡコマンド（ｃｍｄ４）を解読するが（ステップＳ７０１：ｙｅｓ、Ｓ７０２：ｎｏ、Ｓ７０５）、ＤＭＡコントローラ６４０によってＲｅａｄＤＭＡコマンドの実行が１つも終了していない間においては、ＤＭＡコントローラ６４０が空いていないので（ステップＳ７０６：ｎｏ）、未だＷｒｉｔｅＤＭＡコマンド（ｃｍｄ４）は実行開始されない。
【０２０１】
以後、ＤＭＡコントローラ６４０の第１チャネルにより、ＲｅａｄＤＭＡコマンド（ｃｍｄ１）の実行が終了した時に、ＤＭＡコントローラ６４０からメモリ通知部６６４に使用終了の通知がなされる。メモリ通知部６６４はその通知を受けて（ステップＳ７５４）、０という仮想バンク番号に対応するＤＭＡ状態６６９が不定状態となるようにバンクテーブル６６３を更新し（ステップＳ７５５）、０という仮想バンク番号に対応するＳＰ状態６６８が待機状態であり（ステップＳ７５６：ｙｅｓ）、ＤＭＡ状態６６９が不定状態であり、そのメモリバンクは使用可能であるため（ステップＳ７５７：ｙｅｓ）、ＳＰ状態６６８を使用中状態となるようにバンクテーブル６６３を更新し（ステップＳ７５８）、スレーブプロセッサ６３０に０という仮想バンク番号と０という物理バンク番号とを通知する（ステップＳ７５９）。
【０２０２】
この通知を受けるとスレーブプロセッサ６３０は、次のｗａｉｔ命令を解釈し、１という仮想バンク番号を指定して待機通知をメモリ通知部６６４に対して行う。
メモリ通知部６６４は、スレーブプロセッサ６３０からこの１という仮想バンク番号を指定した待機通知を受けると（ステップＳ７５１：ｙｅｓ）、バンクテーブル６６３を参照し、コマンド列＃１について１という仮想バンク番号と対応付けられているＤＭＡ状態６６９が不定状態でないか否か、つまりその１という仮想バンク番号で指定されたメモリバンクは使用可能であるか否かを判定する（ステップＳ７４７）。しかし、ＲｅａｄＤＭＡコマンド（ｃｍｄ２）がＤＭＡコントローラ６４０により実行されている間は、そのメモリバンクは使用可能でないため（ステップＳ７４７：ｎｏ）、メモリ通知部６６４は、その１という仮想バンク番号と対応付けられているＳＰ状態６６８を待機状態となるようにバンクテーブル６６３を更新する（ステップＳ７４８）。
【０２０３】
なお、実行制御部６６０は、コマンド列「Ａ１」における次のＷｒｉｔｅＤＭＡコマンド（ｃｍｄ４）を解読し（ステップＳ７０１：ｙｅｓ、Ｓ７０２：ｎｏ、Ｓ７０５）、ＲｅａｄＤＭＡコマンド（ｃｍｄ１）の実行終了したことにより、ＤＭＡコントローラ６４０が空いているが（ステップＳ７０６：ｙｅｓ）、このコマンドは２という仮想バンク番号で特定されるメモリバンクの確保を要するものであり、そのメモリバンクはスレーブプロセッサ６３０のａｌｌｏｃ命令に基づいて確保されており、ＤＭＡコントローラ６４０が使用することはできないので（ステップＳ７０７：ｎｏ）、未だＷｒｉｔｅＤＭＡコマンド（ｃｍｄ４）は実行開始されない。
【０２０４】
以後、ＤＭＡコントローラ６４０の第２チャネルにより、ＲｅａｄＤＭＡコマンド（ｃｍｄ２）の実行が終了した時に、ＤＭＡコントローラ６４０からメモリ通知部６６４に使用終了の通知がなされる。メモリ通知部６６４はその通知を受けて（ステップＳ７５４）、１という仮想バンク番号に対応するＤＭＡ状態６６９が不定状態となるようにバンクテーブル６６３を更新し（ステップＳ７５５）、続いて、１という仮想バンク番号に対応するＳＰ状態６６８が待機状態であり（ステップＳ７５６：ｙｅｓ）、ＤＭＡ状態６６９が不定状態であり、そのメモリバンクは使用可能であるため（ステップＳ７５７：ｙｅｓ）、ＳＰ状態６６８を使用中状態となるようにバンクテーブル６６３を更新し（ステップＳ７５８）、スレーブプロセッサ６３０に１という仮想バンク番号と１という物理バンク番号とを通知する（ステップＳ７５９）。
【０２０５】
この通知を受けるとスレーブプロセッサ６３０は、プログラム１の各命令を解釈実行することにより、０〜２という各仮想バンク番号で特定される各メモリバンクにアクセスする。続いて、スレーブプロセッサ６３０は、ｒｅｌｅａｓｅ命令を解釈し、０という仮想バンク番号を指定して解放通知をメモリ通知部６６４に対して行う。
【０２０６】
メモリ通知部６６４は、スレーブプロセッサ６３０からこの０という仮想バンク番号を指定した解放通知を受けると（ステップＳ７５２：ｙｅｓ）、バンクテーブル６６３を参照し、コマンド列＃１について０という仮想バンク番号と対応付けられている物理バンク番号を特定し、その物理バンク番号についての実行コマンド列識別番号６６５を３にし、仮想バンク番号６６７を４にし、ＳＰ状態６６８を不定状態にし、ＤＭＡ状態６６９を不定状態にするように、即ちその物理バンク番号が空き状態となるようにバンクテーブル６６３を更新する（ステップＳ７５３）。
【０２０７】
スレーブプロセッサ６３０は、０という仮想バンク番号を指定した解放通知の後に、次のｒｅｌｅａｓｅ命令を解釈し、１という仮想バンク番号を指定して解放通知をメモリ通知部６６４に対して行う。
メモリ通知部６６４は、スレーブプロセッサ６３０からこの１という仮想バンク番号を指定した解放通知を受けると（ステップＳ７５２：ｙｅｓ）、バンクテーブル６６３を参照し、コマンド列＃１について１という仮想バンク番号と対応付けられている物理バンク番号を特定し、その物理バンク番号が空き状態となるようにバンクテーブル６６３を更新する（ステップＳ７５３）。
【０２０８】
スレーブプロセッサ６３０は、１という仮想バンク番号を指定した解放通知の後に、次のプログラム２の各命令を解釈実行し、２という仮想バンク番号で特定されるメモリバンクにアクセスする。続いて、スレーブプロセッサ６３０は、ｄｏｎｅ命令を解釈し、２という仮想バンク番号を指定して使用終了通知をメモリ通知部６６４に対して行い、続いてプログラム３の解釈実行を開始する。
【０２０９】
メモリ通知部６６４は、スレーブプロセッサ６３０からこの２という仮想バンク番号を指定した使用終了通知を受けると（ステップＳ７５４：ｙｅｓ）、２という仮想バンク番号に対応するＳＰ状態６６８が不定状態となるようにバンクテーブル６６３を更新する（ステップＳ７５５）。
この後、実行制御部６６０は、コマンド列「Ａ１」における次のＷｒｉｔｅＤＭＡコマンド（ｃｍｄ４）を解読し（ステップＳ７０１：ｙｅｓ、Ｓ７０２：ｎｏ、Ｓ７０５）、ＤＭＡコントローラ６４０が空いており（ステップＳ７０６：ｙｅｓ）、コマンドの属性で２という仮想バンク番号で特定されるメモリバンクの確保を要するところ、バンクテーブル６６３においてその仮想バンク番号に対応するＳＰ状態６６８が不定状態になっており、そのメモリバンクは使用可能であるため（ステップＳ７０７：ｙｅｓ）、そのコマンド内の次コマンドＩＤを次コマンド保持部＃１に設定し（ステップＳ７０９）、２という仮想バンク番号に対応するＤＭＡ状態６６９を使用中状態となるようにバンクテーブル６６３を更新し（ステップＳ７１０）、コマンドＩＤ等を作業用メモリ領域に保持してＤＭＡコントローラ６４０にＷｒｉｔｅＤＭＡコマンド（ｃｍｄ４）を実行開始させる（ステップＳ７１１）。
【０２１０】
このように、処理システム６００におけるコマンド実行制御装置６５０は、同じコマンド列に属する各コマンドをその列に従った順序で各スレーブハードに実行開始させた上で、可能な限り各コマンドを並列的に各スレーブハードに実行させる。なお、各コマンドの並列的な実行に関し、上述したように、スレーブハードからのメモリバンクの使用権の確保、解放等の通知や、実行制御部６６０等によるバンクテーブル６６３に基づく管理により、各コマンド間で処理の同期を図ることが可能になっている。
＜実施の形態４＞
実施の形態３に係る処理システムは、実施の形態１に係る処理システム１００を変形した処理システムであり、実施の形態１で示したスレーブハード用のコマンドと同様に、通信メモリ１５１に格納され、コマンド列を構成し、実行制御部により参照されるものとしての新種のコマンドである停止コマンドをサポートすることとした点に特徴がある。
【０２１１】
停止コマンドは、実施の形態１で示したコマンドと形式的には類似しているが、実施の形態１で示したコマンドがスレーブハードの動作内容を特定するために利用される意義を有するのに対し、この停止コマンドは、実行制御部にスレーブハードの動作を停止させる動作を行わせるための指示データである点で異なる。
＜4-1.構成＞
図２１は、実施の形態４に係る処理システム９００の構成図である。
【０２１２】
処理システム９００は、同図に示すようにマスタプロセッサ１１０、主メモリ１２０、スレーブプロセッサ１３０、ローカルメモリ１３１、ＤＭＡコントローラ１４０及びコマンド実行制御装置９５０を備え、半導体の１チップ内に形成されている。なお、処理システム９００の構成要素のうち、処理システム１００（図１参照）の構成要素と同じものについては図２１において図１と同じ符号を付している。ここでは処理システム９００のうち、処理システム１００と同じ部分についての説明は省略する。
【０２１３】
スレーブプロセッサ１３０は、実施の形態１では特に示さなかったが、クロック信号を入力されて、そのクロック信号に同期して動作する。ＤＭＡコントローラ１４０も同様に、クロック信号を入力されて、そのクロック信号に同期してデータ転送を制御する。
コマンド実行制御装置９５０は、半導体の１チップ内部又は外部から供給されるクロック信号の入力を受け付け、停止コマンドの解釈実行を行う停止制御部９６１を有する実行制御部９６０を備えている点以外は、実施の形態１で示したコマンド実行制御部１５０と同様である。なお、コマンド実行制御装置９５０は、ＣＰＵ及びメモリで構成してもよい。
【０２１４】
実行制御部９６０の行う実行制御処理は、実施の形態１に示した実行制御処理と基本的には同様であるが（図１０、図１１参照）、実行制御部９６０は、ステップＳ２４において解読したコマンドが停止コマンドであった場合には、ステップＳ２５、Ｓ２６、Ｓ２９、Ｓ３０を省略し、ステップＳ２８に続いて、停止制御部９６１にその停止コマンドで示されたスレーブハードへのクロック信号の供給を抑止させる処理を行い、同様にステップＳ３４において解読したコマンドが停止コマンドであった場合には、ステップＳ３５、Ｓ３６、Ｓ３９、Ｓ４０を省略し、ステップＳ３８に続いて、停止制御部９６１にその停止コマンドで示されたスレーブハードへのクロック信号の供給を抑止させる処理を行う。
【０２１５】
停止制御部９６１は、入力されるクロック信号をカウントすることにより、停止コマンドで指定された期間だけ、指定されたスレーブハードに対してのクロック信号の供給を抑止するよう制御する機能を有する。
＜4-2.コマンドフォーマット＞
図２２は、コマンド列の一構成要素であり、通信メモリ１５１に格納されるスレーブハード用のコマンド及び停止コマンドのフォーマットを示す図である。
【０２１６】
なお、同図では、コマンド８００を２バイト毎に区分して、１６進数で表した０バイト目からＥバイト目という位置８０１とその意味内容を示す項目８０２とを対応付けて表現している。また、スレーブハード用のコマンドについては基本的に図３に示したものと同じである。
いずれのコマンドもサイズは１６バイトであり、同図に示すように、０バイト目からの２バイトはコマンド種別及び属性を表し、２バイト目からの２バイトは次コマンドＩＤを含むデータを表し、４バイト目以後からはコマンド種別毎に独自のパラメータ類を表す。
【０２１７】
０バイト目からの２バイトであるコマンド種別及び属性においては、先頭の２ビットが、スレーブプロセッサ用コマンドであるか、ＤＭＡコントローラ用コマンドであるか、停止コマンドであるかの区別であるコマンド種別を示す。停止コマンドにおいて、コマンドの属性には、停止対象のスレーブハードの種別を示す情報が含まれる。
【０２１８】
コマンドの２バイト目からの２バイトのデータに含まれる次コマンドＩＤは、そのコマンドが属するコマンド列における次のコマンドの、通信メモリ１５１内での所在を示すコマンドＩＤである。
停止コマンドにおいてのパラメータ類は、停止サイクル数を含む。
＜4-3.停止動作＞
実行制御部９６０が停止コマンドを解読し、停止制御部９６１にスレーブハードへのクロック信号の供給を抑止させるよう指示した場合に、停止制御部９６１は、停止コマンドで指定されたスレーブハードに対するクロック信号の供給を遮断し、入力されるクロック信号をカウントし、停止コマンドのパラメータで指定されている停止サイクル数分だけのクロック信号のカウントが終了するまで、スレーブハードに対するクロック信号の供給の遮断を継続し、そのカウントが終了した時点で遮断を解除する。この遮断は例えば、クロック信号線の電位を一定値に固定すること等によって実現される。
【０２１９】
従って、マスタプロセッサ１１０は、任意の内容の停止コマンドを通信メモリ１５１に格納しコマンド列の構成要素としてコマンド実行制御装置９５０にコマンド列に従った動作を行わせることで、任意のスレーブハードを任意の期間だけ停止させることが可能となり、非稼働となることが予測されている期間だけスレーブハードを停止させて消費電力の低減制御等を実現することができるようになる。
【０２２０】
＜補足＞
以上、本発明に係る回路群制御について、実施の形態１〜４に基づいて説明したが、本発明はこれらの実施の形態に限られないことは勿論である。即ち、
（１）実施の形態１で示した完了通知部１７０と完了受付部１５３と実行制御部１６０との機能分割については一例にすぎず、機能分割を変更するとともに機能構成要素間のインタフェースを変更してもよい。
（２）実施の形態１〜４では、スレーブプロセッサとＤＭＡコントローラという異なる機能を有する２つのスレーブハードを示したが、コマンド実行制御装置がコマンドを実行させるスレーブハードは、少なくとも１組の相異なる機能を有するスレーブハードを含めば３つ以上であってもよく、コマンドを実行を担い得る回路であればプロセッサやＤＭＡコントローラ以外の回路であってもよい。なお、スレーブハード間でメモリを共用する場合には、別個のメモリバンクに同時アクセス可能なメモリを用いるか、またはスレーブハード間でメモリへのアクセスタイミングをずらすような制御を行うこととすればよい。
【０２２１】
また、実施の形態１ではコマンド実行制御装置が２つのコマンド列を２つのスレーブハードに並行的に実行させるよう制御する例を示したが、次コマンドＩＤ保持部を３つ以上設け、図１０全体で示した処理単位を３単位以上実行できるようにして、３つ以上のコマンド列を３つ以上のスレーブハードに並行的に実行させるよう制御することとしてもよい。
【０２２２】
また、実施の形態１〜４では、処理システムが１チップ内に構成されていることとしたが、必ずしも１チップ内に構成される必要はない。例えばマスタプロセッサ１１０、コマンド実行制御装置１５０、スレーブプロセッサ１３０、ＤＭＡコントローラ１４０等は独立した部品であってもよい。
（３）実施の形態１では、マスタプロセッサ１１０が、図５に示すような２種類の異なるコマンド列を指定する例を示したが、マスタプロセッサ１１０が同一内容のコマンド列を複数指定した場合にも、スレーブハードの有効活用という効果は発揮される。
【０２２３】
また、実施の形態１で示したコマンド列指定インタフェースについては、他の方式を用いても差し支えない。例えば、コマンド間をコマンドＩＤによるポインタチェーンで結ぶのではなく、マスタプロセッサ１１０がコマンド列を構成する全てのコマンドを通信メモリ１５１中のアドレスが連続する領域に、連続的に格納することとしてもよい。この場合には、実行制御部１６０は、アドレス順にコマンドを逐次スレーブハードに実行させることとすればよい。但し、ポインタチェーンの構造を採用すると、既に格納したコマンド列を構成する各コマンドの一部を入れ替えて新たなコマンド列を作成する場合等が容易となり、また、通信メモリの有効活用が図れる。
【０２２４】
また、実施の形態１〜４ではコマンド列の指定がコマンド列を構成する先頭のコマンドについてのコマンドＩＤをコマンドキューに格納することによって行われることとしたが、コマンド列の指定方式はこれに限定されることはなく、例えば、マスタプロセッサ１１０がコマンド列を構成する全コマンドをコマンド実行制御装置１５０に渡すと、それに対してコマンド実行制御装置１５０がコマンド列用の番号を対応付けて管理してその番号を返却し、その後にマスタプロセッサ１１０がその番号をコマンドキューに挿入することとしてもよい。
【０２２５】
但し、実施の形態１で示したコマンド列指定インタフェースは、マスタプロセッサからのコマンドの転送量の削減、転送済みのコマンドの再利用性の向上、コマンド列指定をコマンド実行制御装置が受けてからの処理の迅速化等の見地から好適と思われる。
また更に、コマンド実行制御装置１５０にコマンドキュー１５２とは別に、コマンド列の先頭のコマンドについてのコマンドＩＤを格納するための優先実行用コマンドキューを設けることとし、実行制御部１６０は、優先実行用コマンドキューに格納されたコマンドＩＤにより特定されるコマンド列の各コマンドを、コマンドキュー１５２に係るコマンドより優先してスレーブハードに実行させることとしてもよい。この優先実行用コマンドキューは例えばデバッグ用に利用されることが想定される。
（４）実施の形態１等では、実行制御部１６０は、スレーブハードにコマンド内の必要なデータを送信することによりコマンドの実行を指示することとしたが、コマンドの実行を指示する方式はこれに限定されることはない。例えば、スレーブプロセッサは通信メモリにアクセス可能なように接続しておき、実行制御部１６０がスレーブプロセッサにコマンドの実行を指示する場合においては、必要であれば物理バンク番号とともに、コマンドＩＤを伝えることとし、スレーブプロセッサ側から通信メモリにアクセスしてコマンドを読み出すように構成してもよい。また、スレーブハード側からバンクテーブル１６３を参照できるようにしておき、実行制御部１６０は物理バンク番号をスレーブハードに通知しないこととしてもよい。
（５）実施の形態１で示した通信メモリ１５１中のコマンド用エリアに格納されたコマンドを、実行制御部１６０或いはスレーブプロセッサ１３０が更新できるような構成とし、コマンド内のパラメータ類等を随時更新することとしてもよい。例えば、スレーブプロセッサ１３０と通信メモリ１５１とを接続しておき、スレーブプロセッサ１３０は、コマンドを初回に実行したときにパラメータ類を一部変更することとしてもよく、これによれば同一コマンド列がマスタプロセッサ１１０に複数回指定された場合において、コマンドを初回に実行する際と２回目以後に実行する際とで実際に行う処理内容を異ならせることが可能になる。
（６）実施の形態１〜４では、仮想バンク番号と物理バンク番号との対応付けについてバンクテーブルで制御することとしたが、これを含めて、仮想的にアクセスすべき所在位置を特定するものという意味での論理アドレスと現実にアクセスすべき所在位置を指し示す意味での物理アドレスの対応付けにバンクテーブルを用いることとし、コマンド内に論理アドレスの指定が含まれている場合に物理アドレスに変換することとしてもよい。
（７）実施の形態１等で示した実行制御部１６０内部の作業用メモリ領域、次コマンドＩＤ保持部１６１、１６２、バンクテーブル１６３、完了テーブル１７１等のデータを保持するメモリ領域は、一般的なメモリの一領域であっても記憶素子であっても、データを保持し得る記憶手段であれば差し支えない。
（８）実施の形態１〜４で示した実行制御部による実行制御処理は、プログラムにより特定されるものであっても、論理回路その他のハードウェアにより実現されるものであってもよい。
【０２２６】
また、２つのコマンド列中のコマンドが同時に実行可能となる場合に、実施の形態１〜４で示した実行制御処理を変形して、コマンド列間でのコマンドの実行に係る優先度決定のために予め定めたルールに従って、一方のコマンド列中のコマンドを優先的に実行するようにしてもよい。例えば、既に次コマンドＩＤ保持部に０以外のコマンドＩＤが保持されている場合におけるそのコマンドＩＤに対応するコマンドを、コマンドキュー中のコマンドＩＤに対応するコマンドよりも優先する等としてもよい。
【０２２７】
また、実行制御処理中のステップＳ２５においてローカルメモリ１３１のバンクが不足していると判定した場合又はステップＳ２６においてコマンドを実行するスレーブハードが空いていないと判定した場合には、物理バンク番号が空き状態になりかつスレーブハードが空き状態になるまで、ステップＳ２２〜Ｓ３０の処理をスキップすることとしてもよい。また同様に、ステップＳ３５においてローカルメモリ１３１のバンクが不足していると判定した場合又はステップＳ３６においてコマンドを実行するスレーブハードが空いていないと判定した場合には、物理バンク番号が空き状態になりかつスレーブハードが空き状態になるまで、ステップＳ３２〜Ｓ４０の処理をスキップすることとしてもよい。
（９）実施の形態３で示した実行制御部６６０は、２つのコマンド列を並行的に実行することも可能であることとしたが、１つのコマンド列のコマンドのみを実行できることとしてもよい。但し、実行制御部６６０は、１つのコマンド列の各コマンドを並列的にスレーブハードに実行させる機能を有するものとする。
（１０）実施の形態３では、ＤＭＡコントローラがチャネル番号を指定してメモリバンクの使用終了を実行制御部６６０に通知することとしたが、データ転送を指定するコマンドの実行終了タイミングで実行制御部６６０が自ら、その実施の形態３で示したメモリバンクの使用終了の通知に対する処理と同じ処理を行うことにより、バンクテーブル６６３を更新することとしてもよい。
【０２２８】
また、バンクテーブル６６３を用いたメモリバンクの使用権の管理についての実行制御部６６０と各スレーブハードとのインタフェースに係る方式は、実施の形態３で示した方式に限定されることはなく、スレーブプロセッサがコマンド実行中においてメモリバンクの使用権の確保要求、解放通知等を実行制御部６６０に行うことができ、スレーブハード間でメモリバンクの同時使用がなされないように排他制御がなされる方式であればよい。
（１１）実施の形態１〜４に示した実行制御部による実行制御処理やコマンド実行中メモリ管理処理（図１０、図１１、図１６〜図１９に示した手順等）を、ＣＰＵ即ちコンピュータに実行させるためのプログラムを、記録媒体に記録し又は各種通信路等を介して、流通させ頒布することもできる。このような記録媒体には、ＩＣカード、光ディスク、フレキシブルディスク、ＲＯＭ等がある。流通、頒布されたプログラムはコンピュータに読み出され得るメモリ等に格納されることにより利用に供され、コンピュータはそのプログラムを実行して本実施の形態で示した実行制御処理やコマンド実行中メモリ管理処理を実現する。
【０２２９】
【発明の効果】
以上説明したように本発明に係る回路群制御システムは、マスタプロセッサからの指定を受けて、複数の回路を制御する回路群制御システムであって、前記複数の回路のいずれかに実行させるべきコマンドを複数ならべて構成されるコマンド列の指定をマスタプロセッサから受け付けるコマンド列指定受付手段と、コマンド列指定受付手段により受け付けられた指定に係るコマンド列に従った順序でコマンド列内のコマンドを逐次、当該コマンドを実行し得る回路に実行開始させる実行制御手段とを備え、前記実行制御手段は、一の回路に一のコマンドを実行させている間において、他の回路により実行され得る状態にあるコマンドを検出して当該コマンドを選択して当該他の回路に実行させる並列実行制御部を含むことを特徴とする。
【０２３０】
これにより、各コマンド列を構成する各コマンドの実行開始順序を保つというコマンド列の意義は確保され、また、異なるスレーブハードにより複数のコマンドが並列的に実行されることとなるため、各スレーブハードの稼働率を上げることが可能になる。
また、前記複数の回路には少なくとも相互に異なる機能を有する２種の回路が含まれ、前記コマンド列指定受付手段は、複数個のコマンド列の指定をマスタプロセッサから受け付け、前記実行制御手段は、コマンド列指定受付手段により受け付けられた指定に係る各コマンド列に従った順序で各コマンド列内のコマンドを逐次、当該コマンドを実行し得る回路に実行させるものであり、前記並列実行制御部は、一の回路に一のコマンド列中のコマンドを実行させている間において、他のコマンド列中の、他の回路により実行され得る状態にあるコマンドを、検出して当該コマンドを選択して当該他の回路に実行させることとしてもよい。
【０２３１】
これにより、複数のコマンド列のコマンドを各回路、つまり各スレーブハードに行わせる際に、別個のコマンド列を構成するコマンドを異なるスレーブハードにより並列的に実行させるため、各スレーブハードの稼働率を上げることが可能になる。
また、前記回路群制御システムは前記複数の回路を備え、前記複数の回路には、スレーブプロセッサ及びＤＭＡコントローラが含まれ、前記実行制御手段は、スレーブプロセッサに一のコマンド列中のコマンドを実行させ、当該実行と並行してＤＭＡコントローラに他のコマンド列中のコマンドを実行させ得ることとしてもよい。
【０２３２】
これにより、同一機能の回路を複数設けなくても、多量のデータに対して所定の演算或いは加工を施すような情報処理を内容とする複数のプログラムを、高速に実行することが可能になる。即ち、その情報処理を、ＤＭＡ転送により多量のデータをスレーブプロセッサがアクセス可能なローカルメモリに設定するためのＤＭＡコントローラ用のコマンドと、設定されたデータにスレーブプロセッサにより演算或いは加工を施させるスレーブプロセッサ用のコマンドとを含むコマンド列により定めることとした場合に、１つのコマンド列中のコマンドをスレーブプロセッサ及びＤＭＡコントローラのうち一方のスレーブハードによって実行中において、その他方のスレーブハードによって他のコマンド列中のコマンドを並行的に実行させることができ、全体としては複数の情報処理を高速に実行できるようになる。
【０２３３】
また、前記複数の回路は同一のメモリにアクセスし得るものであり、前記各コマンド列中に含まれるコマンドには、当該コマンドを実行する回路が前記メモリへアクセスすることを指定するメモリアクセスコマンドがあり、前記実行制御手段は、別個のコマンド列中の各メモリアクセスコマンドを並行して各回路に実行させる際に、当該各メモリアクセスコマンドを実行する各回路がメモリ内の相互に独立した領域にアクセスするように制御するメモリアクセス制御部を有することとしてもよい。
【０２３４】
これにより、コマンド列間でのデータの読み書きの干渉がなくなり、データが保証されるようになる。
また、前記メモリアクセスコマンドはアクセス対象部分を指定する論理アドレスを含み、前記メモリアクセス制御部は、別個のコマンド列中の各メモリアクセスコマンドを並行して各回路に実行させる際に、各メモリアクセスコマンド中の論理アドレスを当該メモリアクセスコマンドが属するコマンド列毎に異なるメモリ領域を示す物理アドレスに変換し、変換後の物理アドレスをアクセス対象部分の特定に用いて各回路がメモリアクセスを行うように制御することとしてもよい。
【０２３５】
これにより、コマンド列毎に独立したメモリ空間が割り当てられているという前提のもとで、マスタプロセッサは各コマンド列のコマンドを定めることができるようになる。即ち、一のコマンド列において他のコマンド列を考慮せずにメモリアクセスを要するコマンドにおけるアクセス対象アドレスを指定することができるようになる。
【０２３６】
また、前記メモリアクセス制御部は、論理アドレスの物理アドレスへの前記変換した際に、変換した物理アドレスが示すメモリ領域を特定するための領域特定情報を変換元の論理アドレスと対応付けて保持しておき、後に論理アドレスを物理アドレスへ変換する際には、当該論理アドレスを、既に保持されている領域特定情報により特定されるメモリ領域以外のメモリ領域を示す物理アドレスに変換し、前記各コマンド列中に含まれるコマンドには、先に実行されるコマンドによって指定されたメモリのアクセス対象部分の解放を、論理アドレスを指定して指示する解放指示を含むコマンドがあり、前記メモリアクセス制御部は、前記解放指定を含むコマンドを回路に実行させる前に、当該解放指示において示された論理アドレスと対応付けられた領域特定情報を破棄することとしてもよい。
【０２３７】
これにより、解放指定された物理アドレスを再度他の論理アドレスへ対応付けることができるようになるため、メモリ領域の有効活用を図ることができる。
また、前記複数の回路は同一のメモリにアクセスし得るものであり、前記各コマンド列中に含まれるコマンドには、当該コマンドを実行する回路が前記メモリへアクセスすることを指定するメモリアクセスコマンドがあり、前記メモリアクセスコマンドは、コマンド列相互間で共通のメモリ領域にアクセスする旨の共用属性及びコマンド列相互間で互いに独立したメモリ領域にアクセスする旨の独立属性のうちいずれかの属性を含み、前記実行制御手段は、別個のコマンド列中の各メモリアクセスコマンドを各回路に実行させる際に、独立属性を含む一のコマンド列中のメモリアクセスコマンドを実行する回路と、独立属性を含む他のコマンド列中のメモリアクセスコマンドを実行する回路とが、メモリ内の相互に独立した領域にアクセスするように制御し、共用属性を含む一のコマンド列中のメモリアクセスコマンドを実行する回路と、共用属性を含む他のコマンド列中のメモリアクセスコマンドを実行する回路とが、メモリ内の同一の領域にアクセスするように制御するメモリアクセス制御部を有することとしてもよい。
【０２３８】
これにより、コマンド列間で、独立的にデータを扱うこと、或いは共通のデータを参照等することが可能になる。
また、前記コマンド列指定受付手段は、コマンド格納用メモリを有し、前記マスタプロセッサによりコマンド格納用メモリに複数のコマンドが書き込まれることを通じて前記コマンド列の指定を受け付け、前記実行制御手段は、コマンド格納用メモリに書き込まれたコマンドを、コマンド列に従った順序で逐次参照して、参照した当該コマンドを実行し得る回路に実行させることとしてもよい。
【０２３９】
これにより、マスタプロセッサは、コマンド格納用メモリつまり通信メモリに複数のコマンドをまとめて書き込むことができるので基本的には同期制御が不要となり、逐次コマンドを伝える場合よりも、コマンドを伝えるための制御が容易となる。
また、前記コマンド格納用メモリに書き込まれた各コマンドは、当該コマンドが属するコマンド列における次順位のコマンドがある場合に当該次順位のコマンドのコマンド格納用メモリ内での所在を示すポインタ情報を含むように構成されており、前記実行制御手段は、コマンド内に含まれるポインタ情報を参照して当該コマンドの次に実行すべきコマンドの所在を得ることにより、コマンド列に従った順序でコマンドを逐次、当該コマンドを実行し得る回路に実行させることとしてもよい。
【０２４０】
これにより、例えば、ある実行済みのコマンド列がコマンドＡとコマンドＢとコマンドＣとからなる場合に、次にコマンドＡとコマンドＢとコマンドＤとからなる新たなコマンド列を実行させたい場合に、マスタプロセッサは、コマンドＤを設定して、コマンドＢからコマンドＣへのポインタによるチェーンをコマンドＢからコマンドＤへのチェーンに張り替えるのみで足りるので、マスタプロセッサにとってコマンド列を構成するコマンド単位で再利用を行うことが容易となる。また、コマンド格納用メモリに、コマンド列の全てのコマンド分の連続した空き領域がない場合にも、コマンド毎に別個の位置に配置することができるのでコマンド格納用メモリのメモリ領域を有効に活用することができる。
【０２４１】
また、前記コマンド格納用メモリに書き込まれた各コマンドは、当該コマンドが属するコマンド列における順に、コマンド格納用メモリのアドレスが連続する領域に並べられており、前記実行制御手段は、各コマンド列について、コマンド格納用メモリのアドレス順に各コマンドを逐次参照して、参照した当該コマンドを実行し得る回路に実行させることとしてもよい。
【０２４２】
これにより、コマンド列を構成するコマンドそれぞれをポインタ情報等を参照することなく特定して参照することができるようになるため、コマンドの参照のための処理構造が単純化できる。
また、前記コマンドはパラメータを含むものであり、前記回路群制御システムは前記複数の回路を備え、前記コマンド格納用メモリは、前記複数の回路のうち少なくとも１の回路と接続されており、前記コマンド格納用メモリと接続されている回路は、前記実行制御手段によりコマンドが実行させられた際に、前記コマンド格納用メモリ中の当該コマンド内のパラメータにアクセスすることとしてもよい。
【０２４３】
これにより、スレーブプロセッサが、コマンド格納用メモリにアクセスしてコマンド内のパラメータ類等を随時更新することができるため、例えばコマンド内容を一部変化させておき、次に同一のコマンドの実行がマスタプロセッサにより指示されたときに、その変化させた内容に即した処理を行うこと等が可能になる。
【０２４４】
また、前記コマンド列の指定は、前記コマンド格納用メモリに書き込まれた複数のコマンドから構成されるコマンド列を識別するコマンド列識別子によりなされるものであり、前記実行制御手段は、前記コマンド列識別子で識別される各コマンド列内のコマンドを逐次、当該コマンドを実行し得る回路に実行させることとしてもよい。
【０２４５】
これにより、コマンド列を構成するコマンドのコマンド格納用メモリへの格納と、コマンド列の指定とが分離されるので、格納済みのコマンドで構成されるコマンド列を、複数回指定することが可能になり、コマンドの転送量の削減が図れる。
また、前記回路群制御システムは前記マスタプロセッサを備え、前記マスタプロセッサは同一のコマンド列識別子を複数指定することとしてもよい。
【０２４６】
これにより、マスタプロセッサがコマンド列を構成する各コマンドをコマンド格納用メモリに格納した後に、コマンド列識別子の指定のみで何度もそのコマンド列を再利用できるため、マスタプロセッサにおけるコマンド列の実体を転送する処理についての負荷が軽減される。
また、前記コマンド列識別子は、前記コマンド列格納用メモリ内におけるコマンドの所在を示すポインタ情報であり、前記実行制御手段は、前記ポインタ情報で示されるコマンドを先頭要素であるものとして当該コマンドが属するコマンド列内のコマンドを逐次、回路に実行させることとしてもよい。
【０２４７】
これにより、回路群制御システムは、コマンド列の指定を受けるとその指定に用いられるコマンド列識別子がコマンドのポインタ情報であるため、特にコマンド列識別子からコマンドにアクセスするための情報を算出するための演算等を行う機構を設けていなくても、実行させるべきコマンドに容易にアクセスすることができるようになる。
【０２４８】
また、前記コマンド列指定受付手段は、コマンド列識別子格納用の第１ＦＩＦＯバッファを有し、前記マスタプロセッサによりコマンド格納用メモリに複数のコマンドが書き込まれた後に、当該複数のコマンドのうちのいずれかのコマンドの組を、それぞれ列の要素とする複数のコマンド列それぞれについてのコマンド列識別子が第１ＦＩＦＯバッファに書き込まれることを通じて、前記コマンド列の指定を受け付け、前記実行制御手段は、第１ＦＩＦＯバッファ中の各コマンド列識別子で指定されるコマンド列内のコマンドを回路に実行させることとしてもよい。
【０２４９】
これにより、マスタプロセッサは、複数のコマンド列識別子をＦＩＦＯバッファに挿入しておくことが可能となり、一括してコマンド列の実行を依頼できるため、例えば同期制御等のための待ち時間が削減できるようになる。
また、前記コマンド列指定受付手段はさらに、コマンド列識別子格納用の第２ＦＩＦＯバッファを有し、前記マスタプロセッサによりコマンド格納用メモリに複数のコマンドが書き込まれた後に、当該複数のコマンドのうちのいずれかのコマンドの組を、それぞれ列の要素とする複数のコマンド列それぞれについてのコマンド列識別子が第２ＦＩＦＯバッファに書き込まれることを通じても、前記コマンド列の指定を受け付け、前記実行制御手段は、第１ＦＩＦＯバッファ中の各コマンド列識別子で指定されるコマンド列内のコマンドよりも第２ＦＩＦＯバッファ中の各コマンド列識別子で指定されるコマンド列内のコマンドの方を優先して回路に実行させることとしてもよい。
【０２５０】
これにより、回路群制御システムのデバッグ等のために、優先して特定のコマンド列を実行させる必要がある場合に対応することができるようになる。
また、前記回路群制御システムはさらに、前記コマンド格納用メモリに書き込まれたコマンドを更新するコマンド更新手段を備えることとしてもよい。
これにより、コマンドを随時更新することができるため、例えばコマンド内容を一部変化させておき、次に同一のコマンドの実行がマスタプロセッサにより指示されたときに、その変化させた内容に即した処理を行うこと等が可能になる。
【０２５１】
また、前記回路群制御システムはさらに、前記マスタプロセッサからコマンドの実行完了の通知要求を受け付ける実行完了通知受付手段と、前記実行制御手段によりコマンドを実行させた回路から当該コマンドを実行完了した旨の通知を受け付けて、当該コマンドが前記実行完了通知受付手段により受け付けられた通知要求に係るコマンドである場合には、当該コマンドの実行完了を前記マスタプロセッサに通知する実行完了通知手段とを備えることとしてもよい。
【０２５２】
これにより、マスタプロセッサは特定のコマンドの実行完了を検出することができるようになるため、例えば同期をとる必要がある複数のコマンド列により成立するような情報処理を、回路群制御システムを用いて実行することができるようになる。
また、前記並列実行制御部は、一の回路に一のコマンド列中の一のコマンドを実行させている間において、当該コマンド列中の、他の回路により実行され得る状態にある他のコマンドを検出して当該コマンドを選択して当該他の回路に実行させることとしてもよい。
【０２５３】
これにより、同一コマンド列を構成する各コマンドの実行開始順序を保つというコマンド列の意義を確保した上で、同一コマンド列中の各コマンドを、異なるスレーブハードにより並列的に実行させることによって各スレーブハードの稼働率を向上させることができ、更にはコマンド列の実行時間が短縮され得るという効果が得られる。
【０２５４】
また、前記回路群制御システムは前記複数の回路を備え、前記複数の回路は同一のメモリにアクセスし得るものであり、前記コマンド列を構成するコマンドのうちには、当該メモリ内の一領域の確保又は解放を指定する属性を含み、かつ、当該領域を識別するためのバンク番号を含むメモリ指定付属コマンドがあり、前記実行制御手段は、メモリ内領域毎に使用中か否かを管理するメモリ管理情報を保持し、コマンド列中において次に実行開始されるべきコマンドが、バンク番号で示された領域の確保を指定するメモリ指定付属コマンドであった場合には、当該領域が使用中であることを前記メモリ管理情報が示している限り当該メモリ指定付属コマンドを前記検出の対象から除外し、バンク番号で示された領域の確保を指定するメモリ指定付属コマンドを回路に実行開始させる時には、当該領域が使用中である旨を示すように前記メモリ管理情報を更新し、バンク番号で示された領域の確保を指定するメモリ指定付属コマンドを回路に実行開始させる時には、当該領域が使用中でない旨を示すように前記メモリ管理情報を更新することとしてもよい。
【０２５５】
これにより、メモリ資源の管理がなされ、コマンドのうち実行に要するメモリ資源の確保が可能なもののみ、実行が開始されることになるため、コマンド列の構築者等は、メモリ資源の確保又は解放をコマンドの属性で指定することにより、同一コマンド列を構成する各コマンドの実行タイミングを調整することが可能になる。
【０２５６】
また、前記複数の回路には、特定のコマンドの実行中において、メモリ内の一領域についての解放通知を、当該領域を識別するためのバンク番号を伴って前記実行制御手段に伝える機能を有する回路が含まれ、前記実行制御手段は、いずれかの回路からバンク番号で示された領域の解放通知を受けた時には、当該領域が使用中でない旨を示すように前記メモリ管理情報を更新することとしてもよい。
【０２５７】
これにより、スレーブプロセッサ等からコマンドの実行中にメモリ資源の解放を指定することが可能になるため、あるコマンドの実行中の各段階に応じて、他のコマンドとの実行タイミングの細かな調整が可能になる。
また、前記回路群制御システムは前記複数の回路を備え、前記複数の回路は同一のメモリにアクセスし得るものであり、前記複数の回路には、特定のコマンドの実行中において、メモリ内の一領域についての解放通知を、当該領域を識別するためのバンク番号を伴って前記実行制御手段に伝える機能を有する回路が含まれ、前記複数の回路には、特定のコマンドの実行中において、メモリ内の一領域についての確保要求を、当該領域を識別するためのバンク番号を伴って前記実行制御手段に伝え、当該確保要求を伝えた後、前記実行制御手段から当該領域の確保通知を受けるまでに限り当該コマンドの実行を停止する機能を有する回路が含まれ、前記実行制御手段は、メモリ内領域毎に使用中か否かを管理するメモリ管理情報を保持し、いずれかの回路からバンク番号で示された領域の解放通知を受けた時には、当該領域が使用中でない旨を示すように前記メモリ管理情報を更新し、いずれかの回路からバンク番号で示された領域の確保要求を受けた時には、当該領域が使用中でないことをメモリ管理情報が示す状態になり次第、当該回路に当該領域の確保通知を伝え、当該領域が使用中である旨を示すように前記メモリ管理情報を更新することとしてもよい。
【０２５８】
これにより、スレーブプロセッサ等からコマンドの実行中に他のコマンドで使用されているメモリ資源の解放待ちを指定することが可能になるため、スレーブプロセッサ等は、コマンドの実行中のある段階において必要なメモリ資源が確保できていない状態でも、そのコマンドを実行開始してそのある段階までは処理を進めることが可能となるため、コマンドの実行の迅速化等が図れるようになる。
【０２５９】
また、前記コマンド列指定受付手段により受け付けられるコマンド列は、コマンドの他に、特定の回路に停止を行わせるための停止指示データであって、停止期間を示す情報及び当該回路を指定する情報を含む停止指示データを、コマンドと同等に順序付けられる構成要素として含み、前記実行制御手段は、前記コマンド列指定受付手段により受け付けられた指定に係るコマンド列に従った順序でコマンド列内の各構成要素に逐次着目し、着目した構成要素が停止指示データであった場合には、当該停止指示データに示される回路を当該停止指示データに示される停止期間分だけ停止させることとしてもよい。
【０２６０】
これにより、スレーブハードを任意の停止期間だけ停止させることが可能となり、コマンド列の内容等に応じて必要十分な性能を確保しつつ、スレーブハードの消費電力を低減させるような運用が可能になる。
また、本発明に係る回路群制御システムは、マスタプロセッサからの指定を受けて、複数の回路を制御する回路群制御システムであって、前記複数の回路のいずれかに実行させるべきコマンドを複数ならべて構成されるコマンド列の複数個の指定をマスタプロセッサから受け付けるコマンド列指定受付手段と、コマンド列指定受付手段により受け付けられた指定に係るコマンド列に従った順序で各コマンド列内のコマンドを逐次、当該コマンドを実行し得る回路に実行開始させる実行制御手段とを備え、前記コマンド列指定受付手段は、コマンド格納用メモリを有し、前記マスタプロセッサによりコマンド格納用メモリに複数のコマンドが書き込まれることを通じて前記コマンド列の指定を受け付け、前記実行制御手段は、コマンド格納用メモリに書き込まれたコマンドを、コマンド列に従った順序で逐次参照して、参照した当該コマンドを実行し得る回路に実行開始させることを特徴とする。
【０２６１】
これにより、マスタプロセッサが複数のコマンドからなるコマンド列を一括して回路群制御システムに伝えることができるので基本的には同期制御が不要となり、逐次コマンドを伝える場合よりも、コマンドを伝えるための制御が容易となる。
また、本発明に係る回路群制御システムは、マスタプロセッサからの指定を受けて、複数の回路を制御する回路群制御システムであって、前記複数の回路のいずれかに実行させるべきコマンドを複数ならべて構成されるコマンド列の複数個の指定をマスタプロセッサから受け付けるコマンド列指定受付手段と、コマンド列指定受付手段により受け付けられた指定に係るコマンド列に従った順序で各コマンド列内のコマンドを逐次、当該コマンドを実行し得る回路に実行させる実行制御手段と、前記マスタプロセッサからコマンドの実行完了の通知要求を受け付ける実行完了通知受付手段と、前記実行制御手段によりコマンドを実行させた回路から当該コマンドを実行完了した旨の通知を受け付けて、当該コマンドが前記実行完了通知受付手段により受け付けられた通知要求に係るコマンドである場合には、当該コマンドの実行完了を前記マスタプロセッサに通知する実行完了通知手段とを備えることを特徴とする。
【０２６２】
これにより、マスタプロセッサは特定のコマンドの実行完了を検出することができるようになるため、例えば同期をとる必要がある複数のコマンド列により成立するような情報処理を、回路群制御システムを用いて実行することができるようになる。
また、本発明に係る回路群制御方法は、マスタプロセッサからの指定に基づいて、複数の回路を制御する回路群制御方法であって、前記複数の回路のいずれかに実行させるべきコマンドを複数ならべて構成されるコマンド列の指定をマスタプロセッサから受け付けるコマンド列指定受付ステップと、コマンド列指定受付ステップにより受け付けられた指定に係るコマンド列に従った順序でコマンド列内のコマンドを逐次、当該コマンドを実行し得る回路に実行開始させる実行制御ステップとを含み、前記実行制御ステップは、一の回路に一のコマンドを実行させている間において、他の回路により実行され得る状態にあるコマンドを検出して当該コマンドを選択して当該他の回路に実行させる並列実行制御サブステップを含むことを特徴とする。
【０２６３】
これにより、各コマンド列を構成する各コマンドの実行開始順序を保つというコマンド列の意義は確保され、また、異なるスレーブハードにより複数のコマンドが並列的に実行されることとなるため、各スレーブハードの稼働率を上げることが可能になる。
また、前記複数の回路には少なくとも相互に異なる機能を有する２種の回路が含まれ、前記コマンド列指定受付ステップは、複数個のコマンド列の指定をマスタプロセッサから受け付け、前記実行制御ステップは、コマンド列指定受付ステップにより受け付けられた指定に係る各コマンド列に従った順序で各コマンド列内のコマンドを逐次、当該コマンドを実行し得る回路に実行させるものであり、前記並列実行制御サブステップは、一の回路に一のコマンド列中のコマンドを実行させている間において、他のコマンド列中の、他の回路により実行され得る状態にあるコマンドを、検出して当該コマンドを選択して当該他の回路に実行させることとしてもよい。
【０２６４】
これにより、複数のコマンド列のコマンドを各回路、つまり各スレーブハードに行わせる際に、異なるスレーブハードにより複数のコマンドを並行させるため、各スレーブハードの稼働率を上げることが可能になる。
また、前記並列実行制御サブステップは、一の回路に一のコマンド列中の一のコマンドを実行させている間において、当該コマンド列中の、他の回路により実行され得る状態にある他のコマンドを検出して当該コマンドを選択して当該他の回路に実行させることとしてもよい。
【０２６５】
これにより、同一コマンド列を構成する各コマンドの実行開始順序を保つというコマンド列の意義を確保した上で、同一コマンド列中の各コマンドを、異なるスレーブハードにより並列的に実行させることによって各スレーブハードの稼働率を向上させることができ、更にはコマンド列の実行時間が短縮され得るという効果が得られる。
【図面の簡単な説明】
【図１】本発明の実施の形態１に係る処理システム１００の構成図である。
【図２】通信メモリ１５１のデータ構造を示す図である。
【図３】コマンド列の一構成要素であり、通信メモリ１５１に格納されるコマンドのフォーマットを示す図である。
【図４】コマンドキュー１５２のデータ構造を示す図である。
【図５】マスタプロセッサ１１０により、通信メモリ１５１に格納された各コマンド、及びコマンドキュー１５２に挿入されたコマンドＩＤの内容例を示す図である。
【図６】完了テーブル１７１のデータ構造を示す図である。
【図７】マスタプロセッサ１１０と完了通知部１７０との間で授受される信号を示す図である。
【図８】バンクテーブル１６３のデータ構造及び内容例を示す図である。
【図９】マスタプロセッサ１１０によりなされるマスタプロセッサ処理を示すフローチャートである。
【図１０】コマンド実行制御装置１５０内の実行制御部１６０によりなされる実行制御処理の一部を示すフローチャートである。
【図１１】コマンド実行制御装置１５０内の実行制御部１６０によりなされる実行制御処理のうち図１０に示した以外の部分を示すフローチャートである。
【図１２】実行制御部１６０の動作例に基づく各コマンドの実行状況の変化を示すタイムチャートである。
【図１３】実施の形態２に係る変形処理システムにおけるバンクテーブルの構成及び内容例を示す図である。
【図１４】実施の形態３に係る処理システム６００の構成図である。
【図１５】バンクテーブル６６３のデータ構造及び内容例を示す図である。
【図１６】コマンド実行制御装置６５０内の実行制御部６６０によりなされる実行制御処理の一部を示すフローチャートである。
【図１７】コマンド実行制御装置６５０内の実行制御部６６０によりなされる実行制御処理のうち図１６に示した以外の部分を示すフローチャートである。
【図１８】コマンド実行制御装置６５０における実行制御部６６０内のメモリ通知部６６４によりなされるコマンド実行中メモリ管理処理の一部を示すフローチャートである。
【図１９】コマンド実行中メモリ管理処理のうち図１８に示した以外の部分を示すフローチャートである。
【図２０】実行制御部６６０の動作例に基づく、あるコマンド列の各コマンドの並列実行の様子を示すタイムチャートである。
【図２１】実施の形態４に係る処理システム９００の構成図である。
【図２２】通信メモリ１５１に格納されるスレーブハード用のコマンド及び停止コマンドのフォーマットを示す図である。
【符号の説明】
１００、６００、９００  処理システム
１１０                  マスタプロセッサ
１２０、６２０          主メモリ
１３０、６３０          スレーブプロセッサ
１３１                  ローカルメモリ
１４０、６４０          ＤＭＡコントローラ
１５０、６５０、９５０  コマンド実行制御装置
１５１                  通信メモリ
１５２                  コマンドキュー
１５３                  完了受付部
１６０、６６０、９６０  実行制御部
１６１                  次コマンドＩＤ保持部＃１
１６２                  次コマンドＩＤ保持部＃２
１６３、５６３、６６３  バンクテーブル
１７０                  完了通知部
１７１                  完了テーブル
６６４                  メモリ通知部
９６１                  停止制御部
【図１】
0003878508.tif 000002
【図２】
0003878508.tif 000003
【図３】
0003878508.tif 000004
【図４】
0003878508.tif 000005
【図５】
0003878508.tif 000006
【図６】
0003878508.tif 000007
【図７】
0003878508.tif 000008
【図８】
0003878508.tif 000009
【図９】
0003878508.tif 000010
【図１０】
0003878508.tif 000011
【図１１】
0003878508.tif 000012
【図１２】
0003878508.tif 000013
【図１３】
0003878508.tif 000014
【図１４】
0003878508.tif 000015
【図１５】
0003878508.tif 000016
【図１６】
0003878508.tif 000017
【図１７】
0003878508.tif 000018
【図１８】
0003878508.tif 000019
【図１９】
0003878508.tif 000020
【図２０】
0003878508.tif 000021
【図２１】
0003878508.tif 000022
【図２２】
0003878508.tif 000023