JP4639233B2 - プロセッサ・リソースの仮想化のためのシステムおよび方法 - Google Patents

プロセッサ・リソースの仮想化のためのシステムおよび方法 Download PDF

Info

Publication number
JP4639233B2
JP4639233B2 JP2007533988A JP2007533988A JP4639233B2 JP 4639233 B2 JP4639233 B2 JP 4639233B2 JP 2007533988 A JP2007533988 A JP 2007533988A JP 2007533988 A JP2007533988 A JP 2007533988A JP 4639233 B2 JP4639233 B2 JP 4639233B2
Authority
JP
Japan
Prior art keywords
data
thread
processor
soft copy
local storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007533988A
Other languages
English (en)
Other versions
JP2008515069A (ja
JP2008515069A5 (ja
Inventor
アギュラー、マキシミノ、ジュニア
デイ、マイケル、ノーマン
ナッター、マーク、リチャード
ヘニディス、ジェームズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2008515069A publication Critical patent/JP2008515069A/ja
Publication of JP2008515069A5 publication Critical patent/JP2008515069A5/ja
Application granted granted Critical
Publication of JP4639233B2 publication Critical patent/JP4639233B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache

Description

本発明は、一般的には、プロセッサ・リソースの仮想化のためのシステムおよび方法に関する。より特定的には、本発明は、プロセッサの状態に関わらず、1つ以上のスレッドがプロセッサ・メモリにアクセスしてもよいようにプロセッサ・メモリを仮想化するためのシステムおよび方法に関する。
コンピュータ・システムは、ますます複雑化してきている。コンピュータ業界は、典型的には、18ヶ月毎にコンピュータ・システムの性能を倍増している(例えば、パーソナル・コンピュータ、PDA、ゲーム・コンソール)。コンピュータ業界がこの作業を達成するために、半導体業界は、18ヶ月毎に性能が倍増した集積回路を生産している。コンピュータ・システムは、集積回路のアーキテクチャに基づいて、特定の機能のための集積回路を使用している。2つの基本的なアーキテクチャは、1)マイクロプロセッサに基づくものと、2)デジタル信号プロセッサに基づくものとがある。
制御動作を取り扱うには、マイクロプロセッサに基づくアーキテクチャを有する集積回路が典型的には使用されるのに対し、信号処理操作(すなわち、数学的な演算)を取り扱うには、デジタル信号プロセッサに基づくアーキテクチャを有する集積回路が典型的には使用される。技術が進化するに連れて、コンピュータ業界および半導体業界は、コンピュータ・システムの設計において、両方のアーキテクチャ、言い換えればプロセッサの種類の重要性を認識している。
広範囲のソフトウェア・アプリケーションに対するサポートを行おうとしつつ、かなりの量の処理能力を提供するために、数多くのコンピュータ・システムは、マルチプロセッサのアーキテクチャを使用している。しかしながら、これらの各プロセッサは、他のプロセッサによってアクセスできない、ローカル記憶領域およびレジスタ・ファイルなどの専用内部メモリを含んでいるという問題があることがわかった。また、もし特定のプロセッサが利用可能でない場合には、他のプロセッサは利用可能でないプロセッサからデータをアクセスできないという問題もあることがわかった。
さらに、プロセッサは、同一のメモリ空間にアクセスする複数のスレッドを実行する場合がある。特定のスレッドが特定のメモリ空間をアクセスしている場合に、他のスレッドは、当該特定のスレッドが完了するまで待機しなければならず、それで初めて他のスレッドは当該メモリ空間にアクセスできるようになるという問題があることがわかった。
以上の問題は、本発明の実施形態において、プロセッサのローカル・メモリをアプリケーションが作成するスレッド毎に有効アドレス空間にマッピングして、処理対象のスレッドについて「ソフト」データ・コピーを取り出すかどうかを判定するために、アドレス変換器がアクセスするスレッド毎のページ・テーブル・エントリを使用することによって、対処されるということがわかった。アプリケーションが作成するスレッド毎に、オペレーティング・システムは、有効アドレスと実アドレスとを含むページ・テーブル・エントリをページ・テーブル内に記憶する。実アドレスは、ローカル記憶位置またはソフト・コピー領域の何れかに対応する。データを取り出す要求をスレッドからアドレス変換器が受信すると、アドレス変換器は、ページ・テーブル・エントリを探索して、実アドレス位置から当該データを取り出す。
本発明の実施形態において、第1のプロセッサは、オペレーティング・システムを含み、当該オペレーティング・システムは、リアル・タイムのオペレーティング・システム(例えば、ゲーム・オペレーティング・システム)であっても、または仮想オペレーティング・システム(例えば、ウェブ・ブラウジング・オペレーティング・システム)であってもよい。オペレーティング・システムは、特定のアプリケーションについてのスレッドを呼び出す。スレッドは、ゲーム・アプリケーションのための地形レンダリングなどの特定のタスクを行う役割を果たす。オペレーティング・システムがスレッドを呼び出すと、オペレーティング・システムは、ページ・テーブル・エントリをページ・テーブルへ送出する。ページ・テーブル・エントリは、有効アドレスと、スレッドが使用するデータの位置に対応する実アドレスとを含む。実アドレスは、物理的なローカル記憶位置(例えば、ローカル記憶装置)に対応していてもよく、または、実アドレスは、ソフト・コピー領域に対応していてもよい。例えば、ソフト・コピー領域は、キャッシュ、ピン・システム・メモリ、またはディスク内にあってもよい。
スレッドは、有効アドレスを含む要求をアドレス変換器へ送出する。有効アドレスは、スレッドがアクセスしたいデータの有効メモリ位置を示す。アドレス変換器は要求を受信して、ページ・テーブル内のページ・テーブル・エントリを探索し、それによって、アドレス変換器は、有効アドレスに対応する実アドレスを識別する。実アドレスがプロセッサのローカル記憶領域に対応している場合には、アドレス変換器は、データをプロセッサのローカル記憶領域から取り出して、当該データをスレッドへ渡す。実アドレスがソフト・コピー領域に対応している場合には、アドレス変換器は、データのコピーをソフト・コピー領域から取り出して、当該データ・コピーをスレッドへ渡す。
オペレーティング・システムは、特定のポリシーおよび対応プロセッサの状態に基づいてデータをソフト・コピー領域に対して保存およびリストアすることによって、スレッドのデータを管理する。プロセッサのメモリが複数のスレッドによって使用されているような特定の場合、オペレーティング・システムは、スレッド毎にローカル記憶装置のソフト・コピーを作成してもよく、それによって、スレッドは、互いに異なるソフト・コピーを使用する。オペレーティング・システムは、オペレーティング・システムが保存またはリストア動作を行う度に、新たなページ・テーブル・エントリをページ・テーブル内に作成する。
添付の図面を参照して、一例として、本発明の実施形態を説明する。
以下は、本発明の一例の詳細な説明を提供すること意図するものであるが、本発明自体を限定するものと受け取られるべきではない。むしろ、任意の数の変形が、説明に続く請求項において規定される本発明の範囲に入るだろう。
図1は、2次プロセッサのローカル・メモリにアクセスするメイン・プロセッサを示す図である。プロセッサA100は、オペレーティング・システム115を含むメイン・プロセッサである。オペレーティング・システム115は、ゲーム・オペレーティング・システムなどのリアル・タイムのオペレーティング・システムであってもよく、または、オペレーティング・システム115は、ウェブ・ブラウジング・オペレーティング・システムなどの仮想オペレーティング・システムであってもよい。
オペレーティング・システム115は、アプリケーション105からスレッド要求を受信し、それによって、オペレーティング・システム115は、スレッド1の110を呼び出す。スレッド1の110は、ゲーム・アプリケーションにおける地形レンダリングなどの特定のタスクを行う役割を果たす。オペレーティング・システム115がスレッド1の110を呼び出すと、オペレーティング・システム115は、ページ・テーブル・エントリ150をページ・テーブル140へ送出する。ページ・テーブル・エントリ150は、有効アドレスと、スレッド1の110が使用するデータの位置に対応する実アドレスとを含む。実アドレスは、物理的なローカル記憶位置(例えば、ローカル記憶装置)に対応していてもよく、または、実アドレスは、ソフト・コピー領域に対応していてもよい。例えば、データのソフト・コピーは、キャッシュ、ピン・システム・メモリ、またはディスク内に記憶されてもよい(物理的なローカル・メモリおよびソフト・コピー領域に関するさらなる詳細については、図4および対応説明を参照)。
スレッド1の110は、アドレス変換器130に対して要求120を送出して、メモリの特定の部分に対するアクセスを要求する。要求120には、スレッド1の110がアクセスしたいデータの有効メモリ位置を示す有効アドレスが含まれる。アドレス変換器130は、要求120を受信し、ページ・テーブル140内のページ・テーブル・エントリ150を探索する。アドレス変換器130は、実アドレス位置がプロセッサB160のローカル記憶装置B170上に位置していることを識別する。アドレス変換器130は、データ180をローカル記憶装置B170から取り出して、データ180をスレッド1の110へ送出する。一実施形態において、アドレス変換器130は、データ180をページ毎というように徐々にスレッド1の110へ送出する。一実施形態において、スレッドは、プロセッサB160上にあってもよく、それによって、スレッドは、プロセッサA100のローカル記憶装置からデータを取り出す(プロセッサB160上にあるスレッドに関するさらなる詳細については、図2および対応説明を参照)。
図2は、メイン・プロセッサのローカル・メモリ(例えば、ローカル記憶装置)にアクセスする2次プロセッサ上に含まれるスレッドを示す図である。図2は、プロセッサB160がローカル記憶装置A260などのプロセッサA100のローカル・メモリからデータを要求するスレッドを含む以外は、図1と同様である。
プロセッサA100は、オペレーティング・システム115を含み、それによって、オペレーティング・システム115がスレッド2の200を呼び出す場合に、オペレーティング・システム115は、ページ・テーブル・エントリ240をページ・テーブル140へ送出する。ページ・テーブル・エントリ240は、有効アドレスと、スレッド2の200が使用するデータの位置に対応する実アドレスとを含む。
スレッド2の200は、要求220をアドレス変換器130へ送出する。アドレス変換器130は、ページ・テーブル・エントリ240を探索して、データがローカル記憶装置A260内に位置していることを判定する。アドレス変換器130は、データ280をローカル記憶装置A260から取り出して、データ280をスレッド2の200へ提供する。アドレス変換器130、ページ・テーブル140、プロセッサB160、プロセッサA100、およびオペレーティング・システム115は、図1に示すものと同一である。
図3は、ソフト・コピー領域に位置するプロセッサのローカル・メモリのソフト・コピーにアクセスするスレッドの図である。動作中に、オペレーティング・システムは、ポリシー情報に基づいて、物理メモリをソフト・コピー領域へ保存およびリストアする。例えば、オペレーティング・システムは、データを特定の時間間隔で保存およびリストアしてもよい(さらなる詳細については、図6および対応説明を参照)。データがローカル記憶装置からソフト・コピー領域へ入れ替わる場合には、オペレーティング・システムは、アドレス変換器130が正しいソフト・コピー領域から当該データを取り出すように、ページ・テーブル140内のページ・テーブル・エントリを変更する。
プロセッサA100は、スレッド3の300を含み、当該スレッドは、アドレス変換器130へ要求310を送出する。そして次に、アドレス変換器130は、ページ・テーブル140内のページ・テーブル・エントリを識別して、当該データがソフト・コピー領域320などのソフト・コピー領域にあることを判定する。ソフト・コピー領域320には、キャッシュ330、カーネル340、およびディスク記憶装置350が含まれる。キャッシュ330は、L1またはL2キャッシュであってもよく、カーネル340は、ピン・システム・メモリであってもよく、ディスク記憶装置350は、外部ハード・ドライブであってもよい。
アドレス変換器130は、データ360をソフト・コピー領域320から取り出して、データ360をスレッド3の300へ提供してさらなる処理に供する。アドレス変換器130、ページ・テーブル140、およびプロセッサA100は、図1に示すものと同一である。
図4は、1つ以上のスレッドに基づいて、オペレーティング・システムがプロセッサ・メモリを管理する際に行われるステップを示す高レベルのフローチャートである。処理は400において開始して、オペレーティング・システムは、スレッド要求をアプリケーション105から受信する(ステップ410)。例えば、アプリケーション105は、地形レンダリングなどの複雑な計算を行うスレッドを呼び出したい場合がある。オペレーティング・システムは、ステップ420においてスレッドを初期化して、それによって、プロセッサB160などの、スレッドをサポートするリソースを識別する。アプリケーション105およびプロセッサB160は、図1の示すものと同一である。
ステップ430において、処理は、プロセッサB160のタスク状態を識別する。例えば、スレッドが特定のプロセッサのローカル・メモリからデータを要求する場合には、オペレーティング・システムは、当該プロセッサがスレッドをサポートするように割り当てられたプロセッサかどうかを識別する。
スレッドはプロセッサの物理的なローカル・メモリ(ローカル記憶装置)にアクセスしてデータを取り出すべきかどうか、またはスレッドはソフト・コピー領域内のデータのソフト・コピーにアクセスすべきかについての判定がなされる(判定440)。例えば、スレッドがデータを含むのと同じプロセッサ上で実行する場合には、スレッドは、プロセッサのローカル記憶装置にアクセスしてもよい。他の例において、スレッドは、データの位置とは異なるプロセッサ上で実行してもよく、この場合には、オペレーティング・システムは、対応プロセッサがイナクティブかどうかに関わらず、スレッドがソフト・コピーにアクセスするように、データをソフト・コピー領域にコピーする。
スレッドが物理的なローカル・メモリを使用すべき場合には、判定440は「物理」枝路442に分岐して、オペレーティング・システムは、データをプロセッサのローカル・メモリ、言い換えればローカル記憶装置からアクセスするアドレス変換器によって使用される実アドレスを含むページ・テーブル・エントリをページ・テーブル140内に作成する(ステップ450)。ページ・テーブル140は、図1に示すものと同一である。
一方、スレッドがローカル記憶装置のソフト・コピーを使用すべき場合には、判定440は「ソフト・コピー」枝路448に分岐して、オペレーティング・システムは、ローカル記憶装置内のデータをソフト・コピー領域にコピーする(予め規定された処理ブロック460、さらなる詳細については、図5および対応説明を参照)。オペレーティング・システムは、アドレス変換器がソフト・コピー領域内のデータのソフト・コピーをアクセスするために使用される実アドレスを含むページ・テーブル・エントリを、ページ・テーブル140内に作成する(ステップ470)。したがって、スレッドがデータを要求すると、アドレス変換器は、対応プロセッサの状態に関わらず、データをスレッドに提供するために、ソフト・コピー領域にアクセスする(ソフト・コピー領域に関するさらなる詳細については、図3および対応説明を参照)。
オペレーティング・システムは、特定のポリシー管理に基づいて、ローカル記憶装置に対してデータをリストアおよび保存することによってメモリ管理を行う。メモリ管理処理中に、オペレーティング・システムは、ソフト・コピー領域からプロセッサのローカル記憶装置へデータをリストアしてもよく、または、オペレーティング・システムは、ローカル記憶装置内のデータをソフト・コピー領域へ保存してもよい(予め規定された処理ブロック480、さらなる詳細については、図6および対応説明を参照)。
オペレーティング・システムがスレッド要求の処理とメモリの管理とを継続すべきかどうかについての判定がなされる(判定490)。オペレーティング・システムが継続すべき場合には、判定490は「はい」枝路492へ分岐して、さらにスレッド要求を処理するためにループ・バックする。このループは、オペレーティング・システムが停止すべきときまで継続し、その時点で、判定490は「いいえ」枝路498へ分岐して、オペレーティング・システムは499において終了する。
図5は、ソフト・コピー領域に対して2次プロセッサのローカル・メモリに含まれるデータをコピーする際に行われるステップを示すフローチャートである。処理は500で開始して、処理は、ステップ510においてローカル記憶装置B170からデータを取り出す。ローカル記憶装置B170は、図1に示すものと同一である。
ロックされたL1キャッシュまたはロックされたL2キャッシュのようなキャッシュ内にデータを保存するかどうかについての判定がなされる(判定520)。オペレーティング・システムがデータをキャッシュ内に保存すべき場合には、判定520は「はい」枝路522へ分岐して、処理は、ステップ530においてデータのコピーをキャッシュ330内に記憶して、540で戻る。キャッシュ330は、図3に示すものと同一である。一方、オペレーティング・システムがデータをキャッシュ内に保存すべきでない場合には、判定520は「いいえ」枝路528へ分岐して、キャッシュ内にデータを記憶するステップを行わない。
カーネル内に予約されたメモリのようなピン・システム・メモリ内にデータを保存するかどうかについての判定がなされる(判定550)。オペレーティング・システムがデータをピン・システム・メモリ内に保存すべき場合には、判定550は「はい」枝路552へ分岐して、処理は、ステップ560においてデータのコピーをカーネル340内に記憶して、570で戻る。カーネル340は、図3に示すものと同一である。一方、オペレーティング・システムがデータをカーネル内に保存すべきでない場合には、判定550は「いいえ」枝路558へ分岐して、ピン・システム・メモリ内にデータを記憶するステップを行わない。
外部ハード・ディスクなどのディスク上にデータを保存するかどうかについての判定がなされる(判定580)。オペレーティング・システムがデータをディスク上に保存すべき場合には、判定580は「はい」枝路582へ分岐して、処理は、ステップ590においてデータをディスク記憶装置350内に記憶して、595で戻る。ディスク記憶装置350は、図3に示すものと同一である。一方、オペレーティング・システムがデータをディスク上に保存すべきでない場合には、判定580は「いいえ」枝路588へ分岐して、ディスク上にデータを記憶するステップを行わず、595で戻る。
図6は、プロセッサのローカル記憶装置(すなわち、ローカル・メモリ)に対してデータをリストアおよび保存する際に行われるステップを示すフローチャートである。オペレーティング・システムは、特定のポリシーおよび対応プロセッサの状態に基づいてデータを保存およびリストアすることによって、スレッドの対応データを管理する。オペレーティング・システムは、ソフト・コピー領域内のデータのソフト・コピーにアクセスするのとは対照的に、物理的なローカル・メモリ内のデータにアクセスする機能をスレッドに対して提供することを試みる。プロセッサのメモリが複数のスレッドによって使用されているといった特定の場合において、オペレーティング・システムは、ローカル記憶装置のソフト・コピーを作成して、それによって、スレッドはソフト・コピーを使用する。
処理は600において開始して、処理は、ステップ605において、ポリシー記憶装置610からポリシーを取り出す。ポリシー記憶装置610としては、コンピュータのハード・ドライブなどの不揮発性記憶領域上に記憶されることでもよい。処理は、ステップ615において第1のタスクを選択する。一実施形態において、処理は、第1のタスクの代わりに第1のスレッドを選択してもよい。
データをソフト・コピー領域からローカル記憶装置へリストアするかどうかについての判定がなされる(判定620)。例えば、スレッドは、優先度が低く、とりあえずソフト・コピー領域内のデータのソフト・コピーを使用していたかもしれない場合である。この例を続けるには、オペレーティング・システムは、スレッドを高い優先度へ移動させてもよく、オペレーティング・システムは、ソフト・コピーでローカル記憶装置をリストアし、次いで、アドレス変換器に対して、ローカル記憶装置からデータを取り出してスレッドに提供するように指示する。
オペレーティング・システムがソフト・コピー領域からローカル記憶装置へデータをリストアしたい場合には、判定620は「はい」枝路622へ分岐して、処理は、ステップ625において、ソフト・コピー領域320からソフト・コピーを取り出して、当該ソフト・コピーをローカル記憶装置B170に記憶する(ステップ630)。ソフト・コピー領域320およびローカル記憶装置B170は、それぞれ、図3および図1に示すものと同一である。処理は、ステップ635においてページ・テーブル140内のページ・テーブル・エントリを変更して、アドレス変換器がデータを取り出してスレッドに提供するローカル記憶位置に対応する新たな実アドレスを含むようにする。ステップ625,630,および635の間、アドレス変換器は、リストア動作が完了するまでは他のスレッドがローカル・メモリB170にアクセスできないように「ロック」されている。一方、オペレーティング・システムがリストア動作を行うべきでない場合は、判定620は「いいえ」枝路628へ分岐して、データをリストアするステップを行わない。
ローカル記憶装置からソフト・コピー領域へデータを保存するかどうかについて判定がなされる(判定640)。例えば、スレッドは優先度が低い場合があるので、オペレーティング・システムは、アドレス変換器に対して、ページ・テーブル・エントリを通じて、データのソフト・コピーを使用するように支持する。
オペレーティング・システムがソフト・コピー領域にデータを保存したい場合には、判定は「はい」枝路642へ分岐して、処理は、ステップ645においてローカル記憶装置B170からデータを取り出して、当該データをソフト・コピー領域320へコピーする(ステップ650)。ソフト・コピー領域320には、キャッシュ、ピン・システム・メモリ、またはディスクが含まれてもよい(ソフト・コピー領域に関するさらなる詳細については、図3、図5、および対応説明を参照)。
処理は、ステップ655において、ページ・テーブル140内のページ・テーブル・エントリを変更して、アドレス変換器が対応スレッド用にデータを取り出すためのソフト・コピー領域に対応する新たな実アドレスを含むようにする。ステップ645,650,および655の間は、アドレス変換器は、保存動作が完了するまでは他のスレッドがローカル・メモリB170にアクセスできないように「ロック」されている。
処理すべきタスクがさらにあるかどうかについての判定がなされる(判定660)。処理すべきタスクがさらにある場合には、判定660は「はい」枝路662へ分岐して、選択にループ・バックして(ステップ670)、新たなタスクを処理する。このループは、処理すべきタスクがなくなるまで継続し、その時点で、判定660は「いいえ」枝路668へ分岐して、処理は680で戻る。
図7は、ページ・テーブル・エントリを使用してアドレスを変換し、変換されたアドレスに基づいてスレッドに対してデータを提供する際に行われるステップを示すフローチャートである。処理は700において開始して、アドレス変換器は、ステップ710においてスレッド720から要求を受信する。スレッド720は、図1、図2、および図3にそれぞれ示すスレッド1の110、スレッド2の200、またはスレッド3の300などの特定のスレッドであってもよい。スレッド720は、スレッド720がアクセスしたいデータの位置に対応する有効アドレスを含む。
ステップ730において、アドレス変換器は、ページ・テーブル140にアクセスして、ページ・テーブル・エントリのうちの1つを使用して、有効アドレスを実アドレスに変換する。オペレーティング・システムは、各ページ・エントリ・テーブルが物理的なローカル・メモリまたはソフト・コピー領域のいずれかに対応する実アドレスを含むように、ページ・テーブル・エントリを管理する(ページ・テーブル・エントリに関するさらなる詳細については、図6および対応説明を参照)。ページ・テーブル140は、図1に示すものと同一である。
アドレス変換器は、変換された実アドレスに基づいて、ソフト・コピー領域320またはローカル・メモリB170のいずれかからデータを取り出す(ステップ740)。ソフト・コピー領域320およびローカル・メモリB170は、それぞれ、図3および図1に示すものと同一である。ステップ750において、処理は、取り出されたデータをスレッド720へ渡す。一実施形態において、アドレス変換器は、一度にデータの1ページというように、徐々にデータをスレッド720へ渡す。
アドレス変換器がスレッド要求の処理を継続すべきかどうかについての判定がなされる(判定760)。アドレス変換器がスレッド要求の処理を継続すべきである場合には、判定760は「はい」枝路762へ分岐して、さらなるスレッド要求を処理するようにループ・バックする。このループは、処理すべきスレッド要求がなくなるまで継続し、その時点で、判定760は「いいえ」枝路768へ分岐して、アドレス変換は770において終了する。
図8は、アドレスが共通アドレス空間にマッピングされる複数のスレッドを実行する複数のプロセッサを示す図である。本発明は、複数のスレッドが複数のプロセッサにおいて動作することができ、各スレッドのそれぞれのメモリ・アクセスは、オペレーティング・システムによって管理され、その間、アドレス空間850などのアドレス空間にマッピングされる。
プロセッサB1の800は、スレッドE805およびスレッドF810を含む。スレッドE805およびスレッドF810の有効アドレス空間は、それぞれ、有効アドレス空間E855および有効アドレス空間F860であって、これらは共にアドレス空間850に含まれる。各スレッドは独立した動作を行い、加えて、第1のオペレーティング・システムによって制御されるスレッドもあれば、第2のオペレーティング・システムによって制御されるスレッドもある(複数オペレーティング・システムに関するさらなる詳細については、図9および対応説明を参照)。
プロセッサB2の815は、スレッドG820、スレッドH825、およびスレッドI830という3つのスレッドを含む。図8からわかるように、スレッドG820、スレッドH825およびスレッドI830の有効アドレスは、それぞれ、有効アドレスG865、有効アドレスH870および有効アドレスI875であって、アドレス空間850内に位置している。
最後に、プロセッサB3の835は、スレッドJ840およびスレッドK845という2つのスレッドを含む。スレッドJ840およびスレッドK845の有効アドレス空間は、それぞれ、有効アドレス空間J880および有効アドレス空間K885であって、アドレス空間850内に位置している。
図8に示すスレッドは、その対応プロセッサがオペレーティング・システムまたはアプリケーションにとって「仮想」であるように管理されてもよい。例えば、2つのオペレーティング・システムがあって、一方は3つのプロセッサを制御しているとみなし、他方は2つのプロセッサを制御しているとみなし、その間、コンピュータ・システム内には3つのプロセッサしかないというようであってもよい(2つのオペレーティング・システムの間でのリソース共有についてのさらなる詳細については、図9および対応説明を参照)。
図9は、異機種プロセッサ環境におけるプロセッサ・リソースを共有する2つのオペレーティング・システムを示す図である。図9は、別個のオペレーティング・システム間でリソースを共有するために、プロセッサのローカル・メモリを仮想化する使用法を示す。例えば、コンピュータ・システムは、2つのオペレーティング・システムを実行し、8つのプロセッサを含んでもよい。本例において、第1のオペレーティング・システムは、6つのプロセッサを必要とし、第2のオペレーティング・システムは、8つすべてのプロセッサを必要とする。本例において、両オペレーティング・システムの要件を満たすために、プロセッサ・リソースは仮想化されて、2つのオペレーティング・システム間で共有される。
プロセッサA100は、オペレーティング・システム1の900と、オペレーティング・システム2の950とを含む。各オペレーティング・システムは、特定の機能についての役割を果たす。例えば、オペレーティング・システム1の900は、ゲーム・アプリケーションのためのリアル・タイムのオペレーティング・システムであってもよく、オペレーティング・システム2の950は、ウェブ・ブラウジングを管理する仮想オペレーティング・システムであってもよい。
図9は、複数のスレッドを実行するプロセッサB1の800、プロセッサB2の815およびプロセッサB3の835とを示す。オペレーティング・システム1の900は、スレッドE805、H825、I830、J840およびK845を使用する。このように、オペレーティング・システム1の900は、3つのプロセッサ(B1の800、B2の815、およびB3の835)すべてを制御しているとみなしている。プロセッサB1の800、B2の815およびB3の835は、図8に示すものと同一である。
加えて、図9は、オペレーティング・システム2の950がスレッドF810およびG820を使用することを示す。このように、オペレーティング・システム950は、2つのプロセッサ(B1の800およびB2の815)を制御しているとみなしている。合わせると、オペレーティング・システムは、コンピュータ・システム内には5つのプロセッサがあるとみなしているが、実際には3つしかない。スレッドE805、F810、G820、H825、I830、J840およびK845は、図8に示すものと同一である。
各スレッドは、本明細書に説明する本発明を使用して、他のプロセッサのうちの1つに対応するローカル・メモリにアクセスしてもよい。例えば、スレッドE805は、アドレス変換器に対してプロセッサB3の835のローカル・メモリにアクセスするための要求を送出することによって、プロセッサB3の835のローカル・メモリにアクセスしてもよい。本例において、アドレス変換器は、ページ・テーブル内に位置するページ・テーブル・エントリを使用して、プロセッサB3の835のローカル・メモリに対応する実アドレスを識別する。実アドレスは、物理的なローカル・メモリに対応してもよく、または、実アドレスは、プロセッサB3の835のデータのソフト・コピーを含むソフト・コピー領域に対応してもよい(アドレス変換に関するさらなる詳細については、図1から図7および対応説明を参照)。
図10は、複数の異機種プロセッサを含むプロセッサ・エレメント・アーキテクチャを示す図である。異機種プロセッサは、共通メモリと共通バスとを共有している。プロセッサ・エレメント・アーキテクチャ(PEA)1000は、入出力1070を通じて外部装置に対して情報を送受信し、プロセッサ・エレメント・バス1060を使用して、制御プレーン1010およびデータ・プレーン1040に情報を分配する。制御プレーン1010は、PEA1000を管理して、作業をデータ・プレーン1040へ分配する。
制御プレーン1010は、オペレーティング・システム(OS)1025を実行する処理部1020を含む。例えば、処理部1020は、PEA1000に埋め込まれるPowerPC(IBM社の登録商標)コアであってもよく、OS1025は、Linux(Linus Torvalds氏の商標)オペレーティング・システムであってもよい。処理部1020は、PEA1000のための共通メモリ・マップ・テーブルを管理する。当該メモリ・マップ・テーブルは、L2メモリ1030およびデータ・プレーン1040に含まれる非プライベート・メモリなどといった、PEA1000に含まれるメモリ位置に対応している(メモリ・マッピングに関する更なる詳細については、図11A、図11B、および対応説明を参照)。
データ・プレーン1040は、相乗処理コンプレックス(Synergistic Processing Complex(SPC))1045、1050、および1055を含む。各SPCは、データ情報を処理するために使用され、各SPCは、互いに異なる命令セットを有してもよい。例えば、PEA1000は、無線通信システムにおいて使用されてもよく、各SPCは、変調、チップ・レート処理、符号化、およびネットワーク・インターフェーシングなどの別個の処理タスクを担ってもよい。他の例において、各SPCは、同一の命令セットを有してもよく、並行処理の恩恵に浴する動作を並行して行うために使用されてもよい。各SPCは、デジタル信号プロセッサ、マイクロコントローラ、マイクロプロセッサ、またはこれらのコアの組み合わせなどといった、処理コアである相乗処理部(SPU)を含む。
SPC1045、1050、1055は、プロセッサ・エレメント・バス1060に結合され、プロセッサ・エレメント・バス1060は、制御プレーン1010、データ・プレーン1040、および入出力1070間で情報を渡す。バス1060は、入出力1070、制御プレーン1010、およびデータ・プレーン1040間で情報を渡す、オンチップのコヒーレントなマルチプロセッサ・バスである。入出力1070は、PEA1000に接続された周辺装置に基づいてインターフェース・ピンを入出力コントローラに対して動的に割り当てる、柔軟性のある入出力論理を含む。例えば、PEA1000は、周辺装置Aおよび周辺装置Bという2つの周辺装置に接続されてもよく、それによって、各周辺装置は、PEA100上の特定の数の入出力ピンに接続する。本例において、柔軟性のある入出力論理は、周辺装置Aに接続されたPEA1000の外部入出力ピンを第1の入出力コントローラ(例えば、IOC A)に経路設定し、周辺装置Bに接続されたPEA1000の外部入出力ピンを第2の入出力コントローラ(例えば、IOC B)に経路設定するように構成される。
図11Aは、本明細書に記載のコンピューティング動作を行うことが可能なコンピュータ・システムの簡易例である情報処理システムを示す。図11Aの例は、異機種プロセッサ間でメモリを共有するために共通メモリ・マップを使用する複数の異機種プロセッサを示す。装置1100は、装置1100のためにオペレーティング・システムを実行する処理部1130を含む。処理部1130は、図10に示す処理部1020と同様である。処理部1130は、システム・メモリ・マップ1120を使用して、メモリ空間を装置1100全体に渡って割り当てる。例えば、処理部1130は、システム・メモリ・マップ1120を使用して、処理部1130がメモリ要求を受信する場合にメモリ領域を識別および割り当てる。処理部1130は、アプリケーションおよびデータ情報を取り出すために、L2メモリ1125にアクセスする。L2メモリ1125は、図10に示すL2メモリ1030と同様である。
システム・メモリ・マップ1120は、メモリ・マッピング領域を領域1135,1145,1150,1155,および1160に分離する。領域1135は、別個の入出力装置によって制御されうる外部システム・メモリ用のマッピング領域である。領域1145は、SPC1102などの1つ以上の相乗処理コンプレックスに対応するプライベート記憶位置用のマッピング領域である。SPC1102は、図10に示すSPCのAの1045などのSPCと同様である。SPC1102は、ローカル記憶装置1110などのローカル・メモリを含み、それによって、ローカル・メモリの部分が、アクセスする他のプロセッサのためにシステム・メモリ全体に渡って割り当てられてもよい。例えば、ローカル記憶装置1110の1MBが、非プライベート記憶装置に割り当てられてもよく、それによって、他の異機種プロセッサによってアクセスできるようになる。本例において、ローカル記憶エイリアス1145は、ローカル記憶装置1110内に位置する非プライベート記憶装置の1MBを管理する。
領域1150は、トランスレーション・ルックアサイド・バッファ(TLB)およびメモリ・フロー制御(MFC)レジスタ用のマッピング領域である。トランスレーション・ルックアサイド・バッファは、メモリの最近参照されたページの仮想アドレスと実アドレスとの間の相互参照を含む。メモリ・フロー制御は、DMA制御および同期などの、プロセッサとバスとの間のインターフェース機能を提供する。
領域1155は、オペレーティング・システム用のマッピング領域であって、帯域幅および待ち時間を保証するピン・システム・メモリである。領域1160は、装置1100の外部にある入出力装置用のマッピング領域であって、システムおよび入出力アーキテクチャによって規定される。
相乗処理コンプレックス(SPC)1102は、相乗処理部(SPU)1105と、ローカル記憶装置1110と、メモリ管理ユニット(MMU)1115とを含む。処理部1130は、SPU1105を管理して、処理部1130の指示に応答したデータを処理する。例えば、SPU1105は、デジタル信号処理コア、マイクロプロセッサ・コア、マイクロコントローラ・コア、またはこれらのコアの組み合わせであってもよい。ローカル記憶装置1110は、プライベート記憶領域と非プライベート記憶領域用にSPU1105が構築する記憶領域である。例えば、SPU1105がかなりの量のローカル・メモリを必要とする場合、SPU1105は、ローカル記憶装置1110の100%をプライベート・メモリに割り当ててもよい。他の例において、SPU1105が最小限の量のローカル・メモリを必要とする場合、SPU1105は、ローカル記憶装置1110の10%をプライベート・メモリに割り当て、ローカル記憶装置1110の残りの90%を非プライベート・メモリに割り当ててもよい(ローカル記憶装置の構成に関するさらなる詳細については、図11Bおよび対応説明を参照)。
非プライベート・メモリに割り当てられたローカル記憶装置1110の部分は、領域1145内のシステム・メモリ・マップ1120によって管理される。これらの非プライベート・メモリ領域は、他のSPUまたは処理部1130によってアクセスされてもよい。MMU1115は、直接メモリ・アクセス(DMA)機能を含み、ローカル記憶装置1110から装置1100内の他のメモリ位置へ情報を渡す。
図11Bは、プライベート・メモリと、非プライベート・メモリとに分割されたローカル記憶領域を示す図である。システム起動の間に、相乗処理部(SPU)1160は、ローカル記憶装置1170をプライベート記憶装置1175と非プライベート記憶装置1180とに区分けする。SPU1160は、図11AのSPU1105と同様であり、ローカル記憶装置1170は、図11Aのローカル記憶装置1110と同様である。プライベート記憶装置1175は、SPU1160および特定の装置内の他の処理部によってアクセス可能である。SPU1160は、データへの高速アクセス用にプライベート記憶装置1175を使用する。例えば、SPU1160は、SPU1160がメモリ内に記憶された大量のデータに迅速にアクセスすることが必要な複雑な計算を担ってもよい。本例において、SPU1160は、SPU1160がアクセスするのに十分なローカル・メモリを有することを確実にするために、ローカル記憶装置1170の100%をプライベート記憶装置1175に割り当ててもよい。他の例において、SPU1160は、大量のローカル・メモリを要しない場合があり、よって、ローカル記憶装置1170の10%をプライベート記憶装置1175に割り当てて、ローカル記憶装置1170の残りの90%を非プライベート記憶装置1180に割り当ててもよい。
ローカル記憶エイリアス1190などのシステム・メモリ・マッピング領域は、非プライベート記憶装置に割り当てられたローカル記憶装置1170の部分を管理する。ローカル記憶エイリアス1190は、図11Aに示すローカル記憶エイリアス1145と同様である。ローカル記憶エイリアス1190は、SPU毎に非プライベート記憶装置を管理し、他のSPUおよび装置の制御処理部が非プライベート記憶装置にアクセスできるようにする。
図10、図11A、および図11Bにおいて説明したコンピュータ・システムは、本明細書に記載された処理を実行可能であるが、本コンピュータ・システムは、コンピュータ・システムの一例に過ぎない。数多くのコンピュータシステム設計が本明細書に記載された処理を実行可能であることを、当業者は理解するだろう。
本発明の好ましい実施のひとつは、アプリケーション、すなわち、例えばコンピュータのランダム・アクセス・メモリ内に常駐するようなコード・モジュール内の命令(プログラム・コード)のセットである。コンピュータによって要求されるまでは、命令のセットは、例えばハード・ディスク・ドライブ上などの他のコンピュータ・メモリ内、または光ディスクなどの着脱可能な記憶装置内(最終的な使用として、CD‐ROM内)、またはフロッピー(登録商標)・ディスク(最終的な使用として、フロッピー(登録商標)・ディスク・ドライブ内)に記憶されるか、もしくはインターネットまたは他のコンピュータ・ネットワークを介してダウンロードされてもよい。よって、本発明は、コンピュータにおいて使用されるコンピュータ・プログラム製品として実施されてもよい。加えて、説明した様々な方法は、ソフトウェアによって選択的に起動されるかまたは再構築される汎用コンピュータ内で好都合に実施されるが、そのような方法は、ハードウェア、ファームウェア、または必要な方法ステップを行うように構築されたより特化された装置において実施されてもよいことを、当業者は理解するだろう。
本発明の特定の実施形態を示しかつ説明してきたが、本明細書の教示に基づいて、変更および修正が本発明およびそのより広範な局面から逸脱することなく行われてもよく、したがって、添付の請求項は、本発明の真の意図および範囲内にあるような変更および修正すべてをその範囲に含むものであることは当業者にとって明らかだろう。さらに、本発明は、添付の請求項によってのみ規定されるものであることを理解すべきである。導入された請求項の要素の特定の数が意図されている場合、その意図は請求項内に明示的に引用されるが、そのような引用がない場合には、そのような制限は存在しないことを、当業者は理解するだろう。非制限的な例として、理解の助けとして、添付の請求項には、請求項の要素を導入するために「少なくとも1つ」および「1つ以上」という導入句の使用が含まれている。しかしながら、そのような句の使用は、不定冠詞「a」または「an」による請求項の要素の導入によって、たとえ当該請求項が「1つ以上」または「少なくとも1つ」という導入句と不定冠詞「a」または「an」とを含む場合であっても、そのように導入された請求項の要素を含む任意の特定の請求項が要素を1つだけ含む発明に限定されることを暗示するものと理解されるべきではなく、同じことは、定冠詞の請求項における使用についても当てはまる。
2次プロセッサのローカル・メモリにアクセスするメイン・プロセッサを示す図である。 メイン・プロセッサのローカル・メモリにアクセスする2次プロセッサ上に含まれるスレッドを示す図である。 ソフト・コピー領域に位置するプロセッサのローカル・メモリのソフト・コピーにアクセスするスレッドの図である。 1つ以上のスレッドに基づいて、オペレーティング・システムがプロセッサ・メモリを管理する際に行われるステップを示す高レベルのフローチャートである。 ソフト・コピー領域に対して2次プロセッサのローカル・メモリに含まれるデータをコピーする際に行われるステップを示すフローチャートである。 プロセッサのローカル記憶装置に対してデータをリストアおよび保存する際に行われるステップを示すフローチャートである。 ページ・テーブル・エントリを使用してアドレスを変換し、変換されたアドレスに基づいてスレッドに対してデータを提供する際に行われるステップを示すフローチャートである。 アドレスが共通アドレス空間にマッピングされる複数のスレッドを実行する複数のプロセッサを示す図である。 異機種プロセッサ環境におけるプロセッサ・リソースを共有する2つのオペレーティング・システムを示す図である。 複数の異機種プロセッサを含むプロセッサ・エレメント・アーキテクチャを示す図である。 図11Aは、本明細書に記載のコンピューティング動作を行うことが可能なコンピュータ・システムの簡易例である情報処理システムを示し、図11Bは、プライベート・メモリと、非プライベート・メモリとに分割されたローカル記憶領域を示す図である。

Claims (7)

  1. 複数のプロセッサを含むコンピュータ・システムで実施される方法であって、
    第1のプロセッサで実行するオペレーティング・システムから、スレッドを呼び出すスレッド要求を受信するステップと、
    前記スレッド要求を受信することに応じて、前記スレッドが第2のプロセッサのローカル記憶装置にアクセスするか、又は前記スレッドがソフト・コピー領域にあるデータのソフト・コピーにアクセスするかを判定するステップであって、前記ローカル記憶装置にアクセスするという判定は、取り出されるデータを含むプロセッサ上で前記スレッドが実行される場合であり、前記ソフト・コピーにアクセスするという判定は、取り出されるデータの位置以外のプロセッサ上で前記スレッドが実行される場合であり、前記第2のプロセッサは前記スレッドによりアクセス可能なローカル記憶装置にデータを含む、前記判定するステップと、
    前記スレッドが前記データのソフト・コピーにアクセスすべきことを示すことに応じて、前記データを前記第2のプロセッサのローカル記憶装置からソフト・コピー領域へコピーするステップと、
    前記コピー後に、有効アドレスを含む前記スレッドからのデータ要求を受信するステップであって、前記有効アドレスは前記第2のプロセッサのローカル記憶装置内にある前記データに対応する、前記受信するステップと、
    ページ・テーブル・エントリを使用して、前記有効アドレスを前記ソフト・コピー領域に対応する実アドレスへ変換するステップと、
    前記変換された実アドレスを使用して、前記ソフト・コピー領域内にある前記データのソフト・コピーを前記第1のプロセッサに提供するステップと
    を含む、前記方法。
  2. 前記ソフト・コピー領域は、キャッシュ、カーネルおよびディスクからなる群から選ばれる、請求項1に記載の方法。
  3. 前記方法が、
    1つ以上のポリシーを取り出すステップと、
    1つ以上の前記ポリシーに基づいて、前記データをリストアするかどうかを判定するステップと、
    前記判定に応じて前記データをリストアするステップと
    をさらに含み、
    前記リストアすることが、
    前記データを前記ソフト・コピー領域から取り出すステップと、
    前記データを前記ローカル記憶装置に保存するステップと、
    前記リストアすることに対応する前記ページ・テーブル・エントリを変更するステップと
    をさらに含む、請求項1又は2に記載の方法。
  4. 前記ローカル記憶装置が、前記第2のプロセッサに位置するレジスタに対応する、請求項1〜3のいずれか1項に記載の方法。
  5. 前記第1および第2のプロセッサは異機種である、請求項1〜4のいずれか1項に記載の方法。
  6. 複数のプロセッサを含むコンピュータ・システムに、請求項1〜5のいずれか1項に記載の方法の各ステップを実行させるためのプログラム。
  7. コンピュータ・システムであって、
    複数のプロセッサと、
    ローカル記憶装置と、
    ソフト・コピー領域を割り当てられた記憶装置と
    を含み、請求項1〜5のいずれか1項に記載の方法の各ステップを実行させるためのプログラムを実行する前記コンピュータ・システム。
JP2007533988A 2004-09-30 2005-08-24 プロセッサ・リソースの仮想化のためのシステムおよび方法 Active JP4639233B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/955,093 US7290112B2 (en) 2004-09-30 2004-09-30 System and method for virtualization of processor resources
PCT/EP2005/054164 WO2006034931A1 (en) 2004-09-30 2005-08-24 System and method for virtualization of processor resources

Publications (3)

Publication Number Publication Date
JP2008515069A JP2008515069A (ja) 2008-05-08
JP2008515069A5 JP2008515069A5 (ja) 2009-08-06
JP4639233B2 true JP4639233B2 (ja) 2011-02-23

Family

ID=35385802

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007533988A Active JP4639233B2 (ja) 2004-09-30 2005-08-24 プロセッサ・リソースの仮想化のためのシステムおよび方法

Country Status (10)

Country Link
US (1) US7290112B2 (ja)
EP (1) EP1805629B1 (ja)
JP (1) JP4639233B2 (ja)
KR (1) KR100968188B1 (ja)
CN (1) CN100421089C (ja)
BR (1) BRPI0515920B1 (ja)
CA (1) CA2577865C (ja)
MX (1) MX2007003679A (ja)
TW (1) TWI340900B (ja)
WO (1) WO2006034931A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7716638B2 (en) * 2005-03-04 2010-05-11 Microsoft Corporation Methods for describing processor features
US7613905B2 (en) * 2006-04-06 2009-11-03 Texas Instruments Incorporated Partial register forwarding for CPUs with unequal delay functional units
US8255383B2 (en) * 2006-07-14 2012-08-28 Chacha Search, Inc Method and system for qualifying keywords in query strings
US8336046B2 (en) * 2006-12-29 2012-12-18 Intel Corporation Dynamic VM cloning on request from application based on mapping of virtual hardware configuration to the identified physical hardware resources
US7647483B2 (en) * 2007-02-20 2010-01-12 Sony Computer Entertainment Inc. Multi-threaded parallel processor methods and apparatus
US8200910B2 (en) * 2008-02-01 2012-06-12 International Business Machines Corporation Generating and issuing global shared memory operations via a send FIFO
US8239879B2 (en) * 2008-02-01 2012-08-07 International Business Machines Corporation Notification by task of completion of GSM operations at target node
US8275947B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Mechanism to prevent illegal access to task address space by unauthorized tasks
US7873879B2 (en) * 2008-02-01 2011-01-18 International Business Machines Corporation Mechanism to perform debugging of global shared memory (GSM) operations
US8146094B2 (en) * 2008-02-01 2012-03-27 International Business Machines Corporation Guaranteeing delivery of multi-packet GSM messages
US8255913B2 (en) * 2008-02-01 2012-08-28 International Business Machines Corporation Notification to task of completion of GSM operations by initiator node
US8484307B2 (en) * 2008-02-01 2013-07-09 International Business Machines Corporation Host fabric interface (HFI) to perform global shared memory (GSM) operations
US8214604B2 (en) * 2008-02-01 2012-07-03 International Business Machines Corporation Mechanisms to order global shared memory operations
US9454410B2 (en) 2008-03-04 2016-09-27 Microsoft Technology Licensing, Llc Transparent integration of application components
KR101398935B1 (ko) * 2008-04-29 2014-06-27 삼성전자주식회사 가상화를 이용한 시스템 복원 방법 및 장치
US9015446B2 (en) 2008-12-10 2015-04-21 Nvidia Corporation Chipset support for non-uniform memory access among heterogeneous processing units
US9032101B1 (en) 2008-12-10 2015-05-12 Nvidia Corporation Chipset support for binding and migrating hardware devices among heterogeneous processing units
US9009386B2 (en) 2010-12-13 2015-04-14 International Business Machines Corporation Systems and methods for managing read-only memory
KR20130084846A (ko) 2012-01-18 2013-07-26 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
US9116809B2 (en) 2012-03-29 2015-08-25 Ati Technologies Ulc Memory heaps in a memory model for a unified computing system
CN103377141B (zh) * 2012-04-12 2016-10-12 无锡江南计算技术研究所 高速存储区的访问方法以及访问装置
US9569279B2 (en) 2012-07-31 2017-02-14 Nvidia Corporation Heterogeneous multiprocessor design for power-efficient and area-efficient computing
WO2014046974A2 (en) 2012-09-20 2014-03-27 Case Paul Sr Case secure computer architecture
US10445249B2 (en) * 2017-11-09 2019-10-15 International Business Machines Corporation Facilitating access to memory locality domain information

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05257811A (ja) * 1992-01-16 1993-10-08 Toshiba Corp メモリ管理装置
JPH07105099A (ja) * 1993-10-05 1995-04-21 Nippon Telegr & Teleph Corp <Ntt> 分散メモリ保護管理装置
JPH07302227A (ja) * 1994-05-06 1995-11-14 Hitachi Ltd メモリ保護方法およびその装置
JPH0830568A (ja) * 1994-07-20 1996-02-02 Fujitsu Ltd 分散メモリ型並列計算機のキャッシュ制御方式
JP2003140965A (ja) * 2001-11-07 2003-05-16 Hitachi Ltd 分散共有メモリ型並列計算機および命令スケジューリング方法

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1228728B (it) * 1989-03-15 1991-07-03 Bull Hn Information Syst Sistema multiprocessore con replicazione di dati globali e due livelli di unita' di traduzione indirizzi.
JPH04246745A (ja) 1991-02-01 1992-09-02 Canon Inc 情報処理装置及びその方法
JP3926866B2 (ja) 1996-05-10 2007-06-06 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、情報処理方法、及び描画システム
US5860146A (en) 1996-06-25 1999-01-12 Sun Microsystems, Inc. Auxiliary translation lookaside buffer for assisting in accessing data in remote address spaces
US6122711A (en) * 1997-01-07 2000-09-19 Unisys Corporation Method of and apparatus for store-in second level cache flush
US6003065A (en) 1997-04-24 1999-12-14 Sun Microsystems, Inc. Method and system for distributed processing of applications on host and peripheral devices
US6075938A (en) 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6647508B2 (en) 1997-11-04 2003-11-11 Hewlett-Packard Development Company, L.P. Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation
US6128724A (en) 1997-12-11 2000-10-03 Leland Stanford Junior University Computation using codes for controlling configurable computational circuit
FI108478B (fi) 1998-01-21 2002-01-31 Nokia Corp Sulautettu jõrjestelmõ
US6381659B2 (en) 1999-01-19 2002-04-30 Maxtor Corporation Method and circuit for controlling a first-in-first-out (FIFO) buffer using a bank of FIFO address registers capturing and saving beginning and ending write-pointer addresses
JP3543942B2 (ja) 2000-03-02 2004-07-21 株式会社ソニー・コンピュータエンタテインメント 画像生成装置
JP2001319243A (ja) 2000-03-03 2001-11-16 Sony Computer Entertainment Inc 画像生成装置、画像生成装置におけるジオメトリ処理形態の切換方法、記録媒体、コンピュータプログラム、半導体デバイス
US6677951B2 (en) 2000-03-03 2004-01-13 Sony Computer Entertainment, Inc. Entertainment apparatus having compatibility and computer system
US20020016878A1 (en) * 2000-07-26 2002-02-07 Flores Jose L. Technique for guaranteeing the availability of per thread storage in a distributed computing environment
US6742103B2 (en) 2000-08-21 2004-05-25 Texas Instruments Incorporated Processing system with shared translation lookaside buffer
JP2002207685A (ja) 2000-10-12 2002-07-26 Sony Computer Entertainment Inc 仮想世界システム、サーバコンピュータおよび情報処理装置
US6606690B2 (en) * 2001-02-20 2003-08-12 Hewlett-Packard Development Company, L.P. System and method for accessing a storage area network as network attached storage
US7093104B2 (en) 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US6826662B2 (en) 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6809734B2 (en) 2001-03-22 2004-10-26 Sony Computer Entertainment Inc. Resource dedication system and method for a computer architecture for broadband networks
US6526491B2 (en) 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
JP2003033576A (ja) 2001-05-18 2003-02-04 Sony Computer Entertainment Inc エンタテインメントシステム、通信システム、通信プログラム、通信プログラムを格納したコンピュータ読み取り可能な記録媒体、及び通信方法
DE10128475A1 (de) * 2001-06-12 2003-01-02 Siemens Ag Mehrprozessorsystem mit geteiltem Arbeitsspeicher
US6947051B2 (en) * 2003-02-18 2005-09-20 Microsoft Corporation Video memory management
JP2005309793A (ja) * 2004-04-22 2005-11-04 Hitachi Ltd データ処理システム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05257811A (ja) * 1992-01-16 1993-10-08 Toshiba Corp メモリ管理装置
JPH07105099A (ja) * 1993-10-05 1995-04-21 Nippon Telegr & Teleph Corp <Ntt> 分散メモリ保護管理装置
JPH07302227A (ja) * 1994-05-06 1995-11-14 Hitachi Ltd メモリ保護方法およびその装置
JPH0830568A (ja) * 1994-07-20 1996-02-02 Fujitsu Ltd 分散メモリ型並列計算機のキャッシュ制御方式
JP2003140965A (ja) * 2001-11-07 2003-05-16 Hitachi Ltd 分散共有メモリ型並列計算機および命令スケジューリング方法

Also Published As

Publication number Publication date
WO2006034931A1 (en) 2006-04-06
KR20070052272A (ko) 2007-05-21
CN100421089C (zh) 2008-09-24
TW200630797A (en) 2006-09-01
BRPI0515920B1 (pt) 2018-03-20
BRPI0515920A2 (pt) 2009-08-04
EP1805629B1 (en) 2012-09-26
KR100968188B1 (ko) 2010-07-06
TWI340900B (en) 2011-04-21
US7290112B2 (en) 2007-10-30
MX2007003679A (es) 2007-04-19
CA2577865C (en) 2011-09-27
CN1989492A (zh) 2007-06-27
JP2008515069A (ja) 2008-05-08
CA2577865A1 (en) 2006-04-06
US20060069878A1 (en) 2006-03-30
EP1805629A1 (en) 2007-07-11

Similar Documents

Publication Publication Date Title
JP4639233B2 (ja) プロセッサ・リソースの仮想化のためのシステムおよび方法
US10423435B1 (en) Page swapping in virtual machine environment
JP5735070B2 (ja) パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
US7506325B2 (en) Partitioning processor resources based on memory usage
US20060070069A1 (en) System and method for sharing resources between real-time and virtualizing operating systems
US6728858B2 (en) Method and apparatus including heuristic for sharing TLB entries
US10133677B2 (en) Opportunistic migration of memory pages in a unified virtual memory system
US10409730B2 (en) Microcontroller for memory management unit
US8126957B2 (en) Managing position independent code using a software framework
WO2008095844A1 (en) Method and apparatus for enabling resource allocation identification at the instruction level in a processor system
US10073644B2 (en) Electronic apparatus including memory modules that can operate in either memory mode or storage mode
US7620951B2 (en) Hiding memory latency
US8006055B2 (en) Fine granularity hierarchiacal memory protection
US7240182B2 (en) System and method for providing a persistent function server
US20040073907A1 (en) Method and system of determining attributes of a functional unit in a multiple processor computer system
Groote et al. Computer Organization
KR20050039452A (ko) 임베디드 시스템의 메모리 구조

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080527

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080527

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090619

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090619

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20090702

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090929

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20091016

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091016

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20091016

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20091016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100114

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100301

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100301

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100507

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100712

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100712

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100914

TRDD Decision of grant or rejection written
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20101119

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20101119

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101119

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101129

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131203

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4639233

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150