(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-22
(45)【発行日】2022-01-18
(54)【発明の名称】メモリ動作の暗号化
(51)【国際特許分類】
G09C 1/00 20060101AFI20220111BHJP
G06F 21/60 20130101ALI20220111BHJP
【FI】
G09C1/00 610Z
G06F21/60 320
(21)【出願番号】P 2020161026
(22)【出願日】2020-09-25
(62)【分割の表示】P 2018536461の分割
【原出願日】2016-09-21
【審査請求日】2020-10-20
(32)【優先日】2016-01-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ヌワン ジャヤセーナ
(72)【発明者】
【氏名】ドン ピン ジャン
【審査官】宮司 卓佳
(56)【参考文献】
【文献】特開2002-328845(JP,A)
【文献】特開2013-236376(JP,A)
【文献】特開2002-091828(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
G06F 21/60
(57)【特許請求の範囲】
【請求項1】
専用の相互接続を介してメモリモジュールに接続された処理モジュールを備える電子デバイスにおいて、
記憶動作の開始に応じて、
前記処理モジュールの前記相互接続に対する第1インタフェースにおいて、第1暗号化データを生成するために、第1キー及び第1フィードバックベース暗号プロセスを使用して、前記記憶動作の記憶データ表現を暗号化することと、
前記第1インタフェースにおいて、暗号化メモリアドレスを生成するために、前記第1キー及び前記第1フィードバックベース暗号プロセスを使用して、前記記憶動作のメモリアドレスを暗号化することであって、前記メモリアドレスは、複数のメモリ位置を含む前記メモリモジュールのメモリ位置に対応する、ことと、
前記第1暗号化データ及び暗号化メモリアドレスを、前記相互接続を介して前記メモリモジュールに送信することと、
前記メモリモジュールの前記相互接続に対する第2インタフェースにおいて、前記記憶データ表現のコピーを取得するために、第2キー及び第2フィードバックベース暗号プロセスを使用して、前記第1暗号化データを復号化することと、
前記第2インタフェースにおいて、前記メモリアドレスのコピーを取得するために、前記第2キー及び前記第2フィードバックベース暗号プロセスを使用して、前記暗号化メモリアドレスを復号化することと、
前記メモリアドレスのコピーに基づいて、前記記憶データ表現のコピーをメモリ位置に記憶することと、
前記第1インタフェースにおいて、前記記憶動作の属性に基づいて、複数のキーから前記第1キーを選択することと、
前記属性の表現を、前記相互接続を介して前記第1インタフェースから前記第2インタフェースに通信することと、
前記第2インタフェースにおいて、前記属性の表現に基づいて、複数のキーから前記第2キーを選択することと、を含む、
方法。
【請求項2】
前記属性は、前記記憶動作を発行したプロセッサコアの識別子、前記記憶動作を発行したプロセスの識別子、前記記憶動作を発行したスレッドの識別子、及び、前記記憶動作に関するアドレス空間の識別子のうち少なくとも1つを含む、
請求項1の方法。
【請求項3】
専用の相互接続を介してメモリモジュールに接続された処理モジュールを備える電子デバイスにおいて、
記憶動作の開始に応じて、
前記処理モジュールの前記相互接続に対する第1インタフェースにおいて、第1暗号化データを生成するために、第1キー及び第1フィードバックベース暗号プロセスを使用して、前記記憶動作の記憶データ表現を暗号化することと、
前記第1インタフェースにおいて、暗号化メモリアドレスを生成するために、前記第1キー及び前記第1フィードバックベース暗号プロセスを使用して、前記記憶動作のメモリアドレスを暗号化することであって、前記メモリアドレスは、複数のメモリ位置を含む前記メモリモジュールのメモリ位置に対応する、ことと、
前記第1暗号化データ及び暗号化メモリアドレスを、前記相互接続を介して前記メモリモジュールに送信することと、
前記メモリモジュールの前記相互接続に対する第2インタフェースにおいて、前記記憶データ表現のコピーを取得するために、第2キー及び第2フィードバックベース暗号プロセスを使用して、前記第1暗号化データを復号化することと、
前記第2インタフェースにおいて、前記メモリアドレスのコピーを取得するために、前記第2キー及び前記第2フィードバックベース暗号プロセスを使用して、前記暗号化メモリアドレスを復号化することと、
前記メモリアドレスのコピーに基づいて、前記記憶データ表現のコピーをメモリ位置に記憶することと、
前記第1インタフェースにおいて、第1ハッシュ値を生成するために、前記メモリアドレス及び前記記憶データ表現を使用して、暗号ハッシュを行うことと、
前記第1インタフェースにおいて、暗号化ハッシュ値を生成するために、前記第1ハッシュ値を暗号化することと、
前記暗号化ハッシュ値を、前記相互接続を介して前記第1インタフェースから前記第2インタフェースに送信することと、
前記第2インタフェースにおいて、前記第1ハッシュ値のコピーを生成するために、前記暗号化ハッシュ値を復号化することと、
前記第2インタフェースにおいて、第2ハッシュ値を生成するために、前記メモリアドレスのコピー及び前記記憶データ表現のコピーを使用して、暗号ハッシュを行うことと、を含み、
前記メモリアドレスのコピーに基づいて、前記記憶データ表現のコピーを前記メモリ位置に記憶することは、前記第2ハッシュ値と前記第1ハッシュ値のコピーとの比較結果に応じて、前記記憶データ表現のコピーを前記メモリ位置に記憶することを含む、
方法。
【請求項4】
専用の相互接続を介してメモリモジュールに接続された処理モジュールを備える電子デバイスにおいて、
記憶動作の開始に応じて、
前記処理モジュールの前記相互接続に対する第1インタフェースにおいて、第1暗号化データを生成するために、第1キー及び第1フィードバックベース暗号プロセスを使用して、前記記憶動作の記憶データ表現を暗号化することと、
前記第1インタフェースにおいて、暗号化メモリアドレスを生成するために、前記第1キー及び前記第1フィードバックベース暗号プロセスを使用して、前記記憶動作のメモリアドレスを暗号化することであって、前記メモリアドレスは、複数のメモリ位置を含む前記メモリモジュールのメモリ位置に対応する、ことと、
前記第1暗号化データ及び暗号化メモリアドレスを、前記相互接続を介して前記メモリモジュールに送信することと、
前記メモリモジュールの前記相互接続に対する第2インタフェースにおいて、前記記憶データ表現のコピーを取得するために、第2キー及び第2フィードバックベース暗号プロセスを使用して、前記第1暗号化データを復号化することと、
前記第2インタフェースにおいて、前記メモリアドレスのコピーを取得するために、前記第2キー及び前記第2フィードバックベース暗号プロセスを使用して、前記暗号化メモリアドレスを復号化することと、
前記メモリアドレスのコピーに基づいて、前記記憶データ表現のコピーをメモリ位置に記憶することと、
前記第1インタフェースにおいて、シリアル番号のシーケンス内の次のシリアル番号を判別することと、
前記第1インタフェースにおいて、暗号化シリアル番号を生成するために、前記次のシリアル番号を暗号化することと、
前記暗号化シリアル番号を、前記相互接続を介して前記第1インタフェースから前記第2インタフェースに送信することと、
前記第2インタフェースにおいて、前記次のシリアル番号のコピーを生成するために、前記暗号化シリアル番号を復号化することと、を含み、
前記メモリアドレスのコピーに基づいて、前記記憶データ表現のコピーを前記メモリ位置に記憶することは、前記次のシリアル番号のコピーと、予測される次のシリアル番号との比較結果に応じて、前記記憶データ表現のコピーを前記メモリ位置に記憶することを含む、
方法。
【請求項5】
専用の相互接続を介してメモリモジュールに接続された処理モジュールを備える電子デバイスにおいて、
記憶動作の開始に応じて、
前記処理モジュールの前記相互接続に対する第1インタフェースにおいて、第1暗号化データを生成するために、第1キー及び第1フィードバックベース暗号プロセスを使用して、前記記憶動作の記憶データ表現を暗号化することと、
前記第1インタフェースにおいて、暗号化メモリアドレスを生成するために、前記第1キー及び前記第1フィードバックベース暗号プロセスを使用して、前記記憶動作のメモリアドレスを暗号化することであって、前記メモリアドレスは、複数のメモリ位置を含む前記メモリモジュールのメモリ位置に対応する、ことと、
前記第1暗号化データ及び暗号化メモリアドレスを、前記相互接続を介して前記メモリモジュールに送信することと、
前記第1インタフェースにおいて、第1ハッシュ値を生成するために、前記メモリアドレス及び前記第1暗号化データを使用して、暗号ハッシュを行うことと、
前記第1ハッシュ値を、前記相互接続を介して前記第1インタフェースから前記メモリモジュールに送信することと、を含む、
方法。
【請求項6】
処理システムであって、
少なくとも1つのプロセッサコアと、
前記少なくとも1つのプロセッサコアに接続された第1インタフェースであって、相互接続に接続可能な第1インタフェースと、を含む処理モジュールを備え、
前記第1インタフェースは、
第1暗号化データ及び暗号化メモリアドレスを生成するために、第1キー及び第1フィードバックベース暗号プロセスを使用して
、記憶動作の記憶データ表現及び前記記憶データに関するメモリアドレスを暗号化することであって、前記メモリアドレスは、複数のメモリ位置を含むメモリモジュールのメモリ位置に対応する、ことを行う第1暗号エンジンを備え、
前記第1インタフェースは、前記第1暗号化データ及び前記暗号化メモリアドレスを、前記相互接続を介して前記メモリモジュールに送信し、
前記メモリモジュールは、
メモリコアと、
前記相互接続及び前記メモリコアに接続された第2インタフェースであって、前記記憶データ表現のコピー及び前記メモリアドレスのコピーを生成するために、第2キー及び第2フィードバックベース暗号プロセスを使用して、前記第1暗号化データ及び前記暗号化メモリアドレスを復号化する第2暗号エンジンを備える第2インタフェースと、を備え、
前記第2インタフェースは、前記メモリアドレスのコピーに基づいて、前記記憶データ表現のコピーを前記メモリコアのメモリ位置に記憶し、
前記処理モジュールは、前記記憶動作の属性に基づいて、複数のキーから前記第1キーを選択するための第1キーストアをさらに備え、
前記メモリモジュールは、前記相互接続を介して受信した前記属性の表現に基づいて、複数のキーから前記第2キーを選択するための第2キーストアをさらに備える、
処理システム。
【請求項7】
処理システムであって、
少なくとも1つのプロセッサコアと、
前記少なくとも1つのプロセッサコアに接続された第1インタフェースであって、相互接続に接続可能な第1インタフェースと、を含む処理モジュールを備え、
前記第1インタフェースは、
第1暗号化データ及び暗号化メモリアドレスを生成するために、第1キー及び第1フィードバックベース暗号プロセスを使用して
、記憶動作の記憶データ表現及び前記記憶データに関するメモリアドレスを暗号化することであって、前記メモリアドレスは、複数のメモリ位置を含むメモリモジュールのメモリ位置に対応する、ことを行う第1暗号エンジンを備え、
前記第1インタフェースは、前記第1暗号化データ及び前記暗号化メモリアドレスを、前記相互接続を介して前記メモリモジュールに送信し、
前記メモリモジュールは、
メモリコアと、
前記相互接続及び前記メモリコアに接続された第2インタフェースであって、前記記憶データ表現のコピー及び前記メモリアドレスのコピーを生成するために、第2キー及び第2フィードバックベース暗号プロセスを使用して、前記第1暗号化データ及び前記暗号化メモリアドレスを復号化する第2暗号エンジンを備える第2インタフェースと、を備え、
前記第2インタフェースは、前記メモリアドレスのコピーに基づいて、前記記憶データ表現のコピーを前記メモリコアのメモリ位置に記憶し、
前記第1インタフェースは、第1ハッシュ値を生成するために、前記メモリアドレス及び前記記憶データ表現を使用して、暗号ハッシュを行う第1暗号ハッシュモジュールを備え、
前記第1インタフェースは、前記第1ハッシュ値の表現を前記メモリモジュールに送信し、
前記第2インタフェースは、
第2ハッシュ値を生成するために、前記メモリアドレスのコピー及び前記記憶データ表現のコピーを使用して、暗号ハッシュを行う第2暗号ハッシュモジュールと、
前記第2ハッシュ値と前記第1ハッシュ値との比較結果に応じて、前記第1暗号化データのコピーの前記メモリ位置への記憶を許可するハッシュ比較ロジックと、を備える、
処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、データストレージ用のメモリを利用する処理システムに関し、より詳細には、暗号化されたメモリを利用する処理システムに関する。
【背景技術】
【0002】
実行に使用されるハードウェアをデータ所有者が物理的に制御しない設定においてセキュリティを強化する方法として、暗号化されたメモリ(すなわち、メモリの内容が暗号化されている)を使用する方法が提案されている。しかしながら、暗号化されたメモリに対する従来のアプローチは、メモリアクセスの予測不可能性と、典型的なプロセッサ/メモリアーキテクチャの制約とを考慮して、キャッシュラインを個別に暗号化する必要があるため、基本的な攻撃手法に対して脆弱である。
【0003】
従来の暗号化されたメモリの実装は、典型的には、メモリに記憶されるデータが、使用されるデータ及び暗号化キーの関数として単独で暗号化される電子コードブック(ECB)ベースの暗号化スキームに依存する。このアプローチは、2つのキャッシュラインが同一の暗号文をもたらす同一の平文を有することによって、暗号化されたデータのオブザーバに対してデータに関する情報が漏洩する等のいくつかの欠点を有する。かかる情報によって、ECBは、データの統計的性質を用いて、暗号化されたデータに関する情報を推測したり、場合によっては、データを暗号化するのに用いられる暗号化キーを解読する「辞書」攻撃を受け易くなる。従来のECBベースの暗号化されたメモリの実装の別の欠点は、暗号化されたデータを破損又は上書きすることができるように、プロセッサとメモリとの間の相互接続に攻撃者がトラフィックを挿入するデータ「インジェクション」攻撃を受け易いことである。このような攻撃を阻止するために、従来の暗号化されたメモリシステムは、多くの場合、メモリの内容全体に亘ってツリー型構造の生成に依存しており、これにより、各ロード動作又は記憶動作を認証するために多くのメモリアクセスを必要とする。
【0004】
本開示は、添付の図面を参照することによってより良く理解することができ、その多くの特徴及び利点が当業者に明らかになるであろう。異なる図面において同じ符号を使用することは、類似又は同一の項目を示す。
【図面の簡単な説明】
【0005】
【
図1】いくつかの実施形態による、暗号化メモリを用いる処理システムのブロック図である。
【
図2】いくつかの実施形態による、
図1の処理システムにおいてセキュアなメモリアクセス動作を実行するための方法を示すフロー図である。
【
図3】いくつかの実施形態による、認証のための暗号ハッシュ及びシリアル番号の一方又は両方を利用するペアのメモリインタフェースの実装例を示すブロック図である。
【
図4】いくつかの実施形態による、ブロック連鎖に基づく暗号エンジンを示すブロック図である。
【
図5】いくつかの実施形態による、
図1の処理システムの例示的な積層型のプロセッサインメモリ(PIM)の実装を示す図である。
【発明を実施するための形態】
【0006】
図1~
図5は、処理システムにおいて強化した暗号化メモリを用いるための例示的な方法及びシステムを示す図である。少なくとも1つの実施形態では、処理システムは、メモリバス又は他の相互接続を介してメモリモジュールに接続された処理モジュールを含む。記憶型メモリアクセス動作(すなわち、「記憶動作」)の場合、処理モジュールは、第1暗号文を生成するために、第1キーを使用して、記憶されるキャッシュライン又は他のデータを暗号化する。次いで、処理モジュールの暗号エンジンは、第2暗号文を生成するために、第2キーを使用して、第1暗号文を暗号化する。また、暗号エンジンは、暗号化されたメモリアドレスを生成するために、第2キー又は別のキーを使用して、記憶動作に関連するメモリアドレスを暗号化する。第2暗号化データ及び暗号化メモリアドレスは、相互接続を介してメモリモジュールに送信される。メモリモジュールは、暗号化メモリアドレス及び第2暗号文を復号化して、メモリアドレス及び第1暗号文のコピーを取得する。次に、メモリモジュールは、第1暗号文のコピーを、メモリアドレスのコピーによってアドレス指定されたメモリ位置に記憶する。
【0007】
ロード型メモリアクセス動作(すなわち、「ロード動作」)の場合、処理モジュールは、暗号化メモリアドレスを生成するために、第2キー又は別のキーを使用して、ロード動作に関連するメモリアドレスを暗号化し、この暗号化メモリアドレスを、相互接続を介してメモリモジュールに送信する。メモリモジュールは、暗号化メモリアドレスを復号化してメモリアドレスのコピーを取得し、メモリアドレスのコピーによってアドレス指定されたメモリ位置に記憶された第1暗号文にアクセスする。次に、メモリモジュールは、第1暗号文を暗号化して第2暗号文を生成し、第2暗号文は、インタフェースを介して処理モジュールに送信される。処理モジュールでは、第2暗号文が復号化されて第1暗号文のコピーが生成され、第1暗号文のコピーが復号化されて、ロード動作によって求められたロードデータのコピーが生成される。
【0008】
少なくとも1つの実施形態では、各メモリモジュールと各処理モジュールとの間の接続は、相互接続の個別の専用インスタンス及び相互接続の両側の対応する暗号エンジンによって提供される。この構成によって、メモリモジュールの暗号エンジンが、処理モジュールの暗号エンジンと同じデータアクセスシーケンスを監視する状況が生じる。したがって、暗号エンジンは、従来の暗号化メモリの実装とは対照的に、現在のキャッシュライン又は暗号化されている他のデータの機能だけでなく、以前に暗号化された1つ以上の以前のキャッシュライン又は他のデータの機能でもある暗号プロセスを利用してもよい。このタイプの暗号プロセスは、本明細書において「フィードバックベース暗号プロセス」と呼ばれる。フィードバック依存の暗号プロセスの例には、暗号ブロック連鎖(CBC)及び暗号フィードバック(CFB)アルゴリズム等のブロック連鎖暗号プロセスや、CryptMT及びRabbitアルゴリズム等のストリーム暗号が含まれる。フィードバックベース暗号プロセスは、概して、現在のキャッシュライン/暗号化されているデータのみの機能である暗号プロセスと比較して強化した暗号セキュリティを提供し、フィードバックベース暗号プロセスを用いることによって、例えば辞書型攻撃の使用又は権限のないオブザーバによるメモリアクセスパターンの分析等の平文データへの不正アクセスに対する耐性を向上させる。
【0009】
図1は、本開示の少なくとも1つの実施形態による、セキュアなデータストレージを用いる処理システム100を示す図である。処理システム100は、例えば、記憶されたデータの所有者が、「クラウド」サーバのシナリオ等のように、データを記憶して処理するハードウェアの物理的制御を有しないシステムを表すことができる。図示した例では、処理システム100は、相互接続106を介してメモリモジュール104に接続された少なくとも1つの処理モジュール102を含む。
【0010】
処理モジュール102は、1つ以上のプロセッサ108と、ハードウェア暗号エンジン110と、メモリインタフェース112と、を備え、キーストア114をさらに含んでもよい。プロセッサ108は、例えば、中央処理装置(CPU)、グラフィックス処理装置(GPU)又はこれらの組み合わせを備えてもよく、プロセッサコア116,118等の1つ以上のプロセッサコアと、キャッシュ120,122等の1つ以上のキャッシュと、を含んでもよい。メモリインタフェース112は、プロセッサ108と、暗号エンジン110と、キーストア114と、相互接続106と、に接続されており、暗号エンジン124を含む。
【0011】
メモリモジュール104は、処理モジュール102のための暗号化メモリとして動作する。このために、メモリモジュール104は、メモリコア126と、メモリインタフェース128と、を含み、キーストア130を含んでもよい。メモリコア126は、それぞれ対応するメモリアドレス(例えば、物理メモリアドレス)を介してアクセスされる複数の記憶場所(図示省略)又はエントリを備える。メモリコア126は、例えばスタティックRAM(SRAM)アーキテクチャ、ダイナミックRAM(DRAM)アーキテクチャ、不揮発性RAM(NVRAM)アーキテクチャ及びフラッシュメモリアーキテクチャ等の様々なランダムアクセスメモリ(RAM)アーキテクチャの何れかを使用して実装されてもよい。メモリインタフェース128は、メモリコア126と、キーストア130と、相互接続106と、に接続されており、暗号エンジン132を含む。
【0012】
相互接続106は、処理モジュール102とメモリモジュール104との間の双方向インタフェースとして機能するバス又は他のタイプの相互接続を備える。相互接続106は、モジュール102,104間で実行されるメモリアクセス動作のためのシグナリングを行うための複数の信号経路を備える。この信号経路には、メモリアドレス情報を送信するための信号経路、データ情報を送信するための信号経路、制御情報を送信するための信号経路等が含まれる。一実施形態では、同じメモリモジュール104に接続された複数の処理モジュール102を実装する場合に、各処理モジュール102は、個別に専用のメモリモジュール104に対する相互接続106を有し、メモリモジュール104は、処理モジュール102/相互接続106毎に個別のメモリインタフェース128を実装する。同様に、いくつかの実施態様では、処理モジュール102を複数のメモリモジュール104に接続することができ、この場合、処理モジュール102は、対応するメモリモジュール104に処理モジュール102を接続する相互接続106毎に個別のメモリインタフェース112を実装する。この構成の下では、処理モジュール102とメモリモジュール104との特定のペアを接続する相互接続106の両側のインタフェース112,128は、ロード動作及び記憶動作の同じシーケンスを監視するために、フィードバックベース暗号プロセスを実装してもよい。
【0013】
図5を参照して以下により詳細に説明するように、典型的な実施態様では、処理モジュール102及びメモリモジュール104は、個別のデバイス又はパッケージとして実装され、これにより、相互接続106は、両方のモジュール102,104が実装されるインターポーザ又は回路基板を横断する導電性トレースのセットとして実装されてもよいし、2つのモジュール102,104を接続するケーブルを横断する導電性トレースのセットとして実装されてもよい。このように、相互接続106は、導電性トレースに接続された物理的なタップの形態の不正アクセスを受けやすい場合がある。そして、かかる物理的なタップは、例えば辞書型攻撃等のように、メモリモジュール104に記憶され又はモジュール102,104間で送信される平文バージョンのデータに対するアクセスを試みるために、不正な集団によって使用される可能性がある。
【0014】
処理システム100は、相互接続106の脆弱性を考慮して、暗号技術の組み合わせを用いてデータセキュリティを強化する。
図2を参照して以下により詳細に説明するように、モジュール102,104は、相互接続106を介して送信される(及びメモリコア126に記憶される)データに対してフィードバックベース暗号プロセスを用いることによって、辞書式攻撃の使用による平文形式のデータにアクセスしようとする試み、又は、相互接続を介したデータストリームの統計的性質を分析する他の試みを抑制する。さらに、モジュール102,104は、メモリアクセスパターンに関する情報の漏洩を防止するために、相互接続106を介して送信されるメモリアドレスに対して暗号化スキームを用いる。さらに、
図3及び
図4を参照して以下により詳細に説明するように、処理システム100は、暗号ハッシュベースの認証プロセス又はシリアル番号ベースの認証プロセスのうち1つ以上を利用して、処理システム100におけるデータセキュリティをさらに強化することができる。
【0015】
図2は、本開示の少なくとも1つの実施形態による、セキュアなメモリアクセス動作を実行するための処理システム100の動作の方法200を示す図である。メモリアクセス動作は、概して、記憶型メモリアクセス動作(記憶動作)又はロード型メモリアクセス動作(ロード動作)の何れかに大まかに分類されてもよい。記憶動作の場合、データは、メモリモジュール104のメモリコア126内の対応する場所に記憶されるために、処理モジュール102によって提供される。逆に、ロード動作の場合、データは、メモリコア126の対応する場所からアクセスされ、処理モジュール102に送信される。その結果、ロードデータは、後の使用のために、プロセッサ108の1つ以上のキャッシュ又はレジスタに記憶される。概して、記憶又はロードされるデータは、キャッシュラインの形式又はサイズで行われるので、本明細書では、キャッシュラインの例に基づくデータの記憶及びアクセスを言及しているが、いくつかの実施形態では、データは、キャッシュラインより小さいサイズであってもよいし、大きいサイズであってもよい。
【0016】
パワーオンリセット(POR)又は他の初期化/再初期化イベントに続いて、メモリアクセス動作の処理の前に、ブロック202において、処理システム100は、概して、処理モジュール102のメモリインタフェース112と、メモリモジュール104のメモリインタフェース128と、の間のキー交換140(
図1)又は他のキー初期化を含む初期化プロセスを行う。いくつかの実施形態では、処理システム100は、公開キー/秘密キースキームを用いる。このスキームの場合、処理モジュール102のメモリインタフェース112は、事前に識別された記憶場所から公開キーを読み出す等によって、メモリインタフェース128の公開キーについてメモリインタフェース128に照会し、次いで、共有されるキーを暗号エンジン124で公開キーを使用して暗号化し、暗号化されたキーをメモリモジュール104のメモリインタフェース128に送信する。暗号化されたキーは、メモリインタフェース128の対応する秘密キーを使用することによって復号化され、結果として得られた復号化されたキーは、メモリモジュール104のキーストア130に記憶される。
【0017】
代替的には、メモリモジュール104は、メモリインタフェース112,128によって使用されるキーを生成し、メモリインタフェース112によって使用されるキーを処理モジュール102に通信してもよく、その後、キーは、処理モジュール102のキーストア114に記憶される。これは、例えば、メモリインタフェース128が、(例えば、処理モジュール102からのコマンドに応じて)キーを生成し、処理モジュール102によって提供された公開キーを使用してキーを暗号化し、次いで、暗号化されたキーをメモリコア126内の既知の場所に記憶することによって達成されてもよく、その結果、処理モジュール102は、当該キーにアクセスし、対応する秘密キーを使用して当該キーを復号化し、復号化されたキーをキーストア130に記憶してもよい。
【0018】
処理システム100を使用することによって、複数のデータ所有者は、処理モジュール102及びメモリモジュール104を同時に使用することができる。したがって、データのセキュリティをさらに強化するために、このような実装では、複数のキーセットを実装してもよい。例示のために、異なるキーセットは、物理的な要求毎(例えば、コア毎)、スレッド毎、プロセス毎、アドレス空間毎等に実装されてもよい。そのような場合、異なるキーセットは、後述するように、コアID、スレッドID、プロセスID又はアドレス空間ID等の要求元の識別子(ID)又は他のメモリアクセス属性に基づいて、キーストア114,130内にインデックス付けされ、その後、適切なキーセットにアクセスするように、メモリアクセス動作が開始された場合に参照される。
【0019】
処理システム100は、メモリインタフェース112,128及びキーストア114,130が適切なキーで開始されると、メモリアクセス動作を行う準備が整う。したがって、ブロック204において、処理モジュール102の要求元は、メモリアクセス動作を開始する。メモリアクセス動作は、上述したように、概して、データをメモリモジュール104に記憶するための記憶動作、又は、メモリモジュール104からデータにアクセスするためのロード動作の何れかの形態を取る。複数のキーセットが使用されている場合、ブロック206において、メモリインタフェース112,128の各々は、キーストア114,130の適切なキーセットにアクセスする。例示すると、ブロック204において、メモリアクセス動作が開始された場合、又は、ブロック206において、要求元が処理モジュール102のリソースの制御を以前の要求元から引き継いだ場合、プロセッサ108は、キー要求142(
図1)をキーストア114に発行してもよい。この場合、キー要求142は、例えば、メモリアクセス動作を要求するコア、スレッド、プロセスのID、又は、メモリアクセス動作に関するアドレス空間のID等のように、関連するメモリアクセス属性の表現を含んでもよい。さらに、メモリインタフェース112は、この同じ情報をメモリインタフェース128に提供することによって、適切なキーセットが、メモリモジュール104のキーストア130からアクセスされるようにする。
【0020】
いくつかの実施形態では、メモリインタフェース112は、対応するメモリアクセス要求の送信の前に、相互接続106又は別のサイドバンド接続を介した(事前に識別された公開/秘密キーを介して暗号化されてもよい)別の通信として、メモリアクセス属性情報又は他の代表的なインデックスをメモリインタフェース132に提供する。別の実施形態では、メモリインタフェース112は、メモリアクセス属性又は他の代表的なインデックスを、(例えば、制御シグナリングの範囲内で)メモリアクセス要求に対して提供されるシグナリングの一部として含んでもよい。対応するキー(後述する)は、各キーストア114,130からアクセスされ、暗号エンジン110,124,132の対応するバッファ又はレジスタに一時的に記憶される。
【0021】
処理システム100は、暗号エンジン110,124,132が初期化されると、メモリアクセス動作を開始する準備が整う。この動作には、記憶動作又はロード動作が含まれてもよい。
図2のフローパス208は、記憶動作に関して行われるプロセスを示しており、
図2のフローパス210は、ロード動作に関して行われるプロセスを示している。
【0022】
記憶動作は、フローパス208のブロック212において開始され、これに従って、メモリコア126の対応するアドレス指定された場所(例えば、キャッシュ120,122の何れか1つのキャッシュから排除されたキャッシュライン)に記憶される平文記憶データ(
図1において「データ」と示されている)が暗号エンジン110に提供され、これに従って、暗号エンジン110は、第1暗号化データ又は暗号文(ここでは、暗号文「CT1」と示されている)を生成するために、処理モジュール102のみに知られているキーK1(
図1のキー144)を使用して平文データを暗号化する。AES(高度暗号化標準)、DES(データ暗号化標準)、3DES(トリプルDES)、PGP(プリティグッドプライバシ)及びBlowfish等の様々な暗号化アルゴリズムのうち何れかを使用して、平文データを暗号化してもよい。第1暗号文CT1と、データが記憶されるメモリアドレス(「ADDR」と示されている)とは、メモリインタフェース112に提供され、ブロック214において、暗号エンジン124は、第2暗号化データ(暗号文「CT2」と示されている)と、暗号化されたメモリアドレス(「EN_ADDR」と示されている)とを生成するために、フィードバックベース暗号プロセス(例えば、CFB又はストリーム暗号)に従って、異なるキーK2(
図1のキー146)を使用して、第1暗号文CT1及びメモリアドレスADDRを暗号化する。なお、
図1には、データが、相互接続106を介して送信される前に2回暗号化される実施態様が示されているが、いくつかの実施形態では、暗号エンジン110による第1暗号化が省略されてもよく、この場合、平文データDATAは、暗号文CT2への暗号化のために、暗号文CT1の代わりに暗号エンジン110に提供されてもよい。
【0023】
一実施形態では、第1暗号文CT1及びメモリアドレスADDRは、個別の暗号化された値を生成するために、(並列ではあるが)別々に暗号化されてもよい。しかしながら、他の実施形態では、第1暗号文CT1及びメモリアドレスADDRは、第1暗号文CT1及びメモリアドレスを暗号化の前に連結して単一の値にする等によって単一の暗号化された値を生成するために、共に暗号化されてもよい。ブロック216では、メモリインタフェース112は、相互接続106を介して行われるシグナリング(第2暗号文CT2及び暗号化メモリアドレスEN_ADDRを含むシグナリング)によって、記憶要求をメモリモジュール104に送信する。
【0024】
メモリインタフェース128は、記憶要求を表すシグナリングを受信し、ブロック218において、暗号エンジン132は、第1暗号文CT1のコピーと、メモリアドレスADDRの平文コピーとを生成するために、キーK3(
図1のキー148)を使用して、第2暗号文CT2と暗号化メモリアドレスEN_ADDRとを復号化する。暗号エンジン124,132は、対称キー暗号化プロセス(例えば、AES、DES)を使用してもよく、この場合、キーK2及びK3は同じキーである。アドレスが復号化されると、ブロック220において、メモリインタフェース128は、ブロック218にて得られたメモリアドレスADDRによってアドレス指定されたメモリコア126のメモリ位置150(
図1)、或いは、これに関連するメモリコア126のメモリ位置150に第1暗号文CT1を記憶する。
【0025】
第1暗号文CT1及びメモリアドレスADDRを暗号化及び復号化するために、上述した暗号化アルゴリズムの何れか等のような様々な暗号化アルゴリズムを使用してもよい。具体的には、各相互接続106は、特定の処理モジュール/メモリモジュールのペアに特有であるため、処理モジュール102のメモリインタフェース112と、メモリモジュール104のメモリインタフェース128との両方は、キャッシュラインの同じシーケンス又は他のデータを参照する。そのようなものとして、暗号エンジン124,132の各々は、フィードバックベース暗号化技術を採用してもよい。この技術では、
図4を参照して以下に詳細に説明するように、同じ平文項目の再発が同じ暗号文(例えば、暗号化プロセス及び復号化プロセスの間のストリーム暗号又はブロック連鎖暗号等)をもたらさない。
【0026】
フローパス208によって示されるように、記憶データは、記憶動作中に、相互接続106を介して送信される前に、ブロック連鎖又はストリーム暗号によって暗号化され、これにより、典型的には、所定の平文値の暗号化が毎回同じ暗号化された値をもたらすという状況が回避される。このように、システム100は、相互接続106を介して送信されたデータの分析による辞書型攻撃に抵抗する。さらに、暗号エンジン110が利用される実施形態では、データは、メモリコア126に記憶された場合に、(暗号文CT1として)暗号化された形態のままであるため、メモリコア126が不正なエンティティによって侵害される場合には、平文バージョンのデータにアクセスしようとする試みを妨げることができる。さらに、記憶動作のためのメモリアドレスADDRは、送信前に暗号化される。これにより、処理システム100のデータに対する攻撃のベースとして使用され得るメモリアクセスパターン又は他のメモリアクセス情報の漏洩を防止することができる。
【0027】
ブロック206に戻ると、メモリアクセス動作がロード動作である場合、ロード動作のメモリアドレス(「ADDR」と示されている)は、プロセッサ108からメモリインタフェース112に提供される。ブロック222において、暗号エンジン124は、暗号化メモリアドレス(「EN_ADDR」と示されている)を生成するために、キーK2(
図1のキー146)と、ブロック連鎖又はストリーム暗号とを使用して、メモリアドレスを暗号化する。ロード動作に使用されるキーK2は、記憶動作に使用されるキーK2と同じキーであってもよいし、異なるキーであってもよい。ブロック224において、メモリインタフェース112は、相互接続106を介して行われるシグナリングによって、ロード要求をメモリモジュール104に送信する。この場合、シグナリングは、暗号化メモリアドレスEN_ADDRを含む。
【0028】
メモリインタフェース128は、ロード要求を表すシグナリングを受信し、ブロック226において、暗号エンジン132は、メモリアドレスADDRの平文コピーを生成するために、キーK3(
図1のキー148)と、対応するブロック連鎖又はストリーム暗号アルゴリズムとを使用して、暗号化メモリアドレスEN_ADDRを復号化する。ロード動作に使用されるキーK3は、記憶動作に使用されるキーK3と同じキーであってもよいし、異なるキーであってもよい。ブロック228において、メモリインタフェース128は、取得されたメモリアドレスADDRのコピーによって参照されるメモリコア126のメモリ位置(例えば、
図1の位置150)から要求されたデータにアクセスする。上述したように、データは、記憶動作中に、暗号化データ又は暗号文としてメモリコア126に記憶されているため、アクセスされたデータは、ここでは第1暗号文CT1と呼ばれる。
【0029】
ブロック230において、暗号エンジン132は、メモリコア126から取得した要求データにより、第2暗号文CT2を生成するために、キーK4(
図1のキー152)を使用して、暗号文CT1をさらに暗号化する。対称キー暗号化の実施形態では、キーK4は、暗号エンジン124によって使用されるキーK2と同じキーであってもよい。共有キーの実施形態では、キーK4は、公開キー/秘密キーのペアのうち公開キーであってもよい。ブロック232において、メモリインタフェース128は、相互接続106を介したメモリインタフェース112へのロード結果又はロード応答を表すシグナリングを使用して、第2暗号文CT2を処理モジュール102に送信する。
【0030】
ブロック234において、暗号エンジン124は、メモリインタフェース112において第2暗号文CT2を受信すると、メモリコア126に記憶された第1暗号文CT1のコピーを生成するために、キーK5(
図5のキー154)を使用して、第2暗号文CT2を復号化する。キーK5は、キーK2と同じキーであってもよく、対称キー暗号化が暗号エンジン124,132によって用いられる場合には、キーK4と同じキーであってもよい。或いは、公開キー/秘密キー方式が用いられる場合には、上述したように、キーK5はキーペアの秘密キーであり、キーK4は公開キーである。ブロック236において、暗号エンジン110は、第1暗号文CT1によって表される平文ロードデータのコピーを取得するために、キーK1を使用して、取得した第1暗号文CT1のコピーを復号化する。次いで、この平文ロードデータは、ロード動作の要求元によるアクセスのために、コア116,118の対応する1つのキャッシュライン又は他の一時的な記憶場所に記憶されてもよい。
【0031】
フローパス210によって示されるように、ロードデータは、ロード動作中に、メモリモジュール104から相互接続106を介して処理モジュール102に送信される前に、フィードバックベース暗号プロセスを使用して暗号化され、ロード動作のメモリアドレスADDRは、送信前に暗号化される。これらの両方によって、フローパス208に関して上述したように、強化したデータセキュリティがもたらされる。
【0032】
相互接続106が比較的簡単にアクセスされ、物理的にタップされ得るので、攻撃者は、相互接続106を使用して、メモリモジュール104に記憶された暗号化データを上書きすることによってメモリモジュール104に記憶されたデータを破損させるように、偽の記憶動作を挿入するように試みる場合がある。したがって、このような攻撃を防止するために、少なくとも1つの実施形態では、処理システム100は、記憶動作が、実際に許可された要求元からの正当な記憶動作であることを検証するために、様々な認証プロセスを用いてもよい。このような認証プロセスは、例えば、暗号ハッシュ認証プロセス又はシリアル番号ベースの認証プロセスを含んでもよい。
【0033】
図3は、少なくとも1つの実施形態による、これらの認証プロセスの一方又は両方を実装するための例示的なハードウェア実装を示す図である。図示した実施形態では、メモリインタフェース112の暗号エンジン124は、暗号ハッシュモジュール302と、暗号化/復号化モジュール304と、シリアル番号生成部305と、を含む。同様に、メモリインタフェース128の暗号エンジン132は、暗号化/復号化モジュール306と、暗号ハッシュモジュール308と、ハッシュ比較ロジック310と、シリアル番号比較ロジック312と、を含む。
【0034】
ハッシュベースの認証動作では、第1暗号文CT1及びメモリアドレスADDRが暗号ハッシュモジュール302に入力され、ハッシュモジュール302は、ハッシュ値(「H1」と示されている)を生成するために、ハッシュキーXを使用して、第1暗号文CT1及びメモリアドレスADDRの暗号ハッシュを行う。次に、ハッシュ値H1が暗号化/復号化モジュール304に入力されると、暗号化/復号化モジュール304は、暗号化ハッシュ値(「H2」と示されている)と、第2暗号文CT2と、暗号化メモリアドレスEN_ADDRとの各々を生成するために、対応するキーK(例えば、
図1のキーK2)を使用して、ハッシュ値H1と、第1暗号文CT1と、メモリアドレスADDRとの各々を暗号化する。暗号化されたハッシュ値H2は、上述したように、記憶動作のシグナリングの一部として、第2暗号文CT2及び暗号化メモリアドレスEN_ADDRと共に送信される。暗号化/復号化モジュール306は、メモリインタフェース128で当該シグナリングを受信すると、ハッシュ値H1及びメモリアドレスADDRの平文コピーを生成するとともに第1暗号文CT1のコピーを生成するために、対応するキーK(例えば、
図1のキーK3)を使用して、暗号化されたハッシュ値H2と、第2暗号文CT2と、暗号化メモリアドレスEN_ADDRとを復号化する。
【0035】
暗号ハッシュモジュール308は、受信した記憶動作が正当であることを検証するために、取得したハッシュ値H1、メモリアドレスADDR及び第1暗号文CT1のコピーを使用して、暗号ハッシュモジュール302による同じ又は対称的なハッシュ演算を行い、ハッシュ値(「H3」と示されている)がもたらされる。次に、ハッシュ比較ロジック310は、取得したハッシュ値H1のコピーを、生成されたハッシュ値H3と比較する。ハッシュ比較ロジック310は、比較結果によって2つのハッシュ値が一致すること判明した場合、この記憶動作を許可されたものとして識別し、メモリインタフェース128が記憶動作を処理し続けることに応じて「VALID」信号を提供する。しかしながら、攻撃者が、暗号ハッシュモジュール302,308に使用されるキーXのコピーを有する可能性が低いことから、不正な記憶動作を挿入しようとする攻撃者の試みは、取得したハッシュ値H1と、生成されたハッシュ値H3との間で不一致が生じることになる。このような場合には、ハッシュ比較ロジック310は、メモリインタフェース128が記憶動作のさらなる処理を中止することに応じて「NOP」信号を提供し、当該記憶動作を「ノーオペレーション」又は「NOP」として扱う。
【0036】
シリアル番号ベースの認証動作では、シリアル番号生成部305は、シリアル番号のシーケンス(例えば、インクリメント又はデクリメントシーケンスの何れか)において次のシリアル番号を生成し、このシリアル番号の値をSNとして暗号化/復号化モジュール304に提供する。暗号化/復号化モジュール304は、対応するキーK(例えば、
図1のキーK2)を使用して、シリアル番号SNと、第1暗号文CT1と、メモリADDRと、を暗号化して、暗号化シリアル番号(「EN_SN」と示されている)と、第2暗号文CT2と、暗号化メモリアドレスEN_ADDRとの各々を生成する。これらの値は、上述したように、記憶動作のシグナリングの一部として送信される。暗号化/復号化モジュール306は、メモリインタフェース128でこのシグナリングを受信すると、対応するキーK(例えば、
図1のキーK3)を使用して、暗号化されたシリアル番号EN_SNと、第2暗号文CT2と、暗号化メモリアドレスEN_ADDRとを復号化して、シリアル番号SN及びメモリアドレスADDRの平文コピーと、第1暗号文CT1のコピーとを生成する。
【0037】
シリアル番号比較ロジック312は、受信した記憶動作が正当であることを検証するために、レジスタ314又は他の記憶コンポーネントにおけるシーケンスから使用中の現行のシリアル番号を維持する。これは、試みられた各メモリアクセス動作に対して現在のシリアル番号のローカルコピーをインクリメント又はデクリメントすることによって、又は、認証された最後のメモリアクセス動作のシリアル番号をレジスタ314に記憶することによって、実現されてもよい。シリアル番号SNの復号化されたコピーは、暗号化/復号化モジュール306からシリアル番号比較ロジック312に提供され、シリアル番号比較ロジック312は、このシリアル番号SNを現在のシリアル番号と比較する。シリアル番号比較ロジック312は、比較の結果、受信したシリアル番号SNがシーケンス内の予測される次のシリアル番号であることが示された場合に、この記憶動作を許可されたものとして識別し、メモリインタフェース128が記憶動作を処理し続けることに応じて「VALID」信号をもたらす。しかしながら、攻撃者がシーケンス内の次のシリアル番号を知る可能性が低いことから、偽造したシリアル番号を用いた不正な記憶動作を挿入しようとする攻撃者の試みは、復号化されたシリアル番号SNのコピーと、シーケンス内の予測される次のシリアル番号と、の間で不一致が生じることになる。このような場合、シリアル番号比較ロジック312は、メモリインタフェース128が記憶動作のさらなる処理を中止することに応じて「NOP」信号を提供し、当該記憶動作を「ノーオペレーション」又は「NOP」として扱う。
【0038】
いくつかの実施形態では、両方の認証プロセスを並列に利用することができ、この場合、ANDロジックを使用して、ハッシュ比較ロジック310及びシリアル番号比較ロジック312の両方が「VALID」をシグナリングする場合に「VALID」信号を提供し、且つ、ハッシュ比較ロジック310及びシリアル番号比較ロジック312の何れかが「NOP」をシグナリングする場合に「NOP」信号を提供してもよい。
【0039】
各処理モジュール/メモリモジュールのペアが相互接続106及びメモリインタフェース112,128の個別の実施形態を実施すると、所定の処理モジュール102のためのメモリインタフェース112は、相互接続106の反対側の対応するメモリインタフェース128と同じシーケンスのメモリアクセス動作を監視し、その逆も同様に行われる。よって、従来のシステムとは対照的に、処理システム100は、暗号エンジン124,132において行われる暗号化/復号化プロセスの一部として、ストリーム暗号、又は、ブロック暗号の連鎖モードを用いてもよい。典型的な連鎖モード又はストリーム暗号では、キャッシュライン又は他のデータの暗号化(若しくは復号化)は、現在のキャッシュライン/データ及び暗号化キーの関数だけではなく、現在のキャッシュラインの前に暗号化された1つ以上の以前のロード動作又は記憶動作のキャッシュライン/データの関数でもある。しかしながら、このようなフィードバック依存の暗号プロセスを暗号化メモリシステムに実装すると、第2暗号化プロセスがタイミングクリティカルなメモリアクセスパスに挿入され、メモリレイテンシが増大する危険性がある。
【0040】
図4は、メモリアクセスクリティカルパスの外部でキーマテリアルを生成することによって、メモリアクセスレイテンシへの影響を低減する暗号フィードバック(CFB)モードを用いる暗号エンジン124,132の例示的なハードウェア実装400を示す図である。図示した実施形態では、ハードウェア実装400は、暗号エンジン124,132の両方によって実装され得る暗号化パスハードウェアを表している。復号化パスハードウェアは、同様に実装されてもよい。
【0041】
ハードウェア実装400は、ステージ401,402,403として識別される3つの順次的な暗号化ステージに対して論理的に繰り返されるブロック暗号ロジック404及びXORロジック406を含む。ブロック暗号ロジック404は、2つの入力(キー(
図4において「KEY」と示されている)を受信するための1つの入力と、第1ステージ401が初期化ベクトル(IV)を受信することを除いて、暗号化された出力を前のステージから受信するための入力と)を有する。IVは、典型的には、上述したように、処理モジュール102とメモリモジュール104との間の初期化プロセス中に交換される共有キー情報の一部である。ブロック暗号ロジック404は、所定のステージにおいて、2つの入力を使用して暗号プロセス(暗号化又は復号化)を行い、この結果が同じステージのXORロジック406の入力に出力される。XORロジック406は、そのステージに関連するデータを受信するための第2入力を有する。各データは、メモリアクセス動作のシーケンスからメモリモジュール104への対応するキャッシュラインを含んでもよい。その代わりに、各データは、メモリアクセス動作のシーケンスからメモリモジュール104への対応するメモリアドレスを含んでもよい。
図4に示すCFBモードでは、メモリアクセスクリティカルパスから2つのXOR演算(各メモリインタフェースに1つずつ)が除去されているので、暗号ブロック連鎖技術によって強化されたセキュリティを使用しながら、メモリレイテンシへの影響を最小限に抑えることができる。
【0042】
上述したように、メモリモジュール104は、暗号エンジン132を有するメモリインタフェース128を実装する。この構成は、対応するメモリ回路に緊密に接続された付加ロジックを利用するプロセッサインメモリ(PIM)実装に特に適している。
図5は、本明細書に記載した技術を有利に利用することができる例示的なPIMベースのシステム500を示す図である。
【0043】
図示した例では、システム500は、ホストプロセッサ502(処理モジュール102の一実施形態)と、1つ以上のメモリスタック(例えば、メモリスタック504,505,506,507等)のセット(メモリモジュール104の一実施形態)と、を含み、インターポーザ501(回路基板又はダイを含んでもよい)上に配置されている。各メモリスタックは、ロジックダイ508及びメモリダイ509,510,511,512のセットを含むダイのスタックを含む。ロジックダイ508は、メモリインタフェース128を実装し、メモリダイは、メモリコア126を実装する。メモリスタックのダイは、シリコン貫通ビア(TSV)(図示省略)によって結合されているので、物理的にタップするのは比較的困難である。インターポーザ501の導電性トレース(図示省略)は、ホストプロセッサ502をメモリスタック504~507に接続し、ピン(図示省略)は、当該導電性トレースを、ホストプロセッサ502とメモリスタック504~507との間の相互接続106(
図1)を形成するコンポーネントに接続する。しかしながら、導電性トレース及びピンは、メモリスタックのTSVとは異なり、物理的にタップするのが比較的容易であることから、不正なエンティティが、これらの相互接続を介して送信されるデータへのアクセスを試みることが比較的容易である。したがって、PIMベースのシステム500は、上述した二重暗号化、メモリアドレス暗号化、暗号化ハッシュ検証又は連鎖ベース暗号化技術のうち1つ以上を用いて、相互接続及びその内部で転送されるデータのインテグリティを保証してもよい。
【0044】
いくつかの実施形態では、上述した装置及び技術は、
図1~
図5を参照して上述したモジュール102,104等の1つ以上の集積回路(IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を備えるシステムにおいて実装される。これらのICデバイスの設計及び製造には、電子設計自動化(EDA)及びコンピュータ支援設計(CAD)ソフトウェアツールを使用することができる。これらの設計ツールは、通常、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、1つ以上のICデバイスの回路を製造するために製造システムを設計又は適応させるプロセスの少なくとも一部を実行するように、当該回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよく、これらの媒体からアクセスされてもよい。
【0045】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、他の方法で有形に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行された場合に、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体、又は、非一時的な記憶媒体の組み合わせを含んでもよい。このような記憶媒体には、光媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、キャッシュ)、不揮発性メモリ(例えば、読み出し専用メモリ(ROM)、フラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれるが、これらに限定されない。コンピュータ可読記憶媒体は、コンピューティングシステム(例えば、システムRAM又はROM)に埋め込まれてもよく、コンピューティングシステム(例えば、磁気ハードドライブ)に固定的に取り付けられてもよく、コンピューティングシステム(例えば、光ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)に取り外し可能に取り付けられてもよく、有線又は無線ネットワーク(例えば、ネットワークアクセス可能記憶装置(NAS))を介してコンピューティングシステムに接続されてもよい。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【0046】
全般的な説明において上述した活動又は要素の全てが必要であるとは限らず、特定の活動又はデバイスの一部が必要でなくてもよいこと、及び、1つ以上のさらなる活動が実行され、1つ以上のさらなる要素が含まれてもよいことに留意されたい。さらに、活動が列挙されている順序は、必ずしもそれらが行われる順序ではない。また、これらの概念は、特定の実施形態を参照して説明されている。しかしながら、当業者であれば、以下の特許請求の範囲に記載された本発明の範囲から逸脱することなく、様々な修正及び変更を行うことができることを理解するであろう。したがって、本明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、このような変更の全ては、本発明の範囲内に含まれることが意図される。
【0047】
利益、他の利点及び課題に対する解決手段が、特定的な実施形態に関して上述されている。しかしながら、利益、利点、課題に対する解決手段、及び、利益、利点若しくは解決手段が発生又は顕在化する可能性のある機能は、何れか又は全ての請求項の重要な、必須の、不可欠な特徴として解釈されるべきではない。さらに、開示された発明は、本明細書の教示の恩恵を受ける当業者には明らかであるが異なる同等の方法で修正され実施され得るので、開示された特定の実施形態は単なる例示である。以下の特許請求の範囲に記載されたもの以外の本明細書に記載された構成及び設計の詳細に限定されることを意図していない。したがって、開示された特定の実施形態は、変更又は修正されてもよく、かかる全ての変形は、開示された発明の範囲内であると考慮されることが明らかである。よって、本明細書で求められる保護は、以下の特許請求の範囲に記載されている。