JP6505266B2 - メモリ管理装置を用いた自動メモリ管理 - Google Patents

メモリ管理装置を用いた自動メモリ管理 Download PDF

Info

Publication number
JP6505266B2
JP6505266B2 JP2017568415A JP2017568415A JP6505266B2 JP 6505266 B2 JP6505266 B2 JP 6505266B2 JP 2017568415 A JP2017568415 A JP 2017568415A JP 2017568415 A JP2017568415 A JP 2017568415A JP 6505266 B2 JP6505266 B2 JP 6505266B2
Authority
JP
Japan
Prior art keywords
size
memory
logical address
objects
subspace
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017568415A
Other languages
English (en)
Other versions
JP2018525724A (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.)
Aicas GmbH
Original Assignee
Aicas GmbH
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 Aicas GmbH filed Critical Aicas GmbH
Publication of JP2018525724A publication Critical patent/JP2018525724A/ja
Application granted granted Critical
Publication of JP6505266B2 publication Critical patent/JP6505266B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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
    • 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/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

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

本発明は、一般的にはコンピュータに関するものであり、特には自動メモリ管理(AMM)を有するコンピュータに関するものである。本発明はまた、方法、コンピュータプログラム製品およびコンピュータシステムに関するものでもある。
コンピュータシステムは、オブジェクト、例えばデータ(例えば、テキスト、画像、ビットマップ、制御信号、データフィールド、データアレイ、テーブル)および(例えば、ルーチンコール、タスク、スレッドのための)プログラムコードを有するアプリケーションを実行する。コンピュータシステムは、オブジェクトをランダムアクセスメモリ(RAM)内に格納し、論理および物理アドレスを用いて、メモリ内のオブジェクトを識別する。オブジェクトは、通常互いを参照する。オブジェクト間の参照関係は、いわゆるオブジェクトグラフによって記載可能である。
アプリケーションは、連続的に実行されているので、オブジェクトをメモリに追加し、メモリ内のオブジェクトを変更し、オブジェクトをメモリから削除し、および/または、オブジェクト間の参照関係を変える。オブジェクトを格納することは、スタティックではなく、むしろ非常にダイナミックである。
したがって、アプリケーションが実行されている限り、メモリ空間は、いくつかのオブジェクトに割り当てられ、他のオブジェクトから割当解除される。経時的な割当/割当解除は、RAMの断片化につながり、空きメモリは、アドレスの隣接する範囲をもはや占有しない。断片化は、隣接するメモリが大きいオブジェクトに割り当てられるのを妨げる。オブジェクトを部分に分割することは、さまざまな他の理由のためにオプションではない。デフラグ技術は、メモリ内またはアドレス空間内でオブジェクトを移動するためのいわゆるコンパクションステップ(以下、コンパクションとも称される)を含む。
割当/割当解除および/またはデフラグを自動メモリ管理(AMM)モジュールによって実行することは、従来技術において一般的である。AMMモジュールは、アプリケーションと並列に実行されるかまたはアプリケーションと関連する。AMMモジュールは、所定の規則に従って動作する。AMMは、従来技術において「ガベージコレクション」としても周知である。AMMモジュールまたはAMMを提供する他のプログラムまたはツールは、「ガベージコレクタ」としても周知である。
上述したように、アプリケーションは、オブジェクト間の参照関係を変える。AMMに関して、アプリケーションは、オブジェクトグラフを変化させるので、アプリケーションは、「ミューテータ」と呼ばれている。
第1のシナリオでは、アプリケーション(すなわちミューテータ)は、コンピュータ上で直接動作し、AMMモジュールは、コンピュータのオペレーティングシステムの機能として実施される。
第2のシナリオでは、アプリケーションは、ランタイム環境(RTE)を実行のために必要とする。AMMモジュールは、RTEの機能として実施可能である。この場合、AMMモジュールは、(コンピュータの)オペレーティングシステムの外側のプロセスとして実行される。例えば、RTEは、特定のプログラミング言語、例えばJAVAに特化することができる。
しかしながら、両方のシナリオにおいて、AMMモジュールは、コンピュータリソース、例えばプロセッサ時間およびメモリを消費する。少なくとも2つの態様を有するリソースの競合が存在する。AMMモジュールが割当、割当解除、デフラグ等を実行する間、アプリケーションは、停止または中断しなければならない。代替例では、AMMモジュールは、より複雑にプログラムされ、並列実行が可能でなければならない。
より詳細には、(上述したコンパクションの間)オブジェクトを移動することは、オブジェクトが移動している間、アプリケーションがオブジェクトにアクセスするのを妨げる。これによって、アプリケーションの連続実行に中断が生じる。さらに、RAM内でオブジェクトを移動するのに必要な時間は、オブジェクトのサイズに依存する。この時間対サイズの依存性は、通常線形関係であり、大きいオブジェクトを移動することは、小さいオブジェクトを移動することより時間がかかる。任意のサイズのオブジェクトを移動可能にすることによって、アプリケーションは、任意の時間間隔で停止しうる。
また、再び両方のシナリオにおいて、AMMは、多数の理由により、アプリケーションの故障を生じさせうる。多数の理由とは、例えば以下の通りである。(i)断片化は、隣接するメモリ空間がオブジェクトに割り当てられるのを妨げうる。(ii)AMMモジュールによって、アプリケーションの実行に中断が生じうる。(iii)AMMモジュールは、十分に高速に再利用(未使用のメモリを回収)するためにメモリを識別することに失敗しうる。
いくつかのアプリケーションは、電気通信において、産業機械を制御する際に、または、アプリケーションのリアルタイムの連続利用可能性が必須な他の領域において用いられる。例えば、いくつかのアプリケーションは、タスクの周期的実行(周期は、例えば100マイクロ秒である)を必要とする。
米国特許出願公開第2012/102289号明細書(US2012/102289A1)によれば、異なるサイズ、タイプまたは他の態様のオブジェクトは、異なって処理されうる。例えば、小さいオブジェクトおよび大きいオブジェクトは区別され、メモリは、ヒープメモリの反対の端に割り当てられる。この方法は、圧縮に必要な作業を減少する。しかしながら、これは、メモリ管理装置(MMU)を用いずに実行される。
米国特許出願公開第2010/250893号明細書(US2010/250893A1)によれば、MMUを用いることは、物理メモリのコピーを回避する。この方法により、下にある物理メモリをコピーすることなく、オブジェクトの仮想アドレスを圧縮することができる。その代わりに、オブジェクトの新しい仮想アドレスは、元の物理アドレスにマッピングされる。これは、物理データをコピーする必要を回避する。
本発明の実施形態は、改良された自動メモリ管理(AMM)モジュールを有するコンピュータシステムにおいて上述した競合を解決するための方法、コンピュータ実施方法およびコンピュータプログラム製品を提供する。上述した従来技術の方法とは対照的に、大きいオブジェクトを圧縮することは、完全に(仮想メモリおよび物理メモリにおいて)回避可能である。
方法は、現代のコンピューティングの発展を利用し、コンピュータシステムは、メモリ管理装置(MMU)、すなわち、論理から物理へのアドレスマッピングを提供するハードウェアを有し、コンピュータシステムは、実際の物理メモリのサイズより大きいアドレス空間(例えば、264のアドレス)を有する。論理アドレスのための空間(または「範囲」)は、少なくとも2つの部分空間に分けられ、2つの部分空間とは、(デフラグの間の)コンパクションが有効な第1の部分空間、いわゆる「コンパクション空間」およびコンパクションが無効な第2の部分空間、いわゆる「非コンパクション空間」である。換言すれば、第1の部分空間は、「圧縮可能であり」、第2の部分空間は、「圧縮不可能である」。第2の部分空間は、すべてのサイズカテゴリのすべての潜在的オブジェクトに適応するのに十分大きく、第2の部分空間は、MMUによってマッピングされ、RAM内でオブジェクトを移動する必要なく、物理メモリを割当解除する。
アプリケーション/ミューテータが特定のオブジェクトのためのメモリを要求するとき、AMMモジュールは、少なくとも1つの所定の区別基準を適用し、オブジェクトを「コンパクションオブジェクト」および「非コンパクションオブジェクト」に区別し、論理アドレスをコンパクション空間内または非コンパクション空間内にそれぞれ割り当てる。
区別基準は、上述した競合に関連する。リソースの競合に対処するために、オブジェクトは、オブジェクトサイズによって区別される。閾値サイズ未満のサイズを有するオブジェクトおよび閾値サイズ超の(または閾値サイズに等しい)サイズを有するオブジェクトが存在する。説明において、これらのオブジェクトは、「小さいオブジェクト」および「大きいオブジェクト」としてそれぞれ区別される。
AMMモジュールは、コンパクション空間内の論理アドレスを小さいオブジェクトに割り当て、非コンパクション空間内の論理アドレスを大きいオブジェクトに割り当てる。
大きいオブジェクトを格納するRAMの一部を圧縮することが回避可能である、または、少なくとも、リソースをAMMモジュールと競合しないMMU(すなわちハードウェア)による動作に制限可能であるという意味で、上述した時間対サイズの依存性は考慮される。閾値サイズは、論理アドレスのコンパクション空間および非コンパクション空間に対する割当を区別する圧縮制限とすることができる。
オプションとして、オブジェクトは、基準の組み合わせに従って区別される。
AMMモジュールは、圧縮をコンパクション空間内の論理アドレスにおける小さいオブジェクトに適用するが、圧縮を非コンパクション空間内の(論理アドレスにおける)大きいオブジェクトに適用する必要はない。リソースの競合を考慮すると、(MMUおよびRAMと組み合わせて)AMMモジュールによって圧縮に必要とされる時間が制限されることに留意されたい。この時間は、(コンパクション空間内のその論理アドレスを有する)最大のオブジェクトのサイズに、実質的に線形関係を有する。それゆえ、アプリケーションが停止されなければならない時間は、制限されうる。
複数のミューテータは、(非コンパクション空間の)同じオブジェクトに、経時的に(時間が経っても)不変のままであるアドレスでアクセスすることができる。複数のミューテータに対して、および、複数のミューテータ間で、アドレス更新を伝える必要はない。
実施パラメータは、コンピュータシステムおよび/またはアプリケーションの詳細を考慮することができる。オブジェクトをオブジェクトサイズによって区別する場合、コンパクション空間は、閾値サイズに従って間隔をおかれる論理アドレスを有する。閾値サイズは、RAMのページの粒度に関連するものとすることができる。
代替実施形態が実施可能である。例えば、コンパクションの有効化/無効化の代わりに、または、コンパクション/非コンパクションの代わりに、圧縮は、異なる圧縮モードによって実行可能であり、例えば比較的短い間隔の圧縮(第1の部分空間のみ)および比較的大きい間隔の圧縮(両方の部分空間)である。
コンピュータシステム内の自動メモリ管理(AMM)モジュールを動作するためのコンピュータ実施方法は、確保するステップと、受信するステップと、割り当てるステップと、マッピングするステップと、圧縮するステップと、を含む。論理アドレス空間は、第1および第2の部分空間を有する。
確保するステップにおいて、AMMモジュールは、異なるサイズクラスのスロットを有する部分を有する第2の部分空間を確保する。AMMモジュールは、第2の部分空間のサイズを、係数とミューテータの最大ヒープサイズとの積として計算する。
受信するステップにおいて、AMMモジュールは、メモリ割当要求をミューテータから受信する。要求は、コンピュータシステムのランダムアクセスメモリ内に格納されうる特定のオブジェクトのためのものである。割り当てるステップにおいて、AMMモジュールは、論理アドレス空間内の特定の論理アドレスを特定のオブジェクトに割り当てる。AMMモジュールは、このことにより、少なくとも1つの基準に従って、特定のオブジェクトを区別し、第1の部分空間からの論理アドレスおよび第2の部分空間からの論理アドレスを割り当てる。マッピングするステップにおいて、メモリ管理装置(MMU)は、第2の部分空間から割り当てられた論理アドレスをランダムアクセスメモリ内の物理メモリにマッピングする。圧縮するステップにおいて、MMUは、ランダムアクセスメモリ内で対応するオブジェクトを移動する間、第1の部分空間内の論理アドレスを圧縮する。
割り当てるステップにおいて、オプションとして、AMMモジュールは、オブジェクトサイズ基準である少なくとも1つの基準に従って、特定のオブジェクトを区別する。
割り当てるステップにおいて、オプションとして、AMMモジュールは、所定の閾値サイズをオブジェクトサイズ基準として用い、第1の部分空間内の論理アドレスを、所定の閾値サイズ未満のオブジェクトサイズを有するオブジェクトに割り当て、第2の部分空間内の論理アドレスを、所定の閾値サイズ以上のオブジェクトサイズを有するオブジェクトに割り当てる。
オプションとして、所定の閾値サイズは、ランダムアクセスメモリのページサイズに関連するものとすることができる。所定の閾値サイズは、ページサイズに等しい、または、ページサイズの倍数に等しいものとすることができる。
確保するステップにおいて、AMMモジュールは、異なるサイズクラスのオブジェクトのためのスロットを有する部分を有する論理アドレス空間の第2の部分空間を確保することができる。確保するステップは、等しいサイズの部分のために実行可能である。確保するステップは、ミューテータの最大ヒープサイズに対応する部分のサイズを計算することを含むことができ、そのサイズは、第2の部分空間内に潜在的に格納されうるオブジェクトの累算されたサイズである。確保するステップは、部分を確保することを含むことができる。第1の部分は、所定の閾値で除算されるヒープサイズに対応する第1の数のスロットを有することができ、第2の部分は、2で除算される第1の数に対応する第2の数のスロットを有することができる。代替的には、確保するステップは、部分を確保することを含むことができ、開始部分は、第1の数のスロットを2の累乗の数として有し、隣接するスロットは、第1の数のスロットから等比数列で計算されるスロットの数を有する。
方法は、いずれの部分空間からの特定の論理アドレスのいくつかを割当解除するさらなるステップを有することができる。AMMモジュールは、ランダムアクセスメモリ内のオブジェクトを圧縮せずに、第2の部分空間内の以前に割り当てられた論理アドレスから物理メモリへのマッピングを解除するようにMMUに命令する。
オプションとして、AMMモジュールは、オブジェクト属性である少なくとも1つの基準に従って、特定のオブジェクトを区別することができる。オブジェクト属性は、オブジェクトタイプ、オブジェクトアクセスの頻度、外部コードに渡されるオブジェクトおよびハードウェアによって直接アクセスされるオブジェクトから選択される属性を備えることができる。
コンピュータシステムは、コンピュータ実施方法のステップを実行することができ、コンピュータプログラム製品は、コンピュータのメモリ内にロードされ、コンピュータの少なくとも1つのプロセッサによって実行されるとき、コンピュータ実施方法のステップを実行する。コンピュータプログラム製品は、AMMモジュールが、プログラミング言語、例えばJAVA、C#、PYTHON、JAVASCRIPT、SCALAまたはGOで記述されるミューテータのためのランタイム環境の一部であるように提供可能である。
コンピュータシステムのブロック図を示し、コンピュータシステムは、プロセッサ、ランダムアクセスメモリ、メモリ管理装置、ミューテータおよび自動メモリ管理(AMM)モジュールを有する。 連続時点でのコンピュータシステム内のAMMモジュールの論理アドレス空間を示す。 コンピュータシステムのブロック図を示すが、コンピュータシステムは、2つのミューテータと、2つの論理アドレス空間を有するAMMモジュールと、を有する。 コンピュータ実施方法のフローチャート図を示す。 複数の部分に分けられる論理アドレス部分空間を示す。 本明細書に記載されている技術によって用いられてもよい汎用コンピュータデバイスおよび汎用モバイル・コンピュータデバイスの一例を示す。
詳細な説明は、概略図の説明から開始する。説明は、オブジェクトサイズ(OS)である区別基準を用いてリソースの競合を解決することに焦点をおき、経時的なAMMモジュールの動作を一例として示す。説明は、フローチャート図および実施パラメータについてさらに議論し、汎用コンピュータシステムを記載することによって締めくくる。
図1は、コンピュータシステム100のブロック図を示し、コンピュータシステム100は、プロセッサ110(例えば中央処理装置CPU)、ランダムアクセスメモリ(RAM)120およびメモリ管理装置(MMU)130を有する。説明を簡単にするために、さらなるハードウェア構成要素、例えばデータおよび/またはアドレスを通信するバスは示されない。コンピュータシステム100は、コンピュータ実施方法(図4参照)を実施するのに使用可能なシステムである。
図1は、(破線の長方形により示す)ソフトウェアモジュール、すなわち、ミューテータ140およびAMMモジュール150もまた示す。ソフトウェアモジュールは、RAM120内で実施され、プロセッサ110によって実行され、他の実施態様が可能である。説明を簡単にするために、図1は、RAM120の外側のモジュールを示す。オプションとして、MMU130がソフトウェアによって実施可能であることに留意されたい。
ソフトウェアモジュールおよびハードウェアは、コンピュータシステムのオペレーティングシステムと相互作用し、例えば要求を実際に実施する。当業者は、本明細書においてさらなる説明を必要とせずにオペレーティングシステムを考慮することができる。
ミューテータ140は、プログラムコード、すなわちアプリケーションのためのコードによって実施される。ミューテータ140は、ランタイム環境(RTE、時々仮想マシン)を実行のために必要とするアプリケーションとすることができる。例えば、ミューテータ140は、プログラミング言語、例えばJAVA、C#、PYTHON、JAVASCRIPT、SCALAまたはGOで記述可能である。AMMモジュール150は、そのRTEの一部とすることができる。
説明を簡単にするために、プロセッサ110がある時点で1つのソフトウェアモジュールのみを実行できると仮定される。これは、AMMモジュール150(およびAMMモジュールと相互作用する構成要素、例えばMMUおよびRAM)が排他的に(ミューテータではなくAMMモジュールのみ、または、その逆のいずれか)動作している時間を制限する要求につながる。この時間的制限は、通常数マイクロ秒で測定される、最大の許容時間(または制限時間)TMAXとして、ここで、記号で表される。制限は、相対的とすることができ、TMAXは、(ミューテータの実行時間に対して)ミューテータの一部の時間とすることができる。制限は、所定の期間にミューテータのためのプロセッサの利用可能性を保証するために、絶対的な時間間隔とすることもできる。
ミューテータ140は、プロセッサ110によって実行されており、オブジェクトをRAM120内に一時的に格納するためのメモリ割当要求141(Req[i])を出す。オブジェクトは、データオブジェクト(例えば、画像データ、音声データ、ビデオデータ、制御データ)および/またはコードオブジェクト(例えば、プログラムルーチンのためのコード)またはRAM120内に格納されうるビットおよびバイトの任意の他の収集とすることができる。以下、オブジェクトは、ミューテータ140が要求を出す順序に従って、O[1]、O[2]、・・・O[i]、・・・とラベル付けされる。
AMMモジュール150は、論理アドレスAx.yを有する論理アドレス空間155を備える。本明細書において、「Ax.y」という表記は、単純化され、開始アドレスおよび終了アドレス、開始アドレスおよび終了アドレスの計算を可能にする範囲、アドレス空間内のスロットまたは論理アドレスを識別する任意の他の慣例を含むことができる。
本例において、連続するアドレスAx.yとAx.y+1との間の距離(バイトで測定される)は、「アドレス空間の間」であり、deltax(例えばdelta1、delta2)として与えられる。
論理アドレス空間155は、ミューテータ140に割り当てられる。AMMモジュール150は、機能モジュール156をさらに備え、機能モジュール156は、少なくとも、割当、割当解除および選択的コンパクションという機能を実行する。これらの機能を考慮した経時的な論理アドレス空間155のステータスは、図2の一例に示される。
割当機能では、AMMモジュール150は、ミューテータ140からメモリ割当要求141を受信し、論理アドレス空間155内の論理アドレスAx.yをオブジェクトに割り当てる。論理アドレスAx.yを割り当てることは、少なくとも第1の部分空間155−1(論理アドレスA1.1・・A1.K)および第2の部分空間155−2(論理アドレスA2.1・・・A2.L)に選択的である。(2つの)部分空間の区別は、(後の時点での)コンパクション機能に関連するので、第1の部分空間155−1は、「コンパクション空間」とも称され、第2の部分空間155−2は「非コンパクション空間」とも称される。区別は、少なくとも1つの基準に依存する。上述したように、図1は、オブジェクトサイズの基準に焦点をおく。
第2の部分空間155−2のサイズS2は、係数によって乗算されるヒープサイズ(HS)に関連し、第2の部分空間155−2のサイズS2の決定に関する詳細は、図4(確保)および図5に関連して説明される。
MMU130は、アドレス空間155の論理アドレスAx.yをRAM120の物理アドレス(P1、P2、・・・)にマッピングするためのマッピング機能を有する。MMU130は、固定サイズのページを管理する。通常のページサイズは、例えば、4KB(キロバイト)または128MB(メガバイト)とすることができる。図1の例は、4KBのページサイズを仮定する。上述したように、非コンパクション空間内の論理アドレスは、大きいオブジェクト(すなわち、ページサイズより大きいオブジェクト)に割り当て可能である。MMU130は、いくつかまたはより多くのメモリページを隣接する論理アドレスにマッピングする。本例において、オブジェクトO[1]は8KB(または2ページ)のオブジェクトサイズを有し、オブジェクトO[2]も同様に8KBを有する。O[1]は、非コンパクション空間内のオブジェクトであり、2つのメモリページを必要とする。破線矢印で示すように、論理アドレスA2.1aおよびA2.1bは、オブジェクトO[1]に割り当てられ、MMU130は、A2.1aをP1(1ページのサイズを有する)にマッピングし、A2.1bをP2(同様に1ページのサイズを有する)にマッピングする。また、論理アドレスA2.2aおよびA2.2bは、オブジェクトO[2]に割り当てられ、MMU130は、A2.2aをP6(1ページのサイズを有する)にマッピングし、A2.2bをP10(同様に1ページのサイズを有する)にマッピングする。異なるオブジェクトサイズ(例えば、オブジェクト当たりnページ)を有するオブジェクトは、それに応じてマッピング可能である。
(第1の部分空間の)論理アドレスA1.1は、物理アドレスP101にマッピングされる。説明を簡単にするために、さらなるマッピングは示されない。
部分空間155−1(コンパクション)内の論理アドレスのための(MMU130内の)論理から物理へのマッピングは、スタティックとすることができ、それは、割当要求を満たすために変わる必要はない。
図1は、オブジェクトがRAM120内のメモリ内に格納されることを示し、RAM120が断片化されうることをさらに示す。例えば、物理アドレスP1およびP2は隣接し(他のアドレスを間に挟まない)、物理アドレスP6およびP10は隣接していない(図示されないP7、P8、P9によって分離される)。MMU130は、RAM内の大きいオブジェクトのための断片化に適応することができる。しかし、マッピングのため、単一のオブジェクトは単一の論理アドレスを有することができるので、ミューテータ140は、この種の単一のオブジェクトにその単一の論理アドレスでアクセスすることができる(例えば、A2.2においてO[2])。ミューテータ140の実行のために、隣接する論理アドレスを有することは、有利になりうる。本例において、論理アドレスA2.1およびA2.2は隣接するが、RAM内に物理的に格納されているオブジェクトの非隣接は、MMU130によって適応される。
図面を左から右に見ると、ミューテータ140は、特定のオブジェクトO[1]、O[2]等のためのメモリ割当要求141(Req[1]、Req[2]・・・)を出す。AMMモジュール150は、要求141を受信し、論理アドレスAx.yを各オブジェクトに割り当てる。MMU130は、マッピングを物理アドレスに提供するので、オブジェクトは、RAM120内に格納される。
図1は、論理アドレスがオブジェクトO[1]からO[9]に割り当てられ、これらのオブジェクトがRAM120内の対応する物理アドレス下に格納された時点を示す。
ミューテータ140は、しばしば、オブジェクトを読み出し、作成し、削除し、または、異なるオブジェクトO[j](図示せず)とO[i]との間の参照を変える。その名前が示唆するように、ミューテータ140は、オブジェクトグラフを連続的に変化させ、すなわち、ミューテータ140は、オブジェクト間の参照を変える。結果として、いくつかのオブジェクトは、オブジェクトグラフから到達できなくなり、それゆえ、ミューテータ140によってアクセスできなくなりうるので、もはやRAM内に残る必要はない(いわゆる「ガベージオブジェクト」)一方、到達可能またはアクセス可能なオブジェクトは、RAM内に残る必要がある(いわゆる「ライブオブジェクト」)。
割当解除機能を実行することによって、AMMモジュール150は、AMMモジュール150によりガベージオブジェクトとして識別されたオブジェクトから論理アドレスを周期的に割当解除する。経時的な割当および割当解除は、断片化につながるので、コンパクション機能を実行することによって、AMMモジュール150は、(ライブ)オブジェクトを他の論理アドレスAx.yに再割り当てすることによって、論理アドレス空間を圧縮する。上述した競合に適応するために、AMMモジュール150は、コンパクション機能を第1の部分空間のためにのみ実行する。それゆえ、MMU130は、オプションとして用いられる。コンパクションの代わりに、AMMモジュール150は、さもなければ周知技術によって、例えば従来のガベージコレクションによって、(第1の部分空間の)断片化に対抗することができる。
MMU130は、(基準である)オブジェクトO[i]のサイズに従って、メモリ割当要求Req[i]を区別することができる。オブジェクト(およびアドレス空間)のサイズは、測定単位、例えばバイト(B)、キロバイト(KB)、メガバイト(MB)、ギガバイト(GB)等において測定可能である。閾値サイズ(TS)未満のサイズを有するオブジェクトは、論理アドレスA1.y(コンパクション空間)に割り当てられる。コンパクションの間、この小さいオブジェクト(ライブの場合)は、RAM120内で移動されなければならないだろうが、オブジェクトを移動するのに必要な時間は、最大の許容時間TMAX未満である。閾値サイズ(TS)超の(または閾値サイズ(TS)に等しい)サイズを有するオブジェクトは、論理アドレスA2.y(非コンパクション)に割り当てられるので、大きいオブジェクトは、RAM120内で移動されないであろう。オブジェクトがガベージとして識別される場合、AMMモジュール150は、MMU130内における(オブジェクトの)論理アドレスの物理メモリへのマッピングを削除することによって、物理メモリを単に解放するであろう。
図1の例において、論理アドレスA1.yは、少なくともdelta1によって間隔がおかれ、delta1は、閾値サイズTSに対応する(delta1=TS)。閾値サイズTSは、RAM120内のページの粒度に等しくすることができる。例えば、TSは、ページサイズPS=4KBに等しくすることができる。
論理アドレスA2.yは、少なくともdelta2によって間隔がおかれる。論理アドレスA2.yのために、delta2は、異なるサイズクラスのために実施可能である。図1は、A2.Lのためにdelta2’を示す。大きいオブジェクトをさらに区別するこの種の方法に関する詳細は、図5に関連して記載されている。
図2は、連続時点における図1のコンピュータシステム100内のAMMモジュール150の論理アドレス空間155(部分空間155−1、155−2)を示す。AMMモジュール150がオブジェクトサイズ基準に従って区別され、小さいオブジェクト(<TS)を大きいオブジェクト(≧TS)から区別すると仮定される。
時点t[2]において、AMMモジュール150は、Req[1]およびReq[2]を受信し、A2.1をオブジェクトO[1]に割り当て、A2.2をオブジェクトO[2]に割り当てた。両方のオブジェクトは、TS超のサイズであるが、delta2に適合するサイズを有する。
時点t[4]において、AMMモジュール150は、Req[3]およびReq[4]をさらに受信し、A2.3をオブジェクトO[3]に割り当て、A2.4をオブジェクトO[4]に割り当てた。再び、両方のオブジェクトは、TS超のサイズであるが、delta2に適合するサイズを有する。
時点t[10]において、AMMモジュール150は、Req[5]からReq[10]をさらに受信し、論理アドレスA2.5をO[8](大きいオブジェクト)に割り当て、A1.1をO[5]に、A1.2をO[6]に、A1.3をO[7]に、A1.4をO[9]に、A1.5をO[10]に割り当てた(小さいオブジェクト)。O[1]、O[2]、O[3]、O[4]、O[8]のためのアドレスA2.1からA2.5は、隣接し(すなわち、ギャップなし)、O[5]、O[6]、O[7]、O[9]、O[10]のためのアドレスA1.1からA1.5は、隣接する(すなわち、ギャップなし)。
後の時点t’において、AMMモジュール150は、オブジェクトO[3]、O[4]、O[6]およびO[9]がガベージオブジェクトであると決定した。結果として、AMMモジュール150は、論理アドレスA2.3、A2.4を割当解除し、物理アドレスに対する対応するマッピングを削除するようにMMU130に命令する。AMMモジュール150はまた、A1.2、A1.4も割当解除するが、MMU130またはRAM120との相互作用はない。割当解除のため、両方の部分空間155−1および155−2のアドレス空間は、もはや隣接しない。
後の時点t”において、AMMモジュール150は、第1の空間155−1(のみ)のアドレスを圧縮したが、第2の空間155−2のアドレスを圧縮しなかった。圧縮は、オブジェクトが移動するようなRAM120との相互作用を含む。しかしながら、小さいオブジェクトO[5]、O[7]またはO[10]のうちの1つを移動するのに必要な時間は、TMAXより小さい。
その短い時間中断の後、ミューテータ140は、実行され続け、さらなる要求を送信する。AMMモジュール150は、アドレスをさらなるオブジェクト、例えば大きいオブジェクト(例えば、O[13])および小さいオブジェクト(例えば、O[14]、O[15])に割り当て続けることができる。
図1および図2は、基準としてオブジェクトサイズに焦点をおくが、AMM150は、オブジェクト属性(OA)に従って、特定のオブジェクトを区別することもできる。オブジェクト属性(OA)は、属性、例えば(1)オブジェクトタイプ、(2)オブジェクトへのアクセスの頻度、(3)ミューテータ外にあるコードに渡されるオブジェクトと、ミューテータ内でのみ処理されるオブジェクトと、の間の区別、および、(4)ハードウェアにより直接アクセスされるオブジェクトを備えることができる。
図3は、コンピュータシステム100のブロック図を示すが、コンピュータシステム100は、2つのミューテータ140、140’と、2つの論理アドレス空間155、155’を有するAMMモジュール150と、を有する。
AMMモジュール150は、部分空間(圧縮、非圧縮)を有することができるアドレス空間155および155’を割り当てる。アドレス空間の全体のサイズは、互いに異なりうる。AMMモジュール150は、メモリ割当要求141、141’(Req)をミューテータ140、140’から受信する。機能モジュール156は、両方の空間のために共通とすることができる。
図4は、コンピュータシステム100(図1参照)内のAMMモジュール150を動作するためのコンピュータ実施方法400のフローチャート図を示す。
上述したように、論理アドレス空間155は、第1の部分空間155−1および第2の部分空間155−2を有する。確保するステップ410において、AMMモジュール150は、(論理アドレス空間155の)第2の部分空間155−2を確保し、第2の部分空間155−2は、異なるサイズクラスのオブジェクトのためのスロットを有する部分を有する。確保するステップ410は、第2の部分空間155−2のサイズ(S2)を、係数(M)とミューテータ(140)の最大ヒープサイズ(HS)との積として計算することを含む。上述したように、ヒープサイズ(HS)は、部分空間155−2内に潜在的に格納されうるオブジェクトの累算されたサイズである。サイズに関するさらなる詳細は、図5に関連して説明される。
受信するステップ420において、AMMモジュール150は、特定のオブジェクトのためのメモリ割当要求をミューテータから受信する。特定のオブジェクトは、コンピュータシステムのランダムアクセスメモリ内に格納されうる。
割り当てるステップ430において、AMMモジュール150は、論理アドレス空間内の特定の論理アドレスを特定のオブジェクトに割り当てる。このことにより、AMMモジュール150は、少なくとも1つの基準(例えば閾値TS、オブジェクト属性OA)に従って、特定のオブジェクトを区別し(435)、第1の部分空間(コンパクション空間)からの論理アドレス(例えばA1.y)を割り当て(431)、第2の部分空間(非コンパクション空間)からの論理アドレス(例えばA2.y)を割り当てる(432)。
マッピングするステップ442において、AMMモジュール150は、第2の部分空間(すなわち、非コンパクション空間)からの割り当てられた論理アドレスを、RAM内の物理メモリにマッピングするようにメモリ管理装置130に命令する。
圧縮するステップ451において、AMMモジュール150は、ランダムアクセスメモリ内で対応するオブジェクトを移動することと組み合わせて、第1の部分空間(コンパクション空間)内の論理アドレス内のライブオブジェクトを圧縮する。対照的に、AMMモジュール150は、第2の部分空間(非コンパクション空間)内の論理アドレス内のライブオブジェクトを圧縮せず、この場合、MMUは、RAM内でオブジェクトを移動することなく、未使用の物理メモリを、新しく割り当てられたオブジェクトのために使われる論理アドレスに再マッピングする。
割り当てるステップ430において、AMMモジュール150は、オブジェクトサイズ基準である少なくとも1つの基準に従って、特定のオブジェクトを区別することができる(435)。所定の閾値サイズ(TS)は、オブジェクトサイズ基準とすることができ、AMMモジュール150は、第1の部分空間内の論理アドレスを、所定の閾値サイズ(TS)未満のオブジェクトサイズを有するオブジェクトに割り当てることができ(431)、第2の部分空間内の論理アドレスを、TS以上のオブジェクトサイズを有するオブジェクトに割り当てることができる(432)。所定の閾値サイズは、RAM120のページサイズ(PS)に関連するものとすることができ、PSに等しくすることができる。
図4はまた、論理アドレスを物理メモリに変換することを意味するマッピング441/442を実行するMMU130の動作を示す。両方のマッピングステップは、一旦AMMモジュール150が論理アドレスを割り当てたとき適用されるが、コンパクション空間からの論理アドレスを用いたマッピング441および非コンパクション空間からの論理アドレスを用いたマッピング442は区別される。マッピング441は、スタティックであると考えられ、経時的な変化はないが(時間が経っても変化しないが)、マッピング442は、実際、物理メモリを、ライブオブジェクトによって現在用いられている論理アドレスにダイナミックにマッピングする連続的な再マッピングである。圧縮するステップ451において、MMU130は、メモリ内でライブオブジェクト(コンパクション空間内で割り当てられるそれらの論理アドレスを有する)を移動する。MMU130は、オブジェクトを移動するので、(コンパクション空間内の)空き論理メモリは、ページサイズ(PS)までの割り当てに用いるのに十分大きい隣接する範囲内で利用できるようになる。
再びAMMモジュール150の動作に戻ると、確保するさらなるステップ410において、AMMモジュール150は、スロットを有する部分を有する論理アドレス空間の第2の部分空間を異なるサイズクラスのオブジェクトのために確保する(図5参照)。確保するステップ410は、等しいサイズの部分のために実行可能である。
確保するステップ410は、ミューテータの最大ヒープサイズに対応する部分のサイズを計算することを含むことができ、そのサイズは、第2の部分空間内に潜在的に格納されうるオブジェクトの累算されたサイズである。確保するステップ410は、部分を確保することを含むことができ、第1の部分は、所定の閾値サイズ(TS)で除算されるヒープサイズ(HS)に対応する第1の数のスロットを有し、第2の部分は、2で除算される第1の数に対応する第2の数のスロットを有する。代替例において、開始部分は、2の累乗の数である第1の数のスロットを有し、隣接するスロットは、第1の数から等比数列で計算される数を有する。
方法400は、特定の論理アドレスのいくつかをいずれかの部分空間から割当解除するさらなるステップを有することができる。AMMモジュール150は、RAM内のオブジェクトを圧縮せずに、第2の部分空間内の以前に割り当てられた論理アドレスから物理メモリのマッピングを解除するようにMMUに命令する。
オプションとして、AMMモジュール150は、オブジェクト属性(OA)である少なくとも1つの基準に従って、特定のオブジェクトを区別することができ(435)、属性は、例えば実行優先度、実行頻度、ファイルタイプ、データを外部コード(他の言語で記述されるまたはハードウェアによってアクセスされる)に渡すオブジェクトの使用である。
図4はまた、コンピュータプログラムまたはコンピュータプログラム製品を示す。コンピュータプログラム製品は、コンピュータのメモリ内にロードされ、コンピュータの少なくとも1つのプロセッサによって実行されるとき、コンピュータ実施方法400のステップを実行する。実施形態において、メモリは、RAM120とすることができ、プロセッサは、CPU110とすることができる。
以下、説明は、確保するステップ410において考慮されるオブジェクトサイズに焦点をおく実施態様に移る。
上述したように、図1は、RAM120内のオブジェクトが断片化されていないことを示す。しかしながら、大きいオブジェクトの断片化を保持し、(上述した概略のように)小さいオブジェクトのためのみの圧縮を実行することができる。
図5は、複数の部分に分けられる論理アドレス部分空間555−2を示す。論理アドレス空間555−2は、図1の論理アドレス空間155−2、すなわち、非コンパクション空間に対応する。本例において、部分は、(バイトで測定される)等しいサイズを有するが、この表記は、説明のために用いられるのみである。
以下の表記が用いられる、すなわち、A2.m.yは、特定の部分m内の特定の論理アドレスを表し、yは、各部分内の識別子である(図1参照)。上述したように、論理アドレスA2.m.yは、開始アドレスおよび終了アドレスを含むことができる。図5において、これは、部分7および8のために示される。例えば、A2.7.2の終了アドレスは、A2.8.1の開始アドレスの下の1バイトのオフセットを有する。縦列で示されるが、部分は、隣接するアドレス空間を形成するように考慮される。
部分は、異なるサイズクラスのスロットを有し、アドレス可能なオブジェクトの最大サイズにより測定される(最大オブジェクトサイズMOS)。
部分8は、512KBの最大オブジェクトサイズ(MOS)を有する単一のオブジェクトのための論理アドレスA2.8.1を有する。部分7は、2つの論理アドレスA2.7.1およびA2.7.2を2つのオブジェクトのために有し、各々は、MOS=256KBを有する。部分6は、4つの論理アドレスA2.6.1からA2.6.4を4つのオブジェクトのために有し、各々は、MOS=128KBを有する。部分5は、8の論理アドレスをMOS=64KBで有し、部分4は、16の論理アドレスをMOS=32KBで有し、これは、部分1が128の論理アドレスをMOS=4KBで有するまで続く。2の累乗方式を用いることは、都合がよいが、オプションである。
ミューテータのメモリ要求の全体は、すべての大きいオブジェクト(すなわちOS≧TS)の全体のサイズである最大ヒープサイズ(HS)として利用でき、実行中の任意の所定の時点において、ミューテータ140がアクセスし続ける小さい。オブジェクト(すなわちOS<TS)のメモリ要求は、別々に考慮可能である。
部分1から8の各々のサイズが最大ヒープサイズに対応するので、ミューテータ140が最大ヒープサイズ内に存在する(すなわち、ヒープサイズを超えるライブオブジェクトの合計サイズを有するオブジェクトの割当のための要求を出さない)限り、アドレスの割当は失敗しない。極端な場合、ミューテータ140は、単一のオブジェクト(例えば、512KB)のみのための単一のメモリ割当要求を出すことができるか、または、4KBのオブジェクトサイズを有する128のオブジェクトのための要求を出すことができる。通常、ミューテータ140は、異なるサイズを有するオブジェクトのための要求を出す。
(第2の)論理アドレス空間555−2の全体の要求は、例えば、部分のサイズ(例えば、等しいサイズ)によって乗算された部分の数Mとして、本例では8×512KBとして計算可能である。コンピュータのアドレス空間(例えば、上述したように264)と比較して、この全体の要求は、通常はるかに小さい。
一実施形態において、各部分は、ヒープサイズ(HS、例えば512KB)に対応するサイズを有することができる。部分の数Mは、係数であり、(第2の)論理アドレス空間555−2の全体のサイズS2は、係数とヒープサイズとの積として、すなわちS2=M×HSとして計算される。
本例において、RAM120は、アドレス指定方式が有効なページを有することができ、ページは、(例えば)部分1のMOSに対応するページサイズ(PS)、すなわち4KBを有する。
AMMモジュール150は、スタートアップ時に、部分1〜8を有する部分空間555−2を割り当てる。例えば、AMMモジュール150がRTE(例えばJava仮想マシン)の一部である場合、部分空間555−2は、RTEのスタートアップ時に割り当てられる。部分空間555−2を、ラウンチされている新規なミューテータ140の各々(図1、図2の140’参照、)のために割り当てることもできる。スタートアップ時に、AMMモジュール150は、通常はまだミューテータ140からメモリ割当要求(Req)を受信しておらず、MMU130は、論理アドレスA2.m.yをRAM120にまだマッピングしていない。
以下の説明は、第2の部分空間155−2(例えば、555−2)内のみに格納されうる大きいオブジェクトのためのメモリ割当要求(図1のReq)に関するものであり、AMMモジュール150が、RAM120のページサイズPS=4KBに対応する閾値4KBを有するオブジェクトサイズ基準を用いることを仮定する。
図1に関して詳細に上述したように、特定のオブジェクトのためのメモリ割当要求(Req)を受信すると、AMMモジュール150は、第1の部分空間155−1(コンパクション空間)または第2の部分空間155−2(非コンパクション空間)が用いられうるかを決定する。
AMMモジュール150は、オブジェクトのサイズに従って、部分空間555−2の部分1〜8内の特定の論理アドレスを特定の大きいオブジェクトに割り当てる。例えば、AMMモジュール150は、部分1内のA2.1.yを、サイズ4KBを有するオブジェクトに割り当て、部分2内のA2.2.yを、サイズ8KB(またはより小さい)を有するオブジェクトに割り当てる等である。
次に、AMMモジュール150は、割り当てられた論理アドレスA2.m.yのマッピングをRAM120内の物理メモリに提供するようにMMU130に命令する。
ミューテータ140が実行される間、AMMモジュール150は、いくつかの論理アドレスを割当解除し、いくつかの論理アドレスを再割り当てする(図2参照)。結果として、部分空間555−2内の部分1〜8は、断片化されたものになる。図5の例は、「スナップショット」を示し、黒い塗りつぶしで示される論理アドレスは、(MMU130により)RAM120内の物理メモリPに割り当てられる。例えば、(部分5内の)論理アドレスA2.5.2は、64KBのサイズを有する特定のオブジェクトのために、RAM120内の物理メモリの16ページ(それぞれ4KBを有する)にマッピングされ、(部分4内の)論理アドレスA2.4.8は、32KBのサイズを有する特定のオブジェクトのために、RAMにマッピングされ、RAM内のオブジェクトを有する部分3、2および1の論理アドレスが存在する。
論理アドレスを物理メモリに対して1対1でマッピングする必要はない。図5の例において、論理アドレスのより大きな部分は、物理メモリにマッピングされない。
単一のオブジェクトのために用いられる物理メモリが隣接することもできるし、隣接しないこともできることに留意されたい。例えば、8KBのオブジェクトを有する(部分2内の)論理アドレスA2.2.12は、2ページ(各4KB)のみの物理メモリを必要とし、MMU130は、隣接するアドレスにマッピングすることができる(O[1]のためのP1およびP2である図1の例参照)。必要な場合、MMU130は、RAM内の隣接しないアドレスに、例えば、より大きい割当のための単一の物理ページをグループ化することによってマッピングすることができる(例えば、A2.4.8でのオブジェクトのために4ページ)。非隣接は、ミューテータに隠されているままである。
図5における最大オブジェクトサイズ(MOS)は、一例としてのみ示される。2の累乗方式は、中間のMOSによって補完可能であり、中間のMOSは、例えば6KB(4KBと8KBとの間)、12KB(8KBと16KBとの間)、24KB等であり、これは128GBまで続く。
他のページサイズ(PS)を、例えば1GBのページサイズまで用いることができる。
変更されたサイズS2’<S2から開始することもできる。換言すれば、係数は、より小さいであろう。この種の方法は、理論的なサイズS2=M×HSと、より現実的なサイズと、の間の妥協であり、すべての理論的に可能なオブジェクトサイズが用いられるわけではないということが仮定される。
図6は、本明細書に記載されている技術によって用いられてもよい汎用コンピュータデバイス900および汎用モバイル・コンピュータデバイス950の一例を示す。コンピュータデバイス900は、さまざまな形のデジタルコンピュータ、例えばラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレームおよび他の適切なコンピュータを表すことを意図する。汎用コンピュータデバイス900は、図1のコンピュータシステム100に対応してもよい。コンピュータデバイス950は、さまざまな形のモバイルデバイス、例えば携帯情報端末、携帯電話、スマートフォンおよび他の類似のコンピュータデバイスを表すことを意図する。図示される構成要素、それらの接続および関係、ならびに、それらの機能は、例示的であることのみを意味し、この文書における明細書および/または特許請求の範囲の本発明の実施態様を制限することを意味しない。
コンピュータデバイス900は、プロセッサ902、メモリ904、ストレージデバイス906、メモリ904と高速拡張ポート910とを接続する高速インタフェース908、および、低速バス914とストレージデバイス906とを接続する低速インタフェース912を含む。構成要素902、904、906、908、910および912の各々は、さまざまなバスを用いて相互接続され、共通のマザーボード上に、または、他の適切な方法で取り付けられてもよい。プロセッサ902は、コンピュータデバイス900内で実行するための命令を処理することができ、命令は、メモリ904内またはストレージデバイス906上に格納され、GUIのためのグラフィック情報を外部の入出力デバイス、例えば、高速インタフェース908に結合されるディスプレイ916上に表示するための命令を含む。他の実施態様では、必要に応じて、複数のプロセッサおよび/または複数のバスが、複数のメモリおよびメモリのタイプとともに用いられてもよい。また、複数のコンピュータデバイス900が接続され、各デバイスが、必要な動作の部分を提供してもよい(例えばサーババンク、一群のブレードサーバまたはマルチプロセッサシステムとして)。
メモリ904は、コンピュータデバイス900内の情報を格納する。一実施態様では、メモリ904は、1つまたは複数の揮発性メモリ装置である。他の実施態様では、メモリ904は、1つまたは複数の不揮発性メモリ装置である。メモリ904は、他の形のコンピュータ可読媒体、例えば磁気または光ディスクでもよい。
ストレージデバイス906は、コンピュータデバイス900のためのマスストレージを提供することができる。一実施態様では、ストレージデバイス906は、コンピュータ可読媒体でもよいし、コンピュータ可読媒体を含んでもよく、コンピュータ可読媒体は、例えばフロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイスまたはテープデバイス、フラッシュメモリまたは他の類似の固体メモリデバイスまたはデバイスのアレイであり、ストレージエリアネットワークまたは他の構成内のデバイスを含む。コンピュータプログラム製品は、情報担体内に非一時的に実施可能である。コンピュータプログラム製品は、実行時に1つまたは複数の方法、例えば上述した方法を実行する命令を含んでもよい。情報担体は、コンピュータ可読媒体または機械可読媒体、例えばメモリ904、ストレージデバイス906またはプロセッサ902上のメモリである。
高速制御装置908は、コンピュータデバイス900のための帯域幅集中動作を管理する一方、低速制御装置912は、低帯域幅集中動作を管理する。機能のこの種の割り当ては、例示的なだけである。一実施態様では、高速制御装置908は、メモリ904、(例えばグラフィックプロセッサまたはアクセラレータを介して)ディスプレイ916、および、さまざまな拡張カード(図示せず)を受け入れてもよい高速拡張ポート910に結合される。実施態様では、低速制御装置912は、ストレージデバイス906および低速拡張ポート914に結合される。低速拡張ポートは、さまざまな通信ポート(例えばUSB、ブルートゥース、イーサネット、無線イーサネット)を含んでもよく、1つまたは複数の入出力デバイスに例えばネットワークアダプタを介して結合されてもよく、入出力デバイスは、例えばキーボード、ポインティングデバイス、スキャナまたはネットワークデバイス(例えばスイッチまたはルータ)である。
コンピュータデバイス900は、図示のように、多数の異なる形で実施されてもよい。例えば、コンピュータデバイス900は、標準サーバ920として、または、この種のサーバの一群の多重時間として実施されてもよい。コンピュータデバイス900は、ラック・サーバシステム924の一部として実施されてもよい。さらに、コンピュータデバイス900は、パーソナルコンピュータ、例えばラップトップコンピュータ922内で実施されてもよい。代替的には、コンピュータデバイス900からの構成要素は、デバイス950のようなモバイルデバイス内の他の構成要素に組み合わせられてもよい(図示せず)。この種のデバイスの各々は、1つまたは複数のコンピュータデバイス900、950を含んでもよく、システム全体は、互いに通信する複数のコンピュータデバイス900、950から構成されてもよい。
コンピュータデバイス950は、他の構成要素の中でも、プロセッサ952、メモリ964、入出力デバイス、例えばディスプレイ954、通信インタフェース966およびトランシーバ968を含む。デバイス950には、ストレージデバイス、例えばマイクロドライブまたは他のデバイスが提供され、追加のストレージを提供してもよい。構成要素950、952、964、954、966および968の各々は、さまざまなバスを用いて相互接続され、構成要素のいくつかは、共通のマザーボード上に、または、他の適切な方法で取り付けられてもよい。
プロセッサ952は、コンピュータデバイス950内の命令を実行することができ、命令は、メモリ964内に格納される命令を含む。プロセッサは、別々のおよび複数のアナログおよびデジタルプロセッサを含むチップのチップセットとして実施されてもよい。プロセッサは、例えば、デバイス950の他の構成要素の調整を提供してもよく、例えば、ユーザインタフェース、デバイス950により動作されるアプリケーションおよびデバイス950による無線通信を制御してもよい。
プロセッサ952は、ディスプレイ954に結合される制御インタフェース958およびディスプレイインタフェース956を介してユーザと通信してもよい。ディスプレイ954は、例えば、TFTLCD(薄膜トランジスタ液晶ディスプレイ)またはOLED(有機発光ダイオード)ディスプレイでもよいし、または、他の適切な表示技術でもよい。ディスプレイインタフェース956は、ディスプレイ954を駆動するための適切な回路を備え、グラフィックおよび他の情報をユーザに示してもよい。制御インタフェース958は、ユーザからの命令を受信し、命令を変換し、プロセッサ952に提供してもよい。さらに、プロセッサ952と通信する外部インタフェース962が提供され、デバイス950が、他のデバイスと近距離通信を行うことができてもよい。外部インタフェース962は、例えば、いくつかの実施態様では有線通信を提供し、または、他の実施態様では無線通信を提供してもよく、複数のインタフェースが用いられてもよい。
メモリ964は、コンピュータデバイス950内の情報を格納する。メモリ964は、1つまたは複数のコンピュータ可読媒体、1つまたは複数の揮発性メモリ装置または1つまたは複数の不揮発性メモリ装置のうちの1つまたは複数として実施可能である。増設メモリ974が提供され、拡張インタフェース972を介してデバイス950に接続されてもよく、拡張インタフェース972は、例えば、SIMM(シングル・インライン・メモリ・モジュール)カードインタフェースを含んでもよい。この種の増設メモリ974は、余分のストレージ空間をデバイス950に提供してもよいし、または、デバイス950用のアプリケーションまたは他の情報を格納してもよい。具体的には、増設メモリ974は、上述したプロセスを実行または補完するための命令を含んでもよく、安全な情報もまた含んでもよい。このように、例えば、増設メモリ974は、デバイス950のための安全モジュールとして作用してもよく、デバイス950の安全な使用を可能にする命令によってプログラムされてもよい。さらに、例えば、安全なアプリケーションは、SIMMカードを介して追加情報とともに、例えば、識別情報をハッキングできない方法でSIMMカードに配置することによって提供されてもよい。
メモリは、後述するように、例えばフラッシュメモリおよび/またはNVRAMメモリを含んでもよい。一実施態様では、コンピュータプログラム製品は、情報担体内に非一時的に実施される。コンピュータプログラム製品は、実行時に、1つまたは複数の方法、例えば上述した方法を実行する命令を含む。情報担体は、コンピュータ可読媒体または機械可読媒体、例えばメモリ964、増設メモリ974、または、例えばトランシーバ968または外部インタフェース962を介して受信されてもよいプロセッサ952上のメモリである。
デバイス950は、通信インタフェース966を介して無線で通信してもよく、通信インタフェース966は、必要な場合、デジタル信号処理回路要素を含んでもよい。通信インタフェース966は、さまざまなモードまたはプロトコルで通信を提供してもよく、さまざまなモードまたはプロトコルは、中でも例えばGSM音声通話、SMS、EMSまたはMMSメッセージング、CDMA、TDMA、PDC、WCDMA、CDMA2000またはGPRSである。この種の通信は、例えば、無線周波数トランシーバ968によって生じてもよい。さらに、例えばブルートゥース、WiFiまたは他のこの種のトランシーバ(図示せず)を用いた近距離通信が生じてもよい。さらに、GPS(全地球測位システム)受信機モジュール980は、追加のナビゲーションおよび位置に関連する無線データをデバイス950に提供してもよく、無線データは、必要に応じてデバイス950上で動作するアプリケーションによって用いられてもよい。
デバイス950はまた、音声コーデック960を用いて音声通信をしてもよいし、音声コーデック960は、音声情報をユーザから受信し、この音声情報を使用可能なデジタル情報に変換してもよい。音声コーデック960は、同様に、可聴音をユーザのために、例えばデバイス950の送受話器内の例えばスピーカを介して生成してもよい。この種の音は、電話音声からの音を含んでもよく、記録された音(例えば音声メッセージ、音楽ファイル等)を含んでもよく、デバイス950上で動作するアプリケーションによって生成される音を含んでもよい。
コンピュータデバイス950は、図示のように、多数の異なる形で実施されてもよい。例えば、コンピュータデバイス950は、携帯電話980として実施されてもよい。コンピュータデバイス950は、スマートフォン982、携帯情報端末または他の類似のモバイルデバイスの一部として実施されてもよい。
本明細書に記載されているシステムおよび技術のさまざまな実施態様は、デジタル電子回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェアおよび/またはそれらの組み合わせにおいて実現可能である。これらのさまざまな実施態様は、少なくとも1つのプログラム可能プロセッサを含むプログラム可能システム上で実行可能および/または解釈可能な1つまたは複数のコンピュータプログラムにおける実施を含むことができ、プロセッサは、専用でも汎用でもよく、データおよび命令を送受信するために、ストレージシステム、少なくとも1つの入力装置および少なくとも1つの出力装置に結合されている。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られている)は、プログラム可能プロセッサのための機械命令を含み、高レベル手順および/またはオブジェクト指向プログラミング言語および/またはアセンブリ/機械言語で実施可能である。本明細書において、「機械可読媒体」「コンピュータ可読媒体」という用語は、機械命令および/またはデータをプログラム可能プロセッサに提供するのに用いられる任意のコンピュータプログラム製品、装置および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラム可能論理回路(PLD))を意味し、機械命令を機械可読信号として受信する機械可読媒体を含む。「機械可読信号」という用語は、機械命令および/またはデータをプログラム可能プロセッサに提供するのに用いられる任意の信号を意味する。
ユーザとの相互作用を提供するために、本明細書に記載されているシステムおよび技術は、コンピュータ上で実施可能であり、コンピュータは、情報をユーザに表示するためのディスプレイデバイス(例えば、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタ)およびユーザが入力をコンピュータに提供できるキーボードおよびポインティングデバイス(例えば、マウスまたはトラックボール)を有する。他の種類のデバイスを用いて、同様にユーザとの相互作用を提供することができ、例えば、ユーザに提供されるフィードバックは、任意の形の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバックまたは触覚フィードバック)とすることができ、ユーザからの入力は、音、発話または触覚の入力を含む任意の形で受信可能である。
本明細書に記載されているシステムおよび技術は、コンピュータデバイスにおいて実施可能であり、コンピュータデバイスは、バックエンド構成要素を(例えばデータサーバとして)含み、または、ミドルウェア構成要素(例えばアプリケーションサーバ)を含み、または、フロントエンド構成要素(例えば、グラフィカル・ユーザ・インタフェースを有するクライアントコンピュータ、または、ユーザが本明細書に記載されているシステムおよび技術の実施態様と相互作用することができるウェブブラウザ)を含み、または、この種のバックエンド、ミドルウェアまたはフロントエンド構成要素の任意の組み合わせを含む。システムの構成要素は、任意の形または媒体のデジタルデータ通信(例えば通信ネットワーク)によって相互接続可能である。通信ネットワークの例は、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)およびインターネットを含む。
コンピュータデバイスは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般的には互いに遠隔にあり、典型的には通信ネットワークを介して相互作用する。クライアントおよびサーバの関係は、それぞれのコンピュータ上で動作するとともに、互いにクライアントサーバ関係を有するコンピュータプログラムによって生ずる。
多数の実施形態が記載されてきた。それにもかかわらず、さまざまな変更が本発明の精神および範囲から逸脱することなくなされうることを理解されたい。
さらに、図示される論理フローは、所望の結果を達成するのに図示の特定の順序または順番を必要としない。さらに、他のステップが提供されてもよいし、記載されているフローからステップが除去されてもよいし、他の構成要素が記載されたシステムに追加されてもよいし、記載されたシステムから削除されてもよい。したがって、他の実施形態は、以下の特許請求の範囲内にある。

Claims (15)

  1. ランダムアクセスメモリ(120)を有するコンピュータシステム(100)内の自動メモリ管理モジュール(150)を動作するためのコンピュータ実施方法(400)であって、前記方法(400)は、
    第1の部分空間(155−1)および第2の部分空間(155−2、555−2)を有する論理アドレス空間(155)のために、異なるサイズクラスのオブジェクトのためのスロットを有する部分(1、2・・・8)を有する前記論理アドレス空間(155)の前記第2の部分空間(155−2、555−2)を確保するステップ(410)であって、前記確保するステップ(410)は、前記第2の部分空間(155−2、555−2)のサイズを、係数とミューテータ(140)の最大ヒープサイズ(HS)との積として計算することを含み、前記最大ヒープサイズ(HS)は、前記第2の部分空間(155−2、555−2)内に潜在的に格納されうる前記オブジェクトの累算されたサイズであるステップと、
    前記ミューテータ(140)から、前記コンピュータシステム(100)の前記ランダムアクセスメモリ(120)内に格納されうる特定のオブジェクト(O[1]・・・O[9])のためのメモリ割当要求(141)を受信するステップ(420)と、
    前記論理アドレス空間(155)内の特定の論理アドレス(Axy;A2.1・・・A1.4)を前記特定のオブジェクト(O[1]・・・O[9])に割り当てるステップ(430)であって、前記自動メモリ管理モジュール(150)は、少なくとも1つの基準(TS、OA)に従って、前記特定のオブジェクト(O[1]・・・O[9])を区別し(435)、第1の部分空間(155−1)からの論理アドレス(A1.y)および第2の部分空間(155−2)からの論理アドレス(A2.y)を割り当てるステップ(431、432)と、
    前記第2の部分空間(155−2)からの前記割り当てられた論理アドレス(A2.y)を前記ランダムアクセスメモリ(120)内の物理メモリ(P1・・・P104)にメモリ管理装置(130)によってマッピングするステップ(442)と、
    前記ランダムアクセスメモリ内で対応するオブジェクトを移動することと組み合わせて、前記第1の部分空間(155−1)内の論理アドレスを圧縮するステップ(451)と、
    を含む方法(400)。
  2. 前記確保するステップ(410)において、前記係数は、前記論理アドレス空間(155)の前記第2の部分空間(155−2)内の前記部分の数(M)に対応し、各部分は、特定サイズのオブジェクトのためのスロットを有する、
    請求項1に記載の方法(400)。
  3. 前記確保するステップ(410)は、等しいサイズの部分のために実行される、
    請求項1または2に記載の方法(400)。
  4. 前記確保するステップ(410)は、前記最大ヒープサイズ(HS)に対応する前記部分のサイズを計算することを含む、
    請求項1から3のいずれかに記載の方法(400)。
  5. 前記確保するステップ(410)は、第1の数のスロットを2の累乗の数として有する開始部分を有する部分を確保することを含み、隣接するスロットは、前記第1の数のスロットから等比数列で計算されるスロットの数を有する、
    請求項1から4のいずれかに記載の方法(400)。
  6. 前記割り当てるステップ(430)において、前記自動メモリ管理モジュール(150)は、オブジェクトサイズ基準である前記少なくとも1つの基準(TS、OA)に従って、前記特定のオブジェクト(O[1]・・・O[9])を区別する(425)、
    請求項1から5のいずれかに記載の方法(400)。
  7. 前記割り当てるステップ(430)において、前記自動メモリ管理モジュール(150)は、所定の閾値サイズ(TS)を前記オブジェクトサイズ基準として用い、前記第1の部分空間(155−1)内の論理アドレスを、前記所定の閾値サイズ(TS)未満のオブジェクトサイズを有するオブジェクトのために割り当て(431)、前記第2の部分空間(155−2)内の論理アドレスを、前記所定の閾値サイズ(TS)以上のオブジェクトサイズを有するオブジェクトのために割り当てる(432)、
    請求項6に記載の方法(400)。
  8. 前記所定の閾値サイズ(TS)は、前記ランダムアクセスメモリ(120)のページサイズ(PS)に関連する、
    請求項7に記載の方法(400)。
  9. 前記所定の閾値サイズ(TS)は、前記ページサイズ(PS)に等しい、または、前記ページサイズの倍数に等しい、
    請求項8に記載の方法(400)。
  10. 前記特定の論理アドレスのいくつかを、前記第1および第2の部分空間(155−1、155−2)のいずれかから割当解除するさらなるステップによって、ランダムアクセスメモリ(120)内の前記オブジェクトを圧縮せずに、前記第2の部分空間(155−2)内の以前に割り当てられた論理アドレスから前記物理メモリのマッピングを解除するように前記メモリ管理装置(130)に命令する、
    請求項1から9のいずれかに記載の方法(400)。
  11. 前記自動メモリ管理モジュール(150)は、オブジェクト属性(OA)である前記少なくとも1つの基準に従って、前記特定のオブジェクト(O[1]・・・O[9])を区別する(425)、
    請求項1に記載の方法(400)。
  12. 前記オブジェクト属性(OA)は、オブジェクトタイプ、オブジェクトアクセスの頻度、外部コードに渡される前記オブジェクトおよびハードウェアによって直接アクセスされる前記オブジェクトから選択される属性を備える、
    請求項11に記載の方法(400)。
  13. 請求項1から12のいずれかに記載のコンピュータ実施方法のステップを実行するためのコンピュータシステム(100)。
  14. コンピュータプログラムであって、
    コンピュータのメモリ内にロードされ、前記コンピュータの少なくとも1つのプロセッサによって実行されるとき、請求項1から12のいずれかに記載のコンピュータ実施方法のステップを実行する、
    コンピュータプログラム。
  15. 前記自動メモリ管理モジュール(150)は、JAVA、C#、PYTHON、JAVASCRIPT、SCALAおよびGOを含む群から選択されるプログラミング言語で記述されるミューテータ(140、140’)のためのランタイム環境(RTE)の一部である、
    請求項14に記載のコンピュータプログラム。
JP2017568415A 2015-06-29 2016-06-24 メモリ管理装置を用いた自動メモリ管理 Active JP6505266B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP15174377.0A EP3113026B1 (en) 2015-06-29 2015-06-29 Automatic memory management using a memory management unit
EP15174377.0 2015-06-29
PCT/EP2016/064761 WO2017001305A1 (en) 2015-06-29 2016-06-24 Automatic memory management using a memory management unit

Publications (2)

Publication Number Publication Date
JP2018525724A JP2018525724A (ja) 2018-09-06
JP6505266B2 true JP6505266B2 (ja) 2019-04-24

Family

ID=53761932

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017568415A Active JP6505266B2 (ja) 2015-06-29 2016-06-24 メモリ管理装置を用いた自動メモリ管理

Country Status (7)

Country Link
US (1) US11176031B2 (ja)
EP (1) EP3113026B1 (ja)
JP (1) JP6505266B2 (ja)
CN (1) CN107924363B (ja)
ES (1) ES2747962T3 (ja)
PL (1) PL3113026T3 (ja)
WO (1) WO2017001305A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3113026B1 (en) 2015-06-29 2019-07-24 aicas GmbH Automatic memory management using a memory management unit
CN106445589A (zh) * 2016-09-08 2017-02-22 百富计算机技术(深圳)有限公司 嵌入式小系统的应用程序加载方法和装置
CN110618840B (zh) * 2019-08-23 2021-12-17 宁波方太厨具有限公司 一种中央烟道系统的吸油烟机地址码自动匹配方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209066B1 (en) * 1998-06-30 2001-03-27 Sun Microsystems, Inc. Method and apparatus for memory allocation in a multi-threaded virtual machine
US6950837B2 (en) * 2001-06-19 2005-09-27 Intel Corporation Method for using non-temporal streaming to improve garbage collection algorithm
US7325118B2 (en) 2003-09-30 2008-01-29 Samsung Electronics, Co., Ltd. Method and apparatus for executing dynamic memory management with object-oriented program
GB2406668B (en) * 2003-10-04 2006-08-30 Symbian Ltd Memory management in a computing device
US7490117B2 (en) * 2003-12-31 2009-02-10 Intel Corporation Dynamic performance monitoring-based approach to memory management
US7363456B2 (en) * 2005-04-15 2008-04-22 International Business Machines Corporation System and method of allocating contiguous memory in a data processing system
US7953773B2 (en) * 2005-07-15 2011-05-31 Oracle International Corporation System and method for deterministic garbage collection in a virtual machine environment
JP5224498B2 (ja) 2007-02-28 2013-07-03 学校法人早稲田大学 メモリ管理方法、情報処理装置、プログラムの作成方法及びプログラム
US8327111B2 (en) * 2009-03-30 2012-12-04 International Business Machines Corporation Method, system and computer program product for batched virtual memory remapping for efficient garbage collection of large object areas
US8200718B2 (en) * 2009-07-02 2012-06-12 Roberts Michael L Parallelized, incremental garbage collector
US8799615B2 (en) * 2010-10-21 2014-08-05 International Business Machines Corporation Organization of a small object area and a large object area in a java heap
US8904008B2 (en) * 2012-01-09 2014-12-02 Microsoft Corporation Assignment of resources in virtual machine pools
JP5586718B2 (ja) * 2012-06-19 2014-09-10 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
WO2014155666A1 (ja) * 2013-03-29 2014-10-02 株式会社 東芝 論理アドレスと物理アドレスとの間のマッピングを管理するストレージシステム、ストレージコントローラ及び方法
CN104732153B (zh) * 2013-12-18 2018-01-12 群联电子股份有限公司 数据抹除方法、存储器控制电路单元及存储器存储装置
CN203882329U (zh) * 2014-05-30 2014-10-15 南京莘纳吉物流有限公司 一种适用于不同环境、不同对象的电子标签
EP3113026B1 (en) 2015-06-29 2019-07-24 aicas GmbH Automatic memory management using a memory management unit

Also Published As

Publication number Publication date
EP3113026A1 (en) 2017-01-04
ES2747962T3 (es) 2020-03-12
US20180137045A1 (en) 2018-05-17
CN107924363A (zh) 2018-04-17
CN107924363B (zh) 2021-12-21
EP3113026B1 (en) 2019-07-24
PL3113026T3 (pl) 2020-03-31
WO2017001305A1 (en) 2017-01-05
JP2018525724A (ja) 2018-09-06
US11176031B2 (en) 2021-11-16

Similar Documents

Publication Publication Date Title
KR100874702B1 (ko) 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법
US9405697B2 (en) Memory management method and apparatus
US9058212B2 (en) Combining memory pages having identical content
US9081692B2 (en) Information processing apparatus and method thereof
US8225065B2 (en) Hierarchical scalable memory allocator
JP6130971B2 (ja) データをフラッシュメモリ装置に書き込む方法、フラッシュメモリ装置及び記憶システム
US10942683B2 (en) Reducing page invalidation broadcasts
JP6505266B2 (ja) メモリ管理装置を用いた自動メモリ管理
US10237233B2 (en) Allocating identifiers with minimal fragmentation
US9772776B2 (en) Per-memory group swap device
US10860472B2 (en) Dynamically deallocating memory pool subinstances
US11403213B2 (en) Reducing fragmentation of computer memory
US11467766B2 (en) Information processing method, apparatus, device, and system
US11226738B2 (en) Electronic device and data compression method thereof
KR20150096177A (ko) 가비지 컬렉션 수행 방법 및 그 방법을 이용한 플래시 메모리 장치
US9442835B1 (en) Dynamic memory allocation using suballocation of cell blocks
US10579515B1 (en) Recycling segment pages while preserving integrity of memory addressing
US20230273727A1 (en) Dynamic storage for adaptive mapping for data compression on a storage device
US20220171742A1 (en) Electronic device and method for controlling electronic device
KR102334237B1 (ko) 다중 포그라운드 어플리케이션을 위한 페이지 캐쉬 관리 방법 및 장치
US20230168822A1 (en) Memory management method and semiconductor device adjusting size of contiguous memory allocation area
KR20230081585A (ko) 연속 메모리 할당 영역의 크기를 조정하는 메모리 관리 방법 및 반도체 장치
KR20070030041A (ko) 페이징 기법을 이용한 이동통신 단말기의 메모리 관리 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190213

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190326

R150 Certificate of patent or registration of utility model

Ref document number: 6505266

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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