(57)【要約】【課題】並列処理装置、並列処理装置の制御方法、及び並列処理装置に用いられる制御装置に関し、管理部と制御部の間の通信量を削減する。【解決手段】管理部１０２と、＃１から＃Ｎのノード１０３と、管理部１０２から送られたコマンドを基に複数のノード１０３の各々を制御する制御部１０１とを有する並列処理装置である。制御部１０１は、コマンド記憶部１０４、コマンドタイプ判別部１０５、及びコマンド生成部１０６を有する。コマンド記憶部１０４は、制御部１０１で前回生成されたコマンドを記憶する。コマンドタイプ判別部１０５は、管理部１０２から送信されてきたコマンドのコマンドタイプを判別する。コマンド生成部１０６は、コマンドタイプ判別部１０５で判別されたコマンドタイプに応じて、コマンド記憶部１０４が記憶する前回生成されたコマンドを用いて、コマンドを生成する。【選択図】図１
2018041368.tif 000002
【特許請求の範囲】
【請求項１】
管理部と、複数のノードと、前記管理部から送られた第１コマンドを基に前記複数のノードの各々を制御する制御部とを有する並列処理装置において、
前記制御部は、
前回生成された第２コマンドを記憶するコマンド記憶部と、
前記管理部から送信されてきた前記第１コマンドのコマンドタイプを判別するコマンドタイプ判別部と、
前記コマンドタイプに応じて、前記第２コマンドを用いて、第３コマンドを生成するコマンド生成部と、
を有する並列処理装置。
【請求項２】
前記コマンド生成部は、前記コマンド記憶部が記憶する前記第２コマンド中の制御情報を用いて、前記第１コマンド中で省略されている制御情報を補間することにより、前記第３コマンドを生成する、請求項１に記載の並列処理装置。
【請求項３】
前記制御部は更に、
第２コマンドを複数のコマンドフォーマットで前記管理部から前記制御部に送信したとしたときの各送信量を算出し、当該各送信量に基づいて前記各コマンドフォーマット毎の各サイズを算出するフォーマット別サイズ算出部と、
前記フォーマット別サイズ算出部が算出する前記各サイズに基づき前記複数のコマンドフォーマットから１つを選択するフォーマット選択部と、
を有し、
前記コマンドタイプ判別部及び前記コマンド生成部は、前記第３コマンドを生成するときに、前記フォーマット選択部が選択したコマンドフォーマットに従って動作する、
請求項１又は２に記載の並列処理装置。
【請求項４】
前記フォーマット別サイズ算出部は、前記第２コマンドを他のコマンドフォーマットと送信したときのコマンドサイズを算出し、
前記フォーマット選択部は前回のコマンドの通信サイズと、算出したコマンドサイズを比較し、小さい方のコマンドフォーマットを選択する請求項３記載の並列処理装置。
【請求項５】
前記管理部は、
前回送信されたコマンドの処理前の第４コマンドを記憶する第２のコマンド記憶部と、
送信されるコマンド中の所定の制御情報を前記第４コマンドに基づいて省略して得た省略コマンドを生成する省略コマンド生成部と、
前記省略コマンド生成部における省略の形態を示す情報を前記コマンドタイプとして前記省略コマンドに付与した送信コマンドを生成して、前記制御部に送信する送信コマンド生成部と、
を有する請求項１又は２に記載の並列処理装置。
【請求項６】
前記管理部は、前記第４コマンドを前記複数のコマンドフォーマットで前記制御部に送信したとしたときの各送信量を算出し、当該各送信量に基づいて前記各コマンドフォーマット毎の各サイズを算出し、前記各サイズに基づき前記制御部でコマンドフォーマットを選択するときのアルゴリズムと同一の所定のアルゴリズムで前記複数のコマンドフォーマットから１つを決定するフォーマット決定部を更に有し、
前記省略コマンド生成部は、第３コマンドを送信するときに、前記フォーマット決定部が決定したコマンドフォーマットに従って一連の前記省略コマンドを生成し、
前記送信コマンド生成部は、前記フォーマット選択部が決定したコマンドフォーマットに従って、一連の前記送信コマンドを生成して前記制御部に送信する、
請求項５記載の並列処理装置。
【請求項７】
前記フォーマット決定部は、今回以前の複数回の各回毎の前記送信量に、当該回に対応する所定の忘却係数をそれぞれ乗算して、前記各回の乗算結果を前記複数回にわたって加算して得た加算結果として、前記コマンドフォーマットのもとでの前記サイズを算出する、請求項３又は６記載の並列処理装置。
【請求項８】
前記制御部は、前記管理部から前記制御部に送信される第１コマンドを記憶するバッファ部と、前記管理部からの実行指示に応じ、前記バッファ部に対して前記第１コマンドを順次読み出す指示を与えるバッファ制御部とを更に有し、
前記コマンドタイプ判別部は、前記バッファ制御部の指示により読み出された前記第１コマンドのコマンドタイプを判別し、
前記コマンド生成部は、前記コマンド記憶部が記憶する前記第２コマンド中の制御情報を用いて、読み出された前記第１コマンド中で省略されている制御情報を補間することにより、前記第３コマンドを生成する補間回路を有し、
前記制御部は更に、前記補間回路が生成し前記バッファ制御部に入力された第３コマンドに応じた処理の実行を前記ノードに指示し、当該ノードにおける当該第３コマンドの実行結果を前記管理部に通知するノード制御部を有する、
請求項１乃至７の何れかに記載の並列処理装置。
【請求項９】
前記管理部は、前記省略コマンド生成部及び前記送信コマンド生成部により、前記第３コマンドを生成した後に、前記制御部内のバッファ部に、前記生成した第３コマンドを前記バッファ制御部に書き込む、請求項８記載の並列処理装置。
【請求項１０】
管理部と、複数のノードと、前記管理部から送られた第１コマンドを基に前記複数のノードの各々を制御する制御部とを有する並列処理装置の制御方法であって、
前記制御部において、
前回生成された第２コマンドを記憶し、
前記管理部から送信されてきた前記第１コマンドのコマンドタイプを判別し、
前記コマンドタイプに応じて、前記第２コマンドを用いて、第３コマンドを生成する、
並列処理装置の制御方法。
【請求項１１】
前記管理部において、
前回送信されたコマンドの処理前の第４コマンドを記憶し、
送信されるコマンド中の所定の制御情報を前記第４コマンドに基づいて省略して得た省略コマンドを生成し、
当該省略の形態を示す情報を前記コマンドタイプとして前記省略コマンドに付与したコマンドを生成して前記制御部に送信する、
請求項１０に記載の並列処理装置の制御方法。
【請求項１２】
管理部と、複数のノードとを有する並列処理装置に用いられ、
前回生成された第２コマンドを記憶するコマンド記憶部と、
前記管理部から送信されてきた第１コマンドのコマンドタイプを判別するコマンドタイプ判別部と、
前記コマンドタイプに応じて、前記第２コマンドを用いて、第３コマンドを生成するコマンド生成部と、
を有する制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
並列処理装置、並列処理装置の制御方法、及び並列処理装置に用いられる制御装置に関する。
【背景技術】
【０００２】
一般に、ＨＰＣ（Ｈｉｇｈ Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ）モデル等の計算機システムでは、複数のノードがラック等に搭載される。各ノードは、一つのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）によって稼働する処理単位であり、一つのボード（以下、システムボード（ＳＢ）という）上にプロセッサ及びメモリなどの部品を実装して構成される。このような複数のノードからなる大規模な計算機システムでは、設置面積コストを削減するために、高密度実装がはかられている。高密度実装に伴い、一つのシステムを構成する部品の点数が増加し、システム運用のために制御すべき対象部品の点数も増大してきている。また同様に、性能に対するニーズに応えるために、ＣＰＵ（中央演算処理装置）やメモリの部品一つ当たりに設定する情報は増大してきており、制御も複雑化してきている。そのため、システムの運用・制御を行なうシステム制御装置（以下、サービスプロセッサ（ＳＰ）という）の負荷が増大し、システムの立ち上げ（リセット）、ハードウェアエラー時のログ採取、定期的な状態監視等の処理量及び処理時間が増大してきている。システム制御時間の増大は、計算機の簡便な運用を阻害する要因となり、システム制御負荷の少ないシステム制御方式が望まれている。
【０００３】
高密度実装に伴い処理装置を成す各ボードに実装される部品の数が増大しても、処理装置の効率的な制御を実現する従来技術として、次のような技術が知られている（例えば特許文献１）。複数のボードのそれぞれの制御部は、管理部からの実行指示に応じ、各ボード上で実行されるべき一連の処理手順を記憶した記憶部から処理手順を一つずつ読み出す。制御部は、読み出された処理手順に応じた処理を各ボード上で順次実行させて複数の部品（ノード）を制御し、一連の処理手順の実行結果を管理部に通知する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２３０５９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記従来技術では、管理部が複数の一連の処理手順を一つにまとめて記憶部に書き込んでから、制御部が記憶部から処理手順を一つずつ読み出して部品（ノード）に実行させるので、管理部は制御部に対するデバイスドライバ呼出しのオーバーヘッドを削減できる。しかしながら、この従来技術では、一連の処理手順を記憶部が存在する制御部側に送信するときに、「宛先やアドレス長、ＣＲＣ（巡回冗長検査）符号の有無など、連続する処理手順で低頻度でしか変わらない情報」を重複して通知しなければならなかった。
【０００６】
この例のように、従来は、管理部から制御部への処理手順のコマンドの通信において、重複通知すなわち重複情報の発生による通信量の増大が課題であった。
【０００７】
そこで、本発明の１つの側面では、管理部と制御部の間の通信量を削減することを目的とする。
【課題を解決するための手段】
【０００８】
態様の一例では、管理部と、複数のノードと、管理部から送られた第１コマンドを基に複数のノードの各々を制御する制御部とを有する並列処理装置において、制御部は、前回生成された第２コマンドを記憶するコマンド記憶部と、管理部から送信されてきた第１コマンドのコマンドタイプを判別するコマンドタイプ判別部と、コマンドタイプに応じて、第２コマンドを用いて、第３コマンドを生成するコマンド生成部と、を有する。
【発明の効果】
【０００９】
管理部と制御部の間の通信量を削減することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態のブロック図である。
【図２】第２の実施形態のブロック図である。
【図３】第２の実施形態において、ＳＰから制御回路内のバッファ部にコマンドリストとして書き込まれる各コマンドのコマンドフォーマットを、従来技術の場合と比較した図である。
【図４】コマンドリストをＳＰから制御回路内のバッファ部に書き込む場合における通信量を、従来技術と第２の実施形態とで比較した図である。
【図５】第２の実施形態においてＳＰが実行する送信コマンド生成処理の例を示すフローチャートである。
【図６】第２の実施形態において制御回路が実行する受信コマンド生成・実行処理の例を示すフローチャートである。
【図７】並列処理装置の第３の実施形態のブロック図である。
【図８】第３の実施形態において、ＳＰから制御回路内のバッファ部にコマンドリストとして書き込まれる各コマンドの第２のコマンドフォーマットの例を示す図である。
【図９】第３の実施形態の動作例を示すシーケンス図（その１）である。
【図１０】第３の実施形態の動作例を示すシーケンス図（その２）である。
【図１１】第３の実施形態においてＳＰが実行する送信コマンド生成処理の例を示すフローチャートである。
【図１２】第３の実施形態において制御回路が実行する受信コマンド生成・実行処理の例を示すフローチャートである。
【図１３】従来装置のコマンドフォーマットの実施例を示す図である。
【図１４】第２の実施形態によるコマンドフォーマットの実施例を示す図である。
【図１５】従来装置と実施形態とで、送信されるコマンドサイズを比較した図である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面を参照しながら説明する。図１は、並列処理装置の第１の実施形態のブロック図である。
【００１２】
第１の実施形態は、コマンド毎にコマンドタイプを判別し、既に記憶されたコマンドの情報を用いてコマンドを生成する装置である。第１の実施形態は、管理部１０２と、＃１から＃Ｎよりなる複数（Ｎ個）のノード１０３と、管理部１０２から送られた第１コマンドを基に複数のノード１０３の各々を制御する制御部１０１とを有する。＃１から＃Ｎのノード１０３は、一つ一つがそれぞれ、プロセッサ、メモリ、入出力インタフェース等を備え、並列アーキテクチャのもとで並列処理を実行する能力を有する部品である。
【００１３】
制御部１０１は、コマンド記憶部１０４、コマンドタイプ判別部１０５、及びコマンド生成部１０６を有する。
【００１４】
コマンド記憶部１０４は、制御部１０１において前回生成された第２コマンドを記憶する。
【００１５】
コマンドタイプ判別部１０５は、管理部１０２から送信されてきた第１コマンドのコマンドタイプを判別する。
【００１６】
コマンド生成部１０６は、コマンドタイプ判別部１０５で判別されたコマンドタイプに応じて、コマンド記憶部１０４が記憶する第２コマンドを用いて、第３コマンドを生成する。より具体的には、コマンド生成部１０６は、コマンド記憶部１０４が記憶する前回生成された第２コマンド中の制御情報を用いて、管理部１０２から送信されてきたコマンド中で省略されている制御情報を補間することにより、第３コマンドを生成する。制御情報には、データなど連続するコマンドで毎回変わる情報と、宛先やアドレス長、ＣＲＣ符号の有無など、連続するコマンドで低頻度でしか変わらない情報、例えば前回生成されたコマンドとの比較で値が変わらない場合がある情報である。補間される制御情報は、前回生成された第２コマンドとの比較で値が変わらない情報をいう。ここで補間は、削除された制御情報を復元し、元のコマンドを生成する処理である。
【００１７】
一方、管理部１０２は、コマンド記憶部１０７（以下、第２のコマンド記憶部という）、省略コマンド生成部１０８、及び送信コマンド生成部１０９とを有する。
【００１８】
第２のコマンド記憶部１０７は、前回送信されたコマンドの処理前の第４コマンドを記憶する。
【００１９】
省略コマンド生成部１０８は、コマンドの送信において、省略コマンドを生成する。省略コマンドとは、そのコマンド中の所定の制御情報を第２のコマンド記憶部１０７が記憶する第４コマンドに基づいて省略して得たコマンドをいう。
【００２０】
送信コマンド生成部１０９は、省略コマンド生成部１０８での省略の形態を示す情報をコマンドタイプとして省略コマンドに付与した送信コマンドを生成して制御部１０１に送信する。省略の形態は例えば、省略される所定の制御情報が、所定の１つなのか、所定の２つなのか、所定の３つなのか等の形態である。
【００２１】
この場合、管理部１０２内の省略コマンド生成部１０８が第２のコマンド記憶部１０７に記憶された前回の第４コマンドとの比較により、所定のコマンドフォーマットに従って、コマンド中の所定の制御情報を省略する。一方、制御部１０１内のコマンド生成部１０６も、上記所定のコマンドフォーマットに従って、コマンド記憶部１０４に記憶された前回生成された第２コマンドから例えば省略された所定の制御情報を補間することにより、第３コマンドを生成する。また、制御部１０１内のコマンドタイプ判別部１０５は、管理部１０２から送信されてきた第１コマンドに付与されているコマンドタイプを判別することにより、省略の形態を把握する。これらの構成により、制御部１０１は、管理部１０２から省略形式の第１コマンドを受信した場合に、管理部１０２での省略処理と可逆の処理を実行することができ、管理部１０２で送信対象となった元のコマンドを復元することができる。
【００２２】
以上の構成により、第１の実施形態では、管理部１０２から制御部１０１に送信されるコマンドは、１つ前のコマンドと比較して例えば同一の制御情報のフィールドが省略された省略コマンドの形態となる。このため、管理部１０２から制御部１０１へのコマンドの通信において、重複通知の発生が抑制されて、管理部１０２と制御部１０１の間の通信量を削減することが可能となる。
【００２３】
図２は、並列処理装置の第２の実施形態のブロック図である。第２の実施形態は、省略形態として４つのコマンドタイプが存在する場合の補間処理を実行する装置である。第２の実施形態は、図１の第１の実施形態における制御部１０１、管理部１０２、及び複数のノード１０３と同様の機能を有する、制御回路２０１、サービスプロセッサ（以下「ＳＰ」と記載）２０２と、＃１から＃１６よりなる１６個のノード２０３を有する。
【００２４】
制御回路２０１は、コマンド記憶部２０４、コマンドタイプ判別部２０５を含む補間回路２０６、コマンドリスト２１２を記憶するバッファ部２０７、バッファ制御部２０８、ノード制御部２０９、ＪＴＡＧ制御回路２１０、及びＩ２Ｃ制御回路２１１を有する。制御回路２０１におけるこれらの処理ブロックは例えば、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）により実装される。
【００２５】
バッファ部２０７は、ＳＰ２０２から制御回路２０１に送信される一連のコマンドをコマンドリスト２１２として記憶する。
【００２６】
バッファ制御部２０８は、後述するノード制御部２０９を介して入力されるＳＰ２０２からの実行指示に応じて、バッファ部２０７に対して、コマンドリスト２１２から一連のコマンドを順次読み出す指示を与える。
【００２７】
コマンド記憶部２０４は、図１の第１の実施形態におけるコマンド記憶部１０４と同様の機能を有し、補間回路２０６において前回生成されたコマンドを記憶する。
【００２８】
補間回路２０６内のコマンドタイプ判別部２０５は、図１の第１の実施形態におけるコマンドタイプ判別部１０５と同様の機能を有する。コマンドタイプ判別部２０５は、バッファ制御部２０８の指示によりバッファ部２０７から順次読み出されるコマンドリスト２１２中のコマンドの、コマンドタイプを判別する。
【００２９】
補間回路２０６は、コマンドタイプ判別部２０５が判別したコマンドタイプに従って、次の動作を実行する。補間回路２０６は、コマンド記憶部２０４が記憶する補間回路２０６自身で前回生成されたコマンド中の制御情報を用いて、バッファ制御部２０８の指示により読み出されたコマンド中で省略されている制御情報を補間することにより、コマンドを生成する。そして、補間回路２０６は、生成したコマンドを、バッファ制御部２０８に出力する。
【００３０】
ノード制御部２０９は、補間回路２０６が生成しバッファ制御部２０８に入力されたコマンドに応じた処理の実行を、後述するＪＴＡＧ制御回路２１０又はＩ２Ｃ制御回路２１１を介して、＃１から＃１６の何れかのノード２０３に指示する。また、ノード制御部２０９は、当該ノード２０３における当該コマンドの実行結果をＳＰ２０２に通知する。
【００３１】
ＪＴＡＧ制御回路２１０は、ＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）制御インタフェース方式を制御するインタフェース回路である。ＪＴＡＧは、電気・電子工学技術の国際学会ＩＥＥＥ（Ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ，Ｉｎｃ．）により、１１４９．１として標準化されている制御インタフェース方式である。ＪＴＡＧは、シリアル通信によりノード２０３（図２の例では＃１から＃８の各ノード２０３）内のプロセッサ（図示せず）と通信する仕組みを提供する。ＪＴＡＧ制御回路２１０は例えば、ＴＣＫ（クロック）、ＴＤＩ（データ入力）、ＴＤＯ（データ出力）、及びＴＭＳ（状態制御）の４本の信号を使って、＃１から＃８の各ノード２０３との間で通信を行う。
【００３２】
Ｉ２Ｃ制御回路２１１は、Ｉ２Ｃ（Ｉｎｔｅｌ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：Ｉ−ｓｑｕａｒｅｄ−Ｃ）制御インタフェース方式を制御するインタフェース回路である。Ｉ２Ｃは、オランダのフィリップス社で開発されたシリアル通信の制御インタフェース方式である。Ｉ２Ｃは、シリアル通信によりノード２０３（図２の例では＃９から＃１６の各ノード２０３）内のプロセッサ（図示せず）と通信する仕組みを提供する。Ｉ２Ｃ制御回路２１１は例えば、抵抗でプルアップされた双方向の２本のオープンコレクタ信号線を使って、＃９から＃１６の各ノード２０３との間で１対多の通信を実現する。
【００３３】
ノード制御部２０９は、バッファ制御部２０８から順次入力されるコマンドに基づき、そのコマンドによって制御されるべき制御対象となるノード２０３を、＃１から＃１６の複数のノードの中から特定する。ノード制御部２０９は、その特定した制御対象のノード２０３が、＃１から＃８のノード２０３のうちの何れかである場合にはＪＴＡＧ制御回路２１０を選択し、＃９から＃１６のノード２０３のうちの何れかである場合にはＩ２Ｃ制御回路２１１を選択する。そして、ノード制御部２０９は、選択したＪＴＡＧ制御回路２１０又はＩ２Ｃ制御回路２１１を介して、制御対象のノード２０３にコマンドの実行を指示する。
【００３４】
ＳＰ２０２は、図１の第１の実施形態における管理部１０２に対応する。ＳＰ２０２は、図１の第２のコマンド記憶部１０７、省略コマンド生成部１０８、及び送信コマンド生成部１０９と同様の動作を実行する、第２のコマンド記憶部２１３、省略コマンド生成部２１４、及び送信コマンド生成部２１５を有する。ＳＰ２０２におけるこれらの処理ブロックは、例えばＳＰ２０２内の特には図示しないＣＰＵ（中央演算処理装置）が特には図示しないメモリに記憶された送信コマンド生成処理プログラムを実行する処理である。
【００３５】
第２の実施形態では、例えば図２に示されるように、＃１と＃２、＃３と＃４、＃５と＃６、＃７と＃８、＃９と＃１０、＃１１と＃１２、＃１３と＃１４、及び＃１５と＃１６の２つずつのノード組がそれぞれ、＃１から＃８の各ボード２２０に実装される。
【００３６】
図３は、図２の第２の実施形態において、ＳＰ２０２から制御回路２０１内のバッファ部２０７にコマンドリスト２１２として書き込まれる各コマンドのコマンドフォーマットを、従来技術の場合と比較した図である。図３（ａ）は従来技術のコマンドフォーマット、図３（ｂ）は第２の実施形態におけるコマンドフォーマットである。
【００３７】
まず、図３（ａ）又は（ｂ）に示されるように、コマンドが以下のように、複数の制御情報フィールドに分類される。
【００３８】
・「Ａ．データなど連続するコマンドで毎回変わる情報」
・「Ｂ１．宛先やアドレス長、CRC有無など連続するコマンドで低頻度でしか変わらない情報１」
・「Ｂ２．宛先やアドレス長、CRC有無など連続するコマンドで低頻度でしか変わらない情報２」
・「ＢＸ．宛先やアドレス長、ＣＲＣ有無など連続するコマンドで低頻度でしか変わらない情報Ｘ」
【００３９】
図３（ａ）に示される従来技術のコマンドフォーマットでは、コマンド毎に、上述のＡ．，Ｂ１．，Ｂ２．，・・・ＢＸ．の全ての制御情報が、ＳＰ２０２から制御回路２０１内のバッファ部２０７に、毎回送信される。
【００４０】
一方、第２の実施形態では、図３（ｂ）に示されるコマンドフォーマットを用いて、図２のＳＰ２０２において、制御回路２０１に送信されるコマンドリスト２１２内のコマンド毎に、次のような処理が実行される。
【００４１】
始めに、図２のＳＰ２０２内の省略コマンド生成部２１４での動作について説明する。
まず、省略コマンド生成部２１４は、図３（ｂ）のコマンドフォーマットに従い、送信するコマンドにつき、第２のコマンド記憶部２１３が記憶する前回送信されたコマンドの処理前の元のコマンドに対し、上記制御情報のうちどれが一致しているかを比較する。
【００４２】
上記比較の結果、前回のコマンドと、Ｂ２．より後（図示しないＢ３．）からＢＸ．までの制御情報が一致する場合には、省略コマンド生成部２１４は、次の処理を実行する。省略コマンド生成部２１４は、図３（ｂ）の［アドレススキップコマンド１−１］として示されるように、送信するコマンドにおいてＢ３．からＢＸ．までの制御情報を省略した形式の省略コマンドを出力する。すなわち、アドレススキップコマンドは、省略コマンドの具体的な形態をいい、制御情報としてのアドレスをスキップ（省略した）コマンドをいう。
【００４３】
上記比較の結果、前回のコマンドと、Ｂ２．からＢＸ．までの制御情報が一致する場合、省略コマンド生成部２１４は、次の処理を実行する。省略コマンド生成部２１４は、図３（ｂ）の［アドレススキップコマンド１−２］として示されるように、送信するコマンドにおいてＢ２．からＢＸ．までの制御情報を省略した形式の省略コマンドを出力する。
【００４４】
上記比較の結果、前回のコマンドと、Ｂ１．からＢＸ．までの制御情報が一致する場合、省略コマンド生成部２１４は、次の処理を実行する。省略コマンド生成部２１４は、図３（ｂ）の［アドレススキップコマンド１−３］として示されるように、送信するコマンドにおいてＢ１．からＢＸ．までの制御情報を省略した形式の省略コマンドを出力する。
【００４５】
上記比較の結果、上記３つのケース以外の場合（以下これを「通常時」と呼ぶ）、省略コマンド生成部２１４は、次の処理を実行する。省略コマンド生成部２１４は、図３（ａ）の従来例の場合と同様に、図３（ｂ）の［ダイレクトコマンド１］として示されるように、送信するコマンドにおいてどの制御情報も省略しない形式の省略コマンド（これも便宜上「省略コマンド」と呼ぶ）を出力する。
【００４６】
次に、ＳＰ２０２内の送信コマンド生成部２１５での動作について説明する。送信コマンド生成部２１５は、図３（ｂ）のコマンドフォーマットに従って、次の処理を実行する。
【００４７】
省略コマンド生成部２１４が前述した図３（ｂ）の［ダイレクトコマンド１］として示される省略の形態の省略コマンドを出力した場合には、送信コマンド生成部２１５は、次の処理を実行する。送信コマンド生成部２１５は、図３（ｂ）のｂｉｔ［０：１］として示される先頭の２ビットに、ダイレクトコマンド１を示すコマンドタイプ値「０ｘ０」（先頭の「０ｘ」はそれに続く値が１６進数であることを示す）が付加されたコマンドを生成する。送信コマンド生成部２１５は更に、このコマンドの３ビット目以降に、省略コマンド生成部２１４が生成した図３（ｂ）の［ダイレクトコマンド１］として示されるコマンド内容を付加する。送信コマンド生成部２１５は、このようにして生成したコマンドタイプ＋［ダイレクトコマンド１］を、送信されるコマンドリスト２１２を構成する一つの送信コマンドとして内部に保持する。即ち、送信コマンドとは、先頭に付加されるコマンドタイプ値に省略コマンドを付加したコマンドをいう。
【００４８】
省略コマンド生成部２１４が前述した図３（ｂ）の［アドレススキップコマンド１−１］として示される省略の形態の省略コマンドを出力した場合には、送信コマンド生成部２１５は、次の処理を実行する。送信コマンド生成部２１５は、図３（ｂ）のｂｉｔ［０：１］として示される先頭の２ビットに、アドレススキップコマンド１−１を示すコマンドタイプ値「０ｘ１」が付加されたコマンドを生成する。送信コマンド生成部２１５は更に、このコマンドの３ビット目以降に、省略コマンド生成部２１４が生成した図３（ｂ）の［アドレススキップコマンド１−１］として示されるコマンド内容を付加する。送信コマンド生成部２１５は、このようにして生成したコマンドタイプ＋［アドレススキップコマンド１−１］を、送信されるコマンドリスト２１２を構成する一つの送信コマンドとして内部に保持する。
【００４９】
省略コマンド生成部２１４が前述した図３（ｂ）の［アドレススキップコマンド１−２］として示される省略の形態の省略コマンドを出力した場合には、送信コマンド生成部２１５は、次の処理を実行する。送信コマンド生成部２１５は、図３（ｂ）のｂｉｔ［０：１］として示される先頭の２ビットに、アドレススキップコマンド１−２を示すコマンドタイプ値「０ｘ２」が付加されたコマンドを生成する。送信コマンド生成部２１５は更に、このコマンドの３ビット目以降に、省略コマンド生成部２１４が生成した図３（ｂ）の［アドレススキップコマンド１−２］として示されるコマンド内容を付加する。送信コマンド生成部２１５は、このようにして生成したコマンドタイプ＋［アドレススキップコマンド１−２］を、送信されるコマンドリスト２１２を構成する一つの送信コマンドとして内部に保持する。
【００５０】
省略コマンド生成部２１４が前述した図３（ｂ）の［アドレススキップコマンド１−３］として示される省略の形態の省略コマンドを出力した場合には、送信コマンド生成部２１５は、次の処理を実行する。送信コマンド生成部２１５は、図３（ｂ）のｂｉｔ［０：１］として示される先頭の２ビットに、アドレススキップコマンド１−３を示すコマンドタイプ値「０ｘ３」が付加されたコマンドを生成する。送信コマンド生成部２１５は更に、このコマンドの３ビット目以降に、省略コマンド生成部２１４が生成した図３（ｂ）の［アドレススキップコマンド１−３］として示されるコマンド内容を付加する。送信コマンド生成部２１５は、このようにして生成したコマンドタイプ＋［アドレススキップコマンド１−３］を、送信されるコマンドリスト２１２を構成する一つの送信コマンドとして内部に保持する。
【００５１】
省略コマンド生成部２１４及び送信コマンド生成部２１５は、以上の省略コマンド生成処理及び送信コマンド生成処理を送信対象の全てのコマンドに対して完了すると、次の処理を実行する。送信コマンド生成部２１５は、内部に保持していた全ての送信コマンドを、制御回路２０１内のバッファ部２０７に対する１回のデバイスドライバ呼出しによって、コマンドリスト２１２として、バッファ部２０７に書き込む。
【００５２】
次に、図２の制御回路２０１の動作について説明する。図３（ｂ）に示される第２の実施形態のコマンドフォーマットを用いて、制御回路２０１において、バッファ制御部２０８の指示によってバッファ部２０７から読み出されたコマンドリスト２１２内のコマンド毎に、次のような処理が実行される。
【００５３】
まず、補間回路２０６内のコマンドタイプ判別部２０５が、バッファ部２０７から読み出されたコマンドにおいて、図３（ｂ）のｂｉｔ［０：１］として示される先頭２ビットに設定されている値を判別する。
【００５４】
この判別の結果、コマンドタイプ判別部２０５がコマンド内の先頭２ビットにコマンドタイプ値「０ｘ０」が設定されていると判別した場合には、補間回路２０６は、以下の処理を実行する。図３（ｂ）で前述したように、このコマンドは何れの制御情報も省略されていないダイレクトコマンド１であるため、補間回路２０６は、入力したコマンドをそのまま、バッファ制御部２０８に出力する。
【００５５】
一方、コマンドタイプ判別部２０５がコマンド内の先頭２ビットにコマンドタイプ値「０ｘ１」が設定されていると判別した場合には、補間回路２０６は、以下の処理を実行する。図３（ｂ）で前述したように、このコマンドは、Ｂ３．からＢＸ．までの制御情報が省略されているアドレススキップコマンド１−１である。このため、補間回路２０６は、入力したコマンドに対して、コマンド記憶部２０４に記憶されている前回生成されたコマンド中のＢ３．からＢＸ．までの制御情報を補間することにより、コマンドを生成し、バッファ制御部２０８に出力する。
【００５６】
また、コマンドタイプ判別部２０５がコマンド内の先頭２ビットにコマンドタイプ値「０ｘ２」が設定されていると判別した場合には、補間回路２０６は、以下の処理を実行する。図３（ｂ）で前述したように、このコマンドは、Ｂ２．からＢＸ．までの制御情報が省略されているアドレススキップコマンド１−２である。このため、補間回路２０６は、入力したコマンドに対して、コマンド記憶部２０４に記憶されている前回生成されたコマンド中のＢ２．からＢＸ．までの制御情報を補間することにより、コマンドを生成し、バッファ制御部２０８に出力する。
【００５７】
更に、コマンドタイプ判別部２０５がコマンド内の先頭２ビットにコマンドタイプ値「０ｘ３」が設定されていると判別した場合には、補間回路２０６は、以下の処理を実行する。図３（ｂ）で前述したように、このコマンドは、Ｂ１．からＢＸ．までの制御情報が省略されているアドレススキップコマンド１−３である。このため、補間回路２０６は、入力したコマンドに対して、コマンド記憶部２０４に記憶されている前回生成されたコマンド中のＢ１．からＢＸ．までの制御情報を補間することにより、コマンドを生成し、バッファ制御部２０８に出力する。
【００５８】
コマンドタイプ判別部２０５及び補間回路２０６は、以上の処理を、バッファ制御部２０８からの指示でバッファ部２０７から読み出されたコマンドリスト２１２中の全てのコマンドに対して実行し、生成された各コマンドをバッファ制御部２０８に出力する。
【００５９】
以上のようにして、制御回路２０１は、ＳＰ２０２からバッファ部２０７を介して省略形式のコマンドを受信した場合に、ＳＰ２０２での省略処理と可逆の処理を実行することができ、ＳＰ２０２で送信対象となった元のコマンドを復元することができる。
【００６０】
図４は、例えばＣｏｍｍａｎｄ０からＣｏｍｍａｎｄ１５の一連のコマンドよりなるコマンドリスト２１２をＳＰ２０２から制御回路２０１内のバッファ部２０７に書き込む場合における通信量を、従来技術と第２の実施形態とで比較した図である。図４（ａ）は従来技術、図４（ｂ）は第２の実施形態の場合である。従来は、コマンド毎に制御情報は省略されないため、例えば図４（ａ）に示されるように、全てのコマンドが例えば８バイトのデータ量を必要とし、全体では例えば１２８バイトの通信量となる。これに対して、第２の実施形態では、コマンド毎に、前回のコマンドの制御情報と同じフィールドが省略される結果、例えば図４（ｂ）のコマンドリスト２１２の例に示されるように、全体では例えば７６バイトの通信量で済むことになる。
【００６１】
この場合まず、バッファ制御部２０８が、バッファ部２０７内のコマンドリスト２１２の先頭のアドレスに読出しポインタを設定する。バッファ制御部２０８は、このアドレスから２ビット分のコマンドタイプ値を読み出して、コマンドタイプ判別部１０５に通知する。コマンドタイプ判別部１０５は、この２ビットのコマンドタイプ値を判別することにより、それに続く省略コマンドが図３（ｂ）のどの省略コマンドになるかがわかるため、そのバイト長を決定できる。コマンドタイプ判別部１０５は、このバイト長の情報をバッファ制御部２０８に通知する。バッファ制御部２０８は、読出しポインタのアドレスを、現在のアドレス（コマンドタイプ値の２ビット目のアドレス）から＋１更新しながら、通知されたバイト長分の省略コマンドを読み出して、補間回路２０６に引き渡す。
【００６２】
次に、バッファ制御部２０８は、バッファ部２０７内のコマンドリスト２１２において、上記バイト長分の省略コマンドを読み出した次のアドレスに読出しポインタを設定する。バッファ制御部２０８は、その読出しポインタのアドレスを含む２ビット分のコマンドタイプ値を読み出して、コマンドタイプ判別部１０５に通知する。コマンドタイプ判別部１０５は、この２ビットのコマンドタイプ値を判別することにより、それに続く省略コマンドが図３（ｂ）のどの省略コマンドになるかがわかるため、そのバイト長を決定できる。コマンドタイプ判別部１０５は、このバイト長の情報をバッファ制御部２０８に通知する。バッファ制御部２０８は、読出しポインタのアドレスを、現在のアドレス（コマンドタイプ値の２ビット目のアドレス）から＋１更新しながら、通知されたバイト長分の省略コマンドを読み出して、補間回路２０６に引き渡す。
【００６３】
以上の制御動作が繰り返されることにより、図４（ｂ）のような可変長形式のコマンドリスト２１２でも、バッファ部２０７内のコマンドリスト２１２中の各コマンドを順次読み出すことができる。
【００６４】
このようにして、第２の実施形態では、第１の実施形態の場合と同様に、ＳＰ２０２から制御回路２０１内のバッファ部２０７へのコマンドリスト２１２の書込みにおいて、重複通知の発生が抑制されて、ＳＰ２０２と制御回路２０１の間の通信量を削減することが可能となる。
【００６５】
図５は、ＳＰ２０２が実行する送信コマンド生成処理の例を示すフローチャートである。この処理は例えば、ＳＰ２０２内の特には図示しないＣＰＵが特には図示しないメモリに記憶されたコマンド生成処理プログラムを実行する処理である。
【００６６】
まず、ＳＰ２０２は、内部でコマンドリストの制御回路２０１への転送指示が発生するまで待機する（ステップＳ５０１の判定がＮＯの繰返し）。
【００６７】
転送指示が発生する（ステップＳ５０１の判定がＹＥＳとなる）と、ＳＰ２０２は、内部で実行されているプログラムから１コマンドを読み込む（ステップＳ５０２）。
【００６８】
次に、ＳＰ２０２は、コマンドの読込みに成功したか否かを判定する（ステップＳ５０３）。
【００６９】
ステップＳ５０３の判定がＹＥＳならば、ＳＰ２０２は、図３（ｂ）の説明で前述した図２の省略コマンド生成部２１４に対応する省略コマンド生成処理を実行する（ステップＳ５０４）。この結果、ステップＳ５０２で読み込まれたコマンドに対して、ＳＰ２０２内のメモリの記憶領域に記憶されている前回送信されたコマンドの処理前のコマンドとの比較に基づいて、図３（ｂ）で説明した形態で制御情報が省略された省略コマンドが生成される。
【００７０】
次に、ＳＰ２０２は、図３（ｂ）の説明で前述した図２の送信コマンド生成部２１５に対応する送信コマンド生成処理を実行する（ステップＳ５０５）。この結果、ステップＳ５０４で生成された省略コマンドにおける省略の形態に対応するコマンドタイプ値が先頭の２ビットに付与され、３ビット目以降に省略コマンドが付加された送信コマンドが生成される。ＳＰ２０２は、このようにして生成された送信コマンドを、送信されるべきコマンドリスト２１２（図２参照）の一部として、ＳＰ２０２内のメモリに保持する。
【００７１】
そして、ＳＰ２０２は、ステップＳ５０２で読み込んだコマンドを、ＳＰ２０２内のメモリの記憶領域に、前回送信されたコマンドの処理前のコマンドとして記憶する（ステップＳ５０６）。
【００７２】
その後、ＳＰ２０２は、ステップＳ５０２の処理に戻り、コマンドリスト内の次のコマンドに対する処理に移る。
【００７３】
以上の動作の繰返しの結果、ステップＳ５０３の判定がＮＯとなって未処理のコマンドが無いと判定されると、次の処理が実行される。ＳＰ２０２は、ステップＳ５０５の処理でＳＰ２０２内のメモリの記憶領域に保持していたコマンド群を、コマンドリスト２１２（図２）として、制御回路２０１内のバッファ部２０７に転送する（ステップＳ５０７）。その後、ＳＰ２０２は、ステップＳ５０１の待機処理に戻る。
【００７４】
図６は、制御回路２０１が実行する受信コマンド生成・実行処理の例を示すフローチャートである。この処理は例えば、図２の制御回路２０１内のを構成するＦＰＧＡの一連の実行動作をフローチャートで示したものである。
【００７５】
まず、図２のノード制御部２０９に対応するＦＰＧＡブロックが、ＳＰ２０２から、バッファ部２０７に転送されたコマンドリスト２１２の実行指示が受信されるまで待機する（ステップＳ６０１の判定がＮＯの繰返し）。
【００７６】
ステップＳ６０１の判定がＹＥＳとなると、図２のノード制御部２０９に対応するＦＰＧＡブロックから図２のバッファ制御部２０８に対応するＦＰＧＡブロックに制御が移る。バッファ制御部２０８に対応するＦＰＧＡブロックは、制御回路２０１が内蔵するメモリに構成されているバッファ部２０７に、コマンドリスト２１２からの１コマンドの読出しの指示を与える（ステップＳ６０２）。
【００７７】
その結果、バッファ制御部２０８に対応するＦＰＧＡブロックは、バッファ部２０７に対応するメモリから、コマンドが読み出されたか否かを判定する（ステップＳ６０３）。
【００７８】
ステップＳ６０３の判定がＹＥＳならば、図２のバッファ制御部２０８に対応するＦＰＧＡブロックから図２の補間回路２０６に対応するＦＰＧＡブロックに制御が移る。図２の補間回路２０６内のコマンドタイプ判別部２０５に対応するＦＰＧＡブロックは、図３（ｂ）で前述した図２のコマンドタイプ判別部２０５の動作に対応するコマンドタイプ判別処理を実行する（ステップＳ６０４）。この処理では、前述したように、ステップＳ６０２で読み出されたコマンドの先頭２ビットにより、コマンドタイプが判別される。
【００７９】
次に、図２の補間回路２０６に対応するＦＰＧＡブロックは、図３（ｂ）で前述した図２の補間回路２０６の動作に対応するコマンドの補間処理を実行する（ステップＳ６０５）。この処理では、前述したように、ステップＳ６０２で読み出されたコマンドに対し、制御回路２０１内のメモリに記憶されている前回生成されたコマンドとの比較に基づいて、図３（ｂ）で前述した制御情報が補間されることにより、コマンドが生成される。このようにして生成されたコマンドは、図２のバッファ制御部２０８に対応するＦＰＧＡブロックに出力される。
【００８０】
その後、図２の補間回路２０６に対応するＦＰＧＡブロックは、制御回路２０１内のメモリの記憶領域に、ステップＳ６０５での補間処理により生成したコマンドを、前回生成されたコマンドとして記憶する（ステップＳ６０６）。
【００８１】
その後、図２の補間回路２０６に対応するＦＰＧＡブロックから図２のバッファ制御部２０８及びノード制御部２０９に対応する各ＦＰＧＡブロックに制御が移る。バッファ制御部２０８に対応するＦＰＧＡブロックは、補間回路２０６に対応するＦＰＧＡブロックから入力されたコマンドを、ノード制御部２０９に引き渡す。ノード制御部２０９は、このコマンドに対して、既存の実行処理を行う（ステップＳ６０７）。この詳細については省略するが、概略は以下の通りである。まず、ノード制御部２０９のＦＰＧＡブロックは、コマンドが実行されるノード２０３を特定し、更に、ＪＴＡＧ制御回路２１０及びＩ２Ｃ制御回路２１１のうち、特定したノード２０３が接続される制御回路のＦＰＧＡブロックを判別する。ノード制御部２０９のＦＰＧＡブロックは、判別した制御回路のＦＰＧＡブロックを介して、特定したノード２０３にコマンドを発行する。ノード制御部２０９のＦＰＧＡブロックは、上記制御回路のＦＰＧＡブロックを介して、特定したノード２０３からのコマンド実行結果を待ち、必要な応答データを、ＳＰ２０２に返答する。
【００８２】
ノード制御部２０９のＦＰＧＡブロックは、ステップＳ６０７の処理の後、バッファ制御部２０８のＦＰＧＡブロックによるステップＳ６０２の処理に制御を戻す。この結果、バッファ部２０７に記憶されているコマンドリスト２１２内の次のコマンドに対する受信処理及び実行処理が、繰り返される。
【００８３】
図７は、並列処理装置の第３の実施形態のブロック図である。第３の実施形態は、前回コマンドの通信サイズと算出したコマンドサイズを比較し小さい方のコマンドフォーマットを選択する処理を含む装置である。第３の実施形態において、図２の第２の実施形態の場合と同じ番号を付した部分は、第２の実施形態の場合と同じ動作を行うものとする。
【００８４】
まず、図７において、＃１から＃８の８枚のボード２２０に２つずつ実装される＃１から＃１６の１６個のノード２０３の構成は、図２の第２の実施形態の場合と同様である。
【００８５】
次に、第３の実施形態における図７の制御回路２０１の構成について説明する。
図７の制御回路２０１においては、ＦＰＧＡによるコマンド記憶部２０４、バッファ部２０７、ノード制御部２０９、ＪＴＡＧ制御回路２１０、及びＩ２Ｃ制御回路２１１は、図２の第２の実施形態の場合と同様である。
【００８６】
図７の制御回路２０１で、フォーマット毎バッファ使用量カウンタ７０１と、選択部７０２と、第１コマンドタイプ判別部７０３、第１補間回路７０４、第２コマンドタイプ判別部７０５、及び第２補間回路７０６が、図２の第２の実施形態の場合と異なる。これらは、図２の第２の実施形態のコマンドタイプ判別部２０５及び補間回路２０６を置き換える。また、バッファ部２０７に記憶されるコマンドリスト７０９の構成が、図２の第２の実施形態の場合のコマンドリスト２１２と異なる。
【００８７】
フォーマット毎バッファ使用量カウンタ７０１（フォーマット別サイズ算出部）は、第１補間回路７０４又は第２補間回路７０６による補間処理の結果生成されコマンド記憶部２０４に順次記憶される一連のコマンドについて、次の処理を実行する。
【００８８】
フォーマット毎バッファ使用量カウンタ７０１は、今回以前（今回を含む）の回に生成された一連のコマンドを、後述する第１及び第２のコマンドフォーマットの各々でＳＰ２０２から制御回路２０１内のバッファ部２０７に順次送信したと仮定したときの各送信量を算出する。そして、フォーマット毎バッファ使用量カウンタ７０１は、上記各送信量に基づいて、第１及び第２のコマンドフォーマット毎の各サイズを算出する。
【００８９】
フォーマット選択部７０２は、フォーマット毎バッファ使用量カウンタ７０１が算出した各サイズに基づき所定のアルゴリズムで、第１のコマンドフォーマット又は第２のコマンドフォーマットの何れか１つを選択する。所定のアルゴリズムは例えば、「サイズが小さい方のコマンドフォーマットを選択する」である。
【００９０】
そして、フォーマット選択部７０２は、バッファ制御部２０８がバッファ部２０７に次回書き込まれるコマンドリスト７０９の読出しを指示したときに、次の動作を実行する。フォーマット選択部７０２は、その前の回に第１のコマンドフォーマットを選択していた場合には、バッファ部２０７から読み出される次回のコマンドリスト７０９の各コマンドを、第１補間回路７０４に入力させる。フォーマット選択部７０２は、その前の回に第２のコマンドフォーマットを選択していた場合には、バッファ部２０７から読み出される次回のコマンドリスト７０９の各コマンドを、第２補間回路７０６に入力させる。
【００９１】
第１補間回路７０４及び第１コマンドタイプ判別部７０３は、上述のように、フォーマット選択部７０２が第１のコマンドフォーマットを選択したときに動作する。
【００９２】
第１補間回路７０４内の第１コマンドタイプ判別部７０３は、バッファ制御部２０８の指示によりバッファ部２０７から順次読み出されるコマンドリスト７０９中のコマンドのコマンドタイプを、第１のコマンドフォーマットに従って判別する。この第１コマンドタイプ判別部７０３の動作は、コマンドフォーマットが第１のコマンドフォーマットに固定される以外は、図２の第２の実施形態におけるコマンドタイプ判別部２０５の動作と同様である。
【００９３】
第１補間回路７０４は、第１コマンドタイプ判別部７０３が判別したコマンドタイプに従って、次の動作を実行する。第１補間回路７０４は、コマンド記憶部２０４が記憶する前回生成されたコマンド中の制御情報を用いて、バッファ制御部２０８の指示により読み出されたコマンド中で省略されている制御情報を補間することにより、コマンドを生成する。そして、第１補間回路７０４は、生成したコマンドを、バッファ制御部２０８に出力する。この第１補間回路７０４の動作は、コマンドフォーマットが第１のコマンドフォーマットに固定される以外は、図２の第２の実施形態における補間回路２０６の動作と同様である。
【００９４】
第２補間回路７０６及び第２コマンドタイプ判別部７０５は、フォーマット選択部７０２が第１のコマンドフォーマットを選択したときに動作する。第２コマンドタイプ判別部７０５及び第２補間回路７０６の動作は、コマンドフォーマットが第２のコマンドフォーマットに変更になる以外は、第１コマンドタイプ判別部７０３及び第１補間回路７０４の動作と同様である。
【００９５】
ノード制御部２０９、ＪＴＡＧ制御回路２１０、及びＩ２Ｃ制御回路２１１の動作は、図２の第２の実施形態の場合と同様である。ノード制御部２０９は、バッファ制御部２０８から順次入力されるコマンドに基づき、そのコマンドによって制御されるべき制御対象となるノード２０３を、＃１から＃１６の複数のノードの中から特定する。ノード制御部２０９は、その特定した制御対象のノード２０３が、＃１から＃８のノード２０３のうちの何れかである場合にはＪＴＡＧ制御回路２１０を選択し、＃９から＃１６のノード２０３のうちの何れかである場合にはＩ２Ｃ制御回路２１１を選択する。そして、ノード制御部２０９は、選択したＪＴＡＧ制御回路２１０又はＩ２Ｃ制御回路２１１を介して、制御対象のノード２０３にコマンドの実行を指示する。
【００９６】
上述の構成のうち、フォーマット毎バッファ使用量カウンタ７０１とフォーマット選択部７０２の動作をまとめると、以下のようになる。
【００９７】
・「今回以前（今回を含む）の回に生成された一連のコマンドを第１のコマンドフォーマットのもとでＳＰ２０２から制御回路２０１内のバッファ部２０７に送信したと仮定したときのサイズ  ＜  今回以前（今回を含む）の回に生成された一連のコマンドを第２のコマンドフォーマットのもとでＳＰ２０２から制御回路２０１内のバッファ部２０７に送信したと仮定したときのサイズ」ならば、フォーマット選択部７０２が、第１のコマンドフォーマットに基づいて動作する第１コマンドタイプ判別部７０３及び第１補間回路７０４を選択。・・・（１）
【００９８】
・「今回以前（今回を含む）の回に生成された一連のコマンドを第１のコマンドフォーマットのもとでＳＰ２０２から制御回路２０１内のバッファ部２０７に送信したと仮定したときのサイズ  ≧  今回以前（今回を含む）の回に生成された一連のコマンドを第２のコマンドフォーマットのもとでＳＰ２０２から制御回路２０１内のバッファ部２０７に送信したと仮定したときのサイズ」ならば、フォーマット選択部７０２が、第２のコマンドフォーマットに基づいて動作する第２コマンドタイプ判別部７０５及び第２補間回路７０６を選択。・・・（２）
【００９９】
ここで、フォーマット毎バッファ使用量カウンタ７０１は、次のようにして第１のコマンドフォーマットに対応するサイズを算出してよい。フォーマット毎バッファ使用量カウンタ７０１は、今回以前の複数回の各回毎に、その回に生成された一連のコマンドに対して算出した第１のコマンドフォーマットのもとでの送信量に、その回に対応する所定の忘却係数を乗算し、その回の乗算結果を算出する。そして、フォーマット毎バッファ使用量カウンタ７０１は、上記各回毎に算出した乗算結果を複数回にわたって加算して得た加算結果を、第１のコマンドフォーマットに対応するサイズとして算出する。いま、今回生成された一連のコマンドに対して算出した第１のコマンドフォーマットのもとでの送信量をＳ10、今回に対応する所定の忘却係数を１とする。また、１回前に生成された一連のコマンドに対して算出した第１のコマンドフォーマットのもとでの送信量をＳ11、１回前に対応する所定の忘却係数をαとする。さらに、２回前に生成された一連のコマンドに対して算出した第１のコマンドフォーマットのもとでの送信量をＳ12、２回前に対応する所定の忘却係数をα2 とする。今回算出されるべき第１のコマンドフォーマットに対応するサイズをＳＩＺＥ1 とすれば、ＳＩＺＥ1 は、次式により算出される。
ＳＩＺＥ1 ＝Ｓ10＋Ｓ11×α＋Ｓ12×α2 ・・・（３）
【０１００】
同様に、フォーマット毎バッファ使用量カウンタ７０１は、次のようにして第２のコマンドフォーマットに対応するサイズを算出してよい。フォーマット毎バッファ使用量カウンタ７０１は、今回以前の複数回の各回毎に、その回に生成された一連のコマンドに対して算出した第２のコマンドフォーマットのもとでの送信量に、その回に対応する所定の忘却係数を乗算し、その回の乗算結果を算出する。そして、フォーマット毎バッファ使用量カウンタ７０１は、上記各回毎に算出した乗算結果を複数回にわたって加算して得た加算結果を、第２のコマンドフォーマットに対応するサイズとして算出する。いま、今回生成された一連のコマンドに対して算出した第２のコマンドフォーマットのもとでの送信量をＳ20、今回に対応する所定の忘却係数を１とする。また、１回前に生成された一連のコマンドに対して算出した第２のコマンドフォーマットのもとでの送信量をＳ21、１回前に対応する所定の忘却係数をαとする。さらに、２回前に生成された一連のコマンドに対して算出した第１のコマンドフォーマットのもとでの送信量をＳ22、２回前に対応する所定の忘却係数をα2 とする。今回算出されるべき第２のコマンドフォーマットに対応するサイズをＳＩＺＥ2 とすれば、ＳＩＺＥ2 は、次式により算出される。
ＳＩＺＥ2 ＝Ｓ20＋Ｓ21×α＋Ｓ22×α2 ・・・（４）
【０１０１】
フォーマット毎バッファ使用量カウンタ７０１が上述の（３）式及び（４）式に基づいて動作する場合、フォーマット選択部７０２は、次式に示される所定のアルゴリズムに基づいて、動作する。
ＳＩＺＥ1 ＜ＳＩＺＥ2 ならば、
第１のコマンドフォーマットに基づいて動作する、
第１コマンドタイプ判別部７０３及び第１補間回路７０４を選択・・・（５）
ＳＩＺＥ1 ≧ＳＩＺＥ2 ならば、
第２のコマンドフォーマットに基づいて動作する、
第２コマンドタイプ判別部７０５及び第２補間回路７０６を選択・・・（６）
【０１０２】
次に、第３の実施形態における図７のＳＰ２０２の構成について説明する。
ＳＰ２０２において、第２のコマンド記憶部２１３は、図２の第２の実施形態の場合と同様である。更に、ＳＰ２０２内のソフトウェア処理部である省略コマンド生成部２１４と送信コマンド生成部２１５は、図２の第２の実施形態の場合と同様である。
【０１０３】
一方、図７のＳＰ２０２は、図２の第２の実施形態の場合と異なり、新たにフォーマット決定部７０７を有する。フォーマット決定部７０７は、今回以前の回における、省略コマンド生成部２１４及び送信コマンド生成部２１５による送信処理前の一連のコマンドについて、次の処理を実行する。フォーマット決定部７０７は、今回以前の回の上記送信処理前一連のコマンドを、後述する第１及び第２のコマンドフォーマットの各々でＳＰ２０２から制御回路２０１内のバッファ部２０７に順次送信したと仮定したときの各送信量を算出する。そして、省略コマンド生成部２１４は、上記各送信量に基づいて、第１及び第２のコマンドフォーマット毎の各サイズを算出する。
【０１０４】
次に、フォーマット決定部７０７は、上記算出した各サイズに基づき、制御回路２０１内のフォーマット選択部７０２と同じ所定のアルゴリズムで、第１のコマンドフォーマット又は第２のコマンドフォーマットの何れか１つを決定する。
【０１０５】
その後、省略コマンド生成部２１４は、今回の次のコマンドリスト７０９に対応する送信処理前の一連のコマンドに対して、フォーマット決定部７０７が決定したコマンドフォーマットに従って、図２の第２の実施形態の場合と同様の処理を実行する。この結果、省略コマンド生成部２１４は、上記一連のコマンドのそれぞれについて、当該コマンド中の所定の制御情報を第２のコマンド記憶部２１３が記憶するコマンドに基づいて省略して得た一連の省略コマンドを生成する。
【０１０６】
次に、ＳＰ２０２内の送信コマンド生成部２１５は、フォーマット決定部７０７が決定したコマンドフォーマットに従って、上記一連の省略コマンドのそれぞれに上記省略の形態を示す情報をコマンドタイプとして付与した一連の送信コマンドを生成する。そして、送信コマンド生成部１０９は、これら一連の送信コマンドを、新たなコマンドリスト７０９として、制御回路２０１内のバッファ部２０７に対する１回のデバイスドライバ呼出しによって、バッファ部２０７に書き込む。
【０１０７】
上述の構成のうちフォーマット決定部７０７の動作をまとめると、以下のようになる。
【０１０８】
・「今回以前（今回を含む）の回における送信処理前の一連のコマンドを第１のコマンドフォーマットのもとでＳＰ２０２から制御回路２０１内のバッファ部２０７に送信したと仮定したときのサイズ  ＜  今回以前（今回を含む）の回における送信処理前の一連のコマンドを第２のコマンドフォーマットのもとでＳＰ２０２から制御回路２０１内のバッファ部２０７に送信したと仮定したときのサイズ」ならば、フォーマット決定部７０７が、第１のコマンドフォーマットを選択。・・・（７）
【０１０９】
・「今回以前（今回を含む）の回における送信処理前の一連のコマンドを第１のコマンドフォーマットのもとでＳＰ２０２から制御回路２０１内のバッファ部２０７に送信したと仮定したときのサイズ  ≧  今回以前（今回を含む）の回における送信処理前の一連のコマンドを第２のコマンドフォーマットのもとでＳＰ２０２から制御回路２０１内のバッファ部２０７に送信したと仮定したときのサイズ」ならば、フォーマット決定部７０７が、第２のコマンドフォーマットを選択。・・・（８）
【０１１０】
ここで、フォーマット決定部７０７は、次のようにして第１のコマンドフォーマットに対応するサイズを算出してよい。フォーマット決定部７０７は、今回以前の複数回の各回毎に、その回の送信処理前の一連のコマンドに対して算出した第１のコマンドフォーマットのもとでの送信量に、その回に対応する所定の忘却係数を乗算し、その回の乗算結果を算出する。そして、フォーマット毎バッファ使用量カウンタ７０１は、上記各回毎に算出した乗算結果を複数回にわたって加算して得た加算結果を、第１のコマンドフォーマットに対応するサイズとして算出する。いま、今回の送信処理前の一連のコマンドに対して算出した第１のコマンドフォーマットのもとでの送信量をｓ10、今回に対応する所定の忘却係数を１とする。また、１回前の回の送信処理前の一連のコマンドに対して算出した第１のコマンドフォーマットのもとでの送信量をｓ11、１回前に対応する所定の忘却係数をαとする。さらに、２回前の回の送信処理前の一連のコマンドに対して算出した第１のコマンドフォーマットのもとでの送信量をｓ12、２回前に対応する所定の忘却係数をα2 とする。今回算出されるべき第１のコマンドフォーマットに対応するサイズをｓｉｚｅ1 とすれば、ｓｉｚｅ1 は、次式により算出される。
ｓｉｚｅ1 ＝ｓ10＋ｓ11×α＋ｓ12×α2 ・・・（９）
【０１１１】
同様に、フォーマット毎バッファ使用量カウンタ７０１は、次のようにして第２のコマンドフォーマットに対応するサイズを算出してよい。フォーマット毎バッファ使用量カウンタ７０１は、今回以前の複数回の各回毎に、その回の送信処理前の一連のコマンドに対して算出した第２のコマンドフォーマットのもとでの送信量に、その回に対応する所定の忘却係数を乗算し、その回の乗算結果を算出する。そして、フォーマット毎バッファ使用量カウンタ７０１は、上記各回毎に算出した乗算結果を複数回にわたって加算して得た加算結果を、第２のコマンドフォーマットに対応するサイズとして算出する。いま、今回の送信処理前の一連のコマンドに対して算出した第２のコマンドフォーマットのもとでの送信量をｓ20、今回に対応する所定の忘却係数を１とする。また、１回前の回の送信処理前の一連のコマンドに対して算出した第２のコマンドフォーマットのもとでの送信量をｓ21、１回前に対応する所定の忘却係数をαとする。さらに、２回前の回の送信処理前の一連のコマンドに対して算出した第１のコマンドフォーマットのもとでの送信量をｓ22、２回前に対応する所定の忘却係数をα2 とする。今回算出されるべき第２のコマンドフォーマットに対応するサイズをｓｉｚｅ2 とすれば、ＳＩＺＥ2 は、次式により算出される。
ｓｉｚｅ2 ＝ｓ20＋ｓ21×α＋ｓ22×α2 ・・・（１０）
【０１１２】
フォーマット決定部７０７は、上述の（９）式及び（１０）式に基づいて動作する場合、次式に示される所定のアルゴリズムに基づいて、動作する。
ｓｉｚｅ1 ＜ｓｉｚｅ2 ならば、
第１のコマンドフォーマットを選択・・・（１１）
ｓｉｚｅ1 ≧ｓｉｚｅ2 ならば、
第２のコマンドフォーマットを選択・・・（１２）
【０１１３】
上記（７）式から（１２）式に基づくＳＰ２０２内のフォーマット決定部７０７の動作を、前述の（１）式から（６）式に基づく制御回路２０１内のフォーマット毎バッファ使用量カウンタ７０１及びフォーマット選択部７０２と比較すると、次のことがわかる。
【０１１４】
まず、制御回路２０１内のフォーマット毎バッファ使用量カウンタ７０１及びフォーマット選択部７０２による（１）、（２）式の動作と、ＳＰ２０２内のフォーマット決定部７０７による（７）、（８）式の動作は、全く同じである。つまり、同じ決定論理に基づいて、コマンドフォーマットを選択している。
【０１１５】
更に具体的には、（９）、（１０）式において、ｓ10は、ＳＰ２０２での今回の送信処理前の一連のコマンドに対して第１のコマンドフォーマットのもとで送信コマンドを生成したと仮定した場合の送信量である。一方、（３）、（４）式において、Ｓ10は、制御回路２０１で今回生成された一連のコマンドに対してＳＰ２０２側で第１のコマンドフォーマットのもとで送信コマンドを生成したと仮定した場合の送信量である。従って、上述の２つの送信量ｓ10とＳ10は、同じ値となる。これと同じ理由によって、２つの送信量ｓ11とＳ11及びｓ12とＳ12はそれぞれ、同じ値となる。更に、２つの送信量ｓ20とＳ20、ｓ21とＳ21及びｓ22とＳ22はそれぞれ、同じ値となる。
【０１１６】
従って、制御回路２０１で（３）式で算出される今回算出されるべき第１のコマンドフォーマットに対応するサイズＳＩＺＥ1 と、ＳＰ２０２で（９）式で算出される今回算出されるべき第１のコマンドフォーマットに対応するサイズｓｉｚｅ1 は、同じ値となる。同様に、制御回路２０１で（４）式で算出される今回算出されるべき第２のコマンドフォーマットに対応するサイズＳＩＺＥ2 と、ＳＰ２０２で（１０）式で算出される今回算出されるべき第１のコマンドフォーマットに対応するサイズｓｉｚｅ2 も、同じ値となる。これにより、コマンドリスト７０９の各回の通信毎に、（５）式及び（６）式に基づいて制御回路２０１側で選択されるコマンドフォーマットと、（１１）及び（１２）式に基づいてＳＰ２０２側で選択されるコマンドフォーマットは、同一となる。つまり、ＳＰ２０２内のフォーマット決定部７０７は、制御回路２０１内のフォーマット毎バッファ使用量カウンタ７０１及びフォーマット選択部７０２と同じ所定のアルゴリズムに従って全く同じコマンドフォーマットの選択処理を実行することがわかる。
【０１１７】
以上のようにして、図７の構成を有する第３の実施形態では、次のことが実現される。ＳＰ２０２から制御回路２０１にコマンドリスト７０９を送信する場合に、コマンドリスト７０９のサイズが最小となるように、図３（ｂ）の第１のコマンドフォーマットと図８の第２のコマンドフォーマットを動的に変更することが可能となる。この場合、送信されるコマンドリスト７０９内にコマンドフォーマット切替えのための情報を含ませる必要なく、ＳＰ２０２と制御回路２０１のそれぞれでコマンドリスト７０９のサイズが最小となるようにコマンドフォーマットを同期して切り替えることができる。
【０１１８】
図７の第３の実施形態における具体的なコマンドフォーマットと動作例について、以下に説明する。
【０１１９】
図７の第３の実施形態において、ＳＰ２０２から制御回路２０１内のバッファ部２０７にコマンドリスト２１２として書き込まれる各コマンドのコマンドフォーマットにおいて、第１のコマンドフォーマットは、前述した図３（ｂ）のコマンドフォーマットと同様である。
【０１２０】
これに加えて、第３の実施形態では、図８に示される第２のコマンドフォーマットが、選択的に使用される。図８の第２のコマンドフォーマットにおいて、コマンドをＡ．及びＢ１．からＢＸ．の複数の制御情報フィールドに分類する形式は、図３（ｂ）の第１のコマンドフォーマットの場合と同様である。
【０１２１】
第３の実施形態では、図３（ｂ）に示される第１のコマンドフォーマットと図８に示される第２のコマンドフォーマットの２つのコマンドフォーマットを用いて、図７のＳＰ２０２及び制御回路２０１において、以下に説明する処理が実行される。以下、ＳＰ２０２及び制御回路２０１の動作例について、第３の実施形態の動作例を示す図９及び図１０のシーケンス図を用いながら説明する。図９及び図１０において、「ＣＦ」はコマンドフォーマットを表し、ＣＦ１は第１のコマンドフォーマット、ＣＦ２は第２のコマンドフォーマットを、それぞれ表す。「Ｃ＃ｉｊ」（ｉ、ｊは０及び自然数）は、ｉ＋１回目のコマンドリスト７０９内のｊ＋１番目のコマンドを表す。例えば図９のＳ９０２において、Ｃ＃００、Ｃ＃０１、Ｃ＃０２はいずれも、ｉ＝０であるからｉ＋１＝１回目のコマンドリスト７０９中のコマンドを表している。また、Ｃ＃００はｊ＝０であるからｊ＋１＝１番目のコマンド、Ｃ＃０１はｊ＝１であるからｊ＋１＝２番目のコマンド、Ｃ＃０２はｊ＝２であるからｊ＋１＝３番目のコマンドを表している。また、例えば図１０のＳ９１３において、Ｃ＃１０、Ｃ＃１１、Ｃ＃１２はいずれも、ｉ＝１であるからｉ＋１＝２回目のコマンドリスト７０９中のコマンドを表している。「ＤＣ１」、「ＡＳＣ１−１」、及び「ＡＳＣ１−３」はそれぞれ、図３（ｂ）の第１のコマンドフォーマットでの、ダイレクトコマンド１、アドレススキップコマンド１−１、及びアドレススキップコマンド１−３を表す。「ＡＳＣ２」は、図８の第２のコマンドフォーマットでの、アドレススキップコマンド２を表す。ＣＬ＃ｉは、ｉ＋１回目のコマンドリスト７０９を表す。例えば図９のＳ９０３において、ＣＬ＃０は、ｉ＝０であるから、ｉ＋１＝１回目のコマンドリスト７０９である。また、例えば図１０のＳ９１４において、ＣＬ＃１は、ｉ＝１であるから、ｉ＋１＝２回目のコマンドリスト７０９である。
【０１２２】
始めに、図７のＳＰ２０２の動作について説明する。
まず第１回目のコマンドリスト７０９の送信時は、ＳＰ２０２内の省略コマンド生成部２１４は、省略コマンドの生成処理のデフォルトのコマンドフォーマットとして、例えば図８に示される第２のコマンドフォーマット（ＣＦ２）を選択する（図９のＳ９０１）。
【０１２３】
図７において、省略コマンド生成部２１４は、第２のコマンドフォーマット（ＣＦ２）に従って、図２の第２の実施形態における省略コマンド生成部２１４の場合と同様の動作を実行する。省略コマンド生成部２１４は、送信するコマンドについて、第２のコマンドフォーマット（ＣＦ２）に従って、第２のコマンド記憶部２１３が記憶する前回送信されたコマンドの処理前の元のコマンドに対して、制御情報のうちどれが一致しているかを比較する。第２のコマンドフォーマット（ＣＦ２）のもとでの制御情報は、図８に示されるように、第１のコマンドフォーマット（ＣＦ１）に対応する第２の実施形態で前述した図３（ｂ）と同様の、Ａ．，Ｂ１，Ｂ２，・・・，ＢＸのうちれの何れかである。
【０１２４】
第２のコマンドフォーマット（ＣＦ２）のもとでの上記比較の結果、第１のケースとして、前回のコマンドと、Ｂ１．からＢＸ．までの制御情報が一致する場合には、省略コマンド生成部２１４は、次の処理を実行する。省略コマンド生成部２１４は、図８の［アドレススキップコマンド２］として示されるように、送信するコマンドにおいてＢ１．からＢＸ．までの制御情報を省略した形式のコマンドを出力する。
【０１２５】
第２のコマンドフォーマット（ＣＦ２）のもとでの上記比較の結果、上記の第１のケース以外のケースである第２のケースの場合には、省略コマンド生成部２１４は、次の処理を実行する。省略コマンド生成部２１４は、図３（ａ）の従来例の場合と同様に、図８の［ダイレクトコマンド２］として示されるように、送信するコマンドにおいてどの制御情報も省略しない形式のコマンドを出力する。
【０１２６】
省略コマンド生成部２１４が実行する図９のＳ９０２の例では、まず１回目のコマンドリスト７０９＝ＣＬ＃０のための１番目のコマンドＣ＃００がＳＰ２０２が実行するプログラムを介してＳＰ２０２内の特には図示しないメモリにロードされる。始めは、第２のコマンド記憶部２１３にはコマンドは記憶されていない。このため、図８の第２のコマンドフォーマット（ＣＦ２）に従って、Ｃ＃００に対しては、省略コマンドとして「ダイレクトコマンド２」（ＤＣ２）が決定される。第２のコマンド記憶部２１３には、Ｃ＃００が記憶される。
【０１２７】
次に、１回目のコマンドリスト７０９＝ＣＬ＃０のための２番目のコマンドＣ＃０１がロードされる。このＣ＃０１が、図８の第２のコマンドフォーマット（ＣＦ２）に従って、第２のコマンド記憶部２１３に記憶されているＣ＃００に対してアドレススキップ可能か否かが比較され、例えば図８のＢ１．からＢＸ．までの制御情報が一致する。この結果、Ｃ＃０１に対しては、これらの制御情報に関するアドレススキップが可能となって、省略コマンドとして図８の「アドレススキップコマンド２」（ＡＳＣ２）が決定される。第２のコマンド記憶部２１３には、Ｃ＃０１が記憶される。
【０１２８】
更に、１回目のコマンドリスト７０９＝ＣＬ＃０のための３番目のコマンドＣ＃０２がロードされる。このＣ＃０２が、図８の第２のコマンドフォーマット（ＣＦ２）に従って、第２のコマンド記憶部２１３に記憶されているＣ＃０１に対してアドレススキップ可能か否かが比較され、例えば図８のＢ１．からＢＸ．までの制御情報のうちの何れかが一致しない。この結果、Ｃ＃０２に対しては、省略コマンドとして図８の「ダイレクトコマンド２」（ＤＣ２）が決定される。第２のコマンド記憶部２１３には、Ｃ＃０２が記憶される。
【０１２９】
上述の第１回目のコマンドリスト７０９＝ＣＬ＃０に対応する省略コマンド生成部２１４の動作の後、ＳＰ２０２内の送信コマンド生成部２１５は、図８の第２のコマンドフォーマットに従って、次の動作を実行する。
【０１３０】
省略コマンド生成部２１４が前述した図８の［ダイレクトコマンド２］として示される省略の形態の省略コマンドを出力した場合には、送信コマンド生成部２１５は、次の処理を実行する。送信コマンド生成部２１５は、図８のｂｉｔ［０］として示される先頭の１ビットに、ダイレクトコマンド２を示すコマンドタイプ値「０ｘ０」が付加されたコマンドを生成する。送信コマンド生成部２１５は更に、このコマンドの２ビット目以降に、省略コマンド生成部２１４が生成した図８の［ダイレクトコマンド２］として示されるコマンド内容を付加する。送信コマンド生成部２１５は、このようにして生成したコマンドタイプ＋［ダイレクトコマンド２］を、コマンドリスト７０９を構成する一つの送信コマンドとして内部に保持する。
【０１３１】
省略コマンド生成部２１４が前述した図８の［アドレススキップコマンド２］として示される省略の形態の省略コマンドを出力した場合には、送信コマンド生成部２１５は、次の処理を実行する。送信コマンド生成部２１５は、図８のｂｉｔ［０］として示される先頭の１ビットに、アドレススキップコマンド２を示すコマンドタイプ値「０ｘ１」が付加されたコマンドを生成する。送信コマンド生成部７０７は更に、このコマンドの２ビット目以降に、省略コマンド生成部２１４生成した図８の［アドレススキップコマンド２］として示されるコマンド内容を付加する。送信コマンド生成部２１５は、このようにして生成したコマンドタイプ＋［アドレススキップコマンド２］を、コマンドリスト７０９を構成する一つの送信コマンドとして内部に保持する。
【０１３２】
図９の例において、３つのコマンドＣ＃００、Ｃ＃０１、Ｃ＃０２に対応する各省略コマンドによって１回目のコマンドリスト７０９＝ＣＬ＃０が決定されるとする。この結果、ＣＬ＃０の内容は、例えば図９のＳ９０３に示される内容となる。まず、Ｃ＃００の省略コマンドは、ダイレクトコマンド２（ＤＣ２）になり、先頭１ビット（図８のｂｉｔ［０］）にＤＣ２を表すコマンドタイプ値「０ｘ０」が設定された、計１００ビット（ｂｉｔ）のコマンドとなる。また、Ｃ＃０１の省略コマンドは、アドレススキップコマンド２（ＡＳＣ２）になり、先頭１ビット（図８のｂｉｔ［０］）にＡＳＣ２を表すコマンドタイプ値「０ｘ１」が設定されてた、合計５０ビットのコマンドとなる。更に、Ｃ＃０２の省略コマンドは、ダイレクトコマンド２（ＤＣ２）になり、先頭１ビット（図８のｂｉｔ［０］）にＤＣ２を表すコマンドタイプ値「０ｘ０」が設定された、計１００ビットのコマンドとなる。
【０１３３】
省略コマンド生成部２１４による上記省略コマンド生成処理及び送信コマンド生成部２１５による上記送信コマンド生成処理が送信対象の全てのコマンドに対して完了すると、送信コマンド生成部２１５は、次の処理を実行する。送信コマンド生成部２１５は、内部に保持していた全ての送信コマンドを、制御回路２０１内のバッファ部２０７に対する１回のデバイスドライバ呼出しによって、コマンドリスト７０９として、バッファ部２０７に書き込む。
【０１３４】
図９の例では、Ｓ９０３のようにして第２のコマンドフォーマット（ＣＦ２）に従って生成された１回目のコマンドリスト７０９＝ＣＬ＃０が、ＳＰ２０２内の特には図示しないメモリから制御回路２０１内のバッファ部２０７に転送される（図９のＳ９０４）。
【０１３５】
続いて、フォーマット決定部７０７は、上述のように第１回目のコマンドリスト７０９を送信した後、その第１回目の送信処理前の一連のコマンドについて、次の処理を実行する。
【０１３６】
まず、フォーマット決定部７０７は、第１回目のコマンドリスト７０９が送信されたときの図８の第２のコマンドフォーマット（ＣＦ２）に対応する送信量を算出する。図９のＳ９０３の例では、Ｃ＃００、Ｃ＃０１、及びＣ＃０２の３つのコマンドに対応する第１回目のコマンドリスト７０９＝ＣＬ＃０の送信量は、１００＋５０＋１００＝２５０ビットである。従って、第１回目のコマンドリスト７０９が送信されたときの第２のコマンドフォーマット（ＣＦ２）に対応する送信量は、２５０ビットと算出される。フォーマット決定部７０７は、このようにして算出した送信量に基づいて、前述した（１０）式に従って、第１回目のコマンドリスト７０９を第２のコマンドフォーマット（ＣＦ２）で制御回路２０１に順次送信したときのサイズｓｉｚｅ2 を算出する。（１０）式において、今回の送信処理前の一連のコマンドに対して算出した第２のコマンドフォーマット（ＣＦ２）のもとでの送信量ｓ20は、上述の図９のＳ９０３で算出される２５０ビットである。また、今回は第１回目のコマンドリスト７０９の送信であるから、第２のコマンドフォーマット（ＣＦ２）のもとでの１回前の回の送信量ｓ21と２回前の回の送信量ｓ22は、共に０である。また例えばα＝０．９とする。従って、（１０）式により、
ｓｉｚｅ2 ＝ｓ20＋ｓ21×α＋ｓ22×α2 
＝２５０＋０×０．９＋０×０．９2 ＝２５０ビット・・・（１３）
として、第１回目である今回のコマンドリスト７０９が送信されたときの図８の第２のコマンドフォーマット（ＣＦ２）に対応する送信量ｓｉｚｅ2 が算出される。
【０１３７】
次に、フォーマット決定部７０７は、送信処理前の一連のコマンドに対して、図３（ｂ）の第１のコマンドフォーマット（ＣＦ１）で制御回路２０１に順次送信を行ったと仮定したときの送信量を算出する。具体的には、フォーマット決定部７０７は、図３（ｂ）の第１のコマンドフォーマット（ＣＦ１）に従って、送信処理前の一連のコマンドＣ＃００、Ｃ＃０１、Ｃ＃０２に対し、再度省略コマンド生成部２１４及び送信コマンド生成部２１５を動作させる。ただし、この場合には、送信コマンド生成部２１５は、実際の送信処理は実行せずに、送信量を算出する処理のみを実行する。この結果、例えば図９のＳ９０５のように、まずＣ＃００の省略コマンドは、図３（ｂ）のダイレクトコマンド２（ＤＣ１）になり、先頭２ビット（図３（ｂ）のｂｉｔ［０：１］）にＤＣ１を表すコマンドタイプ値「０ｘ０」が設定され、計１０１ビットのコマンドが生成される。また、Ｃ＃０１の省略コマンドは、図３（ｂ）のアドレススキップコマンド１−３（ＡＳＣ１−３）になり、先頭２ビット（図３（ｂ）のｂｉｔ［０：１］）にＡＳＣ１−３を表すコマンドタイプ値「０ｘ３」が設定され、合計５１ビットのコマンドが生成される。更に、Ｃ＃０２の省略コマンドは、図３（ｂ）のアドレススキップコマンド１−１（ＡＳＣ１−１）になり、先頭２ビット（図３（ｂ）のｂｉｔ［０：１］）にＡＳＣ１−１を表すコマンドタイプ値「０ｘ１」が設定され、計９０ビットのコマンドが生成される。以上の処理の結果、図９のＳ９０５の例では、第１のコマンドフォーマット（ＣＦ１）に基づいて処理された、Ｃ＃００、Ｃ＃０１、及びＣ＃０２の３つのコマンドに対応する一連のコマンドの送信量は、１０１＋５１＋９０＝２４２ビットと算出される。フォーマット決定部７０７は、このようにして算出した送信量に基づき、前述した（９）式に従って、第１回目のコマンドリスト７０９を第１のコマンドフォーマット（ＣＦ１）で制御回路２０１に順次送信したと仮定したときのサイズｓｉｚｅ1 を算出する。（９）式において、今回の処理前の一連のコマンドに対し算出した第１のコマンドフォーマット（ＣＦ１）のもとでの送信量ｓ10は、上述の図９のＳ９０５で算出される２４２ビットである。また今回は第１回目のコマンドリスト７０９の送信であるから、第１のコマンドフォーマット（ＣＦ１）のもとでの１回前の回の送信量ｓ21と２回前の回の送信量ｓ22は、共に０である。また例えばα＝０．９とする。従って、（９）式により、
ｓｉｚｅ1 ＝ｓ10＋ｓ11×α＋ｓ12×α2 
＝２４２＋０×０．９＋０×０．９2 ＝２４２ビット・・・（１４）
として、第１回目である今回のコマンドリスト７０９が送信されたと仮定されたときの図３（ｂ）の第１のコマンドフォーマット（ＣＦ１）に対応する送信量ｓｉｚｅ1 が算出される。
【０１３８】
上記算出処理の後、フォーマット決定部７０７は、第１のコマンドフォーマット（ＣＦ１）に対応するサイズｓｉｚｅ1 と第２のコマンドフォーマット（ＣＦ２）に対応するサイズｓｉｚｅ2 のうち小さいほうのサイズに対応するコマンドフォーマットを選択する。上述の（１３）式及び（１４）式より、図９のＳ９０６に示されるように、ＣＦ１に対応するサイズｓｉｚｅ1 ＝２４２ビット、ＣＦ２に対応するサイズｓｉｚｅ2 ＝２５０ビットである。このため、フォーマット決定部７０７は、前述した（１１）式の決定論理に基づいて、第１のコマンドフォーマット（ＣＦ１）を選択する。この結果、コマンドフォーマットが、第２のコマンドフォーマット（ＣＦ２）から第１のコマンドフォーマット（ＣＦ１）に変更される。
【０１３９】
続いて、第２回目のコマンドリスト７０９＝ＣＬ＃１の送信時の動作について説明する。
【０１４０】
この場合、省略コマンド生成部２１４は、第１回目のコマンドリスト７０９＝ＣＬ＃０の送信時にフォーマット決定部７０７が決定した第１のコマンドフォーマット（ＣＦ１）に従って、省略コマンドの生成処理を実行する（図９のＳ９０６→図１０のＳ９１３）。この処理は、第２の実施形態の説明において、図３（ｂ）を用いて前述した通りである。
【０１４１】
この結果、省略コマンド生成部２１４が実行する図１０のＳ９１３では、まず２回目のコマンドリスト７０９＝ＣＬ＃１のための１番目のコマンドＣ＃１０が、ＳＰ２０２が実行するプログラムを介してＳＰ２０２内の特には図示しないメモリにロードされる。このＣ＃１０が、図３（ｂ）の第１のコマンドフォーマット（ＣＦ１）に従い、前回の処理で第２のコマンド記憶部２１３に記憶されているＣ＃１０に対しアドレススキップ可能か否かが比較され、例えば図３（ｂ）のＢ１．からＢＸ．までの制御情報が一致する。この結果、Ｃ＃１０に対しては、これらの制御情報に関するアドレススキップが可能となって、省略コマンドとして「アドレススキップコマンド１−３」（ＡＳＣ１−３）が決定される。第２のコマンド記憶部２１３には、Ｃ＃１０が記憶される。
【０１４２】
次に、２回目のコマンドリスト７０９＝ＣＬ＃１のための２番目のコマンドＣ＃０１がロードされる。このＣ＃０１が、図３（ｂ）の第１のコマンドフォーマット（ＣＦ１）に従って、第２のコマンド記憶部２１３に記憶されているＣ＃１０に対してアドレススキップ可能か否かが比較され、例えば図８のＢ１．からＢＸ．までの制御情報が一致する。この結果、Ｃ＃０１に対しても、これらの制御情報に関するアドレススキップが可能となって、省略コマンドとして「アドレススキップコマンド１−３」（ＡＳＣ１−３）が決定される。第２のコマンド記憶部２１３には、Ｃ＃１１が記憶される。
【０１４３】
更に、２回目のコマンドリスト７０９＝ＣＬ＃１のための３番目のコマンドＣ＃１２がロードされる。このＣ＃１２が、図３（ｂ）の第１のコマンドフォーマット（ＣＦ１）に従って、第２のコマンド記憶部２１３に記憶されているＣ＃１１に対してアドレススキップ可能か否かが比較され、例えば図３（ｂ）のＢ１．からＢＸ．までの制御情報が一致する。この結果、Ｃ＃１２に対しても、これらの制御情報に関するアドレススキップが可能となって、省略コマンドとして「アドレススキップコマンド１−３」（ＡＳＣ１−３）が決定される。第２のコマンド記憶部２１３には、Ｃ＃１２が記憶される。
【０１４４】
上述の第２回目のコマンドリスト７０９＝ＣＬ＃１に対応する省略コマンド生成部２１４の動作に対して、ＳＰ２０２内の送信コマンド生成部２１５は、図３（ｂ）の第１のコマンドフォーマットに従って、送信コマンドの生成処理を実行する。この処理は、第２の実施形態の説明において、図３（ｂ）を用いて前述した通りである。
【０１４５】
図１０の例において、３つのコマンドＣ＃１０、Ｃ＃１１、Ｃ＃１２に対応する各省略コマンドによって２回目のコマンドリスト７０９＝ＣＬ＃１が決定されるとする。この結果、ＣＬ＃１の内容は、例えば図１０のＳ９１４に示される内容となり、Ｃ＃１０、Ｃ＃１１、Ｃ＃１２の何れの省略コマンドも、アドレススキップコマンド１−３（ＡＳＣ１−３）になる。それぞれの先頭２ビット（図３（ｂ）のｂｉｔ［０：１］）にＡＳＣ１−３を表すコマンドタイプ値「０ｘ３」が設定された、それぞれ計５１ビットのコマンドが生成される。
【０１４６】
省略コマンド生成部２１４による上記省略コマンド生成処理及び送信コマンド生成部２１５による上記送信コマンド生成処理が送信対象の全てのコマンドに対して完了すると、送信コマンド生成部２１５は、次の処理を実行する。送信コマンド生成部２１５は、内部に保持していた全ての送信コマンドを、制御回路２０１内のバッファ部２０７に対する１回のデバイスドライバ呼出しによって、コマンドリスト７０９として、バッファ部２０７に書き込む。
【０１４７】
図１０では、Ｓ９１４のようにして第１のコマンドフォーマット（ＣＦ１）に従って生成された２回目のコマンドリスト７０９＝ＣＬ＃１が、ＳＰ２０２内の特には図示しないメモリから制御回路２０１内のバッファ部２０７に転送される（図１０のＳ９１５）。
【０１４８】
続いて、フォーマット決定部７０７は、上述のように第２回目のコマンドリスト７０９を送信した後、その第２回目の送信処理前の一連のコマンドについて、次の処理を実行する。
【０１４９】
まず、フォーマット決定部７０７は、第２回目のコマンドリスト７０９が送信されたときの図３（ｂ）の第１のコマンドフォーマット（ＣＦ１）に対応する送信量を算出する。図１０のＳ９１４の例では、Ｃ＃１０、Ｃ＃１１、及びＣ＃１２の３つのコマンドに対応する第２回目のコマンドリスト７０９＝ＣＬ＃１の送信量は、５１＋５１＋５１＝１５３ビットである。従って、第２回目のコマンドリスト７０９が送信されたときの第１のコマンドフォーマット（ＣＦ１）に対応する送信量は、１５３ビットと算出される。フォーマット決定部７０７は、このようにして算出した送信量に基づいて、前述した（９）式に従って、第２回目のコマンドリスト７０９を第１コマンドフォーマット（ＣＦ１）で制御回路２０１に順次送信したときのサイズｓｉｚｅ1 を算出する。（９）式において、今回の送信処理前の一連のコマンドに対して算出した第１のコマンドフォーマット（ＣＦ１）のもとでの送信量ｓ10は、上述の図１０のＳ９１４で算出される１５３ビットである。また、今回は第２回目のコマンドリスト７０９の送信であるから、第１のコマンドフォーマット（ＣＦ１）のもとでの１回前の第１回目の送信量ｓ11は図９のＳ９０５で算出された２４２ビットであり、２回前の回の送信量ｓ12は０である。また例えばα＝０．９とする。従って、（９）式により、
ｓｉｚｅ1 ＝ｓ10＋ｓ11×α＋ｓ12×α2 
＝１５３＋２４２×０．９＋０×０．９2 ≒３７０．８ビット・・・（１５）
として、第２回目である今回のコマンドリスト７０９が送信されたときの図３（ｂ）の第１のコマンドフォーマット（ＣＦ１）に対応する送信量ｓｉｚｅ1 が算出される。
【０１５０】
次に、フォーマット決定部７０７は、送信処理前の一連のコマンドＣ＃１０、Ｃ＃１１、Ｃ＃１２に対して、図８の第２のコマンドフォーマット（ＣＦ２）で制御回路２０１に順次送信を行ったと仮定したときの送信量を算出する。具体的には、フォーマット決定部７０７は、図８の第２のコマンドフォーマット（ＣＦ２）に従って、送信処理前の一連のコマンドＣ＃１０、Ｃ＃１１、Ｃ＃１２に対し、再度省略コマンド生成部２１４及び送信コマンド生成部２１５を動作させる。ただし、この場合には、送信コマンド生成部２１５は、実際の送信処理は実行せずに、送信量を算出する処理のみを実行する。この結果、例えば図１０のＳ９１６のように、Ｃ＃１０、Ｃ＃１１、及びＣ＃１２の何れの省略コマンドも、図８のアドレススキップコマンド２（ＡＳＣ２）となり、先頭１ビット（図８のｂｉｔ［０］）にＡＳＣ２を表すコマンドタイプ値「０ｘ１」が設定される。これにより、各省略コマンドとも計５１ビットのコマンドが生成される。以上の処理の結果、図１０のＳ９１６の例では、第２のコマンドフォーマット（ＣＦ２）に基づいて処理された、Ｃ＃１０、Ｃ＃１１、及びＣ＃１２の３つのコマンドに対応する一連のコマンドの送信量は、５１＋５１＋５１＝１５３ビットと算出される。フォーマット決定部７０７は、このようにして算出した送信量に基づいて、前述した（１０）式に従って、第２回目のコマンドリスト７０９を第２のコマンドフォーマット（ＣＦ２）で制御回路２０１に順次送信したと仮定したときのサイズｓｉｚｅ2 を算出する。（１０）式において、今回の処理前の一連のコマンドに対し算出した第２のコマンドフォーマット（ＣＦ２）のもとでの送信量ｓ20は、上述の図１０のＳ９１６で算出される１５３ビットである。また、今回は第２回目のコマンドリスト７０９の送信であるから、第２のコマンドフォーマット（ＣＦ２）のもとでの１回前の第１回目の送信量ｓ21は図９のＳ９０３で算出された２５０ビットであり、２回前の回の送信量ｓ22は０である。また例えばα＝０．９とする。従って、（１０）式により、
ｓｉｚｅ2 ＝ｓ20＋ｓ21×α＋ｓ22×α2 
＝１５３＋２５０×０．９＋０×０．９2 ＝３７５ビット・・・（１６）
として、第２回目である今回のコマンドリスト７０９が送信されたと仮定されたときの図８の第２のコマンドフォーマット（ＣＦ２）に対応する送信量ｓｉｚｅ2 が算出される。
【０１５１】
上記算出処理の後、フォーマット決定部７０７は、第１のコマンドフォーマット（ＣＦ１）に対応するサイズｓｉｚｅ1 と第２のコマンドフォーマット（ＣＦ２）に対応するサイズｓｉｚｅ2 のうち小さいほうのサイズに対応するコマンドフォーマットを選択する。上述の（１５）式及び（１６）式より、図１０のＳ９１７に示されるように、ＣＦ１に対応するサイズｓｉｚｅ1 ＝３７０．８ビット、ＣＦ２に対応するサイズｓｉｚｅ2 ＝３７５ビットである。このため、フォーマット決定部７０７は、前述した（１１）式の決定論理に基づいて、第１のコマンドフォーマット（ＣＦ１）を選択する。この結果、コマンドフォーマットとしては、第１のコマンドフォーマット（ＣＦ１）が維持される。
【０１５２】
次に、図７の制御回路２０１の動作について説明する。
まず第１回目のコマンドリスト７０９の送信時は、図７の制御回路２０１内のコマンドフォーマット選択部７０２は、コマンド生成処理のデフォルトのコマンドフォーマットとして、例えば図８に示される第２のコマンドフォーマット（ＣＦ２）を選択する。この結果、コマンドフォーマット選択部７０２は、第２コマンドタイプ判別部７０５及び第２補間回路７０６を動作させる（以上、図９のＳ９０７）。
【０１５３】
図７において、第２補間回路７０６内の第２コマンドタイプ判別部７０５は、バッファ制御部２０８の指示によりバッファ部２０７から順次読み出される第１回目のコマンドリスト７０９中の各コマンドのコマンドタイプを、第２のコマンドフォーマットに従って判別する。
【０１５４】
第２補間回路７０６は、第２コマンドタイプ判別部７０５が判別したコマンドタイプに従って、次の動作を実行する。第２補間回路７０６は、コマンド記憶部２０４が記憶する前回生成されたコマンド中の制御情報を用いて、バッファ制御部２０８の指示により読み出されたコマンド中で省略されている制御情報を補間することにより、コマンドを生成する。そして、第２補間回路７０６は、生成したコマンドを、バッファ制御部２０８に出力する。
【０１５５】
図７において、バッファ制御部２０８に送られたコマンドは、ノード制御部２０９によって解析され、制御対象となるノード２０３が＃１から＃１６の複数のノードの中から特定される。ノード制御部２０９は、上記コマンドを、特定したノード２０３に、ＪＴＡＧ制御回路２１０又はＩ２Ｃ制御回路２１１を介して送信する。特定されたノード２０３は、受信したコマンドを実行し、必要に応じてその応答を、ＪＴＡＧ制御回路２１０又はＩ２Ｃ制御回路２１１を介してノード制御部２０９に返す。
【０１５６】
図９の例では、ＳＰ２０２からバッファ部２０７には、コマンドリスト７０９として、第１回目のコマンドリストＣＬ＃０が書き込まれている（図９のＳ９０３→Ｓ９０４）。これに対して、第２コマンドタイプ判別部７０５及び第２補間回路７０６は、ＣＬ＃０中の各省略コマンドから制御情報が補間された各コマンドを順次生成、そのコマンドを解析し、ノード２０３に対して実行させる処理を順次実行する（図９のステップＳ９０８）。
【０１５７】
具体的にはまず、バッファ制御部２０８の指示によりバッファ部２０７内のＣＬ＃０から１番目のコマンドＣ＃００に対応する省略コマンドが読み出され、その省略コマンドがフォーマット選択部７０２を介して第２補間回路７０６に送られる。第２補間回路７０６内の第２コマンドタイプ判別部７０５は、図８の第２のコマンドフォーマット（ＣＦ２）に従って、コマンドＣ＃００に対応する省略コマンドの先頭１ビット（図８のｂｉｔ［０］）に付加されているコマンドタイプを判別する。この結果、第２コマンドタイプ判別部７０５は、Ｃ＃００に対応する省略コマンドが、図８のダイレクトコマンド２（ＤＣ２）であると判別する（図９のＳ９０３参照）。この結果、第２補間回路７０６は、コマンド記憶部２０４からの制御情報の補間は行わず、Ｃ＃００に対応する省略コマンドの２ビット目以降に格納されているダイレクトコマンド２（ＤＣ２）をそのまま今回のコマンドとして、バッファ制御部２０８に出力する。第２補間回路７０６は、コマンドＣ＃００に対応して生成した今回のコマンドを、コマンド記憶部２０４に記憶させる。バッファ制御部２０８に出力されたコマンドは、ノード制御部２０９からＪＴＡＧ制御回路２１０又はＩ２Ｃ制御回路２１１を介して、実行対象のノード２０３に送信される。ノード制御部２０９は、実行対象のノード２０３から、ＪＴＡＧ制御回路２１０又はＩ２Ｃ制御回路２１１を介して上記コマンドの実行に対する応答があった場合には、その応答をＳＰ２０２に返す（図９のＳ９０９）。なお、ノード制御部２０９は、バッファ制御部２０８を介して、応答をいったんバッファ部２０７内の所定領域に保持させてもよい。この場合、ＣＬ＃０に対応する全ての応答が応答リストとして揃ってから、その応答リストがバッファ部２０７からＳＰ２０２に返信されてよい。
【０１５８】
次に、バッファ制御部２０８の指示によりバッファ部２０７内のＣＬ＃０から２番目のコマンドＣ＃０１に対応する省略コマンドが読み出され、その省略コマンドがフォーマット選択部７０２を介して第２補間回路７０６に送られる。第２補間回路７０６内の第２コマンドタイプ判別部７０５は、図８の第２のコマンドフォーマット（ＣＦ２）に従って、コマンドＣ＃０１に対応する省略コマンドの先頭１ビット（図８のｂｉｔ［０］）に付加されているコマンドタイプを判別する。この結果、第２コマンドタイプ判別部７０５は、Ｃ＃０１に対応する省略コマンドが、図８のアドレススキップコマンド２（ＡＳＣ２）であると判別する（図９のＳ９０３参照）。この判別結果を受けて、第２補間回路７０６は、まず上記省略コマンドの２ビット目以降に格納されている図８のアドレススキップコマンド２（ＡＳＣ２）を取り出す。また、第２補間回路７０６は、コマンド記憶部２０４に記憶されているＣ＃００に対応する前回生成されたコマンドから、図８のＢ１．からＢＸ．までの制御情報を取り出す。第２補間回路７０６は、アドレススキップコマンド２（ＡＳＣ２）にＢ１．からＢＸ．までの制御情報を補間して、その結果得られるコマンドを今回のコマンドとして、バッファ制御部２０８に出力する。第２補間回路７０６は、コマンドＣ＃０１に対応して生成した今回のコマンドを、コマンド記憶部２０４に記憶させる。コマンドＣ＃０１に対応して生成された今回のコマンドに対するこれ以降の処理は、ＣＬ＃００に対して生成されたコマンドの場合と同様である。
【０１５９】
更に、バッファ制御部２０８の指示によりバッファ部２０７内のＣＬ＃０から３番目のコマンドＣ＃０２に対応する省略コマンドが読み出され、その省略コマンドがフォーマット選択部７０２を介して第２補間回路７０６に送られる。第２補間回路７０６内の第２コマンドタイプ判別部７０５は、図８の第２のコマンドフォーマット（ＣＦ２）に従って、コマンドＣ＃０２に対応する省略コマンドの先頭１ビット（図８のｂｉｔ［０］）に付加されているコマンドタイプを判別する。この結果、第２コマンドタイプ判別部７０５は、Ｃ＃０２に対応する省略コマンドが、図８のダイレクトコマンド２（ＤＣ２）であると判別する（図９のＳ９０３参照）。この判別結果を受けて、第２補間回路７０６は、コマンド記憶部２０４からの制御情報の補間は行わず、Ｃ＃０２に対応する省略コマンドの２ビット目以降に格納されているダイレクトコマンド２（ＤＣ２）をそのまま今回のコマンドとして、バッファ制御部２０８に出力する。第２補間回路７０６は、コマンドＣ＃０２に対応して生成した今回のコマンドを、コマンド記憶部２０４に記憶させる。コマンドＣ＃０２に対応して生成された今回のコマンドに対するこれ以降の処理は、ＣＬ＃００、ＣＬ＃０１に対して生成された各コマンドの場合と同様である。
【０１６０】
続いて、図７のフォーマット毎バッファ使用量カウンタ７０１は、上述のように第１回目のコマンドリスト７０９に対応する各コマンドが生成（復元）された後、第２補間回路７０６で生成されコマンド記憶部２０４に順次記憶される一連のコマンドについて、次の処理を実行する。
【０１６１】
まず、フォーマット毎バッファ使用量カウンタ７０１は、第１回目のコマンドリスト７０９に対して生成された一連のコマンドがＳＰ２０２から制御回路２０１に送信されたと仮定したときの図８の第２のコマンドフォーマット（ＣＦ２）に対応する送信量を算出する。図９のＳ９１０の例では、Ｃ＃００、Ｃ＃０１、及びＣ＃０２の３つのコマンドに対応する第１回目のコマンドリスト７０９＝ＣＬ＃０の送信量は、バッファ部２０７に記憶されていたＣＬ＃０のサイズそのものである。従って、フォーマット毎バッファ使用量カウンタ７０１は、第２補間回路７０６に読み込まれた第１回目のコマンドリスト７０９＝ＣＬ＃０中の各省略コマンドのデータサイズの合計をカウントすることにより、ＣＬ＃０の送信量を算出する。この送信量は、図９のＳ９０３として示される１００＋５０＋１００＝２５０ビットである。フォーマット毎バッファ使用量カウンタ７０１は、このようにして算出した送信量に基づいて、前述した（４）式に従って、第１回目のコマンドリスト７０９を第２のコマンドフォーマット（ＣＦ２）で制御回路２０１に順次送信したときのサイズＳＩＺＥ2 を算出する。（４）式において、今回生成された一連のコマンドに対して算出した第２のコマンドフォーマット（ＣＦ２）のもとでの送信量Ｓ20は、上述の図９のＳ９０３と同じ２５０ビットである。また、今回は第１回目のコマンドリスト７０９に対する一連のコマンドの生成処理であるから、第２のコマンドフォーマット（ＣＦ２）のもとでの１回前の回の送信量Ｓ21と２回前の回の送信量Ｓ22は、共に０である。また例えばα＝０．９とする。従って、（４）式により、
ＳＩＺＥ2 ＝Ｓ20＋Ｓ21×α＋Ｓ22×α2 
＝２５０＋０×０．９＋０×０．９2 ＝２５０ビット・・・（１７）
として、第１回目である今回のコマンドリスト７０９から一連のコマンドが生成されたときの図８の第２のコマンドフォーマット（ＣＦ２）に対応する送信量ＳＩＺＥ2 が算出される。
【０１６２】
次に、フォーマット毎バッファ使用量カウンタ７０１は、第１回目のコマンドリスト７０９に対して生成された一連のコマンドに対して、図３（ｂ）の第１のコマンドフォーマット（ＣＦ１）でＳＰ２０２から制御回路２０１に順次送信を行ったと仮定したときの送信量を算出する。具体的には、フォーマット毎バッファ使用量カウンタ７０１は、特には図示しないが、内部にＳＰ２０２における省略コマンド生成部２１４及び送信コマンド生成部２１５の処理部を有している。ただし、この送信コマンド生成部２１５は、実際の送信処理は実行せずに、送信量を算出する処理のみを実行する。フォーマット毎バッファ使用量カウンタ７０１は、図３（ｂ）の第１のコマンドフォーマット（ＣＦ１）に従い、Ｃ＃００、Ｃ＃０１、Ｃ＃０２に対応して生成された一連のコマンドに対し、省略コマンド生成部２１４及び送信コマンド生成部２１５を動作させる。第２補間回路７０６においてＣ＃００、Ｃ＃０１、Ｃ＃０２に対応して生成された一連のコマンドはコマンド記憶部２０４に順次記憶されるため、フォーマット毎バッファ使用量カウンタ７０１は、コマンド記憶部２０４から、これらのデータを取得する。この結果、図９のＳ９１１のように、Ｃ＃００の省略コマンドは図３（ｂ）のダイレクトコマンド２（ＤＣ１）になり、先頭２ビット（図３（ｂ）のｂｉｔ［０：１］）にＤＣ１を表すコマンドタイプ値「０ｘ０」が設定され、計１０１ビットのコマンドが生成される。また、Ｃ＃０１の省略コマンドは、図３（ｂ）のアドレススキップコマンド１−３（ＡＳＣ１−３）になり、先頭２ビット（図３（ｂ）のｂｉｔ［０：１］）にＡＳＣ１−３を表すコマンドタイプ値「０ｘ３」が設定され、合計５１ビットのコマンドが生成される。更に、Ｃ＃０２の省略コマンドは、図３（ｂ）のアドレススキップコマンド１−１（ＡＳＣ１−１）になり、先頭２ビット（図３（ｂ）のｂｉｔ［０：１］）にＡＳＣ１−１を表すコマンドタイプ値「０ｘ１」が設定され、計９０ビットのコマンドが生成される。以上の処理の結果、図９のＳ９１１の例では、第１のコマンドフォーマット（ＣＦ１）に基づいて処理された、Ｃ＃００、Ｃ＃０１、及びＣ＃０２の３つのコマンドに対応する一連のコマンドの送信量は、１０１＋５１＋９０＝２４２ビットと算出される。フォーマット毎バッファ使用量カウンタ７０１は、この送信量に基づき、前述した（３）式に従って、第１回目のコマンドリスト７０９を第１のコマンドフォーマット（ＣＦ１）で制御回路２０１に順次送信したと仮定したときのサイズＳＩＺＥ1 を算出する。（９）式において、今回生成された一連のコマンドに対し算出した第１のコマンドフォーマット（ＣＦ１）のもとでの送信量Ｓ10は、上述の図９のＳ９１１で算出される２４２ビットである。また今回は第１回目のコマンドリスト７０９に対する一連のコマンドの生成処理であるから、第１のコマンドフォーマット（ＣＦ１）のもとでの１回前の回の送信量Ｓ21と２回前の回の送信量Ｓ22は、共に０である。また例えばα＝０．９とする。従って、（３）式により、
ＳＩＺＥ1 ＝Ｓ10＋Ｓ11×α＋Ｓ12×α2 
＝２４２＋０×０．９＋０×０．９2 ＝２４２ビット・・・（１８）
として、第１回目である今回のコマンドリスト７０９が送信されたと仮定されたときの図３（ｂ）の第１のコマンドフォーマット（ＣＦ１）に対応する送信量ＳＩＺＥ1 が算出される。
【０１６３】
上記算出処理の後、図７のフォーマット選択部７０２は、第１のコマンドフォーマット（ＣＦ１）に対応するサイズＳＩＺＥ1 と第２のコマンドフォーマット（ＣＦ２）に対応するサイズＳＩＺＥ2 のうち小さいほうのサイズに対応するコマンドフォーマットを選択する。上述の（１７）式及び（１８）式より、図９のＳ９１２に示されるように、ＣＦ１に対応するサイズＳＥＺＥ1 ＝２４２ビット、ＣＦ２に対応するサイズＳＩＺＥ2 ＝２５０ビットである。このため、フォーマット選択部７０２は、前述した（５）式の決定論理に基づいて、第１のコマンドフォーマット（ＣＦ１）に従って動作する第１コマンドタイプ判別部７０３及び第１補間回路７０４を選択する。この結果、コマンド生成におけるコマンドフォーマットが、第２のコマンドフォーマット（ＣＦ２）から第１のコマンドフォーマット（ＣＦ１）に変更される。
【０１６４】
上述のように、制御回路２０１では、ＣＬ＃０に対して、（１７）、（１８）式に基づいて（５）式の決定論理で第１のコマンドフォーマット（ＣＦ１）が選択される（図９のＳ９１０、Ｓ９１１、Ｓ９１２）。これに対して、前述したように、ＳＰ２０２でも、同じＣＬ＃０に対して、（１３）、（１４）式に基づいて（１１）式の決定論理でやはり第１のコマンドフォーマット（ＣＦ１）が選択される（図９のＳ９０３、Ｓ９０５、Ｓ９０６）。従って、図９のＳ９０４でのＣＬ＃０の送信後、その後に送信されるコマンドリスト７０９のサイズが最小となるように、ＳＰ２０２側と制御回路２０１側とが共に、第１のコマンドフォーマット（ＣＦ１）への切替えを行うことが可能となることがわかる。
【０１６５】
続いて、第２回目のコマンドリスト７０９＝ＣＬ＃１の送信時における制御回路２０１の動作について説明する。
【０１６６】
図１０のＳ９１４→Ｓ９１５において、ＳＰ２０２からバッファ部２０７に、コマンドリスト７０９として、第２回目のコマンドリストＣＬ＃１が書き込まれている。これに対して、バッファ制御部２０８がバッファ部２０７内のＣＬ＃１に対して読出しを指示したときに、ＣＬ＃０に対応するコマンド生成時に、上述したようにしてフォーマット選択部７０２が第１のコマンドフォーマット（ＣＦ１）への切替えを行っている。この結果、バッファ制御部２０８の指示によりバッファ部２０７からＣＬ＃１中の各省略コマンドが読み出される際には、フォーマット選択部７０２が、第１コマンドタイプ判別部７０３及び第１補間回路７０４を動作させる。第１コマンドタイプ判別部７０３及び第１補間回路７０４は、ＣＬ＃１中の各省略コマンドから制御情報が補間された各コマンドを順次生成、そのコマンドを解析し、ノード２０３に対して実行させる処理を順次実行する（図１０のステップＳ９１８）。
【０１６７】
具体的にはまず、バッファ制御部２０８の指示によりバッファ部２０７内のＣＬ＃１から１番目のコマンドＣ＃１０に対応する省略コマンドが読み出され、その省略コマンドがフォーマット選択部７０２を介して第１補間回路７０４に送られる。第１補間回路７０４内の第１コマンドタイプ判別部７０３は、図３（ｂ）の第１のコマンドフォーマット（ＣＦ１）に従って、コマンドＣ＃１０に対応する省略コマンドの先頭２ビット（図３（ｂ）のｂｉｔ［０：１］）に付加されているコマンドタイプを判別する。この結果、第１コマンドタイプ判別部７０３は、Ｃ＃１０に対応する省略コマンドが、図３（ｂ）のアドレススキップコマンド１−３（ＡＳＣ１−３）であると判別する（図１０のＳ９１４参照）。この判別結果を受けて、第１補間回路７０４は、まず上記省略コマンドの２ビット目以降に格納されている図３（ｂ）のアドレススキップコマンド１−３（ＡＳＣ１−３）を取り出す。また、第１補間回路７０４は、コマンド記憶部２０４に記憶されているＣ＃０２に対応する前回生成されたコマンドから、図３（ｂ）のＢ１．からＢＸ．までの制御情報を取り出す。第１補間回路７０４は、アドレススキップコマンド１−３（ＡＳＣ１−３）にＢ１．からＢＸ．までの制御情報を補間して、その結果得られるコマンドを今回のコマンドとして、バッファ制御部２０８に出力する。第１補間回路７０４は、コマンドＣ＃１０に対応して生成した今回のコマンドを、コマンド記憶部２０４に記憶させる。バッファ制御部２０８に出力されたコマンドは、ノード制御部２０９からＪＴＡＧ制御回路２１０又はＩ２Ｃ制御回路２１１を介して、実行対象のノード２０３に送信される。ノード制御部２０９は、実行対象のノード２０３から、ＪＴＡＧ制御回路２１０又はＩ２Ｃ制御回路２１１を介して上記コマンドの実行に対する応答があった場合には、その応答をＳＰ２０２に返す（図１０のＳ９１９）。なお、ノード制御部２０９は、バッファ制御部２０８を介して、応答をいったんバッファ部２０７内の所定領域に保持させてもよい。この場合、ＣＬ＃１に対応する全ての応答が応答リストとして揃ってから、その応答リストがバッファ部２０７からＳＰ２０２に返信されてよい。
【０１６８】
次に、バッファ制御部２０８の指示によりバッファ部２０７内のＣＬ＃１から２番目のコマンドＣ＃１１に対応する省略コマンドが読み出され、その省略コマンドがフォーマット選択部７０２を介して第１補間回路７０４に送られる。第１補間回路７０４内の第１コマンドタイプ判別部７０３は、図３（ｂ）の第１のコマンドフォーマット（ＣＦ１）に従って、コマンドＣ＃１１に対応する省略コマンドの先頭２ビット（図３（ｂ）のｂｉｔ［０：１］）に付加されているコマンドタイプを判別する。この結果、第１コマンドタイプ判別部７０３は、Ｃ＃１１に対応する省略コマンドが、図３（ｂ）のアドレススキップコマンド１−３（ＡＳＣ１−３）であると判別する（図１０のＳ９１４参照）。この判別結果を受けて、第１補間回路７０４は、まず上記省略コマンドの２ビット目以降に格納されている図３（ｂ）のアドレススキップコマンド１−３（ＡＳＣ１−３）を取り出す。また、第１補間回路７０４は、コマンド記憶部２０４に記憶されているＣ＃１０に対応する前回生成されたコマンドから、図３（ｂ）のＢ１．からＢＸ．までの制御情報を取り出す。第１補間回路７０４は、アドレススキップコマンド１−３（ＡＳＣ１−３）にＢ１．からＢＸ．までの制御情報を補間して、その結果得られるコマンドを今回のコマンドとして、バッファ制御部２０８に出力する。第１補間回路７０４は、コマンドＣ＃１１に対応して生成した今回のコマンドを、コマンド記憶部２０４に記憶させる。コマンドＣ＃１１に対応して生成された今回のコマンドに対するこれ以降の処理は、ＣＬ＃１０に対して生成されたコマンドの場合と同様である。
【０１６９】
更に、バッファ制御部２０８の指示によりバッファ部２０７内のＣＬ＃１から３番目のコマンドＣ＃１２に対応する省略コマンドが読み出され、その省略コマンドがフォーマット選択部７０２を介して第１補間回路７０４に送られる。第１補間回路７０４内の第１コマンドタイプ判別部７０３は、図３（ｂ）の第２のコマンドフォーマット（ＣＦ２）に従って、コマンドＣ＃１２に対応する省略コマンドの先頭２ビット（図３（ｂ）のｂｉｔ［０：１］）に付加されているコマンドタイプを判別する。この結果、第１コマンドタイプ判別部７０３は、Ｃ＃１２に対応する省略コマンドが、図３の（ｂ）のアドレススキップコマンド１−３（ＡＳＣ１−３）であると判別する（図１０のＳ９１４参照）。この判別結果を受けて、第１補間回路７０４は、まず上記省略コマンドの２ビット目以降に格納されている図３（ｂ）のアドレススキップコマンド１−３（ＡＳＣ１−３）を取り出す。また、第１補間回路７０４は、コマンド記憶部２０４に記憶されているＣ＃１１に対応する前回生成されたコマンドから、図３（ｂ）のＢ１．からＢＸ．までの制御情報を取り出す。第１補間回路７０４は、アドレススキップコマンド１−３（ＡＳＣ１−３）にＢ１．からＢＸ．までの制御情報を補間して、その結果得られるコマンドを今回のコマンドとして、バッファ制御部２０８に出力する。第１補間回路７０４は、コマンドＣ＃１２に対応して生成した今回のコマンドを、コマンド記憶部２０４に記憶させる。コマンドＣ＃１２に対応して生成された今回のコマンドに対するこれ以降の処理は、ＣＬ＃１０、ＣＬ＃１１に対して生成されたコマンドの場合と同様である。
【０１７０】
続いて、図７のフォーマット毎バッファ使用量カウンタ７０１は、上述のように第２回目のコマンドリスト７０９に対応する各コマンドが生成（復元）された後、第１補間回路７０４で生成されコマンド記憶部２０４に順次記憶される一連のコマンドについて、次の処理を実行する。
【０１７１】
まず、フォーマット毎バッファ使用量カウンタ７０１は、第２回目のコマンドリスト７０９に対して生成された一連のコマンドがＳＰ２０２から制御回路２０１に送信されたと仮定したときの図３（ｂ）の第１のコマンドフォーマット（ＣＦ１）に対応する送信量を算出する。図１０のＳ９２０の例では、Ｃ＃１０、Ｃ＃１１、及びＣ＃１２の３つのコマンドに対応する第２回目のコマンドリスト７０９＝ＣＬ＃１の送信量は、バッファ部２０７に記憶されていたＣＬ＃１のサイズそのものである。従って、フォーマット毎バッファ使用量カウンタ７０１は、第１補間回路７０４に読み込まれた第２回目のコマンドリスト７０９＝ＣＬ＃１中の各省略コマンドのデータサイズの合計をカウントすることにより、ＣＬ＃１の送信量を算出する。この送信量は、図１０のＳ９１４として示される５１＋５１＋５１＝１５３ビットである。フォーマット毎バッファ使用量カウンタ７０１は、このようにして算出した送信量に基づいて、前述した（３）式に従って、第２回目のコマンドリスト７０９を第１のコマンドフォーマット（ＣＦ１）で制御回路２０１に順次送信したときのサイズＳＩＺＥ1 を算出する。（３）式において、今回生成された一連のコマンドに対して算出した第１のコマンドフォーマット（ＣＦ１）のもとでの送信量Ｓ10は、上述の図１０のＳ９１４と同じ１５３ビットである。また今回は第２回目のコマンドリスト７０９に対する一連のコマンドの生成処理であるから、第１のコマンドフォーマット（ＣＦ１）のもとでの１回前の第１回目の送信量Ｓ11は図９のＳ９１１で算出された２４２ビットであり、２回前の回の送信量Ｓ12は０である。また例えばα＝０．９とする。従って、（３）式により、
ＳＩＺＥ1 ＝Ｓ10＋Ｓ11×α＋Ｓ12×α2 
＝１５３＋２４２×０．９＋０×０．９2 ≒３７０．８ビット・・・（１９）
として、第１回目である今回のコマンドリスト７０９から一連のコマンドが生成されたときの図３（ｂ）の第１のコマンドフォーマット（ＣＦ１）に対応する送信量ＳＩＺＥ1 が算出される。
【０１７２】
次に、フォーマット毎バッファ使用量カウンタ７０１は、第２回目のコマンドリスト７０９に対して生成された一連のコマンドに対して、図８の第２のコマンドフォーマット（ＣＦ２）でＳＰ２０２から制御回路２０１に順次送信を行ったと仮定したときの送信量を算出する。フォーマット毎バッファ使用量カウンタ７０１は、図８の第２のコマンドフォーマット（ＣＦ２）に従い、Ｃ＃１０、Ｃ＃１１、Ｃ＃１２に対応して生成された一連のコマンドに対し、内蔵する省略コマンド生成部２１４及び送信コマンド生成部２１５を動作させる。第１補間回路７０４においてＣ＃１０、Ｃ＃１１、Ｃ＃１２に対応して生成された一連のコマンドはコマンド記憶部２０４に順次記憶されるため、フォーマット毎バッファ使用量カウンタ７０１は、コマンド記憶部２０４から、これらのデータを取得する。この結果、図１０のＳ９２１のように、Ｃ＃１０、Ｃ＃１１、Ｃ＃１２の各省略コマンドともに、図８のアドレススキップコマンド２（ＤＣ２）になり、先頭１ビット（図８のｂｉｔ［０］）にＡＳＣ２を表すコマンドタイプ値「０ｘ１」が設定される。そして、それぞれが計５０ビットのコマンドが生成される。以上の処理の結果、図１０のＳ９２１の例では、第２のコマンドフォーマット（ＣＦ２）に基づいて処理された、Ｃ＃１０、Ｃ＃１１、及びＣ＃１２の３つのコマンドに対応する一連のコマンドの送信量は、５０＋５０＋５０＝１５０ビットと算出される。フォーマット毎バッファ使用量カウンタ７０１は、この送信量に基づき、前述した（４）式に従って、第２回目のコマンドリスト７０９を第２のコマンドフォーマット（ＣＦ２）で制御回路２０１に順次送信したと仮定したときのサイズＳＩＺＥ2 を算出する。（４）式において、今回生成された一連のコマンドに対し算出した第２のコマンドフォーマット（ＣＦ２）のもとでの送信量Ｓ20は、上述の図１０のＳ９２１で算出される１５０ビットである。今回は第２回目のコマンドリスト７０９に対する一連のコマンドの生成処理であるから、第２のコマンドフォーマット（ＣＦ２）のもとでの１回前の第１回目の送信量Ｓ11は、図９のＳ９１０で算出された２５０ビットであり、２回前の回の送信量Ｓ22は０である。また例えばα＝０．９とする。従って、（４）式により、
ＳＩＺＥ2 ＝Ｓ20＋Ｓ21×α＋Ｓ22×α2 
＝１５０＋２５０×０．９＋０×０．９2 ＝３７５ビット・・・（２０）
として、第１回目である今回のコマンドリスト７０９が送信されたと仮定されたときの図８の第２のコマンドフォーマット（ＣＦ２）に対応する送信量ＳＩＺＥ2 が算出される。
【０１７３】
上記算出処理の後、図７のフォーマット選択部７０２は、第１のコマンドフォーマット（ＣＦ１）に対応するサイズＳＩＺＥ1 と第２のコマンドフォーマット（ＣＦ２）に対応するサイズＳＩＺＥ2 のうち小さいほうのサイズに対応するコマンドフォーマットを選択する。上述の（１９）式及び（２０）式より、図１０のＳ９２２に示されるように、ＣＦ１に対応するサイズＳＥＺＥ1 ＝３７０．８ビット、ＣＦ２に対応するサイズＳＩＺＥ2 ＝３７５ビットである。このため、フォーマット選択部７０２は、前述した（５）式の決定論理に基づいて、第１のコマンドフォーマット（ＣＦ１）に従って動作する第１コマンドタイプ判別部７０３及び第１補間回路７０４を選択する。この結果、コマンド生成におけるコマンドフォーマットとしては、第１のコマンドフォーマット（ＣＦ１）が維持される。
【０１７４】
上述のように、制御回路２０１では、ＣＬ＃０に対して、（１９）、（２０）式に基づいて（５）式の決定論理で第１のコマンドフォーマット（ＣＦ１）が選択される（図１０のＳ９２０、Ｓ９２１、Ｓ９２２）。これに対して、前述したように、ＳＰ２０２でも、同じＣＬ＃０に対して、（１５）、（１６）式に基づいて（１１）式の決定論理でやはり第１のコマンドフォーマット（ＣＦ１）が選択される（図１０のＳ９１４、Ｓ９１６、Ｓ９１７）。従って、図１０のＳ９１５でのＣＬ＃１の送信後、その後に送信されるコマンドリスト７０９のサイズが最小となるように、ＳＰ２０２側と制御回路２０１側とが共に、第１のコマンドフォーマット（ＣＦ１）を維持する選択を行うことが可能となることがわかる。
【０１７５】
図１１は、第３の実施形態において図７のＳＰ２０２が実行する送信コマンド生成処理の例を示すフローチャートである。この処理は例えば、ＳＰ２０２内の特には図示しないＣＰＵが特には図示しないメモリに記憶されたコマンド生成処理プログラムを実行する処理である。
【０１７６】
図１１のフローチャートにおいて、第２の実施形態における図５のフローチャートと同じ処理が実行されるステップには、図５の場合と同じステップ番号が付与されている。
【０１７７】
図１１のフローチャートが図５のフローチャートと異なる部分は、ステップＳ１１０１とＳ１１０２が追加された点である。
【０１７８】
まず、ＳＰ２０２は、転送指示発生後（ステップＳ５０１の判定がＹＥＳ）、内部のコマンドリストから１コマンドずつ読み込みながら（ステップＳ５０２）、ステップＳ５０４〜Ｓ５０６の処理を繰り返し実行する。ＳＰ２０２は、ステップＳ５０４で、図７の省略コマンド生成部２１４に対応する省略コマンド生成処理を実行する。次に、ＳＰ２０２は、ステップＳ５０５で、図７の送信コマンド生成部２１５に対応する送信コマンド生成処理を実行する。そして、ＳＰ２０２は、ステップＳ５０６で今回コマンドを第２のコマンド記憶部２１３に記憶する処理を実行する。これらの処理は、前述した通りである。
【０１７９】
以上の動作の繰返しの結果、ステップＳ５０３の判定がＮＯとなって未処理のコマンドが無いと判定されると、次の処理が実行される。ＳＰ２０２は、ステップＳ５０５の処理でＳＰ２０２内のメモリの記憶領域に保持していたコマンド群を、コマンドリスト７０９（図７）として、制御回路２０１内のバッファ部２０７に転送する（ステップＳ５０７）。
【０１８０】
その後、ＳＰ２０２は、図７のフォーマット決定部７０７の処理を実行する（図１１のステップＳ１１０１、Ｓ１１０２）。
【０１８１】
まず、ＳＰ２０２は、今回以前の回の送信処理前一連のコマンドを、第１及び第２のコマンドフォーマットの各々でＳＰ２０２から制御回路２０１内のバッファ部２０７に順次送信したと仮定したときの各送信量を算出する。そして、省略コマンド生成部２１４は、上記各送信量に基づいて、第１及び第２のコマンドフォーマット毎の各サイズを算出する（ステップＳ１１０１）。この具体的な処理は、図９のＳ９０３、Ｓ９０５、又は図１０のＳ９１４、Ｓ９１６を用いて前述した通りである。
【０１８２】
そして、ＳＰ２０２は、ステップＳ１１０１で算出した各サイズに基づき、所定のアルゴリズムで、第１のコマンドフォーマット又は第２のコマンドフォーマットの何れか１つを決定する。この具体的な処理は、図９のＳ９０６、又は図１０のＳ９１７を用いて前述した通りである。
【０１８３】
その後、ＳＰ２０２は、ステップＳ１１０１の処理に戻る。ステップＳ１１０１の判定がＹＥＳになって今回の次のコマンドリストの送信処理が実行されるときに、ステップＳ１１０２で決定されたコマンドフォーマットが選択されて、ステップＳ５０４の省略コマンド生成処理とステップＳ５０５の送信コマンド生成処理が実行される。
【０１８４】
図１２は、第３の実施形態において図７の制御回路２０１が実行する受信コマンド生成・実行処理の例を示すフローチャートである。この処理は例えば、制御回路２０１内のを構成するＦＰＧＡの一連の実行動作をフローチャートで示したものである。
【０１８５】
図１２のフローチャートにおいて、第２の実施形態における図６のフローチャートと同じ処理が実行されるステップには、図６の場合と同じステップ番号が付与されている。
【０１８６】
図１２のフローチャートの処理が、第２の実施形態における図６のフローチャートの処理と異なる部分は、ステップＳ１２０１とＳ１２０２である。
【０１８７】
まず、図６の場合と同様にして、図７のノード制御部２０９に対応するＦＰＧＡブロックで、ＳＰ２０２から、バッファ部２０７に転送されたコマンドリスト７０９の実行指示が受信される（ステップＳ６０１の判定がＹＥＳ）。バッファ制御部２０８に対応するＦＰＧＡブロックは、バッファ部２０７に、コマンドリスト７０９からのコマンドの読出しの指示を与えながら（ステップＳ６０２）、ステップＳ６０４〜Ｓ６０７の処理を繰り返し実行する。第１コマンドタイプ判別部７０３又は第２コマンドタイプ判別部７０５のうち現在選択されているコマンドフォーマットに対応するＦＰＧＡは、読み込まれた省略コマンドのコマンドタイプを判別する処理を実行する（ステップＳ６０４）。第１補間回路７０４又は第２補間回路７０６のうち現在選択されているコマンドフォーマットに対応するＦＰＧＡは、省略コマンドの制御情報を補間する処理と、生成したコマンドを図７のコマンド記憶部２０４に記憶する処理を実行する（ステップＳ６０５、Ｓ６０６）。ノード制御部２０９と、ＪＴＡＧ制御回路２１０又はＩ２Ｃ制御回路２１１のＦＰＧＡは、第１補間回路７０４又は第２補間回路７０６からバッファ制御部２０８に出力されたコマンドを、対象のノード２０３に送信し実行させる処理を実行する（ステップＳ６０７）。これらの処理は、前述した通りである。
【０１８８】
以上の動作の繰返しの結果、ステップＳ６０３の判定がＮＯとなって未処理のコマンドが無いと判定されると、図７のフォーマット毎バッファ使用量カウンタ７０１及びフォーマット選択部７０２の処理が実行される（図１２のステップＳ１２０１、Ｓ１２０２）。
【０１８９】
まず、フォーマット毎バッファ使用量カウンタ７０１のＦＰＧＡにより、次の処理が実行される。今回以前の回に生成された一連のコマンドを、第１及び第２のコマンドフォーマットの各々でＳＰ２０２から制御回路２０１内のバッファ部２０７に順次送信したと仮定したときの、各送信量が算出される。そして、上記各送信量に基づいて、第１及び第２のコマンドフォーマット毎の各サイズが算出される（ステップＳ１２０１）。この具体的な処理は、図９のＳ９１０、Ｓ９１１、又は図１０のＳ９２０、Ｓ９２１を用いて前述した通りである。
【０１９０】
そして、フォーマット選択部７０２のＦＰＧＡにおいて、次の処理が実行される。ステップＳ１２０１で算出された各サイズに基づき、所定のアルゴリズムで、第１のコマンドフォーマット又は第２のコマンドフォーマットの何れか１つが決定される（ステップＳ１２０２）。この具体的な処理は、図９のＳ９１２、又は図１０のＳ９２２を用いて前述した通りである。
【０１９１】
その後、ステップＳ１２０１の処理ｗに制御が戻る。ステップＳ１２０１の判定がＹＥＳになって今回の次のコマンドリストからのコマンドの生成処理が実行されるときに、ステップＳ１２０２で決定されたコマンドフォーマットに対応する制御が実施される。具体的には、第１コマンドタイプ判別部７０３と第１補間回路７０４、又は第２コマンドタイプ判別部７０５と第２補間回路７０６のうち、選択されたコマンドフォーマットに対応する方が、ステップＳ６０４とＳ６０５の処理を実行する。
【０１９２】
図１３は、制御情報として、
Ａ．宛先情報（Ｃｏｎｔｒｏｌｌｅｒ、Ｓｌａｖｅ  Ａｄｄｒｅｓｓ）
Ｂ．レジスタアドレス長情報（Ｈｅａｄｅｒ  Ｌｅｎｇｔｈ）
Ｃ．レジスタアドレス情報（Ｈｅａｄｅｒ）
Ｄ．データ長情報（Ｄａｔａ  Ｌｅｎｇｔｈ）
Ｅ．データ情報（Ｄａｔａ）
Ｆ．ＣＲＣ有無やＣｏｕｎｔ有無情報
Ｇ．Ｒｅａｄ  ｏｒ  Ｗｒｉｔｅ情報
の全てを図２のＳＰ２０２から制御回路２０１内のバッファ部２０７に送信する従来装置のコマンドフォーマットの実施例を示す図である。
【０１９３】
一方、図１４は、
Ａ．宛先情報（Ｃｏｎｔｒｏｌｌｅｒ、Ｓｌａｖｅ  Ａｄｄｒｅｓｓ）
Ｂ．レジスタアドレス長情報（Ｈｅａｄｅｒ  Ｌｅｎｇｔｈ）
Ｆ．ＣＲＣ有無やＣｏｕｎｔ有無情報
が連続するコマンドで同じときに、上記Ａ．、Ｂ．、又はＦ．の制御情報をスキップする実施形態のコマンドフォーマットの実施例を示す図である。
【０１９４】
更に、図１５は、図１３の従来装置と図１４の実施形態とで、送信されるコマンドサイズを比較した図である。例として、レジスタアドレス１バイト（Ｂｙｔｅ）、データ長１バイト、ライト動作２００回で、実施形態において、１回のダイレクトコマンドと１９９回のアドレススキップコマンドが生成されるとする。この場合、図２のバッファ部２０７に送信されるコマンドリストのサイズは、合計欄に示される６０２バイトとなり、同じく合計欄に示される従来装置の１０００バイトと比較して、処理量は６０％となり、処理に対する負荷は大きく改善されることがわかる。
【０１９５】
以上説明した実施形態では、図２や図７のノード２０３は複数実装されているが、１つのみの実装でもよい。
【０１９６】
第３の実施形態において、コマンドフォーマットは、図３（ｂ）と図８の２種類であるが、コマンドフォーマットは３種類以上であってもよい。
【０１９７】
第３の実施形態で、忘却係数を用いた送信サイズの計算（（３）、（４）、（９）、（１０）式）において、今回、１回前、２回前の送信量から送信サイズが計算された後、その他の回まで見るようにしてもよい。
【０１９８】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）管理部と、複数のノードと、前記管理部から送られた第１コマンドを基に前記複数のノードの各々を制御する制御部とを有する並列処理装置において、
前記制御部は、
前回生成された第２コマンドを記憶するコマンド記憶部と、
前記管理部から送信されてきた前記第１コマンドのコマンドタイプを判別するコマンドタイプ判別部と、
前記コマンドタイプに応じて、前記第２コマンドを用いて、第３コマンドを生成するコマンド生成部と、
を有する並列処理装置。
（付記２）前記コマンド生成部は、前記コマンド記憶部が記憶する前記第２コマンド中の制御情報を用いて、前記第１コマンド中で省略されている制御情報を補間することにより、前記第３コマンドを生成する、付記１に記載の並列処理装置。
（付記３）前記制御部は更に、
第２コマンドを複数のコマンドフォーマットで前記管理部から前記制御部に送信したとしたときの各送信量を算出し、当該各送信量に基づいて前記各コマンドフォーマット毎の各サイズを算出するフォーマット別サイズ算出部と、
前記フォーマット別サイズ算出部が算出する前記各サイズに基づき前記複数のコマンドフォーマットから１つを選択するフォーマット選択部と、
を有し、
前記コマンドタイプ判別部及び前記コマンド生成部は、前記第３コマンドを生成するときに、前記フォーマット選択部が選択したコマンドフォーマットに従って動作する、
付記１又は２に記載の並列処理装置。
（付記４）前記フォーマット別サイズ算出部は、前記第２コマンドを他のコマンドフォーマットと送信したときのコマンドサイズを算出し、
前記フォーマット選択部は前回のコマンドの通信サイズと、算出したコマンドサイズを比較し、小さい方のコマンドフォーマットを選択する付記３記載の並列処理装置。
（付記５）前記管理部は、
前回送信されたコマンドの処理前の第４コマンドを記憶する第２のコマンド記憶部と、
送信されるコマンド中の所定の制御情報を前記第４コマンドに基づいて省略して得た省略コマンドを生成する省略コマンド生成部と、
前記省略コマンド生成部における省略の形態を示す情報を前記コマンドタイプとして前記省略コマンドに付与した送信コマンドを生成して、前記制御部に送信する送信コマンド生成部と、
を有する付記１又は２に記載の並列処理装置。
（付記６）前記管理部は、今回以前の回の送信処理前の一連のコマンドを前記複数のコマンドフォーマットの各々で前記制御部に順次送信したとしたときの各送信量を算出し、当該各送信量に基づいて前記各コマンドフォーマット毎の各サイズを算出し、前記各サイズに基づき前記制御部でコマンドフォーマットを選択するときのアルゴリズムと同一の所定のアルゴリズムで前記複数のコマンドフォーマットから１つを決定するフォーマット決定部を更に有し、
前記省略コマンド生成部は、第３コマンドを送信するときに、前記フォーマット決定部が決定したコマンドフォーマットに従って一連の前記省略コマンドを生成し、
前記送信コマンド生成部は、前記フォーマット選択部が決定したコマンドフォーマットに従って、一連の前記送信コマンドを生成して前記制御部に送信する、
付記５記載の並列処理装置。
（付記７）前記フォーマット決定部は、今回以前の複数回の各回毎の前記送信量に、当該回に対応する所定の忘却係数をそれぞれ乗算して、前記各回の乗算結果を前記複数回にわたって加算して得た加算結果として、前記コマンドフォーマットのもとでの前記サイズを算出する、付記３又は６記載の並列処理装置。
（付記８）前記制御部は、前記管理部から前記制御部に送信される第１コマンドを記憶するバッファ部と、前記管理部からの実行指示に応じ、前記バッファ部に対して前記第１コマンドを順次読み出す指示を与えるバッファ制御部とを更に有し、
前記コマンドタイプ判別部は、前記バッファ制御部の指示により読み出された前記コマンドのコマンドタイプを判別し、
前記コマンド生成部は、前記コマンド記憶部が記憶する前記第２コマンド中の制御情報を用いて、読み出された前記第１コマンド中で省略されている制御情報を補間することにより、前記第３コマンドを生成する補間回路を有し、
前記制御部は更に、前記補間回路が生成し前記バッファ制御部に入力された第３コマンドに応じた処理の実行を前記ノードに指示し、当該ノードにおける当該第３コマンドの実行結果を前記管理部に通知するノード制御部を有する、
付記１乃至７の何れかに記載の並列処理装置。
（付記９）前記管理部は、前記省略コマンド生成部及び前記送信コマンド生成部により、前記一連のコマンドを生成した後に、前記制御部内のバッファ部に、前記生成した一連のコマンドを前記バッファ制御部に書き込む、付記８記載の並列処理装置。
（付記１０）管理部と、複数のノードと、前記管理部から送られた第１コマンドを基に前記複数のノードの各々を制御する制御部とを有する並列処理装置の制御方法であって、
前記制御部において、
前回生成された第２コマンドを記憶し、
前記管理部から送信されてきた前記第１コマンドのコマンドタイプを判別し、
前記コマンドタイプに応じて、前記第２コマンドを用いて、コマンドを生成する、
並列処理装置の制御方法。
（付記１１）前記管理部において、
前回送信されたコマンドの処理前の第４コマンドを記憶し、
送信されるコマンド中の所定の制御情報を前記第４コマンドに基づいて省略して得た省略コマンドを生成し、
当該省略の形態を示す情報を前記コマンドタイプとして前記省略コマンドに付与したコマンドを生成して前記制御部に送信する、
付記１０に記載の並列処理装置の制御方法。
（付記１２）管理部と、複数のノードとを有する並列処理装置に用いられ、
前回生成された第２コマンドを記憶するコマンド記憶部と、
前記管理部から送信されてきた第１コマンドのコマンドタイプを判別するコマンドタイプ判別部と、
前記コマンドタイプに応じて、前記第２コマンドを用いて、第３コマンドを生成するコマンド生成部と、
を有する制御装置。
【符号の説明】
【０１９９】
１０１、２０１  制御部
１０２、２０２  管理部
１０３、２０３  ノード
１０４、２０４  コマンド記憶部
１０５、２０５  コマンドタイプ判別部
１０６  コマンド生成部
１０７、２１３  第２のコマンド記憶部
１０８、２１４  省略コマンド生成部
１０９、２１５  送信コマンド生成部
２０６  補間回路
２０７  バッファ部
２０８  バッファ制御部
２０９  ノード制御部
２１０  ＪＴＡＧ制御回路
２１１  Ｉ２Ｃ制御回路
２１２、７０９  コマンドリスト
７０１  フォーマット毎バッファ使用量カウンタ
７０２  フォーマット選択部
７０３  第１コマンドタイプ判別部
７０４  第１補間回路
７０５  第２コマンドタイプ判別部
７０６  第２補間回路
７０７  フォーマット決定部
【図１】
2018041368.tif 000003
【図２】
2018041368.tif 000004
【図３】
2018041368.tif 000005
【図４】
2018041368.tif 000006
【図５】
2018041368.tif 000007
【図６】
2018041368.tif 000008
【図７】
2018041368.tif 000009
【図８】
2018041368.tif 000010
【図９】
2018041368.tif 000011
【図１０】
2018041368.tif 000012
【図１１】
2018041368.tif 000013
【図１２】
2018041368.tif 000014
【図１３】
2018041368.tif 000015
【図１４】
2018041368.tif 000016
【図１５】
2018041368.tif 000017