JP4295111B2 - メモリ管理システム及び線形アドレスに基づいたメモリアクセスセキュリティ付与方法 - Google Patents

メモリ管理システム及び線形アドレスに基づいたメモリアクセスセキュリティ付与方法 Download PDF

Info

Publication number
JP4295111B2
JP4295111B2 JP2003544605A JP2003544605A JP4295111B2 JP 4295111 B2 JP4295111 B2 JP 4295111B2 JP 2003544605 A JP2003544605 A JP 2003544605A JP 2003544605 A JP2003544605 A JP 2003544605A JP 4295111 B2 JP4295111 B2 JP 4295111B2
Authority
JP
Japan
Prior art keywords
memory
security
page
security attribute
memory page
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 - Lifetime
Application number
JP2003544605A
Other languages
English (en)
Other versions
JP2005509946A (ja
Inventor
シー. バーンズ ブライアン
エス. ストロンジン ジェフリー
ダブリュ. シュミット ロドニー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2005509946A publication Critical patent/JP2005509946A/ja
Application granted granted Critical
Publication of JP4295111B2 publication Critical patent/JP4295111B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/14Protection against unauthorised use of memory or access to memory
    • 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
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1054Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
    • 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
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list

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)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Description

本発明は、概略、メモリ管理システム及び方法に関し、特に、メモリ内に格納されたデータの保護を付与するメモリ管理システム及び方法に関する。
典型的なコンピュータシステムは、比較的ローコストで比較的ハイレベルのパフォーマンスを得るために記憶階層を有している。いくつかの異なるソフトウェアプログラムの命令は典型的には比較的大容量且つ低速の不揮発性のストレージユニット(例えば、ディスクドライブユニット)に格納される。ユーザがそれらのプログラムのうちの一つを選択して実行する際、選択されたプログラムの命令はメインメモリユニット(例えばランダムアクセスメモリ(RAM))にコピーされ、中央処理ユニット(CPU)がメインメモリユニットから選択されたプログラムの命令を取得する。周知の仮想メモリ管理技術によれば、データ構造の一部のみを任意の時点にメインメモリユニット内に格納することにより、CPUはメインメモリユニットの容量よりも大きいデータ構造にアクセスすることができる。データ構造の残りの部分は、比較的大容量且つ低速の不揮発性のストレージユニット内に格納され、必要となったときだけ、メインメモリユニット内にコピーされる。
仮想メモリは、典型的には、CPUのアドレス空間をページフレーム又は“ページ”と呼ばれる多数のブロックに分割することにより実現されている。一部のページに対応するデータのみが任意の時点においてメインメモリユニット内に格納される。CPUが任意のページ内のアドレスを生成し、且つ、そのページのコピーがメインメモリユニット内に位置していなかった場合、要求されたページのデータが比較的大容量且つ低速の不揮発性のストレージユニットからメインメモリユニットにコピーされる。この過程において、要求されたページ分の空きを作るために、他のページのデータをメインメモリから不揮発性ストレージユニットにコピーしても良い。
ポピュラーな80x86(x86)プロセッサアーキテクチャはプロテクトされた仮想アドレスモード(即ち、プロテクトモード)をサポートするために特化したハードウェア要素を含んでいる。ここで、図1乃至3を用いて、x86プロセッサがどのようにして仮想メモリとメモリ保護機能の両方を実現しているのかについて説明する。図1はx86プロセッサアーキテクチャについての周知の線形−物理アドレス変換メカニズム100の図である。アドレス変換メカニズム100はx86プロセッサ内部に搭載されており、x86プロセッサ内部において生成された線形アドレス102、ページテーブルディレクトリ(即ち、ページディレクトリ)104、ページテーブル106を含む多数のページテーブル、ページフレーム108を含む多数のページフレーム、及び制御レジスタ(CR3)110を備えている。ページディレクトリ104及び多数のページテーブルは、ページング対象となるメモリに関するデータ構造であって、オペレーティングシステムソフトウェア(即ちオペレーティングシステム)により生成され保持されているものである。ページディレクトリ104は常にメモリ(例えば、メインメモリユニット)内部に位置している。簡単にするため、ページテーブル106及びページフレーム108もメモリ内に存することとする。
図1に示されるように、線形アドレス102は、線形−物理アドレス変換を達成するために、3つの部分に分けられている。CR3 110における最高位の数ビットはページディレクトリ基底レジスタを格納するために用いられる。ページディレクトリ基底レジスタはページディレクトリ104を含むメモリページの基底アドレスである。ページディレクトリ104はページディレクトリエントリ112を含む多数のページディレクトリエントリを備えている。線形アドレス102における上位の“ディレクトリインデックス”部は線形アドレス102における最上位又は最高位の数ビットを含むものであるが、これはページディレクトリ104においてインデックスとして用いられる。ページディレクトリエントリ112は、CD3 110のページディレクトリ基底アドレス及び線形アドレス102における上位の“ディレクトリインデックス”部を用いて、ページディレクトリ104内部から選択される。
図2はx86プロセッサアーキテクチャのページディレクトリエントリ用フォーマット200の図である。図2に示されるように、任意のページディレクトリエントリにおける最高位(即ち、最上位)の数ビットにはページテーブル基底アドレスが含まれている。なお、ページテーブル基底アドレスとは、対応するページテーブルを含むメモリページの基底アドレスである。ページディレクトリエントリ112におけるページテーブル基底アドレスは対応するページテーブル106を選択するために用いられる。
図1に戻って、ページテーブル106はページテーブルエントリ114を含む多数のページテーブルエントリを備えている。線形アドレス102における中位の“テーブルインデックス”はページテーブル106内におけるインデックスとして用いられ、それによってページテーブルエントリ114が選択される。図3はx86プロセッサアーキテクチャのページテーブルエントリ用フォーマット300の図である。図3に示されるように、任意のページテーブルエントリにおける最高位(即ち、最上位)の数ビットには、ページフレーム基底アドレスが含まれている。なお、ページフレーム基底アドレスとは対応するページフレームの基底アドレスである。
再び図1を参照すると、ページテーブルエントリ114におけるページフレーム基底アドレスは対応するページフレーム108を選択するために用いられる。ページフレーム108は多数のメモリロケーションを含む。線形アドレス102における下位又は“オフセット”部はページフレーム108内におけるインデックスとして用いられる。ページテーブルエントリ114のページフレーム基底アドレスと線形アドレス102のオフセット部とは、組み合わされると、線形アドレス102に対応する物理アドレスを構成し、ページフレーム108内部におけるメモリロケーション116を示す。メモリロケーション116は線形−物理アドレス変換の結果である物理アドレスを有する。
メモリ保護機能に関し、図2におけるページディレクトリエントリ用フォーマット200及び図3におけるページテーブルエントリ用フォーマット300はユーザ/スーパーバイザ(U/S)ビットとリード/ライト(R/W)ビットとを有している。U/Sビット及びR/Wビットの内容は、対応するページフレーム(即ち、メモリページ)を権限なしのアクセスから保護するためにオペレーティングシステムによって用いられる。U/S=0はオペレーティングシステムのメモリページを示すために用いられており、オペレーティングシステムの“スーパーバイザ”レベルに対応している。オペレーティングシステムにおけるスーパーバイザレベルは、x86プロセッサにより実行されているソフトウェアプログラム及びルーチンの現在の特権レベル0(CPL0)に対応している。U/S=1はユーザのメモリページを示すために用いられており、オペレーティングシステムの“ユーザ”レベルに対応している。オペレーティングシステムにおけるユーザレベルはx86プロセッサにおけるCPL3に対応している。(ユーザレベルはx86プロセッサにおけるCPL1及び/又はCPL2に対応している。)
R/Wビットは、対応するメモリページに対して許容されるアクセスのタイプを示すために用いられる。R/W=0は、対応するメモリページに関してはリードオンリーのアクセスが許可されていることを示す(即ち、対応するメモリページは“リードオンリー”である)。R/W=1は対応するメモリページに関してはリードアクセス及びライトアクセスの双方ともが許可されていることを示す(即ち、対応するメモリページは“リードライト”である)。
図1における線形−物理アドレス変換処理において、ページフレーム108に対応するページディレクトリエントリ112及びページテーブルエントリ114におけるU/Sビットの内容についてANDをとり、ページフレーム108に対してアクセス権限があるか否かを決定する。同様に、ページディレクトリエントリ112及びページテーブルエントリ114におけるR/Wビットの内容についてANDをとり、ページフレーム108に対してアクセス権限があるか否かを決定する。もし、U/SビットとR/Wビットとの論理的な組み合わせにより、ページフレーム108に対するアクセス権限があることが示される場合、メモリロケーション116は物理アドレスを用いてアクセスされる。一方、U/SビットとR/Wビットとの論理的な組み合わせにより、ページフレーム108に対するアクセス権限がないことが示された場合、保護違反のインジケーションがシグナルされる。
このx86プロテクションモードの詳細は、インテル株式会社において得ることができる:“インテル・アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル第3巻:システム・プログラミング・ガイド、2〜4章、6章及び15章並びにアネックスB”。インテル・リファレンス・マニュアル、XP002248376。同様の記述は、例えば、US6,154,818及びUS5,627,987においても見つけることができる。これらの記述はすべてページテーブルにおけるセキュリティ属性がメモリのページを保護するために用いることができることについて論証している。
残念ながら、上述したx86プロセッサアーキテクチャにおけるメモリ保護メカニズムはメモリ内に格納されたデータの保護に関し十分ではない。例えば、スーパーバイザレベルで実行される(例えば、CPL0を有する)ものであれば、如何なるソフトウェアプログラムやルーチンもメモリの任意の箇所にアクセスできてしまうし、また、“リードオンリー”(R/W=0)といった指定の無いメモリの如何なる部分も変更する(即ち、当該部分に対して書き込み動作をする)こともできてしまう。加えて、スーパーバイザレベルで実行されていることから、当該ソフトウェアプログラム又はルーチンはメモリ上の如何なる部分における属性(即ち、U/Sビット及びR/Wビット)も変更することができる。従って、当該ソフトウェアプログラム又はルーチンは“リードオンリー”と指定されているメモリの如何なる部分も“リードライト”(R/W=1)に変更することができ、その変更後、そのメモリの該当部分を書き換えることもできる。
本発明は、上記の問題のいくつか又はすべてを解決しうる又は少なくとも減じうる方法及びその方法を実現する装置に関する。
複数のメモリページ内部に配置されたデータを格納するメモリを管理するためのメモリ管理ユニットを開示する。メモリ管理ユニットは現在の命令の実行中に生成された線形アドレスを受けるセキュリティチェックユニットを含む。線形アドレスは被選択メモリページ内における物理アドレスの一つと対応している。セキュリティチェックユニットは線形アドレスを用いてメモリ内に位置する一以上のセキュリティ属性のデータ構造にアクセスし、被選択メモリページのセキュリティ属性を取得する。セキュリティチェックユニットは現在の命令におけるセキュリティ属性により伝達される数値と被選択メモリページにおけるセキュリティ属性により伝達される数値とを比較して、比較結果に応じた出力信号を生成する。メモリ管理ユニットはその出力信号に従って被選択メモリページにアクセスする。
実行ユニットと管理ユニット(MMU)を含む中央処理ユニット(CPU)について記す。実行ユニットは、メモリから命令をフェッチして、その命令を実行する。MMUはメモリを管理するものであり、複数のメモリページ内部に配置されたデータをメモリが格納するように該メモリを管理するといった設定が可能なものである。MMUは上述のセキュリティチェックユニットを備える。メモリ、CPU及びMMUを備えるコンピュータシステムが記される。
複数のメモリページ内に配置されたデータを格納するために用いられるメモリに対して、アクセスセキュリティを与えるための方法を記載する。その方法は、命令の実行中に生成された線形アドレス及びその命令のセキュリティ属性を受けることを含む。ここで、該命令は第1のメモリページ内に存している。線形アドレスはメモリ内に位置する一以上のデータ構造であってページング対象のメモリに関するものにアクセスして、被選択メモリページの基底アドレスと該被選択メモリページのセキュリティ属性とを取得するために用いられる。該命令のセキュリティ属性(例えば、x86プロセッサアーキテクチャにより定義されたような命令の現在の特権レベル即ちCPL)及び被選択メモリページのセキュリティ属性(例えば、被選択メモリページのx86U/Sビット及びx86R/Wビット)によりアクセス権限があるとされた場合、被選択メモリページの基底アドレスは、被選択メモリページ内部における物理アドレスを生成するために、オフセットと組み合わせられる。該命令のセキュリティ属性及び被選択メモリページのセキュリティ属性によりアクセス権限がないとされた場合、違反信号(例えばx86GPF信号)が生成される。
線形アドレスは、メモリ内に位置する一以上のセキュリティ属性のデータ構造にアクセスして、第1のメモリページにおける付加的なセキュリティ属性及び被選択メモリページの付加的なセキュリティ属性を取得するためにも用いられる。第1のメモリページにおける付加的なセキュリティ属性により伝達される数値は、被選択メモリページの付加的なセキュリティ属性により伝達された数値と比較される。第1のメモリページにおけるセキュリティ属性により伝達される数値と被選択メモリページにおける付加的なセキュリティ属性との比較結果に従って、被選択メモリページがアクセスされる。
本発明は、以下の説明と関連する付属図面とを参照することにより、理解されるであろう。ここで、図面においては、同様な構成要素には同じ参照符号が付されている。
本発明については、様々な変形及び置換が可能であるが、特定の実施例が図に例示され且つここに詳細に説明される。しかしながら、ここにおける特定の実施例に関する記述は開示した特定の形態に本発明を限定することを意図したものではなく、逆に、付属のクレームに定義されたような発明の技術的範囲内に属する変形例、均等物及び置換のすべてをカバーすることが意図される。
発明の実施の形態
本発明の実施例について以下に説明する。分かり易くするために、本明細書においては、実際に実施されるもののすべての特徴は説明しない。勿論、そういった現実的な実施例の開発においては、システム関連又はビジネス関連の制約の遵守のような、その開発特有の目的であって、実施例間において互いに異なることを達成するために、個々の実施に特有な決定が多数なされるはずであると思われる。また、かかる開発努力は複雑で時間を要するものであるがそれにも拘らず本件開示による利益を受ける分野における当業者にとっては日常的な業務であると思われる。
図4は、CPU402、システム又は“ホスト”ブリッジ404、メモリ406、第1のデバイスバス408(例えば、Peripheral Component Interconnectバス、即ち、PCIバス)、デバイスバス間ブリッジ410、第2のデバイスバス(例えば、Industry Standard Architectureバス、つまりISAバス)及び4つのデバイスハードウェアユニット414A−414Dを備えるコンピュータシステム400の一実施例の図である。ホストブリッジ404はCPU402、メモリ406、及び第1のデバイスバス408に接続されている。ホストブリッジ404はCPU402と第1のデバイスバス408との間における信号変換を行うと共に、メモリ406をCPU402及び第1のデバイスバス408に機能的に接続する。デバイスバス間ブリッジ410は第1のデバイスバス408及び第2のデバイスバス412間に接続され、第1のデバイスバス408及び第2のデバイスバス412間における信号変換を行う。図4の実施例においては、デバイスハードウェアユニット414A及び414Bは第1のデバイスバス408に接続され、デバイスハードウェアユニット414C及び414Dは第2のデバイスバス412に接続されている。一以上のデバイスハードウェアユニット414A−414Dは、例えば、ストレージデバイス(例えば、ハードディスクドライブ、フロッピードライブ、及びCD−ROMドライブ)、通信デバイス(例えば、モデムやネットワークアダプタ)、又はI/Oデバイス(たとえば、ビデオデバイス、オーディオデバイス、及びプリンタ)である。
図4の実施例において、CPU402はCPUセキュリティチェックユニット(SCU)416を備えている。後に詳述するように、CPU SCU416はメモリ406をCPU402により生成された不正アクセス(権限のないアクセス)から保護する。ここで、他の実施例においては、図4に示されているように、ホストブリッジ404がCPU402の一部であっても良い。
図5は図4のコンピュータシステム400における様々なハードウェア要素及びソフトウェア要素間の関係を示す図である。図5の実施例においては、多数のアプリケーションプログラム500、オペレーティングシステム502、セキュリティ用カーネル504、及びデバイスドライバ506A−506Dがメモリ406内に格納されている。アプリケーションプログラム500、オペレーティングシステム502、セキュリティ用カーネル504、及びデバイスドライバ506A−506Dは、CPU402により実行される命令を含んでいる。オペレーティングシステム502は、ユーザインタフェース及びソフトウェアに関する“プラットフォーム”を提供し、そのプラットフォーム上でアプリケーションプログラム500が実行される。オペレーティングシステム502は、例えば、ファイルシステム管理、プロセス管理、及び入出力(I/O)制御を含む基本的なサポート機能をも提供する。
オペレーティングシステム502は基本的なセキュリティ機能を提供するものとしても良い。例えば、CPU402(図4)はx86命令セットにおける命令を実行するx86プロセッサであっても良い。その場合、CPU402は、上述したようにプロテクトモードにおいて仮想メモリ保護機能及び物理メモリ保護機能の両方を提供するために特化したハードウェア要素を備えていても良い。オペレーティングシステム502は、例えば、Windows(登録商標)ファミリのOS(マイクロソフト社、ワシントン州レッドモンド)の一つであっても良い。このOSは、CPU402をプロテクトモードで動作させ、プロテクトモードにおいて仮想メモリ及びメモリ保護の双方を提供するためにCPU402の特化したハードウェア要素を利用する。
後に更に詳述するように、セキュリティ用カーネル504は、オペレーティングシステム502により提供されるセキュリティ機能に勝る付加的なセキュリティ機能を提供し、メモリ406内に格納されたデータを不正アクセスから保護する。図5に示されるように、セキュリティ用カーネル504は、CPU SCU416に接続されている。後に詳述するように、CPU SCU416は、ソフトウェアにより開始されたメモリへのアクセスのすべてを監視して、メモリ406に対する権限のあるアクセスのみを許可する。
図5の実施例において、デバイスドライバ506A−506Dは、それぞれ、対応するデバイスハードウェアユニット414A−414Dと機能的に関連付けられ、接続されている。例えば、デバイスハードウェアユニット414A及び414Dを“セキュア”デバイス(セキュリティのかかったデバイス)とし、対応するデバイスドライバ506A及び506Dを“セキュア”デバイスドライバ(セキュリティのかかったデバイスドライバ)としても良い。セキュリティ用カーネル504はオペレーティングシステム502とセキュアデバイスドライバ506A及び506Dとの間に接続され、アプリケーションプログラム500及びオペレーティングシステム502によるセキュアデバイスドライバ506A及び506D並びに対応するセキュアデバイス414A及び414Dに対するすべてのアクセスを監視しても良い。セキュリティ用カーネル504は、アプリケーションプログラム500及びオペレーティングシステム502がセキュアデバイスドライバ506A及び506D並びに対応するセキュアデバイス414A及び414Dに対する権限のないアクセスを行うことを防止しても良い。一方、デバイスドライバ506B及び506Cを“ノンセキュア”デバイスドライバ(セキュリティのかかっていないデバイスドライバ)としても良く、対応するデバイスハードウェアユニット414B及び414Cを“ノンセキュア”デバイスハードウェアユニット(セキュリティのかかっていないデバイスハードウェアユニット)としても良い。デバイスドライバ506B及び506C並びに対応するデバイスハードウェアユニット414B及び414Cは、例えば、“レガシー”デバイスドライバ及び“レガシー”デバイスハードウェアユニットであっても良い。
ここで、他の実施例においては、セキュリティ用カーネル504はオペレーティングシステム502の一部であっても良い。また、更に他の実施例においては、セキュリティ用カーネル504、デバイスドライバ506A及び506D、及び/又はデバイスドライバ506B及び506Cがオペレーティングシステム502の一部であっても良い。
図6は、図4のコンピュータシステム400におけるCPU402の一実施例の図である。図6の実施例において、CPU402は、実行ユニット600、メモリ管理ユニット(MMU)602、キャッシュユニット604、バスインタフェースユニット(BIU)606、一組の制御レジスタ608、及び一組のセキュア実行モード(SEM)レジスタ610を備えている。CPU SCU416はMMU602内部に位置している。後に詳述するように、一組のSEMレジスタ610は、図4のコンピュータシステム400内部でセキュア実行モード(SEM)を実現するために用いられており、CPU SCU416の動作は、一組のSEMレジスタ610の内容によって制御される。SEMレジスタ610はセキュリティ用カーネル504(図5)によってアクセス(即ち、書込み及び/又は読出し)される。図4のコンピュータシステム400は、例えば、(i)CPU402がx86プロテクトモードで動作するx86プロセッサであり、(ii)メモリページングがイネーブルになっており、且つ、(iii)SEMレジスタ610の内容がSEM動作を示している場合に、SEMで動作することとしても良い。
一般的に、一組の制御レジスタ608の内容はCPU402の動作を制御している。従って、一組の制御レジスタ608の内容は実行ユニット600、MMU602、キャッシュユニット604、及び/又はBIU606の動作を制御している。一組の制御レジスタ608は、例えば、x86プロセッサアーキテクチャにおける多数の制御レジスタを含むものとしても良い。
CPU402における実行ユニット600は命令(例えば、x86命令)及びデータをフェッチし、フェッチされた命令を実行し、そして、命令実行中に信号(例えば、アドレス信号、データ信号、及び制御信号)を生成する。実行ユニット600はキャッシュユニット604に接続されており、キャッシュユニット604及びBIU606を介してメモリ406(図4)から命令を受けることとしても良い。
コンピュータシステム400におけるメモリ406(図4)はそれぞれ固有の物理アドレスを有しているメモリロケーションを多数含んでいる。ページングがイネーブルになった状態においてプロテクトモードで動作するとき、CPU402のアドレス空間はページフレーム又は“ページ”と呼ばれる多数のブロックに分けられる。上述したように、一部のページに対応するデータのみが任意の時点でメモリ406内に格納される。図6の実施例において、命令実行中に実行ユニット600により生成されたアドレス信号はセグメント(即ち、“論理”)アドレスを示す。後述するように、MMUは実行ユニット600により生成されたセグメントアドレスをメモリ406における対応する物理アドレスに変換する。MMUはキャッシュユニット604に対して物理アドレスを提供する。キャッシュユニット604は、実行ユニット600により最近フェッチされた命令やデータを格納するために用いられる比較的小さなストレージユニットである。BIU606は、キャッシュユニット604及びホストブリッジ404間に接続され、その時点でキャッシュユニット604に存在しなかった命令及びデータを、ホストブリッジ404を介して、メモリ406からフェッチするために用いられる。
図7は、図6におけるMMUの一実施例の図である。図7の実施例において、MMU602は、セグメンテーションユニット700、ページングユニット702、CPU SCU416、及び選択ロジック704を備えている。ここで、選択ロジック704は、セグメンテーションユニット700の出力とページングユニット702の出力との一方を選択して、物理アドレスを生成するためのものである。図7に示されるように、セグメンテーションユニット700は実行ユニット600からセグメントアドレスを受けて、x86プロセッサアーキテクチャの周知のセグメント−線形アドレス変換メカニズムを用い、出力として、対応する線形アドレスを生成する。図7に示されるように、“PAGING”信号によりイネーブルとされると、ページングユニット702は、セグメンテーションユニット700により生成された線形アドレスを受けて、対応する物理アドレスを生成する。PAGING信号は、x86プロセッサアーキテクチャの制御レジスタ0(CR0)であって一組の制御レジスタ608(図6)のうちの一つにおけるページングフラグ(PG)のミラーであっても良い。PAGING信号がディアサートされると、メモリページングはイネーブルでなくなり、選択ロジック704はセグメンテーションユニット700から受けた線形アドレスを物理アドレスとして生成する。
PAGING信号がアサートされると、メモリページングはイネーブルになり、ページングユニット702は、上述したx86プロセッサアーキテクチャ(図1)における線形−物理アドレス変換メカニズム100を利用して、セグメンテーションユニット700から受けた線形アドレスを対応する物理アドレスに変換する。上述したように、線形−物理アドレス変換処理において、選択されたページディレクトリエントリ及び選択されたページテーブルエントリのU/Sビットの内容はANDをとられて、ページフレームに対するアクセスの権限の有無について決定がなされる。同様に、選択されたページディレクトリエントリ及び選択されたページテーブルエントリのR/Wビットの内容もANDをとられて、当該ページフレームに対するアクセスの権限の有無について決定がなされる。U/Sビット及びR/Wビットの論理的な組み合わせによってページフレームに対するアクセス権限があることが示される場合、ページングユニット702は線形−物理アドレス変換処理の結果として物理アドレスを生成する。選択ロジック704はページングユニット702により生成された物理アドレスを受けて、ページングユニット702から受けた物理アドレスを物理アドレスとして生成し、その物理アドレスをキャッシュユニット604に提供する。
一方、U/Sビット及びR/Wビットの論理的な組み合わせによってページフレーム108に対するアクセス権限がないことが示される場合、ページングユニット702は線形−物理アドレス変換処理の間、物理アドレスを生成しない。その代わり、ページングユニット702は一般保護違反(GPF)信号をアサートし、MMU602はそのGPF信号を実行ユニット600に転送する。GPF信号に応じて、実行ユニット600は、実行ハンドラルーチンを実行しても良く、GPF信号がアサートされたときに実行中であったアプリケーションプログラム500(図5)のうちの一つの実行を完全に停止することとしても良い。ページングユニット702は、最近決定された所定数の線形−物理アドレス変換(比較的少数)を格納するためのアドレス変換バッファ(TLB)を備えていても良い。
図8は、図7におけるCPU SCU416の一実施例の図である。図8の実施例において、CPU SCU416は、一組のSEMレジスタ610(図6)に接続されたセキュリティチェック用論理回路800とセキュリティ属性テーブル(SAT)エントリ用バッファ802とを備えている。後述するように、SATエントリには、メモリページに対応したページディレクトリエントリ及びページテーブルエントリにおけるU/Sビット及びR/Wビットに勝る付加的なセキュリティ情報を含んでいる。セキュリティチェック用論理回路800は、任意のSATエントリ内に格納された付加的なセキュリティ情報を用いて、対応するメモリページに対する権限のないソフトウェアにより始動されたアクセスを防止する。SATエントリ用バッファ802は、最近アクセスされた所定数のメモリページに関するSATエントリ(比較的少数)を格納するために用いられる。
上述したように、一組のSEMレジスタ610は、図4のコンピュータシステム400内部にてセキュア実行モード(SEM)を実現するために用いられている。一組のSEMレジスタ610の内容はCPU SCU416の動作を制御する。セキュリティチェック用論理回路800は、SATエントリ用バッファ802に格納されるべき情報をMMU602から図8に示されるコミュニケーションバスを介して受ける。セキュリティチェック用論理回路800は、ページングユニット702により生成された物理アドレスも受ける。
以下、図9乃至図11を用いて、図4のコンピュータシステム内においてどのようにして被選択メモリページに関する付加的なセキュリティ情報が取得されるかについて説明する。図9は、被選択メモリページに関するSATエントリにアクセスして、該被選択メモリページについての付加的なセキュリティ情報を取得するためのメカニズム900の一実施例の図である。図9のメカニズム900は、図8のセキュリティチェック用論理回路800内部に搭載されていても良いし、図4のコンピュータシステム400がSEMで動作する際に実現されることとしても良い。メカニズム900は、命令実行中にセグメンテーションユニット700(図7)により生成された線形アドレス902、SATディレクトリ904、SAT906を含む多数のSAT、及び一組のSEMレジスタ610におけるSAT基底アドレス用レジスタを備えている。SATディレクトリ904及びSAT906を含む多数のSATはセキュリティ用カーネル504(図5)により生成され保持されているSEMデータ構造である。後述するように、SATディレクトリ904(現存する場合)及び必要とされるSATはアクセスされる前にメモリ406にコピーされる。
SAT基底アドレス用レジスタ908は現存(P)ビットを含んでいる。このPビットは、SAT基底アドレス用レジスタ908内部に有効なSATディレクトリ基底アドレスが存在することを示すものである。SAT基底アドレス用レジスタ908のうち、最高位の(即ち、最上位の)数ビットは、SATディレクトリ基底アドレス用に確保されている。SATディレクトリ基底アドレスはSATディレクトリ904を含むメモリページの基底アドレスである。P=1の場合、SATディレクトリ基底アドレスは有効であり、SATテーブルはメモリページのセキュリティ属性を明確に示している。P=0の場合、SATディレクトリ基底アドレスは有効でなく、SATテーブルは存在せず、メモリページのセキュリティ属性はSATデフォルト用レジスタにより決定される。
図10は、SATデフォルト用レジスタ1000の一実施例の図である。図10の実施例において、SATデフォルト用レジスタ1000は、セキュアコンテキストID(SCID)フィールドを含んでいる。SCIDフィールドは、SATデフォルト用レジスタ1000における多数のビット位置を含んでいる。複数のビット位置は、一つのSCID値のバイナリ表記を形成する。ここで、SCID値は0以上の整数値である。SCID値は、コンピュータシステム400内におけるメモリページ用のデフォルトセキュリティコンテキストレベルを示す。例えば、SCIDフィールドがSATデフォルト用レジスタ1000におけるnビットを含む場合、任意のメモリページが、コンピュータシステム400内において2個の考えられうるセキュリティコンテキストレベルの一つを占有する。
線形アドレス902は、対応する物理アドレスであって被選択メモリページ内に存するものを有する。対応する物理アドレスは、図1のアドレス変換メカニズム100を用いて、ページングユニット702(図7)により生成される。図9に戻って、SAT基底アドレス用レジスタ908のPビットが“1”であったとすると、セグメンテーションユニット700(図7)により生成された線形アドレス902は、被選択メモリページについてのSATエントリをアクセスするために3つの部分に分割される。上述したように、SAT基底アドレス用レジスタ908におけるSATディレクトリ基底アドレスは、SATディレクトリ904を含むメモリページの基底アドレスである。SATディレクトリ904は、SATディレクトリエントリ910を含む多数のSATディレクトリエントリを含む。線形アドレス902における“上位”部は、線形アドレス902における最高位又は最上位の数ビットを含むものであるが、これはSATディレクトリ904内においてインデックスとして用いられる。SATディレクトリエントリ910は、SAT基底アドレス用レジスタ908におけるSATディレクトリ基底アドレスと線形アドレス902における上位部とを用いて、SATディレクトリ904内部から選択される。
図11は、SATディレクトリエントリ用フォーマット1100の一実施例の図である。図11によれば、各SATディレクトリエントリは現存(P)ビットを含んでいる。このPビットはSATディレクトリエントリ内部に有効なSAT基底アドレスが存在することを示す。図11の実施例において、各SATディレクトリエントリにおける最高位(即ち、最上位の)数ビットはSAT基底アドレス用として確保されている。SAT基底アドレスとは、対応するSATを含むメモリページの基底アドレスである。P=1の場合、SAT基底アドレスは有効であり、対応するSATはメモリ406に格納される。
P=0の場合、SAT基底アドレスは有効ではなく、対応するSATはメモリ406内に存しないので、ストレージデバイス(例えばディスクドライブ)からメモリ406内にコピーされなければならない。P=0の場合、セキュリティチェック用論理回路800はページングユニット702内部におけるロジックに対しページ違反を伝達しても良く、MMU602はそのページ違反信号を実行ユニット600(図6)に転送しても良い。ページ違反信号に応じて、実行ユニット600はページ違反ハンドラルーチンを実行しても良い。ここで、ページ違反ハンドラルーチンとは、必要とされるSATをストレージデバイスから取り出し、その必要とされるSATをメモリ406に格納するものである。必要とされるSATがメモリ406内に格納された後、対応するSATディレクトリエントリのPビットは“1”にセットされ、メカニズム900は続行させられる。若しくは、P=0の場合、SATデフォルト用レジスタ1000(図10)におけるSATデフォルト基底アドレス用フィールド(図示せず)の内容がSAT基底アドレスとして用いられても良い。
図9に戻って、線形アドレス902の“中位”部はSAT906におけるインデックスとして用いられる。SATエントリ906は、従って、SATディレクトリエントリ910におけるSAT基底アドレス及び線形アドレス902における中位部を利用して、SAT906内にて選択される。図12は、SATエントリ用フォーマット1200の一実施例の図である。図12の実施例において、各SATエントリは、セキュアコンテキストID(SCID)フィールドを含んでいる。SCIDフィールドは、SATエントリにおける多数のビット位置を含んでいる。該ビット位置は一つのSCID値のバイナリ表現を形成する。ここで、SCID値は、0以上の整数値である。SCID値は、被選択メモリページにおけるセキュリティコンテキストレベルを示す。例えば、SCIDフィールドがSATエントリにおけるnビットを含む場合、被選択メモリページは、コンピュータシステム400内において、2個の考えられるセキュリティコンテキストレベルのうちの一つを占有することとしても良い。
BIU606(図6)は、必要とされるSEMデータ構造エントリをメモリ406から取り出し、そのSEMデータ構造エントリをMMU602に提供する。図8に戻って、セキュリティチェック用論理回路800は、コミュニケーションバスを介して、MMU602及びページングユニット702からSEMデータ構造エントリを受ける。上述したように、SATエントリ用バッファ802は、最近アクセスされたメモリページのうち、比較的少数のSATエントリを格納するために用いられる。セキュリティチェック用論理回路800は、対応する物理アドレスの“タグ”部に従って、任意のSATエントリをSATエントリ用バッファ802内に格納する。
後続のメモリページアクセスの間、セキュリティチェック用論理回路800は、ページングユニット702により生成された物理アドレスの“タグ”部を、SATエントリ用バッファ802内に格納されたSATエントリに対応する物理アドレスのタグ部と比較する。物理アドレスのタグ部がSATエントリ用バッファ802内に格納されたSATエントリに対応する物理アドレスのタグ部と一致した場合、セキュリティチェック用論理回路800は、SATエントリ用バッファ802内におけるSATエントリにアクセスし、一方では、図9のプロセスを実行してメモリ406からSATエントリを取得するという要求を削除する。セキュリティ用カーネル504(図5)は、(例えば、コンテキストの変更時に)CPU402におけるSAT基底アドレス用レジスタ908の内容を書き換える。SAT基底アドレス用レジスタ908の書換えに応じて、CPU SCU416におけるセキュリティチェック用論理回路800は、SATエントリ用バッファ802の内容を消去しても良い。
図7の実施例において、CPU SCU416はページングユニット702に接続されている。図4のコンピュータシステム400がSEMで動作している際、セキュリティチェック用論理回路800は、現在実行中のタスク(即ち、現在実行中の命令)についての現在の特権レベル(CPL)を受ける。また、セキュリティチェック用論理回路800は、内部に対応する物理アドレスが存在する被選択メモリページに関するページディレクトリエントリ(PDE)のU/Sビット、PDEのR/Wビット、ページテーブルエントリ(PTE)のU/Sビット及びPTEのR/Wビットを、ページングユニット702から受ける。セキュリティチェック用論理回路800は、被選択メモリページに対応するSATエントリのSCID値に従って、上述の情報を用いて、メモリ406へのアクセスに権限が与えられているか否かを決定する。
図6のCPU402はx86プロセッサであってもよく、x86プロセッサアーキテクチャにおける16ビットセグメントレジスタのうちの一つであるコードセグメント(CS)レジスタを含んでいても良い。各セグメントレジスタは、メモリの一ブロック(すなわち、メモリにおける一セグメント)を選択する。ページングがイネーブルとされている状態におけるプロテクトモードでは、CSレジスタは、メモリ406の実行可能なブロックを示すセグメントセレクタを用いてロードされる。セグメントセレクタにおける最高位の(即ち、最上位の)数ビットは、CPU402(図6)における実行ユニット600により実行されるべき次命令を含むメモリの一ブロック(例えば、メモリの一セグメント)を示す情報を格納するために用いられる。命令ポインタ(IP/EIP/RIP)レジスタは、CSレジスタにより示されたメモリにおけるブロック(例えば、メモリにおけるセグメント)内にオフセットを格納するために用いられる。CSレジスタにおける最低位(即ち、最下位)の2ビットは、実行ユニット600により現在実行中のタスクの現在の特権レベル(CPL)(即ち、カレントタスクのCPL)を示す値を格納するために用いられる。
下記表1は、図4のコンピュータシステム400がSEMで動作している際に、CPUにより始動された(即ち、ソフトウェアにより始動された)メモリアクセス用の代表的なルールを示す。図4のコンピュータシステム400がSEMで動作し、オペレーティングシステム502(図5)により提供されたデータセキュリティに勝る、メモリ406内に格納されているデータ用の付加的なセキュリティを提供する際に、CPU SCU416(図4乃至図8)及びセキュリティ用カーネル(図5)は共に動作して表1のルールを実現する。
下記表1において、“CEI−SCID”は現在実行中の命令に関するSCID値を示し、“SMP−SCID”は被選択メモリページに関するSCID値を示す。CEI−SCID値は、現在実行中の命令を含むメモリページに対応するSATエントリにおけるSCID値である。表1の実施例において、低いSCID値ほど、高いセキュリティコンテキストレベルと関連付けられている。他の実施例として、高いSCIDほど高いセキュリティコンテキストレベルに関連付けられることとしても良い。
Figure 0004295111
上記表1において、現在実行中の命令に関するSCID値により表される整数値が被選択メモリページのSCID値により表される整数値よりも数的に大きい場合には、条件“CEI−SCID>SMP−SCID”は真である。現在実行中の命令に関するSCID値により表される整数値が被選択メモリページのSCID値により表される整数値以下の場合には、条件“CEI−SCID≦SMP−SCID”は真である。被選択メモリページにおけるU/Sビットは、被選択メモリページに関するPDEのU/SビットとPTEのU/Sビットとの論理積(AND)である。被選択メモリページのR/Wビットは、被選択メモリページに関するPDEのR/WビットとPTEのR/Wビットとの論理積(AND)である。記号“X”は“Don‘t Care”を示しており、論理値は“0”又は“1”のいずれでも良い。
図8に戻って、CPU SCU416におけるセキュリティチェック用論理回路800は一般保護違反(“GPF”)信号及び“SEM SECURITY EXCEPTION”信号を生成し、それらのGPF信号及びSEM SECURITY EXCEPTION信号をMMU602内部のロジックに提供する。セキュリティチェック用論理回路800がGPF信号をアサートしたとき、MMU602はそのGPF信号を実行ユニット600(図6)に転送する。GPF信号に応じて、実行ユニット600は、x86プロセッサアーキテクチャにおける周知の割り込みディスクリプタテーブル(IDT)のベクタリングメカニズムを用いて、GPFハンドラルーチンにアクセスし実行することとしても良い。
セキュリティチェック用論理回路800がSEM SECURITY EXCEPTION信号をアサートすると、MMU602はそのSEM SECURITY EXCEPTION信号を実行ユニット600に転送する。x86プロセッサアーキテクチャにおけるIDTのベクタリングメカニズムを用いる通常のプロセッサの例外とは異なり、SEMセキュリティ例外を扱うために異なるベクタリング方法が用いられる。SEMセキュリティ例外はx86“SYSENTER”及び“SYSEXIT”命令が行われる場合と同様に、一対のレジスタ(例えば、モデル固有レジスタ即ちMSR)を用いてディスパッチされることとしても良い。レジスタ対は“セキュリティ例外エントリポイント”レジスタであっても良いし、SEMセキュリティ例外が生じた際における命令実行用のブランチターゲットアドレスを定義しても良い。セキュリティ例外エントリポイントレジスタはコードセグメント(CS)を定義して、その後、SEMセキュリティ例外ハンドラのエントリに用いられるべき命令ポインタ(IP又は64ビット版RIP)、スタックセグメント(SS)及びスタックポインタ(SP又は64ビット版RSP)の値を定義することとしても良い。ソフトウェア制御の下、実行ユニット600(図6)は以前のSS、SP/RSP、EFLAGS、CS及びIP/RIPの値を新しいスタックにプッシュして、どこで例外が生じたのかを示すこととしても良い。加えて、実行ユニット600はエラーコードを当該スタックにプッシュしても良い。割り込み(IRET)命令からの通常のリターンは、以前のSS及びSP/RSPの値が常にセーブされていることから、用いられないかも知れず、且つ、たとえCPLにおける変更が生じなかったとしてもスタックスイッチは常に実現されることも特筆される。従って、新しい命令が定義され、SEMセキュリティ例外ハンドラからのリターンが実現されても良い。
図13A及び図13Bは、組み合わせられることにより、複数のメモリページ内部に配置されたデータを格納するために用いられるメモリに対してアクセスセキュリティを付与するための方法1300の一実施例を示すフローチャートを構成する。方法1300は、例えば、図4のコンピュータシステム400がSEMで動作している際に、CPUにより始動された(即ち、ソフトウェアにより始動された)メモリアクセス用の表1の代表的なルールを反映したものである。方法1300はMMU602(図6及び図7)内部に組み込まれても良い。
方法1300のステップ1302において、命令の実行中に生成された線形アドレスがその命令のセキュリティ属性(例えば、その命令を含むタスクのCPL)に従って受取られる。その命令は第1のメモリページ内に存する。ステップ1304において、線形アドレスは、メモリ内に位置するデータ構造(例えば、ページディレクトリ及びページテーブル)の少なくとも一つであってページング対象となるメモリに関するものにアクセスして、被選択メモリページの基底アドレスと被選択メモリページにおけるセキュリティ属性とを取得するために用いられる。被選択メモリページにおけるセキュリティ属性は、例えば、ページディレクトリエントリにおけるU/Sビット及びR/Wビット並びにページテーブルエントリにおけるU/Sビット及びR/Wビットを含むこととしても良い。
判断ステップ1306において、命令のセキュリティ属性及び被選択メモリページのセキュリティ属性は、アクセス権限があるか否かを判断するために用いられる。アクセス権限があった場合には、被選択メモリページにおける基底アドレス及びオフセットはステップ1308において組み合わされ、選択メモリページ内における物理アドレスが生成される。アクセス権限がなかった場合には、違反信号(例えば、一般保護違反信号、即ち、GPF信号)がステップ1310において生成される。
ステップ1312は、ステップ1304とほぼ同時に(即ち、ステップ1304とほぼ並列して)実行されても良いものであるが、このステップにおいては、メモリ内に位置するセキュリティ属性のデータ構造(例えば、図9のSATディレクトリ及びSAT)の少なくとも一つが、第1のメモリページの付加的なセキュリティ属性及び被選択メモリページの付加的なセキュリティ属性を取得するために、命令の実行中に生成された線形アドレスを用いて、アクセスされる。ここで、第1のメモリページは命令を含んでおり、被選択メモリページは線形アドレスに対応する物理アドレスを含んでいる。第1のメモリページの付加的なセキュリティ属性は、例えば、上述したようにセキュリティコンテキストID(SCID)値を含んでいても良い。ここで、SCID値は第1のメモリページにおけるセキュリティコンテキストレベルを示す。同様に、被選択メモリページの付加的なセキュリティ属性は、SCID値を含んでいても良い。ここで、SCID値は被選択メモリページのセキュリティコンテキストレベルを示す。
ステップ1314において、第1のメモリページの付加的なセキュリティ属性により伝達された数値は被選択メモリページの付加的なセキュリティ属性により伝達された数値と比較される。第1のメモリページのセキュリティ属性により伝達された数値と被選択メモリページの付加的なセキュリティ属性により伝達された数値との比較結果に従って、ステップ1316において、被選択メモリページはアクセスされる。
例えば、方法1300が図4のコンピュータシステム400がSEMで動作している際に、CPUにより始動された(即ち、ソフトウェアにより始動された)メモリアクセス用の表1の代表的なルールを反映したものである場合、被選択メモリページは、ステップ1316において、命令のSCID値により表される整数値が被選択メモリページのSCID値により表される整数値以下であった場合(即ち、CEI−SCID ≦ SMP_SCIDの場合)にのみ、アクセスされることとしても良い。一方、命令のSCID値により表される整数値が被選択メモリページのSCID値により表される整数値よりも大きい場合(即ち、CEI−SCID > SMP_SCIDの場合)、被選択メモリページはステップ1316においてアクセスされないこととしても良い。この場合、SEM SECURITY EXCEPTION信号が表1に示されるように且つ上述したようにアサートされることとしても良い。
以上開示された特定の実施例は単なる例であり、本発明は異なるが等価な手法であってここに教授したことの利益を受ける分野における当業者にとって明らかな手法に従って変更され実施されても良い。更に、以下のクレームに記されたこと以外、ここに示された構成又は設計の詳細に制限はない。それゆえ、以上開示された特定の実施例は置き換えられ又は変更されても良いことは明らかであり、かかる変形のすべては本発明の技術的範囲内に属するものと考えられる。従って、ここに求める保護は、以下のクレームに規定されるようなものである。
図1は、x86プロセッサアーキテクチャにおける周知の線形−物理アドレス変換メカニズムの図である。 図2は、x86プロセッサアーキテクチャにおけるページディレクトリエントリ用フォーマットの図である。 図3は、x86プロセッサアーキテクチャにおけるページテーブルエントリ用フォーマットの図である。 図4は、CPUを含むコンピュータシステムの一実施例の図である。ここで、CPUはCPUセキュリティチェックユニット(SCU)を備えている。 図5は、図4のコンピュータシステムにおける様々なハードウェア要素及びソフトウェア要素間の関係を示す図である。 図6は、図4のコンピュータシステムにおけるCPUの一実施例の図である。ここで、CPUはメモリ管理ユニット(MMU)を備えている。 図7は、図6のMMUの一実施例の図である。ここで、MMUはCPU SCUに接続されたページングユニットを備えている。 図8は、図7のCPU SCUの一実施例の図である。 図9は、任意のメモリページについてのセキュリティ属性テーブル(SAT)エントリにアクセスして、当該任意のメモリページの付加的なセキュリティ情報を取得するためのメカニズムの一実施例の図である。 図10は、SATデフォルト用レジスタの一実施例の図である。 図11は、SATディレクトリエントリ用フォーマットの一実施例の図である。 図12は、SATエントリ用フォーマットの一実施例の図である。 図13Aは、組み合わされることにより、多数のメモリページ内部に配置されたデータを格納するために用いられるメモリを管理するための方法の一実施例を示すフローチャートを構成する。 図13Bは、組み合わされることにより、多数のメモリページ内部に配置されたデータを格納するために用いられるメモリを管理するための方法の一実施例を示すフローチャートを構成する。

Claims (9)

  1. 複数のメモリページ内部に配置されたデータを格納するためのメモリを管理するためのメモリ管理ユニットであって、ページングユニット(702)を備えており、該ページングユニットは、カレント命令の実行中に生成された線形アドレス(102)に応じて、少なくとも一つのページテーブルを用いて被選択メモリページ内における対応する物理アドレスを生成すると共に、前記被選択メモリページに対応するページテーブルエントリからセキュリティ属性に従って出力信号を提供するものである、メモリ管理ユニットにおいて、
    該メモリ管理ユニット(602)はカレント命令の実行中に生成された線形アドレス(102)を受けるように接続されたセキュリティチェックユニット(416)を更に備えており、前記線形アドレス(102)は被選択メモリページ内における物理アドレスの一つと対応するものであり、前記セキュリティチェックユニット(416)は前記線形アドレス(102)を用いて前記メモリ(406)内に位置するセキュリティ属性のデータ構造の少なくとも一つにアクセスして前記被選択メモリページのセキュリティ属性を取得するように構成されており、前記セキュリティチェックユニット(416)は前記カレント命令のセキュリティ属性により伝達される数値を前記被選択メモリページのセキュリティ属性により伝達される数値と比較してその比較結果に応じた出力信号を生成するものであり、
    前記メモリ管理ユニット(602)は前記ページングユニット及び前記セキュリティチェックユニット(416)の双方からの前記出力信号に従って前記被選択メモリページにアクセスするように構成されている、メモリ管理ユニット。
  2. 前記被選択メモリページ及び前記カレント命令のうちの少なくとも一つの前記セキュリティ属性はセキュリティコンテキストID(SCID)を備えており、前記SCID値は0以上の整数値であり、前記被選択メモリページのセキュリティコンテキストレベルを示すものである、請求項1記載のメモリ管理ユニット(602)。
  3. 前記セキュリティ属性のデータ構造の少なくとも一つは、セキュリティ属性テーブルディレクトリ(904)及び少なくとも一つのセキュリティ属性テーブル(906)を備えている、請求項1記載のメモリ管理ユニット(602)。
  4. 前記セキュリティ属性テーブルディレクトリ(904)は複数のエントリを備えており、前記セキュリティ属性テーブルディレクトリ(904)における各エントリは現存ビット及びセキュリティ属性テーブル基底アドレス用フィールドを含んでおり、前記現存ビットは前記セキュリティ属性テーブルディレクトリエントリに対応するセキュリティ属性テーブル(906)が前記メモリ内に現存するか否かを示すものであり、前記セキュリティ属性テーブル基底アドレス用フィールドは前記セキュリティ属性テーブルディレクトリエントリに対応する前記セキュリティ属性テーブル(906)の基底アドレス用として確保されているものである、請求項3記載のメモリ管理ユニット(602)。
  5. 前記少なくとも一つのセキュリティ属性テーブル(906)は複数のエントリを備えており、前記セキュリティ属性テーブル(906)の各エントリはセキュリティコンテキストID(SCID)用フィールドを含んでおり、前記SCID用フィールドは複数のビット位置を含んでおり、前記ビット位置はSCID値のバイナリ表現を構成しており、前記SCID値は0以上の整数値であり、前記SCID値は対応するメモリページのセキュリティコンテキストレベルを示すものである、請求項3記載のメモリ管理ユニット(602)。
  6. 前記セキュリティチェックユニット(416)は、前記被選択メモリページの前記セキュリティ属性に加えて、前記被選択メモリページについての一組のセキュリティ属性を受けて、(i)前記カレント命令の前記セキュリティ属性により伝達される前記数値と被選択メモリページの前記セキュリティ属性により伝達される前記数値との比較結果、及び、(ii)前記被選択メモリページの前記一組のセキュリティ属性とに従い、前記出力信号を生成するように構成されている、請求項1記載のメモリ管理ユニット(602)。
  7. 複数のメモリページ内部に配置されたデータを格納するために用いられるメモリ(406)に対してアクセスセキュリティを付与するため、メモリ管理ユニットで実行される方法であって:
    第1のメモリページ内に存する命令の実行中に生成された線形アドレス(102)及び前記線形アドレス(102)のセキュリティ属性を受ける処理と;
    前記線形アドレス(102)を用いて、前記メモリ(406)内に位置するデータ構造の少なくとも一つであってページング対象のメモリに関するものにアクセスし、被選択メモリページの基底アドレス及び前記被選択メモリページのセキュリティ属性を取得する処理と;
    前記被選択メモリページの前記基底アドレスをオフセットと組み合わせて、前記命令の前記セキュリティ属性と前記被選択メモリページの前記セキュリティ属性とによって前記アクセスの権限があることが示される場合には、前記被選択メモリページ内部の物理アドレスを生成する処理と;
    前記命令の前記セキュリティ属性と前記被選択メモリページの前記セキュリティ属性とによって前記アクセスの権限がないことが示される場合には、違反信号を生成する処理と
    を備える方法において:
    前記命令の実行中に生成された前記線形アドレス(102)を用いて前記メモリ(406)内に位置するセキュリティ属性のデータ構造の少なくとも一つにアクセスして、前記第1のメモリページの付加的なセキュリティ属性と前記選択されたメモリの付加的なセキュリティ属性とを取得する処理と;
    前記第1のメモリページの付加的なセキュリティ属性により伝達される数値を前記選択されたメモリの前記付加的なセキュリティ属性により伝達される数値と比較する処理と;
    前記第1のメモリページの前記セキュリティ属性により伝達される数値と選択されたメモリの前記付加的なセキュリティ属性により伝達される数値との比較結果に従って、被選択メモリページにアクセスする処理と
    を更に備えることを特徴とする方法。
  8. 前記アクセスする処理は、前記命令の実行中に生成された前記線形アドレス(102)を用いて前記メモリ(406)内に位置するセキュリティ属性のデータ構造の少なくとも一つにアクセスして、前記第1のメモリページの付加的なセキュリティ属性と前記被選択メモリページの付加的なセキュリティ属性とを取得する処理を備えており、前記少なくとも一つのセキュリティ属性のデータ構造は、セキュリティ属性テーブルディレクトリ(904)と少なくとも一つのセキュリティ属性テーブル(906)とを備えており、前記第1のメモリページの前記付加的なセキュリティ属性は前記第1のメモリページのセキュリティコンテキストID(SCID)値を備えており、前記第1のメモリページにおける前記SCID値は0以上の整数値であり且つ前記第1のメモリページのセキュリティコンテキストレベルを示すものであり、前記被選択メモリページの前記付加的なセキュリティ属性は前記被選択メモリページのセキュリティコンテキストID(SCID)値を備えており、前記被選択メモリページの前記SCID値は0以上の整数値であり且つ前記被選択メモリページのセキュリティコンテキストレベルを示すものである、請求項7記載の方法。
  9. メモリ(406)を管理するためのプロセッサ(402)において、
    メモリ(406)に機能的に接続され、前記メモリ(406)から命令をフェッチして該命令を実行するように構成された実行ユニット(600)と;
    前記メモリ(406)に機能的に接続された請求項1記載のメモリ管理ユニット(602)とを備えるプロセッサ。
JP2003544605A 2001-11-13 2002-09-12 メモリ管理システム及び線形アドレスに基づいたメモリアクセスセキュリティ付与方法 Expired - Lifetime JP4295111B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/010,161 US8051301B2 (en) 2001-11-13 2001-11-13 Memory management system and method providing linear address based memory access security
PCT/US2002/028984 WO2003042839A2 (en) 2001-11-13 2002-09-12 Memory management system and method providing linear address based memory access security

Publications (2)

Publication Number Publication Date
JP2005509946A JP2005509946A (ja) 2005-04-14
JP4295111B2 true JP4295111B2 (ja) 2009-07-15

Family

ID=21744223

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003544605A Expired - Lifetime JP4295111B2 (ja) 2001-11-13 2002-09-12 メモリ管理システム及び線形アドレスに基づいたメモリアクセスセキュリティ付与方法

Country Status (8)

Country Link
US (1) US8051301B2 (ja)
JP (1) JP4295111B2 (ja)
KR (1) KR100964000B1 (ja)
CN (1) CN1278244C (ja)
DE (1) DE10297433B4 (ja)
GB (1) GB2398902B (ja)
TW (1) TWI233737B (ja)
WO (1) WO2003042839A2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6823433B1 (en) * 2001-11-13 2004-11-23 Advanced Micro Devices, Inc. Memory management system and method for providing physical address based memory access security
US6785790B1 (en) * 2002-05-29 2004-08-31 Advanced Micro Devices, Inc. Method and apparatus for storing and retrieving security attributes
US20030226014A1 (en) * 2002-05-31 2003-12-04 Schmidt Rodney W. Trusted client utilizing security kernel under secure execution mode
US7552303B2 (en) 2004-12-14 2009-06-23 International Business Machines Corporation Memory pacing
US7673345B2 (en) 2005-03-31 2010-03-02 Intel Corporation Providing extended memory protection
US20070006294A1 (en) * 2005-06-30 2007-01-04 Hunter G K Secure flow control for a data flow in a computer and data flow in a computer network
US7617534B1 (en) 2005-08-26 2009-11-10 Symantec Corporation Detection of SYSENTER/SYSCALL hijacking
CN100432955C (zh) * 2005-09-02 2008-11-12 中兴通讯股份有限公司 一种非法内存读写的检测方法
US7685638B1 (en) 2005-12-13 2010-03-23 Symantec Corporation Dynamic replacement of system call tables
US7555628B2 (en) * 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US8566565B2 (en) * 2008-07-10 2013-10-22 Via Technologies, Inc. Microprocessor with multiple operating modes dynamically configurable by a device driver based on currently running applications
CN102163320B (zh) * 2011-04-27 2012-10-03 福州瑞芯微电子有限公司 一种图像处理专用可配置的mmu电路
US8631212B2 (en) * 2011-09-25 2014-01-14 Advanced Micro Devices, Inc. Input/output memory management unit with protection mode for preventing memory access by I/O devices
US9442732B2 (en) 2012-03-19 2016-09-13 Via Technologies, Inc. Running state power saving via reduced instructions per clock operation
US9804969B2 (en) * 2012-12-20 2017-10-31 Qualcomm Incorporated Speculative addressing using a virtual address-to-physical address page crossing buffer
US8935800B2 (en) 2012-12-31 2015-01-13 Intel Corporation Enhanced security for accessing virtual memory
CN103164348B (zh) * 2013-02-28 2016-06-08 浙江大学 一种多***下对实时操作***所占用内存的保护方法
US9330026B2 (en) * 2013-03-05 2016-05-03 Qualcomm Incorporated Method and apparatus for preventing unauthorized access to contents of a register under certain conditions when performing a hardware table walk (HWTW)
US9015400B2 (en) 2013-03-05 2015-04-21 Qualcomm Incorporated Methods and systems for reducing the amount of time and computing resources that are required to perform a hardware table walk (HWTW)
US10061940B2 (en) * 2013-07-09 2018-08-28 Andes Technology Corporation Secure protection processor and method including comparing an instruction security attribute of an instruction and a security attribute of an operational event
US10019260B2 (en) 2013-09-20 2018-07-10 Via Alliance Semiconductor Co., Ltd Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match
US9330011B2 (en) 2013-09-20 2016-05-03 Via Alliance Semiconductor Co., Ltd. Microprocessor with integrated NOP slide detector
US9755902B2 (en) 2014-05-20 2017-09-05 Via Alliance Semiconductor Co., Ltd. Dynamic system configuration based on cloud-collaborative experimentation
US9575778B2 (en) 2014-05-20 2017-02-21 Via Alliance Semiconductor Co., Ltd. Dynamically configurable system based on cloud-collaborative experimentation
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US20180081830A1 (en) * 2016-09-20 2018-03-22 Advanced Micro Devices, Inc. Hardware supervision of page tables
US10324857B2 (en) * 2017-01-26 2019-06-18 Intel Corporation Linear memory address transformation and management
US10592437B2 (en) 2017-07-31 2020-03-17 Hewlett Packard Enterprise Development Lp Memory matching key capability
US10831679B2 (en) 2018-03-23 2020-11-10 Intel Corporation Systems, methods, and apparatuses for defending against cross-privilege linear probes
US11983418B2 (en) * 2022-06-27 2024-05-14 Western Digital Technologies, Inc. Security indicator on a data storage device
KR20240044695A (ko) * 2022-09-29 2024-04-05 삼성전자주식회사 전자 장치 및 그 제어 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5627987A (en) 1991-11-29 1997-05-06 Kabushiki Kaisha Toshiba Memory management and protection system for virtual memory in computer system
US5619671A (en) 1993-04-19 1997-04-08 International Business Machines Corporation Method and apparatus for providing token controlled access to protected pages of memory
US6813699B1 (en) * 1995-06-02 2004-11-02 Transmeta Corporation Speculative address translation for processor using segmentation and optional paging
US5859966A (en) * 1995-10-10 1999-01-12 Data General Corporation Security system for computer systems
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
JPH10177560A (ja) * 1996-12-17 1998-06-30 Ricoh Co Ltd 記憶装置
US6154818A (en) 1997-11-20 2000-11-28 Advanced Micro Devices, Inc. System and method of controlling access to privilege partitioned address space for a model specific register file

Also Published As

Publication number Publication date
KR100964000B1 (ko) 2010-06-15
DE10297433B4 (de) 2008-07-24
KR20050027082A (ko) 2005-03-17
US8051301B2 (en) 2011-11-01
GB2398902A (en) 2004-09-01
WO2003042839A2 (en) 2003-05-22
CN1278244C (zh) 2006-10-04
DE10297433T5 (de) 2004-11-11
JP2005509946A (ja) 2005-04-14
US20030093686A1 (en) 2003-05-15
GB2398902B (en) 2006-06-07
GB0408766D0 (en) 2004-05-26
CN1585932A (zh) 2005-02-23
WO2003042839A3 (en) 2003-12-18
TWI233737B (en) 2005-06-01

Similar Documents

Publication Publication Date Title
JP4295111B2 (ja) メモリ管理システム及び線形アドレスに基づいたメモリアクセスセキュリティ付与方法
US6823433B1 (en) Memory management system and method for providing physical address based memory access security
US6854039B1 (en) Memory management system and method providing increased memory access security
US8135962B2 (en) System and method providing region-granular, hardware-controlled memory encryption
JP5581403B2 (ja) メモリのセキュア領域および非セキュア領域へのセキュアモードページテーブルデータの格納
JP4608484B2 (ja) ストレージの無効化、バッファ・エントリの消去
US8296538B2 (en) Storing secure mode page table data in secure and non-secure regions of memory
JP4688490B2 (ja) 高セキュリティ実行モードにおいて高セキュリティカーネルを使用するトラステッド・クライアント
US5852738A (en) Method and apparatus for dynamically controlling address space allocation
KR100995146B1 (ko) 개선된 메모리 엑세스 보안을 제공하는 메모리에 디바이스엑세스를 제어하기 위한 시스템 및 방법
JPS63502224A (ja) 複数のアドレス空間を選択的にサポ−トできるペ−ジ式記憶装置管理ユニット
JPS6248258B2 (ja)
JP2005528690A (ja) セキュア実行モード例外
US7383584B2 (en) System and method for controlling device-to-device accesses within a computer system
US6598050B1 (en) Apparatus and method for limited data sharing in a multi-tasking system
JPH03154949A (ja) ストアされたデータのプロテクシヨン方法及びシステム
US6889308B1 (en) Method and apparatus for protecting page translations
JP3290682B2 (ja) アドレス変換装置
JPH01125638A (ja) キャッシュメモリ装置
JPS63752A (ja) メモリ保護方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050804

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090309

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090409

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120417

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4295111

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130417

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140417

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term