(57)【要約】      （修正有）【課題】メモリカードからデータを安全に消去する方法、装置、ソフトウェア、およびシステムを提供する。【解決手段】各メモリバンクのアクセス不可能な領域内のメモリの隠された代替ブロックの数が決定される。一つの実施例では、メモリのブロックが、隠された代替ブロックの数まで、各メモリバンク内のデータパターンを用いて繰り返し上書きされる。別の実施例では、メモリのブロックが、隠された代替ブロックの数まで、各メモリバンク内で繰り返し消去される。各メモリバンクのアクセス可能な領域内のメモリのブロックは、このデータパターンを用いて消去又は上書きされる。【選択図】図１
2005327296.tif 000002
【特許請求の範囲】
【請求項１】
メモリカードを安全に消去する方法であって、
前記メモリカードの記憶媒体内に隠されたメモリ領域のサイズを決定することと、
前記隠されたメモリ領域に格納されたデータのブロックを消去する第一の命令を発行することと、
前記隠されたメモリ領域のサイズに応じて、データのブロックを消去する前記第一の命令を発行することを繰り返すこととを備える。
【請求項２】
請求項１に記載の方法において、
前記データのブロックを消去するように発行された前記命令は、フラッシュメモリセルを消去する消去命令である。
【請求項３】
請求項１に記載の方法において、
前記データのブロックを消去するように発行された前記命令は、フラッシュメモリセルに格納されたデータをデータパターンを用いて上書きする書込命令である。
【請求項４】
請求項１に記載の方法において、
前記データパターンは、ランダムデータパターン、全て０のデータパターン、全て１のデータパターン、１と０との交互によるデータパターンのうちの一つである。
【請求項５】
請求項１に記載の方法において、
前記メモリカードの記憶媒体内のアクセス可能なメモリ領域を消去する第二の命令を発行することを更に備える。
【請求項６】
請求項５に記載の方法において、
前記第二の命令は、前記第一の命令の発行前に発行される。
【請求項７】
請求項５に記載の方法において、
前記第一の命令は、前記第二の命令の発行前に発行される。
【請求項８】
請求項１に記載の方法において、
前記メモリカードはセキュアデジタルメモリカードであり、
前記記憶媒体は、複数の電気的に消去可能なプログラマブルリードオンリーメモリセルである。
【請求項９】
請求項１に記載の方法において、
前記メモリカードの記憶媒体内に隠されたメモリ領域のサイズを決定することは、メモリのバンク内のメモリブロックのサイズを決定することを含む。
【請求項１０】
請求項９に記載の方法において、
前記メモリカードの記憶媒体内に隠されたメモリ領域のサイズを決定することは、ユーザデータ容量を決定することと、前記メモリカードの合計メモリ容量から前記ユーザデータ容量を引き、前記隠されたメモリ領域の容量を決定することとを更に含む。
【請求項１１】
請求項１０に記載の方法において、
前記メモリカードの記憶媒体内に隠されたメモリ領域のサイズを決定することは、前記隠されたメモリ領域の容量を、前記メモリのブロックのサイズで除することによって、前記隠されたメモリ領域内のブロックの数を決定することを更に含む。
【請求項１２】
請求項１に記載の方法において、
前記第一の命令は、前記隠されたメモリ領域に格納された一つ又は複数のデータのバイトを消去するように、ホストシステムによって前記メモリカードに発行される。
【請求項１３】
メモリカードを安全に消去する方法であって、
前記メモリカード内のメモリバンクの数を決定することと、
各メモリバンク内のメモリのブロックのサイズを決定することと、
各メモリバンクのアクセス不可能な領域内のメモリの隠された代替ブロックの数を決定することと、
各メモリバンクのアクセス不可能な領域内のメモリの隠された代替ブロックの数まで、各メモリバンク内のメモリのブロックを繰り返し消去することとを備える。
【請求項１４】
請求項１３に記載の方法において、
各メモリバンクのアクセス不可能な領域内のメモリのブロックを消去する
ことを更に備える。
【請求項１５】
メモリカードを安全に消去する方法であって、
前記メモリカード内のメモリバンクの数を決定することと、
各メモリバンク内のメモリのブロックのサイズを決定することと、
各メモリバンクのアクセス不可能な領域内のメモリの隠された代替ブロックの数を決定することと、
各メモリバンクのアクセス不可能な領域内のメモリの隠された代替ブロックの数まで、メモリのブロックを、各メモリバンク内のデータパターンを用いて繰り返し上書きすることとを備える。
【請求項１６】
請求項１３に記載の方法において、
各メモリバンクのアクセス不可能な領域内のデータパターンを用いてメモリのブロックを上書きすることを更に備える。
【請求項１７】
請求項１６に記載の方法において、
前記データパターンは、ランダムデータパターン、全て０のデータパターン、全て１のデータパターン、１と０との交互によるデータパターン、及びランダムデータパターンのうちの一つである。
【請求項１８】
メモリカードを安全に消去する装置であって、
前記メモリカードの記憶媒体の各バンク内に隠されたメモリ領域の代替ブロックの数を決定する決定手段と、
各バンクのアクセス可能なメモリ領域に格納された全てのデータブロックを消去する第一の命令を生成する第一の命令生成手段と、
各バンク内の隠されたメモリ領域の代替ブロックに格納されたデータブロックを消去する第二の命令を生成する第二の命令生成手段とを備え、
前記第二の命令生成手段は、各バンク内の代替ブロックの数に応じて、前記第二の命令を繰り返し生成する。
【請求項１９】
請求項１８に記載の装置において、
前記第一の命令は、全てのデータブロックをデータパターンを用いて上書きし、
前記第二の命令は、各代替ブロックに格納された各データブロックを前記データパターンを用いて上書きし、
前記データパターンは、ランダムデータパターン、全て０のデータパターン、全て１のデータパターン、１と０との交互によるデータパターン、及びランダムデータパターンのうちの一つである。
【請求項２０】
請求項１８に記載の装置において、
前記第一の命令は、消去命令を用いて全てのデータブロックを消去し、
前記第二の命令は、消去命令を用いて、各代替ブロックに格納された各データブロックを消去する。
【請求項２１】
コンピュータプログラム製品であって、
プロセッサ読取可能記憶媒体と、
前記プロセッサ読取可能記憶媒体に記録され、前記メモリカード内の各メモリバンクの隠されたメモリ領域内の代替ブロックの数を決定するプログラムコードと、
前記プロセッサ読取可能記憶媒体に記録され、各メモリバンクの隠されたメモリ領域内の代替ブロックの数に応じて、各メモリバンクの隠されたメモリ領域の代替ブロックに格納されたデータブロックを消去する第一の命令を生成するプログラムコードと、
前記プロセッサ読取可能記憶媒体に記録され、各メモリバンクのアクセス可能なメモリ領域内のデータブロックを消去する第二の命令を生成するプログラムコードとを備える。
【請求項２２】
請求項２１に記載のコンピュータプログラム製品において、
前記プロセッサ読取可能記憶媒体は、磁気記憶媒体、光記憶媒体、及び半導体記憶媒体のうちの一つ又は複数のセットである。
【請求項２３】
コンピュータプログラム製品であって、
プロセッサ読取可能記憶媒体と、
前記プロセッサ読取可能記憶媒体に記録され、前記メモリカード内の各メモリバンクの数を決定するプログラムコードと、
前記プロセッサ読取可能記憶媒体に記録され、各メモリバンク内のメモリのブロックの数を決定するプログラムコードと、
前記プロセッサ読取可能記憶媒体に記録され、各メモリバンクのアクセス不可能な領域内のメモリの隠された代替ブロックの数を決定するプログラムコードと、
前記プロセッサ読取可能記憶媒体に記録され、各メモリバンクのアクセス不可能な領域内のメモリの隠された代替ブロックの数まで、各メモリバンク内のメモリのブロックを繰り返し消去するプログラムコードとを備える。
【請求項２４】
請求項２３に記載のコンピュータプログラム製品において、
前記プロセッサ読取可能記憶媒体に記録され、各メモリバンクのアクセス可能な領域内のメモリのブロックを消去するプログラムコードを更に備える。
【請求項２５】
請求項２３に記載のコンピュータプログラム製品において、
前記プロセッサ読取可能記憶媒体は、磁気記憶媒体、光記憶媒体、及び半導体記憶媒体のうちの一つ又は複数のセットである。
【請求項２６】
コンピュータプログラム製品であって、
プロセッサ読取可能記憶媒体と、
前記プロセッサ読取可能記憶媒体に記録され、前記メモリカード内のメモリバンクの数を決定するプログラムコードと、
前記プロセッサ読取可能記憶媒体に記録され、各メモリバンク内のメモリのブロックのサイズを決定するプログラムコードと、
前記プロセッサ読取可能記憶媒体に記録され、各メモリバンクのアクセス不可能な領域内のメモリの隠された代替ブロックの数を決定するプログラムコードと、
前記プロセッサ読取可能記憶媒体に記録され、各メモリバンクのアクセス不可能な領域内のメモリの隠された代替ブロックの数まで、各メモリバンク内のデータパターンを用いてメモリのブロックを繰り返し上書きするプログラムコードとを備える。
【請求項２７】
請求項２６に記載のコンピュータプログラム製品において、
前記プロセッサ読取可能記憶媒体に記録され、各メモリバンクのアクセス可能な領域内の前記データパターンを用いてメモリのブロックを上書きするプログラムコードを更に備える。
【請求項２８】
請求項２６に記載のコンピュータプログラム製品において、
前記データパターンは、ランダムデータパターン、全て０のデータパターン、全て１のデータパターン、１と０との交互によるデータパターン、及びランダムデータパターンのうちの一つである。
【請求項２９】
請求項２６に記載のコンピュータプログラム製品において、
前記プロセッサ読取可能記憶媒体は、磁気記憶媒体、光記憶媒体、及び半導体記憶媒体のうちの一つ又は複数のセットである。
【請求項３０】
システムであって、
指示を持つプログラムを格納し、バスに接続されたメモリと、
前記バスに接続されたプロセッサと、
前記バスに接続されたメモリカードコントローラと、
前記メモリカードコントローラに接続されたメモリカードコネクタと、
フラッシュメモリを有し、前記メモリカードコネクタに接続されたフラッシュメモリカードとを備え、
前記システムは、前記プログラムの指示を実行して、前記フラッシュメモリの隠されたメモリ領域内の代替ブロックを含む前記フラッシュメモリを安全に消去する。
【請求項３１】
請求項３０に記載のシステムにおいて、
前記バスに接続され、ユーザからの入力を取得する入力デバイスと、
前記バスに接続されたディスプレイデバイスとを更に備える。
【請求項３２】
請求項３１に記載のシステムにおいて、
前記バスと前記ディスプレイデバイスとの間に接続されたディスプレイコントローラを更に備える。
【請求項３３】
請求項３０に記載のシステムにおいて、
前記プロセッサ、前記メモリカードコントローラ、及び前記フラッシュメモリカードのうちの一つが、前記プログラムの指示を実行し、前記フラッシュメモリを安全に消去する。
【請求項３４】
請求項３３に記載のシステムにおいて、
前記フラッシュメモリを安全に消去するプログラムの指示は、前記メモリカード内の各メモリバンクの隠されたメモリ領域内の代替ブロックの数を決定する指示と、
各メモリバンクの前記隠されたメモリ領域内の代替ブロックの数に応じて、各メモリバンクの前記隠されたメモリ領域の代替ブロックに格納されたデータのブロックを消去する第一の命令を生成する指示とを含む。
【請求項３５】
請求項３４に記載のシステムにおいて、
前記フラッシュメモリを安全に消去するプログラムの指示は、各メモリバンクのアクセス可能なメモリ領域内のデータのブロックを消去する第二の命令を生成する指示を更に含む。
【請求項３６】
請求項３０に記載のシステムにおいて、
前記フラッシュメモリカードは、
そこにデータを格納するフラッシュメモリコアと、
前記フラッシュメモリコアに接続され、前記フラッシュメモリコアとのデータの読み出し、書き込み、及び消去を制御するコントローラと、
前記コントローラに接続され、前記フラッシュメモリカードを前記カードコネクタに結合させる複数のパッドとを含む。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に非揮発性メモリカードを消去することに関し、更に詳しくは、通常はホストシステムから隠されたＳＤメモリカード内のメモリを消去することに関する。
【背景技術】
【０００２】
メモリカードは、例えばデジタルスチルカメラのような製品の市場が拡大し続けることにより、消費者によって幅広く使用されるようになってきた。例えばＰＣカード（登録商標）、コンパクトフラッシュ（登録商標）、スマートメディア（登録商標）、マルチメディアカード（ＭＭＣ）（登録商標）、メモリスティック、メモリスティックプロ、セキュアデジタル（ＳＤ）メモリカード、ｘＤ−ピクチャカード（登録商標）のような様々な種類の利用可能なメモリカードが存在する。
【０００３】
メモリカードが始末されたり、又は別のパーティに渡される場合、その中にあるデータを如何にして消去するかが、データセキュリティの観点から重要な問題となる。すなわち、通常の手段によってメモリカードから消去されたデータは、内部メモリ内に未だに存在している。
【０００４】
メモリカード上に記録されたデータがもはや必要ではないとき、通常は、カードからデータを消去したように見える一般的「消去」動作が実行される。しかしながら、実際には、消去することによって、このデータを、例えばホストオペレーティングシステムからのように普通の手段からアクセスできないようにすることは稀である。このデータ自身は未だにメモリカードの内部メモリ内に存在する。従って、無法なユーザがメモリカード上に残された機密データを読み取り、それを予期しない方法で使用することは可能である。
【０００５】
更に、このカード内のデータは、例えば譲渡制限を持つライセンスされたプログラムのように、ライセンスされているかもしれない。中に格納されたライセンスされたプログラム（例えば、オペレーティングシステムソフトウェア、アプリケーションソフトウェア等）を消去せずに記憶装置を別のユーザに譲渡することは、ソフトウェアライセシング供給に違反する。
【０００６】
従って、メモリカード内のデータをより安全に消去することが望ましい。
【発明を実施するための最良の形態】
【０００７】
以下の詳細記述で明らかにされる本発明の実施例は、一般に、メモリカードからデータを安全に消去する方法、装置、ソフトウェア、及びシステムに関する。
【０００８】
本発明の一つの実施例によれば、メモリカードを安全に消去する方法が提供される。この方法は、メモリカードの記憶媒体内の隠されたメモリ領域のサイズを決定し、隠されたメモリ領域に格納されたデータのブロックを消去する第一の命令を発行し、その後、隠されたメモリ領域のサイズに応じて、別のデータのブロックを消去するために第一の命令を繰り返し発行する。
【０００９】
本発明の別の実施例では、プロセッサ読取可能な記憶媒体が、ここに記録されたプログラムコードとともに提供され、メモリカード内の各メモリバンクの隠されたメモリ領域内の代替ブロックの数を決定する。このプログラムコードは、（ｉ）各メモリバンクの隠されたメモリ領域内の代替ブロックの数に応じて、各メモリバンクの隠されたメモリ領域の代替ブロックに格納されたデータのブロックを消去する第一の命令を生成し、（ｉｉ）各メモリバンクのアクセス可能なメモリ領域内のデータのブロックを消去する第二の命令を生成するように作成される。
【００１０】
また、本発明の別の実施例では、フラッシュメモリカードと、ホストバスに接続され、プログラムを格納するメモリとを含むシステム要素が提供される。このプログラムは、フラッシュメモリの隠されたメモリ領域内の代替ブロックを含むフラッシュメモリカードのフラッシュメモリを、安全に消去するようにシステムが実行する指示を有する。
【００１１】
本発明の更なる別の実施例では、メモリカードを安全に消去する別の方法が提供される。この方法は、メモリカード内のメモリバンクの数を決定することと、各メモリバンク内のメモリのブロックのサイズを決定することと、各メモリバンクのアクセス不可能な領域内のメモリの隠された代替ブロックの数を決定することと、各メモリバンク内のメモリのブロックを、各メモリバンクのアクセス不可能な領域内のメモリの隠された代替ブロックの数まで繰り返し消去することとを含む。
【００１２】
本発明の更なる別の実施例では、メモリカードを安全に消去する更なる別の方法が提供される。この方法は、メモリカード内のメモリバンクの数を決定することと、各メモリバンク内のメモリのブロックのサイズを決定することと、各メモリバンクのアクセス不可能な領域内のメモリの隠された代替ブロックの数を決定することと、メモリのブロックを、各メモリバンクのアクセス不可能な領域内のメモリの隠された代替ブロックの数まで、各メモリバンク内のデータパターンを用いて繰り返し上書きすることとを含む。各方法は更に、各メモリバンクのアクセス可能な領域内のメモリのブロックを消去することを含む。
【００１３】
更に別の実施例では、決定手段と、第一の命令生成手段と、第二の命令生成手段とを含む装置が提供される。この決定手段は、メモリカードの記憶媒体の各バンク内の隠されたメモリ領域の代替ブロックの数を決定する。第一の命令生成手段は、各バンクのアクセス可能なメモリ領域に格納された全てのデータのブロックを消去する第一の命令を生成する。第二の命令生成手段は、各バンク内の隠されたメモリ領域の代替ブロック内に格納されたデータのブロックを消去する第二の命令を生成する。ここで第二の命令生成手段は、各バンク内の代替ブロックの数に応じて第二の命令を繰り返し生成する。
【００１４】
本発明の実施例の特徴及び利点は、以下の詳細記載から明らかになるであろう。
【００１５】
セキュリティ上の理由のため、フラッシュメモリカード内に格納された全てのデータを完全に消去することは有益である。これは特に、フラッシュメモリカードを始末したり、又は別の人に渡す場合に有益である。しかしながら、ホストシステムによって使用される典型的な消去方法は、フラッシュメモリカード内の隠されたメモリ領域を消去することができない。フラッシュメモリカードは、通常、いくつかの目的のために、隠されたメモリ領域を含む。ホストはいかなる直接的な手段によってもこの隠されたメモリ領域に対する読み出し、書き込み、又は消去を行うことができない。なぜなら、この領域は外部から隠されているからである。従って、たとえホストシステムが、アクセス可能なメモリカード内の全てのメモリ領域を消去したとしても、隠されたメモリ領域内のメモリカードには未だにデータが残っている。
【００１６】
図１には、メモリカードを安全に消去するシステム１００のブロック図が示されている。このシステム１００は、図示するように、ホストコンピュータ１０１とメモリカード１０２とを含んでいる。ホストシステム１０１に挿入されたメモリカード１０２を用いて、このシステムは、メモリカード１０２のフラッシュメモリ内のアクセス可能なメモリブロックを、アクセス不可能又は隠されたメモリブロックと同様に消去する。ここで用いられている用語であるフラッシュメモリは、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）と称するＥＥＰＲＯＭメモリが、メモリカードのメモリコアのための記憶媒体の好適な実施例である一方、本発明の実施例はまた、その他のタイプのメモリに対しても適用可能である。
【００１７】
ホストコンピュータシステム１０１は、図１に示され説明されるように、共に接続されたマイクロプロセッサ１０４、メインメモリ１０６、ディスプレイコントローラ１０７、ディスプレイデバイス１０８、メモリカードコントローラ１０９、メモリカードコネクタ１１０、ディスクドライブ記憶ユニット１１２、及び入力デバイス１１４を含んでいる。ホストコンピュータシステム１０１のこれら要素は、一つ又は複数のバス１０３を介して互いに通信する。
【００１８】
メモリカード１０２は、図１に示され説明されるように、共に接続されたメモリカードコネクション１２０、コントローラ１２２、及びフラッシュメモリ１２４を含んでいる。メモリカード１０２の一部として含まれるその他の要素が、図２を参照して以下に記載される。
【００１９】
ホストシステム１０１に接続されたメモリカード１０２を用いて、フラッシュメモリ１２４は、一般に、ホストシステム１０１によって、一つ又は複数のメモリのバンク１２６Ａ〜１２６Ｎを持っているとみなされる。各バンク１２６は、一つ又は複数のメモリのブロック１２８Ａ〜１２８Ｍを持つことができる。各ブロックは、一つ又は複数のメモリのページ１３０Ａ〜１３０Ｐを持つことができる。しかしながら、各バンク内には、ホストによる通常のアクセスから隠され、メモリカード１０２によって様々な目的のために使用されるその他のメモリのブロックも存在しうる。
【００２０】
プログラム１０５は、ディスクドライブユニット１１２又はその他の固定記憶装置から読み取られ、ホストコンピュータシステム１０１のメインメモリ１０６に一時的に格納される。このプログラム１０５は、ホストコンピュータによって実行される本発明の一つの実施例を表し、メモリカード１０２からデータを安全に消去する。このプログラム１０５はスタンドアローンであるか、又は例えば、マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）オペレーティングシステム、アップル社のＭａｃｉｎｔｏｓｈオペレーティングシステム、Ｌｉｎｕｘオペレーティングシステムのようなコンピュータ用オペレーティングシステム内のメモリカード用ソフトウェアドライバの一部であっても良い。あるいは、このプログラム１０５は、ソフトウェアアプリケーションの一部でありうる。あるいは、このプログラム１０５の動作は、メモリカードコントローラ１０９又はメモリカード１０２自身のコントローラ１２２のハードウェア又はソフトウェア内に具体化することができる。その場合、本発明のこれら実施例におけるフラッシュメモリを安全に消去するようにプログラム１０５の動作を実行させる特別な命令が与えられる。
【００２１】
図２に示すように、典型的なフラッシュメモリカード１０２’の詳細ブロック図が説明される。このフラッシュメモリカード１０２’は、ハウジング１２５内に収納されたメモリカードコネクション１２０、コントローラ１２２、及びフラッシュメモリコア１２４を含んでいる。フラッシュメモリコア１２４は、一つ又は複数のＥＥＰＲＯＭ集積回路か、又はその他のタイプのメモリ集積回路である。メモリカードコネクション１２０は、プリント回路基板のエッジコネクタのパッドによって形成されうる。すなわち、メモリカードコネクション１２０、コントローラ１２２、及びフラッシュメモリコア１２４は、プリント回路基板に共に搭載され、保護のためにハウジング１２５内に収納される。
【００２２】
また、コントローラ１２２は、一つ又は複数の集積回路から形成されることもできる。このコントローラ１２２は、図２に示され説明されるように、共に接続されたＩ／Ｏドライバインタフェース２０２、カードコントローラ２０４、パワーオン検出器２０６、Ｉ／Ｏメモリインタフェース２０８、及び複数のレジスタ２１０〜２１５を含む。
【００２３】
レジスタ２１０〜２１５は、メモリカードのための規格の一定の仕様を満足するように適用される。本発明の一つの実施例では、メモリカード１０２’は、セキュアデジタル（ＳＤ）メモリカードである。ＳＤメモリカード仕様に従い、レジスタ２１０は、動作条件レジスタ（ＯＣＲ）である。レジスタ２１１は、カード識別番号レジスタ（ＣＩＤ）である。レジスタ２１２は、相対カードアドレスレジスタ（ＲＣＡ）である。レジスタ２１３は、ドライブステージレジスタ（ＤＳＲ）である。レジスタ２１４は、カード特有データレジスタ（ＣＳＤ）である。レジスタ２１５は、セキュアデジタルコンフィギュレーションレジスタ（ＳＣＲ）である。
【００２４】
相対カードアドレスレジスタは、カードのためのローカルシステムアドレスを提供する。これは、メモリカードによって動的に提案され、初期化の間にホストによって承認される。カード識別番号（ＣＩＤ）レジスタは、メモリカードの個々の識別のために相対的にユニークな番号を提供する。ドライバステージレジスタは、カード出力ドライブを構成するために適用される。カード特有データレジスタは、カード動作又は条件についての情報を含む。従って、コンフィギュレーションレジスタは、ＳＤメモリカード特別特性及び機能についての情報を含む。
【００２５】
コントローラ１２２のＩ／Ｏメモリインタフェース２０８は、フラッシュメモリコア１２４を形成する一つ又は複数の集積回路にインタフェースする。コントローラ１２２のＩ／Ｏドライバインタフェース２０２は、電気的なコネクション１２０のパッドを経由してホストコンピュータシステムに対してインタフェースを提供する。
【００２６】
図３に示すように、フラッシュメモリコア１２４とその構造のブロック図が、メモリの各バンク内部の隠されたメモリ領域３００の隠されたメモリブロック、すなわち代替メモリブロック１２８’を説明するために使用される。メモリカードにおけるフラッシュメモリは、メモリにおける一つ又は複数のバンク１２６に形成される。メモリの各バンク１２６は、メモリの複数のブロック１２８，１２８’によって形成される。ブロックのサイズは固定されており、例えば、ブロック毎のバイトの数を示している。
【００２７】
メモリの各バンク１２６内には、隠されたメモリ領域３００と、正常すなわちアクセス可能なメモリ領域３０２とが存在する。正常すなわちアクセス可能なメモリ領域３０２は、ホストシステムを通じてユーザへのアクセスが可能である。正常すなわちアクセス可能なメモリ領域３０２は、ユーザ読み出し／書き込み可能なメモリを含んでいる。更には、ユーザによる複製から守られたデータを備えたメモリを含んでいる。正常すなわちアクセス可能なメモリ領域３０２は、ともにユーザがアクセス可能な「通常領域」と「安全なデータ領域」との両方を含む。正常すなわちアクセス可能なメモリ領域３０２は、ホストシステムによって容易に消去、又は上書きがなされる。隠されたメモリ領域、すなわち領域３００は、（例えば、パスワード、システム設定等のような）メモリカードシステムのために使用されるメモリと、データをメモリカードに書き込むために使用される代替メモリとを含んでいる。これらは共にユーザに対してアクセス可能ではない。隠されたメモリ領域すなわち領域３００は、「システム領域」と「隠された領域」との両方を含む。
【００２８】
メモリの各ブロック１２８，１２８’は、メモリの複数のページ１３０を持っている。メモリのページ１３０は、通常の読み書き動作が行われるメモリの最小単位である。メモリのページ１３０は、一般に、１０２４ワード又はバイトのデータをアドレスする。１バイトは一般に、８ビットのデータであるが、他のビット幅であるかもしれない。
【００２９】
本発明の実施例では、メモリのブロックは、隠されたメモリ領域３００を含むフラッシュメモリを安全に消去するための一つの消去／上書き動作を実行するために使用されるメモリのアクセス単位である。メモリのブロックが、ここで開示された本発明の実施例で説明され記述されたメモリの単位サイズである一方、本発明の実施例は、メモリのその他の単位サイズにも容易に拡張されうる。
【００３０】
例えば代替ブロック１２８’のような一つ又は複数のメモリのブロックは、バンク内部の隠されたメモリ領域３００として使用される。メモリのその他のブロック１２８は、アクセス可能な、すなわち可視メモリ領域３０２を提供する。内部の隠されたメモリ領域は、ホストシステムから隠されており、ユーザは直接アクセスできない。すなわち、ホストコンピュータシステム１０１は、代替ブロック１２８’に直接アクセスできない。用語「代替ブロック」１２８’はまたここでは「隠されたブロック」１２８’とも称することができることを留意されたい。
【００３１】
隠されたブロック、すなわち代替ブロック１２８’として選択されるメモリブロックは、特定の物理アドレス空間に固定されない。すなわち、隠されたブロック、すなわち代替ブロック１２８’は、書き込み又は消去動作によって、物理アドレス空間内で一つの物理ブロックから別の物理ブロックへと移動する。なぜそうであるかを理解するために、ＥＥＰＲＯＭメモリに対してなされる消去及び書き込みサイクル数に限界がある。コントローラ１２２は、メモリカード内のメモリ容量の寿命を延長できるように、隠されたブロック、すなわち代替ブロック１２８’を使用して、メモリコア全体にわたった消去及び書き込みサイクルの数を増やす。
【００３２】
代替ブロック１２８’は、ホストコンピュータシステムから隠されているので、そこに存在するデータを直接的に削除又は消去することはできない。ホストコンピュータが、アクセス可能領域３０２のブロック１２８内の全てのデータを直接的に削除又は消去できる一方、内部の隠されたメモリ領域、すなわちアクセス不可能な領域３００の代替ブロック１２８’に格納されたデータが未だに存在する。メモリカード内のデータの安全な消去を本当に行うために、内部の隠されたメモリ領域、すなわちアクセス不可能な領域３００内のデータはまた、本発明の実施例によって削除又は消去される。
【００３３】
本発明の実施例は、データのページがメモリカード内のメモリのブロックに書き込まれており、フラッシュメモリ内でどれだけのメモリが直ちに消去されるかという方式に基づいている。フラッシュメモリは、データのページが、ブロックに直接書き込まれないようにする。コントローラはまず、そこにデータを書き込む前に特定の領域を含むメモリのブロックを消去する。フラッシュメモリ内で直ちに消去されるメモリの最小量は、メモリのブロックであり、メモリのページではない。例えば、図４（ａ）〜（ｄ）のブロック１２８Ａ〜１２８Ｂで示すように、メモリの各ブロック内に４ページあると仮定する。
【００３４】
図４（ａ）に示すように、データはメモリブロックＡ  １２８Ａのページ２に上書きされると仮定する。フラッシュメモリカードは、以下に示す動作を内部で実行する。
【００３５】
（１）新たなブロックの割り当て。
【００３６】
メモリカードは、新たなブロックであるブロックＢ  １２８Ｂを割り当てる。これは未使用の隠されたブロック１２８’のうちの一つである。ブロック１２８’は、与えられたバンク内部の隠されたメモリ領域３００内にあり、ホストから隠されている。
【００３７】
（２）移動前。
【００３８】
修正されておらず、修正されたページ上に配置されたページについて、ブロックＡ  １２８Ａからのオリジナルページを、ブロックＢ  １２８Ｂ内の同じページ位置にコピーされたい。この例では、ページ２は、ブロック１２８Ａに格納されたターゲットデータを用いて修正されたページである。従って、図４（ａ）に示すように、ブロックＡ  １２８Ａのページ１データがコピーされ、ブロックＢ  １２８Ｂのページ１に移動／書き込みされる。
【００３９】
（３）ターゲットデータの書き込み。
【００４０】
ページ２はターゲットデータによって修正されたページであるので、図４（ｂ）に示すように、このターゲットデータは、ブロックＢ  １２８Ｂのページ２に書き込まれる。
【００４１】
（４）移動後。
【００４２】
修正されておらず、修正されたページ上に配置されたページについて、ブロックＡ  １２８Ａからのオリジナルページを、ブロックＢ  １２８Ｂ内の同じページ位置にコピーされたい。前に述べたように、ページ２は、この例では、ターゲットデータを用いて修正されたページである。
【００４３】
従って、この例では、図４（ｃ）に示すように、ブロックＡ  １２８Ａのページ３及びページ４のデータがコピーされ、ブロックＢ  １２８Ｂのページ３及びページ４にそれぞれ移動／書き込みがなされる。
【００４４】
（５）古いブロックの解放。
【００４５】
ブロックＡ  １２８Ａはまず、データを格納し、アクセス可能なメモリ領域３０２の一部である一方、関連する論理アドレスＸを持つ。しかしながら、ページ２を除くブロックＡのオリジナルデータを保持しているブロックＢ  １２８Ｂによって、ブロックＡ  １２８Ａと論理アドレスＸとの間の関係を壊すことができる。その後、ブロックＢ  １２８Ｂと論理アドレスＸとの間の新たな関係が、ブロックＢ  １２８Ｂと論理アドレスＸとによってなされる。ブロックＡ  １２８Ａは、論理アドレス関連からフリーであり、破棄されて、内部の代替領域３００内で隠されたブロックすなわち代替ブロック１２８’の隠されたブロックすなわち代替ブロック１２８Ａ’となることができる。これによって既存のデータを保持する。
【００４６】
図５に示すように、フラッシュメモリ１２４の物理構造は、一つ又は複数のＥＥＰＲＯＭメモリセルの物理構造に部分的に基づいている。フラッシュメモリ１２４の設計において、ＥＥＰＲＯＭメモリセルは、物理アドレス構造で配列される。これによって、メモリのバンク１２６は、メモリのブロック１２８，１２８’から形成され、ブロックはメモリのページから形成されるようになる。隠されたメモリ領域３００内のメモリの隠されたブロック、すなわち代替ブロック１２８’を提供するために、メモリカード内のフラッシュメモリの物理アドレス空間と、論理アドレス空間との間に１対１の対応は無い。メモリの各バンク１２６は、一つ又は複数の代替ブロック１２８’を持っている。用語「代替ブロック」１２８’はまたここでは「隠されたブロック」１２８’としても称することができることを留意されたい。内部の隠された領域３００は、各メモリバンク１２６の一つ又は複数の代替ブロック１２８’である。隠された領域３００内の代替ブロック１２８’は、メモリの連続的な物理ブロックではないが、物理アドレス空間にわたって広がる。図５の両矢印によって示されるように、現在使用可能なアクセス可能なブロック１２８は、別の時間ポイントにおいては、代替ブロック１２８’として指定される。同様に、現在の代替ブロック１２８’は、別の時間ポイントにおいては、使用可能なアクセス可能なブロック１２８として指定される。すなわち、メモリブロックは、内部の隠された領域３００及びアクセス可能なメモリ領域３０２内に存在していることから、前後に入れ替わる。
【００４７】
例えば、現在の半導体技術に基づき、一つのバンクの最小サイズは１６メガバイト（ＭＢ）である。例えば、メモリカードの全体容量が６４ＭＢであれば、このカード内のフラッシュメモリは、それぞれが１６ＭＢの４つのバンクの構成となろう。技術がメモリセルの製造プロセスと設計とを改善すると、一つのバンクのサイズが３２ＭＢ、６４ＭＢ、あるいはそれ以上に増加し、メモリカードの合計容量を増やすことができる。
【００４８】
前に説明したように、代替ブロック１２８’は、フラッシュメモリにおける書き込み／消去の動作毎に使用される。メモリのブロックが戻され、内部の隠されたメモリ領域になると、ブロックに格納されたデータが保持される。代替ブロック内のデータを消去するために、まず各バンク内のアクセス可能なメモリブロックの全てを消去し、次に、隠されたメモリの代替ブロックに格納された各バンクに無効データを書き込む。
【００４９】
本発明の実施例では、これを遂行するために以下に示す基本ステップが行われる。
【００５０】
（０）ホストによってアクセス可能な全てのアクセス可能メモリ領域の削除、消去、又は初期化を行う。
【００５１】
（１）カードの合計メモリ容量に基づいてバンクの合計数の決定又は仮定を行う。
【００５２】
（２）各バンクのための代替ブロックの合計サイズを計算する。
【００５３】
（３）一つのブロックのサイズを計算する。
【００５４】
（４）各バンクについて、同一の論理アドレスに対する無効データの消去又は書き込みを行う。書き込み動作のサイズは、ステップ３で計算されたブロックサイズと同じである。
【００５５】
（５）データの合計数が各バンク内の合計代替ブロックサイズに等しくなるまでステップ４を繰り返す。
【００５６】
（６）メモリカード内の全てのバンクについてステップ４とステップ５とを繰り返す。
【００５７】
例えば、図６（ａ）に示すように、四つの１６ＭＢバンク６２６を備えたメモリ６２４を持つ６４ＭＢ  ＳＤメモリカードを考える。各バンク６２６は、メモリの複数のブロック６２８と、一つ又は複数の代替ブロック６２８’とを含む。一つ又は複数のブロック６２８’は、各メモリバンク６２６の内部の隠された領域６００を形成する。複数のブロック６２８は、アクセス可能なメモリ領域６０２を形成する。代替ブロック６２８’は、内部の隠された領域６００と、アクセス可能なメモリ領域６０２との間にある他のブロック６２８と交換する。すなわち、隠された領域６００内のブロック６２８’は、連続したブロックではないが、物理アドレス空間にわたって広がっている。
【００５８】
図６（ａ）〜図６（ｃ）、及び図７〜図１０に関連して、以下に示す詳細ステップが実行され（全てが要求される訳ではないが）、内部の隠された、すなわちアクセス不可能なメモリ領域６００の代替ブロック６２８’からのデータが削除又は消去される。
【００５９】
図７〜図１０は、図６（ａ）〜図６（ｃ）の例のメモリブロック図に対応するフローチャートを示す。このソフトウェアフローチャートは、開始ボックス７００で始まる。
【００６０】
ブロック７０２では、ステップ０が実行される。ここでは、ホストに直接アクセス可能なアクセス可能なメモリ領域６０２の全てが消去、削除、すなわち再フォーマット／初期化される。このステップであるステップ（０）は、図示するように開始時に実行されるか、あるいは、ステップ（８）の後であって、ブロック９２４における終了の直前に実行される。
【００６１】
アクセス可能なメモリ領域６０２は、アクセス可能なメモリ位置を物理的に消去する命令によって直ちに全てが消去される。さもなければ、一連の書き込み命令を実行することによって、無効なデータが、アクセス可能なメモリ位置に書き込まれる。この無効なデータは、例えば、”０×ＦＦ”（ＦＦ  １６進数＝１１１１１１１１）のような全て１、全て０  ０Ｘ００（００  １６進数＝００００００００）、又は１と０（０１０１０１０又は１０１０１０１０）或いは１と０とのランダムパターンである。いずれにせよ、このデータは意味が無く、メモリカードに書き込まれ、メモリ位置を上書きする。
【００６２】
ブロック７０４とブロック７０６では、ステップ１が実行される。
【００６３】
ブロック７０４では、隠されたメモリの代替ブロックを含む利用可能なメモリの合計量が、以下に示す式（１Ａ）によって示されるように可変なTotalMemoryCapacity（ＴＭＣ）６３０に書き込まれる。代替ブロックを含む合計メモリ量は、通常、その製造者によって提供され、メモリカードのハウジング１２５の表面にリストされているメモリカードの指定されたサイズである。
【００６４】
TotalMemoryCapacity←代替ブロックを含む合計メモリ量・・・・・（１Ａ）
ブロック７０６では、メモリの一つのバンク内のメモリのサイズ（BankSize  ６３２）が決定又は仮定される。図８のフローチャートは、BankSizeがどのようにして決定されるかを説明している。図８に示すように、ブロック８００では、TotalMemoryCapacityが５１２ＭＢ以下であるかが判定される。もしも「Ｙｅｓ」であれば、ブロック８０８にジャンプする。ブロック８００において「Ｎｏ」であれば、ソフトウェアは、ブロック８０２に進む。
【００６５】
ブロック８０８では、５１２ＭＢ以下のメモリ容量をもつメモリカードを形成するために使用されるフラッシュメモリ構成であることから、BankSizeが１６ＭＢに設定される。
【００６６】
ブロック８０２では、TotalMemoryCapacityが２ギガバイト（ＧＢ）（２０４８ＭＢと等しい）以下であるかが判定される。もしも「Ｙｅｓ」であれば、ブロック８０６にジャンプする。ブロック８００において「Ｎｏ」であれば、このソフトウェアはブロック８０４に進む。
【００６７】
ブロック８０４では、２ＧＢを超えるメモリ容量をもつメモリカードを形成するために使用されるフラッシュメモリ構成であることから、BankSizeが６４ＭＢに設定される。
【００６８】
ブロック８０６では、２ＧＢ以下であって５１２ＭＢを超えるメモリ容量とをもつメモリカードを形成するために使用されるフラッシュメモリ構成であることから、BankSizeが３２ＭＢに設定される。
【００６９】
ブロック８１０では、BankSizeが決定され、ソフトウェアがブロック７０６に戻り、図７に示すようにブロック７０８に進む。
【００７０】
再び図７に示すように、ブロック７０８では、以下の式（１Ｂ）に示すように、TotalMemoryCapacityをBankSizeで除することによって、メモリカード内のバンクの合計数（TotalNumberBanks  ＴＮＢ）が決定される。
【００７１】
TotalNumberBanks＝TotalMemoryCapacity／BankSize・・・（１Ｂ）
例えば、図６（ａ）に示すように、四つのメモリバンク６２６において、各バンクのサイズは１６ＭＢであると仮定する。すなわち、以下の式（１Ｃ）に示すように、BankSizeは１６ＭＢである。
【００７２】
BankSize＝１６ＭＢ・・・（１Ｃ）
従って、以下の式（１Ｄ）に示すようにして、TotalNumberBanksが計算される。
【００７３】
TotalNumberBanks＝６４ＭＢ／１６ＭＢ＝４・・・（１Ｄ）
ブロック７１０，７１２，７１４では、ステップ２が実行される。ここでは、フラッシュメモリコアの内部に隠されたメモリ領域の合計量（すなわち、合計代替メモリ容量）が計算される。
【００７４】
フラッシュメモリコアの内部の隠されたメモリ領域の合計量を決定するために、メモリカード内のアクセス可能なメモリの量（すなわち、隠されたメモリを含まないユーザデータ容量UserDataCapacity）が、メモリカードの合計メモリ容量（すなわち、隠されたメモリの量を含むTotalMemoryCapacity）から減じられる。UserDataCapacityは、メモリカード内のレジスタ設定から決定することができる。ＳＤメモリカードについて、UserDataCapacityは、ＳＤメモリカードのＣＳＤレジスタ２１４に格納されたレジスタ情報から計算される。
【００７５】
ブロック７１０では、C_SIZEとC_SIZE_MULT、READ_BL_LENがメモリカード１０２のＣＳＤレジスタ２１４から読み取られる。
【００７６】
ブロック７１２では、ブロック７１０によってＣＳＤレジスタ２１４から取得された情報を用いて、以下に示す式（２Ａ）によってUserDataCapacityが計算される。
【数１】
2005327296.tif 000003
【００７７】
ここで、BLOCKNRは、以下に示す式（２Ｂ）及び式（２Ｃ）から計算され、BLOCK_LENは、以下に示す式（２Ｄ）から計算される。
【数２】
2005327296.tif 000004
【数３】
2005327296.tif 000005
【数４】
2005327296.tif 000006
【００７８】
例えば、上記で議論したように、我々は、図６（ａ）〜図６（ｃ）に示すメモリカードの合計メモリ容量は、６７，１０８，８６４バイトに等しい６４メガバイト（６４ＭＢ）であると仮定した。ここで更に、各レジスタ値C_SIZEとC_SIZE_MULT、READ_BL_LENがＣＳＤレジスタから、C_SIZE＝０×０Ｆ２７、又は０Ｆ２７  １６進数、又は３８７９  １０進数、C_SIZE_MULT＝３、及びREAD_BL_LEN＝９、として読み出されるものと仮定する。いずれにせよ、UserDataCapacityは、以下のように計算される。
【数５】
2005327296.tif 000007
【００７９】
ブロック７１４では、全てのバンクからの代替ブロックの合計代替メモリ容量（ＴＳＭＣ）が、以下に示す式（２Ｅ）を用いて計算される。
【数６】
2005327296.tif 000008
【００８０】
典型的な６４ＭＢメモリカードを用いて計算された値を代入することによって、TotalSpareMemoryCapacityが以下のように計算される。
【数７】
2005327296.tif 000009
【００８１】
TotalSpareMemoryCapacityの値は、内部に隠された領域の正確な合計数になるとは限らないことに留意されたい。なぜなら、この値は、もしあれば、システムメモリ領域及び保護メモリ領域として使用することが可能なメモリを含むからである。しかしながら、この値は、代替ブロックの合計数によって提供された合計代替メモリ容量、又は内部に隠された合計領域の最大値を表す。
【００８２】
ブロック７１６では、バンク毎の内部に隠されたメモリサイズ（ＨＭＳＢ  ６３２）のサイズと、バンク内のブロック１２８，１２８’のサイズ（BlockSize  ６３４）とを計算するためにステップ３が実行される。バンク毎の隠されたメモリサイズ（ＨＭＳＢ  ６３２）は、以下に示す式（３）に従って合計代替メモリ容量（ＴＳＭＣ）を合計バンク数（ＴＮＢ）で除することによって計算される。
【００８３】
HiddenMemorySizePerBank＝TotalSpareMemoryCapacity/TotalNumberBanks・・・・（３）
図６（ａ）〜図６（ｃ）の例を用いて続けると、合計して四つのバンクが存在し、合計代替メモリ容量は３５３８９４４バイトと計算された。これらの数を式（３Ａ）に入力することによって、我々は、以下に示すようにバンク毎の隠されたメモリサイズＨＭＳＢ６３２を決定することができる。
【数８】
2005327296.tif 000010
【００８４】
ブロック７１８及びブロック７２０では、ステップ４が実行され、バンク内のブロック１２８，１２８’のサイズ（BlockSize  ６３４）が計算される。ＳＤメモリカードについて、BlockSize６３４は、ＳＤメモリカードのＣＳＤレジスタ２１４に格納されたレジスタ情報から計算される。
【００８５】
ブロック７１８では、WRITE_BL_LENとSECTOR_SIZEとがメモリカード１０２のＣＳＤレジスタ２１４から読み取られる。BlockSize６３４は、ＣＳＤレジスタ内に定義されたSECTOR_SIZEとWRITE_BL_LENとから計算される。
【００８６】
ブロック７２０では、以下に示す式（４）に従って一つのブロック１２８，１２８’のサイズ(BlockSize  ６３４）が計算される。
【数９】
2005327296.tif 000011
【００８７】
図６（ａ）〜図６（ｃ）の典型的な６４ＭＢメモリカードについて、SECTOR_SIZEは、０×２０、２０  １６進数、又は３２  １０進数として読まれ、WRITE_BL_LENは、１０進数の９の値を持つREAD_BL_LENに等しく読み出されると仮定する。
【数１０】
2005327296.tif 000012
【００８８】
これらの値を式（４）に代入することによって、BlockSizeが以下のように計算される。
【数１１】
2005327296.tif 000013
【００８９】
これらの値を決定した後、アクセス不可能な、すなわち隠されたメモリは、図９のフローチャートに示す複数書き込み動作によってメモリ位置を上書きするために無効なデータを用いて安全に消去される。あるいは、図１０のフローチャートに示す複数消去動作を用いてメモリ位置を消去することによって、安全に消去することができる。
【００９０】
複数書き込み動作を用いてメモリカード内のデータを安全に消去する図９を参照する。
【００９１】
ブロック９０２では、ステップ５が実行され、メモリの代替ブロック１２８’を上書きするために、無効なデータを、各バンクの一つのブロックに書き込む回数が決定される。無効なデータを書き込む回数は、バンク毎の代替ブロックの数（NumberSpareBlocksBank、ＮＳＢＢ  ６３６）と同じである。それぞれの場合において、バンク毎の代替ブロックの数（NumberSpareBlocksBank、ＮＳＢＢ  ６３６）は、以下に示す（５）式を使って計算されるように、バンク毎の隠されたメモリサイズ（HiddenMemorySizePerBank）をBlockSizeで除することによって決定される。
【００９２】
NumberSpareBlocksBank＝HiddenMemorySizePerBank/BlockSize・・・（５）
HiddenMemorySizePerBank ＨＭＳＢ  ６３２とBlockSize６３４との計算は、図７を参照して以前に議論した。
【００９３】
図６（ａ）〜図６（ｃ）の例を用いて続けると、HiddenMemorySizePerBankは、８８４５７３６バイトであり、BlockSizeが１６３８４バイトであると以前に決定された。これらの値を式（５）に代入することによって、我々は以下を得る。
【数１２】
2005327296.tif 000014
【００９４】
従って、代替ブロック６２８’を含むメモリ６２４のバンク６２６を安全に消去するために、無効なデータの５４ブロックが、与えられたバンク内で同一の論理アドレスに書き込まれるべきである。
【００９５】
図９のフローチャートでは、一対のループが設定されている。一つのループは、与えられたバンクにデータを書き込むためのものであり、別のループは、バンクからバンクへ移動するためのものである。
【００９６】
ブロック９０４では、変数”ｊ”が１に初期化される。
【００９７】
ブロック９０６では、ｊが合計バンク数TotalNumberBanks（ＴＮＢ）よりも大きいか否かが判定される。もしも大きければ、ルーチンはブロック９２４にジャンプし、終了する。
【００９８】
もしも大きくなければ、ルーチンはブロック９０８にジャンプする。
【００９９】
ブロック９０８では、変数”ｉ”が１に記される。
【０１００】
ブロック９１０では、論理アドレスが決定され、与えられたバンクｊ、ここでｊは変数、に無効なデータを繰り返し書き込むように決定される。バンク毎のユーザアクセス可能なメモリブロックの数（バンク毎のブロック数（NumberBlocksBank）は、まず、バンク毎のメモリ量（BankSize）からバンク毎の隠されたメモリ量（HiddenMemorySizePerBank）を減じ、更に、この結果を、ブロック毎のメモリ量（BlockSize）で除することによって決定される。各バンクｊについて、ｊはインクリメントされる。従って、変数ｊは、あるバンクから別のバンクへとNumberBlocksBankによって論理アドレスをインクリメントする。この論理アドレスは、変数ｎの選択によるBlockSizesの数によって与えられたバンクｊ内でオフセットされる。この変数ｎは、０から（NumberBlocksBank−１）の範囲までのインクリメントによって変わりうる。
【０１０１】
ブロック９１２では、”ｉ”がバンク毎の代替ブロックの数NumberSpareBlocksBank（ＮＳＢＢ）よりも大きいか否かが判定される。もしも大きければ、このルーチンはブロック９２２にジャンプする。もしも大きくなければ、このルーチンはブロック９１４にジャンプする。
【０１０２】
ブロック９２２では、変数ｊが、１ずつインクリメントされる。これは、メモリの新たなバンクが処理され、このルーチンがブロック９０６に戻ることを示している。
【０１０３】
ブロック９１４では、ステップ６が実行され、無効なデータ（すなわち、消去データ）がバンクｊ内の同一の論理アドレスに書き込まれる。この書き込み動作中に書き込まれる無効なデータのサイズは、ブロック７２０においてステップ４で以前に計算されたブロックのサイズ（BlockSize）と同じである。
【０１０４】
複数書き込み命令（ＣＭＤ  ２５）がこの論理アドレスに対するＳＤメモリカードに発行される。
【０１０５】
例えば、このアドレスが、メモリの第一のバンクに無効なデータを書き込むために使用されると仮定すると、論理アドレスは、０×００００００００から（０×００ＣＡ００００−BlockSize）に設定された範囲にある。表記”０×”は、１６進数に従う数を示す。
【０１０６】
BlockSizeは、以前に16384バイトに決定された。このBlockSizeをこの範囲に代入することによって、我々は、０×００００００００から０×００Ｃ９Ｃ０００となる実際の論理アドレス範囲を知る。
【０１０７】
無効なデータを書き込むために選択された論理アドレスは、ブロック７２０においてステップ４で決定されたBlockSizeを用いることによって、好適にはメモリのブロックと一列になっている。
【０１０８】
例えば、無効なデータは、“０×ＦＦ”、ＦＦ  １６進数、又は１１１１１１１１  １０進数のデータパターンであり、メモリカード内の第一のバンクについて論理アドレス“０×００８０００００”において、メモリカードに書き込まれる。
【０１０９】
ブロック９１５では、BlockSizeの無効なデータ（すなわち、消去／削除データ）が、メモリカードに送られ、選択された論理アドレスにおいて書き込みが開始される。この無効データは、例えば全て１、全て０、１と０とを交互に、１と０とのランダムのように意味を持たないデータのパターンである。
【０１１０】
ブロック９１６では、選択された論理アドレスを使って一つのブロックに無効データを書き込んだ後、複数の書き込み動作を停止するための停止命令（ＣＭＤ  １２）が発行される。
【０１１１】
ブロック９２０では、変数ｉが、１ずつインクリメントされる。これは、新たなブロックが処理され、このルーチンがブロック９１２に戻ることを示している。
【０１１２】
複数書き込み動作を使ってデータを上書きする代わりに、複数の消去動作を使用してデータをクリアすることが可能である。この場合、最初の書き込みブロック設定命令が発行され、消去命令（ＣＭＤ  ３２）もまた発行される。次に、最後の書き込みブロック設定命令が発行され（ＣＭＤ  ３３）、その後、消去命令（ＣＭＤ  ３８）が発行される。これは、図１０のフローチャートを参照して以下に説明される。ブロック９１４，９１５，９１６は、ステップ７として、バンク毎の代替ブロックの数（NumberSpareBlocksBank）について繰り返される。すなわち、ブロック９１４，９１５，９１６のステップ６は、バンク毎の代替ブロックの数（NumberSpareBlocksBank）について繰り返される。このようにして、初期代替ブロックはアクセス可能なメモリ領域に確実にスワップアウトされる。これによって、代替ブロックが上書きされることが可能となる。
【０１１３】
引き続く例では、NumberSpareBlocksBankは５４であった。従って、ブロック９１４，９１５，９１６は、５４回繰り返される。
【０１１４】
ブロック９１４，９１５，９１６を含むループと連携しているブロック９１０は、各バンクについて、ステップ８としてバンクの合計数（TotalNumberBanks）繰り返される。すなわち、ステップ６及びステップ７は、ブロック７０８で以前に計算されたバンクの合計数繰り返される。バンクの開始論理アドレスは、内部の隠されたメモリ領域を消去／上書きするためにあるバンクから別のバンクに移動する場合、ブロック９１０で変えられる。図６（ａ）〜図６（ｃ）の例を用いて続けると、バンクの合計数（TotalNumberBanks）は４と計算された。第一のバンクアドレスは“０×００８０００００”又は００８０００００  １６進数であった。これは、複数の書き込み動作を発行するために使用される。
【０１１５】
以下のアドレスは、以下のような残りのバンクのためのブロックと並列している複数の書き込み動作を発行するために使用される。
【０１１６】
第２のバンク：“０×０１８０００００”又は０１８０００００  １６進数。
【０１１７】
第３のバンク：“０×０２８０００００”又は０２８０００００  １６進数。
【０１１８】
第４のバンク：“０×０３８０００００”又は０３８０００００  １６進数。
【０１１９】
前に議論したように、ブロック７０２のステップ０は、図示され記述されたように、開始時の代わりにステップ８の後に実行される。すなわち、ブロック７０２の機能は、ブロック９２４における終了に先立つように移動される。
【０１２０】
図１０に示すように、複数の書き込み動作を使ってデータを上書きする代わりに、複数の消去動作が使用され、メモリコアからのデータがクリアされる。図１０のフローチャートは、同一の参照符番（９０２，９０４，９０６，９０８，９１２，９２０，９２２，９２４）を用いた類似要素を有しており、図９のフローチャートと幾分同様である。図１０におけるこれら類似要素の機能は、図９を参照して詳細に記載されているので、簡略化の理由でここでは繰り返さない。しかしながら、図１０において参照番号１０１０，１０１４，１０１６，１０１８を持つブロックは、図９のものとは異なる。図１０のフローチャートは、図９のフローチャートのように一対のループを示している。一つのループは、代替ブロックの数用であり、別のループは、メモリカードのコアメモリ内のバンクの数用である。それぞれのループの条件は、ループ内で連続すること、又は異なるブロックにジャンプすること、又はこのソフトウェアルーチンを終了させることについて類似している。
【０１２１】
ブロック９１０と異なるブロック１０１０では、論理開始アドレス（LogicalStartAddress）がブロック９１０同様に選択される。更にブロック１０１０は、メモリの一つのブロックのBlockSizeを、論理開始アドレス（LogicalStartAddress）に加えることによって、論理終了アドレス（LogicalEndAddress）を計算する。
【０１２２】
ブロック１０１４では、最初の書込ブロック設定命令（ＣＭＤ  ３２）がＳＤメモリカードに発行され、与えられたバンクｊで消去されたブロックの論理開始アドレスが設定される。
【０１２３】
ブロック１０１６では、最後の書込ブロック設定命令（ＣＭＤ  ３３）がＳＤメモリカードに発行され、与えられたバンクｊで消去されたブロックの論理終了アドレスが設定される。
【０１２４】
ブロック１０１８では、消去命令（ＣＭＤ  ３８）がＳＤメモリカードに発行され、論理開始アドレス及び論理終了アドレスによって選択された全ての領域（すなわちブロック）が消去される。ブロック１０１４，１０１６，１０１８は、各バンクに存在する代替ブロックの合計数にわたってループ内で繰り返される。ブロック１０１０は、このメモリコア内のバンクからバンクへと処理が進むと、バンクの合計数にわたってループ内で繰り返される。
【０１２５】
ソフトウェアで実施される場合には、本発明の実施例の要素は、本質的に、必要なタスクを実行するためのコードセグメントである。このプログラム又はコードセグメントは、プロセッサ読取可能媒体に格納することができる。あるいは、送信媒体又は通信リンクを介して搬送波内に具体化されたコンピュータデータ信号によって送信することができる。この「プロセッサ読取可能媒体」は、例えば磁気、光、電子、及び電磁による媒体のような情報を格納又は転送することが可能な任意の媒体を含みうる。このプロセッサ読取可能媒体の例は、電子回路、半導体メモリーデバイス、読取専用メモリ（ＲＯＭ）、フラッシュメモリ（ＥＥＰＲＯＭ）、消去可能ＲＯＭ（ＥＲＯＭ）、電気的にプログラム可能なＲＯＭ（ＥＰＲＯＭ）、フロッピー（登録商標）ディスク、コンパクトディスクリードオンリーメモリ（ＣＤＲＯＭ）、光ディスク、ハードディスク、ファイバ光媒体、無線周波数（ＲＦ）リンク等を含む。コンピュータデータ信号は、例えば、電子ネットワークチャンネル、光ファイバ、空気、電磁波、ＲＦリンク等の送信媒体を介して伝播可能な任意の信号である。コードセグメントは、例えばインターネットやイントラネットなどのコンピュータネットワークを経由してダウンロードされる。
【０１２６】
ある典型的な実施例が説明され、更に添付図面を用いて示される一方、これら実施例は単なる説明用のものであり、一般的な発明について制限的であることはないことと、本発明は図示された記載された特定の構成及び配置に限定されるものではないこととが理解されるべきである。例えば、コンピュータシステムを含むシステムにおける本発明の一つの実施例が示され説明されたが、本発明は、例えばデジタルスチルカメラ、デジタルビデオカメラ、デジタルオーディオプレーヤ、携帯電話、電子ブック、及び／又は電子辞書等のような他の種類の電子デバイスにも具体化されうる。
【０１２７】
しかしながら、種々の部分変形や変更が、特許請求の範囲に記載された本発明の広範な精神及び範囲から逸脱することなくなされうることが明らかになろう。従って、明細書及び図面は、限定的な認識ではなく、実例として考慮されるべきである。
【図面の簡単な説明】
【０１２８】
【図１】図１は、メモリカードからデータを安全に消去するシステムの典型的なブロック図である。
【図２】図２は、メモリカードのより詳細なブロック図である。
【図３】図３は、フラッシュメモリコアのメモリ階層を説明する典型的なブロック図である。
【図４】図４は、新たなデータページをページブロックに書き込む典型的な動作を説明する図である。
【図５】図５は、メモリのバンク内のメモリの隠された代替ブロックと、ユーザアクセス可能なブロックとの間の論理的な違いを説明するためのフラッシュメモリコアとその階層レベルとの典型的な図である。
【図６】図６は、各バンク内のメモリの隠された代替ブロックをどのように消去又は上書きするかを決定するために行われた計算を説明するための６４メガバイトフラッシュメモリコアとその階層レベルの典型的な図である。
【図７】図７は、安全にメモリカードを消去するソフトウェアルーチンの第一の典型的な部位のフローチャートである。
【図８】図８は、安全にメモリカードを消去するソフトウェアルーチンの第二の典型的な部位のフローチャートである。
【図９】図９は、複数の書込動作を使ってメモリカードの各バンク内のメモリの隠された代替ブロックを安全に上書きするソフトウェアルーチンの第三の典型的な部位のフローチャートである。
【図１０】図１０は、複数の消去動作を使ってメモリカードの各バンク内のメモリの隠された代替ブロックを安全に消去するソフトウェアルーチンの第三の典型的な部位の別のフローチャートである。
【図１】
2005327296.tif 000015
【図２】
2005327296.tif 000016
【図３】
2005327296.tif 000017
【図４】
2005327296.tif 000018
【図５】
2005327296.tif 000019
【図６】
2005327296.tif 000020
【図７】
2005327296.tif 000021
【図８】
2005327296.tif 000022
【図９】
2005327296.tif 000023
【図１０】
2005327296.tif 000024