説明

イン−ストリームデータの暗号化/復号およびエラー訂正の機能を有するメモリシステム

全てのコントローラとの最小の関与で、データストリーム中のデータのエラー訂正を暗号化処理する場合、メモリシステムの処理能力が改善される。メモリーセルからのデータを読み出す時にエラー訂正を行うために、回路によって実行する全ての暗号化処理の前に、セルと暗号化回路の間を通過するデータストリーム中のデータのビットエラーを訂正する。好ましくは、複数のバッファを使用することで待ち時間が減少する場合、暗号化回路とメモリ間のデータをバッファするために使用した一つ以上のバッファでエラー訂正が起こる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は概してメモリシステムに関し、詳細にはイン-ストリームデータの暗号化/復号およびエラー訂正の機能を有するメモリシステムに関する。
【背景技術】
【0002】
モバイル機器市場は、より多くのデータ交換を発生させることにより平均収益の増加を図るよう、コンテンツ保存機能を含む方向に発展している。これは、そのコンテンツがモバイル機器に保存されている時保護されねばならない、ことを意味する。
【0003】
従来、ポータブル記憶装置は商業用に使用されている。それはデータを一つのコンピュータ機器から別のコンピュータ機器に伝送する、あるいはバックアップ・データを保存する、ものである。ポータブル・ハードディスクドライブと、ポータブル・フラッシュメモリ・ディスクおよびフラッシュメモリ・カードのような最新のポータブル記憶装置は、保存管理の制御用マイクロプロセッサを含む。
【0004】
ポータブル記憶装置に保存されたコンテンツを保護するために、保存されたデータは通常、暗号化され、許可されたユーザだけがデータを復号することが許される。
【0005】
ポータブル記憶装置に保存されたデータにはビットエラーがあり得るので、エラー訂正を用いることが望ましい。現行のエラー訂正用の仕組みは暗号化能力を備えたポータブル記憶装置との互換性がないかもしれない。従って、そのような困難を緩和する、改善された局所的な記憶装置を提供することが望ましい。
【発明の開示】
【課題を解決するための手段】
【0006】
メモリーセルに保存されるデータは、多くの原因でエラーを含んでいる場合がある。従って、メモリーセルからのデータを読み出す場合、エラー訂正を行うのが普通である。エラー訂正では、さらにデータ・ストリーム中のエラーの位置を検知することもある。回路によって実行された暗号化処理は、データストリーム中のビットの位置を変える場合があるので、もし、そのような処理が行われる時に、データストリーム中のビットエラーが修正されてしまっていないと、該処理後にはビットエラーの位置情報はもはや正確ではなくなるから、暗号化処理が行われた後では、エラー訂正はもはや可能でなくなるかもしれない。従って、本発明の一態様は、回路によって実行される全ての暗号化処理の前に、セルと暗号化回路の間を通過するデータストリーム中のデータのビットエラーを修正することが好ましい、という認識に基づいているものである。好ましくは、少なくとも1つのバッファを用いてセルと回路の間を通過するデータストリーム中のデータを保存し、データを回路によって暗号化処理する前に、そのバッファに保存されセルから始まるデータ中の全てのエラーが修正されることである。
【発明を実施するための最良の形態】
【0007】
本発明の様々な態様が実施され得るメモリシステムのひとつの例を図1のブロック図に示す。図1に示されるように、メモリシステム10は、中央処理装置(CPU)12、バッファ管理ユニット(BMU)14、ホストインターフェースモジュール(HIM)16とフラッシュインターフェースモジュール(FIM)18、フラッシュメモリ20、および周辺アクセスモジュール(PAM)22を含む。メモリシステム10は、ホストインターフェースバス26およびポート26aを通してホスト装置24と通信する。NAND型でもよいフラッシュメモリ20は、ホスト装置24用のデータ記憶装置を提供する。又、CPU12用のソフトウェアコード(code)もフラッシュメモリ20に保存してよい。FIM18は、フラッシュインターフェースバス28およびポート28aを通してフラッシュメモリ20に接続している。HIM16は、例えばデジタルカメラ、パソコン、PDA(Personal Digital Assistant)、デジタルメディアプレーヤー、MP−3プレーヤーおよび携帯電話あるいは他のデジタル装置のようなホストシステムに接続されるのに適している。周辺アクセスモジュール22は、CPU12との通信用に、FIM、HIMおよびBMUのような適切なコントローラモジュールを選択する。一つの実施例では、点線で囲む枠内のシステム10の全ての構成部品をメモリカードあるいはスティック10’のような単一ユニットに封入し、好ましくはカードあるいはスティック中に密閉しても良い。
【0008】
バッファ管理ユニット14は、ホストダイレクトメモリアクセス(HDMA)32、フラッシュダイレクトメモリアクセス(FDMA)コントローラ34、アービタ36、バッファランダムアクセスメモリ(BRAM)38および暗号化エンジン(Crypto−Engine)40を含む。アービタ36は共有バスアービタであるので、どんな時でも、ただ一つのマスタあるいはイニシエータ(HDMA32あるいはFDMA34あるいはCPU12である得る)だけがアクティブになることができ、スレーブまたはターゲットはBRAM38である。アービタは、適切なイニシエータの要求をBRAM38に伝送する役割を果たす。HDMA32とFDMA34は、HIM16、FIM18と、BRAM38との間あるいはCPU ランダムアクセスメモリ(CPU RAM)12aとの間に運ばれたデータに役割を果たす。HDMA32およびFDMA34の作動は従来通りで、ここに詳述する必要はない。BRAM38は、ホスト装置24、フラッシュメモリ20およびCPU RAM 12aの間で通過したデータをバッファするのに使用される。HDMA32とFDMA34は、HIM16/FIM18と、BRAM38との間あるいはCPU RAM 12aとの間にデータを転送し、セクター転送完了を指示する役割を果たす。以下に説明するように、FIM18は更に、フラッシュメモリ20から読み出されたデータ中のエラーを検知し、エラーを発見するとCPU12に知らせる能力を持っている。
【0009】
フラッシュメモリ20からのデータをホスト装置24によって読み出す場合、最初、メモリ20中の暗号化されたデータがバス28、FIM18、FDMA34、暗号化データを復号するクリプト(暗号)エンジン40を通して取出され、そこで暗号化データが復号されBRAM38に保存される。復号されたデータは、その後BRAM38からHDMA32、HIM16、バス26を通してホスト装置24に送られる。メモリ20に保存されたデータが復号されたキー及び/又はアルゴリズムと比べて異なるきキー及び/またはアルゴリズムによって、ホスト装置24に送られるデータが再び暗号化されるように、BRAM 38からフェッチされたデータは、HDMA32に送られる前に、クリプトエンジン40によって再び暗号化することができる。好ましくは、かつ代わりの態様では、上記のプロセスにて復号されたデータをBRAM38に保存して、そのデータが許可されていないアクセスに攻撃され得ることよりは、メモリ20からのデータは、BRAM38に伝送される前に、暗号化エンジン40によって復号し、再暗号化してもよい。BRAM38中の暗号化されたデータは、その後、前述したように、ホスト装置24へ伝送される。これが読み出し処理中のデータストリームの説明である。
【0010】
データがホスト装置24によってメモリ20に書き込まれる場合は、データストリームの方向が逆になる。例えば、暗号化されていないデータをホスト装置によって、バス26、HIM16、HDMA32を経て暗号化エンジン40へ送る場合、これらのデータは、BRAM38に保存される前にエンジン40によって暗号化されてもよい。その代わりに、未暗号化データをBRAM38に保存してもよい。このデータは、その後、FDMA34に送られる前に、メモリ20へ行く途中で暗号化される。書き込まれたデータが多段の暗号化処理を経過する場合、処理済みデータをBRAM38に保存する前に、エンジン40が前記の処理を完了するのが好ましい。
【0011】
図1のメモリシステム10においてフラッシュメモリが含まれるが、このシステムは、その代わりに、例えば磁気ディスク、光ディスクCD並びに、他のすべてのタイプの書き換え可能な不揮発性メモリシステムのような、他のタイプの不揮発性メモリをさらに含んでもよく、上記の様々な利点は、このもう一つの実施例にも同様に適用できる。このもう一つの実施例では、このメモリも、メモリシステムの残りの構成部品と共に、同じ筺体(メモリカードやメモリースティックのような)中に密閉されるのが好ましい。
【0012】
《エラー訂正》
不揮発性の(例えばフラッシュ)メモリに保存されたデータは、不良化したりエラーを含んだりする可能性がある。この為、FIM18は、ビットストリーム中のエラーの位置を含めて、メモリ20からのデータストリームのどのビットがエラーを有しているかを検知するエラー訂正(ECC)回路102を有することができる。これは、本発明の他の態様を説明するためのメモリシステム100のブロック図である、図2に示されている。ビットストリームの中にエラーが検知された場合、FIM18はCPU12に割込み信号を送り、回路102はエラーのビットの位置に関する情報をCPU12に送る。暗号化機能を有していない従来のメモリシステムでは、エラーはBRAM38中でCPUによって訂正されている。しかし、データストリームからのデータがその訂正の前に先に暗号化処理された場合、暗号化処理は、処理したデータストリーム中のデータビットの位置および/又は値を変更させる可能性があるので、暗号化処理後のビットエラーの位置および/又は値は回路102によってCPU12に送られるものとは異なっている可能性がある。これは、暗号化処理されたデータがBRAM38に到着した時に、エラーを訂正することを不可能にする可能性がある。本発明の一態様は、この問題を防止するよう、データの暗号化処理の前に、検知されたエラーを訂正するという認識から発しているものである。
【0013】
エラーバッファユニット(EBU)104は、CPU12がデータストリームにエラーがある事を示す割り込みをFIM18から受け取った時CPUがBRAM38の代わりにエラーをEBU104で訂正するように、BMU14とFIM18の間を通過するデータストリームからのデータを保存するために使用される。デジタルデータを訂正するには、エラーのビットが、回路102によって検知されたエラーの位置で、単に「反転(flip)される」(つまり、“1”を“0”に、“0”を“1”に転換する)。
【0014】
エラーが検知された時、データストリームの中に割り込みの回数を減らすために、図3に示すように、二つ以上のバッファをEBU104中で使用してもよい。図3に示すように、二つのバッファ104aおよび104bを使用し、二つのバッファのうちの一つはFIM18を通してメモリ20からデータを受け取り、他方はBMU14中のFDMA34を通してデータを暗号化エンジン40に送る。図3では、二つのスイッチ106aおよび106bが使用されている。図3に示すように、二つのスイッチが実線の位置にある場合、バッファ104aはBMU14にデータを供給しているが、バッファ104bはFIM18からデータを受け取っている。図3に示すように、二つのスイッチが点線の位置にある場合、バッファ104bはBMU14にデータを供給しているが、バッファ104aはFIM18からデータを受け取っている。バッファに保存されたデータをBMUに送る前に、先ずそれぞれのバッファをデータで満たすことができる。データが、バッファ104aおよび104bから送られる、あるいは、バッファ104aおよび104bによって受け取られる時に、CPUはバッファ104aおよび104b中のエラーを訂正する。この方法では、唯一の待ち時間は、データストリームの開始時に二つのバッファのうちの一つを満たすのに必要な時間だけである。その後には、エラー訂正にCPUがかける時間が、各バッファを満たすために必要とされる時間と比較して短かければ、エラーが回路102によって検知された時でも、データストリームに割り込みはない。
【0015】
データ訂正の時間がバッファを満たすより長くかかる場合、エラーが検知された時だけ、データストリームが割り込まれるが、エラー検知がなかった時、データストリームは割り込みなしで流れる。EBU104とFDMA34の間で接続するバッファ空の信号(図示されていない)は、データストリームが割り込まれ、これ以上のデータが利用可能ではないと後者FDMA34へ知らせる。その後、FDMA34も暗号化エンジン40も一時停止し、データストリームが再開するのを待つ。
【0016】
ホスト装置24がデータをメモリ20に書き込む時には、エラー訂正の必要がないと考えられるので、EBUをバイパスするのが望ましい。これはスイッチ108で達成され得る。スイッチ108を閉じると、HIM16(図2に完全に示されていない)からのデータは、単純に二つのバッファ104aおよび104bをバイパスする。データがメモリ20から読み出されるか、メモリ20に書き込まれる時に暗号化処理が必要でない場合も、スイッチ108はバイパスモードで閉じてもよい。このモードによれば、暗号化エンジン40がシステム10から除かれているかのように、HDMAとFDMAはアービタ36に直接接続され、データストリームはEBU104および暗号化エンジン40の両方をバイパスする。これもまた、スイッチを使用して達成され得る。従って、バイパスモードでは、CPU12の管理下でシステム100のロジック回路(図示されていない)は、データストリームにブロック40をバイパスさせ、スイッチ108を閉じさせる。
【0017】
エラー訂正処理は、図4のフローチャートで示す。CPU12は、ホスト装置24(楕円150)から読み出しコマンドを受け取った後に読み出しオペレーションを始める。その後、適切なセキュリティ設定情報を用いて暗号化エンジン40を設定し、読み出しオペレーション用のBMU14、および例えばオペレーション用のBRAM38中でのメモリスペースの割り付け等のパラメーターを設定する(ブロック152、154)。CPU12はさらに、データが読まれることになるメモリ20中の位置を特定すること等で、FIM18を設定する(ブロック156)。その後、HDMAおよびFDMAエンジン32および34を開始する。ブロック158を参照。CPUが割り込みを受け取った場合、それがFIMの割り込みであるか否かをチェックする(菱形160)。FIMの割り込みを受け取った時、CPUはその割り込みが、データストリーム(162)中に一つ以上のエラーがあることを示す割り込みであるか否かを確認するためにチェックする(162)。もしもエラーが示された場合、CPUはバッファ104aおよび/又は104bのエラーの訂正に移行し(ブロック164)、そしてFIM18を設定することに戻り、データが次に読まれるメモリ20中の位置を変更する(ブロック156)。FIMの割り込みがデータストリーム中のエラーを示さない時は、FIMがそのオペレーションを完了したことを意味し、CPUもFIMを再設定し再起動するためにブロック156に戻る。CPUに検知された割り込みがFIMの割り込みでない場合、CPUはそれがデータの割り込みの終了であるか否かを確認するためにチェックする(菱形166)。そうである場合、読み出し操作は終了する(楕円168)。そうでない場合、この割り込みは、データの暗号化処理と無関係であり(つまりクロック割り込み)、CPUはそれ(図示されていない)点検し、割り込みがあるか否かをチェックするために菱形160に戻る。
【0018】
書き込み操作の場合には図4をわずかに修正するだけでよい。メモリ20に書き込まれるデータにはECCエラーの処理がないので、CPU12は書き込み操作で菱形162及びブロック164中のプロセスを省略することができる。書き込み操作中にFIMの割り込みがCPU12によって受け取られた場合、これは、FIMがその操作を完了したことを意味し、CPUもFIMを再設定するためにブロック156に戻る。この違いの他には、書き込み操作は実質的に読み出しオペレーションと同様である。
【0019】
本発明は様々な実施例を参照して上述したが、添付した請求項及びその等価物によって画定される本発明の範囲を逸脱することなく、変更および修正を行い得ることが理解できよう。ここに引用された文献はすべて参考のために示す。
【図面の簡単な説明】
【0020】
【図1】図1は、本発明を説明するための、ホスト装置と通信するメモリシステムのブロック図である。
【図2】図2は、図1の中のメモリシステムのいくつかのブロックのうちのひとつのブロック図である。
【図3】図3は、図2のエラー訂正バッファユニットの好ましい設定をより詳細に説明する回路図である。
【図4】図4は、本発明の一つの態様の好ましい実施例を説明するための、図2のシステムの作動を説明するフローチャートである。 記述上の便宜から、本出願では、同一の構成要素には同じ番号を付している。

【特許請求の範囲】
【請求項1】
不揮発性のメモリセルおよび暗号化回路を含む、暗号化データ保存用のメモリシステム中のデータを訂正する方法であって、該方法は
前記セルからの、あるいは、前記セルへのデータストリーム中のデータに対して暗号化処理を実行するために、前記回路を使用することと、
前記セルと前記回路の間を通過する前記データストリーム中のデータを保存する、少なくとも一つのバッファを設けることと、
前記回路で前記データに対して暗号化処理を実行する前に、前記バッファに保存され前記セルから始まる前記データ中の全てのエラーを訂正することと、を含む方法。
【請求項2】
前記訂正が、前記セルから前記回路に向かう前記データストリーム中のデータ内の一つ以上のエラーの存在を示す信号に応じて、前記データが前記回路に到達する前に前記訂正が前記一つ以上のエラーを訂正するようになされる請求項1に記載の方法。
【請求項3】
前記システムが、前記セルと前記回路の間を通過する前記データストリーム中のデータを保存する二つのバッファを含み、前記方法がデータの保存および前記セルから前記回路へのデータ伝送を交互に行うために、その二つのバッファを使用することを更に含む、請求項2記載の方法。
【請求項4】
前記使用は、前記二つのバッファの内の第二のバッファに保存したデータを前記回路に送る時、前記二つのバッファの内の第一のバッファにデータを保存する請求項3に記載の方法。
【請求項5】
暗号化されたデータを保存するメモリシステムであって、
不揮発性メモリセルと、
前記セルからの、あるいは、前記セルへのデータストリーム中のデータに対して暗号化処理を実行する回路と、
前記セルと前記回路の間を通過する前記データストリーム中のデータを保存する少なくとも一つのバッファと、
前記セルと、少なくとも一つの前記バッファと、前記回路とをコントロールして、前記バッファ内に保存したデータ中の全てのエラーを訂正し、前記回路がこのようなデータに対して前記暗号化処理を実行する前に前記セルから始まっているコントローラと、を含むメモリシステム。
【請求項6】
前記コントローラは、前記セルから前記回路に向かうことになっている前記データストリーム中のデータ内に一つ以上のエラーが存在することを示す信号に応じて、前記データが前記回路に到達する前に、その一つ以上のエラーを訂正する、請求項5に記載のシステム。
【請求項7】
前記データストリーム中のエラーを検知し、前記データストリームに少なくとも一つのエラーがあることが検知される場合に、前記信号を前記コントローラに送らせるエラー訂正回路を更に含む、請求項6に記載のシステム。
【請求項8】
前記システムは、前記セルと前記回路の間を通過する前記データストリーム中のデータを保存する前記二つのバッファを含み、前記二つのバッファが交互にデータを保存し前記セルから前記回路へデータを送るように使用する、請求項5に記載のシステム。
【請求項9】
前記二つのバッファの内の第二のバッファに保存されたデータを前記回路に送る時に、前記二つのバッファの内の第一のバッファにデータを保存している、請求項8に記載のシステム。
【請求項10】
前記コントローラは、バイパスモードでの代替バイパス経路において、前記データストリーム中のデータに前記バッファと前記回路をバイパスさせる、請求項5に記載のシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公表番号】特表2008−524754(P2008−524754A)
【公表日】平成20年7月10日(2008.7.10)
【国際特許分類】
【出願番号】特願2007−548490(P2007−548490)
【出願日】平成17年12月21日(2005.12.21)
【国際出願番号】PCT/US2005/046688
【国際公開番号】WO2006/069273
【国際公開日】平成18年6月29日(2006.6.29)
【出願人】(507208288)サンディスク コーポレーション (11)
【Fターム(参考)】