(57)【要約】【課題】  異なる処理能力を有する複数のマイクロプロセッサを備えた将来の処理ユニットを設計するにあたって、ソフトウエアプログラムの充実したサポートに関するいくつかの問題に取り組む一方、よりよい解決策、好適には、より多目的に使えて効果的でコスト効率のよい解決策を得るのが望ましい。【解決手段】  処理能力を調整する方法および装置は、記録媒体に記憶されたソフトウエアプログラムのバージョンを示す識別情報を取得し（Ｓ４０２）、ソフトウエアプログラムを実行する少なくとも一つのプロセッサの処理能力が、当該ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定し（Ｓ４０４）、その決定が肯定的である場合（Ｓ４０４のＹ）、一つ以上のプロセッサの処理能力を調整する。【選択図】  図５
2006092542.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウエアプログラムの実行を可能にする方法であって、
ソフトウエアプログラムのバージョンを示す識別情報を取得するステップと、
ソフトウエアプログラムを実行する少なくとも一つのプロセッサの処理能力が、当該ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定するステップと、
前記決定が肯定的であるとき、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
を含むことを特徴とする方法。
【請求項２】
前記識別情報は、光学ディスク媒体、磁気媒体および電子媒体の少なくとも一つを含む記録媒体内に保存され、前記取得するステップは、前記記録媒体から前記識別情報を取り出すことを特徴とする請求項１に記載の方法。
【請求項３】
前記ソフトウエアプログラムは前記識別情報を含み、前記取得するステップは、前記ソフトウエアプログラム内から前記識別情報を取得することを特徴とする請求項１に記載の方法。
【請求項４】
複数のソフトウエアプログラムのそれぞれに対応する識別情報に、前記少なくとも一つのプロセッサの処理能力に施される調整を示す一つ以上のパラメータを関連付けるテーブルにアクセスするステップと、
与えられた前記識別情報に関連付けられたパラメータを用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記テーブルは、前記少なくとも一つのプロセッサと共通の場所にローカルに保存されるか、リモートに配置された管理者エンティティ内に保存されるか、当該リモートに配置された管理者エンティティによりアクセスされる別の場所に保存されるかの少なくとも一つの方法で保存されることを特徴とする請求項４に記載の方法。
【請求項６】
通信チャンネルを用いて、前記少なくとも一つのプロセッサおよび前記管理者エンティティ間にリンクを確立するステップと、
前記通信チャンネルを介して、前記少なくとも一つのプロセッサから前記管理者エンティティに前記識別情報を送信するステップと、
をさらに含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記管理者エンティティは、前記テーブルにアクセスし、前記少なくとも一つのプロセッサの処理能力に施される調整を示す前記関連付けられた一つ以上のパラメータを取得することを特徴とする請求項６に記載の方法。
【請求項８】
前記通信チャンネルを介して、前記管理者エンティティから前記少なくとも一つのプロセッサに対して用いられる前記パラメータを取得するステップと、
与えられた前記識別情報に関連付けられたパラメータを用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
をさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記テーブルは、複数のソフトウエアプログラムのそれぞれに対応する識別情報のそれぞれに、複数の異なるプロセッサの処理能力に施される調整を示す複数のパラメータ集合をさらに関連付けることを特徴とする請求項４に記載の方法。
【請求項１０】
前記少なくとも一つのプロセッサの処理能力に関する処理識別子を取得するステップと、
前記識別情報および前記識別子を用いて前記テーブルにアクセスし、前記少なくとも一つのプロセッサの処理能力に施される調整を示す一つのパラメータ集合を取得するステップと、
前記一つのパラメータ集合を用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
をさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記テーブルは、前記少なくとも一つのプロセッサと共通の場所にローカルに保存されるか、リモートに配置された管理者エンティティ内に保存されるか、当該リモートに配置された管理者エンティティによりアクセスされる別の場所に保存されるかの少なくとも一つの方法により保存されることを特徴とする請求項１０に記載の方法。
【請求項１２】
通信チャンネルを用いて、前記少なくとも一つのプロセッサおよび前記管理者エンティティ間にリンクを確立するステップと、
前記通信チャンネルを介して、前記少なくとも一つのプロセッサから前記管理者エンティティに前記識別情報を送信するステップと、
をさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記管理者エンティティは、前記識別情報および前記処理識別子を用いて前記テーブルにアクセスし、前記少なくとも一つのプロセッサに施される処理能力の調整を示す前記関連付けられたパラメータ集合を取得することを特徴とする請求項１２に記載の方法。
【請求項１４】
前記通信チャンネルを介して、前記管理者エンティティから前記少なくとも一つのプロセッサに対して用いられるパラメータ集合を取得するステップと、
与えられた前記識別情報および識別子に関連付けられたパラメータを用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
をさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記識別情報に応じて、前記通信チャンネルを介して、前記管理者エンティティから暗号化された復号鍵を取得するステップと、
前記暗号化された復号鍵を復号化するステップと、
前記復号化された復号鍵を用いて、前記関連づけられたパラメータを復号化するステップと、
をさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記識別情報に応じて、前記通信チャンネルを介して、前記管理者エンティティから暗号化された登録データを取得するステップと、
前記通信チャンネルを介して、配布者に前記登録データを送信するステップと、
前記送信された登録データに応じて、配布者からネットワークを介して、暗号化された復号鍵および暗号化された仮想ＩＤを処理装置上で取得するステップと、
前記仮想ＩＤを用いて、前記暗号化された復号鍵を復号化するステップと、
前記復号化された復号鍵を用いて、前記関連づけられたパラメータを復号化するステップと、
をさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１７】
管理者エンティティからアクティベートされていない復号鍵を取得するステップと、
前記通信チャンネルを介して、前記管理者エンティティにアクティベート要求を送信し、当該アクティベート要求に応じて、前記管理者エンティティからアクティベート許可情報を前記通信チャンネルを介して取得するステップと、
前記アクティベート許可情報に応じて、前記アクティベートされていない復号鍵をアクティベートされた復号鍵に変換するステップと、
前記アクティベートされた復号鍵を用いて、前記関連づけられたパラメータを復号化するステップと、
をさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１８】
前記少なくとも一つのプロセッサは、（ｉ）処理タスクを実行できる複数のサブ処理ユニットと、（ｉｉ）少なくともいくつかの管理処理タスクを前記サブ処理ユニットに対して実行できるメイン処理ユニットと、（ｉｉｉ）前記サブ処理ユニットおよび前記メイン処理ユニットを動作可能に接続するデータバスと、を含むことを特徴とする請求項１に記載の方法。
【請求項１９】
前記サブ処理ユニットまたは前記メイン処理ユニットが、前記ソフトウエアプログラムをより望ましい結果が得られる程度に実行させるために必要とされる処理能力以上の処理能力を有する場合、前記サブ処理ユニットまたは前記メイン処理ユニットの処理能力は下方に調整され、一方、前記サブ処理ユニットまたは前記メイン処理ユニットが、前記ソフトウエアプログラムをより望ましい結果が得られる程度に実行させるために必要とされる処理能力以下の処理能力を有する場合、前記サブ処理ユニットまたは前記メイン処理ユニットの処理能力は上方に調整されることを特徴とする請求項１８に記載の方法。
【請求項２０】
前記少なくとも一つのサブ処理ユニットの処理特性を調整し、当該処理特性を用いて前記ソフトウエアプログラムを実行するステップと、
より高いまたはより低い処理特性を有し他の処理タスクを実行できる、少なくとも一つの他のサブ処理ユニットについては、処理特性の調整をスキップするステップと、
をさらに含むことを特徴とする請求項１８に記載の方法。
【請求項２１】
前記調整するステップは、前記メイン処理ユニット、サブ処理ユニット、およびデータバスの少なくとも一つのクロック周波数を他のユニットの周波数とは異なる周波数に調整するステップを含むことを特徴とする請求項１８に記載の方法。
【請求項２２】
前記調整するステップは、前記少なくとも一つのプロセッサの周波数を少なくとも変化させることを特徴とする請求項１に記載の方法。
【請求項２３】
前記調整するステップは、前記少なくとも一つのプロセッサのデータバスのバスの利用率を少なくとも変化させるものであり、当該データバスのバスの利用率は、前記少なくとも一つのプロセッサの処理能力を調整するために、前記少なくとも一つのプロセッサによるデータバスへのアクセスの変化により変えられることを特徴とする請求項１に記載の方法。
【請求項２４】
前記調整するステップは、データバスのビット数を増減して調整することで、前記少なくとも一つのプロセッサのデータバスのバンド幅を少なくとも変化させるものであり、当該変化に応じて前記少なくとも一つのプロセッサの処理能力が調整されることを特徴とする請求項１に記載の方法。
【請求項２５】
前記データバスのビット数は、１２８ビット、６４ビット、３２ビット、１６ビット、および８ビットのいずれかに調整されることを特徴とする請求項２４に記載の方法。
【請求項２６】
前記少なくとも一つのプロセッサの少なくとも一つのローカルメモリは、一つ以上のデータキャッシュとして動作し、前記調整するステップは、当該データキャッシュのキャッシュサイズを変化させることで、前記少なくとも一つのプロセッサの処理能力を変化させることを特徴とする請求項１に記載の方法。
【請求項２７】
前記調整するステップは、前記少なくとも一つのプロセッサのキャッシュサイズを他のプロセッサとは異なるサイズに調整することを特徴とする請求項１に記載の方法。
【請求項２８】
前記少なくとも一つのプロセッサの少なくとも一つのローカルメモリは一つ以上のデータキャッシュとして動作し、前記調整するステップはデータキャッシュのキャッシュ構造を変化させることで、前記少なくとも一つのプロセッサの処理能力を調整することを特徴とする請求項１に記載の方法。
【請求項２９】
前記調整するステップは、前記データキャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つを調整することを特徴とする請求項２８に記載の方法。
【請求項３０】
前記調整するステップは、前記少なくとも一つのプロセッサのキャッシュ構造を他のプロセッサのキャッシュ構造とは異なるキャッシュ構造に調整することを特徴とする請求項１に記載の方法。
【請求項３１】
メインメモリは、前記少なくとも一つのプロセッサによりアクセス可能であるとともに、前記少なくとも一つのプロセッサに対しデータキャッシュとして動作可能であって、前記調整するステップは、前記データキャッシュのキャッシュサイズを変化させることで、前記少なくとも一つのプロセッサの処理能力を調整することを特徴とする請求項１に記載の方法。
【請求項３２】
メインメモリは、前記少なくとも一つのプロセッサによりアクセス可能であるとともに、前記少なくとも一つのプロセッサに対しデータキャッシュとして動作可能であって、前記調整するステップは、前記データキャッシュのキャッシュ構造を変化させることで、前記少なくとも一つのプロセッサの処理能力を調整することを特徴とする請求項１に記載の方法。
【請求項３３】
前記調整するステップは、前記キャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つを調整することを特徴とする請求項３２に記載の方法。
【請求項３４】
前記調整するステップは、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に遅延時間を要求しまたは除外することによって、前記少なくとも一つのプロセッサの命令待ち時間を調整し、当該調整に応じて前記少なくとも一つのプロセッサの処理能力が調整されることを特徴とする請求項１に記載の方法。
【請求項３５】
前記遅延時間は、前記ライトバックシーケンスおよび次の命令フェッチシーケンス間に存在することを特徴とする請求項３４に記載の方法。
【請求項３６】
前記調整するステップは、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に一つ以上のノーオペレーションシーケンスを挿入しまたは削除することによって、前記少なくとも一つのプロセッサの命令スループットを調整し、当該調整に応じて前記少なくとも一つのプロセッサの処理能力が調整されることを特徴とする請求項１に記載の方法。
【請求項３７】
前記ノーオペレーションシーケンスは、前記実行シーケンスおよび前記ライトバックシーケンス間に存在することを特徴とする請求項３６に記載の方法。
【請求項３８】
メインメモリは前記少なくとも一つのプロセッサによりアクセス可能であり、前記調整するステップは、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み取りシーケンスとデータ書き込みシーケンスのうちの一つ、の少なくとも一つのシーケンス間に遅延時間を要求しまたは削除することによって、前記少なくとも一つのメモリ待ち時間を調整し、当該調整に応じて前記少なくとも一つのプロセッサの処理能力が調整されることを特徴とする請求項１に記載の方法。
【請求項３９】
メインメモリは前記少なくとも一つのプロセッサによりアクセス可能であり、前記調整するステップは、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み取りシーケンスとデータ書き込みシーケンスのうちの一つ、の少なくとも一つのシーケンス間に一つ以上のノーオペレーションシーケンスを挿入しまたは削除することによって、前記少なくとも一つのメモリスループットを調整し、当該調整に応じて前記少なくとも一つのプロセッサの処理能力が調整されることを特徴とする請求項１に記載の方法。
【請求項４０】
前記ソフトウエアプログラムはゲームプログラムを含むことを特徴とする請求項１に記載の方法。
【請求項４１】
前記識別情報は、複数の処理デバイスのうちの任意の一つの処理デバイス上の前記ソフトウエアプログラムを実行するためのユーザの権利を示すことを特徴とする請求項１に記載の方法。
【請求項４２】
前記少なくとも一つのプロセッサの処理能力を調整するステップの前に、前記識別情報を用いて前記ソフトウエアプログラムのバージョンを取得するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項４３】
前記ソフトウエアプログラムのバージョンは、前記少なくとも一つのプロセッサと共通の場所にローカルに保存されるか、リモートに配置された管理者エンティティ内に保存されるか、当該リモートに配置された管理者エンティティによりアクセスされる別の場所に保存されるかの少なくとも一つの方法により保存されることを特徴とする請求項４２に記載の方法。
【請求項４４】
通信チャンネルを用いて、前記少なくとも一つのプロセッサおよび前記管理者エンティティ間にリンクを確立するステップと、
前記通信チャンネルを介して、前記少なくとも一つのプロセッサから管理者エンティティ宛てに前記識別情報を送信し、前記管理者エンティティは、当該識別情報を用いて前記ソフトウエアプログラムのバージョンを取得するステップと、
前記通信チャンネルを介して、前記管理者エンティティから前記少なくとも一つのプロセッサに対して用いられるソフトウエアプログラムのバージョンを受け取るステップと、
をさらに含むことを特徴とする請求項４３に記載の方法。
【請求項４５】
通信チャンネルを用いて、別のデバイスおよび前記管理者エンティティ間にリンクを確立するステップと、
前記通信チャンネルを介して、さらなるデバイスから管理者エンティティ宛てに前記識別情報を送信し、前記管理者エンティティは、当該識別情報を用いて前記ソフトウエアプログラムのバージョンを取得するステップと、
前記通信チャンネルを介して、前記管理者エンティティから前記少なくとも一つのプロセッサに対して用いられるソフトウエアプログラムのバージョンを取得するステップと、
をさらに含むことを特徴とする請求項４３に記載の方法。
【請求項４６】
処理タスクをそれぞれ実行可能な複数のサブ処理ユニットと、
少なくともいくつかの管理処理タスクを前記サブ処理ユニットに対して実行可能なメイン処理ユニットと、
前記サブ処理ユニットと前記メイン処理ユニットとを動作可能に接続するデータバスと、
を備え、
前記サブ処理ユニットおよび前記メイン処理ユニットのうち少なくとも一つは、（ｉ）ソフトウエアプログラムのバージョンを示す識別情報を取得し、（ｉｉ）前記サブ処理ユニットまたは前記メイン処理ユニットの処理能力が、前記ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定し、（ｉｉｉ）前記決定が肯定的であるとき、前記処理能力の調整を可能にすることを特徴とする処理システム。
【請求項４７】
当該処理システムは複数の処理デバイスを備え、
当該複数の処理デバイスのそれぞれは、
処理タスクをそれぞれ実行することが可能である複数のサブ処理ユニットと、
少なくともいくつかの管理処理タスクを前記サブ処理ユニットに対して実行可能なメイン処理ユニットと、
前記サブ処理ユニットと前記メイン処理ユニットとを動作可能に接続するデータバスと、
リモートに配置された管理者エンティティと、
前記複数の処理デバイスのそれぞれと前記管理者エンティティとの間に通信リンクを提供可能な通信チャンネルと、
を備え、
前記複数の処理デバイスのそれぞれのメイン処理ユニットおよびサブ処理ユニットのうち少なくとも一つは、（ｉ）ソフトウエアプログラムのバージョンを示す識別情報を取得し、（ｉｉ）前記サブ処理ユニットまたは前記メイン処理ユニットの処理能力が、前記ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定し、（ｉｉｉ）前記決定が肯定的であるとき、前記通信チャンネルを介して、前記識別情報と当該処理デバイスに関連付けられた少なくとも一つの識別子とを前記管理者エンティティ宛てに送信するようにさらに機能し、
前記管理者エンティティは、（ｉ）前記識別情報と少なくとも一つの識別子とを用いて、前記処理能力の調整を可能にする一つ以上のパラメータを取得し、（ｉｉ）前記一つ以上のパラメータを、前記関連づけられた処理デバイスのメイン処理ユニットおよびサブ処理ユニットのうち少なくとも一つに送信するようにさらに機能し、
前記決定が肯定的であるとき、前記関連づけられた処理デバイスのメイン処理ユニットおよびサブ処理ユニットのうち少なくとも一つは、前記処理ユニットの処理能力の調整をするようにさらに機能することを特徴とするシステム。
【請求項４８】
ソフトウエアプログラムを実行する少なくとも一つのプロセッサの調整された処理能力が記録された記録媒体であって、当該処理能力の調整はソフトウエアプログラムの実行を可能にする方法によって行われるものであり、
当該方法は、
ソフトウエアプログラムのバージョンを取得するステップと、
ソフトウエアプログラムのバージョンを示す識別情報を取得するステップと、
前記少なくとも一つのプロセッサの処理能力が、当該ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定するステップと、
前記決定が肯定的であるとき、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
前記ソフトウエアプログラムのバージョンと前記少なくとも一つのプロセッサの調整された処理能力とを当該記録媒体上に記録するステップと、
を含むことを特徴とする記録媒体。
【請求項４９】
第２のソフトウエアプログラムを実行できる方法を実施するための第１のソフトウエアプログラムが記録された記録媒体であって、
当該方法は、
前記第２のソフトウエアプログラムのバージョンを示す識別情報を取得するステップと、
当該ソフトウエアプログラムを実行する少なくとも一つのプロセッサの処理能力が、当該ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定するステップと、
前記決定が肯定的であるとき、前記少なくとも一つのプロセッサの処理能力を調整するステップと、
を含むことを特徴とする記録媒体。
【請求項５０】
ソフトウエアプログラムの実行を可能とする装置であって、
ソフトウエアプログラムのバージョンを示す識別情報を取得する手段と、
ソフトウエアプログラムを実行する少なくとも一つのプロセッサの処理能力が、当該ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定する手段と、
前記決定が肯定的であるとき、前記少なくとも一つのプロセッサの処理能力を調整する手段と、
を備えることを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウエアプログラムがプロセッサ上で実行されるときに得られる結果を向上させるために、プロセッサの処理能力を調整する方法および装置に関する。
【背景技術】
【０００２】
家庭用および業務用のソフトウエアプログラムの設計に関するマーケティング・販売は、経済における発展分野および成長分野としての地位をいつも確保している。実際には、ソフトウエア開発者は、一見したところ飽くことがないと見える消費者の欲求を満たそうと、最新かつ向上したソフトウエアアプリケーションをしきりに模索している。ビデオゲーム、映画アニメーション、および特殊効果などのコンピュータグラフィックソフトウエアの分野ほどこのことが顕著である分野は他にはない。
【０００３】
より複雑で高性能なソフトウエアプログラムの進歩はこれまで、当該ソフトウエアプログラムが実行されるハードウエアの処理能力の進歩とともにあった。実際には、加算と減算のみが可能な４ビットプロセッサである、最初のマイクロプロセッサであるインテル社の４００４が１９７１年に発売されて以来、マイクロプロセッサの処理能力において驚くべき進歩がなされてきた。インテル社は１９７９年に８０８０マイクロプロセッサを発売し、当該プロセッサは、ＩＢＭ社のパーソナルコンピュータ内に組み込まれた。インテル社の８０８０マイクロプロセッサは、約２９０００個のトランジスタを５ＭＨｚのクロック速度で用いており、１秒間に３３万回の命令（ＭＩＰＳ）を実行できた。１９８２年から１９８９年まで、インテル社は８０２８６、８０３８６、８０４８６のマイクロプロセッサを発売した。インテル社の８０４８６のマイクロプロセッサは、１２０万個のトランジスタを２５ＭＨｚのクロック速度で使用しており、２０ＭＩＰＳを実現できた。１９９３年から２０００年まで、インテル社はＰｅｎｔｉｕｍ（登録商標）シリーズのマイクロプロセッサを発売した。Ｐｅｎｔｉｕｍ４のマイクロプロセッサは、４２００万個のトランジスタを１．５ＧＨｚのクロック速度で使用し、約１７０００ＭＩＰＳを実現できた。これらのデータによれば、ソフトウエアプログラムを実行するハードウエアのスピードおよびパワーは絶えず増加している（インテル社のＰｅｎｔｉｕｍ４は８０８８マイクロプロセッサよりも約５０００倍速く動作する）。この説明についてつけ加えると、より最新でより強力なマイクロプロセッサが現在でも開発され、約４ＧＨｚのクロック周波数でより高度なＭＩＰＳレベルを実現している。
【０００４】
リアルタイムマルチメディアアプリケーションの重要性は、より一層高まってきている。こうしたアプリケーションは、１秒間に数千メガビットといった極めて高速の処理速度を必要とする。高速処理は単独の処理装置でも可能だが、一般にはマルチプロセッサ構成の処理速度には追いつかない。実際、マルチプロセッサシステムでは、複数のプロセッサが並列に（または少なくとも協調して）動作して、所望の処理結果を達成できる。
【０００５】
マルチ処理技術を用いることのできるコンピュータおよびコンピューティングデバイスの種類は多岐にわたる。こうしたコンピューティングデバイスには、パーソナルコンピュータ（ＰＣ）およびサーバ以外に、携帯電話、モバイルコンピュータ、個人情報端末（ＰＤＡ）、セットトップボックス、ディジタルＴＶ、およびその他多数の装置が含まれる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
図１は、ソフトウエアプログラムおよび当該プログラムを実行するために用いられるハードウエアの対応する進化を示す。時代のある時点におけるハードウエアシステム１０２は、他のハードウエアシステム、例えば、ハードウエアシステム１０６やハードウエアシステム１１２ほど強力ではない。これらのハードウエアシステムでさえも、ハードウエアシステム１１８ほど強力ではない。また、ソフトウエアプログラム１０４（光学ディスク上に記録されているものとして示されている）は、当時存在するハードウエアシステム１０２上で実行されるよう設計された。例えば、ソフトウエアプログラム１０４は、例えば、インテル社の８０２８６マイクロプロセッサにより与えられた処理特性を有する処理ユニット上で実行されることを理解しつつ、記述されてきた。ソフトウエアプログラム１０４以後に設計され仕入れられたソフトウエアプログラム１１０は、例えば、インテル社の８０４８６マイクロプロセッサにより与えられた処理特性を有する処理ユニット上で実行されるよう設計されてきた。他の例として、ソフトウエアプログラム１１０は、１９９４年に発売された出願人自身のプレイステーション（登録商標）のゲームコンソールの処理特性を有する処理ユニット上で実行されるよう設計され開発されてきた。さらに、ソフトウエアプログラム１１６は、インテル社のＰｅｎｔｉｕｍ３のマイクロプロセッサにより与えられた処理特性を有する処理ユニット上で実行されるよう設計され開発されてきた。他の例として、ソフトウエアプログラム１１６は、とりわけビデオゲームソフトウエアプログラムを実行するよう設計された出願人自身のプレイステーション ２のコンソール上で実行されるよう設計され開発されてきた。
【０００７】
世間一般の通念では、ある処理特性を備える特定の処理ユニット上で実行されるために開発された任意のソフトウエアプログラムは、より上位の処理特性を備える他の処理ユニット上でも実行できるであろうことになっている。これは、多くの状況下では正しいものであるが、必ずしもそうでない場合がある。特に、ユーザがディスプレイ上でマルチメディアを体験できるようにソフトウエアプログラムが設計される場合がそうであり、例えば、ビデオゲームソフトウエアプログラムの場合が挙げられる。実際には、適度に高性能な処理ユニットのために設計されたソフトウエアプログラムを、十分に高度な処理能力を有する処理ユニット上で実行することは、結果として、動画における動オブジェクトが過度に高速になり、動画における音声要素と映像要素間の同期化の失敗に至る。一般的に、このような問題は、（並行処理を行うユニットである）プログラムスレッド間の相互依存性が保障されていない場合に顕著になる。
【０００８】
そのために特別に設計されたソフトウエアプログラム、およびさほど高性能でない処理ユニット上で実行されるよう設計されたソフトウエアプログラムの実行を可能にするあるユニット内に、特別な設計が施されなければ、ソフトウエアプログラムに関する充実したサポートを受けるために、ユーザは二つの別々の処理ユニットを維持しなければならない。このことの例外として、出願人自身のプレイステーションのコンソールと出願人自身のプレイステーション ２のコンソールが挙げられる。出願人自身のプレイステーション ２のコンソールは、複数のマイクロプロセッサを用いて、プレイステーションのコンソールのために特別に記述されたソフトウエアプログラム、およびプレイステーション ２のコンソールのために特別に記述されたソフトウエアプログラムに対処できる。より詳細には、出願人自身のプレイステーション ２のコンソールは、プレイステーションのコンソール内に検出されたマイクロプロセッサと協働して、プレイステーション用のビデオゲームソフトウエアプログラムを実行する。プレイステーション ２のコンソール内の他のマイクロプロセッサは、プレイステーション ２のコンソールのために特別に設計されたビデオゲームソフトウエアプログラムを実行するために用いられる。
【０００９】
異なる処理能力を有する複数のマイクロプロセッサを備えた将来の処理ユニットを設計するにあたって、ソフトウエアプログラムに関する充実したサポートに関するいくつかの問題に取り組む一方、よりよい解決策、好適には、より多目的に使えて効果的でコスト効率のよい解決策を得るのが望ましい。
【課題を解決するための手段】
【００１０】
本発明の１以上の態様によれば、ソフトウエアプログラムの実行を可能にする方法は、ソフトウエアプログラムのバージョンを示す識別情報を取得するステップと、ソフトウエアプログラムを実行する少なくとも一つのプロセッサの処理能力が、ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定するステップと、前記決定が肯定的であるとき、前記少なくとも一つのプロセッサの処理能力を調整するステップと、を含む。
【００１１】
前記識別情報は、光学ディスク媒体、磁気媒体および電子媒体等の記録媒体内に保存されてもよい。他に、前記ソフトウエアプログラムは前記識別情報を含み、当該識別情報は当該ソフトウエアプログラムから取得されてもよい。
【００１２】
前記処理能力を調整するために、例えば、前記少なくとも一つの処理ユニットのクロック周波数を変化させてもよい。他には、処理ユニットのメモリマップ、処理ユニットのデータバスのバス利用率、処理ユニットのデータバスのバンド幅、処理ユニットのキャッシュサイズ、処理ユニットのキャッシュ構造、処理ユニットの命令待ち時間、処理ユニットの命令スループット、処理ユニットのメモリ待ち時間、処理ユニットのメモリスループットを変化させてもよい。
【００１３】
当該方法は、複数のソフトウエアプログラムのそれぞれに対応する識別情報に、前記少なくとも一つのプロセッサの処理能力に施される調整を示す一つ以上のパラメータを関連付けるテーブルにアクセスするステップと、与えられた前記識別情報に関連付けられたパラメータを用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、をさらに含んでもよい。
【００１４】
前記テーブルは、前記少なくとも一つのプロセッサとともににローカルに保存されてもよいし、リモートに配置された管理者エンティティ（entity）内に保存されてもよいし、および／または、当該リモートに配置された管理者エンティティによりアクセスされる別の場所に保存されてもよい。前記テーブルが、リモートに保存された場合、当該方法は、さらに、通信チャンネルを用いて、前記少なくとも一つのプロセッサと前記管理者エンティティとの間にリンクを確立するステップと、前記通信チャンネルを介して、前記少なくとも一つのプロセッサから前記管理者エンティティに前記識別情報を送信するステップと、をさらに含んでもよい。前記管理者エンティティは、前記テーブルにアクセスし、前記少なくとも一つのプロセッサの処理能力に施される調整を示す前記関連付けられた一つ以上のパラメータを取得してもよい。その後、当該方法は、前記通信チャンネルを介して、前記管理者エンティティから前記少なくとも一つのプロセッサのパラメータを取得するステップと、ある識別情報に関連付けられたパラメータを用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、をさらに含んでもよい。
【００１５】
前記テーブルは、複数のソフトウエアプログラムのそれぞれに対応する識別情報に、複数の異なるプロセッサの処理能力に施される調整を示す複数のパラメータ集合をそれぞれさらに関連付けてもよい。この点に関連して、当該方法は、前記少なくとも一つのプロセッサの処理能力に関する処理識別子を取得するステップと、前記識別情報および前記識別子を用いて、前記テーブルにアクセスし、前記少なくとも一つのプロセッサの処理能力を調整する一つのパラメータ集合を取得するステップと、前記一つのパラメータ集合を用いて、前記少なくとも一つのプロセッサの処理能力を調整するステップと、をさらに含んでもよい。
【００１６】
前記テーブルが管理者エンティティ内にリモートに保存される場合、当該方法は、通信チャンネルを用いて、前記少なくとも一つのプロセッサおよび前記管理者エンティティ間にリンクを確立するステップと、前記通信チャンネルを介して、前記少なくとも一つのプロセッサから前記管理者エンティティに前記識別情報を送信するステップと、を含んでもよい。この場合、前記管理者エンティティは、前記識別情報および前記処理識別子を用いて、前記テーブルにアクセスし、前記少なくとも一つのプロセッサの処理能力を調整する前記関連付けられたパラメータ集合を取得してもよい。
【００１７】
前記少なくとも一つのプロセッサは、好適には、（ｉ）処理タスクを実行できる複数のサブ処理ユニットと、（ｉｉ）少なくともいくつかの管理処理タスクを前記サブ処理ユニットに対して実行できるメイン処理ユニットと、（ｉｉｉ）メイン処理ユニットおよびサブ処理ユニットによりアクセス可能なメインメモリと、（ｉｖ）前記サブ処理ユニット、前記メイン処理ユニット、および前記メインメモリを動作可能に接続するデータバスと、を含む。
【００１８】
当該方法は、前記少なくとも一つのサブ処理ユニットの処理特性を調整し、当該処理特性を用いて前記ソフトウエアプログラムを実行するステップと、より高いまたはより低い処理特性を有し他の処理タスクを実行できる、少なくとも一つの他のサブ処理ユニットについては、処理特性の調整をスキップするステップと、をさらに含んでもよい。
【００１９】
当該調整するステップは、前記少なくとも一つのプロセッサの周波数を少なくとも一つ変化させてもよい。さらに、具体的には、前記調整するステップは、前記メイン処理ユニット、サブ処理ユニット、およびデータバスの少なくとも一つのクロック周波数を他のユニットとは異なる周波数に調整してもよい。
【００２０】
さらに、前記調整するステップは、前記少なくとも一つのプロセッサのデータバスのバスの利用率を少なくとも変化させるものであり、当該データバスのバスの利用率は、前記処理能力を調整するために、（例えば、メイン処理ユニットによる）データバスへのアクセスを制限することで変えられてもよい。
【００２１】
さらに、前記調整するステップは、データバスのビット数を増減して調整することで、前記少なくとも一つのプロセッサのデータバスのバンド幅を少なくとも変化させ、前記処理能力を調整してもよい。例えば、前記データバス幅のビット数は、１２８ビット、６４ビット、３２ビット、１６ビット、および８ビットのいずれかに調整されてもよい。
【００２２】
少なくとも一つのプロセッサのローカルメモリはデータキャッシュとして動作してもよく、前記調整するステップは、データキャッシュのキャッシュサイズを変化させ、少なくとも一つのプロセッサの処理能力を調整してもよい。例えば、少なくとも一つのサブ処理ユニットのキャッシュサイズは、他のものと異なるサイズに調整されてもよい。さらに、前記調整するステップは、データキャッシュのキャッシュ構造を変化させ、処理能力を調整してもよい。例えば、キャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つが調整されてもよい。さらに、例えば、前記少なくとも一つのプロセッサのキャッシュ構造は、他のキャッシュ構造と異なる構造に調整されてもよい。
【００２３】
同様に、メインメモリは、少なくとも一つのプロセッサに対して、データキャッシュとして動作してもよく、前記調整するステップは、データキャッシュのキャッシュサイズを変化させることで、少なくとも一つのプロセッサの処理能力を調整してもよい。さらに、データキャッシュのキャッシュ構造を操作することで、処理能力を調整してもよい。例えば、キャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つが調整されてもよい。
【００２４】
他に、前記調整するステップは、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に遅延時間を要求しまたは除外することによって、前記少なくとも一つのプロセッサの命令待ち時間を調整し、これにより、少なくとも一つのプロセッサの処理能力が調整されてもよい。前記遅延時間は、前記ライトバックシーケンスおよび次の命令フェッチシーケンス間に存在することが好ましい。
【００２５】
前記調整するステップは、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に、一つ以上のノーオペレーションシーケンスを挿入しまたは削除することによって、前記少なくとも一つのプロセッサの命令スループットを調整し、これにより、前記少なくとも一つのプロセッサの処理能力が調整されてもよい。前記ノーオペレーションシーケンスは、前記実行シーケンスおよび前記ライトバックシーケンス間に存在することが好ましい。
【００２６】
他に、前記調整するステップは、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み取りシーケンスとデータ書き込みシーケンスのうちの一つ、の少なくとも一つのシーケンス間に遅延時間を要求することによって、前記少なくとも一つのメモリ待ち時間を調整し、これにより、前記少なくとも一つのプロセッサの処理能力が調整されてもよい。さらに、前記調整するステップは、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み取りシーケンスとデータ書き込みシーケンスのうちの一つ、の少なくとも一つのシーケンス間に、一つ以上のノーオペレーションシーケンスを挿入しまたは削除することによって、前記少なくとも一つのプロセッサの処理能力が調整されてもよい。
【００２７】
本発明の１以上のさらなる態様によれば、処理調整部は、少なくとも一つのプロセッサを含み、処理システムは、処理タスクを実行するための複数のサブ処理ユニットと、少なくともいくつかの管理処理タスクを前記サブ処理ユニットに対して実行可能なメイン処理ユニットと、前記サブ処理ユニットおよび前記メイン処理ユニットによりアクセス可能なメインメモリと、前記サブ処理ユニット、前記メイン処理ユニットおよび前記メインメモリとを動作可能に接続するデータバスと、を含む少なくとも一つの処理デバイスを備える。前記少なくとも一つのプロセッサ、または前記サブ処理ユニットおよび前記メイン処理ユニットのうち少なくとも一つは、（ｉ）ソフトウエアプログラムのバージョンを示す識別情報を取得し、（ｉｉ）前記少なくとも一つのプロセッサ、前記サブ処理ユニット、または前記メイン処理ユニットの処理能力が、前記ソフトウエアプログラムのバージョンに従って調整されるべきか否かを決定し、（ｉｉｉ）前記決定が肯定的であるとき、前記処理能力の調整を可能にする。
【００２８】
プロセッサ、またはメイン処理ユニットおよびサブ処理ユニットの少なくとも一つは、さらに、（ｉ）複数のソフトウエアプログラムに対するそれぞれの識別情報を、処理能力を調整する一つ以上のパラメータに関連付けるテーブルにアクセスし、（ｉｉ）前記処理能力の調整を容易にする与えられた前記識別情報に関連付けられたパラメータを使用可能であってもよい。
【００２９】
上述したように、前記テーブルは、前記少なくとも一つのプロセッサまたは前記処理ユニット内にローカルに保存されるか、管理者エンティティ内にリモートに保存されるか、あるいは、別の場所に保存されるかの少なくとも一つの方法により保存される。前記少なくとも一つのプロセッサまたは前記処理ユニットは、当該少なくとも一つのプロセッサまたは処理ユニットと、前記管理者エンティティとの間に通信リンクを確立し、前記通信チャンネルを介して、前記管理者エンティティに前記識別情報を送信してもよい。前記管理者エンティティは、前記テーブルにアクセスし、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理能力を調整する関連付けられた一つ以上のパラメータを取得してもよい。前記少なくとも一つのプロセッサまたは前記処理ユニットは、さらに、前記管理者エンティティから前記通信チャンネルを介して、パラメータをさらに取得し、処理能力を調整する与えられた前記識別情報に関連付けられたパラメータを使用できてもよい。
【００３０】
前記テーブルにもまた処理識別子を関連付ける場合、前記少なくとも一つのプロセッサ、または前記メイン処理ユニットおよび前記サブ処理ユニットの少なくとも一つは、さらに、（ｉ）前記少なくとも一つのプロセッサまたは前記処理ユニットの処理能力に関する処理識別子を取得し、（ｉｉ）前記識別情報および前記識別子を用いて、前記テーブルにアクセスし、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理能力を調整する一つのパラメータ集合を取得し、（ｉｉｉ）前記一つのパラメータ集合を用いて、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理能力の調整を容易にできてもよい。
【００３１】
前記テーブルが前記管理者エンティティ内にリモートに保存されている場合、前記少なくとも一つのプロセッサまたは前記処理ユニットは、（ｉ）当該少なくとも一つのプロセッサまたは処理ユニットと、前記管理者エンティティとの間に通信リンクを確立し、（ｉｉ）前記通信チャンネルを介して、前記管理者エンティティに前記識別情報および前記処理識別子を送信してもよい。さらに、前記少なくとも一つのプロセッサまたは前記処理ユニットは、前記管理者エンティティから前記通信チャンネルを介してパラメータ集合を取得し、与えられた前記識別情報および前記処理識別子に関連付けられた前記パラメータ群を用いて、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理能力を調整してもよい。
【００３２】
少なくとも一つのプロセッサまたはサブ処理ユニットの処理特性は、例えば、他の少なくとも一つのプロセッサまたはユニットの処理特性を調整せずに、調整されてもよい。例えば、少なくとも一つのプロセッサまたは処理ユニットの処理特性は、少なくともそのクロック周波数を変化させることで調整可能であることが好ましい。さらに詳細には、少なくとも一つのプロセッサまたは処理ユニットの処理特性は、メイン処理ユニット、サブ処理ユニット、およびデータバスのうち少なくとも一つのクロック周波数を、他のものとは異なる周波数に変化させることで調整可能であることが好ましい。
【００３３】
他に、少なくとも一つのプロセッサまたは処理ユニットの処理特性は、処理ユニットのデータバスのバス使用率を変化させることで調整可能であってもよい。当該データバスのバス使用率は、それらの処理能力を調整するための（例えば、メイン処理ユニットによる）データバスへのアクセスを制限することで変化される。
【００３４】
さらに、前記少なくとも一つのプロセッサまたは処理ユニットの処理特性は、当該少なくとも一つのプロセッサまたは処理ユニットの処理能力を調整するためのデータバスのビット数を調整することで、当該少なくとも一つのプロセッサまたは処理ユニットのデータバスのバンド幅を変化させることで調整可能であってもよい。例えば、データバスのビット数は、１２８ビット、６４ビット、３２ビット、１６ビット、および８ビットのいずれかに調整されてもよい。
【００３５】
前記少なくとも一つのプロセッサまたは前記サブ処理ユニットのローカルメモリは、データキャッシュとして動作し、さらに、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理特性は、当該少なくとも一つのプロセッサまたは処理ユニットの処理能力の調整のために前記データキャッシュのキャッシュサイズを変化させることにより、調整可能であってもよい。さらに、前記少なくとも一つのプロセッサまたは処理ユニットの処理特性は、当該少なくとも一つのプロセッサまたは処理ユニットの処理能力の調整のために前記データキャッシュのキャッシュ構造を変化させることにより、調整可能であってもよい。例えば、前記少なくとも一つのサブ処理ユニットのキャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つが変えられてもよい。前記少なくとも一つのプロセッサまたは前記少なくとも一つのサブ処理ユニットのキャッシュ構造は、他のものとは異なる構造に調整されるのが好ましい。
【００３６】
他に、前記少なくとも一つのプロセッサまたは前記処理ユニットのメインメモリは、一つ以上のサブ処理ユニットに対してデータキャッシュとして動作し、さらに、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理特性は、当該少なくとも一つのプロセッサまたは処理ユニットの処理能力の調整のために前記データキャッシュのキャッシュサイズを変化させることにより、調整可能であってもよい。さらに、前記少なくとも一つのプロセッサまたは処理ユニットの処理特性は、当該少なくとも一つのプロセッサまたは処理ユニットの処理能力の調整のために前記データキャッシュのキャッシュ構造を変化させることにより、調整可能であってもよい。例えば、キャッシュメモリのウェイサイズおよびブロックサイズの少なくとも一つを変化させることで、調整可能であってもよい。
【００３７】
さらにそのうえ、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理特性は、前記少なくとも一つのプロセッサまたは前記少なくとも一つのサブ処理ユニットの命令待ち時間を変化させることにより、調整可能であってもよい。なお、当該命令待ち時間の変化は、前記処理ユニットの処理能力を調整するために、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に遅延時間を要求することによって実現される。前記遅延時間は、前記ライトバックシーケンスおよび次の命令フェッチシーケンス間に存在してもよい。他に、前記処理特性は、前記少なくとも一つのプロセッサまたは前記少なくとも一つのサブ処理ユニットの命令スループットを変化させることにより、調整可能であってもよい。なお、当該命令スループットの変化は、前記処理能力を調整するために、所与の命令に関する、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンス、およびライトバックシーケンスの少なくとも一つのシーケンス間に一つ以上のノーオペレーションシーケンスを挿入しまたは削除することによって実現される。前記ノーオペレーションシーケンスは、前記実行シーケンスおよびライトバックシーケンス間に存在するのが好ましい。
【００３８】
さらにそのうえ、前記少なくとも一つのプロセッサまたは前記処理ユニットの処理特性は、前記少なくとも一つのプロセッサ、または前記サブ処理ユニットおよび当該処理ユニットのメインメモリの少なくとも一つ、のメモリ待ち時間を変化させることにより、調整可能であってもよい。なお、当該メモリ待ち時間の変化は、その処理能力を調整するために、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み込みおよび書き込みシーケンスの少なくとも一つのシーケンス間に遅延時間を要求することによって実現される。さらに、前記処理特性は、前記少なくとも一つのプロセッサ、または前記サブ処理ユニットおよび当該処理ユニットのメインメモリの少なくとも一つ、のメモリスループットを変化させることにより、調整可能であってもよい。なお、当該メモリスループットの変化は、当該処理能力を調整するために、アドレスフェッチシーケンス、アドレスデコードシーケンス、およびデータ読み込みおよび書き込みシーケンスの少なくとも一つのシーケンス間に、一つ以上のノーオペレーションシーケンスを挿入または削除することによって実現される。
【００３９】
本発明のさらなる１以上の態様によれば、処理ユニットを動作させるための上述の方法を用いたプログラムが記録媒体に記録される。
【００４０】
本発明の上述の態様に従って、現代のマイクロプロセッサの処理能力を超えた最新のコンピュータアーキテクチャが開発された。この最新のコンピュータアーキテクチャによれば、マルチプロセッサのコンピュータシステムのすべてのプロセッサは、共通のコンピュータモジュール（またはセル）から構成される。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令集合構成を用いるのが好ましい。マルチプロセッサのコンピュータシステムは、コンピュータプロセッサを用いて、１以上のクライアント、サーバ、ＰＣ、携帯端末、ゲーム機、ＰＤＡ、セットトップボックス、アプリケーション、デジタルテレビおよび他のデバイスから構成されうる。
【００４１】
必要に応じて、複数のコンピュータシステムをそれぞれネットワークのメンバとしてもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータの迅速な伝送ができる。またこの構造により、様々なサイズおよび処理能力をもつネットワークメンバの形成、ならびにこれらメンバによって処理されるアプリケーションの準備が簡略化できる。
【００４２】
基本的な処理モジュールはプロセッサ要素（ＰＥ）である。ＰＥは、好適には処理ユニット（ＰＵ）と、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）と、共通の内部アドレスおよびデータバスで接続された、複数の、例えば４つのサブ処理ユニット（ＳＰＵ）とを含む。ＰＵおよびＳＰＵは、クロスバー構成をもちうる共有ダイナミックランダムアクセスメモリ（ＤＲＡＭ）にアクセスする。ＰＵは、ＳＰＵによるデータおよびアプリケーションの処理のスケジューリングと調整を行う。ＳＰＵはこの処理を並列かつ独立して行う。ＤＭＡＣは、共有ＤＲＡＭに保存されたデータおよびアプリケーションに対するＰＵおよびＳＰＵのアクセスを制御する。
【００４３】
このモジュール構造では、あるコンピュータシステムで使用されるＰＥの数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは４つのＰＥ、ワークステーションは２つのＰＥ、ＰＤＡは１つのＰＥを使用しうる。あるソフトウェアセルの処理に割り当てられるＰＥのＳＰＵの数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
【００４４】
複数のＰＥを共有ＤＲＡＭに関連付けることができ、そのＤＲＡＭは複数のセクションに分別され、各セクションは複数のメモリバンクに分別されうる。ＤＲＡＭの各セクションはバンクコントローラによって制御され、ＰＥの各ＤＭＡＣが各バンクコントローラにアクセスできる。本構成では、各ＰＥのＤＭＡＣは共有ＤＲＡＭの任意の個所にアクセスできる。
【００４５】
この新規のコンピュータ構成はまた、データおよびアプリケーションをネットワークを介して伝送し、かつデータおよびアプリケーションをネットワークメンバ間で処理する新たなプログラミングモデルを用いる。このプログラミングモデルは、ネットワークを介して伝送され任意のネットワークメンバによって処理されるソフトウェアセルを用いる。各ソフトウェアセルは同一構造をもち、データとアプリケーション両方を収容できる。モジュール式コンピュータ構成による高速処理および伝送の結果、これらセルの高速処理が可能である。アプリケーション用のコードは、好適には同一の共通命令セットおよび命令セットアーキテクチャに基づく。各ソフトウェアセルは、好適にはグローバル（大域的）識別名（ＩＤ）と、セルの処理に必要な計算リソース量を記述した情報とを含む。すべての計算リソースは同一の基本構造をもち、かつ同じ命令セットアーキテクチャを用いるので、処理を実行する特定のリソースをネットワーク上の任意の場所に配置してダイナミックに割り当てを行うことができる。
【００４６】
本発明の上記以外の態様、特徴、および利点は、添付図面とともに以下の詳細な説明により当業者には明確に理解される。
【発明を実施するための最良の形態】
【００４７】
現在のところ好適である図面を例示として添付するが、本発明は図面と同一の構成および手段に限定するものではない。
【００４８】
以下、図面を参照するが、図中、同一符号は同一要素を示す。図１は、本発明の１つ以上の態様に従う処理調整部１１８を示す。処理調整部１１８は、例えば、詳細は後述するマイクロプロセッサを用いて、ソフトウエアプログラムを実行できる。ディスプレイ１２０およびオーディオ機能（図示せず）を用いて、ユーザはマルチメディアを体験できる。
【００４９】
ソフトウエアプログラムを含む記録媒体を処理調整部１１８に挿入し、かつ当該ソフトウエアプログラムをランダムアクセスメモリ（ＲＡＭ）に読み込ませる等の任意の方法で、ソフトウエアプログラムを読み出すことができる。記録媒体は、光媒体、磁気媒体、電子媒体等であってもよい。実施形態のいくつかの態様に従えば、ソフトウエアプログラムは、インターネット１２４等のネットワークを介してダウンロードされることで、処理調整部１１８内に読み込まれてもよい。
【００５０】
非常に強力なマルチプロセッシングシステムを用いて、本発明に係る処理調整部１１８を実装すれば、有利な処理特性を達成できることが見いだされてきた。処理調整部１１８は、実行対象のソフトウエアプログラムのバージョンに従って、当該処理調整部１１８の処理性能を下方または上方に調整するかどうかの決定を行うことができ、当該決定が肯定的である場合には、処理調整部１１８の処理性能の調整を行うことができるのが好ましい。この機能がどのように達成されるかについての各種詳細および具体例、さらに複数の変形例を以下に述べる。この点に関して、処理調整部１１８の内部構成のある態様をここで詳細に説明する。
【００５１】
図２Ａは、基本的な処理モジュールまたはプロセッサ要素（ＰＥ）２００の一例を示すブロック図である。図示するように、ＰＥ２００は、Ｉ／Ｏインタフェース２０２と、処理ユニット（ＰＵ）２０４と、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）２０６と、複数のサブ処理ユニット（ＳＰＵ）、すなわちＳＰＵ１（２０８Ａ）、ＳＰＵ２（２０８Ｂ）、ＳＰＵ３（２０８Ｃ）およびＳＰＵ４（２０８Ｄ）とを含む。ローカル（すなわち内部）ＰＥバス２１２は、ＰＵ２０４、ＳＰＵ群２０８、ＤＭＡＣ２０６およびメモリインタフェース２１０間のデータおよびアプリケーションの伝送を行う。ローカルＰＥバス２１２は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。
【００５２】
ＰＥ２００はディジタル論理回路を実装する各種方法を利用して構成できる。ただし好適には、ＰＥ２００はシリコン基板上の相補的金属酸化膜半導体（ＣＭＯＳ）を用いる１つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるＩＩＩ−Ｂ族化合物が含まれる。ＰＥ２００はまた、超伝導材料を用いて高速単一磁束量子（ＲＳＦＱ）論理回路等として実装することもできる。
【００５３】
ＰＥ２００は、広帯域メモリ接続２１６を介してダイナミックランダムアクセスメモリ（ＤＲＡＭ）２１４に密接に関連付けられる。ＤＲＡＭ２１４は、ＰＥ２００用の主メモリ（または共有メモリ）として機能する。ＤＲＡＭ２１４は好適にはダイナミックランダムアクセスメモリだが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。他の実装として、ＤＲＡＭ２１４は、ＰＥ２００と同一の集積回路内に組み込まれてもよいし、他には、別の外部メモリとして提供されてもよい。ＤＲＡＭ２１４が、ＰＥ２００と同一のチップ内に組み込まれている場合、当該ＤＲＡＭ２１４はそのチップ上において異なる場所に設けられてもよいし、ＰＥを構成する一つ以上のプロセッサとともに一体化されてもよい。ＤＭＡＣ２０６およびメモリインタフェース２１０により、ＤＲＡＭ２１４とＰＥ２００のＳＰＵ群２０８およびＰＵ２０４間のデータ転送が容易になる。ＤＭＡＣ２０６および／またはメモリインタフェース２１０は、サブ処理ユニット２０８およびＰＵ２０４と一体化して設けてもよいし、あるいは、サブ処理ユニット２０８およびＰＵ２０４から離れた場所（リモート）に設けてもよい。実際には、図に示す分離された構成にかわって、ＤＭＡＣ２０６の機能および／またはメモリインタフェース２１０の機能を、一つ以上の（好適にはすべての）サブ処理ユニット２０８およびＰＵ２０４に一体化させてもよい。
【００５４】
ＰＵ２０４は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、ＰＵ２０４はＳＰＵ群２０８によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。他の構成では、ＰＥ２００は複数のＰＵ２０４を含んでもよい。ＰＵ群２０４のそれぞれは、一つのＳＰＵ２０８、すべてのＳＰＵ２０８、または所定のグループのＳＰＵ群２０８を制御してもよい。ＳＰＵ群２０８は、好適には、一命令複数データ（ＳＩＭＤ）プロセッサである。ＰＵ２０４の制御下で、ＳＰＵ群２０８はデータおよびアプリケーションの処理を並列に、かつ独立して行う。ＤＭＡＣ２０６は、共有ＤＲＡＭ２１４に保存されたデータおよびアプリケーションに対するＰＵ２０４およびＳＰＵ群のアクセスを制御する。なお、ＰＵ２０４は、主処理ユニットの役割を果たす一つ以上のサブ処理ユニット２０８で実装できる。
【００５５】
ＰＥ２００等の多数のＰＥを接続し、または一緒にパッケージングして、処理能力を向上させることができる。この構成を広帯域エンジン（ＢＥ）と称する。
【００５６】
図２Ｂは、本発明の態様に従って動作する複数のＰＥ２５０（ＰＥ１,ＰＥ２,ＰＥ３およびＰＥ４）の処理アーキテクチャの一例を示す。ＰＥ２５０は単一のチップ上に存在するのが好ましい。ＰＥ２５０は、図２ＡのＰＥ２００について上述したＰＵおよび／あるいはＳＰＵ等のサブシステムを含んでもよいし、含まなくてもよい。ＰＥ２５０は同一のタイプであってもよいし、要求される処理の種類に応じてタイプが異なってもよい。例えば、一つ以上のＰＥ群２５０は、一般的なマイクロプロセッサ、デジタルシングルプロセッサ、グラフィックプロセッサ、マイクロコントローラ等であってもよい。
【００５７】
ＰＥ群２５０は、好適には共有バス２５２に接続される。メモリコントローラまたはＤＭＡＣ２５６は、メモリバス２５４を介して共有バス２５２に接続されてもよい。ＤＭＡＣ２５６は、メモリ２５８に接続される。当該メモリ２５８は、メモリ２３０について上述したタイプのうちの一つであってもよい。Ｉ／Ｏコントローラ２６２もまた、Ｉ／Ｏバス２６０を介して共有バス２５２に接続されてもよい。Ｉ／Ｏコントローラ２６２は、フレームバッファやディスクドライブ等の一つ以上のＩ／Ｏ装置２６４に接続されてもよい。上述の処理モジュールおよびアーキテクチャは単なる例であり、本発明の様々な態様は他の構成を用いて表すことができる。例えば、２００３年２月２５日に公開された米国特許番号６５２６４９１の「Memory Protection System and Method for Computer Architecture for Broadband Networks」、および２００１年３月２２日に出願された米国出願番号０９／８１６００４の「Computer Architecture and Software Cells for Broadband Networks」に開示されたマルチプロセッサシステムを用いることができるが、それに限られるものではない。なお、当該文献は、参照により本明細書に援用されることは明らかである。
【００５８】
図３は、ＳＰＵ２０８の構造および機能の一例を示す。ＳＰＵ２０８は、ローカルメモリ２７０と、レジスタ２７２と、１つ以上の浮動小数点ユニット２７４と、１つ以上の整数ユニット２７６とを含む。ただしここでも、必要な処理能力に応じて、使用する浮動小数点ユニット２７４および整数ユニット２７６の数を増減させてもよい。好適な実施形態では、ローカルメモリ２７０は１２８キロバイトの容量をもち、レジスタ２７２の容量は１２８×１２８ビットである。浮動小数点ユニット２７４は、好適には１秒間に３２０億回（３２ＧＦＬＯＰＳ）の浮動小数点演算を実行する。整数ユニット２７６は、好適には１秒間に３２０億回（３２ＧＯＰＳ）の整数演算を実行する。
【００５９】
好適な実施形態では、ローカルメモリ２７０は２５６キロバイトの容量をもち、レジスタ２７２の容量は１２８×１２８ビットである。なお、処理タスクは、共有メモリ２１４を用いて実行されることはない。むしろ、当該タスクは、所定のサブ処理ユニット２０８のローカルメモリ２７０内に複製され、ローカルで実行される。
【００６０】
ローカルメモリ２７０は、キャッシュメモリであってもなくてもよい。ローカルメモリ２７０は、好適にはスタティックランダムアクセスメモリ（ＳＲＡＭ）として構成される。ＰＵ２０４は、ＰＵ２０４が開始するダイレクトメモリアクセスのためにキャッシュコヒーレンシを必要とする場合がある。しかし、ＳＰＵ２０８が開始するダイレクトメモリアクセスまたは外部装置との間のアクセスにはキャッシュコヒーレンシサポートは不要である。
【００６１】
ＳＰＵ２０８はさらに、ＳＰＵ２０８とアプリケーションおよびデータの送受信を行うバス２８９を含む。サブ処理ユニット２０８はさらに、サブ処理ユニット２０８とアプリケーションおよびデータの送受信を行うバスインタフェース（Ｉ／Ｆ）２７８を含む。好適な実施形態では、バスＩ／Ｆ２７８は、サブ処理ユニット２０８内に一体的に設けられるＤＭＡＣ（図示せず）に接続される。ＤＭＡＣ２０６は、（図３に示すごとく）外部に設けてもよい。バスＩ／Ｆ２７８とローカルメモリ２７０との間に一体的に配置されたＤＭＡＣには一組のバスが相互に接続される。好適には当該一組のバスの幅は２５６ビットである。好適な実施形態では、バス２８９の幅は１０２４ビットである。
【００６２】
ＳＰＵ２０８はさらに、内部バス２８１，２８３および２８５を含む。好適な実施形態では、バス２８１は幅２５６ビットで、ローカルメモリ２７０とレジスタ２７２間の通信を行う。バス２８３および２８５は、それぞれレジスタ２７２−浮動小数点ユニット２７４間、およびレジスタ２７２−整数ユニット２７６間の通信を行う。好適な実施形態では、レジスタ２７２から浮動小数点ユニット２７４へのバス２８３またはレジスタ２７２から整数ユニット２７６へのバス２８５の幅は３８４ビットで、一方、浮動小数点ユニット２７４または整数ユニット２７６からレジスタ２７２へのバス２８５および２８３の幅は１２８ビットである。レジスタ２７２から浮動小数点ユニット２７４または整数ユニット２７６へのバスの幅のほうが、これら装置からレジスタ２７２へのバス幅より広いことで、処理中にレジスタ２７２からのより大量のデータフローに対処できる。各計算には最大３ワードが必要である。ただし各計算の結果は通常は１ワードだけである。
【００６３】
本実施形態は、好適には図２のＰＥ２００を用いて実行されるが、他のシングルプロセッサシステムやマルチプロセッサシステムを用いてもよい。例えば、図４のマルチプロセッサシステム３００を用いて、本実施形態の１つ以上の態様を実行できる。マルチプロセッサシステム３００は、バス３０８によってメモリインタフェース３０４に接続された複数のプロセッサ３０２（使用数は任意）を含む。メモリインタフェース３０４は、別のバス３１０を介してＤＲＡＭ等の共有メモリ３０６と通信する。メモリインタフェース３０４は、プロセッサ群３０２間で分散されてもよく、かつ必要に応じてＤＡＭＣと共に動作してもよい。プロセッサ群３０２は、好適には図３と同一または同様の構造、あるいは任意の既知のまたは後述の改良技術を用いて実装される。
【００６４】
図５は、ある処理ステップを示すフロー図である。その処理ステップとは、例えばＰＥ２００（図２）を用いて、少なくとも部分的に処理調整部１１８により実施されるものであり、本発明の１以上の態様に従って、処理能力を変化させることができる。なお、図５に示す、いくつかのまたはすべての処理ステップ（さらに、それに続く以降の処理ステップ）は、ＰＥ２００と一体化した、またはＰＥ２００に対して外部に設けられた、ソフトウエア、ハードウエア、またはそれらの組み合わせにより実施される。例えば、動作４００では、ソフトウエアプログラムは、記録媒体から（ソフトウエアを実行する装置である）処理調整部１１８のランダムアクセスメモリ（ＲＡＭ）内に読み込まれる。ＰＥ２００は、その意味において、光学記録媒体１２２（図１）、磁性記録媒体または電子記録媒体等の記録媒体からソフトウエアプログラムを読み出すことが可能なソフトウエア実行コンソールの一部をなす。一例として、記録媒体が光学記録媒体であれば、当該記録媒体はＣＤ、ＤＶＤまたはＢｌｕ−ｒａｙ Ｄｉｓｃ（商標）であってもよいし、「読み出し専用」、「書き込み可能」または「再書き込み可能」のいずれかのデバイスとして形成されてもよい。他の例として、または、このような機能に加えて、処理調整部１１８は、インターネット１２４等のネットワークを介してソフトウエアプログラムをダウンロードしてもよい。
【００６５】
図５に再び戻り、動作４０２では、処理調整部１１８はソフトウエアプログラムのバージョンを示す識別情報を取得する。ソフトウエアプログラムが記録媒体から読み込まれる場合、当該識別情報は光学記録媒体１２２上に設けられたプログラムＩＤであってもよい。また、ソフトウエアプログラムは、ファイルヘッダの一部分であってもよく、光学記録媒体１２２上に同じく設けられたソフトウエアプログラムテーブル内に含まれてもよい。多くの場合、ユーザは、光学記録媒体１２２から、処理調整部１１８内に含まれるハードディスクドライブや電子記録媒体等の別の記録媒体に、ソフトウエアプログラムを複製する。この場合、ソフトウエアプログラムＩＤを取得するためには、外部の記録媒体からソフトウエアプログラムＩＤを取得するかわりに、処理調整部１１８の内部の記録媒体からそのＩＤを取り出してもよい。
【００６６】
ソフトウエアプログラムがインターネット１２４等を介してダウンロードされる場合、当該識別情報はプログラムＩＤやユーザＩＤ等であってもよい。識別情報は好適には、ダウンロードされたソフトウエアプログラムの内部、例えば、プログラムテーブルまたはファイルヘッダの内部に含まれるが、他に、当該識別情報は処理調整部１１８の内部に保存されていてもよく、ユーザにより処理調整部１１８内または別のデバイス内に入力されてもよい。
【００６７】
ここで、ステップ４００は当該発明の実施には必須ではないが、ソフトウエアプログラムが処理調整部１１８内のハードディスク等の内部記録媒体上に記録される場合、ステップ４０２より前に実施されうる。さらに、ソフトウエアプログラムのダウンロード、または読み出しの前に、ユーザに権限が与えられた場合などであれば、ステップ４０２はステップ４００より前に実施されてもよい。
【００６８】
動作４０４では、処理調整部１１８の処理能力の上方または下方への調整を行うべきか否かについての決定がなされる。例として、ソフトウエアプログラムが改良された結果、処理調整部１１８上で動作する当該ソフトウエアプログラムにより所望でない結果が生じ、かつ処理調整部１１８の処理能力が、ソフトウエア設計者が考える能力をはるかに超えるのであれば、処理調整部１１８の処理能力を下方に調整する必要があるとされてもよい。この点について、処理調整部１１８は好適には、ソフトウエアプログラムのバージョンを決定するソフトウエアＩＤや他の識別情報、および／またはソフトウエアプログラムの正常動作に必要な処理能力を表したものを利用する。このとき、処理調整部１１８は、ソフトウエアプログラムを実行するために必要な処理能力と処理調整部１１８の処理能力とを比較してもよい。処理調整部１１８の処理能力が、所望でない結果が得られる程度にソフトウエアプログラムを実行させるために必要とされる処理能力以下である場合、動作４０４における決定の結果は否定的なものとなり、かつ処理フローは動作４０６に進んでもよい。
【００６９】
動作４０６では、処理調整部１１８は、ソフトウエアプログラムを実行する際に全処理能力を用いてもよく、少なくとも処理能力を下げる処理を行わなくてよい。ソフトウエアプログラムが実行された後、その処理フローは完了する。
【００７０】
処理調整部１１８の処理能力が、ソフトウエアプログラムを実行するために必要な上述した処理能力をはるかに超えるのであれば、動作４０４における決定は肯定的なものになり、節点Ａ（図７）に進む。ここで、処理調整部１１８の処理能力は、処理調整部１１８の利用可能なプロセッサ要素２００の数により決定されてもよい。実際には、一つ以上のプロセッサ要素２００は処理調整部１１８内に保持されてもよく、一方、処理調整部１１８から離れた場所に、一つ以上の他のプロセッサ要素２００が設けられてもよい。これに関連して、図６を参照する。本図は、本発明の１以上の態様に係るコンピュータネットワーク全体のブロック図である。ここで、ＰＥ２００および／または（複数のＰＥで形成される）広域エンジンを用いて、コンピュータシステム５００の分散型アーキテクチャを実装できる。システム５００は、複数のコンピュータおよび／またはコンピューティングデバイスが接続されたネットワーク５０４を含む。ネットワーク５０４は、ローカルエリアネットワーク（ＬＡＮ）、インターネット等のグローバルネットワーク、またはその他のコンピュータネットワークで構成できる。ネットワーク５０４に接続されたコンピュータおよびコンピューティングデバイス（ネットワークの「メンバ」）は、クライアントコンピュータ５０６、サーバコンピュータ５０８、個人携帯端末（ＰＤＡ）５１０、ディジタルテレビ（ＤＴＶ）５１２、ならびにその他の有線または無線コンピュータおよびコンピューティングデバイス等を含む。ネットワーク５０４のメンバによって用いられるプロセッサは、好適にはＰＥ２００または他の適切なマルチプロセッサシステムで構成される。
【００７１】
システム５００のサーバ５０８は、クライアント５０６よりも多くのデータおよびアプリケーションを実行し、クライアント１０６よりも多くの計算モジュール（例えば、ＰＥ群２００）を含む。一方、ＰＤＡ５１０は本例では処理量が最も少ない。従ってＰＤＡ５１０に含まれるＰＥ数は一番少なく、例えばＰＥ数は一つである。ＤＴＶ５１２は実質的に、クライアント５０６とサーバ５０８との間のあるレベルの処理を実行する。従って、ＤＴＶ５１２はクライアント５０６とサーバ５０８の間の数のプロセッサ要素を含む。
【００７２】
従って、動作４０４（図５）で実施される処理調整部１１８の処理能力の決定、およびその処理能力を調整するか否かについての決定は、処理調整部１１８内外のプロセッサ要素２００の数で行われてもよい。図６は、多くの内部または外部に存在するプロセッサ要素２００の処理能力を用いた分散型システム５００を示す。
【００７３】
図５に示される処理ステップに戻る前に、図６の分散型システム５００に関して、さらに詳細に説明する。システム５００のこのホモジーニャスな（均一な）構成により、適応性、処理速度、および処理効率が向上する。システム５００の各メンバは同一計算モジュール（ＰＥ２００）を１つ以上用いて（またはそのある部分を用いて）処理を行うので、データおよび／またはアプリケーションの処理を実際に行っているのはどのコンピュータまたはコンピューティングデバイスであるかは重要ではない。そのようなデータおよびアプリケーションの処理は、ネットワークメンバ間で共有できるためである。システム５００によって処理されるデータおよびアプリケーションを含むソフトウエアセルを一意に識別することにより、処理がどこで発生したかに関係なく、処理を要求しているコンピュータまたはコンピューティングデバイスに処理結果を伝送できる。処理を実行しているモジュールは共通の構造をもち、かつ共通の命令セットアーキテクチャを使用しているので、プロセッサ間で互換性を得るためにソフトウェアに追加すべきレイヤによる計算負荷を回避できる。この構成およびプログラミングモジュールによって、例えばマルチメディア・アプリケーションのリアルタイムの実行に必要な処理速度を達成できる。
【００７４】
システム５００によって改善される処理速度および処理効率の利点をさらに高めるため、本システムによって処理されるデータおよびアプリケーションは、一意に識別され、均一にフォーマットされたソフトウェアセル５０２にパッケージされる。各ソフトウェアセル５０２は、アプリケーションおよびデータ両方を含む、または含みうる。各ソフトウェアセルはまた、ネットワーク５０４およびシステム５００中でセルをグローバルに識別するＩＤを含む。このソフトウェアセルの均一な構造、およびソフトウェアセルのネットワーク中での一意的な識別により、ネットワーク５０４の任意のコンピュータまたはコンピューティングデバイス上でのアプリケーションおよびデータの処理が容易になる。例えば、クライアント５０６はソフトウェアセル５０２をフォーミュレート（すなわち所与の形式で生成）するが、クライアント５０６の処理能力の限度のため、そのソフトウェアセル５０２をサーバ５０８に伝送して処理してもよい。従ってソフトウェアセル５０２は、ネットワーク５０４上で利用できる処理リソースに応じてネットワーク５０４中を移動できる。
【００７５】
システム５００のプロセッサおよびソフトウェアセル５０２の均一構造はまた、既存の異種ネットワークの多くの問題を回避する。例えば、任意の命令セットを用いて任意の命令セットアーキテクチャ上でアプリケーションの処理の許可を求める、効率的とはいえないプログラミングモデル、例えばＪａｖａ（商標または登録商標）仮想マシーン等の仮想マシーンが回避される。従って、システム５００は従来のネットワークに比べて、はるかに効果的かつ効率的な広帯域処理を実現できる。
【００７６】
図５に再度戻り、処理調整部１１８が享受する処理能力は、（特に、図６に示すように、外部装置の処理能力を使用する場合に）有意義である。当該処理能力は、いくつかの状況下において、それほど高性能でないシステム上で動作するよう設計されたソフトウエアプログラムの実行に対し、悪影響を及ぼすことがある。従って、動作４０４において、処理調整部１１８の処理能力（外部の処理能力を含めてもよい）が、ソフトウエアプログラムのバージョンに従って調整されるべき旨の決定がなされたとき、好適には処理フローは節点Ａ（図７）に進む。動作４０８で、処理調整部１１８の処理能力を変化させる手順が開始される。
【００７７】
本発明に係る処理能力の調整とは、例えば、データおよびアプリケーションを処理するために、処理調整部により使用される一つ以上のクロック周波数を変化させることを示す。当業者からみて明白であるように、所与のＳＰＵ２０８（図２）は、例えば、通常約４ＧＨｚのクロック周波数で動作するが、その周波数が上方または下方に調整されたとき、当該ＳＰＵ２０８の処理能力もいくつかの点において追随して増減される。例えば、実際には、所定の単位時間内に実行しうる浮動小数点演算数が増減されてもよいし、また、所定の単位時間内に実行しうる整数演算数が増減されてもよいし、さらに、所定の単位時間内に実行しうる命令数が増減されてもよい。別のさらなる例として、プロセッサ要素２００内において多くの管理調整機能を実行するＰＵ２０４もまた、クロック周波数に基づいた動作を行う。その機能は、当該クロック周波数が調整されることで上昇または低下させることができる。別のさらなる例として、バス２１２もまた、クロック周波数に従って動作することが可能であり、本発明に従ってクロック周波数が増減されることで、概して、プロセッサ要素２００および処理調整部１１８の処理能力を向上または低下させることができる。
【００７８】
本発明に従って調整される処理調整部１１８の他の態様およびパラメータには、例えば、ローカルメモリ２７０のメモリマップおよび／または共有メモリ２１４、バス２１２の（ＰＵ２０４等による）バス使用率、バス２１２の（１２８ビット、６４ビット、３２ビット等の）バンド幅が含まれる。処理調整部１１８の処理能力を変化させるために調整されるさらなるパラメータには、例えば、ローカルメモリ２７０および／または共有メモリ２１４のサイズやキャッシュ構造、処理調整部１１８のＰＵ２０４の一つ以上のＳＰＵ群２０８の命令待ち時間や命令スループット、ローカルメモリ２７０および／または共有メモリ２１４のメモリ待ち時間やメモリスループットが含まれる。
【００７９】
さらなる他の例として、エンディアンが制御されてもよい。例えば、（文字列の最後に最下位のバイトを設定する）リトルエンディアンから、（文字列の最後に最上位のバイトを設定する）ビッグエンディアンに、あるいはその逆に変換されてもよい。調整可能な他のパラメータは命令の種類に関連し、例えば、ＭＩＰＳからパワーＰＣに、あるいはその逆に変換されてもよい。これらのパラメータおよび制御については、本明細書でさらに詳細に後述する。
【００８０】
処理調整部１１８の処理能力が調整されるべき旨が決定された場合、処理調整部１１８のどのパラメータを調整するかかつどの程度調整するかを決定するために、変換テーブルを参照するのが好ましい。この点に関連して、図８を参照する。図８は本発明の１以上の態様に係る変換テーブル５５０を示す。一般的な意味において、変換テーブル５５０は、識別情報（例えば、ソフトウエアプログラムＩＤ群）のそれぞれに、処理調整部１１８の処理能力に施される調整を示す一つ以上のパラメータを関連づける。本図では、識別情報は垂直列５５２形式で示されており、エントリ（００１０，００２０，００３０・・・Ｎ）のそれぞれは、所与の識別情報の一要素、例えば、一つのソフトウエアプログラムＩＤを表す。その識別情報のそれぞれには、Ｐ１−ｉ、Ｐ２−ｉ、Ｐ３−ｉ、Ｐ４−ｉ、・・・ＰＭ−ｉの一つ以上のパラメータが関連付けられ、このパラメータそれぞれにより、処理調整部１１８の処理能力を調整する。ここで、ｉは、所与のパラメータがとりうる複数の値のうち一つを表したものである。
【００８１】
一例として、「００４０」が付された識別情報を、処理調整部１１８上において実行されるソフトウエアプログラムのあるバージョンに対応させることができ、これにより、処理調整部１１８の処理能力が、そのソフトウエアプログラムが改良されたときに想定される処理能力をはるかに超えたことを判断できる。また、処理調整部１１８の処理能力が非常に高いため、ソフトウエアプログラムが処理調整部１１８のフル能力で実行された場合に、不都合な結果が生じる可能性があることをさらに判断できる。このとき、変換テーブル５５０には、識別情報００４０に関連づけられた複数のパラメータ、すなわち、パラメータＰ２−２、パラメータＰ３−１、パラメータＰ４−４、・・・、パラメータＰＭ−７が含まれてもよい。こうしたパラメータのそれぞれは、好適には、処理調整部１１８の処理能力のある態様を表してもよいし、関連するソフトウエアプログラムが実行される場合に所望の結果を得るためのその態様に関する調整量を表してもよい。
【００８２】
一例として、パラメータＰ２−２は、ソフトウエアプログラムを実行するために用いられる、あるＳＰＵまたはＳＰＵ群２０８のクロック周波数を表すことができる。また、パラメータＰ２−２は、あるプロセッサ要素２００の他の部分である、ＰＵ２０４、バス２１２等のクロック周波数を表すことができる。ここで、あるパラメータ、例えばパラメータＰ２−２の実際の値は、処理調整部１１８のある処理能力、例えば直接的に実際のクロック周波数に関連しているか、または、間接的にそのクロック周波数の変化量の値に関連している。当業者から見れば、本発明の精神および範囲から逸脱することなく他の間接的に関連したものを考案することができる。さらなる例として、パラメータＰ３−１は、関連するソフトウエアプログラムが実行される場合に所定の結果を得るために調整される処理調整部１１８の処理能力の他の態様を表すことができる。いずれの場合でも、パラメータＰ２−２、Ｐ３−１、Ｐ４−４、・・・、ＰＭ−７は好適には、処理調整部１１８により用いられるものであり、当該パラメータによりその処理能力が調整されることで、関連するソフトウエアプログラム（例えば、００４０）を実行するための所望のプラットホームを実現できる。
【００８３】
本発明に係る他の態様および実施形態によれば、その変換テーブル５５０には、所与の識別情報の一要素とパラメータの集合とをそれぞれ関連づけることを可能にする別の次元が含まれるのが好ましい。この点について、変換テーブル５５０には次元５５６が含まれ、当該次元５５６に沿って、複数の処理識別子Ｃ００１、Ｃ００２、・・・Ｃ００Ｘが配置されるのが好ましい。処理識別子のそれぞれは、次元５５６内の所与のユニットに含まれる複数のパラメータ集合、すなわち一つのパラメータの上位集合（super-set）に関連付けられる。その結果、垂直列５５２に沿ったそれぞれのソフトウエアプログラム識別子は、次元５５６に沿った処理識別子のそれぞれに関連付けられる。同様に、所与の識別子、例えば識別子００４０に対する複数のパラメータ集合は、それぞれ、処理識別子Ｃ００１、Ｃ００２、・・・Ｃ００Ｘのそれぞれに関連付けられる。
【００８４】
例えば、図８に示すごとく、識別子００４０に関連付けられたパラメータＰ２−２、Ｐ３−１、Ｐ４−４、・・・、ＰＭ−７もまた、処理識別子Ｃ００１に関連付けられている。すなわち、パラメータ集合を、識別子００４０と、処理識別子Ｃ００１、Ｃ００２、・・・Ｃ００Ｘとの双方に関連付けることができるため、識別子００４０に関連付けられて存在するパラメータ集合を異ならせることができる。このような構成を実現することにより、それぞれのパラメータが示すある値をどのように設定するかに関する自由度を高めることができる。特に、あるバージョンのソフトウエアプログラムが、広範囲で様々な処理能力を有する処理調整部上で実行される場合、例えば、図６に示すシステム５００で運用される場合に、効果的である。
【００８５】
図７に再度戻り、動作４１０において、変換テーブル５５０が処理調整部１１８内にローカルに保存されているか、または、処理調整部１１８から離れた場所、例えば、（図６のネットワーク５０４と同一視できる）ネットワーク１２４上のノード等にリモートに配置されているかについての決定がなされる。ここで、一つ以上のローカルメモリ２７０（図３）および／または、一つ以上のプロセッサ要素２００内の共有メモリ２１４（図２）内にも変換テーブル５５０を保存できる。変換テーブル５５０がローカルに保存されることで、リモートに配置された際の変換テーブルにアクセスするために必要な時間および動作を省くことができる。他方、変換テーブル５５０のコンテンツが正確かつ最新であることを保証するために、管理者権限を有するエンティティによって管理かつ維持されうる離れた場所に変換テーブル５５０を保存することは有益である。
【００８６】
ここで、図９を参照する。図９は、インターネット１２４等のネットワークに動作可能に接続される（好適にはモニター１２０を含む）処理調整部１１８を備える処理システム３８０のブロック図を示す。管理者権限を有するエンティティのサービスを提供する管理者３８２もまた、インターネット１２４に動作可能に接続される。管理者３８２には、データベース３８６に接続可能なネットワークおよび／またはデータベースサーバ３８４が含まれるのが好ましい。データベース３８６は、当該サーバ３８４と同じ場所に設けられてもよいし、他のネットワーク接続を介することで、リモートに当該サーバに接続されてもよい。不図示ではあるが、複数の他の（様々な処理能力を備えうる）処理調整部もまた、インターネット１２４に接続でき、後述の管理者３８２により提供されるサービスを利用できる。
【００８７】
変換テーブル５５０が、処理調整部１１８等の一つ以上の処理調整部上にローカルに保存されていない場合でも（あるいは、変換テーブルそのもののバージョンがローカルに保存されている場合も含む）、変換テーブル５５０のバージョンは、実質的に正確かつ最新である状態で、管理者３８２のデータベース３８６内に保持されているのが好ましい。図７に再度戻り、もし、変換テーブル５５０がローカルに保存されていなければ、処理フローは好適には、動作４１２に進む。動作４１２では、処理調整部１１８等のある処理調整部は、インターネット１２４を介して管理者３８２と通信リンクを確立する。インターネット１２４は好適なリンクを提供するが、任意の既知の通信技術もまた、発明の精神および範囲から逸脱することなくリンクを確立するために用いられることは明らかである。管理者３８２と通信リンクを確立する動作の一部には、処理調整部１１８またはユーザの認証処理が含まれる場合がある。実際には、管理者３８２により提供されるサービスは、管理者に対して代金を支払う意思がないユーザまたは別の方法で埋め合わせを行う意思がないユーザには享受される必要はない。従って、当該認証処理には、処理調整部１１８から管理者３８２への既知の技術による、十分に一意である情報を送信する動作や、別に当該情報を管理する動作が含まれる。当該情報には、ユーザ名および／またはパスワード、メンバ名、ある種のシリアルナンバー、ソフトウエア購入の際の証明書などが含まれうる。
【００８８】
いったん、処理調整部１１８と管理者３８２との間に通信リンクが確立されれば、処理は好適には動作４１４に進む。動作４１４では、少なくとも（ソフトウエアプログラムＩＤや他の指標等の）ソフトウエアプログラムに関する識別情報が、インターネット１２４を介して処理調整部１１８から管理者３８２に送信される。また、必須ではないが、変換テーブル５５０には好適には次元５５６が含まれる。この次元５５６により、プレイヤーのＩＤナンバーや処理能力を表す他の指標等の処理識別子を、処理調整部１１８から管理者３８２にインターネット１２４を介して送信するよう指示できる。
【００８９】
次に、管理者３８２は好適には、サーバ３８４を用いて入力されるデータを処理し、変換テーブル５５０にアクセスする（動作４１６）。特に、サーバ３８４は好適には、ソフトウエアプログラムの実行の際に所望の結果を得ることができるよう、識別情報（および、必要であれば処理識別子）を用いて、処理調整部１１８の処理能力を調整するパラメータ集合を取得する。その後、サーバ３８４は好適には、適切な形式（例えば、前述のセル形式）にパラメータをパッケージ化し、当該パッケージ化されたパラメータをインターネット１２４を介して処理調整部１１８に送信する。その後、処理フローは図１０の節点Ｂに進む。以下、図１０を参照する。
【００９０】
動作４１８では、処理調整部１１８は、好適には、（変換テーブル５５０から取得されたパラメータが、ローカルに保存されたバージョンに基づいて取得されようと、管理者エンティティから取得されようと、）当該パラメータを用いて、処理能力を変化させる処理を行う。オペレーションシステムの制御下または他のシステムレベルの制御プログラムの制御下に処理調整部１１８を置くと想定すれば、処理調整部１１８の処理能力を変化せしめる動作を行うことができる程度のプログラムに当該パラメータを提供するのが好ましい。他方、すべてのハードウエア面からのアプローチ、および／または、ソフトウエアおよびハードウエアの組み合わせの面からのアプローチが採用された場合、記憶域やレジスタなどの好適な送り先に当該パラメータを提供するのが好ましい。動作４２０では、処理調整部１１８は、提供されるパラメータに従って、自身の処理特性を変化させるのが好ましい。
【００９１】
プロセッサ要素２００の種類が広範に及ぶ場合、処理調整部１１８の処理特性を変化させるために採用されるアプローチは多岐にわたることがあり、本明細書でそのいくつかの例を後述する。なお、ここで、そのような処理特性の変化が正常に行われた場合、処理フローは好適には動作４２２に進む。動作４２２では、当該変化された処理特性を用いてソフトウエアプログラムが実行される。処理調整部１１８は、ソフトウエアプログラムが開発された時点で考慮される処理能力を真似る（mimic;処理能力に一致させる）ことができるため、ソフトウエアプログラムの実行時の異常を回避できる点において有意義である。
【００９２】
図１１は、処理調整部１１８によるプログラムコンテンツのセキュアな方法でのダウンロードを可能とするシステム６１０の一例を示す。なお、当該プログラムコンテンツとは、例えば、ソフトウエアプログラムおよび／または上述のパラメータ集合であり、セキュアな方法とは、例えば、認証されていないプログラムの複製物が排除されるか、使いものにならないものにさせる方法である。そのようなシステムは、２００２年１２月１１日に出願された、米国出願番号Ｎｏ．１０／３１６６７５の「METHODS AND APPARATUS FOR SECURE DISTRIBUTION OF PROGRAM CONTENT」に記載されており、当該文献の開示内容は参照により本明細書に援用される。
【００９３】
システム６１０には、好適には、管理者サーバ６０１、第３者サーバ６０２、暗号化サーバ６０３、処理調整部１１８等の複数のクライアント端末装置６０４、およびこれら装置を接続するインターネット等のネットワーク６０５が含まれる。システム６１０は、管理者サーバ６０１、第３者サーバ６０２や暗号化サーバ６０３を複数含んでもよい。簡潔かつ明確にするために、それぞれのサーバを一つだけにして、以下説明する。
【００９４】
サーバ６０１，６０２，６０３のそれぞれは好適には、エンティティや人によって、維持され、管理され、および／または別に、当該エンティティや人に関連付けられる。ここで、サーバとエンティティとは相互に関連付けられたものとして以下説明する。
【００９５】
上述のサーバ３８４等の管理者サーバ６０１は、好適には、上述のデータベース３８６等の顧客データベース６０６に接続され、ある管理者権限の機能を実行するエンティティにより、維持され、管理され、および／または別に、当該エンティティに関連付けられる。管理者サーバ６０１および顧客データベース６０６は、ネットワークサーバの機能およびデータベースの機能を実行するために適切な既知のハードウエアを用いて実装されうる。
【００９６】
第３者サーバ６０２は、好適には、ソフトウエアプログラムの開発者などの管理者サーバ６０１のエンティティとは異なるエンティティにより、維持され、管理され、および／または別に、当該エンティティに関連付けられる。一例として、第３者サーバ６０２は、コンピュータアプリケーションプログラムやコンピュータシステムプログラムの開発者であってよく、および／または、処理調整部１１８により用いられるパラメータ集合を提供して上述のごとく処理能力を調整してもよい。なお、第３者サーバ６０２に関連付けられたエンティティは、管理者サーバ６０１のエンティティと異なる必要はなく、実際には、同一のエンティティであってもよい。例えば、第３者サーバ６０２により実行される機能を、管理者サーバ６０１が実行してもよい。第３者サーバ６０２は、サーバに関する機能を実行するための任意の既知のハードウエアを用いて実装されうる。
【００９７】
暗号化サーバ６０３は、好適には、管理者サーバ６０１のエンティティと同一のエンティティにより、維持され、管理され、および／または別に、当該エンティティに関連付けられる。一例として、暗号化サーバは、管理者３８２内のサーバ３８４と同一場所に設けられてもよい。なお、暗号化サーバ６０３は他のエンティティに関連付けられてもよい。暗号化サーバ６０３は、サーバに関する機能を実行するための任意の既知のハードウエアを用いて実装されうる。管理者サーバ６０１、第３者サーバ６０２および暗号化サーバ６０３により実行されるそれぞれの機能を、管理し維持しおよび／または別にそれらサーバに関連付けられる一つ以上のサーバおよび／または一つ以上のエンティティ間で分散させることができる。なお、その分散された状態は、図１１に示される状態と一致するのが好ましい。
【００９８】
一般的に、それぞれのクライアント端末装置６０４は、好適には、任意の既知のハードディスクドライブハードウエア等のハードディスクドライブ６０７、およびソニーのメモリスティック等のメモリーカード６０８と連結可能である。他には、上述したＣＤドライブ、ＤＶＤドライブ、あるいはＢｌｕ−ｒａｙＤｉｓｃドライブ等の光学デバイスと連結可能である。ハードディスクドライブ６０７、メモリーカード６０８、および／または光学デバイス（クライアント端末装置６０４に対し、取り外し可能であるのが好ましい）は、装置６０４とは別ものとして図示されているが、装置６０４に一体化して設けられてもよい。クライアント端末装置６０４は、パーソナルコンピュータや出願人自身のプレイステーション等の任意の既知のハードウエアを用いて実装されてもよい。
【００９９】
クライアント端末装置６０４は、好適には一つ以上の処理調整部１１８を含み、さらに、ネットワーク６０５を介したダウンロードにより、ソース暗号化プログラムまたはソース暗号化パラメータ集合を取得できる。権限が与えられた任意のエンティティから、ソース暗号化プログラムまたはソース暗号化パラメータ集合を取得することができるが、クライアント端末装置６０４が、（例えば、ネットワーク６０５を介したダウンロードにより）、第３者サーバ６０２または管理者サーバ６０１から、そのソース暗号化プログラムまたはソース暗号化パラメータ集合を取得するのが好ましい。
【０１００】
エンドユーザは、ある形式（すなわち、ソースが暗号化された形式）のコンピュータプログラムおよび／またはパラメータ集合を取得できる。この場合、復号鍵を取得しソース暗号化プログラムを復号してはじめて、当該コンピュータプログラムおよび／またはパラメータ集合を用いて、クライアント端末装置６０４内の処理調整部の処理能力を調整するプログラムを実行できる。その復号鍵は、権限が与えられたクライアント端末装置６０４によってのみ取得される。
【０１０１】
図１２を参照すると、本図は、暗号化サーバ６０３および第３者サーバ６０２により実行される処理ステップの概念構成およびフローを示す図である。本図は、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合が生成される方法の一例が示されている。この例において、第３者サーバ６０２は、ソフトウエア開発者に関連づけられる。なお、当該ソフトウエア開発者は、自分自身、あるいは、当該自身に他のエンティティを併用してのいずれかで、プログラムおよび／またはパラメータ集合を取得する。図１２に示すように、第３者サーバ６０２は、システムプログラムやアプリケーションプログラム等の少なくとも一つのプログラム、および／または少なくとも一つのパラメータ集合を備えることができる。一つ以上のこれらのプログラムまたはパラメータ集合は、ネットワーク６０５を介して暗号化サーバ６０３に送信される。
【０１０２】
暗号化サーバ６０３は、好適には、そのプログラムやパラメータ集合を暗号化し、当該暗号化されたプログラムや暗号化されたパラメータ集合を第３者サーバ６０２に返す。当該暗号化処理では、公開鍵暗号方式や対称鍵暗号方式などの任意の既知の暗号化技術を用いることができ、これにより暗号化されたプログラムやパラメータ集合を生成できる。
また、暗号化サーバ６０３は、第３者サーバ６０２に復号鍵をも提供する。当該復号鍵により、暗号化されたソフトウエアプログラムやパラメータ集合を復号化できる。第３者サーバ６０２は、ネットワーク６０５を介した電子的な通信により、暗号化されたプログラムやパラメータ集合をクライアント端末装置６０４に配布できる。ソース暗号化プログラムまたはソース暗号化パラメータ集合がどのように配布されるかとは無関係に、エンドユーザは好適には、ある登録処理を実行してはじめて、プログラムを実行するか、またはパラメータ集合を用いた処理能力の調整を行うことができる。
【０１０３】
図１３は、ソース暗号化コンピュータプログラムおよび／またはソース暗号化パラメータ集合を処理するために実行される、ある処理ステップの概念構成およびフローを示す図である。クライアント端末装置６０４は好適には、ネットワーク６０５を介したダウンロード動作により、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を取得する。なお、ソース暗号化コンピュータプログラムを実行し、またはソース暗号化パラメータ集合を用いるためには、クライアント端末装置６０４は好適には、当該ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を、ネットワーク６０５を介して管理者サーバ６０１に登録しなければならない。
【０１０４】
当該登録処理に関する少なくともいくつかのステップを、図１４のフロー図に示す。ステップ２０において、クライアント端末装置６０４は、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を取得し、それらを上述のごとく保存する。ステップ２２では、ユーザは好適には、コンピュータプログラムをインストールし、かついつても実行できる準備をさせる旨の指示、あるいは、暗号化パラメータ集合を用いる旨の指示を与える。この点において、クライアント端末装置６０４には好適には、ユーザのインストール指示に応答して呼び出されるコンピュータプログラムが含まれる。当該プログラムは、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合の登録をユーザに促すものであり、通信機能を呼び出す（Ｓ２４）。
【０１０５】
ここで、クライアント端末装置６０４は好適には、ネットワークインタフェースを含むのが好ましい。このネットワークインタフェースにより、既知の技術であるネットワーク６０５を介した通信を提供できる。任意の既知のネットワークインタフェースハードウエアはこの目的のために用いられうる。ステップ２６において、通信チャンネルは好適にはクライアント端末装置６０４によって開始され、クライアント端末装置６０４および管理者サーバ６０１間で確立される。クライアント端末装置６０４が有するネットワークインタフェースにより、当該クライアント端末装置６０４に関連する少なくともいくつかの識別情報を、ネットワーク６０５を介して管理者サーバ６０１に送信することが容易になる。当該識別情報には好適には、特に、クライアント端末装置６０４にとって十分に一意である、プレイヤーＩＤ等の機器ＩＤが含まれる。また、当該識別情報には、媒体ＩＤが含まれてもよい。なお、媒体ＩＤとは、ソース暗号化コンピュータプログラムの保存のためにクライアント端末装置６０４により使用されるメモリタイプ（メモリの型番）を示すものである。
【０１０６】
クライアント端末装置６０４には好適には、以下の第１の記録デバイスおよび第２の記録デバイスが含まれる。当該第１の記録デバイスは、例えば、ハードディスクドライブ６０７やメモリーカード６０８であり、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を、後述するある他の情報とともに記録できる。当該第２の記録デバイスは、機器ＩＤを記録できる読み出し専用メモリ（ＲＯＭ）などである。クライアント端末装置６０４が有するネットワークインタフェースにより、（ＲＯＭから取得された）機器ＩＤを、ネットワーク６０５を介して管理者サーバ６０１に送信することがさらに可能になる（動作Ｓ２８）。媒体ＩＤもまた、クライアント端末装置６０４から管理者サーバ６０１宛てに送信できる。
【０１０７】
図１５を参照すると、管理者サーバ６０１は、クライアント端末装置６０４から、ネットワーク６０５を介して、機器ＩＤ（および、可能であれば媒体ＩＤ）等の識別情報を取得する（Ｓ３０）。この点について、管理者サーバ６０１にはネットワークインタフェースが含まれるのが好ましい。当該ネットワークインタフェースによりネットワーク６０５との通信を容易にすることで、当該ネットワーク６０５を介したクライアント端末装置６０４からの識別情報の取得を実現できる。ステップ３２において、管理者サーバ６０１は、クライアント端末装置６０４から取得した機器ＩＤに対応する、ここでは仮想ＩＤと呼ばれる他のＩＤを当該機器ＩＤに割り当てる。ここで、仮想ＩＤは、複数の予め存在するＩＤ群の中から選択されるものであってもよいし、機器ＩＤまたはある他の数値に基づく数値演算を通じて導出されるものであってもよいし、あるいは、任意の他の既知の、または後述の改良技術を用いることで生成されてもよい。
【０１０８】
ステップ３４において、管理者サーバ６０１は顧客データベース６０６を対象に、クライアント端末装置６０４から取得した機器ＩＤ（すなわち、その第２記憶デバイス（ＲＯＭ）内に保持される機器ＩＤ）と一致する既存の機器ＩＤを検索する。図１６に示すごとく、顧客データベース６０６には好適には、それぞれの登録情報、すなわち、クライアント端末装置６０４のそれぞれに対応するそれぞれの登録情報一式が保持される。少なくとも、その登録情報には、クライアント端末装置６０４に関するある識別情報、例えば、機器ＩＤが含まれる。図１６に示すごとく、複数の機器ＩＤが、顧客データベース６０６内にあらかじめ保持されており、その様子は図１６の左側の列に示されている。こうした機器ＩＤ群のそれぞれは好適には、所与のクライアント端末装置６０４の一つ一つに対応するものであり、かつその機器ＩＤは、それぞれのクライアント端末装置６０４に対し十分に一意である。管理者サーバ６０１にもまた、好適にはデータプロセッサが含まれる。当該データプロセッサによれば、顧客データベース６０６を対象に、ネットワーク６０５を介したクライアント端末装置６０４から取得される機器ＩＤと一致する登録情報（例えば、機器ＩＤ）の検索を実現できる。この目的のために、任意の既知の、または後述の改良されたデータ処理用のハードウエアを用いることができる。
【０１０９】
図１５に再度戻り、ステップＳ３６において、仮想ＩＤは、顧客データベース６０６内に保持される機器ＩＤに関連付けられる。すなわち、仮想ＩＤは、管理者サーバ６０１宛てに機器ＩＤを送信した特定のクライアント端末装置６０４に関連付けられる。当該関連付けは、保持された機器ＩＤに対応付けるような方法で、仮想ＩＤを顧客データベース６０６内に記録せしめることで実現できる。
【０１１０】
上述したように、クライアント端末装置６０４から管理者サーバ６０１へのネットワーク６０５を介した識別情報の送信動作には（図１４のステップ２８）、媒体ＩＤ（またはメディアＩＤ）の送信動作が含まれてもよい。なお、媒体ＩＤとは、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合の保存のためにクライアント端末装置６０４によって使用される、記録デバイスのタイプに対応するものである。媒体ＩＤにより、例えば、クライアント端末装置６０４が、ハードディスクドライブ６０７内部、メモリーカード６０８内部、あるいは、ある他のタイプの記録媒体内部に、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合が保持されていることを知らせることができる。媒体ＩＤの取得を受けて、管理者サーバ６０１は、記録されている機器ＩＤおよび取得された媒体ＩＤに仮想ＩＤを関連付けることができる。その際、媒体ＩＤは、顧客データベース６０６内において、当該記録された機器ＩＤに対応する場所に記録される。
【０１１１】
図１７および図１８に示すごとく、管理者サーバ６０１は好適には、暗号化された復号鍵および暗号化された仮想ＩＤを生成することが可能である。ここで、その復号鍵は、クライアント端末装置６０４上の、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を復号化するために用いることができる。ここで、管理者サーバ６０１は、（図１１から図１２までに示された）暗号化サーバ６０３により生成された、それぞれのソース暗号化コンピュータプログラムを復号化するために用いられる任意の数の復号鍵群にアクセスする。これらの復号鍵は、暗号化サーバ６０３および／または第３者サーバ６０２により、管理者サーバ６０１に提供される。さらに、その復号鍵は、ネットワーク６０５や他のネットワークを介して管理者サーバ６０１に送信されてもよいし、あるいは、記録メディアにより人手で提供されてもよい。
【０１１２】
ステップ４０において、管理者サーバ６０１は好適には、クライアント端末装置６０４に関連付けられた仮想ＩＤを用いて復号鍵を暗号化する。さらに、管理者サーバ６０１は好適には、クライアント端末装置６０４について関連づけられた機器ＩＤを用いて、その仮想ＩＤを暗号化する。なお、機器ＩＤのそれぞれは、顧客データベース６０６から取得される（Ｓ４２）。
【０１１３】
管理者サーバ６０１が有するネットワークインタフェースによれば、ネットワーク６０５を介した、暗号化された復号鍵および暗号化された仮想ＩＤのクライアント端末装置６０４への送信をさらに容易にできる（Ｓ４４）。ステップ４６において、クライアント端末装置６０４は好適には、ネットワーク６０５を介して、暗号化された復号鍵および暗号化された仮想ＩＤを取得し、当該取得したそれらを、（ハードディスクドライブ６０７やメモリーカード６０８などの）第１の記録デバイス内に保存する。
【０１１４】
暗号化された復号鍵は、権限が与えられたクライアント端末装置６０４、例えば、有効な機器ＩＤを提供し、かつ復号鍵の暗号化用の仮想ＩＤに関連付けられた当該機器ＩＤを登録したクライアント端末装置６０４のみに提供される。さらに、暗号化された復号鍵に関する任意の妨害、例えば、ネットワークでの著作権侵害行為や権限が与えられない複製等があったとしても、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を復号化するために必要な情報（すなわち、有効な復号鍵）が提供されることはない。実際には、そのような復号鍵は、十分に一意である仮想ＩＤにより暗号化される。また、その暗号化された仮想ＩＤは、登録処理が完了し、かつクライアント端末装置６０４に権限が与えられてはじめて、クライアント端末装置６０４宛てに提供される。仮想ＩＤは、管理者サーバ６０１からクライアント端末装置６０４に暗号化された状態で送信されるため（すなわち、クライアント端末装置６０４の機器ＩＤを用いて暗号化されるため）、暗号化された仮想ＩＤを権限なく取得しても、暗号化された復号鍵を復号化するための必要な情報が与えられることはない。
【０１１５】
図１９および図２０は、クライアント端末装置６０４内のソース暗号化コンピュータプログラムおよび／またはソース暗号化パラメータ集合をロードする／インストールするために実行される、ある処理を示す。図１９は、ハードディスクドライブ６０７やメモリーカード６０８などの第１の記録デバイスと別個にされたクライアント端末装置６０４を示す。なお、上述したように、これらの構成要素は一体化または部分的に一体化されてもよい。ここで、当該処理のこの段階において、クライアント端末装置６０４内には、ＲＯＭ等の第２のデバイス内に記録された機器ＩＤが含まれ、かつ、第１の記録デバイス６０７，６０８には、機器ＩＤ、暗号化された仮想ＩＤ、暗号化された復号鍵、および暗号化されたコンピュータプログラム等が含まれる。
【０１１６】
ステップ５０において、ユーザは、ソース暗号化コンピュータプログラムをロードする／インストールする旨の指示、あるいは、ソース暗号化パラメータ集合を用いて処理能力を調整する旨の指示を、クライアント端末装置６０４に対し与えることができる。当該ユーザからの指示を受けて、クライアント端末装置６０４は、適切なハードウエアを用いて、かつソフトウエアによる処理を行うことで、第１の記録デバイス６０７，６０８から機器ＩＤを読み出すとともに、ＲＯＭなどの第２の記録デバイスからも機器ＩＤを読み出す（Ｓ５２）。ステップ５４では、これらの機器ＩＤが一致するか否かについての決定がなされる。これらの機器ＩＤが一致しない場合、処理は中止され、および／または他の処理が開始される。一方、これらの機器ＩＤが一致する場合、処理はＳ５６に進む。ここでは、暗号化された仮想ＩＤは、機器ＩＤ（ＲＯＭ内に記憶される機器ＩＤが好ましい）を用いて復号化される。仮想ＩＤがいったん生成されれば、暗号化された復号鍵は、当該生成された仮想ＩＤを用いて復号化される（Ｓ５８）。次に、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合は、その復号鍵を用いて復号化される（Ｓ６０）。ステップ６２において、コンピュータプログラムまたはパラメータ集合は、ステップ５６で得た仮想ＩＤを用いて再度暗号化され、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合を取得する。クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合は、第１の記録デバイス６０７，６０８内に保存される（Ｓ６４）。この段階においては、暗号化された復号鍵、ソース暗号化プログラム、ソース暗号化パラメータ集合は、いずれも、第１のデバイス６０７，６０８内に保持される必要はない。
【０１１７】
クライアント端末装置６０４には好適には、上述した暗号化機能および復号化機能を実行するための復号化デバイスおよび暗号化デバイスが含まれる。当該復号化デバイスおよび暗号化デバイスは一体化することができ、簡潔化のために、それらを復号化デバイスと呼んでもよい。そのような暗号化および復号化を実現するために、任意の既知のまたは後述の改良されたハードウエアおよび／またはソフトウエアが、本発明に従って用いられる。例えば、復号化ライブラリや暗号化ライブラリなどが用いられる。
【０１１８】
クライアント側で暗号化したコンピュータプログラムおよび／またはクライアント側で暗号化したパラメータ集合は、安全性が高い。なぜなら、権限が与えられていない、異なるクライアント端末装置６０４上のエンドユーザは、権限のないその複製物を実行することはできないためである。実際に、クライアント側で暗号化したコンピュータプログラムおよび／またはクライアント側で暗号化したパラメータ集合は、最初に復号化される必要がある。なお、当該プログラムおよび／またはパラメータ集合は、後述するように、管理者サーバ６０１にコンピュータプログラムを登録した端末以外の任意のクライアント端末装置６０４上では実行できない。
【０１１９】
図２１および図２２を参照し、コンピュータプログラムがクライアント端末装置６０４により実行される処理をここで述べる。その処理のこの段階において、クライアント端末装置６０４には、機器ＩＤを含むＲＯＭなどの第２の記録デバイスと、機器ＩＤ、暗号化された仮想ＩＤ、およびクライアント側で暗号化したコンピュータプログラムを備える第１の記録デバイスとが含まれる。
【０１２０】
Ｓ７０において、ユーザは、コンピュータプログラムを実行する旨の指示をクライアント端末装置６０４に与える。適切なコンピュータプログラムの制御下で動作するクライアント端末装置は、ユーザからの指示を受けて、第１の記録デバイス６０７，６０８から機器ＩＤを読み出すとともに、第２の記録デバイス（ＲＯＭ）からも機器ＩＤを読み出す（Ｓ７２）。ステップ７４では、これらの機器ＩＤが互いに一致するか否かについての決定がなされる。これらの機器ＩＤが一致する場合、処理はＳ７６に進む。ここでは、暗号化された仮想ＩＤは、機器ＩＤ（ＲＯＭ内に記憶される機器ＩＤが好ましい）を用いて復号化される。仮想ＩＤがいったん生成されれば、暗号化された復号鍵は、当該生成された仮想ＩＤを用いて復号化される（Ｓ５８）。ここでは、クライアント端末装置６０４の復号化デバイスが、機器ＩＤ（ＲＯＭ内に記憶される機器ＩＤが好ましい）を用いて、暗号化された仮想ＩＤを復号化する。ステップ７８において、クライアント端末装置６０４の復号化デバイスは、ステップＳ７６で得られた仮想ＩＤを用いて、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合を復号化する。このとき、クライアント端末装置６０４は、ＲＡＭ内に存在するコンピュータプログラムを実行してもよいし、処理調整部の処理能力を調整してもよい。
【０１２１】
クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合は、当該クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合を暗号化するために使用された仮想ＩＤに関連付けられたクライアント端末装置６０４のみによって、復号化される。従って、権限が与えられていない、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合の複製物が、権限が与えられていないエンドユーザに提供された場合、そのようなエンドユーザがコンピュータを実行しようとし、あるいはパラメータ集合を使用しようとする装置では、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合を復号化することはできない。さらに、第１の記録デバイス６０７，６０８が、権限が与えられていないエンドユーザに与えられた場合（例えば、当該記憶デバイス６０７，６０８が異なるクライアント端末装置６０４に接続された場合）、ＲＯＭに記憶された任意の機器ＩＤと第１の記録デバイスに含まれる機器ＩＤとは一致しないため、その暗号化された仮想ＩＤを復号化できない。従って、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合を、復号化することは不可能である。クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合をセキュアに配布することで、権限が与えられていない複製物を使いものにならないものにし、かつ特定のクライアント端末装置６０４だけが、コンピュータプログラムを実行し、および／または処理能力を調整することを保証できる。
【０１２２】
上述した態様では、復号鍵がネットワーク６０５を介してクライアント端末装置６０４により提供されることについて考慮されているが、他の態様として、当該復号鍵が、（ＣＤ−ＲＯＭなどの）記録媒体により人手でクライアント端末装置６０４に提供されることを考慮したものがある。ここで、本発明に係るこうした態様を、図２３および図２４を用いて説明する。図２３に示すごとく、クライアント端末装置６０４は、記録媒体６０９Ａにより提供された、暗号化された第１の復号鍵を取得する。この第１の復号鍵は、クライアント端末装置６０４上のソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合の復号化に用いることができる。管理者サーバ６０１は好適には、暗号化された第２の復号鍵および暗号化された仮想ＩＤを生成できる。なお、第２の復号鍵は、暗号化された第１の復号鍵の復号化に用いることができる。ここで、管理者サーバ６０１は任意の数の第２の復号鍵にアクセスし、当該復号鍵を用いて、暗号化された第１の復号鍵のそれぞれを復号化する。これらの第２の復号鍵は、暗号化サーバ６０３および／または第３者サーバ６０２により、管理者サーバ６０１に提供される。さらに、これらの第２の復号鍵は、ネットワーク６０５や他のネットワークを介して管理者サーバ６０１に送信されてもよいし、あるいは、記録メディアにより人手で提供されてもよい。
【０１２３】
ステップ４０Ａにおいて、管理者サーバ６０１は好適には、クライアント端末装置６０４に関連付けられた仮想ＩＤを用いて第２の復号鍵を暗号化する。さらに、管理者サーバ６０１は好適には、クライアント端末装置６０４について関連づけられた機器ＩＤを用いて、その仮想ＩＤを暗号化する。なお、機器ＩＤのそれぞれは、顧客データベース６０６から取得される（Ｓ４２）。管理者サーバ６０１が有するネットワークインタフェースによれば、ネットワーク６０５を介した、暗号化された第２の復号鍵および暗号化された仮想ＩＤのクライアント端末装置６０４への送信をさらに容易にできる（Ｓ４４Ａ）。ステップ４６Ａにおいて、クライアント端末装置６０４は好適には、ネットワーク６０５を介して、暗号化された第２の復号鍵および暗号化された仮想ＩＤを取得し、当該取得したそれらを、（ハードディスクドライブ６０７やメモリーカード６０８などの）第１の記録デバイス内に保存する。
【０１２４】
暗号化された第２の復号鍵は、権限が与えられたクライアント端末装置６０４、例えば、有効な機器ＩＤを提供し、かつ第２の復号鍵の暗号化用の仮想ＩＤに関連付けられた当該機器ＩＤを登録したクライアント端末装置６０４のみに提供される。さらに、暗号化された第２の復号鍵に関する任意の妨害、例えば、ネットワークでの著作権侵害行為や権限が与えられない複製等があったとしても、暗号化された第１の復号鍵を復号化するために必要な情報（すなわち、有効な第２の復号鍵）が提供されることはない。実際には、そのような第２の復号鍵は、十分に一意である仮想ＩＤにより暗号化される。同様に、その暗号化された仮想ＩＤは、登録処理が完了し、かつクライアント端末装置６０４に権限が与えられてはじめて、クライアント端末装置６０４宛てに提供される。仮想ＩＤは、管理者サーバ６０１からクライアント端末装置６０４に暗号化された状態で送信されるため（すなわち、クライアント端末装置６０４の機器ＩＤを用いて暗号化されるため）、暗号化された仮想ＩＤを権限なく取得しても、暗号化された第２の復号鍵を復号化するための必要な情報が与えられることはない。
【０１２５】
図２５および図２６は、クライアント端末装置６０４内のソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合をロードする／インストールするために実行される、ある処理を示したものである。ここで、当該処理のこの段階において、クライアント端末装置６０４内には、第２のデバイス（ＲＯＭ）内に記録された機器ＩＤが含まれ、かつ、第１の記録デバイス６０７，６０８には、機器ＩＤ、暗号化された仮想ＩＤ、暗号化された第２の復号鍵、暗号化された第１の復号鍵、およびソース暗号化コンピュータプログラムおよび／またはソース暗号化パラメータ集合等が含まれる。
【０１２６】
ステップ５０において、ユーザは、将来の使用のためのソース暗号化コンピュータプログラムおよび／またはソース暗号化パラメータ集合をロードする／インストールする旨の指示を、クライアント端末装置６０４に対し与えることができる。当該ユーザからの指示を受けて、クライアント端末装置６０４は、適切なハードウエアを用いて、かつソフトウエアによる処理を行うことで、第１の記録デバイス６０７，６０８から機器ＩＤを読み出すとともに、ＲＯＭなどの第２の記録デバイスからも機器ＩＤを読み出す（Ｓ５２）。ステップ５４では、これらの機器ＩＤが一致するか否かについての決定がなされる。これらの機器ＩＤが一致しない場合、処理は中止され、および／または他の処理が開始される。一方、これらの機器ＩＤが一致する場合、処理はＳ５６に進む。ここでは、暗号化された仮想ＩＤは、機器ＩＤ（ＲＯＭ内に記憶される機器ＩＤが好ましい）を用いて復号化される。仮想ＩＤがいったん生成されれば、暗号化された第２の復号鍵は、当該生成された仮想ＩＤを用いて復号化され、かつ暗号化された第１の復号鍵は第２の復号鍵を用いて復号化される（Ｓ５８Ａ）。次に、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合は、第１の復号鍵を用いて復号化される（Ｓ６０Ａ）。ステップ６２において、コンピュータプログラムまたはパラメータ集合は、ステップ５６で得た仮想ＩＤを用いて再度暗号化され、クライアント側で暗号化したコンピュータプログラムを生成する。クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合は、第１の記録デバイス６０７，６０８内に保存される（Ｓ６４）。この段階においては、暗号化された第１の復号鍵、暗号化された第２の復号鍵、ソース暗号化プログラム、ソース暗号化パラメータ集合は、いずれも、第１のデバイス６０７，６０８内に保持される必要はない。
【０１２７】
いったん、クライアント側で暗号化したコンピュータプログラムまたはクライアント側で暗号化したパラメータ集合が生成され、かつ第１の記録デバイス６０７，６０８内に記憶されれば、図２１および図２２を参照して説明した処理が用いられ、コンピュータプログラムが実行される。
【０１２８】
図２７は、処理調整部１１８による上述のコンピュータプログラムまたはパラメータ集合のセキュアな方法でのダウンロードを可能とする他のシステム７１０を示す。セキュアな方法とは、例えば、認証されていないプログラムの複製物が排除されるか、使いものにならないものにさせる方法である。そのようなシステムは、参照により本明細書に援用される、２００２年１２月１日に出願された、米国出願番号Ｎｏ．１０／３１６３０９の「METHODS AND APPARATUS FOR SECURE DISTRIBUTION OF CONTENT」に記載されている。
【０１２９】
システム７１０には、好適には、第３者サーバ７０１、暗号化サーバ７０２、配布サーバ７０３、処理調整部１１８等の複数のクライアント端末装置７０５、およびこれら装置を接続するインターネット等のネットワーク７０６が含まれる。システム７１０は、第３者サーバ７０１、暗号化サーバ７０２、配布サーバ７０３および／または管理者サーバ７０４を複数含んでもよい。簡潔かつ明確にするために、それぞれのサーバを一つだけにして、以下説明する。サーバ７０１，７０２，７０３，７０４のそれぞれは、エンティティや人によって、維持され、管理され、および／または別に、当該エンティティや人に関連付けられるのが好ましい。以下、サーバとエンティティとは相互に関連付けられたものとして説明する。
【０１３０】
第３者サーバ７０１は、図１１を参照して上述したように、ソフトウエアプログラムの開発者などのエンティティにより、維持され、管理され、および／または別に、当該エンティティに関連付けられる。
【０１３１】
暗号化サーバ７０２は好適には、管理者権限の機能を有するエンティティにより、維持され、管理され、および／また別に、当該エンティティに関連付けられる。当該エンティティは、管理者サーバ７０４に関するエンティティと同一のエンティティであるのが好ましい。なお、暗号化サーバ７０２は、サーバに関する機能を実行するための任意の既知のハードウエアを用いて実装されうる。
【０１３２】
配布サーバ７０３は好適には、ネットワーク７０６等を介して、ソフトウエアプログラムまたはパラメータ集合を、クライアント端末装置７０５に配布させるエンティティにより、維持され、管理され、および／または別に、当該エンティティに関連付けられる。配布サーバ７０３は好適には、詳細は後述するが、データベース３８６等の顧客データベース７０７に接続される。配布サーバ７０３および顧客データベース７０７は、ネットワークサーバの機能およびデータベースの機能を実行するために適切な既知のハードウエアを用いて実装されうる。
【０１３３】
サーバ３８４等の管理者サーバ７０４は、ある管理者権限の機能を実行するエンティティにより、維持され、管理され、および／または別に、当該エンティティに関連付けられる。管理者サーバ７０４は、ネットワークサーバの機能およびデータベースの機能を実行するために適切な既知のハードウエアを用いて実装されうる。
【０１３４】
第３者サーバ７０１、暗号化サーバ７０２、配布サーバ７０３、および管理者サーバ７０４により実行されるそれぞれの機能を、管理し維持しおよび／または別にそれらサーバに関連付けられる一つ以上のサーバおよび／または一つ以上のエンティティ間で分散させることができる。実際には、それぞれのサーバに対してエンティティを別々にする必要はなく、例えば、一つのエンティティを、配布サーバ７０３および管理者サーバ７０４に関連付けることも可能である。なお、分散された状態は、図２７に示される状態と一致するのが好ましい。
【０１３５】
一般的に、それぞれのクライアント端末装置７０５は、好適には、一つ以上の処理調整部１１８を含み、任意の既知のハードディスクドライブハードウエア等のハードディスクドライブ７０８、およびソニーのメモリスティック等のメモリーカード７０９を動作可能に接続する。他には、クライアント端末装置は、上述したＣＤドライブ、ＤＶＤドライブ、あるいはＢｌｕ−ｒａｙＤｉｓｃドライブ等の光学デバイスに接続される。ハードディスクドライブ７０８、メモリーカード７０９、および／または光学デバイス（クライアント端末装置７０５にリモートに接続されるのが好ましい）は、装置７０５とは別ものとして図示されているが、装置７０６に一体化して設けられてもよい。クライアント端末装置７０５は、パーソナルコンピュータや出願人自身のプレイステーション等の任意の既知のハードウエアを用いて実装されてもよい。
【０１３６】
クライアント端末装置７０５は好適には、図１１のクライアント端末装置６０４について説明した上述の方法により、ネットワーク７０６を介したダウンロードを行うことで、ソース暗号化プログラムおよび／またはソース暗号化パラメータ集合を取得できる。
【０１３７】
図２８は、暗号化サーバ７０２および第３者サーバ７０１により実行される処理ステップの概念構成およびフローを示す図である。本図は、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合が生成される方法の一例が示されている。この例において、第３者サーバ７０１は、ソフトウエア開発者に関連づけられる。なお、当該ソフトウエア開発者は、自分自身、あるいは、当該自身に他のエンティティを併用してのいずれかで、ネットワーク７０６を介して暗号化サーバ７０２に送信されたプログラムおよび／またはパラメータ集合を取得する。なお、ここで、コンピュータプログラムまたはパラメータ集合は、記録メディアなどにより人手で暗号化サーバ７０２に提供されてもよい点である。
【０１３８】
暗号化サーバ７０２は好適には、そのプログラムやパラメータ集合を暗号化し、当該暗号化されたプログラムや暗号化されたパラメータ集合を第３者サーバ７０１に返す。当該暗号化処理では、公開鍵暗号方式や対称鍵暗号方式などの任意の既知の暗号化技術を用いることができ、これにより暗号化されたプログラムやパラメータ集合を生成できる。一例として、暗号化サーバ７０２は、暗号化システムプログラム（ソース暗号化システムプログラム）や暗号化アプリケーションプログラム（ソース暗号化アプリケーションプログラム）などの、暗号化されたプログラム、あるいはソース暗号化パラメータ集合を第３者サーバ７０１に返す。また、暗号化サーバ７０２は、第３者サーバ７０１に復号鍵をも提供する。当該復号鍵により、暗号化されたソフトウエアプログラムやパラメータ集合を復号化できる。好適には、その復号鍵はアクティベートされていない状態（使用できない状態）で配布サーバ７０３にも提供される。すなわち、その状態で用いても、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を復号化することは困難である。例えば、最初に暗号化サーバ７０２等のエンティティにより暗号化されることで、復号鍵は、アクティベートされていない状態になりうる。後述のごとく、これにより安全性を高めることができる。
【０１３９】
図２９は、配布サーバ７０３および管理者サーバ７０４間で実行される、ある処理ステップの概念構成およびフローを示す図である。配布サーバ７０３は好適には、ネットワーク７０６を介して、管理者サーバ７０４との通信リンクを確立する。管理者サーバ７０４は、鍵配布プログラム７１１、鍵管理データ７１２、および鍵登録プログラム７１３を、ネットワーク７０６を介して、配布サーバ７０３に送信するのが好ましい。以下、後述するように、配布サーバ７０３は、鍵配布プログラム７１１を実行し、その結果、エンドユーザに復号鍵を配布できる。鍵管理データは好適には、機密性の高い情報のあつまりであり、当該あつまりには、それぞれの配布サーバ７０３に対して十分に一意である配布ＩＤが含まれる。鍵登録プログラム７１３は配布サーバ７０３により実行され、好適には、アクティベートされていない復号鍵をアクティベートされた復号鍵に変換する。（すなわち、ソース暗号化コンピュータプログラムの復号化を可能にする。）
【０１４０】
図３０を参照すると、本図は、好適には配布サーバ７０３および管理者サーバ７０４間で実行される、さらなる処理ステップを示すフロー図である。一般的に、配布サーバ７０３は、ネットワーク７０６を介して、管理者サーバ７０４にアクティベート化を求めるリクエストを行い、そのレスポンスとして、管理者サーバ７０４から、アクティベート許可情報を取得できる。より詳細には、動作Ｓ１において、配布サーバ７０３は好適には、ネットワーク７０６を介して管理者サーバ７０４に接続する。動作Ｓ２では、配布サーバ７０３は、鍵管理データ（その中には配布ＩＤが含まれる）を管理者サーバ７０４宛てに送信する。
【０１４１】
動作Ｓ３では、管理者サーバ７０４は好適には、適切な認証処理により配布サーバ７０３を認証する。例えば、管理者サーバ７０４は、ユーザＩＤやパスワードの他、他の証明できるある情報の提供を要求することで、認証を可能とする。なお、好適には、管理者サーバ７０４は、鍵管理データ７１２から配布ＩＤを抽出することで、配布サーバ７０３を認証する。動作Ｓ４では、認証が成功したか否かについての決定がなされる。認証が失敗した場合、処理は動作Ｓ５に進む。ここでは、どのアクティベート処理も許可されず、処理は終了する。もし、認証が成功した場合、処理フローは動作Ｓ６に進む。ここでは、アクティベート許可情報が、管理者サーバ７０４からネットワーク７０６を介して配布サーバ７０３に送信される。
【０１４２】
動作Ｓ７において、配布サーバ７０３は、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合に関連づけられた復号鍵をアクティベート化させる。より詳細には、配布サーバ７０３は鍵登録プログラム７１３を実行するが、その際に入力としてアクティベート許可情報が要求されるのが好ましい。鍵登録プログラム７１３は、アクティベート許可情報の入力を受けて、復号鍵をアクティベートさせ、当該アクティベートされた復号鍵を用いてソース暗号化コンピュータプログラムを復号化する。一例として、アクティベート許可情報には、最初に暗号化された復号鍵を復号するための適切な復号鍵が含まれることがある。この場合、鍵登録プログラム７１３にはある復号化機能が備えられており、当該機能により、アクティベート許可情報を用いて、最初に暗号化された復号鍵を復号することが可能になる。
【０１４３】
どのように復号鍵がアクティベートされるか、あるいは復号鍵がアクティベートされるか否かに関係なく、配布サーバ７０３は好適には、顧客データベース７０７内に復号鍵を保存する。この段階では、配布サーバ７０３には、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合の他に、当該プログラムまたはパラメータ集合を復号化できる復号鍵も含まれる（またはそれらにアクセスできる）。
【０１４４】
図３１は、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を処理するために実行される、ある処理ステップの概念構成およびフローを示す図である。なお、ソース暗号化コンピュータプログラムを実行し、またはソース暗号化パラメータ集合を用いて処理能力を調整するためには、クライアント端末装置７０５は好適には、ある登録処理を実行する必要がある。これらの処理を、ネットワーク７０６上の管理者サーバ７０４を用いて説明する。
【０１４５】
登録処理に関する少なくともいくつかのステップを、図３２のフロー図に示す。ステップＳ２０，Ｓ２２，Ｓ２４，Ｓ２６およびＳ２８の処理は、図１４における同一の符号を付した処理と同様である。
【０１４６】
その後、動作Ｓ３０において、管理者サーバ７０４は好適には、登録データを生成し、かつ当該生成された登録データを、ネットワーク７０６を介して、クライアント端末装置７０５に送信する。一例として、その登録データは、機器ＩＤおよび配布ＩＤで構成できる。これらのＩＤは好適には、その登録データの適切な解析処理により、後に特定される。クライアント端末装置は、その登録データを取得次第、好適には、ハードディスクドライブ、および／またはメモリーカード７０９などの第１の記録デバイス内にその登録データを保存する。
【０１４７】
図３３に示すように、ここで、サーバ３８４等の管理者サーバ７０４は、データベース３８６等のデータベース７０７Ａに接続できる。データベース７０７Ａには、上述した登録処理の段階中に取得された、任意の機器ＩＤおよび／または配布ＩＤが含まれる。機器ＩＤおよび配布ＩＤは好適には、有用な履歴データおよびその解析結果が取得されるように、お互いに関連付けられて保存される。これにより、例えば、あるクライアント端末装置７０５が、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を、ある配布サーバ７０３から取得したことがその解析結果により判断できる。機器ＩＤ、配布ＩＤ、および／またはそれらを関連付けたものを、配布サーバ７０３から取得されたデータと併用すれば、配布サーバ７０３側の任意の義務処理（例えば、契約処理）が行われたことを証明できる。
【０１４８】
図３４および図３５は、それぞれ、コンピュータプログラムまたはパラメータ集合を登録し、かつエンドユーザに当該プログラムの実行、または処理の調整を可能にするために実行される、さらなる処理ステップの概念構成およびフローを示す図である。ユーザは好適には、ソース暗号化コンピュータプログラムを復号化するのに適切な復号鍵を取得したい旨の指示を、クライアント端末装置７０５に与える。ステップ２１において、クライアント端末装置７０５は、ネットワーク７０６を介して配布サーバ７０３との通信リンクを確立する。その後、クライアント端末装置７０５は、（以前、管理者サーバ７０４から取得した）登録データを配布サーバ７０３に送信する（Ｓ２２）。
【０１４９】
動作Ｓ２３では、配布サーバ７０３は、ネットワーク７０６を介して、クライアント端末装置７０５から、例えば、機器ＩＤ（可能であれば、配布ＩＤも）を含む登録データを取得する。この点について、配布サーバ７０３には好適にはネットワークインタフェースが含まれる。当該ネットワークインタフェースによりネットワーク７０６との通信を容易にすることで、当該ネットワーク７０６を介したクライアント端末装置７０５からの登録データの取得を実現できる。ステップ２３では、管理者サーバ７０４もまた、クライアント端末装置７０５から取得した機器ＩＤに対応する、ここでは仮想ＩＤと呼ばれる他のＩＤを機器ＩＤに割り当てる。ここで、仮想ＩＤは、複数の予め存在するＩＤ群の中から選択されるものであってもよいし、機器ＩＤ、配布ＩＤ、および／またはある他の数値に基づく数値演算を通じて導出されるものであってもよいし、あるいは、任意の他の既知の、または後述の改良技術を用いることで生成されてもよい。
【０１５０】
配布サーバ７０３は顧客データベース７０７を対象に、クライアント端末装置７０５から取得した機器ＩＤ（すなわち、その第２記憶デバイス（ＲＯＭ）内に保持される機器ＩＤ）と一致する既存の機器ＩＤを検索する。図３６に示すごとく、顧客データベース７０７には好適には、クライアント端末装置６０４のそれぞれに対応するそれぞれのＩＤである、それぞれの機器ＩＤが保持される。複数の機器ＩＤが、顧客されたデータベース７０７内にあらかじめ保持されており、その様子は図３６の左側の列に示されている。こうした複数の機器ＩＤのそれぞれは好適には、所与のクライアント端末装置７０５の一つ一つに対応するものであり、かつその機器ＩＤは、それぞれのクライアント端末装置７０５に対し十分に一意である。管理者サーバ７０４にもまた、好適にはデータプロセッサが含まれる。当該データプロセッサにより、顧客データベース７０７を対象にした、ネットワーク６０５を介したクライアント端末装置６０４から取得される機器ＩＤと一致する登録情報（例えば、機器ＩＤ）の検索を実現できる。この目的のために、任意の既知の、または後述の改良されたデータ処理用ハードウエアを用いることができる。
【０１５１】
図３５に再度戻り、ステップ２３において、仮想ＩＤは、顧客データベース７０７内に保持される機器ＩＤに関連付けられる。すなわち、仮想ＩＤは、配布サーバ７０３宛てに機器ＩＤを送信した特定のクライアント端末装置７０５に関連付けられる。当該関連付けは、保持された機器ＩＤに対応させるような方法で、仮想ＩＤを顧客データベース７０７内に記憶せしめることにより実現できる。
【０１５２】
上述したように、ネットワーク７０６を介する、クライアント端末装置７０５から配布サーバ７０３への登録データの送信動作には（図３５のステップ２２）、配布ＩＤ（またはメディアＩＤ）の送信動作が含まれてもよい。なお、配布ＩＤとは、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合が取得された配布サーバ７０３に対応するものである。他に、登録データに含まれる配布ＩＤもまた、機器ＩＤに関連付けられて顧客データベース７０７内に保存されてもよい。
【０１５３】
図３５に示すごとく、配布サーバ７０３は好適には、暗号化された復号鍵および暗号化された仮想ＩＤを生成することが可能である。この復号鍵は、クライアント端末装置７０５上のソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を復号化するために用いられる。ここで、配布サーバ７０３は、（図２７から図２８までに示された）暗号化サーバ７０２により生成された、それぞれのソース暗号化コンピュータプログラムを復号化するために用いられる任意の数の復号鍵群にアクセスする。その復号鍵は、暗号化サーバ７０２および／または任意の他の適切なエンティティにより、配布サーバ７０３に提供される。さらに、その復号鍵は、ネットワーク７０６や他のネットワークを介して配布サーバ７０３に送信されてもよいし、あるいは、記録メディアにより人手で提供されてもよい。
【０１５４】
ステップ２４において、配布サーバ７０３は好適には、クライアント端末装置７０５に関連付けられた仮想ＩＤを用いて、その復号鍵を暗号化する。さらに、配布サーバ７０３は好適には、クライアント端末装置７０５の関連づけられた機器ＩＤを用いて、仮想ＩＤを暗号化する。なお、当該機器ＩＤのそれぞれは、顧客データベース７０７から取得される。
【０１５５】
配布サーバ７０３が有するネットワークインタフェースによれば、ネットワーク７０６を介した、暗号化された復号鍵および暗号化された仮想ＩＤのクライアント端末装置７０５への送信をさらに容易にできる（Ｓ２５）。ステップ２６において、クライアント端末装置７０５は好適には、ネットワーク７０６を介して、暗号化された復号鍵および暗号化された仮想ＩＤを取得し、当該取得したそれらを、（ハードディスクドライブ７０８やメモリーカード７０９などの）第１の記録デバイス内に保存する。動作Ｓ２７において、配布サーバ７０３は好適には、ある復号鍵がクライアント端末装置７０５に送信されたことを（履歴データとして）記録する。この情報は、後に、例えばネットワーク７０６を介して、管理者サーバ７０４に提供される。配布サーバ７０３は好適には、履歴データ内に含まれるデータにアクセスすることはできない。このデータを課金処理や義務処理のトラッキングなどのために用いることができる。
【０１５６】
暗号化された復号鍵は、権限が与えられたクライアント端末装置７０５、例えば、有効な機器ＩＤを提供し、かつ復号鍵の暗号化のために用いられる仮想ＩＤに関連付けられたその機器ＩＤを登録したクライアント端末装置７０５のみに提供される。さらに、暗号化された復号鍵に関する任意の妨害、例えば、ネットワークでの著作権侵害行為や権限が与えられない複製等があったとしても、ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合を復号化するために必要な情報（すなわち、有効な復号鍵）が提供されることはない。実際には、そのような復号鍵は、十分に一意である仮想ＩＤにより暗号化される。また、その暗号化された仮想ＩＤは、登録処理が完了し、かつクライアント端末装置７０５に権限が与えられてはじめて、クライアント端末装置７０５宛てに提供される。仮想ＩＤは、配布サーバ７０３からクライアント端末装置７０５に暗号化された状態で送信されるため（すなわち、クライアント端末装置７０５の機器ＩＤを用いて暗号化されるため）、暗号化された仮想ＩＤを権限なく取得しても、暗号化された復号鍵を復号化するための必要な情報が与えられることはない。
【０１５７】
ソース暗号化コンピュータプログラムまたはソース暗号化パラメータ集合をクライアント端末装置７０５内にロードする／インストールするために実行される処理は、図１９および図２０を参照して上述した通りである。
【０１５８】
コンピュータプログラムがクライアント端末装置７０５により実行される処理、あるいは、パラメータ集合がクライアント端末装置７０５により用いられ、処理能力が制御される処理は、図２１および図２２を参照して上述した通りである。
【０１５９】
図１０に戻り、処理調整部１１８の処理特性を変化させるために動作４２０で行われるある処理は非常に多岐にわたるため、あらゆる状況について隅々まで記述することはできない。従って、例示可能な例をいくつかここで述べる。なお、発明の精神および範囲から逸脱することなく、他のアプローチおよび技術を、その変形例を構成するために用いることは可能であると理解される。本発明のある態様に従えば、少なくとも一つのＳＰＵ２０８の処理特性を調整することで、一つ以上のＳＰＵ２０８がソフトウエアプログラムを好ましい形で実行できるようにする一方、他の一つ以上のＳＰＵ２０８の処理特性を調整しないことで、より優れた処理特性を利用して、他の処理タスクを実行できるようにする。一例として、特定のパラメータ、例えば、一つ以上のＳＰＵ２０８のクロック周波数を調整する一方、他の一つ以上のＳＰＵ２０８のクロック周波数については調整しない。
【０１６０】
この点について、図３７を参照する。本図は、他のＳＰＵ２０８の一つ以上のクロック周波数を変化させることなく、いくつかの（例えば、いくつかのＳＰＵの）クロック周波数を変化させることで処理能力を変化させるプロセッサ要素２００Ａのブロック図を示す。図３７に示すごとく、ＳＰＵ２０８Ａ−Ｄのそれぞれには、例えば、既知であるフェーズロックドループ技術を用いたそれぞれのクロック回路が含まれる。特に、ＳＰＵ２０８Ａには、ＰＬＬ１と称するフェーズロックドループ回路が含まれ、一方、ＳＰＵ２０８Ｂ−Ｄのそれぞれには、ＰＬＬ２，ＰＬＬ３，ＰＬＬ４と称するそれぞれのフェーズロックドループ回路が含まれる。フェーズロックドループ回路のそれぞれに設定できる周波数は、比較的に広範囲に及ぶため、十分に異なるクロック周波数で、当該周波数に対応したＳＰＵ２０８を動作させることができる。例えば、フェーズロックドループ回路に、約１ＭＨｚから４ＧＨｚまでのクロック周波数を設定できるのが好ましい。
【０１６１】
本実施の形態によれば、プロセッサ要素２００Ａには、ソフトウエア制御部、ハードウエア制御部、またはその組み合わせで構成されたシステム制御部２８０が含まれる。いずれの態様の場合でも、システム制御部２８０は好適には、所望のクロック周波数を表すパラメータを、例えば、変換テーブル５５０から取得し、当該取得されたパラメータを、ＳＰＵ２０８Ａに対応する一つ以上のフェーズロックドループ回路への命令信号に変換できる。システム制御部２８０は、あるＳＰＵ２０８により認識される信号を出力し、当該信号により、当該ＳＰＵに対応したフェーズロックドループ回路の周波数が変更され、一方、他の一つ以上のＳＰＵ２０８のフェーズロックドループ回路の周波数については変更されないのが好ましい。ここで、これを機能的に実現するためには、ＳＰＵ２０８のそれぞれは、当該ＳＰＵ２０８のそれぞれのクロックメッシュ、例えば、Ｈ木（Ｈ−ｔｒｅｅ）分配ネットワーク等の、それぞれ自身が有するクロック周波数の分配ネットワークを必要とする。さらに、ＰＵ２０４には、システム制御部２８０から出力される制御信号に応じて変更可能な、（ＰＬＬ６と称する）フェーズロックドループ回路が含まれる。バス２１２にもまた、システム制御部２８０から出力される制御信号に応じて変更可能な、当該バスに関連する（ＰＬＬ５と称する）フェーズロックドループ回路を含む。システム制御部２８０からの制御信号は上述の変換テーブル５５０内のパラメータにより左右され、当該制御信号に応じて、プロセッサ要素２００Ａの任意のあるいはすべてのフェーズロックドループ回路を操作できる点において有意義である。
【０１６２】
図３７に示される機能と実質的に同一である機能を達成する構成を図３８に示す。本実施の形態において、プロセッサ要素２００Ｂには、ＳＰＵ群２０８、ＰＵ２０４およびバス２１２を通じて共通である、ＣＬＫ１、ＣＬＫ２、ＣＬＫ３、・・・ＣＬＫＮなどの複数のクロック回路２８４が含まれる。クロック回路２８４のそれぞれの出力は、例えば、ＳＰＵ２０８、ＰＵ２０４およびバス２１２のそれぞれに入力され、これらの構成要素のそれぞれには、それぞれのマルチプレクサ２８６またはそれと同様に機能する他の回路が含まれる。そのマルチプレクサ２８６は、クロック回路２８４から出力される、場合によっては異なるクロック信号をそれぞれ取得し、かつ制御レジスタ２８２から出力される制御信号に応じて一つのクロック信号を出力できる。制御レジスタは、変換テーブル５５０のパラメータからその内容を直接取得してもよいし、あるいは当該パラメータの値が操作された結果としてのその内容を取得してもよい。また、本構成において、ＳＰＵ群２０８、ＰＵ２０４およびバス２１２は、それぞれ、別々のクロックメッシュを要求することで、他の一つ以上の構成要素を通じてではなく、一つの構成要素内において、異なるクロック周波数を実現できる。
【０１６３】
図３９に示すごとく、それぞれのクロック回路２８４は、一つのフェーズロックドループ回路と様々なマスク信号とを用いて実現される。例えば、当該マスク信号としてＭＡＳＫ１信号を用いれば、１／３の周波数のクロック信号を生成でき、ＭＡＳＫ２信号を用いれば、１／２の周波数のクロック信号を生成できる。本実施の形態によれば、それぞれのＭＡＳＫ信号は、制御回路（図示せず）により生成される。レジスタ２８２およびマルチプレクサ２８６を組み合わせて用いることで、一定のマスク集合により生成されるそれぞれのクロック信号を取得でき、当該クロック信号の一つは、制御レジスタ２８２に従って選択される。
【０１６４】
上述したように、プロセッサ要素２００（図２）のバス２１２の使用率は、本発明に従って操作される処理調整部１１８の処理能力に関するいくつかの実施例に共通するものである。この点について、図４０を参照すると、本図は、プロセッサ要素２００Ｃが、特にＰＵ２０４について、どのようにバスの利用率の調整を可能にするかを示すブロック図である。実際的な問題として、プロセッサ要素２００Ｃが効果的な処理を実現するためには、ＰＵ２０４およびＳＰＵ２０８Ａ−Ｄによるバス２１２への時折のアクセスを必要とする。バス２１２へのアクセスが向上され、または妨げられた場合、プロセッサ要素２００Ｃの処理能力は、それに応じて増減される。本実施の形態によれば、システム制御部２８０は、リミッタ回路２８８を用いることで、ＰＵ２０４によるバス２１２へのアクセスを制限し、または増加させることができる。より詳細には、システム制御部２８０をリミッタ回路２８８と組み合わせることで、ＰＵ２０４がバス２１２へのアクセスを可能にする、プロセッササイクルの特定の周期および／またはプロセッササイクルの割合を調整できる。例えば、ＰＵがバス２１２に、限られたプロセッササイクル数を超えてアクセスすることを可能にするスケジュール２８０Ａがシステム制御部２８０により確立される。従って、ＰＵ２０４は、システム制御部２８０およびリミッタ回路２８８を別にすれば、許可される回数よりも少ない回数または多い回数分、バス２１２にアクセスすることができる。これにより、ＰＵ２０４と共有のＤＲＡＭ２１４との間の処理速度を上下させることができ、さらに、ＰＵ２０４と一つ以上のＳＰＵ２０８との間で実行される処理を向上させ、または低下させることができる。バス２１２へのアクセスに関する制限は、例えば、ＰＵ２０４によるバス２１２の３０％の使用率などの比率や他のある比率で特徴付けられる。
【０１６５】
ここで、リミッタ回路２８８も、ＰＵ２０４について上述した方法と実質的に同様の方法で、一つ以上のＳＰＵ２０８によるバス２１２へのアクセスを向上させ、または当該アクセスを制限するために用いられる。これにより、プロセッサ要素２００Ｃの処理能力の調整に関する自由度をさらに高めることができる。
【０１６６】
上述するごとく、処理調整部１１８の命令待ち時間および命令スループットのうちの一つ、またはその両方の変化は、処理調整部１１８の処理能力を左右する。この点について、図４１および図４２は、処理調整部１１８による命令待ち時間および／または命令スループットの操作方法を示す。具体的には、遅延時間やノーオペレーションなどを、命令パイプラインの一つ以上のフェーズ間に挿入したり、当該フェーズ間から除外したりする。例えば、命令パイプラインには、命令フェッチシーケンス、命令デコードシーケンス、命令実行シーケンスおよびライトバックシーケンスが含まれる。図４１に示すごとく、命令実行シーケンスとライトバックシーケンスとの間において、それらの間に、ノーオペレーション、バブル（パイプラインバブル）、遅延時間などを挿入または削除することで、タイミングの調整を実現できる。図４２に示すごとく、タイミングの調整は、ライトバックシーケンスが終了した後に挿入され、または削除される。これにより、命令待ち時間に影響を与えることができる。本実施の形態に従って、一つ以上のＳＰＵ群２０８またはＰＵ２０４は、これらの技術を用いて、プロセッサ要素２００の処理能力を調整する。
【０１６７】
さらに、処理調整部１１８の処理能力を、メモリ待ち時間および／またはメモリスループットの操作を通じて調整することができる。より具体的には、ローカルメモリに対応するＳＰＵ２０８、または共有ＤＲＡＭ２１４に対応するＳＰＵ２０８のメモリ待ち時間および／またはメモリスループットを調整することで、プロセッサ要素２００の所望の処理能力を実現できる。同様に、共有ＤＲＡＭ２１４に対応するＰＵ２０４のメモリ待ち時間および／またはメモリスループットを調整してもよい。メモリ待ち時間および／またはメモリスループットの調整について、詳細には、図１５および図１６を参照して上述した方法と実質的に同様の方法で実現される。なお、メモリアクセスにおける基本的なシーケンスには、アドレスの取得シーケンス、アドレスのデコードシーケンス、特定のアドレスに一致するメモリからのデータの取得シーケンス（または、データの書き込みシーケンス）が含まれる。
【０１６８】
図４３を参照すると、本図は、レンタルプログラムコンテンツの配布者による、ソフトウエアプログラムなどのプログラムコンテンツのセキュアな配布の一例を示す処理フロー図である。そのような配布形態については、上述した米国出願番号Ｎｏ１０／３１６３０９およびＮｏ１０／３１６６７５に記載されている。
【０１６９】
レンタルプログラムコンテンツの配布者は、管理者サーバ６０１，７０４、第３者サーバ６０２，７０１、配布サーバ７０３、またはいくつか他のサーバ（図示せず）で構成されてもよい。ユーザがプログラムコンテンツのレンタルを所望する場合、ユーザは最初にレンタルシステムのメンバーになることを要求される。この点について、ステップ７０において、ユーザは、例えば、クライアント端末装置６０４，７０５のある仕組みの起動を通じて、システムに入会したい旨を示す。一例として、クライアント端末装置６０４，７０５は同一の装置であってもよいし、別々の装置であってもよく、当該装置上でユーザによりレンタルプログラムが実行される。さらに、クライアント端末装置６０４，７０５には、入会処理を容易にする適切なコンピュータプログラムが含まれ、かつ実行される。
【０１７０】
ステップ７２において、クライアント端末装置６０４，７０５は好適には、ネットワーク６０５，７０６を介して、管理者サーバ６０１，７０４との通信リンクを確立する。ステップ７４において、ユーザがレンタルシステムの入会希望を行ったクライアント端末装置６０４，７０５により、リクエストが送信される。ユーザが一つのクライアント端末装置のみを用いてコンテンツをレンタルし、かつ実行する場合、クライアント端末装置６０４，７０５は、ネットワーク６０５，７０６を介して、機器ＩＤを管理者サーバ６０１，７０４宛てに送信する。一方、ユーザが他の装置を通じてプログラムコンテンツをレンタルする場合、クライアント端末装置６０４，７０５は、ユーザに対し固有である他のＩＤ情報を送信する。応答として、管理者サーバ６０１，７０４は、電子会員証を生成する。なお、当該会員証は、ユーザが同一のクライアント端末装置を用いてプログラムコンテンツをレンタルし、かつ実行する場合のみにおいて、クライアント端末装置６０４，７０５に対し十分に一意である。管理者サーバ６０１，７０４もまた、クライアント端末装置６０４，７０５の機器ＩＤまたはユーザ情報を、例えば、上述のデータベース関連技術を用いて、電子会員証に関連づける。ステップ６０において、管理者サーバ６０１，７０４は、ネットワーク６０５，７０６を介して、クライアント端末装置６０４，７０５に電子会員証を送信する。以下に示すごとく、電子会員証は、レンタル処理の際に用いられる。
【０１７１】
ユーザがレンタルシステムの会員になれば、ユーザは、アプリケーションプログラムおよびシステムプログラムなどのプログラムコンテンツのレンタルを許可される。好適には、プログラムコンテンツは、ビデオゲームコンピュータプログラムである。図４４によれば、クライアント端末装置６０４，７０５上で動作するコンピュータソフトウエアは、コンピュータプログラムをレンタルしたい旨のユーザからの指示受付を可能にするのが好ましい。ここで、ユーザがプログラムコンテンツのレンタルを所望するクライアント端末装置は、会員登録に用いられた装置と同一のものであってもよいし、別の装置であってもよいし、そのどちらでもなくてもよい。一例として、ユーザは、ゲームコンソール用のソフトウエアプログラムをレンタルしてもよいが、他の装置から、例えば、自身が有する携帯電話、ＰＤＡ、あるいは他のデバイスから、会員証明書や他のデータを送信することでユーザ認証を開始してもよい。会員証明書または他のデータは、人手でデータを入力することで、磁気カードやスマートカードを機械に通すことで、あるいはデバイス内にすでに保存されたデータを読み取ることのいずれかで、装置内に入力される。
【０１７２】
この点に関して、ユーザからの指示に応答して（Ｓ８２）、クライアント端末装置６０４，７０５は、ユーザによるレンタル要求が送信された配布者との通信リンクを確立する（Ｓ８４）。ステップ８６において、配布者は、好適には、例えば、電子会員証を解析することで、および／または、その装置がユーザが入会した際に用いられた装置と同一である場合には、クライアント端末装置６０４，７０５の機器ＩＤを解析することで、クライアント端末装置６０４，７０５を認証する。これは、クライアント端末装置６０４，７０５が、配布者に機器ＩＤおよび／または電子会員証を要求し、正当であると示されたこれらの情報を有するデータベースに当該配布者がアクセスすることで実現される。
【０１７３】
ユーザに権限が与えられたとき、配布者は好適には、ネットワーク６０５，７０６を介して、クライアント端末装置６０４，７０５に、レンタルに利用可能なタイトルのリストやメニューを提供する（Ｓ８８）。クライアント端末装置６０４，７０５上で実行されるコンピュータソフトウエアによれば、タイトルのリストやメニューのユーザへの表示を容易にでき、ユーザがタイトルを選択したり、レンタルした時間を特定したりできる（Ｓ９０）。ユーザにより選択されたものおよび特定のレンタル時間は、好適には、ネットワーク６０５，７０６を介して配布者に送信される。
【０１７４】
ステップ９２では、配布者は好適には、その特定された時間に対するコンピュータプログラムのレンタル費用分の支払い要求をユーザに対し行う。これは、クライアント端末装置６０４，７０５や他のデバイスのいずれかを用いて、例えば、クレジットカードナンバーや普通預金口座番号を送信する方法、あるいは請求書による方法などの、任意の既知の技術を用いることにより実現される。送金が行われると、配布者は、指定のタイトルおよびレンタル時間に対して送金がなされたことを示す電子支払いチケットを生成する（Ｓ９４）。ステップ９６において、配布者は好適には、クライアント端末装置６０４，７０５に、あるいは、ネットワーク６０５，７０６上の他のデバイスにその電子支払いチケットを送信する。
【０１７５】
電子支払いチケットは、配布者に提供される送金額と引き換えに、あるレベルのレンタルする権利をユーザ（あるいは、電子支払いチケットを取得するときのクライアント端末装置６０４，７０５）に提供するのが好ましい。例えば、そのレンタルする権利は、特定された、コンピュータプログラムのタイトル、レンタル時間や送金額に対して制限される。さらに、電子支払いチケットには、コンピュータプログラムを復号化できる復号鍵などの付加的な情報が含まれる。電子支払いチケットは必ずしも復号鍵を含む必要はなく、この例に示す方法によってのみ、含むものである。電子支払いチケットには、暗号化された状態の、例えば、機器ＩＤや電子会員証の一部である他の情報（例えば、仮想ＩＤのようなもの）を用いて暗号化された、復号鍵が含まれる。いすれの場合でも、処理のこの時点においては、ユーザはあるレベルのレンタルする権利を取得する一方、コンピュータプログラムまたは暗号化された状態のコンピュータプログラムについては未取得である。
【０１７６】
処理のこの段階においては、クライアント端末装置６０４，７０５や他のデバイスは、あるタイトルの所定の時間に対する支払いが完了したことを示す電子支払いチケットを有し、さらにユーザの電子会員証をも保持してもよい。図４５によれば、クライアント端末装置６０４，７０５や他のデバイスは、ネットワーク６０５，７０６を介して、管理者サーバ６０１，７０４との通信リンクを確立することが好ましい（Ｓ９８）。ステップ１００において、管理者サーバ６０１，７０４は、機器ＩＤおよび／または電子会員証により、クライアント端末装置６０４，７０５や他のデバイスを認証する。ここで、顧客データベース６０６，７０７などの適切なデータベースにアクセスすることで認証が実現される。ステップ１０２において、クライアント端末装置６０４，７０５や他のデバイスは、電子支払いチケットをネットワーク６０５，７０６を介して、管理者サーバ６０１，７０４に送信する。管理者サーバ６０１，７０４は、応答として、電子レンタルチケットを生成し（Ｓ１０４）、ネットワーク６０５，７０６を介して、クライアント端末装置６０４，７０５や他のデバイスに当該電子レンタルチケットを送信する（Ｓ１０６）。
【０１７７】
電子レンタルチケットは、電子支払いチケットにより与えられるレンタルする権利と同一のレベルの、または当該レベルを超えたレベルのレンタルする権利をユーザ（あるいは、クライアント端末装置６０４，７０５）に提供する。例えば、その電子レンタルチケットにより、コンピュータプログラムのタイトル、レンタル時間や送金額を特定できてもよいし、当該チケットは、（復号鍵が電子支払いチケット内に含まれないと想定すれば、）暗号化されたコンピュータプログラムを復号化できる復号鍵などの付加的な情報をも含んでもよい。電子レンタルチケットは必ずしも復号鍵を含む必要はなく、この例に示す方法によってのみ、含むものである。電子レンタルチケットには、暗号化された状態の、例えば、機器ＩＤや電子会員証の一部である他の情報（例えば、仮想ＩＤのようなもの）を用いて暗号化された、復号鍵が含まれる。いすれの場合でも、処理のこの時点においては、ユーザはあるレベルのレンタルする権利を取得する一方、コンピュータプログラムまたは暗号化された状態のコンピュータプログラムについては未取得である。
【０１７８】
図４６によれば、クライアント端末装置６０４，７０５は、ネットワーク６０５，７０６を介して、配布者との通信リンクを確立することが好ましい（Ｓ１０８）。配布者は、応答として、上述の機器ＩＤおよび／または電子会員証を解析する方法で、クライアント端末装置６０４，７０５を認証する（Ｓ１１０）。次に、クライアント端末装置６０４，７０５または他のデバイスは、例えば、ネットワーク６０５，７０６を介して、電子レンタルチケット（または、少なくとも一部分）を配布者に送信するのが好ましい（Ｓ１１２）。クライアント端末装置６０４，７０５や他のデバイスが、前のすべての必要なステップを完了したため、そのクライアント端末装置がレンタルされたコンピュータプログラムの暗号化されたバージョンを取得する権限を有することを配布者に提示するのが好ましい（Ｓ１１４）。処理のこの時点においては、クライアント端末装置６０４，７０５や他のデバイスは、機器ＩＤ、電子支払いチケット、電子レンタルチケット、暗号化された復号鍵、および暗号化されたコンピュータプログラムを有するのが好ましい。
【０１７９】
ユーザは、そのコンピュータプログラムを読み出し、インストールし、実行してもよいし、さらに、上述した実施の形態について上述した処理を用いて、クライアント端末装置の処理能力を調整してもよい。その結果、このレンタルシステムによれば、ネットワーク６０５，７０６を介して、どのクライアント端末装置６０４，７０５を用いても、ユーザにレンタルプログラムコンテンツを安全に配布できる。
【０１８０】
本発明もまた、ユーザが、任意の特定のデバイスには依存せずに実行可能な、特定のソフトウエアプログラム、または特定のバージョンのプログラムを実行する権利を購入することを対象にしたアプリケーションに適している。一例として、ユーザは、自身が所有するコンソール、他人が所有するコンソール、あるいは、そのようなコンソールを多く有する公共のゲームセンターに配置されたコンソール等の、任意のコンソール上で、ゲームプログラムや他のソフトウエアプログラムを実行する権利を購入できる。
【０１８１】
ユーザもまた、ディスクや他の記録媒体等の携帯可能なソフトウエア媒体に保存された、ゲームプログラムや他のソフトウエアプログラムのあるバージョンの複製物を有し、当該記録媒体から、自身のコンソール、他人のコンソール、またはゲームセンターのコンソール上にそのプログラムを複製してもよい。他に、ユーザは、あるバージョンのゲームプログラムや他のソフトウエアプログラムを実行する権利を有するだけでよい。いずれの場合でも、ユーザもまた、ユーザＩＤや電子証（仮想ＩＤや仮想ＩＤのようなもの）などの他の認証情報を有する。
【０１８２】
そのようなユーザが、自身のコンソール、他人のコンソール、またはゲームセンターのコンソール等のデバイス上で、ゲームプログラムや他のソフトウエアプログラムの実行を所望し、かつプログラムの複製物がすでにコンソール内に保存されている場合、コンソール上でプログラムを実行するために、および／または、コンソール上でのプログラムの適切な実行を可能にする、必要不可欠なソフトウエアおよび／またはデータモジュールを取得することを可能にするために、ユーザの認証情報が要求される。他として、ゲームプログラムや他のソフトウエアプログラムがユーザ自身のコンソール、他人のコンソール、またはゲームセンターのコンソール内に保存されていない場合、ユーザが購入した権利に関わるバージョンのプログラムをそのコンソールがダウンロードすることを可能にするために、および／または、その後、そのコンソールにとって適切なバージョンのソフトウエアを取得るために必要とされるソフトウエアおよび／またはデータモジュールを得るために、ユーザの認証情報が要求される。
【０１８３】
ユーザ認証は、図４３ー図４６を参照して上述した方法で実行される。すなわち、ユーザの携帯電話、ＰＤＡや他のデバイスなどの他の装置から認証情報を送信することで実行される。また、人手でデータを入力することで、磁気カードやスマートカードを機械に通すことで、あるいは、コンソールが自身のコンソールであれば、当該自身のコンソール内にすでに記録されたデータを読み取ることのいずれかで、そのコンソール内に入力された、会員証または他のデータを送信することで実行される。
【０１８４】
図１１および図２７を参照して上述したように、ユーザの認証情報は、一つ以上の管理者サーバ６０１，７０４、第３者サーバ６０２，７０１、配布サーバ７０３、またはいくつか他のサーバ（図示せず）に送信される。さらに、ユーザが所有する権利に関わるゲームプログラムや他のソフトウエアプログラム、および、当該ゲームプログラムや他のソフトウエアプログラムのコンソール上での適切な動作に必要なソフトウエアおよび／またはデータモジュールは、図５から図３６までを参照した上述の方法で、一つ以上のサーバによりダウンロードされる。
【０１８５】
このように、ゲームプログラムや他のソフトウエアプログラムを実行する権利を有するユーザは、自身のコンソール、他人のコンソール、または、公共（ゲームセンター）のコンソールなどの任意のデバイス上で、そのコンソールにとって最も相応のバージョンのソフトウエアを用いて、プログラムを実行できる。
【０１８６】
以上、本発明を実施形態を参照して説明したが、これらの実施形態は本発明の原理および適用法を例示するにすぎない。従って、これら例示としての実施形態には多数の変形が可能であり、前掲の特許請求の範囲で規定される本発明の精神および範囲から逸脱することなく他の構成を考案することができる。
【図面の簡単な説明】
【０１８７】
【図１】ソフトウエアプログラムおよび当該プログラムが動作する処理システムの設計面の進化を、実施の形態に係る処理調整部あるいは複数の処理調整部を含めた形でグラフィカルに示す図である。
【図２Ａ】実施の形態に係るプロセッサ要素（ＰＥ）の構成の一例を示す図である。
【図２Ｂ】実施の形態に係るＰＥのマルチプロセッシングシステムの構成の一例を示す図である。
【図３】実施の形態に係るサブ処理ユニット（ＳＰＵ）の一例を示す図である。
【図４】実施の形態の１つ以上の態様に係るマルチプロセッサシステムの実装に適した他の構成を示す図である。
【図５】実施の形態の１つ以上の態様に係る処理能力を変化させるために、少なくとも部分的に処理システムにより実行される処理ステップを示すフロー図である。
【図６】実施の形態の１つ以上の態様に係るコンピュータネットワークの全体構成を示す図である。
【図７】図５の処理に関連するさらなる処理プロセスを示す図である。
【図８】実施の形態の１つ以上の態様に係るプロセッサ要素により使用される変換テーブルを示す図である。
【図９】実施の形態の１つ以上の態様に係る、ネットワーク通信および処理能力の変化を可能にする処理システムを示す図である。
【図１０】図７の処理に関連するさらなる処理プロセスを示すフロー図である。
【図１１】１以上のユーザに対し、ソフトウエアプログラムやパラメータ集合を配布するシステムの構成を示す図である。
【図１２】図１１のシステムの一部により実行されるある処理プロセスの概念構成およびフローを示す図である。
【図１３】図１１のシステムのある要素により実行されるさらなるステップの概念構成およびフローを示す図である。
【図１４】図１３で示されるものが実行されるある処理ステップを示すフロー図である。
【図１５】例えば、図１１の管理者サーバなどにより実行されるある処理ステップを示すフロー図である。
【図１６】あるデータベースコンテンツの構成を示す図である。
【図１７】図１１のシステムの一部により実行されるある処理ステップの概念構成およびフローを示す図である。
【図１８】図１７に従って実行されるさらなる処理ステップを示すフロー図である。
【図１９】例えば、図１１のクライアント端末装置により実行される一つ以上のさらなる処理ステップを表す概念構成およびフローを示す図である。
【図２０】図１９に従って実行されるさらなる処理ステップを示すフロー図である。
【図２１】さらなる処理ステップの概念構成およびフローを示す図である。
【図２２】図２１の処理ステップに関してさらなる詳細を示すフロー図である。
【図２３】実行される他の処理ステップの概念構成およびフローを示す図である。
【図２４】図２３の処理ステップに関してさらなる詳細を示すフロー図である。
【図２５】図２３の他の概念に従うさらなる処理ステップの概念構成およびフローを示す図である。
【図２６】図２５の処理ステップに関してさらなる詳細を示すフロー図である。
【図２７】１以上のユーザに対してソフトウエアプログラムまたはパラメータ集合を配布するさらなるシステムの構成を示す図である。
【図２８】図２７のシステムの一部により実行されるある処理ステップの概念構成およびフローを示す図である。
【図２９】図２７のシステムの一部により実行される、さらなるある処理ステップの概念構成およびフローを示す図である。
【図３０】図２９に示されるものが実行されるある処理ステップを示すフロー図である。
【図３１】例えば、図２７の管理者サーバおよびクライアント端末により実行されるある処理ステップの概念構成およびフローを示す図である。
【図３２】図３１の装置により実行されるさらなる処理ステップを示すフロー図である。
【図３３】あるデータベースコンテンツの構成を示す図である。
【図３４】図２７のシステムの一部により実行されるある処理ステップの概念構成およびフローを示す図である。
【図３５】図３４の装置により実行されるさらなる処理ステップを示すフロー図である。
【図３６】あるデータベースコンテンツの構成を示す図である。
【図３７】実施の形態の１つ以上の態様に係る処理能力を変化させるために、あるクロック周波数の変換を可能にするプロセッサ要素システムの構成を示す図である。
【図３８】実施の形態の１つ以上の態様に係る処理能力を変化させるために、あるクロック周波数の変換を可能にする他のプロセッサ要素システムの構成を示す図である。
【図３９】図１２のあるクロック回路要素の他の構成を示す図である。
【図４０】実施の形態の１つ以上の態様に係る、他の態様の処理能力の変化を可能にするさらなる他の処理システムを示す図である。
【図４１】実施の形態の１つ以上の態様に係る、命令待ち時間および／またはスループットの調整可能な特性を示すフロー図である。
【図４２】実施の形態の１つ以上の態様に係る、命令待ち時間および／またはスループットの調整可能な特性を示す他のフロー図である。
【図４３】レンタルプログラムコンテンツの配布者が、安全にプログラムコンテンツを配布するための処理の一例のステップを示すフロー図である。
【図４４】図４３の処理のさらなるステップを示すフロー図である。
【図４５】図４４の処理のさらなるステップを示すフロー図である。
【図４６】図４５の処理のさらなるステップを示すフロー図である。
【符号の説明】
【０１８８】
１０４，１１０，１１６  ソフトウエアプログラム、  １２４，７０６  インターネット、  ２０４  メイン処理ユニット、  ２０８  サブ処理ユニット、  ２１２  バス、  ３０２  プロセッサ、  ５５０  変換テーブル、  ６０１  管理者サーバ、  ６０５，７０６  ネットワーク、  ６１０，７１０  システム。
【図１】
2006092542.tif 000003
【図２Ａ】
2006092542.tif 000004
【図２Ｂ】
2006092542.tif 000005
【図３】
2006092542.tif 000006
【図４】
2006092542.tif 000007
【図５】
2006092542.tif 000008
【図６】
2006092542.tif 000009
【図７】
2006092542.tif 000010
【図８】
2006092542.tif 000011
【図９】
2006092542.tif 000012
【図１０】
2006092542.tif 000013
【図１１】
2006092542.tif 000014
【図１２】
2006092542.tif 000015
【図１３】
2006092542.tif 000016
【図１４】
2006092542.tif 000017
【図１５】
2006092542.tif 000018
【図１６】
2006092542.tif 000019
【図１７】
2006092542.tif 000020
【図１８】
2006092542.tif 000021
【図１９】
2006092542.tif 000022
【図２０】
2006092542.tif 000023
【図２１】
2006092542.tif 000024
【図２２】
2006092542.tif 000025
【図２３】
2006092542.tif 000026
【図２４】
2006092542.tif 000027
【図２５】
2006092542.tif 000028
【図２６】
2006092542.tif 000029
【図２７】
2006092542.tif 000030
【図２８】
2006092542.tif 000031
【図２９】
2006092542.tif 000032
【図３０】
2006092542.tif 000033
【図３１】
2006092542.tif 000034
【図３２】
2006092542.tif 000035
【図３３】
2006092542.tif 000036
【図３４】
2006092542.tif 000037
【図３５】
2006092542.tif 000038
【図３６】
2006092542.tif 000039
【図３７】
2006092542.tif 000040
【図３８】
2006092542.tif 000041
【図３９】
2006092542.tif 000042
【図４０】
2006092542.tif 000043
【図４１】
2006092542.tif 000044
【図４２】
2006092542.tif 000045
【図４３】
2006092542.tif 000046
【図４４】
2006092542.tif 000047
【図４５】
2006092542.tif 000048
【図４６】
2006092542.tif 000049