JP4329937B2 - パーシスタントメモリに書き込む際のエラーを検出する方法および装置 - Google Patents

パーシスタントメモリに書き込む際のエラーを検出する方法および装置 Download PDF

Info

Publication number
JP4329937B2
JP4329937B2 JP2004537573A JP2004537573A JP4329937B2 JP 4329937 B2 JP4329937 B2 JP 4329937B2 JP 2004537573 A JP2004537573 A JP 2004537573A JP 2004537573 A JP2004537573 A JP 2004537573A JP 4329937 B2 JP4329937 B2 JP 4329937B2
Authority
JP
Japan
Prior art keywords
address
pointer
memory
memory location
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004537573A
Other languages
English (en)
Other versions
JP2006500653A (ja
Inventor
アンドリュー ケイ,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Publication of JP2006500653A publication Critical patent/JP2006500653A/ja
Application granted granted Critical
Publication of JP4329937B2 publication Critical patent/JP4329937B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Description

本発明は、パーシスタントメモリに書き込む際のエラーを検出する方法および装置に関する。本発明は、さらに、このようなエラーの結果を修正する方法および装置に関する。このような技術は、組込みシステムで用いられ得、適切な応用例は、Java(登録商標)カード等のスマートカード、スマートキー、およびスマートディスク等のデジタルアクティブストレージまたはセキュリティデバイス;携帯電話用のSIMおよびUSIM;データロギングデバイス;ユーザプレファレンス、格納セッティングまたはロギングの使用を記録する小型デバイス;車載コンピュータシステム;セットトップボックス;ならびにインターネットルータを含む。このような技術は、フラッシュメモリ等の「ライトワンスイレースインバルク(write−once−erase−in−bulk)」タイプ、および「書き込み専用(write−only)」タイプのパーシスタントまたは「不揮発性」メモリのために有用である。
本明細書中で用いられる「パーシスタントデータ項目」または「PDI」という用語は、時間が経つにつれて、特に、アプリケーションプログラムによって更新される場合に変化する値と関連付けられたデータ項目と定義される。この値は、さらに、更新と更新との間、特に、アプリケーションが動作していない場合、およびパワーが意図的に取り除かれた場合、アプリケーションが、例えば、停電、または電源から除去されたために偶発的にスイッチオフされた場合に、その状態を保持するために必要とされる。
コンピュータプログラムは、変数の値を読み出しおよび更新することによって動作する。RAMにおける変数の場合、これは、必要に応じた頻度で値が再書き込みされ得、高速で読み出しおよび書き込みされるのであまり難しくない。プログラムが実行されていない場合、その状態は、より永続的なメモリに格納されなければならない。
スマートカード等の小型のコンピュータプラットフォームでは、RAMが少ししかなく、パーシスタントメモリは、EEPROMまたはフラッシュメモリの形態をとることが多い。このメモリは、一旦ビットが変更されると、全セグメントが消去されるまで再び変更され得ないという特性を有する。EEPROMでは、セグメントサイズがシングルバイト(8バイト)と同じくらい小さくなり得、メモリは、実質的に、超低速RAMとして扱われ得る。フラッシュメモリでは、シリコン面積効率のためにセグメントが一般に大きく(例えば、64KB)、消去動作が低速である。さらに、メモリは、いくらかの消去サイクル(例えば、高品質のフラッシュの場合、100,000回)の後で最終的に消耗してしまう。フラッシュメモリの有利な点は、より高速であり、所与のチップ面積にはるかに高密度に実装され、したがって、より多くの格納空間が存在するということであるが、効率的に用いることがEEPROMよりも難しい。
動作し、そして、動作間のインターバルをチェックするたびに、(おそらく、カードリーダ端末から取得された)日付および時間のレコードを保持するスマートカードアプリケーションを考慮されたい。これは、一日の利用限度をキャッシュカードに適用する等のセキュリティ機能のために用いられ得る。このアプリケーションは動作するたびに、前の日付を読み出し、これをチェックし、そして、新しい日付を格納しなければならない。従って、この日付はPDIである。日付が変更されるたびに同じロケーションに格納される場合、メモリの物理的限界があるために、全64Kブロックが最初に消去される必要があり、これは、長時間かかり、フラッシュメモリを早く消耗させる。
そうではなく、新しい日付が書き込まれるたびに、日付がメモリの新しい領域に格納されなければならない。このプログラムは、フラッシュメモリを他のプログラムと共有する必要があり、従って、この1つのアプリケーションのためだけにフラッシュメモリの大きいブロックを先割り当てするのは効率的でないと想定される。換言すると、システムには複数のPDIが存在し得、これらは、動作しているアプリケーションに依存して異なったレートで更新され得る。
PDIを格納する公知の構成は、添付の図面の図1に示される各PDIごとの値のリンクチェーンを構築する。このチェーンの第1のエレメントは、既知のアドレスにある。上述の特定のアプリケーションの場合、このチェーンの各エレメントは、日付レコードの値を格納し、このチェーンの次の項目を示すポインタための空間を有する。最終エレメントは、消去されたメモリパターン(各ビットのこの消去された状態が1の場合のこのモデルでの16進表示のFFFF、または各ビットのこの消去された状態が0の場合の補数モデルでの16進表示の0000)に等しいポインタ値を有する。現在の日付を読み取るために、読み取り動作はチェーンの開始点で始められ、チェーンが値FFFFに達するまでポインタを追跡する。新しい日付を追加するために、新しいチェーンエレメントが新しい値および空ポインタで生成される。続いて、前の最後のエレメントのポインタ部分にわたって新しいアドレスが格納される。
ブロックが一杯になると、各PDIごとの最も最近の値がフラッシュブロックにコピーされる必要があり、その後で、前のブロックが消去される。これは「ガーベジコレクション」と呼ばれる。ガーベジコレクションされた場合、チェーンの中の最後の値は、新しいブロックにコピーされ、新しいチェーンの開始として用いられる。
パワーが書き込みサイクル中にフラッシュメモリから取り除かれる場合、この動作が不完全になり、パワーが再び印加されるとつじつまの合わない状態が利用される危険がある。フラッシュメモリを有する非接触スマートカードの場合、カードそれ自体は電源を有さないが、これにカードリーダが提供される場合、そのカードリーダからのパワーの受け取りに依存する。フラッシュメモリへの書き込み動作の間に、リーダからカードが除去された場合、電源は、書き込みサイクルの間に中断され得、これにより、実際に格納されたデータは、格納することが意図されたデータとは異なる。
例えば、典型的なフラッシュメモリでは、各ビットの消去された状態は1であり、書き込みサイクルの間、各ビットは0に変更され得るが、0から1への逆の変更は、全ページまたはセグメントを同時に消去することによってのみ達成され得る。さらに、書き込みサイクルが中断された場合、1から0に変更されるべき各ビットは、0に変更されるか、または、1であり続ける。通常、16ビットを備えるワード全体は、フラッシュメモリと並行に書き込まれる。書き込み動作がパワー損失によって中断された場合、リクエストされた1から0への変更のいくつかまたはすべてが行われ得るが、どの変更が行われ、(行われていない変更がある場合)どの変更が行われていないかを識別することが不可能である。パワーが再び印加された場合、スマートカードは、書き込みサイクルの間のパワー損失が原因で、格納されたデータが破損したかどうかを示すことができない。
添付の図面の図1に示され、かつ、以下において記載されるリンクチェーンの場合、または、改善された構成を記載する英国特許出願第0205573.9号(この出願の内容は、参考のため、本明細書中に援用される)に開示される構成の場合、各データ項目の現在の値は、リンクチェーンまたはリストにおける最後のデータ項目である。最後の値を示すポインタがフラッシュメモリに書き込まれたときに停電した場合、パワーが回復したときに最後の値を取り出すことが可能であり得る。従って、そのような最後の値に依存する任意のアプリケーションは、正確に機能しないか、または、全く機能し得ない。
本発明の第1の局面によると、少なくとも1つのデータ項目の値が、一時的に連続して割り当てられたメモリロケーションに格納されたパーシスタントメモリセグメントの中のエラーを検出する方法であって、各新しいメモリロケーションが、第1および第2の終端部を有するメモリセグメントのブロックの第1の終端部に付加され、かつ、各新しいメモリロケーションを示すポインタが少なくとも1つのデータ項目の前の値を含むブロックにおける以前のメモリロケーションに付加される方法であって、方法は、(a)最後に付加されたポインタが示すアドレスを決定するステップと、(b)決定されたアドレスを最後の新しいメモリロケーション(LUM)を備えるメモリセグメントのブロックのアドレスレンジと比較するステップと、(c)決定されたアドレスがアドレスレンジの外側にある場合、アクションを実行するステップとを包含し、ステップ(c)は、最後に付加されたポインタのアドレスを、最後の新しいメモリロケーションのアドレスに変更するステップを包含する。
ステップ(a)〜(c)は、メモリセグメントにパワーが印加されるたびに実行されてもよい。
ステップ(a)は、ポインタのすべてが示すアドレスを決定するステップと、最高位または最下位の前記アドレスを選択するステップとを包含してもよい。
ステップ(c)は、最後に付加されたポインタのアドレスを、最後の新しいメモリロケーションのアドレスに変更するステップを包含してもよい。
各新しいメモリロケーションは、ブロックの第1の終端部に連続して付加されてもよい。
各ポインタは、ポインタが示すメモリロケーションの最高位または最下位アドレスを示してもよい。
メモリセグメントは、フラッシュメモリの少なくとも一部分を備えてもよい。
各メモリロケーションは、少なくとも1つのデータ項目の単一値のための空間を有してもよい。
メモリセグメントの各ビットは、1から0にのみ個別にスイッチング可能であってもよく、前記アクションは、前記決定されたアドレスが前記アドレスレンジの最高位の前記アドレスよりも大きい場合に実行されてもよい。あるいは、メモリセグメントの各ビットは、0から1にのみ個別にスイッチング可能であってもよく、アクションは、決定されたアドレスがアドレスレンジの最下位アドレスよりも小さい場合に実行されてもよい。
メモリセグメントは、それぞれのフラグが各値の格納動作の終了時にセットされ、それぞれのさらなるフラグが各ポインタの付加動作の終了時にセットされる、少なくとも1つの書き込みカウンタを備えてもよく、さらに、ステップ(a)〜(c)は、奇数のフラグおよびさらなるフラグがセットされた場合にのみ実行されてもよい。少なくとも1つの書き込みカウンタは、データ項目を備えてもよい。
メモリセグメントは、一連の1つ以上のデータ項目値を格納する場合、それぞれのフラグが、一連の第1のポインタ付加動作の前にセットされ、それぞれのさらなるフラグが、一連の最終ポインタ付加動作の後にセットされる、少なくとも1つの書き込みカウンタを備えてもよく、さらに、ステップ(a)〜(c)は、奇数のフラグおよびさらなるフラグがセットされる場合にのみ実行されてもよい。
本発明の第2の局面によると、コンピュータを制御して、本発明の第1の局面による方法を実行するプログラムが提供される。
本発明の第3の局面によると、本発明の第2の局面によるプログラムによってプログラムされるコンピュータが提供される。
本発明の第4の局面によると、本発明の第2の局面によるプログラムを記録した、コンピュータ読み取り可能な格納媒体が提供される。
本発明の第5の局面によると、パーシスタントメモリセグメントと、少なくとも1つのデータ項目の値を、一時的に連続して割り当てられたメモリロケーションに格納する部分であって、各新しいメモリロケーションは、第1および第2の終端部を有するメモリセグメントのブロックの第1の終端部に付加される、部分と、各新しいメモリロケーションを示すポインタを、少なくとも1つのデータ項目の前の値を含むブロックにおける以前のメモリロケーションに付加する部分とを備える装置であって、最後に付加されたポインタが示すアドレスを決定する部分と、決定されたアドレスを最後の新しいメモリロケーション(LUM)を含むメモリセグメントのブロックのアドレスレンジと比較する部分と、決定されたアドレスがアドレスレンジの外側である場合にアクションを実行する部分とを備え、アクションは、最後に付加されたポインタのアドレスを最後の新しいメモリロケーションのアドレスに変更することを含む。
決定する部分と、比較する部分と、実行する部分とは、装置にパワーが印加されるたびに駆動されるように構成されてもよい。
決定する部分は、ポインタのすべてが示すアドレスを決定し、かつ、最高位または最下位アドレスを選択するように構成されてもよい。
実行する部分は、最後に付加されたポインタのアドレスを最後の新しいメモリロケーションのアドレスに変更するように構成されてもよい。
各新しいメモリロケーションは、ブロックの第1の終端部に連続的に付加されてもよい。
各ポインタは、ポインタが示すメモリロケーションの最高位または最下位アドレスを示してもよい。
メモリセグメントは、フラッシュメモリの少なくとも一部分を備えてもよい。
各メモリロケーションは、少なくとも1つのデータ項目の単一値のための空間を有してもよい。
メモリセグメントの各ビットは、1から0にのみ個別にスイッチング可能であり、かつ、実行する部分は、決定されたアドレスがアドレスレンジの最高位アドレスよりも大きい場合、アクションを実行するように構成されてもよい。あるいは、メモリセグメントの各ビットは、0から1にのみ個別にスイッチング可能であり、実行する部分は、決定されたアドレスがアドレスレンジの最下位アドレスよりも小さい場合、アクションを実行するように構成されてもよい。
装置は、メモリセグメントの中の少なくとも1つの書き込みカウンタにおいて、それぞれのフラグを各値格納動作の開始時点で、そして、それぞれのさらなるフラグを各ポインタ付加動作の終了時点でセットする部分と、セットされたフラグとさらなるフラグの数が奇数であるかどうかを評価する部分と、比較する部分と、評価する部分に応答して駆動可能になるように構成される実行する部分とを備えてもよい。少なくとも1つの書き込みカウンタは、データ項目を備えてもよい。
装置は、メモリセグメントにおける少なくとも1つの書き込みカウンタにおいて、かつ、一連の1つ以上のデータ項目値を格納する場合、それぞれのフラグを、第1のポインタ付加動作の前に連続的に、そして、それぞれのさらなるフラグを、最終ポインタ付加動作の後に連続的にセットする部分と、セットされたフラグおよびさらなるフラグの数が奇数であるかどうかを評価する部分と、決定する部分と、比較する部分と、評価する部分に応答して、駆動するように構成される実行部分とを備えてもよい。
装置は、スマートカードを備えてもよい。
従って、PDIのリンクチェーンおよび同様の構造のポインタのエラーが確実に検出されることを可能にする構成を提供することが可能である。この技術は、さらに、このようなエラーが修正されることを可能にする。従って、例えば、フラッシュメモリに格納されたPDIに依存する任意のアプリケーション等が、メモリから読み出された不正確なデータを不注意にも用いることが防止される。
図2は、カードリーダと連係してデータを転送する「非接触」タイプのスマートカードを示す。カード1の内部には、コンピュータ2と、いくつかのページまたはセグメントを備えることが示されるフラッシュメモリ3とが組み込まれている。コンピュータ2は、作動ランダムアクセスメモリ(RAM)5を備えた中央演算処理ユニット(CPU)4と、カードリーダと非接触通信するための入力/出力インターフェース(I/O)6とを備える。カード1は内部電源を有しないが、その代わりに、カードリーダ(図示せず)内に提供された外部電源7に依存する。従って、コンピュータ2およびメモリ3は、カード1がカードリーダに正確に挿入された場合にのみパワー供給される。
図2に示されるフラッシュメモリセグメントは、パーシスタントデータ項目(PDI)用の不揮発性メモリとして機能するように構成される。従って、パワーがない状態で格納される必要がないデータが揮発性である作動RAMを用いるのに対して、パワーがない状態で値が保存されなければならないPDIは、フラッシュメモリセグメントに格納される。
図2に示されるフラッシュメモリセグメントは、例えば、ページが使用中であるか、または消去されたかどうか、および、将来使用する準備が整っているかどうかを示すページ識別子およびステータス8、セグメントに格納されたPDIの第1の値を含むロケーションまたは「ノード」を示す各PDIのポインタを含むPDIテーブル9、クリティカル書き込みカウンタ10、および、PDIの値がすでに書き込まれたノードを格納するように構成される。セグメントは、11で示される空き空間を有し、そして、割り当てられている現在、最後に用いられたメモリワード(LUM)が12に示される。
最初にカード1が構成された場合、コンピュータ2は、ページ識別子およびステータス8を入力し、PDIテーブル9およびクリティカル書き込みカウンタ10のために、メモリ内に空間を確保する。PDIの第1の値がメモリ3に書き込まれた場合、項目の値のため、および次の値を示すポインタのために十分な空間が、ノード15におけるメモリセグメントの開始点に割り当てられる。第1のPDIが割り当てられたポインタは、テーブル9に挿入され、矢印16で示されるように、ノード15の最後のワードを示す。
フラッシュメモリ3は、セグメントが消去された場合に、ビットのすべてが1にセットされるタイプのものである。従って、カウンタ10のビットのすべては、最初、1にセットされる。さらに、PDIの次の値を示すポインタのために確保されたノード15におけるワードのビットは、すべて1にセットされ、次の値が到着した場合に上書きされるのを待つ。
図2に示される例において、メモリ3に格納されるべき次の値は、第1のPDIの第2の値である。書き込みサイクルの開始点で、第2のPDI値を格納するために、新しいノード17が割り当てられる。例えば、PDIのもっと後の値のノードを示すポインタを次に含むノードの最後のワードは、その最下位ビットが0にセットされる。すべてのポインタが偶数のアドレスを示すので、このワードにおけるポインタの次の書き込みと重複しない。第1のPDIの第2のデータ値を含むために、ポインタのワードと前のノード15との間に十分なメモリ空間が提供される。このノードは、例えば、メモリ空間の使用を最大化するために、ノード15に隣接するように割り当てられ得るか、または、ギャップが残り得、例えば、第2のデータ値が奇数サイズである場合に、そのポインタは偶数のアドレスにあることを保証する。しかしながら、メモリセグメントへの書き込みは、常に、前に割り当てられたノードを含む空間の終端部に付加され、かつ、既存のノード間に挿入されることがないように制御される。
書き込みサイクルの次のステップでは、第1のPDIの第2のデータ値は、データを格納するために利用可能なノード17の部分に格納される。カウンタ10の第1のビットは、0にセットされ、データ書き込み動作が首尾よく完了したことを示す。その後、次のポインタに割り当てられたノード17の最後のワードのアドレスを示すポインタが、ワード15のポインタフィールドに書き込まれる。カウンタ10の第2のビットは、その後、0にセットされ、書き込みサイクルの完了を示す。
フラッシュメモリ3のメモリセグメントに格納されるべき次の値は、第2のPDIの第1の値である。書き込みサイクルの開始点に、次に利用可能なノード18が割り当てられ、その後に、その値がノード18のデータ値フィールドに書き込まれる。次にポインタを含むノード18の最後のワードを示す(すなわち、最上位アドレスの)ポインタは、PDIテーブル9の中の第2のロケーションに格納される。
メモリ3に格納されるべき第4の値は、第2のPDIの第2の値である。後述されるように、次に利用可能なノード19は、その最後の最下位ビット、または最上位アドレスワードを0にセットすることによって割り当てられ、データ値は、ノード19の値フィールドに書き込まれ、カウンタ10の第3のビットは0にセットされ、ノード19の最後のワードを示すポインタは、ノード18のポインタフィールド(最後または最上位アドレスワード)に書き込まれ、カウンタ10の第4のビットはゼロにセットされる。
このプロセスは、メモリ3のセグメントに書き込むために、PDIのいずれかの新しい値が到着するごとに繰り返される。特に、各新しい値は、格納するために予め受け取られた値を含むノードを追跡し、(かつ、このノードに隣接し得る)ノードに書き込まれる。カウンタ10の次のビットは、値を新しいノードに書き込んだ後にゼロにセットされ、新しいワードを示すポインタは、同じPDIの前の値を含むノードのポインタフィールドに書き込まれている場合、カウンタの別のビットはゼロにセットされる。
英国特許出願第0205573.9号に開示される技術が用いられている場合、ポインタは、同じPDIの直前の値を含むノードには書き込まれ得ないが、その代わりに、同じPDIの先行する値を含むノードの「ファーフィールド(far field)」に書き込まれ得る。この特許出願は、さらに、各ノードの値フィールドがPDIのいくつかの値を格納することができる技術を記載する。従って、新しいノードは、値フィールドのすべてが埋められている場合にのみ、そのPDIのために割り当てられる。このような技術が用いられる場合、ノードに書き込まれる第1の値の後の値のために、新規のポインタが前のノードに書き込まれる必要はない。さらに、クリティカル書き込みカウンタ10が更新される必要がない。従って、以下に記載される手順は、ノードの値フィールドが埋められている場合にのみ用いられ、そして、そのPDIのために新しいノードを割り当てることが必要である。このような構成は、カウンタ10を格納するために用いられ得、かつ、メモリ空間のより効率的な使用を提供し得る。
実際には、かつ、上述のように、新しいPDI値のために新しいノードが割り当てられた場合、十分なバイトが割り当てられ、その値および次のポインタを格納し、これは、ここで、新しいLUMのビットでセットすることによって行われる。メモリセグメント内の各ポインタが2バイトを用い、ワードが常に偶数アドレスに格納される場合、新しいノードのポインタフィールドの中の最下位ビットがゼロにセットされ得る。これにより、任意の時点に割り当てられてたメモリセグメント内の最上位アドレスの表示が提供される。なぜなら、LMUのアドレスの上のアドレスのすべてのビットは、1の状態にリセットされた状態だからである。
コンピュータ2が任意のPDIの現在の値を見つけ出すことを必要とする場合、コンピュータは、PDIのために一時的に、連続的に割り当てられたノードに格納されたポインタによって規定された経路を追跡する。従って、コンピュータ2は、第1の値を含むノードを示す、PDIテーブル9の中のポインタを識別し、かつ、そのノードの中のポインタが有効アドレスを示すかどうかをチェックする。有効アドレスを示す場合、コンピュータは、ポインタが示しているノードをチェックする。格納されたポインタが割り当てられたノードを表すが、ポインタを含まないことを検出した場合、そのノードに格納された値は、PDIの現在の値であることがわかり、そして、コンピュータによって用いられる。
ポインタがメモリセグメントの適切なワードフィールドに書き込まれている間に電源がカード1から取り除かれた場合、格納されるポインタの値は不正確である。メモリ3への書き込みは、ビットの1から0へのスイッチングを含むので、不完全な書き込みサイクルにより、ポインタの格納されたビットパターンのバイナリ値が、必要とされるよりも多くの1を有するので、目的の値よりも大きくなる。これにより、ポインタ書き込みエラーが検出および修正されることが可能になる。
図4は、カード1にパワーが印加されるたびに実行される方法を示す。この方法またはルーティンは、20で開始され、21において、コンピュータ2が現在のLUM12のメモリセグメントを検索する。例えば、コンピュータ2は、メモリセグメントの中の最上位アドレスから開始し、次に、ビットのすべてが1というのではないものが見つけ出されるまで、各ワードをチェックして最下位アドレスに向かって動作する。コンピュータ2は、次に、LUMのアドレスをRAM5の中に格納する。
ステップ22において、コンピュータ4は、クリティカル書き込みカウンタ10が偶数のセットビットを含むかどうかをチェックする。新しいPDI値がフラッシュメモリセグメントに首尾よく書き込まれた場合はいつも、カウンタ10の2つのビットが0にセットされる。逆に、パワーがカード1から取り除かれる前に、書き込み動作が開始されたが、完了していない場合はいつも、1ビットのみが0にセットされ、これにより、カウンタ10は奇数のセットビットを含む。従って、カウンタ10の中のゼロの数をカウントすることによって、可能な書き込みエラーが生じるかどうかを検出することが可能である。
カウンタ10が偶数のゼロを含む場合、さらなる介入は必要でなく、図4に示されるルーティンは23で終了する。カウントが奇数である場合、ステップ24において、コンピュータ2は、ステップ21においてRAM5に予め格納されたLUMのアドレスよりも大きい値を有するメモリセグメントに格納されたワードの中のポインタを検索する。値FFFFまたはFFFEを有する任意のポインタは無視される。なぜなら、このポインタは、現在のLUMのものよりも大きいアドレスを示しているが、これは、割り当てられたノードをまだ示していないポインタを表すからである。そうでない場合、不正確なポインタは、現在のLUMのアドレスよりも大きいアドレスを有さなくてはならない。さらに、このような任意のポインタの正確な値は、LUMのアドレスである。
ステップ25において、コンピュータ2は、不正確なポインタが見つけ出されたかどうかを決定する。見つけ出されなかった場合、ステップ26は、カウンタ10の次のビットをゼロにセットし、ルーティンは23で終了する。誤ったポインタ値が見つけ出された場合、ステップ27は、ポインタ値を修正するように、LUMのアドレスへのポインタ値を修正して、そのポインタ値を修正する。その後、23で終了する前にステップ26が実行され、これにより、カウンタ10は、もはやエラーがないことを示す偶数の0を含む。
図3は、エラーが生じ、検出され、続いて修正される特定の実施例を示す。PDIの第1の値(値データ0)が、最後のワードまたはポインタフィールドがアドレス0014にあるPDIノード30に格納される。ノード30の最後のワードを示すポインタは、PDIテーブル9に格納される。PDIの次の値(値データ1)が到着した場合、コンピュータ2は、テーブル9の中のPDIのポインタを見つけ出し、ポインタフィールド31をチェックして、ノード30がPIDの直前の値を含むことを発見する。次の値は、ノード32の値フィールドに書き込まれ、アドレス1234は、ノード30のポインタフィールド31に入力される(すべてのポインタは、16進表示される)。カウンタ10は、上述のように更新される。
同じPDIの次の値(値データ2)が格納されるべき場合、コンピュータ2は、ポインタの軌線を追跡し、そして、ノード32が直前の値を含むことを決定する。メモリセグメントの中のノードのために利用可能な次の空間の位置を突き止め、ノードにアドレス2200のポインタフィールドが割り当てられる。ノードの割り当ては、アドレス2200の最下位ビットを0に変更することによって実行され、従って、FFFEをポインタフィールドに残す。値データ2は、ノード33の値フィールドに格納され、カウンタ10の次の非ゼロビットが0にセットされる。ノード33を示すポインタは、ノード32のポインタフィールドに書き込まれ始めるが、例えば、パワーの除去が完了し、それにより、不完全に書き込まれたポインタ2274がワード32のポインタフィールドに存在する前に、カードをカードリーダから引き外すことによってパワーが取り除かれる。特に、バイナリ値0010001000000000がノード32のポインタフィールドに書き込まれるべきであったが、その代わりに、バイナリ地0010001001110100がかきこまれた。なぜなら、第3、第5、第6および第7のビットの1から0への切換が、パワーが除去される前に実行されなかったからである。
パワーが次にカード1に与えられた場合、図4に閉めされるルーティンが実行される。これにより、ノード33のアドレスフィールドがLUMに格納されていること、および、ノード32のポインタフィールドに格納されたポインタのアドレスがLUMのアドレス2200よりも高い値を有することを決定する。従って、ノード32のポインタフィールドへの正確なポインタの書き込みは、このフィールドにおける適切なビットをスイッチングして正確なアドレス2200を表すことによって完了する。
従って、不正確に書き込まれたポインタを検出および修正することが可能である。フラッシュメモリ3のセグメント内で必要とされるただ1つのさらなる空間は、クリティカル書き込みカウンタ10のための空間である。カウンタ10は、セグメントの中の比較的少ない空間を必要とするか、または、異なったセグメントに格納され得る。従って、ポインタエラーが検出され、かつ、メモリ内の縮小された格納空間の犠牲を最小にして修正され得る。
上述のある実施形態では、メモリセグメントは、フラグが各値の格納動作の終了時にセットされ、そして、さらなるフラグが各ポインタ追加動作の終了時にセットされるクリティカル書き込みカウンタを備える。これは、クリティカルライトの間に、ポインタアドレスを更新し、クリティカルカウンタが奇数値を示すことを保証する。しかしながら、更新のセットがあり、1つ以上のPDIにされる場合、フラグは、更新のセットにおける第1のポインタ追加動作の前にクリティカル書き込みカウンタにセットされ得、さらなるフラグは、更新のセットにおける最終ポインタ追加動作の後にのみセットされ得ることも可能である。パワーがフラグのセッティングとさらなるフラグのセッティングとの間で停電した場合、次の電源投入時に検索が行われる。このアプローチの有利な点は、クリティカル書き込みカウンタが、セットの間に2回だけ書き込まれ、従って、少なくともパワーが停電しない場合に、システムをより高速にすることである。
これに代わる実施形態では、クリティカル書き込みカウンタ10は省略され得る。この場合、コンピュータ2はパワーが再供給されるとき、任意のポインタエラーが生じたかもしれず、従って、格納されたポインタ値のすべてをLUMのアドレスと比較しなければならないかどうかを教示し得ない。ポインタ値がLUMのアドレスよりも高い場合、エラーが検出され、かつ、上述のように修正され得る。従って、この改変された技術では、メモリ容量の低減を犠牲にしないが、コンピュータ2が任意のエラーを検索するために、より多くの時間が必要とされる。
PDIを格納するために1つ以上のセグメントを有するフラッシュメモリ3の場合、同じ技術が、セグメントごとに用いられ得る。特に、各セグメントは、固有のLUMを有し、PDIのサブセットを格納するために用いられ得る。
PDIの空間を分割することによってクリティカル書き込みカウンタ10をいくつかの部分に分け、各カウンタがそれぞれの区画に関連することも可能である。例えば、メモリのいくつかのページがある場合、それぞれのカウンタは、アクティブページごとに提供され得る。さらに、各ページが分割され得、区画ごとに別個のクリティカル書き込みカウンタを有する。各区画におけるエラーを検索および修正することは、より迅速であるが、いくつかのクリティカル書き込みカウンタによってより多くのメモリ空間が必要とされ、各カウンタは、パワーが供給され、エラーがそれぞれの区画に存在するかどうかを決定する場合、各カウンタがチェックされなければならない。
クリティカル書き込みカウンタは、さらに、これがセグメントに割り当てられることによってPDIとして扱われ得る。従って、更新チェーンにおける最後の項目は、カウンタのアクティブブロックである。これにより、より小さい量のメモリがカウンタに最初に割り当てられることが可能になり、従って、セグメントが小数の大きいPDIで埋められる場合、無駄なスペースが少なくなる。
クリティカル書き込みカウンタは、これが関連するセグメントに格納され得るか、または、異なったセグメントに格納され得る。上述の場合、新しいクリティカル書き込みカウンタセグメントが別のクリティカル更新の最中に割り当てられないことを保証することが重要である。そうでない場合、他の更新が用いるLUMが変更される。これを回避するために、新しいクリティカル書き込みカウンタセグメントに、必要とされるよりも早く、そして、クリティカル更新が実行されていないときに少数の更新が割り当てられ得る。
この技術は、さらに、ビットのすべてが0であり、メモリへの書き込みがビットの値の0から1への変更を含むようにリセットされるタイプのフラッシュメモリにも適用され得る。例えば、すべてのポインタは、反転した、または相補的形態で格納され得、そして、読み出される場合に、再び反転され得る。あるいは、このようなメモリを用いる場合、格納されるべき第1の値が最上位アドレスのノードに割り当てられ得、次の値は次のより低いアドレスに割り当てられかつ格納される。各ノードにおける最下位のアドレスのワードは、ポインタフィールドとして用いられる。この場合、ポインタ値が不正確に書き込まれた場合、このポインタは、LUMのアドレスよりも低いアドレスを示す。従って、間違ったポインタが検出され、その値が修正され得る。
これらの技術は、さらに、例えば、ビットが1から0に書き込まれるタイプのフラッシュメモリを用いることによって、メモリをより高位からより低位のアドレスに割り当てることによって、そして、ポインタを、反転した、または相補的形態で格納することによって組み合わされてもよい。
本発明は、パーシスタントメモリに書き込む際にエラーを検出するための方法および装置に関する。本発明は、さらに、このようなエラーの結果を修正するための方法および装置に関する。このような技術は、組込みシステムにおいて用いられ得、適切な応用例は、Java(登録商標)カード等のスマートカード;スマートキーおよびスマートディスク等のデジタルアクティブストレージまたはセキュリティデバイス;携帯電話用のSIMおよびUSIM;データログデバイス;ユーザプリファレンスを記録し、セッティングを格納するか、または使用をログ記録する小型デバイス;車載コンピュータシステム;セットトップボックス;ならびにインターネットルータを含む。このような技術は、フラッシュメモリ等の「ライトワンスイレースインバルク」タイ、および「書き込み専用」タイプのパーシスタントまたは「不揮発性」メモリのために有用である。
図1は、PDI値の公知のリンクチェーンを示す図である。 図2は、本発明の実施形態を構成する装置を示す図である。 図3は、本発明の実施形態を構成する方法による図2の装置の動作を示す図である。 図4は、本方法を示すフローチャートである。

Claims (29)

  1. 少なくとも1つのデータ項目の値が、一時的に連続して割り当てられたメモリロケーションに格納されたパーシスタントメモリセグメントの中のエラーを検出する方法であって、各新しいメモリロケーションが、第1および第2の終端部を有する前記メモリセグメントのブロックの第1の終端部に付加され、かつ、各新しいメモリロケーションを示すポインタが前記少なくとも1つのデータ項目の前の値を含む前記ブロックにおける以前のメモリロケーションに付加される方法であって、前記方法は、
    (a)最後に付加された前記ポインタが示すアドレスを決定するステップと、
    (b)前記決定されたアドレスを最後の前記新しいメモリロケーション(LUM)を備える前記メモリセグメントのブロックのアドレスレンジと比較するステップと、
    (c)前記決定されたアドレスが前記アドレスレンジの外側にある場合、アクションを実行するステップと
    を包含し、
    前記ステップ(c)は、最後に付加された前記ポインタのアドレスを、最後の前記新しいメモリロケーションの前記アドレスに変更するステップを包含することを特徴とする、方法。
  2. 前記ステップ(a)〜(c)は、前記メモリセグメントにパワーが印加されるたびに実行されることを特徴とする、請求項1に記載の方法。
  3. 前記ステップ(a)は、前記ポインタのすべてが示す前記アドレスを決定するステップと、最高位または最下位の前記アドレスを選択するステップとを包含することを特徴とする、請求項1に記載の方法。
  4. 各新しいメモリロケーションは、前記ブロックの前記第1の終端部に連続して付加されることを特徴とする、請求項1に記載の方法。
  5. 各ポインタは、前記ポインタが示す前記メモリロケーションの最高位または最下位アドレスを示すことを特徴とする、請求項1に記載の方法。
  6. 前記メモリセグメントは、フラッシュメモリの少なくとも一部分を備えることを特徴とする、請求項1に記載の方法。
  7. 各メモリロケーションは、前記少なくとも1つのデータ項目の単一値のための空間を有することを特徴とする、請求項1に記載の方法。
  8. 前記メモリセグメントの各ビットは、1から0にのみ個別にスイッチング可能であり、前記アクションは、前記決定されたアドレスが前記アドレスレンジの最高位の前記アドレスよりも大きい場合に実行されることを特徴とする、請求項1に記載の方法。
  9. 前記メモリセグメントの各ビットは、0から1にのみ個別にスイッチング可能であり、前記アクションは、前記決定されたアドレスが前記アドレスレンジの最下位の前記アドレスよりも小さい場合に実行されることを特徴とする、請求項1に記載の方法。
  10. 前記メモリセグメントは、それぞれのフラグが各値の格納動作の終了時にセットされ、それぞれのさらなるフラグが各ポインタの付加動作の前記終了時にセットされる、少なくとも1つの書き込みカウンタを備えることを特徴とし、さらに、前記ステップ(a)〜(c)は、奇数のフラグおよびさらなるフラグがセットされた場合にのみ実行されることを特徴とする、請求項1に記載の方法。
  11. 前記少なくとも1つの書き込みカウンタは、データ項目を備えることを特徴とする、請求項10に記載の方法。
  12. 前記メモリセグメントは、一連の1つ以上のデータ項目値を格納する場合、それぞれのフラグが、前記一連の前記第1のポインタ付加動作の前にセットされ、それぞれのさらなるフラグが、前記一連の前記最終ポインタ付加動作の後にセットされる、少なくとも1つの書き込みカウンタを備えることを特徴とし、さらに、前記ステップ(a)〜(c)は、奇数のフラグおよびさらなるフラグがセットされる場合にのみ実行されることを特徴とする、請求項1に記載の方法。
  13. コンピュータを制御して、請求項1に記載の方法を実行するプログラム。
  14. 請求項13に記載のプログラムによってプログラムされるコンピュータ。
  15. 請求項13に記載のプログラムを記録した、コンピュータ読み取り可能な格納媒体。
  16. パーシスタントメモリセグメントと、少なくとも1つのデータ項目の値を、一時的に連続して割り当てられたメモリロケーションに格納する部分であって、各新しいメモリロケーションは、第1および第2の終端部を有する前記メモリセグメントのブロックの第1の終端部に付加される、部分と、各新しいメモリロケーションを示すポインタを、前記少なくとも1つのデータ項目の前の値を含む前記ブロックにおける以前のメモリロケーションに付加する部分とを備える装置であって、最後に付加された前記ポインタが示すアドレスを決定する部分と、前記決定されたアドレスを最後の前記新しいメモリロケーション(LUM)を含む前記メモリセグメントのブロックのアドレスレンジと比較する部分と、前記決定されたアドレスが前記アドレスレンジの外側である場合にアクションを実行する部分とを備え、
    前記アクションは、最後に付加された前記ポインタの前記アドレスを最後の前記新しいメモリロケーションの前記アドレスに変更することを含むことを特徴とする、装置。
  17. 前記決定する部分と、前記比較する部分と、前記実行する部分とは、前記装置にパワーが印加されるたびに駆動されるように構成されることを特徴とする、請求項16に記載の装置。
  18. 前記決定する部分は、前記ポインタのすべてが示す前記アドレスを決定し、かつ、最高位または最下位の前記アドレスを選択するように構成されることを特徴とする、請求項16に記載の装置。
  19. 各新しいメモリロケーションは、前記ブロックの前記第1の終端部に連続的に付加されることを特徴とする、請求項16に記載の装置。
  20. 各ポインタは、前記ポインタが示す前記メモリロケーションの最高位または最下位アドレスを示すことを特徴とする、請求項16に記載の装置。
  21. 前記メモリセグメントは、フラッシュメモリの少なくとも一部分を備えることを特徴とする、請求項16に記載の装置。
  22. 各メモリロケーションは、前記少なくとも1つのデータ項目の単一値のための空間を有することを特徴とする、請求項16に記載の装置。
  23. 前記メモリセグメントの各ビットは、1から0にのみ個別にスイッチング可能であり、かつ、前記実行する部分は、前記決定されたアドレスが前記アドレスレンジの最高位の前記アドレスよりも大きい場合、前記アクションを実行するように構成されることを特徴とする、請求項16に記載の装置。
  24. 前記メモリセグメントの各ビットは、0から1にのみ個別にスイッチング可能であり、前記実行する部分は、前記決定されたアドレスが前記アドレスレンジの最下位の前記アドレスよりも小さい場合、前記アクションを実行するように構成されることを特徴とする、請求項16に記載の装置。
  25. 前記メモリセグメントの中の少なくとも1つの書き込みカウンタにおいて、それぞれのフラグを各値格納動作の開始時点で、そして、それぞれのさらなるフラグを各ポインタ付加動作の終了時点でセットする部分と、セットされたフラグとさらなるフラグの数が奇数であるかどうかを評価する部分と、前記比較する部分と、前記評価する部分に応答して駆動可能になるように構成される前記実行する部分とを備えることを特徴とする、請求項16に記載の装置。
  26. 前記少なくとも1つの書き込みカウンタは、データ項目を備えることを特徴とする、請求項25に記載の装置。
  27. 前記メモリセグメントにおける少なくとも1つの書き込みカウンタにおいて、かつ、一連の1つ以上のデータ項目値を格納する場合、それぞれのフラグを、前記第1のポインタ付加動作の前に連続的に、そして、それぞれのさらなるフラグを、前記最終ポインタ付加動作の後に連続的にセットする部分と、前記セットされたフラグおよびさらなるフラグの数が奇数であるかどうかを評価する部分と、前記決定する部分と、前記比較する部分と、前記評価する部分に応答して、駆動するように構成される前記実行部分とを備えることを特徴とする、請求項16に記載の装置。
  28. スマートカードを備えることを特徴とする、請求項16に記載の装置。
  29. フラッシュメモリセグメントと、少なくとも1つのデータ項目の値を、一時的に連続して割り当てられたメモリロケーションに格納する手段であって、各新しいメモリロケーションは、第1および第2の終端部を有する前記メモリセグメントのブロックの第1の終端部に付加される、手段と、各新しいメモリロケーションを示すポインタを前記少なくとも1つのデータ項目の前の値を含む前記ブロックにおける以前のメモリロケーションに付加する手段と、最後に付加された前記ポインタが示すアドレスを決定する手段と、前記決定されたアドレスを最後の前記新しいメモリロケーションを含む前記メモリセグメントのブロックのアドレスレンジと比較する手段と、前記決定されたアドレスが前記アドレスレンジの外側である場合、アクションを実行する手段とを備え、
    前記アクションは、最後に付加された前記ポインタの前記アドレスを最後の前記新しいメモリロケーションの前記アドレスに変更することを含む、装置。
JP2004537573A 2002-09-20 2003-09-16 パーシスタントメモリに書き込む際のエラーを検出する方法および装置 Expired - Fee Related JP4329937B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0221868A GB2393273A (en) 2002-09-20 2002-09-20 Method and apparatus for detecting an error in writing to persistent memory
PCT/JP2003/011789 WO2004027615A2 (en) 2002-09-20 2003-09-16 Method of and apparatus for detecting an error in writing to persistent memory

Publications (2)

Publication Number Publication Date
JP2006500653A JP2006500653A (ja) 2006-01-05
JP4329937B2 true JP4329937B2 (ja) 2009-09-09

Family

ID=9944459

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004537573A Expired - Fee Related JP4329937B2 (ja) 2002-09-20 2003-09-16 パーシスタントメモリに書き込む際のエラーを検出する方法および装置

Country Status (9)

Country Link
US (1) US7539905B2 (ja)
EP (1) EP1540660B1 (ja)
JP (1) JP4329937B2 (ja)
CN (1) CN1695206A (ja)
AT (1) ATE379837T1 (ja)
AU (1) AU2003263600A1 (ja)
DE (1) DE60317801T2 (ja)
GB (1) GB2393273A (ja)
WO (1) WO2004027615A2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004066571A1 (ja) * 2003-01-20 2004-08-05 Fujitsu Limited ネットワークスイッチ装置およびネットワークスイッチ方法
US7475209B2 (en) * 2004-05-13 2009-01-06 International Business Machines Corporation Moving hardware context structures in memory while maintaining system operation
US7743277B2 (en) * 2005-02-14 2010-06-22 Stec, Inc. System and method for detecting and reducing data corruption in a storage device
US8533562B2 (en) * 2007-09-12 2013-09-10 Sandisk Technologies Inc. Data protection after possible write abort or erase abort
EP2270758B1 (en) * 2009-06-30 2013-11-27 Kabushiki Kaisha Toshiba Portable electronic apparatus, processing apparatus for portable electronic apparatus, and data processing method in portable electronic apparatus
US8321481B2 (en) * 2010-05-13 2012-11-27 Assa Abloy Ab Method for incremental anti-tear garbage collection
US9116634B2 (en) * 2011-06-10 2015-08-25 International Business Machines Corporation Configure storage class memory command
CN103310848A (zh) * 2012-03-08 2013-09-18 鼎桥通信技术有限公司 一种使用存储器的方法和装置
US9208040B2 (en) * 2014-04-30 2015-12-08 Stmicroelectronics International N.V. Repair control logic for safe memories having redundant elements
WO2017048261A1 (en) 2015-09-17 2017-03-23 Hewlett Packard Enterprise Development Lp Memory store error check
CN108108413B (zh) * 2017-12-12 2022-04-26 宁波三星医疗电气股份有限公司 一种基于存储数据自动生成数据指针的方法及系统

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0398545A1 (en) 1989-05-19 1990-11-22 Delco Electronics Corporation Method and apparatus for storing data in a non-volatile memory
US5369757A (en) * 1991-06-18 1994-11-29 Digital Equipment Corporation Recovery logging in the presence of snapshot files by ordering of buffer pool flushing
US5469562A (en) * 1992-06-26 1995-11-21 Digital Equipment Corporation Durable atomic storage update manager
US5873097A (en) * 1993-05-12 1999-02-16 Apple Computer, Inc. Update mechanism for computer storage container manager
US5644709A (en) * 1994-04-21 1997-07-01 Wisconsin Alumni Research Foundation Method for detecting computer memory access errors
US5530806A (en) * 1994-12-15 1996-06-25 At&T Corp. Method and apparatus for storing and retrieving routing information in a network node
GB2317722B (en) 1996-09-30 2001-07-18 Nokia Mobile Phones Ltd Memory device
GB9801373D0 (en) * 1998-01-22 1998-03-18 Memory Corp Plc Memory system
US6247108B1 (en) * 1998-06-03 2001-06-12 Lucent Technologies Inc. Memory management during processing of binary decision diagrams in a computer system
US6412080B1 (en) * 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
DE19921232B4 (de) * 1999-05-07 2007-06-21 Giesecke & Devrient Gmbh Verfahren zum gesicherten Schreiben eines Zeigers für einen Ringspeicher, zugehöriger Ringspeicher, Verwendung des Ringspeichers und Chipkarte mit Ringspeicher
DE10059006B4 (de) * 1999-12-30 2004-04-15 International Business Machines Corp. Verfahren und System zur sicheren Verwaltung von Dateien in nichtflüchtigen Speichern
JP2002062956A (ja) * 2000-08-21 2002-02-28 Sankyo Seiki Mfg Co Ltd 停電処理方法及び停電処理装置
US6977941B2 (en) * 2000-11-08 2005-12-20 Hitachi, Ltd. Shared buffer type variable length packet switch
US6928456B2 (en) * 2001-03-06 2005-08-09 Intel Corporation Method of tracking objects for application modifications
JP2002278850A (ja) * 2001-03-14 2002-09-27 Nec Corp 半導体装置
US6779084B2 (en) * 2002-01-23 2004-08-17 Intel Corporation Enqueue operations for multi-buffer packets
US7131115B2 (en) * 2002-03-25 2006-10-31 Hewlett-Packard Development Company, L.P. Unwinding instrumented program code
US7337275B2 (en) * 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management

Also Published As

Publication number Publication date
ATE379837T1 (de) 2007-12-15
AU2003263600A8 (en) 2004-04-08
JP2006500653A (ja) 2006-01-05
WO2004027615A3 (en) 2004-07-01
EP1540660B1 (en) 2007-11-28
WO2004027615A2 (en) 2004-04-01
DE60317801D1 (de) 2008-01-10
US7539905B2 (en) 2009-05-26
EP1540660A2 (en) 2005-06-15
GB2393273A (en) 2004-03-24
CN1695206A (zh) 2005-11-09
GB0221868D0 (en) 2002-10-30
AU2003263600A1 (en) 2004-04-08
DE60317801T2 (de) 2008-10-30
US20060143541A1 (en) 2006-06-29

Similar Documents

Publication Publication Date Title
US6449625B1 (en) Use of a two-way stack approach to optimize flash memory management for embedded database systems
CN105975399B (zh) 用来管理一记忆装置的方法以及其相关的记忆装置
KR101613678B1 (ko) 전력 손실 이후의 비-휘발성 메모리에 대한 복원
US7272696B2 (en) Dynamic volume management
CN101231618B (zh) 非易失性存储器装置的控制方法
US6839823B1 (en) Increased reliability of data stored on flash memory in applications sensitive to power-loss
KR100644602B1 (ko) 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
US7240178B2 (en) Non-volatile memory and non-volatile memory data rewriting method
US6865658B2 (en) Nonvolatile data management system using data segments and link information
JP4268396B2 (ja) 1回プログラム可能な不揮発性メモリデバイスのファイル管理
US7139896B2 (en) Linear and non-linear object management
US20030229753A1 (en) Flash memory file system
JP4329937B2 (ja) パーシスタントメモリに書き込む際のエラーを検出する方法および装置
US7711891B1 (en) Method, system, and computer-readable medium for updating memory devices in a computer system
CN114840449B (zh) 基于MCU片内flash的数据存储方法、装置、设备及存储介质
CN112596668A (zh) 一种存储器的坏块处理方法及系统
CN100364013C (zh) 在闪存中存放校验码的方法及装置
US20070005929A1 (en) Method, system, and article of manufacture for sector mapping in a flash device
CN113253934A (zh) Flash坏块处理方法、装置、计算机设备和可读存储介质
JP3675375B2 (ja) 不揮発性メモリ並びに不揮発性メモリのデータ書き換え方法
JPH04123243A (ja) データ書込装置
JP3801176B2 (ja) メモリ制御方法、記憶装置、制御プログラムおよび可読記録媒体
CN108694131B (zh) 用于运行存储装置的方法和设备
CN107315543B (zh) 一种对ec的存储器中数据的读写方法及装置
CN107749307B (zh) 存储系统写盘失败时的重写方法、装置、设备和存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090519

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090610

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090610

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120626

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees