[1.ネットワークシステムおよび情報処理装置の基本的構成その1]
図1は、この発明のネットワークシステムの一例を示し、ネットワーク9を介して複数の情報処理装置1,2,3および4が接続されたものである。
(1−1.情報処理装置および情報処理コントローラ)
情報処理装置1,2,3および4は、それぞれ後述のような各種のAV(Audio and Visual)機器やポータブル機器である。
情報処理装置1について示すと、情報処理装置1は、コンピュータ機能部として情報処理コントローラ11を備える。情報処理コントローラ11は、メインプロセッサ21−1、サブプロセッサ23−1,23−2および23−3、DMAC(ダイレクトメモリアクセスコントローラ)25−1、およびDC(ディスクコントローラ)27−1を有する。
メインプロセッサ21−1は、サブプロセッサ23−1,23−2および23−3によるサブプロセッサプログラムの実行(データ処理)のスケジュール管理と、情報処理コントローラ11(情報処理装置1)の全般的な管理とを行う。ただし、メインプロセッサ21−1内で管理のためのプログラム以外のプログラムが動作するように構成することもできる。その場合には、メインプロセッサ21−1はサブプロセッサとしても機能することになる。メインプロセッサ21−1は、LS(ローカルストレージ)22−1を有する。
サブプロセッサは、1つでもよいが、望ましくは複数とする。この例は、複数の場合である。
各サブプロセッサ23−1,23−2および23−3は、メインプロセッサ21−1の制御によって並列的かつ独立に、サブプロセッサプログラムを実行し、データを処理する。さらに、場合によってメインプロセッサ21−1内のプログラムがサブプロセッサ23−1,23−2または23−3内のサブプロセッサプログラムと連携して動作するように構成することもできる。後述する機能プログラムもメインプロセッサ21−1内で動作するプログラムである。各サブプロセッサ23−1,23−2および23−3も、LS(ローカルストレージ)24−1,24−2および24−3を有する。
DMAC25−1は、情報処理コントローラ11に接続されたDRAM(ダイナミックRAM)などからなるメインメモリ26−1に格納されているプログラムおよびデータにアクセスするものであり、DC27−1は、情報処理コントローラ11に接続された外部記録部28−1および28−2にアクセスするものである。
外部記録部28−1および28−2は、固定ディスク(ハードディスク)でも、リムーバブルディスクでもよく、また、MO,CD±RW,DVD±RWなどの光ディスク、メモリディスク、SRAM(スタティックRAM)、ROMなど、各種のものを用いることができる。したがって、DC27−1は、ディスクコントローラと称するが、外部記録部コントローラである。
図1の例のように、情報処理コントローラ11に対して外部記録部28を複数接続できるように、情報処理コントローラ11を構成することができる。
メインプロセッサ21−1、各サブプロセッサ23−1,23−2および23−3、DMAC25−1、およびDC27−1は、バス29−1によって接続される。
情報処理コントローラ11には、当該の情報処理コントローラ11を備える情報処理装置1をネットワーク全体を通して一意的に識別できる識別子が、情報処理装置IDとして割り当てられる。
メインプロセッサ21−1、および各サブプロセッサ23−1,23−2および23−3に対しても同様に、それぞれを特定できる識別子が、メインプロセッサIDおよびサブプロセッサIDとして割り当てられる。
情報処理コントローラ11は、ワンチップIC(集積回路)として構成することが望ましい。
他の情報処理装置2,3および4も、同様に構成される。ここで、親番号が同一であるユニットは、枝番号が異なっていても、特に断りがない限り、同じ働きをするものとする。また、以下の説明において枝番号が省略されている場合には、枝番号の違いにいる差異を生じないものとする。
(1−2.各サブプロセッサからメインメモリへのアクセス)
上述したように、1つの情報処理コントローラ内の各サブプロセッサ23は、独立にサブプロセッサプログラムを実行し、データを処理するが、異なるサブプロセッサがメインメモリ26内の同一領域に対して同時に読み出しまたは書き込みを行った場合には、データの不整合を生じ得る。そこで、サブプロセッサ23からメインメモリ26へのアクセスは、以下のような手順によって行う。
図2(A)に示すように、メインメモリ26は、アドレス指定可能な複数のメモリロケーション0〜Mによって構成される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメント0〜Mが割り振られる。追加セグメントは、F/Eビット、サブプロセッサIDおよびLSアドレス(ローカルストレージアドレス)を含むものとされる。また、各メモリロケーションには、後述のアクセスキー0〜Mも割り振られる。F/Eビットは、以下のように定義される。
F/Eビット=0は、サブプロセッサ23によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、読み出し不可であることを示す。また、F/Eビット=0は、当該メモリロケーションにデータ書き込み可能であることを示し、書き込み後に1に設定される。
F/Eビット=1は、当該メモリロケーションのデータがサブプロセッサ23によって読み出されておらず、未処理の最新データであることを示す。当該メモリロケーションのデータは読み出し可能であり、サブプロセッサ23によって読み出された後に0に設定される。また、F/Eビット=1は、当該メモリロケーションがデータ書き込み不可であることを示す。
さらに、上記F/Eビット=0(読み出し不可/書き込み可)の状態において、当該メモリロケーションについて読み出し予約を設定することは可能である。F/Eビット=0のメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ23は、読み出し予約を行うメモリロケーションの追加セグメントに、読み出し予約情報として当該サブプロセッサ23のサブプロセッサIDおよびLSアドレスを書き込む。
その後、データ書き込み側のサブプロセッサ23によって、読み出し予約されたメモリロケーションにデータが書き込まれ、F/Eビット=1(読み出し可/書き込み不可)に設定されたとき、あらかじめ読み出し予約情報として追加セグメントに書き込まれたサブプロセッサIDおよびLSアドレスに読み出される。
複数のサブプロセッサによってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出し/書き込みを制御することによって、前段階の処理を行うサブプロセッサ23が、処理済みのデータをメインメモリ26内の所定アドレスに書き込んだ後に即座に、後段階の処理を行う別のサブプロセッサ23が前処理後のデータを読み出すことが可能となる。
図2(B)に示すように、各サブプロセッサ23内のLS24も、アドレス指定可能な複数のメモリロケーション0〜Lによって構成される。各メモリロケーションに対しては、同様に追加セグメント0〜Lが割り振られる。追加セグメントは、ビジービットを含むものとされる。
サブプロセッサ23がメインメモリ26内のデータを自身のLS24のメモリロケーションに読み出すときには、読み出し先のメモリロケーションに対応するビジービットを1に設定して予約する。ビジービットが1であるメモリロケーションには、他のデータは格納することができない。LS24のメモリロケーションに読み出し後、ビジービットは0になり、任意の目的に使用できるようになる。
図2(A)に示すように、さらに、各情報処理コントローラと接続されたメインメモリ26には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ26内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ23に割り当てられ、そのサブプロセッサが排他的に使用することができる。すなわち、各々のサブプロセッサ23は、自身に割り当てられたサンドボックスを使用できるが、この領域を超えてデータのアクセスを行うことはできない。
メインメモリ26は、複数のメモリロケーション0〜Mから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。すなわち、1つのサンドボックスは、1つまたは複数のメモリロケーションから構成される。
さらに、メインメモリ26の排他的な制御を実現するために、図2(C)に示すようなキー管理テーブルが用いられる。キー管理テーブルは、情報処理コントローラ内のSRAMのような比較的高速のメモリに格納され、DMAC25と関連付けられる。
キー管理テーブル内には、情報処理コントローラ内のサブプロセッサの数と同数のエントリが存在し、各エントリには、サブプロセッサIDおよび、それに対応するサブプロセッサキーおよびキーマスクが関連付けられて格納される。
サブプロセッサ23がメインメモリ26を使用する際のプロセスは、以下のとおりである。まず、サブプロセッサ23はDMAC25に、読み出しまたは書き込みのコマンドを送信する。このコマンドには、自身のサブプロセッサIDと、アクセス要求先であるメインメモリ26のアドレスが含まれる。
DMAC25は、このコマンドを実行する前に、キー管理テーブルを参照して、アクセス要求元のサブプロセッサ23のサブプロセッサキーを調べる。次に、DMAC25は、調べたアクセス要求元のサブプロセッサキーと、アクセス要求先であるメインメモリ26内の図2(A)に示したメモリロケーションに割り振られたアクセスキーとを比較して、2つのキーが一致した場合にのみ、上記のコマンドを実行する。
図2(C)に示したキー管理テーブル上のキーマスクは、その任意のビットが1になることによって、そのキーマスクに関連付けられたサブプロセッサキーの対応するビットが0または1になることができる。
例えば、サブプロセッサキーが1010であるとする。通常、このサブプロセッサキーによって1010のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが0001に設定されている場合には、キーマスクのビットが1に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ、このサブプロセッサキー1010によって、アクセスキーが1010または1011のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
以上のようにして、メインメモリ26のサンドボックスの排他性が実現される。すなわち、1つの情報処理コントローラ内の複数のサブプロセッサによってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサと、後段階の処理を行うサブプロセッサのみが、メインメモリ26の所定アドレスにアクセスできるようになり、データを保護することができる。
例えば、以下のように使用することが考えられる。まず、情報処理装置の起動直後においては、キーマスクの値は全てゼロである。メインプロセッサ内のプログラムが実行され、サブプロセッサ内のサブプロセッサプログラムと連携動作するものとする。第1のサブプロセッサにより実行された処理結果データを一旦、メインメモリ26に格納し、第2のサブプロセッサに送信したいときには、該当するメインメモリ領域は、当然どちらのサブプロセッサからもアクセス可能である必要がある。そのような場合に、メインプロセッサ内のプログラムは、キーマスクの値を適切に変更し、複数のサブプロセッサからアクセスできるメインメモリ領域を設けることにより、サブプロセッサによる多段階的の処理を可能にする。
より具体的には、他の情報処理装置からのデータ→第1のサブプロセッサによる処理→第1のメインメモリ領域→第2のサブプロセッサによる処理→第2のメインメモリ領域、という手順で多段階処理が行われるときには、
第1のサブプロセッサのサブプロセッサキー:0100、
第1のメインメモリ領域のアクセスキー :0100、
第2のサブプロセッサのサブプロセッサキー:0101、
第2のメインメモリ領域のアクセスキー :0101、
のような設定のままだと、第2のサブプロセッサは第1のメインメモリ領域にアクセスすることができない。そこで、第2のサブプロセッサのキーマスクを0001にすることにより、第2のサブプロセッサによる第1のメインメモリ領域へのアクセスを可能にすることができる。
(1−3.ソフトウェアセルの生成および構成)
図1のネットワークシステムでは、情報処理装置1,2,3および4の間での分散処理のために、情報処理装置1,2,3および4の間でソフトウェアセルが伝送される。すなわち、ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ21は、コマンド、プログラムおよびデータを含むソフトウェアセルを生成し、ネットワーク9を介して他の情報処理装置に送信することによって、処理を分散することができる。
図3に、ソフトウェアセルの構成の一例を示す。この例のソフトウェアセルは、全体として、送信元ID、送信先ID、応答先ID、セルインターフェース、DMAコマンド、プログラム、およびデータによって構成される。
送信元IDには、ソフトウェアセルの送信元である情報処理装置のネットワークアドレスおよび情報処理装置ID、さらに、その情報処理装置内の情報処理コントローラが備えるメインプロセッサ21および各サブプロセッサ23の識別子(メインプロセッサIDおよびサブプロセッサID)が含まれる。
送信先IDおよび応答先IDには、それぞれ、ソフトウェアセルの送信先である情報処理装置、およびソフトウェアセルの実行結果の応答先である情報処理装置についての、同じ情報が含まれる。
セルインターフェースは、ソフトウェアセルの利用に必要な情報であり、グローバルID、必要なサブプロセッサの情報、サンドボックスサイズ、および前回のソフトウェアセルIDから構成される。
グローバルIDは、ネットワーク全体を通して当該のソフトウェアセルを一意的に識別できるものであり、送信元ID、およびソフトウェアセルの作成または送信の日時(日付および時刻)に基づいて作成される。
必要なサブプロセッサの情報は、当該ソフトウェアセルの実行に必要なサブプロセッサの数が設定される。サンドボックスサイズは、当該ソフトウェアセルの実行に必要なメインメモリ26内およびサブプロセッサ23のLS24内のメモリ量が設定される。
前回のソフトウェアセルIDは、ストリーミングデータなどのシーケンシャルな実行を要求する1グループのソフトウェアセル内の、前回のソフトウェアセルの識別子である。
ソフトウェアセルの実行セクションは、DMAコマンド、プログラムおよびデータから構成される。DMAコマンドには、プログラムの起動に必要な一連のDMAコマンドが含まれ、プログラムには、サブプロセッサ23によって実行されるサブプロセッサプログラムが含まれる。ここでのデータは、このサブプロセッサプログラムを含むプログラムによって処理されるデータである。
さらに、DMAコマンドには、ロードコマンド、キックコマンド、機能プログラム実行コマンド、ステータス要求コマンド、およびステータス返信コマンドが含まれる。
ロードコマンドは、メインメモリ26内の情報をサブプロセッサ23内のLS24にロードするコマンドであり、ロードコマンド自体のほかに、メインメモリアドレス、サブプロセッサIDおよびLSアドレスを含む。メインメモリアドレスは、情報のロード元であるメインメモリ26内の所定領域のアドレスを示す。サブプロセッサIDおよびLSアドレスは、情報のロード先であるサブプロセッサ23の識別子およびLS24のアドレスを示す。
キックコマンドは、サブプロセッサプログラムの実行を開始するコマンドであり、キックコマンド自体のほかに、サブプロセッサIDおよびプログラムカウンタを含む。サブプロセッサIDは、キック対象のサブプロセッサ23を識別し、プログラムカウンタは、サブプロセッサプログラム実行用プログラムカウンタのためのアドレスを与える。
機能プログラム実行コマンドは、後述のように、ある情報処理装置が他の情報処理装置に対して、機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信した情報処理装置内の情報処理コントローラは、後述の機能プログラムIDによって、起動すべき機能プログラムを識別する。
ステータス要求コマンドは、送信先IDで示される情報処理装置の現在の動作状態(状況)に関する装置情報を、応答先IDで示される情報処理装置宛に送信することを要求するコマンドである。機能プログラムについては後述するが、図6に示す情報処理装置のメインメモリ26が記憶するソフトウェアの構成図において機能プログラムにカテゴライズされるプログラムである。機能プログラムは、メインメモリ26にロードされ、メインプロセッサ21により実行される。
ステータス返信コマンドは、上記のステータス要求コマンドを受信した情報処理装置が、自身の装置情報を当該ステータス要求コマンドに含まれる応答先IDで示される情報処理装置に応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納する。
図4に、DMAコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す。
情報処理装置IDは、情報処理コントローラを備える情報処理装置を識別するための識別子であり、ステータス返信コマンドを送信する情報処理装置のIDを示す。情報処理装置IDは、電源投入時、その情報処理装置内の情報処理コントローラに含まれるメインプロセッサ21によって、電源投入時の日時、情報処理装置のネットワークアドレスおよび情報処理装置内の情報処理コントローラに含まれるサブプロセッサ23の数などに基づいて生成される。
情報処理装置種別IDには、当該の情報処理装置の特徴を表す値が含まれる。情報処理装置の特徴とは、例えば、後述のハードディスクレコーダ、PDA(Personal Digital Assistants)、ポータブルCD(Compact Disc)プレーヤなどである。また、情報処理装置種別IDは、映像音声記録、映像音声再生など、情報処理装置の機能を表すものであってもよい。情報処理装置の特徴や機能を表す値は予め決定されているものとし、情報処理装置種別IDを読み出すことにより、当該情報処理装置の特徴や機能を把握することが可能である。
MS(マスター/スレーブ)ステータスは、後述のように情報処理装置がマスター装置またはスレーブ装置のいずれで動作しているかを表すもので、これが0に設定されている場合にはマスター装置として動作していることを示し、1に設定されている場合にはスレーブ装置として動作していることを示す。
メインプロセッサ動作周波数は、情報処理コントローラ内のメインプロセッサ21の動作周波数を表す。メインプロセッサ使用率は、メインプロセッサ21で現在動作している全てのプログラムについての、メインプロセッサ21での使用率を表す。メインプロセッサ使用率は、対象メインプロセッサの全処理能力に対する使用中の処理能力の比率を表した値で、例えばプロセッサ処理能力評価のための単位であるMIPSを単位として算出され、または単位時間あたりのプロセッサ使用時間に基づいて算出される。後述のサブプロセッサ使用率についても同様である。
サブプロセッサ数は、当該の情報処理コントローラが備えるサブプロセッサ23の数を表す。サブプロセッサIDは、当該の情報処理コントローラ内の各サブプロセッサ23を識別するための識別子である。
サブプロセッサステータスは、各サブプロセッサ23の状態を表すものであり、unused,reserved,busyなどの状態がある。unusedは、当該のサブプロセッサが現在使用されてなく、使用の予約もされていないことを示す。reservedは、現在は使用されていないが、使用が予約されている状態を示す。busyは、現在使用中であることを示す。
サブプロセッサ使用率は、当該のサブプロセッサで現在実行している、または当該のサブプロセッサに実行が予約されているサブプロセッサプログラムについての、当該サブプロセッサでの使用率を表す。すなわち、サブプロセッサ使用率は、サブプロセッサステータスがbusyである場合には、現在の使用率を示し、サブプロセッサステータスがreservedである場合には、後に使用される予定の推定使用率を示す。
サブプロセッサID、サブプロセッサステータスおよびサブプロセッサ使用率は、1つのサブプロセッサ23に対して一組設定され、1つの情報処理コントローラ内のサブプロセッサ23の数の組数だけ設定される。
メインメモリ総容量およびメインメモリ使用量は、それぞれ、当該の情報処理コントローラに接続されているメインメモリ26の総容量および現在使用中の容量を表す。
外部記録部数は、当該の情報処理コントローラに接続されている外部記録部28の数を表す。外部記録部IDは、当該の情報処理コントローラに接続されている外部記録部28を一意的に識別する情報である。外部記録部種別IDは、当該の外部記録部の種類(例えば、ハードディスク、CD±RW、DVD±RW、メモリディスク、SRAM、ROMなど)を表す。
外部記録部総容量および外部記録部使用量は、それぞれ、外部記録部IDによって識別される外部記録部28の総容量および現在使用中の容量を表す。
外部記録部ID、外部記録部種別ID、外部記録部総容量および外部記録部使用量は、1つの外部記録部28に対して一組設定され、当該の情報処理コントローラに接続されている外部記録部28の数の組数だけ設定される。すなわち、1つの情報処理コントローラに複数の外部記録部が接続されている場合、各々の外部記録部には異なる外部記録部IDが割り当てられ、外部記録部種別ID、外部記録部総容量および外部記録部使用量も別々に管理される。
(1−4.ソフトウェアセルの実行)
ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ21は、以上のような構成のソフトウェアセルを生成し、ネットワーク9を介して他の情報処理装置および当該装置内の情報処理コントローラに送信する。送信元の情報処理装置、送信先の情報処理装置、応答先の情報処理装置、および各装置内の情報処理コントローラは、それぞれ、上記の送信元ID、送信先IDおよび応答先IDによって識別される。
ソフトウェアセルを受信した情報処理装置内の情報処理コントローラに含まれるメインプロセッサ21は、そのソフトウェアセルをメインメモリ26に格納する。さらに、送信先のメインプロセッサ21は、ソフトウェアセルを読み出し、それに含まれるDMAコマンドを処理する。
具体的に、送信先のメインプロセッサ21は、まず、ロードコマンドを実行する。これによって、ロードコマンドで指示されたメインメモリアドレスから、ロードコマンドに含まれるサブプロセッサIDおよびLSアドレスで特定されるサブプロセッサ内のLS24の所定領域に、情報がロードされる。ここでロードされる情報は、受信したソフトウェアセルに含まれるサブプロセッサプログラムまたはデータ、あるいはその他の指示されたデータである。
次に、メインプロセッサ21は、キックコマンドを、これに含まれるサブプロセッサIDで指示されたサブプロセッサに、同様にキックコマンドに含まれるプログラムカウンタと共に送信する。
指示されたサブプロセッサは、そのキックコマンドおよびプログラムカウンタに従って、サブプロセッサプログラムを実行する。そして、実行結果をメインメモリ26に格納した後、実行を完了したことをメインプロセッサ21に通知する。
なお、送信先の情報処理装置内の情報処理コントローラにおいてソフトウェアセルを実行するプロセッサはサブプロセッサ23に限定されるものではなく、メインプロセッサ21がソフトウェアセルに含まれる機能プログラムなどのメインメモリ用プログラムを実行するように指定することも可能である。
この場合には、送信元の情報処理装置は、送信先の情報処理装置宛に、サブプロセッサプログラムの代わりに、メインメモリ用プログラムおよびそのメインメモリ用プログラムによって処理されるデータを含み、DMAコマンドがロードコマンドであるソフトウェアセルを送信し、メインメモリ26にメインメモリ用プログラムおよびそれによって処理されるデータを記憶させる。
次に、送信元の情報処理装置は、送信先の情報処理装置宛に、送信先の情報処理装置内の情報処理コントローラについてのメインプロセッサID、メインメモリアドレス、メインメモリ用プログラムを識別するための後述の機能プログラムIDなどの識別子、およびプログラムカウンタを含み、DMAコマンドがキックコマンドまたは機能プログラム実行コマンドであるソフトウェアセルを送信して、メインプロセッサ21に当該メインメモリ用プログラムを実行させる。
以上のように、この発明のネットワークシステムでは、送信元の情報処理装置は、サブプロセッサプログラムまたはメインメモリ用プログラムをソフトウェアセルによって送信先の情報処理装置に送信するとともに、当該サブプロセッサプログラムを送信先の情報処理装置内の情報処理コントローラに含まれるサブプロセッサ23にロードさせ、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置に実行させることができる。
送信先の情報処理装置内の情報処理コントローラでは、受信したソフトウェアセルに含まれるプログラムがサブプロセッサプログラムである場合には、当該サブプロセッサプログラムを指定されたサブプロセッサにロードさせる。そして、ソフトウェアセルに含まれるサブプロセッサプログラムまたはメインメモリ用プログラムを実行させる。
したがって、ユーザが送信先の情報処理装置を操作しなくても自動的に、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置内の情報処理コントローラに実行させることができる。
このようにして情報処理装置は、自装置内の情報処理コントローラがサブプロセッサプログラムまたは機能プログラムなどのメインメモリ用プログラムを有していない場合には、ネットワークに接続された他の情報処理装置からそれらを取得することができる。さらに、各サブプロセッサとメインメモリとの間ではDMA方式によりデータが転送され、また上述したサンドボックスを使用することによって、1つの情報処理コントローラ内でデータを多段階に処理する必要がある場合でも、高速かつ高セキュリティに処理を実行することができる。
[2.情報処理装置間の分散処理の例その1]
ソフトウェアセルの使用による分散処理の結果、図5の上段に示すようにネットワーク9に接続されている複数の情報処理装置1,2,3および4は、図5の下段に示すように、仮想的な1台の情報処理装置7として動作する。ただし、そのためには、以下のような構成によって、以下のような処理が実行される必要がある。
(2−1.システムのソフトウェア構成とプログラムのロード)
図6に、個々の情報処理コントローラのメインメモリ26が記憶するソフトウェアの構成を示す。これらのソフトウェア(プログラム)は、情報処理装置に電源が投入される前においては、当該の情報処理コントローラに接続される外部記録部28に記録されているものである。
各プログラムは、機能または特徴によって、制御プログラム、機能プログラムおよびデバイスドライバにカテゴライズされる。
制御プログラムは、各情報処理コントローラが同じものを備え、各情報処理コントローラのメインプロセッサ21が実行するもので、後述のMS(マスター/スレーブ)マネージャおよび能力交換プログラムを含む。
機能プログラムは、メインプロセッサ21が実行するもので、記録用、再生用、素材検索用など、情報処理コントローラごとに情報処理装置に応じたものが備えられる。
デバイスドライバは、情報処理コントローラ(情報処理装置)の入出力(送受信)用で、放送受信、モニタ出力、ビットストリーム入出力、ネットワーク入出力など、情報処理コントローラごとに情報処理装置に応じたものが備えられる。
ケーブルの差し込みなどによって情報処理装置が物理的にネットワーク9に接続された状態で、情報処理装置に主電源が投入され、情報処理装置が電気的・機能的にもネットワーク9に接続されると、その情報処理装置の情報処理コントローラのメインプロセッサ21は、制御プログラムに属する各プログラム、およびデバイスドライバに属する各プログラムを、メインメモリ26にロードする。
ロード手順としては、メインプロセッサ21は、まず、DC27に読み出し命令を実行させることによって、外部記録部28からプログラムを読み出し、次に、DMAC25に書き込み命令を実行させることによって、そのプログラムをメインメモリ26に書き込む。
機能プログラムに属する各プログラムについては、必要なときに必要なプログラムだけをロードするように構成してもよく、または、他のカテゴリに属するプログラムと同様に、主電源投入直後に各プログラムをロードするように構成してもよい。
機能プログラムに属する各プログラムは、ネットワークに接続された全ての情報処理装置の外部記録部28に記録されている必要はなく、いずれか1つの情報処理装置の外部記録部28に記録されていれば、前述の方法によって他の情報処理装置からロードすることができるので、結果的に図5の下段に示すように、仮想的な1台の情報処理装置7として機能プログラムを実行することができる。
また、前述したように、メインプロセッサ21によって処理される機能プログラムは、サブプロセッサ23によって処理されるサブプロセッサプログラムと連携動作する場合がある。そこで、メインプロセッサ21が外部記録部28から機能プログラムを読み出し、メインメモリ26に書き込む際、対象となる機能プログラムと連携動作するサブプロセッサプログラムが存在する場合には、当該サブプロセッサプログラムも併せて同じメインメモリ26に書き込む。この場合、連携動作するサブプロセッサプログラムは、1個である場合もあるが、複数個であることもあり得る。複数個である場合には、全ての連携動作するサブプロセッサプログラムをメインメモリ26に書き込む。
メインメモリ26に書き込まれたサブプロセッサプログラムは、その後、サブプロセッサ23内のLS24に書き込まれ、メインプロセッサ21によって処理される機能プログラムと連携動作する。
図3のソフトウェアセルに示したように、機能プログラムには、プログラムごとにプログラムを一意的に識別できる識別子が、機能プログラムIDとして割り当てられる。機能プログラムIDは、機能プログラムの作成の段階で、作成日時や情報処理装置IDなどから決定される。
サブプロセッサプログラムにもサブプロセッサプログラムIDが割り当てられ、これによりサブプロセッサプログラムを一意的に識別可能である。割り当てられるサブプロセッサプログラムIDは、連携動作の相手となる機能プログラムの機能プログラムIDと関連性のある識別子、例えば機能プログラムIDを親番号とした上で最後尾に枝番号を付加させた識別子でもよいが、連携動作の相手となる機能プログラムの機能プログラムIDとは関連性のない識別子でもよい。
いずれにしても、機能プログラムとサブプロセッサプログラムが連携動作する場合には、両者とも相手の識別子であるプログラムIDを自プログラム内に記憶しておく必要がある。機能プログラムが複数個のサブプロセッサプログラムと連携動作する場合にも、当該機能プログラムは、その複数個のサブプロセッサプログラムのサブプロセッサプログラムIDを全て記憶しておく。
メインプロセッサ21は、自身が動作する情報処理装置の装置情報(動作状態に関する情報)を格納するための領域をメインメモリ26に確保し、当該情報を自装置の装置情報テーブルとして記録する。ここでの装置情報は、図4に示した情報処理装置ID以下の各情報である。
(2−2.システムにおけるマスター/スレーブの決定)
上述したネットワークシステムでは、ある情報処理装置への主電源投入時、その情報処理装置の情報処理コントローラのメインプロセッサ21は、マスター/スレーブマネージャ(以下、MSマネージャ)をメインメモリ26にロードし、実行する。
MSマネージャは、自身が動作する情報処理装置がネットワーク9に接続されていることを検知すると、同じネットワーク9に接続されている他の情報処理装置の存在を確認する。ここでの「接続」または「存在」は、上述したように、情報処理装置が物理的にネットワーク9に接続されているだけでなく、電気的・機能的にもネットワーク9に接続されていることを示す。
以下では、自身が動作する情報処理装置を自装置、他の情報処理装置を他装置と称する。当該装置も、当該情報処理装置を示すものとする。
MSマネージャが同じネットワーク9に接続されている他の情報処理装置の存在を確認する方法を、以下に示す。
MSマネージャは、DMAコマンドがステータス要求コマンドであり、送信元IDおよび応答先IDが当該情報処理装置で、送信先IDを特定しないソフトウェアセルを生成して、当該情報処理装置が接続されたネットワーク上に送信し、ネットワーク接続確認用のタイマーを設定する。タイマーのタイムアウト時間は、例えば10分とされる。
当該ネットワークシステム上に他の情報処理装置が接続されている場合、その他装置は、上記ステータス要求コマンドのソフトウェアセルを受信し、上記応答先IDで特定されるステータス要求コマンドを発行した情報処理装置に対して、DMAコマンドがステータス返信コマンドで、かつデータとして自身(その他装置)の装置情報を含むソフトウェアセルを送信する。このステータス返信コマンドのソフトウェアセルには、少なくとも当該他装置を特定する情報(情報処理装置ID、メインプロセッサに関する情報、サブプロセッサに関する情報など)および当該他装置のMSステータスが含まれる。
ステータス要求コマンドを発行した情報処理装置のMSマネージャは、上記ネットワーク接続確認用のタイマーがタイムアウトするまで、当該ネットワーク上の他装置から送信されるステータス返信コマンドのソフトウェアセルの受信を監視する。その結果、MSステータス=0(マスター装置)を示すステータス返信コマンドが受信された場合には、自装置の装置情報テーブルにおけるMSステータスを1に設定する。これによって、当該装置はスレーブ装置となる。
一方、上記ネットワーク接続確認用のタイマーがタイムアウトするまでの間にステータス返信コマンドが全く受信されなかった場合、またはMSステータス=0(マスター装置)を示すステータス返信コマンドが受信されなかった場合には、自装置の装置情報テーブルにおけるMSステータスを0に設定する。これによって、当該装置はマスター装置となる。
すなわち、いずれの装置もネットワーク9に接続されていない状態、またはネットワーク9上にマスター装置が存在しない状態において、新たな情報処理装置がネットワーク9に接続されると、当該装置は自動的にマスター装置として設定される。一方、ネットワーク9上に既にマスター装置が存在する状態において、新たな情報処理装置がネットワーク9に接続されると、当該装置は自動的にスレーブ装置として設定される。
マスター装置およびスレーブ装置のいずれについても、MSマネージャは、定期的にステータス要求コマンドをネットワーク9上の他装置に送信してステータス情報を照会することにより、他装置の状況を監視する。その結果、ネットワーク9に接続されている情報処理装置の主電源が遮断され、またはネットワーク9から情報処理装置が切り離されることにより、あらかじめ判定用に設定された所定期間内に特定の他装置からステータス返信コマンドが返信されなかった場合や、ネットワーク9に新たな情報処理装置が接続された場合など、ネットワーク9の接続状態に変化があった場合には、その情報を後述の能力交換プログラムに通知する。
(2−3.マスター装置およびスレーブ装置における装置情報の取得)
メインプロセッサ21は、MSマネージャから、ネットワーク9上の他装置の照会および自装置のMSステータスの設定完了の通知を受けると、能力交換プログラムを実行する。
能力交換プログラムは、自装置がマスター装置である場合には、ネットワーク9に接続されている全ての他装置の装置情報、すなわち各スレーブ装置の装置情報を取得する。
他装置の装置情報の取得は、上述したように、DMAコマンドがステータス要求コマンドであるソフトウェアセルを生成して他装置に送信し、その後、DMAコマンドがステータス返信コマンドで、かつデータとして他装置の装置情報を含むソフトウェアセルを他装置から受信することによって可能である。
能力交換プログラムは、マスター装置である自装置の装置情報テーブルと同様に、ネットワーク9に接続されている全ての他装置(各スレーブ装置)の装置情報を格納するための領域を自装置のメインメモリ26に確保し、これら情報を他装置(スレーブ装置)の装置情報テーブルとして記録する。
すなわち、マスター装置のメインメモリ26には、自装置を含むネットワーク9に接続されている全ての情報処理装置の装置情報が、装置情報テーブルとして記録される。
一方、能力交換プログラムは、自装置がスレーブ装置である場合には、ネットワーク9に接続されている全ての他装置の装置情報、すなわちマスター装置および自装置以外の各スレーブ装置の装置情報を取得し、これら装置情報に含まれる情報処理装置IDおよびMSステータスを、自装置のメインメモリ26に記録する。
すなわち、スレーブ装置のメインメモリ26には、自装置の装置情報が、装置情報テーブルとして記録されるとともに、自装置以外のネットワーク9に接続されているマスター装置および各スレーブ装置についての情報処理装置IDおよびMSステータスが、別の装置情報テーブルとして記録される。
また、マスター装置およびスレーブ装置のいずれについても、能力交換プログラムは、上記のようにMSマネージャから、新たにネットワーク9に情報処理装置が接続されたことが通知されたときには、その情報処理装置の装置情報を取得し、上述したようにメインメモリ26に記録する。
なお、MSマネージャおよび能力交換プログラムは、メインプロセッサ21で実行されることに限らず、いずれかのサブプロセッサ23で実行されてもよい。また、MSマネージャおよび能力交換プログラムは、情報処理装置の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
(2−4.情報処理装置がネットワークから切断された場合)
マスター装置およびスレーブ装置のいずれについても、能力交換プログラムは、上記のようにMSマネージャから、ネットワーク9に接続されている情報処理装置の主電源が遮断され、またはネットワーク9から情報処理装置が切り離されたことが通知されたときには、その情報処理装置の装置情報テーブルを自装置のメインメモリ26から削除する。
さらに、このようにネットワーク9から切断された情報処理装置がマスター装置である場合には、以下のような方法によって、新たにマスター装置が決定される。
具体的に、例えば、ネットワーク9から切断されていない情報処理装置は、それぞれ、自装置および他装置の情報処理装置IDを数値に置き換えて、自装置の情報処理装置IDを他装置の情報処理装置IDと比較し、自装置の情報処理装置IDがネットワーク9から切断されていない情報処理装置中で最小である場合、そのスレーブ装置は、マスター装置に移行して、MSステータスを0に設定し、マスター装置として、上述したように、ネットワーク9に接続されている全ての他装置(各スレーブ装置)の装置情報を取得して、メインメモリ26に記録する。
(2−5.装置情報に基づく情報処理装置間の分散処理)
図5の下段に示したようにネットワーク9に接続されている複数の情報処理装置1,2,3および4を仮想的な1台の情報処理装置7として動作させるためには、マスター装置がユーザの操作およびスレーブ装置の動作状態を把握する必要がある。
図7に、4台の情報処理装置が仮想的な1台の情報処理装置7として動作する様子を示す。情報処理装置1がマスター装置、情報処理装置2,3および4がスレーブ装置A,BおよびCとして、動作しているものとする。
ユーザがネットワーク9に接続されている情報処理装置を操作した場合、操作対象がマスター装置1であれば、その操作情報は、マスター装置1において直接把握され、操作対象がスレーブ装置であれば、その操作情報は、操作されたスレーブ装置からマスター装置1に送信される。すなわち、ユーザの操作対象がマスター装置1とスレーブ装置のいずれであるかにかかわらず、その操作情報は常にマスター装置1において把握される。操作情報の送信は、例えば、DMAコマンドが操作情報送信コマンドであるソフトウェアセルによって行われる。
そして、マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、その操作情報に従って、実行する機能プログラムを選択する。その際、必要であれば、マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、上記の方法によって自装置の外部記録部28−1または28−2からメインメモリ26−1に機能プログラムをロードするが、他の情報処理装置(スレーブ装置)がマスター装置1に機能プログラムを送信してもよい。
機能プログラムには、その実行単位ごとに必要となる、図4に示した各情報として表される情報処理装置種別ID、メインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件などの、装置に関する要求スペックが規定されている。
マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、各機能プログラムについて必要となる上記要求スペックを読み出す。また、あらかじめ能力交換プログラムによってメインメモリ26−1に記録された装置情報テーブルを参照し、各情報処理装置の装置情報を読み出す。ここでの装置情報は、図4に示した情報処理装置ID以下の各情報を示し、メインプロセッサ、サブプロセッサ、メインメモリおよび外部記録部に関する情報である。
マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、ネットワーク9上に接続された各情報処理装置の上記装置情報と、機能プログラム実行に必要となる上記要求スペックとを順次比較する。
そして、例えば、機能プログラムが録画機能を必要とする場合には、情報処理装置種別IDに基づいて、録画機能を有する情報処理装置のみを特定して抽出する。さらに、機能プログラムを実行するために必要なメインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件を確保できるスレーブ装置を、実行要求候補装置として特定する。ここで、複数の実行要求候補装置が特定された場合には、当該候補装置から1つの実行要求候補装置を特定して選択する。
実行要求するスレーブ装置が特定されたら、マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、その特定されたスレーブ装置について、自装置内の情報処理コントローラ11に含まれるメインメモリ26−1に記録されている当該スレーブ装置の装置情報テーブルを更新する。
さらに、マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、DMAコマンドが機能プログラム実行コマンドであるソフトウェアセルを生成し、当該ソフトウェアセルのセルインターフェースに、当該機能プログラムに関する必要なサブプロセッサの情報およびサンドボックスサイズ(図3参照)を設定して、上記実行要求されるスレーブ装置に対して送信する。
機能プログラムの実行を要求されたスレーブ装置は、その機能プログラムを実行するとともに、自装置の装置情報テーブルを更新する。その際、必要であれば、スレーブ装置内の情報処理コントローラに含まれるメインプロセッサ21は、上記の方法によって自装置の外部記録部28からメインメモリ26に機能プログラムおよび当該機能プログラムと連携動作するサブプロセッサプログラムをロードする。
機能プログラムの実行を要求されたスレーブ装置の外部記録部28に、必要な機能プログラムまたは当該機能プログラムと連携動作するサブプロセッサプログラムが記録されていない場合には、他の情報処理装置が当該機能プログラムまたはサブプロセッサプログラムを、その機能プログラム実行要求先スレーブ装置に送信するように、システムを構成すればよい。
サブプロセッサプログラムについては、上記のロードコマンドおよびキックコマンドを利用して他の情報処理装置に実行させることもできる。
機能プログラムの実行終了後、機能プログラムを実行したスレーブ装置内の情報処理コントローラに含まれるメインプロセッサ21は、終了通知をマスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1に送信するとともに、自装置の装置情報テーブルを更新する。マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、その終了通知を受信して、機能プログラムを実行したスレーブ装置の装置情報テーブルを更新する。
マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、自装置および他装置の装置情報テーブルの参照結果から、当該の機能プログラムを実行することができる情報処理装置として、自身を選択する場合もあり得る。その場合には、マスター装置1が当該の機能プログラムを実行する。
図7の例で、ユーザがスレーブ装置A(情報処理装置2)を操作し、当該操作に応じた機能プログラムを別のスレーブ装置B(情報処理装置3)が実行する場合につき、図8に以上の分散処理の例を示す。
図8の例では、ユーザがスレーブ装置Aを操作することによって、スレーブ装置Aを含むネットワークシステム全体の分散処理が開始して、まず、スレーブ装置Aは、ステップ81で、その操作情報をマスター装置1に送信する。
マスター装置1は、ステップ72で、その操作情報を受信し、さらにステップ73に進んで、自装置のメインメモリ26−1に記録されている自装置および他装置の装置情報テーブルから、各情報処理装置の動作状態を調べて、受信した操作情報に応じた機能プログラムを実行することができる情報処理装置を選択する。この例は、スレーブ装置Bが選択される場合である。
次に、マスター装置1は、ステップ74で、その選択したスレーブ装置Bに対して機能プログラムの実行を要求する。
スレーブ装置Bは、ステップ95で、その実行要求を受信し、さらにステップ96に進んで、実行要求された機能プログラムを実行する。
以上のように、ユーザは、1台の情報処理装置のみを操作することによって、他の情報処理装置を操作することなく、複数の情報処理装置1,2,3および4を仮想的な1台の情報処理装置7として動作させることができる。
(2−6.各情報処理装置およびシステムの具体例)
ネットワーク9を介して互いに接続される情報処理装置1,2,3および4は、基本的に上記のような情報処理コントローラ11,12,13および14によって情報処理を行うものであれば、どのようなものでもよいが、図9に、その一例を示す。
この例では、情報処理コントローラ11を備える情報処理装置1は、ハードディスクレコーダで、図10に示すように、ハードウェア構成としては、図1に示した外部記録部28−1として、ハードディスクを内蔵し、図1に示した外部記録部28−2として、DVD±R/RW、CD±R/RW、Bluray−Disc(登録商標)などの光ディスクを装着できるように構成されるとともに、情報処理コントローラ11のバス29−1に接続されたバス31−1に、放送受信部32−1、映像入力部33−1、音声入力部34−1、映像出力部35−1、音声出力部36−1、操作パネル部37−1、リモコン受光部38−1およびネットワーク接続部39−1が接続されたものである。
放送受信部32−1、映像入力部33−1および音声入力部34−1は、放送信号を受信し、または情報処理装置1の外部から映像信号および音声信号を入力し、それぞれ所定フォーマットのデジタルデータに変換して、情報処理コントローラ11での処理のためにバス31−1に送出するものであり、映像出力部35−1および音声出力部36−1は、情報処理コントローラ11からバス31−1に送出された映像データおよび音声データを処理して、デジタルデータのまま、またはアナログ信号に変換して、情報処理装置1の外部に送出するものであり、リモコン受光部38−1は、リモコン送信器43−1からのリモコン(遠隔操作)赤外線信号を受信するものである。
図9および図10に示すように、情報処理装置(ハードディスクレコーダ)1の映像出力部35−1および音声出力部36−1には、モニタ表示装置41およびスピーカ装置42が接続される。
図9の例の、情報処理コントローラ12を備える情報処理装置2も、ハードディスクレコーダで、図10において括弧内に参照番号を付して示すように、情報処理装置1と同様に構成されたものである。ただし、例えば、図9に示すように、情報処理装置(ハードディスクレコーダ)2には、モニタ表示装置およびスピーカ装置は接続されない。
情報処理装置(ハードディスクレコーダ)1および2、すなわち情報処理コントローラ11および12のソフトウェア構成としては、図11に示すように、制御プログラムとして、MSマネージャおよび能力交換プログラムを備え、機能プログラムとして、映像音声記録、映像音声再生、素材検索および番組録画予約のためのプログラムを備え、デバイスドライバとして、放送受信、映像出力、音声出力、外部記録部入出力およびネットワーク入出力のためのプログラムを備える。
図9の例の、情報処理コントローラ13を備える情報処理装置3は、PDA(Personal Digital Assistants)で、図12に示すように、ハードウェア構成としては、図1に示した外部記録部28−5として、メモリカードディスクを装着できるように構成されるとともに、情報処理コントローラ13のバス29−3に接続されたバス51に、液晶表示部52、音声出力部53、カメラ部54、音声入力部55、キーボード部56およびネットワーク接続部57が接続されたものである。
なお、図1では内部を省略した情報処理コントローラ13は、メインプロセッサ21−3、サブプロセッサ23−7,23−8および23−9、DMAC(ダイレクトメモリアクセスコントローラ)25−3、DC(ディスクコントローラ)27−3、およびバス29−3を備え、そのメインプロセッサ21−3は、LS(ローカルストレージ)22−3を有し、各サブプロセッサ23−7,23−8および23−9は、LS(ローカルストレージ)24−7,24−8および24−9を有する。
情報処理装置(PDA)3、すなわち情報処理コントローラ13のソフトウェア構成としては、図13に示すように、制御プログラムとして、MSマネージャおよび能力交換プログラムを備え、機能プログラムとして、映像音声記録、映像音声再生、電話帳、ワープロおよび表計算のためのプログラム、およびWebブラウザを備え、デバイスドライバとして、映像出力、音声出力、カメラ映像入力、マイク音声入力およびネットワーク入出力のためのプログラムを備える。
図9の例の、情報処理コントローラ14を備える情報処理装置4は、ポータブルCDプレーヤで、図14に示すように、ハードウェア構成としては、図1に示した外部記録部28−6として、CD(Compact Disc)を装着できるように構成されるとともに、情報処理コントローラ14のバス29−4に接続されたバス61に、液晶表示部62、音声出力部63、操作ボタン部64およびネットワーク接続部65が接続されたものである。
なお、図1では内部を省略した情報処理コントローラ14は、メインプロセッサ21−4、サブプロセッサ23−10,23−11および23−12、DMAC(ダイレクトメモリアクセスコントローラ)25−4、DC(ディスクコントローラ)27−4、およびバス29−4を備え、そのメインプロセッサ21−4は、LS(ローカルストレージ)22−4を有し、各サブプロセッサ23−10,23−11および23−12は、LS(ローカルストレージ)24−10,24−11および24−12を有する。
情報処理装置(ポータブルCDプレーヤ)4、すなわち情報処理コントローラ14のソフトウェア構成としては、図15に示すように、制御プログラムとして、MSマネージャおよび能力交換プログラムを備え、機能プログラムとして、音楽再生のためのプログラムを備え、デバイスドライバとして、音声出力、CD制御およびネットワーク入出力のためのプログラムを備える。
以上のような図9の例のネットワークシステムにおいて、情報処理装置1,3および4がネットワーク9上に接続されており、情報処理装置1がマスター装置(MSステータス=0)として、情報処理装置3および4がスレーブ装置(MSステータス=1)として、設定されているものとする。
この状態で、新たに情報処理装置2がネットワーク9に接続されると、上述した方法によって、情報処理装置2内の情報処理コントローラ12に含まれるメインプロセッサ21−2で実行されているMSマネージャは、他の情報処理装置1,3および4にMSステータスを照会して、情報処理装置1が既にマスター装置として存在することを認識し、自装置(情報処理装置2)をスレーブ装置(MSステータス=1)に設定する。また、マスター装置に設定されている情報処理装置1は、新たに追加された情報処理装置2を含む各装置の装置情報を収集して、メインメモリ26−1内の装置情報テーブルを更新する。
このような状態で、ユーザによってスレーブ装置である情報処理装置(PDA)3で2時間の放送番組の録画予約の操作が行われた場合を示す。
この場合、スレーブ装置である情報処理装置(PDA)3は、ユーザから録画開始時刻、録画終了時刻、録画対象放送チャネル、録画品質などの情報を含む録画予約情報の入力を受け付け、当該録画予約情報およびDMAコマンドとしての録画予約コマンドを含むソフトウェアセルを生成して、マスター装置である情報処理装置1に送信する。
DMAコマンドが録画予約コマンドであるソフトウェアセルを受信した情報処理装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、録画予約コマンドを読み出すとともに、メインメモリ26−1内の装置情報テーブルを参照して、当該録画予約コマンドを実行可能な情報処理装置を特定する。
まず、メインプロセッサ21−1は、装置情報テーブルに含まれる各情報処理装置1,2,3および4の情報処理装置種別IDを読み出して、録画予約コマンドに対応する機能プログラムを実行可能な情報処理装置を抽出する。ここでは、録画機能を示す情報処理装置種別IDを有する情報処理装置1および2が候補装置として特定され、情報処理装置3および4は候補装置から除外される。
次に、マスター装置である情報処理装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、装置情報テーブルを参照して、情報処理装置1および2のメインプロセッサまたはサブプロセッサの処理能力、メインメモリに関する情報などの、装置に関する情報を読み出し、情報処理装置1および2が録画予約コマンドに対応する機能プログラムの実行に必要な要求スペックを満足するか否かを判断する。ここでは、情報処理装置1,2とも、録画予約コマンドに対応する機能プログラムの実行に必要な要求スペックを満足するものとする。
さらに、メインプロセッサ21−1は、装置情報テーブルを参照して、情報処理装置1および2の外部記録部に関する情報を読み出し、外部記録部の空き容量が当該録画予約コマンドの実行に必要な容量を満足するか否かを判断する。情報処理装置1および2はハードディスクレコーダであるので、それぞれハードディスク28−1および28−3の、総容量と使用量との差分が、それぞれの空き容量に相当する。
この場合、情報処理装置1のハードディスク28−1の空き容量が、録画時間に換算して10分であり、情報処理装置2のハードディスク28−3の空き容量が、録画時間に換算して20時間であるとする。
このとき、マスター装置である情報処理装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、当該録画予約コマンドの実行に必要な2時間分の空き容量を確保できる情報処理装置を、実行要求先スレーブ装置として特定する。
その結果、情報処理装置2のみが実行要求先スレーブ装置として選択され、マスター装置である情報処理装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、ユーザにより操作された情報処理装置3から送信された録画予約情報を含む当該録画予約コマンドを情報処理装置2に送信して、上記2時間の放送番組の録画予約の実行を要求する。
そして、情報処理装置2内の情報処理コントローラ12に含まれるメインプロセッサ21−2は、当該録画予約コマンドを解析して、録画に必要な機能プログラムを外部記録部であるハードディスク28−3からメインメモリ26−2にロードし、録画予約情報に従って録画を実行する。その結果、録画予約された2時間の放送番組の映像音声データが情報処理装置2のハードディスク28−3に記録される。
このように、図9の例のネットワークシステムにおいても、ユーザは、1台の情報処理装置のみを操作することによって、他の情報処理装置を操作することなく、複数の情報処理装置1,2,3および4を仮想的な1台の情報処理装置7として動作させることができる。
[3.サブプロセッサの割り当てによる分散処理その1]
図7または図9のネットワークシステムにおける前述の例は、マスター装置である情報処理装置1が機能プログラムを実行することができる情報処理装置を特定する際、当該機能プログラムの実行に必要な全ての要求スペックを満足する情報処理装置がネットワークシステム内に存在する場合であるが、このような情報処理装置が存在しない場合もあり得る。
図9の例では、マスター装置である情報処理装置1は、録画予約コマンドに対応する機能プログラムを実行させる情報処理装置として、最終的に情報処理装置2を特定したが、情報処理装置2が当該機能プログラムの実行に必要な要求スペックを一部、満たしていないこともある。例えば、他の要求スペックは全て満たしているが、サブプロセッサ数が不足している場合である。そのような場合でも、情報処理装置2は、上記のロードコマンドまたはキックコマンドを利用して他の情報処理装置内のサブプロセッサを利用することによって、当該機能プログラムを実行できる可能性がある。
そこで、マスター装置が機能プログラムを実行させる情報処理装置を特定する際、候補となる情報処理装置のサブプロセッサ処理能力を考慮しないで、当該機能プログラムを実行させる情報処理装置を特定する場合の例を示す。
この場合、機能プログラムには、図4に示した各情報として表される情報処理装置種別ID、メインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件などの、装置に関する要求スペックが規定されており、マスター装置が当該機能プログラムを実行させる情報処理装置を特定する際には、サブプロセッサ処理能力以外の要求スペックを満足する情報処理装置を特定するものとする。したがって当然、マスター装置によって特定されて機能プログラムの実行を要求された情報処理装置は、自装置内に当該機能プログラムの実行に必要なサブプロセッサ処理能力を確保できない場合がある。
以下に、分散処理の他の例として、このように機能プログラムの実行を要求された情報処理装置が、ネットワークシステムに含まれる他の情報処理装置内のサブプロセッサを利用する場合について示す。
(3−1.システム構成)
図16に、4台の情報処理装置1,2,3および4がネットワーク9に接続されている状態を示す。
情報処理装置1がマスター装置として、情報処理装置2,3および4がスレーブ装置として、それぞれ動作し、マスター装置である情報処理装置1が機能プログラムを実行させる情報処理装置として自装置を特定するものとする。
ネットワーク9に接続されている各情報処理装置のソフトウェア構成としては、図17に示すように、制御プログラムとして、図6などに示したMSマネージャおよび能力交換プログラムのほかに、リソースマネージャを含むものとする。
リソースマネージャは、自装置内の各サブプロセッサを制御して、プログラムやデータの転送、プログラムの実行の開始や停止、プログラムの実行結果の受信などを行うものである。
さらに、リソースマネージャは、自装置内の各サブプロセッサの使用状況を把握して、他の情報処理装置からの問い合わせに対して応答し、または他の情報処理装置に対して、その他装置内の各サブプロセッサの使用状況を問い合わせる。
そのために、リソースマネージャには、図18に示すようなサブプロセッサ管理テーブルを用意する。
この例は、各情報処理装置内の情報処理コントローラが数個以上のサブプロセッサを備える場合で、サブプロセッサ管理テーブル中の情報処理装置IDは、自装置の情報処理装置IDであり、サブプロセッサIDは、自装置内の各サブプロセッサのサブプロセッサIDであり、サブプロセッサステータスは、各サブプロセッサの使用状況を示す。
サブプロセッサステータスとしては、上述したように、unused(現在使用されてなく、使用の予約もされていない状態)、reserved(現在は使用されていないが、使用が予約されている状態)、およびbusy(現在使用されている状態)がある。
後述のように、unusedを空いている状態とし、空いているか否か、すなわち、unusedであるか、reservedまたはbusyであるかを、空き状況とする。
サブプロセッサプログラムIDは、当該のサブプロセッサで実行中の、または当該のサブプロセッサに実行予約中のサブプロセッサプログラムを識別する識別子であり、機能プログラムIDは、上段のサブプロセッサプログラムIDで示されるサブプロセッサプログラムと連携動作する機能プログラムを識別する識別子である。
サブプロセッサプログラム優先度は、その実行中または実行予約中のサブプロセッサプログラムの優先度である。サブプロセッサプログラム優先度は、当該サブプロセッサプログラムと連携動作する機能プログラムの優先度に応じて、あらかじめ決定され、例えば、high(優先度が高い),middle(中位の優先度)およびlow(優先度が低い)の3段階に区分される。
ロックシーケンス番号は、後述のようにサブプロセッサを確保する際などに、リソースマネージャが発番し、サブプロセッサ管理テーブルに記述する。リソースマネージャは、機能プログラムから受信したサブプロセッサプログラムIDおよびロックシーケンス番号が、このサブプロセッサ管理テーブルに記述されたそれらと一致するときにのみ、そのサブプロセッサの使用を許可する。
(3−2.サブプロセッサ割り当て処理)
上述したように、図16において、情報処理装置1がマスター装置として、情報処理装置2,3および4がスレーブ装置として、それぞれ動作し、マスター装置としての情報処理装置1が機能プログラムを実行させる情報処理装置として自装置を特定したものとする。
そして、情報処理装置1が、自装置のメインメモリ26−1内の機能プログラムと連携動作するサブプロセッサプログラムの実行用に、自装置内または他の情報処理装置2,3および4内にサブプロセッサを確保する場合の、情報処理装置1のメインメモリ26−1内の機能プログラム、情報処理装置1内のリソースマネージャ、および他の情報処理装置2,3および4内のリソースマネージャによって実行されるサブプロセッサ割り当て処理の一例を、図19〜図27を用いて示す。
まず、図19に示すように、情報処理装置1のメインメモリ26−1内の機能プログラムは、ステップ111で、サブプロセッサプログラムの実行に必要なサブプロセッサ数を判断し、次にステップ112で、自装置(情報処理装置1)内のリソースマネージャに、当該の機能プログラムの機能プログラムIDと、当該機能プログラムと連携動作する全てのサブプロセッサプログラムのサブプロセッサプログラムIDおよびサブプロセッサプログラム優先度とを添えて、必要数(n個とする)のサブプロセッサの使用要求を出力する。
これに対して、情報処理装置1内のリソースマネージャは、ステップ113で、自装置(情報処理装置1)の図18に示したサブプロセッサ管理テーブルを参照して、自装置内にn個のサブプロセッサの空きがあるか否かを判断し、n個以上のサブプロセッサが空いている場合には、ステップ113からステップ114に進んで、自装置内にn個のサブプロセッサを確保するとともに、その確保した各サブプロセッサにつき、サブプロセッサ管理テーブル内のサブプロセッサステータスを、unusedからreservedに書き替え、サブプロセッサプログラムID、機能プログラムIDおよびサブプロセッサプログラム優先度を、確保したサブプロセッサで実行されるサブプロセッサプログラムと一致するように書き替え、ロックシーケンス番号を発番して、サブプロセッサ管理テーブルに記述する。
さらに、情報処理装置1内のリソースマネージャは、ステップ115に進んで、当該の機能プログラムに、自装置内にn個のサブプロセッサを確保したことと、確保したn個のサブプロセッサのサブプロセッサID、サブプロセッサプログラムID、およびロックシーケンス番号とを通知する。
図20に示すように、当該の機能プログラムは、ステップ117で、この通知を受信して、自装置(情報処理装置1)内のリソースマネージャに、自身の機能プログラムIDと共に、確保した各サブプロセッサに対するサブプロセッサID、サブプロセッサプログラムID、サブプロセッサプログラム本体およびロックシーケンス番号を、確保したサブプロセッサ数の分だけ送信する。
情報処理装置1内のリソースマネージャは、ステップ121で、これらを受信して、各サブプロセッサに対するサブプロセッサプログラムを保存し、さらにステップ122に進んで、受信したサブプロセッサプログラムIDおよびロックシーケンス番号が自装置のサブプロセッサ管理テーブル内のそれらと同じであるか否かを判断し、同じであるときには、ステップ123に進んで、確保した各サブプロセッサにサブプロセッサプログラムを送信し、さらにステップ124に進んで、当該の機能プログラムに、各サブプロセッサにサブプロセッサプログラムを送信したことを通知する。
以上によって、情報処理装置1内の空いているサブプロセッサだけで必要数のサブプロセッサを確保できる場合の、サブプロセッサ割り当て処理を終了する。
確保された各サブプロセッサで処理されるべきデータは、サブプロセッサプログラムの送信と同時に、またはサブプロセッサプログラムの送信後、確保された各サブプロセッサに送信される。これによって、確保された各サブプロセッサでサブプロセッサプログラムを実行することができる。
情報処理装置1内のリソースマネージャは、ステップ122で、当該の機能プログラムから受信したサブプロセッサプログラムIDまたはロックシーケンス番号が自装置のサブプロセッサ管理テーブル内のそれらと異なると判断した場合には、ステップ122からステップ126に進んで、当該の機能プログラムにエラーを通知する。
この場合には、当該の機能プログラムは、ステップ127で、エラー処理を実行する。このエラー処理は、具体的には、再度、ステップ112からサブプロセッサ割り当て処理を実行するなどである。
一方、情報処理装置1内のリソースマネージャは、図19のステップ113で、自装置内にn個のサブプロセッサの空きがないと判断した場合、すなわち情報処理装置1内に空いているサブプロセッサが(n−1)個以下しかない(1個もない場合を含む)と判断した場合には、図21に示すように、ステップ113からステップ131に進んで、ネットワーク上に他の情報処理装置が接続されているか否かを判断する。図16は、他の情報処理装置2,3および4が接続されている場合である。
そして、ネットワーク上に他の情報処理装置が接続されている場合には、情報処理装置1内のリソースマネージャは、ステップ131からステップ132に進んで、その中の1個である他の情報処理装置(この場合は情報処理装置2)内のリソースマネージャに、サブプロセッサの空き状況を問い合わせる。
この問い合わせは、図28(A)に示すようなサブプロセッサ空き状況問い合わせコマンドによって行う。具体的に、このサブプロセッサ空き状況問い合わせコマンドは、送信元ID(この場合は情報処理装置1の情報処理装置ID)、送信先ID(この場合は情報処理装置2の情報処理装置ID)および応答先ID(この場合は情報処理装置1の情報処理装置ID)を有し、DMAコマンドとして、サブプロセッサ空き状況問い合わせコマンド本体および機能プログラムIDを含むものとする。
図21に示すように、この問い合わせに対して、当該他の情報処理装置(この場合は情報処理装置2)内のリソースマネージャは、ステップ133で、自装置内のサブプロセッサ管理テーブルから、自装置内のサブプロセッサの空き状況を判断し、さらにステップ135に進んで、自装置内に空いているサブプロセッサがある場合には、その数およびサブプロセッサIDを、空いているサブプロセッサがない場合には、その旨を、情報処理装置1内のリソースマネージャに通知する。
この通知は、図28(B)に示すようなサブプロセッサ空き状況返信コマンドによって行う。具体的に、このサブプロセッサ空き状況返信コマンドは、送信元ID(この場合は情報処理装置2の情報処理装置ID)、送信先ID(この場合は情報処理装置1の情報処理装置ID)および応答先ID(この場合は情報処理装置1の情報処理装置ID)を有し、DMAコマンドとして、サブプロセッサ空き状況返信コマンド本体、機能プログラムID、空いているサブプロセッサの数、および空いている各サブプロセッサのサブプロセッサIDを含むものとする。
この通知を受けて、情報処理装置1内のリソースマネージャは、図22に示すように、ステップ136で、自装置(情報処理装置1)分と他装置(情報処理装置2)分とを合わせてトータルで、n個のサブプロセッサを確保できるか否かを判断する。
例えば、nが8,9または10というような数である場合に、情報処理装置1内で1個のサブプロセッサしか確保できず、情報処理装置2内で(n−2)個のサブプロセッサしか確保できない場合には、トータルでn個のサブプロセッサを確保できないことになる。
このようにトータルでn個のサブプロセッサを確保できない場合には、情報処理装置1内のリソースマネージャは、図21に示すように、ステップ136からステップ131に進んで(戻って)、さらにネットワーク上に他の情報処理装置が接続されているか否かを判断する。図16は、他の情報処理装置3および4が接続されている場合である。
以下、情報処理装置2の場合と同様に、ネットワークシステム全体でn個のサブプロセッサを確保できるまで、または、それ以上、ネットワーク上に情報処理装置が接続されていないことが検出されるまで、ステップ132,133,135,136および131の処理を繰り返す。
情報処理装置1以外にネットワーク上に複数個の情報処理装置が接続されている場合に情報処理装置1内のリソースマネージャがサブプロセッサの空き状況を問い合わせる順番については、例えば、上述したマスター装置の決定方法のように、ネットワーク上の各情報処理装置の情報処理装置IDを数値に置き換え、当該数値が小さい情報処理装置順にサブプロセッサの空き状況を問い合わせることが考えられる。
そして、ネットワークシステム全体で、空いているサブプロセッサによってn個のサブプロセッサを確保できる場合には、情報処理装置1内のリソースマネージャは、図22に示すように、ステップ136からステップ137に進んで、当該の機能プログラムに、n個のサブプロセッサを確保できることを通知する。
当該の機能プログラムは、ステップ138で、この通知を受信し、後述のように自装置(情報処理装置1)内のリソースマネージャにサブプロセッサ確保要求を出力する。
一方、情報処理装置1内のリソースマネージャは、図21のステップ131で、それ以上、ネットワーク上に情報処理装置が接続されていないと判断した場合、すなわち、ネットワークシステム全体でも(情報処理装置1のみがネットワーク上に存在する場合には情報処理装置1内だけで)、空いているサブプロセッサによってn個のサブプロセッサを確保できないと判断した場合には、図22に示すように、ステップ131からステップ141に進んで、自装置(情報処理装置1)内に当該の機能プログラムより優先度の低いサブプロセッサプログラムを実行中のサブプロセッサがあるか否か、および、ある場合には、その数を検出する。
この場合の「実行中」というのは、busy(現在使用されている状態)だけでなく、reserved(現在は使用されていないが、使用が予約されている状態)を含む。以下では、当該の機能プログラムより優先度の低いサブプロセッサプログラムを、単に「優先度の低いサブプロセッサプログラム」と称する。
さらに、情報処理装置1内のリソースマネージャは、ステップ143に進んで、ネットワークシステム全体の空いているサブプロセッサと、自装置(情報処理装置1)内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせて、n個のサブプロセッサを確保できるか否かを判断し、確保できる場合には、ステップ143からステップ144に進んで、当該の機能プログラムに、n個のサブプロセッサを確保できることを通知する。
当該の機能プログラムは、ステップ138で、この通知を受信し、後述のように自装置(情報処理装置1)内のリソースマネージャにサブプロセッサ確保要求を出力する。
一方、情報処理装置1内のリソースマネージャは、ステップ143で、ネットワークシステム全体の空いているサブプロセッサと、自装置内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせても、n個のサブプロセッサを確保できないと判断した場合には、図23に示すように、ステップ143からステップ151に進んで、ネットワーク上に他の情報処理装置が接続されているか否かを判断する。
そして、ネットワーク上に他の情報処理装置が接続されている場合には、情報処理装置1内のリソースマネージャは、ステップ151からステップ152に進んで、当該他の情報処理装置(この場合は情報処理装置2)内のリソースマネージャに、優先度の低いサブプロセッサプログラムを実行中のサブプロセッサの有無および数を問い合わせる。この場合の「実行中」というのも、busyだけでなく、reservedを含む。
この問い合わせは、図28(A)に示したようなサブプロセッサ空き状況問い合わせコマンドに、当該の機能プログラムと連携動作するサブプロセッサプログラムのサブプロセッサプログラム優先度を含めたコマンドによって行う。
図23に示すように、この問い合わせに対して、当該他の情報処理装置(この場合は情報処理装置2)内のリソースマネージャは、ステップ153で、自装置内のサブプロセッサ管理テーブルから、自装置内に優先度の低いサブプロセッサプログラムを実行中のサブプロセッサがあるか否かを判断し、ある場合には、その数およびサブプロセッサIDを情報処理装置1内のリソースマネージャに通知し、自装置内に優先度の低いサブプロセッサプログラムを実行中のサブプロセッサがない場合には、その旨を情報処理装置1内のリソースマネージャに通知する。
この通知は、図28(B)に示したようなサブプロセッサ空き状況返信コマンドにおいて、空いているサブプロセッサの数およびサブプロセッサIDに代えて、優先度の低いサブプロセッサプログラムを実行中のサブプロセッサの数およびサブプロセッサIDを記述したコマンドによって行う。
この通知を受けて、情報処理装置1内のリソースマネージャは、図23に示すように、ステップ154で、ネットワークシステム全体の空いているサブプロセッサと、自装置(情報処理装置1)内および他装置(この場合は情報処理装置2)内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせて、n個のサブプロセッサを確保できるか否かを判断する。
例えば、n=7の場合に、ネットワークシステム全体で空いているサブプロセッサが2個しかなく、情報処理装置1内に優先度の低いサブプロセッサプログラムを実行中のサブプロセッサが2個しかなく、情報処理装置2内に優先度の低いサブプロセッサプログラムを実行中のサブプロセッサが2個しかない場合には、トータルでn個のサブプロセッサを確保できないことになる。
このようにトータルでn個のサブプロセッサを確保できない場合には、情報処理装置1内のリソースマネージャは、ステップ154からステップ151に進んで(戻って)、さらにネットワーク上に他の情報処理装置が接続されているか否かを判断する。
以下、情報処理装置2の場合と同様に、ネットワークシステム全体でn個のサブプロセッサを確保できるまで、または、それ以上、ネットワーク上に情報処理装置が接続されていないことが検出されるまで、ステップ152,153,154および151の処理を繰り返す。
そして、空いているサブプロセッサと優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせて、ネットワークシステム全体でn個のサブプロセッサを確保できる場合には、情報処理装置1内のリソースマネージャは、ステップ154からステップ155に進んで、当該の機能プログラムに、n個のサブプロセッサを確保できることを通知する。
当該の機能プログラムは、ステップ158で、この通知を受信し、以下のように自装置(情報処理装置1)内のリソースマネージャにサブプロセッサ確保要求を出力する。
すなわち、当該の機能プログラムは、図22のステップ138、または図23のステップ158で、情報処理装置1内のリソースマネージャから、n個のサブプロセッサを確保できる旨の通知を受信したら、図24に示すように、ステップ161で、自装置(情報処理装置1)内のリソースマネージャに、n個のサブプロセッサの確保要求を出力する。
図24に示すように、この確保要求に対して、情報処理装置1内のリソースマネージャは、ステップ162で、自装置(情報処理装置1)内に確保すべき分がある場合には、その分のサブプロセッサを自装置内に確保し、さらにステップ163に進んで、他の情報処理装置内に確保されるべき分があるか否かを判断し、他の情報処理装置内に確保されるべき分がない場合には、ステップ163からステップ164に進んで、当該の機能プログラムに、n個のサブプロセッサを確保したことを通知する。
情報処理装置1内の空いているサブプロセッサだけではn個のサブプロセッサを確保できず、かつ情報処理装置1以外にネットワーク上に接続されている情報処理装置が存在しないが、情報処理装置1内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを含めると、n個のサブプロセッサを確保できる場合には、このように情報処理装置1内だけでn個のサブプロセッサが確保されることになる。
この場合、情報処理装置1内のリソースマネージャは、ステップ162では、自装置内に確保した各サブプロセッサにつき、自装置のサブプロセッサ管理テーブル内のサブプロセッサステータスがunusedとなっているものについては、reservedに書き替え、サブプロセッサプログラムID、機能プログラムIDおよびサブプロセッサプログラム優先度を、確保したサブプロセッサで実行されるサブプロセッサプログラムと一致するように書き替えるとともに、ロックシーケンス番号を発番してサブプロセッサ管理テーブルに記述し、ステップ164では、これら情報を、当該の機能プログラムに送信する。
具体的に、ステップ164で送信される情報は、確保したサブプロセッサの数、確保した各サブプロセッサのサブプロセッサIDおよびロックシーケンス番号を含むものとする。
図24に示すように、当該の機能プログラムは、ステップ167で、このサブプロセッサ確保通知を受信し、後述のように自装置(情報処理装置1)内のリソースマネージャに各サブプロセッサに対するサブプロセッサプログラムを送信する。
なお、情報処理装置1内のリソースマネージャは、ステップ162で、自装置内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを、当該の機能プログラムと連携動作するサブプロセッサプログラムの実行用に確保した場合には、その優先度の低いサブプロセッサプログラムおよび当該サブプロセッサプログラムと連携動作する機能プログラムに対してサブプロセッサが奪われたことを通知する。
一方、確保されるべきn個のサブプロセッサに他の情報処理装置内に確保されるべき分がある場合には、情報処理装置1内のリソースマネージャは、ステップ163からステップ171に進んで、他の情報処理装置2,3および4内のリソースマネージャにサブプロセッサの確保を要求し、他の情報処理装置2,3および4内のリソースマネージャは、ステップ172で、それぞれ自装置内に自装置分のサブプロセッサを確保する。
他の情報処理装置に対するサブプロセッサの確保要求は、図29(A)に示すようなDMAコマンドがサブプロセッサ確保要求コマンドであるソフトウェアセルによって行う。具体的に、このサブプロセッサ確保要求コマンドは、DMAコマンドとして、サブプロセッサ確保要求コマンド本体、機能プログラムID、サブプロセッサプログラム優先度、確保要求サブプロセッサ数および確保要求サブプロセッサ数の分のサブプロセッサプログラムIDを含むものとする。
情報処理装置1内の空いているサブプロセッサだけではn個のサブプロセッサを確保できないが、情報処理装置1以外にもネットワーク上に情報処理装置が存在していて、ネットワークシステム全体で、空いているサブプロセッサだけで、または優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを含めると、n個のサブプロセッサを確保できる場合には、このように他の情報処理装置を含めたネットワークシステム全体でn個のサブプロセッサが確保されることになる。
この場合、他の情報処理装置2,3および4内のリソースマネージャは、ステップ172では、それぞれ自装置内に確保した各サブプロセッサにつき、自装置のサブプロセッサ管理テーブル内のサブプロセッサステータスがunusedとなっているものについては、reservedに書き替え、サブプロセッサプログラムID、機能プログラムIDおよびサブプロセッサプログラム優先度を、確保したサブプロセッサで実行されるサブプロセッサプログラムと一致するように書き替えるとともに、ロックシーケンス番号を発番してサブプロセッサ管理テーブルに記述する。
また、他の情報処理装置2,3および4内のリソースマネージャは、ステップ172で、自装置内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを、当該の機能プログラムと連携動作するサブプロセッサプログラムの実行用に確保した場合には、その優先度の低いサブプロセッサプログラムおよび当該サブプロセッサプログラムと連携動作する機能プログラムに対してサブプロセッサが奪われたことを通知する。
さらに、他の情報処理装置2,3および4内のリソースマネージャは、図25に示すように、ステップ173で、それぞれ自装置内に自装置分のサブプロセッサを確保したことを、情報処理装置1内のリソースマネージャに通知する。
この通知には、図29(B)に示すようなDMAコマンドがサブプロセッサ確保返信コマンドであるソフトウェアセルを用いる。具体的に、このサブプロセッサ確保返信コマンドは、DMAコマンドとして、サブプロセッサ確保返信コマンド本体、機能プログラムID、サブプロセッサプログラム優先度、確保したサブプロセッサの数、確保した各サブプロセッサのサブプロセッサID、サブプロセッサプログラムIDおよびロックシーケンス番号を含むものとする。
図25に示すように、情報処理装置1内のリソースマネージャは、他の情報処理装置2,3および4内のリソースマネージャからのサブプロセッサ確保通知を受信したら、ステップ174で、当該の機能プログラムに、n個のサブプロセッサを確保したことを通知する。
当該の機能プログラムは、ステップ177で、このサブプロセッサ確保通知を受信し、自装置(情報処理装置1)内のリソースマネージャに、各サブプロセッサに対するサブプロセッサプログラムを送信する。
すなわち、当該の機能プログラムは、図24のステップ167、または図25のステップ177で、情報処理装置1内のリソースマネージャから、n個のサブプロセッサを確保した旨の通知を受信したら、図25に示すように、ステップ181で、情報処理装置1内のリソースマネージャに、確保された各サブプロセッサに対するサブプロセッサプログラムを、当該サブプロセッサプログラムに対応するサブプロセッサプログラムID、サブプロセッサID、ロックシーケンス番号およびサブプロセッサが確保された各情報処理装置の情報処理装置IDと共に送信する。
図25および図26に示すように、情報処理装置1内のリソースマネージャは、ステップ182で、当該の機能プログラムから送信されたサブプロセッサプログラムを受信して、自装置(情報処理装置1)分のサブプロセッサプログラムがある場合には、それを自装置内の確保されたサブプロセッサに送信し、さらにステップ183に進んで、他の情報処理装置分のサブプロセッサプログラムがあるか否かを判断し、他の情報処理装置分のサブプロセッサプログラムがない場合には、ステップ183からステップ184に進んで、当該の機能プログラムに、確保された各サブプロセッサにサブプロセッサプログラムを送信したことを通知する。
一方、当該の機能プログラムから送信されたサブプロセッサプログラムに他の情報処理装置分のサブプロセッサプログラムがある場合には、情報処理装置1内のリソースマネージャは、ステップ183からステップ191に進んで、他の情報処理装置2,3および4内のリソースマネージャに各情報処理装置分のサブプロセッサプログラムを送信する。
この送信には、図30に示すようなDMAコマンドがサブプロセッサプログラム送信コマンドであるソフトウェアセルを用いる。具体的に、このサブプロセッサプログラム送信コマンドは、DMAコマンドとして、サブプロセッサプログラム送信コマンド本体、確保された各サブプロセッサのサブプロセッサID、ロックシーケンス番号、確保された各サブプロセッサに対するサブプロセッサプログラムのサブプロセッサプログラムID、確保された各サブプロセッサに対するサブプロセッサプログラム本体を含むものとする。
他の情報処理装置2,3および4内のリソースマネージャは、ステップ192で、それぞれ自装置分のサブプロセッサプログラムを、自装置内の確保されたサブプロセッサに送信し、さらにステップ193に進んで、情報処理装置1内のリソースマネージャに、確保されたサブプロセッサにサブプロセッサプログラムを送信したことを通知する。この通知を受けて、情報処理装置1内のリソースマネージャは、ステップ184で、当該の機能プログラムに、確保された各サブプロセッサにサブプロセッサプログラムを送信したことを通知する。
なお、情報処理装置1内のリソースマネージャ、および他の情報処理装置2,3および4内のリソースマネージャは、図25のステップ182、および図26のステップ192では、当該の機能プログラムから受信した確保された各サブプロセッサに対するサブプロセッサプログラムのサブプロセッサプログラムID、およびロックシーケンス番号が、自装置のサブプロセッサ管理テーブル内のそれらと同じであるか否かを判断して、異なる場合には、情報処理装置1内のリソースマネージャが直接、または他の情報処理装置2,3および4内のリソースマネージャが情報処理装置1内のリソースマネージャを介して、当該の機能プログラムにエラーを通知するが、図25および図26では、この点を省略して、エラーを生じない場合のみを示した。
図26に示すように、当該の機能プログラムは、ステップ187で、情報処理装置1内のリソースマネージャからの、確保された各サブプロセッサにサブプロセッサプログラムを送信した旨の通知を受信する。
これによって、情報処理装置1内の空いているサブプロセッサだけではn個のサブプロセッサを確保できないが、情報処理装置1内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを含めると、情報処理装置1内だけでn個のサブプロセッサを確保できる場合、あるいは、情報処理装置1内の空いているサブプロセッサだけではn個のサブプロセッサを確保できないが、情報処理装置1以外にもネットワーク上に情報処理装置が存在していて、ネットワークシステム全体で、空いているサブプロセッサだけで、または優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを含めると、n個のサブプロセッサを確保できる場合の、サブプロセッサ割り当て処理を終了する。
確保された各サブプロセッサで処理されるべきデータは、サブプロセッサプログラムの送信と同時に、またはサブプロセッサプログラムの送信後、確保された各サブプロセッサに送信される。これによって、確保された各サブプロセッサでサブプロセッサプログラムを実行することができる。
一方、情報処理装置1内のリソースマネージャは、図23のステップ151で、ネットワーク上に他の情報処理装置が接続されていないと判断した場合、すなわち、ネットワークシステム全体の空いているサブプロセッサと優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせても、n個のサブプロセッサを確保できないと判断した場合には、図27に示すように、ステップ151からステップ195に進んで、当該の機能プログラムに、n個のサブプロセッサを確保できないことを通知する。
当該の機能プログラムは、ステップ197で、この通知を受信し、エラー処理を実行する。この場合のエラー処理は、ユーザに対して直ちに処理を実行できない旨を通知して、時間を置いて再度、図19のステップ112からサブプロセッサ割り当て処理を実行し、またはユーザが操作することをユーザに促すなどである。
なお、上述したように優先度の低いサブプロセッサプログラムに対してサブプロセッサが奪われたことが通知された場合には、当該のサブプロセッサプログラムにつき、それに対応する別の処理が実行される。
上述した例は、情報処理装置IDの置き換えられた数値の昇順に、すなわち情報処理装置1→情報処理装置2→情報処理装置3→情報処理装置4の順に、サブプロセッサの空き状況を問い合わせ、サブプロセッサの確保を要求する場合であるが、例えば、各情報処理装置内のリソースマネージャは、実行されるべきサブプロセッサプログラムの優先度が高い場合には、上述した装置情報の一部であるメインプロセッサ動作周波数により、ネットワーク9上に接続されている各情報処理装置の動作周波数を判断して、動作周波数が高い情報処理装置から順に、サブプロセッサの空き状況を問い合わせ、サブプロセッサの確保を要求するように、システムを構成してもよい。
あるいはまた、装置情報の一部である情報処理装置種別IDにより、ネットワーク9上に接続されている各情報処理装置の種別を判断することによって、ハードディスクレコーダのようにネットワーク9から切断される可能性が低い情報処理装置から、PDAやポータブルCDプレーヤのようにネットワーク9から切断される可能性が高い情報処理装置への順に、サブプロセッサの空き状況を問い合わせ、サブプロセッサの確保を要求するように、システムを構成してもよい。
また、上述した例は、情報処理装置1内の空いているサブプロセッサだけでは必要数のサブプロセッサを確保できない場合、情報処理装置1内のリソースマネージャから、他の情報処理装置内のリソースマネージャに対して、まずサブプロセッサの空き状況を問い合わせ、その結果、ネットワークシステム全体で必要数のサブプロセッサを確保できる場合には、改めてサブプロセッサの確保を要求する場合であるが、サブプロセッサの空き状況を問い合わせることなく、情報処理装置1内のリソースマネージャから、他の情報処理装置内のリソースマネージャに対して、サブプロセッサの確保を要求するように、システムを構成してもよい。
さらに、上述した例は、情報処理装置1がマスター装置として動作していて、そのマスター装置を起点としてサブプロセッサ割り当て処理を実行する場合であるが、例えば、スレーブ装置として動作している情報処理装置がユーザによって操作された場合に、その操作されたスレーブ装置を起点としてサブプロセッサ割り当て処理を実行するように、システムを構成することもできる。
[4.情報処理装置がネットワークから切断された場合のサブプロセッサの割り当てによる分散処理その1]
図16のように複数の情報処理装置1,2,3および4がネットワーク9に接続されている状態で、ユーザが誤って、ある情報処理装置をネットワーク9から切断した場合(情報処理装置を物理的にネットワーク9から切り離した場合、または情報処理装置の主電源を遮断した場合)、または、強い震動などの外的要因によって、ある情報処理装置がネットワーク9から切断された場合、その切断された情報処理装置内のサブプロセッサが、切断されていない情報処理装置が有するサブプロセッサプログラムの実行中または実行予約中であったときには、切断された情報処理装置内のサブプロセッサに代わって、切断されていない情報処理装置内のサブプロセッサが、そのサブプロセッサプログラムを実行することが望ましい。
そこで、このような場合には、以下のように、切断された情報処理装置内のサブプロセッサが実行中または実行予約中であったサブプロセッサプログラムの実行用に、切断されていない情報処理装置内のサブプロセッサを割り当てる。
(4−1.システム構成)
図31に、図16のように4台の情報処理装置1,2,3および4がネットワーク9に接続されている状態で、情報処理装置4がネットワーク9から切断された場合を示す。
各情報処理装置のソフトウェア構成としては、図17に示したように、制御プログラムとしてリソースマネージャを含むものとし、そのリソースマネージャには、図18に示したようなサブプロセッサ管理テーブルを用意する。サブプロセッサ管理テーブルの内容は、上述したとおりである。
(4−2.サブプロセッサ割り当て処理)
図32〜図40に、図31のように情報処理装置1,2,3および4がネットワーク9に接続されている状態で、情報処理装置4がネットワーク9から切断された場合に、情報処理装置1が、自装置のメインメモリ26−1内の機能プログラムと連携動作するサブプロセッサプログラムの実行用に、情報処理装置1内または他の情報処理装置2,3内にサブプロセッサを確保する場合の、情報処理装置1内のMS(マスター/スレーブ)マネージャ、情報処理装置1のメインメモリ26−1内の機能プログラム、情報処理装置1内のリソースマネージャ、および他の情報処理装置2および3内のリソースマネージャによって実行されるサブプロセッサ割り当て処理の一例を示す。
情報処理装置4がネットワーク9から切断されたことは、情報処理装置1,2および3内のMSマネージャによって検出される。
そして、情報処理装置1内のMSマネージャは、情報処理装置4がネットワーク9から切断されたことを検出したら、図32に示すように、ステップ201で、自装置(情報処理装置1)内のリソースマネージャに、切断された情報処理装置4の情報処理装置IDを通知し、情報処理装置1内のリソースマネージャは、ステップ202で、自装置のメインメモリ26−1内の機能プログラムに、その情報処理装置IDを転送する。
これを受けて、情報処理装置1のメインメモリ26−1内の機能プログラムは、ステップ203で、図19〜図30に示して上述したようなサブプロセッサ割り当て処理の結果から、切断された情報処理装置4内のサブプロセッサが、自身(当該の機能プログラム)と連携動作するサブプロセッサプログラムを実行中であったか否かを判断する。
この場合の「実行中」というのも、busy(現在使用されている状態)だけでなく、reserved(現在は使用されていないが、使用が予約されている状態)を含む。
そして、切断された情報処理装置4内の全てのサブプロセッサが、当該の機能プログラムと連携動作するサブプロセッサプログラムを実行中でなかった場合には、以後の処理は不要であるので、そのままサブプロセッサ割り当て処理を終了する。
一方、切断された情報処理装置4内の一部または全部のサブプロセッサが、当該の機能プログラムと連携動作するサブプロセッサプログラムを実行中であった場合には、当該の機能プログラムは、ステップ203からステップ212に進んで、自装置(情報処理装置1)内のリソースマネージャに、当該の機能プログラムの機能プログラムIDおよび当該機能プログラムと連携動作する、切断された情報処理装置4内のサブプロセッサにより実行中(上記のように実行予約中を含む)のサブプロセッサプログラムのサブプロセッサプログラムIDを添えて、切断された情報処理装置4内のサブプロセッサに代わって当該の機能プログラムと連携動作するサブプロセッサプログラムを実行するのに必要な数(m個とする)のサブプロセッサの使用要求を出力する。
これに対して、情報処理装置1内のリソースマネージャは、図33に示すように、ステップ213で、自装置(情報処理装置1)の図18に示したサブプロセッサ管理テーブルを参照して、自装置内にm個のサブプロセッサの空きがあるか否かを判断し、m個以上のサブプロセッサが空いている場合には、ステップ213からステップ214に進んで、自装置内にm個のサブプロセッサを確保するとともに、その確保した各サブプロセッサにつき、サブプロセッサ管理テーブル内のサブプロセッサステータスを、unusedからreservedに書き替え、サブプロセッサプログラムID、機能プログラムIDおよびサブプロセッサプログラム優先度を、確保したサブプロセッサで実行されるサブプロセッサプログラムと一致するように書き替え、ロックシーケンス番号を発番して、サブプロセッサ管理テーブルに記述する。
さらに、情報処理装置1内のリソースマネージャは、ステップ215に進んで、当該の機能プログラムに、自装置内にm個のサブプロセッサを確保したことと、確保したm個のサブプロセッサのサブプロセッサIDおよびロックシーケンス番号とを通知する。
当該の機能プログラムは、ステップ217で、この通知を受信して、自装置(情報処理装置1)内のリソースマネージャに、自身の機能プログラムIDと共に、確保された各サブプロセッサに対するサブプロセッサID、サブプロセッサプログラムID、サブプロセッサプログラム本体およびロックシーケンス番号を、確保したサブプロセッサ数の分だけ送信する。
図34に示すように、情報処理装置1内のリソースマネージャは、ステップ221で、これらを受信して、各サブプロセッサに対するサブプロセッサプログラムを保存し、さらにステップ222に進んで、受信したサブプロセッサプログラムIDおよびロックシーケンス番号が自装置のサブプロセッサ管理テーブル内のそれらと同じであるか否かを判断し、同じであるときには、ステップ223に進んで、確保した各サブプロセッサにサブプロセッサプログラムを送信し、さらにステップ224に進んで、当該の機能プログラムに、各サブプロセッサにサブプロセッサプログラムを送信したことを通知する。
以上によって、情報処理装置1内の空いているサブプロセッサだけで必要数のサブプロセッサを確保できる場合の、サブプロセッサ割り当て処理を終了する。
確保された各サブプロセッサで処理されるべきデータは、サブプロセッサプログラムの送信と同時に、またはサブプロセッサプログラムの送信後、確保された各サブプロセッサに送信される。これによって、確保された各サブプロセッサでサブプロセッサプログラムを実行することができる。
情報処理装置1内のリソースマネージャは、ステップ222で、当該の機能プログラムから受信したサブプロセッサプログラムIDまたはロックシーケンス番号が自装置のサブプロセッサ管理テーブル内のそれらと異なると判断した場合には、ステップ222からステップ226に進んで、当該の機能プログラムにエラーを通知する。この場合には、当該の機能プログラムは、ステップ227で、エラー処理を実行する。
一方、情報処理装置1内のリソースマネージャは、図33のステップ213で、自装置内にm個のサブプロセッサの空きがないと判断した場合、すなわち情報処理装置1内に空いているサブプロセッサが(m−1)個以下しかない(1個もない場合を含む)と判断した場合には、図35に示すように、ステップ213からステップ229に進んで、自装置内に空いているサブプロセッサがある場合には、そのサブプロセッサを自装置分として確保する。
情報処理装置1内のリソースマネージャは、さらにステップ231に進んで、ネットワーク上に他の情報処理装置が接続されているか否かを判断する。図31は、他の情報処理装置2および3が接続されている場合である。
そして、ネットワーク上に他の情報処理装置が接続されている場合には、情報処理装置1内のリソースマネージャは、ステップ231からステップ232に進んで、その中の1個である他の情報処理装置(この場合は情報処理装置2)内のリソースマネージャに、空いているサブプロセッサの確保を要求する。
この確保要求は、図29(A)に示したようなサブプロセッサ確保要求コマンドによって行い、その確保要求サブプロセッサ数は、(m−a)とする。aは、ステップ229で情報処理装置1内に確保されたサブプロセッサ数で、0≦a<mである。
図35に示すように、この確保要求に対して、他の情報処理装置(この場合は情報処理装置2)内のリソースマネージャは、ステップ233で、自装置内のサブプロセッサ管理テーブルから、自装置内のサブプロセッサの空き状況を判断し、次にステップ234に進んで、自装置内に空いているサブプロセッサがある場合には、最大(m−a)個の範囲で自装置内にサブプロセッサを確保し、さらにステップ235に進んで、自装置内でサブプロセッサを確保した場合には、その数および確保した各サブプロセッサのサブプロセッサID、サブプロセッサプログラムIDおよびロックシーケンス番号を情報処理装置1内のリソースマネージャに通知し、自装置内でサブプロセッサを確保できない場合には、その旨を情報処理装置1内のリソースマネージャに通知する。この通知は、図29(B)に示したようなサブプロセッサ確保返信コマンドによって行う。
この通知を受けて、情報処理装置1内のリソースマネージャは、図36に示すように、ステップ236で、自装置(情報処理装置1)分と他装置(情報処理装置2)分とを合わせてトータルで、m個のサブプロセッサを確保できたか否かを判断する。
そして、トータルでm個のサブプロセッサを確保できなかった場合には、情報処理装置1内のリソースマネージャは、図35に示すように、ステップ236からステップ231に進んで(戻って)、さらにネットワーク上に他の情報処理装置が接続されているか否かを判断する。図31は、情報処理装置2以外に他の情報処理装置3が接続されている場合である。
以下、情報処理装置2の場合と同様に、ネットワークシステム全体でm個のサブプロセッサを確保できるまで、または、それ以上、ネットワーク上に情報処理装置が接続されていないことが検出されるまで、ステップ232,233,234,235,236および231の処理を繰り返す。
そして、ネットワークシステム全体で、空いているサブプロセッサによってm個のサブプロセッサを確保できた場合には、情報処理装置1内のリソースマネージャは、図36に示すように、ステップ236からステップ237に進んで、当該の機能プログラムに、m個のサブプロセッサを確保したことを通知する。
当該の機能プログラムは、ステップ238で、このサブプロセッサ確保通知を受信し、後述のように自装置(情報処理装置1)内のリソースマネージャに各サブプロセッサに対するサブプロセッサプログラムを送信する。
一方、情報処理装置1内のリソースマネージャは、図35のステップ231で、それ以上、ネットワーク上に情報処理装置が接続されていないと判断した場合、すなわち、ネットワークシステム全体でも(情報処理装置1のみがネットワーク上に存在する場合には情報処理装置1内だけで)、空いているサブプロセッサによってm個のサブプロセッサを確保できないと判断した場合には、図36に示すように、ステップ231からステップ241に進んで、自装置(情報処理装置1)内に当該の機能プログラムより優先度の低いサブプロセッサプログラムを実行中のサブプロセッサがあるか否か、および、ある場合には、その数を検出する。
この場合の「実行中」というのも、busy(現在使用されている状態)だけでなく、reserved(現在は使用されていないが、使用が予約されている状態)を含む。以下でも、当該の機能プログラムより優先度の低いサブプロセッサプログラムを、単に「優先度の低いサブプロセッサプログラム」と称する。
次に、情報処理装置1内のリソースマネージャは、ステップ242に進んで、自装置内に優先度の低いサブプロセッサプログラムを実行中のサブプロセッサがある場合には、ネットワークシステム全体の空いているサブプロセッサと合わせてm個のサブプロセッサを確保できる範囲で、その優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを確保するとともに、その優先度の低いサブプロセッサプログラムに対してサブプロセッサが奪われたことを通知する。
さらに、情報処理装置1内のリソースマネージャは、図37に示すように、ステップ243に進んで、ネットワークシステム全体の空いているサブプロセッサと、自装置(情報処理装置1)内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせて、m個のサブプロセッサを確保できたか否かを判断し、確保できた場合には、ステップ243からステップ244に進んで、当該の機能プログラムに、m個のサブプロセッサを確保したことを通知する。
当該の機能プログラムは、ステップ248で、このサブプロセッサ確保通知を受信し、後述のように自装置(情報処理装置1)内のリソースマネージャに各サブプロセッサに対するサブプロセッサプログラムを送信する。
一方、情報処理装置1内のリソースマネージャは、ステップ243で、ネットワークシステム全体の空いているサブプロセッサと、自装置内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせても、m個のサブプロセッサを確保できないと判断した場合には、ステップ243からステップ251に進んで、ネットワーク上に他の情報処理装置が接続されているか否かを判断する。
そして、ネットワーク上に他の情報処理装置が接続されている場合には、情報処理装置1内のリソースマネージャは、ステップ251からステップ252に進んで、当該他の情報処理装置(この場合は情報処理装置2)内のリソースマネージャに、優先度の低いサブプロセッサプログラムを実行中のサブプロセッサの確保を要求する。この確保要求は、図29(A)に示したようなサブプロセッサ確保要求コマンドによって行う。
図38に示すように、この確保要求に対して、他の情報処理装置(この場合は情報処理装置2)内のリソースマネージャは、ステップ253で、自装置内のサブプロセッサ管理テーブルから、自装置内に優先度の低いサブプロセッサプログラムを実行中のサブプロセッサがあるか否かを判断し、ある場合には、その優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを確保して、その数および確保した各サブプロセッサのサブプロセッサID、サブプロセッサプログラムIDおよび発番したロックシーケンス番号を情報処理装置1内のリソースマネージャに通知し、自装置内に優先度の低いサブプロセッサプログラムを実行中のサブプロセッサがない場合には、その旨を情報処理装置1内のリソースマネージャに通知する。この通知は、図29(B)に示したようなサブプロセッサ確保返信コマンドによって行う。
なお、他の情報処理装置(この場合は情報処理装置2)内のリソースマネージャは、ステップ253で、自装置内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを確保した場合には、その優先度の低いサブプロセッサプログラムおよび当該サブプロセッサプログラムと連携動作する機能プログラムに対してサブプロセッサが奪われたことを通知する。
他の情報処理装置(この場合は情報処理装置2)内のリソースマネージャからの確保通知を受けて、情報処理装置1内のリソースマネージャは、図38に示すように、ステップ254で、ネットワークシステム全体の空いているサブプロセッサと、自装置(情報処理装置1)内および他装置(情報処理装置2)内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせて、m個のサブプロセッサを確保できたか否かを判断し、確保できない場合には、図37に示すように、ステップ254からステップ251に進んで(戻って)、さらにネットワーク上に他の情報処理装置が接続されているか否かを判断する。
以下、情報処理装置2の場合と同様に、ネットワークシステム全体でm個のサブプロセッサを確保できるまで、または、それ以上、ネットワーク上に情報処理装置が接続されていないことが検出されるまで、ステップ252,253,254および251の処理を繰り返す。
そして、空いているサブプロセッサと優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせて、ネットワークシステム全体でm個のサブプロセッサを確保できた場合には、情報処理装置1内のリソースマネージャは、ステップ254からステップ255に進んで、当該の機能プログラムに、m個のサブプロセッサを確保したことを通知する。
当該の機能プログラムは、ステップ258で、このサブプロセッサ確保通知を受信し、以下のように自装置(情報処理装置1)内のリソースマネージャに各サブプロセッサに対するサブプロセッサプログラムを送信する。
すなわち、当該の機能プログラムは、図36のステップ238、図37のステップ248、または図38のステップ258で、情報処理装置1内のリソースマネージャから、m個のサブプロセッサを確保した旨の通知を受信したら、図39に示すように、ステップ281で、情報処理装置1内のリソースマネージャに、確保された各サブプロセッサに対するサブプロセッサプログラムを送信する。
図39に示すように、情報処理装置1内のリソースマネージャは、ステップ282で、当該の機能プログラムから送信されたサブプロセッサプログラムを受信して、自装置(情報処理装置1)分のサブプロセッサプログラムがある場合には、それを自装置内の確保されたサブプロセッサに送信し、さらにステップ283に進んで、他の情報処理装置分のサブプロセッサプログラムがあるか否かを判断し、他の情報処理装置分のサブプロセッサプログラムがない場合には、ステップ283からステップ284に進んで、当該の機能プログラムに、確保された各サブプロセッサにサブプロセッサプログラムを送信したことを通知する。
一方、当該の機能プログラムから送信されたサブプロセッサプログラムに他の情報処理装置分のサブプロセッサプログラムがある場合には、情報処理装置1内のリソースマネージャは、ステップ283からステップ291に進んで、他の情報処理装置2,3のリソースマネージャに各情報処理装置分のサブプロセッサプログラムを送信する。
他の情報処理装置2,3のリソースマネージャは、ステップ292で、それぞれ自装置分のサブプロセッサプログラムを、自装置内の確保されたサブプロセッサに送信し、さらにステップ293に進んで、情報処理装置1内のリソースマネージャに、確保されたサブプロセッサにサブプロセッサプログラムを送信したことを通知する。この通知を受けて、情報処理装置1内のリソースマネージャは、ステップ284で、当該の機能プログラムに、確保された各サブプロセッサにサブプロセッサプログラムを送信したことを通知する。
なお、情報処理装置1内のリソースマネージャ、および他の情報処理装置2,3内のリソースマネージャは、図35のステップ229,234、図36のステップ242、または図38のステップ253で、自装置内にサブプロセッサを確保した場合には、その確保したサブプロセッサにつき、自装置内のサブプロセッサ管理テーブルを書き替えるとともに、情報処理装置1,2または3内のリソースマネージャが発番したロックシーケンス番号をサブプロセッサ管理テーブルに記述し、図39のステップ282および292では、当該の機能プログラムから受信したサブプロセッサプログラムIDおよびロックシーケンス番号が自装置のサブプロセッサ管理テーブル内のそれらと同じであるか否かを判断して、異なる場合には、情報処理装置1内のリソースマネージャが直接、または他の情報処理装置2,3内のリソースマネージャが情報処理装置1内のリソースマネージャを介して、当該の機能プログラムにエラーを通知するが、図36〜図39では、この点を省略して、エラーを生じない場合のみを示した。
図39に示すように、当該の機能プログラムは、ステップ287で、情報処理装置1内のリソースマネージャからの、確保された各サブプロセッサにサブプロセッサプログラムを送信した旨の通知を受信する。
これによって、情報処理装置1内の空いているサブプロセッサだけではm個のサブプロセッサを確保できないが、情報処理装置1内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを含めると、情報処理装置1内だけでm個のサブプロセッサを確保できる場合、あるいは、情報処理装置1内の空いているサブプロセッサだけではm個のサブプロセッサを確保できないが、情報処理装置1以外にもネットワーク上に情報処理装置が存在していて、ネットワークシステム全体で、空いているサブプロセッサだけで、または優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを含めると、m個のサブプロセッサを確保できる場合の、サブプロセッサ割り当て処理を終了する。
確保された各サブプロセッサで処理されるべきデータは、サブプロセッサプログラムの送信と同時に、またはサブプロセッサプログラムの送信後、確保された各サブプロセッサに送信される。これによって、確保された各サブプロセッサでサブプロセッサプログラムを実行することができる。
一方、情報処理装置1内のリソースマネージャは、図37のステップ251で、ネットワーク上に他の情報処理装置が接続されていないと判断した場合、すなわち、ネットワークシステム全体の空いているサブプロセッサと優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせても、m個のサブプロセッサを確保できないと判断した場合には、図40に示すように、ステップ251からステップ295に進んで、当該の機能プログラムに、m個のサブプロセッサを確保できないことを通知する。当該の機能プログラムは、ステップ297で、この通知を受信し、エラー処理を実行する。
上述した例は、情報処理装置IDの置き換えられた数値の昇順に、すなわち情報処理装置1→情報処理装置2→情報処理装置3の順に、サブプロセッサの確保を要求する場合であるが、例えば、各情報処理装置内のリソースマネージャは、実行されるべきサブプロセッサプログラムの優先度が高い場合には、上述した装置情報の一部であるメインプロセッサ動作周波数により、ネットワーク9上に接続されている各情報処理装置の動作周波数を判断して、動作周波数が高い情報処理装置から順に、サブプロセッサの確保を要求するように、システムを構成してもよい。
あるいはまた、装置情報の一部である情報処理装置種別IDにより、ネットワーク9上に接続されている各情報処理装置の種別を判断することによって、ハードディスクレコーダのようにネットワーク9から切断される可能性が低い情報処理装置から、PDAやポータブルCDプレーヤのようにネットワーク9から切断される可能性が高い情報処理装置への順に、サブプロセッサの確保を要求するように、システムを構成してもよい。
また、上述した例は、情報処理装置1内の空いているサブプロセッサだけでは必要数のサブプロセッサを確保できない場合、情報処理装置1内のリソースマネージャから、他の情報処理装置内のリソースマネージャに対して、直ちにサブプロセッサの確保を要求する場合であるが、図19〜図27に示して上述した例のように、情報処理装置1内のリソースマネージャから、他の情報処理装置内のリソースマネージャに対して、まずサブプロセッサの空き状況を問い合わせ、その結果、ネットワークシステム全体で必要数のサブプロセッサを確保できる場合には、改めてサブプロセッサの確保を要求するように、システムを構成してもよい。
[5.ネットワークシステムおよび情報処理装置の基本的構成その2]
図41は、この発明のネットワークシステムの他の例を示し、ネットワーク1009を介して複数の情報処理装置1001,1002,1003および1004が接続されたものである。
(5−1.情報処理装置および情報処理コントローラ)
情報処理装置1001,1002,1003および1004は、それぞれ後述のような各種のAV(Audio and Visual)機器やポータブル機器である。
情報処理装置1001について示すと、情報処理装置1001は、コンピュータ機能部として情報処理コントローラ1011を備える。情報処理コントローラ1011は、メインプロセッサ1021−1、サブプロセッサ1023−1,1023−2および1023−3、DMAC(ダイレクトメモリアクセスコントローラ)1025−1、コントロールレジスタ1028−1、ワークメモリ1029−1、およびDC(ディスクコントローラ)1030−1を有する。
メインプロセッサ1021−1は、サブプロセッサ1023−1,1023−2および1023−3によるサブプロセッサプログラムの実行(データ処理)のスケジュール管理と、情報処理コントローラ1011(情報処理装置1001)の全般的な管理とを行う。ただし、メインプロセッサ1021−1内で管理のためのプログラム以外のプログラムが動作するように構成することもできる。その場合には、メインプロセッサ1021−1はサブプロセッサとしても機能することになる。メインプロセッサ1021−1は、LS(ローカルストレージ)1022−1を有する。
サブプロセッサは、1つでもよいが、望ましくは複数とする。この例は、複数の場合である。
各サブプロセッサ1023−1,1023−2および1023−3は、メインプロセッサ1021−1の制御によって並列的かつ独立に、サブプロセッサプログラムを実行し、データを処理する。さらに、場合によってメインプロセッサ1021−1内のプログラムがサブプロセッサ1023−1,1023−2または1023−3内のサブプロセッサプログラムと連携して動作するように構成することもできる。後述する機能プログラムも、メインプロセッサ1021−1内で動作するプログラムである。各サブプロセッサ1023−1,1023−2および1023−3も、LS(ローカルストレージ)1024−1,1024−2および1024−3を有する。
DMAC1025−1は、それぞれ情報処理コントローラ1011に接続された、DRAM(ダイナミックRAM)などからなるメインメモリ1026−1およびSRAM(スタティックRAM)などからなるサブメモリ1027−1に格納されているプログラムおよびデータにアクセスするためのものである。DMAC1025−1を介すことにより、各サブプロセッサとメインメモリ1026−1との間ではDMA方式によりデータ転送を行うことができ、高速化を実現することができる。
コントロールレジスタ1028−1は、情報処理コントローラ1011内で処理されるべきサブプロセッサプログラムを、どのサブプロセッサが、さらにはサブプロセッサ内に複数個存在する後述のプレセッシングスレッドのいずれが、処理するかを決定するとともに、サブプロセッサによるサブプロセッサプログラム実行の進捗を管理するために使用される。
ワークメモリ1029−1は、情報処理コントローラ1011内に含まれるSRAMなどからなる作業用メモリであり、メインプロセッサ1021−1、およびサブプロセッサ1023−1,1023−2および1023−3によってアクセスされる。
DC1030−1は、情報処理コントローラ1011に接続された外部記録部1031−1および1031−2にアクセスするものである。
外部記録部1031−1および1031−2は、固定ディスク(ハードディスク)でも、リムーバブルディスクでもよく、また、MO,CD±RW,DVD±RWなどの光ディスク、メモリディスク、SRAM(スタティックRAM)、ROMなど、各種のものを用いることができる。したがって、DC1030−1は、ディスクコントローラと称するが、外部記録部コントローラである。
図41の例のように、情報処理コントローラ1011に対して外部記録部1031を複数接続できるように、情報処理コントローラ1011を構成することができる。
メインプロセッサ1021−1、各サブプロセッサ1023−1,1023−2および1023−3、DMAC1025−1、コントロールレジスタ1028−1、ワークメモリ1029−1、およびDC1030−1は、バス1032−1によって接続される。
情報処理コントローラ1011には、当該の情報処理コントローラ1011を備える情報処理装置1001をネットワーク全体を通して一意的に識別できる識別子が、情報処理装置IDとして割り当てられる。
メインプロセッサ1021−1、および各サブプロセッサ1023−1,1023−2および1023−3に対しても同様に、それぞれを特定できる識別子が、メインプロセッサIDおよびサブプロセッサIDとして割り当てられる。
情報処理コントローラ1011は、ワンチップIC(集積回路)として構成することが望ましい。
他の情報処理装置1002,1003および1004も、同様に構成される。ここで、親番号が同一であるユニットは、枝番号が異なっていても、特に断りがない限り、同じ働きをするものとする。また、以下の説明において枝番号が省略されている場合には、枝番号の違いにいる差異を生じないものとする。
(5−2.各サブプロセッサからメインメモリへのアクセス)
上述したように、1つの情報処理コントローラ内の各サブプロセッサ1023は、独立にサブプロセッサプログラムを実行し、データを処理するが、異なるサブプロセッサがメインメモリ1026内の同一領域に対して同時に読み出しまたは書き込みを行った場合には、データの不整合を生じ得る。そこで、サブプロセッサ1023からメインメモリ1026へのアクセスは、以下のような手順によって行う。
サブメモリ1027およびワークメモリ1029についても同様に、異なるサブプロセッサが同一領域に対して同時にアクセスすることが考えられるが、ここでは、メインメモリ1026について示す。
図42(A)に示すように、メインメモリ1026は、アドレス指定可能な複数のメモリロケーション0〜Nによって構成される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメント0〜Nが割り振られる。追加セグメントは、F/Eビット、サブプロセッサIDおよびLSアドレス(ローカルストレージアドレス)を含むものとされる。また、各メモリロケーションには、後述のアクセスキー0〜Nも割り振られる。F/Eビットは、以下のように定義される。
F/Eビット=0は、サブプロセッサ1023によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、読み出し不可であることを示す。また、F/Eビット=0は、当該メモリロケーションにデータ書き込み可能であることを示し、書き込み後に1に設定される。
F/Eビット=1は、当該メモリロケーションのデータがサブプロセッサ1023によって読み出されておらず、未処理の最新データであることを示す。当該メモリロケーションのデータは読み出し可能であり、サブプロセッサ1023によって読み出された後に0に設定される。また、F/Eビット=1は、当該メモリロケーションがデータ書き込み不可であることを示す。
さらに、上記F/Eビット=0(読み出し不可/書き込み可)の状態において、当該メモリロケーションについて読み出し予約を設定することは可能である。F/Eビット=0のメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ1023は、読み出し予約を行うメモリロケーションの追加セグメントに、読み出し予約情報として当該サブプロセッサ1023のサブプロセッサIDおよびLSアドレスを書き込む。
その後、データ書き込み側のサブプロセッサ1023によって、読み出し予約されたメモリロケーションにデータが書き込まれ、F/Eビット=1(読み出し可/書き込み不可)に設定されたとき、あらかじめ読み出し予約情報として追加セグメントに書き込まれたサブプロセッサIDおよびLSアドレスに読み出される。
複数のサブプロセッサによってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出し/書き込みを制御することによって、前段階の処理を行うサブプロセッサ1023が、処理済みのデータをメインメモリ1026内の所定アドレスに書き込んだ後に即座に、後段階の処理を行う別のサブプロセッサ1023が前処理後のデータを読み出すことが可能となる。
図42(B)に示すように、各サブプロセッサ1023内のLS1024も、アドレス指定可能な複数のメモリロケーション0〜Lによって構成される。各メモリロケーションに対しては、同様に追加セグメント0〜Lが割り振られる。追加セグメントは、ビジービットを含むものとされる。
サブプロセッサ1023がメインメモリ1026内のデータを自身のLS1024のメモリロケーションに読み出すときには、読み出し先のメモリロケーションに対応するビジービットを1に設定して予約する。ビジービットが1であるメモリロケーションには、他のデータは格納することができない。LS1024のメモリロケーションに読み出し後、ビジービットは0になり、任意の目的に使用できるようになる。
図42(A)に示すように、さらに、各情報処理コントローラと接続されたメインメモリ1026には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ1026内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ1023に割り当てられ、そのサブプロセッサが排他的に使用することができる。すなわち、各々のサブプロセッサ1023は、自身に割り当てられたサンドボックスを使用できるが、この領域を超えてデータのアクセスを行うことはできない。
メインメモリ1026は、複数のメモリロケーション0〜Nから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。すなわち、1つのサンドボックスは、1つまたは複数のメモリロケーションから構成される。
さらに、メインメモリ1026の排他的な制御を実現するために、図42(C)に示すようなキー管理テーブルが用いられる。キー管理テーブルは、情報処理コントローラ内のSRAMのような比較的高速のメモリに格納され、DMAC1025と関連付けられる。ただし、キー管理テーブルは、ワークメモリ1029に格納されてもよい。
キー管理テーブル内には、情報処理コントローラ内のサブプロセッサの数と同数のエントリが存在し、各エントリには、サブプロセッサIDおよび、それに対応するサブプロセッサキーおよびキーマスクが関連付けられて格納される。
サブプロセッサ1023がメインメモリ1026を使用する際のプロセスは、以下のとおりである。まず、サブプロセッサ1023はDMAC1025に、読み出しまたは書き込みのコマンドを送信する。このコマンドには、自身のサブプロセッサIDと、アクセス要求先であるメインメモリ1026内のアドレスが含まれる。
DMAC1025は、このコマンドを実行する前に、キー管理テーブルを参照して、アクセス要求元のサブプロセッサ1023のサブプロセッサキーを調べる。次に、DMAC1025は、調べたアクセス要求元のサブプロセッサキーと、アクセス要求先であるメインメモリ1026内の図42(A)に示したメモリロケーションに割り振られたアクセスキーとを比較して、2つのキーが一致した場合にのみ、上記のコマンドを実行する。
図42(C)に示したキー管理テーブル上のキーマスクは、その任意のビットが1になることによって、そのキーマスクに関連付けられたサブプロセッサキーの対応するビットが0または1になることができる。
例えば、サブプロセッサキーが1010であるとする。通常、このサブプロセッサキーによって1010のアクセスキーを持つサンドボックスへのアクセスだけが可能である。しかし、このサブプロセッサキーと関連付けられたキーマスクが0001に設定されている場合には、キーマスクのビットが1に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ、このサブプロセッサキー1010によって、アクセスキーが1010または1011のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
以上のようにして、メインメモリ1026のサンドボックスの排他性が実現される。すなわち、1つの情報処理コントローラ内の複数のサブプロセッサによってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサと、後段階の処理を行うサブプロセッサのみが、メインメモリ1026内の所定アドレスにアクセスできるようになり、データを保護することができる。
例えば、以下のように使用することが考えられる。まず、情報処理装置の起動直後においては、キーマスクの値は全てゼロである。メインプロセッサ内のプログラムが実行され、サブプロセッサ内のサブプロセッサプログラムと連携動作するものとする。第1のサブプロセッサにより実行された処理結果データを一旦、メインメモリ1026に格納し、第2のサブプロセッサに送信したいときには、該当するメインメモリ領域は、当然どちらのサブプロセッサからもアクセス可能である必要がある。そのような場合に、メインプロセッサ内のプログラムは、キーマスクの値を適切に変更し、複数のサブプロセッサからアクセスできるメインメモリ領域を設けることにより、サブプロセッサによる多段階的の処理を可能にする。
より具体的には、他の情報処理装置からのデータ→第1のサブプロセッサによる処理→第1のメインメモリ領域→第2のサブプロセッサによる処理→第2のメインメモリ領域、という手順で多段階処理が行われるときには、
第1のサブプロセッサのサブプロセッサキー:0100、
第1のメインメモリ領域のアクセスキー :0100、
第2のサブプロセッサのサブプロセッサキー:0101、
第2のメインメモリ領域のアクセスキー :0101、
のような設定のままだと、第2のサブプロセッサは第1のメインメモリ領域にアクセスすることができない。そこで、第2のサブプロセッサのキーマスクを0001にすることにより、第2のサブプロセッサによる第1のメインメモリ領域へのアクセスを可能にすることができる。
(5−3.各サブプロセッサからメインメモリおよびサブメモリへのアクセス)
1つの情報処理コントローラ内の各サブプロセッサ1023は、メインメモリ1026に対してと同様に、サブメモリ1027に対しても、読み出しまたは書き込みが可能であるが、そのコマンドには、いくつかの種類が考えられ、優先度の高低があることもあり得る。そこで以下に、各サブプロセッサ1023が正確にメインメモリ1026およびサブメモリ1027を使用するための構成および手順を示す。
図43に示すように、DMAC1025は内部に、メインメモリコントロールレジスタ1033およびサブメモリコントロールレジスタ1034を有する。メインメモリコントロールレジスタ1033は、メインメモリ1026にアクセスするためのものであり、サブメモリコントロールレジスタ1034は、サブメモリ1027にアクセスするためのものである。
メインメモリコントロールレジスタ1033は、以下の4つのブロックから構成され、以下のように各々がメインメモリ1026にアクセスするためのコマンドを格納する。
優先コマンドブロックには、優先度の高いコマンドを複数個格納する。そのコマンドは優先的に処理される。
通常コマンドブロック1には、通常のコマンドを複数個格納し、通常コマンドブロック2にも、通常のコマンドを複数個格納する。通常コマンドブロック1と通常コマンドブロック2との間には、機能的な差はないが、例えば、メインメモリ1026へのアクセス実行前のコマンドを一方のブロックに格納し、実行後のコマンドを他方のブロックに格納することにより、実行前と実行後のコマンドを、それぞれ集中的および連続的に処理することができる効果がある。
オーダーコマンドブロックには、正しい順番で処理される必要のあるコマンドを複数個格納する。すなわち、各サブプロセッサ1023からのコマンドを、受信した順番に、コマンド送信元のサブプロセッサのサブプロセッサIDと共に格納する。これにより、受信した順番にコマンドを処理し、かつ同じ順番でコマンド送信元サブプロセッサに実行結果を返信することができる。
サブメモリコントロールレジスタ1034も、以下の4つのブロックから構成され、以下のように各々がサブメモリ1027にアクセスするためのコマンドを格納する。
優先コマンドブロックには、優先度の高いコマンドを複数個格納する。そのコマンドは優先的に処理される。
リードコマンドブロックには、リードコマンドを複数個格納し、ライトコマンドブロックには、ライトコマンドを複数個格納する。
待ちコマンドブロックには、サブメモリ1027内の任意の領域に対してアクセスを試みたが、対象領域がロックされていてアクセス不可であったコマンドを複数個格納する。ロック解除時には、そのコマンドは優先コマンドブロックに移動する。
各サブプロセッサ1023は、例えば、図44に示すような構造のコマンドによって、メインメモリ1026またはサブメモリ1027にアクセスする。アクセス実行後のメインメモリ1026またはサブメモリ1027からの実行結果のレスポンスも、同一構造とされる。
このコマンド/レスポンス構造において、コマンドタイプとしては、リードとライトがある。優先コマンド識別子は、当該コマンドが優先度の高いコマンドであることを示す。通常コマンド識別子は、メインメモリ1026へのアクセス時のものであり、当該コマンドが通常コマンドブロック1または通常コマンドブロック2に格納されることを示す。
チェーンコマンド識別子も、メインメモリ1026へのアクセス時のものであり、当該コマンドが直前または直後のコマンドと共に連続的なアクセスが必要であることを示す。または、連続するコマンド列の通し番号でもよい。チェーンコマンド識別子がセットされたコマンドは、オーダーコマンドブロックに格納されるが、処理の優先度は、優先コマンドブロック内のコマンドより高いものとする。
ここでのアドレスは、コマンドを実行するメインメモリ1026またはサブメモリ1027内のアドレスを示す。または、ワークメモリ1029内のアドレスでもよい。
サブプロセッサ識別子は、コマンド送信元のサブプロセッサのサブプロセッサIDである。プレセッシングスレッド識別子は、コマンド送信元の後述するプレセッシングスレッドの識別子である。
OK/NGは、コマンドの成功/失敗を示す。ここでのデータは、リードコマンド実行時にレスポンスに含まれる読み出されたデータ、またはライトコマンド実行時にコマンドに含まれる書き込まれるデータである。
図43に示すように、DMAC1025内には、上述した各サブプロセッサ1023がメインメモリ1026に正確にアクセスするためのメインメモリコントロールレジスタ1033、および各サブプロセッサ1023がサブメモリ1027に正確にアクセスするためのサブメモリコントロールレジスタ1034のほかに、メインプロセッサ1021がメインメモリ1026またはサブメモリ1027にアクセスするためのリードコマンドおよびライトコマンドをそれぞれ複数個格納できるメインプロセッサ用リードコマンドブロック1035およびメインプロセッサ用ライトコマンドブロック1036を設けることもできる。アドレス変換レジスタ1037については、後述する。
さらに、複数のサブプロセッサがDMAC1025に対して、優先度の同じメモリアクセスコマンドを同じタイミングで送信した場合には、以下の手順に従うものとする。すなわち、DMAC1025は、内部にメモリアクセスに成功した最後のサブプロセッサを示すポインタを有するものとし、複数のサブプロセッサから優先度の同じメモリアクセスコマンドを同じタイミングで受信したときには、当該ポインタより値が大きく、かつ当該ポインタとの差分が最も小さいコマンドを優先させるものとする。この場合、一番大きいポインタ値の次は、一番小さいポインタ値とする。
(5−4.各サブプロセッサからメインメモリに正確にアクセスするためのサブメモリへのアクセス)
DRAMなどにより構成されるメインメモリ1026、およびSRAMなどにより構成されるサブメモリ1027は、当然のことながら、各々の素子の構造が異なるため、使用目的も異なってくる。
そこで、メインメモリ1026とサブメモリ1027を組み合わせて使用する方法の一例として、各サブプロセッサ1023がメインメモリ1026にアクセスするときのアドレス変換をサブメモリ1027が担うことが考えられる。そのための構成および手順を、図45を用いて示す。
前述したように、メインメモリ1026は、複数のメモリロケーションによって構成され、さらに1つのサンドボックスは、1つまたは複数のメモリロケーションから構成される。そして、各サブプロセッサ1023は、自身に割り当てられたサンドボックスを排他的に使用することができる。
例えば、図45(A)に示すように、あるサブプロセッサ1023に、メインメモリ1026内のサンドボックス1,2,3が割り当てられているものとする。サンドボックス1は0x800〜0x8FF、サンドボックス2は0x200〜0x2FF、サンドボックス3は0xF00〜0xFFFとし、各サンドボックスは先頭アドレスによって識別されるものとする。すなわち、割り当てられる各サンドボックスは、アドレスが連続していなくてもよい。
当該のサブプロセッサ1023は、これらサンドボックス1,2,3からデータを読み出すときには、まず、DMAC1025内のアドレス変換レジスタ1037にアクセスする。
アドレス変換レジスタ1037は、サブプロセッサ1023と、当該サブプロセッサ1023に割り当てられたサンドボックスとを関連付けるレジスタであり、サブプロセッサ1023の数と同数のエントリから構成される。ここでは、Q1で示されるエントリが当該サブプロセッサ1023に対応するものとする。
このとき、サブプロセッサ1023は、自身に対応するQ1の値を読み出す。さらに、読み出されたQ1の値(0x80)で示される、サブメモリ1027内の第1のアドレスから、データ(0x20)を読み出す。
サンドボックス1の領域は、Q1の値に基づいて特定される。例えば、Q1の値を16倍した値がサンドボックス1の先頭アドレスを示し、その先頭アドレスに255を加算した値がサンドボックス1の終了アドレスを示す。したがって、上記のようにQ1の値が0x80であるときには、サンドボックス1の領域は0x800〜0x8FFである。
また、サブプロセッサ1023は、上記の第1のアドレスから読み出されたデータ(0x20)で示される、同じサブメモリ1027内の第2のアドレスから、データ(0xF0)を読み出す。
サンドボックス2の領域は、この第2のアドレスから読み出されたデータに基づいて特定される。具体的に、サンドボックス1と同様に、第2のアドレスから読み出されたデータの値を16倍した値がサンドボックス2の先頭アドレスを示し、その先頭アドレスに255を加算した値がサンドボックス2の終了アドレスを示す。したがって、上記のように第2のアドレスから読み出されたデータが0xF0であるときには、サンドボックス2の領域は0x200〜0x2FFである。
さらに、サブプロセッサ1023は、上記の第2のアドレスから読み出されたデータ(0xF0)で示される、同じサブメモリ1027内の第3のアドレスから、データ(0x00)を読み出す。0x00は、割り当てられたサンドボックスの終了を示す。
サンドボックス3の領域は、この第3のアドレスから読み出されたデータに基づいて特定される。具体的に、サンドボックス1,2と同様に、第3のアドレスから読み出されたデータの値を16倍した値がサンドボックス3の先頭アドレスを示し、その先頭アドレスに255を加算した値がサンドボックス3の終了アドレスを示す。したがって、上記のように第3のアドレスから読み出されたデータが0x00であるときには、サンドボックス3の領域は0xF00〜0xFFFである。
以上のように、各サブプロセッサ1023は、自身に割り当てられたサンドボックスのアドレスが非連続であっても、割り当てられたサンドボックスに正確にアクセスすることができ、割り当てられたサンドボックスからデータを確実に読み出すことができる。
次に、同じサブプロセッサ1023が、メインメモリ1026内の新たなサンドボックスにデータを書き込み、当該サンドボックスをアドレス変換レジスタ1037内の自身に対応したエントリで管理されるサンドボックスグループに追加するための手順を、図45(B)を用いて示す。
当該サブプロセッサ1023が、メインメモリ1026内の0x000〜0x0FFの領域であるサンドボックス4にデータを書き込んだとする。このとき、当該サブプロセッサ1023は、まず、Q1の値(Q1の初期値、例えば上記のように0x80)を読み出す。
次に、当該サブプロセッサ1023は、新たにデータを書き込んだサンドボックス4を特定できるサブメモリ1027内のアドレスに、先に読み出したQ1の値(0x80)を書き込む。例えば、今回は0x000〜0x0FFの領域にデータを書き込んだので、先頭アドレスである0x000を16で割った0x00で示されるサブメモリ1027内のアドレスにQ1の値(0x80)を書き込む。さらに、Q1の値(0x80)を書き込んだサブメモリ1027内のアドレス(0x00)を新たなQ1の値として、アドレス変換レジスタ1037内のQ1に書き込む。
以上のようにして、各サブプロセッサ1023は、新たなサンドボックスを既存のサンドボックスグループに追加することができる。この場合も、各サンドボックスのアドレスが非連続であってもよい。また、既存のサンドボックスグループが存在せず、最初のサンドボックスをサブメモリ1027およびアドレス変換レジスタ1037と関連付ける際にも、上記の方法を用いることができる。
(5−5.メインプロセッサおよび各サブプロセッサからワークメモリへのアクセス)
前述したように、メインメモリ1026は、DRAMなどにより構成され、さらにDMA方式によりデータが転送されるため、各サブプロセッサ1023は、大容量のメインメモリ1026を高速に使用することができる。また、サブメモリ1027は、SRAMなどにより構成され、同様に高速に使用することができる。
さらに、メインプロセッサ1021および各サブプロセッサ1023が、情報処理コントローラに接続されたメインメモリ1026およびサブメモリ1027と共に、情報処理コントローラ内に含まれるワークメモリ1029を作業用メモリとして共有して使用できれば、さらなる高速化を実現することができる。
また、当該ワークメモリ1029により簡単な数値演算ができれば、効率的である。ワークメモリ1029は、前述したようにSRAMなどにより構成されるため、DRAMのような大容量化は期待できないものの、非常に高速である。
以下に、メインプロセッサ1021および各サブプロセッサ1023がワークメモリ1029にアクセスする場合の構成および手順を示す。
図46に示すように、ワークメモリ1029は、コントローラ1038とRAM1039とから構成される。RAM1039としては、SRAMを用いることができるが、それに限定されるものではない。RAM1039は、複数のブロックから構成される。各ブロックには、アドレスが割り当てられ、データが記憶される。
メインプロセッサ1021および各サブプロセッサ1023は、コントローラ1038を介してRAM1039にアクセスする。具体的に、メインプロセッサ1021および各サブプロセッサ1023は、コントローラ1038にコマンド、アドレスまたはデータなどを送信し、コントローラ1038は、それに従ってRAM1039にアクセスする。
処理実行後、コントローラ1038は、コマンド送信元のメインプロセッサ1021またはサブプロセッサ1023にコマンド実行結果を返信する。
各サブプロセッサ1023がワークメモリ1029にアクセスするときのコマンドは、例えば図44に示したような、メインメモリ1026またはサブメモリ1027へのアクセス時に用いるものと同じである。処理実行後のワークメモリ1029からの実行結果のレスポンスも、同一構造である。
ただし、ワークメモリ1029にアクセスする場合には、図44に示したコマンド中の優先コマンド識別子、通常コマンド識別子、チェーンコマンド識別子、プレセッシングスレッド識別子は、基本的に使用しない。しかし、ワークメモリ1029が、これらの識別子に対応可能であれば、使用してもよい。コマンドタイプしては、以下に示すような、いくつかが考えられる。
第1は、リードコマンドである。これは、ワークメモリ1029内のデータを読み出すために使用される。メインプロセッサ1021および各サブプロセッサ1023は、リードコマンドと共に、所望のデータを記憶するRAM1039内のブロックのアドレスも送信する。コントローラ1038からは、実行結果として、リードコマンドの成功/失敗を示すOK/NGと、読み出されたデータが返信される。
第2は、ライトコマンドである。これは、ワークメモリ1029内にデータを書き込むために使用される。メインプロセッサ1021および各サブプロセッサ1023は、ライトコマンド、データ、当該データを記憶させるRAM1039内のブロックのアドレスを送信する。コントローラ1038からは、実行結果として、ライトコマンドの成功/失敗を示すOK/NGが返信される。
第3は、加算コマンドである。これは、ワークメモリ1029内のデータを加算するために使用される。メインプロセッサ1021および各サブプロセッサ1023は、加算コマンド、加算させるデータを記憶するRAM1039内のブロックのアドレスを送信する。コントローラ1038は、受信したアドレスのブロックにおけるデータに1を加算し、上書きする。実行結果として、加算コマンドの成功/失敗を示すOK/NGが返信される。
第4は、セットコマンドである。これは、ワークメモリ1029内のデータをビット単位で操作するために使用される。メインプロセッサ1021および各サブプロセッサ1023は、セットコマンド、操作するデータを記憶するRAM1039内のブロックのアドレス、およびマスクデータを送信する。
これに対して、コントローラ1038は、受信したマスクデータと、受信したアドレスのブロックにおけるデータとを比較し、マスクデータにおいて値が1であるビットと同じ位置の、データにおけるビットの値を1にする。実行結果として、セットコマンドの完了を示すCompletedが返信される。このとき、セットコマンド実行前のデータも返信することにより、コマンドの成功/失敗を確認できるようにしてもよい。
第5は、クリアコマンドである。これも、ワークメモリ1029内のデータをビット単位で操作するために使用される。メインプロセッサ1021および各サブプロセッサ1023は、クリアコマンド、操作するデータを記憶するRAM1039内のブロックのアドレス、およびマスクデータを送信する。
これに対して、コントローラ1038は、受信したマスクデータと、受信したアドレスのブロックにおけるデータとを比較し、マスクデータにおいて値が1であるビットと同じ位置の、データにおけるビットの値を0にする。実行結果として、クリアコマンドの完了を示すCompletedが返信される。このとき、クリアコマンド実行前のデータも返信することにより、コマンドの成功/失敗を確認できるようにしてもよい。
以上のように、メインプロセッサ1021および各サブプロセッサ1023は、大容量のメインメモリ1026および高速のサブメモリ1027に加えて、ワークメモリ1029を併用することができる。さらに、ワークメモリ1029をメインメモリ1026またはサブメモリ1027のキャッシュとして利用すれば、さらなる高速化を期待することができる。
(5−6.各サブプロセッサ内のプレセッシングスレッド)
前述したように、1つの情報処理コントローラ内の各サブプロセッサ1023は構造上独立している。したがって、各々のサブプロセッサ1023が独立にサブプロセッサプログラムを実行し、データを処理することができる。さらに、各サブプロセッサ1023が内部に、仮想的に独立した複数のプレセッシングスレッドを有することも考えられる。その構造を図47に示す。
サブプロセッサ1023は、内部に有するアービタ1040を介して、バス1032と接続される。サブプロセッサ1023内には、また、LS(ローカルストレージ)1024とプレセッシングスレッド1041,1042,1043および1044が含まれ、アービタ1040は、外部からの信号を適切なプレセッシングスレッドに通知する役割を担う。
図47では各プレセッシングスレッド1041,1042,1043および1044を独立に示しているが、あくまで仮想的な独立である。プレセッシングスレッド1041,1042,1043および1044は、それぞれプレセッシングスレッド識別子が割り当てられ、独立かつ並列に動作可能である。
各プレセッシングスレッド1041,1042,1043および1044は、メインメモリ1026、サブメモリ1027またはワークメモリ1029に対して独立にアクセスを行うため、コマンド送信元のプレセッシングスレッドに確実にレスポンスが返信されるようにする必要がある。そのための手順を以下に示す。
各プレセッシングスレッド1041,1042,1043および1044が各々のメモリにアクセスするときのコマンドは、例えば図44に示したような、各サブプロセッサ1023がメモリにアクセスする時に用いるものと同じである。処理実行後の各メモリからの実行結果のレスポンスも、同一構造である。
図44のコマンド/レスポンス構造については前述したが、サブプロセッサ識別子はコマンド送信元のサブプロセッサのサブプロセッサIDであり、さらにプレセッシングスレッド識別子は、当該サブプロセッサ内のいずれのプレセッシングスレッドがコマンド送信元であるかを識別するためのものである。
メインメモリ1026、サブメモリ1027またはワークメモリ1029からのレスポンスは、まず、サブプロセッサ識別子に基づいて、コマンド送信元のサブプロセッサ1023に返信される。さらに、プレセッシングスレッド識別子に基づいて、サブプロセッサ1023内のアービタ1040により、コマンド送信元のプレセッシングスレッドに返信される。
ただし、同じ処理を行うようなときなど、サブプロセッサ内の複数のプレセッシングスレッド中のいずれでもよい場合には、プレセッシングスレッド識別子に基づかずに、処理負荷の軽いプレセッシングスレッドに返信するようにしてもよい。また、メインメモリ1026、サブメモリ1027またはワークメモリ1029からレスポンスを受信するたびに、複数のプレセッシングスレッド中の1つを順繰りに選択し、その選択されたプレセッシングスレッドに当該レスポンスを返信するようにしてもよい。
以上のように、各サブプロセッサ1023内の複数のプレセッシングスレッドが、メインメモリ1026、サブメモリ1027またはワークメモリ1029に対して独立にアクセスを行う場合でも、コマンド送信元のプレセッシングスレッドに確実にレスポンスが返信されるようにすることができる。
(5−7.コントロールレジスタによるサブプロセッサプログラムの管理)
1つの情報処理コントローラ内に複数のサブプロセッサ1023が存在し、さらに各サブプロセッサ1023内に複数のプレセッシングスレッドを有する場合に、情報処理コントローラ内で処理されるべきサブプロセッサプログラムを、どのプレセッシングスレッドに処理させるかを決定することは、情報処理コントローラの高速化を実現する上で重要である。
そこで以下に、図41に示したコントロールレジスタ1028を使用することにより、各プレセッシングスレッドに対して適切にサブプロセッサプログラムの処理を割り当て、情報処理コントローラを効率的に動作させる構成および手順を示す。
図48に示すように、コントロールレジスタ1028は、処理待ちサブプロセッサプログラムレジスタ1045とサブプロセッサプログラム処理進捗レジスタ1046とから構成される。
処理待ちサブプロセッサプログラムレジスタ1045について示すと、メインプロセッサ1021は、情報処理コントローラ内で処理されるべきサブプロセッサプログラムが発生した場合には、処理待ちサブプロセッサプログラムレジスタ1045内に、当該サブプロセッサプログラムまたはこれに関連するデータが格納されているメインメモリ1026、サブメモリ1027、ワークメモリ1029、またはLS(ローカルストレージ)1022または1024におけるアドレスを書き込む。
処理されるべきサブプロセッサプログラムが存在しない状態では、処理待ちサブプロセッサプログラムレジスタ1045の値はゼロである。全てのプレセッシングスレッドは、自身が何もサブプロセッサプログラムを実行していない間は、定期的または非定期的に処理待ちサブプロセッサプログラムレジスタ1045の値を読み出し、その結果、ゼロでない値を読み出したプレセッシングスレッドが処理を行うものとする。
これとともに、当該プレセッシングスレッドは、処理待ちサブプロセッサプログラムレジスタ1045にゼロの値を書き込む。処理を行うプレセッシングスレッドは、読み出した処理待ちサブプロセッサプログラムレジスタ1045の値に基づいて、処理対象となるサブプロセッサプログラムまたは関連データを読み出し、処理する。このとき、サブプロセッサプログラムは既に当該プレセッシングスレッドを有するサブプロセッサ1023に読み出されており、サブプロセッサプログラムの読み出しは不要であることも考えられる。
このようにして、サブプロセッサプログラムを実行していない、処理能力に余裕のあるプレセッシングスレッドに迅速にサブプロセッサプログラムの処理を割り当てることができ、情報処理コントローラを効率的に動作させることができる。
サブプロセッサプログラム処理進捗レジスタ1046は、サブプロセッサプログラムの処理を割り当てられたプレセッシングスレッドが、処理進捗状況を書き込むための2ビット(x,y)のレジスタである。例えば、(0,0)は未処理を示し、(0,1)は処理中の段階1を示し、(1,0)は処理中の段階2を示し、(1,1)は処理完了を示す。さらに、この2ビットとともに、プロセッシングスレッド識別子を書き込むことにより、処理を割り当てられたプレセッシングスレッドを示すようにしてもよい。
または、図48にプレセッシングスレッド0,1,2,3として示すように、情報処理コントローラ内の各プロセッシングスレッドごとに、サブプロセッサプログラムの処理進捗状況を書き込むためのレジスタを設けてもよい。
サブプロセッサプログラム処理進捗レジスタ1046は、情報処理コントローラ内のメインプロセッサ1021、全てのサブプロセッサ1023および全てのプレセッシングスレッドがアクセス可能であり、これにより、サブプロセッサプログラムの処理進捗状況を的確に把握することができる。さらに、各プロセッシングスレッドごとに処理進捗レジスタを設ける場合には、複数のサブプロセッサプログラムが同時に実行される場合にも処理進捗状況の把握が可能となる。
以上が、各サブプロセッサ1023が内部に、仮想的に独立した複数のプレセッシングスレッドを有する場合のプレセッシングスレッド管理方法の例である。
なお、以下においては、サブプロセッサが何らかの処理を行う場合には、当該サブプロセッサ内部のいずれのプレセッシングスレッドが処理を行っても構わないものとし、プレセッシングスレッドの違いによる実行結果の差異は生じないものとする。したがって、サブプロセッサの処理内容につき、サブプロセッサ内部の複数のプレセッシングスレッドがどの様に処理を分担するかについては説明を省略する。
(5−8.ソフトウェアセルの生成および構成)
図41のネットワークシステムでは、情報処理装置1001,1002,1003および1004の間での分散処理のために、情報処理装置1001,1002,1003および1004の間でソフトウェアセルが伝送される。すなわち、ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ1021は、コマンド、プログラムおよびデータを含むソフトウェアセルを生成し、ネットワーク1009を介して他の情報処理装置に送信することによって、処理を分散することができる。
図3に、ソフトウェアセルの構成の一例を示す。この例のソフトウェアセルは、全体として、送信元ID、送信先ID、応答先ID、セルインターフェース、DMAコマンド、プログラム、およびデータによって構成される。
送信元IDには、ソフトウェアセルの送信元である情報処理装置のネットワークアドレスおよび情報処理装置ID、さらに、その情報処理装置内の情報処理コントローラが備えるメインプロセッサ1021および各サブプロセッサ1023の識別子(メインプロセッサIDおよびサブプロセッサID)が含まれる。
送信先IDおよび応答先IDには、それぞれ、ソフトウェアセルの送信先である情報処理装置、およびソフトウェアセルの実行結果の応答先である情報処理装置についての、同じ情報が含まれる。
セルインターフェースは、ソフトウェアセルの利用に必要な情報であり、グローバルID、必要なサブプロセッサの情報、サンドボックスサイズ、および前回のソフトウェアセルIDから構成される。
グローバルIDは、ネットワーク全体を通して当該のソフトウェアセルを一意的に識別できるものであり、送信元ID、およびソフトウェアセルの作成または送信の日時(日付および時刻)に基づいて作成される。
必要なサブプロセッサの情報は、当該ソフトウェアセルの実行に必要なサブプロセッサの数が設定される。サンドボックスサイズは、当該ソフトウェアセルの実行に必要なメインメモリ1026内およびサブプロセッサ1023のLS1024内のメモリ量が設定される。
前回のソフトウェアセルIDは、ストリーミングデータなどのシーケンシャルな実行を要求する1グループのソフトウェアセル内の、前回のソフトウェアセルの識別子である。
ソフトウェアセルの実行セクションは、DMAコマンド、プログラムおよびデータから構成される。DMAコマンドには、プログラムの起動に必要な一連のDMAコマンドが含まれ、プログラムには、サブプロセッサ1023によって実行されるサブプロセッサプログラムが含まれる。ここでのデータは、このサブプロセッサプログラムを含むプログラムによって処理されるデータである。
さらに、DMAコマンドには、ロードコマンド、キックコマンド、機能プログラム実行コマンド、ステータス要求コマンド、およびステータス返信コマンドが含まれる。
ロードコマンドは、メインメモリ1026内の情報をサブプロセッサ1023内のLS1024にロードするコマンドであり、ロードコマンド自体のほかに、メインメモリアドレス、サブプロセッサIDおよびLSアドレスを含む。メインメモリアドレスは、情報のロード元であるメインメモリ1026内の所定領域のアドレスを示す。サブプロセッサIDおよびLSアドレスは、情報のロード先であるサブプロセッサ1023の識別子およびLS1024のアドレスを示す。
キックコマンドは、サブプロセッサプログラムの実行を開始するコマンドであり、キックコマンド自体のほかに、サブプロセッサIDおよびプログラムカウンタを含む。サブプロセッサIDは、キック対象のサブプロセッサ1023を識別し、プログラムカウンタは、サブプロセッサプログラム実行用プログラムカウンタのためのアドレスを与える。
機能プログラム実行コマンドは、後述のように、ある情報処理装置が他の情報処理装置に対して、機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信した情報処理装置内の情報処理コントローラは、後述の機能プログラムIDによって、起動すべき機能プログラムを識別する。
ステータス要求コマンドは、送信先IDで示される情報処理装置の現在の動作状態(状況)に関する装置情報を、応答先IDで示される情報処理装置宛に送信することを要求するコマンドである。機能プログラムについては後述するが、図6に示す情報処理装置のメインメモリ1026が記憶するソフトウェアの構成図において機能プログラムにカテゴライズされるプログラムである。機能プログラムは、メインメモリ1026にロードされ、メインプロセッサ1021により実行される。
ステータス返信コマンドは、上記のステータス要求コマンドを受信した情報処理装置が、自身の装置情報を当該ステータス要求コマンドに含まれる応答先IDで示される情報処理装置に応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納する。
図4に、DMAコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す。
情報処理装置IDは、情報処理コントローラを備える情報処理装置を識別するための識別子であり、ステータス返信コマンドを送信する情報処理装置のIDを示す。情報処理装置IDは、電源投入時、その情報処理装置内の情報処理コントローラに含まれるメインプロセッサ1021によって、電源投入時の日時、情報処理装置のネットワークアドレスおよび情報処理装置内の情報処理コントローラに含まれるサブプロセッサ1023の数などに基づいて生成される。
情報処理装置種別IDには、当該の情報処理装置の特徴を表す値が含まれる。情報処理装置の特徴とは、例えば、後述のハードディスクレコーダ、PDA(Personal Digital Assistants)、ポータブルCD(Compact Disc)プレーヤなどである。また、情報処理装置種別IDは、映像音声記録、映像音声再生など、情報処理装置の機能を表すものであってもよい。情報処理装置の特徴や機能を表す値は予め決定されているものとし、情報処理装置種別IDを読み出すことにより、当該情報処理装置の特徴や機能を把握することが可能である。
MS(マスター/スレーブ)ステータスは、後述のように情報処理装置がマスター装置またはスレーブ装置のいずれで動作しているかを表すもので、これが0に設定されている場合にはマスター装置として動作していることを示し、1に設定されている場合にはスレーブ装置として動作していることを示す。
メインプロセッサ動作周波数は、情報処理コントローラ内のメインプロセッサ1021の動作周波数を表す。メインプロセッサ使用率は、メインプロセッサ1021で現在動作している全てのプログラムについての、メインプロセッサ1021での使用率を表す。メインプロセッサ使用率は、対象メインプロセッサの全処理能力に対する使用中の処理能力の比率を表した値で、例えばプロセッサ処理能力評価のための単位であるMIPSを単位として算出され、または単位時間あたりのプロセッサ使用時間に基づいて算出される。後述のサブプロセッサ使用率についても同様である。
サブプロセッサ数は、当該の情報処理コントローラが備えるサブプロセッサ1023の数を表す。サブプロセッサIDは、当該の情報処理コントローラ内の各サブプロセッサ1023を識別するための識別子である。
サブプロセッサステータスは、各サブプロセッサ1023の状態を表すものであり、unused、reserved、busyなどの状態がある。unusedは、当該のサブプロセッサが現在使用されてなく、使用の予約もされていないことを示す。reservedは、現在は使用されていないが、予約されている状態を示す。busyは、現在使用中であることを示す。
サブプロセッサ使用率は、当該のサブプロセッサで現在実行している、または当該のサブプロセッサに実行が予約されているサブプロセッサプログラムについての、当該サブプロセッサでの使用率を表す。すなわち、サブプロセッサ使用率は、サブプロセッサステータスがbusyである場合には、現在の使用率を示し、サブプロセッサステータスがreservedである場合には、後に使用される予定の推定使用率を示す。
サブプロセッサID、サブプロセッサステータスおよびサブプロセッサ使用率は、1つのサブプロセッサ1023に対して一組設定され、1つの情報処理コントローラ内のサブプロセッサ1023の数の組数だけ設定される。
メインメモリ総容量およびメインメモリ使用量は、それぞれ、当該の情報処理コントローラに接続されているメインメモリ1026の総容量および現在使用中の容量を表す。
外部記録部数は、当該の情報処理コントローラに接続されている外部記録部1031の数を表す。外部記録部IDは、当該の情報処理コントローラに接続されている外部記録部1031を一意的に識別する情報である。外部記録部種別IDは、当該の外部記録部の種類(例えば、ハードディスク、CD±RW、DVD±RW、メモリディスク、SRAM、ROMなど)を表す。
外部記録部総容量および外部記録部使用量は、それぞれ、外部記録部IDによって識別される外部記録部1031の総容量および現在使用中の容量を表す。
外部記録部ID、外部記録部種別ID、外部記録部総容量および外部記録部使用量は、1つの外部記録部1031に対して一組設定され、当該の情報処理コントローラに接続されている外部記録部1031の数の組数だけ設定される。すなわち、1つの情報処理コントローラに複数の外部記録部が接続されている場合、各々の外部記録部には異なる外部記録部IDが割り当てられ、外部記録部種別ID、外部記録部総容量および外部記録部使用量も別々に管理される。
(5−9.ソフトウェアセルの実行)
ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ1021は、以上のような構成のソフトウェアセルを生成し、ネットワーク1009を介して他の情報処理装置および当該装置内の情報処理コントローラに送信する。送信元の情報処理装置、送信先の情報処理装置、応答先の情報処理装置、および各装置内の情報処理コントローラは、それぞれ、上記の送信元ID、送信先IDおよび応答先IDによって識別される。
ソフトウェアセルを受信した情報処理装置内の情報処理コントローラに含まれるメインプロセッサ1021は、そのソフトウェアセルをメインメモリ1026に格納する。さらに、送信先のメインプロセッサ1021は、ソフトウェアセルを読み出し、それに含まれるDMAコマンドを処理する。
具体的に、送信先のメインプロセッサ1021は、まず、ロードコマンドを実行する。これによって、ロードコマンドで指示されたメインメモリアドレスから、ロードコマンドに含まれるサブプロセッサIDおよびLSアドレスで特定されるサブプロセッサ内のLS1024の所定領域に、情報がロードされる。ここでロードされる情報は、受信したソフトウェアセルに含まれるサブプロセッサプログラムまたはデータ、あるいはその他の指示されたデータである。
次に、メインプロセッサ1021は、キックコマンドを、これに含まれるサブプロセッサIDで指示されたサブプロセッサに、同様にキックコマンドに含まれるプログラムカウンタと共に送信する。
指示されたサブプロセッサは、そのキックコマンドおよびプログラムカウンタに従って、サブプロセッサプログラムを実行する。そして、実行結果をメインメモリ1026に格納した後、実行を完了したことをメインプロセッサ1021に通知する。
なお、送信先の情報処理装置内の情報処理コントローラにおいてソフトウェアセルを実行するプロセッサはサブプロセッサ1023に限定されるものではなく、メインプロセッサ1021がソフトウェアセルに含まれる機能プログラムなどのメインメモリ用プログラムを実行するように指定することも可能である。
この場合には、送信元の情報処理装置は、送信先の情報処理装置宛に、サブプロセッサプログラムの代わりに、メインメモリ用プログラムおよびそのメインメモリ用プログラムによって処理されるデータを含み、DMAコマンドがロードコマンドであるソフトウェアセルを送信し、メインメモリ1026にメインメモリ用プログラムおよびそれによって処理されるデータを記憶させる。
次に、送信元の情報処理装置は、送信先の情報処理装置宛に、送信先の情報処理装置内の情報処理コントローラについてのメインプロセッサID、メインメモリアドレス、メインメモリ用プログラムを識別するための後述の機能プログラムIDなどの識別子、およびプログラムカウンタを含み、DMAコマンドがキックコマンドまたは機能プログラム実行コマンドであるソフトウェアセルを送信して、メインプロセッサ1021に当該メインメモリ用プログラムを実行させる。
以上のように、この発明のネットワークシステムでは、送信元の情報処理装置は、サブプロセッサプログラムまたはメインメモリ用プログラムをソフトウェアセルによって送信先の情報処理装置に送信するとともに、当該サブプロセッサプログラムを送信先の情報処理装置内の情報処理コントローラに含まれるサブプロセッサ1023にロードさせ、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置に実行させることができる。
送信先の情報処理装置内の情報処理コントローラでは、受信したソフトウェアセルに含まれるプログラムがサブプロセッサプログラムである場合には、当該サブプロセッサプログラムを指定されたサブプロセッサにロードさせる。そして、ソフトウェアセルに含まれるサブプロセッサプログラムまたはメインメモリ用プログラムを実行させる。
したがって、ユーザが送信先の情報処理装置を操作しなくても自動的に、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置内の情報処理コントローラに実行させることができる。
このようにして情報処理装置は、自装置内の情報処理コントローラがサブプロセッサプログラムまたは機能プログラムなどのメインメモリ用プログラムを有していない場合には、ネットワークに接続された他の情報処理装置からそれらを取得することができる。さらに、各サブプロセッサとメインメモリとの間ではDMA方式によりデータ転送を行い、また上述したサンドボックスを使用することによって、1つの情報処理コントローラ内でデータを多段階に処理する必要がある場合でも、高速かつ高セキュリティに処理を実行することができる。
[6.ネットワークシステムとしての分散処理その2]
ソフトウェアセルの使用による分散処理の結果、図49の上段に示すようにネットワーク1009に接続されている複数の情報処理装置1001,1002,1003および1004は、図49の下段に示すように、仮想的な1台の情報処理装置1007として動作する。ただし、そのためには、以下のような構成によって、以下のような処理が実行される必要がある。
(6−1.システムのソフトウェア構成とプログラムのロード)
図6に、個々の情報処理コントローラのメインメモリ1026が記憶するソフトウェアの構成を示す。これらのソフトウェア(プログラム)は、情報処理装置に電源が投入される前においては、当該の情報処理コントローラに接続される外部記録部1031に記録されているものである。
各プログラムは、機能または特徴によって、制御プログラム、機能プログラムおよびデバイスドライバにカテゴライズされる。
制御プログラムは、各情報処理コントローラが同じものを備え、各情報処理コントローラのメインプロセッサ1021が実行するもので、後述のMS(マスター/スレーブ)マネージャおよび能力交換プログラムを含む。
機能プログラムは、メインプロセッサ1021が実行するもので、記録用、再生用、素材検索用など、情報処理コントローラごとに情報処理装置に応じたものが備えられる。
デバイスドライバは、情報処理コントローラ(情報処理装置)の入出力(送受信)用で、放送受信、モニタ出力、ビットストリーム入出力、ネットワーク入出力など、情報処理コントローラごとに情報処理装置に応じたものが備えられる。
ケーブルの差し込みなどによって情報処理装置が物理的にネットワーク1009に接続された状態で、情報処理装置に主電源が投入され、情報処理装置が電気的・機能的にもネットワーク1009に接続されると、その情報処理装置の情報処理コントローラのメインプロセッサ1021は、制御プログラムに属する各プログラム、およびデバイスドライバに属する各プログラムを、メインメモリ1026にロードする。
ロード手順としては、メインプロセッサ1021は、まず、DC1030に読み出し命令を実行させることによって、外部記録部1031からプログラムを読み出し、次に、DMAC1025に書き込み命令を実行させることによって、そのプログラムをメインメモリ1026に書き込む。
機能プログラムに属する各プログラムについては、必要なときに必要なプログラムだけをロードするように構成してもよく、または、他のカテゴリに属するプログラムと同様に、主電源投入直後に各プログラムをロードするように構成してもよい。
機能プログラムに属する各プログラムは、ネットワークに接続された全ての情報処理装置の外部記録部1031に記録されている必要はなく、いずれか1つの情報処理装置の外部記録部1031に記録されていれば、前述の方法によって他の情報処理装置からロードすることができるので、結果的に図49の下段に示すように、仮想的な1台の情報処理装置1007として機能プログラムを実行することができる。
また、前述したように、メインプロセッサ1021によって処理される機能プログラムは、サブプロセッサ1023によって処理されるサブプロセッサプログラムと連携動作する場合がある。そこで、メインプロセッサ1021が外部記録部1031から機能プログラムを読み出し、メインメモリ1026に書き込む際、対象となる機能プログラムと連携動作するサブプロセッサプログラムが存在する場合には、当該サブプロセッサプログラムも併せて同じメインメモリ1026に書き込む。この場合、連携動作するサブプロセッサプログラムは、1個である場合もあるが、複数個であることもあり得る。複数個である場合には、全ての連携動作するサブプロセッサプログラムをメインメモリ1026に書き込む。
メインメモリ1026に書き込まれたサブプロセッサプログラムは、その後、サブプロセッサ1023内のLS1024に書き込まれ、メインプロセッサ1021によって処理される機能プログラムと連携動作する。
図3のソフトウェアセルに示したように、機能プログラムには、プログラムごとにプログラムを一意的に識別できる識別子が、機能プログラムIDとして割り当てられる。機能プログラムIDは、機能プログラムの作成の段階で、作成日時や情報処理装置IDなどから決定される。
サブプロセッサプログラムにもサブプロセッサプログラムIDが割り当てられ、これによりサブプロセッサプログラムを一意的に識別可能である。割り当てられるサブプロセッサプログラムIDは、連携動作の相手となる機能プログラムの機能プログラムIDと関連性のある識別子、例えば機能プログラムIDを親番号とした上で最後尾に枝番号を付加させた識別子でもよいが、連携動作の相手となる機能プログラムの機能プログラムIDとは関連性のない識別子でもよい。
いずれにしても、機能プログラムとサブプロセッサプログラムが連携動作する場合には、両者とも相手の識別子であるプログラムIDを自プログラム内に記憶しておく必要がある。機能プログラムが複数個のサブプロセッサプログラムと連携動作する場合にも、当該機能プログラムは、その複数個のサブプロセッサプログラムのサブプロセッサプログラムIDを全て記憶しておく。
メインプロセッサ1021は、自身が動作する情報処理装置の装置情報(動作状態に関する情報)を格納するための領域をメインメモリ1026に確保し、当該情報を自装置の装置情報テーブルとして記録する。ここでの装置情報は、図4に示した情報処理装置ID以下の各情報である。
(6−2.システムにおけるマスター/スレーブの決定)
上述したネットワークシステムでは、ある情報処理装置への主電源投入時、その情報処理装置の情報処理コントローラのメインプロセッサ1021は、マスター/スレーブマネージャ(以下、MSマネージャ)をメインメモリ1026にロードし、実行する。
MSマネージャは、自身が動作する情報処理装置がネットワーク1009に接続されていることを検知すると、同じネットワーク1009に接続されている他の情報処理装置の存在を確認する。ここでの「接続」または「存在」は、上述したように、情報処理装置が物理的にネットワーク1009に接続されているだけでなく、電気的・機能的にもネットワーク1009に接続されていることを示す。
以下では、自身が動作する情報処理装置を自装置、他の情報処理装置を他装置と称する。当該装置も、当該情報処理装置を示すものとする。
MSマネージャが同じネットワーク1009に接続されている他の情報処理装置の存在を確認する方法を、以下に示す。
MSマネージャは、DMAコマンドがステータス要求コマンドであり、送信元IDおよび応答先IDが当該情報処理装置で、送信先IDを特定しないソフトウェアセルを生成して、当該情報処理装置が接続されたネットワーク上に送信し、ネットワーク接続確認用のタイマーを設定する。タイマーのタイムアウト時間は、例えば10分とされる。
当該ネットワークシステム上に他の情報処理装置が接続されている場合、その他装置は、上記ステータス要求コマンドのソフトウェアセルを受信し、上記応答先IDで特定されるステータス要求コマンドを発行した情報処理装置に対して、DMAコマンドがステータス返信コマンドで、かつデータとして自身(その他装置)の装置情報を含むソフトウェアセルを送信する。このステータス返信コマンドのソフトウェアセルには、少なくとも当該他装置を特定する情報(情報処理装置ID、メインプロセッサに関する情報、サブプロセッサに関する情報など)および当該他装置のMSステータスが含まれる。
ステータス要求コマンドを発行した情報処理装置のMSマネージャは、上記ネットワーク接続確認用のタイマーがタイムアウトするまで、当該ネットワーク上の他装置から送信されるステータス返信コマンドのソフトウェアセルの受信を監視する。その結果、MSステータス=0(マスター装置)を示すステータス返信コマンドが受信された場合には、自装置の装置情報テーブルにおけるMSステータスを1に設定する。これによって、当該装置はスレーブ装置となる。
一方、上記ネットワーク接続確認用のタイマーがタイムアウトするまでの間にステータス返信コマンドが全く受信されなかった場合、またはMSステータス=0(マスター装置)を示すステータス返信コマンドが受信されなかった場合には、自装置の装置情報テーブルにおけるMSステータスを0に設定する。これによって、当該装置はマスター装置となる。
すなわち、いずれの装置もネットワーク1009に接続されていない状態、またはネットワーク1009上にマスター装置が存在しない状態において、新たな情報処理装置がネットワーク1009に接続されると、当該装置は自動的にマスター装置として設定される。一方、ネットワーク1009上に既にマスター装置が存在する状態において、新たな情報処理装置がネットワーク1009に接続されると、当該装置は自動的にスレーブ装置として設定される。
マスター装置およびスレーブ装置のいずれについても、MSマネージャは、定期的にステータス要求コマンドをネットワーク1009上の他装置に送信してステータス情報を照会することにより、他装置の状況を監視する。その結果、ネットワーク1009に接続されている情報処理装置の主電源が遮断され、またはネットワーク1009から情報処理装置が切り離されることにより、あらかじめ判定用に設定された所定期間内に特定の他装置からステータス返信コマンドが返信されなかった場合や、ネットワーク1009に新たな情報処理装置が接続された場合など、ネットワーク1009の接続状態に変化があった場合には、その情報を後述の能力交換プログラムに通知する。
(6−3.マスター装置およびスレーブ装置における装置情報の取得)
メインプロセッサ1021は、MSマネージャから、ネットワーク1009上の他装置の照会および自装置のMSステータスの設定完了の通知を受けると、能力交換プログラムを実行する。
能力交換プログラムは、自装置がマスター装置である場合には、ネットワーク1009に接続されている全ての他装置の装置情報、すなわち各スレーブ装置の装置情報を取得する。
他装置の装置情報の取得は、上述したように、DMAコマンドがステータス要求コマンドであるソフトウェアセルを生成して他装置に送信し、その後、DMAコマンドがステータス返信コマンドで、かつデータとして他装置の装置情報を含むソフトウェアセルを他装置から受信することによって可能である。
能力交換プログラムは、マスター装置である自装置の装置情報テーブルと同様に、ネットワーク1009に接続されている全ての他装置(各スレーブ装置)の装置情報を格納するための領域を自装置のメインメモリ1026に確保し、これら情報を他装置(スレーブ装置)の装置情報テーブルとして記録する。
すなわち、マスター装置のメインメモリ1026には、自装置を含むネットワーク1009に接続されている全ての情報処理装置の装置情報が、装置情報テーブルとして記録される。
一方、能力交換プログラムは、自装置がスレーブ装置である場合には、ネットワーク1009に接続されている全ての他装置の装置情報、すなわちマスター装置および自装置以外の各スレーブ装置の装置情報を取得し、これら装置情報に含まれる情報処理装置IDおよびMSステータスを、自装置のメインメモリ1026に記録する。
すなわち、スレーブ装置のメインメモリ1026には、自装置の装置情報が、装置情報テーブルとして記録されるとともに、自装置以外のネットワーク1009に接続されているマスター装置および各スレーブ装置についての情報処理装置IDおよびMSステータスが、別の装置情報テーブルとして記録される。
また、マスター装置およびスレーブ装置のいずれについても、能力交換プログラムは、上記のようにMSマネージャから、新たにネットワーク1009に情報処理装置が接続されたことが通知されたときには、その情報処理装置の装置情報を取得し、上述したようにメインメモリ1026に記録する。
なお、MSマネージャおよび能力交換プログラムは、メインプロセッサ1021で実行されることに限らず、いずれかのサブプロセッサ1023で実行されてもよい。また、MSマネージャおよび能力交換プログラムは、情報処理装置の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
(6−4.情報処理装置がネットワークから切断された場合)
マスター装置およびスレーブ装置のいずれについても、能力交換プログラムは、上記のようにMSマネージャから、ネットワーク1009に接続されている情報処理装置の主電源が遮断され、またはネットワーク1009から情報処理装置が切り離されたことが通知されたときには、その情報処理装置の装置情報テーブルを自装置のメインメモリ1026から削除する。
さらに、このようにネットワーク1009から切断された情報処理装置がマスター装置である場合には、以下のような方法によって、新たにマスター装置が決定される。
具体的に、例えば、ネットワーク1009から切断されていない情報処理装置は、それぞれ、自装置および他装置の情報処理装置IDを数値に置き換えて、自装置の情報処理装置IDを他装置の情報処理装置IDと比較し、自装置の情報処理装置IDがネットワーク1009から切断されていない情報処理装置中で最小である場合、そのスレーブ装置は、マスター装置に移行して、MSステータスを0に設定し、マスター装置として、上述したように、ネットワーク1009に接続されている全ての他装置(各スレーブ装置)の装置情報を取得して、メインメモリ1026に記録する。
(6−5.装置情報に基づく分散処理)
図49の下段に示したようにネットワーク1009に接続されている複数の情報処理装置1001,1002,1003および1004を仮想的な1台の情報処理装置1007として動作させるためには、マスター装置がユーザの操作およびスレーブ装置の動作状態を把握する必要がある。
図50に、4台の情報処理装置が仮想的な1台の情報処理装置1007として動作する様子を示す。情報処理装置1001がマスター装置、情報処理装置1002,1003および1004がスレーブ装置A,BおよびCとして、動作しているものとする。
ユーザがネットワーク1009に接続されている情報処理装置を操作した場合、操作対象がマスター装置1001であれば、その操作情報は、マスター装置1001において直接把握され、操作対象がスレーブ装置であれば、その操作情報は、操作されたスレーブ装置からマスター装置1001に送信される。すなわち、ユーザの操作対象がマスター装置1001とスレーブ装置のいずれであるかにかかわらず、その操作情報は常にマスター装置1001において把握される。操作情報の送信は、例えば、DMAコマンドが操作情報送信コマンドであるソフトウェアセルによって行われる。
そして、マスター装置1001内の情報処理コントローラ1011に含まれるメインプロセッサ1021−1は、その操作情報に従って、実行する機能プログラムを選択する。その際、必要であれば、マスター装置1001内の情報処理コントローラ1011に含まれるメインプロセッサ1021−1は、上記の方法によって自装置の外部記録部1031−1または1031−2からメインメモリ1026−1に機能プログラムをロードするが、他の情報処理装置(スレーブ装置)がマスター装置1001に機能プログラムを送信してもよい。
機能プログラムには、その実行単位ごとに必要となる、図4に示した各情報として表される情報処理装置種別ID、メインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件などの、装置に関する要求スペックが規定されている。
マスター装置1001内の情報処理コントローラ1011に含まれるメインプロセッサ1021−1は、各機能プログラムについて必要となる上記要求スペックを読み出す。また、あらかじめ能力交換プログラムによってメインメモリ1026−1に記録された装置情報テーブルを参照し、各情報処理装置の装置情報を読み出す。ここでの装置情報は、図4に示した情報処理装置ID以下の各情報を示し、メインプロセッサ、サブプロセッサ、メインメモリおよび外部記録部に関する情報である。
マスター装置1001内の情報処理コントローラ1011に含まれるメインプロセッサ1021−1は、ネットワーク1009上に接続された各情報処理装置の上記装置情報と、機能プログラム実行に必要となる上記要求スペックとを順次比較する。
そして、例えば、機能プログラムが録画機能を必要とする場合には、情報処理装置種別IDに基づいて、録画機能を有する情報処理装置のみを特定して抽出する。さらに、機能プログラムを実行するために必要なメインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件を確保できるスレーブ装置を、実行要求候補装置として特定する。ここで、複数の実行要求候補装置が特定された場合には、当該候補装置から1つの実行要求候補装置を特定して選択する。
実行要求するスレーブ装置が特定されたら、マスター装置1001内の情報処理コントローラ1011に含まれるメインプロセッサ1021−1は、その特定されたスレーブ装置について、自装置内の情報処理コントローラ1011に含まれるメインメモリ1026−1に記録されている当該スレーブ装置の装置情報テーブルを更新する。
さらに、マスター装置1001内の情報処理コントローラ1011に含まれるメインプロセッサ1021−1は、DMAコマンドが機能プログラム実行コマンドであるソフトウェアセルを生成し、当該ソフトウェアセルのセルインターフェースに、当該機能プログラムに関する必要なサブプロセッサの情報およびサンドボックスサイズ(図17参照)を設定して、上記実行要求されるスレーブ装置に対して送信する。
機能プログラムの実行を要求されたスレーブ装置は、その機能プログラムを実行するとともに、自装置の装置情報テーブルを更新する。その際、必要であれば、スレーブ装置内の情報処理コントローラに含まれるメインプロセッサ1021は、上記の方法によって自装置の外部記録部1031からメインメモリ1026に機能プログラムおよび当該機能プログラムと連携動作するサブプロセッサプログラムをロードする。
機能プログラムの実行を要求されたスレーブ装置の外部記録部1031に、必要な機能プログラムまたは当該機能プログラムと連携動作するサブプロセッサプログラムが記録されていない場合には、他の情報処理装置が当該機能プログラムまたはサブプロセッサプログラムを、その機能プログラム実行要求先スレーブ装置に送信するように、システムを構成すればよい。
サブプロセッサプログラムについては、前述のロードコマンドおよびキックコマンドを利用して他の情報処理装置に実行させることもできる。
機能プログラムの実行終了後、機能プログラムを実行したスレーブ装置内の情報処理コントローラに含まれるメインプロセッサ1021は、終了通知をマスター装置1001内の情報処理コントローラ1011に含まれるメインプロセッサ1021−1に送信するとともに、自装置の装置情報テーブルを更新する。マスター装置1001内の情報処理コントローラ1011に含まれるメインプロセッサ1021−1は、その終了通知を受信して、機能プログラムを実行したスレーブ装置の装置情報テーブルを更新する。
マスター装置1001内の情報処理コントローラ1011に含まれるメインプロセッサ1021−1は、自装置および他装置の装置情報テーブルの参照結果から、当該の機能プログラムを実行することができる情報処理装置として、自身を選択する場合もあり得る。その場合には、マスター装置1001が当該の機能プログラムを実行する。
図50の例で、ユーザがスレーブ装置A(情報処理装置1002)を操作し、当該操作に応じた機能プログラムを別のスレーブ装置B(情報処理装置1003)が実行する場合につき、図51に以上の分散処理の例を示す。
図51の例では、ユーザがスレーブ装置Aを操作することによって、スレーブ装置Aを含むネットワークシステム全体の分散処理が開始して、まず、スレーブ装置Aは、ステップ1091で、その操作情報をマスター装置1001に送信する。
マスター装置1001は、ステップ1092で、その操作情報を受信し、さらにステップ1093に進んで、自装置のメインメモリ1026−1に記録されている自装置および他装置の装置情報テーブルから、各情報処理装置の動作状態を調べて、受信した操作情報に応じた機能プログラムを実行することができる情報処理装置を選択する。この例は、スレーブ装置Bが選択される場合である。
次に、マスター装置1001は、ステップ1094で、その選択したスレーブ装置Bに対して機能プログラムの実行を要求する。
スレーブ装置Bは、ステップ1095で、その実行要求を受信し、さらにステップ1096に進んで、実行要求された機能プログラムを実行する。
以上のように、ユーザは、1台の情報処理装置のみを操作することによって、他の情報処理装置を操作することなく、複数の情報処理装置1001,1002,1003および1004を仮想的な1台の情報処理装置1007として動作させることができる。
(6−6.各情報処理装置およびシステムの具体例)
ネットワーク1009を介して互いに接続される情報処理装置1001,1002,1003および1004は、基本的に上記のような情報処理コントローラ1011,1012,1013および1014によって情報処理を行うものであれば、どのようなものでもよいが、図52に、その一例を示す。
この例では、情報処理コントローラ1011を備える情報処理装置1001は、ハードディスクレコーダで、図53に示すように、ハードウェア構成としては、図41に示した外部記録部1031−1として、ハードディスクを内蔵し、図41に示した外部記録部1031−2として、DVD±R/RW、CD±R/RW、Blu−rayDisc(登録商標)などの光ディスクを装着できるように構成されるとともに、情報処理コントローラ1011のバス1032−1に接続されたバス1051−1に、放送受信部1052−1、映像入力部1053−1、音声入力部1054−1、映像出力部1055−1、音声出力部1056−1、操作パネル部1057−1、リモコン受光部1058−1およびネットワーク接続部1059−1が接続されたものである。
放送受信部1052−1、映像入力部1053−1および音声入力部1054−1は、放送信号を受信し、または情報処理装置1001の外部から映像信号および音声信号を入力し、それぞれ所定フォーマットのデジタルデータに変換して、情報処理コントローラ1011での処理のためにバス1051−1に送出するものであり、映像出力部1055−1および音声出力部1056−1は、情報処理コントローラ1011からバス1051−1に送出された映像データおよび音声データを処理して、デジタルデータのまま、またはアナログ信号に変換して、情報処理装置1001の外部に送出するものであり、リモコン受光部1058−1は、リモコン送信器1063−1からのリモコン(遠隔操作)赤外線信号を受信するものである。
図52および図53に示すように、情報処理装置(ハードディスクレコーダ)1001の映像出力部1055−1および音声出力部1056−1には、モニタ表示装置1061およびスピーカ装置1062が接続される。
図52の例の、情報処理コントローラ1012を備える情報処理装置1002も、ハードディスクレコーダで、図53において括弧内に参照番号を付して示すように、情報処理装置1001と同様に構成されたものである。ただし、例えば、図52に示すように、情報処理装置(ハードディスクレコーダ)1002には、モニタ表示装置およびスピーカ装置は接続されない。
情報処理装置(ハードディスクレコーダ)1001および1002、すなわち情報処理コントローラ1011および1012のソフトウェア構成としては、図54に示すように、制御プログラムとして、MSマネージャおよび能力交換プログラムを備え、機能プログラムとして、映像音声記録、映像音声再生、素材検索および番組録画予約のためのプログラムを備え、デバイスドライバとして、放送受信、映像出力、音声出力、外部記録部入出力およびネットワーク入出力のためのプログラムを備える。
図52の例の、情報処理コントローラ1013を備える情報処理装置1003は、PDA(Personal Digital Assistants)で、図55に示すように、ハードウェア構成としては、図41に示した外部記録部1031−5として、メモリカードディスクを装着できるように構成されるとともに、情報処理コントローラ1013のバス1032−3に接続されたバス1071に、液晶表示部1072、音声出力部1073、カメラ部1074、音声入力部1075、キーボード部1076およびネットワーク接続部1077が接続されたものである。
なお、図41では内部を省略した情報処理コントローラ1013は、メインプロセッサ1021−3、サブプロセッサ1023−7,1023−8および1023−9、DMAC(ダイレクトメモリアクセスコントローラ)1025−3、コントロールレジスタ1028−3、ワークメモリ1029−3、DC(ディスクコントローラ)1030−3、およびバス1032−3を備え、そのメインプロセッサ1021−3は、LS(ローカルストレージ)1022−3を有し、各サブプロセッサ1023−7,1023−8および1023−9は、LS(ローカルストレージ)1024−7,1024−8および1024−9を有する。
情報処理装置(PDA)1003、すなわち情報処理コントローラ1013のソフトウェア構成としては、図56に示すように、制御プログラムとして、MSマネージャおよび能力交換プログラムを備え、機能プログラムとして、映像音声記録、映像音声再生、電話帳、ワープロおよび表計算のためのプログラム、およびWebブラウザを備え、デバイスドライバとして、映像出力、音声出力、カメラ映像入力、マイク音声入力およびネットワーク入出力のためのプログラムを備える。
図52の例の、情報処理コントローラ1014を備える情報処理装置1004は、ポータブルCDプレーヤで、図57に示すように、ハードウェア構成としては、図41に示した外部記録部1031−6として、CD(Compact Disc)を装着できるように構成されるとともに、情報処理コントローラ1014のバス1032−4に接続されたバス1081に、液晶表示部1082、音声出力部1083、操作ボタン部1084およびネットワーク接続部1085が接続されたものである。
なお、図41では内部を省略した情報処理コントローラ1014は、メインプロセッサ1021−4、サブプロセッサ1023−10,1023−11および1023−12、DMAC(ダイレクトメモリアクセスコントローラ)1025−4、コントロールレジスタ1028−4、ワークメモリ1029−4、DC(ディスクコントローラ)1030−4、およびバス1032−4を備え、そのメインプロセッサ1021−4は、LS(ローカルストレージ)1022−4を有し、各サブプロセッサ1023−10,1023−11および1023−12は、LS(ローカルストレージ)1024−10,1024−11および1024−12を有する。
情報処理装置(ポータブルCDプレーヤ)1004、すなわち情報処理コントローラ1014のソフトウェア構成としては、図58に示すように、制御プログラムとして、MSマネージャおよび能力交換プログラムを備え、機能プログラムとして、音楽再生のためのプログラムを備え、デバイスドライバとして、音声出力、CD制御およびネットワーク入出力のためのプログラムを備える。
以上のような図52の例のネットワークシステムにおいて、情報処理装置1001,1003および1004がネットワーク1009上に接続されており、情報処理装置1001がマスター装置(MSステータス=0)として、情報処理装置1003および1004がスレーブ装置(MSステータス=1)として、設定されているものとする。
この状態で、新たに情報処理装置1002がネットワーク1009に接続されると、上述した方法によって、情報処理装置1002内の情報処理コントローラ1012に含まれるメインプロセッサ1021−2で実行されているMSマネージャは、他の情報処理装置1001,1003および1004にMSステータスを照会して、情報処理装置1001が既にマスター装置として存在することを認識し、自装置(情報処理装置1002)をスレーブ装置(MSステータス=1)に設定する。また、マスター装置に設定されている情報処理装置1001は、新たに追加された情報処理装置1002を含む各装置の装置情報を収集して、メインメモリ1026−1内の装置情報テーブルを更新する。
このような状態で、ユーザによってスレーブ装置である情報処理装置(PDA)1003で2時間の放送番組の録画予約の操作が行われた場合を示す。
この場合、スレーブ装置である情報処理装置(PDA)1003は、ユーザから録画開始時刻、録画終了時刻、録画対象放送チャネル、録画品質などの情報を含む録画予約情報の入力を受け付け、当該録画予約情報およびDMAコマンドとしての録画予約コマンドを含むソフトウェアセルを生成して、マスター装置である情報処理装置1001に送信する。
DMAコマンドが録画予約コマンドであるソフトウェアセルを受信した情報処理装置1001内の情報処理コントローラ1011に含まれるメインプロセッサ1021−1は、録画予約コマンドを読み出すとともに、メインメモリ1026−1内の装置情報テーブルを参照して、当該録画予約コマンドを実行可能な情報処理装置を特定する。
まず、メインプロセッサ1021−1は、装置情報テーブルに含まれる各情報処理装置1001,1002,1003および1004の情報処理装置種別IDを読み出して、録画予約コマンドに対応する機能プログラムを実行可能な情報処理装置を抽出する。ここでは、録画機能を示す情報処理装置種別IDを有する情報処理装置1001および1002が候補装置として特定され、情報処理装置1003および1004は候補装置から除外される。
次に、マスター装置である情報処理装置1001内の情報処理コントローラ1011に含まれるメインプロセッサ1021−1は、装置情報テーブルを参照して、情報処理装置1001および1002のメインプロセッサまたはサブプロセッサの処理能力、メインメモリに関する情報などの、装置に関する情報を読み出し、情報処理装置1001および1002が録画予約コマンドに対応する機能プログラムの実行に必要な要求スペックを満足するか否かを判断する。ここでは、情報処理装置1001,1002とも、録画予約コマンドに対応する機能プログラムの実行に必要な要求スペックを満足するものとする。
さらに、メインプロセッサ1021−1は、装置情報テーブルを参照して、情報処理装置1001および1002の外部記録部に関する情報を読み出し、外部記録部の空き容量が当該録画予約コマンドの実行に必要な容量を満足するか否かを判断する。情報処理装置1001および1002はハードディスクレコーダであるので、それぞれハードディスク1031−1および1031−3の、総容量と使用量との差分が、それぞれの空き容量に相当する。
この場合、情報処理装置1001のハードディスク1031−1の空き容量が、録画時間に換算して10分であり、情報処理装置1002のハードディスク1031−3の空き容量が、録画時間に換算して20時間であるとする。
このとき、マスター装置である情報処理装置1001内の情報処理コントローラ1011に含まれるメインプロセッサ1021−1は、当該録画予約コマンドの実行に必要な2時間分の空き容量を確保できる情報処理装置を、実行要求先スレーブ装置として特定する。
その結果、情報処理装置1002のみが実行要求先スレーブ装置として選択され、マスター装置である情報処理装置1001内の情報処理コントローラ1011に含まれるメインプロセッサ1021−1は、ユーザにより操作された情報処理装置1003から送信された録画予約情報を含む当該録画予約コマンドを情報処理装置1002に送信して、上記2時間の放送番組の録画予約の実行を要求する。
そして、情報処理装置1002内の情報処理コントローラ1012に含まれるメインプロセッサ1021−2は、当該録画予約コマンドを解析して、録画に必要な機能プログラムを外部記録部であるハードディスク1031−3からメインメモリ1026−2にロードし、録画予約情報に従って録画を実行する。その結果、録画予約された2時間の放送番組の映像音声データが情報処理装置1002のハードディスク1031−3に記録される。
このように、図52の例のネットワークシステムにおいても、ユーザは、1台の情報処理装置のみを操作することによって、他の情報処理装置を操作することなく、複数の情報処理装置1001,1002,1003および1004を仮想的な1台の情報処理装置1007として動作させることができる。
[7.サブプロセッサの割り当てによる分散処理その2]
図50または図52のネットワークシステムにおける前述の例は、マスター装置である情報処理装置1001が機能プログラムを実行することができる情報処理装置を特定する際、当該機能プログラムの実行に必要な全ての要求スペックを満足する情報処理装置がネットワークシステム内に存在する場合であるが、このような情報処理装置が存在しない場合もあり得る。
図52の例では、マスター装置である情報処理装置1001は、録画予約コマンドに対応する機能プログラムを実行させる情報処理装置として、最終的に情報処理装置1002を特定したが、情報処理装置1002が当該機能プログラムの実行に必要な要求スペックを一部、満たしていないこともある。例えば、他の要求スペックは全て満たしているが、サブプロセッサ数が不足している場合である。そのような場合でも、情報処理装置1002は、上記のロードコマンドまたはキックコマンドを利用して他の情報処理装置内のサブプロセッサを利用することによって、当該機能プログラムを実行できる可能性がある。
そこで、マスター装置が機能プログラムを実行させる情報処理装置を特定する際、候補となる情報処理装置のサブプロセッサ処理能力を考慮しないで、当該機能プログラムを実行させる情報処理装置を特定する場合の例を示す。
この場合、機能プログラムには、図4に示した各情報として表される情報処理装置種別ID、メインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件などの、装置に関する要求スペックが規定されており、マスター装置が当該機能プログラムを実行させる情報処理装置を特定する際には、サブプロセッサ処理能力以外の要求スペックを満足する情報処理装置を特定するものとする。したがって当然、マスター装置によって特定されて機能プログラムの実行を要求された情報処理装置は、自装置内に当該機能プログラムの実行に必要なサブプロセッサ処理能力を確保できない場合がある。
以下に、分散処理の他の例として、このように機能プログラムの実行を要求された情報処理装置が、ネットワークシステムに含まれる他の情報処理装置内のサブプロセッサを利用する場合について示す。
(7−1.システム構成)
図59に、4台の情報処理装置1001,1002,1003および1004がネットワーク1009に接続されている状態を示す。
情報処理装置1001がマスター装置として、情報処理装置1002,1003および1004がスレーブ装置として、それぞれ動作し、マスター装置である情報処理装置1001が機能プログラムを実行させる情報処理装置として自装置を特定するものとする。
ネットワーク1009に接続されている各情報処理装置のソフトウェア構成としては、図17に示すように、制御プログラムとして、図6などに示したMSマネージャおよび能力交換プログラムのほかに、リソースマネージャを含むものとする。
リソースマネージャは、自装置内の各サブプロセッサを制御して、プログラムやデータの転送、プログラムの実行の開始や停止、プログラムの実行結果の受信などを行うものである。
さらに、リソースマネージャは、自装置内の各サブプロセッサの使用状況を把握して、他の情報処理装置からの問い合わせに対して応答し、または他の情報処理装置に対して、その他装置内の各サブプロセッサの使用状況を問い合わせる。
そのために、リソースマネージャには、図18に示すようなサブプロセッサ管理テーブルを用意する。
この例は、各情報処理装置内の情報処理コントローラが数個以上のサブプロセッサを備える場合で、サブプロセッサ管理テーブル中の情報処理装置IDは、自装置の情報処理装置IDであり、サブプロセッサIDは、自装置内の各サブプロセッサのサブプロセッサIDであり、サブプロセッサステータスは、各サブプロセッサの使用状況を示す。
サブプロセッサステータスとしては、上述したように、unused(現在使用されてなく、使用の予約もされていない状態)、reserved(現在は使用されていないが、使用が予約されている状態)、およびbusy(現在使用されている状態)がある。
後述のように、unusedを空いている状態とし、空いているか否か、すなわち、unusedであるか、reservedまたはbusyであるかを、空き状況とする。
サブプロセッサプログラムIDは、当該のサブプロセッサで実行中の、または当該のサブプロセッサに実行予約中のサブプロセッサプログラムを識別する識別子であり、機能プログラムIDは、上段のサブプロセッサプログラムIDで示されるサブプロセッサプログラムと連携動作する機能プログラムを識別する識別子である。
サブプロセッサプログラム優先度は、その実行中または実行予約中のサブプロセッサプログラムの優先度である。サブプロセッサプログラム優先度は、当該サブプロセッサプログラムと連携動作する機能プログラムの優先度に応じて、あらかじめ決定され、例えば、high(優先度が高い),middle(中位の優先度)およびlow(優先度が低い)の3段階に区分される。
ロックシーケンス番号は、後述のようにサブプロセッサを確保する際などに、リソースマネージャが発番し、サブプロセッサ管理テーブルに記述する。リソースマネージャは、機能プログラムから受信したサブプロセッサプログラムIDおよびロックシーケンス番号が、このサブプロセッサ管理テーブルに記述されたそれらと一致するときにのみ、そのサブプロセッサの使用を許可する。
(7−2.サブプロセッサ割り当て処理)
上述したように、図59において、情報処理装置1001がマスター装置として、情報処理装置1002,1003および1004がスレーブ装置として、それぞれ動作し、マスター装置としての情報処理装置1001が機能プログラムを実行させる情報処理装置として自装置を特定したものとする。
そして、情報処理装置1001が、自装置のメインメモリ1026−1内の機能プログラムと連携動作するサブプロセッサプログラムの実行用に、自装置内または他の情報処理装置1002,1003および1004内にサブプロセッサを確保する場合の、情報処理装置1001のメインメモリ1026−1内の機能プログラム、情報処理装置1001内のリソースマネージャ、および他の情報処理装置1002,1003および1004内のリソースマネージャによって実行されるサブプロセッサ割り当て処理の一例を、図60〜図68を用いて示す。
まず、図60に示すように、情報処理装置1001のメインメモリ1026−1内の機能プログラムは、ステップ1111で、サブプロセッサプログラムの実行に必要なサブプロセッサ数を判断し、次にステップ1112で、自装置(情報処理装置1001)内のリソースマネージャに、当該の機能プログラムの機能プログラムIDと、当該機能プログラムと連携動作する全てのサブプロセッサプログラムのサブプロセッサプログラムIDおよびサブプロセッサプログラム優先度とを添えて、必要数(n個とする)のサブプロセッサの使用要求を出力する。
これに対して、情報処理装置1001内のリソースマネージャは、ステップ1113で、自装置(情報処理装置1001)の図18に示したサブプロセッサ管理テーブルを参照して、自装置内にn個のサブプロセッサの空きがあるか否かを判断し、n個以上のサブプロセッサが空いている場合には、ステップ1113からステップ1114に進んで、自装置内にn個のサブプロセッサを確保するとともに、その確保した各サブプロセッサにつき、サブプロセッサ管理テーブル内のサブプロセッサステータスを、unusedからreservedに書き替え、サブプロセッサプログラムID、機能プログラムIDおよびサブプロセッサプログラム優先度を、確保したサブプロセッサで実行されるサブプロセッサプログラムと一致するように書き替え、ロックシーケンス番号を発番して、サブプロセッサ管理テーブルに記述する。
さらに、情報処理装置1001内のリソースマネージャは、ステップ1115に進んで、当該の機能プログラムに、自装置内にn個のサブプロセッサを確保したことと、確保したn個のサブプロセッサのサブプロセッサID、サブプロセッサプログラムID、およびロックシーケンス番号とを通知する。
図61に示すように、当該の機能プログラムは、ステップ1117で、この通知を受信して、自装置(情報処理装置1001)内のリソースマネージャに、自身の機能プログラムIDと共に、確保した各サブプロセッサに対するサブプロセッサID、サブプロセッサプログラムID、サブプロセッサプログラム本体およびロックシーケンス番号を、確保したサブプロセッサ数の分だけ送信する。
情報処理装置1001内のリソースマネージャは、ステップ1121で、これらを受信して、各サブプロセッサに対するサブプロセッサプログラムを保存し、さらにステップ1122に進んで、受信したサブプロセッサプログラムIDおよびロックシーケンス番号が自装置のサブプロセッサ管理テーブル内のそれらと同じであるか否かを判断し、同じであるときには、ステップ1123に進んで、確保した各サブプロセッサにサブプロセッサプログラムを送信し、さらにステップ1124に進んで、当該の機能プログラムに、各サブプロセッサにサブプロセッサプログラムを送信したことを通知する。
以上によって、情報処理装置1001内の空いているサブプロセッサだけで必要数のサブプロセッサを確保できる場合の、サブプロセッサ割り当て処理を終了する。
確保された各サブプロセッサで処理されるべきデータは、サブプロセッサプログラムの送信と同時に、またはサブプロセッサプログラムの送信後、確保された各サブプロセッサに送信される。これによって、確保された各サブプロセッサでサブプロセッサプログラムを実行することができる。
情報処理装置1001内のリソースマネージャは、ステップ1122で、当該の機能プログラムから受信したサブプロセッサプログラムIDまたはロックシーケンス番号が自装置のサブプロセッサ管理テーブル内のそれらと異なると判断した場合には、ステップ1122からステップ1126に進んで、当該の機能プログラムにエラーを通知する。
この場合には、当該の機能プログラムは、ステップ1127で、エラー処理を実行する。このエラー処理は、具体的には、再度、ステップ1112からサブプロセッサ割り当て処理を実行するなどである。
一方、情報処理装置1001内のリソースマネージャは、図60のステップ1113で、自装置内にn個のサブプロセッサの空きがないと判断した場合、すなわち情報処理装置1001内に空いているサブプロセッサが(n−1)個以下しかない(1個もない場合を含む)と判断した場合には、図62に示すように、ステップ1113からステップ1131に進んで、ネットワーク上に他の情報処理装置が接続されているか否かを判断する。図59は、他の情報処理装置1002,1003および1004が接続されている場合である。
そして、ネットワーク上に他の情報処理装置が接続されている場合には、情報処理装置1001内のリソースマネージャは、ステップ1131からステップ1132に進んで、その中の1個である他の情報処理装置(この場合は情報処理装置1002)内のリソースマネージャに、サブプロセッサの空き状況を問い合わせる。
この問い合わせは、図28(A)に示すようなサブプロセッサ空き状況問い合わせコマンドによって行う。具体的に、このサブプロセッサ空き状況問い合わせコマンドは、送信元ID(この場合は情報処理装置1001の情報処理装置ID)、送信先ID(この場合は情報処理装置1002の情報処理装置ID)および応答先ID(この場合は情報処理装置1001の情報処理装置ID)を有し、DMAコマンドとして、サブプロセッサ空き状況問い合わせコマンド本体および機能プログラムIDを含むものとする。
図62に示すように、この問い合わせに対して、当該他の情報処理装置(この場合は情報処理装置1002)内のリソースマネージャは、ステップ1133で、自装置内のサブプロセッサ管理テーブルから、自装置内のサブプロセッサの空き状況を判断し、さらにステップ1135に進んで、自装置内に空いているサブプロセッサがある場合には、その数およびサブプロセッサIDを、空いているサブプロセッサがない場合には、その旨を、情報処理装置1001内のリソースマネージャに通知する。
この通知は、図28(B)に示すようなサブプロセッサ空き状況返信コマンドによって行う。具体的に、このサブプロセッサ空き状況返信コマンドは、送信元ID(この場合は情報処理装置1002の情報処理装置ID)、送信先ID(この場合は情報処理装置1001の情報処理装置ID)および応答先ID(この場合は情報処理装置1001の情報処理装置ID)を有し、DMAコマンドとして、サブプロセッサ空き状況返信コマンド本体、機能プログラムID、空いているサブプロセッサの数、および空いている各サブプロセッサのサブプロセッサIDを含むものとする。
この通知を受けて、情報処理装置1001内のリソースマネージャは、図63に示すように、ステップ1136で、自装置(情報処理装置1001)分と他装置(情報処理装置1002)分とを合わせてトータルで、n個のサブプロセッサを確保できるか否かを判断する。
例えば、nが8,9または10というような数である場合に、情報処理装置1001内で1個のサブプロセッサしか確保できず、情報処理装置1002内で(n−2)個のサブプロセッサしか確保できない場合には、トータルでn個のサブプロセッサを確保できないことになる。
このようにトータルでn個のサブプロセッサを確保できない場合には、情報処理装置1001内のリソースマネージャは、図62に示すように、ステップ1136からステップ1131に進んで(戻って)、さらにネットワーク上に他の情報処理装置が接続されているか否かを判断する。図59は、他の情報処理装置1003および1004が接続されている場合である。
以下、情報処理装置1002の場合と同様に、ネットワークシステム全体でn個のサブプロセッサを確保できるまで、または、それ以上、ネットワーク上に情報処理装置が接続されていないことが検出されるまで、ステップ1132,1133,1135,1136および1131の処理を繰り返す。
情報処理装置1001以外にネットワーク上に複数個の情報処理装置が接続されている場合に情報処理装置1001内のリソースマネージャがサブプロセッサの空き状況を問い合わせる順番については、例えば、上述したマスター装置の決定方法のように、ネットワーク上の各情報処理装置の情報処理装置IDを数値に置き換え、当該数値が小さい情報処理装置順にサブプロセッサの空き状況を問い合わせることが考えられる。
そして、ネットワークシステム全体で、空いているサブプロセッサによってn個のサブプロセッサを確保できる場合には、情報処理装置1001内のリソースマネージャは、図63に示すように、ステップ1136からステップ1137に進んで、当該の機能プログラムに、n個のサブプロセッサを確保できることを通知する。
当該の機能プログラムは、ステップ1138で、この通知を受信し、後述のように自装置(情報処理装置1001)内のリソースマネージャにサブプロセッサ確保要求を出力する。
一方、情報処理装置1001内のリソースマネージャは、図62のステップ1131で、それ以上、ネットワーク上に情報処理装置が接続されていないと判断した場合、すなわち、ネットワークシステム全体でも(情報処理装置1001のみがネットワーク上に存在する場合には情報処理装置1001内だけで)、空いているサブプロセッサによってn個のサブプロセッサを確保できないと判断した場合には、図63に示すように、ステップ1131からステップ1141に進んで、自装置(情報処理装置1001)内に当該の機能プログラムより優先度の低いサブプロセッサプログラムを実行中のサブプロセッサがあるか否か、および、ある場合には、その数を検出する。
この場合の「実行中」というのは、busy(現在使用されている状態)だけでなく、reserved(現在は使用されていないが、使用が予約されている状態)を含む。以下では、当該の機能プログラムより優先度の低いサブプロセッサプログラムを、単に「優先度の低いサブプロセッサプログラム」と称する。
さらに、情報処理装置1001内のリソースマネージャは、ステップ1143に進んで、ネットワークシステム全体の空いているサブプロセッサと、自装置(情報処理装置1001)内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせて、n個のサブプロセッサを確保できるか否かを判断し、確保できる場合には、ステップ1143からステップ1144に進んで、当該の機能プログラムに、n個のサブプロセッサを確保できることを通知する。
当該の機能プログラムは、ステップ1138で、この通知を受信し、後述のように自装置(情報処理装置1001)内のリソースマネージャにサブプロセッサ確保要求を出力する。
一方、情報処理装置1001内のリソースマネージャは、ステップ1143で、ネットワークシステム全体の空いているサブプロセッサと、自装置内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせても、n個のサブプロセッサを確保できないと判断した場合には、図64に示すように、ステップ1143からステップ1151に進んで、ネットワーク上に他の情報処理装置が接続されているか否かを判断する。
そして、ネットワーク上に他の情報処理装置が接続されている場合には、情報処理装置1001内のリソースマネージャは、ステップ1151からステップ1152に進んで、当該他の情報処理装置(この場合は情報処理装置1002)内のリソースマネージャに、優先度の低いサブプロセッサプログラムを実行中のサブプロセッサの有無および数を問い合わせる。この場合の「実行中」というのも、busyだけでなく、reservedを含む。
この問い合わせは、図28(A)に示したようなサブプロセッサ空き状況問い合わせコマンドに、当該の機能プログラムと連携動作するサブプロセッサプログラムのサブプロセッサプログラム優先度を含めたコマンドによって行う。
図64に示すように、この問い合わせに対して、当該他の情報処理装置(この場合は情報処理装置1002)内のリソースマネージャは、ステップ1153で、自装置内のサブプロセッサ管理テーブルから、自装置内に優先度の低いサブプロセッサプログラムを実行中のサブプロセッサがあるか否かを判断し、ある場合には、その数およびサブプロセッサIDを情報処理装置1001内のリソースマネージャに通知し、自装置内に優先度の低いサブプロセッサプログラムを実行中のサブプロセッサがない場合には、その旨を情報処理装置1001内のリソースマネージャに通知する。
この通知は、図28(B)に示したようなサブプロセッサ空き状況返信コマンドにおいて、空いているサブプロセッサの数およびサブプロセッサIDに代えて、優先度の低いサブプロセッサプログラムを実行中のサブプロセッサの数およびサブプロセッサIDを記述したコマンドによって行う。
この通知を受けて、情報処理装置1001内のリソースマネージャは、図64に示すように、ステップ1154で、ネットワークシステム全体の空いているサブプロセッサと、自装置(情報処理装置1001)内および他装置(この場合は情報処理装置1002)内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせて、n個のサブプロセッサを確保できるか否かを判断する。
例えば、n=7の場合に、ネットワークシステム全体で空いているサブプロセッサが2個しかなく、情報処理装置1001内に優先度の低いサブプロセッサプログラムを実行中のサブプロセッサが2個しかなく、情報処理装置1002内に優先度の低いサブプロセッサプログラムを実行中のサブプロセッサが2個しかない場合には、トータルでn個のサブプロセッサを確保できないことになる。
このようにトータルでn個のサブプロセッサを確保できない場合には、情報処理装置1001内のリソースマネージャは、ステップ1154からステップ1151に進んで(戻って)、さらにネットワーク上に他の情報処理装置が接続されているか否かを判断する。
以下、情報処理装置1002の場合と同様に、ネットワークシステム全体でn個のサブプロセッサを確保できるまで、または、それ以上、ネットワーク上に情報処理装置が接続されていないことが検出されるまで、ステップ1152,1153,1154および1151の処理を繰り返す。
そして、空いているサブプロセッサと優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせて、ネットワークシステム全体でn個のサブプロセッサを確保できる場合には、情報処理装置1001内のリソースマネージャは、ステップ1154からステップ1155に進んで、当該の機能プログラムに、n個のサブプロセッサを確保できることを通知する。
当該の機能プログラムは、ステップ1158で、この通知を受信し、以下のように自装置(情報処理装置1001)内のリソースマネージャにサブプロセッサ確保要求を出力する。
すなわち、当該の機能プログラムは、図63のステップ1138、または図64のステップ1158で、情報処理装置1001内のリソースマネージャから、n個のサブプロセッサを確保できる旨の通知を受信したら、図65に示すように、ステップ1161で、自装置(情報処理装置1001)内のリソースマネージャに、n個のサブプロセッサの確保要求を出力する。
図65に示すように、この確保要求に対して、情報処理装置1001内のリソースマネージャは、ステップ1162で、自装置(情報処理装置1001)内に確保すべき分がある場合には、その分のサブプロセッサを自装置内に確保し、さらにステップ1163に進んで、他の情報処理装置内に確保されるべき分があるか否かを判断し、他の情報処理装置内に確保されるべき分がない場合には、ステップ1163からステップ1164に進んで、当該の機能プログラムに、n個のサブプロセッサを確保したことを通知する。
情報処理装置1001内の空いているサブプロセッサだけではn個のサブプロセッサを確保できず、かつ情報処理装置1001以外にネットワーク上に接続されている情報処理装置が存在しないが、情報処理装置1001内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを含めると、n個のサブプロセッサを確保できる場合には、このように情報処理装置1001内だけでn個のサブプロセッサが確保されることになる。
この場合、情報処理装置1001内のリソースマネージャは、ステップ1162では、自装置内に確保した各サブプロセッサにつき、自装置のサブプロセッサ管理テーブル内のサブプロセッサステータスがunusedとなっているものについては、reservedに書き替え、サブプロセッサプログラムID、機能プログラムIDおよびサブプロセッサプログラム優先度を、確保したサブプロセッサで実行されるサブプロセッサプログラムと一致するように書き替えるとともに、ロックシーケンス番号を発番してサブプロセッサ管理テーブルに記述し、ステップ1164では、これら情報を、当該の機能プログラムに送信する。
具体的に、ステップ1164で送信される情報は、確保したサブプロセッサの数、確保した各サブプロセッサのサブプロセッサIDおよびロックシーケンス番号を含むものとする。
図65に示すように、当該の機能プログラムは、ステップ1167で、このサブプロセッサ確保通知を受信し、後述のように自装置(情報処理装置1001)内のリソースマネージャに各サブプロセッサに対するサブプロセッサプログラムを送信する。
なお、情報処理装置1001内のリソースマネージャは、ステップ1162で、自装置内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを、当該の機能プログラムと連携動作するサブプロセッサプログラムの実行用に確保した場合には、その優先度の低いサブプロセッサプログラムおよび当該サブプロセッサプログラムと連携動作する機能プログラムに対してサブプロセッサが奪われたことを通知する。
一方、確保されるべきn個のサブプロセッサに他の情報処理装置内に確保されるべき分がある場合には、情報処理装置1001内のリソースマネージャは、ステップ1163からステップ1171に進んで、他の情報処理装置1002,1003および1004内のリソースマネージャにサブプロセッサの確保を要求し、他の情報処理装置1002,1003および1004内のリソースマネージャは、ステップ1172で、それぞれ自装置内に自装置分のサブプロセッサを確保する。
他の情報処理装置に対するサブプロセッサの確保要求は、図29(A)に示すようなDMAコマンドがサブプロセッサ確保要求コマンドであるソフトウェアセルによって行う。具体的に、このサブプロセッサ確保要求コマンドは、DMAコマンドとして、サブプロセッサ確保要求コマンド本体、機能プログラムID、サブプロセッサプログラム優先度、確保要求サブプロセッサ数および確保要求サブプロセッサ数の分のサブプロセッサプログラムIDを含むものとする。
情報処理装置1001内の空いているサブプロセッサだけではn個のサブプロセッサを確保できないが、情報処理装置1001以外にもネットワーク上に情報処理装置が存在していて、ネットワークシステム全体で、空いているサブプロセッサだけで、または優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを含めると、n個のサブプロセッサを確保できる場合には、このように他の情報処理装置を含めたネットワークシステム全体でn個のサブプロセッサが確保されることになる。
この場合、他の情報処理装置1002,1003および1004内のリソースマネージャは、ステップ1172では、それぞれ自装置内に確保した各サブプロセッサにつき、自装置のサブプロセッサ管理テーブル内のサブプロセッサステータスがunusedとなっているものについては、reservedに書き替え、サブプロセッサプログラムID、機能プログラムIDおよびサブプロセッサプログラム優先度を、確保したサブプロセッサで実行されるサブプロセッサプログラムと一致するように書き替えるとともに、ロックシーケンス番号を発番してサブプロセッサ管理テーブルに記述する。
また、他の情報処理装置1002,1003および1004内のリソースマネージャは、ステップ1172で、自装置内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを、当該の機能プログラムと連携動作するサブプロセッサプログラムの実行用に確保した場合には、その優先度の低いサブプロセッサプログラムおよび当該サブプロセッサプログラムと連携動作する機能プログラムに対してサブプロセッサが奪われたことを通知する。
さらに、他の情報処理装置1002,1003および1004内のリソースマネージャは、図66に示すように、ステップ1173で、それぞれ自装置内に自装置分のサブプロセッサを確保したことを、情報処理装置1001内のリソースマネージャに通知する。
この通知には、図29(B)に示すようなDMAコマンドがサブプロセッサ確保返信コマンドであるソフトウェアセルを用いる。具体的に、このサブプロセッサ確保返信コマンドは、DMAコマンドとして、サブプロセッサ確保返信コマンド本体、機能プログラムID、サブプロセッサプログラム優先度、確保したサブプロセッサの数、確保した各サブプロセッサのサブプロセッサID、サブプロセッサプログラムIDおよびロックシーケンス番号を含むものとする。
図66に示すように、情報処理装置1001内のリソースマネージャは、他の情報処理装置1002,1003および1004内のリソースマネージャからのサブプロセッサ確保通知を受信したら、ステップ1174で、当該の機能プログラムに、n個のサブプロセッサを確保したことを通知する。
当該の機能プログラムは、ステップ1177で、このサブプロセッサ確保通知を受信し、自装置(情報処理装置1001)内のリソースマネージャに、各サブプロセッサに対するサブプロセッサプログラムを送信する。
すなわち、当該の機能プログラムは、図65のステップ1167、または図66のステップ1177で、情報処理装置1001内のリソースマネージャから、n個のサブプロセッサを確保した旨の通知を受信したら、図66に示すように、ステップ1181で、情報処理装置1001内のリソースマネージャに、確保された各サブプロセッサに対するサブプロセッサプログラムを、当該サブプロセッサプログラムに対応するサブプロセッサプログラムID、サブプロセッサID、ロックシーケンス番号およびサブプロセッサが確保された各情報処理装置の情報処理装置IDと共に送信する。
図66および図67に示すように、情報処理装置1001内のリソースマネージャは、ステップ1182で、当該の機能プログラムから送信されたサブプロセッサプログラムを受信して、自装置(情報処理装置1001)分のサブプロセッサプログラムがある場合には、それを自装置内の確保されたサブプロセッサに送信し、さらにステップ1183に進んで、他の情報処理装置分のサブプロセッサプログラムがあるか否かを判断し、他の情報処理装置分のサブプロセッサプログラムがない場合には、ステップ1183からステップ1184に進んで、当該の機能プログラムに、確保された各サブプロセッサにサブプロセッサプログラムを送信したことを通知する。
一方、当該の機能プログラムから送信されたサブプロセッサプログラムに他の情報処理装置分のサブプロセッサプログラムがある場合には、情報処理装置1001内のリソースマネージャは、ステップ1183からステップ1191に進んで、他の情報処理装置1002,1003および1004内のリソースマネージャに各情報処理装置分のサブプロセッサプログラムを送信する。
この送信には、図30に示すようなDMAコマンドがサブプロセッサプログラム送信コマンドであるソフトウェアセルを用いる。具体的に、このサブプロセッサプログラム送信コマンドは、DMAコマンドとして、サブプロセッサプログラム送信コマンド本体、確保された各サブプロセッサのサブプロセッサID、ロックシーケンス番号、確保された各サブプロセッサに対するサブプロセッサプログラムのサブプロセッサプログラムID、確保された各サブプロセッサに対するサブプロセッサプログラム本体を含むものとする。
他の情報処理装置1002,1003および1004内のリソースマネージャは、ステップ1192で、それぞれ自装置分のサブプロセッサプログラムを、自装置内の確保されたサブプロセッサに送信し、さらにステップ1193に進んで、情報処理装置1001内のリソースマネージャに、確保されたサブプロセッサにサブプロセッサプログラムを送信したことを通知する。この通知を受けて、情報処理装置1001内のリソースマネージャは、ステップ1184で、当該の機能プログラムに、確保された各サブプロセッサにサブプロセッサプログラムを送信したことを通知する。
なお、情報処理装置1001内のリソースマネージャ、および他の情報処理装置1002,1003および1004内のリソースマネージャは、図66のステップ1182、および図67のステップ1192では、当該の機能プログラムから受信した確保された各サブプロセッサに対するサブプロセッサプログラムのサブプロセッサプログラムID、およびロックシーケンス番号が、自装置のサブプロセッサ管理テーブル内のそれらと同じであるか否かを判断して、異なる場合には、情報処理装置1001内のリソースマネージャが直接、または他の情報処理装置1002,1003および1004内のリソースマネージャが情報処理装置1001内のリソースマネージャを介して、当該の機能プログラムにエラーを通知するが、図66および図67では、この点を省略して、エラーを生じない場合のみを示した。
図67に示すように、当該の機能プログラムは、ステップ1187で、情報処理装置1001内のリソースマネージャからの、確保された各サブプロセッサにサブプロセッサプログラムを送信した旨の通知を受信する。
これによって、情報処理装置1001内の空いているサブプロセッサだけではn個のサブプロセッサを確保できないが、情報処理装置1001内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを含めると、情報処理装置1001内だけでn個のサブプロセッサを確保できる場合、あるいは、情報処理装置1001内の空いているサブプロセッサだけではn個のサブプロセッサを確保できないが、情報処理装置1001以外にもネットワーク上に情報処理装置が存在していて、ネットワークシステム全体で、空いているサブプロセッサだけで、または優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを含めると、n個のサブプロセッサを確保できる場合の、サブプロセッサ割り当て処理を終了する。
確保された各サブプロセッサで処理されるべきデータは、サブプロセッサプログラムの送信と同時に、またはサブプロセッサプログラムの送信後、確保された各サブプロセッサに送信される。これによって、確保された各サブプロセッサでサブプロセッサプログラムを実行することができる。
一方、情報処理装置1001内のリソースマネージャは、図64のステップ1151で、ネットワーク上に他の情報処理装置が接続されていないと判断した場合、すなわち、ネットワークシステム全体の空いているサブプロセッサと優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせても、n個のサブプロセッサを確保できないと判断した場合には、図68に示すように、ステップ1151からステップ1195に進んで、当該の機能プログラムに、n個のサブプロセッサを確保できないことを通知する。
当該の機能プログラムは、ステップ1197で、この通知を受信し、エラー処理を実行する。この場合のエラー処理は、ユーザに対して直ちに処理を実行できない旨を通知して、時間を置いて再度、図60のステップ1112からサブプロセッサ割り当て処理を実行し、またはユーザが操作することをユーザに促すなどである。
なお、上述したように優先度の低いサブプロセッサプログラムに対してサブプロセッサが奪われたことが通知された場合には、当該のサブプロセッサプログラムにつき、それに対応する別の処理が実行される。
上述した例は、情報処理装置IDの置き換えられた数値の昇順に、すなわち情報処理装置1001→情報処理装置1002→情報処理装置1003→情報処理装置1004の順に、サブプロセッサの空き状況を問い合わせ、サブプロセッサの確保を要求する場合であるが、例えば、各情報処理装置内のリソースマネージャは、実行されるべきサブプロセッサプログラムの優先度が高い場合には、上述した装置情報の一部であるメインプロセッサ動作周波数により、ネットワーク1009上に接続されている各情報処理装置の動作周波数を判断して、動作周波数が高い情報処理装置から順に、サブプロセッサの空き状況を問い合わせ、サブプロセッサの確保を要求するように、システムを構成してもよい。
あるいはまた、装置情報の一部である情報処理装置種別IDにより、ネットワーク1009上に接続されている各情報処理装置の種別を判断することによって、ハードディスクレコーダのようにネットワーク1009から切断される可能性が低い情報処理装置から、PDAやポータブルCDプレーヤのようにネットワーク1009から切断される可能性が高い情報処理装置への順に、サブプロセッサの空き状況を問い合わせ、サブプロセッサの確保を要求するように、システムを構成してもよい。
また、上述した例は、情報処理装置1001内の空いているサブプロセッサだけでは必要数のサブプロセッサを確保できない場合、情報処理装置1001内のリソースマネージャから、他の情報処理装置内のリソースマネージャに対して、まずサブプロセッサの空き状況を問い合わせ、その結果、ネットワークシステム全体で必要数のサブプロセッサを確保できる場合には、改めてサブプロセッサの確保を要求する場合であるが、サブプロセッサの空き状況を問い合わせることなく、情報処理装置1001内のリソースマネージャから、他の情報処理装置内のリソースマネージャに対して、サブプロセッサの確保を要求するように、システムを構成してもよい。
さらに、上述した例は、情報処理装置1001がマスター装置として動作していて、そのマスター装置を起点としてサブプロセッサ割り当て処理を実行する場合であるが、例えば、スレーブ装置として動作している情報処理装置がユーザによって操作された場合に、その操作されたスレーブ装置を起点としてサブプロセッサ割り当て処理を実行するように、システムを構成することもできる。
[8.情報処理装置がネットワークから切断された場合のサブプロセッサの割り当てによる分散処理その2]
図59のように複数の情報処理装置1001,1002,1003および1004がネットワーク1009に接続されている状態で、ユーザが誤って、ある情報処理装置をネットワーク1009から切断した場合(情報処理装置を物理的にネットワーク1009から切り離した場合、または情報処理装置の主電源を遮断した場合)、または、強い震動などの外的要因によって、ある情報処理装置がネットワーク1009から切断された場合、その切断された情報処理装置内のサブプロセッサが、切断されていない情報処理装置が有するサブプロセッサプログラムの実行中または実行予約中であったときには、切断された情報処理装置内のサブプロセッサに代わって、切断されていない情報処理装置内のサブプロセッサが、そのサブプロセッサプログラムを実行することが望ましい。
そこで、このような場合には、以下のように、切断された情報処理装置内のサブプロセッサが実行中または実行予約中であったサブプロセッサプログラムの実行用に、切断されていない情報処理装置内のサブプロセッサを割り当てる。
(8−1.システム構成)
図69に、図59のように4台の情報処理装置1001,1002,1003および1004がネットワーク1009に接続されている状態で、情報処理装置1004がネットワーク1009から切断された場合を示す。
各情報処理装置のソフトウェア構成としては、図17に示したように、制御プログラムとしてリソースマネージャを含むものとし、そのリソースマネージャには、図18に示したようなサブプロセッサ管理テーブルを用意する。サブプロセッサ管理テーブルの内容は、上述したとおりである。
(8−2.サブプロセッサ割り当て処理)
図70〜図78に、図69のように情報処理装置1001,1002,1003および1004がネットワーク1009に接続されている状態で、情報処理装置1004がネットワーク1009から切断された場合に、情報処理装置1001が、自装置のメインメモリ1026−1内の機能プログラムと連携動作するサブプロセッサプログラムの実行用に、情報処理装置1001内または他の情報処理装置1002,1003内にサブプロセッサを確保する場合の、情報処理装置1001内のMS(マスター/スレーブ)マネージャ、情報処理装置1001のメインメモリ1026−1内の機能プログラム、情報処理装置1001内のリソースマネージャ、および他の情報処理装置1002および1003内のリソースマネージャによって実行されるサブプロセッサ割り当て処理の一例を示す。
情報処理装置1004がネットワーク1009から切断されたことは、情報処理装置1001,1002および1003内のMSマネージャによって検出される。
そして、情報処理装置1001内のMSマネージャは、情報処理装置1004がネットワーク1009から切断されたことを検出したら、図70に示すように、ステップ1201で、自装置(情報処理装置1001)内のリソースマネージャに、切断された情報処理装置1004の情報処理装置IDを通知し、情報処理装置1001内のリソースマネージャは、ステップ1202で、自装置のメインメモリ1026−1内の機能プログラムに、その情報処理装置IDを転送する。
これを受けて、情報処理装置1001のメインメモリ1026−1内の機能プログラムは、ステップ1203で、図28〜図30および図60〜図68に示して上述したようなサブプロセッサ割り当て処理の結果から、切断された情報処理装置1004内のサブプロセッサが、自身(当該の機能プログラム)と連携動作するサブプロセッサプログラムを実行中であったか否かを判断する。
この場合の「実行中」というのも、busy(現在使用されている状態)だけでなく、reserved(現在は使用されていないが、使用が予約されている状態)を含む。
そして、切断された情報処理装置1004内の全てのサブプロセッサが、当該の機能プログラムと連携動作するサブプロセッサプログラムを実行中でなかった場合には、以後の処理は不要であるので、そのままサブプロセッサ割り当て処理を終了する。
一方、切断された情報処理装置1004内の一部または全部のサブプロセッサが、当該の機能プログラムと連携動作するサブプロセッサプログラムを実行中であった場合には、当該の機能プログラムは、ステップ1203からステップ1212に進んで、自装置(情報処理装置1001)内のリソースマネージャに、当該の機能プログラムの機能プログラムIDおよび当該機能プログラムと連携動作する、切断された情報処理装置1004内のサブプロセッサにより実行中(上記のように実行予約中を含む)のサブプロセッサプログラムのサブプロセッサプログラムIDを添えて、切断された情報処理装置1004内のサブプロセッサに代わって当該の機能プログラムと連携動作するサブプロセッサプログラムを実行するのに必要な数(m個とする)のサブプロセッサの使用要求を出力する。
これに対して、情報処理装置1001内のリソースマネージャは、図71に示すように、ステップ1213で、自装置(情報処理装置1001)の図18に示したサブプロセッサ管理テーブルを参照して、自装置内にm個のサブプロセッサの空きがあるか否かを判断し、m個以上のサブプロセッサが空いている場合には、ステップ1213からステップ1214に進んで、自装置内にm個のサブプロセッサを確保するとともに、その確保した各サブプロセッサにつき、サブプロセッサ管理テーブル内のサブプロセッサステータスを、unusedからreservedに書き替え、サブプロセッサプログラムID、機能プログラムIDおよびサブプロセッサプログラム優先度を、確保したサブプロセッサで実行されるサブプロセッサプログラムと一致するように書き替え、ロックシーケンス番号を発番して、サブプロセッサ管理テーブルに記述する。
さらに、情報処理装置1001内のリソースマネージャは、ステップ1215に進んで、当該の機能プログラムに、自装置内にm個のサブプロセッサを確保したことと、確保したm個のサブプロセッサのサブプロセッサIDおよびロックシーケンス番号とを通知する。
当該の機能プログラムは、ステップ1217で、この通知を受信して、自装置(情報処理装置1001)内のリソースマネージャに、自身の機能プログラムIDと共に、確保された各サブプロセッサに対するサブプロセッサID、サブプロセッサプログラムID、サブプロセッサプログラム本体およびロックシーケンス番号を、確保したサブプロセッサ数の分だけ送信する。
図72に示すように、情報処理装置1001内のリソースマネージャは、ステップ1221で、これらを受信して、各サブプロセッサに対するサブプロセッサプログラムを保存し、さらにステップ1222に進んで、受信したサブプロセッサプログラムIDおよびロックシーケンス番号が自装置のサブプロセッサ管理テーブル内のそれらと同じであるか否かを判断し、同じであるときには、ステップ1223に進んで、確保した各サブプロセッサにサブプロセッサプログラムを送信し、さらにステップ1224に進んで、当該の機能プログラムに、各サブプロセッサにサブプロセッサプログラムを送信したことを通知する。
以上によって、情報処理装置1001内の空いているサブプロセッサだけで必要数のサブプロセッサを確保できる場合の、サブプロセッサ割り当て処理を終了する。
確保された各サブプロセッサで処理されるべきデータは、サブプロセッサプログラムの送信と同時に、またはサブプロセッサプログラムの送信後、確保された各サブプロセッサに送信される。これによって、確保された各サブプロセッサでサブプロセッサプログラムを実行することができる。
情報処理装置1001内のリソースマネージャは、ステップ1222で、当該の機能プログラムから受信したサブプロセッサプログラムIDまたはロックシーケンス番号が自装置のサブプロセッサ管理テーブル内のそれらと異なると判断した場合には、ステップ1222からステップ1226に進んで、当該の機能プログラムにエラーを通知する。この場合には、当該の機能プログラムは、ステップ1227で、エラー処理を実行する。
一方、情報処理装置1001内のリソースマネージャは、図71のステップ1213で、自装置内にm個のサブプロセッサの空きがないと判断した場合、すなわち情報処理装置1001内に空いているサブプロセッサが(m−1)個以下しかない(1個もない場合を含む)と判断した場合には、図73に示すように、ステップ1213からステップ1229に進んで、自装置内に空いているサブプロセッサがある場合には、そのサブプロセッサを自装置分として確保する。
情報処理装置1001内のリソースマネージャは、さらにステップ1231に進んで、ネットワーク上に他の情報処理装置が接続されているか否かを判断する。図69は、他の情報処理装置1002および1003が接続されている場合である。
そして、ネットワーク上に他の情報処理装置が接続されている場合には、情報処理装置1001内のリソースマネージャは、ステップ1231からステップ1232に進んで、その中の1個である他の情報処理装置(この場合は情報処理装置1002)内のリソースマネージャに、空いているサブプロセッサの確保を要求する。
この確保要求は、図29(A)に示したようなサブプロセッサ確保要求コマンドによって行い、その確保要求サブプロセッサ数は、(m−a)とする。aは、ステップ1229で情報処理装置1001内に確保されたサブプロセッサ数で、0≦a<mである。
図73に示すように、この確保要求に対して、他の情報処理装置(この場合は情報処理装置1002)内のリソースマネージャは、ステップ1233で、自装置内のサブプロセッサ管理テーブルから、自装置内のサブプロセッサの空き状況を判断し、次にステップ1234に進んで、自装置内に空いているサブプロセッサがある場合には、最大(m−a)個の範囲で自装置内にサブプロセッサを確保し、さらにステップ1235に進んで、自装置内でサブプロセッサを確保した場合には、その数および確保した各サブプロセッサのサブプロセッサID、サブプロセッサプログラムIDおよびロックシーケンス番号を情報処理装置1001内のリソースマネージャに通知し、自装置内でサブプロセッサを確保できない場合には、その旨を情報処理装置1001内のリソースマネージャに通知する。この通知は、図29(B)に示したようなサブプロセッサ確保返信コマンドによって行う。
この通知を受けて、情報処理装置1001内のリソースマネージャは、図74に示すように、ステップ1236で、自装置(情報処理装置1001)分と他装置(情報処理装置1002)分とを合わせてトータルで、m個のサブプロセッサを確保できたか否かを判断する。
そして、トータルでm個のサブプロセッサを確保できなかった場合には、情報処理装置1001内のリソースマネージャは、図73に示すように、ステップ1236からステップ1231に進んで(戻って)、さらにネットワーク上に他の情報処理装置が接続されているか否かを判断する。図69は、情報処理装置1002以外に他の情報処理装置1003が接続されている場合である。
以下、情報処理装置1002の場合と同様に、ネットワークシステム全体でm個のサブプロセッサを確保できるまで、または、それ以上、ネットワーク上に情報処理装置が接続されていないことが検出されるまで、ステップ1232,1233,1234,1235,1236および1231の処理を繰り返す。
そして、ネットワークシステム全体で、空いているサブプロセッサによってm個のサブプロセッサを確保できた場合には、情報処理装置1001内のリソースマネージャは、図74に示すように、ステップ1236からステップ1237に進んで、当該の機能プログラムに、m個のサブプロセッサを確保したことを通知する。
当該の機能プログラムは、ステップ1238で、このサブプロセッサ確保通知を受信し、後述のように自装置(情報処理装置1001)内のリソースマネージャに各サブプロセッサに対するサブプロセッサプログラムを送信する。
一方、情報処理装置1001内のリソースマネージャは、図73のステップ1231で、それ以上、ネットワーク上に情報処理装置が接続されていないと判断した場合、すなわち、ネットワークシステム全体でも(情報処理装置1001のみがネットワーク上に存在する場合には情報処理装置1001内だけで)、空いているサブプロセッサによってm個のサブプロセッサを確保できないと判断した場合には、図74に示すように、ステップ1231からステップ1241に進んで、自装置(情報処理装置1001)内に当該の機能プログラムより優先度の低いサブプロセッサプログラムを実行中のサブプロセッサがあるか否か、および、ある場合には、その数を検出する。
この場合の「実行中」というのも、busy(現在使用されている状態)だけでなく、reserved(現在は使用されていないが、使用が予約されている状態)を含む。以下でも、当該の機能プログラムより優先度の低いサブプロセッサプログラムを、単に「優先度の低いサブプロセッサプログラム」と称する。
次に、情報処理装置1001内のリソースマネージャは、ステップ1242に進んで、自装置内に優先度の低いサブプロセッサプログラムを実行中のサブプロセッサがある場合には、ネットワークシステム全体の空いているサブプロセッサと合わせてm個のサブプロセッサを確保できる範囲で、その優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを確保するとともに、その優先度の低いサブプロセッサプログラムに対してサブプロセッサが奪われたことを通知する。
さらに、情報処理装置1001内のリソースマネージャは、図75に示すように、ステップ1243に進んで、ネットワークシステム全体の空いているサブプロセッサと、自装置(情報処理装置1001)内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせて、m個のサブプロセッサを確保できたか否かを判断し、確保できた場合には、ステップ1243からステップ1244に進んで、当該の機能プログラムに、m個のサブプロセッサを確保したことを通知する。
当該の機能プログラムは、ステップ1248で、このサブプロセッサ確保通知を受信し、後述のように自装置(情報処理装置1001)内のリソースマネージャに各サブプロセッサに対するサブプロセッサプログラムを送信する。
一方、情報処理装置1001内のリソースマネージャは、ステップ1243で、ネットワークシステム全体の空いているサブプロセッサと、自装置内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせても、m個のサブプロセッサを確保できないと判断した場合には、ステップ1243からステップ1251に進んで、ネットワーク上に他の情報処理装置が接続されているか否かを判断する。
そして、ネットワーク上に他の情報処理装置が接続されている場合には、情報処理装置1001内のリソースマネージャは、ステップ1251からステップ1252に進んで、当該他の情報処理装置(この場合は情報処理装置1002)内のリソースマネージャに、優先度の低いサブプロセッサプログラムを実行中のサブプロセッサの確保を要求する。この確保要求は、図29(A)に示したようなサブプロセッサ確保要求コマンドによって行う。
図76に示すように、この確保要求に対して、他の情報処理装置(この場合は情報処理装置1002)内のリソースマネージャは、ステップ1253で、自装置内のサブプロセッサ管理テーブルから、自装置内に優先度の低いサブプロセッサプログラムを実行中のサブプロセッサがあるか否かを判断し、ある場合には、その優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを確保して、その数および確保した各サブプロセッサのサブプロセッサID、サブプロセッサプログラムIDおよび発番したロックシーケンス番号を情報処理装置1001内のリソースマネージャに通知し、自装置内に優先度の低いサブプロセッサプログラムを実行中のサブプロセッサがない場合には、その旨を情報処理装置1001内のリソースマネージャに通知する。この通知は、図29(B)に示したようなサブプロセッサ確保返信コマンドによって行う。
なお、他の情報処理装置(この場合は情報処理装置1002)内のリソースマネージャは、ステップ1253で、自装置内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを確保した場合には、その優先度の低いサブプロセッサプログラムおよび当該サブプロセッサプログラムと連携動作する機能プログラムに対してサブプロセッサが奪われたことを通知する。
他の情報処理装置(この場合は情報処理装置1002)内のリソースマネージャからの確保通知を受けて、情報処理装置1001内のリソースマネージャは、図76に示すように、ステップ1254で、ネットワークシステム全体の空いているサブプロセッサと、自装置(情報処理装置1001)内および他装置(情報処理装置1002)内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせて、m個のサブプロセッサを確保できたか否かを判断し、確保できない場合には、図75に示すように、ステップ1254からステップ1251に進んで(戻って)、さらにネットワーク上に他の情報処理装置が接続されているか否かを判断する。
以下、情報処理装置1002の場合と同様に、ネットワークシステム全体でm個のサブプロセッサを確保できるまで、または、それ以上、ネットワーク上に情報処理装置が接続されていないことが検出されるまで、ステップ1252,1253,1254および1251の処理を繰り返す。
そして、空いているサブプロセッサと優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせて、ネットワークシステム全体でm個のサブプロセッサを確保できた場合には、情報処理装置1001内のリソースマネージャは、ステップ1254からステップ1255に進んで、当該の機能プログラムに、m個のサブプロセッサを確保したことを通知する。
当該の機能プログラムは、ステップ1258で、このサブプロセッサ確保通知を受信し、以下のように自装置(情報処理装置1001)内のリソースマネージャに各サブプロセッサに対するサブプロセッサプログラムを送信する。
すなわち、当該の機能プログラムは、図74のステップ1238、図75のステップ1248、または図76のステップ1258で、情報処理装置1001内のリソースマネージャから、m個のサブプロセッサを確保した旨の通知を受信したら、図77に示すように、ステップ1281で、情報処理装置1001内のリソースマネージャに、確保された各サブプロセッサに対するサブプロセッサプログラムを送信する。
図77に示すように、情報処理装置1001内のリソースマネージャは、ステップ1282で、当該の機能プログラムから送信されたサブプロセッサプログラムを受信して、自装置(情報処理装置1001)分のサブプロセッサプログラムがある場合には、それを自装置内の確保されたサブプロセッサに送信し、さらにステップ1283に進んで、他の情報処理装置分のサブプロセッサプログラムがあるか否かを判断し、他の情報処理装置分のサブプロセッサプログラムがない場合には、ステップ1283からステップ1284に進んで、当該の機能プログラムに、確保された各サブプロセッサにサブプロセッサプログラムを送信したことを通知する。
一方、当該の機能プログラムから送信されたサブプロセッサプログラムに他の情報処理装置分のサブプロセッサプログラムがある場合には、情報処理装置1001内のリソースマネージャは、ステップ1283からステップ1291に進んで、他の情報処理装置1002,1003のリソースマネージャに各情報処理装置分のサブプロセッサプログラムを送信する。
他の情報処理装置1002,1003のリソースマネージャは、ステップ1292で、それぞれ自装置分のサブプロセッサプログラムを、自装置内の確保されたサブプロセッサに送信し、さらにステップ1293に進んで、情報処理装置1001内のリソースマネージャに、確保されたサブプロセッサにサブプロセッサプログラムを送信したことを通知する。この通知を受けて、情報処理装置1001内のリソースマネージャは、ステップ1284で、当該の機能プログラムに、確保された各サブプロセッサにサブプロセッサプログラムを送信したことを通知する。
なお、情報処理装置1001内のリソースマネージャ、および他の情報処理装置1002,1003内のリソースマネージャは、図73のステップ1229,1234、図74のステップ1242、または図76のステップ1253で、自装置内にサブプロセッサを確保した場合には、その確保したサブプロセッサにつき、自装置内のサブプロセッサ管理テーブルを書き替えるとともに、情報処理装置1001,1002または1003内のリソースマネージャが発番したロックシーケンス番号をサブプロセッサ管理テーブルに記述し、図77のステップ1282および1292では、当該の機能プログラムから受信したサブプロセッサプログラムIDおよびロックシーケンス番号が自装置のサブプロセッサ管理テーブル内のそれらと同じであるか否かを判断して、異なる場合には、情報処理装置1001内のリソースマネージャが直接、または他の情報処理装置1002,1003内のリソースマネージャが情報処理装置1001内のリソースマネージャを介して、当該の機能プログラムにエラーを通知するが、図74〜図77では、この点を省略して、エラーを生じない場合のみを示した。
図77に示すように、当該の機能プログラムは、ステップ1287で、情報処理装置1001内のリソースマネージャからの、確保された各サブプロセッサにサブプロセッサプログラムを送信した旨の通知を受信する。
これによって、情報処理装置1001内の空いているサブプロセッサだけではm個のサブプロセッサを確保できないが、情報処理装置1001内の優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを含めると、情報処理装置1001内だけでm個のサブプロセッサを確保できる場合、あるいは、情報処理装置1001内の空いているサブプロセッサだけではm個のサブプロセッサを確保できないが、情報処理装置1001以外にもネットワーク上に情報処理装置が存在していて、ネットワークシステム全体で、空いているサブプロセッサだけで、または優先度の低いサブプロセッサプログラムを実行中のサブプロセッサを含めると、m個のサブプロセッサを確保できる場合の、サブプロセッサ割り当て処理を終了する。
確保された各サブプロセッサで処理されるべきデータは、サブプロセッサプログラムの送信と同時に、またはサブプロセッサプログラムの送信後、確保された各サブプロセッサに送信される。これによって、確保された各サブプロセッサでサブプロセッサプログラムを実行することができる。
一方、情報処理装置1001内のリソースマネージャは、図75のステップ1251で、ネットワーク上に他の情報処理装置が接続されていないと判断した場合、すなわち、ネットワークシステム全体の空いているサブプロセッサと優先度の低いサブプロセッサプログラムを実行中のサブプロセッサとを合わせても、m個のサブプロセッサを確保できないと判断した場合には、図78に示すように、ステップ1251からステップ1295に進んで、当該の機能プログラムに、m個のサブプロセッサを確保できないことを通知する。当該の機能プログラムは、ステップ1297で、この通知を受信し、エラー処理を実行する。
上述した例は、情報処理装置IDの置き換えられた数値の昇順に、すなわち情報処理装置1001→情報処理装置1002→情報処理装置1003の順に、サブプロセッサの確保を要求する場合であるが、例えば、各情報処理装置内のリソースマネージャは、実行されるべきサブプロセッサプログラムの優先度が高い場合には、上述した装置情報の一部であるメインプロセッサ動作周波数により、ネットワーク1009上に接続されている各情報処理装置の動作周波数を判断して、動作周波数が高い情報処理装置から順に、サブプロセッサの確保を要求するように、システムを構成してもよい。
あるいはまた、装置情報の一部である情報処理装置種別IDにより、ネットワーク1009上に接続されている各情報処理装置の種別を判断することによって、ハードディスクレコーダのようにネットワーク1009から切断される可能性が低い情報処理装置から、PDAやポータブルCDプレーヤのようにネットワーク1009から切断される可能性が高い情報処理装置への順に、サブプロセッサの確保を要求するように、システムを構成してもよい。
また、上述した例は、情報処理装置1001内の空いているサブプロセッサだけでは必要数のサブプロセッサを確保できない場合、情報処理装置1001内のリソースマネージャから、他の情報処理装置内のリソースマネージャに対して、直ちにサブプロセッサの確保を要求する場合であるが、図60〜図68に示して上述した例のように、情報処理装置1001内のリソースマネージャから、他の情報処理装置内のリソースマネージャに対して、まずサブプロセッサの空き状況を問い合わせ、その結果、ネットワークシステム全体で必要数のサブプロセッサを確保できる場合には、改めてサブプロセッサの確保を要求するように、システムを構成してもよい。