ソフトウエアアプリケーションをエミュレートする方法および装置
【課題】 異なる処理能力を有する複数のマイクロプロセッサを備えた将来の処理ユニットを設計するにあたって、ソフトウエアプログラムの充実したサポートに関するいくつかの問題に取り組む一方、よりよい解決策、好適には、より多目的に使えて効果的でコスト効率のよい解決策を得るのが望ましい。
【解決手段】 処理能力を調整する方法および装置は、記録媒体に記憶されたソフトウエアプログラムのバージョンを示す識別情報を取得し(S402)、ソフトウエアプログラムを実行する少なくとも一つのプロセッサの処理能力が、当該ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定し(S404)、その決定が肯定的である場合(S404のY)、一つ以上のプロセッサの処理能力を調整する。
【解決手段】 処理能力を調整する方法および装置は、記録媒体に記憶されたソフトウエアプログラムのバージョンを示す識別情報を取得し(S402)、ソフトウエアプログラムを実行する少なくとも一つのプロセッサの処理能力が、当該ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定し(S404)、その決定が肯定的である場合(S404のY)、一つ以上のプロセッサの処理能力を調整する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソフトウエアプログラムがプロセッサ上で実行されるときに得られる結果を向上させるために、プロセッサの処理能力を調整する方法および装置に関する。
【背景技術】
【0002】
家庭用および業務用のソフトウエアプログラムの設計に関するマーケティング・販売は、経済における発展分野および成長分野としての地位をいつも確保している。実際には、ソフトウエア開発者は、一見したところ飽くことがないと見える消費者の欲求を満たそうと、最新かつ向上したソフトウエアアプリケーションをしきりに模索している。ビデオゲーム、映画アニメーション、および特殊効果などのコンピュータグラフィックソフトウエアの分野ほどこのことが顕著である分野は他にはない。
【0003】
より複雑で高性能なソフトウエアプログラムの進歩はこれまで、当該ソフトウエアプログラムが実行されるハードウエアの処理能力の進歩とともにあった。実際には、加算と減算のみが可能な4ビットプロセッサである、最初のマイクロプロセッサであるインテル社の4004が1971年に発売されて以来、マイクロプロセッサの処理能力において驚くべき進歩がなされてきた。インテル社は1979年に8080マイクロプロセッサを発売し、当該プロセッサは、IBM社のパーソナルコンピュータ内に組み込まれた。インテル社の8080マイクロプロセッサは、約29000個のトランジスタを5MHzのクロック速度で用いており、1秒間に33万回の命令(MIPS)を実行できた。1982年から1989年まで、インテル社は80286、80386、80486のマイクロプロセッサを発売した。インテル社の80486のマイクロプロセッサは、120万個のトランジスタを25MHzのクロック速度で使用しており、20MIPSを実現できた。1993年から2000年まで、インテル社はPentium(登録商標)シリーズのマイクロプロセッサを発売した。Pentium4のマイクロプロセッサは、4200万個のトランジスタを1.5GHzのクロック速度で使用し、約17000MIPSを実現できた。これらのデータによれば、ソフトウエアプログラムを実行するハードウエアのスピードおよびパワーは絶えず増加している(インテル社のPentium4は8088マイクロプロセッサよりも約5000倍速く動作する)。この説明についてつけ加えると、より最新でより強力なマイクロプロセッサが現在でも開発され、約4GHzのクロック周波数でより高度なMIPSレベルを実現している。
【0004】
リアルタイムマルチメディアアプリケーションの重要性は、より一層高まってきている。こうしたアプリケーションは、1秒間に数千メガビットといった極めて高速の処理速度を必要とする。高速処理は単独の処理装置でも可能だが、一般にはマルチプロセッサ構成の処理速度には追いつかない。実際、マルチプロセッサシステムでは、複数のプロセッサが並列に(または少なくとも協調して)動作して、所望の処理結果を達成できる。
【0005】
マルチ処理技術を用いることのできるコンピュータおよびコンピューティングデバイスの種類は多岐にわたる。こうしたコンピューティングデバイスには、パーソナルコンピュータ(PC)およびサーバ以外に、携帯電話、モバイルコンピュータ、個人情報端末(PDA)、セットトップボックス、ディジタルTV、およびその他多数の装置が含まれる。
【発明の開示】
【発明が解決しようとする課題】
【0006】
図1は、ソフトウエアプログラムおよび当該プログラムを実行するために用いられるハードウエアの対応する進化を示す。時代のある時点におけるハードウエアシステム102は、他のハードウエアシステム、例えば、ハードウエアシステム106やハードウエアシステム112ほど強力ではない。これらのハードウエアシステムでさえも、ハードウエアシステム118ほど強力ではない。また、ソフトウエアプログラム104(光学ディスク上に記録されているものとして示されている)は、当時存在するハードウエアシステム102上で実行されるよう設計された。例えば、ソフトウエアプログラム104は、例えば、インテル社の80286マイクロプロセッサにより与えられた処理特性を有する処理ユニット上で実行されることを理解しつつ、記述されてきた。ソフトウエアプログラム104以後に設計され仕入れられたソフトウエアプログラム110は、例えば、インテル社の80486マイクロプロセッサにより与えられた処理特性を有する処理ユニット上で実行されるよう設計されてきた。他の例として、ソフトウエアプログラム110は、1994年に発売された出願人自身のプレイステーション(登録商標)のゲームコンソールの処理特性を有する処理ユニット上で実行されるよう設計され開発されてきた。さらに、ソフトウエアプログラム116は、インテル社のPentium3のマイクロプロセッサにより与えられた処理特性を有する処理ユニット上で実行されるよう設計され開発されてきた。他の例として、ソフトウエアプログラム116は、とりわけビデオゲームソフトウエアプログラムを実行するよう設計された出願人自身のプレイステーション 2のコンソール上で実行されるよう設計され開発されてきた。
【0007】
世間一般の通念では、ある処理特性を備える特定の処理ユニット上で実行されるために開発された任意のソフトウエアプログラムは、より上位の処理特性を備える他の処理ユニット上でも実行できるであろうことになっている。これは、多くの状況下では正しいものであるが、必ずしもそうでない場合がある。特に、ユーザがディスプレイ上でマルチメディアを体験できるようにソフトウエアプログラムが設計される場合がそうであり、例えば、ビデオゲームソフトウエアプログラムの場合が挙げられる。実際には、適度に高性能な処理ユニットのために設計されたソフトウエアプログラムを、十分に高度な処理能力を有する処理ユニット上で実行することは、結果として、動画における動オブジェクトが過度に高速になり、動画における音声要素と映像要素間の同期化の失敗に至る。一般的に、このような問題は、(並行処理を行うユニットである)プログラムスレッド間の相互依存性が保障されていない場合に顕著になる。
【0008】
そのために特別に設計されたソフトウエアプログラム、およびさほど高性能でない処理ユニット上で実行されるよう設計されたソフトウエアプログラムの実行を可能にするあるユニット内に、特別な設計が施されなければ、ソフトウエアプログラムに関する充実したサポートを受けるために、ユーザは二つの別々の処理ユニットを維持しなければならない。このことの例外として、出願人自身のプレイステーションのコンソールと出願人自身のプレイステーション 2のコンソールが挙げられる。出願人自身のプレイステーション 2のコンソールは、複数のマイクロプロセッサを用いて、プレイステーションのコンソールのために特別に記述されたソフトウエアプログラム、およびプレイステーション 2のコンソールのために特別に記述されたソフトウエアプログラムに対処できる。より詳細には、出願人自身のプレイステーション 2のコンソールは、プレイステーションのコンソール内に検出されたマイクロプロセッサと協働して、プレイステーション用のビデオゲームソフトウエアプログラムを実行する。プレイステーション 2のコンソール内の他のマイクロプロセッサは、プレイステーション 2のコンソールのために特別に設計されたビデオゲームソフトウエアプログラムを実行するために用いられる。
【0009】
異なる処理能力を有する複数のマイクロプロセッサを備えた将来の処理ユニットを設計するにあたって、ソフトウエアプログラムに関する充実したサポートに関するいくつかの問題に取り組む一方、よりよい解決策、好適には、より多目的に使えて効果的でコスト効率のよい解決策を得るのが望ましい。
【課題を解決するための手段】
【0010】
本発明の1以上の態様によれば、ソフトウエアプログラムの実行を可能にする方法は、ソフトウエアプログラムのバージョンを示す識別情報を取得するステップと、ソフトウエアプログラムを実行する少なくとも一つのプロセッサの処理能力が、ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定するステップと、前記決定が肯定的であるとき、前記少なくとも一つのプロセッサの処理能力を調整するステップと、を含む。
【0011】
前記識別情報は、光学ディスク媒体、磁気媒体および電子媒体等の記録媒体内に保存されてもよい。他に、前記ソフトウエアプログラムは前記識別情報を含み、当該識別情報は当該ソフトウエアプログラムから取得されてもよい。
【0012】
前記処理能力を調整するために、例えば、前記少なくとも一つの処理ユニットのクロック周波数を変化させてもよい。他には、処理ユニットのメモリマップ、処理ユニットのデータバスのバス利用率、処理ユニットのデータバスのバンド幅、処理ユニットのキャッシュサイズ、処理ユニットのキャッシュ構造、処理ユニットの命令待ち時間、処理ユニットの命令スループット、処理ユニットのメモリ待ち時間、処理ユニットのメモリスループットを変化させてもよい。
【0013】
当該方法は、複数のソフトウエアプログラムのそれぞれに対応する識別情報に、前記少なくとも一つのプロセッサの処理能力に施される調整を示す一つ以上のパラメータを関連付けるテーブルにアクセスするステップと、与えられた前記識別情報に関連付けられたパラメータを用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、をさらに含んでもよい。
【0014】
前記テーブルは、前記少なくとも一つのプロセッサとともににローカルに保存されてもよいし、リモートに配置された管理者エンティティ(entity)内に保存されてもよいし、および/または、当該リモートに配置された管理者エンティティによりアクセスされる別の場所に保存されてもよい。前記テーブルが、リモートに保存された場合、当該方法は、さらに、通信チャンネルを用いて、前記少なくとも一つのプロセッサと前記管理者エンティティとの間にリンクを確立するステップと、前記通信チャンネルを介して、前記少なくとも一つのプロセッサから前記管理者エンティティに前記識別情報を送信するステップと、をさらに含んでもよい。前記管理者エンティティは、前記テーブルにアクセスし、前記少なくとも一つのプロセッサの処理能力に施される調整を示す前記関連付けられた一つ以上のパラメータを取得してもよい。その後、当該方法は、前記通信チャンネルを介して、前記管理者エンティティから前記少なくとも一つのプロセッサのパラメータを取得するステップと、ある識別情報に関連付けられたパラメータを用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、をさらに含んでもよい。
【0015】
前記テーブルは、複数のソフトウエアプログラムのそれぞれに対応する識別情報に、複数の異なるプロセッサの処理能力に施される調整を示す複数のパラメータ集合をそれぞれさらに関連付けてもよい。この点に関連して、当該方法は、前記少なくとも一つのプロセッサの処理能力に関する処理識別子を取得するステップと、前記識別情報および前記識別子を用いて、前記テーブルにアクセスし、前記少なくとも一つのプロセッサの処理能力を調整する一つのパラメータ集合を取得するステップと、前記一つのパラメータ集合を用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、をさらに含んでもよい。
【0016】
前記テーブルが管理者エンティティ内にリモートに保存される場合、当該方法は、通信チャンネルを用いて、前記少なくとも一つのプロセッサおよび前記管理者エンティティ間にリンクを確立するステップと、前記通信チャンネルを介して、前記少なくとも一つのプロセッサから前記管理者エンティティに前記識別情報を送信するステップと、を含んでもよい。この場合、前記管理者エンティティは、前記識別情報および前記処理識別子を用いて、前記テーブルにアクセスし、前記少なくとも一つのプロセッサの処理能力を調整する前記関連付けられたパラメータ集合を取得してもよい。
【0017】
前記少なくとも一つのプロセッサは、好適には、(i)処理タスクを実行できる複数のサブ処理ユニットと、(ii)少なくともいくつかの管理処理タスクを前記サブ処理ユニットに対して実行できるメイン処理ユニットと、(iii)メイン処理ユニットおよびサブ処理ユニットによりアクセス可能なメインメモリと、(iv)前記サブ処理ユニット、前記メイン処理ユニット、および前記メインメモリを動作可能に接続するデータバスと、を含む。
【0018】
当該方法は、前記少なくとも一つのサブ処理ユニットの処理特性を調整し、当該処理特性を用いて前記ソフトウエアプログラムを実行するステップと、より高いまたはより低い処理特性を有し他の処理タスクを実行できる、少なくとも一つの他のサブ処理ユニットについては、処理特性の調整をスキップするステップと、をさらに含んでもよい。
【0019】
当該調整するステップは、前記少なくとも一つのプロセッサの周波数を少なくとも一つ変化させてもよい。さらに、具体的には、前記調整するステップは、前記メイン処理ユニット、サブ処理ユニット、およびデータバスの少なくとも一つのクロック周波数を他のユニットとは異なる周波数に調整してもよい。
【0020】
さらに、前記調整するステップは、前記少なくとも一つのプロセッサのデータバスのバスの利用率を少なくとも変化させるものであり、当該データバスのバスの利用率は、前記処理能力を調整するために、(例えば、メイン処理ユニットによる)データバスへのアクセスを制限することで変えられてもよい。
【0021】
さらに、前記調整するステップは、データバスのビット数を増減して調整することで、前記少なくとも一つのプロセッサのデータバスのバンド幅を少なくとも変化させ、前記処理能力を調整してもよい。例えば、前記データバス幅のビット数は、128ビット、64ビット、32ビット、16ビット、および8ビットのいずれかに調整されてもよい。
【0022】
少なくとも一つのプロセッサのローカルメモリはデータキャッシュとして動作してもよく、前記調整するステップは、データキャッシュのキャッシュサイズを変化させ、少なくとも一つのプロセッサの処理能力を調整してもよい。例えば、少なくとも一つのサブ処理ユニットのキャッシュサイズは、他のものと異なるサイズに調整されてもよい。さらに、前記調整するステップは、データキャッシュのキャッシュ構造を変化させ、処理能力を調整してもよい。例えば、キャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つが調整されてもよい。さらに、例えば、前記少なくとも一つのプロセッサのキャッシュ構造は、他のキャッシュ構造と異なる構造に調整されてもよい。
【0023】
同様に、メインメモリは、少なくとも一つのプロセッサに対して、データキャッシュとして動作してもよく、前記調整するステップは、データキャッシュのキャッシュサイズを変化させることで、少なくとも一つのプロセッサの処理能力を調整してもよい。さらに、データキャッシュのキャッシュ構造を操作することで、処理能力を調整してもよい。例えば、キャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つが調整されてもよい。
【0024】
他に、前記調整するステップは、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に遅延時間を要求しまたは除外することによって、前記少なくとも一つのプロセッサの命令待ち時間を調整し、これにより、少なくとも一つのプロセッサの処理能力が調整されてもよい。前記遅延時間は、前記ライトバックシーケンスおよび次の命令フェッチシーケンス間に存在することが好ましい。
【0025】
前記調整するステップは、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に、一つ以上のノーオペレーションシーケンスを挿入しまたは削除することによって、前記少なくとも一つのプロセッサの命令スループットを調整し、これにより、前記少なくとも一つのプロセッサの処理能力が調整されてもよい。前記ノーオペレーションシーケンスは、前記実行シーケンスおよび前記ライトバックシーケンス間に存在することが好ましい。
【0026】
他に、前記調整するステップは、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み取りシーケンスとデータ書き込みシーケンスのうちの一つ、の少なくとも一つのシーケンス間に遅延時間を要求することによって、前記少なくとも一つのメモリ待ち時間を調整し、これにより、前記少なくとも一つのプロセッサの処理能力が調整されてもよい。さらに、前記調整するステップは、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み取りシーケンスとデータ書き込みシーケンスのうちの一つ、の少なくとも一つのシーケンス間に、一つ以上のノーオペレーションシーケンスを挿入しまたは削除することによって、前記少なくとも一つのプロセッサの処理能力が調整されてもよい。
【0027】
本発明の1以上のさらなる態様によれば、処理調整部は、少なくとも一つのプロセッサを含み、処理システムは、処理タスクを実行するための複数のサブ処理ユニットと、少なくともいくつかの管理処理タスクを前記サブ処理ユニットに対して実行可能なメイン処理ユニットと、前記サブ処理ユニットおよび前記メイン処理ユニットによりアクセス可能なメインメモリと、前記サブ処理ユニット、前記メイン処理ユニットおよび前記メインメモリとを動作可能に接続するデータバスと、を含む少なくとも一つの処理デバイスを備える。前記少なくとも一つのプロセッサ、または前記サブ処理ユニットおよび前記メイン処理ユニットのうち少なくとも一つは、(i)ソフトウエアプログラムのバージョンを示す識別情報を取得し、(ii)前記少なくとも一つのプロセッサ、前記サブ処理ユニット、または前記メイン処理ユニットの処理能力が、前記ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定し、(iii)前記決定が肯定的であるとき、前記処理能力の調整を可能にする。
【0028】
プロセッサ、またはメイン処理ユニットおよびサブ処理ユニットの少なくとも一つは、さらに、(i)複数のソフトウエアプログラムに対するそれぞれの識別情報を、処理能力を調整する一つ以上のパラメータに関連付けるテーブルにアクセスし、(ii)前記処理能力の調整を容易にする与えられた前記識別情報に関連付けられたパラメータを使用可能であってもよい。
【0029】
上述したように、前記テーブルは、前記少なくとも一つのプロセッサまたは前記処理ユニット内にローカルに保存されるか、管理者エンティティ内にリモートに保存されるか、あるいは、別の場所に保存されるかの少なくとも一つの方法により保存される。前記少なくとも一つのプロセッサまたは前記処理ユニットは、当該少なくとも一つのプロセッサまたは処理ユニットと、前記管理者エンティティとの間に通信リンクを確立し、前記通信チャンネルを介して、前記管理者エンティティに前記識別情報を送信してもよい。前記管理者エンティティは、前記テーブルにアクセスし、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理能力を調整する関連付けられた一つ以上のパラメータを取得してもよい。前記少なくとも一つのプロセッサまたは前記処理ユニットは、さらに、前記管理者エンティティから前記通信チャンネルを介して、パラメータをさらに取得し、処理能力を調整する与えられた前記識別情報に関連付けられたパラメータを使用できてもよい。
【0030】
前記テーブルにもまた処理識別子を関連付ける場合、前記少なくとも一つのプロセッサ、または前記メイン処理ユニットおよび前記サブ処理ユニットの少なくとも一つは、さらに、(i)前記少なくとも一つのプロセッサまたは前記処理ユニットの処理能力に関する処理識別子を取得し、(ii)前記識別情報および前記識別子を用いて、前記テーブルにアクセスし、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理能力を調整する一つのパラメータ集合を取得し、(iii)前記一つのパラメータ集合を用いて、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理能力の調整を容易にできてもよい。
【0031】
前記テーブルが前記管理者エンティティ内にリモートに保存されている場合、前記少なくとも一つのプロセッサまたは前記処理ユニットは、(i)当該少なくとも一つのプロセッサまたは処理ユニットと、前記管理者エンティティとの間に通信リンクを確立し、(ii)前記通信チャンネルを介して、前記管理者エンティティに前記識別情報および前記処理識別子を送信してもよい。さらに、前記少なくとも一つのプロセッサまたは前記処理ユニットは、前記管理者エンティティから前記通信チャンネルを介してパラメータ集合を取得し、与えられた前記識別情報および前記処理識別子に関連付けられた前記パラメータ群を用いて、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理能力を調整してもよい。
【0032】
少なくとも一つのプロセッサまたはサブ処理ユニットの処理特性は、例えば、他の少なくとも一つのプロセッサまたはユニットの処理特性を調整せずに、調整されてもよい。例えば、少なくとも一つのプロセッサまたは処理ユニットの処理特性は、少なくともそのクロック周波数を変化させることで調整可能であることが好ましい。さらに詳細には、少なくとも一つのプロセッサまたは処理ユニットの処理特性は、メイン処理ユニット、サブ処理ユニット、およびデータバスのうち少なくとも一つのクロック周波数を、他のものとは異なる周波数に変化させることで調整可能であることが好ましい。
【0033】
他に、少なくとも一つのプロセッサまたは処理ユニットの処理特性は、処理ユニットのデータバスのバス使用率を変化させることで調整可能であってもよい。当該データバスのバス使用率は、それらの処理能力を調整するための(例えば、メイン処理ユニットによる)データバスへのアクセスを制限することで変化される。
【0034】
さらに、前記少なくとも一つのプロセッサまたは処理ユニットの処理特性は、当該少なくとも一つのプロセッサまたは処理ユニットの処理能力を調整するためのデータバスのビット数を調整することで、当該少なくとも一つのプロセッサまたは処理ユニットのデータバスのバンド幅を変化させることで調整可能であってもよい。例えば、データバスのビット数は、128ビット、64ビット、32ビット、16ビット、および8ビットのいずれかに調整されてもよい。
【0035】
前記少なくとも一つのプロセッサまたは前記サブ処理ユニットのローカルメモリは、データキャッシュとして動作し、さらに、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理特性は、当該少なくとも一つのプロセッサまたは処理ユニットの処理能力の調整のために前記データキャッシュのキャッシュサイズを変化させることにより、調整可能であってもよい。さらに、前記少なくとも一つのプロセッサまたは処理ユニットの処理特性は、当該少なくとも一つのプロセッサまたは処理ユニットの処理能力の調整のために前記データキャッシュのキャッシュ構造を変化させることにより、調整可能であってもよい。例えば、前記少なくとも一つのサブ処理ユニットのキャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つが変えられてもよい。前記少なくとも一つのプロセッサまたは前記少なくとも一つのサブ処理ユニットのキャッシュ構造は、他のものとは異なる構造に調整されるのが好ましい。
【0036】
他に、前記少なくとも一つのプロセッサまたは前記処理ユニットのメインメモリは、一つ以上のサブ処理ユニットに対してデータキャッシュとして動作し、さらに、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理特性は、当該少なくとも一つのプロセッサまたは処理ユニットの処理能力の調整のために前記データキャッシュのキャッシュサイズを変化させることにより、調整可能であってもよい。さらに、前記少なくとも一つのプロセッサまたは処理ユニットの処理特性は、当該少なくとも一つのプロセッサまたは処理ユニットの処理能力の調整のために前記データキャッシュのキャッシュ構造を変化させることにより、調整可能であってもよい。例えば、キャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つを変化させることで、調整可能であってもよい。
【0037】
さらにそのうえ、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理特性は、前記少なくとも一つのプロセッサまたは前記少なくとも一つのサブ処理ユニットの命令待ち時間を変化させることにより、調整可能であってもよい。なお、当該命令待ち時間の変化は、前記処理ユニットの処理能力を調整するために、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に遅延時間を要求することによって実現される。前記遅延時間は、前記ライトバックシーケンスおよび次の命令フェッチシーケンス間に存在してもよい。他に、前記処理特性は、前記少なくとも一つのプロセッサまたは前記少なくとも一つのサブ処理ユニットの命令スループットを変化させることにより、調整可能であってもよい。なお、当該命令スループットの変化は、前記処理能力を調整するために、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に一つ以上のノーオペレーションシーケンスを挿入しまたは削除することによって実現される。前記ノーオペレーションシーケンスは、前記実行シーケンスおよびライトバックシーケンス間に存在するのが好ましい。
【0038】
さらにそのうえ、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理特性は、前記少なくとも一つのプロセッサ、または前記サブ処理ユニットおよび当該処理ユニットのメインメモリの少なくとも一つ、のメモリ待ち時間を変化させることにより、調整可能であってもよい。なお、当該メモリ待ち時間の変化は、その処理能力を調整するために、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み込みおよび書き込みシーケンスの少なくとも一つのシーケンス間に遅延時間を要求することによって実現される。さらに、前記処理特性は、前記少なくとも一つのプロセッサ、または前記サブ処理ユニットおよび当該処理ユニットのメインメモリの少なくとも一つ、のメモリスループットを変化させることにより、調整可能であってもよい。なお、当該メモリスループットの変化は、当該処理能力を調整するために、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み込みおよび書き込みシーケンスの少なくとも一つのシーケンス間に、一つ以上のノーオペレーションシーケンスを挿入または削除することによって実現される。
【0039】
本発明のさらなる1以上の態様によれば、処理ユニットを動作させるための上述の方法を用いたプログラムが記録媒体に記録される。
【0040】
本発明の上述の態様に従って、現代のマイクロプロセッサの処理能力を超えた最新のコンピュータアーキテクチャが開発された。この最新のコンピュータアーキテクチャによれば、マルチプロセッサのコンピュータシステムのすべてのプロセッサは、共通のコンピュータモジュール(またはセル)から構成される。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令集合構成を用いるのが好ましい。マルチプロセッサのコンピュータシステムは、コンピュータプロセッサを用いて、1以上のクライアント、サーバ、PC、携帯端末、ゲーム機、PDA、セットトップボックス、アプリケーション、デジタルテレビおよび他のデバイスから構成されうる。
【0041】
必要に応じて、複数のコンピュータシステムをそれぞれネットワークのメンバとしてもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータの迅速な伝送ができる。またこの構造により、様々なサイズおよび処理能力をもつネットワークメンバの形成、ならびにこれらメンバによって処理されるアプリケーションの準備が簡略化できる。
【0042】
基本的な処理モジュールはプロセッサ要素(PE)である。PEは、好適には処理ユニット(PU)と、ダイレクトメモリアクセスコントローラ(DMAC)と、共通の内部アドレスおよびデータバスで接続された、複数の、例えば4つのサブ処理ユニット(SPU)とを含む。PUおよびSPUは、クロスバー構成をもちうる共有ダイナミックランダムアクセスメモリ(DRAM)にアクセスする。PUは、SPUによるデータおよびアプリケーションの処理のスケジューリングと調整を行う。SPUはこの処理を並列かつ独立して行う。DMACは、共有DRAMに保存されたデータおよびアプリケーションに対するPUおよびSPUのアクセスを制御する。
【0043】
このモジュール構造では、あるコンピュータシステムで使用されるPEの数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは4つのPE、ワークステーションは2つのPE、PDAは1つのPEを使用しうる。あるソフトウェアセルの処理に割り当てられるPEのSPUの数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
【0044】
複数のPEを共有DRAMに関連付けることができ、そのDRAMは複数のセクションに分別され、各セクションは複数のメモリバンクに分別されうる。DRAMの各セクションはバンクコントローラによって制御され、PEの各DMACが各バンクコントローラにアクセスできる。本構成では、各PEのDMACは共有DRAMの任意の個所にアクセスできる。
【0045】
この新規のコンピュータ構成はまた、データおよびアプリケーションをネットワークを介して伝送し、かつデータおよびアプリケーションをネットワークメンバ間で処理する新たなプログラミングモデルを用いる。このプログラミングモデルは、ネットワークを介して伝送され任意のネットワークメンバによって処理されるソフトウェアセルを用いる。各ソフトウェアセルは同一構造をもち、データとアプリケーション両方を収容できる。モジュール式コンピュータ構成による高速処理および伝送の結果、これらセルの高速処理が可能である。アプリケーション用のコードは、好適には同一の共通命令セットおよび命令セットアーキテクチャに基づく。各ソフトウェアセルは、好適にはグローバル(大域的)識別名(ID)と、セルの処理に必要な計算リソース量を記述した情報とを含む。すべての計算リソースは同一の基本構造をもち、かつ同じ命令セットアーキテクチャを用いるので、処理を実行する特定のリソースをネットワーク上の任意の場所に配置してダイナミックに割り当てを行うことができる。
【0046】
本発明の上記以外の態様、特徴、および利点は、添付図面とともに以下の詳細な説明により当業者には明確に理解される。
【発明を実施するための最良の形態】
【0047】
現在のところ好適である図面を例示として添付するが、本発明は図面と同一の構成および手段に限定するものではない。
【0048】
以下、図面を参照するが、図中、同一符号は同一要素を示す。図1は、本発明の1つ以上の態様に従う処理調整部118を示す。処理調整部118は、例えば、詳細は後述するマイクロプロセッサを用いて、ソフトウエアプログラムを実行できる。ディスプレイ120およびオーディオ機能(図示せず)を用いて、ユーザはマルチメディアを体験できる。
【0049】
ソフトウエアプログラムを含む記録媒体を処理調整部118に挿入し、かつ当該ソフトウエアプログラムをランダムアクセスメモリ(RAM)に読み込ませる等の任意の方法で、ソフトウエアプログラムを読み出すことができる。記録媒体は、光媒体、磁気媒体、電子媒体等であってもよい。実施形態のいくつかの態様に従えば、ソフトウエアプログラムは、インターネット124等のネットワークを介してダウンロードされることで、処理調整部118内に読み込まれてもよい。
【0050】
非常に強力なマルチプロセッシングシステムを用いて、本発明に係る処理調整部118を実装すれば、有利な処理特性を達成できることが見いだされてきた。処理調整部118は、実行対象のソフトウエアプログラムのバージョンに従って、当該処理調整部118の処理性能を下方または上方に調整するかどうかの決定を行うことができ、当該決定が肯定的である場合には、処理調整部118の処理性能の調整を行うことができるのが好ましい。この機能がどのように達成されるかについての各種詳細および具体例、さらに複数の変形例を以下に述べる。この点に関して、処理調整部118の内部構成のある態様をここで詳細に説明する。
【0051】
図2Aは、基本的な処理モジュールまたはプロセッサ要素(PE)200の一例を示すブロック図である。図示するように、PE200は、I/Oインタフェース202と、処理ユニット(PU)204と、ダイレクトメモリアクセスコントローラ(DMAC)206と、複数のサブ処理ユニット(SPU)、すなわちSPU1(208A)、SPU2(208B)、SPU3(208C)およびSPU4(208D)とを含む。ローカル(すなわち内部)PEバス212は、PU204、SPU群208、DMAC206およびメモリインタフェース210間のデータおよびアプリケーションの伝送を行う。ローカルPEバス212は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。
【0052】
PE200はディジタル論理回路を実装する各種方法を利用して構成できる。ただし好適には、PE200はシリコン基板上の相補的金属酸化膜半導体(CMOS)を用いる1つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるIII−B族化合物が含まれる。PE200はまた、超伝導材料を用いて高速単一磁束量子(RSFQ)論理回路等として実装することもできる。
【0053】
PE200は、広帯域メモリ接続216を介してダイナミックランダムアクセスメモリ(DRAM)214に密接に関連付けられる。DRAM214は、PE200用の主メモリ(または共有メモリ)として機能する。DRAM214は好適にはダイナミックランダムアクセスメモリだが、スタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。他の実装として、DRAM214は、PE200と同一の集積回路内に組み込まれてもよいし、他には、別の外部メモリとして提供されてもよい。DRAM214が、PE200と同一のチップ内に組み込まれている場合、当該DRAM214はそのチップ上において異なる場所に設けられてもよいし、PEを構成する一つ以上のプロセッサとともに一体化されてもよい。DMAC206およびメモリインタフェース210により、DRAM214とPE200のSPU群208およびPU204間のデータ転送が容易になる。DMAC206および/またはメモリインタフェース210は、サブ処理ユニット208およびPU204と一体化して設けてもよいし、あるいは、サブ処理ユニット208およびPU204から離れた場所(リモート)に設けてもよい。実際には、図に示す分離された構成にかわって、DMAC206の機能および/またはメモリインタフェース210の機能を、一つ以上の(好適にはすべての)サブ処理ユニット208およびPU204に一体化させてもよい。
【0054】
PU204は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、PU204はSPU群208によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。他の構成では、PE200は複数のPU204を含んでもよい。PU群204のそれぞれは、一つのSPU208、すべてのSPU208、または所定のグループのSPU群208を制御してもよい。SPU群208は、好適には、一命令複数データ(SIMD)プロセッサである。PU204の制御下で、SPU群208はデータおよびアプリケーションの処理を並列に、かつ独立して行う。DMAC206は、共有DRAM214に保存されたデータおよびアプリケーションに対するPU204およびSPU群のアクセスを制御する。なお、PU204は、主処理ユニットの役割を果たす一つ以上のサブ処理ユニット208で実装できる。
【0055】
PE200等の多数のPEを接続し、または一緒にパッケージングして、処理能力を向上させることができる。この構成を広帯域エンジン(BE)と称する。
【0056】
図2Bは、本発明の態様に従って動作する複数のPE250(PE1,PE2,PE3およびPE4)の処理アーキテクチャの一例を示す。PE250は単一のチップ上に存在するのが好ましい。PE250は、図2AのPE200について上述したPUおよび/あるいはSPU等のサブシステムを含んでもよいし、含まなくてもよい。PE250は同一のタイプであってもよいし、要求される処理の種類に応じてタイプが異なってもよい。例えば、一つ以上のPE群250は、一般的なマイクロプロセッサ、デジタルシングルプロセッサ、グラフィックプロセッサ、マイクロコントローラ等であってもよい。
【0057】
PE群250は、好適には共有バス252に接続される。メモリコントローラまたはDMAC256は、メモリバス254を介して共有バス252に接続されてもよい。DMAC256は、メモリ258に接続される。当該メモリ258は、メモリ230について上述したタイプのうちの一つであってもよい。I/Oコントローラ262もまた、I/Oバス260を介して共有バス252に接続されてもよい。I/Oコントローラ262は、フレームバッファやディスクドライブ等の一つ以上のI/O装置264に接続されてもよい。上述の処理モジュールおよびアーキテクチャは単なる例であり、本発明の様々な態様は他の構成を用いて表すことができる。例えば、2003年2月25日に公開された米国特許番号6526491の「Memory Protection System and Method for Computer Architecture for Broadband Networks」、および2001年3月22日に出願された米国出願番号09/816004の「Computer Architecture and Software Cells for Broadband Networks」に開示されたマルチプロセッサシステムを用いることができるが、それに限られるものではない。なお、当該文献は、参照により本明細書に援用されることは明らかである。
【0058】
図3は、SPU208の構造および機能の一例を示す。SPU208は、ローカルメモリ270と、レジスタ272と、1つ以上の浮動小数点ユニット274と、1つ以上の整数ユニット276とを含む。ただしここでも、必要な処理能力に応じて、使用する浮動小数点ユニット274および整数ユニット276の数を増減させてもよい。好適な実施形態では、ローカルメモリ270は128キロバイトの容量をもち、レジスタ272の容量は128×128ビットである。浮動小数点ユニット274は、好適には1秒間に320億回(32GFLOPS)の浮動小数点演算を実行する。整数ユニット276は、好適には1秒間に320億回(32GOPS)の整数演算を実行する。
【0059】
好適な実施形態では、ローカルメモリ270は256キロバイトの容量をもち、レジスタ272の容量は128×128ビットである。なお、処理タスクは、共有メモリ214を用いて実行されることはない。むしろ、当該タスクは、所定のサブ処理ユニット208のローカルメモリ270内に複製され、ローカルで実行される。
【0060】
ローカルメモリ270は、キャッシュメモリであってもなくてもよい。ローカルメモリ270は、好適にはスタティックランダムアクセスメモリ(SRAM)として構成される。PU204は、PU204が開始するダイレクトメモリアクセスのためにキャッシュコヒーレンシを必要とする場合がある。しかし、SPU208が開始するダイレクトメモリアクセスまたは外部装置との間のアクセスにはキャッシュコヒーレンシサポートは不要である。
【0061】
SPU208はさらに、SPU208とアプリケーションおよびデータの送受信を行うバス289を含む。サブ処理ユニット208はさらに、サブ処理ユニット208とアプリケーションおよびデータの送受信を行うバスインタフェース(I/F)278を含む。好適な実施形態では、バスI/F278は、サブ処理ユニット208内に一体的に設けられるDMAC(図示せず)に接続される。DMAC206は、(図3に示すごとく)外部に設けてもよい。バスI/F278とローカルメモリ270との間に一体的に配置されたDMACには一組のバスが相互に接続される。好適には当該一組のバスの幅は256ビットである。好適な実施形態では、バス289の幅は1024ビットである。
【0062】
SPU208はさらに、内部バス281,283および285を含む。好適な実施形態では、バス281は幅256ビットで、ローカルメモリ270とレジスタ272間の通信を行う。バス283および285は、それぞれレジスタ272−浮動小数点ユニット274間、およびレジスタ272−整数ユニット276間の通信を行う。好適な実施形態では、レジスタ272から浮動小数点ユニット274へのバス283またはレジスタ272から整数ユニット276へのバス285の幅は384ビットで、一方、浮動小数点ユニット274または整数ユニット276からレジスタ272へのバス285および283の幅は128ビットである。レジスタ272から浮動小数点ユニット274または整数ユニット276へのバスの幅のほうが、これら装置からレジスタ272へのバス幅より広いことで、処理中にレジスタ272からのより大量のデータフローに対処できる。各計算には最大3ワードが必要である。ただし各計算の結果は通常は1ワードだけである。
【0063】
本実施形態は、好適には図2のPE200を用いて実行されるが、他のシングルプロセッサシステムやマルチプロセッサシステムを用いてもよい。例えば、図4のマルチプロセッサシステム300を用いて、本実施形態の1つ以上の態様を実行できる。マルチプロセッサシステム300は、バス308によってメモリインタフェース304に接続された複数のプロセッサ302(使用数は任意)を含む。メモリインタフェース304は、別のバス310を介してDRAM等の共有メモリ306と通信する。メモリインタフェース304は、プロセッサ群302間で分散されてもよく、かつ必要に応じてDAMCと共に動作してもよい。プロセッサ群302は、好適には図3と同一または同様の構造、あるいは任意の既知のまたは後述の改良技術を用いて実装される。
【0064】
図5は、ある処理ステップを示すフロー図である。その処理ステップとは、例えばPE200(図2)を用いて、少なくとも部分的に処理調整部118により実施されるものであり、本発明の1以上の態様に従って、処理能力を変化させることができる。なお、図5に示す、いくつかのまたはすべての処理ステップ(さらに、それに続く以降の処理ステップ)は、PE200と一体化した、またはPE200に対して外部に設けられた、ソフトウエア、ハードウエア、またはそれらの組み合わせにより実施される。例えば、動作400では、ソフトウエアプログラムは、記録媒体から(ソフトウエアを実行する装置である)処理調整部118のランダムアクセスメモリ(RAM)内に読み込まれる。PE200は、その意味において、光学記録媒体122(図1)、磁性記録媒体または電子記録媒体等の記録媒体からソフトウエアプログラムを読み出すことが可能なソフトウエア実行コンソールの一部をなす。一例として、記録媒体が光学記録媒体であれば、当該記録媒体はCD、DVDまたはBlu−ray Disc(商標)であってもよいし、「読み出し専用」、「書き込み可能」または「再書き込み可能」のいずれかのデバイスとして形成されてもよい。他の例として、または、このような機能に加えて、処理調整部118は、インターネット124等のネットワークを介してソフトウエアプログラムをダウンロードしてもよい。
【0065】
図5に再び戻り、動作402では、処理調整部118はソフトウエアプログラムのバージョンを示す識別情報を取得する。ソフトウエアプログラムが記録媒体から読み込まれる場合、当該識別情報は光学記録媒体122上に設けられたプログラムIDであってもよい。また、ソフトウエアプログラムは、ファイルヘッダの一部分であってもよく、光学記録媒体122上に同じく設けられたソフトウエアプログラムテーブル内に含まれてもよい。多くの場合、ユーザは、光学記録媒体122から、処理調整部118内に含まれるハードディスクドライブや電子記録媒体等の別の記録媒体に、ソフトウエアプログラムを複製する。この場合、ソフトウエアプログラムIDを取得するためには、外部の記録媒体からソフトウエアプログラムIDを取得するかわりに、処理調整部118の内部の記録媒体からそのIDを取り出してもよい。
【0066】
ソフトウエアプログラムがインターネット124等を介してダウンロードされる場合、当該識別情報はプログラムIDやユーザID等であってもよい。識別情報は好適には、ダウンロードされたソフトウエアプログラムの内部、例えば、プログラムテーブルまたはファイルヘッダの内部に含まれるが、他に、当該識別情報は処理調整部118の内部に保存されていてもよく、ユーザにより処理調整部118内または別のデバイス内に入力されてもよい。
【0067】
ここで、ステップ400は当該発明の実施には必須ではないが、ソフトウエアプログラムが処理調整部118内のハードディスク等の内部記録媒体上に記録される場合、ステップ402より前に実施されうる。さらに、ソフトウエアプログラムのダウンロード、または読み出しの前に、ユーザに権限が与えられた場合などであれば、ステップ402はステップ400より前に実施されてもよい。
【0068】
動作404では、処理調整部118の処理能力の上方または下方への調整を行うべきか否かについての決定がなされる。例として、ソフトウエアプログラムが改良された結果、処理調整部118上で動作する当該ソフトウエアプログラムにより所望でない結果が生じ、かつ処理調整部118の処理能力が、ソフトウエア設計者が考える能力をはるかに超えるのであれば、処理調整部118の処理能力を下方に調整する必要があるとされてもよい。この点について、処理調整部118は好適には、ソフトウエアプログラムのバージョンを決定するソフトウエアIDや他の識別情報、および/またはソフトウエアプログラムの正常動作に必要な処理能力を表したものを利用する。このとき、処理調整部118は、ソフトウエアプログラムを実行するために必要な処理能力と処理調整部118の処理能力とを比較してもよい。処理調整部118の処理能力が、所望でない結果が得られる程度にソフトウエアプログラムを実行させるために必要とされる処理能力以下である場合、動作404における決定の結果は否定的なものとなり、かつ処理フローは動作406に進んでもよい。
【0069】
動作406では、処理調整部118は、ソフトウエアプログラムを実行する際に全処理能力を用いてもよく、少なくとも処理能力を下げる処理を行わなくてよい。ソフトウエアプログラムが実行された後、その処理フローは完了する。
【0070】
処理調整部118の処理能力が、ソフトウエアプログラムを実行するために必要な上述した処理能力をはるかに超えるのであれば、動作404における決定は肯定的なものになり、節点A(図7)に進む。ここで、処理調整部118の処理能力は、処理調整部118の利用可能なプロセッサ要素200の数により決定されてもよい。実際には、一つ以上のプロセッサ要素200は処理調整部118内に保持されてもよく、一方、処理調整部118から離れた場所に、一つ以上の他のプロセッサ要素200が設けられてもよい。これに関連して、図6を参照する。本図は、本発明の1以上の態様に係るコンピュータネットワーク全体のブロック図である。ここで、PE200および/または(複数のPEで形成される)広域エンジンを用いて、コンピュータシステム500の分散型アーキテクチャを実装できる。システム500は、複数のコンピュータおよび/またはコンピューティングデバイスが接続されたネットワーク504を含む。ネットワーク504は、ローカルエリアネットワーク(LAN)、インターネット等のグローバルネットワーク、またはその他のコンピュータネットワークで構成できる。ネットワーク504に接続されたコンピュータおよびコンピューティングデバイス(ネットワークの「メンバ」)は、クライアントコンピュータ506、サーバコンピュータ508、個人携帯端末(PDA)510、ディジタルテレビ(DTV)512、ならびにその他の有線または無線コンピュータおよびコンピューティングデバイス等を含む。ネットワーク504のメンバによって用いられるプロセッサは、好適にはPE200または他の適切なマルチプロセッサシステムで構成される。
【0071】
システム500のサーバ508は、クライアント506よりも多くのデータおよびアプリケーションを実行し、クライアント106よりも多くの計算モジュール(例えば、PE群200)を含む。一方、PDA510は本例では処理量が最も少ない。従ってPDA510に含まれるPE数は一番少なく、例えばPE数は一つである。DTV512は実質的に、クライアント506とサーバ508との間のあるレベルの処理を実行する。従って、DTV512はクライアント506とサーバ508の間の数のプロセッサ要素を含む。
【0072】
従って、動作404(図5)で実施される処理調整部118の処理能力の決定、およびその処理能力を調整するか否かについての決定は、処理調整部118内外のプロセッサ要素200の数で行われてもよい。図6は、多くの内部または外部に存在するプロセッサ要素200の処理能力を用いた分散型システム500を示す。
【0073】
図5に示される処理ステップに戻る前に、図6の分散型システム500に関して、さらに詳細に説明する。システム500のこのホモジーニャスな(均一な)構成により、適応性、処理速度、および処理効率が向上する。システム500の各メンバは同一計算モジュール(PE200)を1つ以上用いて(またはそのある部分を用いて)処理を行うので、データおよび/またはアプリケーションの処理を実際に行っているのはどのコンピュータまたはコンピューティングデバイスであるかは重要ではない。そのようなデータおよびアプリケーションの処理は、ネットワークメンバ間で共有できるためである。システム500によって処理されるデータおよびアプリケーションを含むソフトウエアセルを一意に識別することにより、処理がどこで発生したかに関係なく、処理を要求しているコンピュータまたはコンピューティングデバイスに処理結果を伝送できる。処理を実行しているモジュールは共通の構造をもち、かつ共通の命令セットアーキテクチャを使用しているので、プロセッサ間で互換性を得るためにソフトウェアに追加すべきレイヤによる計算負荷を回避できる。この構成およびプログラミングモジュールによって、例えばマルチメディア・アプリケーションのリアルタイムの実行に必要な処理速度を達成できる。
【0074】
システム500によって改善される処理速度および処理効率の利点をさらに高めるため、本システムによって処理されるデータおよびアプリケーションは、一意に識別され、均一にフォーマットされたソフトウェアセル502にパッケージされる。各ソフトウェアセル502は、アプリケーションおよびデータ両方を含む、または含みうる。各ソフトウェアセルはまた、ネットワーク504およびシステム500中でセルをグローバルに識別するIDを含む。このソフトウェアセルの均一な構造、およびソフトウェアセルのネットワーク中での一意的な識別により、ネットワーク504の任意のコンピュータまたはコンピューティングデバイス上でのアプリケーションおよびデータの処理が容易になる。例えば、クライアント506はソフトウェアセル502をフォーミュレート(すなわち所与の形式で生成)するが、クライアント506の処理能力の限度のため、そのソフトウェアセル502をサーバ508に伝送して処理してもよい。従ってソフトウェアセル502は、ネットワーク504上で利用できる処理リソースに応じてネットワーク504中を移動できる。
【0075】
システム500のプロセッサおよびソフトウェアセル502の均一構造はまた、既存の異種ネットワークの多くの問題を回避する。例えば、任意の命令セットを用いて任意の命令セットアーキテクチャ上でアプリケーションの処理の許可を求める、効率的とはいえないプログラミングモデル、例えばJava(商標または登録商標)仮想マシーン等の仮想マシーンが回避される。従って、システム500は従来のネットワークに比べて、はるかに効果的かつ効率的な広帯域処理を実現できる。
【0076】
図5に再度戻り、処理調整部118が享受する処理能力は、(特に、図6に示すように、外部装置の処理能力を使用する場合に)有意義である。当該処理能力は、いくつかの状況下において、それほど高性能でないシステム上で動作するよう設計されたソフトウエアプログラムの実行に対し、悪影響を及ぼすことがある。従って、動作404において、処理調整部118の処理能力(外部の処理能力を含めてもよい)が、ソフトウエアプログラムのバージョンに従って調整されるべき旨の決定がなされたとき、好適には処理フローは節点A(図7)に進む。動作408で、処理調整部118の処理能力を変化させる手順が開始される。
【0077】
本発明に係る処理能力の調整とは、例えば、データおよびアプリケーションを処理するために、処理調整部により使用される一つ以上のクロック周波数を変化させることを示す。当業者からみて明白であるように、所与のSPU208(図2)は、例えば、通常約4GHzのクロック周波数で動作するが、その周波数が上方または下方に調整されたとき、当該SPU208の処理能力もいくつかの点において追随して増減される。例えば、実際には、所定の単位時間内に実行しうる浮動小数点演算数が増減されてもよいし、また、所定の単位時間内に実行しうる整数演算数が増減されてもよいし、さらに、所定の単位時間内に実行しうる命令数が増減されてもよい。別のさらなる例として、プロセッサ要素200内において多くの管理調整機能を実行するPU204もまた、クロック周波数に基づいた動作を行う。その機能は、当該クロック周波数が調整されることで上昇または低下させることができる。別のさらなる例として、バス212もまた、クロック周波数に従って動作することが可能であり、本発明に従ってクロック周波数が増減されることで、概して、プロセッサ要素200および処理調整部118の処理能力を向上または低下させることができる。
【0078】
本発明に従って調整される処理調整部118の他の態様およびパラメータには、例えば、ローカルメモリ270のメモリマップおよび/または共有メモリ214、バス212の(PU204等による)バス使用率、バス212の(128ビット、64ビット、32ビット等の)バンド幅が含まれる。処理調整部118の処理能力を変化させるために調整されるさらなるパラメータには、例えば、ローカルメモリ270および/または共有メモリ214のサイズやキャッシュ構造、処理調整部118のPU204の一つ以上のSPU群208の命令待ち時間や命令スループット、ローカルメモリ270および/または共有メモリ214のメモリ待ち時間やメモリスループットが含まれる。
【0079】
さらなる他の例として、エンディアンが制御されてもよい。例えば、(文字列の最後に最下位のバイトを設定する)リトルエンディアンから、(文字列の最後に最上位のバイトを設定する)ビッグエンディアンに、あるいはその逆に変換されてもよい。調整可能な他のパラメータは命令の種類に関連し、例えば、MIPSからパワーPCに、あるいはその逆に変換されてもよい。これらのパラメータおよび制御については、本明細書でさらに詳細に後述する。
【0080】
処理調整部118の処理能力が調整されるべき旨が決定された場合、処理調整部118のどのパラメータを調整するかかつどの程度調整するかを決定するために、変換テーブルを参照するのが好ましい。この点に関連して、図8を参照する。図8は本発明の1以上の態様に係る変換テーブル550を示す。一般的な意味において、変換テーブル550は、識別情報(例えば、ソフトウエアプログラムID群)のそれぞれに、処理調整部118の処理能力に施される調整を示す一つ以上のパラメータを関連づける。本図では、識別情報は垂直列552形式で示されており、エントリ(0010,0020,0030・・・N)のそれぞれは、所与の識別情報の一要素、例えば、一つのソフトウエアプログラムIDを表す。その識別情報のそれぞれには、P1−i、P2−i、P3−i、P4−i、・・・PM−iの一つ以上のパラメータが関連付けられ、このパラメータそれぞれにより、処理調整部118の処理能力を調整する。ここで、iは、所与のパラメータがとりうる複数の値のうち一つを表したものである。
【0081】
一例として、「0040」が付された識別情報を、処理調整部118上において実行されるソフトウエアプログラムのあるバージョンに対応させることができ、これにより、処理調整部118の処理能力が、そのソフトウエアプログラムが改良されたときに想定される処理能力をはるかに超えたことを判断できる。また、処理調整部118の処理能力が非常に高いため、ソフトウエアプログラムが処理調整部118のフル能力で実行された場合に、不都合な結果が生じる可能性があることをさらに判断できる。このとき、変換テーブル550には、識別情報0040に関連づけられた複数のパラメータ、すなわち、パラメータP2−2、パラメータP3−1、パラメータP4−4、・・・、パラメータPM−7が含まれてもよい。こうしたパラメータのそれぞれは、好適には、処理調整部118の処理能力のある態様を表してもよいし、関連するソフトウエアプログラムが実行される場合に所望の結果を得るためのその態様に関する調整量を表してもよい。
【0082】
一例として、パラメータP2−2は、ソフトウエアプログラムを実行するために用いられる、あるSPUまたはSPU群208のクロック周波数を表すことができる。また、パラメータP2−2は、あるプロセッサ要素200の他の部分である、PU204、バス212等のクロック周波数を表すことができる。ここで、あるパラメータ、例えばパラメータP2−2の実際の値は、処理調整部118のある処理能力、例えば直接的に実際のクロック周波数に関連しているか、または、間接的にそのクロック周波数の変化量の値に関連している。当業者から見れば、本発明の精神および範囲から逸脱することなく他の間接的に関連したものを考案することができる。さらなる例として、パラメータP3−1は、関連するソフトウエアプログラムが実行される場合に所定の結果を得るために調整される処理調整部118の処理能力の他の態様を表すことができる。いずれの場合でも、パラメータP2−2、P3−1、P4−4、・・・、PM−7は好適には、処理調整部118により用いられるものであり、当該パラメータによりその処理能力が調整されることで、関連するソフトウエアプログラム(例えば、0040)を実行するための所望のプラットホームを実現できる。
【0083】
本発明に係る他の態様および実施形態によれば、その変換テーブル550には、所与の識別情報の一要素とパラメータの集合とをそれぞれ関連づけることを可能にする別の次元が含まれるのが好ましい。この点について、変換テーブル550には次元556が含まれ、当該次元556に沿って、複数の処理識別子C001、C002、・・・C00Xが配置されるのが好ましい。処理識別子のそれぞれは、次元556内の所与のユニットに含まれる複数のパラメータ集合、すなわち一つのパラメータの上位集合(super-set)に関連付けられる。その結果、垂直列552に沿ったそれぞれのソフトウエアプログラム識別子は、次元556に沿った処理識別子のそれぞれに関連付けられる。同様に、所与の識別子、例えば識別子0040に対する複数のパラメータ集合は、それぞれ、処理識別子C001、C002、・・・C00Xのそれぞれに関連付けられる。
【0084】
例えば、図8に示すごとく、識別子0040に関連付けられたパラメータP2−2、P3−1、P4−4、・・・、PM−7もまた、処理識別子C001に関連付けられている。すなわち、パラメータ集合を、識別子0040と、処理識別子C001、C002、・・・C00Xとの双方に関連付けることができるため、識別子0040に関連付けられて存在するパラメータ集合を異ならせることができる。このような構成を実現することにより、それぞれのパラメータが示すある値をどのように設定するかに関する自由度を高めることができる。特に、あるバージョンのソフトウエアプログラムが、広範囲で様々な処理能力を有する処理調整部上で実行される場合、例えば、図6に示すシステム500で運用される場合に、効果的である。
【0085】
図7に再度戻り、動作410において、変換テーブル550が処理調整部118内にローカルに保存されているか、または、処理調整部118から離れた場所、例えば、(図6のネットワーク504と同一視できる)ネットワーク124上のノード等にリモートに配置されているかについての決定がなされる。ここで、一つ以上のローカルメモリ270(図3)および/または、一つ以上のプロセッサ要素200内の共有メモリ214(図2)内にも変換テーブル550を保存できる。変換テーブル550がローカルに保存されることで、リモートに配置された際の変換テーブルにアクセスするために必要な時間および動作を省くことができる。他方、変換テーブル550のコンテンツが正確かつ最新であることを保証するために、管理者権限を有するエンティティによって管理かつ維持されうる離れた場所に変換テーブル550を保存することは有益である。
【0086】
ここで、図9を参照する。図9は、インターネット124等のネットワークに動作可能に接続される(好適にはモニター120を含む)処理調整部118を備える処理システム380のブロック図を示す。管理者権限を有するエンティティのサービスを提供する管理者382もまた、インターネット124に動作可能に接続される。管理者382には、データベース386に接続可能なネットワークおよび/またはデータベースサーバ384が含まれるのが好ましい。データベース386は、当該サーバ384と同じ場所に設けられてもよいし、他のネットワーク接続を介することで、リモートに当該サーバに接続されてもよい。不図示ではあるが、複数の他の(様々な処理能力を備えうる)処理調整部もまた、インターネット124に接続でき、後述の管理者382により提供されるサービスを利用できる。
【0087】
変換テーブル550が、処理調整部118等の一つ以上の処理調整部上にローカルに保存されていない場合でも(あるいは、変換テーブルそのもののバージョンがローカルに保存されている場合も含む)、変換テーブル550のバージョンは、実質的に正確かつ最新である状態で、管理者382のデータベース386内に保持されているのが好ましい。図7に再度戻り、もし、変換テーブル550がローカルに保存されていなければ、処理フローは好適には、動作412に進む。動作412では、処理調整部118等のある処理調整部は、インターネット124を介して管理者382と通信リンクを確立する。インターネット124は好適なリンクを提供するが、任意の既知の通信技術もまた、発明の精神および範囲から逸脱することなくリンクを確立するために用いられることは明らかである。管理者382と通信リンクを確立する動作の一部には、処理調整部118またはユーザの認証処理が含まれる場合がある。実際には、管理者382により提供されるサービスは、管理者に対して代金を支払う意思がないユーザまたは別の方法で埋め合わせを行う意思がないユーザには享受される必要はない。従って、当該認証処理には、処理調整部118から管理者382への既知の技術による、十分に一意である情報を送信する動作や、別に当該情報を管理する動作が含まれる。当該情報には、ユーザ名および/またはパスワード、メンバ名、ある種のシリアルナンバー、ソフトウエア購入の際の証明書などが含まれうる。
【0088】
いったん、処理調整部118と管理者382との間に通信リンクが確立されれば、処理は好適には動作414に進む。動作414では、少なくとも(ソフトウエアプログラムIDや他の指標等の)ソフトウエアプログラムに関する識別情報が、インターネット124を介して処理調整部118から管理者382に送信される。また、必須ではないが、変換テーブル550には好適には次元556が含まれる。この次元556により、プレイヤーのIDナンバーや処理能力を表す他の指標等の処理識別子を、処理調整部118から管理者382にインターネット124を介して送信するよう指示できる。
【0089】
次に、管理者382は好適には、サーバ384を用いて入力されるデータを処理し、変換テーブル550にアクセスする(動作416)。特に、サーバ384は好適には、ソフトウエアプログラムの実行の際に所望の結果を得ることができるよう、識別情報(および、必要であれば処理識別子)を用いて、処理調整部118の処理能力を調整するパラメータ集合を取得する。その後、サーバ384は好適には、適切な形式(例えば、前述のセル形式)にパラメータをパッケージ化し、当該パッケージ化されたパラメータをインターネット124を介して処理調整部118に送信する。その後、処理フローは図10の節点Bに進む。以下、図10を参照する。
【0090】
動作418では、処理調整部118は、好適には、(変換テーブル550から取得されたパラメータが、ローカルに保存されたバージョンに基づいて取得されようと、管理者エンティティから取得されようと、)当該パラメータを用いて、処理能力を変化させる処理を行う。オペレーションシステムの制御下または他のシステムレベルの制御プログラムの制御下に処理調整部118を置くと想定すれば、処理調整部118の処理能力を変化せしめる動作を行うことができる程度のプログラムに当該パラメータを提供するのが好ましい。他方、すべてのハードウエア面からのアプローチ、および/または、ソフトウエアおよびハードウエアの組み合わせの面からのアプローチが採用された場合、記憶域やレジスタなどの好適な送り先に当該パラメータを提供するのが好ましい。動作420では、処理調整部118は、提供されるパラメータに従って、自身の処理特性を変化させるのが好ましい。
【0091】
プロセッサ要素200の種類が広範に及ぶ場合、処理調整部118の処理特性を変化させるために採用されるアプローチは多岐にわたることがあり、本明細書でそのいくつかの例を後述する。なお、ここで、そのような処理特性の変化が正常に行われた場合、処理フローは好適には動作422に進む。動作422では、当該変化された処理特性を用いてソフトウエアプログラムが実行される。処理調整部118は、ソフトウエアプログラムが開発された時点で考慮される処理能力を真似る(mimic;処理能力に一致させる)ことができるため、ソフトウエアプログラムの実行時の異常を回避できる点において有意義である。
【0092】
図11は、処理調整部118によるプログラムコンテンツのセキュアな方法でのダウンロードを可能とするシステム610の一例を示す。なお、当該プログラムコンテンツとは、例えば、ソフトウエアプログラムおよび/または上述のパラメータ集合であり、セキュアな方法とは、例えば、認証されていないプログラムの複製物が排除されるか、使いものにならないものにさせる方法である。そのようなシステムは、2002年12月11日に出願された、米国出願番号No.10/316675の「METHODS AND APPARATUS FOR SECURE DISTRIBUTION OF PROGRAM CONTENT」に記載されており、当該文献の開示内容は参照により本明細書に援用される。
【0093】
システム610には、好適には、管理者サーバ601、第3者サーバ602、暗号化サーバ603、処理調整部118等の複数のクライアント端末装置604、およびこれら装置を接続するインターネット等のネットワーク605が含まれる。システム610は、管理者サーバ601、第3者サーバ602や暗号化サーバ603を複数含んでもよい。簡潔かつ明確にするために、それぞれのサーバを一つだけにして、以下説明する。
【0094】
サーバ601,602,603のそれぞれは好適には、エンティティや人によって、維持され、管理され、および/または別に、当該エンティティや人に関連付けられる。ここで、サーバとエンティティとは相互に関連付けられたものとして以下説明する。
【0095】
上述のサーバ384等の管理者サーバ601は、好適には、上述のデータベース386等の顧客データベース606に接続され、ある管理者権限の機能を実行するエンティティにより、維持され、管理され、および/または別に、当該エンティティに関連付けられる。管理者サーバ601および顧客データベース606は、ネットワークサーバの機能およびデータベースの機能を実行するために適切な既知のハードウエアを用いて実装されうる。
【0096】
第3者サーバ602は、好適には、ソフトウエアプログラムの開発者などの管理者サーバ601のエンティティとは異なるエンティティにより、維持され、管理され、および/または別に、当該エンティティに関連付けられる。一例として、第3者サーバ602は、コンピュータアプリケーションプログラムやコンピュータシステムプログラムの開発者であってよく、および/または、処理調整部118により用いられるパラメータ集合を提供して上述のごとく処理能力を調整してもよい。なお、第3者サーバ602に関連付けられたエンティティは、管理者サーバ601のエンティティと異なる必要はなく、実際には、同一のエンティティであってもよい。例えば、第3者サーバ602により実行される機能を、管理者サーバ601が実行してもよい。第3者サーバ602は、サーバに関する機能を実行するための任意の既知のハードウエアを用いて実装されうる。
【0097】
暗号化サーバ603は、好適には、管理者サーバ601のエンティティと同一のエンティティにより、維持され、管理され、および/または別に、当該エンティティに関連付けられる。一例として、暗号化サーバは、管理者382内のサーバ384と同一場所に設けられてもよい。なお、暗号化サーバ603は他のエンティティに関連付けられてもよい。暗号化サーバ603は、サーバに関する機能を実行するための任意の既知のハードウエアを用いて実装されうる。管理者サーバ601、第3者サーバ602および暗号化サーバ603により実行されるそれぞれの機能を、管理し維持しおよび/または別にそれらサーバに関連付けられる一つ以上のサーバおよび/または一つ以上のエンティティ間で分散させることができる。なお、その分散された状態は、図11に示される状態と一致するのが好ましい。
【0098】
一般的に、それぞれのクライアント端末装置604は、好適には、任意の既知のハードディスクドライブハードウエア等のハードディスクドライブ607、およびソニーのメモリスティック等のメモリーカード608と連結可能である。他には、上述したCDドライブ、DVDドライブ、あるいはBlu−rayDiscドライブ等の光学デバイスと連結可能である。ハードディスクドライブ607、メモリーカード608、および/または光学デバイス(クライアント端末装置604に対し、取り外し可能であるのが好ましい)は、装置604とは別ものとして図示されているが、装置604に一体化して設けられてもよい。クライアント端末装置604は、パーソナルコンピュータや出願人自身のプレイステーション等の任意の既知のハードウエアを用いて実装されてもよい。
【0099】
クライアント端末装置604は、好適には一つ以上の処理調整部118を含み、さらに、ネットワーク605を介したダウンロードにより、ソース暗号化プログラムまたはソース暗号化パラメータ集合を取得できる。権限が与えられた任意のエンティティから、ソース暗号化プログラムまたはソース暗号化パラメータ集合を取得することができるが、クライアント端末装置604が、(例えば、ネットワーク605を介したダウンロードにより)、第3者サーバ602または管理者サーバ601から、そのソース暗号化プログラムまたはソース暗号化パラメータ集合を取得するのが好ましい。
【0100】
エンドユーザは、ある形式(すなわち、ソースが暗号化された形式)のコンピュータプログラムおよび/またはパラメータ集合を取得できる。この場合、復号鍵を取得しソース暗号化プログラムを復号してはじめて、当該コンピュータプログラムおよび/またはパラメータ集合を用いて、クライアント端末装置604内の処理調整部の処理能力を調整するプログラムを実行できる。その復号鍵は、権限が与えられたクライアント端末装置604によってのみ取得される。
【0101】
図12を参照すると、本図は、暗号化サーバ603および第3者サーバ602により実行される処理ステップの概念構成およびフローを示す図である。本図は、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合が生成される方法の一例が示されている。この例において、第3者サーバ602は、ソフトウエア開発者に関連づけられる。なお、当該ソフトウエア開発者は、自分自身、あるいは、当該自身に他のエンティティを併用してのいずれかで、プログラムおよび/またはパラメータ集合を取得する。図12に示すように、第3者サーバ602は、システムプログラムやアプリケーションプログラム等の少なくとも一つのプログラム、および/または少なくとも一つのパラメータ集合を備えることができる。一つ以上のこれらのプログラムまたはパラメータ集合は、ネットワーク605を介して暗号化サーバ603に送信される。
【0102】
暗号化サーバ603は、好適には、そのプログラムやパラメータ集合を暗号化し、当該暗号化されたプログラムや暗号化されたパラメータ集合を第3者サーバ602に返す。当該暗号化処理では、公開鍵暗号方式や対称鍵暗号方式などの任意の既知の暗号化技術を用いることができ、これにより暗号化されたプログラムやパラメータ集合を生成できる。
また、暗号化サーバ603は、第3者サーバ602に復号鍵をも提供する。当該復号鍵により、暗号化されたソフトウエアプログラムやパラメータ集合を復号化できる。第3者サーバ602は、ネットワーク605を介した電子的な通信により、暗号化されたプログラムやパラメータ集合をクライアント端末装置604に配布できる。ソース暗号化プログラムまたはソース暗号化パラメータ集合がどのように配布されるかとは無関係に、エンドユーザは好適には、ある登録処理を実行してはじめて、プログラムを実行するか、またはパラメータ集合を用いた処理能力の調整を行うことができる。
【0103】
図13は、ソース暗号化コンピュータプログラムおよび/またはソース暗号化パラメータ集合を処理するために実行される、ある処理ステップの概念構成およびフローを示す図である。クライアント端末装置604は好適には、ネットワーク605を介したダウンロード動作により、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を取得する。なお、ソース暗号化コンピュータプログラムを実行し、またはソース暗号化パラメータ集合を用いるためには、クライアント端末装置604は好適には、当該ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を、ネットワーク605を介して管理者サーバ601に登録しなければならない。
【0104】
当該登録処理に関する少なくともいくつかのステップを、図14のフロー図に示す。ステップ20において、クライアント端末装置604は、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を取得し、それらを上述のごとく保存する。ステップ22では、ユーザは好適には、コンピュータプログラムをインストールし、かついつても実行できる準備をさせる旨の指示、あるいは、暗号化パラメータ集合を用いる旨の指示を与える。この点において、クライアント端末装置604には好適には、ユーザのインストール指示に応答して呼び出されるコンピュータプログラムが含まれる。当該プログラムは、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合の登録をユーザに促すものであり、通信機能を呼び出す(S24)。
【0105】
ここで、クライアント端末装置604は好適には、ネットワークインタフェースを含むのが好ましい。このネットワークインタフェースにより、既知の技術であるネットワーク605を介した通信を提供できる。任意の既知のネットワークインタフェースハードウエアはこの目的のために用いられうる。ステップ26において、通信チャンネルは好適にはクライアント端末装置604によって開始され、クライアント端末装置604および管理者サーバ601間で確立される。クライアント端末装置604が有するネットワークインタフェースにより、当該クライアント端末装置604に関連する少なくともいくつかの識別情報を、ネットワーク605を介して管理者サーバ601に送信することが容易になる。当該識別情報には好適には、特に、クライアント端末装置604にとって十分に一意である、プレイヤーID等の機器IDが含まれる。また、当該識別情報には、媒体IDが含まれてもよい。なお、媒体IDとは、ソース暗号化コンピュータプログラムの保存のためにクライアント端末装置604により使用されるメモリタイプ(メモリの型番)を示すものである。
【0106】
クライアント端末装置604には好適には、以下の第1の記録デバイスおよび第2の記録デバイスが含まれる。当該第1の記録デバイスは、例えば、ハードディスクドライブ607やメモリーカード608であり、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を、後述するある他の情報とともに記録できる。当該第2の記録デバイスは、機器IDを記録できる読み出し専用メモリ(ROM)などである。クライアント端末装置604が有するネットワークインタフェースにより、(ROMから取得された)機器IDを、ネットワーク605を介して管理者サーバ601に送信することがさらに可能になる(動作S28)。媒体IDもまた、クライアント端末装置604から管理者サーバ601宛てに送信できる。
【0107】
図15を参照すると、管理者サーバ601は、クライアント端末装置604から、ネットワーク605を介して、機器ID(および、可能であれば媒体ID)等の識別情報を取得する(S30)。この点について、管理者サーバ601にはネットワークインタフェースが含まれるのが好ましい。当該ネットワークインタフェースによりネットワーク605との通信を容易にすることで、当該ネットワーク605を介したクライアント端末装置604からの識別情報の取得を実現できる。ステップ32において、管理者サーバ601は、クライアント端末装置604から取得した機器IDに対応する、ここでは仮想IDと呼ばれる他のIDを当該機器IDに割り当てる。ここで、仮想IDは、複数の予め存在するID群の中から選択されるものであってもよいし、機器IDまたはある他の数値に基づく数値演算を通じて導出されるものであってもよいし、あるいは、任意の他の既知の、または後述の改良技術を用いることで生成されてもよい。
【0108】
ステップ34において、管理者サーバ601は顧客データベース606を対象に、クライアント端末装置604から取得した機器ID(すなわち、その第2記憶デバイス(ROM)内に保持される機器ID)と一致する既存の機器IDを検索する。図16に示すごとく、顧客データベース606には好適には、それぞれの登録情報、すなわち、クライアント端末装置604のそれぞれに対応するそれぞれの登録情報一式が保持される。少なくとも、その登録情報には、クライアント端末装置604に関するある識別情報、例えば、機器IDが含まれる。図16に示すごとく、複数の機器IDが、顧客データベース606内にあらかじめ保持されており、その様子は図16の左側の列に示されている。こうした機器ID群のそれぞれは好適には、所与のクライアント端末装置604の一つ一つに対応するものであり、かつその機器IDは、それぞれのクライアント端末装置604に対し十分に一意である。管理者サーバ601にもまた、好適にはデータプロセッサが含まれる。当該データプロセッサによれば、顧客データベース606を対象に、ネットワーク605を介したクライアント端末装置604から取得される機器IDと一致する登録情報(例えば、機器ID)の検索を実現できる。この目的のために、任意の既知の、または後述の改良されたデータ処理用のハードウエアを用いることができる。
【0109】
図15に再度戻り、ステップS36において、仮想IDは、顧客データベース606内に保持される機器IDに関連付けられる。すなわち、仮想IDは、管理者サーバ601宛てに機器IDを送信した特定のクライアント端末装置604に関連付けられる。当該関連付けは、保持された機器IDに対応付けるような方法で、仮想IDを顧客データベース606内に記録せしめることで実現できる。
【0110】
上述したように、クライアント端末装置604から管理者サーバ601へのネットワーク605を介した識別情報の送信動作には(図14のステップ28)、媒体ID(またはメディアID)の送信動作が含まれてもよい。なお、媒体IDとは、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合の保存のためにクライアント端末装置604によって使用される、記録デバイスのタイプに対応するものである。媒体IDにより、例えば、クライアント端末装置604が、ハードディスクドライブ607内部、メモリーカード608内部、あるいは、ある他のタイプの記録媒体内部に、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合が保持されていることを知らせることができる。媒体IDの取得を受けて、管理者サーバ601は、記録されている機器IDおよび取得された媒体IDに仮想IDを関連付けることができる。その際、媒体IDは、顧客データベース606内において、当該記録された機器IDに対応する場所に記録される。
【0111】
図17および図18に示すごとく、管理者サーバ601は好適には、暗号化された復号鍵および暗号化された仮想IDを生成することが可能である。ここで、その復号鍵は、クライアント端末装置604上の、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を復号化するために用いることができる。ここで、管理者サーバ601は、(図11から図12までに示された)暗号化サーバ603により生成された、それぞれのソース暗号化コンピュータプログラムを復号化するために用いられる任意の数の復号鍵群にアクセスする。これらの復号鍵は、暗号化サーバ603および/または第3者サーバ602により、管理者サーバ601に提供される。さらに、その復号鍵は、ネットワーク605や他のネットワークを介して管理者サーバ601に送信されてもよいし、あるいは、記録メディアにより人手で提供されてもよい。
【0112】
ステップ40において、管理者サーバ601は好適には、クライアント端末装置604に関連付けられた仮想IDを用いて復号鍵を暗号化する。さらに、管理者サーバ601は好適には、クライアント端末装置604について関連づけられた機器IDを用いて、その仮想IDを暗号化する。なお、機器IDのそれぞれは、顧客データベース606から取得される(S42)。
【0113】
管理者サーバ601が有するネットワークインタフェースによれば、ネットワーク605を介した、暗号化された復号鍵および暗号化された仮想IDのクライアント端末装置604への送信をさらに容易にできる(S44)。ステップ46において、クライアント端末装置604は好適には、ネットワーク605を介して、暗号化された復号鍵および暗号化された仮想IDを取得し、当該取得したそれらを、(ハードディスクドライブ607やメモリーカード608などの)第1の記録デバイス内に保存する。
【0114】
暗号化された復号鍵は、権限が与えられたクライアント端末装置604、例えば、有効な機器IDを提供し、かつ復号鍵の暗号化用の仮想IDに関連付けられた当該機器IDを登録したクライアント端末装置604のみに提供される。さらに、暗号化された復号鍵に関する任意の妨害、例えば、ネットワークでの著作権侵害行為や権限が与えられない複製等があったとしても、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を復号化するために必要な情報(すなわち、有効な復号鍵)が提供されることはない。実際には、そのような復号鍵は、十分に一意である仮想IDにより暗号化される。また、その暗号化された仮想IDは、登録処理が完了し、かつクライアント端末装置604に権限が与えられてはじめて、クライアント端末装置604宛てに提供される。仮想IDは、管理者サーバ601からクライアント端末装置604に暗号化された状態で送信されるため(すなわち、クライアント端末装置604の機器IDを用いて暗号化されるため)、暗号化された仮想IDを権限なく取得しても、暗号化された復号鍵を復号化するための必要な情報が与えられることはない。
【0115】
図19および図20は、クライアント端末装置604内のソース暗号化コンピュータプログラムおよび/またはソース暗号化パラメータ集合をロードする/インストールするために実行される、ある処理を示す。図19は、ハードディスクドライブ607やメモリーカード608などの第1の記録デバイスと別個にされたクライアント端末装置604を示す。なお、上述したように、これらの構成要素は一体化または部分的に一体化されてもよい。ここで、当該処理のこの段階において、クライアント端末装置604内には、ROM等の第2のデバイス内に記録された機器IDが含まれ、かつ、第1の記録デバイス607,608には、機器ID、暗号化された仮想ID、暗号化された復号鍵、および暗号化されたコンピュータプログラム等が含まれる。
【0116】
ステップ50において、ユーザは、ソース暗号化コンピュータプログラムをロードする/インストールする旨の指示、あるいは、ソース暗号化パラメータ集合を用いて処理能力を調整する旨の指示を、クライアント端末装置604に対し与えることができる。当該ユーザからの指示を受けて、クライアント端末装置604は、適切なハードウエアを用いて、かつソフトウエアによる処理を行うことで、第1の記録デバイス607,608から機器IDを読み出すとともに、ROMなどの第2の記録デバイスからも機器IDを読み出す(S52)。ステップ54では、これらの機器IDが一致するか否かについての決定がなされる。これらの機器IDが一致しない場合、処理は中止され、および/または他の処理が開始される。一方、これらの機器IDが一致する場合、処理はS56に進む。ここでは、暗号化された仮想IDは、機器ID(ROM内に記憶される機器IDが好ましい)を用いて復号化される。仮想IDがいったん生成されれば、暗号化された復号鍵は、当該生成された仮想IDを用いて復号化される(S58)。次に、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合は、その復号鍵を用いて復号化される(S60)。ステップ62において、コンピュータプログラムまたはパラメータ集合は、ステップ56で得た仮想IDを用いて再度暗号化され、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合を取得する。クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合は、第1の記録デバイス607,608内に保存される(S64)。この段階においては、暗号化された復号鍵、ソース暗号化プログラム、ソース暗号化パラメータ集合は、いずれも、第1のデバイス607,608内に保持される必要はない。
【0117】
クライアント端末装置604には好適には、上述した暗号化機能および復号化機能を実行するための復号化デバイスおよび暗号化デバイスが含まれる。当該復号化デバイスおよび暗号化デバイスは一体化することができ、簡潔化のために、それらを復号化デバイスと呼んでもよい。そのような暗号化および復号化を実現するために、任意の既知のまたは後述の改良されたハードウエアおよび/またはソフトウエアが、本発明に従って用いられる。例えば、復号化ライブラリや暗号化ライブラリなどが用いられる。
【0118】
クライアント側で暗号化したコンピュータプログラムおよび/またはクライアント側で暗号化したパラメータ集合は、安全性が高い。なぜなら、権限が与えられていない、異なるクライアント端末装置604上のエンドユーザは、権限のないその複製物を実行することはできないためである。実際に、クライアント側で暗号化したコンピュータプログラムおよび/またはクライアント側で暗号化したパラメータ集合は、最初に復号化される必要がある。なお、当該プログラムおよび/またはパラメータ集合は、後述するように、管理者サーバ601にコンピュータプログラムを登録した端末以外の任意のクライアント端末装置604上では実行できない。
【0119】
図21および図22を参照し、コンピュータプログラムがクライアント端末装置604により実行される処理をここで述べる。その処理のこの段階において、クライアント端末装置604には、機器IDを含むROMなどの第2の記録デバイスと、機器ID、暗号化された仮想ID、およびクライアント側で暗号化したコンピュータプログラムを備える第1の記録デバイスとが含まれる。
【0120】
S70において、ユーザは、コンピュータプログラムを実行する旨の指示をクライアント端末装置604に与える。適切なコンピュータプログラムの制御下で動作するクライアント端末装置は、ユーザからの指示を受けて、第1の記録デバイス607,608から機器IDを読み出すとともに、第2の記録デバイス(ROM)からも機器IDを読み出す(S72)。ステップ74では、これらの機器IDが互いに一致するか否かについての決定がなされる。これらの機器IDが一致する場合、処理はS76に進む。ここでは、暗号化された仮想IDは、機器ID(ROM内に記憶される機器IDが好ましい)を用いて復号化される。仮想IDがいったん生成されれば、暗号化された復号鍵は、当該生成された仮想IDを用いて復号化される(S58)。ここでは、クライアント端末装置604の復号化デバイスが、機器ID(ROM内に記憶される機器IDが好ましい)を用いて、暗号化された仮想IDを復号化する。ステップ78において、クライアント端末装置604の復号化デバイスは、ステップS76で得られた仮想IDを用いて、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合を復号化する。このとき、クライアント端末装置604は、RAM内に存在するコンピュータプログラムを実行してもよいし、処理調整部の処理能力を調整してもよい。
【0121】
クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合は、当該クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合を暗号化するために使用された仮想IDに関連付けられたクライアント端末装置604のみによって、復号化される。従って、権限が与えられていない、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合の複製物が、権限が与えられていないエンドユーザに提供された場合、そのようなエンドユーザがコンピュータを実行しようとし、あるいはパラメータ集合を使用しようとする装置では、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合を復号化することはできない。さらに、第1の記録デバイス607,608が、権限が与えられていないエンドユーザに与えられた場合(例えば、当該記憶デバイス607,608が異なるクライアント端末装置604に接続された場合)、ROMに記憶された任意の機器IDと第1の記録デバイスに含まれる機器IDとは一致しないため、その暗号化された仮想IDを復号化できない。従って、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合を、復号化することは不可能である。クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合をセキュアに配布することで、権限が与えられていない複製物を使いものにならないものにし、かつ特定のクライアント端末装置604だけが、コンピュータプログラムを実行し、および/または処理能力を調整することを保証できる。
【0122】
上述した態様では、復号鍵がネットワーク605を介してクライアント端末装置604により提供されることについて考慮されているが、他の態様として、当該復号鍵が、(CD−ROMなどの)記録媒体により人手でクライアント端末装置604に提供されることを考慮したものがある。ここで、本発明に係るこうした態様を、図23および図24を用いて説明する。図23に示すごとく、クライアント端末装置604は、記録媒体609Aにより提供された、暗号化された第1の復号鍵を取得する。この第1の復号鍵は、クライアント端末装置604上のソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合の復号化に用いることができる。管理者サーバ601は好適には、暗号化された第2の復号鍵および暗号化された仮想IDを生成できる。なお、第2の復号鍵は、暗号化された第1の復号鍵の復号化に用いることができる。ここで、管理者サーバ601は任意の数の第2の復号鍵にアクセスし、当該復号鍵を用いて、暗号化された第1の復号鍵のそれぞれを復号化する。これらの第2の復号鍵は、暗号化サーバ603および/または第3者サーバ602により、管理者サーバ601に提供される。さらに、これらの第2の復号鍵は、ネットワーク605や他のネットワークを介して管理者サーバ601に送信されてもよいし、あるいは、記録メディアにより人手で提供されてもよい。
【0123】
ステップ40Aにおいて、管理者サーバ601は好適には、クライアント端末装置604に関連付けられた仮想IDを用いて第2の復号鍵を暗号化する。さらに、管理者サーバ601は好適には、クライアント端末装置604について関連づけられた機器IDを用いて、その仮想IDを暗号化する。なお、機器IDのそれぞれは、顧客データベース606から取得される(S42)。管理者サーバ601が有するネットワークインタフェースによれば、ネットワーク605を介した、暗号化された第2の復号鍵および暗号化された仮想IDのクライアント端末装置604への送信をさらに容易にできる(S44A)。ステップ46Aにおいて、クライアント端末装置604は好適には、ネットワーク605を介して、暗号化された第2の復号鍵および暗号化された仮想IDを取得し、当該取得したそれらを、(ハードディスクドライブ607やメモリーカード608などの)第1の記録デバイス内に保存する。
【0124】
暗号化された第2の復号鍵は、権限が与えられたクライアント端末装置604、例えば、有効な機器IDを提供し、かつ第2の復号鍵の暗号化用の仮想IDに関連付けられた当該機器IDを登録したクライアント端末装置604のみに提供される。さらに、暗号化された第2の復号鍵に関する任意の妨害、例えば、ネットワークでの著作権侵害行為や権限が与えられない複製等があったとしても、暗号化された第1の復号鍵を復号化するために必要な情報(すなわち、有効な第2の復号鍵)が提供されることはない。実際には、そのような第2の復号鍵は、十分に一意である仮想IDにより暗号化される。同様に、その暗号化された仮想IDは、登録処理が完了し、かつクライアント端末装置604に権限が与えられてはじめて、クライアント端末装置604宛てに提供される。仮想IDは、管理者サーバ601からクライアント端末装置604に暗号化された状態で送信されるため(すなわち、クライアント端末装置604の機器IDを用いて暗号化されるため)、暗号化された仮想IDを権限なく取得しても、暗号化された第2の復号鍵を復号化するための必要な情報が与えられることはない。
【0125】
図25および図26は、クライアント端末装置604内のソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合をロードする/インストールするために実行される、ある処理を示したものである。ここで、当該処理のこの段階において、クライアント端末装置604内には、第2のデバイス(ROM)内に記録された機器IDが含まれ、かつ、第1の記録デバイス607,608には、機器ID、暗号化された仮想ID、暗号化された第2の復号鍵、暗号化された第1の復号鍵、およびソース暗号化コンピュータプログラムおよび/またはソース暗号化パラメータ集合等が含まれる。
【0126】
ステップ50において、ユーザは、将来の使用のためのソース暗号化コンピュータプログラムおよび/またはソース暗号化パラメータ集合をロードする/インストールする旨の指示を、クライアント端末装置604に対し与えることができる。当該ユーザからの指示を受けて、クライアント端末装置604は、適切なハードウエアを用いて、かつソフトウエアによる処理を行うことで、第1の記録デバイス607,608から機器IDを読み出すとともに、ROMなどの第2の記録デバイスからも機器IDを読み出す(S52)。ステップ54では、これらの機器IDが一致するか否かについての決定がなされる。これらの機器IDが一致しない場合、処理は中止され、および/または他の処理が開始される。一方、これらの機器IDが一致する場合、処理はS56に進む。ここでは、暗号化された仮想IDは、機器ID(ROM内に記憶される機器IDが好ましい)を用いて復号化される。仮想IDがいったん生成されれば、暗号化された第2の復号鍵は、当該生成された仮想IDを用いて復号化され、かつ暗号化された第1の復号鍵は第2の復号鍵を用いて復号化される(S58A)。次に、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合は、第1の復号鍵を用いて復号化される(S60A)。ステップ62において、コンピュータプログラムまたはパラメータ集合は、ステップ56で得た仮想IDを用いて再度暗号化され、クライアント側で暗号化したコンピュータプログラムを生成する。クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合は、第1の記録デバイス607,608内に保存される(S64)。この段階においては、暗号化された第1の復号鍵、暗号化された第2の復号鍵、ソース暗号化プログラム、ソース暗号化パラメータ集合は、いずれも、第1のデバイス607,608内に保持される必要はない。
【0127】
いったん、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合が生成され、かつ第1の記録デバイス607,608内に記憶されれば、図21および図22を参照して説明した処理が用いられ、コンピュータプログラムが実行される。
【0128】
図27は、処理調整部118による上述のコンピュータプログラムまたはパラメータ集合のセキュアな方法でのダウンロードを可能とする他のシステム710を示す。セキュアな方法とは、例えば、認証されていないプログラムの複製物が排除されるか、使いものにならないものにさせる方法である。そのようなシステムは、参照により本明細書に援用される、2002年12月1日に出願された、米国出願番号No.10/316309の「METHODS AND APPARATUS FOR SECURE DISTRIBUTION OF CONTENT」に記載されている。
【0129】
システム710には、好適には、第3者サーバ701、暗号化サーバ702、配布サーバ703、処理調整部118等の複数のクライアント端末装置705、およびこれら装置を接続するインターネット等のネットワーク706が含まれる。システム710は、第3者サーバ701、暗号化サーバ702、配布サーバ703および/または管理者サーバ704を複数含んでもよい。簡潔かつ明確にするために、それぞれのサーバを一つだけにして、以下説明する。サーバ701,702,703,704のそれぞれは、エンティティや人によって、維持され、管理され、および/または別に、当該エンティティや人に関連付けられるのが好ましい。以下、サーバとエンティティとは相互に関連付けられたものとして説明する。
【0130】
第3者サーバ701は、図11を参照して上述したように、ソフトウエアプログラムの開発者などのエンティティにより、維持され、管理され、および/または別に、当該エンティティに関連付けられる。
【0131】
暗号化サーバ702は好適には、管理者権限の機能を有するエンティティにより、維持され、管理され、および/また別に、当該エンティティに関連付けられる。当該エンティティは、管理者サーバ704に関するエンティティと同一のエンティティであるのが好ましい。なお、暗号化サーバ702は、サーバに関する機能を実行するための任意の既知のハードウエアを用いて実装されうる。
【0132】
配布サーバ703は好適には、ネットワーク706等を介して、ソフトウエアプログラムまたはパラメータ集合を、クライアント端末装置705に配布させるエンティティにより、維持され、管理され、および/または別に、当該エンティティに関連付けられる。配布サーバ703は好適には、詳細は後述するが、データベース386等の顧客データベース707に接続される。配布サーバ703および顧客データベース707は、ネットワークサーバの機能およびデータベースの機能を実行するために適切な既知のハードウエアを用いて実装されうる。
【0133】
サーバ384等の管理者サーバ704は、ある管理者権限の機能を実行するエンティティにより、維持され、管理され、および/または別に、当該エンティティに関連付けられる。管理者サーバ704は、ネットワークサーバの機能およびデータベースの機能を実行するために適切な既知のハードウエアを用いて実装されうる。
【0134】
第3者サーバ701、暗号化サーバ702、配布サーバ703、および管理者サーバ704により実行されるそれぞれの機能を、管理し維持しおよび/または別にそれらサーバに関連付けられる一つ以上のサーバおよび/または一つ以上のエンティティ間で分散させることができる。実際には、それぞれのサーバに対してエンティティを別々にする必要はなく、例えば、一つのエンティティを、配布サーバ703および管理者サーバ704に関連付けることも可能である。なお、分散された状態は、図27に示される状態と一致するのが好ましい。
【0135】
一般的に、それぞれのクライアント端末装置705は、好適には、一つ以上の処理調整部118を含み、任意の既知のハードディスクドライブハードウエア等のハードディスクドライブ708、およびソニーのメモリスティック等のメモリーカード709を動作可能に接続する。他には、クライアント端末装置は、上述したCDドライブ、DVDドライブ、あるいはBlu−rayDiscドライブ等の光学デバイスに接続される。ハードディスクドライブ708、メモリーカード709、および/または光学デバイス(クライアント端末装置705にリモートに接続されるのが好ましい)は、装置705とは別ものとして図示されているが、装置706に一体化して設けられてもよい。クライアント端末装置705は、パーソナルコンピュータや出願人自身のプレイステーション等の任意の既知のハードウエアを用いて実装されてもよい。
【0136】
クライアント端末装置705は好適には、図11のクライアント端末装置604について説明した上述の方法により、ネットワーク706を介したダウンロードを行うことで、ソース暗号化プログラムおよび/またはソース暗号化パラメータ集合を取得できる。
【0137】
図28は、暗号化サーバ702および第3者サーバ701により実行される処理ステップの概念構成およびフローを示す図である。本図は、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合が生成される方法の一例が示されている。この例において、第3者サーバ701は、ソフトウエア開発者に関連づけられる。なお、当該ソフトウエア開発者は、自分自身、あるいは、当該自身に他のエンティティを併用してのいずれかで、ネットワーク706を介して暗号化サーバ702に送信されたプログラムおよび/またはパラメータ集合を取得する。なお、ここで、コンピュータプログラムまたはパラメータ集合は、記録メディアなどにより人手で暗号化サーバ702に提供されてもよい点である。
【0138】
暗号化サーバ702は好適には、そのプログラムやパラメータ集合を暗号化し、当該暗号化されたプログラムや暗号化されたパラメータ集合を第3者サーバ701に返す。当該暗号化処理では、公開鍵暗号方式や対称鍵暗号方式などの任意の既知の暗号化技術を用いることができ、これにより暗号化されたプログラムやパラメータ集合を生成できる。一例として、暗号化サーバ702は、暗号化システムプログラム(ソース暗号化システムプログラム)や暗号化アプリケーションプログラム(ソース暗号化アプリケーションプログラム)などの、暗号化されたプログラム、あるいはソース暗号化パラメータ集合を第3者サーバ701に返す。また、暗号化サーバ702は、第3者サーバ701に復号鍵をも提供する。当該復号鍵により、暗号化されたソフトウエアプログラムやパラメータ集合を復号化できる。好適には、その復号鍵はアクティベートされていない状態(使用できない状態)で配布サーバ703にも提供される。すなわち、その状態で用いても、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を復号化することは困難である。例えば、最初に暗号化サーバ702等のエンティティにより暗号化されることで、復号鍵は、アクティベートされていない状態になりうる。後述のごとく、これにより安全性を高めることができる。
【0139】
図29は、配布サーバ703および管理者サーバ704間で実行される、ある処理ステップの概念構成およびフローを示す図である。配布サーバ703は好適には、ネットワーク706を介して、管理者サーバ704との通信リンクを確立する。管理者サーバ704は、鍵配布プログラム711、鍵管理データ712、および鍵登録プログラム713を、ネットワーク706を介して、配布サーバ703に送信するのが好ましい。以下、後述するように、配布サーバ703は、鍵配布プログラム711を実行し、その結果、エンドユーザに復号鍵を配布できる。鍵管理データは好適には、機密性の高い情報のあつまりであり、当該あつまりには、それぞれの配布サーバ703に対して十分に一意である配布IDが含まれる。鍵登録プログラム713は配布サーバ703により実行され、好適には、アクティベートされていない復号鍵をアクティベートされた復号鍵に変換する。(すなわち、ソース暗号化コンピュータプログラムの復号化を可能にする。)
【0140】
図30を参照すると、本図は、好適には配布サーバ703および管理者サーバ704間で実行される、さらなる処理ステップを示すフロー図である。一般的に、配布サーバ703は、ネットワーク706を介して、管理者サーバ704にアクティベート化を求めるリクエストを行い、そのレスポンスとして、管理者サーバ704から、アクティベート許可情報を取得できる。より詳細には、動作S1において、配布サーバ703は好適には、ネットワーク706を介して管理者サーバ704に接続する。動作S2では、配布サーバ703は、鍵管理データ(その中には配布IDが含まれる)を管理者サーバ704宛てに送信する。
【0141】
動作S3では、管理者サーバ704は好適には、適切な認証処理により配布サーバ703を認証する。例えば、管理者サーバ704は、ユーザIDやパスワードの他、他の証明できるある情報の提供を要求することで、認証を可能とする。なお、好適には、管理者サーバ704は、鍵管理データ712から配布IDを抽出することで、配布サーバ703を認証する。動作S4では、認証が成功したか否かについての決定がなされる。認証が失敗した場合、処理は動作S5に進む。ここでは、どのアクティベート処理も許可されず、処理は終了する。もし、認証が成功した場合、処理フローは動作S6に進む。ここでは、アクティベート許可情報が、管理者サーバ704からネットワーク706を介して配布サーバ703に送信される。
【0142】
動作S7において、配布サーバ703は、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合に関連づけられた復号鍵をアクティベート化させる。より詳細には、配布サーバ703は鍵登録プログラム713を実行するが、その際に入力としてアクティベート許可情報が要求されるのが好ましい。鍵登録プログラム713は、アクティベート許可情報の入力を受けて、復号鍵をアクティベートさせ、当該アクティベートされた復号鍵を用いてソース暗号化コンピュータプログラムを復号化する。一例として、アクティベート許可情報には、最初に暗号化された復号鍵を復号するための適切な復号鍵が含まれることがある。この場合、鍵登録プログラム713にはある復号化機能が備えられており、当該機能により、アクティベート許可情報を用いて、最初に暗号化された復号鍵を復号することが可能になる。
【0143】
どのように復号鍵がアクティベートされるか、あるいは復号鍵がアクティベートされるか否かに関係なく、配布サーバ703は好適には、顧客データベース707内に復号鍵を保存する。この段階では、配布サーバ703には、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合の他に、当該プログラムまたはパラメータ集合を復号化できる復号鍵も含まれる(またはそれらにアクセスできる)。
【0144】
図31は、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を処理するために実行される、ある処理ステップの概念構成およびフローを示す図である。なお、ソース暗号化コンピュータプログラムを実行し、またはソース暗号化パラメータ集合を用いて処理能力を調整するためには、クライアント端末装置705は好適には、ある登録処理を実行する必要がある。これらの処理を、ネットワーク706上の管理者サーバ704を用いて説明する。
【0145】
登録処理に関する少なくともいくつかのステップを、図32のフロー図に示す。ステップS20,S22,S24,S26およびS28の処理は、図14における同一の符号を付した処理と同様である。
【0146】
その後、動作S30において、管理者サーバ704は好適には、登録データを生成し、かつ当該生成された登録データを、ネットワーク706を介して、クライアント端末装置705に送信する。一例として、その登録データは、機器IDおよび配布IDで構成できる。これらのIDは好適には、その登録データの適切な解析処理により、後に特定される。クライアント端末装置は、その登録データを取得次第、好適には、ハードディスクドライブ、および/またはメモリーカード709などの第1の記録デバイス内にその登録データを保存する。
【0147】
図33に示すように、ここで、サーバ384等の管理者サーバ704は、データベース386等のデータベース707Aに接続できる。データベース707Aには、上述した登録処理の段階中に取得された、任意の機器IDおよび/または配布IDが含まれる。機器IDおよび配布IDは好適には、有用な履歴データおよびその解析結果が取得されるように、お互いに関連付けられて保存される。これにより、例えば、あるクライアント端末装置705が、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を、ある配布サーバ703から取得したことがその解析結果により判断できる。機器ID、配布ID、および/またはそれらを関連付けたものを、配布サーバ703から取得されたデータと併用すれば、配布サーバ703側の任意の義務処理(例えば、契約処理)が行われたことを証明できる。
【0148】
図34および図35は、それぞれ、コンピュータプログラムまたはパラメータ集合を登録し、かつエンドユーザに当該プログラムの実行、または処理の調整を可能にするために実行される、さらなる処理ステップの概念構成およびフローを示す図である。ユーザは好適には、ソース暗号化コンピュータプログラムを復号化するのに適切な復号鍵を取得したい旨の指示を、クライアント端末装置705に与える。ステップ21において、クライアント端末装置705は、ネットワーク706を介して配布サーバ703との通信リンクを確立する。その後、クライアント端末装置705は、(以前、管理者サーバ704から取得した)登録データを配布サーバ703に送信する(S22)。
【0149】
動作S23では、配布サーバ703は、ネットワーク706を介して、クライアント端末装置705から、例えば、機器ID(可能であれば、配布IDも)を含む登録データを取得する。この点について、配布サーバ703には好適にはネットワークインタフェースが含まれる。当該ネットワークインタフェースによりネットワーク706との通信を容易にすることで、当該ネットワーク706を介したクライアント端末装置705からの登録データの取得を実現できる。ステップ23では、管理者サーバ704もまた、クライアント端末装置705から取得した機器IDに対応する、ここでは仮想IDと呼ばれる他のIDを機器IDに割り当てる。ここで、仮想IDは、複数の予め存在するID群の中から選択されるものであってもよいし、機器ID、配布ID、および/またはある他の数値に基づく数値演算を通じて導出されるものであってもよいし、あるいは、任意の他の既知の、または後述の改良技術を用いることで生成されてもよい。
【0150】
配布サーバ703は顧客データベース707を対象に、クライアント端末装置705から取得した機器ID(すなわち、その第2記憶デバイス(ROM)内に保持される機器ID)と一致する既存の機器IDを検索する。図36に示すごとく、顧客データベース707には好適には、クライアント端末装置604のそれぞれに対応するそれぞれのIDである、それぞれの機器IDが保持される。複数の機器IDが、顧客されたデータベース707内にあらかじめ保持されており、その様子は図36の左側の列に示されている。こうした複数の機器IDのそれぞれは好適には、所与のクライアント端末装置705の一つ一つに対応するものであり、かつその機器IDは、それぞれのクライアント端末装置705に対し十分に一意である。管理者サーバ704にもまた、好適にはデータプロセッサが含まれる。当該データプロセッサにより、顧客データベース707を対象にした、ネットワーク605を介したクライアント端末装置604から取得される機器IDと一致する登録情報(例えば、機器ID)の検索を実現できる。この目的のために、任意の既知の、または後述の改良されたデータ処理用ハードウエアを用いることができる。
【0151】
図35に再度戻り、ステップ23において、仮想IDは、顧客データベース707内に保持される機器IDに関連付けられる。すなわち、仮想IDは、配布サーバ703宛てに機器IDを送信した特定のクライアント端末装置705に関連付けられる。当該関連付けは、保持された機器IDに対応させるような方法で、仮想IDを顧客データベース707内に記憶せしめることにより実現できる。
【0152】
上述したように、ネットワーク706を介する、クライアント端末装置705から配布サーバ703への登録データの送信動作には(図35のステップ22)、配布ID(またはメディアID)の送信動作が含まれてもよい。なお、配布IDとは、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合が取得された配布サーバ703に対応するものである。他に、登録データに含まれる配布IDもまた、機器IDに関連付けられて顧客データベース707内に保存されてもよい。
【0153】
図35に示すごとく、配布サーバ703は好適には、暗号化された復号鍵および暗号化された仮想IDを生成することが可能である。この復号鍵は、クライアント端末装置705上のソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を復号化するために用いられる。ここで、配布サーバ703は、(図27から図28までに示された)暗号化サーバ702により生成された、それぞれのソース暗号化コンピュータプログラムを復号化するために用いられる任意の数の復号鍵群にアクセスする。その復号鍵は、暗号化サーバ702および/または任意の他の適切なエンティティにより、配布サーバ703に提供される。さらに、その復号鍵は、ネットワーク706や他のネットワークを介して配布サーバ703に送信されてもよいし、あるいは、記録メディアにより人手で提供されてもよい。
【0154】
ステップ24において、配布サーバ703は好適には、クライアント端末装置705に関連付けられた仮想IDを用いて、その復号鍵を暗号化する。さらに、配布サーバ703は好適には、クライアント端末装置705の関連づけられた機器IDを用いて、仮想IDを暗号化する。なお、当該機器IDのそれぞれは、顧客データベース707から取得される。
【0155】
配布サーバ703が有するネットワークインタフェースによれば、ネットワーク706を介した、暗号化された復号鍵および暗号化された仮想IDのクライアント端末装置705への送信をさらに容易にできる(S25)。ステップ26において、クライアント端末装置705は好適には、ネットワーク706を介して、暗号化された復号鍵および暗号化された仮想IDを取得し、当該取得したそれらを、(ハードディスクドライブ708やメモリーカード709などの)第1の記録デバイス内に保存する。動作S27において、配布サーバ703は好適には、ある復号鍵がクライアント端末装置705に送信されたことを(履歴データとして)記録する。この情報は、後に、例えばネットワーク706を介して、管理者サーバ704に提供される。配布サーバ703は好適には、履歴データ内に含まれるデータにアクセスすることはできない。このデータを課金処理や義務処理のトラッキングなどのために用いることができる。
【0156】
暗号化された復号鍵は、権限が与えられたクライアント端末装置705、例えば、有効な機器IDを提供し、かつ復号鍵の暗号化のために用いられる仮想IDに関連付けられたその機器IDを登録したクライアント端末装置705のみに提供される。さらに、暗号化された復号鍵に関する任意の妨害、例えば、ネットワークでの著作権侵害行為や権限が与えられない複製等があったとしても、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を復号化するために必要な情報(すなわち、有効な復号鍵)が提供されることはない。実際には、そのような復号鍵は、十分に一意である仮想IDにより暗号化される。また、その暗号化された仮想IDは、登録処理が完了し、かつクライアント端末装置705に権限が与えられてはじめて、クライアント端末装置705宛てに提供される。仮想IDは、配布サーバ703からクライアント端末装置705に暗号化された状態で送信されるため(すなわち、クライアント端末装置705の機器IDを用いて暗号化されるため)、暗号化された仮想IDを権限なく取得しても、暗号化された復号鍵を復号化するための必要な情報が与えられることはない。
【0157】
ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合をクライアント端末装置705内にロードする/インストールするために実行される処理は、図19および図20を参照して上述した通りである。
【0158】
コンピュータプログラムがクライアント端末装置705により実行される処理、あるいは、パラメータ集合がクライアント端末装置705により用いられ、処理能力が制御される処理は、図21および図22を参照して上述した通りである。
【0159】
図10に戻り、処理調整部118の処理特性を変化させるために動作420で行われるある処理は非常に多岐にわたるため、あらゆる状況について隅々まで記述することはできない。従って、例示可能な例をいくつかここで述べる。なお、発明の精神および範囲から逸脱することなく、他のアプローチおよび技術を、その変形例を構成するために用いることは可能であると理解される。本発明のある態様に従えば、少なくとも一つのSPU208の処理特性を調整することで、一つ以上のSPU208がソフトウエアプログラムを好ましい形で実行できるようにする一方、他の一つ以上のSPU208の処理特性を調整しないことで、より優れた処理特性を利用して、他の処理タスクを実行できるようにする。一例として、特定のパラメータ、例えば、一つ以上のSPU208のクロック周波数を調整する一方、他の一つ以上のSPU208のクロック周波数については調整しない。
【0160】
この点について、図37を参照する。本図は、他のSPU208の一つ以上のクロック周波数を変化させることなく、いくつかの(例えば、いくつかのSPUの)クロック周波数を変化させることで処理能力を変化させるプロセッサ要素200Aのブロック図を示す。図37に示すごとく、SPU208A−Dのそれぞれには、例えば、既知であるフェーズロックドループ技術を用いたそれぞれのクロック回路が含まれる。特に、SPU208Aには、PLL1と称するフェーズロックドループ回路が含まれ、一方、SPU208B−Dのそれぞれには、PLL2,PLL3,PLL4と称するそれぞれのフェーズロックドループ回路が含まれる。フェーズロックドループ回路のそれぞれに設定できる周波数は、比較的に広範囲に及ぶため、十分に異なるクロック周波数で、当該周波数に対応したSPU208を動作させることができる。例えば、フェーズロックドループ回路に、約1MHzから4GHzまでのクロック周波数を設定できるのが好ましい。
【0161】
本実施の形態によれば、プロセッサ要素200Aには、ソフトウエア制御部、ハードウエア制御部、またはその組み合わせで構成されたシステム制御部280が含まれる。いずれの態様の場合でも、システム制御部280は好適には、所望のクロック周波数を表すパラメータを、例えば、変換テーブル550から取得し、当該取得されたパラメータを、SPU208Aに対応する一つ以上のフェーズロックドループ回路への命令信号に変換できる。システム制御部280は、あるSPU208により認識される信号を出力し、当該信号により、当該SPUに対応したフェーズロックドループ回路の周波数が変更され、一方、他の一つ以上のSPU208のフェーズロックドループ回路の周波数については変更されないのが好ましい。ここで、これを機能的に実現するためには、SPU208のそれぞれは、当該SPU208のそれぞれのクロックメッシュ、例えば、H木(H−tree)分配ネットワーク等の、それぞれ自身が有するクロック周波数の分配ネットワークを必要とする。さらに、PU204には、システム制御部280から出力される制御信号に応じて変更可能な、(PLL6と称する)フェーズロックドループ回路が含まれる。バス212にもまた、システム制御部280から出力される制御信号に応じて変更可能な、当該バスに関連する(PLL5と称する)フェーズロックドループ回路を含む。システム制御部280からの制御信号は上述の変換テーブル550内のパラメータにより左右され、当該制御信号に応じて、プロセッサ要素200Aの任意のあるいはすべてのフェーズロックドループ回路を操作できる点において有意義である。
【0162】
図37に示される機能と実質的に同一である機能を達成する構成を図38に示す。本実施の形態において、プロセッサ要素200Bには、SPU群208、PU204およびバス212を通じて共通である、CLK1、CLK2、CLK3、・・・CLKNなどの複数のクロック回路284が含まれる。クロック回路284のそれぞれの出力は、例えば、SPU208、PU204およびバス212のそれぞれに入力され、これらの構成要素のそれぞれには、それぞれのマルチプレクサ286またはそれと同様に機能する他の回路が含まれる。そのマルチプレクサ286は、クロック回路284から出力される、場合によっては異なるクロック信号をそれぞれ取得し、かつ制御レジスタ282から出力される制御信号に応じて一つのクロック信号を出力できる。制御レジスタは、変換テーブル550のパラメータからその内容を直接取得してもよいし、あるいは当該パラメータの値が操作された結果としてのその内容を取得してもよい。また、本構成において、SPU群208、PU204およびバス212は、それぞれ、別々のクロックメッシュを要求することで、他の一つ以上の構成要素を通じてではなく、一つの構成要素内において、異なるクロック周波数を実現できる。
【0163】
図39に示すごとく、それぞれのクロック回路284は、一つのフェーズロックドループ回路と様々なマスク信号とを用いて実現される。例えば、当該マスク信号としてMASK1信号を用いれば、1/3の周波数のクロック信号を生成でき、MASK2信号を用いれば、1/2の周波数のクロック信号を生成できる。本実施の形態によれば、それぞれのMASK信号は、制御回路(図示せず)により生成される。レジスタ282およびマルチプレクサ286を組み合わせて用いることで、一定のマスク集合により生成されるそれぞれのクロック信号を取得でき、当該クロック信号の一つは、制御レジスタ282に従って選択される。
【0164】
上述したように、プロセッサ要素200(図2)のバス212の使用率は、本発明に従って操作される処理調整部118の処理能力に関するいくつかの実施例に共通するものである。この点について、図40を参照すると、本図は、プロセッサ要素200Cが、特にPU204について、どのようにバスの利用率の調整を可能にするかを示すブロック図である。実際的な問題として、プロセッサ要素200Cが効果的な処理を実現するためには、PU204およびSPU208A−Dによるバス212への時折のアクセスを必要とする。バス212へのアクセスが向上され、または妨げられた場合、プロセッサ要素200Cの処理能力は、それに応じて増減される。本実施の形態によれば、システム制御部280は、リミッタ回路288を用いることで、PU204によるバス212へのアクセスを制限し、または増加させることができる。より詳細には、システム制御部280をリミッタ回路288と組み合わせることで、PU204がバス212へのアクセスを可能にする、プロセッササイクルの特定の周期および/またはプロセッササイクルの割合を調整できる。例えば、PUがバス212に、限られたプロセッササイクル数を超えてアクセスすることを可能にするスケジュール280Aがシステム制御部280により確立される。従って、PU204は、システム制御部280およびリミッタ回路288を別にすれば、許可される回数よりも少ない回数または多い回数分、バス212にアクセスすることができる。これにより、PU204と共有のDRAM214との間の処理速度を上下させることができ、さらに、PU204と一つ以上のSPU208との間で実行される処理を向上させ、または低下させることができる。バス212へのアクセスに関する制限は、例えば、PU204によるバス212の30%の使用率などの比率や他のある比率で特徴付けられる。
【0165】
ここで、リミッタ回路288も、PU204について上述した方法と実質的に同様の方法で、一つ以上のSPU208によるバス212へのアクセスを向上させ、または当該アクセスを制限するために用いられる。これにより、プロセッサ要素200Cの処理能力の調整に関する自由度をさらに高めることができる。
【0166】
上述するごとく、処理調整部118の命令待ち時間および命令スループットのうちの一つ、またはその両方の変化は、処理調整部118の処理能力を左右する。この点について、図41および図42は、処理調整部118による命令待ち時間および/または命令スループットの操作方法を示す。具体的には、遅延時間やノーオペレーションなどを、命令パイプラインの一つ以上のフェーズ間に挿入したり、当該フェーズ間から除外したりする。例えば、命令パイプラインには、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンスおよびライトバックシーケンスが含まれる。図41に示すごとく、命令実行シーケンスとライトバックシーケンスとの間において、それらの間に、ノーオペレーション、バブル(パイプラインバブル)、遅延時間などを挿入または削除することで、タイミングの調整を実現できる。図42に示すごとく、タイミングの調整は、ライトバックシーケンスが終了した後に挿入され、または削除される。これにより、命令待ち時間に影響を与えることができる。本実施の形態に従って、一つ以上のSPU群208またはPU204は、これらの技術を用いて、プロセッサ要素200の処理能力を調整する。
【0167】
さらに、処理調整部118の処理能力を、メモリ待ち時間および/またはメモリスループットの操作を通じて調整することができる。より具体的には、ローカルメモリに対応するSPU208、または共有DRAM214に対応するSPU208のメモリ待ち時間および/またはメモリスループットを調整することで、プロセッサ要素200の所望の処理能力を実現できる。同様に、共有DRAM214に対応するPU204のメモリ待ち時間および/またはメモリスループットを調整してもよい。メモリ待ち時間および/またはメモリスループットの調整について、詳細には、図15および図16を参照して上述した方法と実質的に同様の方法で実現される。なお、メモリアクセスにおける基本的なシーケンスには、アドレスの取得シーケンス、アドレスのデコードシーケンス、特定のアドレスに一致するメモリからのデータの取得シーケンス(または、データの書き込みシーケンス)が含まれる。
【0168】
図43を参照すると、本図は、レンタルプログラムコンテンツの配布者による、ソフトウエアプログラムなどのプログラムコンテンツのセキュアな配布の一例を示す処理フロー図である。そのような配布形態については、上述した米国出願番号No10/316309およびNo10/316675に記載されている。
【0169】
レンタルプログラムコンテンツの配布者は、管理者サーバ601,704、第3者サーバ602,701、配布サーバ703、またはいくつか他のサーバ(図示せず)で構成されてもよい。ユーザがプログラムコンテンツのレンタルを所望する場合、ユーザは最初にレンタルシステムのメンバーになることを要求される。この点について、ステップ70において、ユーザは、例えば、クライアント端末装置604,705のある仕組みの起動を通じて、システムに入会したい旨を示す。一例として、クライアント端末装置604,705は同一の装置であってもよいし、別々の装置であってもよく、当該装置上でユーザによりレンタルプログラムが実行される。さらに、クライアント端末装置604,705には、入会処理を容易にする適切なコンピュータプログラムが含まれ、かつ実行される。
【0170】
ステップ72において、クライアント端末装置604,705は好適には、ネットワーク605,706を介して、管理者サーバ601,704との通信リンクを確立する。ステップ74において、ユーザがレンタルシステムの入会希望を行ったクライアント端末装置604,705により、リクエストが送信される。ユーザが一つのクライアント端末装置のみを用いてコンテンツをレンタルし、かつ実行する場合、クライアント端末装置604,705は、ネットワーク605,706を介して、機器IDを管理者サーバ601,704宛てに送信する。一方、ユーザが他の装置を通じてプログラムコンテンツをレンタルする場合、クライアント端末装置604,705は、ユーザに対し固有である他のID情報を送信する。応答として、管理者サーバ601,704は、電子会員証を生成する。なお、当該会員証は、ユーザが同一のクライアント端末装置を用いてプログラムコンテンツをレンタルし、かつ実行する場合のみにおいて、クライアント端末装置604,705に対し十分に一意である。管理者サーバ601,704もまた、クライアント端末装置604,705の機器IDまたはユーザ情報を、例えば、上述のデータベース関連技術を用いて、電子会員証に関連づける。ステップ60において、管理者サーバ601,704は、ネットワーク605,706を介して、クライアント端末装置604,705に電子会員証を送信する。以下に示すごとく、電子会員証は、レンタル処理の際に用いられる。
【0171】
ユーザがレンタルシステムの会員になれば、ユーザは、アプリケーションプログラムおよびシステムプログラムなどのプログラムコンテンツのレンタルを許可される。好適には、プログラムコンテンツは、ビデオゲームコンピュータプログラムである。図44によれば、クライアント端末装置604,705上で動作するコンピュータソフトウエアは、コンピュータプログラムをレンタルしたい旨のユーザからの指示受付を可能にするのが好ましい。ここで、ユーザがプログラムコンテンツのレンタルを所望するクライアント端末装置は、会員登録に用いられた装置と同一のものであってもよいし、別の装置であってもよいし、そのどちらでもなくてもよい。一例として、ユーザは、ゲームコンソール用のソフトウエアプログラムをレンタルしてもよいが、他の装置から、例えば、自身が有する携帯電話、PDA、あるいは他のデバイスから、会員証明書や他のデータを送信することでユーザ認証を開始してもよい。会員証明書または他のデータは、人手でデータを入力することで、磁気カードやスマートカードを機械に通すことで、あるいはデバイス内にすでに保存されたデータを読み取ることのいずれかで、装置内に入力される。
【0172】
この点に関して、ユーザからの指示に応答して(S82)、クライアント端末装置604,705は、ユーザによるレンタル要求が送信された配布者との通信リンクを確立する(S84)。ステップ86において、配布者は、好適には、例えば、電子会員証を解析することで、および/または、その装置がユーザが入会した際に用いられた装置と同一である場合には、クライアント端末装置604,705の機器IDを解析することで、クライアント端末装置604,705を認証する。これは、クライアント端末装置604,705が、配布者に機器IDおよび/または電子会員証を要求し、正当であると示されたこれらの情報を有するデータベースに当該配布者がアクセスすることで実現される。
【0173】
ユーザに権限が与えられたとき、配布者は好適には、ネットワーク605,706を介して、クライアント端末装置604,705に、レンタルに利用可能なタイトルのリストやメニューを提供する(S88)。クライアント端末装置604,705上で実行されるコンピュータソフトウエアによれば、タイトルのリストやメニューのユーザへの表示を容易にでき、ユーザがタイトルを選択したり、レンタルした時間を特定したりできる(S90)。ユーザにより選択されたものおよび特定のレンタル時間は、好適には、ネットワーク605,706を介して配布者に送信される。
【0174】
ステップ92では、配布者は好適には、その特定された時間に対するコンピュータプログラムのレンタル費用分の支払い要求をユーザに対し行う。これは、クライアント端末装置604,705や他のデバイスのいずれかを用いて、例えば、クレジットカードナンバーや普通預金口座番号を送信する方法、あるいは請求書による方法などの、任意の既知の技術を用いることにより実現される。送金が行われると、配布者は、指定のタイトルおよびレンタル時間に対して送金がなされたことを示す電子支払いチケットを生成する(S94)。ステップ96において、配布者は好適には、クライアント端末装置604,705に、あるいは、ネットワーク605,706上の他のデバイスにその電子支払いチケットを送信する。
【0175】
電子支払いチケットは、配布者に提供される送金額と引き換えに、あるレベルのレンタルする権利をユーザ(あるいは、電子支払いチケットを取得するときのクライアント端末装置604,705)に提供するのが好ましい。例えば、そのレンタルする権利は、特定された、コンピュータプログラムのタイトル、レンタル時間や送金額に対して制限される。さらに、電子支払いチケットには、コンピュータプログラムを復号化できる復号鍵などの付加的な情報が含まれる。電子支払いチケットは必ずしも復号鍵を含む必要はなく、この例に示す方法によってのみ、含むものである。電子支払いチケットには、暗号化された状態の、例えば、機器IDや電子会員証の一部である他の情報(例えば、仮想IDのようなもの)を用いて暗号化された、復号鍵が含まれる。いすれの場合でも、処理のこの時点においては、ユーザはあるレベルのレンタルする権利を取得する一方、コンピュータプログラムまたは暗号化された状態のコンピュータプログラムについては未取得である。
【0176】
処理のこの段階においては、クライアント端末装置604,705や他のデバイスは、あるタイトルの所定の時間に対する支払いが完了したことを示す電子支払いチケットを有し、さらにユーザの電子会員証をも保持してもよい。図45によれば、クライアント端末装置604,705や他のデバイスは、ネットワーク605,706を介して、管理者サーバ601,704との通信リンクを確立することが好ましい(S98)。ステップ100において、管理者サーバ601,704は、機器IDおよび/または電子会員証により、クライアント端末装置604,705や他のデバイスを認証する。ここで、顧客データベース606,707などの適切なデータベースにアクセスすることで認証が実現される。ステップ102において、クライアント端末装置604,705や他のデバイスは、電子支払いチケットをネットワーク605,706を介して、管理者サーバ601,704に送信する。管理者サーバ601,704は、応答として、電子レンタルチケットを生成し(S104)、ネットワーク605,706を介して、クライアント端末装置604,705や他のデバイスに当該電子レンタルチケットを送信する(S106)。
【0177】
電子レンタルチケットは、電子支払いチケットにより与えられるレンタルする権利と同一のレベルの、または当該レベルを超えたレベルのレンタルする権利をユーザ(あるいは、クライアント端末装置604,705)に提供する。例えば、その電子レンタルチケットにより、コンピュータプログラムのタイトル、レンタル時間や送金額を特定できてもよいし、当該チケットは、(復号鍵が電子支払いチケット内に含まれないと想定すれば、)暗号化されたコンピュータプログラムを復号化できる復号鍵などの付加的な情報をも含んでもよい。電子レンタルチケットは必ずしも復号鍵を含む必要はなく、この例に示す方法によってのみ、含むものである。電子レンタルチケットには、暗号化された状態の、例えば、機器IDや電子会員証の一部である他の情報(例えば、仮想IDのようなもの)を用いて暗号化された、復号鍵が含まれる。いすれの場合でも、処理のこの時点においては、ユーザはあるレベルのレンタルする権利を取得する一方、コンピュータプログラムまたは暗号化された状態のコンピュータプログラムについては未取得である。
【0178】
図46によれば、クライアント端末装置604,705は、ネットワーク605,706を介して、配布者との通信リンクを確立することが好ましい(S108)。配布者は、応答として、上述の機器IDおよび/または電子会員証を解析する方法で、クライアント端末装置604,705を認証する(S110)。次に、クライアント端末装置604,705または他のデバイスは、例えば、ネットワーク605,706を介して、電子レンタルチケット(または、少なくとも一部分)を配布者に送信するのが好ましい(S112)。クライアント端末装置604,705や他のデバイスが、前のすべての必要なステップを完了したため、そのクライアント端末装置がレンタルされたコンピュータプログラムの暗号化されたバージョンを取得する権限を有することを配布者に提示するのが好ましい(S114)。処理のこの時点においては、クライアント端末装置604,705や他のデバイスは、機器ID、電子支払いチケット、電子レンタルチケット、暗号化された復号鍵、および暗号化されたコンピュータプログラムを有するのが好ましい。
【0179】
ユーザは、そのコンピュータプログラムを読み出し、インストールし、実行してもよいし、さらに、上述した実施の形態について上述した処理を用いて、クライアント端末装置の処理能力を調整してもよい。その結果、このレンタルシステムによれば、ネットワーク605,706を介して、どのクライアント端末装置604,705を用いても、ユーザにレンタルプログラムコンテンツを安全に配布できる。
【0180】
本発明もまた、ユーザが、任意の特定のデバイスには依存せずに実行可能な、特定のソフトウエアプログラム、または特定のバージョンのプログラムを実行する権利を購入することを対象にしたアプリケーションに適している。一例として、ユーザは、自身が所有するコンソール、他人が所有するコンソール、あるいは、そのようなコンソールを多く有する公共のゲームセンターに配置されたコンソール等の、任意のコンソール上で、ゲームプログラムや他のソフトウエアプログラムを実行する権利を購入できる。
【0181】
ユーザもまた、ディスクや他の記録媒体等の携帯可能なソフトウエア媒体に保存された、ゲームプログラムや他のソフトウエアプログラムのあるバージョンの複製物を有し、当該記録媒体から、自身のコンソール、他人のコンソール、またはゲームセンターのコンソール上にそのプログラムを複製してもよい。他に、ユーザは、あるバージョンのゲームプログラムや他のソフトウエアプログラムを実行する権利を有するだけでよい。いずれの場合でも、ユーザもまた、ユーザIDや電子証(仮想IDや仮想IDのようなもの)などの他の認証情報を有する。
【0182】
そのようなユーザが、自身のコンソール、他人のコンソール、またはゲームセンターのコンソール等のデバイス上で、ゲームプログラムや他のソフトウエアプログラムの実行を所望し、かつプログラムの複製物がすでにコンソール内に保存されている場合、コンソール上でプログラムを実行するために、および/または、コンソール上でのプログラムの適切な実行を可能にする、必要不可欠なソフトウエアおよび/またはデータモジュールを取得することを可能にするために、ユーザの認証情報が要求される。他として、ゲームプログラムや他のソフトウエアプログラムがユーザ自身のコンソール、他人のコンソール、またはゲームセンターのコンソール内に保存されていない場合、ユーザが購入した権利に関わるバージョンのプログラムをそのコンソールがダウンロードすることを可能にするために、および/または、その後、そのコンソールにとって適切なバージョンのソフトウエアを取得るために必要とされるソフトウエアおよび/またはデータモジュールを得るために、ユーザの認証情報が要求される。
【0183】
ユーザ認証は、図43ー図46を参照して上述した方法で実行される。すなわち、ユーザの携帯電話、PDAや他のデバイスなどの他の装置から認証情報を送信することで実行される。また、人手でデータを入力することで、磁気カードやスマートカードを機械に通すことで、あるいは、コンソールが自身のコンソールであれば、当該自身のコンソール内にすでに記録されたデータを読み取ることのいずれかで、そのコンソール内に入力された、会員証または他のデータを送信することで実行される。
【0184】
図11および図27を参照して上述したように、ユーザの認証情報は、一つ以上の管理者サーバ601,704、第3者サーバ602,701、配布サーバ703、またはいくつか他のサーバ(図示せず)に送信される。さらに、ユーザが所有する権利に関わるゲームプログラムや他のソフトウエアプログラム、および、当該ゲームプログラムや他のソフトウエアプログラムのコンソール上での適切な動作に必要なソフトウエアおよび/またはデータモジュールは、図5から図36までを参照した上述の方法で、一つ以上のサーバによりダウンロードされる。
【0185】
このように、ゲームプログラムや他のソフトウエアプログラムを実行する権利を有するユーザは、自身のコンソール、他人のコンソール、または、公共(ゲームセンター)のコンソールなどの任意のデバイス上で、そのコンソールにとって最も相応のバージョンのソフトウエアを用いて、プログラムを実行できる。
【0186】
以上、本発明を実施形態を参照して説明したが、これらの実施形態は本発明の原理および適用法を例示するにすぎない。従って、これら例示としての実施形態には多数の変形が可能であり、前掲の特許請求の範囲で規定される本発明の精神および範囲から逸脱することなく他の構成を考案することができる。
【図面の簡単な説明】
【0187】
【図1】ソフトウエアプログラムおよび当該プログラムが動作する処理システムの設計面の進化を、実施の形態に係る処理調整部あるいは複数の処理調整部を含めた形でグラフィカルに示す図である。
【図2A】実施の形態に係るプロセッサ要素(PE)の構成の一例を示す図である。
【図2B】実施の形態に係るPEのマルチプロセッシングシステムの構成の一例を示す図である。
【図3】実施の形態に係るサブ処理ユニット(SPU)の一例を示す図である。
【図4】実施の形態の1つ以上の態様に係るマルチプロセッサシステムの実装に適した他の構成を示す図である。
【図5】実施の形態の1つ以上の態様に係る処理能力を変化させるために、少なくとも部分的に処理システムにより実行される処理ステップを示すフロー図である。
【図6】実施の形態の1つ以上の態様に係るコンピュータネットワークの全体構成を示す図である。
【図7】図5の処理に関連するさらなる処理プロセスを示す図である。
【図8】実施の形態の1つ以上の態様に係るプロセッサ要素により使用される変換テーブルを示す図である。
【図9】実施の形態の1つ以上の態様に係る、ネットワーク通信および処理能力の変化を可能にする処理システムを示す図である。
【図10】図7の処理に関連するさらなる処理プロセスを示すフロー図である。
【図11】1以上のユーザに対し、ソフトウエアプログラムやパラメータ集合を配布するシステムの構成を示す図である。
【図12】図11のシステムの一部により実行されるある処理プロセスの概念構成およびフローを示す図である。
【図13】図11のシステムのある要素により実行されるさらなるステップの概念構成およびフローを示す図である。
【図14】図13で示されるものが実行されるある処理ステップを示すフロー図である。
【図15】例えば、図11の管理者サーバなどにより実行されるある処理ステップを示すフロー図である。
【図16】あるデータベースコンテンツの構成を示す図である。
【図17】図11のシステムの一部により実行されるある処理ステップの概念構成およびフローを示す図である。
【図18】図17に従って実行されるさらなる処理ステップを示すフロー図である。
【図19】例えば、図11のクライアント端末装置により実行される一つ以上のさらなる処理ステップを表す概念構成およびフローを示す図である。
【図20】図19に従って実行されるさらなる処理ステップを示すフロー図である。
【図21】さらなる処理ステップの概念構成およびフローを示す図である。
【図22】図21の処理ステップに関してさらなる詳細を示すフロー図である。
【図23】実行される他の処理ステップの概念構成およびフローを示す図である。
【図24】図23の処理ステップに関してさらなる詳細を示すフロー図である。
【図25】図23の他の概念に従うさらなる処理ステップの概念構成およびフローを示す図である。
【図26】図25の処理ステップに関してさらなる詳細を示すフロー図である。
【図27】1以上のユーザに対してソフトウエアプログラムまたはパラメータ集合を配布するさらなるシステムの構成を示す図である。
【図28】図27のシステムの一部により実行されるある処理ステップの概念構成およびフローを示す図である。
【図29】図27のシステムの一部により実行される、さらなるある処理ステップの概念構成およびフローを示す図である。
【図30】図29に示されるものが実行されるある処理ステップを示すフロー図である。
【図31】例えば、図27の管理者サーバおよびクライアント端末により実行されるある処理ステップの概念構成およびフローを示す図である。
【図32】図31の装置により実行されるさらなる処理ステップを示すフロー図である。
【図33】あるデータベースコンテンツの構成を示す図である。
【図34】図27のシステムの一部により実行されるある処理ステップの概念構成およびフローを示す図である。
【図35】図34の装置により実行されるさらなる処理ステップを示すフロー図である。
【図36】あるデータベースコンテンツの構成を示す図である。
【図37】実施の形態の1つ以上の態様に係る処理能力を変化させるために、あるクロック周波数の変換を可能にするプロセッサ要素システムの構成を示す図である。
【図38】実施の形態の1つ以上の態様に係る処理能力を変化させるために、あるクロック周波数の変換を可能にする他のプロセッサ要素システムの構成を示す図である。
【図39】図12のあるクロック回路要素の他の構成を示す図である。
【図40】実施の形態の1つ以上の態様に係る、他の態様の処理能力の変化を可能にするさらなる他の処理システムを示す図である。
【図41】実施の形態の1つ以上の態様に係る、命令待ち時間および/またはスループットの調整可能な特性を示すフロー図である。
【図42】実施の形態の1つ以上の態様に係る、命令待ち時間および/またはスループットの調整可能な特性を示す他のフロー図である。
【図43】レンタルプログラムコンテンツの配布者が、安全にプログラムコンテンツを配布するための処理の一例のステップを示すフロー図である。
【図44】図43の処理のさらなるステップを示すフロー図である。
【図45】図44の処理のさらなるステップを示すフロー図である。
【図46】図45の処理のさらなるステップを示すフロー図である。
【符号の説明】
【0188】
104,110,116 ソフトウエアプログラム、 124,706 インターネット、 204 メイン処理ユニット、 208 サブ処理ユニット、 212 バス、 302 プロセッサ、 550 変換テーブル、 601 管理者サーバ、 605,706 ネットワーク、 610,710 システム。
【技術分野】
【0001】
本発明は、ソフトウエアプログラムがプロセッサ上で実行されるときに得られる結果を向上させるために、プロセッサの処理能力を調整する方法および装置に関する。
【背景技術】
【0002】
家庭用および業務用のソフトウエアプログラムの設計に関するマーケティング・販売は、経済における発展分野および成長分野としての地位をいつも確保している。実際には、ソフトウエア開発者は、一見したところ飽くことがないと見える消費者の欲求を満たそうと、最新かつ向上したソフトウエアアプリケーションをしきりに模索している。ビデオゲーム、映画アニメーション、および特殊効果などのコンピュータグラフィックソフトウエアの分野ほどこのことが顕著である分野は他にはない。
【0003】
より複雑で高性能なソフトウエアプログラムの進歩はこれまで、当該ソフトウエアプログラムが実行されるハードウエアの処理能力の進歩とともにあった。実際には、加算と減算のみが可能な4ビットプロセッサである、最初のマイクロプロセッサであるインテル社の4004が1971年に発売されて以来、マイクロプロセッサの処理能力において驚くべき進歩がなされてきた。インテル社は1979年に8080マイクロプロセッサを発売し、当該プロセッサは、IBM社のパーソナルコンピュータ内に組み込まれた。インテル社の8080マイクロプロセッサは、約29000個のトランジスタを5MHzのクロック速度で用いており、1秒間に33万回の命令(MIPS)を実行できた。1982年から1989年まで、インテル社は80286、80386、80486のマイクロプロセッサを発売した。インテル社の80486のマイクロプロセッサは、120万個のトランジスタを25MHzのクロック速度で使用しており、20MIPSを実現できた。1993年から2000年まで、インテル社はPentium(登録商標)シリーズのマイクロプロセッサを発売した。Pentium4のマイクロプロセッサは、4200万個のトランジスタを1.5GHzのクロック速度で使用し、約17000MIPSを実現できた。これらのデータによれば、ソフトウエアプログラムを実行するハードウエアのスピードおよびパワーは絶えず増加している(インテル社のPentium4は8088マイクロプロセッサよりも約5000倍速く動作する)。この説明についてつけ加えると、より最新でより強力なマイクロプロセッサが現在でも開発され、約4GHzのクロック周波数でより高度なMIPSレベルを実現している。
【0004】
リアルタイムマルチメディアアプリケーションの重要性は、より一層高まってきている。こうしたアプリケーションは、1秒間に数千メガビットといった極めて高速の処理速度を必要とする。高速処理は単独の処理装置でも可能だが、一般にはマルチプロセッサ構成の処理速度には追いつかない。実際、マルチプロセッサシステムでは、複数のプロセッサが並列に(または少なくとも協調して)動作して、所望の処理結果を達成できる。
【0005】
マルチ処理技術を用いることのできるコンピュータおよびコンピューティングデバイスの種類は多岐にわたる。こうしたコンピューティングデバイスには、パーソナルコンピュータ(PC)およびサーバ以外に、携帯電話、モバイルコンピュータ、個人情報端末(PDA)、セットトップボックス、ディジタルTV、およびその他多数の装置が含まれる。
【発明の開示】
【発明が解決しようとする課題】
【0006】
図1は、ソフトウエアプログラムおよび当該プログラムを実行するために用いられるハードウエアの対応する進化を示す。時代のある時点におけるハードウエアシステム102は、他のハードウエアシステム、例えば、ハードウエアシステム106やハードウエアシステム112ほど強力ではない。これらのハードウエアシステムでさえも、ハードウエアシステム118ほど強力ではない。また、ソフトウエアプログラム104(光学ディスク上に記録されているものとして示されている)は、当時存在するハードウエアシステム102上で実行されるよう設計された。例えば、ソフトウエアプログラム104は、例えば、インテル社の80286マイクロプロセッサにより与えられた処理特性を有する処理ユニット上で実行されることを理解しつつ、記述されてきた。ソフトウエアプログラム104以後に設計され仕入れられたソフトウエアプログラム110は、例えば、インテル社の80486マイクロプロセッサにより与えられた処理特性を有する処理ユニット上で実行されるよう設計されてきた。他の例として、ソフトウエアプログラム110は、1994年に発売された出願人自身のプレイステーション(登録商標)のゲームコンソールの処理特性を有する処理ユニット上で実行されるよう設計され開発されてきた。さらに、ソフトウエアプログラム116は、インテル社のPentium3のマイクロプロセッサにより与えられた処理特性を有する処理ユニット上で実行されるよう設計され開発されてきた。他の例として、ソフトウエアプログラム116は、とりわけビデオゲームソフトウエアプログラムを実行するよう設計された出願人自身のプレイステーション 2のコンソール上で実行されるよう設計され開発されてきた。
【0007】
世間一般の通念では、ある処理特性を備える特定の処理ユニット上で実行されるために開発された任意のソフトウエアプログラムは、より上位の処理特性を備える他の処理ユニット上でも実行できるであろうことになっている。これは、多くの状況下では正しいものであるが、必ずしもそうでない場合がある。特に、ユーザがディスプレイ上でマルチメディアを体験できるようにソフトウエアプログラムが設計される場合がそうであり、例えば、ビデオゲームソフトウエアプログラムの場合が挙げられる。実際には、適度に高性能な処理ユニットのために設計されたソフトウエアプログラムを、十分に高度な処理能力を有する処理ユニット上で実行することは、結果として、動画における動オブジェクトが過度に高速になり、動画における音声要素と映像要素間の同期化の失敗に至る。一般的に、このような問題は、(並行処理を行うユニットである)プログラムスレッド間の相互依存性が保障されていない場合に顕著になる。
【0008】
そのために特別に設計されたソフトウエアプログラム、およびさほど高性能でない処理ユニット上で実行されるよう設計されたソフトウエアプログラムの実行を可能にするあるユニット内に、特別な設計が施されなければ、ソフトウエアプログラムに関する充実したサポートを受けるために、ユーザは二つの別々の処理ユニットを維持しなければならない。このことの例外として、出願人自身のプレイステーションのコンソールと出願人自身のプレイステーション 2のコンソールが挙げられる。出願人自身のプレイステーション 2のコンソールは、複数のマイクロプロセッサを用いて、プレイステーションのコンソールのために特別に記述されたソフトウエアプログラム、およびプレイステーション 2のコンソールのために特別に記述されたソフトウエアプログラムに対処できる。より詳細には、出願人自身のプレイステーション 2のコンソールは、プレイステーションのコンソール内に検出されたマイクロプロセッサと協働して、プレイステーション用のビデオゲームソフトウエアプログラムを実行する。プレイステーション 2のコンソール内の他のマイクロプロセッサは、プレイステーション 2のコンソールのために特別に設計されたビデオゲームソフトウエアプログラムを実行するために用いられる。
【0009】
異なる処理能力を有する複数のマイクロプロセッサを備えた将来の処理ユニットを設計するにあたって、ソフトウエアプログラムに関する充実したサポートに関するいくつかの問題に取り組む一方、よりよい解決策、好適には、より多目的に使えて効果的でコスト効率のよい解決策を得るのが望ましい。
【課題を解決するための手段】
【0010】
本発明の1以上の態様によれば、ソフトウエアプログラムの実行を可能にする方法は、ソフトウエアプログラムのバージョンを示す識別情報を取得するステップと、ソフトウエアプログラムを実行する少なくとも一つのプロセッサの処理能力が、ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定するステップと、前記決定が肯定的であるとき、前記少なくとも一つのプロセッサの処理能力を調整するステップと、を含む。
【0011】
前記識別情報は、光学ディスク媒体、磁気媒体および電子媒体等の記録媒体内に保存されてもよい。他に、前記ソフトウエアプログラムは前記識別情報を含み、当該識別情報は当該ソフトウエアプログラムから取得されてもよい。
【0012】
前記処理能力を調整するために、例えば、前記少なくとも一つの処理ユニットのクロック周波数を変化させてもよい。他には、処理ユニットのメモリマップ、処理ユニットのデータバスのバス利用率、処理ユニットのデータバスのバンド幅、処理ユニットのキャッシュサイズ、処理ユニットのキャッシュ構造、処理ユニットの命令待ち時間、処理ユニットの命令スループット、処理ユニットのメモリ待ち時間、処理ユニットのメモリスループットを変化させてもよい。
【0013】
当該方法は、複数のソフトウエアプログラムのそれぞれに対応する識別情報に、前記少なくとも一つのプロセッサの処理能力に施される調整を示す一つ以上のパラメータを関連付けるテーブルにアクセスするステップと、与えられた前記識別情報に関連付けられたパラメータを用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、をさらに含んでもよい。
【0014】
前記テーブルは、前記少なくとも一つのプロセッサとともににローカルに保存されてもよいし、リモートに配置された管理者エンティティ(entity)内に保存されてもよいし、および/または、当該リモートに配置された管理者エンティティによりアクセスされる別の場所に保存されてもよい。前記テーブルが、リモートに保存された場合、当該方法は、さらに、通信チャンネルを用いて、前記少なくとも一つのプロセッサと前記管理者エンティティとの間にリンクを確立するステップと、前記通信チャンネルを介して、前記少なくとも一つのプロセッサから前記管理者エンティティに前記識別情報を送信するステップと、をさらに含んでもよい。前記管理者エンティティは、前記テーブルにアクセスし、前記少なくとも一つのプロセッサの処理能力に施される調整を示す前記関連付けられた一つ以上のパラメータを取得してもよい。その後、当該方法は、前記通信チャンネルを介して、前記管理者エンティティから前記少なくとも一つのプロセッサのパラメータを取得するステップと、ある識別情報に関連付けられたパラメータを用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、をさらに含んでもよい。
【0015】
前記テーブルは、複数のソフトウエアプログラムのそれぞれに対応する識別情報に、複数の異なるプロセッサの処理能力に施される調整を示す複数のパラメータ集合をそれぞれさらに関連付けてもよい。この点に関連して、当該方法は、前記少なくとも一つのプロセッサの処理能力に関する処理識別子を取得するステップと、前記識別情報および前記識別子を用いて、前記テーブルにアクセスし、前記少なくとも一つのプロセッサの処理能力を調整する一つのパラメータ集合を取得するステップと、前記一つのパラメータ集合を用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、をさらに含んでもよい。
【0016】
前記テーブルが管理者エンティティ内にリモートに保存される場合、当該方法は、通信チャンネルを用いて、前記少なくとも一つのプロセッサおよび前記管理者エンティティ間にリンクを確立するステップと、前記通信チャンネルを介して、前記少なくとも一つのプロセッサから前記管理者エンティティに前記識別情報を送信するステップと、を含んでもよい。この場合、前記管理者エンティティは、前記識別情報および前記処理識別子を用いて、前記テーブルにアクセスし、前記少なくとも一つのプロセッサの処理能力を調整する前記関連付けられたパラメータ集合を取得してもよい。
【0017】
前記少なくとも一つのプロセッサは、好適には、(i)処理タスクを実行できる複数のサブ処理ユニットと、(ii)少なくともいくつかの管理処理タスクを前記サブ処理ユニットに対して実行できるメイン処理ユニットと、(iii)メイン処理ユニットおよびサブ処理ユニットによりアクセス可能なメインメモリと、(iv)前記サブ処理ユニット、前記メイン処理ユニット、および前記メインメモリを動作可能に接続するデータバスと、を含む。
【0018】
当該方法は、前記少なくとも一つのサブ処理ユニットの処理特性を調整し、当該処理特性を用いて前記ソフトウエアプログラムを実行するステップと、より高いまたはより低い処理特性を有し他の処理タスクを実行できる、少なくとも一つの他のサブ処理ユニットについては、処理特性の調整をスキップするステップと、をさらに含んでもよい。
【0019】
当該調整するステップは、前記少なくとも一つのプロセッサの周波数を少なくとも一つ変化させてもよい。さらに、具体的には、前記調整するステップは、前記メイン処理ユニット、サブ処理ユニット、およびデータバスの少なくとも一つのクロック周波数を他のユニットとは異なる周波数に調整してもよい。
【0020】
さらに、前記調整するステップは、前記少なくとも一つのプロセッサのデータバスのバスの利用率を少なくとも変化させるものであり、当該データバスのバスの利用率は、前記処理能力を調整するために、(例えば、メイン処理ユニットによる)データバスへのアクセスを制限することで変えられてもよい。
【0021】
さらに、前記調整するステップは、データバスのビット数を増減して調整することで、前記少なくとも一つのプロセッサのデータバスのバンド幅を少なくとも変化させ、前記処理能力を調整してもよい。例えば、前記データバス幅のビット数は、128ビット、64ビット、32ビット、16ビット、および8ビットのいずれかに調整されてもよい。
【0022】
少なくとも一つのプロセッサのローカルメモリはデータキャッシュとして動作してもよく、前記調整するステップは、データキャッシュのキャッシュサイズを変化させ、少なくとも一つのプロセッサの処理能力を調整してもよい。例えば、少なくとも一つのサブ処理ユニットのキャッシュサイズは、他のものと異なるサイズに調整されてもよい。さらに、前記調整するステップは、データキャッシュのキャッシュ構造を変化させ、処理能力を調整してもよい。例えば、キャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つが調整されてもよい。さらに、例えば、前記少なくとも一つのプロセッサのキャッシュ構造は、他のキャッシュ構造と異なる構造に調整されてもよい。
【0023】
同様に、メインメモリは、少なくとも一つのプロセッサに対して、データキャッシュとして動作してもよく、前記調整するステップは、データキャッシュのキャッシュサイズを変化させることで、少なくとも一つのプロセッサの処理能力を調整してもよい。さらに、データキャッシュのキャッシュ構造を操作することで、処理能力を調整してもよい。例えば、キャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つが調整されてもよい。
【0024】
他に、前記調整するステップは、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に遅延時間を要求しまたは除外することによって、前記少なくとも一つのプロセッサの命令待ち時間を調整し、これにより、少なくとも一つのプロセッサの処理能力が調整されてもよい。前記遅延時間は、前記ライトバックシーケンスおよび次の命令フェッチシーケンス間に存在することが好ましい。
【0025】
前記調整するステップは、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に、一つ以上のノーオペレーションシーケンスを挿入しまたは削除することによって、前記少なくとも一つのプロセッサの命令スループットを調整し、これにより、前記少なくとも一つのプロセッサの処理能力が調整されてもよい。前記ノーオペレーションシーケンスは、前記実行シーケンスおよび前記ライトバックシーケンス間に存在することが好ましい。
【0026】
他に、前記調整するステップは、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み取りシーケンスとデータ書き込みシーケンスのうちの一つ、の少なくとも一つのシーケンス間に遅延時間を要求することによって、前記少なくとも一つのメモリ待ち時間を調整し、これにより、前記少なくとも一つのプロセッサの処理能力が調整されてもよい。さらに、前記調整するステップは、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み取りシーケンスとデータ書き込みシーケンスのうちの一つ、の少なくとも一つのシーケンス間に、一つ以上のノーオペレーションシーケンスを挿入しまたは削除することによって、前記少なくとも一つのプロセッサの処理能力が調整されてもよい。
【0027】
本発明の1以上のさらなる態様によれば、処理調整部は、少なくとも一つのプロセッサを含み、処理システムは、処理タスクを実行するための複数のサブ処理ユニットと、少なくともいくつかの管理処理タスクを前記サブ処理ユニットに対して実行可能なメイン処理ユニットと、前記サブ処理ユニットおよび前記メイン処理ユニットによりアクセス可能なメインメモリと、前記サブ処理ユニット、前記メイン処理ユニットおよび前記メインメモリとを動作可能に接続するデータバスと、を含む少なくとも一つの処理デバイスを備える。前記少なくとも一つのプロセッサ、または前記サブ処理ユニットおよび前記メイン処理ユニットのうち少なくとも一つは、(i)ソフトウエアプログラムのバージョンを示す識別情報を取得し、(ii)前記少なくとも一つのプロセッサ、前記サブ処理ユニット、または前記メイン処理ユニットの処理能力が、前記ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定し、(iii)前記決定が肯定的であるとき、前記処理能力の調整を可能にする。
【0028】
プロセッサ、またはメイン処理ユニットおよびサブ処理ユニットの少なくとも一つは、さらに、(i)複数のソフトウエアプログラムに対するそれぞれの識別情報を、処理能力を調整する一つ以上のパラメータに関連付けるテーブルにアクセスし、(ii)前記処理能力の調整を容易にする与えられた前記識別情報に関連付けられたパラメータを使用可能であってもよい。
【0029】
上述したように、前記テーブルは、前記少なくとも一つのプロセッサまたは前記処理ユニット内にローカルに保存されるか、管理者エンティティ内にリモートに保存されるか、あるいは、別の場所に保存されるかの少なくとも一つの方法により保存される。前記少なくとも一つのプロセッサまたは前記処理ユニットは、当該少なくとも一つのプロセッサまたは処理ユニットと、前記管理者エンティティとの間に通信リンクを確立し、前記通信チャンネルを介して、前記管理者エンティティに前記識別情報を送信してもよい。前記管理者エンティティは、前記テーブルにアクセスし、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理能力を調整する関連付けられた一つ以上のパラメータを取得してもよい。前記少なくとも一つのプロセッサまたは前記処理ユニットは、さらに、前記管理者エンティティから前記通信チャンネルを介して、パラメータをさらに取得し、処理能力を調整する与えられた前記識別情報に関連付けられたパラメータを使用できてもよい。
【0030】
前記テーブルにもまた処理識別子を関連付ける場合、前記少なくとも一つのプロセッサ、または前記メイン処理ユニットおよび前記サブ処理ユニットの少なくとも一つは、さらに、(i)前記少なくとも一つのプロセッサまたは前記処理ユニットの処理能力に関する処理識別子を取得し、(ii)前記識別情報および前記識別子を用いて、前記テーブルにアクセスし、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理能力を調整する一つのパラメータ集合を取得し、(iii)前記一つのパラメータ集合を用いて、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理能力の調整を容易にできてもよい。
【0031】
前記テーブルが前記管理者エンティティ内にリモートに保存されている場合、前記少なくとも一つのプロセッサまたは前記処理ユニットは、(i)当該少なくとも一つのプロセッサまたは処理ユニットと、前記管理者エンティティとの間に通信リンクを確立し、(ii)前記通信チャンネルを介して、前記管理者エンティティに前記識別情報および前記処理識別子を送信してもよい。さらに、前記少なくとも一つのプロセッサまたは前記処理ユニットは、前記管理者エンティティから前記通信チャンネルを介してパラメータ集合を取得し、与えられた前記識別情報および前記処理識別子に関連付けられた前記パラメータ群を用いて、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理能力を調整してもよい。
【0032】
少なくとも一つのプロセッサまたはサブ処理ユニットの処理特性は、例えば、他の少なくとも一つのプロセッサまたはユニットの処理特性を調整せずに、調整されてもよい。例えば、少なくとも一つのプロセッサまたは処理ユニットの処理特性は、少なくともそのクロック周波数を変化させることで調整可能であることが好ましい。さらに詳細には、少なくとも一つのプロセッサまたは処理ユニットの処理特性は、メイン処理ユニット、サブ処理ユニット、およびデータバスのうち少なくとも一つのクロック周波数を、他のものとは異なる周波数に変化させることで調整可能であることが好ましい。
【0033】
他に、少なくとも一つのプロセッサまたは処理ユニットの処理特性は、処理ユニットのデータバスのバス使用率を変化させることで調整可能であってもよい。当該データバスのバス使用率は、それらの処理能力を調整するための(例えば、メイン処理ユニットによる)データバスへのアクセスを制限することで変化される。
【0034】
さらに、前記少なくとも一つのプロセッサまたは処理ユニットの処理特性は、当該少なくとも一つのプロセッサまたは処理ユニットの処理能力を調整するためのデータバスのビット数を調整することで、当該少なくとも一つのプロセッサまたは処理ユニットのデータバスのバンド幅を変化させることで調整可能であってもよい。例えば、データバスのビット数は、128ビット、64ビット、32ビット、16ビット、および8ビットのいずれかに調整されてもよい。
【0035】
前記少なくとも一つのプロセッサまたは前記サブ処理ユニットのローカルメモリは、データキャッシュとして動作し、さらに、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理特性は、当該少なくとも一つのプロセッサまたは処理ユニットの処理能力の調整のために前記データキャッシュのキャッシュサイズを変化させることにより、調整可能であってもよい。さらに、前記少なくとも一つのプロセッサまたは処理ユニットの処理特性は、当該少なくとも一つのプロセッサまたは処理ユニットの処理能力の調整のために前記データキャッシュのキャッシュ構造を変化させることにより、調整可能であってもよい。例えば、前記少なくとも一つのサブ処理ユニットのキャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つが変えられてもよい。前記少なくとも一つのプロセッサまたは前記少なくとも一つのサブ処理ユニットのキャッシュ構造は、他のものとは異なる構造に調整されるのが好ましい。
【0036】
他に、前記少なくとも一つのプロセッサまたは前記処理ユニットのメインメモリは、一つ以上のサブ処理ユニットに対してデータキャッシュとして動作し、さらに、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理特性は、当該少なくとも一つのプロセッサまたは処理ユニットの処理能力の調整のために前記データキャッシュのキャッシュサイズを変化させることにより、調整可能であってもよい。さらに、前記少なくとも一つのプロセッサまたは処理ユニットの処理特性は、当該少なくとも一つのプロセッサまたは処理ユニットの処理能力の調整のために前記データキャッシュのキャッシュ構造を変化させることにより、調整可能であってもよい。例えば、キャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つを変化させることで、調整可能であってもよい。
【0037】
さらにそのうえ、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理特性は、前記少なくとも一つのプロセッサまたは前記少なくとも一つのサブ処理ユニットの命令待ち時間を変化させることにより、調整可能であってもよい。なお、当該命令待ち時間の変化は、前記処理ユニットの処理能力を調整するために、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に遅延時間を要求することによって実現される。前記遅延時間は、前記ライトバックシーケンスおよび次の命令フェッチシーケンス間に存在してもよい。他に、前記処理特性は、前記少なくとも一つのプロセッサまたは前記少なくとも一つのサブ処理ユニットの命令スループットを変化させることにより、調整可能であってもよい。なお、当該命令スループットの変化は、前記処理能力を調整するために、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に一つ以上のノーオペレーションシーケンスを挿入しまたは削除することによって実現される。前記ノーオペレーションシーケンスは、前記実行シーケンスおよびライトバックシーケンス間に存在するのが好ましい。
【0038】
さらにそのうえ、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理特性は、前記少なくとも一つのプロセッサ、または前記サブ処理ユニットおよび当該処理ユニットのメインメモリの少なくとも一つ、のメモリ待ち時間を変化させることにより、調整可能であってもよい。なお、当該メモリ待ち時間の変化は、その処理能力を調整するために、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み込みおよび書き込みシーケンスの少なくとも一つのシーケンス間に遅延時間を要求することによって実現される。さらに、前記処理特性は、前記少なくとも一つのプロセッサ、または前記サブ処理ユニットおよび当該処理ユニットのメインメモリの少なくとも一つ、のメモリスループットを変化させることにより、調整可能であってもよい。なお、当該メモリスループットの変化は、当該処理能力を調整するために、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み込みおよび書き込みシーケンスの少なくとも一つのシーケンス間に、一つ以上のノーオペレーションシーケンスを挿入または削除することによって実現される。
【0039】
本発明のさらなる1以上の態様によれば、処理ユニットを動作させるための上述の方法を用いたプログラムが記録媒体に記録される。
【0040】
本発明の上述の態様に従って、現代のマイクロプロセッサの処理能力を超えた最新のコンピュータアーキテクチャが開発された。この最新のコンピュータアーキテクチャによれば、マルチプロセッサのコンピュータシステムのすべてのプロセッサは、共通のコンピュータモジュール(またはセル)から構成される。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令集合構成を用いるのが好ましい。マルチプロセッサのコンピュータシステムは、コンピュータプロセッサを用いて、1以上のクライアント、サーバ、PC、携帯端末、ゲーム機、PDA、セットトップボックス、アプリケーション、デジタルテレビおよび他のデバイスから構成されうる。
【0041】
必要に応じて、複数のコンピュータシステムをそれぞれネットワークのメンバとしてもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータの迅速な伝送ができる。またこの構造により、様々なサイズおよび処理能力をもつネットワークメンバの形成、ならびにこれらメンバによって処理されるアプリケーションの準備が簡略化できる。
【0042】
基本的な処理モジュールはプロセッサ要素(PE)である。PEは、好適には処理ユニット(PU)と、ダイレクトメモリアクセスコントローラ(DMAC)と、共通の内部アドレスおよびデータバスで接続された、複数の、例えば4つのサブ処理ユニット(SPU)とを含む。PUおよびSPUは、クロスバー構成をもちうる共有ダイナミックランダムアクセスメモリ(DRAM)にアクセスする。PUは、SPUによるデータおよびアプリケーションの処理のスケジューリングと調整を行う。SPUはこの処理を並列かつ独立して行う。DMACは、共有DRAMに保存されたデータおよびアプリケーションに対するPUおよびSPUのアクセスを制御する。
【0043】
このモジュール構造では、あるコンピュータシステムで使用されるPEの数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは4つのPE、ワークステーションは2つのPE、PDAは1つのPEを使用しうる。あるソフトウェアセルの処理に割り当てられるPEのSPUの数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
【0044】
複数のPEを共有DRAMに関連付けることができ、そのDRAMは複数のセクションに分別され、各セクションは複数のメモリバンクに分別されうる。DRAMの各セクションはバンクコントローラによって制御され、PEの各DMACが各バンクコントローラにアクセスできる。本構成では、各PEのDMACは共有DRAMの任意の個所にアクセスできる。
【0045】
この新規のコンピュータ構成はまた、データおよびアプリケーションをネットワークを介して伝送し、かつデータおよびアプリケーションをネットワークメンバ間で処理する新たなプログラミングモデルを用いる。このプログラミングモデルは、ネットワークを介して伝送され任意のネットワークメンバによって処理されるソフトウェアセルを用いる。各ソフトウェアセルは同一構造をもち、データとアプリケーション両方を収容できる。モジュール式コンピュータ構成による高速処理および伝送の結果、これらセルの高速処理が可能である。アプリケーション用のコードは、好適には同一の共通命令セットおよび命令セットアーキテクチャに基づく。各ソフトウェアセルは、好適にはグローバル(大域的)識別名(ID)と、セルの処理に必要な計算リソース量を記述した情報とを含む。すべての計算リソースは同一の基本構造をもち、かつ同じ命令セットアーキテクチャを用いるので、処理を実行する特定のリソースをネットワーク上の任意の場所に配置してダイナミックに割り当てを行うことができる。
【0046】
本発明の上記以外の態様、特徴、および利点は、添付図面とともに以下の詳細な説明により当業者には明確に理解される。
【発明を実施するための最良の形態】
【0047】
現在のところ好適である図面を例示として添付するが、本発明は図面と同一の構成および手段に限定するものではない。
【0048】
以下、図面を参照するが、図中、同一符号は同一要素を示す。図1は、本発明の1つ以上の態様に従う処理調整部118を示す。処理調整部118は、例えば、詳細は後述するマイクロプロセッサを用いて、ソフトウエアプログラムを実行できる。ディスプレイ120およびオーディオ機能(図示せず)を用いて、ユーザはマルチメディアを体験できる。
【0049】
ソフトウエアプログラムを含む記録媒体を処理調整部118に挿入し、かつ当該ソフトウエアプログラムをランダムアクセスメモリ(RAM)に読み込ませる等の任意の方法で、ソフトウエアプログラムを読み出すことができる。記録媒体は、光媒体、磁気媒体、電子媒体等であってもよい。実施形態のいくつかの態様に従えば、ソフトウエアプログラムは、インターネット124等のネットワークを介してダウンロードされることで、処理調整部118内に読み込まれてもよい。
【0050】
非常に強力なマルチプロセッシングシステムを用いて、本発明に係る処理調整部118を実装すれば、有利な処理特性を達成できることが見いだされてきた。処理調整部118は、実行対象のソフトウエアプログラムのバージョンに従って、当該処理調整部118の処理性能を下方または上方に調整するかどうかの決定を行うことができ、当該決定が肯定的である場合には、処理調整部118の処理性能の調整を行うことができるのが好ましい。この機能がどのように達成されるかについての各種詳細および具体例、さらに複数の変形例を以下に述べる。この点に関して、処理調整部118の内部構成のある態様をここで詳細に説明する。
【0051】
図2Aは、基本的な処理モジュールまたはプロセッサ要素(PE)200の一例を示すブロック図である。図示するように、PE200は、I/Oインタフェース202と、処理ユニット(PU)204と、ダイレクトメモリアクセスコントローラ(DMAC)206と、複数のサブ処理ユニット(SPU)、すなわちSPU1(208A)、SPU2(208B)、SPU3(208C)およびSPU4(208D)とを含む。ローカル(すなわち内部)PEバス212は、PU204、SPU群208、DMAC206およびメモリインタフェース210間のデータおよびアプリケーションの伝送を行う。ローカルPEバス212は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。
【0052】
PE200はディジタル論理回路を実装する各種方法を利用して構成できる。ただし好適には、PE200はシリコン基板上の相補的金属酸化膜半導体(CMOS)を用いる1つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるIII−B族化合物が含まれる。PE200はまた、超伝導材料を用いて高速単一磁束量子(RSFQ)論理回路等として実装することもできる。
【0053】
PE200は、広帯域メモリ接続216を介してダイナミックランダムアクセスメモリ(DRAM)214に密接に関連付けられる。DRAM214は、PE200用の主メモリ(または共有メモリ)として機能する。DRAM214は好適にはダイナミックランダムアクセスメモリだが、スタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。他の実装として、DRAM214は、PE200と同一の集積回路内に組み込まれてもよいし、他には、別の外部メモリとして提供されてもよい。DRAM214が、PE200と同一のチップ内に組み込まれている場合、当該DRAM214はそのチップ上において異なる場所に設けられてもよいし、PEを構成する一つ以上のプロセッサとともに一体化されてもよい。DMAC206およびメモリインタフェース210により、DRAM214とPE200のSPU群208およびPU204間のデータ転送が容易になる。DMAC206および/またはメモリインタフェース210は、サブ処理ユニット208およびPU204と一体化して設けてもよいし、あるいは、サブ処理ユニット208およびPU204から離れた場所(リモート)に設けてもよい。実際には、図に示す分離された構成にかわって、DMAC206の機能および/またはメモリインタフェース210の機能を、一つ以上の(好適にはすべての)サブ処理ユニット208およびPU204に一体化させてもよい。
【0054】
PU204は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、PU204はSPU群208によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。他の構成では、PE200は複数のPU204を含んでもよい。PU群204のそれぞれは、一つのSPU208、すべてのSPU208、または所定のグループのSPU群208を制御してもよい。SPU群208は、好適には、一命令複数データ(SIMD)プロセッサである。PU204の制御下で、SPU群208はデータおよびアプリケーションの処理を並列に、かつ独立して行う。DMAC206は、共有DRAM214に保存されたデータおよびアプリケーションに対するPU204およびSPU群のアクセスを制御する。なお、PU204は、主処理ユニットの役割を果たす一つ以上のサブ処理ユニット208で実装できる。
【0055】
PE200等の多数のPEを接続し、または一緒にパッケージングして、処理能力を向上させることができる。この構成を広帯域エンジン(BE)と称する。
【0056】
図2Bは、本発明の態様に従って動作する複数のPE250(PE1,PE2,PE3およびPE4)の処理アーキテクチャの一例を示す。PE250は単一のチップ上に存在するのが好ましい。PE250は、図2AのPE200について上述したPUおよび/あるいはSPU等のサブシステムを含んでもよいし、含まなくてもよい。PE250は同一のタイプであってもよいし、要求される処理の種類に応じてタイプが異なってもよい。例えば、一つ以上のPE群250は、一般的なマイクロプロセッサ、デジタルシングルプロセッサ、グラフィックプロセッサ、マイクロコントローラ等であってもよい。
【0057】
PE群250は、好適には共有バス252に接続される。メモリコントローラまたはDMAC256は、メモリバス254を介して共有バス252に接続されてもよい。DMAC256は、メモリ258に接続される。当該メモリ258は、メモリ230について上述したタイプのうちの一つであってもよい。I/Oコントローラ262もまた、I/Oバス260を介して共有バス252に接続されてもよい。I/Oコントローラ262は、フレームバッファやディスクドライブ等の一つ以上のI/O装置264に接続されてもよい。上述の処理モジュールおよびアーキテクチャは単なる例であり、本発明の様々な態様は他の構成を用いて表すことができる。例えば、2003年2月25日に公開された米国特許番号6526491の「Memory Protection System and Method for Computer Architecture for Broadband Networks」、および2001年3月22日に出願された米国出願番号09/816004の「Computer Architecture and Software Cells for Broadband Networks」に開示されたマルチプロセッサシステムを用いることができるが、それに限られるものではない。なお、当該文献は、参照により本明細書に援用されることは明らかである。
【0058】
図3は、SPU208の構造および機能の一例を示す。SPU208は、ローカルメモリ270と、レジスタ272と、1つ以上の浮動小数点ユニット274と、1つ以上の整数ユニット276とを含む。ただしここでも、必要な処理能力に応じて、使用する浮動小数点ユニット274および整数ユニット276の数を増減させてもよい。好適な実施形態では、ローカルメモリ270は128キロバイトの容量をもち、レジスタ272の容量は128×128ビットである。浮動小数点ユニット274は、好適には1秒間に320億回(32GFLOPS)の浮動小数点演算を実行する。整数ユニット276は、好適には1秒間に320億回(32GOPS)の整数演算を実行する。
【0059】
好適な実施形態では、ローカルメモリ270は256キロバイトの容量をもち、レジスタ272の容量は128×128ビットである。なお、処理タスクは、共有メモリ214を用いて実行されることはない。むしろ、当該タスクは、所定のサブ処理ユニット208のローカルメモリ270内に複製され、ローカルで実行される。
【0060】
ローカルメモリ270は、キャッシュメモリであってもなくてもよい。ローカルメモリ270は、好適にはスタティックランダムアクセスメモリ(SRAM)として構成される。PU204は、PU204が開始するダイレクトメモリアクセスのためにキャッシュコヒーレンシを必要とする場合がある。しかし、SPU208が開始するダイレクトメモリアクセスまたは外部装置との間のアクセスにはキャッシュコヒーレンシサポートは不要である。
【0061】
SPU208はさらに、SPU208とアプリケーションおよびデータの送受信を行うバス289を含む。サブ処理ユニット208はさらに、サブ処理ユニット208とアプリケーションおよびデータの送受信を行うバスインタフェース(I/F)278を含む。好適な実施形態では、バスI/F278は、サブ処理ユニット208内に一体的に設けられるDMAC(図示せず)に接続される。DMAC206は、(図3に示すごとく)外部に設けてもよい。バスI/F278とローカルメモリ270との間に一体的に配置されたDMACには一組のバスが相互に接続される。好適には当該一組のバスの幅は256ビットである。好適な実施形態では、バス289の幅は1024ビットである。
【0062】
SPU208はさらに、内部バス281,283および285を含む。好適な実施形態では、バス281は幅256ビットで、ローカルメモリ270とレジスタ272間の通信を行う。バス283および285は、それぞれレジスタ272−浮動小数点ユニット274間、およびレジスタ272−整数ユニット276間の通信を行う。好適な実施形態では、レジスタ272から浮動小数点ユニット274へのバス283またはレジスタ272から整数ユニット276へのバス285の幅は384ビットで、一方、浮動小数点ユニット274または整数ユニット276からレジスタ272へのバス285および283の幅は128ビットである。レジスタ272から浮動小数点ユニット274または整数ユニット276へのバスの幅のほうが、これら装置からレジスタ272へのバス幅より広いことで、処理中にレジスタ272からのより大量のデータフローに対処できる。各計算には最大3ワードが必要である。ただし各計算の結果は通常は1ワードだけである。
【0063】
本実施形態は、好適には図2のPE200を用いて実行されるが、他のシングルプロセッサシステムやマルチプロセッサシステムを用いてもよい。例えば、図4のマルチプロセッサシステム300を用いて、本実施形態の1つ以上の態様を実行できる。マルチプロセッサシステム300は、バス308によってメモリインタフェース304に接続された複数のプロセッサ302(使用数は任意)を含む。メモリインタフェース304は、別のバス310を介してDRAM等の共有メモリ306と通信する。メモリインタフェース304は、プロセッサ群302間で分散されてもよく、かつ必要に応じてDAMCと共に動作してもよい。プロセッサ群302は、好適には図3と同一または同様の構造、あるいは任意の既知のまたは後述の改良技術を用いて実装される。
【0064】
図5は、ある処理ステップを示すフロー図である。その処理ステップとは、例えばPE200(図2)を用いて、少なくとも部分的に処理調整部118により実施されるものであり、本発明の1以上の態様に従って、処理能力を変化させることができる。なお、図5に示す、いくつかのまたはすべての処理ステップ(さらに、それに続く以降の処理ステップ)は、PE200と一体化した、またはPE200に対して外部に設けられた、ソフトウエア、ハードウエア、またはそれらの組み合わせにより実施される。例えば、動作400では、ソフトウエアプログラムは、記録媒体から(ソフトウエアを実行する装置である)処理調整部118のランダムアクセスメモリ(RAM)内に読み込まれる。PE200は、その意味において、光学記録媒体122(図1)、磁性記録媒体または電子記録媒体等の記録媒体からソフトウエアプログラムを読み出すことが可能なソフトウエア実行コンソールの一部をなす。一例として、記録媒体が光学記録媒体であれば、当該記録媒体はCD、DVDまたはBlu−ray Disc(商標)であってもよいし、「読み出し専用」、「書き込み可能」または「再書き込み可能」のいずれかのデバイスとして形成されてもよい。他の例として、または、このような機能に加えて、処理調整部118は、インターネット124等のネットワークを介してソフトウエアプログラムをダウンロードしてもよい。
【0065】
図5に再び戻り、動作402では、処理調整部118はソフトウエアプログラムのバージョンを示す識別情報を取得する。ソフトウエアプログラムが記録媒体から読み込まれる場合、当該識別情報は光学記録媒体122上に設けられたプログラムIDであってもよい。また、ソフトウエアプログラムは、ファイルヘッダの一部分であってもよく、光学記録媒体122上に同じく設けられたソフトウエアプログラムテーブル内に含まれてもよい。多くの場合、ユーザは、光学記録媒体122から、処理調整部118内に含まれるハードディスクドライブや電子記録媒体等の別の記録媒体に、ソフトウエアプログラムを複製する。この場合、ソフトウエアプログラムIDを取得するためには、外部の記録媒体からソフトウエアプログラムIDを取得するかわりに、処理調整部118の内部の記録媒体からそのIDを取り出してもよい。
【0066】
ソフトウエアプログラムがインターネット124等を介してダウンロードされる場合、当該識別情報はプログラムIDやユーザID等であってもよい。識別情報は好適には、ダウンロードされたソフトウエアプログラムの内部、例えば、プログラムテーブルまたはファイルヘッダの内部に含まれるが、他に、当該識別情報は処理調整部118の内部に保存されていてもよく、ユーザにより処理調整部118内または別のデバイス内に入力されてもよい。
【0067】
ここで、ステップ400は当該発明の実施には必須ではないが、ソフトウエアプログラムが処理調整部118内のハードディスク等の内部記録媒体上に記録される場合、ステップ402より前に実施されうる。さらに、ソフトウエアプログラムのダウンロード、または読み出しの前に、ユーザに権限が与えられた場合などであれば、ステップ402はステップ400より前に実施されてもよい。
【0068】
動作404では、処理調整部118の処理能力の上方または下方への調整を行うべきか否かについての決定がなされる。例として、ソフトウエアプログラムが改良された結果、処理調整部118上で動作する当該ソフトウエアプログラムにより所望でない結果が生じ、かつ処理調整部118の処理能力が、ソフトウエア設計者が考える能力をはるかに超えるのであれば、処理調整部118の処理能力を下方に調整する必要があるとされてもよい。この点について、処理調整部118は好適には、ソフトウエアプログラムのバージョンを決定するソフトウエアIDや他の識別情報、および/またはソフトウエアプログラムの正常動作に必要な処理能力を表したものを利用する。このとき、処理調整部118は、ソフトウエアプログラムを実行するために必要な処理能力と処理調整部118の処理能力とを比較してもよい。処理調整部118の処理能力が、所望でない結果が得られる程度にソフトウエアプログラムを実行させるために必要とされる処理能力以下である場合、動作404における決定の結果は否定的なものとなり、かつ処理フローは動作406に進んでもよい。
【0069】
動作406では、処理調整部118は、ソフトウエアプログラムを実行する際に全処理能力を用いてもよく、少なくとも処理能力を下げる処理を行わなくてよい。ソフトウエアプログラムが実行された後、その処理フローは完了する。
【0070】
処理調整部118の処理能力が、ソフトウエアプログラムを実行するために必要な上述した処理能力をはるかに超えるのであれば、動作404における決定は肯定的なものになり、節点A(図7)に進む。ここで、処理調整部118の処理能力は、処理調整部118の利用可能なプロセッサ要素200の数により決定されてもよい。実際には、一つ以上のプロセッサ要素200は処理調整部118内に保持されてもよく、一方、処理調整部118から離れた場所に、一つ以上の他のプロセッサ要素200が設けられてもよい。これに関連して、図6を参照する。本図は、本発明の1以上の態様に係るコンピュータネットワーク全体のブロック図である。ここで、PE200および/または(複数のPEで形成される)広域エンジンを用いて、コンピュータシステム500の分散型アーキテクチャを実装できる。システム500は、複数のコンピュータおよび/またはコンピューティングデバイスが接続されたネットワーク504を含む。ネットワーク504は、ローカルエリアネットワーク(LAN)、インターネット等のグローバルネットワーク、またはその他のコンピュータネットワークで構成できる。ネットワーク504に接続されたコンピュータおよびコンピューティングデバイス(ネットワークの「メンバ」)は、クライアントコンピュータ506、サーバコンピュータ508、個人携帯端末(PDA)510、ディジタルテレビ(DTV)512、ならびにその他の有線または無線コンピュータおよびコンピューティングデバイス等を含む。ネットワーク504のメンバによって用いられるプロセッサは、好適にはPE200または他の適切なマルチプロセッサシステムで構成される。
【0071】
システム500のサーバ508は、クライアント506よりも多くのデータおよびアプリケーションを実行し、クライアント106よりも多くの計算モジュール(例えば、PE群200)を含む。一方、PDA510は本例では処理量が最も少ない。従ってPDA510に含まれるPE数は一番少なく、例えばPE数は一つである。DTV512は実質的に、クライアント506とサーバ508との間のあるレベルの処理を実行する。従って、DTV512はクライアント506とサーバ508の間の数のプロセッサ要素を含む。
【0072】
従って、動作404(図5)で実施される処理調整部118の処理能力の決定、およびその処理能力を調整するか否かについての決定は、処理調整部118内外のプロセッサ要素200の数で行われてもよい。図6は、多くの内部または外部に存在するプロセッサ要素200の処理能力を用いた分散型システム500を示す。
【0073】
図5に示される処理ステップに戻る前に、図6の分散型システム500に関して、さらに詳細に説明する。システム500のこのホモジーニャスな(均一な)構成により、適応性、処理速度、および処理効率が向上する。システム500の各メンバは同一計算モジュール(PE200)を1つ以上用いて(またはそのある部分を用いて)処理を行うので、データおよび/またはアプリケーションの処理を実際に行っているのはどのコンピュータまたはコンピューティングデバイスであるかは重要ではない。そのようなデータおよびアプリケーションの処理は、ネットワークメンバ間で共有できるためである。システム500によって処理されるデータおよびアプリケーションを含むソフトウエアセルを一意に識別することにより、処理がどこで発生したかに関係なく、処理を要求しているコンピュータまたはコンピューティングデバイスに処理結果を伝送できる。処理を実行しているモジュールは共通の構造をもち、かつ共通の命令セットアーキテクチャを使用しているので、プロセッサ間で互換性を得るためにソフトウェアに追加すべきレイヤによる計算負荷を回避できる。この構成およびプログラミングモジュールによって、例えばマルチメディア・アプリケーションのリアルタイムの実行に必要な処理速度を達成できる。
【0074】
システム500によって改善される処理速度および処理効率の利点をさらに高めるため、本システムによって処理されるデータおよびアプリケーションは、一意に識別され、均一にフォーマットされたソフトウェアセル502にパッケージされる。各ソフトウェアセル502は、アプリケーションおよびデータ両方を含む、または含みうる。各ソフトウェアセルはまた、ネットワーク504およびシステム500中でセルをグローバルに識別するIDを含む。このソフトウェアセルの均一な構造、およびソフトウェアセルのネットワーク中での一意的な識別により、ネットワーク504の任意のコンピュータまたはコンピューティングデバイス上でのアプリケーションおよびデータの処理が容易になる。例えば、クライアント506はソフトウェアセル502をフォーミュレート(すなわち所与の形式で生成)するが、クライアント506の処理能力の限度のため、そのソフトウェアセル502をサーバ508に伝送して処理してもよい。従ってソフトウェアセル502は、ネットワーク504上で利用できる処理リソースに応じてネットワーク504中を移動できる。
【0075】
システム500のプロセッサおよびソフトウェアセル502の均一構造はまた、既存の異種ネットワークの多くの問題を回避する。例えば、任意の命令セットを用いて任意の命令セットアーキテクチャ上でアプリケーションの処理の許可を求める、効率的とはいえないプログラミングモデル、例えばJava(商標または登録商標)仮想マシーン等の仮想マシーンが回避される。従って、システム500は従来のネットワークに比べて、はるかに効果的かつ効率的な広帯域処理を実現できる。
【0076】
図5に再度戻り、処理調整部118が享受する処理能力は、(特に、図6に示すように、外部装置の処理能力を使用する場合に)有意義である。当該処理能力は、いくつかの状況下において、それほど高性能でないシステム上で動作するよう設計されたソフトウエアプログラムの実行に対し、悪影響を及ぼすことがある。従って、動作404において、処理調整部118の処理能力(外部の処理能力を含めてもよい)が、ソフトウエアプログラムのバージョンに従って調整されるべき旨の決定がなされたとき、好適には処理フローは節点A(図7)に進む。動作408で、処理調整部118の処理能力を変化させる手順が開始される。
【0077】
本発明に係る処理能力の調整とは、例えば、データおよびアプリケーションを処理するために、処理調整部により使用される一つ以上のクロック周波数を変化させることを示す。当業者からみて明白であるように、所与のSPU208(図2)は、例えば、通常約4GHzのクロック周波数で動作するが、その周波数が上方または下方に調整されたとき、当該SPU208の処理能力もいくつかの点において追随して増減される。例えば、実際には、所定の単位時間内に実行しうる浮動小数点演算数が増減されてもよいし、また、所定の単位時間内に実行しうる整数演算数が増減されてもよいし、さらに、所定の単位時間内に実行しうる命令数が増減されてもよい。別のさらなる例として、プロセッサ要素200内において多くの管理調整機能を実行するPU204もまた、クロック周波数に基づいた動作を行う。その機能は、当該クロック周波数が調整されることで上昇または低下させることができる。別のさらなる例として、バス212もまた、クロック周波数に従って動作することが可能であり、本発明に従ってクロック周波数が増減されることで、概して、プロセッサ要素200および処理調整部118の処理能力を向上または低下させることができる。
【0078】
本発明に従って調整される処理調整部118の他の態様およびパラメータには、例えば、ローカルメモリ270のメモリマップおよび/または共有メモリ214、バス212の(PU204等による)バス使用率、バス212の(128ビット、64ビット、32ビット等の)バンド幅が含まれる。処理調整部118の処理能力を変化させるために調整されるさらなるパラメータには、例えば、ローカルメモリ270および/または共有メモリ214のサイズやキャッシュ構造、処理調整部118のPU204の一つ以上のSPU群208の命令待ち時間や命令スループット、ローカルメモリ270および/または共有メモリ214のメモリ待ち時間やメモリスループットが含まれる。
【0079】
さらなる他の例として、エンディアンが制御されてもよい。例えば、(文字列の最後に最下位のバイトを設定する)リトルエンディアンから、(文字列の最後に最上位のバイトを設定する)ビッグエンディアンに、あるいはその逆に変換されてもよい。調整可能な他のパラメータは命令の種類に関連し、例えば、MIPSからパワーPCに、あるいはその逆に変換されてもよい。これらのパラメータおよび制御については、本明細書でさらに詳細に後述する。
【0080】
処理調整部118の処理能力が調整されるべき旨が決定された場合、処理調整部118のどのパラメータを調整するかかつどの程度調整するかを決定するために、変換テーブルを参照するのが好ましい。この点に関連して、図8を参照する。図8は本発明の1以上の態様に係る変換テーブル550を示す。一般的な意味において、変換テーブル550は、識別情報(例えば、ソフトウエアプログラムID群)のそれぞれに、処理調整部118の処理能力に施される調整を示す一つ以上のパラメータを関連づける。本図では、識別情報は垂直列552形式で示されており、エントリ(0010,0020,0030・・・N)のそれぞれは、所与の識別情報の一要素、例えば、一つのソフトウエアプログラムIDを表す。その識別情報のそれぞれには、P1−i、P2−i、P3−i、P4−i、・・・PM−iの一つ以上のパラメータが関連付けられ、このパラメータそれぞれにより、処理調整部118の処理能力を調整する。ここで、iは、所与のパラメータがとりうる複数の値のうち一つを表したものである。
【0081】
一例として、「0040」が付された識別情報を、処理調整部118上において実行されるソフトウエアプログラムのあるバージョンに対応させることができ、これにより、処理調整部118の処理能力が、そのソフトウエアプログラムが改良されたときに想定される処理能力をはるかに超えたことを判断できる。また、処理調整部118の処理能力が非常に高いため、ソフトウエアプログラムが処理調整部118のフル能力で実行された場合に、不都合な結果が生じる可能性があることをさらに判断できる。このとき、変換テーブル550には、識別情報0040に関連づけられた複数のパラメータ、すなわち、パラメータP2−2、パラメータP3−1、パラメータP4−4、・・・、パラメータPM−7が含まれてもよい。こうしたパラメータのそれぞれは、好適には、処理調整部118の処理能力のある態様を表してもよいし、関連するソフトウエアプログラムが実行される場合に所望の結果を得るためのその態様に関する調整量を表してもよい。
【0082】
一例として、パラメータP2−2は、ソフトウエアプログラムを実行するために用いられる、あるSPUまたはSPU群208のクロック周波数を表すことができる。また、パラメータP2−2は、あるプロセッサ要素200の他の部分である、PU204、バス212等のクロック周波数を表すことができる。ここで、あるパラメータ、例えばパラメータP2−2の実際の値は、処理調整部118のある処理能力、例えば直接的に実際のクロック周波数に関連しているか、または、間接的にそのクロック周波数の変化量の値に関連している。当業者から見れば、本発明の精神および範囲から逸脱することなく他の間接的に関連したものを考案することができる。さらなる例として、パラメータP3−1は、関連するソフトウエアプログラムが実行される場合に所定の結果を得るために調整される処理調整部118の処理能力の他の態様を表すことができる。いずれの場合でも、パラメータP2−2、P3−1、P4−4、・・・、PM−7は好適には、処理調整部118により用いられるものであり、当該パラメータによりその処理能力が調整されることで、関連するソフトウエアプログラム(例えば、0040)を実行するための所望のプラットホームを実現できる。
【0083】
本発明に係る他の態様および実施形態によれば、その変換テーブル550には、所与の識別情報の一要素とパラメータの集合とをそれぞれ関連づけることを可能にする別の次元が含まれるのが好ましい。この点について、変換テーブル550には次元556が含まれ、当該次元556に沿って、複数の処理識別子C001、C002、・・・C00Xが配置されるのが好ましい。処理識別子のそれぞれは、次元556内の所与のユニットに含まれる複数のパラメータ集合、すなわち一つのパラメータの上位集合(super-set)に関連付けられる。その結果、垂直列552に沿ったそれぞれのソフトウエアプログラム識別子は、次元556に沿った処理識別子のそれぞれに関連付けられる。同様に、所与の識別子、例えば識別子0040に対する複数のパラメータ集合は、それぞれ、処理識別子C001、C002、・・・C00Xのそれぞれに関連付けられる。
【0084】
例えば、図8に示すごとく、識別子0040に関連付けられたパラメータP2−2、P3−1、P4−4、・・・、PM−7もまた、処理識別子C001に関連付けられている。すなわち、パラメータ集合を、識別子0040と、処理識別子C001、C002、・・・C00Xとの双方に関連付けることができるため、識別子0040に関連付けられて存在するパラメータ集合を異ならせることができる。このような構成を実現することにより、それぞれのパラメータが示すある値をどのように設定するかに関する自由度を高めることができる。特に、あるバージョンのソフトウエアプログラムが、広範囲で様々な処理能力を有する処理調整部上で実行される場合、例えば、図6に示すシステム500で運用される場合に、効果的である。
【0085】
図7に再度戻り、動作410において、変換テーブル550が処理調整部118内にローカルに保存されているか、または、処理調整部118から離れた場所、例えば、(図6のネットワーク504と同一視できる)ネットワーク124上のノード等にリモートに配置されているかについての決定がなされる。ここで、一つ以上のローカルメモリ270(図3)および/または、一つ以上のプロセッサ要素200内の共有メモリ214(図2)内にも変換テーブル550を保存できる。変換テーブル550がローカルに保存されることで、リモートに配置された際の変換テーブルにアクセスするために必要な時間および動作を省くことができる。他方、変換テーブル550のコンテンツが正確かつ最新であることを保証するために、管理者権限を有するエンティティによって管理かつ維持されうる離れた場所に変換テーブル550を保存することは有益である。
【0086】
ここで、図9を参照する。図9は、インターネット124等のネットワークに動作可能に接続される(好適にはモニター120を含む)処理調整部118を備える処理システム380のブロック図を示す。管理者権限を有するエンティティのサービスを提供する管理者382もまた、インターネット124に動作可能に接続される。管理者382には、データベース386に接続可能なネットワークおよび/またはデータベースサーバ384が含まれるのが好ましい。データベース386は、当該サーバ384と同じ場所に設けられてもよいし、他のネットワーク接続を介することで、リモートに当該サーバに接続されてもよい。不図示ではあるが、複数の他の(様々な処理能力を備えうる)処理調整部もまた、インターネット124に接続でき、後述の管理者382により提供されるサービスを利用できる。
【0087】
変換テーブル550が、処理調整部118等の一つ以上の処理調整部上にローカルに保存されていない場合でも(あるいは、変換テーブルそのもののバージョンがローカルに保存されている場合も含む)、変換テーブル550のバージョンは、実質的に正確かつ最新である状態で、管理者382のデータベース386内に保持されているのが好ましい。図7に再度戻り、もし、変換テーブル550がローカルに保存されていなければ、処理フローは好適には、動作412に進む。動作412では、処理調整部118等のある処理調整部は、インターネット124を介して管理者382と通信リンクを確立する。インターネット124は好適なリンクを提供するが、任意の既知の通信技術もまた、発明の精神および範囲から逸脱することなくリンクを確立するために用いられることは明らかである。管理者382と通信リンクを確立する動作の一部には、処理調整部118またはユーザの認証処理が含まれる場合がある。実際には、管理者382により提供されるサービスは、管理者に対して代金を支払う意思がないユーザまたは別の方法で埋め合わせを行う意思がないユーザには享受される必要はない。従って、当該認証処理には、処理調整部118から管理者382への既知の技術による、十分に一意である情報を送信する動作や、別に当該情報を管理する動作が含まれる。当該情報には、ユーザ名および/またはパスワード、メンバ名、ある種のシリアルナンバー、ソフトウエア購入の際の証明書などが含まれうる。
【0088】
いったん、処理調整部118と管理者382との間に通信リンクが確立されれば、処理は好適には動作414に進む。動作414では、少なくとも(ソフトウエアプログラムIDや他の指標等の)ソフトウエアプログラムに関する識別情報が、インターネット124を介して処理調整部118から管理者382に送信される。また、必須ではないが、変換テーブル550には好適には次元556が含まれる。この次元556により、プレイヤーのIDナンバーや処理能力を表す他の指標等の処理識別子を、処理調整部118から管理者382にインターネット124を介して送信するよう指示できる。
【0089】
次に、管理者382は好適には、サーバ384を用いて入力されるデータを処理し、変換テーブル550にアクセスする(動作416)。特に、サーバ384は好適には、ソフトウエアプログラムの実行の際に所望の結果を得ることができるよう、識別情報(および、必要であれば処理識別子)を用いて、処理調整部118の処理能力を調整するパラメータ集合を取得する。その後、サーバ384は好適には、適切な形式(例えば、前述のセル形式)にパラメータをパッケージ化し、当該パッケージ化されたパラメータをインターネット124を介して処理調整部118に送信する。その後、処理フローは図10の節点Bに進む。以下、図10を参照する。
【0090】
動作418では、処理調整部118は、好適には、(変換テーブル550から取得されたパラメータが、ローカルに保存されたバージョンに基づいて取得されようと、管理者エンティティから取得されようと、)当該パラメータを用いて、処理能力を変化させる処理を行う。オペレーションシステムの制御下または他のシステムレベルの制御プログラムの制御下に処理調整部118を置くと想定すれば、処理調整部118の処理能力を変化せしめる動作を行うことができる程度のプログラムに当該パラメータを提供するのが好ましい。他方、すべてのハードウエア面からのアプローチ、および/または、ソフトウエアおよびハードウエアの組み合わせの面からのアプローチが採用された場合、記憶域やレジスタなどの好適な送り先に当該パラメータを提供するのが好ましい。動作420では、処理調整部118は、提供されるパラメータに従って、自身の処理特性を変化させるのが好ましい。
【0091】
プロセッサ要素200の種類が広範に及ぶ場合、処理調整部118の処理特性を変化させるために採用されるアプローチは多岐にわたることがあり、本明細書でそのいくつかの例を後述する。なお、ここで、そのような処理特性の変化が正常に行われた場合、処理フローは好適には動作422に進む。動作422では、当該変化された処理特性を用いてソフトウエアプログラムが実行される。処理調整部118は、ソフトウエアプログラムが開発された時点で考慮される処理能力を真似る(mimic;処理能力に一致させる)ことができるため、ソフトウエアプログラムの実行時の異常を回避できる点において有意義である。
【0092】
図11は、処理調整部118によるプログラムコンテンツのセキュアな方法でのダウンロードを可能とするシステム610の一例を示す。なお、当該プログラムコンテンツとは、例えば、ソフトウエアプログラムおよび/または上述のパラメータ集合であり、セキュアな方法とは、例えば、認証されていないプログラムの複製物が排除されるか、使いものにならないものにさせる方法である。そのようなシステムは、2002年12月11日に出願された、米国出願番号No.10/316675の「METHODS AND APPARATUS FOR SECURE DISTRIBUTION OF PROGRAM CONTENT」に記載されており、当該文献の開示内容は参照により本明細書に援用される。
【0093】
システム610には、好適には、管理者サーバ601、第3者サーバ602、暗号化サーバ603、処理調整部118等の複数のクライアント端末装置604、およびこれら装置を接続するインターネット等のネットワーク605が含まれる。システム610は、管理者サーバ601、第3者サーバ602や暗号化サーバ603を複数含んでもよい。簡潔かつ明確にするために、それぞれのサーバを一つだけにして、以下説明する。
【0094】
サーバ601,602,603のそれぞれは好適には、エンティティや人によって、維持され、管理され、および/または別に、当該エンティティや人に関連付けられる。ここで、サーバとエンティティとは相互に関連付けられたものとして以下説明する。
【0095】
上述のサーバ384等の管理者サーバ601は、好適には、上述のデータベース386等の顧客データベース606に接続され、ある管理者権限の機能を実行するエンティティにより、維持され、管理され、および/または別に、当該エンティティに関連付けられる。管理者サーバ601および顧客データベース606は、ネットワークサーバの機能およびデータベースの機能を実行するために適切な既知のハードウエアを用いて実装されうる。
【0096】
第3者サーバ602は、好適には、ソフトウエアプログラムの開発者などの管理者サーバ601のエンティティとは異なるエンティティにより、維持され、管理され、および/または別に、当該エンティティに関連付けられる。一例として、第3者サーバ602は、コンピュータアプリケーションプログラムやコンピュータシステムプログラムの開発者であってよく、および/または、処理調整部118により用いられるパラメータ集合を提供して上述のごとく処理能力を調整してもよい。なお、第3者サーバ602に関連付けられたエンティティは、管理者サーバ601のエンティティと異なる必要はなく、実際には、同一のエンティティであってもよい。例えば、第3者サーバ602により実行される機能を、管理者サーバ601が実行してもよい。第3者サーバ602は、サーバに関する機能を実行するための任意の既知のハードウエアを用いて実装されうる。
【0097】
暗号化サーバ603は、好適には、管理者サーバ601のエンティティと同一のエンティティにより、維持され、管理され、および/または別に、当該エンティティに関連付けられる。一例として、暗号化サーバは、管理者382内のサーバ384と同一場所に設けられてもよい。なお、暗号化サーバ603は他のエンティティに関連付けられてもよい。暗号化サーバ603は、サーバに関する機能を実行するための任意の既知のハードウエアを用いて実装されうる。管理者サーバ601、第3者サーバ602および暗号化サーバ603により実行されるそれぞれの機能を、管理し維持しおよび/または別にそれらサーバに関連付けられる一つ以上のサーバおよび/または一つ以上のエンティティ間で分散させることができる。なお、その分散された状態は、図11に示される状態と一致するのが好ましい。
【0098】
一般的に、それぞれのクライアント端末装置604は、好適には、任意の既知のハードディスクドライブハードウエア等のハードディスクドライブ607、およびソニーのメモリスティック等のメモリーカード608と連結可能である。他には、上述したCDドライブ、DVDドライブ、あるいはBlu−rayDiscドライブ等の光学デバイスと連結可能である。ハードディスクドライブ607、メモリーカード608、および/または光学デバイス(クライアント端末装置604に対し、取り外し可能であるのが好ましい)は、装置604とは別ものとして図示されているが、装置604に一体化して設けられてもよい。クライアント端末装置604は、パーソナルコンピュータや出願人自身のプレイステーション等の任意の既知のハードウエアを用いて実装されてもよい。
【0099】
クライアント端末装置604は、好適には一つ以上の処理調整部118を含み、さらに、ネットワーク605を介したダウンロードにより、ソース暗号化プログラムまたはソース暗号化パラメータ集合を取得できる。権限が与えられた任意のエンティティから、ソース暗号化プログラムまたはソース暗号化パラメータ集合を取得することができるが、クライアント端末装置604が、(例えば、ネットワーク605を介したダウンロードにより)、第3者サーバ602または管理者サーバ601から、そのソース暗号化プログラムまたはソース暗号化パラメータ集合を取得するのが好ましい。
【0100】
エンドユーザは、ある形式(すなわち、ソースが暗号化された形式)のコンピュータプログラムおよび/またはパラメータ集合を取得できる。この場合、復号鍵を取得しソース暗号化プログラムを復号してはじめて、当該コンピュータプログラムおよび/またはパラメータ集合を用いて、クライアント端末装置604内の処理調整部の処理能力を調整するプログラムを実行できる。その復号鍵は、権限が与えられたクライアント端末装置604によってのみ取得される。
【0101】
図12を参照すると、本図は、暗号化サーバ603および第3者サーバ602により実行される処理ステップの概念構成およびフローを示す図である。本図は、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合が生成される方法の一例が示されている。この例において、第3者サーバ602は、ソフトウエア開発者に関連づけられる。なお、当該ソフトウエア開発者は、自分自身、あるいは、当該自身に他のエンティティを併用してのいずれかで、プログラムおよび/またはパラメータ集合を取得する。図12に示すように、第3者サーバ602は、システムプログラムやアプリケーションプログラム等の少なくとも一つのプログラム、および/または少なくとも一つのパラメータ集合を備えることができる。一つ以上のこれらのプログラムまたはパラメータ集合は、ネットワーク605を介して暗号化サーバ603に送信される。
【0102】
暗号化サーバ603は、好適には、そのプログラムやパラメータ集合を暗号化し、当該暗号化されたプログラムや暗号化されたパラメータ集合を第3者サーバ602に返す。当該暗号化処理では、公開鍵暗号方式や対称鍵暗号方式などの任意の既知の暗号化技術を用いることができ、これにより暗号化されたプログラムやパラメータ集合を生成できる。
また、暗号化サーバ603は、第3者サーバ602に復号鍵をも提供する。当該復号鍵により、暗号化されたソフトウエアプログラムやパラメータ集合を復号化できる。第3者サーバ602は、ネットワーク605を介した電子的な通信により、暗号化されたプログラムやパラメータ集合をクライアント端末装置604に配布できる。ソース暗号化プログラムまたはソース暗号化パラメータ集合がどのように配布されるかとは無関係に、エンドユーザは好適には、ある登録処理を実行してはじめて、プログラムを実行するか、またはパラメータ集合を用いた処理能力の調整を行うことができる。
【0103】
図13は、ソース暗号化コンピュータプログラムおよび/またはソース暗号化パラメータ集合を処理するために実行される、ある処理ステップの概念構成およびフローを示す図である。クライアント端末装置604は好適には、ネットワーク605を介したダウンロード動作により、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を取得する。なお、ソース暗号化コンピュータプログラムを実行し、またはソース暗号化パラメータ集合を用いるためには、クライアント端末装置604は好適には、当該ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を、ネットワーク605を介して管理者サーバ601に登録しなければならない。
【0104】
当該登録処理に関する少なくともいくつかのステップを、図14のフロー図に示す。ステップ20において、クライアント端末装置604は、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を取得し、それらを上述のごとく保存する。ステップ22では、ユーザは好適には、コンピュータプログラムをインストールし、かついつても実行できる準備をさせる旨の指示、あるいは、暗号化パラメータ集合を用いる旨の指示を与える。この点において、クライアント端末装置604には好適には、ユーザのインストール指示に応答して呼び出されるコンピュータプログラムが含まれる。当該プログラムは、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合の登録をユーザに促すものであり、通信機能を呼び出す(S24)。
【0105】
ここで、クライアント端末装置604は好適には、ネットワークインタフェースを含むのが好ましい。このネットワークインタフェースにより、既知の技術であるネットワーク605を介した通信を提供できる。任意の既知のネットワークインタフェースハードウエアはこの目的のために用いられうる。ステップ26において、通信チャンネルは好適にはクライアント端末装置604によって開始され、クライアント端末装置604および管理者サーバ601間で確立される。クライアント端末装置604が有するネットワークインタフェースにより、当該クライアント端末装置604に関連する少なくともいくつかの識別情報を、ネットワーク605を介して管理者サーバ601に送信することが容易になる。当該識別情報には好適には、特に、クライアント端末装置604にとって十分に一意である、プレイヤーID等の機器IDが含まれる。また、当該識別情報には、媒体IDが含まれてもよい。なお、媒体IDとは、ソース暗号化コンピュータプログラムの保存のためにクライアント端末装置604により使用されるメモリタイプ(メモリの型番)を示すものである。
【0106】
クライアント端末装置604には好適には、以下の第1の記録デバイスおよび第2の記録デバイスが含まれる。当該第1の記録デバイスは、例えば、ハードディスクドライブ607やメモリーカード608であり、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を、後述するある他の情報とともに記録できる。当該第2の記録デバイスは、機器IDを記録できる読み出し専用メモリ(ROM)などである。クライアント端末装置604が有するネットワークインタフェースにより、(ROMから取得された)機器IDを、ネットワーク605を介して管理者サーバ601に送信することがさらに可能になる(動作S28)。媒体IDもまた、クライアント端末装置604から管理者サーバ601宛てに送信できる。
【0107】
図15を参照すると、管理者サーバ601は、クライアント端末装置604から、ネットワーク605を介して、機器ID(および、可能であれば媒体ID)等の識別情報を取得する(S30)。この点について、管理者サーバ601にはネットワークインタフェースが含まれるのが好ましい。当該ネットワークインタフェースによりネットワーク605との通信を容易にすることで、当該ネットワーク605を介したクライアント端末装置604からの識別情報の取得を実現できる。ステップ32において、管理者サーバ601は、クライアント端末装置604から取得した機器IDに対応する、ここでは仮想IDと呼ばれる他のIDを当該機器IDに割り当てる。ここで、仮想IDは、複数の予め存在するID群の中から選択されるものであってもよいし、機器IDまたはある他の数値に基づく数値演算を通じて導出されるものであってもよいし、あるいは、任意の他の既知の、または後述の改良技術を用いることで生成されてもよい。
【0108】
ステップ34において、管理者サーバ601は顧客データベース606を対象に、クライアント端末装置604から取得した機器ID(すなわち、その第2記憶デバイス(ROM)内に保持される機器ID)と一致する既存の機器IDを検索する。図16に示すごとく、顧客データベース606には好適には、それぞれの登録情報、すなわち、クライアント端末装置604のそれぞれに対応するそれぞれの登録情報一式が保持される。少なくとも、その登録情報には、クライアント端末装置604に関するある識別情報、例えば、機器IDが含まれる。図16に示すごとく、複数の機器IDが、顧客データベース606内にあらかじめ保持されており、その様子は図16の左側の列に示されている。こうした機器ID群のそれぞれは好適には、所与のクライアント端末装置604の一つ一つに対応するものであり、かつその機器IDは、それぞれのクライアント端末装置604に対し十分に一意である。管理者サーバ601にもまた、好適にはデータプロセッサが含まれる。当該データプロセッサによれば、顧客データベース606を対象に、ネットワーク605を介したクライアント端末装置604から取得される機器IDと一致する登録情報(例えば、機器ID)の検索を実現できる。この目的のために、任意の既知の、または後述の改良されたデータ処理用のハードウエアを用いることができる。
【0109】
図15に再度戻り、ステップS36において、仮想IDは、顧客データベース606内に保持される機器IDに関連付けられる。すなわち、仮想IDは、管理者サーバ601宛てに機器IDを送信した特定のクライアント端末装置604に関連付けられる。当該関連付けは、保持された機器IDに対応付けるような方法で、仮想IDを顧客データベース606内に記録せしめることで実現できる。
【0110】
上述したように、クライアント端末装置604から管理者サーバ601へのネットワーク605を介した識別情報の送信動作には(図14のステップ28)、媒体ID(またはメディアID)の送信動作が含まれてもよい。なお、媒体IDとは、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合の保存のためにクライアント端末装置604によって使用される、記録デバイスのタイプに対応するものである。媒体IDにより、例えば、クライアント端末装置604が、ハードディスクドライブ607内部、メモリーカード608内部、あるいは、ある他のタイプの記録媒体内部に、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合が保持されていることを知らせることができる。媒体IDの取得を受けて、管理者サーバ601は、記録されている機器IDおよび取得された媒体IDに仮想IDを関連付けることができる。その際、媒体IDは、顧客データベース606内において、当該記録された機器IDに対応する場所に記録される。
【0111】
図17および図18に示すごとく、管理者サーバ601は好適には、暗号化された復号鍵および暗号化された仮想IDを生成することが可能である。ここで、その復号鍵は、クライアント端末装置604上の、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を復号化するために用いることができる。ここで、管理者サーバ601は、(図11から図12までに示された)暗号化サーバ603により生成された、それぞれのソース暗号化コンピュータプログラムを復号化するために用いられる任意の数の復号鍵群にアクセスする。これらの復号鍵は、暗号化サーバ603および/または第3者サーバ602により、管理者サーバ601に提供される。さらに、その復号鍵は、ネットワーク605や他のネットワークを介して管理者サーバ601に送信されてもよいし、あるいは、記録メディアにより人手で提供されてもよい。
【0112】
ステップ40において、管理者サーバ601は好適には、クライアント端末装置604に関連付けられた仮想IDを用いて復号鍵を暗号化する。さらに、管理者サーバ601は好適には、クライアント端末装置604について関連づけられた機器IDを用いて、その仮想IDを暗号化する。なお、機器IDのそれぞれは、顧客データベース606から取得される(S42)。
【0113】
管理者サーバ601が有するネットワークインタフェースによれば、ネットワーク605を介した、暗号化された復号鍵および暗号化された仮想IDのクライアント端末装置604への送信をさらに容易にできる(S44)。ステップ46において、クライアント端末装置604は好適には、ネットワーク605を介して、暗号化された復号鍵および暗号化された仮想IDを取得し、当該取得したそれらを、(ハードディスクドライブ607やメモリーカード608などの)第1の記録デバイス内に保存する。
【0114】
暗号化された復号鍵は、権限が与えられたクライアント端末装置604、例えば、有効な機器IDを提供し、かつ復号鍵の暗号化用の仮想IDに関連付けられた当該機器IDを登録したクライアント端末装置604のみに提供される。さらに、暗号化された復号鍵に関する任意の妨害、例えば、ネットワークでの著作権侵害行為や権限が与えられない複製等があったとしても、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を復号化するために必要な情報(すなわち、有効な復号鍵)が提供されることはない。実際には、そのような復号鍵は、十分に一意である仮想IDにより暗号化される。また、その暗号化された仮想IDは、登録処理が完了し、かつクライアント端末装置604に権限が与えられてはじめて、クライアント端末装置604宛てに提供される。仮想IDは、管理者サーバ601からクライアント端末装置604に暗号化された状態で送信されるため(すなわち、クライアント端末装置604の機器IDを用いて暗号化されるため)、暗号化された仮想IDを権限なく取得しても、暗号化された復号鍵を復号化するための必要な情報が与えられることはない。
【0115】
図19および図20は、クライアント端末装置604内のソース暗号化コンピュータプログラムおよび/またはソース暗号化パラメータ集合をロードする/インストールするために実行される、ある処理を示す。図19は、ハードディスクドライブ607やメモリーカード608などの第1の記録デバイスと別個にされたクライアント端末装置604を示す。なお、上述したように、これらの構成要素は一体化または部分的に一体化されてもよい。ここで、当該処理のこの段階において、クライアント端末装置604内には、ROM等の第2のデバイス内に記録された機器IDが含まれ、かつ、第1の記録デバイス607,608には、機器ID、暗号化された仮想ID、暗号化された復号鍵、および暗号化されたコンピュータプログラム等が含まれる。
【0116】
ステップ50において、ユーザは、ソース暗号化コンピュータプログラムをロードする/インストールする旨の指示、あるいは、ソース暗号化パラメータ集合を用いて処理能力を調整する旨の指示を、クライアント端末装置604に対し与えることができる。当該ユーザからの指示を受けて、クライアント端末装置604は、適切なハードウエアを用いて、かつソフトウエアによる処理を行うことで、第1の記録デバイス607,608から機器IDを読み出すとともに、ROMなどの第2の記録デバイスからも機器IDを読み出す(S52)。ステップ54では、これらの機器IDが一致するか否かについての決定がなされる。これらの機器IDが一致しない場合、処理は中止され、および/または他の処理が開始される。一方、これらの機器IDが一致する場合、処理はS56に進む。ここでは、暗号化された仮想IDは、機器ID(ROM内に記憶される機器IDが好ましい)を用いて復号化される。仮想IDがいったん生成されれば、暗号化された復号鍵は、当該生成された仮想IDを用いて復号化される(S58)。次に、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合は、その復号鍵を用いて復号化される(S60)。ステップ62において、コンピュータプログラムまたはパラメータ集合は、ステップ56で得た仮想IDを用いて再度暗号化され、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合を取得する。クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合は、第1の記録デバイス607,608内に保存される(S64)。この段階においては、暗号化された復号鍵、ソース暗号化プログラム、ソース暗号化パラメータ集合は、いずれも、第1のデバイス607,608内に保持される必要はない。
【0117】
クライアント端末装置604には好適には、上述した暗号化機能および復号化機能を実行するための復号化デバイスおよび暗号化デバイスが含まれる。当該復号化デバイスおよび暗号化デバイスは一体化することができ、簡潔化のために、それらを復号化デバイスと呼んでもよい。そのような暗号化および復号化を実現するために、任意の既知のまたは後述の改良されたハードウエアおよび/またはソフトウエアが、本発明に従って用いられる。例えば、復号化ライブラリや暗号化ライブラリなどが用いられる。
【0118】
クライアント側で暗号化したコンピュータプログラムおよび/またはクライアント側で暗号化したパラメータ集合は、安全性が高い。なぜなら、権限が与えられていない、異なるクライアント端末装置604上のエンドユーザは、権限のないその複製物を実行することはできないためである。実際に、クライアント側で暗号化したコンピュータプログラムおよび/またはクライアント側で暗号化したパラメータ集合は、最初に復号化される必要がある。なお、当該プログラムおよび/またはパラメータ集合は、後述するように、管理者サーバ601にコンピュータプログラムを登録した端末以外の任意のクライアント端末装置604上では実行できない。
【0119】
図21および図22を参照し、コンピュータプログラムがクライアント端末装置604により実行される処理をここで述べる。その処理のこの段階において、クライアント端末装置604には、機器IDを含むROMなどの第2の記録デバイスと、機器ID、暗号化された仮想ID、およびクライアント側で暗号化したコンピュータプログラムを備える第1の記録デバイスとが含まれる。
【0120】
S70において、ユーザは、コンピュータプログラムを実行する旨の指示をクライアント端末装置604に与える。適切なコンピュータプログラムの制御下で動作するクライアント端末装置は、ユーザからの指示を受けて、第1の記録デバイス607,608から機器IDを読み出すとともに、第2の記録デバイス(ROM)からも機器IDを読み出す(S72)。ステップ74では、これらの機器IDが互いに一致するか否かについての決定がなされる。これらの機器IDが一致する場合、処理はS76に進む。ここでは、暗号化された仮想IDは、機器ID(ROM内に記憶される機器IDが好ましい)を用いて復号化される。仮想IDがいったん生成されれば、暗号化された復号鍵は、当該生成された仮想IDを用いて復号化される(S58)。ここでは、クライアント端末装置604の復号化デバイスが、機器ID(ROM内に記憶される機器IDが好ましい)を用いて、暗号化された仮想IDを復号化する。ステップ78において、クライアント端末装置604の復号化デバイスは、ステップS76で得られた仮想IDを用いて、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合を復号化する。このとき、クライアント端末装置604は、RAM内に存在するコンピュータプログラムを実行してもよいし、処理調整部の処理能力を調整してもよい。
【0121】
クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合は、当該クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合を暗号化するために使用された仮想IDに関連付けられたクライアント端末装置604のみによって、復号化される。従って、権限が与えられていない、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合の複製物が、権限が与えられていないエンドユーザに提供された場合、そのようなエンドユーザがコンピュータを実行しようとし、あるいはパラメータ集合を使用しようとする装置では、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合を復号化することはできない。さらに、第1の記録デバイス607,608が、権限が与えられていないエンドユーザに与えられた場合(例えば、当該記憶デバイス607,608が異なるクライアント端末装置604に接続された場合)、ROMに記憶された任意の機器IDと第1の記録デバイスに含まれる機器IDとは一致しないため、その暗号化された仮想IDを復号化できない。従って、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合を、復号化することは不可能である。クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合をセキュアに配布することで、権限が与えられていない複製物を使いものにならないものにし、かつ特定のクライアント端末装置604だけが、コンピュータプログラムを実行し、および/または処理能力を調整することを保証できる。
【0122】
上述した態様では、復号鍵がネットワーク605を介してクライアント端末装置604により提供されることについて考慮されているが、他の態様として、当該復号鍵が、(CD−ROMなどの)記録媒体により人手でクライアント端末装置604に提供されることを考慮したものがある。ここで、本発明に係るこうした態様を、図23および図24を用いて説明する。図23に示すごとく、クライアント端末装置604は、記録媒体609Aにより提供された、暗号化された第1の復号鍵を取得する。この第1の復号鍵は、クライアント端末装置604上のソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合の復号化に用いることができる。管理者サーバ601は好適には、暗号化された第2の復号鍵および暗号化された仮想IDを生成できる。なお、第2の復号鍵は、暗号化された第1の復号鍵の復号化に用いることができる。ここで、管理者サーバ601は任意の数の第2の復号鍵にアクセスし、当該復号鍵を用いて、暗号化された第1の復号鍵のそれぞれを復号化する。これらの第2の復号鍵は、暗号化サーバ603および/または第3者サーバ602により、管理者サーバ601に提供される。さらに、これらの第2の復号鍵は、ネットワーク605や他のネットワークを介して管理者サーバ601に送信されてもよいし、あるいは、記録メディアにより人手で提供されてもよい。
【0123】
ステップ40Aにおいて、管理者サーバ601は好適には、クライアント端末装置604に関連付けられた仮想IDを用いて第2の復号鍵を暗号化する。さらに、管理者サーバ601は好適には、クライアント端末装置604について関連づけられた機器IDを用いて、その仮想IDを暗号化する。なお、機器IDのそれぞれは、顧客データベース606から取得される(S42)。管理者サーバ601が有するネットワークインタフェースによれば、ネットワーク605を介した、暗号化された第2の復号鍵および暗号化された仮想IDのクライアント端末装置604への送信をさらに容易にできる(S44A)。ステップ46Aにおいて、クライアント端末装置604は好適には、ネットワーク605を介して、暗号化された第2の復号鍵および暗号化された仮想IDを取得し、当該取得したそれらを、(ハードディスクドライブ607やメモリーカード608などの)第1の記録デバイス内に保存する。
【0124】
暗号化された第2の復号鍵は、権限が与えられたクライアント端末装置604、例えば、有効な機器IDを提供し、かつ第2の復号鍵の暗号化用の仮想IDに関連付けられた当該機器IDを登録したクライアント端末装置604のみに提供される。さらに、暗号化された第2の復号鍵に関する任意の妨害、例えば、ネットワークでの著作権侵害行為や権限が与えられない複製等があったとしても、暗号化された第1の復号鍵を復号化するために必要な情報(すなわち、有効な第2の復号鍵)が提供されることはない。実際には、そのような第2の復号鍵は、十分に一意である仮想IDにより暗号化される。同様に、その暗号化された仮想IDは、登録処理が完了し、かつクライアント端末装置604に権限が与えられてはじめて、クライアント端末装置604宛てに提供される。仮想IDは、管理者サーバ601からクライアント端末装置604に暗号化された状態で送信されるため(すなわち、クライアント端末装置604の機器IDを用いて暗号化されるため)、暗号化された仮想IDを権限なく取得しても、暗号化された第2の復号鍵を復号化するための必要な情報が与えられることはない。
【0125】
図25および図26は、クライアント端末装置604内のソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合をロードする/インストールするために実行される、ある処理を示したものである。ここで、当該処理のこの段階において、クライアント端末装置604内には、第2のデバイス(ROM)内に記録された機器IDが含まれ、かつ、第1の記録デバイス607,608には、機器ID、暗号化された仮想ID、暗号化された第2の復号鍵、暗号化された第1の復号鍵、およびソース暗号化コンピュータプログラムおよび/またはソース暗号化パラメータ集合等が含まれる。
【0126】
ステップ50において、ユーザは、将来の使用のためのソース暗号化コンピュータプログラムおよび/またはソース暗号化パラメータ集合をロードする/インストールする旨の指示を、クライアント端末装置604に対し与えることができる。当該ユーザからの指示を受けて、クライアント端末装置604は、適切なハードウエアを用いて、かつソフトウエアによる処理を行うことで、第1の記録デバイス607,608から機器IDを読み出すとともに、ROMなどの第2の記録デバイスからも機器IDを読み出す(S52)。ステップ54では、これらの機器IDが一致するか否かについての決定がなされる。これらの機器IDが一致しない場合、処理は中止され、および/または他の処理が開始される。一方、これらの機器IDが一致する場合、処理はS56に進む。ここでは、暗号化された仮想IDは、機器ID(ROM内に記憶される機器IDが好ましい)を用いて復号化される。仮想IDがいったん生成されれば、暗号化された第2の復号鍵は、当該生成された仮想IDを用いて復号化され、かつ暗号化された第1の復号鍵は第2の復号鍵を用いて復号化される(S58A)。次に、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合は、第1の復号鍵を用いて復号化される(S60A)。ステップ62において、コンピュータプログラムまたはパラメータ集合は、ステップ56で得た仮想IDを用いて再度暗号化され、クライアント側で暗号化したコンピュータプログラムを生成する。クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合は、第1の記録デバイス607,608内に保存される(S64)。この段階においては、暗号化された第1の復号鍵、暗号化された第2の復号鍵、ソース暗号化プログラム、ソース暗号化パラメータ集合は、いずれも、第1のデバイス607,608内に保持される必要はない。
【0127】
いったん、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合が生成され、かつ第1の記録デバイス607,608内に記憶されれば、図21および図22を参照して説明した処理が用いられ、コンピュータプログラムが実行される。
【0128】
図27は、処理調整部118による上述のコンピュータプログラムまたはパラメータ集合のセキュアな方法でのダウンロードを可能とする他のシステム710を示す。セキュアな方法とは、例えば、認証されていないプログラムの複製物が排除されるか、使いものにならないものにさせる方法である。そのようなシステムは、参照により本明細書に援用される、2002年12月1日に出願された、米国出願番号No.10/316309の「METHODS AND APPARATUS FOR SECURE DISTRIBUTION OF CONTENT」に記載されている。
【0129】
システム710には、好適には、第3者サーバ701、暗号化サーバ702、配布サーバ703、処理調整部118等の複数のクライアント端末装置705、およびこれら装置を接続するインターネット等のネットワーク706が含まれる。システム710は、第3者サーバ701、暗号化サーバ702、配布サーバ703および/または管理者サーバ704を複数含んでもよい。簡潔かつ明確にするために、それぞれのサーバを一つだけにして、以下説明する。サーバ701,702,703,704のそれぞれは、エンティティや人によって、維持され、管理され、および/または別に、当該エンティティや人に関連付けられるのが好ましい。以下、サーバとエンティティとは相互に関連付けられたものとして説明する。
【0130】
第3者サーバ701は、図11を参照して上述したように、ソフトウエアプログラムの開発者などのエンティティにより、維持され、管理され、および/または別に、当該エンティティに関連付けられる。
【0131】
暗号化サーバ702は好適には、管理者権限の機能を有するエンティティにより、維持され、管理され、および/また別に、当該エンティティに関連付けられる。当該エンティティは、管理者サーバ704に関するエンティティと同一のエンティティであるのが好ましい。なお、暗号化サーバ702は、サーバに関する機能を実行するための任意の既知のハードウエアを用いて実装されうる。
【0132】
配布サーバ703は好適には、ネットワーク706等を介して、ソフトウエアプログラムまたはパラメータ集合を、クライアント端末装置705に配布させるエンティティにより、維持され、管理され、および/または別に、当該エンティティに関連付けられる。配布サーバ703は好適には、詳細は後述するが、データベース386等の顧客データベース707に接続される。配布サーバ703および顧客データベース707は、ネットワークサーバの機能およびデータベースの機能を実行するために適切な既知のハードウエアを用いて実装されうる。
【0133】
サーバ384等の管理者サーバ704は、ある管理者権限の機能を実行するエンティティにより、維持され、管理され、および/または別に、当該エンティティに関連付けられる。管理者サーバ704は、ネットワークサーバの機能およびデータベースの機能を実行するために適切な既知のハードウエアを用いて実装されうる。
【0134】
第3者サーバ701、暗号化サーバ702、配布サーバ703、および管理者サーバ704により実行されるそれぞれの機能を、管理し維持しおよび/または別にそれらサーバに関連付けられる一つ以上のサーバおよび/または一つ以上のエンティティ間で分散させることができる。実際には、それぞれのサーバに対してエンティティを別々にする必要はなく、例えば、一つのエンティティを、配布サーバ703および管理者サーバ704に関連付けることも可能である。なお、分散された状態は、図27に示される状態と一致するのが好ましい。
【0135】
一般的に、それぞれのクライアント端末装置705は、好適には、一つ以上の処理調整部118を含み、任意の既知のハードディスクドライブハードウエア等のハードディスクドライブ708、およびソニーのメモリスティック等のメモリーカード709を動作可能に接続する。他には、クライアント端末装置は、上述したCDドライブ、DVDドライブ、あるいはBlu−rayDiscドライブ等の光学デバイスに接続される。ハードディスクドライブ708、メモリーカード709、および/または光学デバイス(クライアント端末装置705にリモートに接続されるのが好ましい)は、装置705とは別ものとして図示されているが、装置706に一体化して設けられてもよい。クライアント端末装置705は、パーソナルコンピュータや出願人自身のプレイステーション等の任意の既知のハードウエアを用いて実装されてもよい。
【0136】
クライアント端末装置705は好適には、図11のクライアント端末装置604について説明した上述の方法により、ネットワーク706を介したダウンロードを行うことで、ソース暗号化プログラムおよび/またはソース暗号化パラメータ集合を取得できる。
【0137】
図28は、暗号化サーバ702および第3者サーバ701により実行される処理ステップの概念構成およびフローを示す図である。本図は、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合が生成される方法の一例が示されている。この例において、第3者サーバ701は、ソフトウエア開発者に関連づけられる。なお、当該ソフトウエア開発者は、自分自身、あるいは、当該自身に他のエンティティを併用してのいずれかで、ネットワーク706を介して暗号化サーバ702に送信されたプログラムおよび/またはパラメータ集合を取得する。なお、ここで、コンピュータプログラムまたはパラメータ集合は、記録メディアなどにより人手で暗号化サーバ702に提供されてもよい点である。
【0138】
暗号化サーバ702は好適には、そのプログラムやパラメータ集合を暗号化し、当該暗号化されたプログラムや暗号化されたパラメータ集合を第3者サーバ701に返す。当該暗号化処理では、公開鍵暗号方式や対称鍵暗号方式などの任意の既知の暗号化技術を用いることができ、これにより暗号化されたプログラムやパラメータ集合を生成できる。一例として、暗号化サーバ702は、暗号化システムプログラム(ソース暗号化システムプログラム)や暗号化アプリケーションプログラム(ソース暗号化アプリケーションプログラム)などの、暗号化されたプログラム、あるいはソース暗号化パラメータ集合を第3者サーバ701に返す。また、暗号化サーバ702は、第3者サーバ701に復号鍵をも提供する。当該復号鍵により、暗号化されたソフトウエアプログラムやパラメータ集合を復号化できる。好適には、その復号鍵はアクティベートされていない状態(使用できない状態)で配布サーバ703にも提供される。すなわち、その状態で用いても、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を復号化することは困難である。例えば、最初に暗号化サーバ702等のエンティティにより暗号化されることで、復号鍵は、アクティベートされていない状態になりうる。後述のごとく、これにより安全性を高めることができる。
【0139】
図29は、配布サーバ703および管理者サーバ704間で実行される、ある処理ステップの概念構成およびフローを示す図である。配布サーバ703は好適には、ネットワーク706を介して、管理者サーバ704との通信リンクを確立する。管理者サーバ704は、鍵配布プログラム711、鍵管理データ712、および鍵登録プログラム713を、ネットワーク706を介して、配布サーバ703に送信するのが好ましい。以下、後述するように、配布サーバ703は、鍵配布プログラム711を実行し、その結果、エンドユーザに復号鍵を配布できる。鍵管理データは好適には、機密性の高い情報のあつまりであり、当該あつまりには、それぞれの配布サーバ703に対して十分に一意である配布IDが含まれる。鍵登録プログラム713は配布サーバ703により実行され、好適には、アクティベートされていない復号鍵をアクティベートされた復号鍵に変換する。(すなわち、ソース暗号化コンピュータプログラムの復号化を可能にする。)
【0140】
図30を参照すると、本図は、好適には配布サーバ703および管理者サーバ704間で実行される、さらなる処理ステップを示すフロー図である。一般的に、配布サーバ703は、ネットワーク706を介して、管理者サーバ704にアクティベート化を求めるリクエストを行い、そのレスポンスとして、管理者サーバ704から、アクティベート許可情報を取得できる。より詳細には、動作S1において、配布サーバ703は好適には、ネットワーク706を介して管理者サーバ704に接続する。動作S2では、配布サーバ703は、鍵管理データ(その中には配布IDが含まれる)を管理者サーバ704宛てに送信する。
【0141】
動作S3では、管理者サーバ704は好適には、適切な認証処理により配布サーバ703を認証する。例えば、管理者サーバ704は、ユーザIDやパスワードの他、他の証明できるある情報の提供を要求することで、認証を可能とする。なお、好適には、管理者サーバ704は、鍵管理データ712から配布IDを抽出することで、配布サーバ703を認証する。動作S4では、認証が成功したか否かについての決定がなされる。認証が失敗した場合、処理は動作S5に進む。ここでは、どのアクティベート処理も許可されず、処理は終了する。もし、認証が成功した場合、処理フローは動作S6に進む。ここでは、アクティベート許可情報が、管理者サーバ704からネットワーク706を介して配布サーバ703に送信される。
【0142】
動作S7において、配布サーバ703は、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合に関連づけられた復号鍵をアクティベート化させる。より詳細には、配布サーバ703は鍵登録プログラム713を実行するが、その際に入力としてアクティベート許可情報が要求されるのが好ましい。鍵登録プログラム713は、アクティベート許可情報の入力を受けて、復号鍵をアクティベートさせ、当該アクティベートされた復号鍵を用いてソース暗号化コンピュータプログラムを復号化する。一例として、アクティベート許可情報には、最初に暗号化された復号鍵を復号するための適切な復号鍵が含まれることがある。この場合、鍵登録プログラム713にはある復号化機能が備えられており、当該機能により、アクティベート許可情報を用いて、最初に暗号化された復号鍵を復号することが可能になる。
【0143】
どのように復号鍵がアクティベートされるか、あるいは復号鍵がアクティベートされるか否かに関係なく、配布サーバ703は好適には、顧客データベース707内に復号鍵を保存する。この段階では、配布サーバ703には、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合の他に、当該プログラムまたはパラメータ集合を復号化できる復号鍵も含まれる(またはそれらにアクセスできる)。
【0144】
図31は、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を処理するために実行される、ある処理ステップの概念構成およびフローを示す図である。なお、ソース暗号化コンピュータプログラムを実行し、またはソース暗号化パラメータ集合を用いて処理能力を調整するためには、クライアント端末装置705は好適には、ある登録処理を実行する必要がある。これらの処理を、ネットワーク706上の管理者サーバ704を用いて説明する。
【0145】
登録処理に関する少なくともいくつかのステップを、図32のフロー図に示す。ステップS20,S22,S24,S26およびS28の処理は、図14における同一の符号を付した処理と同様である。
【0146】
その後、動作S30において、管理者サーバ704は好適には、登録データを生成し、かつ当該生成された登録データを、ネットワーク706を介して、クライアント端末装置705に送信する。一例として、その登録データは、機器IDおよび配布IDで構成できる。これらのIDは好適には、その登録データの適切な解析処理により、後に特定される。クライアント端末装置は、その登録データを取得次第、好適には、ハードディスクドライブ、および/またはメモリーカード709などの第1の記録デバイス内にその登録データを保存する。
【0147】
図33に示すように、ここで、サーバ384等の管理者サーバ704は、データベース386等のデータベース707Aに接続できる。データベース707Aには、上述した登録処理の段階中に取得された、任意の機器IDおよび/または配布IDが含まれる。機器IDおよび配布IDは好適には、有用な履歴データおよびその解析結果が取得されるように、お互いに関連付けられて保存される。これにより、例えば、あるクライアント端末装置705が、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を、ある配布サーバ703から取得したことがその解析結果により判断できる。機器ID、配布ID、および/またはそれらを関連付けたものを、配布サーバ703から取得されたデータと併用すれば、配布サーバ703側の任意の義務処理(例えば、契約処理)が行われたことを証明できる。
【0148】
図34および図35は、それぞれ、コンピュータプログラムまたはパラメータ集合を登録し、かつエンドユーザに当該プログラムの実行、または処理の調整を可能にするために実行される、さらなる処理ステップの概念構成およびフローを示す図である。ユーザは好適には、ソース暗号化コンピュータプログラムを復号化するのに適切な復号鍵を取得したい旨の指示を、クライアント端末装置705に与える。ステップ21において、クライアント端末装置705は、ネットワーク706を介して配布サーバ703との通信リンクを確立する。その後、クライアント端末装置705は、(以前、管理者サーバ704から取得した)登録データを配布サーバ703に送信する(S22)。
【0149】
動作S23では、配布サーバ703は、ネットワーク706を介して、クライアント端末装置705から、例えば、機器ID(可能であれば、配布IDも)を含む登録データを取得する。この点について、配布サーバ703には好適にはネットワークインタフェースが含まれる。当該ネットワークインタフェースによりネットワーク706との通信を容易にすることで、当該ネットワーク706を介したクライアント端末装置705からの登録データの取得を実現できる。ステップ23では、管理者サーバ704もまた、クライアント端末装置705から取得した機器IDに対応する、ここでは仮想IDと呼ばれる他のIDを機器IDに割り当てる。ここで、仮想IDは、複数の予め存在するID群の中から選択されるものであってもよいし、機器ID、配布ID、および/またはある他の数値に基づく数値演算を通じて導出されるものであってもよいし、あるいは、任意の他の既知の、または後述の改良技術を用いることで生成されてもよい。
【0150】
配布サーバ703は顧客データベース707を対象に、クライアント端末装置705から取得した機器ID(すなわち、その第2記憶デバイス(ROM)内に保持される機器ID)と一致する既存の機器IDを検索する。図36に示すごとく、顧客データベース707には好適には、クライアント端末装置604のそれぞれに対応するそれぞれのIDである、それぞれの機器IDが保持される。複数の機器IDが、顧客されたデータベース707内にあらかじめ保持されており、その様子は図36の左側の列に示されている。こうした複数の機器IDのそれぞれは好適には、所与のクライアント端末装置705の一つ一つに対応するものであり、かつその機器IDは、それぞれのクライアント端末装置705に対し十分に一意である。管理者サーバ704にもまた、好適にはデータプロセッサが含まれる。当該データプロセッサにより、顧客データベース707を対象にした、ネットワーク605を介したクライアント端末装置604から取得される機器IDと一致する登録情報(例えば、機器ID)の検索を実現できる。この目的のために、任意の既知の、または後述の改良されたデータ処理用ハードウエアを用いることができる。
【0151】
図35に再度戻り、ステップ23において、仮想IDは、顧客データベース707内に保持される機器IDに関連付けられる。すなわち、仮想IDは、配布サーバ703宛てに機器IDを送信した特定のクライアント端末装置705に関連付けられる。当該関連付けは、保持された機器IDに対応させるような方法で、仮想IDを顧客データベース707内に記憶せしめることにより実現できる。
【0152】
上述したように、ネットワーク706を介する、クライアント端末装置705から配布サーバ703への登録データの送信動作には(図35のステップ22)、配布ID(またはメディアID)の送信動作が含まれてもよい。なお、配布IDとは、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合が取得された配布サーバ703に対応するものである。他に、登録データに含まれる配布IDもまた、機器IDに関連付けられて顧客データベース707内に保存されてもよい。
【0153】
図35に示すごとく、配布サーバ703は好適には、暗号化された復号鍵および暗号化された仮想IDを生成することが可能である。この復号鍵は、クライアント端末装置705上のソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を復号化するために用いられる。ここで、配布サーバ703は、(図27から図28までに示された)暗号化サーバ702により生成された、それぞれのソース暗号化コンピュータプログラムを復号化するために用いられる任意の数の復号鍵群にアクセスする。その復号鍵は、暗号化サーバ702および/または任意の他の適切なエンティティにより、配布サーバ703に提供される。さらに、その復号鍵は、ネットワーク706や他のネットワークを介して配布サーバ703に送信されてもよいし、あるいは、記録メディアにより人手で提供されてもよい。
【0154】
ステップ24において、配布サーバ703は好適には、クライアント端末装置705に関連付けられた仮想IDを用いて、その復号鍵を暗号化する。さらに、配布サーバ703は好適には、クライアント端末装置705の関連づけられた機器IDを用いて、仮想IDを暗号化する。なお、当該機器IDのそれぞれは、顧客データベース707から取得される。
【0155】
配布サーバ703が有するネットワークインタフェースによれば、ネットワーク706を介した、暗号化された復号鍵および暗号化された仮想IDのクライアント端末装置705への送信をさらに容易にできる(S25)。ステップ26において、クライアント端末装置705は好適には、ネットワーク706を介して、暗号化された復号鍵および暗号化された仮想IDを取得し、当該取得したそれらを、(ハードディスクドライブ708やメモリーカード709などの)第1の記録デバイス内に保存する。動作S27において、配布サーバ703は好適には、ある復号鍵がクライアント端末装置705に送信されたことを(履歴データとして)記録する。この情報は、後に、例えばネットワーク706を介して、管理者サーバ704に提供される。配布サーバ703は好適には、履歴データ内に含まれるデータにアクセスすることはできない。このデータを課金処理や義務処理のトラッキングなどのために用いることができる。
【0156】
暗号化された復号鍵は、権限が与えられたクライアント端末装置705、例えば、有効な機器IDを提供し、かつ復号鍵の暗号化のために用いられる仮想IDに関連付けられたその機器IDを登録したクライアント端末装置705のみに提供される。さらに、暗号化された復号鍵に関する任意の妨害、例えば、ネットワークでの著作権侵害行為や権限が与えられない複製等があったとしても、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を復号化するために必要な情報(すなわち、有効な復号鍵)が提供されることはない。実際には、そのような復号鍵は、十分に一意である仮想IDにより暗号化される。また、その暗号化された仮想IDは、登録処理が完了し、かつクライアント端末装置705に権限が与えられてはじめて、クライアント端末装置705宛てに提供される。仮想IDは、配布サーバ703からクライアント端末装置705に暗号化された状態で送信されるため(すなわち、クライアント端末装置705の機器IDを用いて暗号化されるため)、暗号化された仮想IDを権限なく取得しても、暗号化された復号鍵を復号化するための必要な情報が与えられることはない。
【0157】
ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合をクライアント端末装置705内にロードする/インストールするために実行される処理は、図19および図20を参照して上述した通りである。
【0158】
コンピュータプログラムがクライアント端末装置705により実行される処理、あるいは、パラメータ集合がクライアント端末装置705により用いられ、処理能力が制御される処理は、図21および図22を参照して上述した通りである。
【0159】
図10に戻り、処理調整部118の処理特性を変化させるために動作420で行われるある処理は非常に多岐にわたるため、あらゆる状況について隅々まで記述することはできない。従って、例示可能な例をいくつかここで述べる。なお、発明の精神および範囲から逸脱することなく、他のアプローチおよび技術を、その変形例を構成するために用いることは可能であると理解される。本発明のある態様に従えば、少なくとも一つのSPU208の処理特性を調整することで、一つ以上のSPU208がソフトウエアプログラムを好ましい形で実行できるようにする一方、他の一つ以上のSPU208の処理特性を調整しないことで、より優れた処理特性を利用して、他の処理タスクを実行できるようにする。一例として、特定のパラメータ、例えば、一つ以上のSPU208のクロック周波数を調整する一方、他の一つ以上のSPU208のクロック周波数については調整しない。
【0160】
この点について、図37を参照する。本図は、他のSPU208の一つ以上のクロック周波数を変化させることなく、いくつかの(例えば、いくつかのSPUの)クロック周波数を変化させることで処理能力を変化させるプロセッサ要素200Aのブロック図を示す。図37に示すごとく、SPU208A−Dのそれぞれには、例えば、既知であるフェーズロックドループ技術を用いたそれぞれのクロック回路が含まれる。特に、SPU208Aには、PLL1と称するフェーズロックドループ回路が含まれ、一方、SPU208B−Dのそれぞれには、PLL2,PLL3,PLL4と称するそれぞれのフェーズロックドループ回路が含まれる。フェーズロックドループ回路のそれぞれに設定できる周波数は、比較的に広範囲に及ぶため、十分に異なるクロック周波数で、当該周波数に対応したSPU208を動作させることができる。例えば、フェーズロックドループ回路に、約1MHzから4GHzまでのクロック周波数を設定できるのが好ましい。
【0161】
本実施の形態によれば、プロセッサ要素200Aには、ソフトウエア制御部、ハードウエア制御部、またはその組み合わせで構成されたシステム制御部280が含まれる。いずれの態様の場合でも、システム制御部280は好適には、所望のクロック周波数を表すパラメータを、例えば、変換テーブル550から取得し、当該取得されたパラメータを、SPU208Aに対応する一つ以上のフェーズロックドループ回路への命令信号に変換できる。システム制御部280は、あるSPU208により認識される信号を出力し、当該信号により、当該SPUに対応したフェーズロックドループ回路の周波数が変更され、一方、他の一つ以上のSPU208のフェーズロックドループ回路の周波数については変更されないのが好ましい。ここで、これを機能的に実現するためには、SPU208のそれぞれは、当該SPU208のそれぞれのクロックメッシュ、例えば、H木(H−tree)分配ネットワーク等の、それぞれ自身が有するクロック周波数の分配ネットワークを必要とする。さらに、PU204には、システム制御部280から出力される制御信号に応じて変更可能な、(PLL6と称する)フェーズロックドループ回路が含まれる。バス212にもまた、システム制御部280から出力される制御信号に応じて変更可能な、当該バスに関連する(PLL5と称する)フェーズロックドループ回路を含む。システム制御部280からの制御信号は上述の変換テーブル550内のパラメータにより左右され、当該制御信号に応じて、プロセッサ要素200Aの任意のあるいはすべてのフェーズロックドループ回路を操作できる点において有意義である。
【0162】
図37に示される機能と実質的に同一である機能を達成する構成を図38に示す。本実施の形態において、プロセッサ要素200Bには、SPU群208、PU204およびバス212を通じて共通である、CLK1、CLK2、CLK3、・・・CLKNなどの複数のクロック回路284が含まれる。クロック回路284のそれぞれの出力は、例えば、SPU208、PU204およびバス212のそれぞれに入力され、これらの構成要素のそれぞれには、それぞれのマルチプレクサ286またはそれと同様に機能する他の回路が含まれる。そのマルチプレクサ286は、クロック回路284から出力される、場合によっては異なるクロック信号をそれぞれ取得し、かつ制御レジスタ282から出力される制御信号に応じて一つのクロック信号を出力できる。制御レジスタは、変換テーブル550のパラメータからその内容を直接取得してもよいし、あるいは当該パラメータの値が操作された結果としてのその内容を取得してもよい。また、本構成において、SPU群208、PU204およびバス212は、それぞれ、別々のクロックメッシュを要求することで、他の一つ以上の構成要素を通じてではなく、一つの構成要素内において、異なるクロック周波数を実現できる。
【0163】
図39に示すごとく、それぞれのクロック回路284は、一つのフェーズロックドループ回路と様々なマスク信号とを用いて実現される。例えば、当該マスク信号としてMASK1信号を用いれば、1/3の周波数のクロック信号を生成でき、MASK2信号を用いれば、1/2の周波数のクロック信号を生成できる。本実施の形態によれば、それぞれのMASK信号は、制御回路(図示せず)により生成される。レジスタ282およびマルチプレクサ286を組み合わせて用いることで、一定のマスク集合により生成されるそれぞれのクロック信号を取得でき、当該クロック信号の一つは、制御レジスタ282に従って選択される。
【0164】
上述したように、プロセッサ要素200(図2)のバス212の使用率は、本発明に従って操作される処理調整部118の処理能力に関するいくつかの実施例に共通するものである。この点について、図40を参照すると、本図は、プロセッサ要素200Cが、特にPU204について、どのようにバスの利用率の調整を可能にするかを示すブロック図である。実際的な問題として、プロセッサ要素200Cが効果的な処理を実現するためには、PU204およびSPU208A−Dによるバス212への時折のアクセスを必要とする。バス212へのアクセスが向上され、または妨げられた場合、プロセッサ要素200Cの処理能力は、それに応じて増減される。本実施の形態によれば、システム制御部280は、リミッタ回路288を用いることで、PU204によるバス212へのアクセスを制限し、または増加させることができる。より詳細には、システム制御部280をリミッタ回路288と組み合わせることで、PU204がバス212へのアクセスを可能にする、プロセッササイクルの特定の周期および/またはプロセッササイクルの割合を調整できる。例えば、PUがバス212に、限られたプロセッササイクル数を超えてアクセスすることを可能にするスケジュール280Aがシステム制御部280により確立される。従って、PU204は、システム制御部280およびリミッタ回路288を別にすれば、許可される回数よりも少ない回数または多い回数分、バス212にアクセスすることができる。これにより、PU204と共有のDRAM214との間の処理速度を上下させることができ、さらに、PU204と一つ以上のSPU208との間で実行される処理を向上させ、または低下させることができる。バス212へのアクセスに関する制限は、例えば、PU204によるバス212の30%の使用率などの比率や他のある比率で特徴付けられる。
【0165】
ここで、リミッタ回路288も、PU204について上述した方法と実質的に同様の方法で、一つ以上のSPU208によるバス212へのアクセスを向上させ、または当該アクセスを制限するために用いられる。これにより、プロセッサ要素200Cの処理能力の調整に関する自由度をさらに高めることができる。
【0166】
上述するごとく、処理調整部118の命令待ち時間および命令スループットのうちの一つ、またはその両方の変化は、処理調整部118の処理能力を左右する。この点について、図41および図42は、処理調整部118による命令待ち時間および/または命令スループットの操作方法を示す。具体的には、遅延時間やノーオペレーションなどを、命令パイプラインの一つ以上のフェーズ間に挿入したり、当該フェーズ間から除外したりする。例えば、命令パイプラインには、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンスおよびライトバックシーケンスが含まれる。図41に示すごとく、命令実行シーケンスとライトバックシーケンスとの間において、それらの間に、ノーオペレーション、バブル(パイプラインバブル)、遅延時間などを挿入または削除することで、タイミングの調整を実現できる。図42に示すごとく、タイミングの調整は、ライトバックシーケンスが終了した後に挿入され、または削除される。これにより、命令待ち時間に影響を与えることができる。本実施の形態に従って、一つ以上のSPU群208またはPU204は、これらの技術を用いて、プロセッサ要素200の処理能力を調整する。
【0167】
さらに、処理調整部118の処理能力を、メモリ待ち時間および/またはメモリスループットの操作を通じて調整することができる。より具体的には、ローカルメモリに対応するSPU208、または共有DRAM214に対応するSPU208のメモリ待ち時間および/またはメモリスループットを調整することで、プロセッサ要素200の所望の処理能力を実現できる。同様に、共有DRAM214に対応するPU204のメモリ待ち時間および/またはメモリスループットを調整してもよい。メモリ待ち時間および/またはメモリスループットの調整について、詳細には、図15および図16を参照して上述した方法と実質的に同様の方法で実現される。なお、メモリアクセスにおける基本的なシーケンスには、アドレスの取得シーケンス、アドレスのデコードシーケンス、特定のアドレスに一致するメモリからのデータの取得シーケンス(または、データの書き込みシーケンス)が含まれる。
【0168】
図43を参照すると、本図は、レンタルプログラムコンテンツの配布者による、ソフトウエアプログラムなどのプログラムコンテンツのセキュアな配布の一例を示す処理フロー図である。そのような配布形態については、上述した米国出願番号No10/316309およびNo10/316675に記載されている。
【0169】
レンタルプログラムコンテンツの配布者は、管理者サーバ601,704、第3者サーバ602,701、配布サーバ703、またはいくつか他のサーバ(図示せず)で構成されてもよい。ユーザがプログラムコンテンツのレンタルを所望する場合、ユーザは最初にレンタルシステムのメンバーになることを要求される。この点について、ステップ70において、ユーザは、例えば、クライアント端末装置604,705のある仕組みの起動を通じて、システムに入会したい旨を示す。一例として、クライアント端末装置604,705は同一の装置であってもよいし、別々の装置であってもよく、当該装置上でユーザによりレンタルプログラムが実行される。さらに、クライアント端末装置604,705には、入会処理を容易にする適切なコンピュータプログラムが含まれ、かつ実行される。
【0170】
ステップ72において、クライアント端末装置604,705は好適には、ネットワーク605,706を介して、管理者サーバ601,704との通信リンクを確立する。ステップ74において、ユーザがレンタルシステムの入会希望を行ったクライアント端末装置604,705により、リクエストが送信される。ユーザが一つのクライアント端末装置のみを用いてコンテンツをレンタルし、かつ実行する場合、クライアント端末装置604,705は、ネットワーク605,706を介して、機器IDを管理者サーバ601,704宛てに送信する。一方、ユーザが他の装置を通じてプログラムコンテンツをレンタルする場合、クライアント端末装置604,705は、ユーザに対し固有である他のID情報を送信する。応答として、管理者サーバ601,704は、電子会員証を生成する。なお、当該会員証は、ユーザが同一のクライアント端末装置を用いてプログラムコンテンツをレンタルし、かつ実行する場合のみにおいて、クライアント端末装置604,705に対し十分に一意である。管理者サーバ601,704もまた、クライアント端末装置604,705の機器IDまたはユーザ情報を、例えば、上述のデータベース関連技術を用いて、電子会員証に関連づける。ステップ60において、管理者サーバ601,704は、ネットワーク605,706を介して、クライアント端末装置604,705に電子会員証を送信する。以下に示すごとく、電子会員証は、レンタル処理の際に用いられる。
【0171】
ユーザがレンタルシステムの会員になれば、ユーザは、アプリケーションプログラムおよびシステムプログラムなどのプログラムコンテンツのレンタルを許可される。好適には、プログラムコンテンツは、ビデオゲームコンピュータプログラムである。図44によれば、クライアント端末装置604,705上で動作するコンピュータソフトウエアは、コンピュータプログラムをレンタルしたい旨のユーザからの指示受付を可能にするのが好ましい。ここで、ユーザがプログラムコンテンツのレンタルを所望するクライアント端末装置は、会員登録に用いられた装置と同一のものであってもよいし、別の装置であってもよいし、そのどちらでもなくてもよい。一例として、ユーザは、ゲームコンソール用のソフトウエアプログラムをレンタルしてもよいが、他の装置から、例えば、自身が有する携帯電話、PDA、あるいは他のデバイスから、会員証明書や他のデータを送信することでユーザ認証を開始してもよい。会員証明書または他のデータは、人手でデータを入力することで、磁気カードやスマートカードを機械に通すことで、あるいはデバイス内にすでに保存されたデータを読み取ることのいずれかで、装置内に入力される。
【0172】
この点に関して、ユーザからの指示に応答して(S82)、クライアント端末装置604,705は、ユーザによるレンタル要求が送信された配布者との通信リンクを確立する(S84)。ステップ86において、配布者は、好適には、例えば、電子会員証を解析することで、および/または、その装置がユーザが入会した際に用いられた装置と同一である場合には、クライアント端末装置604,705の機器IDを解析することで、クライアント端末装置604,705を認証する。これは、クライアント端末装置604,705が、配布者に機器IDおよび/または電子会員証を要求し、正当であると示されたこれらの情報を有するデータベースに当該配布者がアクセスすることで実現される。
【0173】
ユーザに権限が与えられたとき、配布者は好適には、ネットワーク605,706を介して、クライアント端末装置604,705に、レンタルに利用可能なタイトルのリストやメニューを提供する(S88)。クライアント端末装置604,705上で実行されるコンピュータソフトウエアによれば、タイトルのリストやメニューのユーザへの表示を容易にでき、ユーザがタイトルを選択したり、レンタルした時間を特定したりできる(S90)。ユーザにより選択されたものおよび特定のレンタル時間は、好適には、ネットワーク605,706を介して配布者に送信される。
【0174】
ステップ92では、配布者は好適には、その特定された時間に対するコンピュータプログラムのレンタル費用分の支払い要求をユーザに対し行う。これは、クライアント端末装置604,705や他のデバイスのいずれかを用いて、例えば、クレジットカードナンバーや普通預金口座番号を送信する方法、あるいは請求書による方法などの、任意の既知の技術を用いることにより実現される。送金が行われると、配布者は、指定のタイトルおよびレンタル時間に対して送金がなされたことを示す電子支払いチケットを生成する(S94)。ステップ96において、配布者は好適には、クライアント端末装置604,705に、あるいは、ネットワーク605,706上の他のデバイスにその電子支払いチケットを送信する。
【0175】
電子支払いチケットは、配布者に提供される送金額と引き換えに、あるレベルのレンタルする権利をユーザ(あるいは、電子支払いチケットを取得するときのクライアント端末装置604,705)に提供するのが好ましい。例えば、そのレンタルする権利は、特定された、コンピュータプログラムのタイトル、レンタル時間や送金額に対して制限される。さらに、電子支払いチケットには、コンピュータプログラムを復号化できる復号鍵などの付加的な情報が含まれる。電子支払いチケットは必ずしも復号鍵を含む必要はなく、この例に示す方法によってのみ、含むものである。電子支払いチケットには、暗号化された状態の、例えば、機器IDや電子会員証の一部である他の情報(例えば、仮想IDのようなもの)を用いて暗号化された、復号鍵が含まれる。いすれの場合でも、処理のこの時点においては、ユーザはあるレベルのレンタルする権利を取得する一方、コンピュータプログラムまたは暗号化された状態のコンピュータプログラムについては未取得である。
【0176】
処理のこの段階においては、クライアント端末装置604,705や他のデバイスは、あるタイトルの所定の時間に対する支払いが完了したことを示す電子支払いチケットを有し、さらにユーザの電子会員証をも保持してもよい。図45によれば、クライアント端末装置604,705や他のデバイスは、ネットワーク605,706を介して、管理者サーバ601,704との通信リンクを確立することが好ましい(S98)。ステップ100において、管理者サーバ601,704は、機器IDおよび/または電子会員証により、クライアント端末装置604,705や他のデバイスを認証する。ここで、顧客データベース606,707などの適切なデータベースにアクセスすることで認証が実現される。ステップ102において、クライアント端末装置604,705や他のデバイスは、電子支払いチケットをネットワーク605,706を介して、管理者サーバ601,704に送信する。管理者サーバ601,704は、応答として、電子レンタルチケットを生成し(S104)、ネットワーク605,706を介して、クライアント端末装置604,705や他のデバイスに当該電子レンタルチケットを送信する(S106)。
【0177】
電子レンタルチケットは、電子支払いチケットにより与えられるレンタルする権利と同一のレベルの、または当該レベルを超えたレベルのレンタルする権利をユーザ(あるいは、クライアント端末装置604,705)に提供する。例えば、その電子レンタルチケットにより、コンピュータプログラムのタイトル、レンタル時間や送金額を特定できてもよいし、当該チケットは、(復号鍵が電子支払いチケット内に含まれないと想定すれば、)暗号化されたコンピュータプログラムを復号化できる復号鍵などの付加的な情報をも含んでもよい。電子レンタルチケットは必ずしも復号鍵を含む必要はなく、この例に示す方法によってのみ、含むものである。電子レンタルチケットには、暗号化された状態の、例えば、機器IDや電子会員証の一部である他の情報(例えば、仮想IDのようなもの)を用いて暗号化された、復号鍵が含まれる。いすれの場合でも、処理のこの時点においては、ユーザはあるレベルのレンタルする権利を取得する一方、コンピュータプログラムまたは暗号化された状態のコンピュータプログラムについては未取得である。
【0178】
図46によれば、クライアント端末装置604,705は、ネットワーク605,706を介して、配布者との通信リンクを確立することが好ましい(S108)。配布者は、応答として、上述の機器IDおよび/または電子会員証を解析する方法で、クライアント端末装置604,705を認証する(S110)。次に、クライアント端末装置604,705または他のデバイスは、例えば、ネットワーク605,706を介して、電子レンタルチケット(または、少なくとも一部分)を配布者に送信するのが好ましい(S112)。クライアント端末装置604,705や他のデバイスが、前のすべての必要なステップを完了したため、そのクライアント端末装置がレンタルされたコンピュータプログラムの暗号化されたバージョンを取得する権限を有することを配布者に提示するのが好ましい(S114)。処理のこの時点においては、クライアント端末装置604,705や他のデバイスは、機器ID、電子支払いチケット、電子レンタルチケット、暗号化された復号鍵、および暗号化されたコンピュータプログラムを有するのが好ましい。
【0179】
ユーザは、そのコンピュータプログラムを読み出し、インストールし、実行してもよいし、さらに、上述した実施の形態について上述した処理を用いて、クライアント端末装置の処理能力を調整してもよい。その結果、このレンタルシステムによれば、ネットワーク605,706を介して、どのクライアント端末装置604,705を用いても、ユーザにレンタルプログラムコンテンツを安全に配布できる。
【0180】
本発明もまた、ユーザが、任意の特定のデバイスには依存せずに実行可能な、特定のソフトウエアプログラム、または特定のバージョンのプログラムを実行する権利を購入することを対象にしたアプリケーションに適している。一例として、ユーザは、自身が所有するコンソール、他人が所有するコンソール、あるいは、そのようなコンソールを多く有する公共のゲームセンターに配置されたコンソール等の、任意のコンソール上で、ゲームプログラムや他のソフトウエアプログラムを実行する権利を購入できる。
【0181】
ユーザもまた、ディスクや他の記録媒体等の携帯可能なソフトウエア媒体に保存された、ゲームプログラムや他のソフトウエアプログラムのあるバージョンの複製物を有し、当該記録媒体から、自身のコンソール、他人のコンソール、またはゲームセンターのコンソール上にそのプログラムを複製してもよい。他に、ユーザは、あるバージョンのゲームプログラムや他のソフトウエアプログラムを実行する権利を有するだけでよい。いずれの場合でも、ユーザもまた、ユーザIDや電子証(仮想IDや仮想IDのようなもの)などの他の認証情報を有する。
【0182】
そのようなユーザが、自身のコンソール、他人のコンソール、またはゲームセンターのコンソール等のデバイス上で、ゲームプログラムや他のソフトウエアプログラムの実行を所望し、かつプログラムの複製物がすでにコンソール内に保存されている場合、コンソール上でプログラムを実行するために、および/または、コンソール上でのプログラムの適切な実行を可能にする、必要不可欠なソフトウエアおよび/またはデータモジュールを取得することを可能にするために、ユーザの認証情報が要求される。他として、ゲームプログラムや他のソフトウエアプログラムがユーザ自身のコンソール、他人のコンソール、またはゲームセンターのコンソール内に保存されていない場合、ユーザが購入した権利に関わるバージョンのプログラムをそのコンソールがダウンロードすることを可能にするために、および/または、その後、そのコンソールにとって適切なバージョンのソフトウエアを取得るために必要とされるソフトウエアおよび/またはデータモジュールを得るために、ユーザの認証情報が要求される。
【0183】
ユーザ認証は、図43ー図46を参照して上述した方法で実行される。すなわち、ユーザの携帯電話、PDAや他のデバイスなどの他の装置から認証情報を送信することで実行される。また、人手でデータを入力することで、磁気カードやスマートカードを機械に通すことで、あるいは、コンソールが自身のコンソールであれば、当該自身のコンソール内にすでに記録されたデータを読み取ることのいずれかで、そのコンソール内に入力された、会員証または他のデータを送信することで実行される。
【0184】
図11および図27を参照して上述したように、ユーザの認証情報は、一つ以上の管理者サーバ601,704、第3者サーバ602,701、配布サーバ703、またはいくつか他のサーバ(図示せず)に送信される。さらに、ユーザが所有する権利に関わるゲームプログラムや他のソフトウエアプログラム、および、当該ゲームプログラムや他のソフトウエアプログラムのコンソール上での適切な動作に必要なソフトウエアおよび/またはデータモジュールは、図5から図36までを参照した上述の方法で、一つ以上のサーバによりダウンロードされる。
【0185】
このように、ゲームプログラムや他のソフトウエアプログラムを実行する権利を有するユーザは、自身のコンソール、他人のコンソール、または、公共(ゲームセンター)のコンソールなどの任意のデバイス上で、そのコンソールにとって最も相応のバージョンのソフトウエアを用いて、プログラムを実行できる。
【0186】
以上、本発明を実施形態を参照して説明したが、これらの実施形態は本発明の原理および適用法を例示するにすぎない。従って、これら例示としての実施形態には多数の変形が可能であり、前掲の特許請求の範囲で規定される本発明の精神および範囲から逸脱することなく他の構成を考案することができる。
【図面の簡単な説明】
【0187】
【図1】ソフトウエアプログラムおよび当該プログラムが動作する処理システムの設計面の進化を、実施の形態に係る処理調整部あるいは複数の処理調整部を含めた形でグラフィカルに示す図である。
【図2A】実施の形態に係るプロセッサ要素(PE)の構成の一例を示す図である。
【図2B】実施の形態に係るPEのマルチプロセッシングシステムの構成の一例を示す図である。
【図3】実施の形態に係るサブ処理ユニット(SPU)の一例を示す図である。
【図4】実施の形態の1つ以上の態様に係るマルチプロセッサシステムの実装に適した他の構成を示す図である。
【図5】実施の形態の1つ以上の態様に係る処理能力を変化させるために、少なくとも部分的に処理システムにより実行される処理ステップを示すフロー図である。
【図6】実施の形態の1つ以上の態様に係るコンピュータネットワークの全体構成を示す図である。
【図7】図5の処理に関連するさらなる処理プロセスを示す図である。
【図8】実施の形態の1つ以上の態様に係るプロセッサ要素により使用される変換テーブルを示す図である。
【図9】実施の形態の1つ以上の態様に係る、ネットワーク通信および処理能力の変化を可能にする処理システムを示す図である。
【図10】図7の処理に関連するさらなる処理プロセスを示すフロー図である。
【図11】1以上のユーザに対し、ソフトウエアプログラムやパラメータ集合を配布するシステムの構成を示す図である。
【図12】図11のシステムの一部により実行されるある処理プロセスの概念構成およびフローを示す図である。
【図13】図11のシステムのある要素により実行されるさらなるステップの概念構成およびフローを示す図である。
【図14】図13で示されるものが実行されるある処理ステップを示すフロー図である。
【図15】例えば、図11の管理者サーバなどにより実行されるある処理ステップを示すフロー図である。
【図16】あるデータベースコンテンツの構成を示す図である。
【図17】図11のシステムの一部により実行されるある処理ステップの概念構成およびフローを示す図である。
【図18】図17に従って実行されるさらなる処理ステップを示すフロー図である。
【図19】例えば、図11のクライアント端末装置により実行される一つ以上のさらなる処理ステップを表す概念構成およびフローを示す図である。
【図20】図19に従って実行されるさらなる処理ステップを示すフロー図である。
【図21】さらなる処理ステップの概念構成およびフローを示す図である。
【図22】図21の処理ステップに関してさらなる詳細を示すフロー図である。
【図23】実行される他の処理ステップの概念構成およびフローを示す図である。
【図24】図23の処理ステップに関してさらなる詳細を示すフロー図である。
【図25】図23の他の概念に従うさらなる処理ステップの概念構成およびフローを示す図である。
【図26】図25の処理ステップに関してさらなる詳細を示すフロー図である。
【図27】1以上のユーザに対してソフトウエアプログラムまたはパラメータ集合を配布するさらなるシステムの構成を示す図である。
【図28】図27のシステムの一部により実行されるある処理ステップの概念構成およびフローを示す図である。
【図29】図27のシステムの一部により実行される、さらなるある処理ステップの概念構成およびフローを示す図である。
【図30】図29に示されるものが実行されるある処理ステップを示すフロー図である。
【図31】例えば、図27の管理者サーバおよびクライアント端末により実行されるある処理ステップの概念構成およびフローを示す図である。
【図32】図31の装置により実行されるさらなる処理ステップを示すフロー図である。
【図33】あるデータベースコンテンツの構成を示す図である。
【図34】図27のシステムの一部により実行されるある処理ステップの概念構成およびフローを示す図である。
【図35】図34の装置により実行されるさらなる処理ステップを示すフロー図である。
【図36】あるデータベースコンテンツの構成を示す図である。
【図37】実施の形態の1つ以上の態様に係る処理能力を変化させるために、あるクロック周波数の変換を可能にするプロセッサ要素システムの構成を示す図である。
【図38】実施の形態の1つ以上の態様に係る処理能力を変化させるために、あるクロック周波数の変換を可能にする他のプロセッサ要素システムの構成を示す図である。
【図39】図12のあるクロック回路要素の他の構成を示す図である。
【図40】実施の形態の1つ以上の態様に係る、他の態様の処理能力の変化を可能にするさらなる他の処理システムを示す図である。
【図41】実施の形態の1つ以上の態様に係る、命令待ち時間および/またはスループットの調整可能な特性を示すフロー図である。
【図42】実施の形態の1つ以上の態様に係る、命令待ち時間および/またはスループットの調整可能な特性を示す他のフロー図である。
【図43】レンタルプログラムコンテンツの配布者が、安全にプログラムコンテンツを配布するための処理の一例のステップを示すフロー図である。
【図44】図43の処理のさらなるステップを示すフロー図である。
【図45】図44の処理のさらなるステップを示すフロー図である。
【図46】図45の処理のさらなるステップを示すフロー図である。
【符号の説明】
【0188】
104,110,116 ソフトウエアプログラム、 124,706 インターネット、 204 メイン処理ユニット、 208 サブ処理ユニット、 212 バス、 302 プロセッサ、 550 変換テーブル、 601 管理者サーバ、 605,706 ネットワーク、 610,710 システム。
【特許請求の範囲】
【請求項1】
ソフトウエアプログラムの実行を可能にする方法であって、
ソフトウエアプログラムのバージョンを示す識別情報を取得するステップと、
ソフトウエアプログラムを実行する少なくとも一つのプロセッサの処理能力が、当該ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定するステップと、
前記決定が肯定的であるとき、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
を含むことを特徴とする方法。
【請求項2】
前記識別情報は、光学ディスク媒体、磁気媒体および電子媒体の少なくとも一つを含む記録媒体内に保存され、前記取得するステップは、前記記録媒体から前記識別情報を取り出すことを特徴とする請求項1に記載の方法。
【請求項3】
前記ソフトウエアプログラムは前記識別情報を含み、前記取得するステップは、前記ソフトウエアプログラム内から前記識別情報を取得することを特徴とする請求項1に記載の方法。
【請求項4】
複数のソフトウエアプログラムのそれぞれに対応する識別情報に、前記少なくとも一つのプロセッサの処理能力に施される調整を示す一つ以上のパラメータを関連付けるテーブルにアクセスするステップと、
与えられた前記識別情報に関連付けられたパラメータを用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項5】
前記テーブルは、前記少なくとも一つのプロセッサと共通の場所にローカルに保存されるか、リモートに配置された管理者エンティティ内に保存されるか、当該リモートに配置された管理者エンティティによりアクセスされる別の場所に保存されるかの少なくとも一つの方法で保存されることを特徴とする請求項4に記載の方法。
【請求項6】
通信チャンネルを用いて、前記少なくとも一つのプロセッサおよび前記管理者エンティティ間にリンクを確立するステップと、
前記通信チャンネルを介して、前記少なくとも一つのプロセッサから前記管理者エンティティに前記識別情報を送信するステップと、
をさらに含むことを特徴とする請求項5に記載の方法。
【請求項7】
前記管理者エンティティは、前記テーブルにアクセスし、前記少なくとも一つのプロセッサの処理能力に施される調整を示す前記関連付けられた一つ以上のパラメータを取得することを特徴とする請求項6に記載の方法。
【請求項8】
前記通信チャンネルを介して、前記管理者エンティティから前記少なくとも一つのプロセッサに対して用いられる前記パラメータを取得するステップと、
与えられた前記識別情報に関連付けられたパラメータを用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
をさらに含むことを特徴とする請求項7に記載の方法。
【請求項9】
前記テーブルは、複数のソフトウエアプログラムのそれぞれに対応する識別情報のそれぞれに、複数の異なるプロセッサの処理能力に施される調整を示す複数のパラメータ集合をさらに関連付けることを特徴とする請求項4に記載の方法。
【請求項10】
前記少なくとも一つのプロセッサの処理能力に関する処理識別子を取得するステップと、
前記識別情報および前記識別子を用いて前記テーブルにアクセスし、前記少なくとも一つのプロセッサの処理能力に施される調整を示す一つのパラメータ集合を取得するステップと、
前記一つのパラメータ集合を用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
をさらに含むことを特徴とする請求項9に記載の方法。
【請求項11】
前記テーブルは、前記少なくとも一つのプロセッサと共通の場所にローカルに保存されるか、リモートに配置された管理者エンティティ内に保存されるか、当該リモートに配置された管理者エンティティによりアクセスされる別の場所に保存されるかの少なくとも一つの方法により保存されることを特徴とする請求項10に記載の方法。
【請求項12】
通信チャンネルを用いて、前記少なくとも一つのプロセッサおよび前記管理者エンティティ間にリンクを確立するステップと、
前記通信チャンネルを介して、前記少なくとも一つのプロセッサから前記管理者エンティティに前記識別情報を送信するステップと、
をさらに含むことを特徴とする請求項11に記載の方法。
【請求項13】
前記管理者エンティティは、前記識別情報および前記処理識別子を用いて前記テーブルにアクセスし、前記少なくとも一つのプロセッサに施される処理能力の調整を示す前記関連付けられたパラメータ集合を取得することを特徴とする請求項12に記載の方法。
【請求項14】
前記通信チャンネルを介して、前記管理者エンティティから前記少なくとも一つのプロセッサに対して用いられるパラメータ集合を取得するステップと、
与えられた前記識別情報および識別子に関連付けられたパラメータを用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
をさらに含むことを特徴とする請求項13に記載の方法。
【請求項15】
前記識別情報に応じて、前記通信チャンネルを介して、前記管理者エンティティから暗号化された復号鍵を取得するステップと、
前記暗号化された復号鍵を復号化するステップと、
前記復号化された復号鍵を用いて、前記関連づけられたパラメータを復号化するステップと、
をさらに含むことを特徴とする請求項14に記載の方法。
【請求項16】
前記識別情報に応じて、前記通信チャンネルを介して、前記管理者エンティティから暗号化された登録データを取得するステップと、
前記通信チャンネルを介して、配布者に前記登録データを送信するステップと、
前記送信された登録データに応じて、配布者からネットワークを介して、暗号化された復号鍵および暗号化された仮想IDを処理装置上で取得するステップと、
前記仮想IDを用いて、前記暗号化された復号鍵を復号化するステップと、
前記復号化された復号鍵を用いて、前記関連づけられたパラメータを復号化するステップと、
をさらに含むことを特徴とする請求項14に記載の方法。
【請求項17】
管理者エンティティからアクティベートされていない復号鍵を取得するステップと、
前記通信チャンネルを介して、前記管理者エンティティにアクティベート要求を送信し、当該アクティベート要求に応じて、前記管理者エンティティからアクティベート許可情報を前記通信チャンネルを介して取得するステップと、
前記アクティベート許可情報に応じて、前記アクティベートされていない復号鍵をアクティベートされた復号鍵に変換するステップと、
前記アクティベートされた復号鍵を用いて、前記関連づけられたパラメータを復号化するステップと、
をさらに含むことを特徴とする請求項14に記載の方法。
【請求項18】
前記少なくとも一つのプロセッサは、(i)処理タスクを実行できる複数のサブ処理ユニットと、(ii)少なくともいくつかの管理処理タスクを前記サブ処理ユニットに対して実行できるメイン処理ユニットと、(iii)前記サブ処理ユニットおよび前記メイン処理ユニットを動作可能に接続するデータバスと、を含むことを特徴とする請求項1に記載の方法。
【請求項19】
前記サブ処理ユニットまたは前記メイン処理ユニットが、前記ソフトウエアプログラムをより望ましい結果が得られる程度に実行させるために必要とされる処理能力以上の処理能力を有する場合、前記サブ処理ユニットまたは前記メイン処理ユニットの処理能力は下方に調整され、一方、前記サブ処理ユニットまたは前記メイン処理ユニットが、前記ソフトウエアプログラムをより望ましい結果が得られる程度に実行させるために必要とされる処理能力以下の処理能力を有する場合、前記サブ処理ユニットまたは前記メイン処理ユニットの処理能力は上方に調整されることを特徴とする請求項18に記載の方法。
【請求項20】
前記少なくとも一つのサブ処理ユニットの処理特性を調整し、当該処理特性を用いて前記ソフトウエアプログラムを実行するステップと、
より高いまたはより低い処理特性を有し他の処理タスクを実行できる、少なくとも一つの他のサブ処理ユニットについては、処理特性の調整をスキップするステップと、
をさらに含むことを特徴とする請求項18に記載の方法。
【請求項21】
前記調整するステップは、前記メイン処理ユニット、サブ処理ユニット、およびデータバスの少なくとも一つのクロック周波数を他のユニットの周波数とは異なる周波数に調整するステップを含むことを特徴とする請求項18に記載の方法。
【請求項22】
前記調整するステップは、前記少なくとも一つのプロセッサの周波数を少なくとも変化させることを特徴とする請求項1に記載の方法。
【請求項23】
前記調整するステップは、前記少なくとも一つのプロセッサのデータバスのバスの利用率を少なくとも変化させるものであり、当該データバスのバスの利用率は、前記少なくとも一つのプロセッサの処理能力を調整するために、前記少なくとも一つのプロセッサによるデータバスへのアクセスの変化により変えられることを特徴とする請求項1に記載の方法。
【請求項24】
前記調整するステップは、データバスのビット数を増減して調整することで、前記少なくとも一つのプロセッサのデータバスのバンド幅を少なくとも変化させるものであり、当該変化に応じて前記少なくとも一つのプロセッサの処理能力が調整されることを特徴とする請求項1に記載の方法。
【請求項25】
前記データバスのビット数は、128ビット、64ビット、32ビット、16ビット、および8ビットのいずれかに調整されることを特徴とする請求項24に記載の方法。
【請求項26】
前記少なくとも一つのプロセッサの少なくとも一つのローカルメモリは、一つ以上のデータキャッシュとして動作し、前記調整するステップは、当該データキャッシュのキャッシュサイズを変化させることで、前記少なくとも一つのプロセッサの処理能力を変化させることを特徴とする請求項1に記載の方法。
【請求項27】
前記調整するステップは、前記少なくとも一つのプロセッサのキャッシュサイズを他のプロセッサとは異なるサイズに調整することを特徴とする請求項1に記載の方法。
【請求項28】
前記少なくとも一つのプロセッサの少なくとも一つのローカルメモリは一つ以上のデータキャッシュとして動作し、前記調整するステップはデータキャッシュのキャッシュ構造を変化させることで、前記少なくとも一つのプロセッサの処理能力を調整することを特徴とする請求項1に記載の方法。
【請求項29】
前記調整するステップは、前記データキャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つを調整することを特徴とする請求項28に記載の方法。
【請求項30】
前記調整するステップは、前記少なくとも一つのプロセッサのキャッシュ構造を他のプロセッサのキャッシュ構造とは異なるキャッシュ構造に調整することを特徴とする請求項1に記載の方法。
【請求項31】
メインメモリは、前記少なくとも一つのプロセッサによりアクセス可能であるとともに、前記少なくとも一つのプロセッサに対しデータキャッシュとして動作可能であって、前記調整するステップは、前記データキャッシュのキャッシュサイズを変化させることで、前記少なくとも一つのプロセッサの処理能力を調整することを特徴とする請求項1に記載の方法。
【請求項32】
メインメモリは、前記少なくとも一つのプロセッサによりアクセス可能であるとともに、前記少なくとも一つのプロセッサに対しデータキャッシュとして動作可能であって、前記調整するステップは、前記データキャッシュのキャッシュ構造を変化させることで、前記少なくとも一つのプロセッサの処理能力を調整することを特徴とする請求項1に記載の方法。
【請求項33】
前記調整するステップは、前記キャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つを調整することを特徴とする請求項32に記載の方法。
【請求項34】
前記調整するステップは、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に遅延時間を要求しまたは除外することによって、前記少なくとも一つのプロセッサの命令待ち時間を調整し、当該調整に応じて前記少なくとも一つのプロセッサの処理能力が調整されることを特徴とする請求項1に記載の方法。
【請求項35】
前記遅延時間は、前記ライトバックシーケンスおよび次の命令フェッチシーケンス間に存在することを特徴とする請求項34に記載の方法。
【請求項36】
前記調整するステップは、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に一つ以上のノーオペレーションシーケンスを挿入しまたは削除することによって、前記少なくとも一つのプロセッサの命令スループットを調整し、当該調整に応じて前記少なくとも一つのプロセッサの処理能力が調整されることを特徴とする請求項1に記載の方法。
【請求項37】
前記ノーオペレーションシーケンスは、前記実行シーケンスおよび前記ライトバックシーケンス間に存在することを特徴とする請求項36に記載の方法。
【請求項38】
メインメモリは前記少なくとも一つのプロセッサによりアクセス可能であり、前記調整するステップは、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み取りシーケンスとデータ書き込みシーケンスのうちの一つ、の少なくとも一つのシーケンス間に遅延時間を要求しまたは削除することによって、前記少なくとも一つのメモリ待ち時間を調整し、当該調整に応じて前記少なくとも一つのプロセッサの処理能力が調整されることを特徴とする請求項1に記載の方法。
【請求項39】
メインメモリは前記少なくとも一つのプロセッサによりアクセス可能であり、前記調整するステップは、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み取りシーケンスとデータ書き込みシーケンスのうちの一つ、の少なくとも一つのシーケンス間に一つ以上のノーオペレーションシーケンスを挿入しまたは削除することによって、前記少なくとも一つのメモリスループットを調整し、当該調整に応じて前記少なくとも一つのプロセッサの処理能力が調整されることを特徴とする請求項1に記載の方法。
【請求項40】
前記ソフトウエアプログラムはゲームプログラムを含むことを特徴とする請求項1に記載の方法。
【請求項41】
前記識別情報は、複数の処理デバイスのうちの任意の一つの処理デバイス上の前記ソフトウエアプログラムを実行するためのユーザの権利を示すことを特徴とする請求項1に記載の方法。
【請求項42】
前記少なくとも一つのプロセッサの処理能力を調整するステップの前に、前記識別情報を用いて前記ソフトウエアプログラムのバージョンを取得するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項43】
前記ソフトウエアプログラムのバージョンは、前記少なくとも一つのプロセッサと共通の場所にローカルに保存されるか、リモートに配置された管理者エンティティ内に保存されるか、当該リモートに配置された管理者エンティティによりアクセスされる別の場所に保存されるかの少なくとも一つの方法により保存されることを特徴とする請求項42に記載の方法。
【請求項44】
通信チャンネルを用いて、前記少なくとも一つのプロセッサおよび前記管理者エンティティ間にリンクを確立するステップと、
前記通信チャンネルを介して、前記少なくとも一つのプロセッサから管理者エンティティ宛てに前記識別情報を送信し、前記管理者エンティティは、当該識別情報を用いて前記ソフトウエアプログラムのバージョンを取得するステップと、
前記通信チャンネルを介して、前記管理者エンティティから前記少なくとも一つのプロセッサに対して用いられるソフトウエアプログラムのバージョンを受け取るステップと、
をさらに含むことを特徴とする請求項43に記載の方法。
【請求項45】
通信チャンネルを用いて、別のデバイスおよび前記管理者エンティティ間にリンクを確立するステップと、
前記通信チャンネルを介して、さらなるデバイスから管理者エンティティ宛てに前記識別情報を送信し、前記管理者エンティティは、当該識別情報を用いて前記ソフトウエアプログラムのバージョンを取得するステップと、
前記通信チャンネルを介して、前記管理者エンティティから前記少なくとも一つのプロセッサに対して用いられるソフトウエアプログラムのバージョンを取得するステップと、
をさらに含むことを特徴とする請求項43に記載の方法。
【請求項46】
処理タスクをそれぞれ実行可能な複数のサブ処理ユニットと、
少なくともいくつかの管理処理タスクを前記サブ処理ユニットに対して実行可能なメイン処理ユニットと、
前記サブ処理ユニットと前記メイン処理ユニットとを動作可能に接続するデータバスと、
を備え、
前記サブ処理ユニットおよび前記メイン処理ユニットのうち少なくとも一つは、(i)ソフトウエアプログラムのバージョンを示す識別情報を取得し、(ii)前記サブ処理ユニットまたは前記メイン処理ユニットの処理能力が、前記ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定し、(iii)前記決定が肯定的であるとき、前記処理能力の調整を可能にすることを特徴とする処理システム。
【請求項47】
当該処理システムは複数の処理デバイスを備え、
当該複数の処理デバイスのそれぞれは、
処理タスクをそれぞれ実行することが可能である複数のサブ処理ユニットと、
少なくともいくつかの管理処理タスクを前記サブ処理ユニットに対して実行可能なメイン処理ユニットと、
前記サブ処理ユニットと前記メイン処理ユニットとを動作可能に接続するデータバスと、
リモートに配置された管理者エンティティと、
前記複数の処理デバイスのそれぞれと前記管理者エンティティとの間に通信リンクを提供可能な通信チャンネルと、
を備え、
前記複数の処理デバイスのそれぞれのメイン処理ユニットおよびサブ処理ユニットのうち少なくとも一つは、(i)ソフトウエアプログラムのバージョンを示す識別情報を取得し、(ii)前記サブ処理ユニットまたは前記メイン処理ユニットの処理能力が、前記ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定し、(iii)前記決定が肯定的であるとき、前記通信チャンネルを介して、前記識別情報と当該処理デバイスに関連付けられた少なくとも一つの識別子とを前記管理者エンティティ宛てに送信するようにさらに機能し、
前記管理者エンティティは、(i)前記識別情報と少なくとも一つの識別子とを用いて、前記処理能力の調整を可能にする一つ以上のパラメータを取得し、(ii)前記一つ以上のパラメータを、前記関連づけられた処理デバイスのメイン処理ユニットおよびサブ処理ユニットのうち少なくとも一つに送信するようにさらに機能し、
前記決定が肯定的であるとき、前記関連づけられた処理デバイスのメイン処理ユニットおよびサブ処理ユニットのうち少なくとも一つは、前記処理ユニットの処理能力の調整をするようにさらに機能することを特徴とするシステム。
【請求項48】
ソフトウエアプログラムを実行する少なくとも一つのプロセッサの調整された処理能力が記録された記録媒体であって、当該処理能力の調整はソフトウエアプログラムの実行を可能にする方法によって行われるものであり、
当該方法は、
ソフトウエアプログラムのバージョンを取得するステップと、
ソフトウエアプログラムのバージョンを示す識別情報を取得するステップと、
前記少なくとも一つのプロセッサの処理能力が、当該ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定するステップと、
前記決定が肯定的であるとき、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
前記ソフトウエアプログラムのバージョンと前記少なくとも一つのプロセッサの調整された処理能力とを当該記録媒体上に記録するステップと、
を含むことを特徴とする記録媒体。
【請求項49】
第2のソフトウエアプログラムを実行できる方法を実施するための第1のソフトウエアプログラムが記録された記録媒体であって、
当該方法は、
前記第2のソフトウエアプログラムのバージョンを示す識別情報を取得するステップと、
当該ソフトウエアプログラムを実行する少なくとも一つのプロセッサの処理能力が、当該ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定するステップと、
前記決定が肯定的であるとき、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
を含むことを特徴とする記録媒体。
【請求項50】
ソフトウエアプログラムの実行を可能とする装置であって、
ソフトウエアプログラムのバージョンを示す識別情報を取得する手段と、
ソフトウエアプログラムを実行する少なくとも一つのプロセッサの処理能力が、当該ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定する手段と、
前記決定が肯定的であるとき、前記少なくとも一つのプロセッサの処理能力を調整する手段と、
を備えることを特徴とする装置。
【請求項1】
ソフトウエアプログラムの実行を可能にする方法であって、
ソフトウエアプログラムのバージョンを示す識別情報を取得するステップと、
ソフトウエアプログラムを実行する少なくとも一つのプロセッサの処理能力が、当該ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定するステップと、
前記決定が肯定的であるとき、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
を含むことを特徴とする方法。
【請求項2】
前記識別情報は、光学ディスク媒体、磁気媒体および電子媒体の少なくとも一つを含む記録媒体内に保存され、前記取得するステップは、前記記録媒体から前記識別情報を取り出すことを特徴とする請求項1に記載の方法。
【請求項3】
前記ソフトウエアプログラムは前記識別情報を含み、前記取得するステップは、前記ソフトウエアプログラム内から前記識別情報を取得することを特徴とする請求項1に記載の方法。
【請求項4】
複数のソフトウエアプログラムのそれぞれに対応する識別情報に、前記少なくとも一つのプロセッサの処理能力に施される調整を示す一つ以上のパラメータを関連付けるテーブルにアクセスするステップと、
与えられた前記識別情報に関連付けられたパラメータを用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
をさらに含むことを特徴とする請求項1に記載の方法。
【請求項5】
前記テーブルは、前記少なくとも一つのプロセッサと共通の場所にローカルに保存されるか、リモートに配置された管理者エンティティ内に保存されるか、当該リモートに配置された管理者エンティティによりアクセスされる別の場所に保存されるかの少なくとも一つの方法で保存されることを特徴とする請求項4に記載の方法。
【請求項6】
通信チャンネルを用いて、前記少なくとも一つのプロセッサおよび前記管理者エンティティ間にリンクを確立するステップと、
前記通信チャンネルを介して、前記少なくとも一つのプロセッサから前記管理者エンティティに前記識別情報を送信するステップと、
をさらに含むことを特徴とする請求項5に記載の方法。
【請求項7】
前記管理者エンティティは、前記テーブルにアクセスし、前記少なくとも一つのプロセッサの処理能力に施される調整を示す前記関連付けられた一つ以上のパラメータを取得することを特徴とする請求項6に記載の方法。
【請求項8】
前記通信チャンネルを介して、前記管理者エンティティから前記少なくとも一つのプロセッサに対して用いられる前記パラメータを取得するステップと、
与えられた前記識別情報に関連付けられたパラメータを用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
をさらに含むことを特徴とする請求項7に記載の方法。
【請求項9】
前記テーブルは、複数のソフトウエアプログラムのそれぞれに対応する識別情報のそれぞれに、複数の異なるプロセッサの処理能力に施される調整を示す複数のパラメータ集合をさらに関連付けることを特徴とする請求項4に記載の方法。
【請求項10】
前記少なくとも一つのプロセッサの処理能力に関する処理識別子を取得するステップと、
前記識別情報および前記識別子を用いて前記テーブルにアクセスし、前記少なくとも一つのプロセッサの処理能力に施される調整を示す一つのパラメータ集合を取得するステップと、
前記一つのパラメータ集合を用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
をさらに含むことを特徴とする請求項9に記載の方法。
【請求項11】
前記テーブルは、前記少なくとも一つのプロセッサと共通の場所にローカルに保存されるか、リモートに配置された管理者エンティティ内に保存されるか、当該リモートに配置された管理者エンティティによりアクセスされる別の場所に保存されるかの少なくとも一つの方法により保存されることを特徴とする請求項10に記載の方法。
【請求項12】
通信チャンネルを用いて、前記少なくとも一つのプロセッサおよび前記管理者エンティティ間にリンクを確立するステップと、
前記通信チャンネルを介して、前記少なくとも一つのプロセッサから前記管理者エンティティに前記識別情報を送信するステップと、
をさらに含むことを特徴とする請求項11に記載の方法。
【請求項13】
前記管理者エンティティは、前記識別情報および前記処理識別子を用いて前記テーブルにアクセスし、前記少なくとも一つのプロセッサに施される処理能力の調整を示す前記関連付けられたパラメータ集合を取得することを特徴とする請求項12に記載の方法。
【請求項14】
前記通信チャンネルを介して、前記管理者エンティティから前記少なくとも一つのプロセッサに対して用いられるパラメータ集合を取得するステップと、
与えられた前記識別情報および識別子に関連付けられたパラメータを用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
をさらに含むことを特徴とする請求項13に記載の方法。
【請求項15】
前記識別情報に応じて、前記通信チャンネルを介して、前記管理者エンティティから暗号化された復号鍵を取得するステップと、
前記暗号化された復号鍵を復号化するステップと、
前記復号化された復号鍵を用いて、前記関連づけられたパラメータを復号化するステップと、
をさらに含むことを特徴とする請求項14に記載の方法。
【請求項16】
前記識別情報に応じて、前記通信チャンネルを介して、前記管理者エンティティから暗号化された登録データを取得するステップと、
前記通信チャンネルを介して、配布者に前記登録データを送信するステップと、
前記送信された登録データに応じて、配布者からネットワークを介して、暗号化された復号鍵および暗号化された仮想IDを処理装置上で取得するステップと、
前記仮想IDを用いて、前記暗号化された復号鍵を復号化するステップと、
前記復号化された復号鍵を用いて、前記関連づけられたパラメータを復号化するステップと、
をさらに含むことを特徴とする請求項14に記載の方法。
【請求項17】
管理者エンティティからアクティベートされていない復号鍵を取得するステップと、
前記通信チャンネルを介して、前記管理者エンティティにアクティベート要求を送信し、当該アクティベート要求に応じて、前記管理者エンティティからアクティベート許可情報を前記通信チャンネルを介して取得するステップと、
前記アクティベート許可情報に応じて、前記アクティベートされていない復号鍵をアクティベートされた復号鍵に変換するステップと、
前記アクティベートされた復号鍵を用いて、前記関連づけられたパラメータを復号化するステップと、
をさらに含むことを特徴とする請求項14に記載の方法。
【請求項18】
前記少なくとも一つのプロセッサは、(i)処理タスクを実行できる複数のサブ処理ユニットと、(ii)少なくともいくつかの管理処理タスクを前記サブ処理ユニットに対して実行できるメイン処理ユニットと、(iii)前記サブ処理ユニットおよび前記メイン処理ユニットを動作可能に接続するデータバスと、を含むことを特徴とする請求項1に記載の方法。
【請求項19】
前記サブ処理ユニットまたは前記メイン処理ユニットが、前記ソフトウエアプログラムをより望ましい結果が得られる程度に実行させるために必要とされる処理能力以上の処理能力を有する場合、前記サブ処理ユニットまたは前記メイン処理ユニットの処理能力は下方に調整され、一方、前記サブ処理ユニットまたは前記メイン処理ユニットが、前記ソフトウエアプログラムをより望ましい結果が得られる程度に実行させるために必要とされる処理能力以下の処理能力を有する場合、前記サブ処理ユニットまたは前記メイン処理ユニットの処理能力は上方に調整されることを特徴とする請求項18に記載の方法。
【請求項20】
前記少なくとも一つのサブ処理ユニットの処理特性を調整し、当該処理特性を用いて前記ソフトウエアプログラムを実行するステップと、
より高いまたはより低い処理特性を有し他の処理タスクを実行できる、少なくとも一つの他のサブ処理ユニットについては、処理特性の調整をスキップするステップと、
をさらに含むことを特徴とする請求項18に記載の方法。
【請求項21】
前記調整するステップは、前記メイン処理ユニット、サブ処理ユニット、およびデータバスの少なくとも一つのクロック周波数を他のユニットの周波数とは異なる周波数に調整するステップを含むことを特徴とする請求項18に記載の方法。
【請求項22】
前記調整するステップは、前記少なくとも一つのプロセッサの周波数を少なくとも変化させることを特徴とする請求項1に記載の方法。
【請求項23】
前記調整するステップは、前記少なくとも一つのプロセッサのデータバスのバスの利用率を少なくとも変化させるものであり、当該データバスのバスの利用率は、前記少なくとも一つのプロセッサの処理能力を調整するために、前記少なくとも一つのプロセッサによるデータバスへのアクセスの変化により変えられることを特徴とする請求項1に記載の方法。
【請求項24】
前記調整するステップは、データバスのビット数を増減して調整することで、前記少なくとも一つのプロセッサのデータバスのバンド幅を少なくとも変化させるものであり、当該変化に応じて前記少なくとも一つのプロセッサの処理能力が調整されることを特徴とする請求項1に記載の方法。
【請求項25】
前記データバスのビット数は、128ビット、64ビット、32ビット、16ビット、および8ビットのいずれかに調整されることを特徴とする請求項24に記載の方法。
【請求項26】
前記少なくとも一つのプロセッサの少なくとも一つのローカルメモリは、一つ以上のデータキャッシュとして動作し、前記調整するステップは、当該データキャッシュのキャッシュサイズを変化させることで、前記少なくとも一つのプロセッサの処理能力を変化させることを特徴とする請求項1に記載の方法。
【請求項27】
前記調整するステップは、前記少なくとも一つのプロセッサのキャッシュサイズを他のプロセッサとは異なるサイズに調整することを特徴とする請求項1に記載の方法。
【請求項28】
前記少なくとも一つのプロセッサの少なくとも一つのローカルメモリは一つ以上のデータキャッシュとして動作し、前記調整するステップはデータキャッシュのキャッシュ構造を変化させることで、前記少なくとも一つのプロセッサの処理能力を調整することを特徴とする請求項1に記載の方法。
【請求項29】
前記調整するステップは、前記データキャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つを調整することを特徴とする請求項28に記載の方法。
【請求項30】
前記調整するステップは、前記少なくとも一つのプロセッサのキャッシュ構造を他のプロセッサのキャッシュ構造とは異なるキャッシュ構造に調整することを特徴とする請求項1に記載の方法。
【請求項31】
メインメモリは、前記少なくとも一つのプロセッサによりアクセス可能であるとともに、前記少なくとも一つのプロセッサに対しデータキャッシュとして動作可能であって、前記調整するステップは、前記データキャッシュのキャッシュサイズを変化させることで、前記少なくとも一つのプロセッサの処理能力を調整することを特徴とする請求項1に記載の方法。
【請求項32】
メインメモリは、前記少なくとも一つのプロセッサによりアクセス可能であるとともに、前記少なくとも一つのプロセッサに対しデータキャッシュとして動作可能であって、前記調整するステップは、前記データキャッシュのキャッシュ構造を変化させることで、前記少なくとも一つのプロセッサの処理能力を調整することを特徴とする請求項1に記載の方法。
【請求項33】
前記調整するステップは、前記キャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つを調整することを特徴とする請求項32に記載の方法。
【請求項34】
前記調整するステップは、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に遅延時間を要求しまたは除外することによって、前記少なくとも一つのプロセッサの命令待ち時間を調整し、当該調整に応じて前記少なくとも一つのプロセッサの処理能力が調整されることを特徴とする請求項1に記載の方法。
【請求項35】
前記遅延時間は、前記ライトバックシーケンスおよび次の命令フェッチシーケンス間に存在することを特徴とする請求項34に記載の方法。
【請求項36】
前記調整するステップは、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に一つ以上のノーオペレーションシーケンスを挿入しまたは削除することによって、前記少なくとも一つのプロセッサの命令スループットを調整し、当該調整に応じて前記少なくとも一つのプロセッサの処理能力が調整されることを特徴とする請求項1に記載の方法。
【請求項37】
前記ノーオペレーションシーケンスは、前記実行シーケンスおよび前記ライトバックシーケンス間に存在することを特徴とする請求項36に記載の方法。
【請求項38】
メインメモリは前記少なくとも一つのプロセッサによりアクセス可能であり、前記調整するステップは、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み取りシーケンスとデータ書き込みシーケンスのうちの一つ、の少なくとも一つのシーケンス間に遅延時間を要求しまたは削除することによって、前記少なくとも一つのメモリ待ち時間を調整し、当該調整に応じて前記少なくとも一つのプロセッサの処理能力が調整されることを特徴とする請求項1に記載の方法。
【請求項39】
メインメモリは前記少なくとも一つのプロセッサによりアクセス可能であり、前記調整するステップは、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み取りシーケンスとデータ書き込みシーケンスのうちの一つ、の少なくとも一つのシーケンス間に一つ以上のノーオペレーションシーケンスを挿入しまたは削除することによって、前記少なくとも一つのメモリスループットを調整し、当該調整に応じて前記少なくとも一つのプロセッサの処理能力が調整されることを特徴とする請求項1に記載の方法。
【請求項40】
前記ソフトウエアプログラムはゲームプログラムを含むことを特徴とする請求項1に記載の方法。
【請求項41】
前記識別情報は、複数の処理デバイスのうちの任意の一つの処理デバイス上の前記ソフトウエアプログラムを実行するためのユーザの権利を示すことを特徴とする請求項1に記載の方法。
【請求項42】
前記少なくとも一つのプロセッサの処理能力を調整するステップの前に、前記識別情報を用いて前記ソフトウエアプログラムのバージョンを取得するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項43】
前記ソフトウエアプログラムのバージョンは、前記少なくとも一つのプロセッサと共通の場所にローカルに保存されるか、リモートに配置された管理者エンティティ内に保存されるか、当該リモートに配置された管理者エンティティによりアクセスされる別の場所に保存されるかの少なくとも一つの方法により保存されることを特徴とする請求項42に記載の方法。
【請求項44】
通信チャンネルを用いて、前記少なくとも一つのプロセッサおよび前記管理者エンティティ間にリンクを確立するステップと、
前記通信チャンネルを介して、前記少なくとも一つのプロセッサから管理者エンティティ宛てに前記識別情報を送信し、前記管理者エンティティは、当該識別情報を用いて前記ソフトウエアプログラムのバージョンを取得するステップと、
前記通信チャンネルを介して、前記管理者エンティティから前記少なくとも一つのプロセッサに対して用いられるソフトウエアプログラムのバージョンを受け取るステップと、
をさらに含むことを特徴とする請求項43に記載の方法。
【請求項45】
通信チャンネルを用いて、別のデバイスおよび前記管理者エンティティ間にリンクを確立するステップと、
前記通信チャンネルを介して、さらなるデバイスから管理者エンティティ宛てに前記識別情報を送信し、前記管理者エンティティは、当該識別情報を用いて前記ソフトウエアプログラムのバージョンを取得するステップと、
前記通信チャンネルを介して、前記管理者エンティティから前記少なくとも一つのプロセッサに対して用いられるソフトウエアプログラムのバージョンを取得するステップと、
をさらに含むことを特徴とする請求項43に記載の方法。
【請求項46】
処理タスクをそれぞれ実行可能な複数のサブ処理ユニットと、
少なくともいくつかの管理処理タスクを前記サブ処理ユニットに対して実行可能なメイン処理ユニットと、
前記サブ処理ユニットと前記メイン処理ユニットとを動作可能に接続するデータバスと、
を備え、
前記サブ処理ユニットおよび前記メイン処理ユニットのうち少なくとも一つは、(i)ソフトウエアプログラムのバージョンを示す識別情報を取得し、(ii)前記サブ処理ユニットまたは前記メイン処理ユニットの処理能力が、前記ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定し、(iii)前記決定が肯定的であるとき、前記処理能力の調整を可能にすることを特徴とする処理システム。
【請求項47】
当該処理システムは複数の処理デバイスを備え、
当該複数の処理デバイスのそれぞれは、
処理タスクをそれぞれ実行することが可能である複数のサブ処理ユニットと、
少なくともいくつかの管理処理タスクを前記サブ処理ユニットに対して実行可能なメイン処理ユニットと、
前記サブ処理ユニットと前記メイン処理ユニットとを動作可能に接続するデータバスと、
リモートに配置された管理者エンティティと、
前記複数の処理デバイスのそれぞれと前記管理者エンティティとの間に通信リンクを提供可能な通信チャンネルと、
を備え、
前記複数の処理デバイスのそれぞれのメイン処理ユニットおよびサブ処理ユニットのうち少なくとも一つは、(i)ソフトウエアプログラムのバージョンを示す識別情報を取得し、(ii)前記サブ処理ユニットまたは前記メイン処理ユニットの処理能力が、前記ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定し、(iii)前記決定が肯定的であるとき、前記通信チャンネルを介して、前記識別情報と当該処理デバイスに関連付けられた少なくとも一つの識別子とを前記管理者エンティティ宛てに送信するようにさらに機能し、
前記管理者エンティティは、(i)前記識別情報と少なくとも一つの識別子とを用いて、前記処理能力の調整を可能にする一つ以上のパラメータを取得し、(ii)前記一つ以上のパラメータを、前記関連づけられた処理デバイスのメイン処理ユニットおよびサブ処理ユニットのうち少なくとも一つに送信するようにさらに機能し、
前記決定が肯定的であるとき、前記関連づけられた処理デバイスのメイン処理ユニットおよびサブ処理ユニットのうち少なくとも一つは、前記処理ユニットの処理能力の調整をするようにさらに機能することを特徴とするシステム。
【請求項48】
ソフトウエアプログラムを実行する少なくとも一つのプロセッサの調整された処理能力が記録された記録媒体であって、当該処理能力の調整はソフトウエアプログラムの実行を可能にする方法によって行われるものであり、
当該方法は、
ソフトウエアプログラムのバージョンを取得するステップと、
ソフトウエアプログラムのバージョンを示す識別情報を取得するステップと、
前記少なくとも一つのプロセッサの処理能力が、当該ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定するステップと、
前記決定が肯定的であるとき、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
前記ソフトウエアプログラムのバージョンと前記少なくとも一つのプロセッサの調整された処理能力とを当該記録媒体上に記録するステップと、
を含むことを特徴とする記録媒体。
【請求項49】
第2のソフトウエアプログラムを実行できる方法を実施するための第1のソフトウエアプログラムが記録された記録媒体であって、
当該方法は、
前記第2のソフトウエアプログラムのバージョンを示す識別情報を取得するステップと、
当該ソフトウエアプログラムを実行する少なくとも一つのプロセッサの処理能力が、当該ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定するステップと、
前記決定が肯定的であるとき、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
を含むことを特徴とする記録媒体。
【請求項50】
ソフトウエアプログラムの実行を可能とする装置であって、
ソフトウエアプログラムのバージョンを示す識別情報を取得する手段と、
ソフトウエアプログラムを実行する少なくとも一つのプロセッサの処理能力が、当該ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定する手段と、
前記決定が肯定的であるとき、前記少なくとも一つのプロセッサの処理能力を調整する手段と、
を備えることを特徴とする装置。
【図1】
【図2A】
【図2B】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図2A】
【図2B】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【公開番号】特開2006−92542(P2006−92542A)
【公開日】平成18年4月6日(2006.4.6)
【国際特許分類】
【出願番号】特願2005−271225(P2005−271225)
【出願日】平成17年9月16日(2005.9.16)
【出願人】(395015319)株式会社ソニー・コンピュータエンタテインメント (871)
【Fターム(参考)】
【公開日】平成18年4月6日(2006.4.6)
【国際特許分類】
【出願日】平成17年9月16日(2005.9.16)
【出願人】(395015319)株式会社ソニー・コンピュータエンタテインメント (871)
【Fターム(参考)】
[ Back to top ]