JPH0887451A - アドレス変換を管理する方法およびアドレス変換マネージャ - Google Patents
アドレス変換を管理する方法およびアドレス変換マネージャInfo
- Publication number
- JPH0887451A JPH0887451A JP7215771A JP21577195A JPH0887451A JP H0887451 A JPH0887451 A JP H0887451A JP 7215771 A JP7215771 A JP 7215771A JP 21577195 A JP21577195 A JP 21577195A JP H0887451 A JPH0887451 A JP H0887451A
- Authority
- JP
- Japan
- Prior art keywords
- page
- page table
- address
- memory
- effective address
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
(57)【要約】
【目的】 PowerPCプロセッサ・ファミリ上のメ
モリ管理ユニットをプログラミングするための能力をマ
イクロカーネル・システムに提供する、ページ・テーブ
ル項目管理の方法および装置を提供する。 【構成】 PowerPCプロセッサは、仮想/物理マ
ッピングを管理するための限定された1組のページ・テ
ーブル項目(PTE: Page Table Entry)を定義する。
本発明のページ・テーブル項目管理の方法および装置
は、2つまたはそれ以上のユーザ・プロセスが1つのメ
モリ・セグメントを共用するときにセグメントの別名化
によって、PTEの数が限られているという問題を解決
する。すなわち、PTEを複写するのではなく、セグメ
ントが別名化される。これにより、PTEの数が大幅に
削減される。さらに、本方法は、システムが実際にPT
Eを使い果たすときに既存のPTEのキャッシュを行
う。最近破棄されたPTEのキャッシュにより、最近使
用したページにもう一度アクセスしたときに高速障害解
決が可能になる。
モリ管理ユニットをプログラミングするための能力をマ
イクロカーネル・システムに提供する、ページ・テーブ
ル項目管理の方法および装置を提供する。 【構成】 PowerPCプロセッサは、仮想/物理マ
ッピングを管理するための限定された1組のページ・テ
ーブル項目(PTE: Page Table Entry)を定義する。
本発明のページ・テーブル項目管理の方法および装置
は、2つまたはそれ以上のユーザ・プロセスが1つのメ
モリ・セグメントを共用するときにセグメントの別名化
によって、PTEの数が限られているという問題を解決
する。すなわち、PTEを複写するのではなく、セグメ
ントが別名化される。これにより、PTEの数が大幅に
削減される。さらに、本方法は、システムが実際にPT
Eを使い果たすときに既存のPTEのキャッシュを行
う。最近破棄されたPTEのキャッシュにより、最近使
用したページにもう一度アクセスしたときに高速障害解
決が可能になる。
Description
【0001】
【産業上の利用分野】本明細書に開示する本発明は、一
般にデータ処理システムに関し、より具体的にはデータ
処理システム用のオペレーティング・システムの改良に
関する。
般にデータ処理システムに関し、より具体的にはデータ
処理システム用のオペレーティング・システムの改良に
関する。
【0002】ここに開示する本発明は、1994年6月
22日に出願され、本出願人に譲渡され、参照により本
明細書の一部となる、ガイ・ジー・ソトマイヤー・ジュ
ニア(Guy G. Sotomayor, Jr.)、ジェームズ・エム・
マジー(James M. Magee)、およびフリーマン・エル・
ローソン・ザ=サード(Freeman L. Rawson, III)によ
る"METHOD AND APPARATUS FOR MANAGEMENT OF MAPPED A
ND UNMAPPED REGIONSOF MEMORY IN A MICROKERNEL DATA
PROCESSING SYSTEM"という名称の関連米国特許出願第
263710号(IBM整理番号BC9-94-053)に関連す
るものである。
22日に出願され、本出願人に譲渡され、参照により本
明細書の一部となる、ガイ・ジー・ソトマイヤー・ジュ
ニア(Guy G. Sotomayor, Jr.)、ジェームズ・エム・
マジー(James M. Magee)、およびフリーマン・エル・
ローソン・ザ=サード(Freeman L. Rawson, III)によ
る"METHOD AND APPARATUS FOR MANAGEMENT OF MAPPED A
ND UNMAPPED REGIONSOF MEMORY IN A MICROKERNEL DATA
PROCESSING SYSTEM"という名称の関連米国特許出願第
263710号(IBM整理番号BC9-94-053)に関連す
るものである。
【0003】ここに開示されている本発明は、1994
年9月28日に出願され、本出願人に譲渡され、参照に
より本明細書の一部となる、ジェームズ・エム・マジー
他による"CAPABILITY ENGINE METHOD AND APPARATUS FO
R A MICROKERNEL DATA PROCESSING SYSTEM"という名称
の関連米国特許出願第263313号(IBM整理番号
BC9-94-071)にも関連するものである。
年9月28日に出願され、本出願人に譲渡され、参照に
より本明細書の一部となる、ジェームズ・エム・マジー
他による"CAPABILITY ENGINE METHOD AND APPARATUS FO
R A MICROKERNEL DATA PROCESSING SYSTEM"という名称
の関連米国特許出願第263313号(IBM整理番号
BC9-94-071)にも関連するものである。
【0004】ここに開示されている本発明は、1994
年6月22日に出願され、本出願人に譲渡され、参照に
より本明細書の一部となる、ジェームズ・エム・マジー
他による"TEMPORARY DATA METHOD AND APPARATUS FOR A
MICROKERNEL DATA PROCESSING SYSTEM"という名称の関
連米国特許出願第263633号(IBM整理番号BC9-
94-076)にも関連するものである。
年6月22日に出願され、本出願人に譲渡され、参照に
より本明細書の一部となる、ジェームズ・エム・マジー
他による"TEMPORARY DATA METHOD AND APPARATUS FOR A
MICROKERNEL DATA PROCESSING SYSTEM"という名称の関
連米国特許出願第263633号(IBM整理番号BC9-
94-076)にも関連するものである。
【0005】ここに開示されている本発明は、1994
年6月22日に出願され、本出願人に譲渡され、参照に
より本明細書の一部となる、ジェームズ・エム・マジー
他による"MESSAGE CONTROL STRUCTURE REGISTRATION ME
THOD AND APPARATUS FOR A MICROKERNEL DATA PROCESSI
NG SYSTEM"という名称の関連米国特許出願第26370
3号(IBM整理番号BC9-94-077)にも関連するもので
ある。
年6月22日に出願され、本出願人に譲渡され、参照に
より本明細書の一部となる、ジェームズ・エム・マジー
他による"MESSAGE CONTROL STRUCTURE REGISTRATION ME
THOD AND APPARATUS FOR A MICROKERNEL DATA PROCESSI
NG SYSTEM"という名称の関連米国特許出願第26370
3号(IBM整理番号BC9-94-077)にも関連するもので
ある。
【0006】ここに開示されている本発明は、1994
年6月22日に出願され、本出願人に譲渡され、参照に
より本明細書の一部となる、ジェームズ・エム・マジー
他による"ANONYMOUS REPLY PORT METHOD AND APPARATUS
FOR A MICROKERNEL DATA PROCESSING SYSTEM"という名
称の関連米国特許出願第263709号(IBM整理番
号BC9-94-080)にも関連するものである。
年6月22日に出願され、本出願人に譲渡され、参照に
より本明細書の一部となる、ジェームズ・エム・マジー
他による"ANONYMOUS REPLY PORT METHOD AND APPARATUS
FOR A MICROKERNEL DATA PROCESSING SYSTEM"という名
称の関連米国特許出願第263709号(IBM整理番
号BC9-94-080)にも関連するものである。
【0007】ここに開示されている本発明は、1994
年7月27日に出願され、本出願人に譲渡され、参照に
より本明細書の一部となる、アズィーザ・ブシュラ・フ
ァルーキー(Aziza Bushra Faruqi)他による"SEPARATI
ON OF TRANSMISSION CONTROLMETHOD AND APPARATUS FOR
A MICROKERNEL DATA PROCESSING SYSTEM"という名称の
関連米国特許出願第281217号(IBM整理番号BC
9-94-081XX)にも関連するものである。
年7月27日に出願され、本出願人に譲渡され、参照に
より本明細書の一部となる、アズィーザ・ブシュラ・フ
ァルーキー(Aziza Bushra Faruqi)他による"SEPARATI
ON OF TRANSMISSION CONTROLMETHOD AND APPARATUS FOR
A MICROKERNEL DATA PROCESSING SYSTEM"という名称の
関連米国特許出願第281217号(IBM整理番号BC
9-94-081XX)にも関連するものである。
【0008】
【従来の技術】オペレーティング・システムは、コンピ
ュータ上で実行される最も重要なソフトウェアである。
すべての汎用コンピュータは、他のプログラムを実行す
るためのオペレーティング・システムを備えていなけれ
ばならない。通常、オペレーティング・システムは、キ
ーボードからの入力の認識、表示画面への出力の送出、
ディスク上のファイルおよびディレクトリの追跡、ディ
スク・ドライブおよびプリンタなどの周辺装置の制御の
ような基本的なタスクを実行する。より複雑なシステム
では、オペレーティング・システムの責任と能力がかな
り大きくなる。それにより、同時に動作する様々なプロ
グラムやユーザが互いに干渉しないことが重要になる。
また、一般にオペレーティング・システムは、セキュリ
ティも担当し、無許可ユーザがシステムにアクセスでき
ないようにする。
ュータ上で実行される最も重要なソフトウェアである。
すべての汎用コンピュータは、他のプログラムを実行す
るためのオペレーティング・システムを備えていなけれ
ばならない。通常、オペレーティング・システムは、キ
ーボードからの入力の認識、表示画面への出力の送出、
ディスク上のファイルおよびディレクトリの追跡、ディ
スク・ドライブおよびプリンタなどの周辺装置の制御の
ような基本的なタスクを実行する。より複雑なシステム
では、オペレーティング・システムの責任と能力がかな
り大きくなる。それにより、同時に動作する様々なプロ
グラムやユーザが互いに干渉しないことが重要になる。
また、一般にオペレーティング・システムは、セキュリ
ティも担当し、無許可ユーザがシステムにアクセスでき
ないようにする。
【0009】オペレーティング・システムは、マルチユ
ーザ・オペレーティング・システム、マルチプロセッサ
・オペレーティング・システム、マルチタスク・オペレ
ーティング・システム、およびリアルタイム・オペレー
ティング・システムに分類することができる。マルチユ
ーザ・オペレーティング・システムとは、2人またはそ
れ以上のユーザが同時にプログラムを実行できるように
するものである。オペレーティング・システムによって
は、数百人または数千人のユーザによる同時実行が可能
なものもある。マルチプロセッシング・プログラムと
は、単一ユーザが2つまたはそれ以上のプログラムを同
時に実行できるようにするものである。この場合、実行
される各プログラムはプロセスと呼ばれる。ほとんどの
マルチプロセッシング・システムは複数のユーザをサポ
ートしている。マルチタスク・システムとは、単一プロ
セスが複数のタスクを実行できるようにするものであ
る。マルチタスクとマルチプロセッシングという用語は
意味がいくらか異なるが、一般的な用法では交換可能な
ものとして使用される場合が多い。マルチタスクとは、
複数のタスクを同時に実行できる能力であり、タスクと
はプログラムである。マルチタスクでは、1つの中央演
算処理装置(CPU)だけが関与するが、プログラム間
の切替えを非常に迅速に行うため、すべてのプログラム
を同時に実行しているように見えるのである。マルチタ
スクには、プリエンプティブと協調方式の2通りの基本
タイプがある。プリエンプティブ・マルチタスクでは、
オペレーティング・システムが各プログラムにCPUの
タイム・スライスを分配する。協調マルチタスクでは、
各プログラムは、CPUを必要とする間、CPUを制御
することができる。ただし、プログラムがCPUを使用
していない場合、別のプログラムが一時的にCPUを使
用できるようにすることも可能である。たとえば、OS
/2(登録商標)およびUNIX(登録商標)はプリエ
ンプティブ・マルチタスク・オペレーティング・システ
ムであるが、マッキントッシュ(登録商標)のコンピュ
ータ用のMulti-Finder(登録商標)は協調マルチタスク
・オペレーティング・システムである。マルチプロセッ
シングとは、コンピュータ・システムが複数のプロセス
またはプログラムを同時にサポートできる能力を指す。
したがって、マルチプロセッシング・オペレーティング
・システムを使用すると、同時に複数のプログラムを実
行することができる。マルチプロセッシング・システム
では、オペレーティング・システムが競合プロセスに資
源を合理的に割り振らなければならないので、単一プロ
セス・システムよりかなり複雑になる。リアルタイム・
オペレーティング・システムは、入力に対して瞬時に応
答する。DOSおよびUNIX(登録商標)などの汎用
オペレーティング・システムはリアルタイムではない。
ーザ・オペレーティング・システム、マルチプロセッサ
・オペレーティング・システム、マルチタスク・オペレ
ーティング・システム、およびリアルタイム・オペレー
ティング・システムに分類することができる。マルチユ
ーザ・オペレーティング・システムとは、2人またはそ
れ以上のユーザが同時にプログラムを実行できるように
するものである。オペレーティング・システムによって
は、数百人または数千人のユーザによる同時実行が可能
なものもある。マルチプロセッシング・プログラムと
は、単一ユーザが2つまたはそれ以上のプログラムを同
時に実行できるようにするものである。この場合、実行
される各プログラムはプロセスと呼ばれる。ほとんどの
マルチプロセッシング・システムは複数のユーザをサポ
ートしている。マルチタスク・システムとは、単一プロ
セスが複数のタスクを実行できるようにするものであ
る。マルチタスクとマルチプロセッシングという用語は
意味がいくらか異なるが、一般的な用法では交換可能な
ものとして使用される場合が多い。マルチタスクとは、
複数のタスクを同時に実行できる能力であり、タスクと
はプログラムである。マルチタスクでは、1つの中央演
算処理装置(CPU)だけが関与するが、プログラム間
の切替えを非常に迅速に行うため、すべてのプログラム
を同時に実行しているように見えるのである。マルチタ
スクには、プリエンプティブと協調方式の2通りの基本
タイプがある。プリエンプティブ・マルチタスクでは、
オペレーティング・システムが各プログラムにCPUの
タイム・スライスを分配する。協調マルチタスクでは、
各プログラムは、CPUを必要とする間、CPUを制御
することができる。ただし、プログラムがCPUを使用
していない場合、別のプログラムが一時的にCPUを使
用できるようにすることも可能である。たとえば、OS
/2(登録商標)およびUNIX(登録商標)はプリエ
ンプティブ・マルチタスク・オペレーティング・システ
ムであるが、マッキントッシュ(登録商標)のコンピュ
ータ用のMulti-Finder(登録商標)は協調マルチタスク
・オペレーティング・システムである。マルチプロセッ
シングとは、コンピュータ・システムが複数のプロセス
またはプログラムを同時にサポートできる能力を指す。
したがって、マルチプロセッシング・オペレーティング
・システムを使用すると、同時に複数のプログラムを実
行することができる。マルチプロセッシング・システム
では、オペレーティング・システムが競合プロセスに資
源を合理的に割り振らなければならないので、単一プロ
セス・システムよりかなり複雑になる。リアルタイム・
オペレーティング・システムは、入力に対して瞬時に応
答する。DOSおよびUNIX(登録商標)などの汎用
オペレーティング・システムはリアルタイムではない。
【0010】オペレーティング・システムは、その上で
アプリケーション・プログラムを実行することができる
ソフトウェア・プラットフォームを提供する。アプリケ
ーション・プログラムは、特定のオペレーティング・シ
ステム上で実行するように明確に作成しなければならな
い。したがって、オペレーティング・システムの選択に
よって、実行可能なアプリケーションがほとんど決まっ
てしまう。IBM互換のパーソナル・コンピュータ用の
オペレーティング・システムの例としては、DOS、O
S/2(登録商標)、AIX(登録商標)、XENIX
(登録商標)などがある。
アプリケーション・プログラムを実行することができる
ソフトウェア・プラットフォームを提供する。アプリケ
ーション・プログラムは、特定のオペレーティング・シ
ステム上で実行するように明確に作成しなければならな
い。したがって、オペレーティング・システムの選択に
よって、実行可能なアプリケーションがほとんど決まっ
てしまう。IBM互換のパーソナル・コンピュータ用の
オペレーティング・システムの例としては、DOS、O
S/2(登録商標)、AIX(登録商標)、XENIX
(登録商標)などがある。
【0011】通常、ユーザは、1組のコマンドによって
オペレーティング・システムと対話する。たとえば、D
OSオペレーティング・システムには、ファイルをコピ
ーするためのCOPYやファイル名を変更するためのR
ENAMEなどのコマンドが含まれている。これらのコ
マンドは、コマンド・プロセッサまたはコマンド・イン
タプリタと呼ばれるオペレーティング・システムの一部
によって受け入れられ、実行される。
オペレーティング・システムと対話する。たとえば、D
OSオペレーティング・システムには、ファイルをコピ
ーするためのCOPYやファイル名を変更するためのR
ENAMEなどのコマンドが含まれている。これらのコ
マンドは、コマンド・プロセッサまたはコマンド・イン
タプリタと呼ばれるオペレーティング・システムの一部
によって受け入れられ、実行される。
【0012】パーソナル・コンピュータ用としては、C
P/M(登録商標)、DOS、OS/2(登録商標)、
UNIX(登録商標)、XENIX(登録商標)、AI
X(登録商標)など、様々なオペレーティング・システ
ムが数多く存在する。CP/Mは小型コンピュータ用の
最初のオペレーティング・システムの1つである。当
初、CP/Mは広範囲のパーソナル・コンピュータ上で
使用されていたが、結局、DOSによって影が薄くなっ
てしまった。DOSは、すべてのIBM互換パーソナル
・コンピュータ上で実行され、単一ユーザ単一タスク・
オペレーティング・システムである。DOSの後継オペ
レーティング・システムであるOS/2は、Intel
80286以降のマイクロプロセッサを使用するIBM
互換パーソナル・コンピュータ上で実行される比較的強
力なオペレーティング・システムである。一般に、OS
/2は、DOSとの互換性があるが、多くの追加機能を
含んでおり、たとえば、マルチタスクであり、仮想メモ
リをサポートしている。UNIXおよびUNIX対応A
IXは、広範囲のパーソナル・コンピュータおよびワー
クステーション上で動作する。UNIXおよびAIX
は、すでにワークステーション用の標準オペレーティン
グ・システムになっており、強力なマルチユーザ・マル
チプロセッシング・オペレーティング・システムであ
る。
P/M(登録商標)、DOS、OS/2(登録商標)、
UNIX(登録商標)、XENIX(登録商標)、AI
X(登録商標)など、様々なオペレーティング・システ
ムが数多く存在する。CP/Mは小型コンピュータ用の
最初のオペレーティング・システムの1つである。当
初、CP/Mは広範囲のパーソナル・コンピュータ上で
使用されていたが、結局、DOSによって影が薄くなっ
てしまった。DOSは、すべてのIBM互換パーソナル
・コンピュータ上で実行され、単一ユーザ単一タスク・
オペレーティング・システムである。DOSの後継オペ
レーティング・システムであるOS/2は、Intel
80286以降のマイクロプロセッサを使用するIBM
互換パーソナル・コンピュータ上で実行される比較的強
力なオペレーティング・システムである。一般に、OS
/2は、DOSとの互換性があるが、多くの追加機能を
含んでおり、たとえば、マルチタスクであり、仮想メモ
リをサポートしている。UNIXおよびUNIX対応A
IXは、広範囲のパーソナル・コンピュータおよびワー
クステーション上で動作する。UNIXおよびAIX
は、すでにワークステーション用の標準オペレーティン
グ・システムになっており、強力なマルチユーザ・マル
チプロセッシング・オペレーティング・システムであ
る。
【0013】IBMのパーソナル・コンピュータが米国
で発売された1981年に、DOSは約10キロバイト
の記憶域を占有していた。その時以降、パーソナル・コ
ンピュータはますます複雑になり、大規模なオペレーテ
ィング・システムを必要とするようになった。現在で
は、たとえば、IBMのパーソナル・コンピュータ用の
OS/2は、22メガバイトもの記憶域を占有する場合
もある。時間の経過とともにパーソナル・コンピュータ
はさらに複雑かつ強力になっているが、システムに関連
する記憶装置に記憶容量の点で多大なペナルティを課さ
ずにオペレーティング・システムが引き続きサイズと複
雑さを拡大することができないことは明らかである。
で発売された1981年に、DOSは約10キロバイト
の記憶域を占有していた。その時以降、パーソナル・コ
ンピュータはますます複雑になり、大規模なオペレーテ
ィング・システムを必要とするようになった。現在で
は、たとえば、IBMのパーソナル・コンピュータ用の
OS/2は、22メガバイトもの記憶域を占有する場合
もある。時間の経過とともにパーソナル・コンピュータ
はさらに複雑かつ強力になっているが、システムに関連
する記憶装置に記憶容量の点で多大なペナルティを課さ
ずにオペレーティング・システムが引き続きサイズと複
雑さを拡大することができないことは明らかである。
【0014】1980年代にカーネギー・メロン大学で
MACHプロジェクトが行われたのは、オペレーティン
グ・システムのサイズの成長率がこのように維持できな
くなったためである。この研究の目標は、コンピュータ
・プログラマが最新のハードウェア・アーキテクチャの
出現を利用しながら、カーネル・オペレーティング・シ
ステムの諸機能のサイズと数を低減できるような、新し
いオペレーティング・システムを開発することであっ
た。カーネルとは、ハードウェア資源の割振りなどの基
本機能を実行するオペレーティング・システムの一部で
ある。MACHカーネルの場合、システム用の基本ビル
ディング・ブロックとして、5つのプログラミング・ア
ブストラクション(programming abstraction)が確立
された。これらは、その上で典型的な複合操作をカーネ
ル外部に構築することができる有用なシステムを作成す
るのに必要な最小限のものとして選択された。カーネギ
ー・メロンのMACHカーネルは、そのリリース3.0
でサイズが低減され、MACHマイクロカーネルという
完全機能オペレーティング・システムになっている。M
ACHマイクロカーネルは、タスク、スレッド、ポー
ト、メッセージ、およびメモリ・オブジェクト(memory
object)という基本要素を有する。
MACHプロジェクトが行われたのは、オペレーティン
グ・システムのサイズの成長率がこのように維持できな
くなったためである。この研究の目標は、コンピュータ
・プログラマが最新のハードウェア・アーキテクチャの
出現を利用しながら、カーネル・オペレーティング・シ
ステムの諸機能のサイズと数を低減できるような、新し
いオペレーティング・システムを開発することであっ
た。カーネルとは、ハードウェア資源の割振りなどの基
本機能を実行するオペレーティング・システムの一部で
ある。MACHカーネルの場合、システム用の基本ビル
ディング・ブロックとして、5つのプログラミング・ア
ブストラクション(programming abstraction)が確立
された。これらは、その上で典型的な複合操作をカーネ
ル外部に構築することができる有用なシステムを作成す
るのに必要な最小限のものとして選択された。カーネギ
ー・メロンのMACHカーネルは、そのリリース3.0
でサイズが低減され、MACHマイクロカーネルという
完全機能オペレーティング・システムになっている。M
ACHマイクロカーネルは、タスク、スレッド、ポー
ト、メッセージ、およびメモリ・オブジェクト(memory
object)という基本要素を有する。
【0015】タスクは、MACHマイクロカーネル内の
2つの個別構成要素に分割された従来のUNIXプロセ
スである。第1の構成要素はタスクであり、第1群の協
調エンティティ用のすべての資源を含んでいる。タスク
内の資源の例は、仮想メモリと通信ポートである。タス
クは、資源の受動的集合体なので、プロセッサ上では動
作しない。
2つの個別構成要素に分割された従来のUNIXプロセ
スである。第1の構成要素はタスクであり、第1群の協
調エンティティ用のすべての資源を含んでいる。タスク
内の資源の例は、仮想メモリと通信ポートである。タス
クは、資源の受動的集合体なので、プロセッサ上では動
作しない。
【0016】スレッドは、UNIXプロセスの第2の構
成要素であり、能動的実行環境である。各タスクは、ス
レッドと呼ばれる1つまたは複数の同時実行計算をサポ
ートすることができる。たとえば、マルチスレッド・プ
ログラムでは、1つのスレッドを使用して科学計算を実
行し、別のスレッドでユーザ・インタフェースを監視す
ることができる。1つのMACHタスクが、すべて同時
に実行される数多くの実行スレッドを有する場合もあ
る。MACHプログラミング・モデルの能力の多くは、
1つのタスク内のすべてのスレッドがそのタスクの資源
を共用するという事実に由来する。たとえば、すべての
スレッドは同一の仮想メモリ(VM)アドレス空間を有
する。しかし、タスク内の各スレッドはそれ専用の私用
実行状態を有する。この状態は、汎用レジスタなどの1
組のレジスタと、スタック・ポインタと、プログラム・
カウンタと、フレーム・ポインタとで構成される。
成要素であり、能動的実行環境である。各タスクは、ス
レッドと呼ばれる1つまたは複数の同時実行計算をサポ
ートすることができる。たとえば、マルチスレッド・プ
ログラムでは、1つのスレッドを使用して科学計算を実
行し、別のスレッドでユーザ・インタフェースを監視す
ることができる。1つのMACHタスクが、すべて同時
に実行される数多くの実行スレッドを有する場合もあ
る。MACHプログラミング・モデルの能力の多くは、
1つのタスク内のすべてのスレッドがそのタスクの資源
を共用するという事実に由来する。たとえば、すべての
スレッドは同一の仮想メモリ(VM)アドレス空間を有
する。しかし、タスク内の各スレッドはそれ専用の私用
実行状態を有する。この状態は、汎用レジスタなどの1
組のレジスタと、スタック・ポインタと、プログラム・
カウンタと、フレーム・ポインタとで構成される。
【0017】ポートは、スレッド同士が互いに通信する
際に使用する通信チャネルである。ポートは1つの資源
であり、タスクによって所有される。スレッドは、タス
クに属すことによってポートへのアクセスが可能にな
る。協調プログラムを使用すると、1つのタスクからの
スレッドが別のタスクのポートにアクセスできる場合も
ある。重要な特徴は、それらがロケーション透過性であ
る点である。この機能により、プログラムを修正せずに
ネットワークによるサービスの分散が容易になる。
際に使用する通信チャネルである。ポートは1つの資源
であり、タスクによって所有される。スレッドは、タス
クに属すことによってポートへのアクセスが可能にな
る。協調プログラムを使用すると、1つのタスクからの
スレッドが別のタスクのポートにアクセスできる場合も
ある。重要な特徴は、それらがロケーション透過性であ
る点である。この機能により、プログラムを修正せずに
ネットワークによるサービスの分散が容易になる。
【0018】メッセージは、各種のタスク内のスレッド
が互いに通信できるようにするためのものである。1つ
のメッセージには、クラスまたはタイプが与えられたデ
ータの集合体が含まれている。このデータは、数値また
はストリングなどのプログラム固有データから、あるタ
スクから別のタスクへのポートの転送能力などのMAC
H関連データにまで及ぶ可能性がある。
が互いに通信できるようにするためのものである。1つ
のメッセージには、クラスまたはタイプが与えられたデ
ータの集合体が含まれている。このデータは、数値また
はストリングなどのプログラム固有データから、あるタ
スクから別のタスクへのポートの転送能力などのMAC
H関連データにまで及ぶ可能性がある。
【0019】メモリ・オブジェクトは、ユーザ・レベル
のプログラムに含まれる従来のオペレーティング・シス
テム機能を実行する能力をサポートするためのアブスト
ラクションであり、MACHマイクロカーネルの重要な
特徴の1つである。たとえば、MACHマイクロカーネ
ルは、ユーザ・レベル・プログラム内の仮想メモリ・ペ
ージング方式をサポートしている。メモリ・オブジェク
トとは、この能力をサポートするためのアブストラクシ
ョンである。
のプログラムに含まれる従来のオペレーティング・シス
テム機能を実行する能力をサポートするためのアブスト
ラクションであり、MACHマイクロカーネルの重要な
特徴の1つである。たとえば、MACHマイクロカーネ
ルは、ユーザ・レベル・プログラム内の仮想メモリ・ペ
ージング方式をサポートしている。メモリ・オブジェク
トとは、この能力をサポートするためのアブストラクシ
ョンである。
【0020】上記の各種概念はいずれもMACHマイク
ロカーネルのプログラミング・モデルにとって基本的な
ものであり、カーネル自体で使用されるものである。カ
ーネギー・メロン大学のMACHマイクロカーネルの上
記の概念およびその他の特徴については、ジョーゼフ・
ボイキン(Joseph Boykin)他著"Programming UnderMAC
H"(Addison Wessely Publishing Company, Incorporat
ed, 1993)に記載されている。
ロカーネルのプログラミング・モデルにとって基本的な
ものであり、カーネル自体で使用されるものである。カ
ーネギー・メロン大学のMACHマイクロカーネルの上
記の概念およびその他の特徴については、ジョーゼフ・
ボイキン(Joseph Boykin)他著"Programming UnderMAC
H"(Addison Wessely Publishing Company, Incorporat
ed, 1993)に記載されている。
【0021】UNIXパーソナリティをサポートするた
めのマイクロカーネルの使用についての詳しい考察は、
マイク・アセッタ(Mike Accetta)他の論文"MACH: A N
ew Kernel Foundation for UNIX Development"(Procee
dings of the Summer 1986 USENIX Conference, Atlant
a, Georgia)に記載されている。また、この主題に関す
るもう1つの技術論文としては、デーヴィッド・ゴルブ
(David Golub)他の"UNIX as an Application Progra
m"(Proceedings of the Summer 1990 USENIX Conferen
ce, Anaheim, California)がある。
めのマイクロカーネルの使用についての詳しい考察は、
マイク・アセッタ(Mike Accetta)他の論文"MACH: A N
ew Kernel Foundation for UNIX Development"(Procee
dings of the Summer 1986 USENIX Conference, Atlant
a, Georgia)に記載されている。また、この主題に関す
るもう1つの技術論文としては、デーヴィッド・ゴルブ
(David Golub)他の"UNIX as an Application Progra
m"(Proceedings of the Summer 1990 USENIX Conferen
ce, Anaheim, California)がある。
【0022】ガイ・ジー・ソトマイヤー・ジュニア他に
よる前述の関連特許出願には、図1に示すマイクロカー
ネル・システム115が記載されているが、これはオペ
レーティング・システムの新しい基礎である。マイクロ
カーネル・システム115は、純粋カーネルとして実施
されたカーネル・サービスの簡略セットと、1組のユー
ザレベル・サーバとして実施されたオペレーティング・
システム・パーソナリティを構築するためのサービスの
拡張セットとを提供する。マイクロカーネル・システム
115は、様々な従来のオペレーティング・システム機
能を提供し、オペレーティング・システム・パーソナリ
ティとして明示された、多くのサーバ構成要素で構成さ
れている。マイクロカーネル・システム115では、タ
スク(クライアント)が通信チャネルを介して送られる
メッセージによって他のタスク(サーバ)の要求を行う
ことによりサービスにアクセスする、クライアント/サ
ーバ・システム構造を使用する。マイクロカーネル12
0が提供するそれ専用のサービスは非常に少ない(たと
えば、ファイル・サービスは一切提供しない)ので、マ
イクロカーネル120のタスクは、必要なサービスを提
供する他の多くのタスクと通信しなければならない。
よる前述の関連特許出願には、図1に示すマイクロカー
ネル・システム115が記載されているが、これはオペ
レーティング・システムの新しい基礎である。マイクロ
カーネル・システム115は、純粋カーネルとして実施
されたカーネル・サービスの簡略セットと、1組のユー
ザレベル・サーバとして実施されたオペレーティング・
システム・パーソナリティを構築するためのサービスの
拡張セットとを提供する。マイクロカーネル・システム
115は、様々な従来のオペレーティング・システム機
能を提供し、オペレーティング・システム・パーソナリ
ティとして明示された、多くのサーバ構成要素で構成さ
れている。マイクロカーネル・システム115では、タ
スク(クライアント)が通信チャネルを介して送られる
メッセージによって他のタスク(サーバ)の要求を行う
ことによりサービスにアクセスする、クライアント/サ
ーバ・システム構造を使用する。マイクロカーネル12
0が提供するそれ専用のサービスは非常に少ない(たと
えば、ファイル・サービスは一切提供しない)ので、マ
イクロカーネル120のタスクは、必要なサービスを提
供する他の多くのタスクと通信しなければならない。
【0023】マイクロカーネル・システム115では、
それぞれのタスクはそれ自体のために定義された専用の
仮想アドレス空間を持っている。タスクのスレッドがア
ドレス値を計算すると、その値はそのタスク用に明確に
定義された仮想アドレス空間内の仮想アドレスになる。
データを読み書きするために実物理メモリにアクセスす
るには、仮想アドレスを実物理アドレスに変換する必要
がある。
それぞれのタスクはそれ自体のために定義された専用の
仮想アドレス空間を持っている。タスクのスレッドがア
ドレス値を計算すると、その値はそのタスク用に明確に
定義された仮想アドレス空間内の仮想アドレスになる。
データを読み書きするために実物理メモリにアクセスす
るには、仮想アドレスを実物理アドレスに変換する必要
がある。
【0024】PMAPというマッピング・テーブルは、
この仮想アドレス値を、タスクが使用する1ページ分の
データが入っているメモリ内のキャッシュ・オブジェク
トの物理アドレスに変換するものである。各タスクごと
にPMAPテーブルが1つずつ関連付けられている(ま
たは、1つのタスクの複数コピーからなるグループが存
在する場合は、1つのPMAPテーブルがそのグループ
に関連付けられる)。各PMAPテーブルには、仮想ア
ドレスから、データが読み書きされる実物理メモリ内の
実物理アドレスへのアドレス変換が入っている。あるタ
スクのPMAPに仮想アドレスに対応する変換済みアド
レスが入っていない場合は、ページ不在が発生する。こ
のページ不在に応答して、メモリ・マネージャ・サーバ
が要求されたページのデータをディスク・ドライブなど
の支援記憶装置から実物理RAMメモリにスワップす
る。
この仮想アドレス値を、タスクが使用する1ページ分の
データが入っているメモリ内のキャッシュ・オブジェク
トの物理アドレスに変換するものである。各タスクごと
にPMAPテーブルが1つずつ関連付けられている(ま
たは、1つのタスクの複数コピーからなるグループが存
在する場合は、1つのPMAPテーブルがそのグループ
に関連付けられる)。各PMAPテーブルには、仮想ア
ドレスから、データが読み書きされる実物理メモリ内の
実物理アドレスへのアドレス変換が入っている。あるタ
スクのPMAPに仮想アドレスに対応する変換済みアド
レスが入っていない場合は、ページ不在が発生する。こ
のページ不在に応答して、メモリ・マネージャ・サーバ
が要求されたページのデータをディスク・ドライブなど
の支援記憶装置から実物理RAMメモリにスワップす
る。
【0025】ガイ・ジー・ソトマイヤー・ジュニア(Gu
y G. Sotomayor, Jr.)、ジェームズ・エム・マジー(J
ames M. Magee)、およびフリーマン・エル・ローソン
・ザ=サード(Freeman L. Rawson, III)による前述の
特許出願では、マイクロカーネル120は、テンプレー
ト領域を指し示すそのタスク用の第1のポインタを定義
するものとして説明されている。このテンプレート領域
内には、直接的または間接的にPMAPのマッピング・
テーブルを指し示す第2のポインタが存在する。PMA
Pは、第2のポインタの仮想アドレス値を、タスクが使
用する1ページ分のデータが入っているメモリ内のキャ
ッシュ・オブジェクトの物理アドレスに変換する。とき
には、タスクのデータ資源の変更が必要になることもあ
る。これは、テンプレート領域内の第2のポインタによ
って表される仮想アドレス値を変更することによって実
施される。変更された第2のポインタは、PMAP内の
別の変換値を指し示すことができ、その結果、必要に応
じて別のページまたはキャッシュ・オブジェクトがアド
レス指定される。しかし、タスク自体の内容の変更は一
切不要である。キャッシュ・オブジェクト内のデータの
ようなタスク資源は、テンプレート領域内の第2のポイ
ンタを介してタスクによってアドレス指定される。マイ
クロカーネル120が同一テンプレート領域からの複数
のタスクを定義している場合、テンプレート領域内の第
2のポインタを変更すると、そのテンプレート領域を指
し示す複数のタスクが使用できる資源をグローバルに変
更することになる。タスクによってアドレス指定される
データ・ページは、それぞれのタスクの内容を変更する
のではなく、テンプレート領域内の第2のポインタを1
回変更するだけで変更可能である。あるタスクに属す1
ページ分のデータの物理コピーがRAMからスワップさ
れると、そのページのデータ用のPMAP項目も除去さ
れる。その後、欠落ページのデータへのアクセスを試み
る際にこのタスクとそのスレッドがPMAP内の欠落項
目へのポインタを使用すると、ページ不在が発生する。
図1のマイクロカーネル120は、ページ不在を解決す
る際にデフォルト・ページャ144にメッセージを送信
する。次に、デフォルト・ページャ144は、カーネル
がハード・ディスクから必要とするページをRAMに読
み込む。ページ不在はユーザ・タスクのために解決され
るが、カーネルがメッセージの送信側になる。
y G. Sotomayor, Jr.)、ジェームズ・エム・マジー(J
ames M. Magee)、およびフリーマン・エル・ローソン
・ザ=サード(Freeman L. Rawson, III)による前述の
特許出願では、マイクロカーネル120は、テンプレー
ト領域を指し示すそのタスク用の第1のポインタを定義
するものとして説明されている。このテンプレート領域
内には、直接的または間接的にPMAPのマッピング・
テーブルを指し示す第2のポインタが存在する。PMA
Pは、第2のポインタの仮想アドレス値を、タスクが使
用する1ページ分のデータが入っているメモリ内のキャ
ッシュ・オブジェクトの物理アドレスに変換する。とき
には、タスクのデータ資源の変更が必要になることもあ
る。これは、テンプレート領域内の第2のポインタによ
って表される仮想アドレス値を変更することによって実
施される。変更された第2のポインタは、PMAP内の
別の変換値を指し示すことができ、その結果、必要に応
じて別のページまたはキャッシュ・オブジェクトがアド
レス指定される。しかし、タスク自体の内容の変更は一
切不要である。キャッシュ・オブジェクト内のデータの
ようなタスク資源は、テンプレート領域内の第2のポイ
ンタを介してタスクによってアドレス指定される。マイ
クロカーネル120が同一テンプレート領域からの複数
のタスクを定義している場合、テンプレート領域内の第
2のポインタを変更すると、そのテンプレート領域を指
し示す複数のタスクが使用できる資源をグローバルに変
更することになる。タスクによってアドレス指定される
データ・ページは、それぞれのタスクの内容を変更する
のではなく、テンプレート領域内の第2のポインタを1
回変更するだけで変更可能である。あるタスクに属す1
ページ分のデータの物理コピーがRAMからスワップさ
れると、そのページのデータ用のPMAP項目も除去さ
れる。その後、欠落ページのデータへのアクセスを試み
る際にこのタスクとそのスレッドがPMAP内の欠落項
目へのポインタを使用すると、ページ不在が発生する。
図1のマイクロカーネル120は、ページ不在を解決す
る際にデフォルト・ページャ144にメッセージを送信
する。次に、デフォルト・ページャ144は、カーネル
がハード・ディスクから必要とするページをRAMに読
み込む。ページ不在はユーザ・タスクのために解決され
るが、カーネルがメッセージの送信側になる。
【0026】マイクロカーネル・システム115は、そ
れが実行されるプロセッサ用のメモリ管理ユニット(M
MU)をプログラミングするためのサービスを必要とす
る。マイクロカーネル・システム115の機能を十分活
用することができる先進技術プロセッサの1つは、Po
werPC(商標)である。PowerPCは、IBM
社発行の書籍"The PowerPC Architecture"(Morgan-Kau
fmann著、サンフランシスコ、1994年)に記載され
ている拡張RISC(縮小命令セット・コンピュータ)
アーキテクチャである。PowerPCに関するもう1
つの解説は、カイト・ディーフェンドルフ(Keith Dief
endorff)、リヒ・エーラー(Rich Oehler)、およびロ
ン・ホーホシュプルング(Ron Hochsprung)による"Evo
lution of the PowerPC Architecture"(IEEE Micro、
1994年4月、pp. 34-49)という論文に記載されて
いる。PowerPCは、そのアーキテクチャを3つの
部分すなわち「ブック」に分割して設計されている。ブ
ック1は、ユーザ命令セット・アーキテクチャ、命令定
義、命令コード割当て、レジスタ定義など、時間が経過
しても変化しない機能に対処する。ブック2は、メモリ
・モデル、整合性、最小単位、別名化など、マルチプロ
セッシング環境でのプロセッサの操作にとって重要な機
能に対処する。ブック3は、動作環境アーキテクチャに
対処する。これらは、直接ユーザに見える機能ではない
が、むしろオペレーティング・システムの排他定義域で
ある。この部分のアーキテクチャには、仮想/物理アド
レス変換の定義と、例外処理の方法が存在する。ブック
3機能は監視プログラム特権であるので、完全に異なる
1組のブック3機能によりPowerPCプロセッサを
設計し、それでもなおユーザ・アプリケーションの互換
性を維持することは可能である。
れが実行されるプロセッサ用のメモリ管理ユニット(M
MU)をプログラミングするためのサービスを必要とす
る。マイクロカーネル・システム115の機能を十分活
用することができる先進技術プロセッサの1つは、Po
werPC(商標)である。PowerPCは、IBM
社発行の書籍"The PowerPC Architecture"(Morgan-Kau
fmann著、サンフランシスコ、1994年)に記載され
ている拡張RISC(縮小命令セット・コンピュータ)
アーキテクチャである。PowerPCに関するもう1
つの解説は、カイト・ディーフェンドルフ(Keith Dief
endorff)、リヒ・エーラー(Rich Oehler)、およびロ
ン・ホーホシュプルング(Ron Hochsprung)による"Evo
lution of the PowerPC Architecture"(IEEE Micro、
1994年4月、pp. 34-49)という論文に記載されて
いる。PowerPCは、そのアーキテクチャを3つの
部分すなわち「ブック」に分割して設計されている。ブ
ック1は、ユーザ命令セット・アーキテクチャ、命令定
義、命令コード割当て、レジスタ定義など、時間が経過
しても変化しない機能に対処する。ブック2は、メモリ
・モデル、整合性、最小単位、別名化など、マルチプロ
セッシング環境でのプロセッサの操作にとって重要な機
能に対処する。ブック3は、動作環境アーキテクチャに
対処する。これらは、直接ユーザに見える機能ではない
が、むしろオペレーティング・システムの排他定義域で
ある。この部分のアーキテクチャには、仮想/物理アド
レス変換の定義と、例外処理の方法が存在する。ブック
3機能は監視プログラム特権であるので、完全に異なる
1組のブック3機能によりPowerPCプロセッサを
設計し、それでもなおユーザ・アプリケーションの互換
性を維持することは可能である。
【0027】PowerPCは、その既存のブック3機
能の一部として、固有の3レベルの要求時ページング式
仮想メモリ動作環境を提供する。各プログラムは、それ
専用の個別の線形論理アドレス空間を有する。論理プロ
グラム・アドレスは、すべてのプロセスが共用する1つ
の非常に大きいセグメント化仮想アドレス空間にマッピ
ングされる。このアーキテクチャは、論理アドレスを物
理アドレスにマッピングするために16個のセグメント
・レジスタからなるセットを指定する。プロセッサは、
32ビットの有効アドレスを出力し、そのうちの高位4
ビットがセグメント・レジスタ番号を識別する。セグメ
ント化アドレス変換には2つのステップがある。第1の
ステップは、有効アドレスを仮想アドレスに変換するこ
とである。これには、有効アドレスのページ索引および
バイト・オフセットと、オペレーティング・システムに
よって割り当てられる24ビットの仮想セグメントID
(VSID:Virtual Segment ID)とを連結することが
含まれる。VSIDは、16個のセグメント・レジスタ
の1つにロードされ、大きい仮想アドレス空間へのオフ
セットとして機能する。この仮想メモリ構造により、非
常に大規模なプログラムをサポートするオブジェクトベ
ースのアドレス指定などの様々なオペレーティング・シ
ステム・アドレス指定が可能になる。第2のステップ
は、仮想アドレスを実アドレスに変換することである。
これには、反転したページ・テーブル構造により仮想ア
ドレスを最終的な物理メモリ・アドレスに変換すること
が含まれる。仮想アドレス空間内のページは、必要に応
じて物理アドレス空間に動的にマッピングされる。第2
のステップの一部として、ページ・テーブル項目が入っ
ているページ・テーブルにアクセスして、仮想ページ番
号と実ページ番号とのマッピングを獲得する。このペー
ジ・テーブルには、複数のページ・テーブル項目グルー
プ(PTEG:Page Table Entry Group)が記載されて
いる。1つのPTEGは、それぞれが8バイトの8個の
ページ・テーブル項目(PTE:Page TableEntry)を
含む。PTEGは、そのページ・テーブルを探索するた
めの入口点である。各ページ・テーブル項目(PTE)
は、1つの仮想ページ番号(VPN:Virtual Page Num
ber)を1つの実ページ番号(RPN:Real Page Numbe
r)にマッピングする。ページ・テーブル内の項目数
は、そのページ・テーブルでのヒット率に影響し、した
がってページ不在割込みの速度に影響するので、パフォ
ーマンスを直接左右するものである。テーブルが小さす
ぎる場合、実際に実ページが割り当てられている仮想ペ
ージのすべてがページ・テーブルによってマッピングで
きるわけではないということも起こり得る。Power
PCは、仮想アドレスを実物理アドレスにマッピングす
るために、限定された1組の活動ページ・テーブル項目
(PTE)を定義する。
能の一部として、固有の3レベルの要求時ページング式
仮想メモリ動作環境を提供する。各プログラムは、それ
専用の個別の線形論理アドレス空間を有する。論理プロ
グラム・アドレスは、すべてのプロセスが共用する1つ
の非常に大きいセグメント化仮想アドレス空間にマッピ
ングされる。このアーキテクチャは、論理アドレスを物
理アドレスにマッピングするために16個のセグメント
・レジスタからなるセットを指定する。プロセッサは、
32ビットの有効アドレスを出力し、そのうちの高位4
ビットがセグメント・レジスタ番号を識別する。セグメ
ント化アドレス変換には2つのステップがある。第1の
ステップは、有効アドレスを仮想アドレスに変換するこ
とである。これには、有効アドレスのページ索引および
バイト・オフセットと、オペレーティング・システムに
よって割り当てられる24ビットの仮想セグメントID
(VSID:Virtual Segment ID)とを連結することが
含まれる。VSIDは、16個のセグメント・レジスタ
の1つにロードされ、大きい仮想アドレス空間へのオフ
セットとして機能する。この仮想メモリ構造により、非
常に大規模なプログラムをサポートするオブジェクトベ
ースのアドレス指定などの様々なオペレーティング・シ
ステム・アドレス指定が可能になる。第2のステップ
は、仮想アドレスを実アドレスに変換することである。
これには、反転したページ・テーブル構造により仮想ア
ドレスを最終的な物理メモリ・アドレスに変換すること
が含まれる。仮想アドレス空間内のページは、必要に応
じて物理アドレス空間に動的にマッピングされる。第2
のステップの一部として、ページ・テーブル項目が入っ
ているページ・テーブルにアクセスして、仮想ページ番
号と実ページ番号とのマッピングを獲得する。このペー
ジ・テーブルには、複数のページ・テーブル項目グルー
プ(PTEG:Page Table Entry Group)が記載されて
いる。1つのPTEGは、それぞれが8バイトの8個の
ページ・テーブル項目(PTE:Page TableEntry)を
含む。PTEGは、そのページ・テーブルを探索するた
めの入口点である。各ページ・テーブル項目(PTE)
は、1つの仮想ページ番号(VPN:Virtual Page Num
ber)を1つの実ページ番号(RPN:Real Page Numbe
r)にマッピングする。ページ・テーブル内の項目数
は、そのページ・テーブルでのヒット率に影響し、した
がってページ不在割込みの速度に影響するので、パフォ
ーマンスを直接左右するものである。テーブルが小さす
ぎる場合、実際に実ページが割り当てられている仮想ペ
ージのすべてがページ・テーブルによってマッピングで
きるわけではないということも起こり得る。Power
PCは、仮想アドレスを実物理アドレスにマッピングす
るために、限定された1組の活動ページ・テーブル項目
(PTE)を定義する。
【0028】PowerPCにマイクロカーネル・シス
テム115を適合させる場合の問題は、マイクロカーネ
ル・システム115が動作しているときに、Power
PCのページ・テーブル内の限られた数のPTEがタス
クおよびスレッドの増殖によって急速に使い尽くされる
ことである。すべての活動PTEが使い尽くされると、
新しい読取りアクセスまたは書込みアクセスによってペ
ージ不在が発生することになる。物理ページが実際にR
AMに存在しても、ページ・テーブルからの正しいPT
Eが欠けていると、システムによってページ不在と推論
される。このため、PowerPCがページ・テーブル
から活動PTEの1つを取り戻し、新しいPTEをペー
ジ・テーブルに導入し、支援記憶装置にアクセスし、明
らかに欠落しているページのデータをRAMにスワップ
することが必要になる。これにより、マイクロカーネル
・システム115を実行しているときのPowerPC
の全体的な動作にパフォーマンス上の障害が課せられ
る。
テム115を適合させる場合の問題は、マイクロカーネ
ル・システム115が動作しているときに、Power
PCのページ・テーブル内の限られた数のPTEがタス
クおよびスレッドの増殖によって急速に使い尽くされる
ことである。すべての活動PTEが使い尽くされると、
新しい読取りアクセスまたは書込みアクセスによってペ
ージ不在が発生することになる。物理ページが実際にR
AMに存在しても、ページ・テーブルからの正しいPT
Eが欠けていると、システムによってページ不在と推論
される。このため、PowerPCがページ・テーブル
から活動PTEの1つを取り戻し、新しいPTEをペー
ジ・テーブルに導入し、支援記憶装置にアクセスし、明
らかに欠落しているページのデータをRAMにスワップ
することが必要になる。これにより、マイクロカーネル
・システム115を実行しているときのPowerPC
の全体的な動作にパフォーマンス上の障害が課せられ
る。
【0029】
【発明が解決しようとする課題】したがって、本発明の
一目的は、マイクロカーネル・オペレーティング・シス
テムを実行するデータ処理システムのメモリ管理を改良
することにある。
一目的は、マイクロカーネル・オペレーティング・シス
テムを実行するデータ処理システムのメモリ管理を改良
することにある。
【0030】本発明の他の目的は、データ処理システム
用のマイクロカーネル・アーキテクチャでのメモリ管理
を改良することにある。
用のマイクロカーネル・アーキテクチャでのメモリ管理
を改良することにある。
【0031】本発明の他の目的は、マイクロカーネル・
オペレーティング・システムを実行するPowerPC
プロセッサ用のメモリ管理を改良することにある。
オペレーティング・システムを実行するPowerPC
プロセッサ用のメモリ管理を改良することにある。
【0032】
【課題を解決するための手段】上記およびその他の目
的、特徴、利点は、ここに開示するページ・テーブル項
目管理の方法および装置によって達成される。
的、特徴、利点は、ここに開示するページ・テーブル項
目管理の方法および装置によって達成される。
【0033】マイクロカーネル・システムは、それが実
行されるプロセッサ用のメモリ管理ユニットをプログラ
ミングするための補足サービスが必要である。本発明の
ページ・テーブル項目管理の方法および装置は、マイク
ロカーネル・システムにメモリ管理ユニットをプログラ
ミングするのに必要なサービスを提供する。具体的に
は、本発明のページ・テーブル項目管理の方法および装
置は、PowerPCのプロセッサ・ファミリ上のメモ
リ管理ユニット(MMU:Memory Management Unit)を
プログラミングするための能力をマイクロカーネル・シ
ステムに提供する。PowerPCプロセッサは、仮想
/物理マッピングを管理するための限定された1組の活
動ページ・テーブル項目(PTE)を定義する。本発明
のページ・テーブル項目管理の方法および装置は、2つ
またはそれ以上のユーザ・プロセスが仮想メモリ・セグ
メントを共用するときにセグメントの別名化によって、
PTEの数が限られているという問題を解決する。すな
わち、PTEを複写するのではなく、セグメントが別名
化される。これにより、PTEの数が大幅に削減され
る。さらに、本発明は、システムが実際にPTEを使い
果たすときに既存のPTEのキャッシュを行う。最近破
棄されたPTEのキャッシュにより、最近使用したペー
ジにもう一度アクセスしたときに高速障害解決が可能に
なる。
行されるプロセッサ用のメモリ管理ユニットをプログラ
ミングするための補足サービスが必要である。本発明の
ページ・テーブル項目管理の方法および装置は、マイク
ロカーネル・システムにメモリ管理ユニットをプログラ
ミングするのに必要なサービスを提供する。具体的に
は、本発明のページ・テーブル項目管理の方法および装
置は、PowerPCのプロセッサ・ファミリ上のメモ
リ管理ユニット(MMU:Memory Management Unit)を
プログラミングするための能力をマイクロカーネル・シ
ステムに提供する。PowerPCプロセッサは、仮想
/物理マッピングを管理するための限定された1組の活
動ページ・テーブル項目(PTE)を定義する。本発明
のページ・テーブル項目管理の方法および装置は、2つ
またはそれ以上のユーザ・プロセスが仮想メモリ・セグ
メントを共用するときにセグメントの別名化によって、
PTEの数が限られているという問題を解決する。すな
わち、PTEを複写するのではなく、セグメントが別名
化される。これにより、PTEの数が大幅に削減され
る。さらに、本発明は、システムが実際にPTEを使い
果たすときに既存のPTEのキャッシュを行う。最近破
棄されたPTEのキャッシュにより、最近使用したペー
ジにもう一度アクセスしたときに高速障害解決が可能に
なる。
【0034】本発明のセグメント別名化機能では、2つ
のプロセスが1ページ分のメモリを共用する場合、アド
レス変換方式でPTEを複写することができる。また、
セグメントの別名化では、2つまたはそれ以上のプロセ
スが同一保護を有するメモリのセグメントの共用を必要
とし、そのため、そのプロセスが同一セットのPTEを
有することを、アドレス変換方式が積極的に認識する。
この技法により、PTEの使用法が最適化される。本発
明のページ・テーブル項目管理の方法および装置は、既
存のPTEが同一保護制約を有する共用メモリを表す場
合に仮想メモリ・システムがその既存のPTEを使用で
きるようにするインタフェースを提供する。
のプロセスが1ページ分のメモリを共用する場合、アド
レス変換方式でPTEを複写することができる。また、
セグメントの別名化では、2つまたはそれ以上のプロセ
スが同一保護を有するメモリのセグメントの共用を必要
とし、そのため、そのプロセスが同一セットのPTEを
有することを、アドレス変換方式が積極的に認識する。
この技法により、PTEの使用法が最適化される。本発
明のページ・テーブル項目管理の方法および装置は、既
存のPTEが同一保護制約を有する共用メモリを表す場
合に仮想メモリ・システムがその既存のPTEを使用で
きるようにするインタフェースを提供する。
【0035】本発明の第2の特徴は、PTEを使い尽く
すという問題に対処する。セグメントごとのPTEのキ
ャッシュ済みリストが維持される。キャッシュ済みリス
トは、PTEのグローバル・プールから取り戻したPT
Eから構成される。ページ不在の場合は、このキャッシ
ュ済みリストを探索して、マッピングと一致するPTE
を探し、それが見つかると、明らかに欠落しているペー
ジで不必要にスワップせずにページ不在が解決される。
すという問題に対処する。セグメントごとのPTEのキ
ャッシュ済みリストが維持される。キャッシュ済みリス
トは、PTEのグローバル・プールから取り戻したPT
Eから構成される。ページ不在の場合は、このキャッシ
ュ済みリストを探索して、マッピングと一致するPTE
を探し、それが見つかると、明らかに欠落しているペー
ジで不必要にスワップせずにページ不在が解決される。
【0036】このようにして、本発明のページ・テーブ
ル項目管理の方法および装置は、システムのパフォーマ
ンスを最大限にする。
ル項目管理の方法および装置は、システムのパフォーマ
ンスを最大限にする。
【0037】上記およびその他の目的および利点は、添
付図面を参照すればさらに十分理解されるはずである。
付図面を参照すればさらに十分理解されるはずである。
【0038】
第A部 マイクロカーネル・システム 第1節 マイクロカーネルの原理 図1は、マイクロカーネル・システム115の機能ブロ
ック図であり、マイクロカーネル120およびパーソナ
リティ・ニュートラル・サービス(PNS)140が様
々なハードウェア・プラットフォームで複数のオペレー
ティング・システム・パーソナリティ150を実行する
方法を示す図である。
ック図であり、マイクロカーネル120およびパーソナ
リティ・ニュートラル・サービス(PNS)140が様
々なハードウェア・プラットフォームで複数のオペレー
ティング・システム・パーソナリティ150を実行する
方法を示す図である。
【0039】図1に示すホスト・マルチプロセッサ10
0は、バス104によって補助記憶装置106に接続さ
れたメモリ102を含み、補助記憶装置106は、たと
えば、ディスク・ドライブの場合もあれば、読取り専用
または読取り書込み光ディスク記憶装置、またはその他
の大容量記憶装置の場合もある。バス104には入出力
アダプタ108も接続され、入出力アダプタ108は、
キーボード、モニタ・ディスプレイ、通信アダプタ、ロ
ーカル・エリア・ネットワーク・アダプタ、モデム、マ
ルチメディア・インタフェース装置、またはその他の入
出力装置に接続することもできる。また、バス104に
は、第1のプロセッサA110と第2のプロセッサB1
12も接続されている。プロセッサ110および112
は、前述の通り、PowerPC(登録商標)プロセッ
サである。図1に示す例は、対称的なマルチプロセッサ
構成の例であり、2つのユニプロセッサ110および1
12が共通メモリ・アドレス空間102を共用してい
る。同様に適切な例として、単一プロセッサまたは複数
プロセッサによる他の構成を示すことも可能である。プ
ロセッサは、たとえば、Intel386(登録商標)
CPU、Intel486(登録商標)CPU、Pen
tium(登録商標)プロセッサ、PowerPC(登
録商標)プロセッサ、またはその他のユニプロセッサ・
デバイスにすることができる。
0は、バス104によって補助記憶装置106に接続さ
れたメモリ102を含み、補助記憶装置106は、たと
えば、ディスク・ドライブの場合もあれば、読取り専用
または読取り書込み光ディスク記憶装置、またはその他
の大容量記憶装置の場合もある。バス104には入出力
アダプタ108も接続され、入出力アダプタ108は、
キーボード、モニタ・ディスプレイ、通信アダプタ、ロ
ーカル・エリア・ネットワーク・アダプタ、モデム、マ
ルチメディア・インタフェース装置、またはその他の入
出力装置に接続することもできる。また、バス104に
は、第1のプロセッサA110と第2のプロセッサB1
12も接続されている。プロセッサ110および112
は、前述の通り、PowerPC(登録商標)プロセッ
サである。図1に示す例は、対称的なマルチプロセッサ
構成の例であり、2つのユニプロセッサ110および1
12が共通メモリ・アドレス空間102を共用してい
る。同様に適切な例として、単一プロセッサまたは複数
プロセッサによる他の構成を示すことも可能である。プ
ロセッサは、たとえば、Intel386(登録商標)
CPU、Intel486(登録商標)CPU、Pen
tium(登録商標)プロセッサ、PowerPC(登
録商標)プロセッサ、またはその他のユニプロセッサ・
デバイスにすることができる。
【0040】メモリ102はそこに格納されたマイクロ
カーネル・システム115を含み、マイクロカーネル・
システム115は、マイクロカーネル120と、パーソ
ナリティ・ニュートラル・サービス140と、パーソナ
リティ・サーバ150とを含んでいる。本発明によれ
ば、マシン依存コード125はPowerPCページ・
テーブル項目マネージャ190を含んでいる。マイクロ
カーネル・システム115は、メモリ102に格納され
ているアプリケーション・プログラム180用のオペレ
ーティング・システムとして機能する。
カーネル・システム115を含み、マイクロカーネル・
システム115は、マイクロカーネル120と、パーソ
ナリティ・ニュートラル・サービス140と、パーソナ
リティ・サーバ150とを含んでいる。本発明によれ
ば、マシン依存コード125はPowerPCページ・
テーブル項目マネージャ190を含んでいる。マイクロ
カーネル・システム115は、メモリ102に格納され
ているアプリケーション・プログラム180用のオペレ
ーティング・システムとして機能する。
【0041】本発明の一目的は、UNIXまたはOS/
2のような従来のオペレーティング・システムのように
動作するオペレーティング・システムを提供することに
ある。すなわち、このオペレーティング・システムは、
OS/2またはUNIX、あるいはその他の従来のオペ
レーティング・システムのパーソナリティを有するもの
になる。
2のような従来のオペレーティング・システムのように
動作するオペレーティング・システムを提供することに
ある。すなわち、このオペレーティング・システムは、
OS/2またはUNIX、あるいはその他の従来のオペ
レーティング・システムのパーソナリティを有するもの
になる。
【0042】マイクロカーネル120には、ホスト・マ
ルチプロセッサ100の最優先状態で実行されるシステ
ム・ソフトウェアの一部であってマシンの基本動作を制
御する小さいメッセージ引渡し核が収容されている。マ
イクロカーネル・システム115は、マイクロカーネル
120と、パーソナリティ・ニュートラル・サービス1
40を提供する1組のサーバおよびデバイス・ドライバ
とを含んでいる。名前が示唆するように、パーソナリテ
ィ・ニュートラル・サーバ(personality neutral serv
er)およびデバイス・ドライバは、UNIXまたはOS
/2のようないかなるパーソナリティにも依存していな
い。これらはマイクロカーネル120に依存し、相互に
依存する。パーソナリティ・サーバ150は、マイクロ
カーネル120のメッセージ引渡しサービスを使用して
パーソナリティ・ニュートラル・サービス140とやり
とりする。たとえば、UNIX、OS/2、または他の
パーソナリティ・サーバは、パーソナリティ・ニュート
ラル・ディスク・ドライバにメッセージを送信し、1ブ
ロック分のデータをディスクから読み取るようそれに指
示することができる。ディスク・ドライバはそのブロッ
クを読み取って、それをメッセージに入れて返す。メッ
セージ・システムは、ポインタを操作することによって
大量のデータが迅速に転送されるように最適化されてい
るので、データそのものはコピーされない。
ルチプロセッサ100の最優先状態で実行されるシステ
ム・ソフトウェアの一部であってマシンの基本動作を制
御する小さいメッセージ引渡し核が収容されている。マ
イクロカーネル・システム115は、マイクロカーネル
120と、パーソナリティ・ニュートラル・サービス1
40を提供する1組のサーバおよびデバイス・ドライバ
とを含んでいる。名前が示唆するように、パーソナリテ
ィ・ニュートラル・サーバ(personality neutral serv
er)およびデバイス・ドライバは、UNIXまたはOS
/2のようないかなるパーソナリティにも依存していな
い。これらはマイクロカーネル120に依存し、相互に
依存する。パーソナリティ・サーバ150は、マイクロ
カーネル120のメッセージ引渡しサービスを使用して
パーソナリティ・ニュートラル・サービス140とやり
とりする。たとえば、UNIX、OS/2、または他の
パーソナリティ・サーバは、パーソナリティ・ニュート
ラル・ディスク・ドライバにメッセージを送信し、1ブ
ロック分のデータをディスクから読み取るようそれに指
示することができる。ディスク・ドライバはそのブロッ
クを読み取って、それをメッセージに入れて返す。メッ
セージ・システムは、ポインタを操作することによって
大量のデータが迅速に転送されるように最適化されてい
るので、データそのものはコピーされない。
【0043】マイクロカーネル120は、そのサイズ
と、アプリケーション・プログラムとして標準的なプロ
グラミング・サービスおよび機能をサポートできる能力
とにより、標準的なオペレーティング・システムより単
純になっている。マイクロカーネル・システム115
は、様々に構成される複数のモジュールに分解され、小
規模なシステムにそのモジュールを追加することによっ
てより大規模なシステムを構築できるようになってい
る。たとえば、各パーソナリティ・ニュートラル・サー
バ140は、論理的には別個のものなので、様々な構成
が可能である。各サーバは、アプリケーション・プログ
ラムとして動作し、アプリケーション・デバッガを使用
してデバッグすることができる。また、各サーバは個別
のタスクで動作し、サーバのエラーはそのタスクに閉じ
込められる。
と、アプリケーション・プログラムとして標準的なプロ
グラミング・サービスおよび機能をサポートできる能力
とにより、標準的なオペレーティング・システムより単
純になっている。マイクロカーネル・システム115
は、様々に構成される複数のモジュールに分解され、小
規模なシステムにそのモジュールを追加することによっ
てより大規模なシステムを構築できるようになってい
る。たとえば、各パーソナリティ・ニュートラル・サー
バ140は、論理的には別個のものなので、様々な構成
が可能である。各サーバは、アプリケーション・プログ
ラムとして動作し、アプリケーション・デバッガを使用
してデバッグすることができる。また、各サーバは個別
のタスクで動作し、サーバのエラーはそのタスクに閉じ
込められる。
【0044】図1は、プロセス間通信モジュール(IP
C)122と、仮想メモリ・モジュール124と、タス
クおよびスレッド・モジュール126と、ホストおよび
プロセッサ・セット128と、入出力サポートおよび割
込み130と、マシン依存コード125とを含むマイク
ロカーネル120を示している。
C)122と、仮想メモリ・モジュール124と、タス
クおよびスレッド・モジュール126と、ホストおよび
プロセッサ・セット128と、入出力サポートおよび割
込み130と、マシン依存コード125とを含むマイク
ロカーネル120を示している。
【0045】図1に示すパーソナリティ・ニュートラル
・サービス140は、マスタ・サーバと、初期設定と、
命名とを含む、複数パーソナリティ・サポート142を
含んでいる。サービス140はデフォルト・ページャ1
44も含んでいる。また、サービス140は、複数パー
ソナリティ・サポートとデバイス・ドライバとを含む、
デバイス・サポート146も含んでいる。さらに、サー
ビス140は、ファイル・サーバと、ネットワーク・サ
ービスと、データベース・エンジンと、セキュリティと
を含む、その他のパーソナリティ・ニュートラル・プロ
ダクト148も含んでいる。
・サービス140は、マスタ・サーバと、初期設定と、
命名とを含む、複数パーソナリティ・サポート142を
含んでいる。サービス140はデフォルト・ページャ1
44も含んでいる。また、サービス140は、複数パー
ソナリティ・サポートとデバイス・ドライバとを含む、
デバイス・サポート146も含んでいる。さらに、サー
ビス140は、ファイル・サーバと、ネットワーク・サ
ービスと、データベース・エンジンと、セキュリティと
を含む、その他のパーソナリティ・ニュートラル・プロ
ダクト148も含んでいる。
【0046】パーソナリティ・サーバ150は、たとえ
ば、UNIXパーソナリティなどにすることが可能な主
要パーソナリティ152である。このサーバは、UNI
Xサーバであるはずの主要パーソナリティ・サーバ15
4と、UNIX主要パーソナリティをサポートするはず
の他の主要パーソナリティ・サービス155とを含んで
いる。また、代替主要パーソナリティ156は、OS/
2などにすることができる。この代替パーソナリティ1
56には、OS/2パーソナリティの特徴となるはずの
代替パーソナリティ・サーバ158と、OS/2用の他
の代替パーソナリティ・サービス159とが含まれてい
る。
ば、UNIXパーソナリティなどにすることが可能な主
要パーソナリティ152である。このサーバは、UNI
Xサーバであるはずの主要パーソナリティ・サーバ15
4と、UNIX主要パーソナリティをサポートするはず
の他の主要パーソナリティ・サービス155とを含んで
いる。また、代替主要パーソナリティ156は、OS/
2などにすることができる。この代替パーソナリティ1
56には、OS/2パーソナリティの特徴となるはずの
代替パーソナリティ・サーバ158と、OS/2用の他
の代替パーソナリティ・サービス159とが含まれてい
る。
【0047】UNIX主要パーソナリティの例に関連し
て図1に示されている主要パーソナリティ・アプリケー
ション182は、UNIXオペレーティング・システム
・パーソナリティ152上で動作するはずのUNIXタ
イプのアプリケーションである。図1に示す代替パーソ
ナリティ・アプリケーション186は、OS/2代替パ
ーソナリティ・オペレーティング・システム156上で
動作するOS/2アプリケーションである。
て図1に示されている主要パーソナリティ・アプリケー
ション182は、UNIXオペレーティング・システム
・パーソナリティ152上で動作するはずのUNIXタ
イプのアプリケーションである。図1に示す代替パーソ
ナリティ・アプリケーション186は、OS/2代替パ
ーソナリティ・オペレーティング・システム156上で
動作するOS/2アプリケーションである。
【0048】図1は、マイクロカーネル・システム11
5によって、その実施態様が、プロセッサ・タイプごと
に完全に移植可能なコードと、それが実行される特定の
マシンのプロセッサのタイプに依存するコードとに慎重
に分割されていることを示している。また、このシステ
ムは、デバイスに依存するコードをデバイス・ドライバ
に分離しているが、デバイス・ドライバ・コードは、デ
バイスに依存しているものの、必ずしもプロセッサ・ア
ーキテクチャに依存しているわけではない。タスク当た
り複数のスレッドを使用すると、特定のマシンをマルチ
プロセッサにせずにマルチプロセッサの使用が可能にな
るようなアプリケーション環境が提供される。ユニプロ
セッサでは、各種のスレッドが様々な時期に実行され
る。複数プロセッサに必要なすべてのサポートがこの小
さく単純なマイクロカーネル120に凝集されている。
5によって、その実施態様が、プロセッサ・タイプごと
に完全に移植可能なコードと、それが実行される特定の
マシンのプロセッサのタイプに依存するコードとに慎重
に分割されていることを示している。また、このシステ
ムは、デバイスに依存するコードをデバイス・ドライバ
に分離しているが、デバイス・ドライバ・コードは、デ
バイスに依存しているものの、必ずしもプロセッサ・ア
ーキテクチャに依存しているわけではない。タスク当た
り複数のスレッドを使用すると、特定のマシンをマルチ
プロセッサにせずにマルチプロセッサの使用が可能にな
るようなアプリケーション環境が提供される。ユニプロ
セッサでは、各種のスレッドが様々な時期に実行され
る。複数プロセッサに必要なすべてのサポートがこの小
さく単純なマイクロカーネル120に凝集されている。
【0049】前述の特許出願は、アーキテクチャ・モデ
ル、タスク、スレッド、ポート、プロセス間通信、マイ
クロカーネル120の諸機能を含む、マイクロカーネル
・システム115の詳細説明を示している。
ル、タスク、スレッド、ポート、プロセス間通信、マイ
クロカーネル120の諸機能を含む、マイクロカーネル
・システム115の詳細説明を示している。
【0050】マイクロカーネルの仮想メモリ設計では、
仮想メモリ・システム124をマシン依存部分とマシン
非依存部分とに階層化する。マシン依存部分は、仮想メ
モリのページに関するアクセス権の妥当性検査、無効
化、および設定のための単純なインタフェースを提供
し、それによりハードウェア・アドレス・マップを管理
する。マシン非依存部分は、論理アドレス・マップ(仮
想アドレス空間のマッピング)、このマップ内のメモリ
範囲、外部メモリ管理インタフェースによるこのメモリ
範囲用の支援記憶装置(メモリ・オブジェクト)へのイ
ンタフェースに関するサポートを提供する。仮想メモリ
・システムは、適度な数のプロセッサからなる均一メモ
リ・アクセス・マルチプロセッサ向けに設計されてい
る。不均一メモリ・アクセスを提供するアーキテクチャ
または遠隔メモリ・アクセスを一切提供しないアーキテ
クチャのサポートについては、現在、研究中である。マ
イクロカーネル仮想メモリ設計の特徴の1つは、パフォ
ーマンスの高さである。その多くは、大きい疎アドレス
空間、共用メモリ、および仮想コピー・メモリ最適化を
効率よくサポートすることによるものである。最後に、
仮想メモリ・システムにより、クライアントは、メモリ
範囲用の支援記憶装置を提供することができ、それによ
りこのような範囲に適用されるセマンティクスが定義さ
れる。本明細書では、ガイ・ジー・ソトマイヤー・ジュ
ニア他による"METHOD AND APPARATUS FOR MANAGEMENT O
F MAPPED AND UNMAPPED REGIONS OF MEMORY IN A MICRO
KERNEL DATAPROCESSING SYSTEM"という名称の前述の米
国特許出願を参照する。この特許出願は、マイクロカー
ネル・システム115の仮想メモリ機能の詳細説明に関
して参照することにより、本発明の一部となる。
仮想メモリ・システム124をマシン依存部分とマシン
非依存部分とに階層化する。マシン依存部分は、仮想メ
モリのページに関するアクセス権の妥当性検査、無効
化、および設定のための単純なインタフェースを提供
し、それによりハードウェア・アドレス・マップを管理
する。マシン非依存部分は、論理アドレス・マップ(仮
想アドレス空間のマッピング)、このマップ内のメモリ
範囲、外部メモリ管理インタフェースによるこのメモリ
範囲用の支援記憶装置(メモリ・オブジェクト)へのイ
ンタフェースに関するサポートを提供する。仮想メモリ
・システムは、適度な数のプロセッサからなる均一メモ
リ・アクセス・マルチプロセッサ向けに設計されてい
る。不均一メモリ・アクセスを提供するアーキテクチャ
または遠隔メモリ・アクセスを一切提供しないアーキテ
クチャのサポートについては、現在、研究中である。マ
イクロカーネル仮想メモリ設計の特徴の1つは、パフォ
ーマンスの高さである。その多くは、大きい疎アドレス
空間、共用メモリ、および仮想コピー・メモリ最適化を
効率よくサポートすることによるものである。最後に、
仮想メモリ・システムにより、クライアントは、メモリ
範囲用の支援記憶装置を提供することができ、それによ
りこのような範囲に適用されるセマンティクスが定義さ
れる。本明細書では、ガイ・ジー・ソトマイヤー・ジュ
ニア他による"METHOD AND APPARATUS FOR MANAGEMENT O
F MAPPED AND UNMAPPED REGIONS OF MEMORY IN A MICRO
KERNEL DATAPROCESSING SYSTEM"という名称の前述の米
国特許出願を参照する。この特許出願は、マイクロカー
ネル・システム115の仮想メモリ機能の詳細説明に関
して参照することにより、本発明の一部となる。
【0051】ソトマイヤー他の特許出願に記載されてい
るように、図2は、タスクT(A)と、その親テンプレ
ート領域R0と、PMAP800との関係を示してい
る。図2は、その親であるテンプレート領域R0の属性
を使用してマイクロカーネルが形成したタスクT(A)
を示している。タスクT(A)は、テンプレート領域R
0を指し示す第1のポインタを有する。タスクとそのス
レッドは、メモリ102内のキャッシュ・オブジェクト
からの1ページ分のデータD0またはD1にアクセスす
るときに、テンプレート領域R0へのポインタを使用す
る。テンプレート領域R0およびR1の第2のポインタ
は、タスクT(A)にPMAP800へのアクセス権を
提供する。マイクロカーネル120は、テンプレート領
域R0を指し示すタスクT(A)用の第1のポインタを
定義する。テンプレート領域R0内には、直接的または
間接的にPMAPマッピング・テーブル800を指し示
す、少なくとも1つ、おそらく多数の第2のポインタP
T(R0)が存在する。図2に示すように、テンプレー
ト領域R0のポインタPT(R0)は、PMAP800
のポインタ・アドレス値V(0)を指し示す。テンプレ
ート領域R0のアドレス空間に含まれるテンプレート領
域R1は、そのポインタPT(R1)により、PMAP
800内のポインタ・アドレス値V(1)を指し示す。
ソトマイヤー他の特許出願では、テンプレート領域R0
またはR1によって仮想アドレス値がPMAP800に
適用され、PMAPはその仮想アドレス値を、キャッシ
ュ・オブジェクトからのデータ・ページD0またはD1
にアクセスするために適用された物理アドレスに変換し
ていた。
るように、図2は、タスクT(A)と、その親テンプレ
ート領域R0と、PMAP800との関係を示してい
る。図2は、その親であるテンプレート領域R0の属性
を使用してマイクロカーネルが形成したタスクT(A)
を示している。タスクT(A)は、テンプレート領域R
0を指し示す第1のポインタを有する。タスクとそのス
レッドは、メモリ102内のキャッシュ・オブジェクト
からの1ページ分のデータD0またはD1にアクセスす
るときに、テンプレート領域R0へのポインタを使用す
る。テンプレート領域R0およびR1の第2のポインタ
は、タスクT(A)にPMAP800へのアクセス権を
提供する。マイクロカーネル120は、テンプレート領
域R0を指し示すタスクT(A)用の第1のポインタを
定義する。テンプレート領域R0内には、直接的または
間接的にPMAPマッピング・テーブル800を指し示
す、少なくとも1つ、おそらく多数の第2のポインタP
T(R0)が存在する。図2に示すように、テンプレー
ト領域R0のポインタPT(R0)は、PMAP800
のポインタ・アドレス値V(0)を指し示す。テンプレ
ート領域R0のアドレス空間に含まれるテンプレート領
域R1は、そのポインタPT(R1)により、PMAP
800内のポインタ・アドレス値V(1)を指し示す。
ソトマイヤー他の特許出願では、テンプレート領域R0
またはR1によって仮想アドレス値がPMAP800に
適用され、PMAPはその仮想アドレス値を、キャッシ
ュ・オブジェクトからのデータ・ページD0またはD1
にアクセスするために適用された物理アドレスに変換し
ていた。
【0052】しかし、本発明によれば、PowerPC
プロセッサ110および112用のメモリ・レイアウト
を有するメモリ102にアクセスするため、上記のよう
にテンプレート領域R0およびR1が有効アドレス72
0をPMAP800に適用する。この場合、ポインタ・
アドレス値V(1)は、テンプレート領域R1からの有
効アドレス720を、図2および図5に示すPower
PCページ・テーブル項目マネージャ190へのポイン
タ801に変換する。次にページ・テーブル項目マネー
ジャ190内のページ・テーブル項目PTE(1)は、
キャッシュ・オブジェクト内の物理ページ712に実物
理アドレス760を提供し、それによりデータ・ページ
D0または命令ページD1にアクセスする。
プロセッサ110および112用のメモリ・レイアウト
を有するメモリ102にアクセスするため、上記のよう
にテンプレート領域R0およびR1が有効アドレス72
0をPMAP800に適用する。この場合、ポインタ・
アドレス値V(1)は、テンプレート領域R1からの有
効アドレス720を、図2および図5に示すPower
PCページ・テーブル項目マネージャ190へのポイン
タ801に変換する。次にページ・テーブル項目マネー
ジャ190内のページ・テーブル項目PTE(1)は、
キャッシュ・オブジェクト内の物理ページ712に実物
理アドレス760を提供し、それによりデータ・ページ
D0または命令ページD1にアクセスする。
【0053】図3は、PowerPCメモリの先行技術
のレイアウトを示している。PowerPCメモリ・レ
イアウトおよびアドレス変換の詳細は、IBM社発行の
書籍"The PowerPC Architecture"(モーガン=カウフマ
ン:Morgan-Kaufmann著、サンフランシスコ、1994
年)に記載されている。本発明のページ・テーブル項目
マネージャ190を明確に理解するには、PowerP
Cメモリ管理ユニット(MMU)を理解することが必要
である。図3は、PowerPCアーキテクチャのメモ
リ・レイアウトを表したものである。2**52の仮想
アドレス空間700全体は、それぞれが256MBサイ
ズの702および702'などの2**24の仮想セグ
メントに分割される。いつでも16個の活動セグメント
が有効な32ビット・アドレス空間(16*256M
B)を包含する。それぞれの活動セグメント702は、
マッピング704によって図4に示す仮想セグメントI
D(VSID)732を有する潜在的な2**24の仮
想セグメントの1つに割り当てられる。それぞれのセグ
メント702は、64k(256MB/4K)の仮想ペ
ージ706を有し、その結果、システム100内に合計
2**40の仮想ページ706が作成される。仮想ペー
ジ706は、図4に示す24ビットのVSID732と
16ビットの仮想ページ番号(VPN)734によって
明確に識別される。VPN734は、図4に示すPTE
750を含むページ・テーブル740にハッシュするこ
とにより、実物理ページ712用の実ページ番号(RP
N)752に変換される。
のレイアウトを示している。PowerPCメモリ・レ
イアウトおよびアドレス変換の詳細は、IBM社発行の
書籍"The PowerPC Architecture"(モーガン=カウフマ
ン:Morgan-Kaufmann著、サンフランシスコ、1994
年)に記載されている。本発明のページ・テーブル項目
マネージャ190を明確に理解するには、PowerP
Cメモリ管理ユニット(MMU)を理解することが必要
である。図3は、PowerPCアーキテクチャのメモ
リ・レイアウトを表したものである。2**52の仮想
アドレス空間700全体は、それぞれが256MBサイ
ズの702および702'などの2**24の仮想セグ
メントに分割される。いつでも16個の活動セグメント
が有効な32ビット・アドレス空間(16*256M
B)を包含する。それぞれの活動セグメント702は、
マッピング704によって図4に示す仮想セグメントI
D(VSID)732を有する潜在的な2**24の仮
想セグメントの1つに割り当てられる。それぞれのセグ
メント702は、64k(256MB/4K)の仮想ペ
ージ706を有し、その結果、システム100内に合計
2**40の仮想ページ706が作成される。仮想ペー
ジ706は、図4に示す24ビットのVSID732と
16ビットの仮想ページ番号(VPN)734によって
明確に識別される。VPN734は、図4に示すPTE
750を含むページ・テーブル740にハッシュするこ
とにより、実物理ページ712用の実ページ番号(RP
N)752に変換される。
【0054】図4は、PowerPCのMMUの先行技
術のアドレス変換を示している。以下の3種類のアドレ
スが定義される。 1.有効アドレス(EA:Effective Address)72
0: これはプロセッサが生成する32ビットのアドレ
スである。各プロセスはそれ専用の32ビットのアドレ
ス空間を有する。高位4ビット722はセグメント番号
の選択に使用される。次の16ビット724はそのセグ
メント内のページ番号を定義し、最後の12ビット72
6はそのページ内のバイト・オフセットを定義する。 2.仮想アドレス(VA:Virtual Address)730:
これは52ビットのグローバル・アドレスである。こ
れは、(EA720の4MSBによって選択された)有
効セグメントの24ビットのVSID732と、16ビ
ットの仮想ページ番号734と、EAからの12ビット
のオフセット726とを連結することによって生成され
る。これは固有の40ビットの仮想ページ番号735を
定義する。 3.実アドレス(RA:Real Address)760: 40
ビットのページ番号735をハッシュ736内で使用し
て、PTE750を見つけることができるPTEグルー
プ(PTEG)738のアドレスを生成する。VSID
732および仮想ページ番号735の高位6ビットと一
致するページ・テーブル項目テーブル740で、PTE
750が探索される。適切なPTE750は、この40
ビットの仮想ページ番号735用の20ビットの実メモ
リ・ページ・アドレス(RA)752を有する。20ビ
ットの実アドレス752は、実メモリ102にアクセス
するために、12ビットのオフセット726と連結され
る。
術のアドレス変換を示している。以下の3種類のアドレ
スが定義される。 1.有効アドレス(EA:Effective Address)72
0: これはプロセッサが生成する32ビットのアドレ
スである。各プロセスはそれ専用の32ビットのアドレ
ス空間を有する。高位4ビット722はセグメント番号
の選択に使用される。次の16ビット724はそのセグ
メント内のページ番号を定義し、最後の12ビット72
6はそのページ内のバイト・オフセットを定義する。 2.仮想アドレス(VA:Virtual Address)730:
これは52ビットのグローバル・アドレスである。こ
れは、(EA720の4MSBによって選択された)有
効セグメントの24ビットのVSID732と、16ビ
ットの仮想ページ番号734と、EAからの12ビット
のオフセット726とを連結することによって生成され
る。これは固有の40ビットの仮想ページ番号735を
定義する。 3.実アドレス(RA:Real Address)760: 40
ビットのページ番号735をハッシュ736内で使用し
て、PTE750を見つけることができるPTEグルー
プ(PTEG)738のアドレスを生成する。VSID
732および仮想ページ番号735の高位6ビットと一
致するページ・テーブル項目テーブル740で、PTE
750が探索される。適切なPTE750は、この40
ビットの仮想ページ番号735用の20ビットの実メモ
リ・ページ・アドレス(RA)752を有する。20ビ
ットの実アドレス752は、実メモリ102にアクセス
するために、12ビットのオフセット726と連結され
る。
【0055】本発明のページ・テーブル項目マネージャ
190の設計目標は以下の3点である。 i)32ビット・プロセッサから64ビット・プロセッ
サへの移行が容易になり、ほとんどのコードを使用でき
るように、設計のモジュール性を維持すること。32ビ
ットのインプリメンテーションでは、有効アドレスの高
位4ビット上で1つのセグメントが選択され、そのセグ
メントが固有の24ビット仮想セグメントIDを有す
る。64ビットのインプリメンテーションでは、有効ア
ドレスの一部のビットをセグメント・テーブルにハッシ
ュすることによって、セグメントが選択される。選択さ
れると、そのセグメントは固有の52ビットのVSID
を有する。VSIDから物理アドレスを生成するための
アルゴリズムは、どちらの場合も同じである(データ構
造のサイズは変化するが、内容は同様である)。したが
って、VSID境界に明確な分割部を有する設計であれ
ば、どちらのアーキテクチャにも十分機能する。 ii)セグメントの別名化に対応すること。通常、共用物
理ページは、1つまたは複数のPTE(ページ・テーブ
ル項目)によってマッピングされる。これは、ページの
別名化と呼ばれる。PowerPCのようなセグメント
式マシンでは、多くのPTEを保管する共用ページに同
一セグメントを使用できることが望ましい。セグメント
の別名化は、DLL(動的リンク・ライブラリ)の共用
には非常に有用である。ローダは、システム規模のDL
Lを1つのセグメントにロードする。そのDLLを使用
する各プロセスは、このセグメントをDLLの空間にマ
ッピングする。ページ別名化方式を使用しない場合は、
このマッピングを反映するために多くのPTEが必要に
なるはずである。設計要件は、様々なセグメント構造間
で1つのVSIDを共用することである。 iii)ページ取戻し機構を設計すること。PowerP
Cハードウェア(H/W)のページ・テーブル設計固有
のものとして、所与のハッシュ・バケット用のPTEを
使い尽くすという問題がある。ハードウェアはこの発生
を最小限にするよう設計されているが、それでも発生す
る場合がある。この問題のもう1つの特徴は、固定ペー
ジ上では障害が発生しないとVMモジュールが想定して
いるので、その固定ページがそのPTEマッピングを除
去することができない点である。目標は、(ハードウェ
ア・ハッシュ・プロトコルに加え)ハッシュ・バケット
のバランス維持を試みることと、ハッシュ・バケットが
一杯になった場合に取り戻すための適当なPTE項目を
拾い上げることである。また、可能であれば、最も頻繁
に使用するPTEを主要ハッシュ・バケット内に保管す
る必要もある。PTEは、擬似ランダム方式でハッシュ
・バケットから取り戻される。PTE項目「i」は、1
次ハッシュでランダムに選択される。1次ハッシュは循
環式に探索され、2次項目、非固定1次項目、固定2次
項目、または1次固定項目をこの順に探す。項目が見つ
かると、その項目が取り戻される。項目が見つからない
場合は、「i番目」の項目が取り戻される。この新しい
項目は取り戻した項目の位置に挿入される。 iv)高速変換障害処理を設計すること: 上記の問題の
補足として、変換障害を満足することが必要である(ペ
ージはまだメモリ内にあるが、別のページ用の空間を作
るためにそのPTEが捨てられてしまったからであ
る)。これは、捨てられたPTEのキャッシュを保管
し、非常に小さいページ不在ハンドラによってそのPT
Eを再確立することによって実施される。この結果、パ
フォーマンス上の恩恵がかなり得られる。
190の設計目標は以下の3点である。 i)32ビット・プロセッサから64ビット・プロセッ
サへの移行が容易になり、ほとんどのコードを使用でき
るように、設計のモジュール性を維持すること。32ビ
ットのインプリメンテーションでは、有効アドレスの高
位4ビット上で1つのセグメントが選択され、そのセグ
メントが固有の24ビット仮想セグメントIDを有す
る。64ビットのインプリメンテーションでは、有効ア
ドレスの一部のビットをセグメント・テーブルにハッシ
ュすることによって、セグメントが選択される。選択さ
れると、そのセグメントは固有の52ビットのVSID
を有する。VSIDから物理アドレスを生成するための
アルゴリズムは、どちらの場合も同じである(データ構
造のサイズは変化するが、内容は同様である)。したが
って、VSID境界に明確な分割部を有する設計であれ
ば、どちらのアーキテクチャにも十分機能する。 ii)セグメントの別名化に対応すること。通常、共用物
理ページは、1つまたは複数のPTE(ページ・テーブ
ル項目)によってマッピングされる。これは、ページの
別名化と呼ばれる。PowerPCのようなセグメント
式マシンでは、多くのPTEを保管する共用ページに同
一セグメントを使用できることが望ましい。セグメント
の別名化は、DLL(動的リンク・ライブラリ)の共用
には非常に有用である。ローダは、システム規模のDL
Lを1つのセグメントにロードする。そのDLLを使用
する各プロセスは、このセグメントをDLLの空間にマ
ッピングする。ページ別名化方式を使用しない場合は、
このマッピングを反映するために多くのPTEが必要に
なるはずである。設計要件は、様々なセグメント構造間
で1つのVSIDを共用することである。 iii)ページ取戻し機構を設計すること。PowerP
Cハードウェア(H/W)のページ・テーブル設計固有
のものとして、所与のハッシュ・バケット用のPTEを
使い尽くすという問題がある。ハードウェアはこの発生
を最小限にするよう設計されているが、それでも発生す
る場合がある。この問題のもう1つの特徴は、固定ペー
ジ上では障害が発生しないとVMモジュールが想定して
いるので、その固定ページがそのPTEマッピングを除
去することができない点である。目標は、(ハードウェ
ア・ハッシュ・プロトコルに加え)ハッシュ・バケット
のバランス維持を試みることと、ハッシュ・バケットが
一杯になった場合に取り戻すための適当なPTE項目を
拾い上げることである。また、可能であれば、最も頻繁
に使用するPTEを主要ハッシュ・バケット内に保管す
る必要もある。PTEは、擬似ランダム方式でハッシュ
・バケットから取り戻される。PTE項目「i」は、1
次ハッシュでランダムに選択される。1次ハッシュは循
環式に探索され、2次項目、非固定1次項目、固定2次
項目、または1次固定項目をこの順に探す。項目が見つ
かると、その項目が取り戻される。項目が見つからない
場合は、「i番目」の項目が取り戻される。この新しい
項目は取り戻した項目の位置に挿入される。 iv)高速変換障害処理を設計すること: 上記の問題の
補足として、変換障害を満足することが必要である(ペ
ージはまだメモリ内にあるが、別のページ用の空間を作
るためにそのPTEが捨てられてしまったからであ
る)。これは、捨てられたPTEのキャッシュを保管
し、非常に小さいページ不在ハンドラによってそのPT
Eを再確立することによって実施される。この結果、パ
フォーマンス上の恩恵がかなり得られる。
【0056】図5は、本発明のページ・テーブル項目マ
ネージャ190の機能ブロック図を示している。各タス
クは、PMAP構造800を1つずつ持っている。これ
は、PMAP層へのすべての有効アドレスベースの要求
720のためのアンカーである。PMAP構造はセグメ
ント情報テーブル802を指し示す。セグメント情報テ
ーブルにはセグメント情報構造が入っている。セグメン
ト情報構造には、対応するプロセスが活動状態になった
ときにセグメント・レジスタにロードされるセグメント
に関する情報が入っている。32ビット・インプリメン
テーションでは、セグメント情報テーブル802は16
個のセグメント情報構造804からなる配列である。6
4ビット・インプリメンテーションでは、これは、ペー
ジ・テーブルのような完全なテーブルになる。
ネージャ190の機能ブロック図を示している。各タス
クは、PMAP構造800を1つずつ持っている。これ
は、PMAP層へのすべての有効アドレスベースの要求
720のためのアンカーである。PMAP構造はセグメ
ント情報テーブル802を指し示す。セグメント情報テ
ーブルにはセグメント情報構造が入っている。セグメン
ト情報構造には、対応するプロセスが活動状態になった
ときにセグメント・レジスタにロードされるセグメント
に関する情報が入っている。32ビット・インプリメン
テーションでは、セグメント情報テーブル802は16
個のセグメント情報構造804からなる配列である。6
4ビット・インプリメンテーションでは、これは、ペー
ジ・テーブルのような完全なテーブルになる。
【0057】各セグメント情報テーブル804は、仮想
セグメント構造810を指し示す。この構造は、合計2
**24の可能なセグメントからの固有の仮想セグメン
ト702を表す。仮想セグメント構造810は、セグメ
ント変換とページ変換との間のインタフェースを提供
し、32ビット・インプリメンテーションから64ビッ
ト・インプリメンテーションへの変更を必要としない。
多くのセグメント情報構造804が1つの仮想セグメン
ト構造810を指し示すことができる。
セグメント構造810を指し示す。この構造は、合計2
**24の可能なセグメントからの固有の仮想セグメン
ト702を表す。仮想セグメント構造810は、セグメ
ント変換とページ変換との間のインタフェースを提供
し、32ビット・インプリメンテーションから64ビッ
ト・インプリメンテーションへの変更を必要としない。
多くのセグメント情報構造804が1つの仮想セグメン
ト構造810を指し示すことができる。
【0058】以下の3種類のPTE750構造が管理さ
れる。 1.ハードウェア(H/W)PTE825。この構造
は、H/Wによって定義されたページ・テーブル740
内のページ・テーブル項目750である。変換ルックア
サイド・バッファ(TLB)ミスの場合、H/Wはこの
構造825を使用してTLBをロードする。これには、
実アドレス752と、保護ビット754と、参照ビット
と、仮想ページ番号(VPN)734の低位6ビットと
が入っている。 2.ソフトウェア(S/W)PTE830。この構造に
は、ページ・テーブル項目マネージャ190が必要とす
る情報が入っている。H/W PTE825とページ・
テーブル740構造はH/Wによって定義され、固定さ
れるので、S/Wが要求した情報をそこに保管すること
はできない。S/W PTE構造830には、VPN7
34の高位10ビットと、固定ビットと、所与の物理ペ
ージ712用にマッピングの単独リンク・リストの管理
に使用する16ビットの索引とが入っている。8k/1
6kのH/W PTE項目825が(8/16MBシス
テム・メモリに基づく)64k/128kのメモリを占
有している。また、H/W PTE825ごとに1つず
つのS/W PTE830が存在する。H/W PTE
825とS/W PTE830はともに配列としてメモ
リ・プール内に格納され、20ビットの索引(最高1M
までの項目を表す)によって索引を付けることができ
る。H/W PTE825とS/W PTE830との
間には1対1のマッピングが行われる。H/W PTE
アドレスがあれば、同一索引を有する対応する配列にア
クセスするだけでS/W PTEアドレスを見つけるこ
とができ、その逆も可能である。 3.キャッシュ済みPTE820。この構造は、取り戻
したPTE項目750を表す。これには、取り戻したP
TE750と、固定状況と、このPTEの取戻し元であ
るH/Wページ・テーブル740へのポインタとが入っ
ている。PTE750は、H/W PTE825(およ
びS/W PTE830)内またはキャッシュ済みPT
E820内のいずれかに存在する。これ以外の唯一の構
造は、ページアンカー構造840である。物理メモリ1
02内の各ページ712ごとに1つのページアンカー構
造840が存在する。この構造は、物理ページ712に
関する参照情報および変更情報を有する。
れる。 1.ハードウェア(H/W)PTE825。この構造
は、H/Wによって定義されたページ・テーブル740
内のページ・テーブル項目750である。変換ルックア
サイド・バッファ(TLB)ミスの場合、H/Wはこの
構造825を使用してTLBをロードする。これには、
実アドレス752と、保護ビット754と、参照ビット
と、仮想ページ番号(VPN)734の低位6ビットと
が入っている。 2.ソフトウェア(S/W)PTE830。この構造に
は、ページ・テーブル項目マネージャ190が必要とす
る情報が入っている。H/W PTE825とページ・
テーブル740構造はH/Wによって定義され、固定さ
れるので、S/Wが要求した情報をそこに保管すること
はできない。S/W PTE構造830には、VPN7
34の高位10ビットと、固定ビットと、所与の物理ペ
ージ712用にマッピングの単独リンク・リストの管理
に使用する16ビットの索引とが入っている。8k/1
6kのH/W PTE項目825が(8/16MBシス
テム・メモリに基づく)64k/128kのメモリを占
有している。また、H/W PTE825ごとに1つず
つのS/W PTE830が存在する。H/W PTE
825とS/W PTE830はともに配列としてメモ
リ・プール内に格納され、20ビットの索引(最高1M
までの項目を表す)によって索引を付けることができ
る。H/W PTE825とS/W PTE830との
間には1対1のマッピングが行われる。H/W PTE
アドレスがあれば、同一索引を有する対応する配列にア
クセスするだけでS/W PTEアドレスを見つけるこ
とができ、その逆も可能である。 3.キャッシュ済みPTE820。この構造は、取り戻
したPTE項目750を表す。これには、取り戻したP
TE750と、固定状況と、このPTEの取戻し元であ
るH/Wページ・テーブル740へのポインタとが入っ
ている。PTE750は、H/W PTE825(およ
びS/W PTE830)内またはキャッシュ済みPT
E820内のいずれかに存在する。これ以外の唯一の構
造は、ページアンカー構造840である。物理メモリ1
02内の各ページ712ごとに1つのページアンカー構
造840が存在する。この構造は、物理ページ712に
関する参照情報および変更情報を有する。
【0059】いくつかのリンク・リストが管理される。
第1のリストは、物理ページごとのマッピングのリスト
SPTE844である。これは単独リンク・リストであ
る。これは、ページ・アンカー構造内にそのヘッドを有
し、S/W PTEによって実現される。(H/W P
TEにはリンク・リスト情報を保管できる空間が無く、
S/W PTEがあれば、いつでもH/W PTEを見
つけることができる。)
第1のリストは、物理ページごとのマッピングのリスト
SPTE844である。これは単独リンク・リストであ
る。これは、ページ・アンカー構造内にそのヘッドを有
し、S/W PTEによって実現される。(H/W P
TEにはリンク・リスト情報を保管できる空間が無く、
S/W PTEがあれば、いつでもH/W PTEを見
つけることができる。)
【0060】同様のリンク・リストCPTE842は、
キャッシュ済み(取り戻した)PTEに関して保管され
る。取り戻したPTEはまだ有効なマッピングなので、
ページ・アンカー構造内のヘッドとともにそのマッピン
グのリンク・リストを保管することが必要である。
キャッシュ済み(取り戻した)PTEに関して保管され
る。取り戻したPTEはまだ有効なマッピングなので、
ページ・アンカー構造内のヘッドとともにそのマッピン
グのリンク・リストを保管することが必要である。
【0061】図5は、ページ・テーブル740から取り
戻したPTEがキャッシュ済みPTE820に渡される
際の経路821を示している。PTEがキャッシュ済み
PTE820内に置かれたことを識別する項目が、キャ
ッシュ済みリスト815内に作成される。その後、ペー
ジ・テーブル740の探索の結果、一致するPTEが見
つからなかった場合、キャッシュ済みリスト815が探
索される。探索したPTEがキャッシュ済みPTE82
0で見つかると、そのPTEは経路821'を介してペ
ージ・テーブル740に復元される。
戻したPTEがキャッシュ済みPTE820に渡される
際の経路821を示している。PTEがキャッシュ済み
PTE820内に置かれたことを識別する項目が、キャ
ッシュ済みリスト815内に作成される。その後、ペー
ジ・テーブル740の探索の結果、一致するPTEが見
つからなかった場合、キャッシュ済みリスト815が探
索される。探索したPTEがキャッシュ済みPTE82
0で見つかると、そのPTEは経路821'を介してペ
ージ・テーブル740に復元される。
【0062】キャッシュ済みPTEは、仮想セグメント
用のキャッシュ済みPTEのリスト815を管理する別
のチェーンにもリンクされる。このリストは、キャッシ
ュ済みPTEを見つけて障害時にH/Wページ・テーブ
ル740に復元するために探索される。キャッシュ済み
PTE820は、740内のH/W PTE用のオーバ
フロー域と見なすことができる。ページ・アンカー84
0からのキャッシュ済みPTEリストCPTE842は
物理アドレス760上のハッシュと見なすことができ、
仮想セグメント810からのキャッシュ済みPTEリス
ト815は仮想アドレス730上のハッシュと見なすこ
とができる。
用のキャッシュ済みPTEのリスト815を管理する別
のチェーンにもリンクされる。このリストは、キャッシ
ュ済みPTEを見つけて障害時にH/Wページ・テーブ
ル740に復元するために探索される。キャッシュ済み
PTE820は、740内のH/W PTE用のオーバ
フロー域と見なすことができる。ページ・アンカー84
0からのキャッシュ済みPTEリストCPTE842は
物理アドレス760上のハッシュと見なすことができ、
仮想セグメント810からのキャッシュ済みPTEリス
ト815は仮想アドレス730上のハッシュと見なすこ
とができる。
【0063】VMモジュール124は、ページ・テーブ
ル項目マネージャ190に対して2種類の要求を行う。
一方の要求は有効アドレス720に基づくもので、もう
一方は物理アドレス760に基づくものである。有効ア
ドレス720の呼出しは、PMAP800、仮想セグメ
ント構造802に続いて、ハッシュ817を通過し、正
しいPTE750に達する。物理アドレス760の呼出
しは、ページアンカー構造840とS/W PTE S
PTEリスト844またはキャッシュ済みPTEリスト
CPTE842を通過し、正しいPTE750に達す
る。
ル項目マネージャ190に対して2種類の要求を行う。
一方の要求は有効アドレス720に基づくもので、もう
一方は物理アドレス760に基づくものである。有効ア
ドレス720の呼出しは、PMAP800、仮想セグメ
ント構造802に続いて、ハッシュ817を通過し、正
しいPTE750に達する。物理アドレス760の呼出
しは、ページアンカー構造840とS/W PTE S
PTEリスト844またはキャッシュ済みPTEリスト
CPTE842を通過し、正しいPTE750に達す
る。
【0064】図6は、ページ別名化を特徴とする、本発
明のページ・テーブル項目マネージャの機能ブロック図
を示している。たとえば、PowerPCプロセッサ1
10は、メモリ内の1ページ分のデータの物理アドレス
にマッピングすべき仮想アドレスに変換するために、有
効アドレスを生成する。プロセッサ110は、それが実
行する第1のプロセスまたはタスク/スレッドについ
て、第1のPMAP800に第1の有効アドレス720
を出して、メモリ102内の第1の実ページ712にア
クセスすることから開始する。セグメント情報モジュー
ル802は、801上で第1の有効アドレスを受け取
り、対応する第1の仮想アドレスを対応する仮想オブジ
ェクト810'を備えた第1の仮想セグメントにマッピ
ングする。この仮想オブジェクト810'は、第1の仮
想アドレスを、ページ・テーブル740にロードされる
ページ・テーブル項目PTEにマッピングする。
明のページ・テーブル項目マネージャの機能ブロック図
を示している。たとえば、PowerPCプロセッサ1
10は、メモリ内の1ページ分のデータの物理アドレス
にマッピングすべき仮想アドレスに変換するために、有
効アドレスを生成する。プロセッサ110は、それが実
行する第1のプロセスまたはタスク/スレッドについ
て、第1のPMAP800に第1の有効アドレス720
を出して、メモリ102内の第1の実ページ712にア
クセスすることから開始する。セグメント情報モジュー
ル802は、801上で第1の有効アドレスを受け取
り、対応する第1の仮想アドレスを対応する仮想オブジ
ェクト810'を備えた第1の仮想セグメントにマッピ
ングする。この仮想オブジェクト810'は、第1の仮
想アドレスを、ページ・テーブル740にロードされる
ページ・テーブル項目PTEにマッピングする。
【0065】次にプロセッサ110は、それが実行する
第2のプロセスまたはタスク/スレッドについて、第2
のPMAP800'に第2の有効アドレス720'を出し
て、メモリ102内の同一の第1の実ページ712にア
クセスすることによって処理を続行する。セグメント情
報モジュール802'は、801'上で第2の有効アドレ
スを受け取り、本発明により、対応する第2の仮想アド
レスを第1の有効アドレス720に対する操作と同一の
対応する仮想オブジェクト810'を備えた第1の仮想
セグメントにマッピングする。仮想オブジェクト81
0'は、第2の仮想アドレスを、ページ・テーブル74
0にロードされる同一のページ・テーブル項目PTEに
マッピングする。このようにして、第2の有効アドレス
はページ・テーブル内の第1のページ・テーブル項目を
共用する。
第2のプロセスまたはタスク/スレッドについて、第2
のPMAP800'に第2の有効アドレス720'を出し
て、メモリ102内の同一の第1の実ページ712にア
クセスすることによって処理を続行する。セグメント情
報モジュール802'は、801'上で第2の有効アドレ
スを受け取り、本発明により、対応する第2の仮想アド
レスを第1の有効アドレス720に対する操作と同一の
対応する仮想オブジェクト810'を備えた第1の仮想
セグメントにマッピングする。仮想オブジェクト81
0'は、第2の仮想アドレスを、ページ・テーブル74
0にロードされる同一のページ・テーブル項目PTEに
マッピングする。このようにして、第2の有効アドレス
はページ・テーブル内の第1のページ・テーブル項目を
共用する。
【0066】本発明の仮想セグメント別名化機能は、た
とえば、同一の動的リンク・ライブラリの共用のよう
に、2つまたはそれ以上のプロセスが同一データの共用
を必要とする場合に使用することができる。たとえば、
2つのプロセスは、それぞれのスレッドを有する2つの
タスク内で実行されているとする。第1のプロセスは、
その仮想アドレス空間が定義されており、メモリ内の実
または物理ページに動的リンク・ライブラリのアドレス
を含んでいる。第2のプロセスは、第1のプロセスのア
ドレス空間を含むようにそのアドレス空間が定義されて
いる。マイクロカーネルへのVM_MAP呼出しは、動
的リンク・ライブラリのアドレスを第1のタスクから第
2のタスクにコピーする。
とえば、同一の動的リンク・ライブラリの共用のよう
に、2つまたはそれ以上のプロセスが同一データの共用
を必要とする場合に使用することができる。たとえば、
2つのプロセスは、それぞれのスレッドを有する2つの
タスク内で実行されているとする。第1のプロセスは、
その仮想アドレス空間が定義されており、メモリ内の実
または物理ページに動的リンク・ライブラリのアドレス
を含んでいる。第2のプロセスは、第1のプロセスのア
ドレス空間を含むようにそのアドレス空間が定義されて
いる。マイクロカーネルへのVM_MAP呼出しは、動
的リンク・ライブラリのアドレスを第1のタスクから第
2のタスクにコピーする。
【0067】プロセッサ内で実行されている第1のプロ
セスが動的リンク・ライブラリを含む物理ページへのア
クセスを必要とする場合、このプロセスは、第1の有効
アドレス720としてそのアドレスを出して、メモリ1
02内の物理ページ712にアクセスする。
セスが動的リンク・ライブラリを含む物理ページへのア
クセスを必要とする場合、このプロセスは、第1の有効
アドレス720としてそのアドレスを出して、メモリ1
02内の物理ページ712にアクセスする。
【0068】マイクロカーネル120と仮想メモリ・モ
ジュール124は、第1の有効アドレスに関する第1の
仮想セグメントID(VSID)を生成し、それを図6
のメモリ102内の第1のセグメント情報構造802に
格納することによって応答する。
ジュール124は、第1の有効アドレスに関する第1の
仮想セグメントID(VSID)を生成し、それを図6
のメモリ102内の第1のセグメント情報構造802に
格納することによって応答する。
【0069】次にページ・テーブル項目マネージャ19
0は、第1の仮想セグメントIDの少なくとも一部と第
1の有効アドレスをメモリ102内のページ・テーブル
740用のページ・テーブル・アドレスにマッピングす
ることによって処理を続行する。
0は、第1の仮想セグメントIDの少なくとも一部と第
1の有効アドレスをメモリ102内のページ・テーブル
740用のページ・テーブル・アドレスにマッピングす
ることによって処理を続行する。
【0070】ページ・テーブル項目マネージャ190
は、ページ・テーブル740内のページ・テーブル・ア
ドレスにページ・テーブル項目PTEを格納し、そのP
TEが第1の仮想セグメントIDと実ページ・アドレス
760の少なくとも一部を物理ページ712に含めるこ
とによって処理を続行する。
は、ページ・テーブル740内のページ・テーブル・ア
ドレスにページ・テーブル項目PTEを格納し、そのP
TEが第1の仮想セグメントIDと実ページ・アドレス
760の少なくとも一部を物理ページ712に含めるこ
とによって処理を続行する。
【0071】次にマイクロカーネル120は、ページ・
テーブル項目PTEからの実アドレスの少なくとも一部
を使用して物理ページ712にアクセスすることによっ
て処理を続行する。
テーブル項目PTEからの実アドレスの少なくとも一部
を使用して物理ページ712にアクセスすることによっ
て処理を続行する。
【0072】プロセッサ内で実行されている第2のプロ
セスが動的リンク・ライブラリを含む同一物理ページへ
のアクセスを必要とする場合、このプロセスは、第2の
有効アドレス720'としてそのアドレスを出して、メ
モリ102内の物理ページ712にアクセスする。
セスが動的リンク・ライブラリを含む同一物理ページへ
のアクセスを必要とする場合、このプロセスは、第2の
有効アドレス720'としてそのアドレスを出して、メ
モリ102内の物理ページ712にアクセスする。
【0073】次にページ・テーブル項目マネージャ19
0は、第2の有効アドレス用の別名化仮想セグメントI
Dとして第1の仮想セグメントIDをコピーし、それを
図6のメモリ102内の第2のセグメント情報構造80
2'に格納することによって処理を続行する。
0は、第2の有効アドレス用の別名化仮想セグメントI
Dとして第1の仮想セグメントIDをコピーし、それを
図6のメモリ102内の第2のセグメント情報構造80
2'に格納することによって処理を続行する。
【0074】次にページ・テーブル項目マネージャ19
0は、別名化仮想セグメントIDの少なくとも一部と第
2の有効アドレスをメモリ内のページ・テーブル740
用のページ・テーブル・アドレスにマッピングすること
によって処理を続行する。
0は、別名化仮想セグメントIDの少なくとも一部と第
2の有効アドレスをメモリ内のページ・テーブル740
用のページ・テーブル・アドレスにマッピングすること
によって処理を続行する。
【0075】次にマイクロカーネル120は、同一ペー
ジ・テーブル項目PTEからの実アドレスの少なくとも
一部を使用して、第2の有効アドレスに応答して物理ペ
ージ712にアクセスすることによって処理を続行す
る。
ジ・テーブル項目PTEからの実アドレスの少なくとも
一部を使用して、第2の有効アドレスに応答して物理ペ
ージ712にアクセスすることによって処理を続行す
る。
【0076】このようにして、第2の有効アドレス72
0は、ページ・テーブル740内の第1のページ・テー
ブル項目を第1の有効アドレス720'と共用する。
0は、ページ・テーブル740内の第1のページ・テー
ブル項目を第1の有効アドレス720'と共用する。
【0077】1. データ構造 必要なアクセス時間およびメモリ空間を削減するため
に、様々なデータ構造が設計されている。このようなデ
ータ構造は、その設計を64ビット・インプリメンテー
ションにも使用できるようにモジュール性を維持すると
いう相反する目標をも満足しようと試みるものである。
に、様々なデータ構造が設計されている。このようなデ
ータ構造は、その設計を64ビット・インプリメンテー
ションにも使用できるようにモジュール性を維持すると
いう相反する目標をも満足しようと試みるものである。
【0078】1.1 PMAP構造 タスクごとに1つずつPMAP構造が存在する。これ
は、VMモジュールからのすべての仮想アドレス要求用
のPMAP層へのアンカーである。これは以下のフィー
ルドを有する。 1.セグメントテーブルポインタ:セグメントテーブル
構造802へのポインタ801。セグメント・テーブル
構造は、PMAP構造800の一部にすることもできる
が、そのモジュール性は損なわれる。 2.単純ロック:このロックはPMAP構造をロックす
る場合に使用する。
は、VMモジュールからのすべての仮想アドレス要求用
のPMAP層へのアンカーである。これは以下のフィー
ルドを有する。 1.セグメントテーブルポインタ:セグメントテーブル
構造802へのポインタ801。セグメント・テーブル
構造は、PMAP構造800の一部にすることもできる
が、そのモジュール性は損なわれる。 2.単純ロック:このロックはPMAP構造をロックす
る場合に使用する。
【0079】1.2 セグメント・テーブル構造802 この構造は、64ビット・インプリメンテーション向け
に設計をオープンに保つことを意図するものである。3
2ビット・インプリメンテーションの場合は、これは、
それぞれが1つのセグメントを表す16個のセグメント
の情報構造からなるセットである。64ビット・インプ
リメンテーションのそのオブジェクトはハッシュ済みセ
グメント・テーブルを表す。
に設計をオープンに保つことを意図するものである。3
2ビット・インプリメンテーションの場合は、これは、
それぞれが1つのセグメントを表す16個のセグメント
の情報構造からなるセットである。64ビット・インプ
リメンテーションのそのオブジェクトはハッシュ済みセ
グメント・テーブルを表す。
【0080】1.2.1 セグメント情報構造 これは、2つのフィールドだけを備えた非常に基本的な
構造である。 1.セグメント・レジスタ:プロセッサ内のセグメント
・レジスタ725の複製。 2.仮想オブジェクトポインタ:仮想オブジェクト構造
810へのポインタ。
構造である。 1.セグメント・レジスタ:プロセッサ内のセグメント
・レジスタ725の複製。 2.仮想オブジェクトポインタ:仮想オブジェクト構造
810へのポインタ。
【0081】1.3 仮想オブジェクト構造810 これは、セグメント・モジュール802とPTEモジュ
ール818との間のインタフェース構造である。これ
は、64ビット・インプリメンテーション向けの設計変
更の緩衝として働く明瞭な分割部を用意する。この構造
は64ビット・インプリメンテーション向けに変更する
必要がない。(フィールドのサイズは変更する可能性が
あるが、構造は変更するべきではない。)
ール818との間のインタフェース構造である。これ
は、64ビット・インプリメンテーション向けの設計変
更の緩衝として働く明瞭な分割部を用意する。この構造
は64ビット・インプリメンテーション向けに変更する
必要がない。(フィールドのサイズは変更する可能性が
あるが、構造は変更するべきではない。)
【0082】セグメントに対して固有のVSIDを割り
振る必要がある。すなわち、(乱数発生ルーチンによっ
て)生成された新しいVSIDが事前割当てされていな
いことを検査する何らかの機構が必要である。VSID
上のハッシュ(VSハッシュ)を使用してこれを検出す
る。ハッシュ・テーブル817は仮想オブジェクト構造
のリンク・リストを指し示す。生成されたVSIDはV
Sハッシュ上でハッシュされ、次に一致するVSIDを
求めてリンク・リスト817が探索される。
振る必要がある。すなわち、(乱数発生ルーチンによっ
て)生成された新しいVSIDが事前割当てされていな
いことを検査する何らかの機構が必要である。VSID
上のハッシュ(VSハッシュ)を使用してこれを検出す
る。ハッシュ・テーブル817は仮想オブジェクト構造
のリンク・リストを指し示す。生成されたVSIDはV
Sハッシュ上でハッシュされ、次に一致するVSIDを
求めてリンク・リスト817が探索される。
【0083】仮想セグメント情報には以下の項目があ
る。 1.待ち行列ポインタ:VSハッシュ・リスト内の待ち
行列要素ポインタ。 2.VSID:固有の仮想セグメントID。 3.参照カウント:この仮想オブジェクト構造を使用し
てセグメント情報構造の数を表す。(セグメントの別名
化に有用。) 4.キャッシュ済みPTEリスト:キャッシュ済みPT
E(取り戻したPTE)のリンク・リストへのポイン
タ。 5.PTEカウント:このVSID用のPTEのカウン
ト。
る。 1.待ち行列ポインタ:VSハッシュ・リスト内の待ち
行列要素ポインタ。 2.VSID:固有の仮想セグメントID。 3.参照カウント:この仮想オブジェクト構造を使用し
てセグメント情報構造の数を表す。(セグメントの別名
化に有用。) 4.キャッシュ済みPTEリスト:キャッシュ済みPT
E(取り戻したPTE)のリンク・リストへのポイン
タ。 5.PTEカウント:このVSID用のPTEのカウン
ト。
【0084】1.4 キャッシュ済みPTE構造820 ページ・テーブルから項目を取り戻すたびに、その項目
は仮想オブジェクト構造およびページ・アンカー構造の
キャッシュ済みPTEリンク・リスト内のキャッシュ済
みPTEとして入力される。キャッシュ済みPTEはま
だ有効なマッピングなので、それについてすべてのPT
E操作も実行される。このマッピングに関するページ不
在が存在する場合、キャッシュ済みPTEは活動ページ
・テーブルに入力して戻され、キャッシュ済みPTEリ
ストから除去される。キャッシュ済みPTEには以下の
要素がある。 1.VS待ち行列ポインタ:仮想オブジェクト・キャッ
シュ済みPTEリスト内の待ち行列要素ポインタ。 2.仮想ページ番号:この番号は所与のVSID用のP
TEを明確に識別する。 3.PTEワード0:取り戻したPTE項目のワード
0。 4.PTEワード1:取り戻したPTE項目のワード
1。 5.PA待ち行列ポインタ:ページ・アンカー・リスト
内の待ち行列要素。 6.PTEGポインタ:この項目の取戻し元であるハッ
シュ・テーブル内のポインタ。キャッシュ済み項目を再
入力するときに空間を探すためのヒントとして機能す
る。 7.固定フラグ:これはPTEの配線状態を表す。
は仮想オブジェクト構造およびページ・アンカー構造の
キャッシュ済みPTEリンク・リスト内のキャッシュ済
みPTEとして入力される。キャッシュ済みPTEはま
だ有効なマッピングなので、それについてすべてのPT
E操作も実行される。このマッピングに関するページ不
在が存在する場合、キャッシュ済みPTEは活動ページ
・テーブルに入力して戻され、キャッシュ済みPTEリ
ストから除去される。キャッシュ済みPTEには以下の
要素がある。 1.VS待ち行列ポインタ:仮想オブジェクト・キャッ
シュ済みPTEリスト内の待ち行列要素ポインタ。 2.仮想ページ番号:この番号は所与のVSID用のP
TEを明確に識別する。 3.PTEワード0:取り戻したPTE項目のワード
0。 4.PTEワード1:取り戻したPTE項目のワード
1。 5.PA待ち行列ポインタ:ページ・アンカー・リスト
内の待ち行列要素。 6.PTEGポインタ:この項目の取戻し元であるハッ
シュ・テーブル内のポインタ。キャッシュ済み項目を再
入力するときに空間を探すためのヒントとして機能す
る。 7.固定フラグ:これはPTEの配線状態を表す。
【0085】1.5 S/W PTE構造830 ページ・テーブル内のH/W PTEごとに1つずつS
/W PTE構造が存在する。その主な目的は、所与の
物理ページ用のマッピング・チェーンを維持することで
ある。S/W PTEはH/W PTEと同じように構
成されている。S/W PTEとH/W PTEは、
(メモリを節約するために)ポインタではなく索引を使
用して参照される。この索引は、PTE配列内のPTE
項目の数であり、PTEアドレスを計算するためにPT
Eのstart_addressとともに使用することができる。ま
た、S/W PTE索引があれば、対応するH/W P
TEが同一索引に存在し、その逆も可能になる。S/W
PTEは以下の情報を有する。 1.仮想ページ番号:この番号は所与のVSID用のP
TEを明確に識別する。 2.S/W PTE索引:所与の物理ページ用のPTE
マッピングのチェーン内の次のS/W PTEへのポイ
ンタ(索引)。 3.固定:PTEが固定されているかどうかを表すフラ
グ。 4.VSポインタ:仮想セグメント構造へのポインタ。
これは、取り戻した項目のキャッシュ先になる適切な仮
想オブジェクト構造を見つけるためにPTE取戻し時に
使用する。このフィールドは除去される(その結果、相
当なメモリ節約になる)可能性があり、VSハッシュに
ハッシュすることによって仮想オブジェクトを見つける
ことができる。
/W PTE構造が存在する。その主な目的は、所与の
物理ページ用のマッピング・チェーンを維持することで
ある。S/W PTEはH/W PTEと同じように構
成されている。S/W PTEとH/W PTEは、
(メモリを節約するために)ポインタではなく索引を使
用して参照される。この索引は、PTE配列内のPTE
項目の数であり、PTEアドレスを計算するためにPT
Eのstart_addressとともに使用することができる。ま
た、S/W PTE索引があれば、対応するH/W P
TEが同一索引に存在し、その逆も可能になる。S/W
PTEは以下の情報を有する。 1.仮想ページ番号:この番号は所与のVSID用のP
TEを明確に識別する。 2.S/W PTE索引:所与の物理ページ用のPTE
マッピングのチェーン内の次のS/W PTEへのポイ
ンタ(索引)。 3.固定:PTEが固定されているかどうかを表すフラ
グ。 4.VSポインタ:仮想セグメント構造へのポインタ。
これは、取り戻した項目のキャッシュ先になる適切な仮
想オブジェクト構造を見つけるためにPTE取戻し時に
使用する。このフィールドは除去される(その結果、相
当なメモリ節約になる)可能性があり、VSハッシュに
ハッシュすることによって仮想オブジェクトを見つける
ことができる。
【0086】1.6 ページ・アンカー構造840 物理ページごとに1つずつ、この構造の配列が存在す
る。この構造840は、所与の物理ページ用に存在しう
る複数のマッピング(PTE)用のアンカーとして機能
する。この構造は以下の情報を有する。 1.R/C状況:参照ビットと変更済みビットの状況。 2.S/W PTE索引:この物理ページ用の有効なマ
ッピングを有するS/WPTEへの索引。ただし、同じ
索引を使用してH/W PTEにアクセスできることに
留意されたい。 3.キャッシュ済みPTEリスト・ポインタ:この物理
ページ用のキャッシュ済みPTEへのポインタ。
る。この構造840は、所与の物理ページ用に存在しう
る複数のマッピング(PTE)用のアンカーとして機能
する。この構造は以下の情報を有する。 1.R/C状況:参照ビットと変更済みビットの状況。 2.S/W PTE索引:この物理ページ用の有効なマ
ッピングを有するS/WPTEへの索引。ただし、同じ
索引を使用してH/W PTEにアクセスできることに
留意されたい。 3.キャッシュ済みPTEリスト・ポインタ:この物理
ページ用のキャッシュ済みPTEへのポインタ。
【0087】2. インタフェース 3種類のインタフェースが存在する。第1のタイプは、
入力として物理アドレスを取る。第2のタイプは、入力
としてPMAPと有効アドレスを取る。第3のタイプは
セグメントとともに機能する。
入力として物理アドレスを取る。第2のタイプは、入力
としてPMAPと有効アドレスを取る。第3のタイプは
セグメントとともに機能する。
【0088】2.2 PMAP_CLEAR_REFERENCE 2.2.1 説明 このインタフェースは、所与の物理ページ用のすべての
マッピング(PTE)用の参照ビットをクリアする。 2.2.2 構文 void ptc_clear_reference(pa_t pa) 2.2.3 パラメータ pa 物理アドレス(物理ページ番号) 2.2.4 戻り値 2.2.5 論理 paを使用してそのページ用のページ・アンカー構造に到
達する。ページアンカー内の参照ビットをクリアする。
ページアンカー構造(そのページ用のマッピング)上の
S/W PTEリストを走査し、H/W PTEから参
照ビットをクリアする。ページアンカー構造(そのペー
ジ用に取り戻したマッピング)上のキャッシュ済みPT
Eリストを走査し、参照ビットをクリアし、終了する。
マッピング(PTE)用の参照ビットをクリアする。 2.2.2 構文 void ptc_clear_reference(pa_t pa) 2.2.3 パラメータ pa 物理アドレス(物理ページ番号) 2.2.4 戻り値 2.2.5 論理 paを使用してそのページ用のページ・アンカー構造に到
達する。ページアンカー内の参照ビットをクリアする。
ページアンカー構造(そのページ用のマッピング)上の
S/W PTEリストを走査し、H/W PTEから参
照ビットをクリアする。ページアンカー構造(そのペー
ジ用に取り戻したマッピング)上のキャッシュ済みPT
Eリストを走査し、参照ビットをクリアし、終了する。
【0089】2.3 PMAP_IS_MODIFIED 2.3.1 説明 このインタフェースは、所与の物理ページ用のPTEを
走査し、変更済みビットの状況を返す。PTEのいずれ
かに変更済みビットが設定されている場合、そのページ
は修正されたものと見なされる。 2.3.2 構文 boolean ptc_is_modified(pa_t pa) 2.3.3 パラメータ pa 物理アドレス(物理ページ番号) 2.3.4 戻り値 TRUE 物理ページが修正された FALSE 物理ページが修正されていない 2.3.5 論理 paを使用してそのページ用のページ・アンカー構造に到
達する。ページアンカー内の変更済みビットが設定され
ている場合はTRUEを返す。(ページアンカー構造に変更
済みビットが設定されている場合、それはいずれかのP
TEに明確に設定される。) ページアンカー構造(そのページ用のマッピング)上の
S/W PTEを走査する。いずれかのPTEに変更済
みビットが設定されている場合は、ページアンカー構造
に変更済みビットを設定し、TRUEを返す。それ以外の場
合は、FALSEを返す。ページアンカー構造(そのページ
用のマッピング)上のキャッシュ済みPTEリストを走
査する。いずれかのPTEに変更済みビットが設定され
ている場合は、ページアンカー構造に変更済みビットを
設定し、TRUEを返す。それ以外の場合は、FALSEを返
す。
走査し、変更済みビットの状況を返す。PTEのいずれ
かに変更済みビットが設定されている場合、そのページ
は修正されたものと見なされる。 2.3.2 構文 boolean ptc_is_modified(pa_t pa) 2.3.3 パラメータ pa 物理アドレス(物理ページ番号) 2.3.4 戻り値 TRUE 物理ページが修正された FALSE 物理ページが修正されていない 2.3.5 論理 paを使用してそのページ用のページ・アンカー構造に到
達する。ページアンカー内の変更済みビットが設定され
ている場合はTRUEを返す。(ページアンカー構造に変更
済みビットが設定されている場合、それはいずれかのP
TEに明確に設定される。) ページアンカー構造(そのページ用のマッピング)上の
S/W PTEを走査する。いずれかのPTEに変更済
みビットが設定されている場合は、ページアンカー構造
に変更済みビットを設定し、TRUEを返す。それ以外の場
合は、FALSEを返す。ページアンカー構造(そのページ
用のマッピング)上のキャッシュ済みPTEリストを走
査する。いずれかのPTEに変更済みビットが設定され
ている場合は、ページアンカー構造に変更済みビットを
設定し、TRUEを返す。それ以外の場合は、FALSEを返
す。
【0090】2.4 PMAP_IS_REFERENCED 2.4.1 説明 このインタフェースは、所与の物理ページ用のPTEを
走査し、参照ビットの状況を返す。PTEのいずれかに
参照ビットが設定されている場合、そのページは参照さ
れたものと見なされる。 2.4.2 構文 boolean ptc_is_referenced(pa_t pa) 2.4.3 パラメータ pa 物理アドレス(物理ページ番号) 2.4.4 戻り値 TRUE 物理ページが参照された FALSE 物理ページが参照されていない 2.4.5 論理 paを使用してそのページ用のページ・アンカー構造に到
達する。ページアンカー内の参照ビットが設定されてい
る場合はTRUEを返す。(ページアンカー構造に参照ビッ
トが設定されている場合、それはいずれかのPTEに明
確に設定される。) ページアンカー構造(そのページ用のマッピング)上の
S/W PTEを走査する。いずれかのPTEに参照ビ
ットが設定されている場合は、ページアンカー構造に参
照ビットを設定し、TRUEを返す。それ以外の場合は、FA
LSEを返す。ページアンカー構造(そのページ用のマッ
ピング)上のキャッシュ済みPTEリストを走査する。
いずれかのPTEに参照ビットが設定されている場合
は、ページアンカー構造に参照ビットを設定し、TRUEを
返す。それ以外の場合は、FALSEを返す。
走査し、参照ビットの状況を返す。PTEのいずれかに
参照ビットが設定されている場合、そのページは参照さ
れたものと見なされる。 2.4.2 構文 boolean ptc_is_referenced(pa_t pa) 2.4.3 パラメータ pa 物理アドレス(物理ページ番号) 2.4.4 戻り値 TRUE 物理ページが参照された FALSE 物理ページが参照されていない 2.4.5 論理 paを使用してそのページ用のページ・アンカー構造に到
達する。ページアンカー内の参照ビットが設定されてい
る場合はTRUEを返す。(ページアンカー構造に参照ビッ
トが設定されている場合、それはいずれかのPTEに明
確に設定される。) ページアンカー構造(そのページ用のマッピング)上の
S/W PTEを走査する。いずれかのPTEに参照ビ
ットが設定されている場合は、ページアンカー構造に参
照ビットを設定し、TRUEを返す。それ以外の場合は、FA
LSEを返す。ページアンカー構造(そのページ用のマッ
ピング)上のキャッシュ済みPTEリストを走査する。
いずれかのPTEに参照ビットが設定されている場合
は、ページアンカー構造に参照ビットを設定し、TRUEを
返す。それ以外の場合は、FALSEを返す。
【0091】2.5 PMAP_PAGE_PROTECT 2.5.1 説明 このインタフェースは、所与の物理ページ用のPTEを
走査し、新しい保護設定でそのPTEを更新する。 2.5.2 構文 2.5.3 パラメータ pa 物理アドレス(物理ページ番号) prot 所望の保護設定 2.5.4 戻り値 2.5.5 論理 paを使用してそのページ用のページ・アンカー構造に到
達する。ページアンカー構造(そのページ用のマッピン
グ)上のS/W PTEを走査する。新しい保護設定で
H/W PTE構造を更新する。TLBキャッシュ内の
PTEを無効にする。ページアンカー構造(そのページ
用のマッピング)上のキャッシュ済みPTEリストを走
査する。新しい保護設定でキャッシュ済みPTEを更新
する。TLBキャッシュ内のPTEを無効にする。
走査し、新しい保護設定でそのPTEを更新する。 2.5.2 構文 2.5.3 パラメータ pa 物理アドレス(物理ページ番号) prot 所望の保護設定 2.5.4 戻り値 2.5.5 論理 paを使用してそのページ用のページ・アンカー構造に到
達する。ページアンカー構造(そのページ用のマッピン
グ)上のS/W PTEを走査する。新しい保護設定で
H/W PTE構造を更新する。TLBキャッシュ内の
PTEを無効にする。ページアンカー構造(そのページ
用のマッピング)上のキャッシュ済みPTEリストを走
査する。新しい保護設定でキャッシュ済みPTEを更新
する。TLBキャッシュ内のPTEを無効にする。
【0092】 2.6 PMAP_ZERO_PART_PAGEおよびPMAP_ZERO_PAGE 2.6.1 説明 このインタフェースは、所与のオフセットから所与の長
さ分の物理ページをゼロにする。PMAP_ZERO_PAGEは、オ
フセットが0で長さが4kである、この関数の特殊な場
合である。 2.6.2 構文 void pmap_zero_part_page (pa_t pa. vm_offset_t offset. vm_size_t len) #define void_pmap_zero_page pmap_zero_part_page (pa.0.4096) 2.6.3 パラメータ src_pa ソース・アドレスの物理アドレス(物理ペ
ージ番号) src_offset ソース・ページの先頭からのページ内のオ
フセット dst_pa 宛先アドレスの物理アドレス(物理ページ
番号) dst_offset 宛先ページの先頭からのページ内のオフセ
ット len コピーすべき区域の長さ 2.6.4 戻り値 2.6.5 論理所与のソース物理アドレスおよび宛先物理
アドレス用の仮想マッピング(PTE)を作成する。
(これは、カーネルのPMAP内にそのページを入力す
ることによって行われる。)ソース仮想区域を宛先仮想
区域にコピーする。
さ分の物理ページをゼロにする。PMAP_ZERO_PAGEは、オ
フセットが0で長さが4kである、この関数の特殊な場
合である。 2.6.2 構文 void pmap_zero_part_page (pa_t pa. vm_offset_t offset. vm_size_t len) #define void_pmap_zero_page pmap_zero_part_page (pa.0.4096) 2.6.3 パラメータ src_pa ソース・アドレスの物理アドレス(物理ペ
ージ番号) src_offset ソース・ページの先頭からのページ内のオ
フセット dst_pa 宛先アドレスの物理アドレス(物理ページ
番号) dst_offset 宛先ページの先頭からのページ内のオフセ
ット len コピーすべき区域の長さ 2.6.4 戻り値 2.6.5 論理所与のソース物理アドレスおよび宛先物理
アドレス用の仮想マッピング(PTE)を作成する。
(これは、カーネルのPMAP内にそのページを入力す
ることによって行われる。)ソース仮想区域を宛先仮想
区域にコピーする。
【0093】 2.7 PMAP_COPY_PART_PAGEおよびPMAP_COPY_PAGE 2.7.1 説明 このインタフェースは、ある物理ページの1ブロックを
別の物理ページにコピーする。PMAP_ZERO_PAGEは、ブロ
ックの先頭が0で長さが4kである特殊な場合である。 2.7.2 構文 void pmap_copy_part_page (pa_t src-pa. vm_offset_t src_offset. pa_t dst_pa. vm_offset_t dst_offset. vm_size_t len) #define pmap_copy_page pmap_copy_part_page (src_pa.0.4096) 2.7.3 パラメータ pa 物理アドレス(物理ページ番号) offset ページの先頭からのページ内のオフセット len ゼロにすべき区域の長さ 2.7.4 戻り値 2.7.5 論理 所与のpa用の仮想マッピング(PTE)を作成する。
(これは、カーネルのPMAP内にそのページを入力す
ることによって行われる。)所与のオフセットからの所
与の長さ分の仮想ページをゼロにする。
別の物理ページにコピーする。PMAP_ZERO_PAGEは、ブロ
ックの先頭が0で長さが4kである特殊な場合である。 2.7.2 構文 void pmap_copy_part_page (pa_t src-pa. vm_offset_t src_offset. pa_t dst_pa. vm_offset_t dst_offset. vm_size_t len) #define pmap_copy_page pmap_copy_part_page (src_pa.0.4096) 2.7.3 パラメータ pa 物理アドレス(物理ページ番号) offset ページの先頭からのページ内のオフセット len ゼロにすべき区域の長さ 2.7.4 戻り値 2.7.5 論理 所与のpa用の仮想マッピング(PTE)を作成する。
(これは、カーネルのPMAP内にそのページを入力す
ることによって行われる。)所与のオフセットからの所
与の長さ分の仮想ページをゼロにする。
【0094】2.8 PMAP_ENTER 2.8.1 説明 このインタフェースは、PMAP構造内に仮想/物理マ
ッピングを確立する。これは、新しい値で既存のPTE
を更新するか、または新しいPTEを作成する。 2.8.2 構文 2.8.3 パラメータ pmap pmap構造のアドレス ea 有効アドレス pa 物理アドレス(物理ページ番号) wired ページが固定されているかどうかを示すフラグ 2.8.4 戻り値 2.8.5 論理 VSIDとeaをハッシュしてPTEG(H/W構造内の
PTEグループ)に達し、既存のマッピングを探索す
る。同一paを有するマッピングが見つかった場合、保護
ビットと固定ビットを更新し、このPTE用のTLBを
無効にし、終了する。異なるpsを有するマッピングが存
在する場合は、前のpa用のページ・アンカー・リストか
らS/W PTEのリンクを解除し、それを新しいpaの
ページ・アンカー・リストに挿入し、このPTE用のT
LBを無効にし、終了する。項目が見つからない場合
は、その項目がキャッシュされている可能性がある。仮
想オブジェクトのキャッシュ済みPTEリストを探索し
て既存のマッピングを探す。同一paを有するマッピング
が見つかった場合、保護ビットと固定ビットを更新し、
このPTE用のTLBを無効にし、終了する。異なるpa
を有するマッピングが存在する場合は、前のpa用のペー
ジ・アンカー・リストからキャッシュ済みPTEのリン
クを解除し、それを新しいpaのページ・アンカー・リス
トに挿入し、このPTE用のTLBを無効にし、終了す
る。その項目を見つけることができなかった場合は、新
しい項目が作成されることを意味する。eaを使用してセ
グメント情報構造を選択する。既存のセグメント情報構
造がない(このセグメントによってマッピングされた2
56MB範囲で初めて参照する)場合は、固有のVSI
Dを生成し、セグメント情報構造と仮想オブジェクト構
造を割り振り、それらを正しくリンクする。VSIDと
eaを使用してPTEGに達し、空のスロットを探索す
る。空のスロットが見つからない場合は、(設計上の問
題の項に記載した取戻しアルゴリズムによって選択され
た)適当な項目を取り戻す。仮想オブジェクト構造とペ
ージ・アンカー構造のキャッシュ済みPTEリストに取
り戻した項目を入力する。ページ・アンカー構造からこ
のPTE用のS/WPTEのリンクを解除する。今後の
参照のためにキャッシュ済みPTEにPTEGアドレス
を格納する。取戻しによって空のスロットを見つけるか
作成した後、H/W PTE構造とS/W PTE構造
にマッピング情報を入力する。また、ページ・アンカー
構造からPTE待ち行列にS/W PTEを入力し、仮
想オブジェクト構造内のカウントとPTEカウントを増
分する。
ッピングを確立する。これは、新しい値で既存のPTE
を更新するか、または新しいPTEを作成する。 2.8.2 構文 2.8.3 パラメータ pmap pmap構造のアドレス ea 有効アドレス pa 物理アドレス(物理ページ番号) wired ページが固定されているかどうかを示すフラグ 2.8.4 戻り値 2.8.5 論理 VSIDとeaをハッシュしてPTEG(H/W構造内の
PTEグループ)に達し、既存のマッピングを探索す
る。同一paを有するマッピングが見つかった場合、保護
ビットと固定ビットを更新し、このPTE用のTLBを
無効にし、終了する。異なるpsを有するマッピングが存
在する場合は、前のpa用のページ・アンカー・リストか
らS/W PTEのリンクを解除し、それを新しいpaの
ページ・アンカー・リストに挿入し、このPTE用のT
LBを無効にし、終了する。項目が見つからない場合
は、その項目がキャッシュされている可能性がある。仮
想オブジェクトのキャッシュ済みPTEリストを探索し
て既存のマッピングを探す。同一paを有するマッピング
が見つかった場合、保護ビットと固定ビットを更新し、
このPTE用のTLBを無効にし、終了する。異なるpa
を有するマッピングが存在する場合は、前のpa用のペー
ジ・アンカー・リストからキャッシュ済みPTEのリン
クを解除し、それを新しいpaのページ・アンカー・リス
トに挿入し、このPTE用のTLBを無効にし、終了す
る。その項目を見つけることができなかった場合は、新
しい項目が作成されることを意味する。eaを使用してセ
グメント情報構造を選択する。既存のセグメント情報構
造がない(このセグメントによってマッピングされた2
56MB範囲で初めて参照する)場合は、固有のVSI
Dを生成し、セグメント情報構造と仮想オブジェクト構
造を割り振り、それらを正しくリンクする。VSIDと
eaを使用してPTEGに達し、空のスロットを探索す
る。空のスロットが見つからない場合は、(設計上の問
題の項に記載した取戻しアルゴリズムによって選択され
た)適当な項目を取り戻す。仮想オブジェクト構造とペ
ージ・アンカー構造のキャッシュ済みPTEリストに取
り戻した項目を入力する。ページ・アンカー構造からこ
のPTE用のS/WPTEのリンクを解除する。今後の
参照のためにキャッシュ済みPTEにPTEGアドレス
を格納する。取戻しによって空のスロットを見つけるか
作成した後、H/W PTE構造とS/W PTE構造
にマッピング情報を入力する。また、ページ・アンカー
構造からPTE待ち行列にS/W PTEを入力し、仮
想オブジェクト構造内のカウントとPTEカウントを増
分する。
【0095】2.9 PMAP_EXTRACT 2.9.1 説明 このインタフェースは、所与のpmapおよび有効アドレス
に関連する物理アドレスを返す。 2.9.2 構文 2.9.3 パラメータ pmap pmap構造のアドレス ea 有効アドレス 2.9.4 戻り値 pa_t pmapおよびeaに対応するページの物理アドレス 2.9.5 論理 所与のpmapおよびea用のVSIDを見つける。VSID
とeaをハッシュしてH/W PTEのアドレスを獲得す
る。そのPTE用の1次ハッシュと2次ハッシュを探索
する。いずれかのPTEがこのeaと一致する場合は、物
理アドレスを返して終了する。仮想オブジェクト構造上
のキャッシュ済みPTEリストを走査する。いずれかの
PTEがこのeaと一致する場合は、物理アドレスを返し
て終了する。
に関連する物理アドレスを返す。 2.9.2 構文 2.9.3 パラメータ pmap pmap構造のアドレス ea 有効アドレス 2.9.4 戻り値 pa_t pmapおよびeaに対応するページの物理アドレス 2.9.5 論理 所与のpmapおよびea用のVSIDを見つける。VSID
とeaをハッシュしてH/W PTEのアドレスを獲得す
る。そのPTE用の1次ハッシュと2次ハッシュを探索
する。いずれかのPTEがこのeaと一致する場合は、物
理アドレスを返して終了する。仮想オブジェクト構造上
のキャッシュ済みPTEリストを走査する。いずれかの
PTEがこのeaと一致する場合は、物理アドレスを返し
て終了する。
【0096】2.10 PMAP_PROTECT 2.10.1 説明 このインタフェースは、所与の有効アドレス範囲用の保
護設定を変更する。 2.10.2 構文 2.10.3 パラメータ pmap pmap構造のアドレス start 有効アドレス範囲の開始 end 有効アドレス範囲の終了 prot 新しい保護設定 2.10.4 戻り値 2.10.5 論理 所与のpmapおよびea用のVSIDを見つける。VSID
とeaをハッシュしてPTEアドレスのアドレスを獲得す
る。eaと一致するPTE用のPTEグループ(1次およ
び2次)を探索し、H/W PTEの保護ビットを更新
する。PTEが見つからない場合は、そのVSID用の
キャッシュ済みPTEリストを探索し、キャッシュ済み
PTEが見つかった場合にそのPTE用の保護ビットを
更新する。また、TLBキャッシュ内のPTEを無効に
する。 2.10.6 注 PTEは直接アクセスされるわけではないので、このイ
ンタフェースはPowerPCのPMAPの有効利用に
は役に立たない。ある程度の効率でこれを実現するに
は、必要メモリ容量の点でかなりのオーバヘッドになる
各仮想オブジェクトごとにPTEのリンク・リストが必
要である。また、pmap_enter時に余分なサイクルが追加
されることにもなる。推奨インタフェースは以下の通り
である。
護設定を変更する。 2.10.2 構文 2.10.3 パラメータ pmap pmap構造のアドレス start 有効アドレス範囲の開始 end 有効アドレス範囲の終了 prot 新しい保護設定 2.10.4 戻り値 2.10.5 論理 所与のpmapおよびea用のVSIDを見つける。VSID
とeaをハッシュしてPTEアドレスのアドレスを獲得す
る。eaと一致するPTE用のPTEグループ(1次およ
び2次)を探索し、H/W PTEの保護ビットを更新
する。PTEが見つからない場合は、そのVSID用の
キャッシュ済みPTEリストを探索し、キャッシュ済み
PTEが見つかった場合にそのPTE用の保護ビットを
更新する。また、TLBキャッシュ内のPTEを無効に
する。 2.10.6 注 PTEは直接アクセスされるわけではないので、このイ
ンタフェースはPowerPCのPMAPの有効利用に
は役に立たない。ある程度の効率でこれを実現するに
は、必要メモリ容量の点でかなりのオーバヘッドになる
各仮想オブジェクトごとにPTEのリンク・リストが必
要である。また、pmap_enter時に余分なサイクルが追加
されることにもなる。推奨インタフェースは以下の通り
である。
【0097】2.11 PMAP_REMOVE 2.11.1 説明 このインタフェースは、所与のpmapおよび有効アドレス
範囲用のPTEを除去する。 2.11.2 構文 2.11.3 パラメータ pmap pmap構造のアドレス start 有効アドレス範囲の開始 end 有効アドレス範囲の終了 prot 新しい保護設定 2.11.4 戻り値 2.11.5 論理 アドレス範囲が1つのセグメントを表し、仮想オブジェ
クト内の参照カウントが1より大きい(この仮想オブジ
ェクトをマッピングするセグメントが複数存在する)場
合、参照カウントを減分し、セグメント情報構造と仮想
オブジェクト構造のリンクを解除し、終了するだけであ
る。所与のpmapおよびea用のVSIDを見つける。VS
IDとeaをハッシュしてPTEアドレスを獲得する。ea
と一致するPTE用のPTEグループ(1次および2
次)を探索し、PTE項目を無効にする。ページアンカ
ー・リストからPTEを除去し、項目用のTLBを無効
にする。PTEテーブルで項目が見つからない場合は、
仮想オブジェクトのキャッシュ済みPTEリスト内のP
TEを探索する。項目が見つかった場合は、それを仮想
オブジェクト構造とページアンカー構造のキャッシュ済
みリストから除去し、PTE用のTLBを無効にする。
終了アドレスに達するまで開始アドレスを4Kずつ増分
することにより、上記の手順を繰り返す。 2.11.6 注 PTEは直接アクセスされるわけではないので、このイ
ンタフェースはPowerPCのPMAPの有効利用に
は役に立たない。ある程度の効率でこれを実現するに
は、必要メモリ容量の点でかなりのオーバヘッドになる
各仮想オブジェクトごとにPTEのリンク・リストが必
要である。また、pmap_enter時に余分なサイクルが追加
されることにもなる。推奨インタフェースは以下の通り
である。
範囲用のPTEを除去する。 2.11.2 構文 2.11.3 パラメータ pmap pmap構造のアドレス start 有効アドレス範囲の開始 end 有効アドレス範囲の終了 prot 新しい保護設定 2.11.4 戻り値 2.11.5 論理 アドレス範囲が1つのセグメントを表し、仮想オブジェ
クト内の参照カウントが1より大きい(この仮想オブジ
ェクトをマッピングするセグメントが複数存在する)場
合、参照カウントを減分し、セグメント情報構造と仮想
オブジェクト構造のリンクを解除し、終了するだけであ
る。所与のpmapおよびea用のVSIDを見つける。VS
IDとeaをハッシュしてPTEアドレスを獲得する。ea
と一致するPTE用のPTEグループ(1次および2
次)を探索し、PTE項目を無効にする。ページアンカ
ー・リストからPTEを除去し、項目用のTLBを無効
にする。PTEテーブルで項目が見つからない場合は、
仮想オブジェクトのキャッシュ済みPTEリスト内のP
TEを探索する。項目が見つかった場合は、それを仮想
オブジェクト構造とページアンカー構造のキャッシュ済
みリストから除去し、PTE用のTLBを無効にする。
終了アドレスに達するまで開始アドレスを4Kずつ増分
することにより、上記の手順を繰り返す。 2.11.6 注 PTEは直接アクセスされるわけではないので、このイ
ンタフェースはPowerPCのPMAPの有効利用に
は役に立たない。ある程度の効率でこれを実現するに
は、必要メモリ容量の点でかなりのオーバヘッドになる
各仮想オブジェクトごとにPTEのリンク・リストが必
要である。また、pmap_enter時に余分なサイクルが追加
されることにもなる。推奨インタフェースは以下の通り
である。
【0098】2.12 PMAP_RESIDENT_COUNT 2.12.1 説明 このインタフェースは、所与のpmap用のPTEの数を返
す。 2.12.2 構文 count_t pmap_resident_count (pmap_t pmap. 2.12.3 パラメータ pmap pmap構造のアドレス 2.12.4 戻り値 所与のpmap用の既存のPTEの数 2.12.5 論理 pmap内の各セグメントごとに仮想オブジェクト構造のP
TEカウントを累積する。合計値を返す。終了アドレス
に達するまで開始アドレスを4Kずつ増分することによ
り、上記の手順を繰り返す。
す。 2.12.2 構文 count_t pmap_resident_count (pmap_t pmap. 2.12.3 パラメータ pmap pmap構造のアドレス 2.12.4 戻り値 所与のpmap用の既存のPTEの数 2.12.5 論理 pmap内の各セグメントごとに仮想オブジェクト構造のP
TEカウントを累積する。合計値を返す。終了アドレス
に達するまで開始アドレスを4Kずつ増分することによ
り、上記の手順を繰り返す。
【0099】2.13 PMAP_SEG_EXTRACT 2.13.1 説明 このインタフェースは、所与のpmapおよび有効アドレス
用のVSIDを返す。 2.13.2 構文 2.13.3 パラメータ pmap pmap構造のアドレス ea 有効アドレス 2.13.4 戻り値 有効アドレスに関連する仮想セグメントID 2.13.5 論理 pmapとeaアドレスを使用して仮想オブジェクト構造にア
クセスする。仮想オブジェクトからのVSIDを返す。
用のVSIDを返す。 2.13.2 構文 2.13.3 パラメータ pmap pmap構造のアドレス ea 有効アドレス 2.13.4 戻り値 有効アドレスに関連する仮想セグメントID 2.13.5 論理 pmapとeaアドレスを使用して仮想オブジェクト構造にア
クセスする。仮想オブジェクトからのVSIDを返す。
【0100】2.14 PMAP_SEG_ENTER 2.14.1 説明 このインタフェースは、所与のpmapにセグメント・マッ
ピングを入力する。 2.14.2 構文 2.14.3 パラメータ pmap pmap構造のアドレス ea 有効アドレス vsid 仮想セグメントID 2.14.4 戻り値 有効アドレスに関連する仮想セグメントID 2.14.5 論理 仮想オブジェクト・ハッシュを介して所与のvsid用の仮
想オブジェクトを見つける。所与のpmapとea用のセグメ
ント情報構造を見つける。仮想オブジェクトをセグメン
ト情報構造にリンクし、仮想オブジェクト内の参照カウ
ントを増分する。
ピングを入力する。 2.14.2 構文 2.14.3 パラメータ pmap pmap構造のアドレス ea 有効アドレス vsid 仮想セグメントID 2.14.4 戻り値 有効アドレスに関連する仮想セグメントID 2.14.5 論理 仮想オブジェクト・ハッシュを介して所与のvsid用の仮
想オブジェクトを見つける。所与のpmapとea用のセグメ
ント情報構造を見つける。仮想オブジェクトをセグメン
ト情報構造にリンクし、仮想オブジェクト内の参照カウ
ントを増分する。
【0101】2.15 PMAP_SEG_REMOVE 2.15.1 説明 このインタフェースは、所与のpmap内のセグメント・マ
ッピングを除去する。 2.15.2 構文 2.15.3 パラメータ pmap pmap構造のアドレス ea 有効アドレス 2.15.4 戻り値 2.15.5 論理 所与のpmapとea用の仮想オブジェクトとセグメント情報
構造を見つける。仮想オブジェクト内の参照カウントが
1より大きい場合は、セグメント情報の仮想オブジェク
トへのリンクを除去し、仮想オブジェクト内の参照カウ
ントを減分する。これが仮想オブジェクト用の最後のセ
グメントであれば、仮想オブジェクトと関連のPTEを
除去する。
ッピングを除去する。 2.15.2 構文 2.15.3 パラメータ pmap pmap構造のアドレス ea 有効アドレス 2.15.4 戻り値 2.15.5 論理 所与のpmapとea用の仮想オブジェクトとセグメント情報
構造を見つける。仮想オブジェクト内の参照カウントが
1より大きい場合は、セグメント情報の仮想オブジェク
トへのリンクを除去し、仮想オブジェクト内の参照カウ
ントを減分する。これが仮想オブジェクト用の最後のセ
グメントであれば、仮想オブジェクトと関連のPTEを
除去する。
【0102】2.16 PMAP_CHAPTER_MAP 2.16.1 説明 このインタフェースは、タスクのセグメントを別のタス
クにマッピングする。これは、PowerPC固有のパ
フォーマンス強化インタフェースである。 2.16.2 構文 2.16.3 パラメータ src_pmap ソース・タスクのPMAP構造のアドレス src_ea ソース・タスクのアドレス空間内の有効ア
ドレス dst_pmap 宛先タスクのPMAP構造のアドレス dst_ea 宛先タスクのアドレス空間内の有効アドレ
ス 1つのセグメントだけが再マッピングされる。これは、
src_eaとdst_eaがセグメント境界上にあり、VMがセグ
メント全体のマッピングを希望していることを意味す
る。 2.16.4 戻り値 2.16.5 論理 PMAPと有効アドレスが与えられたら、ソース・タス
ク用の仮想オブジェクトを見つける。(PMAPとEA
が与えられたら)宛先タスク用のセグメント情報構造を
作成し、それをソースの仮想オブジェクトにリンクす
る。また、仮想オブジェクト構造内の参照カウントも増
分する。
クにマッピングする。これは、PowerPC固有のパ
フォーマンス強化インタフェースである。 2.16.2 構文 2.16.3 パラメータ src_pmap ソース・タスクのPMAP構造のアドレス src_ea ソース・タスクのアドレス空間内の有効ア
ドレス dst_pmap 宛先タスクのPMAP構造のアドレス dst_ea 宛先タスクのアドレス空間内の有効アドレ
ス 1つのセグメントだけが再マッピングされる。これは、
src_eaとdst_eaがセグメント境界上にあり、VMがセグ
メント全体のマッピングを希望していることを意味す
る。 2.16.4 戻り値 2.16.5 論理 PMAPと有効アドレスが与えられたら、ソース・タス
ク用の仮想オブジェクトを見つける。(PMAPとEA
が与えられたら)宛先タスク用のセグメント情報構造を
作成し、それをソースの仮想オブジェクトにリンクす
る。また、仮想オブジェクト構造内の参照カウントも増
分する。
【0103】2.17 PMAP_REMAP_PTE 2.17.1 説明 このインタフェースは、所与のPMAPとEA用のマッ
ピング(PTE)を再マッピングする。そのPTEは、
PTEテーブル内の空間が欠落しているために取り戻さ
れている可能性がある。このルーチンは、マッピング障
害を解決するためにページ不在ハンドラによって呼び出
される。すなわち、物理ページは存在する可能性があ
り、マッピングだけが欠落している。 2.17.2 構文 2.17.3 パラメータ pmap タスクのpmap構造のアドレス src_ea マッピングが欠落している有効アドレス 2.17.4 戻り値 TRUE 再マッピングが成功した場合 FALSE 既存のマッピングがまったくない場合 2.17.5 論理 pmapと有効アドレスが与えられたら、タスク用の仮想オ
ブジェクトを見つける。仮想オブジェクト上のキャッシ
ュ済みPTEリストを探索して有効アドレスを探す。一
致する項目がなければ、FALSEを返して終了する。一致
が見つかった場合は、キャッシュ済みPTE構造内のP
TEGポインタを使用してページ・テーブル・グループ
にアクセスする。空きスロットを探索する。スロットが
見つからない場合は、適当な項目を取り戻し、スロット
を作成する(取戻しとは、キャッシュ済みPTE項目を
作成し、S/W PTE項目を無効にし、ページアンカ
ー・リストからS/W PTE項目のリンクを解除し、
ページアンカー・リストにキャッシュ済みPTEを追加
することを意味する)。キャッシュ済みPTEをH/W
に格納する。キャッシュ済みPTE情報でS/W PT
Eを更新する。ページアンカー・リストからキャッシュ
済みPTEのリンクを解除し、ページアンカー・リスト
にS/W PTEをリンクする。TRUEを返す。
ピング(PTE)を再マッピングする。そのPTEは、
PTEテーブル内の空間が欠落しているために取り戻さ
れている可能性がある。このルーチンは、マッピング障
害を解決するためにページ不在ハンドラによって呼び出
される。すなわち、物理ページは存在する可能性があ
り、マッピングだけが欠落している。 2.17.2 構文 2.17.3 パラメータ pmap タスクのpmap構造のアドレス src_ea マッピングが欠落している有効アドレス 2.17.4 戻り値 TRUE 再マッピングが成功した場合 FALSE 既存のマッピングがまったくない場合 2.17.5 論理 pmapと有効アドレスが与えられたら、タスク用の仮想オ
ブジェクトを見つける。仮想オブジェクト上のキャッシ
ュ済みPTEリストを探索して有効アドレスを探す。一
致する項目がなければ、FALSEを返して終了する。一致
が見つかった場合は、キャッシュ済みPTE構造内のP
TEGポインタを使用してページ・テーブル・グループ
にアクセスする。空きスロットを探索する。スロットが
見つからない場合は、適当な項目を取り戻し、スロット
を作成する(取戻しとは、キャッシュ済みPTE項目を
作成し、S/W PTE項目を無効にし、ページアンカ
ー・リストからS/W PTE項目のリンクを解除し、
ページアンカー・リストにキャッシュ済みPTEを追加
することを意味する)。キャッシュ済みPTEをH/W
に格納する。キャッシュ済みPTE情報でS/W PT
Eを更新する。ページアンカー・リストからキャッシュ
済みPTEのリンクを解除し、ページアンカー・リスト
にS/W PTEをリンクする。TRUEを返す。
【0104】2.18 PMAP_ACTIVE 2.18.1 説明 このインタフェースは、所与のタスク(pmap)用のセグ
メント・レジスタを活動化する。 2.18.2 構文 void pmap_activate() 2.18.3 パラメータ 2.18.4 戻り値 2.18.5 論理 セグメント・レジスタからのセグメント・レジスタをセ
グメント情報構造にロードする。
メント・レジスタを活動化する。 2.18.2 構文 void pmap_activate() 2.18.3 パラメータ 2.18.4 戻り値 2.18.5 論理 セグメント・レジスタからのセグメント・レジスタをセ
グメント情報構造にロードする。
【0105】2.19 PMAP_DEACTIVATE 2.19.1 説明 このインタフェースは、所与の(pmap)用のセグメント
・レジスタを非活動化する。 2.19.2 構文 void pmap_deactivate() 2.19.3 パラメータ pmap タスクのpmap構造のアドレス 2.19.4 戻り値 2.19.5 論理 これは、NOPインタフェースであり、完全を期すため
の備えである。
・レジスタを非活動化する。 2.19.2 構文 void pmap_deactivate() 2.19.3 パラメータ pmap タスクのpmap構造のアドレス 2.19.4 戻り値 2.19.5 論理 これは、NOPインタフェースであり、完全を期すため
の備えである。
【0106】本発明の具体的な実施例について説明して
きたが、当業者は、本発明の精神および範囲を逸脱せず
にこの具体的な実施例の変更が可能であることに留意さ
れたい。
きたが、当業者は、本発明の精神および範囲を逸脱せず
にこの具体的な実施例の変更が可能であることに留意さ
れたい。
【0107】まとめとして、本発明の構成に関して以下
の事項を開示する。
の事項を開示する。
【0108】(1)メモリと、メモリ内の1ページ分の
データの物理アドレスにマッピングすべき仮想アドレス
に変換するために有効アドレスを生成するプロセッサと
を含むデータ処理システムにおいて、アドレス変換を管
理する方法であって、メモリ内の第1の実ページにアク
セスするために第1の有効アドレスを発行するステップ
と、第1の有効アドレスを第1のページ・テーブル項目
としてマッピングし、それをページ・テーブルにロード
するステップと、メモリ内の第2の実ページにアクセス
するために第2の有効アドレスを発行するステップと、
ページ・テーブルが追加のページ・テーブル項目を受け
入れられないことを判定するステップと、前記第1のペ
ージ・テーブル項目を取り戻し、それをページ・テーブ
ル項目キャッシュに格納するステップと、前記第1のペ
ージ・テーブル項目用の第1のキャッシュ状況値をキャ
ッシュ状況リストに書き込むステップと、第2の有効ア
ドレスを第2のページ・テーブル項目としてマッピング
し、それをページ・テーブルにロードするステップとを
含むことを特徴とする方法。 (2)メモリ内の前記第1の実ページにアクセスするた
めに前記第1の有効アドレスの第2のオカレンスを発行
するステップと、前記ページ・テーブルが前記追加のペ
ージ・テーブル項目を受け入れられないことを判定する
ステップと、前記第1のキャッシュ状況値を探索して前
記キャッシュ状況リスト内の前記第1のページ・テーブ
ル項目を探すステップと、前記第1のページ・テーブル
項目を前記ページ・テーブル項目キャッシュから前記ペ
ージ・テーブルに転送するステップとをさらに含むこと
を特徴とする、上記(1)に記載のアドレス変換を管理
する方法。 (3)メモリと、メモリ内の1ページ分のデータの物理
アドレスにマッピングすべき仮想アドレスに変換するた
めに有効アドレスを生成するプロセッサとを含むデータ
処理システムにおいて、アドレス変換を管理する方法で
あって、メモリ内の第1の実ページにアクセスするため
に第1のプロセス内で第1の有効アドレスを発行するス
テップと、前記第1の有効アドレス用の第1の仮想セグ
メントIDを生成し、それをメモリ内の第1のセグメン
ト構造手段に格納するステップと、前記第1の仮想セグ
メントIDの少なくとも一部と前記第1の有効アドレス
をメモリ内のページ・テーブル用のページ・テーブル・
アドレスにマッピングするステップと、前記ページ・テ
ーブル・アドレスにページ・テーブル項目を格納するス
テップであって、前記項目が前記第1の仮想セグメント
IDと物理ページへの実ページ・アドレスの少なくとも
一部を含むステップと、前記ページ・テーブル項目から
の実アドレスの前記少なくとも一部を使用して前記物理
ページにアクセスするステップと、メモリ内の前記第1
の実ページにアクセスするために第2のプロセス内で第
2の有効アドレスを発行するステップと、前記第1の仮
想セグメントIDを前記第2の有効アドレス用の別名化
仮想セグメントIDとしてコピーし、それをメモリ内の
第2のセグメント構造手段に格納するステップと、前記
別名化仮想セグメントIDの少なくとも一部と前記第2
の有効アドレスをメモリ内の前記ページ・テーブル用の
前記ページ・テーブル・アドレスにマッピングするステ
ップと、前記第2の有効アドレスに応答して、前記ペー
ジ・テーブル項目からの実アドレスの前記少なくとも一
部を使用して前記物理ページにアクセスするステップと
を含み、それにより、前記第2の有効アドレスが前記ペ
ージ・テーブル内の前記第1のページ・テーブル項目を
共用することを特徴とする方法。 (4)メモリ内の第2の実ページにアクセスするために
第3の有効アドレスを発行するステップと、第3の有効
アドレスを第2のページ・テーブル項目としてマッピン
グし、それを前記ページ・テーブルにロードするステッ
プと、メモリ内の第3の実ページにアクセスするために
第4の有効アドレスを発行するステップと、前記ページ
・テーブルが追加のページ・テーブル項目を受け入れら
れないことを判定するステップと、前記第2のページ・
テーブル項目を取り戻し、それをページ・テーブル項目
キャッシュに格納するステップと、前記第2のページ・
テーブル項目用の第1のキャッシュ状況値をキャッシュ
状況リストに書き込むステップと、第4の有効アドレス
を第3のページ・テーブル項目としてマッピングし、そ
れをページ・テーブルにロードするステップとをさらに
含むことを特徴とする、上記(3)に記載のアドレス変
換を管理する方法。 (5)メモリ内の前記第2の実ページにアクセスするた
めに前記第3の有効アドレスの第2のオカレンスを発行
するステップと、前記ページ・テーブルが追加のページ
・テーブル項目を受け入れられないことを判定するステ
ップと、前記第1のキャッシュ状況値を探索して前記キ
ャッシュ状況リスト内の前記第2のページ・テーブル項
目を探すステップと、前記第2のページ・テーブル項目
を前記ページ・テーブル項目キャッシュから前記ページ
・テーブルに転送するステップとをさらに含むことを特
徴とする、上記(4)に記載のアドレス変換を管理する
方法。 (6)データ処理システム内にあって、複数の実ページ
分の情報を格納するメモリ手段と、メモリ手段に結合さ
れたバス手段と、前記バス手段を介してメモリ手段に結
合されたプロセッサ手段であって、メモリ内の1ページ
分のデータの物理アドレスにマッピングすべき仮想アド
レスに変換するために有効アドレスを生成するプロセッ
サ手段と、メモリ手段内にあって、プロセッサ手段から
の有効アドレスを、メモリ手段内の1ページ分の情報の
実アドレスを提供するページ・テーブル項目に変換する
マッピング手段と、前記ページ・テーブル項目を格納す
るページ・テーブル手段と、メモリ手段内にあって、ペ
ージ・テーブルから取り戻したページ・テーブル項目を
格納するページ・テーブル項目キャッシュ記憶機構と、
メモリ内にあって、前記取り戻したページ・テーブル項
目を識別するページ・テーブル項目状況リスト手段とを
含み、前記ページ・テーブル項目キャッシュ記憶機構
が、前記ページ・テーブルが一杯になっているときに前
記ページ・テーブルから取り戻したページ・テーブル項
目を受け取り、前記受け取ったページ・テーブル項目が
必要なときにそれを前記ページ・テーブルに戻すことを
特徴とする、データ処理システム内のアドレス変換マネ
ージャ。 (7)データ処理システム内にあって、複数の実ページ
分の情報を格納するメモリ手段と、メモリ手段に結合さ
れたバス手段と、前記バス手段を介してメモリ手段に結
合されたプロセッサ手段であって、メモリ内の1ページ
分のデータの物理アドレスにマッピングすべき仮想アド
レスに変換するために有効アドレスを生成するプロセッ
サ手段とを含み、前記プロセッサ手段が、メモリ内の第
1の実ページにアクセスするために第1のプロセス内で
第1の有効アドレスを発行し、前記第1の有効アドレス
用の第1の仮想セグメントIDを生成し、それをメモリ
内の第1のセグメント構造手段に格納する生成手段と、
前記第1の仮想セグメントIDの少なくとも一部と前記
第1の有効アドレスをメモリ内のページ・テーブル用の
ページ・テーブル・アドレスにマッピングするマッピン
グ手段と、前記ページ・テーブル・アドレスにページ・
テーブル項目を格納する格納手段であって、前記項目が
前記第1の仮想セグメントIDと前記物理ページへの実
ページ・アドレスの少なくとも一部を含む格納手段と、
前記ページ・テーブル項目からの実アドレスの前記少な
くとも一部を使用して前記物理ページにアクセスするア
クセス手段とをさらに含み、前記プロセッサ手段が、メ
モリ内の前記第1の実ページにアクセスするために第2
のプロセス内で第2の有効アドレスを発行し、前記第1
の仮想セグメントIDを前記第2の有効アドレス用の別
名化仮想セグメントIDとしてコピーし、それをメモリ
内の第2のセグメント構造手段に格納するコピー手段を
さらに含み、前記マッピング手段が、前記別名化仮想セ
グメントIDの少なくとも一部と前記第2の有効アドレ
スをメモリ内の前記ページ・テーブル用の前記ページ・
テーブル・アドレスにマッピングし、前記アクセス手段
が、前記第2の有効アドレスに応答して、前記ページ・
テーブル項目からの実アドレスの前記少なくとも一部を
使用して前記物理ページにアクセスし、それにより、前
記第2の有効アドレスが前記ページ・テーブル内の前記
第1のページ・テーブル項目を共用することを特徴とす
る、データ処理システム内のアドレス変換マネージャ。 (8)前記プロセッサ手段が、メモリ内の第2の実ペー
ジにアクセスするために第3の有効アドレスを発行し、
前記マッピング手段が、第3の有効アドレスを第2のペ
ージ・テーブル項目としてマッピングし、それをページ
・テーブルにロードし、前記プロセッサ手段が、メモリ
内の第3の実ページにアクセスするために第4の有効ア
ドレスを発行し、ページ・テーブルが追加のページ・テ
ーブル項目を受け入れられないことを判定する判定手段
と、前記第2のページ・テーブル項目を取り戻し、それ
をページ・テーブル項目キャッシュに格納する取戻し手
段と、前記第2のページ・テーブル項目用の第1のキャ
ッシュ状況値をキャッシュ状況リストに書き込む書込み
手段とをさらに含み、前記マッピング手段が、第4の有
効アドレスを第3のページ・テーブル項目としてマッピ
ングし、それをページ・テーブルにロードすることを特
徴とする、上記(7)に記載のデータ処理システム内の
アドレス変換マネージャ。 (9)前記プロセッサ手段が、メモリ内の前記第2の実
ページにアクセスするために前記第3の有効アドレスの
第2のオカレンスを発行し、前記判定手段が、ページ・
テーブルが追加のページ・テーブル項目を受け入れられ
ないことを判定し、前記第1のキャッシュ状況値を探索
して前記キャッシュ状況リスト内の前記第2のページ・
テーブル項目を探す探索手段と、前記第2のページ・テ
ーブル項目を前記ページ・テーブル項目キャッシュから
前記ページ・テーブルに転送する転送手段とをさらに含
むことを特徴とする、上記(8)に記載のデータ処理シ
ステム内のアドレス変換マネージャ。
データの物理アドレスにマッピングすべき仮想アドレス
に変換するために有効アドレスを生成するプロセッサと
を含むデータ処理システムにおいて、アドレス変換を管
理する方法であって、メモリ内の第1の実ページにアク
セスするために第1の有効アドレスを発行するステップ
と、第1の有効アドレスを第1のページ・テーブル項目
としてマッピングし、それをページ・テーブルにロード
するステップと、メモリ内の第2の実ページにアクセス
するために第2の有効アドレスを発行するステップと、
ページ・テーブルが追加のページ・テーブル項目を受け
入れられないことを判定するステップと、前記第1のペ
ージ・テーブル項目を取り戻し、それをページ・テーブ
ル項目キャッシュに格納するステップと、前記第1のペ
ージ・テーブル項目用の第1のキャッシュ状況値をキャ
ッシュ状況リストに書き込むステップと、第2の有効ア
ドレスを第2のページ・テーブル項目としてマッピング
し、それをページ・テーブルにロードするステップとを
含むことを特徴とする方法。 (2)メモリ内の前記第1の実ページにアクセスするた
めに前記第1の有効アドレスの第2のオカレンスを発行
するステップと、前記ページ・テーブルが前記追加のペ
ージ・テーブル項目を受け入れられないことを判定する
ステップと、前記第1のキャッシュ状況値を探索して前
記キャッシュ状況リスト内の前記第1のページ・テーブ
ル項目を探すステップと、前記第1のページ・テーブル
項目を前記ページ・テーブル項目キャッシュから前記ペ
ージ・テーブルに転送するステップとをさらに含むこと
を特徴とする、上記(1)に記載のアドレス変換を管理
する方法。 (3)メモリと、メモリ内の1ページ分のデータの物理
アドレスにマッピングすべき仮想アドレスに変換するた
めに有効アドレスを生成するプロセッサとを含むデータ
処理システムにおいて、アドレス変換を管理する方法で
あって、メモリ内の第1の実ページにアクセスするため
に第1のプロセス内で第1の有効アドレスを発行するス
テップと、前記第1の有効アドレス用の第1の仮想セグ
メントIDを生成し、それをメモリ内の第1のセグメン
ト構造手段に格納するステップと、前記第1の仮想セグ
メントIDの少なくとも一部と前記第1の有効アドレス
をメモリ内のページ・テーブル用のページ・テーブル・
アドレスにマッピングするステップと、前記ページ・テ
ーブル・アドレスにページ・テーブル項目を格納するス
テップであって、前記項目が前記第1の仮想セグメント
IDと物理ページへの実ページ・アドレスの少なくとも
一部を含むステップと、前記ページ・テーブル項目から
の実アドレスの前記少なくとも一部を使用して前記物理
ページにアクセスするステップと、メモリ内の前記第1
の実ページにアクセスするために第2のプロセス内で第
2の有効アドレスを発行するステップと、前記第1の仮
想セグメントIDを前記第2の有効アドレス用の別名化
仮想セグメントIDとしてコピーし、それをメモリ内の
第2のセグメント構造手段に格納するステップと、前記
別名化仮想セグメントIDの少なくとも一部と前記第2
の有効アドレスをメモリ内の前記ページ・テーブル用の
前記ページ・テーブル・アドレスにマッピングするステ
ップと、前記第2の有効アドレスに応答して、前記ペー
ジ・テーブル項目からの実アドレスの前記少なくとも一
部を使用して前記物理ページにアクセスするステップと
を含み、それにより、前記第2の有効アドレスが前記ペ
ージ・テーブル内の前記第1のページ・テーブル項目を
共用することを特徴とする方法。 (4)メモリ内の第2の実ページにアクセスするために
第3の有効アドレスを発行するステップと、第3の有効
アドレスを第2のページ・テーブル項目としてマッピン
グし、それを前記ページ・テーブルにロードするステッ
プと、メモリ内の第3の実ページにアクセスするために
第4の有効アドレスを発行するステップと、前記ページ
・テーブルが追加のページ・テーブル項目を受け入れら
れないことを判定するステップと、前記第2のページ・
テーブル項目を取り戻し、それをページ・テーブル項目
キャッシュに格納するステップと、前記第2のページ・
テーブル項目用の第1のキャッシュ状況値をキャッシュ
状況リストに書き込むステップと、第4の有効アドレス
を第3のページ・テーブル項目としてマッピングし、そ
れをページ・テーブルにロードするステップとをさらに
含むことを特徴とする、上記(3)に記載のアドレス変
換を管理する方法。 (5)メモリ内の前記第2の実ページにアクセスするた
めに前記第3の有効アドレスの第2のオカレンスを発行
するステップと、前記ページ・テーブルが追加のページ
・テーブル項目を受け入れられないことを判定するステ
ップと、前記第1のキャッシュ状況値を探索して前記キ
ャッシュ状況リスト内の前記第2のページ・テーブル項
目を探すステップと、前記第2のページ・テーブル項目
を前記ページ・テーブル項目キャッシュから前記ページ
・テーブルに転送するステップとをさらに含むことを特
徴とする、上記(4)に記載のアドレス変換を管理する
方法。 (6)データ処理システム内にあって、複数の実ページ
分の情報を格納するメモリ手段と、メモリ手段に結合さ
れたバス手段と、前記バス手段を介してメモリ手段に結
合されたプロセッサ手段であって、メモリ内の1ページ
分のデータの物理アドレスにマッピングすべき仮想アド
レスに変換するために有効アドレスを生成するプロセッ
サ手段と、メモリ手段内にあって、プロセッサ手段から
の有効アドレスを、メモリ手段内の1ページ分の情報の
実アドレスを提供するページ・テーブル項目に変換する
マッピング手段と、前記ページ・テーブル項目を格納す
るページ・テーブル手段と、メモリ手段内にあって、ペ
ージ・テーブルから取り戻したページ・テーブル項目を
格納するページ・テーブル項目キャッシュ記憶機構と、
メモリ内にあって、前記取り戻したページ・テーブル項
目を識別するページ・テーブル項目状況リスト手段とを
含み、前記ページ・テーブル項目キャッシュ記憶機構
が、前記ページ・テーブルが一杯になっているときに前
記ページ・テーブルから取り戻したページ・テーブル項
目を受け取り、前記受け取ったページ・テーブル項目が
必要なときにそれを前記ページ・テーブルに戻すことを
特徴とする、データ処理システム内のアドレス変換マネ
ージャ。 (7)データ処理システム内にあって、複数の実ページ
分の情報を格納するメモリ手段と、メモリ手段に結合さ
れたバス手段と、前記バス手段を介してメモリ手段に結
合されたプロセッサ手段であって、メモリ内の1ページ
分のデータの物理アドレスにマッピングすべき仮想アド
レスに変換するために有効アドレスを生成するプロセッ
サ手段とを含み、前記プロセッサ手段が、メモリ内の第
1の実ページにアクセスするために第1のプロセス内で
第1の有効アドレスを発行し、前記第1の有効アドレス
用の第1の仮想セグメントIDを生成し、それをメモリ
内の第1のセグメント構造手段に格納する生成手段と、
前記第1の仮想セグメントIDの少なくとも一部と前記
第1の有効アドレスをメモリ内のページ・テーブル用の
ページ・テーブル・アドレスにマッピングするマッピン
グ手段と、前記ページ・テーブル・アドレスにページ・
テーブル項目を格納する格納手段であって、前記項目が
前記第1の仮想セグメントIDと前記物理ページへの実
ページ・アドレスの少なくとも一部を含む格納手段と、
前記ページ・テーブル項目からの実アドレスの前記少な
くとも一部を使用して前記物理ページにアクセスするア
クセス手段とをさらに含み、前記プロセッサ手段が、メ
モリ内の前記第1の実ページにアクセスするために第2
のプロセス内で第2の有効アドレスを発行し、前記第1
の仮想セグメントIDを前記第2の有効アドレス用の別
名化仮想セグメントIDとしてコピーし、それをメモリ
内の第2のセグメント構造手段に格納するコピー手段を
さらに含み、前記マッピング手段が、前記別名化仮想セ
グメントIDの少なくとも一部と前記第2の有効アドレ
スをメモリ内の前記ページ・テーブル用の前記ページ・
テーブル・アドレスにマッピングし、前記アクセス手段
が、前記第2の有効アドレスに応答して、前記ページ・
テーブル項目からの実アドレスの前記少なくとも一部を
使用して前記物理ページにアクセスし、それにより、前
記第2の有効アドレスが前記ページ・テーブル内の前記
第1のページ・テーブル項目を共用することを特徴とす
る、データ処理システム内のアドレス変換マネージャ。 (8)前記プロセッサ手段が、メモリ内の第2の実ペー
ジにアクセスするために第3の有効アドレスを発行し、
前記マッピング手段が、第3の有効アドレスを第2のペ
ージ・テーブル項目としてマッピングし、それをページ
・テーブルにロードし、前記プロセッサ手段が、メモリ
内の第3の実ページにアクセスするために第4の有効ア
ドレスを発行し、ページ・テーブルが追加のページ・テ
ーブル項目を受け入れられないことを判定する判定手段
と、前記第2のページ・テーブル項目を取り戻し、それ
をページ・テーブル項目キャッシュに格納する取戻し手
段と、前記第2のページ・テーブル項目用の第1のキャ
ッシュ状況値をキャッシュ状況リストに書き込む書込み
手段とをさらに含み、前記マッピング手段が、第4の有
効アドレスを第3のページ・テーブル項目としてマッピ
ングし、それをページ・テーブルにロードすることを特
徴とする、上記(7)に記載のデータ処理システム内の
アドレス変換マネージャ。 (9)前記プロセッサ手段が、メモリ内の前記第2の実
ページにアクセスするために前記第3の有効アドレスの
第2のオカレンスを発行し、前記判定手段が、ページ・
テーブルが追加のページ・テーブル項目を受け入れられ
ないことを判定し、前記第1のキャッシュ状況値を探索
して前記キャッシュ状況リスト内の前記第2のページ・
テーブル項目を探す探索手段と、前記第2のページ・テ
ーブル項目を前記ページ・テーブル項目キャッシュから
前記ページ・テーブルに転送する転送手段とをさらに含
むことを特徴とする、上記(8)に記載のデータ処理シ
ステム内のアドレス変換マネージャ。
【図1】ホスト・マルチプロセッサ100のメモリ10
2内のマイクロカーネル・システム115の機能ブロッ
ク図であって、PowerPCプロセッサを含む様々な
ハードウェア・プラットフォーム上でマイクロカーネル
およびパーソナリティ・ニュートラル・サービス140
が複数のオペレーティング・システム・パーソナリティ
を実行する方法を示す図である。
2内のマイクロカーネル・システム115の機能ブロッ
ク図であって、PowerPCプロセッサを含む様々な
ハードウェア・プラットフォーム上でマイクロカーネル
およびパーソナリティ・ニュートラル・サービス140
が複数のオペレーティング・システム・パーソナリティ
を実行する方法を示す図である。
【図2】タスクと、その親テンプレート領域と、PMA
Pと、本発明のPowerPCページ・テーブル項目マ
ネージャと、キャッシュ・オブジェクトとの関係を示す
図である。
Pと、本発明のPowerPCページ・テーブル項目マ
ネージャと、キャッシュ・オブジェクトとの関係を示す
図である。
【図3】PowerPCメモリの先行技術のレイアウト
を示す図である。
を示す図である。
【図4】PowerPCの先行技術のアドレス変換を示
す図である。
す図である。
【図5】ページ・テーブル項目のキャッシュを特徴とす
る、本発明のページ・テーブル項目マネージャの機能ブ
ロック図である。
る、本発明のページ・テーブル項目マネージャの機能ブ
ロック図である。
【図6】ページ別名化を特徴とする、本発明のページ・
テーブル項目マネージャの機能ブロック図である。
テーブル項目マネージャの機能ブロック図である。
100 ホスト・マルチプロセッサ 102 メモリ 104 バス 106 補助記憶装置 108 入出力アダプタ 110 PowerPCプロセッサA 112 PowerPCプロセッサB 115 マイクロカーネル 190 PowerPCページ・テーブル項目マネージ
ャ 712 命令ページD1 720 有効アドレス 760 物理アドレス 800 PMAP
ャ 712 命令ページD1 720 有効アドレス 760 物理アドレス 800 PMAP
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ヒマンシュ・ハルシャドライ・デサイ アメリカ合衆国33498 フロリダ州ボカ・ ラトン プリザーヴ・ドライブ 19360 (72)発明者 ラーム・キショル・グプタ アメリカ合衆国33433 フロリダ州ボカ・ ラトン ウェルズリー・パーク・ドライブ 5606 ナンバー103 (72)発明者 ラヴィ・レンガラージャン・ストリーニヴ ァサン アメリカ合衆国33486 フロリダ州ボカ・ ラトン タウン・レークス・ドライブ 21446 ナンバー615
Claims (9)
- 【請求項1】メモリと、メモリ内の1ページ分のデータ
の物理アドレスにマッピングすべき仮想アドレスに変換
するために有効アドレスを生成するプロセッサとを含む
データ処理システムにおいて、アドレス変換を管理する
方法であって、 メモリ内の第1の実ページにアクセスするために第1の
有効アドレスを発行するステップと、 第1の有効アドレスを第1のページ・テーブル項目とし
てマッピングし、それをページ・テーブルにロードする
ステップと、 メモリ内の第2の実ページにアクセスするために第2の
有効アドレスを発行するステップと、 ページ・テーブルが追加のページ・テーブル項目を受け
入れられないことを判定するステップと、 前記第1のページ・テーブル項目を取り戻し、それをペ
ージ・テーブル項目キャッシュに格納するステップと、 前記第1のページ・テーブル項目用の第1のキャッシュ
状況値をキャッシュ状況リストに書き込むステップと、 第2の有効アドレスを第2のページ・テーブル項目とし
てマッピングし、それをページ・テーブルにロードする
ステップとを含むことを特徴とする方法。 - 【請求項2】メモリ内の前記第1の実ページにアクセス
するために前記第1の有効アドレスの第2のオカレンス
を発行するステップと、 前記ページ・テーブルが前記追加のページ・テーブル項
目を受け入れられないことを判定するステップと、 前記第1のキャッシュ状況値を探索して前記キャッシュ
状況リスト内の前記第1のページ・テーブル項目を探す
ステップと、 前記第1のページ・テーブル項目を前記ページ・テーブ
ル項目キャッシュから前記ページ・テーブルに転送する
ステップとをさらに含むことを特徴とする、請求項1に
記載のアドレス変換を管理する方法。 - 【請求項3】メモリと、メモリ内の1ページ分のデータ
の物理アドレスにマッピングすべき仮想アドレスに変換
するために有効アドレスを生成するプロセッサとを含む
データ処理システムにおいて、アドレス変換を管理する
方法であって、 メモリ内の第1の実ページにアクセスするために第1の
プロセス内で第1の有効アドレスを発行するステップ
と、 前記第1の有効アドレス用の第1の仮想セグメントID
を生成し、それをメモリ内の第1のセグメント構造手段
に格納するステップと、 前記第1の仮想セグメントIDの少なくとも一部と前記
第1の有効アドレスをメモリ内のページ・テーブル用の
ページ・テーブル・アドレスにマッピングするステップ
と、 前記ページ・テーブル・アドレスにページ・テーブル項
目を格納するステップであって、前記項目が前記第1の
仮想セグメントIDと物理ページへの実ページ・アドレ
スの少なくとも一部を含むステップと、 前記ページ・テーブル項目からの実アドレスの前記少な
くとも一部を使用して前記物理ページにアクセスするス
テップと、 メモリ内の前記第1の実ページにアクセスするために第
2のプロセス内で第2の有効アドレスを発行するステッ
プと、 前記第1の仮想セグメントIDを前記第2の有効アドレ
ス用の別名化仮想セグメントIDとしてコピーし、それ
をメモリ内の第2のセグメント構造手段に格納するステ
ップと、 前記別名化仮想セグメントIDの少なくとも一部と前記
第2の有効アドレスをメモリ内の前記ページ・テーブル
用の前記ページ・テーブル・アドレスにマッピングする
ステップと、 前記第2の有効アドレスに応答して、前記ページ・テー
ブル項目からの実アドレスの前記少なくとも一部を使用
して前記物理ページにアクセスするステップとを含み、 それにより、前記第2の有効アドレスが前記ページ・テ
ーブル内の前記第1のページ・テーブル項目を共用する
ことを特徴とする方法。 - 【請求項4】メモリ内の第2の実ページにアクセスする
ために第3の有効アドレスを発行するステップと、 第3の有効アドレスを第2のページ・テーブル項目とし
てマッピングし、それを前記ページ・テーブルにロード
するステップと、 メモリ内の第3の実ページにアクセスするために第4の
有効アドレスを発行するステップと、 前記ページ・テーブルが追加のページ・テーブル項目を
受け入れられないことを判定するステップと、 前記第2のページ・テーブル項目を取り戻し、それをペ
ージ・テーブル項目キャッシュに格納するステップと、 前記第2のページ・テーブル項目用の第1のキャッシュ
状況値をキャッシュ状況リストに書き込むステップと、 第4の有効アドレスを第3のページ・テーブル項目とし
てマッピングし、それをページ・テーブルにロードする
ステップとをさらに含むことを特徴とする、請求項3に
記載のアドレス変換を管理する方法。 - 【請求項5】メモリ内の前記第2の実ページにアクセス
するために前記第3の有効アドレスの第2のオカレンス
を発行するステップと、 前記ページ・テーブルが追加のページ・テーブル項目を
受け入れられないことを判定するステップと、 前記第1のキャッシュ状況値を探索して前記キャッシュ
状況リスト内の前記第2のページ・テーブル項目を探す
ステップと、 前記第2のページ・テーブル項目を前記ページ・テーブ
ル項目キャッシュから前記ページ・テーブルに転送する
ステップとをさらに含むことを特徴とする、請求項4に
記載のアドレス変換を管理する方法。 - 【請求項6】データ処理システム内にあって、複数の実
ページ分の情報を格納するメモリ手段と、 メモリ手段に結合されたバス手段と、 前記バス手段を介してメモリ手段に結合されたプロセッ
サ手段であって、メモリ内の1ページ分のデータの物理
アドレスにマッピングすべき仮想アドレスに変換するた
めに有効アドレスを生成するプロセッサ手段と、 メモリ手段内にあって、プロセッサ手段からの有効アド
レスを、メモリ手段内の1ページ分の情報の実アドレス
を提供するページ・テーブル項目に変換するマッピング
手段と、 前記ページ・テーブル項目を格納するページ・テーブル
手段と、 メモリ手段内にあって、ページ・テーブルから取り戻し
たページ・テーブル項目を格納するページ・テーブル項
目キャッシュ記憶機構と、 メモリ内にあって、前記取り戻したページ・テーブル項
目を識別するページ・テーブル項目状況リスト手段とを
含み、 前記ページ・テーブル項目キャッシュ記憶機構が、前記
ページ・テーブルが一杯になっているときに前記ページ
・テーブルから取り戻したページ・テーブル項目を受け
取り、前記受け取ったページ・テーブル項目が必要なと
きにそれを前記ページ・テーブルに戻すことを特徴とす
る、データ処理システム内のアドレス変換マネージャ。 - 【請求項7】データ処理システム内にあって、複数の実
ページ分の情報を格納するメモリ手段と、 メモリ手段に結合されたバス手段と、 前記バス手段を介してメモリ手段に結合されたプロセッ
サ手段であって、メモリ内の1ページ分のデータの物理
アドレスにマッピングすべき仮想アドレスに変換するた
めに有効アドレスを生成するプロセッサ手段とを含み、 前記プロセッサ手段が、メモリ内の第1の実ページにア
クセスするために第1のプロセス内で第1の有効アドレ
スを発行し、 前記第1の有効アドレス用の第1の仮想セグメントID
を生成し、それをメモリ内の第1のセグメント構造手段
に格納する生成手段と、 前記第1の仮想セグメントIDの少なくとも一部と前記
第1の有効アドレスをメモリ内のページ・テーブル用の
ページ・テーブル・アドレスにマッピングするマッピン
グ手段と、 前記ページ・テーブル・アドレスにページ・テーブル項
目を格納する格納手段であって、前記項目が前記第1の
仮想セグメントIDと前記物理ページへの実ページ・ア
ドレスの少なくとも一部を含む格納手段と、 前記ページ・テーブル項目からの実アドレスの前記少な
くとも一部を使用して前記物理ページにアクセスするア
クセス手段とをさらに含み、 前記プロセッサ手段が、メモリ内の前記第1の実ページ
にアクセスするために第2のプロセス内で第2の有効ア
ドレスを発行し、 前記第1の仮想セグメントIDを前記第2の有効アドレ
ス用の別名化仮想セグメントIDとしてコピーし、それ
をメモリ内の第2のセグメント構造手段に格納するコピ
ー手段をさらに含み、 前記マッピング手段が、前記別名化仮想セグメントID
の少なくとも一部と前記第2の有効アドレスをメモリ内
の前記ページ・テーブル用の前記ページ・テーブル・ア
ドレスにマッピングし、 前記アクセス手段が、前記第2の有効アドレスに応答し
て、前記ページ・テーブル項目からの実アドレスの前記
少なくとも一部を使用して前記物理ページにアクセス
し、 それにより、前記第2の有効アドレスが前記ページ・テ
ーブル内の前記第1のページ・テーブル項目を共用する
ことを特徴とする、データ処理システム内のアドレス変
換マネージャ。 - 【請求項8】前記プロセッサ手段が、メモリ内の第2の
実ページにアクセスするために第3の有効アドレスを発
行し、 前記マッピング手段が、第3の有効アドレスを第2のペ
ージ・テーブル項目としてマッピングし、それをページ
・テーブルにロードし、 前記プロセッサ手段が、メモリ内の第3の実ページにア
クセスするために第4の有効アドレスを発行し、 ページ・テーブルが追加のページ・テーブル項目を受け
入れられないことを判定する判定手段と、 前記第2のページ・テーブル項目を取り戻し、それをペ
ージ・テーブル項目キャッシュに格納する取戻し手段
と、 前記第2のページ・テーブル項目用の第1のキャッシュ
状況値をキャッシュ状況リストに書き込む書込み手段と
をさらに含み、 前記マッピング手段が、第4の有効アドレスを第3のペ
ージ・テーブル項目としてマッピングし、それをページ
・テーブルにロードすることを特徴とする、請求項7に
記載のデータ処理システム内のアドレス変換マネージ
ャ。 - 【請求項9】前記プロセッサ手段が、メモリ内の前記第
2の実ページにアクセスするために前記第3の有効アド
レスの第2のオカレンスを発行し、 前記判定手段が、ページ・テーブルが追加のページ・テ
ーブル項目を受け入れられないことを判定し、 前記第1のキャッシュ状況値を探索して前記キャッシュ
状況リスト内の前記第2のページ・テーブル項目を探す
探索手段と、 前記第2のページ・テーブル項目を前記ページ・テーブ
ル項目キャッシュから前記ページ・テーブルに転送する
転送手段とをさらに含むことを特徴とする、請求項8に
記載のデータ処理システム内のアドレス変換マネージ
ャ。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US30380594A | 1994-09-09 | 1994-09-09 | |
| US303805 | 1999-04-30 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0887451A true JPH0887451A (ja) | 1996-04-02 |
Family
ID=23173783
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP7215771A Pending JPH0887451A (ja) | 1994-09-09 | 1995-08-24 | アドレス変換を管理する方法およびアドレス変換マネージャ |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US6308247B1 (ja) |
| JP (1) | JPH0887451A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1296838C (zh) * | 2004-02-19 | 2007-01-24 | 国际商业机器公司 | 在分段操作系统中提供用于页面转换的预转换段的设备和方法 |
Families Citing this family (66)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5941972A (en) | 1997-12-31 | 1999-08-24 | Crossroads Systems, Inc. | Storage router and method for providing virtual local storage |
| USRE42761E1 (en) | 1997-12-31 | 2011-09-27 | Crossroads Systems, Inc. | Storage router and method for providing virtual local storage |
| US6052739A (en) * | 1998-03-26 | 2000-04-18 | Sun Microsystems, Inc. | Method and apparatus for object-oriented interrupt system |
| JP2000067009A (ja) | 1998-08-20 | 2000-03-03 | Hitachi Ltd | 主記憶共有型マルチプロセッサ |
| US6604184B2 (en) * | 1999-06-30 | 2003-08-05 | Intel Corporation | Virtual memory mapping using region-based page tables |
| US6832266B1 (en) * | 2000-02-07 | 2004-12-14 | Sun Microsystems, Inc. | Simplified microkernel application programming interface |
| US7523158B1 (en) * | 2000-05-12 | 2009-04-21 | Oracle International Corporation | System and method for partial page updates using a proxy element |
| US9252955B2 (en) * | 2000-08-18 | 2016-02-02 | United States Postal Service | Apparatus and methods for the secure transfer of electronic data |
| US7302582B2 (en) * | 2000-08-21 | 2007-11-27 | United States Postal Service | Delivery point validation system |
| US6728722B1 (en) | 2000-08-28 | 2004-04-27 | Sun Microsystems, Inc. | General data structure for describing logical data spaces |
| US6865579B1 (en) | 2000-08-28 | 2005-03-08 | Sun Microsystems, Inc. | Simplified thread control block design |
| US6725366B1 (en) * | 2000-09-07 | 2004-04-20 | International Business Machines, Corporation | System and method for 32 bit code branching to 64 bit targets |
| US7664731B2 (en) * | 2002-03-21 | 2010-02-16 | United States Postal Service | Method and system for storing and retrieving data using hash-accessed multiple data stores |
| US7587408B2 (en) * | 2002-03-21 | 2009-09-08 | United States Postal Service | Method and system for storing and retrieving data using hash-accessed multiple data stores |
| US7159119B2 (en) * | 2002-09-06 | 2007-01-02 | United States Postal Service | Method and system for efficiently retrieving secured data by securely pre-processing provided access information |
| US6970990B2 (en) * | 2002-09-30 | 2005-11-29 | International Business Machines Corporation | Virtual mode virtual memory manager method and apparatus |
| US7197620B1 (en) * | 2002-12-10 | 2007-03-27 | Unisys Corporation | Sparse matrix paging system |
| US20040117793A1 (en) * | 2002-12-17 | 2004-06-17 | Sun Microsystems, Inc. | Operating system architecture employing synchronous tasks |
| US7975117B2 (en) | 2003-03-24 | 2011-07-05 | Microsoft Corporation | Enforcing isolation among plural operating systems |
| US20050081055A1 (en) * | 2003-10-10 | 2005-04-14 | Bea Systems, Inc. | Dynamically configurable distributed security system |
| US20050091224A1 (en) * | 2003-10-22 | 2005-04-28 | Fisher James A. | Collaborative web based development interface |
| US7093100B2 (en) * | 2003-11-14 | 2006-08-15 | International Business Machines Corporation | Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes |
| US7107431B2 (en) * | 2004-02-19 | 2006-09-12 | International Business Machines Corporation | Apparatus and method for lazy segment promotion for pre-translated segments |
| US20050228851A1 (en) * | 2004-03-29 | 2005-10-13 | Intel Corporation | Configuration of redirection tables |
| US7493465B2 (en) * | 2004-05-17 | 2009-02-17 | Oracle International Corporation | Method and system for extended memory with user mode input/output operations |
| US7296129B2 (en) | 2004-07-30 | 2007-11-13 | International Business Machines Corporation | System, method and storage medium for providing a serialized memory interface with a bus repeater |
| US7539800B2 (en) | 2004-07-30 | 2009-05-26 | International Business Machines Corporation | System, method and storage medium for providing segment level sparing |
| US7389375B2 (en) | 2004-07-30 | 2008-06-17 | International Business Machines Corporation | System, method and storage medium for a multi-mode memory buffer device |
| US7299313B2 (en) | 2004-10-29 | 2007-11-20 | International Business Machines Corporation | System, method and storage medium for a memory subsystem command interface |
| US7441060B2 (en) | 2004-10-29 | 2008-10-21 | International Business Machines Corporation | System, method and storage medium for providing a service interface to a memory system |
| US7331010B2 (en) | 2004-10-29 | 2008-02-12 | International Business Machines Corporation | System, method and storage medium for providing fault detection and correction in a memory subsystem |
| US7512762B2 (en) | 2004-10-29 | 2009-03-31 | International Business Machines Corporation | System, method and storage medium for a memory subsystem with positional read data latency |
| US7305574B2 (en) * | 2004-10-29 | 2007-12-04 | International Business Machines Corporation | System, method and storage medium for bus calibration in a memory subsystem |
| US7685400B2 (en) * | 2004-12-15 | 2010-03-23 | International Business Machines Corporation | Storage of data blocks of logical volumes in a virtual disk storage subsystem |
| US7801925B2 (en) * | 2004-12-22 | 2010-09-21 | United States Postal Service | System and method for electronically processing address information |
| US8165909B2 (en) | 2005-05-17 | 2012-04-24 | The United States Postal Service | System and method for automated management of an address database |
| US7478259B2 (en) | 2005-10-31 | 2009-01-13 | International Business Machines Corporation | System, method and storage medium for deriving clocks in a memory system |
| US7685392B2 (en) | 2005-11-28 | 2010-03-23 | International Business Machines Corporation | Providing indeterminate read data latency in a memory system |
| US7386673B2 (en) * | 2005-11-30 | 2008-06-10 | Red Hat, Inc. | Method for tracking of non-resident pages |
| US7636813B2 (en) * | 2006-05-22 | 2009-12-22 | International Business Machines Corporation | Systems and methods for providing remote pre-fetch buffers |
| US7594055B2 (en) | 2006-05-24 | 2009-09-22 | International Business Machines Corporation | Systems and methods for providing distributed technology independent memory controllers |
| US7640386B2 (en) | 2006-05-24 | 2009-12-29 | International Business Machines Corporation | Systems and methods for providing memory modules with multiple hub devices |
| US7584336B2 (en) | 2006-06-08 | 2009-09-01 | International Business Machines Corporation | Systems and methods for providing data modification operations in memory subsystems |
| US7669086B2 (en) | 2006-08-02 | 2010-02-23 | International Business Machines Corporation | Systems and methods for providing collision detection in a memory system |
| US7581073B2 (en) * | 2006-08-09 | 2009-08-25 | International Business Machines Corporation | Systems and methods for providing distributed autonomous power management in a memory system |
| US7587559B2 (en) | 2006-08-10 | 2009-09-08 | International Business Machines Corporation | Systems and methods for memory module power management |
| US7539842B2 (en) | 2006-08-15 | 2009-05-26 | International Business Machines Corporation | Computer memory system for selecting memory buses according to physical memory organization information stored in virtual address translation tables |
| US7870459B2 (en) | 2006-10-23 | 2011-01-11 | International Business Machines Corporation | High density high reliability memory module with power gating and a fault tolerant address and command bus |
| US7721140B2 (en) | 2007-01-02 | 2010-05-18 | International Business Machines Corporation | Systems and methods for improving serviceability of a memory system |
| US7603526B2 (en) | 2007-01-29 | 2009-10-13 | International Business Machines Corporation | Systems and methods for providing dynamic memory pre-fetch |
| US7606988B2 (en) * | 2007-01-29 | 2009-10-20 | International Business Machines Corporation | Systems and methods for providing a dynamic memory bank page policy |
| JP2008242633A (ja) * | 2007-03-26 | 2008-10-09 | Nec Corp | マルチユーザオペレーティングシステムにおけるシングルユーザアプリケーションの制御システムおよび方法 |
| US7941568B2 (en) * | 2008-05-05 | 2011-05-10 | International Business Machines Corporation | Mapping a virtual address to PCI bus address |
| US7908457B2 (en) * | 2008-05-05 | 2011-03-15 | International Business Machines Corporation | Retaining an association between a virtual address based buffer and a user space application that owns the buffer |
| US8549093B2 (en) | 2008-09-23 | 2013-10-01 | Strategic Technology Partners, LLC | Updating a user session in a mach-derived system environment |
| CN102279877B (zh) * | 2011-07-26 | 2013-03-13 | 山东省计算中心 | 一种Mac OS系统的物理内存镜像文件分析方法 |
| WO2014003707A2 (en) * | 2012-06-25 | 2014-01-03 | Empire Technology Development Llc | Hardware-based accelerator for managing copy-on-write |
| US9058268B1 (en) | 2012-09-20 | 2015-06-16 | Matrox Graphics Inc. | Apparatus, system and method for memory management |
| WO2014051544A2 (en) | 2012-09-25 | 2014-04-03 | Empire Technology Development Llc | Improved performance and energy efficiency while using large pages |
| US9134908B2 (en) * | 2013-01-09 | 2015-09-15 | Apple Inc. | Logical volume space sharing |
| US9092365B2 (en) | 2013-08-22 | 2015-07-28 | International Business Machines Corporation | Splitting direct memory access windows |
| US9104600B2 (en) | 2013-08-22 | 2015-08-11 | International Business Machines Corporation | Merging direct memory access windows |
| TWI489279B (zh) * | 2013-11-27 | 2015-06-21 | Realtek Semiconductor Corp | 虛擬實體位址轉換系統以及虛擬實體位址轉換系統的管理方法 |
| KR101653092B1 (ko) * | 2015-02-06 | 2016-09-01 | 한국과학기술원 | 메시 네트워크 환경을 위한 생체 모방 알고리즘 기반 p2p 콘텐츠 캐싱 방법 및 시스템 |
| US9460011B1 (en) | 2015-12-14 | 2016-10-04 | International Business Machines Corporation | Memory reference estimation method and device based on improved cache |
| GB2570665B (en) * | 2018-01-31 | 2020-08-26 | Advanced Risc Mach Ltd | Address translation in a data processing apparatus |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5317718A (en) * | 1990-03-27 | 1994-05-31 | Digital Equipment Corporation | Data processing system and method with prefetch buffers |
| US5164944A (en) * | 1990-06-08 | 1992-11-17 | Unisys Corporation | Method and apparatus for effecting multiple error correction in a computer memory |
| US5237673A (en) * | 1991-03-20 | 1993-08-17 | Digital Equipment Corporation | Memory management method for coupled memory multiprocessor systems |
| US5347639A (en) * | 1991-07-15 | 1994-09-13 | International Business Machines Corporation | Self-parallelizing computer system and method |
| US5463739A (en) * | 1992-12-22 | 1995-10-31 | International Business Machines Corporation | Apparatus for vetoing reallocation requests during a data transfer based on data bus latency and the number of received reallocation requests below a threshold |
-
1995
- 1995-08-24 JP JP7215771A patent/JPH0887451A/ja active Pending
-
1997
- 1997-05-22 US US08/861,684 patent/US6308247B1/en not_active Expired - Fee Related
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1296838C (zh) * | 2004-02-19 | 2007-01-24 | 国际商业机器公司 | 在分段操作系统中提供用于页面转换的预转换段的设备和方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US6308247B1 (en) | 2001-10-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6308247B1 (en) | Page table entry management method and apparatus for a microkernel data processing system | |
| US5835964A (en) | Virtual memory system with hardware TLB and unmapped software TLB updated from mapped task address maps using unmapped kernel address map | |
| US7620766B1 (en) | Transparent sharing of memory pages using content comparison | |
| US6480845B1 (en) | Method and data processing system for emulating virtual memory working spaces | |
| US7409487B1 (en) | Virtualization system for computers that use address space indentifiers | |
| US6003123A (en) | Memory system with global address translation | |
| US7165164B2 (en) | Method and apparatus including heuristic for sharing TLB entries | |
| US5123094A (en) | Interprocessor communications includes second CPU designating memory locations assigned to first CPU and writing their addresses into registers | |
| Jacob et al. | Virtual memory: Issues of implementation | |
| US7073044B2 (en) | Method and apparatus for sharing TLB entries | |
| US5684993A (en) | Segregation of thread-specific information from shared task information | |
| EP1891533B1 (en) | Translating loads for accelerating virtualized partition | |
| JPH05233458A (ja) | コンピュータシステムのメモリ管理装置 | |
| JPH07262092A (ja) | 仮想メモリ管理システム、変換索引バッファ管理方法、及び変換索引バッファパージオーバーヘッド最小化方法 | |
| US6763328B1 (en) | Method and data processing system for emulating virtual memory utilizing threads | |
| US7269825B1 (en) | Method and system for relative address translation | |
| JPH05233425A (ja) | メモリ管理装置 | |
| US6427162B1 (en) | Separate code and data contexts: an architectural approach to virtual text sharing | |
| Milenkovic | Microprocessor memory management units | |
| US7197620B1 (en) | Sparse matrix paging system | |
| US6567907B1 (en) | Avoiding mapping conflicts in a translation look-aside buffer | |
| US6766435B1 (en) | Processor with a general register set that includes address translation registers | |
| Kaiser | MUTABOR, a coprocessor supporting memory management in an object-oriented architecture | |
| US6446094B1 (en) | Data structure for emulating virtual memory working spaces | |
| Cai et al. | A scalable virtual memory system based on decentralization for many-cores |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050715 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050725 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051018 |
|
| RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20051129 |