(57)【特許請求の範囲】
【請求項１】
メモリへのアクセスを制御し、複数のメモリアクセス要求を処理するように構成されるメモリコントローラと、
前記メモリコントローラがアイドルサイクル中であるときを判断して、前記アイドルサイクル中に前記メモリの一部にキー変更動作を実行すること、及び、
複数のメモリアクセス要求が実行されることを可能とするべく、前記メモリコントローラがアイドルサイクル中でないときに前記キー変更動作を一時停止して、次のアイドルサイクル中に前記キー変更動作を再開すること
により、前記メモリ内のデータをスクランブルするために用いられていた第１のキーを置換させ、第２のキーを用いて前記データを再スクランブルするように構成されるキー変更ロジックと
を備え、
前記キー変更ロジックは、前記メモリコントローラから判断されたアイドルサイクルの量及びキー変更される前記メモリの総サイズにより判断されるキー置換のインターバルに少なくとも部分的に基づいて、前記キー変更動作を開始するようにさらに構成される、メモリシステム。
【請求項２】
境界アドレスレジスタを更に備え、
前記キー変更ロジックは、次の前記キー変更動作の位置を特定する境界アドレスを前記境界アドレスレジスタに格納するように構成される、請求項１に記載のメモリシステム。
【請求項３】
前記メモリコントローラは、前記メモリコントローラが前記アイドルサイクル中であることを示すキー変更通知を前記キー変更ロジックに送信するように構成される、請求項１又は２に記載のメモリシステム。
【請求項４】
メモリアクセス要求で特定される位置にある前記メモリ内の前記データをスクランブルするために、どのキーが用いられていたかを示す境界アドレスに少なくとも部分的に基づいて、前記メモリアクセス要求を処理するために用いられる前記第１のキー又は前記第２のキーを選択するように構成されるセレクタロジックを更に備える、請求項１から３のいずれか一項に記載のメモリシステム。
【請求項５】
前記キー変更ロジックは、複数のメモリアクセス要求間において前記キー変更動作を断続的に実行するように構成される、請求項１から４のいずれか一項に記載のメモリシステム。
【請求項６】
前記メモリコントローラは、
前記キー変更動作の位置を示す境界アドレスに基づいて、要求されたアドレスが、前記メモリの、前記第１のキーを用いてスクランブルされている第１の部分、又は、前記第２のキーによりスクランブルされている第２の部分にあるかどうかを判断すること、
前記判断に基づいて前記第１のキー又は前記第２のキーを選択すること、及び、
前記選択されたキーを用いて前記要求されたアドレスからのデータをデスクランブルし、前記デスクランブルされたデータを要求元に戻すこと
により、前記要求されたアドレスのための読み出しアクセス要求を実行するように構成される、請求項１から５のいずれか一項に記載のメモリシステム。
【請求項７】
前記メモリコントローラは、
前記キー変更動作の位置を示す境界アドレスに基づいて、要求されたアドレスが、前記メモリの、前記第１のキーを用いてスクランブルされている第１の部分、又は、前記第２のキーによりスクランブルされている第２の部分にあるかどうかを判断すること、
前記判断に基づいて、前記第１のキー又は前記第２のキーを選択すること、及び、
前記選択されたキーを用いて書き込みアクセス要求からの前記データをスクランブルし、前記メモリ内の前記要求されたアドレスに前記スクランブルされたデータを書き込むこと
により、前記要求されたアドレスで書き込まれるべきデータを示す前記書き込みアクセス要求を実行するように構成される、請求項１から６のいずれか一項に記載のメモリシステム。
【請求項８】
境界アドレスにおける前記データが前記キー変更ロジックにより前記メモリから読み出された後、前記第１のキーでのデスクランブルおよび前記第２のキーでの再スクランブルが行われる前に、前記メモリにアクセスするためのアクセス要求が受信されたときに、前記境界アドレスからの前記データを格納するためのスクランブルレジスタを更に備える、請求項１から７のいずれか一項に記載のメモリシステム。
【請求項９】
境界アドレスにおける前記データをキー変更するための複数の関数を実装する関数ロジックを更に備え、
前記複数の関数は、前記第１のキーを用いて前記データをデスクランブルするための第１の関数、及び、前記第２のキーを用いて前記データを再スクランブルするための第２の関数を含む、請求項１から８のいずれか一項に記載のメモリシステム。
【請求項１０】
前記第１のキー及び前記第２のキーを格納し、前記第１のキー及び前記第２のキーへのアクセスを制御するためのキー格納部を更に備える、請求項１から９のいずれか一項に記載のメモリシステム。
【請求項１１】
前記キー変更ロジックは、前記メモリへの予め定められた数のメモリアクセス要求が実行されることに応答して、前記キー変更動作を開始するようにさらに構成される、請求項１から１０のいずれか一項に記載のメモリシステム。
【請求項１２】
方法であって、
メモリ内のデータのための複数のキーを置換させるキー変更動作のために、前記メモリに境界アドレスを設定する段階と、
複数のメモリアクセス要求を受信することに応答して、メモリコントローラが、前記メモリへの前記複数のメモリアクセス要求を処理する段階と、
前記メモリコントローラがアイドルサイクル中であるときを判断する段階と
を備え、
前記アイドルサイクル中であることに応答して、前記方法は、
前記アイドルサイクル中に前記境界アドレスにおける前記メモリの一部に前記キー変更動作を実行する段階と、
前記境界アドレスをインクリメントして、前記キー変更動作を繰り返す段階と、
前記複数のメモリアクセス要求が実行されることを可能とするべく、前記メモリコントローラがアイドルサイクル中でないときに前記キー変更動作を一時停止し、次のアイドルサイクル中に前記キー変更動作を再開する段階と
を備え、
前記キー変更動作は、前記メモリコントローラから判断されたアイドルサイクルの量及びキー変更される前記メモリの総サイズにより判断されるキー置換のインターバルに少なくとも部分的に基づいて、開始される、方法。
【請求項１３】
前記キー変更動作を実行する段階は、前記データをスクランブルするために用いられていた第１のキーを用いて前記境界アドレスに格納されたデータをデスクランブルする段階と、第２のキーを用いて前記データを再スクランブルする段階と、前記再スクランブルされたデータを前記メモリ内の前記境界アドレスに格納する段階とを含む、請求項１２に記載の方法。
【請求項１４】
前記メモリコントローラがアイドルサイクル中であるときを判断する段階は、前記メモリコントローラが前記アイドルサイクル中であることを示すキー変更通知を受信する段階を含む、請求項１２又は１３に記載の方法。
【請求項１５】
前記境界アドレスに少なくとも部分的に基づいて、メモリアクセス要求を処理するために用いられるべき、第１のキー又は第２のキーを選択する段階を更に備える、請求項１２から１４のいずれか一項に記載の方法。
【請求項１６】
前記キー変更動作は、前記複数のメモリアクセス要求の処理の間に断続的に実行される、請求項１２から１５のいずれか一項に記載の方法。
【請求項１７】
要求されたアドレスのための読み出しアクセス要求であるメモリアクセス要求について、前記方法は、
前記境界アドレスに基づいて、前記メモリの第１の部分又は第２の部分に前記要求されたアドレスがあるかどうかを判断する段階であって、前記第１の部分は、第１のキーを用いてスクランブルされており、前記第２の部分は、第２のキーによりスクランブルされている、段階と、
前記判断に基づいて前記第１のキー又は前記第２のキーを選択する段階と、
前記選択されたキーを用いて、前記要求されたアドレスからのデータをデスクランブルし、前記デスクランブルされたデータを要求元に戻す段階と
を更に備える、請求項１２から１６のいずれか一項に記載の方法。
【請求項１８】
メモリ内のデータのための複数の暗号キーを置換させるキー変更動作のための境界アドレスを前記メモリに設定する段階であって、前記境界アドレスは、第１のキーを用いて暗号化される前記メモリの第１の部分と第２のキーを用いて暗号化される前記メモリの第２の部分との間の境界である、段階と、
メモリコントローラが前記メモリへのアクセス要求を処理していないときである前記メモリコントローラのアイドルサイクルを判断し、前記メモリコントローラのアイドルサイクルの量を判断する段階と、
前記メモリコントローラから判断された前記アイドルサイクルの量及び前記キー変更動作のための前記メモリの総サイズに基づいて、キー置換のインターバルを判断する段階と、
前記キー置換のインターバルに基づいて、前記キー変更動作を開始する段階と、
前記キー変更動作中に、前記メモリ内の要求されたアドレスのためのアクセス要求を受信することに応答して、
前記キー変更動作を一時停止し、
前記要求されたアドレスを前記境界アドレスと比較して、前記要求されたアドレスが前記メモリの前記第１の部分又は前記第２の部分にあるかどうかを判断し、
前記比較に基づいて、前記第１のキー又は前記第２のキーを選択し、
前記選択されたキーを用いて前記アクセス要求を処理し、前記メモリコントローラの次のアイドルサイクル中に、前記キー変更動作を再開する段階と
を備える、方法。
【請求項１９】
完了されるべき保留中のアクセス要求がないときである前記メモリコントローラのアイドルサイクルを判断する段階と、
判断される前記アイドルサイクルに応答して、前記キー変更動作を再開して、前記複数の暗号キーを置換させる段階と
を更に備える、請求項１８に記載の方法。
【請求項２０】
複数の前記アクセス要求の前記処理の間に、断続的に前記キー変更動作を実行する段階を
更に備える、請求項１８又は１９に記載の方法。
【請求項２１】
前記キー変更動作は、キー置換のインターバルに少なくとも部分的に基づいて開始され、前記キー変更動作は、前記メモリのアイドルサイクル中に、前記メモリ内の前記データのキー変更を実行する、請求項１８から２０のいずれか一項に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
本明細書で提供される背景技術の説明は、開示の文脈を一般的に与える目的のためのである。研究範囲に対する、現在名前が挙げられている発明者の研究は、この背景技術の章で説明され、同様に、さもなければ、出願時の従来技術として述べていないかもしれない説明の態様が、本開示に対する従来技術として明示又は黙示のいずれも問わずに認められる。
【０００２】
ハッカーは、コンピュータシステム又はネットワークの弱点を悪用して、メモリからデータを取得する。ハッカーが不正手段で得たデータを読み出すことができる可能性を減らすべく、データは、数学的なスクランブル関数に従って、スクランブル（つまり、暗号化）される。ハッカーは、その結果、スクランブルされたデータをアンスクランブル（つまり、復号化）するべく、データをスクランブルするのに用いられていたスクランブル関数を発見しなければならない。スクランブル関数を発見するべく、ハッカーは、システムオンチップ（ＳＯＣ）のようなコンピュータシステムのコンポーネントを攻撃し、メモリに入力値を書き込むための要求を作成する。入力値に対するメモリの出力値を解析することにより、ハッカーは、スクランブル関数の演算のリバースエンジニアリングを試みることができる。ハッカーが出力を解析するための時間が増えると、ハッカーがスクランブル関数を判断して、メモリからスクランブルされたデータをアンスクランブルするための関数を用いることができる可能性がより高くなる。
【０００３】
いくつかの暗号化技術では、スクランブル関数は、キーに基づいている。キーは、スクランブルされたデータを読み出す権限が付与されている個人に対してのみ知られている情報の断片（例えば、値、パラメータ）である。データのセキュリティを高めるべく、スクランブル関数を変更し、その結果として、データがスクランブルされ、アンスクランブルされる方法を変更するために、キーは、周期的に変更される。スクランブル関数がキーに依存しているので、ハッカーが、スクランブル関数の変更前に、スクランブル関数を発見するための時間がより少なくなるので、キーを周期的に変更することは、メモリのセキュリティを高める。一般的には、電源が落とされた後にコンピュータシステムの電源が投入にされたとき、キーは、コンピュータシステムの初期ブートシーケンス中に変更される。しかしながら、コンピュータシステムは、電源が落とされ、かつ、電源が再投入される前に数週間又は数ヶ月が経過する可能性があり、アンスクランブルされることに対してデータがより脆弱になる。したがって、キーを無効にし、無効にしたキーを新しいキーに置き換えることは、キー置換と称され、この脆弱性を低減する。しかしながら、一般的には、キー置換は、処理時間及びかなりのリソースを要し、それ故に、脆弱性が高まっているにも関わらず、稀にしか行われない。
【発明の概要】
【０００４】
概して、一態様において、本明細書は、メモリへのアクセスを制御し、複数のメモリアクセス要求を処理するように構成されるメモリコントローラを備えるメモリシステムを開示する。キー変更ロジックは、メモリコントローラがアイドルサイクル中であるときを判断し、アイドルサイクル中にメモリの一部でキー変更動作を実行すること、及び、複数のメモリアクセス要求が実行されることを可能とするべく、メモリコントローラがアイドルサイクル中でないときにキー変更動作を一時停止して、次のアイドルサイクル中に、キー変更動作を再開することにより、メモリ内のデータをスクランブルするために用いられていた第１のキーを置換させ、第２のキーを用いてデータを再スクランブルするように構成される。
【０００５】
他の態様において、メモリシステムは、境界アドレスレジスタを更に備え、キー変更ロジックは、次のキー変更動作の位置を特定する境界アドレスを境界アドレスレジスタに格納するように構成される。
【０００６】
他の態様において、メモリコントローラは、メモリコントローラがアイドルサイクル中であることを示すキー変更通知をキー変更ロジックに送信するように構成される。
【０００７】
他の態様において、メモリシステムは、メモリアクセス要求で特定される位置で、どのキーがメモリをスクランブルするために用いられていたかを示す境界アドレスに少なくとも部分的に基づいて、メモリアクセス要求を処理するために用いられる第１のキー又は第２のキーを選択するように構成されるセレクタロジックを更に備える。
【０００８】
メモリシステムの他の態様において、キー変更ロジックは、複数のメモリアクセス要求間でキー変更動作を断続的に実行するように構成される。
【０００９】
他の態様において、メモリコントローラは、キー変更動作の位置を示す境界アドレスに基づいて、メモリの、第１のキーを用いてスクランブルされた第１の部分又は第２のキーによりスクランブルされた第２の部分内に要求されたアドレスがあるかどうかを判断すること、当該判断に基づいて、第１のキー又は第２のキーを選択すること、及び、当該選択されたキーを用いて、要求されたアドレスからのデータをデスクランブルし、デスクランブルされたデータを戻すことにより、要求されたアドレスについて読み出しアクセス要求を実行するように構成される。
【００１０】
メモリシステムの他の態様において、メモリコントローラは、キー変更動作の位置を示す境界アドレスに基づいて、メモリの、第１のキーを用いてスクランブルされた第１の部分又は第２のキーによりスクランブルされた第２の部分内に、要求されたアドレスがあるかどうかを判断すること、当該判断に基づいて、第１のキー又は第２のキーを選択すること、及び、当該選択されたキーを用いて、書き込みアクセス要求からのデータをスクランブルし、メモリ内の要求されたアドレスに、スクランブルされたデータを書き込むことにより、要求されたアドレスに書き込まれるデータを示す書き込みアクセス要求を実行するように構成される。
【００１１】
他の態様において、メモリシステムは、境界アドレスのデータがキー変更ロジックによりキー変更される前に、メモリにアクセスするためのアクセス要求が受信されるときに、境界アドレスからのデータを格納するためのスクランブルレジスタを更に備える。
【００１２】
他の態様において、メモリシステムは、境界アドレスでデータをキー変更するための複数の関数を生成する関数ロジックを更に備え、複数の関数は、第１のキーを用いてデータをデスクランブルするための第１の関数及び第２のキーを用いてデータを再スクランブルするための第２の関数を含む。
【００１３】
他の態様において、メモリシステムは、第１のキー及び第２のキーを格納し、第１のキー及び第２のキーへのアクセスを制御するためのキー格納部を更に備える。
【００１４】
概して、他の態様において、本明細書は、メモリ内のデータのためのキーを置換させるキー変更動作のための境界アドレスをメモリに設定する段階を備える方法を開示する。メモリアクセス要求を受信することに応答して、メモリコントローラが、メモリに対する複数のメモリアクセス要求を処理する。方法は、メモリコントローラがアイドルサイクル中であるときを判断し、アイドルサイクルであることに応答して、方法は、アイドルサイクル中に境界アドレスでメモリの一部にキー変更動作を実行する段階と、境界アドレスをインクリメントし、キー変更動作を繰り返す段階と、メモリアクセス要求が実行されることを可能とするべく、メモリコントローラがアイドルサイクル中でないときに、キー変更動作を一時停止し、次のアイドルサイクル中にキー変更動作を再開する段階とを備える。
【００１５】
方法の他の態様において、キー変更動作を実行する段階は、データをスクランブルするために用いられていた第１のキーを用いて境界アドレスで格納されたデータをデスクランブルする段階と、第２のキーを用いてデータを再スクランブルする段階と、境界アドレスで再スクランブルされたデータをメモリに格納する段階とを含む。
【００１６】
他の態様において、メモリコントローラがアイドルサイクル中であるときを判断することは、メモリコントローラがアイドルサイクル中であることを示すキー変更通知を受信することを含む。
【００１７】
他の態様において、方法は、境界アドレスに少なくとも部分的に基づいて、メモリアクセス要求を処理するために用いられる第１のキー又は第２のキーを選択する段階を更に備える。
【００１８】
方法の他の態様において、キー変更動作は、複数のメモリアクセス要求の処理の間に断続的に実行される。
【００１９】
方法の他の態様において、要求されたアドレスのための読み出しアクセス要求であるメモリアクセス要求について、方法は、境界アドレスに基づいて、メモリの、第１の部分又は第２の部分内に要求されたアドレスがあるかどうかを判断する段階であって、前記第１の部分は、第１のキーを用いてスクランブルされており、前記第２の部分は、第２のキーによりスクランブルされている、段階と、当該判断に基づいて第１のキー又は第２のキーを選択する段階と、選択されたキーを用いて要求されたアドレスからのデータをデスクランブルし、デスクランブルされたデータを戻す段階とを更に備える。
【００２０】
概して、他の態様において、本明細書は、メモリ内のデータのための暗号キーを置換させるキー変更動作のための境界アドレスをメモリに設定する段階を備える方法を開示し、境界アドレスは、第１のキーを用いて暗号化されるメモリの第１の部分と第２のキーを用いて暗号化されるメモリの第２の部分との間の境界である。メモリ内の要求されたアドレスのためのアクセス要求を受信することに応答して、方法は、キー変更動作を一時停止する段階と、要求されたアドレスを境界アドレスと比較して、要求されたアドレスが、メモリの第１の部分又は第２の部分内にあるかどうかを判断する段階と、当該比較に基づいて第１のキー又は第２のキーを選択する段階と、選択されたキーを用いてアクセス要求を処理する段階とを備える。
【００２１】
他の態様において、方法は、完了するのを保留するアクセス要求がないときにアイドルサイクルを判断する段階と、アイドルサイクルに応答して、キー変更動作を再開して、暗号キーを置換させる段階とを更に備える。
【００２２】
他の態様において、方法は、複数のアクセス要求の処理の間に、断続的にキー変更動作を実行する段階を更に備える。
【００２３】
他の態様において、キー変更動作は、キー置換のインターバルに少なくとも部分的に基づいて開始され、キー変更動作は、メモリのアイドルサイクル中にメモリ内のデータのキー変更を実行する。
【図面の簡単な説明】
【００２４】
明細書に組み込まれ、かつ、その一部を構成する添付の図面は、本開示の様々なシステム、方法、及びその他の実施形態を示す。図に示される要素の境界（例えば、ボックス、ボックスのグループ、又は、他の形状）は、境界の一例を表す。いくつかの例において、一つの要素は、複数の要素として設計される可能性があり、又は、複数の要素は、一つの要素として設計される可能性がある。いくつかの例において、他の要素の内部コンポーネントとして示される要素は、外部のコンポーネントとして実装されてよく、その逆もまた同様である。
【００２５】
【図１】メモリコントローラのためのキー置換に関連するシステムの一実施形態を示す。
【００２６】
【図２】メモリコントローラ及びキー生成器のためのキー置換に関連するシステムの一実施形態を示す。
【００２７】
【図３】メモリコントローラ及びスクランブルレジスタのためのキー置換に関連するシステムの一実施形態を示す。
【００２８】
【図４】メモリコントローラ及び関数ロジックのためのキー置換に関連するシステムの一実施形態を示す。
【００２９】
【図５】メモリコントローラ及びキー格納部のためのキー置換に関連するシステムの一実施形態を示す。
【００３０】
【図６】データをキー変更するためのキー置換に関連する方法の一実施形態を示す。
【００３１】
【図７】データのキー変更が完了していない間に受信されるメモリ要求を処理することに関連する方法の一実施形態を示す。
【発明を実施するための形態】
【００３２】
データの暗号化において、キー置換は、データのセットをスクランブルするのに用いられていた第１の暗号キーを無効にし、第１のキーを異なる第２のキーと置き換える処理である。キー置換は、第２のキーに従ってデータをキー変更することを更に含む。データをキー変更するべく、データは、第１のキーを用いてデスクランブルされ、第２のキーに従って再スクランブルされる。例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）のコンテンツをキー変更するべく、ＤＲＡＭのコンテンツ全体が第１のキーでデスクランブルされ、第２のキーに従って再スクランブルされる。キーを置換させ、その結果データをキー変更する処理は、時間が掛かり、かなりの数のリソースを必要とし、メモリの通常動作を中断及び／又は遅延させる。
【００３３】
本明細書で説明されるのは、メモリコントローラのためのキー置換に関連するシステム、方法及び他の実施形態の例である。一実施形態において、データは、メモリの通常動作でデータをキー変更する影響を減らすべく、メモリコントローラのアイドルサイクル中にキー変更される。例えば、メモリコントローラがスクランブルされたデータを格納するメモリを制御することを考えてみる。アイドルサイクル中、メモリコントローラは、メモリへのアクセス要求を処理していない。逆に、アクティブサイクル中、メモリコントローラは、メモリからデータを読み出し、及び／又は、メモリへデータを書き込むべく、アクセス要求を処理している。アクティブサイクル中にメモリへのアクセス要求を中断させることを避けるべく、データは、メモリコントローラのアイドルサイクル中にデスクランブル及び再スクランブルされる。したがって、キー変更動作は、通常のメモリアクセス並びにキー変更を可能にするべく、複数のメモリ動作の間に実行される。一実施形態において、キー変更処理は、アクセス要求を遅延させることなく、又は、アクセス要求を中断させることなく、メモリコントローラのバックグラウンド処理として実行されてよい。
【００３４】
開示されたシステム及び方法は、より頻繁にデータを再スクランブルする能力を提供し、システムリセット又はコンピュータの電源を落とすことに依存していない。メモリの継続動作を可能とする再スクランブル及びキー変更は、メモリの一部に実行されてよい。
【００３５】
図１は、メモリ１２０及びメモリコントローラ１３０に関連する暗号キーを置換させるためのキー変更ロジック１００を含むメモリシステムの一実施形態を示す。キー変更ロジック１００は、コンピューティングシステム又はコンピュータ可読媒体に実装されてよく、メモリコントローラ１３０の一部として、又は、メモリコントローラ１３０とともに動作する別個のコンポーネントとして実装されてよい。説明の目的のため、デバイス１１０ａ、１１０ｂ、１１０ｃ−１１０ｎは、メモリコントローラ１３０を介してメモリ１２０にアクセスするように構成される。メモリコントローラ１３０は、メモリ１２０へのアクセスを制御し、デバイス１１０ａ−１１０ｎから受信されるメモリアクセス要求（例えば、読み出し要求又は書き込み要求）を処理するように構成される。
【００３６】
例えば、書き込みアクセス要求は、データがメモリ１２０に書き込まれたときに完了し、読み出しアクセス要求は、要求されたデータがメモリ１２０から読み出され、要求したデバイスに戻されたときに完了する。一実施形態において、メモリコントローラ１３０は、開示される機能を実行するように構成される集積回路を有するハードウェア構成要素として実装され、メモリ要求を実行するように構成されるプロセッサであってよく、及び／又は、開示される機能を実行するためのファームウェア又は実行可能な複数の命令を含んでよい。
【００３７】
従って、メモリコントローラ１３０は、デバイス１１０ａ−１１０ｎ及びメモリ１２０の間のデータフローを管理する。デバイス１１０ａ−１１０ｎの例は、中央演算処理装置ＣＰＵ，ハードウェアデバイス、システムオンチップ（ＳＯＣ）デバイス、又は、コンピューティングシステムの一部である他のコンポーネントであってよく、メモリコントローラ１３０はまた、（例えば、単一のコンピューティングデバイス内）の一部でもある。メモリ１２０は、不揮発性メモリ（例えば、フラッシュメモリ、リードオンリメモリ、プログラマブルリードオンリメモリ）及び揮発性メモリ（例えば、ランダムアクセスメモリ、ダイナミックランダムアクセスメモリ、スタティックランダムアクセスメモリ）を含むが、これらに限定されない、コンピューティングデバイス内に又はコンピューティングデバイスのためのデータを格納するために用いられるデバイスである。メモリコントローラ１３０は、ＳＯＣのようなチップにメモリ１２０とともに統合されても、メモリ１２０から分離したチップとして構成されてもよく、特定の機能を実行するためのファームウェアを含んでよい。
【００３８】
メモリコントローラ１３０がデバイス１１０ａ−１１０ｎ及びメモリ１２０の間のデータフローを管理していないとき、メモリコントローラ１３０はアイドルである。アイドルのとき、メモリコントローラ１３０は、メモリ１２０に格納されたデータをキー変更することが可能である。一実施形態において、キー変更ロジック１００は、メモリコントローラ１３０のアイドル期間に特定し、アイドル期間中にメモリ１２０内のデータのキー変更処理を制御するように構成される。
【００３９】
例えば、キー変更ロジック１００は、１又は複数の動作で、メモリコントローラ１３０がアイドルであることを判断するように構成される。一実施形態において、キー変更ロジック１００は、メモリコントローラ１３０のアクティビティをモニターして、メモリコントローラがメモリ要求を処理しておらず、したがってアイドルであるときを判断する。モニタリングは、メモリ要求を保持するキューをチェックすることを含み、キューが空である場合、キー変更ロジック１００は、コントローラ１３０がアイドルであると判断する。他の実施形態において、メモリコントローラ１３０は、キー変更ロジック１００により受信されるキー変更通知を送信するように構成される。キー変更通知は、メモリコントローラ１３０がアイドルであり、かつ、データをキー変更することが可能であることを示す。本実施形態において、キー変更通知を受信すると、キー変更ロジック１００は、キー変更処理を開始（又は未完了のキー変更処理を再開）する。
【００４０】
キー変更処理は、２つの異なる状態であってよい。一方の状態は、メモリ内の全てのデータが（古いキーを用いて）以前にキー変更されており、新しいキー変更処理を（新しいキーを用いて）開始している状態である。他方の状態は、キー変更処理が開始されたが、まだ完了していない状態である。したがって、メモリ１２０内のデータの一部は、新しいキーを用いてキー変更されており、データの一部は、キー変更されていない（当該データが、この時点で、古いキーを用いてキー処理（ｋｅｙｅｄ）されていることを意味する）。一実施形態において、キー変更処理がコントローラ１３０のアイドル期間中に実行されているので、キー変更処理は、メモリ１２０内の全てのデータが完全にキー変更される前に、概して、複数回開始及び停止するだろう。
【００４１】
データをキー変更するべく、メモリコントローラ１３０は、メモリ１２０のどの場所でキー変更を開始し、データをキー変更するべく、どのキーを使用するかについての情報を利用する。初めに、キー変更は、メモリ１２０内のアドレス０のような開始アドレスで開始し、その位置からデータのキー変更を始めて、終了アドレスまで順次継続する。当然ながら、他の開始位置が用いられてよく及び／又はシーケンスが連続的でなくてよい。キー変更処理を開始した後、キー変更ロジック１００は、最後にキー変更されたメモリアドレスにより、キー変更処理の進捗を追跡し、キー変更される次のアドレスをレジスタに記録する。
【００４２】
例えば、キー変更ロジック１００は、キー変更されるメモリ１２０内の次のアドレスを示す境界アドレスＢを境界レジスタ１４０内に設定及び格納する。メモリ１２０内のデータがキー変更される場合、境界アドレスＢは、キー変更される次の位置を示すように動かされる。メモリコントローラ１３０が、もはやアイドリング状態でないことに起因して、キー変更処理が一時停止／停止されるとき、キー変更ロジック１００は、コントローラ１３０の次のアイドリング状態中にキー変更処理を継続するべく、再開始のポイントとして境界アドレスＢを利用する。
【００４３】
境界アドレスＢは、まだキー変更されていないメモリ１２０の残りの部分から、キー変更されたメモリ１２０の一部を区別するためにも用いられる。境界Ｂの一方の側のアドレスは、第１のキーを用い、境界Ｂの他方の側のアドレスは、第２のキーを用いる。例えば、説明の目的のために図１に示されるように、メモリ部分１２１内のデータは、新しいキーを用いてキー変更されており、メモリ部分１２２内のデータは、古いキーを用いてキー処理されており、したがって、まだキー変更される必要があることが考えられる。メモリの異なる部分を区別することは、キー変更処理がメモリ全体を完全にキー変更する前に、メモリコントローラ１３０がメモリ要求処理の継続を可能とする。いくつかのデータが新しいキーを用いてスクランブルされることもあれば（部分１２１）、その他のデータが古いキーを用いてスクランブルされることもある（部分１２２）ので、メモリ動作は、未完了のキー変更処理により影響を受ける。
【００４４】
したがって、メモリ要求が処理されるとき、メモリコントローラ１３０は、メモリ要求からのアドレスを、境界レジスタからの境界アドレスＢと比較する。比較は、メモリ要求がメモリ部分１２１又は１２２内にあるアドレスを要求しているかどうかを示す。どの部分にアドレスがあるかに応じて、メモリコントローラ１３０は、そのメモリ部分に関連付けられる適切なキー（例えば、新しいキー又は古いキー）を選択及び利用する。メモリ要求は、それから、適切なキーを用いて処理され、メモリ１２０の関連する部分からのデータをスクランブル／デスクランブルする。
【００４５】
例えば、メモリ１２０のデータのどれもが、キー変更されていなかったと仮定した場合、境界アドレスＢは、メモリ１２０の第１のアドレス（例えば、メモリアドレス０）としてキー変更ロジック１００により設定されるだろう。メモリコントローラ１３０は、キー変更がメモリ１２０の第１のアドレスに格納されたデータから始めるべきであることを示す境界アドレスＢを境界レジスタ１４０に格納する。メモリコントローラ１３０のアイドルサイクル中、キー変更ロジック１００は、境界レジスタ１４０からアドレス境界Ｂを取得し、境界アドレスをメモリコントローラ１３０に提供する。メモリコントローラ１３０は、これにより、アドレス境界Ｂでデータを取得することができ、又は、メモリコントローラ１３０がキー変更のためのキーを受信するまでアドレス境界Ｂでデータを取得するべく待機することができる。
【００４６】
他の例において、メモリ１２０の第１の部分１２１がキー変更されており、第２の部分１２２がキー変更されてない場合を考える。境界アドレスＢは、第２の部分１２２内に第１のアドレスとして設定され、第２の部分１２２内の第１のアドレスがメモリコントローラ１３０の次のアイドルサイクル中にキー変更されるべきであることを示す。メモリコントローラ１３０がアイドルの間、メモリコントローラ１３０は、メモリ１２０内の境界アドレスＢに格納されたデータから始まるメモリ１２０内に格納されたデータをインクリメントしつつキー変更するであろう。
【００４７】
一実施形態において、セレクタロジック１５０は、メモリ１２０と共に用いられる複数のキーを格納し、データをキー変更するべく、どのキーを用いるかを選択し、選択されたキーをメモリコントローラ１３０に提供するように構成される。一実施形態において、セレクタロジック１５０は、キー変更ロジック１００の機能として実装される。メモリコントローラ１３０は、セレクタロジック１５０により選択されたキーと、境界アドレスＢとを用いて、データをキー変更する。
【００４８】
例えば、上述のように、境界アドレスＢでデータをキー変更するべく、セレクタロジック１５０は、第１のキー１５１（例えば、古いキー）を提供して、メモリ１２０内のアドレスでデータをデスクランブルする。第１のキー１５１は、データを最初にスクランブルするのに用いられていたキーである。メモリコントローラ１３０は、第２のキー１５２（例えば、新しいキー）を受信して、境界アドレスＢでデータを再スクランブルする。一実施形態において、メモリコントローラ１３０は、アドレスからのデータがデスクランブルされたとメモリコントローラ１３０が判断したときに、データを再スクランブルするべく、第２のキー１５２をセレクタロジック１５０に要求してよい。従って、境界アドレスのデータは、キー変更され、境界アドレスＢは、メモリ内の次のアドレスにインクリメントされる。
【００４９】
メモリコントローラ１３０は、それから、新たな境界アドレスＢを境界レジスタ１４０に格納する。キー変更処理は、新たな境界アドレスで格納されたデータについて繰り返され、処理は、全てのデータがキー変更されるまでメモリ１２０内のデータ全体を通じて反復的に継続する。しかし、前述のように、キー変更処理は、メモリコントローラ１３０のアイドル期間中に実行される。キー変更処理は、メモリコントローラ１３０がメモリ要求を受信し、それによって、もはやアイドルでないときに一時停止／停止される。従って、キー変更処理は、完了前に複数回開始及び一時停止し得る。
【００５０】
この技術は、メモリ要求を遅延又は中断させることなく、一時停止されたキー変更処理中にメモリ要求が処理されることを可能とする。当該技術はまた、メモリシステムが動作可能な状態にある間に、メモリ１２０内のデータがキー変更されることを可能にする。したがって、システム（キー変更ロジック１００及びメモリコントローラ１３０）は、システムの状態又は条件に基づいて、メモリ動作の処理と、キー変更動作の実行との間を循環し、又は、これに代えて、これらの間を交互に繰り返すように構成される。
【００５１】
したがって、データのキー変更を含むキー置換は、追加的なリソースを必要としない。代わりに、キー置換は、バックグラウンド処理として行われることができ、それによって、メモリコントローラ１３０及びメモリ１２０の通常動作に対する遅延及び中断を低減する。また、コンピュータシステムの電源が落とされ、かつ、電源が再投入されて、キー置換に影響を与えるときの状況とは対照的に、ここでは、メモリ１２０内に格納されたデータは、まだ、キー変更処理中にアクセス可能である。さらに、メモリ１２０のコンテンツは、説明された実施形態において一斉にキー変更される必要はない。代わりに、アクセス要求は、アクセスされるメモリ１２０の一部に関連付けられたキーを選択することにより処理され得る。
【００５２】
図２は、メモリコントローラ１３０ためのキー置換に関連するキー変更ロジック１００の別の実施形態を示し、キー変更ロジック１００は、新しいキーを生成するためのキー生成ロジック２１０を含む。キー変更ロジック１００は、図１を参照して説明したのと同様の動作だが、追加の機能を用いて動作する。説明の簡略化のために、２つのキー（第１のキー１５１及び第２のキー１５２）が図１では説明されていた。しかしながら、より多くのキーが用いられてよい。図２の実施形態には、３つのキー、つまり、第１のキー１５１、第２のキー１５２及び第３のキー１５３が示されており、これらは、３つの異なる手法でメモリ１２０内のデータをスクランブルするために用いられてよい。従って、キー変更ロジック１００は、メモリ１２０のどの部分がどのキーに対応するかを特定するべく、複数の境界アドレス（例えば、Ｂ１及びＢ２）を境界レジスタ１４０に格納するように構成される。
【００５３】
一実施形態において、キー生成ロジック２１０は、より古いキーが無効にされ得るように新しいキーを生成するように構成される。例えば、ある時点で、メモリ１２０のキー変更は、第１のキー１５１に従ってキー処理されているメモリ１２０に格納されたデータが、もはや存在しないように進行していることになる。第１のキー１５１を再利用するよりもむしろ、キー変更ロジック１００は、第１のキー１５１を無効にして（例えば、廃棄して）、第１のキー１５１を置き換える新しいキーを生成するキー生成ロジック２１０を用いてよい。キー生成ロジック２１０は、キーを生成する乱数発生器又はアルゴリズム生成器を含んでよい。キーは、予め定められたタイムスケジュール又は所望される他の条件に基づいて、無効にされ、及び、置き換えられてよい。
【００５４】
上述のように、キー変更ロジック１００は、システム状態又は条件に基づいてキー変更処理を制御する。例えば、キー変更ロジック１００は、メモリコントローラ１３０のアイドルサイクルを利用して、データをキー変更してよく、タイムスケジュールを利用してキー変更を開始してもよく、又は、いったんメモリ１２０内の予め定められた割合のデータがキー変更されると、自動的にデータをキー変更してもよい。他の実施形態において、キー変更ロジック１００は、予め定められた時間の量が前回のキー変更処理から経過したときに、キーを置換させてよい。
【００５５】
例えば、キー変更ロジック１００は、キー置換のインターバルに基づいて、キーを置換させるように構成されてよく、メモリの異なる部分に異なるキーを用いてよい。例えば、間隔が１５秒の場合、データは、最初の１５秒間隔において、第１のキー１５１に従ってキー変更され、データの次の部分は、２番目の１５秒間隔において、第２のキーに従ってキー変更され、後続の部分内のデータが３番目の１５秒間隔において第３のキー１５３に従ってキー変更される。一実施形態において、キー置換のインターバルは、メモリコントローラ１３０から観測されたアイドルサイクルの量及びキー変更されるメモリ１２０の総サイズにより判断され得る。セキュリティレベルを向上させるべく、キー置換のインターバルが短縮されてよい。
【００５６】
１５秒は、メモリ１２０のコンテンツ全体をキー変更するのに十分な時間ではないことが想定される。特定のキーを用いてキー変更されたメモリ１２０の一部の境界を定めるべく、キー変更ロジック１００は、境界レジスタ１４０内に複数の境界アドレスを設定することにより各キーについてキー変更の進捗を追跡する。例えば、メモリ１２０の第１の部分２２１は、境界アドレスＢ１に先行するように（例えば、アドレス０からＢ１まで）規定される。上記の例において、第１の部分２２１は、第１のキー１５１に従ってキー処理される。同様に、第２の部分２２２は、アドレス境界Ｂ２に先行するように（例えば、アドレスB１＋１からＢ２まで）規定され、第２のキー１５２に従ってキー処理される。第３の部分２２３は、境界アドレスＢ２の後に続くように（例えば、アドレスＢ２＋１から最後のアドレスまで）規定され、第３のキー１５３に従ってキー処理される。したがって、３つ又はそれより多くのキーが利用されるとき、複数の境界アドレスが、メモリ１２０の複数の境界を規定するべく用いられ得る。
【００５７】
他の実施形態において、キー変更ロジック１００は、メモリ１２０への予め定められた数のメモリアクセス要求（例えば、閾値を設定）が実行されることに応答してキーを置換させるように構成されてよい。例えば、キー変更ロジック１００は、いったんメモリコントローラ１３０が１００個のメモリ要求を受信すると、キーを置換させてよい。キー置換はまた、コンピュータシステムに関連する複数のコンポーネント及びそれらがどのように利用されるかに基づいて開始されてもよい。一実施形態において、キー変更ロジック１００は、メモリコントローラ１３０について経過するアイドルサイクルの数及び／又はメモリ１２０のサイズに基づいてキーを置換させる。代替的に、キー変更ロジック１００は、利用可能なキーの数に一部基づいてキーを置換させてよい。例えば、利用可能なキーが多くなればなるほど、キー変更ロジック１００は、より頻繁に、キーを置換させ、メモリ１２０を再スクランブルしてよい。
【００５８】
他の実施形態において、キー変更ロジック１００は、キー変更処理が完了したことに応答して利用可能なキーを連続的に置換させてよい。例えば、メモリ１２０のデータの全てが第１のキー１５１に従ってキー変更されたとき、新しいキー変更処理が開始され、それから、データは、第２のキー１５２に従ってキー変更される。いったんデータの全てが第２のキー１５２に従ってキー変更されると、データは、第３のキー１５３に従ってキー変更され、それからデータは、再び第１のキー１５１を用いてキー変更される。したがって、３つの利用可能なキーがある場合、処理は、３つのキーを通じて循環させ、繰り返す。したがって、利用可能なキーは、繰り返し利用されてよい。
【００５９】
図３は、キー変更ロジック１００を含み、及び、スクランブルレジスタ３６０も含む、図１と同様のメモリシステムの別の実施形態を示す。キー変更ロジック１００及びメモリコントローラ１３０は、図１に関して上述したようなものと同様の動作で動作する。スクランブルレジスタ３６０は、キー変更処理中にデータを保持し処理するべく用いられる。例えば、スクランブルレジスタ３６０は、メモリコントローラ１３０により用いられ、メモリ１２０から読み出しされたが、メモリ１２０に適用される新しいキーに従ってまだスクランブルされていないデータを格納する。キー変更処理が完了の前に中断又は一時停止されるときに、データは、スクランブルレジスタ３６０に保持されてよい。
【００６０】
この状況は、メモリコントローラ１３０のアイドルサイクルが、現在キー変更されているメモリ１２０内のアドレスで格納されるデータをデスクランブル及び再スクランブルするのに十分な長さでないときに発生し得る。前述のように、キー変更処理中のある時点で、メモリコントローラ１３０は、メモリ要求を受信し、したがって、アイドルサイクルからアクティブサイクルに変更してよい。このイベントは、データがデスクランブル及び／又は再スクランブルされる前に、キー変更動作を一時停止させる。従って、メモリ１２０から読み出され、キー変更されるのを待機するデータは、スクランブルレジスタ３６０に格納される。キー変更の処理が中断された場合、スクランブルレジスタ３６０に格納されたデータは、いったんキー変更処理が再開されると、後続のアイドルサイクルにおいてキー変更され得る。いったんデータがキー変更されると、メモリコントローラ１３０は、データが読み出されたアドレスでメモリ１２０内の再スクランブルされたデータを復元する。代替的に、メモリコントローラ１３０は、メモリアクセス要求を受信するメモリコントローラ１３０に応答して、境界アドレスＢからのデータをスクランブルレジスタ３６０に格納してよい。
【００６１】
図４は、スクランブル／デスクランブル関数を実装する関数ロジック４００を含むメモリコントローラ１３０の別の実施形態を示す。メモリコントローラ１３０は、図１を参照して説明したのと同様の動作で動作する。前述のように、キー変更ロジック１００は、キー変更を開始する境界アドレスＢをメモリコントローラ１３０に提供し、セレクタロジック１５０は、境界アドレスＢでデータをキー変更するのに必要とされるキーをメモリコントローラ１３０に提供する。
【００６２】
一実施形態において、メモリコントローラ１３０の関数ロジック４００は、キー変更ロジック１００によりメモリコントローラ１３０に提供される境界アドレスＢ及びキーを用いて、データをスクランブル及び／又はアンスクランブルできるスクランブル関数を生成するように構成される。メモリ１２０のデータが第２のキー１５２に従ってキー変更されているが、第１のキー１５１を用いて前にスクランブルされた例を考えてみる。メモリ１２０のデータは、このように、第１のキー１５１に従ってデスクランブルされ、その後、第２のキー１５２に従って再スクランブルされる。
【００６３】
一実施形態において、関数Ａ４１０は、キーを境界アドレスと組み合わせるように構成され、その組み合わせを用いて、関数Ｂ４２０を生成する。関数Ｂ４２０は、第２のキー１５２に従って境界アドレスＢでデータをスクランブルする。関数Ａ４１０はまた、関数Ｃ４３０を生成するために用いられる。一実施形態において、関数Ｃ４３０は、関数Ｂ４２０の逆関数である。関数Ｃ４３０は、関数Ａ４１０に提供されるキーに基づいて境界アドレスＢでデータをデスクランブルするために用いられる。当然ながら、他の種類のスクランブル／デスクランブル関数が実装されてよい。
【００６４】
図５は、キー変更ロジック１００、メモリコントローラ１３０及びキー格納部５１０を含むキー変更システムの一実施形態を示す。キー変更ロジック１００は、図１及び／又は他の図に関して上述したのと同様の動作で動作する。しかしながら、図１において説明した実施形態とは異なり、スクランブルするキー（例えば、第１のキー１５１及び第２のキー１５２）は、セレクタロジック１５０と共に格納されない。代わりに、キー格納部５１０は、キーを格納し、キーへのアクセスを制御する。一実施形態において、キー格納部５１０は、要求されたときにキーを格納及びロードする役割を担うセキュアプロセッサ又はメモリであってよい。
【００６５】
上述のように、セレクタロジック１５０は、境界アドレスＢでデータをデスクランブル及び／又は再スクランブルするために用いられるのに適切なキーを選択する。キーがキー格納部５１０に格納された状態で、セレクタロジック１５０は、メモリコントローラ１３０に代わってキー格納部５１０から選択されたキーを要求するように構成される。要求が認められた場合、キー格納部５１０は、メモリコントローラ１３０にキーをロードする。メモリコントローラ１３０が、キー格納部５１０からキー（例えば、第１のキー１５１）を受信したとき、メモリコントローラ１３０は、境界アドレスＢから読み出されたデータをデスクランブルし、キー変更処理を継続する。同様に、他の利用可能なキーが要求され、キー格納部５１０からメモリコントローラにロードされてよい。この態様において、キー格納部５１０は、セキュリティの追加層を備える。
【００６６】
図６は、前述のように、キー置換及びデータのキー変更に関連する方法６００の一実施形態を示す。方法６００は、メモリ動作が実行されることを可能にするべく、キー変更処理が中断され及び一時停止されるようにメモリ動作のアイドルサイクル中にデータのキー変更を実行するコンピュータ実装された処理である。キー変更処理は、その後、次のアイドルサイクル中に再開される。言い換えれば、通常のメモリアクセスは、コンピュータで実行され、キー変更動作は、アイドルサイクル中に複数のメモリ動作の間に埋め込まれ又は挿入される。したがって、キー変更処理は、システムリセット又は電源投入中に実行されることに限定されず、キー変更はメモリ全体について実行され、メモリ動作は実行されない。
【００６７】
最初に、６１０で、キー変更が開始される境界アドレスが設定される。例えば、キー変更は、最も低いメモリアドレス（例えば、０）で開始し、最も高いメモリアドレスまで進む。キー変更が始まり、その後に一時停止された後、境界アドレスは、キー変更が再開される位置を示す。
【００６８】
６２０で、方法は、メモリコントローラがアイドルかどうかを判断する。前述のように、保留するメモリアクセス要求が存在しないとき、メモリコントローラはアイドルである。一実施形態において、メモリコントローラからアイドルサイクルを示す通知が受信されてよく、又は、メモリ要求キューが、キューが空であるかどうかを確かめられてよい。コントローラがアイドルである場合、次に、方法は、ブロック６３０へ移り、キー変更処理が開始又は再開され、境界アドレスでメモリからのデータが読み出される。
【００６９】
６４０で、データをデスクランブルするために利用可能なキーのセットから適切なキー（第１のキー）が選択される。第１のキーは、データをスクランブルするために元々用いられていたキーであり、ここで、データをその元の形式にデスクランブルするために用いられる。６５０で、新しいスクランブルキー（第２のキー）が選択され、データは、第２のキーを用いて再スクランブルされる。概して、スクランブル及びデスクランブルは、データを暗号化又は復号化するためのキーを組み合わせた１又は複数の関数を用いる。再スクランブルされたデータは、その後メモリ内のそのアドレスに戻って格納される。
【００７０】
６６０で、境界アドレスは、次のメモリアドレスにインクリメントされる。キー変更処理は、メモリ全体が再スクランブルされたか否かを判断する。これは、現在の境界アドレスを最後のメモリアドレスと比較することにより判断される。メモリ全体が再スクランブルされた場合、その後、古いキー（第１のキー）は、もはや必要ではなく、廃棄される。新しいキー（第２のキー）は、新たなキーにより置き換えられるまで、メモリの新しいマスターキーとして設定される。キー変更処理は終了し、メモリを再びキー変更するべく、次のキー変更間隔又は条件が発生するまで待機する。
【００７１】
６６０で、キー変更処理が未完了である場合、次に、方法は、６２０に戻り、メモリコントローラがまだアイドルかどうかを繰り返す。コントローラがアイドルでない場合、次に、方法は、６７０へ移り、キー変更処理は、一時停止され、６８０で、１又は複数のメモリアクセス動作が実行される。処理は、６２０に戻り、繰り返す。
【００７２】
一実施形態において、メモリアクセス動作は、アクセス要求を処理するべく、キー変更が中断され／一時停止されるように、キー変更動作よりも優先される。他の実施形態において、特定数のアクセス要求を処理し、特定数のキー変更動作を処理することを可能にするべく、閾値が設定されてよい。いずれの場合においても、メモリは、その全体において一斉にキー変更されないので、メモリは、異なるキーでスクランブルされる、データの２つの領域を有するだろう。領域は、境界アドレスにより規定される。このように、メモリアクセス動作は、アクセスされる領域及び対応するキーに依存する。システム概略図を参照して前述してきたが、ここで、図７に示すフローチャートを参照して説明される。 
【００７３】
図７は、（例えば、図６のブロック６８０の一部のように）前述されたキー置換技術を実装するメモリシステム内でメモリ要求を処理することに関連する方法７００の一実施形態を示す。データのキー変更は、前述のように、中断され、かつ、未完了であり得るので、メモリの異なる部分が異なるキーを用いてスクランブルされてよい。方法７００は、キー変更処理が全体的に完了していないことに起因して、２つの異なるキーを用いてスクランブルされる、メモリの２つの部分を有するメモリに関して説明されるだろう。従って、メモリアクセス要求は、メモリ内のアドレスの位置及び対応するキーに基づいて処理される。アクセス要求のアドレス内のデータは、元のデータを正確に取得するべく、データをスクランブルするために用いられていたキーを用いてデスクランブルされる必要がある。
【００７４】
７１０で、方法は、メモリ内のアドレスでデータのためのメモリアクセス要求（例えば、読み出し要求）を受信することにより開始する。正確なデータを提供するべく、アドレスのデータは、アクセス要求の結果として戻される前にデスクランブルされる必要がある。適切なキーは、メモリの一部について判断される。７２０で、境界アドレスは、例えば、境界レジスタから読み出される。前の例のように、境界アドレスは、キー変更処理の現在の位置を示し、したがって、メモリの第１の部分（新しいキーでキー変更される部分）と、第２の部分（一部がキー変更される必要があり、データが古いキーを用いてスクランブルされる）との間の境界を示す。従って、境界アドレスは、アクセス要求内のアドレスが、メモリの第１の部分又はメモリの第２の部分内にあるか否かを判断するために用いられ得る。したがって、境界アドレスは、どのキーがメモリ内のデータをデスクランブルするのに利用されるかを特定するために用いられる。
【００７５】
７３０で、アドレスがメモリの第１の部分内にあるか否かが判断される。要求されたアドレスが、メモリの第１の部分内（例えば、境界アドレスより低い位置）にある場合、方法は、ブロック７４０に移り、第１のキーが、データをデスクランブルするために選択される。７５０で、第１のキーは、要求されたアドレスに格納されたデータをデスクランブルするメモリコントローラに提供される。７６０で、要求されたアドレスで、データは、提供されたキーを用いてデスクランブルされ、データは、要求元に戻される。
【００７６】
代替的に、７３０で、アドレスがメモリの第２の部分内にある（例えば、境界アドレスと等しい、又は、境界アドレスより高い）と判断された場合、方法は、７７０へ移り、第２のキーが、データをデスクランブルするために選択される。７８０で、第２のキーは、メモリコントローラに提供される。その後、７６０で、データは、第２のキーを用いてデスクランブルされ、データは、要求元に戻される。処理は、次のメモリ要求について繰り返される。
【００７７】
メモリアクセス要求が書き込み要求である場合、書き込まれるべきデータが、データが書き込まれるメモリの部分に応じて適切なキーを用いて、最初にスクランブルされるので、処理は、わずかに異なる。例えば、方法は、（例えば、要求された書き込みアドレスを境界アドレスと比較して）境界アドレスに基づいて、要求された書き込みアドレスが存在するメモリのどの部分であるかを判断する。要求された書き込みアドレスが第１の部分内にある場合、その後、書き込まれるべきデータは、第１のキーを用いてスクランブルされ、そうでなければ、データは、第２のキーを用いてスクランブルされる。その後、スクランブルされたデータは、要求された書き込みアドレスで、メモリの位置に書き込まれる。一実施形態において、メモリコントローラは、これらの関数を実行するように構成される。
【００７８】
メモリのキー変更処理が、方法７００の処理中、まだ保留のままである場合、次に、メモリコントローラがアイドルになり、かつ、処理するアクセス要求がないときに、方法６００は、呼び出され、キー変更処理が、境界アドレスで、次のデータについて再開される。
【００７９】
開示された技術では、メモリに格納されたデータは、メモリのデータがアクセスできるようになる前に完全にキー変更される必要がない。代わりに、メモリに格納されたデータは、キー変更処理中に、メモリ動作が継続することを許可されている間に、複数の部分において断続的にキー変更される。したがって、キー置換は、メモリをシャットダウンせず、又は、システムリブート／リセット時にのみ実行される必要がない。
【００８０】
以下は、本明細書中で使用される選択された用語の定義を含む。これらの定義は、用語の範囲内に含まれ、実装すべく用いられ得る複数のコンポーネントの様々な例、及び／又は形態を含む。例は、限定されることを意図したものではない。用語の単数形及び複数形の両方は、定義内となり得る。
【００８１】
「一実施形態」、「実施形態」、「一例」、「例」等への言及は、説明される実施形態又は例が、特定の特徴、構造、性質、特性、要素又は限定を含むことを示唆するが、必ずしも全ての実施形態又は例が、特定の特徴、構造、性質、特性、要素又は限定を含むことを意味しない。更に、「一実施形態において」という語句を繰り返し用いることで、必ずしも同一の実施形態を指しているわけではないが、同一の実施形態を指すこともある。
【００８２】
本明細書で用いられるような「コンピュータ記憶媒体」は、開示された機能及び／又はそれと共に組み合わせたデータのうちのいずれかを実行するように構成される命令を格納する非一時的な媒体である。コンピュータ記憶媒体は、不揮発性媒体及び揮発性媒体を含むが、これらに限定されない、形態をとり得る。不揮発性媒体は、例えば、光ディスク、磁気ディスク等を含んでよい。揮発性媒体は、例えば、半導体メモリ、ダイナミックメモリ等を含んでよい。コンピュータ記憶媒体の共通の形態は、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、ＡＳＩＣ、コンパクトディスク、他の光媒体、ＲＡＭ、ＲＯＭ、メモリチップ又はカード、メモリスティック、及び、コンピュータ命令及び／又はデータを格納できる他の電子媒体を含んでよいが、これらに限定されない。
【００８３】
本明細書で用いられるような「ロジック」は、コンピュータ又は電気ハードウェア構成要素、ファームウェア、命令を格納する非一時的なコンピュータ記憶媒体、及び／又は、開示された機能又は動作のいずれかを実行するように構成され、及び／又は、別のロジック、方法及び／又はシステムからの機能又は動作を引き起こす、これらコンポーネントの組み合わせを含む。ロジックは、開示された機能、別個のロジック（例えば、ＡＳＩＣ）、アナログ回路、デジタル回路、プログラムロジックデバイス、実行されたときにアルゴリズムを実行する命令を含むメモリデバイス等のいずれかを実行するように構成されたアルゴリズムにより制御されるマイクロプロセッサを含んでよい。ロジックは、１又は複数のゲート、ゲートの組み合わせ、又は、他の回路コンポーネントを含んでよい。複数のロジックが説明されている場合、複数のロジックを一つの物理的なロジックコンポーネントに組み込むことが可能であり得る。同様に、単一のロジックユニットが説明されている場合、その単一のロジックユニットを複数の物理的なロジックコンポーネント間に分散させることが可能であり得る。
【００８４】
説明の簡略化を目的として、例示されている複数の方法は、一連のブロックとして示され、説明されている。複数の方法は、    ブロックの順序に限定はされず、いくつかのブロックを図示、説明されているものと異なる順序で実行したり、及び／又は、図示、説明されているものと異なる他のブロックと同時に実行したりすることもできる。さらに、例示されている複数の方法を実装するために、例示されているブロック全てを利用する必要がない場合もある。ブロックは、複数のコンポーネントに統合又は分離され得る。更に、追加的及び／又は代替的な複数の方法は、ブロックに示されていない追加的な動作を採用できる。
【００８５】
詳細な説明又は特許請求の範囲において、「含む（ｉｎｃｌｕｄｅｓ）」又は「含む（ｉｎｃｌｕｄｉｎｇ）」という用語が使用される限り、「備える（ｃｏｍｐｒｉｓｉｎｇ）」という用語が、特許請求の範囲において移行句として使用される場合に解釈されるときの「備える」という用語と同様な態様で包括的であることが意図される。
【００８６】
例示的なシステム、方法等が例を説明することにより示されてきたが、また、例は、かなり詳細に説明されてきたが、そのような詳細に対して、添付の特許請求の範囲の範囲を制限する、又は、任意の方法で制限することは、出願人の意図ではない。当然ながら、本明細書で説明された複数のシステム、複数の方法等を説明する目的で、複数のコンポーネント又は複数の方法の考えられる全ての組み合わせを記載することはできない。したがって、本開示は、図示して説明した特定の詳細、代表的な装置、及び、例示的な実施例に限定されない。したがって、本開示は、添付の特許請求の範囲内に含まれる改変、修正、及び変更を包含することが意図される。
【図１】
0006452135.tif 000002
【図２】
0006452135.tif 000003
【図３】
0006452135.tif 000004
【図４】
0006452135.tif 000005
【図５】
0006452135.tif 000006
【図６】
0006452135.tif 000007
【図７】
0006452135.tif 000008