(57)【特許請求の範囲】
【請求項１】
論理アドレス空間を有するプロセッサ120と物理アドレス空間を有する外部システムメモリ130、530、700とを含むコンピューティングシステム110においてセキュリティを提供する方法であって、
前記論理アドレス空間へのデータアクセスに応答して前記論理アドレス空間を前記物理アドレス空間に動的に再マッピングするステップを含むメモリアクセスパターンを隠すステップを備え、
各々の再マッピングするステップが、論理アドレスを第1の物理アドレスから第2の物理アドレスに再マッピングするステップを含み、前記メモリアクセスパターンを隠すステップはさらに、前記第2の物理アドレスにデータを記憶するステップを含み、
前記物理アドレス空間が前記論理アドレス空間よりも少なくとも1物理アドレス分大きいがゆえに、少なくとも1つの物理アドレスがマッピングされず、第1のデータ構造は、論理アドレスにマッピングされた物理アドレスのためのエントリ値を含み、第2のデータ構造は、マッピングされていない各々の物理アドレスのためのエントリ値を含み、前記第1のデータ構造においてインデックスされたエントリ値が、前記第2のデータ構造から選択されたエントリ値によって置き換えられ、置き換えられた各々のエントリ値が前記第2のデータ構造に追加され、各々のエントリ値はランダムにまたは擬似ランダムに選択され、
各々のエントリ値は、前記外部システムメモリ130、530、700の保護されたウィンドウの対応する先頭アドレスからのオフセットであり、
各々の書き込み動作がダミーの読み出し動作によって先行され、データが前記第1の物理アドレスから読み出されるが影響を及ぼされることはなく、論理アドレスへの各々の書き込み動作のために、前記論理アドレスが第1の物理アドレスから第2の物理アドレスに再マッピングされ、データが前記第2の物理アドレスに記憶されるが、前記論理アドレスは変更されない、
方法。
【請求項２】
前記再マッピングするステップは、前記論理アドレス空間への各々のあらゆるデータアクセス時に実行される、請求項1に記載の方法。
【請求項３】
論理アドレスでの各々の読み出し動作のために、データが前記外部システムメモリ130、530、700における第1の物理アドレスから読み出され、前記論理アドレスが前記第1の物理アドレスから第2の物理アドレスに再マッピングされ、前記データは前記第1の物理アドレスから前記第2の物理アドレスに移動させられるが、前記論理アドレスは変更されない、請求項1または2に記載の方法。
【請求項４】
論理アドレス空間を有するプロセッサ120と、
物理アドレス空間を有する外部システムメモリ130、530、700と、
前記外部システムメモリ130、530、700に関するメモリアクセスパターンを隠すためのメモリコントローラー150と、を備えるコンピューティングシステム110であって、
前記メモリアクセスパターンを隠すことは、前記論理アドレス空間へのデータアクセスに応答して前記論理アドレス空間を前記物理アドレス空間に動的に再マッピングすることを含み、
前記物理アドレス空間が前記論理アドレス空間よりも少なくとも1物理アドレス分大きいがゆえに、少なくとも1つの物理アドレスがマッピングされず、第1のデータ構造は、論理アドレスにマッピングされた物理アドレスのためのエントリ値を含み、第2のデータ構造は、マッピングされていない各々の物理アドレスのためのエントリ値を含み、前記第1のデータ構造においてインデックスされたエントリ値が、前記第2のデータ構造から選択されたエントリ値によって置き換えられ、置き換えられた各々のエントリ値が前記第2のデータ構造に追加され、各々のエントリ値はランダムにまたは擬似ランダムに選択され、
各々のエントリ値は、前記外部システムメモリ130、530、700の保護されたウィンドウの対応する先頭アドレスからのオフセットであり、
前記メモリコントローラー150は、論理アドレスを第1の物理アドレスから第2の物理アドレスに再マッピングし、前記第2の物理アドレスにデータを記憶するように構成され、
各々の書き込み動作がダミーの読み出し動作によって先行され、データが前記第1の物理アドレスから読み出されるが影響を及ぼされることはなく、論理アドレスへの各々の書き込み動作のために、前記論理アドレスが第1の物理アドレスから第2の物理アドレスに再マッピングされ、データが前記第2の物理アドレスに記憶されるが、前記論理アドレスは変更されない、
コンピューティングシステム110。
【請求項５】
前記プロセッサ120および前記メモリコントローラー150は、中央処理装置520のチップ上にある、請求項4に記載のコンピューティングシステム110。
【請求項６】
前記コンピューティングシステム110は、前記メモリコントローラー150を実装するハードウェア層620と仮想マシンソフトウェア632とを有する仮想マシン610である、請求項4または5に記載のコンピューティングシステム110。
【請求項７】
前記コンピューティングシステム110は、前記外部システムメモリ130、530、700と通信する回路750を含むシステムオンチップ710であり、前記回路750は、前記メモリアドレス再マッピングを動的に実行するように構成される、請求項4から6のいずれか一項に記載のコンピューティングシステム110。
【請求項８】
前記メモリコントローラー150は、論理アドレスへの各々のあらゆるデータアクセス時に前記再マッピングを実行するように構成される、請求項4に記載のコンピューティングシステム110。
【請求項９】
前記論理アドレス空間へのデータアクセスに応答して論理アドレスを前記外部システムメモリ130、530、700の第1の物理アドレスから前記外部システムメモリ130、530、700の第2の物理アドレスに再マッピングすることと、データを前記第2の物理アドレスでの記憶のために前記外部システムメモリ130、530、700に送信することと、によって、前記プロセッサ120が前記外部システムメモリ130、530、700に関するメモリアクセスパターンを隠すように構成された、請求項4に記載のコンピューティングシステム110。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピューティングシステムでは、システムメモリへのトラフィックが、メモリアクセスパターンを観察するために分析され得る。これらのメモリアクセスパターンから機密情報が推論され得る。
【０００２】
イベントカウンタの箇所が、イベントに応答してアドレスに新たなデータを書き込むことから推論され得る。隣接フィールドは、既知の値（例えば、先行ゼロ）を有し得る。推論されたこの情報は、鍵探索攻撃または電力解析攻撃といった暗号解読攻撃のために使用され得る。
【０００３】
頻繁で定期的なアップデートは、ループカウンタを示し得る。随時のジャンプおよびループを伴うシーケンシャルメモリアクセスは、プログラムコードを示し得る。ある特定のアクセスパターンは、行列計算、画像処理、データベースハンドリング、等を明かし得る。推論されたこの情報は、攻撃のための重要なターゲットの箇所を与え得る。
【０００４】
メモリアクセスパターンはまた、ソフトウェアにおいて実行されるアルゴリズム、ソフトウェアの機能、またはソフトウェアの単なるバージョンを識別するために分析され得る。推論されたこの情報は、ソフトウェアにおける既知の欠陥が利用されることを可能にし得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
本明細書における実施形態によると、方法は、論理アドレス空間を有するプロセッサと物理アドレス空間を有する外部システムメモリとを含むコンピューティングシステムにおいてセキュリティを提供する。方法は、論理アドレス空間へのデータアクセスに応答して論理アドレス空間を物理アドレス空間に動的に再マッピングするステップを含むメモリアクセスパターンを隠すステップを備える。
【０００６】
本明細書における別の実施形態によると、コンピューティングシステムは、論理アドレス空間を有するプロセッサと、物理アドレス空間を有する外部システムメモリと、外部システムメモリに関するメモリアクセスパターンを隠すためのメモリコントローラーとを備える。メモリアクセスパターンを隠すことは、論理アドレス空間へのデータアクセスに応答して論理アドレス空間を物理アドレス空間に動的に再マッピングすることを含む。
【０００７】
本明細書における別の実施形態によると、コンピューティングシステムのためのメモリコントローラーは、コンピューティングシステムの外部システムメモリに関するメモリアクセスパターンを隠すように構成された専用プロセッサを備える。メモリアクセスパターンを隠すことは、論理アドレス空間へのデータアクセスに応答して論理アドレスを外部システムメモリの第1の物理アドレスから外部システムメモリの第2の物理アドレスに再マッピングすることと、データを第2の物理アドレスでの記憶のために外部システムメモリに送信することとを含む。
【０００８】
さらに、本開示は、以下の条項に係る実施形態を備える。
【０００９】
条項1．論理アドレス空間を有するプロセッサと物理アドレス空間を有する外部システムメモリとを含むコンピューティングシステムにおいてセキュリティを提供する方法であって、前記論理アドレス空間へのデータアクセスに応答して前記論理アドレス空間を前記物理アドレス空間に動的に再マッピングするステップを含むメモリアクセスパターンを隠すステップを備える、方法。
【００１０】
条項2．前記外部システムメモリは、使用中の現在のプログラムとデータとを保持し、攻撃者にとってアクセス可能なデータパスにわたって前記プロセッサと通信する、条項1に記載の方法。
【００１１】
条項3．前記再マッピングするステップは、前記論理アドレス空間への各々のあらゆるデータアクセス時に実行される、条項1に記載の方法。
【００１２】
条項4．各々の再マッピングするステップが、論理アドレスを第1の物理アドレスから第2の物理アドレスに再マッピングするステップを含み、前記メモリアクセスパターンを隠すステップはさらに、前記第2の物理アドレスにデータを記憶するステップを含む、条項1に記載の方法。
【００１３】
条項5．論理アドレスでの各々の読み出し動作のために、データが前記外部システムメモリにおける第1の物理アドレスから読み出され、前記論理アドレスが前記第1の物理アドレスから第2の物理アドレスに再マッピングされ、前記データは前記第1の物理アドレスから前記第2の物理アドレスに移動させられるが、前記論理アドレスは変更されない、条項1に記載の方法。
【００１４】
条項6．論理アドレスへの各々の書き込み動作のために、前記論理アドレスが第1の物理アドレスから第2の物理アドレスに再マッピングされ、データが前記第2の物理アドレスに記憶されるが、前記論理アドレスは変更されない、条項1に記載の方法。
【００１５】
条項7．各々の書き込み動作がダミーの読み出し動作によって先行され、データが前記第1の物理アドレスから読み出されるが影響を及ぼされることはない、条項6に記載の方法。
【００１６】
条項8．前記物理アドレス空間が前記論理アドレス空間よりも少なくとも1物理アドレス分大きいがゆえに、少なくとも1つの物理アドレスがマッピングされず、第1のデータ構造は、論理アドレスにマッピングされた物理アドレスのためのエントリ値を含み、第2のデータ構造は、マッピングされていない各々の物理アドレスのためのエントリ値を含み、前記第1のデータ構造においてインデックスされたエントリ値が、前記第2のデータ構造から選択されたエントリ値によって置き換えられる、条項1に記載の方法。
【００１７】
条項9．置き換えられた各々のエントリ値が前記第2のデータ構造に追加される、条項8に記載の方法。
【００１８】
条項10．前記第2のデータ構造における各々のエントリ値は、ランダムにまたは擬似ランダムに選択される、条項8に記載の方法。
【００１９】
条項11．各々のエントリ値は、前記外部システムメモリの保護されたウィンドウの対応する先頭アドレスからのオフセットである、条項8に記載の方法。
【００２０】
条項12．論理アドレス空間を有するプロセッサと、物理アドレス空間を有する外部システムメモリと、前記外部システムメモリに関するメモリアクセスパターンを隠すためのメモリコントローラーと、を備えるコンピューティングシステムであって、前記メモリアクセスパターンを隠すことは、前記論理アドレス空間へのデータアクセスに応答して前記論理アドレス空間を前記物理アドレス空間に動的に再マッピングすることを含む、コンピューティングシステム。
【００２１】
条項13．前記プロセッサおよび前記メモリコントローラーは、中央処理装置のチップ上にある、条項12に記載のコンピューティングシステム。
【００２２】
条項14．前記コンピューティングシステムは、前記メモリコントローラーを実装するハードウェア層と仮想マシンソフトウェアとを有する仮想マシンである、条項12に記載のコンピューティングシステム。
【００２３】
条項15．前記コンピューティングシステムは、前記外部システムメモリと通信する回路を含むシステムオンチップであり、前記回路は、前記メモリアドレス再マッピングを動的に実行するように構成される、条項12に記載のコンピューティングシステム。
【００２４】
条項16．前記回路はセキュアメモリトランザクションユニットである、条項15に記載のコンピューティングシステム。
【００２５】
条項17．前記メモリコントローラーは、論理アドレスへの各々のあらゆるデータアクセス時に前記再マッピングを実行するように構成される、条項12に記載のコンピューティングシステム。
【００２６】
条項18．前記メモリコントローラーは、論理アドレスを第1の物理アドレスから第2の物理アドレスに再マッピングし、前記第2の物理アドレスにデータを記憶するように構成される、条項12に記載のコンピューティングシステム。
【００２７】
条項19．前記物理アドレス空間が前記論理アドレス空間よりも少なくとも1物理アドレス分大きいがゆえに、少なくとも1つの物理アドレスがマッピングされず、論理アドレスへのデータアクセスが行われる際、前記論理アドレスはすでに第1のオフセットによって第1の物理アドレスにマッピングされており、前記メモリコントローラーは、マッピングされていない第2の物理アドレスへの第2のオフセットを選択し、前記第1のオフセットを前記第2のオフセットと置き換えるように構成される、条項12に記載のコンピューティングシステム。
【００２８】
条項20．外部システムメモリを含むコンピューティングシステムのためのメモリコントローラーであって、前記メモリコントローラーは、前記外部システムメモリに関するメモリアクセスパターンを隠すように構成された専用プロセッサを備え、前記メモリアクセスパターンを隠すことは、前記論理アドレス空間へのデータアクセスに応答して論理アドレスを前記外部システムメモリの第1の物理アドレスから前記外部システムメモリの第2の物理アドレスに再マッピングすることと、データを前記第2の物理アドレスでの記憶のために前記外部システムメモリに送信することとを含む、メモリコントローラー。
【００２９】
これらの特徴および機能は、さまざまな実施形態において独立して達成されることも、他の実施形態と組み合わせられることもできる。実施形態のさらなる詳細が、以下の説明および図面を参照して理解され得る。
【図面の簡単な説明】
【００３０】
【図１】外部システムメモリへのトラフィックの分析を妨害するコンピューティングシステムの説明図である。
【図２Ａ】論理アドレスへの書き込み動作を不明瞭にする方法の説明図である。
【図２Ｂ】論理アドレスへの読み出し動作を不明瞭にする方法の説明図である。
【図２Ｃ】論理アドレスへの書き込み動作を不明瞭にする別の方法の説明図である。
【図３】論理アドレス空間を物理アドレス空間に再マッピングするためのデータ構造の説明図である。
【図４】図3のデータ構造を使用して再マッピングを実行する方法の説明図である。
【図５】外部システムメモリへのトラフィックの分析を妨害するコンピューティングシステムの異なる例の説明図である。
【図６】外部システムメモリへのトラフィックの分析を妨害するコンピューティングシステムの異なる例の説明図である。
【図７】外部システムメモリへのトラフィックの分析を妨害するコンピューティングシステムの異なる例の説明図である。
【発明を実施するための形態】
【００３１】
図1を参照すると、図1は、プロセッサ120を含むコンピューティングシステム110を示す。プロセッサ120の例は、中央処理装置、ダイレクトメモリアクセス（「DMA」）エンジンまたは他の埋め込みプロセッサ、および特定用途向け集積回路（「ASIC」）を含むが、これに限定されない。
【００３２】
コンピューティングシステムはさらに、外部システムメモリ130を含み、外部システムメモリ130は、データパス140を介してプロセッサ120と通信する。本明細書において使用される場合、「システムメモリ」は、コンピューティングシステム110が使用中の現在のプログラムおよびデータを保持するメモリのことを言う。システムメモリの例は、ダイナミックランダムアクセスメモリ（「DRAM」）のような揮発性システムメモリおよび磁気ランダムアクセスメモリ（「MRAM」）のような不揮発性システムメモリを含む。システムメモリは、ハードドライブおよびフラッシュメモリのような記憶デバイスを含まない。
【００３３】
システムメモリは、データパス140上のトラフィックが攻撃者によってアクセスおよび観察され得る場合、「外部」であるとみなされる。本明細書において使用される場合、「トラフィック」は、プロセッサ120と外部システムメモリ130との間の通信情報のことを言う。この通信情報は、読み出し／書き込み信号、メモリアドレス、タイミング情報、外部システムメモリ130から読み出され、外部システムメモリ130に書き込まれるデータを含むが、これに限定されない。システムメモリはまた、プロセッサキャッシュおよびレジスタを含み得る。しかしながら、プロセッサキャッシュおよびレジスタは、それらが攻撃者によってアクセスされることができない場合、外部であるとみなされない。
【００３４】
外部システムメモリ130は、保護されたウィンドウ132にデータを記憶する。保護されたウィンドウ132に記憶されたデータは、トラフィック分析から保護される。本明細書において使用される場合、「保護されたウィンドウ」は、外部システムメモリ130における単一のメモリアドレスまたは連続したアドレスの範囲のことを言う。いくつかの例において、保護されたデータは、単一の保護されたウィンドウ132に記憶されることができ、単一の保護されたウィンドウ132は、外部システムメモリ130の部分または外部システムメモリ130の全部をカバーし得る。他の例において、保護されたデータは、複数の保護されたウィンドウ132に記憶されることができ、複数の保護されたウィンドウ132は、外部システムメモリ130の部分または外部システムメモリ130の全部をカバーし得る。各々の保護されたウィンドウ132に記憶されたデータは、他の手段（例えば、暗号化および／またはデータ認証タグ）によって保護される場合もされない場合もある。
【００３５】
物理アドレス空間は、外部システムメモリ130がデータの箇所を参照するために利用する物理アドレスの範囲のセットである。物理アドレス空間はまた、外部システムメモリ130以外のメモリのためのアドレスを含み得る。
【００３６】
論理アドレス空間は、プロセッサ120がデータの箇所を参照するために利用する論理アドレスの範囲のセットである。例えば、コンピュータプログラムは、論理アドレスによってのみ機能する。
【００３７】
コンピューティングシステム110はさらに、メモリコントローラー150を含み、メモリコントローラー150は、外部システムメモリ130へのおよび外部システムメモリ130からのデータのフローを管理する。データフローの管理の一部として、メモリコントローラー150は、論理アドレス空間を外部システムメモリ130の物理アドレス空間にマッピングおよび動的に再マッピングするように構成される。メモリコントローラー150はまた、論理アドレスを物理アドレスに翻訳する。すなわち、メモリコントローラー150は、プロセッサ120から論理アドレスを受信し、対応する（マッピングされた）物理アドレスを外部システムメモリ130に送信する。
【００３８】
図1において、メモリコントローラー150は、それがコンピューティングシステム110のプロセッシングサイドまたはコンピューティングシステム110のメモリサイドのいずれかに実装され得ることを意味するために破線で示されている。プロセッシングサイドの実装の例として、メモリコントローラー150は、プロセッサ120のチップ上に配置され得るか、またはそれは、オペレーティングシステムの一部であり得る。メモリサイドの実装の例として、メモリコントローラー150は、外部システムメモリ130の基板上、またはマザーボードもしくは他のプリント回路基板上に配置され得る。好ましくは、メモリコントローラー150は、（例えば、同一チップ上で、保護されたマルチチップモジュールとして、ファームウェアにおいて）プロセッサ120と統合され、それは攻撃者にとってアクセス可能でない。メモリコントローラー150がプロセッサ120と統合されない場合、プロセッサ120との通信線は、攻撃者によるアクセスから保護される。
【００３９】
データパス140上のトラフィックの観察および分析は、メモリアクセスパターンを明かし得る。これが今度は攻撃者に、保護されたウィンドウ132におけるデータについて、およびプロセッサ120のアクションについて、洞察を得ることを可能にさせ得る。
【００４０】
メモリコントローラー150は、メモリアクセスパターンを不明瞭にすることによってそのようなトラフィック分析を妨害するように構成される。不明瞭化は、プロセッサ120の論理アドレス空間を外部システムメモリ130の物理アドレス空間に動的に再マッピングすることを含む。再マッピングは、論理アドレス空間へのデータアクセス時に実行される。例えば、再マッピングは論理アドレスへの読み出しまたは書き込み時に実行され得る。
【００４１】
不明瞭化はさらに、再マッピング後に外部システムメモリ130にデータを記憶することを含む。例えば、論理アドレスが第1の物理アドレスから第2の物理アドレスに再マッピングされた後、データが第2の物理アドレスに記憶される。
【００４２】
トラフィック分析からの最大の保護のために、再マッピングは、論理アドレス空間への各々のあらゆるデータアクセス時に実行され得る。しかしながら、再マッピングは、さほど頻繁に実行されなくてもよい。いずれにせよ、再マッピングは動的である。例えば、再マッピングは、プログラムの実行中に繰り返し実行される。
【００４３】
再マッピングは、論理アドレス空間全体（すなわち、あらゆる論理アドレス）を再マッピングすることを含まなくてもよい。むしろ、再マッピングは、保護のために指定された論理アドレスのみ、ことによると論理アドレス空間の追加のサブセットを含み得る。
【００４４】
図2Aは、論理アドレスへの書き込み動作の不明瞭化の例を示す。ブロック200で、書き込みイベントが開始される。書き込みイベントは、プロセッサ120、DMAエンジン、I／O、またはコンピューティングシステム110の他の能動コンポーネントによって開始され得る。
【００４５】
ブロック205で、論理アドレス、書き込みフラグ、およびデータが、書き込みコマンドの一部としてメモリコントローラー150に送信される。この時点で、論理アドレスは、外部システムメモリ130における第1の物理アドレスにマッピングされている。
【００４６】
ブロック210で、論理アドレスが再マッピングされる。マッピングされていない第2の物理アドレスが識別され、論理アドレスが、その第2の物理アドレスに再マッピングされる。
【００４７】
ブロック215で、メモリコントローラー150が論理アドレスを第2の物理アドレスに翻訳する。ブロック220で、データが外部システムメモリ130における第2の物理アドレスに記憶されるが、論理アドレスは変更されない。
【００４８】
図2Bは、論理アドレスへの読み出し動作の不明瞭化の例を示す。ブロック230で、読み出しイベントが開始される。ブロック235で、論理アドレスおよび読み出しフラグがメモリコントローラー150に送信される。ブロック240で、メモリコントローラー150が、論理アドレスを第1の物理アドレスに翻訳し、外部システムメモリ130が、その第1の物理アドレスにおけるデータをメモリコントローラー150に送信する。
【００４９】
ブロック245で、論理アドレスが再マッピングされる。マッピングされていない第2の物理アドレスが識別され、論理アドレスが、その第2の物理アドレスに再マッピングされる。
【００５０】
ブロック250で、データが第1の物理アドレスから第2の物理アドレスに移動させられる。かくして、データが外部システムメモリ130から読み出された後、データは外部システムメモリ130における新たな箇所に移動させられるが、論理アドレスは変更されない。
【００５１】
いくつかの構成において、ブロック245およびブロック250における動作は、プロセッサ120によって発行された読み出しコマンドの実行後にメモリコントローラー150によって自動で実行され得る。他の構成では、プロセッサ120が読み出しコマンドの後に書き込みコマンドを発行することにより、読み出しコマンドがメモリコントローラー150に、ブロック235およびブロック240における機能を実行させ、書き込みコマンドがメモリコントローラー150に、ブロック245およびブロック250における機能を実行させる。
【００５２】
図2Cは、書き込み動作を不明瞭にする別の方法を示す。書き込み動作はさらに、それが1つ以上のダミーの読み出し動作によって自動で先行されるようにすることにより、不明瞭にされ得る。ブロック260で、書き込みイベントが開始される。ブロック265で、ダミーの読み出し動作が実行される。論理アドレスおよびダミーの読み出しフラグがメモリコントローラー150に送信され、メモリコントローラー150が、論理アドレスを第1の物理アドレスに翻訳し、その第1の物理アドレスで外部システムメモリ130からデータを検索する。動作はダミーの読み出し動作であるので、データは、検索されたデータの完全性および真正性をメモリコントローラー150がチェックし得ることを除き、影響を及ぼされない。
【００５３】
ダミーの読み出し動作の後に書き込み動作が続く。ブロック270で、論理アドレスが第2の物理アドレスに再マッピングされる。ブロック275で、新たなデータが第2の物理アドレスに書き込まれる。追加のダミーの読み出し動作が実行される場合、各々のダミーの読み出し動作（ブロック265）の後に、再マッピング（ブロック270）および新たなデータの書き込み（ブロック275）が続き得る。
【００５４】
これらの不明瞭化において、物理アドレスは変わるが、論理アドレスは変わらない。同一の論理アドレスへの書き込みは、データが外部システムメモリ130における異なる物理アドレスに書き込まれるようにするであろう。このように、メモリアドレス再マッピングは、メモリアクセスパターンを不明瞭にするために使用される。
【００５５】
ここでは図3および図4を参照する。図3は、論理アドレス空間の物理アドレス空間へのマッピングおよび再マッピングのためのデータ構造の例を示し、図4は、メモリアドレス再マッピングがどのように実行され得るかの例を示す。この例におけるデータ構造は、第1のテーブル310と第2のテーブル320とを含む。第1のテーブル310および第2のテーブル320は、外部システムメモリ130における各々の保護されたウィンドウ132のために提供される。各々の保護されたウィンドウ132は、データを記憶する。データの最小アドレッシング可能単位は、バイト（8ビット）、メモリページ（例えば、64バイト）、暗号テキストブロック（16バイト）、等であり得る。これらの最小アドレッシング可能単位は、「チャンク」と呼ばれる。
【００５６】
各々の第1のテーブル310は、ヘッダ312を含み得、ヘッダ312は、その保護されたウィンドウ132の開始論理アドレスを含む。各々の第1のテーブル310はさらに、保護されたウィンドウ132に存在するチャンクと同数のエントリ314を含み得る。
【００５７】
エントリ314は、論理アドレス（例えば、論理アドレス全体または論理アドレスの部分）によってインデックスされる。例えば、論理アドレスは、ベースAおよびオフセットLを有する。第1のテーブル310は、オフセットLによってインデックスされ得る。オフセットLは、エントリ314を示し、エントリ314の値Pは、物理アドレスが決定されることを可能にする。いくつかの構成において、エントリ314の値は、保護されたウィンドウ132の先頭からの物理アドレスのオフセットを表し得る。他の構成では、エントリ314の値は、絶対物理アドレス、メモリページの先頭からのオフセット、等を表し得る。
【００５８】
第2のテーブル320は、ヘッダ322と、マッピングされていない物理アドレスのためのエントリ値のリスト324とを含む。各々のエントリ値は、その対応する物理アドレスが決定されることを可能にする。物理アドレス空間は、論理アドレス空間よりも少なくとも1物理メモリ箇所分大きい。したがって、少なくとも1つの物理アドレスが常にマッピングされていないであろう。
【００５９】
再マッピング動作は、この第2のテーブル320を利用する。第1のテーブル310および第2のテーブル320がオフセットの値を記憶する例を考える。再マッピング動作の開始時、論理アドレスのオフセットLが、第1のテーブル310におけるオフセットを示す。（斜線で塗りつぶされたパターンを有するボックスによって表された）インデックスされているオフセットは、「第1」のオフセットと呼ばれる。
【００６０】
ブロック410で、マッピングされていない物理アドレスへのオフセットが、第2のテーブル320におけるリスト324から選択される（このアクションは、図3において破線によって表されている）。（細かい斑点で塗りつぶされたパターンを有するボックスによって表された）選択されたオフセットは、「第2」のオフセットと呼ばれる。第2のオフセットは、リスト324からランダムにまたは擬似ランダムに選択され得る。
【００６１】
ブロック420で、第1のテーブル310における第1のオフセットが、第2のオフセットと置き換えられる（このアクションは、図3において一点鎖線によって表されている）。すなわち、論理アドレスによってインデックスされたオフセットが、第2のテーブル320から選択されたオフセットと置き換えられる。
【００６２】
ブロック430で、第1のオフセットが今度は、マッピングされていないアドレスへのオフセットのリスト324に追加される。このアクションは、図3において二点鎖線によって表されている。
【００６３】
再マッピングは、メモリアクセスのレベルで行われる。この低いレベルでは、プログラムの概念は存在しない。
【００６４】
上述されたように、メモリコントローラー150は、さまざまな手法でコンピューティングシステム110に実装され得る。図5、図6、および図7は、3つの例を提供する。
【００６５】
図5は、メモリバス540を介して外部システムメモリ530と通信する中央処理装置（CPU）520を含むコンピューティングシステム510を示す。CPU520は、1つ以上のコア522とメモリ管理ユニット（MMU）524とを含む。メモリ管理ユニット524は、コア522から論理アドレスを受信し、論理アドレスを物理アドレスに翻訳し、物理アドレスがメモリバス540上に置かれる。メモリ管理ユニット524はまた、上述されたように動的なメモリアドレス再マッピングを実行する。メモリ管理ユニット524は、キャッシュ、レジスタ、またはテーブルを実装するための他のプライベートメモリ、およびアドレス翻訳を制御するための論理を含み得る。メモリアドレス再マッピングは、いずれのキャッシングスキームからも独立する。
【００６６】
図6は、ハードウェア層620とソフトウェア層630とを含む仮想マシン610を示す。ソフトウェア層630は、仮想マシンソフトウェア632およびアプリケーションソフトウェア634を含む。仮想マシンソフトウェア632が、アプリケーションソフトウェア634によって使用される論理アドレスを仮想アドレスにマッピングおよび再マッピングするためにハードウェア層620で実行される。仮想アドレスは、仮想マシンソフトウェア632とハードウェア層620との組み合わせによって、またはハードウェア層620におけるメモリ管理ユニットによって、のいずれかで物理アドレスにマッピングされ得る。
【００６７】
図7は、譲受人の米国特許出願公開第2013/0117577号明細書において説明されているシステムオンチップ（SoC）アーキテクチャと同様のSoCアーキテクチャを示す。チップ710は、オフチップの外部システムメモリ700と通信する。チップ710は、マイクロプロセッサ720、揮発性内部メモリ（例えば、EDRAM）730、およびメモリバス740を含む。いくつかの構成は、システムオンチップ（SoC）設計のためのCoreConnect（商標）バスアーキテクチャに従い得、マイクロプロセッサ720はPowerPCコアであり、メモリバス740はプロセッサローカルバス（PLB）である。
【００６８】
チップ710はまた、セキュアメモリトランザクションユニット（「SMTU」）750と呼ばれる専用回路を含む。SMTU750は、マイクロプロセッサ720と直接通信し、それは、メモリバス740を介してブリッジ760と通信する。SMTU750は、第1のメモリコントローラー770を介して外部システムメモリ700と通信し、それは、第2のメモリコントローラー780を介して内部メモリ730と通信する。
【００６９】
SMTU750は、外部システムメモリ700に記憶されたデータを暗号化および認証するための暗号化および認証エンジン752を提供する。鍵材料ストア754と呼ばれる専用メモリは、暗号化および認証のための鍵材料を記憶するために使用される。SMTU750は、マイクロプロセッサ720によってまたはブリッジ760に結合されたユニットによって開始された読み出しおよび書き込み要求を満足させるスレーブユニットとしての役割を果たし得る。
【００７０】
アドレス翻訳および動的なメモリアドレス再マッピングは、SMTU750によって実行され得る。例えば、SMTU750は、外部システムメモリにおける保護されたウィンドウを識別し、それらのウィンドウに記憶されたデータがどのように保護されるかを決定するための、トランザクション制御ユニット756を含み得る。トランザクション制御ユニット756はまた、アドレス翻訳および動的なメモリアドレス再マッピングを実行し得る。再マッピングがテーブルのようなデータ構造を利用する場合、テーブルは、内部メモリ730に記憶され得る。
【００７１】
他の構成において、アドレス翻訳および動的なメモリアドレス再マッピングは、第1のメモリコントローラー770によって実行され得る。さらなる他の構成では、マイクロプロセッサ720がアドレス翻訳および動的なメモリアドレス再マッピングを実行するようにプログラムされ得る。
【００７２】
本明細書におけるコンピューティングシステムは、いずれの特定の使用にも限定されない。例は、フライトコンピュータ、パーソナルコンピュータ、ワークステーション、ラップトップコンピュータ、およびスマートモバイルデバイスを含む。
【符号の説明】
【００７３】
110  コンピューティングシステム
120  プロセッサ
130  外部システムメモリ
132  保護されたウィンドウ
140  データパス
150  メモリコントローラー
200  ブロック
205  ブロック
210  ブロック
215  ブロック
220  ブロック
230  ブロック
235  ブロック
240  ブロック
245  ブロック
250  ブロック
260  ブロック
265  ブロック
270  ブロック
275  ブロック
310  第1のテーブル
312  ヘッダ
314  エントリ
320  第2のテーブル
322  ヘッダ
324  リスト
410  ブロック
420  ブロック
430  ブロック
510  コンピューティングシステム
520  中央処理装置（CPU）
522  コア
524  メモリ管理ユニット（MMU）
530  外部システムメモリ
540  メモリバス
610  仮想マシン
620  ハードウェア層
630  ソフトウェア層
632  仮想マシンソフトウェア
634  アプリケーションソフトウェア
700  外部システムメモリ
710  チップ
720  マイクロプロセッサ
730  内部メモリ
740  メモリバス
750  セキュアメモリトランザクションユニット（SMTU）
752  暗号化および認証エンジン
754  鍵材料ストア
756  トランザクション制御ユニット
760  ブリッジ
770  第1のメモリコントローラー
780  第2のメモリコントローラー
【図１】
0006739148.tif 000002
【図２Ａ】
0006739148.tif 000003
【図２Ｂ】
0006739148.tif 000004
【図２Ｃ】
0006739148.tif 000005
【図３】
0006739148.tif 000006
【図４】
0006739148.tif 000007
【図５】
0006739148.tif 000008
【図６】
0006739148.tif 000009
【図７】
0006739148.tif 000010