JP2009205689A - フラッシュディスク装置 - Google Patents
フラッシュディスク装置 Download PDFInfo
- Publication number
- JP2009205689A JP2009205689A JP2009113190A JP2009113190A JP2009205689A JP 2009205689 A JP2009205689 A JP 2009205689A JP 2009113190 A JP2009113190 A JP 2009113190A JP 2009113190 A JP2009113190 A JP 2009113190A JP 2009205689 A JP2009205689 A JP 2009205689A
- Authority
- JP
- Japan
- Prior art keywords
- data
- flash memory
- block
- written
- address
- 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.)
- Pending
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
【課題】アドレステーブルの内容の頻繁な変更をなくすと共に、特定の領域における書換え回数の増加を抑制するために、書換え回数を平準化して寿命低下を防止する。
【解決手段】ホストマシン1から指定される論理アドレスに関係なく、フラッシュメモリ20上にデータ格納用の空き領域を予め用意し、ホストマシン1からのライトデータを順次書込み、平行してバックグランドでデータの無効となったブロック21を消去していくが、その際に論理アドレスと物理アドレスの関係を保持するアドレステーブル30を、RAMのようなワード単位での書換え可能な不揮発性メモリ12に保持する。
【選択図】図1
【解決手段】ホストマシン1から指定される論理アドレスに関係なく、フラッシュメモリ20上にデータ格納用の空き領域を予め用意し、ホストマシン1からのライトデータを順次書込み、平行してバックグランドでデータの無効となったブロック21を消去していくが、その際に論理アドレスと物理アドレスの関係を保持するアドレステーブル30を、RAMのようなワード単位での書換え可能な不揮発性メモリ12に保持する。
【選択図】図1
Description
本発明は、不揮発性メモリであるフラッシュメモリを使用した半導体ディスク装置であるフラッシュディスク装置に関するものである。
従来、フラッシュディスク装置に関する技術としては、例えば、次のような文献に記載されるものがあった。
近年の不揮発性メモリの大容量化、低コスト化に伴い、不揮発性メモリを使用した半導体ディスク装置であるフラッシュディスク装置が作られるようになった。フラッシュディスク装置に一般的に使用されている大容量の不揮発性メモリ素子は、AND型/NAND型等のフラッシュメモリである。
フラッシュメモリは複数のブロックにより構成され、更にこれらの各ブロックが、複数のページにより構成されている。ページは、リード(書込み)/ライト(読出し)の単位であり、通常、磁気ディスク装置等のハードディスク装置におけるリード/ライトの最小単位であるセクタと同じ大きさで、512バイト(Byte)である。ページ内のデータを書換える場合は、通常、前データを消去した後、新たなデータを書込む。ブロックは消去の単位(一般的には16KByte)であり、書換えがこのブロック内の一部のページであっても、この1つのブロック全部を消去する必要がある。
このようなフラッシュメモリを使用したフラッシュディスク装置では、フラッシュメモリに保存されたデータが或る一定の確率でビットエラーを発生すること、及び、ブロックと呼ばれる単位で消去を行うが、各ブロック毎に消去回数の寿命が例えば10万回〜100万回の短寿命であるという制約がある。
これらの制約を解決するために、特許文献1及び特許文献2の技術では、フラッシュメモリの全領域の内、一部のブロックを故障時の代替用に用意し、又、各ページに冗長の複数ビット(bit)を付加し、誤り訂正コードやビットエラーの代替情報(ページ内でビットの代替を行う)、更にはブロックの代替情報を保持し、前記制約の解決を行っている。
しかしながら、従来のフラッシュディスク装置では、次のような課題があった。
フラッシュディスク装置をコンピュータシステムの2次記憶装置(補助記憶装置或いは外部記憶装置)として使用すると、オペレーティングシステム(OS)、アプリケーションプログラム、データ等が保存され、ディスク上の任意の箇所がリード/ライトされる。通常、こうしたコンピュータシステムでのライトは、特定の記憶領域に集中する。この場合、書込みが行われている記憶領域のブロックと、代替ブロックとして用意した分のブロックしかライトに使用できない。例えば、ブロック書換え制限が10万回の一般的なNAND型のフラッシュメモリを使用した場合、代替ブロックが20ブロックで、ライトが10ブロックに集中した場合は、30ブロック×10万回=300万回のライトしか出来ず、コンピュータシステムの寿命のネックとなる。
フラッシュディスク装置をコンピュータシステムの2次記憶装置(補助記憶装置或いは外部記憶装置)として使用すると、オペレーティングシステム(OS)、アプリケーションプログラム、データ等が保存され、ディスク上の任意の箇所がリード/ライトされる。通常、こうしたコンピュータシステムでのライトは、特定の記憶領域に集中する。この場合、書込みが行われている記憶領域のブロックと、代替ブロックとして用意した分のブロックしかライトに使用できない。例えば、ブロック書換え制限が10万回の一般的なNAND型のフラッシュメモリを使用した場合、代替ブロックが20ブロックで、ライトが10ブロックに集中した場合は、30ブロック×10万回=300万回のライトしか出来ず、コンピュータシステムの寿命のネックとなる。
又、フラッシュディスク装置における或るブロック中の或るページへデータをライトする場合、通常は、該当するページの前データを消去してから新たなデータをライトする必要がある。この際、ライトデータ量が小さい場合でも、当該ページを含むブロック全体のデータの消去が必要(ブロック単位の消去が必要)となり、当該ブロックでライトを行わない部分(ページ)についても消去前のデータを再びライトする必要がある。一般的なNAND型フラッシュメモリを使用したフラッシュディスク装置の場合、1ページのリードは100μs程度で完了するが、ライトは10ms以上掛かる。
一方でこうした問題を解決するために、特許文献3、4では、ホストの中央処理装置(以下「CPU」という。)から指定される論理アドレスに関係無く、フラッシュディスク装置内に空き領域を予め用意し、ホストCPUから指定されるライトデータの論理アドレスを、アドレステーブル(論理アドレスを実アドレスに変換するためのデーブル)により、フラッシュメモリ上の空き領域の物理アドレスに変換し、この物理アドレスの空き領域にライトデータを順次書込んでいく方式が提案されている。しかし、この方式では、論理アドレスとフラッシュメモリ上の物理アドレスとの関係が頻繁に変化するために、その都度、アドレステーブルの内容を変更する必要がある。そのため、特許文献3の技術では、バッテリバックアップを行って、フラッシュメモリの特定の領域にアドレステーブルを退避し、特許文献4の技術では、既に書込まれている箇所への上書きが複数回可能な特殊なフラッシュメモリを使用することで対処しているが、何れも不利不便であって実現にあたっての制約となっている。
本発明は、前記従来技術の課題を解決し、アドレステーブルの内容の頻繁な変更をなくすと共に、特定の領域における書換え回数の増加を抑制するために、装置全体の書換え回数を平準化して寿命低下を防止出来るフラッシュディスク装置を提供することを目的とする。
本発明の内の請求項1に係る発明のフラッシュディスク装置では、物理アドレスが付された複数のデータ格納用のページにより構成されるブロックを複数有し、前記ページ単位でデータの書込みと読出しが行われ、前記ブロック単位でデータの消去を行った後にその消去されたブロック中の所定のページに対してデータの書込みが行われるフラッシュメモリと、ホストからの命令に基づいて装置全体を制御し、且つ、前記ホストから指定される論理アドレスを前記物理アドレスに変換するためのアドレステーブルを生成して前記フラッシュメモリの特定領域に保存させる制御手段とを備えている。
そして、前記論理アドレスに関係無く前記フラッシュメモリ上にデータ格納用の空き領域を予め用意し、この用意された空き領域に前記ホストからのデータを順次書込み、且つ、前記アドレステーブルの変更は前記制御手段にて行い、その変更後のアドレステーブルを前記フラッシュメモリの特定領域にログのように順次追加する構成にしている。
ここで、前記ログとは、データベース管理等で使用しているログと同じ概念である。例えば、データベースのデータを書換える場合、実際のデータを書換えるのと同時に、「どの場所のデータをどの値で書換えた」という情報を残すが、これがログと呼ばれるものであり、ログ用の領域にライトデータをどんどん追加していき、ライトデータが壊れた場合でもログを用いてそのデータを復元出来る。本発明において、アドレステーブルを収めるには、フラッシュメモリの特性上、頻繁な書換えを行うと寿命が低下するので、消去してから書込むのではなく、変更した情報をログとして追加していって従来の課題を解決している。
請求項2に係る発明のフラッシュディスク装置では、請求項1と同様のフラッシュメモリ及び制御手段を備え、前記論理アドレスに関係無く前記フラッシュメモリ上にデータ格納用の空き領域を予め用意し、この用意された空き領域に前記ホストからのデータを順次書込み、且つ、前記アドレステーブルの変更は前記制御手段にて行い、その変更部分を前記フラッシュメモリの特定領域にログのように順次追加する構成にしている。
請求項3に係る発明のフラッシュディスク装置では、請求項1と同様のフラッシュメモリと、ホストからの命令に基づいて装置全体を制御する制御手段とを備え、前記ホストから指定される論理アドレスに関係無く前記フラッシュメモリ上にデータ格納用の空き領域を予め用意し、この用意された空き領域に前記ホストからのデータと前記論理アドレスの情報とを順次書込み、且つ、装置立上げ時に、前記制御手段により、前記フラッシュメモリに書込まれた前記論理アドレスの情報に基づき、前記論理アドレスを前記物理アドレスに変換するためのアドレステーブルを生成し、このアドレステーブルを用いて前記フラッシュメモリに対するアクセス制御を行う構成にしている。
即ち、請求項3に係る発明では、データをフラッシュメモリに書込む際に、一緒に論理アドレスの情報を保持することにより、アドレステーブルの頻繁な内容の変更を抑制する。
請求項4に係る発明のフラッシュディスク装置では、請求項1又は2記載のフラッシュディスク装置において、前記ブロックを管理するブロック管理テーブルを設け、前記ブロック管理テーブルに前記ブロックの書換え数の値を保持し、次に消去すべきブロックの選択に使用する構成にしている。
請求項5に係る発明のフラッシュディスク装置では、請求項3記載のフラッシュディスク装置において、前記データを前記フラッシュメモリのブロックに書込む際に、同時に当該ブロックに書換え数の値を保持し、次に消去すべきブロックの選択に使用する構成にしている。
即ち、請求項4、5に係る発明では、特定領域だけに書換えが集中しないように書換え回数の平準化を行うために、データをフラッシュメモリのブロックに書込む際に、同時に当該ブロックに書換え回数の値を保持し、次に消去すべきブロックの選択に使用する。
請求項6に係る発明のフラッシュディスク装置では、請求項1〜5のいずれか1項に記載のフラッシュディスク装置において、前記複数のページを纏めた或る大きさの単位でアクセス制御を行う構成にしている。
請求項7に係る発明のフラッシュディスク装置では、請求項1と同様のフラッシュメモリと、ホストから指定される論理アドレスを前記物理アドレスに変換するための情報が記録されたアドレステーブルを用いて、前記フラッシュメモリに対するデータの書込み及び読出しを制御する制御手段とを備え、前記複数のブロックにおける書換え回数に所定の差が生じたときに、書換え回数の少ないブロックのデータを他の空きブロックにコピーし、このブロックを使用可能にする構成にしている。
即ち、請求項7に係る発明では、OS等のように更新が行われずに固定されているデータを保持するフラッシュメモリのブロックを有効に使用するために、書換え回数に或一定の差が生じた時に、書換え回数の少ないブロックのデータを他の空きブロックにコピーし、この固定されているデータを保持していたブロックを使えるようにすることにより、全体の書換え回数の平準化を行う。
請求項1に係る発明によれば、フラッシュメモリの特定領域に、アドレステーブルをログのように順次追加するようにしているので、アドレステーブルの変更をフラッシュメモリに追加して行くことにより、高価なワード単位での書換え可能な不揮発性メモリを削除し、コストを削減することが出来る。
請求項2に係る発明によれば、フラッシュメモリの特定領域に、アドレステーブルの差分のみをログのように順次追加するようにしているので、アドレステーブルの変更部分のログ(アドレステーブルログ)を、フラッシュメモリに保存する構成により、ホストからのライトが特定のセクタに集中した場合でも、アドレステーブルログのフラッシュメモリ上のエリアは均一に書換えられ、特定エリアの消耗を防ぐことが出来る。
請求項3に係る発明によれば、データをフラッシュメモリに書込む際に一緒に論理アドレスの情報を保持して、立上げ時にアドレステーブルを構成することにより、アドレステーブルの保存を無くすようにしているので、アドレステーブルやアドレステーブルログをフラッシュメモリに書出すためのオーバヘッドを削除出来、しかも、データとアドレス等の情報がフラッシュメモリの1つのページに同時に書込まれるため、常に整合が保たれる。更に、フラッシュメモリの上書きの回数制限に制約されずに、使用するフラッシュメモリを選択することが出来る。
請求項4に係る発明によれば、書換え回数の平準化を行うため、ブロック管理テーブルに書換え数の値を保持し、次に消去すべきブロックの選択に使用するようにしているので、各ブロックの書換え回数を管理して書換え回数の少ないブロックから使用することにより、各ブロックの消耗を均一化して、フラッシュディスク装置の寿命を延ばすことが出来る。
請求項5に係る発明によれば、書換え回数の平準化を行うため、データをフラッシュメモリのブロックに書込む際に同時に当該ブロックに書換え数の値を保持し、次に消去すべきブロックの選択に使用するようにしているので、フラッシュメモリ上のブロック管理テーブルの書換えがブロック故障の時に限られ、ホストからの通常のデータの書込みではブロック管理テーブルの書換えが発生しなくなるため、オーバヘッドが削減される。
請求項6に係る発明によれば、複数のセクタを纏めてリード/ライトの単位として、アドレステーブルの圧縮を行うようにしているので、複数のセクタを1つの纏まりとして管理することにより、高価なワード単位での書換え可能な不揮発性メモリの使用量を削減することが出来る。更に、サイズの大きいリード/ライトの処理を、1つの或る大きさ(以下「チャンク」という。)分のデータを一緒にフラッシュメモリにリード/ライトすることにより、オーバヘッドを削減することが出来る。
請求項7に係る発明によれば、更新が行われずに固定されているデータを保持するフラッシュメモリのブロックを有効に使用するため、書換え回数に或る一定の差が生じた時に、書換え回数の少ないブロックのデータを他の空きブロックにコピーし、このブロックを使えるようにしたので、最初のインストール以降、ホストから更新されないフラッシュメモリの領域があった場合、そのデータが書込まれていたフラッシュメモリの領域も、運用中に順次ホストから更新されるデータの領域として使えるようになる。よって、本フラッシュディスク装置の書換え回数の全体量が増大する。
本発明のフラッシュディスク装置では、フラッシュメモリと、制御手段とを備えている。前記フラッシュメモリでは、物理アドレスが付された複数のデータ格納用のページにより構成されるブロックを複数有し、前記ページ単位でデータの書込みと読出しが行われ、前記ブロック単位でデータの消去を行った後にその消去されたブロック中の所定のページに対してデータの書込みが行われる。前記制御手段では、ホストから指定される論理アドレスを前記物理アドレスに変換するためのアドレステーブルを用いて、前記フラッシュメモリに対するデータの書込み及び読出しを制御する。前記アドレステーブルは、ワード単位での書換え可能な不揮発性メモリ、或いは前記フラッシュメモリに保存されている。又は、前記アドレステーブルは、前記フラッシュメモリに書込まれた論理アドレスの情報に基づいて前記制御手段により生成される。
(構成)
図1(A)、(B)は本発明の実施例を示すフラッシュディスク装置の概略の構成図であり、同図(A)は全体の構成図、及び同図(B)は同図(A)中のフラッシュメモリの概略の構成図である。
図1(A)、(B)は本発明の実施例を示すフラッシュディスク装置の概略の構成図であり、同図(A)は全体の構成図、及び同図(B)は同図(A)中のフラッシュメモリの概略の構成図である。
図1(A)において、ホストCPU等のホストマシン1には、ホストのインタフェース(以下)「I/F」という。)バス2により、本実施例で使用されるフラッシュディスク装置10が接続されている。フラッシュディスク装置10は、装置全体を制御する制御手段である例えばマイクロプロセッサユニット(以下「MPU」という。)11を有している。MPU11は、RAM11a、読出し専用メモリ(以下「ROM」という。)11b、及び入/出力(以下「I/O」という。)ポート11c等により構成され、これには不揮発性メモリ12が接続されている。不揮発性メモリ12は、MPU11によりアクセス制御され、管理用のテーブルやリスト等を保持するために、アクセス制御が容易である随時読み書き可能なメモリ(以下「RAM」という。)等のようなワード単位での書換えの可能なメモリ構造(FRAM、MRAM等)になっている。ワード単位での書換えとは、RAM等のメモリが1回のアクセスサイクルでアクセスできるデータの単位がワードであり、これは通常8ビット(bit)や16bitといった単位のデータであり、この単位での書換えをいう。
フラッシュディスク装置10には、ホストI/Fバス2に接続されたホストI/Fコントローラ13が設けられている。ホストI/Fコントローラ13は、ホストI/Fのプロトコルを処理してホストマシン1との間でデータの授受を行う回路であり、これには内部データバス14を介してバッファメモリ15が接続されている。バッファメモリ15は、ホストマシン1からのリード/ライトデータを一時的に保存し処理するメモリである。内部データバス14には、フラッシュメモリコントローラ16が接続され、このフラッシュメモリコントローラ16に、フラッシュメモリバス17を介して1つ又は複数のフラッシュメモリ20が接続されている。
フラッシュメモリコントローラ16は、MPU11からの命令に従ってフラッシュメモリ20をアクセス制御する回路であり、データ読出し部16a、データ書込み部16b、及びブロック消去部16c等により構成されている。1つ又は複数のフラッシュメモリ20は、ホストマシン1からのライトデータを不揮発に保存するメモリである。
図1(B)において、フラッシュメモリ20は、消去の単位であるデータ格納用の複数のブロック21−N,21−(N+1),・・・を有している。各ブロック21は、リード/ライトの単位であるデータ格納用の複数のページ22−0,22−1,・・・,22−31を有している。1ページ22は、例えば、512Byte等の記憶容量を有している。このようなフラッシュメモリ20では、書換えがブロック21内の一部のページ22であっても、1つのブロック全体を消去する必要がある。
図2は、本発明の実施例1を示すものであって、図1(A)のフラッシュディスク装置10の論理構成図である。
ホストマシン1から見える(即ち、指定される)セクタアドレス(即ち、論理アドレス)25である論理セクタナンバ(以下、このナンバを「No.」という。)0,1,2,・・・,Jを、フラッシュメモリ20上の物理アドレスであるページアドレスに変換するために、図1の不揮発性メモリ12内には、アドレステーブル30が格納されている。アドレステーブル30内には、論理セクタを物理ページに変換するための複数のアドレス変換データ31−0,31−1,31−2,・・・,31−Kが格納されている。更に、不揮発性メモリ12内には、フラッシュメモリ20内の空きページを管理する空きページリスト32と、フラッシュメモリ20内のブロック21−0,21−1,・・・,21−Lを管理するブロック管理テーブル33とが格納されている。フラッシュメモリ20に格納される複数のブロック21−0〜21−Lは、それぞれ複数のページ22−0,22−1,・・・,22−Mを有している。
本実施例1では、不揮発性メモリ12内にアドレステーブル30を用意し、ホストマシン1から見えるセクタアドレスである論理セクタNo.から、フラッシュメモリ20上の物理的なページNo.への写像を保持する。フラッシュメモリ20には、余分なページ22−iを複数用意し、空きページリスト32に登録して管理する。
(動作)
フラッシュメモリ20からのリード動作(1)、フラッシュメモリ20へのライト動作(2)、フラッシュメモリ20のガベージコレクション動作(3)、及びその他の動作(4)を説明する。
フラッシュメモリ20からのリード動作(1)、フラッシュメモリ20へのライト動作(2)、フラッシュメモリ20のガベージコレクション動作(3)、及びその他の動作(4)を説明する。
(1) リード動作
図3は、図2のフラッシュディスク装置10のリード動作を示すフローチャートである。
図3は、図2のフラッシュディスク装置10のリード動作を示すフローチャートである。
ホストマシン1からの指示に従い、フラッシュメモリ20の記憶データをリードする場合、MPU11の制御によって次のような処理が行われる。
リード処理が開始されると、ステップS1において、ホストマシン1から指定された論理アドレス25である論理セクタNo.(例えば、論理セクタNo.1)を得る。この論理セクタNo.1は、ホストI/Fコントローラ13を介してMPU11へ送られる。ステップS2において、MPU11は、不揮発性メモリ12内のアドレステーブル30から、指定された論理セクタNo.1に対応する物理ページNo.(例えば、アドレス変換データ31−1)を得て、これに対応するブロック(例えば、21−0)内のページNo.(例えば、22−0)を得る。このページNo.がフラッシュメモリコントローラ16へ送られる。
ステップS3において、フラッシュメモリコントローラ16内のデータ読出し部16aでは、ページNo.(22−0)の記憶データを読出し、バッファメモリ15に一時的に保存する。ステップS4において、バッファメモリ15に保存されたリードデータは、ホストI/Fコントローラ13及びホストI/Fバス2を介してホストマシン1へ転送される。これにより、リード処理が終了する。
(2) ライト動作
図4は、図2のフラッシュディスク装置10のライト動作を示すフローチャートである。
図4は、図2のフラッシュディスク装置10のライト動作を示すフローチャートである。
ホストマシン1からの指示に従い、このホストマシン1からの書込みデータをフラッシュメモリ20にライトする場合、MPU11の制御によって次のような処理が行われる。
ライト処理が開始されると、ステップS11において、ホストI/Fコントローラ13は、ホストマシン1から論理アドレス25である論理セクタNo.(例えば、論理セクタNo.1)と書込みデータを受取る。受取った論理セクタNo.1及び書込みデータの内、論理セクタNo.はMPU11へ送られ、書込みデータは一時的にバッファメモリ15に保存される。ステップS12において、MPU11は、不揮発性メモリ12内の空きページリスト32より、使えるブロック(例えば、21−L)内のページNo.(例えば、22−i)を得て、フラッシュメモリコントローラ13内のデータ書込み部11bへ送る。
ステップS13において、データ書込み部11bは、バッファメモリ15に保存された書込みデータを、当該ページNo.(22−i)のフラッシュメモリ箇所に書込む。MPU11は、ステップS14において、空きページリスト32より当該ページNo.(22−i)を削除すると共に、次のステップS15において、アドレステーブル30上の写像を変更(即ち、アドレス変換データを更新)し、ライト処理を終了する。
(3) ガベージコレクション動作
図5は、図2のフラッシュディスク装置10のガベージコレクション動作を示すフローチャートである。
図5は、図2のフラッシュディスク装置10のガベージコレクション動作を示すフローチャートである。
ライトを行っていると、フラッシュメモリ20内の空いているページが無くなるので、一定量の空きページを確保するために、定期的にガベージコレクションが行われる。ホストマシン1からのアクセスが一定時間無いときや、フラッシュメモリ20内の空きページが一定量以下になったときに、MPU11の制御によって次のようなガベージコレクション処理が行われる。
ガベージコレクション処理が開始されると、MPU11は、ステップS21において、各ページの状態を示すリスト(一時ページリスト)を作成する。ステップS22において、アドレステーブル30で使用されていないページに該当する一時ページリストに未使用フラグを立てる。ステップ23において、一時ページリストより、全てのページ22−0〜22−Mが未使用のブロック21を検索し、ブロック消去部16cで消去し、該当ページ22−0〜22−Mのフラグを消去済みにし、空きページリスト32に追加する。MPU11は、ステップS24において、空きページ22が一定量以上か否かを判定し、イエスのときには、ガベージコレクション処理を終了し、ノーのときには、結合子1を介してステップS25へ進む。
MPU11は、ステップS25において、一時ページリストより、未使用ページ22の多いブロック21を検索する。ステップS26において、当該ブロック21の有効なページ22のデータを読出し、一時ページリストで未使用のフラグを立てる。MPU11は、ステップS27において、読出したデータを空きページリスト32で書込み可能なページ22を見つけて書出し、空きページリスト32、及びアドレステーブル30を更新し、結合子2を介してステップS23へ戻り、上記の処理を繰返す。
このように、ガベージコレクション処理では、アドレステーブル30上で無効となったページ22を検索し、或ブロック21中の全てのページ22−0〜22−Mが無効である場合は、そのブロック21を消去し、当該ページ22−0〜22−Mを空きページリスト32に登録する。全てのページ22−0〜22−Mが無効であるようなブロック21が見つからない場合、一部の有効ページ22のデータを空きページ22に転送して、アドレステーブル30、及び空きページリスト32の整合をとる。こうして全てのページ22−0〜22−Mが無効になったところで、ブロック消去部16cによりブロック21の消去を行う。
(4) その他の動作
フラッシュメモリ20のブロック21の故障は、消去時又は書込み時に発生するが、フラッシュメモリ20からMPU11へエラーステータスが返ることで検出される。MPU11では、ブロック21の故障があった場合は、ブロック管理デーブル33に故障であることを示すフラグを立て、以降そのブロック21を使用しないように管理する。
フラッシュメモリ20のブロック21の故障は、消去時又は書込み時に発生するが、フラッシュメモリ20からMPU11へエラーステータスが返ることで検出される。MPU11では、ブロック21の故障があった場合は、ブロック管理デーブル33に故障であることを示すフラグを立て、以降そのブロック21を使用しないように管理する。
なお、アドレステーブル30、空きページリスト32、及びブロック管理テーブル33は、ワード単位での書換えの可能なFRAM、MRAM等の不揮発性メモリ12に保存されるので、任意のタイミングで電源をオフしても、データが損なわれることは無い。
(効果)
本実施例1では、ホストマシン1からフラッシュメモリ20内の特定の領域にライトアクセスが集中する場合でも、そのフラッシュメモリ20内の特定の領域が、他の領域よりも摩耗することを防止することが出来る。これにより、フラッシュディスク装置全体の寿命低下を抑制出来る。
本実施例1では、ホストマシン1からフラッシュメモリ20内の特定の領域にライトアクセスが集中する場合でも、そのフラッシュメモリ20内の特定の領域が、他の領域よりも摩耗することを防止することが出来る。これにより、フラッシュディスク装置全体の寿命低下を抑制出来る。
実施例1では、フラッシュメモリ全体の容量が大きくなった場合、不揮発性メモリ12内に格納されるアドレステーブル30も大きくなるが、一般にワード単位での書換え可能な不揮発性メモリはビットコストが高いため、フラッシュディスク装置10が高価となる。又、通常のコンピュータシステムでは、ディスク装置へのアクセス単位が4セクタや16セクタ等、決まっている場合があるが、この場合、セクタ単位(即ち、ページ単位)でディスク管理を行うと、オーバヘッドが大きくなる。ここで、オーバヘッドとは、例えば、コンピュータがユーザプログラムを実行するに際して、直接的な関わりを持たない記憶領域や処理時間のことをいう。
そこで、本実施例2では、オーバヘッドを小さくするために、複数のセクタを纏めてディスク管理をする構成にしている。
(構成)
図6は、本発明の実施例2を示すものであって、図1(A)のフラッシュディスク装置10の論理構成図である。
図6は、本発明の実施例2を示すものであって、図1(A)のフラッシュディスク装置10の論理構成図である。
複数のセクタ(又はページ)を纏めてチャンクという単位で管理するために、ホストマシン1からフラッシュメモリ20へのリード/ライトをチャンク単位にしている(即ち、ホストマシン1の論理アドレス25Aにおいて、複数の論理セクタを纏めて論理チャンクという単位でアクセスする構成にしている)。不揮発性メモリ12内には、アドレステーブル30A、及び空きチャンクリスト32Aが格納されている。アドレステーブル30A内には、ホストマシン1から指定される論理チャンクを、フラッシュメモリ20上の物理アドレスである物理チャンクに変換するための複数のアドレス変換情報が格納されている(即ち、チャンクに対する写像を持っている)。空きチャンクリスト32Aは、データの書込まれていない物理チャンクのリストである。
フラッシュメモリ20は、消去の単位であるデータ格納用の複数のフラッシュブロック(以下「Flashブロック」という。)21A−0,21A−1,・・・を有している。各Flashブロック21A−0,21A−1,・・・は、複数のページを纏めた物理チャンクを複数有している。
(動作)
フラッシュメモリ20からのリード動作(1)、及びフラッシュメモリ20へのライト動作(2)を説明する。
フラッシュメモリ20からのリード動作(1)、及びフラッシュメモリ20へのライト動作(2)を説明する。
(1) リード動作
図7は、図6のフラッシュディスク装置10のリード動作を示すフローチャートである。
図7は、図6のフラッシュディスク装置10のリード動作を示すフローチャートである。
ホストマシン1からの指示に従い、フラッシュメモリ20の記憶データをリードする場合、MPU11の制御によって次のような処理が行われる。
リード処理が開始されると、ステップS31において、ホストマシン1から指定された論理セクタNo.をMPU11で得る。ステップS32において、MPU11は、論理セクタNo.を含む論理チャンクNo.より、アドレステーブル30Aで物理チャンクNo.を得る。ステップS33において、MPU11は、フラッシュメモリ20における物理チャンクのデータを読出し、バッファメモリ15に一時保存する。ステップS34において、ホストマシン1の要求する論理セクタNo.に該当するデータが、バッファメモリ15からホストマシン1へ転送され、リード処理が終了する。
(2) ライト動作
図8は、図6のフラッシュディスク装置10のライト動作を示すフローチャートである。
図8は、図6のフラッシュディスク装置10のライト動作を示すフローチャートである。
ホストマシン1からの指示に従い、このホストマシン1からの書込みデータをフラッシュメモリ20にライトする場合、MPU11の制御によって次のような処理が行われる。
ライト処理が開始されると、ステップS41において、ホストマシン1より論理セクタNo.と書込むデータとをMPU11で受取る。ステップS43において、MPU11は、フラッシュメモリ20における物理チャンクのデータを読出し、バッファメモリ15に一時保存する。ステップS44において、MPU11は、読出したデータの論理セクタNo.に該当する箇所を、ホストマシン1から受取ったデータで書換える(即ち、一部の書換えであるモディファイを行う)。ステップS45において、MPU11は、空きチャンクリスト32Aを検索し、データを物理チャンクに書戻し、空きチャンクリスト32A、及びアドレステーブル30Aを更新する。このように、ライトの場合は、バッファメモリ15上で当該物理チャンクのリード/モディファイ/ライトが行われ、ライト処理が終了する。
(効果)
本実施例2では、複数のセクタを1つの纏まりとして管理することにより、高価なワード単位での書換え可能な不揮発性メモリ12の使用量を削減することが出来る。更に、サイズの大きいリード/ライトの処理を、1つのチャンク分のデータを一緒にフラッシュメモリ20にリード/ライトすることにより、オーバヘッドを削減することが出来る。
本実施例2では、複数のセクタを1つの纏まりとして管理することにより、高価なワード単位での書換え可能な不揮発性メモリ12の使用量を削減することが出来る。更に、サイズの大きいリード/ライトの処理を、1つのチャンク分のデータを一緒にフラッシュメモリ20にリード/ライトすることにより、オーバヘッドを削減することが出来る。
実施例1、2では、アドレステーブル30,30Aやブロック管理テーブル33を保存するために、高価なワード単位での書換え可能な不揮発性メモリ12を使用している。低コスト化を図るための対策として、不揮発性メモリ12を削除することが考えられる。しかし、アドレステーブル30,30Aは更新が頻繁なため、そのままではアドレステーブル30,30Aを保存するエリアが書換え制限のネックになり、又、その書換えのオーバヘッドが発生する。
フラッシュメモリ20は、消去状態の値が“1”で、そこに“0”を書込むか、そのままにするかにより、値を保持する特徴を有している。そこで、このような特徴を使い、本実施例3では、アドレステーブル30の更新を行い、低コスト化を図ろうとしている。
(構成)
図9は、本発明の実施例3を示すものであって、図1(A)のフラッシュディスク装置10に用いられるアドレステーブル30Bの論理構成図である。
図9は、本発明の実施例3を示すものであって、図1(A)のフラッシュディスク装置10に用いられるアドレステーブル30Bの論理構成図である。
このアドレステーブル30Bは、MPU11内の揮発性メモリであるRAM11aに形成され、その内容がフラッシュメモリ20の割当てられたエリアに保存される。即ち、ホストマシン1から指定される各論理チャンクN,N+1,N+2,・・・に対して、フラッシュメモリ20の物理チャンクNo.を保持するワードを複数用意する。最初は確定している物理チャンクを1つ保持し、その他は値“1”で埋める。このようなアドレステーブル30Bを、そのままフラッシュメモリ20の割当てられたエリアに保存する構成になっている。
(動作)
図10は、図9のアドレステーブル30Bの更新動作を示すフローチャートである。
図10は、図9のアドレステーブル30Bの更新動作を示すフローチャートである。
書換えによりアドレステーブル30Bを更新する場合、MPU11の制御によって次のような処理が行われる。
更新処理が開始されると、ステップS51において、MPU11は、RAM11a上のアドレステーブル30Bにおける論理チャンク(例えば、図9のチャンクNo.N+2)において、物理チャンクNo.を追加する場所が余っているか否かを判定する。論理チャンクN+2では、物理チャンクNo.を追加する場所(消去状態の“1”の領域)が余っているので、ステップS52において、RAM11a上のアドレステーブル30Bで当該論理チャンクの行(図9の横軸)に物理チャンクNo.(例えば、物理チャンクのデータ010・・・)を追加する。その後、ステップS53において、更新されたRAM11aの箇所に該当するフラッシュメモリ20のページを上書きする。つまり、フラッシュメモリ20への書込みの最小単位で、更新のあった箇所を含むアドレステーブル30Bの一部を書込む。その結果、フラッシュメモリ20の特徴により、消去無しで追加された物理チャンクNo.を保存でき、更新処理が終了する。
ステップS51において、論理チャンクN,N+1,N+2,・・・の内の一部の行で、物理チャンクを保持する場所が無くなった場合は、ステップS54へ進む。ステップS54において、MPU11は、RAM11a上で更新すべき箇所に該当するフラッシュメモリ20上のブロックNo.(例えば、図2の21−0)を得る。ステップS55において、MPU11は、当該ブロックNo.21−0に該当するRAM11a上のアドレステーブル30Bのエリア(例えば、図9の論理チャンクN)を、最新の物理チャンク1つを残してクリアする(“1”を書込む)。その後、ステップS56において、MPU11は、フラッシュメモリ20の当該ブロック21−0を消去し、該当するRAM11a上のアドレステーブル30Bを書込む。
このように、一部の行で物理チャンクを保持する場所が無くなった場合は、ステップS54〜S56の処理において、RAM11a上の最初の状態(物理チャンクを1つだけ保持している状態)にし、フラッシュメモリ20の消去・書込みを行う。なお、この時にはフラッシュメモリ20の消去単位の大きさに該当するアドレステーブル30Bの各項目を最初の状態にする。これにより、更新処理が終了する。
ここで、フラッシュメモリ20のブロック21−0,・・・を管理するブロック管理テーブル(例えば、図2の33)は、更新の頻度がブロックの故障発生時に限られるため、更新の度にフラッシュメモリ20の割当てられた領域を消去して書出す。
又、本フラッシュディスク装置10の立上げ時は、MPU11により、フラッシュメモリ20に保存されているアドレステーブル30Bとブロック管理テーブル(例えば、図2の33)とを読出してRAM11a上に置く。空きページリスト(例えば、図2の32)は、アドレステーブル30Bを検索して割当てられていない物理チャンクを見つけることにより、RAM11a上に構成する。
(効果)
本実施例3では、アドレステーブル30Bの変更をフラッシュメモリ20に追加して行くことにより、高価なワード単位での書換え可能な不揮発性メモリ12を削除し、コストを削減することが出来る。
本実施例3では、アドレステーブル30Bの変更をフラッシュメモリ20に追加して行くことにより、高価なワード単位での書換え可能な不揮発性メモリ12を削除し、コストを削減することが出来る。
実施例3では、特定のセクタに書換えが集中した場合に、フラッシュメモリ20上のアドレステーブル30Bの消去・書込みが頻繁に発生し、書換え回数・性能のネックとなる。
そこで、本実施例4では、アドレステーブル30Bの更新の際、その変更部分のみログのように保存する。
(構成)
図11は、本発明の実施例4で用いられるアドレステーブルログの論理構成図である。
図11は、本発明の実施例4で用いられるアドレステーブルログの論理構成図である。
本実施例4において、アドレステーブル30Cは、初期状態では実施例1での基本となる形式のもの(図2のアドレステーブル30)をRAM11aとフラッシュメモリ20上に保持する。更に、図11に示すように、論理チャンクから物理チャンクへの変換データを有するアドレステーブルログ34を、RAM11a上に構成し、これを保存するためのエリアをフラッシュメモリ20上に用意する。これらのアドレステーブル30C及びアドレステーブルログ34は、MPU11によって更新される。
(動作)
MPU11の制御により次のようにして、アドレステーブル30Cの更新動作(1)と、定期的に実施する動作(2)とが行われる。
MPU11の制御により次のようにして、アドレステーブル30Cの更新動作(1)と、定期的に実施する動作(2)とが行われる。
(1) アドレステーブル30Cの更新動作
図12は、図11のアドレステーブル30Cの更新動作を示すフローチャートである。
図12は、図11のアドレステーブル30Cの更新動作を示すフローチャートである。
アドレステーブル30Cの更新処理が開始されると、ステップS61において、RAM11a上のアドレステーブル30Cで物理チャンクNo.を更新する。ステップS61において、論理チャンクと物理チャンクの対を、RAM11a上のアドレステーブルログ34における“1”の領域に追加する。ステップS63において、追加されたログに該当するフラッシュメモリ20上のページに上書きする。
このように、アドレステーブル30Cが更新される場合は、RAM11a上の項目は更新するが、フラッシュメモリ20上の項目は更新しない。その代わり、更新された論理チャンクと物理チャンクの対をログの1つの項目として、RAM11a上のアドレステーブルログ34に追加し、それをフラッシュメモリ20に書込む。これにより、更新処理が終了する。
(2) 定期的に実施する動作
図13は、図11の定期的に実施する動作を示すフローチャートである。
図13は、図11の定期的に実施する動作を示すフローチャートである。
定期的に実施する動作処理が開始されると、ステップS65において、フラッシュメモリ20上のアドレステーブル30Cとアドレステーブルログ34のエリアを消去する。ステップS66において、RAM11a上のアドレステーブル30Cのデータをフラッシュメモリ20に書出す。その後、ステップS67において、RAM11a上のアドレステーブルログ34のエリアをクリアする(“1”を書込む)。
このように、定期的にRAM11a上のアドレステーブル30Cのデータをフラッシュメモリ20に消去・書込みを行い、同時にRAM11a上、フラッシュメモリ20上のアドレステーブルログ34のクリアを行う(RAM11a上は“1”で埋め、フラッシュメモリ20は消去を行う)。これにより、処理が終了する。
なお、本フラッシュディスク装置10の立上げ時には、RAM11a上に、先ずフラッシュメモリ20に保存されているアドレステーブル30Cのデータを読込んだ後、フラッシュメモリ20上のアドレステーブルログ34を読出し、RAM11a上で値を更新することにより、電源オフ直前のアドレステーブル30Cを復元することが出来る。
(効果)
本実施例4では、アドレステーブル30Cの変更部分のログ(アドレステーブルログ34)を、フラッシュメモリ20に保存するようにしているので、ホストマシン1からのライトが特定のセクタに集中した場合でも、アドレステーブルログ34のフラッシュメモリ20上のエリアは均一に書換えられるため、特定エリアの消耗を防ぐことが出来る。
本実施例4では、アドレステーブル30Cの変更部分のログ(アドレステーブルログ34)を、フラッシュメモリ20に保存するようにしているので、ホストマシン1からのライトが特定のセクタに集中した場合でも、アドレステーブルログ34のフラッシュメモリ20上のエリアは均一に書換えられるため、特定エリアの消耗を防ぐことが出来る。
実施例1〜4までの構成では、フラッシュメモリ20上のアドレステーブル30,30A,30B,30Cやアドレステーブルログ34の更新にオーバヘッドが伴い、又、データの更新とアドレステーブル30,30A,30B,30Cやアドレステーブルログ34の更新タイミングが異なるために、その間に電源が切れる等の際に整合が取れなくなる場合がある。又、フラッシュメモリ20の種類によってはページへの上書き回数に制約が有るものがある。
そこで、これらを解決するために、本実施例5では、フラッシュメモリ20上のアドレステーブル30,30A,30B,30Cやこのアドレステーブルログ34を不要とする構成にしている。
(構成)
図14(A)、(B)は、本発明の実施例5を示す論理構成図であり、同図(A)はRAM上のアドレステーブルの構成図、及び同図(B)はフラッシュメモリ上の1ページの内容を示す構成図である。
図14(A)、(B)は、本発明の実施例5を示す論理構成図であり、同図(A)はRAM上のアドレステーブルの構成図、及び同図(B)はフラッシュメモリ上の1ページの内容を示す構成図である。
図14(A)において、RAM11a上のアドレステーブル30Dは、図6、図9、図11の物理チャンクNo.に加え、初期化以降にその論理チャンクが何度目の更新を行ったかを示す更新No.を保存する。
図14(B)において、フラッシュメモリ20の各ページ22Aの冗長ビットは、例えば、NANDフラッシュメモリの場合は通常16Byteあり、そこに管理データを保存する。管理データには、データの誤り訂正符号等、このページに対応する論理チャンクNo.、及びこの論理チャンクNo.に対応する更新No.を保存する。なお、誤り訂正符号には、管理データに対する符号を含めることも出来る。
図14(B)において、フラッシュメモリ20の各ページ22Aの冗長ビットは、例えば、NANDフラッシュメモリの場合は通常16Byteあり、そこに管理データを保存する。管理データには、データの誤り訂正符号等、このページに対応する論理チャンクNo.、及びこの論理チャンクNo.に対応する更新No.を保存する。なお、誤り訂正符号には、管理データに対する符号を含めることも出来る。
(動作)
本フラッシュディスク装置10の立上げ時の動作(1)、及びデータ書込み時の動作(2)を説明する。
本フラッシュディスク装置10の立上げ時の動作(1)、及びデータ書込み時の動作(2)を説明する。
(1) 立上げ時の動作
図15は、図1のフラッシュディスク装置10の立上げ時の動作を示すフローチャートである。
図15は、図1のフラッシュディスク装置10の立上げ時の動作を示すフローチャートである。
フラッシュディスク装置10の立上げ時においては、MPU11aの制御によって次のような処理が行われる。
立上げ処理が開始されると、ステップS71において、物理チャンクNo.Iを値0に設定すると共に、最後の物理チャンクNo.Mを検索する。ステップS72において、I<Mか否かの判定を行い、イエスのときには立上げ処理を終了し、ノーのときにはステップS73へ進む。ステップS73において、物理チャンクIの先頭ページの論理チャンクNo.と更新No.を読出す。ステップS74において、アドレステーブル30Dの当該倫理チャンクNo.Iは登録済み且つ更新No.が大きいか否かを判定し、ノーのときにはステップS75へ進み、イエスのときにはステップS76へ進む。ステップS75において、読出した論理チャンクNo.と更新No.でアドレステーブル30Dを更新し、ステップS76において、物理チャンクNo.Iに+1加算(インクリメント)してステップS72へ戻り、上記の処理を繰返す。
このように、本フラッシュディスク装置10の立上げ時には、フラッシュメモリ20の各ページ20Aの管理データを読出し、保存されていた論理チャンクNo.に相当するアドレステーブル30D上で、物理チャンクNo.と更新No.を書込む。各ページ20Aを読出している過程で、既にアドレステーブル30D上で作成されている論理チャンクNo.と同じものがあった場合は、更新No.の大きい方を採用する。全てのページ20Aを処理し終わったところでアドレステーブル30Dが完成する。なお、チャンクのサイズがフラッシュメモリ20のページ20Aのサイズよりも大きい場合、各ページ20Aの管理データの内、論理チャンクNo.、及び更新No.はチャンクの先頭のページ20Aにのみ書込みを行い、立上げの際もそのページ20Aのみ読出すことで、高速化を図ることが出来る。
(2) データ書込み時の動作
図16は、図1のフラッシュディスク装置10におけるデータ書込み時の動作を示すフローチャートである。
図16は、図1のフラッシュディスク装置10におけるデータ書込み時の動作を示すフローチャートである。
データ書込み時においては、MPU11aの制御によって次のような処理が行われる。
データ書込み処理が開始されると、MPU11aは、ホストマシン1から指示された論理チャンクNo.に従い、ステップS81において、書込む物理チャンクNo.と更新No.をアドレステーブル30Dより求める。ステップS82において、更新No.をインクリメントし、ステップS83において、書込むデータに、論理チャンクNo.と更新No.で構成される管理データを加える。ステップS84において、データをフラッシュメモリ20に書込み、RAM11a上の空きチャンクリストを更新し、アドレステーブル30Dを新しい更新No.により更新し、データ書込み処理を終了する。
データ書込み処理が開始されると、MPU11aは、ホストマシン1から指示された論理チャンクNo.に従い、ステップS81において、書込む物理チャンクNo.と更新No.をアドレステーブル30Dより求める。ステップS82において、更新No.をインクリメントし、ステップS83において、書込むデータに、論理チャンクNo.と更新No.で構成される管理データを加える。ステップS84において、データをフラッシュメモリ20に書込み、RAM11a上の空きチャンクリストを更新し、アドレステーブル30Dを新しい更新No.により更新し、データ書込み処理を終了する。
このように、データの書込みがあった際は、アドレステーブル30Dの物理チャンクNo.を更新すると共に、更新No.をインクリメントする。そして、フラッシュメモリ20のページ20Aにデータを書込む際に、一緒に管理データを準備してフラッシュメモリ20に転送する。
(効果)
本実施例5では、フラッシュメモリ20のページ20Aの冗長ビット部分(管理データ部分)に、当該ページ20Aに対応する論理チャンクNo.と更新No.を保持することにより、実施例1〜4のようにアドレステーブル30,30A,30B,30Cやアドレステーブルログ34をフラッシュメモリ20に書出すためのオーバヘッドを削除出来、しかも、データとアドレス等の情報がフラッシュメモリ20の1つのページ22Aに同時に書込まれるため、常に整合が保たれる。更に、フラッシュメモリ20の上書きの回数制限に制約されずに、使用するフラッシュメモリを選択することが出来る。
本実施例5では、フラッシュメモリ20のページ20Aの冗長ビット部分(管理データ部分)に、当該ページ20Aに対応する論理チャンクNo.と更新No.を保持することにより、実施例1〜4のようにアドレステーブル30,30A,30B,30Cやアドレステーブルログ34をフラッシュメモリ20に書出すためのオーバヘッドを削除出来、しかも、データとアドレス等の情報がフラッシュメモリ20の1つのページ22Aに同時に書込まれるため、常に整合が保たれる。更に、フラッシュメモリ20の上書きの回数制限に制約されずに、使用するフラッシュメモリを選択することが出来る。
実施例5では、空きブロックを順番(ローテーション)で使用するため、フラッシュメモリ20内の個々のブロックの書換え回数に差が生じ、早く故障ブロックが発生する可能性があり、その結果、空き領域が少なくなり、性能が劣化する虞がある。
そこで、本実施例6では、空きブロックの使用順序として、書換え回数の少ないブロックを優先させる構成にしている。
(構成)
図17(A)、(B)は、本発明の実施例6を示すブロック管理テーブルの論理構成図であり、同図(A)はRAM上のブロック管理テーブルの論理構成図、及び同図(B)はフラッシュメモリ上のブロック管理テーブルの論理構成図である。
図17(A)、(B)は、本発明の実施例6を示すブロック管理テーブルの論理構成図であり、同図(A)はRAM上のブロック管理テーブルの論理構成図、及び同図(B)はフラッシュメモリ上のブロック管理テーブルの論理構成図である。
図17(A)のブロック管理テーブル33Aは、RAM11a上に設けられ、管理対象となる各ブロックのフラグ、書換え数、及び書換え数SUBを有している。図17(B)のブロック管理テーブル33Bは、フラッシュメモリ20上に設けられ、管理対象となる各ブロックのフラグ、及び書換え数を有している。フラグは、当該ブロックが故障かどうかを示す。書換え数は、実際の書換え回数を或数αで割った数を保持する。或数αは、例えば、100とする。書換え数SUBは、0〜αまでの書換え回数を保持する。結果として、当該ブロックの実際の書換え回数は、
書換え数×α+書換え数SUB
で示される。
書換え数×α+書換え数SUB
で示される。
(動作)
図18は、図1のフラッシュディスク装置10におけるガベージコレクションでのブロック消去時の動作を示すフローチャートである。
図18は、図1のフラッシュディスク装置10におけるガベージコレクションでのブロック消去時の動作を示すフローチャートである。
ガベージコレクションでブロックの消去が行われた時は、MPU11の制御により、次のような処理が行われる。
処理が開始されると、ステップS91において、RAM11a上のブロック管理テーブル33Aにおける消去したブロックの書換え数SUBをインクリメントする。ステップS92において、書換え数SUB>αか否かが判定され、ノーの時には処理が終了し、イエスの時にはステップS93へ進む。ステップS93において、RAM11a上のブロック管理テーブル33Aにおける書換え数をインクリメントし、書換え数SUBをクリアする。ステップS94において、フラッシュメモリ20上のブロック管理テーブル33Bを消去し、RAM11a上のブロック管理テーブル33Aを書込み、処理を終了する。
このように、本実施例6では、ガベージコレクションでブロックの消去が行われた時は、書換え数SUBのインクリメントを行う。当該ブロックの書込み・消去が何度か行われ、書換え数SUBが或数α(=100)に達した時は書換え数をインクリメントし、書換え数SUBはクリアする。この時、RAM11a上のブロック管理テーブル33Aの内、フラグと書換え数の項目をフラッシュメモリ20におけるブロック管理テーブル33Bのエリアに消去・書込みを行う。
電源オフで書換え数SUBの値は失われるが、各ブロックの書換え回数仕様10万回の内の0〜αの範囲であるため問題は無い。データへの書込みの際、書換え数と書換え数SUBより算出される書換え回数の少ないブロックから使用する。
(効果)
本実施例6では、各ブロックの書換え回数を管理して書換え回数の少ないブロックから使用することにより、各ブロックの消耗を均一化して、フラッシュディスク装置10の寿命を延ばすことが出来る。
本実施例6では、各ブロックの書換え回数を管理して書換え回数の少ないブロックから使用することにより、各ブロックの消耗を均一化して、フラッシュディスク装置10の寿命を延ばすことが出来る。
実施例6では、ホストマシン1からの書込みが多い場合に、(ブロックのデータサイズ×α)のデータの書込みに1回の割合で、フラッシュメモリ20上のブロック管理テーブル33Bの書換えが発生するため、大きなオーバヘッドになる。
そこで、本実施例7では、フラッシュメモリ20のページ内の管理データの中に書換え数に関する情報を保持する構成にしている。
(構成)
図19(A)〜(C)は、本発明の実施例7を示すブロック管理テーブル及びページの論理構成図であり、同図(A)はRAM上のブロック管理テーブルの論理構成図、同図(B)はフラッシュメモリ上のブロック管理テーブルの論理構成図、及び同図(C)はフラッシュメモリ上のページの論理構成図である。
図19(A)〜(C)は、本発明の実施例7を示すブロック管理テーブル及びページの論理構成図であり、同図(A)はRAM上のブロック管理テーブルの論理構成図、同図(B)はフラッシュメモリ上のブロック管理テーブルの論理構成図、及び同図(C)はフラッシュメモリ上のページの論理構成図である。
図19(A)のブロック管理テーブル33Cは、RAM11a上に設けられ、管理対象となる各ブロックのフラグ、及び書換え数を有している。書換え数は、当該ブロックの書換え回数の実数を表す。実施例6の図17(A)に示す管理テーブル33Aに対し、書換え数SUBが不要となる。
図19(B)のブロック管理テーブル33Dは、フラッシュメモリ20上に設けられ、管理対象となる各ブロックのフラグだけを有している。フラグは、ブロックの故障を示し、ブロックの故障があったときのみ更新される。実施例6の図17(B)に示すブロック管理テーブル33Bに対し、書換え数が不要となる。
図19(C)におけるフラッシュメモリ20上の各ページ22Bは、実施例5の図14(B)に示すページ22Aに対して、管理データに書換え数が追加されている。即ち、各ページ22Bの冗長ビットは、例えば、NANDフラッシュメモリの場合は通常16Byteあり、そこに管理データを保存する。管理データには、データの誤り訂正符号等、このページに対応する論理チャンクNo.、この論理チャンクNo.に対応する更新No.、及び新たに追加された書換え数を保存する。
(動作)
図1のフラッシュディスク装置10におけるデータ書込み時の動作(1)、及び立上げ時の動作(2)を説明する。
図1のフラッシュディスク装置10におけるデータ書込み時の動作(1)、及び立上げ時の動作(2)を説明する。
(1) データ書込み時の動作
図20は、図1のフラッシュディスク装置10におけるデータ書込み時の動作を示すフローチャートである。
図20は、図1のフラッシュディスク装置10におけるデータ書込み時の動作を示すフローチャートである。
データ書込み時においては、MPU11aの制御によって次のような処理が行われる。
ホストマシン1から与えられる論理アドレスに対するデータ書込み処理が開始されると、ステップS101において、RAM11a上のアドレステーブル(例えば、図14(A)の30D)より、書込む物理チャンクNo.と更新No.を求め、RAM11a上のブロック管理テーブル33Cより、書換え数を求める。ステップS102において、更新No.と書換え数をインクリメントする。ステップS103において、図19(C)に示すように、書込むデータに管理データとして論理チャンクNo.、更新No.、及び書換え数等を加える。その後、ステップS104において、データをフラッシュメモリ20に書込み、空きチャンクリスト(例えば、図6の32A)を更新する。更に、アドレステーブル(例えば、図14の30D)を新しい更新No.により更新し、ブロック管理テーブル33Cの書換え数を更新し、データ書込み動作を終了する。
ホストマシン1から与えられる論理アドレスに対するデータ書込み処理が開始されると、ステップS101において、RAM11a上のアドレステーブル(例えば、図14(A)の30D)より、書込む物理チャンクNo.と更新No.を求め、RAM11a上のブロック管理テーブル33Cより、書換え数を求める。ステップS102において、更新No.と書換え数をインクリメントする。ステップS103において、図19(C)に示すように、書込むデータに管理データとして論理チャンクNo.、更新No.、及び書換え数等を加える。その後、ステップS104において、データをフラッシュメモリ20に書込み、空きチャンクリスト(例えば、図6の32A)を更新する。更に、アドレステーブル(例えば、図14の30D)を新しい更新No.により更新し、ブロック管理テーブル33Cの書換え数を更新し、データ書込み動作を終了する。
このように、フラッシュメモリ20のブロックへのデータの書込みが行われる際は、フラッシュメモリ20上のページ22B中の管理データに、ブロック管理テーブル33Cから得られる当該ブロックの書換え数を付加する。
なお、ガベージコレクションでブロックの消去が行われた時は、RAM11a上のブロック管理テーブル33Cにおける当該ブロックの書換え数がインクリメントされる。
(2) 立上げ時の動作
図21は、図1のフラッシュディスク装置10における立上げ時の動作を示すフローチャートである。
図21は、図1のフラッシュディスク装置10における立上げ時の動作を示すフローチャートである。
フラッシュディスク装置10の立上げ時においては、MPU11aの制御によって次のような処理が行われる。
立上げ処理が開始されると、ステップS111において、フラッシュメモリ20上のブロック管理テーブル33Dを読出し、RAM11a上のブロック管理テーブル33C中のフラグを構成する。ステップS112において、物理チャンクNo.Iに値0を設定すると共に、最後の物理チャンクNo.の値Mを設定する。ステップS113において、I<Mか否かを判定し、イエスのときには処理を終了し、ノーのときにはステップS113へ進む。ステップS113において、物理チャンクIの先頭ページの書換え数を読出す。次に、ステップS114において、RAM11a上のブロック管理テーブル33C中の書換え数に読出した値を入れる。その後、物理チャンクNo.の値IをインクリメントしてステップS113へ戻り、上記の処理を繰返す。
このように、本フラッシュディスク装置10の立上げ時では、先ず、フラッシュメモリ20上のブロック管理テーブル33Dを読出し、RAM11a上におけるブロック管理テーブル33Cのフラグを作成した後、フラッシュメモリ20上の各ページ22Bの管理データを読出し、書換え数より、RAM11a上のブロック管理テーブル33Cにおける当該ブロックの書換え数を作成する。
(効果)
本実施例7では、フラッシュメモリ20上のブロック管理テーブル33Dの書換えがブロック故障の時に限られ、ホストマシン1からの通常のデータの書込みではブロック管理テーブル33Dの書換えが発生しなくなるため、オーバヘッドが削減される。
本実施例7では、フラッシュメモリ20上のブロック管理テーブル33Dの書換えがブロック故障の時に限られ、ホストマシン1からの通常のデータの書込みではブロック管理テーブル33Dの書換えが発生しなくなるため、オーバヘッドが削減される。
フラッシュディスク装置10をシステムで使用すると、一般に最初のインストールの時のみフラッシュメモリ20へプログラムの書込みが行われ、実際の運用ではフラッシュメモリ20において書換の行われない領域が存在する。その箇所に対応するフラッシュメモリ20上のブロック21は書換えが行われないため、一部の書換えの行われているブロックのみが消耗し、フラッシュディスク装置10としての書換え回数のネックとなる。
そこで、本実施例8では、書換えの行われないブロックを置換える構成にしている。
(構成)
図22は、本発明の実施例8における固定ブロックの内容を空きブロックに書換える様子を示す論理構成図である。
図22は、本発明の実施例8における固定ブロックの内容を空きブロックに書換える様子を示す論理構成図である。
図22において、ホストマシン1で指定される論理アドレス25の内、斜線部分の論理アドレス25−0,25−iは、書換えの行われる箇所である。又、フラッシュメモリ20のブロック21(21−0,21−1,・・・,21−14,・・・)の内、斜線部分のブロック21−0,21−1,・・・は、書換えの行われる箇所である。斜線の無い空白部分のブロック21−2,21−3,・・・は、運用中に書換えが行われていない空きブロックである。
(動作)
図23は、本フラッシュディスク装置10のブロック置換え動作を示すフローチャートである。
図23は、本フラッシュディスク装置10のブロック置換え動作を示すフローチャートである。
本フラッシュディスク装置10のブロック置換え時においては、MPU11の制御によって次のような処理が行われる。
本フラッシュディスク装置10の立上げ時にブロック管理テーブル(例えば、図2の33)が作成されたところ、及び、1回の電源オン中に装置全体で或る一定量の書換えが行われたところ(例えば、1万回毎)で、ブロック置換え処理が開始され、ステップS121へ進む。ステップS121において、ブロック管理テーブル33を検索し、有効データが埋まっているブロックで書換え数が最小のもの(例えば、21−5)と、空きブロックで書換え数が最大のもの(例えば、21−13)を求める。ステップS122において、書換え数の最大値と最小値の差が一定値(例えば、1万回)以上あるか否かを判定し、ノーのときには処理を終了し、イエスのときにはステップS123へ進む。
ステップS123において、求めた書換え数最小のブロック(例えば、21−5)よりデータを読出し、当該ブロック21−5を消去して空きブロックにする。ステップS124において、求めた最大の空きブロック(例えば、21−13)にデータを書込み、ブロック管理テーブル33の書換え数を更新する。なお、通常のデータの書込みの際は、空きブロック21−2,・・・の内の書換え回数の少ないものを使用するが、この固定ブロックの書換えの際には、書換え回数の大きな空きブロック(例えば、21−13)に対してデータを書写す。その後、ステップS125において、アドレステーブル(例えば、図6の30A)と空きチャンクリスト(例えば、図6の32A)を更新し、ブロック置換え処理を終了する。
(効果)
本実施例8では、最初のインストール以降、ホストマシン1から更新されないフラッシュメモリ20の領域が例えば50%あった場合、そのデータが書込まれていたフラッシュメモリ20の領域も、運用中に順次ホストマシン1から更新されるデータの領域として使えるようになるため、本フラッシュディスク装置10の書換え回数の全体量が2倍になる。
本実施例8では、最初のインストール以降、ホストマシン1から更新されないフラッシュメモリ20の領域が例えば50%あった場合、そのデータが書込まれていたフラッシュメモリ20の領域も、運用中に順次ホストマシン1から更新されるデータの領域として使えるようになるため、本フラッシュディスク装置10の書換え回数の全体量が2倍になる。
1 ホストマシン
10 フラッシュディスク装置
11 MPU
11a RAM
12 不揮発性メモリ
16 フラッシュメモリコントローラ
20 フラッシュメモリ
21,21−0,21−1,21A−0,21A−1,・・・ ブロック
22,22A,22B,22−0,22−1,・・・ ページ
25,25A 論理アドレス
30,30A,30B,30C,30D アドレステーブル
32,32A 空きページリスト
33,33A,33B,33C,33D ブロック管理テーブル
34 アドレステーブルログ
10 フラッシュディスク装置
11 MPU
11a RAM
12 不揮発性メモリ
16 フラッシュメモリコントローラ
20 フラッシュメモリ
21,21−0,21−1,21A−0,21A−1,・・・ ブロック
22,22A,22B,22−0,22−1,・・・ ページ
25,25A 論理アドレス
30,30A,30B,30C,30D アドレステーブル
32,32A 空きページリスト
33,33A,33B,33C,33D ブロック管理テーブル
34 アドレステーブルログ
Claims (7)
- 物理アドレスが付された複数のデータ格納用のページにより構成されるブロックを複数有し、前記ページ単位でデータの書込みと読出しが行われ、前記ブロック単位でデータの消去を行った後にその消去されたブロック中の所定のページに対してデータの書込みが行われるフラッシュメモリと、
ホストからの命令に基づいて装置全体を制御し、且つ、前記ホストから指定される論理アドレスを前記物理アドレスに変換するためのアドレステーブルを生成して前記フラッシュメモリの特定領域に保存させる制御手段とを備え、
前記論理アドレスに関係無く前記フラッシュメモリ上にデータ格納用の空き領域を予め用意し、この用意された空き領域に前記ホストからのデータを順次書込み、且つ、前記アドレステーブルの変更は前記制御手段にて行い、その変更後のアドレステーブルを前記フラッシュメモリの特定領域にログのように順次追加する構成にしたことを特徴とするフラッシュディスク装置。 - 物理アドレスが付された複数のデータ格納用のページにより構成されるブロックを複数有し、前記ページ単位でデータの書込みと読出しが行われ、前記ブロック単位でデータの消去を行った後にその消去されたブロック中の所定のページに対してデータの書込みが行われるフラッシュメモリと、
ホストからの命令に基づいて装置全体を制御し、且つ、前記ホストから指定される論理アドレスを前記物理アドレスに変換するためのアドレステーブルを生成して前記フラッシュメモリの特定領域に保存させる制御手段とを備え、
前記論理アドレスに関係無く前記フラッシュメモリ上にデータ格納用の空き領域を予め用意し、この用意された空き領域に前記ホストからのデータを順次書込み、且つ、前記アドレステーブルの変更は前記制御手段にて行い、その変更部分を前記フラッシュメモリの特定領域にログのように順次追加する構成にしたことを特徴とするフラッシュディスク装置。 - 物理アドレスが付された複数のデータ格納用のページにより構成されるブロックを複数有し、前記ページ単位でデータの書込みと読出しが行われ、前記ブロック単位でデータの消去を行った後にその消去されたブロック中の所定のページに対してデータの書込みが行われるフラッシュメモリと、
ホストからの命令に基づいて装置全体を制御する制御手段とを備え、
前記ホストから指定される論理アドレスに関係無く前記フラッシュメモリ上にデータ格納用の空き領域を予め用意し、この用意された空き領域に前記ホストからのデータと前記論理アドレスの情報とを順次書込み、且つ、装置立上げ時に、前記制御手段により、前記フラッシュメモリに書込まれた前記論理アドレスの情報に基づき、前記論理アドレスを前記物理アドレスに変換するためのアドレステーブルを生成し、このアドレステーブルを用いて前記フラッシュメモリに対するアクセス制御を行う構成にしたことを特徴とするフラッシュディスク装置。 - 請求項1又は2記載のフラッシュディスク装置において、
前記ブロックを管理するブロック管理テーブルを設け、前記ブロック管理テーブルに前記ブロックの書換え数の値を保持し、次に消去すべきブロックの選択に使用する構成にしたことを特徴とするフラッシュディスク装置。 - 請求項3記載のフラッシュディスク装置において、
前記データを前記フラッシュメモリのブロックに書込む際に、同時に当該ブロックに書
換え数の値を保持し、次に消去すべきブロックの選択に使用する構成にしたことを特徴と
するフラッシュディスク装置。 - 前記複数のページを纏めた或る大きさの単位でアクセス制御を行う構成にしたことを特徴とする請求項1〜5のいずれか1項に記載のフラッシュディスク装置。
- 物理アドレスが付された複数のデータ格納用のページにより構成されるブロックを複数有し、前記ページ単位でデータの書込みと読出しが行われ、前記ブロック単位でデータの消去を行った後にその消去されたブロック中の所定のページに対してデータの書込みが行われるフラッシュメモリと、
ホストから指定される論理アドレスを前記物理アドレスに変換するための情報が記録されたアドレステーブルを用いて、前記フラッシュメモリに対するデータの書込み及び読出しを制御する制御手段とを備え、
前記複数のブロックにおける書換え回数に所定の差が生じたときに、書換え回数の少ないブロックのデータを他の空きブロックにコピーし、このブロックを使用可能にする構成にしたことを特徴とするフラッシュディスク装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009113190A JP2009205689A (ja) | 2009-05-08 | 2009-05-08 | フラッシュディスク装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009113190A JP2009205689A (ja) | 2009-05-08 | 2009-05-08 | フラッシュディスク装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004054726A Division JP2005242897A (ja) | 2004-02-27 | 2004-02-27 | フラッシュディスク装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009205689A true JP2009205689A (ja) | 2009-09-10 |
Family
ID=41147817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009113190A Pending JP2009205689A (ja) | 2009-05-08 | 2009-05-08 | フラッシュディスク装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009205689A (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011123560A (ja) * | 2009-12-08 | 2011-06-23 | Oki Electric Industry Co Ltd | フラッシュディスク装置 |
WO2011082005A1 (en) | 2009-12-30 | 2011-07-07 | Sandisk Corporation | Micro-update architecture for address tables |
WO2013069859A1 (ko) * | 2011-11-09 | 2013-05-16 | 한양대학교 산학협력단 | 소거 대상 블록의 매핑 테이블을 저장하는 플래시 메모리 제어장치 및 방법 |
JP2014517412A (ja) * | 2011-10-05 | 2014-07-17 | 株式会社日立製作所 | ストレージシステム及びストレージ方法 |
US8924636B2 (en) | 2012-02-23 | 2014-12-30 | Kabushiki Kaisha Toshiba | Management information generating method, logical block constructing method, and semiconductor memory device |
US9026734B2 (en) | 2010-12-07 | 2015-05-05 | Kabushiki Kaisha Toshiba | Memory system and data deleting method |
JP2016212712A (ja) * | 2015-05-12 | 2016-12-15 | 東芝情報システム株式会社 | Nand型フラッシュメモリを用いた記憶装置及びnand型フラッシュメモリの使用方法 |
CN111078136A (zh) * | 2019-10-22 | 2020-04-28 | 安徽力高新能源技术有限公司 | 一种防止BMS动态数据存储导致flash寿命降低的方法 |
-
2009
- 2009-05-08 JP JP2009113190A patent/JP2009205689A/ja active Pending
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011123560A (ja) * | 2009-12-08 | 2011-06-23 | Oki Electric Industry Co Ltd | フラッシュディスク装置 |
WO2011082005A1 (en) | 2009-12-30 | 2011-07-07 | Sandisk Corporation | Micro-update architecture for address tables |
US8335907B2 (en) | 2009-12-30 | 2012-12-18 | Sandisk Technologies Inc. | Micro-update architecture for address tables |
US9026734B2 (en) | 2010-12-07 | 2015-05-05 | Kabushiki Kaisha Toshiba | Memory system and data deleting method |
JP2014517412A (ja) * | 2011-10-05 | 2014-07-17 | 株式会社日立製作所 | ストレージシステム及びストレージ方法 |
US8972651B2 (en) | 2011-10-05 | 2015-03-03 | Hitachi, Ltd. | Storage system and storage method |
US9529537B2 (en) | 2011-10-05 | 2016-12-27 | Hitachi, Ltd. | Storage system and storage method |
WO2013069859A1 (ko) * | 2011-11-09 | 2013-05-16 | 한양대학교 산학협력단 | 소거 대상 블록의 매핑 테이블을 저장하는 플래시 메모리 제어장치 및 방법 |
US8924636B2 (en) | 2012-02-23 | 2014-12-30 | Kabushiki Kaisha Toshiba | Management information generating method, logical block constructing method, and semiconductor memory device |
JP2016212712A (ja) * | 2015-05-12 | 2016-12-15 | 東芝情報システム株式会社 | Nand型フラッシュメモリを用いた記憶装置及びnand型フラッシュメモリの使用方法 |
CN111078136A (zh) * | 2019-10-22 | 2020-04-28 | 安徽力高新能源技术有限公司 | 一种防止BMS动态数据存储导致flash寿命降低的方法 |
CN111078136B (zh) * | 2019-10-22 | 2023-05-05 | 力高(山东)新能源技术股份有限公司 | 一种防止BMS动态数据存储导致flash寿命降低的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2005242897A (ja) | フラッシュディスク装置 | |
JP5336060B2 (ja) | 不揮発性メモリ装置およびそれを動作させる方法 | |
KR100389867B1 (ko) | 플래시 메모리 관리방법 | |
KR101038167B1 (ko) | 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법 | |
US7761655B2 (en) | Storage system and method of preventing deterioration of write performance in storage system | |
US10509570B2 (en) | Method, device, and program for managing a flash memory for mass storage | |
CN100419714C (zh) | 闪存存取方法、闪存文件系统的块替换方法及其管理装置 | |
US8239612B2 (en) | Memory controller, flash memory system with memory controller, and control method of flash memory | |
KR100847506B1 (ko) | 기억 장치, 메모리 관리 방법 및 프로그램 | |
EP2377023B1 (en) | Mapping address table maintenance in a memory device | |
JP2009205689A (ja) | フラッシュディスク装置 | |
US20080270680A1 (en) | Controller for Non-Volatile Memories and Methods of Operating the Memory Controller | |
KR20080037283A (ko) | 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법 | |
CN105468294A (zh) | 用于固态存储设备的脱机去重 | |
JP4666081B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP4909963B2 (ja) | 統合メモリ管理装置 | |
JP4488048B2 (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
KR101020781B1 (ko) | 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법 | |
JP2021068129A (ja) | メモリコントローラ及びフラッシュメモリシステム | |
JP5100789B2 (ja) | 半導体記憶装置および半導体記憶装置の制御方法 | |
JP4952742B2 (ja) | メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US12039193B2 (en) | Apparatus, method and computer program for managing memory page updates within non-volatile memory | |
JP2010146512A (ja) | メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
JP2016071447A (ja) | 不揮発性記憶装置及び不揮発性記憶装置の制御方法 | |
JP2021140464A (ja) | ストレージ装置、ストレージシステム及び方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090811 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20091208 |