JP3910573B2 - 連続したメモリ・アドレスを提供する方法、システムおよびコンピュータ・ソフトウェア - Google Patents

連続したメモリ・アドレスを提供する方法、システムおよびコンピュータ・ソフトウェア Download PDF

Info

Publication number
JP3910573B2
JP3910573B2 JP2003332535A JP2003332535A JP3910573B2 JP 3910573 B2 JP3910573 B2 JP 3910573B2 JP 2003332535 A JP2003332535 A JP 2003332535A JP 2003332535 A JP2003332535 A JP 2003332535A JP 3910573 B2 JP3910573 B2 JP 3910573B2
Authority
JP
Japan
Prior art keywords
pages
memory
virtual
contiguous
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.)
Expired - Fee Related
Application number
JP2003332535A
Other languages
English (en)
Other versions
JP2004127291A (ja
Inventor
マノージ・パティル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2004127291A publication Critical patent/JP2004127291A/ja
Application granted granted Critical
Publication of JP3910573B2 publication Critical patent/JP3910573B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]

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)

Description

本発明は、ランダム・アクセス・メモリ中に連続物理メモリを割り振ることに関する。
コンピュータ・システムのカーネル・アーキテクチャにおいて、連続物理メモリ(すなわち、連続した実(物理)アドレスを含むメモリ)は、しだいに使用されなくなりつつある。カーネル設計者は、ハードウェアがスキャッタ・ギャザ(scatter-gather)I/Oをサポートしていることを前提としており、これはしばしば正しい。
しかし、多くの古いハードウェア・コンポーネントは、スキャッタ・ギャザI/Oをサポートしておらず、また、新しいハードウェア・コンポーネントでもスキャッタ・ギャザI/Oをサポートしていないものがある。最近の様々なハードウェア・デバイス・コンポーネントは、それらのバッファのディスクリプタ・リングについてスキャッタ・ギャザI/Oをサポートしていない。その一例として、カリフォルニア州サンホセのAlteon Websystems Inc.が生産しているギガビット・イーサネット(登録商標)/PCIネットワーク・インタフェース・カード、Tigon2ASIC、バージョン5または6(SXファイバ・コネクタはIBM FRU07L8918)が挙げられる。
オペレーティング・システムは、カーネルのプログラミングのためにAPI(アプリケーション・プログラム・インタフェース)を提供する。特に、オペレーティング・システムは、カーネルの仮想アドレス空間にメモリを割り振るためのAPIを提供する。一例として、AIX(登録商標)オペレーティング・システムが提供するxmalloc()が挙げられる。このAPIは、このAPIの結果として割り振られる物理メモリが連続することを保証しない。
オペレーティング・システムによっては、物理メモリが連続することを保証して、仮想アドレス空間にメモリを割り振るAPIを提供するものもある。一例として、AIX(登録商標)オペレーティング・システム中のrmalloc()が挙げられる。このコマンドの結果として割り振られるメモリは、固定されるが、ページング可能ではない。連続物理メモリを提供するAPI(例えば、上述のrmalloc())の使用は限定される。カーネル・エクステンション、デバイス・ドライバ、およびその他のモジュールを書くプログラマは、一般に、rmalloc()などのAPIを使用することが可能でない。このようなAPIは、一般に、特定の状況にあるファームウェア・プログラマだけが使用ができる。この場合、rmalloc()を使って利用可能なメモリのフリー・プールは16MBであり、IBM RS/6000シリーズのシステムなど、AIX(登録商標)オペレーティング・システムを使用しているほとんどのシステムにおいては、ファームウェアによって完全に占有される。
アプリケーション(すなわち、ユーザ・モード)のプログラミングの場合、メモリ割振りのために提供される標準APIは、malloc()およびrealloc()である。いずれの場合も、基礎をなす物理メモリの連続性は保証されない。したがって、これらのコールは、連続物理メモリが必要とされる場合の使用には適さない。
上記に鑑みて、明らかに、連続物理メモリを割り振るための改良された方法、システムおよびコンピュータ・ソフトウェアが必要とされている。
本明細書では、基礎をなす連続物理メモリが連続するかどうかの保証なく割り振られたメモリから、物理的に連続したメモリを提供するためのアルゴリズムを説明する。これらのアルゴリズムを、メモリを割り振るためのオペレーティング・システム・コールに組み込むことによって、それらのコールによって割り振られたメモリが物理的に連続するように保証することができる。
物理的に連続したメモリを提供することには、1つの割り振られた仮想メモリのチャンク、または複数の割り振られた仮想メモリのチャンクにおいて、物理メモリの連続ページを識別することが含まれる。このようにして識別された物理ページは、必要に応じて使用するために、連続物理メモリのプールに与えられる。
単一の仮想メモリ・チャンクのみが割り振られている場合、少なくともいくつかのページが連続ページとして使用されていると、未使用ページを解放することができない。しかし、このようなチャンクに、その後に使用するために連続物理メモリのプールに与えられている他のページが割り振られていなければ、別の目的で使用するために未使用ページを解放することができる。連続物理メモリのプールに与えられていないページはどれも、別の目的で使用するために割振りから解放することができる。
単一のメモリ・チャンクのみを割り振る方が容易ではあるが、効率がよくない。一方、複数の別個のチャンクを割り振る方が複雑ではあるが、無駄使いする未使用ページが少ないため、より効率的であり得る。
比較的サイズの大きい単一のメモリ・チャンクのみを割り振る方が容易であり、より多くの物理連続ページが得られるが、効率がよくない。一方、比較的サイズの小さい複数のチャンクを割り振る方が複雑であり、得られる物理連続ページが少ないが、無駄使いする未使用ページが少ないため、より効率的であり得る。
本明細書では、物理的に連続したメモリを割り振るためのオペレーティング・システムという観点から、方法、コンピュータ・システムおよびコンピュータ・ソフトウェアについて説明している。本明細書では、AIX(登録商標)オペレーティング・システムに関連して、特定の実装を説明しているが、その他のオペレーティング・システムについても実装が可能である。
物理的に連続したメモリを割り振るための第1および第2のアルゴリズムを、それぞれ順番に説明する。各アルゴリズムは特定の利点を備えている。両方の概観を、以下に説明する。
第1のアルゴリズム
物理的に連続したメモリを割り振るための第1のアルゴリズムにおけるステップを、図1〜3に関連して、以下に説明する。以下に記載するステップは、図1の流れ図に示すステップに対応する。
ステップ110 仮想アドレス空間に、単一の大きいメモリ・チャンクを割り振る(ユーザ・モードでmalloc()、realloc()、カーネル・モードでxmalloc())。
ステップ120 上記で得られたチャンク中の各ページに、ページング不可としてマーク付けする。これは、それらのページが決してスワップ・アウトされることなく、その物理アドレスが永続的であることを意味する(カーネル・モードでxmempin())。
ステップ130 チャンク中の各仮想ページの実物理アドレスを取得する。
ステップ140 2つの配列(データ構造)に、チャンク中のページ数に等しい要素数を割り振る。第1の配列は、各ページの仮想アドレスを保持し、第2の配列は、対応するページの物理アドレスを保持する。
ステップ150 第2の配列中の要素が昇順になるように、配列をソートする。ソーティングの間、第1の配列と第2の配列の要素間の1:1のマッピングが損なわれないよう、注意が必要である。その結果、第2の配列の要素は昇順にソートされるが、第1の配列の要素は特定の順序にはならない。
ステップ160 第2の配列を解析し、連続しているページにマーク付けする。
ステップ170 これらのマーク付けしたページを、次いで、物理的に連続したプールに与える。
図2は、単一メモリ・チャンク210の割り振りを概略的に示す。この単一チャンク210は、仮想メモリ・ページ220 V1〜Vnを含む。これらの仮想メモリ・ページ220は、物理メモリ・ページ230 P201〜P500のそれぞれに対応する。仮想メモリ・ページ220と物理メモリ・ページ230の間に特定の相関関係はない。図2に示すように、例として物理メモリ・アドレスP201、P204などを記載してある。
図3は図2に対応し、ソーティング後の仮想メモリ・ページ220および物理メモリ・ページ230を概略的に示す。この場合、図3に示すように、2組の連続物理メモリ・ページを識別することができる。これらの連続物理メモリ・ページには、アドレスP201、P202、P203、P204、および、P310、P311を有するページが含まれている。
物理メモリ230のこれら2組のページは、必要に応じて使用できるように、連続物理メモリのプールに与えられている。未使用の物理メモリ・ページは、アドレスP400およびP500を有するものとして識別されるが、メモリ・チャンク210が多数のページを上述の2組の連続物理メモリに与えているため、それらの未使用ページを解放することはできない。
第2のアルゴリズム
物理的に連続したメモリを割り振るための第2のアルゴリズムを、図4〜6を参照しながら以下に説明する。以下に記載するステップは、図4の流れ図に示すステップに対応する。
ステップ410 仮想アドレス空間に小さい複数メモリ・チャンクを割り振る。(ユーザ・モードでmalloc()、realloc()、カーネル・モードでxmalloc())。これらのチャンクは、10ページまたは100ページ、あるいはそれ以上のページであることがあり、またプログラム可能であり得る。このようなチャンクのいくつかを割り振る。この方法では、連続性が減少し、したがってより多くのページ数を割り振る必要があることに留意されたい。
ステップ420 上記で得られた各チャンク中の各ページに、ページング不可としてマーク付けする。これは、それらのページが決してスワップ・アウトされることなく、その物理アドレスが永続的であることを意味する(カーネル・モードでxmempin())。
ステップ430 各チャンク中の各仮想ページの実物理アドレスを取得する。
ステップ440 2つの配列(データ構造)に、チャンク全体のページの総数に等しい要素数を割り振る。第1の配列は、各ページの仮想アドレスを保持し、第2の配列は、対応するページの物理アドレスを保持する。
ステップ450 第2の配列中の要素が昇順になるように、配列をソートする。ソーティングの間、第1の配列と第2の配列の間の1:1のマッピングが損なわれないよう、注意が必要である。その結果、第2の配列の要素は昇順にソートされるが、第1の配列の要素は特定の順序にはならない。
ステップ460 第2の配列を解析し、連続しているページにマーク付けする。
ステップ470 これらのマーク付けしたページを、次いで、物理的に連続したプールに与える。
ステップ480 ステップ410で割り振った全てのチャンクを調べる。チャンクのうち、連続メモリ・プールに単一ページを与えていないものがあれば、そのチャンクは解放される(free()またはxmemfree()を使って)。
図5は、n個のメモリ・チャンク510の割り振りを概略的に示す。図5に示すように、これらのチャンク510は、仮想メモリ・ページ520 V1〜V12を含む。これらの仮想メモリ・ページ520は、物理メモリ・ページ530 P21〜P66のそれぞれに対応する。仮想メモリ・ページ520と物理メモリ・ページ530の間に特定の相関関係はない。図5に示すように、例として物理メモリ・アドレスP21、P34などを記載してある。
図6は図5に対応し、ソーティング後の仮想メモリ・ページ520および物理メモリ・ページ530を概略的に示す。この場合、図6に示すように、2組の連続物理メモリ・ページを識別することができる。これらの連続物理メモリ・ページは、2組の物理メモリ・ページP21、P22、P23、P24、および、P34、P35、P36、P37を含む。
物理メモリ・アドレスP50およびP77を有するページとして、2つの未使用ページが識別されている。2つの使用ページは解放することもできる。これらのページは、1組の連続物理メモリ・ページの一部であるページを共用している、割り振られたメモリ・チャンクの一部ではないためである。これらのページP58およびP66は、仮想ページV11およびV12として、単一のチャンク中に割り振られている。これらのページP58およびP66は、図6に示すように、チャンクn 640に関連付けられている。
アルゴリズムの実装
第1また第2のアルゴリズムのいずれかを、次の方法のいずれかにおいて使用することができる。ある実装では、アルゴリズムをユーザ・モード・ライブラリに含めることができる。あるいは、アルゴリズムをmalloc()コード中に含めることができ、それによって、ユーザ・モード・アプリケーションは、malloc()コードの改定された機能を利用することができる。
このアルゴリズムをカーネル・エクステンションで実装することにより、カーネル中に機能を提供することができる。記載のアルゴリズムの実装例として、図7〜10に擬似コードを示す。
図7は、対応する物理メモリ・アドレスと仮想メモリ・アドレスの配列要素をソートするための擬似コードを示す。図8は、連続メモリのプールを初期化するための擬似コードを示す。図9は、連続メモリのプールを未初期化するための擬似コードを示す。図10は、所望の連続メモリ・ページ数を得るための擬似コードを示す。
図7〜10のこれらの擬似コード・フラグメントを、組み合わせて適切に使用することにより、記載のアルゴリズムを実装することができる。
図7〜10の擬似コード・フラグメントは、アルゴリズムを実装するための1つの方法を示す。記載のアルゴリズムを実装するために使用する、多くの異なる効率的なコーディング技術およびデータ構造があり得る。上述のコードは、ユーザ・モード動作のための実装である。以下は、このアルゴリズムをユーザ・モードで実装するための重要な情報である。
擬似コードは、pdiagex(移植可能診断カーネル・エクステンション)によってエクスポートされるコールを使用することができる。これは、プロミング・エラーの診断のためにAIX(登録商標)オペレーティング・システムにおいて利用可能な、汎用カーネル・エクステンションである。このコードは、ユーザ・モードであり続けることによって、物理アドレスを取得するための2つのコール((a)pdiag_dd_dma_setup()、(b)pdiag_dd_dma_complete())を使用する。このエクステンションが使用されない場合には、代わりに、同様の機能を備えた2つのシステム・コールが使用される。
第1および第2のアルゴリズムの概観
上記のこの第1のアルゴリズムによると、大量のメモリの無駄使いが生じる。全てのページが連続メモリ・プールに与えられるわけではなくても、未使用のページを解放することはできない。全てのページを単一のmalloc()コールを使って割り振るため、カーネルのメモリ割振り機能がきわめて接近して実行され、そのため、連続物理メモリが得られる確率はきわめて高くなる。
サイズが小さい仮想メモリ・チャンクを割り振る場合、固定物理アドレスが得られ、各チャンクに対するこれらの操作のそれぞれがそれほど間断なく発生するわけではない。これらのそれぞれの動作の間で、メモリの割振り、メモリなどに関連する多くのその他のカーネル・サービスが一斉に実行される。したがって、物理アドレスは散らされやすい。すなわち、物理アドレスの範囲全体にわたって分散されやすい。これに対して、大きいサイズの1つのチャンクを使用した場合、上述の動作が間断なく発生し、それによって、散らされた、すなわち不連続の物理アドレスが発生する可能性が削減される。
第2のアルゴリズムは、資源の有効活用を、必要とする物理的な連続メモリの容量より優先する場合に特に有利である。第2のアルゴリズムは、資源をより有効に活用し、不必要なメモリを解放する。しかし、得られる連続メモリの総容量は、第1のアルゴリズムを使った場合よりも少ない。
第1のアルゴリズムを実装するために必要なプログラミングは比較的単純である。第2のアルゴリズムに必要なプログラミングは、第1のアルゴリズムでは使用しないデータ構造を使用するため、第1のアルゴリズムに必要なプログラミングよりも複雑である。
コンピュータ・ハードウェアおよびソフトウェア
図11は、本明細書に記載の技術を実装するプロセスにおけるステップを実行するために使用できる、コンピュータ・システム1100の概略図である。コンピュータ・システム1100は、上述の技術を実行する際の援助となるようにプログラムされた、コンピュータ・ソフトウェアを実行するために提供されている。このコンピュータ・ソフトウェアは、コンピュータ・システム1100上にインストールされた、適切なオペレーティング・システムの下で実行する。
このコンピュータ・ソフトウェアは、コンピュータ・システム1100が解釈することが可能な1組のプログラムされた論理命令を含む。それらの命令は、コンピュータ・システム1100に、それらの命令が指定する所定の機能を実行するように命令するものである。コンピュータ・ソフトウェアは、互換性のある情報処理システムに、特定の機能を直接、または別の言語、コード、または表記法に変換した後、実行させることを目的とした1組の命令を含む、いずれかの言語、コードまたは表記法で記録された表現でよい。
コンピュータ・ソフトウェアは、適切なコンピュータ言語で書かれたステートメントを含む、コンピュータ・プログラムによってプログラムされている。コンピュータ・プログラムは、コンパイラを使って処理され、オペレーティング・システムが実行するのに適したバイナリ・フォーマットのコンピュータ・ソフトウェアとなる。コンピュータ・ソフトウェアは、記載の技術のプロセスにおいて特定のステップを実行する、様々なソフトウェア・コンポーネントまたはコード手段を含むようにプログラムされている。
コンピュータ・システム1100のコンポーネントには、コンピュータ1120、入力装置1110、1115、およびビデオ・ディスプレイ1190が含まれる。コンピュータ1120は、プロセッサ1140、メモリ・モジュール1150、入出力(I/O)インタフェース1160、1165、ビデオ・インタフェース1145、および記憶装置1155を含む。
プロセッサ1140は、オペレーティング・システム、およびオペレーティング・システムの下で実行するコンピュータ・ソフトウェアを実行する、中央処理装置(CPU)である。メモリ・モジュール1150は、ランダム・アクセス・メモリ(RAM)および読取り専用メモリ(ROM)を含み、プロセッサ1140の指示のもとで使用される。
ビデオ・インタフェース1145は、ビデオ・ディスプレイ1190に接続され、ビデオ・ディスプレイ1190上で表示するためのビデオ信号を供給する。コンピュータ1120を操作するためのユーザ入力は、キーボード1110およびマウス1115からなる、入力装置1110、1115から供給される。記憶装置1155は、ディスク・ドライブまたはその他の適切な不揮発性記憶媒体を含むことができる。
コンピュータ1120の各コンポーネントは、データ・バス、アドレス・バス、および制御バスを含む、バス1130に接続されており、それによって、これらのコンポーネントは、バス1130を介して互いに通信することができる。
コンピュータ・システム1100を、インターネットとして示してあるネットワーク1180への通信チャネル1185を使って、入出力(I/O)インタフェース1165を介し、1つまたは複数の他の同様のコンピュータに接続することができる。
コンピュータ・ソフトウェアを、携帯用記憶媒体上に記録されたコンピュータ・プログラム製品として提供することができる。この場合、このコンピュータ・ソフトウェアには、コンピュータ・システム1100によって記憶装置1155からアクセスする。あるいは、コンピュータ1120によって、ネットワーク1180から直接アクセスすることができる。いずれの場合も、ユーザは、キーボード1110およびマウス1115を使ってコンピュータ・システム1100と対話することにより、コンピュータ1120上で実行しているコンピュータ・ソフトウェアを操作することができる。
コンピュータ・システム1100は、例として説明しているにすぎない。コンピュータ・システムのその他の構成またはタイプも、記載の技術を実装するために同様にうまく使用することができる。
結論
本明細書に記載の技術を使って、4Kよりも大きいデータ・バッファを使用するのに十分な、比較的大きい連続メモリのプールを提供することができる。一般的なオペレーティング・システムのページのサイズは4Kであり、通常、データ・バッファに関するこの4Kという限界を超えることはできない。
記載の技術は、ホット・プラグのPCI(周辺接続インタフェース)コンポーネントの場合にうまく動作し、ファームウェアの初期化には依存しない。インストール時に再起動する必要もない。また、記載の技術は、rmalloc()を使用しない小規模のメモリ要件、または類似のほとんど利用不可能な資源にも役立つ。
連続メモリのプールは、アプリケーションおよびカーネルのプログラマが利用できる。利用可能な連続物理メモリの容量は調整可能であり、適切な資源管理によって増やすことも減らすこともできる。資源を適切に管理することによって、最低限のメモリ・プールを提供することができる。ハードウェア・デバイスに追加機能が必要とされることもないし、ハードウェアのメモリ・マッピングの変更が必要とされることもない。資源がロックされることもない。また、物理メモリを割り振るためにオペレーティング・システム・ファームウェアをハックする必要や、カーネルに変更を施す必要もない。
資源を永続的にブロック化するわけではない。必要に応じて、いつでもメモリおよび資源を一般の使用に利用できるようにすることができる。
いずれかの特定の場合に利用可能な連続物理メモリの容量は、コンピュータ・システムに設置されているメモリのサイズに依存する。アルゴリズムは、初期化のたびに、利用可能な物理的に連続したメモリの容量を前もって判断することはできない。本明細書に記載のアルゴリズムのいずれにおいても、幾分、メモリの無駄使いが生じる。第2のアルゴリズムは、このメモリの無駄使いの程度を減少させるが、しかし、利用可能な連続メモリの総容量が減少するという犠牲が伴う。
本明細書に記載の技術および構成は、AIX(登録商標)オペレーティング・システムに関するものであるが、これらの技術および構成は、その他のUNIX(登録商標)ベースのオペレーティング・システムにも適用できる。また、Windows(登録商標)NTなどの非UNIX(登録商標)のオペレーティング・システムにおいても実装が可能である。記載のアルゴリズムは、いずれかの特定のオペレーティング・システムに依存するものではない。
当業者には明らかなように、本明細書に記載の技術および構成には、様々な変更および修正を加えることができる。
まとめとして、本発明の構成に関して以下の事項を開示する。
(1)物理的に連続したメモリ・アドレスを提供する方法であって、
1つまたは複数の別個の仮想ページを含む、仮想メモリ・アドレス空間の少なくとも一部を割り振るステップと、
前記少なくとも一部のページのそれぞれについて、物理メモリ・アドレスを取得するステップと、
前記ページのうちどれが、連続した物理メモリ・アドレスを有するかを判断するステップと、
前記判断した仮想メモリ・アドレスを、その後に使用するために連続物理メモリのプールに割り当てるステップとを含む方法。
(2)前記少なくとも一部の仮想メモリの、前記ページのそれぞれを、ページング不可として割り当てるステップをさらに含む、上記(1)に記載の方法。
(3)前記少なくとも一部の仮想メモリ中の前記ページの総数と同じ数の要素を有する、2つの配列を提供するステップをさらに含む、上記(1)に記載の方法。
(4)前記2つの配列は、前記ページのそれぞれの仮想アドレスを保持する第1の配列と、前記ページのそれぞれの対応する物理アドレスを保持する第2の配列を含む、上記(3)に記載の方法。
(5)前記第2の配列の内容が昇順の物理アドレスになるように、前記2つの配列の内容をソートするステップをさらに含む、上記(1)に記載の方法。
(6)前記ソートするステップは、前記第1の配列および前記第2の配列のそれぞれの要素の間に1:1の関係を維持する、上記(5)に記載の方法。
(7)連続物理メモリ・アドレスを形成する前記第2の配列の要素にマーク付けするステップをさらに含む、上記(1)に記載の方法。
(8)前記仮想メモリの一部のみが割り振られる、上記(1)に記載の方法。
(9)複数の仮想メモリ部分が割り振られる、上記(1)に記載の方法。
(10)少なくとも1つのページを前記連続物理メモリのプールに割り当てていない、前記仮想メモリの割り振られた部分のいずれか1つを解放するステップをさらに含む、
上記(8)に記載の方法。
(11)物理的に連続したメモリ・アドレスを提供するためのコンピュータ・ソフトウェアであって、媒体上に記録され、前記コンピュータ・ソフトウェアを解釈することが可能なコンピュータ・システムによって実行されることが可能であり、
1つまたは複数の別個の仮想ページを含む、仮想メモリ・アドレス空間の少なくとも一部を割り振るためのコード手段と、
前記少なくとも一部の前記ページのそれぞれについて、物理メモリ・アドレスを取得するためのコード手段と、
前記ページのうちどれが、連続した物理メモリ・アドレスを有するかを判断するためのコード手段と、
前記判断した仮想メモリ・アドレスを、その後に使用するために連続物理メモリのプールに割り当てるためのコード手段とを含むコンピュータ・ソフトウェア。
(12)物理的に連続したメモリ・アドレスを提供するためのコンピュータ・システムであって、
1つまたは複数の別個の仮想ページを含む、仮想メモリ・アドレス空間の少なくとも一部を割り振るための手段と、
前記少なくとも一部の前記ページのそれぞれについて、物理メモリ・アドレスを取得するための手段と、
前記ページのうちどれが、連続した物理メモリ・アドレスを有するかを判断するための手段と、
前記判断した仮想メモリ・アドレスを、その後に使用するために連続物理メモリのプールに割り当てるための手段とを含む、コンピュータ・ソフトウェアを実行するコンピュータ・システム。
仮想メモリ・チャンクが1つだけ含まれるように、物理的に連続したメモリを割り振るための第1のアルゴリズムの流れ図である。 図1の第1のアルゴリズムに従って物理的に連続したメモリを割り振る際に生じるプロセスの概略図である。 図1の第1のアルゴリズムに従って物理的に連続したメモリを割り振る際に生じるプロセスの概略図である。 いくつかの仮想メモリ・チャンクが含まれるように、物理的に連続したメモリを割り振るための第2のアルゴリズムの流れ図である。 図4の第2のアルゴリズムに従って物理的に連続したメモリを割り振る際に生じるプロセスの概略図である。 図4の第2のアルゴリズムに従って物理的に連続したメモリを割り振る際に生じるプロセスの概略図である。 図1および6を参照して説明したアルゴリズムを実装するために使用できる、擬似コード・フラグメントを示す図である。 図1および6を参照して説明したアルゴリズムを実装するために使用できる、擬似コード・フラグメントを示す図である。 図1および6を参照して説明したアルゴリズムを実装するために使用できる、擬似コード・フラグメントを示す図である。 図1および6を参照して説明したアルゴリズムを実装するために使用できる、擬似コード・フラグメントを示す図である。 図1〜10を参照して説明した技術が実行される、コンピュータ・システムの概略図である。
符号の説明
210 単一チャンク
220 仮想メモリ・ページ
230 物理メモリ・ページ
510 チャンク
520 仮想メモリ・ページ
530 物理メモリ・ページ
640 チャンク
1100 コンピュータ・システム
1110 入力装置、キーボード
1115 入力装置、マウス
1120 コンピュータ
1130 バス
1140 プロセッサ
1145 ビデオ・インタフェース
1150 メモリ・モジュール
1155 記憶装置
1160 入出力(I/O)インタフェース
1165 入出力(I/O)インタフェース
1180 ネットワーク
1185 通信チャネル
1190 ビデオ・ディスプレイ

Claims (12)

  1. 物理的に連続したメモリ・アドレスを提供する方法であって、
    複数の別個の仮想ページを含む、仮想メモリ・アドレス空間の少なくとも一部を割り振るステップと、
    前記少なくとも一部のページのそれぞれについて、物理メモリ・アドレスを取得するステップと、
    前記ページのうちどれが、連続した物理メモリ・アドレスを有するかを判断するステップと、
    前記判断した仮想メモリ・アドレスを、その後に使用するために連続物理メモリのプールに割り当てるステップとを含む方法。
  2. 前記少なくとも一部の仮想メモリの、前記ページのそれぞれを、ページング不可として
    割り当てるステップをさらに含む、請求項1に記載の方法。
  3. 前記少なくとも一部の仮想メモリ中の前記ページの総数と同じ数の要素を有する、2つ
    の配列を提供するステップをさらに含む、請求項1に記載の方法。
  4. 前記2つの配列は、前記ページのそれぞれの仮想アドレスを保持する第1の配列と、前記ページのそれぞれの対応する物理アドレスを保持する第2の配列を含む、請求項3に記
    載の方法。
  5. 前記第2の配列の内容が昇順の物理アドレスになるように、前記2つの配列の内容をソートするステップをさらに含む、請求項に記載の方法。
  6. 前記ソートするステップは、前記第1の配列および前記第2の配列のそれぞれの要素の間に1:1の関係を維持する、請求項5に記載の方法。
  7. 連続物理メモリ・アドレスを形成する前記第2の配列の要素にマーク付けするステップをさらに含む、請求項に記載の方法。
  8. 前記仮想メモリの一部のみが割り振られる、請求項1に記載の方法。
  9. 複数の仮想メモリ部分が割り振られる、請求項1に記載の方法。
  10. 前記複数の仮想メモリ部分のうち、ある仮想メモリ部分内のいずれのページも前記連続物理メモリのプールに割り当てられていない場合に、当該ある仮想メモリ部分内の全てのページを解放するステップをさらに含む、請求項9に記載の方法
  11. コンピュータを物理的に連続したメモリ・アドレスを提供する手段として機能させるためのプログラムであって、媒体上に記録され、前記プログラムを解釈することが可能なコンピュータによって実行されることが可能であり、前記コンピュータを
    複数の別個の仮想ページを含む、仮想メモリ・アドレス空間の少なくとも一部を割り振るためのコード手段と、
    前記少なくとも一部の前記ページのそれぞれについて、物理メモリ・アドレスを取得するためのコード手段と、
    前記ページのうちどれが、連続した物理メモリ・アドレスを有するかを判断するためのコード手段と、
    前記判断した仮想メモリ・アドレスを、その後に使用するために連続物理メモリのプールに割り当てるためのコード手段
    として機能させるためのプログラム
  12. 物理的に連続したメモリ・アドレスを提供するためのコンピュータ・システムであって、
    複数の別個の仮想ページを含む、仮想メモリ・アドレス空間の少なくとも一部を割り振るための手段と、
    前記少なくとも一部の前記ページのそれぞれについて、物理メモリ・アドレスを取得するための手段と、
    前記ページのうちどれが、連続した物理メモリ・アドレスを有するかを判断するための手段と、
    前記判断した仮想メモリ・アドレスを、その後に使用するために連続物理メモリのプールに割り当てるための手段とを含む、コンピュータ・システム
JP2003332535A 2002-09-30 2003-09-24 連続したメモリ・アドレスを提供する方法、システムおよびコンピュータ・ソフトウェア Expired - Fee Related JP3910573B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/262,411 US6986016B2 (en) 2002-09-30 2002-09-30 Contiguous physical memory allocation

Publications (2)

Publication Number Publication Date
JP2004127291A JP2004127291A (ja) 2004-04-22
JP3910573B2 true JP3910573B2 (ja) 2007-04-25

Family

ID=32030210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003332535A Expired - Fee Related JP3910573B2 (ja) 2002-09-30 2003-09-24 連続したメモリ・アドレスを提供する方法、システムおよびコンピュータ・ソフトウェア

Country Status (3)

Country Link
US (1) US6986016B2 (ja)
JP (1) JP3910573B2 (ja)
CN (1) CN100375064C (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7356621B1 (en) * 2003-07-24 2008-04-08 Nvidia Corporation Method and system for transferring data between a requesting program and a hardware device
TWI262385B (en) * 2004-06-18 2006-09-21 Mediatek Inc Method for updating file data
KR100666174B1 (ko) * 2005-04-27 2007-01-09 삼성전자주식회사 3-레벨 불휘발성 반도체 메모리 장치 및 이에 대한구동방법
US7437529B2 (en) * 2005-06-16 2008-10-14 International Business Machines Corporation Method and mechanism for efficiently creating large virtual memory pages in a multiple page size environment
US7739422B2 (en) * 2006-03-21 2010-06-15 International Business Machines Corporation Method to improve system DMA mapping while substantially reducing memory fragmentation
US7734842B2 (en) * 2006-03-28 2010-06-08 International Business Machines Corporation Computer-implemented method, apparatus, and computer program product for managing DMA write page faults using a pool of substitute pages
JP5012040B2 (ja) * 2007-01-24 2012-08-29 日本電気株式会社 メモリ割り当て方法
JP5087954B2 (ja) * 2007-03-01 2012-12-05 横河電機株式会社 メモリ管理装置
US7669030B2 (en) * 2007-07-02 2010-02-23 Computer Associates Think, Inc. System and method for finding kernel memory leaks
CN100535873C (zh) * 2007-07-31 2009-09-02 华为技术有限公司 一种数据存储和读取的方法及数据存储装置
KR101391881B1 (ko) * 2007-10-23 2014-05-07 삼성전자주식회사 멀티-비트 플래시 메모리 장치 및 그것의 프로그램 및 읽기방법
US8028147B2 (en) * 2008-06-09 2011-09-27 International Business Machines Corporation Arrangements for storing and retrieving blocks of data having different dimensions
US9268678B2 (en) * 2011-12-02 2016-02-23 Vmware, Inc. Memory defragmentation in a hosted hypervisor
US9003223B2 (en) * 2012-09-27 2015-04-07 International Business Machines Corporation Physical memory fault mitigation in a computing environment
JP2016012166A (ja) * 2014-06-27 2016-01-21 富士通株式会社 ストレージ管理装置,ストレージ管理プログラム,及び制御方法
KR102402780B1 (ko) 2015-06-04 2022-05-27 삼성전자 주식회사 메모리 관리 방법 및 장치
GB2552831B (en) * 2016-08-12 2019-01-02 Sony Interactive Entertainment Inc Memory allocation apparatus and method
US10942843B2 (en) 2017-04-25 2021-03-09 Micron Technology, Inc. Storing data elements of different lengths in respective adjacent rows or columns according to memory shapes
CN110659225A (zh) * 2018-06-28 2020-01-07 华为技术有限公司 内存管理方法以及相关装置
CN109947671B (zh) * 2019-03-05 2021-12-03 龙芯中科技术股份有限公司 一种地址转换方法、装置、电子设备及储存介质
US11474720B1 (en) * 2022-04-04 2022-10-18 Illuscio, Inc. Systems and methods for implementing a custom heap memory manager to optimize compute kernel performance

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5963984A (en) * 1994-11-08 1999-10-05 National Semiconductor Corporation Address translation unit employing programmable page size
US5987582A (en) * 1996-09-30 1999-11-16 Cirrus Logic, Inc. Method of obtaining a buffer contiguous memory and building a page table that is accessible by a peripheral graphics device
FR2767939B1 (fr) * 1997-09-04 2001-11-02 Bull Sa Procede d'allocation de memoire dans un systeme de traitement de l'information multiprocesseur
US6085296A (en) * 1997-11-12 2000-07-04 Digital Equipment Corporation Sharing memory pages and page tables among computer processes
US6804766B1 (en) * 1997-11-12 2004-10-12 Hewlett-Packard Development Company, L.P. Method for managing pages of a designated memory object according to selected memory management policies
US6560688B1 (en) * 1998-10-01 2003-05-06 Advanced Micro Devices, Inc. System and method for improving accelerated graphics port systems
US6442666B1 (en) * 1999-01-28 2002-08-27 Infineon Technologies Ag Techniques for improving memory access in a virtual memory system

Also Published As

Publication number Publication date
US6986016B2 (en) 2006-01-10
CN1497449A (zh) 2004-05-19
CN100375064C (zh) 2008-03-12
JP2004127291A (ja) 2004-04-22
US20040064671A1 (en) 2004-04-01

Similar Documents

Publication Publication Date Title
JP3910573B2 (ja) 連続したメモリ・アドレスを提供する方法、システムおよびコンピュータ・ソフトウェア
US9213623B2 (en) Memory allocation with identification of requesting loadable kernel module
US8453015B2 (en) Memory allocation for crash dump
KR100968188B1 (ko) 프로세서 자원의 가상화를 위한 시스템 및 방법
US20230196502A1 (en) Dynamic kernel memory space allocation
US8453132B2 (en) System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems
US20040117594A1 (en) Memory management method
US6877158B1 (en) Logical partitioning via hypervisor mediated address translation
US20030188122A1 (en) Mapping of interconnect configuration space
Kwon et al. {DC-Store}: Eliminating noisy neighbor containers using deterministic {I/O} performance and resource isolation
KR20080007448A (ko) 동적 논리적 파티션 기능을 갖는 컴퓨팅 환경에서의 컴퓨터메모리 관리
US11768757B2 (en) Kernel debugging system and method
JP2005293574A (ja) ホールをもつシステムメモリアドレスをサポートするデータ処理システム及びコンピュータプログラム
US8954707B2 (en) Automatic use of large pages
CN100594481C (zh) 允许运行在逻辑分区上的程序访问资源的方法与系统
KR20030060071A (ko) 메모리의 일부의 할당을 관리하기 위한 방법 및 시스템
JP7219330B2 (ja) 初期分散を使用する高速、低メモリのコンシステント・ハッシュ
JP2002328833A (ja) オペレーティング・システム・データをプライベート化する装置、方法、およびコンピュータ・プログラム
KR101740317B1 (ko) 메모리 관리 방법 및 장치
US10338830B2 (en) Methods for accessing a solid state disk for QoS (quality of service) and apparatuses using the same
US6457107B1 (en) Method and apparatus for reducing false sharing in a distributed computing environment
US20130073779A1 (en) Dynamic memory reconfiguration to delay performance overhead
US8417903B2 (en) Preselect list using hidden pages
US9720597B2 (en) Systems and methods for swapping pinned memory buffers
CN115185858B (zh) 地址映射表的处理方法、装置和存储设备

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061002

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061010

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20061031

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20061031

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070116

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20070116

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070124

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110202

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120202

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees