JP5222381B2 - 使用可能なメモリ資源を管理するための構成および方法 - Google Patents

使用可能なメモリ資源を管理するための構成および方法 Download PDF

Info

Publication number
JP5222381B2
JP5222381B2 JP2011168824A JP2011168824A JP5222381B2 JP 5222381 B2 JP5222381 B2 JP 5222381B2 JP 2011168824 A JP2011168824 A JP 2011168824A JP 2011168824 A JP2011168824 A JP 2011168824A JP 5222381 B2 JP5222381 B2 JP 5222381B2
Authority
JP
Japan
Prior art keywords
free
pointer
block
memory
blocks
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
JP2011168824A
Other languages
English (en)
Other versions
JP2011248920A (ja
Inventor
ダース グレン
ジェイ. リンデボーグ カール
エル. ブラウン ロビン
エー. ドゥダ ジェイムス
スリニバサン スディール
Original Assignee
エミュレックス デザイン アンド マニュファクチュアリング コーポレーション
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 エミュレックス デザイン アンド マニュファクチュアリング コーポレーション filed Critical エミュレックス デザイン アンド マニュファクチュアリング コーポレーション
Publication of JP2011248920A publication Critical patent/JP2011248920A/ja
Application granted granted Critical
Publication of JP5222381B2 publication Critical patent/JP5222381B2/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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

(発明の背景)
(1.技術分野)
本発明は、デジタルデータ処理システム、特に、使用可能なメモリ資源を管理するためのデジタルデータ処理システムにおける構成および方法に関する。
(2.背景技術)
全般的に、以下の説明において、デジタルデータ処理システムの当業者にとっては慣れ親しんだ各専門用語が最初に現れる時にイタリック体で表す。さらに、新しいと考えられる、あるいは新しいと考えられる文脈において用いられる用語を最初に紹介する場合、その用語をボールド体で表し、その用語に適用する定義を与える。本発明者らの発明は特にデジタルデータ処理システムでの利用を意図したものであることから、この特定当業者によく知られた用語をしばしば用いることになる。例えば、このようなシステムのメモリ構成要素の特定アドレスに保存された情報の個々の要素に関して、その要素そのものではなく、言及されている要素のアドレスを含む別個の互いに異なる要素に言及するためにポインタという用語を典型的に用いる。本発明者らが用いる分野の他の共通用語としては:ビットに対するbやバイトに対するB、最上位ビットに対するmsbや最下位ビットに対するlsb、メガバイトに対するMBといったものがある。
少なくとも1940年代以降、デジタルデータ処理システムのプログラマは、使用可能な未割り当てメモリ資源を管理するためにさまざまな論理構成を用いてきた。1つのよく見られる配置では、システム初期化中に作動されるメモリ初期化処理により使用可能メモリをブロック組に区画し、各ブロックが、アクティブな処理に対して現行で割り当てられていないメモリの通常サイズの連続範囲のアドレスを含む。このプロセスでは、その後、各ブロック内のあらかじめ指定されたアドレスに対して、リスト上の直接連続するブロックへのポインタあるいは前向きリンクを保存することでこういったフリーブロックのリンクされたリストを構成する。全般的に、リストの一次アクセス点はヘッダであり、このヘッダが、少なくとも、フリーリストのヘッドにおけるブロックに向けたポインタを保存するため転送リンクを含む。望まれる場合、このヘッダはまた、フリーリストのテールにあるブロックに向けたポインタを含む後向きリンクを含む。利便性のため、ヘッダは、フリーリストに現行で載っているブロック数といったフリーリストの状況に関連する他の情報を含む。
インテル社のPentuium(登録商標)4といった従来式の市販で利用可能なマイクロプロセッサを組み込んだ典型的な最近のデジタルデータ処理システムにおいて、メモリ構成要素は、複数の別個の互いに異なる層、例えば、高速であるが比較的小さいレベルAや低速であるが大きなレベルBに対して、階層的に構成されている。こういったシステムにおいて、中央演算処理装置で即座にアクセスできるメモリ資源にあるヘッダを維持することがもっとも効率的であるが、この中央演算処理装置は典型的にはデータキャッシュあるいはレジスタアレイ等の高速回路である。本発明者らの発明では、レベルAの資源を単クロックサイクルでアクセス可能なものと考えるが、その一方で、レベルBでの主メモリ構成要素へのアクセスでは複クロックサイクルが必要である。メモリ設計者によりかなりの資源が消費されているにもかかわらず、この性能の違いにより、半導体製造工程や深パイプライン化技術の進歩に応じて、プロセッサ構成要素が、主メモリ構成要素と比較してかなりの高クロック周波数で作動できるようになった。
図1の例として示されたものは階層的に構成されたメモリ2であり、この中で未割り当てのメモリブロックが、メモリ2の、例えばレベルBに維持されたフリーリスト4により管理される。既知の従来技術であるメモリ初期化処理で構成される代表的リストは:(リストのテールと呼ばれることの多い)フリーリスト4でそれより低いブロックがないことを示すゼロ前向きリンク(「リンク」)をもつ第1ブロックB6;次に低いブロックBを指す前向きリンクをもつ次に高いブロックB;(リストのヘッドと呼ばれることの多い)次に低いブロックBを指す前向きリンクをもつ、同様に続くブロックB10,B12,...,B14を通って最上部ブロックB16である。メモリ2のレベルAに維持されたヘッダ18において、前向きリンクであるヘッド20は、フリーリスト4のヘッドにあるフリーブロック、すなわちB16を指し、後向きリンクであるテール22はフリーリスト4のテールにあるフリーブロックを指すが、この例では、これはB6である。
注記:複数の図において、対応するリンクにおいてさらにブロックがあるということを示すために点連結線を用いているが、これは図示を不必要に複雑にすることを避けるために示されていないものがある。
アクティブな処理、例えば処理_Aからの受信に対して、フリーメモリのブロックを割り当てるという要求、すなわちメモリ割り当て処理により、典型的には、フリーリストのヘッドにブロックを割り当てる。図1に示された例において、ブロック割り当ては次のように簡単に示される:
1.ヘッド20から、フリーリスト4のヘッドにあるブロック、すなわちブロックB16に向けたポインタを検索する;
2.ブロックB16から、フリーリスト4の次に低いブロック、すなわちブロックB14に向けたポインタを検索する;
3.ヘッド20のブロックB14に向けたポインタを保存する。
注記:処理_Aに対してブロックに向けたポインタを与えるだけといったことを含め、割り当てられたブロックの場所(およびサイズ)について処理_Aに通知するため、さまざまな方法が提案されている。ある応用例は、処理_Aで「所有される」ブロックのリストに対して新たに割り当てられるブロックにメモリ割り当て処理をリンクさせることが望ましいというものである。
これにより、図1に示されるような階層的に構成されたメモリにおいて、ブロック割り当てでは少なくとも3つのメモリアクセスが必要である:
1.メモリのレベルAでの読み出しサイクル;
2.メモリのレベルBでの読み出しサイクル;
3.メモリのレベルAでの書き込みサイクル。
アクティブな処理から、メモリの割り当てブロックの割り当て解除を行う要求受信に対して、メモリの割り当て解除処理により、典型的には、フリーリストのヘッドにブロックを戻す。図1に示す例に続き、割り当てられたばかりのブロックB16の割り当て解除を処理_Aが要求したと仮定すると、割り当て解除は次のように簡単に示される:
1.ヘッド20から、フリーリスト4のヘッドにあるブロック、すなわちブロックB14に向けたポインタを検索する;
2.ブロックB14に向けたポインタをブロックB16の前向きリンクに保存する;
3.ヘッド20のブロックB16に向けたポインタを保存する。
注記:上述のとおり、処理_Aに対してメモリ割り当て処理が、処理で所有されるブロックのリストを維持する場合、メモリ割り当て解除処理は、割り当て解除されているブロックを処理_Aのリストから切り離す役割をもつ。
これにより、図1に示されるような階層的に構成されたメモリにおいて、ブロック割り当て解除でも同じく少なくとも3つのメモリアクセスが必要である:
1.メモリのレベルAでの読み出しサイクル;
2.メモリのレベルBでの書き込みサイクル;
3.メモリのレベルAでの書き込みサイクル。
メモリ2をレベルAおよびBだけでできたものとして図示したが、これは例示のためだけであり、メモリ2が2つのレベルだけに限定される、あるいはフリーリスト4およびヘッダ18が同一レベルで同時に保存、あるいは1つのレベル超で分けることができるということを示唆することを意図したものではない。さらに、この説明の文脈において、オペレーティングシステムを典型的に含む比較的大規模なシステムを選定したが、他の実施例も確かに可能であり、これには、典型的に別個の互いに異なるオペレーティングシステムをもたない埋め込みシステムや、適切にプログラムされた状態機械が重要なメモリ管理処理を実行するような純粋なハードウェアインスタンシエイションといったものがある。当業者にとって明らかなとおり、こういった判断は、ハードウェアの費用やシステム性能を含むさまざまな因子により影響を受ける。
本発明者らが提出するのは、必要とされるものが、使用可能なメモリ資源を管理するためのさらに効率的な構成および方法であり、特に、使用可能なメモリのブロックの割り当ておよび割り当て解除を行うための主メモリ構成要素へのアクセスが平均的にほとんど必要ないというものである。
(発明の概要)
本発明者らの発明の簡単な実施例により、メモリ構成要素をもつデジタルデータ処理システムを用いるための、このメモリ中の使用可能な資源を管理するための方法を提供する。この実施例において、メモリの第1の部分をまず、少なくとも第1および第2のブロックに区画し、第1ブロックを第1のポインタブロックとして割り当てる。次に、第2ブロックを指す第1ポインタを生成する。最後に、第1のポインタブロックの第1ポインタを保存し、これによりここで第1ポインタがフリーポインタリストの第1部材を含む。第2ブロックが割り当てられると、第1ポインタがフリーポインタリストから除去され;第2ブロックの割り当てが解除されると、第1ポインタが再生成されてフリーポインタリストに追加し直される。第1ポインタリストはこれにより、動的に拡大縮小するようにされ、これによりメモリの第1部分の使用可能ブロックの全てに対してフリーポインタの組を常に備えるようにできる。
本発明者らの発明のさらに実用的な実施例により、メモリ構成要素をもつデジタルデータ処理システムを用いるための、このメモリ中の使用可能な資源を管理するための方法を提供する。この実施例において、まずメモリの第1部分をn個のブロックに区画し、ブロックのうちm個をポインタブロックとして割り当て、それぞれが最大s個のポインタを保存するようにされ、ここで(n>m)、(n>s)かつ((m*s)≧(n−m))であるとする。次に、(n−m)個のブロックおのおのに対して、そのブロックを指すポインタを生成する。最後に、ポインタのうちs個をポインタブロックの最初の(m−1)個のおのおのに保存し、ポインタの残りの((n−M)−(m−1)*s))をポインタブロックの最後に保存し、これにより、ポインタブロックに保存されたポインタがフリーポインタリストを含むようになる。ブロックが割り当てられ、割り当て解除されるのに応じて、ポインタは、それぞれ、フリーポインタリストから除去される、あるいはそこに追加され、それにより、フリーポインタリストが動的に拡大縮小し、これによりメモリの第1部分の使用可能ブロックの全てに対してフリーポインタの組を常に備えるようにできる。好ましくは、特に、第2部分が、第1部分に対して、サイズは小さいが動作が速い場合に、フリーポインタリスト部分がメモリの第2部分に保存される。
本発明者らの発明の他の実施例により、メモリ構成要素をもつデジタルデータ処理システムを用いるための、このメモリ中の使用可能な資源を管理するための方法を提供する。この実施例において、まず、メモリの第1部分をブロックに区画し、その後、ポインタで構成されるフリーポインタリストを生成し、これらポインタのおのおのがブロックの各1つを指すようにする。ブロックが割り当てられると、フリーポインタリストから各ポインタを除去し、ブロックの割り当てが解除されると、各ポインタをフリーポインタリストに追加する。このように、フリーポインタリストが動的に拡大縮小するようにされ、これによりメモリの第1部分の使用可能ブロックの全てに対してフリーポインタの組を常に備えるようにできるようになるメカニズムを提供する。好ましくは、特に、第2部分が、第1部分に対して、サイズは小さいが動作が速い場合に、フリーポインタリスト部分がメモリの第2部分に保存される。
本発明者らの発明のさらに他の実施例により、メモリ構成要素をもつデジタルデータ処理システムを用いるための、このメモリ中の使用可能な資源を管理するための方法を提供する。この実施例において、まず、メモリの第1部分をフリーブロックの組に区画する。それに続く動作中に、フリーブロックの第1組のリンクされたリストをフリーポインタリストとして維持し、各フリーブロックがフリーブロックの第2組のフリーブロックのおのおのに対してフリーポインタ組を保存する。システムからの第1要求に応じて、フリーポインタリストのヘッドにあるフリーポインタにより指されるフリーポインタ組のブロックを割り当て、その後、そのヘッドにあるポインタをフリーポインタリストから除去する。システムからの第2の要求に応じて、割り当てられたブロックをフリーブロックの組に戻し;そのヘッドにあるフリーポインタリストに対して、戻されるブロックへのフリーポインタを追加する。再び、フリーポインタリストが動的に拡大縮小するようにされ、これによりメモリの第1部分の使用可能ブロックの全てに対してフリーポインタの組を常に備えるようにできるメカニズムを提供した。好ましくは、特に、第2部分が、第1部分に対して、サイズは小さいが動作が速い場合に、フリーポインタリスト部分がメモリの第2部分に保存される。
本発明者らの発明の他の1つの実施例により、メモリ構成要素をもつデジタルデータ処理システムを用いるための、このメモリ中の使用可能な資源を管理するための方法を提供する。この実施例において、まず、メモリの第1部分を少なくとも(n+1)個のフリーブロックに区画し、フリーブロックの最初の1つをフリーポインタブロックとして割り当て、ブロック内の各スロットにおいて少なくともn個のフリーポインタそれぞれを保存するサイズを第1のフリーブロックがもつ。次に、フリーポインタブロックのスロットの最初の1つを指すようヘッドポインタを初期化する。その後、n個の他のフリーブロックのおのおのに対して、n個のフリーブロックの各1つに向けたフリーポインタを、ヘッドポインタにより指されるフリーポインタブロックのスロットに保存し、フリーポインタブロックの次に続くスロットを指すようヘッドポインタを前進させる。システムからの第1の要求に応じて:フリーポインタブロックから、ヘッドポインタで指される保存されたフリーポインタの1つを検索し;検索されたフリーポインタにより指されるフリーブロックを割り当て;フリーポインタブロックの次に続くスロットを指すようヘッドポインタを後退させる。システムからの第2の要求に応じて:フリーポインタブロックの次に続くスロットを指すようヘッドポインタを前進させ;あらかじめ割り当てられたブロックをフリーブロックの組に戻し;ヘッドポインタで指されるフリーポインタブロックのスロットに対して、戻されるフリーブロックに向けたフリーポインタを保存する。再び、フリーポインタリストが動的に拡大縮小するようにされ、これによりメモリの第1部分の使用可能ブロックの全てに対してフリーポインタの組を常に備えるようにできるメカニズムを提供した。好ましくは、特に、第2部分が、第1部分に対して、サイズは小さいが動作が速い場合に、フリーポインタリスト部分がメモリの第2部分に保存される。
本発明者らの発明は、添付された図面とあわせて、好ましい実施例の説明によりさらによく理解される。
図面において、同様の要素にはできるだけ同様の番号が割り振られるようにする。しかし、このやり方は単に引用における利便性や番号が不必要に増加することを防ぐためのものであり、本発明者らの発明において、複数の実施例での機能あるいは構成のいずれかで同一性が要求されることを意味する、あるいはそれを示唆することを意図したものではない。
例えば、本発明は以下の項目を提供する。
(項目1)
メモリ構成要素をもつデジタルデータ処理システムにおいて、前記メモリにおける使用可能な資源を管理するための方法であって、この方法が:
前記メモリの第1の部分をn個のブロックに区画するステップと;
前記ブロックのうちm個をポインタブロックとして割り当て、それぞれが最大s個のポインタを保存するようにされ、ここで(n>m)、(n>s)かつ((m*s)≧(n−m))であるステップと;
前記(n−m)個のブロックおのおのに対して、前記ブロックを指すポインタを生成するステップと;
前記ポインタブロックの最初の(m−1)個おのおのの前記ポインタのうちs個を保存するステップと;
前記ポインタブロックの最後の前記ポインタの残りの((n−m)−(m−1)*s))個を保存するステップとを含む方法であって;
前記ポインタブロックに保存されたポインタがフリーポインタリストを含むことを特徴とする方法。
(項目2)
項目1に記載の方法であって、この方法がさらに:
第1のブロックを割り当てる第1の割り当て要求に応じて:
前記ポインタリストの第1のポインタで指されるブロックを割り当てのため選択するステップと;
前記第1ブロックとして前記選択ブロックを割り当てるステップと;
前記ポインタリストから前記第1ポインタを除去するステップとを含む方法。
(項目3)
項目2に記載の方法であって、この方法がさらに:
前記の第1の割り当て要求に応じて前記ポインタブロックの最後が0個のポインタを保存する場合、第2ブロックを割り当てるための第2割り当て要求に応じて、前記の最後のポインタブロックを前記の第2ブロックとして割り当てるステップを含む方法であって;これにより、前記ポインタブロックの次の1つが前記の最後のポインタブロックになる方法。
(項目4)
項目2に記載の方法であって、この方法がさらに:
前記第1ブロックの割り当てを解除する第1の割り当て解除要求に応じて:
前記第1ブロックの割り当てを解除するステップと;
前記第1ブロックを指す第2ポインタを生成するステップと;
前記ポインタリストに前記第2ポインタを追加するステップとを含む方法。
(項目5)
項目4に記載の方法であって、この方法がさらに:
前記の第1の割り当て解除要求に応じて前記ポインタブロックの最後がs個のポインタを保存する場合、第2ブロックの割り当てを解除するための第2割り当て解除要求に応じて:
前記第2ブロックの割り当てを解除するステップと;
前記第2ブロックをポインタブロックとして割り当てるステップとを含む方法であって;
これにより前記第2ブロックが最後のポインタブロックになる方法。
(項目6)
項目1に記載の方法であって、この方法がさらに:
ポインタブロックのリンクされたリストを形成するために前記のm個のポインタブロックをリンクするステップと;
前記のリンクされたリストに保存された前記ポインタの最後の除去の際に前記のリンクされたリストの前記ポインタブロックの最後を除去するステップと;
前記のリンクされたリストの前記ポインタブロックの最後にs番目のポインタを追加する際にポインタブロックを前記のリンクされたリストに追加するステップとを含む方法。
(項目7)
項目1に記載の方法であって、前記フリーポインタリストの選択された部分が前記メモリの第2部分に保存されることを特徴とする方法。
(項目8)
項目7に記載の方法であって、前記メモリの第2部分が、第1部分に対して、サイズは小さいが動作が速いことを特徴とする方法。
(項目9)
メモリ構成要素をもつデジタルデータ処理システムにおいて、前記メモリにおける使用可能な資源を管理するための方法であって、この方法が:
前記メモリの第1の部分を少なくとも第1と第2のブロックに区画するステップと;
前記第1ブロックを第1ポインタブロックとして割り当てるステップと;
前記第2ブロックを指す第1ポインタを生成するステップと;
前記第1ポインタを前記第1ポインタブロックに保存するステップとを含む方法であって;
前記ポインタブロックに保存されたポインタがフリーポインタリストを含むことを特徴とする方法。
(項目10)
項目9に記載の方法であって、この方法がさらに:
ブロックを割り当てる第1の割り当て要求に応じて:
前記第1ポインタで指されるブロックを割り当てのため選択するステップと;
前記の選択されたブロックを割り当てるステップと;
前記ポインタリストから前記第1ポインタを除去するステップとを含む方法。
(項目11)
項目10に記載の方法であって、この方法がさらに:
前記の第1の割り当て要求に応じて前記の第1ポインタブロックが0個のポインタを保存してから、その後、第2の割り当て要求に応じて第1ポインタブロックを割り当てるステップを含む方法であって:
これによりフリーポインタリストが空になる方法。
(項目12)
項目11に記載の方法であって、この方法がさらに:
割り当てられたブロックの割り当てを解除する第1の割り当て解除要求に応じて:
前記の割り当てされたブロックの割り当てを解除するステップと;
前記第1ポインタブロックとして前記の割り当て解除されたブロックを再割り当てするステップとを含む方法。
(項目13)
項目12に記載の方法であって、この方法がさらに:
前記の第1の割り当て解除要求に応じて前記の第1ポインタブロックが所定数未満のポインタを保存する場合、割り当てられたブロックの割り当てを解除するための第2割り当て解除要求に応じて:
前記の割り当てされたブロックの割り当てを解除するステップと;
前記の割り当て解除されたブロックを指す第2ポインタを生成するステップと;
前記ポインタリストに前記第2ポインタを追加するステップとを含む方法。
(項目14)
項目9に記載の方法であって、前記フリーポインタリストの選択された部分が前記メモリの第2部分に保存されることを特徴とする方法。
(項目15)
項目14に記載の方法であって、前記メモリの第2部分が、第1部分に対して、サイズは小さいが動作が速いことを特徴とする方法。
(項目16)
メモリ構成要素をもつデジタルデータ処理システムにおいて、前記メモリにおける使用可能な資源を管理するための方法であって、この方法が:
前記メモリの第1の部分をブロックに区画するステップと;
ポインタで構成されるフリーポインタを生成し、ポインタのおのおのが前記ブロックのそれぞれ1つを指すステップと;
ブロックが割り当てられると、前記フリーポインタリストから各ポインタを除去するステップと;
ブロックの割り当てが解除されると、前記フリーポインタリストに各ポインタを追加するステップとを含む方法。
(項目17)
項目16に記載の方法であって、フリーポインタリストが、前期ブロックのリンクされたリストに保存され、各ブロックが、所定数の前記フリーポインタを保存することを特徴とする方法。
(項目18)
項目17に記載の方法であって、リンクされたリストのヘッドにあるブロックで保存されたフリーポインタの最後を除去すると同時に前記ブロックが、リンクされたリストのヘッドから除去され、これにより、前記のリンクされたリストの次のブロックが、前記リストのヘッドになる方法。
(項目19)
項目17に記載の方法であって、前記のリンクされたリストのヘッドにあるブロックに対して前記の所定数のポインタを追加すると同時に、前記のリンクされたリストのヘッドにブロックが追加され、これにより、前記のリンクされたリストの前記の追加されたブロックが、前記のリンクされたリストのヘッドになる方法。
(項目20)
項目16に記載の方法であって、前記フリーポインタリストの選択された部分が前記メモリの第2部分に保存されることを特徴とする方法。
(項目21)
項目20に記載の方法であって、前記メモリの第2部分が、第1部分に対して、サイズは小さいが動作が速いことを特徴とする方法。
(項目22)
メモリ構成要素をもつデジタルデータ処理システムにおいて、前記メモリにおける使用可能な資源を管理するための方法であって、この方法が:
前記メモリの第1の部分をフリーブロックの組に区画するステップと;
前記フリーブロックの第1組のリンクされたリストをフリーポインタとして維持し、前記フリーブロックの第2組のフリーブロックのおのおのに対してフリーポインタの処理された組を保存するステップと;
前記システムからの第1の要求に応じて:
前記フリーポインタリストのヘッドにあるフリーポインタにより指された前記フリーブロック組のブロックを割り当てるステップと;
前記フリーポインタリストからこのリストのヘッドにある前記ポインタを除去するステップと;
前記システムからの第2の要求に応じて:
割り当てられたブロックを前記フリーブロックの組に戻すステップと;
このリストのヘッドにある前記フリーポインタリストに対して、前記の戻されたブロックを指すフリーポインタを追加するステップとを含む方法。
(項目23)
項目22に記載の方法であって、前記フリーポインタリストの選択された部分が前記メモリの第2部分に保存されることを特徴とする方法。
(項目24)
項目23に記載の方法であって、前記メモリの第2部分が、第1部分に対して、サイズは小さいが動作が速いことを特徴とする方法。
(項目25)
メモリ構成要素をもつデジタルデータ処理システムにおいて、前記メモリにおける使用可能な資源を管理するための方法であって、この方法が:
前記メモリの第1の部分を少なくともn+1個のフリーブロックに区画するステップと;
前記フリーブロックの最初の1つをフリーポインタブロックとして割り当て、前記の第1のフリーブロックが、前記ブロック内の各スロットにおいておのおのが少なくともn個のフリーポインタを保存するような大きさをもつステップと;
前記フリーポインタブロックの前記スロットの最初の1つを指すようヘッドポインタを初期化するステップと;
前記のn個の他のフリーブロックのおのおのに対して:
前記ヘッドポインタで指された前記フリーポインタブロックのスロットに対して、前記のn個のフリーブロックの各1つに対するフリーポインタを保存するステップと;
前記フリーポインタブロックの次に続くスロットを指すよう前記ヘッドポインタを前進させるステップと;
前記システムからの第1の要求に応じて:
前記フリーポインタブロックから、前記ヘッドポインタにより指され保存された前記フリーポインタの1つを検索するステップと;
前記の検索されたフリーポインタにより指されたフリーブロックを割り当てるステップと;
前記フリーポインタブロックの次に続くスロットを指すよう前記ヘッドポインタを後退させるステップと;
前記システムからの第2の要求に応じて:
前記フリーポインタブロックの次に続くスロットを指すよう前記ヘッドポインタを前進させるステップと;
割り当てられたブロックを前記フリーブロックの組に戻すステップと;
前記ヘッドポインタで指された前記の第1フリーポインタブロックのスロットに対して、前記の戻されたフリーブロックに対するフリーポインタを保存するステップとを含む方法。
(項目26)
項目25に記載の方法であって、前記ポインタリストの選択された部分が前記メモリの第2部分に保存されることを特徴とする方法。
(項目27)
項目26に記載の方法であって、前記メモリの第2部分が、第1部分に対して、サイズは小さいが動作が速いことを特徴とする方法。
図1は、使用可能なメモリ資源を管理するために用いられる従来のフリーリストのブロック図である。 図2は、使用可能なメモリ資源を管理するための、本発明の第1の実施例により構成されるフリーポインタリストのブロック図である。 図3は、図2のフリーポインタリストのさらに詳細なブロック図である。 図4は、使用可能なメモリ資源を管理するための、本発明の第2の実施例により構成されるフリーポインタリストのブロック図である。 図5は、図4のフリーリストのさらに詳細なブロック図である。
(発明の詳細な説明)
本発明者らの発明の好ましい実施例により、メモリのフリーブロックそのものではなく、むしろフリーブロックに向けたポインタを保存するために割り当てられたメモリのブロックのリンクされたリストを維持することで使用可能なメモリ資源を管理する。引用の利便性のため、本発明者らのリストをフリーポインタリストと呼び、ポインタそのものはフリーポインタと呼ぶ。
全般的に図2の例で示され、さらに詳細には図3で示されているものはメモリシステムであるが、このメモリシステムにおいて、使用可能なフリーブロックB24,B26,B28,B30,...,B32,B34は、2つのフリーポインタブロックB24およびB30だけで構成されるフリーポインタリスト36を用いて管理され、これらの両フリーポインタブロックはメモリ2のレベルBに保存される。図示された構成に到達するため、本発明者らのメモリ初期化処理では、メモリの使用可能なプールの第1のフリーブロックを特定するために通常の技術を用いるが、この例ではメモリはB24である。その後、まず前向きリンクスロットを指すようヘッド20の初期化を行うことにより、ブロックがフリーポインタリスト36の第1のフリーポインタブロックとなり、さらにその前向きリンクスロットのゼロ前向きポインタを保存するよう構成する(図3参照)。次のフリーブロックとしてB26を特定すると、対応するフリーポインタが生成され、フリーポインタブロックB24の次の使用可能なフリーポインタスロットを指すようヘッド20が更新され、このヘッドがフリーになり、新たに生成されたフリーポインタが、ヘッド20、すなわちフリーにより指されるスロットに保存される。次のフリーブロックとしてB28を特定すると、対応するフリーポインタが生成され、フリーポインタブロックB24の次の使用可能なフリーポインタスロットを指すようヘッド20が更新され、このヘッドがフリーになり、新たに生成されたフリーポインタが、ヘッド20、すなわちフリーにより指されるスロットに保存される。B30を次のフリーブロックとして特定すると、対応するフリーポインタが生成される。しかし、ヘッド20を更新しようとすると、フリーポインタブロックB24の全ての使用可能スロットが有効なフリーポインタで満たされていることを(例えば、従来の範囲確認アルゴリズムを用いて)処理により検出する。これに応じて、この処理により、前向きリンクスロットを指すようヘッド20を再初期化することでフリーブロックB30を次の現行のフリーポインタブロックになるよう構成し、その後、その前向きリンクスロットに対して、現時点で満たされているフリーポイントブロックB24に向けた前向きリンクを保存する。この処理は全てのフリーブロックが特定され、各フリーポインタがフリーポインタブロックのリンクされたリストに保存されるまで続けられる。したがって、図示された例に対して、フリーブロックの最後B34に対応するフリーポインタは、フリーポインタブロックB30のフリーに保存され、図2および図3の両方で示されるように、メモリ初期化処理の終了時に、ヘッド20がフリーブロックB30のフリーを指す。
注記:図2において、ヘッド20が、現行のフリーポイントブロックのうちの任意のフリーポインタスロットを(さらに、実際には前向きリンクを同様に)指すことができるということを示すため点連結線を用いたが、図示を過度に複雑にすることを防ぐために、とる可能性のあるあらゆる変数を示していない。
図2および図3示す例において、フリーポインタブロックB24およびB30のおのおのは、フリーメモリの各ブロックに向けた2つのポインタだけを保存するようになっている。これにより、この単純な例において、合計4個のフリーメモリブロックを管理するため、合計2個のメモリブロックが必要である(実際には、以下に示すとおり、管理されるフリーブロックの合計数は6である)。このような配置により、実際的な大きさのメモリシステムで実行された場合、さらに大きく効率が上がる。例えば、さらに典型的なブロックサイズである512Bに対して、256MBのメモリを合計524,288個のブロックに区画できる。32bのポインタ(通常のサイズであるが、絶対的に必要とされるものよりもビット数は大きい)を使用し、前向きリンクに対して各フリーポインタブロックの最初の64Bをとっておくと仮定すると、各フリーポインタブロックにおいて126個のフリーポインタを保存するために使用可能なスペースがあることになる。そのような配置において、フリーポインタブロックとして使用するため、524,288個の使用可能なフリーブロックのうち4,129個をあらかじめ割り当てることができ、これにより、フリーポインタとして合計520,254個の使用可能なスロットが得られる。したがって、明らかにに、残りの520,159個の使用可能なフリーブロックを管理するため、4,129個のフリーブロックが使用可能であり、520,254個の使用可能なフリーポインタスロットのうち95個しか無駄にならない。
図2および図3で図示した構造で、フリーポインタリスト36のヘッドにあるフリーポインタブロックを用いてフリーメモリブロックを割り当てることが望ましい。参照の利便性のため、このブロックをアクティブフリーポインタブロックと呼ぶ。メモリ初期化処理の最後に、その時に自動的に埋められるフリーポインタブロックが最初のアクティブフリーポインタブロックになる。さらに、メモリ初期化処理により頻繁にヘッド20を更新して、最も新しく埋められたスロットを指すようにすることから、メモリ割り当てを即座に行うことができる。その後、各フリーブロックが割り当てられると、ヘッド20が更新され、次の有効なフリーポインタを指すようになる。割り当て要求が受信され、アクティブフリーポインタブロックに有効なフリーポインタが残っていない場合、その前向きリンクをヘッド20にコピーすることで、その時点で空のアクティブフリーポインタブロックが非活性化され、これにより、フリーポインタリスト36の次のフリーポインタブロックを活性化する。その時点で非活性化されるフリーポインタブロックは、好ましくは、メモリの使用可能ブロックに対する保留された要求を満たすために割り当てられることにより、この時点で使用可能なフリーブロックのプールに戻すことができる。これにより、フリーブロックおよび各フリーポインタブロックが比例的に消費されるため、メモリ要求のもっとも極端な条件下で、割り当てに対して使用可能な最終のブロックがフリーポインタブロックの最後になる−レベルBメモリ資源が無駄にならず、メモリ管理専用のレベルAの資源だけが、前向きリンクおよび後向きリンク、すなわちヘッド20およびテール22を保存するためのヘッダ18の資源になる。
注記:アクティブフリーポインタブロックの有効なフリーポインタと無効なフリーポインタとの間の境界を追跡するためにヘッド20を用いることにより、有効なフリーポインタを含まないスロットにゼロポインタを保存する必要がなく、この保存を実際に行うことでメモリ書き込みアクセス数が増加し、臨界メモリ帯域を消費する。
上述の従来技術と比較するにあたって、図2および図3に示される構成から始めて、本発明者らの発明によりどのように第1のメモリ割り当て要求が処理されるかを詳細に正確に説明する。アクティブな処理、例えば処理_Aからの受信に対して、フリーメモリのブロックを割り当てるという要求、すなわち本発明者らのメモリ割り当て処理により、フリーポインタリスト36のヘッドにあるフリーポインタブロックにある第1の有効なフリーポインタブロックにより指されるフリーブロックを割り当てる。図2および図3で示される例に対して、割り当て要求を満たすためにフリーブロックを得る作業は次のステップにより達成される:
1.ヘッド20から、アクティブフリーポインタブロックB30のフリースロットに向けたポインタを検索する;
2.アクティブフリーポインタB30のフリースロットから、必要とするフリーブロックB34に向けたポインタを検索する;
3.アクティブフリーポインタブロックB30のフリースロットを指すようヘッド20を更新する。
これにより、図2および図3で示されるような階層的に構成されたメモリにおいて、ブロック割り当てでは少なくとも次の3つのメモリアクセスが必要である:
1.メモリのレベルAでの読み出しサイクル;
2.メモリのレベルAでの読み出しサイクル;
3.メモリのレベルAでの書き込みサイクル。
ここで、アクティブな処理、例えばプロセスAから、メモリの割り当てブロックの割り当て解除を行う要求受信に対して、メモリの割り当て解除処理により、典型的には、フリーポインタリスト36のヘッドにブロックを戻す。図2および図3に示される例に続き、割り当てられたばかりのブロックB34の割り当て解除を処理_Aが要求したと仮定すると、割り当て解除は次のステップにより実施できる:
1.ヘッド20から、アクティブフリーポインタブロックB30のフリースロットに向けたポインタを検索する;
2.アクティブフリーポインタブロックB30のフリースロットを指すようヘッド20を更新する;
3.アクティブフリーポインタB30のフリースロットに対して、現時点でフリーのブロックB34に向けたポインタを保存する。
これにより、図2および図3で示されるような階層的に構成されたメモリにおいて、ブロック割り当て解除では少なくとも次の3つのメモリアクセスが必要である:
1.メモリのレベルAでの読み出しサイクル;
2.メモリのレベルAでの書き込みサイクル;
3.メモリのレベルBでの書き込みサイクル。
この点まで、従来方法とは確かに異なる構成や手順でありながら、本発明者らの発明では顕著な性能上の利点(メモリアクセスサイクルにおける利点)はないということを示した。しかし、妥当な数のフリーポインタを保持する上で十分なメモリレベルAにスペースが当てられるのであれば、本発明者らの発明は劇的に好ましい方向に向く。
図4において全般的に示され、図5においてさらに詳細に示されているものは、メモリレベルAで比較的少数のフリーポインタを維持し、残りがもしあれば、その残りをメモリレベルBで維持するため、本発明者らの発明の拡張された実施例により構成された2レベル式フリーポインタリスト38である。全般に、メモリレベルBにあるフリーポインタリスト38の構成要素は、図2および図3で示されるフリーポインタリスト36と構成(および構成方法)が実質的に同一である。しかしさらに、所定数のフリーポインタ(「F_Ptrs」)を保持するため、フリーポインタ記憶装置F40をメモリレベルAになるよう保存する。好ましくは、フリーポインタブロック内にあるものと少なくとも同数のフリーポインタフリーポインタ、好ましくはフリーポインタブロックのフリーポインタの数よりも少なくとも1だけ多いものを含むよう記憶装置F40のサイズを決める。
全般に、システム全体像から、フリーブロックが割り当てられる順番はあまり重要でない。したがって、フリーポインタ記憶装置F40は、図示された例のとおり、後入れ先出し(「LIFO」)列、あるいは先入れ後出し(「FIFO」)列のいずれかで作動できる。実施に関して、フリーポインタ記憶装置F40は、例えば、円形管理バッファあるいはプッシュダウンスタックのいずれかで構成できる。しかし、割り当て順番が重要なシステムにおいて、このシステム制限を満たすため、さまざまな既知の実施オプションの特定の1つを選定することが望ましい。この説明では、フリーポインタ記憶装置F40が、円形管理バッファとして実施されるLIFO列であると仮定している。このような構成において、最終ポインタ42は、列のヘッドに追加される最終フリーポインタを常に指す。
本発明者らの発明の好ましい実施例によれば、本発明者らのメモリ初期化処理では、フリーポインタブロックをあらかじめ組み立てるための一次作業エリアとしてフリーポインタ記憶装置F40を用いる。処理の開始時に、フリーポインタ記憶装置F40は空であり、最終ポインタ42はゼロである。これにより、第1のフリーブロックが、例えばフリーブロックB24として特定されると、最終ポインタ42は、フリーポインタ記憶装置F40のFスロットを指すよう前進し、対応するフリーポインタがそのスロットに記憶される。第2のフリーブロックB26が特定されると、最終ポインタ42は、フリーポインタ記憶装置F40のFスロットを指すよう前進し、対応するフリーポインタがそのスロットに記憶される。この処理は、最終ポインタ42を所定の最大レベルまで前進させた結果、フリーポインタ記憶装置F40からメモリレベルBまでフリーポインタのブロックを移行させる必要性をプッシュ信号が示すようになるまで継続される。これにより、図示された例において、最終ポインタ42がフリーポインタ記憶装置F40のF3スロットまで前進した場合に、プッシュ動作が開始される。第3のフリーブロックB28を特定すると同時に、この処理により最終ポインタ42を、Fスロットを指すよう前進させる際にこれがまず起こり、その後、そのスロット内の対応するフリーポインタを記憶させる。結果として行われるプッシュ操作の間、まず前向きリンクスロットを指すようヘッド20の初期化を行うことにより、この例ではB30となる次のフリーブロックがフリーポインタリスト36の第1のフリーポインタブロックになり、さらにその前向きリンクスロットのゼロ前向きポインタを保存するよう構成する(図5参照)。この処理ではその後、適当な数のフリーポインタをフリーポインタ記憶装置F40から新たなフリーポインタブロックの各スロットに移動させ、上述のとおりフリーポインタスロットが満たされるのに応じてヘッド20を継続的に更新し、同時に、各ポインタがうまく移動された後に最終ポインタ42を後退させる。
プッシュ操作の最後に、最終ポインタ42は再び、有効なフリーポインタ(この例ではブロックB24)を含む唯一のスロットであるフリーポインタ記憶装置F40のFスロットを指す。フリーポインタ記憶装置F40においてこの時点で使用可能なスペースを用いて、メモリ初期化処理により通常の操作を再開できる。この例ではB32(介在するブロックの説明については効率性の点から無視している)となる次のフリーブロックが特定されると、最終ポインタ42は、フリーポインタ記憶装置F40のFスロットを指すよう前進し、対応するフリーポインタがそのスロットに記憶される。最後に、この例ではB34となる最終フリーブロックが特定されると、最終ポインタ42は、フリーポインタ記憶装置F40のFスロットを指すよう前進し、対応するフリーポインタがそのスロットに記憶される。この時点で、追加のフリーブロックが特定されるとプッシュ操作が開始されることを示すようプッシュ信号が再び発せられる。この例では、このようなことは起こっていないが、一般的に、大きなメモリ構成要素をもつシステムにおいて、こういった処理は、全てのフリーブロックが特定されて各フリーポインタが、まずフリーポインタ記憶装置F40に保存されるまで継続され、さらに必要に応じてフリーポインタブロックのリンクされたリストに押し込まれる。
図4および図5で図示した構造で、現時点で最終ポインタ42により指されているF40のスロットで記憶されているフリーポインタにより指されているフリーブロックとともに各割り当て要求を満たすことが望ましい。各フリーブロックが割り当てられると、最終ポインタ42が1つのスロットにより後退させられる。これにより、図示された例において、フリーブロックB34は、メモリに対する第1の要求を満たすよう割り当てられ、その結果、最終ポインタ42はFスロットを指すよう後退させられる。この処理は、結果として最終ポインタが所定の最小レベル未満まで下がり、メモリレベルBからメモリレベルAまであらかじめ下げられたフリーポインタを移動させる必要性をプル信号が示すようになるまで継続される。フリーポインタ記憶装置F40が4個のフリーポインタだけを備える図示された例において、第1のスロットFを指すよう最終ポインタ42の後退直後にプル操作が開始されるよう提案する。これは、メモリに対する第2の要求を満たすようフリーブロックB32を割り当てた結果、この処理により最終ポインタ42はFスロットを指すよう後退させられる際にまず発生する。結果として行われるプル操作の間、この処理により、ヘッド20から、フリーポインタリスト36のヘッドにあるフリーポインタブロックの第1のフリーポインタ、すなわちB12に向けたポインタを検索する。この処理ではその後、適当な数のフリーポインタをフリーポインタ記憶装置F40からF40の各スロットに移動させ、上述のとおりフリーポインタスロットが空にされるのに応じてヘッド20を継続的に更新し、同時に、各フリーポインタがうまく移動されるのに応じて最終ポインタ42を前進させる。プル操作の結果、フリーポインタブロックに有効なポインタが残らない場合、プル操作により、フリーポインタリスト36からそのブロックのリンクを切断し、フリーポインタ記憶装置F40の次に使用可能なスロットのこの時点でフリーになったブロックに対して対応するフリーポインタを挿入する。
後に明らかとなるとおり、本発明者らの発明の好ましい実施例により、メモリのブロックの割り当て/割り当て解除を行うためのアクティブ処理からの各要求にこたえる間にメモリ構成要素のレベルBにあるフリーポインタリスト36にアクセスする必要がなくなる。むしろ、本発明者らの発明では、メモリのレベルAに対するそのようなルーチン作業を制限するものであり、プッシュ/プル操作の間だけレベルBにアクセスされ、その際においてもこの操作はまとまったアクセスの中で比較的短い操作になる。この処理は、メモリのレベルBが効率的にブロックアクセスをサポートするようになっていれば、特に効率的である。
全般的に、上述の処理により、プッシュ/プル操作がバックグランドでスケジューリングできるようになる。これにより、これらの操作では、おそらく異常に長い一連のメモリ割り当てあるいは割り当て解除の間を除けば、システム性能に与える影響は最小限のものである。しかし、本発明者らの発明から最大限の性能を実現するため、フリーポインタF40のサイズが最適化されるようシステムアプリケーションの予想される動的挙動を理解するよう注意深い解析を行うよう勧める。一方では、フリーポインタ記憶装置F40があるシステムに対して小さすぎる場合、不必要なプッシュ/プル操作においてかなりの性能が失われ;他方、これが大きすぎる場合、他の重要な作業で利用できない過剰なレベルA空間そのものによりかなりの性能劣化が起こる。当然ながら、適切に構成されたシステムにおいて、システムに対する要求が時間とともに、さらに異なる作業負荷の下で変化するのに応じて、フリーポインタ記憶装置F40のサイズを動的に調整するため従来型の作業監視アルゴリズムを用いることも確かに考えられる。
これにより、使用可能なメモリ資源を効率的に管理するための構成および方法を本発明者らが提供したことは明らかである。特に、使用可能なメモリ資源を管理するための構成および方法を本発明者らは開示した。さらに、従来技術のように直接ではなく、フリーポインタのリストを通して間接的に使用可能なメモリ資源を管理するための構成および方法を本発明者らは開示した。高性能レベルおよび比較的低性能レベルで階層的に構成されるメモリをもつシステムにおいて、フリーポインタが二層リストとして維持される場合、本発明者らの構成および方法は特に効率的であり、ここでは少数のフリーポインタが高性能レベルで維持され、フリーポインタの残りが低性能レベルで維持される。当業者であれば、本発明者らの発明の考え方から逸脱することなく改造や変更を行うことができるということを認識するであろう。したがって、本発明者らの発明は、そのような変更や改造について、添付の請求項の適用範囲内に入ることを意図している。

Claims (2)

  1. フリーブロックのリンクされたリストに区分された速いが小さいレベルAメモリと、遅いが大きいレベルBメモリとを有するデジタルデータ処理システムにおいて、前記レベルBメモリにおける使用可能な資源を管理する方法であって、前記方法は、
    前記レベルAメモリの一部分をフリーポインタ格納部として割り当てることと、
    前記フリーブロックに対するポインタを前記フリーポインタ格納部に格納することと、
    前記フリーポインタ格納部が所定の最大レベルに到達した場合に、プッシュ動作を開始することであって、前記プッシュ動作は、フリーブロックの前記リンクされたリストにおける第1のフリーブロックを識別し、かつ、それを第1のフリーポインタブロックとして指定し、かつ、前記フリーポインタ格納部から前記第1のフリーポインタブロックに前記ポインタを移動させる、ことと、
    前記フリーブロックに対する全てのポインタが格納されるまで、前記フリーポインタ格納部にポインタを格納するステップと、前記フリーポインタ格納部から、フリーブロックの前記リンクされたリストから識別された後続のフリーポインタブロックに前記ポインタを移動させるプッシュ動作を開始するステップを繰り返すことと
    を含む、方法。
  2. 割り当て要求に応答して、前記フリーポインタ格納部におけるポインタを用いて、フリーブロックを割り当てることと、
    前記第1のフリーポインタブロックを識別し、かつ、前記フリーポインタ格納部におけるポインタ数が所定の最小値に到達した場合に、前記第1のフリーポインタブロックから前記フリーポインタ格納部にポインタを移動させるプル動作を開始することと、
    前記フリーポインタ格納部におけるポインタを用いてフリーブロックを割り当てるステップと、前記フリーポインタ格納部におけるポインタ数が所定の最小値に到達した場合に、後続のフリーポインタブロックから前記フリーポインタ格納部にポインタを移動させるプル動作を開始するステップとを繰り返すことと
    をさらに含む、請求項1に記載の方法。
JP2011168824A 2003-02-26 2011-08-01 使用可能なメモリ資源を管理するための構成および方法 Expired - Fee Related JP5222381B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/376,354 US6907508B2 (en) 2003-02-26 2003-02-26 Structure and method for managing available memory resources
US10/376,354 2003-02-26

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2006503370A Division JP4879014B2 (ja) 2003-02-26 2004-02-06 使用可能なメモリ資源を管理するための構成および方法

Publications (2)

Publication Number Publication Date
JP2011248920A JP2011248920A (ja) 2011-12-08
JP5222381B2 true JP5222381B2 (ja) 2013-06-26

Family

ID=32869088

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006503370A Expired - Fee Related JP4879014B2 (ja) 2003-02-26 2004-02-06 使用可能なメモリ資源を管理するための構成および方法
JP2011168824A Expired - Fee Related JP5222381B2 (ja) 2003-02-26 2011-08-01 使用可能なメモリ資源を管理するための構成および方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2006503370A Expired - Fee Related JP4879014B2 (ja) 2003-02-26 2004-02-06 使用可能なメモリ資源を管理するための構成および方法

Country Status (5)

Country Link
US (1) US6907508B2 (ja)
EP (1) EP1599802A2 (ja)
JP (2) JP4879014B2 (ja)
TW (1) TWI340385B (ja)
WO (1) WO2004077229A2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7330956B1 (en) * 2002-04-16 2008-02-12 Emc Corporation Bucket based memory allocation
US7185029B1 (en) * 2003-06-27 2007-02-27 Unisys Corporation Method and apparatus for maintaining, and updating in-memory copies of the first and second pointers to reference the new versions of the first and second control structures that indicate available and allocated portions of usable space in the data file
US7127505B2 (en) 2003-08-15 2006-10-24 Internet Associates, Llc Methods, computer systems, and computer readable media for generating displays of sets of network addresses with status indicators
US7073040B2 (en) * 2003-09-23 2006-07-04 Intel Corporation Multilevel segmented memory
US7343513B1 (en) * 2003-09-24 2008-03-11 Juniper Networks, Inc. Systems and methods for recovering memory
US7330907B2 (en) * 2003-10-02 2008-02-12 Internet Associates, Llc Methods, computer systems, and computer readable media for controlling the status of network address space
US7523284B1 (en) 2004-08-10 2009-04-21 American Megatrends, Inc. Method and apparatus for providing memory management within a system management mode
US8225327B2 (en) * 2005-09-15 2012-07-17 International Business Machines Corporation Synchronizing access to a shared resource utilizing selective locking
US7469329B2 (en) 2006-03-30 2008-12-23 International Business Machines Corporation Methods for dynamically resizing memory pools
US9311227B2 (en) * 2006-10-31 2016-04-12 Hewlett Packard Enterprise Development Lp Memory management
US9778882B2 (en) * 2008-06-30 2017-10-03 Hitachi Data Systems Engineering UK Limited Dynamic write balancing in a data storage system
CA2806626C (en) 2010-07-28 2016-04-05 Nippon Steel & Sumitomo Metal Corporation Hot-rolled steel sheet, cold-rolled steel sheet, galvanized steel sheet, and methods of manufacturing the same
US20130061009A1 (en) * 2011-09-06 2013-03-07 Futurewei Technologies, Inc. High Performance Free Buffer Allocation and Deallocation
US8793464B2 (en) * 2011-11-07 2014-07-29 Sap Ag Memory management in multi-threaded multi-processor computing system
US9092318B2 (en) * 2012-02-06 2015-07-28 Vmware, Inc. Method of allocating referenced memory pages from a free list
US9367439B2 (en) * 2012-04-30 2016-06-14 Oracle International Corporation Physical memory usage prediction
US10055267B2 (en) * 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
CN109690498B (zh) * 2016-09-28 2020-12-25 华为技术有限公司 内存管理方法和设备
US11093403B2 (en) 2018-12-04 2021-08-17 Vmware, Inc. System and methods of a self-tuning cache sizing system in a cache partitioning system

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2609705B2 (ja) * 1988-10-28 1997-05-14 日本電気株式会社 ファイル制御方式
JP3030030B2 (ja) * 1989-01-30 2000-04-10 富士通株式会社 領域管理処理方式
US5426639A (en) * 1991-11-29 1995-06-20 At&T Corp. Multiple virtual FIFO arrangement
JP3325729B2 (ja) * 1994-11-28 2002-09-17 富士通株式会社 メモリ管理装置
JPH08328946A (ja) * 1995-06-05 1996-12-13 Fuji Xerox Co Ltd 2次記憶領域の管理方法
US6754795B2 (en) * 2001-12-21 2004-06-22 Agere Systems Inc. Methods and apparatus for forming linked list queue using chunk-based structure
US7111289B2 (en) * 2001-12-21 2006-09-19 Agere Systems, Inc. Method for implementing dual link list structure to enable fast link-list pointer updates
US6754744B2 (en) * 2002-09-10 2004-06-22 Broadcom Corporation Balanced linked lists for high performance data buffers in a network device
US20040131055A1 (en) * 2003-01-06 2004-07-08 Juan-Carlos Calderon Memory management free pointer pool

Also Published As

Publication number Publication date
EP1599802A2 (en) 2005-11-30
JP4879014B2 (ja) 2012-02-15
US20040168037A1 (en) 2004-08-26
TWI340385B (en) 2011-04-11
WO2004077229A3 (en) 2004-12-02
US6907508B2 (en) 2005-06-14
JP2006519438A (ja) 2006-08-24
TW200502953A (en) 2005-01-16
JP2011248920A (ja) 2011-12-08
WO2004077229A2 (en) 2004-09-10

Similar Documents

Publication Publication Date Title
JP5222381B2 (ja) 使用可能なメモリ資源を管理するための構成および方法
EP2791806B1 (en) Working set swapping using a sequentially ordered swap file
US5651136A (en) System and method for increasing cache efficiency through optimized data allocation
JP3611305B2 (ja) 永続的且つロバストな記憶割当てシステム及び方法
US6175900B1 (en) Hierarchical bitmap-based memory manager
JP2571664B2 (ja) コンピュータ主記憶域管理システムおよび方法
US5109336A (en) Unified working storage management
US7337201B1 (en) System and method to increase memory allocation efficiency
JP2858795B2 (ja) 実記憶割り当て方法
CN1226687C (zh) 用于持久和稳固的存储管理的系统和方法
JP2007523412A (ja) メモリ割当て
US5390315A (en) Allocation of uniform contiguous blocks of DASD storage by maintaining both a bit and a bit map record of available storage
US6804761B1 (en) Memory allocation system and method
US6842826B1 (en) Method and apparatus for providing efficient management of least recently used (LRU) algorithm insertion points corresponding to defined times-in-cache
CN108959113B (zh) 用于闪存感知堆存储器管理的方法和系统
US9778872B2 (en) Storage region management method, storage region allocation method and program
CN104133642B (zh) SSD Cache填充方法及装置
US6976021B2 (en) Method, system, and computer program product for managing a re-usable resource with linked list groups
US8274521B2 (en) System available cache color map
US8429371B2 (en) System and method for robust and efficient free chain management
CN113535392B (zh) 基于cma实现支持大内存连续分配的内存管理方法及系统
JP2005157714A (ja) メモリ管理システム
JPH06103157A (ja) 記憶空間管理方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120410

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: 20130212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130308

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

Free format text: PAYMENT UNTIL: 20160315

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5222381

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees