(57)【要約】【課題】ネットワークを介して接続された複数の情報処理装置の間で、ユーザの操作に応じた分散処理を確実かつ効果的に行うことができるようにする。【解決手段】情報処理装置１，２，３および４内の情報処理コントローラ１１，１２，１３および１４は、それぞれメインプロセッサ２１、サブプロセッサ２３、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）２５およびＤＣ（ディスクコントローラ）２７を、バス２９を介して接続したものとする。メインプロセッサ２１は、自装置の動作状態に関する情報を装置情報として、情報処理コントローラに接続されたメインメモリ２６に書き込むとともに、他装置からの要求に応じて、その装置情報を他装置に送信する。これによって、ある情報処理装置は、自身および他の情報処理装置の動作状態を見て、ユーザの操作に応じたプログラムを実行する情報処理装置を選択し、その装置に当該プログラムを実行させる。【選択図】図１
2005251163.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して他の情報処理装置と接続され、所定のコマンドに従って情報処理を行う情報処理装置であって、
前記他の情報処理装置から動作状態に関する情報を収集して、装置情報テーブルを作成する能力交換手段と、
前記コマンドが発生した際、当該コマンドの実行に要する資源に関する情報と、前記装置情報テーブルの動作状態に関する情報とを比較して、当該コマンドを実行可能な情報処理装置を特定する装置特定手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記能力交換手段は、前記他の情報処理装置の情報処理能力を収集して前記装置情報テーブルに保存し、
前記装置特定手段は、前記コマンドの実行に要する情報処理能力と、前記他の情報処理装置の情報処理能力とを比較して、前記コマンドを実行可能な情報処理装置を特定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記能力交換手段は、前記他の情報処理装置のメモリ容量を収集して前記装置情報テーブルに保存し、
前記装置特定手段は、前記コマンドの実行に要するメモリ容量と、前記他の情報処理装置のメモリ容量とを比較して、前記コマンドを実行可能な情報処理装置を特定することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記能力交換手段は、前記他の情報処理装置の外部記録手段の容量を収集して前記装置情報テーブルに保存し、
前記装置特定手段は、前記コマンドの実行に要する外部記録手段の容量と、前記他の情報処理装置の外部記録手段の容量とを比較して、前記コマンドを実行可能な情報処理装置を特定することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記能力交換手段は、前記他の情報処理装置の機能を特定可能な情報処理装置種別識別子を収集して前記装置情報テーブルに保存し、
前記装置特定手段は、前記コマンドの実行に要する機能と、前記他の情報処理装置の情報処理装置種別識別子とを比較して、前記コマンドを実行可能な情報処理装置を特定することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記能力交換手段は、前記装置特定手段によって特定された情報処理装置に対して前記コマンドを送信して実行要求することを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記能力交換手段は、前記他の情報処理装置のネットワークへの接続が変更された場合に、前記他の情報処理装置の動作状態に関する情報を収集して、前記装置情報テーブルを更新することを特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記能力交換手段は、所定の時間間隔で前記他の情報処理装置の動作状態に関する情報を収集して、前記装置情報テーブルを更新することを特徴とする請求項１に記載の情報処理装置。
【請求項９】
前記他の情報処理装置は、前記コマンドを処理するプロセッサ手段を複数備え、前記能力交換手段は、前記複数のプロセッサ手段各々の動作状態に関する情報を収集して、前記装置情報テーブルに保存することを特徴とする請求項１に記載の情報処理装置。
【請求項１０】
請求項１に記載の情報処理装置は、さらに、前記ネットワーク上に他の情報処理装置が接続されたか否かを判断するマネージャ手段を備え、
このマネージャ手段によって前記ネットワーク上に他の情報処理装置が接続されたと判断された場合には、前記能力交換手段による処理を実行することを特徴とする請求項１に記載の情報処理装置。
【請求項１１】
ネットワークを介して他の情報処理装置と接続される情報処理装置が所定のコマンドに従って情報処理を行う情報処理方法であって、
前記他の情報処理装置から動作状態に関する情報を収集して、装置情報テーブルを作成する能力交換工程と、
前記コマンドが発生した際、当該コマンドの実行に要する資源に関する情報と、前記装置情報テーブルの動作状態に関する情報とを比較して、当該コマンドを実行可能な情報処理装置を特定する装置特定工程と、
を備えることを特徴とする情報処理方法。
【請求項１２】
前記情報処理方法は、さらに、前記装置特定工程で特定された情報処理装置に対して前記コマンドを送信して実行要求する実行要求工程を備えることを特徴とする請求項１１に記載の情報処理方法。
【請求項１３】
前記他の情報処理装置は、前記コマンドを処理するプロセッサ手段を複数備え、前記能力交換工程では、前記複数のプロセッサ手段各々の動作状態に関する情報を収集して、前記装置情報テーブルに保存することを特徴とする請求項１１に記載の情報処理方法。
【請求項１４】
前記情報処理方法は、さらに、前記ネットワーク上に他の情報処理装置が接続されたか否かを判断する管理工程を備え、
この管理工程で前記ネットワーク上に他の情報処理装置が接続されたと判断された場合には、前記能力交換工程を実行することを特徴とする請求項１１に記載の情報処理方法。
【請求項１５】
一の情報処理装置と他の情報処理装置がネットワークを介して接続され、所定のコマンドに従って情報処理を行う情報処理システムであって、
前記一の情報処理装置は、前記他の情報処理装置から動作状態に関する情報を収集して、装置情報テーブルを作成する能力交換手段と、前記コマンドが発生した際、当該コマンドの実行に要する資源に関する情報と、前記装置情報テーブルの動作状態に関する情報とを比較して、当該コマンドを実行可能な情報処理装置を特定する装置特定手段とを備えることを特徴とする情報処理システム。
【請求項１６】
前記能力交換手段は、前記装置特定手段によって特定された情報処理装置に対して前記コマンドを送信して実行要求することを特徴とする請求項１５に記載の情報処理システム。
【請求項１７】
前記他の情報処理装置は、前記コマンドを処理するプロセッサ手段を複数備え、前記能力交換手段は、前記複数のプロセッサ手段各々の動作状態に関する情報を収集して、前記装置情報テーブルに保存することを特徴とする請求項１５に記載の情報処理システム。
【請求項１８】
前記一の情報処理装置は、さらに、前記ネットワーク上に他の情報処理装置が接続されたか否かを判断するマネージャ手段を備え、このマネージャ手段によって前記ネットワーク上に他の情報処理装置が接続されたと判断された場合には、前記能力交換手段による処理を実行することを特徴とする請求項１５に記載の情報処理システム。
【請求項１９】
一の情報処理装置と他の情報処理装置がネットワークを介して接続された情報処理システムにおいて所定のコマンドに従って情報処理を行うために、前記一の情報処理装置が備えるコンピュータを、
前記他の情報処理装置から動作状態に関する情報を収集して、装置情報テーブルを作成する能力交換手段、および、前記コマンドが発生した際、当該コマンドの実行に要する資源に関する情報と、前記装置情報テーブルの動作状態に関する情報とを比較して、当該コマンドを実行可能な情報処理装置を特定する装置特定手段、
として機能させるための情報処理用プログラム。
【請求項２０】
前記コンピュータを、前記特定された情報処理装置に対して前記コマンドを送信して実行要求する手段としても機能させることを特徴とする請求項１９に記載の情報処理用プログラム。
【請求項２１】
前記他の情報処理装置は、前記コマンドを処理するプロセッサ手段を複数備え、前記情報処理用プログラムは、前記コンピュータを、前記能力交換手段としては、前記複数のプロセッサ手段各々の動作状態に関する情報を収集して、前記装置情報テーブルに保存する手段として機能させることを特徴とする請求項１９に記載の情報処理用プログラム。
【請求項２２】
前記情報処理用プログラムは、前記コンピュータを前記ネットワーク上に他の情報処理装置が接続されたか否かを判断するマネージャ手段としても機能させ、このマネージャ手段としての機能によって前記ネットワーク上に他の情報処理装置が接続されたと判断された場合には、前記コンピュータを前記能力交換手段として機能させることを特徴とする請求項１９に記載の情報処理用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、情報処理装置、情報処理方法、情報処理システムおよび情報処理用プログラムに関する。
【背景技術】
【０００２】
最近、グリッド・コンピューティングが注目されている。グリッド・コンピューティングとは、ネットワークに接続された複数の情報処理装置を協調動作させて、高い演算性能を実現する技術である。
【０００３】
例えば、特許文献１（特開２００２−３４２１６５号公報）、特許文献２（特開２００２−３５１８５０号公報）、特許文献３（特開２００２−３５８２８９号公報）、特許文献４（特開２００２−３６６５３３号公報）および特許文献５（特開２００２−３６６５３４号公報）には、均一なモジュラー構造、共通のコンピューティング・モジュール、および均一なソフトウェアセルを用いることによって、高速処理用コンピュータ・アーキテクチャを実現することが示されている。
【０００４】
また、特許文献６（米国特許６，５８７，９０６）、特許文献７（米国特許６，６６７，９２０）、特許文献８（米国特許６，７２８，８４５）、特許文献９（米国特開２００４−００３９８９５）、特許文献１０（米国特開２００４−００５４８８０）および特許文献１１（米国特開２００４−００９８４９６）には、情報処理装置内に複数個存在するプロセッサを独立・並列に動作させることによって、処理を高速化させることが示されている。
【０００５】
上に挙げた先行技術文献は、以下の通りである。
【特許文献１】特開２００２−３４２１６５号公報
【特許文献２】特開２００２−３５１８５０号公報
【特許文献３】特開２００２−３５８２８９号公報
【特許文献４】特開２００２−３６６５３３号公報
【特許文献５】特開２００２−３６６５３４号公報
【特許文献６】米国特許６，５８７，９０６
【特許文献７】米国特許６，６６７，９２０
【特許文献８】米国特許６，７２８，８４５
【特許文献９】米国特開２００４−００３９８９５
【特許文献１０】米国特開２００４−００５４８８０
【特許文献１１】米国特開２００４−００９８４９６
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、ネットワークを介して複数の情報処理装置が接続されたネットワークシステムにおいて、ユーザの当該ネットワークシステムに対する操作に応じた処理を、ネットワークシステム全体で分散的に実行するには、それぞれの情報処理装置、またはネットワークシステムを管理する情報処理装置が、他の情報処理装置の動作状況を把握している必要がある。
【０００７】
そこで、この発明は、ネットワークを介して接続された複数の情報処理装置の間で、このような分散処理を確実かつ効果的に行うことができるようにしたものである。
【課題を解決するための手段】
【０００８】
この発明の情報処理装置は、
ネットワークを介して他の情報処理装置と接続され、所定のコマンドに従って情報処理を行う情報処理装置であって、
前記他の情報処理装置から動作状態に関する情報を収集して、装置情報テーブルを作成する能力交換手段と、
前記コマンドが発生した際、当該コマンドの実行に要する資源に関する情報と、前記装置情報テーブルの動作状態に関する情報とを比較して、当該コマンドが実行可能な情報処理装置を特定する装置特定手段と、
を備えることを特徴とする。
【０００９】
上記の構成の、この発明の情報処理装置では、これがネットワークを介して他の情報処理装置と接続された場合、他の情報処理装置から、その動作状態に関する情報を収集して装置情報テーブルを作成し、所定のコマンドが発生した際には、当該コマンドの実行に要する資源に関する情報と、装置情報テーブルの動作状態に関する情報とを比較して、当該コマンドを実行可能な情報処理装置を特定するので、複数の情報処理装置の間で分散処理が確実かつ効果的に実行される。
【発明の効果】
【００１０】
以上のように、この発明によれば、ネットワークを介して接続された複数の情報処理装置の間で分散処理を確実かつ効果的に行うことができる。
【発明を実施するための最良の形態】
【００１１】
［１．ネットワークシステムおよび情報処理装置の基本的構成その１］
図１は、この発明のネットワークシステムの一例を示し、ネットワーク９を介して複数の情報処理装置１，２，３および４が接続されたものである。
【００１２】
（１−１．情報処理装置および情報処理コントローラ）
情報処理装置１，２，３および４は、それぞれ後述のような各種のＡＶ（Ａｕｄｉｏ  ａｎｄ  Ｖｉｓｕａｌ）機器やポータブル機器である。
【００１３】
情報処理装置１について示すと、情報処理装置１は、コンピュータ機能部として情報処理コントローラ１１を備える。情報処理コントローラ１１は、メインプロセッサ２１−１、サブプロセッサ２３−１，２３−２および２３−３、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）２５−１、およびＤＣ（ディスクコントローラ）２７−１を有する。
【００１４】
メインプロセッサ２１−１は、サブプロセッサ２３−１，２３−２および２３−３によるサブプロセッサプログラムの実行（データ処理）のスケジュール管理と、情報処理コントローラ１１（情報処理装置１）の全般的な管理とを行う。ただし、メインプロセッサ２１−１内で管理のためのプログラム以外のプログラムが動作するように構成することもできる。その場合には、メインプロセッサ２１−１はサブプロセッサとしても機能することになる。メインプロセッサ２１−１は、ＬＳ（ローカルストレージ）２２−１を有する。
【００１５】
サブプロセッサは、１つでもよいが、望ましくは複数とする。この例は、複数の場合である。
【００１６】
各サブプロセッサ２３−１，２３−２および２３−３は、メインプロセッサ２１−１の制御によって並列的かつ独立に、サブプロセッサプログラムを実行し、データを処理する。さらに、場合によってメインプロセッサ２１−１内のプログラムがサブプロセッサ２３−１，２３−２または２３−３内のサブプロセッサプログラムと連携して動作するように構成することもできる。後述する機能プログラムもメインプロセッサ２１−１内で動作するプログラムである。各サブプロセッサ２３−１，２３−２および２３−３も、ＬＳ（ローカルストレージ）２４−１，２４−２および２４−３を有する。
【００１７】
ＤＭＡＣ２５−１は、情報処理コントローラ１１に接続されたＤＲＡＭ（ダイナミックＲＡＭ）などからなるメインメモリ２６−１に格納されているプログラムおよびデータにアクセスするものであり、ＤＣ２７−１は、情報処理コントローラ１１に接続された外部記録部２８−１および２８−２にアクセスするものである。
【００１８】
外部記録部２８−１および２８−２は、固定ディスク（ハードディスク）でも、リムーバブルディスクでもよく、また、ＭＯ,ＣＤ±ＲＷ，ＤＶＤ±ＲＷなどの光ディスク、メモリディスク、ＳＲＡＭ（スタティックＲＡＭ）、ＲＯＭなど、各種のものを用いることができる。したがって、ＤＣ２７−１は、ディスクコントローラと称するが、外部記録部コントローラである。
【００１９】
図１の例のように、情報処理コントローラ１１に対して外部記録部２８を複数接続できるように、情報処理コントローラ１１を構成することができる。
【００２０】
メインプロセッサ２１−１、各サブプロセッサ２３−１，２３−２および２３−３、ＤＭＡＣ２５−１、およびＤＣ２７−１は、バス２９−１によって接続される。
【００２１】
情報処理コントローラ１１には、当該の情報処理コントローラ１１を備える情報処理装置１をネットワーク全体を通して一意的に識別できる識別子が、情報処理装置ＩＤとして割り当てられる。
【００２２】
メインプロセッサ２１−１、および各サブプロセッサ２３−１，２３−２および２３−３に対しても同様に、それぞれを特定できる識別子が、メインプロセッサＩＤおよびサブプロセッサＩＤとして割り当てられる。
【００２３】
情報処理コントローラ１１は、ワンチップＩＣ（集積回路）として構成することが望ましい。
【００２４】
他の情報処理装置２，３および４も、同様に構成される。ここで、親番号が同一であるユニットは、枝番号が異なっていても、特に断りがない限り、同じ働きをするものとする。また、以下の説明において枝番号が省略されている場合には、枝番号の違いにいる差異を生じないものとする。
【００２５】
（１−２．各サブプロセッサからメインメモリへのアクセス）
上述したように、１つの情報処理コントローラ内の各サブプロセッサ２３は、独立にサブプロセッサプログラムを実行し、データを処理するが、異なるサブプロセッサがメインメモリ２６内の同一領域に対して同時に読み出しまたは書き込みを行った場合には、データの不整合を生じ得る。そこで、サブプロセッサ２３からメインメモリ２６へのアクセスは、以下のような手順によって行う。
【００２６】
図２（Ａ）に示すように、メインメモリ２６は、アドレス指定可能な複数のメモリロケーション０〜Ｍによって構成される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメント０〜Ｍが割り振られる。追加セグメントは、Ｆ／Ｅビット、サブプロセッサＩＤおよびＬＳアドレス（ローカルストレージアドレス）を含むものとされる。また、各メモリロケーションには、後述のアクセスキー０〜Ｍも割り振られる。Ｆ／Ｅビットは、以下のように定義される。
【００２７】
Ｆ／Ｅビット＝０は、サブプロセッサ２３によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、読み出し不可であることを示す。また、Ｆ／Ｅビット＝０は、当該メモリロケーションにデータ書き込み可能であることを示し、書き込み後に１に設定される。
【００２８】
Ｆ／Ｅビット＝１は、当該メモリロケーションのデータがサブプロセッサ２３によって読み出されておらず、未処理の最新データであることを示す。当該メモリロケーションのデータは読み出し可能であり、サブプロセッサ２３によって読み出された後に０に設定される。また、Ｆ／Ｅビット＝１は、当該メモリロケーションがデータ書き込み不可であることを示す。
【００２９】
さらに、上記Ｆ／Ｅビット＝０（読み出し不可／書き込み可）の状態において、当該メモリロケーションについて読み出し予約を設定することは可能である。Ｆ／Ｅビット＝０のメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ２３は、読み出し予約を行うメモリロケーションの追加セグメントに、読み出し予約情報として当該サブプロセッサ２３のサブプロセッサＩＤおよびＬＳアドレスを書き込む。
【００３０】
その後、データ書き込み側のサブプロセッサ２３によって、読み出し予約されたメモリロケーションにデータが書き込まれ、Ｆ／Ｅビット＝１（読み出し可／書き込み不可）に設定されたとき、あらかじめ読み出し予約情報として追加セグメントに書き込まれたサブプロセッサＩＤおよびＬＳアドレスに読み出される。
【００３１】
複数のサブプロセッサによってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出し／書き込みを制御することによって、前段階の処理を行うサブプロセッサ２３が、処理済みのデータをメインメモリ２６内の所定アドレスに書き込んだ後に即座に、後段階の処理を行う別のサブプロセッサ２３が前処理後のデータを読み出すことが可能となる。
【００３２】
図２（Ｂ）に示すように、各サブプロセッサ２３内のＬＳ２４も、アドレス指定可能な複数のメモリロケーション０〜Ｌによって構成される。各メモリロケーションに対しては、同様に追加セグメント０〜Ｌが割り振られる。追加セグメントは、ビジービットを含むものとされる。
【００３３】
サブプロセッサ２３がメインメモリ２６内のデータを自身のＬＳ２４のメモリロケーションに読み出すときには、読み出し先のメモリロケーションに対応するビジービットを１に設定して予約する。ビジービットが１であるメモリロケーションには、他のデータは格納することができない。ＬＳ２４のメモリロケーションに読み出し後、ビジービットは０になり、任意の目的に使用できるようになる。
【００３４】
図２（Ａ）に示すように、さらに、各情報処理コントローラと接続されたメインメモリ２６には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ２６内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ２３に割り当てられ、そのサブプロセッサが排他的に使用することができる。すなわち、各々のサブプロセッサ２３は、自身に割り当てられたサンドボックスを使用できるが、この領域を超えてデータのアクセスを行うことはできない。
【００３５】
メインメモリ２６は、複数のメモリロケーション０〜Ｍから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。すなわち、１つのサンドボックスは、１つまたは複数のメモリロケーションから構成される。
【００３６】
さらに、メインメモリ２６の排他的な制御を実現するために、図２（Ｃ）に示すようなキー管理テーブルが用いられる。キー管理テーブルは、情報処理コントローラ内のＳＲＡＭのような比較的高速のメモリに格納され、ＤＭＡＣ２５と関連付けられる。
【００３７】
キー管理テーブル内には、情報処理コントローラ内のサブプロセッサの数と同数のエントリが存在し、各エントリには、サブプロセッサＩＤおよび、それに対応するサブプロセッサキーおよびキーマスクが関連付けられて格納される。
【００３８】
サブプロセッサ２３がメインメモリ２６を使用する際のプロセスは、以下のとおりである。まず、サブプロセッサ２３はＤＭＡＣ２５に、読み出しまたは書き込みのコマンドを送信する。このコマンドには、自身のサブプロセッサＩＤと、アクセス要求先であるメインメモリ２６のアドレスが含まれる。
【００３９】
ＤＭＡＣ２５は、このコマンドを実行する前に、キー管理テーブルを参照して、アクセス要求元のサブプロセッサ２３のサブプロセッサキーを調べる。次に、ＤＭＡＣ２５は、調べたアクセス要求元のサブプロセッサキーと、アクセス要求先であるメインメモリ２６内の図２（Ａ）に示したメモリロケーションに割り振られたアクセスキーとを比較して、２つのキーが一致した場合にのみ、上記のコマンドを実行する。
【００４０】
図２（Ｃ）に示したキー管理テーブル上のキーマスクは、その任意のビットが１になることによって、そのキーマスクに関連付けられたサブプロセッサキーの対応するビットが０または１になることができる。
【００４１】
例えば、サブプロセッサキーが１０１０であるとする。通常、このサブプロセッサキーによって１０１０のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが０００１に設定されている場合には、キーマスクのビットが１に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ、このサブプロセッサキー１０１０によって、アクセスキーが１０１０または１０１１のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
【００４２】
以上のようにして、メインメモリ２６のサンドボックスの排他性が実現される。すなわち、１つの情報処理コントローラ内の複数のサブプロセッサによってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサと、後段階の処理を行うサブプロセッサのみが、メインメモリ２６の所定アドレスにアクセスできるようになり、データを保護することができる。
【００４３】
例えば、以下のように使用することが考えられる。まず、情報処理装置の起動直後においては、キーマスクの値は全てゼロである。メインプロセッサ内のプログラムが実行され、サブプロセッサ内のサブプロセッサプログラムと連携動作するものとする。第１のサブプロセッサにより実行された処理結果データを一旦、メインメモリ２６に格納し、第２のサブプロセッサに送信したいときには、該当するメインメモリ領域は、当然どちらのサブプロセッサからもアクセス可能である必要がある。そのような場合に、メインプロセッサ内のプログラムは、キーマスクの値を適切に変更し、複数のサブプロセッサからアクセスできるメインメモリ領域を設けることにより、サブプロセッサによる多段階的の処理を可能にする。
【００４４】
より具体的には、他の情報処理装置からのデータ→第１のサブプロセッサによる処理→第１のメインメモリ領域→第２のサブプロセッサによる処理→第２のメインメモリ領域、という手順で多段階処理が行われるときには、
第１のサブプロセッサのサブプロセッサキー：０１００、
第１のメインメモリ領域のアクセスキー    ：０１００、
第２のサブプロセッサのサブプロセッサキー：０１０１、
第２のメインメモリ領域のアクセスキー    ：０１０１、
のような設定のままだと、第２のサブプロセッサは第１のメインメモリ領域にアクセスすることができない。そこで、第２のサブプロセッサのキーマスクを０００１にすることにより、第２のサブプロセッサによる第１のメインメモリ領域へのアクセスを可能にすることができる。
【００４５】
（１−３．ソフトウェアセルの生成および構成）
図１のネットワークシステムでは、情報処理装置１，２，３および４の間での分散処理のために、情報処理装置１，２，３および４の間でソフトウェアセルが伝送される。すなわち、ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１は、コマンド、プログラムおよびデータを含むソフトウェアセルを生成し、ネットワーク９を介して他の情報処理装置に送信することによって、処理を分散することができる。
【００４６】
図３に、ソフトウェアセルの構成の一例を示す。この例のソフトウェアセルは、全体として、送信元ＩＤ、送信先ＩＤ、応答先ＩＤ、セルインターフェース、ＤＭＡコマンド、プログラム、およびデータによって構成される。
【００４７】
送信元ＩＤには、ソフトウェアセルの送信元である情報処理装置のネットワークアドレスおよび情報処理装置ＩＤ、さらに、その情報処理装置内の情報処理コントローラが備えるメインプロセッサ２１および各サブプロセッサ２３の識別子（メインプロセッサＩＤおよびサブプロセッサＩＤ）が含まれる。
【００４８】
送信先ＩＤおよび応答先ＩＤには、それぞれ、ソフトウェアセルの送信先である情報処理装置、およびソフトウェアセルの実行結果の応答先である情報処理装置についての、同じ情報が含まれる。
【００４９】
セルインターフェースは、ソフトウェアセルの利用に必要な情報であり、グローバルＩＤ、必要なサブプロセッサの情報、サンドボックスサイズ、および前回のソフトウェアセルＩＤから構成される。
【００５０】
グローバルＩＤは、ネットワーク全体を通して当該のソフトウェアセルを一意的に識別できるものであり、送信元ＩＤ、およびソフトウェアセルの作成または送信の日時（日付および時刻）に基づいて作成される。
【００５１】
必要なサブプロセッサの情報は、当該ソフトウェアセルの実行に必要なサブプロセッサの数が設定される。サンドボックスサイズは、当該ソフトウェアセルの実行に必要なメインメモリ２６内およびサブプロセッサ２３のＬＳ２４内のメモリ量が設定される。
【００５２】
前回のソフトウェアセルＩＤは、ストリーミングデータなどのシーケンシャルな実行を要求する１グループのソフトウェアセル内の、前回のソフトウェアセルの識別子である。
【００５３】
ソフトウェアセルの実行セクションは、ＤＭＡコマンド、プログラムおよびデータから構成される。ＤＭＡコマンドには、プログラムの起動に必要な一連のＤＭＡコマンドが含まれ、プログラムには、サブプロセッサ２３によって実行されるサブプロセッサプログラムが含まれる。ここでのデータは、このサブプロセッサプログラムを含むプログラムによって処理されるデータである。
【００５４】
さらに、ＤＭＡコマンドには、ロードコマンド、キックコマンド、機能プログラム実行コマンド、ステータス要求コマンド、およびステータス返信コマンドが含まれる。
【００５５】
ロードコマンドは、メインメモリ２６内の情報をサブプロセッサ２３内のＬＳ２４にロードするコマンドであり、ロードコマンド自体のほかに、メインメモリアドレス、サブプロセッサＩＤおよびＬＳアドレスを含む。メインメモリアドレスは、情報のロード元であるメインメモリ２６内の所定領域のアドレスを示す。サブプロセッサＩＤおよびＬＳアドレスは、情報のロード先であるサブプロセッサ２３の識別子およびＬＳ２４のアドレスを示す。
【００５６】
キックコマンドは、サブプロセッサプログラムの実行を開始するコマンドであり、キックコマンド自体のほかに、サブプロセッサＩＤおよびプログラムカウンタを含む。サブプロセッサＩＤは、キック対象のサブプロセッサ２３を識別し、プログラムカウンタは、サブプロセッサプログラム実行用プログラムカウンタのためのアドレスを与える。
【００５７】
機能プログラム実行コマンドは、後述のように、ある情報処理装置が他の情報処理装置に対して、機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信した情報処理装置内の情報処理コントローラは、後述の機能プログラムＩＤによって、起動すべき機能プログラムを識別する。
【００５８】
ステータス要求コマンドは、送信先ＩＤで示される情報処理装置の現在の動作状態（状況）に関する装置情報を、応答先ＩＤで示される情報処理装置宛に送信することを要求するコマンドである。機能プログラムについては後述するが、図６に示す情報処理装置のメインメモリ２６が記憶するソフトウェアの構成図において機能プログラムにカテゴライズされるプログラムである。機能プログラムは、メインメモリ２６にロードされ、メインプロセッサ２１により実行される。
【００５９】
ステータス返信コマンドは、上記のステータス要求コマンドを受信した情報処理装置が、自身の装置情報を当該ステータス要求コマンドに含まれる応答先ＩＤで示される情報処理装置に応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納する。
【００６０】
図４に、ＤＭＡコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す。
【００６１】
情報処理装置ＩＤは、情報処理コントローラを備える情報処理装置を識別するための識別子であり、ステータス返信コマンドを送信する情報処理装置のＩＤを示す。情報処理装置ＩＤは、電源投入時、その情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１によって、電源投入時の日時、情報処理装置のネットワークアドレスおよび情報処理装置内の情報処理コントローラに含まれるサブプロセッサ２３の数などに基づいて生成される。
【００６２】
情報処理装置種別ＩＤには、当該の情報処理装置の特徴を表す値が含まれる。情報処理装置の特徴とは、例えば、後述のハードディスクレコーダ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）、ポータブルＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）プレーヤなどである。また、情報処理装置種別ＩＤは、映像音声記録、映像音声再生など、情報処理装置の機能を表すものであってもよい。情報処理装置の特徴や機能を表す値は予め決定されているものとし、情報処理装置種別ＩＤを読み出すことにより、当該情報処理装置の特徴や機能を把握することが可能である。
【００６３】
ＭＳ（マスター／スレーブ）ステータスは、後述のように情報処理装置がマスター装置またはスレーブ装置のいずれで動作しているかを表すもので、これが０に設定されている場合にはマスター装置として動作していることを示し、１に設定されている場合にはスレーブ装置として動作していることを示す。
【００６４】
メインプロセッサ動作周波数は、情報処理コントローラ内のメインプロセッサ２１の動作周波数を表す。メインプロセッサ使用率は、メインプロセッサ２１で現在動作している全てのプログラムについての、メインプロセッサ２１での使用率を表す。メインプロセッサ使用率は、対象メインプロセッサの全処理能力に対する使用中の処理能力の比率を表した値で、例えばプロセッサ処理能力評価のための単位であるＭＩＰＳを単位として算出され、または単位時間あたりのプロセッサ使用時間に基づいて算出される。後述のサブプロセッサ使用率についても同様である。
【００６５】
サブプロセッサ数は、当該の情報処理コントローラが備えるサブプロセッサ２３の数を表す。サブプロセッサＩＤは、当該の情報処理コントローラ内の各サブプロセッサ２３を識別するための識別子である。
【００６６】
サブプロセッサステータスは、各サブプロセッサ２３の状態を表すものであり、ｕｎｕｓｅｄ，ｒｅｓｅｒｖｅｄ，ｂｕｓｙなどの状態がある。ｕｎｕｓｅｄは、当該のサブプロセッサが現在使用されてなく、使用の予約もされていないことを示す。ｒｅｓｅｒｖｅｄは、現在は使用されていないが、使用が予約されている状態を示す。ｂｕｓｙは、現在使用中であることを示す。
【００６７】
サブプロセッサ使用率は、当該のサブプロセッサで現在実行している、または当該のサブプロセッサに実行が予約されているサブプロセッサプログラムについての、当該サブプロセッサでの使用率を表す。すなわち、サブプロセッサ使用率は、サブプロセッサステータスがｂｕｓｙである場合には、現在の使用率を示し、サブプロセッサステータスがｒｅｓｅｒｖｅｄである場合には、後に使用される予定の推定使用率を示す。
【００６８】
サブプロセッサＩＤ、サブプロセッサステータスおよびサブプロセッサ使用率は、１つのサブプロセッサ２３に対して一組設定され、１つの情報処理コントローラ内のサブプロセッサ２３の数の組数だけ設定される。
【００６９】
メインメモリ総容量およびメインメモリ使用量は、それぞれ、当該の情報処理コントローラに接続されているメインメモリ２６の総容量および現在使用中の容量を表す。
【００７０】
外部記録部数は、当該の情報処理コントローラに接続されている外部記録部２８の数を表す。外部記録部ＩＤは、当該の情報処理コントローラに接続されている外部記録部２８を一意的に識別する情報である。外部記録部種別ＩＤは、当該の外部記録部の種類（例えば、ハードディスク、ＣＤ±ＲＷ、ＤＶＤ±ＲＷ、メモリディスク、ＳＲＡＭ、ＲＯＭなど）を表す。
【００７１】
外部記録部総容量および外部記録部使用量は、それぞれ、外部記録部ＩＤによって識別される外部記録部２８の総容量および現在使用中の容量を表す。
【００７２】
外部記録部ＩＤ、外部記録部種別ＩＤ、外部記録部総容量および外部記録部使用量は、１つの外部記録部２８に対して一組設定され、当該の情報処理コントローラに接続されている外部記録部２８の数の組数だけ設定される。すなわち、１つの情報処理コントローラに複数の外部記録部が接続されている場合、各々の外部記録部には異なる外部記録部ＩＤが割り当てられ、外部記録部種別ＩＤ、外部記録部総容量および外部記録部使用量も別々に管理される。
【００７３】
（１−４．ソフトウェアセルの実行）
ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１は、以上のような構成のソフトウェアセルを生成し、ネットワーク９を介して他の情報処理装置および当該装置内の情報処理コントローラに送信する。送信元の情報処理装置、送信先の情報処理装置、応答先の情報処理装置、および各装置内の情報処理コントローラは、それぞれ、上記の送信元ＩＤ、送信先ＩＤおよび応答先ＩＤによって識別される。
【００７４】
ソフトウェアセルを受信した情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１は、そのソフトウェアセルをメインメモリ２６に格納する。さらに、送信先のメインプロセッサ２１は、ソフトウェアセルを読み出し、それに含まれるＤＭＡコマンドを処理する。
【００７５】
具体的に、送信先のメインプロセッサ２１は、まず、ロードコマンドを実行する。これによって、ロードコマンドで指示されたメインメモリアドレスから、ロードコマンドに含まれるサブプロセッサＩＤおよびＬＳアドレスで特定されるサブプロセッサ内のＬＳ２４の所定領域に、情報がロードされる。ここでロードされる情報は、受信したソフトウェアセルに含まれるサブプロセッサプログラムまたはデータ、あるいはその他の指示されたデータである。
【００７６】
次に、メインプロセッサ２１は、キックコマンドを、これに含まれるサブプロセッサＩＤで指示されたサブプロセッサに、同様にキックコマンドに含まれるプログラムカウンタと共に送信する。
【００７７】
指示されたサブプロセッサは、そのキックコマンドおよびプログラムカウンタに従って、サブプロセッサプログラムを実行する。そして、実行結果をメインメモリ２６に格納した後、実行を完了したことをメインプロセッサ２１に通知する。
【００７８】
なお、送信先の情報処理装置内の情報処理コントローラにおいてソフトウェアセルを実行するプロセッサはサブプロセッサ２３に限定されるものではなく、メインプロセッサ２１がソフトウェアセルに含まれる機能プログラムなどのメインメモリ用プログラムを実行するように指定することも可能である。
【００７９】
この場合には、送信元の情報処理装置は、送信先の情報処理装置宛に、サブプロセッサプログラムの代わりに、メインメモリ用プログラムおよびそのメインメモリ用プログラムによって処理されるデータを含み、ＤＭＡコマンドがロードコマンドであるソフトウェアセルを送信し、メインメモリ２６にメインメモリ用プログラムおよびそれによって処理されるデータを記憶させる。
【００８０】
次に、送信元の情報処理装置は、送信先の情報処理装置宛に、送信先の情報処理装置内の情報処理コントローラについてのメインプロセッサＩＤ、メインメモリアドレス、メインメモリ用プログラムを識別するための後述の機能プログラムＩＤなどの識別子、およびプログラムカウンタを含み、ＤＭＡコマンドがキックコマンドまたは機能プログラム実行コマンドであるソフトウェアセルを送信して、メインプロセッサ２１に当該メインメモリ用プログラムを実行させる。
【００８１】
以上のように、この発明のネットワークシステムでは、送信元の情報処理装置は、サブプロセッサプログラムまたはメインメモリ用プログラムをソフトウェアセルによって送信先の情報処理装置に送信するとともに、当該サブプロセッサプログラムを送信先の情報処理装置内の情報処理コントローラに含まれるサブプロセッサ２３にロードさせ、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置に実行させることができる。
【００８２】
送信先の情報処理装置内の情報処理コントローラでは、受信したソフトウェアセルに含まれるプログラムがサブプロセッサプログラムである場合には、当該サブプロセッサプログラムを指定されたサブプロセッサにロードさせる。そして、ソフトウェアセルに含まれるサブプロセッサプログラムまたはメインメモリ用プログラムを実行させる。
【００８３】
したがって、ユーザが送信先の情報処理装置を操作しなくても自動的に、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置内の情報処理コントローラに実行させることができる。
【００８４】
このようにして情報処理装置は、自装置内の情報処理コントローラがサブプロセッサプログラムまたは機能プログラムなどのメインメモリ用プログラムを有していない場合には、ネットワークに接続された他の情報処理装置からそれらを取得することができる。さらに、各サブプロセッサとメインメモリとの間ではＤＭＡ方式によりデータが転送され、また上述したサンドボックスを使用することによって、１つの情報処理コントローラ内でデータを多段階に処理する必要がある場合でも、高速かつ高セキュリティに処理を実行することができる。
【００８５】
［２．ネットワークシステムとしての分散処理その１］
ソフトウェアセルの使用による分散処理の結果、図５の上段に示すようにネットワーク９に接続されている複数の情報処理装置１，２，３および４は、図５の下段に示すように、仮想的な１台の情報処理装置７として動作する。ただし、そのためには、以下のような構成によって、以下のような処理が実行される必要がある。
【００８６】
（２−１．システムのソフトウェア構成とプログラムのロード）
図６に、個々の情報処理コントローラのメインメモリ２６が記憶するソフトウェアの構成を示す。これらのソフトウェア（プログラム）は、情報処理装置に電源が投入される前においては、当該の情報処理コントローラに接続される外部記録部２８に記録されているものである。
【００８７】
各プログラムは、機能または特徴によって、制御プログラム、機能プログラムおよびデバイスドライバにカテゴライズされる。
【００８８】
制御プログラムは、各情報処理コントローラが同じものを備え、各情報処理コントローラのメインプロセッサ２１が実行するもので、後述のＭＳ（マスター／スレーブ）マネージャおよび能力交換プログラムを含む。
【００８９】
機能プログラムは、メインプロセッサ２１が実行するもので、記録用、再生用、素材検索用など、情報処理コントローラごとに情報処理装置に応じたものが備えられる。
【００９０】
デバイスドライバは、情報処理コントローラ（情報処理装置）の入出力（送受信）用で、放送受信、モニタ出力、ビットストリーム入出力、ネットワーク入出力など、情報処理コントローラごとに情報処理装置に応じたものが備えられる。
【００９１】
ケーブルの差し込みなどによって情報処理装置が物理的にネットワーク９に接続された状態で、情報処理装置に主電源が投入され、情報処理装置が電気的・機能的にもネットワーク９に接続されると、その情報処理装置の情報処理コントローラのメインプロセッサ２１は、制御プログラムに属する各プログラム、およびデバイスドライバに属する各プログラムを、メインメモリ２６にロードする。
【００９２】
ロード手順としては、メインプロセッサ２１は、まず、ＤＣ２７に読み出し命令を実行させることによって、外部記録部２８からプログラムを読み出し、次に、ＤＭＡＣ２５に書き込み命令を実行させることによって、そのプログラムをメインメモリ２６に書き込む。
【００９３】
機能プログラムに属する各プログラムについては、必要なときに必要なプログラムだけをロードするように構成してもよく、または、他のカテゴリに属するプログラムと同様に、主電源投入直後に各プログラムをロードするように構成してもよい。
【００９４】
機能プログラムに属する各プログラムは、ネットワークに接続された全ての情報処理装置の外部記録部２８に記録されている必要はなく、いずれか１つの情報処理装置の外部記録部２８に記録されていれば、前述の方法によって他の情報処理装置からロードすることができるので、結果的に図５の下段に示すように、仮想的な１台の情報処理装置７として機能プログラムを実行することができる。
【００９５】
また、前述したように、メインプロセッサ２１によって処理される機能プログラムは、サブプロセッサ２３によって処理されるサブプロセッサプログラムと連携動作する場合がある。そこで、メインプロセッサ２１が外部記録部２８から機能プログラムを読み出し、メインメモリ２６に書き込む際、対象となる機能プログラムと連携動作するサブプロセッサプログラムが存在する場合には、当該サブプロセッサプログラムも併せて同じメインメモリ２６に書き込む。この場合、連携動作するサブプロセッサプログラムは、１個である場合もあるが、複数個であることもあり得る。複数個である場合には、全ての連携動作するサブプロセッサプログラムをメインメモリ２６に書き込む。
【００９６】
メインメモリ２６に書き込まれたサブプロセッサプログラムは、その後、サブプロセッサ２３内のＬＳ２４に書き込まれ、メインプロセッサ２１によって処理される機能プログラムと連携動作する。
【００９７】
図３のソフトウェアセルに示したように、機能プログラムには、プログラムごとにプログラムを一意的に識別できる識別子が、機能プログラムＩＤとして割り当てられる。機能プログラムＩＤは、機能プログラムの作成の段階で、作成日時や情報処理装置ＩＤなどから決定される。
【００９８】
サブプロセッサプログラムにもサブプロセッサプログラムＩＤが割り当てられ、これによりサブプロセッサプログラムを一意的に識別可能である。割り当てられるサブプロセッサプログラムＩＤは、連携動作の相手となる機能プログラムの機能プログラムＩＤと関連性のある識別子、例えば機能プログラムＩＤを親番号とした上で最後尾に枝番号を付加させた識別子でもよいが、連携動作の相手となる機能プログラムの機能プログラムＩＤとは関連性のない識別子でもよい。
【００９９】
いずれにしても、機能プログラムとサブプロセッサプログラムが連携動作する場合には、両者とも相手の識別子であるプログラムＩＤを自プログラム内に記憶しておく必要がある。機能プログラムが複数個のサブプロセッサプログラムと連携動作する場合にも、当該機能プログラムは、その複数個のサブプロセッサプログラムのサブプロセッサプログラムＩＤを全て記憶しておく。
【０１００】
メインプロセッサ２１は、自身が動作する情報処理装置の装置情報（動作状態に関する情報）を格納するための領域をメインメモリ２６に確保し、当該情報を自装置の装置情報テーブルとして記録する。ここでの装置情報は、図４に示した情報処理装置ＩＤ以下の各情報である。
【０１０１】
（２−２．システムにおけるマスター／スレーブの決定）
上述したネットワークシステムでは、ある情報処理装置への主電源投入時、その情報処理装置の情報処理コントローラのメインプロセッサ２１は、マスター／スレーブマネージャ（以下、ＭＳマネージャ）をメインメモリ２６にロードし、実行する。
【０１０２】
ＭＳマネージャは、自身が動作する情報処理装置がネットワーク９に接続されていることを検知すると、同じネットワーク９に接続されている他の情報処理装置の存在を確認する。ここでの「接続」または「存在」は、上述したように、情報処理装置が物理的にネットワーク９に接続されているだけでなく、電気的・機能的にもネットワーク９に接続されていることを示す。
【０１０３】
以下では、自身が動作する情報処理装置を自装置、他の情報処理装置を他装置と称する。当該装置も、当該情報処理装置を示すものとする。
【０１０４】
ＭＳマネージャが同じネットワーク９に接続されている他の情報処理装置の存在を確認する方法を、以下に示す。
【０１０５】
ＭＳマネージャは、ＤＭＡコマンドがステータス要求コマンドであり、送信元ＩＤおよび応答先ＩＤが当該情報処理装置で、送信先ＩＤを特定しないソフトウェアセルを生成して、当該情報処理装置が接続されたネットワーク上に送信し、ネットワーク接続確認用のタイマーを設定する。タイマーのタイムアウト時間は、例えば１０分とされる。
【０１０６】
当該ネットワークシステム上に他の情報処理装置が接続されている場合、その他装置は、上記ステータス要求コマンドのソフトウェアセルを受信し、上記応答先ＩＤで特定されるステータス要求コマンドを発行した情報処理装置に対して、ＤＭＡコマンドがステータス返信コマンドで、かつデータとして自身（その他装置）の装置情報を含むソフトウェアセルを送信する。このステータス返信コマンドのソフトウェアセルには、少なくとも当該他装置を特定する情報（情報処理装置ＩＤ、メインプロセッサに関する情報、サブプロセッサに関する情報など）および当該他装置のＭＳステータスが含まれる。
【０１０７】
ステータス要求コマンドを発行した情報処理装置のＭＳマネージャは、上記ネットワーク接続確認用のタイマーがタイムアウトするまで、当該ネットワーク上の他装置から送信されるステータス返信コマンドのソフトウェアセルの受信を監視する。その結果、ＭＳステータス＝０（マスター装置）を示すステータス返信コマンドが受信された場合には、自装置の装置情報テーブルにおけるＭＳステータスを１に設定する。これによって、当該装置はスレーブ装置となる。
【０１０８】
一方、上記ネットワーク接続確認用のタイマーがタイムアウトするまでの間にステータス返信コマンドが全く受信されなかった場合、またはＭＳステータス＝０（マスター装置）を示すステータス返信コマンドが受信されなかった場合には、自装置の装置情報テーブルにおけるＭＳステータスを０に設定する。これによって、当該装置はマスター装置となる。
【０１０９】
すなわち、いずれの装置もネットワーク９に接続されていない状態、またはネットワーク９上にマスター装置が存在しない状態において、新たな情報処理装置がネットワーク９に接続されると、当該装置は自動的にマスター装置として設定される。一方、ネットワーク９上に既にマスター装置が存在する状態において、新たな情報処理装置がネットワーク９に接続されると、当該装置は自動的にスレーブ装置として設定される。
【０１１０】
マスター装置およびスレーブ装置のいずれについても、ＭＳマネージャは、定期的にステータス要求コマンドをネットワーク９上の他装置に送信してステータス情報を照会することにより、他装置の状況を監視する。その結果、ネットワーク９に接続されている情報処理装置の主電源が遮断され、またはネットワーク９から情報処理装置が切り離されることにより、あらかじめ判定用に設定された所定期間内に特定の他装置からステータス返信コマンドが返信されなかった場合や、ネットワーク９に新たな情報処理装置が接続された場合など、ネットワーク９の接続状態に変化があった場合には、その情報を後述の能力交換プログラムに通知する。
【０１１１】
（２−３．マスター装置およびスレーブ装置における装置情報の取得）
メインプロセッサ２１は、ＭＳマネージャから、ネットワーク９上の他装置の照会および自装置のＭＳステータスの設定完了の通知を受けると、能力交換プログラムを実行する。
【０１１２】
能力交換プログラムは、自装置がマスター装置である場合には、ネットワーク９に接続されている全ての他装置の装置情報、すなわち各スレーブ装置の装置情報を取得する。
【０１１３】
他装置の装置情報の取得は、上述したように、ＤＭＡコマンドがステータス要求コマンドであるソフトウェアセルを生成して他装置に送信し、その後、ＤＭＡコマンドがステータス返信コマンドで、かつデータとして他装置の装置情報を含むソフトウェアセルを他装置から受信することによって可能である。
【０１１４】
能力交換プログラムは、マスター装置である自装置の装置情報テーブルと同様に、ネットワーク９に接続されている全ての他装置（各スレーブ装置）の装置情報を格納するための領域を自装置のメインメモリ２６に確保し、これら情報を他装置（スレーブ装置）の装置情報テーブルとして記録する。
【０１１５】
すなわち、マスター装置のメインメモリ２６には、自装置を含むネットワーク９に接続されている全ての情報処理装置の装置情報が、装置情報テーブルとして記録される。
【０１１６】
一方、能力交換プログラムは、自装置がスレーブ装置である場合には、ネットワーク９に接続されている全ての他装置の装置情報、すなわちマスター装置および自装置以外の各スレーブ装置の装置情報を取得し、これら装置情報に含まれる情報処理装置ＩＤおよびＭＳステータスを、自装置のメインメモリ２６に記録する。
【０１１７】
すなわち、スレーブ装置のメインメモリ２６には、自装置の装置情報が、装置情報テーブルとして記録されるとともに、自装置以外のネットワーク９に接続されているマスター装置および各スレーブ装置についての情報処理装置ＩＤおよびＭＳステータスが、別の装置情報テーブルとして記録される。
【０１１８】
また、マスター装置およびスレーブ装置のいずれについても、能力交換プログラムは、上記のようにＭＳマネージャから、新たにネットワーク９に情報処理装置が接続されたことが通知されたときには、その情報処理装置の装置情報を取得し、上述したようにメインメモリ２６に記録する。
【０１１９】
なお、ＭＳマネージャおよび能力交換プログラムは、メインプロセッサ２１で実行されることに限らず、いずれかのサブプロセッサ２３で実行されてもよい。また、ＭＳマネージャおよび能力交換プログラムは、情報処理装置の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
【０１２０】
（２−４．情報処理装置がネットワークから切断された場合）
マスター装置およびスレーブ装置のいずれについても、能力交換プログラムは、上記のようにＭＳマネージャから、ネットワーク９に接続されている情報処理装置の主電源が遮断され、またはネットワーク９から情報処理装置が切り離されたことが通知されたときには、その情報処理装置の装置情報テーブルを自装置のメインメモリ２６から削除する。
【０１２１】
さらに、このようにネットワーク９から切断された情報処理装置がマスター装置である場合には、以下のような方法によって、新たにマスター装置が決定される。
【０１２２】
具体的に、例えば、ネットワーク９から切断されていない情報処理装置は、それぞれ、自装置および他装置の情報処理装置ＩＤを数値に置き換えて、自装置の情報処理装置ＩＤを他装置の情報処理装置ＩＤと比較し、自装置の情報処理装置ＩＤがネットワーク９から切断されていない情報処理装置中で最小である場合、そのスレーブ装置は、マスター装置に移行して、ＭＳステータスを０に設定し、マスター装置として、上述したように、ネットワーク９に接続されている全ての他装置（各スレーブ装置）の装置情報を取得して、メインメモリ２６に記録する。
【０１２３】
（２−５．装置情報に基づく分散処理）
図５の下段に示したようにネットワーク９に接続されている複数の情報処理装置１，２，３および４を仮想的な１台の情報処理装置７として動作させるためには、マスター装置がユーザの操作およびスレーブ装置の動作状態を把握する必要がある。
【０１２４】
図７に、４台の情報処理装置が仮想的な１台の情報処理装置７として動作する様子を示す。情報処理装置１がマスター装置、情報処理装置２，３および４がスレーブ装置Ａ，ＢおよびＣとして、動作しているものとする。
【０１２５】
ユーザがネットワーク９に接続されている情報処理装置を操作した場合、操作対象がマスター装置１であれば、その操作情報は、マスター装置１において直接把握され、操作対象がスレーブ装置であれば、その操作情報は、操作されたスレーブ装置からマスター装置１に送信される。すなわち、ユーザの操作対象がマスター装置１とスレーブ装置のいずれであるかにかかわらず、その操作情報は常にマスター装置１において把握される。操作情報の送信は、例えば、ＤＭＡコマンドが操作情報送信コマンドであるソフトウェアセルによって行われる。
【０１２６】
そして、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、その操作情報に従って、実行する機能プログラムを選択する。その際、必要であれば、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、上記の方法によって自装置の外部記録部２８−１または２８−２からメインメモリ２６−１に機能プログラムをロードするが、他の情報処理装置（スレーブ装置）がマスター装置１に機能プログラムを送信してもよい。
【０１２７】
機能プログラムには、その実行単位ごとに必要となる、図４に示した各情報として表される情報処理装置種別ＩＤ、メインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件などの、装置に関する要求スペックが規定されている。
【０１２８】
マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、各機能プログラムについて必要となる上記要求スペックを読み出す。また、あらかじめ能力交換プログラムによってメインメモリ２６−１に記録された装置情報テーブルを参照し、各情報処理装置の装置情報を読み出す。ここでの装置情報は、図４に示した情報処理装置ＩＤ以下の各情報を示し、メインプロセッサ、サブプロセッサ、メインメモリおよび外部記録部に関する情報である。
【０１２９】
マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、ネットワーク９上に接続された各情報処理装置の上記装置情報と、機能プログラム実行に必要となる上記要求スペックとを順次比較する。
【０１３０】
そして、例えば、機能プログラムが録画機能を必要とする場合には、情報処理装置種別ＩＤに基づいて、録画機能を有する情報処理装置のみを特定して抽出する。さらに、機能プログラムを実行するために必要なメインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件を確保できるスレーブ装置を、実行要求候補装置として特定する。ここで、複数の実行要求候補装置が特定された場合には、当該候補装置から１つの実行要求候補装置を特定して選択する。
【０１３１】
実行要求するスレーブ装置が特定されたら、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、その特定されたスレーブ装置について、自装置内の情報処理コントローラ１１に含まれるメインメモリ２６−１に記録されている当該スレーブ装置の装置情報テーブルを更新する。
【０１３２】
さらに、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、ＤＭＡコマンドが機能プログラム実行コマンドであるソフトウェアセルを生成し、当該ソフトウェアセルのセルインターフェースに、当該機能プログラムに関する必要なサブプロセッサの情報およびサンドボックスサイズ（図３参照）を設定して、上記実行要求されるスレーブ装置に対して送信する。
【０１３３】
機能プログラムの実行を要求されたスレーブ装置は、その機能プログラムを実行するとともに、自装置の装置情報テーブルを更新する。その際、必要であれば、スレーブ装置内の情報処理コントローラに含まれるメインプロセッサ２１は、上記の方法によって自装置の外部記録部２８からメインメモリ２６に機能プログラムおよび当該機能プログラムと連携動作するサブプロセッサプログラムをロードする。
【０１３４】
機能プログラムの実行を要求されたスレーブ装置の外部記録部２８に、必要な機能プログラムまたは当該機能プログラムと連携動作するサブプロセッサプログラムが記録されていない場合には、他の情報処理装置が当該機能プログラムまたはサブプロセッサプログラムを、その機能プログラム実行要求先スレーブ装置に送信するように、システムを構成すればよい。
【０１３５】
サブプロセッサプログラムについては、前述のロードコマンドおよびキックコマンドを利用して他の情報処理装置に実行させることもできる。
【０１３６】
機能プログラムの実行終了後、機能プログラムを実行したスレーブ装置内の情報処理コントローラに含まれるメインプロセッサ２１は、終了通知をマスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１に送信するとともに、自装置の装置情報テーブルを更新する。マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、その終了通知を受信して、機能プログラムを実行したスレーブ装置の装置情報テーブルを更新する。
【０１３７】
マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、自装置および他装置の装置情報テーブルの参照結果から、当該の機能プログラムを実行することができる情報処理装置として、自身を選択する場合もあり得る。その場合には、マスター装置１が当該の機能プログラムを実行する。
【０１３８】
図７の例で、ユーザがスレーブ装置Ａ（情報処理装置２）を操作し、当該操作に応じた機能プログラムを別のスレーブ装置Ｂ（情報処理装置３）が実行する場合につき、図８に以上の分散処理の例を示す。
【０１３９】
図８の例では、ユーザがスレーブ装置Ａを操作することによって、スレーブ装置Ａを含むネットワークシステム全体の分散処理が開始して、まず、スレーブ装置Ａは、ステップ８１で、その操作情報をマスター装置１に送信する。
【０１４０】
マスター装置１は、ステップ７２で、その操作情報を受信し、さらにステップ７３に進んで、自装置のメインメモリ２６−１に記録されている自装置および他装置の装置情報テーブルから、各情報処理装置の動作状態を調べて、受信した操作情報に応じた機能プログラムを実行することができる情報処理装置を選択する。この例は、スレーブ装置Ｂが選択される場合である。
【０１４１】
次に、マスター装置１は、ステップ７４で、その選択したスレーブ装置Ｂに対して機能プログラムの実行を要求する。
【０１４２】
スレーブ装置Ｂは、ステップ９５で、その実行要求を受信し、さらにステップ９６に進んで、実行要求された機能プログラムを実行する。
【０１４３】
以上のように、ユーザは、１台の情報処理装置のみを操作することによって、他の情報処理装置を操作することなく、複数の情報処理装置１，２，３および４を仮想的な１台の情報処理装置７として動作させることができる。
【０１４４】
（２−６．各情報処理装置およびシステムの具体例）
ネットワーク９を介して互いに接続される情報処理装置１，２，３および４は、基本的に上記のような情報処理コントローラ１１，１２，１３および１４によって情報処理を行うものであれば、どのようなものでもよいが、図９に、その一例を示す。
【０１４５】
この例では、情報処理コントローラ１１を備える情報処理装置１は、ハードディスクレコーダで、図１０に示すように、ハードウェア構成としては、図１に示した外部記録部２８−１として、ハードディスクを内蔵し、図１に示した外部記録部２８−２として、ＤＶＤ±Ｒ／ＲＷ、ＣＤ±Ｒ／ＲＷ、Ｂｌｕ−ｒａｙＤｉｓｃ（登録商標）などの光ディスクを装着できるように構成されるとともに、情報処理コントローラ１１のバス２９−１に接続されたバス３１−１に、放送受信部３２−１、映像入力部３３−１、音声入力部３４−１、映像出力部３５−１、音声出力部３６−１、操作パネル部３７−１、リモコン受光部３８−１およびネットワーク接続部３９−１が接続されたものである。
【０１４６】
放送受信部３２−１、映像入力部３３−１および音声入力部３４−１は、放送信号を受信し、または情報処理装置１の外部から映像信号および音声信号を入力し、それぞれ所定フォーマットのデジタルデータに変換して、情報処理コントローラ１１での処理のためにバス３１−１に送出するものであり、映像出力部３５−１および音声出力部３６−１は、情報処理コントローラ１１からバス３１−１に送出された映像データおよび音声データを処理して、デジタルデータのまま、またはアナログ信号に変換して、情報処理装置１の外部に送出するものであり、リモコン受光部３８−１は、リモコン送信器４３−１からのリモコン（遠隔操作）赤外線信号を受信するものである。
【０１４７】
図９および図１０に示すように、情報処理装置（ハードディスクレコーダ）１の映像出力部３５−１および音声出力部３６−１には、モニタ表示装置４１およびスピーカ装置４２が接続される。
【０１４８】
図９の例の、情報処理コントローラ１２を備える情報処理装置２も、ハードディスクレコーダで、図１０において括弧内に参照番号を付して示すように、情報処理装置１と同様に構成されたものである。ただし、例えば、図９に示すように、情報処理装置（ハードディスクレコーダ）２には、モニタ表示装置およびスピーカ装置は接続されない。
【０１４９】
情報処理装置（ハードディスクレコーダ）１および２、すなわち情報処理コントローラ１１および１２のソフトウェア構成としては、図１１に示すように、制御プログラムとして、ＭＳマネージャおよび能力交換プログラムを備え、機能プログラムとして、映像音声記録、映像音声再生、素材検索および番組録画予約のためのプログラムを備え、デバイスドライバとして、放送受信、映像出力、音声出力、外部記録部入出力およびネットワーク入出力のためのプログラムを備える。
【０１５０】
図９の例の、情報処理コントローラ１３を備える情報処理装置３は、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）で、図１２に示すように、ハードウェア構成としては、図１に示した外部記録部２８−５として、メモリカードディスクを装着できるように構成されるとともに、情報処理コントローラ１３のバス２９−３に接続されたバス５１に、液晶表示部５２、音声出力部５３、カメラ部５４、音声入力部５５、キーボード部５６およびネットワーク接続部５７が接続されたものである。
【０１５１】
なお、図１では内部を省略した情報処理コントローラ１３は、メインプロセッサ２１−３、サブプロセッサ２３−７，２３−８および２３−９、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）２５−３、ＤＣ（ディスクコントローラ）２７−３、およびバス２９−３を備え、そのメインプロセッサ２１−３は、ＬＳ（ローカルストレージ）２２−３を有し、各サブプロセッサ２３−７，２３−８および２３−９は、ＬＳ（ローカルストレージ）２４−７，２４−８および２４−９を有する。
【０１５２】
情報処理装置（ＰＤＡ）３、すなわち情報処理コントローラ１３のソフトウェア構成としては、図１３に示すように、制御プログラムとして、ＭＳマネージャおよび能力交換プログラムを備え、機能プログラムとして、映像音声記録、映像音声再生、電話帳、ワープロおよび表計算のためのプログラム、およびＷｅｂブラウザを備え、デバイスドライバとして、映像出力、音声出力、カメラ映像入力、マイク音声入力およびネットワーク入出力のためのプログラムを備える。
【０１５３】
図９の例の、情報処理コントローラ１４を備える情報処理装置４は、ポータブルＣＤプレーヤで、図１４に示すように、ハードウェア構成としては、図１に示した外部記録部２８−６として、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）を装着できるように構成されるとともに、情報処理コントローラ１４のバス２９−４に接続されたバス６１に、液晶表示部６２、音声出力部６３、操作ボタン部６４およびネットワーク接続部６５が接続されたものである。
【０１５４】
なお、図１では内部を省略した情報処理コントローラ１４は、メインプロセッサ２１−４、サブプロセッサ２３−１０，２３−１１および２３−１２、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）２５−４、ＤＣ（ディスクコントローラ）２７−４、およびバス２９−４を備え、そのメインプロセッサ２１−４は、ＬＳ（ローカルストレージ）２２−４を有し、各サブプロセッサ２３−１０，２３−１１および２３−１２は、ＬＳ（ローカルストレージ）２４−１０，２４−１１および２４−１２を有する。
【０１５５】
情報処理装置（ポータブルＣＤプレーヤ）４、すなわち情報処理コントローラ１４のソフトウェア構成としては、図１５に示すように、制御プログラムとして、ＭＳマネージャおよび能力交換プログラムを備え、機能プログラムとして、音楽再生のためのプログラムを備え、デバイスドライバとして、音声出力、ＣＤ制御およびネットワーク入出力のためのプログラムを備える。
【０１５６】
以上のような図９の例のネットワークシステムにおいて、情報処理装置１，３および４がネットワーク９上に接続されており、情報処理装置１がマスター装置（ＭＳステータス＝０）として、情報処理装置３および４がスレーブ装置（ＭＳステータス＝１）として、設定されているものとする。
【０１５７】
この状態で、新たに情報処理装置２がネットワーク９に接続されると、上述した方法によって、情報処理装置２内の情報処理コントローラ１２に含まれるメインプロセッサ２１−２で実行されているＭＳマネージャは、他の情報処理装置１，３および４にＭＳステータスを照会して、情報処理装置１が既にマスター装置として存在することを認識し、自装置（情報処理装置２）をスレーブ装置（ＭＳステータス＝１）に設定する。また、マスター装置に設定されている情報処理装置１は、新たに追加された情報処理装置２を含む各装置の装置情報を収集して、メインメモリ２６−１内の装置情報テーブルを更新する。
【０１５８】
このような状態で、ユーザによってスレーブ装置である情報処理装置（ＰＤＡ）３で２時間の放送番組の録画予約の操作が行われた場合を示す。
【０１５９】
この場合、スレーブ装置である情報処理装置（ＰＤＡ）３は、ユーザから録画開始時刻、録画終了時刻、録画対象放送チャネル、録画品質などの情報を含む録画予約情報の入力を受け付け、当該録画予約情報およびＤＭＡコマンドとしての録画予約コマンドを含むソフトウェアセルを生成して、マスター装置である情報処理装置１に送信する。
【０１６０】
ＤＭＡコマンドが録画予約コマンドであるソフトウェアセルを受信した情報処理装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、録画予約コマンドを読み出すとともに、メインメモリ２６−１内の装置情報テーブルを参照して、当該録画予約コマンドを実行可能な情報処理装置を特定する。
【０１６１】
まず、メインプロセッサ２１−１は、装置情報テーブルに含まれる各情報処理装置１，２，３および４の情報処理装置種別ＩＤを読み出して、録画予約コマンドに対応する機能プログラムを実行可能な情報処理装置を抽出する。ここでは、録画機能を示す情報処理装置種別ＩＤを有する情報処理装置１および２が候補装置として特定され、情報処理装置３および４は候補装置から除外される。
【０１６２】
次に、マスター装置である情報処理装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、装置情報テーブルを参照して、情報処理装置１および２のメインプロセッサまたはサブプロセッサの処理能力、メインメモリに関する情報などの、装置に関する情報を読み出し、情報処理装置１および２が録画予約コマンドに対応する機能プログラムの実行に必要な要求スペックを満足するか否かを判断する。ここでは、情報処理装置１，２とも、録画予約コマンドに対応する機能プログラムの実行に必要な要求スペックを満足するものとする。
【０１６３】
さらに、メインプロセッサ２１−１は、装置情報テーブルを参照して、情報処理装置１および２の外部記録部に関する情報を読み出し、外部記録部の空き容量が当該録画予約コマンドの実行に必要な容量を満足するか否かを判断する。情報処理装置１および２はハードディスクレコーダであるので、それぞれハードディスク２８−１および２８−３の、総容量と使用量との差分が、それぞれの空き容量に相当する。
【０１６４】
この場合、情報処理装置１のハードディスク２８−１の空き容量が、録画時間に換算して１０分であり、情報処理装置２のハードディスク２８−３の空き容量が、録画時間に換算して２０時間であるとする。
【０１６５】
このとき、マスター装置である情報処理装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、当該録画予約コマンドの実行に必要な２時間分の空き容量を確保できる情報処理装置を、実行要求先スレーブ装置として特定する。
【０１６６】
その結果、情報処理装置２のみが実行要求先スレーブ装置として選択され、マスター装置である情報処理装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、ユーザにより操作された情報処理装置３から送信された録画予約情報を含む当該録画予約コマンドを情報処理装置２に送信して、上記２時間の放送番組の録画予約の実行を要求する。
【０１６７】
そして、情報処理装置２内の情報処理コントローラ１２に含まれるメインプロセッサ２１−２は、当該録画予約コマンドを解析して、録画に必要な機能プログラムを外部記録部であるハードディスク２８−３からメインメモリ２６−２にロードし、録画予約情報に従って録画を実行する。その結果、録画予約された２時間の放送番組の映像音声データが情報処理装置２のハードディスク２８−３に記録される。
【０１６８】
このように、図９の例のネットワークシステムにおいても、ユーザは、１台の情報処理装置のみを操作することによって、他の情報処理装置を操作することなく、複数の情報処理装置１，２，３および４を仮想的な１台の情報処理装置７として動作させることができる。
【０１６９】
［３．ネットワークシステムおよび情報処理装置の基本的構成その２］
図１６は、この発明のネットワークシステムの他の例を示し、ネットワーク１００９を介して複数の情報処理装置１００１，１００２，１００３および１００４が接続されたものである。
【０１７０】
（３−１．情報処理装置および情報処理コントローラ）
情報処理装置１００１，１００２，１００３および１００４は、それぞれ後述のような各種のＡＶ（Ａｕｄｉｏ  ａｎｄ  Ｖｉｓｕａｌ）機器やポータブル機器である。
【０１７１】
情報処理装置１００１について示すと、情報処理装置１００１は、コンピュータ機能部として情報処理コントローラ１０１１を備える。情報処理コントローラ１０１１は、メインプロセッサ１０２１−１、サブプロセッサ１０２３−１，１０２３−２および１０２３−３、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）１０２５−１、コントロールレジスタ１０２８−１、ワークメモリ１０２９−１、およびＤＣ（ディスクコントローラ）１０３０−１を有する。
【０１７２】
メインプロセッサ１０２１−１は、サブプロセッサ１０２３−１，１０２３−２および１０２３−３によるサブプロセッサプログラムの実行（データ処理）のスケジュール管理と、情報処理コントローラ１０１１（情報処理装置１００１）の全般的な管理とを行う。ただし、メインプロセッサ１０２１−１内で管理のためのプログラム以外のプログラムが動作するように構成することもできる。その場合には、メインプロセッサ１０２１−１はサブプロセッサとしても機能することになる。メインプロセッサ１０２１−１は、ＬＳ（ローカルストレージ）１０２２−１を有する。
【０１７３】
サブプロセッサは、１つでもよいが、望ましくは複数とする。この例は、複数の場合である。
【０１７４】
各サブプロセッサ１０２３−１，１０２３−２および１０２３−３は、メインプロセッサ１０２１−１の制御によって並列的かつ独立に、サブプロセッサプログラムを実行し、データを処理する。さらに、場合によってメインプロセッサ１０２１−１内のプログラムがサブプロセッサ１０２３−１，１０２３−２または１０２３−３内のサブプロセッサプログラムと連携して動作するように構成することもできる。後述する機能プログラムも、メインプロセッサ１０２１−１内で動作するプログラムである。各サブプロセッサ１０２３−１，１０２３−２および１０２３−３も、ＬＳ（ローカルストレージ）１０２４−１，１０２４−２および１０２４−３を有する。
【０１７５】
ＤＭＡＣ１０２５−１は、それぞれ情報処理コントローラ１０１１に接続された、ＤＲＡＭ（ダイナミックＲＡＭ）などからなるメインメモリ１０２６−１およびＳＲＡＭ（スタティックＲＡＭ）などからなるサブメモリ１０２７−１に格納されているプログラムおよびデータにアクセスするためのものである。ＤＭＡＣ１０２５−１を介すことにより、各サブプロセッサとメインメモリ１０２６−１との間ではＤＭＡ方式によりデータ転送を行うことができ、高速化を実現することができる。
【０１７６】
コントロールレジスタ１０２８−１は、情報処理コントローラ１０１１内で処理されるべきサブプロセッサプログラムを、どのサブプロセッサが、さらにはサブプロセッサ内に複数個存在する後述のプレセッシングスレッドのいずれが、処理するかを決定するとともに、サブプロセッサによるサブプロセッサプログラム実行の進捗を管理するために使用される。
【０１７７】
ワークメモリ１０２９−１は、情報処理コントローラ１０１１内に含まれるＳＲＡＭなどからなる作業用メモリであり、メインプロセッサ１０２１−１、およびサブプロセッサ１０２３−１，１０２３−２および１０２３−３によってアクセスされる。
【０１７８】
ＤＣ１０３０−１は、情報処理コントローラ１０１１に接続された外部記録部１０３１−１および１０３１−２にアクセスするものである。
【０１７９】
外部記録部１０３１−１および１０３１−２は、固定ディスク（ハードディスク）でも、リムーバブルディスクでもよく、また、ＭＯ，ＣＤ±ＲＷ，ＤＶＤ±ＲＷなどの光ディスク、メモリディスク、ＳＲＡＭ（スタティックＲＡＭ）、ＲＯＭなど、各種のものを用いることができる。したがって、ＤＣ１０３０−１は、ディスクコントローラと称するが、外部記録部コントローラである。
【０１８０】
図１６の例のように、情報処理コントローラ１０１１に対して外部記録部１０３１を複数接続できるように、情報処理コントローラ１０１１を構成することができる。
【０１８１】
メインプロセッサ１０２１−１、各サブプロセッサ１０２３−１，１０２３−２および１０２３−３、ＤＭＡＣ１０２５−１、コントロールレジスタ１０２８−１、ワークメモリ１０２９−１、およびＤＣ１０３０−１は、バス１０３２−１によって接続される。
【０１８２】
情報処理コントローラ１０１１には、当該の情報処理コントローラ１０１１を備える情報処理装置１００１をネットワーク全体を通して一意的に識別できる識別子が、情報処理装置ＩＤとして割り当てられる。
【０１８３】
メインプロセッサ１０２１−１、および各サブプロセッサ１０２３−１，１０２３−２および１０２３−３に対しても同様に、それぞれを特定できる識別子が、メインプロセッサＩＤおよびサブプロセッサＩＤとして割り当てられる。
【０１８４】
情報処理コントローラ１０１１は、ワンチップＩＣ（集積回路）として構成することが望ましい。
【０１８５】
他の情報処理装置１００２，１００３および１００４も、同様に構成される。ここで、親番号が同一であるユニットは、枝番号が異なっていても、特に断りがない限り、同じ働きをするものとする。また、以下の説明において枝番号が省略されている場合には、枝番号の違いにいる差異を生じないものとする。
【０１８６】
（３−２．各サブプロセッサからメインメモリへのアクセス）
上述したように、１つの情報処理コントローラ内の各サブプロセッサ１０２３は、独立にサブプロセッサプログラムを実行し、データを処理するが、異なるサブプロセッサがメインメモリ１０２６内の同一領域に対して同時に読み出しまたは書き込みを行った場合には、データの不整合を生じ得る。そこで、サブプロセッサ１０２３からメインメモリ１０２６へのアクセスは、以下のような手順によって行う。
【０１８７】
サブメモリ１０２７およびワークメモリ１０２９についても同様に、異なるサブプロセッサが同一領域に対して同時にアクセスすることが考えられるが、ここでは、メインメモリ１０２６について示す。
【０１８８】
図１７（Ａ）に示すように、メインメモリ１０２６は、アドレス指定可能な複数のメモリロケーション０〜Ｎによって構成される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメント０〜Ｎが割り振られる。追加セグメントは、Ｆ／Ｅビット、サブプロセッサＩＤおよびＬＳアドレス（ローカルストレージアドレス）を含むものとされる。また、各メモリロケーションには、後述のアクセスキー０〜Ｎも割り振られる。Ｆ／Ｅビットは、以下のように定義される。
【０１８９】
Ｆ／Ｅビット＝０は、サブプロセッサ１０２３によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、読み出し不可であることを示す。また、Ｆ／Ｅビット＝０は、当該メモリロケーションにデータ書き込み可能であることを示し、書き込み後に１に設定される。
【０１９０】
Ｆ／Ｅビット＝１は、当該メモリロケーションのデータがサブプロセッサ１０２３によって読み出されておらず、未処理の最新データであることを示す。当該メモリロケーションのデータは読み出し可能であり、サブプロセッサ１０２３によって読み出された後に０に設定される。また、Ｆ／Ｅビット＝１は、当該メモリロケーションがデータ書き込み不可であることを示す。
【０１９１】
さらに、上記Ｆ／Ｅビット＝０（読み出し不可／書き込み可）の状態において、当該メモリロケーションについて読み出し予約を設定することは可能である。Ｆ／Ｅビット＝０のメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ１０２３は、読み出し予約を行うメモリロケーションの追加セグメントに、読み出し予約情報として当該サブプロセッサ１０２３のサブプロセッサＩＤおよびＬＳアドレスを書き込む。
【０１９２】
その後、データ書き込み側のサブプロセッサ１０２３によって、読み出し予約されたメモリロケーションにデータが書き込まれ、Ｆ／Ｅビット＝１（読み出し可／書き込み不可）に設定されたとき、あらかじめ読み出し予約情報として追加セグメントに書き込まれたサブプロセッサＩＤおよびＬＳアドレスに読み出される。
【０１９３】
複数のサブプロセッサによってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出し／書き込みを制御することによって、前段階の処理を行うサブプロセッサ１０２３が、処理済みのデータをメインメモリ１０２６内の所定アドレスに書き込んだ後に即座に、後段階の処理を行う別のサブプロセッサ１０２３が前処理後のデータを読み出すことが可能となる。
【０１９４】
図１７（Ｂ）に示すように、各サブプロセッサ１０２３内のＬＳ１０２４も、アドレス指定可能な複数のメモリロケーション０〜Ｌによって構成される。各メモリロケーションに対しては、同様に追加セグメント０〜Ｌが割り振られる。追加セグメントは、ビジービットを含むものとされる。
【０１９５】
サブプロセッサ１０２３がメインメモリ１０２６内のデータを自身のＬＳ１０２４のメモリロケーションに読み出すときには、読み出し先のメモリロケーションに対応するビジービットを１に設定して予約する。ビジービットが１であるメモリロケーションには、他のデータは格納することができない。ＬＳ１０２４のメモリロケーションに読み出し後、ビジービットは０になり、任意の目的に使用できるようになる。
【０１９６】
図１７（Ａ）に示すように、さらに、各情報処理コントローラと接続されたメインメモリ１０２６には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ１０２６内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ１０２３に割り当てられ、そのサブプロセッサが排他的に使用することができる。すなわち、各々のサブプロセッサ１０２３は、自身に割り当てられたサンドボックスを使用できるが、この領域を超えてデータのアクセスを行うことはできない。
【０１９７】
メインメモリ１０２６は、複数のメモリロケーション０〜Ｎから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。すなわち、１つのサンドボックスは、１つまたは複数のメモリロケーションから構成される。
【０１９８】
さらに、メインメモリ１０２６の排他的な制御を実現するために、図１７（Ｃ）に示すようなキー管理テーブルが用いられる。キー管理テーブルは、情報処理コントローラ内のＳＲＡＭのような比較的高速のメモリに格納され、ＤＭＡＣ１０２５と関連付けられる。ただし、キー管理テーブルは、ワークメモリ１０２９に格納されてもよい。
【０１９９】
キー管理テーブル内には、情報処理コントローラ内のサブプロセッサの数と同数のエントリが存在し、各エントリには、サブプロセッサＩＤおよび、それに対応するサブプロセッサキーおよびキーマスクが関連付けられて格納される。
【０２００】
サブプロセッサ１０２３がメインメモリ１０２６を使用する際のプロセスは、以下のとおりである。まず、サブプロセッサ１０２３はＤＭＡＣ１０２５に、読み出しまたは書き込みのコマンドを送信する。このコマンドには、自身のサブプロセッサＩＤと、アクセス要求先であるメインメモリ１０２６内のアドレスが含まれる。
【０２０１】
ＤＭＡＣ１０２５は、このコマンドを実行する前に、キー管理テーブルを参照して、アクセス要求元のサブプロセッサ１０２３のサブプロセッサキーを調べる。次に、ＤＭＡＣ１０２５は、調べたアクセス要求元のサブプロセッサキーと、アクセス要求先であるメインメモリ１０２６内の図１７（Ａ）に示したメモリロケーションに割り振られたアクセスキーとを比較して、２つのキーが一致した場合にのみ、上記のコマンドを実行する。
【０２０２】
図１７（Ｃ）に示したキー管理テーブル上のキーマスクは、その任意のビットが１になることによって、そのキーマスクに関連付けられたサブプロセッサキーの対応するビットが０または１になることができる。
【０２０３】
例えば、サブプロセッサキーが１０１０であるとする。通常、このサブプロセッサキーによって１０１０のアクセスキーを持つサンドボックスへのアクセスだけが可能である。しかし、このサブプロセッサキーと関連付けられたキーマスクが０００１に設定されている場合には、キーマスクのビットが１に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ、このサブプロセッサキー１０１０によって、アクセスキーが１０１０または１０１１のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
【０２０４】
以上のようにして、メインメモリ１０２６のサンドボックスの排他性が実現される。すなわち、１つの情報処理コントローラ内の複数のサブプロセッサによってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサと、後段階の処理を行うサブプロセッサのみが、メインメモリ１０２６内の所定アドレスにアクセスできるようになり、データを保護することができる。
【０２０５】
例えば、以下のように使用することが考えられる。まず、情報処理装置の起動直後においては、キーマスクの値は全てゼロである。メインプロセッサ内のプログラムが実行され、サブプロセッサ内のサブプロセッサプログラムと連携動作するものとする。第１のサブプロセッサにより実行された処理結果データを一旦、メインメモリ１０２６に格納し、第２のサブプロセッサに送信したいときには、該当するメインメモリ領域は、当然どちらのサブプロセッサからもアクセス可能である必要がある。そのような場合に、メインプロセッサ内のプログラムは、キーマスクの値を適切に変更し、複数のサブプロセッサからアクセスできるメインメモリ領域を設けることにより、サブプロセッサによる多段階的の処理を可能にする。
【０２０６】
より具体的には、他の情報処理装置からのデータ→第１のサブプロセッサによる処理→第１のメインメモリ領域→第２のサブプロセッサによる処理→第２のメインメモリ領域、という手順で多段階処理が行われるときには、
第１のサブプロセッサのサブプロセッサキー：０１００、
第１のメインメモリ領域のアクセスキー    ：０１００、
第２のサブプロセッサのサブプロセッサキー：０１０１、
第２のメインメモリ領域のアクセスキー    ：０１０１、
のような設定のままだと、第２のサブプロセッサは第１のメインメモリ領域にアクセスすることができない。そこで、第２のサブプロセッサのキーマスクを０００１にすることにより、第２のサブプロセッサによる第１のメインメモリ領域へのアクセスを可能にすることができる。
【０２０７】
（３−３．各サブプロセッサからメインメモリおよびサブメモリへのアクセス）
１つの情報処理コントローラ内の各サブプロセッサ１０２３は、メインメモリ１０２６に対してと同様に、サブメモリ１０２７に対しても、読み出しまたは書き込みが可能であるが、そのコマンドには、いくつかの種類が考えられ、優先度の高低があることもあり得る。そこで以下に、各サブプロセッサ１０２３が正確にメインメモリ１０２６およびサブメモリ１０２７を使用するための構成および手順を示す。
【０２０８】
図１８に示すように、ＤＭＡＣ１０２５は内部に、メインメモリコントロールレジスタ１０３３およびサブメモリコントロールレジスタ１０３４を有する。メインメモリコントロールレジスタ１０３３は、メインメモリ１０２６にアクセスするためのものであり、サブメモリコントロールレジスタ１０３４は、サブメモリ１０２７にアクセスするためのものである。
【０２０９】
メインメモリコントロールレジスタ１０３３は、以下の４つのブロックから構成され、以下のように各々がメインメモリ１０２６にアクセスするためのコマンドを格納する。
【０２１０】
優先コマンドブロックには、優先度の高いコマンドを複数個格納する。そのコマンドは優先的に処理される。
【０２１１】
通常コマンドブロック１には、通常のコマンドを複数個格納し、通常コマンドブロック２にも、通常のコマンドを複数個格納する。通常コマンドブロック１と通常コマンドブロック２との間には、機能的な差はないが、例えば、メインメモリ１０２６へのアクセス実行前のコマンドを一方のブロックに格納し、実行後のコマンドを他方のブロックに格納することにより、実行前と実行後のコマンドを、それぞれ集中的および連続的に処理することができる効果がある。
【０２１２】
オーダーコマンドブロックには、正しい順番で処理される必要のあるコマンドを複数個格納する。すなわち、各サブプロセッサ１０２３からのコマンドを、受信した順番に、コマンド送信元のサブプロセッサのサブプロセッサＩＤと共に格納する。これにより、受信した順番にコマンドを処理し、かつ同じ順番でコマンド送信元サブプロセッサに実行結果を返信することができる。
【０２１３】
サブメモリコントロールレジスタ１０３４も、以下の４つのブロックから構成され、以下のように各々がサブメモリ１０２７にアクセスするためのコマンドを格納する。
【０２１４】
優先コマンドブロックには、優先度の高いコマンドを複数個格納する。そのコマンドは優先的に処理される。
【０２１５】
リードコマンドブロックには、リードコマンドを複数個格納し、ライトコマンドブロックには、ライトコマンドを複数個格納する。
【０２１６】
待ちコマンドブロックには、サブメモリ１０２７内の任意の領域に対してアクセスを試みたが、対象領域がロックされていてアクセス不可であったコマンドを複数個格納する。ロック解除時には、そのコマンドは優先コマンドブロックに移動する。
【０２１７】
各サブプロセッサ１０２３は、例えば、図１９に示すような構造のコマンドによって、メインメモリ１０２６またはサブメモリ１０２７にアクセスする。アクセス実行後のメインメモリ１０２６またはサブメモリ１０２７からの実行結果のレスポンスも、同一構造とされる。
【０２１８】
このコマンド／レスポンス構造において、コマンドタイプとしては、リードとライトがある。優先コマンド識別子は、当該コマンドが優先度の高いコマンドであることを示す。通常コマンド識別子は、メインメモリ１０２６へのアクセス時のものであり、当該コマンドが通常コマンドブロック１または通常コマンドブロック２に格納されることを示す。
【０２１９】
チェーンコマンド識別子も、メインメモリ１０２６へのアクセス時のものであり、当該コマンドが直前または直後のコマンドと共に連続的なアクセスが必要であることを示す。または、連続するコマンド列の通し番号でもよい。チェーンコマンド識別子がセットされたコマンドは、オーダーコマンドブロックに格納されるが、処理の優先度は、優先コマンドブロック内のコマンドより高いものとする。
【０２２０】
ここでのアドレスは、コマンドを実行するメインメモリ１０２６またはサブメモリ１０２７内のアドレスを示す。または、ワークメモリ１０２９内のアドレスでもよい。
【０２２１】
サブプロセッサ識別子は、コマンド送信元のサブプロセッサのサブプロセッサＩＤである。プレセッシングスレッド識別子は、コマンド送信元の後述するプレセッシングスレッドの識別子である。
【０２２２】
ＯＫ／ＮＧは、コマンドの成功／失敗を示す。ここでのデータは、リードコマンド実行時にレスポンスに含まれる読み出されたデータ、またはライトコマンド実行時にコマンドに含まれる書き込まれるデータである。
【０２２３】
図１８に示すように、ＤＭＡＣ１０２５内には、上述した各サブプロセッサ１０２３がメインメモリ１０２６に正確にアクセスするためのメインメモリコントロールレジスタ１０３３、および各サブプロセッサ１０２３がサブメモリ１０２７に正確にアクセスするためのサブメモリコントロールレジスタ１０３４のほかに、メインプロセッサ１０２１がメインメモリ１０２６またはサブメモリ１０２７にアクセスするためのリードコマンドおよびライトコマンドをそれぞれ複数個格納できるメインプロセッサ用リードコマンドブロック１０３５およびメインプロセッサ用ライトコマンドブロック１０３６を設けることもできる。アドレス変換レジスタ１０３７については、後述する。
【０２２４】
さらに、複数のサブプロセッサがＤＭＡＣ１０２５に対して、優先度の同じメモリアクセスコマンドを同じタイミングで送信した場合には、以下の手順に従うものとする。すなわち、ＤＭＡＣ１０２５は、内部にメモリアクセスに成功した最後のサブプロセッサを示すポインタを有するものとし、複数のサブプロセッサから優先度の同じメモリアクセスコマンドを同じタイミングで受信したときには、当該ポインタより値が大きく、かつ当該ポインタとの差分が最も小さいコマンドを優先させるものとする。この場合、一番大きいポインタ値の次は、一番小さいポインタ値とする。
【０２２５】
（３−４．各サブプロセッサからメインメモリに正確にアクセスするためのサブメモリへのアクセス）
ＤＲＡＭなどにより構成されるメインメモリ１０２６、およびＳＲＡＭなどにより構成されるサブメモリ１０２７は、当然のことながら、各々の素子の構造が異なるため、使用目的も異なってくる。
【０２２６】
そこで、メインメモリ１０２６とサブメモリ１０２７を組み合わせて使用する方法の一例として、各サブプロセッサ１０２３がメインメモリ１０２６にアクセスするときのアドレス変換をサブメモリ１０２７が担うことが考えられる。そのための構成および手順を、図２０を用いて示す。
【０２２７】
前述したように、メインメモリ１０２６は、複数のメモリロケーションによって構成され、さらに１つのサンドボックスは、１つまたは複数のメモリロケーションから構成される。そして、各サブプロセッサ１０２３は、自身に割り当てられたサンドボックスを排他的に使用することができる。
【０２２８】
例えば、図２０（Ａ）に示すように、あるサブプロセッサ１０２３に、メインメモリ１０２６内のサンドボックス１，２，３が割り当てられているものとする。サンドボックス１は０ｘ８００〜０ｘ８ＦＦ、サンドボックス２は０ｘ２００〜０ｘ２ＦＦ、サンドボックス３は０ｘＦ００〜０ｘＦＦＦとし、各サンドボックスは先頭アドレスによって識別されるものとする。すなわち、割り当てられる各サンドボックスは、アドレスが連続していなくてもよい。
【０２２９】
当該のサブプロセッサ１０２３は、これらサンドボックス１，２，３からデータを読み出すときには、まず、ＤＭＡＣ１０２５内のアドレス変換レジスタ１０３７にアクセスする。
【０２３０】
アドレス変換レジスタ１０３７は、サブプロセッサ１０２３と、当該サブプロセッサ１０２３に割り当てられたサンドボックスとを関連付けるレジスタであり、サブプロセッサ１０２３の数と同数のエントリから構成される。ここでは、Ｑ１で示されるエントリが当該サブプロセッサ１０２３に対応するものとする。
【０２３１】
このとき、サブプロセッサ１０２３は、自身に対応するＱ１の値を読み出す。さらに、読み出されたＱ１の値（０ｘ８０）で示される、サブメモリ１０２７内の第１のアドレスから、データ（０ｘ２０）を読み出す。
【０２３２】
サンドボックス１の領域は、Ｑ１の値に基づいて特定される。例えば、Ｑ１の値を１６倍した値がサンドボックス１の先頭アドレスを示し、その先頭アドレスに２５５を加算した値がサンドボックス１の終了アドレスを示す。したがって、上記のようにＱ１の値が０ｘ８０であるときには、サンドボックス１の領域は０ｘ８００〜０ｘ８ＦＦである。
【０２３３】
また、サブプロセッサ１０２３は、上記の第１のアドレスから読み出されたデータ（０ｘ２０）で示される、同じサブメモリ１０２７内の第２のアドレスから、データ（０ｘＦ０）を読み出す。
【０２３４】
サンドボックス２の領域は、この第２のアドレスから読み出されたデータに基づいて特定される。具体的に、サンドボックス１と同様に、第２のアドレスから読み出されたデータの値を１６倍した値がサンドボックス２の先頭アドレスを示し、その先頭アドレスに２５５を加算した値がサンドボックス２の終了アドレスを示す。したがって、上記のように第２のアドレスから読み出されたデータが０ｘＦ０であるときには、サンドボックス２の領域は０ｘ２００〜０ｘ２ＦＦである。
【０２３５】
さらに、サブプロセッサ１０２３は、上記の第２のアドレスから読み出されたデータ（０ｘＦ０）で示される、同じサブメモリ１０２７内の第３のアドレスから、データ（０ｘ００）を読み出す。０ｘ００は、割り当てられたサンドボックスの終了を示す。
【０２３６】
サンドボックス３の領域は、この第３のアドレスから読み出されたデータに基づいて特定される。具体的に、サンドボックス１，２と同様に、第３のアドレスから読み出されたデータの値を１６倍した値がサンドボックス３の先頭アドレスを示し、その先頭アドレスに２５５を加算した値がサンドボックス３の終了アドレスを示す。したがって、上記のように第３のアドレスから読み出されたデータが０ｘ００であるときには、サンドボックス３の領域は０ｘＦ００〜０ｘＦＦＦである。
【０２３７】
以上のように、各サブプロセッサ１０２３は、自身に割り当てられたサンドボックスのアドレスが非連続であっても、割り当てられたサンドボックスに正確にアクセスすることができ、割り当てられたサンドボックスからデータを確実に読み出すことができる。
【０２３８】
次に、同じサブプロセッサ１０２３が、メインメモリ１０２６内の新たなサンドボックスにデータを書き込み、当該サンドボックスをアドレス変換レジスタ１０３７内の自身に対応したエントリで管理されるサンドボックスグループに追加するための手順を、図２０（Ｂ）を用いて示す。
【０２３９】
当該サブプロセッサ１０２３が、メインメモリ１０２６内の０ｘ０００〜０ｘ０ＦＦの領域であるサンドボックス４にデータを書き込んだとする。このとき、当該サブプロセッサ１０２３は、まず、Ｑ１の値（Ｑ１の初期値、例えば上記のように０ｘ８０）を読み出す。
【０２４０】
次に、当該サブプロセッサ１０２３は、新たにデータを書き込んだサンドボックス４を特定できるサブメモリ１０２７内のアドレスに、先に読み出したＱ１の値（０ｘ８０）を書き込む。例えば、今回は０ｘ０００〜０ｘ０ＦＦの領域にデータを書き込んだので、先頭アドレスである０ｘ０００を１６で割った０ｘ００で示されるサブメモリ１０２７内のアドレスにＱ１の値（０ｘ８０）を書き込む。さらに、Ｑ１の値（０ｘ８０）を書き込んだサブメモリ１０２７内のアドレス（０ｘ００）を新たなＱ１の値として、アドレス変換レジスタ１０３７内のＱ１に書き込む。
【０２４１】
以上のようにして、各サブプロセッサ１０２３は、新たなサンドボックスを既存のサンドボックスグループに追加することができる。この場合も、各サンドボックスのアドレスが非連続であってもよい。また、既存のサンドボックスグループが存在せず、最初のサンドボックスをサブメモリ１０２７およびアドレス変換レジスタ１０３７と関連付ける際にも、上記の方法を用いることができる。
【０２４２】
（３−５．メインプロセッサおよび各サブプロセッサからワークメモリへのアクセス）
前述したように、メインメモリ１０２６は、ＤＲＡＭなどにより構成され、さらにＤＭＡ方式によりデータが転送されるため、各サブプロセッサ１０２３は、大容量のメインメモリ１０２６を高速に使用することができる。また、サブメモリ１０２７は、ＳＲＡＭなどにより構成され、同様に高速に使用することができる。
【０２４３】
さらに、メインプロセッサ１０２１および各サブプロセッサ１０２３が、情報処理コントローラに接続されたメインメモリ１０２６およびサブメモリ１０２７と共に、情報処理コントローラ内に含まれるワークメモリ１０２９を作業用メモリとして共有して使用できれば、さらなる高速化を実現することができる。
【０２４４】
また、当該ワークメモリ１０２９により簡単な数値演算ができれば、効率的である。ワークメモリ１０２９は、前述したようにＳＲＡＭなどにより構成されるため、ＤＲＡＭのような大容量化は期待できないものの、非常に高速である。
【０２４５】
以下に、メインプロセッサ１０２１および各サブプロセッサ１０２３がワークメモリ１０２９にアクセスする場合の構成および手順を示す。
【０２４６】
図２１に示すように、ワークメモリ１０２９は、コントローラ１０３８とＲＡＭ１０３９とから構成される。ＲＡＭ１０３９としては、ＳＲＡＭを用いることができるが、それに限定されるものではない。ＲＡＭ１０３９は、複数のブロックから構成される。各ブロックには、アドレスが割り当てられ、データが記憶される。
【０２４７】
メインプロセッサ１０２１および各サブプロセッサ１０２３は、コントローラ１０３８を介してＲＡＭ１０３９にアクセスする。具体的に、メインプロセッサ１０２１および各サブプロセッサ１０２３は、コントローラ１０３８にコマンド、アドレスまたはデータなどを送信し、コントローラ１０３８は、それに従ってＲＡＭ１０３９にアクセスする。
【０２４８】
処理実行後、コントローラ１０３８は、コマンド送信元のメインプロセッサ１０２１またはサブプロセッサ１０２３にコマンド実行結果を返信する。
【０２４９】
各サブプロセッサ１０２３がワークメモリ１０２９にアクセスするときのコマンドは、例えば図１９に示したような、メインメモリ１０２６またはサブメモリ１０２７へのアクセス時に用いるものと同じである。処理実行後のワークメモリ１０２９からの実行結果のレスポンスも、同一構造である。
【０２５０】
ただし、ワークメモリ１０２９にアクセスする場合には、図１９に示したコマンド中の優先コマンド識別子、通常コマンド識別子、チェーンコマンド識別子、プレセッシングスレッド識別子は、基本的に使用しない。しかし、ワークメモリ１０２９が、これらの識別子に対応可能であれば、使用してもよい。コマンドタイプしては、以下に示すような、いくつかが考えられる。
【０２５１】
第１は、リードコマンドである。これは、ワークメモリ１０２９内のデータを読み出すために使用される。メインプロセッサ１０２１および各サブプロセッサ１０２３は、リードコマンドと共に、所望のデータを記憶するＲＡＭ１０３９内のブロックのアドレスも送信する。コントローラ１０３８からは、実行結果として、リードコマンドの成功／失敗を示すＯＫ／ＮＧと、読み出されたデータが返信される。
【０２５２】
第２は、ライトコマンドである。これは、ワークメモリ１０２９内にデータを書き込むために使用される。メインプロセッサ１０２１および各サブプロセッサ１０２３は、ライトコマンド、データ、当該データを記憶させるＲＡＭ１０３９内のブロックのアドレスを送信する。コントローラ１０３８からは、実行結果として、ライトコマンドの成功／失敗を示すＯＫ／ＮＧが返信される。
【０２５３】
第３は、加算コマンドである。これは、ワークメモリ１０２９内のデータを加算するために使用される。メインプロセッサ１０２１および各サブプロセッサ１０２３は、加算コマンド、加算させるデータを記憶するＲＡＭ１０３９内のブロックのアドレスを送信する。コントローラ１０３８は、受信したアドレスのブロックにおけるデータに１を加算し、上書きする。実行結果として、加算コマンドの成功／失敗を示すＯＫ／ＮＧが返信される。
【０２５４】
第４は、セットコマンドである。これは、ワークメモリ１０２９内のデータをビット単位で操作するために使用される。メインプロセッサ１０２１および各サブプロセッサ１０２３は、セットコマンド、操作するデータを記憶するＲＡＭ１０３９内のブロックのアドレス、およびマスクデータを送信する。
【０２５５】
これに対して、コントローラ１０３８は、受信したマスクデータと、受信したアドレスのブロックにおけるデータとを比較し、マスクデータにおいて値が１であるビットと同じ位置の、データにおけるビットの値を１にする。実行結果として、セットコマンドの完了を示すＣｏｍｐｌｅｔｅｄが返信される。このとき、セットコマンド実行前のデータも返信することにより、コマンドの成功／失敗を確認できるようにしてもよい。
【０２５６】
第５は、クリアコマンドである。これも、ワークメモリ１０２９内のデータをビット単位で操作するために使用される。メインプロセッサ１０２１および各サブプロセッサ１０２３は、クリアコマンド、操作するデータを記憶するＲＡＭ１０３９内のブロックのアドレス、およびマスクデータを送信する。
【０２５７】
これに対して、コントローラ１０３８は、受信したマスクデータと、受信したアドレスのブロックにおけるデータとを比較し、マスクデータにおいて値が１であるビットと同じ位置の、データにおけるビットの値を０にする。実行結果として、クリアコマンドの完了を示すＣｏｍｐｌｅｔｅｄが返信される。このとき、クリアコマンド実行前のデータも返信することにより、コマンドの成功／失敗を確認できるようにしてもよい。
【０２５８】
以上のように、メインプロセッサ１０２１および各サブプロセッサ１０２３は、大容量のメインメモリ１０２６および高速のサブメモリ１０２７に加えて、ワークメモリ１０２９を併用することができる。さらに、ワークメモリ１０２９をメインメモリ１０２６またはサブメモリ１０２７のキャッシュとして利用すれば、さらなる高速化を期待することができる。
【０２５９】
（３−６．各サブプロセッサ内のプレセッシングスレッド）
前述したように、１つの情報処理コントローラ内の各サブプロセッサ１０２３は構造上独立している。したがって、各々のサブプロセッサ１０２３が独立にサブプロセッサプログラムを実行し、データを処理することができる。さらに、各サブプロセッサ１０２３が内部に、仮想的に独立した複数のプレセッシングスレッドを有することも考えられる。その構造を図２２に示す。
【０２６０】
サブプロセッサ１０２３は、内部に有するアービタ１０４０を介して、バス１０３２と接続される。サブプロセッサ１０２３内には、また、ＬＳ（ローカルストレージ）１０２４とプレセッシングスレッド１０４１，１０４２，１０４３および１０４４が含まれ、アービタ１０４０は、外部からの信号を適切なプレセッシングスレッドに通知する役割を担う。
【０２６１】
図２２では各プレセッシングスレッド１０４１，１０４２，１０４３および１０４４を独立に示しているが、あくまで仮想的な独立である。プレセッシングスレッド１０４１，１０４２，１０４３および１０４４は、それぞれプレセッシングスレッド識別子が割り当てられ、独立かつ並列に動作可能である。
【０２６２】
各プレセッシングスレッド１０４１，１０４２，１０４３および１０４４は、メインメモリ１０２６、サブメモリ１０２７またはワークメモリ１０２９に対して独立にアクセスを行うため、コマンド送信元のプレセッシングスレッドに確実にレスポンスが返信されるようにする必要がある。そのための手順を以下に示す。
【０２６３】
各プレセッシングスレッド１０４１，１０４２，１０４３および１０４４が各々のメモリにアクセスするときのコマンドは、例えば図１９に示したような、各サブプロセッサ１０２３がメモリにアクセスする時に用いるものと同じである。処理実行後の各メモリからの実行結果のレスポンスも、同一構造である。
【０２６４】
図１９のコマンド／レスポンス構造については前述したが、サブプロセッサ識別子はコマンド送信元のサブプロセッサのサブプロセッサＩＤであり、さらにプレセッシングスレッド識別子は、当該サブプロセッサ内のいずれのプレセッシングスレッドがコマンド送信元であるかを識別するためのものである。
【０２６５】
メインメモリ１０２６、サブメモリ１０２７またはワークメモリ１０２９からのレスポンスは、まず、サブプロセッサ識別子に基づいて、コマンド送信元のサブプロセッサ１０２３に返信される。さらに、プレセッシングスレッド識別子に基づいて、サブプロセッサ１０２３内のアービタ１０４０により、コマンド送信元のプレセッシングスレッドに返信される。
【０２６６】
ただし、同じ処理を行うようなときなど、サブプロセッサ内の複数のプレセッシングスレッド中のいずれでもよい場合には、プレセッシングスレッド識別子に基づかずに、処理負荷の軽いプレセッシングスレッドに返信するようにしてもよい。また、メインメモリ１０２６、サブメモリ１０２７またはワークメモリ１０２９からレスポンスを受信するたびに、複数のプレセッシングスレッド中の１つを順繰りに選択し、その選択されたプレセッシングスレッドに当該レスポンスを返信するようにしてもよい。
【０２６７】
以上のように、各サブプロセッサ１０２３内の複数のプレセッシングスレッドが、メインメモリ１０２６、サブメモリ１０２７またはワークメモリ１０２９に対して独立にアクセスを行う場合でも、コマンド送信元のプレセッシングスレッドに確実にレスポンスが返信されるようにすることができる。
【０２６８】
（３−７．コントロールレジスタによるサブプロセッサプログラムの管理）
１つの情報処理コントローラ内に複数のサブプロセッサ１０２３が存在し、さらに各サブプロセッサ１０２３内に複数のプレセッシングスレッドを有する場合に、情報処理コントローラ内で処理されるべきサブプロセッサプログラムを、どのプレセッシングスレッドに処理させるかを決定することは、情報処理コントローラの高速化を実現する上で重要である。
【０２６９】
そこで以下に、図１６に示したコントロールレジスタ１０２８を使用することにより、各プレセッシングスレッドに対して適切にサブプロセッサプログラムの処理を割り当て、情報処理コントローラを効率的に動作させる構成および手順を示す。
【０２７０】
図２３に示すように、コントロールレジスタ１０２８は、処理待ちサブプロセッサプログラムレジスタ１０４５とサブプロセッサプログラム処理進捗レジスタ１０４６とから構成される。
【０２７１】
処理待ちサブプロセッサプログラムレジスタ１０４５について示すと、メインプロセッサ１０２１は、情報処理コントローラ内で処理されるべきサブプロセッサプログラムが発生した場合には、処理待ちサブプロセッサプログラムレジスタ１０４５内に、当該サブプロセッサプログラムまたはこれに関連するデータが格納されているメインメモリ１０２６、サブメモリ１０２７、ワークメモリ１０２９、またはＬＳ（ローカルストレージ）１０２２または１０２４におけるアドレスを書き込む。
【０２７２】
処理されるべきサブプロセッサプログラムが存在しない状態では、処理待ちサブプロセッサプログラムレジスタ１０４５の値はゼロである。全てのプレセッシングスレッドは、自身が何もサブプロセッサプログラムを実行していない間は、定期的または非定期的に処理待ちサブプロセッサプログラムレジスタ１０４５の値を読み出し、その結果、ゼロでない値を読み出したプレセッシングスレッドが処理を行うものとする。
【０２７３】
これとともに、当該プレセッシングスレッドは、処理待ちサブプロセッサプログラムレジスタ１０４５にゼロの値を書き込む。処理を行うプレセッシングスレッドは、読み出した処理待ちサブプロセッサプログラムレジスタ１０４５の値に基づいて、処理対象となるサブプロセッサプログラムまたは関連データを読み出し、処理する。このとき、サブプロセッサプログラムは既に当該プレセッシングスレッドを有するサブプロセッサ１０２３に読み出されており、サブプロセッサプログラムの読み出しは不要であることも考えられる。
【０２７４】
このようにして、サブプロセッサプログラムを実行していない、処理能力に余裕のあるプレセッシングスレッドに迅速にサブプロセッサプログラムの処理を割り当てることができ、情報処理コントローラを効率的に動作させることができる。
【０２７５】
サブプロセッサプログラム処理進捗レジスタ１０４６は、サブプロセッサプログラムの処理を割り当てられたプレセッシングスレッドが、処理進捗状況を書き込むための２ビット（ｘ，ｙ）のレジスタである。例えば、（０，０）は未処理を示し、（０，１）は処理中の段階１を示し、（１，０）は処理中の段階２を示し、（１，１）は処理完了を示す。さらに、この２ビットとともに、プロセッシングスレッド識別子を書き込むことにより、処理を割り当てられたプレセッシングスレッドを示すようにしてもよい。
【０２７６】
または、図２３にプレセッシングスレッド０，１，２，３として示すように、情報処理コントローラ内の各プロセッシングスレッドごとに、サブプロセッサプログラムの処理進捗状況を書き込むためのレジスタを設けてもよい。
【０２７７】
サブプロセッサプログラム処理進捗レジスタ１０４６は、情報処理コントローラ内のメインプロセッサ１０２１、全てのサブプロセッサ１０２３および全てのプレセッシングスレッドがアクセス可能であり、これにより、サブプロセッサプログラムの処理進捗状況を的確に把握することができる。さらに、各プロセッシングスレッドごとに処理進捗レジスタを設ける場合には、複数のサブプロセッサプログラムが同時に実行される場合にも処理進捗状況の把握が可能となる。
【０２７８】
以上が、各サブプロセッサ１０２３が内部に、仮想的に独立した複数のプレセッシングスレッドを有する場合のプレセッシングスレッド管理方法の例である。
【０２７９】
なお、以下においては、サブプロセッサが何らかの処理を行う場合には、当該サブプロセッサ内部のいずれのプレセッシングスレッドが処理を行っても構わないものとし、プレセッシングスレッドの違いによる実行結果の差異は生じないものとする。したがって、サブプロセッサの処理内容につき、サブプロセッサ内部の複数のプレセッシングスレッドがどの様に処理を分担するかについては説明を省略する。
【０２８０】
（３−８．ソフトウェアセルの生成および構成）
図１６のネットワークシステムでは、情報処理装置１００１，１００２，１００３および１００４の間での分散処理のために、情報処理装置１００１，１００２，１００３および１００４の間でソフトウェアセルが伝送される。すなわち、ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ１０２１は、コマンド、プログラムおよびデータを含むソフトウェアセルを生成し、ネットワーク１００９を介して他の情報処理装置に送信することによって、処理を分散することができる。
【０２８１】
図３に、ソフトウェアセルの構成の一例を示す。この例のソフトウェアセルは、全体として、送信元ＩＤ、送信先ＩＤ、応答先ＩＤ、セルインターフェース、ＤＭＡコマンド、プログラム、およびデータによって構成される。
【０２８２】
送信元ＩＤには、ソフトウェアセルの送信元である情報処理装置のネットワークアドレスおよび情報処理装置ＩＤ、さらに、その情報処理装置内の情報処理コントローラが備えるメインプロセッサ１０２１および各サブプロセッサ１０２３の識別子（メインプロセッサＩＤおよびサブプロセッサＩＤ）が含まれる。
【０２８３】
送信先ＩＤおよび応答先ＩＤには、それぞれ、ソフトウェアセルの送信先である情報処理装置、およびソフトウェアセルの実行結果の応答先である情報処理装置についての、同じ情報が含まれる。
【０２８４】
セルインターフェースは、ソフトウェアセルの利用に必要な情報であり、グローバルＩＤ、必要なサブプロセッサの情報、サンドボックスサイズ、および前回のソフトウェアセルＩＤから構成される。
【０２８５】
グローバルＩＤは、ネットワーク全体を通して当該のソフトウェアセルを一意的に識別できるものであり、送信元ＩＤ、およびソフトウェアセルの作成または送信の日時（日付および時刻）に基づいて作成される。
【０２８６】
必要なサブプロセッサの情報は、当該ソフトウェアセルの実行に必要なサブプロセッサの数が設定される。サンドボックスサイズは、当該ソフトウェアセルの実行に必要なメインメモリ１０２６内およびサブプロセッサ１０２３のＬＳ１０２４内のメモリ量が設定される。
【０２８７】
前回のソフトウェアセルＩＤは、ストリーミングデータなどのシーケンシャルな実行を要求する１グループのソフトウェアセル内の、前回のソフトウェアセルの識別子である。
【０２８８】
ソフトウェアセルの実行セクションは、ＤＭＡコマンド、プログラムおよびデータから構成される。ＤＭＡコマンドには、プログラムの起動に必要な一連のＤＭＡコマンドが含まれ、プログラムには、サブプロセッサ１０２３によって実行されるサブプロセッサプログラムが含まれる。ここでのデータは、このサブプロセッサプログラムを含むプログラムによって処理されるデータである。
【０２８９】
さらに、ＤＭＡコマンドには、ロードコマンド、キックコマンド、機能プログラム実行コマンド、ステータス要求コマンド、およびステータス返信コマンドが含まれる。
【０２９０】
ロードコマンドは、メインメモリ１０２６内の情報をサブプロセッサ１０２３内のＬＳ１０２４にロードするコマンドであり、ロードコマンド自体のほかに、メインメモリアドレス、サブプロセッサＩＤおよびＬＳアドレスを含む。メインメモリアドレスは、情報のロード元であるメインメモリ１０２６内の所定領域のアドレスを示す。サブプロセッサＩＤおよびＬＳアドレスは、情報のロード先であるサブプロセッサ１０２３の識別子およびＬＳ１０２４のアドレスを示す。
【０２９１】
キックコマンドは、サブプロセッサプログラムの実行を開始するコマンドであり、キックコマンド自体のほかに、サブプロセッサＩＤおよびプログラムカウンタを含む。サブプロセッサＩＤは、キック対象のサブプロセッサ１０２３を識別し、プログラムカウンタは、サブプロセッサプログラム実行用プログラムカウンタのためのアドレスを与える。
【０２９２】
機能プログラム実行コマンドは、後述のように、ある情報処理装置が他の情報処理装置に対して、機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信した情報処理装置内の情報処理コントローラは、後述の機能プログラムＩＤによって、起動すべき機能プログラムを識別する。
【０２９３】
ステータス要求コマンドは、送信先ＩＤで示される情報処理装置の現在の動作状態（状況）に関する装置情報を、応答先ＩＤで示される情報処理装置宛に送信することを要求するコマンドである。機能プログラムについては後述するが、図６に示す情報処理装置のメインメモリ１０２６が記憶するソフトウェアの構成図において機能プログラムにカテゴライズされるプログラムである。機能プログラムは、メインメモリ１０２６にロードされ、メインプロセッサ１０２１により実行される。
【０２９４】
ステータス返信コマンドは、上記のステータス要求コマンドを受信した情報処理装置が、自身の装置情報を当該ステータス要求コマンドに含まれる応答先ＩＤで示される情報処理装置に応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納する。
【０２９５】
図４に、ＤＭＡコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す。
【０２９６】
情報処理装置ＩＤは、情報処理コントローラを備える情報処理装置を識別するための識別子であり、ステータス返信コマンドを送信する情報処理装置のＩＤを示す。情報処理装置ＩＤは、電源投入時、その情報処理装置内の情報処理コントローラに含まれるメインプロセッサ１０２１によって、電源投入時の日時、情報処理装置のネットワークアドレスおよび情報処理装置内の情報処理コントローラに含まれるサブプロセッサ１０２３の数などに基づいて生成される。
【０２９７】
情報処理装置種別ＩＤには、当該の情報処理装置の特徴を表す値が含まれる。情報処理装置の特徴とは、例えば、後述のハードディスクレコーダ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）、ポータブルＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）プレーヤなどである。また、情報処理装置種別ＩＤは、映像音声記録、映像音声再生など、情報処理装置の機能を表すものであってもよい。情報処理装置の特徴や機能を表す値は予め決定されているものとし、情報処理装置種別ＩＤを読み出すことにより、当該情報処理装置の特徴や機能を把握することが可能である。
【０２９８】
ＭＳ（マスター／スレーブ）ステータスは、後述のように情報処理装置がマスター装置またはスレーブ装置のいずれで動作しているかを表すもので、これが０に設定されている場合にはマスター装置として動作していることを示し、１に設定されている場合にはスレーブ装置として動作していることを示す。
【０２９９】
メインプロセッサ動作周波数は、情報処理コントローラ内のメインプロセッサ１０２１の動作周波数を表す。メインプロセッサ使用率は、メインプロセッサ１０２１で現在動作している全てのプログラムについての、メインプロセッサ１０２１での使用率を表す。メインプロセッサ使用率は、対象メインプロセッサの全処理能力に対する使用中の処理能力の比率を表した値で、例えばプロセッサ処理能力評価のための単位であるＭＩＰＳを単位として算出され、または単位時間あたりのプロセッサ使用時間に基づいて算出される。後述のサブプロセッサ使用率についても同様である。
【０３００】
サブプロセッサ数は、当該の情報処理コントローラが備えるサブプロセッサ１０２３の数を表す。サブプロセッサＩＤは、当該の情報処理コントローラ内の各サブプロセッサ１０２３を識別するための識別子である。
【０３０１】
サブプロセッサステータスは、各サブプロセッサ１０２３の状態を表すものであり、ｕｎｕｓｅｄ、ｒｅｓｅｒｖｅｄ、ｂｕｓｙなどの状態がある。ｕｎｕｓｅｄは、当該のサブプロセッサが現在使用されてなく、使用の予約もされていないことを示す。ｒｅｓｅｒｖｅｄは、現在は使用されていないが、予約されている状態を示す。ｂｕｓｙは、現在使用中であることを示す。
【０３０２】
サブプロセッサ使用率は、当該のサブプロセッサで現在実行している、または当該のサブプロセッサに実行が予約されているサブプロセッサプログラムについての、当該サブプロセッサでの使用率を表す。すなわち、サブプロセッサ使用率は、サブプロセッサステータスがｂｕｓｙである場合には、現在の使用率を示し、サブプロセッサステータスがｒｅｓｅｒｖｅｄである場合には、後に使用される予定の推定使用率を示す。
【０３０３】
サブプロセッサＩＤ、サブプロセッサステータスおよびサブプロセッサ使用率は、１つのサブプロセッサ１０２３に対して一組設定され、１つの情報処理コントローラ内のサブプロセッサ１０２３の数の組数だけ設定される。
【０３０４】
メインメモリ総容量およびメインメモリ使用量は、それぞれ、当該の情報処理コントローラに接続されているメインメモリ１０２６の総容量および現在使用中の容量を表す。
【０３０５】
外部記録部数は、当該の情報処理コントローラに接続されている外部記録部１０３１の数を表す。外部記録部ＩＤは、当該の情報処理コントローラに接続されている外部記録部１０３１を一意的に識別する情報である。外部記録部種別ＩＤは、当該の外部記録部の種類（例えば、ハードディスク、ＣＤ±ＲＷ、ＤＶＤ±ＲＷ、メモリディスク、ＳＲＡＭ、ＲＯＭなど）を表す。
【０３０６】
外部記録部総容量および外部記録部使用量は、それぞれ、外部記録部ＩＤによって識別される外部記録部１０３１の総容量および現在使用中の容量を表す。
【０３０７】
外部記録部ＩＤ、外部記録部種別ＩＤ、外部記録部総容量および外部記録部使用量は、１つの外部記録部１０３１に対して一組設定され、当該の情報処理コントローラに接続されている外部記録部１０３１の数の組数だけ設定される。すなわち、１つの情報処理コントローラに複数の外部記録部が接続されている場合、各々の外部記録部には異なる外部記録部ＩＤが割り当てられ、外部記録部種別ＩＤ、外部記録部総容量および外部記録部使用量も別々に管理される。
【０３０８】
（３−９．ソフトウェアセルの実行）
ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ１０２１は、以上のような構成のソフトウェアセルを生成し、ネットワーク１００９を介して他の情報処理装置および当該装置内の情報処理コントローラに送信する。送信元の情報処理装置、送信先の情報処理装置、応答先の情報処理装置、および各装置内の情報処理コントローラは、それぞれ、上記の送信元ＩＤ、送信先ＩＤおよび応答先ＩＤによって識別される。
【０３０９】
ソフトウェアセルを受信した情報処理装置内の情報処理コントローラに含まれるメインプロセッサ１０２１は、そのソフトウェアセルをメインメモリ１０２６に格納する。さらに、送信先のメインプロセッサ１０２１は、ソフトウェアセルを読み出し、それに含まれるＤＭＡコマンドを処理する。
【０３１０】
具体的に、送信先のメインプロセッサ１０２１は、まず、ロードコマンドを実行する。これによって、ロードコマンドで指示されたメインメモリアドレスから、ロードコマンドに含まれるサブプロセッサＩＤおよびＬＳアドレスで特定されるサブプロセッサ内のＬＳ１０２４の所定領域に、情報がロードされる。ここでロードされる情報は、受信したソフトウェアセルに含まれるサブプロセッサプログラムまたはデータ、あるいはその他の指示されたデータである。
【０３１１】
次に、メインプロセッサ１０２１は、キックコマンドを、これに含まれるサブプロセッサＩＤで指示されたサブプロセッサに、同様にキックコマンドに含まれるプログラムカウンタと共に送信する。
【０３１２】
指示されたサブプロセッサは、そのキックコマンドおよびプログラムカウンタに従って、サブプロセッサプログラムを実行する。そして、実行結果をメインメモリ１０２６に格納した後、実行を完了したことをメインプロセッサ１０２１に通知する。
【０３１３】
なお、送信先の情報処理装置内の情報処理コントローラにおいてソフトウェアセルを実行するプロセッサはサブプロセッサ１０２３に限定されるものではなく、メインプロセッサ１０２１がソフトウェアセルに含まれる機能プログラムなどのメインメモリ用プログラムを実行するように指定することも可能である。
【０３１４】
この場合には、送信元の情報処理装置は、送信先の情報処理装置宛に、サブプロセッサプログラムの代わりに、メインメモリ用プログラムおよびそのメインメモリ用プログラムによって処理されるデータを含み、ＤＭＡコマンドがロードコマンドであるソフトウェアセルを送信し、メインメモリ１０２６にメインメモリ用プログラムおよびそれによって処理されるデータを記憶させる。
【０３１５】
次に、送信元の情報処理装置は、送信先の情報処理装置宛に、送信先の情報処理装置内の情報処理コントローラについてのメインプロセッサＩＤ、メインメモリアドレス、メインメモリ用プログラムを識別するための後述の機能プログラムＩＤなどの識別子、およびプログラムカウンタを含み、ＤＭＡコマンドがキックコマンドまたは機能プログラム実行コマンドであるソフトウェアセルを送信して、メインプロセッサ１０２１に当該メインメモリ用プログラムを実行させる。
【０３１６】
以上のように、この発明のネットワークシステムでは、送信元の情報処理装置は、サブプロセッサプログラムまたはメインメモリ用プログラムをソフトウェアセルによって送信先の情報処理装置に送信するとともに、当該サブプロセッサプログラムを送信先の情報処理装置内の情報処理コントローラに含まれるサブプロセッサ１０２３にロードさせ、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置に実行させることができる。
【０３１７】
送信先の情報処理装置内の情報処理コントローラでは、受信したソフトウェアセルに含まれるプログラムがサブプロセッサプログラムである場合には、当該サブプロセッサプログラムを指定されたサブプロセッサにロードさせる。そして、ソフトウェアセルに含まれるサブプロセッサプログラムまたはメインメモリ用プログラムを実行させる。
【０３１８】
したがって、ユーザが送信先の情報処理装置を操作しなくても自動的に、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置内の情報処理コントローラに実行させることができる。
【０３１９】
このようにして情報処理装置は、自装置内の情報処理コントローラがサブプロセッサプログラムまたは機能プログラムなどのメインメモリ用プログラムを有していない場合には、ネットワークに接続された他の情報処理装置からそれらを取得することができる。さらに、各サブプロセッサとメインメモリとの間ではＤＭＡ方式によりデータ転送を行い、また上述したサンドボックスを使用することによって、１つの情報処理コントローラ内でデータを多段階に処理する必要がある場合でも、高速かつ高セキュリティに処理を実行することができる。
【０３２０】
［４．ネットワークシステムとしての分散処理その２］
ソフトウェアセルの使用による分散処理の結果、図２４の上段に示すようにネットワーク１００９に接続されている複数の情報処理装置１００１，１００２，１００３および１００４は、図２４の下段に示すように、仮想的な１台の情報処理装置１００７として動作する。ただし、そのためには、以下のような構成によって、以下のような処理が実行される必要がある。
【０３２１】
（４−１．システムのソフトウェア構成とプログラムのロード）
図６に、個々の情報処理コントローラのメインメモリ１０２６が記憶するソフトウェアの構成を示す。これらのソフトウェア（プログラム）は、情報処理装置に電源が投入される前においては、当該の情報処理コントローラに接続される外部記録部１０３１に記録されているものである。
【０３２２】
各プログラムは、機能または特徴によって、制御プログラム、機能プログラムおよびデバイスドライバにカテゴライズされる。
【０３２３】
制御プログラムは、各情報処理コントローラが同じものを備え、各情報処理コントローラのメインプロセッサ１０２１が実行するもので、後述のＭＳ（マスター／スレーブ）マネージャおよび能力交換プログラムを含む。
【０３２４】
機能プログラムは、メインプロセッサ１０２１が実行するもので、記録用、再生用、素材検索用など、情報処理コントローラごとに情報処理装置に応じたものが備えられる。
【０３２５】
デバイスドライバは、情報処理コントローラ（情報処理装置）の入出力（送受信）用で、放送受信、モニタ出力、ビットストリーム入出力、ネットワーク入出力など、情報処理コントローラごとに情報処理装置に応じたものが備えられる。
【０３２６】
ケーブルの差し込みなどによって情報処理装置が物理的にネットワーク１００９に接続された状態で、情報処理装置に主電源が投入され、情報処理装置が電気的・機能的にもネットワーク１００９に接続されると、その情報処理装置の情報処理コントローラのメインプロセッサ１０２１は、制御プログラムに属する各プログラム、およびデバイスドライバに属する各プログラムを、メインメモリ１０２６にロードする。
【０３２７】
ロード手順としては、メインプロセッサ１０２１は、まず、ＤＣ１０３０に読み出し命令を実行させることによって、外部記録部１０３１からプログラムを読み出し、次に、ＤＭＡＣ１０２５に書き込み命令を実行させることによって、そのプログラムをメインメモリ１０２６に書き込む。
【０３２８】
機能プログラムに属する各プログラムについては、必要なときに必要なプログラムだけをロードするように構成してもよく、または、他のカテゴリに属するプログラムと同様に、主電源投入直後に各プログラムをロードするように構成してもよい。
【０３２９】
機能プログラムに属する各プログラムは、ネットワークに接続された全ての情報処理装置の外部記録部１０３１に記録されている必要はなく、いずれか１つの情報処理装置の外部記録部１０３１に記録されていれば、前述の方法によって他の情報処理装置からロードすることができるので、結果的に図２４の下段に示すように、仮想的な１台の情報処理装置１００７として機能プログラムを実行することができる。
【０３３０】
また、前述したように、メインプロセッサ１０２１によって処理される機能プログラムは、サブプロセッサ１０２３によって処理されるサブプロセッサプログラムと連携動作する場合がある。そこで、メインプロセッサ１０２１が外部記録部１０３１から機能プログラムを読み出し、メインメモリ１０２６に書き込む際、対象となる機能プログラムと連携動作するサブプロセッサプログラムが存在する場合には、当該サブプロセッサプログラムも併せて同じメインメモリ１０２６に書き込む。この場合、連携動作するサブプロセッサプログラムは、１個である場合もあるが、複数個であることもあり得る。複数個である場合には、全ての連携動作するサブプロセッサプログラムをメインメモリ１０２６に書き込む。
【０３３１】
メインメモリ１０２６に書き込まれたサブプロセッサプログラムは、その後、サブプロセッサ１０２３内のＬＳ１０２４に書き込まれ、メインプロセッサ１０２１によって処理される機能プログラムと連携動作する。
【０３３２】
図３のソフトウェアセルに示したように、機能プログラムには、プログラムごとにプログラムを一意的に識別できる識別子が、機能プログラムＩＤとして割り当てられる。機能プログラムＩＤは、機能プログラムの作成の段階で、作成日時や情報処理装置ＩＤなどから決定される。
【０３３３】
サブプロセッサプログラムにもサブプロセッサプログラムＩＤが割り当てられ、これによりサブプロセッサプログラムを一意的に識別可能である。割り当てられるサブプロセッサプログラムＩＤは、連携動作の相手となる機能プログラムの機能プログラムＩＤと関連性のある識別子、例えば機能プログラムＩＤを親番号とした上で最後尾に枝番号を付加させた識別子でもよいが、連携動作の相手となる機能プログラムの機能プログラムＩＤとは関連性のない識別子でもよい。
【０３３４】
いずれにしても、機能プログラムとサブプロセッサプログラムが連携動作する場合には、両者とも相手の識別子であるプログラムＩＤを自プログラム内に記憶しておく必要がある。機能プログラムが複数個のサブプロセッサプログラムと連携動作する場合にも、当該機能プログラムは、その複数個のサブプロセッサプログラムのサブプロセッサプログラムＩＤを全て記憶しておく。
【０３３５】
メインプロセッサ１０２１は、自身が動作する情報処理装置の装置情報（動作状態に関する情報）を格納するための領域をメインメモリ１０２６に確保し、当該情報を自装置の装置情報テーブルとして記録する。ここでの装置情報は、図４に示した情報処理装置ＩＤ以下の各情報である。
【０３３６】
（４−２．システムにおけるマスター／スレーブの決定）
上述したネットワークシステムでは、ある情報処理装置への主電源投入時、その情報処理装置の情報処理コントローラのメインプロセッサ１０２１は、マスター／スレーブマネージャ（以下、ＭＳマネージャ）をメインメモリ１０２６にロードし、実行する。
【０３３７】
ＭＳマネージャは、自身が動作する情報処理装置がネットワーク１００９に接続されていることを検知すると、同じネットワーク１００９に接続されている他の情報処理装置の存在を確認する。ここでの「接続」または「存在」は、上述したように、情報処理装置が物理的にネットワーク１００９に接続されているだけでなく、電気的・機能的にもネットワーク１００９に接続されていることを示す。
【０３３８】
以下では、自身が動作する情報処理装置を自装置、他の情報処理装置を他装置と称する。当該装置も、当該情報処理装置を示すものとする。
【０３３９】
ＭＳマネージャが同じネットワーク１００９に接続されている他の情報処理装置の存在を確認する方法を、以下に示す。
【０３４０】
ＭＳマネージャは、ＤＭＡコマンドがステータス要求コマンドであり、送信元ＩＤおよび応答先ＩＤが当該情報処理装置で、送信先ＩＤを特定しないソフトウェアセルを生成して、当該情報処理装置が接続されたネットワーク上に送信し、ネットワーク接続確認用のタイマーを設定する。タイマーのタイムアウト時間は、例えば１０分とされる。
【０３４１】
当該ネットワークシステム上に他の情報処理装置が接続されている場合、その他装置は、上記ステータス要求コマンドのソフトウェアセルを受信し、上記応答先ＩＤで特定されるステータス要求コマンドを発行した情報処理装置に対して、ＤＭＡコマンドがステータス返信コマンドで、かつデータとして自身（その他装置）の装置情報を含むソフトウェアセルを送信する。このステータス返信コマンドのソフトウェアセルには、少なくとも当該他装置を特定する情報（情報処理装置ＩＤ、メインプロセッサに関する情報、サブプロセッサに関する情報など）および当該他装置のＭＳステータスが含まれる。
【０３４２】
ステータス要求コマンドを発行した情報処理装置のＭＳマネージャは、上記ネットワーク接続確認用のタイマーがタイムアウトするまで、当該ネットワーク上の他装置から送信されるステータス返信コマンドのソフトウェアセルの受信を監視する。その結果、ＭＳステータス＝０（マスター装置）を示すステータス返信コマンドが受信された場合には、自装置の装置情報テーブルにおけるＭＳステータスを１に設定する。これによって、当該装置はスレーブ装置となる。
【０３４３】
一方、上記ネットワーク接続確認用のタイマーがタイムアウトするまでの間にステータス返信コマンドが全く受信されなかった場合、またはＭＳステータス＝０（マスター装置）を示すステータス返信コマンドが受信されなかった場合には、自装置の装置情報テーブルにおけるＭＳステータスを０に設定する。これによって、当該装置はマスター装置となる。
【０３４４】
すなわち、いずれの装置もネットワーク１００９に接続されていない状態、またはネットワーク１００９上にマスター装置が存在しない状態において、新たな情報処理装置がネットワーク１００９に接続されると、当該装置は自動的にマスター装置として設定される。一方、ネットワーク１００９上に既にマスター装置が存在する状態において、新たな情報処理装置がネットワーク１００９に接続されると、当該装置は自動的にスレーブ装置として設定される。
【０３４５】
マスター装置およびスレーブ装置のいずれについても、ＭＳマネージャは、定期的にステータス要求コマンドをネットワーク１００９上の他装置に送信してステータス情報を照会することにより、他装置の状況を監視する。その結果、ネットワーク１００９に接続されている情報処理装置の主電源が遮断され、またはネットワーク１００９から情報処理装置が切り離されることにより、あらかじめ判定用に設定された所定期間内に特定の他装置からステータス返信コマンドが返信されなかった場合や、ネットワーク１００９に新たな情報処理装置が接続された場合など、ネットワーク１００９の接続状態に変化があった場合には、その情報を後述の能力交換プログラムに通知する。
【０３４６】
（４−３．マスター装置およびスレーブ装置における装置情報の取得）
メインプロセッサ１０２１は、ＭＳマネージャから、ネットワーク１００９上の他装置の照会および自装置のＭＳステータスの設定完了の通知を受けると、能力交換プログラムを実行する。
【０３４７】
能力交換プログラムは、自装置がマスター装置である場合には、ネットワーク１００９に接続されている全ての他装置の装置情報、すなわち各スレーブ装置の装置情報を取得する。
【０３４８】
他装置の装置情報の取得は、上述したように、ＤＭＡコマンドがステータス要求コマンドであるソフトウェアセルを生成して他装置に送信し、その後、ＤＭＡコマンドがステータス返信コマンドで、かつデータとして他装置の装置情報を含むソフトウェアセルを他装置から受信することによって可能である。
【０３４９】
能力交換プログラムは、マスター装置である自装置の装置情報テーブルと同様に、ネットワーク１００９に接続されている全ての他装置（各スレーブ装置）の装置情報を格納するための領域を自装置のメインメモリ１０２６に確保し、これら情報を他装置（スレーブ装置）の装置情報テーブルとして記録する。
【０３５０】
すなわち、マスター装置のメインメモリ１０２６には、自装置を含むネットワーク１００９に接続されている全ての情報処理装置の装置情報が、装置情報テーブルとして記録される。
【０３５１】
一方、能力交換プログラムは、自装置がスレーブ装置である場合には、ネットワーク１００９に接続されている全ての他装置の装置情報、すなわちマスター装置および自装置以外の各スレーブ装置の装置情報を取得し、これら装置情報に含まれる情報処理装置ＩＤおよびＭＳステータスを、自装置のメインメモリ１０２６に記録する。
【０３５２】
すなわち、スレーブ装置のメインメモリ１０２６には、自装置の装置情報が、装置情報テーブルとして記録されるとともに、自装置以外のネットワーク１００９に接続されているマスター装置および各スレーブ装置についての情報処理装置ＩＤおよびＭＳステータスが、別の装置情報テーブルとして記録される。
【０３５３】
また、マスター装置およびスレーブ装置のいずれについても、能力交換プログラムは、上記のようにＭＳマネージャから、新たにネットワーク１００９に情報処理装置が接続されたことが通知されたときには、その情報処理装置の装置情報を取得し、上述したようにメインメモリ１０２６に記録する。
【０３５４】
なお、ＭＳマネージャおよび能力交換プログラムは、メインプロセッサ１０２１で実行されることに限らず、いずれかのサブプロセッサ１０２３で実行されてもよい。また、ＭＳマネージャおよび能力交換プログラムは、情報処理装置の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
【０３５５】
（４−４．情報処理装置がネットワークから切断された場合）
マスター装置およびスレーブ装置のいずれについても、能力交換プログラムは、上記のようにＭＳマネージャから、ネットワーク１００９に接続されている情報処理装置の主電源が遮断され、またはネットワーク１００９から情報処理装置が切り離されたことが通知されたときには、その情報処理装置の装置情報テーブルを自装置のメインメモリ１０２６から削除する。
【０３５６】
さらに、このようにネットワーク１００９から切断された情報処理装置がマスター装置である場合には、以下のような方法によって、新たにマスター装置が決定される。
【０３５７】
具体的に、例えば、ネットワーク１００９から切断されていない情報処理装置は、それぞれ、自装置および他装置の情報処理装置ＩＤを数値に置き換えて、自装置の情報処理装置ＩＤを他装置の情報処理装置ＩＤと比較し、自装置の情報処理装置ＩＤがネットワーク１００９から切断されていない情報処理装置中で最小である場合、そのスレーブ装置は、マスター装置に移行して、ＭＳステータスを０に設定し、マスター装置として、上述したように、ネットワーク１００９に接続されている全ての他装置（各スレーブ装置）の装置情報を取得して、メインメモリ１０２６に記録する。
【０３５８】
（４−５．装置情報に基づく分散処理）
図２４の下段に示したようにネットワーク１００９に接続されている複数の情報処理装置１００１，１００２，１００３および１００４を仮想的な１台の情報処理装置１００７として動作させるためには、マスター装置がユーザの操作およびスレーブ装置の動作状態を把握する必要がある。
【０３５９】
図２５に、４台の情報処理装置が仮想的な１台の情報処理装置１００７として動作する様子を示す。情報処理装置１００１がマスター装置、情報処理装置１００２，１００３および１００４がスレーブ装置Ａ，ＢおよびＣとして、動作しているものとする。
【０３６０】
ユーザがネットワーク１００９に接続されている情報処理装置を操作した場合、操作対象がマスター装置１００１であれば、その操作情報は、マスター装置１００１において直接把握され、操作対象がスレーブ装置であれば、その操作情報は、操作されたスレーブ装置からマスター装置１００１に送信される。すなわち、ユーザの操作対象がマスター装置１００１とスレーブ装置のいずれであるかにかかわらず、その操作情報は常にマスター装置１００１において把握される。操作情報の送信は、例えば、ＤＭＡコマンドが操作情報送信コマンドであるソフトウェアセルによって行われる。
【０３６１】
そして、マスター装置１００１内の情報処理コントローラ１０１１に含まれるメインプロセッサ１０２１−１は、その操作情報に従って、実行する機能プログラムを選択する。その際、必要であれば、マスター装置１００１内の情報処理コントローラ１０１１に含まれるメインプロセッサ１０２１−１は、上記の方法によって自装置の外部記録部１０３１−１または１０３１−２からメインメモリ１０２６−１に機能プログラムをロードするが、他の情報処理装置（スレーブ装置）がマスター装置１００１に機能プログラムを送信してもよい。
【０３６２】
機能プログラムには、その実行単位ごとに必要となる、図４に示した各情報として表される情報処理装置種別ＩＤ、メインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件などの、装置に関する要求スペックが規定されている。
【０３６３】
マスター装置１００１内の情報処理コントローラ１０１１に含まれるメインプロセッサ１０２１−１は、各機能プログラムについて必要となる上記要求スペックを読み出す。また、あらかじめ能力交換プログラムによってメインメモリ１０２６−１に記録された装置情報テーブルを参照し、各情報処理装置の装置情報を読み出す。ここでの装置情報は、図４に示した情報処理装置ＩＤ以下の各情報を示し、メインプロセッサ、サブプロセッサ、メインメモリおよび外部記録部に関する情報である。
【０３６４】
マスター装置１００１内の情報処理コントローラ１０１１に含まれるメインプロセッサ１０２１−１は、ネットワーク１００９上に接続された各情報処理装置の上記装置情報と、機能プログラム実行に必要となる上記要求スペックとを順次比較する。
【０３６５】
そして、例えば、機能プログラムが録画機能を必要とする場合には、情報処理装置種別ＩＤに基づいて、録画機能を有する情報処理装置のみを特定して抽出する。さらに、機能プログラムを実行するために必要なメインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件を確保できるスレーブ装置を、実行要求候補装置として特定する。ここで、複数の実行要求候補装置が特定された場合には、当該候補装置から１つの実行要求候補装置を特定して選択する。
【０３６６】
実行要求するスレーブ装置が特定されたら、マスター装置１００１内の情報処理コントローラ１０１１に含まれるメインプロセッサ１０２１−１は、その特定されたスレーブ装置について、自装置内の情報処理コントローラ１０１１に含まれるメインメモリ１０２６−１に記録されている当該スレーブ装置の装置情報テーブルを更新する。
【０３６７】
さらに、マスター装置１００１内の情報処理コントローラ１０１１に含まれるメインプロセッサ１０２１−１は、ＤＭＡコマンドが機能プログラム実行コマンドであるソフトウェアセルを生成し、当該ソフトウェアセルのセルインターフェースに、当該機能プログラムに関する必要なサブプロセッサの情報およびサンドボックスサイズ（図３参照）を設定して、上記実行要求されるスレーブ装置に対して送信する。
【０３６８】
機能プログラムの実行を要求されたスレーブ装置は、その機能プログラムを実行するとともに、自装置の装置情報テーブルを更新する。その際、必要であれば、スレーブ装置内の情報処理コントローラに含まれるメインプロセッサ１０２１は、上記の方法によって自装置の外部記録部１０３１からメインメモリ１０２６に機能プログラムおよび当該機能プログラムと連携動作するサブプロセッサプログラムをロードする。
【０３６９】
機能プログラムの実行を要求されたスレーブ装置の外部記録部１０３１に、必要な機能プログラムまたは当該機能プログラムと連携動作するサブプロセッサプログラムが記録されていない場合には、他の情報処理装置が当該機能プログラムまたはサブプロセッサプログラムを、その機能プログラム実行要求先スレーブ装置に送信するように、システムを構成すればよい。
【０３７０】
サブプロセッサプログラムについては、前述のロードコマンドおよびキックコマンドを利用して他の情報処理装置に実行させることもできる。
【０３７１】
機能プログラムの実行終了後、機能プログラムを実行したスレーブ装置内の情報処理コントローラに含まれるメインプロセッサ１０２１は、終了通知をマスター装置１００１内の情報処理コントローラ１０１１に含まれるメインプロセッサ１０２１−１に送信するとともに、自装置の装置情報テーブルを更新する。マスター装置１００１内の情報処理コントローラ１０１１に含まれるメインプロセッサ１０２１−１は、その終了通知を受信して、機能プログラムを実行したスレーブ装置の装置情報テーブルを更新する。
【０３７２】
マスター装置１００１内の情報処理コントローラ１０１１に含まれるメインプロセッサ１０２１−１は、自装置および他装置の装置情報テーブルの参照結果から、当該の機能プログラムを実行することができる情報処理装置として、自身を選択する場合もあり得る。その場合には、マスター装置１００１が当該の機能プログラムを実行する。
【０３７３】
図２５の例で、ユーザがスレーブ装置Ａ（情報処理装置１００２）を操作し、当該操作に応じた機能プログラムを別のスレーブ装置Ｂ（情報処理装置１００３）が実行する場合につき、図２６に以上の分散処理の例を示す。
【０３７４】
図２６の例では、ユーザがスレーブ装置Ａを操作することによって、スレーブ装置Ａを含むネットワークシステム全体の分散処理が開始して、まず、スレーブ装置Ａは、ステップ１０９１で、その操作情報をマスター装置１００１に送信する。
【０３７５】
マスター装置１００１は、ステップ１０９２で、その操作情報を受信し、さらにステップ１０９３に進んで、自装置のメインメモリ１０２６−１に記録されている自装置および他装置の装置情報テーブルから、各情報処理装置の動作状態を調べて、受信した操作情報に応じた機能プログラムを実行することができる情報処理装置を選択する。この例は、スレーブ装置Ｂが選択される場合である。
【０３７６】
次に、マスター装置１００１は、ステップ１０９４で、その選択したスレーブ装置Ｂに対して機能プログラムの実行を要求する。
【０３７７】
スレーブ装置Ｂは、ステップ１０９５で、その実行要求を受信し、さらにステップ１０９６に進んで、実行要求された機能プログラムを実行する。
【０３７８】
以上のように、ユーザは、１台の情報処理装置のみを操作することによって、他の情報処理装置を操作することなく、複数の情報処理装置１００１，１００２，１００３および１００４を仮想的な１台の情報処理装置１００７として動作させることができる。
【０３７９】
（４−６．各情報処理装置およびシステムの具体例）
ネットワーク１００９を介して互いに接続される情報処理装置１００１，１００２，１００３および１００４は、基本的に上記のような情報処理コントローラ１０１１，１０１２，１０１３および１０１４によって情報処理を行うものであれば、どのようなものでもよいが、図２７に、その一例を示す。
【０３８０】
この例では、情報処理コントローラ１０１１を備える情報処理装置１００１は、ハードディスクレコーダで、図２８に示すように、ハードウェア構成としては、図１６に示した外部記録部１０３１−１として、ハードディスクを内蔵し、図１６に示した外部記録部１０３１−２として、ＤＶＤ±Ｒ／ＲＷ、ＣＤ±Ｒ／ＲＷ、Ｂｌｕ−ｒａｙＤｉｓｃ（登録商標）などの光ディスクを装着できるように構成されるとともに、情報処理コントローラ１０１１のバス１０３２−１に接続されたバス１０５１−１に、放送受信部１０５２−１、映像入力部１０５３−１、音声入力部１０５４−１、映像出力部１０５５−１、音声出力部１０５６−１、操作パネル部１０５７−１、リモコン受光部１０５８−１およびネットワーク接続部１０５９−１が接続されたものである。
【０３８１】
放送受信部１０５２−１、映像入力部１０５３−１および音声入力部１０５４−１は、放送信号を受信し、または情報処理装置１００１の外部から映像信号および音声信号を入力し、それぞれ所定フォーマットのデジタルデータに変換して、情報処理コントローラ１０１１での処理のためにバス１０５１−１に送出するものであり、映像出力部１０５５−１および音声出力部１０５６−１は、情報処理コントローラ１０１１からバス１０５１−１に送出された映像データおよび音声データを処理して、デジタルデータのまま、またはアナログ信号に変換して、情報処理装置１００１の外部に送出するものであり、リモコン受光部１０５８−１は、リモコン送信器１０６３−１からのリモコン（遠隔操作）赤外線信号を受信するものである。
【０３８２】
図２７および図２８に示すように、情報処理装置（ハードディスクレコーダ）１００１の映像出力部１０５５−１および音声出力部１０５６−１には、モニタ表示装置１０６１およびスピーカ装置１０６２が接続される。
【０３８３】
図２７の例の、情報処理コントローラ１０１２を備える情報処理装置１００２も、ハードディスクレコーダで、図２８において括弧内に参照番号を付して示すように、情報処理装置１００１と同様に構成されたものである。ただし、例えば、図２７に示すように、情報処理装置（ハードディスクレコーダ）１００２には、モニタ表示装置およびスピーカ装置は接続されない。
【０３８４】
情報処理装置（ハードディスクレコーダ）１００１および１００２、すなわち情報処理コントローラ１０１１および１０１２のソフトウェア構成としては、図２９に示すように、制御プログラムとして、ＭＳマネージャおよび能力交換プログラムを備え、機能プログラムとして、映像音声記録、映像音声再生、素材検索および番組録画予約のためのプログラムを備え、デバイスドライバとして、放送受信、映像出力、音声出力、外部記録部入出力およびネットワーク入出力のためのプログラムを備える。
【０３８５】
図２７の例の、情報処理コントローラ１０１３を備える情報処理装置１００３は、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）で、図３０に示すように、ハードウェア構成としては、図１６に示した外部記録部１０３１−５として、メモリカードディスクを装着できるように構成されるとともに、情報処理コントローラ１０１３のバス１０３２−３に接続されたバス１０７１に、液晶表示部１０７２、音声出力部１０７３、カメラ部１０７４、音声入力部１０７５、キーボード部１０７６およびネットワーク接続部１０７７が接続されたものである。
【０３８６】
なお、図１６では内部を省略した情報処理コントローラ１０１３は、メインプロセッサ１０２１−３、サブプロセッサ１０２３−７，１０２３−８および１０２３−９、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）１０２５−３、コントロールレジスタ１０２８−３、ワークメモリ１０２９−３、ＤＣ（ディスクコントローラ）１０３０−３、およびバス１０３２−３を備え、そのメインプロセッサ１０２１−３は、ＬＳ（ローカルストレージ）１０２２−３を有し、各サブプロセッサ１０２３−７，１０２３−８および１０２３−９は、ＬＳ（ローカルストレージ）１０２４−７，１０２４−８および１０２４−９を有する。
【０３８７】
情報処理装置（ＰＤＡ）１００３、すなわち情報処理コントローラ１０１３のソフトウェア構成としては、図３１に示すように、制御プログラムとして、ＭＳマネージャおよび能力交換プログラムを備え、機能プログラムとして、映像音声記録、映像音声再生、電話帳、ワープロおよび表計算のためのプログラム、およびＷｅｂブラウザを備え、デバイスドライバとして、映像出力、音声出力、カメラ映像入力、マイク音声入力およびネットワーク入出力のためのプログラムを備える。
【０３８８】
図２７の例の、情報処理コントローラ１０１４を備える情報処理装置１００４は、ポータブルＣＤプレーヤで、図３２に示すように、ハードウェア構成としては、図１６に示した外部記録部１０３１−６として、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）を装着できるように構成されるとともに、情報処理コントローラ１０１４のバス１０３２−４に接続されたバス１０８１に、液晶表示部１０８２、音声出力部１０８３、操作ボタン部１０８４およびネットワーク接続部１０８５が接続されたものである。
【０３８９】
なお、図１６では内部を省略した情報処理コントローラ１０１４は、メインプロセッサ１０２１−４、サブプロセッサ１０２３−１０，１０２３−１１および１０２３−１２、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）１０２５−４、コントロールレジスタ１０２８−４、ワークメモリ１０２９−４、ＤＣ（ディスクコントローラ）１０３０−４、およびバス１０３２−４を備え、そのメインプロセッサ１０２１−４は、ＬＳ（ローカルストレージ）１０２２−４を有し、各サブプロセッサ１０２３−１０，１０２３−１１および１０２３−１２は、ＬＳ（ローカルストレージ）１０２４−１０，１０２４−１１および１０２４−１２を有する。
【０３９０】
情報処理装置（ポータブルＣＤプレーヤ）１００４、すなわち情報処理コントローラ１０１４のソフトウェア構成としては、図３３に示すように、制御プログラムとして、ＭＳマネージャおよび能力交換プログラムを備え、機能プログラムとして、音楽再生のためのプログラムを備え、デバイスドライバとして、音声出力、ＣＤ制御およびネットワーク入出力のためのプログラムを備える。
【０３９１】
以上のような図２７の例のネットワークシステムにおいて、情報処理装置１００１，１００３および１００４がネットワーク１００９上に接続されており、情報処理装置１００１がマスター装置（ＭＳステータス＝０）として、情報処理装置１００３および１００４がスレーブ装置（ＭＳステータス＝１）として、設定されているものとする。
【０３９２】
この状態で、新たに情報処理装置１００２がネットワーク１００９に接続されると、上述した方法によって、情報処理装置１００２内の情報処理コントローラ１０１２に含まれるメインプロセッサ１０２１−２で実行されているＭＳマネージャは、他の情報処理装置１００１，１００３および１００４にＭＳステータスを照会して、情報処理装置１００１が既にマスター装置として存在することを認識し、自装置（情報処理装置１００２）をスレーブ装置（ＭＳステータス＝１）に設定する。また、マスター装置に設定されている情報処理装置１００１は、新たに追加された情報処理装置１００２を含む各装置の装置情報を収集して、メインメモリ１０２６−１内の装置情報テーブルを更新する。
【０３９３】
このような状態で、ユーザによってスレーブ装置である情報処理装置（ＰＤＡ）１００３で２時間の放送番組の録画予約の操作が行われた場合を示す。
【０３９４】
この場合、スレーブ装置である情報処理装置（ＰＤＡ）１００３は、ユーザから録画開始時刻、録画終了時刻、録画対象放送チャネル、録画品質などの情報を含む録画予約情報の入力を受け付け、当該録画予約情報およびＤＭＡコマンドとしての録画予約コマンドを含むソフトウェアセルを生成して、マスター装置である情報処理装置１００１に送信する。
【０３９５】
ＤＭＡコマンドが録画予約コマンドであるソフトウェアセルを受信した情報処理装置１００１内の情報処理コントローラ１０１１に含まれるメインプロセッサ１０２１−１は、録画予約コマンドを読み出すとともに、メインメモリ１０２６−１内の装置情報テーブルを参照して、当該録画予約コマンドを実行可能な情報処理装置を特定する。
【０３９６】
まず、メインプロセッサ１０２１−１は、装置情報テーブルに含まれる各情報処理装置１００１，１００２，１００３および１００４の情報処理装置種別ＩＤを読み出して、録画予約コマンドに対応する機能プログラムを実行可能な情報処理装置を抽出する。ここでは、録画機能を示す情報処理装置種別ＩＤを有する情報処理装置１００１および１００２が候補装置として特定され、情報処理装置１００３および１００４は候補装置から除外される。
【０３９７】
次に、マスター装置である情報処理装置１００１内の情報処理コントローラ１０１１に含まれるメインプロセッサ１０２１−１は、装置情報テーブルを参照して、情報処理装置１００１および１００２のメインプロセッサまたはサブプロセッサの処理能力、メインメモリに関する情報などの、装置に関する情報を読み出し、情報処理装置１００１および１００２が録画予約コマンドに対応する機能プログラムの実行に必要な要求スペックを満足するか否かを判断する。ここでは、情報処理装置１００１，１００２とも、録画予約コマンドに対応する機能プログラムの実行に必要な要求スペックを満足するものとする。
【０３９８】
さらに、メインプロセッサ１０２１−１は、装置情報テーブルを参照して、情報処理装置１００１および１００２の外部記録部に関する情報を読み出し、外部記録部の空き容量が当該録画予約コマンドの実行に必要な容量を満足するか否かを判断する。情報処理装置１００１および１００２はハードディスクレコーダであるので、それぞれハードディスク１０３１−１および１０３１−３の、総容量と使用量との差分が、それぞれの空き容量に相当する。
【０３９９】
この場合、情報処理装置１００１のハードディスク１０３１−１の空き容量が、録画時間に換算して１０分であり、情報処理装置１００２のハードディスク１０３１−３の空き容量が、録画時間に換算して２０時間であるとする。
【０４００】
このとき、マスター装置である情報処理装置１００１内の情報処理コントローラ１０１１に含まれるメインプロセッサ１０２１−１は、当該録画予約コマンドの実行に必要な２時間分の空き容量を確保できる情報処理装置を、実行要求先スレーブ装置として特定する。
【０４０１】
その結果、情報処理装置１００２のみが実行要求先スレーブ装置として選択され、マスター装置である情報処理装置１００１内の情報処理コントローラ１０１１に含まれるメインプロセッサ１０２１−１は、ユーザにより操作された情報処理装置１００３から送信された録画予約情報を含む当該録画予約コマンドを情報処理装置１００２に送信して、上記２時間の放送番組の録画予約の実行を要求する。
【０４０２】
そして、情報処理装置１００２内の情報処理コントローラ１０１２に含まれるメインプロセッサ１０２１−２は、当該録画予約コマンドを解析して、録画に必要な機能プログラムを外部記録部であるハードディスク１０３１−３からメインメモリ１０２６−２にロードし、録画予約情報に従って録画を実行する。その結果、録画予約された２時間の放送番組の映像音声データが情報処理装置１００２のハードディスク１０３１−３に記録される。
【０４０３】
このように、図２７の例のネットワークシステムにおいても、ユーザは、１台の情報処理装置のみを操作することによって、他の情報処理装置を操作することなく、複数の情報処理装置１００１，１００２，１００３および１００４を仮想的な１台の情報処理装置１００７として動作させることができる。
【図面の簡単な説明】
【０４０４】
【図１】この発明のネットワークシステムの一例を示す図である。
【図２】この発明の情報処理装置が備える情報処理コントローラの説明に供する図である。
【図３】ソフトウェアセルの一例を示す図である。
【図４】ＤＭＡコマンドがステータス返信コマンドである場合のソフトウェアセルのデータ領域を示す図である。
【図５】複数の情報処理装置が仮想的な１台の情報処理装置として動作する様子を示す図である。
【図６】情報処理コントローラのソフトウェア構成の一例を示す図である。
【図７】４台の情報処理装置が仮想的な１台の情報処理装置として動作する様子を示す図である。
【図８】図７のシステムにおける分散処理の例を示す図である。
【図９】各情報処理装置およびシステムの具体例を示す図である。
【図１０】図９中のハードディスクレコーダのハードウェア構成を示す図である。
【図１１】図９中のハードディスクレコーダのソフトウェア構成を示す図である。
【図１２】図９中のＰＤＡのハードウェア構成を示す図である。
【図１３】図９中のＰＤＡのソフトウェア構成を示す図である。
【図１４】図９中のポータブルＣＤプレーヤのハードウェア構成を示す図である。
【図１５】図９中のポータブルＣＤプレーヤのソフトウェア構成を示す図である。
【図１６】この発明のネットワークシステムの他の例を示す図である。
【図１７】この発明の情報処理装置が備える情報処理コントローラの説明に供する図である。
【図１８】ＤＭＡＣの内部構造を示す図である。
【図１９】情報処理装置内のコマンド／レスポンス構造を示す図である。
【図２０】サブプロセッサがメインメモリにアクセスする時の手順を示す図である。
【図２１】ワークメモリの内部構造を示す図である。
【図２２】サブプロセッサの内部構造を示す図である。
【図２３】コントロールレジスタの内部構造を示す図である。
【図２４】複数の情報処理装置が仮想的な１台の情報処理装置として動作する様子を示す図である。
【図２５】４台の情報処理装置が仮想的な１台の情報処理装置として動作する様子を示す図である。
【図２６】図２５のシステムにおける分散処理の例を示す図である。
【図２７】各情報処理装置およびシステムの具体例を示す図である。
【図２８】図２７中のハードディスクレコーダのハードウェア構成を示す図である。
【図２９】図２７中のハードディスクレコーダのソフトウェア構成を示す図である。
【図３０】図２７中のＰＤＡのハードウェア構成を示す図である。
【図３１】図２７中のＰＤＡのソフトウェア構成を示す図である。
【図３２】図２７中のポータブルＣＤプレーヤのハードウェア構成を示す図である。
【図３３】図２７中のポータブルＣＤプレーヤのソフトウェア構成を示す図である。
【符号の説明】
【０４０５】
主要部については図中に全て記述したので、ここでは省略する。
【図１】
2005251163.tif 000003
【図２】
2005251163.tif 000004
【図３】
2005251163.tif 000005
【図４】
2005251163.tif 000006
【図５】
2005251163.tif 000007
【図６】
2005251163.tif 000008
【図７】
2005251163.tif 000009
【図８】
2005251163.tif 000010
【図９】
2005251163.tif 000011
【図１０】
2005251163.tif 000012
【図１１】
2005251163.tif 000013
【図１２】
2005251163.tif 000014
【図１３】
2005251163.tif 000015
【図１４】
2005251163.tif 000016
【図１５】
2005251163.tif 000017
【図１６】
2005251163.tif 000018
【図１７】
2005251163.tif 000019
【図１８】
2005251163.tif 000020
【図１９】
2005251163.tif 000021
【図２０】
2005251163.tif 000022
【図２１】
2005251163.tif 000023
【図２２】
2005251163.tif 000024
【図２３】
2005251163.tif 000025
【図２４】
2005251163.tif 000026
【図２５】
2005251163.tif 000027
【図２６】
2005251163.tif 000028
【図２７】
2005251163.tif 000029
【図２８】
2005251163.tif 000030
【図２９】
2005251163.tif 000031
【図３０】
2005251163.tif 000032
【図３１】
2005251163.tif 000033
【図３２】
2005251163.tif 000034
【図３３】
2005251163.tif 000035