(57)【特許請求の範囲】
【請求項１】
複数のページからなる物理ブロックを有し、かつ各ページがデータを格納するデータ領域と、データ管理情報を格納する冗長領域とを有するフラッシュメモリへのアクセスを制御するためのメモリコントローラであって、
前記物理ブロックの消去済みの全ページのうち先頭ページから順に、前記データ領域にデータを書き込み、かつ当該データのエラー訂正のための情報と、当該データが書き込み済みであることを示すステータス情報とを前記データ管理情報として前記冗長領域に書き込むページ書き込み実行部と、
各ページの前記冗長領域中の前記ステータス情報を二分探索しながら読み出して最終有効ページを仮特定する二分探索実行部と、
前記二分探索実行部により仮特定された最終有効ページと、当該仮特定された最終有効ページに隣接するページとから、各データ領域中のデータ及び各冗長領域中のデータ管理情報を読み出し、それぞれのページにおける訂正不能エラーの有無と前記データ領域への書き込みの有無とに関するチェックの結果に応じて、最終有効ページの特定と、前記ページ書き込み実行部の動作途中の電源オフに起因したエラーページの有無判定とを行う最終有効データ特定実行部とを備えたことを特徴とするメモリコントローラ。
【請求項２】
請求項１記載のメモリコントローラにおいて、
前記二分探索実行部は、前記ステータス情報の二分探索の実行前に、前記物理ブロックの先頭ページから前記ステータス情報を読み出して当該先頭ページが消去済みかどうかを検出し、消去済みである場合には当該先頭ページを最終有効ページとして仮特定する機能を更に有することを特徴とするメモリコントローラ。
【請求項３】
請求項１記載のメモリコントローラと、当該メモリコントローラによりアクセスが制御されるフラッシュメモリとを備えたことを特徴とする不揮発性記憶装置。
【請求項４】
請求項３記載の不揮発性記憶装置において、
前記メモリコントローラと前記フラッシュメモリとが１チップに構成されたことを特徴とする不揮発性記憶装置。
【請求項５】
請求項３記載の不揮発性記憶装置と、当該不揮発性記憶装置へのアクセスを要求するホストとを備えたことを特徴とする不揮発性記憶システム。
【請求項６】
複数の物理ブロックからなる物理ユニットを有し、前記複数の物理ブロックは各々複数のページからなり、かつ各ページがデータを格納するデータ領域と、データ管理情報を格納する冗長領域とを有するフラッシュメモリへのアクセスを制御するためのメモリコントローラであって、
前記複数の物理ブロックの各々の所定数のページからなるセグメントを書き込み単位として、前記物理ユニットの消去済みの全セグメントのうち先頭セグメントから順に、前記データ領域にデータを書き込み、かつ当該データのエラー訂正のための情報と、当該データが書き込み済みであることを示すステータス情報とを前記データ管理情報として前記冗長領域に書き込むページ書き込み実行部と、
各セグメントの先頭ページの前記冗長領域中の前記ステータス情報を二分探索しながら読み出して最終有効セグメントを仮特定する二分探索実行部と、
前記二分探索実行部により仮特定された最終有効セグメントに属する全ページと、当該仮特定された最終有効セグメントに隣接するセグメントに属する全ページとから、各データ領域中のデータ及び各冗長領域中のデータ管理情報を読み出し、それぞれのセグメントにおける訂正不能エラーの有無と前記データ領域への書き込みの有無とに関するチェックの結果に応じて、最終有効セグメントの特定と、前記ページ書き込み実行部の動作途中の電源オフに起因したエラーセグメントの有無判定とを行う最終有効データ特定実行部とを備えたことを特徴とするメモリコントローラ。
【請求項７】
請求項６記載のメモリコントローラと、当該メモリコントローラによりアクセスが制御されるフラッシュメモリとを備えたことを特徴とする不揮発性記憶装置。
【請求項８】
請求項７記載の不揮発性記憶装置において、
前記メモリコントローラと前記フラッシュメモリとが１チップに構成されたことを特徴とする不揮発性記憶装置。
【請求項９】
請求項７記載の不揮発性記憶装置と、当該不揮発性記憶装置へのアクセスを要求するホストとを備えたことを特徴とする不揮発性記憶システム。
【請求項１０】
複数のページからなる物理ブロックを有し、かつ各ページがデータを格納するデータ領域と、データ管理情報を格納する冗長領域とを有するフラッシュメモリへのアクセスを制御する方法であって、
前記物理ブロックの消去済みの全ページのうち先頭ページから順に、前記データ領域にデータを書き込み、かつ当該データのエラー訂正のための情報と、当該データが書き込み済みであることを示すステータス情報とを前記データ管理情報として前記冗長領域に書き込むページ書き込みステップと、
各ページの前記冗長領域中の前記ステータス情報を二分探索しながら読み出して最終有効ページを仮特定する二分探索ステップと、
前記二分探索ステップにより仮特定された最終有効ページと、当該仮特定された最終有効ページに隣接するページとから、各データ領域中のデータ及び各冗長領域中のデータ管理情報を読み出し、それぞれのページにおける訂正不能エラーの有無と前記データ領域への書き込みの有無とに関するチェックの結果に応じて、最終有効ページの特定と、前記ページ書き込みステップの動作途中の電源オフに起因したエラーページの有無判定とを行う最終有効データ特定ステップとを備えたことを特徴とするフラッシュメモリのアクセス制御方法。
【請求項１１】
請求項１０記載のフラッシュメモリのアクセス制御方法において、
前記二分探索ステップは、前記ステータス情報の二分探索の実行前に、前記物理ブロックの先頭ページから前記ステータス情報を読み出して当該先頭ページが消去済みかどうかを検出し、消去済みである場合には当該先頭ページを最終有効ページとして仮特定するステップを有することを特徴とするフラッシュメモリのアクセス制御方法。
【請求項１２】
複数の物理ブロックからなる物理ユニットを有し、前記複数の物理ブロックは各々複数のページからなり、かつ各ページがデータを格納するデータ領域と、データ管理情報を格納する冗長領域とを有するフラッシュメモリへのアクセスを制御する方法であって、
前記複数の物理ブロックの各々の所定数のページからなるセグメントを書き込み単位として、前記物理ユニットの消去済みの全セグメントのうち先頭セグメントから順に、前記データ領域にデータを書き込み、かつ当該データのエラー訂正のための情報と、当該データが書き込み済みであることを示すステータス情報とを前記データ管理情報として前記冗長領域に書き込むページ書き込みステップと、
各セグメントの先頭ページの前記冗長領域中の前記ステータス情報を二分探索しながら読み出して最終有効セグメントを仮特定する二分探索ステップと、
前記二分探索ステップにより仮特定された最終有効セグメントに属する全ページと、当該仮特定された最終有効セグメントに隣接するセグメントに属する全ページとから、各データ領域中のデータ及び各冗長領域中のデータ管理情報を読み出し、それぞれのセグメントにおける訂正不能エラーの有無と前記データ領域への書き込みの有無とに関するチェックの結果に応じて、最終有効セグメントの特定と、前記ページ書き込みステップの動作途中の電源オフに起因したエラーセグメントの有無判定とを行う最終有効データ特定ステップとを備えたことを特徴とするフラッシュメモリのアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリのアクセス制御技術に関し、特に順次書き込み制約を持つフラッシュメモリへのアクセスを制御するためのメモリコントローラに関するものである。
【背景技術】
【０００２】
不揮発性半導体メモリが市場規模を拡大している。フラッシュメモリは、フローティングゲートトランジスタを利用してデータの不揮発性を実現した半導体メモリである。
【０００３】
ある従来技術に係るフラッシュメモリでは、複数ページからなる物理ブロック単位で消去が行われ、かつデータの読み出し（リード）及び書き込み（ライト）がページ単位で行われる。しかも、ランダムなページ書き込み要求を受信しても、物理ブロックの消去済みの全ページのうち先頭ページから順にデータが書き込まれるように制御される。このようなフラッシュメモリへの順次書き込み制約付きアクセスは、論理（仮想）ページから物理ページへのマッピングに従って制御される。各ページは、データを格納するデータ領域と、データ管理情報を格納する冗長領域とを有する。各ページの冗長領域には、そのページのデータ領域に書き込まれたデータに対応する論理ページ番号（アドレス）がデータ管理情報として格納される（特許文献１参照）。
【０００４】
他の従来技術によれば、順次書き込み制約を持つフラッシュメモリの１つの物理ブロック内のページの書き換え又は追記が要求されたとき、新たなページデータを消去済みの新物理ブロックの先頭ページから順に書き込んだ後、元の物理ブロックの非更新ページのデータを新物理ブロックの残りのページへ転送する。論理ページ番号と物理ページ番号との差であるページオフセットは、フラッシュメモリの冗長領域に格納される。各ページの冗長領域中のデータ管理情報は、その所属する物理ページに対応する論理アドレスと、そのページが空きページか否かを示すフラグと、そのページに書き込まれたデータの有効／無効を示すフラグと、そのデータのエラー検出のための情報とを含む。論理ブロックアドレスと物理ブロックアドレスとの対応関係は、アドレス変換テーブルにより管理される（特許文献２参照）。
【特許文献１】国際公開第２００３／０３０１８０号パンフレット
【特許文献２】国際公開第２００４／０２１１９１号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００５】
フラッシュメモリにデータを書き込んでいる（プログラムしている）最中に電源オフ（電断）が発生した場合、書き込み途中のページのデータが破壊される。順次書き込み制約を持つフラッシュメモリのアクセス管理には、電断に起因したエラーページの有無に関する情報とともに、物理ブロックの最終有効ページのアドレスが必要である。最終有効ページとは、当該物理ブロック内で最後に書かれた、書き込み有りかつ訂正不能エラー無しのページをいう。
【０００６】
物理ブロックの最終有効ページのアドレスを取得し、かつ訂正不能エラーの有無を判定するには、当該物理ブロック内を探索する必要がある。この場合に先頭ページから順に１ページ毎にデータ領域と冗長領域とを読み出して調べることとすると、探索に長い時間を要してしまう。１つの物理ブロックを構成するページの数が増えつつある昨今では、探索の長時間化が顕著になってきている。
【０００７】
本発明の目的は、順次書き込み制約を持つフラッシュメモリへのアクセスを制御するためのメモリコントローラにおいて、最終有効ページの特定と電断に起因したエラーページの有無判定とを高速かつ正確に実施できるようにすることにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明では、各ページの冗長領域を二分探索（binary search）することで最終有効ページを仮特定したうえ、当該仮特定された最終有効ページとその隣接ページとの全領域（データ領域及び冗長領域）の内容を調べることで、最終有効ページの特定と電断に起因したエラーページの有無判定とを実現することとした。
【０００９】
具体的に説明すると、本発明は、複数のページからなる物理ブロックを有しかつ各ページがデータを格納するデータ領域とデータ管理情報を格納する冗長領域とを有するフラッシュメモリへのアクセスを制御するためのメモリコントローラにおいて、物理ブロックの消去済みの全ページのうち先頭ページから順にデータ領域にデータを書き込み、かつ当該データのエラー訂正のための情報と当該データが書き込み済みであることを示すステータス情報とをデータ管理情報として冗長領域に書き込むページ書き込み実行部と、各ページの冗長領域中のステータス情報を二分探索しながら読み出して最終有効ページを仮特定する二分探索実行部と、この二分探索実行部により仮特定された最終有効ページと当該仮特定された最終有効ページに隣接するページとから各データ領域中のデータ及び各冗長領域中のデータ管理情報を読み出し、それぞれのページにおける訂正不能エラーの有無とデータ領域への書き込みの有無とに関するチェックの結果に応じて最終有効ページの特定とページ書き込み実行部の動作途中の電源オフに起因したエラーページの有無判定とを行う最終有効データ特定実行部とを備えた構成を採用したものである。
【００１０】
複数の物理ブロックからなる物理ユニットを有しかつこれら複数の物理ブロックの各々の所定数のページからなるセグメントを書き込み単位とするフラッシュメモリの場合には、物理ユニットの消去済みの全セグメントのうち先頭セグメントから順にデータ領域にデータを書き込み、かつ当該データのエラー訂正のための情報と当該データが書き込み済みであることを示すステータス情報とをデータ管理情報として冗長領域に書き込むページ書き込み実行部と、各セグメントの先頭ページの冗長領域中のステータス情報を二分探索しながら読み出して最終有効セグメントを仮特定する二分探索実行部と、この二分探索実行部により仮特定された最終有効セグメントに属する全ページと当該仮特定された最終有効セグメントに隣接するセグメントに属する全ページとから各データ領域中のデータ及び各冗長領域中のデータ管理情報を読み出し、それぞれのセグメントにおける訂正不能エラーの有無とデータ領域への書き込みの有無とに関するチェックの結果に応じて最終有効セグメントの特定とページ書き込み実行部の動作途中の電源オフに起因したエラーセグメントの有無判定とを行う最終有効データ特定実行部とを備えることとする。
【発明の効果】
【００１１】
本発明によれば、ページ単位の書き込みを採用するフラッシュメモリの場合には最終有効ページの特定と電断に起因したエラーページの有無判定とを、またセグメント単位の書き込みを採用するフラッシュメモリの場合には最終有効セグメントの特定と電断に起因したエラーセグメントの有無判定とをいずれも高速かつ正確に実施できる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態について、添付図面を参照して説明する。
【００１３】
図１は、本発明に係るメモリコントローラとフラッシュメモリとを搭載したメモリカードを含むシステムの構成例を示している。図１のシステムは、不揮発性記憶装置の１つであるメモリカード１０１と、このメモリカード１０１へのアクセスを要求するホスト１０２とを備えた不揮発性記憶システムである。ホスト１０２は、携帯電話機、デジタルスチルカメラ、パーソナルコンピュータ、携帯デジタル音楽プレーヤ等である。ホスト１０２の記憶メディアとして使われるものであれば、メモリカード１０１のようなカード形態の不揮発性記憶装置に限らない。
【００１４】
ここでは、ホスト１０２がメモリカード１０１の挿入スロットを持つ携帯電話機であるものとする。メモリカード１０１はホスト１０２に設けられたスロットに装着されることにより、ホスト１０２と通信を行う。メモリカード１０１とホスト１０２との通信は、ホスト１０２をマスタとし、メモリカード１０１をスレーブとするマスタスレーブ方式の通信である。
【００１５】
メモリカード１０１は、メモリコントローラ１０３と、このメモリコントローラ１０３によりアクセスが制御されるフラッシュメモリ１０４とを有する。フラッシュメモリ１０４は、例えば前述の順次書き込み制約を持つＮＡＮＤ型のフラッシュメモリであって、１つのメモリセルが０、１の２つの値のいずれかを持つ２値フラッシュメモリであっても、また１つのメモリセルが００、０１、１０、１１の４つの値のいずれかを持つ多値フラッシュメモリであってもよい。メモリコントローラ１０３とフラッシュメモリ１０４とは、各々別個のＬＳＩチップとして構成されても、また１個に統合されたＬＳＩチップとして構成されてもよい。
【００１６】
メモリコントローラ１０３は、入出力部１０５と、ＲＡＭ（random access memory）制御部１０６と、転送ＲＡＭ１０７と、テーブルＲＡＭ１０８と、ＣＰＵ（central processing unit）１０９と、フラッシュ制御部１１０と、ＥＣＣ（error correcting code：エラー訂正符号）回路１１１とを有する。
【００１７】
入出力部１０５は、ホスト１０２から送られてきたコマンド信号やデータ信号を受信し、またホスト１０２に対してレスポンス信号やデータ信号を送信する。ホスト１０２からデータ信号を受信した場合には、このデータ信号を一時記憶させるべく転送ＲＡＭ１０７に転送し、かつＣＰＵ１０９に割り込み信号を出力する。ホスト１０２へデータを送信する場合には、転送ＲＡＭ１０７のデータをホスト１０２へ出力する。
【００１８】
ＲＡＭ制御部１０６は、ＣＰＵ１０９の設定に従い、アクセス可能なＲＡＭの設定を転送ＲＡＭ１０７とテーブルＲＡＭ１０８とで切り換える。ＲＡＭ制御部１０６の設定に応じて、ＣＰＵ１０９及びフラッシュ制御部１１０は、転送ＲＡＭ１０７及びテーブルＲＡＭ１０８のいずれにもアクセスすることができる。また入出力部１０５は、転送ＲＡＭ１０７にアクセスすることができる。
【００１９】
転送ＲＡＭ１０７は、ホスト１０２から転送されたデータや、フラッシュ制御部１１０がフラッシュメモリ１０４から読み出したデータを一時記憶する。一方、テーブルＲＡＭ１０８は、フラッシュメモリ１０４の書き込み情報を記憶する。書き込み情報とは、物理ブロックの使用状況（書き込み有りブロックか未使用ブロックか）、論理アドレスと物理アドレスとの対応関係を示すアドレス変換テーブル、書き込み途中の物理ブロックの最終有効ページのアドレス等の情報をいう。これらのテーブルＲＡＭ１０８の情報は、メモリカード１０１の電源投入後のデータのリード／ライトを行う前の初期化期間中にフラッシュ制御部１１０がフラッシュメモリ１０４にアクセスして作成され、初期化後にホスト１０２からのデータを受信したり、あるいは消去命令を受信したりした時に更新される。なお、物理ブロックが未使用ブロックか否かの情報は、例えば物理ブロックの先頭ページを読み出して書き込み有り／無しを判定すれば、簡単に作成することができる。
【００２０】
ＣＰＵ１０９は、ＲＡＭ制御部１０６を経由して転送ＲＡＭ１０７及びテーブルＲＡＭ１０８のデータをリード／ライトする。ホスト１０２から一定期間コマンド信号やデータ信号を受信しない場合には、ＣＰＵ１０９内の割り込み制御部以外のブロックが動作を停止し、入出力部１０５からの割り込み信号により動作を再開する省電力機能をサポートしている。ＣＰＵ１０９がフラッシュメモリ１０４にアクセスする場合には、フラッシュ制御部１１０に所定の動作命令を送って当該アクセスを実現する。動作命令には、物理ブロックの消去命令、物理ブロック内のページへの書き込み命令、冗長領域を二分探索しながら読み出す命令、ページ全領域の読み出しを行って最終有効ページの特定と電断発生有無の判定とを実行する命令等がある。
【００２１】
フラッシュ制御部１１０は、ブロック消去実行部１１２と、ページ書き込み実行部１１３と、二分探索実行部１１４と、最終有効データ特定実行部１１５とを有する。ＣＰＵ１０９から命令を受信し、各実行部１１２〜１１５が動作することにより、フラッシュメモリ１０４に対してリード／ライト／消去等のアクセスを行う。ブロック消去実行部１１２は、フラッシュメモリ１０４の指定された物理ブロックのデータを消去する。ページ書き込み実行部１１３は、転送ＲＡＭ１０７のデータを読み出し、エラー訂正のためのシンドロームを追加して、物理ブロックの所定のページに書き込む。このとき、書き込みページの冗長領域にエラー訂正のためのシンドロームを書き込むとともに、同冗長領域中の書き込みステータス情報に該当するビットに書き込み済みのマーク“Ｌｏｗ”を入れる。二分探索実行部１１４は、初期化時のテーブルＲＡＭ１０８のデータ作成時において、対象物理ブロックの冗長領域を二分探索しながら読み出し、最終有効ページを仮特定する（詳細は後述する）。なお、二分探索実行部１１４は冗長領域中の書き込みステータス情報のみを読み出してもよい。最終有効データ特定実行部１１５は、物理ブロックの所定のページの全領域の内容を読み出し、ＥＣＣ回路１１１を経由させた後、データを転送ＲＡＭ１０７に格納する。そして、訂正不能エラーの発生有無から、最終有効ページの特定と電断発生有無の判定とを行う（詳細は後述する）。
【００２２】
ＥＣＣ回路１１１は、フラッシュメモリ１０４への書き込みデータに対しては、エラー訂正のためのシンドロームを生成する。一方、フラッシュメモリ１０４からの読み出しデータに対してはエラーの検出及び訂正を行い、訂正不能エラーを検出した場合には訂正不能エラー信号を返す。あるページのデータを読み出した時にＥＣＣ回路１１１にて訂正不能エラーを検出すれば、当該ページが電断発生のエラーページであることが判明する。
【００２３】
図２は、図１中のフラッシュメモリ１０４の内部構成例を示している。図１中のフラッシュメモリ１０４は複数の物理ブロックからなるものであるが、図２には１つの物理ブロック２０１のみが説明のために示されている。図２に示した物理ブロック２０１は、ページ０からページ３１までの３２物理ページで構成される。各ページは、例えば、５１２バイトのデータ領域（ＤＡ）２０２と、１６バイトの冗長領域（ＲＡ）２０３とで構成される。データ領域２０２は、主にホスト１０２から転送されたデータの記憶に使用される。冗長領域２０３は、ＥＣＣシンドローム、ページオフセット、書き込み済みを示すステータス情報等のデータ管理情報の記憶に使用される。
【００２４】
図２の物理ブロック２０１は、必ず先頭ページから順にデータを書き込むことが要求されるものである。図２中のハッチングは、ページ０からページ２０までがデータ書き込み済みであることを示している。なお、各々のページに対して２度書き（例えばデータ領域２０２に書き込んだ後に、別のタイミングで冗長領域２０３に書き込むといった書き込み方法）は行わないものとする。
【００２５】
図３は、図２の構成を採用した場合の図１中の二分探索実行部１１４の動作を示している。ここでは、最終有効ページを検索する物理ブロック２０１は少なくともページ０への書き込みが必ずあるものとする。
【００２６】
図３によれば、まずはステップ３０１で読み出し回数を表す変数ｎの値を１に設定し、ステップ３０２において読み出しページアドレスを表す変数Ｍの値を「（物理ブロック２０１の全ページ数）／２」で決定する。次にステップ３０３でページＭの冗長領域２０３を読み出す。このようにして読み出したページＭの冗長領域２０３に格納されたデータ管理情報中の書き込みステータス情報をもとに、書き込み有り／無しの判定を行うことができる。書き込みステータス情報が“Ｌｏｗ”のビットであれば書き込み有りであり、“Ｈｉｇｈ”であれば書き込み無しである。
【００２７】
次にステップ３０４で変数ｎを１だけインクリメントし、ステップ３０５で「（物理ブロック２０１の全ページ数）≧２ｎ」かどうかを判定する。このステップ３０５は、ステップ３０３から後述のステップ３０７又はステップ３０８までのループ動作の終了条件にあたる。
【００２８】
ステップ３０５で「Ｙｅｓ」の場合には、ステップ３０６に進む。ステップ３０６においてステップ３０３で読み出したステータス情報が書き込み有りを表す場合にはステップ３０７に進む。ステップ３０７では、変数Ｍを「（物理ブロック２０１の全ページ数）／２ｎ」だけ増加させる。一方、ステップ３０６においてステップ３０３で読み出したステータス情報が書き込み無しを表す場合にはステップ３０８に進む。ステップ３０８では、変数Ｍを「（物理ブロック２０１の全ページ数）／２ｎ」だけ減少させる。ステップ３０７又はステップ３０８の次は、ステップ３０３に戻って再度処理を実行する。
【００２９】
ステップ３０５で「Ｎｏ」の場合にはステップ３０９に進む。ステップ３０９において、ステップ３０３で読み出したステータス情報が書き込み有りを表す場合にはステップ３１０に進む。ステップ３１０では、ページＭが最終有効ページであると仮特定する。一方、ステップ３０９において、ステップ３０３で読み出したステータス情報が書き込み無しを表す場合にはステップ３１１に進む。ステップ３１１では、ページ（Ｍ−１）が最終有効ページであると仮特定する。
【００３０】
図２に示した物理ブロック２０１の例では、（１）ページ１６、（２）ページ２４、（３）ページ２０、（４）ページ２２、（５）ページ２１の順に各ページの冗長領域２０３が読み出され、ページ２０が最終有効ページであると仮特定される。
【００３１】
図４は、図２の構成を採用した場合の図１中の最終有効データ特定実行部１１５の動作を示している。なお、二分探索実行部１１４による最終有効ページの仮特定が既に終わっているものとする。
【００３２】
図４によれば、まずステップ４０１において、二分探索実行部１１４が仮特定した最終有効ページをページＮとする。次にステップ４０２において、ページＮの全領域（データ領域２０２及び冗長領域２０３）の内容を読み出して、ＥＣＣ回路１１１を経由後、転送ＲＡＭ１０７に一時記憶させる。次に、ステップ４０３でページＮの訂正不能エラーの有無を判定する。ページＮの訂正不能エラー無しの場合にはステップ４０４に進む。ステップ４０４ではページ（Ｎ＋１）の全領域を読み出す。これは、ページ（Ｎ＋１）がエラーページであるか否かを判断するために実行する。ステップ４０５ではページ（Ｎ＋１）のデータ領域２０２が消去済み（書き込み無し）か否かを判定する。ページ（Ｎ＋１）が消去済みの場合にはステップ４０６に進む。このケースは当該物理ブロック２０１に電断発生に起因したエラーページが無いケースである。ステップ４０６では、ページＮを最終有効ページであると特定し、かつ当該物理ブロック２０１に電断発生無しと判定する。
【００３３】
ステップ４０５でページ（Ｎ＋１）のデータ領域２０２への書き込み有りの場合にはステップ４０７に進む。ページ（Ｎ＋１）は冗長領域２０３が消去済みであるのに対してデータ領域２０２への書き込みがあるので、電断による異常状態と判定することができる。ステップ４０７でページＮを最終有効ページであると特定し、かつページ（Ｎ＋１）の書き込み中の電断発生有りと判定する。
【００３４】
ステップ４０３でページＮの訂正不能エラー有りの場合にはステップ４０８へ進む。ページＮは冗長領域２０３が消去済みであるのに対してデータ領域２０２への書き込みがあるので、電断による異常状態と判定することができる。ただし、ページ（Ｎ−１）にも訂正不能エラーが存在するか否かを判定する必要がある。そこで、ステップ４０８ではページ（Ｎ−１）の全領域を読み出す。次にステップ４０９でページ（Ｎ−１）の訂正不能エラー無しの場合にはステップ４１０に進む。ステップ４１０では、ページ（Ｎ−１）を最終有効ページであると特定し、かつページＮの書き込み中の電断発生有りと判定する。
【００３５】
ステップ４０９でページ（Ｎ−１）の訂正不能エラー有りの場合にはステップ４１１に進む。これは、ページＮ及びページ（Ｎ−１）の両ページにおいて訂正不能エラーが発生したケースである。このケースは電断１回では生じない異常状態のため、当該物理ブロック２０１には有効なページが全く無いものとして処理を終了する。
【００３６】
図２に示した物理ブロック２０１には電断発生に起因したエラーページが全く無いものとすると、ページ２０が最終有効ページであると仮特定された後、（ｉ）ページ２０、（ii）ページ２１の順に各々の全領域（データ領域２０２及び冗長領域２０３）が読み出され、ページ２０が最終有効ページであると特定され、かつ当該物理ブロック２０１に電断発生無しと判定される。
【００３７】
なお、最終有効ページが特定できた後は、ＣＰＵ１０９がテーブルＲＡＭ１０８の情報を更新する。ただし、電断が発生したページ以降に書き込みを行うと、データ化けの可能性があり、またデータの書き込み管理が正しくできない。したがって、電断による訂正不能エラーが発見された場合には、有効なデータを消去済みの他の物理ブロックにコピーした後に、テーブルＲＡＭ１０８の情報を更新する。
【００３８】
図５は、図３の変形例に係る二分探索実行部１１４の動作を示している。図５によれば、まずはステップ５０１で物理ブロック２０１の先頭ページ（ページ０）の冗長領域２０３を読み出す。次にステップ５０２で、ステップ５０１で読み出したステータス情報をもとに、ページ０が消去済み（書き込み無し）かどうかを判定する。ステップ５０２で消去済みと判定された場合には、ステップ５０３に進み、ページ０が最終有効ページであると仮特定して終了する。このようにしてページ０が最終有効ページであると早期に仮特定した後は、最終有効データ特定実行部１１５が図４に示すフローチャートどおりの動作をする。また、ステップ５０２で書き込み有りと判定された場合には、二分探索実行部１１４が図３のステップ３０１以下の動作をする。
【００３９】
図５の処理によれば、物理ブロック２０１の状態として書き込み途中又は消去済みのどちらの可能性もあり、かつ消去済みの可能性が比較的高い場合においても、最終有効ページの特定と電断に起因したエラーページの有無判定とを高速かつ正確に実施することができる。
【００４０】
図６は、図１中のフラッシュメモリ１０４の他の内部構成例を示している。図６に示した例では、４つの物理ブロックＡ，Ｂ，Ｃ，Ｄが１つの物理ユニット６０１を構成する。しかも、４つの物理ブロックＡ，Ｂ，Ｃ，Ｄの各々の８ページからなるセグメントを単位として書き込みが実行されるようになっている。４つの物理ブロックＡ，Ｂ，Ｃ，Ｄは、各々１２８ページで構成される。つまり、図６の物理ユニット６０１は、セグメント０からセグメント１５までの１６セグメントで構成される。各ページは、図２の場合と同様にデータ領域（ＤＡ）と、冗長領域（ＲＡ）とで構成される。
【００４１】
図６の物理ユニット６０１は、必ず先頭セグメントから順にデータを書き込むことが要求されるものである。図６中のハッチングは、セグメント０からセグメント９までがデータ書き込み済みであることを示している。
【００４２】
図１中のページ書き込み実行部１１３は、次のように動作する。すなわち、物理ユニット６０１に対する書き込みは、ホスト１０２からの転送バイト数にかかわらず、必ず８ページからなるセグメント単位で行う。各セグメントの書き込みステータス情報は、当該セグメント中の少なくとも先頭ページの冗長領域に記憶される。
【００４３】
具体的には、ホスト１０２からデータが転送されてきた場合、まず物理ブロックＡのページ０にデータを書き込む。その後は物理ブロックＢのページ０、物理ブロックＣのページ０、物理ブロックＤのページ０の順にデータを書き込む。各物理ブロックのページ０が書き込み済みになったら、次は物理ブロックＡのページ１に書き込みを行い、その後は物理ブロックＢのページ１、物理ブロックＣのページ１、物理ブロックＤのページ１の順にデータを書き込む。もし物理ブロックＢのページ１にデータを書き込んだ後にホスト１０２からの転送データが停止した場合には、残りのページに全ビットが“１”のデータや、元データをコピーして書き込む。
【００４４】
次に、図６の物理ユニット６０１における最終有効セグメントの特定と、電断に起因したエラーセグメントの有無判定とを説明する。ここに、最終有効セグメントとは、当該物理ユニット６０１内で最後に書かれた、書き込み有りかつ訂正不能エラー無しのセグメントをいう。
【００４５】
図７は、図６の構成を採用した場合の図１中の二分探索実行部１１４の動作を示している。ここでは、最終有効セグメントを検索する物理ユニット６０１は少なくともセグメント０への書き込みが必ずあるものとする。
【００４６】
図７によれば、まずはステップ７０１で読み出し回数を表す変数ｎの値を１に設定し、ステップ７０２において読み出しセグメントアドレスを表す変数Ｌの値を「（物理ユニット６０１の全セグメント数）／２」で決定する。次にステップ７０３でセグメントＬの先頭ページの冗長領域を読み出す。このようにして読み出したセグメントＬの先頭ページの冗長領域に格納されたデータ管理情報中の書き込みステータス情報をもとに、書き込み有り／無しの判定を行うことができる。書き込みステータス情報が“Ｌｏｗ”のビットであれば書き込み有りであり、“Ｈｉｇｈ”であれば書き込み無しである。
【００４７】
次にステップ７０４で変数ｎを１だけインクリメントし、ステップ７０５で「（物理ユニット６０１の全セグメント数）≧２ｎ」かどうかを判定する。このステップ７０５は、ステップ７０３から後述のステップ７０７又はステップ７０８までのループ動作の終了条件にあたる。
【００４８】
ステップ７０５で「Ｙｅｓ」の場合には、ステップ７０６に進む。ステップ７０６においてステップ７０３で読み出したステータス情報が書き込み有りを表す場合にはステップ７０７に進む。ステップ７０７では、変数Ｌを「（物理ユニット６０１の全セグメント数）／２ｎ」だけ増加させる。一方、ステップ７０６においてステップ７０３で読み出したステータス情報が書き込み無しを表す場合にはステップ７０８に進む。ステップ７０８では、変数Ｌを「（物理ユニット６０１の全セグメント数）／２ｎ」だけ減少させる。ステップ７０７又はステップ７０８の次は、ステップ７０３に戻って再度処理を実行する。
【００４９】
ステップ７０５で「Ｎｏ」の場合にはステップ７０９に進む。ステップ７０９において、ステップ７０３で読み出したステータス情報が書き込み有りを表す場合にはステップ７１０に進む。ステップ７１０では、セグメントＬが最終有効セグメントであると仮特定する。一方、ステップ７０９において、ステップ７０３で読み出したステータス情報が書き込み無しを表す場合にはステップ７１１に進む。ステップ７１１では、セグメント（Ｌ−１）が最終有効セグメントであると仮特定する。
【００５０】
図６に示した物理ユニット６０１の例では、（１）セグメント８、（２）セグメント１２、（３）セグメント１０、（４）セグメント９の順に各セグメントの先頭ページの冗長領域が読み出され、セグメント９が最終有効セグメントであると仮特定される。
【００５１】
図８は、図６の構成を採用した場合の図１中の最終有効データ特定実行部１１５の動作を示している。なお、二分探索実行部１１４による最終有効セグメントの仮特定が既に終わっているものとする。
【００５２】
図８によれば、まずステップ８０１において、二分探索実行部１１４が仮特定した最終有効セグメントをセグメントＮとする。次にステップ８０２において、セグメントＮの全ページの全領域（データ領域及び冗長領域）の内容を順に読み出して、ＥＣＣ回路１１１を経由後、転送ＲＡＭ１０７に一時記憶させる。次に、ステップ８０３でセグメントＮの訂正不能エラーの有無を判定する。セグメントＮの全ページにおいて訂正不能エラー無しの場合にはステップ８０４に進む。ステップ８０４ではセグメント（Ｎ＋１）の全ページの全領域を読み出す。これは、セグメント（Ｎ＋１）がエラーセグメントであるか否かを判断するために実行する。ステップ８０５ではセグメント（Ｎ＋１）の全ページのデータ領域が消去済み（書き込み無し）か否かを判定する。セグメント（Ｎ＋１）が消去済みの場合にはステップ８０６に進む。このケースは当該物理ユニット６０１に電断発生に起因したエラーセグメントが無いケースである。ステップ８０６では、セグメントＮを最終有効セグメントであると特定し、かつ当該物理ユニット６０１に電断発生無しと判定する。
【００５３】
ステップ８０５でセグメント（Ｎ＋１）のデータ領域への書き込み有りの場合にはステップ８０７に進む。セグメント（Ｎ＋１）は冗長領域が消去済みであるのに対してデータ領域への書き込みがあるので、電断による異常状態と判定することができる。ステップ８０７でセグメントＮを最終有効セグメントであると特定し、かつセグメント（Ｎ＋１）の書き込み中の電断発生有りと判定する。
【００５４】
ステップ８０３でセグメントＮの訂正不能エラー有りの場合にはステップ８０８へ進む。セグメントＮは冗長領域が消去済みであるのに対してデータ領域への書き込みがあるので、電断による異常状態と判定することができる。ただし、セグメント（Ｎ−１）にも訂正不能エラーが存在するか否かを判定する必要がある。そこで、ステップ８０８ではセグメント（Ｎ−１）の全ページの全領域を読み出す。次にステップ８０９でセグメント（Ｎ−１）の訂正不能エラー無しの場合にはステップ８１０に進む。ステップ８１０では、セグメント（Ｎ−１）を最終有効セグメントであると特定し、かつセグメントＮの書き込み中の電断発生有りと判定する。
【００５５】
ステップ８０９でセグメント（Ｎ−１）の訂正不能エラー発生有りの場合にはステップ８１１に進む。これは、セグメントＮ及びセグメント（Ｎ−１）の両セグメントにおいて訂正不能エラーが発生したケースである。このケースは電断１回では生じない異常状態のため、当該物理ユニット６０１には有効なセグメントが全く無いものとして処理を終了する。
【００５６】
図６に示した物理ユニット６０１には電断発生に起因したエラーセグメントが全く無いものとすると、セグメント９が最終有効セグメントであると仮特定された後、（ｉ）セグメント９、（ii）セグメント１０の順に各々の全ページの全領域（データ領域及び冗長領域）が読み出され、セグメント９が最終有効セグメントであると特定され、かつ当該物理ユニット６０１に電断発生無しと判定される。
【００５７】
なお、最終有効セグメントが特定できた後は、ＣＰＵ１０９がテーブルＲＡＭ１０８の情報を更新する。ただし、電断が発生したセグメント以降に書き込みを行うと、データ化けの可能性があり、またデータの書き込み管理が正しくできない。したがって、電断による訂正不能エラーが発見された場合には、有効なデータを消去済みの他の物理ユニットにコピーした後に、テーブルＲＡＭ１０８の情報を更新する。
【産業上の利用可能性】
【００５８】
以上説明してきたとおり、本発明に係るメモリコントローラは、最終有効ページ又は最終有効セグメントの特定と電断に起因したエラーページ又はエラーセグメントの有無判定とを高速かつ正確に実施でき、順次書き込み制約を持つフラッシュメモリへのアクセス制御技術として有用である。
【図面の簡単な説明】
【００５９】
【図１】本発明に係るメモリコントローラとフラッシュメモリとを搭載したメモリカードを含むシステムの構成例を示すブロック図である。
【図２】図１中のフラッシュメモリの内部構成例を示す概念図である。
【図３】図２の構成を採用した場合の図１中の二分探索実行部の動作を示すフローチャート図である。
【図４】図２の構成を採用した場合の図１中の最終有効データ特定実行部の動作を示すフローチャート図である。
【図５】図３の変形例に係るフローチャート図である。
【図６】図１中のフラッシュメモリの他の内部構成例を示す概念図である。
【図７】図６の構成を採用した場合の図１中の二分探索実行部の動作を示すフローチャート図である。
【図８】図６の構成を採用した場合の図１中の最終有効データ特定実行部の動作を示すフローチャート図である。
【符号の説明】
【００６０】
１０１  メモリカード
１０２  ホスト
１０３  メモリコントローラ
１０４  フラッシュメモリ
１０５  入出力部
１０６  ＲＡＭ制御部
１０７  転送ＲＡＭ
１０８  テーブルＲＡＭ
１０９  ＣＰＵ
１１０  フラッシュ制御部
１１１  ＥＣＣ回路
１１２  ブロック消去実行部
１１３  ページ書き込み実行部
１１４  二分探索実行部
１１５  最終有効データ特定実行部
２０１  物理ブロック
２０２  データ領域
２０３  冗長領域
６０１  物理ユニット
【図１】
0004524309.tif 000002
【図２】
0004524309.tif 000003
【図３】
0004524309.tif 000004
【図４】
0004524309.tif 000005
【図５】
0004524309.tif 000006
【図６】
0004524309.tif 000007
【図７】
0004524309.tif 000008
【図８】
0004524309.tif 000009