特許第5789320号(P5789320)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

特許5789320デジタルコンテンツを保護する装置および方法
<>
  • 特許5789320-デジタルコンテンツを保護する装置および方法 図000002
  • 特許5789320-デジタルコンテンツを保護する装置および方法 図000003
  • 特許5789320-デジタルコンテンツを保護する装置および方法 図000004
  • 特許5789320-デジタルコンテンツを保護する装置および方法 図000005
  • 特許5789320-デジタルコンテンツを保護する装置および方法 図000006
  • 特許5789320-デジタルコンテンツを保護する装置および方法 図000007
  • 特許5789320-デジタルコンテンツを保護する装置および方法 図000008
  • 特許5789320-デジタルコンテンツを保護する装置および方法 図000009
  • 特許5789320-デジタルコンテンツを保護する装置および方法 図000010
  • 特許5789320-デジタルコンテンツを保護する装置および方法 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5789320
(24)【登録日】2015年8月7日
(45)【発行日】2015年10月7日
(54)【発明の名称】デジタルコンテンツを保護する装置および方法
(51)【国際特許分類】
   H04N 21/443 20110101AFI20150917BHJP
   H04N 21/835 20110101ALI20150917BHJP
【FI】
   H04N21/443
   H04N21/835
【請求項の数】25
【外国語出願】
【全頁数】25
(21)【出願番号】特願2014-47196(P2014-47196)
(22)【出願日】2014年3月11日
(65)【公開番号】特開2014-183579(P2014-183579A)
(43)【公開日】2014年9月29日
【審査請求日】2014年3月11日
(31)【優先権主張番号】13/833,119
(32)【優先日】2013年3月15日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】マンガランパッリ、ジャヤント
(72)【発明者】
【氏名】バンギンウォー、ラジェシュ ピー.
【審査官】 矢野 光治
(56)【参考文献】
【文献】 特開2007−026434(JP,A)
【文献】 特開2010−157224(JP,A)
【文献】 特開2007−286679(JP,A)
【文献】 特開2003−216499(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 21/00−21/858
(57)【特許請求の範囲】
【請求項1】
デジタルコンテンツを複数の断片にパースし、各断片メモリの複数のページのうちの異なるページにそれぞれ憶するコンテンツストレージロジックと、
保護ロジックと
を備え、
前記保護ロジックは、
前記メモリ内に宛先アドレスを有する書き込み命令を受け取り、
前記宛先アドレスが前記デジタルコンテンツの一部を記憶しているメモリストレージロケーションと関連付けられれば、前記メモリストレージロケーションと関連付けられる前記ページを消去し、
前記宛先アドレスが前記デジタルコンテンツのいずれも記憶していない別のメモリストレージロケーションと関連付けられれば、前記書き込み命令の実行を許可する、
コンテンツを保護するプロセッサ。
【請求項2】
暗号化されたデジタルコンテンツを復号し、前記デジタルコンテンツを前記コンテンツストレージロジックに出力する復号ロジックをさらに含む、請求項1に記載のプロセッサ。
【請求項3】
各ページが同じページサイズを有する、請求項1に記載のプロセッサ。
【請求項4】
1つ以上のストレージをさらに含み、各ストレージは前記複数のページのうちのそれぞれのページにおける最後に書き込まれたアドレスを記憶する、請求項1に記載のプロセッサ。
【請求項5】
前記最後に書き込まれたアドレスは、前記複数のページのうちのそれぞれのページにおける先頭アドレスからのオフセットとして記憶される、請求項4に記載のプロセッサ。
【請求項6】
前記保護ロジックは、前記宛先アドレスの表示を前記ストレージの1つに記憶されている前記最後に書き込まれたアドレスの表示と比較して前記宛先アドレスと関連付けられる前記メモリストレージロケーションが前記デジタルコンテンツの一部を記憶しているかどうかを判断する、請求項4または5に記載のプロセッサ。
【請求項7】
前記宛先アドレスが前記複数のページの1つの中の前記最後に書き込まれたアドレスより大きければ、前記保護ロジックは、前記宛先アドレスと関連付けられる前記メモリストレージロケーションが前記デジタルコンテンツのいずれも記憶していないと判断する、請求項4に記載のプロセッサ。
【請求項8】
前記宛先アドレスが前記複数のページのうちの特定のページの先頭と前記最後に書き込まれたアドレスとの間にあれば、前記保護ロジックは、前記宛先アドレスと関連付けられる前記メモリストレージロケーションが前記デジタルコンテンツの一部を記憶していると判断する、請求項4に記載のプロセッサ。
【請求項9】
前記保護ロジックは、前記メモリストレージロケーションが前記デジタルコンテンツの一部を記憶していれば、前記特定のページを消去し、前記最後に書き込まれたアドレスをリセットする、請求項8に記載のプロセッサ。
【請求項10】
データを処理するための処理手段と、
データを記憶するために前記処理手段に結合されたメモリ手段と、
前記メモリ手段に結合されたメモリコントローラ手段と
を備え、
前記メモリコントローラ手段は、前記メモリ手段の中の複数のページにデジタルコンテンツを書き込み、前記複数のページの1つの中のメモリストレージロケーションの宛先アドレスを有する書き込み命令の前記処理手段による受け取りに応答して、
前記メモリストレージロケーションが前記デジタルコンテンツのいずれも記憶していなければ、前記書き込み命令を実行し、
前記メモリストレージロケーションが前記デジタルコンテンツの一部を記憶していれば、前記複数のページの前記1つを消去する、
システム。
【請求項11】
前記メモリコントローラ手段は、複数のレジスタを含み、各レジスタは前記複数のページのうちのそれぞれのページにおける最後に書き込まれたアドレスの先頭アドレスからのオフセットである最後に書き込まれたオフセットを記憶する、請求項10に記載のシステム。
【請求項12】
前記メモリコントローラ手段は、さらに、前記宛先アドレスの前記先頭アドレスからのオフセットである宛先オフセットを前記レジスタの1つに記憶されている前記最後に書き込まれたオフセットと比較して前記宛先アドレスと関連付けられる前記メモリストレージロケーションが前記デジタルコンテンツの一部を記憶しているかどうかを判断する、請求項11に記載のシステム。
【請求項13】
前記宛先オフセットが前記複数のページのうちの特定のページの先頭と前記最後に書き込まれたオフセットとの間にあれば、前記メモリコントローラ手段は、さらに、前記宛先アドレスと関連付けられる前記メモリストレージロケーションが前記デジタルコンテンツの一部を記憶していると判断する、請求項12に記載のシステム。
【請求項14】
前記メモリストレージロケーションが前記デジタルコンテンツの一部を記憶していれば、前記メモリコントローラ手段は、さらに、前記最後に書き込まれたオフセットをリセットする、請求項11に記載のシステム。
【請求項15】
前記宛先オフセットが前記最後に書き込まれたオフセットより大きければ、前記メモリコントローラ手段は、さらに、前記宛先アドレスと関連付けられる前記メモリストレージロケーションが前記デジタルコンテンツのいずれも記憶していないと判断する、請求項12に記載のシステム。
【請求項16】
デジタルコンテンツを複数の断片にパースするステップと、
各断片をメモリの複数のページのうちの異なるページにそれぞれ記憶するステップと、
前記複数のページの1つのページの中のメモリストレージロケーションが前記デジタルコンテンツの一部を記憶しているかどうかを判断するために書き込み命令の宛先アドレスを前記1つのページの最後に書き込まれたアドレスと比較するステップと、
記メモリストレージロケーションが前記デジタルコンテンツの一部を記憶していれば、前記1つのページを消去するステップと、
記メモリストレージロケーションが前記デジタルコンテンツのいずれも記憶していなければ、前記書き込み命令を実行するステップと
を含む方法。
【請求項17】
前記デジタルコンテンツをパースするステップの前に前記デジタルコンテンツを復号するステップをさらに含み、前記デジタルコンテンツをパースするステップでは復号された前記デジタルコンテンツがパースされる、請求項16に記載の方法。
【請求項18】
前記比較するステップは、
前記1つのページが前記宛先アドレスを含むと判断するステップと、
前記宛先アドレスが前記1つのページの最初に書き込まれたアドレスと前記1つのページの前記最後に書き込まれたアドレスとの間であれば、前記メモリストレージロケーションは前記デジタルコンテンツの一部を記憶していると判断するステップと、
前記宛先アドレスが前記1つのページの前記最初に書き込まれたアドレスと前記1つのページの前記最後に書き込まれたアドレスとの間でなければ、前記メモリストレージロケーションは前記デジタルコンテンツのいずれも記憶していないと判断するステップと
を含む、請求項16に記載の方法。
【請求項19】
前記書き込み命令の実行に応答して前記最後に書き込まれたアドレスを更新するステップをさらに含む、請求項16に記載の方法。
【請求項20】
コンピュータに請求項16から19のいずれか1項に記載の方法を実行させるためのプログラム。
【請求項21】
1つ以上のコアと、
メモリの複数のページのうちの第1のページへの書き込み命令の宛先アドレスの前記第1のページの先頭アドレスからのオフセットである書き込みオフセット、第1のストレージに記憶され、前記第1のページの最後に書き込まれたメモリストレージロケーションのアドレスの前記先頭アドレスからのオフセットである最後に書き込まれたオフセットと比し、前記書き込みオフセットが前記最後に書き込まれたオフセットより大きいことに応答して、前記第1のページへの書き込みアクセスのロックを解除する保護ロジックと
を含むプロセッサ。
【請求項22】
前記保護ロジックは、前記第1のページへの前記書き込みアクセスのロックを解除することに加えて、前記書き込み命令の実行を許可する、請求項21に記載のプロセッサ。
【請求項23】
前記書き込み命令の前記実行に応答して、前記第1のストレージの中の前記最後に書き込まれたオフセットを前記書き込みオフセットで置き換える更新ロジックをさらに含む、請求項22に記載のプロセッサ。
【請求項24】
前記保護ロジックは、前記書き込みオフセットが前記最後に書き込まれたオフセット以下であることを示す前記比較に応答して、前記第1のページを消去する、請求項21に記載のプロセッサ。
【請求項25】
前記書き込みオフセットが前記最後に書き込まれたオフセット以下であることを示す前記比較に応答して、前記第1のストレージの中の前記最後に書き込まれたオフセットをリセットする更新ロジックをさらに含む、請求項24に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デジタルコンテンツの保護に関する。
【背景技術】
【0002】
暗号化されたデジタルコンテンツは復号後の攻撃に脆くなり得る。たとえば、復号されたデジタルコンテンツの断片の上書きが攻撃の一部となり得る。攻撃において、データ列の中で後に続くデータがメタデータであるかまたはペイロードデータであるかを示すデータ型インジケータを上書きするように書き込み命令が下され得る。データ型インジケータがペイロードデータの指定からメタデータの指定に上書きされるとペイロードデータへの不正アクセスを許可することがある。すなわち、データ型インジケータの後に続くロケーションに記憶されているデータがペイロードデータではなくメタデータであるとしてラベルが付け換えられたため、かつメタデータは通常保護されないため、(正しくないラベルを付けられた)ペイロードデータはペイロードデータの窃盗を含むことがある不正アクセスを受けることがある。
【図面の簡単な説明】
【0003】
図1】本発明の実施形態によるシステムの一部のブロックダイヤグラムである。
【0004】
図2】本発明の実施形態による別のシステムの一部のブロックダイヤグラムである。
【0005】
図3】本発明の実施形態によってメモリに書き込まれたデジタルコンテンツを示すブロックダイヤグラムである。
【0006】
図4】本発明の実施形態によってデジタルコンテンツを保護する方法のフローダイヤグラムである。
【0007】
図5】本発明の実施形態によるプロセッサコアのブロックダイヤグラムである。
【0008】
図6】本発明の実施形態によるプロセッサのブロックダイヤグラムである。
【0009】
図7】本発明の実施形態によるマルチドメインプロセッサのブロックダイヤグラムである。
【0010】
図8】本発明の実施形態による複数のコアを含むプロセッサの例示である。
【0011】
図9】本発明の実施形態によるシステムのブロックダイヤグラムである。
【0012】
図10】本発明の別の実施形態によるシステムのブロックダイヤグラムである。
【発明を実施するための形態】
【0013】
セキュアなコンテンツ復号のために、たとえばデジタル権利管理(DRM:digital rights management)再生の間に、セキュリティ強化プロセッサ(SEP:Security Enhanced Processor)を用いることができる。コンテンツを復号して、関連ハードウェアに組み込むことができるアクセス制御機構付きの専用メモリである分離メモリ領域(IMR:Isolated Memory Regions)に入れることができる。IMRを利用すればホストプロセッサおよびマルウェアが復号されたコンテンツに直接アクセスすることを防ぐことができ、選ばれたサブシステム(たとえばセキュアなエンジンおよびハードウェアデコーダ)だけがIMRに記憶されたコンテンツにアクセスすることを許可することができる。
【0014】
デコーダがデコードを開始することが可能になる前に、保護された圧縮コンテンツについての情報をデコーダが必要とすることがある。たとえば、デコーダが圧縮データをデコードする前にスライスメタデータおよび保護された実際のコンテンツペイロードのサイズおよびロケーションについての情報が必要なことがある。このためにセキュリティホール、たとえば「カットアンドペースト攻撃」および「プレーンテキストオーバレイ」が可能になってしまう。たとえば、セキュリティエンジンによってデータがパースされるとき復号されたコンテンツ全体(保護されたPAYLOADを含む)が攻撃に起因してホスト実体に提供されることがある。ヘッダ情報の変更にもとづいてセキュリティエンジンが誤ってデータをメタデータと解釈するためである。従って、保護されたペイロードコンテンツをホスト内の不正アプリケーションによって盗むことができるであろう。
【0015】
さらに、暗号ブロック調整されていない小型パケットがコンテンツプロバイダからプレーンテキストマテリアルとして入ってくることがあり、パケットは復号の必要がないとホストがセキュリティエンジンに指定することがある。したがって、攻撃者は「上書きされたプレーンテキスト部」を復号の必要がないコンテンツとして指定することがある。セキュリティエンジンは、ロケーション情報をホストから得る(オフセットによって)点に注意する。その結果、ホストはこうして正しくないデータを送って実際のデータを置き換えることができる可能性がある。
【0016】
この攻撃シナリオは、実際のビデオフレームに合わせて調整されていない不規則なサイズのパケットを送ることができる仕組みの場合に可能である。デコーダ自体にストリーム全体をパースする能力がないハードウェアプラットホームにおいても攻撃が可能である。
【0017】
一例において、この攻撃は既に復号されてIMRに入れられたデータに向けて誘導され得る。IMRをサポートする一部のプラットホームにおいてはセキュリティエンジンだけがIMRへのREAD−WRITEアクセスを有し、他のコンポーネントたとえばデコーダはREAD−ONLYアクセスに限定される。セキュリティエンジンは、復号されたデータが後に続くセキュアなビデオパスコンポーネントだけによって消費されて「上書き」攻撃の可能性をなくすように復号されたデータをロックしてよく、消費後にリセット(たとえばロックを解除)してよい。
【0018】
しかし、所定のデータがいつ消費されるかセキュリティエンジンには分らないことがある。さらに、IMRは各フレームがデコーダによって消費される前に複数のフレームを保持することができる。したがって、たとえばセキュリティエンジンによるデータ書き込みと、たとえばデコーダによるデータ読み出しとが不特定の様式で起こり得る。
【0019】
通常、フレームは消費される前にフレーム全体が復号され、フレームを構成する複数のパケットが連続してセキュリティエンジンに供給される。すなわち、フレームは複数のパケットでできていてよく、これらのパケットは、別のフレームのパケットが復号される前に、フレーム全体が復号されてIMRに入れられるまで、連続して復号されてIMRに入れられる。
【0020】
本発明の実施形態において、IMRはたとえばページあたり(またはブロックあたり)粒度で書込み−ロック−リセット機能を提供してよい。ページ(またはブロック)はシステムニーズに合わせてどのような粒度を有してもよい。ページはシステムスタートアップ時に構成することができる。書き込まれるページ内の最後のオフセットの現行OFFSETがこのページに関連付けられるストレージレジスタに保持されてよい。OFFSETは以下のように書き込みごとに更新されてよい。すなわち新しいオフセットがOFFSETより大きければ書き込みが許可され、OFFSETは書き込まれた最後のロケーションに更新されてよい。言い換えると、OFFSETはストレージレジスタによって「ロック」される。OFFSETより小さなページ内のオフセットへの書き込みが試みられるとOFFSETはゼロにリセット(ページUNLOCKED)されてよく、ページは消去されてよく、ページ内のどのオフセットへの新しい書き込みも許可されてよい。書き込み後にOFFSETは再び更新されてよい。
【0021】
2つの場合にOFFSETより小さなオフセットが試みられてよい。1)は新しいフレームがIMRに書き込まれ/復号される場合である。この場合、通常、OFFSETのリセットおよびページのロック解除が行われる。2)はマルウェアが既存のデータを変更しようとする場合である。この場合、OFFSETのリセットおよびページ全体のクリアランス(たとえば消去)によって変更を防ぐことができる。
【0022】
ページサイズは、フレームサイズに適合するように調節可能または構成可能にすることができる。一例において、たとえば書き込みオフセットとストレージレジスタに記憶されているOFFSETとの比較によって攻撃が検出されるとフレーム全体がクリアされてよい。
【0023】
実施形態において、ファームウェアまたはハードウェアにLOCKおよびRESET機能を実装することができる。たとえば、SEP上で動作するファームウェアはページ属性(たとえば最後に書き込まれたオフセット)を保持し、ソフトウェアでLOCKおよびRESET機能を真似ることができる。SEPファームウェアはセキュアな環境で動作すると予測されるので、結果はハードウェアに実装したとき同等に効果的である。
【0024】
さまざまな実施形態において、たとえばデジタルコンテンツが復号された後に、プロセッサによってデジタルコンテンツの保護が提供されてよい。プロセッサはコンテンツストレージロジックを含んでよい。コンテンツストレージロジックは、デジタルコンテンツを断片にパースし、各断片をメモリの対応するページに記憶させる。プロセッサは保護ロジックも含んでよい。保護ロジックは、パースされたデジタルコンテンツが記憶された後に宛先アドレスを含む書き込み命令を受け取り、書き込み命令の宛先アドレスがデジタルコンテンツの断片を記憶しているメモリロケーションを指せば、保護ロジックはそのページを消去してよい。宛先アドレスがデジタルコンテンツのいずれも記憶していない別のメモリロケーションと関連付けられれば、保護ロジックは書き込み命令を実行してよい。ページに記憶されているデジタルコンテンツが書き込み命令によって標的とされた場合、そのページを消去すれば、消去されたデジタルコンテンツを不正な当事者によるアクセスから保護することができる。
【0025】
次に図1を参照すると、本発明の実施形態によるシステム100の一部のブロックダイヤグラムが示される。図1に示されるように、システム100はセキュリティ強化プロセッサ(SEP)102を含むさまざまなコンポーネントを含んでよい。
【0026】
SEP102は入ってくる命令を復号する復号ロジック112を含んでよい。SEP102はメモリコントローラハブ(MCH:memory controller hub)110を含んでよい。MCH110はコンテンツストレージロジック114および保護ロジック116を含んでよい。保護ロジック116はアドレスストレージロジック118、アドレス比較ロジック120およびページ消去ロジック122を含んでよい。MCH110はアドレスオフセット、たとえば対応するページ内の最後に書き込まれたメモリロケーションのオフセット、を記憶する1つ以上のストレージレジスタ124、124、…、124も含んでよい。図1においてSEP102は高いレベルで描かれていることに注意し、SEP102のようなプロセッサは多数の他の構成要素を含んでよいと理解するべきである。
【0027】
システム100はメモリ150も含んでよい。メモリ150は1つ以上の分離メモリ領域(IMR)を含むアクセス制御されたメモリであってよい。さまざまな実施形態においてメモリ150はダイナミックランダムアクセスメモリ(DRAM:dynamic random access memory)、スタティックランダムアクセスメモリ(SRAM:static random access memory)、または別の種類のストレージメモリであってよい。IMRへのアクセスはMCH110によって判断されてよい。
【0028】
メモリ150はMCH110を介してデコーダ180に結合されてよい。実施形態においてデコーダ180はたとえばSEP102およびメモリ150とともにマザーボード(図示せず)上に配置されてよい。
【0029】
メモリ150の一部は1つ以上のページ154、154、…、154に分けられてよい。実施形態において各ページは同じストレージ容量、たとえば約4キロバイト(kB)、または別のストレージ容量を有してよい。別の実施形態においてページ154〜154の1つ以上はページ154〜154の他のものとストレージ容量が異なってよい。
【0030】
動作するとき、SEP102は暗号化されたデジタルコンテンツ160を受け取ってよく、復号ロジック112は暗号化されたデジタルコンテンツ160を復号して(暗号化されていない)デジタルコンテンツを生成してよい。
【0031】
暗号化されたデジタルコンテンツが復号された後に、MCH110の中のコンテンツストレージロジック114はデジタルコンテンツを1つ以上の断片にパースしてよく、たとえばそれぞれがメモリ150のページ154、154、…、154の1つに対応する断片にパースしてよい。いくつかの実施形態において断片は同じサイズであってよい。他の実施形態において少なくとも1つの断片は他の断片とサイズが異なっていてよい。復号されたコンテンツが断片にパースされた後に、断片はコンテンツストレージロジック114によって記憶させられてよく、各断片は対応するページ154、154、…、154に記憶される。
【0032】
アドレスストレージロジック118は、ページ154、154、…、154のそれぞれの中の最後に書き込まれたメモリロケーションのアドレスを、対応するページの先頭アドレスからのオフセットとして、対応するストレージレジスタ124、124、…、124に記憶させてよい。
【0033】
SEP102はプログラム命令170を受け取ってよい。プログラム命令の1つはページ154、154、…、154の1つの中の宛先アドレスに向けた書き込み命令であってよい。MCH110はどのページ154が書き込み命令の宛先アドレスを含むかを判断してよい。アドレス比較ロジック120は書き込み命令の宛先アドレスの表示をページ154に対応するストレージレジスタ124に記憶されているアドレスの表示と比較してよい。たとえばアドレス比較ロジック120は、書き込み命令の宛先アドレスに対応するオフセットが、ページ154の最後に書き込まれたアドレスに対応するストレージレジスタ124に記憶されているオフセット以下であると判断してよい。書き込み命令は、実行されればページ154に記憶されているデータの一部を上書きするであろう。たとえば上書きされる標的となる記憶されているデータは、ペイロードデータのデータインジケータ型を含んでよい。データインジケータ型が上書きされたら、ペイロードデータはたとえば通常は保護されないメタデータとして誤ってラベル付けされ、それによってペイロードデータは攻撃の対象となるかもしれない。
【0034】
宛先アドレスはストレージレジスタ124に記憶されているオフセットによって表されるアドレス以下であると判断されれば、アドレス比較ロジック120はページ消去ロジック122を起動してページ154を消去してよい。ページ154が消去されるとこのページに記憶されているデジタルコンテンツは不正アクセスの対象とならないことを保証することができる。実施形態において消去した後にページ154は空白のままにされてよい。
【0035】
受け取った書き込み命令の宛先アドレスがストレージレジスタ124に記憶されているアドレスより大きければ書き込み命令は実行されてよく、たとえば追加のデータがページ154に、たとえばページ154の書き込まれていない部分に書き込まれてよい。
【0036】
ページ154、154、…、154のコンテンツはデコーディングのためにMCH110を介してデコーダ180に提供することができ、デコードされたデータはたとえばビデオ、オーディオまたは他の著作権保有コンテンツとして出力されてよい。攻撃シナリオにおいて、ページ154が消去され、ノイズとしてデコードされてよく、デジタルコンテンツ162が攻撃されたことを示すために役立てるとよいノイズとして出力されてよい。
【0037】
次に図2に移ると、本発明の別の実施形態によるシステム200の一部のブロックダイヤグラムが示される。図2に示されるように、システム200はプロセッサ210を含むさまざまなコンポーネントを含んでよい。プロセッサ210はメモリコントローラハブ(MCH)222に結合されてよい。プロセッサ210はコア211、211、…、211を含んでよいマルチコアプロセッサであってよい。プロセッサ210は暗号化されたデジタルコンテンツを復号する復号ロジック212を含んでもよい。
【0038】
MCH222はメモリ220、たとえばダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)または別の種類のメモリ、に結合されてよい。MCH222はコンテンツストレージロジック224および保護ロジック226を含んでよい。保護ロジック226はアドレスストレージロジック228、アドレス比較ロジック230およびページ消去ロジック232を含んでよい。MCH222はメモリ220の中のページのアドレスを、たとえば対応するページの先頭アドレスからのオフセットとしてそれぞれが記憶する1つ以上のストレージレジスタ242、242、…、242も含んでよい。
【0039】
メモリ220は1つ以上のページ240、240、…、240に分けられてよい。実施形態において、各ページは同じ容量、たとえば約4キロバイト(kB)であってよい。別の実施形態において、一部のページはメモリ220内の他のページと容量が異なってよい。
【0040】
メモリ220はMCH222を介してデコーダ280に結合されてよい。デコーダ280はメモリ220に記憶されているデータ(たとえばペイロードデータ)を、たとえばそのデータがページ240、240、…、240に記憶された後にデコードするように構成されてよい。
【0041】
動作するとき、プロセッサ210は暗号化されたデジタルコンテンツ260を受け取ってよく、復号ロジック212は暗号化されたデジタルコンテンツ260を復号して(暗号化されていない)デジタルコンテンツを生成させてよい。メモリ管理コントローラ222内のコンテンツストレージロジック224はデジタルコンテンツを1つ以上の断片にパースしてよく、たとえばそれぞれがページ240、240、…、240の1つに対応する断片にパースしてもよい。いくつかの実施形態において、断片は同じサイズであってよい。他の実施形態において少なくとも1つの断片は他の断片の少なくとも1つとサイズが異なってよく、各断片はページ240、240、…、240の対応する1つにサイズを合わせてもよい。コンテンツストレージロジック224は各断片を対応するページ240、240、…、240に記憶させてよい。
【0042】
メモリ管理コントローラ222の保護ロジック226内のアドレスストレージロジック228はページ240、240、…、240のそれぞれの内部の最後に書き込まれたメモリロケーションの対応するアドレスを対応するストレージレジスタ242、242、…、242に記憶させてよい。実施形態において、各アドレスは対応するページ240、240、…、240の先頭アドレスからの対応するオフセットとして記憶されてよい。
【0043】
プロセッサ210はプログラム命令270を受け取ってよい。プログラム命令270の1つはページ240、240、…、240の1つの内部の宛先アドレスに向けた書き込み命令であってよい。たとえば書き込み命令はページ240内の宛先アドレスを有してよい。
【0044】
アドレス比較ロジック230は書き込み命令の宛先アドレスを、宛先アドレスを含む対応するページのストレージレジスタ、たとえばストレージレジスタ242に記憶されているアドレスと比較してよい。たとえば、宛先アドレスに対応するオフセットが判断され、ストレージレジスタ242に記憶されている最後に書き込まれたオフセットと比較されてよい。宛先アドレスがストレージレジスタ242に記憶されているオフセットによって表されるアドレス以下であるとアドレス比較ロジック230が判断すると、書き込み命令は、実行されれば、ページ240の中の記憶されているデータの一部を上書きするであろう。その結果、アドレス比較ロジック230はページ消去ロジック232を起動してページ240を消去してよい。ページ240を消去すれば、それまでこのページに記憶されていたデジタルコンテンツは、たとえば上書きされるまでペイロードデータが後に続くことを示していたデータ型インジケータの上書きによって起こるかもしれない、不正アクセスを受けないことを保証することができる。
【0045】
宛先アドレスと記憶されているストレージレジスタの中の最後に書き込まれたアドレスとの比較によって(たとえば記憶されているオフセットと宛先アドレスに対応するオフセットとの比較によって)判断された結果、書き込み命令の宛先アドレスは最後に書き込まれたアドレスより後であるとアドレス比較ロジック230が判断すると、書き込み命令の宛先アドレスに書き込みが実行されてよい。宛先アドレスはそれまで書き込まれたことがないので、書き込み命令の実行の結果としてデータが上書きされることはない。
【0046】
図3に移ると、本発明の実施形態によってメモリに記憶されるデジタルコンテンツのブロックダイヤグラムが示される。復号されたデジタルコンテンツ310は第1のデータ型インジケータ302、第1のデータ304、第2のデータ型インジケータ306および第2のデータ308を含んでよい。実施形態において、第1のデータ型インジケータ302は第1のデータ304がメタデータであることを示してよく、第2のデータ型インジケータ306は第2のデータ308がペイロードデータであることを示してよい。
【0047】
メモリ320はロックされていない空白のページ322を含んでよい。メモリ管理コントローラ内のコンテンツストレージロジック(図示せず)はデジタルコンテンツ310の断片をページ322に書き込み、デジタルコンテンツ310の断片を含むページ324を生成してよい。ページ322への書き込み(「最初の書き込み」)が完了した後に、ページ324に書き込まれたデータの最終アドレスに対応する最後に書き込まれたオフセットが対応するストレージレジスタ(図示せず)に記憶されてよい。最初の書き込みが完了した後に、ページ324への別の書き込みを防ぐためにページ324はロックされてよい。
【0048】
その後、ページ324への追加の書き込み命令を受け取ったら、追加の書き込み命令の宛先アドレスに対応するオフセットがページ324に対応するストレージレジスタに記憶されている最後に書き込まれたオフセットと比較されてよい。追加の書き込み命令の宛先アドレスがページ324の中のそれまでの書き込みの最後より後なら(たとえば追加の書き込み命令の宛先アドレスオフセットが記憶されている最後に書き込まれたオフセットより後なら)、ロックされたページ324はロックを解除され(たとえばロックされていないページ325)、追加の書き込み命令が実行されて追加のデータを書き込んでページ326を生成してよい。ページ326は追加の書き込み命令が実行された後にロックされてよい。記憶されている最後に書き込まれたオフセットは対応するストレージレジスタの中で更新されてページ326に記憶されている追加のデータを反映してよい。
【0049】
追加の書き込み命令の宛先アドレスに関連付けられるオフセットと最後に書き込まれたオフセットとの比較により、追加の書き込み命令が既に書き込まれたページアドレスを目的とすることが示されると、ページのコンテンツは消去され(一括消去され)て(空白の)ページ328を生成してよい。最後に書き込まれたオフセットはゼロにリセットされ、ページ328に対応するストレージレジスタに記憶されてよい。ページ326の中の記憶されたデジタルコンテンツを消去すれば、それまでに記憶されたデジタルコンテンツが不正行為の対象とならないことを保証することができる。
【0050】
消去されたページはロックを解除されてページ328へのその後の書き込みを可能にしてよく、この書き込みによってページ330が生成し、ページ330はその後の書き込みが実行された後に再びロックされてよい。記憶されているオフセットはページ330の対応するストレージレジスタの中で更新されてその後の書き込みによるページの占有部分を反映してよい。
【0051】
図4に移ると、本発明の実施形態によってデジタルコンテンツを保護する方法のフローダイヤグラムが示される。ブロック402において開始され、入ってくる暗号化されたデジタルコンテンツはたとえばセキュリティ強化プロセッサ、またはマルチコアプロセッサによって復号されてよい。
【0052】
ブロック404へと続き、復号されたデジタルコンテンツはたとえばメモリコントローラハブによって断片にパースされてよい。たとえば各断片は、たとえば分離メモリ領域(IMR)またはシステムメモリ(たとえばDRAM)の1ページに記憶されるようなサイズにされてよく、一実施形態において各ページは同じストレージ容量(たとえば4kB)を有してよく、または別の実施形態において一部のページのストレージ容量は他のページのストレージ容量と異なってよい。一部のページはデジタルコンテンツが記憶された後に部分的に満たされていてよい。
【0053】
ブロック406に進み、各断片はIMRまたはシステムメモリ内の対応するページに記憶されてよい。ブロック408に移り、各ページ内の最後に書き込まれたメモリロケーションの最後に書き込まれたオフセット(ページ内のアドレスに対応する)は、たとえばメモリコントローラハブの中、またはメモリ、たとえばシステムメモリの中に配置されてよい対応するレジスタに記憶されてよい。
【0054】
ブロック410へ進み、デジタルコンテンツ断片が記憶されているページの1つの内部の宛先アドレスを有する書き込み命令を(プロセッサが)受け取ってよい。意思決定ダイヤモンド412へと続き、たとえば記憶されている最後に書き込まれたオフセットとの比較によって、書き込み命令の宛先アドレスが対応するページ内の最後に書き込まれたメモリロケーションアドレス以下かどうかの判断がプロセッサによって行われてよい。宛先アドレスが最後に書き込まれたメモリロケーションアドレスより大きければ、ブロック414に進み、書き込み命令が実行されてよく、たとえば書き込み命令は追加のデータが対応するページ内の空白のメモリロケーションに書き込まれるようにする。ブロック418に進み、対応するページの記憶されている最後に書き込まれたオフセットは更新されて追加の記憶されたデータを反映してよく、ブロック420へと続き、本方法は終了する。宛先アドレスが最後に書き込まれたメモリロケーションアドレス以下であれば、ブロック416においてページは消去されてよい。ブロック417へ移り、対応するストレージレジスタに記憶されている最後に書き込まれたオフセットは、たとえばゼロにリセットされて消去されたページを反映してよい。ブロック414へ戻り、書き込み命令が実行されてよい。ブロック418へ進み、記憶されている最後に書き込まれた対応するページのオフセットは更新されて追加の記憶されたデータを反映してよく、ブロック420へと続き、本方法は終了する。
【0055】
図4の方法は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせによって実行することができる。図4の実施形態においては高いレベルで示されているが、本発明の範囲はそのように限定されないと理解されるべきである。
【0056】
実施形態は、多数の異なるシステムにおいて実装することができる。たとえば、実施形態は、マルチコアプロセッサなどのプロセッサにおいて実現することができる。次に図5を参照すると、本発明の一実施形態によるプロセッサコアのブロックダイヤグラムが示される。図5に示されるように、プロセッサコア500はマルチコアプロセッサの1つのコアであってよく、マルチステージパイプライン型アウトオブオーダープロセッサとして示されている。
【0057】
図5に示されるように、コア500はフロントエンドユニット510を含む。フロントエンドユニット510は実行される命令をフェッチし、後のプロセッサ内の使用に備えて命令を準備するために用いてよい。たとえば、フロントエンドユニット510はフェッチユニット501、命令キャッシュ503、および命令デコーダ505を含んでよい。いくつかの実装において、フロントエンドユニット510はマイクロコードストレージならびにマイクロオペレーションストレージとともにトレースキャッシュをさらに含んでよい。フェッチユニット501はたとえばメモリまたは命令キャッシュ503からマクロ命令をフェッチし、マクロ命令を命令デコーダ505に供給してプリミティブ、すなわちプロセッサによる実行のためのマイクロオペレーションにデコードしてよい。
【0058】
フロントエンドユニット510と実行ユニット520との間にアウトオブオーダー(OOO:out−of−order)エンジン515が結合される。OOOエンジン515はマイクロ命令を受け取り、実行に備えてマイクロ命令を準備するために用いてよい。より詳しくは、OOOエンジン515はさまざまなバッファを含んでよく、これらのバッファは、マイクロ命令のフローを並べ直し、実行のために必要なさまざまなリソースを割り当てるとともに、たとえばエンジンのリネーミングロジックの使用によってさまざまなレジスタファイル、たとえばレジスタファイル530および拡張レジスタファイル535の内部のストレージロケーションへの論理レジスタのリネーミングを提供する。レジスタファイル530は整数演算および浮動小数点演算のための別々のレジスタファイルを含んでよい。拡張レジスタファイル535はベクターサイズのユニット、たとえばレジスタあたり256または512ビットのためのストレージを提供してよい。
【0059】
実行ユニット520の中には、たとえば他の専用ハードウェアの中でさまざまな整数、浮動小数点、および単一命令複数データ(SIMD:single instruction multiple data)ロジックユニットを含むさまざまなリソースが存在してよい。たとえばそのような実行ユニットは1つ以上の算術演算論理ユニット(ALU:arithmetic logic unit)522を含んでよい。もちろん、他の実行ユニット、たとえば乗算‐加算ユニット等がさらに存在してよい。結果はリタイヤメントロジックに提供されてよく、リタイヤメントロジックはプロセッサのメモリサブシステム560の中に実装されてよい。たとえば実行ユニットおよびフロントエンドロジックを含むさまざまなプロセッサ構造体がメモリサブシステム560に結合されてよい。このメモリサブシステムはプロセッサ構造体とメモリ階層のさらに別の部分、たとえばオンチップキャッシュまたはオフチップキャッシュおよびシステムメモリとの間のインタフェースを提供してよい。図にあるように、サブシステムはメモリオーダーバッファ(MOB:memory order buffer)540を含むさまざまなコンポーネントを有する。より詳しくは、MOB540は実行される命令に関連付けられる情報を受け取るさまざまなアレイおよびロジックを含んでよい。次に、この情報は、命令が正当にリタイヤされ得るかどうか、結果データがプロセッサのアーキテクチャ状態に託され得るかどうか、または命令の適切なリタイヤメントを妨げる1つ以上の例外が発生し得るかどうかを判断するためにMOB540によって検査される。もちろん、MOB540はリタイヤメントに関連付けられる他のオペレーションを取り扱ってよい。
【0060】
図5に示されるように、MOB540はキャッシュ550に結合される。一実施形態においてキャッシュ550は低レベルキャッシュ(たとえばL1キャッシュ)であってよい。メモリサブシステム560は統合メモリコントローラ570も含んでよい。統合メモリコントローラ570はシステムメモリ(例示しやすくするために図5には示されていない)とのコミュニケーションを提供する。メモリサブシステム560はメモリ実行ユニット(MEU:memory execution unit)575をさらに含んでよい。MEU575は、メモリリクエストを開始し、メモリからのデータの復帰を取り扱うさまざまなオペレーションを取り扱う。たとえば、MEU575は断片へのデジタルコンテンツのパーシング、対応するページへの断片のストレージ、各ページの最後に書き込まれたオフセットのストレージ、および書き込み命令がページ内にデジタルコンテンツを含むメモリロケーションに向けられているかどうかの判断を実行してよい。ページ内にデジタルコンテンツを記憶しているメモリロケーションを書き込み命令が目的としていれば、MEU575は、本発明の実施形態について本明細書に記載されているように、宛先メモリロケーションを含むページを消去してよい。
【0061】
メモリサブシステム560からより高いレベルのキャッシュ、システムメモリ等とのデータコミュニケーションが発生してよい。図5の実施形態においてはこの高いレベルで示されているが、本発明の範囲はこの点について限定されないと理解すること。たとえば、図5の実装は、いわゆるx86命令セットアーキテクチャ(ISA:instruction set architecture)どのアウトオブオーダーマシンについてのものであるが、本発明の範囲はこの点について限定されない。すなわち、インオーダープロセッサ、縮小命令セットコンピューティング(RISC:reduced instruction set computing)プロセッサ、たとえばARM系プロセッサ、またはエミュレーションエンジンおよび関連ロジック回路によって異なるISAの命令およびオペレーションをエミュレートすることができる別の種類のISAのプロセッサに他の実施形態が実装されてよい。
【0062】
次に図6を参照すると、本発明の実施形態によるプロセッサのブロックダイヤグラムが示される。図6に示されるように、プロセッサ600はコアドメイン610に複数のコア610〜610を含むマルチコアプロセッサであってよい。一実施形態において各コアは、本発明の実施形態において本明細書に記載されているようにコンテンツストレージロジック、アドレスストレージロジック、アドレス比較ロジック、およびページ消去ロジックを含むメモリ実行ユニット(図示せず)を含んでよい。図6にさらに示されるように、グラフィックスドメイン612に1つ以上のグラフィックス処理ユニット(GPU:graphics processing unit)612〜612が存在してよい。これらのさまざまなコンピュータエレメントは、相互接続615を介してさまざまなコンポーネントを含むシステムエージェントまたは非コア620に結合されてよい。図にあるように、非コア620は最終レベルキャッシュであってよい共有キャッシュ630を含んでよい。
【0063】
さらに、非コアは統合メモリコントローラ640およびさまざまなインタフェース650を含んでよい。本発明のいくつかの実施形態において、メモリコントローラ640は復号されたデジタルコンテンツを断片にパースし、断片をシステムメモリ660の対応するページに記憶させ、各ページの最後に書き込まれたオフセットを記憶させてよい。メモリコントローラ640は、これらのページの1つの中にデジタルコンテンツの一部が記憶されているメモリロケーションの宛先アドレスを書き込み命令が有するかどうかを判断し、有すれば本発明の実施形態によってページを消去してよい。
【0064】
さらに図6を参照すると、プロセッサ600はたとえばメモリバスを介してシステムメモリ660とコミュニケーションしてよい。さらに、インタフェース650によってさまざまなオフチップコンポーネント、たとえば周辺デバイス、マスストレージ等との接続を行うことができる。本発明の範囲は、図6の実施形態においてはこの特定の実装を用いて示されるが、この点について限定されない。
【0065】
次に図7を参照すると、本発明の別の実施形態によるマルチドメインプロセッサのブロックダイヤグラムが示される。図7の実施形態において示されるように、プロセッサ700は複数のドメインを含む。詳しくは、コアドメイン710は複数のコア710〜710を含むことができ、グラフィックスドメイン720は1つ以上のグラフィックスエンジンを含むことができ、さらにシステムエージェントドメイン750が存在してよい。
【0066】
3つのドメインしか示されていないが、本発明の範囲はこの点について限定されず、他の実施形態においては追加のドメインが存在してよいことに注意し理解すること。たとえば、それぞれが少なくとも1つのコアを含む複数のコアドメインが存在してよい。
【0067】
一般に、各コア710はさまざまな実行ユニットおよび追加の処理エレメントに加えて低いレベルのキャッシュをさらに含んでよい。さまざまなコアは互いに結合されてよく、最終レベルキャッシュ(LLC:last level cache)740〜740の複数のユニットで形成される共有キャッシュメモリに結合されてよい。さまざまな実施形態においてLLC740はコアおよびグラフィックスエンジンならびにさまざまな媒体処理回路の間で共有されてよい。従って、図に見られるように、リング相互接続730がコアを一緒に結合し、コア、グラフィックスドメイン720およびシステムエージェント回路750の間の相互接続を提供する。
【0068】
図7の実施形態において、システムエージェントドメイン750はディスプレイコントローラ752を含んでよい。ディスプレイコントローラ752は関連付けられるディスプレイの制御およびインタフェースを提供してよい。さらに図に見られるように、システムエージェントドメイン750はパワーコントロールユニット755を含んでよい。
【0069】
図7においてさらに見られるように、プロセッサ700は統合メモリコントローラ(IMC:integrated memory controller)770をさらに含むことができる。IMC770はシステムメモリ(図示せず)、たとえばダイナミックランダムアクセスメモリ(DRAM)、へのインタフェースを提供することができる。IMC770は、本発明の実施形態によって、復号されたデジタルコンテンツを断片にパースし、断片をシステムメモリの対応するページに記憶させ、各ページの最後に書き込まれたオフセットを記憶させてよい。IMC770は、これらのページの1つの中にデジタルコンテンツの一部が記憶されているメモリロケーションの宛先アドレスを書き込み命令が有するかどうかを判断し(たとえば宛先アドレスの表示とページの最後に書き込まれたオフセットとの比較によって)、有すれば本発明の実施形態によってページを消去してよい。
【0070】
プロセッサと他の回路との間の相互接続を可能にする複数のインタフェース780〜780が存在してよい。たとえば、一実施形態において少なくとも1つの直接媒体インタフェース(DMI:direct media interface)ならびに1つ以上のペリフェラルコンポーネントインターコネクトエクスプレス(Peripheral Component Interconnect Express)(PCIエクスプレス(商標)(PCI Express(商標)))(PCIe(商標)(PCIe(商標)))インタフェースが提供されてよい。さらに、他のエージェント、たとえば追加のプロセッサまたは他の回路の間のコミュニケーションを提供するためにインテル(登録商標)(Intel(登録商標))クイックパスインターコネクト(QPI:Quick Path Interconnect)プロトコルによる1つ以上のインタフェースも提供されてよい。図7の実施形態においてはこの高いレベルで示されるが、本発明の範囲はこの点について限定されないと理解すること。
【0071】
図8を参照すると、複数のコアを含むプロセッサの実施形態が例示される。プロセッサ800は任意のプロセッサまたは処理デバイス、たとえばマイクロプロセッサ、埋め込みプロセッサ、デジタルシグナルプロセッサ(DSP:digital signal processor)、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システム・オン・ア・チップ(SOC:sytem on a chip)、またはコードを実行する他のデバイスを含む。一実施形態においてプロセッサ800は少なくとも2つのコア−コア801および802を含む。コア801および802は非対称コアまたは対称コア(例示される実施形態)を含んでよい。しかし、プロセッサ800は任意の数の処理エレメントを含んでよく、処理エレメントは対称であっても非対称であってもよい。
【0072】
一実施形態において処理エレメントはソフトウェアスレッドをサポートするハードウェアまたはロジックを指す。ハードウェア処理エレメントの例はスレッドユニット、スレッドスロット、スレッド、プロセスユニット、コンテキスト、コンテキストユニット、ロジカルプロセッサ、ハードウェアスレッド、コア、および/またはプロセッサのために状態、たとえば実行状態またはアーキテクチャ状態を保持することができる任意の他のエレメントを含む。言い換えると、一実施形態において処理エレメントはコード、たとえばソフトウェアスレッド、オペレーティングシステム、アプリケーション、または他のコードに独立に関連付けることができる任意のハードウェアを指す。通常、物理プロセッサは集積回路を指し、集積回路は任意の数の他の処理エレメント、たとえばコアまたはハードウェアスレッドを含む可能性がある。
【0073】
多くの場合、コアは独立のアーキテクチャ状態を保持することができる、集積回路に配置されたロジックであって、独立に保持されたアーキテクチャ状態のそれぞれが少なくともいくつかの専用の実行リソースと関連付けられるロジックを指す。コアと対照的に、通常、ハードウェアスレッドは独立のアーキテクチャ状態を保持することができる、集積回路に配置された任意のロジックであって、独立に保持されたアーキテクチャ状態が実行リソースへのアクセスを共有するロジックを指す。図に示されるように、特定のリソースは共有され、他はあるアーキテクチャ状態の専用であると、ハードウェアスレッドとコアとの用語間の境界線は重複する。それでも、コアおよびハードウェアスレッドはオペレーティングシステムによって個別の論理プロセッサとみなされることが多く、オペレーティングシステムは各論理プロセッサ上のオペレーションを個別に計画することができる。
【0074】
図8に例示されるように、物理プロセッサ800は2つのコア、コア801および802を含む。ここでコア801および802は対称コア、すなわち同じ構成、機能ユニット、および/またはロジックを有するコアとみなされる。別の実施形態において、コア801はアウトオブオーダープロセッサコアを含み、コア802はインオーダープロセッサコアを含む。しかし、コア801および802は任意の種類のコア、たとえばネイティブコア、ソフトウェア管理コア、ネイティブ命令セットアーキテクチャ(ISA)を実行するようになっているコア、翻訳されたISAを実行するようになっているコア、共設計されたコア、または他の公知のコアから個別に選ばれてよい。コア802の中のユニットは同じように動作するので、さらに議論をすすめるためにコア801に例示される機能ユニットを下記でさらに詳しく記載する。
【0075】
描かれているように、コア801は2つのハードウェアスレッド801aおよび801bを含む。スレッド801aおよび801bはハードウェアスレッドスロット801aおよび801bと呼ばれることもある。したがって、一実施形態においてソフトウェア実体、たとえばオペレーティングシステムは、プロセッサ800を4つの別個のプロセッサ、すなわち4つのソフトウェアスレッドをコンカレントに実行することができる4つの論理プロセッサまたは処理エレメントとみなす可能性がある。上記で暗に示されたように、第1のスレッドはアーキテクチャ状態レジスタ801aと関連付けられ、第2のスレッドはアーキテクチャ状態レジスタ801bと関連付けられ、第3のスレッドはアーキテクチャ状態レジスタ802aと関連付けられ、第4のスレッドはアーキテクチャ状態レジスタ802bと関連付けられてよい。ここで、アーキテクチャ状態レジスタ(801a、801b、802a、および802b)のそれぞれは上記に記載されたように処理エレメント、スレッドスロット、またはスレッドユニットと呼ばれてよい。例示されるように、アーキテクチャ状態レジスタ801bにおいてはアーキテクチャ状態レジスタ801aが複製され、したがって論理プロセッサ801aおよび論理プロセッサ801bについて個別のアーキテクチャ状態/コンテキストを記憶することができる。コア801において、他の、より小さなリソース、たとえばアロケータおよびリネーマブロック830の中の命令ポインタおよびリネーミングロジックもスレッド801aおよび801bについて複製されてよい。一部のリソース、たとえばリオーダー/リタイヤメントユニット835内のリオーダーバッファ、ILTB820、ロード/ストアバッファ、およびキューはパーティショニングによって共有されてよい。他のリソース、たとえば汎用内部レジスタ、ページ−テーブルベースレジスタ、低レベルデータキャッシュおよびデータTLB815、実行ユニット840、およびアウトオブオーダーユニット835の一部は完全に共有される可能性がある。
【0076】
多くの場合、プロセッサ800は完全に共有されるか、パーティショニングによって共有されるか、または処理エレメントによって/に専用され得る他のリソースを含む。図8において、プロセッサの例示論理ユニット/リソースを有する例のためだけのプロセッサの実施形態が例示される。プロセッサはこれらの機能ユニットのいずれを含んでも省いてもよいだけでなく、描かれていない任意の他の公知の機能ユニット、ロジック、またはファームウェアも含んでよいことに注意すること。例示されるように、コア801は簡略化された代表的なアウトオブオーダー(OOO)プロセッサコアを含む。しかし、異なる実施形態においてはインオーダープロセッサが利用されてよい。OOOコアは実行される/採用される分岐を予測する分岐ターゲットバッファ820および命令のためのアドレス翻訳エントリを記憶する命令翻訳バッファ(I−TLB)820を含む。
【0077】
コア801はフェッチされたエレメントをデコードするためにフェッチユニット820に結合されたデコードモジュール825をさらに含む。一実施形態においてフェッチロジックはスレッドスロット801a、801bとそれぞれ関連付けられる個別のシーケンサを含む。通常、コア801はプロセッサ800上で実行可能な命令を定義する/指定する第1のISAと関連付けられる。多くの場合、第1のISAの一部であるマシンコード命令は、実行される命令またはオペレーションを参照する/指定する命令の断片(オペコードと呼ばれる)を含む。デコードロジック825は、これらの命令をオペコードから認識し、デコードされた命令を第1のISAによって定義されるように処理するためにパイプラインに渡す回路を含む。たとえば、一実施形態においてデコーダ825は特定の命令、たとえばトランザクション命令を認識するように設計されているかまたは適しているロジックを含む。デコーダ825による認識の結果としてアーキテクチャまたはコア801は特定のあらかじめ定義された動作を行って適切な命令と関連付けられるタスクを実行する。本明細書に記載されるタスク、ブロック、オペレーションおよび方法のいずれが単一または複数の命令に応答して実行されてもよく、これらの命令の一部は新しい命令であっても古い命令であってもよいことに注意することが重要である。
【0078】
一例において、アロケータおよびリネーマブロック830はリソース、たとえば命令処理結果を書き込むレジスタファイルを確保するアロケータを含む。しかし、スレッド801aおよび801bはアウトオブオーダー実行の能力を有する可能性があり、この場合、アロケータおよびリネーマブロック830は他のリソース、たとえば命令結果を追跡するリオーダーバッファも確保する。ユニット830はプログラム/命令参照レジスタをプロセッサ800内の他のレジスタにリネームするレジスタリネーマも含んでよい。リオーダー/リタイヤメントユニット835はアウトオブオーダー実行をサポートし、アウトオブオーダー実行された命令のインオーダーリタイヤメントを後でサポートするコンポーネント、たとえば上記で述べたリオーダーバッファ、ロードバッファ、およびストアバッファを含む。
【0079】
一実施形態においてスケジューラおよび実行ユニットブロック840は実行ユニット上の命令/オペレーションを計画するスケジューラユニットを含む。たとえば、利用可能な浮動小数点実行ユニットを有する実行ユニットのポートに浮動小数点命令が計画される。情報命令処理結果を記憶するために、実行ユニットと関連付けられたレジスタファイルも含まれる。例となる実行ユニットは浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、記憶実行ユニット、および他の公知の実行ユニットを含む。
【0080】
実行ユニット840に下位レベルデータキャッシュおよびデータ翻訳バッファ(D−TLB:data translation buffer)850が結合される。データキャッシュは最近用いられた/操作されたエレメント、たとえば、メモリコヒーレンシー状態に保たれている可能性があるデータオペランドを記憶するためにある。D−TLBは最近の仮想/線形アドレスから物理アドレスへの翻訳を記憶するためにある。
【0081】
ここで、コア801および802は最近フェッチされたエレメントをキャッシュするためにある上位レベルまたはファーザーアウトキャッシュ810へのアクセスを共有する。上位レベルまたはファーザーアウトは増加するかまたは実行ユニットから遠ざかるキャッシュレベルを指すことに注意する。一実施形態において、上位レベルキャッシュ810はプロセッサ800上のメモリ階層の最終キャッシュである最終レベルデータキャッシュ、たとえば第2または第3レベルデータキャッシュである。しかし、上位レベルキャッシュ810はそのように限定されない。上位レベルキャッシュ810は命令キャッシュと関連付けられるかまたは命令キャッシュを含むからである。代りに一種の命令キャッシュであるトレースキャッシュがデコーダ825の後に結合されて最近デコードされたトレースを記憶してよい。
【0082】
描かれている構成において、プロセッサ800はコントローラ870も含む。コントローラ870は、本発明の実施形態によって、復号されたデジタルコンテンツを断片にパースし、断片をシステムメモリ875の対応するページに記憶させてよい。コントローラ870は、本発明の実施形態によって、ページの1つの中にデジタルコンテンツの一部が記憶されているメモリロケーションの宛先アドレスを書き込み命令が有するかどうかを判断(たとえば宛先アドレスの表示と最後に書き込まれたページのオフセットとの比較によって)してよく、もし有するならページを消去してよい。
【0083】
このシナリオにおいて、バスインタフェース805はプロセッサ800の外部にあるデバイス、たとえばシステムメモリ875、チップセット(多くの場合、メモリ875と接続するメモリコントローラハブおよび周辺デバイスと接続するI/Oコントローラハブを含む)、メモリコントローラハブ、ノースブリッジ、またはその他の集積回路(図示せず)とコミュニケーションするためにある。このシナリオにおいて、バス805は任意の公知の相互接続、たとえばマルチドロップバス、ポイントツーポイント相互接続、直列相互接続、並列バス、コヒーレント(たとえばキャッシュコヒーレント)バス、層化プロトコルアーキテクチャ、差動バス、およびGTLバスを含んでよい。
【0084】
メモリ875はプロセッサ800専用であってもシステム内の他のデバイスと共有されてもよい。メモリ875の種類の普通の例はDRAM、SRAM、不揮発メモリ(NVメモリ:non−volatile memory)、および他の公知のストレージデバイスを含む。デバイス880はグラフィックアクセラレータ、メモリコントローラハブに結合されたプロセッサまたはカード、I/Oコントローラハブに結合されたデータストレージ、ワイヤレストランシーバ、フラッシュデバイス、オーディオコントローラ、ネットワークコントローラ、または他の公知のデバイスを含んでよいことに注意すること。
【0085】
描かれた実施形態において、コントローラ870はプロセッサ800の一部として例示されることに注意すること。最近は単一のダイ、たとえばSOCの上により多くのロジックおよびデバイスが集積されるので、これらのデバイスのそれぞれがプロセッサ800に組み込まれてよい。たとえば一実施形態において、メモリコントローラハブ870はプロセッサ800と同じパッケージおよび/またはダイにある。ここで、コアの一部(オンコア部分)は他のデバイス、たとえばメモリ875またはグラフィックスデバイス880とインタフェース接続するためのコントローラ870を含む。多くの場合、そのようなデバイスとインタフェース接続するための相互接続およびコントローラを含む構成はオンコア(または非コア設定)と呼ばれる。一例として、バスインタフェース805はメモリ875とインタフェース接続するためのメモリコントローラおよびグラフィックスプロセッサ880とインタフェース接続するためのグラフィックスコントローラを有するリング相互接続を含む。それでも、SOC環境においてさらに多くのデバイス、たとえばネットワークインターフェース、コプロセッサ、メモリ875、グラフィックスプロセッサ880、および任意の他の公知のコンピュータデバイス/インタフェースが単一ダイまたは集積回路に集積されて小さな形状因子に高い機能および低い電力消費を提供してよい。
【0086】
実施形態は、多数の異なるシステム型において実装されてよい。次に図9を参照すると、本発明の実施形態によるシステムのブロックダイヤグラムが示される。図9に示されるように、マルチプロセッサシステム900はポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続950を介して結合された第1のプロセッサ970および第2のプロセッサ980を含む。図9に示されるように、プロセッサ970および980のそれぞれは第1および第2のプロセッサコア(すなわちプロセッサコア974aおよび974bならびにプロセッサコア984aおよび984b)を含むマルチコアプロセッサであってよいが、さらに多数のコアがプロセッサに存在してよい可能性がある。プロセッサのそれぞれはそれぞれのキャッシュを含んでよい。第1のプロセッサ970および第2のプロセッサ980はP−P相互接続952および954をそれぞれ介してチップセット990に結合されてよい。図9に示されるように、チップセット990はP−Pインタフェース994および998を含む。
【0087】
さらに図9を参照すると、第1のプロセッサ970はメモリコントローラハブ(MCH)972ならびにポイントツーポイント(P−P;point−to−point)インタフェース976および978をさらに含む。同様に、第2のプロセッサ980はMCH982ならびにP−Pインタフェース986および988を含む。図9に示されるように、MCH972および982はプロセッサをそれぞれのメモリ、すなわちメモリ932およびメモリ934に結合させる。メモリ932およびメモリ934はそれぞれのプロセッサにローカルに接続されたシステムメモリ(たとえばDRAM)の一部であってよい。MCH972および982のそれぞれは、本発明の実施形態によって、復号されたデジタルコンテンツを断片にパースし、断片を対応するメモリ(932または934)の対応するページに記憶させてよい。MCH972および982はデジタルコンテンツの一部がこれらのページの1つの中に記憶されているメモリロケーションの宛先アドレスを書き込み命令が有するかどうかを判断(たとえば宛先アドレスの表示と最後に書き込まれたページのオフセットとの比較によって)してよく、有すれば本発明の実施形態によってページを消去してよい。
【0088】
さらに、チップセット990はP−P相互接続939によってチップセット990を高性能グラフィックスエンジン938と結合するインタフェース992を含む。チップセット990は、今度はインタフェース996を介して第1のバス916に結合されてよい。図9に示されるように、第1のバス916を第2のバス920に結合するバスブリッジ918に加えて、さまざまな入力/出力(I/O:input/output)デバイス914が第1のバス916に結合されてよい。一実施形態において、たとえばキーボード/マウス922、コミュニケーションデバイス926、およびデータストレージユニット928たとえばディスクドライブまたは他のマスストレージデバイス、を含むさまざまなデバイスが第2のバス920に結合されてよい。さらに、オーディオI/O924が第2のバス920に結合されてよい。実施形態は、モバイルデバイスたとえばスマートセルラーフォーン、ウルトラブック(商標)、タブレットコンピュータ、ネットブックなどを含む他の型のシステムに組み込むことができる。
【0089】
すなわち、他の実施形態において、プロセッサアーキテクチャは、ソースISAと呼ばれる第1のISAの命令をプロセッサが実行することができるように、エミュレーション機能を含んでよく、アーキテクチャはターゲットISAと呼ばれる第2のISAに従う。一般に、OSとアプリケーションプログラムとの両方を含むソフトウェアがソースISAにコンパイルされ、ハードウェアは特別な性能および/またはエネルギー効率機能を有する所定のハードウェア実装のために特に設計されたターゲットISAを実装する。
【0090】
図10を参照すると、本発明の別の実施形態によるシステム1000のブロックダイヤグラムが示される。システム1000はプロセッサ1010およびメモリ1030を含む。プロセッサ1010はシステム・オン・ア・チップ(SOC)であってよく、セキュリティエンジン1012、コアユニット1014、ストレージ1016、およびエンコード/デコードロジック1018を含んでよい。コアユニット1014は1つ以上のコア、キャッシュメモリおよび他のSOCコンポーネントとコミュニケーションするインタフェースを含んでよい。
【0091】
動作するとき、セキュリティエンジン1012は入って来る暗号化されたデータ1020を復号してよい。セキュリティエンジン1012は(暗号化されていない)データを断片にパースしてよく、断片をメモリ1030内の対応するページに記憶させてよい。セキュリティエンジン1012は各ページの最後に書き込まれたアドレスに対応する最後に書き込まれたオフセットを対応するストレージレジスタに記憶させてよい。一実施形態においてストレージレジスタはプロセッサ1010内に配置されてよい。別の実施形態においてストレージレジスタはメモリ1030内に配置されてよい。
【0092】
コアユニット1014は宛先アドレスがページの1つにある書き込み命令を受け取ってよい。セキュリティエンジン1012は最後に書き込まれたオフセットと書き込み命令の宛先アドレスに関連付けられる書き込みオフセットとの比較を行ってよい。セキュリティエンジン1012は最後に書き込まれたオフセットと書き込みオフセットとの比較にもとづいてページへの書き込みアクセスをロックするかまたはロック解除してよい。たとえば、書き込みオフセットが最後に書き込まれたオフセットより大きければセキュリティエンジン1012は対応するページへの書き込みアクセスのロックを解除してよく、書き込みオフセットが最後に書き込まれたオフセット以下であればセキュリティエンジン1012は対応するページへの書き込みアクセスをロックし、最後に書き込まれたオフセットをゼロにリセットし、対応するページのコンテンツを消去(たとえば一括消去)してよい。
【0093】
実施形態は多数の異なる種類のシステムにおいて用いられてよい。たとえば、一実施形態において本明細書に記載されているさまざまな方法および技法を実行するようにコミュニケーションデバイスを構成することができる。実施形態はモバイルデバイス、たとえばスマートセルラーフォーン、タブレットコンピュータ、ネットブック、ウルトラブック(商標)などを含む他の種類のシステムに組み込むことができる。もちろん、本発明の範囲はコミュニケーションデバイスに限定されず、代りに、他の実施形態は命令を処理するための他の種類の装置、またはコンピューティングデバイス上での実行に応答して本明細書に記載される方法および技法の1つ以上をデバイスに実行させる命令を含む1つ以上の機械可読媒体を目的とすることができる。
【0094】
以下の例はさらに別の実施形態に関する。実施形態においてプロセッサはデジタルコンテンツを断片にパースし、各断片をメモリの対応するページに記憶させるコンテンツストレージロジックを含む。プロセッサはメモリ内の宛先アドレスを有する書き込み命令を受け取る保護ロジックを含む。宛先アドレスがデジタルコンテンツの一部を記憶しているメモリロケーションと関連付けられれば、保護ロジックはメモリロケーションと関連付けられるページを消去し、宛先アドレスがデジタルコンテンツのいずれも記憶していない別のメモリロケーションと関連付けられれば、保護ロジックは書き込み命令の実行を許可する。
【0095】
別の実施形態においてプロセッサは暗号化されたデジタルコンテンツを復号し、デジタルコンテンツをコンテンツストレージロジックに出力する復号ロジックを含む。
【0096】
実施形態において各ページは同じページサイズを有する。
【0097】
実施形態においてプロセッサは1つ以上のストレージを含み、各ストレージは対応するページの最後に書き込まれたアドレスの表示を記憶する。実施形態において最後に書き込まれたアドレスの表示は対応するページの先頭アドレスからのオフセットを含む。
【0098】
保護ロジックは宛先アドレスの表示をストレージの1つに記憶されている最後に書き込まれたアドレスの表示と比較して宛先アドレスと関連付けられるメモリストレージロケーションがデジタルコンテンツの一部を記憶しているかどうかを判断してよく、宛先アドレスが最後に書き込まれたアドレスより大きければ保護ロジックは宛先アドレスと関連付けられるメモリストレージロケーションはデジタルコンテンツのいずれも記憶していないと判断してよく、保護ロジックは書き込み命令の実行を許可してよい。
【0099】
宛先アドレスが特定のページの先頭と最後に書き込まれたアドレスとの間にあれば、保護ロジックは特定のページのコンテンツを消去してよく、最後に書き込まれたアドレスの表示をリセットしてよい。
【0100】
実施形態において、システムはプロセッサ、プロセッサに結合されたダイナミックランダムアクセスメモリ(DRAM)、およびDRAMに結合されてDRAMの複数のページにデジタルコンテンツを書き込むメモリコントローラを含む。ページの1つの中のメモリストレージロケーションの宛先アドレスを有する書き込み命令のプロセッサによる受け取りに応答して、メモリコントローラは、メモリストレージロケーションがデジタルコンテンツのいずれも記憶していなければ書き込み命令を実行してよく、メモリストレージロケーションがデジタルコンテンツの一部を記憶していればページを消去してよい。
【0101】
実施形態において、メモリコントローラは複数のレジスタを含み、各レジスタは対応するページの最後に書き込まれたアドレスに対応する最後に書き込まれたオフセットを記憶する。
【0102】
実施形態において、メモリコントローラは宛先アドレスに対応する宛先オフセットをレジスタの1つに記憶されているオフセットと比較して宛先アドレスと関連付けられるメモリストレージロケーションがデジタルコンテンツの一部を記憶しているかどうかを判断してよい。宛先オフセットが特定のページの先頭と最後に書き込まれたオフセットとの間にあれば、メモリコントローラは宛先アドレスと関連付けられるメモリストレージロケーションはデジタルコンテンツの一部を記憶していると判断してよい。
【0103】
メモリストレージロケーションがデジタルコンテンツの一部を記憶していれば、メモリコントローラはページが消去された後に最後に書き込まれたオフセットをリセットしてよい。宛先オフセットが最後に書き込まれたオフセットより大きければメモリコントローラは宛先アドレスに関連付けられるメモリストレージロケーションはデジタルコンテンツのいずれも記憶していないと判断してよい。
【0104】
実施形態において、方法はデジタルコンテンツを断片にパースすること、各断片をメモリの対応するページに記憶させること、書き込み命令の宛先アドレスをページの1つの最後に書き込まれたアドレスと比較して対応するメモリロケーションがデジタルコンテンツの一部を記憶しているかどうかを判断すること、対応するメモリロケーションがデジタルコンテンツの一部を記憶していればページの少なくとも1つを消去すること、および、対応するメモリロケーションがデジタルコンテンツのいずれも記憶していなければ書き込み命令を実行することを含む。
【0105】
本方法はデジタルコンテンツをパースする前にデジタルコンテンツを復号することをさらに含んでよい。
【0106】
比較することは、第1のページが宛先アドレスを含むと判断すること、および宛先アドレスが第1のページの最初に書き込まれたアドレスと第1のページの最後に書き込まれたアドレスとの間にあれば、対応するメモリロケーションがデジタルコンテンツの一部を記憶していると判断することを含んでよい。
【0107】
本方法は、宛先アドレスが第1のページの最初に書き込まれたアドレスと第1のページの最後に書き込まれたアドレスとの間になければ対応するメモリロケーションはデジタルコンテンツのいずれも記憶していないと判断することを含んでよい。本方法は、書き込み命令の実行に応答して対応する最後に書き込まれたアドレスを更新することをさらに含んでよい。
【0108】
実施形態において、少なくとも1つの機械可読媒体はプロセッサ上で実行されると本方法の上記の実施形態の1つ以上を実行するようにプロセッサを構成する1つ以上の命令を含む。
【0109】
実施形態において、装置は本方法の上記の実施形態の1つ以上を実行するように構成されてよい。
【0110】
実施形態において、装置は本方法の上記の実施形態のいずれの方法も実行するための手段も含む。
【0111】
実施形態において、プロセッサは1つ以上のコアと、第1のページへの書き込み命令と関連付けられる書き込みオフセットと第1のストレージに記憶され、第1のページの最後に書き込まれているメモリロケーションと関連付けられる最後に書き込まれたオフセットとの比較に応答してメモリの第1のページへの書き込みアクセスのロックを解除するかどうかを判断する保護ロジックと、を含んでよい。保護ロジックは、書き込みオフセットが最後に書き込まれたオフセットを超えることを示す比較に応答して第1のページへの書き込みアクセスのロックを解除し、書き込み命令の実行を許可してよい。
【0112】
プロセッサは、書き込み命令の実行に応答して第1のストレージの中の最後に書き込まれたオフセットを書き込みオフセットで置き換える更新ロジックを含んでよい。
【0113】
保護ロジックは、書き込みオフセットが最後に書き込まれたオフセット以下であることを示す比較に応答して第1のページを消去してよい。
【0114】
プロセッサは、ページの消去の後に第1のストレージの中の最後に書き込まれたオフセットをリセットする更新ロジックを含んでよい。
【0115】
実施形態は、コードに実装されてよく、命令を記憶してある非一時的ストレージ媒体に記憶されてよい。命令は、命令を実行するようにシステムをプログラムするために用いられることができる。ストレージ媒体はフロッピー(登録商標)ディスク、光ディスク、ソリッドステートドライブ(SSD:solid state drive)、読み取り専用コンパクトディスク(CD−ROM:compact disc read−only memory)、繰り返し書き込み可能コンパクトディスク(CD−RW:compact disc rewritable)、および光磁気ディスクを含む任意の種類のディスク、半導体デバイス、たとえば読み取り専用メモリ(ROM:read−only memory)、ランダムアクセスメモリ(RAM:random access memory)、たとえばダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、消去可能なプログラマブル読み取り専用メモリ(EPROM:erasable programmable read−only memory)、フラッシュメモリ、電気的に消去可能なプログラマブル読み取り専用メモリ(EEPROM:electrically erasable programmable read−only memory)、磁気カードまたは光カード、あるいは電子的な命令を記憶するのに適している任意の他の種類の媒体を含んでよいが、これに限定されるものではない。
【0116】
本発明は、限られた数の実施形態について記載されてきたが、それらの実施形態から多数の変更形および変化形が当業者には自明である。添付の請求項は、本発明の真の技術思想および適用範囲に属するものとしてそのようなすべての変更形および変化形を包含するものとする。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10