JP5541194B2 - フラッシュメモリに対してデータの読み出しおよび書き込みを行う制御装置 - Google Patents

フラッシュメモリに対してデータの読み出しおよび書き込みを行う制御装置 Download PDF

Info

Publication number
JP5541194B2
JP5541194B2 JP2011037075A JP2011037075A JP5541194B2 JP 5541194 B2 JP5541194 B2 JP 5541194B2 JP 2011037075 A JP2011037075 A JP 2011037075A JP 2011037075 A JP2011037075 A JP 2011037075A JP 5541194 B2 JP5541194 B2 JP 5541194B2
Authority
JP
Japan
Prior art keywords
block
data
area
recording destination
erase
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.)
Active
Application number
JP2011037075A
Other languages
English (en)
Other versions
JP2012174106A (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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2011037075A priority Critical patent/JP5541194B2/ja
Priority to US13/401,033 priority patent/US9058883B2/en
Priority to DE102012101405.1A priority patent/DE102012101405B4/de
Publication of JP2012174106A publication Critical patent/JP2012174106A/ja
Application granted granted Critical
Publication of JP5541194B2 publication Critical patent/JP5541194B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/816Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
    • G11C29/82Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/344Arrangements for verifying correct erasure or for detecting overerased cells
    • G11C16/3445Circuits or methods to verify correct erasure of nonvolatile memory cells

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Description

本発明は、フラッシュメモリに対してデータの読み出しおよび書き込みを行う制御装置に関するものである。
従来、データ消去の最小単位となるブロックを複数有するフラッシュメモリに対してデータの読み出しおよび書き込みを行う制御装置として、あるブロックのデータを消去して新たな記録先のブロックとし、それまでの記録先のブロックのデータのうち、一部の必要なデータを現在の記録先のブロックにコピーし、その後、新たに書き込み要求が発生したデータを、当該新たな記録先のブロックに記録していくという処理を行う技術が知られている。
また、特許文献1では、データを現在の記録先のブロックに記録する際、記録に失敗した場合は、現在の記録先のブロックが故障していると判定し、次のブロックのデータを消去して新たな記録先のブロックとし、前回の記録先のブロックのデータのうち、一部の必要なデータを、現在の記録先のブロックにコピーすると共に、故障であると判定した前回の記録先のブロックについては、以後使用しないようにする技術が記載されている。
特開2005−216293号公報
しかし、特許文献1のような技術では、ブロックへのデータの書き込みが失敗するまで、ブロックの故障を検知できないので、データをブロックからブロックへコピーする回数が多くなってしまうという問題がある。
例えば、データを1000個程度有するブロックAが故障して100番目のデータの書き込みができなくなっている場合、1〜99番目までのデータが書き込まれた後、100番目のデータの書き込みが失敗して、ブロックAが故障だと判定し、ブロックAから次のブロックBに必要なデータをコピーする。この場合、通常ならば1000回毎に訪れるコピーのタイミングが、100回目で訪れることになり、その結果、ブロック間のコピー頻度が増大してしまい、その結果、制御装置の処理負荷が増大してしまう。
本発明は上記点に鑑み、次のブロックのデータを消去して新たな記録先のブロックとし、前回の記録先のブロックのデータのうち、一部の必要なデータを現在の記録先のブロックにコピーし、その後、現在の記録先のブロックに順次データを記録していくというフラッシュメモリの書き込み制御において、ブロックの故障に起因してブロック間のデータのコピー頻度が増大するのを防ぐことを目的とする。
上記目的を達成するための請求項1に記載の発明は、フラッシュメモリ(5)に対してデータの読み出しおよび書き込みを行う制御装置であって、前記フラッシュメモリ(5)は、データ消去の単位となるブロックを複数有して構成され、前記制御装置は、現在の記録先のブロック以外の次のブロックを抽出し、抽出した前記次のブロックのデータの消去を試みると共に、消去に成功したか失敗したかを判定する消去・判定手段(150、160、175、180、205、210、215、220、225、230、235、240)と、前記次のブロックのデータの消去に成功したと前記消去・判定手段が判定したことに基づいて、当該消去に成功したブロックを、新たな記録先のブロックとし、それまでの記録先のブロックから、一部のレコードを読み出して現在の記録先のブロックにコピーする有効データコピー手段(170)と、を備え、前記消去・判定手段は、消去に失敗したと判定したことに基づいて、前記次のブロックが故障したと判定し、更に次のブロックを検索して抽出し、抽出した前記更に次のブロックのデータの消去を試みると共に、消去に成功したか失敗したかを判定し、前記有効データコピー手段(170)は、前記更に次のブロックの消去に成功したと前記消去・判定手段が判定したことに基づいて、当該消去に成功したブロックを、新たな記録先のブロックとすることを特徴とする制御装置である。
このように、本発明の制御装置は、消去が失敗したか否かを判定し、消去に失敗したと判定したことに基づいて、次のブロックが故障したと判定することで、当該次のブロックにレコードを書き込む前に故障を検知でき、また、更に次のブロックのデータの消去を試み、消去に成功した場合に当該更に次のブロックを新たな記録先とすることで、故障しているブロックへのコピーをスキップすることができる。したがって、故障しているブロックにデータを何回か書き込んだ後に故障を検出するよりも早く、故障しているブロックにデータを書き込む前に、故障を検知できるので、故障したブロックから次のブロックにデータをコピーする必要がなくなる。その結果、ブロックの故障に起因してブロック間のデータのコピー頻度が増大するのを防ぐことができる。
一般に、ブロックにデータを書き込むときにフラッシュメモリ(5)にかける電気的負荷は、ブロックのデータを消去するときにフラッシュメモリ(5)にかける電気的負荷よりも低い。したがって、ブロックのデータの消去に失敗した場合の方が、データの書き込みに失敗した場合よりも、ブロックが壊れている可能性が高い。逆に言えば、データの書き込みに失敗した場合は、まだそのブロックが壊れておらず、一時的な原因によってそのブロックが書き込み不能になったに過ぎない可能性が高い。
そこで、このことを利用して、記録先のブロックのある領域に書き込もうとして失敗したとしても、直ちにそのブロックを故障であると判定せず、そのブロックの他の領域に書き込みをリトライすることで、ブロックを従来よりも有効活用することができる。また、レコードの書き込みに失敗した場合でも、直ちにレコードを他のブロックにコピーすることがないので、ブロック間のコピーを行う回数が増加しない。そのため、データ記憶に失敗しても全体の処理時間は増加せず、処理負荷を低減することができる。
このように、ブロックが故障したと判定した場合に使用対象のブロック群に含まれない予備のブロックを使用対象のブロック群に含めて用いることで、使用対象のブロック群の数を減らすことなく処理を続けることができ、また、使用回数の少ない予備ブロックを用いることで、より確実にレコードを書き込むことができる。
また、請求項に記載の発明は前記フラッシュメモリ(5)に記録するレコードの記録先を、当該レコードが含むデータの種別に応じて仕分けするため、前記フラッシュメモリ(5)の前記複数のブロックが、複数のエリアに区分けされており、前記消去・判定手段は、前記複数のエリアのうち記録先のエリア用のブロック群に属するブロックから次のブロックを抽出し、抽出した次のブロックのデータの消去を試みると共に、消去に成功したか失敗したかを判定し、消去に失敗したと判定したことに基づいて、前記次のブロックが故障したと判定して、前記次のブロックを前記記録先のエリア用のブロック群から除外し、前記複数のエリアのうち、データの記録頻度が最も低いエリアとしてあらかじめ定められたエリアである交換対象エリアに属するブロックから、更に次のブロックを抽出し、抽出した前記更に次のブロックを前記記録先のエリア用のブロック群に含め、抽出した前記更に次のブロックを前記交換対象エリア用のブロック群から除外し、抽出したブロックに現在記録されているレコードの一部を、前記故障したと判定したブロックにコピーし、前記故障したと判定したブロックを、前記交換対象エリア用のブロック群に含め、抽出した前記更に次のブロックのデータの消去を試みると共に、消去に成功したか失敗したかを判定することを特徴とする。
このように、現在の記録先のエリア用のブロック群に属するブロックの故障を検出した場合、更新頻度が最も低いとあらかじめ定められた交換対象エリアに属するブロックを、記録先のエリア用のブロック群に含め、さらに、その故障ブロックを、更新頻度の最も低い交換対象エリア用のブロック群に含めることで、更新頻度が高いデータは故障の可能性が低く、かつ書き込み回数や消去回数が低いブロックに記録することができ、他方、更新頻度が低いが故に必要な記憶領域が比較的小さいデータは、故障したと判定したブロックに記録することで、効率的なブロックの使用が実現する。
また、請求項2に記載の発明は、請求項1に記載の制御装置において、前記消去・判定手段は抽出した前記更に次のブロックに現在記録されているレコードの一部を、前記故障したと判定したブロックにコピーする際、レコードの書き込みに失敗した場合は、書き込みが成功するまで、記録先のアドレスをスキップしながら、書き込みをリトライすることを特徴とする。なお、上記および特許請求の範囲における括弧内の符号は、特許請求の範囲に記載された用語と後述の実施形態に記載される当該用語を例示する具体物等との対応関係を示すものである。
本発明の第1実施形態に係るマイクロコントローラ1の構成図である。 アプリケーションソフト、フラッシュドライバソフト、フラッシュコントローラ6、フラッシュメモリ5の階層構成の概念図である。 データをフラッシュメモリに書き込むためにCPUが実行する処理のフローチャートである。 レコードの書き込みの手順を示す図である。 ブロックの消去に失敗した場合の手順を示す図である。 本発明の第2実施形態に係るマイクロコントローラ1の構成図である。 第2実施形態においてCPUが実行する処理のフローチャートである。 第3実施形態においてCPUが実行する処理のフローチャートである。 第4実施形態においてCPUが実行する処理のフローチャートである。
(第1実施形態)
以下、本発明の第1実施形態について説明する。図1に、本実施形態に係るマイクロコントローラ1の構成を示す。このマイクロコントローラ1は、車両に搭載され、I/O2、ROM3、RAM4、フラッシュメモリ5、フラッシュコントローラ6、CPU7等を備えている。
I/O2は、マイクロコントローラ1の外部の装置と信号の授受を行うためのインターフェース装置である。ROM3は、CPU7が実行するための各種プログラム等があらかじめ記憶された不揮発性の記憶媒体である。RAM4は、CPU7の作業用のメモリ領域である。
フラッシュメモリ5は、データ消去の最小単位となるブロックを複数個(本実施形態では3個以上)有して構成されている。各ブロックのサイズは数キロバイト(例えば、4キロバイト)であり、1つのブロック内のあるデータを消去するには、そのブロック全体のデータを消去する(すなわち、そのブロック全体のビットを1にとする)必要がある。しかし、1つのブロック内にある特定のビットを1から0に書き替える場合は、マイコン依存で2バイトや4バイト単位でデータを書き換えることができる。
これら複数のブロックは、CPU7およびフラッシュコントローラ6によって、1番目のブロック1が使用され、1番目のブロック1の使用が終了すると次に2番目のブロック2が使用されるという風に、順番に書き込みに使用されるようになっている。
複数のブロックのそれぞれは、ヘッダフィールドおよびデータフィールドを有して構成される。各ヘッダフィールドに記録される情報から、使用中のブロックであるか未使用のブロックであるかを判別することができる。つまり、各ブロックは、CPU7およびフラッシュコントローラ6によって、当該ブロックの使用を始める際に、使用中である旨の情報が書き込まれる。データフィールドには、先頭のアドレスから順にレコードが順次記録されるようになっている。
なお、レコードのデータサイズは、固定でも可変でもよいが、本実施形態では固定とする。また、レコードのデータサイズは、典型的には数十バイト程度の長さである。したがって、典型的には、1つのブロック内には、数十個〜数百個程度のレコードが記録可能である。
フラッシュコントローラ6は、CPU7の制御に従ってフラッシュメモリ5に対してデータの読み出しおよび書き込みを行う周知の装置である。具体的には、CPU7から特定のアドレスのデータの読み出し指令を受けると、当該アドレスに記録されたデータの内容をフラッシュメモリ5から読み出し、読み出した内容をCPU7に出力する。
また、CPU7から特定のアドレスに特定のデータの書き込み指令を受けると、フラッシュメモリ5の当該アドレス位置へ、当該特定のデータを書き込むよう試み、書き込みに成功すると、書き込み成功の旨のメッセージをCPU7に出力し、書き込みに失敗すると、書き込み失敗の旨のメッセージをCPU7に出力する。
また、CPU7からブロックの消去命令を受けると、フラッシュメモリ5の当該ブロックの全データの消去を試み、消去に成功すると、消去成功の旨のメッセージをCPU7に出力し、消去に失敗すると、消去失敗の旨のメッセージをCPU7に出力する。
CPU7は、ROM3に記録されたプログラムを実行することで、種々の処理を実現し、その処理において、必要に応じ、I/O2を用いて外部と信号の授受を行い、ROM3からデータを読み出し、RAM4を作業領域として用い、フラッシュコントローラ6に上記のような各種指令を出力することで、フラッシュメモリ5へのデータの読み出しおよび書き込みを行う。以下、簡単のため、CPU7がフラッシュコントローラ6に読み出し指令を出力し、その読み出し指令に従ってフラッシュコントローラ6がフラッシュメモリ5からデータを読み出してCPU7に出力する作動については、単に、CPU7がフラッシュメモリ5からデータを読み出すと記載する。
図1に示すように、ROM3には、CPU7が実行するプログラムとして、フラッシュドライバソフト、および、複数のアプリケーションソフトが格納されている。図2に、アプリケーションソフト、フラッシュドライバソフト、フラッシュコントローラ6、フラッシュメモリ5の階層構成を概念的に示す。
CPU7は、これらアプリケーションソフトを実行することで、例えば、I/O2を介してドア開閉センサから信号を受け取って車両のドアの開閉を検出し、車両のエンジンの始動を検知するセンサから信号を受け取ってエンジンECUの始動を検出する。
これらのようなアプリケーションを実行したときの処理により、フラッシュメモリ5にデータを記録する必要が発生する場合がある。例えば、エンジンを始動した回数を、その回数が変化する度にフラッシュメモリ5に記録する必要が発生し、ドアを開閉した回数を、その回数が変化する度にフラッシュメモリ5に記録する必要が発生する。
このように、CPU7がアプリケーションソフトの実行において書き込みデータの書き込みの必要が発生すると、書き込みデータの書き込み要求をRAM4またはCPU7のレジスタに出力する(書き込む)。この書き込み要求は、書き込みデータの種別を示すデータID(例えば、エンジンを始動した回数か、ドアを開閉した回数かの別)と、書き込みデータのデータ値(すなわち、書き込みデータの内容)とを含むデータである。
すると、CPU7は、書き込み要求が出力されたことに基づいて、フラッシュドライバソフトの実行を開始し、その実行処理において、書き込みデータをフラッシュメモリ5に記録するため、フラッシュコントローラ6に必要な指令を出力する。これにより、図4(1)、(2)のように、書き込みデータがレコードとしてブロックのデータフィールドに順次追記方式で記録されていく。
以下では、簡単のため、CPU7が、ある特定のアドレスにデータを書き込む書き込み指令をフラッシュコントローラ6に出力する処理を、単に、CPU7が、ブロックの特定のアドレスにデータを書き込むと記載する。また同様に、CPU7が、ある特定のアドレスからデータを読み出す読み出し指令をフラッシュコントローラ6に出力し、フラッシュコントローラ6から当該データを取得する処理を、単に、CPU7が、ある特定のアドレスからデータを読み出すと記載する。
データの記録先となる条件を満たすブロックは、現在書き込み中のブロックか、あるいは、現在書き込み中のブロックにデータを書き込む空き領域がない場合は、現在書き込み中のブロックの次の未使用のブロック(使用中でないブロック)ブロックである。
以下、図3の消去処理について説明する。この消去処理は、例えば、アプリケーションソフトの実行においてブロックのデータ消去が必要になった際にCPU7が実行開始する。
まずステップ150では、ヘッダフィールドに則って、次のブロックを検索する。具体的には、ヘッダフィールドによれば未使用であるブロックのうち、最も順番が早いブロックを使用する。この特定したブロック(図4(3)の例ではブロック2)が、次のブロックである。
更にステップ150では、データ消去が必要になったブロックのデータを消去するため、当該次のブロックのデータを消去する消去指令をフラッシュコントローラ6に出力する。これにより、フラッシュコントローラ6は、当該次のブロックのデータの消去を試み、消去に成功すると、消去成功の旨のメッセージをCPU7に出力し、消去に失敗すると、消去失敗の旨のメッセージをCPU7に出力する。
続いてステップ160では、当該次のブロックのデータの消去に成功したか否かを、フラッシュコントローラ6からのメッセージに基づいて判定し、成功していると判定すれば、ステップ170に進む。
ステップ170では、ヘッダフィールドから使用中のブロックを特定する。更に、図4(4)に示すように、前回の記録先のブロックから、一部の必要なレコードを読み出し、読み出した各レコードを現在の記録先のブロック(図4におけるブロック2)に先頭アドレス(データフィールドの先頭アドレス。以下同じ。)から順番にコピーする。コピーは、フラッシュコントローラ6に適宜読み出し指令および書き込み指令を出力することで実現する。コピーが終了すると、ステップ170を終了すると共に、消去処理を終了する。
次に、ステップ160で、消去に失敗したと判定した場合について説明する。この場合、CPU7はステップ175に進み、消去に失敗したブロックを故障したブロックであると判定し、この故障したブロックのヘッダフィールドに、当該ブロックが故障している旨の情報を書き込む書き込み指令を、フラッシュコントローラ6に出力する。
例えば、ステップ150で、図4(8)のようにブロック1の消去を試み、ステップ160で、消去に失敗したと判定した場合は、図5(1)に示すように、ブロック1を故障したブロックとみなし、ブロック1のヘッダフィールドに当該ブロックが故障している旨の情報を書き込む。
続いてステップ180に進み、消去失敗回数は、消去失敗規定回数(例えば、使用対象ブロック群リストに含まれるブロックの数から2を減算した数)以内であるか否かを判定する。この消去失敗回数は、初期値を0とし、ステップ160で消去に失敗したと判定する度に1回分増加させる変数を、RAM4に記録させ、この変数を参照することで取得してもよいし、フラッシュコントローラ6中で、ヘッダフィールドに、故障したことを示すデータが書き込まれているブロックの数をカウントすることで取得してもよい。
消去失敗回数が消去失敗規定回数以内でなければ、エラーメッセージを出力し、図3の処理を終了する。エラーメッセージの出力先は、書き込み要求を出力したアプリケーションへの戻り値を格納するRAM4上の変数領域であってもよいし、I/O2を介した他の装置(例えば、異常検査装置)であってもよい。
更にステップ150では、検索の結果抽出した更に次のブロック(ブロック2)のデータを消去するため、当該更に次のブロックのデータを消去する消去指令をフラッシュコントローラ6に出力する。これにより、フラッシュコントローラ6は、当該更に次のブロックのデータの消去を試み、消去に成功すると、消去成功の旨のメッセージをCPU7に出力し、消去に失敗すると、消去失敗の旨のメッセージをCPU7に出力する。このステップ150に続くステップ160以降の処理は、既に説明した通りである。
このように、本実施形態では、次のブロックを抽出し、抽出した次のブロックのデータの消去を試みる(ステップ150)と共に、消去に成功したか失敗したかを判定する(ステップ160)。そして、消去に成功したと判定したことに基づいて、当該消去に成功したブロック(当該次のブロック)を、新たな記録先のブロックとし、前回の記録先のブロックから、有効なレコードを読み出して現在の記録先のブロックにコピー(ステップ170)を行う。
そして、ステップ160で消去に失敗したと判定したことに基づいて、当該次のブロックが故障したと判定し(ステップ175)、更に次のブロックを検索して抽出し、抽出した当該更に次のブロックのデータの消去を試みる(ステップ150)と共に、消去に成功したか失敗したかを判定する(ステップ160)、そして、消去に成功したと判定したことに基づいて、当該消去に成功したブロック(当該更に次のブロック)を、新たな記録先のブロックとし、前回の記録先のブロックから、有効なレコードを読み出して現在の記録先のブロックにコピーする(ステップ170)。
このように、本発明の制御装置は、次のブロックの消去を試みたときに、消去が失敗したか否かを判定し、消去に失敗したと判定したことに基づいて、次のブロックが故障したと判定することで、当該次のブロックにレコードを書き込む前に故障を検知でき、また、更に次のブロックのデータの消去を試み、消去に成功した場合に当該更に次のブロックにレコードをコピーすることで、故障しているブロックへのコピーをスキップすることができる。したがって、故障しているブロックにデータを何回か書き込んだ後に故障を検出するよりも早く、故障しているブロックにデータを書き込む前に、故障を検知できるので、故障したブロックから次のブロックにデータをコピーする必要がなくなる。その結果、ブロックの故障に起因してブロック間のデータのコピー頻度が増大するのを防ぐことができる。
一般に、ブロックにデータを書き込むときにフラッシュメモリ(5)にかける電気的負荷は、ブロックのデータを消去するときにフラッシュメモリ(5)にかける電気的負荷よりも低い。したがって、ブロックのデータの消去に失敗した場合の方が、データの書き込みに失敗した場合よりも、ブロックが壊れている可能性が高い。逆に言えば、データの書き込みに失敗した場合は、まだそのブロックが壊れておらず、一時的な原因によってそのブロックが書き込み不能になったに過ぎない可能性が高い。
そこで、このことを利用して、記録先のブロックにレコードを書き込もうとして失敗したとしても、直ちにそのブロックを故障であると判定せず、そのブロックの他の部分に書き込みをリトライすることで、ブロックを従来よりも有効活用することができる。また、書き込みデータの書き込みに失敗した場合でも、直ちにブロックが故障していると判定してレコードを他のブロックにコピーすることがなく、ブロック間のコピーを行う回数が増加しない。そのため、データ記憶に失敗しても全体の処理時間は増加せず、処理負荷を低減することができる。
(第2実施形態)
次に、本発明の第2実施形態について、第1実施形態とは異なる部分を中心に説明する。図6に、本実施形態に係るマイクロコントローラ1の構成を示す。本実施形態のマイクロコントローラ1のハードウェア構成は、第1実施形態と同じである。
ただし、本実施形態では、フラッシュメモリ5内の複数個のブロック1〜Nが、M個のエリアに区分けされており、各エリア内で、ブロックに順番が割り振られている。どのブロックがどのエリアに属するかの情報は、ブロックと、そのブロックに対応するブロックが属するエリアとの対応関係情報(以下、所属先エリアデータという)として、あらかじめ書き込み可能な不揮発性記憶媒体(例えば、フラッシュメモリ、EEPROM)に記録されており、CPU7は、所属先エリアデータを参照して、どのブロックがどのエリアに属するかを特定する。
エリアは、フラッシュメモリ5に書き込むレコードの記録先を、そのレコードが含むデータの種別に応じて仕分けするために設けられた領域である。例えば、ドアの開閉回数、エンジンの開閉回数等の、値が変化する頻度(すなわち、更新の頻度)が高い種別のデータは、エリア2に記録し、ソフトのバージョン等の、値が変化する頻度が低い種別のデータは、エリア1に記録する等の区分けを行う。どの種別のデータがどのエリアに記録されるかの情報は、データIDとエリアとの対応関係を示すエリア対応テーブルとして、ROM3に記録されている。
また、本実施形態のCPU7は、アプリケーションソフトの実行において書き込み要求が出力されたことに基づいて、フラッシュドライバソフトの実行を開始し、その実行処理において、まず、書き込み要求に含まれるデータIDと、上述のエリア対応テーブルに基づいて、この書き込み要求に含まれる書き込みデータの記録先のエリアを特定する。
そして、特定した記録先のエリア内のブロックに書き込みデータを記録するため、図3に示す処理に代えて、図7に示す処理を実行する。図7の処理と図3の処理で、同じ符号が付されているステップは、互いに同じ処理を行う。
また、複数のエリアのうちの1つまたは複数には、通常時の書き込みに使用するブロック以外に、そのエリア用の予備ブロック設けられている。予備ブロックは、通常のデータ記憶では使用しないブロックであり、ブロックの消去に失敗したときのみ、書き込みに使用するブロックである。
予備ブロックを設けるエリアは、頻繁に値が変化するデータを記録するエリア(例えばエリア2、3)のみとし、値の変化が頻繁でないデータを記録するエリア(例えば、エリア2、3に記録するデータよりも値の変化の頻度が低いデータが記録されるエリア1)には、予備ブロックを設けないようになっていてもよい。予備ブロックとそうでないブロックの識別方法は例えば、エリアごとに使用できるブロック数が決まっており、エリアに割り当てられているブロックの数が使用できるブロック数+1の場合は、1つ予備ブロック(例えば最後の順番のブロック)を有していると判断する。
以下、図7の処理について説明するが、記録先として決定したエリアが、上述の例における、予備ブロックを有するエリア2であった場合を例に取って説明する。まず、ステップ150における、次のブロックを検索し、検索の結果抽出した当該次のブロックのデータを消去する点は、第1実施形態と同じである。
また、消去に成功したと判定し(ステップ160)、必要なレコードのコピーを行うと共にヘッダフィールドを書き換える(ステップ170)部分についても、第1実施形態と同様である。
本実施形態が第1実施形態と異なるのは、ステップ160でブロックのデータ消去に失敗し、ステップ175で第1実施形態と同様に当該ブロックの故障があると判定した後の処理である。ステップ175に続いては、ステップ205で、現在の記録対象のエリア内に未使用の予備ブロックがあるか否かを判定する。
未使用の予備ブロックとは、当該エリアに属する予備ブロックで、ヘッダフィールドによれば未使用である予備ブロックである。
ステップ205で未使用の予備ブロックがあると判定した場合は、続いてステップ210で、当該抽出した予備ブロックを次のブロックとして選択し、当該次のブロック(予備ブロック)のデータを消去するため、当該次のブロック(予備ブロック)のデータを消去する消去指令をフラッシュコントローラ6に出力する。これにより、フラッシュコントローラ6は、当該次のブロック(予備ブロック)のデータの消去を試み、消去に成功すると、消去成功の旨のメッセージをCPU7に出力し、消去に失敗すると、消去失敗の旨のメッセージをCPU7に出力する。その後、処理はステップ160に進む。
ステップ160以降は、既に第1実施形態で説明した通りである。例えば、ステップ160で消去に成功したと判定すると、ステップ170に進む。
更に、前回の記録先のブロックから、必要なすべてのレコードを読み出し、読み出した各レコードを現在の記録先のブロック(予備ブロック)に先頭アドレスから順番にコピーする。
また、ステップ205で未使用の予備ブロックがないと判定した場合は、エラーメッセージを出力し、図7の処理を終了する。エラーメッセージの出力先は、第1実施形態と同じでもよい。なお、本実施形態では、予備ブロックを有さないエリアを記録先のエリアとする場合は、図7でなく図3の処理を行うようになっていてもよい。
以上説明した通り、図7の処理において、CPU7は、次のブロックを抽出し、抽出した次のブロックのデータの消去を試みると共に(ステップ150)、消去に成功したか失敗したかを判定し(ステップ160)、消去に失敗したと判定したことに基づいて、次のブロックが故障したと判定し(ステップ175)、同じエリア内で予備ブロックがあれば(ステップ205)、その予備ブロックから更に次のブロックを抽出し、抽出した当該更に次のブロック(予備ブロック)を使用対象ブロック群に含め(ステップ210)、抽出した当該更に次のブロック(予備ブロック)のデータの消去を試みる(ステップ150)と共に、消去に成功したか失敗したかを判定する(ステップ160)。
このように、ブロックが故障したと判定した場合に使用対象ブロック群に含まれない予備のブロックを使用対象ブロック群に含めて用いることで、使用対象ブロック群の数を減らすことなく処理を続けることができ、また、使用回数の少ない予備ブロックを用いることで、より確実に書き込みデータを書き込むことができる。また、記録先のエリア用の使用対象ブロック群の1つを、当該エリア専用の予備ブロックとして用いることで、当該エリアの予備ブロックのストックをより確実に確保することができる。
(第3実施形態)
次に、本発明の第3実施形態について、第2実施形態との違いを中心に説明する。本実施形態は、フラッシュメモリ5内の複数個のブロック1〜Nが、M個のエリアに区分けされている点は同じであるが、それらエリアのうち1つが、予備ブロック用のエリア(以下、予備エリアという)として用いられる点が異なる。どのエリアが予備エリアであるかは、あらかじめROM3に記録された情報に基づいて特定できるようになっている。加えて、予備エリアとは別にエリアごとに予備ブロックを有していても良い。
したがって、データIDとエリアとの対応関係を示すエリア対応テーブルにおいては、予備エリアにはどのデータIDも対応付けられていない。これら予備エリアに属する予備ブロックは、後述するように、他のエリアのブロックの代替として用いられることになる。予備エリア中の各予備ブロックをどのエリアの予備ブロックとして使用するかはフラッシュメモリに予備ブロック割り当てテーブルとして書込み管理する。また、マイクロコントローラ1の使用開示時は、各予備ブロックはデータが消去された状態になっており、まだどのエリアのブロックの代替として用いられているかは決まっていない。
そして、本実施形態のCPU7は、図7の処理に代えて、図8に示す処理を実行するようになっている。図7と図8で同一の処理については、同じ符号を付す。
この図8の処理が第2実施形態と異なるのは、ステップ160で対象のエリアのブロックのデータ消去に失敗し、ステップ175で当該ブロックの故障があると判定した後の処理である。ステップ175に続いては、ステップ215で、予備エリア内に未使用の予備ブロックがあるか否かを判定する。
予備エリア内で未使用の予備ブロックとは、予備エリアに属するブロックのうち、ヘッダフィールドによれば未使用である予備ブロックである。
ステップ215で未使用の予備ブロックがあると判定した場合は、続いてステップ220で、予備エリアに属する未使用の予備ブロックのうち1つの予備ブロック(例えば、最も順番が早い予備ブロック)を抽出し、予備ブロック割り当てテーブルにおいて、当該予備ブロックがエリア2に割り当てられている旨を記録する。
更にステップ220では、当該抽出した予備ブロックを次のブロックとして選択し、当該次のブロック(予備ブロック)のデータを消去するため、当該次のブロック(予備ブロック)のデータを消去する消去指令をフラッシュコントローラ6に出力する。これにより、フラッシュコントローラ6は、当該次のブロック(予備ブロック)のデータの消去を試み、消去に成功すると、消去成功の旨のメッセージをCPU7に出力し、消去に失敗すると、消去失敗の旨のメッセージをCPU7に出力する。その後、処理はステップ160に進む。ステップ160以降は、既に第2実施形態で説明した通りである。例えば、ステップ160で消去に成功したと判定した場合は、更にステップ170で、前回の記録先のブロックから、必要なレコードを読み出し、読み出した各レコードを現在の記録先のブロック(予備ブロック)に先頭アドレスから順番にコピーする。
また、ステップ215で未使用の予備ブロックがないと判定した場合は、エラーメッセージを出力し、図8の処理を終了する。エラーメッセージの出力先は、第2実施形態と御同じでもよい。
以上説明した通り、図8の処理において、CPU7は、次のブロックを抽出し、抽出した次のブロックのデータの消去を試みると共に(ステップ150)、消去に成功したか失敗したかを判定し(ステップ160)、消去に失敗したと判定したことに基づいて、次のブロックが故障したと判定し(ステップ175)、どのエリア用の使用対象ブロック群にも属さない予備エリア内で予備ブロックがあれば(ステップ215)、その予備ブロックから更に次のブロックを抽出し(ステップ220)、抽出した当該更に次のブロック(予備ブロック)のデータの消去を試みる(ステップ150)と共に、消去に成功したか失敗したかを判定する(ステップ160)。
なお、CPU7は、記録先のエリアがどのエリアの場合であっても、図8の処理を実行する。したがって、予備エリアの予備ブロックは、どのエリアのブロックの代替のブロックとしても使用可能である。あるいは、特定の複数のエリアのいずれかが記録先である場合に限り、図8の処理を行い、特定の複数のエリア以外のエリアが記録先である場合は、図3の処理を行うようになっていてもよい。この場合でも、予備エリアの予備ブロックは、特定の複数のエリアうち、どのエリアのブロックの代替のブロックとしても使用可能である。
このように、ブロックが故障したと判定した場合に使用対象ブロック群に含まれない予備のブロックを使用対象ブロック群に含めて用いることで、使用対象ブロック群の数を減らすことなく処理を続けることができ、また、使用回数の少ない予備ブロックを用いることで、より確実に書き込みデータを書き込むことができる。また、どのエリアのブロックの予備としても用いることができる予備ブロックを有することで、予備ブロックの汎用性が増す。なお、本実施形態では、予備エリア以外のエリアが、予備ブロックを含んでいてもよいし、含んでいなくてもよい。
(第4実施形態)
次に、本発明の第4実施形態について、第3実施形態と異なる部分を説明する。本実施形態が第3実施形態と異なるのは、CPU7が、図8に示した処理に代えて、図9に示す処理を実行する場合がある点である。
また、本実施形態では、予備エリア以外のすべてのエリアのうち、記録するデータの更新頻度(すなわち、レコードが書き込まれる頻度)が最も少ないエリアのエリアIDが、交換対象エリアIDとしてあらかじめROM3に記録されている点も、第3実施形態とは異なる。
マイクロコントローラ1の設計時には、どの種別のデータがどの程度の更新頻度であるかが概ねわかっているので、予備エリア以外のエリアのうち、どのエリアが一番データの更新頻度が低いかが判っており、設計者は、そのエリアのエリアIDを交換対象エリアIDとしてROM3に記録しておく。なお、記録するデータの更新頻度が最も少ないエリアが含むブロック数は、更新頻度が少ない故、他のエリアよりも少なく、例えば2個程度である。記録するデータの更新頻度が最も少ないエリアは、本実施形態では、マイクロコントローラ1が実行するソフトウェアのバージョン等のデータが記録されるエリア1とする。
以下、図9の処理について説明する。CPU7は、上述の交換対象エリアIDの示すエリア1以外のエリア(以下、エリア2とする)を記録対象として特定した場合、図8の処理に代えて、図9の処理を実行するようになっている。図9の処理内容が第3実施形態の図8の処理と異なるのは、図8のステップ215、220の処理を、図9のステップ235、240の処理に置き換えたことである。
ステップ175に続くステップ235では、交換対象エリアIDが示すエリア1(以下交換対象エリアという)からブロックを検索して抽出する。抽出するブロックは、当該交換対象エリア1に属するブロックのうち、ヘッダフィールドによれば使用中であるブロックとする。このように、当該交換対象エリア1が属するブロックのうち、現在の記録対象となっているブロックを選ぶのは、そのブロックにはレコードの順次書き込みが行われている途中なので、交換対象エリア中で最も故障の可能性が低いブロックだからである。
更にステップ235では、所属先エリアデータにおいて、当該抽出したブロックの所属先のエリアをエリア2に書き換え、また、直前のステップ160で消去に失敗したブロックの所属先のエリアを交換対象エリアに書き換える。これにより、当該抽出したブロックを当該交換対象エリア1の使用対象のブロック群から除外して現在の記録先エリア2の使用対象のブロック群に組み入れ、また、直前のステップ160で消去に失敗したブロックを現在の記録先エリア2の使用対象のブロック群から除外して、当該交換対象エリア1の使用対象のブロック群に組み入れる。これにより、交換対象エリア1と現在の記録先エリア2との間で、ブロックの交換が行われたことになる。
続いてステップ240では、抽出したブロックに現在記録されているレコードのうち、有効なレコードのすべてを、直前のステップ175で故障と判定したブロックにコピーする。
このようにするのは、故障したと判定したブロックでも、完全に故障しているのではなく、書き込み可能な領域が少しは残っている可能性があり、抽出したブロック(すなわち、記録するデータの更新頻度が最も少ないエリアのブロック)中のレコードは、更新の頻度が少ないので、そのような少しの領域でも充分使用可能である可能性が高いからである。このため、コピーの際は、レコードの書き込みに失敗した場合は、ステップ120、130の書き込み処理と同様に、書き込みが成功するまで、記録先のアドレスをスキップしながら、書き込みをリトライする。ステップ230に続いては、ステップ150に戻る。それ以降は、第3実施形態と同じである。
このように、現在の記録先のエリア2用の使用対象ブロック群に属するブロックの故障を検出した場合、更新頻度が最も低いとあらかじめ定められた交換対象エリアに属するブロックを記録先のエリア2用の使用対象ブロック群に含め、さらに、その故障ブロックを、更新頻度の最も低い交換対象エリア用の使用対象ブロック群に含めることで、更新頻度が高いデータは故障の可能性が低く、かつ書き込み回数や消去回数が低いブロックに記録することができ、他方、更新頻度が低いが故に必要な記憶領域が比較的小さいデータは、故障したと判定したブロックに記録することで、効率的なブロックの使用が実現する。なお、本実施形態では、予備エリア、予備ブロックがなくてもよい。
なお、上記実施形態において、CPU7が、ステップ110を実行することで満杯状態判定手段の一例として機能し、ステップ120、130、140を実行することで書き込み処理手段の一例として機能し、ステップ150、160、175、180、205、210、215、220、225、230、235、240を実行することで消去・判定手段の一例として機能し、ステップ170を実行することで有効データコピー手段の一例として機能する。
(他の実施形態)
以上、本発明の実施形態について説明したが、本発明の範囲は、上記実施形態のみに限定されるものではなく、本発明の各発明特定事項の機能を実現し得る種々の形態を包含するものである。
例えば、上記の実施形態において、CPU7がプログラムを実行することで実現している各機能は、それらの機能を有するハードウェア(例えば回路構成をプログラムすることが可能なFPGA)を用いて実現するようになっていてもよい。
また、上記実施形態では、フラッシュコントローラ6とCPU7とは分離した装置となっているが、単一のICが、フラッシュコントローラ6とCPU7の機能を実現するようになっていてもよい。
また、上記実施形態では、1つのマイクロコントローラ1の中にI/O2、ROM3、RAM4、フラッシュメモリ5、フラッシュコントローラ6が記録されているが、フラッシュメモリ5は、マイクロコントローラ1の外部に設けられていてもよい。すなわち、本発明の制御装置は、フラッシュメモリを備えていてもよいし、備えていなくてもよい。
また、上記実施形態では、本発明の制御装置の例として、車載用途のマイクロコントローラ1を示したが、本発明の制御装置は、車載用途に限らず、他の用途に応用可能である。
1 マイクロコントローラ
2 I/O
3 ROM
4 RAM
5 フラッシュメモリ
6 フラッシュコントローラ
7 CPU

Claims (2)

  1. フラッシュメモリ(5)に対してデータの読み出しおよび書き込みを行う制御装置であって、
    前記フラッシュメモリ(5)は、データ消去の単位となるブロックを複数有して構成され、
    前記フラッシュメモリ(5)に記録するレコードの記録先を、当該レコードが含むデータの種別に応じて仕分けするため、前記フラッシュメモリ(5)の前記複数のブロックが、複数のエリアに区分けされており、
    前記制御装置は、
    記複数のエリアのうち記録先のエリア用のブロック群に属するブロックから現在の記録先のブロック以外の次のブロックを抽出し、抽出した前記次のブロックのデータの消去を試みると共に、消去に成功したか失敗したかを判定する消去・判定手段(150、160、175、235、240)と、
    前記次のブロックのデータの消去に成功したと前記消去・判定手段が判定したことに基づいて、当該消去に成功したブロックを、新たな記録先のブロックとし、それまでの記録先のブロックから、一部のレコードを読み出して現在の記録先のブロックにコピーする有効データコピー手段(170)と、を備え、
    前記消去・判定手段は、前記次のブロックのデータの消去に失敗したと判定したことに基づいて、前記次のブロックが故障したと判定して、前記次のブロックを前記記録先のエリア用のブロック群から除外し、前記複数のエリアのうち、データの記録頻度が最も低いエリアとしてあらかじめ定められたエリアである交換対象エリアに属するブロックから、更に次のブロックを抽出し、抽出した前記更に次のブロックを前記記録先のエリア用のブロック群に含め、抽出した前記更に次のブロックを前記交換対象エリア用のブロック群から除外し、抽出した前記更に次のブロックに現在記録されているレコードの一部を、前記故障したと判定したブロックにコピーし、前記故障したと判定したブロックを、前記交換対象エリア用のブロック群に含め、抽出した前記更に次のブロックのデータの消去を試みると共に、消去に成功したか失敗したかを判定し、
    前記有効データコピー手段(170)は、前記更に次のブロックの消去に成功したと前記消去・判定手段が判定したことに基づいて、当該消去に成功したブロックを、新たな記録先のブロックとすることを特徴とする制御装置。
  2. 前記消去・判定手段は抽出した前記更に次のブロックに現在記録されているレコードの一部を、前記故障したと判定したブロックにコピーする際、レコードの書き込みに失敗した場合は、書き込みが成功するまで、記録先のアドレスをスキップしながら、書き込みをリトライすることを特徴とする請求項1に記載の制御装置。
JP2011037075A 2011-02-23 2011-02-23 フラッシュメモリに対してデータの読み出しおよび書き込みを行う制御装置 Active JP5541194B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011037075A JP5541194B2 (ja) 2011-02-23 2011-02-23 フラッシュメモリに対してデータの読み出しおよび書き込みを行う制御装置
US13/401,033 US9058883B2 (en) 2011-02-23 2012-02-21 Control apparatus for controlling data reading and writing to flash memory
DE102012101405.1A DE102012101405B4 (de) 2011-02-23 2012-02-22 Steuervorrichtung zum Steuern eines Datenlesens und - schreibens von und zu einem Flash-Speicher

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011037075A JP5541194B2 (ja) 2011-02-23 2011-02-23 フラッシュメモリに対してデータの読み出しおよび書き込みを行う制御装置

Publications (2)

Publication Number Publication Date
JP2012174106A JP2012174106A (ja) 2012-09-10
JP5541194B2 true JP5541194B2 (ja) 2014-07-09

Family

ID=46605155

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011037075A Active JP5541194B2 (ja) 2011-02-23 2011-02-23 フラッシュメモリに対してデータの読み出しおよび書き込みを行う制御装置

Country Status (3)

Country Link
US (1) US9058883B2 (ja)
JP (1) JP5541194B2 (ja)
DE (1) DE102012101405B4 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101756228B1 (ko) * 2011-07-19 2017-07-11 삼성전자 주식회사 메모리 장치
JP6543122B2 (ja) * 2015-07-17 2019-07-10 キヤノン株式会社 情報処理装置と、前記情報処理装置による不揮発記憶装置の初期化方法、及びプログラム
JP6884675B2 (ja) * 2017-09-20 2021-06-09 株式会社東芝 ビデオサーバ、及び放送システム
CN111326198A (zh) * 2018-12-13 2020-06-23 北京兆易创新科技股份有限公司 非易失性存储器及其操作方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3507132B2 (ja) * 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
JP3640802B2 (ja) * 1998-06-08 2005-04-20 富士通株式会社 データバックアップ方式
JP2000243093A (ja) 1998-12-25 2000-09-08 Sanyo Electric Co Ltd フラッシュメモリへのデータ記憶方法及びフラッシュメモリからのデータ読出方法
JP4165990B2 (ja) * 1999-12-20 2008-10-15 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリへのデータの書き込み方法
JP2001312891A (ja) * 2000-04-27 2001-11-09 Hitachi Ltd 半導体メモリ装置
JP2004227723A (ja) * 2003-01-27 2004-08-12 Renesas Technology Corp 不揮発性半導体記憶装置
JP2004265162A (ja) * 2003-03-03 2004-09-24 Renesas Technology Corp 記憶装置およびアドレス管理方法
KR100526186B1 (ko) * 2003-04-04 2005-11-03 삼성전자주식회사 플래시 메모리의 오류블록 관리방법 및 장치
JP2004342187A (ja) * 2003-05-14 2004-12-02 Renesas Technology Corp 半導体集積回路及びマイクロコンピュータ
JP4203994B2 (ja) * 2003-09-26 2009-01-07 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
KR100608592B1 (ko) 2004-01-27 2006-08-03 삼성전자주식회사 플래시 메모리의 데이터 관리 장치 및 방법
JPWO2005081261A1 (ja) * 2004-02-20 2007-08-02 スパンション エルエルシー 半導体記憶装置および半導体記憶装置の冗長制御方法
US7068555B2 (en) 2004-02-20 2006-06-27 Spansion Llc Semiconductor memory storage device and a redundancy control method therefor
JP2005338924A (ja) * 2004-05-24 2005-12-08 Toshiba Corp 携帯可能電子装置に用いられる不揮発性メモリと携帯可能電子装置
JP2006294143A (ja) * 2005-04-12 2006-10-26 Toshiba Corp 不揮発性半導体記憶装置
JP4879571B2 (ja) * 2005-12-09 2012-02-22 凸版印刷株式会社 半導体メモリ
JP2008146255A (ja) * 2006-12-07 2008-06-26 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
JP2009288914A (ja) * 2008-05-28 2009-12-10 Fuji Xerox Co Ltd フラッシュメモリおよび電子機器
US8412909B2 (en) * 2009-04-08 2013-04-02 Samsung Electronics Co., Ltd. Defining and changing spare space and user space in a storage apparatus

Also Published As

Publication number Publication date
US20120215968A1 (en) 2012-08-23
JP2012174106A (ja) 2012-09-10
DE102012101405A1 (de) 2012-08-23
DE102012101405B4 (de) 2020-09-17
US9058883B2 (en) 2015-06-16

Similar Documents

Publication Publication Date Title
JP3692313B2 (ja) 不揮発性メモリの制御方法
KR100843543B1 (ko) 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
KR100849221B1 (ko) 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
US7558904B2 (en) Controller, data memory system, data rewriting method, and computer program product
CN102890656B (zh) 提高flash使用寿命的方法
JP2007018499A (ja) 記憶装置
US7610436B2 (en) Semiconductor device having flash memory with a data length table
WO2009118917A1 (ja) フラッシュメモリを用いた記憶装置
KR20040038713A (ko) 비-휘발성 메모리 시스템에서 사용불가능한 블록을관리하기 위한 방법 및 장치
KR100370893B1 (ko) 일괄 소거형 비휘발성 메모리 장치
US9710375B2 (en) Writing an address conversion table for nonvolatile memory wear leveling
JPWO2009004674A1 (ja) 記憶装置、ディスク装置、書込み判定方法、制御装置
WO2009104330A1 (ja) メモリ制御方法及び装置、メモリアクセス制御方法、コンピュータプログラム、記録媒体
JP5541194B2 (ja) フラッシュメモリに対してデータの読み出しおよび書き込みを行う制御装置
EP2977907B1 (en) Data storage device, method for storing data, and onboard control device
CN114237984A (zh) 异常掉电下Trim数据的恢复方法、***及固态硬盘
JP5323030B2 (ja) メモリ装置及びメモリ制御方法
JP2018028830A (ja) 電子制御装置およびその情報記憶方法
JP4513786B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
CN103389943A (zh) 控制装置、存储装置及存储控制方法
JP2014194817A (ja) 記憶装置
KR100654343B1 (ko) 플래시 메모리를 이용한 기억장치 및 그 에러 복구 방법
JP2013003655A (ja) フラッシュメモリにデータの書き込みを行う制御装置
JP2007122419A (ja) 不揮発性データ更新システム、不揮発性データ更新方法及びプログラム
JP2009211152A (ja) 情報処理装置、メモリシステムおよびその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140228

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: 20140408

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140421

R151 Written notification of patent or utility model registration

Ref document number: 5541194

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250