JP5690024B2 - I/oデバイスによるメモリへのアクセスを防止する保護モードを有する入出力メモリ管理ユニット - Google Patents

I/oデバイスによるメモリへのアクセスを防止する保護モードを有する入出力メモリ管理ユニット Download PDF

Info

Publication number
JP5690024B2
JP5690024B2 JP2014532070A JP2014532070A JP5690024B2 JP 5690024 B2 JP5690024 B2 JP 5690024B2 JP 2014532070 A JP2014532070 A JP 2014532070A JP 2014532070 A JP2014532070 A JP 2014532070A JP 5690024 B2 JP5690024 B2 JP 5690024B2
Authority
JP
Japan
Prior art keywords
memory
management unit
memory access
devices
address translation
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.)
Active
Application number
JP2014532070A
Other languages
English (en)
Other versions
JP2014531672A (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 JP2014531672A publication Critical patent/JP2014531672A/ja
Application granted granted Critical
Publication of JP5690024B2 publication Critical patent/JP5690024B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2129Authenticate client device independently of the user

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)

Description

セキュリティは、多くのコンピュータシステムの設計における重要な検討事項である。例えば、デスクトップコンピュータ上の電子文書にアクセスしたいユーザは、当該文書を開くことによって、何かしらの悪意のある行為者が、文書の内容を読み取り及び/又は改ざんできないようにしたいと考えている。しかしながら、コンピュータ環境が、ウィルス、スパイウェア又はバグ等の悪意のあるソフトウェアを含む場合には、文書の内容が漏えい及び/又は改ざんされる場合がある。
悪意のある行為者から文書を保護するために、ユーザは、コンピュータ環境が、公知であって信頼されているソフトウェアのみを含むことを確実にしたいと考えている。例えば、デスクトップコンピュータ上の文書を開くユーザは、コンピュータ環境が、公知であって信頼されているコードのみを確実に実行し、文書の内容を漏えい及び/又は改ざんするおそれのある、悪意のあるソフトウェアが一つも存在しないようにしたいと考えている。他の例では、自動投票機を使用するユーザは、自動投票機が、信頼された自動投票機ソフトウェアのみを実行することを確実にしたいと考えており、当該ソフトウェアが、ユーザの投票を改ざんしたり、権限無き第三者による投票内容の閲覧を可能としてしまうような誤作動を起こさない状態にしたいと考えている。
幾つかのシステムでは、信頼されたソフトウェアのみが読み込まれることを保証する、信頼された初期化手順のためのハードウェア支援を提供する。例えば、中央処理装置(CPU)の指示セットは、信頼されたブートストラップを実施するために使用され得る、例えばSKINIT等のセキュアカーネルの初期化命令を有し得る。信頼されたブートストラップを実施するために、セキュアカーネルの初期化命令は、メモリのごく一部を保護してから、信頼されたソフトウェアを、当該保護された一部にロードし得る。次に、信頼されたブート(TBOOT)シーケンスとして本明細書で言及する、信頼されたソフトウェアは、ソフトウェア構成部をセットアップして、追加の信頼されたソフトウェアを安全な方法でロードし得る。例えば、SKINIT命令は、割り込みを無効にし、保護されたメモリ領域に対する周辺デバイスからの直接的なメモリアクセス(DMA)を無効にし、及び、SKINIT命令を実行するコア以外のコア全てを無効にすることによって、メモリの64K領域を保護する、セキュアカーネルの初期化命令である。64K領域が保護されると、SKINITは、TBOOTシーケンスを、保護された領域にロードし得る。幾つかの例では、SKINIT命令は、システムのコンポーネント(例えば、信頼された処理モジュール)にTBOOTシーケンスのチェックサムを記憶するように命令してもよく、これは後に、TBOOTシーケンスが改ざん又は危険にさらされることなく安全に読み込まれたか否かを検証するために使用され得る。
メモリ管理ユニットは、複数の入出力(I/O)デバイスからのメモリアクセス要求を受信するように構成されている。メモリ管理ユニットは、保護モードを実行し、(I/Oデバイスからの)メモリアクセス要求を、メモリアドレス変換データの同じセットにマッピングすることによって、複数のI/Oデバイスによるメモリアクセスを阻止する。メモリ管理ユニットが保護モードでない場合には、メモリ管理ユニットは、複数のI/Oデバイスからのメモリアクセス要求を、メモリアドレス変換データのそれぞれ異なるセットにマッピングする。従って、メモリ管理ユニットは、通常必要とされるアドレス変換テーブルよりも少ないテーブルを使用して、I/Oデバイスのアクセスからメモリを保護し得る。種々の実施形態では、メモリアドレス変換データは、一つ以上のメモリアドレス変換テーブルを用いてメモリに記憶されてもよいし、及び/又は一つ以上のハードウェアレジスタに記憶されてもよい。
幾つかの実施形態では、ソフトウェアは、メモリ管理ユニットを用いて、信頼された初期化手順を実行してもよい。セキュアな初期化手順は、セキュアカーネルの初期化命令を実行して、複数のI/Oデバイスによる直接的なメモリアクセスからシステムのメモリの一部を保護することを含んでもよい。次に、この手順は、メモリの保護された部分に、一つ以上のアドレス変換テーブルのセットを生成してもよく、前記変換テーブルは、メモリへのアクセスを阻止する。次に、ソフトウェアは、メモリ管理ユニットが、I/Oデバイスからのメモリアクセス要求を、メモリアクセスを防止する一以上のアドレス変換テーブルのセットにマッピングすることによって、前記I/Oデバイスによるメモリアクセスを阻止するように、前記保護モードで実行するように前記メモリ管理ユニットを構成してもよい。メモリ管理ユニットは、保護モードで実行しない場合には、複数のI/OデバイスからのI/O要求を、それぞれ異なる一以上のメモリアドレス変換テーブルのセットにマッピングするように構成されている。
幾つかの実施形態に係る、メモリアクセスパラメータ注入を実行するように構成された入出力メモリ管理ユニット(IOMMU)を備えるコンピュータシステムのハイレベルビュー(high−level view)を示すブロック図である。 本明細書で説明する、IOMMUが提供するメモリ保護を実行するように構成されたシステムのブロック図である。 幾つかの実施形態に係る、保護モードを実行するように構成されたIOMMUを動作させる方法を示すフロー図である。 本明細書で説明する、幾つかの実施形態に係る保護モードを実行可能なIOMMUを用いて、信頼されたブート手順を開始するための方法を示すフロー図である。 本明細書で説明する、幾つかの実施形態に係るメモリアクセスパラメータ注入を実行するように構成されたコンピュータシステムを示すブロック図である。
本明細書は、「ある実施形態(one embodiment)」又は「一実施形態(an embodiment)」との言及を含む。「ある実施形態では(in one embodiment)」又は「一実施形態では(in an embodiment)という表現は、必ずしも同一の実施形態を指すものではない。特定の特徴、構造又は特性は、本開示と一致する任意の好適な方法で組み合わされてもよい。
専門用語。以下の段落において、(添付の請求の範囲を含む)本開示で見られる用語の定義及び/又は文脈(context)を提供する。
「備える(Comprising)」。本用語は制約を持たない。添付の請求の範囲で使用されるように、本用語は、追加の構造又は工程を除外するものではない。「一つ以上のプロセッサユニットを備える装置・・・」と記載された請求項を検討すると、このような請求項は、追加のコンポーネント(例えば、ネットワークインタフェースユニットや、グラフィックス回路など)を装置が含むことを除外しない。
「ように構成されている(Configured To)」。種々のユニット、回路又は他のコンポーネントは、一つ以上のタスクを実行する「ように構成されている」と記載又は主張されてもよい。このような文脈において、「ように構成されている」とは、ユニット/回路/コンポーネントが、動作中に前記一つ以上のタスクを実行する構造(例えば回路)を備えることを示すことによって、構造を暗示するように用いられる。よって、ユニット/回路/コンポーネントは、特定のユニット/回路/コンポーネントが動作中ではない(例えば、ON状態ではない)場合であっても、タスクを実行するように構成されていると言うことができる。「ように構成されている」との記載が用いられるユニット/回路/コンポーネントは、例えば、回路や、動作を行うための実行可能なプログラム命令を記憶するメモリなどのハードウェアを備えている。ユニット/回路/コンポーネントが一つ以上のタスクを実行する「ように構成されている」と記載することは、ユニット/回路/コンポーネントに対し、35 U.S.C. § 112、第4段落が行使されないことを明確に意図している。さらに、「ように構成されている」とは、対象のタスクを実行可能な方法で動作するように、ソフトウェア及び/又はファームウェア(例えば、ソフトウェアを実行するFPGA若しくは汎用プロセッサ)によって操作される一般構造(例えば、一般回路)を含む場合もある。また、「構成する(Configure to)」との記載は、製造プロセス(例えば、半導体工程設備)を、一つ以上のタスクを実施又は実行するように適合されたデバイス(例えば、集積回路)を組み立てるように適合させることを含んでもよい。
「第1(First)」、「第2(Second)」等。本明細書で使用するように、これらの用語は、先行する名詞のラベルとして使用され、(例えば、空間的、時間的、論理的などの)どのような種類の順序も示唆しない。例えば、8つの処理要素又はコアを有するプロセッサにおいて、「第1」の処理要素、「第2」の処理要素という用語は、8つの処理要素のうち任意の2つの処理要素を指すために使用することができる。換言すれば、「第1」及び「第2」の処理要素は、論理処理要素である0及び1に限定されない。
「基づく(Based On)」。本明細書で使用するように、本用語は、決定に影響を与える一つ以上の因子を説明するために使用される。本用語は、決定に影響を与え得る追加の因子を除外しない。すなわち、決定は、専らこれらの因子、少なくとも一部の因子に基づくものであってよい。「Bに基づいてAを特定する」という記載について検討すると、BはAの決定に影響を与え得るが、このような記載は、Cに基づくAの決定を除外するものではない。他の例では、Aは専らBに基づいて特定されてもよい。
幾つかのコンピュータシステムは、信頼されたブート動作に対してハードウェア支援を提供する。例えば、SKINIT命令は、種々のプロセッサ及び周辺デバイスによるアクセスからメモリの64K領域を保護し、信頼されたプログラムシーケンス(TBOOT)を保護された領域にロードし、TBOOTが他の信頼されたソフトウェアを安全な方法でロードすることを許可する。
現在のソフトウェア及びハードウェアシステムは大型化し複雑であるので、SKINIT命令により保護されるメモリの64K領域は、効果的なTBOOTシーケンスを記憶するには小さすぎるようになってきている。例えば、幾つかの現在のシステムでは、メモリアクセス要求において特定された仮想メモリアドレスをシステム物理アドレスに変換することによってメモリ制限を実行するように構成されたI/Oメモリ管理ユニット(IOMMU)を介して、周辺デバイスによるメモリアクセス(例えばDMA)の実行を可能としている。このようなIOMMUの例は、「I/O用複数段階アドレス変換を備えるI/Oメモリ管理ユニット及びコンピュータオフロード(I/O Memory Management Unit Including Multilevel Address Translation for I/O and Computation Offload)」と題する米国特許公開第2011/0023027号明細書に開示されており、当該内容は参照により本明細書に組み込まれる。このようなシステムでは、TBOOTシーケンスは、IOMMU用のI/O変換テーブルを作成することによって、IOMMUを、メモリへのアクセス操作をブロックするように理論的に構成することができ、前記テーブルは所望のメモリ制限を実行する。しかしながら、I/O変換テーブルは、かなり多くのメモリが必要となり、それ故、こうしたデータ構造を、SKINIT命令により保護された64K領域に適合させることが困難又は不可能となる場合がある。例えば、16ビットのバス/デバイス/機能識別子(BDF(登録商標))を使用して周辺デバイスを識別するIOMMUは、最大で65536台の周辺デバイスそれぞれの変換テーブルが必要となる場合がある。各デバイスは2バイト以上のメモリを必要とすることから、64Kメモリのみを有するTBOOTシーケンスは、周辺装置全てからのメモリアクセス操作を制限するようにIOMMUを設定するための十分なリソースを持てない場合がある。
幾つかの実施形態によれば、IOMMUは、保護モードで動作するようにソフトウェアによって設定可能であってもよく、IOMMUは、著しい量の記憶容量を必要とすることなく、周辺デバイスによるメモリアクセスを無効にする。幾つかの実施形態では、IOMMUは、受け取った全てのメモリアクセス要求を、同一のデバイスから受け取った要求として扱うようIOMMUに命令するように設定され得る、保護フラグを備えてもよい。例えば、IOMMUがBDF(登録商標)識別子を用いて複数のデバイスを識別する場合には、保護フラグが設定されたIOMMUは、どのデバイスが要求を送信したかに関わらず、受け取った全てのDMA要求をBDF(登録商標) 0から受け取った要求として扱ってもよい。デフォルトのBDF(登録商標)値(例えば0)に対応するIOMMUデバイステーブルエントリは、IOMMUの任意の機能を用いてプログラミングされてもよく、任意の機能的サブセットに限定される必要はない。IOMMUは、単一のセットのテーブルを用いて、全てのメモリアクセス要求を変換してもよく、これはBDF(登録商標) 0に対応する。従って、関連する全てのI/O変換テーブルは、単一のページに記憶されてもよく、幾つかの実施形態では、ページ内の最初の8〜16バイトの後の任意のメモリが、IOMMU以外の目的に使用され得る。
幾つかの実施形態では、メモリアクセスを阻止する一セットのテーブル(例えば、上記BDF(登録商標) 0に対応するテーブル)が、メモリに記憶されたテーブルとして実行されてもよい。しかしながら、種々の実施形態では、そのようなテーブル(又はテーブルに含まれる情報)の幾つか又は全ては、他の記憶メカニズムを使用して記憶されてもよい。例えば、幾つかの実施形態では、IOMMUは、一つ以上のレジスタに変換データを記憶してもよく、このレジスタは、メモリにマッピングされた入出力(MMIO)空間に現れてもよい。従って、変換情報のメモリ容量(footprint)はゼロに低減され得る。以下で説明する実施形態の多くは、メモリを利用して、メモリアクセスを阻止する変換データを記憶するが、種々の実施形態では、変換データの一部又は全てが、例えばIOMMUレジスタなどの他のメカニズムを使用して記憶されてもよいことが理解されるべきである。変換データという用語は、データが記憶されるシステムの場所に関わらず、メモリアドレス変換を特定するのに使用される任意のデータを指すように、本明細書では概ね使用されている。
保護モードで動作する場合にIOMMUに必要な変換テーブルのサイズを縮小することによって、上述したメカニズムは、TBOOTシーケンスが、小規模なIOMMUデータ構造(例えば、ページテーブル)を用いて、周辺デバイスによるアクセスからメモリ全てを保護することを可能にする。保護モードにおけるIOMMUの保護下において、TBOOTシーケンスは、SKINITの保護限界よりも規模の大きい、より複雑なIOMMUデータ構造及び/又はページテーブルをセットアップしてもよい。そのような構造及びテーブルが作成されると、ソフトウェアは、保護フラグを外すことでIOMMUを通常動作に戻すことができる。
図1は、幾つかの実施形態に係る、メモリアクセスパラメータ注入を実行するように構成されたIOMMUを備えるコンピュータシステムのハイレベルビューを示すブロック図である。図に示す実施形態では、システム10は、一つ以上のプロセッサ12と、メモリ管理ユニット(MMU14)と、メモリコントローラ(MC18)と、メモリ20と、一つ以上の周辺I/Oデバイス22と、IOMMU26とを備えている。MMU14は、一つ以上のトランスレーションルックアサイドバッファ(TLB)16備えており、周辺I/Oデバイス22は、一つ以上のI/O TLB(IOTLB)24を備えている。図に示す実施形態によると、I/O MMU(IOMMU)26は、テーブルウォーカー28と、キャッシュ30と、制御レジスタ32と、制御ロジック34とを備えている。プロセッサ12は、メモリコントローラ18に接続されたMMU14に接続されている。I/Oデバイス22は、メモリコントローラ18に接続されたIOMMU26に接続されている。IOMMU26内では、テーブルウォーカー28と、キャッシュ30と、制御レジスタ32と、制御部34とは、相互に接続されている。
システム10は、システムの上位機能を示しており、実際の物理的実装は任意の形態を取り得る。例えば、MMU14は各プロセッサ12に統合されてもよい。メモリ20が示されているが、メモリシステムは分散型メモリシステムであってもよく、幾つかの実施形態では、メモリアドレス空間は、物理的に分離したメモリコントローラに接続された、物理的に分離した複数のメモリにマッピングされている。IOMMU26は、I/Oソースのメモリ要求とメモリ20との間のパスに沿って任意の場所に設置されてもよく、二つ以上のIOMMUが存在し得る。さらに、IOMMUは、システムの様々なパーツの様々な位置に配置され得る。
プロセッサ12は、任意の所望の命令セットアーキテクチャを実行する、任意のプロセッサハードウェアを備えてもよい。ある実施形態では、プロセッサ12は、x86アーキテクチャ、より詳細にはAMD64(登録商標)アーキテクチャを実行する。種々の実施形態では、プロセッサは、スーパーパイプライン及び/又はスーパースカラであってもよい。二つ以上のプロセッサ12を備える実施形態では、離散的に実行されてもよいし、チップ多層プロセッサ(CMP)及び/又はチップ多層スレッド(CMT)として実行されてもよい。
メモリコントローラ18は、メモリ20と、システム10の他の部分との間でインタフェースをとるために設計された任意の回路を備えてもよい。メモリ20は、例えば、一つ以上のRAMBUS DRAM(RDRAM)、同期DRAM(SDRAM)、DDR SDRAM、スタティック型RAMなどの任意の半導体メモリを備えてもよい。メモリ20は、システム内に分散されてもよく、従って、複数のメモリコントローラ18が存在してもよい。
MMU14は、プロセッサ12から供給されたメモリ要求のためのメモリ管理ユニットを備えてもよい。MMUは、トランスレーションルックアサイドバッファ(TLB)16とともに、テーブルウォーク機能性を備えてもよい。MMU14が変換を行う場合に、MMU14は、CPU変換テーブル50に対する変換メモリ要求(例えば、図1の破線矢印46,48として図示する)を生成してもよい。CPU変換テーブル50は、プロセッサ12により実行される命令セットアーキテクチャで定義されるような変換データを記憶してもよい。
I/Oデバイス22は、コンピュータシステム10と他のデバイスとの通信を行い、コンピュータシステム10のためのヒューマンインタフェースを提供し、ストレージ(例えば、ディスクドライブ、コンパクトディスク(CD)又はデジタルビデオディスク(DVD)ドライブ、固体ストレージ等)を提供し、及び/又は、コンピュータシステム10に強化機能性を提供する任意のデバイスを備えてもよい。例えば、I/Oデバイス22は、一つ以上のネットワークインタフェースカードと、一つ以上の統合ネットワークインタフェース機能と、一つ以上のモデムと、一つ以上のビデオアクセラレータと、一つ以上のオーディオカード若しくは統合オーディオハードウェアと、一つ以上のハードディスクドライブ、フロッピー(登録商標)ディスクドライブ若しくはドライブコントローラと、例えばキーボード、マウス、タブレットなどのユーザ入力デバイスに接続するための一つ以上のハードウェアと、一つ以上のビデオ表示用ビデオコントローラと、一つ以上のプリンタインタフェース用ハードウェアと、例えば周辺コンポーネントインタフェース(PCI)、PCIエクスプレス(PCIe)、PCI−X、USB、ファイアーワイヤ、SCSI(小型コンピュータシステム用インタフェース)等の一つ以上の複数の周辺インタフェースのための一つ以上のブリッジと、一つ以上のサウンドカードと、例えば汎用インタフェースバス(GPIB)若しくはフィールドバスインタフェースカードなどの一つ以上の様々なデータ取得カードとを備えてもよい。「周辺デバイス」という用語は、幾つかのI/Oデバイスを説明するために使用されてもよい。
幾つかの例では、一つ以上のI/Oデバイス22は、例えばIOTLB24及び/又はMMUなどの入出力トランスレーションルックアサイドバッファ(IOTLB)を備えてもよい。こうしたIOTLBは、IOMMU26の外部に存在することから、「リモートIOTLB」と呼ばれ得る。この場合、既に変換されたアドレスは、IOMMU26がメモリ要求の変換を再度試みることのない何らかの方法でマークされる。ある実施形態では、変換されたアドレスは、「予め変換されたもの(pretranslated)」として単にマークされてもよい。
以下に説明するように、IOMMU26は、システム10において容易に仮想化するための種々の特徴を備えてもよい。以下の説明では、(下層ハードウェアでの実行をスケジューリングする)仮想マシンを管理し、種々のシステムリソースへのアクセスを制御し、及び/又は、他の機能を提供する仮想マシンモニタ(VMM)について言及する。VMM及びハイパーバイザという用語は、本開示において交互に使用され得る。
説明する実施形態では、プロセッサ12は、仮想環境でソフトウェアを実行するように構成されている。従って、図1は、VMM106上で実行する三つの仮想マシン100A,100B,100C(すなわち、VMゲスト1〜3)を示している。所定の実施形態における仮想マシンの数は、様々な時間で変更されてもよく、ユーザが仮想マシンを開始及び停止するまで、使用中に動的に変化してもよい。図に示す実施形態では、仮想マシン100Aは、一つ以上のゲストアプリケーション102と、サービスを実行及び提供し及び/又はアプリケーション102の実行を管理するように構成されたゲストオペレーティングシステム(OS)104とを備える。OS104は、システム10の物理ハードウェアではなく、VMM106によってOSのために作成された仮想マシンを制御するため、「ゲスト」OSと呼ぶ。同様に、VM100B及びVM100Cの各々は、一つ以上のゲストアプリケーション及びゲストOSを備え得る。
仮想マシンにおけるアプリケーションは、仮想マシンの仮想アドレス空間、すなわちゲスト仮想アドレス(GVA)を使用する。仮想マシンのゲストOSは、IOMMU26の設定(例えばページテーブル)を管理して、IOMMUが仮想マシンのGVAのゲスト物理アドレス(GPA)へマッピングするのを可能にする。GPAは、同一の仮想マシンに固有である。VMMが介在することなくシステムのハードウェアで直接的に起動するのであれば、OS設定が生成する物理アドレスは、実際には、システム10のシステム物理アドレス(SPA)である。しかしながら、ゲストOSは仮想マシンで起動するために、ゲスト固有のGVAから同一ゲスト固有のGPAへ変換するための設定を提供するだけである。したがって、幾つかの実施形態では、仮想マシンモニタ(例えば、VMM106)は、下層システムのSPAに対応する種々のゲストマシンのGPAをマッピングするために、IOMMUで設定を管理してもよい。従って、I/Oデバイス22が、ゲスト100AのGVAを特定するメモリへのアクセス要求を行う場合には、IOMMU26は、VMM106及びゲストOS104からの設定を使用してGVAをSPAに変換し得る。
図1に示すように、I/Oデバイス22からメモリ20へのパスは、プロセッサ12からメモリ20へのパスと少なくとも部分的に分離している。具体的には、I/Oデバイス22からメモリ20へのパスは、MMU14を通らない代わりにIOMMU26を通る。従って、MMU14は、I/Oデバイス22から供給されたメモリ要求についてのメモリ管理を提供しなくてもよい。
一般的に、メモリ管理は、アドレス変換とメモリ保護とを提供してもよい。アドレス変換は、仮想アドレスを物理アドレスに変換する(例えば、上述したように、GVAをSPAに変換する)。メモリ保護機能は、ある程度の粒度(例えば、ページ)でのメモリに対する読み出しアクセス及び/又は書き込みアクセスとともに、例えば、特権レベルの要件、キャッシュ可能性及びキャッシュ制御(例えば、ライトスルー又はライトバック)、コヒーレンス、非実行フラグ(NX)などの種々の他のメモリアクセスパラメータを制御してもよい。任意の一連のメモリ保護が種々の実施形態で実施されてもよい。幾つかの実施形態では、IOMMU26によって実行されたメモリ保護は、MMU14によって実行されたメモリ保護と少なくともある点において異なってもよい。ある実施形態では、IOMMU26によって実行されたメモリ保護は、IOMMU26及びMMU14によって使用される変換データを記憶する変換テーブルが(考察を簡易にするために図1では別々に示す)共有され得るように、規定されてもよい。他の実施形態では、変換テーブルは、種々の内容に対し、IOMMU26及びMMU14間で分離され、共有されなくてもよい。
I/Oデバイス22は、直接的なメモリアクセス(DMA)、アドレス変換サービス(ATS)アクセス、ページ要求インタフェース(PRI)アクセス、及び/又はメモリ20にアクセスするための他の種類の操作などのメモリアクセス要求を発行するように構成されてもよい。幾つかの操作タイプは、さらにサブタイプに分けられる。例えば、DMA操作は、読み出し操作、書き込み操作又は連結操作であり得る。しかしながら、DMAという用語は、I/Oデバイスから任意のメモリへのアクセス要求を指すように本明細書では概ね使用され得る。メモリアクセス操作は、一つ以上のプロセッサ12上で実行するソフトウェアによって起動され得る。ソフトウェアは、I/Oデバイス22を直接的又は間接的にプログラミングして、DMA操作を行い得る。
ソフトウェアは、このソフトウェアが実行するアドレス空間に対応するアドレスを、I/Oデバイス22に提供してもよい。例えば、プロセッサ12上で実行するゲストアプリケーション(例えば、App102)は、GVAをI/Oデバイス22に提供してもよく、プロセッサ12上で実行するゲストOS(例えば、OS104)は、GPAをI/Oデバイス22に提供してもよい。
I/Oデバイス22がメモリアクセスを要求する場合には、ゲストアドレス(GVA又はGPA)は、IOMMU26によって、対応するシステム物理アドレス(SPA)に変換されてもよい。IOMMUは、メモリ20へのアクセスのために、SPAをメモリコントローラ18に提示してもよい。すなわち、IOMMU26は、I/Oデバイス22により供給されたメモリ要求を修正して、当該要求において受信したアドレスをSPAに変更(例えば、変換)し、その後、メモリ20へアクセスするためにSPAをメモリコントローラ18に転送してもよい。
種々の実施形態では、IOMMU26は、I/Oデバイスから受信するアドレスの種類に応じて、一段変換、二段変換を提供し、又は変換しない場合もある。例えば、IOMMU26は、GPAの受信に応じて、GPAからSPA(一段)変換を提供してもよく、GVAの受信に応じて、GVAからSPA(二段)変換を提供してもよい。よって、ゲストアプリケーションは、メモリアクセスを要求する際に、GVAアドレスをI/Oデバイスに直接的に提供することによって、従来のVMMの受け取り及び変換を不要にする。一段変換、二段変換又は変換無しが記載されているが、他の実施形態では、追加アドレス空間が使用され得ることが想定される。そのような実施形態では、追加アドレス空間に適合させるため、IOMMU26によって追加段階の変換(複数段階による変換)が行われてもよい。
図1に示すIOMMU26は、所定のメモリ要求に対する変換を行うためのI/O変換テーブル36を検索するテーブルウォーカー28を備えてもよい。テーブルウォーカー28は、メモリ要求を生成して、変換テーブル36から変換データを読み出してもよい。変換テーブルの読み出しは、図1の破線矢印38,40で示されている。
より迅速な変換を促進するために、IOMMU26は、幾つかの変換データをキャッシュしてもよい。例えば、キャッシュ30は、TLBに類似するキャッシュの形態であってもよく、ゲスト仮想ページ番号及びゲスト物理ページ番号をシステムの物理ページ番号及び対応する変換データにマッピングした過去の変換結果をキャッシュする。所定のメモリ要求に対する変換がキャッシュ30内で検出されない場合には、テーブルウォーカー28が呼び出されてもよい。種々の実施形態では、テーブルウォーカー28は、ハードウェア若しくはマイクロコントローラ、又は他のプロセッサ及び対応する実行可能コード(例えば、IOMMU26の読取り専用メモリ(ROM))で実現されてもよい。他のキャッシュは、ページテーブル若しくはその一部及び/又はデバイステーブル若しくはその一部をキャッシュするために、キャッシュ30の一部として含まれてもよい。従って、IOMMU26は、メモリ20に記憶された変換データから読み出され又は引き出された変換データを記憶するための一つ以上のメモリを備えてもよい。
制御ロジック34は、キャッシュ30にアクセスして、所定のメモリ要求に対する変換のヒット/ミスを検出するように構成されてもよく、テーブルウォーカー28を呼び出してもよい。また、制御ロジック34は、変換されたアドレスを用いて、I/Oデバイスからのメモリ要求を変更し、この要求を上流のメモリコントローラ18に転送するように構成されてもよい。
制御ロジック34は、制御レジスタ32内にプログラミングされた、IOMMU26の他の種々の機能を制御してもよい。例えば、制御レジスタ32は、メモリ管理ソフトウェアのコマンドキュー42となるメモリ領域を定義して、制御コマンドをIOMMU26に伝えてもよい。制御ロジック34は、コマンドキュー42から制御コマンドを読み出し、当該制御コマンドを実行するように構成されてもよい。幾つかの実施形態では、制御レジスタ32は、イベントログバッファ44となるメモリの他の領域を定義してもよい。制御ロジック34は、種々のイベントを検知して、当該イベントをイベントログバッファ44に書き込んでもよい。イベントは、IOMMU26の変換及び/又は他の機能に関して制御ロジック34によって検出された種々のエラーを含んでもよい。また、制御ロジック34は、IOMMU26の他の特徴を実装してもよい。
幾つかの実施形態では、制御レジスタ32は、ソフトウェアによって用いられ、IOMMUを保護モードにし得る一つ以上の保護フラグ及び/又はフィールドを備えてもよい。本明細書で説明する実施形態の多くは、IOMMUを保護モードに移行するようにソフトウェアによって設定され、ビットがオフにされるとIOMMUを通常操作に戻し得る保護フラグ(例えば、1ビット)を用いている。しかしながら、種々の他の実施形態では、フラグ及び/又はフィールドの組み合わせによって、同様の機能が実現されてもよい。
本明細書で説明するように、図2は、IOMMUが提供するメモリ保護を実行するように構成されたシステムのブロック図である。幾つかの実施形態では、システム200は、図1のI/Oデバイス22と、IOMMU26と、メモリ20とに対応してもよい。類似点が分かり易くなるように、システム200の幾つかのコンポーネントは、システム10のうち類似するコンポーネントに対応する番号を使用してラベル付けされている。しかしながら、そのようなコンポーネントにより提供される機能は、特定の実施詳細に応じて二つのシステムによって異なってもよい。
図に示す実施形態によると、システム200は、図1における一つのI/Oデバイス22に対応し得るI/Oデバイス205を備える。I/Oデバイス205は、IOMMU26に対するメモリアクセスを要求(例えばDMA)するように構成され得る。上述したように、周辺デバイスからメモリへのアクセス要求は、特定のメモリへのアクセス要求を生じさせた特定のデバイスを示すBDF(登録商標)番号などのデバイス識別子を含み得る。例えば、デバイス205からメモリへのアクセス要求は、デバイスID207を用いてタグ付けされる。
IOMMU26は、メモリアクセス要求を作動させ、メモリアドレス変換を行い、メモリ保護を実施し、及び/又は、IOMMU26の他の種々の機能を実行するように構成され得る制御ロジック34を備える。制御ロジック32の機能は、種々の制御レジスタ32の各々に記憶された値によって決まり得る。
メモリ変換を行うために、IOMMU26は、メモリ20に記憶された種々の変換テーブルへのアクセスを要求してもよい。上記テーブルは、デバイステーブル225であってよく、メモリアクセス要求を行うことが可能なI/Oデバイスごとのエントリを含んでもよい。IOMMU26は、デバイステーブルが記憶されたメモリ20のメモリアドレスを記憶し得るデバイステーブル基準レジスタ215に記憶されたメモリアドレスを使用して、デバイステーブルを配置するように構成されてもよい。従って、メモリアドレスを変換する場合には、IOMMUは、基準レジスタ215からテーブルのメモリアドレスを読み出すことによって、デバイステーブルを配置し得る。
幾つかの実施形態では、(例えば、225などの)デバイステーブルは、メモリへのアクセス要求を行うことが可能なI/Oデバイスごとのデバイステーブルエントリ(DTE)を備えてもよい。図に示す実施形態では、デバイステーブル225は、デバイステーブルエントリ(DTE)230を備える。一般的な操作(例えば、非保護モード)では、各DTEはそれぞれの周辺デバイスに対応する。例えば、各DTEはデバイスに対応するそれぞれのデバイス識別子(例えば、デバイスID207など)に対応し得る。DTEは、上記デバイスからのメモリアクセス要求のメモリアドレスを変換するのに使用可能なポインタ及び/又は他のデータ構造を含み得る。
デバイステーブル225は、BDF(登録商標)番号などのデバイス識別子によって索引付けられてもよい。従って、IOMMUの制御ロジックは、所定のメモリアクセス要求の一部として受信したデバイス識別子を使用して、要求元のデバイスに対応するDTEを配置し得る。例えば、図に示す実施形態では、I/Oデバイス205は、IOMMUと通信する際にデバイスID207を備え得る。I/Oデバイス205から受信したメッセージに応じて、IOMMUは、デバイスID207を使用して、デバイス毎のDTE235のうち対応するDTEをデバイステーブル225に配置し得る。
異なる実施形態では、デバイス識別子は、様々な方法で規定されてもよく、デバイスが設けられた周辺インタコネクタに基づいてもよい。例えば、ペリフェラルコンポーネントインターコネクト(PCI)デバイスは、バス番号、デバイス番号及び機能番号(BDF(登録商標))からデバイスIDを形成してもよく、一方で、ハイパートランスポート(HT)デバイスは、バス番号とユニットIDとを使用してデバイスIDを形成してもよい。
各DTEは、IOMMUが対応デバイスからのメモリアドレスを変換するのに使用可能な変換テーブル(例えば、テーブル240)のセットに対する一つ以上のポインタを備え得る。ポインタ及び変換テーブル240の特定の数及び種類は実施形態によって異なる場合があり、複数段階の変換を実行する種々の変換及び/又はページテーブルを備え得る。例えば、ポインタは、変換テーブル240における検索変換のための開始点であるページテーブルを指してもよい。開始ページテーブルは、階層的な方法で、他のページテーブルに対するポインタを備えてもよい。幾つかのテーブルは、処理アドレス空間識別子(PASID)などの処理識別子によって索引付けられてもよく、他のテーブルは、変換されるアドレス(例えば、GVA又はGPA)の種々のビットを使用して索引付けられてもよい。従って、変換テーブル240は、一段又は二段の種々の変換を支援し得る。
幾つかの実施形態では、DTE230は、制限DTEを備えてもよい。制限DTEは、制限DTEにマッピングする任意のデバイスからのメモリアクセス操作を許可しないように構成されてもよい。例えば、幾つかの実施形態では、制限DTEは、対応するデバイスによるメモリアクセスを明確に禁止する種々の制御フラグを備え得る。他の実施形態では、制限DTE又は制限DTEに示されたメモリテーブル240は、DTEに対応するデバイスが、メモリのうち、信頼されるブートシーケンスに脅威を与えないごくわずかな部分又はゼロサイズの部分にのみアクセスし得ることを示してもよい。制限DTEにマッピングするデバイスのメモリアクセスを禁止する他の種々のメカニズムが可能である。
幾つかの実施形態では、(220などの)ソフトウェアは、保護モードで実行するようにIOMMUを構成してもよく、IOMMUは、全てのメモリアクセス要求を制限DTE230にマッピングし得る。種々の実施形態では、ソフトウェア220は、オペレーティングシステム、仮想オペレーティングシステム、仮想マシンモニタ、TBOOTシーケンス及び/又は他のソフトウェアに対応し得る。図2では、ソフトウェア220は、保護フラグ210を制御レジスタ32に設定することによって保護モードで実行するように、IOMMU26を構成してもよい。
保護モードで実行する間、IOMMU26は、あらゆるメモリアクセス要求を制限DTEにマッピングしてもよく、これにより、周辺デバイスによるメモリアクセスを効果的に禁止する。あらゆるメモリアクセス要求が同一のDTE(すなわち制限DTE)にマッピングされるため、IOMMUが保護モードで実行する間、デバイステーブル225は、制限DTEを含めることのみを要する。それ故、信頼されたブート初期化中にデバイステーブルのデータ構造を記憶するのに必要なメモリ容量は、少量である。例えば、幾つかの実施形態では、TBOOTシーケンスは、一つのエントリである制限DTEのみを含むデバイステーブル225を作成してもよい。そのようなテーブルは、DTE230に他のデバイス毎のDTEを含める必要がないので、テーブルを比較的小さく、SKINIT命令によって作成された、保護された64Kのメモリ領域内に適合することができる。制限DTEが作成されると、TBOOTシーケンスは、保護フラグ210を設定して、周辺装置によるメモリアクセスを全て無効にしてもよい。
図3は、幾つかの実施形態による、保護モードを実行するように構成されたIOMMUの操作方法を示すフロー図である。図3の方法は、図1のIOMMU26などのIOMMUによって実行される。
305に示すように、IOMMU26がI/Oデバイスからメモリアクセス要求を受信すると、方法300が開始する。種々の状況では、要求は、メモリデータの読み出し及び/又は書き込みのためのDMA要求に対応してもよい。要求は、少なくとも一つのメモリアドレス(例えば、データを読み出し及び/又は書き込みするためのアドレス)を備えてもよく、メモリアドレスは、仮想アドレス空間で特定されてもよい。また、要求は、BDF(登録商標)番号などのデバイス識別子を含んでもよい。
310にて、IOMMUは、保護モードで実行するか否かを判断する。幾つかの実施形態では、IOMMUは、保護フラグ210(図2に図示)などの一つ以上の保護フラグを検査して、310の判断を行ってもよい。例えば、保護フラグ210がセットされている場合には、IOMMUが保護モードにあると判断してもよい。
IOMMUが保護モードであると判断した場合には、310からの肯定的な出口で示されるように、要求のデバイス識別子をデフォルト値に設定する。例えば、315にて、IOMMUは、BDF(登録商標)値を例えば0などのデフォルト値に設定する。他の実施形態では、様々なデフォルト値が使用されてもよく、及び/又は、デバイスを識別するためにBDF(登録商標)値以外の識別子が使用されてもよい。
320にて、IOMMUは、要求に関連付けられたBDF(登録商標)番号に対応するDTEを読み出してもよい。310からの否定的な出口に示されるように、IOMMUが保護モードで実行していない場合には、BDF(登録商標)番号は、DMA要求を行うI/Oデバイスに対応してもよい。この場合、IOMMUは、(320にて)I/Oデバイスに対応するDTEを識別及び呼び出してもよい。しかしながら、(310からの肯定的な出口で示されるように)IOMMUが保護モードで実行している場合には、BDF(登録商標)番号は、315にてデフォルト値(例えば0)に設定されている。それ故、そのような場合、IOMMUは、(320で)制限DTEを識別し及び呼び出す。
325にて、IOMMUは、320からのDTEを使用して、305におけるDMA要求が許可されるか否かを決定してもよい。上述したように、制限DTEは、制限DTEにマッピングするデバイスからのメモリアクセス操作を許可しないように構成されてもよい。異なる実施形態では、制限DTEは、メモリアクセスを明確に禁止する制御フラグを備えてもよく、デバイスを示す変換テーブルへのポインタは、メモリの少量若しくはゼロサイズの部分、及び/又は信頼されたブート処理をDMAアクセスが妨害するのを禁止する他のメカニズムにのみアクセスしてもよい。
IOMMUは、DMA操作が許可されると判断した場合には、325からの肯定的な出口で示されるように、330にて示すようにDMAの一つ以上のアドレスを変換し、335にて示すようにDMA操作を行う。上述したように、DMA要求で検出されたアドレスを変換することは、I/O変換テーブル36及び/又はテーブル240などの一つ以上の変換テーブルを分析することを含んでもよい。
上述したように、幾つかの実施形態では、IOMMUは、保護モードを実行する変換データを、一つ以上のメモリベースの変換テーブルではなく、ハードウェアレジスタに記憶してもよい。保護モードを実行するために、IOMMUは、(315及び/又は320など)メモリではなくハードウェアレジスタから変換データを読み出すことによって、(310からの肯定的な出口で示されるように)保護モードであると判断し得る。レジスタから変換データを読み出した後、方法は、325にて再開してもよい。
325からの否定的な出口で示されるように、DMA操作が許可されないと判断した場合には、IOMMUは、340に示すようにメモリアクセス操作を拒否してもよい。種々の実施形態では、上記操作の拒否は、様々な方法で行われ得る。例えば、幾つかの実施形態では、メモリアクセス要求の拒否は、要求元のデバイスに対してエラーコードを返すことを含み得る。種々の実施形態では、IOMMUは、周辺デバイスに種々のコードを返すか、又は全く返さないなどの他の行為を行い得る。
図4は、本明細書で説明するように、幾つかの実施形態による、保護モードを実行可能なIOMMUを使用して、信頼されたブート手順を開始するための方法を示すフロー図である。種々の実施形態では、方法400は、オペレーティングシステム、ゲストオペレーティングシステム、仮想マシン、TBOOTシーケンス及び/又は他のソフトウェアなどのソフトウェアによって行われてもよい。
方法400は、405に示すように、メモリの一部を保護することによって開始する。例えば、ソフトウェアは、上述したように、64Kメモリを保護するように構成されたSKINIT命令などの特殊目的の命令を実行することによって、メモリの一部を保護してもよい。
410にて、ソフトウェアは、TBOOTシーケンスを、405にて保護されたメモリの一部にロードする。415にて、TBOOTシーケンスは、(例えば、225などの)メモリの保護部分にデバイステーブルを作成し、制限DTEをデバイステーブルに含める。制限DTEは、デバイステーブル内のDTEのみであってもよく、DTEにマッピングするデバイスがDMAアクセスするのを防止する一つ以上のフラグ、フィールド及び/又はポインタを備えてもよい。
420にて、ソフトウェアは、IOMMUの保護フラグを設定する。保護フラグは、システム200の保護フラグ210に対応してもよい。保護フラグを設定することは、保護モードの実行を開始するようにIOMMUに命令することであってもよい。保護モードで実行する間、IOMMUは、どのデバイスが実際に要求を送信したかに関わらず、IOMMUが受信したあらゆるメモリアクセス要求に対して、デフォルトのデバイス識別子を取り得る。幾つかの実施形態では、デフォルトのデバイス識別子は、415にて作成された制限DTEに対応してもよい。このような実施形態では、制限DTEは、制限DTEにマッピングする周辺デバイスによるメモリアクセスを防止するように構成されており、保護モードで実行するIOMMUは、全てのデバイスを制限DTEにマッピングすることから、IOMMUが保護モードである間、どのデバイスもDMA操作を行わない。
425にて、TBOOTシーケンス又はTBOOTシーケンスによってロードされた他のソフトウェアなどのソフトウェアは、種々の周辺デバイスによるDMAアクセスを規制するように構成された追加の変換テーブルを構築してもよい。例えば、425にて、ソフトウェアは、追加のDTEをデバイステーブルに作成してもよい。追加のDTEの各々は、それぞれの周辺デバイスに対応してもよく、それぞれのデバイスからのDMA操作のアドレスを変換するように構成された一つ以上の変換テーブルのためのポインタを備えてもよい。425にて構築された変換テーブルは、対応する周辺デバイスによる、メモリの信頼された種々の部分へのアクセスを無効にする規制を備えてもよい。
ソフトウェアは、425に示すように周辺装置からメモリへのDMAアクセスを制御するように構成された変換テーブルを構築すると、430に示すように保護フラグをオフ(unset)してもよい。保護フラグがオフにされると、IOMMUは、非保護モードでの実行に戻ってもよい。非保護モードで実行する際、IOMMUは、要求がタグ付けされたデバイス識別子(すなわち、要求元のデバイスの識別子)を特定し、特定したデバイス識別子に対応する一つ以上の変換テーブル(例えば、425で構築された変換テーブル)を配置し、配置されたテーブルを使用して、メモリアクセス要求内で特定された一つ以上の複数のメモリアドレスを変換することによって、受け取ったメモリアクセス要求を処理してもよい。
図5は、本明細書で説明するように、幾つかの実施形態による、メモリアクセスパラメータ注入を行うように構成されたコンピュータシステムを示すブロック図である。コンピュータシステム500は、限定されるものではないが、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ若しくはノートブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、コンシューマデバイス、アプリケーションサーバ、ストレージデバイス、スイッチ、モデム、ルータなどの周辺デバイス、又は一般的な任意の種類のコンピューティングデバイスを含む、種々の任意の種類のデバイスに対応し得る。
コンピュータシステム500は、複数の物理及び/又は論理コアを備え得る一つ以上のプロセッサ560を備えてもよい。何れかのプロセッサ560は、図1のプロセッサ12に対応してもよく、VMM及び/又は複数のゲストオペレーティングシステムを実行してもよい。また、コンピュータシステム500は、図1のI/Oデバイス22に対応し得る一つ以上の周辺デバイス550と、本明細書で説明したように、図1のIOMMU26に対応し得るIOMMUデバイス555とを備えてもよい。
図に示す実施形態によれば、コンピュータシステム500は、一つ以上のプロセッサ560などの複数の処理コア間で共有され得る一つ以上の共有メモリ510(例えば、一つ以上のキャッシュ、SRAM、DRAM、積層メモリ、RDRAM、EDO RAM、DDR 5 RAM、SDRAM、Rambus RAM、EEPROMなど)を備えてもよい。幾つかの実施形態では、様々なプロセッサ560は、様々な待ち時間及び/又は帯域特性で共有メモリ510にアクセスするように構成されてもよい。メモリ510の一部又は全ては、図1のメモリ20に対応してもよい。
一つ以上のプロセッサ560と、周辺デバイス550と、共有メモリ510とは、相互接続540及び相互接続541を介して連結されてもよい。種々の実施形態では、システムは、より少ないコンポーネントを備えてもよいし、図5に示されない追加のコンポーネントを備えてもよい。さらに、図5に示す様々なコンポーネントは、追加のコンポーネントに組み込まれてもよいし、追加のコンポーネント内で分離されてもよい。
幾つかの実施形態では、共有メモリ510は、例えばプラットフォームネイティブバイナリ、Java(登録商標)バイトコードなどの任意の解釈言語、例えばC/C++、Java(登録商標)などの他の任意の言語、又はそれらの任意の組み合わせで符号化され得るプログラム命令520を記憶してもよい。プログラム命令520は、VMM528、任意数の仮想マシン、TBOOTシーケンス526、任意数のオペレーティングシステム524(ゲスト型又は従来型)、OS524上で実行するように構成された任意数のアプリケーション522(ゲスト型又は従来型)などのソフトウェアを実行するためのプログラム命令を備えている。ソフトウェア522〜528のうち何れかは、単一又は複数のスレッドであってよい。種々の実施形態では、本明細書で説明したように、OS524及び/又はVMM528は、保護フラグ557をIOMMU555に設定して、IOMMU555を保護モードで実行させてもよい。
図に示す実施形態によれば、共有メモリ510はデータ構造530を備え、データ構造530は、IOMMU555を介して各プロセッサ560及び/又は各周辺デバイス550によりアクセスされ得る。データ構造530は、図3の325及び図1の36などの種々のI/O変換テーブルを備えてもよい。各プロセッサ560は、共有メモリ510の種々のコンポーネントをローカルキャッシュにキャッシュしてもよく、キャッシュコヒーレンスプロトコルに従ってメッセージを交換することによって、これらのキャッシュにデータを統合してもよい。
ソフトウェア522〜528を実行するために使用されるプログラムなどのプログラム命令520は、コンピュータ可読記憶媒体に記憶されてもよい。コンピュータ可読記憶媒体は、機械(例えば、コンピュータ)が読み取り可能な形式(例えば、ソフトウェア、処理アプリケーション)に情報を記憶する任意の仕組みを備え得る。コンピュータ可読記憶媒体は、限定されるものではないが、磁気記憶媒体(例えば、フロッピー(登録商標)ディスク)、光学記憶媒体(例えば、CD−ROM)、光磁気記憶媒体、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能メモリ(例えば、EPROM及びEEPROM)、フラッシュメモリ、又はプログラム命令を記憶するのに好適な電気若しくは他の種類の媒体を備え得る。
上述したように、幾つかの実施形態では、コンピュータ可読記憶媒体は、プログラムにより読み込まれた命令を記憶するために使用されてもよく、一つ以上のプロセッサ550を備えるハードウェアを直接的又は間接的に組み立てるために使用され得る。例えば、命令は、Verilog又はVHDLなどの上位設計言語(HDL)でハードウェア機能の行動レベル又はレジスタトランスファレベルを記述する一つ以上のデータ構造を記述し得る。記述は、ネットリストを生成する記述を合成し得る合成ツールにより読み出される。ネットリストは、プロセッサ500の機能を表す(例えば、合成ライブラリで規定される)一式のゲートを備え得る。次に、ネットリストは、マスクがかけられた幾何学的形態を記述し得るデータセットを生成するために設置及び送信される。次に、マスクは、半導体回路又はプロセッサ50及び/又は550に対応する回路を製造する種々の半導体製造工程で使用され得る。代替的に、データベースは、所望の(合成ライブラリを有する、若しくは有さない)ネットリスト又はデータセットであり得る。
具体的な実施形態を先に説明したが、特定の特徴に対し単一の実施形態が説明されたとしても、これらの実施形態は本開示の範囲を限定することを意図するものではない。本開示で提供される特徴の例は、特に明記しない限り、限定的ではなく例示的であることを意図する。上記説明は、本開示の利益を有する当業者には明白であろうそのような代替、変更及び均等を包含することを意図する。
本開示の範囲は、本明細書で(明確的若しくは黙示的に)開示した任意の特徴及び特徴の組合せ、又はその任意の一般化を含み、いずれにせよ、本明細書で取り組んだ問題の何れか又は全てを軽減させる。従って、そのような特徴の任意の組合せに対し、本出願(又は本出願の優先権を主張する出願)の手続過程において新規の請求の範囲が策定され得る。特に、添付の特許請求の範囲に対し、従属請求項から得られる特徴は独立請求項の特徴と組み合わされてもよく、従属請求項それぞれの特徴は任意の適切な方法で組み合わされてもよく、添付の特許請求の範囲に列挙される特定の組合せにおいてのみ組み合わされるものではない。

Claims (28)

  1. 複数のI/Oデバイスからのメモリアクセス要求を受信し、保護モードを実行するように構成されたメモリ管理ユニットを備え、
    前記メモリ管理ユニットは、前記保護モードで実行する間、前記メモリアクセス要求の各々を、メモリアドレス変換データの同じセットにマッピングすることによって、前記複数のI/Oデバイスによるメモリアクセスを阻止するように構成されており、
    前記メモリ管理ユニットは、前記保護モードで実行していない間、異なるメモリアクセス要求を、メモリアドレス変換データのそれぞれ異なるセットにマッピングすることによって、前記複数のI/Oデバイスからのメモリアクセス要求を許可するように構成されている、
    装置。
  2. 前記メモリアドレス変換データの少なくとも一部は、一つ以上のメモリアドレス変換テーブルを用いてメモリに記憶されており、又は、ハードウェアレジスタに記憶されている、請求項1に記載の装置。
  3. 前記メモリ管理ユニットは、前記メモリ管理ユニットの保護フラグを設定するソフトウェアに応じて、前記保護モードに移行するように設定可能である、請求項1に記載の装置。
  4. 前記メモリアクセス要求をメモリアドレス変換データの前記同じセットにマッピングすることは、デバイス識別子のデフォルト値を用いて、前記メモリアクセス要求をタグ付けすることを含む、請求項1に記載の装置。
  5. 前記デバイス識別子のデフォルト値は、デバイステーブルの制限エントリに対応し、前記制限エントリは、前記I/Oデバイスによるシステムメモリへのアクセスが許可されていないことを示す、請求項4に記載の装置。
  6. 前記デバイス識別子のデフォルト値は、デバイステーブルの制限エントリに対応し、前記制限エントリは、前記メモリ管理ユニットが、全てのメモリアドレスをシステムメモリの同じ制限部分にマッピングするアドレス変換データを用いて、前記I/Oデバイスからのメモリアクセス要求を変換するように示している、請求項4に記載の装置。
  7. 前記システムメモリの制限部分はゼロサイズである、請求項6に記載の装置。
  8. 前記システムメモリの制限部分は、信頼されたブート手順を実行するために用いられる部分以外の部分である、請求項6に記載の装置。
  9. 前記メモリ管理ユニットは、一つの前記I/Oデバイスからメモリアクセス要求を受信したことに応じてエラーコードを返すことによって、前記メモリアクセスを阻止するように構成されている、請求項1に記載の装置。
  10. 処理システムのメモリ管理ユニットを用いてメモリを保護するコンピュータ実行方法であって、
    前記メモリ管理ユニットが、保護モードで実行する間、
    メモリアクセス要求をI/Oデバイスから受信するステップと、
    前記メモリアクセス要求の受信に応じて、前記メモリアクセス要求の各々をメモリアドレス変換データの同じセットにマッピングすることによって、前記要求されたメモリアクセスを阻止するステップと、
    前記メモリ管理ユニットが、非保護モードで実行する間、
    他のメモリアクセス要求を二つ以上の前記I/Oデバイスから受信するステップと、
    前記二以上のI/Oデバイスの各々について、メモリアドレス変換データのセットを決定するステップと、
    前記他のメモリアクセス要求ごとに、前記他のメモリアクセス要求を、前記他のメモリアクセス要求を行った前記I/Oデバイスに対応する前記メモリアドレス変換データのセットにマッピングするステップと、を含む、
    方法。
  11. 前記メモリアドレス変換データの少なくとも一部は、一つ以上のメモリアドレス変換テーブルを用いてメモリに記憶されており、又は、ハードウェアレジスタに記憶されている、請求項10に記載の方法。
  12. 前記メモリ管理ユニットが、前記メモリ管理ユニットの保護フラグを設定するソフトウェアに応じて、前記保護モードに移行するステップをさらに含む、請求項10に記載の方法。
  13. 前記メモリアクセス要求を前記メモリアドレス変換データの同じセットにマッピングすることは、デバイス識別子のデフォルト値を用いて、前記メモリアクセス要求をタグ付けすることを含む、請求項10に記載の方法。
  14. 前記デバイス識別子のデフォルト値は、デバイステーブルの制限エントリに対応し、前記制限エントリは、前記I/Oデバイスによるシステムメモリへのアクセスが許可されていないことを示す、請求項13に記載の方法。
  15. 前記デバイス識別子のデフォルト値は、デバイステーブルの制限エントリに対応し、前記制限エントリは、前記メモリ管理ユニットが、全てのメモリアドレスをシステムメモリの同じ制限部分にマッピングするアドレス変換データを用いて、前記I/Oデバイスからのメモリアクセス要求を変換するように示している、請求項13に記載の方法。
  16. 前記システムメモリの制限部分はゼロサイズである、請求項15に記載の方法。
  17. 前記システムメモリの制限部分は、信頼されたブート手順を実行するために用いられる部分以外の部分である、請求項15に記載の方法。
  18. 信頼された初期化手順を実行するために、コンピュータシステムによって実行可能なプログラム命令を記憶したコンピュータ可読記憶媒体であって、
    前記信頼された初期化手順は、メモリ管理ユニットを保護モードで実行させるように設定することを含み、
    前記メモリ管理ユニットは、前記保護モードの間、複数のI/Oデバイスからのメモリアクセス要求をメモリアドレス変換データの同じセットにマッピングすることによって、前記複数のI/Oデバイスによるメモリアクセスを阻止し、前記保護モードではない間、前記複数のI/OデバイスからのI/O要求を、メモリアドレス変換データのそれぞれ異なるセットにマッピングするように構成されている、
    コンピュータ可読記憶媒体。
  19. 前記メモリアドレス変換データの少なくとも一部は、一つ以上のメモリアドレス変換テーブルを用いてメモリに記憶されており、又は、ハードウェアレジスタに記憶されている、請求項18に記載のコンピュータ可読記憶媒体。
  20. 前記信頼された初期化手順は、
    一つ以上の周辺デバイスによる直接的なメモリアクセスからシステムメモリの一部を保護するために、セキュアカーネルの初期化命令を実行することと、
    前記システムメモリの保護された部分内に一つ以上のアドレス変換テーブルの前記セットを作成することと、をさらに含む、請求項18に記載のコンピュータ可読記憶媒体。
  21. 前記信頼された初期化手順を実行可能な前記プログラム命令は、オペレーティングシステム、ゲストオペレーティングシステム又は仮想マシンモニタの一部である、請求項18に記載のコンピュータ可読記憶媒体。
  22. 前記メモリ管理ユニットを前記保護モードで実行するように設定することは、前記メモリ管理ユニットの保護フラグを設定することを含む、請求項18に記載のコンピュータ可読記憶媒体。
  23. 信頼された初期化手順を実行するコンピュータ実行方法であって、
    複数のI/Oデバイスによる直接的なメモリアクセスからシステムメモリの一部を保護するために、セキュアカーネルの初期化命令を実行するステップと、
    前記システムメモリの保護された部分内に一つ以上のアドレス変換テーブルのセットを作成するステップであって、前記一つ以上のメモリアドレス変換テーブルのセットは、メモリアクセスを阻止する、ステップと、
    メモリ管理ユニットを保護モードで実行するように設定するステップとを含み、
    前記メモリ管理ユニットは、前記保護モードの間、前記複数のI/Oデバイスからのメモリアクセス要求を、メモリアクセスを阻止する前記一つ以上のメモリアドレス変換テーブルのセットにマッピングすることによって、前記複数のI/Oデバイスによるメモリアクセスを阻止し、前記保護モードでない間、前記複数のI/OデバイスからのI/O要求を一つ以上のメモリアドレス変換テーブルのそれぞれ異なるセットにマッピングするように構成されている、
    方法。
  24. 前記メモリアクセス要求を前記メモリアドレス変換テーブルのセットにマッピングすることは、デバイステーブルの制限エントリに対応するデバイス識別子のデフォルト値を用いて前記メモリアクセス要求をタグ付けすることを含み、前記制限エントリは、前記I/Oデバイスによるシステムメモリへのアクセスが許可されていないことを示している、請求項23に記載の方法。
  25. 前記メモリアクセス要求を前記メモリアドレス変換データのセットにマッピングすることは、デバイステーブルの制限エントリに対応するデバイス識別子のデフォルト値を用いて前記メモリアクセス要求をタグ付けすることを含み、前記制限エントリは、前記メモリ管理ユニットが、全てのメモリアドレスをシステムメモリの同じ制限部分にマッピングするアドレス変換データを用いて、前記I/Oデバイスからのメモリアクセス要求を変換するように示している、請求項23に記載の方法。
  26. 前記システムメモリの制限部分はゼロサイズである、請求項25に記載の方法。
  27. 前記システムメモリの制限部分は、信頼されたブート手順を実行するために用いられる部分以外の部分である、請求項25に記載の方法。
  28. 前記メモリ管理ユニットを保護モードで実行するように設定するステップは、前記メモリ管理ユニットの保護フラグを設定するステップを含む、請求項23に記載の方法。
JP2014532070A 2011-09-25 2012-09-24 I/oデバイスによるメモリへのアクセスを防止する保護モードを有する入出力メモリ管理ユニット Active JP5690024B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/244,571 2011-09-25
US13/244,571 US8631212B2 (en) 2011-09-25 2011-09-25 Input/output memory management unit with protection mode for preventing memory access by I/O devices
PCT/US2012/056898 WO2013044223A1 (en) 2011-09-25 2012-09-24 Input/output memory management unit with protection mode for preventing memory access by i/o devices

Publications (2)

Publication Number Publication Date
JP2014531672A JP2014531672A (ja) 2014-11-27
JP5690024B2 true JP5690024B2 (ja) 2015-03-25

Family

ID=47023085

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014532070A Active JP5690024B2 (ja) 2011-09-25 2012-09-24 I/oデバイスによるメモリへのアクセスを防止する保護モードを有する入出力メモリ管理ユニット

Country Status (6)

Country Link
US (1) US8631212B2 (ja)
EP (1) EP2758884B1 (ja)
JP (1) JP5690024B2 (ja)
KR (1) KR101471108B1 (ja)
CN (1) CN103842976B (ja)
WO (1) WO2013044223A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200115125A (ko) * 2019-03-25 2020-10-07 주식회사 엘지화학 차량 전기 시스템을 위한 진단 시스템

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9152570B2 (en) * 2012-02-27 2015-10-06 Vmware, Inc. System and method for supporting finer-grained copy-on-write page sizes
US10223506B2 (en) * 2012-04-04 2019-03-05 Rackspace Us, Inc. Self-destructing files in an object storage system
US9323932B2 (en) * 2012-12-19 2016-04-26 Advanced Micro Devices, Inc. Protecting memory contents during boot process
WO2014098839A1 (en) * 2012-12-19 2014-06-26 Hewlett-Packard Development Company Nvram path selection
US9015374B2 (en) 2013-07-09 2015-04-21 Advanced Micro Devices, Inc. Virtual interrupt filter
US9734341B1 (en) * 2014-04-18 2017-08-15 Symantec Corporation Systems and methods for protecting computing systems from peripheral devices
US9632953B2 (en) 2014-06-03 2017-04-25 Qualcomm Incorporated Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
US9690720B2 (en) 2014-06-03 2017-06-27 Qualcomm Incorporated Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device
EP2983088A1 (en) 2014-08-06 2016-02-10 Airbus Defence and Space GmbH Memory protection unit
US10552619B2 (en) * 2015-07-20 2020-02-04 Intel Corporation Technologies for secure trusted I/O access control
US9626300B2 (en) * 2015-07-27 2017-04-18 Google Inc. Address caching in switches
US10055136B2 (en) 2015-07-29 2018-08-21 Red Hat Israel, Ltd. Maintaining guest input/output tables in swappable memory
US10102391B2 (en) * 2015-08-07 2018-10-16 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
US9767320B2 (en) 2015-08-07 2017-09-19 Qualcomm Incorporated Hardware enforced content protection for graphics processing units
US10664179B2 (en) 2015-09-25 2020-05-26 Intel Corporation Processors, methods and systems to allow secure communications between protected container memory and input/output devices
US9927984B2 (en) * 2015-10-14 2018-03-27 Samsung Electronics Co., Ltd. Electronic system with interface control mechanism and method of operation thereof
CN107038128B (zh) * 2016-02-03 2020-07-28 华为技术有限公司 一种执行环境的虚拟化、虚拟执行环境的访问方法及装置
US10678702B2 (en) * 2016-05-27 2020-06-09 Advanced Micro Devices, Inc. Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
US10140214B2 (en) 2016-08-29 2018-11-27 Red Hat Israel, Ltd. Hypervisor translation bypass by host IOMMU with virtual machine migration support
US10176122B2 (en) * 2016-10-19 2019-01-08 Advanced Micro Devices, Inc. Direct memory access authorization in a processing system
KR20180066601A (ko) 2016-12-09 2018-06-19 삼성전자주식회사 메모리 시스템의 구동 방법
EP3602376B1 (en) 2017-03-29 2022-03-30 Advanced Micro Devices, Inc. Monitoring of memory page transitions between a hypervisor and a virtual machine
US11119947B2 (en) 2017-10-30 2021-09-14 Hewlett-Packard Development Company, L.P. Secure hardware initialization
US10860474B2 (en) * 2017-12-14 2020-12-08 Micron Technology, Inc. Multilevel addressing
CN108446137B (zh) * 2018-02-26 2024-08-23 国民技术股份有限公司 通道寄存器初始化方法、装置及dma设备、终端
US11157635B2 (en) * 2018-04-08 2021-10-26 Qualcomm Incorporated Secure interface disablement
US10929302B2 (en) 2018-06-08 2021-02-23 International Business Machines Corporation MMIO addressing using a translation table
US11321240B2 (en) 2018-06-08 2022-05-03 International Business Machines Corporation MMIO addressing using a translation lookaside buffer
US11392511B2 (en) * 2019-09-25 2022-07-19 Intel Corporation Secure address translation services using a permission table
US11100010B2 (en) * 2019-09-26 2021-08-24 Arm Limited Apparatus and method for handling memory access requests
GB2593716B (en) * 2020-03-31 2022-08-10 Advanced Risc Mach Ltd Controlling memory access in a data processing systems with multiple subsystems
KR102348256B1 (ko) * 2020-05-11 2022-01-07 한국과학기술원 정형 검증을 이용한 i/o 커널 구현의 강화
US20220100532A1 (en) * 2020-09-25 2022-03-31 Intel Corporation Technology for transferring iommu ownership to a new version of system software
US11526451B2 (en) * 2020-12-23 2022-12-13 Intel Corporation Secure address translation services using bundle access control
US11860792B2 (en) * 2021-05-04 2024-01-02 Red Hat, Inc. Memory access handling for peripheral component interconnect devices
US12067275B1 (en) 2022-06-30 2024-08-20 Apple Inc. Memory bank with subdomains

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR119649A (ja) 1975-03-24
US4550368A (en) 1982-07-02 1985-10-29 Sun Microsystems, Inc. High-speed memory and memory management system
JPS61206043A (ja) 1985-03-11 1986-09-12 Hitachi Ltd 仮想計算機システムにおける割込制御方法
US4802085A (en) 1987-01-22 1989-01-31 National Semiconductor Corporation Apparatus and method for detecting and handling memory-mapped I/O by a pipelined microprocessor
JP2510605B2 (ja) 1987-07-24 1996-06-26 株式会社日立製作所 仮想計算機システム
JP3369580B2 (ja) 1990-03-12 2003-01-20 ヒューレット・パッカード・カンパニー 直接メモリアクセスを行うためのインターフェース装置及び方法
JP3307085B2 (ja) 1993-12-10 2002-07-24 ソニー株式会社 通信方法及び電子機器
US6631435B1 (en) 1996-02-02 2003-10-07 Sony Corporation Application programming interface for data transfer and bus management over a bus structure
US5826084A (en) 1997-03-25 1998-10-20 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for selectively bypassing external interrupts past the monitor program during virtual program operation
US5987557A (en) 1997-06-19 1999-11-16 Sun Microsystems, Inc. Method and apparatus for implementing hardware protection domains in a system with no memory management unit (MMU)
JP3264319B2 (ja) 1997-06-30 2002-03-11 日本電気株式会社 バスブリッジ
US5949436A (en) 1997-09-30 1999-09-07 Compaq Computer Corporation Accelerated graphics port multiple entry gart cache allocation system and method
US5956516A (en) 1997-12-23 1999-09-21 Intel Corporation Mechanisms for converting interrupt request signals on address and data lines to interrupt message signals
US6119204A (en) 1998-06-30 2000-09-12 International Business Machines Corporation Data processing system and method for maintaining translation lookaside buffer TLB coherency without enforcing complete instruction serialization
US6065088A (en) 1998-08-31 2000-05-16 International Business Machines Corporation System and method for interrupt command queuing and ordering
US6938094B1 (en) 1999-09-17 2005-08-30 Advanced Micro Devices, Inc. Virtual channels and corresponding buffer allocations for deadlock-free computer system operation
US6888843B2 (en) 1999-09-17 2005-05-03 Advanced Micro Devices, Inc. Response virtual channel for handling all responses
US6412043B1 (en) * 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6553460B1 (en) * 1999-10-01 2003-04-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6598128B1 (en) * 1999-10-01 2003-07-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6629207B1 (en) * 1999-10-01 2003-09-30 Hitachi, Ltd. Method for loading instructions or data into a locked way of a cache memory
EP1139222A1 (en) 2000-03-31 2001-10-04 Texas Instruments Incorporated Prefetch for TLB cache
US6622193B1 (en) 2000-11-16 2003-09-16 Sun Microsystems, Inc. Method and apparatus for synchronizing interrupts in a message passing queue oriented bus system
US20020083254A1 (en) 2000-12-22 2002-06-27 Hummel Mark D. System and method of implementing interrupts in a computer processing system having a communication fabric comprising a plurality of point-to-point links
US6886171B2 (en) 2001-02-20 2005-04-26 Stratus Technologies Bermuda Ltd. Caching for I/O virtual address translation and validation using device drivers
JP3594082B2 (ja) 2001-08-07 2004-11-24 日本電気株式会社 仮想アドレス間データ転送方式
US8051301B2 (en) * 2001-11-13 2011-11-01 Advanced Micro Devices, Inc. Memory management system and method providing linear address based memory access security
US6804741B2 (en) 2002-01-16 2004-10-12 Hewlett-Packard Development Company, L.P. Coherent memory mapping tables for host I/O bridge
US7058768B2 (en) * 2002-04-17 2006-06-06 Microsoft Corporation Memory isolation through address translation data edit control
US6986006B2 (en) 2002-04-17 2006-01-10 Microsoft Corporation Page granular curtained memory via mapping control
US6725289B1 (en) 2002-04-17 2004-04-20 Vmware, Inc. Transparent address remapping for high-speed I/O
DE60322366D1 (de) * 2002-04-18 2008-09-04 Advanced Micro Devices Inc Rechnersystem mit einem für einen sicheren ausführungsmodus geeigneten cpu und einem sicherheitsdienst-prozessor die über einen gesicherten kommunikationsweg miteinander verbunden sind
EP1495401B1 (en) 2002-04-18 2007-01-24 Advanced Micro Devices, Inc. Initialization of a computer system including a secure execution mode-capable processor
US7155379B2 (en) 2003-02-25 2006-12-26 Microsoft Corporation Simulation of a PCI device's memory-mapped I/O registers
US7010633B2 (en) * 2003-04-10 2006-03-07 International Business Machines Corporation Apparatus, system and method for controlling access to facilities based on usage classes
US7281075B2 (en) 2003-04-24 2007-10-09 International Business Machines Corporation Virtualization of a global interrupt queue
US7073043B2 (en) 2003-04-28 2006-07-04 International Business Machines Corporation Multiprocessor system supporting multiple outstanding TLBI operations per partition
US7177967B2 (en) 2003-09-30 2007-02-13 Intel Corporation Chipset support for managing hardware interrupts in a virtual machine system
US7552436B2 (en) 2003-11-25 2009-06-23 International Business Machines Memory mapped input/output virtualization
US7209994B1 (en) 2004-05-11 2007-04-24 Advanced Micro Devices, Inc. Processor that maintains virtual interrupt state and injects virtual interrupts into virtual machine guests
US7444493B2 (en) 2004-09-30 2008-10-28 Intel Corporation Address translation for input/output devices using hierarchical translation tables
US8843727B2 (en) 2004-09-30 2014-09-23 Intel Corporation Performance enhancement of address translation using translation tables covering large address spaces
JP2006133889A (ja) 2004-11-02 2006-05-25 Sharp Corp プログラムを更新するための方法、プログラムおよび装置
DE112005002949T5 (de) * 2004-11-24 2007-12-27 Discretix Technologies Ltd. System, Verfahren und Vorrichtung zur Sicherung eines Betriebssystems
US20060195848A1 (en) 2005-02-25 2006-08-31 International Business Machines Corporation System and method of virtual resource modification on a physical adapter that supports virtual resources
US20060200616A1 (en) 2005-03-02 2006-09-07 Richard Maliszewski Mechanism for managing resources shared among virtual machines
US7428626B2 (en) 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US7260663B2 (en) 2005-04-07 2007-08-21 International Business Machines Corporation System and method for presenting interrupts
US7487327B1 (en) 2005-06-01 2009-02-03 Sun Microsystems, Inc. Processor and method for device-specific memory address translation
US7225287B2 (en) 2005-06-01 2007-05-29 Microsoft Corporation Scalable DMA remapping on a computer bus
US20060288130A1 (en) 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US20060294277A1 (en) 2005-06-24 2006-12-28 Tetrick Raymond S Message signaled interrupt redirection
US7793067B2 (en) 2005-08-12 2010-09-07 Globalfoundries Inc. Translation data prefetch in an IOMMU
US7543131B2 (en) 2005-08-12 2009-06-02 Advanced Micro Devices, Inc. Controlling an I/O MMU
US7516247B2 (en) 2005-08-12 2009-04-07 Advanced Micro Devices, Inc. Avoiding silent data corruption and data leakage in a virtual environment with multiple guests
US7480784B2 (en) 2005-08-12 2009-01-20 Advanced Micro Devices, Inc. Ensuring deadlock free operation for peer to peer traffic in an input/output memory management unit (IOMMU)
US20070067505A1 (en) 2005-09-22 2007-03-22 Kaniyur Narayanan G Method and an apparatus to prevent over subscription and thrashing of translation lookaside buffer (TLB) entries in I/O virtualization hardware
US7447820B2 (en) 2005-09-30 2008-11-04 Intel Corporation Retargeting of platform interrupts
US7548999B2 (en) 2006-01-17 2009-06-16 Advanced Micro Devices, Inc. Chained hybrid input/output memory management unit
US7653803B2 (en) 2006-01-17 2010-01-26 Globalfoundries Inc. Address translation for input/output (I/O) devices and interrupt remapping for I/O devices in an I/O memory management unit (IOMMU)
US7849287B2 (en) 2006-11-13 2010-12-07 Advanced Micro Devices, Inc. Efficiently controlling special memory mapped system accesses
US7873770B2 (en) 2006-11-13 2011-01-18 Globalfoundries Inc. Filtering and remapping interrupts
US7707383B2 (en) 2006-11-21 2010-04-27 Intel Corporation Address translation performance in virtualized environments
US8307360B2 (en) 2008-01-22 2012-11-06 Advanced Micro Devices, Inc. Caching binary translations for virtual machine guest
US8578483B2 (en) * 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US8386745B2 (en) 2009-07-24 2013-02-26 Advanced Micro Devices, Inc. I/O memory management unit including multilevel address translation for I/O and computation offload

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200115125A (ko) * 2019-03-25 2020-10-07 주식회사 엘지화학 차량 전기 시스템을 위한 진단 시스템
KR102221086B1 (ko) 2019-03-25 2021-02-25 주식회사 엘지화학 차량 전기 시스템을 위한 진단 시스템

Also Published As

Publication number Publication date
KR101471108B1 (ko) 2014-12-09
CN103842976B (zh) 2016-01-20
JP2014531672A (ja) 2014-11-27
US20130080726A1 (en) 2013-03-28
EP2758884B1 (en) 2018-07-25
KR20140057405A (ko) 2014-05-12
WO2013044223A1 (en) 2013-03-28
US8631212B2 (en) 2014-01-14
CN103842976A (zh) 2014-06-04
EP2758884A1 (en) 2014-07-30

Similar Documents

Publication Publication Date Title
JP5690024B2 (ja) I/oデバイスによるメモリへのアクセスを防止する保護モードを有する入出力メモリ管理ユニット
Olson et al. Border control: Sandboxing accelerators
CN109643290B (zh) 用于具用扩展分段的面向对象的存储器管理的技术
US9720843B2 (en) Access type protection of memory reserved for use by processor logic
US10324863B2 (en) Protected memory view for nested page table access by virtual machine guests
US8386745B2 (en) I/O memory management unit including multilevel address translation for I/O and computation offload
US9335943B2 (en) Method and apparatus for fine grain memory protection
US8074274B2 (en) User-level privilege management
US20130080714A1 (en) I/o memory translation unit with support for legacy devices
JP5433349B2 (ja) データプロセッサ
JP2021512400A (ja) メモリ・アクセスにおける保護タグ・チェックの制御
Allievi et al. Windows internals, part 2
US20230409494A1 (en) Technique for constraining access to memory using capabilities
US20240202139A1 (en) Technique for constraining access to memory using capabilities
EP4384928A1 (en) Technique for handling sealed capabilities
JP2021157766A (ja) シャドウスタックを効率的に管理および処理するための装置および方法
Shepherd et al. Background Material
TW202340955A (zh) 使用能力約束記憶體存取之技術
JP2024538674A (ja) 封止されたケイパビリティを操作するための技法
EP4330813A1 (en) Technique for constraining access to memory using capabilities

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140909

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141203

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150129

R150 Certificate of patent or registration of utility model

Ref document number: 5690024

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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