(57)【要約】【課題】書き換え回数の平準化とディスターブ対策のために行なう物理ブロックに対する論理アドレスの割り当て変更に伴う処理時間を短縮する。【解決手段】不揮発性メモリは、不揮発性メモリセルの集合であるブロック領域（ＢＬＫ）を初期化単位とする。制御回路は、ブロック領域の集合であるスーパーブロック（ＳＢ）単位で、一つの空きブロック（ＢＬＫ−Ｖ）の割り当てと残りのブロック領域に対する論理アドレスの割り当てを行なう。その割り当てを示す最新のアドレス変換テーブルは当該スーパーブロック内で最後に書込みが行なわれたブロック領域は保持し、夫々のスーパーブロックが保持するアドレス変換テーブルの所在は管理用のブロック領域（ＢＬＫ−Ｃ）が保持する。アクセス要求に応ずる物理アドレスは当該アクセス要求に係る論理アドレスが割り当てられたスーパーブロック上のアドレス変換テーブルを用いて取得する。【選択図】図１
2007164318.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと制御回路とを有する記憶装置であって、
前記不揮発性メモリは、記憶情報の書き換えが可能にされる複数個の不揮発性メモリセルの集合であるブロック領域単位に記憶情報を初期化する消去処理が可能にされ、消去処理されたブロック領域に情報を書込む書込み処理が可能にされ、
前記制御回路は、データ用の複数のブロック領域の集合であるスーパーブロック単位で一つの空きブロックの割り当てと残りのブロック領域に対する論理アドレスの割り当てを行ない、その割り当てを示す最新のアドレス変換テーブルを当該スーパーブロック内で最後に書込み処理が行なわれた一つのブロック領域に保持させ、夫々のスーパーブロックにおける前記アドレス変換テーブルを有するブロック領域の物理アドレスを示すアドレステーブルを管理用のブロック領域に格納させ、
前記制御回路は、外部からのアクセス要求に応答するとき、当該アクセス要求に係る論理アドレスに対応する物理アドレスを、当該アクセス要求に係る論理アドレスが割り当てられているスーパーブロックに対応するアドレス変換テーブルから取得し、取得した物理アドレスを用いてブロック領域のアクセス制御が可能にされる記憶装置。
【請求項２】
前記ブロック領域は複数のページ領域の集合であり、前記ページ領域は前記書込み処理の処理単位とされる請求項１記載の記憶装置。
【請求項３】
前記制御回路は、外部からのアクセス要求に応答するとき、前記アドレステーブルを取得していないときは不揮発性メモリからアドレステーブルを読み込み、当該アクセス要求に係る論理アドレスが割り当てられているスーパーブロックに対応するアドレス変換テーブルを取得していないときは当該アドレス変換テーブルの物理アドレスを前記取得したアドレステーブルから検索し、検索した物理アドレスに格納されたアドレス変換テーブルを前記不揮発性メモリから取得し、取得したアドレス変換テーブルから当該アクセス要求に係る論理アドレスに対応する物理アドレスを取得する請求項１記載の記憶装置。
【請求項４】
前記制御回路は、外部からのアクセス要求に応答して書換え処理を行なうとき、現在の空きブロックの物理アドレスに前記アクセス要求に係る論理アドレスを新たに割り当てると共に、前記アドレス変換テーブルから取得した物理アドレスのブロック領域を新たな空きブロックに割り当て、新たに論理アドレスが割り当てられる前記ブロック領域に対するデータの書換えを制御し、その書換え制御によって変更されたアドレス変換テーブルの所在を前記アドレステーブルに反映させる請求項１記載の記憶装置。
【請求項５】
前記制御回路は、前記アドレステーブルを格納するのに複数個の管理用のブロック領域を用い、前記アドレステーブルの格納には前記管理用のブロック領域を順次切換えて用いると共に、アドレステーブルの書込み毎に、書込み対象とされるブロック領域上におけるアドレステーブルの複数の格納位置を順次変更する制御を行い、更に、変更されたアドレステーブルの格納位置を示すフラグ情報を書込み対象のブロック領域上において更新し、管理用のブロック領域に新たにアドレステーブルを書込むための空き領域が無くなったとき当該管理用のブロック領域を消去する請求項４記載の記憶装置。
【請求項６】
前記アドレステーブルはスーパーブロック内におけるブロック領域単位の入れ換え対象物理アドレス情報を格納する領域を有し、
前記制御回路は、入れ換え処理の実行タイミングを検出すると、前記アドレステーブルからブロック領域単位の入れ換え対象物理アドレスの情報を取得し、現在の空きブロックの物理アドレスに前記取得した入れ換え対象物理アドレスの論理アドレスを新たに割り当てると共に、前記取得した入れ換え対象物理アドレスのブロック領域を新たな空きブロックに割り当て、前記新たな空きブロックと前記新たに論理アドレスを割り当てたブロック領域との間のデータの入れ換えとデータの更新を制御し、当該データの更新制御によって変更されたアドレス変換テーブルの所在を前記アドレステーブルに反映させると共に、アドレステーブルが保有するスーパーブロック内におけるブロック領域単位の入れ換え対象物理アドレスの情報を更新する請求項４記載の記憶装置。
【請求項７】
前記制御回路は、前記アドレステーブルを格納するのに複数個の管理用のブロック領域を用い、前記アドレステーブルの格納には前記管理用のブロック領域を順次切換えて用いると共に、アドレステーブルの書込み毎に、書込み対象とされるブロック領域上におけるアドレステーブルの複数の格納位置を順次変更する制御を行い、更に、変更されたアドレステーブルの格納位置を示すフラグ情報を書込み対象のブロック領域上において更新し、管理用のブロック領域に新たにアドレステーブルを書込むための空き領域が無くなったとき当該管理用のブロック領域を消去し、
前記制御回路は、書込み処理の後に管理用のブロック領域が消去されたことを、前記入れ換え処理の実行タイミングとして検出する請求項６記載の記憶装置。
【請求項８】
前記制御回路は、入れ換え処理の直前に行なわれた書換え処理対象とされたスーパーブロックに関する前記アドレステーブル上の入れ換え対象物理アドレス情報が示す物理アドレスを入れ換え対象とする請求項７記載の記憶装置。
【請求項９】
前記制御回路は、入れ換え処理の直前に行なわれた書換え処理対象とされたスーパーブロックの隣のスーパーブロックに関する前記アドレステーブル上の入れ換え対象物理アドレス情報が示す物理アドレスを入れ換え対象とする請求項７記載の記憶装置。
【請求項１０】
前記隣のスーパーブロックは、書換え処理対象とされたスーパーブロック内の不揮発性メモリセルとワード線を共有する請求項９記載の記憶装置。
【請求項１１】
前記制御回路は、取得した入れ換え対象物理アドレス情報に応ずる物理アドレスが空きブロックであるときは、当該スーパーブロックに関する入れ換え対象物理アドレス情報を更新して、入れ換え処理を終了する請求項６記載の記憶装置。
【請求項１２】
前記アドレステーブルは複数のスーパーブロック内におけるブロック領域単位の入れ換え対象物理アドレス情報を格納するアドレス領域と前記複数のスーパーブロック内におけるブロック領域の書換え処理回数を格納する回数領域を有し、
前記制御回路は書換え処理において書換え処理対象とされたスーパーブロックに関する前記回数領域の値をインクリメントし、
前記制御回路は、入れ換え処理の実行タイミングを検出すると、前記アドレステーブルからブロック領域単位の入れ換え対象物理アドレスの情報を取得し、現在の空きブロックの物理アドレスに前記取得した入れ換え対象物理アドレスの論理アドレスを新たに割り当てると共に、前記取得した入れ換え対象物理アドレスのブロック領域を新たな空きブロックに割り当て、前記新たな空きブロックと前記新たに論理アドレスを割り当てたブロック領域との間のデータの入れ換えとデータの更新を制御し、当該データの更新によって変更されたアドレス変換テーブルの所在を前記アドレステーブルに反映させると共に、アドレステーブルが保有する複数のスーパーブロック内におけるブロック領域単位の入れ換え対象物理アドレスの情報を更新する請求項４記載の記憶装置。
【請求項１３】
前記制御回路は、書換え処理において更新された前記回数領域の値が所定値に到達したことを、入れ換え処理の実行タイミングとして検出する請求項１２記載の記憶装置。
【請求項１４】
前記制御回路は、入れ換え処理の直前に行なわれた書換え処理対象とされたスーパーブロックに関する前記アドレステーブル上の入れ換え対象物理アドレス情報が示す物理アドレスを入れ換え対象とする請求項１３記載の記憶装置。
【請求項１５】
前記制御回路は、取得した入れ換え対象物理アドレス情報に応ずる物理アドレスが空きブロックであるときは、当該スーパーブロックに関する入れ換え対象物理アドレス情報を更新して、入れ換え処理を終了する請求項１２記載の記憶装置。
【請求項１６】
前記制御回路は、前記アドレステーブルを格納するのに複数個の管理用のブロック領域を用い、前記アドレステーブルの格納には前記管理用のブロック領域を順次切換えて用いると共に、アドレステーブルの書込み毎に、書込み対象とされるブロック領域上におけるアドレステーブルの複数の格納位置を順次変更する制御を行い、更に、変更されたアドレステーブルの格納位置を示すフラグ情報を書込み対象のブロック領域上において更新し、管理用のブロック領域に新たにアドレステーブルを書込むための空き領域が無くなったとき当該管理用のブロック領域を消去する請求項１２記載の記憶装置。
【請求項１７】
不揮発性メモリと制御回路とを有する記憶装置であって、
前記不揮発性メモリは、記憶情報の書き換えが可能にされる複数個の不揮発性メモリセルの集合であるブロック領域単位に記憶情報を初期化する消去処理が可能にされ、消去処理されたブロック領域に情報を書込む書込み処理が可能にされ、
前記制御回路は、データ用の複数のブロック領域の集合であるスーパーブロック単位で一つの空きブロックの割り当てと残りのブロック領域に対する論理アドレスの割り当てを行ない、その割り当てを示す最新のアドレス変換テーブルを当該スーパーブロック内で最後に書込み処理が行なわれた一つのブロック領域に保持させ、夫々のスーパーブロックにおける前記アドレス変換テーブルを有するブロック領域の物理アドレスを示すアドレステーブルを管理用のブロック領域に格納させ、
前記制御回路は、外部からのアクセス要求に応答するとき、前記アドレステーブルを取得していないときは不揮発性メモリからアドレステーブルを読み込み、当該アクセス要求に係る論理アドレスが割り当てられているスーパーブロックに対応するアドレス変換テーブルを取得していないときは当該アドレス変換テーブルの物理アドレスを前記取得したアドレステーブルから検索し、検索した物理アドレスに格納されたアドレス変換テーブルを前記不揮発性メモリから取得し、取得したアドレス変換テーブルから当該アクセス要求に係る論理アドレスに対応する物理アドレスを取得し、取得した物理アドレスを用いてブロック領域のアクセス制御が可能にされる記憶装置。
【請求項１８】
不揮発性メモリと制御回路とを有する記憶装置であって、
前記不揮発性メモリは、記憶情報の書き換えが可能にされる複数個の不揮発性メモリセルの集合であるページ領域単位に記憶情報を書込む書込み処理が可能にされ、複数のページ領域の集合であるブロック領域単位に記憶情報を初期化する消去処理が可能にされ、
前記制御回路は、データ用の複数のブロック領域の集合であるスーパーブロック単位で一つの空きブロックの割り当てと残りのブロック領域に対する論理アドレスの割り当てを行ない、その割り当てを示す最新のアドレス変換テーブルを当該スーパーブロック内で最後に書込み処理が行なわれた一つのブロック領域に保持させ、夫々のスーパーブロックにおける前記アドレス変換テーブルを有するブロック領域の物理アドレスを示すアドレステーブルを管理用のブロック領域に格納させ、
前記制御回路は、外部からのアクセス要求に応答するとき、前記アドレステーブルを取得していないときは不揮発性メモリからアドレステーブルを読み込み、当該アクセス要求に係る論理アドレスが割り当てられているスーパーブロックに対応するアドレス変換テーブルを取得していないときは当該アドレス変換テーブルの物理アドレスを前記取得したアドレステーブルから検索し、検索した物理アドレスに格納されたアドレス変換テーブルを前記不揮発性メモリから取得し、取得したアドレス変換テーブルから当該アクセス要求に係る論理アドレスに対応する物理アドレスを取得し、取得した物理アドレスを用いてブロック領域のアクセス制御が可能にされる記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性のファイルメモリ等に利用される不揮発性の記憶装置に関し、例えば、フラッシュメモリカード若しくはハードディスク互換のフラッシュディスクなどに適用して有効な技術に関する。
【背景技術】
【０００２】
フラッシュメモリに代表される電気的に書換え可能な不揮発性メモリの書き換えではメモリセルに電気的なストレスがかり、書き換え回数が増すに従ってメモリセルの特性が劣化する。ファイルメモリにおける書換え若しくは消去単とされる一部の物理ブロックに対して書き換えが集中すると、当該一部の物理ブロックだけ特性劣化が著しくなる。そこで、論理アドレスと物理アドレスの対応を適宜変更することにより、そのような特性劣化が局所的な物理アドレスに集中することを緩和することができる。一方、書換えや消去対象にされない物理ブロックであっても、書き換え対象とされる物理ブロックのメモリセルトランジスタとワード線が共通であったり、ビット線が共通であったりすると、所謂ワード線ディスターブやビット線ディスターブによる影響を受け、メモリセルの閾値電圧が累積的に変化して、その記憶情報が不所望に変化（データ化け）する虞がある。上記ディスターブによるデータ化けに対処するには、特許文献１，２に記載のように、相対的に書き換え回数の少ない物理ブロックと別の物理ブロックとの間で論理アドレスの割り当てを入れ換えればよい。
【０００３】
【特許文献１】特開２００４−３１０６５０号公報
【特許文献２】米国特許第５５６８４３９号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明者は、物理ブロックの書き換え回数(消去回数)をカウントし、書き換え回数の多いブロックと少ないブロックを入れ替えることで、書き換え回数の平準化と、ディスターブ対策を行なうことについて検討した。これによれば、物理ブロックの書き換え回数が一定値になったことで、書き換え回数の少ないブロックと入れ替える場合、書き換え回数の少ないブロックを検索するのに比較的長い時間を要し、書き換え時間が大幅に延び、アクセス性能を低下させる。例えば、書き換え回数の一番少ないブロックを検索するには、全ブロックに格納されている書き換え回数を読み出し、最も少ないブロックを見つける必要がある。全ブロックの読み出しには、膨大な時間が必要であり、性能低下は免れない。また、書き換え回数を物理ブロック単位に管理するには、物理ブロック毎に書き換え回数を保存する領域が必要である。そうすると、物理ブロックに対してデータ部の書き換えとは別に、書き換え回数の更新も必要になる。物理ブロックと同じ消去単に含まれる管理情報に消去回数を保存した場合、物理ブロックの書き換え前に管理情報を読み出し、書き換え回数を退避する。その後、書き換え回数を更新した管理情報をフラッシュメモリに転送する処理が必要になるため、この点においてもアクセス性能低下を生ずる。
【０００５】
本発明の目的は、書き換え回数の平準化とディスターブ対策のために行なう物理ブロックに対する論理アドレスの割り当て変更に伴う処理時間を短縮可能にすることにある。
【０００６】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００８】
《スーパーブロック単位のアドレス管理形態》本発明に係る記憶装置（１）は、不揮発性メモリ（２）と制御回路（３）とを有する。前記不揮発性メモリは、記憶情報の書き換えが可能にされる複数個の不揮発性メモリセルの集合であるブロック領域（ＢＬＫ）単位に記憶情報を初期化する消去処理が可能にされ、消去処理されたブロック領域に情報を書込む書込み処理が可能にされる。例えば複数のページ領域（ＰＡＧ）の集合を前記ブロック領域（ＢＬＫ）とすると、前記不揮発性メモリは、記憶情報の書き換えが可能にされる複数個の不揮発性メモリセルの集合であるページ領域単位に記憶情報を書込む書込み処理が可能にされ、複数のページ領域の集合であるブロック領域単位に記憶情報を初期化する消去処理が可能にされる。前記制御回路は、データ用の複数のブロック領域の集合であるスーパーブロック（ＳＢ（ＳＢ−０〜ＳＢ−１５））単位で一つの空きブロック（ＢＬＫ−Ｖ）の割り当てと残りのブロック領域に対する論理アドレスの割り当てを行ない、その割り当てを示す最新のアドレス変換テーブル（ＳＢＴＢＬ）を当該スーパーブロック内で最後に書込み処理が行なわれた一つのブロック領域に保持させ、夫々のスーパーブロックにおける前記アドレス変換テーブルを有するブロック領域の物理アドレスを示すアドレステーブル（ＣＰＴＢＬ）を管理用のブロック領域（ＢＬＫ−Ｃ）に格納させる。前記制御回路は、外部からのアクセス要求に応答するとき、当該アクセス要求に係る論理アドレスに対応する物理アドレスを、当該アクセス要求に係る論理アドレスが割り当てられているスーパーブロックに対応するアドレス変換テーブルから取得し、取得した物理アドレスを用いてブロック領域のアクセス制御を行う。
【０００９】
ブロック領域に対する上記アドレス管理形態によれば、スーパーブロック単位で論理アドレス範囲が割り当てられ、スーパーブロック内に一つの空きブロックを確保し、スーパーブロック内の残りのブロック領域に対する論理アドレスの割り当てが可変にされる。論理アドレスの割り当てが可変にされる範囲は対応するするパーブロック内であるから、ほとんどの場合、書き換え回数の平準化とディスターブ対策は各々のスーパーブロック内で考えればよい。書換え回数の多寡はスーパーブロック内で考慮すればよく、不揮発性メモリの全範囲で個々のブロック領域に対する書換え回数を把握しなくてもよい。ブロック領域に対する論理アドレスの割り当てを示すアドレス変換テーブルもスーパーブロック単位で形成すれば良い。各々のスーパーブロックにおいてアドレス変換テーブルは最後に書込み処理が行なわれたブロック領域に保持させることにより、ブロック領域の書換えと一緒にアドレス変換テーブルの書換えも可能になる。各々のスーパーブロックにおいて有効な管理テーブルが格納されている物理アドレスを示すアドレステーブルは、ブロック領域に対する書換え毎に変更になるが、管理用のブロック領域で一括管理することができる。これらにより、書き換え回数の平準化とディスターブ対策のために行なう物理ブロックに対する論理アドレスの割り当て変更に伴う処理時間の短縮が可能になる。
【００１０】
本発明の一つの具体的な形態として前記制御回路は、外部からのアクセス要求に応答するとき、前記アドレステーブルを取得していないときは不揮発性メモリからアドレステーブルを読み込む。当該アクセス要求に係る論理アドレスが割り当てられているスーパーブロックに対応するアドレス変換テーブルを取得していないとき前記制御回路は当該アドレス変換テーブルの物理アドレスを前記取得したアドレステーブルから検索し、検索した物理アドレスに格納されたアドレス変換テーブルを前記不揮発性メモリから取得する。前記制御回路は、取得したアドレス変換テーブルから当該アクセス要求に係る論理アドレスに対応する物理アドレスを取得し、取得した物理アドレスを用いてブロック領域のアクセス制御が可能にされる。
【００１１】
《書込みシーケンス》前記ブロック領域に対する書込みシーケンスの点における本発明の具体的な形態として、前記制御回路は、外部からのアクセス要求に応答して書換え処理を行なうとき、現在の空きブロックの物理アドレスに前記アクセス要求に係る論理アドレスを新たに割り当てると共に、前記アドレス変換テーブルから取得した物理アドレスのブロック領域を新たな空きブロックに割り当て、新たに論理アドレスが割り当てられる前記ブロック領域に対するデータの書換えを制御し、その書換え制御によって変更されたアドレス変換テーブルの所在を前記アドレステーブルに反映させる。
【００１２】
《アドレステーブルの逐次位置変更書込み》前記アドレステーブルの管理という点における本発明の更に具体的な形態として、前記制御回路は、前記アドレステーブルを格納するのに複数個の管理用のブロック領域（ＢＬＫ−Ｃ）を用い、前記アドレステーブルの格納には前記管理用のブロック領域を順次切換えて用いると共に、アドレステーブルの書込み毎に、書込み対象とされるブロック領域上におけるアドレステーブルの複数の格納位置を順次変更する制御を行い、更に、変更されたアドレステーブル（ＣＰＴＢＬ）の格納位置を示すフラグ情報のテーブル（ＦＬＧＴＢＬ）を書込み対象のブロック領域上において更新し、管理用のブロック領域に新たにアドレステーブルを書込むための空き領域が無くなったとき当該管理用のブロック領域を消去する。アドレステーブルの書込み位置を逐次変更することにより、その書込み位置をもって、書換え回数の指標となる。
【００１３】
《入れ換え処理の第１形態》物理ブロック間で論理アドレスを入れ換える入れ換え処理という点における本発明の具体的な形態として、前記アドレステーブルはスーパーブロック内におけるブロック領域単位の入れ換え対象物理アドレス情報を格納する領域（ＲＥＰＡ）を有する。前記制御回路は、入れ換え処理の実行タイミングを検出すると、前記アドレステーブルからブロック領域単位の入れ換え対象物理アドレスの情報を取得し、現在の空きブロックの物理アドレスに前記取得した入れ換え対象物理アドレスの論理アドレスを新たに割り当てると共に、前記取得した入れ換え対象物理アドレスのブロック領域を新たな空きブロックに割り当て、前記新たな空きブロックと前記新たに論理アドレスを割り当てたブロック領域との間のデータの入れ換えとデータの更新を制御し、当該データの更新制御によって変更されたアドレス変換テーブルの所在を前記アドレステーブルに反映させると共に、アドレステーブルが保有するスーパーブロック内におけるブロック領域単位の入れ換え対象物理アドレスの情報を更新する。入れ換え処理対象を特定するのに、書換え回数の少ないブロック領域を検索したりする処理を一切要しない。ブロック領域単位の入れ換え対象物理アドレスの情報を更新する規則は、順次変更であってもよい。
【００１４】
前記入れ換え処理の更に具体的な形態として、アドレステーブルの書込み位置を逐次変更することにより、その書込み位置をもって、書換え回数の指標となる、という点に着目する。即ち、前記制御回路は、前記アドレステーブルを格納するのに複数個の管理用のブロック領域（ＢＬＫ−Ｃ）を用い、前記アドレステーブルの格納には前記管理用のブロック領域を順次切換えて用いると共に、アドレステーブルの書込み毎に、書込み対象とされるブロック領域上におけるアドレステーブルの複数の格納位置を順次変更する制御を行い、更に、変更されたアドレステーブルの格納位置を示すフラグ情報を書込み対象のブロック領域上において更新し、管理用のブロック領域に新たにアドレステーブルを書込むための空き領域が無くなったとき当該管理用のブロック領域を消去する。更に、前記制御回路は、書込み処理の後に管理用のブロック領域が消去されたことを、前記入れ換え処理の実行タイミングとして検出する。
【００１５】
更に具体的な形態として、前記制御回路は、入れ換え処理の直前に行なわれた書換え処理対象とされたスーパーブロックに関する前記アドレステーブル上の入れ換え対象物理アドレス情報が示す物理アドレスを入れ換え対象とする。
【００１６】
また、別の具体的な形態として、前記制御回路は、入れ換え処理の直前に行なわれた書換え処理対象とされたスーパーブロックの隣のスーパーブロックに関する前記アドレステーブル上の入れ換え対象物理アドレス情報が示す物理アドレスを入れ換え対象とする。これによれば、直前に書換え処理の対象になったスーパーブロックの隣のスーパーブロックが入れ替え処理の対象になるから、一つのスーパーブロックが頻繁に書換えられても、隣のスーパーブロックに対して入れ替え処理を施すことができる。一つのスーパーブロックに対する書換えが集中しても、他のスーパーブロックにおける書換え回数の平準化に資することができる。また。隣のスーパーブロック間においてワード線が共通化されるような構成を想定すると、ディスターブは異なるスーパーブロック間でも発生するから、特定のスーパーブロックだけが頻繁に書換えられる場合にディスターブの影響を全体的に緩和する効果を期待することができる。
【００１７】
更に別の具体的な形態として、前記制御回路は、取得した入れ換え対象物理アドレス情報に応ずる物理アドレスが空きブロックであるときは、当該スーパーブロックに関する入れ換え対象物理アドレス情報を更新して、入れ換え処理を終了する。入れ換え対象物理アドレス情報に応ずる物理アドレスが空きブロックにされた特定のスーパーブロックだけが頻繁に書換えられる場合に、当該スーパーブロック内で実質的に入れ換え処理が行なわれなくなる事態を回避可能になる。すなわち、特定アドレスに書き込みが集中した場合、当該書込み対象スーパーブロックにおける入替処理で、「入替対象=空きブロック」となった時に、入替対象を更新しないと次回の入替処理でも「入替対象=空きブロック」となる可能性が高いため、ディスターブ対策の機能が失われる場合がある。「入替対象=空きブロック」となった時に、入替対象を更新することで、書き込み処理で指定されるアドレスに関係なく、ディスターブ対策を実施することが可能になる。
【００１８】
《入れ換え処理の第２形態》物理ブロック間で論理アドレスを入れ換える入れ換え処理という点における本発明の別の具体的な形態として、前記アドレステーブルは複数のスーパーブロック内におけるブロック領域単位の入れ換え対象物理アドレス情報を格納するアドレス領域（ＲＥＰＡ）と前記複数のスーパーブロック内におけるブロック領域の書換え処理回数を格納する回数領域（ＮＭＢＡ）を有する。前記制御回路は書換え処理において書換え処理対象とされたスーパーブロックに関する前記回数領域の値をインクリメントする。前記制御回路は、入れ換え処理の実行タイミングを検出すると、前記アドレステーブルからブロック領域単位の入れ換え対象物理アドレスの情報を取得し、現在の空きブロックの物理アドレスに前記取得した入れ換え対象物理アドレスの論理アドレスを新たに割り当てると共に、前記取得した入れ換え対象物理アドレスのブロック領域を新たな空きブロックに割り当て、前記新たな空きブロックと前記新たに論理アドレスを割り当てたブロック領域との間のデータの入れ換えとデータの更新を制御し、当該データの更新によって変更されたアドレス変換テーブルの所在を前記アドレステーブルに反映させると共に、アドレステーブルが保有する複数のスーパーブロック内におけるブロック領域単位の入れ換え対象物理アドレスの情報を更新する。
【００１９】
この入れ換え処理における具体的な形態として、前記制御回路は、書換え処理において更新された前記回数領域の値が所定値に到達したことを、入れ換え処理の実行タイミングとして検出する。前記回数領域の値は、前記複数のスーパーブロック内におけるブロック領域の書換え処理回数を示すから、前記複数のスーパーブロック間においてワード線が共通化されているような構成を想定すると、ディスターブは異なるスーパーブロック間でも発生するから、特定のスーパーブロックだけが頻繁に書換えられる場合にディスターブの影響を当該複数のスーパーブロックで全体的に緩和する効果を期待することができる。
【００２０】
更に具体的な形態として、前記制御回路は、入れ換え処理の直前に行なわれた書換え処理対象とされたスーパーブロックに関する前記アドレステーブル上の入れ換え対象物理アドレス情報が示す物理アドレスを入れ換え対象とする。
【００２１】
また、別の具体的な形態として、前記制御回路は、取得した入れ換え対象物理アドレス情報に応ずる物理アドレスが空きブロックであるときは、当該スーパーブロックに関する入れ換え対象物理アドレス情報を更新して、入れ換え処理を終了する。入れ換え対象物理アドレス情報に応ずる物理アドレスが空きブロックにされた特定のスーパーブロックだけが頻繁に書換えられる場合に、当該スーパーブロック内で実質的に入れ換え処理が行なわれなくなる事態を回避可能になる。
【００２２】
更に、上記入れ換え処理の第２形態においても、アドレステーブルの書込み位置を逐次変更する手段を採用することは可能である。即ち、前記制御回路は、前記アドレステーブルを格納するのに複数個の管理用のブロック領域を用い、前記アドレステーブルの格納には前記管理用のブロック領域を順次切換えて用いると共に、アドレステーブルの書込み毎に、書込み対象とされるブロック領域上におけるアドレステーブルの複数の格納位置を順次変更する制御を行い、更に、変更されたアドレステーブルの格納位置を示すフラグ情報を書込み対象のブロック領域上において更新し、管理用のブロック領域に新たにアドレステーブルを書込むための空き領域が無くなったとき当該管理用のブロック領域を消去する。
【発明の効果】
【００２３】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００２４】
すなわち、書き換え回数の平準化とディスターブ対策のために行なう物理ブロックに対する論理アドレスの割り当て変更に伴う処理時間の短縮が可能になる。
【発明を実施するための最良の形態】
【００２５】
《メモリカード》
図２には本発明に係る記憶装置の一例であるフラッシュメモリカードが示される。フラッシュメモリカード（ＦＭＣ）１は消去及び書き込み可能な不揮発性メモリ例えばフラッシュメモリ（ＦＬＡＳＨ）２と、メモリ制御及び外部インタフェース制御を行う制御回路としてのカードコントローラ（ＣＣＲＬ）３とをカード基板に備えて成る。
【００２６】
前記カードコントローラ３は、例えばカードホストとしてのホストコンピュータ（ＨＳＴ）６との間でＩＤＥディスクインタフェース仕様などに従った外部インタフェース制御を行う。カードコントローラ３は、ホストコンピュータ６からの指示に従って、フラッシュメモリ２をアクセスするアクセス制御機能を有する。このアクセス制御機能はハードディスク互換の制御機能であり、例えばホストコンピュータ６がセクタデータの集合をファイルデータとして管理するとき、カードコントローラ３は論理アドレスとしてのセクタアドレスを物理メモリアドレスに対応させてフラッシュメモリ２のアクセス制御などを行う。図１に従えば、前記カードコントローラ３は、ホストインタフェース回路（ＨＩＦ）１０、中央処理装置（ＣＰＵ）１１、ＲＯＭ１２、ＲＡＭ１３、フラッシュインタフェース回路（ＦＩＦ）１４、エラー検出訂正回路（ＥＣＣ）１５、バッファインタフェース回路（ＢＩＦ）１６、及びバッファメモリ（ＢＭＲＹ）１７を備える。
【００２７】
前記ホストインタフェース回路１０は、ＡＴＡ（ＡＴＡｔｔａｃｈｍｅｎｔ）、ＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ Ｄｅｖｉｃｅ Ｅｌｅｃｔｒｏｎｉｃｓ）、ＳＣＳＩ（Ｓｍａｌｌ Ｃｏｍｐｕｔｅｒ Ｓｙｓｔｅｍ Ｉｎｔｅｒｆａｃｅ）、ＭＭＣ（ＭｕｌｔｉＭｅｄｉａＣａｒｄ：登録商標）、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ Ｃｏｍｐｕｔｅｒ Ｍｅｍｏｒｙ Ｃａｒｄ Ｉｎｔｅｒｎａｔｉｏｎａｌ Ａｓｓｏｃｉａｔｉｏｎ）等の所定のプロトコルに従って、ホストコンピュータ６との間のコマンドインタフェース及びデータ入出力を制御する。前記ホストインタフェース回路１０はホストコンピュータ６から発行されたメモリカードコマンドを解読し、解読結果に従った処理を割り込み等によってＣＰＵ１１に指示する。
【００２８】
前記ＣＰＵ１１は、ＲＡＭ１３をワーク領域として利用し、ＲＯＭ１２が保有するプログラムを実行して、カードコントローラ３を全体的に制御する。
【００２９】
フラッシュインタフェース回路１４はＣＰＵ１１の制御に従ってフラッシュメモリ２にフラッシュアクセスコマンドを発行してデータの書換えや読出しを制御する。
【００３０】
前記バッファインタフェース回路１６はホストインタフェース回路１０とバッファメモリ１７との間のデータ転送制御並びにバッファメモリ１７とフラッシュインタフェース回路１４との間のデータ転送制御を行う。ホストインタフェース回路１０が入力した書込みデータは一旦バッファメモリ１７に格納され、その後、バッファメモリ１７からフラッシュインタフェース回路１０に転送された書き込みデータがフラッシュメモリに書込まれえる。また、フラッシュメモリ２から読み出された読出しデータは一旦バッファメモリ１７に格納され、その後、バッファメモリ１７からホストインタフェース回路１０に転送された読出しデータがホストコンピュータ６に向けて出力される。
【００３１】
前記フラッシュメモリ２は代表的に示されたメモリアレイ（ＭＡＲＹ）２０とデータレジスタ（ＤＲＥＧ）２１を有する。メモリアレイ２０は電気的に記憶情報の書き換えが可能にされる多数の不揮発性メモリセルを有する。不揮発性メモリセルには、例えば、電荷蓄積層としてフローティングゲートを有するＭＯＳスタックゲート構造、或いは電荷蓄積層としてシリコン窒化膜を有するスプリットゲート構造等を採用することができる。何れにおいても、電荷蓄積領域に電子を注入（正孔を放出）する処理（書込み処理）を行なうことによって閾値電圧を高くし、また、前記電荷蓄積領域から電子を放出（正孔を注入）して初期化する処理（消去処理）を行なうことによって閾値電圧を低くする。不揮発性メモリセルはこの書込み処理と消去処理による閾値電圧の相違によって情報を記憶することができる。１個の不揮発性メモリセルに選択的にプログラムできる閾値電圧状態を２つの状態とすることによって２値記憶を行うことができる。１個の不揮発性メモリセルに選択的にプログラムできる閾値電圧状態を４つの状態とする４値記憶を行うように構成することも可能である。
【００３２】
特に制限されないが、メモリアレイは複数個の不揮発性メモリセルの集合であるページ領域（単にページとも記す）ＰＡＧ単位に記憶情報を書込む書込み処理が可能にされ、複数のページＰＡＧの集合であるブロック領域（単にブロックとも記す）ＢＬＫ単位に記憶情報を初期化する消去処理が可能にされる。要するに、ページＰＡＧが書込み単位（PGM unit）とされ、ブロックＢＬＫが消去単位（ERS unit）とされる。例えば、１個のページＰＡＧ（１ページ）は例えば２キロバイト（ＫＢ）＋６４ＫＢの記憶容量を有し、1個のブロックＢＬＫ（１ブロック）は４ページのサイズを有する。１ブロックの不揮発性メモリセルは、特に制限されないが、共通のワード線に接続され、例えば消去処理選択ワード線に負の高電圧を印加し、ウェル領域をグランド電位にする事により、例えばＦＮトンネルによって1ブロック単位の一括消去を行なうことができる。ワード線を共有する1ブロック４ページの不揮発性メモリセルはページ毎に１個づつ隣り合わせで順次ワード線に沿って配置され、不揮発性メモリセルのドレインは選択的にページ単位でビット線に接続される。書込み処理を行なうときは、ワード線に正の高電圧を印加し、１ページの不揮発性メモリセルのソースをビット線に接続し、書込み選択とされるメモリセルに対応するビット線にはドレインからソースに向かう電流経路を形成し、書込み非選択とされるメモリセルにはドレインからソースに向かう電流経路の形成を抑制する。前記電流経路を介して不揮発性メモリセルに流れるソース電流によってホットエレクトロンが発生され、これによって電子が不揮発性メモリセルの電荷蓄積領域に注入され、その閾値電圧が高くされる。データの書き換えでは、ブロック単位の消去を行なった後、当該ブロックを構成する４ページに対してページ単位で書込み処理が行なわれる。
【００３３】
データレジスタ２１は、特に制限されないが、メモリアレイ２０との間でページ単位のデータ入出力を行ない、最大1ブロックのデータを格納可能である。また、データレジスタ２１はフラッシュインタフェース回路１４との間でバイト単位のデータ入出力を行なう。例えばデータの書換えでは、消去対象ブロックＢＬＫから読み出されたデータがデータレジスタ２１に退避される。退避されたデータは、フラッシュインタフェース回路１４から供給される書込みデータ等によってモディファイされる。モディファイされたデータは、消去後のブロックＢＬＫにページ単位で書込まれる。
【００３４】
《スーパーブロック単位のデータ管理形態》
図１にはメモリアレイ２におけるデータ構成が例示される。メモリアレイ２１のページ単位の物理アドレスであるページアドレスは、００００ｈ〜０ＦＦＦｈとされる。ｈは１６進数であることを意味する。１ページ（書込単位）ＰＡＧは２１１２バイトである。1ページＰＡＧには、データ領域（ＤａｔａＡｒｅａ）としての４つのセクタ（５１２バイト）及びセクタに対するＥＣＣコード（８バイト）領域と、３２バイトの管理領域（ＣｏｎｔｒｏｌＡｒｅａ）によって構成される。４つのページＰＡＧで１ブロックＢＬＫ（消去単位）となる。ここではブロックＢＬＫの数は４００ｈとなる。
【００３５】
６４個のブロックＢＬＫの単位をスーパーブロックＳＢと定義する。図１の例では１６個のスーパーブロック(ＳＢ)は夫々６４個のブロックＢＬＫで構成される。図１には代表的に１６個のスーパーブロックＳＢ−０〜ＳＢ−１５が示される。
【００３６】
スーパーブロックＳＢ−０〜ＳＢ−１４は、ユーザデータを格納するためのユーザデータ領域（ＵｓｅＤａｔａＡｒｅａ）とされる。一つのスーパーブロックＳＢには、６３ブロックＢＬＫ分のユーザデータを格納できる。残り一つは空きブロックＢＬＫ−Ｖとして確保されている。図１の例では、スーパーブロックＳＢ−０においてページアドレス：００１４ｈ〜００１７ｈが空きブロックＢＬＫ−Ｖになっている。スーパーブロックＳＢ−１ではページアドレス：０１００ｈ〜０１０３ｈが空きブロックＢＬＫ−Ｖになっている。その詳細については後述するが、データの書換え等において、必ず、空きブロックを消去した後、消去した空きブロックが書込み対象ブロックにされる。また、書換え前に書換え対象ユーザデータが格納されていたブロックが、新たな空きブロックにされる。したがって、ブロックに対する書き換えが行なわれれば論理アドレスとページアドレスとの対応はもとより空きブロックの割り当て状態も変更されることになる。
【００３７】
ユーザデータ領域であるスーパーブロックＳＢ−０〜ＳＢ−１４における各ブロックＢＬＫの管理領域は、当該スーパーブロックＳＢ内におけるアドレス変換テーブルとしてのＳＢ内テーブル（ＳＢＴＢＬ）を格納するための領域とされる。ＳＢ内テーブルＳＢＴＢＬは当該スーパーブロックＳＢにおける空きブロックＢＬＫ−Ｖの割り当てと残りのブロックＢＬＫに対する論理アドレスの割り当てを示すテーブルである。スーパーブロックＳＢにおいてブロックに対する書き換えが行なわれたとき、新たなＳＢ内テーブルＳＢＴＢＬの格納場所は最後に書込み処理が行なわれた（要するに、最も最近書込み処理が行なわれた）当該書換え対象ブロックＢＬＫの管理領域（ＣｏｎｔｒｏｌＡｒｅａ）とされる。図１において“最新”と記載された管理領域が当該スーパーブロックＳＢにおける最新のＳＢ内テーブルＳＢＴＢＬを保有する。要するに、図１では、スーパーブロックＳＢ−０内において、ユーザデータ０００ｈ〜００Ｆｈが最後に書き込まれたことを示しているので、ページアドレス０００４ｈ〜０００７ｈの管理領域が最新のＳＢ内テーブルＳＢＴＢＬを保有している。
【００３８】
図３にはＳＢ内テーブルＳＢＴＢＬの構成が例示される。ＳＢ内テーブルＳＢＴＢＬは図の左上端より、当該スーパーブロックに割り当てられる連続する６３×４個の論理アドレスに対応するページアドレスが順番に格納され、最後に空きブロックＢＬＫ−Ｖのページアドレスが格納されるようになっている。図１のスーパーブロックＳＢ−０を一例とすれば、ＳＢ内テーブルＳＢＴＢＬの先頭はユーザデータ０ｈ〜Ｆｈが格納されたページアドレスＰＡＤＲＳ[UserData(０h〜Fh)]：０００４ｈ〜０００７ｈを保有し、次にユーザデータ１０ｈ〜１Ｆｈが格納されたページアドレスＰＡＤＲＳ[UserData(10h〜1Fh)]：００ＦＣｈ〜００ＦＦｈを保有し、最後は空きブロックＢＬＫ−Ｖが割り当てられたページアドレスＰＡＤＲＳ[VBLK]：００１４ｈ〜００１７ｈを保有する。これに従えば、スーパーブロックＳＢ−０に割り当てられる先頭４セクタ分の論理アドレスはページアドレスＰＡＤＲＳ：０００４ｈ〜０００７ｈに、次の４セクタ分の論理アドレスはページアドレスＰＡＤＲＳ：００ＦＣｈ〜００ＦＦｈに割り当てられている。
【００３９】
図１においてスーパーブロックＳＢ−１５は代替領域及びチップテーブル領域として利用される。代替領域は不良ブロックの代わりに使用するブロックである。例えば図１において、スーパーブロックＳＢ−０内のページアドレス０００８ｈ〜０００Ｂｈが不良ブロックであり、これを代替するのにページアドレス０Ｆ００ｈ〜０Ｆ０３ｈのブロックを使用している。同様に、ページアドレス００１０ｈ〜００１３ｈの不良ブロックを代替するのにページアドレス０Ｆ０４ｈ〜０Ｆ０７ｈのブロックを使用している。
【００４０】
図１のチップテーブル領域は２個の管理用のブロックＢＬＫ−Ｃから成る。２個の管理用ブロックＢＬＫ−Ｃに割り当てられたチップテーブル領域ＣＴＡＲＥＡには、図４に例示されるように、最新のＳＢ内テーブルＳＢＴＢＬのページアドレス及び入れ換え対象ページアドレスを登録するためのチップテーブルＣＰＴＢＬを格納する。また、チップテーブル領域ＣＴＡＲＥＡの管理領域には、最新のチップテーブルＣＰＴＢＬがどこに格納されているかを示すためのチップテーブルフラグを有するフラグテーブルＦＬＧＴＢＬが格納される。
【００４１】
図４にはチップテーブル領域ＣＴＡＲＥＡとそこに格納されたチップテーブルＣＰＴＢＬ及びチップテーブルフラグのフラグテーブルＦＬＧＴＢＬが示される。チップテーブルＣＰＴＢＬは、スーパーブロックＳＢ−０の最新のＳＢ内テーブルのページアドレスを先頭に、順次、スーパーブロックＳＢ−１からＳＢ１４のそれぞれにおける最新のＳＢ内テーブルのページアドレスを保有し、さらに、スーパーブロックＳＢ−０における入れ替え対象ページアドレスを先頭に、順次、スーパーブロックＳＢ−１からＳＢ１４の夫々における入れ替え対象ページアドレスを保有し、最後にそれらに対するＥＣＣコードを保有する。チップテーブルＣＰＴＢＬは例えば５１２バイトのテーブルサイズを有する。入替対象とは、ディスターブ対策のために書き換えを行う物理ブロックのことである。領域ＲＥＰＡはスーパーブロック単位の入れ替え対象ページアドレスを保持する領域である。ディスターブ対策のための入れ替え処理、並び書換え処理については詳細を後述する。
【００４２】
チップテーブル領域ＣＴＡＲＥＡの各ページには４セクタ分に対応されるカラム０〜カラム３を割り当て、チップテーブルＣＰＴＢＬの格納には管理用ブロックＢＬＫ−Ｃを順次切換えて用いると共に、チップテーブルＣＰＴＢＬの書込み毎にページ上の書込みカラム位置を順次切換える制御を行う。例えば図４に例示されるように、上段の管理ブロックＢＬＫ−Ｃにおけるページアドレス０ＦＦ８ｈのカラム０をチップテーブルＣＰＴＢＬの書き込みの基点とすると、次の書き込みでは下段の管理ブロックＢＬＫ−Ｃにおけるページアドレス０ＦＦＣｈのカラム０、その次の書き込みでは上段の管理ブロックＢＬＫ−Ｃにおけるページアドレス０ＦＦ８ｈのカラム１、というように、矢印で示されるように順次変更され、最後に、下段の管理ブロックＢＬＫ−Ｃにおけるページアドレス０ＦＦＦｈのカラム３の位置まで変更される。
【００４３】
図５にはフラグテーブルＦＬＧＴＢＬの一例が示される。チップテーブル領域ＣＴＡＲＥＡにおける最新のチップテーブルの格納位置を示すチップテーブルフラグのフラグテーブルＦＬＧＴＢＬは、８ページ分のカラム０〜カラム３のチップテーブル格納領域に対応して８×４のフラグ領域を有する。フラグテーブルＦＬＧＴＢＬはチップテーブル領域ＣＴＡＲＥＡが消去処理されたときＦＦｈに初期化され、チップテーブル領域ＣＴＡＲＥＡの先頭に最新のチップテーブルが格納されるとき先頭のチップテーブルフラグがＦＦｈから００ｈに変更される（Ｓ１）。それ以降、最新のチップテーブルの格納位置の変更に応じて対応するフラグテーブルＦＬＧＴＢＬ上の位置においてチップテーブルフラグがＦＦｈから００ｈに変更される（Ｓ２，Ｓ３）。フラグテーブルＦＬＧＴＢＬ上の全てのチップテーブルフラグが００ｈになったとき（Ｓ４）、次にチップテーブルの格納位置を変更するときは、先ず、０ＦＦ８ｈ〜０ＦＦＢｈのページアドレスを消去処理して初期化し、その後で、０ＦＦ８ｈのページに最新のチップテーブルとチップテーブルフラグとを書込む（Ｓ５）。更にその次に、０ＦＦＣｈ〜０ＦＦＦｈのチップテーブル領域に最新のチップテーブルを書込むときは、先に０ＦＦＣｈ〜０ＦＦＦｈのページアドレスを消去処理して初期化し、その後、０ＦＦＣｈのページに最新のチップテーブルとチップテーブルフラグとを書込む（ＴＲ１）。
【００４４】
上記チップテーブルＣＰＴＢＬとフラグテーブルＦＬＧＴＢＬの構成によれば、フラグテーブルＦＬＧＴＢＬの更新方向とは逆方向からフラグ“００ｈ”の検索を行ない、フラグ“００ｈ”を検出した位置に応ずるページアドレスのカラム位置が、最新のチップテーブルの格納位置になる。これによって取得したチップテーブルＣＰＴＢＬから、アクセス要求に係る論理アドレスに割り当てられたスーパーブロックＳＢに応ずる最新のＳＢ内テーブルＳＢＴＢＬが格納されているページアドレスを得ることができ、そのページアドレスを用いて必要なＳＢ内テーブルＳＢＴＢＬを取得すればよい。前述のようにデータの書換えではデータの書込み先はそのときの空きブロックＢＬＫ−Ｖとされ、論理アドレスの割り当て変更を伴うことから、データの書き換えが生ずれば最新のＳＢ内テーブルＳＢＴＢＬの格納位置も変更され、其れに伴ってチップテーブルＣＰＴＢＬが更新され、フラグテーブルＦＬＧＴＢＬも更新されることになる。前記ＳＢ内テーブルＳＢＴＢＬ、チップテーブルＣＰＴＢＬ、フラグテーブルＦＬＧＴＢＬに対する参照や操作はＣＰＵ１１が必要なテーブルをＲＡＭ１３に読み込んで行なう。ＣＰＵ１１は読み込んだテーブルを変更したときは、その変更をフラッシュメモリ上のブロックに反映する制御を行う。以下において、上記スーパーブロック単位のデータ管理形態を採用した場合における各種アクセス制御形態について説明する。
【００４５】
《リード処理》
図６にはリード処理フローが例示される。ホストコンピュータ６からリードコマンドが発行されると（Ｓ１０２１）、ＣＰＵ１１はそれによって指定された論理アドレスに対応するスーパーブロックＳＢの番号（ＳＢ番号）を算出する（Ｓ１０２）。例えば、ホストコンピュータ６が論理アドレスとして、ユーザデータ３００ｈの論理アドレスを指定した場合、図１に従えばＳＢ番号はスーパーブロックＳＢ−０となる。ＣＰＵ１１は算出したＳＢ番号のＳＢ内テーブルＳＢＴＢＬを、ＲＡＭ１３に既に読み出しているかを確認する（Ｓ１０３）。読み出し済みである場合には、ＣＰＵ１１はＲＡＭ１３上のＳＢ内テーブルＳＢＴＢＬからアクセス要求に係る論理アドレスが格納されているページアドレスを取得する（Ｓ１１０）。
【００４６】
必要なＳＢ内テーブルＳＢＴＢＬがＲＡＭ１３に読み出されていない場合、ＳＢ内テーブルの最新位置を登録したチップテーブルＣＰＴＢＬが既にＲＡＭ１３上に読み出し済みであるかが確認される（Ｓ１０５）。読み出し済みの場合、ＣＰＵ１１はＲＡＭ１３上のチップテーブルＣＰＴＢＬから最新ＳＢ内テーブルが格納されているページアドレスを取得（Ｓ１０８）する。チップテーブルＣＰＴＢＬがＲＡＭ１３に読み出されていない場合、チップテーブル領域ＣＴＡＲＥＡの管理情報としてフラグテーブルＦＬＧＴＢＬを読み出し、最新のチップテーブルの位置を特定（Ｓ１０６）。これに従って、最新のチップテーブルをＲＡＭ１３に読み出す（Ｓ１０７）。読み出したチップテーブルＣＰＴＢＬを用いて、最新のＳＢ内テーブルのページアドレスを取得する（Ｓ１０８）。図４の例に従えば、最新ＳＢ内テーブルＳＢＴＢＬはページアドレス０００４ｈ〜０００７ｈに格納されていることが分かる。そして、ＣＰＵ１１は最新のＳＢ内テーブルをＲＡＭ１３に読み出す（Ｓ１０９）。
【００４７】
ＣＰＵ１１はＲＡＭ１３上の最新のＳＢ内テーブルを用いて、アクセス対象論理アドレスに対応するページアドレスを取得する（Ｓ１１０）。図３の例に従えば、アクセス対象論理アドレスのユーザデータ３００ｈはページアドレス００００ｈ〜０００３ｈに格納されていることが分かるので、ＣＰＵ１１はページアドレス００００ｈ〜０００３ｈからバッファメモリ１７にユーザデータを読み出す（Ｓ１１１）。最後に、ＣＰＵ１１はバッファメモリ１７に読み出したユーザデータをホストインタフェース回路１０を介してホストコンピュータ６に向けて出力する（Ｓ１１２）。ホストコンピュータ６が、さらにユーザデータを読み出す場合には（連続してユーザデータ３０１ｈを読み出す場合など）、ステップＳ１０２〜ステップＳ１１２を繰り返す。
【００４８】
《書換え処理》
図７には書換え処理フローが例示される。図８にはユーザデータ３００ｈ〜３０Ｆｈの論理アドレスに対する書換え処理を一例としたときにおける図７の処理ステップとテーブルの登録アドレスとの対応を例示する説明図である。
【００４９】
ホストコンピュータ６からライトコマンドが発行されると（Ｓ２０１）、ＣＰＵ１１はそれによって指定された論理アドレスに対応するスーパーブロックＳＢの番号（ＳＢ番号）を算出する（Ｓ２０２）。例えば、ホストコンピュータ６が論理アドレスとして、ユーザデータ３００ｈ〜３０Ｆｈの論理アドレスを指定した場合、図１に従えばＳＢ番号はスーパーブロックＳＢ−０となる。ＣＰＵ１１は算出したＳＢ番号のＳＢ内テーブルＳＢＴＢＬを、ＲＡＭ１３に既に読み出しているかを確認する（Ｓ２０３）。必要なＳＢ内テーブルＳＢＴＢＬがＲＡＭ１３に読み出されていない場合、ＳＢ内テーブルＳＢＴＢＬの最新位置を登録したチップテーブルＣＰＴＢＬが既にＲＡＭ１３上に読み出し済みであるかが確認される（Ｓ２０５）。読み出し済みの場合、ＣＰＵ１１はＲＡＭ１３上のチップテーブルＣＰＴＢＬから最新ＳＢ内テーブルが格納されているページアドレスを取得（Ｓ２０８）する。チップテーブルＣＰＴＢＬがＲＡＭ１３に読み出されていない場合、チップテーブル領域ＣＴＡＲＥＡの管理情報としてフラグテーブルＦＬＧＴＢＬを読み出し、最新のチップテーブルの位置を特定する（Ｓ２０６）。これに従って、最新のチップテーブルをＲＡＭ１３に読み出す（Ｓ２０７）。読み出したチップテーブルＣＰＴＢＬを用いて、最新のＳＢ内テーブルのページアドレスを取得する（Ｓ２０８）。図４の例に従えば、最新ＳＢ内テーブルＳＢＴＢＬはページアドレス０００４ｈ〜０００７ｈに格納されていることが分かる。そして、ＣＰＵ１１は最新のＳＢ内テーブルをＲＡＭ１３に読み出す（Ｓ２０９）。
【００５０】
この後、ＣＵＰ１１はＲＡＭ１３上の最新のＳＢ内テーブルを用いて、アクセス対象スーパーブロックＳＢにおける空きブロックＢＬＫ−Ｖのページアドレスを取得する（Ｓ２１０）。図３の例では、空きブロックは、ページアドレス００１４ｈ〜００１７ｈである。次いで、その空きブロックＢＬＫ−Ｖを消去する（Ｓ２１１）。
【００５１】
ここで、ＲＡＭ１３上のＳＢ内テーブルＳＢＴＢＬを用いて今回のアクセス対象とされる論理アドレスが割り当てられているページアドレスを取得し、そのページアドレスのブロックのデータをバッファメモリ１７に退避する。退避したデータは、バッファメモリ１７上において、今回ホストコンピュータ６から供給された書込みデータとモディファイされて、後述の書き込み処理に供される。例えばホストコンピュータから供給された書込みデータが１ページ分のデータであるときは残り３ページ分のデータはそのままにされる。この後、ＣＰＵ１１はＲＡＭ１３上のＳＢ内テーブルＳＢＴＢＬにおいて今回のアクセス対象とされる論理アドレスが割り当てられているページアドレスと空きブロックのページアドレスとを更新する（Ｓ２１２）。図８の例に従えば、ＳＢ内テーブルのユーザデータ３００〜３０Ｆｈの論理アドレスに対応するページアドレスの情報００００ｈ〜０００３ｈを００１４ｈ〜００１７ｈに、ＳＢ内テーブルの空きブロックに関するページアドレスの情報００１４ｈ〜００１７ｈを００００ｈ〜０００３ｈに更新する。
【００５２】
次いで、ＣＰＵ１１は、ステップＳ２１１で消去された空きブロック００１４ｈ〜００１７ｈに、上記モディファイされた書き込みデータとステップＳ２１２で更新されたＳＢ内テーブルＳＢＴＢＬの書き込みを制御する（Ｓ２１３）。
【００５３】
更に、ＲＡＭ１３上のチップテーブルにおいて、今回書換え対象とされたスーパーブロックにおける最新のＳＢ内テーブルＳＢＴＢＬが格納されたページアドレスを更新する（Ｓ２１４）。図８の例に従えば、最新のＳＢ−０内テーブルのページアドレスを００１４ｈ〜００１７ｈに更新する。この後、ＣＰＵ１１はＲＡＭ１３で更新したチップテーブルＣＰＴＢＬとフラグテーブルＦＬＧＴＢＬをチップテーブル領域ＣＴＡＲＥＡの次のカラム位置に書き込む（Ｓ２１５）。チップテーブルＣＰＴＢＬ及びフラグテーブルＦＬＧＴＢＬの更新手順は図５で説明した通りであり、必要ならば、予め、チップテーブル領域ＣＴＡＲＥＡの一方のブロックに対する消去を行う。最後に入替処理Ｓ２１６を行う。ホストコンピュータ６が更に連続して別のユーザデータを書き込む場合には前記ステップＳ２０２〜Ｓ２１６を繰り返す。
【００５４】
上記書込み処理においては、アクセス対象論理アドレスに対応するブロックとそのときの空きブロックとの入れ替えが行なわれる。この入れ替えにより、ブロックに対する書き換え回数の平準化と書き換え頻度の少ないブロックに対するディスターブ対策を達成することができる。但し、ホストコンピュータ６によるアクセス対象論理アドレスが偏る場合にはその効果は十分ではない。以下に具体例を説明する入れ替え処理はその点を改善しようとするものであり、カードコントローラ３主体でランダムな入れ替え処理を可能にするものである。
【００５５】
《入れ替え処理》
図９には入れ替え処理フローが例示される。図７のステップＳ２１５においてチップテーブル領域ＣＴＡＲＥＡにおいてページアドレス０ＦＦＣｈ〜０ＦＦＦｈを消去した場合に入替の処理を実行する（Ｓ３０１）。要するに書換え処理毎に最新のチップテーブルＣＰＴＢＬをチップテーブル領域ＣＴＡＲＥＡに順次書込む処理が一巡されたタイミングを以って入れ替え処理を行なう。
【００５６】
先ず、書換え処理で更新したスーパーブロックＳＢの入替対象を、チップテーブルＣＰＴＢＬから取得する（Ｓ３０２）。図４の例では、スーパーブロックＳＢ−０の入替対象ページアドレスは０００Ｃｈ〜０００Ｆｈとされている。この入替対象ページアドレスが空きブロックであるかを確認し、空きブロックの場合には、入替処理を行わない（Ｓ３０３）。実質的な入れ替え対象がないからである。
【００５７】
入替処理を行う場合、まず、現在の空きブロックを消去する（Ｓ３０４）。空きブロックは、ＲＡＭ１３上のＳＢ内テーブルＳＢＴＢＬから取得する。次いで、ＲＡＭ１３上のＳＢ内テーブルにおいて、入替処理となるユーザデータのページアドレスと空きブロックのページアドレスを更新する（Ｓ３０５）。例では、ページアドレス０００Ｃｈ〜０００Ｆｈが入替対象であり、空きブロックがページアドレス００１４ｈ〜００１７ｈのとき、ＳＢ内テーブルでは、ページアドレス０００Ｃｈ〜０００Ｆｈを空きブロックに、また、ユーザデータ０２０ｈ〜０２Ｆｈのページアドレスを００１４ｈ〜００１７ｈに更新する。
【００５８】
消去した空きブロック（ページアドレス：００１４ｈ〜００１７ｈ）に、ユーザデータ０２０ｈ〜０２Ｆｈと更新したＳＢ内テーブルを書き込む（Ｓ３０６）。ここで、ユーザデータ０２０ｈ〜０２Ｆｈは一旦カードコントローラ３のバッファメモリ１７に読み出されてから、空きブロックに書き込まれることになる。
【００５９】
最新のＳＢ−０内テーブルが格納されているページアドレスが変更され、且つ入替処理が実行されたので、ＲＡＭ１３上のチップテーブルＣＰＴＢＬにおいて、最新ＳＢ内テーブルのページアドレスと、入替対象のページアドレスを更新する（Ｓ３０７）。例えば最新ＳＢ内テーブルのページアドレスは００１４ｈ〜００１７ｈに、入替対象のページアドレスは現在の入替対象の次のブロックである００１０ｈ〜００１３ｈに更新される。ただし、ページアドレス００１０ｈ〜００１３ｈは不良ブロックであるので、入替対象にはページアドレス０Ｆ０４ｈ〜０Ｆ０７ｈを登録する。最後に、最新のチップテーブルＣＰＴＢＬとフラグテーブルＦＬＧＴＢＬをフラッシュメモリ２のチップテーブル領域ＣＴＡＲＥＡに書き込む（Ｓ３０８）。
【００６０】
図１０には入替対象のページアドレス更新手順が例示される。入替対象のページアドレスは、入替処理が発生する毎に、次のページアドレスに移動する。また、スーパーブロックの最後のページアドレスの次は、スーパーブロックの先頭のページアドレスに移動する。例えば、ページアドレス００ＦＣｈ〜００ＦＦｈの次は、ページアドレス００００ｈ〜０００３ｈにとなる。
【００６１】
以上説明したスーパーブロック単位のデータ管理形態によれば、スーパーブロック毎にアクセス対象論理アドレスに対応するブロックとそのときの空きブロックとの入れ替えが行なわれるから、ブロックに対する書き換え回数の平準化と書き換え頻度の少ないブロックに対するディスターブ対策を達成することができる。このとき、物理ブロックの書き換え回数をカウントしたり、書換え回数の少ないブロックを検索したりすることを要しないので、書き換え処理時間を短縮でき、書き込み性能の向上に資することができる。さらに、所定のタイミングでカードコントローラ３主体によるスーパーブロック内でのランダムな入れ替え処理が可能にされるから、ホストコンピュータ６によるアクセス対象論理アドレスが偏っていても、前記平準化とディスターブ対策の実効性を確保することができる。
【００６２】
《入れ替え処理の第２の例》
図１１には入れ替え処理の第２の例が示される。図９の第１の例との相違点は、入れ替え処理を行なうタイミングと、入れ替え対象の選択方法である。即ち、図７ステップＳ２１５においてチップテーブル領域においてページアドレス０ＦＦ８ｈ〜０ＦＦＢｈを消去した場合に入替の処理を実行する（Ｓ４０１）。入れ替え対象は書換え処理と同じスーパーブロックから選択するのではなく、隣のスーパーブロックに対して行う（Ｓ４０２）。例えば、直前の書換え対象がスーパーブロックＳＢ−０に属するブロックであったとき、入れ替え対象は隣のスーパーブロックＳＢ−１の入替対象ページアドレスとされ、例えば図４の例に従えばスーパーブロックＳＢ−１のページアドレス０１００ｈ〜０１０３Ｆｈとされている。その他の処理手順は図９と同じである。
【００６３】
図１１の入れ替え処理手順によれば、直前に書換え処理の対象になったスーパーブロックの隣のスーパーブロックが入れ替え処理の対象になるから、一つのスーパーブロックが頻繁に書換えられても、隣のスーパーブロックに対して入れ替え処理を施すことができる。一つのスーパーブロックに対する書換えが集中しても、他のスーパーブロックにおける書換え回数の平準化に資することができる。
【００６４】
《入れ替え処理の第３の例》
図１２には入れ替え処理の第３の例が示される。図９の第１の例との相違点は、入替対象に保存されたデータを救済する必要がない場合、即ち、入れ替え対象が空きブロックの場合に、チップテーブルに格納されている入替対象のページアドレスを更新する処理（Ｓ５０８）を行なうことである。例えば、直前の書換え対象がスーパーブロックＳＢ−０に属するブロックであったとき、入れ替え対象ページアドレスが００１４Ｃｈ〜００１７ｈのとき、これが空きブロックであるときに、当該入れ替え対象ページアドレスを隣のページアドレス００１８ｈ〜００１ＡＦｈに変更する。その他の処理手順は図９と同じである。これによれば、特定アドレスに書き込みが集中した場合、当該書込み対象スーパーブロックにおける入替処理で、「入替対象=空きブロック」となった時に、入替対象を更新しないと次回の入替処理でも「入替対象=空きブロック」となる可能性が高いため、ディスターブ対策の機能が失われる場合がある。「入替対象=空きブロック」となった時に、入替対象を更新することで、書き込み処理で指定されるアドレスに関係なく、ディスターブ対策を実施することが可能になる。
【００６５】
《入れ替え対象の別の指定方法》
次に、入れ替え処理における入れ替え対象を複数のスーパーブロック単位で管理するようにした場合の例を説明する。図１３にはそのときのチップテーブルの構成が例示され、図１４にはそのときの書き換え処理フローが例示され、図１５にはそのときの入れ替え処理フローが例示される。
【００６６】
入れ替え処理対象を複数のスーパーブロック単位で管理する場合、チップテーブルＣＰＴＢＬは図１３に示されるように変更される。基本的構成は図４と同様であるが、入替対象のページアドレスが複数スーパーブロック単位で管理され、複数スーパーブロック単位の更新回数を保持する領域が追加された点が相違される。例えば、管理の単位はスーパーブロックＳＢ−０〜ＳＢ−３のようにされ、このときの入替対象のページアドレスが採り得る範囲は当該スーパーブロックＳＢ−０〜ＳＢ−３の全範囲である０００ｈ〜ＦＢＦｈとなり、その更新回数はスーパーブロックＳＢ−０〜ＳＢ−３の全体における更新回数の総和とする。
【００６７】
このときの書換え処理フローは図１３のように変更されるが、基本的な処理手順は図７とほぼ同じである。相違点は、複数のスーパーブロックＳＢの単位で更新回数をカウントするため、管理単位の番号を論理アドレスであるユーザデータアドレスから計算する処理ステップＳ６０９，Ｓ６１０と、チップテーブルＣＰＴＢＬで管理する更新回数を更新する処理ステップＳ６１７である。
【００６８】
更に入れ替え処理も図１５のように変更されるが、基本的な処理手順は図９とほぼ同じである。相違点は、入替処理のトリガが、複数スーパーブロック単位の更新回数が規定値、例えばＦＦＦｈとなったとき、とすることである。
【００６９】
この入れ替え対象の指定手順によれば、ディスターブに起因するデータの救済が複数のスーパーブロック単位で必要な場合に、データの救済が可能となる。例えば、ディスターブの影響が複数のスーパーブロックＳＢに跨って発生する時に、特定のスーパーブロックに書き込みが集中した場合でも、ディスターブを受ける範囲（書き込みが発生しないが、ディスターブの影響を受ける他のスーパーブロック）を全て入れ替え処理による救済の対象とすることができる。要するに、今まで説明したブロックの構成とは違うが、異なるスーパーブロック間においてワード線が全体的に若しくは部分的に共通化されるような構成を想定すると、ディスターブは異なるスーパーブロック間でも発生するから、特定のスーパーブロックだけが頻繁に書換えられる場合にディスターブの影響を全体的に緩和する効果を期待することができる。
【００７０】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００７１】
例えば、フラッシュメモリのメモリアレイ構成はＡＮＤ型であってもＮＡＮＤ型であってもよい。また、ページサイズ、ブロックのサイズ、スーパーブロックのサイズは適宜変更可能である。また、消去や書き込み方式、消去単位に対するワード線の構成やウェルの構成などについても適宜変更可能である。要するに、本発明は具体的なメモリアレイの構成には一切限定されない。
【図面の簡単な説明】
【００７２】
【図１】本発明に係る記憶装置が保持するデータの構造を例示する説明図である。
【図２】本発明に係る記憶装置の一例であるフラッシュメモリカードを例示するブロック図である。
【図３】ＳＢ内テーブルＳＢＴＢＬの構成を例示する説明図である。
【図４】チップテーブル領域ＣＴＡＲＥＡとそこに格納されたチップテーブルＣＰＴＢＬ及びチップテーブルフラグのフラグテーブルＦＬＧＴＢＬの一例を示す説明図である。
【図５】フラグテーブルＦＬＧＴＢＬの一例を示す説明図である。
【図６】リード処理手順を例示するフローチャートである。
【図７】書換え処理手順を示すフローチャートである。
【図８】ユーザデータ３００ｈ〜３０Ｆｈの論理アドレスに対する書換え処理を一例としたときにおける図７の処理ステップとテーブルの登録アドレスとの対応を例示する説明図である。
【図９】入れ替え処理手順を示すフローチャートである。
【図１０】入替対象のページアドレス更新手順を例示する説明図である。
【図１１】入れ替え処理の第２の例に係る処理手順を示すフローチャートである。
【図１２】入れ替え処理の第３の例に係る処理手順を示すフローチャートである。
【図１３】入れ替え処理における入れ替え対象を複数のスーパーブロック単位で管理するようにしたときのチップテーブルの構成を例示する説明図である。
【図１４】図１３に示されるチップテーブルを採用した場合における書き換え処理手順を示すフローチャートである。
【図１５】図１３に示されるチップテーブルを採用した場合における入れ替え処理手順を示すフローチャートである。
【符号の説明】
【００７３】
１  フラッシュメモリカード（ＦＭＣ）
２  フラッシュメモリ（ＦＬＡＳＨ）
３  カードコントローラ（ＣＣＲＬ）
６  ホストコンピュータ（ＨＳＴ）
１０  ホストインタフェース回路（ＨＩＦ）
１１  中央処理装置（ＣＰＵ）
１２  ＲＯＭ
１３  ＲＡＭ
１４  フラッシュインタフェース回路（ＦＩＦ）
１５  エラー検出訂正回路（ＥＣＣ）
１６  バッファインタフェース回路（ＢＩＦ）
１７  バッファメモリ（ＢＭＲＹ）
２０メモリアレイ（ＭＡＲＹ）
２１  データレジスタ（ＤＲＥＧ）
ＰＡＧ  ページ領域（ページ）
ＢＬＫ  ブロック領域（ブロック）
ＢＬＫ−Ｖ  空きブロック
ＢＬＫ−Ｃ  管理用ブロック
ＳＢ（ＳＢ−０〜ＳＢ−１５は）  スーパーブロック
ＳＢ−０〜ＳＢ−１４  ユーザデータ領域
ＳＢＴＢＬ  アドレス変換テーブルとしてのＳＢ内テーブル
ＣＴＡＲＥＡ  チップテーブル領域
ＣＰＴＢＬ  チップテーブル
ＦＬＧＴＢＬ  フラグテーブル
ＮＭＢＡ  書換え回数保持領域
ＲＥＰＡ  入れ替え対象ページアドレスの保持領域
【図１】
2007164318.tif 000003
【図２】
2007164318.tif 000004
【図３】
2007164318.tif 000005
【図４】
2007164318.tif 000006
【図５】
2007164318.tif 000007
【図６】
2007164318.tif 000008
【図７】
2007164318.tif 000009
【図８】
2007164318.tif 000010
【図９】
2007164318.tif 000011
【図１０】
2007164318.tif 000012
【図１１】
2007164318.tif 000013
【図１２】
2007164318.tif 000014
【図１３】
2007164318.tif 000015
【図１４】
2007164318.tif 000016
【図１５】
2007164318.tif 000017