JP2009020881A - 可変のページサイズのメモリ編成を実装する処理システム - Google Patents

可変のページサイズのメモリ編成を実装する処理システム Download PDF

Info

Publication number
JP2009020881A
JP2009020881A JP2008176357A JP2008176357A JP2009020881A JP 2009020881 A JP2009020881 A JP 2009020881A JP 2008176357 A JP2008176357 A JP 2008176357A JP 2008176357 A JP2008176357 A JP 2008176357A JP 2009020881 A JP2009020881 A JP 2009020881A
Authority
JP
Japan
Prior art keywords
memory
page table
page
management software
table entries
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.)
Pending
Application number
JP2008176357A
Other languages
English (en)
Inventor
Brian Stecher
ステッチャー ブライアン
Hao Zhou
チョウ ハオ
Sunil Kittur
キッター スニール
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.)
QNX Software Systems GmbH
Original Assignee
QNX Software Systems 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 QNX Software Systems GmbH filed Critical QNX Software Systems GmbH
Publication of JP2009020881A publication Critical patent/JP2009020881A/ja
Pending 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/04Addressing variable-length words or parts of words
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

Landscapes

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

Abstract

【課題】本発明は可変ページサイズを実装し得る改善されたシステムを提供する。
【解決手段】複数のページテーブルエントリを含むページテーブルであって、その各々は、対応する仮想アドレスページに対するメモリページサイズ情報を含むページテーブルと、対応するメモリページサイズ情報を含む複数のページテーブルエントリの情報をキャッシュするように適応されたトランスレーションルックアサイドバッファと、メモリ管理ソフトウェアであって、該ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズの1つ以上のページテーブルエントリに統合するために、ページテーブルにおける変更に応答し、統合された隣接するページテーブルエントリに対応する、トランスレーションルックアサイドバッファのエントリをさらにアップデートするメモリ管理ソフトウェアとを備える、処理システム。
【選択図】なし

Description

本発明は、処理システムにおけるメモリ管理に関し、特に、可変のページサイズのメモリ編成を実装する処理システムに関する。
(発明の背景)
処理システムのメモリが編成され得る様々な異なる方法がある。そのような方法の1つは、仮想メモリの使用を介する。仮想メモリは、メモリ空間のサイズおよびアドレス指定が厳密に処理システムの物理メモリに拘束されない、メモリアドレス空間においてソフトウェアを実行することを可能にする。仮想メモリシステムにおいて、オペレーティングシステムは、仮想メモリを物理メモリにマップする。オペレーティングシステムは、アドレスが要求される場合に、そのアドレスが現在メインメモリと関連しないことを検出するために、このマッピングを用いることにより、要求されるデータがアクセスされ得る。
仮想メモリは、ページングを通して実装され得る。処理システムがページングを用いる場合に、仮想アドレスの下位ビットは、保持されて、実際の物理アドレスの下位ビットとして直接用いられる。対照的に、上位ビットは、連続的な物理アドレスの範囲に対応する、1つ以上のアドレス変換テーブルへのキーまたはインデックスとして取扱われ得る。そのような範囲によって参照されるメモリは、ページと呼ばれ得る。ページサイズは、例えば、512バイトから8メガバイトの範囲のサイズであり得る。
仮想メモリと物理メモリとの間のマッピングは、ページテーブル配列のページテーブルエントリにおいて保存され得る。これらのページテーブルエントリは、仮想アドレスから物理アドレスへの変換を実行するためにオペレーティングシステムによって用いられ得る。処理システムはまた、仮想メモリアドレスが対応する物理アドレスに変換される効率を高めるために、トランスレーションルックアサイドバッファ(translation lookaside buffer)(TLB)を含み得る。TLBは、仮想アドレスをそれに対応する物理アドレスに変換するスピードを高めるために、様々なページテーブルエントリの部分を含む、固定数のエントリを有し得るキャッシュである。TLBは、検索キーが仮想アドレスであり、検索結果が物理アドレスおよびアクセス許可である、内容アドレスメモリ(content−addressable memory)を含み得る。TLBの検索が一致を生じる場合、変換は、非常に迅速であると公知であり、物理アドレスは、メモリにアクセスするために用いられる。仮想アドレスがTLB中に無い場合、変換は、ページテーブルを介して進み、完了までにより長くかかり得る。
仮想/物理アドレス空間のページサイズはしばしば、固定され得、かつ/または動的に変更され難くあり得る。それにもかかわらず、ページテーブルエントリおよびTLBエントリにおいて用いられるページサイズは、システムメモリの性能に対して影響を有し得る。より小さなページサイズは、メモリアクセス許可の制御に高い細分性が要求される場合に、有利であり得る。同様に、小さなページサイズは、アプリケーションがその動作のために仮想メモリ空間の小さな部分を要求するだけの場合に、有利であり得る。しかし、大きなページサイズは、仮想メモリ空間が大きなページに編成される場合に、TLBミスが発生する可能性がより低いので、TLBに関連して用いられる場合に有利であり得る。
複数のページサイズを採用する多くのシステムは、静的な方法においてそのように動く。そのようなシステムの多機能性は、制限され得る。他のシステムは、ハードウェアを用いる動的な方法において複数のページサイズを実装する。複数のTLBはまた、各ページサイズと関連づけられる異なる特性によって用いられ得る。しかし、複数のページサイズを実現し得る方法は、それがハードウェアにおいて実装され、かなりの量のコストをシステムに追加し得る方法に限定される。従って、可変のページサイズを実装し得る、改良されたシステムに対するニーズが存在する。
(概要)
処理システムは、ページテーブルにおける変更に応答的なメモリ管理ソフトウェアを含む。メモリ管理ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズを有する1つ以上のページテーブルエントリへと統合する。メモリ管理ソフトウェアは、統合された隣接するページテーブルエントリに対応する、トランスレーションルックアサイドバッファのエントリをアップデートする。
本発明の他のシステム、方法、特徴、および利点は、以下の図面および詳細な説明の考査において当業者にとって明らかであるかまたは明らかになる。すべてのそのような追加のシステム、方法、特徴、および利点が、この説明の中に含まれ、本発明の範囲の中にあり、以下の特許請求の範囲によって保護されることは意図されている。
例えば、本発明は以下を提供する。
(項目1) 処理システムであって、
複数のページテーブルエントリを含むページテーブルであって、該複数のページテーブルエントリの各々は、対応する仮想アドレスページに対するメモリページサイズ情報を含む、ページテーブルと、
トランスレーションルックアサイドバッファであって、対応するメモリページサイズ情報を含む、該複数のページテーブルエントリについての情報をキャッシュするように適応された、トランスレーションルックアサイドバッファと、
メモリ管理ソフトウェアであって、該メモリ管理ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズを有する1つ以上のページテーブルエントリへと統合するために、該ページテーブルにおける変更に応答し、該メモリ管理ソフトウェアは、該統合された隣接するページテーブルエントリに対応する該トランスレーションルックアサイドバッファのエントリをさらにアップデートする、メモリ管理ソフトウェアと
を備える、処理システム。
(項目2) 上記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するアクセス許可に基づいて、該隣接するページテーブルエントリを統合する、項目1に記載の処理システム。
(項目3) 上記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するメモリ境界条件に基づいて、該隣接するページテーブルエントリを統合する、項目1に記載の処理システム。
(項目4) 上記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、上記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ/または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および/または該追加は、該メモリ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、項目1に記載の処理システム。
(項目5) 処理システムであって、
複数のページテーブルエントリを含むページテーブルであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報、対応する仮想アドレスページに対するメモリページサイズ、および該対応する仮想アドレスページに対するアクセス許可情報を含む、ページテーブルと、
トランスレーションルックアサイドバッファであって、対応するメモリページサイズ情報を含む、該複数のページテーブルエントリに対応する情報をキャッシュするように適応された、トランスレーションルックアサイドバッファと、
メモリ管理ソフトウェアであって、該メモリ管理ソフトウェアは、実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別するために、該ページテーブルにおける変更に応答し、該メモリ管理ソフトウェアは、該識別された隣接するページテーブルエントリのいずれかの分析が該メモリページサイズの変更を保証する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも1つに対する該メモリページサイズ情報をアップデートし、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもマップされ得る、最も大きなメモリページサイズに対応し、該メモリ管理ソフトウェアは、必要な場合には、該新しいメモリページサイズ情報による、該トランスレーションルックアサイドバッファの1つ以上の対応するエントリのアップデートを容易にする、メモリ管理ソフトウェアと
を備える、処理システム。
(項目6) 上記メモリ管理ソフトウェアは、上記トランスレーションルックアサイドバッファの上記1つ以上の対応するエントリを直接アップデートする、項目5に記載の処理システム。
(項目7) 上記メモリ管理ソフトウェアは、1つ以上のさらなるソフトウェアモジュールを介して、上記トランスレーションルックアサイドバッファの上記1つ以上の対応するエントリを間接的にアップデートする、項目5に記載の処理システム。
(項目8) 上記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、上記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ/または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および/または該追加は、該メモリ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、項目5に記載の処理システム。
(項目9) 上記新しいメモリページサイズ情報は、4キロバイトの倍数であるページサイズに対応する、項目5に記載の処理システム。
(項目10) 上記メモリ管理ソフトウェアは、上記新しいメモリページサイズ情報による、上記隣接するページテーブルエントリのすべてに対する上記メモリページサイズ情報のアップデートを容易にするために、上記ページテーブルにおける変更に応答する、項目5に記載の処理システム。
(項目11) 上記新しいメモリページサイズ情報は、上記メモリ管理ソフトウェアによってチェックすることの前に、上記隣接するページテーブルエントリに割当てられた、上記メモリページサイズ情報によって表される上記メモリページサイズより大きいメモリページサイズを表す、項目5に記載の処理システム。
(項目12) 上記新しいメモリページサイズ情報は、上記メモリ管理ソフトウェアによってチェックすることの前に、上記隣接するページテーブルエントリに割当てられた、上記メモリページサイズ情報によって表される上記メモリページサイズより小さいメモリページサイズを表す、項目5に記載の処理システム。
(項目13) 上記新しいメモリページサイズ情報は、上記メモリ管理ソフトウェアによってチェックすることの前に、上記隣接するページテーブルエントリに割当てられた、上記メモリページサイズ情報によって表される上記メモリページサイズより小さいメモリページサイズを表す、項目11に記載の処理システム。
(項目14) 上記処理システムは、単一のページテーブルを備える、項目5に記載の処理システム。
(項目15) 上記処理システムは、複数のページテーブルを備える、項目5に記載の処理システム。
(項目16) 上記処理システムは、単一のトランスレーションルックアサイドバッファを備える、項目5に記載の処理システム。
(項目17) 上記処理システムは、複数のトランスレーションルックアサイドバッファを備える、項目5に記載の処理システム。
(項目18) 上記複数のトランスレーションルックアサイドバッファは、
第1のメモリページサイズを有するページテーブルエントリをキャッシュする第1のトランスレーションルックアサイドバッファと、
第2のメモリページサイズを有するページテーブルエントリをキャッシュする第2のトランスレーションルックアサイドバッファであって、該第2のメモリページサイズは、該第1のメモリページサイズと異なる、第2のトランスレーションルックアサイドバッファと
を備える、項目17に記載の処理システム。
(項目19) メモリ管理ソフトウェアであって、
複数のページテーブルエントリを含むページテーブルを管理するように適応されたページテーブル管理ソフトウェアであって、該複数のページテーブルエントリの各々は、対応する仮想アドレスページに対するメモリページサイズ情報を含む、ページテーブル管理ソフトウェアと、
トランスレーションルックアサイドバッファを管理するように適応されたトランスレーションルックアサイドバッファ管理ソフトウェアであって、該トランスレーションルックアサイドバッファは、対応するメモリページサイズ情報を含む該複数のページテーブルエントリに対応する情報をキャッシュするように適応される、トランスレーションルックアサイドバッファと、
メモリページサイズ管理ソフトウェアであって、該メモリページサイズ管理ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズを有する1つ以上のページテーブルエントリへと統合するために、該ページテーブルにおける変更に応答し、該メモリページサイズ管理ソフトウェアは、該統合された隣接するページテーブルエントリに対応する該トランスレーションルックアサイドバッファのエントリをさらにアップデートする、メモリページサイズ管理ソフトウェアと
を備える、メモリ管理ソフトウェア。
(項目20) 上記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するアクセス許可に基づいて、該隣接するページテーブルエントリを統合する、項目19に記載のメモリ管理ソフトウェア。
(項目21) 上記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するメモリ境界条件に基づいて、該隣接するページテーブルエントリを統合する、項目19に記載のメモリ管理ソフトウェア。
(項目22) 上記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、上記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ/または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および/または該追加は、該メモリ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、項目19に記載のメモリ管理ソフトウェア。
(項目23) メモリ管理ソフトウェアであって、
複数のページテーブルエントリを含むページテーブルを管理するように適応されたページテーブル管理ソフトウェアであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報、対応する仮想アドレスページに対するメモリページサイズ、および該対応する仮想アドレスページに対するアクセス許可情報を含む、ページテーブル管理ソフトウェアと、
トランスレーションルックアサイドバッファを管理するように適応されたトランスレーションルックアサイドバッファ管理ソフトウェアであって、該トランスレーションルックアサイドバッファは、対応するメモリページサイズ情報を含む該複数のページテーブルエントリに対応する情報をキャッシュするように適応される、トランスレーションルックアサイドバッファと、
メモリページサイズ管理ソフトウェアであって、該メモリページサイズ管理ソフトウェアは、実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別するために、該ページテーブル管理ソフトウェアによってなされた該ページテーブルにおける変更に応答し、該メモリページサイズ管理ソフトウェアは、該識別された隣接するページテーブルエントリのいずれかの分析が該メモリページサイズの変更を保証する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも1つに対する該メモリページサイズ情報をアップデートし、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもマップされ得る、最も大きなメモリページサイズに対応し、該メモリページサイズ管理ソフトウェアは、必要な場合には、該新しいメモリページサイズ情報による、該トランスレーションルックアサイドバッファの1つ以上の対応するエントリのアップデートを容易にする、メモリページサイズ管理ソフトウェアと
を備える、メモリ管理ソフトウェア。
(項目24) 上記新しいメモリページサイズ情報は、4キロバイトの倍数であるページサイズに対応する、項目18に記載のメモリ管理ソフトウェア。
(項目25) 上記メモリページサイズ管理ソフトウェアは、上記トランスレーションルックアサイドバッファの1つ以上の対応するエントリを直接アップデートする、項目23に記載のメモリ管理ソフトウェア。
(項目26) 上記メモリページサイズ管理ソフトウェアは、上記トランスレーションルックアサイドバッファ管理ソフトウェアと協働して、上記トランスレーションルックアサイドバッファの1つ以上の対応するエントリを間接的にアップデートする、項目23に記載のメモリ管理ソフトウェア。
(項目27) 上記メモリページサイズ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、上記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ/または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および/または該追加は、該メモリページサイズ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、項目23に記載のメモリ管理ソフトウェア。
(項目28) 上記メモリページサイズ管理ソフトウェアは、上記新しいメモリページサイズ情報による、上記隣接するページテーブルエントリのすべてに対する上記メモリページサイズ情報のアップデートを容易にするために、上記ページテーブルにおける変更に応答する、項目23に記載のメモリ管理ソフトウェア。
(項目29) 上記新しいメモリページサイズ情報は、上記メモリページサイズ管理ソフトウェアによってチェックすることの前に、上記隣接するページテーブルエントリに割当てられた、上記メモリページサイズ情報によって表される上記メモリページサイズより大きいメモリページサイズを表す、項目23に記載のメモリ管理ソフトウェア。
(項目30) 上記新しいメモリページサイズ情報は、上記メモリページサイズ管理ソフトウェアによってチェックすることの前に、上記隣接するページテーブルエントリに割当てられた、上記メモリページサイズ情報によって表される上記メモリページサイズより小さいメモリページサイズを表す、項目23に記載のメモリ管理ソフトウェア。
(項目31) 上記新しいメモリページサイズ情報は、上記メモリページサイズ管理ソフトウェアによってチェックすることの前に、上記隣接するページテーブルエントリに割当てられた、上記メモリページサイズ情報によって表される上記メモリページサイズより小さいメモリページサイズを表す、項目29に記載のメモリ管理ソフトウェア。
(項目32) 上記ページテーブル管理ソフトウェアは、単一のページテーブルのページテーブルエントリを管理するように適応される、項目23に記載のメモリ管理ソフトウェア。
(項目33) 上記ページテーブル管理ソフトウェアは、複数のページテーブルのページテーブルエントリを管理するように適応される、項目23に記載のメモリ管理ソフトウェア。
(項目34) 上記トランスレーションルックアサイドバッファ管理ソフトウェアは、単一のトランスレーションルックアサイドバッファを管理するように適応される、項目23に記載のメモリ管理ソフトウェア。
(項目35) 上記トランスレーションルックアサイドバッファ管理ソフトウェアは、複数のトランスレーションルックアサイドバッファを管理するように適応される、項目23に記載のメモリ管理ソフトウェア。
(項目36) 上記複数のトランスレーションルックアサイドバッファは、異なるページサイズを有する、項目35に記載のメモリ管理ソフトウェア。
(項目37) 処理システムのメモリを管理するための方法であって、該方法は、
複数のページテーブルエントリを含むページテーブルにおける変更を検出することであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報と、対応する仮想アドレスページに対するメモリページサイズと、該対応する仮想アドレスページに対するアクセス許可情報とを含む、ことと、
実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別することによって該検出に応答することと、
該識別された隣接するページテーブルエントリのいずれかに対する該メモリページサイズの変更が保証されるか否かを決定するために、該識別された隣接するページテーブルエントリを分析することと、
該識別された隣接するページテーブルエントリの該分析が、該識別された隣接するページテーブルエントリのいずれかの該メモリページサイズの変更が保証されることを決定する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも1つに対する、該メモリページサイズ情報をアップデートすることであって、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもがマップされ得る、最も大きなメモリページサイズに対応する、ことと、
必要に応じて、該新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも1つに対応する、トランスレーションルックアサイドバッファの1つ以上のエントリをアップデートすることと
を包含する、方法。
(項目38) 処理システムのメモリを管理するための方法を実行するように適応されたソフトウェアコードを備えるストレージ媒体であって、該方法は、
複数のページテーブルエントリを含むページテーブルにおける変更を検出することであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報と、対応する仮想アドレスページに対するメモリページサイズと、該対応する仮想アドレスページに対するアクセス許可情報とを含む、ことと、
実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別することによって該検出に応答することと、
該識別された隣接するページテーブルエントリのいずれかに対する該メモリページサイズの変更が保証されるか否かを決定するために、該識別された隣接するページテーブルエントリを分析することと、
該識別された隣接するページテーブルエントリの該分析が、該識別された隣接するページテーブルエントリのいずれかの該メモリページサイズの変更が保証されることを決定する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも1つに対する、該メモリページサイズ情報をアップデートすることであって、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもがマップされ得る、最も大きなメモリページサイズに対応する、ことと、
必要に応じて、該新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも1つに対応する、トランスレーションルックアサイドバッファの1つ以上のエントリをアップデートすることと
を包含する、ストレージ媒体。
(開示の要約)
処理システムは、ページテーブルにおける変更に応答的なメモリ管理ソフトウェアを含む。メモリ管理ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズを有する1つ以上のページテーブルエントリへと統合する。メモリ管理ソフトウェアは、統合された隣接するページテーブルエントリに対応する、トランスレーションルックアサイドバッファのエントリをアップデートする。
本発明は、以下の図面および説明への参照によってより良く理解され得る。図面における構成要素は縮尺通りである必要はなく、代わりに本発明の原理を例示することに重点が置かれている。さらに、図面において、同様な参照数字は、異なる図面にわたって対応する部分を明示する。
(好適な実施形態の詳細な説明)
図1は、可変のページサイズのメモリ編成を実装し得る、処理システム100のブロック図である。処理システム100は、物理メモリ110にアクセスするプロセッサ105を含む。プロセッサ105は、単一のプロセッサとして示される。しかし、システム100は、対称マルチプロセッサシステム、並列処理システム、または他のアーキテクチャとして実装され得る。
物理メモリ110は、ソフトウェア命令空間115およびデータ空間120を含み得る。ソフトウェア命令空間115は、メモリ管理ソフトウェア125および他のソフトウェアコード130を含み得る。メモリ管理ソフトウェア125は、処理システム100のメモリ空間を管理するために、プロセッサ105によって実行可能であり得る。図1において、メモリ管理ソフトウェア125は、仮想メモリアドレス指定を用いてシステム100のメモリを管理する。
図1において、処理システム100は、仮想メモリアドレスと物理メモリ空間110の対応する物理アドレスとの間のマッピングを提供する、少なくとも1つのページテーブル135を採用する。複数のページテーブルもまた、採用および管理され得る。ページテーブル135は、物理メモリ空間110、メモリ管理ユニット、および/または他の物理メモリ空間において存在し得る。
トランスレーションルックアサイドバッファ(TLB)140は、ページテーブル135の一定のエントリをキャッシュするように適応される。キャッシュは、145においてプロセッサ105により提供される仮想アドレスと、150において提供される物理アドレスとの間の変換においてより速い変換を提供する。物理アドレス150は、同様に、物理メモリ空間110の対応するエントリにアクセスするために用いられる。TLB140は、プロセッサ105の一部、メモリ管理ユニットの一部、または別個のハードウェアモジュールの一部であり得る。
図2は、ページテーブル135およびTLB140に対する構造を例示する。これらのテーブルにおいて、仮想アドレスの2進表現の下位ビットは、保持されて、物理アドレスの下位ビットとして用いられ得る。上位ビットは、1つ以上のページテーブルへのキーとして取扱われる。ページテーブルは、同様に、仮想アドレスから物理アドレスへの変換情報を含む。この目的のために、ページテーブル135は、複数のページテーブルエントリ205、225〜250を含み得る。例示されるページテーブルエントリ205、225〜250の各々は、仮想アドレスを対応する物理アドレス210に変換するための情報を含み得る。エントリはまた、対応する仮想アドレスページのページサイズを識別するメモリページサイズ情報220と、対応する仮想アドレスページに対するアクセス許可情報215とを含み得る。仮想アドレスページについての他の情報(そのページが最後に用いられたとき、ページがプロセスによって書込まれているか否かなどの情報)もまた、ページテーブルエントリの各々に含まれ得る。
トランスレーションルックアサイドバッファ140は、ページテーブル135の選択されたエントリをキャッシュするために用いられる。270、273、275、および280などで示されるTLBエントリの各々は、ページテーブル135のページテーブルエントリにおいて見出される情報のサブセット、付加情報、または同じ情報を含み得る。図2において、TLBエントリの各々は、仮想アドレスを対応する物理アドレス255に変換するための情報と、対応する仮想アドレスページのページサイズを識別するメモリページサイズ情報265とを含み得る。TLBエントリの各々は、対応する仮想アドレスページに対するアクセス許可を識別するアクセス許可情報260をも含み得る。ページテーブルエントリと同様に、そのアドレスページが最後に用いられた場合に、ページがプロセスによって書込まれているか否かなどのアドレスページと関連する他の情報もまた、TLBエントリの各々において含まれ得る。
TLB140は、限られた数のTLBエントリを有し得る。エントリ数は、ページテーブル135におけるページテーブルエントリの数より実質的に少なくあり得る。TLB140においてキャッシュされるべきページテーブルエントリの選択は、1つ以上のキャッシュプロセスによって決定され得る。そのようなプロセスは、要求される/アクセスされる仮想メモリ位置の相対的な局所性、仮想メモリ位置が様々なソフトウェアアプリケーションによってアクセスされる頻度、および/または他の基準に依存し得る。1つ以上のそのようなプロセスは、詳細なシステム要求に基づいて採用され得、その要求はシステムによって変わり得る。説明を容易にすると、ページテーブルエントリ205は、TLBエントリ270においてキャッシュされ、ページテーブルエントリ235は、TLBエントリ273においてキャッシュされ、ページテーブルエントリ240は、TLBエントリ275においてキャッシュされ、そしてページテーブルエントリ245は、TLBエントリ280においてキャッシュされる。
図3は、仮想メモリと関連づけられる要求を処理するために用いられ得る動作を示す図である。示されるように、仮想メモリ要求は、305において実行される。310において、チェックは、仮想メモリ要求と関連づけられる仮想メモリページがTLB140においてキャッシュされているか否かを決定するために行われる。キャッシュされていない場合、315においてシステム100は、TLBミスを処理するソフトウェアと関連づけられる1つ以上の動作を実行し得る。しかし、仮想メモリ要求と関連づけられる仮想メモリページがTLB140においてキャッシュされている場合、処理システム100は、要求が仮想メモリページと関連づけられるアクセス許可に従うか否かを決定するために要求を引続き処理する。システム100は、要求が仮想メモリページに対する許可に違反しないことを確認するために、対応するTLBエントリのアクセス許可260をチェックし得る。そのような許可は、対応する仮想メモリページを、読出し専用、書込み専用、読出し/書込み、または別の状態として識別し得る。305における仮想メモリ要求が、320におけるチェックによって決定されたときに無効である場合、処理システム100は、許可違反を処理するソフトウェア325と関連づけられる1つ以上の動作を実行し得る。または、TLB140は、物理アドレスページの上位の部分を生成するために、仮想メモリの上位ビットを用い、一方、仮想メモリアドレスの下位ビットが物理アドレスページへのオフセットとして用いられ得る。これらの動作は、330において実行され得る。対応する物理アドレスを用いる仮想メモリ要求の実行は、335において実行される。
図4は、可変のページサイズのメモリ編成を実装するために実行され得る動作を示す図である。405において、ページテーブル動作は実行される。この動作は、例えば、ページテーブルエントリへのアクセス、ページテーブルエントリの追加、ページテーブルエントリの削除、ページテーブルエントリのアップデート、または他の動作などの、ページテーブル135を変更する任意の動作を含み得る。410において、処理システム100は、405において実行される動作がページテーブルエントリを変更したか否かを決定するために、ページテーブル135をチェックする。そのような変更は、新しいページテーブルエントリが追加されたか否か、既存のページテーブルエントリが削除されたか否か、または他の動作を含み得る。405において実行される動作が、ページテーブルエントリの1つ以上に対してそのような変更を結果としてもたらさなかった場合、処理システム100は、415において他の動作の実行を続ける。
405において実行される動作が、ページテーブル135のページテーブルエントリに対する変更を結果としてもたらしていた場合、さらなるチェックは、420において行われる。このチェックに従って、処理システム100は、変更が共通の特性を有する隣接するページテーブルエントリの範囲を結果としてもたらしていたか否かを決定するために、変更されたページテーブルをチェックする。隣接するページテーブルエントリは、隣接する仮想アドレスと隣接する物理アドレスとの両方を有するページテーブルエントリであり得る。420において、チェックは、実質的に同一かまたは全く同じアクセス許可情報を有する、隣接するページテーブルエントリの位置を示すことを伴う。このチェックの効率を上げるために、420における動作は、変更されたページテーブルエントリから一定の位置的な隔たり内のページテーブルエントリのチェックに制限され得る。420におけるチェックの間に、そのような隣接するページテーブルエントリが見出されない場合、処理システム100は、415において他の動作の実行を続け得る。
必要な共通の特性を有する隣接するページテーブルエントリが見出される場合、隣接するページテーブルエントリは、425において識別されて、430において分析される。430における分析は、例えば、隣接するページテーブルエントリのいずれかが、オリジナルの隣接するページテーブルエントリのページサイズより大きなページサイズを有する、1つ以上のページテーブルエントリに統合され得るか否かの分析を含み得る。新しい、より大きなページサイズは、処理システム100の仮想メモリ空間を編成するために用いられる、最も小さなページサイズの倍数であり得る。例えば、425において識別された、各々4キロバイトのページサイズを有する16個の隣接するページテーブルエントリが在る場合、隣接するページテーブルエントリに対するページサイズは、64キロバイトのより大きな仮想ページサイズへとアップデートされ得る。同様に、425において識別された、各々4キロバイトのページサイズを有する256個の隣接するページテーブルエントリが在る場合、隣接するページテーブルエントリに対するページサイズは、1メガバイトのより大きな仮想ページサイズへとアップデートされ得る。
430において適用される分析基準を満たす、隣接するページテーブルエントリは、新しいページサイズ情報によって435においてアップデートされる。435において適用されるアップデート動作は、隣接するページテーブルエントリの各々を、新しいページサイズ情報を含む同様な情報によって置換することを伴い得る。一方で、ページテーブルのアーキテクチャによって許される場合、隣接するページテーブルエントリを、新しいページサイズ情報を有する単一のページテーブルエントリに統合することは、可能であり得る。それによって、残りの隣接するページテーブルエントリと関連づけられるメモリを解放する。
435においてアップデートされたページテーブルエントリに対応するTLB140中のエントリは、新しいページサイズ情報によって440においてアップデートされる。440において適用されるアップデート動作は、統合された隣接するページテーブルエントリのいずれかに対応するTLBエントリのすべてを、新しいページサイズ情報を含む新しい情報とともに単一のTLBエントリに統合することを伴い得る。統合された隣接するページテーブルエントリに対応する、残りのTLBエントリは、TLB140から削除され得る。それによって、TLBメモリを自由にし、TLB140がより多くのページテーブルエントリをキャッシュすることを可能にする。
より大きなページサイズを有するエントリへ統合される、図4の420において識別される隣接するページテーブルエントリの数は、変わり得る。例えば、420において識別される隣接するページテーブルエントリのすべてを統合することは、可能であり得る。一方で、識別される隣接するページテーブルエントリの1つ以上のサブセットを、同じページサイズまたは異なるページサイズの対応するページテーブルエントリへ統合することは、可能であり得る。420において識別される隣接するページテーブルエントリのいずれが最終的に統合されるかは、必要に応じて、システム設計仕様と430において識別されるエントリに適用される特定の分析要件とに依存し得る。
図5は、図4の430において示される分析動作の間に、処理システム100によって実行され得る、複数の相互に関係づけられる動作を示す図である。図5において、動作は、425の識別される隣接するページテーブルエントリのいずれが、より大きなページサイズを有する1つ以上のページテーブルエントリの中にそれらを統合するための基準を満たすか否かを決定するために実行される。この目的のために、識別される隣接するページテーブルエントリの数は、505において決定される。510において、チェックは、より大きなページサイズを有する1つ以上のページテーブルエントリに統合するために、識別される範囲において十分な数の隣接するページテーブルエントリが在るか否かを決定するために行われる。より大きなページサイズを有するページテーブルエントリへ統合される前に、510における決定動作において存在すべき隣接するページテーブルエントリの数は、システムによって変わり得る。例示において、隣接するページテーブルエントリを、より大きな仮想ページサイズを有するページテーブルエントリへ統合するか否かに関する決定は、オリジナルの隣接するページテーブルエントリの数が、システム100によってサポートされる新しい仮想ページサイズを有するページテーブルエントリを形成するために十分であるか否かに基づき得る。64キロバイト、128キロバイト、256キロバイト、512キロバイト、および/または1メガバイトのページサイズは、一般的に多くの処理システムアーキテクチャにおいて用いられるけれども、他のページサイズ値もまた採用され得る。処理システム100において用いられるページサイズは、例えば、TLB140においてサポートされるページサイズによって制限され得る。
動作510において、プロセスは、無駄となるメモリ空間を統合が結果としてもたらすか否かを考慮し得る。統合される仮想ページの末端に過度のメモリ空間容量を、統合が結果としてもたらす場合、統合を防止するか、またはページテーブルエントリを新しいページサイズへ統合するか、510において決定が行われ得る。新しいページサイズは、オリジナルの隣接するページテーブルエントリのページサイズより大きくあり得るけれども、隣接するページテーブルエントリを統合するために、その他において用いられ得る最も大きなページサイズ値より小さくあり得る。
510において示される動作の結果として、初期の決定は、統合が起こるであろうか否か、識別される隣接するページテーブルエントリのいずれが統合可能であるか、統合のために用いられる提案されたページサイズ、に関してなされ得る。識別される隣接するページテーブルエントリのいずれかの統合を差控える決定が510において行われる場合、処理システム100は、515において他のプロセスの実行を続け得る。しかし、識別される隣接するページテーブルエントリのいずれかを統合する決定が510において行われる場合、520においてさらなる分析が発生する。520における分析は、統合が可能な隣接するページテーブルエントリが、より大きな提案されたページサイズ値を持つ、使用に適するページテーブル境界に置かれるか否かを決定する。例えば、一組の4キロバイト/ページの隣接するページテーブルエントリが、64キロバイトのページサイズを有するページテーブルエントリへ統合される場合、一組の隣接するページテーブルエントリの最初のページテーブルエントリは、メモリ空間110の64キロバイトの境界から始まるべきである。
隣接するページテーブルエントリが520のメモリ境界基準を満たす場合、統合されるべき隣接するページテーブルエントリおよび提案されたページサイズは、525において図4の435に渡される。さもなければ、提案されたページサイズは、530においてシステム100によってサポートされる、より小さな次のページサイズへ減少され得る。535において、プロセスは、減少したページサイズが、隣接するページテーブルエントリのオリジナルのページサイズ以下であるか否かを決定する。より小さなページサイズがオリジナルのページサイズ以下である場合、隣接するページテーブルエントリを統合する必要は全くなく、処理システム100は、515において他のプロセスの実行を続け得る。しかし、減少したページサイズがオリジナルのページサイズより大きい場合、520におけるメモリ境界チェックは、より小さなページサイズを用いて実行され得る。示されるように、メモリ境界チェックが満たされるか、または提案されたページサイズが減少されるまで、これらの動作は繰返され得ることにより、そのページサイズは、統合のためのタグが付けられる隣接するページテーブルエントリのオリジナルのページサイズ以下である。
図6は、必要な場合に、隣接するページテーブルエントリのページサイズを減少させるために用いられ得るプロセスを示す。605において、ページテーブル動作は実行される。この動作は、例えば、ページテーブルエントリへのアクセス、ページテーブルエントリの追加、ページテーブルエントリの削除、ページテーブルエントリのアップデート、または他の動作などの、ページテーブル135を変更するいかなる動作をも含み得る。610において、処理システム100は、605において実行される動作がページテーブルエントリを変更したか否かを決定する。そのような変更は、既存のページテーブルエントリが削除されたか否か、または同様な動作を含み得る。605における動作が、ページテーブルエントリの1つ以上に対してそのような変更を結果としてもたらさなかった場合、処理システム100は、615において他の動作の実行を続ける。
605において、他のページテーブルエントリが変更する場合、さらなるチェックは、620において行われる。620において、処理システム100は、大きなページを持つ隣接するページテーブルエントリの範囲において変更が発生していたか否かを決定するために、変更されたページテーブルをチェックする。620において、チェックは、変更されたページテーブルエントリが、大きいページサイズを有するページテーブルエントリへと以前に統合された、ページテーブルエントリの範囲内であるか否かを決定することを伴い得る。620におけるチェックの間に、いかなるそのような隣接するページテーブルエントリも見出されない場合、処理システム100は、615において他の動作の実行を続け得る。
そのような隣接するページテーブルエントリが、620において見出される場合、隣接するページテーブルエントリは、625において識別され、630において分析される。630における分析は、隣接するページテーブルエントリが、隣接するページテーブルエントリのオリジナルのページサイズと比較して、減少したページサイズを有する複数のページテーブルエントリへと分割され得るか否かの分析を含み得る。新しい、減少したページサイズは、処理システム100の仮想メモリ空間を編成するために用いられる最も小さなページサイズの倍数であり得る。
630において適用される分析基準を満たす隣接するページテーブルエントリは、新しいページサイズ情報によって635においてアップデートされる。635に適用されるアップデート動作は、隣接するページテーブルエントリの各々を、新しいページサイズ情報を含む同様な情報によって置換することを伴い得、および/または以前に統合されたページテーブルエントリの範囲を、より小さなページサイズを有する複数の範囲に分割することを伴い得る。
635においてアップデートされるページテーブルエントリに対応する、TLB140におけるエントリは、新しいページサイズ情報によって640においてアップデートされる。640において適用されるアップデート動作は、630において分析された隣接するページテーブルエントリに対応する、さらなるTLBエントリを追加することを伴い得る。
図7は、1つのメモリ管理ソフトウェア125のアーキテクチャを例示する図である。メモリ管理ソフトウェア125は、ページテーブル管理ソフトウェア705、TLB管理ソフトウェア710、およびメモリページサイズ管理ソフトウェア715を含み得る。ページテーブル管理ソフトウェアは、複数のページテーブルエントリを有する、ページテーブル135などのページテーブルを管理し得る。複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報、対応する仮想アドレスページに対するメモリページサイズ情報、および対応する仮想アドレスページに対するアクセス許可情報を含み得る。トランスレーションルックアサイドバッファ管理ソフトウェアは、対応するメモリページサイズ情報を含む、複数のページテーブルエントリに対応する情報を、キャッシュするように適応されるトランスレーションルックアサイドバッファを管理し得る。トランスレーションルックアサイドバッファ管理ソフトウェアは、複数のトランスレーションルックアサイドバッファを管理し得る。
メモリページサイズ管理ソフトウェアは、実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別するために、ページテーブル管理ソフトウェアによって行われるページテーブルにおける変更に応答し得る。識別された隣接するページテーブルエントリの分析が、メモリページサイズへの変更を保証する場合、メモリページサイズ管理ソフトウェアは、新しいメモリページサイズ情報によって、識別された隣接するページテーブルエントリの少なくとも1つに対するメモリページサイズ情報をアップデートし得る。新しいメモリページサイズ情報は、識別される隣接するページテーブルエントリのいずれもマップされ得る、最も大きいメモリページサイズに対応し得る。新しいメモリページサイズは、識別された隣接するページテーブルエントリに対してオリジナルに割当てられたよりも大きなページサイズに対応し得る。一方で、新しいメモリページサイズ情報は、隣接するページテーブルエントリの以前に統合された範囲の減少したメモリページサイズに対応し得る。メモリページサイズ管理ソフトウェアはまた、必要な場合には、新しいメモリページサイズ情報によって、トランスレーションルックアサイドバッファの1つ以上の対応するエントリをアップデートすることを容易にし得る。
メモリページサイズ管理ソフトウェアは、効率を上げるために、その分析動作をページテーブルエントリの事前に定義された範囲に制限し得る。分析は、ページテーブルにおいて変更され、ページテーブルから削除され、かつ/またはページテーブルに追加された、局所的に近接するページテーブルエントリである隣接するページテーブルエントリに制限され得る。変更、削除、および/または追加は、メモリページサイズ管理ソフトウェアが、チェックを行うために応答したページテーブルにおける変更へ対応し得る。さらに、メモリページサイズ管理ソフトウェアは、新しいメモリページサイズ情報によって、隣接するページテーブルエントリのすべてに対する、メモリページサイズ情報をアップデートすることを容易にするための、ページテーブルにおける変更に応答し得る。
上記されるメモリ管理ソフトウェア125の各々の構成要素の特定の機能性は、それらの構成要素の間において共有され得る。その機能性のいかなる厳密な分割も必要がない。1つのシステムにおいて、メモリページサイズ管理ソフトウェア715は、トランスレーションルックアサイドバッファの対応するエントリを直接アップデートし得る。別の例示において、メモリページサイズ管理ソフトウェア715は、TLBアップデートを実行するためのトランスレーションルックアサイドバッファ管理ソフトウェア710と協働し得る。
図1に示されるように、メモリ管理ソフトウェア125は、物理メモリ110において存在し得る。物理メモリ110は、ランダムアクセスメモリまたは同様なストレージ媒体であり得る。他のシステムにおいて、メモリ管理ソフトウェア125は、ソフトウェアコードの使用、ストレージ、または転送のための他のストレージ媒体上に存在し得る。そのようなストレージ媒体は、例えば、ハードディスクドライブ、USBドライブ、フラッシュメモリ、読出し専用メモリ、光学ストレージ媒体、または他のストレージ媒体を含み得る。
本発明の様々な実施形態が記述される一方、さらに多くの実施形態および実装が本発明の範囲において可能であることは、当業者にとって明らかである。従って、本発明は、添付の特許請求の範囲およびそれと均等な範囲を除いて限定されるべきでない。
図1は、例示的な処理システムのブロック図である。 図2は、図1において示される処理システムにおいて用いられ得る、ページテーブル構造およびTLB構造を例示する。 図3は、仮想メモリと関連づけられる要求を処理する動作の図である。 図4は、可変のページサイズのメモリ編成を実装する動作の図である。 図5は、図4において示される分析動作の間に、処理システムによって実行され得る図である。 図6は、隣接するページテーブルエントリのページサイズを減少させるための動作の図である。 図7は、図1において示されるメモリ管理ソフトウェアのブロック図である。

Claims (38)

  1. 処理システムであって、
    複数のページテーブルエントリを含むページテーブルであって、該複数のページテーブルエントリの各々は、対応する仮想アドレスページに対するメモリページサイズ情報を含む、ページテーブルと、
    トランスレーションルックアサイドバッファであって、対応するメモリページサイズ情報を含む、該複数のページテーブルエントリについての情報をキャッシュするように適応された、トランスレーションルックアサイドバッファと、
    メモリ管理ソフトウェアであって、該メモリ管理ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズを有する1つ以上のページテーブルエントリへと統合するために、該ページテーブルにおける変更に応答し、該メモリ管理ソフトウェアは、該統合された隣接するページテーブルエントリに対応する該トランスレーションルックアサイドバッファのエントリをさらにアップデートする、メモリ管理ソフトウェアと
    を備える、処理システム。
  2. 前記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するアクセス許可に基づいて、該隣接するページテーブルエントリを統合する、請求項1に記載の処理システム。
  3. 前記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するメモリ境界条件に基づいて、該隣接するページテーブルエントリを統合する、請求項1に記載の処理システム。
  4. 前記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、前記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ/または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および/または該追加は、該メモリ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、請求項1に記載の処理システム。
  5. 処理システムであって、
    複数のページテーブルエントリを含むページテーブルであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報、対応する仮想アドレスページに対するメモリページサイズ、および該対応する仮想アドレスページに対するアクセス許可情報を含む、ページテーブルと、
    トランスレーションルックアサイドバッファであって、対応するメモリページサイズ情報を含む、該複数のページテーブルエントリに対応する情報をキャッシュするように適応された、トランスレーションルックアサイドバッファと、
    メモリ管理ソフトウェアであって、該メモリ管理ソフトウェアは、実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別するために、該ページテーブルにおける変更に応答し、該メモリ管理ソフトウェアは、該識別された隣接するページテーブルエントリのいずれかの分析が該メモリページサイズの変更を保証する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも1つに対する該メモリページサイズ情報をアップデートし、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもマップされ得る、最も大きなメモリページサイズに対応し、該メモリ管理ソフトウェアは、必要な場合には、該新しいメモリページサイズ情報による、該トランスレーションルックアサイドバッファの1つ以上の対応するエントリのアップデートを容易にする、メモリ管理ソフトウェアと
    を備える、処理システム。
  6. 前記メモリ管理ソフトウェアは、前記トランスレーションルックアサイドバッファの前記1つ以上の対応するエントリを直接アップデートする、請求項5に記載の処理システム。
  7. 前記メモリ管理ソフトウェアは、1つ以上のさらなるソフトウェアモジュールを介して、前記トランスレーションルックアサイドバッファの前記1つ以上の対応するエントリを間接的にアップデートする、請求項5に記載の処理システム。
  8. 前記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、前記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ/または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および/または該追加は、該メモリ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、請求項5に記載の処理システム。
  9. 前記新しいメモリページサイズ情報は、4キロバイトの倍数であるページサイズに対応する、請求項5に記載の処理システム。
  10. 前記メモリ管理ソフトウェアは、前記新しいメモリページサイズ情報による、前記隣接するページテーブルエントリのすべてに対する前記メモリページサイズ情報のアップデートを容易にするために、前記ページテーブルにおける変更に応答する、請求項5に記載の処理システム。
  11. 前記新しいメモリページサイズ情報は、前記メモリ管理ソフトウェアによってチェックすることの前に、前記隣接するページテーブルエントリに割当てられた、前記メモリページサイズ情報によって表される前記メモリページサイズより大きいメモリページサイズを表す、請求項5に記載の処理システム。
  12. 前記新しいメモリページサイズ情報は、前記メモリ管理ソフトウェアによってチェックすることの前に、前記隣接するページテーブルエントリに割当てられた、前記メモリページサイズ情報によって表される前記メモリページサイズより小さいメモリページサイズを表す、請求項5に記載の処理システム。
  13. 前記新しいメモリページサイズ情報は、前記メモリ管理ソフトウェアによってチェックすることの前に、前記隣接するページテーブルエントリに割当てられた、前記メモリページサイズ情報によって表される前記メモリページサイズより小さいメモリページサイズを表す、請求項11に記載の処理システム。
  14. 前記処理システムは、単一のページテーブルを備える、請求項5に記載の処理システム。
  15. 前記処理システムは、複数のページテーブルを備える、請求項5に記載の処理システム。
  16. 前記処理システムは、単一のトランスレーションルックアサイドバッファを備える、請求項5に記載の処理システム。
  17. 前記処理システムは、複数のトランスレーションルックアサイドバッファを備える、請求項5に記載の処理システム。
  18. 前記複数のトランスレーションルックアサイドバッファは、
    第1のメモリページサイズを有するページテーブルエントリをキャッシュする第1のトランスレーションルックアサイドバッファと、
    第2のメモリページサイズを有するページテーブルエントリをキャッシュする第2のトランスレーションルックアサイドバッファであって、該第2のメモリページサイズは、該第1のメモリページサイズと異なる、第2のトランスレーションルックアサイドバッファと
    を備える、請求項17に記載の処理システム。
  19. メモリ管理ソフトウェアであって、
    複数のページテーブルエントリを含むページテーブルを管理するように適応されたページテーブル管理ソフトウェアであって、該複数のページテーブルエントリの各々は、対応する仮想アドレスページに対するメモリページサイズ情報を含む、ページテーブル管理ソフトウェアと、
    トランスレーションルックアサイドバッファを管理するように適応されたトランスレーションルックアサイドバッファ管理ソフトウェアであって、該トランスレーションルックアサイドバッファは、対応するメモリページサイズ情報を含む該複数のページテーブルエントリに対応する情報をキャッシュするように適応される、トランスレーションルックアサイドバッファと、
    メモリページサイズ管理ソフトウェアであって、該メモリページサイズ管理ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズを有する1つ以上のページテーブルエントリへと統合するために、該ページテーブルにおける変更に応答し、該メモリページサイズ管理ソフトウェアは、該統合された隣接するページテーブルエントリに対応する該トランスレーションルックアサイドバッファのエントリをさらにアップデートする、メモリページサイズ管理ソフトウェアと
    を備える、メモリ管理ソフトウェア。
  20. 前記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するアクセス許可に基づいて、該隣接するページテーブルエントリを統合する、請求項19に記載のメモリ管理ソフトウェア。
  21. 前記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するメモリ境界条件に基づいて、該隣接するページテーブルエントリを統合する、請求項19に記載のメモリ管理ソフトウェア。
  22. 前記メモリ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、前記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ/または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および/または該追加は、該メモリ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、請求項19に記載のメモリ管理ソフトウェア。
  23. メモリ管理ソフトウェアであって、
    複数のページテーブルエントリを含むページテーブルを管理するように適応されたページテーブル管理ソフトウェアであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報、対応する仮想アドレスページに対するメモリページサイズ、および該対応する仮想アドレスページに対するアクセス許可情報を含む、ページテーブル管理ソフトウェアと、
    トランスレーションルックアサイドバッファを管理するように適応されたトランスレーションルックアサイドバッファ管理ソフトウェアであって、該トランスレーションルックアサイドバッファは、対応するメモリページサイズ情報を含む該複数のページテーブルエントリに対応する情報をキャッシュするように適応される、トランスレーションルックアサイドバッファと、
    メモリページサイズ管理ソフトウェアであって、該メモリページサイズ管理ソフトウェアは、実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別するために、該ページテーブル管理ソフトウェアによってなされた該ページテーブルにおける変更に応答し、該メモリページサイズ管理ソフトウェアは、該識別された隣接するページテーブルエントリのいずれかの分析が該メモリページサイズの変更を保証する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも1つに対する該メモリページサイズ情報をアップデートし、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもマップされ得る、最も大きなメモリページサイズに対応し、該メモリページサイズ管理ソフトウェアは、必要な場合には、該新しいメモリページサイズ情報による、該トランスレーションルックアサイドバッファの1つ以上の対応するエントリのアップデートを容易にする、メモリページサイズ管理ソフトウェアと
    を備える、メモリ管理ソフトウェア。
  24. 前記新しいメモリページサイズ情報は、4キロバイトの倍数であるページサイズに対応する、請求項18に記載のメモリ管理ソフトウェア。
  25. 前記メモリページサイズ管理ソフトウェアは、前記トランスレーションルックアサイドバッファの1つ以上の対応するエントリを直接アップデートする、請求項23に記載のメモリ管理ソフトウェア。
  26. 前記メモリページサイズ管理ソフトウェアは、前記トランスレーションルックアサイドバッファ管理ソフトウェアと協働して、前記トランスレーションルックアサイドバッファの1つ以上の対応するエントリを間接的にアップデートする、請求項23に記載のメモリ管理ソフトウェア。
  27. 前記メモリページサイズ管理ソフトウェアは、隣接するページテーブルエントリに対するチェックを、前記ページテーブルにおいて変更され、該ページテーブルから削除され、かつ/または該ページテーブルに追加された、局所的に近接するページテーブルエントリに制限し、該変更、該削除、および/または該追加は、該メモリページサイズ管理ソフトウェアが、該チェックを行うために応答した該ページテーブルにおける該変更に対応する、請求項23に記載のメモリ管理ソフトウェア。
  28. 前記メモリページサイズ管理ソフトウェアは、前記新しいメモリページサイズ情報による、前記隣接するページテーブルエントリのすべてに対する前記メモリページサイズ情報のアップデートを容易にするために、前記ページテーブルにおける変更に応答する、請求項23に記載のメモリ管理ソフトウェア。
  29. 前記新しいメモリページサイズ情報は、前記メモリページサイズ管理ソフトウェアによってチェックすることの前に、前記隣接するページテーブルエントリに割当てられた、前記メモリページサイズ情報によって表される前記メモリページサイズより大きいメモリページサイズを表す、請求項23に記載のメモリ管理ソフトウェア。
  30. 前記新しいメモリページサイズ情報は、前記メモリページサイズ管理ソフトウェアによってチェックすることの前に、前記隣接するページテーブルエントリに割当てられた、前記メモリページサイズ情報によって表される前記メモリページサイズより小さいメモリページサイズを表す、請求項23に記載のメモリ管理ソフトウェア。
  31. 前記新しいメモリページサイズ情報は、前記メモリページサイズ管理ソフトウェアによってチェックすることの前に、前記隣接するページテーブルエントリに割当てられた、前記メモリページサイズ情報によって表される前記メモリページサイズより小さいメモリページサイズを表す、請求項29に記載のメモリ管理ソフトウェア。
  32. 前記ページテーブル管理ソフトウェアは、単一のページテーブルのページテーブルエントリを管理するように適応される、請求項23に記載のメモリ管理ソフトウェア。
  33. 前記ページテーブル管理ソフトウェアは、複数のページテーブルのページテーブルエントリを管理するように適応される、請求項23に記載のメモリ管理ソフトウェア。
  34. 前記トランスレーションルックアサイドバッファ管理ソフトウェアは、単一のトランスレーションルックアサイドバッファを管理するように適応される、請求項23に記載のメモリ管理ソフトウェア。
  35. 前記トランスレーションルックアサイドバッファ管理ソフトウェアは、複数のトランスレーションルックアサイドバッファを管理するように適応される、請求項23に記載のメモリ管理ソフトウェア。
  36. 前記複数のトランスレーションルックアサイドバッファは、異なるページサイズを有する、請求項35に記載のメモリ管理ソフトウェア。
  37. 処理システムのメモリを管理するための方法であって、該方法は、
    複数のページテーブルエントリを含むページテーブルにおける変更を検出することであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報と、対応する仮想アドレスページに対するメモリページサイズと、該対応する仮想アドレスページに対するアクセス許可情報とを含む、ことと、
    実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別することによって該検出に応答することと、
    該識別された隣接するページテーブルエントリのいずれかに対する該メモリページサイズの変更が保証されるか否かを決定するために、該識別された隣接するページテーブルエントリを分析することと、
    該識別された隣接するページテーブルエントリの該分析が、該識別された隣接するページテーブルエントリのいずれかの該メモリページサイズの変更が保証されることを決定する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも1つに対する、該メモリページサイズ情報をアップデートすることであって、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもがマップされ得る、最も大きなメモリページサイズに対応する、ことと、
    必要に応じて、該新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも1つに対応する、トランスレーションルックアサイドバッファの1つ以上のエントリをアップデートすることと
    を包含する、方法。
  38. 処理システムのメモリを管理するための方法を実行するように適応されたソフトウェアコードを備えるストレージ媒体であって、該方法は、
    複数のページテーブルエントリを含むページテーブルにおける変更を検出することであって、該複数のページテーブルエントリの各々は、仮想アドレスを対応する物理アドレスに変換するための情報と、対応する仮想アドレスページに対するメモリページサイズと、該対応する仮想アドレスページに対するアクセス許可情報とを含む、ことと、
    実質的に同一のアクセス許可情報を有する隣接するページテーブルエントリを識別することによって該検出に応答することと、
    該識別された隣接するページテーブルエントリのいずれかに対する該メモリページサイズの変更が保証されるか否かを決定するために、該識別された隣接するページテーブルエントリを分析することと、
    該識別された隣接するページテーブルエントリの該分析が、該識別された隣接するページテーブルエントリのいずれかの該メモリページサイズの変更が保証されることを決定する場合、新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも1つに対する、該メモリページサイズ情報をアップデートすることであって、該新しいメモリページサイズ情報は、該識別された隣接するページテーブルエントリのいずれもがマップされ得る、最も大きなメモリページサイズに対応する、ことと、
    必要に応じて、該新しいメモリページサイズ情報によって、該識別された隣接するページテーブルエントリの少なくとも1つに対応する、トランスレーションルックアサイドバッファの1つ以上のエントリをアップデートすることと
    を包含する、ストレージ媒体。
JP2008176357A 2007-07-12 2008-07-04 可変のページサイズのメモリ編成を実装する処理システム Pending JP2009020881A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/776,967 US7783859B2 (en) 2007-07-12 2007-07-12 Processing system implementing variable page size memory organization

Publications (1)

Publication Number Publication Date
JP2009020881A true JP2009020881A (ja) 2009-01-29

Family

ID=39865540

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008176357A Pending JP2009020881A (ja) 2007-07-12 2008-07-04 可変のページサイズのメモリ編成を実装する処理システム

Country Status (3)

Country Link
US (1) US7783859B2 (ja)
EP (1) EP2017739A1 (ja)
JP (1) JP2009020881A (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011004511A1 (ja) * 2009-07-08 2011-01-13 パナソニック株式会社 アドレス変換装置
JP2011022790A (ja) * 2009-07-15 2011-02-03 Fuji Xerox Co Ltd 情報処理装置及び情報処理プログラム
JP2012113721A (ja) * 2010-11-25 2012-06-14 Samsung Electronics Co Ltd メモリシステム
WO2012095901A1 (ja) * 2011-01-12 2012-07-19 パナソニック株式会社 プログラム実行装置およびコンパイラシステム
JP2012532381A (ja) * 2009-07-01 2012-12-13 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 凝集された小さいページを用いて拡張されたページサイズ
JP2016522503A (ja) * 2013-05-29 2016-07-28 華為技術有限公司Huawei Technologies Co.,Ltd. 物理アドレスを判定するための方法及び装置
JP2022515541A (ja) * 2018-12-31 2022-02-18 マイクロン テクノロジー,インク. ストレージデバイスにおけるシーケンシャルデータ最適化サブリージョン

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9753860B2 (en) 2012-06-14 2017-09-05 International Business Machines Corporation Page table entry consolidation
US9092359B2 (en) 2012-06-14 2015-07-28 International Business Machines Corporation Identification and consolidation of page table entries
US9811472B2 (en) 2012-06-14 2017-11-07 International Business Machines Corporation Radix table translation of memory
US9058268B1 (en) * 2012-09-20 2015-06-16 Matrox Graphics Inc. Apparatus, system and method for memory management
US20170046274A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Efficient utilization of memory gaps
US9846553B2 (en) * 2016-05-04 2017-12-19 Exablox Corporation Organization and management of key-value stores
US10474458B2 (en) 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
GB2570474B (en) * 2018-01-26 2020-04-15 Advanced Risc Mach Ltd Region fusing
GB2579034B (en) * 2018-11-15 2021-05-05 Trustonic Ltd Software installation method
EP3938914B1 (en) 2019-03-15 2024-10-09 INTEL Corporation Dynamic memory reconfiguration
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
KR20210135999A (ko) 2019-03-15 2021-11-16 인텔 코포레이션 시스톨릭 어레이에서 블록 희소 작업을 위한 아키텍처
US20220114108A1 (en) 2019-03-15 2022-04-14 Intel Corporation Systems and methods for cache optimization
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
US11663746B2 (en) 2019-11-15 2023-05-30 Intel Corporation Systolic arithmetic on sparse data

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000276404A (ja) * 1999-03-29 2000-10-06 Nec Corp 仮想記憶装置および仮想記憶方法、並びに記録媒体
JP2001501758A (ja) * 1996-09-30 2001-02-06 シーラス ロジック,インコーポレイテッド 連続するメモリのバッファを獲得し、ページテーブルを構築する方法
JP2002132581A (ja) * 2000-10-25 2002-05-10 Mitsubishi Electric Corp メモリ管理機構
US20040117594A1 (en) * 2002-12-13 2004-06-17 Vanderspek Julius Memory management method
US20040215918A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Method, apparatus and computer program product for dynamically minimizing translation lookaside buffer entries across contiguous memory
WO2006099633A2 (en) * 2005-03-17 2006-09-21 Qualcomm Incorporated Method and system for optimizing translation lookaside buffer entries
WO2006106428A2 (en) * 2005-04-07 2006-10-12 Ati Technologies, Inc Method and apparatus for fragment processing in a vitual memory system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5752275A (en) 1995-03-31 1998-05-12 Intel Corporation Translation look-aside buffer including a single page size translation unit
US5918250A (en) * 1995-05-05 1999-06-29 Intel Corporation Method and apparatus for preloading default address translation attributes
US5725275A (en) * 1997-01-16 1998-03-10 Wigfall; Lenora Chair for disabled
US20020169936A1 (en) * 1999-12-06 2002-11-14 Murphy Nicholas J.N. Optimized page tables for address translation
US20080104362A1 (en) * 2006-10-25 2008-05-01 Buros William M Method and System for Performance-Driven Memory Page Size Promotion

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001501758A (ja) * 1996-09-30 2001-02-06 シーラス ロジック,インコーポレイテッド 連続するメモリのバッファを獲得し、ページテーブルを構築する方法
JP2000276404A (ja) * 1999-03-29 2000-10-06 Nec Corp 仮想記憶装置および仮想記憶方法、並びに記録媒体
JP2002132581A (ja) * 2000-10-25 2002-05-10 Mitsubishi Electric Corp メモリ管理機構
US20040117594A1 (en) * 2002-12-13 2004-06-17 Vanderspek Julius Memory management method
US20040215918A1 (en) * 2003-04-24 2004-10-28 International Business Machines Corporation Method, apparatus and computer program product for dynamically minimizing translation lookaside buffer entries across contiguous memory
WO2006099633A2 (en) * 2005-03-17 2006-09-21 Qualcomm Incorporated Method and system for optimizing translation lookaside buffer entries
WO2006106428A2 (en) * 2005-04-07 2006-10-12 Ati Technologies, Inc Method and apparatus for fragment processing in a vitual memory system

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012532381A (ja) * 2009-07-01 2012-12-13 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 凝集された小さいページを用いて拡張されたページサイズ
WO2011004511A1 (ja) * 2009-07-08 2011-01-13 パナソニック株式会社 アドレス変換装置
JP2011022790A (ja) * 2009-07-15 2011-02-03 Fuji Xerox Co Ltd 情報処理装置及び情報処理プログラム
US8352698B2 (en) 2009-07-15 2013-01-08 Fuji Xerox Co., Ltd. Information processing apparatus, information processing method and computer readable medium
JP2012113721A (ja) * 2010-11-25 2012-06-14 Samsung Electronics Co Ltd メモリシステム
WO2012095901A1 (ja) * 2011-01-12 2012-07-19 パナソニック株式会社 プログラム実行装置およびコンパイラシステム
JP5702808B2 (ja) * 2011-01-12 2015-04-15 パナソニック株式会社 プログラム実行装置およびコンパイラシステム
US9501423B2 (en) 2011-01-12 2016-11-22 Socionext Inc. Program execution device and compiler system
JP2016522503A (ja) * 2013-05-29 2016-07-28 華為技術有限公司Huawei Technologies Co.,Ltd. 物理アドレスを判定するための方法及び装置
JP2022515541A (ja) * 2018-12-31 2022-02-18 マイクロン テクノロジー,インク. ストレージデバイスにおけるシーケンシャルデータ最適化サブリージョン
US11755214B2 (en) 2018-12-31 2023-09-12 Micron Technology, Inc. Sequential data optimized sub-regions in storage devices
US12135887B2 (en) 2018-12-31 2024-11-05 Lodestar Licensing Group, Llc Sequential data optimized sub-regions in storage devices

Also Published As

Publication number Publication date
US7783859B2 (en) 2010-08-24
US20090019253A1 (en) 2009-01-15
EP2017739A1 (en) 2009-01-21

Similar Documents

Publication Publication Date Title
US7783859B2 (en) Processing system implementing variable page size memory organization
US7917725B2 (en) Processing system implementing variable page size memory organization using a multiple page per entry translation lookaside buffer
US7793070B2 (en) Processing system implementing multiple page size memory organization with multiple translation lookaside buffers having differing characteristics
US7779214B2 (en) Processing system having a supported page size information register
US6490671B1 (en) System for efficiently maintaining translation lockaside buffer consistency in a multi-threaded, multi-processor virtual memory system
JP5475055B2 (ja) キャッシュされたメモリデータを伴うキャッシュメモリ属性インジケータ
US9489239B2 (en) Systems and methods to manage tiered cache data storage
US7962700B2 (en) Systems and methods for reducing latency for accessing compressed memory using stratified compressed memory architectures and organization
US8122216B2 (en) Systems and methods for masking latency of memory reorganization work in a compressed memory system
US5991847A (en) Data pattern caching for speeding up write operations
JP2020529656A (ja) アドレス変換キャッシュ
MXPA04011270A (es) Limpieza de memoria ociosa de almacenes temporales de memoria de busqueda aparte de traduccion.
JP7443344B2 (ja) 外部メモリベースのトランスレーションルックアサイドバッファ
KR20090108716A (ko) 프로세서의 캐시 폴리시를 설정하기 위한 방법 및 장치
EP3553665B1 (en) Non-volatile memory access method, device, and system
US20150301952A1 (en) Multiplexed memory for segments and pages
US8347064B1 (en) Memory access techniques in an aperture mapped memory space
JPWO2010032433A1 (ja) バッファメモリ装置、メモリシステム及びデータ読出方法
US7237084B2 (en) Method and program product for avoiding cache congestion by offsetting addresses while allocating memory
KR100895715B1 (ko) 메모리 관리 유닛, 메모리 관리 유닛을 포함하는 시스템 및어드레스 변환 방법
KR20210144656A (ko) 비연접 백업 물리적 서브페이지에 가상 페이지를 할당하는 방법
GB2307319A (en) Dual-directory virtual cache
JP4664586B2 (ja) キャッシュ制御装置、キャッシュ制御方法、コンピュータシステム
JP7132491B2 (ja) メモリ制御装置、メモリ制御プログラムおよびメモリ制御方法
CN110362509B (zh) 统一地址转换方法与统一地址空间

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091005

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100329