(57)【特許請求の範囲】
【請求項１】
２以上のプロセッサをネットワーク上で動作させるための方法であって、
各プロセッサは、
第１プロセッサと、
メインメモリと、
１以上の第２プロセッサと、
を備えており、
各第２プロセッサは、
専用に対応づけられた専用ローカルメモリと、
ＭＦＣ（Memory Flow Controller）と、
を備えており、
ネットワークを介して、クライアントデバイスのプロセッサであるクライアントプロセッサが、そのクライアントプロセッサから、ホストデバイスのプロセッサであるホストプロセッサに対してファイルイメージを転送するステップを含み、
前記ファイルイメージは、一の第２プロセッサの専用ローカルメモリのコンテンツと共有初期化データ、または、２以上の第２プロセッサの専用ローカルメモリのコンテンツを含み、
前記共有初期化データは、それぞれが特定の処理を実行している複数の第２プロセッサ間で共有される設定値を持つデータであることを特徴とする方法。
【請求項２】
前記ホストプロセッサが、ホストプロセッサのメインメモリであるホストメインメモリに、一の第２プロセッサの専用ローカルメモリのコンテンツと共有初期化データのための領域を確保するステップ、を更に含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ホストプロセッサが、ホストメインメモリに確保された領域に一の第２プロセッサの専用ローカルメモリのコンテンツと共有初期化データをロードするステップ、を更に含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記ホストプロセッサが、ホストプロセッサのメインメモリであるホストメインメモリに、非初期化データとメッセージボックスのための領域を確保するステップ、を更に含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記ホストプロセッサが、ホストプロセッサの第２プロセッサにファイルイメージのデータをロードするステップ、を更に含むことを特徴とする請求項１に記載の方法。
【請求項６】
ファイルイメージのデータをロードするステップは、前記ホストプロセッサが、ファイルイメージをホストプロセッサにおける第２プロセッサのローカルメモリにロードするステップ、を含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記ホストプロセッサが、ホストプロセッサの第２プロセッサにおいて、ファイルイメージのデータから読み出した処理（process）を実行するステップ、を更に含むことを特徴とする請求項５に記載の方法。
【請求項８】
前記ホストプロセッサが、ホストプロセッサの第２プロセッサにおいて、処理の実行を一時停止するステップ、を更に含むことを特徴とする請求項５に記載の方法。
【請求項９】
処理の実行を一時停止するステップは、前記ホストプロセッサが、全てのＤＭＡと第２プロセッサの処理実行を停止させるステップ、を含むことを特徴とする請求項８に記載の方法。
【請求項１０】
処理の実行を一時停止するプロセスは、前記ホストプロセッサが、処理が実行されている１以上の第２プロセッサの実行状態を保存するステップ、を含むことを特徴とする請求項８に記載の方法。
【請求項１１】
実行状態とは、２つ以上の第２プロセッサの専用ローカルメモリのコンテンツを含む実行時にローカルに保持される状態（runtime local store state）と、プロセッサの実行状態情報（processor execution state information）を含む第２プロセッサ状態と、を含む情報であることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記ホストプロセッサが、実行状態を異なるホストに転送するステップ、を更に含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
実行状態を異なるホストに転送するステップは、前記ホストプロセッサが、ネットワークを介して実行状態を異なるホストに転送するステップ、を含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記ホストプロセッサが、実行状態をホストからクライアントに返送するステップ、を更に含むことを特徴とする請求項１０に記載の方法。
【請求項１５】
前記ホストプロセッサが、ホストプロセッサの１以上の第２プロセッサにおいて、処理の実行を再開させるステップ、を更に含むことを特徴とする請求項１０に記載の方法。
【請求項１６】
処理の実行を再開させるステップは、前記ホストプロセッサが、処理に対して資源（resource）を再割り当てするステップ、を含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
処理の実行を再開させるステップは、前記ホストプロセッサが、ファイルイメージの一部をシステムメモリにロードするステップ、を含むことを特徴とする請求項１５に記載の方法。
【請求項１８】
処理の実行を再開させるステップは、前記ホストプロセッサが、第２プロセッサの実行状態を復元するステップ、を含むことを特徴とする請求項１５に記載の方法。
【請求項１９】
処理を再開するステップは、前記ホストプロセッサが、ホストプロセッサにおける１以上の第２プロセッサのレジスタに、保存された実行状態から得られるハードウェア状態のデータを格納するステップ、を含むことを特徴とする請求項１５に記載の方法。
【請求項２０】
１以上のレジスタに格納するステップは、前記ホストプロセッサが、ハードウエア状態ローダープログラムをホストプロセッサの第２プロセッサにロードするステップ、を含むことを特徴とする請求項１９に記載の方法。
【請求項２１】
１以上のレジスタに格納するステップは、前記ホストプロセッサが、ハードウエア状態ローダープログラムをホストプロセッサの第２プロセッサにて実行するステップ、を含むことを特徴とする請求項２０に記載の方法。
【請求項２２】
処理の実行を再開させるステップは、前記ホストプロセッサが、ファイルイメージから得られた第２プロセッサの専用ローカルメモリのコンテンツをホストプロセッサにおける第２プロセッサのローカルな保持領域にロードするステップ、を含むことを特徴とする請求項１５に記載の方法。
【請求項２３】
処理の実行を再開させるステップは、前記ホストプロセッサが、ホストプロセッサにおける第２プロセッサの１以上のレジスタに、第２プロセッサのファイルイメージから得られたＤＭＡ（Direct Memory Access）状態を格納するステップ、を含むことを特徴とする請求項１５に記載の方法。
【請求項２４】
ファイルイメージを転送する前に、
前記クライアントプロセッサが、クライアントプロセッサにおいて処理を実行するステップと、
前記クライアントプロセッサが、前記処理を停止させるステップと、
前記クライアントプロセッサが、クライアントプロセッサにおいて前記処理を実行している第２プロセッサの状態を保存するステップと、
を更に含み、
ファイルイメージは、その保存された状態を反映したデータであることを特徴とする請求項１に記載の方法。
【請求項２５】
状態を保存するステップは、前記クライアントプロセッサが、処理を実行している第２プロセッサのコア（core）を停止させるステップ、を含むことを特徴とする請求項２４に記載の方法。
【請求項２６】
状態を保存するステップは、コアを停止させたあと、前記クライアントプロセッサが、処理を実行する第２プロセッサのＭＦＣを停止させるステップ、を含むことを特徴とする請求項２５に記載の方法。
【請求項２７】
状態を保存するステップは、更に、前記クライアントプロセッサが、１以上のレジスタからＭＦＣの状態を取得するステップ、を含むことを特徴とする請求項２５に記載の方法。
【請求項２８】
状態を保存するステップは、更に、前記クライアントプロセッサが、ＭＦＣからローカル状態を取得するステップ、を含むことを特徴とする請求項２５に記載の方法。
【請求項２９】
状態を保存するステップは、更に、前記クライアントプロセッサが、ＳＡＶＥコードを第２プロセッサに送信し、そのコードを前記第２プロセッサにて実行させるステップ、を含むことを特徴とする請求項２４に記載の方法。
【請求項３０】
第２プロセッサにてコードを実行させるステップは、前記クライアントプロセッサが、第２プロセッサのハードウェア状態を読み出すステップ、を含むことを特徴とする請求項２９に記載の方法。
【請求項３１】
ハードウェア状態を読み出すステップは、前記クライアントプロセッサが、第２プロセッサの１以上のレジスタを読み出すステップ、を含むことを特徴とする請求項３０に記載の方法。
【請求項３２】
ハードウェア状態を読み出すステップは、前記クライアントプロセッサが、第２プロセッサの１以上のチャネルを読み出すステップ、を含むことを特徴とする請求項３０に記載の方法。
【請求項３３】
ホストプロセッサが、ホストプロセッサにおける第２プロセッサにて処理を再開させるステップ、を更に含むことを特徴とする請求項２４に記載の方法。
【請求項３４】
処理を再開させるステップは、ホストプロセッサが、ホストプロセッサにおける第２プロセッサの１以上のレジスタにファイルイメージから得られたハードウェア状態を格納するステップ、を含むことを特徴とする請求項３３に記載の方法。
【請求項３５】
１以上のレジスタに格納するステップは、ホストプロセッサが、第２プロセッサのハードウェア状態ローダープログラムをホストプロセッサの第２プロセッサにロードするステップ、を含むことを特徴とする請求項３４に記載の方法。
【請求項３６】
１以上のレジスタに格納するステップは、ホストプロセッサが、第２プロセッサのハードウェア状態ローダープログラムをホストプロセッサにおける第２プロセッサにて実行するステップ、を含むことを特徴とする請求項３５に記載の方法。
【請求項３７】
処理の実行を再開させるステップは、ホストプロセッサが、ファイルイメージから得られる第２プロセッサの専用ローカルメモリのコンテンツを、ホストプロセッサにおける第２プロセッサのローカルな保持領域にロードするステップ、を含むことを特徴とする請求項３３に記載の方法。
【請求項３８】
処理の実行を再開させるステップは、ホストプロセッサが、ホストプロセッサの第２プロセッサにおける１以上のレジスタに、第２プロセッサのファイルイメージから得られたＤＭＡ状態のデータを格納するステップ、を含むことを特徴とする請求項３３に記載の方法。
【請求項３９】
前記クライアントプロセッサが、クライアントプロセッサからホストプロセッサにファイルヘッダを転送するステップ、を更に含むことを特徴とする請求項１に記載の方法。
【請求項４０】
ホストプロセッサが、ホストプロセッサについて、ファイルヘッダの情報に基づいてファイルイメージを受け入れるか否かを判定するステップ、を更に含むことを特徴とする請求項３９に記載の方法。
【請求項４１】
ファイルヘッダは、
メモリ可用性、第２プロセッサ可用性、ネットワークレイテンシ、ネットワーク帯域幅、システム周波数、コントロールフロー情報（control flow information）、メモリのオフセット、１以上の第２プロセッサの専用ローカルメモリのコンテンツのブレークポイント、１以上の第２プロセッサの専用ローカルメモリのコンテンツのサイズ、メモリレイアウト、メモリのマッピング情報、メッセージボックスのレイアウト、メッセージボックスの容量、ホストリソース、通信仕様（connection requirements）、ファイルイメージの実行環境に関するその他の基準のうち、１以上のタイプの情報を含むことを特徴とする請求項３９に記載の方法。
【請求項４２】
ファイルヘッダは、
システムや操作がそれに基づいて確立されるべき、ユーザ、ＩＤ、システム、関数、データ型、チャネル、フラグ、キー、パスワード、プロトコル、ターゲット、プロファイルなどに関する数値であって、ファイルイメージに関連するものであったり、ファイルイメージにより指定される情報を定義することを特徴とする請求項３９に記載の方法。
【請求項４３】
ファイルヘッダは、
ファイルイメージがその一部となるアプリケーションの全体的な目的を達成するための、プログラム、システム、モジュール、オブジェクトの動作の設定、初期化、変更、同期に関する情報を定義することを特徴とする請求項３９に記載の方法。
【請求項４４】
ファイルヘッダを転送するステップは、前記クライアントプロセッサが、ファイルイメージの転送に先立ってファイルヘッダを生成するステップ、を含むことを特徴とする請求項３９に記載の方法。
【請求項４５】
ファイルヘッダを転送するステップは、前記クライアントプロセッサが、ファイルヘッダをファイルイメージの一部として転送するステップ、を含むことを特徴とする請求項３９に記載の方法。
【請求項４６】
第１プロセッサと、
１以上の第２プロセッサと、
第１プロセッサおよび第２プロセッサと接続されるメインメモリと、を備えるプロセッサシステムのためのファイルイメージを示すデータを保持する記録媒体であって、
各第２プロセッサは、
専用に対応づけられた専用ローカルメモリを備え、
ファイルイメージは、一の第２プロセッサの専用ローカルメモリのコンテンツと共有初期化データ、または、２以上の第２プロセッサの専用ローカルメモリのコンテンツを含み、
前記共有初期化データは、それぞれが特定の処理を実行している複数の第２プロセッサ間で共有される設定値を持つデータであることを特徴とするプロセッサにて読み取り可能な記録媒体。
【請求項４７】
前記ファイルイメージは、更に、ファイルヘッダを含むことを特徴とする請求項４６に記載のプロセッサにて読み取り可能な記録媒体。
【請求項４８】
ファイルヘッダは、
メモリ可用性、第２プロセッサ可用性、ネットワークレイテンシ、ネットワーク帯域幅、システム周波数、コントロールフロー情報（control flow information）、メモリのオフセット、１以上の第２プロセッサの専用ローカルメモリのコンテンツのブレークポイント、１以上の第２プロセッサの専用ローカルメモリのコンテンツのサイズ、メモリレイアウト、メモリのマッピング情報、メッセージボックスのレイアウト、メッセージボックスの容量、ホストリソース、通信仕様（connection requirements）、ファイルイメージの実行環境に関するその他の基準のうち、１以上のタイプの情報を含むことを特徴とする請求項４７に記載のプロセッサにて読み取り可能な記録媒体。
【請求項４９】
ファイルヘッダは、
システムや操作がそれに基づいて確立されるべき、ユーザ、ＩＤ、システム、関数、データ型、チャネル、フラグ、キー、パスワード、プロトコル、ターゲット、プロファイルなどに関する数値であって、ファイルイメージに関連するものであったり、ファイルイメージにより指定される情報を定義することを特徴とする請求項４７に記載のプロセッサにて読み取り可能な記録媒体。
【請求項５０】
ファイルヘッダは、
ファイルイメージがその一部となるアプリケーションの全体的な目的を達成するための、プログラム、システム、モジュール、オブジェクトの動作の設定、初期化、変更、同期に関する情報を定義することを特徴とする請求項４７に記載のプロセッサにて読み取り可能な記録媒体。
【請求項５１】
前記コントロールフロー情報は、ホストまたはクライアントのプロセッサがプロセスに割り込み可能か否かに関する情報を含むことを特徴とする請求項４８に記載のプロセッサにて読み取り可能な記録媒体。
【請求項５２】
第１プロセッサと、
１以上の第２プロセッサと、
第１プロセッサおよび第２プロセッサと接続されるメインメモリと、を備えるプロセッサシステムであって、
各第２プロセッサは、
専用に対応づけられた専用ローカルメモリを備え、
本プロセッサシステムは、ファイルイメージを示すデータをメインまたは専用ローカルメモリに保持し、
前記ファイルイメージは、一の第２プロセッサの専用ローカルメモリのコンテンツと、異なるプロセッサシステムの一時停止された処理実行状態に関する共有初期化データ、または、前記処理実行状態に関連する２以上の第２プロセッサの専用ローカルメモリのコンテンツを含み、
前記一のまたは２以上の第２プロセッサの専用ローカルメモリのコンテンツは、一時停止された処理を実行するための実行可能なコードを含み、
前記共有初期化データは、それぞれが特定の処理を実行している複数の第２プロセッサ間で共有される設定値を持つデータであることを特徴とするプロセッサシステム。
【請求項５３】
ファイルイメージは、更に、ファイルヘッダを含むことを特徴とする請求項５２に記載のプロセッサシステム。
【請求項５４】
ファイルヘッダは、
メモリ可用性、第２プロセッサ可用性、ネットワークレイテンシ、ネットワーク帯域幅、システム周波数、コントロールフロー情報（control flow information）、メモリのオフセット、１以上の第２プロセッサの専用ローカルメモリのコンテンツのブレークポイント、１以上の第２プロセッサの専用ローカルメモリのコンテンツのサイズ、メモリレイアウト、メモリのマッピング情報、メッセージボックスのレイアウト、メッセージボックスの容量、ホストリソース、通信仕様（connection requirements）、ファイルイメージの実行環境に関するその他の基準のうち、１以上のタイプの情報を含むことを特徴とする請求項５３に記載のプロセッサシステム。
【請求項５５】
ファイルヘッダは、
システムや操作がそれに基づいて確立されるべき、ユーザ、ＩＤ、システム、関数、データ型、チャネル、フラグ、キー、パスワード、プロトコル、ターゲット、プロファイルなどに関する数値であって、ファイルイメージに関連するものであったり、ファイルイメージにより指定される情報を定義することを特徴とする請求項５３に記載のプロセッサシステム。
【請求項５６】
ファイルヘッダは、
ファイルイメージがその一部となるアプリケーションの全体的な目的を達成するための、プログラム、システム、モジュール、オブジェクトの動作の設定、初期化、変更、同期に関する情報を定義することを特徴とする請求項５３に記載のプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その優先日と同時に出願され、本出願と譲受人が共通する米国特許出願「発明の名称:ＣＥＬＬプロセッサついての方法および装置（CELL PROCESSOR METHODS AND APPARATUS）、John P.Bates,Payton R.White,Attila Vass」に関連し、関連出願の主題は、ここに引用により組み込まれる。
【０００２】
本出願は、その優先日と同時に出願され、本出願と譲受人が共通する米国特許出願「発明の名称:ＣＥＬＬプロセッサのタスクとデータの管理（CELL PROCESSOR TASK AND DATA MANAGEMENT）、Richard B.Stenson,John P.Bates」に関連し、関連出願の主題は、ここに引用により組み込まれる。
【０００３】
本出願は、その優先日と同時に出願され、本出願と譲受人が共通する米国特許出願「発明の名称:ＣＥＬＬプロセッサのためのＳＰＵタスクマネージャ（SPU TASK MANAGER FOR CELL PROCESSOR）、John P.Bates,Payton R.White,Richard B.Stenson,Howard Berkey,Attila Vass,Mark Cerny」に関連し、関連出願の主題は、ここに引用により組み込まれる。
【０００４】
本出願は、その優先日と同時に出願され、本出願と譲受人が共通する米国特許出願「発明の名称:ＣＥＬＬプロセッサにおいてメモリコピー機能を実現するための方法および装置（METHOD AND SYSTEM FOR PERFORMING MEMORY COPY FUNCTION ON A CELL PROCESSOR）、Antoine Labour,John P.Bates,Richard B.Stenson」に関連し、関連出願の主題は、ここに引用により組み込まれる。
【０００５】
本実施例は、ＣＥＬＬプロセッサに関連し、より詳細には、ネットワーク上において複数のＣＥＬＬプロセッサを制御するための技術、に関する。
【背景技術】
【０００６】
ＣＥＬＬプロセッサとは、並行処理可能なマイクロプロセッサの一種である。基本構成のＣＥＬＬプロセッサには、１つのＰＰＥ（Power Processor Element）（「Processing Element」すなわち「PE」ともよばれる）と、複数のＳＰＥ（Synergistic Processing Elements）が含まれる。ＰＰＥとＳＰＥは、ＥＩＢ（Element Interconnect Bus）とよばれる内部高速バスによって接続される。ＣＥＬＬプロセッサは、携帯型デバイスからメインフレームまでのさまざまなアプリケーションについて対応可能に設計されている。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ある種のＣＥＬＬプロセッサでは、ＳＰＥは一体的な実行環境（monolithic execution environment）となる。ＣＥＬＬプロセッサ上で実行されるアプリケーションの可搬性やネットワーク透過性を向上させるように、各ＳＰＥは互いに独立性の高い実行主体となっている。このようなポータブルなＳＰＥアプリケーションは、ＳＰＵレット（SPUlet）とかアプレット（APUlet）とよばれる。しかし、いろいろなＳＰＵレットに対して同一サイズの実行環境を割り当てるのは問題がある。特に、ＳＰＵレットは単一粒度にだけなることもある。通常の従来型ＳＰＵレットは、単一のＳＰＥにロードされる、実行可能形式の単一ファイルイメージである。アプリケーションプログラムがより多くのリソース（計算資源）を必要とすると予想される場合、これらのリソースを複数のＳＰＵレットに分割するのは効率的ではない。特に、ＳＰＵレットがネットワークを横断して伝送される必要があるときにはなおさらである。
【０００８】
したがって、ＣＥＬＬプロセッサのアプリケーションを、ネットワークの内外で動作できるようにパッケージ化して移動させる上では、より大きなサイズの移動可能単位にてデータを構造化するための技術、が必要である。
【課題を解決するための手段】
【０００９】
本発明のある態様は、２以上のＣＥＬＬプロセッサをネットワーク上で動作させるための方法である。各ＣＥＬＬプロセッサは、ＰＰＵ（Power Processor Unit）と、メインメモリと、１以上のＳＰＥ（Synergistic processing engine）と、を備える。各ＳＰＥは、ＳＰＵ（Synergistic Processing Unit）と、ローカルストレージと、ＭＦＣ（Memory Flow Controller）と、を備える。
この方法は、ネットワークを介して、クライアントデバイスのＣＥＬＬプロセッサであるクライアントＣＥＬＬプロセッサから、ホストデバイスのＣＥＬＬプロセッサであるホストＣＥＬＬプロセッサに対してファイルイメージを転送するステップを含み、このファイルイメージとは、ＳＰＵイメージと共有初期化データ、または、２以上のＳＰＵイメージを含む。
【発明を実施するための最良の形態】
【００１０】
本発明の教授するところは、添付図面とあわせて以下の詳細な説明を考慮することにより容易に理解されるでろう。
以下の記述においては、例示のために多くの特定的な詳細を含むけれども、本発明の範囲内において、以下の詳細について多くの変形や変更が可能であることは、当業者には理解されるところである。したがって、下記に示す本発明の実施例は、請求項に記載の発明の一般性を失わせるものでも制約を設けるものでもない。
【００１１】
本発明の実施例におけるＣＥＬＬプロセッサは、下記において拡張ＳＰＵレットとして参照される移動単位にて、ＣＥＬＬプロセッサ中の１以上のＳＰＥについての動作関連情報をロード、ストア、セーブ可能である。従来型ＳＰＵレットと異なり、本実施例における拡張ＳＰＵレットは、２以上のＳＰＵイメージ、または、１以上のＳＰＵイメージと共有初期化データのような複数ＳＰＵについての追加的な動作関連情報を含むことができる。通常、共有データは、拡張ＳＰＵレットを実行する２以上のＳＰＥによって共有される。実行コンテキストの独立性のためには、ＰＰＵに共有データへアクセスさせない方が望ましい。ただし、ＰＰＵは、一時停止（サスペンド：suspend）や実行再開（レジューム：resume)のような管理上の理由からアクセスできる。拡張ＳＰＵレットと管理用ＰＰＵの間の通信は、メモリ上に特別に設定されたメッセージボックス領域を介して実行可能である。拡張ＳＰＵレットは従来型ＳＰＵレットよりも粒度が大きい。拡張ＳＰＵレットは、複数ＳＰＥのセットアップ、共有初期化データや追加的なコードなどのためのメモリ追加割り当て、ＳＰＥとシステムメインメモリの間のメモリマッピングに関連した問題についても対応できる。
【００１２】
一般的には、ＣＥＬＬプロセッサは、４つの分離された機能コンポーネントを含む。ＰＰＥ（PowerPC Processor Element）、ＳＰＵ（Synergistic Processor Unit）、ＭＦＣ（メモリフローコントローラ：Memory Flow Controller）、ＩＩＣ（内部割込コントローラ：Internal Interrupt Controller）である。ＰＰＥとＳＰＵは、ＣＢＥＡ準拠プロセッサの計算ユニットである。各ＳＰＵは、専用のローカルストレージ、ＭＭＵ（メモリ管理ユニット：Memory Management Unit）とそれに対応する専用のＭＦＣ、ＲＭＴ（書き換え管理テーブル：Replacement Management Table）を持たなければならない。これらのコンポーネントの組み合わせを、ＳＰＵエレメント（ＳＰＥ）とよぶ。ＣＥＬＬプロセッサは、マザーボードやその他セカンド−レベル・パッケージにおけるシングルチップやマルチチップのモジュール（あるいは、複数のマルチチップモジュール）、複数のシングルチップモジュールであってもよく、目的とする設計についての使用技術やコストパフォーマンス特性によって決定すればよい。
【００１３】
制約的な意味ではない設例として、図１は、ＣＢＥＡ（ＣＥＬＬブロードバンドエンジン・アーキテクチャ：Cell Broadband engine architecture）として知られるアーキテクチャ準拠のＣＥＬＬプロセッサ１００を示している。同図設例に示すようにＣＥＬＬプロセッサは、ＰＰＥの複数個の集合（ＰＰＥグループ）と、ＳＰＥの複数個の集合（ＳＰＥグループ）を備えることができる。あるいは、ＣＥＬＬプロセッサは、単一のＳＰＥと単一のＰＰＥにより、単一のＳＰＥグループと単一のＰＰＥグループだけを備えてもよい。グループ内の各ユニットは、ハードウェア資源を共有できる。ただし、ソフトウェアからは、ＳＰＥとＰＰＥは独立した要素として見えなければならない。
【００１４】
図１に示す例では、ＣＥＬＬプロセッサ１００は、ＳＧ−０、・・・、ＳＧ−ｎといった多数のＳＰＥグループと、ＰＧ−０、・・・、ＰＧ−ｐといった多数のＰＰＥグループを含む。各ＳＰＥグループは、ＳＰＥ０、・・・、ＳＰＥｇといった多数のＳＰＥを含む。また、ＣＥＬＬプロセッサ１００は、メインメモリ（ＭＥＭ）と入出力機能（Ｉ／Ｏ）も含む。以下に述べる１以上の拡張ＳＰＵレット１０２は、メインメモリＭＥＭに格納される。
【００１５】
各ＰＰＥグループは、ＰＰＥ−０、・・・、ＰＰＥ−ｇといった多数のＰＰＥを含む。この例では、ＳＰＥグループは、単一のキャッシュＳＬ１を共有する。キャッシュＳＬ１は、ローカルストレージとメインストレージの間におけるＤＭＡ転送のためのファーストレベルキャッシュである。グループ内の各ＰＰＥは、それぞれ専用のファーストレベル（内部）キャッシュＬ１を持つ。加えて、グループ内のＰＰＥは、単一のセカンドレベル（外部）キャッシュＬ２を共有する。図１では、ＳＰＥとＰＰＥのためのキャッシュが示されているが、一般的なＣＥＬＬプロセッサ、特にＣＢＥＡ準拠プロセッサにとってこれは必須の構成ではない。
【００１６】
要素接続バスＥＩＢは、上記に示したさまざまなコンポーネントを接続する。各ＳＰＥグループにおけるＳＰＥと各ＰＰＥグループにおけるＰＰＥは、バス・インタフェース・ユニットＢＩＵを介して、ＥＩＢにアクセスできる。ＣＥＬＬプロセッサ１００は、通常、プロセッサ内に２つのコントローラを含む。１つは、ＥＩＢとメインメモリＭＥＭの間のデータの流れを制御するメモリ・インタフェース・コントローラＭＩＣである。もう一つは、Ｉ／ＯとＥＩＢの間のデータの流れを制御するバス・インタフェース・コントローラＢＩＣである。ＭＩＣ、ＢＩＣ、ＢＩＵ、ＥＩＢについての実装はさまざまであるが、各実装に応じた機能や回路については当業者にとっては既知のものである。
【００１７】
各ＳＰＥは、ＳＰＵ（ＳＰＵ０、・・・、ＳＰＵｇ）を備える。ＳＰＥグループにおける各ＳＰＵは、専用のローカルストレージ領域ＬＳと専用のメモリ・フロー・コントローラＭＦＣを備える。ＭＦＣは、メモリ管理ユニットＭＭＵと対応づけられる。ＭＭＵは、メモリ保護やアクセス許可に関する情報の保持および処理を行う。
【００１８】
ＰＰＥは、キャッシュ付きの６４ビットのパワーＰＣ・プロセッサ・ユニット（ＰＰＵ）である。ＣＢＥＡ準拠システムでは、ＰＰＥは、ベクトル・マルチメディア・拡張ユニット（vector multimedia extension unit）を内蔵する。ＰＰＥは汎用処理用ユニットであり、（メモリ保護テーブルのような）システム管理資源にアクセスできる。ＣＢＥＡ定義のハードウェア資源は、ＰＰＥから見えるように物理アドレスに明示的にマップされる。それゆえ、いずれのＰＰＥも、適切かつ有効なアドレス値により、どんなリソースでも直接アドレスできる。ＰＰＥの主要機能は、システム内におけるＳＰＥタスクの割り当てと管理である。
【００１９】
ＳＰＥは、ＰＰＥに比べれば計算ユニットとしては複雑ではない。ＳＰＥにはシステム管理機能がないからである。ＳＰＥは、ＳＩＭＤ（single instruction,multiple data）による処理機能を備え、割り当てられたタスクを実行するために必要なデータ転送を（ＰＰＥによってセットアップされたアクセス属性にしたがって）開始する。ＳＰＵの目的は、計算ユニットのいっそうの高密度集積を要求し、所与の命令セットを効果的に実行できるようなアプリケーションを実現とすることである。システムにおいて、ＰＰＥに管理されるべきＳＰＵの数は、さまざまなアプリケーションについてコスト的に効率的な処理を実現できるように決められる。ＳＰＵは、新たな命令セットアーキテクチャを実装する。
【００２０】
ＭＦＣコンポーネントは、本質的にはデータ転送エンジンである。ＭＦＣは、ＣＥＬＬプロセッサのメインストレージとＳＰＥのローカルストレージの間におけるデータの転送、保護、同期に関する主要機能を担う。ＭＦＣコマンドは、転送の実行を示す。アーキテクチャ上におけるＭＦＣの最重要目的は、できるかぎり高速・正確にデータ転送を実行し、ＣＥＬＬプロセッサの全体としてのスループットを最大化することである。データ転送用コマンドは、ＭＦＣ・ＤＭＡコマンドとして参照される。これらのコマンドが変換されて、ローカルストレージ領域とメインストレージ領域の間のＤＭＡ転送となる。
【００２１】
通常、各ＭＦＣは、同時に複数のＤＭＡ転送をサポートし、複数のＭＦＣコマンドを保持・処理できる。このような機能を実現するため、ＭＦＣは、ＭＦＣコマンドキューを保持・処理する。ＭＦＣは、複数個の転送要求をキューに投入したり、それらを同時発行することもできる。各ＭＦＣは、対応するＳＰＵのためのキュー（ＭＦＣ・ＳＰＵ・コマンドキュー）と、他のプロセッサやデバイスのためのキュー（ＭＦＣ・プロキシ・コマンドキュー）を備える。論理的には、ＭＦＣキューの集合は、常に、ＣＥＬＬプロセッサ内の各ＳＰＵに対応づけられている。しかし、アーキテクチャ実装によっては、ＳＰＵグループのように複数のＳＰＵ間で単一の物理的なＭＦＣを共有することもできる。このような場合にも、ソフトウェアからは、すべてのＭＦＣに関連する装置がＳＰＵごとに別々にあるように見えなければならない。各ＭＦＣ・ＤＭＡ・データ転送要求コマンドは、ローカルストレージのアドレス（ＬＳＡ：local strage address）と有効アドレス（ＥＡ：effective address）の両方を含む。ローカルストレージアドレスは、該当ＳＰＵのローカルストレージ領域だけを直接アドレスできる。有効アドレスは、もう少し一般的に応用できる。実アドレス空間にエイリアス（別名：aliase）がなされているときには（すなわち、MFC-SR1[D]に'1'がセットされるとき）、全ＳＰＵのローカルストレージ領域も含めて、メインストレージを参照できるからである。
【００２２】
ＭＦＣは２種類のインタフェースを提供する。１つは、ＳＰＵ用であり、もう１つは、プロセスグループ内における他のプロセッサやデバイス全てのためである。ＳＰＵは、ＭＦＣ制御用にチャネルインタフェース（channel interface）を使う。この場合、ＳＰＵで実行されるコードは、当該ＳＰＵ用のＭＦＣ・ＳＰＵ・コマンドキューにだけアクセスできる。他プロセッサやデバイスは、メモリマップされたレジスタにより、ＭＦＣを制御できる。システム内のプロセッサやデバイスは、ＭＦＣを制御し、ＳＰＵに代わってＭＦＣ・プロキシ・要求コマンドを発行できる。ＭＦＣは、また、帯域予約やデータ同期もサポートする。ＳＰＵ間、および／または、ＳＰＵとＰＰＵ間、ＳＰＥとＰＰＥ間の通信用の装置には、シグナルイベントと対応づけられるシグナル通知レジスタが含まれる。通常、ＰＰＥとＳＰＥは、ＰＰＥがＳＰＥへメッセージを転送するルーターの役割を担うスター型トポロジーにて接続される。このようなトポロジーでは、ＳＰＥ同士はダイレクトに通信しない。代わりに、各ＳＰＥや各ＰＰＥは、一方通行のシグナル通知レジスタを持ち、これは、メールボックスとして参照される。メールボックスは、ＳＰＥとホストＯＳの同期をとるために使うことができる。
【００２３】
ＩＩＣコンポーネントは、ＰＰＥに対する割り込みの優先順位を管理する。ＩＩＣの主目的は、プロセッサ内の他のコンポーネントからの割り込みを、メインシステムの割込コントローラを使わずに扱うことである。ＩＩＣは、実際、セカンドレベルのコントローラである。ＣＢＥＡ準拠プロセッサに対する内部割り込み、あるいは、ＣＢＥＡ準拠プロセッサによるマルチプロセッサシステム内における割り込みの全てを扱うように想定されている。通常、システム割込コントローラは、ＣＥＬＬプロセッサに対する外部割り込みの全てに対応する。
【００２４】
ＣＥＬＬプロセッサシステムにおいては、ソフトウェアは、まず、外部のシステム割込コントローラからの割り込みがあったかを判定するために、しばしば、ＩＩＣをチェックしなければならない。ＩＩＣは、全てのＩ／Ｏデバイスからの割り込みの処理に関し、メインのシステム割込コントローラを代替するものではない。
【００２５】
ＣＥＬＬプロセッサには、２種類のストレージドメイン（storage domain：記憶領域）がある。ローカルストレージドメインとメインストレージドメインである。ＳＰＥのローカルストレージは、ローカルストレージドメイン内にある。他の装置やメモリは、全てメインストレージドメイン内にある。ローカルストレージは、記憶領域を１以上に分離した領域から成り、各領域は特定のＳＰＵと関連付けられる。各ＳＰＵは、（データのロードやストアといった操作も含めて）自己に関連するローカルストレージドメイン内の命令のみを実行可能である。ローカルストレージのエイリアスが有効化されていないときには、システム内の他のストレージを対象とするデータ転送要求は、常に、（各ＳＰＵの）ローカルストレージドメインとメインストレージドメインの間でデータを転送するためのＭＦＣ・ＤＭＡコマンドを発行することでしか実行できない。
【００２６】
ＳＰＵプログラムは、ローカルアドレスによりローカルストレージドメインを参照する。ただし、特権ソフトウェアは、MFC-SR1の第Ｄビットを「１」にセットすることによって、ＳＰＵのローカルストレージドメインをメインストレージドメインにエイリアスできる。各ローカルストレージ領域には、メインストレージドメイン内の実アドレスが割り当てられることになる（実アドレスは、システムメモリにおけるバイト単位アドレスかＩ／Ｏデバイスにおけるバイト単位アドレスのいずれかである。）。これにより、特権ソフトウェアは、アプリケーションの有効アドレス空間にローカルストレージ領域を割り当てることが可能となり、あるＳＰＵのローカルストレージと別のＳＰＵのローカルストレージの間のＤＭＡ転送が可能となる。
【００２７】
別プロセッサやデバイスは、メインストレージドメインへのアクセスにより、直接的に、ローカルストレージ領域をアクセス可能となる。このローカルストレージ領域は、メインストレージドメインによって示される実アドレス空間に対して、所定の変換方式にてマップされている有効アドレスやＩ／Ｏバスアドレスによって、メインストレージドメインとエイリアスされている。
【００２８】
メインストレージドメインとエイリアスされているローカルストレージ領域を使ったデータ転送では、キャッシュが禁じられる。このようなアクセスは、ローカルストレージドメインにおいて、ＳＰＵのローカルストレージへのアクセス（たとえば、ＳＰＵのロード、ストア、命令フェッチ）と一貫性を保てないからである。ローカルストレージ領域をメインストレージドメインの実アドレス空間とエイリアスさせることにより、メインストレージ領域へアクセスする他のプロセッサやデバイスは、ローカルストレージに直接アクセスすることができる。しかし、エイリアスされたローカルストレージは、キャッシュ禁止にて処理されなければならないので、ＰＰＥのロード命令やストア命令による大量のデータ転送ではパフォーマンスが悪くなる。ローカルストレージドメインとメインストレージドメインの間におけるデータ転送では、ストール（stall）を避けるためにＭＦＣ・ＤＭＡ・コマンドを使用する。
【００２９】
ＣＢＥＡにおけるメインストレージへのアドレッシングは、パワーＰＣ・アーキテクチャにおいて定義されているアドレッシングと互換性がある。ＣＢＥＡは、パワーＰＣアーキテクチャのコンセプトを基礎としつつも、ＭＦＣによるメインストレージへのアドレッシングにまで拡張されている。
【００３０】
ＳＰＵやその他のプロセッサ、デバイス上において実行されるアプリケーションプログラムは、メインメモリにアクセスするために有効アドレスを使う。有効アドレスは、ＰＰＥがロード、ストア、分岐、キャッシュ命令を実行したり、後続命令をフェッチするときに計算される。ＳＰＵのプログラムは、ＭＦＣコマンドのパラメータとして有効アドレスを示さねばならない。「PowerPC Architecture,Book3」の「overview of address translation」に記載されている処理方法により、有効アドレスから実アドレスへの変換がなされる。実アドレスとは、変換された有効アドレスによって参照されるメインストレージ上における位置である。メインストレージは、システム内の全てのＰＰＥ、ＭＦＣ、Ｉ／Ｏデバイスによって共有される。このレベルのストレージに保持される情報の全ては、システム内の全プロセッサ、全デバイスから見ることができる。このストレージ領域は、構造的にはフラットであってもよいし、階層的なキャッシュ構造を備えてもよい。プログラムは、有効アドレスによってこのレベルのストレージを参照する。
【００３１】
システムのメインメモリは、通常、システムコンフィギュレーション（system configuration）、データ転送同期、メモリマップドＩ／Ｏ、Ｉ／Ｏサブシステムといった処理用の特殊ハードウェアレジスタやアレーと、汎用の不揮発性記憶媒体も含む。メインメモリには、さまざまな設定をすることができる。制約的な意味ではない設例として、表１は、ＣＢＥＡとして知られる実装のＣＥＬＬプロセッサについて、メインメモリにおけるアドレス空間のサイズを示す。
【００３２】
【表１】
0004719655.tif 000002
【００３３】
ＣＥＬＬプロセッサ１００は、プロセッサとシステム内においてクリティカル・リソース（critical resource）の管理機能を持ってもよい。ＣＥＬＬプロセッサの管理対象となるリソースは、ＴＬＢ（translation lookaside buffers）とデータ、命令キャッシュである。これらのリソースは実装依存のテーブルによって制御される。
【００３４】
ＴＬＢやキャッシュを管理するためのテーブルはＲＭＴとして参照され、各ＭＭＵと対応づけられる。このようなテーブルはオプショナルなものであるが、システムのボトルネックとなりうるクリティカル・リソース用のテーブルは有用であることが多い。ＳＰＥグループは、ＤＭＡ転送のためのファーストレベルキャッシュとなるＳＬ１キャッシュをキャッシュ階層に含んでもよい。ＳＬ１キャッシュも、ＲＭＴを持ってもよい。
【００３５】
ＣＥＬＬプロセッサの実装技術について更に詳述する。以下の内容は、本発明の実施例に関連したデータ構造と処理方法について説明するものである。以下の実施例は上記したアーキテクチャを持つＣＥＬＬプロセッサについての実装を制約するものではない。とはいえ、以下の実施例は、多かれ少なかれ、拡張ＳＰＵレットが直面し利用され得る環境としてのＣＥＬＬアーキテクチャによる実装を示す。
【００３６】
図２は、拡張ＳＰＵレットと共に動作するＣＥＬＬプロセッサ２００の一例を示す。例として、このＣＥＬＬプロセッサは、メインメモリ２０２と、単一のＰＰＥ２０４、８つのＳＰＥ２０６を備えている。ただし、ＣＥＬＬプロセッサには任意の数のＳＰＥを設置できる。図２において、リング型のエレメント相互接続バス２１０により、メモリ、ＰＰＥ、ＳＰＥは、互いに、また、Ｉ／Ｏデバイス２０８とも通信可能である。拡張ＳＰＵレット２１２は、メインメモリ２０２に格納され、他のＣＥＬＬプロセッサに、たとえば、Ｉ／Ｏデバイス２０８やネットワーク２１４を介して伝送されたり、ＣＥＬＬプロセッサを構成するさまざまなＳＰＥ２０６に断片としてロードされる。
【００３７】
上記したように、拡張ＳＰＵレット１０２、２１２は、通常、１以上のＳＰＵイメージと非初期化データなどの追加的なデータ、あるいは、２以上のＳＰＵイメージを含む。図３は、拡張ＳＰＵレット３００を構成するデータの配置を示す。このデータには、これに限るものではないが、ＳＰＵイメージ３０２、共有初期化データ（share initialized data）３０４、非初期化データ（uninitialized data）３０６の関連情報、メッセージボックス３０８、が含まれる。拡張ＳＰＵレット３００は、ファイルヘッダ３１０を含むこともある。
【００３８】
ＳＰＵイメージ３０２は、通常、ＣＥＬＬプロセッサにおけるＳＰＥのローカル保持データを含む。ＳＰＵイメージは、ＣＥＬＬプロセッサの処理中に各ＳＰＥから集められる。ＳＰＵイメージには、ＳＰＵによって処理されたデータ、ＳＰＵによって処理されるべきデータ、ＳＰＵがデータを処理するためのコード、が含まれる。ＳＰＵイメージ３０２には、拡張ＳＰＵレット３００が一時停止されてたときの、ＭＦＣのＤＭＡ状態（DMA state）とＳＰＥのハードウェア状態（hardware state）に関するデータも含まれてもよい。初期化データ３０４は、設定に応じて、メインメモリに保持され、および／または、それぞれが特定の処理を実行している複数のＳＰＥ間で共有される設定値を持つデータである。反対に、非初期化データは、所定の設定値ではなく、既知データに関連するパラメータを持つ。たとえば、非初期化データ３０６の関連情報は、データ型、データのために必要なメモリ空間のサイズや位置を示す。メッセージボックス３０８は、ＳＰＵやＰＰＵが入出力データストリームにアクセスするためのメモリのウィンドウ（窓）である。ホスト・オペレーティングシステムは、メッセージボックス３０８を通して、（通信ソケットなどの）システムサービスを提供できる。拡張ＳＰＵレット３００も、インタフェースとしてメッセージボックス３０８を使うことにより、クライアントの環境に対して情報を返送してもよい。
【００３９】
メッセージボックス領域３０８は、ＰＰＵと拡張ＳＰＵレット３００の間の通信に使われる。メッセージボックスは、複数のメッセージボックスに分割されてもよい。各ボックスは、拡張ＳＰＵレットからＰＰＥ、ＰＰＥからＳＰＥのような単方向通信のために使うこともできる。メッセージボックス３０８は、ハンドシェイキングのために読み手側および書き手側によって管理領域と共に更新されるシングル・バッファやリング・バッファとして設計することもできる。メッセージボックス領域３０８内の情報のフォーマットはアプリケーション次第であるが、事前設定されたなんらかの規約は存在しうる。そのような事前設定規約は、ファイルヘッダ３１０に示される。
【００４０】
制約的な意味ではない設例として、ファイルヘッダ３１０は、ホストの設定規約により、拡張ＳＰＵレットがクライアントと通信するためにメッセージボックス３０８を使うように指定できる。あるいは、ファイルヘッダ３１０は、ＳＰＥがＰＰＵに対してシステムサービスを依頼するためにメッセージボックス３０８を使うよう指定してもよい。そのようなシステムサービスの例としては、追加メモリの要求、新しいネットワークの接続開始などが挙げられる。更に、ファイルヘッダ３１０は、ＰＰＵが拡張ＳＰＵレット３００の一時停止要求をメッセージボックス３０８を介して行うよう指定してもよい。
【００４１】
拡張ＳＰＵレットの内容が、コンテキストに依存する点は重要である。たとえば、ある拡張ＳＰＵレットがメインメモリにセーブされたとき、システムメモリにおけるその拡張ＳＰＵレット３００のイメージは、ＳＰＵイメージ３０２、共有初期化データ３０４、非初期化データ３０６の関連情報およびメッセージボックス３０８を含む。これらのデータの組み合わせは、システムメモリにて拡張ＳＰＵレットのイメージとして参照される。しかし、拡張ＳＰＵレット３００が、ネットワークを介して、クライアントデバイスから別のＣＥＬＬプロセッサ（以下、「ホストプロセッサ」とよぶ）に転送されるときには、ＳＰＵイメージ３０２と初期化データ３０４にファイルヘッダ３１０が結合される。このようなデータの組み合わせ（以下、「ファイルイメージ」とよぶ）が転送対象となる。
【００４２】
ファイルヘッダ３１０は、ホストＣＥＬＬプロセッサへの伝達用としての、拡張ＳＰＵレットについての情報を持つ。ヘッダ情報は、実行情報と拡張ＳＰＵレット情報に分類される。実行情報は、ホストリソース（host resources）、通信仕様、ＳＰＵレットの実行環境に関するその他の基準を示してもよい。拡張ＳＰＵレット情報は、メモリのレイアウト、マッピング、スタートオフセットやその他の初期化情報、メッセージボックスの設定などを示す。
【００４３】
そのような情報には、たとえば、メモリ可用性（その拡張ＳＰＵレットを実行するためにどのくらいのメモリが必要か）、ＳＰＵ可用性（その拡張ＳＰＵレットを実行するためには何個のＳＰＵが必要か）、拡張ＳＰＵレットのために必要なネットワーク待ち時間（network latency）、通信帯域およびシステム周波数、コントロールフロー情報（ホストマシンやクライアントマシンは、その拡張ＳＰＵレットに割り込んだり停止させたりする権限があるのか）、メモリオフセット、１以上のＳＰＵイメージのブレークポイント（breakpoints）、１以上のＳＰＵイメージのサイズ、メモリマッピング情報、メッセージボックスのレイアウト、メッセージボックスの容量などが含まれてもよい。ヘッダーは、システムや動作がそれに基づいて確立されるべき、ユーザ、ＩＤ、システム、関数、データ型、チャネル、フラグ、キー、パスワード、プロトコル、ターゲット、プロファイルなどに関する数値を定義してもよい。このような情報は、拡張ＳＰＵレットに関連するものであったり、拡張ＳＰＵレットにより指定されるものであってもよい。これに限る意図ではないが、拡張ＳＰＵレットがその一部となるアプリケーションの全体的な目的を達成するための、プログラム、システム、モジュール、オブジェクトの動作の設定、初期化、変更、同期に関する情報を含んでもよい。このようなアプリケーションは、アプリケーション、プロトコル、アプリケーションの符号化・復号・トランスコーディング（trancecording）、トランザクションに関するセキュリティ情報を含んでもよい。ファイルヘッダ３１０は、転送前にＰＰＥによって生成され、ＳＰＵイメージおよび初期化データと共に転送される。一方、ファイルヘッダ３１０は、ファイルイメージの一部となり、スタック転送の一部として送出される。
【００４４】
一般的には、ＳＰＵは、特権的ＳＰＵ制御にはアクセスできない。結果として、拡張ＳＰＵレット３００が各ＳＰＥに適切なコードをロードし、コードがロード後にスタート可能となる必要がある。更に、拡張ＳＰＵレット３００は、お互いのコミュニケーションのためには、メインメモリの共有部分やお互いに対してＳＰＥをマップするためのメモリマップ情報を含むのが好ましい。
【００４５】
図４は、拡張ＳＰＵレットによりネットワーク上で２以上のＣＥＬＬプロセッサを制御するための通常の方法４００を示している。ステップ４０２において、拡張ＳＰＵレットは、クライアントデバイスからホストデバイスにファイルイメージのかたちで転送される。ホストおよびクライアントＣＥＬＬプロセッサ間のファイルイメージの転送は、ネットワークやバス上で発生する。ここでいうネットワークは、これに限る意図ではないが、セキュアな、あるいは、セキュアでないネットワーク、たとえば、ローカルエリアネットワーク（ＬＡＮ：Local Area Network）、ワイドエリアネットワーク（ＷＡＮ：Wide Area Network）、あるいは、インターネットのような公的ネットワークであってもよい。たとえば、クライアントマシンは、ＳＰＵレットの残り部分を送る前に、ホストマシンに対してファイルヘッダ３１０を先に送ってもよい。ホストマシンは、受け入れ基準に対するファイルヘッダの情報を分析できる。たとえば、ＳＰＵレットの対象ホストマシンや他のデバイスは、充分なＳＰＵ、セキュリティ・クリアランス、権限、設定、メモリなど、拡張ＳＰＵレットを実行可能であるか判定する。ホストマシンは、拡張ＳＰＵレットを受け入れ可能か判定したり、あるいは、別のデバイスやターゲットマシンに、拡張ＳＰＵレットを転送したりできる。
【００４６】
ホストマシンが拡張ＳＰＵレットを受け取ると、ステップ４０４において、ホストマシンは拡張ＳＰＵレットのためにシステムメモリを割り当てる。ホストマシンは、ファイルヘッダの情報により、ＳＰＵイメージ３０２や共有初期化データ３０４のためにメモリのブロックのサイズやデータ型を確保する。いったんメモリ空間が確保されると、ステップ４０６において、ホストプロセッサは、拡張ＳＰＵレット３００のＳＰＵイメージ３０２と共有初期化データ３０４をホストＣＥＬＬプロセッサのメインメモリにロードする。ホストＣＥＬＬプロセッサは、（もしあれば）非初期化データやメッセージボックスのための領域も確保する。ＰＰＵのメインメモリに領域確保することが好ましい。しかし、ＳＰＵレット・アプリケーションは、そのＳＰＵレット・アプリケーションによっては、ＰＰＵのメモリ、および／または、１以上のＳＰＵのローカル保持領域に設定するかもしれない。通常、ビデオ・トランスコーディング（video transcoding）のような複雑な処理に対応する拡張リーチメモリ（extended reach memory）を充足するようにメインメモリに確保される。図５Ａと図５Ｂは、ホストデバイスのＣＥＬＬプロセッサ（ホストＣＥＬＬプロセッサ）における拡張ＳＰＵレットのデータ構造を示す。図５Ａに示すように、ホストプロセッサは、ＳＰＵイメージ３０２と初期化データ３０４、ファイルヘッダ３１０を含むファイルイメージを受け取る。通常、ＳＰＵイメージ３０２と初期化データ３０４だけが、ホストＣＥＬＬプロセッサのメインメモリに格納される。これらは、拡張ＳＰＵレット３００の「足跡（フットプリント：footprint）」をメインメモリに形成する。ヘッダ３１０のデータは、ホストプロセッサがそれを使い終わると破棄される。
【００４７】
ステップ４０８において、ホストＣＥＬＬプロセッサは、非初期化データ５０６とメッセージボックス５０８のために、メインメモリに領域を割り当てる。図５Ａに示すように、ＳＰＵイメージ３０２、初期化データ３０４、非初期化データ５０６とメッセージボックス５０８の割り当て領域は、ホストＣＥＬＬプロセッサのメインメモリ内に拡張ＳＰＵレット３００のイメージを形成する。ステップ４１０において、ホストプロセッサは、拡張ＳＰＵレット３００のために（図５Ｂに示すように）ＳＰＥ５１０を割り当てる。ＳＰＥ５１０が割り当てられると、ステップ４１２においてＳＰＵイメージ３０２が割当先のＳＰＥ５１０にロードされる。それから、ＳＰＥは、ステップ４１４においてホストＣＥＬＬプロセッサ上にて実行可能となる。
【００４８】
図６は、ネットワークを介したＣＥＬＬプロセッサ間における拡張ＳＰＵレットの移動方法の例を追加的に示す。ＳＰＵレットは、どんなクライアントでも作ることができる。図６は、クライアントＣＥＬＬプロセッサ６０１によって生成されたＳＰＵレットを対象とした例を示している。この例では、クライアントＣＥＬＬプロセッサは、自己のＳＰＥ６０２、６０３の２つを使って処理を実行する。命令やデータは、ステップ６０６、６０８にて示すように、メインメモリ６０４からＳＰＵ１とＳＰＵ２にロードされる。ステップ６１０において、ＳＰＵ１とＳＰＵ２は実行される。クライアントＣＥＬＬプロセッサのＰＰＥ６１２は、ステップ６１４においてＳＰＵ１とＳＰＵ２に割り込んで、停止させる必要があるかを判定する。割り込み理由はさまざまである。たとえば、ＰＰＥが、もっと優先度の高い仕事を実行するためにＳＰＥ６０２や６０３が必要であると判断する場合がある。処理は、他の位置よりもキリのいい位置まで進められる。たとえば、処理は、ホストデバイスに転送すべき大量のデータを生成しようとする地点まで実行される。ネットワークの帯域幅によっては、部分的に完了した処理をホストでバイスに転送し、そのデバイスにデータを生成させる方が効率的な場合もある。
【００４９】
ＳＰＵ１とＳＰＵ２が停止した後、ＳＰＵ１とＳＰＵ２がローカルに保持するコンテンツは、ステップ６１６と６１８において、ＳＰＵイメージ６２０、６２２としてメインメモリ６０４に保存（save）される。ステップ６２４において、ＰＰＥ６１２は、ＳＰＵイメージ６２０、６２２および初期化データ６２６を含む、ＳＰＵレットのファイルイメージを生成する。初期化データは、ＳＰＥ６０２、６０３、ＰＰＥ６１２によってシステムメモリ内に生成される。ＳＰＵイメージ６２０、６２２と初期化データ６２６に、上述したファイルヘッダと結びつけることによりファイルイメージが生成される。ステップ６２８において、ファイルイメージは、ネットワーク６３０を超えて、ホストＣＥＬＬプロセッサ６３１に送出される。ファイルヘッダに示される受け入れ基準が充足されたと仮定すると、ＳＰＵイメージ６２０、６２２、初期化データ６２６は、ホストＣＥＬＬプロセッサのメインメモリ６３４にロードされる。ここから、ステップ６３６とステップ６３８において、ＳＰＵイメージ６２０、６２２は、ホストＣＥＬＬプロセッサ６３１のＳＰＥ６３２、６３３にロードされ、ステップ６４０とステップ６４２において実行される。ＳＰＥ６３２、６３３は、通常のＣＥＬＬ処理アプリケーションとして完了するまで実行継続する。完了すると、拡張ＳＰＵレットは、ステータスをクライアントＣＥＬＬプロセッサ６０１に返送し、（必須ではないが）ホストＣＥＬＬプロセッサ６３１に完了通知を行う。ホストＣＥＬＬプロセッサ６３１上で実行されるオペレーティングシステム（ＯＳ）は、そのときに、メインメモリ６３４における拡張ＳＰＵレットのイメージとその関連データを（上書きなどによって）破棄できるようになる。
【００５０】
ステップ６４６において、ホストＣＥＬＬプロセッサは、たとえば、より高優先度の仕事を実行させるために、ＳＰＥ６３２、６３３のＳＰＵの処理に割り込むこともできる。ＳＰＵの動作が停止すると、上述したようにＳＰＵイメージはメインメモリにセーブされる。ＳＰＵイメージは、ステップ６５０において初期化データ６４８やコードなどとバンドルされてファイルイメージとなる。一方、ＰＰＥ６４６は、ＳＰＥが使えるようになるまで待機する（ステップ６５２）。ＳＰＵは、それから、ステップ６５４と６５６において、ＳＰＵの動作を再開させることができる。あるいは、ステップ６５８において、ファイルイメージをネットワーク６３０を介して別のホスト６６０や元のクライアントＣＥＬＬプロセッサ６０１に出力することもできる。
【００５１】
先の例では、ＳＰＵイメージ６２０、６２２は、ステップ６１６、６１８においてクライアントＣＥＬＬプロセッサ６０１によってセーブされた。同様に、ステップ６５０におけるファイルイメージ生成処理は、ホストＣＥＬＬプロセッサ６３１においてＳＰＵイメージをセーブする処理を含んでもよい。拡張ＳＰＵレットの伝送を実現するためには、サスペンド機能やレジューム機能があることが望ましい。好ましくは、サスペンド（一時停止）では、協調的に実行権限を明け渡すのがよい。たとえば、ホストＯＳは、拡張ＳＰＵレットにサスペンドを通知する。それから、ＳＰＵレットは、すべてのＤＭＡやＳＰＥの実行を停止させ、段階的に、実行を譲渡し、ホストＯＳに通知する。ホストＯＳは、拡張ＳＰＵレットの実行状態をセーブする。
【００５２】
図７は、クライアントまたはホストＣＥＬＬプロセッサが拡張ＳＰＵレットの実行状態をセーブする処理７００のフローチャートである。説明のため、同図では、あるＣＥＬＬプロセッサにおけるＰＰＥ７０１と１つのＳＰＥ７０２の動作を示す。当業者であれば、同様の処理を複数のＳＰＵイメージのセーブにまで拡張できることは理解されるところであろう。
【００５３】
ＰＰＵ７０１は、ＳＰＥ７０２で実行中のどんな処理でも止める。たとえば、ＰＰＵは、ステップ７０３においてＳＰＥのＰＵ内のストップレジスタに書き込みを行う。これにより、ステップ７０４において、ＳＰＥ７０２のＳＰＵのコア（core）はストップする。更に、ＳＰＥ７０２のＭＦＣにおけるＤＭＡ動作を止める必要があるかもしれない。ステップ７０５において、ＰＰＥ７０１はＳＰＥ７０２のＭＦＣのＤＭＡ・ＳＴＯＰ・レジスタに書き込みを行い、ステップ７０６にてＤＭＡを停止させることができる。ＤＭＡが停止すると、ステップ７０７において、ＰＰＥ７０１はＳＰＥ７０２のＤＭＡ状態を取得できる。ステップ７０６においてＳＰＵの実行が停止するときに、ＤＭＡ動作状態関連情報をＤＭＡレジスタから読み出すことにより実現可能である。このような情報は、ＳＰＥ７０２のために、拡張ＳＰＵレットの一部としてメインメモリに保持される。
【００５４】
ステップ７０９において、ＰＰＵはＳＰＥ７０２のローカル状態、たとえば、ＳＰＥ７０２のローカルストレージ（ＬＳ）の内容を取得する。このような動作は、ＳＰＵレジスタに書き込みを行い、ＭＦＣを介してＬＳの内容を読み出すことにより実行される。通常、ＬＳはコードとデータの両方を含み、それらは、拡張ＳＰＵレットの一部として、たとえば、ＳＰＵイメージとしてメインメモリにセーブされる。
【００５５】
しばしば、ＳＰＵのハードウェア状態、たとえば、拡張ＳＰＵレットの一部としてレジスタやチャネルの値をセーブしておくことは好ましい。ＳＰＵイメージの一部としてこのようなデータをセーブするためには、ＰＰＥはステップ７１１においてＳＰＥ７０２にＳＰＵ・ＳＡＶＥというコードを送出しなければならない。この処理は、レジスタへの書き込みとコード転送のためのＤＭＡ書き込みを含む。ＰＰＵは、ステップ７１３においてＳＰＵのプログラムカウンタをセットし、ステップ７１５においてＳＰＵにＳＰＵ・ＳＡＶＥコードを実行させるために、たとえば、ＳＰＵの実行レジスタへの書き込みによりシグナル通知する。ＳＰＵは、ステップ７０８にてＳＰＵ・ＳＡＶＥコードを実行開始し、ステップ７１０においてハードウェア状態を示すレジスタやチャネルを読み出し、ステップ７１２において、拡張ＳＰＵレットの一部としてメインメモリに対してハードウェア状態情報を送出する。
【００５６】
ＳＰＵイメージやその他の情報をセーブする処理は、ＳＰＵの動作をサスペンドする処理の一部である。図８は、拡張ＳＰＵレットとしてセーブされるサスペンド情報８００を示す。この例では、単一のＣＥＬＬシステム上で実行されるタスクがサスペンドし、他のホストに転送可能な拡張ＳＰＵレットに変化するとして説明する。情報８００は、ＳＰＵイメージ８０２、初期化データのような共有情報８０４、追加コード、非初期化データ８０６の関連情報、上記したメッセージボックス８０８を含む。先述した情報は、システムメモリイメージ８０１を形成する。ＳＰＵイメージ８０２と共有情報８０４は、ファイルヘッダ８１０と結合され、ファイルイメージ８０３を形成する。更に、情報８００は、ランタイムのＬＳ状態８０５に対応するＳＰＵイメージ８１２を含む。
【００５７】
ファイルイメージ８０３におけるＳＰＵイメージ８０２は、ＳＰＵレットが実行開始するときにロードされるものである。ＳＰＵイメージ８０２は、ローカルストレージのサイズ一杯となってはならない。これらは、システムメモリから自力で追加コードをロードできる。サスペンドされたＳＰＵイメージ８１２は、ローカルストレージ状態のスナップショットであり、ローカルストレージのサイズいっぱいとなるべきものであり、サスペンド地点に至るまでに完了したデータやコードのロードやアンロードを反映する。
【００５８】
情報８００は、更に、ＳＰＥプロセッサの実行状態８１４（たとえば、上記したようなハードウェア状態やＤＭＡの状態）を含む。制約的な意味ではない設例として、プロセッサの実行状態８１４は、レジスタ、チャネル状態、ＭＦＣ状態、命令ポインタ、デクリメンタ（decrementer）、浮動小数点例外状態などを含む。拡張ＳＰＵレットは、スタート時においてはそのような情報を必要としないため、実行状態８１４は分離される。拡張ＳＰＵレットは、コンテキスト情報を要求せずにフレッシュな状態でスタートするように想定されている。反対に、ＳＰＵレットをサスペンドするには、レジューム実行のために全てのハードウェアコンテキスト情報をセーブしなければならない。
【００５９】
加えて、情報８００は、接続情報のような管理情報８１６を含む。最低限、ホストは、ＩＰアドレスのようなクライアントに関する情報を保持する必要がある。実行を再開し、クライアントとの接続を再確立するために必要な情報は、拡張ＳＰＵレットの転送先のホストに渡されなければならない。ここで含まれるものは、転送に関するオーセンティケーション・モデル（authentication model）に基づいている。
【００６０】
下記に限定するものではないが、コンパイル時に転送可能なＳＰＵレットとなるように設定される必要がある。ここでいう転送とは、ある実行環境から別の実行環境にプログラムを移動させることなので、システム上におけるあらゆるものからのプログラムの独立性が高い必要がある。本実施例において、ＣＥＬＬベースの分散ネットワークは、全て、拡張ＳＰＵレットと共に開始可能な実行形式のプログラムを持つ。もし、拡張ＳＰＵレットがローカルに実行を開始するなら、他のホストへの転送にはコンテキストのセーブだけが必要である。ＳＰＥプログラムの任意の動作セットから動的に拡張ＳＰＵレットを生成することは必須ではない。
【００６１】
図６の関連説明は、ステップ６５４とステップ６５６においてサスペンドされているＳＰＵレットのレジュームについても言及している。一般性を毀損する意味ではない設例として、図９は、拡張ＳＰＵレットの実行停止を再開させる処理９００のフローチャートを示す。ステップ９０２において、ＳＰＥやメインメモリ、メッセージボックスなどのシステムリソースが拡張ＳＰＵレットの実行のために再割り当てされる。ステップ９０４では、メインメモリの一部におけるセーブされた情報、たとえば、ＳＰＵのローカルに保持されているランタイムイメージがＳＰＥにロードされる。ステップ９０６では、ＳＰＥの実行状態が再保持され、ステップ９０８ではＳＰＥの実行が再開される。
【００６２】
一般性を毀損する意味ではない設例として、図１０は、ＣＥＬＬプロセッサ１００１のＳＰＥ１００２が一時停止後に再開する処理の詳細を示すフローチャートである。図１０に示すプロセスは、複数のＳＰＵの一時停止後に再開する処理にまで拡張可能であることは当業者には理解されるところである。この例では、ＣＥＬＬプロセッサ１００１のメインメモリ１００４には、たとえば、ＳＰＵハードウェア状態１００８、ＳＰＵローカルストレージイメージ１０１０、ＤＭＡ状態１０１２を含むファイルイメージなどのＳＰＵレット１００６がロードされる。拡張ＳＰＵレット１００６は、ＣＥＬＬプロセッサ１００１上で実行される処理の割り込みやサスペンドの結果として保持されたり、別のＣＥＬＬプロセッサから導入されたりする。いずれにしても、この例示目的のため、ＳＰＥ１００２がステップ１０１４にて停止すると仮定する。
【００６３】
ＣＥＬＬプロセッサ１００１のＰＰＵ１０１６は、ハードウェア状態ローダープログラム（hardware state loader program）１０１８をＳＰＥ１００２に送出する。この処理には、ＳＰＥ１００２のＬＳへのＤＭＡ書き込みと、ＳＰＥ１００２のＳＰＵへのレジスタ書き込みが含まれ、これにより、ステップ１０２０において、ハードウェア状態ローダプログラムを実行させる。ステップ１０２２において、ハードウェア状態ローダープログラム１０２０により、ＳＰＥ１００２は、メインメモリ１００４に格納されている拡張ＳＰＵレット１００６からＳＰＵハードウェア状態１００８をロードし、ＳＴＯＰ・ＳＩＧＮＡＬ命令を実行する。この命令により、ＳＰＵのプログラムは停止し、（ＰＰＵ１０１６などの）外部環境に対してシグナルが発せされる。更なる命令は実行されない。ステップ１０２４において、ＰＰＵ１０１６は、メインメモリ１００４からＳＰＥ１００２のローカル記憶領域にＳＰＵローカルストレージイメージ１０１０をロードする。ステップ１０２６において、ＰＰＵ１０１６は、メインメモリ１００４からＳＰＥのローカル記憶領域に、たとえば、適切なレジスタへの書き込みにより、ＤＭＡ状態１０１２をロードする。
【００６４】
ＰＰＵ１０１６は、ステップ１０２８において、ＤＭＡ動作を開始するためにＳＰＥのＭＦＣにＤＭＡ・スタートコマンドを送出する。この処理には、ＭＦＣのスタートレジスタへの書き込み処理が含まれてもよい。ＤＭＡは、ステップ１０３０にて実行開始する。ステップ１０３２においてプログラムカウンタがセットされる。ＰＰＵ１０１６は、ステップ１０３４において、たとえば、ＳＰＵ実行レジスタへの書き込みにより、ＳＰＵ実行コマンドを送出する。ＳＰＵは、それから、ステップ１０３６にて、たとえば、動作が一時停止されていた地点から実行開始する。
【００６５】
拡張ＳＰＵレットをロードし、ハードウェア状態を設定し、ＤＭＡ状態をロードするステップは、本質的には、図１０に関連して説明したとおりである。ハードウェア状態とＤＭＡ状態をロードするシーケンスは省略されてもよい。初期ロードでは、通常、ＤＭＡやハードウェアの状態の復元がなされる。
【００６６】
以上は、本発明の最適な実施例の完全な記述であるが、さまざまな変更、変形、等価物への置き換えが可能である。それゆえ、本発明の範囲は、上記記述に関してではなく、請求項により定義されるべきであり、完全な等価物の範囲も含まれる。記述された特徴は、それが好ましいものであれ、そうでないものであれ、上記したさまざまな特徴と組み合わされてもよい。請求項においては、通常、特に断らない限りは、各要素は１またはそれ以上の数量を想定している。請求項の記載事項は、「〜手段」のような記載によって、明示される場合のほかは、いわゆるミーンズ・プラス・ファンクション特有の限定的意味で解してはならない。
【図面の簡単な説明】
【００６７】
【図１】本実施例において、拡張ＳＰＵレットを実装するＣＥＬＬブロードバンドエンジンアーキテクチャの模式図である。
【図２】本実施例におけるＣＥＬＬプロセッサの模式図である。
【図３】本実施例における拡張ＳＰＵレットのブロック図である。
【図４】本実施例における拡張ＳＰＵレットの実行過程を示すフローチャートである。
【図５（Ａ）】実行ステージにおける拡張ＳＰＵレットのメモリアロケーションを示すブロック図である。
【図５（Ｂ）】別の実行ステージにおける拡張ＳＰＵレットのメモリアロケーションを示すブロック図である。
【図６】本実施例において、ＣＥＬＬプロセッサの拡張ＳＰＵレットによるネットワークオペレーションのフローチャートである。
【図７】ＳＰＵ状態のセーブ処理の例を示すフローチャートである。
【図８】本実施例において、サスペンド中のＳＰＵレットのためにセーブされているサスペンド状態情報のメモリ構造を示すブロック図である。
【図９】サスペンド中の拡張ＳＰＵレットの動作を再開するときのフローチャートの一例である。
【図１０】ＳＰＥを一時停止から再開させる処理過程を示すフローチャートである。
【図１】
0004719655.tif 000003
【図２】
0004719655.tif 000004
【図３】
0004719655.tif 000005
【図４】
0004719655.tif 000006
【図５】
0004719655.tif 000007
【図６】
0004719655.tif 000008
【図７】
0004719655.tif 000009
【図８】
0004719655.tif 000010
【図９】
0004719655.tif 000011
【図１０】
0004719655.tif 000012