(57)【要約】【課題】プロセッサ・リソースの仮想化のためのシステムおよび方法を提供する。【解決手段】プロセッサにスレッドが作成され、プロセッサのローカル・メモリは、有効アドレス空間にマッピングされる。それを行うと、プロセッサのローカル・メモリは、プロセッサが実行中かどうかに関わらず、他のプロセッサによってアクセス可能である。追加のスレッドによって、有効アドレス空間に対する追加のローカル・メモリ・マッピングが生じる。有効アドレス空間は、物理的なローカル・メモリまたは「ソフト」コピー領域のいずれかに対応する。プロセッサが実行中に、異なるプロセッサが、プロセッサのローカル記憶領域から初めのプロセッサのローカル・メモリ内に位置するデータにアクセスしてもよい。プロセッサが実行中でないとき、継続してアクセスする他のプロセッサのために、プロセッサのローカル・メモリのソフトコピーが、メモリ位置（すなわち、ロックされたキャッシュ・メモリ、ピン・システム・メモリ、仮想メモリなど）に記憶される。【選択図】図１
2008515069.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサから、第２のプロセッサのローカル記憶装置内に位置するデータに対応するデータ要求を受信することと、
前記データ要求に対応する実アドレスを識別することと、
前記実アドレスに対応する前記データを前記第１のプロセッサに提供することと、
を含む、コンピュータで実施される方法。
【請求項２】
前記実アドレスは、ソフト・コピー領域に対応し、前記ソフト・コピー領域は、キャッシュ、カーネルおよびディスクからなる群から選ばれる、請求項１に記載の方法。
【請求項３】
前記データ要求は、有効アドレスを含み、
ページ・テーブル内に位置するページ・テーブル・エントリを使用して、前記有効アドレスを前記実アドレスへ変換することをさらに含む、請求項１に記載の方法。
【請求項４】
スレッド要求を受信することと、
前記第２のプロセッサに対応するプロセッサ状態を判定することと、
前記判定に基づいて、前記データを前記第２のプロセッサのローカル記憶装置からソフト・コピー領域へコピーすることと、
をさらに含む、請求項１に記載の方法。
【請求項５】
１つ以上のポリシーを取り出すことと、
１つ以上の前記ポリシーに基づいて、前記データをリストアするかどうかを判定することと、
前記判定に応じて前記データをリストアすることと、
をさらに含み、前記リストアすることが、
前記データをソフト・コピー領域から取り出すことと、
前記データを前記ローカル記憶装置に保存することと、
前記リストアすることに対応するページ・テーブル・エントリを変更することと、
をさらに含む、請求項１に記載の方法。
【請求項６】
前記ローカル記憶装置が、第２のプロセッサに位置するレジスタに対応する、請求項１に記載の方法。
【請求項７】
前記第１のプロセッサが、処理部であり、前記第２のプロセッサが、相乗処理部である、請求項１に記載の方法。
【請求項８】
コンピュータで実行されると請求項１から７のうちのいずれかのステップを行うのに有効なコンピュータ・プログラム・コードを有するコンピュータ動作可能な媒体を備える、プログラム製品。
【請求項９】
複数のプロセッサと、
前記複数のプロセッサによってアクセス可能な１つ以上の不揮発性記憶装置と、
前記複数のプロセッサによってアクセス可能な共有メモリと、
請求項１から７のうちのいずれかの方法ステップを行うのに有効なソフトウェア・コードを含む、データをスレッドに提供するためのデータ管理ツールと、
を含む、情報処理システム。
【請求項１０】
第１のプロセッサおよび第２のプロセッサは、異機種である、請求項９に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、プロセッサ・リソースの仮想化のためのシステムおよび方法に関する。より特定的には、本発明は、プロセッサの状態に関わらず、１つ以上のスレッドがプロセッサ・メモリにアクセスしてもよいようにプロセッサ・メモリを仮想化するためのシステムおよび方法に関する。
【背景技術】
【０００２】
コンピュータ・システムは、ますます複雑化してきている。コンピュータ業界は、典型的には、１８ヶ月毎にコンピュータ・システムの性能を倍増している（例えば、パーソナル・コンピュータ、ＰＤＡ、ゲーム・コンソール）。コンピュータ業界がこの作業を達成するために、半導体業界は、１８ヶ月毎に性能が倍増した集積回路を生産している。コンピュータ・システムは、集積回路のアーキテクチャに基づいて、特定の機能のための集積回路を使用している。２つの基本的なアーキテクチャは、１）マイクロプロセッサに基づくものと、２）デジタル信号プロセッサに基づくものとがある。
【０００３】
制御動作を取り扱うには、マイクロプロセッサに基づくアーキテクチャを有する集積回路が典型的には使用されるのに対し、信号処理操作（すなわち、数学的な演算）を取り扱うには、デジタル信号プロセッサに基づくアーキテクチャを有する集積回路が典型的には使用される。技術が進化するに連れて、コンピュータ業界および半導体業界は、コンピュータ・システムの設計において、両方のアーキテクチャ、言い換えればプロセッサの種類の重要性を認識している。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
広範囲のソフトウェア・アプリケーションに対するサポートを行おうとしつつ、かなりの量の処理能力を提供するために、数多くのコンピュータ・システムは、マルチプロセッサのアーキテクチャを使用している。しかしながら、これらの各プロセッサは、他のプロセッサによってアクセスできない、ローカル記憶領域およびレジスタ・ファイルなどの専用内部メモリを含んでいるという問題があることがわかった。また、もし特定のプロセッサが利用可能でない場合には、他のプロセッサは利用可能でないプロセッサからデータをアクセスできないという問題もあることがわかった。
【０００５】
さらに、プロセッサは、同一のメモリ空間にアクセスする複数のスレッドを実行する場合がある。特定のスレッドが特定のメモリ空間をアクセスしている場合に、他のスレッドは、当該特定のスレッドが完了するまで待機しなければならず、それで初めて他のスレッドは当該メモリ空間にアクセスできるようになるという問題があることがわかった。
【課題を解決するための手段】
【０００６】
以上の問題は、本発明の実施形態において、プロセッサのローカル・メモリをアプリケーションが作成するスレッド毎に有効アドレス空間にマッピングして、処理対象のスレッドについて「ソフト」データ・コピーを取り出すかどうかを判定するために、アドレス変換器がアクセスするスレッド毎のページ・テーブル・エントリを使用することによって、対処されるということがわかった。アプリケーションが作成するスレッド毎に、オペレーティング・システムは、有効アドレスと実アドレスとを含むページ・テーブル・エントリをページ・テーブル内に記憶する。実アドレスは、ローカル記憶位置またはソフト・コピー領域の何れかに対応する。データを取り出す要求をスレッドからアドレス変換器が受信すると、アドレス変換器は、ページ・テーブル・エントリを探索して、実アドレス位置から当該データを取り出す。
【０００７】
本発明の実施形態において、第１のプロセッサは、オペレーティング・システムを含み、当該オペレーティング・システムは、リアル・タイムのオペレーティング・システム（例えば、ゲーム・オペレーティング・システム）であっても、または仮想オペレーティング・システム（例えば、ウェブ・ブラウジング・オペレーティング・システム）であってもよい。オペレーティング・システムは、特定のアプリケーションについてのスレッドを呼び出す。スレッドは、ゲーム・アプリケーションのための地形レンダリングなどの特定のタスクを行う役割を果たす。オペレーティング・システムがスレッドを呼び出すと、オペレーティング・システムは、ページ・テーブル・エントリをページ・テーブルへ送出する。ページ・テーブル・エントリは、有効アドレスと、スレッドが使用するデータの位置に対応する実アドレスとを含む。実アドレスは、物理的なローカル記憶位置（例えば、ローカル記憶装置）に対応していてもよく、または、実アドレスは、ソフト・コピー領域に対応していてもよい。例えば、ソフト・コピー領域は、キャッシュ、ピン・システム・メモリ、またはディスク内にあってもよい。
【０００８】
スレッドは、有効アドレスを含む要求をアドレス変換器へ送出する。有効アドレスは、スレッドがアクセスしたいデータの有効メモリ位置を示す。アドレス変換器は要求を受信して、ページ・テーブル内のページ・テーブル・エントリを探索し、それによって、アドレス変換器は、有効アドレスに対応する実アドレスを識別する。実アドレスがプロセッサのローカル記憶領域に対応している場合には、アドレス変換器は、データをプロセッサのローカル記憶領域から取り出して、当該データをスレッドへ渡す。実アドレスがソフト・コピー領域に対応している場合には、アドレス変換器は、データのコピーをソフト・コピー領域から取り出して、当該データ・コピーをスレッドへ渡す。
【０００９】
オペレーティング・システムは、特定のポリシーおよび対応プロセッサの状態に基づいてデータをソフト・コピー領域に対して保存およびリストアすることによって、スレッドのデータを管理する。プロセッサのメモリが複数のスレッドによって使用されているような特定の場合、オペレーティング・システムは、スレッド毎にローカル記憶装置のソフト・コピーを作成してもよく、それによって、スレッドは、互いに異なるソフト・コピーを使用する。オペレーティング・システムは、オペレーティング・システムが保存またはリストア動作を行う度に、新たなページ・テーブル・エントリをページ・テーブル内に作成する。
【００１０】
添付の図面を参照して、一例として、本発明の実施形態を説明する。
【発明を実施するための最良の形態】
【００１１】
以下は、本発明の一例の詳細な説明を提供すること意図するものであるが、本発明自体を限定するものと受け取られるべきではない。むしろ、任意の数の変形が、説明に続く請求項において規定される本発明の範囲に入るだろう。
【００１２】
図１は、２次プロセッサのローカル・メモリにアクセスするメイン・プロセッサを示す図である。プロセッサＡ１００は、オペレーティング・システム１１５を含むメイン・プロセッサである。オペレーティング・システム１１５は、ゲーム・オペレーティング・システムなどのリアル・タイムのオペレーティング・システムであってもよく、または、オペレーティング・システム１１５は、ウェブ・ブラウジング・オペレーティング・システムなどの仮想オペレーティング・システムであってもよい。
【００１３】
オペレーティング・システム１１５は、アプリケーション１０５からスレッド要求を受信し、それによって、オペレーティング・システム１１５は、スレッド１の１１０を呼び出す。スレッド１の１１０は、ゲーム・アプリケーションにおける地形レンダリングなどの特定のタスクを行う役割を果たす。オペレーティング・システム１１５がスレッド１の１１０を呼び出すと、オペレーティング・システム１１５は、ページ・テーブル・エントリ１５０をページ・テーブル１４０へ送出する。ページ・テーブル・エントリ１５０は、有効アドレスと、スレッド１の１１０が使用するデータの位置に対応する実アドレスとを含む。実アドレスは、物理的なローカル記憶位置（例えば、ローカル記憶装置）に対応していてもよく、または、実アドレスは、ソフト・コピー領域に対応していてもよい。例えば、データのソフト・コピーは、キャッシュ、ピン・システム・メモリ、またはディスク内に記憶されてもよい（物理的なローカル・メモリおよびソフト・コピー領域に関するさらなる詳細については、図４および対応説明を参照）。
【００１４】
スレッド１の１１０は、アドレス変換器１３０に対して要求１２０を送出して、メモリの特定の部分に対するアクセスを要求する。要求１２０には、スレッド１の１１０がアクセスしたいデータの有効メモリ位置を示す有効アドレスが含まれる。アドレス変換器１３０は、要求１２０を受信し、ページ・テーブル１４０内のページ・テーブル・エントリ１５０を探索する。アドレス変換器１３０は、実アドレス位置がプロセッサＢ１６０のローカル記憶装置Ｂ１７０上に位置していることを識別する。アドレス変換器１３０は、データ１８０をローカル記憶装置Ｂ１７０から取り出して、データ１８０をスレッド１の１１０へ送出する。一実施形態において、アドレス変換器１３０は、データ１８０をページ毎というように徐々にスレッド１の１１０へ送出する。一実施形態において、スレッドは、プロセッサＢ１６０上にあってもよく、それによって、スレッドは、プロセッサＡ１００のローカル記憶装置からデータを取り出す（プロセッサＢ１６０上にあるスレッドに関するさらなる詳細については、図２および対応説明を参照）。
【００１５】
図２は、メイン・プロセッサのローカル・メモリ（例えば、ローカル記憶装置）にアクセスする２次プロセッサ上に含まれるスレッドを示す図である。図２は、プロセッサＢ１６０がローカル記憶装置Ａ２６０などのプロセッサＡ１００のローカル・メモリからデータを要求するスレッドを含む以外は、図１と同様である。
【００１６】
プロセッサＡ１００は、オペレーティング・システム１１５を含み、それによって、オペレーティング・システム１１５がスレッド２の２００を呼び出す場合に、オペレーティング・システム１１５は、ページ・テーブル・エントリ２４０をページ・テーブル１４０へ送出する。ページ・テーブル・エントリ２４０は、有効アドレスと、スレッド２の２００が使用するデータの位置に対応する実アドレスとを含む。
【００１７】
スレッド２の２００は、要求２２０をアドレス変換器１３０へ送出する。アドレス変換器１３０は、ページ・テーブル・エントリ２４０を探索して、データがローカル記憶装置Ａ２６０内に位置していることを判定する。アドレス変換器１３０は、データ２８０をローカル記憶装置Ａ２６０から取り出して、データ２８０をスレッド２の２００へ提供する。アドレス変換器１３０、ページ・テーブル１４０、プロセッサＢ１６０、プロセッサＡ１００、およびオペレーティング・システム１１５は、図１に示すものと同一である。
【００１８】
図３は、ソフト・コピー領域に位置するプロセッサのローカル・メモリのソフト・コピーにアクセスするスレッドの図である。動作中に、オペレーティング・システムは、ポリシー情報に基づいて、物理メモリをソフト・コピー領域へ保存およびリストアする。例えば、オペレーティング・システムは、データを特定の時間間隔で保存およびリストアしてもよい（さらなる詳細については、図６および対応説明を参照）。データがローカル記憶装置からソフト・コピー領域へ入れ替わる場合には、オペレーティング・システムは、アドレス変換器１３０が正しいソフト・コピー領域から当該データを取り出すように、ページ・テーブル１４０内のページ・テーブル・エントリを変更する。
【００１９】
プロセッサＡ１００は、スレッド３の３００を含み、当該スレッドは、アドレス変換器１３０へ要求３１０を送出する。そして次に、アドレス変換器１３０は、ページ・テーブル１４０内のページ・テーブル・エントリを識別して、当該データがソフト・コピー領域３２０などのソフト・コピー領域にあることを判定する。ソフト・コピー領域３２０には、キャッシュ３３０、カーネル３４０、およびディスク記憶装置３５０が含まれる。キャッシュ３３０は、Ｌ１またはＬ２キャッシュであってもよく、カーネル３４０は、ピン・システム・メモリであってもよく、ディスク記憶装置３５０は、外部ハード・ドライブであってもよい。
【００２０】
アドレス変換器１３０は、データ３６０をソフト・コピー領域３２０から取り出して、データ３６０をスレッド３の３００へ提供してさらなる処理に供する。アドレス変換器１３０、ページ・テーブル１４０、およびプロセッサＡ１００は、図１に示すものと同一である。
【００２１】
図４は、１つ以上のスレッドに基づいて、オペレーティング・システムがプロセッサ・メモリを管理する際に行われるステップを示す高レベルのフローチャートである。処理は４００において開始して、オペレーティング・システムは、スレッド要求をアプリケーション１０５から受信する（ステップ４１０）。例えば、アプリケーション１０５は、地形レンダリングなどの複雑な計算を行うスレッドを呼び出したい場合がある。オペレーティング・システムは、ステップ４２０においてスレッドを初期化して、それによって、プロセッサＢ１６０などの、スレッドをサポートするリソースを識別する。アプリケーション１０５およびプロセッサＢ１６０は、図１の示すものと同一である。
【００２２】
ステップ４３０において、処理は、プロセッサＢ１６０のタスク状態を識別する。例えば、スレッドが特定のプロセッサのローカル・メモリからデータを要求する場合には、オペレーティング・システムは、当該プロセッサがスレッドをサポートするように割り当てられたプロセッサかどうかを識別する。
【００２３】
スレッドはプロセッサの物理的なローカル・メモリ（ローカル記憶装置）にアクセスしてデータを取り出すべきかどうか、またはスレッドはソフト・コピー領域内のデータのソフト・コピーにアクセスすべきかについての判定がなされる（判定４４０）。例えば、スレッドがデータを含むのと同じプロセッサ上で実行する場合には、スレッドは、プロセッサのローカル記憶装置にアクセスしてもよい。他の例において、スレッドは、データの位置とは異なるプロセッサ上で実行してもよく、この場合には、オペレーティング・システムは、対応プロセッサがイナクティブかどうかに関わらず、スレッドがソフト・コピーにアクセスするように、データをソフト・コピー領域にコピーする。
【００２４】
スレッドが物理的なローカル・メモリを使用すべき場合には、判定４４０は「物理」枝路４４２に分岐して、オペレーティング・システムは、データをプロセッサのローカル・メモリ、言い換えればローカル記憶装置からアクセスするアドレス変換器によって使用される実アドレスを含むページ・テーブル・エントリをページ・テーブル１４０内に作成する（ステップ４５０）。ページ・テーブル１４０は、図１に示すものと同一である。
【００２５】
一方、スレッドがローカル記憶装置のソフト・コピーを使用すべき場合には、判定４４０は「ソフト・コピー」枝路４４８に分岐して、オペレーティング・システムは、ローカル記憶装置内のデータをソフト・コピー領域にコピーする（予め規定された処理ブロック４６０、さらなる詳細については、図５および対応説明を参照）。オペレーティング・システムは、アドレス変換器がソフト・コピー領域内のデータのソフト・コピーをアクセスするために使用される実アドレスを含むページ・テーブル・エントリを、ページ・テーブル１４０内に作成する（ステップ４７０）。したがって、スレッドがデータを要求すると、アドレス変換器は、対応プロセッサの状態に関わらず、データをスレッドに提供するために、ソフト・コピー領域にアクセスする（ソフト・コピー領域に関するさらなる詳細については、図３および対応説明を参照）。
【００２６】
オペレーティング・システムは、特定のポリシー管理に基づいて、ローカル記憶装置に対してデータをリストアおよび保存することによってメモリ管理を行う。メモリ管理処理中に、オペレーティング・システムは、ソフト・コピー領域からプロセッサのローカル記憶装置へデータをリストアしてもよく、または、オペレーティング・システムは、ローカル記憶装置内のデータをソフト・コピー領域へ保存してもよい（予め規定された処理ブロック４８０、さらなる詳細については、図６および対応説明を参照）。
【００２７】
オペレーティング・システムがスレッド要求の処理とメモリの管理とを継続すべきかどうかについての判定がなされる（判定４９０）。オペレーティング・システムが継続すべき場合には、判定４９０は「はい」枝路４９２へ分岐して、さらにスレッド要求を処理するためにループ・バックする。このループは、オペレーティング・システムが停止すべきときまで継続し、その時点で、判定４９０は「いいえ」枝路４９８へ分岐して、オペレーティング・システムは４９９において終了する。
【００２８】
図５は、ソフト・コピー領域に対して２次プロセッサのローカル・メモリに含まれるデータをコピーする際に行われるステップを示すフローチャートである。処理は５００で開始して、処理は、ステップ５１０においてローカル記憶装置Ｂ１７０からデータを取り出す。ローカル記憶装置Ｂ１７０は、図１に示すものと同一である。
【００２９】
ロックされたＬ１キャッシュまたはロックされたＬ２キャッシュのようなキャッシュ内にデータを保存するかどうかについての判定がなされる（判定５２０）。オペレーティング・システムがデータをキャッシュ内に保存すべき場合には、判定５２０は「はい」枝路５２２へ分岐して、処理は、ステップ５３０においてデータのコピーをキャッシュ３３０内に記憶して、５４０で戻る。キャッシュ３３０は、図３に示すものと同一である。一方、オペレーティング・システムがデータをキャッシュ内に保存すべきでない場合には、判定５２０は「いいえ」枝路５２８へ分岐して、キャッシュ内にデータを記憶するステップを行わない。
【００３０】
カーネル内に予約されたメモリのようなピン・システム・メモリ内にデータを保存するかどうかについての判定がなされる（判定５５０）。オペレーティング・システムがデータをピン・システム・メモリ内に保存すべき場合には、判定５５０は「はい」枝路５５２へ分岐して、処理は、ステップ５６０においてデータのコピーをカーネル３４０内に記憶して、５７０で戻る。カーネル３４０は、図３に示すものと同一である。一方、オペレーティング・システムがデータをカーネル内に保存すべきでない場合には、判定５５０は「いいえ」枝路５５８へ分岐して、ピン・システム・メモリ内にデータを記憶するステップを行わない。
【００３１】
外部ハード・ディスクなどのディスク上にデータを保存するかどうかについての判定がなされる（判定５８０）。オペレーティング・システムがデータをディスク上に保存すべき場合には、判定５８０は「はい」枝路５８２へ分岐して、処理は、ステップ５９０においてデータをディスク記憶装置３５０内に記憶して、５９５で戻る。ディスク記憶装置３５０は、図３に示すものと同一である。一方、オペレーティング・システムがデータをディスク上に保存すべきでない場合には、判定５８０は「いいえ」枝路５８８へ分岐して、ディスク上にデータを記憶するステップを行わず、５９５で戻る。
【００３２】
図６は、プロセッサのローカル記憶装置（すなわち、ローカル・メモリ）に対してデータをリストアおよび保存する際に行われるステップを示すフローチャートである。オペレーティング・システムは、特定のポリシーおよび対応プロセッサの状態に基づいてデータを保存およびリストアすることによって、スレッドの対応データを管理する。オペレーティング・システムは、ソフト・コピー領域内のデータのソフト・コピーにアクセスするのとは対照的に、物理的なローカル・メモリ内のデータにアクセスする機能をスレッドに対して提供することを試みる。プロセッサのメモリが複数のスレッドによって使用されているといった特定の場合において、オペレーティング・システムは、ローカル記憶装置のソフト・コピーを作成して、それによって、スレッドはソフト・コピーを使用する。
【００３３】
処理は６００において開始して、処理は、ステップ６０５において、ポリシー記憶装置６１０からポリシーを取り出す。ポリシー記憶装置６１０としては、コンピュータのハード・ドライブなどの不揮発性記憶領域上に記憶されることでもよい。処理は、ステップ６１５において第１のタスクを選択する。一実施形態において、処理は、第１のタスクの代わりに第１のスレッドを選択してもよい。
【００３４】
データをソフト・コピー領域からローカル記憶装置へリストアするかどうかについての判定がなされる（判定６２０）。例えば、スレッドは、優先度が低く、とりあえずソフト・コピー領域内のデータのソフト・コピーを使用していたかもしれない場合である。この例を続けるには、オペレーティング・システムは、スレッドを高い優先度へ移動させてもよく、オペレーティング・システムは、ソフト・コピーでローカル記憶装置をリストアし、次いで、アドレス変換器に対して、ローカル記憶装置からデータを取り出してスレッドに提供するように指示する。
【００３５】
オペレーティング・システムがソフト・コピー領域からローカル記憶装置へデータをリストアしたい場合には、判定６２０は「はい」枝路６２２へ分岐して、処理は、ステップ６２５において、ソフト・コピー領域３２０からソフト・コピーを取り出して、当該ソフト・コピーをローカル記憶装置Ｂ１７０に記憶する（ステップ６３０）。ソフト・コピー領域３２０およびローカル記憶装置Ｂ１７０は、それぞれ、図３および図１に示すものと同一である。処理は、ステップ６３５においてページ・テーブル１４０内のページ・テーブル・エントリを変更して、アドレス変換器がデータを取り出してスレッドに提供するローカル記憶位置に対応する新たな実アドレスを含むようにする。ステップ６２５，６３０，および６３５の間、アドレス変換器は、リストア動作が完了するまでは他のスレッドがローカル・メモリＢ１７０にアクセスできないように「ロック」されている。一方、オペレーティング・システムがリストア動作を行うべきでない場合は、判定６２０は「いいえ」枝路６２８へ分岐して、データをリストアするステップを行わない。
【００３６】
ローカル記憶装置からソフト・コピー領域へデータを保存するかどうかについて判定がなされる（判定６４０）。例えば、スレッドは優先度が低い場合があるので、オペレーティング・システムは、アドレス変換器に対して、ページ・テーブル・エントリを通じて、データのソフト・コピーを使用するように支持する。
【００３７】
オペレーティング・システムがソフト・コピー領域にデータを保存したい場合には、判定は「はい」枝路６４２へ分岐して、処理は、ステップ６４５においてローカル記憶装置Ｂ１７０からデータを取り出して、当該データをソフト・コピー領域３２０へコピーする（ステップ６５０）。ソフト・コピー領域３２０には、キャッシュ、ピン・システム・メモリ、またはディスクが含まれてもよい（ソフト・コピー領域に関するさらなる詳細については、図３、図５、および対応説明を参照）。
【００３８】
処理は、ステップ６５５において、ページ・テーブル１４０内のページ・テーブル・エントリを変更して、アドレス変換器が対応スレッド用にデータを取り出すためのソフト・コピー領域に対応する新たな実アドレスを含むようにする。ステップ６４５，６５０，および６５５の間は、アドレス変換器は、保存動作が完了するまでは他のスレッドがローカル・メモリＢ１７０にアクセスできないように「ロック」されている。
【００３９】
処理すべきタスクがさらにあるかどうかについての判定がなされる（判定６６０）。処理すべきタスクがさらにある場合には、判定６６０は「はい」枝路６６２へ分岐して、選択にループ・バックして（ステップ６７０）、新たなタスクを処理する。このループは、処理すべきタスクがなくなるまで継続し、その時点で、判定６６０は「いいえ」枝路６６８へ分岐して、処理は６８０で戻る。
【００４０】
図７は、ページ・テーブル・エントリを使用してアドレスを変換し、変換されたアドレスに基づいてスレッドに対してデータを提供する際に行われるステップを示すフローチャートである。処理は７００において開始して、アドレス変換器は、ステップ７１０においてスレッド７２０から要求を受信する。スレッド７２０は、図１、図２、および図３にそれぞれ示すスレッド１の１１０、スレッド２の２００、またはスレッド３の３００などの特定のスレッドであってもよい。スレッド７２０は、スレッド７２０がアクセスしたいデータの位置に対応する有効アドレスを含む。
【００４１】
ステップ７３０において、アドレス変換器は、ページ・テーブル１４０にアクセスして、ページ・テーブル・エントリのうちの１つを使用して、有効アドレスを実アドレスに変換する。オペレーティング・システムは、各ページ・エントリ・テーブルが物理的なローカル・メモリまたはソフト・コピー領域のいずれかに対応する実アドレスを含むように、ページ・テーブル・エントリを管理する（ページ・テーブル・エントリに関するさらなる詳細については、図６および対応説明を参照）。ページ・テーブル１４０は、図１に示すものと同一である。
【００４２】
アドレス変換器は、変換された実アドレスに基づいて、ソフト・コピー領域３２０またはローカル・メモリＢ１７０のいずれかからデータを取り出す（ステップ７４０）。ソフト・コピー領域３２０およびローカル・メモリＢ１７０は、それぞれ、図３および図１に示すものと同一である。ステップ７５０において、処理は、取り出されたデータをスレッド７２０へ渡す。一実施形態において、アドレス変換器は、一度にデータの１ページというように、徐々にデータをスレッド７２０へ渡す。
【００４３】
アドレス変換器がスレッド要求の処理を継続すべきかどうかについての判定がなされる（判定７６０）。アドレス変換器がスレッド要求の処理を継続すべきである場合には、判定７６０は「はい」枝路７６２へ分岐して、さらなるスレッド要求を処理するようにループ・バックする。このループは、処理すべきスレッド要求がなくなるまで継続し、その時点で、判定７６０は「いいえ」枝路７６８へ分岐して、アドレス変換は７７０において終了する。
【００４４】
図８は、アドレスが共通アドレス空間にマッピングされる複数のスレッドを実行する複数のプロセッサを示す図である。本発明は、複数のスレッドが複数のプロセッサにおいて動作することができ、各スレッドのそれぞれのメモリ・アクセスは、オペレーティング・システムによって管理され、その間、アドレス空間８５０などのアドレス空間にマッピングされる。
【００４５】
プロセッサＢ１の８００は、スレッドＥ８０５およびスレッドＦ８１０を含む。スレッドＥ８０５およびスレッドＦ８１０の有効アドレス空間は、それぞれ、有効アドレス空間Ｅ８５５および有効アドレス空間Ｆ８６０であって、これらは共にアドレス空間８５０に含まれる。各スレッドは独立した動作を行い、加えて、第１のオペレーティング・システムによって制御されるスレッドもあれば、第２のオペレーティング・システムによって制御されるスレッドもある（複数オペレーティング・システムに関するさらなる詳細については、図９および対応説明を参照）。
【００４６】
プロセッサＢ２の８１５は、スレッドＧ８２０、スレッドＨ８２５、およびスレッドＩ８３０という３つのスレッドを含む。図８からわかるように、スレッドＧ８２０、スレッドＨ８２５およびスレッドＩ８３０の有効アドレスは、それぞれ、有効アドレスＧ８６５、有効アドレスＨ８７０および有効アドレスＩ８７５であって、アドレス空間８５０内に位置している。
【００４７】
最後に、プロセッサＢ３の８３５は、スレッドＪ８４０およびスレッドＫ８４５という２つのスレッドを含む。スレッドＪ８４０およびスレッドＫ８４５の有効アドレス空間は、それぞれ、有効アドレス空間Ｊ８８０および有効アドレス空間Ｋ８８５であって、アドレス空間８５０内に位置している。
【００４８】
図８に示すスレッドは、その対応プロセッサがオペレーティング・システムまたはアプリケーションにとって「仮想」であるように管理されてもよい。例えば、２つのオペレーティング・システムがあって、一方は３つのプロセッサを制御しているとみなし、他方は２つのプロセッサを制御しているとみなし、その間、コンピュータ・システム内には３つのプロセッサしかないというようであってもよい（２つのオペレーティング・システムの間でのリソース共有についてのさらなる詳細については、図９および対応説明を参照）。
【００４９】
図９は、異機種プロセッサ環境におけるプロセッサ・リソースを共有する２つのオペレーティング・システムを示す図である。図９は、別個のオペレーティング・システム間でリソースを共有するために、プロセッサのローカル・メモリを仮想化する使用法を示す。例えば、コンピュータ・システムは、２つのオペレーティング・システムを実行し、８つのプロセッサを含んでもよい。本例において、第１のオペレーティング・システムは、６つのプロセッサを必要とし、第２のオペレーティング・システムは、８つすべてのプロセッサを必要とする。本例において、両オペレーティング・システムの要件を満たすために、プロセッサ・リソースは仮想化されて、２つのオペレーティング・システム間で共有される。
【００５０】
プロセッサＡ１００は、オペレーティング・システム１の９００と、オペレーティング・システム２の９５０とを含む。各オペレーティング・システムは、特定の機能についての役割を果たす。例えば、オペレーティング・システム１の９００は、ゲーム・アプリケーションのためのリアル・タイムのオペレーティング・システムであってもよく、オペレーティング・システム２の９５０は、ウェブ・ブラウジングを管理する仮想オペレーティング・システムであってもよい。
【００５１】
図９は、複数のスレッドを実行するプロセッサＢ１の８００、プロセッサＢ２の８１５およびプロセッサＢ３の８３５とを示す。オペレーティング・システム１の９００は、スレッドＥ８０５、Ｈ８２５、Ｉ８３０、Ｊ８４０およびＫ８４５を使用する。このように、オペレーティング・システム１の９００は、３つのプロセッサ（Ｂ１の８００、Ｂ２の８１５、およびＢ３の８３５）すべてを制御しているとみなしている。プロセッサＢ１の８００、Ｂ２の８１５およびＢ３の８３５は、図８に示すものと同一である。
【００５２】
加えて、図９は、オペレーティング・システム２の９５０がスレッドＦ８１０およびＧ８２０を使用することを示す。このように、オペレーティング・システム９５０は、２つのプロセッサ（Ｂ１の８００およびＢ２の８１５）を制御しているとみなしている。合わせると、オペレーティング・システムは、コンピュータ・システム内には５つのプロセッサがあるとみなしているが、実際には３つしかない。スレッドＥ８０５、Ｆ８１０、Ｇ８２０、Ｈ８２５、Ｉ８３０、Ｊ８４０およびＫ８４５は、図８に示すものと同一である。
【００５３】
各スレッドは、本明細書に説明する本発明を使用して、他のプロセッサのうちの１つに対応するローカル・メモリにアクセスしてもよい。例えば、スレッドＥ８０５は、アドレス変換器に対してプロセッサＢ３の８３５のローカル・メモリにアクセスするための要求を送出することによって、プロセッサＢ３の８３５のローカル・メモリにアクセスしてもよい。本例において、アドレス変換器は、ページ・テーブル内に位置するページ・テーブル・エントリを使用して、プロセッサＢ３の８３５のローカル・メモリに対応する実アドレスを識別する。実アドレスは、物理的なローカル・メモリに対応してもよく、または、実アドレスは、プロセッサＢ３の８３５のデータのソフト・コピーを含むソフト・コピー領域に対応してもよい（アドレス変換に関するさらなる詳細については、図１から図７および対応説明を参照）。
【００５４】
図１０は、複数の異機種プロセッサを含むプロセッサ・エレメント・アーキテクチャを示す図である。異機種プロセッサは、共通メモリと共通バスとを共有している。プロセッサ・エレメント・アーキテクチャ（ＰＥＡ）１０００は、入出力１０７０を通じて外部装置に対して情報を送受信し、プロセッサ・エレメント・バス１０６０を使用して、制御プレーン１０１０およびデータ・プレーン１０４０に情報を分配する。制御プレーン１０１０は、ＰＥＡ１０００を管理して、作業をデータ・プレーン１０４０へ分配する。
【００５５】
制御プレーン１０１０は、オペレーティング・システム（ＯＳ）１０２５を実行する処理部１０２０を含む。例えば、処理部１０２０は、ＰＥＡ１０００に埋め込まれるＰｏｗｅｒＰＣ（ＩＢＭ社の登録商標）コアであってもよく、ＯＳ１０２５は、Ｌｉｎｕｘ（Ｌｉｎｕｓ  Ｔｏｒｖａｌｄｓ氏の商標）オペレーティング・システムであってもよい。処理部１０２０は、ＰＥＡ１０００のための共通メモリ・マップ・テーブルを管理する。当該メモリ・マップ・テーブルは、Ｌ２メモリ１０３０およびデータ・プレーン１０４０に含まれる非プライベート・メモリなどといった、ＰＥＡ１０００に含まれるメモリ位置に対応している（メモリ・マッピングに関する更なる詳細については、図１１Ａ、図１１Ｂ、および対応説明を参照）。
【００５６】
データ・プレーン１０４０は、相乗処理コンプレックス（Ｓｙｎｅｒｇｉｓｔｉｃ  Ｐｒｏｃｅｓｓｉｎｇ  Ｃｏｍｐｌｅｘ（ＳＰＣ））１０４５、１０５０、および１０５５を含む。各ＳＰＣは、データ情報を処理するために使用され、各ＳＰＣは、互いに異なる命令セットを有してもよい。例えば、ＰＥＡ１０００は、無線通信システムにおいて使用されてもよく、各ＳＰＣは、変調、チップ・レート処理、符号化、およびネットワーク・インターフェーシングなどの別個の処理タスクを担ってもよい。他の例において、各ＳＰＣは、同一の命令セットを有してもよく、並行処理の恩恵に浴する動作を並行して行うために使用されてもよい。各ＳＰＣは、デジタル信号プロセッサ、マイクロコントローラ、マイクロプロセッサ、またはこれらのコアの組み合わせなどといった、処理コアである相乗処理部（ＳＰＵ）を含む。
【００５７】
ＳＰＣ１０４５、１０５０、１０５５は、プロセッサ・エレメント・バス１０６０に結合され、プロセッサ・エレメント・バス１０６０は、制御プレーン１０１０、データ・プレーン１０４０、および入出力１０７０間で情報を渡す。バス１０６０は、入出力１０７０、制御プレーン１０１０、およびデータ・プレーン１０４０間で情報を渡す、オンチップのコヒーレントなマルチプロセッサ・バスである。入出力１０７０は、ＰＥＡ１０００に接続された周辺装置に基づいてインターフェース・ピンを入出力コントローラに対して動的に割り当てる、柔軟性のある入出力論理を含む。例えば、ＰＥＡ１０００は、周辺装置Ａおよび周辺装置Ｂという２つの周辺装置に接続されてもよく、それによって、各周辺装置は、ＰＥＡ１００上の特定の数の入出力ピンに接続する。本例において、柔軟性のある入出力論理は、周辺装置Ａに接続されたＰＥＡ１０００の外部入出力ピンを第１の入出力コントローラ（例えば、ＩＯＣ  Ａ）に経路設定し、周辺装置Ｂに接続されたＰＥＡ１０００の外部入出力ピンを第２の入出力コントローラ（例えば、ＩＯＣ  Ｂ）に経路設定するように構成される。
【００５８】
図１１Ａは、本明細書に記載のコンピューティング動作を行うことが可能なコンピュータ・システムの簡易例である情報処理システムを示す。図１１Ａの例は、異機種プロセッサ間でメモリを共有するために共通メモリ・マップを使用する複数の異機種プロセッサを示す。装置１１００は、装置１１００のためにオペレーティング・システムを実行する処理部１１３０を含む。処理部１１３０は、図１０に示す処理部１０２０と同様である。処理部１１３０は、システム・メモリ・マップ１１２０を使用して、メモリ空間を装置１１００全体に渡って割り当てる。例えば、処理部１１３０は、システム・メモリ・マップ１１２０を使用して、処理部１１３０がメモリ要求を受信する場合にメモリ領域を識別および割り当てる。処理部１１３０は、アプリケーションおよびデータ情報を取り出すために、Ｌ２メモリ１１２５にアクセスする。Ｌ２メモリ１１２５は、図１０に示すＬ２メモリ１０３０と同様である。
【００５９】
システム・メモリ・マップ１１２０は、メモリ・マッピング領域を領域１１３５，１１４５，１１５０，１１５５，および１１６０に分離する。領域１１３５は、別個の入出力装置によって制御されうる外部システム・メモリ用のマッピング領域である。領域１１４５は、ＳＰＣ１１０２などの１つ以上の相乗処理コンプレックスに対応するプライベート記憶位置用のマッピング領域である。ＳＰＣ１１０２は、図１０に示すＳＰＣのＡの１０４５などのＳＰＣと同様である。ＳＰＣ１１０２は、ローカル記憶装置１１１０などのローカル・メモリを含み、それによって、ローカル・メモリの部分が、アクセスする他のプロセッサのためにシステム・メモリ全体に渡って割り当てられてもよい。例えば、ローカル記憶装置１１１０の１ＭＢが、非プライベート記憶装置に割り当てられてもよく、それによって、他の異機種プロセッサによってアクセスできるようになる。本例において、ローカル記憶エイリアス１１４５は、ローカル記憶装置１１１０内に位置する非プライベート記憶装置の１ＭＢを管理する。
【００６０】
領域１１５０は、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）およびメモリ・フロー制御（ＭＦＣ）レジスタ用のマッピング領域である。トランスレーション・ルックアサイド・バッファは、メモリの最近参照されたページの仮想アドレスと実アドレスとの間の相互参照を含む。メモリ・フロー制御は、ＤＭＡ制御および同期などの、プロセッサとバスとの間のインターフェース機能を提供する。
【００６１】
領域１１５５は、オペレーティング・システム用のマッピング領域であって、帯域幅および待ち時間を保証するピン・システム・メモリである。領域１１６０は、装置１１００の外部にある入出力装置用のマッピング領域であって、システムおよび入出力アーキテクチャによって規定される。
【００６２】
相乗処理コンプレックス（ＳＰＣ）１１０２は、相乗処理部（ＳＰＵ）１１０５と、ローカル記憶装置１１１０と、メモリ管理ユニット（ＭＭＵ）１１１５とを含む。処理部１１３０は、ＳＰＵ１１０５を管理して、処理部１１３０の指示に応答したデータを処理する。例えば、ＳＰＵ１１０５は、デジタル信号処理コア、マイクロプロセッサ・コア、マイクロコントローラ・コア、またはこれらのコアの組み合わせであってもよい。ローカル記憶装置１１１０は、プライベート記憶領域と非プライベート記憶領域用にＳＰＵ１１０５が構築する記憶領域である。例えば、ＳＰＵ１１０５がかなりの量のローカル・メモリを必要とする場合、ＳＰＵ１１０５は、ローカル記憶装置１１１０の１００％をプライベート・メモリに割り当ててもよい。他の例において、ＳＰＵ１１０５が最小限の量のローカル・メモリを必要とする場合、ＳＰＵ１１０５は、ローカル記憶装置１１１０の１０％をプライベート・メモリに割り当て、ローカル記憶装置１１１０の残りの９０％を非プライベート・メモリに割り当ててもよい（ローカル記憶装置の構成に関するさらなる詳細については、図１１Ｂおよび対応説明を参照）。
【００６３】
非プライベート・メモリに割り当てられたローカル記憶装置１１１０の部分は、領域１１４５内のシステム・メモリ・マップ１１２０によって管理される。これらの非プライベート・メモリ領域は、他のＳＰＵまたは処理部１１３０によってアクセスされてもよい。ＭＭＵ１１１５は、直接メモリ・アクセス（ＤＭＡ）機能を含み、ローカル記憶装置１１１０から装置１１００内の他のメモリ位置へ情報を渡す。
【００６４】
図１１Ｂは、プライベート・メモリと、非プライベート・メモリとに分割されたローカル記憶領域を示す図である。システム起動の間に、相乗処理部（ＳＰＵ）１１６０は、ローカル記憶装置１１７０をプライベート記憶装置１１７５と非プライベート記憶装置１１８０とに区分けする。ＳＰＵ１１６０は、図１１ＡのＳＰＵ１１０５と同様であり、ローカル記憶装置１１７０は、図１１Ａのローカル記憶装置１１１０と同様である。プライベート記憶装置１１７５は、ＳＰＵ１１６０および特定の装置内の他の処理部によってアクセス可能である。ＳＰＵ１１６０は、データへの高速アクセス用にプライベート記憶装置１１７５を使用する。例えば、ＳＰＵ１１６０は、ＳＰＵ１１６０がメモリ内に記憶された大量のデータに迅速にアクセスすることが必要な複雑な計算を担ってもよい。本例において、ＳＰＵ１１６０は、ＳＰＵ１１６０がアクセスするのに十分なローカル・メモリを有することを確実にするために、ローカル記憶装置１１７０の１００％をプライベート記憶装置１１７５に割り当ててもよい。他の例において、ＳＰＵ１１６０は、大量のローカル・メモリを要しない場合があり、よって、ローカル記憶装置１１７０の１０％をプライベート記憶装置１１７５に割り当てて、ローカル記憶装置１１７０の残りの９０％を非プライベート記憶装置１１８０に割り当ててもよい。
【００６５】
ローカル記憶エイリアス１１９０などのシステム・メモリ・マッピング領域は、非プライベート記憶装置に割り当てられたローカル記憶装置１１７０の部分を管理する。ローカル記憶エイリアス１１９０は、図１１Ａに示すローカル記憶エイリアス１１４５と同様である。ローカル記憶エイリアス１１９０は、ＳＰＵ毎に非プライベート記憶装置を管理し、他のＳＰＵおよび装置の制御処理部が非プライベート記憶装置にアクセスできるようにする。
【００６６】
図１０、図１１Ａ、および図１１Ｂにおいて説明したコンピュータ・システムは、本明細書に記載された処理を実行可能であるが、本コンピュータ・システムは、コンピュータ・システムの一例に過ぎない。数多くのコンピュータシステム設計が本明細書に記載された処理を実行可能であることを、当業者は理解するだろう。
【００６７】
本発明の好ましい実施のひとつは、アプリケーション、すなわち、例えばコンピュータのランダム・アクセス・メモリ内に常駐するようなコード・モジュール内の命令（プログラム・コード）のセットである。コンピュータによって要求されるまでは、命令のセットは、例えばハード・ディスク・ドライブ上などの他のコンピュータ・メモリ内、または光ディスクなどの着脱可能な記憶装置内（最終的な使用として、ＣＤ‐ＲＯＭ内）、またはフロッピー（登録商標）・ディスク（最終的な使用として、フロッピー（登録商標）・ディスク・ドライブ内）に記憶されるか、もしくはインターネットまたは他のコンピュータ・ネットワークを介してダウンロードされてもよい。よって、本発明は、コンピュータにおいて使用されるコンピュータ・プログラム製品として実施されてもよい。加えて、説明した様々な方法は、ソフトウェアによって選択的に起動されるかまたは再構築される汎用コンピュータ内で好都合に実施されるが、そのような方法は、ハードウェア、ファームウェア、または必要な方法ステップを行うように構築されたより特化された装置において実施されてもよいことを、当業者は理解するだろう。
【００６８】
本発明の特定の実施形態を示しかつ説明してきたが、本明細書の教示に基づいて、変更および修正が本発明およびそのより広範な局面から逸脱することなく行われてもよく、したがって、添付の請求項は、本発明の真の意図および範囲内にあるような変更および修正すべてをその範囲に含むものであることは当業者にとって明らかだろう。さらに、本発明は、添付の請求項によってのみ規定されるものであることを理解すべきである。導入された請求項の要素の特定の数が意図されている場合、その意図は請求項内に明示的に引用されるが、そのような引用がない場合には、そのような制限は存在しないことを、当業者は理解するだろう。非制限的な例として、理解の助けとして、添付の請求項には、請求項の要素を導入するために「少なくとも１つ」および「１つ以上」という導入句の使用が含まれている。しかしながら、そのような句の使用は、不定冠詞「ａ」または「ａｎ」による請求項の要素の導入によって、たとえ当該請求項が「１つ以上」または「少なくとも１つ」という導入句と不定冠詞「ａ」または「ａｎ」とを含む場合であっても、そのように導入された請求項の要素を含む任意の特定の請求項が要素を１つだけ含む発明に限定されることを暗示するものと理解されるべきではなく、同じことは、定冠詞の請求項における使用についても当てはまる。
【図面の簡単な説明】
【００６９】
【図１】２次プロセッサのローカル・メモリにアクセスするメイン・プロセッサを示す図である。
【図２】メイン・プロセッサのローカル・メモリにアクセスする２次プロセッサ上に含まれるスレッドを示す図である。
【図３】ソフト・コピー領域に位置するプロセッサのローカル・メモリのソフト・コピーにアクセスするスレッドの図である。
【図４】１つ以上のスレッドに基づいて、オペレーティング・システムがプロセッサ・メモリを管理する際に行われるステップを示す高レベルのフローチャートである。
【図５】ソフト・コピー領域に対して２次プロセッサのローカル・メモリに含まれるデータをコピーする際に行われるステップを示すフローチャートである。
【図６】プロセッサのローカル記憶装置に対してデータをリストアおよび保存する際に行われるステップを示すフローチャートである。
【図７】ページ・テーブル・エントリを使用してアドレスを変換し、変換されたアドレスに基づいてスレッドに対してデータを提供する際に行われるステップを示すフローチャートである。
【図８】アドレスが共通アドレス空間にマッピングされる複数のスレッドを実行する複数のプロセッサを示す図である。
【図９】異機種プロセッサ環境におけるプロセッサ・リソースを共有する２つのオペレーティング・システムを示す図である。
【図１０】複数の異機種プロセッサを含むプロセッサ・エレメント・アーキテクチャを示す図である。
【図１１】図１１Ａは、本明細書に記載のコンピューティング動作を行うことが可能なコンピュータ・システムの簡易例である情報処理システムを示し、図１１Ｂは、プライベート・メモリと、非プライベート・メモリとに分割されたローカル記憶領域を示す図である。
【図１】
2008515069.tif 000003
【図２】
2008515069.tif 000004
【図３】
2008515069.tif 000005
【図４】
2008515069.tif 000006
【図５】
2008515069.tif 000007
【図６】
2008515069.tif 000008
【図７】
2008515069.tif 000009
【図８】
2008515069.tif 000010
【図９】
2008515069.tif 000011
【図１０】
2008515069.tif 000012
【図１１】
2008515069.tif 000013
【国際調査報告】
2008515069.tif 000014
2008515069.tif 000015
2008515069.tif 000016