(57)【要約】  一態様では、キャッシュメモリデバイスは、メモリデバイスに関連する命令またはデータを読み取るための要求を受信する。要求は、第1の範囲識別子および範囲インジケータビットを含み、第1の範囲識別子は、メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする。キャッシュメモリデバイスは、命令またはデータがキャッシュメモリデバイスの中に記憶されているとき、第1の範囲識別子がキャッシュタグの中の第2の範囲識別子と一致するかどうかを決定し、第1の範囲識別子が範囲を示すとき、かつ範囲インジケータビットが有効化されているとき、キャッシュメモリデバイスの中に記憶されている命令またはデータは、第2の範囲識別子に関連付けられた一時暗号化鍵に基づいて解読されている。キャッシュメモリデバイスは、第1の範囲識別子が第2の範囲識別子と一致するとき、命令またはデータを送信する。
2018524722.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリデバイスのための方法であって、
メモリデバイスに関連する命令またはデータを読み取るための要求を受信するステップであって、前記要求が、少なくとも第1の範囲識別子および範囲インジケータビットを含み、前記第1の範囲識別子が、前記メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする、ステップと、
前記命令またはデータが前記キャッシュメモリデバイスの中に記憶されているとき、前記第1の範囲識別子がキャッシュタグの中の第2の範囲識別子と一致するかどうかを決定するステップであって、前記第1の範囲識別子が前記範囲を示すとき、かつ前記範囲インジケータビットが有効化されているとき、前記キャッシュメモリデバイスの中に記憶されている前記命令またはデータが、前記第2の範囲識別子に関連付けられた一時暗号化鍵に基づいて解読されている、ステップと、
前記第1の範囲識別子が前記第2の範囲識別子と一致するとき、前記命令またはデータを送信するステップと
を備える方法。
【請求項２】
前記第1の範囲識別子が前記第2の範囲識別子と一致しないとき、前記命令を送信するのを控えるステップ
をさらに備える、請求項1に記載の方法。
【請求項３】
前記一時暗号化鍵が、前記範囲が前記メモリデバイスの中に維持されている間に存在する一時的または過渡的な暗号化鍵である、請求項1に記載の方法。
【請求項４】
前記要求が、範囲の外側のデータへのアクセスが許可されているかどうかを示す制御ビットをさらに含み、
少なくとも前記第1の範囲識別子、前記範囲インジケータビット、または前記制御ビットに基づいて、前記要求を許可すべきかそれとも拒否すべきかを決定するステップと、
前記要求が拒否されるとき、前記データまたは命令を送信するのを控えるステップと
をさらに備える、請求項1に記載の方法。
【請求項５】
前記要求が前記データを読み取るためのものであり、前記第1の範囲識別子が前記範囲を示し、前記範囲インジケータビットが有効化されておらず、かつ前記制御ビットが有効化されているとき、前記要求が許可される、請求項4に記載の方法。
【請求項６】
前記要求が前記データを読み取るためのものであり、前記第1の範囲識別子が前記範囲を示し、前記範囲インジケータビットが有効化されておらず、かつ前記制御ビットが有効化されているとき、前記第1の範囲識別子を0として定義するステップ
をさらに備える、請求項4に記載の方法。
【請求項７】
前記命令またはデータが前記キャッシュメモリデバイスの中に記憶されていないとき、前記メモリデバイスから前記命令またはデータを取得するステップと、
前記取得された命令またはデータを、前記第1の範囲識別子を含む第2のキャッシュタグとともに前記キャッシュメモリデバイスにおいて記憶するステップと
をさらに備える、請求項1に記載の方法。
【請求項８】
前記第1の範囲識別子が前記範囲を示すとき、かつ前記範囲インジケータビットが有効化されているとき、前記メモリデバイスから受信された前記命令またはデータが、前記第1の範囲識別子に関連付けられた前記一時暗号化鍵に基づいて解読されている、請求項7に記載の方法。
【請求項９】
キャッシュダンプコマンドを受信するステップと、
前記命令またはデータが前記キャッシュメモリデバイスの中に記憶されているとき、前記キャッシュタグの中の前記第2の範囲識別子が0、または範囲を示さない特殊値であるかどうかを決定するステップと、
前記キャッシュタグの中の前記第2の範囲識別子が0、または範囲を示さない特殊値と異なるとき、前記キャッシュダンプコマンドに応答して前記命令またはデータを送信するのを控えるステップと
をさらに備える、請求項1に記載の方法。
【請求項１０】
前記キャッシュタグの中の前記第2の範囲識別子が0、または範囲を示さない前記特殊値と異なるとき、前記キャッシュダンプコマンドに応答して0値を送信するステップ
をさらに備える、請求項9に記載の方法。
【請求項１１】
前記命令またはデータが前記キャッシュメモリデバイスの中に記憶されていないとき、キャッシュの同じクラスタの中の少なくとも1つのリモートキャッシュメモリへ前記要求および前記第1の範囲識別子を送信するステップと、
前記少なくとも1つのリモートキャッシュメモリデバイスから前記命令またはデータを受信するステップと
をさらに備える、請求項1に記載の方法。
【請求項１２】
前記命令またはデータが前記キャッシュメモリデバイスの中に記憶されていないとき、キャッシュの異なるクラスタの中の少なくとも1つのリモートキャッシュメモリデバイスへ前記要求を送信するステップと、
前記少なくとも1つのリモートキャッシュメモリデバイスから前記命令またはデータを受信するステップとをさらに備え、前記受信された命令またはデータが、前記少なくとも1つのリモートキャッシュメモリデバイスに関連するソフトウェア保護デバイスにおいて、前記一時暗号化鍵に基づいて暗号化され、その後、前記キャッシュメモリデバイスに関連するソフトウェア保護デバイスにおいて、受信の前に前記一時暗号化鍵に基づいて解読される、
請求項1に記載の方法。
【請求項１３】
装置であって、
メモリデバイスと、
前記メモリデバイスに結合されたコアデバイスと、
前記メモリデバイスおよび前記コアデバイスに結合されたキャッシュメモリデバイスとを備え、前記キャッシュメモリデバイスが、
前記メモリデバイスに関連する命令またはデータを読み取るための要求を受信することであって、前記要求が、少なくとも第1の範囲識別子および範囲インジケータビットを含み、前記第1の範囲識別子が、前記メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする、受信することと、
前記命令またはデータが前記キャッシュメモリデバイスの中に記憶されているとき、前記第1の範囲識別子がキャッシュタグの中の第2の範囲識別子と一致するかどうかを決定することであって、前記第1の範囲識別子が前記範囲を示すとき、かつ前記範囲インジケータビットが有効化されているとき、前記キャッシュメモリデバイスの中に記憶されている前記命令またはデータが、前記第2の範囲識別子に関連付けられた一時暗号化鍵に基づいて解読されている、決定することと、
前記第1の範囲識別子が前記第2の範囲識別子と一致するとき、前記命令またはデータを送信することと
を行うように構成された処理回路を含む、装置。
【請求項１４】
前記処理回路が、
前記第1の範囲識別子が前記第2の範囲識別子と一致しないとき、前記命令を送信するのを控えるようにさらに構成される、
請求項13に記載の装置。
【請求項１５】
前記一時暗号化鍵が、前記範囲が前記メモリデバイスの中に維持されている間に存在する一時的または過渡的な暗号化鍵である、請求項13に記載の装置。
【請求項１６】
前記要求が、範囲の外側のデータへのアクセスが許可されているかどうかを示す制御ビットをさらに含み、前記処理回路が、
少なくとも前記第1の範囲識別子、前記範囲インジケータビット、または前記制御ビットに基づいて、前記要求を許可すべきかそれとも拒否すべきかを決定し、
前記要求が拒否されるとき、前記データまたは命令を送信するのを控えるようにさらに構成される、
請求項13に記載の装置。
【請求項１７】
前記要求が前記データを読み取るためのものであり、前記第1の範囲識別子が前記範囲を示し、前記範囲インジケータビットが有効化されておらず、かつ前記制御ビットが有効化されているとき、前記要求が許可される、請求項16に記載の装置。
【請求項１８】
前記処理回路が、
前記要求が前記データを読み取るためのものであり、前記第1の範囲識別子が前記範囲を示し、前記範囲インジケータビットが有効化されておらず、かつ前記制御ビットが有効化されているとき、前記第1の範囲識別子を0、または範囲を示さない特殊値として定義するようにさらに構成される、
請求項16に記載の装置。
【請求項１９】
前記処理回路が、
前記命令またはデータが前記キャッシュメモリデバイスの中に記憶されていないとき、前記メモリデバイスから前記命令またはデータを取得し、
前記取得された命令またはデータを、前記第1の範囲識別子を含む第2のキャッシュタグとともに前記キャッシュメモリデバイスにおいて記憶するようにさらに構成される、
請求項13に記載の装置。
【請求項２０】
前記第1の範囲識別子が前記範囲を示すとき、かつ前記範囲インジケータビットが有効化されているとき、前記メモリデバイスから受信された前記命令またはデータが、前記第1の範囲識別子に関連付けられた前記一時暗号化鍵に基づいて解読されている、請求項19に記載の装置。
【請求項２１】
前記処理回路が、
キャッシュダンプコマンドを受信し、
前記命令またはデータが前記キャッシュメモリデバイスの中に記憶されているとき、前記キャッシュタグの中の前記第2の範囲識別子が0、または範囲を示さない特殊値であるかどうかを決定し、
前記キャッシュタグの中の前記第2の範囲識別子が0、または範囲を示さない前記特殊値と異なるとき、前記キャッシュダンプコマンドに応答して前記命令またはデータを送信するのを控えるようにさらに構成される、
請求項16に記載の装置。
【請求項２２】
前記処理回路が、
前記キャッシュタグの中の前記第2の範囲識別子が0、または範囲を示さない前記特殊値と異なるとき、前記キャッシュダンプコマンドに応答して0値を送信するようにさらに構成される、
請求項21に記載の装置。
【請求項２３】
前記処理回路が、
前記命令またはデータが前記キャッシュメモリデバイスの中に記憶されていないとき、キャッシュの同じクラスタの中の少なくとも1つのリモートキャッシュメモリへ前記要求および前記第1の範囲識別子を送信し、
前記少なくとも1つのリモートキャッシュメモリデバイスから前記命令またはデータを受信するようにさらに構成される、
請求項13に記載の装置。
【請求項２４】
前記処理回路が、
前記命令またはデータが前記キャッシュメモリデバイスの中に記憶されていないとき、キャッシュの異なるクラスタの中の少なくとも1つのリモートキャッシュメモリデバイスへ前記要求を送信し、
前記少なくとも1つのリモートキャッシュメモリデバイスから前記命令またはデータを受信するようにさらに構成され、前記受信された命令またはデータが、前記少なくとも1つのリモートキャッシュメモリデバイスに関連するソフトウェア保護デバイスにおいて、前記一時暗号化鍵に基づいて暗号化され、その後、前記キャッシュメモリデバイスに関連するソフトウェア保護デバイスにおいて、受信の前に前記一時暗号化鍵に基づいて解読される、
請求項13に記載の装置。
【請求項２５】
装置であって、
メモリデバイスに関連する命令またはデータを読み取るための要求を受信するための手段であって、前記要求が、少なくとも第1の範囲識別子および範囲インジケータビットを含み、前記第1の範囲識別子が、前記メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする、手段と、
前記命令またはデータが前記装置の中に記憶されているとき、前記第1の範囲識別子がキャッシュタグの中の第2の範囲識別子と一致するかどうかを決定するための手段であって、前記第1の範囲識別子が前記範囲を示すとき、かつ前記範囲インジケータビットが有効化されているとき、前記装置の中に記憶されている前記命令またはデータが、前記第2の範囲識別子に関連付けられた一時暗号化鍵に基づいて解読されている、手段と、
前記第1の範囲識別子が前記第2の範囲識別子と一致するとき、前記命令またはデータを送信するための手段と
を備える装置。
【請求項２６】
命令を記憶している非一時的プロセッサ可読記憶媒体であって、前記命令は、少なくとも1つの処理回路によって実行されたとき、前記少なくとも1つの処理回路に、
メモリデバイスに関連する命令またはデータを読み取るための要求を受信することであって、前記要求が、少なくとも第1の範囲識別子および範囲インジケータビットを含み、前記第1の範囲識別子が、前記メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする、受信することと、
前記命令またはデータがキャッシュメモリデバイスの中に記憶されているとき、前記第1の範囲識別子がキャッシュタグの中の第2の範囲識別子と一致するかどうかを決定することであって、前記第1の範囲識別子が前記範囲を示すとき、かつ前記範囲インジケータビットが有効化されているとき、前記キャッシュメモリデバイスの中に記憶されている前記命令またはデータが、前記第2の範囲識別子に関連付けられた一時暗号化鍵に基づいて解読されている、決定することと、
前記第1の範囲識別子が前記第2の範囲識別子と一致するとき、前記命令またはデータを送信することとを行わせる、
非一時的プロセッサ可読記憶媒体。
【請求項２７】
キャッシュメモリデバイスのための方法であって、
メモリデバイスの領域に関連するメモリページにデータを書き込むための要求を受信するステップであって、前記要求が、少なくとも第1の範囲識別子および範囲インジケータビットを含み、前記第1の範囲識別子が、前記メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする、ステップと、
前記メモリページが前記キャッシュメモリデバイスにおいて記憶されているかどうかを決定するステップと、
前記メモリページが前記キャッシュメモリデバイスにおいて記憶されているとき、前記メモリページに関連付けられたキャッシュタグの中の第2の範囲識別子が前記第1の範囲識別子と一致するかどうかを決定するステップと、
前記第1の範囲識別子が前記第2の範囲識別子と一致するとき、前記第1の範囲識別子を含むキャッシュタグとともに前記キャッシュメモリデバイスにおける前記メモリページの中に前記データを記憶するステップと
を備える方法。
【請求項２８】
前記要求が、範囲の外側のデータへのアクセスが許可されているかどうかを示す制御ビットをさらに含み、
少なくとも前記第1の範囲識別子、前記範囲インジケータビット、または前記制御ビットに基づいて、前記データを書き込むための前記要求を許可すべきかそれとも拒否すべきかを決定するステップと、
前記要求が拒否されるとき、前記キャッシュメモリデバイスにおける前記メモリページの中に前記データを記憶するのを控えるステップと
をさらに備える、請求項27に記載の方法。
【請求項２９】
前記第1の範囲識別子が前記範囲を示し、前記範囲インジケータビットが有効化されておらず、かつ前記制御ビットが有効化されているとき、前記データを書き込むための前記要求が許可される、請求項28に記載の方法。
【請求項３０】
前記メモリページが前記キャッシュメモリデバイスにおいて記憶されていないとき、前記第1の範囲識別子を含むキャッシュタグとともに前記キャッシュメモリデバイスにおける前記メモリページの中に前記データを記憶するステップをさらに備え、
前記第1の範囲識別子が0でなく、かつ前記範囲インジケータビットが前記メモリページに対して設定されているとき、前記キャッシュメモリデバイスがフラッシュされた後、前記データが前記第1の範囲識別子に関連付けられた一時暗号化鍵を用いて暗号化される、
請求項27に記載の方法。
【請求項３１】
前記第1の範囲識別子が前記メモリデバイスの中の前記範囲を示し、前記範囲インジケータビットが有効化されておらず、かつ前記制御ビットが有効化されているとき、前記第1の範囲識別子を0、または範囲を示さない特殊値として定義するステップ
をさらに備える、請求項30に記載の方法。
【請求項３２】
前記第1の範囲識別子が前記第2の範囲識別子と一致しないとき、前記キャッシュメモリデバイスにおける前記メモリページの中に前記データを記憶するのを控えるステップ
をさらに備える、請求項27に記載の方法。
【請求項３３】
前記第1の範囲識別子が前記第2の範囲識別子と一致するときに前記キャッシュメモリデバイスにおける前記メモリページの中に記憶される前記データが、前記メモリページに対応する前記メモリデバイスの前記領域の中に記憶される前に、前記第1の範囲識別子に関連付けられた一時暗号化鍵を使用して暗号化される、請求項27に記載の方法。
【請求項３４】
装置であって、
メモリデバイスと、
前記メモリデバイスに結合されたコアデバイスと、
前記メモリデバイスおよび前記コアデバイスに結合されたキャッシュメモリデバイスとを備え、前記キャッシュメモリデバイスが、
メモリデバイスの領域に関連するメモリページにデータを書き込むための要求を受信することであって、前記要求が、少なくとも第1の範囲識別子および範囲インジケータビットを含み、前記第1の範囲識別子が、前記メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする、受信することと、
前記メモリページが前記キャッシュメモリデバイスにおいて記憶されているかどうかを決定することと、
前記メモリページが前記キャッシュメモリデバイスにおいて記憶されているとき、前記メモリページに関連付けられたキャッシュタグの中の第2の範囲識別子が前記第1の範囲識別子と一致するかどうかを決定することと、
前記第1の範囲識別子が前記第2の範囲識別子と一致するとき、前記第1の範囲識別子を含むキャッシュタグとともに前記キャッシュメモリデバイスにおける前記メモリページの中に前記データを記憶することと
を行うように構成された処理回路を含む、装置。
【請求項３５】
前記要求が、範囲の外側のデータへのアクセスが許可されているかどうかを示す制御ビットをさらに含み、前記処理回路が、
少なくとも前記第1の範囲識別子、前記範囲インジケータビット、または前記制御ビットに基づいて、前記データを書き込むための前記要求を許可すべきかそれとも拒否すべきかを決定し、
前記要求が拒否されるとき、前記キャッシュメモリデバイスにおける前記メモリページの中に前記データを記憶するのを控えるようにさらに構成される、
請求項34に記載の装置。
【請求項３６】
前記第1の範囲識別子が前記範囲を示し、前記範囲インジケータビットが有効化されておらず、かつ前記制御ビットが有効化されているとき、前記データを書き込むための前記要求が許可される、請求項35に記載の装置。
【請求項３７】
前記処理回路が、
前記メモリページが前記キャッシュメモリデバイスにおいて記憶されていないとき、前記第1の範囲識別子を含むキャッシュタグとともに前記キャッシュメモリデバイスにおける前記メモリページの中に前記データを記憶するようにさらに構成され、
前記第1の範囲識別子が0でなく、かつ前記範囲インジケータビットが前記メモリページに対して設定されているとき、前記キャッシュメモリデバイスがフラッシュされた後、前記データが前記第1の範囲識別子に関連付けられた一時暗号化鍵を用いて暗号化される、
請求項34に記載の装置。
【請求項３８】
前記処理回路が、
前記第1の範囲識別子が前記メモリデバイスの中の前記範囲を示し、前記範囲インジケータビットが有効化されておらず、かつ前記制御ビットが有効化されているとき、前記第1の範囲識別子を0、または範囲を示さない特殊値として定義するようにさらに構成される、
請求項35に記載の装置。
【請求項３９】
前記処理回路が、
前記第1の範囲識別子が前記第2の範囲識別子と一致しないとき、前記キャッシュメモリデバイスにおける前記メモリページの中に前記データを記憶するのを控えるようにさらに構成される、
請求項34に記載の装置。
【請求項４０】
前記第1の範囲識別子が前記第2の範囲識別子と一致するときに前記キャッシュメモリデバイスにおける前記メモリページの中に記憶される前記データが、前記メモリページに対応する前記メモリデバイスの前記領域の中に記憶される前に、前記第1の範囲識別子に関連付けられた一時暗号化鍵を使用して暗号化される、請求項34に記載の装置。
【請求項４１】
装置であって、
メモリデバイスの領域に関連するメモリページにデータを書き込むための要求を受信するための手段であって、前記要求が、少なくとも第1の範囲識別子および範囲インジケータビットを含み、前記第1の範囲識別子が、前記メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする、手段と、
前記メモリページが前記装置において記憶されているかどうかを決定するための手段と、
前記メモリページが前記装置において記憶されているとき、前記メモリページに関連付けられたキャッシュタグの中の第2の範囲識別子が前記第1の範囲識別子と一致するかどうかを決定するための手段と、
前記第1の範囲識別子が前記第2の範囲識別子と一致するとき、前記第1の範囲識別子を含むキャッシュタグとともに前記装置における前記メモリページの中に前記データを記憶するための手段と
を備える装置。
【請求項４２】
命令を記憶している非一時的プロセッサ可読記憶媒体であって、前記命令は、少なくとも1つの処理回路によって実行されたとき、前記少なくとも1つの処理回路に、
メモリデバイスの領域に関連するメモリページにデータを書き込むための要求を受信することであって、前記要求が、少なくとも第1の範囲識別子および範囲インジケータビットを含み、前記第1の範囲識別子が、前記メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする、受信することと、
前記メモリページがキャッシュメモリデバイスにおいて記憶されているかどうかを決定することと、
前記メモリページが前記キャッシュメモリデバイスにおいて記憶されているとき、前記メモリページに関連付けられたキャッシュタグの中の第2の範囲識別子が前記第1の範囲識別子と一致するかどうかを決定することと、
前記第1の範囲識別子が前記第2の範囲識別子と一致するとき、前記第1の範囲識別子を含むキャッシュタグとともに前記キャッシュメモリデバイスにおける前記メモリページの中に前記データを記憶することとを行わせる、
非一時的プロセッサ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本特許出願は、参照により本明細書に明確に組み込まれる、「Secure Handling of Memory Caches and Cached Software Module Identities For A Method to Isolate Software Modules by Means of Controlled Encryption Key Management」と題する2015年7月7日に出願された米国仮出願第62/189,738号、および「Secure Handling of Memory Caches and Cached Software Module Identities for a Method to Isolate Software Modules by Means of Controlled Encryption Key Management」と題する2016年3月15日に出願された米国非仮出願第15/070,947号の優先権を主張する。
【０００２】
本開示の態様は、一般に、セキュアなメモリ管理に関し、より詳細には、限定はしないが、制御された暗号化鍵管理によってソフトウェアモジュールを隔離する方法のためのメモリキャッシュおよびキャッシュされたソフトウェアモジュール識別情報のセキュア処理に関する。
【背景技術】
【０００３】
ソフトウェア開発者は、通常、アプリケーション、ドライバ、およびゲームなどのソフトウェア(命令、コード、プログラム、またはアルゴリズムのセットとも呼ばれる)を生成し、顧客および他の許可されたユーザが様々な製品においてソフトウェアをインストールおよび使用することを可能にする。たとえば、ソフトウェアは、モバイルフォン(たとえば、スマートフォン)またはラップトップコンピュータなどの電子デバイスのメモリデバイスの中に、インストールおよび記憶され得る。しかしながら、そのようなソフトウェアは、許可されていないユーザ(たとえば、ハッカー)によってアクセスおよびリバースエンジニアリングされることがあり、高価な知的財産の損失をもたらすことがある。したがって、許可されていないユーザによるソフトウェアのアクセスを阻止するために、電子製品においてソフトウェアを保護する必要がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
以下のことは、本開示のいくつかの態様の基本的な理解をもたらすように、そのような態様の簡略化された概要を提示する。本概要は、本開示のすべての企図された特徴の広範な概要ではなく、本開示のすべての態様の主要な要素または重要な要素を特定するものでもなく、本開示のいずれかまたはすべての態様の範囲を定めるものでもない。その唯一の目的は、後で提示されるより詳細な説明の前置きとして、本開示のいくつかの態様の様々な概念を簡略化された形態で提示することである。
【０００５】
一態様によれば、キャッシュメモリデバイス上で動作可能な方法が提供される。キャッシュメモリデバイスは、メモリデバイスに関連する命令またはデータを読み取るための要求を受信し、要求は、少なくとも第1の範囲識別子および範囲インジケータビットを含み、第1の範囲識別子は、メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする。本明細書で使用する「範囲」という用語は、1つまたは複数の選択された、事前定義された、または動的に定義された、メモリデバイスのメモリ領域、ドメイン、セグメント、および/またはブロックとして定義され得る。キャッシュメモリデバイスは、命令またはデータがキャッシュメモリデバイスの中に記憶されているとき、第1の範囲識別子がキャッシュタグの中の第2の範囲識別子と一致するかどうかを決定し、第1の範囲識別子が範囲を示すとき、かつ範囲インジケータビットが有効化されているとき、キャッシュメモリデバイスの中に記憶されている命令またはデータは、第2の範囲識別子に関連付けられた一時暗号化鍵に基づいて解読されている。キャッシュメモリデバイスは、第1の範囲識別子が第2の範囲識別子と一致するとき、命令またはデータを送信する。一態様では、キャッシュメモリデバイスは、第1の範囲識別子が第2の範囲識別子と一致しないとき、命令を送信するのを控える。一態様では、一時暗号化鍵は、範囲がメモリデバイスの中に維持されている間に存在する一時的または過渡的な暗号化鍵である。一態様では、要求は、範囲の外側のデータへのアクセスが許可されているかどうかを示す制御ビットを含み得る。そのような態様では、キャッシュメモリデバイスは、少なくとも第1の範囲識別子、範囲インジケータビット、または制御ビットに基づいて、要求を許可すべきかそれとも拒否すべきかを決定し、要求が拒否されるとき、データまたは命令を送信するのを控える。一態様では、要求がデータを読み取るためのものであり、第1の範囲識別子が範囲を示し、範囲インジケータビットが有効化されておらず、かつ制御ビットが有効化されているとき、要求は許可される。一態様では、キャッシュメモリデバイスは、要求がデータを読み取るためのものであり、第1の範囲識別子が範囲を示し、範囲インジケータビットが有効化されておらず、かつ制御ビットが有効化されているとき、第1の範囲識別子を0として定義する。一態様では、キャッシュメモリデバイスは、命令またはデータがキャッシュメモリデバイスの中に記憶されていないとき、メモリデバイスから命令またはデータを取得し、取得された命令またはデータを、第1の範囲識別子を含む第2のキャッシュタグとともにキャッシュメモリデバイスにおいて記憶する。一態様では、第1の範囲識別子が範囲を示すとき、かつ範囲インジケータビットが有効化されているとき、メモリデバイスから受信された命令またはデータは、第1の範囲識別子に関連付けられた一時暗号化鍵に基づいて解読されている。一態様では、キャッシュメモリデバイスは、キャッシュダンプコマンドを受信し、命令またはデータがキャッシュメモリデバイスの中に記憶されているとき、キャッシュタグの中の第2の範囲識別子が0または範囲を示さない特殊値であるかどうかを決定し、キャッシュタグの中の第2の範囲識別子が0または範囲を示さない特殊値と異なるとき、キャッシュダンプコマンドに応答して命令またはデータを送信するのを控える。一態様では、キャッシュメモリデバイスは、キャッシュタグの中の第2の範囲識別子が0または範囲を示さない特殊値と異なるとき、キャッシュダンプコマンドに応答して0値を送信する。一態様では、キャッシュメモリデバイスは、命令またはデータがキャッシュメモリデバイスの中に記憶されていないとき、キャッシュの同じクラスタの中の少なくとも1つのリモートキャッシュメモリへ要求および第1の範囲識別子を送信し、少なくとも1つのリモートキャッシュメモリデバイスから命令またはデータを受信する。一態様では、キャッシュメモリデバイスは、命令またはデータがキャッシュメモリデバイスの中に記憶されていないとき、キャッシュの異なるクラスタの中の少なくとも1つのリモートキャッシュメモリデバイスへ要求を送信し、少なくとも1つのリモートキャッシュメモリデバイスから命令またはデータを受信し、受信された命令またはデータは、少なくとも1つのリモートキャッシュメモリデバイスに関連するソフトウェア保護デバイスにおいて、一時暗号化鍵に基づいて暗号化され、その後、キャッシュメモリデバイスに関連するソフトウェア保護デバイスにおいて、受信の前に一時暗号化鍵に基づいて解読される。
【０００６】
一態様によれば、装置は、メモリデバイスに関連する命令またはデータを読み取るための要求を受信するための手段であって、要求が、少なくとも第1の範囲識別子および範囲インジケータビットを含み、第1の範囲識別子が、メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする、手段と、命令またはデータが装置の中に記憶されているとき、第1の範囲識別子がキャッシュタグの中の第2の範囲識別子と一致するかどうかを決定するための手段であって、第1の範囲識別子が範囲を示すとき、かつ範囲インジケータビットが有効化されているとき、装置の中に記憶されている命令またはデータが、第2の範囲識別子に関連付けられた一時暗号化鍵に基づいて解読されている、手段と、第1の範囲識別子が第2の範囲識別子と一致するとき、命令またはデータを送信するための手段とを含む。一態様では、装置は、第1の範囲識別子が第2の範囲識別子と一致しないとき、命令を送信するのを控えるための手段をさらに含む。一態様では、装置は、少なくとも第1の範囲識別子、範囲インジケータビット、または制御ビットに基づいて、要求を許可すべきかそれとも拒否すべきかを決定するための手段と、要求が拒否されるとき、データまたは命令を送信するのを控えるための手段とをさらに含む。一態様では、装置は、要求がデータを読み取るためのものであり、第1の範囲識別子が範囲を示し、範囲インジケータビットが有効化されておらず、かつ制御ビットが有効化されているとき、第1の範囲識別子を0として定義するための手段をさらに含む。一態様では、装置は、命令またはデータが装置の中に記憶されていないとき、メモリデバイスから命令またはデータを取得するための手段と、取得された命令またはデータを、第1の範囲識別子を含む第2のキャッシュタグとともに装置において記憶するための手段とをさらに含む。一態様では、装置は、キャッシュダンプコマンドを受信するための手段と、命令またはデータが装置の中に記憶されているとき、キャッシュタグの中の第2の範囲識別子が0または範囲を示さない特殊値であるかどうかを決定するための手段と、キャッシュタグの中の第2の範囲識別子が0または範囲を示さない特殊値と異なるとき、キャッシュダンプコマンドに応答して命令またはデータを送信するのを控えるための手段とをさらに含む。一態様では、装置は、キャッシュタグの中の第2の範囲識別子が0または範囲を示さない特殊値と異なるとき、キャッシュダンプコマンドに応答して0値を送信するための手段をさらに含む。一態様では、装置は、命令またはデータが装置の中に記憶されていないとき、キャッシュの同じクラスタの中の少なくとも1つのリモートキャッシュメモリへ要求および第1の範囲識別子を送信し、少なくとも1つのリモートキャッシュメモリデバイスから命令またはデータを受信するための手段をさらに含む。一態様では、装置は、命令またはデータが装置の中に記憶されていないとき、キャッシュの異なるクラスタの中の少なくとも1つのリモートキャッシュメモリデバイスへ要求を送信し、少なくとも1つのリモートキャッシュメモリデバイスから命令またはデータを受信するための手段をさらに含み、受信された命令またはデータは、少なくとも1つのリモートキャッシュメモリデバイスに関連するソフトウェア保護デバイスにおいて、一時暗号化鍵に基づいて暗号化され、その後、キャッシュメモリデバイスに関連するソフトウェア保護デバイスにおいて、受信の前に一時暗号化鍵に基づいて解読される。
【０００７】
一態様によれば、キャッシュメモリデバイス上で動作可能な方法が提供される。キャッシュメモリデバイスは、メモリデバイスの領域に関連するメモリページにデータを書き込むための要求を受信し、要求は、少なくとも第1の範囲識別子および範囲インジケータビットを含み、第1の範囲識別子は、メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする。キャッシュメモリデバイスは、メモリページがキャッシュメモリデバイスにおいて記憶されているかどうかを決定し、メモリページがキャッシュメモリデバイスにおいて記憶されているとき、メモリページに関連付けられたキャッシュタグの中の第2の範囲識別子が第1の範囲識別子と一致するかどうかを決定する。キャッシュメモリデバイスは、第1の範囲識別子が第2の範囲識別子と一致するとき、第1の範囲識別子を含むキャッシュタグとともにキャッシュメモリデバイスにおけるメモリページの中にデータを記憶する。一態様では、キャッシュメモリデバイスは、少なくとも第1の範囲識別子、範囲インジケータビット、または制御ビットに基づいて、データを書き込むための要求を許可すべきかそれとも拒否すべきかを決定し、要求が拒否されるとき、キャッシュメモリデバイスにおけるメモリページの中にデータを記憶するのを控える。一態様では、第1の範囲識別子が範囲を示し、範囲インジケータビットが有効化されておらず、かつ制御ビットが有効化されているとき、データを書き込むための要求は許可される。一態様では、キャッシュメモリデバイスは、メモリページがキャッシュメモリデバイスにおいて記憶されていないとき、第1の範囲識別子を含むキャッシュタグとともにキャッシュメモリデバイスにおけるメモリページの中にデータを記憶し、第1の範囲識別子が0でなく、かつ範囲インジケータビットがメモリページに対して設定されているとき、キャッシュメモリデバイスがフラッシュされた後、データは第1の範囲識別子に関連付けられた一時暗号化鍵を用いて暗号化される。一態様では、キャッシュメモリデバイスは、第1の範囲識別子がメモリデバイスの中の範囲を示し、範囲インジケータビットが有効化されておらず、かつ制御ビットが有効化されているとき、第1の範囲識別子を0または範囲を示さない特殊値として定義する。一態様では、キャッシュメモリデバイスは、第1の範囲識別子が第2の範囲識別子と一致しないとき、キャッシュメモリデバイスにおけるメモリページの中にデータを記憶するのを控える。一態様では、第1の範囲識別子が第2の範囲識別子と一致するときにキャッシュメモリデバイスにおけるメモリページの中に記憶されるデータは、メモリページに対応するメモリデバイスの領域の中に記憶される前に、第1の範囲識別子に関連付けられた一時暗号化鍵を使用して暗号化される。
【０００８】
一態様によれば、装置は、メモリデバイスの領域に関連するメモリページにデータを書き込むための要求を受信するための手段であって、要求が、少なくとも第1の範囲識別子および範囲インジケータビットを含み、第1の範囲識別子が、メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする、手段と、メモリページがキャッシュメモリデバイスにおいて記憶されているかどうかを決定するための手段と、メモリページが装置において記憶されているとき、メモリページに関連付けられたキャッシュタグの中の第2の範囲識別子が第1の範囲識別子と一致するかどうかを決定するための手段と、第1の範囲識別子が第2の範囲識別子と一致するとき、第1の範囲識別子を含むキャッシュタグとともに装置におけるメモリページの中にデータを記憶するための手段とを含む。一態様では、装置は、少なくとも第1の範囲識別子、範囲インジケータビット、または制御ビットに基づいて、データを書き込むための要求を許可すべきかそれとも拒否すべきかを決定するための手段と、要求が拒否されるとき、キャッシュメモリデバイスにおけるメモリページの中にデータを記憶するのを控えるための手段とをさらに含む。一態様では、装置は、メモリページがキャッシュメモリデバイスにおいて記憶されていないとき、第1の範囲識別子を含むキャッシュタグとともにキャッシュメモリデバイスにおけるメモリページの中にデータを記憶するための手段をさらに含み、第1の範囲識別子が0でなく、かつ範囲インジケータビットがメモリページに対して設定されているとき、キャッシュメモリデバイスがフラッシュされた後、データは第1の範囲識別子に関連付けられた一時暗号化鍵を用いて暗号化される。一態様では、装置は、第1の範囲識別子がメモリデバイスの中の範囲を示し、範囲インジケータビットが有効化されておらず、かつ制御ビットが有効化されているとき、第1の範囲識別子を0または範囲を示さない特殊値として定義するための手段をさらに含む。一態様では、装置は、第1の範囲識別子が第2の範囲識別子と一致しないとき、キャッシュメモリデバイスにおけるメモリページの中にデータを記憶するのを控えるための手段をさらに含む。
【０００９】
本開示のこれらおよび他の態様は、以下の発明を実施するための形態を検討すれば、より十分に理解されよう。本開示の他の態様、特徴、および実装形態は、添付の図とともに本開示の特定の実装形態の以下の説明を検討すれば、当業者に明らかになろう。本開示の特徴が以下のいくつかの実装形態および図に対して説明され得るが、本開示のすべての実装形態が、本明細書で説明する有利な特徴のうちの1つまたは複数を含むことができる。言い換えれば、1つまたは複数の実装形態が、いくつかの有利な特徴を有するものとして説明され得るが、そのような特徴のうちの1つまたは複数はまた、本明細書で説明する本開示の様々な実装形態に従って使用され得る。同様に、いくつかの実装形態が、デバイス、システム、または方法の実装形態として以下で説明され得るが、そのような実装形態が様々なデバイス、システム、および方法において実施され得ることを理解されたい。
【図面の簡単な説明】
【００１０】
【図１】本開示の様々な態様による、メモリデバイスから命令/データを読み取るための例示的な動作を示す例示的な信号フロー図である。
【図２】本開示の様々な態様による、メモリデバイスにデータを書き込むための例示的な動作を示す例示的な信号フロー図である。
【図３】本開示の様々な態様による例示的なアーキテクチャのブロック図である。
【図４】本開示の様々な態様による例示的なアーキテクチャのブロック図である。
【図５】本開示の様々な態様による、メモリトランザクションを許可すべきかそれとも拒否すべきかを決定するための動作を示すフロー図である。
【図６】本開示の様々な態様による例示的なアーキテクチャのブロック図である。
【図７】本開示の様々な態様による、キャッシュメモリデバイスにおけるメモリトランザクションに関係する動作をサポートするように構成された装置の図である。
【図８】本開示の様々な態様による、キャッシュメモリデバイスにおけるメモリトランザクションのための装置において動作可能な方法を示す図である。
【図９】本開示の様々な態様による、キャッシュメモリデバイスにおけるメモリトランザクションのための装置において動作可能な方法を示す図である。
【図１０】本開示の様々な態様による、キャッシュメモリデバイスにおけるメモリトランザクションのための装置において動作可能な方法を示す図である。
【図１１】本開示の様々な態様による、キャッシュメモリデバイスにおけるメモリトランザクションのための装置において動作可能な方法を示す図である。
【図１２】本開示の様々な態様による、ソフトウェア保護デバイスにおけるメモリトランザクションのための装置において動作可能な方法を示す図である。
【図１３】本開示の様々な態様による、ソフトウェア保護デバイスにおけるメモリトランザクションのための装置において動作可能な方法を示す図である。
【発明を実施するための形態】
【００１１】
添付の図面に関して以下に記載する発明を実施するための形態は、様々な構成の説明として意図され、本明細書で説明する概念が実践され得る唯一の構成を表すものではない。発明を実施するための形態は、様々な概念の十分な理解をもたらすための具体的な詳細を含む。しかしながら、これらの概念がこれらの具体的な詳細なしに実践され得ることが当業者に明らかであろう。いくつかの事例では、よく知られている構造および構成要素が、そのような概念を不明瞭にすることを避けるためにブロック図の形態で示される。
【００１２】
概要
本開示は、ソフトウェア保護デバイスを実装するアーキテクチャでの、キャッシュメモリデバイスにおけるセキュアなメモリトランザクションのための命令を含む、装置、方法、およびコンピュータ可読媒体に言及する。ソフトウェア保護デバイス(たとえば、図4におけるソフトウェア保護デバイス408)は、メモリデバイス(たとえば、図4におけるメモリデバイス410)の中に記憶されているソフトウェア(たとえば、図3におけるターゲットソフトウェア318)を保護するように構成されたハードウェアデバイスであり得る。たとえば、メモリデバイスは、中央処理装置(CPU)のコアデバイス(たとえば、図4におけるコアデバイス402)と通信していることがあり、コアデバイスによって実行されるべき保護されたソフトウェアを記憶し得る。ソフトウェア保護デバイスは、メモリデバイスの中の範囲(たとえば、図4における範囲428)を生成し、固有の範囲識別子(RID:realm identifier)を範囲に関連付けることによって、ソフトウェアを(たとえば、ハードウェアおよび/またはソフトウェアの制御を獲得し得る攻撃者から)保護し得る。本明細書で使用する「範囲」という用語は、1つまたは複数の選択された、事前定義された、または動的に定義された、メモリデバイスのメモリ領域、ドメイン、セグメント、および/またはブロックとして定義され得る。たとえば、範囲に含まれるメモリデバイスの中のメモリ領域は、メモリデバイスに関連するメモリページのセットとして示され得るかまたは参照され得る。一例では、メモリデバイスは、揮発性メモリデバイス(たとえば、ランダムアクセスメモリ(RAM)デバイス)であってよい。一態様では、RIDは、固有の2値ストリングであってよい。他の態様では、RIDは、数値、文字、および/またはシンボルの任意の組合せであってよい。ソフトウェア保護デバイスは、範囲の中に記憶されているソフトウェアのセキュリティを維持するために、コアデバイスとメモリデバイスとの間のメモリトランザクション(たとえば、メモリデバイスから読み取りもしくはメモリデバイスに書き込むための、またはコアデバイスによる実行のためにメモリデバイスから命令をフェッチするための、メモリコマンドまたは動作)を暗号化/解読し得る。
【００１３】
一態様では、図4を参照すると、キャッシュメモリデバイス(たとえば、命令キャッシュメモリデバイス432またはデータキャッシュメモリデバイス434)は、メモリデバイス410とのメモリトランザクションを実行するときにコアデバイス402によって実施され得る。一態様では、キャッシュメモリデバイスは、メモリデバイスに関連する命令またはデータを読み取るための要求を受信し得、要求は、少なくとも第1のRIDおよび範囲インジケータビットを含み、第1のRIDは、メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする。キャッシュメモリデバイスは、命令またはデータがキャッシュメモリデバイスの中に記憶されているとき、第1の範囲識別子がキャッシュタグの中の第2の範囲識別子と一致するかどうかを決定し得る。一態様では、キャッシュメモリデバイスの中に記憶されている命令またはデータは、第1の範囲識別子が範囲を示すとき、かつ範囲インジケータビットが有効化されているとき、ソフトウェア保護デバイスにおいて、第2の範囲識別子に関連付けられた一時暗号化鍵に基づいて解読されている。キャッシュメモリデバイスは、次いで、第1の範囲識別子が第2の範囲識別子と一致するとき、命令またはデータを送信し得る。
【００１４】
別の態様では、キャッシュメモリデバイスは、メモリデバイスの領域に関連するメモリページにデータを書き込むための要求を受信し得、要求は、少なくとも第1のRIDおよび範囲インジケータビットを含み、第1の範囲識別子は、メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする。キャッシュメモリデバイスは、メモリページがキャッシュメモリデバイスにおいて記憶されているかどうかを決定し得、メモリページがキャッシュメモリデバイスにおいて記憶されているとき、メモリページに関連付けられたキャッシュタグの中の第2の範囲識別子が第1の範囲識別子と一致するかどうかを決定し得る。キャッシュメモリデバイスは、第1の範囲識別子が第2の範囲識別子と一致するとき、第1の範囲識別子を含むキャッシュタグとともにキャッシュメモリデバイスおけるメモリページの中にデータを記憶し得る。
【００１５】
例示的な信号フロー図
図1は、本開示の様々な態様による、メモリデバイスから命令またはデータを読み取るための例示的な動作を示す例示的な信号フロー図100である。図1に示すように、信号フロー図100は、コアデバイス102、キャッシュメモリデバイス104、ソフトウェア保護デバイス106、およびメモリデバイス108を含む。一態様では、メモリデバイス108は、範囲110を含み得る。本開示の一態様では、範囲110は、保護(たとえば、暗号化)された命令および/またはデータを含む、メモリデバイス108の中の領域に関連する1つまたは複数のメモリページとして表され得る。一態様では、範囲110は、範囲識別子(RID)に関連付けられ得る。
【００１６】
図1に示すように、コアデバイス102は、メモリデバイス108からの命令またはデータを求める第1の要求を送信し得る(112)。第1の要求は、RID、(たとえば、メモリ管理ユニット(MMU)によって提供される)範囲インジケータビット(RB:realm indicator bit)、および随意の制御ビット(本明細書では、「許可範囲外データ」(DORA:data outside realm allowed)ビットとも呼ばれる)を含み得る。範囲インジケータビットは、メモリページがメモリデバイス108の中の範囲(たとえば、範囲110)に属するか否かを示す、メモリページのメモリページデスクリプタの中のビットであってよい。キャッシュメモリデバイス104は、RID、RB、およびDORAビットに基づいて要求が許可されることを決定し得、要求をソフトウェア保護デバイス106に転送し得る(114)。ソフトウェア保護デバイス106は、要求をメモリデバイス108に転送し得(116)、暗号化された命令またはデータをメモリデバイス108から受信し得る(118)。ソフトウェア保護デバイス106は、コアデバイス102によって送信された第1の要求の中のRIDに関連付けられている一時暗号化鍵(EEK:ephemeral encryption key)を用いて、命令またはデータを解読し得る(120)。ソフトウェア保護デバイス106は、解読された命令またはデータをキャッシュメモリデバイス104へ送信し得る(122)。キャッシュメモリデバイス104は、解読された命令またはデータを記憶し得、キャッシュタグの中の、コアデバイス102によって送信された第1の要求のRIDを記憶し得る(124)。キャッシュメモリデバイス104は、要求された命令またはデータを(たとえば、解読された形式で)コアデバイス102へ送信し得る(126)。コアデバイス102は、メモリデバイス108の中の領域からの命令またはデータを求める第2の要求を送信し得る(128)。第2の要求は、RID、(たとえば、MMUによって提供される)範囲インジケータビット(RB)、および随意のDORAビットを含み得る。キャッシュメモリデバイス104は、第2の要求のRID、RB、およびDORAビットに基づいて第2の要求が許可されることを決定し得、要求された命令またはデータがキャッシュメモリデバイス104の中に記憶されているかどうかを決定し得る(130)。キャッシュメモリデバイス104は、要求された命令またはデータがキャッシュメモリデバイス104の中に記憶されているとき、第2の要求の中のRIDがキャッシュタグの中のRIDと一致するかどうかを決定し得る(132)。キャッシュメモリデバイス104は、第2の要求のRIDがキャッシュタグの中のRIDと一致するとき、要求された命令またはデータを(たとえば、解読された形式で)コアデバイス102へ送信し得る(134)。そうでなく、第2の要求のRIDがキャッシュタグの中のRIDと一致しない場合、キャッシュメモリデバイス104は、要求された命令またはデータをコアデバイス102へ送信するのを控えてよい。
【００１７】
図2は、本開示の様々な態様による、メモリデバイスにデータを書き込むための例示的な動作を示す例示的な信号フロー図200である。図2に示すように、信号フロー図200は、コアデバイス202、キャッシュメモリデバイス204、ソフトウェア保護デバイス206、およびメモリデバイス208を含む。一態様では、メモリデバイス208は、範囲210を含み得る。本開示の一態様では、範囲210は、保護(たとえば、暗号化)された命令および/またはデータを含む、メモリデバイス208の中の領域に関連する1つまたは複数のメモリページとして表され得る。一態様では、範囲210は、RIDに関連付けられ得る。
【００１８】
図2に示すように、コアデバイス202は、メモリデバイス208からの命令またはデータを求める要求を送信し得る(212)。要求は、RID、(たとえば、MMUによって提供される)範囲インジケータビット(RB)、および随意のDORAビットを含み得る。キャッシュメモリデバイス204は、RID、RB、およびDORAビットに基づいて要求が許可されることを決定し得、要求をソフトウェア保護デバイス206に転送し得る(214)。ソフトウェア保護デバイス206は、要求をメモリデバイス208に転送し得(216)、暗号化された命令またはデータをメモリデバイス208から受信し得る(218)。ソフトウェア保護デバイス206は、コアデバイス202によって送信された命令またはデータを求める要求のRIDに関連付けられている一時暗号化鍵(EEK)を用いて、命令またはデータを解読し得る(220)。ソフトウェア保護デバイス206は、解読された命令またはデータをキャッシュメモリデバイス204へ送信し得る(222)。キャッシュメモリデバイス204は、解読された命令またはデータを記憶し得、キャッシュタグの中の、命令またはデータを求める要求のRIDを記憶し得る(224)。キャッシュメモリデバイス204は、要求された命令またはデータを(たとえば、解読された形式で)コアデバイス202へ送信し得る(226)。
【００１９】
コアデバイス202は、メモリデバイス208の中の領域(たとえば、メモリページ)にデータを書き込むための要求を送信し得る(228)。要求は、RID、範囲インジケータビット(RB)、および随意のDORAビットを含み得る。キャッシュメモリデバイス204は、メモリページがキャッシュメモリデバイスにおいて記憶されているとき、メモリページに関連付けられたキャッシュタグの中のRIDが、データを書き込むための要求のRIDと一致するかどうかを決定し得る(230)。キャッシュメモリデバイス204は、データを書き込むための要求のRIDがキャッシュタグの中のRIDと一致するとき、データを書き込むための要求のRIDを含むキャッシュタグとともにキャッシュメモリデバイスにおけるメモリページの中にデータを記憶し得る(232)。キャッシュメモリデバイス204がフラッシュされるとき、キャッシュメモリデバイス204は、書き込まれるべきデータをキャッシュタグの中のRIDと一緒にソフトウェア保護デバイス206へ送信し得る(234)。ソフトウェア保護デバイス206は、RIDに関連付けられたEEKに基づいてデータを暗号化し得(236)、RIDに関連付けられた範囲の中に記憶するために、暗号化されたデータをメモリデバイス208へ送信し得る(238)。
【００２０】
図3は、本開示の様々な態様による例示的なアーキテクチャ300のブロック図である。たとえば、アーキテクチャ300は、パーソナルコンピュータ、セルフォン(ユーザ機器(UE)とも呼ばれる)、またはハンドヘルドゲーミングデバイスなどの、コンピューティングデバイスにおいて実施され得る。図3に示すように、アーキテクチャ300は、ソフトウェア保護デバイス302、メモリデバイス304、およびストレージ306を含む。さらに図3に示すように、ソフトウェア保護デバイス302は、範囲マネージャ308、鍵ストア310、およびメモリ暗号化モジュール312を含み得る。本開示の一態様では、範囲マネージャ308は、セキュアプロセッサにおけるアプリケーションとして、別個のコアデバイスとして、またはハードウェアブロックとして実装され得る。たとえば、範囲マネージャ308は、重いタスクをオフロードするために暗号コプロセッサ(crypto coprocessor)を使用し得る。本開示の一態様では、メモリデバイス304は、中央処理装置(CPU)(説明しやすいように図3に示さず)による実行のための命令をロードおよび記憶するように構成されているメインメモリとして働き得る。たとえば、メモリデバイス304は、ランダムアクセスメモリ(RAM)、キャッシュメモリデバイス、または任意の他の適切なタイプのメモリデバイスなどの、揮発性メモリデバイスであってよい。
【００２１】
本開示の一態様では、ストレージ306は、ターゲットソフトウェア318などの高価なまたは機密のソフトウェアを記憶するように構成され得る。本開示の一態様では、ターゲットソフトウェア318は、命令および/またはデータを含むプロプライエタリソフトウェアであってよい。たとえば、命令および/またはデータは、スタック、ヒープ、および/またはメタデータを含み得る。一態様では、ターゲットソフトウェア318は、ソフトウェアモジュールであってよい。本開示の一態様では、ストレージ306は、任意の適切な記憶デバイスであってよい。一例では、ストレージ306は、ローカルメモリ(たとえば、別のCPUのメモリ)であってよい。別の例では、ストレージ306は、フラッシュメモリ、組込みマルチメディアカード(eMMC)、セキュアデジタル(SD)カード、USBドライブ、光ディスク、または磁気ディスクなどの、ローカルな不揮発性記憶デバイスであってよい。別の例では、ストレージ306は、ネットワークを通じてアクセス可能なリモートストレージであってよい。
【００２２】
本開示の一態様では、ソフトウェア保護デバイス302は、ターゲットソフトウェア318(たとえば、ターゲットソフトウェア318に関連する命令および/またはデータ)などのソフトウェアを保護するように構成されたハードウェアアーキテクチャである。たとえば、ソフトウェア保護デバイス302は、デバイスにおける様々なハードウェアおよび/またはソフトウェアの制御を獲得し得る様々な攻撃者(たとえば、ハッカー)から、ターゲットソフトウェア318を保護し得る。本開示の一態様では、サードパーティの開発者が彼らのソフトウェアを保護することを可能にするために、ソフトウェア保護デバイス302の様々な機能がソフトウェア開発キット(SDK)に組み込まれてよい。ソフトウェア保護デバイス302は、ツールおよびホスト環境への実質的な影響なく実装され得る。
【００２３】
本開示の一態様では、本明細書で開示するようなソフトウェア保護デバイス(たとえば、ソフトウェア保護デバイス302)の構成は、相手先商標製造会社(OEM)の管理外であってよい。そのような態様では、ソフトウェア保護デバイスは、任意のソフトウェアをメモリデバイス304の中にインストールするためのOEMまたは他の関係者(たとえば、サードパーティのソフトウェア開発者)の能力を制限しなくてよい。ソフトウェア保護デバイスは、OEMまたはサードパーティによる特定の実行を必要としなくてよい。一態様では、ソフトウェア保護デバイス(たとえば、ソフトウェア保護デバイス302)は、スケーラブル(任意の個数のコアデバイス)であってよく、様々なタイプのコアデバイスとともに使用され得る。一態様では、アーキテクチャ300(または、以下で説明するアーキテクチャ400、600)は、メモリデバイス(たとえば、メモリデバイス304)のアクセス制御に基づくのではなく、ターゲットソフトウェア318のメモリ暗号化に基づいて、ターゲットソフトウェア318(たとえば、ターゲットソフトウェア318の命令および/またはデータ)を保護し得る。
【００２４】
メモリデバイスにおける範囲の確立
図3に示すように、ソフトウェア保護デバイス302の範囲マネージャ308は、メモリデバイス304の中に1つまたは複数の範囲(たとえば、範囲316)を生成し得る。一例では、範囲マネージャ308は、範囲確立コマンド332などのトリガに応答して、メモリデバイス304の中に範囲316を生成し得る。一例では、範囲確立コマンド332は、CPU(説明しやすいように図3に示さず)からのリモートプロシージャ呼出し(RPC:remote procedure call)として実施され得る。別の例では、範囲確立コマンド332は、範囲マネージャ308のためのスタートアップシーケンスのコマンドであってよい。範囲確立コマンド332は、情報の様々な項目を含み得る。本開示の一態様では、範囲確立コマンド332は、ストレージ306の中でのターゲットソフトウェア318のロケーション(たとえば、メモリアドレス)、メモリデバイス304の中での範囲316のロケーション(たとえば、メモリアドレス)、ならびに/あるいはターゲットソフトウェア318の命令および/またはデータに適用される任意の暗号保護を検証および/または除去するために使用され得る1つまたは複数の鍵のロケーションを含み得る。
【００２５】
範囲確立コマンド332の受信に応答して、範囲マネージャ308は、範囲316用の範囲識別子(RID)および範囲316用の一時暗号化鍵(EEK)を生成し得る。一態様では、EEKは、範囲316がメモリデバイス304の中に維持されている間に存在する一時的または過渡的な暗号化鍵である。本開示の一態様では、RIDおよびEEKは、範囲316に固有であってよく、メモリデバイス304の中に確立され得るいかなる他の範囲にも関連付けられなくてよい。本開示の一態様では、範囲マネージャ308は、専用インターフェース324を通じて鍵ストア310の中に(たとえば、RID/EEKペア314として図3に示す)RIDおよび対応するEEKを記憶し得る。本開示の一態様では、RIDはソフトウェア保護デバイス302の外部のエンティティに開示され得るが、EEKはソフトウェア保護デバイス302の外部のいかなるエンティティにも知られていなくてよい。本開示の一態様では、RID、EEK、およびそれらの関連付けは、ソフトウェア保護デバイス302内で変更され得、ソフトウェア保護デバイス302の外部のいかなるエンティティによっても変更され得ない。
【００２６】
図3に示すように、範囲マネージャ308は、ターゲットソフトウェア318の命令および/またはデータのうちの全部または少なくとも一部を、ストレージ306から送信320を通じて取得し得る。本開示の一態様では、送信320が読取り動作に応答して範囲マネージャ308によって受信され得る場合、範囲マネージャ308は、ストレージ306の中でのターゲットソフトウェア318のロケーション(たとえば、メモリアドレス)を読み取ることによって、ターゲットソフトウェア318の命令および/またはデータのうちの全部または少なくとも一部を取得し得る。本開示の一態様では、ストレージ306の中に記憶されているターゲットソフトウェア318は保護され得る。一例では、ストレージ306がセキュアストレージ(たとえば、オンチップストレージ、インパッケージストレージなど)として構成され得る場合、ターゲットソフトウェア318は、平文形式であってよく物理的に保護され得る。別の例では、ターゲットソフトウェア318は、暗号で保護(たとえば、暗号化および/または認証)され得る。そのような例では、範囲マネージャ308は、ターゲットソフトウェア318を含むファイルをストレージ306から取得し得、暗号保護をターゲットソフトウェア318に適用するために使用される1つまたは複数の鍵(たとえば、1つまたは複数の永続的な鍵)にアクセスし得る。範囲マネージャ308は、引き続き、1つまたは複数の鍵を使用して暗号保護を検証および/または除去(たとえば、解読)し得る。暗号保護が除去された後、範囲マネージャ308は、次いで、RID/EEKペア314のEEKを使用してターゲットソフトウェア318の命令および/またはデータを暗号化し得、ターゲットソフトウェア318の暗号化された命令および/またはデータをメモリデバイス304の範囲316の中に記憶し得る。
【００２７】
一例では、範囲マネージャ308は、範囲マネージャ308内に暗号化機能を実装すること、および範囲マネージャ308とメモリデバイス304との間の直接インターフェース322を実装することによって、ターゲットソフトウェア318の命令および/またはデータの暗号化を達成し得る。別の例では、範囲マネージャ308は、インターフェース330を介してソフトウェア保護デバイス302のメモリ暗号化モジュール312を実装することによって、ターゲットソフトウェア318の命令および/またはデータの暗号化を達成し得る。そのような例では、範囲マネージャ308は、範囲316に関連付けられたRIDをメモリ暗号化モジュール312に提供し得る。メモリ暗号化モジュール312は、RIDに関連付けられたEEKを、専用インターフェース326を介して鍵ストア310から取り出し得る。メモリ暗号化モジュール312は、引き続き、ターゲットソフトウェア318の命令および/またはデータを暗号化し得、メモリデバイス304の範囲316の中に記憶するために、暗号化された命令および/またはデータ328を送信し得る。範囲316の中のターゲットソフトウェア318の暗号化された形式(たとえば、ターゲットソフトウェア318の命令および/またはデータの暗号化された形式)が、コアデバイス(図3に示さず)がターゲットソフトウェア318を実行可能であるのを阻止することを理解されたい。
【００２８】
本開示の一態様では、EEKに基づいてターゲットソフトウェア318を暗号化するために使用される暗号化方式は、物理アドレス依存であってよい。そのような態様では、範囲316が第1の物理アドレスから第2の物理アドレスへメモリデバイス304の中で後で再配置される場合、範囲マネージャ308は、RID/EEKペア314のEEKおよび第1の物理アドレスを使用して、範囲316の内容の解読を開始してよい。範囲マネージャ308は、次いで、RID/EEKペア314のEEKおよび第2の物理アドレスを使用して、範囲316の内容の再暗号化を開始し得る。本開示の一態様では、RID/EEKペア314のEEKは、EEKを用いて保護されている範囲(たとえば、範囲316)のメモリページの中の命令が、コアデバイス(たとえば、以下で説明するコアデバイス402)によって実行されつつある期間の間に有効であって(たとえば、存在して)よく、範囲のメモリページの中の命令が実行された後、EEKはもはや有効でなくて(たとえば、削除されて)よい。
【００２９】
第1の例示的なアーキテクチャにおける範囲の実行
図4は、本開示の様々な態様による例示的なアーキテクチャ400のブロック図である。たとえば、アーキテクチャ400は、パーソナルコンピュータ、セルフォン(ユーザ機器とも呼ばれる)、またはハンドヘルドゲーミングデバイスなどの、コンピューティングデバイスにおいて実施され得る。図4に示すように、アーキテクチャ400は、コアデバイス402、メモリ管理ユニット(MMU)406、ソフトウェア保護デバイス408、およびメモリデバイス410を含む。たとえば、コアデバイス402は、中央処理装置(CPU)404におけるプロセッサであってよい。一態様では、ソフトウェア保護デバイス408は、範囲マネージャ412、鍵ストア414、およびメモリ暗号化モジュール416を含み得る。他の態様では、MMU406は、CPU404の中に含まれ得る。本開示の一態様では、図4におけるソフトウェア保護デバイス408、メモリデバイス410、範囲マネージャ412、鍵ストア414、およびメモリ暗号化モジュール416は、それぞれ、図3におけるソフトウェア保護デバイス302、メモリデバイス304、範囲マネージャ308、鍵ストア310、およびメモリ暗号化モジュール312に相当し得る。
【００３０】
範囲実行のためのコアデバイス動作
本開示の一態様では、コアデバイス402は、メモリコマンドをMMU406へ送信することによって、メモリデバイス410に対するメモリトランザクションを開始し得る。一例では、メモリコマンドは、メモリデバイス410からデータを読み取るためのデータ読取りトランザクションを実行するように構成され得るか、またはメモリデバイス410にデータを書き込むためのデータ書込みトランザクションを実行するように構成され得る。別の例では、メモリコマンドは、メモリデバイス410から命令をフェッチするための命令フェッチトランザクション(命令読取りトランザクションとも呼ばれる)を実行するように構成され得る。
【００３１】
本開示の一態様では、範囲428が確立されるとともに、ターゲットソフトウェア318の暗号化された命令および/またはデータが前に説明した方法で範囲428の中に記憶された後、コアデバイス402は、範囲428からデータを読み取り、範囲428にデータを書き込み、または範囲428から命令をフェッチするために範囲428に入り得る。したがって、そのような態様では、コアデバイス402は、範囲428に対応するRIDを参照することによって範囲428に入るための命令をサポートし得る。コアデバイス402は、範囲428から出るための命令をさらにサポートし得る。本開示の一態様では、コアデバイス402は、RIDを記憶するように構成されているRIDレジスタ418を含み得る。RIDレジスタ418は、いかなるソフトウェアにも見えなくてよい。一例では、RIDレジスタ418は、0値または他の特殊値がRIDレジスタ418の中に記憶されているとき、範囲が参照または識別されていないことを示し得る。たとえば、範囲428に入るための命令は、RIDレジスタ418の中の範囲428に対応するRID値を設定し得、範囲428の冒頭へのジャンプを許可し得る。本開示の一態様では、範囲から出るための命令は、メモリデバイス410の中の前の(たとえば、範囲428に入る前の)状態を復元し得る。そのような例では、コアデバイス402が、RIDレジスタ418の中の範囲428に対応するRID値をクリアし得る。
【００３２】
本開示の一態様では、コアデバイス402とメモリデバイス410との間の各メモリトランザクションは、RIDレジスタ418の中に現在記憶されているRID、メモリトランザクションのタイプ、および随意の制御ビットを含むようにタグ付けされ得る。たとえば、RIDレジスタ418の中に現在記憶されているRIDは、範囲428に関連付けられた固有の2値ストリングであってよい。たとえば、メモリトランザクションのタイプ(たとえば、データまたは命令)は、単一のビットを使用して示されてよい。そのような例では、値「1」がデータ読取り/書込みトランザクションを示してよく、値「0」が命令フェッチトランザクションを示してよい。本開示の一態様では、RIDレジスタ418の中に現在記憶されているRID、および随意の制御ビットは、信用できないソフトウェアによる改変に対して保護される。1つのシナリオでは、たとえば、コアデバイス402が範囲428に入るための命令を実行し、かつRIDレジスタ418が範囲428に対応するRIDを含むとき、コアデバイス402とメモリデバイス410との間のメモリトランザクション(たとえば、データ読取り/書込みトランザクションまたは命令フェッチトランザクション)は、RIDレジスタ418の中のRIDおよび随意の制御ビットを含むようにタグ付けされ得る。随意の制御ビットは、範囲428の外側であるメモリデバイス410の領域(メモリデバイス410の非範囲領域とも呼ばれる)からデータを読み取り、またはそうした領域にデータを書き込むための、メモリトランザクションを許可または阻止し得る。たとえば、コアデバイス402は、メモリデバイス410の非範囲領域への制限付きアクセスを許可または阻止するように随意の制御ビットを構成し得る。一態様では、そのような制限付きアクセスは、メモリデバイス410の非範囲領域からのデータの読取りまたは書込みを可能にしてよいが命令をフェッチすることを可能にしなくてよい。随意の制御ビットは、本明細書では、「許可範囲外データ」(DORA)ビット456とも呼ばれる。本開示の一態様では、DORAビット456は、いかなるソフトウェアにも見えなくてよい。たとえば、コアデバイス402は、DORAビット456を一時的に有効化すること(たとえば、DORAビット456を「1」に設定すること)によって、メモリデバイス410の非範囲領域から読み取るためのメモリトランザクションを許可し得る。別の例では、コアデバイス402は、DORAビット456を一時的に無効化すること(たとえば、DORAビット456を「0」に設定すること)によって、メモリデバイス410の非範囲領域から読み取るためのメモリトランザクションを阻止し得る。本開示の一態様では、メモリデバイス410の非範囲領域(非範囲ページとも呼ばれる)からデータを読み取るかまたはそうした非範囲領域にデータを書き込むためのメモリトランザクションを許可するようにDORAビット456が有効化(たとえば、「1」に設定)されるとき、メモリデバイス410の非範囲領域からの命令の読取りは許可されなくてよい。メモリトランザクションを開始するために、コアデバイス402は、RIDレジスタ418の中のRID、メモリトランザクションのタイプ(たとえば、データまたは命令)、および随意のDORAビット456を、(たとえば、データ読取り/書込みトランザクションまたは命令フェッチトランザクションを開始するための)メモリコマンドの中に含めてよく、そのメモリコマンドをMMU406へ送信してよい���
【００３３】
範囲実行のためのメモリ管理ユニット(MMU)動作
本開示の様々な態様によれば、MMU406は、アドレス変換の単一のステージまたはアドレス変換の複数のステージのために構成され得る。図4に示す例示的な構成では、MMU406は、第1のアドレス変換ステージ(MMUステージ1 420とも呼ばれる)および第2のアドレス変換ステージ(MMUステージ2 422とも呼ばれる)などの、アドレス変換の複数のステージを含む。一例では、MMUステージ1 420は、仮想メモリアドレスを中間的な物理メモリアドレスに変換するように構成され得る。したがって、MMUステージ1 420は、メモリページテーブル(たとえば、仮想アドレスと中間的なアドレスとの間のマッピング)を保有し得、範囲に属するメモリページの中に範囲インジケータビット(RB)424を含め得る。たとえば、メモリデバイス410の中の範囲に対応する各メモリページは、RB424を使用して「範囲ページ」としてマークされ得る。したがって、RB424は、メモリページが範囲428に属するかどうかをMMU406が識別することを可能にし得る。MMUステージ2 422は、中間的な物理メモリアドレスをメモリデバイス410の物理メモリアドレスに変換するように構成され得る。したがって、MMUステージ2 422は、メモリページテーブル(たとえば、中間的なアドレスと物理アドレスとの間のマッピング)を保有し得、範囲に属するメモリページの中に範囲インジケータビット(RB)426を含め得る。たとえば、メモリデバイス410の中の範囲に対応する各メモリページは、RB426を使用して「範囲ページ」としてマークされ得る。したがって、RB426は、メモリページが範囲428に属するかどうかをMMU406が識別することを可能にし得る。したがって、それに対してRB424またはRB426が有効化されている(たとえば、RB424またはRB426が「1」に設定されている)任意のメモリページは、範囲428に属するメモリページであるものと見なされてよい。本開示の一態様では、オペレーティングシステム(OS)436が仮想メモリアドレスから中間的な物理メモリアドレスへのマッピングを制御し得(458)、仮想メモリモニタ(VMM)438が中間的な物理アドレスから物理メモリアドレスへのマッピングを制御し得る(460)。他の態様ではMMU406がアドレス変換の3つ以上のステージを含んでよいことを理解されたい。
【００３４】
図4に示すように、MMU406は、命令キャッシュメモリデバイス(Iキャッシュ)432およびデータキャッシュメモリデバイス(Dキャッシュ)434に結合されている。さらに図4に示すように、命令キャッシュメモリデバイス432およびデータキャッシュメモリデバイス434は、ソフトウェア保護デバイス408に結合されている。図4の構成では、ソフトウェア保護デバイス408のメモリ暗号化モジュール416によって実行される暗号化/解読動作に介入することなく、MMU406が命令フロー442を介して命令キャッシュメモリデバイス432と通信し得ることに留意されたい。MMU406はまた、ソフトウェア保護デバイス408のメモリ暗号化モジュール416によって実行される暗号化/解読動作に介入することなく、データフロー448を介してデータキャッシュメモリデバイス434と通信し得る。
【００３５】
本開示の一態様では、MMU406は、メモリトランザクション(たとえば、データ読取り/書込みトランザクションまたは命令フェッチトランザクションを開始するためのメモリコマンド)をコアデバイス402から受信し得る。メモリトランザクションは、メモリデバイス410に関連するメモリトランザクションアドレス(たとえば、データもしくは命令がそこから読み取られるべき、またはデータがそこに書き込まれるべき、メモリアドレス)を含み得る。MMU406は、メモリトランザクションアドレスに対応するメモリページを決定し得、メモリページに対する範囲インジケータビット(たとえば、RB424またはRB426)の値(たとえば、「0」または「1」)を決定し得る。MMU406は、コアデバイス402から受信されたメモリトランザクションに範囲インジケータビットの値を含めてよく、メモリトランザクションをキャッシュメモリデバイスに、RID418(たとえば、RIDレジスタ418の中に現在記憶されている値)、随意のDORAビット456、および範囲インジケータビットの値と一緒に転送し得る。一例では、MMU406は、メモリトランザクションが命令フェッチトランザクションであることを決定し得、(RID418、随意のDORAビット456、および範囲インジケータビットの値を含む)そのようなメモリトランザクションを命令フロー442を介して命令キャッシュメモリデバイス432に転送し得る。別の例では、MMU406は、メモリトランザクションがデータトランザクション(たとえば、データ読取りまたはデータ書込みトランザクション)であることを決定し得、(RID418、随意のDORAビット456、および範囲インジケータビットの値を含む)メモリトランザクションをデータフロー448を介してデータキャッシュメモリデバイス434に転送し得る。一態様では、MMU406は、メモリトランザクションにおけるRID418および随意のDORAビット456を変換および/または変更しないことがある。
【００３６】
一態様では、メモリページに対する範囲インジケータビット(たとえば、RB424またはRB426)が有効化されていない(たとえば、RB424またはRB426が「0」に設定されている)とき、MMU406は、メモリトランザクションに含まれるRIDが範囲を示すかどうかをチェックしてよい。たとえば、MMU406は、RIDが0でないとき、またはRIDが範囲を示さない所定の特殊値でないとき、メモリトランザクションに含まれるRIDが範囲を示すことを決定し得る。この態様では、メモリページに対する範囲インジケータビットが有効化されておらず、かつメモリトランザクションに含まれるRIDが範囲を示す場合、MMU406は失敗してよく、またはコアデバイス402を範囲428の外へ強制(たとえば、範囲428をやめるようにコアデバイス402を強制)してよい。本開示の一態様では、範囲428は、1つまたは複数の追加のメモリページに対する範囲インジケータビット(たとえば、RB424またはRB426)を設定することによって拡張され得る。一態様では、範囲インジケータビットが操作される場合(たとえば、信用できないエンティティまたはソフトウェアによって、RB424またはRB426の値がメモリページに対して変更される場合)、範囲428から読み取られる任意のデータおよび/または命令は、コアデバイス402による処理を阻止する形式(たとえば、暗号化された形式)をなす。
【００３７】
範囲実行のためのキャッシュメモリデバイス動作
図4の態様では、MMU406は、命令キャッシュメモリデバイス(Iキャッシュ)432およびデータキャッシュメモリデバイス(Dキャッシュ)434に結合されている。たとえば、コアデバイス402は、命令キャッシュメモリデバイス432から命令をフェッチし得、データキャッシュメモリデバイス434からデータを読み取り(または、データキャッシュメモリデバイス434にデータを書き込み)得る。図4に示すように、命令キャッシュメモリデバイス432およびデータキャッシュメモリデバイス434は、ソフトウェア保護デバイス408に結合されている。本開示の一態様では、命令キャッシュメモリデバイス432およびデータキャッシュメモリデバイス434は、レベル1(L1)キャッシュと呼ばれることがある。そのような態様では、図4におけるソフトウェア保護デバイス408は、L1キャッシュの後に位置すると言われてよい。他の態様では、ソフトウェア保護デバイス408は、レベル2(L2)キャッシュとレベル3(L3)キャッシュとの間に位置し得る。また他の態様では、ソフトウェア保護デバイス408は、L3キャッシュ(または、メモリデバイス410の前の最後のキャッシュレベル)とメモリデバイス410との間に位置し得る。命令キャッシュメモリデバイス(たとえば、命令キャッシュメモリデバイス(Iキャッシュ)432)およびデータキャッシュメモリデバイス(たとえば、データキャッシュメモリデバイス(Dキャッシュ)434)に関して本明細書で説明する態様が、データと命令の両方を記憶するように構成された単一のキャッシュメモリデバイス(統合型キャッシュメモリデバイスとも呼ばれる)に適用され得ることを理解されたい。
【００３８】
本開示の一態様では、また本明細書で詳細に説明されるように、命令キャッシュメモリデバイス432は、メモリデバイス410からフェッチされた命令と、フェッチされた命令の対応するメモリロケーション(たとえば、メモリデバイス410の中の領域に対応するメモリページ)とを記憶し得る。たとえば、命令キャッシュメモリデバイス432の中に記憶されている命令は、前の命令フェッチメモリトランザクションの結果としての、コアデバイス402によって前に要求された命令であり得る。
【００３９】
本開示の別の態様では、また本明細書で詳細に説明されるように、データキャッシュメモリデバイス434は、メモリデバイス410から読み取られたデータと、読み取られたデータの対応するメモリロケーション(たとえば、メモリデバイス410の中の領域に対応するメモリページ)とを記憶し得る。たとえば、データキャッシュメモリデバイス434の中に記憶されているデータは、前のデータ読取りメモリトランザクションの結果としての、コアデバイス402によって前に要求されたデータであり得る。データキャッシュメモリデバイス434は、メモリデバイス410に書き込まれるべきデータと、データが書き込まれるべき対応するメモリロケーション(たとえば、メモリデバイス410の中の領域に対応するメモリページ)とをさらに記憶し得る。たとえば、データキャッシュメモリデバイス434の中に記憶されているデータは、前のデータ読取り(または、データ書込み)メモリトランザクションの結果としての、コアデバイス402によって前に送信されたデータであり得る。
【００４０】
i)メモリトランザクションを許可または拒否するための決定
本開示の一態様では、キャッシュメモリデバイス(たとえば、命令キャッシュメモリデバイス432またはデータキャッシュメモリデバイス434)がメモリトランザクションを受信すると、キャッシュメモリデバイスは、メモリトランザクションを許可すべきかそれとも拒否すべきかを決定し得る。たとえば、メモリトランザクションは、コアデバイス402によってメモリデバイス410に対して開始される命令フェッチトランザクションまたはデータ読取り/書込みトランザクションであってよい。メモリトランザクションを許可すべきかそれとも拒否すべきかを決定するためのキャッシュメモリデバイスの動作が、図5の例示的なフロー図500に関して説明される。したがって、図5を参照すると、キャッシュメモリデバイスがメモリトランザクションを受信すると、キャッシュメモリデバイスは、メモリトランザクションに含まれるRID(たとえば、RIDレジスタ418の中に現在記憶されている値)、メモリトランザクションに含まれる範囲インジケータビット(たとえば、RB424またはRB426)、およびメモリトランザクションに含まれる随意のDORAビット(たとえば、DORAビット456)を識別し得る(502)。キャッシュメモリデバイスは、RIDが0または範囲を示さない所定の特殊値であるかどうかを決定し得る(504)。RIDが0または範囲を示さない所定の特殊値である場合、キャッシュメモリデバイスはメモリトランザクションを許可し得る(506)。そうでなく、RIDが0または所定の特殊値でない場合、キャッシュメモリデバイスは、範囲インジケータビットが有効化されているかどうか(たとえば、範囲インジケータビットが「1」に設定されているかどうか)を決定し得る(508)。範囲インジケータビットが有効化されている場合、キャッシュメモリデバイスはメモリトランザクションを許可し得る(506)。そうでなく、範囲インジケータビットが有効化されていない場合、キャッシュメモリデバイスは、メモリトランザクションがデータ読取りトランザクションまたはデータ書込みトランザクションであるかどうかを決定し得る(510)。メモリトランザクションがデータ読取りトランザクションまたはデータ書込みトランザクションでない場合(たとえば、メモリトランザクションが命令フェッチトランザクションである場合)、キャッシュメモリデバイスは、メモリトランザクションを拒否し得る(512)。メモリトランザクションがデータ読取りトランザクションまたはデータ書込みトランザクションである場合、キャッシュメモリデバイスは、DORAビットが有効化されているかどうか(たとえば、DORAビットが「1」に設定されているかどうか)を決定し得る(514)。キャッシュメモリデバイスは、DORAビットが有効化されているときはメモリトランザクションを許可し得(506)、またはDORAビットが有効化されていないときはメモリトランザクションを拒否し得る(512)。本開示の他の態様では、図5の例示的なフロー図500に関して説明するメモリトランザクションを許可すべきかそれとも拒否すべきかという決定は、MMU406または他の適切なエンティティもしくはデバイスによって実行され得る。
【００４１】
ii)範囲モードにおけるデータ読取り動作
本開示の一態様では、データキャッシュメモリデバイス434は、データ読取りトランザクションを受信し得、データ読取りトランザクションが許可されることを決定し得る。データキャッシュメモリデバイス434は、次いで、そのようなデータ読取りトランザクションにおけるRIDが範囲を示すかどうか(たとえば、RIDが0または範囲を示さない所定の特殊値でないとき、RIDは範囲を示すものと決定され得る)、およびデータ読取りトランザクションにおける範囲インジケータビットが有効化されていないかどうか(たとえば、範囲インジケータビットが「0」に設定されているとき、範囲インジケータビットは有効化され得ない)を決定し得る。データ読取りトランザクションにおけるRIDが範囲を示し、かつ範囲インジケータビットが有効化されていない場合、データキャッシュメモリデバイス434は、後続の任意の動作に対してデータ読取りトランザクションにおけるRIDを0として(または、所定の特殊値として)定義し得る。データ読取りトランザクションにおけるRIDが範囲を示し、かつ範囲インジケータビットが有効化されていないときに、データ読取りトランザクションが許可されるために、データ読取りトランザクションにおけるDORAビットが有効化される必要があることに留意されたい。
【００４２】
データキャッシュメモリデバイス434は、引き続き、データ読取りトランザクションにおいて要求されたデータが、データキャッシュメモリデバイス434の中に現在記憶されているかどうかを決定し得る。たとえば、データキャッシュメモリデバイス434は、データ読取りトランザクションにおいて示されるメモリロケーション(たとえば、メモリデバイス410の中の領域に対応するメモリページまたはアドレス)が、メモリデバイス410から前に受信されておりデータキャッシュメモリデバイス434において記憶されているかどうかをチェックしてよい。データ読取りトランザクションにおいて要求されたデータがデータキャッシュメモリデバイス434の中に現在記憶されていない場合、キャッシュミスが発生し得、データキャッシュメモリデバイス434は、データ読取りトランザクションをソフトウェア保護デバイス408に転送してよい。ソフトウェア保護デバイス408は、(たとえば、RIDを含む)データ読取りトランザクションを受信し得、データ読取りトランザクションをメモリデバイス410に転送し得る。メモリデバイス410は、データ読取りトランザクションによって要求されたデータをソフトウェア保護デバイス408に提供し得る。
【００４３】
一態様では、メモリデバイス410によってソフトウェア保護デバイス408に提供されるデータが、データ読取りトランザクションにおけるRIDに関連付けられた範囲(たとえば、範囲428)からのものである場合、ソフトウェア保護デバイス408に提供されるそのようなデータは暗号化された形式をなしている。したがって、ソフトウェア保護デバイス408は、引き続き、データ読取りトランザクションにおいてRIDに関連付けられたEEK(たとえば、RID/EEKペア430のEEK)を用いて、メモリデバイス410から受信されたデータを解読し得る。ソフトウェア保護デバイス408は、解読されたデータをデータフロー450を介してRID(たとえば、範囲428のRID)と一緒にデータキャッシュメモリデバイス434に提供し得る。一態様では、データキャッシュメモリデバイス434は、解読されたデータを、解読されたデータに関連するメモリロケーションを含むキャッシュタグとともに記憶し得る。一態様では、キャッシュタグは、範囲タグ464などの、RIDを示す範囲タグ(Rtag)を含むように構成され得る。データキャッシュメモリデバイス434は、次いで、解読されたデータをデータフロー448、440を介してコアデバイス402へ送信し得る。
【００４４】
別の態様では、メモリデバイス410によってソフトウェア保護デバイス408に提供されるデータが、範囲428の外側からのものである場合(たとえば、RIDが0または範囲を示さない特殊値として定義されており、範囲インジケータビットが有効化されておらず、かつDORAビットがデータ読取りトランザクションにおいて有効化されているとき)、ソフトウェア保護デバイス408に提供されるそのようなデータは暗号化された形式をなさない。ソフトウェア保護デバイス408は、データフロー450を介してRID(たとえば、RIDが今は0または範囲を示さない特殊値として定義される)と一緒にデータキャッシュメモリデバイス434にデータを提供し得る。一態様では、データキャッシュメモリデバイス434は、データに関連するメモリロケーションを含むキャッシュタグとともにデータを記憶し得る。一態様では、キャッシュタグは、範囲タグ464などの、RIDを示す範囲タグ(Rtag)を含むように構成され得る。データキャッシュメモリデバイス434は、次いで、データフロー448、440を介してコアデバイス402へデータを送信し得る。
【００４５】
データ読取りトランザクションにおいて要求されたデータがデータキャッシュメモリデバイス434の中に現在記憶されている(たとえば、データキャッシュメモリデバイス434が、要求されたデータを含むキャッシュラインを配置する)ことをデータキャッシュメモリデバイス434が決定する場合、データキャッシュメモリデバイス434は、データ読取りトランザクションにおけるRIDが、要求されたデータを含むキャッシュラインに関連付けられたRID(たとえば、範囲タグ464の中のRID)と一致するかどうかを決定し得る。データ読取りトランザクションにおけるRIDが、要求されたデータを含むキャッシュラインにおけるRIDと一致する場合、データキャッシュメモリデバイス434は、要求されたデータをコアデバイス402へ送信し得る。そうでなく、データ読取りトランザクションにおけるRIDが、要求されたデータを含むキャッシュラインに関連付けられたRID(たとえば、範囲タグ464の中のRID)と一致しない場合、データキャッシュメモリデバイス434は、要求されたデータをコアデバイス402へ送信するのを控えてよい。さらに、一態様では、コアデバイス402は、データ読取りトランザクションを失敗したメモリトランザクションであるものと見なしてよく、範囲428から出てよい。
【００４６】
iii)範囲モードにおける命令フェッチ動作
本開示の一態様では、命令キャッシュメモリデバイス432は、命令フェッチトランザクションを受信し得、命令フェッチトランザクションが許可されることを決定し得る。命令キャッシュメモリデバイス432は、引き続き、命令フェッチトランザクションにおいて要求された命令が命令キャッシュメモリデバイス432の中に現在記憶されているかどうかを決定し得る。たとえば、命令キャッシュメモリデバイス432は、命令フェッチトランザクションにおいて示されるメモリロケーション(たとえば、メモリデバイス410の中の領域に対応するメモリページまたはアドレス)が、メモリデバイス410から前に受信されており命令キャッシュメモリデバイス432の中に記憶されているかどうかをチェックしてよい。命令フェッチトランザクションにおいて要求された命令が命令キャッシュメモリデバイス432の中に現在記憶されていない場合、キャッシュミスが発生し得、命令キャッシュメモリデバイス432は、命令フェッチトランザクションをソフトウェア保護デバイス408に転送してよい。ソフトウェア保護デバイス408は、(たとえば、RIDを含む)命令フェッチトランザクションを受信し得、命令フェッチトランザクションをメモリデバイス410に転送し得る。メモリデバイス410は、命令フェッチトランザクションによって要求された命令をソフトウェア保護デバイス408に提供し得る。
【００４７】
メモリデバイス410によってソフトウェア保護デバイス408に提供される命令が、命令フェッチトランザクションにおけるRIDに関連付けられた範囲(たとえば、範囲428)からのものである場合、ソフトウェア保護デバイス408に提供されるそのような命令が暗号化された形式をなすことに留意されたい。したがって、ソフトウェア保護デバイス408は、引き続き、命令フェッチトランザクションにおけるRIDに関連付けられたEEKを用いて、メモリデバイス410から受信された命令を解読し得る。ソフトウェア保護デバイス408は、解読された命令を命令フロー444を介してRID(たとえば、範囲428のRID)と一緒に命令キャッシュメモリデバイス432に提供し得る。一態様では、命令キャッシュメモリデバイス432は、解読された命令を、解読された命令に関連するメモリロケーションを含むキャッシュタグとともに記憶し得る。一態様では、キャッシュタグは、RIDを含む範囲タグ(たとえば、範囲タグ462)を含むように構成され得る。命令キャッシュメモリデバイス432は、次いで、解読された命令を命令フロー442、440を介してコアデバイス402へ送信し得る。
【００４８】
命令フェッチトランザクションにおいて要求された命令が命令キャッシュメモリデバイス432の中に現在記憶されている(たとえば、命令キャッシュメモリデバイス432が、要求された命令を含むキャッシュラインを配置する)ことを命令キャッシュメモリデバイス432が決定する場合、命令キャッシュメモリデバイス432は、命令フェッチトランザクションにおけるRIDが、要求された命令を含むキャッシュラインに関連付けられたRID(たとえば、範囲タグ462の中のRID)と一致するかどうかを決定し得る。データフェッチトランザクションにおけるRIDが、要求された命令を含むキャッシュラインに関連付けられたRIDと一致する場合、命令キャッシュメモリデバイス432は、要求された命令をコアデバイス402へ送信し得る。そうでなく、命令フェッチトランザクションにおけるRIDが、要求された命令を含むキャッシュラインに関連付けられたRID(たとえば、範囲タグ462の中のRID)と一致しない場合、命令キャッシュメモリデバイス432は、要求されたデータをコアデバイス402へ送信するのを控えてよい。さらに、一態様では、コアデバイス402は、命令フェッチトランザクションを失敗したメモリトランザクションであるものと見なしてよく、範囲428から出てよい。
【００４９】
iv)範囲モードにおけるデータ書込み動作
本開示の一態様では、データキャッシュメモリデバイス434は、データ書込みトランザクションを受信し得、データ書込みトランザクションが許可されることを決定し得る。データキャッシュメモリデバイス434は、次いで、そのようなデータ書込みトランザクションにおけるRIDが範囲を示すかどうか(たとえば、RIDが0または範囲を示さない所定の特殊値でないとき、RIDは範囲を示すものと決定され得る)、およびデータ書込みトランザクションにおける範囲インジケータビットが有効化されていない(たとえば、範囲インジケータビットが「0」に設定されている)かどうかを決定し得る。データ書込みトランザクションにおけるRIDが範囲を示し、かつ範囲インジケータビットが有効化されていない場合、データキャッシュメモリデバイス434は、後続の任意の動作に対してデータ書込みトランザクションにおけるRIDを0として(または、所定の特殊値として)定義し得る。データ書込みトランザクションにおけるRIDが範囲を示し、かつ範囲インジケータビットが有効化されていないときに、データ書込みトランザクションが許可されるために、データ書込みトランザクションにおけるDORAビットが有効化される必要があることに留意されたい。
【００５０】
データキャッシュメモリデバイス434は、引き続き、データが書き込まれるべきメモリデバイス410のメモリロケーションが、データキャッシュメモリデバイス434の中に現在記憶されているかどうかを決定し得る。たとえば、データキャッシュメモリデバイス434は、データ書込みトランザクションにおいて示されるメモリロケーション(たとえば、メモリデバイス410の中の領域に対応するメモリページまたはアドレス)が、データキャッシュメモリデバイス434の中に前に記憶されたかどうかをチェックしてよい。データが書き込まれるべきメモリロケーションがデータキャッシュメモリデバイス434の中に現在記憶されていない場合、キャッシュミスが発生し得、データキャッシュメモリデバイス434は引き続きデータを記憶してよい。一例では、データキャッシュメモリデバイス434は、データが書き込まれるべきメモリロケーションおよびRIDを示す範囲タグ(たとえば、範囲タグ464)を示す情報と一緒に、メモリデバイス410に書き込まれるべきデータをキャッシュラインの中に記憶し得る。
【００５１】
データキャッシュメモリデバイス434のキャッシュラインがフラッシュされるとき、データキャッシュメモリデバイス434は、データが書き込まれるべきメモリロケーションおよびキャッシュラインに関連付けられた範囲タグ(たとえば、範囲タグ464)の中のRIDと一緒に、キャッシュラインのデータをデータフロー450を介してソフトウェア保護デバイス408へ送信し得る。一態様では、範囲タグ(たとえば、範囲タグ464)の中のRIDが範囲を示す(たとえば、RIDが0または範囲を示さない所定の特殊値でない)場合、ソフトウェア保護デバイス408は、RIDに関連付けられたEEKを鍵ストア414から取得し得、EEKを用いてデータを(たとえば、メモリ暗号化モジュール416を実施することによって)暗号化し得る。ソフトウェア保護デバイス408は、次いで、暗号化されたデータを、メモリデバイス410の範囲428の中に(たとえば、コアデバイス402によって要求されるような範囲428に対応するメモリロケーションの中に)記憶し得る。別の態様では、範囲タグ(たとえば、範囲タグ464)の中のRIDが範囲を示さない(たとえば、RIDが0または範囲を示さない所定の特殊値である)場合、ソフトウェア保護デバイス408は、データを暗号化しなくてよい。そのような態様では、ソフトウェア保護デバイス408は、次いで、範囲428の外側である、メモリデバイス410のメモリロケーションの中にデータを記憶し得る。
【００５２】
データが書き込まれるべきメモリロケーションがデータキャッシュメモリデバイス434の中に現在記憶されている(たとえば、データキャッシュメモリデバイス434が、データが書き込まれるべきメモリロケーションに関連するキャッシュラインを配置する)ことをデータキャッシュメモリデバイス434が決定する場合、データキャッシュメモリデバイス434は、データ書込みトランザクションにおけるRIDが、配置されたキャッシュラインに関連付けられたRID(たとえば、範囲タグ464の中のRID)と一致するかどうかを決定し得る。データ書込みトランザクションにおけるRIDが、データキャッシュメモリデバイス434の中のキャッシュラインに関連付けられたRID(たとえば、範囲タグ464の中のRID)と一致する場合、データキャッシュメモリデバイス434は、データを記憶し得、範囲タグの中のデータ書込みトランザクションのRIDをさらに記憶し得る。そうでなく、データ書込みトランザクションにおけるRIDが、データキャッシュメモリデバイス434の中のキャッシュラインに関連付けられたRID(たとえば、範囲タグ464の中のRID)と一致しない場合、データキャッシュメモリデバイス434は、メモリデバイス410に書き込まれるべきデータを記憶するのを控えてよい。さらに、一態様では、コアデバイス402は、データ書込みトランザクションを失敗したメモリトランザクションであるものと見なしてよく、範囲428から出てよい。したがって、いくつかの態様によれば、データキャッシュメモリデバイス434においてすでに記憶されており、範囲タグ(たとえば、範囲タグ464)の中のRIDがデータ書込みトランザクションのRIDと異なるメモリロケーションにデータを書き込むために、データキャッシュメモリデバイス434の中の現在のキャッシュラインは、書込み動作の前にフラッシュされるべきである。
【００５３】
キャッシュラインのスヌーピング
1つの例示的なシナリオでは、コアデバイス402が、メモリデバイス410に関連するメモリロケーションからのデータを要求するとき、コアデバイス402のデータキャッシュメモリデバイス434(ローカルデータキャッシュとも呼ばれる)は、メモリロケーションがデータキャッシュメモリデバイス434によって記憶されていないことを決定し得る。このシナリオでは、データキャッシュメモリデバイス434は、ソフトウェア保護デバイス408によってサービスされている他のデータキャッシュメモリデバイスのキャッシュラインをスヌープして、そのような他のデータキャッシュメモリデバイスが、要求されたメモリロケーションを記憶しているかどうかを決定し得る。一態様では、データキャッシュメモリデバイス434およびそのような他のデータキャッシュメモリデバイスは、ソフトウェア保護デバイス408の上流に位置し得、その場合、ソフトウェア保護デバイス408は、データキャッシュメモリデバイス434および他のデータキャッシュメモリデバイスの後に、ただしメモリデバイス410の前に位置する。たとえば、データキャッシュメモリデバイス434は、データを求める要求に関連付けられたRIDを、スヌープチャネル(たとえば、共有バス)を介して他のデータキャッシュメモリデバイスへ伝搬させ得る。データキャッシュメモリデバイス434によって伝搬されたRIDが、他のデータキャッシュのうちの1つによって記憶されたキャッシュラインのキャッシュタグの中のRIDと一致する場合、データキャッシュメモリデバイス434は、一致しているRIDを有するデータキャッシュメモリデバイスからデータを受信および記憶し得る。コアデバイス402が、メモリデバイス410に関連するメモリロケーションからの命令を要求するとき、類似の手法が命令キャッシュメモリデバイス432によって適用され得る。
【００５４】
別の例示的なシナリオでは、コアデバイス402が、メモリデバイス410に関連するメモリロケーションからのデータを要求するとき、コアデバイス402のデータキャッシュメモリデバイス434(ローカルデータキャッシュとも呼ばれる)は、メモリロケーションがデータキャッシュメモリデバイス434によって記憶されていないことを決定し得る。このシナリオでは、データキャッシュメモリデバイス434は、異なるソフトウェア保護デバイス(たとえば、ソフトウェア保護デバイス408以外のソフトウェア保護デバイス)によってサービスされている他のデータキャッシュメモリデバイスをスヌープし得る。そのようなシナリオでは、データキャッシュメモリデバイス434および他のデータキャッシュメモリデバイスは、ソフトウェア保護デバイス408と、異なるソフトウェア保護デバイスの両方の上流にあり得る。一例では、データを求める要求に関連付けられたRIDが、異なるソフトウェア保護デバイスによってサービスされている他のデータキャッシュメモリデバイスによって記憶されているキャッシュラインの中のキャッシュタグのRIDと一致するかどうかを決定するために、データを求める要求に関連付けられたRIDがオフクラスタバス(off cluster bus)上で伝搬され得る。別の例示的な手法では、データキャッシュメモリデバイス434は、データを求める要求に関連付けられたRIDをオフクラスタバス上で伝搬させるのを控えてよい。代わりに、データキャッシュメモリデバイス434は、データを求める要求に関連するメモリロケーションの物理アドレスが、他のデータキャッシュメモリデバイスの任意のキャッシュラインにおける物理アドレスと一致するかどうかを決定し得る。一致が見つかった場合、一致するデータキャッシュメモリデバイスの中の要求されたデータは、一致するデータキャッシュメモリデバイスのキャッシュタグの中のRID(RID'とも呼ばれる)を使用して、異なるソフトウェア保護デバイスによって暗号化され得る。その後、要求されたデータは、データを求める要求に関連付けられたRIDを使用して、ソフトウェア保護デバイス408によって解読され得る。したがって、RID'がコアデバイス402からのデータを求める要求に関連付けられたRIDと同一(または、等価)でない限り、要求されたデータは、適切に解読され得ず、使用できるいかなるデータも提供し得ない。
【００５５】
キャッシュラインのダンピング
本開示の一態様では、データキャッシュメモリデバイス434の中に記憶されているデータ、および/または命令キャッシュメモリデバイス432の中に記憶されている命令は、普通文をなしている(たとえば、暗号化されていない)ことがある。そのような態様では、攻撃者(たとえば、アドバーサリ468)は、第1のキャッシュダンプコマンド476を送信することによって、キャッシュされたデータをデータキャッシュメモリデバイス434から取得しようと試みることがあり、かつ/または第2のキャッシュダンプコマンド472を送信することによって、キャッシュされた命令を命令キャッシュメモリデバイス432から取得しようと試みることがある。攻撃者はさらに、コマンド474を介して範囲インジケータビット424を改変しようと試みることがあり、かつ/またはコマンド470を介して範囲インジケータビット426を改変しようと試みることがある。たとえば、攻撃者は、デバッグ中のチップまたは他のハードウェアおよび/もしくはソフトウェアを使用して、第1のキャッシュダンプコマンド476および/または第2のキャッシュダンプコマンド472を送信し得る。キャッシュダンプコマンドのそのような許可されていない使用を阻止するために、フィルタデバイス466は、第1のキャッシュダンプコマンド476および/または第2のキャッシュダンプコマンド472を検出し得、範囲タグ462、464の中のRIDが0または範囲を示さない所定の特殊値であるかどうかを決定し得る。一態様では、範囲タグ462、464の中のRIDが0または所定の特殊値である場合、フィルタデバイス466は、命令キャッシュメモリデバイス432の中に記憶されている命令を送信してよく、かつ/またはデータキャッシュメモリデバイス434の中に記憶されているデータを送信してよい。そうでなく、範囲タグ462、464の中のRIDが0または所定の特殊値である場合、フィルタデバイス466は、キャッシュダンプコマンドに応答して命令またはデータを送信するのを控えてよい。したがって、フィルタデバイス466は、命令キャッシュメモリデバイス432および/またはデータキャッシュメモリデバイス434の内容がキャッシュダンプコマンドに応答して(たとえば、アドバーサリ468へ)送信されることを阻止し得る。一態様では、フィルタデバイス466は、命令キャッシュメモリデバイス432および/またはデータキャッシュメモリデバイス434の中に実装されてよい。
【００５６】
非範囲モードからの保護された範囲データの読取り/書込み
本開示の一態様では、コアデバイス402は、キャッシュメモリデバイス(たとえば、命令キャッシュメモリデバイス432および/またはデータキャッシュメモリデバイス434)のキャッシュ(または、関連するキャッシュライン)をフラッシュし得、メモリデバイス(たとえば、メモリデバイス410)に関連するメモリページのページデスクリプタの中の範囲インジケータビット(たとえば、RB424および/またはRB426)を消去し得る。コアデバイス402は、次いで、読取りまたは書込みトランザクションを開始し得る。たとえば、読取りまたは書込みトランザクションは、暗号化されたデータ上にあり得る。コアデバイス402は、次いで、再びキャッシュ(または、関連するキャッシュライン)をフラッシュし得る。コアデバイス402は、メモリページのページデスクリプタの中の範囲インジケータビットを復元し得る。メモリページは、スワップアウトされる場合、メモリデバイス410に関連する元の物理アドレスとともにスワップアウトされ得ることに留意されたい。メモリページが読み取られてキャッシュメモリデバイスの中に戻されるとき、かつメモリデバイス410に関連する異なる物理アドレスにおいて再ロードされる場合、メモリページは、新たな物理アドレスに対して解読および再暗号化され得る。一態様では、そのようなスワッピング動作は、範囲マネージャ412によって管理され得る。たとえば、範囲マネージャ412は、暗号化および/または解読を実行するためにメモリ暗号化モジュール416を実施し得る。
【００５７】
第2の例示的なアーキテクチャにおける範囲の実行
図6は、本開示の様々な態様による例示的なアーキテクチャ600のブロック図である。たとえば、アーキテクチャ600は、パーソナルコンピュータ、セルフォン(UEとも呼ばれる)、またはハンドヘルドゲーミングデバイスなどの、コンピューティングデバイスにおいて実施され得る。図6に示すように、アーキテクチャ600は、コアデバイス602、メモリ管理ユニット(MMU)606、ソフトウェア保護デバイス608、およびメモリデバイス610を含む。たとえば、コアデバイス602は、中央処理装置(CPU)604におけるプロセッサであってよい。一態様では、ソフトウェア保護デバイス608は、範囲マネージャ612、鍵ストア614、およびメモリ暗号化モジュール616を含み得る。他の態様では、MMU606は、CPU604の中に含まれ得る。本開示の一態様では、図6におけるソフトウェア保護デバイス608、メモリデバイス610、範囲マネージャ612、鍵ストア614、およびメモリ暗号化モジュール616は、それぞれ、図3におけるソフトウェア保護デバイス302、メモリデバイス304、範囲マネージャ308、鍵ストア310、およびメモリ暗号化モジュール312に相当し得る。
【００５８】
範囲実行のためのコアデバイス動作
本開示の一態様では、コアデバイス602は、メモリコマンドをMMU606へ送信することによって、メモリデバイス610に対するメモリトランザクションを開始し得る。したがって、一例では、メモリコマンドは、メモリデバイス610からデータを読み取るためのデータ読取りトランザクションを実行するように構成され得るか、またはメモリデバイス610にデータを書き込むためのデータ書込みトランザクションを実行するように構成され得る。別の例では、メモリコマンドは、メモリデバイス610から命令をフェッチするための命令フェッチトランザクション(命令読取りトランザクションとも呼ばれる)を実行するように構成され得る。
【００５９】
本開示の一態様では、範囲628が確立されるとともに、ターゲットソフトウェア318の暗号化された命令および/またはデータが前に説明した方法で範囲628の中に記憶された後、コアデバイス602は、範囲628からデータを読み取り、範囲628にデータを書き込み、または範囲628から命令をフェッチするために範囲628に入り得る。本開示の一態様では、コアデバイス602は、RIDを記憶するように構成されているRIDレジスタ618を含み得る。RIDレジスタ618は、いかなるソフトウェアにも見えなくてよい。一例では、RIDレジスタ618は、0値または他の特殊値がRIDレジスタ618の中に記憶されているとき、範囲が参照または識別されていないことを示し得る。たとえば、コアデバイス602が範囲628に入るための命令を実行するとき、コアデバイス602は、RIDレジスタ618の中の範囲628に対応するRID値を設定し得、範囲628の冒頭にジャンプし得る。本開示の一態様では、コアデバイス602とメモリデバイス610との間の各メモリトランザクションは、RIDレジスタ618の中に現在記憶されているRID、メモリトランザクションのタイプ(たとえば、データまたは命令)、および随意の制御ビット(DORAビット665とも呼ばれる)を含むようにタグ付けされ得る。たとえば、図4に関して前に説明したコアデバイス402のメモリトランザクションと同様に、コアデバイス602は、RIDレジスタ618の中のRID、メモリトランザクションのタイプ(たとえば、データまたは命令)、および随意のDORAビット665を、(たとえば、データ読取り/書込みトランザクションまたは命令フェッチトランザクションを開始するための)メモリコマンドの中に含めてよく、そのメモリコマンドをMMU606へ送信してよい。
【００６０】
範囲実行のためのメモリ管理ユニット(MMU)動作
本開示のいくつかの態様では、MMU606は、アドレス変換の複数のステージのために構成され得る。たとえば、図6に示すように、MMU606は、第1のアドレス変換ステージ(MMUステージ1 620とも呼ばれる)、および第2のアドレス変換ステージ(MMUステージ2 622とも呼ばれる)を含み得る。一例では、MMUステージ1 620は、仮想メモリアドレスを中間的な物理メモリアドレスに変換するように構成され得る。したがって、MMUステージ1 620は、メモリページテーブル(たとえば、仮想アドレスと中間的なアドレスとの間のマッピング)を保有し得、範囲に属するメモリページの中に範囲インジケータビット(RB)624を含め得る。MMUステージ2 622は、中間的な物理メモリアドレスをメモリデバイス610の物理メモリアドレスに変換するように構成され得る。したがって、MMUステージ2 622は、メモリページテーブル(たとえば、中間的なアドレスと物理アドレスとの間のマッピング)を保有し得、範囲に属するメモリページの中に範囲インジケータビット(RB)626を含め得る。本開示の一態様では、オペレーティングシステム(OS)636が仮想メモリアドレスから中間的な物理メモリアドレスへのマッピングを制御し得(668)、仮想メモリモニタ(VMM)638が中間的な物理アドレスから物理メモリアドレスへのマッピングを制御し得る(670)。
【００６１】
本開示の一態様では、MMU606は、メモリトランザクション(たとえば、データ読取り/書込みトランザクションまたは命令フェッチトランザクションを開始するためのメモリコマンド)をコアデバイス602から受信し得る。メモリトランザクションは、メモリデバイス610に関連するメモリトランザクションアドレス(たとえば、データもしくは命令がそこから読み取られるべき、またはデータがそこに書き込まれるべき、メモリアドレス)を含み得る。MMU606は、メモリトランザクションアドレスに対応するメモリページを決定し得、メモリページに対する範囲インジケータビット(たとえば、RB624またはRB626)の値(たとえば、「0」または「1」)を決定し得る。MMU606は、コアデバイス602から受信されたメモリトランザクションに範囲インジケータビットの値を含めてよく、RID618(たとえば、RIDレジスタ618の中に現在記憶されている値)、随意のDORAビット665、および範囲インジケータビットの値を含むメモリトランザクションを、ソフトウェア保護デバイス608に転送し得る。一例では、MMU606は、メモリトランザクションが命令フェッチトランザクションであることを決定し得、(RID618、随意のDORAビット665、および範囲インジケータビットの値を含む)そのようなメモリトランザクションを命令フロー642を介してソフトウェア保護デバイス608に転送し得る。別の例では、MMU606は、メモリトランザクションがデータトランザクション(たとえば、データ読取りまたはデータ書込みトランザクション)であることを決定し得、(RID618、随意のDORAビット665、および範囲インジケータビットの値を含む)メモリトランザクションをデータフロー648を介してソフトウェア保護デバイス608に転送し得る。一態様では、MMU606は、メモリトランザクションにおけるRID618および随意のDORAビット665を変換および/または変更しないことがある。本開示の一態様では、MMU606は、前に説明した図5の例示的なフロー図500に基づいて、メモリトランザクションを許可すべきかそれとも拒否すべきかを決定し得る。
【００６２】
範囲実行のためのキャッシュメモリデバイス動作
図6の態様では、ソフトウェア保護デバイス608は、命令キャッシュメモリデバイス(Iキャッシュ)632およびデータキャッシュメモリデバイス(Dキャッシュ)634に結合されている。たとえば、コアデバイス602は、命令フロー640、642、および644を介して命令キャッシュメモリデバイス632から命令をフェッチし得、データフロー640、648、および650を介してデータキャッシュメモリデバイス634からデータを読み取り得る(または、データキャッシュメモリデバイス634にデータを書き込み得る)。図6に示すように、命令キャッシュメモリデバイス632およびデータキャッシュメモリデバイス634は、メモリデバイス610にさらに結合されている。本開示の一態様では、命令キャッシュメモリデバイス632およびデータキャッシュメモリデバイス634は、レベル1(L1)キャッシュと呼ばれることがある。そのような態様では、図6におけるソフトウェア保護デバイス608は、L1キャッシュの前に位置すると言われてよい。
命令キャッシュメモリデバイス(たとえば、命令キャッシュメモリデバイス632)およびデータキャッシュメモリデバイス(たとえば、データキャッシュメモリデバイス634)に関して本明細書で説明する態様が、データと命令の両方を記憶するように構成された単一のキャッシュメモリデバイス(統合型キャッシュメモリデバイスとも呼ばれる)に適用され得ることを理解されたい。
【００６３】
本開示の一態様では、命令キャッシュメモリデバイス632は、メモリデバイス610からフェッチされた命令と、フェッチされた命令の対応するメモリロケーション(たとえば、メモリデバイス610の中の領域に対応するメモリページ)とを記憶し得る。たとえば、命令キャッシュメモリデバイス632の中に記憶されている命令は、前の命令フェッチメモリトランザクションの結果としての、コアデバイス602によって前に要求された命令であり得る。本開示の別の態様では、データキャッシュメモリデバイス634は、メモリデバイス610から読み取られたデータと、読み取られたデータの対応するメモリロケーション(たとえば、メモリデバイス610の中の領域に対応するメモリページ)とを記憶し得る。たとえば、データキャッシュメモリデバイス634の中に記憶されているデータは、前のデータ読取りメモリトランザクションの結果としての、コアデバイス602によって前に要求されたデータであり得る。データキャッシュメモリデバイス634は、メモリデバイス610に書き込まれるべきデータと、データが書き込まれるべき対応するメモリロケーション(たとえば、メモリデバイス610の中の領域に対応するメモリページ)とをさらに記憶し得る。たとえば、データキャッシュメモリデバイス634の中に記憶されているデータは、前のデータ書込みメモリトランザクションの結果としての、コアデバイス602によって前に送信されたデータであり得る。
【００６４】
一例では、コアデバイス602は、メモリデバイス610の範囲628からの命令またはデータを要求し得る。言い換えれば、コアデバイス602は、RIDレジスタ618の中のRIDに関連付けられたメモリデバイス610の領域から、命令をフェッチするかまたはデータを読み取るように要求し得る。MMU606は、要求が許可されることを決定し得、要求をソフトウェア保護デバイス608に転送し得る。ソフトウェア保護デバイス608は、命令またはデータを求める要求をRID618と一緒に受信し得る。たとえば、要求が命令を求めるものである場合、ソフトウェア保護デバイス608は、命令フロー644を介して命令キャッシュメモリデバイス632に要求を転送し得、命令キャッシュメモリデバイス632は、引き続き命令フロー646を介してメモリデバイス610に要求を転送し得る。その後、メモリデバイス610は、要求された命令を命令フロー646を介して命令キャッシュメモリデバイス632に提供し得る。たとえば、要求がデータを求めるものである場合、ソフトウェア保護デバイス608は、データフロー650を介してデータキャッシュメモリデバイス634に要求を転送し得、データキャッシュメモリデバイス634は、引き続きデータフロー652を介してメモリデバイス610に要求を転送し得る。その後、メモリデバイス610は、要求されたデータをデータフロー652を介してデータキャッシュメモリデバイス634に提供し得る。
【００６５】
メモリデバイス610の範囲628から読み取られる命令またはデータが、暗号化された形式をなし得ることに留意されたい。たとえば、範囲628の中の命令またはデータは、範囲628のRIDに対応するEEK(たとえば、鍵ストア614の中のRID/EEKペア630のEEK)を使用して前に暗号化されていることがある。したがって、要求が命令を求めるものである場合、命令キャッシュメモリデバイス632は、メモリデバイス610からの暗号化された命令を記憶し得る。要求がデータを求めるものである場合、データキャッシュメモリデバイス634は、メモリデバイス610からの暗号化されたデータを記憶し得る。ソフトウェア保護デバイス608が、要求された命令を命令キャッシュメモリデバイス632から、または要求されたデータをデータキャッシュメモリデバイス634から受信すると、ソフトウェア保護デバイス608は、範囲628のRIDに対応するEEKを使用して、要求された命令またはデータを解読し得る。一例では、ソフトウェア保護デバイス608は、解読された命令を命令フロー642、640を介してコアデバイス602に提供し得るか、または解読されたデータをデータフロー648、640を介してコアデバイス602に提供し得る。
【００６６】
図6の構成では、ソフトウェア保護デバイス608がMMU606の直後に位置するので、キャッシュメモリデバイス(たとえば、命令キャッシュメモリデバイス632およびデータキャッシュメモリデバイス634)に対して読み取る/書き込むとき、ソフトウェア保護デバイス608によって実行される暗号化/解読動作(たとえば、メモリ暗号化モジュール616によって実行される暗号化/解読動作)に起因してレイテンシが課され得る。そのようなレイテンシは、アプリケーションによっては適切でない場合がある。
【００６７】
いくつかのシナリオでは、攻撃者(たとえば、アドバーサリ672)は、キャッシュダンプコマンドを実施することによって、記憶されているデータをデータキャッシュメモリデバイス634から、または記憶されている命令を命令キャッシュメモリデバイス632から取得しようと試みることがある。たとえば、攻撃者は、第1のキャッシュダンプコマンド680をデータキャッシュメモリデバイス634へ、かつ/または第2のキャッシュダンプコマンド676を命令キャッシュメモリデバイス632へ送信し得る。攻撃者は、さらに、コマンド678を介してRB624を改変しようと試みることがあり、かつ/またはコマンド674を介してRB626を改変しようと試みることがある。たとえば、攻撃者は、デバッグ中のチップまたは他のハードウェアおよび/もしくはソフトウェアを使用して、第1のキャッシュダンプコマンド680および/または第2のキャッシュダンプコマンド676を送信し得る。しかしながら、データキャッシュメモリデバイス634の中に記憶されているデータ、または命令キャッシュメモリデバイス632の中に記憶されている命令が、暗号化された形式をなすので、データキャッシュメモリデバイス634および命令キャッシュメモリデバイス632は、使用できる(たとえば、理解できる)いかなる情報も含まない暗号化された出力682、684を送信し得る。
【００６８】
それらについての例示的な装置および方法
図7は、本開示の1つまたは複数の態様(たとえば、以下で説明する図8〜図13の方法に関係する態様)による、メモリデバイスにおいてソフトウェアを保護することに関係する動作をサポートするように構成された装置700の図である。装置700は、通信インターフェース(たとえば、少なくとも1つのトランシーバ)702、コアデバイス704、ユーザインターフェース706、ストレージ708、メモリデバイス710、MMU回路712、キャッシュメモリデバイス714、およびソフトウェア保護デバイス716を含む。
【００６９】
これらの構成要素は、図7において接続線によって概略的に表されるシグナリングバスもしくは他の適切な構成要素を介して、互いに結合されてよく、かつ/または互いに電気通信するように配置されてよい。シグナリングバスは、コアデバイス704の特定の適用例および全体的な設計制約に応じて、任意の数の相互接続バスおよびブリッジを含み得る。シグナリングバスは、通信インターフェース702、コアデバイス704、ユーザインターフェース706、およびMMU回路712を互いにリンクする。シグナリングバスはまた、タイミングソース、周辺装置、電圧調整器、および電力管理回路などの様々な他の回路(図示せず)をリンクし得、それらは当技術分野でよく知られており、したがって、これ以上説明しない。
【００７０】
通信インターフェース702は、装置700のワイヤレス通信を容易にするように適合され得る。たとえば、通信インターフェース702は、ネットワークの中の1つまたは複数の通信デバイスに関して双方向に情報の通信を容易にするように適合された回路構成および/またはコード(たとえば、命令)を含み得る。通信インターフェース702は、ワイヤレス通信システム内でのワイヤレス通信用の1つまたは複数のアンテナ718に結合され得る。通信インターフェース702は、1つまたは複数のスタンドアロン受信機および/または送信機、ならびに1つまたは複数のトランシーバを用いて構成され得る。図示の例では、通信インターフェース702は、受信機720および送信機722を含む。
【００７１】
コアデバイス704は、RIDレジスタ418、すなわち、随意の制御ビット(たとえば、DORAビット456)を設定するためのレジスタなどの、外部のエンティティにとって書込みアクセス可能でない1つまたは複数のレジスタ724を含み得る。たとえば、コアデバイス704は、図4におけるコアデバイス402または図6におけるコアデバイス602に相当し得る。
【００７２】
メモリデバイス710は、1つまたは複数のメモリデバイスを表し得る。たとえば、メモリデバイス710は、図3におけるメモリデバイス304または図4におけるメモリデバイス410に相当し得る。メモリデバイス710は、装置700のコアデバイス704用のメインメモリとして働き得る。いくつかの実装形態では、メモリデバイス710、ストレージ708、および記憶媒体750、780は、共通メモリ構成要素として実装される。メモリデバイス710はまた、コアデバイス704、または装置700のいくつかの他の構成要素によって操作されるデータを記憶するために使用され得る。
【００７３】
記憶媒体750、780は、プロセッサ実行可能コードもしくは命令(たとえば、ソフトウェア、ファームウェア)などのコード、電子データ、データベース、または他のデジタル情報を記憶するための1つまたは複数のコンピュータ可読、機械可読、および/またはプロセッサ可読デバイスを表し得る。たとえば、記憶媒体750は、コードを実行するときにキャッシュメモリデバイスの処理回路730によって操作されるデータを記憶するために使用され得る。たとえば、記憶媒体780は、コードを実行するときにソフトウェア保護デバイス716の処理回路770によって操作されるデータを記憶するために使用され得る。記憶媒体750、780は、ポータブルまたは固定の記憶デバイス、光記憶デバイス、およびコードを記憶するか、含むか、または搬送することが可能な様々な他の媒体を含む、汎用または専用プロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。
【００７４】
限定ではなく例として、記憶媒体750および/または記憶媒体780は、磁気記憶デバイス(たとえば、ハードディスク、フロッピーディスク、磁気ストリップ)、光ディスク(たとえば、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD))、スマートカード、フラッシュメモリデバイス(たとえば、カード、スティック、またはキードライブ)、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、レジスタ、リムーバブルディスク、およびコンピュータによってアクセスされ得るとともに読み取られ得るコードを記憶するための任意の他の適切な媒体を含み得る。記憶媒体750および/または記憶媒体780は、製造品(たとえば、コンピュータプログラム製品)の中で具現化され得る。例として、コンピュータプログラム製品は、パッケージング材料の中のコンピュータ可読媒体を含み得る。上記のことに鑑みて、いくつかの実装形態では、記憶媒体750、780は各々、非一時的(たとえば、有形の)記憶媒体であり得る。記憶媒体750は、処理回路730が記憶媒体750から情報を読み取るとともに記憶媒体750に情報を書き込むことができるように、キャッシュメモリデバイス714の処理回路730に結合され得る。記憶媒体780は、処理回路770が記憶媒体780から情報を読み取るとともに記憶媒体780に情報を書き込むことができるように、ソフトウェア保護デバイス716の処理回路770に結合され得る。
【００７５】
記憶媒体750によって記憶されるコードおよび/または命令は、キャッシュメモリデバイス714の処理回路730によって実行されたとき、処理回路730に、本明細書で説明する様々な機能および/またはプロセス動作のうちの1つまたは複数を実行させる。たとえば、記憶媒体750は、処理回路730の1つまたは複数のハードウェアブロックにおける動作を調整するために構成された動作を含み得る。記憶媒体780によって記憶されるコードおよび/または命令は、ソフトウェア保護デバイス716の処理回路770によって実行されたとき、処理回路770に、本明細書で説明する様々な機能および/またはプロセス動作のうちの1つまたは複数を実行させる。たとえば、記憶媒体780は、処理回路770の1つまたは複数のハードウェアブロックにおける動作を調整するために構成された動作を含み得る。
【００７６】
キャッシュメモリデバイス714の処理回路730は、概して、記憶媒体750上に記憶されるそのようなコード/命令の実行を含む処理のために適合される。本明細書で使用する「コード」または「命令」という用語は、ソフトウェアと呼ばれるか、ファームウェアと呼ばれるか、ミドルウェアと呼ばれるか、マイクロコードと呼ばれるか、ハードウェア記述言語と呼ばれるか、またはそれ以外で呼ばれるかにかかわらず、限定はしないが、プログラミング、命令、命令セット、データ、コード、コードセグメント、プログラムコード、プログラム、サブプログラム、ソフトウェアモジュール、アプリケーション、ソフトウェアアプリケーション、ソフトウェアパッケージ、ルーチン、サブルーチン、オブジェクト、実行ファイル、実行スレッド、プロシージャ、関数などを含むように広く解釈されなければならない。
【００７７】
キャッシュメモリデバイス714の処理回路730は、データを取得し、処理し、かつ/または送り、データアクセスおよび記憶を制御し、コマンドを発行し、他の所望の動作を制御するように構成される。処理回路730は、少なくとも1つの例において、適切な媒体によって提供される所望のコードを実施するように構成された回路構成を含み得る。たとえば、処理回路730は、1つもしくは複数のプロセッサ、1つもしくは複数のコントローラ、および/または実行可能コードを実行するように構成された他の構造として実装され得る。処理回路730の例は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理構成要素、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを含み得る。汎用プロセッサは、マイクロプロセッサ、ならびに任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンを含み得る。処理回路730はまた、DSPとマイクロプロセッサとの組合せ、いくつかのマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、ASICとマイクロプロセッサ、または任意の他の数の様々な構成などのコンピューティング構成要素の組合せとして実装され得る。処理回路730のこれらの例は例示のためのものであり、本開示の範囲内の他の適切な構成も企図される。
【００７８】
本開示の1つまたは複数の態様によれば、処理回路730は、本明細書で説明する装置のいずれかまたはすべてのための、特徴、プロセス、機能、動作、および/またはルーチンのいずれかまたはすべてを実行するように適合され得る。処理回路730に関して本明細書で使用する「適合される」という用語は、処理回路730が、本明細書で説明する様々な特徴による特定のプロセス、機能、動作、および/またはルーチンを実行するように、構成されること、採用されること、実装されること、および/またはプログラムされることのうちの1つまたは複数を指し得る。
【００７９】
装置700の少なくとも一例によれば、処理回路730は、本明細書で説明する特徴、プロセス、機能、動作、および/またはルーチン(たとえば、図8〜図11に関して説明する特徴、プロセス、機能、動作、および/またはルーチン)のいずれかまたはすべてを実行するように適合される、受信回路/モジュール732、キャッシュメモリ制御回路/モジュール734、送信回路/モジュール736、記憶回路/モジュール738、およびRID一致回路/モジュール740のうちの1つまたは複数を含み得る。
【００８０】
受信回路/モジュール732は、たとえば、メモリデバイスに関連する命令またはデータを読み取るための要求を受信することであって、要求が、少なくとも第1の範囲識別子および範囲インジケータビットを含む、受信することと、少なくとも1つのリモートキャッシュメモリデバイスから命令またはデータを受信することと、キャッシュダンプコマンドを受信することと、少なくとも1つのリモートキャッシュメモリデバイスから命令またはデータを受信することであって、受信された命令またはデータが、少なくとも1つのリモートキャッシュメモリデバイスに関連するソフトウェア保護デバイスにおいて、一時暗号化鍵に基づいて暗号化され、その後、キャッシュメモリデバイスに関連するソフトウェア保護デバイスにおいて、受信の前に一時暗号化鍵に基づいて解読される、受信することと、メモリデバイスの領域に関連するメモリページにデータを書き込むための要求を受信することであって、要求が、少なくとも第1の範囲識別子および範囲インジケータビットを含む、受信することとに関係する、いくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体750上に記憶される受信命令752)を含み得る。
【００８１】
キャッシュメモリ制御回路/モジュール734は、たとえば、少なくとも第1の範囲識別子、範囲インジケータビット、または制御ビットに基づいて、命令またはデータを読み取るための要求を許可すべきかそれとも拒否すべきかを決定することと、少なくとも第1の範囲識別子、範囲インジケータビット、または制御ビットに基づいて、データを書き込むための要求を許可すべきかそれとも拒否すべきかを決定することと、要求がデータを読み取るためのものであり、第1の範囲識別子が範囲を示し、範囲インジケータビットが有効化されておらず、かつ制御ビットが有効化されているとき、第1の範囲識別子を0として定義することと、命令またはデータがキャッシュメモリデバイスの中に記憶されているとき、キャッシュタグの中の第2の範囲識別子が0または範囲を示さない特殊値であるかどうかを決定することと、メモリページがキャッシュメモリデバイスにおいて記憶されているかどうかを決定することと、命令またはデータがキャッシュメモリデバイスの中に記憶されていないとき、メモリデバイスから命令またはデータを取得することと、要求がデータを書き込むためのものであり、第1の範囲識別子がメモリデバイスの中の範囲を示し、範囲インジケータビットが有効化されておらず、かつ制御ビットが有効化されているとき、第1の範囲識別子を0または範囲を示さない特殊値として定義することとに関係する、いくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体750上に記憶されるキャッシュメモリ制御命令754)を含み得る。
【００８２】
送信回路/モジュール736は、たとえば、第1の範囲識別子が第2の範囲識別子と一致するとき、命令またはデータを送信することと、第1の範囲識別子が第2の範囲識別子と一致しないとき、命令を送信するのを控えることと、要求が拒否されるとき、命令またはデータを送信するのを控えることと、キャッシュタグの中の第2の範囲識別子が0または範囲を示さない特殊値と異なるとき、キャッシュダンプコマンドに応答して命令またはデータを送信するのを控えることと、キャッシュタグの中の第2の範囲識別子が0または範囲を示さない特殊値と異なるとき、キャッシュダンプコマンドに応答して0値を送信することと、命令またはデータがキャッシュメモリデバイスの中に記憶されていないとき、キャッシュの同じクラスタの中の少なくとも1つのリモートキャッシュメモリへ要求および第1の範囲識別子を送信することと、命令またはデータがキャッシュメモリデバイスの中に記憶されていないとき、キャッシュの異なるクラスタの中の少なくとも1つのリモートキャッシュメモリデバイスへ要求を送信することとに関係する、いくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体750上に記憶される送信命令756)を含み得る。
【００８３】
記憶回路/モジュール738は、たとえば、受信された命令またはデータを、第1の範囲識別子を含む第2のキャッシュタグとともにキャッシュメモリデバイスにおいて記憶することと、第1の範囲識別子が第2の範囲識別子と一致するとき、第1の範囲識別子を含むキャッシュタグとともにキャッシュメモリデバイスにおけるメモリページの中にデータを記憶することと、メモリページがキャッシュメモリデバイスにおいて記憶されていないとき、第1の範囲識別子を含むキャッシュタグとともにキャッシュメモリデバイスにおけるメモリページの中にデータを記憶することと、要求が拒否されるとき、キャッシュメモリデバイスにおけるメモリページの中にデータを記憶するのを控えることと、第1の範囲識別子が第2の範囲識別子と一致しないとき、キャッシュメモリデバイスにおけるメモリページの中にデータを記憶するのを控えることとに関係する、いくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体750上に記憶される記憶命令758)を含み得る。
【００８４】
RID一致回路/モジュール740は、たとえば、命令またはデータがキャッシュメモリデバイスの中に記憶されているとき、第1の範囲識別子がキャッシュタグの中の第2の範囲識別子と一致するかどうかを決定すること、および/あるいはメモリページがキャッシュメモリデバイスにおいて記憶されているとき、メモリページに関連付けられたキャッシュタグの中の第2の範囲識別子が第1の範囲識別子と一致するかどうかを決定することに関係する、いくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体750上に記憶されるRID一致命令760)を含み得る。
【００８５】
上述のように、記憶媒体750によって記憶される命令は、キャッシュメモリデバイス714の処理回路730によって実行されたとき、処理回路730に、本明細書で説明する様々な機能および/またはプロセス動作のうちの1つまたは複数を実行させる。たとえば、記憶媒体750は、受信命令752、キャッシュメモリ制御命令754、送信命令756、記憶命令758、およびRID一致命令760のうちの1つまたは複数を含み得る。
【００８６】
ソフトウェア保護デバイス716の処理回路770は、概して、記憶媒体780上に記憶されるそのようなコード/命令の実行を含む処理のために適合される。ソフトウェア保護デバイス716の処理回路770は、データを取得し、処理し、かつ/または送り、データアクセスおよび記憶を制御し、コマンドを発行し、他の所望の動作を制御するように構成される。処理回路770は、少なくとも1つの例において、適切な媒体によって提供される所望のコードを実施するように構成された回路構成を含み得る。たとえば、処理回路770は、1つもしくは複数のプロセッサ、1つもしくは複数のコントローラ、および/または実行可能コードを実行するように構成された他の構造として実装され得る。処理回路770の例は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理構成要素、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを含み得る。汎用プロセッサは、マイクロプロセッサ、ならびに任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンを含み得る。処理回路770はまた、DSPとマイクロプロセッサとの組合せ、いくつかのマイクロプロセッサ、DSPコアと連携する1つもしくは複数のマイクロプロセッサ、ASICとマイクロプロセッサ、または任意の他の数の様々な構成などのコンピューティング構成要素の組合せとして実装され得る。処理回路770のこれらの例は例示のためのものであり、本開示の範囲内の他の適切な構成も企図される。
【００８７】
本開示の1つまたは複数の態様によれば、処理回路770は、本明細書で説明する装置のいずれかまたはすべてのための、特徴、プロセス、機能、動作、および/またはルーチンのいずれかまたはすべてを実行するように適合され得る。処理回路770に関して本明細書で使用する「適合される」という用語は、処理回路770が、本明細書で説明する様々な特徴による特定のプロセス、機能、動作、および/またはルーチンを実行するように、構成されること、採用されること、実装されること、および/またはプログラムされることのうちの1つまたは複数を指し得る。
【００８８】
装置700の少なくとも一例によれば、処理回路770は、本明細書で説明する特徴、プロセス、機能、動作、および/またはルーチン(たとえば、図12〜図13に関して説明する特徴、プロセス、機能、動作、および/またはルーチン)のいずれかまたはすべてを実行するように適合される、受信回路/モジュール772、暗号化/解読回路/モジュール774、および送信回路/モジュール776のうちの1つまたは複数を含み得る。
【００８９】
受信回路/モジュール772は、たとえば、メモリデバイスを読み取るための要求を受信することであって、要求が、メモリデバイスの中の1つまたは複数の選択された領域に関連付けられている範囲識別子を含む、受信すること、および/あるいはメモリデバイスにデータを書き込むための要求を受信することであって、要求が、メモリデバイスの中の1つまたは複数の選択された領域に関連付けられているRIDを含む、受信することに関係する、いくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体780上に記憶される受信命令782)を含み得る。
【００９０】
暗号化/解読回路/モジュール774は、たとえば、メモリデバイスの中の1つまたは複数の選択された領域から取り出された命令またはデータのうちの少なくとも1つを、範囲識別子に関連付けられた一時暗号化鍵に基づいて解読すること、および/あるいは範囲識別子に関連付けられた一時暗号化鍵に基づいてデータを暗号化することに関係する、いくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体780上に記憶される暗号化/解読命令784)を含み得る。
【００９１】
送信回路/モジュール776は、たとえば、解読された命令または解読されたデータのうちの少なくとも1つを、範囲識別子とともにキャッシュメモリデバイスへ送信すること、および/あるいは暗号化されたデータをメモリデバイスへ送信することに関係する、いくつかの機能を実行するように適合された回路構成および/または命令(たとえば、記憶媒体780上に記憶される送信命令786)を含み得る。
【００９２】
第1の例示的な方法
図8は、本開示の様々な態様による、キャッシュメモリデバイスにおけるメモリトランザクションのための装置において動作可能な方法800を示す。一態様では、キャッシュメモリデバイスは、メモリデバイスに関連する命令またはデータを読み取るための要求(メモリトランザクションとも呼ばれる)を受信する(802)。要求は、メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする第1の範囲識別子(RID)を含み得る。要求は、範囲インジケータビット(RB)および/または随意のDORAビットをさらに含み得る。キャッシュメモリデバイスは、少なくとも第1の範囲識別子、範囲インジケータビット、またはDORAビットに基づいて、要求を許可すべきかそれとも拒否すべきかを決定する(804)。一態様では、キャッシュメモリデバイスは、要求を許可すべきかそれとも拒否すべきかを決定するために、図5の例示的なフロー図500の動作を実施し得る。要求が拒否される場合、キャッシュメモリデバイスは、データまたは命令を送信するのを控える(806)。要求が許可される場合、キャッシュメモリデバイスは、第1のRIDが0(または、範囲を示さない所定の特殊値)であるかどうか、および範囲インジケータビットが有効化されていないかどうかを決定する(808)。第1のRIDが0(または、範囲を示さない所定の特殊値)でなく、かつ範囲インジケータビットが有効化されていない(たとえば、RB=「0」である)場合、キャッシュメモリデバイスは、後続の動作に対して第1のRIDを0(または、範囲を示さない所定の特殊値)として定義する(810)。たとえば、図5を参照しながら、メモリトランザクションに対して、第1のRIDが0(または、範囲を示さない所定の特殊値)でなく、かつ範囲インジケータビットが有効化されていない(たとえば、RB=「0」である)ときに、メモリトランザクションが許可されるために、そのようなメモリトランザクションが、DORAビットが有効化された、データ(命令でなく)を読み取るかまたは書き込むための要求であることに留意されたい。
【００９３】
キャッシュメモリデバイスは、データまたは命令がキャッシュメモリデバイスの中に記憶されているかどうかを決定する(812)。データまたは命令がキャッシュメモリデバイスの中に記憶されていない場合、キャッシュメモリデバイスは、メモリデバイスの領域から命令またはデータを取得する(814)。キャッシュメモリデバイスは、取得された命令またはデータを、第1のRIDを含む第2のキャッシュタグとともにキャッシュメモリデバイスにおいて記憶する(816)。キャッシュメモリデバイスは、次いで、命令またはデータを送信する(818)。命令またはデータがキャッシュメモリデバイスの中に記憶されている(たとえば、キャッシュヒットが発生した)場合、キャッシュメモリデバイスは、第1のRIDがキャッシュタグの中の第2のRIDと一致するかどうかを決定する(820)。1つの例示的なシナリオでは、第1のRIDが範囲を示すとき、かつ範囲インジケータビットが有効化されている(たとえば、RB=「1」である)とき、キャッシュメモリデバイスの中に記憶されている命令またはデータは、第1のRIDに関連付けられた一時暗号化鍵に基づいて(たとえば、ソフトウェア保護デバイスにおいて)解読されている。第1のRIDが第2のRIDと一致するとき、キャッシュメモリデバイスは命令またはデータを送信する(822)。そうでなく、第1の範囲識別子が第2の範囲識別子と一致しないとき、キャッシュメモリデバイスは命令またはデータを送信するのを控える(824)。
【００９４】
第2の例示的な方法
図9は、本開示の様々な態様による、キャッシュメモリデバイスにおけるメモリトランザクションのための装置において動作可能な方法900を示す。一態様では、方法900は、ライトアロケート(write-allocate)タイプのキャッシュメモリデバイスまたはライトバック(write-back)タイプのキャッシュメモリデバイスにおいて動作可能であり得る。しかしながら、方法900が任意の他の適切なタイプのキャッシュメモリデバイスにおいて効果的に実施され得ることが諒解され得る。キャッシュメモリデバイスは、メモリデバイスの領域に関連するメモリページにデータを書き込むための要求を受信する(902)。要求は、書き込まれるべきデータ、第1のRID、範囲インジケータビット、および随意のDORAビットを含み得る。たとえば、第1の範囲識別子は、メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする。キャッシュメモリデバイスは、第1のRID、範囲インジケータビット、および/またはDORAビットに基づいて、データを書き込むための要求を許可すべきかそれとも拒否すべきかを決定する(904)。一態様では、キャッシュメモリデバイスは、要求を許可すべきかそれとも拒否すべきかを決定するために、図5の例示的なフロー図500の動作を実施し得る。要求が拒否される場合、キャッシュメモリデバイスは、キャッシュメモリデバイスにおけるメモリページの中にデータを記憶するのを控える(906)。要求が許可される場合、キャッシュメモリデバイスは、第1のRIDが0(または、範囲を示さない所定の特殊値)であるかどうか、および範囲インジケータビットが有効化されていないかどうかを決定する(908)。第1のRIDが0(または、範囲を示さない所定の特殊値)でなく、かつ範囲インジケータビットが有効化されていない(たとえば、RB=「0」である)場合、キャッシュメモリデバイスは、後続の動作に対して第1のRIDを0(または、範囲を示さない所定の特殊値)として定義する(910)。たとえば、図5を参照しながら、メモリトランザクションに対して、第1のRIDが0(または、範囲を示さない所定の特殊値)でなく、かつ範囲インジケータビットが有効化されていない(たとえば、RB=「0」である)ときに、メモリトランザクションが許可されるために、そのようなメモリトランザクションが、DORAビットが有効化された、データを読み取るかまたは書き込むための要求であることに留意されたい。
【００９５】
キャッシュメモリデバイスは、メモリページがキャッシュメモリデバイスにおいて記憶されているかどうかを決定する(912)。メモリページがキャッシュメモリデバイスの中に記憶されていない場合、キャッシュメモリデバイスは、第1のRIDを含むキャッシュタグとともにキャッシュメモリデバイスにおけるメモリページの中にデータを記憶する(914)。一態様では、第1のRIDが0(または、範囲を示さない所定の特殊値)でなく、かつ範囲インジケータビットがメモリページに対して設定されている場合、キャッシュメモリデバイスがフラッシュされた後、第1のRIDに関連付けられたEEKを用いてデータが暗号化される。メモリページがキャッシュメモリデバイスの中に記憶されている場合、キャッシュメモリデバイスは、メモリページに関連付けられたキャッシュタグの中の第2のRIDが第1のRIDと一致するかどうかを決定する(916)。キャッシュメモリデバイスは、第1のRIDが第2のRIDと一致しないとき、キャッシュメモリデバイスにおけるメモリページの中にデータを記憶するのを控える(918)。そうでなく、第1のRIDが第2のRIDと一致するとき、キャッシュメモリデバイスは、第1の範囲識別子を含むキャッシュタグとともにキャッシュメモリデバイスにおけるメモリページの中にデータを記憶する(914)。一態様では、第1の範囲識別子が第2の範囲識別子と一致するときにキャッシュメモリデバイスにおけるメモリページの中に記憶されるデータは、メモリページに対応するメモリデバイスの領域の中に記憶される前に、第1の範囲識別子に関連付けられた一時暗号化鍵を使用して(たとえば、ソフトウェア保護デバイスにおいて)暗号化される。
【００９６】
第3の例示的な方法
図10は、本開示の様々な態様による、キャッシュメモリデバイスにおけるメモリトランザクションのための装置において動作可能な方法を示す。図10において点線を用いて示される動作が随意の動作を表すことを理解されたい。一態様では、キャッシュメモリデバイスは、メモリデバイスに関連する命令またはデータを読み取るための要求(メモリトランザクションとも呼ばれる)を受信し得る(1002)。要求は、メモリデバイスの中の1つまたは複数の選択された領域を含む範囲の識別を可能にする第1の範囲識別子(RID)を含み得る。要求は、範囲インジケータビット(RB)および/または随意のDORAビットをさらに含み得る。キャッシュメモリデバイスは、第1のRID、範囲インジケータビット、および/またはDORAビットに基づいて、要求を許可すべきかそれとも拒否すべきかを決定し得る(1004)。一態様では、キャッシュメモリデバイスは、要求を許可すべきかそれとも拒否すべきかを決定するために、図5の例示的なフロー図500の動作を実施し得る。要求が拒否される場合、キャッシュメモリデバイスは、命令またはデータを送信するのを控えてよい(1006)。要求が許可される場合、キャッシュメモリデバイスは、命令またはデータがキャッシュメモリデバイスにおいて記憶されていないことを決定し得る(1008)。キャッシュメモリデバイスは、命令またはデータがキャッシュメモリデバイスの中に記憶されていないとき、キャッシュメモリデバイスの同じクラスタの中の少なくとも1つのリモートキャッシュメモリデバイスへ要求および第1のRIDを送信し得る(1010)。キャッシュメモリデバイスは、少なくとも1つのリモートキャッシュメモリデバイスから命令またはデータを受信し得る(1012)。キャッシュメモリデバイスは、命令またはデータがキャッシュメモリデバイスの中に記憶されていないとき、キャッシュの異なるクラスタの中の少なくとも1つのリモートキャッシュメモリデバイスへ要求を送信し得る(1014)。キャッシュメモリデバイスは、キャッシュの異なるクラスタの中の少なくとも1つのリモートキャッシュメモリデバイスから命令またはデータを受信し得る(1016)。一態様では、キャッシュの異なるクラスタの中の少なくとも1つのリモートキャッシュメモリデバイスから受信された命令またはデータは、少なくとも1つのリモートキャッシュメモリデバイスに関連するソフトウェア保護デバイスにおいて、一時暗号化鍵に基づいて暗号化され、その後、キャッシュメモリデバイスに関連するソフトウェア保護デバイスにおいて、受信の前に一時暗号化鍵に基づいて解読される。
【００９７】
第4の例示的な方法
図11は、本開示の様々な態様による、キャッシュメモリデバイスにおけるメモリトランザクションのための装置において動作可能な方法を示す。図11において点線を用いて示される動作が随意の動作を表すことを理解されたい。キャッシュメモリデバイスは、キャッシュダンプコマンドを受信する(1102)。キャッシュメモリデバイスは、命令またはデータがキャッシュメモリデバイスの中に現在記憶されているとき、キャッシュメモリデバイスにおいて記憶されているキャッシュタグの中のRIDが0(または、範囲を示さない特殊値)であるかどうかを決定する(1104)。キャッシュタグの中のRIDが0(または、範囲を示さない特殊値)である場合、キャッシュメモリデバイスは、キャッシュタグに関連する命令またはデータを送信する(1106)。そうでなく、キャッシュタグの中の第2のRIDが0(または、範囲を示さない特殊値)と異なるとき、キャッシュメモリデバイスは、キャッシュダンプコマンドに応答して命令またはデータを送信するのを控える。キャッシュメモリデバイスは、引き続き、キャッシュタグの中の第2のRIDが0(または、範囲を示さない特殊値)と異なるとき、キャッシュダンプコマンドに応答して0(「0」)値を送信し得る(1110)。
【００９８】
第5の例示的な方法
図12は、本開示の様々な態様による、ソフトウェア保護デバイスにおけるセキュアなメモリトランザクションのための装置において動作可能な方法を示す。ソフトウェア保護デバイスは、メモリデバイスを読み取るための要求を受信し、要求は、メモリデバイスの中の1つまたは複数の選択された領域に関連付けられている範囲識別子を含む(1202)。ソフトウェア保護デバイスは、メモリデバイスの中の1つまたは複数の選択された領域から取り出された命令またはデータのうちの少なくとも1つを、範囲識別子に関連付けられた一時暗号化鍵に基づいて解読する(1204)。ソフトウェア保護デバイスは、解読された命令または解読されたデータのうちの少なくとも1つを、範囲識別子とともにキャッシュメモリデバイスへ送信する(1206)。
【００９９】
第6の例示的な方法
図13は、本開示の様々な態様による、ソフトウェア保護デバイスにおけるセキュアなメモリトランザクションのための装置において動作可能な方法を示す。ソフトウェア保護デバイスは、メモリデバイスにデータを書き込むための要求を受信し、要求は、メモリデバイスの中の1つまたは複数の選択された領域に関連付けられているRIDを含む(1302)。ソフトウェア保護デバイスは、範囲識別子に関連付けられた一時暗号化鍵に基づいてデータを暗号化する(1304)。ソフトウェア保護デバイスは、暗号化されたデータをメモリデバイスへ送信する(1306)。
【０１００】
本明細書で開示した実装形態に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、またはそれらの任意の組合せとして実装され得ることが当業者にはさらに諒解されよう。この互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、概してそれらの機能の観点から上記で説明された。そのような機能がハードウェアとして実装されるのか、それともソフトウェアとして実装されるのかは、特定の適用例および全体的なシステムに課された設計制約によって決まる。
【０１０１】
本開示内で、「例示的」という単語は、「例、事例、または例示の働きをすること」を意味するために使用される。「例示的」として本明細書で説明する任意の実装形態または態様は、必ずしも本開示の他の態様よりも好ましいかまたは有利であると解釈されるべきでない。同様に、「態様」という用語は、本開示のすべての態様が、説明された特徴、利点、または動作モードを含むことを必要としない。「結合される」という用語は、2つの物体間の直接的または間接的な結合を指すために本明細書で使用される。たとえば、物体Aが物体Bに物理的に接触し、物体Bが物体Cに接触する場合、物体AとCはやはり、直接的に物理的に互いに接触しない場合であっても、互いに結合されると見なされ得る。たとえば、第1のダイが第2のダイにまったく物理的に直接接触していなくても、第1のダイはパッケージの中で第2のダイに結合されてよい。「回路(circuit)」および「回路構成(circuitry)」という用語は広く使用され、電子回路のタイプに関する制限なく、接続および構成されたときに本開示で説明した機能の実行を可能にする電気デバイスおよび導体のハードウェア実装形態と、プロセッサによって実行されたときに本開示で説明した機能の実行を可能にする情報および命令のソフトウェア実装形態の両方を含むものとする。
【０１０２】
本明細書で使用する「決定すること」という用語は、多種多様なアクションを包含する。たとえば、「決定すること」は、計算すること、算出すること、処理すること、導出すること、調査すること、ルックアップすること(たとえば、テーブル、データベース、または別のデータ構造の中でルックアップすること)、確認することなどを含み得る。また、「決定すること」は、受信すること(たとえば、情報を受信すること)、アクセスすること(たとえば、メモリの中のデータにアクセスすること)などを含み得る。また、「決定すること」は、解決すること、選択すること、選ぶこと、確立することなどを含み得る。
【０１０３】
前の説明は、任意の当業者が本明細書で説明した様々な態様を実践することを可能にするために提供される。これらの態様への様々な変更が当業者には容易に明らかになり、本明細書で定義した一般原理は他の態様に適用され得る。したがって、特許請求の範囲は本明細書で示した態様に限定されるものではなく、特許請求の範囲の文言と一致する最大限の範囲を与えられるべきであり、単数形での要素の言及は、そのように明記されていない限り、「唯一無二の」ではなく、「1つまたは複数の」を意味することを意図している。別段に明記されていない限り、「いくつか(some)」という用語は、1つまたは複数を指す。項目の列挙「のうちの少なくとも1つ」を指す句は、単一のメンバーを含むそれらの項目の任意の組合せを指す。一例として、「a、b、またはcのうちの少なくとも1つ」は、a、b、c、aおよびb、aおよびc、bおよびc、ならびにa、b、およびcを包含することを意図している。当業者に知られているか、または後に知られることになる、本開示全体にわたって説明した様々な態様の要素に対するすべての構造的および機能的同等物は、参照により本明細書に明確に組み込まれ、特許請求の範囲によって包含されることが意図される。その上、本明細書で開示したものは、そのような開示が特許請求の範囲において明示的に記載されているかどうかにかかわらず、公に供されるものではない。クレームの要素は、「のための手段」という句を使用して要素が明確に記載されていない限り、または方法クレームの場合、「のためのステップ」という句を使用して要素が記載されていない限り、米国特許法第112条第6項の規定の下で解釈されるべきではない。
【０１０４】
したがって、本明細書で説明され添付図面に示された例に関連する様々な特徴は、本開示の範囲から逸脱することなく、異なる例および実装形態で実施され得る。したがって、いくつかの特定の構成および配置が説明され添付の図面において示されたが、説明した実装形態への様々な他の追加および修正、ならびにそうした実装形態からの削除が当業者には明らかになるので、そのような実装形態は例示にすぎず、本開示の範囲を限定するものではない。したがって、本開示の範囲は、以下の特許請求の範囲の文言、および法的均等物によってのみ決定される。
【符号の説明】
【０１０５】
102  コアデバイス
104  キャッシュメモリデバイス
106  ソフトウェア保護デバイス
108  メモリデバイス
110  範囲
202  コアデバイス
204  キャッシュメモリデバイス
206  ソフトウェア保護デバイス
208  メモリデバイス
210  範囲
212  データを求める要求
214  データを求める要求
216  データを求める要求
218  RIDに関連付けられたメモリデバイスの中の範囲からの暗号化されたデータ
222  解読されたデータ
226  解読されたデータ
228  メモリページにデータを書き込むための要求(データ、RID、RB、DORA)
234  データおよびRID
238  暗号化されたデータ
300  アーキテクチャ
302  ソフトウェア保護デバイス
304  メモリデバイス
306  ストレージ
308  範囲マネージャ
310  鍵ストア
312  メモリ暗号化モジュール
314  RID/EEKペア
316  範囲
318  ターゲットソフトウェア
320  送信
322  直接インターフェース
324  専用インターフェース
326  専用インターフェース
328  暗号化された命令および/またはデータ
332  範囲確立コマンド
400  アーキテクチャ
402  コアデバイス
404  中央処理装置、CPU
406  メモリ管理ユニット、MMU
408  ソフトウェア保護デバイス
410  メモリデバイス
412  範囲マネージャ
414  鍵ストア
416  メモリ暗号化モジュール
418  RIDレジスタ、RID
420  MMUステージ1
422  MMUステージ2
424  範囲インジケータビット、RB
426  範囲インジケータビット、RB
428  範囲
430  RID/EEKペア
432  命令キャッシュメモリデバイス、Iキャッシュ
434  データキャッシュメモリデバイス、Dキャッシュ
436  オペレーティングシステム
438  仮想メモリモニタ、VMM
440  命令フロー、データフロー
442  命令フロー
444  命令フロー
448  データフロー
450  データフロー
456  許可範囲外データビット、DORAビット
462  範囲タグ
464  範囲タグ
466  フィルタデバイス
468  アドバーサリ
470  コマンド
472  第2のキャッシュダンプコマンド
474  コマンド
476  第1のキャッシュダンプコマンド
600  アーキテクチャ
602  コアデバイス
604  中央処理装置、CPU
606  メモリ管理ユニット、MMU
608  ソフトウェア保護デバイス
610  メモリデバイス
612  範囲マネージャ
614  鍵ストア
616  メモリ暗号化モジュール
618  RIDレジスタ、RID
620  MMUステージ1
622  MMUステージ2
624  範囲インジケータビット、RB
626  範囲インジケータビット、RB
628  範囲
630  RID/EEKペア
632  命令キャッシュメモリデバイス、Iキャッシュ
634  データキャッシュメモリデバイス、Dキャッシュ
636  オペレーティングシステム、OS
638  仮想メモリモニタ、VMM
640  命令フロー、データフロー
642  命令フロー
644  命令フロー
646  命令フロー
648  データフロー
650  データフロー
652  データフロー
665  DORAビット
672  アドバーサリ
674  コマンド
676  第2のキャッシュダンプコマンド
678  コマンド
680  第1のキャッシュダンプコマンド
682  出力
684  出力
700  装置
702  通信インターフェース
704  コアデバイス
706  ユーザインターフェース
708  ストレージ
710  メモリデバイス
712  メモリ管理ユニット回路、MMU回路
714  キャッシュメモリデバイス
716  ソフトウェア保護デバイス
718  アンテナ
720  受信機
722  送信機
724  レジスタ
726  ターゲットソフトウェア
728  範囲
730  処理回路
732  受信回路/モジュール
734  キャッシュメモリ制御回路/モジュール
736  送信回路/モジュール
738  記憶回路/モジュール
740  RID一致回路/モジュール
750  記憶媒体
752  受信命令
754  キャッシュメモリ制御命令
756  送信命令
758  記憶命令
760  RID一致命令
770  処理回路
772  受信回路/モジュール
774  暗号化/解読回路/モジュール
776  送信回路/モジュール
780  記憶媒体
782  受信命令
784  暗号化/解読命令
786  送信命令
【図１】
2018524722.tif 000003
【図２】
2018524722.tif 000004
【図３】
2018524722.tif 000005
【図４】
2018524722.tif 000006
【図５】
2018524722.tif 000007
【図６】
2018524722.tif 000008
【図７】
2018524722.tif 000009
【図８】
2018524722.tif 000010
【図９】
2018524722.tif 000011
【図１０】
2018524722.tif 000012
【図１１】
2018524722.tif 000013
【図１２】
2018524722.tif 000014
【図１３】
2018524722.tif 000015
【国際調査報告】
2018524722.tif 000016
2018524722.tif 000017
2018524722.tif 000018