(57)【特許請求の範囲】
【請求項１】
消去カウンタ・フィールドを含む消去カウンタを処理するための方法であって、
−未使用の消去カウンタ・フィールドを決定するステップと、
−未使用の消去カウンタ・フィールドに選択コードおよびアドレス情報を書き込むステップと
を含み、
−選択コードと前記アドレス情報を結合して、メモリの少なくとも１つの物理アドレスを決定する、方法。
【請求項２】
メモリの物理アドレスが、メモリのセクタまたはページを対象とする、請求項１に記載の方法。
【請求項３】
メモリの少なくとも１つのセクタまたは少なくとも１つのページが消去操作を受ける、請求項２に記載の方法。
【請求項４】
消去操作が、消去カウンタの処理の前、または後に、トリガまたは実行される、請求項３に記載の方法。
【請求項５】
選択コードとアドレス情報を結合して、メモリのいくつかの物理アドレスを決定する、請求項１に記載の方法。
【請求項６】
選択コードが、アドレス情報内の１つまたはいくつかの物理アドレスを決定する、請求項１に記載の方法。
【請求項７】
−選択コードを、最小有効ビットにおいてアドレス情報と整合させるステップと、
−選択コードとアドレス情報を結合することにより、消去操作を受ける少なくとも１つの物理アドレスを決定するステップと
をさらに含み、
−選択コードの第１の値は、アドレス情報の対応するビットが変更されないままであることを示し、または
−選択コードの第２の値は、アドレス情報の対応するビットが「０」または「１」であることを示す、請求項１に記載の方法。
【請求項８】
選択コードの第１の値が「０」であり、第２の値が「１」である、請求項７に記載の方法。
【請求項９】
未使用の消去カウンタ・フィールドを決定するステップが、消去カウンタに設けられた消去カウンタ記憶領域内の未使用の消去カウンタ・フィールドについての探索操作を実行するステップを含む、請求項１に記載の方法。
【請求項１０】
未使用の消去カウンタ・フィールドに選択コードおよびアドレス情報を書き込むことによって、消去カウンタがインクリメントされる、請求項１に記載の方法。
【請求項１１】
消去カウンタが、メモリ、具体的には不揮発性メモリの一部分に対応しており、メモリの部分に加えられる消去操作が、消去カウンタのインクリメントをトリガする、請求項１に記載の方法。
【請求項１２】
消去カウンタが、不揮発性メモリの一部であり、消去カウンタのメモリが、アプリケーション・ソフトウェアからアクセス可能でないか、または読取り専用である、請求項１に記載の方法。
【請求項１３】
消去カウンタ・フィールドの各論理ビットがいくつかの物理ビットを含み、対応する論理ビットについて、前記いくつかの物理ビットに基づいて多数決がなされる、請求項１に記載の方法。
【請求項１４】
請求項１に記載の方法であって、
−消去カウンタを読み取り、それをレジスタに記憶するステップと、
−未使用の消去カウンタ・フィールドを探索するステップと、
−未使用の消去カウンタ・フィールドに選択コードおよびアドレス情報を書き込むステップと、
−レジスタを消去カウンタに書き戻すステップと
をさらに含む、方法。
【請求項１５】
−レジスタを消去カウンタに書き戻すステップが成功しなかった場合に、警告またはエラーを示すステップ
を含む、請求項１４に記載の方法。
【請求項１６】
−いくつかの消去カウンタ・フィールドを含む消去カウンタと、
−未使用の消去カウンタ・フィールドを決定するステップ、
−未使用の消去カウンタ・フィールドに選択コードおよびアドレス情報を書き込むステップによって消去カウンタを処理するように構成され、
−選択コードとアドレス情報を結合して、メモリの少なくとも１つの物理アドレスを決定する
−処理ユニットと
を備える装置。
【請求項１７】
さらにメモリ部分を備え、処理ユニットが、メモリ部分で実行される消去手順に基づいて消去カウンタを処理するように構成される、請求項１６に記載の装置。
【請求項１８】
処理ユニットが、
−消去カウンタを読み取り、それをレジスタに記憶し、
−未使用の消去カウンタ・フィールドを探索し、
−未使用の消去カウンタ・フィールドに選択コードおよびアドレス情報を書き込み、
−レジスタを消去カウンタに書き戻すように構成される、請求項１６に記載の装置。
【請求項１９】
装置が、シングル・チップまたはダイに実装される、請求項１６に記載の装置。
【請求項２０】
メモリ部分が、不揮発性メモリの一部である、請求項１６に記載の装置。
【請求項２１】
前記メモリ部分が、以下の
−浮遊ゲート・セル、
−ＰＣＲＡＭ、
−ＲＲＡＭ、
−ＭＲＡＭ、
−ＭＯＮＯＳデバイス、
−ナノ結晶セル、
−ＦｅＲＡＭ、
−ハード・ドライブ、
−不揮発性記憶装置
のうちの少なくとも１つを含む、請求項１６に記載の装置。
【請求項２２】
消去カウンタ・フィールドを含む消去カウンタを処理するための装置であって、
−未使用の消去カウンタ・フィールドを決定する手段と、
−前記未使用の消去カウンタ・フィールドに選択コードおよびアドレス情報を書き込む手段と、
−選択コードとアドレス情報を結合して、メモリの少なくとも１つの物理アドレスを決定する手段とを備える装置。
【請求項２３】
消去カウンタ・フィールドを含む消去カウンタを処理するためのプログラムであって、コンピュータを、
未使用の消去カウンタ・フィールドを決定する手段、
未使用の消去カウンタ・フィールドに選択コードおよびアドレス情報を書き込む手段、および
選択コードとアドレス情報を結合して、メモリの少なくとも１つの物理アドレスを決定する手段として機能させるプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
本発明の実施形態は、データの不正操作の監視を可能にする消去カウンタの処理に関する。
【発明の概要】
【課題を解決するための手段】
【０００２】
第１の実施形態は、消去カウンタ・フィールドを含む消去カウンタを処理するための方法に関し、この方法は、
−未使用の消去カウンタ・フィールドを決定するステップと、
−未使用のカウンタ・フィールドに選択コードおよびアドレス情報を書き込むステップと
を含み、
−選択コードとアドレス情報を結合して、メモリの少なくとも１つの物理アドレスを決定する。
【０００３】
第２の実施形態は、装置に関し、同装置は、
−いくつかの消去カウンタ・フィールドを含む消去カウンタと、
未使用のカウンタ・フィールドを決定するステップ、
この未使用のカウンタ・フィールドに選択コードおよびアドレス情報を書き込むステップによって消去カウンタを処理するように構成され、
選択コードとアドレス情報を結合して、メモリの少なくとも１つの物理アドレスを決定する
−処理ユニットと
を備える。
【０００４】
第３の実施形態は、消去カウンタ・フィールドを含む消去カウンタを処理するための装置に関し、この装置は、
−未使用の消去カウンタ・フィールドを決定する手段と、
−未使用のカウンタ・フィールドに選択コードおよびアドレス情報を書き込む手段と
を備え、
−選択コードとアドレス情報を結合して、メモリの少なくとも１つの物理アドレスを決定する。
【０００５】
第４の実施形態は、デジタル処理装置のメモリに直接ロード可能なコンピュータ・プログラム製品に関し、同プログラム製品は、本明細書に記載の方法の各ステップを実行するソフトウェア・コード部分を含む。
【０００６】
図面を参照しながら、各実施形態を示して説明する。図面は、基本原理を説明するためのものなので、基本原理を理解するのに必要な事項を説明する。図面は縮尺通りではない。図面において、同じ参照符号は同様の機能を表している。
【図面の簡単な説明】
【０００７】
【図１】複数の消去カウンタ・フィールドを含む消去カウンタ記憶領域の具体例を示す。
【図２】消去カウンタ・フィールドの具体的な構造を示すとともに、消去カウンタ・フィールドが物理的なメモリ構造（たとえばフラッシュ・メモリ）上でどのように表現されるかを示す。
【図３】３２個の物理セクタ（０〜３１の番号が振られた）を含む具体的なテーブルを示す。各物理セクタが物理セクタ・アドレスを有していて、論理アドレスによって複数のセクタを統合することができる（たとえば統合した（たとえば並列な）消去操作のために結合される）ようになっている。
【図４】メモリの複数の部分（たとえば、セクタまたはページ）を消去する場合であっても、１回の消去操作で実行することができるルーチンを示す具体的な流れ図である。
【発明を実施するための形態】
【０００８】
不揮発性メモリ（ＮＶＭ）は、様々なソフトウェア・アプリケーションによってプログラムすることができ、また消去することができる。メモリは、一群のビットを一括して消去し、またはプログラムするように構成してもよい。たとえば、メモリのセクタを消去してもよく、またはメモリのページをプログラムしてもよい。たとえば、ページは、複数のビットを含んでもよく、セクタは、複数のページを含んでもよい。
【０００９】
本明細書において提示された例により、単一セクタまたは一群のセクタ上で、消去サイクルが何回、実行されたか決定することが可能になる。メモリが改ざんされたかどうか、具体的には許可されていない変更をメモリが受けたかどうか判定するのに、この情報が有用になることがある。
【００１０】
本明細書で述べるセクタは、消去できるメモリの一部分の例であり、このセクタは、少なくとも１個のビット、具体的にはいくつかのビットまたはいくつかのページを含むことに留意されたい。ここで述べるメモリとは、具体的にはメモリ・デバイスでもよい。
【００１１】
たとえば、ＮＡＮＤ／ＮＯＲフラッシュ、ＲＲＡＭ、ＭＲＡＭ、ＦｅＲＡＭなど、永続的かつ再プログラム可能なメモリを有する任意のデバイスにおいて、消去カウンタの考え方を使用してもよい。他のセクションが消去された、かつ／または書き換えられたかどうか監視するために、消去カウンタとして取っておかれる一定のセクタを有するハード・ドライブにも、この考え方が適用できることがある。
【００１２】
使用事例は、再プログラム可能なファームウェアの場合に関してもよい。例示的な状況としては、携帯電話、洗濯機、（たとえば自動車分野での）エンジン制御モジュール、組立てラインでの製造ロボット、ＤＶＤプレーヤ、ゲーム機、ＦＰＧＡデバイスなどがある。
【００１３】
したがって本明細書に記載の例は、具体的には、データの不正操作を監視するための不揮発性消去カウンタを実現する。
【００１４】
このメモリ領域は、具体的には不揮発性である。メモリ領域は、アプリケーション・ソフトウェアに対しては読出し専用になるように構成してもよい（すなわち、装置上で走っているアプリケーションは、このメモリ領域を望むように修正することができない）。
【００１５】
したがって、消去カウンタを使用して、ソフトウェアの不正操作を検出し、実証することができる。たとえば、公式のソフトウェア・リリースの第９版は、８回の消去操作に関連している可能性があり、この消去操作は消去カウンタで示さなければならない。消去カウンタによって示された消去サイクルの数がそれより大きいと、許可されていないソフトウェアの不正操作が行われた形跡になる可能性がある。
【００１６】
したがって、セキュリティ用途に、または改ざんの証拠を提供するために、提示された解決策を使用してもよい。
【００１７】
たとえば、あるセクタが消去されようとしているとき、消去カウンタをインクリメントしてもよい。消去カウンタの修正は、アプリケーション・ソフトウェアによる不正操作の可能性をなしにして、行えることが好ましい。任意の消去操作に対して消去カウンタがインクリメントされるのを回避できないようにして、消去カウンタの修正は外部のプログラミング・インターフェースから封印できることが好ましい。
【００１８】
有利には、消去カウンタは、顧客が削除できないように実装してよく、特に、製品、具体的にはメモリ・デバイスが顧客に向けて出荷する前にだけ削除できるよう消去カウンタを構成してよい。
【００１９】
メモリ（デバイス）の内容の改ざんは、消去カウンタの値（このような値は、メモリ・デバイスの内部および／またはメモリ・デバイスの外部に格納できる）を格納し、その値を消去カウンタの実際の値と比較することによって検出することができる。消去カウンタの値は、メモリ・デバイスの出荷後、および／またはソフトウェアの許可された変更（たとえば公式アップデート）の後に格納できる。
【００２０】
消去カウンタは消去不可であってよい。たとえば、消去カウンタは、消去することができないメモリ領域、またはこのメモリ領域を簡単に消去できないように構成することができるメモリ領域に記憶してもよい。メモリの論理部分毎に、たとえば少なくとも１つの論理セクタ毎に、１つの消去カウンタが存在してもよい。消去カウンタを更新するために、消去カウンタを読み取り、インクリメントし、そのメモリ領域に書き込んでもよい。このような更新をセクタ毎に実行してもよい。
【００２１】
書込み操作は、読取り操作よりも著しく時間がかかることがある。したがって、必要となる書込み操作が非常に長いので、複数のセクタを消去するには時間がかかる。他の操作を実行するための割込みを可能にする特別なコマンドを用いて、消去手順を中止しなければならないこともある。このような他の操作は、消去操作の中止時間が短いことを必要とするが、その書込み操作が非常に長いことから、これを満足させることは難しい。
【００２２】
一例によれば、選択コードを使用して、メモリの少なくとも１つの部分、たとえばセクタまたはページを選択してもよい。選択コードによって選択された、この少なくとも１つの部分を消去してもよい。このメモリの少なくとも１つの部分は、具体的にはメモリのいくつかの部分を含んでもよい。メモリのいくつかの部分のうち、少なくともあるものについては、消去を並列に実行してもよい。
【００２３】
検索ループを介して後続の書込み操作で更新される消去カウンタを実現してもよい。
【００２４】
消去カウンタは、消去カウンタ記憶領域に記憶してもよく、この消去カウンタ記憶領域はいくつかの消去カウンタ・フィールドを含む。消去カウンタ・フィールドのそれぞれは、
−アドレス情報と、
−選択コードと
を含む。
【００２５】
選択コードは、消去カウンタ・フィールドに書き込んでもよい。
【００２６】
図１には、いくつかの消去カウンタ・フィールド１０２〜１０５を含む消去カウンタ記憶領域１０１の例示的な図が示してある。この消去カウンタ記憶領域１０１は、ランダム・アクセス・メモリ（たとえば、フラッシュＲＡＭまたはＮＶＭ）の一部でもよい。第１のカウンタ・フィールド１０２を割り当てることによって、消去カウンタ記憶領域１０１が使用され、それに続く消去サイクルで、次のカウンタ・フィールド１０３などが使用される。利点として、単一のカウンタ・フィールド１０２〜１０５は、たとえばセクタなど、いくつかのメモリ部分に加えられる消去操作と関連づけることができる。
【００２７】
図２には、消去カウンタ・フィールド１０２〜１０５のうちの１つの具体的な構造、および、たとえばフラッシュ・メモリなどのメモリにこの消去カウンタ・フィールド１０２〜１０５をどのように記憶してよいのかが示してある。
【００２８】
消去カウンタ・フィールド２０３は、選択コード２０１およびアドレス情報２０２を含む。図２に示す例によれば、消去カウンタ・フィールド２０３は以下の値を有する。
−４〜０の範囲のビットを含む選択コード２０１の値は「０００１１」である。
−７〜０の範囲のビットを含むアドレス情報２０２の値は「０００１０１００」である。
【００２９】
ビットのライン２０４は、物理的なフラッシュ・メモリに消去カウンタ・フィールドをどのように記憶するかの一例を示す。この例では、それぞれの単一ビットが、３個の物理ビットによって符号化されて、冗長性をもたらす（すなわち、消去カウンタ・フィールド２０３のビット「０」が「０００」として符号化され、消去カウンタ・フィールド２０３のビット「１」が「１１１」として符号化される）。各ビットのうちの１ビットが（たとえば、物理的な欠陥によって）正しい値を示さない場合、３ビット全てに基づく多数決を実行することで、依然として正しいビット「０」または「１」になる。さらなる誤り訂正符号が利用可能でない場合には、これが有用になることがあり、かつ／またはこのさらなる誤り訂正符号が、任意選択および無効になる。消去カウンタ・フィールド２０３の単一ビットを符号化するのに、３ビット以外の複数のビットを使用してもよいことに留意されたい。
【００３０】
図３には、それぞれが物理セクタ・アドレス３０１を有する、（０〜３１の番号が振られた）３２個の物理セクタを含む具体的なテーブルが示してある。さらに、たとえば結合された（たとえば並列な）消去操作のために、いくつかのセクタを統合することを可能にする論理セクタ３０２が設けられる。
【００３１】
（やはり前述の通り）選択コードおよびアドレス情報を用いて、このように統合することができる。この例では、セクタ・アドレスが、アドレス情報によって提供される８ビットから構成され、複数のセクタ・アドレスが、選択コードの５ビットを用いて識別される。
【００３２】
選択コードは、最小有効ビット（ＬＳＢ）においてアドレス情報と整合させてもよく、また選択コードを使用して、消去されるセクタを決定してもよい。たとえば、アドレス情報の位置に対応する選択コードのビットが「０」である場合、アドレス情報のビットは変更されないままであり、アドレス情報の位置に対応する選択コードのビットが「１」である場合、アドレス情報のビットは「０」か「１」のいずれでもよい。したがって、選択コードを使用して、単一の物理アドレス、またはアドレス情報に基づく多数の物理アドレスを選択することができる。
【００３３】
例１：論理セクタ５の消去
アドレス情報および選択コードが以下のように決定される。
アドレス情報：０００００１０１
選択コード：        ０００００
【００３４】
ビット単位のＯＲ演算の結果、消去される以下のセクタ・アドレスが得られる。
消去されるセクタ：０００００１０１
【００３５】
例２：論理セクタ１６の消去
アドレス情報および選択コードが以下のように決定される。
アドレス情報：０００１１０００
選択コード：        ０００１１
【００３６】
ビット単位のＯＲ演算の結果、消去される以下のセクタ・アドレスが得られる。
消去されるセクタ：０００１１０００
０００１１００１
０００１１０１０
０００１１０１１
【００３７】
したがって、このアドレス情報および選択コードは、物理セクタ２４〜２７の消去操作に対応づけることができる。
【００３８】
例３：論理セクタ１４および１５の消去
アドレス情報および選択コードが以下のように決定される。
アドレス情報：０００１０１００
選択コード：        ０００１１
【００３９】
ビット単位のＯＲ演算の結果、消去される以下のセクタ・アドレスが得られる。
消去されるセクタ：０００１０１００
０００１０１０１
０００１０１１０
０００１０１１１
【００４０】
したがって、このアドレス情報および選択コードは、物理セクタ２０〜２３の消去操作に対応づけることができる。
【００４１】
例３もまた、図２での消去カウンタ・フィールド２０３の例示的な割当てであり、セクタ・アドレス３０１がアドレス情報２０２に対応する。
【００４２】
メモリの複数の部分（たとえば、メモリのセクタまたはページ）が消去される場合でも、消去カウンタ記憶領域への書込み操作が必要になるのは一回だけであることが、提示した解決策の利点である。この解決策は非常に柔軟性があり、物理的なメモリ構造を論理的にアドレス指定するための多数の組合せが可能になる。
【００４３】
図４には、メモリの複数の部分（たとえば、セクタまたはページ）が消去される場合でも、１度の消去操作毎に１度実行すればよいルーチンを示す、例示的な流れ図が示してある。
【００４４】
ステップ４０１で、カウンタｘが初期化される（たとえば、０に設定される）。ステップ４０２で、消去カウンタ記憶領域内のｘ番目の消去カウンタ・フィールド（「消去カウンタ・フィールド番号ｘ」または「消去カウンタ・フィールド＃ｘ」とも呼ばれる）が読み取られる。ステップ４０３で、この消去カウンタ・フィールド番号ｘが既に使用されているかどうか検査され、「０」以外の値を示す場合は、使用されていると判断できる。この場合、ステップ４０４へと続いて、カウンタｘをインクリメントする。ステップ４０５で、消去カウンタ記憶領域の最後に達したかどうか検査される。達している場合、この手順はステップ４０５で終了する。場合によっては、消去カウンタ記憶領域のオーバフローを示す誤りまたは情報を出してもよい。消去カウンタ記憶領域の最後に達していない場合、ステップ４０２に分岐し、消去カウンタ・フィールド番号ｘが読み取られる。
【００４５】
消去カウンタ・フィールド番号ｘが既に使用されていないことがステップ４０３で分かると、ステップ４０７へと続いて、ここで、利用可能な消去カウンタ・フィールドが消去カウンタ記憶領域内で見つかったことを示す。後続のステップ４０８で、見つかった消去カウンタ・フィールドに選択コードおよびアドレス情報が書き込まれる。次に、この手順はステップ４０６で終了する。
【００４６】
場合によっては、選択コードおよびアドレス情報に基づく実際の消去操作は、続いて実行することができ、または予めステップ４０８に移って実行することができる。
【００４７】
ステップ４０１〜４０５は、探索ルーチン４０９とみなせる。この探索ルーチン４０９は、たとえば２分探索アルゴリズムを用いて速めることができる。
【００４８】
図４に示した解決策には、消去カウンタ記憶領域の更新が、（消去カウンタ・フィールドを対象とする読取り操作を含む）高速探索ルーチン４０９と、消去カウンタ記憶領域への単一の書込み操作４０８とに分割されるという利点がある。これにより、消去カウンタ記憶領域において高速更新ルーチンが可能になる。
【００４９】
また、提示された各例では高度の柔軟性が実現可能になるが、なぜならば、１つの選択コードを用いて、メモリの単一または複数の部分（たとえば、セクタもしくはページ）をアドレス指定できるからである。したがって、この選択コードを使用して、これらの部分のいくつかを消去することができる。消去操作がトリガされた後、具体的には消去操作が実行された後に、選択コードおよびアドレス情報が消去カウンタ記憶領域に記憶されることが好ましい。
【００５０】
本明細書で提案された例は、具体的には、以下の解決策のうちの少なくとも１つに基づいてもよい。具体的には、以下の特徴の組合せを利用して、所望の結果を達成することもできる。この方法の特徴は、装置、機器、またはシステムの任意の特徴と組み合わせてもよく、またその逆でもよい。
【００５１】
消去カウンタ・フィールドを含む消去カウンタを処理するための方法であって、
−未使用の消去カウンタ・フィールドを決定するステップと、
−この未使用のカウンタ・フィールドに選択コードおよびアドレス情報を書き込むステップと
を含み、
−この選択コードとアドレス情報を結合して、メモリの少なくとも１つの物理アドレスを決定する方法を提案する。
【００５２】
この未使用の消去カウンタ・フィールドは、探索操作によって決定してもよい。
【００５３】
有利には、単一の選択コードを使用して、メモリの１つまたはいくつかの物理アドレスを決定することができる。したがって、消去操作は、メモリのいくつかの部分、たとえばセクタを対象にしてもよく、これを消去カウンタの単一の更新によって反映することができる。
【００５４】
消去カウンタの例示的な実装形態は、サーモメータ・コード（すなわち単進符号）を使用する。たとえば、各消去カウンタ・フィールドを使用して、消去カウンタの単一ピースすなわちインクリメントを示し、この点でサーモメータ・コードの単一ビットに対応してもよい。
【００５５】
サーモメータ・コードとも呼ばれる単進符号は、自然数ｋを表すエントロピー符号化であり、ｋ個の１の後にゼロが続き（自然数が非負整数と理解される場合）、またはｋ−１個の１の後にゼロが続く（自然数が厳密に正整数と理解される場合）。たとえば、数字５は１１１１１０または１１１１０と表される。表現法によっては、ｋ個またはｋ−１個のゼロと、それに続く１を使用する。これらの１およびゼロは、一般性を失うことなく交換可能である。単進符号は、接頭符号と自己同期符号の両方である（たとえば、ｈｔｔｐ：／／ｅｎ．ｗｉｋｉｐｅｄｉａ．ｏｒｇ／ｗｉｋｉ／Ｔｈｅｒｍｏｍｅｔｅｒ＿ｃｏｄｅ参照）。
【００５６】
消去カウンタは、メモリの消去カウンタ領域に記憶してもよいことに留意されたい。
【００５７】
カウンタ・フィールドは、このカウンタ・フィールドを次から次へと設定して、消去カウンタのカウントが増加することを表すように、昇順で配置してもよいことにも留意されたい。したがって、カウンタ・フィールドを使用して、消去カウンタの空きを首尾よく埋めてもよく、単一のカウンタ・フィールドの設定は、このような消去カウンタのインクリメントでもよい。消去カウンタは、設定できるだけで、リセットできないことが好ましい。これにより、メモリの一部分、たとえばメモリのセクタもしくはページに加えられた、消去サイクルまたは消去操作の数を決定することが可能になる。
【００５８】
消去カウンタをインクリメントすることは、１つずつの増加、または２つ以上の値ずつの増加を含むことにさらに留意されたい。
【００５９】
有利には、この解決策により、メモリの前記部分上、すなわちメモリの単一セクタまたは一群のセクタ上で、消去サイクルがいくつ実行されたか決定することが可能になる。この情報を使用して、メモリが改ざんされたかどうか、具体的には許可されていない変更をメモリが受けたかどうか判定することができる。
【００６０】
ハード・ドライブまたはハード・ドライブの一部分（たとえばセクタ）での消去サイクルは、本明細書に記載の消去カウンタを用いてカウントできることにさらに留意されたい。
【００６１】
一実施形態では、メモリの物理アドレスは、メモリのセクタまたはページを対象とする。
【００６２】
一実施形態では、メモリの少なくとも１つのセクタまたは少なくとも１つのページが消去操作を受ける。
【００６３】
一実施形態では、この消去操作は、消去カウンタの前記処理の前、もしくは消去カウンタの前記処理の後に、トリガまたは実行される。
【００６４】
一実施形態では、選択コードとアドレス情報を結合して、メモリのいくつかの物理アドレスを決定する。
【００６５】
一実施形態では、選択コードは、アドレス情報内の１つまたはいくつかの物理アドレスを決定する。
【００６６】
選択コードは、具体的には、アドレス情報と結合して、（このアドレス情報が提供する範囲内で）、単一の選択コードを用いてメモリのいくつかの物理アドレスを決定することができるマスクを実現してもよい。
【００６７】
一実施形態では、この方法はさらに、
−選択コードを、最小有効ビットにおいてアドレス情報と整合させるステップと、
−選択コードとアドレス情報を結合することにより、消去操作を受ける少なくとも１つの物理アドレスを決定するステップと
を含み、
−選択コードの第１の値は、アドレス情報の対応するビットが変更されないままであることを示し、または
−選択コードの第２の値は、アドレス情報の対応するビットが「０」または「１」でもよいことを示す。
【００６８】
一実施形態では、第１の値は「０」であり、第２の値は「１」である。
【００６９】
一実施形態では、未使用の消去カウンタ・フィールドを決定するステップは、消去カウンタに設けられた消去カウンタ記憶領域内の未使用の消去カウンタ・フィールドについての探索操作を実行するステップを含む。
【００７０】
一実施形態では、未使用の消去カウンタ・フィールドに選択コードおよびアドレス情報を書き込むことによって、消去カウンタがインクリメントされる。
【００７１】
消去カウンタは、所定の数の消去カウンタ・フィールドを有してもよく、これは最初は全て空でもよい。消去カウンタは、第１の空いている消去カウンタ・フィールドにデータを書き込むことによって設定することができる。消去カウンタは、次の空いている消去カウンタ・フィールドにデータを書き込むことによってインクリメントされる。消去カウンタ・フィールドを引き続き使用して、消去カウンタのカウントを増大させてもよい。その代わりとして、所定の方式に従って消去カウンタ・フィールドを使用して、消去カウンタの空きを埋めてもよい。有利には、応用ソフトウェアによって消去カウンタをリセットすることはできない。
【００７２】
一実施形態では、消去カウンタは、メモリ、具体的には不揮発性メモリの一部分に対応しており、このメモリの前記部分に加えられる消去操作が、消去カウンタのインクリメントをトリガする。
【００７３】
一実施形態では、消去カウンタは、不揮発性メモリの一部であり、この消去カウンタのメモリは、アプリケーション・ソフトウェアにアクセス可能ではなく、それへの読取り専用である。
【００７４】
一実施形態では、消去カウンタは、不揮発性の消去カウンタである。
【００７５】
一実施形態では、消去カウンタ・フィールドの各論理ビットがいくつかの物理ビットを含み、対応する論理ビットについて、このいくつかの物理ビットに基づいて多数決がなされる。
【００７６】
この多数決は、単一の論理ビットを表すのに使用されるいくつかの物理ビットの冗長度をどのように利用するかの一例である。しかし、それなりに他の操作を加えてもよい。冗長性を有する符号、または誤り検出符号および／もしくは誤り訂正符号を使用して、論理ビットが正しいかどうか判定することも可能である。
【００７７】
具体的には、冗長性を与えるために、選択コードおよび／またはアドレス情報の少なくともいくつかの（または全ての）ビットを、少なくとも２つの物理ビットにそれぞれマッピングしてもよい。
【００７８】
一実施形態では、この方法はさらに、
−消去カウンタを読み取り、それをレジスタに記憶するステップと、
−未使用の消去カウンタ・フィールドを探索するステップと、
−この未使用の消去カウンタ・フィールドに選択コードおよびアドレス情報を書き込むステップと、
−レジスタを消去カウンタに書き戻すステップと
を含む。
【００７９】
一実施形態では、この方法は、
−レジスタを消去カウンタに書き戻すステップが成功しなかった場合に、警告またはエラーを示すステップを含む。
【００８０】
一実施形態では、この方法は、
−未使用の消去カウンタ・フィールドが見つからなかった場合に、オーバフロー指示を出すステップを含む。
【００８１】
一実施形態では、このオーバフロー指示を使用して消去カウンタを拡張する。
【００８２】
また、
−いくつかの消去カウンタ・フィールドを含む消去カウンタと、
−未使用のカウンタ・フィールドを決定するステップ、
−この未使用のカウンタ・フィールドに選択コードおよびアドレス情報を書き込むステップによって消去カウンタを処理するように構成され、
−この選択コードとアドレス情報を結合して、メモリの少なくとも１つの物理アドレスを決定する
−処理ユニットと
を備える装置が提供される。
【００８３】
前記処理ユニットは、同じチップもしくはダイ上のメモリとともに、またはメモリの外部に設けてもよい、任意の処理装置でよい。この処理ユニットは、ハードウェア、ソフトウェア、および／またはファームウェアの一部分を含んでもよい。処理ユニットは、いくつかの構成要素間で分散するように配置してもよく、または単一のハードウェアでもよい。
【００８４】
この方法に関して説明する特徴は、本明細書において述べる装置に適用可能でもよいことに留意されたい。これは、具体的には処理ユニットに適用され、このユニットは、この方法を考慮して述べる各ステップを実行してもよい。
【００８５】
一実施形態では、装置はさらにメモリ部分を備え、この処理ユニットは、メモリ部分で実行される消去手順に基づいて消去カウンタを処理するように構成される。
【００８６】
メモリ部分は、（不揮発性）メモリのセクタまたはページでもよい。メモリ部分は、単一の消去ステップで消去することができる。消去カウンタは、メモリ部分をも含むメモリの物理部分でもよい。その代わりとして、消去カウンタは、別々のメモリ・デバイスに配置してもよい。消去カウンタは、単進符号、たとえばサーモメータ・コードに従って符号化されるカウンタでもよい。
【００８７】
一実施形態では、この処理ユニットは、
−消去カウンタを読み取り、それをレジスタに記憶し、
−未使用の消去カウンタ・フィールドを探索し、
−この未使用の消去カウンタ・フィールドに選択コードおよびアドレス情報を書き込み、
−レジスタを消去カウンタに書き戻すように構成される。
【００８８】
一実施形態では、この装置はシングル・チップまたはダイに実装される。
【００８９】
この装置は、具体的には（単一の）チップ、またはいくつかのチップを含む装置でもよい。チップは、集積回路、ダイ、および／または半導体デバイスを含んでもよい。
【００９０】
一実施形態では、メモリ部分は、不揮発性メモリの一部である。
【００９１】
一実施形態では、メモリ部分は、以下の
−浮遊ゲート・セル、
−ＰＣＲＡＭ、
−ＲＲＡＭ、
−ＭＲＡＭ、
−ＭＯＮＯＳデバイス、
−ナノ結晶セル、
−ＦｅＲＡＭ、
−ハード・ドライブ、
−不揮発性記憶装置
のうちの少なくとも１つを含む。
【００９２】
一実施形態では、消去カウンタは、アプリケーション・ソフトウェアにアクセスできないように、またはアプリケーション・ソフトウェアに対して読取り専用であるように構成される。
【００９３】
消去カウンタ・フィールドを含む消去カウンタを処理するための装置であって、
−未使用の消去カウンタ・フィールドを決定する手段と、
−この未使用のカウンタ・フィールドに選択コードおよびアドレス情報を書き込む手段と
を備え、
−この選択コードとアドレス情報を結合して、メモリの少なくとも１つの物理アドレスを決定する装置が提案される。
【００９４】
本明細書に記載の方法の各ステップを実行するためのソフトウェア・コード部分を含め、デジタル処理装置のメモリに直接ロード可能なコンピュータ・プログラム製品が提案される。
【００９５】
１つまたは複数の例では、本明細書に記載の各機能は、少なくとも部分的には、具体的なハードウェア構成部品またはプロセッサなどのハードウェアで実装してもよい。より一般には、これらの技法は、ハードウェア、プロセッサ、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装してもよい。ソフトウェアで実装する場合、各機能は、１つもしくは複数の命令もしくはコードとして、コンピュータ読取り可能な媒体に記憶し、またはこれを介して伝送し、ハードウェア・ベースの処理ユニットによって実行してもよい。コンピュータ読取り可能な媒体には、コンピュータ読取り可能な記憶媒体が含まれてもよく、これは、データ記憶媒体などの有形の媒体、または、たとえば通信プロトコルに従って、ある場所から別の場所にコンピュータ・プログラムの伝送を容易にする任意の媒体を含む通信媒体に対応する。このようにして、コンピュータ読取り可能な媒体は一般に、（１）非持続的な有形のコンピュータ読取り可能な記憶媒体、または（２）信号波もしくは搬送波などの通信媒体に対応してもよい。データ記憶媒体は、本開示で説明する各技法を実装するために、１つもしくは複数のコンピュータ、または、１つもしくは複数のプロセッサがアクセスして、命令、コード、および／またはデータ構造を取得することができる利用可能な任意の媒体でもよい。コンピュータ・プログラム製品には、コンピュータ読取り可能な媒体が含まれ得る。
【００９６】
一例として、限定するものではないが、このようなコンピュータ読取り可能な記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、または他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶装置、フレッシュ・メモリ、または、命令もしくはデータ構造の形式での所望のプログラム・コードを記憶するのに使用でき、コンピュータからアクセスできる他の任意の媒体を含むことができる。また、正しくは、任意の接続が、コンピュータ読取り可能な媒体、すなわちコンピュータ読取り可能な伝送媒体と呼ばれる。たとえば、ウェブサイト、サーバ、または他の遠隔ソースから、同軸ケーブル、光ファイバ・ケーブル、より対線、デジタル加入者線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などの無線技術を使用して命令が伝送される場合、これら同軸ケーブル、光ファイバ・ケーブル、より対線、ＤＳＬ、または赤外線、無線、およびマイクロ波などの無線技術が、媒体の定義に含まれる。しかし、コンピュータ読取り可能な記憶媒体およびデータ記憶媒体には、接続部、搬送波、信号、または他の伝送媒体を含まないが、その代わりに、非過渡的な有形の記憶媒体を対象とすることを理解されたい。本明細書では、ディスク（ｄｉｓｋおよびｄｉｓｃ）には、コンパクト・ディスク（ＣＤ）、レーザ・ディスク、光ディスク、デジタル多用途ディスク（ＤＶＤ）、フロッピー・ディスク、およびブルーレイ・ディスクが含まれ、ここで、ディスク（ｄｉｓｋ）は通常、データを磁気的に複製し、ディスク（ｄｉｓｃ）は、レーザを用いてデータを光学的に複製する。上記の組合せも、コンピュータ読取り可能な媒体の範囲に含まれるべきである。
【００９７】
命令は、１つまたは複数の中央処理装置（ＣＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ロジック・アレイ（ＦＰＧＡ）、または他の等価な集積論理回路もしくは個別論理回路など、１つまたは複数のプロセッサで実行してもよい。したがって、本明細書では、用語「プロセッサ」は、前述の構造のうち任意のもの、または本明細書に記載の技法を実装するのに適した他の任意の構造を指してもよい。さらに、ある意味では、本明細書に記載の機能は、符号化および復号化するように構成された、専用のハードウェアおよび／もしくはソフトウェア・モジュールで提供してもよく、または組み合わされたコーデックに組み込んでもよい。また、各技法は、１つまたは複数の回路または論理素子に、完全に実装することもできる。
【００９８】
本開示の各技法は、無線ハンドセット、集積回路（ＩＣ）、もしくは１組のＩＣ（たとえばチップセット）を含め、多種多様なデバイスまたは装置に実装してもよい。開示された技法を実行するように構成された装置の機能的な態様を強調するために、様々な構成部品、モジュール、またはユニットを本開示で説明しているが、様々なハードウェア・ユニットによる実現を必ずしも必要としていない。むしろ、前述の通り、様々なユニットは、単一のハードウェア内に組み合わせてもよく、または、適切なソフトウェアおよび／もしくはファームウェアとともに、前述の１つもしくは複数のプロセッサを含む一群の相互作用するハードウェア・ユニットによって実現してもよい。
【００９９】
本発明の様々な例示的な実施形態を開示してきたが、本発明の精神および範囲から逸脱することなく、本発明の利点のいくつかを実現することになる様々な変更および修正を加えることができることが当業者には明白になろう。それらの機能を実行する他の構成要素を適切に代用してもよいことが、当業者には自明になろう。具体的な図を参照しながら説明した特徴は、明瞭に述べられてこなかった場合でも、他の図の特徴と組み合わせてもよいと言わなければならない。さらに、本発明の方法は、適切なプロセッサ命令を使用して全てのソフトウェア実装形態で実現してもよく、またはハードウェア論理回路とソフトウェア論理回路の組合せを利用して、そうした結果を実現するハイブリッドの実装形態で実現してもよい。本発明の考え方に対するこのような修正形態は、添付特許請求の範囲によって包含されるものである。
【符号の説明】
【０１００】
１０１  消去カウンタ記憶領域
１０２  消去カウンタ・フィールド
１０３  消去カウンタ・フィールド
１０４  消去カウンタ・フィールド
１０５  消去カウンタ・フィールド
２０１  選択コード
２０２  アドレス情報
２０３  消去カウンタ・フィールド
２０４  ライン
３０１  物理セクタ・アドレス
３０２  論理セクタ
４０１  ステップ
４０２  ステップ
４０３  ステップ
４０４  ステップ
４０５  ステップ
４０６  ステップ
４０７  ステップ
４０８  ステップ
４０９  探索ルーチン
【図１】
0005937244.tif 000002
【図２】
0005937244.tif 000003
【図３】
0005937244.tif 000004
【図４】
0005937244.tif 000005