JP2007094571A - メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 - Google Patents

メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 Download PDF

Info

Publication number
JP2007094571A
JP2007094571A JP2005280561A JP2005280561A JP2007094571A JP 2007094571 A JP2007094571 A JP 2007094571A JP 2005280561 A JP2005280561 A JP 2005280561A JP 2005280561 A JP2005280561 A JP 2005280561A JP 2007094571 A JP2007094571 A JP 2007094571A
Authority
JP
Japan
Prior art keywords
data
storage unit
written
data storage
page
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
JP2005280561A
Other languages
English (en)
Other versions
JP4661497B2 (ja
Inventor
Shunichi Hanabusa
俊一 花房
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.)
TDK Corp
Original Assignee
TDK 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 TDK Corp filed Critical TDK Corp
Priority to JP2005280561A priority Critical patent/JP4661497B2/ja
Publication of JP2007094571A publication Critical patent/JP2007094571A/ja
Application granted granted Critical
Publication of JP4661497B2 publication Critical patent/JP4661497B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】 書き替えが発生するごとに物理ブロック全体のデータの書き替える必要のない、フラッシュメモリシステムを提供する。
【解決手段】 それぞれページP0〜P31で構成された一括消去単位の物理ブロック♯0,♯1…において、ページP0〜P15を書き替え前のオリジナルデータを記憶するためのオリジナルデータ記憶部とし、ページP16〜P31を書き替えデータを記憶するための更新データ記憶部とする。論理アドレス空間の論理ブロックのLB0,LB1…の各セクタのユーザデータを最初に書き込むときは、論理ブロックLB0,LB1…内のセクタ番号に対応するオリジナルデータ記憶部のページに書き込み、その書き替えデータを書き込むときには、オリジナルデータ記憶部のページに対応する更新データ記憶部のページに書き替えデータを書き込む。
【選択図】 図3

Description

本発明は、メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関する。
近年、メモリーカードやシリコンディスク等の形態でメモリシステムに使用される半導体メモリに、フラッシュメモリが広く採用されている。フラッシュメモリに格納されたデータは、電力が供給されていないときでも保持されていることが要求される。
NAND型フラッシュメモリは、上記のメモリシステムで特に多く用いられるフラッシュメモリである。
NAND型フラッシュメモリに含まれている複数のメモリセルのそれぞれは、消去状態のときに論理値“1”を示し、書き込状態の時に“0”を示す。そして、複数のメモリセルは、他のメモリセルとは独立して消去状態から書き込状態へと変化することができる。
これとは対照的に、書き込状態から消去状態へと変化するときには、各メモリセルは他のメモリセルと独立して変化することができない。このときには、ブロックと称される予め定められた所定数のメモリセルが、全て同時に消去状態になる。この一括消去動作は、一般的に、「ブロック消去」と称されている。NAND型フラッシュメモリに対する書き込み処理若しくは読み出し処理は、ページと称される予め定められた数のメモリセル単位に処理が行われる。消去処理の単位であるブロックは複数のページで構成されている。
NAND型フラッシュメモリでは、上記のようにブロック単位で消去処理が行われるため、通常、ホストシステム側から与えられるアドレスとフラッシュメモリ内でのアドレスとの対応関係を、ブロック単位で管理している。例えば、下記特許文献1では、ホストシステム側から与えられるアドレスに基づく論理ブロックアドレスと、フラッシュメモリ内でのブロックアドレスである物理ブロックアドレスとを1対1に対応させ、その変換を行っている。
特開2003−76605号公報
NAND型フラッシュメモリは、このような特徴を有するため、通常、データの書き替を行なう場合には、ブロック消去されている消去済ブロックに新たなデータ(書き替え後のデータ)を書き込み、古いデータ(書き替え前のデータ)が書き込まれていたブロックを消去するという処理を行なっている。
フラッシュメモリの任意の物理ブロックに記憶された元のユーザデータを新たなユーザデータに書き替える場合、その書き替え対象の元のユーザデータの書き込まれたページのみを書き替えることができず、物理ブロック全体の書き替えを行う。即ち、書き替える場合には、書き替えが発生した物理ブロックの代わりに、すべてのユーザデータが消去されている消去済み物理ブロックに、その新たなユーザデータを書き込むと共に、書き替えが発生した物理ブロックの書き替え対象以外の元のユーザデータを書き込む必要がある。
このように、フラッシュメモリにすでに書き込まれているユーザデータを書き替える場合には、そのユーザデータが物理ブロックのごく一部に書き込まれているデータであっても、2つの物理ブロックに対して処理を行わなくてはならず、能率が悪く、且つ処理時間も必要以上にかかっていた。さらに、書き替えが頻繁に行われる場合には、物理ブロックの書き替え回数が増加し、書き替え可能回数の限界を超える物理ブロックが増加する危険性もあった。
本発明は、このような課題を解決し、書き替えが発生するごとに物理ブロック全体のデータの書き替える必要のない、メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法を提供することを目的とする。
上記目的を達成するために、本発明の第1の観点に係るメモリコントローラは、
複数ページからなる物理ブロックが複数含まれる記憶領域を有し、データの消去が物理ブロック単位で行われるとともに、該物理ブロックのデータの消去済の部分にページ単位でデータの書き込みが可能なフラッシュメモリに接続され、該フラッシュメモリに対するホストシステムからのアクセスを制御するメモリコントローラであって、
前記各物理ブロックの複数のページのうちの一部のページを、書き替え前のデータを書き込むためのオリジナルデータ記憶部とし、該オリジナルデータ記憶部のページに前記ホストシステムから与えられたデータを書き込むオリジナルデータ書き込み手段と、
前記各物理ブロックの複数のページのうちの前記オリジナルデータ記憶部以外のページを、書き替え後のデータを書き込むための更新データ記憶部とし、前記オリジナルデータ記憶部に書き込まれたデータの書き替えデータが前記ホストシステムから与えられたときに、該書き替えデータを該更新データ記憶部に書き込む更新データ書き込み手段と、
を備えることを特徴とする。
尚、前記更新データ書き込み手段は、前記更新データ記憶部のページを前記オリジナルデータ記憶部のページに対応させ、該オリジナルデータ記憶部に書き込まれたデータの書き替えデータが前記ホストシステムから与えられたときに、該オリジナルデータ記憶部に書き込まれたデータの書き込まれたページに対応する更新データ記憶部のページに、該書き替えデータを書き込んでもよい。
また、前記更新データ書き込み手段は、前記各物理ブロックの前記オリジナルデータ記憶部以外のページを、書き替え後のデータを書き込むための複数の更新データ記憶部とし、前記オリジナルデータ記憶部の特定のページに書き込まれたデータの書き替えデータ或いはその書き替えデータの書き替えデータが与えられるごとに、該書き替えデータを書き込み先を前記更新データ記憶部を変更して書き込んでもよい。
この場合、前記各物理ブロックの前記複数の更新データ記憶部の各ページを前記オリジナルデータ記憶部のページに対応させ、前記オリジナルデータ記憶部のページに書き込まれたデータの書き替えデータ或いはその書き替えデータの書き替えデータを該オリジナルデータ記憶部のページに対応させて各更新データ記憶部のページに書き込んでもよい。
また、前記更新データ書き込み手段は、前記オリジナルデータ記憶部に書き込まれたデータの書き替えデータ或いは前記更新データ記憶部に書き込まれているデータの書き替えデータが前記ホストシステムから与えられたときに、該書き替えデータを該更新データ記憶部に書き込んでもよい。
この場合、前記更新データ書き込み手段は、前記オリジナルデータ記憶部に書き込まれたデータの書き替えデータ或いは前記更新データ記憶部に書き込まれたデータの書き替えデータが前記ホストシステムから与えられるごとに、前記更新データ記憶部のページに順に書き込んでもよい。
上記目的を達成するために、本発明の第2の観点に係るフラッシュメモリシステムは、本発明の第1の観点に係るメモリコントローラと、前記フラッシュメモリとを備えることを特徴とする。
上記目的を達成するために、本発明の第3の観点に係るフラッシュメモリの制御方法は、
複数ページからなる物理ブロックが複数含まれる記憶領域を有し、データの消去が物理ブロック単位で行われるとともに、該物理ブロックのデータの消去済の部分にページ単位でデータの書き込みが可能なフラッシュメモリに対し、
前記各物理ブロックの複数のページのうちの一部のページを、書き替え前のデータを書き込むためのオリジナルデータ記憶部とし、該オリジナルデータ記憶部のページに前記ホストシステムから与えられたデータを書き込むオリジナルデータ書き込み処理と、
前記各物理ブロックの複数のページのうちの前記オリジナルデータ記憶部以外のページを、書き替え後のデータを書き込むための更新データ記憶部とし、前記オリジナルデータ記憶部に書き込まれたデータの書き替えデータが前記ホストシステムから与えられたときに、該書き替えデータを該更新データ記憶部に書き込む更新データ書き込み処理とを、
含むことを特徴とする。
尚、前記更新データ書き込み処理は、前記更新データ記憶部のページを前記オリジナルデータ記憶部のページに対応させ、該オリジナルデータ記憶部に書き込まれたデータの書き替えデータが前記ホストシステムから与えられたときに、該オリジナルデータ記憶部に書き込まれたデータの書き込まれたページに対応する更新データ記憶部のページに、該書き替えデータを書き込んでもよい。
また、前記更新データ書き込み処理は、前記各物理ブロックの前記オリジナルデータ記憶部以外のページを、書き替え後のデータを書き込むための複数の更新データ記憶部とし、前記オリジナルデータ記憶部の特定のページに書き込まれたデータの書き替えデータ或いはその書き替えデータの書き替えデータが与えられるごとに、該書き替えデータを書き込み先を前記更新データ記憶部を変更して書き込んでもよい。
この場合、前記各物理ブロックの前記複数の更新データ記憶部の各ページを前記オリジナルデータ記憶部のページに対応させ、前記オリジナルデータ記憶部のページに書き込まれたデータの書き替えデータ或いはその書き替えデータの書き替えデータを該オリジナルデータ記憶部のページに対応させて各更新データ記憶部のページに書き込んでもよい。
また、前記更新データ書き込み処理は、前記オリジナルデータ記憶部に書き込まれたデータの書き替えデータ或いは前記更新データ記憶部に書き込まれているデータの書き替えデータが前記ホストシステムから与えられたときに、該書き替えデータを該更新データ記憶部に書き込んでもよい。
この場合、前記更新データ書き込み処理は、前記オリジナルデータ記憶部に書き込まれたデータの書き替えデータ或いは前記更新データ記憶部に書き込まれたデータの書き替えデータが前記ホストシステムから与えられるごとに、前記更新データ記憶部のページに順に書き込んでもよい。
本発明によれば、書き替えが発生するごとに物理ブロック全体のデータの書き替える必要のないフラッシュメモリシステムを実現できる。
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
[第1の実施形態]
図1は、本発明の第1の実施形態に係るフラッシュメモリシステム1の概要を示す構成図である。
図1に示したように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するメモリコントローラ3で構成されている。このフラッシュメモリシステム1は、通常、ホストシステム4に着脱可能に装着され、ホストシステム4に対して、一種の外部記憶装置として用いられる。
尚、ホストシステム4としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
以下に、フラッシュメモリ2及びメモリコントローラ3の詳細を説明する。
[フラッシュメモリ2の説明]
このフラッシュメモリシステム1において、データが記憶されるフラッシュメモリ2は、NAND型フラッシュメモリで構成されている。NAND型フラッシュメモリは、ストレージデバイスへの用途として(ハードディスクの代わりになるものとして)開発された不揮発性メモリである。このNAND型フラッシュメモリは、ランダムアクセスを行なうことができず、書き込みと読み出しはページ単位で、消去は複数ページからなる物理ブロック単位で行なわれる。又、フラッシュメモリ2のデータの上書きができないので、データを書き込むときは、消去されている領域にデータの書き込みが行なわれる。
このような特徴を有するフラッシュメモリ2では、ホストシステム4側から与えられる論理アドレスと、フラッシュメモリ2内での物理アドレスとの対応関係は、動的に変化する。従って、フラッシュメモリ2にアクセスするときには、通常、ホストシステム4で用いる論理アドレスとフラッシュメモリ2の物理アドレスとの対応関係を示したアドレス変換テーブルが作成され、このアドレス変換テーブルを用いて、フラッシュメモリ2に対するアクセスが行なわれる。
図2は、ブロックとページの関係を示す説明図である。
上記ブロックとページの構成は、フラッシュメモリ2の仕様によって異なるが、一般的なフラッシュメモリ2では、図2(a)に示したように、1物理ブロックが32ページ(P0〜P31)で構成され、各ページが512バイトのユーザ領域と16バイトの冗長領域で構成されている。近年では、容量の増加に伴い、1物理ブロックが64ページ(P0〜P63)で構成され、各ページが2048バイトのユーザ領域と64バイトの冗長領域で構成されているものもある。本実施形態のフラッシュメモリ2は、1物理ブロックが32ページ(P0〜P31)で構成され、各ページが512バイトのユーザ領域と16バイトの冗長領域で構成されているものとする。
物理ブロックの各ページのユーザ領域は、主に、ホストシステム4から供給されるユーザデ―タやその書き替えデータが記憶される領域であり、冗長領域は、誤り訂正符号、対応論理アドレス情報及びブロックステータス等の付加データが記憶される領域である。誤り訂正符号は、ユーザ領域に記憶されているデータに含まれる誤りを検出、訂正するための付加データであり、後述するECCブロックによって生成される。
本実施形態のフラッシュメモリシステム1では、フラッシュメモリ2の各物理ブロックに、書き替え前のユーザデータ(オリジナルデータ)を書き込むオリジナルデータ記憶部と、オリジナルデータ記憶部に書き込まれたオリジナルデータの書き替えデータを書き込む更新データ記憶部とを設定する。
具体的には、フラッシュメモリ2の各物理ブロックのページP0〜P15の16ページを、オリジナルデータを書き込むためのオリジナルデータ記憶部とし、ページP16〜P31を書き替え用のデータを書き込むための更新データ記憶部とする。そして、オリジナルデータ記憶部のページと更新データ記憶部のページとを一対一に対応させ、オリジナルデータ記憶部内でのページの番号と更新データ記憶部内でのページ番号とを対応させている。即ち、ページP0に書き込まれたユーザデータの書き替えデータは、ページP16に書き込まれる。ページP1に書き込まれたユーザデータの書き替えデータは、ページP17に書き込まれる。以下、同様に、若番側から各ページP2,P3,…,P15に書き込まれたユーザデータの書き替えデータは、ページP18,P19,…,P31にそれぞれ書き込まれる。
前述の対応論理アドレス情報は、物理ブロックのユーザデータが書き込まれているページの冗長領域に書き込まれ、その物理ブロックに記憶されているユーザデータの論理ブロックのアドレスに関する情報を示している。尚、物理ブロックにユーザデータが記憶されていない場合は、対応論理アドレス情報がいずれのページにも書き込まれないので、対応論理アドレス情報が書き込まれているか否かで、そのブロックが消去済ブロックであるか否かを判断することができる。つまり、対応論理ブロックアドレスが書き込まれていない場合は、消去済ブロックであると判断される。
ブロックステータスは、その物理ブロックが不良ブロック(正常にデータの書き込み等を行なうことができない物理ブロック)であるか否かを示すフラグであり、その物理ブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。
次に、フラッシュメモリ2の回路構成について説明する。
一般的なNAND型フラッシュメモリは、書き込みデータ若しくは読み出しデータを保持するためのレジスタと、データを記憶するメモリセルアレイによって構成されている。メモリセルアレイは、複数のメモリセルが直列に接続されたメモリセル群を複数備えており、ワード線によって、メモリセル群の特定のメモリセルが選択される。このワード線によって選択されたメモリセルとレジスタの間で、データの複写(レジスタからメモリセルへの複写、若しくはメモリセルからレジスタへの複写)が行なわれる。
メモリセルアレイを構成するメモリセルは、2つのゲートを備えたMOSトランジスタで構成されている。ここで、上側のゲートはコントロールゲートと、下側のゲートはフローティングゲートと呼ばれており、フローティングゲートに電荷(電子)を注入したり、フローティングゲートから電荷(電子)を排出したりすることによって、データの書き込みや消去を行っている。
フローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧を印加して電子を注入し、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧を印加して電子を排出する。フローティングゲートに電子が注入されている状態(書き込状態)が、論理値"0"のデータに対応し、フローティングゲートから電子が排出されている状態(消去状態)が、論理値"1"のデータに対応する。
[メモリコントローラ3の説明]
メモリコントローラ3は、ホストインターフェース制御ブロック5と、マイクロプロセッサ6と、ホストインターフェースブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリインターフェースブロック10と、ECC(エラー・コレクション・コード)ブロック11と、フラッシュメモリシーケンサブロック12とから構成される。これら機能ブロックによって構成されるメモリコントローラ3は、一つの半導体チップ上に集積されている。
ホストインターフェースブロック7が外部バス13を介してホストシステム4と接続され、フラッシュメモリインターフェースブロック10が、フラッシュメモリ2と内部バス14で接続されている。
以下に、各機能ブロックの機能を説明する。
マイクロプロセッサ6は、カウンター等を内蔵し、メモリコントローラ3を構成する各機能ブロック全体の、動作を制御する機能ブロックである。
ホストインターフェース制御ブロック5は、ホストインターフェースブロック7の動作を制御する機能ブロックである。ここで、ホストインターフェース制御ブロック5は、ホストインターフェースブロック7の動作を設定する動作設定レジスタ(図示せず)を備えており、この動作設定レジスタに基づいて、ホストインターフェースブロック7は動作する。
ホストインターフェースブロック7は、ホストシステム4とデータ、アドレス情報、ステータス情報及び外部コマンド情報の授受を行なう機能ブロックである。すなわち、フラッシュメモリシステム1がホストシステム4に装着されると、フラッシュメモリシステム1とホストシステム4は、外部バス13を介して相互に接続される。かかる状態において、ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホストインターフェースブロック7を入口として、フラッシュメモリシステム1の内部に取り込まれ、フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホストインターフェースブロック7を出口として、ホストシステム4に供給される。
さらに、ホストインターフェースブロック7は、ホストシステム4より供給される論理アドレス、セクタ数及び外部コマンドを保持するレジスタや、エラーが発生した場合にセットされるエラーレジスタ(図示せず)等を有している。
ワークエリア8は、フラッシュメモリ2の制御に必要なデータが一時的に格納される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成されている。
バッファ9は、フラッシュメモリ2から読み出したデータ及びフラッシュメモリ2に書き込むデータを、一時的に保持する機能ブロックである。すなわち、フラッシュメモリ2から読み出したデータは、ホストシステム4の受取準備ができるまで、バッファ9に保持され、フラッシュメモリ2に書き込むデータは、フラッシュメモリ2の書き込準備ができるまで、バッファ9に保持される。
フラッシュメモリシーケンサブロック12は、フラッシュメモリ2に対するアクセスを制御する機能ブロックである。フラッシュメモリシーケンサブロック12は、複数のレジスタ(図示せず)を備え、この複数のレジスタに、フラッシュメモリ2に対するアクセス処理を実行する際に必要な情報が、マイクロプロセッサ6によって設定される。この複数のレジスタに設定された情報に基づいて、内部コマンド、アドレス情報等が、フラッシュメモリ2に供給される。
ここで、「内部コマンド」とは、メモリコントローラ3からフラッシュメモリ2に与えられるコマンドであり、ホストシステム4からフラッシュメモリシステム1に与えられるコマンドである「外部コマンド」と区別される。
フラッシュメモリインターフェースブロック10は、内部バス14を介して、フラッシュメモリ2とデータ、アドレス情報、ステータス情報、内部コマンド情報及びデバイスID情報等の授受を行なう機能ブロックである。
ECCブロック11は、フラッシュメモリ2に書き込むデ―タに付加されるエラーコレクションコードを生成するとともに、読み出しデータに付加されているエラーコレクションコードに基づいて、読み出したデータに含まれる誤りを検出・訂正する機能ブロックである。
[フラッシュメモリ2に対するアクセスの説明]
次に、フラッシュメモリ2に対するアクセスを行う場合のフラッシュメモリシステム1の動作を、図面を参照して説明する。
図3は、論理アドレス空間と物理アドレス空間を示す説明図である。
ホストシステム4は、記憶領域の位置を指定するために論理アドレスを用いる。図3には、論理アドレスで表される論理アドレス空間が、セクタ単位で付けた連番であるLBA(Logical Block Address)で、示されている。
フラッシュメモリ2の記憶領域は、それぞれ複数のページ(P0〜P31)からなる物理ブロック(♯0,♯1,…)群で構成されている。各ページには、論理アドレス空間の1セクタ分のユーザデータが書き込まれる。ここで、本実施形態では、各物理ブロックのページP0〜P15の16ページをオリジナルデータ領域とし、ページP16〜P31の16ページを更新データ領域とし、各物理ブロック♯0,♯1,…には、論理アドレス空間の16セクタ分のユーザデータとその書き替えデータとが書き込まれる。従って、一括消去単位の各物理ブロック♯0,♯1,…に対応する論理ブロックは、16セクタで構成される。
メモリコントローラ3は、論理ブロックLB0,LB1,…と物理ブロック♯0,♯1,…との対応関係を示したアドレス変換テーブルを作成し、このアドレス変換テーブルを用いてアクセスするページのアドレスを求める。アドレス変換テーブルは、各物理ブロック♯0,♯1,…の冗長領域に書き込まれている対応論理アドレス情報に関する情報(その物理ブロックに書き込まれているユーザデータに対応する論理ブロックを示す情報)に基づいて作成される。
例えば、物理ブロック♯0,♯1,…にユーザデータを書き込んだときに、そのユーザデータを書き込んだ論理ブロックの連番LB0,LB1,…を対応論理アドレス情報として物理ブロック♯0,1,…のページの冗長領域に書き込んでおき、この連番LB0,LB1,…を順次読み出すことにより、アドレス変換テーブルを作成することができる。尚、アドレス変換テーブルは、ワークエリア8上に作成され、論理ブロックLB0,LB1,…と物理ブロック♯0,♯1,…との対応関係が変化したときには、書き替えられる。アドレス変換テーブルを利用した書き込み処理を図4及び図5を参照して説明する。
図4及び図5は、書き込み処理を示すフローチャートである。
フラッシュメモリ2にアクセスする場合、ホストシステム4は、書き込みコマンド或いは読み出しみコマンドをメモリコントローラ3に供給すると共に、アクセス対象を指定する。対象の指定は、論理アドレス空間上の位置を示す論理アドレス情報で示される。
論理アドレス情報は、所定のビット幅を有する2進数であり、上位側が論理ブロックLB0,LB1,…を示し、下位側の4ビットが各論理ブロックLB0,LB1,…におけるセクタ番号となると共に、各物理ブロック♯0,♯1,…におけるページ番号となる。つまり、論理アドレス情報の下位側の4ビットは、各物理ブロックのオリジナルデータ記憶部内のページ番号或いは更新データ記憶部内のページ番号を示すことになる。
連続するセクタをアクセス対象とする場合、ホストシステム4は、論理アドレス情報によってアクセス対象の先頭のセクタを示すと共に、アクセス対象となるセクタの数を指定する。この場合、メモリコントローラ3のマイクロプロセッサ6が、ホストシステム4の指定する各アクセス対象のセクタに対応する論理アドレス情報を順次生成する。
メモリコントローラ3のマイクロプロセッサ6は、ホストシステム4から書き込みコマンド及び論理アドレス情報とセクタ数が与えられると、そのセクタ数を内蔵するカウンタに設定し、書き込みを行うごとに設定したセクタ数をデクリメントすると共に、次に書き込みを行う論理アドレス情報を作成する。カウンタに設定されているセクタ数が0になると、次に書き込みを行うユーザデータがないと判断し(ステップS1:NO)、マイクロプロセッサ6は、論理アドレス情報を生成せず、書き込み処理を終了する。
メモリコントローラ3は、マイクロプロセッサ6が次に書き込みを行うユーザデータがあると判断し、論理アドレス情報を生成した場合(ステップS1:YES)、論理アドレス情報の上位側で指定される論理ブロックに対応する物理ブロックを、対象ブロックとしてアドレス変換テーブルから検索する(ステップS2)。
ステップS2の検索の結果、ホストシステム4が指定する論理ブロックに対応する対象ブロックがアドレス変換テーブルから求められない場合(ステップS3:NO)、消去済の1つの物理ブロックを対象ブロックとし、論理アドレスの下位側が示す論理ブロック内のセクタ番号を、その対象ブロックのアクセス対象ページの番号とする。
メモリコントローラ3は、フラッシュメモリ2の対象ブロックとなった消去済ブロックのアクセス対象ページのユーザ領域に、ユーザデータを書き込むと共にそのアクセス対象ページの冗長領域に、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データを書き込む(ステップS4)。
さらに、メモリコントローラ3は、アドレス変換テーブルに、対象ブロックとなった物理ブロックの番号と、その物理ブロックに対応する論理ブロックの番号を対応させて書き込む(ステップS5)。即ち、アドレス変換テーブルを更新する。
ステップS2の検索で、対象ブロックとなる物理ブロックが検出された場合(ステップS3:YES)、そのフラッシュメモリ2の対象ブロックの冗長領域を調べ、論理アドレスの下位側が示す論理ブロック内のセクタ番号に等しい番号をアクセス対象ページの番号とし、そのアクセス対象ページにユーザデータが書き込まれていないか書き込まれているかを判定する(ステップS6)。
ステップS6の判定の結果、アクセス対象ページにユーザデータが書き込まれていないことが判定されたとき(ステップS6:YES)、アクセス対象ページに、ホストシステム4から与えられたユーザデータを書き込む(ステップS7)。このとき、メモリコントローラ3は、新たにユーザデータを書き込んだアクセス対象ページの冗長領域に、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データを書き込む。ステップS7により、オリジナルデータ記憶部にユーザデータがオリジナルデータとして書き込まれる。
ステップS6の判定の結果、論理アドレスの下位側が示す論理ブロック内のセクタ番号に等しい番号のページに、すでにユーザデータが書き込まれていると判定された場合(ステップS6:NO)、メモリコントローラ3は、論理アドレスの下位側が示す論理ブロック内のセクタ番号に、16(物理ブロックのオリジナルデータ記憶部のページ数に相当)を加算し、この16を加算した番号を対象ブロックの新たなアクセス対象ページとする。即ち、更新データ記憶部に新たなアクセス対象ページが移されたことになる。メモリコントローラ3は、対象ブロック冗長領域を調べ、その対象ブロックの新たなアクセス対象ページに、すでにユーザデータが書き込まれているか、否かを判定する(ステップS8)。
ステップS8の判定の結果、対象ブロックの新たなアクセス対象ページに、ユーザデータが書き込まれていないことが判定されたとき(ステップS8:YES)、メモリコントローラ3は、対象ブロックの新たなアクセス対象ページにユーザデータを書き込む(ステップS9)。メモリコントローラ3は、これと同時に、ユーザデータを書き込んだ対象ブロックのページの冗長領域に、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データを書き込む。このステップS9により、更新データ記憶部に、オリジナルデータの書き替えデータが書き込まれる。
ステップS8の判定の結果、対象ブロックの新たなアクセス対象ページに、ユーザデータが書き込まれていることが判定されたとき(ステップS8:NO)、メモリコントローラ3は、消去済の1つの物理ブロックを新たな対象ブロックとし、論理アドレスの下位側が示す論理ブロック内のセクタ番号を、その新たな対象ブロックのアクセス対象ページの番号とする。
メモリコントローラ3は、フラッシュメモリ2の新たな対象ブロックとなった消去済ブロックのアクセス対象ページのユーザ領域に、ユーザデータを書き込むと共にそのアクセス対象ページの冗長領域に、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データを書き込む(ステップS10)。
また、メモリコントローラ3は、アドレス変換テーブルに、新たな対象ブロックとなった物理ブロックの番号と、その物理ブロックに対応する論理ブロックの番号を対応させて書き込む(ステップS11)。即ち、アドレス変換テーブルを更新する。
さらに、メモリコントローラ3は、新たな対象ブロックのアクセス対象ページ以外のページに、元の対象ブロック(ステップS8の判定を行った物理ブロック)の対応するページに書き込まれているユーザデータ、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データを書き込む(ステップS12)。この際、アクセス対象ページよりページ番号の小さいページについては、アクセス対象ページへの書き込みの前に、ユーザデータ等の転写をする。
このとき、オリジナルデータ記憶領部、更新データ記憶部の両方に同じセクタに対応して書き込まれているユーザデータがあれば、更新データ記憶部に書き込まれているユーザデータを、新たな対象ブロックのオリジナルデータ記憶部の対応するページに書き込む。
そして、元の対象ブロックのすべてのページを一括消去(ブロック消去)し、消去済ブロックにする(ステップS13)。
次に、フラッシュメモリ2に対する読み出し処理の動作を、図6を用いて説明する。
図6は、読み出し処理を示すフローチャートである。
フラッシュメモリ2からユーザデータを読み出す場合、メモリコントローラ3のマイクロプロセッサ6は、ホストシステム4から読み出しコマンド及び論理アドレス情報とセクタ数が与えられると、そのセクタ数を内蔵するカウンタに設定し、読み出しを行うごとに設定したセクタ数をデクリメントすると共に、次に読み出しを行う論理アドレス情報を作成する。カウンタに設定されているセクタ数が0になると、次に読み出しを行うユーザデータがないと判断し(ステップS31:NO)、マイクロプロセッサ6は、論理アドレス情報を生成せず、読み出し処理を終了する。
メモリコントローラ3は、マイクロプロセッサ6が次に読み出しを行うユーザデータがあると判断し、論理アドレス情報を生成した場合(ステップS31:YES)、論理アドレス情報の上位側で指定される論理ブロックに対応する物理ブロックを対象ブロックとしてアドレス変換テーブルから検索する(ステップS32)。
メモリコントローラ3は、論理アドレス情報の下位側で指定される論理ブロックのセクタ番号に16(物理ブロックのオリジナルデータ記憶部のページ数に相当)を加算し、これをアクセス対象ページを示す番号とし、ステップS32で検出された対象ブロックのアクセス対象ページを示す物理アドレスを作成し、その物理アドレスで示されるページの冗長領域を調べ、対象ブロックのアクセス対象ページにユーザデータが書き込まれているか否かを判定する(ステップS33)。
対象ブロックのアクセス対象ページにユーザデータが書き込まれていると判定した場合(ステップS33:YES)、メモリコントローラ3は、対象ブロックのアクセス対象ページのユーザ領域に書き込まれていたユーザデータを読み出す(ステップS34)。このとき、冗長領域に記憶されている誤り訂正符号により、ユーザデータの誤りが検出された時には、読み出したユーザデータの訂正を行う。
一方、対象ブロックのアクセス対象ページにユーザデータが書き込まれていないと判定した場合(ステップS33:NO)、メモリコントローラ3は、論理アドレス情報の下位側で指定される論理ブロックのセクタ番号を新たなアクセス対象ページを示す番号とし、ステップS32で検出された対象ブロックの新たなアクセス対象ページを示す物理アドレスを作成し、対象ブロックの新たなアクセス対象ページのユーザ領域に書き込まれていたユーザデータを読み出す(ステップS35)。このとき、冗長領域に記憶されている誤り訂正符号により、ユーザデータの誤りが検出された時には、読み出したユーザデータの訂正を行う。
以上のように、本実施形態のフラッシュメモリシステムは、物理ブロックが複数ページP0〜P31で構成されたフラッシュメモリ2を用いた場合に、ページP0〜P15をオリジナルデータ記憶部としてユーザデータを書き込み、オリジナルデータ記憶部に記憶されたユーザデータに書き替えが発生したときにその物理ブロックのページP16〜P32に書き替えデータを書き込むようにしている。そのため、消去済みブロックに書き替えが発生した物理ブロックのユーザデータ等を転写する処理や、不要になった物理ブロックを消去する処理を従来よりも減じることができる。
また、各物理ブロックにおいて、オリジナルデータ記憶部の各ページP0〜P15と更新データ記憶部のページP16〜P32とをそれぞれ対応させ、論理アドレス空間における同じセクタのユーザデータを書き込む構成にしたので、アドレスの管理が簡単で、アクセス先が短時間で求められる。
[第2の実施形態]
図7は、本発明の第2の実施形態に係るフラッシュメモリシステム21の概要を示す構成図である。
図7に示したように、フラッシュメモリシステム21は、フラッシュメモリ22と、それを制御するメモリコントローラ23で構成され、ホストシステム24に着脱可能に装着される。
[フラッシュメモリ22の説明]
このフラッシュメモリシステム21において、データが記憶されるフラッシュメモリ22は、NAND型フラッシュメモリで構成され、第1の実施形態のフラッシュメモリ2と同様に、1物理ブロックが32ページ(P0〜P31)で構成され、各ページが512バイトのユーザ領域と16バイトの冗長領域で構成されている。物理ブロックの各ページのユーザ領域は、ユーザデ―タやその書き替えデータが記憶される領域であり、冗長領域は、誤り訂正符号、対応論理アドレス情報及びブロックステータス等の付加データが記憶される領域である。
前述の第1の実施形態のフラッシュメモリシステム1では、フラッシュメモリ2の各物理ブロックをオリジナルデータ記憶部と更新データ記憶部の2つに分割して利用したが、二以上に分割してもよい(図8参照)。
図8は、本実施形態のフラッシュメモリ22の構成を示す図である。
本実施形態のフラッシュメモリシステム21では、フラッシュメモリ22の各物理ブロックを、書き替え前のユーザデータを書き込むオリジナルデータ記憶部と、オリジナル記憶部に書き込まれたユーザデータの書き替えデータを書き込む第1の更新データ記憶部と、第1の更新データ記憶部に書き込まれたデータの書き替えデータを書き込む第2の更新データ記憶部と、第1の更新データ記憶部に書き込まれたデータの書き替えデータを書き込む第2の更新データ記憶部と、に分割している。
具体的には、物理ブロックのページP0〜P7の8ページを、新規のユーザデータを書き込むためのオリジナルデータ記憶部とし、ページP8〜P15を、第1の更新データ記憶部とし、ページP16〜P23を第2の更新データ記憶部とし、ページP24〜P31を第3の更新データ記憶部とする。そして、オリジナルデータ記憶部の各ページと第1の更新データ記憶部の各ページと第2の更新データ記憶部の各ページと第3の更新データ記憶部の各ページとを対応させ、オリジナルデータ記憶部内でのページ番号と第1の更新データ記憶部内のページ番号と、第2の更新データ記憶部内のページ番号と、第3の更新データ記憶部内のページ番号とを対応させている。
即ち、ページP0に書き込まれたユーザデータの書き替えデータはページP8に書き込まれ、ページP8に書き込まれたユーザデータの書き替えデータはページP16に書き込まれ、ページP16に書き込まれたユーザデータの書き替えデータは、ページP24に書き込まれる。また、ページP1に書き込まれたユーザデータの書き替えデータはページP9に書き込まれ、ページP9に書き込まれたユーザデータの書き替えデータはページP17に書き込まれ、ページP17に書き込まれたユーザデータの書き替えデータは、ページP25に書き込まれる。以下、同様に、各ページP2,P3,…P7に書き込まれたユーザデータの書き替えデータはページP10,P11,…P15にそれぞれ書き込まれ、ページP10,P11,…P15に書き込まれたユーザデータの書き替えデータはP18,P19,…P23にそれぞれ書き込まれ、ページP18,P19,…P23に書き込まれたユーザデータの書き替えデータは、ページP26,P27,…P31に書き込まれる。
[メモリコントローラ23の説明]
メモリコントローラ23は、ホストインターフェース制御ブロック25と、マイクロプロセッサ26と、ホストインターフェースブロック27と、ワークエリア28と、バッファ29と、フラッシュメモリインターフェースブロック30と、ECC(エラー・コレクション・コード)ブロック31と、フラッシュメモリシーケンサブロック32とから構成される。これら機能ブロックによって構成されるメモリコントローラ23は、一つの半導体チップ上に集積されている。ホストシステム24とホストインターフェースブロック27とが外部バス33で接続され、フラッシュメモリ22とフラッシュメモリインターフェースブロック30とが、内部バス34で接続されている。
マイクロプロセッサ26は、メモリコントローラ23を構成する各機能ブロック全体の動作を制御する機能ブロックである。フラッシュメモリシーケンサーブロック32は、フラッシュメモリ22に対するアクセスを制御する機能ブロックであり、内蔵する複数のレジスタに、フラッシュメモリ22に対するアクセス処理を実行する際に必要な情報が、マイクロプロセッサ26によって設定される。この複数のレジスタに設定された情報に基づいて、内部コマンド、アドレス情報等がフラッシュメモリ22に供給される。
ホストインターフェース制御ブロック25、ホストインターフェースブロック27、ワークエリア28、バッファ29、フラッシュメモリインターフェースブロック30、及びECCブロック31は、第1の実施形態のホストインターフェース制御ブロック5、ホストインターフェースブロック7、ワークエリア8、バッファ9、フラッシュメモリインターフェースブロック10、及びECCブロック11と同等のものである。
[フラッシュメモリ22に対するアクセスの説明]
次に、フラッシュメモリ22に対するアクセスを行う場合のフラッシュメモリシステム21の動作を、図面を参照して説明する。
フラッシュメモリ22の記憶領域は、それぞれ複数のページ(P0〜P31)からなる物理ブロック(♯0,♯1,…)群で構成されている。各ページには、論理アドレス空間の1セクタ分のユーザデータが書き込まれる。ここで、本実施形態では、各物理ブロックのページP0〜P7の8ページをオリジナルデータ領域とし、ページP8〜P15の8ページを第1の更新データ領域とし、ページP16〜P23の8ページを第2の更新データ領域とし、ページP24〜P31の8ページを第3の更新データ領域とし、各物理ブロック♯0,♯1,…には、論理アドレス空間の8セクタ分のユーザデータとその書き替えデータとが書き込まれる。従って、一括消去単位の各物理ブロック♯0,♯1,…に対応する論理ブロックは、8セクタで構成される。
メモリコントローラ23は、論理ブロックLB0,LB1,…と物理ブロック♯0,♯1,…との対応関係を示したアドレス変換テーブルを作成し、このアドレス変換テーブルを用いてアクセスするページのアドレスを求める。
アドレス変換テーブルを利用した書き込み処理を図9及び図10を参照して説明する。
図9及び図10は、書き込み処理を示すフローチャートである。
フラッシュメモリ22にユーザデータを書き込む場合、ホストシステム24は、書き込みコマンドとユーザデータと論理アドレス情報とをメモリコントローラ23に与える。対象の指定は、論理アドレス空間上の位置を示す論理アドレス情報で示される。
論理アドレス情報は、所定のビット幅を有する2進数であり、上位側が論理ブロックLB0,LB1,…を示し、下位側の3ビットが各論理ブロックLB0,LB1,…におけるセクタ番号を示す。また、論理アドレス情報の下位側3ビットは、オリジナルデータ記憶部、第1の更新データ記憶部、第2の更新データ記憶部及び第3の更新データ記憶部内のページ番号を表す。
連続するセクタをアクセス対象とする場合、ホストシステム24は、論理アドレス情報によってアクセス対象の先頭のセクタを示すと共に、アクセス対象となるセクタの数を指定する。この場合、メモリコントローラ23のマイクロプロセッサ26が、ホストシステム24が指定する各アクセス対象のセクタに対応する論理アドレス情報を順次生成する。
メモリコントローラ23のマイクロプロセッサ26は、ホストシステム24から書き込みコマンド及び論理アドレス情報とセクタ数が与えられると、そのセクタ数を内蔵するカウンタに設定し、書き込みを行うごとに設定したセクタ数をデクリメントすると共に、次に書き込みを行う論理アドレス情報を作成する。カウンタに設定されているセクタ数が0になると、次に書き込みを行うユーザデータがないと判断し、マイクロプロセッサ26は、論理アドレス情報を生成せず、書き込み処理を終了する(ステップS41:NO)。
メモリコントローラ23は、マイクロプロセッサ26が次に書き込みを行うユーザデータがあると判断し、論理アドレス情報を生成した場合(ステップS41:YES)、論理アドレス情報の上位側で指定される論理ブロックに対応する物理ブロックを対象ブロックとしてアドレス変換テーブルから検索する(ステップS42)。
ステップS42の検索の結果、ホストシステム24が指定する論理ブロックに対応する物理ブロックがアドレス変換テーブルから求められない場合(ステップS43:NO)、消去済の1つの物理ブロックを対象ブロックとし、論理アドレスの下位側が示す論理ブロック内のセクタ番号を、その対象ブロックのアクセス対象ページの番号とする。
メモリコントローラ23は、フラッシュメモリ22の対象ブロックとなった消去済ブロックのアクセス対象ページのユーザ領域に、ユーザデータを書き込むと共にそのアクセス対象ページの冗長領域に、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データを書き込む(ステップS44)。
さらに、メモリコントローラ23は、アドレス変換テーブルに、対象ブロックとなった物理ブロックの番号と、その物理ブロックに対応する論理ブロックの番号を対応させて書き込む(ステップS45)。即ち、アドレス変換テーブルを更新する。
ステップS42の検索で、対象ブロックとなる物理ブロックが検出された場合(ステップS43:YES)、そのフラッシュメモリ22の対象ブロックの冗長領域を調べ、論理アドレスの下位側が示す論理ブロック内のセクタ番号に等しい番号をアクセス対象ページの番号とし、そのアクセス対象ページにユーザデータが書き込まれていないか書き込まれているか否かを判定する(ステップS46)。
ステップS46の判定の結果、論理アドレスの下位側が示す論理ブロック内のセクタ番号に等しい番号のページに、ユーザデータが書き込まれていないことが判定されたとき(ステップS46:YES)、メモリコントローラ23は、論理アドレスの下位側が示す論理ブロック内のセクタ番号に等しい番号のページをアクセス対象のページとし、ホストシステム24から与えられたユーザデータを書き込む(ステップS47)。このとき、メモリコントローラ23は、新たにユーザデータを書き込んだアクセス対象ページの冗長領域に、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データを書き込む。
ステップS46の判定の結果、論理アドレス情報の下位側が示す論理ブロック内のセクタ番号に等しい番号のページに、すでにユーザデータが書き込まれていると判定された場合(ステップS46:NO)、メモリコントローラ23は、論理アドレスの下位側が示す論理ブロック内のセクタ番号に、8(物理ブロックのオリジナルデータ記憶部のページ数に相当)を加算し、この8を加算した番号を対象ブロックの新たなアクセス対象ページとする。即ち、第1の更新データ記憶部に新たなアクセス対象ページか移されたことになる。メモリコントローラ23は、対象ブロック冗長領域を調べ、その対象ブロックの新たなアクセス対象ページに、すでにユーザデータが書き込まれているか、否かを判定する(ステップS48)。
ステップS48の判定の結果、論理アドレス情報の下位側が示す論理ブロック内のセクタ番号に8を加算した値に等しい番号のページに、ユーザデータが書き込まれていないことが判定されたとき(ステップS48:YES)、メモリコントローラ23は、論理アドレスの下位側が示す論理ブロック内のセクタ番号に8を加算した番号のページを新たなアクセス対象ページとし、ホストシステム24から与えられたユーザデータを書き込む(ステップS49)。このとき、メモリコントローラ23は、新たにユーザデータを書き込んだアクセス対象ページの冗長領域に、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データを書き込む。
ステップS48の判定の結果、論理アドレス情報の下位側が示す論理ブロック内のセクタ番号に8を加算した番号のページに、すでにユーザデータが書き込まれていると判定された場合(ステップS48:NO)、メモリコントローラ23は、論理アドレスの下位側が示す論理ブロック内のセクタ番号に、16(物理ブロックのオリジナルデータ記憶部及び第1の更新データ記憶部のページ数に相当)を加算し、この16を加算した番号を対象ブロックの新たなアクセス対象ページとする。即ち、第2の更新データ記憶部に新たなアクセス対象ページが移されたことになる。メモリコントローラ23は、対象ブロック冗長領域を調べ、その対象ブロックの新たなアクセス対象ページに、すでにユーザデータが書き込まれているか、否かを判定する(ステップS50)。
ステップS50の判定の結果、論理アドレス情報の下位側が示す論理ブロック内のセクタ番号に16を加算した値に等しい番号のページに、ユーザデータが書き込まれていないことが判定されたとき(ステップS50:YES)、メモリコントローラ23は、論理アドレスの下位側が示す論理ブロック内のセクタ番号に16を加算した番号のページを新たなアクセス対象のページとし、ホストシステム24から与えられたユーザデータを書き込む(ステップS51)。このとき、メモリコントローラ23は、新たにユーザデータを書き込んだアクセス対象ページの冗長領域に、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データを書き込む。
ステップS50の判定の結果、論理アドレス情報の下位側が示す論理ブロック内のセクタ番号に16を加算した番号のページに、すでにユーザデータが書き込まれていると判定された場合(ステップS50:NO)、メモリコントローラ23は、論理アドレスの下位側が示す論理ブロック内のセクタ番号に、24(物理ブロックのオリジナルデータ記憶部、第1の更新データ記憶部及び第2の更新データ記憶部のページ数に相当)を加算し、この24を加算した番号を対象ブロックの新たなアクセス対象ページとする。即ち、第3の更新データ記憶部に新たなアクセス対象ページが移されたことになる。メモリコントローラ23は、対象ブロック冗長領域を調べ、その対象ブロックの新たなアクセス対象ページに、すでにユーザデータが書き込まれているか、否かを判定する(ステップS52)。
ステップS52の判定の結果、対象ブロックの新たなアクセス対象ページに、ユーザデータが書き込まれていないことが判定されたとき(ステップS52:YES)、メモリコントローラ23は、対象ブロックの新たなアクセス対象ページにユーザデータを書き込む(ステップS53)。メモリコントローラ23は、これと同時に、ユーザデータを書き込んだアクセス対象ページの冗長領域に、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データを書き込む。
ステップS52の判定の結果、対象ブロックの新たなアクセス対象ページに、ユーザデータが書き込まれていることが判定されたとき(ステップS52:YES)、メモリコントローラ23は、消去済の1つの物理ブロックを新たな対象ブロックとし、論理アドレスの下位側が示す論理ブロック内のセクタ番号を、その新たな対象ブロックのアクセス対象ページの番号とする。
メモリコントローラ23は、フラッシュメモリ22の新たな対象ブロックとなった消去済ブロックのアクセス対象ページのユーザ領域に、ユーザデータを書き込むと共にそのアクセス対象ページの冗長領域に、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データを書き込む(ステップS54)。
また、メモリコントローラ23は、アドレス変換テーブルに、新たな対象ブロックとなった物理ブロックの番号と、その物理ブロックに対応する論理ブロックの番号を対応させて書き込む(ステップS55)。即ち、アドレス変換テーブルを更新する。
さらに、メモリコントローラ23は、新たな対象ブロックのアクセス対象ページ以外のページに、元の対象ブロック(ステップS46で判定を行った物理ブロック)の対応するページに書き込まれているユーザデータ、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データを書き込む(ステップS56)。この際、アクセス対象ページよりページ番号の小さいページについては、アクセス対象ページへの書き込みの前に、ユーザデータ等を転写する。
このとき、元の対象ブロックのオリジナルデータ記憶領部、第1の更新データ記憶部、第2の更新データ記憶部及び第3の更新データ記憶部の4カ所に同じセクタに対応して書き込まれているユーザデータ及び付加データがあれば、第3の更新データ記憶部に書き込まれているユーザデータ及び付加データを、新たな対象ブロックのオリジナルデータ記憶部に書き込む。
また、オリジナルデータ記憶部、第1の更新データ記憶部、第2の更新データ記憶部の3カ所に同じセクタに対応して書き込まれているユーザデータ及び付加データがあれば、第2の更新データ記憶部に書き込まれているユーザデータ及び付加データを、新たな対象ブロックのオリジナルデータ記憶部の対応するページに書き込む。オリジナルデータ記憶部及び第1の更新データ記憶部の2カ所に同じセクタに対応して書き込まれているユーザデータ及び付加データがあれば、第1の更新データ記憶部に書き込まれているユーザデータ及び付加データを、新たな対象ブロックのオリジナルデータ記憶部の対応するページに書き込む。つまり、第3の更新データ記憶部、第2の更新データ記憶部、第1の更新データ記憶部、オリジナルデータ記憶部の優先順位で、ユーザデータの転写を行う。
そして、元の対象ブロックのすべてのページを一括消去し、消去済ブロックにする(ステップS57)。
[フラッシュメモリ22に対する読み出し処理]
次に、フラッシュメモリ22に対する読み出し処理の動作を、図11を参照して説明する。
図11は、読み出し処理を示すフローチャートである。
フラッシュメモリ22からユーザデータを読み出す場合、メモリコントローラ23のマイクロプロセッサ26は、ホストシステム24から読み出しコマンド及び論理アドレス情報とセクタ数が与えられると、そのセクタ数を内蔵するカウンタに設定し、読み出しを行うごとに、カウンタに設定されたセクタ数をデクリメントする。そして、カウンタに設定されたセクタ数が0以外のときに、次に読み出すユーザデータが有ると判断して次に読み出すユーザデータの論理アドレス情報を生成する、カウンタに設定されているセクタ数が0のときには、次に読み出しを行うユーザデータがないと判断し(ステップS61:NO)、マイクロプロセッサ26は、論理アドレス情報を生成せず、読み出し処理を終了する。
メモリコントローラ23は、マイクロプロセッサ26が次に読み出しを行うユーザデータがあると判断して論理アドレス情報を生成した場合(ステップS61:YES)、論理アドレス情報の上位側で指定される論理ブロックに対応する物理ブロックを、対象ブロックとしてアドレス変換テーブルから検索する(ステップS62)。
メモリコントローラ23は、論理アドレス情報の下位側で指定される論理ブロックのセクタ番号に24(物理ブロックのオリジナルデータ記憶部、第1の更新データ記憶部及び第2の更新データ記憶部のページ数に相当)を加算し、これをアクセス対象ページを示す番号とし、ステップS62で検出された対象ブロックのアクセス対象ページを示す物理アドレスを作成し、その物理アドレスで示されるページの冗長領域を調べ、対象ブロックのアクセス対象ページにユーザデータが書き込まれているか否かを判定する(ステップS63)。即ち、第3の更新データ記憶部にアクセス対象のユーザデータが有るか否かを判定している。
対象ブロックのアクセス対象ページにユーザデータが書き込まれていると判定した場合(ステップS63:YES)、メモリコントローラ23は、対象ブロックのアクセス対象ページのユーザ領域に書き込まれていたユーザデータを読み出す(ステップS64)。このとき、冗長領域に記憶されている誤り訂正符号により、ユーザデータの誤りが検出された時には、読み出したユーザデータの訂正を行う。
ステップS63の判定で、対象ブロックのアクセス対象ページにユーザデータが書き込まれていないと判定した場合(ステップS63:NO)、メモリコントローラ23は、論理アドレス情報の下位側で指定される論理ブロックのセクタ番号に16(物理ブロックのオリジナルデータ記憶部及び第1の更新データ記憶部のページ数に相当)を加算し、これを新たなアクセス対象ページを示す番号とし、ステップS62で検出された対象ブロックのアクセス対象ページを示す新たな物理アドレスを作成し、その新たな物理アドレスで示されるページの冗長領域を調べ、新たな対象ブロックのアクセス対象ページにユーザデータが書き込まれているか否かを判定する(ステップS65)。即ち、第2の更新データ記憶部にアクセス対象のユーザデータが有るか否かを判定している。
ステップS65で新たな対象ブロックのアクセス対象ページにユーザデータが書き込まれていると判定した場合(ステップS65:YES)、メモリコントローラ23は、対象ブロックのアクセス対象ページのユーザ領域に書き込まれていたユーザデータを読み出す(ステップS66)。このとき、冗長領域に記憶されている誤り訂正符号により、ユーザデータの誤りが検出された時には、読み出したユーザデータの訂正を行う。
ステップS65の判定で、対象ブロックのアクセス対象ページにユーザデータが書き込まれていないと判定した場合(ステップS65:NO)、メモリコントローラ23は、論理アドレス情報の下位側で指定される論理ブロックのセクタ番号に8(物理ブロックのオリジナルデータ記憶部のページ数に相当)を加算し、これを新たなアクセス対象ページを示す番号とし、ステップS62で検出された対象ブロックのアクセス対象ページを示す新たな物理アドレスを作成し、その新たな物理アドレスで示されるページの冗長領域を調べ、新たな対象ブロックのアクセス対象ページにユーザデータが書き込まれているか否かを判定する(ステップS67)。即ち、第1の更新データ記憶部にアクセス対象のユーザデータが有るか否かを判定する。
ステップS67で新たな対象ブロックのアクセス対象ページにユーザデータが書き込まれていると判定した場合(ステップS67:YES)、メモリコントローラ23は、対象ブロックのアクセス対象ページのユーザ領域に書き込まれていたユーザデータを読み出す(ステップS68)。このとき、冗長領域に記憶されている誤り訂正符号により、ユーザデータの誤りが検出された時には、読み出したユーザデータの訂正を行う。
ステップS67の判定で、対象ブロックのアクセス対象ページにユーザデータが書き込まれていないと判定した場合(ステップS67:NO)、メモリコントローラ23は、論理アドレス情報の下位側で指定される論理ブロックのセクタ番号を新たなアクセス対象ページを示す番号とし、ステップS62で検出された対象ブロックの新たなアクセス対象ページを示す物理アドレスを作成し、対象ブロックの新たなアクセス対象ページのユーザ領域に書き込まれていたユーザデータを読み出す(ステップS69)。このとき、冗長領域に記憶されている誤り訂正符号により、ユーザデータの誤りが検出された時には、読み出したユーザデータの訂正を行う。
以上のように、本実施形態のフラッシュメモリシステムは、フラッシュメモリ22の各物理ブロックを、書き替え前のユーザデータを書き込むオリジナルデータ記憶部と、オリジナル記憶部に書き込まれたユーザデータの書き替えデータを書き込む第1の更新データ記憶部と、第1の更新データ記憶部に書き込まれたデータの書き替えデータを書き込む第2の更新データ記憶部と、第2の更新データ記憶部に書き込まれたデータの書き替えデータを書き込む第3の更新データ記憶部とに分割している。これにより、第1の実施形態と同様、消去済みブロックに書き替えが発生した物理ブロックのユーザデータ等を転写する処理や、不要になった物理ブロックを消去する処理を、従来よりも減じることができる。
その上、同じセクタのユーザデータを3回書き替えても、他のユーザデータの転写や、不要になった物理ブロックの消去を行わなくて済むので、第1の実施形態よりも能率的である。
[第3の実施形態]
図12は、本発明の第3の実施形態に係るフラッシュメモリシステム41の概要を示す構成図である。
図12に示したように、フラッシュメモリシステム41は、フラッシュメモリ42と、それを制御するメモリコントローラ43で構成され、ホストシステム44に着脱可能に装着される。
[フラッシュメモリ42の説明]
このフラッシュメモリシステム41において、データが記憶されるフラッシュメモリ42は、NAND型フラッシュメモリで構成され、第1の実施形態のフラッシュメモリ2と同様に、1物理ブロックが32ページ(P0〜P31)で構成され、各ページが512バイトのユーザ領域と16バイトの冗長領域で構成されている。物理ブロックの各ページのユーザ領域は、ユーザデ―タやその書き替えデータが記憶される領域であり、冗長領域は、誤り訂正符号、対応論理アドレス情報及びブロックステータス等の付加データが記憶される領域である。
図13は、フラッシュメモリ42の構成を示す図である。
本実施形態のフラッシュメモリシステム41では、フラッシュメモリ42の各物理ブロックを、書き替え前のユーザデータを書き込むオリジナルデータ記憶部と、オリジナル記憶部に書き込まれたユーザデータの書き替えデータを書き込む更新データ記憶部とに分割している。具体的には、フラッシュメモリ42の各物理ブロックのページP0〜P15の16ページを、書き替え前のデータ(オリジナルデータ)を書き込むためのオリジナルデータ記憶部とし、ページP16〜P31を書き替えデータを書き込むための更新データ記憶部とする。
各物理ブロックにおけるオリジナルデータ記憶部と更新データ記憶部の容量は第1の実施形態と同様であるが、第1の実施形態とは異なり、これらのオリジナルデータ記憶部のページと更新データ記憶部のページとが一対一に対応しない。
オリジナルデータ記憶部のページ或いは更新データ記憶部のページにすでに書き込まれているデータに書き替えが発生すると、その書き替えデータを、更新データ記憶部の未書き込みの空いているページの若番側から順次書き込むように、更新データ記憶部を使用する。
[メモリコントローラ43の説明]
メモリコントローラ43は、ホストインターフェース制御ブロック45と、マイクロプロセッサ46と、ホストインターフェースブロック47と、ワークエリア48と、バッファ49と、フラッシュメモリインターフェースブロック50と、ECC(エラー・コレクション・コード)ブロック51と、フラッシュメモリシーケンサブロック52とから構成される。これら機能ブロックによって構成されるメモリコントローラ43は、一つの半導体チップ上に集積されている。ホストシステム44とホストインターフェースブロック47とが外部バス53で接続され、フラッシュメモリ42とフラッシュメモリインターフェースブロック50とが、内部バス54で接続されている。
マイクロプロセッサ46は、メモリコントローラ43を構成する各機能ブロック全体の、動作を制御する機能ブロックである。フラッシュメモリシーケンサーブロック52は、フラッシュメモリ42に対するアクセスを制御する機能ブロックであり、内蔵する複数のレジスタに、フラッシュメモリ42に対するアクセス処理を実行する際に必要な情報が、マイクロプロセッサ46によって設定される。この複数のレジスタに設定された情報に基づいて、内部コマンド、アドレス情報等がフラッシュメモリ42に供給される。
ホストインターフェース制御ブロック45、ホストインターフェースブロック47、ワークエリア48、バッファ49、フラッシュメモリインターフェースブロック50、及びECCブロック51は、第1の実施形態のホストインターフェース制御ブロック5、ホストインターフェースブロック7、ワークエリア8、バッファ9、フラッシュメモリインターフェースブロック10、及びECCブロック11と同等のものである。
[フラッシュメモリ42に対するアクセスの説明]
次に、フラッシュメモリ42に対するアクセスを行う場合のフラッシュメモリシステム41の動作を、図面を参照して説明する。
図14は、論理アドレス空間と物理アドレス空間を示す説明図であり、論理アドレスで表される論理アドレス空間が、セクタ単位で付けた連番であるLBAで、示している。
フラッシュメモリ42の記憶領域は、それぞれ複数のページ(P0〜P31)からなる物理ブロック(♯0,♯1,…)群で構成されている。各ページには、論理アドレス空間の1セクタ分のユーザデータが書き込まれる。ここで、本実施形態では、各物理ブロックのページP0〜P15の16ページをオリジナルデータ記憶部とし、ページP16〜P31の16ページを更新データ記憶部としている。各物理ブロック♯0,♯1,…には、論理アドレス空間の16セクタ分のユーザデータとその書き替えデータとが書き込まれる。従って、一括消去単位の各物理ブロック♯0,♯1,…に対応する論理ブロックは、16セクタで構成される。
メモリコントローラ43は、論理ブロックLB0,LB1,…と物理ブロック♯0,♯1,…との対応関係を示したアドレス変換テーブルを作成し、このアドレス変換テーブルを用いてアクセスするページのアドレスを求める。
アドレス変換テーブルを利用した書き込み処理を図15及び図16を参照して説明する。
図15及び図16は、書込み処理を示すフローチャートである。
フラッシュメモリ42にユーザデータを書き込む場合、ホストシステム44は、書き込みコマンドとユーザデータと論理アドレス情報とをメモリコントローラ43に与える。対象の指定は、論理アドレス空間上の位置を示す論理アドレス情報で示す。
論理アドレス情報は、所定のビット幅を有する2進数であり、上位側が論理ブロックLB0,LB1,…を示し、下位側の4ビットが各論理ブロックLB0,LB1,…におけるセクタ番号を示す。また、論理アドレス情報の下位側の4ビットは、オリジナルデータ記憶部内或いは更新データ記憶部内のページの番号を示す。
連続するセクタをアクセス対象とする場合、ホストシステム44は、論理アドレス情報によってアクセス対象の先頭のセクタを示すと共に、アクセス対象となるセクタの数を指定する。この場合、メモリコントローラ43のマイクロプロセッサ46が、ホストシステム44が指定する各アクセス対象のセクタに対応する論理アドレス情報を順次生成する。
メモリコントローラ43のマイクロプロセッサ46は、ホストシステム44から書き込みコマンド及び論理アドレス情報とセクタ数が与えられると、そのセクタ数を内蔵するカウンタに設定し、書き込みを行うごとに設定したセクタ数をデクリメントすると共に、次に書き込みを行う論理アドレス情報を作成する。カウンタに設定されているセクタ数が0になると、次に書き込みを行うユーザデータがないと判断し(ステップS81:NO)、マイクロプロセッサ46は、論理アドレス情報を生成せず、書き込み処理を終了する。
メモリコントローラ43は、マイクロプロセッサ46が次に書き込みを行うユーザデータがあると判断し、論理アドレス情報を生成した場合(ステップS81:YES)、論理アドレス情報の上位側で指定される論理ブロックに対応する物理ブロックを対象ブロックとしてアドレス変換テーブルから検索する(ステップS82)。
ステップS82の検索の結果、ホストシステム44が指定する論理ブロックに対応する物理ブロックがアドレス変換テーブルから求められない場合(ステップS83:NO)、消去済の1つの物理ブロックを対象ブロックとし、論理アドレスの下位側が示す論理ブロック内のセクタ番号を、その対象ブロックのアクセス対象ページの番号とする。
メモリコントローラ43は、フラッシュメモリ42の対象ブロックとなった消去済ブロックのアクセス対象ページのユーザ領域に、ユーザデータを書き込むと共にそのアクセス対象ページの冗長領域に、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データを書き込む(ステップS84)。これにより、オリジナルデータとなるユーザデータが、オリジナルデータ記憶部に書き込まれたことになる。
さらに、メモリコントローラ43は、アドレス変換テーブルに、対象ブロックとなった物理ブロックの番号と、その物理ブロックに対応する論理ブロックの番号を対応させて書き込む(ステップS85)。即ち、アドレス変換テーブルを更新する。
ステップS82の検索で、対象ブロックとなる物理ブロックが検出された場合(ステップS83:YES)、そのフラッシュメモリ42の対象ブロックの冗長領域を調べ、論理アドレスの下位側が示す論理ブロック内のセクタ番号に等しい番号をアクセス対象ページの番号とし、そのアクセス対象ページにユーザデータが書き込まれていないか書き込まれているか否かを判定する(ステップS86)。
ステップS86の判定の結果、論理アドレスの下位側が示す論理ブロック内のセクタ番号に等しい番号のページに、ユーザデータが書き込まれていないと判定されたとき(ステップS86:YES)、メモリコントローラ43は、論理アドレスの下位側が示す論理ブロック内のセクタ番号に等しい番号のページをアクセス対象のページとし、ホストシステム44から与えられたユーザデータを書き込む(ステップS87)。このとき、メモリコントローラ43は、新たにユーザデータを書き込んだアクセス対象ページの冗長領域に、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データを書き込む。これにより、オリジナルデータとなるユーザデータが、オリジナルデータ記憶部に書き込まれたことになる。
ステップS86の判定の結果、論理アドレス情報の下位側が示す論理ブロック内のセクタ番号に等しい番号のページに、すでにユーザデータが書き込まれていると判定された場合(ステップS86:NO)、その論理ブロックに対応する物理ブロックの更新データ記憶部の冗長領域を調べ、ユーザデータの書き込まれていない空きページの有無を確認する(ステップS88)。
ステップS88で空きページがあると確認できた場合(ステップS88:YES)、空きページのうちの最も若番のページに、ホストシステム44から与えられたユーザデータを書き込む(ステップS89)。これにより、更新データ記憶部に書き替え後のデータが書き込まれたことになる。
このとき、メモリコントローラ43は、ステップS89でユーザデータが書き込まれたページの冗長領域に、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータを書き込むとともに、ユーザデータの論理ブロックにおけるセクタ番号を書き込んでおく。また、このときに、さらに、物理ブロック内のどのページに記憶されているデータが未書き替えで有効であるか否かを示す情報を冗長領域に書き込んでおいてもよい。
ステップS88の確認で、空きページがないと確認された場合(ステップS88:NO)、更新データ記憶部にはすでに書き替えデータで満たされたことになるので、メモリコントローラ43は、消去済の1つの物理ブロックを新たな対象ブロックとし、論理アドレスの下位側が示す論理ブロック内のセクタ番号を、その新たな対象ブロックのアクセス対象ページの番号とする。
メモリコントローラ43は、フラッシュメモリ42の新たな対象ブロックとなった消去済ブロックのアクセス対象ページのユーザ領域に、ユーザデータを書き込むと共にそのアクセス対象ページの冗長領域に、対応論理アドレス情報としての論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データを書き込む(ステップS90)。
また、メモリコントローラ43は、アドレス変換テーブルに、新たな対象ブロックとなった物理ブロックの番号と、その物理ブロックに対応する論理ブロックの番号を対応させて書き込む(ステップS91)。即ち、アドレス変換テーブルを更新する。
さらに、メモリコントローラ43は、新たな対象ブロックのアクセス対象ページ以外のページに、元の対象ブロック(ステップS83で判定を行った物理ブロック)において、最新の有効なものとして記憶されているユーザデータに対応するセクタ番号を、冗長領域に書き込まれている付加情報から求め、そのユーザデータを、論理ブロックのアドレス、誤り訂正符号、ブロックステータス等の付加データと共に新たな対象ブロックのオリジナルデータ記憶部に書き込む(ステップS92)。そして、元の対象ブロックのすべてのページを一括消去し、消去済ブロックにする(ステップS93)。この際、アクセス対象ページよりページ番号が小さいページについては、アクセス対象ページへの書き込みの前に、ユーザデータ等の転写を行う。
[フラッシュメモリ42に対する読み出し処理]
次に、フラッシュメモリ42に対する読み出し処理の動作を、図17を用いて説明する。
図17は、読み出し処理を示すフローチャートである。
フラッシュメモリ42からユーザデータを読み出す場合、メモリコントローラ43のマイクロプロセッサ46は、ホストシステム44から読み出しコマンド及び論理アドレス情報とセクタ数が与えられると、そのセクタ数を内蔵するカウンタに設定し、読み出しを行うごとに、カウンタに設定されたセクタ数をデクリメントする。そして、カウンタに設定されたセクタ数が0以外のときに、次に読み出すユーザデータが有ると判断して次に読み出すユーザデータの論理アドレス情報を生成する、カウンタに設定されているセクタ数が0のときには、次に読み出しを行うユーザデータがないと判断し(ステップS101:NO)、マイクロプロセッサ46は、論理アドレス情報を生成せず、読み出し処理を終了する。
メモリコントローラ43は、マイクロプロセッサ46が次に読み出しを行うユーザデータがあると判断して論理アドレス情報を生成した場合(ステップS101:YES)、論理アドレス情報の上位側で指定される論理ブロックに対応する物理ブロックを、対象ブロックとしてアドレス変換テーブルから検索する(ステップS102)。
メモリコントローラ43は、対象ブロックとなる物理ブロックの更新データ記憶部の冗長領域の書き込み内容を物理ブロックのページの老番側から調べ、アクセス対象となるセクタ番号が記載されたページを検出する(ステップS103)。アクセス対象となるセクタ番号が冗長領域に記載されているページが検出できた場合(ステップS103:YES)、そのページが最新のユーザデータが書き込まれているページであり、メモリコントローラや43は、そのページのユーザ領域に書き込まれているユーザデータを、ホストシステム44から論理アドレス情報で指定されたユーザデータとして読み出す(ステップS104)。
ステップS103で、アクセス対象となるセクタ番号が記載されたページが更新データ記憶部から検出できなかった場合(ステップS103:NO)、オリジナルデータの書き替えが発生しなかったことになるので、メモリコントローラ43は、そのセクタ番号に対応するページ(オリジナルデータ記憶部)のユーザ領域に書き込まれているユーザデータを、ホストシステム44から論理アドレス情報で指定されたユーザデータとして読み出す(ステップS105)。
以上のように、本実施形態では、各物理ブロックの更新データ記憶部のページを、オリジナルデータ記憶部のページに対応させず、書き替えが発生したページのユーザデータを順次書き込む構成にしたので、空きブロックへのデータの転写やブロック消去の発生回数を第1及び第2の実施形態よりも、大幅に減ずることができる。
尚、本発明は、上記実施形態に限定されず、種々の変形が可能である。
例えば、第1〜第3の実施形態では、フラッシュメモリ2,22,42を図2(a)の各ページが512バイトのユーザー領域と16バイトの冗長領域で構成されているものとしたが、図2(b)に示したように、1物理ブロックが64ページ(P0〜P63)で構成され、各ページが2048バイトのユーザー領域と64バイトの冗長領域で構成されているものも使用できる。この場合には、物理ブロックの各ページに、4セクタ分のユーザデータを書き込めるようにしてもよい。各物理ページの個々のユーザデータの書き込みや書き替えは、消去済ブロックを利用し、必要なデータを消去済ブロックに書き込んでおき、その消去済ブロックに書き込んだデータ群を物理ブロックの所定位置に書き込めばよい。
第1の実施形態に係るフラッシュメモリシステムの概要を示す構成図である。 ブロックとページの関係を示す説明図である。 論理アドレス空間と物理アドレス空間を示す説明図である。 書き込み処理を示すフローチャートである。 書き込み処理を示すフローチャートである。 読み出し処理を示すフローチャートである。 本発明の第2の実施形態に係るフラッシュメモリシステムの概要を示す構成図である。 本実施形態のフラッシュメモリの構成を示す図である。 書き込み処理を示すフローチャートである。 書き込み処理を示すフローチャートである。 読み出し処理を示すフローチャートである。 本発明の第3の実施形態に係るフラッシュメモリシステムの概要を示す構成図である。 フラッシュメモリの構成を示す図である。 論理アドレス空間と物理アドレス空間を示す説明図である。 書き込み処理を示すフローチャートである。 書き込み処理を示すフローチャートである。 読み出し処理を示すフローチャートである。。
符号の説明
1,21,41 フラッシュメモリシステム
2,22,42 フラッシュメモリ
3,23,43 メモリコントローラ
4,24,44 ホストシステム
5,25,45 ホストインターフェース制御ブロック
6,26,46 マイクロプロセッサ
7,27,47 ホストインターフェースブロック
8,28,48 ワークエリア
9,29,49 バッファ
10,30,50 フラッシュメモリインターフェースブロック
11,31,51 ECCブロック
12,32,52 フラッシュメモリシーケンサブロック

Claims (13)

  1. 複数ページからなる物理ブロックが複数含まれる記憶領域を有し、データの消去が物理ブロック単位で行われるとともに、該物理ブロックのデータの消去済の部分にページ単位でデータの書き込みが可能なフラッシュメモリに接続され、該フラッシュメモリに対するホストシステムからのアクセスを制御するメモリコントローラであって、
    前記各物理ブロックの複数のページのうちの一部のページを、書き替え前のデータを書き込むためのオリジナルデータ記憶部とし、該オリジナルデータ記憶部のページに前記ホストシステムから与えられたデータを書き込むオリジナルデータ書き込み手段と、
    前記各物理ブロックの複数のページのうちの前記オリジナルデータ記憶部以外のページを、書き替え後のデータを書き込むための更新データ記憶部とし、前記オリジナルデータ記憶部に書き込まれたデータの書き替えデータが前記ホストシステムから与えられたときに、該書き替えデータを該更新データ記憶部に書き込む更新データ書き込み手段と、
    を備えることを特徴とするメモリコントローラ。
  2. 前記更新データ書き込み手段は、前記更新データ記憶部のページを前記オリジナルデータ記憶部のページに対応させ、該オリジナルデータ記憶部に書き込まれたデータの書き替えデータが前記ホストシステムから与えられたときに、該オリジナルデータ記憶部に書き込まれたデータの書き込まれたページに対応する更新データ記憶部のページに、該書き替えデータを書き込むことを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記更新データ書き込み手段は、前記各物理ブロックの前記オリジナルデータ記憶部以外のページを、書き替え後のデータを書き込むための複数の更新データ記憶部とし、前記オリジナルデータ記憶部の特定のページに書き込まれたデータの書き替えデータ或いはその書き替えデータの書き替えデータが与えられるごとに、該書き替えデータを書き込み先の前記更新データ記憶部を変更して書き込むことを特徴とする請求項1に記載のメモリコントローラ。
  4. 前記各物理ブロックの前記複数の更新データ記憶部の各ページを前記オリジナルデータ記憶部のページに対応させ、前記オリジナルデータ記憶部のページに書き込まれたデータの書き替えデータ或いはその書き替えデータの書き替えデータを該オリジナルデータ記憶部のページに対応させて各更新データ記憶部のページに書き込むことを特徴とする請求項3に記載のメモリコントローラ。
  5. 前記更新データ書き込み手段は、前記オリジナルデータ記憶部に書き込まれたデータの書き替えデータ或いは前記更新データ記憶部に書き込まれているデータの書き替えデータが前記ホストシステムから与えられたときに、該書き替えデータを該更新データ記憶部に書き込むことを特徴とする請求項1に記載のメモリコントローラ。
  6. 前記更新データ書き込み手段は、前記オリジナルデータ記憶部に書き込まれたデータの書き替えデータ或いは前記更新データ記憶部に書き込まれたデータの書き替えデータが前記ホストシステムから与えられるごとに、前記更新データ記憶部のページに順に書き込むことを特徴とする請求項5に記載のメモリコントローラ。
  7. 請求項1乃至6のいずれか1項に記載のメモリコントローラと、前記フラッシュメモリとを備えることを特徴とするフラッシュメモリシステム。
  8. 複数ページからなる物理ブロックが複数含まれる記憶領域を有し、データの消去が物理ブロック単位で行われるとともに、該物理ブロックのデータの消去済の部分にページ単位でデータの書き込みが可能なフラッシュメモリに対し、
    前記各物理ブロックの複数のページのうちの一部のページを、書き替え前のデータを書き込むためのオリジナルデータ記憶部とし、該オリジナルデータ記憶部のページに前記ホストシステムから与えられたデータを書き込むオリジナルデータ書き込み処理と、
    前記各物理ブロックの複数のページのうちの前記オリジナルデータ記憶部以外のページを、書き替え後のデータを書き込むための更新データ記憶部とし、前記オリジナルデータ記憶部に書き込まれたデータの書き替えデータが前記ホストシステムから与えられたときに、該書き替えデータを該更新データ記憶部に書き込む更新データ書き込み処理とを、
    含むことを特徴とするフラッシュメモリの制御方法。
  9. 前記更新データ書き込み処理は、前記更新データ記憶部のページを前記オリジナルデータ記憶部のページに対応させ、該オリジナルデータ記憶部に書き込まれたデータの書き替えデータが前記ホストシステムから与えられたときに、該オリジナルデータ記憶部に書き込まれたデータの書き込まれたページに対応する更新データ記憶部のページに、該書き替えデータを書き込むことを特徴とする請求項8に記載のフラッシュメモリの制御方法。
  10. 前記更新データ書き込み処理は、前記各物理ブロックの前記オリジナルデータ記憶部以外のページを、書き替え後のデータを書き込むための複数の更新データ記憶部とし、前記オリジナルデータ記憶部の特定のページに書き込まれたデータの書き替えデータ或いはその書き替えデータの書き替えデータが与えられるごとに、該書き替えデータを書き込み先の前記更新データ記憶部を変更して書き込むことを特徴とする請求項9に記載のフラッシュメモリの制御方法。
  11. 前記各物理ブロックの前記複数の更新データ記憶部の各ページを前記オリジナルデータ記憶部のページに対応させ、前記オリジナルデータ記憶部のページに書き込まれたデータの書き替えデータ或いはその書き替えデータの書き替えデータを該オリジナルデータ記憶部のページに対応させて各更新データ記憶部のページに書き込むことを特徴とする請求項10に記載のフラッシュメモリの制御方法。
  12. 前記更新データ書き込み処理は、前記オリジナルデータ記憶部に書き込まれたデータの書き替えデータ或いは前記更新データ記憶部に書き込まれているデータの書き替えデータが前記ホストシステムから与えられたときに、該書き替えデータを該更新データ記憶部に書き込むことを特徴とする請求項8に記載のフラッシュメモリの制御方法。
  13. 前記更新データ書き込み処理は、前記オリジナルデータ記憶部に書き込まれたデータの書き替えデータ或いは前記更新データ記憶部に書き込まれたデータの書き替えデータが前記ホストシステムから与えられるごとに、前記更新データ記憶部のページに順に書き込むことを特徴とする請求項12に記載のフラッシュメモリの制御方法。
JP2005280561A 2005-09-27 2005-09-27 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 Active JP4661497B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005280561A JP4661497B2 (ja) 2005-09-27 2005-09-27 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005280561A JP4661497B2 (ja) 2005-09-27 2005-09-27 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Publications (2)

Publication Number Publication Date
JP2007094571A true JP2007094571A (ja) 2007-04-12
JP4661497B2 JP4661497B2 (ja) 2011-03-30

Family

ID=37980251

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005280561A Active JP4661497B2 (ja) 2005-09-27 2005-09-27 メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Country Status (1)

Country Link
JP (1) JP4661497B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009064251A (ja) * 2007-09-06 2009-03-26 Hitachi Ltd 半導体記憶装置及び半導体記憶装置の制御方法
JP2009116465A (ja) * 2007-11-02 2009-05-28 Hitachi Ltd 記憶装置及びメモリ制御方法
WO2015008338A1 (ja) * 2013-07-16 2015-01-22 富士通株式会社 情報処理装置、制御回路、制御プログラム、および制御方法
JP2019074797A (ja) * 2017-10-12 2019-05-16 ラピスセミコンダクタ株式会社 不揮発性メモリのデータ書換方法及び半導体装置
JP2022171773A (ja) * 2019-01-29 2022-11-11 キオクシア株式会社 メモリシステムおよび制御方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06222985A (ja) * 1993-01-26 1994-08-12 Oki Electric Ind Co Ltd メモリ制御装置
JPH0997206A (ja) * 1995-09-28 1997-04-08 Canon Inc フラッシュrom管理方法及び装置及びコンピュータ制御装置
JPH0997207A (ja) * 1995-09-28 1997-04-08 Canon Inc フラッシュrom管理方法及び装置及びコンピュータ制御装置
JP2004078907A (ja) * 2002-06-20 2004-03-11 Tokyo Electron Device Ltd 記憶装置、メモリ管理方法及びプログラム
JP2004164633A (ja) * 2002-10-28 2004-06-10 Sandisk Corp 不揮発性メモリシステム内においてアウトオブシーケンス書き込みプロセスを効果的に可能にするための方法および装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06222985A (ja) * 1993-01-26 1994-08-12 Oki Electric Ind Co Ltd メモリ制御装置
JPH0997206A (ja) * 1995-09-28 1997-04-08 Canon Inc フラッシュrom管理方法及び装置及びコンピュータ制御装置
JPH0997207A (ja) * 1995-09-28 1997-04-08 Canon Inc フラッシュrom管理方法及び装置及びコンピュータ制御装置
JP2004078907A (ja) * 2002-06-20 2004-03-11 Tokyo Electron Device Ltd 記憶装置、メモリ管理方法及びプログラム
JP2004164633A (ja) * 2002-10-28 2004-06-10 Sandisk Corp 不揮発性メモリシステム内においてアウトオブシーケンス書き込みプロセスを効果的に可能にするための方法および装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009064251A (ja) * 2007-09-06 2009-03-26 Hitachi Ltd 半導体記憶装置及び半導体記憶装置の制御方法
US8312203B2 (en) 2007-09-06 2012-11-13 Hitachi, Ltd. Semiconductor storage device and method of controlling a semiconductor storage device by allocating a physical block composed of plural pages to a group of logical addresses
JP2009116465A (ja) * 2007-11-02 2009-05-28 Hitachi Ltd 記憶装置及びメモリ制御方法
WO2015008338A1 (ja) * 2013-07-16 2015-01-22 富士通株式会社 情報処理装置、制御回路、制御プログラム、および制御方法
JP6028866B2 (ja) * 2013-07-16 2016-11-24 富士通株式会社 情報処理装置、制御回路、制御プログラム、および制御方法
JP2019074797A (ja) * 2017-10-12 2019-05-16 ラピスセミコンダクタ株式会社 不揮発性メモリのデータ書換方法及び半導体装置
JP7153435B2 (ja) 2017-10-12 2022-10-14 ラピスセミコンダクタ株式会社 不揮発性メモリのデータ書換方法及び半導体装置
JP2022171773A (ja) * 2019-01-29 2022-11-11 キオクシア株式会社 メモリシステムおよび制御方法
JP7381678B2 (ja) 2019-01-29 2023-11-15 キオクシア株式会社 メモリシステム

Also Published As

Publication number Publication date
JP4661497B2 (ja) 2011-03-30

Similar Documents

Publication Publication Date Title
JP4373943B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4661497B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2007034581A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4235646B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP4661191B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4177292B2 (ja) メモリンコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4241741B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4655034B2 (ja) メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法
JP4609406B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP2005292925A (ja) メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4661748B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4697146B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4000124B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP3934659B1 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4177301B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4194518B2 (ja) メモリコントローラ、フラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP4273109B2 (ja) メモリコントローラ及びフラッシュメモリシステム
JP4235595B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
JP4569554B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4304167B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4366283B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム
JP4254930B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4213166B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP2005293177A (ja) メモリコントローラ及びフラッシュメモリシステム
JP4332108B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070312

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100524

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100629

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100825

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4661497

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140114

Year of fee payment: 3