JP2005115561A - フラッシュrom制御装置 - Google Patents

フラッシュrom制御装置 Download PDF

Info

Publication number
JP2005115561A
JP2005115561A JP2003347469A JP2003347469A JP2005115561A JP 2005115561 A JP2005115561 A JP 2005115561A JP 2003347469 A JP2003347469 A JP 2003347469A JP 2003347469 A JP2003347469 A JP 2003347469A JP 2005115561 A JP2005115561 A JP 2005115561A
Authority
JP
Japan
Prior art keywords
flash rom
physical
cluster
logical
data
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.)
Granted
Application number
JP2003347469A
Other languages
English (en)
Other versions
JP4242245B2 (ja
Inventor
Mitsuru Toyoda
満 豊田
Katsuyuki Kobayashi
功志 小林
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.)
MEDIA LOGIC KK
Original Assignee
MEDIA LOGIC KK
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 MEDIA LOGIC KK filed Critical MEDIA LOGIC KK
Priority to JP2003347469A priority Critical patent/JP4242245B2/ja
Publication of JP2005115561A publication Critical patent/JP2005115561A/ja
Application granted granted Critical
Publication of JP4242245B2 publication Critical patent/JP4242245B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】同一論理アドレスに対する書換え回数を世代番号で管理することによって、処理の高速化とフラッシュROMの製品寿命を長くすることのできるフラッシュROM制御装置を提供する。
【解決手段】ホストとフラッシュROM間に論理→物理変換テーブルT1と物理→論理変換テーブルT2とを設け、論理→物理変換テーブルT1には、同一論理クラスタアドレス(同一論理アドレス)に対応する物理クラスタ番号(物理アドレス)を記憶し、これをクラスタデータの書換えごとに変更していくとともに、さらに、物理クラスタ番号の変更回数を世代番号として記憶する。世代番号が最大値になると物理→論理変換テーブルT2を参照して対応の物理クラスタ番号を全て無効化する無効化処理を行う。
【選択図】
図7

Description

本発明は、NAND型フラッシュROM等のフラッシュROMとコンピュータシステム(以下、PCという)との間に配置されるフラッシュROM制御装置に関する。
NAND型フラッシュROMは、データの上書きが不可能であって、データ書換えの際にはブロックと呼ばれる単位で一括消去した上で、変更したデータを再度書き込みしなければならないという特徴がある。このようなブロック消去型のフラッシュROMでは、さらに消去保証回数の制限があり、一般には、10の4乗回〜10の5乗回程度の消去を行うと不良ブロック化する。そこで、これを解決してフラッシュROMの長寿命化を図る方法として、FATファイルシステムを採用することが考えられる。このFATファイルシステムでは、データ領域に対するデータの書換えを防ぐことが可能であるが、ファイル管理領域等ある特定の領域に対する書換えが頻繁に発生するために、この部分での消去回数が極端に増え、製品全体としての寿命が短くなってしまう不都合がある。また、ブロック消去には非常に長い処理時間が必要であるために、データの変更ごとにブロック消去を実行してしまうと、書換えに要する処理速度が非常に遅くなってしまう問題がある。
そこで、ホストとフラッシュROM間にフラッシュROM制御装置を配置し、この制御装置に論理アドレスと物理アドレスを変換するための論理→物理変換テーブルを設けるとともに、適当なタイミングでガーベージコレクションを行う方法が提案されている。この方法では、フラッシュROM制御装置内に配置される論理→物理変換テーブルによって、同一論理アドレスに対するデータの書換えが発生した場合に、その発生の度に物理アドレスを変えていくことができ、これにより高速化と消去回数の減少を図り、さらに適宜行われるガーベージコレクションによってフラッシュROM内の不要なデータを一定のタイミングで消去することができる(たとえば、特許文献1参照)。
特開2002−32256号公報
上記の様に、FATファイルシステムに変えて論理→物理変換テーブルをフラッシュROM制御装置に設けることにより、書換え発生時に空き領域にデータを書き込むことができる。しかしながら、その後に生じる不必要なデータを消去するのにガーベージコレクションを用いているため、その処理のために長時間を要してしまう不都合がある。一般に、ガーベージコレクションは、不必要なデータを探索しながら消去するとともに、データのセクタ間転送を行う処理とテーブルの更新操作を含むために、フラッシュROM全体を対象とするこれらの処理を短時間にすることはほとんど不可能である。また、ガーベージコレクションを起動するタイミングも難しく、ガーベージコレクションを行う間隔が長すぎると空きセクタがなくなってしまって書換えができなくなる可能性があり、また、その間隔が短すぎると全体のスループットが著しく低下してしまう問題がある。
そこで、本発明は、同一論理アドレスに対する書換え回数を世代番号で管理することによって、処理の高速化とフラッシュROMの製品寿命を長くすることのできるフラッシュROM制御装置を提供することを目的とする。
本発明のフラッシュROM制御装置は、同一論理アドレスに対する書換え発生回数を世代番号で管理する。すなわち、同一論理アドレスに対する書換えが発生すると、同一論理アドレスに対する物理アドレスが変更され、これが論理→物理変換テーブルに反映されるが、この時の物理アドレスの変更回数を世代番号として記録しておく。
本発明では、この世代番号管理のために、上記論理→物理変換テーブルに加えて、物理→論理変換テーブルを設ける。この物理→論理変換テーブルは、同一物理アドレスに対する論理アドレスを記憶しており、物理アドレスを論理アドレスに変換するためのテーブルである。
本発明の世代番号管理では、上記世代番号が所定の最大値になった時に、物理→論理変換テーブルを参照して当該論理アドレスに対応する全ての物理アドレスを抽出して、この物理アドレスを無効化する処理を行う。また、その無効化処理の結果、有効エリアの無くなったブロックを見つけるとそのブロックを消去する処理を行う。
本発明では、このように、論理→物理変換テーブルと物理→論理変換テーブルを設け、また、制御部がこれらのテーブルを参照して世代番号管理を行い、且つ有効エリアの無くなったブロックを見つけた時にそのブロックを消去する処理を行うため、データの書き込み時の高速化を実現でき、且つ、ブロック消去をデータの書換えタイミングとは無関係に適当に行っていくことによりガーベージコレクション処理を頻繁に行う必要がなくなり、これによりフラッシュROMのスループットの向上と長寿命化を図ることができる。
世代番号は論理アドレスごとに初期値を異ならせることにより、各論理アドレスに対する世代番号が同時に最大値に達するのを防ぐことができる。これにより、一時的な著しいスループットの低下を防ぐことになり、システムの安定性が確保される。
世代番号が最大値になって、その世代番号の論理アドレスに対応する全ての物理アドレスに対する無効化処理が行われると、世代番号を初期値に戻す世代交代処理を行う。こうすることで、世代番号が最大値に達した論理アドレスを初期値から再び使用可能となる。
本発明によれば、データ書き込み前にブロック消去等の処理を行う必要がなく、未使用エリアへの逐次書き込みができるために書き込みの高速化とフラッシュROMの長寿命化を図ることができる。また、物理→論理変換テーブルを設けて世代番号管理を行うことによって、ガーベージコレクションではない無効化処理による空き領域確保を行うことができるために、システムのスループットを向上することができる。
図1は、本発明の実施形態であるフラッシュROM制御装置の構成図である。
フラッシュROM制御装置1は、ホストI/F10を介してホストに(パーソナルコンピュータ)2と接続され、ホスト2からの要求に応じてフラッシュROM3に対するデータの読み書きを行う。
フラッシュROM制御装置1は、フラッシュROMI/F11を介して、1つ以上のフラッシュROM3と接続されている。このフラッシュROM制御装置1では、フラッシュROM3との接続ラインにおいて、データバスを共有し、制御信号の全て、もしくは一部を、それぞれのフラッシュROMに別々に接続することによって、複数のフラッシュROMと接続することが可能である。
フラッシュROM制御装置1は、上記I/Fの他、CPU、ROM、RAM、データ転送バッファ、シーケンサ及びECC付加/訂正の各要素を備えている。
フラッシュROM3は、ブロック消去型のNAND型フラッシュROMで構成され、データの消去をブロック単位で行う。また、バイトもしくはワード単位でアクセスするランダムアクセス方式ではなく、ページ単位でアクセスするシーケンシャルアクセス方式を採用したものである。
フラッシュROM3の読み込み時には、以下の動作を行うものとする。
図2に示すように、最初のコマンド発行時に、リードコマンド(1)を発行し、ページアドレス、カラムアドレスを指定して、リードコマンド(2)を発行する。すると、フラッシュROMはBUSY状態となり、ここで待ち時間が発生する。BUSY状態が解除されると、フラッシュROM内のバッファにページデータが準備されているので、本装置によってこのデータを読み込む。
フラッシュROM3への書き込み時には、以下の動作をするものとする。
図3に示すように、最初のコマンド発行時に、データ入力コマンドを発行し、続いてページアドレス、カラムアドレスを指定する。次に書き込むページデータをフラッシュROMへ転送し、図中のAでプログラムコマンドを発行する。するとフラッシュROMはBUSY状態となり、ここで待ち時間が発生する。フラッシュROM内での書き込み動作が終了すると、BUSY状態が解除され、本装置では図中のBでリードステータスコマンドを発行し、書き込み結果(図中のステータス)を読み込み、エラー判定を行う。
フラッシュROM3は、消去単位であるブロック単位、及びブロック単位よりも小さな単位(管理単位)であるクラスタ単位、及びフラッシュROMへのコマンドごとの読み書きや書き込み単位であるページ単位、及びホストからの要求のある論理アドレス(LBA)の単位であるセクタ単位で、制御と管理が行われる。これらの単位についての関係は以下の通りである。
単一もしくは複数のセクタによりページが構成される。
単一もしくは複数のページによりクラスタが構成される。
単一もしくは複数のクラスタによりブロックが構成される。
単一もしくは複数のブロックによりフラッシュROM3が構成される。
セクタは、512バイトのデータと16バイトの冗長部とで構成される。
セクタは、2つのECC単位と冗長部で構成される。ECC単位とは、256バイトのデータと、そのデータに対してランダムな1ビットのエラー訂正可能な4バイトのECC情報の集合体である。したがって、1セクタ当たり(それぞれのECC単位において)2ビットまでのランダムエラーを訂正できる。冗長部には、クラスタ情報等の管理情報が含まれている。
通常、クラスタ内には複数のセクタが存在するため、複数の管理情報が含まれている。そのため、多重化された管理情報を取得するため、高信頼性のある管理情報を得ることができる。
セクタ内の冗長部に書き込むデータは、前記の通り多重化してあるために、同じデータを何度も書き込むことになる。本装置では、ハードウェアのレジスタに一度設定するだけで、フラッシュROMへの転送時に自動的に付加することによって、ソフトウェアのオーバーヘッドを減少させ、高速化している。
本装置では、フラッシュROMへのデータ転送時にECC情報を付加し、フラッシュROMからのデータ転送時にECC情報を読み込み自動的にエラー訂正を行うことによって高信頼性を確保している。
本装置では、データ読み込み時において、データ部とECCの組を本装置側に転送する時、図5に示す処理を行う。同図は、従来のデータ転送のタイムチャートと本装置でのデータ転送のタイムチャートを示している。
すなわち、従来の方式では、512バイトのデータと冗長部を完全に分離して記憶されていたために、512バイトのデータに対するECC情報は、512バイトのデータを読み込んだ後に取得され、その後、ECCによるエラーの判別/訂正が行われ、さらにその後に、ホストへのデータ転送が行われていた。
これに対し、本装置では、256バイトごとにECC情報を書き込んでいるために、Data1と、それに組になって記憶されるECC情報1とを読み込んだ後、そのECCによるエラーの判別/訂正を行い、ホストへのデータ転送を行う。そして、Data1のデータ転送を行っている時に、次のデータであるData2とECC情報2の読み込みを同時に行う。これにより、データの高速な読み込みが可能になる。
本装置では、RAM内に、論理クラスタアドレス(本発明の論理アドレス)からフラッシュROM内の物理クラスタ番号(本発明の物理アドレス)に変換するための論理→物理変換テーブルを備えている。ホスト2からの読み込み要求があった場合に、このテーブルを参照して物理クラスタ番号を獲得する。ホスト2からの書込み要求があった場合には、後述の未使用物理クラスタ番号テーブルを参照して未使用物理クラスタ番号を獲得し、この物理クラスタに対してクラスタデータを書き込む。そして、各テーブルの更新を行う。なお、本装置では、ブロック消去型のフラッシュROMを使用しているが、書き込みを行う前にブロック消去を行うシーケンスは必要ない。上記論理→物理変換テーブルを使用することによって、ホスト2から書き込み対象となるセクタ単位のLBAを含む論理クラスタアドレスに対応する物理クラスタ番号を決定し、この物理クラスタ番号に対する書き込みを行い、同時に論理→物理変換テーブルを更新する。なお、書き込み対象となる物理クラスタ番号は、フラッシュROM内の空きクラスタ領域である。
本装置では、世代番号管理(後述)等を行うための物理→論理変換テーブルを備えている。この物理→論理変換テーブルは、フラッシュROM3の物理アドレス(物理クラスタ番号)を論理クラスタアドレス(論理アドレス)に変換するためのテーブルである。
図6は、上記のテーブルを示している。
図6において、論理→物理変換テーブルT1は、論理クラスタアドレスをフラッシュROM3の物理クラスタ番号に変換し、物理→論理変換テーブルT2は、上記物理クラスタ番号を論理クラスタアドレスに変換する。
本装置では、さらにブロックステータステーブル(BST)T3を備えている。このブロックステータステーブルT3は、ブロック内の有効クラスタ(本発明の有効エリアに相当)の数、不良ブロック状態、消去状態を保持している。
図7は、各テーブルの記憶内容について説明する図であり、説明を分かりやすくするために非常に単純化されたものとしている。
本装置は、ホストからの問い合わせに対してフラッシュROMの物理的な最大容量よりも少ない容量を報告する。図7では、フラッシュROMの最大物理クラスタ番号(番地)が7であるため、これよりも小さい値をホスト側に報告する。図では、ホスト側に対して、最大番地が5であることを知らせる。すなわち、論理→物理変換テーブルT1には0〜5のアドレスが用意され、これにより、ホスト側には0〜5のアドレス空間が準備される。また、物理→論理変換テーブルT2は、フラッシュROMと同じアドレス空間を持つものが用意される。ブロックステータステーブルT3は、フラッシュROMのブロック数分だけ用意される。ブロック数は、ここでは4(0〜3)であり、各ブロックは2つのクラスタで構成されている。
図7において、最初に、ホスト側でアドレス0に「A」を書き込むコマンドを発行すると、論理→物理変換テーブルT1ではフラッシュROMの空きクラスタ番地である0と対応づけ、さらに、世代番号が初期値1であることを記憶する。この結果、論理→物理変換テーブルT1のアドレス0には「0:1」(0はフラッシュROMの物理クラスタ番号0を示し、1は世代番号の初期値を示す)が記憶される。また、同時に、物理→論理変換テーブルT2のアドレス0には論理クラスタアドレス0が記憶される。さらに、フラッシュROMの物理クラスタ番地0には、データAが書き込まれるとともに、冗長部に「0:1」も記憶される。
次に、ホスト側において、ホスト側メモリのアドレス3にデータ「B」が書き込まれて書き込みコマンドが発行されると、フラッシュROMのクラスタ番号1にはデータ「B」が書き込まれるとともに、論理→物理変換テーブルT1の論理クラスタアドレス3には「1:1」(左側の1はフラッシュROMの物理クラスタ番号1を示し、右側の1世代番号の初期値を示す)が記憶される。また、物理→論理変換テーブルT2のアドレス1には論理クラスタアドレスの3が記憶される。また、フラッシュROMの物理クラスタ番号1には、上記データ「B」とともに、冗長部に「3:1」(3は論理クラスタアドレス、1は世代番号の初期値)が書き込まれる。
続いて、ホスト側においてアドレス0のデータを「C」に書き換える書き込みコマンドが発行されると、フラッシュROMの空き物理クラスタ番号2のエリアにデータ「C」が書き込まれる。また、論理→物理変換テーブルT1の論理クラスタアドレス0は、「2:2」(最初の2は物理クラスタ番号、後ろの2は1つ増えた世代番号)に更新される。また、物理→論理変換テーブルT2のアドレス2には論理クラスタアドレスである0が記憶される。さらに、フラッシュROMの物理クラスタ番号2の冗長部には、「0:2」(0は論理クラスタアドレス、2は世代番号)が書き込まれる。
ブロックステータステーブルT3には、0〜3の4ブロック分のステータスが記憶されている。ステータスは、有効クラスタ数(FFh、FEh以外)、不良ブロック状態(そのブロックが不良であるかどうかを示す:FEh)、消去状態(そのブロックが消去されて未使用状態にあるかどうか:FFh)を含んでいる。最初は、ブロックステータステーブルT3の各アドレスにはFFhが記憶され、消去状態(未使用状態)のステータスとなっている。データ「A」がブロック0の物理クラスタ番号0に書き込まれると、アドレス0には「1」(有効クラスタ数が1であることを示す)が記憶される。次に、データ「B」がブロック0の物理クラスタ番号1に書き込まれると、「1」→「2」(有効クラスタ数が1から2に変わったことを示す)となる。さらに、データ「C」がブロック1の物理クラスタ番号2に書き込まれると、「2」→「1」(有効クラスタ数が1になったことを示す)となる。ブロックステータステーブルT3のアドレス1では、データ「C」がブロック1の物理クラスタ番号2に書き込まれると、「1」となり有効クラスタ数が1になったことが記憶される。後述のように、物理クラスタを無効化するための無効化処理が行われる時に、同時に有効クラスタのないブロックも検出されて、そのブロックに対する消去処理が行われるが、この検出のためにブロックステータステーブルT3の有効クラスタ数が参照される。なお、この時にブロックに対する消去処理が行われると、そのブロックに対応するエリアにはFFhが記憶されて消去状態(未使用状態)に設定される。また、書込みエラー発生時等、ブロックが不良になった時には不良ブロックであるステータスFEhが記憶される。
図7に示すように、本装置では、フラッシュROMの物理的な最大容量よりも小さな容量を事前にホスト側に通知しているために、常に書き込み可能な(消去済の)ブロックを確保するようにしている。この空きブロックを論理的な空きブロック数という。
次に、世代番号管理について説明する。
本装置において世代番号管理とは、論理クラスタアドレスに対するデータの更新が行われるたびに、その論理クラスタアドレスに対する物理クラスタ番号の変更回数を世代番号として割り振ることをいう。また、この割り振った世代番号が所定の最大値になった時に当該論理クラスタアドレスに対応する全ての物理クラスタ番号を無効化することをいう。
世代番号は、図7に示すように、論理→物理変換テーブルT1に記憶されるとともに、フラッシュROMの対応物理クラスタ番号エリアにも記憶される。そして、データの書換えを行う時の世代番号が前記最大値になった時に行われる無効化処理では、当該論理クラスタに対応する全ての物理クラスタ(当該論理クラスタアドレスに対応する全ての物理クラスタ番号のクラスタデータ)を無効にし、新たに、世代番号の最小値を割り振る。この処理を世代交代動作と称する。
世代番号の初期値は、各論理クラスタアドレス毎に同一の初期値であってもよいが、この初期値を適当に異ならせておくことによって、各クラスタの世代番号が同時に最大値に達するのを防ぐことができる。これにより、一時的な著しいスループットの低下を防ぐことができて、システムの安定性を確保できる。
図7において、フラッシュROMの冗長部に「×」が記憶されると、その物理クラスタは上記無効化処理によって無効になったことを示す。この無効化された物理クラスタに対しては、当然データが書き込まれることはなく、将来、その無効物理クラスタが含まれるブロック内の全てのクラスタが有効でなくなった時に、そのブロックが消去されて初期状態にされる。
以上の世代番号管理によって、データを書き込む前にブロックを消去する必要がなく、また、消去対象のブロックが分散化されることによって未使用クラスタへの逐次書き込みが可能となって高速化と長寿命化が実現できる。すなわち、従来の方法では、まず、ブロックを消去してからデータの書き込み処理に移るが、本装置ではデータの書き込みの前にブロックを消去しておく必要がないから、ブロック消去の完了を待つことなくホストからの要求を終了できることになり、これによりシステム全体としてのスループットが著しく向上する。また、空き領域の確保は、物理クラスタの無効化と有効クラスタがなくなった時の消去処理によって行われるために、ガーベージコレクション等の従来の空き領域確保のための処理に対し、処理時間が分散化され、且つ短時間で行うことが可能である。
上記図7を参照しての説明では、説明を単純化するために、データを書き込む時の物理クラスタの選択を、クラスタ番号の小さい方から順に選ぶようにしている。そして、選択した物理クラスタが無効の時(×が記憶されている。)に、次の番号のクラスタを選択する。しかし、実際にはこのような方法では、無効化処理を繰り返すことによって選択される物理クラスタが歪なものになってしまう。すなわち、同一論理クラスタアドレスに対応する物理クラスタ番号は同一のブロック内に存在することが望ましいといえるが、書き込みのための空き物理クラスタを単に番号の小さいものから順に選んでいくだけでは、無効化処理を繰り返した時に同一論理クラスタアドレスに対応する物理クラスタが複数のブロック間に股がって歪に存在することになりうる。
そこで、本装置では、図7に示すように、未使用物理クラスタ番号テーブルT4を設けている。このテーブルT4は、未使用物理クラスタのあるブロック番号と、そのブロック番号に対する未使用クラスタ番号を示している。図7に示す例では、ブロック1については物理クラスタ番号3が未使用物理クラスタであることを示し、ブロック2については、物理クラスタ番号4及び5が未使用物理クラスタであることを示している。このテーブルT4は、フラッシュROMに対するデータの書き込み処理及び消去処理が行われた時に更新される。このテーブルT4を使用して、新たにデータを書き込む時の物理クラスタを選択すれば、同一論理クラスタアドレスに対応する物理クラスタ番号をなるべく多く同一ブロックに割り当てることが可能になる。
本装置においては、上述のようにフラッシュROMの管理単位を、消去単位であるブロック単位よりも小さく、且つ、フラッシュROMへの読み込み又は書き込み単位であるページ単位よりも大きいクラスタ単位としている(勿論、ホストからのコマンド発行時の単位であるセクタ単位よりも大きい)。このように、クラスタ単位で管理すると、ブロック単位で管理した時の書換え時のオーバーヘッドが大きくなりすぎるのを防ぐことができ、反対に、ページ単位で管理した時の管理の煩雑さを避けることができる。すなわち、全体のスループットを向上するための丁度よい大きさがクラスタ単位である。
さらに、クラスタは、通常のコンピュータシステムで使用されるFATファイルシステムへの適合性が良くなる。すなわち、FATファイルシステムでは、通常、データ領域はクラスタ単位でアクセスすることが知られているために、データ領域の開始セクタが、本装置のクラスタ境界と一致するようにし、また、本装置のクラスタサイズとファイルシステムにおけるクラスタサイズを一致するようにフォーマットを行えば、FATファイルシステムとフラッシュROMの適合性が極めて良くなり、効率的なアクセスが可能となって高速化が可能となる。
図8は、このように境界位置及びサイズを一致させた状態を示している。すなわち、フラッシュROMにおけるクラスタmから、ファイルシステムにおけるデータクラスタが開始されるようにフォーマットパラメータを調整する。なお、図8においては、図中の管理領域が一般にクラスタサイズ以下のアクセスが発生するために、クラスタ0〜クラスタm−1については、本装置において更に小さいサイズでの管理を行うようにすると、高速化を更に促進できる。
図9は、本装置での書き込み時の高速化が実現される理由を示している。
ブロック管理を行う従来の方式では、図示のようにフラッシュROMから既存のブロックデータを読み込んだ後そのブロックの消去を行い、さらにそのブロックに対して新しいブロックデータの書き込みを行い書き込み完了待ちを行って終了する。
従来のブロック管理を行う方式では、最初にブロック消去を行う必要があるために書き込み時間が長時間になるのを避けることができない。そこで、ブロック消去をしなくてもよいように、論理→物理変換テーブルを使用し、且つクラスタ管理を行う方針が考えられる。このクラスタ管理では、最初にフラッシュROM内の既存のクラスタデータを読み込んで新しいクラスタデータに更新した後書き込み、書き込みの完了を待ってから当該クラスタを無効化するための書き込みを行い、さらにその書き込み完了を待つ。しかしこの方式でも、既存のクラスタを無効化するための書き込み時間が必要である。これに対して、世代管理を行う本装置では、新しいクラスタデータを書き込み、その書き込み完了を待つか、又は必要な場合にフラッシュROM内から既存のクラスタデータを読み込んだ後、新しいクラスタデータを書き込み、その書き込み完了を待つだけでよい。この世代管理を行うことによってデータの書き込みごとに既存クラスタの無効化処理を行う必要がなくなるため、書き込み時間が非常に高速化する。
次に、本装置の実施例について説明する。
図10は第1の実施例の構成図である。この実施例では、フラッシュROM1、及びフラッシュROM2の2つをフラッシュROM制御装置1に接続する。接続は、データバスを共通化し、R/W Strobe信号をそれぞれのフラッシュROMに接続する。また、Chip Enable信号が共通の制御信号として各フラッシュROMに接続されている。ここでは、フラッシュROM1をグループ1、フラッシュROM2をグループ2とする。また、図11に示すように、フラッシュROM制御装置1からのアクセス単位であるページごとに各グループを交互に割りつける。図11のように割りつけることにより、物理クラスタ0のアクセス順序は、グループ1のページ0→グループ2のページ0→グループ1のページ1→グループ2のページ1というふうになる。なお、図11において、反転クラスタとは、詳細については後述するように、グループ間のデータ転送を行った時に読出しの際にデータの順番が反転しないようにするための情報(反転クラスタ情報)が付加されたクラスタをいう。これについては後述する。
したがって、図11において物理クラスタ0が反転クラスタの場合、アクセス順序は、グループ2のページ0→グループ1のページ0→グループ2のページ1→グループ1のページ1となる。
本装置では、読み込み時においては以下の例のように、2つのグループを交互に転送することによって、一方のフラッシュROMの待ち時間の間に他方のフラッシュROMのデータを転送させる制御を行う。
(1)グループ1にリードコマンドを発行する。
(2)グループ2にリードコマンドを発行する。
(3)グループ1のデータをホストに転送する。転送終了後、グループ1に次のリードコマンドを発行する。
(4)グループ2のデータをホストに転送する。転送終了後、グループ2に次のリードコマンドを発行する。
(5)(3)に戻る。
書き込み時においては、以下の例のように2つのグループを交互に転送することによって、一方のフラッシュROMの待ち時間の間に他方のフラッシュROMのデータを転送する制御を行う。
(1)グループ1にデータ入力コマンドを発行し、書き込みデータを転送し、書き込みコマンドを発行する。
(2)グループ2にデータ入力コマンドを発行し、書き込みデータを転送し、書き込みコマンドを発行する。
(3)グループ1の書き込み完了待ちをし、エラー判定を行う。正常に書き込みが完了すれば、データ入力コマンドを発行し、書き込みデータを転送し、書き込みコマンドを発行する。
(4)グループ2の書き込み完了待ちをし、エラー判定を行う。正常に書き込みが完了すれば、データ入力コマンドを発行し、書き込みデータを転送し、書き込みコマンドを発行する。
(5)(3)に戻る。
ガーベージコレクション時のクラスタデータの転送時には、従来の方式では、クラスタデータを一旦RAM等の記憶部に読み込んでから再び書き込む必要があった。本装置では、R/W Strobe信号を両方のグループに同時に送り、一方をリード、他方をライトで動作させることによって、1回の動作で読み込みと書き込みを同時に行うことができる。これにより、グループ間のデータ転送を高速化することが可能である。ただし、先に述べたように、データの転送に際してはクラスタデータが反転クラスタかどうかによって読出しの順番を変えることが必要になる。すなわち、グループ間のデータ転送時においては、グループ1→グループ2、もしくはグループ2→グループ1の転送を行うので、コピーしたクラスタデータは、コピー元のクラスタデータに対してページごとに順番が反転してしまう。そこで、転送時には、反転クラスタであることを示すクラスタ情報を記録し、読出しの際にはグループの選択時に他方のグループを選択するようにする。
なお、グループ1とグループ2の両方のブロックを消去する際においては、ほぼ同時にコマンドを発行できるために、1回の消去コマンドの実行時間で2つのブロックを同時に消去することが可能である。
次に、フラッシュROM制御装置1の具体的な動作について図12以下を参照して説明する。
図12は、ホストからリードコマンドが発行された時の動作を示している。ステップ100→・・・→ステップ107と進み、ステップ107において、コマンド発行に該当するグループを選択し、フラッシュROMへ該当ページ番号を伴ったリードコマンドを発行する。また、ステップ108においてデータ転送を行うためにデータ転送セクタ数を保存しておく。ただし、クラスタ内転送セクタ数分のコマンドを発行した場合にはここではコマンド発行を行わない。
ステップ108において、データ転送に該当するグループを選択し、装置内のシーケンサを起動してフラッシュROMからのデータをホストI/Fを介してホストに転送する。ただし、このデータ転送に該当するグループは、前記のコマンド発行に該当するグループとは異なるもう一方のグループである。なお、フラッシュROMへのコマンドが発行されてないグループであればデータ転送は行わない。フラッシュROMへのコマンドが発行されているかどうかは、ステップ107で保存したデータ転送セクタ数を参照して判断する。
ステップ112では、ページ番号のインクリメント、及びグループ番号の切り換えを次のように行う。
グループ番号が1であれば2に変える。
グループ番号が2であれば1に変える。
ステップ113では、クラスタ内の転送が一度終了したので、次の転送からはクラスタの先頭からの転送であると判断し、クラスタ内オフセットページ数、クラスタ内オフセットセクタ数、ページ内オフセットセクタ数を0にしておく。
ステップ107〜112にて、グループ毎に処理を行うことにより、一方のフラッシュROMがBusy状態であっても、他方のフラッシュROMを制御できるため、高速に読み込むことができる。
図13はホストからライトコマンドが発行された時の動作を示す。
ステップ202において、ステップ200で算出したクラスタ内オフセットページ数、クラスタ内オフセットセクタ数、ページ内オフセットセクタ数、総転送セクタ数から、これから書き込もうとするデータが該当するクラスタ全体を書き換えるかどうかを判断する。
ステップ204〜209は、クラスタ内の一部を書き換える際に本装置内のRAMにデータを退避する手順、もしくはダミーデータを作成する手順と、RAM内で更新したデータを再びフラッシュROM内に書き込む手順を示している。なお、ステップ205でソースクラスタのクラスタデータをRAMへ保存する時に、読み込み完了待ちの時に別のページのフラッシュROMに対して書き込みコマンドを発行しておき、RAM上で更新されたデータをそのコマンド発行したページのフラッシュROMに書き込むことにより、高速の書き込みが可能となる。
ステップ213ではソースブロックの有効クラスタ数が1かどうかを判定し、有効クラスタ数が1であれば当該ソースブロックに対するブロック消去処理を行い、ブロックステータステーブル及び物理→論理変換テーブルの更新を行う。また、ソースブロックの有効クラスタ数が1以外であれば、ステップ215においてブロックステータステーブル及び物理→論理変換テーブルの更新を行う。
図14は、図13のステップ211の動作を示すフローチャートである。ホストI/FからフラッシュROMへのクラスタデータの書き込みを行う時は、図13のステップ202に示すように、書き込むデータがクラスタ全体を書き換えるデータの場合である。
ステップ302において、これから書き込もうとするクラスタに割り当てられているクラスタの世代番号に1を加算した値を書き込みクラスタに割り当てる。しかし、その前にステップ300において、世代番号が最大値に達しているかどうかを判断し、最大値に達する場合にはステップ301において世代交代処理を行う。
世代交代処理とは、これから書き込もうとする論理クラスタアドレスに割り当てられている物理クラスタを全て消去もしくは廃棄する処理である。この処理を行うことによって、これから書き込もうとするクラスタには、世代番号の初期値が割り当てられることになる。
ステップ306においては、これから書き込もうとするグループに対してReady状態になっていることを確認する。Ready状態になっていなければReady状態になるまで待機する。
ステップ307においては、これから書き込もうとするグループに対してデータ入力コマンドを送出し、シーケンサによりホストI/FからフラッシュROMへデータを転送する。転送し終われば、フラッシュROMへプログラムコマンドを発行する。ステップ309では、ステップ306で選択されているグループを切り換える。この実施例では、フラッシュROMが2つであるために、グループ番号2であればステップ307で発行するデータ入力コマンドに伴って発行されるページアドレスをインクリメントする。
ステップ306〜309での一連の処理にてグループごとに処理を行うことにより、一方のフラッシュROMがBusy状態の時でも、他方のフラッシュROMを制御することができる。このため書き込みを高速化することができる。
図15は、RAMからフラッシュROMへのクラスタデータの書き込み手順を示すフローチャートである。この動作は、図13のステップ209で行われ、書き込むデータがクラスタの一部に書き換える場合に選択される。
ステップ402において、これから書き込もうとするクラスタに割り当てられているクラスタの世代番号に1を加算した値を書き込みクラスタに割り当てる。しかし、その前にステップ400において、最大値に達するかどうかを判断し、最大値に達する場合にはステップ401において世代交代処理を行う。
世代交代処理については前述した通りである。
ステップ406では、これから書き込もうとするグループに対してReady状態になっていることを確認する。Ready状態になっていなければReady状態になるまで待機する。
ステップ407では、これから書き込もうとするグループに対して、データ入力コマンドを送出し、シーケンサによりRAMからフラッシュROMへデータを転送する。転送し終わればフラッシュROMへプログラムコマンドを発行する。
ステップ409では、ステップ406で選択されているグループを切り換える。この実施例では、フラッシュROMが2つであるためにグループ番号2であれば、ステップ407で発行するデータ入力コマンドに伴って発行されるページアドレスをインクリメントする。
ステップ406〜409での一連の処理にて、グループごとに処理を行うことにより、一方のフラッシュROMがBusy状態の時でも、他方のフラッシュROMを制御することができる。このため、書き込みの高速化を図ることができる。
図16は、ソースクラスタのデータをRAMに保存する手順を示すフローチャートである。この動作は、図13のステップ205で実行される。
ソースクラスタのデータ(クラスタデータ)を一旦RAMに保存するのは、RAMに保存した後クラスタデータを更新して再びフラッシュROMへ書き込むためである。
ステップ502において、算出されたページアドレスを伴うリードコマンドを、ステップ503にて発行しておく。
ステップ505にてデータ転送中であればデータ転送完了を待つ。この時に、データ転送エラーもしくはデータエラー(ECCにより誤り訂正不可能なエラー)が発生した場合は、ステップ592へ移行しエラー終了する。
ステップ505にて、まずグループaを選択しシーケンサを起動してデータ転送を行う。
グループaのフラッシュROMは、ステップ503もしくは前回のステップ505にて既にリードコマンドが発行されているために、シーケンサがReady状態になるのを待った後データ転送を行う。
次にステップ506にて、グループbを選択し、シーケンサを起動してデータ転送を行う。
グループbのフラッシュROMは、ステップ503もしくは前回のステップ506において既にリードコマンドが発行されているために、シーケンサがReady状態になるのを待った後データ転送を行う。
ステップ503〜508の一連の処理にて、グループごとに処理を行うことによって、一方のフラッシュROMがBusy状態の時でも、他方のフラッシュROMを制御することができる。これによって高速処理が可能になる。
図17は、書き込みエラー処理を示すフローチャートである。この書き込みエラー処理は、図13のステップ219で行われる処理である。
ステップ602〜604において、未使用クラスタ番号を取得するが、この未使用クラスタ番号を取得するのは図7に示す未使用物理クラスタ番号テーブルT4からである。ステップ602の未使用クラスタ番号リストは、このテーブルT4を示している。
もし、未使用クラスタ番号が見つからない場合には、本装置を読み込み専用モードに切り換え、これ以上書き込みが出来ないようにするとともに、読み込みを許可するモードとする。また、ホストからの書き込み要求の処理中であれば、ホストに対しては書き込みエラーを報告する。
ステップ607においては、本装置のフラッシュROM間のコピー機能を使用し、書き込みエラーの発生したブロック内の有効クラスタの内容を正常な未使用ブロックにコピーする。既に述べたように、このコピーはフラッシュROM間で直接行われるために非常に高速である。
図18は、新しい書き込みクラスタ番号を取得する動作を示すフローチャートである。この動作は、図13のステップ216で実行される。
ステップ700において、まず、未使用物理クラスタ番号テーブルT4(未使用クラスタ番号リスト)から、新しい書き込みクラスタ番号を取得するように試みる。こうすることにより、その都度、ブロックステータステーブルT3を検索しなくても良くなるために処理の高速化が図れる。
ステップ700〜701において、未使用クラスタ番号が取得できなければ、ブロックステータステーブルT3において消去済みブロックを検索する。
ステップ702〜703において、消去済みブロックが検索できない、もしくは規定未満の消去済みブロックしかなければ、後述のガーベージコレクション処理を行う。
ステップ706において、これまでの処理で未使用クラスタが見つからなければ、本装置を読み込み専用モードに切り換え、これ以上書き込みができないようにするとともに、読み込みを許可する。この場合、ホストからの書き込み要求の処理中であれば、ホストに対しては書き込みエラーを報告する。
図19は世代交代処理を示す。
世代交代処理は物理→論理テーブルT2を利用する。すなわち、ステップ900において、ブロックステータステーブルT3より、ブロック内の有効クラスタ数もしくはブロックステータスを取得する。なお、ブロックステータステーブルT3には、通常ブロックの場合有効クラスタ数が格納され、特殊ブロック(未使用ブロック、不良ブロック等)の場合、ブロックステータスが格納されている。 次に、ステップ901において、特殊ブロックかどうかを判定し、特殊ブロックの場合はステップ901→907に進んで、次のブロックに対する処理を行う。
ステップ901において、通常ブロックと判定したときは、ステップ902においてブロック内に有効クラスタがあるかどうかを判定する。有効クラスタがあれば、ステップ904において、該当ブロックについて、物理→論理変換テーブルT2により、指定された論理クラスタアドレスに割り当てられている物理クラスタ番号を検索する。そして、割り当てられている物理クラスタ番号が見つかれば、ブロック内のその物理クラスタ番号を記憶しておく。
ステップ902においてブロック内に有効クラスタがなければ、ステップ903においてブロック消去を行う。
ステップ904の処理の後にステップ905に進み、該当物理クラスタが1つ以上見つかったどうかを判定する。1つ以上見つかった場合は、ステップ906において、ステップ904で記憶しておいた物理クラスタに対し無効であることを示すマークを記憶する。ステップ905において該当物理クラスタが見つからなかった場合は、ステップ907に進む。
以上のステップ900以下をすべてのブロックに対して行う(ステップ907)。
以上の世代交代処理を行うと、指定された論理クラスタアドレスに割り当てられたクラスタが存在しなくなるために、この処理の後に、世代番号の初期値を割り当ててクラスタへの書き込みを行うことができる。
本装置では、通常の状態では上記のような無効化処理を行って未使用ブロック(有効ブロック)を確保していくが、未使用ブロックが少なくなってくると、無効化処理では対応できなくなる可能性がある。そこで、ブロックの消去処理をしても有効ブロック数が一定以上にならないときには、ガーベージコレクションを行って新しい未使用クラスタを確保する。ガーベージコレクションは,ブロックステータステーブルT3を参照して行い、最も有効クラスタ数の少ないブロックを対象にする。こうすることによって、クラスタデータの転送回数を少なくでき、それにより高速化が期待できる。
ガーベージコレクションはこのようにして検索された有効クラスタ数の少ないブロックを対象とし、これにより、有効クラスタの内容を未使用クラスタへコピーする時間を短縮するとともに、その後の未使用クラスタも最大限に確保できるようにする。
図21は、ガーベージコレクションの対象を有効クラスタ数の少ないブロックとした場合の利点について説明する図である。同図に示すように、ブロック内の有効クラスタ数が少ない場合には、このブロックをガーベージコレクションの処理対象とすることによって、未使用クラスタに対して有効クラスタをコピーする場合のコピー回数が少なくなり、且つ確保できる未使用クラスタ数が多くなる。これに対して、ガーベージコレクションの処理対象を有効クラスタ数の多いブロックとした場合、または何も考慮することなくガーベージコレクションを行う場合には、コピーする有効クラスタ数が多くなり、且つ確保できる未使用クラスタ数が少なくなる。
したがって、ガーベージコレクションの処理対象を有効クラスタ数の少ないブロックとすることにより、コピー時間を短縮することができるとともに未使用クラスタ数も最大限に確保できる。したがって、ガーベージコレクション処理の発生頻度も抑えることができる。
図20は、ガーベージコレクションの動作を示すフローチャートである。
ステップ801においては、論理→物理変換テーブルT1及び物理→論理変換テーブルT2によりソースブロック内の有効クラスタのクラスタ情報を取得する。
ステップ802において、未使用物理クラスタ番号テーブルT4(未使用クラスタ番号リスト)から新しい書き込みクラスタ番号を取得する。ここで、未使用クラスタ番号が取得されなけばエラー終了する。
ステップ805では、本装置のフラッシュROM間コピー機能を使用して高速にコピーする。すなわちシーケンサを起動して、グループ1のフラッシュROMに対してはリードモードに設定し、グループ2のフラッシュROMにはライトモードに設定し、それぞれにR/W Strobe信号を出すことによってグループ1 のフラッシュROMのページデータをグループ2のフラッシュROMに直接転送する。
ステップ803〜812において、クラスタの片方のグループのページのみコピーし、ステップ813〜814において判断し、グループを切り換えてステップ803に戻り、もう一方のグループのページをコピーする。このように、片方のグループごとにコピーすることにより、クラスタの内容はページごとに反転するが、本装置のフラッシュROM間コピーを利用することができる。図22はこの様子を示している。
図23は、本発明の第2の実施例の構成図を示している。
図10に示す第1の実施例と相違する点は、フラッシュROM制御装置1に対してフラッシュROMを4つ接続し、フラッシュROM1、2でグループ1を構成し、フラッシュROM3、4でグループ2を構成している点である。グループ内の2つのフラッシュROMを選択するために、2つのChip Enable信号をグループ内のそれぞれのフラッシュROMに接続する。これにより、別々の制御が可能になる。図24は、ページの割りつけ方法を示している。物理クラスタ0のアクセス順序は、同図に示してある通りである。物理クラスタ1、物理クラスタ2についても同様である。
読み込み時においては、次のように4つのフラッシュROMを順番に転送することによって一方のフラッシュROMの待ち時間の間に他方のフラッシュROMのデータを転送することとなり、高速化することができる。
(1)フラッシュROM1にリードコマンドを発行する。
(2)フラッシュROM2にリードコマンドを発行する。
(3)フラッシュROM3にリードコマンドを発行する。
(4)フラッシュROM4にリードコマンドを発行する。
(5)フラッシュROM1のデータをホストに転送する。転送終了後、フラッシュROM1に次のリードコマンドを発行する。
(6)フラッシュROM2のデータをホストに転送する。転送終了後、フラッシュROM2に次のリードコマンドを発行する。
(7)フラッシュROM3のデータをホストに転送する。転送終了後、フラッシュROM3に次のリードコマンドを発行する。
(8)フラッシュROM4のデータをホストに転送する。転送終了後、フラッシュROM4に次のリードコマンドを発行する。
(9)(5)に戻る。
書き込み時には、次のように4つのフラッシュROMを順番に転送することにより、フラッシュROMの待ち時間の間に他のデータを転送することになり、高速化することができる。
(1)フラッシュROM1にデータ入力コマンドを発行し、書き込みデータを転送し、書き込みコマンドを発行する。
(2)フラッシュROM2にデータ入力コマンドを発行し、書き込みデータを転送し、書き込みコマンドを発行する。
(3)フラッシュROM3にデータ入力コマンドを発行し、書き込みデータを転送し、書き込みコマンドを発行する。
(4)フラッシュROM4にデータ入力コマンドを発行し、書き込みデータを転送し、書き込みコマンドを発行する。
(5)フラッシュROM1の書き込み完了待ちをし、エラー判定を行う。正常に書き込みが完了すればデータ入力コマンドを発行し、書き込みデータを転送し、書き込みコマンドを発行する。
(6)フラッシュROM2の書き込み完了待ちをし、エラー判定を行う。正常に書き込みが完了すればデータ入力コマンドを発行し、書き込みデータを転送し、書き込みコマンドを発行する。
(7)フラッシュROM3の書き込み完了待ちをし、エラー判定を行う。正常に書き込みが完了すればデータ入力コマンドを発行し、書き込みデータを転送し、書き込みコマンドを発行する。
(8)フラッシュROM4の書き込み完了待ちをし、エラー判定を行う。正常に書き込みが完了すればデータ入力コマンドを発行し、書き込みデータを転送し、書き込みコマンドを発行する。
(9)(5)に戻る。
ガーベージコレクション時のクラスタデータの転送時には、従来は、クラスタデータを一旦RAM等の記憶部に読み込んでから書き込む必要があった。本装置では、R/W Strobe信号を両方のグループに同時に出すことによって、1回の動作で読み込みと書き込みを同時に行うことができる。これにより、グループ間のデータ転送を高速に行うことができる。ブロックを消去する際にも、ほぼ同時にコマンドを発行するために、1回の実行時間で4つのブロックを消去できる。
本装置では、ECC単位内に含まれるECC情報は、ランダムな2ビットのエラー検出、1ビットのエラー訂正可能な3バイトのECC情報である。したがって、1セクタ当たり(それぞれのECC単位において)4ビットまでのエラー検出、2ビットまでのランダムエラーを訂正できる。この他にも、Read−Solomon符号等のより多くのビットのエラー検出/訂正ができるECCを使用すれば、より高信頼性を確保できる。。
外部記憶用フラッシュROMが接続されるディジタルカメラ等、大容量のフラッシュROM接続対応電子機器に適用可能である。
本発明の実施形態であるフラッシュROM制御装置の構成図 フラッシュROMのリード時のタイミングチャート フラッシュROMのライト時のタイミングチャート 単位エリアの関係を示す図 ホストからの読み込み要求に対する従来装置と本装置のデータの読み込み方式を示す図 テーブル構成図 テーブル記憶内容を示す図 FATファイルシステムとフラッシュROMとのデータ領域の対比図 従来装置に対して本装置の書き込み方式が高速である理由を示す図 本発明の第1の実施例の構成図 物理クラスタへのアクセス順序を示す図 リードコマンド発行時の動作を示すフローチャート ライトコマンド発行時の動作を示すフローチャート ホストI/FからフラッシュROMへのクラスタデータの書き込み手順を示すフローチャート RAMからフラッシュROMへのクラスタデータの書き込み手順を示すフローチャート ソースクラスタデータをRAMへ保存する動作を示すフローチャート 書き込みエラー処理を示すフローチャート 新しい書き込みクラスタ番号を取得する時の動作を示すフローチャート 世代交代処理を示すフローチャート ガーベージコレクションの動作を示すフローチャート 本装置のガーベージコレクションの優位性を示す図 ガーベージコレクション時のフラッシュROM間コピーについて説明するための図 本発明の第2の実施例の構成図 物理クラスタへのアクセス順序を示す図

Claims (8)

  1. フラッシュROMの消去単位がブロック単位であるフラッシュROMとホストとの間に接続されるフラッシュROM制御装置において、
    前記ブロック単位よりも小さい所定単位当たりの論理アドレスを物理アドレスに変換するための論理→物理変換テーブルと、
    前記所定単位以下の物理アドレスを論理アドレスに変換するための物理→論理変換テーブルと、
    ホストからの書込み要求時に、フラッシュROMの未使用単位エリアに書き込むとともに、前記論理→物理変換テーブルと物理→論理変換テーブルの更新を行う制御部とを備え、
    前記制御部は、前記論理→物理変換テーブルの更新時に、同一論理アドレスに対する物理アドレスの変更回数を世代番号として前記論理→物理変換テーブルに記憶する処理と、世代番号が所定の最大値になると該最大値になった世代番号の論理アドレスに対応する全ての物理アドレスを前記物理→論理変換テーブルを参照することで抽出してこれを無効化する処理と、前記無効化処理を行ったときに、有効エリアのなくなったブロックを見つけると、そのブロックを消去する処理とを行うことを特徴とするフラッシュROM制御装置。
  2. 前記各ブロックの有効エリア数、不良有無を記憶するブロックステータステーブルをさらに備え、
    前記制御部は、前記ブロックステータステーブルを参照して有効エリアのなくなったブロックを見つけることを特徴とする請求項1記載のラッシュROM制御装置。
  3. 前記世代番号は、論理アドレス毎に初期値を異ならせたことを特徴とする請求項1記載のフラッシュROM制御装置。
  4. 前記制御部は、前記世代番号が前記最大値以上になって前記無効化処理が行われると、世代番号を初期値に戻す世代交代処理を行うこと特徴とする請求項1に記載のフラッシュROM制御装置。
  5. 前記論理→物理変換テーブルは前記物理→論理変換テーブルよりも小さく設定され、ホストに対し、アクセス可能な物理アドレスの大きさを実際の大きさよりも小さくみせることを特徴とする請求項1記載のフラッシュROM制御装置。
  6. フラッシュROMへの書込み又は読み込み単位が前記ブロック単位よりも小さなページ単位であり、
    前記所定単位は、前記ブロック単位以下で且つ前記ページ単位以上の大きさのクラスタ単位である、請求項1に記載のフラッシュROM制御装置。
  7. ホストからの読み込み又は書込み単位が前記ページ単位以下のセクタ単位であり、前記セクタは、フラッシュROM内において複数のデータ部と各データ部に対応したエラー訂正コードであるECCを含み、
    前記セクタは、フラッシュROM内においてデータ部と該データ部に対応するECCとを組にして組毎に記憶され、
    前記制御部は、読み込み時において、データ部とECCの組を読み込むときに、同時にそれまでに読み込んでいた他の組のデータ部をホストに転送する制御を行い、これにより高速化することを特徴とする請求項6に記載のフラッシュROM制御装置。
  8. 前記制御部は、前記有効エリアのなくなったときに行うブロックの消去処理をしても未使用ブロック数が一定以上にならないときに、ガーベージコレクション処理を行うことを特徴とする請求項1記載のフラッシュROM制御装置。
JP2003347469A 2003-10-06 2003-10-06 フラッシュrom制御装置 Expired - Fee Related JP4242245B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003347469A JP4242245B2 (ja) 2003-10-06 2003-10-06 フラッシュrom制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003347469A JP4242245B2 (ja) 2003-10-06 2003-10-06 フラッシュrom制御装置

Publications (2)

Publication Number Publication Date
JP2005115561A true JP2005115561A (ja) 2005-04-28
JP4242245B2 JP4242245B2 (ja) 2009-03-25

Family

ID=34540033

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003347469A Expired - Fee Related JP4242245B2 (ja) 2003-10-06 2003-10-06 フラッシュrom制御装置

Country Status (1)

Country Link
JP (1) JP4242245B2 (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007018499A (ja) * 2005-06-06 2007-01-25 Sony Corp 記憶装置
JP2007048184A (ja) * 2005-08-12 2007-02-22 Renesas Technology Corp メモリカード
JP2008159013A (ja) * 2006-11-28 2008-07-10 Hitachi Ltd 半導体記憶装置
JP2008537192A (ja) * 2005-01-31 2008-09-11 サンディスク アイエル リミテッド フラッシュメモリ内でコピー操作を管理する方法
JP2009116601A (ja) * 2007-11-06 2009-05-28 Sony Corp メモリ装置、メモリ管理方法、およびプログラム
JP2009217603A (ja) * 2008-03-11 2009-09-24 Toshiba Corp メモリシステム
JP2009252255A (ja) * 2008-04-01 2009-10-29 Renesas Technology Corp 不揮発性半導体記憶装置
US7890550B2 (en) 2006-11-03 2011-02-15 Samsung Electronics Co., Ltd. Flash memory system and garbage collection method thereof
WO2013025083A2 (ko) * 2011-08-18 2013-02-21 영남대학교 산학협력단 피램에 데이터를 저장하는 전자기기 및 그의 메모리 제어방법
JP2013174972A (ja) * 2012-02-23 2013-09-05 Toshiba Corp メモリシステム、コントローラ、メモリシステムの制御方法
KR20160146506A (ko) * 2015-06-12 2016-12-21 삼성전자주식회사 파일 액세스 방법, 컴퓨터, 및 컴퓨터-읽기 가능한 매체에 실행 가능한 소프트웨어 제품
JP2017111476A (ja) * 2015-12-14 2017-06-22 株式会社東芝 メモリシステムおよび制御方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3088749B1 (en) * 2014-06-24 2019-10-30 Shincron Co., Ltd. Oil diffusion pump and oil vapor generator used therefor

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008537192A (ja) * 2005-01-31 2008-09-11 サンディスク アイエル リミテッド フラッシュメモリ内でコピー操作を管理する方法
JP2007018499A (ja) * 2005-06-06 2007-01-25 Sony Corp 記憶装置
US8285916B2 (en) 2005-06-06 2012-10-09 Sony Corporation Storage device
JP2007048184A (ja) * 2005-08-12 2007-02-22 Renesas Technology Corp メモリカード
US7890550B2 (en) 2006-11-03 2011-02-15 Samsung Electronics Co., Ltd. Flash memory system and garbage collection method thereof
JP2008159013A (ja) * 2006-11-28 2008-07-10 Hitachi Ltd 半導体記憶装置
JP2009116601A (ja) * 2007-11-06 2009-05-28 Sony Corp メモリ装置、メモリ管理方法、およびプログラム
JP4535117B2 (ja) * 2007-11-06 2010-09-01 ソニー株式会社 メモリ装置、メモリ管理方法、およびプログラム
US8205033B2 (en) 2007-11-06 2012-06-19 Sony Corporation Memory device, memory management method, and program
JP4643671B2 (ja) * 2008-03-11 2011-03-02 株式会社東芝 メモリシステム
JP2009217603A (ja) * 2008-03-11 2009-09-24 Toshiba Corp メモリシステム
JP2009252255A (ja) * 2008-04-01 2009-10-29 Renesas Technology Corp 不揮発性半導体記憶装置
WO2013025083A2 (ko) * 2011-08-18 2013-02-21 영남대학교 산학협력단 피램에 데이터를 저장하는 전자기기 및 그의 메모리 제어방법
WO2013025083A3 (ko) * 2011-08-18 2013-05-30 영남대학교 산학협력단 피램에 데이터를 저장하는 전자기기 및 그의 메모리 제어방법
JP2013174972A (ja) * 2012-02-23 2013-09-05 Toshiba Corp メモリシステム、コントローラ、メモリシステムの制御方法
KR20160146506A (ko) * 2015-06-12 2016-12-21 삼성전자주식회사 파일 액세스 방법, 컴퓨터, 및 컴퓨터-읽기 가능한 매체에 실행 가능한 소프트웨어 제품
JP2017004524A (ja) * 2015-06-12 2017-01-05 三星電子株式会社Samsung Electronics Co.,Ltd. ファイルアクセス提供方法、コンピュータ、及びソフトウェア製品
KR102316198B1 (ko) 2015-06-12 2021-10-25 삼성전자주식회사 파일 액세스 방법, 컴퓨터, 및 컴퓨터-읽기 가능한 매체에 실행 가능한 소프트웨어 제품
JP2017111476A (ja) * 2015-12-14 2017-06-22 株式会社東芝 メモリシステムおよび制御方法

Also Published As

Publication number Publication date
JP4242245B2 (ja) 2009-03-25

Similar Documents

Publication Publication Date Title
CN109144888B (zh) 存储器系统
JP4524309B2 (ja) フラッシュメモリ用のメモリコントローラ
US8051258B2 (en) Apparatus and methods using invalidity indicators for buffered memory
USRE42263E1 (en) Address conversion unit for memory device
JP4079506B2 (ja) 不揮発性半導体メモリシステムの制御方法
USRE45222E1 (en) Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table
JP4633802B2 (ja) 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
US8166233B2 (en) Garbage collection for solid state disks
US5953737A (en) Method and apparatus for performing erase operations transparent to a solid state storage system
JP4738038B2 (ja) メモリカード
US8996791B2 (en) Flash memory device, memory control device, memory control method, and storage system
US20080120488A1 (en) Apparatus and method of managing nonvolatile memory
US20050172068A1 (en) Memory card and semiconductor device
US10310764B2 (en) Semiconductor memory device and storage apparatus comprising semiconductor memory device
JP5137413B2 (ja) 半導体記憶装置
WO2006009322A2 (en) Memory card, nonvolatile semiconductor memory, and method of controlling semiconductor memory
CN110321065B (zh) 存储装置及计算机系统
US9389998B2 (en) Memory formatting method, memory controller, and memory storage apparatus
JP4242245B2 (ja) フラッシュrom制御装置
US20100318726A1 (en) Memory system and memory system managing method
JPH10124384A (ja) 不揮発性半導体メモリの制御方法
JP2005115562A (ja) フラッシュrom制御装置
JP2007293917A (ja) メモリシステムの制御方法
JP2012068765A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP5204265B2 (ja) 半導体記憶装置及び半導体記憶装置の制御方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20060403

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060403

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060721

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080930

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081030

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

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

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

Free format text: PAYMENT UNTIL: 20120109

Year of fee payment: 3

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120109

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313532

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

Free format text: PAYMENT UNTIL: 20120109

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20120109

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20150109

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees