以下、本発明の実施の形態を図面に基づき説明する。
(第1の実施形態)
まず、本発明をHDDレコーダに適用した場合の実施の形態について説明する。図1は、本実施形態におけるHDDレコーダの構成を示したブロック図である。当該HDDレコーダ100は、AV機器として実装することができ、テレビジョン受信機(以下、単にテレビと記述する)と一体で構成することができる。
同図に示すように、HDDレコーダ100は、チューナ101、映像・音声符号化部102、HDD103、映像・音声復号化部104、表示部105、音響部106、通信部107、赤外線受信部108、CPU(Central Processing Unit)109、RAM(Random Access Memory)110及びROM(Read Only Memory)111から構成され、各部はバス112で接続されている。
チューナ101は、CPU109の制御に基づいて、衛星放送波、地上波等の所定チャンネルの放送波の選局を行い、受信したテレビ番組等のビデオコンテンツの映像信号及び音声信号を映像・音声符号化部102へ出力する。チューナ101の構成は、送信されてくる放送波がアナログであるかデジタルであるかに応じて適宜変更または拡張することができる。
映像・音声符号化部102は、チューナ101から出力された映像信号及び音声信号のうち、映像信号を例えばMPEG(Moving Picture Experts Group)−2圧縮符号化方式を用いて圧縮し、また音声信号を例えばドルビーデジタルAC−3(Audio Code number 3)等の圧縮方式を用いて符号化し、両者を多重化して圧縮ストリームを生成する。符号化されたデータはHDD103へ記録される。
HDD103は、上記符号化されたテレビ番組等の映像・音声データの他、各種プログラムやデータ等を蓄積することができる、ランダムアクセスが可能な外部記憶装置であり、例えば100GB以上の大容量を備えている。映像・音声復号化部104は、上記映像・音声データを再生する場合に、上記HDD103から当該データを入力し、映像信号と音声信号とにそれぞれ復号化した上で、映像信号を表示部105へ、また音声信号を音響部106へ出力する。
表示部105は例えばTFT(Thin Film Transistor)等のLCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)、PDP(Plasma Display Panel)、OEL(Organic Electroluminescence)等からなり、上記映像信号を表示する。また上記音響部106は、図示しないアンプ及びスピーカ等からなり、上記音声信号を出力する。
通信部107は、インターネットに接続して例えばテレビ番組の予約の際に必要なEPG(Electronic Program Guide)データをダウンロードしたり、また他の機器と例えばLAN(Local Area Network)を介してデータの送受信を行ったりする。
赤外線受信部108は、リモートコントローラ(以下リモコンと記述する)113から送信される、各種制御命令またはリズムパターン情報としての赤外線信号を受信し、CPU109へ出力する。
CPU109は、HDDレコーダ100全体の動作を制御するメインコントローラであり、OS(Operating System)により提供されるプラットフォーム上で各種のアプリケーションを実行する。例えば、上記リモコン113により送信された赤外線信号のリズムパターンに基づいて、上記ビデオコンテンツの録画や再生等、対応する制御命令を実行する。
RAM110は、CPU109の実行プログラムをロードしたり、実行プログラムの作業データを書き込んだりするために用いられる、書き込み可能な揮発性のメモリである。またROM111は、HDDレコーダ100の電源オン時に実行するプログラムや、ハードウェア制御用の制御コードの他、上記リズムパターン情報を処理するためのデータ等を格納する、読み出し専用の不揮発性のメモリである。
また、リモコン113は、図示しないプッシュボタン等のユーザの操作により、HDDレコーダ100の所定の機能を実行させるための制御命令として、上記赤外線受信部108へ赤外線信号を送信する。また、上記各種制御命令に対応するリズムパターンを登録する際には、ユーザによる上記ボタンの一連の押下操作により、リズムパターンを構成する赤外線信号を上記赤外線受信部108へ送信する。
次に、本実施形態において、上記リズムパターン情報を処理するために必要なソフトウェア及びデータベースについて説明する。図2は、当該ソフトウェア及びデータベースの構成を示した図である。
同図に示すように、HDDレコーダ100は、リズムパターン入力部201、機能コマンド登録ソフトウェア部、リズムパターン照合・検索部203及び登録機能コマンド呼出部204の各ソフトウェア及びリズムパターン‐コマンド対応情報データベース205(以下、単に対応情報データベース205と記述する)を有する。
リズムパターン入力部201は、ユーザから上記リモコン113の押下操作により送信され上記赤外線受信部108により受信された複数回の一連の赤外線信号を検出し、当該信号をリズムパターンとして記録する。具体的には、上記赤外線受信部108から上記一連の赤外線信号を受け取り、当該信号をデジタルデータに変換して、各信号の入力イベントが発生した時刻及びその入力回数、入力に要した総時間のデータを一つのリズムパターンとして例えば上記RAM110に一時的に記録する。
機能コマンド登録部202は、上記リズムパターン入力部201により入力されたリズムパターンデータと、ユーザが指定した機能コマンドを対応付け、それらをリズムパターン‐コマンド対応情報データベース205に記録する。機能コマンドとは例えばHDDレコーダ100に録画してある所定のテレビ番組等のMPEG2動画コンテンツファイルを再生する等、HDDレコーダ100が有する具体的な機能を実行させるためのコマンドである。上記リズムパターンはユーザが任意に指定することができ、例えば上記機能コマンドにより再生される動画コンテンツのテーマ音楽のリズムを表したり、番組のタイトルや出演者名等をリズムで表したりするなど、上記機能コマンドから連想されるイメージをリズムパターンとして関連付けてもよい。
リズムパターン照合・検索部203は、ユーザがHDDレコーダ100のある機能を実行させようと上記リモコン113から入力したリズムパターンを上記リズムパターン入力部201から受け取り、当該リズムパターンと一致するリズムパターンを上記対応情報データベース205から検索する。そして、当該検索の結果、一致または類似するリズムパターンを検出すると、当該リズムパターンに対応する機能コマンドを呼び出すため、登録機能コマンド呼出部204に要請する。
登録機能コマンド呼出部204は、上記リズムパターン照合・検索部203からの要請を受けて、当該機能コマンドを呼び出して実際に実行させる。
上記各ソフトウェア及び上記対応情報データベース205は上記HDD103に記憶され、必要に応じて上記RAM110へ呼び出されて実行及び参照される。
次に、上記対応情報データベース205の詳細について述べる。図3は、当該対応情報データベース205に格納されたデータを示した図である。
同図に示すように、対応情報データベース205には、各リズムパターンを識別するためのリズムパターンID、リズムパターンを構成する各入力イベントの発生時刻、入力イベントの回数、入力に要した総入力時間及び当該リズムパターンに対応する機能コマンドの各データが格納されている。
入力イベント発生時刻は、最初に入力イベントが発生した時点を0として、その後の入力イベントが発生したタイミングを時刻(例えば秒単位)で表している。例えば、リズムパターンを「ト」または「トン」で表現するものとすると、同図においてリズムパターンIDが0001のリズムパターンは、入力イベント回数は4回で、1回目と2回目の各イベント間及び3回目と4回目の各イベント間の時間間隔が0.2秒で等しく、2回目と3回目の入力イベント間の時間間隔のみ0.4秒と2倍になっているため、「トトントトン」というリズムパターンを示している。またリズムパターンIDが0003のリズムパターンは、入力イベント回数が5回で、入力イベント発生時刻は1回目と2回目の間及び4回目と5回目の間の時間間隔が0.4秒で等しく、2回目と3回目の入力イベント間及び3回目と4回目の入力イベント間の時間間隔がその2倍の0.8秒であるため、「トトントントトン」というリズムパターンを示している。
また、各リズムパターンに対応する機能コマンドは、上述したように、例えばHDDレコーダ100に記憶してある動画コンテンツを再生させる際には当該コンテンツを連想させるようなリズムを登録するようにしてもよい。より具体的には、当該動画コンテンツが映画のコンテンツであって、当該映画のテーマ音楽が例えば「ダダッダッダダン」というリズムであれば、当該リズムを連想させる上記「トトントントトン」というリズムパターンを登録するようにしてもよい。また、例えばサッカーのワールドカップ(登録商標)を録画した動画コンテンツであれば、「ワールドカップ」という言葉のリズムを連想させる「トントトトントン」というリズムパターンを登録するようにしてもよい。これにより、ユーザはコマンド毎にリズムパターンを記憶しておかなくても、当該コマンドを直感的に覚えておくことができる。
次に、以上のように構成されたHDDレコーダ100において、上記リズムパターンの入力により所定の機能が実行されるまでの動作を説明する。当該動作は、上記機能コマンドの登録と、当該登録された機能コマンドの呼び出しの2つの段階に分かれる。機能コマンドの登録動作においては、上記ソフトウェアのうち、リズムパターン入力部201及び機能コマンド登録部202が用いられ、機能コマンドの呼び出し動作においてはリズムパターン入力部201、リズムパターン照合・検索部203及び登録機能コマンド呼出部204が用いられる。
まず、機能コマンドを登録するまでの動作について説明する。図4は、当該動作の流れを示したフロー図である。同図においては、機能コマンドとして、所定の動画コンテンツの再生を実行させるコマンドを登録するものとする。
同図に示すように、まず、ユーザがリモコン113を操作することにより、例えばHDDレコーダ100の表示部105またはリモコン113の図示しない液晶表示部に、「リズムコマンドの登録」といったメニュー画面を呼び出して、機能コマンドとリズムパターンの対応付けを登録するモードに入る(ステップ401)。続いて、記録済みの動画コンテンツの一覧画面を呼び出して、登録したい動画コンテンツを選択する(ステップ402)。
次に、例えば「リズムコマンド登録を開始」といったボタンを押下した後、ユーザがリモコン113を複数回押下操作して赤外線信号を送信すると、上記赤外線受信部108及びリズムパターン入力部201が当該赤外線信号を検出して、当該信号のリズムパターンの時間間隔を示すための上記入力イベント発生時刻、入力イベント回数及び総入力時間をデジタルデータとして入力する(ステップ403)。
そして、上記機能コマンド登録部202が、当該入力されたリズムパターンと、上記選択した機能コマンド、すなわち『動画コンテンツ「○○○」の再生』というコマンドとを関連付けて、上記対応情報データベース205に記録する(ステップ404)ことにより、コマンド登録動作は終了する。
なお、上記対応情報データベース205には、入力イベント発生時刻を記録することにより、リズムパターンを、時間間隔をパラメータとして記録しているが、例えばユーザがボタンを押している時間長を示す情報も更にパラメータとして用いた、モールス信号のようなリズムパターン入力も可能である。また、入力信号のパワーも入力可能な入力デバイスを用いれば、ユーザの押圧力のようなパワーを示す値もパラメータとして用いて、リズムパターンを入力することも可能である。
次に、上記登録した機能コマンドを呼び出して実行するまでの動作について説明する。図5は、当該動作の流れを示したフロー図である。
同図に示すように、まず、ユーザがリモコン113を操作することにより、例えばリモコン113の図示しない液晶表示部に、「リズムコマンドの入力」といったメニュー画面を呼び出して、上記登録したリズムパターンの入力により機能コマンドを実行するモードに入る(ステップ501)。続いて、ユーザは当該モードにおいて、同じくリモコン113のボタンの押下操作により、上記登録したリズムパターンを入力する。なお、上記メニュー画面以外にも、例えば「リズムコマンド入力専用ボタン」のようなボタンを上記リモコン113に設けて、当該ボタンの押下操作によりリズムコマンドの入力を行ってもよい。
次に、HDDレコーダ100のリズムパターン入力部201は、上記赤外線受信部108を介して当該リズムパターンを入力し(ステップ502)、上記入力イベント発生時刻等、当該リズムパターンを示すデータを上記リズムパターン照合・検索部203へ送信する。
続いて、リズムパターン照合・検索部203は、リズムパターン入力部201から受信したリズムパターンと一致または類似するリズムパターンが上記対応情報データベース205に保存されているか否かを検索及び照合する(ステップ503)。この場合のリズムパターンの照合には、例えばDP(Dynamic Programming)マッチング(動的計画法)といった時間伸縮に対応した各種パターンマッチング手法を用いることができる。DPマッチングは、異なる要素数の物を比較する際、最小限の計算で比較するアルゴリズムで、音声認識、言語解析等に使用されている。
当該DPマッチングを用いたリズムパターンの具体的な照合処理について、図6を参照しながら説明する。同図は、入力されたリズムパターンと、当該リズムパターンの比較対象となる上記対応情報データベース205中のデータとの関係を示した図である。
同図(a)は、上記ステップ502において入力されたリズムパターンと、上記対応情報データベース205に登録されている3つのリズムパターンの入力イベント発生時刻、入力イベント回数及び総入力時間を示している。上記リズムパターン照合・検索部203は、入力されたリズムパターンと同一と思われるリズムパターンを当該3つのパターンの中から検索することになる。まず入力イベント回数が異なるパターン0001は候補から外され、0002及び0003の2つのパターンから検索する。
ところで、ユーザが毎回同じリズムパターンを入力する場合でも、その都度当該入力のテンポが速くなったり遅くなったりすることが考えられため、当該事情を考慮してパターンの照合を行う必要がある。そこで、リズムパターン照合・検索部203は、同図(b)に示すように、各リズムパターンの入力イベント発生時刻をそれぞれの総入力時間で正規化した上で両者を比較する。
すなわち、各リズムパターンの入力イベント発生時刻をそれぞれの総入力時間で除算して、それぞれについて総入力時間1秒当たりのテンポに換算して比較すると、パターン0002と0003はタイミングが明らかに異なっており、上記入力されたリズムパターンは、パターン0003と同一のパターンであることが分かる。なお、上記入力パターンの総入力時間は上記パターン0003の総入力時間の2分の1であるから、同図の場合、ユーザは登録時よりも2倍早いテンポで入力を行ったことを示している。また、ユーザが入力するリズムパターンは、テンポが同一でも、毎回厳密に同一の時間間隔で入力されるわけではなく、微妙なずれも生じることから、総入力時間で正規化した場合でも、全く同一パターンだけではなく、ほぼ同一に近い類似のパターンを該当パターンとして認識するようにしてもよい。
このように、総入力時間で各リズムパターンを正規化して比較することで、ユーザの入力テンポが登録された入力パターンと異なる場合でも同一または類似のパターンとして認識することができ、ユーザが意図せずに非類似のリズムパターンと判断されることを防ぐことができる。
なお、リズムパターンの照合には、上記DPマッチング以外にも、例えば隠れマルコフモデル(HMM:Hidden Markov Model)等、様々な手法を用いることが可能である。一般に、ある事象の確率がその直前のN個の事象だけに依存するとき、これをN重マルコフ過程といい、隠れマルコフモデルは、「システムがパラメータ未知のマルコフ過程である」と仮定し、観測可能な情報からその未知のパラメータを推定する確率モデルの一つである。
以上のような照合・検索手法により、入力されたリズムパターンと同一または類似のリズムパターンを抽出すると、リズムパターン照合・検索部203は、上記対応情報データベース205を参照して、抽出したリズムパターンに対応付けられた機能コマンドを取得する(ステップ504)。例えば、ユーザにより「トトントントトン」というリズムパターンが正しく入力された場合には、当該リズムパターンに対応する『動画コンテンツ「○○○」の再生』というコマンドを取得する。
そして、リズムパターン照合・検索部203が、上記当該取得したコマンドを上記登録機能コマンド呼出部204へ送信して実行させることにより、ユーザが上記リズムパターンの入力により所望した上記動画コンテンツの再生という動作が実行される(ステップ505)。
以上のコマンド登録及びコマンド呼出の動作により、従来ならば例えばメニュー画面から項目を選択するといった何段階かの複雑な操作や複数の操作が必要であった機能を、ユーザはリズムパターンの入力という単純で分かりやすいインターフェースにより、容易に実行させることができる。
またユーザは、上記機能コマンドを、当該機能コマンドに対するユーザのイメージをリズムパターンとして結びつけて登録させておくことができるため、当該結びつきを直感的に記憶し、または思い出すことができ、わざわざ記憶したりその操作に慣れたりする等しなくとも、容易に操作を行うことができる。
更に、例えばプッシュボタンしか有さないリモコン113のような単純な入力デバイスであっても、複雑な機能を上記リズムパターンと関連付けて登録し、かつ当該機能を瞬時に呼び出し、実行することができる。
なお、本発明は以上説明した実施の形態には限定されるものではなく、種々の変形が可能である。
上述の実施形態においては、本発明をHDDレコーダ100に適用して、所望の動画コンテンツを再生するという操作を実行させる例について説明したが、それ以外にも、例えばオーディオプレーヤや携帯電話等、何らかの入力デバイスが存在する機器であればどのような機器にも適用することができる。
オーディオプレーヤに適用した場合には、所望の曲を再生させる場合に、曲を呼び出して再生モードにし、再生ボタンを押すというような処理を、例えば曲の代表的なフレーズやアーティスト名をリズムパターンとして登録しておけば、当該リズムパターンの入力により所望の曲を瞬時に再生させることが可能である。
携帯電話に適用した場合には、例えば電子メール機能付きの携帯電話においては、メール文書作成においてよく使う「いってらっしゃーい」のような文字列に対して、これを発音した時のリズムを「トットトントーン」のようなリズムパターンとして登録しておき、ボタン一つで瞬時に文章入力を行うようにしてもよい。これにより、携帯電話のような文字入力手段が限られている機器においても容易に文字入力を行うことができる。
また、相手に電話をかける場合に、所望の電話番号を呼び出してダイヤルするまでの操作について、例えばその相手から連想されるイメージをリズムパターンと関連付けて登録しておくことも可能である。これにより、従来の短縮コマンドのような機能に比べて、登録した短縮コマンドの番号をいちいち覚えておく必要がないため、多くの人についてリズムパターンを登録した場合でも、単純なリズム入力で各人に容易に電話をかけることが可能となる。
上述の実施形態においてはリモコン113を入力デバイスとして用いていたが、マウス、キーボード、ジョグダイヤル等、様々な入力デバイスを用いることができる。キーボードの場合には、例えばキーボードのいくつかのキーをピアノの鍵盤に見立てて、ある旋律をリズムパターンとして登録しておくことも可能である。更に、カメラ及び撮像した画像の画像認識機能を有する機器であれば、例えばユーザがカメラの前で所定の方向に手を振る等の動作を画像認識させて機能コマンドと対応付けて登録しておき、ユーザが再度手を振った場合に当該機能を実行させるような態様も可能である。
また、本発明においてはユーザの感情を上記リズムパターンと関連付けることもできるため、例えばPCのディスプレイにおいて、予め明るい気分を連想させるようなリズムパターンを明るい感じのデザインのデスクトップテーマに関連付けて登録しておき、後に当該リズムパターンを入力することによってテーマの変更を行ったりすることも可能である。
更に、本発明を以下の実施形態において説明するようなネットワークシステムに適用することも可能である。
(第2の実施形態)
まず、本実施形態において前提となるネットワークシステムについて説明する。
図7は、この発明のネットワークシステムの一例を示し、ネットワーク9を介して複数の情報処理装置1、2、3、4が接続されたものである。情報処理装置1、2、3、4は、例えば各種のAV機器やポータブル機器、後述するHDDレコーダ、PC等である。
情報処理装置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は、ディスクコントローラと称するが、外部記録部コントローラである。図7の例のように、情報処理コントローラ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も、上記と同様に構成される。ここで、図7において親番号が同一であるユニットは枝番号が異なっていても、特に断りがない限り同じ働きをするものとする。また、以下の説明において枝番号が省略されている場合には、枝番号の違いにいる差異を生じないものとする。
上述したように、1つの情報処理コントローラ内の各サブプロセッサ23は、独立にプログラムを実行し、データを処理するが、異なるサブプロセッサがメインメモリ26内の同一領域に対して同時に読み出しまたは書き込みを行った場合には、データの不整合を生じ得る。そこで、サブプロセッサ23からメインメモリ26へのアクセスは、以下のような手順によって行う。
図8(A)に示すように、メインメモリ26は、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメントが割り振られる。追加セグメントは、F/Eビット、サブプロセッサID及びLSアドレス(ローカルストレージアドレス)を含むものとされる。また、各メモリロケーションには、後述のアクセスキーも割り振られる。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が前処理後のデータを読み出すことが可能となる。
図8(B)に示すように、各サブプロセッサ23内のLS24も、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、同様に追加セグメントが割り振られる。追加セグメントは、ビジービットを含むものとされる。
サブプロセッサ23がメインメモリ26内のデータを自身のLS24のメモリロケーションに読み出すときには、対応するビジービットを1に設定して予約する。ビジービットが1であるメモリロケーションには、他のデータは格納することができない。LS24のメモリロケーションに読み出し後、ビジービットは0になり、任意の目的に使用できるようになる。
図8(A)に示すように、さらに、各情報処理コントローラと接続されたメインメモリ26には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ26内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ23に割り当てられ、そのサブプロセッサが排他的に使用することができる。すなわち、各々のサブプロセッサ23は、自身に割り当てられたサンドボックスを使用できるが、この領域を超えてデータのアクセスを行うことはできない。メインメモリ26は、複数のメモリロケーションから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。
更に、メインメモリ26の排他的な制御を実現するために、図8(C)に示すようなキー管理テーブルが用いられる。キー管理テーブルは、情報処理コントローラ内のSRAM等の比較的高速のメモリに格納され、DMAC25と関連付けられる。キー管理テーブル内の各エントリには、サブプロセッサID、サブプロセッサキー及びキーマスクが含まれる。
サブプロセッサ23がメインメモリ26を使用する際のプロセスは、以下の通りである。まず、サブプロセッサ23はDMAC25に、読み出しまたは書き込みのコマンドを出力する。このコマンドには、自身のサブプロセッサIDと、使用要求先であるメインメモリ26のアドレスが含まれる。
DMAC25は、このコマンドを実行する前に、キー管理テーブルを参照して、使用要求元のサブプロセッサのサブプロセッサキーを調べる。次に、DMAC25は、調べた使用要求元のサブプロセッサキーと、使用要求先であるメインメモリ26内の図8(A)に示したメモリロケーションに割り振られたアクセスキーとを比較して、2つのキーが一致した場合にのみ、上記のコマンドを実行する。
図8(C)に示したキー管理テーブル上のキーマスクは、その任意のビットが1になることによって、そのキーマスクに関連付けられたサブプロセッサキーの対応するビットが0または1になることができる。例えば、サブプロセッサキーが1010であるとする。通常、このサブプロセッサキーによって1010のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが0001に設定されている場合には、キーマスクのビットが1に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ、このサブプロセッサキー1010によってアクセスキーが1010または1011のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
以上のようにして、メインメモリ26のサンドボックスの排他性が実現される。すなわち、1つの情報処理コントローラ内の複数のサブプロセッサによってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサと、後段階の処理を行うサブプロセッサのみが、メインメモリ26の所定アドレスにアクセスできるようになり、データを保護することができる。
例えば、以下のように使用することが考えられる。まず、情報処理装置の起動直後においては、キーマスクの値は全てゼロである。メインプロセッサ内のプログラムが実行され、サブプロセッサ内のプログラムと連携動作するものとする。第1のサブプロセッサにより出力された処理結果データを一旦メインメモリに格納し、第2のサブプロセッサに入力したいときには、該当するメインメモリ領域は、当然どちらのサブプロセッサからもアクセス可能である必要がある。そのような場合に、メインプロセッサ内のプログラムは、キーマスクの値を適切に変更し、複数のサブプロセッサからアクセスできるメインメモリ領域を設けることにより、サブプロセッサによる多段階的な処理を可能にする。
より具体的には、他の情報処理装置からのデータ→第1のサブプロセッサによる処理→第1のメインメモリ領域→第2のサブプロセッサによる処理→第2のメインメモリ領域、という手順で多段階処理が行われるときには、
第1のサブプロセッサのサブプロセッサキー:0100、
第1のメインメモリ領域のアクセスキー :0100、
第2のサブプロセッサのサブプロセッサキー:0101、
第2のメインメモリ領域のアクセスキー :0101
というような設定のままだと、第2のサブプロセッサは第1のメインメモリ領域にアクセスすることができない。そこで、第2のサブプロセッサのキーマスクを0001にすることにより、第2のサブプロセッサによる第1のメインメモリ領域へのアクセスを可能にすることができる。
図7のネットワークシステムでは、情報処理装置1、2、3、4間での分散処理のために、情報処理装置1、2、3、4間でソフトウェアセルが伝送される。すなわち、ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ21は、コマンド、プログラム及びデータを含むソフトウェアセルを生成し、ネットワーク9を介して他の情報処理装置に送信することによって、処理を分散することができる。
図9に、ソフトウェアセルの構成の一例を示す。この例のソフトウェアセルは、全体として、送信元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で示される情報処理装置宛に送信要求するコマンドである。機能プログラムについては後述するが、図12に示す情報処理コントローラのメインメモリ26が記憶するソフトウェアの構成図において機能プログラムにカテゴライズされるプログラムである。機能プログラムは、メインメモリ26にロードされ、メインプロセッサ21により実行される。
ステータス返信コマンドは、上記のステータス要求コマンドを受信した情報処理装置が、自身の装置情報を当該ステータス要求コマンドに含まれる応答先IDで示される情報処理装置に応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納する。
図10に、DMAコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す。
情報処理装置IDは、情報処理コントローラを備える情報処理装置を識別するための識別子であり、ステータス返信コマンドを送信する情報処理装置のIDを示す。情報処理装置IDは、電源投入時、その情報処理装置内の情報処理コントローラに含まれるメインプロセッサ21によって、電源投入時の日時、情報処理装置のネットワークアドレス及び情報処理装置内の情報処理コントローラに含まれるサブプロセッサ23の数などに基づいて生成される。
情報処理装置種別IDには、当該情報処理装置の特徴を表す値が含まれる。情報処理装置の特徴とは、例えば、オーディオプレーヤや後述のHDDレコーダ等である。また、情報処理装置種別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は、当該の外部記録部の種類(例えば、HDD、CD±RW、DVD±RW、メモリディスク、SRAM、ROMなど)を表す。
外部記録部総容量及び外部記録部使用量は、それぞれ、外部記録部IDによって識別される外部記録部28の総容量及び現在使用中の容量を表す。
外部記録部ID、外部記録部種別ID、外部記録部総容量及び外部記録部使用量は、1つの外部記録部28に対して一組設定されるものであり、当該の情報処理コントローラに接続されている外部記録部28の数の組数だけ設定される。すなわち、1つの情報処理コントローラに複数の外部記録部が接続されている場合、各々の外部記録部には異なる外部記録部IDが割り当てられ、外部記録部種別ID、外部記録部総容量及び外部記録部使用量も別々に管理される。
ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ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つの情報処理コントローラ内でデータを多段階に処理する必要がある場合でも、高速かつ高セキュリティに処理を実行することができる。
ソフトウェアセルの使用による分散処理の結果、図11の上段に示すようにネットワーク9に接続されている複数の情報処理装置1、2、3、4は、図11の下段に示すように、仮想的な1台の情報処理装置7として動作する。ただし、そのためには、以下のような構成によって、以下のような処理が実行される必要がある。
図12に、個々の情報処理コントローラのメインメモリ26が記憶するソフトウェアの構成を示す。これらのソフトウェア(プログラム)は、情報処理装置に電源が投入される前においては、当該の情報処理コントローラに接続される外部記録部28に記録されているものである。各プログラムは、機能または特徴によって、制御プログラム、機能プログラム及びデバイスドライバにカテゴライズされる。
制御プログラムは、各情報処理コントローラが同じものを備え、各情報処理コントローラのメインプロセッサ21が実行するもので、後述のMS(マスター/スレーブ)マネージャ及び能力交換プログラムを含む。
機能プログラムは、メインプロセッサ21が実行するもので、記録用、再生用、素材検索用など、情報処理コントローラごとに情報処理装置に応じたものが備えられる。
デバイスドライバは、情報処理コントローラ(情報処理装置)の入出力(送受信)用で、放送受信、モニタ出力、ビットストリーム入出力、ネットワーク入出力など、情報処理コントローラ毎に情報処理装置に応じたものが備えられる。
情報処理装置が物理的にネットワーク9に接続された状態で、情報処理装置に主電源が投入され、情報処理装置が電気的・機能的にもネットワーク9に接続されると、その情報処理装置の情報処理コントローラのメインプロセッサ21は、制御プログラムに属する各プログラム、及びデバイスドライバに属する各プログラムを、メインメモリ26にロードする。
ロード手順としては、メインプロセッサ21は、まず、DC27に読み出し命令を実行させることによって、外部記録部28からプログラムを読み出し、次に、DMAC25に書き込み命令を実行させることによって、そのプログラムをメインメモリ26に書き込む。
機能プログラムに属する各プログラムについては、必要なときに必要なプログラムだけをロードするように構成してもよく、または、他のカテゴリに属するプログラムと同様に、主電源投入直後に各プログラムをロードするように構成してもよい。
ここで、機能プログラムに属する各プログラムは、ネットワークに接続された全ての情報処理装置の外部記録部28に記録されている必要はなく、いずれか1つの情報処理装置の外部記録部28に記録されていれば、前述の方法によって他の情報処理装置からロードすることができるので、結果的に図11の下段に示すように、仮想的な1台の情報処理装置7として機能プログラムを実行することができる。
また、前述したようにメインプロセッサ21によって処理される機能プログラムは、サブプロセッサ23によって処理されるサブプロセッサプログラムと連携動作する場合がある。そこでメインプロセッサ21が外部記録部28から機能プログラムを読み出し、メインメモリ26に書き込む際に対象となる機能プログラムと連携動作するサブプロセッサプログラムが存在する場合には、当該サブプロセッサプログラムも併せて同じメインメモリ26に書き込むものとする。この場合、連携動作するサブプロセッサプログラムは1個である場合もあるし、複数個であることもあり得る。複数個である場合には、全ての連携動作するサブプロセッサプログラムをメインメモリ26に書き込むことになる。メインメモリ26に書き込まれたサブプロセッサプログラムはその後、サブプロセッサ23内のLS24に書き込まれ、メインプロセッサ21によって処理される機能プログラムと連携動作する。
図9のソフトウェアセルに示したように、機能プログラムには、プログラムごとにプログラムを一意的に識別できる識別子が、機能プログラムIDとして割り当てられる。機能プログラムIDは、機能プログラムの作成の段階で、作成日時や情報処理装置IDなどから決定される。
そしてサブプロセッサプログラムにもサブプロセッサプログラムIDが割り当てられ、これによりサブプロセッサプログラムを一意的に識別可能である。割り当てられるサブプロセッサプログラムIDは、連携動作する相手となる機能プログラムの機能プログラムIDと関連性のある識別子、例えば機能プログラムIDを親番号とした上で最後尾に枝番号を付加させたもの等であることもあり得るし、連携動作する相手となる機能プログラムの機能プログラムIDとは関連性のない識別子であってもよい。いずれにしても機能プログラムとサブプロセッサプログラムが連携動作する場合には、両者とも相手の識別子であるプログラムIDを自プログラム内に互いに記憶しておく必要がある。機能プログラムが複数個のサブプロセッサプログラムと連携動作する場合にも、当該機能プログラムは複数個ある全てのサブプロセッサプログラムのサブプロセッサプログラムIDを記憶しておくことになる。
メインプロセッサ21は、自身が動作する情報処理装置の装置情報(動作状態に関する情報)を格納するための領域をメインメモリ26に確保し、当該情報を自装置の装置情報テーブルとして記録する。ここでの装置情報は、図10に示した情報処理装置ID以下の各情報である。
上述したネットワークシステムでは、ある情報処理装置への主電源投入時、その情報処理装置の情報処理コントローラのメインプロセッサ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の接続状態に変化があった場合には、その情報を後述の能力交換プログラムに通知する。
メインプロセッサ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マネージャ及び能力交換プログラムは、情報処理装置の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
マスター装置及びスレーブ装置のいずれについても、能力交換プログラムは、上記のようにMSマネージャから、ネットワーク9に接続されている情報処理装置の主電源が遮断され、またはネットワーク9から情報処理装置が切り離されたことが通知されたときには、その情報処理装置の装置情報テーブルを自装置のメインメモリ26から削除する。
更に、このようにネットワーク9から切断された情報処理装置がマスター装置である場合には、以下のような方法によって、新たにマスター装置が決定される。
具体的には、例えば、ネットワーク9から切断されていない情報処理装置は、それぞれ、自装置及び他装置の情報処理装置IDを数値に置き換えて、自装置の情報処理装置IDを他装置の情報処理装置IDと比較し、自装置の情報処理装置IDがネットワーク9から切断されていない情報処理装置中で最小である場合、そのスレーブ装置は、マスター装置に移行して、MSステータスを0に設定し、マスター装置として、上述したように、ネットワーク9に接続されている全ての他装置(各スレーブ装置)の装置情報を取得して、メインメモリ26に記録する。
図11の下段に示したようにネットワーク9に接続されている複数の情報処理装置1、2、3、4を仮想的な1台の情報処理装置7として動作させるためには、マスター装置がユーザの操作及びスレーブ装置の動作状態を把握する必要がある。
図13に、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に機能プログラムを送信してもよい。
機能プログラムには、その実行単位毎に必要となる、図10に示した各情報として表される情報処理装置種別ID、メインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件等の、装置に関する要求スペックが規定されている。
マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、各機能プログラムについて必要となる上記要求スペックを読み出す。また、予め能力交換プログラムによってメインメモリ26−1に記録された装置情報テーブルを参照し、各情報処理装置の装置情報を読み出す。ここでの装置情報は、図10に示した情報処理装置ID以下の各情報を示し、メインプロセッサ、サブプロセッサ、メインメモリ及び外部記録部に関する情報である。
マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、ネットワーク9上に接続された各情報処理装置の上記装置情報と、機能プログラム実行に必要となる上記要求スペックとを順次比較する。
そして、例えば、機能プログラムが録画機能を必要とする場合には、情報処理装置種別IDに基づいて、録画機能を有する情報処理装置のみを特定して抽出する。更に、機能プログラムを実行するために必要なメインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件を確保できるスレーブ装置を、実行要求候補装置として特定する。ここで、複数の実行要求候補装置が特定された場合には、当該候補装置から1つの実行要求候補装置を特定して選択する。
実行要求するスレーブ装置が特定されたら、マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、その特定されたスレーブ装置について、自装置内の情報処理コントローラ11に含まれるメインメモリ26−1に記録されている当該スレーブ装置の装置情報テーブルを更新する。
更に、マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、DMAコマンドがロードコマンド及びキックコマンドであるソフトウェアセルを生成し、当該ソフトウェアセルのセルインターフェースに、機能プログラムに関する必要なサブプロセッサの情報及びサンドボックスサイズ(図9参照)を設定して、上記実行要求されるスレーブ装置に対して送信する。
機能プログラムの実行を要求されたスレーブ装置は、その機能プログラムを実行するとともに、自装置の装置情報テーブルを更新する。その際、必要であれば、スレーブ装置内の情報処理コントローラに含まれるメインプロセッサ21は、上記の方法によって自装置の外部記録部28からメインメモリ26に機能プログラムおよび当該機能プログラムと連携動作するサブプロセッサプログラムをロードする。
機能プログラムの実行を要求されたスレーブ装置の外部記録部28に、必要な機能プログラムまたは当該機能プログラムと連携動作するサブプロセッサプログラムが記録されていない場合には、他の情報処理装置が当該機能プログラムまたはサブプロセッサプログラムを、その機能プログラム実行要求先スレーブ装置に送信するように、システムを構成すればよい。
サブプロセッサプログラムについては、前述のロードコマンドおよびキックコマンドを利用して他の情報処理装置に実行させることもできる。
機能プログラムの実行終了後、機能プログラムを実行したスレーブ装置内の情報処理コントローラに含まれるメインプロセッサ21は、終了通知をマスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1に送信するとともに、自装置の装置情報テーブルを更新する。マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、その終了通知を受信して、機能プログラムを実行したスレーブ装置の装置情報テーブルを更新する。
マスター装置1内の情報処理コントローラ11に含まれるメインプロセッサ21−1は、自装置及び他装置の装置情報テーブルの参照結果から、当該の機能プログラムを実行することができる情報処理装置として、自身を選択する場合もあり得る。その場合には、マスター装置1が当該機能プログラムを実行する。
図13の例で、ユーザがスレーブ装置A(情報処理装置2)を操作し、当該操作に応じた機能プログラムを別のスレーブ装置B(情報処理装置3)が実行する場合について、図14を用いてその分散処理の例を説明する。
図14の例では、ユーザがスレーブ装置Aを操作することによって、スレーブ装置Aを含むネットワークシステム全体の分散処理が開始して、まず、スレーブ装置Aは、ステップ81で、その操作情報をマスター装置1に送信する。
マスター装置1は、ステップ72で、その操作情報を受信し、さらにステップ73に進んで、自装置のメインメモリ26−1に記録されている自装置及び他装置の装置情報テーブルから、各情報処理装置の動作状態を調べて、受信した操作情報に応じた機能プログラムを実行することができる情報処理装置を選択する。この例は、スレーブ装置Bが選択される場合である。
次に、マスター装置1は、ステップ74で、その選択したスレーブ装置Bに対して機能プログラムの実行を要求する。
スレーブ装置Bは、ステップ95で、その実行要求を受信し、さらにステップ96に進んで、実行要求された機能プログラムを実行する。
以上のように、ユーザは、1台の情報処理装置のみを操作することによって、他の情報処理装置を操作することなく、複数の情報処理装置1、2、3、4を仮想的な1台の情報処理装置7として動作させることができる。
次に、以上説明したネットワークシステムを、家庭内制御システムに適用した場合の実施の形態について説明する。図15は、本実施形態におけるシステムの構成を示した図である。同図においては、上述の図7における情報処理装置1に上述のHDDレコーダ100を適用している。同図において、図1、図7等と同様の構成となる部分については同一の符号を付して説明を簡略または省略し、異なる点を中心に説明する。
図示しないが、HDDレコーダ100は、上記図2で説明したような各種ソフトウェア201〜204及び対応情報データベース205を有し、機能コマンドをリズムパターンと対応付けて予め登録して、リズムパターンの入力により対応する機能コマンドを実行することが可能である。また、上記図7における情報処理装置1のメインメモリ26−1に上記第1実施形態の図1におけるRAM110を、外部記憶部26−1及び26−2に図1におけるROM111及びHDD103を適用している。
HDDレコーダ100は上述の図7等における情報処理装置1として、デスクトップPC31は情報処理装置2として、ノートPC32は情報処理装置3として機能し、それぞれ上述のメインプロセッサ、サブプロセッサを含む情報処理コントローラを有し、上記DMAコマンド等によりソフトウェアセルを実行したり、各種データをやり取りしたりすることが可能である。よって、各機器には、それぞれを識別するための上記情報処理装置IDが付与されている。
図15に示すように、本実施形態においては、HDDレコーダと100とデスクトップPC31及びノートPC32がLAN(Local Area Network)30を介して接続されており、互いに通信を行うことが可能である。そして、HDDレコーダ100は、上述した自身の機能を実行することができるほか、ホームサーバとして上記対応情報データベース205に自身のデータともにデスクトップPC31及びノートPC32の各対応情報データベースを集約して有しており、HDDレコーダ100上で照合されたリズムパターンが他の機器の機能に対応するものであっても、その情報をLAN30を介して対象機器に受け渡して、当該機器においてユーザが所望の機能を実行させることが可能である。なお、この場合、HDDレコーダ100は上記マスター装置として、デスクトップPC31及びノートPC32は上記スレーブ装置として機能する。
より具体的には、HDDレコーダ100は、上記デスクトップPC31またはノートPC32に入力されたリズムパターンを受信し、上記対応情報データベース205を参照して当該リズムパターンを照合して対応する機能コマンドを検索し、検索した機能コマンドを上記ノートPC32またはデスクトップPC31に送信して実行させるようなことが可能である。なお、図示しないが、上記対応情報データベース205には、上記第1の実施形態において説明したデータの他、HDDレコーダ100、デスクトップPC31及びノートPC32の各機器を識別する上記情報処理装置IDが上記リズムパターン情報と関連付けられており、どの機器の機能コマンドを実行させるためのリズムパターンであるかが認識できるようになっている。
例として、ユーザがノートPC32においてMP3(MPEG-1 Audio Layer-3)ファイルを再生させたい場合に、デスクトップPC31の図示しないマウスまたはキーボードの入力により上記MP3ファイルの再生という機能コマンドと予め対応付けて登録しておいたリズムパターンの入力を行い、当該入力を上記HDDレコーダ100が認識して、それに対応する機能コマンドをノートPC32へ送信して再生させるという場合について説明する。
この場合は、例えばユーザがMP3プレイヤ及びデコーダを有さないデスクトップPC31上で作業を行っている最中に、ユーザとは離れた位置に存在するノートPC32上でMP3ファイルを再生させたいような場合を想定している。
図16は、この場合にまずデスクトップPC31がHDDレコーダ100に対して送信するソフトウェアセルの例を示した図である。
同図に示すように、このソフトウェアセルにおいて、送信元IDはデスクトップPC31の情報処理装置ID、送信先IDはHDDレコーダ100の情報処理装置ID、応答先IDはノートPC32の情報処理装置IDである。
またDMAコマンドとしてコマンド検索・実行要求コマンドを送信し、データとして、デスクトップPC31においてユーザが上記マウスまたはキーボードにより入力したリズムパターンを示す上記入力イベント発生時刻、入力イベント回数及び総入力時間のデジタルデータを送信する。更に、デスクトップPC31が当該ソフトウェアセル以前にもHDDレコーダ100に対してソフトウェアセルを送信している場合には、セルインターフェース中、前回のソフトウェアセルIDとして、前回送信した際のソフトウェアセルのグローバルIDを送信する。
図17は、上記コマンド検索・実行要求コマンドを含むソフトウェアセルを受信したHDDレコーダ100が、上記ノートPC32に対して送信するソフトウェアセルの例を示した図である。
同図に示すように、このソフトウェアセルにおいて、送信元IDはHDDレコーダ100の情報処理装置ID、送信先ID及び応答先IDはノートPC32の情報処理装置IDである。
またDMAコマンドとして、HDDレコーダが上記リズムパターンの照合・検索により抽出した機能コマンド、すなわちMP3ファイルの再生実行要求コマンドを送信する。更に、HDDレコーダ100が当該ソフトウェアセル以前にもノートPC32に対してソフトウェアセルを送信している場合には、セルインターフェース中、前回のソフトウェアセルIDとして、前回送信した際のソフトウェアセルのグローバルIDを送信する。
次に、以上のように構成された家庭内制御システムにおいて、デスクトップPC31から送信されたリズムパターンに対応する機能コマンドがノートPC32において実行されるまでの動作を説明する。図18は当該動作の流れを示したシーケンス図である。
同図に示すように、まず、デスクトップPC31は、ユーザからマウスまたはキーボードによるリズムパターンの入力があると、当該リズムパターンを入力し(ステップ41)、当該リズムパターンを示す上記入力イベント発生時刻、入力イベント回数の各データを記録する。そして、当該データとともに、上記コマンド検索・実行要求コマンドを含むソフトウェアセルをHDDレコーダ100へ送信する(ステップ42)。
続いて、HDDレコーダ100は、上記ソフトウェアセルを受信し(ステップ43)、当該ソフトウェアセルに含まれる上記各データを基に、上記対応情報データベース205を参照して上記リズムパターンの照合及び検索を行う(ステップ44)。当該照合及び検索処理は、上述の第1実施形態における処理と同様である。次に、HDDレコーダ100は、検索されたリズムパターンに対応する機能コマンドを検索する(ステップ45)。本例においては、当該機能コマンドは、『MP3ファイル○○○の再生』というコマンドである。続いて、当該コマンドを、再生実行要求コマンドとして、上記ソフトウェアセルによりノートPC32へ送信する(ステップ46)。
そして、ノートPC32が上記ソフトウェアセルを受信して(ステップ47)、当該ソフトウェアセルに含まれる再生実行要求コマンドを実行することにより、ユーザの所望するMP3ファイルの再生処理が実行される(ステップ48)。
以上の動作により、HDDレコーダ100、デスクトップPC31及びノートPC32が協働して一台の仮想的な情報処理装置として機能することにより、ユーザはデスクトップPC31からマウス等によりリズムパターンを入力するだけでノートPC32において所望の機能を実行させることができる。
なお、上述の場合とは逆に、ノートPC32からリズムパターンの入力を行い、HDDレコーダ100を介して、デスクトップPC31に対応する機能を実行させるような態様であっても勿論構わない。
また、上記デスクトップPC31またはノートPC32が、ユーザから入力されたリズムパターンを上記HDDレコーダ100に送信して、対応する機能コマンドを検索させ、HDDレコーダ100から当該対応する機能コマンドを応答させて、当該機能コマンドを自ら実行するような態様であってもよい。すなわち、この場合に送信されるソフトウェアセルにおいて、送信先IDはHDDレコーダ100の情報処理装置IDであり、送信元ID及び応答先IDは、上記デスクトップPC31またはノートPC32を示す同一のIDとなる。
また、本実施形態においては、リズムパターンを照合するためのパラメータとして入力イベント発生時刻、入力イベント回数及び総入力時間を用いたが、上記第1の実施形態と同様、ボタンを押下している時間長を示す情報や、入力信号のパワーを示す値等もパラメータとして用いることが可能である。
更に、本実施形態においては、本発明を家庭内の制御システムに適用した例について説明したが、家庭外でも例えばオフィスや店舗等様々な環境で適用することができる。