JP3910573B2 - 連続したメモリ・アドレスを提供する方法、システムおよびコンピュータ・ソフトウェア - Google Patents
連続したメモリ・アドレスを提供する方法、システムおよびコンピュータ・ソフトウェア Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address 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
物理的に連続したメモリを割り振るための第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のアルゴリズムを、図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()を使って)。
第1また第2のアルゴリズムのいずれかを、次の方法のいずれかにおいて使用することができる。ある実装では、アルゴリズムをユーザ・モード・ライブラリに含めることができる。あるいは、アルゴリズムをmalloc()コード中に含めることができ、それによって、ユーザ・モード・アプリケーションは、malloc()コードの改定された機能を利用することができる。
上記のこの第1のアルゴリズムによると、大量のメモリの無駄使いが生じる。全てのページが連続メモリ・プールに与えられるわけではなくても、未使用のページを解放することはできない。全てのページを単一のmalloc()コールを使って割り振るため、カーネルのメモリ割振り機能がきわめて接近して実行され、そのため、連続物理メモリが得られる確率はきわめて高くなる。
図11は、本明細書に記載の技術を実装するプロセスにおけるステップを実行するために使用できる、コンピュータ・システム1100の概略図である。コンピュータ・システム1100は、上述の技術を実行する際の援助となるようにプログラムされた、コンピュータ・ソフトウェアを実行するために提供されている。このコンピュータ・ソフトウェアは、コンピュータ・システム1100上にインストールされた、適切なオペレーティング・システムの下で実行する。
本明細書に記載の技術を使って、4Kよりも大きいデータ・バッファを使用するのに十分な、比較的大きい連続メモリのプールを提供することができる。一般的なオペレーティング・システムのページのサイズは4Kであり、通常、データ・バッファに関するこの4Kという限界を超えることはできない。
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つまたは複数の別個の仮想ページを含む、仮想メモリ・アドレス空間の少なくとも一部を割り振るための手段と、
前記少なくとも一部の前記ページのそれぞれについて、物理メモリ・アドレスを取得するための手段と、
前記ページのうちどれが、連続した物理メモリ・アドレスを有するかを判断するための手段と、
前記判断した仮想メモリ・アドレスを、その後に使用するために連続物理メモリのプールに割り当てるための手段とを含む、コンピュータ・ソフトウェアを実行するコンピュータ・システム。
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に記載の方法。 - 前記2つの配列は、前記ページのそれぞれの仮想アドレスを保持する第1の配列と、前記ページのそれぞれの対応する物理アドレスを保持する第2の配列を含む、請求項3に記
載の方法。 - 前記第2の配列の内容が昇順の物理アドレスになるように、前記2つの配列の内容をソートするステップをさらに含む、請求項4に記載の方法。
- 前記ソートするステップは、前記第1の配列および前記第2の配列のそれぞれの要素の間に1:1の関係を維持する、請求項5に記載の方法。
- 連続物理メモリ・アドレスを形成する前記第2の配列の要素にマーク付けするステップをさらに含む、請求項4に記載の方法。
- 前記仮想メモリの一部のみが割り振られる、請求項1に記載の方法。
- 複数の仮想メモリ部分が割り振られる、請求項1に記載の方法。
- 前記複数の仮想メモリ部分のうち、ある仮想メモリ部分内のいずれのページも前記連続物理メモリのプールに割り当てられていない場合に、当該ある仮想メモリ部分内の全てのページを解放するステップをさらに含む、請求項9に記載の方法。
- コンピュータを物理的に連続したメモリ・アドレスを提供する手段として機能させるためのプログラムであって、媒体上に記録され、前記プログラムを解釈することが可能なコンピュータによって実行されることが可能であり、前記コンピュータを
複数の別個の仮想ページを含む、仮想メモリ・アドレス空間の少なくとも一部を割り振るためのコード手段と、
前記少なくとも一部の前記ページのそれぞれについて、物理メモリ・アドレスを取得するためのコード手段と、
前記ページのうちどれが、連続した物理メモリ・アドレスを有するかを判断するためのコード手段と、
前記判断した仮想メモリ・アドレスを、その後に使用するために連続物理メモリのプールに割り当てるためのコード手段
として機能させるためのプログラム。 - 物理的に連続したメモリ・アドレスを提供するためのコンピュータ・システムであって、
複数の別個の仮想ページを含む、仮想メモリ・アドレス空間の少なくとも一部を割り振るための手段と、
前記少なくとも一部の前記ページのそれぞれについて、物理メモリ・アドレスを取得するための手段と、
前記ページのうちどれが、連続した物理メモリ・アドレスを有するかを判断するための手段と、
前記判断した仮想メモリ・アドレスを、その後に使用するために連続物理メモリのプールに割り当てるための手段とを含む、コンピュータ・システム。
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)
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)
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 |
-
2002
- 2002-09-30 US US10/262,411 patent/US6986016B2/en not_active Expired - Fee Related
-
2003
- 2003-09-24 JP JP2003332535A patent/JP3910573B2/ja not_active Expired - Fee Related
- 2003-09-29 CN CNB031347940A patent/CN100375064C/zh not_active Expired - Fee Related
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 |