JP2000250814A - アドレススペース内にキャッシュページアドレスの均一な分布を維持するための動的なメモリ割り当て方法 - Google Patents

アドレススペース内にキャッシュページアドレスの均一な分布を維持するための動的なメモリ割り当て方法

Info

Publication number
JP2000250814A
JP2000250814A JP10375538A JP37553898A JP2000250814A JP 2000250814 A JP2000250814 A JP 2000250814A JP 10375538 A JP10375538 A JP 10375538A JP 37553898 A JP37553898 A JP 37553898A JP 2000250814 A JP2000250814 A JP 2000250814A
Authority
JP
Japan
Prior art keywords
address
page
cache
cache page
physical
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
Application number
JP10375538A
Other languages
English (en)
Inventor
Larry William Woodman
ウィリアム ウッドマン ラリー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of JP2000250814A publication Critical patent/JP2000250814A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/653Page colouring

Abstract

(57)【要約】 (修正有) 【課題】 スラッシングを減少し、性能を向上するよう
にコンピュータシステム内で物理アドレスを仮想アドレ
スにマッピングする。 【解決手段】 キャッシュの各ページは、関連キャッシ
ュページアドレスを有する。物理アドレスは、その物理
アドレスに関連するか又はそこに実質的に含まれたキャ
ッシュページアドレスの値に一部分基づいて仮想アドレ
スへとマッピングされる。仮想アドレスから物理アドレ
スへの変換は、個々のプロセスに関連付けられ、その変
換に関連したプロセス内及び全ての仮想アドレス変換の
間で関連キャッシュページアドレスが実質的に均一に分
布されるように物理アドレスを選択する。この構成で
は、キャッシュページアドレスが各プロセス内にほぼ均
一に分布される。更にキャッシュページアドレスが全て
の仮想アドレス変換の間でほぼ均一に分布される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に、コンピュ
ータシステムに係り、より詳細には、コンピュータシス
テムのメモリ性能を最適化する方法に係る。
【0002】
【従来の技術】この技術でよく知られたように、コンピ
ュータシステムは、接続されたメモリデバイスから受け
取られる命令及びデータに基づいて動作する中央処理ユ
ニットを備えている。データ及び命令は、それらが中央
処理ユニットによって要求されたときに、メモリから中
央処理ユニットへと転送される。メモリデバイスからデ
ータを得るときの固有の待ち時間は、かなり大きなもの
である。従って、通常、キャッシュと称する小型で高速
のメモリがメモリと中央処理ユニットとの間に配置され
る。キャッシュは、中央処理ユニットにより要求される
メモリの一部分の一時的な記憶装置である。キャッシュ
は、メモリより高速であって、中央処理ユニットの比較
的近くに配置されるので、キャッシュへの参照は、メモ
リへの参照よりも速くサービスされる。従って、キャッ
シュの使用は、メモリデータ及び命令をアクセスするこ
とに関連した待ち時間を減少することによりコンピュー
タシステムの全性能を高める。
【0003】キャッシュは、メモリより小型で、メモリ
データのサブセットしか記憶しないので、中央処理ユニ
ットがメモリデータの項目を要求するときに、メモリデ
ータのその項目がキャッシュに配置されていないことが
ある。キャッシュにないデータに対して要求がなされた
ときには、その要求がキャッシュにおいて「ミス」した
と言われる。キャッシュにミスが生じたときには、メモ
リデータの項目がメモリから検索されて、キャッシュに
記憶される。従って、キャッシュにおいてミスとなる要
求の場合には、メモリデータの項目を得ることに関連し
た全待ち時間を招く。それ故、オペレーション中に生じ
るキャッシュミスの数を最小にすることが所望されるこ
とは明らかである。
【0004】
【発明が解決しようとする課題】種々のキャッシュアー
キテクチャーが存在し、その幾つかは、オペレーション
中に生じるキャッシュミスの数を最小にするように設計
されている。一般に、これら全てのアーキテクチャーに
おいて、キャッシュは多数のブロックに一般的に配分さ
れ、各ブロックは、一定数のデータバイトを含む。各デ
ータブロックは、物理的メモリのページのサブセットで
ある。プロセスに関連したデータ及び命令には、プロセ
スがシステムに導入されるときに物理的メモリのページ
が割り当てられる。直接マップ式のキャッシュアーキテ
クチャーにおいては、データのブロックがキャッシュへ
コピーされ、そしてその後の参照のために、そのブロッ
クが存在するページの物理アドレスの選択されたビット
を使用して、キャッシュへのインデックスが形成され
る。このインデックスは、物理アドレスの一部分に過ぎ
ないので、多数のブロックをキャッシュにおいて同じイ
ンデックスへとマップすることができる。多数のブロッ
クを共通のキャッシュインデックスへとマップできるの
で、「スラッシング(thrashing) 」と称する問題が生じ
る。スラッシングは、中央処理ユニットにおいて実行さ
れる2つのプロセス又は命令が、同じキャッシュインデ
ックスへとマップされるブロックを繰り返しアクセスす
るときに生じる。1つの命令がデータのブロックを要求
しそしてそれが関連キャッシュインデックスに配置され
ていないたびに、ミスが生じ、必要なデータブロックが
メモリから検索される。従って、キャッシュは、所与の
キャッシュインデックスにおいて2つの異なるデータブ
ロック間でスラッシュを生じ、所与のキャッシュインデ
ックスがアクセスされるたびに全メモリ待ち時間を招
く。過剰なスラッシングが生じたときには、キャッシュ
を有する利点が失われる。
【0005】セット連想アーキテクチャーは、各キャッ
シュインデックスに対して2つ以上のキャッシュ位置を
与えることにより、キャッシュに生じるスラッシングの
量を最小にする助けをする。セット連想キャッシュにお
いては、キャッシュがデータブロックの多数のセットに
配分され、そしてキャッシュインデックスがキャッシュ
のデータブロックのいずれのセットのエントリにもマッ
プすることができる。それ故、セット連想キャッシュ
は、同じキャッシュインデックスにマップする異なる命
令をキャッシュ内の異なるセットへとマップできるよう
にすることによりスラッシングの量を減少できる。セッ
ト連想アーキテクチャーは、各キャッシュインデックス
に対して2つ以上のキャッシュ位置を与えることにより
スラッシングを軽減する助けをするが、同じキャッシュ
インデックスへとマップするデータブロックであって、
キャッシュに使用できるセットより多数のデータブロッ
クが使用されるときには、依然、スラッシングが生じ得
る。
【0006】スラッシングが実行プロセスに終始生じる
ときには、システムの全性能が、キャッシュメモリをも
たないシステムの性能以下に低下してしまう。それ故、
キャッシュメモリにおけるスラッシングを減少して、コ
ンピュータシステムの潜在的な性能を実現できるように
する方法及び装置を提供することが要望される。
【0007】
【課題を解決するための手段】スラッシングを最小にし
そして性能を向上させるようにコンピュータシステム内
で物理アドレスを仮想アドレスにマッピングするための
方法及び装置が提供される。コンピュータシステムは、
物理メモリのページのサブセットを記憶するためのキャ
ッシュのような記憶装置を備えている。キャッシュの各
ページは、キャッシュページと称され、関連するキャッ
シュページアドレスを有している。物理アドレスは、そ
の物理アドレスに関連されるか又はそこに実質的に含ま
れたキャッシュページアドレスの値に基づく部分におい
て仮想アドレスへマッピングするように選択される。仮
想アドレスの変換は、個々のプロセスに関連付けされ
る。仮想アドレスと物理アドレスとの間の変換が形成さ
れると、関連するキャッシュページアドレスが、個々の
プロセスの仮想アドレス変換内及び全てのプロセスの仮
想アドレス変換間の両方に実質的に均一に分布されるよ
うに、物理アドレスが選択される。このような構成で
は、キャッシュページアドレスが、プロセスに関連した
仮想アドレスの変換内に実質的に均一に分布されるの
で、プロセス内スラッシングの発生が最小にされる。更
に、キャッシュページアドレスが仮想アドレスの全ての
変換の間に実質的に均一に分布されるので、プロセス間
スラッシングの発生も最小にされる。プロセス間スラッ
シング及びプロセス内スラッシングの両方の発生を最小
にすることにより、コンピュータシステム全体の性能が
改善される。
【0008】
【発明の実施の形態】図1を参照すれば、コンピュータ
システム10は、メモリ18に接続された中央処理ユニ
ット(CPU)サブシステム12を含むように示されて
いる。メモリ18は、中央処理ユニットにより実行する
ための命令及びデータを記憶する動的なランダムアクセ
スメモリ(DRAM)記憶装置である。メモリは、接続
されたディスク又はテープ記憶装置或いは他のソース
(図示せず)から命令及びデータを受け取る。CPUサ
ブシステム12は、中央処理ユニット(CPU)14
と、中間レベルキャッシュ16と、変換バッファ17と
を備えている。中央処理ユニットは、例えば、マサチュ
ーセッツ州、メイナードのデジタル・イクイップメント
・コーポレーションにより製造されたAlpha(登録
商標)21264中央処理ユニットチップである。
【0009】メモリ18及び何らかの接続された記憶装
置において使用できる記憶位置の数は、コンピュータシ
ステム10の物理アドレススペースを表す。ここに開示
するシステムの1つの実施形態によれば、CPUサブシ
ステム12は、コンピュータシステム10の使用可能な
物理アドレススペースよりも相当に大きい仮想アドレス
スペースにおいて動作する。例えば、本発明の1つの実
施形態では、仮想アドレス(VA)は、4テラバイトの
情報をアクセスできる43ビットより成るが、物理アド
レスは、4096メガバイトの情報しかアクセスできな
い32ビットのみを含む。システムにプロセスが最初に
導入されるときに、プロセスの仮想アドレスがメモリ1
8の物理アドレスへとマップされる。CPUサブシステ
ム12の変換バッファ17は、CPU14により発生さ
れた仮想アドレスを、キャッシュデバイス16をアクセ
スするための物理アドレスに変換するのに使用される。
変換バッファ17の各エントリは、メモリの対応ページ
のための変換、所有権及び有効性情報を記憶するページ
テーブルエントリ(PTE)を含む。仮想アドレスに対
応するデータの物理ページがキャッシュ16へ転送され
るたびに、そのページに対応するページテーブルエント
リが変換バッファ17へコピーされる。従って、仮想ア
ドレスが物理メモリのそのページを次にアクセスすると
きには、変換バッファに記憶された変換情報を用いて、
キャッシュ16におけるメモリのページをアクセスする
ことができる。従って、変換バッファ17は、キャッシ
ュ16に現在記憶されているデータのPTEのみを記憶
する。
【0010】ここに開示するシステムの1つの実施形態
によれば、キャッシュ16は、4メガバイトの直接マッ
プ式キャッシュである。キャッシュ16は、メモリ18
からのページの一時的な記憶を与え、メモリの各ページ
は、8キロバイトの情報を含む。従って、キャッシュ1
6は、512ページのメモリ情報を記憶できる。メモリ
の各ページは、更に、256個の64バイトブロックに
配分される。情報は、全物理ページアドレスを用いてペ
ージサイズ粒度でメモリから検索され、一方、情報は、
キャッシュインデックスと称する物理アドレスの一部分
のみを使用してブロックサイズの粒度でキャッシュから
検索される。上記のページサイズ及びキャッシュサイズ
は、設計上の選択の問題であり、本発明を限定するもの
でないことに注意されたい。更に、本発明は、直接マッ
プ式キャッシュの使用に限定されるものではなく、セッ
ト連想キャッシュのような他の形式のアーキテクチャー
を使用することもできる。
【0011】図1のメモリ18は、ページテーブル26
及びメモリアロケーター28を含むものとして示され、
ページテーブル26はオペレーティングシステムソフト
ウェアにより維持されるデータ構造体であり、そしてメ
モリアロケーターはオペレーティングシステムにより呼
び出されるソフトウェアルーチンである。ページテーブ
ル26は、コンピュータシステム10において各仮想ア
ドレスに対するページテーブルエントリ(PTE)を潜
在的に記憶する。物理アドレスが仮想アドレスに割り当
てられた場合には、それが、その仮想アドレスに対応す
るPTEに記憶される。メモリアロケーターは、新たな
変換が必要とされるときに物理ページアドレスを仮想ペ
ージアドレスにマップする。例えば、オペレーション中
に、CPUにより発生された仮想アドレスが変換バッフ
ァ17に有効エントリをもたないことがあり、これは、
関連する物理ページがキャッシュ16に配置されていな
いか、又はPTEによりなされる変換がもはや有効でな
いことを指示する。このような場合に、変換バッファ
は、信号TBMISS(図示せず)をCPU14へアサ
ートし、そして変換バッファにおいてミスとなった仮想
アドレスのページテーブルエントリを検索するためにメ
モリ18がアクセスされる。上述したように、ページテ
ーブルエントリは、物理アドレスへの有効な変換を含ん
でもよいし、含まなくてもよい。ページテーブル26に
有効なページテーブルエントリがある場合には、そのペ
ージテーブルエントリが変換バッファに返送され、そし
てCPUは、次いで、ページテーブルエントリからの物
理アドレスを使用して、所望のデータを得るための第2
の要求をメモリ18へ開始する。
【0012】ページテーブル26に有効なページテーブ
ルエントリがない場合には、CPU14は、ページ欠陥
信号を発生し、ソフトウェアページ欠陥ハンドラーを始
動させる。ページ欠陥ハンドラーは、メモリアロケータ
ー28にコンタクトする。メモリアロケーターは、仮想
アドレスをマップするために物理メモリの空きページを
割り当て、そして仮想アドレスに対応するページテーブ
ルエントリを更新するためにページテーブル26へペー
ジアドレスを送る。ページテーブルエントリが更新され
ると、それがCPUへ送られ、CPUは物理アドレスを
使用して、所望のデータを検索するためのメモリアクセ
スを実行することができる。本発明の1つの特徴によれ
ば、メモリアロケーター28は、キャッシュページアド
レスの均一な分布がシステム巾及びプロセス巾のベース
で維持されるように物理アドレスを仮想アドレスにマッ
プする。これは、物理アドレスのキャッシュページアド
レス部分が仮想アドレススペース全体に分布されるよう
に、仮想アドレスにマップする物理アドレスを割り当て
るよう確保することにより、達成される。例えば、図2
Aを参照すれば、メモリの物理アドレスのフォーマット
が例示されている。物理アドレスは、ページフレーム番
号部分20aを含む。ページフレーム番号部分20a
は、物理的メモリにおける1つのページのページアドレ
スを与える。ページフレーム番号部分20aには、キャ
ッシュページ部分20bが含まれる。このキャッシュペ
ージアドレス部分20bは、物理ページのキャッシュペ
ージアドレスを識別する物理ページアドレスの部分であ
り、即ち、対応する物理ページが記憶されるところのキ
ャッシュのページ位置である。キャッシュページアドレ
ス部分は、ページフレーム番号の下位nビットを含み、
但し、nは、n=log2 (キャッシュサイズ)であ
る。上記のように、キャッシュ16は、メモリの512
ページを記憶することができる。従って、メモリの2K
物理ページが512のキャッシュページアドレスの各々
にマップする。メモリアロケーター28(図1)は、プ
ロセス及びシステム巾のベースで仮想−物理マッピング
に対してキャッシュページアドレスの均一な分布を維持
することにより、同じキャッシュページへマップするプ
ロセス内及びシステム内の物理ページの数を最小にする
ことができる。同じキャッシュページアドレスへマップ
する物理ページの数を最小にすることにより、共通のキ
ャッシュページアドレスにおけるプロセス間及びプロセ
ス内スラッシングの確率が減少され、そしてコンピュー
タシステム10の全性能が改善される。
【0013】又、物理アドレス20は、キャッシュイン
デックス部分20cも含む。このキャッシュインデック
ス部分20cは、キャッシュ内のデータブロックをアク
セスするのに使用され、データブロックのサイズは64
バイトである。キャッシュインデックス部分は、キャッ
シュページアドレス部分20bを含む。又、物理アドレ
ス20は、キャッシュメモリの各ブロックの64バイト
の1つを選択するためのバイトアドレス部分20dも含
む。この実施形態は、512ページキャッシュを使用す
るものとして説明するが、それより多数又は少数のペー
ジを有するキャッシュを、異なるサイズのデータブロッ
クと共に使用できることが明らかであり、キャッシュペ
ージアドレス部分20b、キャッシュインデックスアド
レス部分20c及びバイトアドレス部分20dを含むア
ドレスビットは、それに応じて調整される。
【0014】図2Bにおいて、図1の変換バッファ17
に記憶するためのページテーブルエントリ24の例示的
フォーマットは、ページフレーム番号部分24a、有効
ビット24c、グローバル/プライベート(G/P)ビ
ット24d、実行時欠陥(Fault On Execute)(FOE)
ビット24e、読み取り時欠陥(Fault On Read) (FO
R)ビット24f及び書き込み時欠陥(Fault On Write)
(FOW)ビット25gを含むものとして示されてい
る。上記のように、コンピュータシステム10において
各仮想アドレスごとに1つのページテーブルエントリが
設けられる。ページフレーム番号24aは、関連する仮
想アドレスにより参照されるキャッシュページを識別す
るためのキャッシュページアドレス部分24bを含む。
有効ビット24cは、関連する物理ページフレーム番号
24cが有効であるかどうか、即ち仮想アドレスから物
理アドレスへの有効な変換が存在するかどうかを指示す
る。グローバル/プライベートビット24dは、関連プ
ロセスに指定された仮想メモリのグローバル又はプライ
ベート部分に関連仮想アドレスが存在するかどうかを識
別するのに使用される。FOE、FOR及びFOWビッ
トは、関連仮想アドレスが、各々、実行、読み取り又は
書き込みオペレーションに対してアクセスされるとき
に、欠陥状態を開始するのに使用される。G/Pビット
及びFOE、FOR及びFOWビットの使用は、以下に
詳細に述べる。又、ページテーブルエントリは、どのプ
ロセスが物理ページにアクセスする権利を有するかを指
示する所有権ビットと、ページが変更可能であるかどう
かを指示する変更ビットと、変換に関連すると思われる
他の情報のような他のビット(図示せず)を含むことも
できる。PTEは、ページフレーム番号に加えて上記制
御ビットのいかなるサブセットも含み、従って、本発明
は、図2Bに示すページテーブルエントリの使用に限定
されるものではない。
【0015】メモリアロケーター28(図1)は、変換
を必要とする各仮想アドレスに対してPTEを変更する
ことにより物理アドレスから仮想アドレスへのマッピン
グを制御するので、仮想アドレススペース内に物理アド
レスがいかに分布されるかについての制御権を有する。
図3を参照すれば、システムの仮想アドレス間にキャッ
シュページアドレスを均一に分布しそして広いレベルを
処理するのに使用できるメモリアロケーター28の1つ
の実施形態が示されている。メモリアロケーター28
は、空きメモリアレー30、システムカウンタ40及び
プロセスカウンタ60を含む多数のデータ構造体を含
む。ページアロケーターソフトウェアルーチン50は、
データ構造体30、40及び60の各々からデータを読
み取るように接続される。
【0016】空きメモリアレー30は、物理メモリの各
空きページに対応する1つのエントリを有するリンク型
リストデータ構造体である空きリスト32を含む。オペ
レーティングシステムが最初に初期化されるときには、
空きリストは、物理メモリの各ページを含む。オペレー
ション中に、物理ページが仮想アドレス及び他の専用ア
ドレスに指定されるときに、指定の物理ページが空きリ
スト32から除去されそして適当なリンク型リストポイ
ンタが更新される。図3の例では、メモリ18には物理
ページの「m」ページが使用できる。空きメモリアレー
30には、一連のリンク型リスト34a−34nも含ま
れている。これらリンク型リスト34a−34nの各々
は、多数のポインタを含み、各ポインタは、共通のキャ
ッシュページアドレスを有するページのみを指す。従っ
て、図3においては、リンク型リスト34aは、先ず、
空きリストのエレメント32aを指し、次いで、空きリ
ストのエレメント32dを指し、等々となり、ここで、
各エレメントは、同じキャッシュページアドレスを有す
る物理ページである。従って、空きメモリアレー30
は、リンク型リストを使用して実施された多次元アレー
であり、その1つの次元はメモリにおける全空きページ
を識別し、そして他の次元は同様のキャッシュページア
ドレスにマップするページを識別する。リンク型リスト
の実施が示されているが、本発明は、このような構成に
限定されるものではなく、キャッシュページアドレスに
関連した離散的アレーを含む他の構造体も使用できる。
【0017】上述したように、メモリアロケーター28
は、システムカウンタ40を更に含む。システムカウン
タ40は、一連のカウンタ42a−42nを含み、各カ
ウンタは、リンク型リスト34a−34nの対応する1
つに現在含まれた全ページ数を識別する。従って、キャ
ッシュページアドレス1のカウンタ42aは、リンク型
リスト34aにより指示された空きページの数に対応
し、従って、メモリアロケーターにより仮想アドレスへ
とマップするために使用できるキャッシュページアドレ
ス1を有する空きページの数を指示する。メモリアロケ
ーター28の1つの実施形態は、多数のプロセスカウン
タ60を更に含む。これらプロセスカウンタは、各プロ
セスP0、P1・・・PXに対して、多数のカウンタを
含み、各プロセスの各カウンタは、キャッシュ内の1つ
のページに対応する。各カウンタの内容は、各キャッシ
ュページアドレスを有するいかに多くのページがプロセ
スにより使用されるかを指示する。従って、プロセスP
0 62は、キャッシュページアドレス1カウンタ62
aと、キャッシュページアドレス2カウンタ62bと、
キャッシュページアドレス3カウンタ62cと、キャッ
シュページアドレスnカウンタ62nまでを含む他のカ
ウンタとを含み、但し、nは、キャッシュ16における
独特のページアドレスの数に対応し、上記実施形態で
は、512に等しい。
【0018】システムカウンタ40及びプロセスカウン
タ60は、ページアロケーターが、物理アドレスを仮想
アドレスへマップするための要求を受け取ったときに、
ページアロケーター50により使用される。ページ欠陥
を受け取ると、ページアロケーターは、実行されている
プロセスのキャッシュページアドレスカウンタの値に応
答すると共に、更に、システムカウンタ40の値にも応
答して、仮想アドレスへマップすべき物理アドレスを選
択するための基礎として、使用可能なキャッシュページ
アドレスの1つを選択する。例えば、図4を参照すれ
ば、8個のシステムカウンタ42a−42hのグループ
は、それらの各々のカウントを含むものとして示されて
おり、各カウントは、仮想アドレスへマッピングするの
に現在使用できる関連キャッシュページアドレスを有す
る空きページの数を指示する。例えば、カウンタ42a
により維持されるキャッシュページ1カウントは、キャ
ッシュページアドレス1を有する空き物理メモリに15
の空きページがあることを指示する。カウンタ42gに
より維持されるキャッシュページ7カウントは、キャッ
シュページアドレス7を有する物理的空きメモリに3つ
の空きページしかないことを指示する。カウンタ42f
により維持されるキャッシュページ6カウントは、キャ
ッシュページアドレスが6に等しい物理的空きメモリに
30の空きページがあることを指示する。システム巾の
ベースで、仮想アドレスに指定するための物理アドレス
を選択するときに、システム巾レベルでキャッシュペー
ジを均一に分布するためには、選択すべき最適なキャッ
シュページは、最大の空きページ数を指示するカウンタ
に関連したキャッシュページである。それ故、図4の例
では、最も好ましいシステム巾のキャッシュページアド
レスは、30の空きページを有するキャッシュページア
ドレス6である。
【0019】これに対して、プロセスカウンタは、関連
するキャッシュページアドレスを有するいかに多くのペ
ージがそのプロセスに既に割り当てられたかを示す。図
4において、プロセス0、プロセス1及びプロセス2に
関連した3組のプロセスカウンタが各々示されている。
プロセスにより使用されるページ数がキャッシュ内のペ
ージ数に厳密に等しいようなプロセスでは、好ましくは
カウント62a−62hの各々が1に等しく、従って、
同じプロセスの2つのページが同じキャッシュページに
マップされることはなく、その結果、プロセス内スラッ
シングのおそれが排除される。しかしながら、作用する
1組のプロセスが、キャッシュに使用できるページ数よ
りも著しく大きくなることがしばしばある。それ故、各
キャッシュページアドレスに対するカウントが1を越え
ることがある。従って、プロセスの観点から、指定のた
めに選択されるキャッシュページアドレスは、最小の対
応するプロセスページカウントを有するキャッシュペー
ジであることを確保するのが好ましい。図4の例では、
カウンタ62bにより指示されるキャッシュページアド
レス2は、プロセス0により現在使用されているキャッ
シュページアドレス2がゼロページであるので、プロセ
ス0に対する物理−仮想アドレスマッピングのための物
理アドレスを与えるものとして選択すべき好ましいペー
ジである。
【0020】システム巾の観点から与えるべき最適なキ
ャッシュページアドレスと、プロセスの観点から与える
べき最適なキャッシュページアドレスとの間に競合が生
じることがある。図4に示すように、システム巾に基づ
いて指定するための最適な物理ページは、キャッシュペ
ージアドレス6を有するものであり、一方、プロセス0
に対しプロセス巾に基づいて指定するための最適な物理
ページは、キャッシュページアドレス2を有するもので
ある。ここに開示するシステムの1つの実施形態によれ
ば、プロセス内のスラッシングを最小にするよう確保す
るために、プロセス巾に基づくキャッシュページアドレ
スの選択が、システム巾に基づくキャッシュページアド
レスの選択より優先する。もちろん、システムの選択を
優先するようにしてもよいことが明らかである。更に、
マッピングを求めるプロセスの形式又は優先順位に基づ
いて、システムを優先するかプロセスを優先するかで選
択基準を切り換えてもよいことも明らかである。
【0021】図5を参照すれば、キャッシュページアド
レスを所与のプロセスの仮想アドレスに指定するための
プロセス70の1つの実施形態が示されている。ステッ
プ72において、以下プロセス「Z」と称する所与のプ
ロセスは、仮想アドレスを物理アドレスに変換するよう
試みるときにページ欠陥を被る。例えば、これは、プロ
セスZが最初に形成され、そして初期の物理アドレスが
プロセスの仮想アドレスへとマップされるときに生じ
る。プロセスZがページ欠陥を被った後に、ページアロ
ケーター50は、プロセスポインタ60をチェックし
て、どのキャッシュページアドレスがそのプロセスにと
って好ましいかを決定する。例示の目的で、プロセスZ
がキャッシュページXを好ましいキャッシュページとし
て選択すると仮定する。ステップ76において、プロセ
スキャッシュページが選択されると、ページアロケータ
ーは、システムカウンタをチェックして、システム巾に
基づき仮想アドレスへマッピングするための最良のキャ
ッシュページアドレスを決定する。システムカウンタの
検査により、フローチャートにステップ78a、78b
及び78cとして示された3つの異なる進路が生じる。
ページアロケーターは、ステップ78aに示すようにキ
ャッシュページアドレスXを有するページを返送するこ
とができる。キャッシュページアドレスXを有するペー
ジがステップ78aで選択された場合には、ステップ8
2において、キャッシュページXアドレスに対するシス
テムカウントが減少され、そしてステップ84におい
て、キャッシュページXアドレスに対するプロセスZの
プロセスカウントが増加される。
【0022】或いは又、システムは、ステップ78bに
おいて、それがキャッシュページXの使用可能なページ
を有するが、システム巾に基づきキャッシュページアド
レスを分布するのに使用する好ましいページはキャッシ
ュページYのページであることを指示する。次いで、ペ
ージアロケーターは、プロセスがキャッシュページアド
レスXを有するページを使用できるか又はキャッシュペ
ージアドレスYを有するページを使用できるかに基づい
て、ステップ80a又はステップ80bのいずれかを実
行する。例えば、キャッシュページアドレスYの非常に
多数のページがプロセスに既に使用されているために、
キャッシュページアドレスYを有するページをプロセス
が使用できない場合には、ステップ80aにおいて、ペ
ージアロケーターは、キャッシュページアドレスXを有
するページを選択し、そして上記のようにステップ82
及び84へ進み、そこで、キャッシュページアドレスX
のシステムカウンタが減少され、そしてキャッシュペー
ジアドレスXのプロセスカウンタが増加される。プロセ
スがキャッシュページアドレスYのページを使用できる
場合には、ステップ80bにおいて、ページアロケータ
ーは、キャッシュページアドレスYを有するページを選
択し、そしてプロセスは、ステップ86及び88へ進
み、そこで、キャッシュページアドレスYに対するプロ
セスZのシステムカウンタが減少され、そしてキャッシ
ュページアドレスYに対するプロセスカウンタが増加さ
れる。
【0023】しかしながら、システムがキャッシュペー
ジアドレスXのページを有していない場合には、ステッ
プ78cにおいて、システムは、キャッシュページアド
レスYのみをページアロケーターに返送する。たとえプ
ロセスがキャッシュページアドレスYの多数のページを
既に有していても、ページアロケーターはこのページを
使用し、そしてステップ86及び88へ進み、ここで、
プロセスYに対するシステムカウントが減少され、そし
てキャッシュページYに対するプロセスZのプロセスカ
ウンタが増加される。キャッシュページアドレスXが選
択されるか又はキャッシュページアドレスYが選択され
るかに関わりなく、ページアロケーターはステップ90
へ進み、ここで、選択されたキャッシュページアドレス
を含む物理アドレスがページテーブル26(図3)へ送
られる。
【0024】ページアロケーターは、全システム巾のキ
ャッシュページアドレス分布を良好に満足すると共にプ
ロセスに対しても満足である別のページをプロセスが選
択することを要求してもよい。これらの場合に、所望の
プロセスキャッシュページアドレスのページが使用でき
ないときは、ページアロケーターは、システムを最も良
好に満足させるキャッシュページアドレスを使用する。
更に、ページアロケーターが好ましいプロセスページを
繰り返し要求できるようにする方法を含む他の実施形態
も、本発明に使用できることが明らかである。従って、
図3に示すメモリアロケーター28は、キャッシュペー
ジアドレスがプロセス巾に基づき均一に分布されるよう
に仮想−物理マッピングに対して物理メモリのページを
選択できるようにするデータ構造体を含む。このような
構成では、プロセス内スラッシングを最小にし、ひいて
は、そのプロセスの性能を最適化できるように確保する
ことができる。加えて、キャッシュページアドレスは、
システム巾のベースでも均一に分布されるので、プロセ
ス間スラッシングが最小にされ、従って、全システム巾
性能が高められるよう確保することができる。
【0025】システム及びプロセス巾のレベルにおいて
キャッシュページの均一分布を維持するための上記方法
及び装置は、種々の異なるオペレーションに更に使用す
ることができる。例えば、この方法は、プロセスの異な
る部分間、例えばプロセスのローカル部分とグローバル
部分との間にページの均一な分布を与えるように拡張す
ることができる。更に、この方法の原理は、データ構造
体内にキャッシュページアドレスの均一分布を与えるよ
うに拡張することもできる。又、この方法は、他のプロ
セスにより使用するための使用可能なページとしてプロ
セスからページをリクレームすることが必要なときに、
残りのプロセス間及びシステムにおける使用可能なペー
ジ間の両方にページの均一な分布が維持されるようにペ
ージのリクレームが確実に実行されるように拡張するこ
ともできる。更に、この方法及び装置は、プロセスがシ
ステムへそしてシステムからスワップされるときにペー
ジの均一な分布を維持するためのロジックを含むように
増強することができる。上記機能を達成するための方法
及び装置について、更に詳細に説明する。
【0026】仮想メモリのプライベート領域及びグロー
バル領域へのアドレスの指定 既に述べたように、上記技術は、プロセスに指定された
仮想アドレススペースの異なる領域において仮想アドレ
ス間にキャッシュページの均一な分布を維持するように
増強することができる。異なる領域の各々に対して専用
のキャッシュページアドレスが存在するように仮想アド
レススペースの異なる領域の各々にある数のキャッシュ
ページアドレスを割り当てることにより、均一な分布が
維持される。仮想アドレススペースの異なる領域の各々
において仮想アドレスへ割り当てるための物理アドレス
を選択するときには、図5について述べたのと同様の段
階を実行し、プロセス内及びシステム巾レベルで領域内
に各専用のキャッシュページアドレスが均一に分布され
るように確保する。
【0027】仮想メモリの異なる領域にキャッシュペー
ジアドレスを均一に分布するための方法は、一般的に次
のように機能する。各プロセスがコンピュータシステム
10に最初に導入されるときに、仮想メモリのある区分
がそのプロセスに割り当てられる。図6には、所与のプ
ロセスXに対し仮想アドレススペース内にアドレスを割
り当てる一例が示されている。仮想アドレススペース1
00は、システムにおいて実行される各プロセスにより
共用できるグローバル(共用)領域102と、プライベ
ート領域104とを備えている。グローバル領域102
は、中央処理ユニットにおいて動作するいずれのプロセ
スにも使用できる命令及びデータを記憶する。例えば、
グローバル領域102には共用ライブラリー及びスター
トアップコードを記憶することができる。プライベート
領域104は、プロセスXが実行されるときだけ使用さ
れるべき仮想アドレスへのマッピングを与えるのに使用
される。
【0028】図7を参照すれば、ここに示すシステム1
20の1つの実施形態において、キャッシュページは、
グローバルキャッシュページ及びプライベートキャッシ
ュページに区画化される。この区画は、キャッシュ12
6において破線125で指示されている。グローバルな
キャッシュページアドレスを有する物理ページは、グロ
ーバルな仮想アドレス間に均一に分布され、一方、プラ
イベートなキャッシュページアドレスを有する物理ペー
ジは、プライベートな仮想アドレス間に均一に分布され
る。仮想アドレススペースのグローバル及びプライベー
ト領域に異なるキャッシュページアドレスを割り当てる
ことにより、グローバル領域に記憶されたデータの要求
が、プライベート領域に記憶されたデータの要求と競合
することはない。異なる割り当てのプライベート領域を
有する多数のプロセスは、グローバル領域に記憶された
同じデータを使用できるので、物理アドレスの割り当て
を分離することにより、プロセスのプライベート参照が
グローバル参照とスラッシングしないよう確保される。
このような区画は、特に有用である。というのは、グロ
ーバルページは、物理アドレスへいったんマッピングさ
れると、長時間にわたってシステムに保持されるからで
ある。
【0029】仮想アドレススペースのプライベート領域
104へ物理メモリをマップしたプロセスが終了する
と、そのプロセスにマップされた物理ページは、他のプ
ロセスに割り当てられるべく空きリスト32(図3)へ
返送される。これに対し、プロセスにより使用されるデ
ータが仮想アドレススペースのグローバル領域を使用し
て物理メモリへマップされ、そしてグローバル領域のデ
ータを使用するプロセスが終了するときには、これらの
データページが空きリストへ返送されない。むしろ、グ
ローバルスペースに記憶されたデータの物理ページは、
データをフェッチしそしてデータに対する新たな物理−
仮想変換を得ることに関連した遅延を生じることなく、
次のプロセスがデータを使用できるように保持される。
ここに示すシステムの1つの実施形態によれば、プライ
ベート及びグローバルページに対し異なる取り扱い手順
をたどるので、物理ページを仮想メモリのプライベート
領域と仮想メモリのグローバル領域とに指定するため
に、異なる方法が使用される。図7について上述したよ
うに、破線125は、キャッシュページをグローバルキ
ャッシュページ及びプライベートキャッシュページに区
画化するところを示す。図7に示す実施形態では、上位
のキャッシュページは、仮想メモリのグローバル領域に
マップされたデータを専用に記憶し、一方、下位のキャ
ッシュページは、仮想メモリのプライベート領域にマッ
プされたデータを専用に記憶する。例えば、仮想メモリ
のグローバル領域からのデータが下位のキャッシュペー
ジに記憶されるか又はキャッシュのページ間で食い違わ
されるような他の実施形態も、本発明に使用できる。一
般に、所定数のキャッシュページアドレスが、グローバ
ルな仮想アドレスを専用にマッピングし、残りの数のキ
ャッシュページアドレスは、プライベートな仮想アドレ
スをマッピングするのに指定される。
【0030】グローバルな仮想アドレスを専用にマッピ
ングする所定数のページは、CPUにより実行されるオ
ペレーションの形式に応答してCPUにより決定され
る。例えば、多量のファイルサービスを遂行するための
アプリケーションを実行するCPUは、グローバルデー
タを記憶するためにキャッシュの多数のページを割り当
て、一方、他のプロセッサとでデータを共用しないプロ
セス集中アプリケーションを実行するCPUは、グロー
バルデータを記憶するためにキャッシュの比較的少数の
ページしか割り当てない。グローバルな仮想アドレスを
マッピングするために指定されるべきキャッシュページ
アドレスの数は、CPUサブシステム122からメモリ
アロケーター128へグローバルページ数122cとし
て送られる。グローバルページ数122cは、図7にお
いてそれ自身のバスを経て送られるものとして示されて
いるが、データライン122bを経て送られてもよい
し、或いはデータ構造体又はCPUのアドレス可能なレ
ジスタに変数として記憶されてもよい。
【0031】上述したように、ページテーブル129内
のエントリに有効な変換がないときには、そのエントリ
により変換される仮想アドレスを参照する結果として、
その事象をメモリアロケーター128に指示するための
ページ欠陥信号がアサートされる。更に、ページ形式信
号134がページテーブル129からメモリアロケータ
ーへ送られ、どんな形式の仮想アドレス(グローバル又
はプライベート)がメモリのページの物理アドレスへの
マッピングを要求するか指示する。ページ形式信号13
4は、例えば、仮想アドレスの関連ページテーブルエン
トリのグローバル/プライベートビット124d(図2
C)に応答して決定される。メモリアロケーター128
は、キャッシュページがシステム及びプロセス巾レベル
で実質的に均一に分布されそしてグローバル及びプライ
ベートな仮想メモリ領域の各々内でも均一に分布される
ように、最適なキャッシュページアドレスを有する物理
アドレスを選択する。
【0032】例えば、図8を参照すれば、仮想メモリの
グローバル及びプライベート領域内にキャッシュページ
アドレスを分布させるためのメモリアロケーター128
は、空きメモリアレー130、システムカウンタ140
及びプロセスカウンタ160を備え、その各々は、図3
について述べたメモリアレー30、システムカウンタ4
0及びプロセスカウンタ60と実質的に同様に動作す
る。しかしながら、システムカウンタ140は、破線1
52で示すように、グローバルなキャッシュページアド
レスカウンタ140a及びプライベートなキャッシュペ
ージアドレスカウンタ140bに配分される。グローバ
ルキャッシュページとして指定されるページの数は、グ
ローバルページ数により決定されそしてCPU121に
より与えられる。それ故、グローバルカウンタは、カウ
ンタ142a・・・142gc(ここで、gcは、グロ
ーバルカウント数に等しい)を備え、そしてプライベー
トカウンタは、カウンタ142gc+1・・・142n
を備えている。メモリアロケーター128は、ページア
ロケーター150を含む。ページアロケーター150
は、システムカウンタ及びプロセスカウンタからの情報
と、CPU121からのグローバルページ数と、ページ
テーブル129からのページ形式とを使用して、キャッ
シュコンピュータシステム120におけるスラッシング
を最小にするキャッシュページアドレスを有する物理メ
モリのページを選択するためのソフトウェアプログラム
である。
【0033】上記のように、仮想アドレスへ指定するた
めの物理的キャッシュページアドレスを選択するプロセ
スは、仮想アドレスが仮想メモリのグローバル領域にマ
ップされるかプライベート領域にマップされるかに基づ
いて異なる。仮想メモリのグローバル領域において物理
メモリのページを仮想アドレスにマップするために物理
的キャッシュページアドレスを選択するときには、グロ
ーバルなキャッシュページアドレスカウンタ140aの
みが検査されて、最適な物理的キャッシュページアドレ
スが選択される。仮想メモリのプライベート領域におい
て物理メモリのページを仮想アドレスにマップするため
に物理的キャッシュページアドレスを選択するときに
は、プライベートなキャッシュページアドレスカウンタ
140bとプロセスカウンタ160との両方を検査し
て、最適な物理的キャッシュページアドレスが選択され
る。
【0034】仮想メモリのグローバル又はプライベート
領域のいずれかにおいて物理アドレスを仮想アドレスに
マップするのに使用されるプロセスが図9に示されてお
り、図8の要素を参照して説明する。ステップ172に
おいて、仮想アドレスをマッピングするために物理メモ
リのページが必要とされることを指示するページ欠陥信
号がページテーブル29から受け取られる。仮想アドレ
スのページ形式もページアロケーター150に送られ、
ページ形式は、マッピングを必要とする仮想アドレスが
仮想メモリのグローバル領域からのものであるかプライ
ベート領域からのものであるかを指示する。ステップ1
74において、ページアロケーター150は、ページ形
式を検査して、仮想アドレスが仮想メモリのグローバル
領域にあるかプライベート領域にあるかを決定する。仮
想アドレスが仮想メモリのグローバル領域からのもので
あるとページ形式が指示する場合には、ステップ176
において、ページアロケーター150がグローバルなキ
ャッシュページアドレスカウンタ140aを検査して、
最も大きなページ数を有するカウンタに関連したキャッ
シュページアドレスを選択する。プロセスカウンタ16
0にも、プライベートなキャッシュページアドレスカウ
ンタ140bにも参照がなされず、従って、仮想メモリ
のグローバル領域における仮想アドレスのマッピング
は、グローバルなキャッシュページアドレスカウンタ1
40aのみに応答して決定される。
【0035】しかしながら、ステップ174において、
仮想アドレスが仮想メモリのプライベート領域からのも
のであるとページ形式が指示する場合には、ステップ1
78において、ページアロケーター159は、図4及び
5について既に述べたステップを使用し、全てのシステ
ムカウンタ140ではなくプライベートなキャッシュペ
ージアドレス140bのみを調べて、物理的キャッシュ
ページアドレスを選択する。従って、仮想メモリのプラ
イベート領域において仮想アドレスに指定するための最
適なキャッシュページアドレスを決定する際には、プラ
イベートなキャッシュページアドレスカウンタ140b
が、その関連プロセスのプロセスカウンタ160と共に
調べられ、現在プロセス内で全てのプロセスにわたって
キャッシュページアドレスが均一に分布されるようにキ
ャッシュページアドレスが選択される。
【0036】従って、キャッシュメモリをグローバル領
域とプライベート領域に分離することにより、グローバ
ルな仮想アドレスとプライベートな仮想アドレスとの間
のスラッシングが排除される。キャッシュを区画化する
ための単純な方法は、システムのキャッシュページアド
レスカウンタをグローバルなキャッシュページアドレス
カウンタとプライベートなキャッシュページアドレスカ
ウンタに配分し、そしてマッピングされるべき仮想アド
レスの仮想メモリ領域に関連したキャッシュページアド
レスをマッピングのための物理的ページアドレスを選択
することにより遂行される。キャッシュページアドレス
の区画化は、システムの要求が変化するときに動的に調
整することができ、そして仮想メモリのグローバルな領
域をマップするために、より多くの又はより少数のキャ
ッシュページアドレスが必要とされる。上記方法は、グ
ローバル及びプライベート領域について説明したが、仮
想メモリのいかなる数の領域内でもキャッシュページア
ドレスの分布をサポートするように拡張することがで
き、従って、本発明は、2つの領域の使用に限定されな
いことが明らかである。
【0037】データ構造体への物理メモリページの指定 ここに示すシステムの1つの実施形態によれば、物理的
メモリページをデータ構造体に割り当てるための改良さ
れた方法が使用される。ここに示すシステムによりアク
セスレートが改善されるデータ構造体、及びキャッシュ
ページアドレスに基づいて物理的メモリページを選択す
る方法の一例は、単一フィールドバッファキャッシュ
(UBC)である。このUBCは、ファイルシステムデ
ータを記憶するために主として使用されるソフトウェア
キャッシュである。UBCに記憶されるデータは、コン
ピュータシステムにおいて実行される全てのプロセスに
使用できる。ここに示す実施形態では、仮想アドレスの
変換を必要とせずに、物理的アドレッシングを用いて直
接アクセスされる1組の物理的メモリページがUBCに
関連される。
【0038】UBCにおけるデータのページは、オブジ
ェクト識別子及びオフセットを含む「位置決めハンド
ル」を使用して位置決めされる。オブジェクト識別子
は、ファイルサーバから検索される特定のファイルに関
連され、一方、オフセットは、ファイル内のページを識
別する。ページが位置決めされると、ページ内のデータ
が「アクセスハンドル」を用いてアクセスされる。「ア
クセスハンドル」は、ページの物理的アドレスであり、
これを用いてページへ及びページからデータを転送し、
ページをマップする必要性が回避される。データのファ
イルがファイルシステムから検索されるたびに、物理的
メモリのページがファイルに対して指定される。ファイ
ルのサイズは、通常、典型的なハードウェアキャッシュ
のサイズより小さいので、ファイルシステムデータのペ
ージをキャッシュ内の異なるアドレスに分布させるのが
効果的である。ファイルシステムデータのページをキャ
ッシュ内の異なるページに分布させることにより、外部
装置からページを検索するという時間のかかるやり方が
最小限とされる。
【0039】上記のように、UBCは、数百又は数千の
データファイルを同時に記憶することができる。本発明
の1つの特徴によれば、UBCに記憶された全てのファ
イル又はファイルシステムデータへの高速アクセスを与
えるために、UBCに割り当てられた物理的ページは、
物理アドレスのキャッシュページアドレス部分がUBC
内及び/又はUBCのファイル内に均一に分布されるよ
うに選択される。図10は、単一フィールドバッファキ
ャッシュに物理アドレスを割り当てるためのメモリアロ
ケーター128の1つの実施形態を示すブロック図であ
る。上記したように、UBCは、ソフトウェアキャッシ
ュであり、その読み取り及び書き込みは、UBCコント
ロールモジュール106により制御される。1つの実施
形態によれば、UBCは、リンク型リストデータ構造体
107を備え、このデータ構造体の各エントリ107
a、107b、107cは、外部I/Oデバイスから検
索された(ファイルサーバ等を経て)データのページ
と、UBCリンクリストにおける次のキャッシュページ
を指すポインタとを記憶する。或いは、アレー等の他の
データ構造体を使用してもよく、従って、本発明は、リ
ンク型リストデータ構造体の使用に限定されるものでは
ない。
【0040】UBCにどのデータページを記憶すべきか
の選択は、コンピュータシステムにおいて実行されるコ
マンドに応答して決定される。コンピュータシステムに
おいて実行されるプロセスが、例えば、ファイルシステ
ムデータへのREAD()又はWRITE()コマンド
を実行するときに、UBCがアクセスされる。READ
()又はWRITE()コマンドはファイル識別子を含
み、これは、UBCに記憶されたファイルをアクセスす
るためのオブジェクト識別子及びオフセットに変換され
る。ファイルシステムデータは、例えば、ディスク又は
テープドライブのような外部の入力/出力デバイスに記
憶される。UBCにおいて物理的ページが既に割り当て
られているデータに対してREAD()/WRIT
E()コマンドがイッシューされた場合には、そのペー
ジの物理アドレスをUBCコントロールモジュール10
6に使用して、そのページをアクセスすることができ
る。しかしながら、UBCにおいて物理的アドレスにま
だマップされてないデータに対してREAD()又はW
RITE()コマンドがイッシューされる場合には、そ
のデータを記憶するための物理的ページを割り当てる必
要がある。
【0041】UBCコントロールモジュールには、UB
Cにより使用されるべき物理メモリのページを選択する
ためにUBCキャッシュページアドレスセレクタモジュ
ール109が接続される。ここに示すシステムの1つの
実施形態によれば、物理的メモリの選択されたページ
は、ファイル特有の番号に基づいてUBCキャッシュペ
ージアドレスセレクタ109により選択されるキャッシ
ュページアドレスを含む物理アドレスを有する。1つの
実施形態では、ファイル特有の「ランダム」番号は、参
照されるデータを保持するファイルに関連したオブジェ
クト構造体の仮想アドレスのサブセットに等しい。ある
実施形態では、仮想アドレスのサブセットは、2つの異
なるファイルオブジェクトに対して同じ番号が選択され
る機会を最小にするように選択される。従って、ファイ
ル特有の「ランダム」番号が9ビットの長さでなければ
ならず、メモリが128バイト(7ビット)境界に割り
当てられ、そしてビット0−2が常に0に等しいアドレ
スにメモリが割り当てられるような実施形態では、各々
の割り当てられたメモリアドレスのビット3−7は、メ
モリ割り当ての任意のセットにわたって最も迅速に変化
するビットである。このような状態においては、ビット
3−12、即ちビット3−7を含む全部で9ビットが、
各ファイルオブジェクトの仮想アドレスのファイル特有
の「ランダム」番号部分として使用される。上述したよ
うに、ファイルオブジェクト構造体は、オープンした各
データファイルを記述するためにオペレーティングシス
テムにより使用される内部データ構造体である。このよ
うに、キャッシュデータアドレスは、オブジェクトのア
ドレスに基づいて選択される。オープンしたデータファ
イルのページがUBCに読み込まれる時には、オブジェ
クト構造体のアドレスに対するオフセットがページに指
定され、オフセットは直線的に指定される必要がない。
【0042】キャッシュページアドレスは、更に、割り
当て番号に基づいて選択され、この割り当て番号は、U
BCに既に記憶されているデータファイルのページの数
に対してアクセスされるページの相対的な位置に対応す
る。例えば、UBCに記憶されたデータファイルの第3
ページは、割り当て番号3を有する。従って、選択され
るキャッシュページアドレスは、ページに対する指定オ
フセットに関わりなく選択される。UBCキャッシュペ
ージアドレスセレクタは、グローバルなキャッシュペー
ジアドレスカウンタ140a及びプライベートなキャッ
シュページアドレスカウンタ140bに接続される。キ
ャッシュページアドレスセレクタは、キャッシュページ
アドレスを選択するときにカウンタ140a及び140
bからの情報を使用しないが、キャッシュページアドレ
スカウンタに選択されたアドレスを通知してそれらカウ
ンタを減少し、それらカウンタが、非UBC割り当て方
法に対して物理アドレスを仮想アドレスに割り当てる際
に使用するための適切な状態となるようにする。図3及
び8の実施形態と同様に、キャッシュページアドレスカ
ウンタは、空きリスト132及びキャッシュページアド
レスリスト134a−134dに接続され、選択された
キャッシュページアドレスを用いてこれらリストの1つ
から全物理アドレスを与える。
【0043】UBCキャッシュページアドレスセレクタ
109は、UBCにおける物理的メモリページの物理ア
ドレス間にキャッシュページアドレスが均一に分布され
るようにUBCに記憶されるべきデータに対する物理ア
ドレスを選択する。上述のように、UBCキャッシュペ
ージアドレスセレクタは、ファイル特有の番号(R)
(これは、1つの実施形態では、データファイルに関連
したオブジェクトデータ構造体のアドレスのサブセット
である)と、グローバルキャッシュページの全数(G
C)と、データファイルの既に割り当てられたページに
対するデータページの割り当て数(A)とに応答して、
キャッシュページアドレスを次の式1を用いて選択す
る。 式1: キャッシュページアドレス=(R+A)AND(GC−
1) キャッシュページアドレスが選択されると、UBCキャ
ッシュページアドレスセレクタ109は、選択されたキ
ャッシュページアドレスをキャッシュページアドレスカ
ウンタ140a及び140bへ送る。選択されたキャッ
シュページアドレスを有する物理アドレスは、対応する
キャッシュページアドレスリスト134a−134c
(図12)の1つから検索され、そしてそれに関連する
キャッシュページアドレスカウンタが減少される。
【0044】図11は、ユニバーサルバッファキャッシ
ュへメモリの物理ページを割り当てるための方法を例示
するフローチャートである。ステップ110において、
I/Oデバイスからデータファイルのページをアクセス
するためにデータのREAD()又はWRITE()が
実行される。ステップ111において、ファイルに対す
るオブジェクトデータ構造体の仮想アドレスが決定され
る。これが、データファイルがアクセスされた最初のと
きである場合には、オブジェクトデータ構造体のアドレ
スがオペレーティングシステムにより指定される。それ
が既にオープンしている場合には、オブジェクトデータ
構造体のアドレスがオペレーティングシステムにおいて
オブジェクト識別子テーブル(図示せず)に記憶され
る。オブジェクトデータ構造体のアドレスの1つ以上の
ビット(即ち、独特の識別子を形成するに必要なビッ
ト)は、キャッシュページアドレスを選択する目的でフ
ァイル特有の番号(R)として使用される。ページに対
してページオフセットが発生され、該オフセットは、フ
ァイル又はファイルオブジェクトのベースアドレスと、
アクセスされるページのアドレスとの間の相違を表す値
である。更に、データのページに対する割り当て番号
(A)が決定され、この割り当て番号は、UBCに既に
記憶されたデータファイルのページの数に対応する。オ
フセット値と割り当て番号との間に直接的な対応は必要
とされないことに注意されたい。
【0045】ステップ112において、オフセットと、
UBCに記憶された各ページの各オフセットとの間の比
較がなされる。一致がある場合には、データページがU
BCに既に記憶されており、プロセスはステップ120
へ続き、既に割り当てられた物理ページアドレスがRE
AD()又はWRITE()参照として使用される。一
致がない場合には、プロセスはステップ114へ進み、
上記式1に基づきUBCキャッシュページアドレスセレ
クタ109によりキャッシュページアドレスが選択され
る。ステップ116において、選択されたキャッシュペ
ージアドレスがグローバルなキャッシュページアドレス
カウンタ140aへ送られ、選択されたキャッシュペー
ジアドレスを有する物理アドレスが割り当てられ、そし
てそれに関連するカウンタ及びリンク型リストが更新さ
れる。ステップ118において、I/Oオペレーション
が実行されて、それに関連するデータページが外部デバ
イスから検索され、そしてステップ120において、U
BCにより割り当てられた物理メモリの物理アドレスに
ページがコピーされる。
【0046】従って、物理アドレスがUBCのエントリ
に割り当てられると、ファイルサーバデータがアクセス
されるたびに、外部I/Oデバイスからデータを検索す
るという時間のかかる段階を繰り返す必要はない。ペー
ジの割り当て番号を用いて、割り当てられる物理アドレ
スに対するキャッシュページアドレスを選択することに
より、ファイル内スラッシングが減少される。又、キャ
ッシュページアドレスを決定するための基礎として使用
されるファイル特有の「ランダム」番号が、ファイル特
有のオブジェクトアドレスの1つ以上のビットから発生
されるので、ファイル間スラッシングが最小にされる。
従って、データ構造体のエントリに対し物理的メモリを
割り当てるときに使用すべきキャッシュページアドレス
を選択するための方法及び装置が提供された。キャッシ
ュページアドレスを割り当てるための上記方法は、UB
Cデータ構造体について説明したが、本発明は、このよ
うな使用に限定されるものではない。むしろ、キャッシ
ュページアドレスを選択する上記方法は、そのデータ構
造体内のデータをアクセスすることに関連して生じ得る
スラッシングを減少するために、1つ以上のプロセスに
よりアクセスされるエントリを有するデータ構造体に対
して使用される。
【0047】キャッシュページアドレスのリクレーム 上記方法は、割り当てられるべき物理メモリのページに
対しキャッシュページアドレスを選択するための技術に
ついて述べたが、物理メモリのページをリクレームしな
ければならない状態が生じ得る。以下に述べるように、
物理メモリのリクレームは、指定されたキャッシュペー
ジアドレスの均一な分布が保持されるよう確保すると共
に、未指定のキャッシュページアドレスの均一な分布が
システムに得られるように確保するために実行される。
未指定のキャッシュページアドレスの均一な分布を維持
することは、種々のキャッシュページアドレスがその後
の指定に使用できるように確保する助けとなる。上述し
たように、グローバルな仮想アドレスが物理メモリのペ
ージにマップされると、初期プロセスが終了した後に物
理ページのマッピングを均一に維持することができる。
グローバルな仮想アドレスへのマッピングに使用できる
物理メモリが著しく又は完全に使用されるが、更に多く
のグローバルな仮想アドレスが物理アドレスへのマッピ
ングを要求するときに、問題が生じる。システムにおい
て現在アクティブなプロセスが、プライベートな仮想ア
ドレスへのマッピングに使用できる以上の物理メモリの
ページを必要とするときには、プライベートな仮想アド
レススペースに同様の問題が生じる。物理メモリにおけ
る全使用可能なページに対して測定されるページの全必
要性を「コミットメント比」と称する。この全必要性が
全使用可能なページに等しいときに、コミットメント比
は1である。必要性が使用可能なページの全数を越える
と、コミットメント比は1より大きくなり、そしてプロ
セス(プライベートスペースにおける)又はグローバル
データ(グローバルスペースにおける)に既に指定され
た物理的ページをリクレームしなければならない。
【0048】物理メモリのページがリクレームされると
きには、物理ページに既に記憶されているデータがディ
スクのようなバックアップ記憶エリアに書き込まれ、そ
して物理ページは、コンピュータシステムにおいて実行
される他のプロセスによって使用されるように解放され
る。現在実行中のプロセスが円滑に実行し続けるよう確
保するために、どの物理ページがリクレームすべき最適
な物理ページであるかを決定するときに問題が生じる。
リクレーミングのためのページを選択する1つの方法
は、割り当てられた物理メモリの最も最近使用された
(LRU)ページを位置決めすることである。LRUペ
ージリクレーム方法は、物理メモリにおけるデータの各
ページと共に、そのデータのページが最後にアクセスさ
れたときを示すタイムスタンプを記憶する。LRU方法
を用いてリクレームのための最適なページを選択すると
きには、タイムスタンプを調べて、最も最近使用された
物理ページを位置決めする。LRU方法によりとられる
仮定は、最も最近使用されたページが現在実行中のプロ
セスに対し他のページほど厳密でなく、従って、リクレ
ームできることである。リクレームのためのページを選
択する他の方法は、割り当てられたページを所有するプ
ロセスの動作優先順位を更に調べて、比較的低い優先順
位を有するプロセスのページをリクレームすることであ
る。
【0049】本発明の1つの実施形態によれば、物理メ
モリのページのリクレーミングは、上記選択基準に応答
して決定されるだけでなく、更に、考えられるリクレー
ミングに対して調べられているページのキャッシュペー
ジアドレスにも応答して決定される。リクレーミングの
ためのページをそのキャッシュページアドレスに基づい
て選択することにより、コンピュータシステムのキャッ
シュにおける将来のスラッシングを最小にする目的で最
良のページが選択されるよう確保することができる。図
12は、図3又は8について述べたように動作するペー
ジアロケーター150と、システムカウンタ140と、
空きメモリアレー130とを含むメモリアロケーター2
28の一実施形態を示すブロック図である。更に、メモ
リアロケーター228は、ページリクレーマー250
と、プロセスカウンタ260とを含む。図11に示した
ように、プロセスカウンタは、各キャッシュページアド
レスごとに、プロセスに使用できるn個のキャッシュペ
ージアドレスの各々について全カウント254a−25
4nを含むように増加されている。各々の全カウントカ
ウンタは、全てのプロセスにわたって割り当てられた特
定のキャッシュページアドレスを有する物理ページの全
数に等しく維持される。ページリクレーマー250は、
以下に述べるように、システムカウンタ140及び全プ
ロセスカウンタ254を用いてコンピュータシステムか
らの所望のキャッシュページアドレスを有するページの
リクレーミングを制御するソフトウェアモジュールであ
る。
【0050】図13を参照すれば、システムカウンタ1
40は、特定のキャッシュページアドレスに対応する空
きページのカウントを指示する。ページをリクレームす
るためのキャッシュページアドレスを選択するときに
は、選択すべき最適なシステムキャッシュページアドレ
スは、最小の使用可能なページに関連したキャッシュペ
ージアドレスである。図12の例では、システム巾をベ
ースとすると、選択すべき最適なシステムキャッシュペ
ージは、カウンタ142gに関連したキャッシュページ
アドレス7である。キャッシュページアドレス7には残
りページが3しかないので、物理アドレスへ後でマッピ
ングするためのキャッシュページアドレスの分布を維持
するために、キャッシュページアドレス7のページをリ
クレームするのが好ましい。更に、キャッシュページア
ドレス7の更に多くのページがシステムに現在マップさ
れるので、コンピュータシステムに使用するものでない
データを記憶するために少なくとも1つのページが使用
される確率が存在する。
【0051】プロセスページをリクレームするときに
は、選択すべき最適なキャッシュページアドレスは、全
てのプロセスによりほとんどがマップされるキャッシュ
ページアドレスである。従って、プロセスキャッシュペ
ージアドレスの各々の全カウントは、プロセスに使用で
きるn個のキャッシュページアドレスの各々に対しカウ
ント254a−254nに維持される。プロセスカウン
タの1つが増加又は減少されるたびに、そのキャッシュ
ページアドレスに関連する全カウンタも、同様に増加又
は減少される。図12の例では、ここに示すプロセスに
対し、キャッシュページアドレス3の全カウントは、6
に等しい。それ故、プロセス巾のベースでは、リクレー
ムすべき最適な物理ページは、キャッシュページアドレ
ス3を有するこれら割り当てられた物理ページの1つと
なる。
【0052】図14A及び14Bは、メモリの物理ペー
ジをリクレームするのに使用されるプロセスの一実施形
態を示すフローチャートである。一般に、メモリの物理
ページをリクレームするプロセスは、両方が同時に実行
される2つの個別のプロセスに分割される。図14Aに
示す第1のプロセスの間に、リクレームされ得る物理メ
モリの潜在的なページのリストが発生される。このリス
トからのページが、バックアップ記憶装置のような外部
の記憶装置にコピーされる。このリストは、クリーンリ
ストと称される。例えば、次のパラメータ、即ちページ
をマッピングするプロセスの数、ページが最後にアクセ
スされた時間、ページを使用するプロセスの形式及び/
又は優先順位、そしてページのキャッシュページアドレ
スに基づき、空きリストに入れるためのページが選択さ
れる。リクレーミングの候補としてページを選択すると
きには、プロセスカウンタ260を調べて、全てのプロ
セスのプライベート仮想アドレスにほとんどがマップさ
れるキャッシュページアドレス、即ち最も大きな全キャ
ッシュページアドレスカウントをもつキャッシュページ
アドレスを識別する。リクレーミングのための物理メモ
リのページを選択する公知の他の基準も使用できる。ク
リーンリストに与えられたページのキャッシュページア
ドレスを調べることにより、システムに使用されるキャ
ッシュページアドレスの均一な分布が保持されると共
に、空きリストにおけるキャッシュページアドレスの均
一な分布も保持されるように、リクレームされるページ
が選択されるよう確保できる。
【0053】図14Bに示す第2のプロセスの間に、ク
リーンリストからの1つのページがリクレームすべきペ
ージとして選択される。クリーンリストからのページ
は、システムキャッシュページアドレスカウンタ及びプ
ロセスキャッシュページアドレスカウンタに応答して選
択され、システム及びプロセス巾レベルで使用可能及び
使用中の両方のキャッシュページアドレスの均一な分布
が得られるようにする。クリーンリストのページは、そ
れらが実際にリクレームされるときより充分前にバック
アップ記憶装置にコピーされているので、ページリクレ
ーミングを実行するためには、物理アドレスが例えばク
リーンリストから空きリストへ単に移動されるだけであ
る。その結果、実際にページのリクレーミングが必要と
されるときに貴重な時間が節約されると共に、リクレー
ムされた物理ページは、変換を待機する保留中プロセス
を満足するように迅速に与えられる。
【0054】図14Aを参照し、クリーンリストを作成
するプロセスを詳細に説明する。ステップ182におい
て、メモリのコミットメント比が、プライベート及びグ
ローバルな仮想メモリのためのスレッシュホールド比と
比較される。コミットメント比は、物理メモリの割り当
てられたページ数を物理メモリの全ページ数で除算した
ものである。従って、コミットメント比が1であること
は、物理メモリの全ページが割り当てられ、例えば仮想
アドレスにマップされたことを指示する。スレッシュホ
ールド比は、仮想メモリの各領域に対してキャッシュメ
モリの充分な非マップ物理ページがあるかどうか指示す
る。スレッシュホールド比は、中央処理ユニットにより
制御される同調可能なパラメータである。プライベート
及びグローバルな仮想メモリスレッシュホールドは、異
なるものでもよいし、同一のものでもよい。1つの実施
形態では、スレッシュホールド比が例えば0.9であ
り、即ちその後の割り当ての必要性を受け入れるため
に、使用可能な物理メモリのページの90%以上が仮想
アドレスにマップされたときに、ページをクリーンリス
トに移動しなければならない。
【0055】ステップ186及び188では、コミット
メント比がグローバル及びプライベートなスレッシュホ
ールド比と比較される。ステップ189では、UBCに
割り当てられた物理ページに全数と所定限界との比較が
なされる。ステップ186、188及び189の判断
が、物理メモリに充分な数の非マップページがあること
を指示する場合には、プロセスがステップ182へ戻
り、コミットメント比(介在するマッピングトランザク
ションにより変更された)がスレッシュホールド比に対
して再び比較される。ステップ182、186、188
及び189は、コミットメント比がグローバル又はプラ
イベートなスレッシュホールド比より大きいことが決定
されるか、或いはUBCに割り当てられたページ数が所
定限界より大きいことが決定されるまで、繰り返され
る。これが生じると、プロセスはステップ190へ進
み、クリーンリストに書き込むための新たなページが選
択される。
【0056】ステップ190では、新たなページが次の
基準、即ちページをマップするプロセスの数、ページが
最後に使用された時間、ページをマップするプロセスの
形式及び/又は優先順位、そしてページのキャッシュペ
ージアドレスに基づいて選択される。上記のように、リ
クレーミングの候補としてページを選択するときは、プ
ロセスカウンタ260を調べて、全てのプロセスの仮想
アドレスへほとんどがマップされるキャッシュページア
ドレス、即ち最も大きな全キャッシュページアドレスカ
ウントを有するキャッシュページアドレスを識別する。
上述のように、この技術で知られた別の選択基準を使用
することもできる。しかしながら、キャッシュページア
ドレスを選択基準として使用すると、プロセス及びシス
テム巾のレベルでシステムに使用されるページ間にキャ
ッシュページアドレスの均一な分布が維持されると共
に、キャッシュページアドレスの均一な分布が将来の使
用のために使用できるよう確保する上で助けとなる。
【0057】ページが選択されると、ステップ192に
おいて、その選択されたページに記憶されるデータがバ
ックアップ記憶装置に書き込まれる。その結果、クリー
ンページがシステムに使用できるようになる。ステップ
194では、ページの物理的アドレスがクリーンリスト
に書き込まれる。ページに後で変更がなされると、それ
がクリーンリストから除去される。ついで、プロセスは
ステップ182へ復帰し、コミットメント比(介在する
マッピングオペレーションを反映する)がスレッシュホ
ールド比に対して比較される。従って、図14Aのプロ
セスが実行されるときには、物理ページのクリーンリス
トがシステムに与えられる。図14Bのプロセスは、ク
リーンリストを次のように使用する。ステップ200に
おいて、メモリのコミットメント比が1に等しいかどう
か、ひいては、物理メモリの全ての使用可能なページが
仮想アドレスにマップされたことを指示するかどうか決
定される。コミットメント比が1に等しい場合には、新
たな仮想アドレスへマップするための物理ページがそれ
以上存在せず、それ故、将来の仮想−物理マッピング要
求を取り扱うために物理メモリの1つのページがリクレ
ームされる。ステップ202では、クリーンリストがシ
ステムの観点から検査され、そして相対的なシステムキ
ャッシュページアドレスカウントが最も低いキャッシュ
ページアドレスを有するクリーンリストの物理ページが
識別される。ステップ204では、クリーンリストがプ
ロセスの観点から検査され、全プロセスキャッシュペー
ジアドレスカウントが最も大きいキャッシュページアド
レスを有するクリーンリストの物理ページが識別され
る。ステップ206では、ステップ202又はステップ
204で識別されたキャッシュページアドレスが、図5
について既に述べたシステム及びプロセス優先順位の問
題の分析に基づいて選択される。
【0058】ステップ208では、選択されたキャッシ
ュページアドレスを有する選択された物理ページアドレ
スがクリーンリストから空きリストへ移動される。物理
ページからのデータは、バックアップ記憶装置に既にコ
ピーされているので、コミットメント比1に達した後に
メモリコヒレント性を維持するために付加的なサイクル
を使用する必要はない。更に、選択されたページの以前
のマッピングに関連したページテーブルエントリが無効
化され、従って、選択された物理アドレスへマップする
のに使用される仮想アドレスに再び遭遇する場合には、
それが再マッピングされる。上記プロセスは、リクレー
ムされるページがグローバルなページであるかプロセス
ページであるかを考慮せずに説明した。一般に、多数の
プロセスにより共用するためにグローバルなページにマ
ップされたデータを保持するのが重要であることからグ
ローバルなページの前にプロセスページがリクレームさ
れるが、これは、本発明を何ら限定するものではない。
【0059】従って、仮想アドレスへのその後のマッピ
ングのためにコンピュータシステムにおいて物理メモリ
のページをリクレームする方法及び装置が提供された。
この方法は、2つの個別のステップを含み、第1ステッ
プでは、データがバックアップ記憶装置に記憶された物
理ページのクリーンリストが形成され、そして第2ステ
ップでは、要求を発しているプロセスへリクレームする
ためにクリーンリストから物理ページの1つが選択され
る。ページは、最初に、ページのキャッシュページアド
レスを含むページの特性に応答してクリーンリストに入
れられる。従って、リクレームされた場合に、システム
に使用されると共にその後のマッピングに使用できるキ
ャッシュページアドレスの均一な分布を与えるようなキ
ャッシュページアドレスを有するクリーンページを形成
するための努力がなされる。最終的にリクレームされる
べく選択されるページは、システムキャッシュページア
ドレスカウンタ及びプロセスキャッシュページアドレス
カウンタに応答して選択され、リクレームされたページ
が、システム及びプロセス巾レベルでキャッシュページ
アドレスの均一な分布を生じるキャッシュページアドレ
スを有するようにされる。
【0060】動的なキャッシュページアドレスの指定 上記のプロセス及び方法を使用すると、少なくとも最初
に、キャッシュページアドレスがプロセス及びシステム
巾ベースで均一に分布されるよう確保することができ
る。しかしながら、時間と共に、新たな及び異なるプロ
セスがコンピュータシステムに導入されそして古いプロ
セスがシステムから除去されるにつれて、特定のアドレ
スマッピングが実行において遅延の増加を被り始めるこ
とになる。ある命令が長い遅延を被り始めると、他の何
らかのプロセスがシステムに導入されて、その命令と同
じアドレスにスラッシングを生じさせることが推測され
る。どの物理ページが能動的に参照されるかを監視する
ことにより、ある仮想アドレスに指定された物理アドレ
スがスラッシングの減少に関して依然として最適なマッ
ピングであるかどうか決定することができる。あるマッ
ピングが過剰なスラッシングを被ると決定されたときに
は、物理−仮想マッピングが次のように動的に更新され
る。
【0061】図15を参照すれば、ここに示すシステム
の1つの実施形態によるメモリアロケーター328は、
システムカウンタ140と、空きメモリアレー130
と、ページアロケーター150と、プロセスカウンタ3
60に接続されたアクティビティ監視ユニット350と
を備えている。システムカウンタ140と、空きメモリ
アレー130と、ページアロケーター150は、図8に
ついて述べたように動作する。アクティビティ監視ユニ
ット350は、プロセスカウンタ360に接続され、そ
してここに示すシステムの1つの実施形態により、所与
のプロセス内にマップされた特定のキャッシュページア
ドレスにおいてアクティビティの増加レベルを識別する
のに使用される。アクティビティ監視ユニット350
は、欠陥アレー352を含み、そしてページテーブル1
29からページ欠陥信号を受け取るように接続される。
上述したように、ページ欠陥信号がアサート状態となる
1つの理由は、仮想アドレスの変換が適当なページテー
ブルエントリにおいて有効でないことである。又、ペー
ジ欠陥信号は、コンピュータにおいて生じる他の欠陥状
態の結果としてもアサートされることがある。これら欠
陥状態のあるものは、仮想アドレスに関連したページテ
ーブルエントリのFOE、FOR又はFOWビットのい
ずれか1つをセットすることにより強制的に発生され
る。FOE、FOR又はFOWビットをセットすること
は、例えば、コンテクストスイッチの間に、いかなる数
の仮想アドレスに対して実行することもできる。ここに
示す実施形態では、本発明のシステムは、所与のプロセ
スの仮想アドレススペースをマッピングする所定の1組
のページテーブルエントリにおいてある数のこれら欠陥
ビットを周期的にセットする。所定のページテーブルエ
ントリの仮想アドレスの1つによりマップされた仮想ア
ドレスの1つがその後に読み取り、書き込み又は実行型
ファンクションに対して参照されたときに、それに対応
する欠陥ビットがPTEにおいてセットされる場合にペ
ージ欠陥信号がアサートされる。例えば、命令LOAD
RX、(RY)は、レジスタRXのデータに、レジス
タRYに指示されたアドレスに位置するデータをロード
する。RX及びRYは、命令のオペランドである。FO
E、FOR又はFOWビットの全部が、レジスタRYに
記憶された仮想アドレスに対してセットされる場合に
は、ロード命令が実行されるとき、レジスタRYで指示
されたアドレスに位置するデータが読み取られるとき、
及びレジスタRYで指示されたアドレスに位置するデー
タがレジスタRXに書き込まれるときに、欠陥が生じ
る。
【0062】ページ欠陥信号がアサート状態になるとき
と、欠陥が確認されてコンピュータシステムで処理され
るときとの間に遅延が生じる。従って、欠陥を生じさせ
た仮想アドレスは、必ずしも、欠陥がコンピュータシス
テムにより処理されるときに実行されている命令を記憶
する仮想アドレスではない。欠陥がコンピュータシステ
ムにより確認されると、欠陥ハンドラーと称するソフト
ウェアプログラムが呼び出される。ここに示すシステム
の1つの実施形態によれば、欠陥ハンドラーが呼び出さ
れたときに、そのデータを参照するのに使用した最後の
仮想アドレスがアクティビティモニタ350の欠陥アレ
ー352に記憶される。従って、ここに示す実施形態で
は、欠陥アレー32は、所定の1組のページテーブルエ
ントリによりマップされるコンピュータシステムの最も
アクティブな仮想メモリアドレスのリストを記憶する。
【0063】仮想アドレスが欠陥アレー352に記憶さ
れるたびに、アクティビティモニタ350は、仮想アド
レスを調べて、その仮想アドレスにマップされたプロセ
ス及びキャッシュページアドレスを識別する。プロセス
及びキャッシュページアドレス情報を使用して、プロセ
スカウンタ360にインデックスが与えられる。このイ
ンデックスを使用して、決定されたプロセスの決定され
たキャッシュページアドレスに対して適当なアクティビ
ティカウンタをアクセスし、そのアクティビティカウン
タを増加できるようにする。従って、各アクティビティ
カウンタは、所与のプロセス内のキャッシュページアド
レスの相対的なアクティビティを指示する。それ故、ア
クティビティカウンタは、仮想−物理マッピングから潜
在的に生じる性能問題を識別するように使用することが
できる。例えば、アクティビティカウントが高い所与の
キャッシュページアドレスがある場合には、その所与の
キャッシュページアドレスにマップする仮想アドレスが
プロセスにおいて頻繁に使用される。同じキャッシュペ
ージアドレスをマップする多数の仮想アドレスが存在す
るので、高いアクティビティカウントは、そのキャッシ
ュページアドレスにスラッシングが発生する高い潜在性
があることを指示する。従って、アクティビティカウン
タは、プロセスの性能を改善するためにプロセスに対し
て仮想−物理マッピングをいつ動的に変更すべきかを決
定するための手段として使用することができる。
【0064】アクティビティモニタは、キャッシュペー
ジアドレスの1つに関連したアクティビティカウンタの
1つが所定のスレッシュホールドを越えるときに仮想ア
ドレスに対するマッピングを変更することができる。仮
想−物理マッピングを動的に変更することを求めるとき
には、そのプロセスに対する残りのキャッシュページア
ドレスアクティビティカウンタ及びプロセスカウンタを
調べて、最も低いアクティビティカウント及びプロセス
カウントを有するキャッシュページアドレスを選択す
る。アクティビティカウント及びプロセスカウントの両
方を調べることにより、プロセスに割り当てられたペー
ジ全体にわたってキャッシュページアドレスが均一に分
布されるように物理メモリの交換ページを選択すること
ができる。図16A及び16Bは、アクティビティカウ
ンタを更新しそして仮想−物理マッピングを動的に変更
するためのアクティビティ監視ユニット350のオペレ
ーションの一実施形態を例示するフローチャートであ
る。
【0065】図16Aは、欠陥が生じたときの欠陥ハン
ドラールーチン及びアクティビティモニタ350のオペ
レーション及びそれらの間の相互作用を示す。ステップ
270において、プロセスは欠陥が生じるまで待機す
る。欠陥が生じると、ステップ272において、欠陥ハ
ンドラープログラムが呼び出される。欠陥ハンドラーに
より行われる1つのステップは、データをアクセスする
ために現在使用されている仮想アドレスを欠陥アレー3
52へ記録することである。ステップ274において、
新たなエントリが欠陥アレー352に書き込まれるとき
に、アクティビティモニタは仮想アドレスを使用して、
現在実行中のプロセスを識別すると共に、その仮想アド
レスにマップされる物理アドレスのキャッシュページア
ドレスに対応するアクティビティカウントを増加する。
キャッシュページアドレスに対応するアクティビティカ
ウントが増加されると、プロセスは、ステップ270へ
復帰し、欠陥信号の次のアサーションを待機する。
【0066】図16Bは、物理−仮想マッピングを動的
に変更するためのアクティビティモニタ350のオペレ
ーションを示す。ステップ276において、メモリアロ
ケーター128は、各プロセスに対するアクティビティ
カウントを監視し、アクティビティカウントがいつ所定
のスレッシュホールドを越えるか決定する。所定のスレ
ッシュホールドは、特定の数でもよいし、或いは予想さ
れるアクティビティカウントと、カウンタにより与えら
れる指示されるアクティビティカウントとの間の相対的
な差でもよい。相対的な差を測定することにより、アド
レスにおけるスラッシングの結果としてアクティビティ
の変化が生じたかどうか決定することができる。アクテ
ィビティカウンタのいずれか1つがそのスレッシュホー
ルドを越えたときには、ステップ278において、アク
ティビティモニタ350が、物理メモリの交換ページと
して新たなキャッシュページアドレスを選択するように
ページアロケーターに通知する。交換物理ページに対応
する交換キャッシュページアドレスは、図5又は9につ
いて説明した手順を用いて選択することができ、この場
合に、好ましいプロセスキャッシュページアドレス及び
好ましいシステムキャッシュページアドレスの両方がシ
ステムカウンタ及びプロセスカウンタを用いて選択され
る。ステップ280において、キャッシュページアドレ
スが選択されたときに、選択されたキャッシュページア
ドレスを有するページの物理アドレスが空きリストから
検索され、そして高いキャッシュページアドレスアクテ
ィビティカウントに関連した物理ページのデータが交換
物理ページにコピーされる。更に、その仮想アドレスに
対するページテーブルエントリは、アドレスが空きリス
トから検索された交換物理ページに仮想ページをマップ
するように更新される。ステップ282では、高いアク
ティビティカウントを有するキャッシュページアドレス
に関連した物理ページは、不当なスラッシングを潜在的
に生じることのない異なる仮想ページへ後でマッピング
するために空きリストへ返送される。アクティビティカ
ウントがそのスレッシュホールド値を越えるようなペー
ジがステップ282において空きリストへ移動された後
に、プロセスはステップ276へ復帰し、アクティビテ
ィカウントの監視と、スレッシュホールド値に対するそ
の比較とが続けられる。
【0067】仮想ページのマッピングを物理メモリの異
なるアドレスへ変更するときには、あるページを別のペ
ージにコピーする必要があるために、仮想−物理マッピ
ングの動的な変更は、かなり時間のかかるものとなる。
従って、アクティビティカウントの各々に対するスレッ
シュホールド値は、再マッピングにより得られる性能効
果がコピーファンクションに関連した性能遅延に勝るこ
とがない限り、ページマッピングの変更に関連した時間
遅延を被らないように選択されねばならない。欠陥を強
制的に発生するためにPTEを周期的に変更することに
よりシステム内で実行される仮想アドレスを監視するよ
うな方法について上記プロセスを説明したが、仮想アド
レスを監視する別の方法も使用できる。例えば、各キャ
ッシュミスの仮想アドレスをアレーに記憶する方法を使
用して、頻繁なメモリアクセスを受ける仮想アドレスを
容易に識別することができる。又、仮想アドレスを追跡
する他の方法も使用でき、従って、本発明は、上記の欠
陥メカニズムに限定されるものではない。
【0068】従って、スラッシングを改善するために仮
想−物理アドレスマッピングを動的に更新する方法は、
システムの仮想アドレスのアクティビティを監視し、そ
して仮想アドレスのアクティビティを使用して、その仮
想アドレスにマップされる物理ページのキャッシュペー
ジアドレスに関連したキャッシュページアドレスアクテ
ィビティカウンタを増加させる。このキャッシュページ
アドレスアクティビティカウンタは、プロセス内で頻繁
にアクセスされるキャッシュページアドレスを識別し、
スラッシングのような潜在的な性能問題を識別するよう
に監視される。キャッシュページアドレスアクティビテ
ィカウントが所定のスレッシュホールドを越えたときに
は、そのキャッシュページアドレスに関連した仮想アド
レスが、例えば、その仮想アドレスに関連して生じる欠
陥に応答して、異なるキャッシュページアドレスを有す
る異なる物理アドレスへマップされる。再マッピングの
目的で選択された新たなキャッシュページアドレスは、
システム及びプロセスレベルでキャッシュページアドレ
スの均一な分布を維持するように選択される。非常にア
クティブなキャッシュページアドレスに関連した仮想ア
ドレスへ以前にマップされた物理ページに関するデータ
は、別のプロセスにより使用されるためにシステムの空
きリストへ返送される。このような構成では、プロセス
及び全システムの全性能を改善するために、所与のプロ
セスの実行中に仮想−物理変換に対して調整を行うこと
ができる。
【0069】従って、種々の異なるオペレーションに使
用することができて、システム及びプロセス巾レベルで
キャッシュページの均一な分布を維持する方法及び装置
が提供された。この方法は、プロセスの異なる部分、例
えば、プロセスのローカル部分とグローバル部分との間
に均一なページ分布を与えるように拡張することができ
る。又、この方法は、他のプロセスにより使用するため
の使用可能なページとしてプロセスからページをリクレ
ームする必要があるときに、その残りのプロセスの間及
びシステム内の使用可能なページの間に均一なページ分
布が維持されるようにページのリクレーミングを確実に
実行するように拡張することもできる。加えて、この方
法及び装置は、プロセスがシステムへ及びシステムから
スワップされるときに均一なページ分布を維持するため
のロジックを含むように拡張することができる。データ
構造体内にキャッシュページアドレスの均一な分布を維
持するための別の方法及び装置も説明した。
【0070】以上、本発明の種々の実施形態を説明した
が、上記説明は、単なる例示に過ぎず、本発明をこれに
限定するものでないことが当業者に明らかであろう。特
許請求の範囲に記載した本発明の範囲内で多数の変更や
修正がなされ得ることが当業者に明らかであろう。
【図面の簡単な説明】
【図1】ここに開示するシステムの実施形態によるキャ
ッシュメモリマネージメントプロセスを用いたコンピュ
ータシステムのブロック図である。
【図2A】図1のコンピュータシステムの物理アドレス
及びページテーブルエントリに対するアドレスビットの
割り当てを示す図である。
【図2B】図1のコンピュータシステムの物理アドレス
及びページテーブルエントリに対するアドレスビットの
割り当てを示す図である。
【図3】本発明の1つの実施形態による図1のコンピュ
ータシステムのメモリマネージメントソフトウェアの機
能ブロック及びデータ構造体を示すブロック図である。
【図4】図3のメモリマネージメントソフトウェアによ
るカウンタ値の使用を説明するのに使用するブロック図
である。
【図5】本発明の1つの実施形態に基づき図3のメモリ
マネージメントソフトウェアによってキャッシュページ
アドレスを割り当てるためのプロセスを示すフローチャ
ートである。
【図6】仮想アドレススペースにおけるグローバル及び
プライベートアドレスの割り当てを示す図である。
【図7】コンピュータシステムのキャッシュがグローバ
ル及びプライベート領域に区画化されるようなコンピュ
ータシステムの実施形態を示すブロック図である。
【図8】仮想アドレスがグローバルな仮想アドレスであ
るかプライベートな仮想アドレスであるかに応答して、
物理アドレスを仮想アドレスに割り当てるためのメモリ
アロケーターの一実施形態を示すブロック図である。
【図9】物理アドレスを仮想アドレスに指定するために
図8のメモリアロケーターにより使用されるプロセスの
一実施形態を示すフローチャートである。
【図10】キャッシュページアドレスの均一な分布が維
持されるようにデータ構造体の仮想アドレスを物理アド
レスにマッピングするためのコンピュータシステムの一
実施形態を示すブロック図である。
【図11】図10のコンピュータシステムにおいて仮想
アドレスを物理アドレスにマップするのに使用される割
り当てロジックのフローチャートである。
【図12】物理メモリのページをリクレームするために
図1又は7のコンピュータシステムに使用されるメモリ
アロケーターの別の実施形態を示すブロック図である。
【図13】図12のコンピュータシステムにおいてペー
ジをリクレームする間のカウンタの使用を示すブロック
図である。
【図14A】図12のコンピュータシステムにおいてペ
ージをリクレームするのに使用されるプロセスの一実施
形態を示すフローチャートである。
【図14B】図12のコンピュータシステムにおいてペ
ージをリクレームするのに使用されるプロセスの一実施
形態を示すフローチャートである。
【図15】ページのアクティビティを監視し、そしてキ
ャッシュページアドレスが過剰なアクティビティを被る
ときに仮想−物理再マッピングを実行するために図1又
は7のコンピュータシステムに使用されるメモリコント
ローラの別の実施形態を示すブロック図である。
【図16A】図15のコンピュータシステムにおいて過
剰なアクティビティを被る仮想アドレスを識別しそして
再マッピングするためのプロセスを示すフローチャート
である。
【図16B】図15のコンピュータシステムにおいて過
剰なアクティビティを被る仮想アドレスを識別しそして
再マッピングするためのプロセスを示すフローチャート
である。
【符号の説明】
10 コンピュータシステム 12 中央処理ユニット(CPU)サブシステム 14 中央処理ユニット(CPU) 16 中間レベルキャッシュ 17 変換バッファ 18 メモリ 20 物理アドレス 20a ページフレーム番号部分 20b キャッシュページアドレス部分 20c キャッシュインデックス部分 20d バイトアドレス部分 24 ページテーブルエントリ 26 ページテーブル 28 メモリアロケーター 30 空きメモリアレー 32 空きリスト 34a−34n リンク型リスト 40 システムカウンタ 42a−42n カウンタ 50 ページアロケーターソフトウェアルーチン 60 プロセスカウンタ

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータシステム内で仮想アドレス
    を物理アドレスにマッピングする方法であって、メモリ
    が複数のページに配分され、物理アドレスの各々はメモ
    リの複数のページの1つを識別し、コンピュータシステ
    ムは、メモリの複数のページのサブセットのデータを記
    憶することのできるキャッシュメモリを備え、このキャ
    ッシュメモリは複数のキャッシュページを含み、これら
    キャッシュページの各々はキャッシュページアドレスに
    関連し、上記方法は、 仮想アドレスへマッピングするための物理アドレスを選
    択し、物理アドレス内に実質的に含まれたキャッシュペ
    ージアドレスが、キャッシュページアドレスのシステム
    及びプロセス利用に応答して選択されるようにする段階
    を備えたことを特徴とする方法。
  2. 【請求項2】 物理アドレスは、仮想アドレスへマッピ
    ングされたキャッシュページアドレスの実質的に均一な
    分布を維持するように選択される請求項1に記載の方
    法。
  3. 【請求項3】 仮想アドレスは、仮想アドレスの複数の
    セットに配分され、仮想アドレスの各セットは、コンピ
    ュータシステムで実行されるプロセスに対応し、そして
    物理アドレスは、仮想アドレスの複数のセットの各々の
    間にキャッシュページアドレスの実質的に均一な分布を
    維持するように選択される請求項1に記載の方法。
  4. 【請求項4】 少なくとも1つのプロセスがコンピュー
    タシステムにおいて実行され、そして上記選択段階は、
    更に、 各キャッシュページアドレスに対して、そのキャッシュ
    ページアドレスを実質的に含む物理アドレスへマッピン
    グされる少なくとも1つのプロセスの仮想アドレスの数
    のプロセスカウントを維持し、 各キャッシュページアドレスに対して、そのキャッシュ
    ページアドレスを実質的に含む物理アドレスを有するコ
    ンピュータシステム内の非割り当て物理ページの数のシ
    ステムカウントを維持し、 キャッシュページアドレスのプロセスカウントに応答し
    て第1の物理アドレスを選択し、 キャッシュページアドレスのシステムカウントに応答し
    て第2の物理アドレスを選択し、そして所定の優先順位
    に応答して第1アドレス又は第2の物理アドレスのいず
    れかを選択する、という段階を更に含む請求項3に記載
    の方法。
  5. 【請求項5】 物理メモリの使用可能なページの物理ア
    ドレスのリストを維持し、そして選択された物理アドレ
    スに応答して、物理アドレスのリストから物理アドレス
    の1つを選択する、という段階を更に含む請求項4に記
    載の方法。
  6. 【請求項6】 コンピュータシステム内で仮想アドレス
    をメモリの物理アドレスにマッピングする方法であっ
    て、メモリは複数のページを含み、コンピュータシステ
    ムは、メモリの複数のページのサブセットからのデータ
    を記憶するキャッシュを備え、共通のキャッシュページ
    に関連した物理アドレスが、コンピュータシステムで実
    行されるプロセス内及びコンピュータシステムで実行さ
    れる全てのプロセス間に均一に分布されるように、仮想
    アドレスが物理アドレスにマッピングされ、上記方法
    は、 各キャッシュページに対し、そのキャッシュページに関
    連した物理アドレスを有する空きメモリページの数を決
    定し、 コンピュータシステムで実行される各プロセスに対し、
    各キャッシュページごとに、そのキャッシュページに関
    連した物理アドレスへとマッピングされるプロセスに関
    連した仮想アドレスの数を決定し、そして各キャッシュ
    ページに関連した物理アドレスへとマッピングされる所
    与のプロセスの仮想アドレスの数に応答すると共に、各
    キャッシュページに関連した物理アドレスを有する空き
    メモリページの数に応答して、物理アドレスを所与のプ
    ロセスの仮想アドレスにマッピングする、という段階を
    備えたことを特徴とする方法。
  7. 【請求項7】 物理アドレスを所与のプロセスの仮想ア
    ドレスにマッピングする上記段階は、 各キャッシュページに関連した物理アドレスへとマッピ
    ングされる所与のプロセスの仮想アドレスの数に応答し
    て第1のキャッシュページアドレスを選択し、この第1
    のキャッシュページアドレスは、所与のプロセス内にキ
    ャッシュページアドレスを実質的に均一に分布するよう
    に選択され、 各共通のキャッシュページに関連した物理アドレスを有
    する空きメモリページの数に応答して第2のキャッシュ
    ページアドレスを選択し、この第2のキャッシュページ
    アドレスは、コンピュータシステム内にキャッシュペー
    ジアドレスを実質的に均一に分布するように選択され、 所定の優先順位に応答して、第1又は第2のキャッシュ
    ページアドレスのいずれかを用いて物理アドレスを所与
    のプロセスの仮想アドレスにマッピングする、という段
    階を更に含む請求項6に記載の方法。
  8. 【請求項8】 第1のキャッシュページアドレスを選択
    する上記段階は、 各キャッシュページに関連した物理アドレスへとマッピ
    ングされる所与のプロセスにより使用される仮想アドレ
    スの数を検査し、そしてそのキャッシュページアドレス
    に関連した物理アドレスへとマッピングされるプロセス
    により使用される仮想アドレスの最小数を有するキャッ
    シュページアドレスを選択する、という段階を更に含む
    請求項7に記載の方法。
  9. 【請求項9】 第2のキャッシュページアドレスを選択
    する上記段階は、 各共通のキャッシュページに関連した物理アドレスを有
    する空きメモリページの数を検査し、そしてそのキャッ
    シュページアドレスに関連した物理アドレスを有する空
    きメモリページの最大数を有するキャッシュページアド
    レスを選択する、という段階を更に含む請求項7に記載
    の方法。
  10. 【請求項10】 キャッシュページに関連した物理アド
    レスを有する空きメモリページの数を決定する上記段階
    は、 メモリ内の空きページの数を指示する空きリストを維持
    し、 各キャッシュページアドレスに対し、そのキャッシュペ
    ージに関連した物理アドレスを有する空きリスト内の全
    てのページの使用可能なリストを維持し、そしてメモリ
    のページが仮想アドレスに指定されるときにメモリのペ
    ージを空きリストから除去する、という段階を更に含む
    請求項6に記載の方法。
  11. 【請求項11】 各々の使用可能なリストに対してカウ
    ンタを維持する段階を更に含み、このカウンタは、各々
    の使用可能なリストにおけるページ数を指示する請求項
    10に記載の方法。
JP10375538A 1997-11-26 1998-11-26 アドレススペース内にキャッシュページアドレスの均一な分布を維持するための動的なメモリ割り当て方法 Pending JP2000250814A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US97949997A 1997-11-26 1997-11-26
US08/979499 1997-11-26

Publications (1)

Publication Number Publication Date
JP2000250814A true JP2000250814A (ja) 2000-09-14

Family

ID=25526916

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10375538A Pending JP2000250814A (ja) 1997-11-26 1998-11-26 アドレススペース内にキャッシュページアドレスの均一な分布を維持するための動的なメモリ割り当て方法

Country Status (2)

Country Link
EP (1) EP0919927A3 (ja)
JP (1) JP2000250814A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008276772A (ja) * 2007-04-26 2008-11-13 Hewlett-Packard Development Co Lp データ処理システムおよびデータ処理方法
JP2009301102A (ja) * 2008-06-10 2009-12-24 Nec Corp キャッシュメモリを利用するためのメモリシステム、その方法及びそのプログラム
JP5293974B2 (ja) * 2008-03-04 2013-09-18 日本電気株式会社 メモリマッピング方法、メモリシステム
JP5293611B2 (ja) * 2007-12-12 2013-09-18 日本電気株式会社 メモリ再配置システム

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100422932C (zh) * 2002-12-31 2008-10-01 上海科泰世纪科技有限公司 自描述数据对象的处理方法
US9330736B2 (en) 2012-11-09 2016-05-03 Qualcomm Incorporated Processor memory optimization via page access counting
US20180024938A1 (en) * 2016-07-21 2018-01-25 Advanced Micro Devices, Inc. Allocating physical pages to sparse data sets in virtual memory without page faulting
CN109992393A (zh) 2017-12-29 2019-07-09 广东欧珀移动通信有限公司 应用处理方法和装置、电子设备、计算机可读存储介质
CN109992523B (zh) 2017-12-29 2021-06-01 Oppo广东移动通信有限公司 内存处理方法和装置、电子设备、计算机可读存储介质
CN109992402B (zh) * 2017-12-29 2021-07-09 Oppo广东移动通信有限公司 内存处理方法和装置、电子设备、计算机可读存储介质
CN117331853B (zh) * 2023-10-11 2024-04-16 上海合芯数字科技有限公司 缓存处理方法、装置、电子设备及介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4429905C1 (de) * 1994-08-23 1995-09-07 Siemens Ag Verfahren zum Betrieb eines virtuellen Speichers

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008276772A (ja) * 2007-04-26 2008-11-13 Hewlett-Packard Development Co Lp データ処理システムおよびデータ処理方法
JP5293611B2 (ja) * 2007-12-12 2013-09-18 日本電気株式会社 メモリ再配置システム
JP5293974B2 (ja) * 2008-03-04 2013-09-18 日本電気株式会社 メモリマッピング方法、メモリシステム
JP2009301102A (ja) * 2008-06-10 2009-12-24 Nec Corp キャッシュメモリを利用するためのメモリシステム、その方法及びそのプログラム

Also Published As

Publication number Publication date
EP0919927A2 (en) 1999-06-02
EP0919927A3 (en) 2000-05-24

Similar Documents

Publication Publication Date Title
US6026475A (en) Method for dynamically remapping a virtual address to a physical address to maintain an even distribution of cache page addresses in a virtual address space
EP1010080B1 (en) Mechanism for managing allocation of virtual memory buffers to virtual processes on a least recently used basis
US6067608A (en) High performance mechanism for managing allocation of virtual memory buffers to virtual processes on a least recently used basis
EP0780769B1 (en) Hybrid numa coma caching system and methods for selecting between the caching modes
US8095736B2 (en) Methods and systems for dynamic cache partitioning for distributed applications operating on multiprocessor architectures
US5581736A (en) Method and system for dynamically sharing RAM between virtual memory and disk cache
EP0557050B1 (en) Apparatus and method for executing processes in a multiprocessor system
US5983324A (en) Data prefetch control method for main storage cache for protecting prefetched data from replacement before utilization thereof
US20130097387A1 (en) Memory-based apparatus and method
US20050188157A1 (en) Memory mapping to reduce cache conflicts in multiprocessor sytems
US5996055A (en) Method for reclaiming physical pages of memory while maintaining an even distribution of cache page addresses within an address space
US20080301371A1 (en) Memory Cache Control Arrangement and a Method of Performing a Coherency Operation Therefor
WO1997039407A9 (en) Mechanism for managing allocation of virtual memory buffers to virtual processes on a least recently used basis
JP7340326B2 (ja) メンテナンス動作の実行
US6629111B1 (en) Memory allocation system
US6016529A (en) Memory allocation technique for maintaining an even distribution of cache page addresses within a data structure
GB2569416A (en) Method of using memory allocation to address hot and cold data
JPH11102323A (ja) 仮想アドレス変換用の柔軟な変換記憶バッファ
EP1190438B1 (en) Operating system page placement to maximize cache data reuse
US6332179B1 (en) Allocation for back-to-back misses in a directory based cache
US20040128452A1 (en) Allocating cache lines
US7702875B1 (en) System and method for memory compression
US6457107B1 (en) Method and apparatus for reducing false sharing in a distributed computing environment
JP2000250814A (ja) アドレススペース内にキャッシュページアドレスの均一な分布を維持するための動的なメモリ割り当て方法
EP1980945A1 (en) Memory access control apparatus and memory access control method