JP5583274B2 - コンピュータ・メモリを管理する方法、対応するコンピュータ・プログラム製品、およびそのためのデータ・ストレージ・デバイス - Google Patents

コンピュータ・メモリを管理する方法、対応するコンピュータ・プログラム製品、およびそのためのデータ・ストレージ・デバイス Download PDF

Info

Publication number
JP5583274B2
JP5583274B2 JP2013523548A JP2013523548A JP5583274B2 JP 5583274 B2 JP5583274 B2 JP 5583274B2 JP 2013523548 A JP2013523548 A JP 2013523548A JP 2013523548 A JP2013523548 A JP 2013523548A JP 5583274 B2 JP5583274 B2 JP 5583274B2
Authority
JP
Japan
Prior art keywords
data
cache
memory
data block
page table
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
JP2013523548A
Other languages
English (en)
Other versions
JP2013544380A (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 JP2013544380A publication Critical patent/JP2013544380A/ja
Application granted granted Critical
Publication of JP5583274B2 publication Critical patent/JP5583274B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

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

Description

本発明は、仮想アドレスを物理アドレスにマップするためのページ・テーブル・エントリー、および複数のデータ・ブロックを含むキャッシュを保持するステップと、仮想アドレスへの参照に応答して、ページ・テーブル・エントリーを用いて仮想アドレスを物理アドレスへと変換するステップと、データを物理アドレスからキャッシュ内へフェッチするステップとを含む、コンピュータ・メモリを管理する方法に関する。本発明はさらに、コンピュータ・プログラム製品であって、プログラムがコンピュータ上で実行されるときに前記方法を実行するためのコンピュータ実行可能命令を含む、コンピュータ・プログラム製品に関し、また、前記方法を実行するようにプログラムまたは構成されているデバイスに関する。
コンピューティングにおいては、メモリ・マネージメントは、コンピュータ・メモリを管理する行為である。これは、そのよりシンプルな形態においては、プログラムの要求に応じてそれらのプログラムにメモリの一部分を割り当てるための方法を提供することと、もはや必要なくなったときに再利用のためにメモリを解放することとを含む。メモリのマネージメントは、いかなるコンピュータ・システムにとっても重要である。
仮想メモリ・システムは、プロセスによって使用されるメモリ・アドレスを物理アドレスから分離し、プロセスの分離を可能にし、メモリのうちの有効に利用できる量を増やす。仮想メモリ・マネージャーの質は、全体的なシステム・パフォーマンスに著しい影響を与える。
Ludmila CherkasovaおよびRob Gardnerは、「Measuring CPU Overhead for I/O Processing in the Xen Virtual Machine Monitor」、Proceedings of the USENIX Annual Technical Conference 2005、アメリカ合衆国カリフォルニア州アナハイムにおいて、仮想メモリ・システムの概要を示している。オペレーティング・システム(OS)が、メイン・メモリにおいて使用するために二次ストレージからデータを取り出せるようにするために、この従来のシステムは、ページングとして知られているメモリ・マネージメント・スキームを利用し、このページングにおいては、データは、メモリ・ページと呼ばれる固定サイズのブロックで取り出される。本明細書においては、二次ストレージ(外部メモリと呼ばれる場合もある)とは、ハード・ディスク・ドライブ、光ストレージ、フラッシュ・メモリ、フロッピー・ディスク、磁気テープ、紙テープ、せん孔カード、またはZipドライブなど、中央処理装置(CPU)によって直接アクセス可能ではない任意のストレージを意味する。
一般に入力/出力またはI/Oと呼ばれる、他のシステムとの効率のよい通信を可能にするために、現況技術の仮想メモリ・システムは、ページ・フリッピングとして知られているメカニズムを実装している。この技術によれば、アプリケーションが、入力データを受け取るための1つまたは複数のメモリ・ページを指定し、それによってOSは、その内蔵されたページング・スキームを用いて、そのデータを供給することができる。このために、OSは、アプリケーションのワーキング・メモリ(一般には、そのアドレス空間と呼ばれる)内の指定されたメモリ・ページを、要求された入力と「交換」する。
この知られているシステムの主なマイナス面は、供給される入力データがターゲットのメモリ・ページに正確にフィットすることがめったにないという事実にある。そのようにして交換されるそれぞれのメモリ・ページの残りは、メモリの初期化に依存するアプリケーションに対応するために、ならびに要求元のアプリケーションが外部の潜在的に機密性のデータへの無許可のアクセスを得ることを防止するために、ゼロ化する必要がある。ソフトウェア開発において、ゼロ化するとは、固定された無意味な値、たとえばゼロでデータを上書きして、そのデータの不測の開示を防止することを意味し、そのような開示は、要求元のアプリケーションによるセキュリティー侵害を潜在的に可能にする。
米国特許第5920895A号によれば、マップされたファイルI/Oを使用してキャッシュされるファイルを書き込む効率は、ファイルのキャッシュされたページ内の初期化されていないデータをゼロ化することを、そのファイルがユーザ・モード・スレッドによってマップされるまで控えることによって、改善される。ページング・オペレーションが仮想メモリ・マネージャーによってコントロールされ、マップされたファイルI/Oを使用したメモリ・ベースのキャッシングがキャッシュ・マネージャーによって管理されるオペレーティング・システムにおいては、書き込みの際に、マップされたファイルをゼロ化するのを控えることは、仮想メモリ・マネージャーとキャッシュ・マネージャーの間における通信のための一式の内部オペレーティング・システム・インターフェースによって実施される。キャッシュされているファイルが、ユーザ・モード・スレッドによってまだマップされていないときには、キャッシュ・マネージャーは、そのファイルのキャッシュ・ページがどの程度まで書き込まれているかを追跡把握し、それによって、そのキャッシュ・ページ内の初期化されていないデータはすべて、後でそのファイルがユーザ・モード・スレッドによってマップされたときにゼロ化することができる。
米国特許出願第2008/229117A1号による、コンピューティング環境におけるデジタル上の著作権侵害を防止するための方法は、アプリケーションをコンピューティング環境内にロードするステップであって、前記アプリケーションが、暗号化キーを使用して暗号化される、ステップと、仮想アドレス空間を前記アプリケーションに割り当てるステップと、前記アプリケーションのための前記暗号化キーを、中央処理装置によってのみアクセス可能であるレジスタ内にロードするステップと、前記キーのためのインデックス値を、前記アプリケーションのための前記仮想アドレス空間に対応するページ・テーブル・エントリー内の前記レジスタ内に格納し、それによって、前記仮想アドレス空間を前記アプリケーションのための前記キーにリンクさせるステップとを含む。
MENON A.らによる「Optimizing Network Virtualization in Xen」、PROCEEDINGS OF THE 2006 USENIX ANNUAL TECHNICAL CONFERENCE、2006年5月29日(2006−05−29)、XP002623699において、筆者らは、Xen仮想化環境においてネットワーク・パフォーマンスを最適化するための3つの技術を提案および評価している。彼らの技術は、デバイス・ドライバを、I/Oデバイスへのアクセスを有する特権のある「ドライバ」ドメイン内に配置し、仮想化されたネットワーク・インターフェースを通じて、特権のない「ゲスト」ドメインにネットワーク・アクセスを提供するという基本的なXenアーキテクチャーを保持している。
米国特許第5920895A号 米国特許出願第2008/229117A1号
Ludmila CherkasovaおよびRob Gardner、「Measuring CPU Overhead for I/O Processing in the Xen Virtual Machine Monitor」、Proceedings of the USENIX Annual Technical Conference 2005、アメリカ合衆国カリフォルニア州アナハイム MENON A.らによる「Optimizing Network Virtualization in Xen」、PROCEEDINGS OF THE 2006 USENIX ANNUAL TECHNICAL CONFERENCE、2006年5月29日(2006−05−29)、XP002623699 IEEE802.3−2008標準
本発明の目的は、ページ・フリッピングの際にゼロ化を行う必要性をなくすかまたは少なくする、仮想メモリ・マネージメントに対する改善されたアプローチを提示することである。さらなる目的は、限られている帯域幅のメモリに適した方法を提供することであり、すなわち、その速度でデータがCPUによってメモリから読み出され、またはメモリに格納され得る。他のさらなる目的は、メモリ・バス、すなわち、メイン・メモリを、そのメイン・メモリに入るデータおよびそのメイン・メモリから出るデータの流れを管理するメモリ・コントローラに接続するコンピュータ・サブシステムに課される負荷を少なくすることにある。本明細書においては、メイン・メモリ(プライマリー・ストレージまたは内部メモリとも呼ばれる)とは、ランダムアクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、プロセッサ・レジスタ、またはプロセッサ・キャッシュなど、CPUによって直接アクセス可能な任意のストレージを意味する。
この目的は、コンピュータ・メモリを管理する方法によって達成され、本方法は、仮想アドレスを物理アドレスにマップするためのページ・テーブル・エントリー、および複数のデータ・ブロックを含むキャッシュを保持するステップと、仮想アドレスへの参照に応答して、ページ・テーブル・エントリーを用いて仮想アドレスを物理アドレスへと変換するステップと、データを物理アドレスからキャッシュ内へフェッチするステップとを含み、ページ・テーブル・エントリーは、複数のインジケータを含み、それぞれのデータ・ブロックは、複数のインジケータのうちの1つに対応し、データをキャッシュ内へフェッチするステップが開始すると、本方法は、前記複数のインジケータから選択された1つのインジケータがセットされていることに応答して、対応するデータ・ブロックをゼロ化するさらなるステップを含む。この目的はさらに、コンピュータ・プログラム製品であって、プログラムがコンピュータ上で実行されたときに前記方法を実行するためのコンピュータ実行可能命令を含む、コンピュータ・プログラム製品によって、または前記方法を実行するようにプログラムもしくは構成されているデバイスによって達成される。
本発明の主要なアイディアは、仮想アドレス、すなわち、アプリケーションのワーキング・メモリ内のあるロケーションを表すインデックスと、対応する物理アドレスとの間におけるマッピングを格納するためにOSの仮想メモリ・システムによって使用されるデータ構造であるページ・テーブルを増強することである。仮想メモリのコンテキストにおいては、仮想アドレスは、アクセス・プロセスにとってのみ一意であり、その一方で物理アドレスは、メイン・メモリの実際のストレージ・セルを指す。
本発明のさらなる発展形態は、従属請求項および以降の説明から得ることができる。
以降では、添付の図面を参照して、本発明についてさらに説明する。
本発明の一実施形態に従ってコンピュータ・メモリを管理するために、仮想アドレスを物理アドレスにマップするためのページ・テーブル・エントリーが保持される。さらに、複数のデータ・ブロックを含むキャッシュが保持される。ページ・テーブル・エントリーは、複数のインジケータを含み、それぞれのデータ・ブロックは、1つのインジケータに対応する。仮想アドレスへの参照に応答して、その仮想アドレスは、ページ・テーブル・エントリーを用いて物理アドレスへと変換され、データが、その物理アドレスからキャッシュ内へフェッチされる。データをフェッチすると、インジケータがセットされていることに応答して、対応するデータ・ブロックがゼロ化される。
本発明の一実施形態による方法を示すフローチャートである。
以降では、図1を参照して、本発明による方法を例として説明する。
図1のフローチャート100は、第1の処理ステップ101、第2の処理ステップ102、第3の処理ステップ103、および第4の処理ステップ104を含む。一連の矢印は、処理ステップ101から103を通って、内部ストレージ110と合流し、最終的に第4の処理ステップ104へとわたるコントロールのフローを表している。このフロー内では、第1のシンボルから始まって第2のシンボルで終わる矢印は、コントロールが第1のシンボルから第2のシンボルへわたることを示している。
目下の実施形態においては、本方法は、専用のメモリ・マネージメント・ユニット(MMU)によって適用される。マイクロプロセッサの設計においては、MMUとは、CPUによって要求されるメモリへのアクセスを処理することを担当する任意のコンピュータ・ハードウェア・コンポーネントを意味する。仮想メモリ・マネージメント、すなわち、仮想アドレスを物理アドレスへ変換することのほかに、MMUは、メモリ保護、バス・アービトレーション、および、8ビット・システムなどのよりシンプルなコンピュータ・アーキテクチャーにおけるバンク切り替えなどの技術をサポートすることができる。
メモリは物理的に断片化されることがあり、二次ストレージ上へオーバーフローすることさえあるという事実の一方で、プロセスが、切れ目のないワーキング・メモリ(一般にはアドレス空間と呼ばれる)の概念に基づくことを可能にするために、MMUは、ページングをサポートし、ひいては、当技術分野においてページドMMU(PMMU)として知られている形式を取る。
CPUがメモリにアクセスするのに必要とする平均時間を少なくするために、PMMUはさらに、CPUキャッシュ、すなわち、最も頻繁に使用されるメイン・メモリ・ロケーションからのデータのコピーを格納するように構成されている、より小さな、より高速なメモリをコントロールする。CPUは、メイン・メモリ内のあるロケーションからの読み取り、またはそのロケーションへの書き込みを行う必要がある場合には、まず、そのデータのコピーがキャッシュ内にあるかどうかをチェックする。そのデータのコピーがキャッシュ内にある場合には、CPUはすぐに、キャッシュからの読み取り、またはキャッシュへの書き込みを行い、これは、メイン・メモリからの読み取り、またはメイン・メモリへの書き込みよりも、本質的に高速である。キャッシングのコンテキストにおいては、メイン・メモリは、キャッシュのバッキング・ストアと呼ばれる場合がある。
より具体的には、PMMUによってコントロールされるCPUキャッシュは、データのフェッチおよび格納をスピード・アップするためのデータ・キャッシュ、ならびに、実行可能な命令およびデータの両方に関する仮想メモリ・マネージメントをスピード・アップするための変換ルックアサイド・バッファ(TLB)を含む。TLBは、仮想アドレスを物理アドレスにマップするページ・テーブル・エントリー(PTE)を含む固定された数のスロットを含む。典型的な一実施態様においては、それぞれのPTEは、32から64の間のビットを含む。
第1の処理ステップ101において、PMMUは、仮想アドレスを物理アドレスにマップするためのPTEを保持する。さらにPMMUは、複数のデータ・ブロックを含むキャッシュを保持し、それらのデータ・ブロックは一般に、CPUキャッシングのコンテキストにおいては、キャッシュ・ラインまたはキャッシュ・ブロックと呼ばれる。典型的に、それぞれのデータ・ブロックは、8から512バイトのサイズにわたる。ハードウェア・アクセラレーションを最大にするために、目下のPMMUは、現況技術の32ビットおよび64ビットのCPUアーキテクチャーにおいては1バイトから16バイトにわたることが典型的である単一のCPU命令によって要求される可能性があるデータの量よりも大きいデータ・ブロックを採用する。
第1の処理ステップ101において保持されているPTEは、複数のインジケータを含み、それぞれのデータ・ブロックは、1つのインジケータに対応し、このインジケータは、その対応するデータ・ブロックを要求元のアプリケーションに提供する前にゼロ化する必要があるかどうかを示す。したがって、このインジケータは、フラグ、すなわち「真」または「偽」の値のいずれかを有するブール変数の形態を取る。PTEによって必要とされるストレージ容量を最小限に抑えるために、それぞれのインジケータは、ビットの形態を取り、そのバイナリー値のそれぞれは、割り当てられた意味を有する。CPUが複数のインジケータを単一のビット単位のオペレーション内にセットすることをさらに可能にするために、それらのビットは、コンピュータ計算においてはビットマスクとして知られている適切にサイズ設定されたベクトルへとグループ化される。代替実施形態においては、平均の書き込みスピードを犠牲にしてPTEのサイズをさらに減らすために、それぞれのビットを、複数のデータ・ブロックに対応するように解釈して、ビットマスクを構成するビットの数を有効に減らすことができる。
中間のステップ(図示せず)において、OSは、アプリケーションによる要求に応じて、ネットワーク・インターフェース・カード、ネットワーク・アダプタ、またはローカル・エリア・ネットワーク(LAN)アダプタとしても知られている関連付けられたネットワーク・インターフェース・コントローラ(NIC)を用いて、コンピュータ・ネットワークを介してデータ・ブロックを受け取る。スループットを最大にするために、データ・ブロックは、ギガビット・イーサネット(GbE、1GigE)接続を用いて、すなわち、IEEE802.3−2008標準によって定義されているように1ギガビット/秒の速度で伝送される。CPUを用いてI/Oデータをコピーするというオーバーヘッドを避けることによってオペレーションをさらにスピード・アップするために、OSは、ページ・フリッピングを採用して、アプリケーションによって指定されたメモリ・ページ内にそのI/Oデータを格納する。メモリ・ページを構成するデータ・ブロックのうちの一部のみが、I/Oオペレーションによって修正され、影響を受けない残りのデータ・ブロックは、すぐにはゼロ化されないと想定すると、OSは、ゼロ化されるデータ・ブロックに対応する、PTEのビットマスク内のビットをセットし、その一方で、修正されたデータ・ブロックに対応するビットをクリアする。
イーサネットはパケット交換プロトコルであるため、I/Oデータは、パケット、またはこのコンテキストにおいてはイーサネット・フレームと呼ばれるデータ伝送単位の形態を取る。このフレームは、単なる確認応答に必要とされる場合などの64バイトの下限と、コンピュータ・ネットワーキングの技術分野においては一般に最大伝送単位(MTU)と呼ばれる9000バイト以上の上限との間でさまざまなサイズとすることができる。4から64キロバイトの典型的なメモリ・ページ・サイズを考慮に入れると、従来のメモリ・マネージメント・システムならば、このシナリオにおいて、それぞれのパケットを受け取った際に消去する必要があるメモリ・ページの多大な部分に起因して多大なゼロ化のオーバーヘッドをCPUおよびメモリに課すことになる。したがって、本発明のさらなる利点は、小規模から中規模のパケット・データを受け取ることに対するその特有の適性にある。
ほとんどの場合において、NICを通じて受け取られるデータの量は、PTEによって定義されたデータ・ブロックの固定サイズの倍数と一致しない可能性がある。そのような場合においては、I/Oによって影響を受ける最初のおよび/または最後のデータ・ブロックの少なくとも一部が、定義されないままとなる。その中に含まれているデータを要求元のアプリケーションに開示することを避けるために、OSは、ページ・フリッピングの前に、データ・ブロックのうちのその残りの部分をすぐにゼロ化する必要がある。
代替実施形態においては、NICを通じてデータを受け取る代わりに、プログラムをCPUによって実行するためにメイン・メモリ内へロードするようOSに要求することができる。この場合には、実行ファイル全体の物理的な転送を避けるために、プログラム・ローダは、ページ・テーブルおよびTLBを更新し、実行ファイル用に指定された仮想アドレスを、関連付けられたオブジェクト・ファイルのコンテンツにマップすることを有効に宣言する。このようにしてマップされた仮想メモリのセグメントは、メモリマップされたファイルと一般に呼ばれ、使用されていないプログラム・コードをメイン・メモリ内へロードする必要性をいっさいなくすことができるという利点を有する。
場合によっては、ロードされるプログラムは、BSS(block started by symbol)として知られているセクションを含み、これは、BSSセグメントと呼ばれる場合が多く、はじめに、すなわち、プログラムの実行が開始するときに、ゼロの値のデータで満たされることを予期されている静的に割り当てられた変数を含む。この場合には、実行の前にBSSセクション全体をゼロ化することを避けるために、OSは、ゼロ化されるデータ・ブロックに対応する、PTEのビットマスク内のビットをセットし、その一方で、プログラムのその他のデータ・セグメントに対応するビットをクリアすることによって、同様に上述のメカニズムを採用する。
第2の処理ステップ102において、仮想アドレスがCPU命令によって参照されたことに応答して、PMMUは、仮想アドレスを物理アドレスへと変換することによって、仮想メモリ・マネージメントというその主要な機能を果たす。このために、PMMUは、第1の処理ステップ101のTLB内に含まれているPTEを採用する。より詳細には、PMMUは最初に、目下の仮想アドレスに対応するPTEを探してTLBを検索する。マッチするものが見つかると、すなわち、仮想メモリ・マネージメントの技術分野においてTLBヒットとして知られている状況になると、そのマッチするPTEから直接、物理アドレスを取り出すことができる。マッチするものが見つからないと、すなわち、一般にTLBミスと呼ばれる状況になると、PMMUには、OSによって保持されているページ・テーブルを調べることが要求される。このページ・テーブルが、マッチするPTEを含む場合には、PMMUは、そのPTEをTLB内にキャッシュし、失敗しているCPU命令を再実行する。
第3の処理ステップ103において、PMMUは、第2の処理ステップ102において得られた物理アドレスにアクセスし、その中に含まれているデータ・ブロックをCPUのデータ・キャッシュ内へフェッチし始める。データ・キャッシュがこの時点で既に満杯である場合には、占有されているキャッシュ・ラインを上書きする必要が生じることがあり、新たにフェッチされたデータ・ブロックを収容するために、その前のコンテンツを破棄する必要が生じることがある。どのキャッシュ・ラインの占有を解消するかを選択するためのさまざまなアルゴリズムが、当技術分野において知られている。
データ・キャッシュ上のいかなる書き込みオペレーションもスピード・アップするために、データ・キャッシュは、ライトバック・キャッシュ(ライトビハインド・キャッシュと呼ばれる場合もある)の形態を取る。このポリシーによれば、書き込みは、すぐにはバッキング・ストアに反映されない。代わりに、PMMUは、どのキャッシュ・ラインがCPUによって上書きされているかを追跡把握し、それに応じて、それらのロケーションを「ダーティー」としてマークする。ダーティーなキャッシュ・ラインの占有を解消する前に、それぞれのデータ・ブロックがバッキング・ストアに書き戻されて、その更新されたコンテンツがその後の読み取りアクセスのために保存される。このアプローチは、コンピュータ・サイエンスにおいては「レイジー・ライト」として知られている。データ・ブロックを書き戻したら、PMMUは、そのデータ・ブロックがいつか取り出された場合にゼロ化されることを防止するためにPTEのビットマスク内の対応するビットをクリアする必要がある。
それぞれのデータ・ブロックをフェッチするために、空いているキャッシュ・ラインが識別されると、または占有されているキャッシュ・ラインが解放されると、PMMUは、自分の内部ストレージ110内で見つかったPTE内に含まれているビットマスクを調べる。その対応するビットがセットされている場合には、PMMUは、メイン・メモリからデータ・ブロックを取り出さずに、第4の処理ステップ104においてそれぞれのキャッシュ・ラインをゼロ化してから、そのデータ・ブロックを要求元のアプリケーションが利用できるようにする。
上述のさまざまな方法のステップは、プログラムされたコンピュータによって実行することができるということを当業者なら容易に認識するであろう。本明細書においては、いくつかの実施形態は、プログラム・ストレージ・デバイス、たとえばデジタル・データ・ストレージ・メディアをカバーするように意図されており、それらのプログラム・ストレージ・デバイスは、マシンまたはコンピュータによって読み取ることができ、マシンによって実行可能なまたはコンピュータによって実行可能な命令のプログラムをエンコードし、前記命令は、本明細書に記載の方法のステップのうちのいくつかまたはすべてを実行する。それらのプログラム・ストレージ・デバイスは、たとえば、デジタル・メモリ、磁気ディスクもしくは磁気テープなどの磁気ストレージ・メディア、ハード・ドライブ、または光学的に読み取り可能なデジタル・データ・ストレージ・メディアとすることができる。これらの実施形態はまた、本明細書に記載の方法の前記ステップを実行するようにプログラムされたコンピュータをカバーするように意図されている。
本発明は、その他の特定の装置および/または方法で具体化することもできる。記載した実施形態は、すべての点で例示的なものにすぎず、限定的なものではないとみなすべきである。とりわけ、本発明の範囲は、本明細書に記載の説明および図ではなく、添付の特許請求の範囲によって示される。特許請求の範囲の均等物の意味および範囲内に収まるすべての変更は、特許請求の範囲内に包含される。

Claims (10)

  1. コンピュータ・メモリを管理する方法であって、
    仮想アドレスを物理アドレスにマップするためのページ・テーブル・エントリー、および複数のデータ・ブロックを含むキャッシュを保持するステップ(101)と、
    前記仮想アドレスへの参照に応答して、前記ページ・テーブル・エントリーを用いて前記仮想アドレスを前記物理アドレスへと変換するステップ(102)と、データを前記物理アドレスから前記キャッシュ内へフェッチするステップ(103)と
    を含む方法において、前記ページ・テーブル・エントリーが、複数のインジケータを含み、それぞれのデータ・ブロックが、前記複数のインジケータのうちの1つに対応し、前記データを前記キャッシュ内へフェッチするステップ(103)が開始すると、当該方法が、
    前記複数のインジケータから選択された1つのインジケータ(110)がセットされていることに応答して、前記対応するデータ・ブロックをゼロ化するさらなるステップ(104)を含むことを特徴とする方法。
  2. 前記ページ・テーブル・エントリーがビットマスクを含み、前記インジケータが、前記ビットマスク内に含まれているビットであることを特徴とする、請求項1に記載の方法。
  3. 前記ページ・テーブル・エントリーが、前記複数のデータ・ブロックを含むメモリ・ページに関連付けられ、前記方法が、
    データ・ブロックを受け取る中間ステップと、
    前記データ・ブロックを前記メモリ・ページ内に格納する中間ステップと、
    前記データ・ブロックが対応する前記インジケータをクリアする中間ステップとを含むことを特徴とする、請求項1に記載の方法。
  4. 前記データ・ブロックが対応していない、前記複数のインジケータのうちの残りのインジケータをセットするさらなるステップ
    を含むことを特徴とする、請求項1に記載の方法。
  5. さらなるデータ・ブロックを上書きする後続ステップと、
    前記さらなるデータ・ブロックが対応する前記インジケータをクリアする後続ステップと
    を含むことを特徴とする、請求項3または4に記載の方法。
  6. コンピュータ・プログラムであって、プログラムがコンピュータ上で実行されたときに請求項1に記載の方法を実行するためのコンピュータ実行可能命令を含む、コンピュータ・プログラム。
  7. オペレーティング・システムを含むことを特徴とする、請求項6に記載のコンピュータ・プログラム。
  8. 仮想アドレスを物理アドレスにマップするためのページ・テーブル・エントリー、および複数のデータ・ブロックを含むキャッシュを保持するステップ(101)を行うための手段と、
    前記仮想アドレスへの参照に応答して、前記ページ・テーブル・エントリーを用いて前記仮想アドレスを前記物理アドレスへと変換するステップ(102)、およびデータを前記物理アドレスから前記キャッシュ内へフェッチするステップ(103)を行うための手段と
    を含むデバイスにおいて、前記ページ・テーブル・エントリーが、複数のインジケータを含み、それぞれのデータ・ブロックが、前記複数のインジケータのうちの1つに対応し、当該デバイスが、前記データを前記キャッシュ内へフェッチするステップ(103)が開始されると、
    前記複数のインジケータから選択された1つのインジケータ(110)がセットされていることに応答して、前記対応するデータ・ブロックをゼロ化するステップ(104)を行うためのさらなる手段を含むことを特徴とするデバイス。
  9. 中央処理装置、
    メモリ・マネージメント・ユニット、および
    データ・キャッシュ
    のうちの少なくとも1つを含むことを特徴とする、請求項8に記載のデバイス。
  10. 前記ページ・テーブル・エントリーを格納するように構成されている変換ルックアサイド・バッファをさらに含み、前記仮想アドレスが、前記変換ルックアサイド・バッファを用いて変換される(102)ことを特徴とする、請求項8または9に記載のデバイス。
JP2013523548A 2010-08-06 2011-07-07 コンピュータ・メモリを管理する方法、対応するコンピュータ・プログラム製品、およびそのためのデータ・ストレージ・デバイス Expired - Fee Related JP5583274B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP10305868.1 2010-08-06
EP10305868A EP2416251B1 (en) 2010-08-06 2010-08-06 A method of managing computer memory, corresponding computer program product, and data storage device therefor
PCT/EP2011/061513 WO2012016783A1 (en) 2010-08-06 2011-07-07 A method of managing computer memory, corresponding computer program product; and data storage device therefor

Publications (2)

Publication Number Publication Date
JP2013544380A JP2013544380A (ja) 2013-12-12
JP5583274B2 true JP5583274B2 (ja) 2014-09-03

Family

ID=43569401

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013523548A Expired - Fee Related JP5583274B2 (ja) 2010-08-06 2011-07-07 コンピュータ・メモリを管理する方法、対応するコンピュータ・プログラム製品、およびそのためのデータ・ストレージ・デバイス

Country Status (6)

Country Link
US (1) US20130124821A1 (ja)
EP (1) EP2416251B1 (ja)
JP (1) JP5583274B2 (ja)
KR (1) KR101451045B1 (ja)
CN (1) CN103052945B (ja)
WO (1) WO2012016783A1 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105359115A (zh) * 2013-07-01 2016-02-24 惠普发展公司,有限责任合伙企业 包含虚拟地址空间和物理地址空间之间的映射的数据结构的查找
CN104699633B (zh) * 2013-12-04 2019-04-23 瑞昱半导体股份有限公司 虚拟物理地址转换系统及其管理方法
WO2016106757A1 (zh) * 2014-12-31 2016-07-07 华为技术有限公司 一种存储数据的管理方法、存储管理器及存储系统
KR101994952B1 (ko) 2015-03-27 2019-07-01 후아웨이 테크놀러지 컴퍼니 리미티드 데이터 처리 방법, 메모리 관리 유닛, 및 메모리 제어 장치
WO2016171866A1 (en) * 2015-04-24 2016-10-27 Optimum Semiconductor Technologies, Inc. Computer processor with separate registers for addressing memory
US10884945B2 (en) * 2015-06-30 2021-01-05 International Business Machines Corporation Memory state indicator check operations
WO2017058218A1 (en) * 2015-09-30 2017-04-06 Hewlett Packard Enterprise Development LP. Using a memory controller to manage access to a memory based on a memory initialization state indicator
US10534724B2 (en) * 2015-12-24 2020-01-14 Intel Corporation Instructions and logic to suspend/resume migration of enclaves in a secure enclave page cache
CN112486403B (zh) * 2019-09-12 2024-12-24 伊姆西Ip控股有限责任公司 管理存储对象的元数据的方法、装置和计算机程序产品
CN112799977B (zh) * 2021-02-26 2022-07-19 中国人民解放军国防科技大学 计算机的缓存分区和缓存访问实时性保护方法及装置
CN115712500A (zh) * 2022-11-10 2023-02-24 阿里云计算有限公司 内存释放、内存恢复方法、装置、计算机设备及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02176951A (ja) * 1988-12-28 1990-07-10 Nec Corp 仮想記憶装置
US5388244A (en) * 1992-09-17 1995-02-07 International Business Machines Corporation Controls for initial diversion of page-frame logical content as part of dynamic virtual-to-real translation of a virtual page address
US5920895A (en) * 1995-04-24 1999-07-06 Microsoft Corporation Mapped file input/output with delayed zeroing
US7073042B2 (en) * 2002-12-12 2006-07-04 Intel Corporation Reclaiming existing fields in address translation data structures to extend control over memory accesses
US8214622B2 (en) * 2004-05-27 2012-07-03 International Business Machines Corporation Facilitating management of storage of a pageable mode virtual environment absent intervention of a host of the environment
US20080229117A1 (en) * 2007-03-07 2008-09-18 Shin Kang G Apparatus for preventing digital piracy
GB2448907B (en) * 2007-05-02 2011-07-27 Advanced Risc Mach Ltd Reducng information leakage between processes sharing a cache
US7757035B2 (en) * 2007-06-26 2010-07-13 Intel Corporation Method for optimizing virtualization technology and memory protections using processor-extensions for page table and page directory striping

Also Published As

Publication number Publication date
JP2013544380A (ja) 2013-12-12
CN103052945B (zh) 2015-09-16
CN103052945A (zh) 2013-04-17
EP2416251B1 (en) 2013-01-02
WO2012016783A1 (en) 2012-02-09
US20130124821A1 (en) 2013-05-16
EP2416251A1 (en) 2012-02-08
KR20130041303A (ko) 2013-04-24
KR101451045B1 (ko) 2014-10-15

Similar Documents

Publication Publication Date Title
JP5583274B2 (ja) コンピュータ・メモリを管理する方法、対応するコンピュータ・プログラム製品、およびそのためのデータ・ストレージ・デバイス
RU2427892C2 (ru) Способ и устройство для установки политики кэширования в процессоре
US10802987B2 (en) Computer processor employing cache memory storing backless cache lines
US9430402B2 (en) System and method for providing stealth memory
US20190243776A1 (en) 32-bit address space containment to secure processes from speculative rogue cache loads
US7793070B2 (en) Processing system implementing multiple page size memory organization with multiple translation lookaside buffers having differing characteristics
EP2017739A1 (en) Processing system implementing variable page size memory organization
TWI641947B (zh) 用於管理位址轉換和快取記憶體儲存的方法及裝置
US9229862B2 (en) Cache management based on physical memory device characteristics
TWI648625B (zh) 管理位址獨立的頁面屬性
US20160259732A1 (en) Managing reuse information for memory pages
US20170220482A1 (en) Manipulation of virtual memory page table entries to form virtually-contiguous memory corresponding to non-contiguous real memory allocations
JP2024527054A (ja) 動的割当可能な物理的にアドレス指定されるメタデータストレージ
US10372622B2 (en) Software controlled cache line replacement within a data property dependent cache segment of a cache using a cache segmentation enablement bit and cache segment selection bits
CN115618336A (zh) 缓存及其操作方法、计算机装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140516

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140715

R150 Certificate of patent or registration of utility model

Ref document number: 5583274

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees