(57)【要約】  全てのコントローラとの最小の関与で、データストリーム中のデータのエラー訂正を暗号化処理する場合、メモリシステムの処理能力が改善される。メモリーセルからのデータを読み出す時にエラー訂正を行うために、回路によって実行する全ての暗号化処理の前に、セルと暗号化回路の間を通過するデータストリーム中のデータのビットエラーを訂正する。好ましくは、複数のバッファを使用することで待ち時間が減少する場合、暗号化回路とメモリ間のデータをバッファするために使用した一つ以上のバッファでエラー訂正が起こる。【選択図】      図２
2008524754.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性のメモリセルおよび暗号化回路を含む、暗号化データ保存用のメモリシステム中のデータを訂正する方法であって、該方法は
前記セルからの、あるいは、前記セルへのデータストリーム中のデータに対して暗号化処理を実行するために、前記回路を使用することと、
前記セルと前記回路の間を通過する前記データストリーム中のデータを保存する、少なくとも一つのバッファを設けることと、
前記回路で前記データに対して暗号化処理を実行する前に、前記バッファに保存され前記セルから始まる前記データ中の全てのエラーを訂正することと、を含む方法。
【請求項２】
前記訂正が、前記セルから前記回路に向かう前記データストリーム中のデータ内の一つ以上のエラーの存在を示す信号に応じて、前記データが前記回路に到達する前に前記訂正が前記一つ以上のエラーを訂正するようになされる請求項１に記載の方法。
【請求項３】
前記システムが、前記セルと前記回路の間を通過する前記データストリーム中のデータを保存する二つのバッファを含み、前記方法がデータの保存および前記セルから前記回路へのデータ伝送を交互に行うために、その二つのバッファを使用することを更に含む、請求項２記載の方法。
【請求項４】
前記使用は、前記二つのバッファの内の第二のバッファに保存したデータを前記回路に送る時、前記二つのバッファの内の第一のバッファにデータを保存する請求項３に記載の方法。
【請求項５】
暗号化されたデータを保存するメモリシステムであって、
不揮発性メモリセルと、
前記セルからの、あるいは、前記セルへのデータストリーム中のデータに対して暗号化処理を実行する回路と、
前記セルと前記回路の間を通過する前記データストリーム中のデータを保存する少なくとも一つのバッファと、
前記セルと、少なくとも一つの前記バッファと、前記回路とをコントロールして、前記バッファ内に保存したデータ中の全てのエラーを訂正し、前記回路がこのようなデータに対して前記暗号化処理を実行する前に前記セルから始まっているコントローラと、を含むメモリシステム。
【請求項６】
前記コントローラは、前記セルから前記回路に向かうことになっている前記データストリーム中のデータ内に一つ以上のエラーが存在することを示す信号に応じて、前記データが前記回路に到達する前に、その一つ以上のエラーを訂正する、請求項５に記載のシステム。
【請求項７】
前記データストリーム中のエラーを検知し、前記データストリームに少なくとも一つのエラーがあることが検知される場合に、前記信号を前記コントローラに送らせるエラー訂正回路を更に含む、請求項６に記載のシステム。
【請求項８】
前記システムは、前記セルと前記回路の間を通過する前記データストリーム中のデータを保存する前記二つのバッファを含み、前記二つのバッファが交互にデータを保存し前記セルから前記回路へデータを送るように使用する、請求項５に記載のシステム。
【請求項９】
前記二つのバッファの内の第二のバッファに保存されたデータを前記回路に送る時に、前記二つのバッファの内の第一のバッファにデータを保存している、請求項８に記載のシステム。
【請求項１０】
前記コントローラは、バイパスモードでの代替バイパス経路において、前記データストリーム中のデータに前記バッファと前記回路をバイパスさせる、請求項５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概してメモリシステムに関し、詳細にはイン-ストリームデータの暗号化/復号およびエラー訂正の機能を有するメモリシステムに関する。
【背景技術】
【０００２】
モバイル機器市場は、より多くのデータ交換を発生させることにより平均収益の増加を図るよう、コンテンツ保存機能を含む方向に発展している。これは、そのコンテンツがモバイル機器に保存されている時保護されねばならない、ことを意味する。
【０００３】
従来、ポータブル記憶装置は商業用に使用されている。それはデータを一つのコンピュータ機器から別のコンピュータ機器に伝送する、あるいはバックアップ・データを保存する、ものである。ポータブル・ハードディスクドライブと、ポータブル・フラッシュメモリ・ディスクおよびフラッシュメモリ・カードのような最新のポータブル記憶装置は、保存管理の制御用マイクロプロセッサを含む。
【０００４】
ポータブル記憶装置に保存されたコンテンツを保護するために、保存されたデータは通常、暗号化され、許可されたユーザだけがデータを復号することが許される。
【０００５】
ポータブル記憶装置に保存されたデータにはビットエラーがあり得るので、エラー訂正を用いることが望ましい。現行のエラー訂正用の仕組みは暗号化能力を備えたポータブル記憶装置との互換性がないかもしれない。従って、そのような困難を緩和する、改善された局所的な記憶装置を提供することが望ましい。
【発明の開示】
【課題を解決するための手段】
【０００６】
メモリーセルに保存されるデータは、多くの原因でエラーを含んでいる場合がある。従って、メモリーセルからのデータを読み出す場合、エラー訂正を行うのが普通である。エラー訂正では、さらにデータ・ストリーム中のエラーの位置を検知することもある。回路によって実行された暗号化処理は、データストリーム中のビットの位置を変える場合があるので、もし、そのような処理が行われる時に、データストリーム中のビットエラーが修正されてしまっていないと、該処理後にはビットエラーの位置情報はもはや正確ではなくなるから、暗号化処理が行われた後では、エラー訂正はもはや可能でなくなるかもしれない。従って、本発明の一態様は、回路によって実行される全ての暗号化処理の前に、セルと暗号化回路の間を通過するデータストリーム中のデータのビットエラーを修正することが好ましい、という認識に基づいているものである。好ましくは、少なくとも１つのバッファを用いてセルと回路の間を通過するデータストリーム中のデータを保存し、データを回路によって暗号化処理する前に、そのバッファに保存されセルから始まるデータ中の全てのエラーが修正されることである。
【発明を実施するための最良の形態】
【０００７】
本発明の様々な態様が実施され得るメモリシステムのひとつの例を図１のブロック図に示す。図１に示されるように、メモリシステム１０は、中央処理装置（ＣＰＵ)１２、バッファ管理ユニット（ＢＭＵ）１４、ホストインターフェースモジュール（ＨＩＭ）１６とフラッシュインターフェースモジュール（ＦＩＭ）１８、フラッシュメモリ２０、および周辺アクセスモジュール（ＰＡＭ）２２を含む。メモリシステム１０は、ホストインターフェースバス２６およびポート２６ａを通してホスト装置２４と通信する。ＮＡＮＤ型でもよいフラッシュメモリ２０は、ホスト装置２４用のデータ記憶装置を提供する。又、ＣＰＵ１２用のソフトウェアコード（ｃｏｄｅ）もフラッシュメモリ２０に保存してよい。ＦＩＭ１８は、フラッシュインターフェースバス２８およびポート２８ａを通してフラッシュメモリ２０に接続している。ＨＩＭ１６は、例えばデジタルカメラ、パソコン、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ)、デジタルメディアプレーヤー、ＭＰ−３プレーヤーおよび携帯電話あるいは他のデジタル装置のようなホストシステムに接続されるのに適している。周辺アクセスモジュール２２は、ＣＰＵ１２との通信用に、ＦＩＭ、ＨＩＭおよびＢＭＵのような適切なコントローラモジュールを選択する。一つの実施例では、点線で囲む枠内のシステム１０の全ての構成部品をメモリカードあるいはスティック１０’のような単一ユニットに封入し、好ましくはカードあるいはスティック中に密閉しても良い。
【０００８】
バッファ管理ユニット１４は、ホストダイレクトメモリアクセス（ＨＤＭＡ）３２、フラッシュダイレクトメモリアクセス（ＦＤＭＡ）コントローラ３４、アービタ３６、バッファランダムアクセスメモリ（ＢＲＡＭ）３８および暗号化エンジン（Ｃｒｙｐｔｏ−Ｅｎｇｉｎｅ）４０を含む。アービタ３６は共有バスアービタであるので、どんな時でも、ただ一つのマスタあるいはイニシエータ（ＨＤＭＡ３２あるいはＦＤＭＡ３４あるいはＣＰＵ１２である得る）だけがアクティブになることができ、スレーブまたはターゲットはＢＲＡＭ３８である。アービタは、適切なイニシエータの要求をＢＲＡＭ３８に伝送する役割を果たす。ＨＤＭＡ３２とＦＤＭＡ３４は、ＨＩＭ１６、ＦＩＭ１８と、ＢＲＡＭ３８との間あるいはＣＰＵ  ランダムアクセスメモリ（ＣＰＵ  ＲＡＭ）１２ａとの間に運ばれたデータに役割を果たす。ＨＤＭＡ３２およびＦＤＭＡ３４の作動は従来通りで、ここに詳述する必要はない。ＢＲＡＭ３８は、ホスト装置２４、フラッシュメモリ２０およびＣＰＵ  ＲＡＭ  １２ａの間で通過したデータをバッファするのに使用される。ＨＤＭＡ３２とＦＤＭＡ３４は、ＨＩＭ１６／ＦＩＭ１８と、ＢＲＡＭ３８との間あるいはＣＰＵ  ＲＡＭ  １２ａとの間にデータを転送し、セクター転送完了を指示する役割を果たす。以下に説明するように、ＦＩＭ１８は更に、フラッシュメモリ２０から読み出されたデータ中のエラーを検知し、エラーを発見するとＣＰＵ１２に知らせる能力を持っている。
【０００９】
フラッシュメモリ２０からのデータをホスト装置２４によって読み出す場合、最初、メモリ２０中の暗号化されたデータがバス２８、ＦＩＭ１８、ＦＤＭＡ３４、暗号化データを復号するクリプト（暗号）エンジン４０を通して取出され、そこで暗号化データが復号されＢＲＡＭ３８に保存される。復号されたデータは、その後ＢＲＡＭ３８からＨＤＭＡ３２、ＨＩＭ１６、バス２６を通してホスト装置２４に送られる。メモリ２０に保存されたデータが復号されたキー及び/又はアルゴリズムと比べて異なるきキー及び／またはアルゴリズムによって、ホスト装置２４に送られるデータが再び暗号化されるように、ＢＲＡＭ  ３８からフェッチされたデータは、ＨＤＭＡ３２に送られる前に、クリプトエンジン４０によって再び暗号化することができる。好ましくは、かつ代わりの態様では、上記のプロセスにて復号されたデータをＢＲＡＭ３８に保存して、そのデータが許可されていないアクセスに攻撃され得ることよりは、メモリ２０からのデータは、ＢＲＡＭ３８に伝送される前に、暗号化エンジン４０によって復号し、再暗号化してもよい。ＢＲＡＭ３８中の暗号化されたデータは、その後、前述したように、ホスト装置２４へ伝送される。これが読み出し処理中のデータストリームの説明である。
【００１０】
データがホスト装置２４によってメモリ２０に書き込まれる場合は、データストリームの方向が逆になる。例えば、暗号化されていないデータをホスト装置によって、バス２６、ＨＩＭ１６、ＨＤＭＡ３２を経て暗号化エンジン４０へ送る場合、これらのデータは、ＢＲＡＭ３８に保存される前にエンジン４０によって暗号化されてもよい。その代わりに、未暗号化データをＢＲＡＭ３８に保存してもよい。このデータは、その後、ＦＤＭＡ３４に送られる前に、メモリ２０へ行く途中で暗号化される。書き込まれたデータが多段の暗号化処理を経過する場合、処理済みデータをＢＲＡＭ３８に保存する前に、エンジン４０が前記の処理を完了するのが好ましい。
【００１１】
図１のメモリシステム１０においてフラッシュメモリが含まれるが、このシステムは、その代わりに、例えば磁気ディスク、光ディスクＣＤ並びに、他のすべてのタイプの書き換え可能な不揮発性メモリシステムのような、他のタイプの不揮発性メモリをさらに含んでもよく、上記の様々な利点は、このもう一つの実施例にも同様に適用できる。このもう一つの実施例では、このメモリも、メモリシステムの残りの構成部品と共に、同じ筺体（メモリカードやメモリースティックのような）中に密閉されるのが好ましい。
【００１２】
《エラー訂正》
不揮発性の（例えばフラッシュ）メモリに保存されたデータは、不良化したりエラーを含んだりする可能性がある。この為、ＦＩＭ１８は、ビットストリーム中のエラーの位置を含めて、メモリ２０からのデータストリームのどのビットがエラーを有しているかを検知するエラー訂正（ＥＣＣ）回路１０２を有することができる。これは、本発明の他の態様を説明するためのメモリシステム１００のブロック図である、図２に示されている。ビットストリームの中にエラーが検知された場合、ＦＩＭ１８はＣＰＵ１２に割込み信号を送り、回路１０２はエラーのビットの位置に関する情報をＣＰＵ１２に送る。暗号化機能を有していない従来のメモリシステムでは、エラーはＢＲＡＭ３８中でＣＰＵによって訂正されている。しかし、データストリームからのデータがその訂正の前に先に暗号化処理された場合、暗号化処理は、処理したデータストリーム中のデータビットの位置および／又は値を変更させる可能性があるので、暗号化処理後のビットエラーの位置および／又は値は回路１０２によってＣＰＵ１２に送られるものとは異なっている可能性がある。これは、暗号化処理されたデータがＢＲＡＭ３８に到着した時に、エラーを訂正することを不可能にする可能性がある。本発明の一態様は、この問題を防止するよう、データの暗号化処理の前に、検知されたエラーを訂正するという認識から発しているものである。
【００１３】
エラーバッファユニット（ＥＢＵ）１０４は、ＣＰＵ１２がデータストリームにエラーがある事を示す割り込みをＦＩＭ１８から受け取った時ＣＰＵがＢＲＡＭ３８の代わりにエラーをＥＢＵ１０４で訂正するように、ＢＭＵ１４とＦＩＭ１８の間を通過するデータストリームからのデータを保存するために使用される。デジタルデータを訂正するには、エラーのビットが、回路１０２によって検知されたエラーの位置で、単に「反転（ｆｌｉｐ）される」（つまり、“１”を“０”に、“０”を“１”に転換する)。
【００１４】
エラーが検知された時、データストリームの中に割り込みの回数を減らすために、図３に示すように、二つ以上のバッファをＥＢＵ１０４中で使用してもよい。図３に示すように、二つのバッファ１０４ａおよび１０４ｂを使用し、二つのバッファのうちの一つはＦＩＭ１８を通してメモリ２０からデータを受け取り、他方はＢＭＵ１４中のＦＤＭＡ３４を通してデータを暗号化エンジン４０に送る。図３では、二つのスイッチ１０６ａおよび１０６ｂが使用されている。図３に示すように、二つのスイッチが実線の位置にある場合、バッファ１０４ａはＢＭＵ１４にデータを供給しているが、バッファ１０４ｂはＦＩＭ１８からデータを受け取っている。図３に示すように、二つのスイッチが点線の位置にある場合、バッファ１０４ｂはＢＭＵ１４にデータを供給しているが、バッファ１０４ａはＦＩＭ１８からデータを受け取っている。バッファに保存されたデータをＢＭＵに送る前に、先ずそれぞれのバッファをデータで満たすことができる。データが、バッファ１０４ａおよび１０４ｂから送られる、あるいは、バッファ１０４ａおよび１０４ｂによって受け取られる時に、ＣＰＵはバッファ１０４ａおよび１０４ｂ中のエラーを訂正する。この方法では、唯一の待ち時間は、データストリームの開始時に二つのバッファのうちの一つを満たすのに必要な時間だけである。その後には、エラー訂正にＣＰＵがかける時間が、各バッファを満たすために必要とされる時間と比較して短かければ、エラーが回路１０２によって検知された時でも、データストリームに割り込みはない。
【００１５】
データ訂正の時間がバッファを満たすより長くかかる場合、エラーが検知された時だけ、データストリームが割り込まれるが、エラー検知がなかった時、データストリームは割り込みなしで流れる。ＥＢＵ１０４とＦＤＭＡ３４の間で接続するバッファ空の信号（図示されていない）は、データストリームが割り込まれ、これ以上のデータが利用可能ではないと後者ＦＤＭＡ３４へ知らせる。その後、ＦＤＭＡ３４も暗号化エンジン４０も一時停止し、データストリームが再開するのを待つ。
【００１６】
ホスト装置２４がデータをメモリ２０に書き込む時には、エラー訂正の必要がないと考えられるので、ＥＢＵをバイパスするのが望ましい。これはスイッチ１０８で達成され得る。スイッチ１０８を閉じると、ＨＩＭ１６（図２に完全に示されていない）からのデータは、単純に二つのバッファ１０４ａおよび１０４ｂをバイパスする。データがメモリ２０から読み出されるか、メモリ２０に書き込まれる時に暗号化処理が必要でない場合も、スイッチ１０８はバイパスモードで閉じてもよい。このモードによれば、暗号化エンジン４０がシステム１０から除かれているかのように、ＨＤＭＡとＦＤＭＡはアービタ３６に直接接続され、データストリームはＥＢＵ１０４および暗号化エンジン４０の両方をバイパスする。これもまた、スイッチを使用して達成され得る。従って、バイパスモードでは、ＣＰＵ１２の管理下でシステム１００のロジック回路（図示されていない）は、データストリームにブロック４０をバイパスさせ、スイッチ１０８を閉じさせる。
【００１７】
エラー訂正処理は、図４のフローチャートで示す。ＣＰＵ１２は、ホスト装置２４（楕円１５０）から読み出しコマンドを受け取った後に読み出しオペレーションを始める。その後、適切なセキュリティ設定情報を用いて暗号化エンジン４０を設定し、読み出しオペレーション用のＢＭＵ１４、および例えばオペレーション用のＢＲＡＭ３８中でのメモリスペースの割り付け等のパラメーターを設定する（ブロック１５２、１５４）。ＣＰＵ１２はさらに、データが読まれることになるメモリ２０中の位置を特定すること等で、ＦＩＭ１８を設定する（ブロック１５６）。その後、ＨＤＭＡおよびＦＤＭＡエンジン３２および３４を開始する。ブロック１５８を参照。ＣＰＵが割り込みを受け取った場合、それがＦＩＭの割り込みであるか否かをチェックする（菱形１６０）。ＦＩＭの割り込みを受け取った時、ＣＰＵはその割り込みが、データストリーム（１６２）中に一つ以上のエラーがあることを示す割り込みであるか否かを確認するためにチェックする（１６２）。もしもエラーが示された場合、ＣＰＵはバッファ１０４ａおよび／又は１０４ｂのエラーの訂正に移行し（ブロック１６４）、そしてＦＩＭ１８を設定することに戻り、データが次に読まれるメモリ２０中の位置を変更する（ブロック１５６）。ＦＩＭの割り込みがデータストリーム中のエラーを示さない時は、ＦＩＭがそのオペレーションを完了したことを意味し、ＣＰＵもＦＩＭを再設定し再起動するためにブロック１５６に戻る。ＣＰＵに検知された割り込みがＦＩＭの割り込みでない場合、ＣＰＵはそれがデータの割り込みの終了であるか否かを確認するためにチェックする（菱形１６６）。そうである場合、読み出し操作は終了する（楕円１６８）。そうでない場合、この割り込みは、データの暗号化処理と無関係であり（つまりクロック割り込み）、ＣＰＵはそれ（図示されていない）点検し、割り込みがあるか否かをチェックするために菱形１６０に戻る。
【００１８】
書き込み操作の場合には図4をわずかに修正するだけでよい。メモリ２０に書き込まれるデータにはＥＣＣエラーの処理がないので、ＣＰＵ１２は書き込み操作で菱形１６２及びブロック１６４中のプロセスを省略することができる。書き込み操作中にＦＩＭの割り込みがＣＰＵ１２によって受け取られた場合、これは、ＦＩＭがその操作を完了したことを意味し、ＣＰＵもＦＩＭを再設定するためにブロック１５６に戻る。この違いの他には、書き込み操作は実質的に読み出しオペレーションと同様である。
【００１９】
本発明は様々な実施例を参照して上述したが、添付した請求項及びその等価物によって画定される本発明の範囲を逸脱することなく、変更および修正を行い得ることが理解できよう。ここに引用された文献はすべて参考のために示す。
【図面の簡単な説明】
【００２０】
【図１】図１は、本発明を説明するための、ホスト装置と通信するメモリシステムのブロック図である。
【図２】図２は、図１の中のメモリシステムのいくつかのブロックのうちのひとつのブロック図である。
【図３】図３は、図２のエラー訂正バッファユニットの好ましい設定をより詳細に説明する回路図である。
【図４】図４は、本発明の一つの態様の好ましい実施例を説明するための、図２のシステムの作動を説明するフローチャートである。  記述上の便宜から、本出願では、同一の構成要素には同じ番号を付している。
【図１】
2008524754.tif 000003
【図２】
2008524754.tif 000004
【図３】
2008524754.tif 000005
【図４】
2008524754.tif 000006
【国際調査報告】
2008524754.tif 000007
2008524754.tif 000008