説明

メモリ・バックアップ中のデータ操作

【課題】電力分離およびバックアップ・システムを開示する。
【解決手段】電源異常状態が検出される時に、一時ストレージをSDRAMにフラッシュする。フラッシュの後に、インターフェースを停止し、電力を、SDRAMサブシステムを除くチップの大半から除去する。SDRAMサブシステムは、データをSDRAMからフラッシュ・メモリにコピーする。その途中で、データを暗号化し、かつ/またはデータ完全性署名を計算することができる。データを復元するために、SDRAMサブシステムは、データをフラッシュ・メモリからSDRAMにコピーする。その途中で、復元されるデータを暗号化解除し、かつ/またはデータ完全性署名をチェックすることができる。

【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、開示され教示されるすべてに関してこれによって参照によって特に本明細書に組み込まれている、Peter B.Chonが2010年12月20日に出願した米国特許出願第61/424,701号、名称「Low Power Hardware Controlled Memory Backup that includes Encryption and Signature Generation」に基づき、その利益を主張するものである。
【背景技術】
【0002】
コンピュータまたは他の電子システムのコンポーネントのすべてまたはほとんどを、単一の集積回路(チップ)に集積することができる。チップは、ディジタル機能、アナログ機能、混合信号機能、およびラジオ周波数機能のさまざまな組合せを含むことができる。これらの集積回路を、システム・オン・ア・チップ(SoCまたはSOC)と呼ぶ場合がある。通常の応用例は、組込みシステムの分野にある。システム・オン・ア・チップの変形形態が、単一チップ上での多数のRAID機能の集積である。これを、RAIDオン・ア・チップ(ROC)と呼ぶ場合がある。
【0003】
RAIDアレイを、データの消失をまったく伴わずに冗長性およびエラー回復を提供する形で構成することができる。RAIDアレイを、データを複数のディスク・ドライブから同時に読み取るかこれに書き込むことを可能にすることによって、読み書き性能を高めるように構成することもできる。RAIDアレイを、アレイのストレージ・サービスを中断せずに故障したディスクを交換することを可能にする「ホット・スワッピング」を可能にするように構成することもできる。米国カリフォルニア州バークレイのカリフォルニア大学のDavid A.Pattersonらによる1987年の刊行物、名称「A Case for Redundant Arrays of Inexpensive Disks(RAID)」で、RAIDテクノロジの基礎的な概念およびレベルが論じられている。
【0004】
RAIDストレージ・システムは、通常、ストレージ・アレイの管理の詳細からユーザまたはホスト・システムを遮蔽するコントローラを利用する。コントローラは、ストレージ・アレイが1つまたは複数のディスク・ドライブ(またはボリューム)として見えるようにする。これは、特定のボリュームのデータ(または冗長データ)が複数のディスク・ドライブにまたがって拡散される可能性があるという事実にもかかわらず、達成される。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】David A.Pattersonらによる1987年の刊行物、名称「A Case for Redundant Arrays of Inexpensive Disks(RAID)」
【発明の概要】
【課題を解決するための手段】
【0006】
したがって、本発明の実施形態は、揮発性メモリと不揮発性メモリとの間でデータを転送する方法であって、メモリ・アドレス・フィールドを有するコマンド・データ・ブロックを受け取ることであって、メモリ・アドレス・フィールドは、不揮発性メモリ内の位置を示す第1の複数のビットとデータ操作を示す第2の複数のビットとを有する、受け取ることと、示されたデータ操作に基づいて、不揮発性メモリに送られるデータのソースを選択することと、揮発性メモリからソースにデータを転送することと、操作されたデータをソースから受け取ることと、操作されたデータを不揮発性メモリに転送することとを含む方法を含むことができる。
【0007】
したがって、本発明の実施形態は、不揮発性メモリと揮発性メモリとの間でデータを転送する方法であって、メモリ・アドレス・フィールドを有するコマンド・データ・ブロックを受け取ることであって、メモリ・アドレス・フィールドは、揮発性メモリ内の位置を示す第1の複数のビットとデータ操作を示す第2の複数のビットとを有する、受け取ることと、示されたデータ操作に基づいて、揮発性メモリに送られるデータのソースを選択することと、不揮発性メモリからソースへデータを転送することと、操作されたデータをソースから受け取ることと、操作されたデータを揮発性メモリに転送することとを含む方法をさらに含むことができる。
【0008】
したがって、本発明の実施形態は、メモリ・アドレス・フィールドを受け取るデータ操作コントローラであって、メモリ・アドレス・フィールドは、揮発性メモリ内の位置を示す第1の複数のビットとデータ操作を示す第2の複数のビットとを有し、データ操作コントローラは、示されたデータ操作に基づいて、不揮発性メモリに送られるデータのソースを選択する、データ操作コントローラと、揮発性メモリに結合された揮発性メモリ・コントローラであって、揮発性メモリ・コントローラは、揮発性メモリからソースへのデータの転送を容易にするためのものである、揮発性メモリ・コントローラと、不揮発性メモリに結合された不揮発性メモリ・コントローラであって、不揮発性メモリ・コントローラは、操作されたデータをソースから受け取り、操作されたデータを不揮発性メモリに転送するためのものである、不揮発性メモリ・コントローラとを含む集積回路をさらに含むことができる。
【0009】
したがって、本発明の実施形態は、メモリ・アドレス・フィールドを受け取るデータ操作コントローラであって、メモリ・アドレス・フィールドは、揮発性メモリ内の位置を示す第1の複数のビットとデータ操作を示す第2の複数のビットとを有し、データ操作コントローラは、示されたデータ操作に基づいて、揮発性メモリに送られるデータのソースを選択する、データ操作コントローラと、不揮発性メモリに結合された不揮発性メモリ・コントローラであって、不揮発性メモリ・コントローラは、不揮発性メモリからソースへのデータの転送を容易にするためのものである、不揮発性メモリ・コントローラと、揮発性メモリに結合された揮発性メモリ・コントローラであって、揮発性メモリ・コントローラは、操作されたデータをソースから受け取り、操作されたデータを揮発性メモリに転送するためのものである、揮発性メモリ・コントローラとを含む集積回路をさらに含むことができる。
【図面の簡単な説明】
【0010】
【図1】電力分離(power isolation)およびバックアップ・システムを示すブロック図である。
【図2】電力分離の方法を示す流れ図である。
【図3A】データ操作システム構成を示すブロック図である。
【図3B】データ操作システム構成を示すブロック図である。
【図4】コマンド・データ・ブロック(CDB)を示す図である。
【図5】電力分離およびバックアップ・システムを示すブロック図である。
【図6】コンピュータ・システムを示すブロック図である。
【発明を実施するための形態】
【0011】
図1は、電力分離およびバックアップ・システムのブロック図である。図1では、分離およびバックアップ・システム100は、集積回路110、電力制御150、SDRAM 125、および不揮発性メモリ(たとえば、フラッシュ)135を含む。集積回路(IC)110は、SDRAMサブシステム115、制御140、クロック・ジェネレータ141、および他の回路網111を含む。SDRAMサブシステム115は、SDRAMコントローラ120および不揮発性メモリ・コントローラ130を含む。他の回路網111は、一時ストレージ112(たとえば、キャッシュ・メモリ、バッファなど)を含むことができる。SDRAMコントローラ120は、インターフェース121を介してSDRAM 125とインターフェースし、これを制御する。不揮発性メモリ・コントローラ130は、インターフェース131を介して不揮発性メモリ135とインターフェースし、これを制御する。SDRAMサブシステム115(ならびに、したがってSDRAMコントローラ120および不揮発性メモリ・コントローラ130)は、制御140、クロック・ジェネレータ141、他の回路網111、および一時ストレージ112に動作可能に結合される。クロック・ジェネレータ141は、制御140および他の回路網111に動作可能に結合される。
【0012】
電力制御150は、電力供給A(PWRA)160をIC 110に供給する。電力制御150は、電力供給B(PWRB)161をSDRAMサブシステム115に供給する。電力制御150は、電力供給C(PWRC)162をSDRAM 125に供給する。電力制御150は、電力供給D(PWRD)163を不揮発性メモリ135に供給する。電力制御150は、電源異常信号165を制御140に供給する。電力制御150は、信号166によってSDRAMサブシステムにも動作可能に結合される。
【0013】
本願で使用される時に、SDRAM(シンクロナス・ダイナミック・ランダム・アクセス・メモリ)は、すべての揮発性メモリ・テクノロジを含むことが意図されていることを理解されたい。したがって、SDRAMサブシステム115は、一実施形態では、スタティック・ランダム・アクセス・メモリ(SRAM)コントローラを含むことができ、SDRAM 125は、SRAMデバイスを含むことができる。
【0014】
一実施形態では、電力制御150が、電源異常状態(差し迫った電源異常または既存の電源異常のいずれか)を検出する時に、電力制御150は、電源異常信号165を介してその状態についてIC 110に通知する。これは、SDRAMサブシステム115をIC 110の残りおよび特に他の回路網111から分離するための電力分離シーケンスを開始する。一実施形態では、電力分離シーケンス全体が、ソフトウェアからの相互作用を伴わずに、ハードウェア(たとえば、制御140、SDRAMサブシステム115、またはその両方)によって制御される。
【0015】
電源異常状態の通知を受け取った時には、SDRAMサブシステム115に接続されたインターフェース(たとえば、他の回路網111へのインターフェース)のすべてが停止される。オンチップ一時ストレージ112は、フラッシュされる。図1では、一時ストレージ112がSDRAMサブシステム115の外部に図示されているが、一時ストレージ112をSDRAMサブシステム115の一部とすることができることを理解されたい。一例では、一時ストレージ112を、キャッシュ(たとえば、レベル1キャッシュ、レベル2キャッシュ、レベル3キャッシュ)、ポスティング・バッファ(posting buffer)、または類似物とすることができる。
【0016】
一時ストレージ112がフラッシュされた後に、SDRAMサブシステム115に接続された論理は、フラッシュに使用されたインターフェースが停止した時を示す。停止した後に、これらのインターフェースは、新しいサイクルをまったく受け入れていない。インターフェースのすべてが停止された後に、外部デバイスおよび内部コア論理(すなわち、他の回路網111)に必要な入力は、ラッチされ、その結果、それらの状態が、分離が発生する時に失われなくなる。入力がラッチされた後に必要ではないクロックは、ゲート・オフされる。SDRAMサブシステムは、内部生成されるクロックまたはSDRAMサブシステム115と電力を共有するクロック・ジェネレータ(たとえば、クロック・ジェネレータ141)によって生成されるクロックに切り替える。この後に、メモリ・バックアップに必要ではないSDRAMサブシステム115への入力は、分離される。一実施形態では、これらの入力は、インアクティブ状態に駆動される。
【0017】
入力の分離が完了した後に、SDRAMサブシステム115(または制御140)は、PWRA 160を除去するために電力制御150にシグナリングする(たとえば、信号166を使用して)。これは、電力が、IC 110のうちでSDRAMサブシステム115以外のすべてに対してオフに切り替えられることをもたらす。SDRAMサブシステム115は、少なくとも他の回路網111とは別々の電源プレーン上にある。これは、電力が分離およびバックアップ・システム100から完全に失われるまで、SDRAMサブシステムへの電力が維持される(すなわち、PWRB 161によって)ことを可能にする。
【0018】
SDRAMサブシステム115(およびSDRAMサブシステム115が必要とするすべての他の論理)以外のすべてへの電力の分離および除去の制御に加えて、インターフェースが停止し、一時ストレージ112がフラッシュされた後に、内部メモリ・バックアップ論理は、SDRAM 125から不揮発性メモリ135へのデータの移動を開始する。一実施形態では、これらは、PWRAが除去された後にチップ全体で動作する唯一のサイクルである。
【0019】
図1は、電力分離およびその後のメモリ・バックアップに使用できる内部接続のうちのいくつかと一緒に、IC 110チップと外部論理との間の接続を示す。電力制御150が電源異常を検出する時に、電力制御150は、電源異常信号165を介してIC 110に通知する。制御140は、電源異常信号165を監視する。制御140が、電源異常信号165がアサートされているのを見、電力分離が実行を可能にされている時には、制御140は、power_iso_begin信号(図1に明示的には図示せず)をアサートすることによって分離シーケンスを開始するようにSDRAMサブシステム115に通知する。その後、SDRAMサブシステム115は、電力分離シーケンスに必要なステップを実行する。電力分離シーケンスに含まれるステップは、本明細書で後でより詳細に説明する。
【0020】
電力分離シーケンスが完了した後に、少なくともPWRA 160を除去できることを示すために、MSS_core_iso_ready信号(図1に明示的には図示せず)がアサートされる。電力制御150は、PWRA 160をディスエーブルするが、PWRB 161、PWRC 162、およびPWRD 163をイネーブルされたままにする。PWRA 160をディスエーブルすることによって、IC 110のうちでPWRB 161に接続された回路網以外の部分から電力が除去される。SDRAMサブシステム115は、関連するフェーズ・ロック・ループ(たとえば、クロック・ジェネレータ141の内部の)およびIO(たとえば、インターフェース121および131)と一緒に、IC 110の残りとは異なる電源プレーン上にある。このプレーンは、PWRB 161によって電力を与えられ、イネーブルされたままになる。一例では、この別々の電源プレーン上にその回路網の少なくとも一部を有する機能ブロックは、制御140、クロック・ジェネレータ141、およびSDRAMサブシステム115である。一実施形態では、外部SDRAM 125は、PWRC 162によって電力を与えられたままになり、外部不揮発性メモリは、PWRD 163によって電力を与えられたままになる。これは、メモリ・バックアップを実行するために電力を与えられたままにならなければならない、減らされた量の論理である。
【0021】
電力分離シーケンス中に、SDRAMサブシステム115は、適切な時にSDRAM 125メモリ・バックアップを開始する。このバックアップは、必要な(または要求された)データをSDRAM 125から不揮発性メモリ135に移動する。一実施形態では、メモリ・バックアップ全体が、ソフトウェア介入なしで実行される。
【0022】
上で述べ、部分的に図1によって示された、電力供給160〜163を供給するための方法が、分離およびバックアップ・システム100の1つまたは複数のコンポーネントに電力を供給する(および除去する)例示的な形であることを理解されたい。図示の例では、電力供給160〜163とさまざまな電源ドメイン/プレーンの制御とのすべてが、IC 110の外部で実行される。しかし、分離およびバックアップ・システム100の1つまたは複数のコンポーネントに電力を供給する(および除去する)他の方法がある。ある方法は、電圧ごとに単一の外部電源を使用し、その後、IC 110の内部のスイッチを使用して異なる電源ドメイン/プレーンを作成することができる。別の方法は、外部電圧の個数を減らし、異なる電源ドメイン/プレーンを制御するためのIC 110の内部のスイッチと一緒に、さまざまな電圧を得るのに分離およびバックアップ・システム100の1つまたは複数のコンポーネント(たとえば、IC 110)の内部のレギュレータを使用することができる。これらの方法を用いると、電力分離は、ほぼ同一の形で行われる。相違は、電力供給160〜163をイネーブルされたままに保つために通知される必要がある電力制御論理150を、内部また外部に配置できることである。
【0023】
図2は、電力分離の方法の流れ図である。図2に示されたステップを、分離およびバックアップ・システム100の1つまたは複数の要素によって実行することができる。電力を、第1オンチップ・サブシステムのために受け取る(202)。たとえば、他の回路網111に電力を与えるPWRA 160を、IC 110によって受け取ることができる。電源異常状態のインジケータを受け取る(204)。たとえば、電源異常信号165をIC 110によって受け取ることができる。これは、power_iso_begin信号がアサートされる時に電力分離シーケンスが始まることをもたらす。
【0024】
SDRAMサブシステムへのインターフェースを停止させる(206)。一時ストレージをSDRAMにフラッシュする(208)。たとえば、レベル3キャッシュ、レベル2キャッシュ、ポスティング・バッファ、またはSDRAM 125へ/からのデータのコピーを一時的に格納するのに使用される任意の他のタイプのメモリ・ストレージを、フラッシュすることができる。インターフェースのそれぞれに接続された論理は、それらが未解決のサイクルのすべてを完了し、すべての新しいサイクルの受入れを停止した時に、停止表示を返すことができる。
【0025】
ハードウェア制御の下で、オンチップSDRAMサブシステムを分離する(210)。たとえば、SDRAMインターフェース(または一時ストレージ112)が、それがサイクルの受入れを停止したことを示した時に、その入力は、それらをインアクティブ状態にセットすることによって分離される。他のインターフェースからの停止が受け取られた後に、外部コア・デバイスおよび内部論理のために保存される必要がある入力は、ラッチされる。これらの入力は、リセット、PLL用の信号、およびストラップ入力などを含む。この時点で、SDRAMサブシステムがもはや必要としないすべてのクロックをゲート・オフして、電力消費削減を助けることができる。ある時間の後に、SDRAMサブシステムへの入力のすべてを分離し、これらをインアクティブ状態にセットするように指示する信号(たとえば、MSS_core_iso_enable)をアサートすることができる。
【0026】
第1オンチップ・サブシステムによって使用されるクロックおよび電力をゲート・オフする(212)。たとえば、一時ストレージ112に行くクロックを、内部で生成されるクロックに切り替えることができる。入力が分離された後に、信号(たとえば、MSS_core_iso_ready)をアサートすることができる。これは、電力制御論理150に、たとえばIC 110に接続されたPWRA 160を現在はディスエーブルできることを示す。
【0027】
SDRAMサブシステムによって使用されるクロックを生成する(214)。たとえば、クロック・ジェネレータ141は、PWRA 160がオフである時に使用される、SDRAMサブシステムによって使用されるクロックを生成することができる。データをSDRAMから不揮発性メモリにコピーする(216)。たとえば、SDRAM 125から不揮発性メモリ135へのメモリ・バックアップを、信号(たとえば、flash_offload_begin)をアサートすることによって開始することができる。SDRAMサブシステム、SDRAM、および不揮発性メモリから電力を除去する(218)。たとえば、メモリ・バックアップの完了時に電力制御150の制御の下で、または単に分離およびバックアップ・システム100全体への電力に障害が発生したのでのいずれかで、電力が、SDRAMサブシステム115、SDRAM 125、および不揮発性メモリ135から除去される。
【0028】
バックアップ中にSDRAMサブシステム115の電力を分離することの利益は、減らされた量の電力が消費されることである。メモリ・バックアップを処理するIC 110の内部の論理、外部のSDRAM 125、および不揮発性メモリ135だけが、電力を与えられる。電力消費を減らすことによって、残りの電力のすべてが消費される前にメモリ・バックアップを実行するのに使用可能な時間の長さが増える。より長い時間を有することは、バックアップが完了するまで電力を維持するために、より少ない外部論理が必要であることに加えて、より多くのメモリをバックアップすることを可能にする。電力分離が行われているので、メモリ・バックアップを行うのに必要な電力消費および全体的なシステム・コストを下げるために、フラッシュ・コントローラを内部に移動することが有利である可能性がある。
【0029】
一実施形態では、SDRAM 125内のデータが不揮発性メモリ135に移動されるので、暗号化および/またはデータ完全性署名計算を実行することによって、追加のデータ保護が、バックアップされるデータについて提供される。データの暗号化は、データを格納するセキュアな方法を提供する。データ完全性署名計算は、発生する可能性が高いほとんどのデータ・エラーに対して保護する。
【0030】
SDRAMサブシステム115は、メモリ・バックアップまたはメモリ復元が要求される時に、SDRAM 125と不揮発性メモリ135との間でデータを移動する。SDRAMサブシステム115は、要求されるデータ移動を示すためにCDB(コマンド・データ・ブロック)のリストを使用することができる。これらのCDBのフォーマットは、通常は事前に定義される。CDB内のフィールドの1つは、SDRAM 125内のどこでデータを読み取りまたは書き込むべきなのかを示すメモリ・アドレス・フィールドである。一実施形態では、このフィールドで提供されるアドレス・ビットの個数は、SDRAM 125のすべてをアドレッシングするのに必要な個数を超える。必要ではないこれらのアドレス・ビットのいくつかを、データがSDRAM 125へ/から移動される時にそのデータがどのように操作されるべきかに関する情報をエンコードするのに使用することができる。この移動は、メモリ・バックアップまたはメモリ復元が実行される時あるいは他の時に発生する可能性がある。未使用アドレス・ビットのエンコーディングは、データを暗号化/暗号化解除しなければならないのかどうか、署名生成が要求されるのかどうか、署名をオフロードしまたはリセットしなければならないのかどうか、およびどの署名エンジンを使用すべきかを示すことができる。
【0031】
不揮発性メモリ・コントローラ130からSDRAM 125を読み取る/書き込む要求が受け取られる時に、前述の未使用アドレス・ビットを解釈して、データがSDRAMサブシステム115を介してSDRAM 125と不揮発性メモリ135との間で移動する時にどのデータ操作を実行すべきかを判定することができる。
【0032】
一実施形態で、図3Aおよび3Bは、データ操作システム構成のブロック図である。図3Aでは、データ操作システム300は、SDRAMコントローラ310、フラッシュ・コントローラ320、制御330、署名エンジン340、暗号化/暗号化解除エンジン350、およびマルチプレクサ(MUX)360を含む。制御330は、SDRAMコントローラ310、フラッシュ・コントローラ320、署名エンジン340、暗号化/暗号化解除エンジン350、およびMUX 360に動作可能に結合される。したがって、制御330は、フラッシュ・コントローラ320からコマンド、信号、CDBなどを受け取り、調停を実行し、他の形でデータ操作システム300のデータ・フローおよび構成を管理することができる。
【0033】
図3Aでは、SDRAMコントローラ310は、結合371を介して、SDRAM(図3Aには図示せず)から読み取られたデータを署名エンジン340、暗号化/暗号化解除エンジン350、およびMUX 360の第1入力に送るように構成される。暗号化/暗号化解除エンジン350は、結合372を介して、暗号化されたデータをMUX 360の第2入力に送るように構成される。署名エンジン340は、結合373を介して、データ完全性署名をMUX 360の第3入力に送るように構成される。MUXは、制御330によって、SDRAMから読み取られた未変更のデータ、暗号化されたデータ、またはデータ完全性署名のうちの1つをフラッシュ・コントローラ320に送るように制御される。フラッシュ・コントローラ320は、SDRAMから読み取られた未変更のデータ、暗号化されたデータ、またはデータ完全性署名をフラッシュ・メモリ(図3Aには図示せず)に格納することができる。
【0034】
図3Aは、SDRAM(たとえば、SDRAM 125)から読み取る要求が、制御330によってフラッシュ・コントローラ320から受け取られた時のデータ・フローおよび制御の構成を示す。一実施形態では、この構成およびフローは、SDRAMメモリのバックアップが要求される時に使用される。一実施形態では、署名エンジン340および暗号化/暗号化解除エンジン350が、読取り要求と書込み要求との両方に使用される。フラッシュ書込み要求(SDRAM読取りに対応する)のデータ接続およびフローは、図3Aに示されている。フラッシュ読取り要求(SDRAM書込みに対応する)のデータ接続は、図3Bに示されている。
【0035】
フラッシュ・コントローラ320は、読取り要求を制御330に送る。この要求のエンコードされたアドレス・ライン(または専用フィールド)が、制御330によって調べられて、SDRAMコントローラ310から返されつつある読取りデータからの読取りデータをどこにルーティングすべきかおよびデータ操作が要求される場合にどのデータ操作が要求されているのかが判定される。一実施形態では、アドレス・ビット[46:40]は、次のようなエンコーディングおよびマッピングを含む。ビット40〜42(SES[0:2])は、8つの署名エンジン340のうちのどれが、エンコーディングの他のビットによって指定されるアクション(存在する場合に)を行うべきかを指定し、ビット43(SG)は、指定されたシグネチャ・エンジンが入力として読取りデータを使用してデータ完全性署名を生成すべきかどうかを決定し、ビット44(SO)は、指定されたシグネチャ・エンジンに、データ完全性署名(MUX 360の状態に応じて、格納のためにフラッシュ・コントローラ320に送られる場合がある)を出力するように指示し、ビット45(SR)は、指定されたシグネチャ・エンジンのデータ完全性署名をリセットし、ビット46(E/D)は、暗号化/暗号化解除エンジン350の出力からの暗号化されたデータをフラッシュ・コントローラ320に送るべきなのかどうかを決定する。
【0036】
図4は、コマンド・データ・ブロック(CDB)の図である。図4では、アドレス・ビット0〜46のアドレス・フィールドが示されている。使用されるSDRAMアドレス・ビットを指定するSDRAMアドレス・ビット内のフィールド(A[0:39])およびエンコードされたアドレス・ビットのフィールド(A[40:46])も図示されている。エンコードされたアドレス・ビットの個々のビット・フィールド(SES[0:2]、SG、SO、SR、およびE/D)も図示されている。
【0037】
理解できるように、アドレス・ビット40〜46のエンコーディングに基づいて、3つの異なるソースのうちの1つがフラッシュ・コントローラ320によって使用されることをもたらす指示が、MUX 360に送られる。このデータは、SDRAMコントローラ310、暗号化/暗号化解除エンジン350、または署名オフロードの場合には署名エンジン340のうちの1つのいずれかから直接に来る。エンコーディングが、暗号化を実行することを指示する場合には、暗号化/暗号化解除エンジン350は、制御330によって制御されて、SDRAMコントローラ310からの読取りデータを受け取る。暗号化/暗号化解除エンジン350が、SDRAMコントローラ310からのデータを受け取った後に、暗号化/暗号化解除エンジン350は、データ暗号化を実行し、結果をフラッシュ・コントローラ320へのルーティングのためにMUX 360に送り、MUX 360がそのデータを受け入れるのを待つ。
【0038】
エンコーディングは、フラッシュ・メモリに転送されるデータに対して署名生成を行わなければならないのかどうかをも示す。8つの署名エンジン340のうちの、エンコーディングの署名エンジン選択(SES[0:2])フィールドによって示される1つは、そのCRC/チェックサム署名値を更新しなければならないことを通知される。データがフラッシュ・コントローラ320に直接にまたは暗号化/暗号化解除エンジン350に送られるのと並列に、そのデータは、少なくとも指定された署名エンジン340にも送られる。選択された署名エンジン340が、これらのブロックのいずれかによってSDRAMデータが受け入れられるのを見た後に、現在のCRC/チェックサム署名が、そのデータを使用して更新される。最後に、エンコーディングは、署名オフロードを出力しなければならないのかどうかを示す。署名オフロードが要求される場合には、読取りコマンドは、制御330によってSDRAMコントローラ310に発行はされない。そうではなく、制御330は、選択された署名エンジン340に、データ完全性署名データをフラッシュ・コントローラ320に送るように指示する。
【0039】
図3Bでは、フラッシュ・コントローラ320は、結合381を介して、フラッシュ・メモリ(図3Bには図示せず)から読み取られたデータを署名エンジン340、暗号化/暗号化解除エンジン350、およびMUX 361の第1入力に送るように構成される。暗号化/暗号化解除エンジン350は、結合382を介して、暗号化されたデータをMUX 361の第2入力に送るように構成される。署名エンジン340は、結合383を介して、選択されたデータ完全性署名の現在の値を示すように構成される。MUX 361は、制御330によって、フラッシュ・メモリから読み取られた未変更のデータ(フラッシュ・コントローラ320を介する)または暗号化解除されたデータをSDRAMコントローラ310に送るように制御される。SDRAMコントローラ310は、フラッシュ・メモリから読み取られた未変更のデータまたは暗号化解除されたデータをSDRAM(図3Bには図示せず)内に格納することができる。
【0040】
フラッシュ読取り要求(SDRAM書込みに対応する)用のデータ接続が、図3Bに示されている。一実施形態では、このフローは、SDRAMメモリに戻すデータの復元が要求される時に使用される。制御330は、フラッシュ・コントローラ320から書込みコマンドを受け取ることができる。制御330は、SDRAMコントローラ310に書込み要求を発行することができる。要求のエンコードされたアドレス・ラインは、SDRAMコントローラに送られつつある(フラッシュ・コントローラ320から)書込みデータからの書込みデータをどこにルーティングすべきかおよびデータ操作が要求される場合にどのデータ操作が要求されているのかを判定するために調べられる。図3Aの議論で説明されたものと同一のエンコーディングを使用することができる。エンコーディングに基づいて、フラッシュ・コントローラ320からの未変更のデータまたは暗号化/暗号化解除エンジン350からの暗号化解除されたデータのいずれかが、SDRAMコントローラ310に送るためにMUX 361によって選択される。エンコーディングが、暗号化解除を実行することを指示する場合には、暗号化/暗号化解除エンジン350は、フラッシュ・コントローラ320からのデータを受け入れるように制御される。暗号化/暗号化解除エンジン350がフラッシュ・コントローラ320からデータを受け入れた後に、暗号化/暗号化解除エンジン350は、データ暗号化解除を実行し、その結果をSDRAMコントローラ310に送り、SDRAMコントローラ310がそのデータを受け入れるのを待つ。エンコーディングは、署名生成が、SDRAMに転送されるデータについて行われる必要があるのかどうかをも示す。8つの署名エンジン340のうちの、エンコーディングのSES[0:2]フィールドによって示される1つが、そのCRC/チェックサム署名値を更新するように制御される。署名生成は、必ず暗号化解除されたデータに対して行われる。したがって、署名エンジン340は、フラッシュ・コントローラ320からのデータまたは暗号化/暗号化解除エンジン350からの暗号化解除結果の間で選択して、データ完全性署名値を更新するように制御される。データがフラッシュ・コントローラまたは暗号化/暗号化解除エンジン350のいずれかからSDRAMコントローラ310に送られるのと並列に、そのデータは、選択された署名エンジン340にも送られる。選択された署名エンジン340が、データがSDRAMコントローラ310によって受け入れられるのを見た後に、現在のCRC/チェックサム署名が、そのデータを使用して更新される。最後に、8つのデータ完全性署名のうちの1つの現在の値を、結合383を介してソフトウェアによって選択し、読み取ることができる。この値を、ソフトウェアによって、フラッシュ・メモリからSDRAMに復元されるバックアップ署名と比較することができる。これは、データがバックアップされるか復元される間にデータ・エラーが発生しなかったことを検証するために行うことができる。
【0041】
図5は、電力分離およびバックアップ・システムのブロック図である。図5では、分離およびバックアップ・システム500は、集積回路510、電力制御550、SDRAM 525、および不揮発性メモリ(たとえば、フラッシュ)535を含む。集積回路(IC)510は、SDRAMサブシステム515、制御540、クロック・ジェネレータ541、および他の回路網511を含む。SDRAMサブシステム515は、SDRAMコントローラ520、不揮発性メモリ・コントローラ530、およびデータ操作570を含む。他の回路網511は、一時ストレージ512(たとえば、キャッシュ・メモリ、バッファ、その他)を含む。SDRAMコントローラ520は、インターフェース521を介してSDRAM 525とインターフェースし、これを制御する。不揮発性メモリ・コントローラ530は、インターフェース531を介して不揮発性メモリ535とインターフェースし、これを制御する。SDRAMサブシステム515(および、したがってSDRAMコントローラ520、不揮発性メモリ・コントローラ530、およびデータ操作570)は、制御540、クロック・ジェネレータ541、他の回路網511、および一時ストレージ512に動作可能に結合される。クロック・ジェネレータ541は、制御540および他の回路網511に動作可能に結合される。
【0042】
電力制御550は、電力供給A(PWRA)560をIC 510に供給する。電力制御550は、電力供給B(PWRB)561をSDRAMサブシステム515に供給する。電力制御550は、電力供給C(PWRC)562をSDRAM 525に供給する。電力制御550は、電力供給D(PWRD)563を不揮発性メモリ535に供給する。電力制御550は、電源異常信号565を制御540に供給する。電力制御550は、信号566によってSDRAMサブシステムにも動作可能に結合される。
【0043】
一実施形態では、電力制御550が、電源異常状態(差し迫った電源異常または既存の電源異常のいずれか)を検出する時に、電力制御550は、その状態について電源異常信号565を介してIC 510に通知する。これは、SDRAMサブシステム515をIC 510の残り、特に他の回路網511から分離するための電力分離シーケンスを開始する。一実施形態では、電力分離シーケンス全体が、ソフトウェアからの相互作用を伴わずに、ハードウェア(たとえば、制御540、SDRAMサブシステム515、またはその両方)によって制御される。
【0044】
電源異常状態の通知を受け取った時に、SDRAMサブシステム515に接続されたインターフェースのすべて(たとえば、他の回路網511へのインターフェース)が停止される。オンチップ一時ストレージ512は、フラッシュされる。図5では、一時ストレージ512が、SDRAMサブシステム515の外部に図示されているが、一時ストレージ512をSDRAMサブシステム515の一部とすることができることを理解されたい。一例では、一時ストレージ512を、キャッシュ(たとえば、レベル1キャッシュ、レベル2キャッシュ、レベル3キャッシュ)、ポスティング・バッファ、または類似物とすることができる。
【0045】
一時ストレージ512がフラッシュされた後に、SDRAMサブシステム515に接続された論理は、フラッシュに使用されたインターフェースが停止した時を示す。停止した後に、これらのインターフェースは、新しいサイクルをまったく受け入れていない。インターフェースのすべてが停止された後に、外部デバイスおよび内部コア論理(すなわち、他の回路網511)に必要な入力は、ラッチされ、その結果、それらの状態が、分離が発生する時に失われなくなる。入力がラッチされた後に必要ではないクロックは、ゲート・オフされる。SDRAMサブシステムは、内部生成されるクロックまたはSDRAMサブシステム515と電力を共有するクロック・ジェネレータ(たとえば、クロック・ジェネレータ541)によって生成されるクロックに切り替える。この後に、メモリ・バックアップに必要ではないSDRAMサブシステム515への入力は、分離される。一実施形態では、これらの入力は、インアクティブ状態に駆動される。
【0046】
入力の分離が完了した後に、SDRAMサブシステム515(または制御540)は、PWRA 560を除去するために電力制御550にシグナリングする(たとえば、信号566を使用して)。これは、電力が、IC 510のうちでSDRAMサブシステム515以外のすべてに対してオフに切り替えられることをもたらす。SDRAMサブシステム515は、少なくとも他の回路網511とは別々の電源プレーン上にある。これは、電力が分離およびバックアップ・システム500から完全に失われるまで、SDRAMサブシステムへの電力が維持される(すなわち、PWRB 561によって)ことを可能にする。
【0047】
SDRAMサブシステム515(およびSDRAMサブシステム515が必要とするすべての他の論理)以外のすべてへの電力の分離および除去の制御に加えて、インターフェースが停止し、一時ストレージ512がフラッシュされた後に、内部メモリ・バックアップ論理は、SDRAM 525から不揮発性メモリ535へのデータの移動を開始する。一実施形態では、これらは、PWRAが除去された後にチップ全体で動作する唯一のサイクルである。
【0048】
一実施形態では、データがSDRAM 525へまたはこれから不揮発性メモリ535からまたはこれへ移動される時に、そのデータを、データ操作570によって操作することができる。データ操作570は、図3Aおよび3Bのデータ操作システム300に関して前に説明したものと同一の形で構成され、動作し、機能する。したがって、短くいえば、データ操作570を、データを暗号化/暗号化解除し、かつ/またはデータ完全性署名を計算/チェックするように構成することができる。一実施形態では、データ操作570の機能、データ・フロー、および構成を、PWRA 560がオフである間に実行することができる(たとえば、暗号化されたデータを保存し、かつ/またはデータ完全性署名を計算し、格納するために)。もう1つの実施形態では、データ操作570の機能、データ・フロー、および構成を、PWRA 560がオンである間に実行することができる(たとえば、暗号化されたデータを復元し、かつ/またはデータ完全性署名を計算し、格納するために)。
【0049】
上で説明した方法、システム、およびデバイスを、コンピュータ・システム内で実施するか、コンピュータ・システムによって格納することができる。上で説明した方法を、コンピュータ可読媒体に格納することもできる。本明細書で説明されるデバイス、回路、およびシステムを、当技術分野で入手可能なコンピュータ支援設計ツールを使用して実施し、そのような回路のソフトウェア記述を含むコンピュータ可読ファイルによって実施することができる。これは、分離およびバックアップ・システム100および500、IC 110および510、電力制御150および550、SDRAMサブシステム115および515、ならびにそのコンポーネントを含むが、これらに限定はされない。これらのソフトウェア記述は、挙動記述、レジスタ転送記述、論理コンポーネント記述、トランジスタ記述、およびレイアウト・ジオメトリレベル記述とすることができる。さらに、ソフトウェア記述を、記憶媒体上に格納するか、搬送波によって通信することができる。
【0050】
そのような記述を実施できるデータ・フォーマットは、Cなどの挙動言語をサポートするフォーマット、VerilogおよびVHDLなどのレジスタ転送レベル(RTL)言語をサポートするフォーマット、ジオメトリ記述言語をサポートするフォーマット(GDSII、GDSIII、GDSIV、CIF、およびMEBESなど)、ならびに他の適切なフォーマットおよび言語を含むが、これらに限定はされない。さらに、機械可読媒体上のそのようなファイルのデータ転送を、インターネット上の多様な媒体を介してまたはたとえば電子メールを介して電子的に行うことができる。物理ファイルを、4mm磁気テープ、8mm磁気テープ、3−1/2インチ・フロッピ媒体、CD、DVD、その他などの機械可読媒体上で実施できることに留意されたい。
【0051】
図6は、コンピュータ・システムのブロック図を示す。コンピュータ・システム600は、通信インターフェース620、処理システム630、ストレージ・システム640、およびユーザ・インターフェース660を含む。処理システム630は、ストレージ・システム640に動作可能に結合される。ストレージ・システム640は、ソフトウェア650およびデータ670を格納する。処理システム630は、通信インターフェース620およびユーザ・インターフェース660に動作可能に結合される。コンピュータ・システム600は、プログラムされた汎用コンピュータを含むことができる。コンピュータ・システム600は、マイクロプロセッサを含むことができる。コンピュータ・システム600は、プログラム可能回路網または特殊目的回路網を含むことができる。コンピュータ・システム600を、一緒に要素620〜670を含む複数のデバイス、プロセッサ、ストレージ、および/またはインターフェースの間で分散させることができる。
【0052】
通信インターフェース620は、ネットワーク・インターフェース、モデム、ポート、バス、リンク、トランシーバ、または他の通信デバイスを含むことができる。通信インターフェース620を、複数の通信デバイスの間で分散させることができる。処理システム630は、マイクロプロセッサ、マイクロコントローラ、論理回路、または他の処理デバイスを含むことができる。処理システム630を、複数の処理デバイスの間で分散させることができる。ユーザ・インターフェース660は、キーボード、マウス、音声認識インターフェース、マイクロホンおよびスピーカ、グラフィカル・ディスプレイ、タッチ・スクリーン、あるいは他のタイプのユーザ・インターフェース・デバイスを含むことができる。ユーザ・インターフェース660を、複数のインターフェース・デバイスの間で分散させることができる。ストレージ・システム640は、ディスク、テープ、集積回路、RAM、ROM、ネットワーク・ストレージ、サーバ、または他のメモリ機能を含むことができる。ストレージ・システム640を、コンピュータ可読媒体とすることができる。ストレージ・システム640を、複数のメモリ・デバイスの間で分散させることができる。
【0053】
処理システム630は、ストレージ・システム640からソフトウェア650を取り出し、実行する。処理システムは、データ670を取り出し、格納することができる。処理システムは、通信インターフェース620を介してデータを取り出し、格納することもできる。処理システム630は、有形の結果を達成するためにソフトウェア650またはデータ670を作成し、または変更することができる。処理システムは、通信インターフェース620またはユーザ・インターフェース660を制御して、有形の結果を達成することができる。処理システムは、リモートに格納されたソフトウェアを通信インターフェース620を介して取り出し、実行することができる。
【0054】
ソフトウェア650およびリモートに格納されたソフトウェアは、オペレーティング・システム、ユーティリティ、ドライバ、ネットワーキング・ソフトウェア、および通常はコンピュータ・システムによって実行される他のソフトウェアを含むことができる。ソフトウェア650は、アプリケーション・プログラム、アプレット、ファームウェア、または通常はコンピュータ・システムによって実行される他の形の機械可読処理命令を含むことができる。処理システム630によって実行される時に、ソフトウェア650またはリモートに格納されたソフトウェアは、本明細書で説明されたように動作するようにコンピュータ・システム600に指示することができる。
【0055】
本発明の前述の説明は、例示および説明のために提示された。網羅的であることまたは本発明を開示された正確な形態に限定することは意図されておらず、他の修正形態および変形形態が上の教示を考慮して可能とすることができる。実施形態は、企図される特定の使用に適するさまざまな実施形態およびさまざまな修正形態で当業者が本発明を最も良く利用することをこれによって可能にするために、本発明の原理およびその実用的応用を最も良く説明するために選択され、説明された。添付の特許請求の範囲が、従来技術によって制限される範囲を除いて、本発明の他の代替実施形態を含むと解釈されることが意図されている。

【特許請求の範囲】
【請求項1】
揮発性メモリと不揮発性メモリとの間でデータを転送する方法であって、
メモリ・アドレス・フィールドを有するコマンド・データ・ブロックを受け取ることを含み、前記メモリ・アドレス・フィールドは、前記揮発性メモリ内の位置を示す第1の複数のビットとデータ操作を示す第2の複数のビットとを有し、さらに、
前記示されたデータ操作に基づいて、前記不揮発性メモリに送られるデータのソースを選択することと、
前記揮発性メモリから前記ソースにデータを転送することと、
操作されたデータを前記ソースから受け取ることと、
前記操作されたデータを前記不揮発性メモリに転送すること、を含む方法。
【請求項2】
前記ソースはデータ暗号化エンジンである、請求項1に記載の方法。
【請求項3】
前記ソースは署名エンジンである、請求項1に記載の方法。
【請求項4】
前記第2の複数のビットは、前記署名エンジンがデータ完全性署名を送ることを示す、請求項3に記載の方法。
【請求項5】
前記ソースは複数の署名エンジンのうちの1つとすることができ、前記第2の複数のビットは前記複数の署名エンジンのうちで前記ソースになるべき1つを示す、請求項1に記載の方法。
【請求項6】
不揮発性メモリと揮発性メモリとの間でデータを転送する方法であって、
メモリ・アドレス・フィールドを有するコマンド・データ・ブロックを受け取ることを含み、前記メモリ・アドレス・フィールドは、前記揮発性メモリ内の位置を示す第1の複数のビットとデータ操作を示す第2の複数のビットとを有し、さらに、
前記示されたデータ操作に基づいて、前記揮発性メモリに送られるデータのソースを選択することと、
前記不揮発性メモリから前記ソースへデータを転送することと、
操作されたデータを前記ソースから受け取ることと、
前記操作されたデータを前記揮発性メモリに転送すること、を含む方法。
【請求項7】
前記ソースはデータ暗号化解除エンジンである、請求項6に記載の方法。
【請求項8】
前記ソースは署名エンジンである、請求項6に記載の方法。
【請求項9】
前記第2の複数のビットは、前記署名エンジンがデータ完全性署名を送ることを示す、請求項8に記載の方法。
【請求項10】
前記ソースは複数の署名エンジンのうちの1つとすることができ、前記第2の複数のビットは前記複数の署名エンジンのうちで前記ソースになるべき1つを示す、請求項7に記載の方法。
【請求項11】
メモリ・アドレス・フィールドを受け取るデータ操作コントローラを含み、前記メモリ・アドレス・フィールドは、揮発性メモリ内の位置を示す第1の複数のビットと、データ操作を示す第2の複数のビットとを有し、前記データ操作コントローラは、前記示されたデータ操作に基づいて、不揮発性メモリに送られるデータのソースを選択し、さらに、
揮発性メモリに結合された揮発性メモリ・コントローラを含み、前記揮発性メモリ・コントローラは、前記揮発性メモリから前記ソースへのデータの転送を容易にするためのものであり、さらに、
前記不揮発性メモリに結合された不揮発性メモリ・コントローラを含み、前記不揮発性メモリ・コントローラは、操作されたデータを前記ソースから受け取り、前記操作されたデータを前記不揮発性メモリに転送するためのものである、集積回路。
【請求項12】
前記ソースはデータ暗号化エンジンである、請求項11に記載の集積回路。
【請求項13】
前記ソースは署名エンジンである、請求項11に記載の集積回路。
【請求項14】
前記第2の複数のビットは、前記署名エンジンがデータ完全性署名を送ることを示す、請求項13に記載の集積回路。
【請求項15】
前記ソースは複数の署名エンジンのうちの1つとすることができ、前記第2の複数のビットは前記複数の署名エンジンのうちで前記ソースになるべき1つを示す、請求項11に記載の集積回路。
【請求項16】
メモリ・アドレス・フィールドを受け取るデータ操作コントローラを含み、前記メモリ・アドレス・フィールドは、揮発性メモリ内の位置を示す第1の複数のビットとデータ操作を示す第2の複数のビットとを有し、前記データ操作コントローラは、前記示されたデータ操作に基づいて、前記揮発性メモリに送られるデータのソースを選択し、さらに、
不揮発性メモリに結合された不揮発性メモリ・コントローラを含み、前記不揮発性メモリ・コントローラは、前記不揮発性メモリから前記ソースへのデータの転送を容易にするためのものであり、さらに、
前記揮発性メモリに結合された揮発性メモリ・コントローラを含み、前記揮発性メモリ・コントローラは、操作されたデータを前記ソースから受け取り、前記操作されたデータを前記揮発性メモリに転送するためのものである、集積回路。
【請求項17】
前記ソースはデータ暗号化エンジンである、請求項16に記載の集積回路。
【請求項18】
前記ソースは署名エンジンである、請求項16に記載の集積回路。
【請求項19】
前記第2の複数のビットは、前記署名エンジンがデータ完全性署名を送ることを示す、請求項18に記載の集積回路。
【請求項20】
前記ソースは複数の署名エンジンのうちの1つとすることができ、前記第2の複数のビットは前記複数の署名エンジンのうちで前記ソースになるべき1つを示す、請求項16に記載の集積回路。

【図1】
image rotate

【図2】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−133746(P2012−133746A)
【公開日】平成24年7月12日(2012.7.12)
【国際特許分類】
【出願番号】特願2011−143809(P2011−143809)
【出願日】平成23年6月29日(2011.6.29)
【出願人】(508243639)エルエスアイ コーポレーション (124)
【Fターム(参考)】