以下、図面を参照しながら、本発明の例を実施するための最良の形態について詳細に説明する。
1. 基本構成
本発明の例では、フラッシュメモリに対する高速書き込みをインターリーブ動作により実現するため、以下の構成を採用する。
まず、フラッシュチップ(メモリチップ)は、1つのメモリセルにn(nは、2以上の自然数)ビットを記憶する多値フラッシュメモリである。また、フラッシュチップは、複数のブロック(メモリブロック)を有し、複数のブロックは、それぞれ、複数のフィジカルページから構成される。
ここで、ブロックとは、データの記憶エリアとなるメモリセルアレイを複数に区分したときの一区分のことである。また、ページとは、ブロックを複数に区分したときの一区分のことである。従って、ページサイズは、ブロックサイズよりも小さい。
これらの文言は、特に、NANDフラッシュメモリで使用されるが、本発明は、NANDフラッシュメモリに限定されるものではない。
書き込みは、最下位のフィジカルページから最上位のフィジカルページに向かってフィジカルページごとに行われる。
最下位のフィジカルページは、書き込み時間が最も短い下位ページを含み、最上位のフィジカルページは、書き込み時間が最も長い上位ページを含む。最下位のフィジカルページ及び最上位のフィジカルページを除く残りの複数のフィジカルページは、下位ページ、(n−2)個の中位ページ及び上位ページからなる第1単位の繰り返しである。
このような前提の下、本発明の例では、ロジカルページの初期書き込み時及び上書き時に、それぞれ、ロジカルページを一時的に記憶するテンポラリメモリを用意する。
ここで、ロジカルページとは、ホストが指定するページのことであり、フィジカルページとは、フラッシュチップの内部で実際に指定されるページのことである。
また、テンポラリメモリは、例えば、フラッシュチップ内のブロックの書き込み時間が最も短い下位ページ、フラッシュチップ内のページバッファなどである。
そして、インターリーブ動作によるロジカルページの書き込みは、例えば、第1フラッシュチップ内のテンポラリメモリとブロックの最下位のフィジカルページとにより第1単位のページ数と同じページ数を有する第2単位を形成し、第2フラッシュチップ内のテンポラリメモリとブロックの最下位のフィジカルページとにより第1単位のページ数と同じページ数を有する第3単位を形成し、第2単位、第3単位、第1フラッシュチップ内の第1単位及び第2フラッシュチップ内の第1単位の順番で行う。
第2単位及び第3単位は、ページシフト動作によるロジカルページの上書きを、いずれのロジカルページから繰り返し行っても、同一のフラッシュチップ内でのロジカルページの順番を崩すことなく、ロジカルページのデータ移動を同一のフラッシュチップ内のみで行うために採用された構成要件である。
例えば、4値の場合、インターリーブ動作によるニューブロックに対するロジカルページの書き込みは、2個のロジカルページをペアとして、以下の順番で行う。
A. 第1フラッシュチップ内の第2単位(2ページ)
テンポラリメモリ→最下位のフィジカルページ(下位ページ)
B. 第2フラッシュチップ内の第3単位(2ページ)
テンポラリメモリ→最下位のフィジカルページ(下位ページ)
C. 第1フラッシュチップ内の第1単位(2ページ)
下位ページ→上位ページ
D. 第2フラッシュチップ内の第1単位(2ページ)
下位ページ→上位ページ
E. C.とD.の繰り返し
F. テンポラリメモリに書き込まれたロジカルページのコピー
第1フラッシュメモリ内のテンポラリメモリに書き込まれたロジカルページは、第1フラッシュメモリ内のニューブロックの最上位のフィジカルページ(上位ページ)にコピーされ、第2フラッシュメモリ内のテンポラリメモリに書き込まれたロジカルページは、第2フラッシュメモリ内のニューブロックの最上位のフィジカルページ(上位ページ)にコピーされる。
但し、ニューブロックに対して、オールドブロック内の上位ページからロジカルページの上書きを行うとき、上述のA.におけるテンポラリメモリに対する書き込みは省略し、上述のA.における最下位のフィジカルページ(下位ページ)から書き込みを開始する。
この時、上述のF.においては、第2フラッシュメモリ内のテンポラリメモリに書き込まれたロジカルページのコピーのみを行う。
尚、上述のF.におけるコピーに関しては、オールドブロックの撤収時に行うのが最も好ましい。
また、2 n 値(1つのメモリセルにnビットを記憶する)の場合、インターリーブ動作によるニューブロックに対するロジカルページの書き込みは、n個のロジカルページをペアとして、以下の順番で行う。
A. 第1フラッシュチップ内の第2単位(nページ)
テンポラリメモリ→最下位のフィジカルページ(下位ページ→(n−2)個の中位ページ)
B. 第2フラッシュチップ内の第3単位(nページ)
テンポラリメモリ→最下位のフィジカルページ(下位ページ→(n−2)個の中位ページ)
C. 第1フラッシュチップ内の第1単位(nページ)
下位ページ→(n−2)個の中位ページ→上位ページ
D. 第2フラッシュチップ内の第1単位(nページ)
下位ページ→(n−2)個の中位ページ→上位ページ
E. C.とD.の繰り返し
F. テンポラリメモリに書き込まれたロジカルページのコピー
第1フラッシュメモリ内のテンポラリメモリに書き込まれたロジカルページは、第1フラッシュメモリ内のニューブロックの最上位のフィジカルページ内の上位ページにコピーされ、第2フラッシュメモリ内のテンポラリメモリに書き込まれたロジカルページは、第2フラッシュメモリ内のニューブロックの最上位のフィジカルページ内の上位ページにコピーされる。
但し、ニューブロックに対して、オールドブロック内の(n−2)個の中位ページ又は上位ページからロジカルページの上書きを行うとき、上述のA.におけるテンポラリメモリに対する書き込みは省略し、上述のA.における最下位のフィジカルページ内の下位ページから書き込みを開始する。
この時、上述のF.においては、第2フラッシュメモリ内のテンポラリメモリに書き込まれたロジカルページのコピーのみを行う。
尚、上述のF.におけるコピーに関しては、オールドブロックの撤収時に行うのが最も好ましい。
さらに、2 n 値(1つのメモリセルにnビットを記憶する)の場合、インターリーブ動作によるニューブロックに対するロジカルページの書き込みは、以下の順番で行ってもよい。
A. 第1フラッシュチップ内の第2単位(nページ)
テンポラリメモリ(n−1ページ)→最下位のフィジカルページ(下位ページ)
B. 第2フラッシュチップ内の第3単位(nページ)
テンポラリメモリ(n−1ページ)→最下位のフィジカルページ(下位ページ)
C. 第1フラッシュチップ内の第1単位(nページ)
下位ページ→(n−2)個の中位ページ→上位ページ
D. 第2フラッシュチップ内の第1単位(nページ)
下位ページ→(n−2)個の中位ページ→上位ページ
E. C.とD.の繰り返し
F. テンポラリメモリに書き込まれたロジカルページのコピー
尚、上述のF.におけるコピーに関しては、オールドブロックの撤収時に行うのが最も好ましい。
このような構成によれば、ページシフト動作によるロジカルページの上書きを、いずれのロジカルページから繰り返し行っても、同一のフラッシュチップ内でのロジカルページの順番を崩すことがない。言い換えれば、ロジカルページの順番は、ブロックが変わる度に、同一のフラッシュチップ内でシフトするだけである。
従って、オールドブロックの撤収を行うとき、ロジカルページのデータは、同一のフラッシュチップ内での移動のみとなるため、フラッシュチップに搭載されたブロック間でのデータの高速移動機能を利用し、撤収時間の短縮による高速書き込みを実現できる。
2. フラッシュメモリシステム
図1は、本発明の基本となるフラッシュメモリシステムを示している。
フラッシュチップCP0,CP1は、それぞれ、例えば、NANDフラッシュメモリが形成されるチップである。
フラッシュチップCP0,CP1は、m+1個(mは、自然数)のブロックBK0,BK1,…BKmから構成される。ブロックBKi(i=0,1,…m)は、複数のページから構成される。
メモリコントローラ11は、フラッシュチップCP0,CP1に対するデータ書き込み動作を制御する。
ここで、本例では、フラッシュチップCP0,CP1は、2個であるが、3個以上としてもよい。
また、メモリコントローラ11及びフラッシュチップCP0,CP1は、1つのパッケージ内に収められていてもよいし、フラッシュチップCP0が収められるパッケージとフラッシュチップCP1が収められるパッケージとは、異なっていてもよい。
3. 多値フラッシュメモリ
本発明は、多値フラッシュメモリに対するデータ書き込み技術に関する。
ここで、多値とは、1つのメモリセルに3値以上のデータが記憶されることをいう。データの単位である1ビットは、2値であるため、多値フラッシュメモリは、通常、2n値(nは、自然数)を有する。1つのメモリセルにnビットが記憶されるとき、そのnビットは、下位ビット(lower bit)、中位ビット(middle bits)及び上位ビット(upper bit)で表されることとする。
多値NANDフラッシュメモリでは、データ書き込みは、ページ単位で行われる。この場合、書き込みデータとしての下位ビットは、下位ページ(lower page)Lと呼ばれ、中位ビットは、中位ページ(middle pages)Mと呼ばれ、上位ビットは、上位ページ(upper page)Uと呼ばれる。
例えば、図2に示すように、4値NANDフラッシュメモリでは、1つのメモリセルに4値(2ビット)が記憶される。このとき、1つのメモリセルに記憶される2ビットは、下位ビット及び上位ビットで表される。
1つのメモリセルに下位ビットのみが記憶された状態では、メモリセルの閾値分布は、第1状態A及び第2状態Mのうちの一つになる。第1状態Aは、消去状態であり、第2状態Mは、LM(lower middle)状態と称される。
1つのメモリセルに下位ビットと上位ビットとが記憶された状態では、メモリセルの閾値分布は、第1状態A、第3状態B、第4状態C及び第5状態Dのうちの一つになる。例えば、第3状態Bは、第1状態Aからの閾値シフトにより得られ、第4及び第5状態C,Dは、それぞれ、第2状態Mからの閾値シフトにより得られる。
但し、閾値のシフト方法は、これに限られることはない。
例えば、図3に示すように、下位ビットのみが記憶された状態では、メモリセルの閾値分布を、第1状態A及び第2状態Bのうちの一つとし、下位ビットと上位ビットとが記憶された状態では、メモリセルの閾値分布を、第1状態A、第2状態B、第3状態C及び第4状態Dのうちの一つとしてもよい。
この場合、第3状態Cは、第2状態Bからの閾値シフトにより得られ、第4状態Dは、第1状態Aからの閾値シフトにより得られる。
4. フラッシュメモリのブロック構成
本発明の前提となるフラッシュメモリのブロック構成について説明する。
図4及び図5は、フラッシュメモリのブロック構成を示している。
ブロックBKi(i=0,1,…m)は、図1のブロックBK0,BK1,…BKmに相当する。
図4は、4値フラッシュメモリのブロック構成である。
1つのブロックBKiは、j+1個(jは、自然数)のフィジカルアドレスPA0,PA1,PA2,…PAj−1,PAjから構成される。
1つのブロックBKi内の最下位のフィジカルアドレスPA0は、フィジカルページPP0の1ページのみから構成される。フィジカルページPP0は、例えば、下位ページLに設定される。
また、1つのブロックBKi内の最上位のフィジカルアドレスPAjは、フィジカルページPP2j−1の1ページのみから構成される。フィジカルページPP2j−1は、例えば、上位ページUに設定される。
フィジカルページPP0,PP2j−1を下位ページに設定するか、又は上位ページに設定するかは、任意である。
残りのフィジカルアドレスPA1,PA2,…PAj−1は、下位ページL及び上位ページUの2ページから構成される。
例えば、フィジカルアドレスPA1は、下位ページLとしてのフィジカルページPP1と上位ページUとしてのフィジカルページPP2とから構成される。
図5は、8値フラッシュメモリのブロック構成である。
1つのブロックBKiは、j+1個(jは、自然数)のフィジカルアドレスPA0,PA1,PA2,…PAj−1,PAjから構成される。
1つのブロックBKi内の最下位のフィジカルアドレスPA0は、フィジカルページPP0の1ページのみから構成される。フィジカルページPP0は、例えば、下位ページLに設定される。
また、1つのブロックBKi内の最上位のフィジカルアドレスPAjは、フィジカルページPP2j−1の1ページのみから構成される。フィジカルページPP2j−1は、例えば、上位ページUに設定される。
フィジカルページPP0,PP2j−1を下位ページに設定するか、又は上位ページに設定するかは、任意である。
残りのフィジカルアドレスPA1,PA2,…PAj−1は、下位ページL、中位ページM及び上位ページUの3ページから構成される。
例えば、フィジカルアドレスPA1は、下位ページLとしてのフィジカルページPP1と、中位ページMとしてのフィジカルページPP2と、上位ページUとしてのフィジカルページPP3とから構成される。
尚、1つのブロックBKi内の最下位のフィジカルアドレスPA0は、下位ページL及び中位ページMの2ページから構成されていてもよい。また、1つのブロックBKi内の最上位のフィジカルアドレスPAjは、中位ページM及び上位ページUの2ページから構成されていてもよい。
図6は、NANDフラッシュメモリのブロック構成を示している。
ここでは、図4のブロック構成に対応させて、4値の例を説明する。
NANDセルユニットCUは、直列接続されるj+1個のメモリセルMCと、その両端に1つずつ接続される合計2つのセレクトゲートトランジスタST1,ST2とから構成される。セレクトゲートトランジスタST1は、ソース線SLに接続され、セレクトゲートトランジスタST2は、ビット線BL0に接続される。
ワード線WL0,WL1,WL2,…WLj−1、WLjは、メモリセルMCに接続され、セレクトゲート線SGS,SGDは、セレクトゲートトランジスタST1,ST2に接続される。
1つのブロックBKiは、j+1個のフィジカルアドレスPA0,PA1,PA2,…PAj−1,PAjから構成される。
1つのブロックBKi内の最下位のフィジカルアドレスPA0は、フィジカルページ(下位ページ)PP0の1ページのみから構成される。
また、1つのブロックBKi内の最上位のフィジカルアドレスPAjは、フィジカルページ(上位ページ)PP2j−1の1ページから構成される。
残りのフィジカルアドレスPA1,PA2,…PAj−1は、下位ページL及び上位ページUの2ページから構成される。
以上の説明では、4値(2ビット)と8値(3ビット)のブロック構成について説明したが、例えば、図5の中位ビットMの数を増やすことにより、容易に、16値(4ビット)、32値(5ビット)、64値(6ビット)…に応用することができる。
これらフラッシュメモリのブロック構成の特徴は、1つのブロックBKi内の最下位のフィジカルアドレスPA0のページ構成(1ページのみ)が、フィジカルアドレスPA1、PA2,…PAj−1のページ構成(複数ページ)と異なっていることにある。
これは、以下に説明するページシフト動作及びジグザグインターリーブ動作を実行するに当って高速書き込みを妨げる一つの要因となる。
5. ページシフト動作
ページシフト動作は、フラッシュメモリにおいて高速書き込みを実現するために開発された技術の一つである。
本発明は、ページシフト動作を前提とするため、以下、これについて説明する。
フラッシュメモリは、例えば、データ消去をブロック単位で行い、データ書き込みをページ単位で行う。一方、データは、ページサイズよりも小さいサイズ、例えば、セクタで管理される。
ここで、フラッシュメモリに新規データを書き込むときは、例えば、データ消去済みの未使用ブロック(ニューブロック)に対して、セクタ単位で管理される新規データを、最下位のフィジカルページから最上位のフィジカルページに向かって、順次、ページ単位で書き込むことができる。
これに対し、データが書き込まれている使用中ブロック(オールドブロック)内のページの一部(例えば、セクタ)を上書きデータ(over writing data)により変更するときは、上書きの対象となるページの一部のみを変更することはできないため、例えば、新たにデータ消去済みの未使用ブロック(ニューブロック)を用意し、この未使用ブロックに上書きデータを書き込む。
図7及び図8は、上書き動作の例を示している。
本例では、1つのブロックは、128ページから構成されるものとする。
まず、未使用ブロックBK−AのフィジカルページPP0,PP1,PP2,PP3,PP4,…PP125,PP126,PP127に対して、ロジカルページLP0,LP1,LP2,LP3,LP4,…LP125,LP126,LP127の新規データをページ単位で順次書き込む。データが書き込まれたブロックBK−Aは、使用中ブロックになる。
この後、ロジカルページLP125,LP126,LP127に対して上書きを行う場合を考える。この場合、まず、使用中ブロックBK−Aとは別の未使用ブロックBK−Bを用意する。
ここで、未使用ブロックBK−Bに対するデータ書き込みは、フィジカルページPP0からフィジカルページPP127に向かって、順次、ページ単位で行われる。
従って、図7の例では、使用中ブロックBK−A内のフィジカルページPP0〜PP124のデータ(有効データ)を未使用ブロックBK−Bにコピーした後、上書きデータとしてのロジカルページLP125〜LP127のデータを未使用ブロックBK−BのフィジカルページPP125〜PP127に書き込む。
しかし、この制御では、データを上書きする前に、常に、使用中ブロックBK−Aから未使用ブロックBK−Bへのデータのコピーを行う必要があるため、データ書き込み速度の高速化を図ることができない。
これに対し、図8の例では、上書きデータは、常に、未使用ブロックBK−Bの最下位のフィジカルページPP0から順次書き込む。具体的には、上書きデータとしてのロジカルページLP125〜LP127のデータは、未使用ブロックBK−BのフィジカルページPP0〜PP2に書き込む。
この制御をページシフト動作と呼ぶ。
ページシフト動作によれば、使用中ブロックBK−A内のページの一部を上書きデータにより変更するときに、使用中ブロックBK−A内のデータを未使用ブロックBK−Bにコピーしなくてよいため、データ書き込み速度の高速化を図ることができる。
但し、ページシフト動作では、コントローラにより、ロジカルページとフィジカルページとの関係を管理することが重要である。
そして、ブロックBK−A内の残りの有効データ、即ち、ロジカルページLP0〜LP124のデータは、適当な時期に、例えば、ブロックBK−A内のフィジカルページPP0〜PP124からブロックBK−B内のフィジカルページPP3〜PP127に移動させる。
ブロックBK−A内の有効データの移動後において、ブロックBK−Aは、無効データのみを有する。このため、ブロックBK−Aに対してデータ消去が行われると、ブロックBK−Aは、再び、未使用ブロックとして取り扱われる。
このように、使用中ブロックが再び未使用ブロックに戻ることを撤収と呼ぶ。
6. ジグザクインターリーブ動作
ジグザグインターリーブ動作も、フラッシュメモリにおいて高速書き込みを実現するために開発された技術の一つである。
本発明は、ジグザグインターリーブ動作を前提とするため、以下、これについて説明する。ジグザグとは、多値フラッシュメモリに対するデータ書き込みにインターリーブ動作を適用したときに、複数のチップのフィジカルページに対するデータ書き込みの順番をジグザグにすると、高速書き込みに貢献できることから付けられた名称である。
(1) ノーマルインターリーブ動作
ジグザグインターリーブ動作を理解するには、まず、ノーマルインターリーブ動作を知っておく必要があるため、これについて説明する。
図9は、ノーマルインターリーブ動作の書き込み手順を示している。
ここでは、インターリーブの対象となるチップ数は、2つとし、1つのブロックは、128ページから構成されるものとする。
初期書き込みでは、2つのフラッシュチップCP0,CP1内の未使用ブロックBK−AのフィジカルページPP0,PP1,PP2,PP3,PP4,…PP125,PP126,PP127に対して、交互に、ロジカルページLP0,LP1,LP2,LP3,LP4,…LP125,LP126,LP127の新規データをページ単位で順次書き込む。
例えば、まず、ロジカルページLP0のデータを、フラッシュチップCP0の未使用ブロックBK−AのフィジカルページPP0(下位ページL)に書き込む。次に、ロジカルページLP1のデータを、フラッシュチップCP1の未使用ブロックBK−AのフィジカルページPP0(下位ページL)に書き込む。
続けて、ロジカルページLP2のデータを、フラッシュチップCP0の未使用ブロックBK−AのフィジカルページPP1(下位ページL)に書き込む。次に、ロジカルページLP3のデータを、フラッシュチップCP1の未使用ブロックBK−AのフィジカルページPP1(下位ページL)に書き込む。
以下、同様に、ロジカルページLP4,LP5,…LP254,LP255のデータを順次書き込む。
データが書き込まれたブロックBK−Aは、使用中ブロックになる。
この後、ロジカルページLP4,LP5,LP6,LP7に対して上書きを行う場合を考える。この場合、まず、使用中ブロックBK−Aとは別の未使用ブロックBK−Bを用意する。
ここで、未使用ブロックBK−Bに対するデータ書き込みは、上述したページシフト動作により、フィジカルページPP0からフィジカルページPP127に向かって、順次、ページ単位で行うものとする。
即ち、上書き動作では、2つのフラッシュチップCP0,CP1内の未使用ブロックBK−BのフィジカルページPP0,PP1に対して、交互に、ロジカルページLP4,LP5,LP6,LP7のデータを書き込む。
具体的には、まず、ロジカルページLP4のデータを、フラッシュチップCP0の未使用ブロックBK−BのフィジカルページPP0(下位ページL)に書き込む。次に、ロジカルページLP5のデータを、フラッシュチップCP1の未使用ブロックBK−BのフィジカルページPP0(下位ページL)に書き込む。
続けて、ロジカルページLP6のデータを、フラッシュチップCP0の未使用ブロックBK−BのフィジカルページPP1(下位ページL)に書き込む。次に、ロジカルページLP7のデータを、フラッシュチップCP1の未使用ブロックBK−BのフィジカルページPP1(下位ページL)に書き込む。
そして、ブロックBK−A内の残りの有効データ、即ち、ロジカルページLP0〜LP3,LP8〜LP255のデータは、適当な時期に、例えば、ブロックBK−A内のフィジカルページPP0,PP1,PP4〜PP127からブロックBK−B内のフィジカルページPP2〜PP127に移動させる。
図10は、ノーマルインターリーブの動作波形を示している。
ノーマルインターリーブ動作では、例えば、2つのフラッシュチップCP0,CP1に対して交互にデータを入力することにより、実質的に、2つのフラッシュチップCP0,CP1に対する書き込みを並行して行うことができ、見かけ上の書き込み速度を向上させることができる。
しかし、上述したフラッシュメモリの特有のブロック構成により、インターリーブが有効に機能せず、書き込み速度を大幅に向上させることが難しい。
なぜなら、多値フラッシュメモリでは、下位ページ、中位ページ及び上位ページに対する書き込み時間がそれぞれ異なっているからである。例えば、下位ページに対する書き込み時間は、最も短く、上位ページに対する書き込み時間は、最も長い。
即ち、ノーマルインターリーブ動作では、フラッシュチップCP0に対する下位ページの書き込み中に、フラッシュチップCP1に対する下位ページの入力を行い、フラッシュチップCP1に対する下位ページの書き込み中に、フラッシュチップCP0に対する上位ページの入力を行い、フラッシュチップCP0に対する上位ページの書き込み中に、フラッシュチップCP1に対する上位ページの入力を行う。
この場合、下位ページの書き込み時間は短いため、例えば、フラッシュチップCP0に対するロジカルページLP2の書き込み(Busy期間)中に、フラッシュチップCP1に対するロジカルページLP3のデータ入力を行うのは好ましくない。
また、上位ページの書き込み時間は長いため、例えば、フラッシュチップCP0に対するロジカルページLP4の上位ページへの書き込み(Busy期間)中に、フラッシュチップCP1に対するロジカルページLP5のデータ入力のみを行うのは効率的ではない。
この例では、ロジカルページLP4の書き込みのために生じる見かけ上のBusy期間Xが長くなるため、インターリーブによる高速書き込みの効果が制限される。
(2) ジグザグインターリーブ動作
ジグザグインターリーブ動作は、ノーマルインターリーブ動作の問題点を解消する。その特徴は、下位ページと上位ページとをペアで書き込むことにある。
図11は、ジグザグインターリーブ動作の書き込み手順を示している。
ここでは、インターリーブの対象となるチップ数は、2つとし、1つのブロックは、128ページから構成されるものとする。
初期書き込みでは、2つのフラッシュチップCP0,CP1内の未使用ブロックBK−AのフィジカルページPP0,PP1,PP2,PP3,PP4,…PP125,PP126,PP127に対して、ジグザクに、ロジカルページLP0,LP1,LP2,LP3,LP4,…LP125,LP126,LP127の新規データをページ単位で順次書き込む。
例えば、まず、ロジカルページLP0のデータを、フラッシュチップCP0の未使用ブロックBK−AのフィジカルページPP0(下位ページL)に書き込む。次に、ロジカルページLP1のデータを、フラッシュチップCP1の未使用ブロックBK−AのフィジカルページPP0(下位ページL)に書き込む。
続けて、ロジカルページLP2,LP3のデータを、フラッシュチップCP0の未使用ブロックBK−AのフィジカルページPP1(下位ページL),PP2(上位ページ)に書き込む。次に、ロジカルページLP4,LP5のデータを、フラッシュチップCP1の未使用ブロックBK−AのフィジカルページPP1(下位ページL),PP2(上位ページ)に書き込む。
以下、同様に、ロジカルページLP6,LP7,…LP254,LP255のデータを順次書き込む。
データが書き込まれたブロックBK−Aは、使用中ブロックになる。
この後、ロジカルページLP2〜LP7に対して上書きを行う場合を考える。この場合、まず、使用中ブロックBK−Aとは別の未使用ブロックBK−Bを用意する。
ここで、未使用ブロックBK−Bに対するデータ書き込みは、上述したページシフト動作により、フィジカルページPP0からフィジカルページPP127に向かって、順次、ページ単位で行うものとする。
即ち、上書き動作では、2つのフラッシュチップCP0,CP1内の未使用ブロックBK−BのフィジカルページPP0,PP1に対して、ジグザグに、ロジカルページLP2〜LP7のデータを書き込む。
具体的には、まず、ロジカルページLP2のデータを、フラッシュチップCP0の未使用ブロックBK−BのフィジカルページPP0(下位ページL)に書き込む。次に、ロジカルページLP3のデータを、フラッシュチップCP1の未使用ブロックBK−BのフィジカルページPP0(下位ページL)に書き込む。
続けて、ロジカルページLP4、LP5のデータを、フラッシュチップCP0の未使用ブロックBK−BのフィジカルページPP1(下位ページL),PP2(上位ページU)に書き込む。次に、ロジカルページLP6,LP7のデータを、フラッシュチップCP1の未使用ブロックBK−BのフィジカルページPP1(下位ページL),PP2(上位ページU)に書き込む。
そして、ブロックBK−A内の残りの有効データ、即ち、ロジカルページLP0,LP1,LP8〜LP255のデータは、適当な時期に、例えば、ブロックBK−A内のフィジカルページPP0,PP3〜PP127からブロックBK−B内のフィジカルページPP3〜PP127に移動させる。
図12は、ジグザグインターリーブの動作波形を示している。
ジグザグインターリーブ動作では、例えば、2つのフラッシュチップCP0,CP1に対してジグザグにデータを入力することにより、実質的に、2つのフラッシュチップCP0,CP1に対する書き込みを並行して行うことができ、見かけ上の書き込み速度を向上させることができる。
また、書き込みは、下位ページと上位ページとをペアにして続けて行うため、常に、1つのフラッシュチップの上位ページの書き込みによって生じるBusy期間を利用して、残りの1つ又は複数のフラッシュチップに対する下位ページ及び上位ページの入力を行う。
例えば、フラッシュチップCP0に対するロジカルページLP3の上位ページへの書き込み(Busy期間)中に、フラッシュチップCP1に対するロジカルページLP4,LP5のデータ入力を行う。
従って、ロジカルページLP3の書き込みのために生じる見かけ上のBusy期間Xが短くなるため、インターリーブによる高速書き込みの効果が最大となる。
この最大の効果は、ジグザクインターリーブの対象となるフラッシュチップの数を、上位ページ書き込みのBusy期間に基づいて最適値に設定することで実現される。
以上のジグザグインターリーブ動作について説明したが、その特徴は、複数のフラッシュチップに対してインターリーブ書き込みを行うに当って、下位ページと上位ページとをペアにして書き込みを行い、上位ページの書き込みによって生じるBusy期間を利用して、下位ページ及び上位ページの入力を行う、ということにある。
従って、この書き込み順序を崩さないことが重要になる。
しかし、上述したフラッシュメモリの特有のブロック構成により、ジグザグインターリーブ動作によっても、インターリーブが有効に機能しないモードがある。
このモードは、上書き時に発生する。
(3) ジグザグインターリーブ動作の課題
ジグザグインターリーブ動作の課題は、データの上書きをページシフト動作により行うときに発生する。
ジグザグインターリーブ動作の特徴は、上述のように、複数のフラッシュチップに対してインターリーブ書き込みを行うに当って、下位ページと上位ページとをペアにして連続して書き込みを行うことにある。
従って、この書き込み順序を崩さずに、ページシフト動作により上書きデータを書き込むことが必要である。
例えば、図11の例では、ロジカルページLP2〜LP7に対して上書きを行う。
ロジカルページLP2のデータは、フラッシュチップCP0の未使用ブロックBK−BのフィジカルページPP0(下位ページL)に書き込まれ、ロジカルページLP3のデータは、フラッシュチップCP1の未使用ブロックBK−BのフィジカルページPP0(下位ページL)に書き込まれる。
また、ロジカルページLP4、LP5のデータは、フラッシュチップCP0の未使用ブロックBK−BのフィジカルページPP1(下位ページL),PP2(上位ページU)に書き込まれ、ロジカルページLP6,LP7のデータは、フラッシュチップCP1の未使用ブロックBK−BのフィジカルページPP1(下位ページL),PP2(上位ページU)に書き込まれる。
この後、ブロックBK−A内の残りの有効データ、即ち、ロジカルページLP0,LP1,LP8〜LP255のデータを、例えば、ブロックBK−A内のフィジカルページPP0,PP3〜PP127からブロックBK−B内のフィジカルページPP3〜PP127に移動させ、ブロックBK−Aの撤収を図る。
しかし、この場合、フラッシュチップCP1内のブロックBK−Aに記憶されているロジカルページLP8,LP9〜LP252,LP253,LP255のデータは、フラッシュチップCP0内のブロックBK−Bにコピーしなければならない(Copy 1)。
また、フラッシュチップCP0内のブロックBK−Aに記憶されているロジカルページLP10,LP11〜LP250,LP251,LP254のデータは、フラッシュチップCP1内のブロックBK−Bにコピーしなければならない(Copy 2)。
このコピーでは、データは、異なる2つのチップ間を移動することになるため、この動作を実行するに当たっては、データを一時的に記憶する外部メモリ、例えば、図13に示すように、メモリコントローラ11内のメモリMが必要になる。
従って、ジグザグインターリーブ動作とページシフト動作とにより、書き込みの高速化を図っても、データ上書き後にブロックBK−Aの撤収を行うに当たって、データの移動に多大な時間を要することになる。この撤収時間の増加により、結果として、書き込み速度の大幅な改善を図ることはできない。
尚、この例では、ロジカルページLP0のデータは、フラッシュチップCP0内のブロックBK−AからブロックBK−Bにコピーされ(Copy 3)、ロジカルページLP255,LP1のデータは、フラッシュチップCP1内のブロックBK−AからブロックBK−Bにコピーされる(Copy 4)。
ところで、フラッシュチップ(例えば、NANDフラッシュメモリ)は、データを一時的に記憶しておくことが可能なページバッファを有している。これを利用すれば、フラッシュチップ内の異なるブロック間でデータを高速移動させることができる。
以下に説明する実施例では、データの上書きを、ジグザグインターリーブ動作及びページシフト動作により行っても、上書き後のブロックの撤収時においては、常に、データコピーが同一のフラッシュチップ内で行われることにより、書き込み速度の大幅な改善を図ることができる技術について提案する。
7. 実施例
本発明の例では、ロジカルページの初期書き込み時及び上書き時に、それぞれ、ロジカルページを一時的に記憶するテンポラリメモリを使用し、オールドブロックの撤収時に異なるフラッシュチップ間でデータ移動が生じることを防ぐことで、ページシフト動作及びインターリーブ動作による高速書き込みを実現する。
以下では、インターリーブ動作を、2つのフラッシュチップで行う場合と、4つのフラッシュチップで行う場合とについて説明する。
(1) 第1実施例
第1実施例は、インターリーブ動作を2つのフラッシュチップで行う場合である。
図14乃至図17は、第1実施例の書き込み手順を示している。
ここでは、1つのブロックは、128ページから構成されるものとする。
初期書き込みでは、テンポラリメモリTを使用し、フラッシュチップCP0,CP1内のニューブロックBK−Aに対するロジカルページの書き込みを、2個のロジカルページをペアとして、以下の順番で行う。
テンポラリメモリTは、例えば、図18に示すように、フラッシュチップCP0,CP1内のブロックBK−(T)の最下位のフィジカルページPP0(下位ページL)とすることができる。また、本例とは関係ないが、8値(3ビット)以上のフラッシュメモリでは、テンポラリメモリTを、ブロックBK−(T)の複数のフィジカルページPP0,PP1,…とすることができる。
まず、第1ステップとして、フラッシュチップCP0内のテンポラリメモリT及びブロックBK−A内のフィジカルページPP0(下位ページL)に対して、2個のロジカルページLP0,LP1をペアにして連続して書き込む。
次に、第2ステップとして、フラッシュチップCP1内のテンポラリメモリT及びブロックBK−A内のフィジカルページPP0(下位ページL)に対して、2個のロジカルページLP2,LP3をペアにして連続して書き込む。
ここで、上述の第1及び第2ステップでは、それぞれ、ロジカルページの書き込み順序が下位ページ→上位ページでないが、テンポラリメモリTをフラッシュチップCP0内のブロックBK−(T)の最下位のフィジカルページPP0(下位ページL)とすれば、高速書き込みが大きく制限されることはない。
次に、第3ステップとして、フラッシュチップCP0内のブロックBK−A内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、2個のロジカルページLP4,LP5をペアにして連続して書き込む。
次に、第4ステップとして、フラッシュチップCP1内のブロックBK−A内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、2個のロジカルページLP6,LP7をペアにして連続して書き込む。
ここで、上述の第3及び第4ステップでは、それぞれ、ロジカルページの書き込み順序が下位ページ→上位ページであるため、フラッシュチップCP0,CP1の一方に対する上位ページの書き込み時に生じるBusy期間を利用して、フラッシュチップCP0,CP1の他方に対する下位ページ及び上位ページの入力を行い、インターリーブ動作による高速書き込みを実現できる。
以下、第3及び第4ステップと同様にして、ロジカルページLP8,LP9,LP10,LP11…LP252,LP253,LP254,LP255を順次書き込む。
最後に、第5ステップとして、フラッシュチップCP0内のテンポラリメモリTに書き込まれたロジカルページLP0を、フラッシュチップCP0内のブロックBK−Aの最上位のフィジカルページPP127(上位ページU)にコピーし、フラッシュチップCP1内のテンポラリメモリTに書き込まれたロジカルページLP2を、フラッシュチップCP1内のブロックBK−Aの最上位のフィジカルページPP127(上位ページU)にコピーする。
ロジカルデータLP0〜LP255が書き込まれたフラッシュチップCP0,CP1内のブロックBK−Aは、使用中ブロック(オールドブロック)になる。
この後、上書きを行う場合を考える。
・ フラッシュチップCP0内の偶数ロジカルページ(LP)からの上書き
この上書きの書き込み手順は、図14に示すようになる。
上書きは、ロジカルページLP4〜LP7に対して行うものとする。
上書きでも、テンポラリメモリTを使用し、フラッシュチップCP0,CP1内のニューブロックBK−Bに対するロジカルページの書き込みを、2個のロジカルページをペアとして、以下の順番で行う。
まず、第1ステップとして、フラッシュチップCP0内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP4,LP5をペアにして連続して書き込む。
次に、第2ステップとして、フラッシュチップCP1内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP6,LP7をペアにして連続して書き込む。
ここで、上述の第1及び第2ステップでは、それぞれ、ロジカルページの書き込み順序が下位ページ→上位ページでないが、テンポラリメモリTをフラッシュチップCP0,CP1内のブロックBK−(T)の最下位のフィジカルページPP0(下位ページL)とすれば、高速書き込みが大きく制限されることはない。
この後、フラッシュチップCP0,CP1内のオールドブロックBK−AからニューブロックBK−Bへ、ロジカルページLP8,LP9〜LP254,LP255及びロジカルページLP0,LP1,LP2,LP3を、それぞれ移動させ(Copy 1, Copy 2)、オールドブロックBK−Aの撤収を図る。
まず、第3ステップとして、フラッシュチップCP0内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP0内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP8,LP9をペアにして連続して書き込む。
次に、第4ステップとして、フラッシュチップCP1内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP1内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP10,LP11をペアにして連続して書き込む。
ここで、上述の第3及び第4ステップでは、それぞれ、ロジカルページの書き込み順序が下位ページ→上位ページであるため、フラッシュチップCP0,CP1の一方に対する上位ページの書き込み時に生じるBusy期間を利用して、フラッシュチップCP0,CP1の他方に対する下位ページ及び上位ページの入力を行い、インターリーブ動作による高速書き込みを実現できる。
また、この第3及び第4ステップでのデータ移動は、常に、同一のフラッシュチップ内のみで行われるため、フラッシュチップに搭載されたブロック間でのデータの高速移動機能を利用し、撤収時間の短縮による高速書き込みを実現できる。
以下、第3及び第4ステップと同様にして、ロジカルページLP12,LP13,LP14,LP15…LP252,LP253,LP254,LP255及びロジカルページLP0,LP1,LP2,LP3を順次書き込む。
最後に、第5ステップとして、フラッシュチップCP0内のテンポラリメモリTに書き込まれたロジカルページLP4を、フラッシュチップCP0内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーし、フラッシュチップCP1内のテンポラリメモリTに書き込まれたロジカルページLP6を、フラッシュチップCP1内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーする。
ロジカルデータLP0〜LP255が書き込まれたフラッシュチップCP0,CP1内のブロックBK−Bは、使用中ブロック(オールドブロック)になる。
以上のような書き込み手順によれば、ページシフト動作によるロジカルページの上書きを、いずれのロジカルページから繰り返し行っても、同一のフラッシュチップ内でのロジカルページの順番を崩すことがない。言い換えれば、ロジカルページの順番は、ブロックが変わる度に、同一のフラッシュチップ内でシフトするだけである。
従って、オールドブロックの撤収を行うとき、ロジカルページのデータは、同一のフラッシュチップ内での移動のみとなるため、フラッシュチップに搭載されたブロック間でのデータの高速移動機能を利用し、撤収時間の短縮による高速書き込みを実現できる。
・ フラッシュチップCP1内の偶数ロジカルページ(LP)からの上書き
この上書きの書き込み手順は、図15に示すようになる。
上書きは、ロジカルページLP2〜LP5に対して行うものとする。
上書きでも、テンポラリメモリTを使用し、フラッシュチップCP0,CP1内のニューブロックBK−Bに対するロジカルページの書き込みを、2個のロジカルページをペアとして、以下の順番で行う。
まず、第1ステップとして、フラッシュチップCP1内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP2,LP3をペアにして連続して書き込む。
次に、第2ステップとして、フラッシュチップCP0内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP4,LP5をペアにして連続して書き込む。
ここで、上述の第1及び第2ステップでは、それぞれ、ロジカルページの書き込み順序が下位ページ→上位ページでないが、テンポラリメモリTをフラッシュチップCP0,CP1内のブロックBK−(T)の最下位のフィジカルページPP0(下位ページL)とすれば、高速書き込みが大きく制限されることはない。
この後、フラッシュチップCP0,CP1内のオールドブロックBK−AからニューブロックBK−Bへ、ロジカルページLP6,LP7〜LP254,LP255及びロジカルページLP0,LP1を、それぞれ移動させ(Copy 1, Copy 2)、オールドブロックBK−Aの撤収を図る。
まず、第3ステップとして、フラッシュチップCP1内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP1内のブロックBK−A内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)の2個のロジカルページLP6,LP7をペアにして連続して書き込む。
次に、第4ステップとして、フラッシュチップCP0内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP0内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP8,LP9をペアにして連続して書き込む。
ここで、上述の第3及び第4ステップでは、それぞれ、ロジカルページの書き込み順序が下位ページ→上位ページであるため、フラッシュチップCP0,CP1の一方に対する上位ページの書き込み時に生じるBusy期間を利用して、フラッシュチップCP0,CP1の他方に対する下位ページ及び上位ページの入力を行い、インターリーブ動作による高速書き込みを実現できる。
また、この第3及び第4ステップでのデータ移動は、常に、同一のフラッシュチップ内のみで行われるため、フラッシュチップに搭載されたブロック間でのデータの高速移動機能を利用し、撤収時間の短縮による高速書き込みを実現できる。
以下、第3及び第4ステップと同様にして、ロジカルページLP10,LP11,LP12,LP13…LP252,LP253,LP254,LP255及びロジカルページLP0,LP1を順次書き込む。
最後に、第5ステップとして、フラッシュチップCP1内のテンポラリメモリTに書き込まれたロジカルページLP2を、フラッシュチップCP1内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーし、フラッシュチップCP0内のテンポラリメモリTに書き込まれたロジカルページLP4を、フラッシュチップCP0内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーする。
ロジカルデータLP0〜LP255が書き込まれたフラッシュチップCP0,CP1内のブロックBK−Bは、使用中ブロック(オールドブロック)になる。
以上のような書き込み手順によれば、ページシフト動作によるロジカルページの上書きを、いずれのロジカルページから繰り返し行っても、同一のフラッシュチップ内でのロジカルページの順番を崩すことがない。言い換えれば、ロジカルページの順番は、ブロックが変わる度に、同一のフラッシュチップ内でシフトするだけである。
従って、オールドブロックの撤収を行うとき、ロジカルページのデータは、同一のフラッシュチップ内での移動のみとなるため、フラッシュチップに搭載されたブロック間でのデータの高速移動機能を利用し、撤収時間の短縮による高速書き込みを実現できる。
・ フラッシュチップCP0内の奇数ロジカルページ(LP)からの上書き
この上書きの書き込み手順は、図16に示すようになる。
上書きは、ロジカルページLP5〜LP7に対して行うものとする。
この上書きでは、フラッシュチップCP1内のテンポラリメモリTのみを使用し、フラッシュチップCP0,CP1内のニューブロックBK−Bに対するロジカルページの書き込みを、2個のロジカルページをペアとして、以下の順番で行う。
まず、第1ステップとして、フラッシュチップCP0内のブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしてのロジカルページLP5を書き込む。
次に、第2ステップとして、フラッシュチップCP1内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP6,LP7をペアにして連続して書き込む。
ここで、上述の第2ステップでは、ロジカルページの書き込み順序が下位ページ→上位ページでないが、テンポラリメモリTをフラッシュチップCP1内のブロックBK−(T)の最下位のフィジカルページPP0(下位ページL)とすれば、高速書き込みが大きく制限されることはない。
この後、フラッシュチップCP0,CP1内のオールドブロックBK−AからニューブロックBK−Bへ、ロジカルページLP8,LP9〜LP254,LP255及びロジカルページLP0,LP1,LP2,LP3,LP4を、それぞれ移動させ(Copy 1, Copy 2)、オールドブロックBK−Aの撤収を図る。
まず、第3ステップとして、フラッシュチップCP0内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP0内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP8,LP9をペアにして連続して書き込む。
次に、第4ステップとして、フラッシュチップCP1内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP1内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP10,LP11をペアにして連続して書き込む。
ここで、上述の第3及び第4ステップでは、それぞれ、ロジカルページの書き込み順序が下位ページ→上位ページであるため、フラッシュチップCP0,CP1の一方に対する上位ページの書き込み時に生じるBusy期間を利用して、フラッシュチップCP0,CP1の他方に対する下位ページ及び上位ページの入力を行い、インターリーブ動作による高速書き込みを実現できる。
また、この第3及び第4ステップでのデータ移動は、常に、同一のフラッシュチップ内のみで行われるため、フラッシュチップに搭載されたブロック間でのデータの高速移動機能を利用し、撤収時間の短縮による高速書き込みを実現できる。
以下、第3及び第4ステップと同様にして、ロジカルページLP12,LP13,LP14,LP15…LP252,LP253,LP254,LP255及びロジカルページLP0,LP1,LP2,LP3,LP4を順次書き込む。
最後に、第5ステップとして、フラッシュチップCP1内のテンポラリメモリTに書き込まれたロジカルページLP6を、フラッシュチップCP1内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーする。
ロジカルデータLP0〜LP255が書き込まれたフラッシュチップCP0,CP1内のブロックBK−Bは、使用中ブロック(オールドブロック)になる。
以上のような書き込み手順によれば、ページシフト動作によるロジカルページの上書きを、いずれのロジカルページから繰り返し行っても、同一のフラッシュチップ内でのロジカルページの順番を崩すことがない。言い換えれば、ロジカルページの順番は、ブロックが変わる度に、同一のフラッシュチップ内でシフトするだけである。
従って、オールドブロックの撤収を行うとき、ロジカルページのデータは、同一のフラッシュチップ内での移動のみとなるため、フラッシュチップに搭載されたブロック間でのデータの高速移動機能を利用し、撤収時間の短縮による高速書き込みを実現できる。
・ フラッシュチップCP1内の奇数ロジカルページ(LP)からの上書き
この上書きの書き込み手順は、図17に示すようになる。
上書きは、ロジカルページLP3〜LP5に対して行うものとする。
この上書きでは、フラッシュチップCP0内のテンポラリメモリTのみを使用し、フラッシュチップCP0,CP1内のニューブロックBK−Bに対するロジカルページの書き込みを、2個のロジカルページをペアとして、以下の順番で行う。
まず、第1ステップとして、フラッシュチップCP1内のブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしてのロジカルページLP3を書き込む。
次に、第2ステップとして、フラッシュチップCP0内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP4,LP5をペアにして連続して書き込む。
ここで、上述の第2ステップでは、ロジカルページの書き込み順序が下位ページ→上位ページでないが、テンポラリメモリTをフラッシュチップCP0内のブロックBK−(T)の最下位のフィジカルページPP0(下位ページL)とすれば、高速書き込みが大きく制限されることはない。
この後、フラッシュチップCP0,CP1内のオールドブロックBK−AからニューブロックBK−Bへ、ロジカルページLP6,LP7〜LP254,LP255及びロジカルページLP0,LP1,LP2を、それぞれ移動させ(Copy 1, Copy 2)、オールドブロックBK−Aの撤収を図る。
まず、第3ステップとして、フラッシュチップCP1内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP1内のブロックBK−A内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)の2個のロジカルページLP6,LP7をペアにして連続して書き込む。
次に、第4ステップとして、フラッシュチップCP0内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP0内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP8,LP9をペアにして連続して書き込む。
ここで、上述の第3及び第4ステップでは、それぞれ、ロジカルページの書き込み順序が下位ページ→上位ページであるため、フラッシュチップCP0,CP1の一方に対する上位ページの書き込み時に生じるBusy期間を利用して、フラッシュチップCP0,CP1の他方に対する下位ページ及び上位ページの入力を行い、インターリーブ動作による高速書き込みを実現できる。
また、この第3及び第4ステップでのデータ移動は、常に、同一のフラッシュチップ内のみで行われるため、フラッシュチップに搭載されたブロック間でのデータの高速移動機能を利用し、撤収時間の短縮による高速書き込みを実現できる。
以下、第3及び第4ステップと同様にして、ロジカルページLP10,LP11,LP12,LP13…LP252,LP253,LP254,LP255及びロジカルページLP0,LP1,LP2を順次書き込む。
最後に、第5ステップとして、フラッシュチップCP0内のテンポラリメモリTに書き込まれたロジカルページLP4を、フラッシュチップCP0内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーする。
ロジカルデータLP0〜LP255が書き込まれたフラッシュチップCP0,CP1内のブロックBK−Bは、使用中ブロック(オールドブロック)になる。
以上のような書き込み手順によれば、ページシフト動作によるロジカルページの上書きを、いずれのロジカルページから繰り返し行っても、同一のフラッシュチップ内でのロジカルページの順番を崩すことがない。言い換えれば、ロジカルページの順番は、ブロックが変わる度に、同一のフラッシュチップ内でシフトするだけである。
従って、オールドブロックの撤収を行うとき、ロジカルページのデータは、同一のフラッシュチップ内での移動のみとなるため、フラッシュチップに搭載されたブロック間でのデータの高速移動機能を利用し、撤収時間の短縮による高速書き込みを実現できる。
(2) 第2実施例
第2実施例は、インターリーブ動作を4つのフラッシュチップで行う場合である。
図19乃至図22は、第2実施例の書き込み手順を示している。
ここでは、1つのブロックは、128ページから構成されるものとする。
初期書き込みでは、テンポラリメモリTを使用し、フラッシュチップCP0,CP1,CP2,CP3内のニューブロックBK−Aに対するロジカルページの書き込みを、2個のロジカルページをペアとして、以下の順番で行う。
テンポラリメモリTは、例えば、図18に示すように、フラッシュチップCP0,CP1,CP2,CP3内のブロックBK−(T)の最下位のフィジカルページPP0(下位ページL)である。
まず、第1ステップとして、フラッシュチップCP0内のテンポラリメモリT及びブロックBK−A内のフィジカルページPP0(下位ページL)に対して、2個のロジカルページLP0,LP1をペアにして連続して書き込む。
次に、第2ステップとして、フラッシュチップCP1内のテンポラリメモリT及びブロックBK−A内のフィジカルページPP0(下位ページL)に対して、2個のロジカルページLP2,LP3をペアにして連続して書き込む。
次に、第3ステップとして、フラッシュチップCP2内のテンポラリメモリT及びブロックBK−A内のフィジカルページPP0(下位ページL)に対して、2個のロジカルページLP4,LP5をペアにして連続して書き込む。
次に、第4ステップとして、フラッシュチップCP3内のテンポラリメモリT及びブロックBK−A内のフィジカルページPP0(下位ページL)に対して、2個のロジカルページLP6,LP7をペアにして連続して書き込む。
次に、第5ステップとして、フラッシュチップCP0内のブロックBK−A内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、2個のロジカルページLP8,LP9をペアにして連続して書き込む。
次に、第6ステップとして、フラッシュチップCP1内のブロックBK−A内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、2個のロジカルページLP10,LP11をペアにして連続して書き込む。
次に、第7ステップとして、フラッシュチップCP2内のブロックBK−A内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、2個のロジカルページLP12,LP13をペアにして連続して書き込む。
次に、第8ステップとして、フラッシュチップCP3内のブロックBK−A内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、2個のロジカルページLP14,LP15をペアにして連続して書き込む。
以下、第5乃至第8ステップと同様にして、ロジカルページLP16,LP17…LPLP510,LP511を順次書き込む。
最後に、第9ステップとして、フラッシュチップCP0内のテンポラリメモリTに書き込まれたロジカルページLP0を、フラッシュチップCP0内のブロックBK−Aの最上位のフィジカルページPP127(上位ページU)にコピーし、フラッシュチップCP1内のテンポラリメモリTに書き込まれたロジカルページLP2を、フラッシュチップCP1内のブロックBK−Aの最上位のフィジカルページPP127(上位ページU)にコピーする。
また、フラッシュチップCP2内のテンポラリメモリTに書き込まれたロジカルページLP4を、フラッシュチップCP2内のブロックBK−Aの最上位のフィジカルページPP127(上位ページU)にコピーし、フラッシュチップCP3内のテンポラリメモリTに書き込まれたロジカルページLP6を、フラッシュチップCP3内のブロックBK−Aの最上位のフィジカルページPP127(上位ページU)にコピーする。
ロジカルデータLP0〜LP511が書き込まれたフラッシュチップCP0,CP1,CP2,CP3内のブロックBK−Aは、使用中ブロック(オールドブロック)になる。
この後、上書きを行う場合を考える。
・ フラッシュチップCP0内の偶数ロジカルページ(LP)からの上書き
この上書きの書き込み手順は、図19に示すようになる。
上書きは、ロジカルページLP8〜LP15に対して行うものとする。
上書きでも、テンポラリメモリTを使用し、フラッシュチップCP0,CP1,CP2,CP3内のニューブロックBK−Bに対するロジカルページの書き込みを、2個のロジカルページをペアとして、以下の順番で行う。
まず、第1ステップとして、フラッシュチップCP0内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP8,LP9をペアにして連続して書き込む。
次に、第2ステップとして、フラッシュチップCP1内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP10,LP11をペアにして連続して書き込む。
次に、第3ステップとして、フラッシュチップCP2内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP12,LP13をペアにして連続して書き込む。
次に、第4ステップとして、フラッシュチップCP3内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP14,LP15をペアにして連続して書き込む。
この後、フラッシュチップCP0,CP1,CP2,CP3内のオールドブロックBK−AからニューブロックBK−Bへ、ロジカルページLP16,LP17〜LP510,LP511及びロジカルページLP0,LP1〜LP6,LP7を、それぞれ移動させ、オールドブロックBK−Aの撤収を図る。
まず、第5ステップとして、フラッシュチップCP0内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP0内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP16,LP17をペアにして連続して書き込む。
次に、第6ステップとして、フラッシュチップCP1内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP1内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP18,LP19をペアにして連続して書き込む。
次に、第7ステップとして、フラッシュチップCP2内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP2内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP20,LP21をペアにして連続して書き込む。
次に、第8ステップとして、フラッシュチップCP3内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP3内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP22,LP23をペアにして連続して書き込む。
以下、第5乃至第8ステップと同様にして、ロジカルページLP24,LP25…LP510,LP511及びロジカルページLP0,LP1〜LP6,LP7を順次書き込む。
最後に、第9ステップとして、フラッシュチップCP0内のテンポラリメモリTに書き込まれたロジカルページLP8を、フラッシュチップCP0内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーし、フラッシュチップCP1内のテンポラリメモリTに書き込まれたロジカルページLP10を、フラッシュチップCP1内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーする。
また、フラッシュチップCP2内のテンポラリメモリTに書き込まれたロジカルページLP12を、フラッシュチップCP2内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーし、フラッシュチップCP3内のテンポラリメモリTに書き込まれたロジカルページLP14を、フラッシュチップCP3内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーする。
ロジカルデータLP0〜LP511が書き込まれたフラッシュチップCP0,CP1,CP2,CP3内のブロックBK−Bは、使用中ブロック(オールドブロック)になる。
以上のような書き込み手順によれば、ページシフト動作によるロジカルページの上書きを、いずれのロジカルページから繰り返し行っても、同一のフラッシュチップ内でのロジカルページの順番を崩すことがない。言い換えれば、ロジカルページの順番は、ブロックが変わる度に、同一のフラッシュチップ内でシフトするだけである。
従って、オールドブロックの撤収を行うとき、ロジカルページのデータは、同一のフラッシュチップ内での移動のみとなるため、フラッシュチップに搭載されたブロック間でのデータの高速移動機能を利用し、撤収時間の短縮による高速書き込みを実現できる。
・ フラッシュチップCP2内の偶数ロジカルページ(LP)からの上書き
この上書きの書き込み手順は、図20に示すようになる。
上書きは、ロジカルページLP12〜LP19に対して行うものとする。
上書きでも、テンポラリメモリTを使用し、フラッシュチップCP0,CP1,CP3,CP4内のニューブロックBK−Bに対するロジカルページの書き込みを、2個のロジカルページをペアとして、以下の順番で行う。
まず、第1ステップとして、フラッシュチップCP2内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP12,LP13をペアにして連続して書き込む。
次に、第2ステップとして、フラッシュチップCP3内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP14,LP15をペアにして連続して書き込む。
次に、第3ステップとして、フラッシュチップCP0内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP16,LP17をペアにして連続して書き込む。
次に、第4ステップとして、フラッシュチップCP1内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP18,LP19をペアにして連続して書き込む。
この後、フラッシュチップCP0,CP1,CP2,CP3内のオールドブロックBK−AからニューブロックBK−Bへ、ロジカルページLP20,LP21〜LP510,LP511及びロジカルページLP0,LP1〜LP10,LP11を、それぞれ移動させ、オールドブロックBK−Aの撤収を図る。
まず、第5ステップとして、フラッシュチップCP2内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP2内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP20,LP21をペアにして連続して書き込む。
次に、第6ステップとして、フラッシュチップCP3内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP3内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP22,LP23をペアにして連続して書き込む。
次に、第7ステップとして、フラッシュチップCP0内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP0内のブロックBK−A内のフィジカルページPP5(下位ページL)及びフィジカルページPP6(上位ページU)の2個のロジカルページLP24,LP25をペアにして連続して書き込む。
次に、第8ステップとして、フラッシュチップCP1内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP1内のブロックBK−A内のフィジカルページPP5(下位ページL)及びフィジカルページPP6(上位ページU)の2個のロジカルページLP26,LP27をペアにして連続して書き込む。
以下、第5乃至第8ステップと同様にして、ロジカルページLP28,LP29…LPLP510,LP511及びロジカルページLP0,LP1〜LP10、LP11を順次書き込む。
最後に、第9ステップとして、フラッシュチップCP2内のテンポラリメモリTに書き込まれたロジカルページLP12を、フラッシュチップCP2内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーし、フラッシュチップCP3内のテンポラリメモリTに書き込まれたロジカルページLP14を、フラッシュチップCP3内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーする。
また、フラッシュチップCP0内のテンポラリメモリTに書き込まれたロジカルページLP16を、フラッシュチップCP0内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーし、フラッシュチップCP1内のテンポラリメモリTに書き込まれたロジカルページLP18を、フラッシュチップCP1内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーする。
ロジカルデータLP0〜LP511が書き込まれたフラッシュチップCP0,CP1,CP2,CP3内のブロックBK−Bは、使用中ブロック(オールドブロック)になる。
以上のような書き込み手順によれば、ページシフト動作によるロジカルページの上書きを、いずれのロジカルページから繰り返し行っても、同一のフラッシュチップ内でのロジカルページの順番を崩すことがない。言い換えれば、ロジカルページの順番は、ブロックが変わる度に、同一のフラッシュチップ内でシフトするだけである。
従って、オールドブロックの撤収を行うとき、ロジカルページのデータは、同一のフラッシュチップ内での移動のみとなるため、フラッシュチップに搭載されたブロック間でのデータの高速移動機能を利用し、撤収時間の短縮による高速書き込みを実現できる。
・ フラッシュチップCP0内の奇数ロジカルページ(LP)からの上書き
この上書きの書き込み手順は、図21に示すようになる。
上書きは、ロジカルページLP9〜LP15に対して行うものとする。
この上書きでは、フラッシュチップCP1,CP2,CP3内のテンポラリメモリTを使用し、フラッシュチップCP0,CP1,CP2,CP3内のニューブロックBK−Bに対するロジカルページの書き込みを、2個のロジカルページをペアとして、以下の順番で行う。
まず、第1ステップとして、フラッシュチップCP0内のブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしてのロジカルページLP9を書き込む。
次に、第2ステップとして、フラッシュチップCP1内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP10,LP11をペアにして連続して書き込む。
次に、第3ステップとして、フラッシュチップCP2内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP12,LP13をペアにして連続して書き込む。
次に、第4ステップとして、フラッシュチップCP3内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP14,LP15をペアにして連続して書き込む。
この後、フラッシュチップCP0,CP1,CP2,CP3内のオールドブロックBK−AからニューブロックBK−Bへ、ロジカルページLP16,LP17〜LP510,LP511及びロジカルページLP0,LP1〜LP6,LP7を、それぞれ移動させ、オールドブロックBK−Aの撤収を図る。
まず、第5ステップとして、フラッシュチップCP0内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP0内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP16,LP17をペアにして連続して書き込む。
次に、第6ステップとして、フラッシュチップCP1内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP1内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP18,LP19をペアにして連続して書き込む。
次に、第7ステップとして、フラッシュチップCP2内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP2内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP20,LP21をペアにして連続して書き込む。
次に、第8ステップとして、フラッシュチップCP3内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP3内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP22,LP23をペアにして連続して書き込む。
以下、第5乃至第8ステップと同様にして、ロジカルページLP24,LP25…LP510,LP511及びロジカルページLP0,LP1〜LP6,LP7,LP8を順次書き込む。
最後に、第9ステップとして、フラッシュチップCP1内のテンポラリメモリTに書き込まれたロジカルページLP10を、フラッシュチップCP1内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーする。
また、フラッシュチップCP2内のテンポラリメモリTに書き込まれたロジカルページLP12を、フラッシュチップCP2内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーし、フラッシュチップCP3内のテンポラリメモリTに書き込まれたロジカルページLP14を、フラッシュチップCP3内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーする。
ロジカルデータLP0〜LP511が書き込まれたフラッシュチップCP0,CP1,CP2,CP3内のブロックBK−Bは、使用中ブロック(オールドブロック)になる。
以上のような書き込み手順によれば、ページシフト動作によるロジカルページの上書きを、いずれのロジカルページから繰り返し行っても、同一のフラッシュチップ内でのロジカルページの順番を崩すことがない。言い換えれば、ロジカルページの順番は、ブロックが変わる度に、同一のフラッシュチップ内でシフトするだけである。
従って、オールドブロックの撤収を行うとき、ロジカルページのデータは、同一のフラッシュチップ内での移動のみとなるため、フラッシュチップに搭載されたブロック間でのデータの高速移動機能を利用し、撤収時間の短縮による高速書き込みを実現できる。
・ フラッシュチップCP2内の奇数ロジカルページ(LP)からの上書き
この上書きの書き込み手順は、図22に示すようになる。
上書きは、ロジカルページLP13〜LP19に対して行うものとする。
この上書きでは、フラッシュチップCP0,CP1,CP3内のテンポラリメモリTを使用し、フラッシュチップCP0,CP1,CP2,CP3内のニューブロックBK−Bに対するロジカルページの書き込みを、2個のロジカルページをペアとして、以下の順番で行う。
まず、第1ステップとして、フラッシュチップCP2内のブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしてのロジカルページLP13を書き込む。
次に、第2ステップとして、フラッシュチップCP3内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP14,LP15をペアにして連続して書き込む。
次に、第3ステップとして、フラッシュチップCP0内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP16,LP17をペアにして連続して書き込む。
次に、第4ステップとして、フラッシュチップCP1内のテンポラリメモリT及びブロックBK−B内のフィジカルページPP0(下位ページL)に対して、上書きデータとしての2個のロジカルページLP18,LP19をペアにして連続して書き込む。
この後、フラッシュチップCP0,CP1,CP2,CP3内のオールドブロックBK−AからニューブロックBK−Bへ、ロジカルページLP20,LP21〜LP510,LP511及びロジカルページLP0,LP1〜LP10,LP11,LP12を、それぞれ移動させ、オールドブロックBK−Aの撤収を図る。
まず、第5ステップとして、フラッシュチップCP2内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP2内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP20,LP21をペアにして連続して書き込む。
次に、第6ステップとして、フラッシュチップCP3内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP3内のブロックBK−A内のフィジカルページPP3(下位ページL)及びフィジカルページPP4(上位ページU)の2個のロジカルページLP22,LP23をペアにして連続して書き込む。
次に、第7ステップとして、フラッシュチップCP0内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP0内のブロックBK−A内のフィジカルページPP5(下位ページL)及びフィジカルページPP6(上位ページU)の2個のロジカルページLP24,LP25をペアにして連続して書き込む。
次に、第8ステップとして、フラッシュチップCP1内のブロックBK−B内のフィジカルページPP1(下位ページL)及びフィジカルページPP2(上位ページU)に対して、フラッシュチップCP1内のブロックBK−A内のフィジカルページPP5(下位ページL)及びフィジカルページPP6(上位ページU)の2個のロジカルページLP26,LP27をペアにして連続して書き込む。
以下、第5乃至第8ステップと同様にして、ロジカルページLP28,LP29…LP510,LP511及びロジカルページLP0,LP1〜LP10,LP11,LP12を順次書き込む。
最後に、第9ステップとして、フラッシュチップCP3内のテンポラリメモリTに書き込まれたロジカルページLP14を、フラッシュチップCP3内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーする。
また、フラッシュチップCP0内のテンポラリメモリTに書き込まれたロジカルページLP16を、フラッシュチップCP0内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーし、フラッシュチップCP1内のテンポラリメモリTに書き込まれたロジカルページLP18を、フラッシュチップCP1内のブロックBK−Bの最上位のフィジカルページPP127(上位ページU)にコピーする。
ロジカルデータLP0〜LP511が書き込まれたフラッシュチップCP0,CP1,CP2,CP3内のブロックBK−Bは、使用中ブロック(オールドブロック)になる。
以上のような書き込み手順によれば、ページシフト動作によるロジカルページの上書きを、いずれのロジカルページから繰り返し行っても、同一のフラッシュチップ内でのロジカルページの順番を崩すことがない。言い換えれば、ロジカルページの順番は、ブロックが変わる度に、同一のフラッシュチップ内でシフトするだけである。
従って、オールドブロックの撤収を行うとき、ロジカルページのデータは、同一のフラッシュチップ内での移動のみとなるため、フラッシュチップに搭載されたチップ内でのデータの高速移動機能を利用し、撤収時間の短縮による高速書き込みを実現できる。
8. 適用例
本発明の適用例としては、例えば、NANDフラッシュメモリがある。
以下では、本発明をNANDフラッシュメモリに適用したときのメモリシステムの例について説明する。
この適用例においては、NANDフラッシュメモリとは、パッケージングされた1個の製品をいうものとする。
(1) 1個のNANDフラッシュメモリ内でのインターリーブ動作
図23は、NANDフラッシュメモリの例を示している。
NANDフラッシュメモリ21は、1個のメモリコントローラ11と、8個のNANDフラッシュチップCP0〜CP7とを有する。
本発明に係わるインターリーブ動作は、メモリコントローラ11により制御される。
メモリコントローラ(コントローラチップ)11は、パッケージ基板(package board)10の一面上に搭載される。8個のNANDフラッシュチップCP0〜CP7は、メモリコントローラ11上に搭載される。
メモリコントローラ11と8個のNANDフラッシュチップCP0〜CP7とは、例えば、ボンディングワイヤ、TSV(through-silicon-via)などにより、互いに電気的に接続され、樹脂12により覆われる。
外部端子としてのバンプ13は、パッケージ基板10の他面上に搭載される。
図24は、メモリコントローラの例を示している。
メモリコントローラ11は、CPU(Central Processing Unit)31、HOSTインターフェイス(HOST-I/F)32、RAM(Random Access Memory)33、ECCインターフェイス(ECC-I/F)34、及び、NANDインターフェイス35を有する。
これら要素は、バス36を介して互いに接続される。
HOSTインターフェイス32は、例えば、USB(Universal Serial Bus)インターフェイスからなり、データ転送規格であるUSB規格に基づいて、ホスト14に対するデータの送受信を制御する。
CPU31は、例えば、ファームウェアを用いてメモリシステムを制御する。
また、CPU31は、ホスト14からの書き込み/読み出し/消去コマンドを受け、8個のNANDフラッシュチップCP0〜CP7に対する書き込み/読み出し/消去動作を制御する。
RAM33は、CPU12の作業エリアとして使用され、データや変換テーブルを一時的に記憶する。
ECCインターフェイス34は、例えば、バス36からのデータに対してエラー訂正処理を行う。NANDインターフェイス35は、8個のNANDフラッシュチップCP0〜CP7に対するデータの送受信を制御する。
(2) 複数個のNANDフラッシュメモリ間でのインターリーブ動作
図25は、メモリコントローラの例を示している。
このシステムでは、チャネル間インターリーブが行われる。1個のチャネルは、1個のNANDフラッシュメモリに対応する。本発明に係わるインターリーブ動作は、チャネル間で行われ、メモリコントローラ11により制御される。
メモリコントローラ11は、CPU31、HOSTインターフェイス(HOST-I/F)32、RAM33、ECCインターフェイス(ECC-I/F)34、及び、NANDインターフェイス35を有する。
これら要素は、バス36を介して互いに接続される。
HOSTインターフェイス32は、例えば、USBインターフェイスからなり、データ転送規格であるUSB規格に基づいて、ホスト14に対するデータの送受信を制御する。
CPU31は、例えば、ファームウェアを用いてメモリシステムを制御する。
また、CPU31は、ホスト14からの書き込み/読み出し/消去コマンドを受け、複数個(本例では、2個)のNANDフラッシュメモリ21−1,21−2に対する書き込み/読み出し/消去動作を制御する。
NANDフラッシュメモリ21−1,21−2は、それぞれ、例えば、図23に示す1個の製品から構成される。
RAM33は、CPU12の作業エリアとして使用され、データや変換テーブルを一時的に記憶する。
ECCインターフェイス34は、例えば、バス36からのデータに対してエラー訂正処理を行う。NANDインターフェイス35は、8個のNANDフラッシュチップCP0〜CP7に対するデータの送受信を制御する。
9. むすび
本発明によれば、フラッシュメモリに対する高速書き込みをインターリーブ動作により実現することができる。
本発明の例は、上述の実施例に限定されるものではなく、その要旨を逸脱しない範囲で、各構成要素を変形して具体化できる。また、上述の実施例に開示されている複数の構成要素の適宜な組み合せにより種々の発明を構成できる。例えば、上述の実施例に開示される全構成要素から幾つかの構成要素を削除してもよいし、異なる実施例の構成要素を適宜組み合わせてもよい。