(57)【要約】【課題】  複数の視聴者であっても視聴者の嗜好にあった番組を推薦する。【解決手段】  テレビ放送を受信して映像信号を出力するチューナ回路１１と、テレビ放送の映像信号を映像として表示するディスプレイ１３とを設ける。視聴者を撮像する撮像素子２１と、プロセッサシステム２４とを設ける。このプロセッサシステム２４は、撮像素子２１により得られる映像信号を処理して複数の視聴者のそれぞれをリアルタイムで認識するとともに、チューナ回路１１が選択しているチャンネルの番組と、このとき撮像素子２１が撮像している視聴者のそれぞれとの対応を学習する。この学習結果にしたがって複数の視聴者に対して重み情報を統合することにより複数の視聴者に適切と思われる番組をリアルタイムで推薦する。【選択図】  図１
2005236354.tif 000002
【特許請求の範囲】
【請求項１】
テレビ放送を受信して映像信号を出力するチューナ回路と、
上記テレビ放送の映像信号を映像として表示するディスプレイと、
複数の視聴者を撮像する撮像素子と、
プロセッサシステムと
を有し、
このプロセッサシステムは、上記撮像素子により得られる映像信号を処理して上記複数の視聴者のそれぞれをリアルタイムで認識するとともに、
上記チューナ回路が選択しているチャンネルの番組と、このとき上記撮像素子が撮像している視聴者のそれぞれとの対応を学習し、
この学習結果にしたがって複数の視聴者に対して重み情報を統合することにより上記複数の視聴者に適切と思われる番組をリアルタイムで推薦する
ようにした受信装置。
【請求項２】
請求項１に記載の受信装置において、
上記プロセッサシステムが複数個とされるとともに、互いに接続されてグリッドコンピュータシステムを構成している
ようにした受信装置。
【請求項３】
請求項２に記載の受信装置において、
上記プロセッサシステムのそれぞれは、メインのプロセッサユニットと、サブのプロセッサユニットとから構成されるとともに、
上記メインのプロセッサユニットと、上記サブのプロセッサユニットとが１つの集積回路から構成されている
ようにした受信装置。
【請求項４】
請求項１に記載の受信装置において、
上記視聴者のチャンネル切り換えの時間間隔にしたがって、上記視聴者に適切と思われる番組をリアルタイムで推薦する
ようにした受信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、テレビ放送の受信装置に関する。
【背景技術】
【０００２】
これまでのテレビ受像機やＳＴＢは、視聴者が、新聞のテレビ番組欄、番組ガイド誌、ＥＰＧあるいはＷｅｂの番組案内などから見たい番組を選択し、視聴するようにされている。また、一部のハードディスクレコーダは、キーワードを入力すると、そのキーワードを、番組名や出演者名などに含む番組を自動的に録画するようにされている。つまり、視聴者の嗜好を考慮するようにされている。
【０００３】
なお、先行技術文献として例えば以下のものがある。
【特許文献１】特開２００２−３１５０２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところが、一般のテレビ受像機やＳＴＢの場合、いったん番組の視聴を始めると、同時刻に他のチャンネルでどのような番組を放送しているかという情報を、リアルタイムに入手することが困難である。視聴者は、現在の番組の視聴をやめ、番組情報を何らかの方法で能動的に入手する必要がある。
【０００５】
また、視聴者の嗜好を考慮したハードディスクレコーダであっても、情報量があまりにも多い場合には、その情報から本当に見たい番組を選別するのが困難である。
【０００６】
さらに、一般の家庭の居間などに設置されているテレビ受像機のように、複数の視聴者が一緒に番組を見る場合、番組の選択は、明確な基準にしたがうものではなく、そのときの状況によって決定される。そして、番組を選択した視聴者が席をはずしたときには、さらに次の番組を選択する必要がある。
【０００７】
この発明は、以上のような問題点を解決しようとするものである。
【課題を解決するための手段】
【０００８】
この発明においては、
テレビ放送を受信して映像信号を出力するチューナ回路と、
上記テレビ放送の映像信号を映像として表示するディスプレイと、
複数の視聴者を撮像する撮像素子と、
プロセッサシステムと
を有し、
このプロセッサシステムは、上記撮像素子により得られる映像信号を処理して上記複数の視聴者のそれぞれをリアルタイムで認識するとともに、
上記チューナ回路が選択しているチャンネルの番組と、このとき上記撮像素子が撮像している視聴者のそれぞれとの対応を学習し、
この学習結果にしたがって複数の視聴者に対して重み情報を統合することにより上記複数の視聴者に適切と思われる番組をリアルタイムで推薦する
ようにした受信装置
とするものである。
【発明の効果】
【０００９】
この発明によれば、複数の視聴者に対して重み情報を統合することにより、より多くの視聴者が同時に満足する番組を推薦することができる。さらに、その番組の推薦を、ザップ時間（チャンネルの切り換えの時間間隔）にしたがって視聴者にとって適切なタイミングで提供することができる。
【発明を実施するための最良の形態】
【００１０】
〔１〕  この発明のアウトライン
この発明は、複数の視聴者を認識し、嗜好を優先される視聴者をあるアルゴリズムによって選出し、その選出結果にしたがって適切と思われる番組を推薦する。すなわち、視聴者の特徴情報量をパラメータ化し、複数の視聴者の特定と複数の嗜好情報との合成に基づいて適切と思われるコンテンツの番組を推薦する。
【００１１】
また、そのとき、複数のプロセッサを互いに接続して上記の処理を実行するとともに、パラメータ量やプロセッサの負荷状態を考慮し、情報量の多い場合には負荷の軽いプロセッサで分散処理し、処理全体としての処理速度の違いを動的に吸収し、安定な処理を実現する。
【００１２】
〔２〕  ハードウェアの構成
図１は、この発明による受信装置の一例を示す。この受信装置は、テレビ放送を受信して映像信号および音声信号を出力するチューナ回路１１と、このチューナ回路１１から出力される映像信号および音声信号に各種の処理を行う映像音声処理回路１２と、映像音声処理回路１２により処理された映像信号が供給されて映像を表示するディスプレイ１３と、映像音声処理回路１２により処理された音声信号が供給されて音声を出力するスピーカ１４とを有する。
【００１３】
さらに、図１の受信装置は、撮像素子２１と、この撮像素子２１から出力されるビデオ信号を前処理する画像処理プロセッサ２２と、画像処理用のメインおよびサブの高速プロセッサシステム２４、２５とを有する。この場合、撮像素子２１は、ディスプレイ１３（およびスピーカ１４）のテレビ放送を視聴している視聴者を撮像するためものであり、その視聴者の主として顔を撮像するように設置されている。さらに、画像処理プロセッサ２２には、その画像処理に必要なメモリ２３が接続されている。
【００１４】
メインの高速プロセッサシステム２４は、画像処理以降の中心処理を行うメインの高速プロセッサユニット３１と、負荷状況に応じて分散処理を行うサブの高速プロセッサユニット３２〜３４とを有する。プロセッサユニット３１とプロセッサユニット３２〜３４とは、内部バスを通じて互いに接続されるとともに、プロセッサユニット３１〜３４には、それらの処理に必要なメモリ３５〜３８が接続されている。そして、画像処理プロセッサ２２により処理された信号がプロセッサユニット３１に供給される。
【００１５】
また、サブの高速プロセッサシステム２５もメインの高速プロセッサシステム２４と同様のアーキテクチャとされているもので、対応する部分には、同一の符号を付けて説明は省略する。そして、これら高速プロセッサシステム２４、２５がネットワーク２６を通じて接続され、グリッドコンピューティングによる分散処理を可能としている。
【００１６】
さらに、メインの高速プロセッサシステム２４のプロセッサユニット３１には、ユーザ入力インターフェイス２７と、ネットワークインターフェイス２８と、データ記憶装置２９とが接続されている。この場合、入力インターフェイス２７は、キーボードやマイクロフォンなどであり、視聴者が嗜好や各種の管理情報の登録や削除などを行うためのものである。また、ネットワークインターフェイス２８は、番組情報をダウンロードするためのイーサネット（登録商標）などのネットワークであり、データ記憶装置２９は、高速プロセッサシステム２４、２５により認識した視聴者の情報、その視聴者の選択した番組の情報、各種の番組に関する情報などを蓄積するものである。
【００１７】
また、メインの高速プロセッサシステム２４のプロセッサユニット３１から、チューナ回路１１に選局用の信号が供給されるとともに、ユーザインターフェイス用の各種の文字（数字、記号を含む）を表示するための信号が、映像音声処理回路１２に供給される。
【００１８】
そして、詳細は後述するが、撮像素子２１により、ディスプレイ１３（およびスピーカ１４）のテレビ放送を視聴している視聴者が撮像され、その映像信号が画像処理プロセッサ２２により前処理されてから高速プロセッサシステム２４、２５により処理されて視聴者がリアルタイムで認識される。この認識結果と、このときチューナ回路１１が選択している番組の情報とから、このときの視聴者の好む番組がリアルタイムで学習されるとともに、その学習結果が記憶装置２９に蓄積されていく。また、この学習結果にしたがって、このときの視聴者に適切と思われる番組の番組名がディスプレイ１３に表示されて推薦される。
【００１９】
〔３〕  動作ブロック
図２は、図１に示した受信装置について、動作ブロックにより示すものである。すなわち、撮像素子２１により視聴者が例えば数分の間隔で撮像され、そのカラー映像信号（３原色信号、あるいは輝度信号および色差信号）がメモリ２４に視聴者の画像データとしていったん書き込まれるとともに、この書き込まれた画像データが画像処理プロセッサ２２に供給され、ＸＹ平面上の輝度レベルによるパターンとされる。
【００２０】
すなわち、撮像素子２１により取り込まれた元の画像パターンをパターンＩ(x,y)（0≦x≦Ｎx-1、0≦y≦Ｎy-1）とすると、このパターンＩ(x,y)が、パターン認識に必要な情報の入手を容易にするため、256階調の白黒濃淡画像に処理される。なお、この処理によって得られる結果のパターンを画像処理後パターンＭ(x,y)（0≦x≦Ｎx-1、0≦y≦Ｎy-1）とする。
【００２１】
この画像処理後パターンＭ(x,y)を、あらかじめ用意した代表的ないくつかの人の代表顔パターンＲi(x,y)と比較する。ただし、i＝1〜n、n＝代表的な顔のパターン、0≦x≦Ｎxp-1、0≦y≦Ｎyp-1、Ｎxp＝顔パターンのＸ方向のピクセル数、Ｎyp＝顔パターンＹ方向のピクセル数である。
【００２２】
ここでは、代表的な相関法を用いるもので、これを図３に(1)式として示す。この(1)式の代表顔パターンＲ(m,n)がもっとも大きいものを、相関の高い候補としてサーチウインドウを決定する。
【００２３】
ただし、それぞれのパターンについて、ひとつのプロセッサユニットでパターンサーチを行うと、非常に時間がかかる。そこで、グリッドコンピューティングにより候補となるパターンを分担して処理する。
【００２４】
図２においては、メインの高速プロセッサシステム２４のプロセッサユニット３１が調停役となり、プロセッサシステム２４、２５のプロセッサユニット３１〜３４、３１〜３４のうち、通信可能なプロセッサユニットのすべてに対して、現在の負荷値Ｌi（i＝0〜m-1、ｍ＝メインのプロセッサユニット３１と通信可能なプロセッサユニットの数）を問い合わせる。この負荷値Ｌiは、各プロセッサユニットのＣＰＵ利用率などを指標とする。
【００２５】
その負荷値Ｌiをもとにして、あらかじめ用意されている典型的な人の顔の代表顔パターンＲi(x,y)を負荷の軽いプロセッサユニットに割り当てる。図２の場合には、プロセッサユニット３２〜３４に、代表顔パターンＲiと画像処理後パターンＭ(x,y)と比較する「人物特徴比較部」が割り当てられたことを示している。
【００２６】
各プロセッサユニットにおける各処理が終了した後、調停役であるプロセッサユニット３１に処理終了ステータスＲｅｔi（i＝1〜n）と、比較結果Ｃｏｍｐi（i＝1〜n）とを伝達する。
【００２７】
計算結果からそれが有効な比較結果であれば、そのサーチウインドウを決定して個人の特徴抽出を行い、個人認証を行う。図２においては、プロセッサユニット３４、３３、３２の順番で代表顔パターンＲi（i＝1〜n）との人物特徴比較が終了し、その結果、プロセッサユニット３２、３３の人物特徴比較部の結果が閾値より高く、人物の特徴を見出したことを示す。その結果を踏まえて切り出したサーチウインドウを、切り出しパターンＷk（k＝0〜nn-1、nn＝サーチウインドウの数。今の場合、nn＝２、サーチウィンドウの大きさをそれぞれ同じくxs、ysとする）とする。
【００２８】
このパターンＷkとすでに登録されている視聴者の登録視聴者顔パターンＳj(x,y)とを比較する。なお、j＝0〜n-1、n＝登録済みデータ数、0≦x≦Ｎxfp-1、0≦y≦Ｎyfp-1、Ｎxfp＝登録視聴者顔パターンのＸ方向のピクセル数、Ｎyfp＝登録視聴者顔パターンのＹ方向のピクセル数である。
【００２９】
そして、調停役のプロセッサユニット３１が通信可能なプロセッサユニットに対して、現在の負荷値Ｌi（i＝0〜m-1、m＝メインプロセッサユニットと接続されて通信可能なプロセッサユニットの数）を問い合わせる。その負荷値Ｌiにしたがってサーチウインドウを割り当てる。同時に特徴を比較するメインプログラムをプロセッサユニット３１からプロセッサユニット３３、３４へ転送する。
【００３０】
プロセッサユニット３３、３４は、転送されたデータおよびプログラムを用いて、「個人特徴比較部」において特徴を比較し、相関度Ｉk（k＝0〜mm-1、mm＝個人特徴抽出可能パターン数）を算出する。相関度Ｉkの算出は、ここでは、代表的な相関法を用いるもので、これを図３に(2)式として示す。
【００３１】
以上の処理を該当するサーチウィンドウと、登録されている視聴者の顔パターンのすべてとに対して行い、各相関度Ｉkをメインのプロセッサユニット３１に返信する。プロセッサユニット３１は、返信された各相関度Ｉk（k＝0〜mm-1）を比較し、もっとも相関度の高いいくつかのパターンＲi(x,y)（i＝0〜nn-1。nn＝個人特徴と合致したパターン数）が、撮像素子２１の撮像した現在の複数の視聴者の一人に該当すると判断し、ディスプレイ１３やスピーカ１４を通じて認識したことをフィードバックする。例えば、認識結果および挨拶として、「おはようございます、×××さん」、「こんにちは、○○○さん」などをディスプレイ１３に表示する。
【００３２】
また、撮像した視聴者が登録されていない場合には、新規に登録する旨、ディスプレイ１３に表示するとともに、「はじめまして、お名前は？」、「好きなジャンルをお選びください。」、「好きなタレントは誰ですか？ 」などの問い合わせの表示を行う。この問い合わせに対する回答が入力インターフェイス２７を通じて入力されたら、その回答と、顔パターンＳi(x,y)とを、プロセッサユニット３３の「人物特徴データ保存部」により記憶装置２９に保存する。
【００３３】
さらに、相関度が低い場合には、「×××さんですか？」と視聴者の名前を尋ねる表示を行う。そして、視聴者が返答を入力したら、初めての名前の場合には、以後、新規の登録時と同様の処理を行う。また、相関度が低いのにもかかわらず、同じ名前が返答された場合には、登録されている視聴者の顔パターンＳi(x,y)をプロセッサユニット３３の人物特徴データ保存部により変更する。
【００３４】
以上により複数の視聴者が確定した後、各視聴者の嗜好をリアルタイムに調停する。例えば、各ユーザの嗜好の学習結果を用いて、その時間におけるもっとも高い重み変数を有するユーザの嗜好を優先して番組を選択する。具体的には、特定視聴者の嗜好する番組をリアルタイムに学習し、また、検索する。視聴者の嗜好として、カテゴリ、出演者、キーワード、ザップ時間を学習項目とすることができる。
【００３５】
この場合、それぞれについて、任意の日時および時間帯における情報を生成する。具体的には、重みを時間の関数として表し、カテゴリの重み変数をωc(t)、出演者の重み変数をωm(t)、キーワードの重み変数をωk(t)、ザップ時間の重み変数をωz(t)とする。
【００３６】
そして、メインのプロセッサユニット３１が調停役となり、プロセッサユニット３１〜３４、３１〜３４のうち、通信可能なプロセッサユニットに対して、現在の負荷値Ｌi（i＝0〜m-1、m＝プロセッサユニット３１と接続されて通信可能なプロセッサユニットの数）を問い合わせる。その負荷値Ｌiを元に、プロセッサユニットに「ザップ情報計算部」および「嗜好情報計算部」を割り当てる。図２の例においては、ザップ情報計算部をプロセッサユニット３３に割り当て、嗜好情報計算部をプロセッサユニット３１に割り当てた場合である。
【００３７】
例えば、視聴者Ｕ1が、Ｍ月Ｄ日Ｗ曜日（祝日）のＨ1時Ｍ1分Ｓ1秒からＣ1チャンネルの視聴を開始し、同日のＨ2時Ｍ2分Ｓ2秒にチャンネルをＣ2チャンネルに切り換えた場合、その情報を取得して、例えば図４に示すようなデータリストを得る。
【００３８】
この情報を元にして、視聴者の視聴しているカテゴリの重み変数ωc(t)、出演者の重み変数ωm(t)、キーワードの重み変数ωk(t)を、プロセッサユニット３１の嗜好情報計算部において計算する。また、プロセッサユニット３３のザップ情報計算部において、ザップ時間の重み変数ωz(t)のそれぞれを算出する。具体的な算出方法として、統計的に膨大なデータを蓄積する方法があるが、発展例としてはニューラルネットワークや多変量分析による方法なども考えられる。
【００３９】
図５は、ある時刻、すなわち、Ｗ曜日（祝日）のＨ1時Ｍ1分Ｓ1秒における視聴者Ｕ1のカテゴリテーブルの重みの分布例を示し、図６は、同時刻における視聴者Ｕ1の出演者テーブルの重みの分布例を示す。また、図７は、同時刻における視聴者Ｕ1のキーワードテーブルの重みの分布例を示し、図８は、任意の時刻における視聴者Ｕ1のザップ時間の重みの分布例を示す。
【００４０】
同様に、図９は、Ｗ曜日（祝日）のＨ1時Ｍ1分Ｓ1秒における別の視聴者Ｕ2のカテゴリテーブルの重みの分布例を示し、図１０は、同時刻における視聴者Ｕ2の出演者テーブルの重みの分布例を示す。また、図１１は、同時刻における視聴者Ｕ2のキーワードテーブルの重みの分布例を示し、図１２は、任意の時刻における視聴者Ｕ2のザップ時間の重みの分布例を示す。なお、以上のデータは単独で視聴していた場合のデータに基づく学習結果である。
【００４１】
これらは膨大なデータ量となるので、このデータを処理するため、この時点において、各プロセッサユニットの負荷値Ｌiを元に、プロセッサユニットに「ザップ情報格納部」および「嗜好情報格納部」を割り当て、嗜好情報、ザップ時間のデータをそれぞれの算出手法に応じた適切なデータ形式で格納する。図２おいては、ザップ情報格納部をプロセッサユニット３３に割り当て、嗜好情報格納部をプロセッサユニット３４に割り当てた場合である。さらに、各プロセッサユニットの負荷値Ｌiを元に「番組収集部」を負荷の少ないプロセッサユニット３４に割り当ててＥＰＧやＷｅｂのデータを収集する。
【００４２】
次に、プロセッサユニット３１の「番組嗜好比較部」において、現在時刻における嗜好番組の情報を、プロセッサユニット３４の嗜好情報格納部のデータから算出し、先に得られたＥＰＧやＷｅｂの番組情報から適切な番組を、番組収集部のデータから検索する。また、現在時刻におけるザップ時間から得られるチャンネル切り換えタイミングをザップ情報格納部からのデータ算出し、ザップ情報格納部の重みデータから番組推薦のタイミングを計算する。
【００４３】
具体的には、Ｈ1時Ｍ1分Ｓ1秒に、視聴者Ｕ1と視聴者Ｕ2とが認識された場合、その時刻におけるもっとも重みの重い情報を、図５〜図７および図９〜図１１から取得して比較する。すると、図５から重み50の「ニュース／報道」が挙げられるので、ＥＰＣなどからニュース／報道に関する番組を選択すれば、視聴者Ｕ1の嗜好が選択されたことになる。
【００４４】
そして、「嗜好情報推薦部」は、視聴者Ｕ1が通常チャンネルを切り換える最適なタイミングで、視聴者Ｕ1が視聴すると予想される最適な番組の情報を、例えば「××チャンネルでニュースが始まりました。」などのようにディスプレイ１３に表示する。
【００４５】
したがって、上述の装置によれば、番組を能動的に提供することができ、視聴者は、番組表を意識することなくリアルタイムで最適な番組を視聴することができる。また、ザップ時間により、視聴者がチャンネルを切り換えると予想される最適なタイミングで、好みの番組を視聴することができる。
【００４６】
なお、複数の視聴者を特定する方法として、視聴者間の合成を用いることもできる。具体的には、Ｈ3時Ｍ3分Ｓ3秒に、視聴者Ｕ1と視聴者Ｕ2が認識された場合、その時刻におけるもっとも重みの重い情報を、図５〜図７および図９〜図１１から取得して加算し、図１３〜図１５に示すように、重みの和を算出する。そして、この算出結果からその時刻におけるもっとも重み変数の大きい「サッカー」（図１５参照）を選択し、その時刻におけるサッカーに関する情報をＥＰＧなどから取得して、視聴者に最適な番組情報をとして提供する。
【００４７】
したがって、この場合には、視聴者Ｕ1と視聴者Ｕ2との嗜好を満たす番組を推薦することができる。
【００４８】
あるいは、例えば図１４に示すように、あらかじめ設定された視聴者間の嗜好優先順位に基づいて番組を推薦することもできる。また、視聴している時間の長さの順番に応じて、視聴者に番組を推薦することもできる。
【００４９】
〔４〕  グリッドコンピューティング
ここでは、図１の受信装置に適用できるグリッドコンピュータシステムについて説明する。
【００５０】
〔４−１〕  構成
グリッドコンピューティングとは、ネットワークにつながる複数の情報処理装置を協調動作させて高い演算性能を実現する技術である。以下に、３台の情報処理装置の間で分散処理を行うシステムの場合の一例について、図１７により説明する。
【００５１】
図１７に示す例においては、３台の情報処理装置１００〜３００がネットワークを通じて互いに接続されている。情報処理装置１００は、１つのメインプロセッサ１０１と、１つあるいは複数のサブプロセッサ、この例においては、３つのサブプロセッサ１１１〜１１３と、ＤＭＡコントローラ１２１と、ディスクコントローラ１２２とを有し、単一の集積回路に構成されている。
【００５２】
また、メインプロセッサ１０１およびサブプロセッサ１１１〜１１３は、それぞれローカルストレージ１３１を有している。そして、メインプロセッサ１０１は、サブプロセッサ１１１〜１１３によるプログラムあるいはデータの処理のスケジュール管理と、全般的な管理とを行う。サブプロセッサ１１１〜１１３は、メインプロセッサ１０１の制御によって並列に、かつ、独立にプログラムあるいはデータの処理を実行する。
【００５３】
なお、メインプロセッサ１０１内でプログラムが動作する場合もある。また、メインプロセッサ１０１のプログラムが、サブプロセッサ１１１のプログラムと連携して動作する場合もある。さらに、情報処理装置１００〜３００は、ネットワーク全体を通して当該情報処理装置を一意的に識別できる識別子が情報処理装置ＩＤとして割り当てられている。メインプロセッサ１０１およびサブプロセッサ１１１〜１１３も、同様に識別可能な識別子がメインプロセッサＩＤおよびサブプロセッサＩＤとして割り当てられている。
【００５４】
ＤＭＡコントローラ１２１は、メインメモリ１４１に格納されているプログラムあるいはデータへのアクセスを行う。なお、メインメモリ１４１は、情報処理装置１００の外部に接続されているもので、例えばＤＲＡＭとされている。
【００５５】
また、ディスクコントローラ１２２は、情報処理装置１００と接続されている外部記録装置１４２へのアクセスを行う。外部記録装置１４２には、固定ディスク（ハードディスク）、リムーバブルディスク、ＭＯ、ＣＤ±ＲＷ、ＤＶＤ±ＲＷなどの光ディスク、メモリディスクなどが想定され、ＳＲＡＭ、ＲＯＭなども含まれる。
【００５６】
そして、メインプロセッサ１０１、サブプロセッサ１１１〜１１３、ＤＭＡコントローラ１２１、ディスクコントローラ１２２はバス１０２によって接続されている。さらに、他の情報処理装置２００、３００も情報処理装置１００と同様に構成されているものであり、詳細は省略する。
【００５７】
〔４−２〕  データの不整合の回避
上述のように、サブプロセッサ１１１〜１１３は、独立にプログラムあるいはデータの処理を実行するが、もしも異なるサブプロセッサが同一メインメモリ１４１の同一領域に対して、同時に読み出しあるいは書き込みを行った場合には、データの不整合を生じる可能性がある。したがって、メインメモリ１４１にアクセスする場合には、ある手順が必要となるが、その手順について、図１８により説明する。
【００５８】
図１８Ａにおいて、メインメモリ１４１は、複数のアドレス指定可能な「メモリロケーション」から構成される。各メモリロケーションに対して、データの状態情報を格納するための「追加セグメント」が割り振られる。追加セグメントは、「Ｆ／Ｅビット」、「サブプロセッサＩＤ」、「ローカルストレージアドレス」（ＬＳアドレス）を含む。各メモリロケーションには「アクセスキー」も割り振られるが、これについては後述する。
【００５９】
そして、Ｆ／Ｅビットは、以下のように定義される。  
Ｆ／Ｅビット＝“０”のとき
サブプロセッサ（１１１〜１１３）により読み出され、処理中あるいは空き状態であるため、最新データではない無効データである。読み出し不可だが、予約は可能であり、“１”になったときにあらかじめ読み出し予約情報として追加セグメントに書き込まれたサブプロセッサＩＤ、ローカルストレージアドレスへ読み出される。  
すなわち、複数のサブプロセッサによりデータを多段階に処理する必要がある場合、上記のように構成することにより、前段階の処理を行うサブプロセッサが、処理済みのデータをメインメモリ１４１の所定のアドレスへ書き込んだ直後に、ただちにそのデータが後段階の処理を行うサブプロセッサへ読み出されることになり、非常に好適である。また、書き込み可能であり、書き込み後、“１”になる。
【００６０】
Ｆ／Ｅビット＝“１”のとき
サブプロセッサ（１１１〜１１３のどれか）により読み出されておらず、したがって、処理中ではない最新データである。読み出し可能であり、読み出し後、“０”になる。書き込み不可である。  
Ｆ／Ｅビットは、以上のように定義される。
【００６１】
図１８Ｂに示すサブプロセッサ１１１のローカルストレージ１３１も、複数のアドレス指定可能なメモリロケーションから構成される。各メモリロケーションに対してはやはり、追加セグメントが割り振られる。追加セグメントは、メインメモリ１４１の追加セグメントの内容に加えてビジービットを含む。
【００６２】
メインメモリ１４１のデータをローカルストレージ１３１のメモリロケーションへ読み出すときには、対応するビジービットを“１”に設定し、予約する。ビジービットが“１”のメモリロケーションには他のデータは格納不可である。ローカルストレージ１３１のメモリロケーションへ読み出した後、ビジービットは“０”になり、任意の目的に使用可能になる。
【００６３】
さらに、図１８Ａに示すように、情報処理装置１００のメインメモリ１４１には複数の「サンドボックス」を有する。サンドボックスはメインメモリ１４１の領域を画定するものであり、各サンドボックスはサブプロセッサ１１１〜１１３に割り当てられ、排他的に使用可能とされる。すなわち、サブプロセッサ１１１〜１１３のそれぞれは、自身に割り当てられたサンドボックスを使用可能だが、前述の領域を超えてデータのアクセスを行えない。また、図１８Ａに示すように、メインメモリ１４１は複数のメモリロケーションから構成されるが、サンドボックスはこれらのメモリロケーションの集合である。
【００６４】
さらに、メインメモリ１４１の排他制御を実現するために、図１９に示すようなキー管理テーブルが用意される。このキー管理テーブルは、ＳＲＡＭのような比較的高速のメモリに用意され、ＤＭＡコントローラ１２１と関連付けられる。キー管理テーブルの各エントリには、サブプロセッサ１１１〜１１３を識別する「サブプロセッサＩＤ」、「サブプロセッサキー」および「キーマスク」が含まれる。
【００６５】
ここで、サブプロセッサ１１１〜１１３のうちの任意のサブプロセッサがメインメモリ１４１を使用するときのプロセスを図１８および図１９を用いて説明する。サブプロセッサはＤＭＡコントローラ１２１へ、読み出しあるいは書き込みコマンドを出力する。このコマンドには、そのサブプロセッサ自身のサブプロセッサＩＤと、使用要求対象先であるメインメモリ１４１のアドレスとが含まれる。ＤＭＡコントローラ１２１は、このコマンドを実行する前にキー管理テーブルを参照し、使用要求元であるサブプロセッサのサブプロセッサキーを調べる。
【００６６】
次いで、ＤＭＡコントローラ１２１は、調べたサブプロセッサキーと、サブプロセッサ１１１の使用要求先である図１８に示されるメインメモリ１４１のメモリロケーションに割り振られたアクセスキーとを比較する。２つのキーが一致した場合のみ、前述のコマンドを実行する。
【００６７】
また、図１９に示すキーマスクの使用方法として、キーマスクの任意のビットが“１”になることにより、関連付けられたサブプロセッサキーの対応するビットが“０”あるいは“１”になることができる。
【００６８】
例えば、サブプロセッサキーが“１０１０”であるとする。通常このサブプロセッサキーによって“１０１０”のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが“０００１”に設定されている場合、このサブプロセッサキーを用いて“１０１０”あるいは“１０１１”のいずれかのアクセスキーを持つサンドボックスへのアクセスが可能となる。以上のようにしてサンドボックスの排他性を実現する。
【００６９】
すなわち、前述の複数のサブプロセッサ１１１〜１１３によりデータを多段階に処理する必要がある場合、上述のように構成することにより、前段階の処理を行うサブプロセッサと、後段階の処理を行うサブプロセッサだけがメインメモリ１４１の所定のアドレスへアクセスでき、したがって、データの保護が可能となる。
【００７０】
〔４−３〕  分散処理の手順
ここでは、図１７のシステムにより分散処理を行う手順について説明する。ネットワーク上の情報処理装置１００〜３００の間では、ソフトウェアセルが伝送される。ある情報処理装置は、コマンド、プログラムおよびデータを含むソフトウェアセルを生成し、ネットワークを通じて他の情報処理装置に送信することにより処理を分散できる。
【００７１】
ソフトウェアセルは、例えば図２０に示すように構成される。ここで、「送信元ＩＤ」には、ソフトウェアセルの送信元である情報処理装置のネットワークアドレスおよび情報処理装置ＩＤ、さらにメインプロセッサＩＤおよびサブプロセッサＩＤが含まれる。「送信先ＩＤ」および「応答先ＩＤ」には、ソフトウェアセルの送信先である情報処理装置およびソフトウェアセルの実行結果の応答先である情報処理装置について同じ情報が含まれる。
【００７２】
「セルインターフェース」には、ソフトウェアセルの利用に必要な情報が含まれ、「グローバルＩＤ」、「必要なサブプロセッサ」、「サンドボックスサイズ」、「前回のソフトウェアセルＩＤ」から構成される。グローバルＩＤは、ネットワーク全体を通してソフトウェアセルを一意的に識別できるものであり、送信元ＩＤおよびソフトウェアセルの作成あるいは送信の日付と時刻に基づいて作成される。また、必要なサブプロセッサによって、ソフトウェアセルの実行に必要な最低数のサブプロセッサが与えられる。
【００７３】
さらに、サンドボックスサイズによって、ソフトウェアセルの実行に必要なメインメモリ１４１内およびサブプロセッサ１１１〜１１３のローカルストレージ１３１のメモリ量が与えられる。前回のソフトウェアセルＩＤによって、ストリーミングデータなどのシーケンシャルな実行を要求する１グループのソフトウェアセルの前回のソフトウェアセルの識別子が提供される。
【００７４】
また、ソフトウェアセルにおいて、「実行セクション」が、「ＤＭＡコマンド」、「プログラム」、「データ」から構成される。ＤＭＡコマンドには、プログラムの起動に必要な一連のＤＭＡコマンドが含まれ、プログラムには、サブプロセッサによって実行されるサブプロセッサプログラムが含まれる。また、データとは、これらのサブプロセッサプログラムを含むプログラムによって処理されるデータである。
【００７５】
さらに、ＤＭＡコマンドには、「ロードコマンド」、「キックコマンド」、「ステータスコマンド」、「ステータス返信コマンド」、「機能プログラム実行コマンド」がある。ロードコマンドは、メインメモリ１４１の情報を、サブプロセッサのローカルストレージへロードするコマンドである。このため、ロードコマンドは、ロードコマンド本体の他に、「メインメモリアドレス」、「サブプロセッサＩＤ」、「ローカルストレージアドレス」（ＬＳアドレス）を含む。
【００７６】
なお、メインアドレスは、情報のロード元であるメインメモリ１４１の所定領域のアドレスを示す。サブプロセッサＩＤおよびローカルストレージアドレスは、情報のロード先であるサブプロセッサの識別子およびローカルストレージ１３１のアドレスを示す。
【００７７】
キックコマンドは、プログラムの実行を開始するコマンドである。キックコマンドは、キックコマンド本体の他に「サブプロセッサＩＤ」と、「プログラムカウンタ」とを有する。なお、サブプロセッサＩＤは、キックする対象サブプロセッサを識別し、プログラムカウンタは、プログラムの実行用プログラムカウンタのためのアドレスを与える。
【００７８】
ステータスコマンドは、送信先ＩＤに示される情報処理装置の現在の状態（装置情報）を要求するコマンドであり、ステータス返信コマンドは、後述するとおりである。また、機能プログラム実行コマンドは、ある装置が他の装置に対して機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信したスレーブは、後述する「機能プログラムＩＤ」によって、起動すべき機能プログラムを識別する。
【００７９】
そして、ステータス返信コマンドは、ステータスコマンドを受信した情報処理装置が、自身の装置情報を当該ステータスコマンドに含まれる応答先ＩＤに示される情報処理装置へ応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納するが、そのときのデータ領域の構造の一例を図２１に示す。
【００８０】
この図２１を用いて、ＤＭＡコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造について説明する。
【００８１】
「情報処理装置ＩＤ」は、自身の装置情報を応答する情報処理装置を識別するための識別子であり、電源投入時にメインプロセッサ１０１によって、電源投入時の日付、時刻、情報処理装置のネットワークアドレス、サブプロセッサの数などに基づいて生成される。「情報処理装置種別ＩＤ」には、情報処理装置の特徴を表す値が含まれる。この情報処理装置の特徴としては、例えば、ハードディスクレコーダー、ＰＤＡ、テレビなどといった商品を表す場合もあれば、画像処理、映像記録再生などといった機能を表す場合もある。
【００８２】
「ＭＳステータス」は、情報処理装置が、マスタあるいはスレーブのどちらで動作しているかを表し、“０”のときにはマスタとして動作し、“１”のときにはスレーブとして動作していることを表す。
【００８３】
「メインプロセッサ動作周波数」はメインプロセッサ１０１の動作周波数を表す。「メインプロセッサ使用率」はメインプロセッサ１０１で現在動作しているすべてのプログラムが、メインプロセッサ１０１を使用している割合を表す。「サブプロセッサ数」は、情報処理装置が有するサブプロセッサの数を表す。「サブプロセッサＩＤ」は、情報処理装置におけるサブプロセッサを識別するための識別子である。
【００８４】
「サブプロセッサステータス」はサブプロセッサの状態を表すものであり、unused、reserved、busyなどの状態がある。unusedは、当該サブプロセッサが未使用の場合であり。reservedは、現在は未使用であるが、予約されている場合、busyは使用中であることを示す。
【００８５】
「サブプロセッサ使用率」は、当該サブプロセッサで動作しているプログラムが、そのサブプロセッサを使用している割合を表す。ステータスがbusyの場合には、サブプロセッサ使用率は現在の使用率を示し、reservedの場合には、後に使用されるときの使用率を示す。そして、サブプロセッサＩＤ、サブプロセッサステータス、サブプロセッサ使用率は、これらを１組とし、サブプロセッサ数だけ存在する。
【００８６】
「メインメモリ総容量」および「メインメモリ使用量」は、情報処理装置に接続されているメインメモリ１４１の総容量および現在使用中の容量を表す。
【００８７】
「外部記録装置数」は、情報処理装置に接続されている外部記録装置１４２の数を表し、「外部記録装置ＩＤ」は、情報処理装置に接続されている外部記録装置１４２を一意的に識別する情報を表す。「外部記録装置種別ＩＤ」には、対応する外部記録装置１４２の種類を表す情報が含まれる。この外部記録装置１４２の種類としては、前述のものが想定される。「外部記録装置総容量」および「外部記録装置使用量」は、外部記録装置ＩＤにより識別される外部記録装置１４２の総容量および現在使用中の容量を表す。
【００８８】
外部記録装置ＩＤ、外部記録装置種別ＩＤ、外部記録装置総容量、外部記録装置使用量は、これらを１組とし、外部記録装置１４２の数だけ存在する。すなわち、１つの情報処理装置に複数の外部記録装置が接続されている場合であっても、それぞれの外部記録装置には異なる外部記録装置ＩＤが割り当てられ、また、外部記録装置種別ＩＤ、外部記録装置総容量、外部記録装置使用量も個別に管理されることになる。
【００８９】
〔４−４〕  ソフトウェアセルの生成および実行
ここでは、ソフトウェアセルを生成し、実行するまでのプロセスについて説明する。情報処理装置１００〜３００のうちのある情報処理装置のメインプロセッサ１０１はソフトウェアセルを生成し、ネットワークを通じて他の情報処理装置へ送信する。送信元である情報処理装置、送信先である情報処理装置および応答先である情報処理装置は、前述の送信元ＩＤ、送信先ＩＤおよび応答先ＩＤにより識別される。
【００９０】
ソフトウェアセルを受信した他の情報処理装置のメインプロセッサ１０１は、メインメモリ１４１にそのソフトウェアセルを格納する。メインプロセッサ１０１はソフトウェアセルを評価し、それに含まれるＤＭＡコマンドを処理する。
【００９１】
具体的には、メインプロセッサ１０１は、まず、ロードコマンドを実行する。すると、ロードコマンドに含まれるメインメモリ１４１のメインメモリアドレスから、同様にロードコマンドに含まれるサブプロセッサＩＤと、ローカルストレージアドレスに対応するサブプロセッサのローカルストレージ１３１の所定領域へ情報がロードされる。ここで言う情報として、受信したソフトウェアセルに含まれるサブプロセッサプログラムあるいはデータがあるが、その他のデータなどであってもよい。
【００９２】
次に、メインプロセッサ１０１は、キックコマンドを、このキックコマンドに含まれるサブプロセッサＩＤに対応するサブプロセッサ１１１へ、同様にキックコマンドに含まれるプログラムカウンタとともに出力する。サブプロセッサ１１１はキックコマンドおよびプログラムカウンタにしたがってサブプロセッサプログラムを実行する。そして、その実行結果をメインメモリ１４１に格納し、その後、実行完了したことをメインプロセッサ１０１へ通知する。
【００９３】
また、メインメモリ１４１において実行されるメインメモリ用プログラムを、ソフトウェアセルを用いて他の情報処理装置へ送信することも考えられる。その場合には、サブプロセッサ１１１プログラムの代わりにメインメモリ１４１用プログラムを含むロードコマンドを送信することになる。
【００９４】
他の情報処理装置のメインメモリ１４１へ送信したメインメモリ用プログラムを実行するときには、例えば、メインプロセッサＩＤ、メインメモリアドレス、メインメモリ用プログラムを識別するための識別子、プログラムカウンタを含み、ＤＭＡコマンドがキックコマンドであるソフトウェアセルを同様に他の情報処理装置へ送信する。
【００９５】
このようにしてソフトウェアセルを使用することにより、ソフトウェアセルの送信元である情報処理装置は、送信先である他の情報処理装置をユーザが操作する必要なく、サブプロセッサプログラムあるいはメインメモリ用プログラムを他の情報処理装置へ送信し、そのサブプロセッサプログラムを他の情報処理装置のサブプロセッサへロードさせ、そのサブプロセッサプログラムあるいはメインメモリ用プログラムを、他の情報処理装置により実行させることができる。
【００９６】
〔４−５〕  処理例
ここでは、ネットワークに接続されている複数の情報処理装置、例えば図２２に示すように、３台の情報処理装置１００〜３００が仮想的な１台の装置として動作するための前提処理として、情報処理装置の電源投入後の処理を説明する。  図２３は、情報処理装置１００〜３００のうちの任意の情報処理装置、例えば情報処理装置１００のメインメモリ１４１が記憶するソフトウェアの構成を示すものである。各プログラムは機能あるいは特徴によってカテゴライズされている。また、これらのプログラムは情報処理装置１００の電源投入前には、情報処理装置１００に接続されている外部記録装置１４２に格納されている。
【００９７】
電源を投入すると、メインプロセッサ１０１は、デバイスドライバのカテゴリに属する各プログラムおよび制御プログラムのカテゴリに属する各プログラムをメインメモリ１４１にロードする。各プログラムをメインメモリ１４１にロードする手順は、以下のとおりである。
【００９８】
まず、メインプロセッサ１０１は、ディスクコントローラ１２２に対して読み出し命令を実行することにより外部記録装置１４２からプログラムを読み出す。そして、ＤＭＡコントローラ１２１への書き込み命令を実行することにより、その読み出したプログラムをメインメモリ１４１にロードする。なお、機能プログラムのカテゴリに属する各プログラムについては、必要なときに必要なものだけをロードしてもよく、他のカテゴリに属する各プログラムと同様に、電源投入後にロードしてもよい。
【００９９】
機能プログラムには、機能プログラムごとに一意な識別子が機能プログラムＩＤとして割り当てられている。機能プログラムＩＤは、日付や時刻、情報処理装置ＩＤなどから機能プログラムの作成の段階で決定される。
【０１００】
メインプロセッサ１０１は、自身が動作する情報処理装置に関する装置情報を格納するための領域をメインメモリ１４１に確保し、その装置情報を自装置の装置情報テーブルとして記録する。ここでの装置情報とは、図２１に示される情報処理装置ＩＤ以下の情報である。
【０１０１】
そして、メインプロセッサ１０１は、メインメモリ１４１にロードされたマスタ／スレーブマネージャを実行する。マスタ／スレーブマネージャは処理が終了すると、終了通知をメインプロセッサ１０１へ送る。メインプロセッサ１０１はマスタ／スレーブマネージャから終了通知を受け取ると、次に、能力交換プログラムを実行する。マスタ／スレーブマネージャおよび能力交換プログラムは、情報処理装置１００の電源が切断されるまで動作する常駐プログラムである。
【０１０２】
マスタ／スレーブマネージャは、自身が動作する情報処理装置１００がネットワークに接続されていることを検知すると、同一ネットワークに接続されている他の情報処理装置２００、３００の存在を確認する。マスタ／スレーブマネージャは、もしもネットワークに他の情報処理装置が存在しないことを確認すると、前述の自装置の装置情報テーブルにおけるＭＳステータスを“０”に設定する。ネットワークに他の情報処理装置が存在することを確認した場合、ＭＳステータスを“０”以外（例えば“１”）に設定する。
【０１０３】
また、マスタ／スレーブマネージャは、常にネットワークの状況を確認し、ネットワークに新たに情報処理装置が接続されたことや、ネットワークに接続されている情報処理装置の電源が切断されたこと、あるいはネットワークから情報処理装置が切り離されたことを監視し、ネットワークの接続状態に変化があると、その情報を能力交換プログラムに通知する。
【０１０４】
能力交換プログラムは、自身が動作する情報処理装置がマスタである場合、ネットワークに接続されている他の情報処理装置に関する装置情報を取得する。装置情報の取得は、前述したように、ＤＭＡコマンドがステータスコマンドであるソフトウェアセルを生成・送信し、その後ＤＭＡコマンドがステータス返信コマンドであり、データとして他の情報処理装置に関する装置情報を含むソフトウェアセルを受信することで可能である。
【０１０５】
能力交換プログラムは、前述の自装置の装置情報テーブルと同様に、取得した他のすべての情報処理装置に関する装置情報を格納するための領域をメインメモリ１４１に確保し、当該情報を他装置の装置情報テーブルとして記録する。すなわち、マスタのメインメモリ１４１には、ネットワークに接続されている自身を含むすべての情報処理装置の装置情報テーブルが記録される。
【０１０６】
一方、能力交換プログラムが動作する情報処理装置がスレーブである場合、ネットワークに接続されているマスタの情報処理装置および自身以外のすべてのスレーブの情報処理装置に関する装置情報を取得する。そして装置情報に含まれる情報処理装置ＩＤおよびＭＳステータスをメインメモリ１４１に記録する。すなわち、スレーブには、自装置に関するすべての装置情報が装置情報テーブルとして記録されるとともに、ネットワークに接続された自身以外のすべての情報処理装置について、その情報処理装置ＩＤおよびＭＳステータスが装置情報テーブルとして記録されることになる。
【０１０７】
また、能力交換プログラムは、新たにネットワークに情報処理装置が接続されたことを示すネットワーク状態の変化通知をマスタ／スレーブマネージャから受信すると、その情報処理装置に関する装置情報を取得する。同様にネットワークから情報処理装置が切り離された、あるいは電源が切断されたというネットワーク状態の変化通知を受信すると、当該装置の装置情報テーブルをメインメモリ１４１から削除する。
【０１０８】
〔４−６〕  マスタおよびスレーブの制御フロー
ネットワークに接続されている複数の情報処理装置を仮想的な１台の情報処理装置として動作させるために、マスタの情報処理装置（以下「マスタ」と呼ぶ）が、ユーザの操作およびスレーブとなる情報処理装置（以下「スレーブ」と呼ぶ）の動作状況を把握する必要がある。
【０１０９】
図２４は、本ネットワークに接続されている３台の情報処理装置１００〜３００が、仮想的な１台の情報処理装置として動作する様子を示すものである。この例においては、情報処理装置１００がマスタとして動作し、情報処理装置２００および情報処理装置３００がスレーブとして動作し、ユーザが情報処理装置２００を操作すると、この操作に応じた処理を情報処理装置３００が実行する場合である。また、図２５は、その場合のフローチャートを示す。
【０１１０】
ユーザが情報処理装置２００を操作すると、その操作された情報処理装置がマスタあるいはスレーブに関わらず、その操作情報は常にマスタに送信される。マスタにおけるメインプロセッサ１０１は、当該操作情報に従い、実行する機能プログラムを選択する。このとき、必要ならば、前述の方法にしたがい外部記録装置１４２からメインメモリ１４１へ機能プログラムをロードする。実行時に機能プログラムは、自身が実行されるときに必要なメインプロセッサ１０１、サブプロセッサ１１１、メインメモリ１４１、外部記録装置１４２に関する情報をメインプロセッサ１０１に通知する。ここでの情報とは、図２１に示される情報処理装置ＩＤ以下の情報である。
【０１１１】
メインプロセッサ１０１は、メインメモリ１４１に記録されている前述の自装置あるいは他装置の装置情報テーブルに基づき、当該機能プログラムを実行可能なスレーブを選択する。マスタは、選択されたスレーブへ機能プログラムの実行を要求する。このとき、マスタは、前述の機能プログラムの実行に必要な情報等に基づき、自身のメインメモリ１４１に記録された選択されたスレーブに関する装置情報テーブルを更新する。
【０１１２】
機能プログラムの実行を要求されたスレーブのメインプロセッサ１０１は、機能プログラムを実行する。その場合にも、必要ならばスレーブのメインプロセッサ１０１は、前述の方法にしたがい外部記録装置１４２からメインメモリ１４１へ機能プログラムをロードする。
【０１１３】
ここで、機能プログラムの実行を要求されたスレーブと接続された外部記録装置１４２に必要な機能プログラムが記録されていない場合には、他の情報処理装置１００が前述のメインメモリ１４１用プログラムとして当該機能プログラムを機能プログラムの実行を要求されたスレーブへ送信してもよい。さらにメインメモリ１４１用プログラムと同様に、サブプロセッサ１１１プログラムも必要ならばソフトウェアセルを用いることにより他の情報処理装置１００へ送信し、当該他の情報処理装置１００のサブプロセッサ１１１へロードさせ、当該サブプロセッサ１１１プログラムを他の情報処理装置１００により実行させることができる。
【０１１４】
そして、機能プログラムの処理終了後、終了通知をマスタに送信する。マスタは終了通知を受信することにより、機能プログラムを実行したスレーブに関する装置情報テーブルを更新する。
【０１１５】
また、マスタのメインプロセッサ１０１は、自装置あるいは他装置の装置情報テーブルに基づき、当該機能プログラムを実行可能な情報処理装置１００として自身を選択する場合もあり得る。その場合には、マスタが機能プログラムを実行する。その際にはスレーブのメインメモリ１４１に記録されたマスタに関する装置情報テーブルが、マスタの動作状況に応じて更新されることになる。
【０１１６】
このようにして、ユーザは、複数の情報処理装置のうちの１台の情報処理装置だけを操作することにより、他の情報処理装置を操作しなくても、複数の情報処理装置を仮想的な１台の情報処理装置として動作させることができる。
【０１１７】
〔４−７〕  情報処理装置の具体例
図２６は、情報処理装置の具体例を示す。情報処理装置１００および２００は、ハードディスクドライブを構成し、映像や音声をハードディスクに記録するハードディスクレコーダを構成している。このハードディスクレコーダ（情報処理装置）１００には、映像を表示するためのモニタ１５１と、音声を出力するためのスピーカ１５２とが接続されている。情報処理装置３００は、ＰＤＡ（個人情報端末）を構成し、情報処理装置４００は、携帯型のＣＤプレーヤを構成している。
【０１１８】
情報処理装置１００〜４００、すなわち、ハードディスクレコーダ１００、２００、ＰＤＡ３００、ＣＤプレイヤのハードウェアの構成例を、図２７、図２８、図２９に示し、ハードディスクレコーダ１００、２００、ＰＤＡ３００、ＣＤプレイヤ４００のソフトウェアの構成例を、図３０、図３１、図３２に示す。
【０１１９】
〔４−８〕  機能プログラムの起動
ここでは、機能プログラムの起動をマスタからスレーブに依頼する具体例を、図２６を用いて説明する。なお、前提条件として、マスタのハードディスクレコーダ１００のハードディスクの空き容量が録画時間に換算して10分とする。また、スレーブのハードディスクレコーダ２００のハードディスクの空き容量は、録画時間に換算して20時間とする。
【０１２０】
ユーザはハードディスクレコーダ１００に対して、２時間の番組録画予約の操作を行う。ハードディスクレコーダ１００はマスタであるので、ネットワークに接続された情報処理装置１００の情報テーブルから、２時間分の空きのあるハードディスクを有するセカンダリを検索する。この場合、検索される機器はハードディスクレコーダ２００となる。マスタはスレーブに対して２時間の番組予約の実行を依頼する。
【０１２１】
情報処理装置１００がネットワークから切り離された、あるいは主電源が切断された場合の処理を記述する。ネットワークから情報処理装置１００が切り離されると、それぞれの情報処理装置のマスタ／スレーブマネージャが、装置の切断を検知し、切断された情報処理装置ＩＤとともに、切断情報を能力交換プログラムに通知する。能力交換プログラムは、マスタ／スレーブマネージャから通知された情報処理装置ＩＤに対応した機器情報を、機器情報テーブルから削除する。
【０１２２】
ネットワークから切断された情報処理装置がマスタの場合、現在ネットワークに接続されている情報処理装置のうち、スレーブからマスタに変更する装置を決定する必要があるが、次にその処理を説明する。
【０１２３】
マスタ／スレーブマネージャから通知された切断情報がマスタであった場合、情報処理装置ＩＤを数値に置き換え、自身の情報処理装置ＩＤと、自身が管理する装置情報テーブルの情報処理装置ＩＤとを比較し、もしも、自身の情報処理装置ＩＤが、装置情報テーブルの情報処理装置ＩＤに比べて最小であった場合、そのスレーブはマスタに移行する。
【０１２４】
マスタに移行すべきスレーブは、マスタの動作に切り換わるために、ＭＳステータスを“０”に設定し、先述のマスタにおける装置情報の取得と同様に、ネットワークに接続されたすべての情報処理装置の装置情報を取得し、メインメモリ１４１に記録する。
【０１２５】
〔５〕  まとめ
上述の受信装置によれば、複数の視聴者を認識し、嗜好を優先される視聴者をあるアルゴリズムによって選出し、その選出結果にしたがって適切と思われる番組を推薦しているので、視聴者の嗜好に応じたテレビ番組の情報をリアルタイムに提供することができる。さらに、その番組の推薦を、ザップ時間にしたがって視聴者にとって適切なタイミングで提供することができる。
【０１２６】
また、処理を複数の処理部に分割するとともに、各プロセッサユニットの状態を認識して負荷の低いプロセッサユニットに割り当てているので、リアルタイムで視聴者を特定することができ、その視聴者に適切な番組を推薦することができる。
【０１２７】
〔略語の一覧〕
ＣＤ    ：Compact Disc
CD±RW  ：CD +ReWritable, CD ReWritable
ＣＰＵ  ：Central Processing Unit
ＤＭＡ  ：Direct Memory Access
ＲＡＭ  ：Random Access Memory
ＤＲＡＭ：Dynamic RAM
DVD±RW ：DVD +ReWritable, DVD ReWritable
ＥＰＧ  ：Electronic Program Guide
ＩＤ    ：IDentification
ＭＯ    ：Magneto-Optical disk
ＰＤＡ  ：Personal Digital Assistant
ＲＯＭ  ：Read Only Memory
ＳＲＡＭ：Static RAM
ＳＴＢ  ：Set Top Box
Ｗｅｂ  ：World Wide Web
【図面の簡単な説明】
【０１２８】
【図１】この発明の一形態を示す系統図である。
【図２】この発明の一形態を示す動作ブロック図である。
【図３】この発明を説明するための数式を示す図である。
【図４】この発明を説明するための表を示す図である。
【図５】この発明を説明するための表を示す図である。
【図６】この発明を説明するための表を示す図である。
【図７】この発明を説明するための表を示す図である。
【図８】この発明を説明するための表を示す図である。
【図９】この発明を説明するための表を示す図である。
【図１０】この発明を説明するための表を示す図である。
【図１１】この発明を説明するための表を示す図である。
【図１２】この発明を説明するための表を示す図である。
【図１３】この発明を説明するための表を示す図である。
【図１４】この発明を説明するための表を示す図である。
【図１５】この発明を説明するための表を示す図である。
【図１６】この発明を説明するための表を示す図である。
【図１７】コンピュータシステムの一例を示す系統図である。
【図１８】図１７のシステムを説明するための図である。
【図１９】図１７のシステムを説明するための図である。
【図２０】図１７のシステムを説明するための図である。
【図２１】図１７のシステムを説明するための図である。
【図２２】仮想情報処理装置を説明するための図である。
【図２３】情報処理装置のソフトウェア構成の一例を示す図である。
【図２４】図２２の装置を説明するための図である。
【図２５】図２２の装置を説明するための図である。
【図２６】図２２の装置を説明するための図である。
【図２７】情報処理装置のハードウェア構成の一例を示す図である。
【図２８】情報処理装置のハードウェア構成の一例を示す図である。
【図２９】情報処理装置のハードウェア構成の一例を示す図である。
【図３０】情報処理装置のソフトウェア構成の一例を示す図である。
【図３１】情報処理装置のソフトウェア構成の一例を示す図である。
【図３２】情報処理装置のソフトウェア構成の一例を示す図である。
【符号の説明】
【０１２９】
１１…チューナ回路、１２…映像音声回路、１３…ディスプレイ、１４…スピーカ、２１…撮像素子、２２…画像処理プロセッサ、２４および２５…高速プロセッサシステム、２７…ユーザ入力インターフェイス、２８…ネットワークインターフェイス、２９…データ記憶装置、３１〜３４…高速プロセッサユニット
【図１】
2005236354.tif 000003
【図２】
2005236354.tif 000004
【図３】
2005236354.tif 000005
【図４】
2005236354.tif 000006
【図５】
2005236354.tif 000007
【図６】
2005236354.tif 000008
【図７】
2005236354.tif 000009
【図８】
2005236354.tif 000010
【図９】
2005236354.tif 000011
【図１０】
2005236354.tif 000012
【図１１】
2005236354.tif 000013
【図１２】
2005236354.tif 000014
【図１３】
2005236354.tif 000015
【図１４】
2005236354.tif 000016
【図１５】
2005236354.tif 000017
【図１６】
2005236354.tif 000018
【図１７】
2005236354.tif 000019
【図１８】
2005236354.tif 000020
【図１９】
2005236354.tif 000021
【図２０】
2005236354.tif 000022
【図２１】
2005236354.tif 000023
【図２２】
2005236354.tif 000024
【図２３】
2005236354.tif 000025
【図２４】
2005236354.tif 000026
【図２５】
2005236354.tif 000027
【図２６】
2005236354.tif 000028
【図２７】
2005236354.tif 000029
【図２８】
2005236354.tif 000030
【図２９】
2005236354.tif 000031
【図３０】
2005236354.tif 000032
【図３１】
2005236354.tif 000033
【図３２】
2005236354.tif 000034