JP2008041088A - 大容量仮想メモリ・ページにおける保護帯域 - Google Patents
大容量仮想メモリ・ページにおける保護帯域 Download PDFInfo
- Publication number
- JP2008041088A JP2008041088A JP2007198304A JP2007198304A JP2008041088A JP 2008041088 A JP2008041088 A JP 2008041088A JP 2007198304 A JP2007198304 A JP 2007198304A JP 2007198304 A JP2007198304 A JP 2007198304A JP 2008041088 A JP2008041088 A JP 2008041088A
- Authority
- JP
- Japan
- Prior art keywords
- virtual memory
- page
- computer
- memory page
- size
- 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
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/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/652—Page size control
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)
- Storage Device Security (AREA)
Abstract
【課題】 データ処理システムにおいてデータ構造を保護するためのコンピュータにより実施される方法、装置及びコンピュータ使用可能プログラム・コードを提供すること。
【解決手段】 データ処理システムにおいてデータ構造を保護するためのコンピュータにより実施される方法、装置及びコンピュータ使用可能プログラム・コードである。例示的な方法は、データ処理システムと関連した第1の仮想メモリ・ページの部分内に第1の保護アドレス範囲を確立するステップを含む。この部分は、第1の仮想メモリ・ページの全体よりも小さいものである。第1の保護アドレス範囲にアクセスしようとする試みに応答して、格納例外信号が生成される。
【選択図】 図6
Description
本発明は、一般に、改良されたデータ処理システムに関し、具体的には、大容量仮想メモリ・ページを管理することに関する。
多重処理プロセッサ・アーキテクチャにおいては、プログラムを実行し、データを操作するために、物理メモリ及び仮想メモリが用いられる。物理メモリは、コンピュータ・チップ又はハードドライブ上にあるような、純粋に物理デバイスの形態のメモリを指す。ここで用いられる物理メモリは、主として、ダイナミック・ランダム・アクセス・メモリ(DRAM)及びスタティック・ランダム・アクセス・メモリ(SRAM)のようなチップ・ベースのメモリを指すが、ハードドライブのような他の形態の物理メモリを指すこともできる。仮想メモリ又は仮想メモリ・アドレッシングは、非連続メモリが、連続メモリとしてソフトウェア・アプリケーションに提示される、マルチタスク式コンピュータ・オペレーティング・システムによって用いられるメモリ管理技術である。この連続メモリは、仮想アドレス空間と呼ばれる。仮想メモリにより、ソフトウェアが、そのサイズ及びアドレッシングが必ずしもコンピュータの物理メモリに結び付けられていないメモリ・アドレス空間において動作することが可能になる。このように、仮想メモリは、コンピュータの揮発性メモリ(ランダム・アクセス・メモリのような)内に含まれるデータの一部を、一時的にハードディスク上に格納することを可能にし、より多くのデータ及びプログラムが同時に動作することを可能にする。仮想メモリがなければ、コンピュータは、同時に多くのプログラムを動作させたり、又は多くのデータを保持したりすることができない。
幾つかのプロセッサ・アーキテクチャにおいては、物理メモリ及び仮想メモリの両方を、メモリ・ページとして知られるデータ構造に論理的に分割することができる。物理メモリ・ページは、物理メモリ内のメモリ・ページであり、仮想メモリ・ページは、仮想メモリ内のメモリ・ページである。いずれの種類のメモリ・ページも、これに関連付けられたページ・テーブル・エントリ(PTE)を有する。ページ・テーブル・エントリは、仮想ページ番号を物理ページ番号にマッピングするのを可能にするデータを含む。ページ・テーブルは、ページ・テーブル・エントリの集まりである。ページ・テーブル・エントリは、プロセッサが、メモリ・ページが配置された場所を追跡することを可能にし、プロセッサは、必要に応じて又は要求に応じて、データにアクセスできるようになる。メモリ・ページ及びページ・テーブル・エントリの正確な構成及びコンテンツは、変わり得る。
幾つかのプロセッサ・アーキテクチャにおいては、仮想ページ番号と物理ページ番号の間の変換が、ページ・テーブル・エントリ内にも含まれる。これらのアーキテクチャにおいて、特定の仮想アドレスの変換が要求されると、プロセッサは、ページ・テーブルを検索する。
しかしながら、ページ・テーブル全体へのアクセス及び検索には、相対的に時間がかかることがある。したがって、ページ・テーブル・エントリをキャッシュ内に格納することが可能である。幾つかのプロセッサ・アーキテクチャにおいては、ページ・テーブル・エントリは、変換索引バッファ(translation lookaside buffer、TLB)として知られるキャッシュ内に格納される。ページ・テーブル・エントリは、仮想メモリ・ページ毎に1つ割り当てられるので、ページ・サイズがより大きいほど、ページ・テーブル・エントリ毎に、より多くのデータを変換することが可能になる。「より大容量の」という用語は、多くの周知のより小容量のページ・サイズに対して、ページのメモリ・サイズを記述する相対的な用語である。「大容量の」ページ・サイズは、約千キロバイトより大きいサイズを有するものであるが、一般的に、「大容量の」ページは、16メガバイト又はそれより大きいものである。「小容量の」又は「より小容量の」ページ・サイズは、約千キロバイトより小さいものであるが、一般的に、「小容量の」又は「より小容量の」ページ・サイズは、僅か数キロバイト又はそれより小さいものである。したがって、より大容量のページは、キャッシュ内で所望のページ・テーブル・エントリを首尾よく見つける可能性を高くすることによって、大量のデータにアクセスするというプログラムの性能上の利益を提供することができる。
さらに、特定のクラスのアプリケーションは、プロセッサの仮想アドレス空間における有効データ・ページの間に「保護ページ」を配置することから恩恵を受ける。プログラムが有効ページを超えてメモリにアクセスしようと試みる場合には、保護ページにより、プロセッサ格納例外を介して、アプリケーションに通知することが可能になる。保護ページの周知の用途は、データ・ストレージ装置において、重要なデータ構造を保護することである。
大容量のメモリ・ページを保護ページとして用いることもできる。しかしながら、実際には、保護されるデータ構造のために数キロバイトしか必要とせず、大容量のメモリ・ページが何メガバイトも消費することがあるので、大容量のメモリ・ページを保護ページとして用いない。言い換えれば、使用されるデータ・ページ上のデータ構造が小さくなる傾向があるので、大容量データ・ページの残りの部分が無駄になる。その結果、このクラスのアプリケーションを用いるとき、膨大なメモリが無駄になる。このため、小容量のメモリ・ページだけが保護ページとして用いられる。しかしながら、上述したように、小容量のメモリ・ページは、大容量のメモリ・ページの性能を有してはいない。
説明に役立つ例は、データ処理システムにおいてデータ構造を保護するためのコンピュータにより実施される方法、装置及びコンピュータ使用可能プログラム・コードを提供する。例示的な方法は、データ処理システムと関連した第1の仮想メモリ・ページの部分内に第1の保護アドレス範囲を確立するステップを含む。この部分は、第1の仮想メモリ・ページの全体よりも小さい。第1の保護アドレス範囲にアクセスしようとする試みに応答して、格納例外信号が生成される。
本発明の特性と考えられる新規な特徴が、特許請求の範囲に記載される。しかしながら、本発明自体、並びに、その好ましい使用形態、更なる目的及び利点は、添付図面と併せて読むとき、例証となる実施形態に関する以下の詳細な説明を参照することによって最も良く理解されるであろう。
ここで図面、特に図1を参照すると、例証となる実施形態を実装することができるデータ処理システムの図形的な表現が示される。システム・ユニット102と、ビデオ表示端末装置104と、キーボート106と、フロッピィ・ドライブ及び他のタイプの永続ストレージ媒体及び取り外し可能なストレージ媒体を含むことができるストレージ装置108と、マウス110とを含むコンピュータ100が、示される。パーソナル・コンピュータ100には、例えば、ジョイスティック、タッチパッド、タッチスクリーン、トラックボール、マイク等といった付加的な入力デバイスを含ませることもできる。コンピュータ100は、ニューヨーク州アーモンク所在のInternational Business Machines Corporationの製品である、IBM(IBM Corporationの商標および登録商標)eServer(IBM Corporationの商標)コンピュータ、又はIntelliStation(IBM Corporationの商標および登録商標)コンピュータのような、いずれかの好適なコンピュータとすることができる。示される図は、パーソナル・コンピュータを示しているが、ネットワーク・コンピュータのような他のタイプのデータ処理システムにおいて、他の実施形態を実装することができる。コンピュータ100は、コンピュータ100内で動作中のコンピュータ可読媒体に常駐しているシステム・ソフトウェアを用いて実装することができる、グラフィカル・ユーザ・インターフェース(GUI)を含むことも好ましい。
ここで図2を参照すると、例証となる実施形態を実装することができるデータ処理システムのブロック図が示される。データ処理システム200は、例証となる実施形態のためのプロセスを実施するコード又は命令を配置することができる、図1のコンピュータ100のようなコンピュータの一例である。示される例においては、データ処理システム200は、ノースブリッジ及びメモリ・コントローラ・ハブ(NB/MCH)202と、サウスブリッジ及び入力/出力(I/O)コントローラ・ハブ(ICH)204とを含むハブ・アーキテクチャを用いる。プロセッサ206、メイン・メモリ208及びグラフィックス・プロセッサ210は、ノースブリッジ及びメモリ・コントローラ・ハブ202に接続される。グラフィックス・プロセッサ210は、例えば、アクセラレーテッド・グラフィックス・ポート(AGP)を通してMCHに連結することができる。
示される例において、ローカル・エリア・ネットワーク(LAN)アダプタ212が、サウスブリッジ及びI/Oコントローラ・ハブ204に接続されており、音声アダプタ216、キーボード及びマウス・アダプタ220、モデム222、読み取り専用メモリ(ROM)224、ユニバーサル・シリアルバス(USB)ポート及び他の通信ポート232、並びにPCI/PCIeデバイス234が、バス238を通して、サウスブリッジ及びI/Oコントローラ・ハブ204に連結されており、ハードディスク・ドライブ(HDD)226及びCD−ROMドライブ230が、バス240を通して、サウスブリッジ及びI/Oコントローラ・ハブ204に連結される。PCI/PCIeデバイスは、例えば、イーサネット・アダプタ、アドイン・カード、及びノートパソコンのためのPCカードを含むことができる。PCIは、カード・バス・コントローラを用いるが、PCIeはこれを用いない。ROM224は、例えば、フラッシュ・バイナリ入力/出力システム(BIOS)とすることができる。ハードディスク・ドライブ226及びCD−ROMドライブ230は、例えば、integrated drive electronics(IDE)又はserial advanced technology attachment(SATA)インターフェースを用いることができる。スーパーI/O(SIO)装置236をサウスブリッジ及びI/Oコントローラ・ハブ204に連結することもできる。
オペレーティング・システムは、プロセッサ206上で動作し、図2のデータ処理システム200内の種々のコンポーネントを調整し、これらを制御する。オペレーティング・システムは、Microsoft(登録商標) Windows(登録商標) XPのような市販のオペレーティング・システムとすることができる(Microsoft及びWindowsは、米国、その他の国々、又はその両方におけるMicrosoft Corporationの商標である)。Java(商標)プログラミング・システムのようなオブジェクト指向プログラミング・システムが、オペレーティング・システムとの組み合わせで実行することができ、データ処理システム200上で実行されているJavaプログラム又はアプリケーションからオペレーティング・システムへの呼び出しを行う(Java及び全てのJavaベースの商標は、米国、その他の国々、又はその両方におけるSun Microsystems,Inc.の商標である)。
オペレーティング・システム、オブジェクト指向プログラミング・システム、及びアプリケーション又はプログラムに対する命令は、ハードディスク・ドライブ226のようなストレージ装置上に配置され、プロセッサ206による実行のために、メイン・メモリ208内にロードすることができる。例証となる実施形態のプロセスは、例えば、メイン・メモリ208、読み取り専用メモリ224等のメモリ内に、或いは1つ又は複数の周辺機器内に配置することができるコンピュータにより実施される命令を用いて、プロセッサ206により実行することができる。
図1及び図2のハードウェアは、実施に応じて変えることができる。フラッシュメモリ、等価な不揮発性メモリ、或いは光ディスク・ドライブ等のような他の内部ハードウェア又は周辺機器を、図1及び図2に示されるハードウェアに加えて又はこれらの代わりに用いることができる。また、例証となる実施形態のプロセスは、マルチプロセッサ・データ処理システムに適用することもできる。
幾つかの例示的な例においては、データ処理システム200は、一般に、オペレーティング・システム・ファイル及び/又はユーザが生成したデータを格納するための不揮発性メモリを提供するように、フラッシュメモリを用いて構成されたパーソナル・デジタル・アシスタント(PDA)としてもよい。バス・システムは、システム・バス、I/Oバス及びPCIバスなどの1つ又は複数のバスから構成されてもよい。勿論、ファブリック又はアーキテクチャに接続された異なるコンポーネント又はデバイス間でデータを転送するいずれかのタイプの通信ファブリック又はアーキテクチャを用いて、バス・システムを実装することもできる。通信ユニットは、モデム又はネットワーク・アダプタなどの、データの送受信に用いられる1つ又は複数のデバイスを含むことができる。メモリは、例えば、ノースブリッジ及びメモリ・コントローラ・ハブ202内に見出されるようなメイン・メモリ208又はキャッシュとすることができる。処理ユニットは、1つ又は複数のプロセッサ又はCPUを含むことができる。図1及び図2に示される例及び上述の例は、アーキテクチャ上の制限を意味するものではない。例えば、データ処理システム200は、PDAの形態を取ることに加えて、タブレット型コンピュータ、ラップトップ型コンピュータ、又は電話装置とすることもできる。
示される実施形態は、ソース・コードをコンパイルするための、コンピュータにより実施される方法、装置及びコンピュータ使用可能プログラム・コードを提供する。説明に役立つ例における方法は、図1に示されるデータ処理システム100又は図2に示されるデータ処理システム200のようなデータ処理システムにおいて実行することができる。
例証となる実施形態は、図1に示されるデータ処理システム100又は図2に示されるデータ処理システム200のようなデータ処理システムにおいてデータ構造を保護するための、コンピュータにより実施される方法、装置及びコンピュータ使用可能プログラム・コードを提供する。例示的な方法は、データ処理システムと関連した第1の仮想メモリ・ページの部分内に第1の保護アドレス範囲を確立することを含む。この部分は、第1の仮想メモリ・ページ全体よりも小さい。したがって、この部分は、第1の仮想メモリ・ページのサイズより小さいサイズを有する。第1の保護アドレス範囲にアクセスしようとする試みに応答して、格納例外信号が生成される。
このように、仮想メモリ・ページは、保護帯域と使用可能帯域に分割されるので、アプリケーションは、保護ページの利益を得ると同時に、大容量のメモリ・ページを用いる利益を得ることもできる。以下により詳細に説明されるように、保護帯域は、メモリ・ページ内の保護アドレス範囲である。対照的に、プログラムが有効ページを超えてメモリにアクセスしようと試みる場合には、保護ページにより、プロセッサ格納例外を介して、アプリケーションに通知することが可能になる。したがって、保護帯域はメモリ・ページ内に存在するのに対して、保護ページはメモリ・ページ全体である。
図3は、例証となる実施形態による、プロセッサ仮想アドレス空間の表現を示すブロック図である。プロセッサ仮想アドレス空間300は、データ処理システムのメモリ内に配置される。例えば、プロセッサ仮想アドレス空間300は、図2のプロセッサ・ユニット206、メイン・メモリ208、又はハードディスク226内に存在することができ、それ自体が図1のデータ処理システム100の表現である。
プロセッサ仮想アドレス空間300は、仮想メモリ・ページ304、仮想メモリ・ページ308及び仮想メモリ・ページ312のような、1つ又は複数の仮想メモリ・ページを含む。背景技術において説明されたように、仮想メモリ・ページは、データ処理システム内の仮想メモリの論理パーティションである。仮想メモリは、非連続メモリが連続メモリとしてソフトウェア・アプリケーションに提示される、マルチタスク式コンピュータ・オペレーティング・システムによって用いられるメモリ管理技術である。
さらに、ページ・テーブル・エントリは、各仮想メモリ・ページの一部である。ページ・テーブル・エントリは、仮想ページ番号を物理ページ番号にマッピングすることを可能にするデータを含む。このように、ページ・テーブル・エントリ306は仮想メモリ・ページ304と関連付けられ、ページ・テーブル・エントリ310は仮想メモリ・ページ308と関連付けられ、ページ・テーブル・エントリ314は仮想メモリ・ページ312と関連付けられる。各々の種類のメモリ・ページが、ページ番号をページ・テーブル・エントリにマッピングするページ・テーブル・エントリ(PTE)と関連付けられる。図3に示される矢印で示されるように、プロセッサは、ページ・テーブル・エントリのマッピングを介して異なる仮想メモリ・ページにアクセスすることができ、プロセッサは、別の仮想ページと関連して1つの仮想ページからデータにアクセスできるようになる。
ページ・テーブル302は、プロセッサ仮想アドレス空間300とも関連付けられる。ページ・テーブル302は、ページ・テーブル・エントリの集まりである。ページ・テーブル302は、いずれかの簡便なメモリ位置に配置されたデータ構造内に格納することができる。ページ・テーブル・エントリは、プロセッサが、メモリ・ページが配置された場所を追跡することを可能にし、プロセッサは、必要に応じて又は要求に応じて、データにアクセスできるようになる。メモリ・ページ及びページ・テーブル・エントリの正確な構成及びコンテンツは、実施に応じて変わり得る。
この説明に役立つ例において、仮想ページ番号と物理ページ番号の間の変換は、ページ・テーブル・エントリ内に含まれる。したがって、特定の仮想アドレスについての変換が要求されると、プロセッサは、ページ・テーブル302を検索することができる。
しかしながら、ページ・テーブル全体へのアクセス及び検索には、相対的に時間がかかり得る。したがって、ページ・テーブル・エントリは、キャッシュ316のようなキャッシュ内に格納することができる。幾つかのプロセッサ・アーキテクチャにおいては、ページ・テーブル・エントリは、変換索引バッファ(TLB)として知られるキャッシュ内に格納することができる。図3に示されるように、ページ・テーブル・エントリは、仮想メモリ・ページ毎に1つ割り当てられるので、ページ・サイズがより大きいほど、ページ・テーブル・エントリ毎に、より多くのデータを変換することが可能になる。したがって、より大容量のページは、キャッシュにおいて所望のページ・テーブル・エントリを首尾よく見つける可能性を高くすることによって、大量のデータにアクセスするというプログラムの性能上の利益を提供することができる。
「より大容量の」という用語は、多くの周知のより小容量のページ・サイズに対して、ページのメモリ・サイズを記述する相対的な用語である。「大容量の」ページ・サイズは、約千キロバイトより大きいサイズを有するものであるが、一般的に、「大容量の」ページは、16メガバイト又はそれより大きいものである。「小容量の」又は「より小容量の」ページ・サイズは、約千キロバイトより小さいものであるが、一般的に、「小容量の」又は「より小容量の」ページ・サイズは、僅か数キロバイト又はそれより小さいものである。
図4は、例証となる実施形態による、仮想ページ番号を実ページ番号に変換する図を示すブロック図である。図4に示されるプロセスは、図3のプロセッサ仮想アドレス空間300において実施することができ、図1のデータ処理システム100又は図2のデータ処理システム200において確立される。キャッシュ404は、図3のキャッシュ316に対応し、ページ・テーブル406は、図3のページ・テーブル302に対応する。
示される例示的な例においては、プロセッサは、所望の仮想メモリ・ページにアクセスするために、仮想ページ番号400を実ページ番号402に変換するように命令される。プロセッサは、ページ・テーブル406又はキャッシュ404のいずれかを用いて、このタスクを達成することができる。ページ・テーブル406は、全ての仮想ページ番号及び全ての実ページ番号を含む、全てのページ・テーブル・エントリ及びページ番号の完全なリストを含む。プロセッサは、変換を行うために、常にページ・テーブル406を使用できなくてはならないが、ページ・テーブル406の検索に必要な時間が、希望するより長いことがある。
このため、データ処理システムに、キャッシュ404が与えられる。例示的な例においては、キャッシュ404は、変換索引バッファ(TLB)として知られる。キャッシュ404は、最近用いられた全てのページ・テーブル・エントリを、よって、ページ番号を含む。他の例示的な例においては、キャッシュ404は、一般的なページ・テーブル・エントリ及びページ番号を含む。他の例示的な例においては、キャッシュ404は、選択されたページ・テーブル・エントリ及びページ番号を含む。更に他の例示的な例においては、キャッシュ404は、これらのタイプの情報の組み合わせを含むことができる。
いずれにせよ、キャッシュ404は、ページ・テーブル406より少ない、通常はずっと少ないページ・テーブル・エントリ及びページ番号を含む。その結果、プロセッサがキャッシュ404において仮想ページ番号400及び実ページ番号402を見つけることができる場合には、変換を行うためにページ・テーブル406を用いる場合より、仮想ページ番号400と実ページ番号402の間の変換が、すっと迅速に進むことができる。
図5は、例証となる実施形態による、プロセッサ仮想アドレス空間の表現を示すブロック図である。仮想アドレス空間500は、図3に示される仮想アドレス空間300と類似しているが、仮想アドレス空間500は、保護ページの使用を示す。プロセッサ仮想アドレス空間500は、図3に示されるプロセッサ仮想アドレス空間300に対応する。同様に、図5のページ・テーブル502及びキャッシュ516は、図3のページ・テーブル302及びキャッシュ316に対応する。プロセッサは、ページ・テーブル502及びキャッシュ516を用いて、図4に示されるようなメモリ・アドレス変換を行う。
背景技術において説明されたように、幾つかのアプリケーションは、プロセッサの仮想アドレス空間内の有効なデータ・ページ間に「保護ページ」を配置することから恩恵を受ける。プログラムが、有効ページを超えてメモリにアクセスしようと試みる場合には、保護ページが、プロセッサ格納例外を介して、アプリケーションに通知することを可能にする。保護ページの周知の用途は、データ・ストレージ装置において重要なデータ構造を保護することである。
図5に示される説明に役立つ例においては、保護仮想メモリ・ページ508が、データ仮想メモリ・ページ504とデータ仮想メモリ・ページ510との間に挿入される。同様に、保護仮想メモリ・ページ514が、データ仮想メモリ・ページ510と他の何らかの仮想メモリ・ページ(図示せず)との間に挿入される。データ仮想メモリ・ページ504及び510は、プロセッサ仮想アドレス空間500を使用するアプリケーションに関連したデータを含む。データ仮想メモリ・ページ504は、ページ・テーブル・エントリ506を含み、データ仮想メモリ・ページ510は、ページ・テーブル・エントリ512を含む。このように、データ仮想メモリ・ページ504及びデータ仮想メモリ・ページ510は、図3の仮想メモリ・ページ304、308及び312と同じ構造を有する。
保護仮想メモリ・ページ508及び514は、そのアプリケーションが望ましくない方法でプロセッサ仮想アドレス空間500にアクセスするのを防止する。説明に役立つ例においては、アプリケーションが有効ページを超えてメモリにアクセスしようと試みる場合には、保護仮想メモリ・ページ508及び保護仮想メモリ・ページ514がセットアップされ、保護仮想メモリ・ページ508又は保護仮想メモリ・ページ514にアクセスしようと試みるようになる。例においては、有効ページは、例えば、データ仮想メモリ・ページ504又はデータ仮想メモリ・ページ510とすることができる。しかしながら、アプリケーションは、保護仮想メモリ・ページにアクセスすることができない。このように、アプリケーションが有効な仮想メモリ・ページを超えてメモリにアクセスしようと試みる場合には、プロセッサは、格納例外信号をアプリケーションに送信する。次いで、アプリケーションは、そうした障害又はエラーを処理するようにアプリケーションがプログラムされたどのような方法でも、その障害又はエラーを処理する。このように、アプリケーションが、データ・ストレージ装置内の重要なデータ構造にアクセスするのを防止することができる。
保護仮想メモリ・ページ508及び514は、大容量仮想メモリ・ページとしても、又は小容量仮想メモリ・ページとしてもよい。大容量仮想メモリ・ページは、何メガバイトものデータまでのメモリ量を含むことができる。小容量仮想メモリ・ページは、1メガバイト未満のデータまでのメモリ量を含むことができる。図5に示される説明に役立つ例においては、保護仮想メモリ・ページ508及び保護仮想メモリ・ページ514の代わりに、小容量保護仮想メモリ・ページを使用することが知られている。しかしながら、この場合、データ仮想メモリ・ページ504及びデータ仮想メモリ・ページ510もまた、小容量仮想メモリ・ページである。保護仮想メモリ・ページによって保護されることが必要なデータ構造は、比較的小さく、多数である可能性が高いので、仮想メモリ・ページは、小容量仮想メモリ・ページである。「小容量の」という用語は、約数千キロバイト又はそれより容量が小さいメモリ・ページ又はデータ構造を指す。「小容量の」という用語はまた、上で定義されたような周知の「大容量の」メモリ・ページより容量が小さいデータ構造であるメモリ・ページを指すこともできる。
それにも関わらず、大容量のメモリ・ページを保護ページとして使用することも可能である。しかしながら、場合によっては、保護されるデータ構造のために数キロバイトしか必要とされず、大容量のメモリ・ページは何メガバイトも消費することがあるので、大容量のメモリ・ページは保護ページとして使用されない。言い換えると、使用されるデータ・ページのデータ構造は小さくなる傾向があるため、大容量のデータ・ページの残りの部分が無駄になる。その結果、このクラスのアプリケーションを用いるとき、膨大な量のメモリが無駄になる。このため、小容量のメモリ・ページだけが、保護ページとして用いられる。しかしながら、上述のように、小容量のメモリ・ページは、大容量のメモリ・ページの性能を有してはいない。
図6は、例証となる実施形態による、保護帯域が実装されるプロセッサ仮想アドレス空間の表現を示すブロック図である。プロセッサ仮想アドレス空間600が、多数の仮想メモリ・ページを含み、かつ、ページ・テーブル及びキャッシュと関連付けられているという点で、プロセッサ仮想アドレス空間600は、図3のプロセッサ仮想アドレス空間300及び図5のプロセッサ仮想アドレス空間500と類似している。
具体的には、プロセッサ仮想アドレス空間600は、仮想メモリ・ページ604、仮想メモリ・ページ606及び仮想メモリ・ページ608を含むが、より多くの仮想メモリ・ページを含むことができる。同様に、プロセッサ仮想アドレス空間600は、ページ・テーブル602及びキャッシュ614と関連付けられる。ページ・テーブル602は、図5のページ・テーブル502及び図3のページ・テーブル302と類似している。同様に、キャッシュ614は、図5のキャッシュ516及び図3のキャッシュ316と類似している。したがって、ページ・テーブル602及びキャッシュ614の動作は、図5に示される対応する動作に類似している。
しかしながら、図3及び図5に示される仮想メモリ・ページとは異なり、仮想メモリ・ページ604、606及び608の各々は、交互する使用可能なアドレス範囲と保護アドレス範囲からできた多数の領域にセグメント化されている。仮想メモリ・ページ内の使用可能アドレス範囲が、使用可能アドレス範囲610のような、図6の文字「U」で示される。使用可能アドレス範囲は、使用可能帯域と呼ぶこともできる。仮想メモリ・ページ内の保護アドレス範囲は、保護アドレス範囲612のような、図6の文字「G」で示される。保護アドレス範囲は、保護帯域と呼ぶこともできる。対照的に、プログラムが有効ページを超えてメモリにアクセスしようと試みる場合には、保護ページが、プロセッサ格納例外を介して、アプリケーションに通知することを可能にする。したがって、保護帯域はメモリ・ページ内に存在するのに対して、保護ページはメモリ・ページ全体である。
各使用可能アドレス範囲は、アプリケーションがアクセスできるデータを格納するための領域を提供する。しかしながら、アプリケーションが、保護アドレス範囲の1つにアクセスしようと試みる場合には、プロセッサは、格納例外信号をアプリケーションに送信する。アプリケーションは、アプリケーションのプログラミングに従って、例外又は障害を処理する。
図6に示される説明に役立つ例においては、仮想メモリ・ページ604、606及び608の各々は大容量仮想メモリ・ページであるが、それらを小容量仮想メモリ・ページとすることもできる。上述のように、仮想メモリ・ページ604、606及び608は大容量のものなので、データ処理システムは、大容量仮想メモリ・ページを使用する性能上の利点から恩恵を受ける。しかしながら、大容量仮想メモリ・ページ内の保護アドレス範囲は、アプリケーションが誤ってデータにアクセスするのを防止するので、プロセッサ仮想アドレス空間600において保護仮想メモリ・ページが用いられていなくても、データ処理システムは、保護仮想メモリ・ページを使用する利益を得る。
帯域のサイズすなわちアドレス範囲のサイズが、典型的な小容量仮想メモリ・ページのサイズと同じになるように選択された場合には、アプリケーションは、保護帯域を有する大容量仮想メモリ・ページを、図5に示されるような小容量データ仮想メモリ・ページ及び保護仮想メモリ・ページのグループと区別することができない。したがって、アプリケーションは、図5の仮想アドレス空間の構成を用いる利益の全てを獲得し、図6に示されるような大容量仮想メモリ・ページを使用する利益の全ても獲得する。
他の説明に役立つ例においては、使用可能アドレス範囲及び保護アドレス範囲の帯域のサイズすなわちアドレス範囲のサイズは可変のものであり、アプリケーション又はユーザによる要求で、プロセッサにより設定することができる。メモリ管理システムを管理するオペレーティング・システム、又はソフトウェア、或いはハードウェアが、各大容量仮想メモリ・ページにおける使用可能なデータ・アドレス範囲及び保護アドレス範囲のサイズを構成することを、アプリケーションが要求する。対照的に、現在の保護仮想メモリ・ページは、利用可能なページ・サイズに制限される。したがって、大容量仮想メモリ・ページにおいて保護帯域を使用することにより、以前には存在しなかった柔軟性がアプリケーションに与えられる。
図7乃至図11は、大容量仮想メモリ・ページにおいて保護帯域又は保護アドレス範囲を実装する方法を詳細に示す。図7は、例証となる実施形態による、有効アドレス表現を示すブロック図である。有効アドレスは、データ処理システムにおけるメモリ部分の相対的な位置を表す。例証となる実施形態においては、この部分のサイズは、メモリ自体のサイズより小さい。有効アドレスは、実メモリ・アドレス又は仮想メモリ・アドレスについてのアドレスとすることができる。図7に示される有効アドレスは、図3及び図5に関して記載されたような、仮想メモリ・ページと関連したページ・テーブル・エントリの一部として含ませることができる。
有効アドレス700は、セグメント702、ページ番号704及びページ・オフセット706のような3つの部分を含むことができる。この説明に役立つ例においては、有効アドレス700は、64ビットのアドレスであるが、異なるサイズのものにすることもできる。セグメント702は、特定のメモリ位置のアドレス番号を含む。ページ番号704は、特定のメモリ位置と関連した仮想メモリ・ページに関するデータを含む。ページ・オフセット706は、特定のメモリ位置を追跡し、操作する際に使用する他の情報を含む。図4に関して記載されたようなキャッシュ又はページ・テーブルを用いて、プロセッサは、図7の有効アドレス700を、図8に示される物理アドレス800に変換する。
図8は、例証となる実施形態による、物理アドレスの表示に変換された、図7に示される有効アドレスのブロック図である。物理アドレス800は、物理メモリ・システムにおけるメモリの特定部分の相対的な位置を表す。物理アドレス800は、物理ページ・アドレス802及びページ・オフセット804を含む。物理ページ・アドレス802は、物理メモリの特定部分のアドレス番号を含む。ページ・オフセット804は、変換の際に変わらないので、ページ・オフセット804は、図7に示されるページ・オフセット706と同じである。
図9は、例証となる実施形態による、物理アドレスにおけるページ・オフセット表現を示すブロック図である。したがって、図9に示されるページ・オフセット900は、図8のページ・オフセット804及び図7のページ・オフセット706に対応する。示される説明に役立つ例においては、仮想メモリ・ページは、16メガバイトのサイズを有し、ページ・オフセット706は、このサイズの仮想メモリ・ページについての典型的な24ビットのサイズを有する。したがって、図9は、ページ・オフセット900において利用可能な24ビットの各々を示し、ここで各ビットは、ビット0からビット23まで表記される。セル902のような、任意の特定のセルは、1ビットである。
図10は、例証となる実施形態による、物理アドレスにおけるページ・オフセット表現を示すブロック図である。ページ・オフセット1000は、図9のページ・オフセット900、図8のページ・オフセット804及び図7のページ・オフセット706に対応する。しかしながら、セル1002内のビット(セル12)は、1の値を有するように設定される。セル1002の値は1又は0にしかすることができないので、1の値は「真」と呼ぶことができる。したがって、0の値は「偽」と呼ぶことができる。
この説明に役立つ例においては、有効アドレス700は、使用可能アドレス範囲上か、又は保護アドレス範囲上のいずれかにある。プロセッサは、ビットマスクを用いて、有効アドレス700が使用可能アドレス範囲上にあるか又は保護アドレス範囲上にあるかを判断することができる。
ビットマスクは、演算と共に、他の場所に格納された情報を抽出するために用いられる何らかのデータである。ビットマスクを用いて、例えば、2進列又は2進数における特定のビットの状態を抽出することができる。例えば、2進列100111010において、ユーザが、最上位のビットから数えて5番目のビットの状態を抽出することを望む。000010000のようなビットマスクは、「AND」演算子と共に用いることができる。1「AND」1=1であり、1「AND」0は0であることを想起すると、第5のビットの状態を判断することができる。この場合、ビットマスクは、第1の2進列における第5のビットの値を抽出し、その値は数「1」である。
説明に役立つ例を続けると、プロセッサは、保護ビットマスクと呼ぶことができるビットマスクを用いて、ページ・オフセット900内のセル1002の状態を判断する。セル1002が「真」である場合、すなわち「1」の値を有する場合、有効アドレス700が使用可能アドレスとなるように、保護ビットマスク及びページ・オフセット900が選択され、設計される。例えば、プロセッサは、「AND」演算を用いて、ページ・オフセット900を保護ビットマスクと比較する。比較の結果が、「真」の値を有するセル1002をもたらす場合には、アドレス700は、使用可能範囲内にある。しかしながら、比較の結果が、「偽」すなわち「0」の値を有するセル1002をもたらす場合には、アドレス範囲は、保護アドレス範囲内にある。この場合、プロセッサは、格納例外をアプリケーションに送り、保護アドレス範囲内にアクセスしようと試みる。
図11は、例証となる実施形態による、使用可能帯域と保護帯域にセグメント化された大容量の仮想ページのブロック図である。大容量仮想メモリ・ページ1100は、帯域1102及び帯域1104のような多数の帯域を含む。各帯域は、大容量仮想メモリ・ページ1100内のメモリの部分を表す。例証となる実施形態において、部分のサイズは、仮想メモリ・ページ1100のサイズより小さい。各帯域は、図7に示される有効アドレス700のような、1つ又は複数の有効アドレスと関連付けられた。示される例証となる例においては、大容量仮想メモリ・ページ1100は、交互する使用可能帯域と保護帯域に分割される。例えば、帯域1102は使用可能帯域であり、帯域1004は保護帯域である。
アプリケーションがアクセスしようと試みるアドレスを用いて「AND」演算を実行することにより、大容量仮想メモリ・ページ1100を、示されるような使用可能帯域と保護帯域に分割することができる。各アドレスのページ・オフセットが使用可能帯域にある場合には、アプリケーションは、対応するメモリの部分にアクセスすることができる。他方、上述のように、アドレスのページ・オフセットが保護帯域にある場合には、プロセッサが、格納例外信号を送信する。このように、大容量仮想メモリ・ページ1100を、示されるような保護帯域と仮想帯域に分割することができる。同様に、図6に示される大容量仮想メモリ・ページ604、606、608、並びに、図3及び図5に示される大容量仮想メモリ・ページも、保護帯域と使用可能帯域に分割することができる。
異なるように説明すると、帯域に関する情報をアドレスのセグメント・レベルに格納し、有効アドレスから実アドレスへのマッピングを生成する機構に伝搬することができる。保護帯域にある有効アドレスが変換のために提示された場合には、その有効アドレスは、「AND」演算を用いて、保護ビットマスクと比較される。保護ビットマスク内に単一のビットが存在する。比較の結果が「真」である場合には、格納例外が生成され、そのメモリ領域にアクセスしようとしているアプリケーションに伝達される。比較の結果が「偽」である場合には、そのアドレスは使用可能帯域内にあり、アプリケーションは、有効アドレスに対応するメモリの部分にアクセスすることができる。
有効アドレスのページ・オフセットにおいて選択された特定のビットは、所望のサイズの保護帯域及び使用可能帯域を設定する。したがって、大容量仮想メモリ・ページ内の保護帯域及び使用可能帯域のサイズは、保護帯域特性を用いて、ユーザ、プロセッサ、オペレーティング・システム、又はアプリケーションによって変更し、変えることができる。例えば、4キロバイトの帯域サイズを所望する場合には、保護ビットマスク内のビット12は、「1」の値を有するように設定される。
帯域が保護帯域であるか又は使用可能帯域であるかを判断する方法は、上述された方法とは変わり得る。この判断を行うための別の説明に役立つ例は、ビットマスクを用いて全てのアクセスをメモリと比較し、比較する直前にビットマスクを設定することである。別の説明に役立つ例は、周知の保護帯域においてビットマスク比較を行うことである。
説明に役立つ例においては、保護帯域のサイズは、従来の小容量のメモリ・ページの倍数に等しいサイズに制限される。保護帯域のアドレス範囲にアクセスできなくても、仮想メモリ・ページは、物理メモリにおいて連続している。したがって、メモリは、保護帯域のアドレス範囲において無駄になる。しかしながら、保護帯域のサイズが、既存の小容量仮想メモリ・ページのサイズの倍数である場合には、他の場合には無駄になる物理メモリを、より小容量の仮想メモリ・ページとしてマッピングすることができる。このように、保護帯域のサイズが小容量のメモリ・ページのサイズの整数倍である場合には、付加的なメモリの無駄は生じない。
図12は、例証としての実施形態による、データ処理システムにおけるメモリ・アクセスを示すフローチャートである。図12に示されるプロセスは、図1のデータ処理システム100及び図2のデータ処理システム200のような、データ処理システムにおいて実施することができる。図12に示されるプロセスはまた、図5に示されるプロセッサ仮想アドレス空間500のような、保護仮想メモリ・ページを有するプロセッサ仮想アドレス空間に対しても実施することができる。さらに、実ページ番号への仮想ページ番号の変換は、図4に説明されるように達成することができる。図2のプロセッサ206のようなプロセッサが、変換を行うこともできる。
プロセスは、ソフトウェア・アプリケーションが、特定の有効アドレスに配置されたメモリの部分からデータのロードを開始しようと試みるときに始まる(ステップ1202)。プロセッサは、仮想アドレスである有効アドレスを物理アドレスに変換し始める(ステップ1204)。その変換プロセスの一部として、プロセッサは、有効アドレス及び物理アドレスについてのページ・テーブル・エントリを見つける(ステップ1206)。
次いで、プロセッサは、保護ページ・ビットについてのエントリが存在するかどうかを判断する(ステップ1208)。保護ページ・ビットについてのエントリが存在しないという判断に応答して、プロセッサは、仮想アドレスから物理アドレスへの変換を完了する(ステップ1210)。次いで、ソフトウェア・アプリケーションは、物理アドレス内のメモリの部分にアクセスし(ステップ1212)、その後、プロセスは終了する。
保護ページ・ビットについてのエントリが存在するという判断に応答して、プロセッサは、有効アドレスを保護レジスタと比較する(ステップ1214)。比較が「真」の結果を有する場合には、アクセスされた仮想メモリ・ページは、使用可能な仮想メモリ・ページである。その結果、プロセスは、上述されたようなステップ1210及び1212に続く。
これに対して、ステップ1214における比較が「偽」の結果を有する場合には、プロセッサは格納例外を生成し、仮想メモリ・ページにアクセスしようと試みているソフトウェア・アプリケーションに、例外信号すなわちページ・フォールト信号を送信する(ステップ1216)。その時点で、ソフトウェア・アプリケーションは、そのプログラミングに応じてページ・フォールトを処理し(ステップ1218)、その後、プロセスは終了する。
図13は、例証としての実施形態による、保護帯域を用いるデータ処理システムにおけるメモリ・アクセスを示すフローチャートである。図13に示されるプロセスは、図1のデータ処理システム100及び図2のデータ処理システム200などのデータ処理システムにおいて実施することができる。図13に示されるプロセスはまた、図6に示されるプロセッサ仮想アドレス空間600又は図3に示されるプロセッサ仮想アドレス空間300のようなプロセッサ仮想アドレス空間に対して実施することもできる。さらに、実ページ番号への仮想ページ番号の変換は、図4に説明されるように達成することができる。図2のプロセッサ206のようなプロセッサが変換を行うこともできる。したがって、図13は、図6に関して記載されたような、保護帯域を用いる方法を表す。図13に示されるプロセスは、種々のプロセッサ・アーキテクチャに適用可能である。
プロセスは、図12のプロセスと同じように始まる。最初に、ソフトウェア・アプリケーションは、特定の有効アドレスに配置されたメモリの部分からデータのロードを開始しようと試みる(ステップ1300)。しかしながら、次に、プロセッサは、その有効アドレスについて有効アドレスから実アドレスへのマッピング(ERAT)が存在するかどうかを判断する(ステップ1302)。その有効アドレスについて有効アドレスから実アドレスへのマッピングが存在するという判断に応答して、ページ・テーブル・エントリにおいて保護ビットが設定されているかどうかについての判断が行われる(ステップ1304)。ページ・テーブル・エントリにおいて保護ビットが設定されていない場合には、プロセッサは、アプリケーションが、物理アドレスにおけるメモリの部分へのアクセスを開始するのを可能にする(ステップ1314)。
しかしながら、ページ・テーブル・エントリにおいて保護ビットが設定されている場合には、プロセッサは、保護ビットマスクを用いて、ページ・オフセットを、有効アドレスのページ・オフセットと比較する(ステップ1316)。比較の結果が「真」である場合には、プロセッサは、その保護ビット状態についての有効アドレスから実アドレスへのマッピング設定をロードする(ステップ1312)。その後、プロセッサは、ソフトウェア・アプリケーションが、メモリの部分へのアクセスを開始するのを可能にし(ステップ1314)、その後、プロセスは終了する。
ステップ1316に戻ると、保護ビットマスクを用いるページ・オフセットの比較結果が「偽」であった場合には、プロセッサは、格納例外すなわちページ・フォールトを生成し、格納例外が生成されたという信号をアプリケーションに送信する(ステップ1318)。ソフトウェア・アプリケーションは、プログラミングに応じて、ページ・フォールトを処理し(ステップ1320)、その後、プロセスは終了する。
ステップ1302に戻ると、プロセッサが、その有効アドレスについての有効アドレスから実アドレスへのマッピングが存在しないと判断した場合には、プロセッサは、有効アドレスすなわち仮想アドレスから物理アドレスへの変換を始める(ステップ1306)。次いで、プロセッサは、ページ・テーブル・エントリを探して物理アドレスを検索する(ステップ1308)。次いで、プロセッサは、有効アドレスについて、ページ・テーブル・エントリにおいて保護ビットが設定されているかどうかについての判断を行う(ステップ1310)。
ページ・テーブル・エントリにおいて保護ビットが設定されていない場合には、プロセッサは、保護ビットの状態についての有効アドレスから実アドレスへのマッピング設定をロードする(ステップ1312)。その後、プロセッサは、ソフトウェア・アプリケーションが、物理アドレスと関連したメモリの部分にアクセスすることを可能にし(ステップ1314)、その後、プロセスは終了する。
他方、ステップ1310において、ページ・テーブル・エントリにおいて保護ビットが設定された場合には、プロセッサは、保護ビットマスクを用いて、ページ・オフセットを有効アドレスのページ・オフセットと比較する(ステップ1316)。比較の結果が「真」である場合には、プロセッサは、その保護ビットの状態についての有効アドレスから実アドレスへのマッピング設定をロードする(ステップ1312)。その後、プロセッサは、ソフトウェア・アプリケーションが、メモリの部分へのアクセスを始めることを可能にし(ステップ1314)、その後、プロセスは終了する。
しかしながら、ステップ1316において、保護ビットマスクを用いるページ・オフセットの比較の結果が「偽」であった場合には、プロセッサは、格納例外すなわちページ・フォールトを生成し、格納例外が生成されたという信号をアプリケーションに送信する(ステップ1318)。ソフトウェア・アプリケーションは、プログラミングに応じてページ・フォールトを処理し(ステップ1320)、その後、プロセスは終了する。
図14は、例証としての実施形態による、仮想メモリ・ページにおける保護アドレス範囲の確立及び使用を示すフローチャートである。図14に示されるプロセスは、図1のデータ処理システム100及び図2のデータ処理システム200などのデータ処理システムにおいて実施することができる。図14に示されるプロセスは、図6に示されるプロセッサ仮想アドレス空間600又は図3に示されるプロセッサ仮想アドレス空間300のようなプロセッサ仮想アドレス空間に対して実施することもできる。図2のプロセッサ206のようなプロセッサが変換を行うこともできる。さらに、実ページ番号への仮想ページ番号の変換は、図4に説明されたように達成することができる。
プロセッサ、アプリケーション、又はユーザが、仮想メモリ・ページ内に保護アドレス範囲を確立するときに、プロセスが始まる(ステップ1400)。アプリケーション、プロセッサ、又は他のソフトウェア、或いはハードウェアが、後でその保護アドレス範囲にアクセスしようと試みる場合には、試みに応答して、プロセッサが、格納例外信号を生成する(ステップ1402)。プロセッサは、格納例外信号を、アプリケーション、又はその保護アドレス範囲にアクセスしようと試みているハードウェアに伝送することができる。アプリケーションはそのプログラミングに応じて格納例外を処理し、ハードウェアはその設計に応じて格納例外を処理する。後に、所望であれば、プロセッサ、アプリケーション、又はユーザは、新しいサイズの保護アドレス範囲を設定すべきかどうかを判断する(ステップ1404)。この判断は、ユーザの要求、又は必要性、或いはアプリケーションの好ましい動作モードに応じて行われる。新しいサイズの保護アドレス範囲が設定された場合には、プロセスは、ステップ1400に戻る。
他方、保護アドレス範囲についての新しいサイズが設定されない場合には、プロセッサは、変換のために、仮想メモリ・ページ内にあるアドレスを提示する(ステップ1406)。アドレスが保護アドレス範囲内にある場合には、プロセッサは、格納例外信号を生成する(ステップ1408)。
次いで、プロセッサは、変換のために付加的なアドレスを提示するかどうかを判断する(ステップ1410)。付加的なアドレスが変換されるべきでない場合には、プロセスは終了する。他方、変換されるべき別のアドレスがある場合には、プロセッサ、アプリケーション、又はユーザは、保護アドレス範囲のサイズを再確立又は変更するかどうかを判断する(ステップ1412)。保護アドレス範囲のサイズが再確立又は変更される場合には、プロセスはステップ1400に戻り、繰り返す。他の場合には、保護アドレス範囲のサイズは再確立又は変更されない場合には、プロセスはステップ1406に戻り、そこで、プロセッサは、変換のために、仮想メモリ・ページ内のアドレスを提示する。次いで、ステップ1410において、プロセスは、最終的に変換のために付加的なアドレスが提示されなくなるまで繰り返し続け、そこでプロセスは終了する。
ここに記載される例証としての実施形態は、データ処理システムにおいてデータ構造を保護するためのコンピュータにより実施される方法、装置及びコンピュータ使用可能プログラム・コードを提供する。例示的な方法は、データ処理システムと関連した第1の仮想メモリ・ページの部分内に第1の保護アドレス範囲を確立するステップを含む。この部分のサイズは、第1の仮想メモリ・ページ全体よりも小さい。第1の保護アドレス範囲にアクセスしようとする試みに応答して、格納例外信号が生成される。
ここに記載される例証としての実施形態は、プロセッサ仮想アドレス空間において保護機能を実施する周知の方法に優る幾つかの利点を有する。例えば、仮想メモリ・ページを保護帯域と使用可能帯域に分割することにより、アプリケーションは、保護仮想メモリ・ページの利益を獲得し、同時に大容量のメモリ・ページを用いる利益を獲得することもできる。言い換えれば、アプリケーションは、プロセッサ仮想アドレス空間において保護仮想メモリ・ページが用いられない場合でも、保護仮想メモリ・ページの利益を獲得することができる。
本発明、全体がハードウェアの実施形態、全体がソフトウェアの実施形態、又は、ハードウェア要素とソフトウェア要素の両方を含む実施形態の形式を取ることができる。好ましい実施形態においては、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むが、これらに限定されるものではないソフトウェアに実装される。
さらに、本発明は、コンピュータ又はいずれかの命令実行システムによって、又はこれらと接続して、用いるためのプログラム・コードを提供するコンピュータ・プログラム又はコンピュータ可読媒体からアクセス可能なコンピュータ・プログラムの形態を取ることができる。この説明のために、コンピュータ可読媒体は、命令実行システム、機器又は装置によって、或いはこれらと接続して、用いるためのプログラムを含み、格納し、通信し、伝搬し、又は転送することが可能ないずれかの有形の装置とすることができる。
媒体は、電子システム、磁気システム、光学システム、電磁気システム、赤外線システム、若しくは半導体システム(又は機器若しくは装置)、又は伝搬媒体とすることができる。コンピュータ可読媒体の例は、半導体メモリ又は固体メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、磁気ハードディスク及び光ディスクを含む。現時点における光ディスクの例は、コンパクトディスク−読み出し専用メモリ(CD−ROM)、コンパクトディスク−読み取り/書き込み(CD−R/W)及びDVDを含む。
プログラム・コードを格納及び/又は実行するのに適したデータ処理システムは、システム・バスを通してメモリ要素に直接的に又は間接的に接続された少なくとも1つのプロセッサを含む。メモリ要素は、プログラム・コードの実際の実行時に使用されるローカル・メモリと、大容量記憶装置と、実行時に大容量記憶装置からコードを取得しなければならない回数を減少させるように少なくとも幾つかのプログラム・コードの一時的な記憶場所を提供するキャッシュ・メモリと、を含むことができる。
入力/出力(I/O)装置(キーボード、ディスプレイ、ポインティング装置などを含むが、これらに限定されるものではない)は、直接的に、又は介在するI/Oコントローラを通して、システムに接続することができる。
データ処理システムが、介在するプライベート・ネットワーク又は公衆ネットワークを通して、データ処理システムを、他のデータ処理システム又は遠隔プリンタ若しくはストレージ装置に接続できるように、ネットワーク・アダプタをシステムに接続することもできる。モデム、ケーブル・モデム及びイーサネット・カードは、現時点で利用可能なごくわずかなタイプのネットワーク・アダプタである。
本発明の説明は、例示及び説明の目的で提示されたものであり、網羅的であること又は開示された形式の発明に限定することを意図するものではない。当業者であれば、多くの修正及び変形が明らかであろう。実施形態は、本発明の原理及び実際の適用を最も良く説明するように、及び、当業者以外であっても、考えられる特定の用途に適合するような様々な修正を伴う様々な実施形態について本発明を理解できるように、選択され、説明されたものである。
100、200:データ処理システム
300、500、600:プロセッサ仮想アドレス空間
302、406、502、602:ページ・テーブル
304、308、312、604、606、608、1100:仮想メモリ・ページ
306、310、314、506、512:ページ・テーブル・エントリ
316、404、516、614:キャッシュ
504、510:データ仮想メモリ・ページ
508、514:保護仮想メモリ・ページ
600:プロセッサ仮想アドレス空間
610:使用可能アドレス範囲
612:保護アドレス範囲
700:有効アドレス
706、804、900、1000:ページ・オフセット
800:物理アドレス
300、500、600:プロセッサ仮想アドレス空間
302、406、502、602:ページ・テーブル
304、308、312、604、606、608、1100:仮想メモリ・ページ
306、310、314、506、512:ページ・テーブル・エントリ
316、404、516、614:キャッシュ
504、510:データ仮想メモリ・ページ
508、514:保護仮想メモリ・ページ
600:プロセッサ仮想アドレス空間
610:使用可能アドレス範囲
612:保護アドレス範囲
700:有効アドレス
706、804、900、1000:ページ・オフセット
800:物理アドレス
Claims (20)
- データ処理システムにおいてデータ構造を保護するコンピュータにより実施される方法であって、
前記データ処理システムと関連した第1の仮想メモリ・ページの部分内に第1の保護アドレス範囲を確立するステップであって、前記部分は前記第1の仮想メモリ・ページの全体より少ない、前記確立するステップと、
前記第1の保護アドレス範囲にアクセスしようとする試みに応答して、格納例外信号を生成するステップと
を含む方法。 - 前記第1の仮想メモリ・ページ内の使用可能アドレス範囲の間に前記第1の保護アドレス範囲を確立するステップをさらに含む、請求項1に記載のコンピュータにより実施される方法。
- 前記第1の仮想メモリ・ページの複数の付加的な部分内に複数の付加的な保護アドレス範囲を確立し、前記複数の付加的な保護アドレス範囲が、複数の使用可能アドレス範囲の間に交互配置されるようにするステップをさらに含む、請求項1に記載のコンピュータにより実施される方法。
- 第2の仮想メモリ・ページのサイズと等しくなるように前記第1の保護アドレス範囲のサイズを設定するステップをさらに含み、前記第2の仮想メモリ・ページの前記サイズは、前記第1の仮想メモリ・ページの前記サイズより小さい、請求項1に記載のコンピュータにより実施される方法。
- 前記第1の保護アドレス範囲の前記サイズを設定する前記ステップは、アプリケーションによって実行される、請求項4に記載のコンピュータにより実施される方法。
- 前記第1の保護アドレス範囲の第2のサイズを設定するステップをさらに含む、請求項5に記載のコンピュータにより実施される方法。
- 第2の仮想メモリ・ページのサイズの倍数となるように前記第1の保護アドレス範囲のサイズを設定するステップをさらに含み、前記第2の仮想メモリ・ページの前記サイズは、前記第1の仮想メモリ・ページの前記サイズより小さい、請求項1に記載のコンピュータにより実施される方法。
- 変換のために前記第1の仮想メモリ・ページ内にあるアドレスを提示するステップと、
前記アドレスが前記第1の保護アドレス範囲内にあることに応答して、前記格納例外信号を生成するステップと
をさらに含む、請求項1に記載のコンピュータにより実施される方法。 - 前記第1の保護アドレス範囲は保護帯域を含む、請求項1に記載にコンピュータにより実施される方法。
- データ処理システムにおいてデータ構造を保護するためのコンピュータ使用可能プログラム・コードを有するコンピュータ・プログラムであって、前記コンピュータ・プログラムは、
前記データ処理システムと関連した第1の仮想メモリ・ページの部分内に第1の保護アドレス範囲を確立するためのコンピュータ使用可能プログラム・コードであって、前記部分は前記第1の仮想メモリ・ページの全体より少ない、コンピュータ使用可能プログラム・コードと、
前記第1の保護アドレス範囲にアクセスしようとする試みに応答して、格納例外信号を生成するためのコンピュータ使用可能プログラム・コードと
を含む、コンピュータ・プログラム。 - 前記第1の仮想メモリ・ページ内の使用可能アドレス範囲の間に、前記第1の保護アドレス範囲を確立するためのコンピュータ使用可能プログラム・コードをさらに含む、請求項10に記載のコンピュータ・プログラム。
- 第2の仮想メモリ・ページのサイズと等しくなるように前記第1の保護アドレス範囲のサイズを設定するためのコンピュータ使用可能プログラム・コードをさらに含み、前記第2の仮想メモリ・ページの前記サイズは、前記第1の仮想メモリ・ページの前記サイズより小さい、請求項10に記載のコンピュータ・プログラム。
- 前記第1の保護アドレス範囲の前記サイズを設定するための前記コンピュータ使用可能プログラム・コードは、アプリケーションを含む、請求項12に記載のコンピュータ・プログラム。
- 前記第1の保護アドレス範囲の第2のサイズを設定するためのコンピュータ使用可能プログラム・コードをさらに含む、請求項13に記載のコンピュータ・プログラム。
- 第2の仮想メモリ・ページのサイズの倍数になるように前記第1の保護アドレス範囲のサイズを設定するためのコンピュータ使用可能プログラム・コードをさらに含み、前記第2の仮想メモリ・ページの前記サイズは、前記第1の保護アドレス範囲のサイズより小さい、請求項10に記載のコンピュータ・プログラム。
- 変換のために前記第1の仮想メモリ・ページ内にあるアドレスを提示するためのコンピュータ使用可能プログラム・コードと、
前記アドレスが前記第1の保護アドレス範囲内にあることに応答して、格納例外信号を生成するためのコンピュータ使用可能プログラム・コードと
をさらに含む、請求項10に記載のコンピュータ・プログラム。 - プロセッサと、
前記プロセッサに接続されたバスと、
前記バスに接続され、1組の命令を含むコンピュータ・プログラムと
を備え、前記プロセッサは、
前記第1の仮想メモリ・ページの全体より少ない、前記データ処理システムと関連した第1の仮想メモリ・ページの部分内に第1の保護アドレスを確立し、
前記第1の保護アドレス範囲にアクセスしようとする試みに応答して、格納例外信号を生成する、
ための前記命令の組を実行するように適合されている、データ処理システム。 - 前記プロセッサは、前記第1の仮想メモリ・ページ内の使用可能アドレス範囲の間に前記第1の保護アドレス範囲を確立するための前記命令の組を実行するようにさらに適合されている、請求項17に記載のデータ処理システム。
- 前記プロセッサは、前記第1の保護アドレス範囲の前記サイズより小さい第2の仮想メモリ・ページのサイズと等しくなるように、前記第1の保護アドレス範囲のサイズを設定するための前記命令の組を実行するようにさらに適合されている、請求項17に記載のデータ処理システム。
- 前記プロセッサは、アプリケーションを用いて、前記第1の保護アドレス範囲の前記サイズを設定するための前記命令の組を実行するようにさらに適合されている、請求項19に記載のデータ処理システム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/462,055 US20080034179A1 (en) | 2006-08-03 | 2006-08-03 | Guard bands in very large virtual memory pages |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008041088A true JP2008041088A (ja) | 2008-02-21 |
Family
ID=39030640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007198304A Pending JP2008041088A (ja) | 2006-08-03 | 2007-07-31 | 大容量仮想メモリ・ページにおける保護帯域 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20080034179A1 (ja) |
JP (1) | JP2008041088A (ja) |
CN (1) | CN101118520A (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9354944B2 (en) * | 2009-07-27 | 2016-05-31 | Advanced Micro Devices, Inc. | Mapping processing logic having data-parallel threads across processors |
US8539578B1 (en) * | 2010-01-14 | 2013-09-17 | Symantec Corporation | Systems and methods for defending a shellcode attack |
KR102067056B1 (ko) * | 2011-04-26 | 2020-01-16 | 시게이트 테크놀로지 엘엘씨 | 저장 매체 액세스 방법, 데이터 라이트 방법, 저장 장치의 파라미터 조정 방법과 이를 적용한 저장 장치, 컴퓨터 시스템 및 저장매체 |
KR101854214B1 (ko) * | 2011-04-27 | 2018-05-03 | 시게이트 테크놀로지 엘엘씨 | 라이트 방법 및 그 방법을 이용하는 저장 장치 |
KR101854206B1 (ko) * | 2011-04-27 | 2018-05-04 | 시게이트 테크놀로지 엘엘씨 | 라이트 방법 및 그 방법을 이용하는 저장 장치 |
US9251091B2 (en) * | 2012-06-15 | 2016-02-02 | International Business Machines Corporation | Translation look-aside table management |
US9804975B2 (en) * | 2014-06-23 | 2017-10-31 | The Johns Hopkins University | Hardware-enforced prevention of buffer overflow |
US10162525B2 (en) | 2015-09-11 | 2018-12-25 | Red Hat Israel, Ltd. | Translating access requests for a multi-level page data structure |
US10540098B2 (en) | 2016-07-19 | 2020-01-21 | Sap Se | Workload-aware page management for in-memory databases in hybrid main memory systems |
US10437798B2 (en) | 2016-07-19 | 2019-10-08 | Sap Se | Full system simulator and memory-aware splay tree for in-memory databases in hybrid memory systems |
US10783146B2 (en) | 2016-07-19 | 2020-09-22 | Sap Se | Join operations in hybrid main memory systems |
US10452539B2 (en) | 2016-07-19 | 2019-10-22 | Sap Se | Simulator for enterprise-scale simulations on hybrid main memory systems |
US10698732B2 (en) * | 2016-07-19 | 2020-06-30 | Sap Se | Page ranking in operating system virtual pages in hybrid memory systems |
US10387127B2 (en) | 2016-07-19 | 2019-08-20 | Sap Se | Detecting sequential access data and random access data for placement on hybrid main memory for in-memory databases |
US11977484B2 (en) | 2016-07-19 | 2024-05-07 | Sap Se | Adapting in-memory database in hybrid memory systems and operating system interface |
US10474557B2 (en) | 2016-07-19 | 2019-11-12 | Sap Se | Source code profiling for line-level latency and energy consumption estimation |
US11010379B2 (en) | 2017-08-15 | 2021-05-18 | Sap Se | Increasing performance of in-memory databases using re-ordered query execution plans |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5845331A (en) * | 1994-09-28 | 1998-12-01 | Massachusetts Institute Of Technology | Memory system including guarded pointers |
US5978892A (en) * | 1996-05-03 | 1999-11-02 | Digital Equipment Corporation | Virtual memory allocation in a virtual address space having an inaccessible gap |
-
2006
- 2006-08-03 US US11/462,055 patent/US20080034179A1/en not_active Abandoned
-
2007
- 2007-07-16 CN CNA2007101360752A patent/CN101118520A/zh active Pending
- 2007-07-31 JP JP2007198304A patent/JP2008041088A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US20080034179A1 (en) | 2008-02-07 |
CN101118520A (zh) | 2008-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008041088A (ja) | 大容量仮想メモリ・ページにおける保護帯域 | |
JP5581403B2 (ja) | メモリのセキュア領域および非セキュア領域へのセキュアモードページテーブルデータの格納 | |
JP4608484B2 (ja) | ストレージの無効化、バッファ・エントリの消去 | |
JP4237190B2 (ja) | 仮想マシン環境内でのゲスト物理アドレスの仮想化の方法およびシステム | |
JP5607825B2 (ja) | コンピューティング環境のシステム・メモリの管理を容易にする方法、システム、コンピュータ・プログラム | |
RU2510074C2 (ru) | Система и способ проверки исполняемого кода перед его выполнением | |
JP4295111B2 (ja) | メモリ管理システム及び線形アドレスに基づいたメモリアクセスセキュリティ付与方法 | |
US10169244B2 (en) | Controlling access to pages in a memory in a computing device | |
US8516221B2 (en) | On-the fly TLB coalescing | |
US7552308B2 (en) | Method and apparatus for temporary mapping of executable program segments | |
US20090187731A1 (en) | Method for Address Translation in Virtual Machines | |
US7797747B1 (en) | Detection of malicious code in non-paged pool unused pages | |
TW201042455A (en) | Method of providing extended memory protection | |
US8954707B2 (en) | Automatic use of large pages | |
JP5583274B2 (ja) | コンピュータ・メモリを管理する方法、対応するコンピュータ・プログラム製品、およびそのためのデータ・ストレージ・デバイス | |
US7475194B2 (en) | Apparatus for aging data in a cache | |
US7660965B2 (en) | Method to optimize effective page number to real page number translation path from page table entries match resumption of execution stream | |
US8244979B2 (en) | System and method for cache-locking mechanism using translation table attributes for replacement class ID determination | |
CN110196819B (zh) | 内存访问方法与硬件 | |
US20100161934A1 (en) | Preselect list using hidden pages | |
US7783849B2 (en) | Using trusted user space pages as kernel data pages | |
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 | |
JP2011128787A (ja) | アドレス変換を高速化する方法及びシステム | |
US8099579B2 (en) | System and method for cache-locking mechanism using segment table attributes for replacement class ID determination | |
US6918023B2 (en) | Method, system, and computer program product for invalidating pretranslations for dynamic memory removal |