(57)【特許請求の範囲】
【請求項１】
メモリコントローラと複数のフラッシュメモリチップとを有する半導体記憶装置であって、
前記メモリコントローラは、前記複数のフラッシュメモリチップを制御するために前記フラッシュメモリチップに接続され、
前記複数のフラッシュメモリチップの各々は、前記メモリコントローラの指示で一括消去可能なブロックを複数含み、
前記ブロックの各々は、前記メモリコントローラが書込単位とする複数のページで構成され、
前記メモリコントローラは、前記各ブロックを、複数の前記ページから成る第１ページ集合と、複数の前記ページから成る第２ページ集合に分割する第１の分割部と、
論理アドレス空間を複数のグループに分割し、前記グループの各々を複数のラインに分割する第２の分割部と、
前記複数のフラッシュメモリチップの各々から、所定数の前記ブロックを集めてブロックユニットを複数組作成し、所定数の前記ブロックユニットを標準ブロックユニット、その標準ブロックユニット以外の前記ブロックユニットを予備ブロックユニットとして管理する管理部と、
前記標準ブロックユニットの各々に１つの前記グループを対応付け、前記標準ブロックユニットを構成する複数の前記ブロックの前記第１ページ集合内の前記ページに、対応する前記グループのデータを格納する格納部とを含み、
前記標準ブロックユニットを構成する複数の前記ブロックの前記第２ページ集合内の前記ページ中に、前記対応グループデータの更新データを記録するための未書き込みの前記ページを有し、
前記メモリコントローラは、前記半導体記憶装置が受信したライトコマンドに応じて、ライト先の論理アドレスとライトデータとを受信する受信部と、
前記論理アドレスを含む前記グループと前記ラインとを特定する特定部と、
前記複数のフラッシュメモリチップから、前記第２ページ集合に関する所定条件を満たす１つの前記フラッシュメモリチップを選択する選択部と、
前記ライトデータを、前記特定グループの前記特定ライン内のデータの更新データとして、前記選択したフラッシュメモリチップの前記第２ページ集合内の前記未書き込みページに書き込む書き込み部とを
さらに含み、
前記所定条件は、前記特定グループに対応する前記標準ブロックユニットに属する前記第２ページ集合内に少なくとも１つの前記未書き込みページを有する前記フラッシュメモリチップのうち、前記特定ライン内データの更新データの記録ページ数が最も少ない前記フラッシュメモリチップであること
を特徴とする半導体記憶装置。
【請求項２】
前記メモリコントローラは、前記所定条件を評価するために、前記グループデータの更新データに関する情報を管理するテーブルを含むことを特徴とする請求項１記載の半導体記憶装置。
【請求項３】
前記メモリコントローラは、揮発性記憶部を有し、
前記テーブルは、前記揮発性記憶部に記憶されること、
を特徴とする請求項２記載の半導体記憶装置。
【請求項４】
前記揮発性記憶部は、揮発性ＲＡＭであること、
を特徴とする請求項３記載の半導体記憶装置。
【請求項５】
前記メモリコントローラは、前記第２ページ集合のページ内の冗長部に前記更新データに関する情報を記録すること、
を特徴とする請求項２記載の半導体記憶装置。
【請求項６】
前記メモリコントローラは、前記第２ページ集合のページ内の前記冗長部を読むことによって、前記テーブルを作成すること、
を特徴とする請求項５に記載の半導体記憶装置。
【請求項７】
前記メモリコントローラは、前記第２ページ集合内に記録された前記更新データを用いて、前記対応グループデータの最新データを作成し、
前記選択部は、前記予備ブロックユニットの１つを選択し、
前記メモリコントローラは、前記予備ブロックユニットの前記第１ページ集合内に前記最新グループデータをコピーするコピー部を含み、
前記管理部は、前記予備ブロックユニットを、前記グループに対応する新しい前記標準ブロックユニットとして管理すること、
を特徴とする請求項１記載の半導体記憶装置。
【請求項８】
メモリコントローラと複数のフラッシュメモリチップとを有する半導体記憶装置の制御方法であって、
前記メモリコントローラは、前記複数のフラッシュメモリチップを制御するために前記フラッシュメモリチップに接続され、
前記複数のフラッシュメモリチップの各々は、前記メモリコントローラの指示で一括消去可能なブロックを複数含み、
前記ブロックの各々は、前記メモリコントローラが書込単位とする複数のページで構成され、
前記メモリコントローラは、前記各ブロックを、複数の前記ページから成る第１ページ集合と、複数の前記ページから成る第２ページ集合に分割する第１の分割部と、
論理アドレス空間を複数のグループに分割し、前記グループの各々を複数のラインに分割する第２の分割部と、
前記複数のフラッシュメモリチップの各々から、所定数の前記ブロックを集めてブロックユニットを複数組作成し、所定数の前記ブロックユニットを標準ブロックユニット、その標準ブロックユニット以外の前記ブロックユニットを予備ブロックユニットとして管理する管理部と、
前記標準ブロックユニットの各々に１つの前記グループを対応付ける対応付け、前記標準ブロックユニットを構成する複数の前記ブロックの前記第１ページ集合内の前記ページに、対応する前記グループのデータを格納する格納部とを含み、
前記半導体記憶装置は、前記標準ブロックユニットを構成する複数の前記ブロックの前記第２ページ集合内の前記ページ中に、前記対応グループデータの更新データを記録するための未書き込みの前記ページを有し、
前記メモリコントローラは、
前記半導体記憶装置が受信したライトコマンドに応じて、ライト先の論理アドレスとライトデータとを受信するステップと、
前記論理アドレスを含む前記グループと前記ラインとを特定するステップと、
前記複数のフラッシュメモリチップから、前記第２ページ集合に関する所定条件を満たす１つの前記フラッシュメモリチップを選択するステップと、
前記ライトデータを、前記特定グループの前記特定ライン内のデータの更新データとして、前記選択したフラッシュメモリチップの前記第２ページ集合内の前記未書き込みページに書き込むステップと、
を有し、
前記所定条件は、前記特定グループに対応する前記標準ブロックユニットに属する前記第２ページ集合内に少なくとも１つの前記未書き込みページを有する前記フラッシュメモリチップのうち、前記特定ライン内データの更新データの記録ページ数が最も少ない前記フラッシュメモリチップであること、
を特徴とする半導体記憶装置の制御方法。
【請求項９】
前記メモリコントローラは、前記所定条件を評価するために、前記グループデータの更新データに関する情報を管理するテーブルを含むことを特徴とする請求項８記載の半導体記憶装置の制御方法。
【請求項１０】
前記メモリコントローラは、揮発性記憶部を有し、
前記テーブルは、前記揮発性記憶部に記憶されること、
を特徴とする請求項９記載の半導体記憶装置の制御方法。
【請求項１１】
前記揮発性記憶部は、揮発性ＲＡＭであること、
を特徴とする請求項１０記載の半導体記憶装置の制御方法。
【請求項１２】
前記メモリコントローラは、前記第２ページ集合のページ内の冗長部に前記更新データに関する情報を記録するステップを有すること、
を特徴とする請求項９記載の半導体記憶装置の制御方法。
【請求項１３】
前記メモリコントローラは、前記第２ページ集合のページ内の前記冗長部を読むことによって、前記テーブルを作成するステップを有すること、
を特徴とする請求項１２に記載の半導体記憶装置の制御方法。
【請求項１４】
前記メモリコントローラは、前記第２ページ集合内に記録された前記更新データを用いて、前記対応グループデータの最新データを作成するステップを含み、
前記選択部は、前記予備ブロックユニットの１つを選択するステップを含み、
前記メモリコントローラは、
前記予備ブロックユニットの前記第１ページ集合内に前記最新グループデータをコピーするステップを有し、
前記管理部は、前記予備ブロックユニットを、前記グループに対応する新しい前記標準ブロックユニットとして管理すること、
を特徴とする請求項８記載の半導体記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置及び半導体記憶装置の制御方法に関し、特に、電気的に書き換え可能な不揮発性メモリを記憶媒体として使用した半導体記憶装置及び半導体記憶装置の制御方法に適用しても好適なものである。
【背景技術】
【０００２】
１つの論理ブロック内のデータを複数のフラッシュメモリ物理ブロックへと分配して格納し、各物理ブロック内の格納データを更新する際には、当該物理ブロック内の空きページにその更新データを記録して、元の格納データを無効化し、また、当該物理ブロック内の空きページが不足したならば、当該物理ブロック内の最新の更新データを当該格納データにマージしながら別の物理ブロックにコピーし、新たな空きページを確保し、以後の更新データを記録するという半導体記憶装置が知られている（例えば、特許文献１参照）。なお、マージとは、古い箇所のデータを最新のデータで置き換えて最新の状態のデータを構築することである。
【０００３】
また、複数のフラッシュメモリチップを搭載し、各チップの物理ブロックを集めて仮想ブロックを形成し、それらの読み書きを並列処理させる半導体記憶装置について、仮想ブロックを管理する方法が知られている（例えば、特許文献２参照）。
【特許文献１】米国特許７０３９７８８号公報
【特許文献２】特開２００６−１２７２３４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献２のように複数のフラッシュメモリチップを搭載し、性能を高めるためにそれらの複数チップを並列処理するように構成された半導体記憶装置において、特許文献１のように物理ブロック内に設けた空きページを利用して更新データを記録する制御方法を適用した場合、更新データの記録状態によっては複数チップの並列処理が非効率化し、ライト／リード性能が悪化するおそれがある。
【０００５】
本発明は、以上の点を考慮してなされたもので、性能悪化を抑制することができる半導体記憶装置及び半導体記憶装置の制御方法を提案しようとするものである。
【課題を解決するための手段】
【０００６】
本発明の半導体記憶装置は、メモリコントローラと複数のフラッシュメモリチップとを備える。それらのチップ内の各ブロックを、複数ページから成る第１ページ集合と、複数ページから成る第２ページ集合に分割する。そして、論理アドレス空間を複数グループに分割し、各グループを複数ラインに分割する。そして、複数チップの各々から所定数のブロックを集めてブロックユニットを複数組作成する。このうち所定数のブロックユニットを標準ブロックユニット、それ以外を予備ブロックユニットとして管理する。各標準ブロックユニットには１つのグループを対応付ける。そして、標準ブロックユニットを構成する複数ブロックの第１ページ集合内のページに対応グループのデータを格納し、第２ページ集合内のページ中にそのグループデータの更新データを記録するための未書き込みページを設ける。
【０００７】
この半導体記憶装置がライトコマンドに応じてライトアドレスとライトデータとを受信すると、メモリコントローラは、ライトアドレスを含むグループとラインとを特定し、複数チップの中から、第２ページ集合に関して所定の条件を満たすチップを１つ選択し、特定したグループ／ライン内データの更新データとして、そのライトデータを選択チップの第２ページ集合内の未書き込みページに書き込む。
【０００８】
前記の所定条件とは、特定グループに対応する標準ブロックユニットに属する第２ページ集合内に少なくとも１つの未書き込みページを有するフラッシュメモリチップのうち、特定ライン内データの更新データの記録ページ数が最も少ないフラッシュメモリチップという条件である。
【０００９】
この構成によれば、複数のフラッシュメモリチップを並列処理するように構成され、各チップの物理ブロック内の空きページを用いて更新データを記録するようにメモリ制御を行う半導体記憶装置において、当該装置外からのデータライト時に当該装置内で実施するデータマージコピー、または当該装置外へのデータリードで、並列処理されるメモリコマンドタスクがメモリチップ全体に均等に分配されることにより、それらのチップがアイドル状態にある時間が削減され、当該装置のライト／リード性能悪化が抑制されるという効果を奏する。
【発明の効果】
【００１０】
本発明によれば、性能悪化を抑制することができる半導体記憶装置及び半導体記憶装置の制御方法を提供できる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の一実施の形態について図面を参照して説明する。
【００１２】
図１は、本発明を適用した半導体記憶装置１０００の内部構造を簡単に示した図である。半導体記憶装置１０００は、ホストインタフェース１０１０、メモリコントローラ１０２０、ホストデータバッファ１０３０、テンポラリデータバッファ１０４０、複数（例えば１６枚）のフラッシュメモリチップ１１００〜１１１５で構成される。
【００１３】
ホストインタフェース１０１０は外部のホスト（図示しない。）と接続されるインタフェース機構であり、ホストからリード／ライト要求コマンドに応答して、フラッシュメモリチップ１１００〜１１１５に格納されたデータをホストに送信したり、フラッシュメモリチップ１１００〜１１１５に格納すべきライトデータをホストから受信したりする。
【００１４】
なお、ホストは、リード／ライトを要求するデータの論理的な格納位置を論理アドレス（以下、ＬＢＡ（Logical Block Address））によって指定する。この論理アドレスはフラッシュメモリチップ１１００〜１１１５をメモリコントローラ１０２０がアクセスする時に用いる物理アドレスとは異なる仮想的なアドレスである。
【００１５】
ホストインタフェース１０１０の機構およびコマンドやデータの送受信のプロトコルについては、標準的なハードディスク装置と互換性のあるインタフェース仕様（例えば、パラレルＡＴＡ、シリアルＡＴＡ、ＳＣＳＩ）に準拠することが好ましい。
【００１６】
ホストデータバッファ１０３０は、主にＲＡＭ（Random Access Memory）により構成される揮発性メモリである。ホストからのライト要求によって受信したライトデータは、フラッシュメモリチップ１１００〜１１１５に書き込まれる前に、フラッシュメモリチップに入力すべき所定量に達するまでホストデータバッファ１０３０に格納される。また、ホストからのリード要求に応答して送信すべきリードデータは、フラッシュメモリチップ１１００〜１１１５から読み出された後に、ホストに出力すべき所定量に達するまでホストデータバッファ１０３０に格納される。
【００１７】
テンポラリデータバッファ１０４０は、主にＲＡＭにより構成される揮発性メモリである。フラッシュメモリチップ１１００〜１１１５のある物理アドレスに格納されたデータを別の物理アドレスに移動する必要が生じたときに、フラッシュメモリチップ１１００〜１１１５から読み出した当該データを一時的にテンポラリデータバッファ１０４０に保持する。
【００１８】
メモリコントローラ１０２０は、ホストインタフェース１０１０、ホストデータバッファ１０３０、テンポラリデータバッファ１０４０、フラッシュメモリチップ１１００〜１１１５と接続され、それらを制御するマイクロプロセッサである。
【００１９】
メモリコントローラ１０２０は、既述したように、ホストからのリード／ライト要求コマンドの解釈、ホストとの間のデータ送受信、ホストデータバッファ１０３０やテンポラリデータバッファ１０４０へのアクセス（リード／ライト）、フラッシュメモリチップ１１００〜１１１５へのアクセス（リード／プログラム／消去）を実行する。また、メモリコントローラ１０２０は、ホストから指定されたＬＢＡがどのフラッシュメモリチップのどの物理アドレスに対応するかのアドレスマップをテーブルによって管理している。メモリコントローラ１０２０は、ＲＡＭなどの揮発性メモリを内蔵し、半導体記憶装置１０００の電源投入時にその中に当該テーブルを作成する。（どのようなテーブルかについては図９を用いて後述する。）さらに、各フラッシュメモリチップ１１００〜１１１５に格納されるデータを保障するためのＥＣＣ（エラー訂正コード）の計算や検証も実行する。なお、前記アドレスマップテーブルはメモリコントローラ１０２０内部でなくても、メモリコントローラ１０２０からアクセス可能な揮発性メモリ上であればどこに配置されてもよい。
【００２０】
図２は、フラッシュメモリチップ１１００の構成を示す図である。なお、他のフラッシュメモリチップ１１０１〜１１１５もフラッシュメモリチップ１１００と同様な構成であるため、図示及び説明を省略する。
【００２１】
フラッシュメモリチップ１１００内の不揮発性メモリ領域は、複数（例えば、４０９６個）のブロック１３００〜１３１１で構成される。格納されたデータはブロックを単位として消去される。各ブロックは、複数（例えば、６４個）のページ１４００〜１４６３で構成される。フラッシュメモリチップ１１００に格納すべきデータはページを単位としてプログラムされる。
【００２２】
図３はブロック１３０７の構成を示す図である。なお、他のブロック１３００〜１３０６，１３０８〜１３１１もブロック１３０７と同様な構成であるため、図示及び説明を省略する。
【００２３】
ブロック１３０７内の６４個のページをプログラムする順序は固定されており、１４００、１４０１、…、１４６３の順でプログラムしなければならない。また、プログラム済みのページは上書きが禁止されており、そのページが属するブロックを消去しなければ、再びそのページをプログラムすることができない。
【００２４】
図４は、ページ１４００の構成を示す図である。なお、他のページ１４０１〜１４６３もページ１４００と同様な構成であるため、図示及び説明を省略する。
【００２５】
ページ１４００は複数（例えば、４個）のセクタデータ１５１０〜１５１３（各５１２バイト）を記憶するためのデータ部と、それらのセクタデータに関する情報１５２０〜１５２３（各１６バイト）を記憶するための冗長部から成る。ページに格納されたデータはセクタを単位としてリードできる。メモリコントローラ１０２０は、これらの冗長部に、各セクタデータの内容を保障するための前記ＥＣＣや、各セクタデータのＬＢＡなどを格納する。
【００２６】
図２に示すように、フラッシュメモリチップ１１００においてブロックは０番から４０９５番までナンバリングされており、偶数番ブロックの集合と奇数番ブロックの集合はそれぞれプレイン０、プレイン１と呼ばれる。プレイン毎にページレジスタ（１２００、１２０１）が備えられており、各プレイン内のブロックに含まれるページからリードしたデータ、またはそのページにプログラムするデータはそれぞれのページレジスタに一時的に格納される。各プレインは消去／プログラム回路を独立に持っており、隣接する２ブロック（すなわち、整数Ｘ＝０〜２０４７について２Ｘ番と（２Ｘ＋１）番の２ブロック）を同時に消去することができる。また、それら隣接２ブロック内の同一番号の２ページを同時にプログラムすることができる。ただし、リード回路は共通であるため、１ページずつでしかリードできない。
【００２７】
メモリコントローラ１０２０は、各ブロックを構成する６４個のページを、データ管理上の用途として２種類に分ける。図３に示すように、前部６０ページ（１４００〜１４５９）をオリジナルデータ用ページ１４７０とし、後部４ページ（１４６０〜１４６３）を更新データ用ページ１４８０とする。なお、この分類は論理的なものであり、両者に含まれるページの物理構造に一切違いはない。
【００２８】
図５から図７は、メモリコントローラ１０２０が、ＬＢＡで示される論理空間のデータをフラッシュメモリチップ１１００〜１１１５内のブロック・ページにどのように格納するかを説明するための図である。
【００２９】
図５に示すように、まず、１９２０ページを１グループとして、ＬＢＡで示される論理空間を複数のグループに分割する。例えば、０番から１９９９番の番号を付した２０００個のグループ２０００〜２０１０に分けることとする。次に、３２ページを１ラインとして、各グループを６４個のライン２１００〜２１６３に分割する。それらのラインに０番から６３番までナンバリングする。
【００３０】
そして、図６に示すように、各ライン２１７０を２ページ単位で１６個（２２００〜２２１５）に分割する。一方、１６枚のチップそれぞれから隣接する２ブロックを選び、３２ブロックからなるブロックユニット２３００を構成する。図６では、一例として、第０チップから２ａ番と（２ａ＋１）番の２ブロック、第１チップから２ｂ番と（２ｂ＋１）番の２ブロック、第２チップから２ｃ番と（２ｃ＋１）番の２ブロック、第１５チップから２ｐ番と（２ｐ＋１）番の２ブロックを選んだ場合を示している。この２３００のようなブロックユニットを２０００組作成し、０番から１９９９番の番号を付す。これらを標準ブロックユニットと呼ぶ。
【００３１】
また、標準ブロックユニット（２３００など）に選ばれなかった隣接する２ブロックを１６枚のチップからそれぞれ選び、３２ブロックからなるブロックユニット２４００を構成する。図７では、一例として、第０チップから２ａ’番と（２ａ’＋１）番の２ブロック、第１チップから２ｂ’番と（２ｂ’＋１）番の２ブロック、第２チップから２ｃ’番と（２ｃ’＋１）番の２ブロック、第１５チップから２ｐ’番と（２ｐ’＋１）番の２ブロックを選んだ場合を示している。この２４００のようなブロックユニットをできるだけ多く作成する。これらを予備ブロックユニットと呼ぶ。もし、１６枚のチップに不良ブロックが１つも存在しなければ、予備ブロックユニット（２４００など）は４８組（最大数）作成できる。
【００３２】
次に、第Ｎグループ内のデータ格納先を第Ｎ標準ブロックユニット２３００に割り当てる。ここで、Ｎ＝０〜１９９９である。さらに、当該グループの第Ｍラインのデータ格納先を当該標準ブロックユニットの各隣接２ブロックの第Ｍページに割り当てる。ここで、Ｍ＝０〜５９である。当該ラインを１６個（２２００〜２２１５）に分割したデータの格納先をそれぞれチップ０〜１５内の前記第Ｍページに割り当てる。すなわち、標準ブロックユニット２３００の斜線部（１９２０ページ）がグループデータの格納先となる。これは図３のオリジナルデータ用ページ１４７０（６０ページ）を２ブロック分×１６チップ分集めたものに相当する。その結果、標準ブロックユニット２３００には１２８ページの未書き込み領域が残される。これは図３の更新データ用ページ１４８０（４ページ）を２ブロック分×１６チップ分集めたものに相当する。メモリコントローラ１０２０は、斜線部内のグループデータの一部が更新された時に、更新データの記録先としてこの未書き込み領域を利用する。
【００３３】
一方、予備ブロックユニット２４００は、グループのデータ格納先として割り当てられておらず、全体的に未書き込みとなっている。メモリコントローラ１０２０は、ある標準ブロックユニット２３００の未書き込み領域が更新データで満たされた場合に、予備ブロックユニット２４００を１つ選び、その標準ブロックユニット２３００内の有効データのみをその予備ブロックユニット２４００のオリジナルデータ用ページ１４７０部分へとコピーする。そして、以後はそれを新たな標準ブロックユニット２３００として利用する。その後、コピー元の標準ブロックユニット２３００は消去されて新たな予備ブロックユニット２４００としてリサイクルされる。
【００３４】
図８は、標準ブロックユニット２３００内に格納されたグループデータの一部が更新された時に、更新データが記録されていく状況を示した図である。更新対象のグループデータはページ単位で管理する。更新対象グループデータのページアドレスをオリジナルアドレスと呼ぶ。第Ｘライン内で第Ｙチップ上のプレインＺのページに格納されたデータのオリジナルアドレスＷは、Ｗ＝３２Ｘ＋２Ｙ＋Ｚで表される。その取り得る値の範囲は０〜１２７である。ここで、整数Ｘ＝０〜５９、整数Ｙ＝０〜１５、整数Ｚ＝０又は１である。
【００３５】
図９は、グループデータに割り当てられた標準ブロックユニット２３００を構成する１６組の隣接２ブロックのアドレスを管理するブロックマップテーブル３２００と、標準ブロックユニット２３００内の未書き込み領域に記録された更新データを管理する更新データマップテーブル３３００を示した図である。両テーブルともメモリコントローラ１０２０内に含まれる揮発性ＲＡＭ上に構成される。
【００３６】
ブロックマップテーブル３２００は、隣接２ブロックのアドレスを１６枚のチップ（第０〜１５）毎に記録するため、チップ番号３２０１とブロック番号３２０２の対応表として構成されている。メモリコントローラ１０２０は、このブロックマップテーブル３２００を、標準ブロックユニット２３００の総数、つまり２０００個保持する。
【００３７】
更新データマップテーブル３３００は、未書き込み領域内の更新先ページをインデックスとして、対応するオリジナルアドレスを管理するように構成されている。メモリコントローラ１０２０は、この更新データマップテーブル３３００を、標準ブロックユニット２３００の総数、つまり２０００個保持する。
【００３８】
更新データマップテーブル３３００は、１２８個存在する更新先ページを表すために、ページ番号３３０１、チップ番号３３０２、プレイン番号３３０３を用いる。そして、装置外部からのライト要求コマンドによって当該グループデータ内に更新データが発生する度に、その更新データを記録した更新先ページについて、更新対象セクタ３３０４、オリジナルアドレス３３０５、更新先ページ状態３３０６を記録する。
【００３９】
更新対象セクタ３３０４は、更新先ページ内に含まれる４つのセクタ（第０〜３セクタ）にそれぞれ更新データが格納されているか否かを０と１で示す。１は格納、０は非格納を意味する。例えば、００１０は第２セクタのみ更新データとして格納していることを示す。オリジナルアドレス３３０５は、上式で示したＷの値を示す。更新先ページ状態３３０６は、更新先ページが未書き込みならば「空き」、最新の更新データを記録していれば「有効」、古い更新データを記録していれば「無効」を示す。更新データが次々と記録されるにつれて、更新先ページ状態３３０６が「空き」の更新先ページが消費されていく。また、同じオリジナルアドレスのセクタが２回以上更新されると、最新でない更新データを記録している更新先ページの更新先ページ状態３３０６は「無効」になる。
【００４０】
図８において、例えば、Ｗ＝１のページの第２セクタデータＡ０がＡ１に更新された時には、未書き込み領域内の１ページを選び、（ここでは、第６０ページの第０チップのプレイン０とする。）その第２セクタにＡ１をプログラムする。Ｗ＝１のページで更新されていない３セクタについては記録する必要がないため、Ａ１以外の３セクタはプログラムしない。これにより、Ａ１を記録している更新先ページの状態３３０６「有効」になる。
【００４１】
例えば、Ｗ＝３６のページの第１、第２セクタデータＢ０、Ｃ０がそれぞれＢ１、Ｃ１に更新された時には、未書き込み領域内の１ページを選び、（ここでは、第６０ページの第０チップのプレイン１とする。）その第１、第２セクタにＢ１、Ｃ１をプログラムする。Ｗ＝３６のページで更新されていない２セクタについては記録する必要がないため、Ｂ１、Ｃ１以外の２セクタはプログラムしない。これにより、Ｂ１、Ｃ１を記録している更新先ページの状態３３０６は「有効」になる。
【００４２】
図８には、同様に、Ｗ＝３２のページの第２セクタＤ０がＤ１に更新され、Ｗ＝３５のページの第０、第１セクタデータＥ０、Ｆ０がそれぞれＥ１、Ｆ１に更新され、Ｗ＝３０のページの第２、第３セクタデータＧ０、Ｈ０がそれぞれＧ１、Ｈ１に更新される様子が示されている。
【００４３】
Ｗ＝３６のページの第１、第２セクタデータＢ１、Ｃ１がそれぞれＢ２、Ｃ２に更新された時には、未書き込み領域内の１ページを選び、（ここでは、第６０ページの第２チップのプレイン１とする。）その第１、第２セクタにＢ２、Ｃ２をプログラムする。これにより、Ｂ２、Ｃ２を記録している更新先ページの状態３３０６は「有効」３３１０になり、Ｂ１、Ｃ１を記録している更新先ページの状態３３０６は「無効」３３１１になる。
【００４４】
なお、図４に示したように、フラッシュメモリチップの各ページには冗長部１５２０〜１５２３が含まれている。更新先ページをプログラムする際には、対応するオリジナルアドレスＷを冗長部１５２０〜１５２３内に含ませてプログラムする。その情報は半導体記憶装置１０００の起動時にメモリコントローラ１０２０によって読み出され、更新データマップテーブル３３００を作成するために使用される。
【００４５】
図１０の上側に示す図は、標準ブロックユニット２３００において、未書き込みページが無くなるまで更新データが記録された状況を示した図である。図１０中、オリジナルデータ用ページ１４７０内の「Ｘ」は更新されたセクタデータを表し、更新データ用ページ１４８０内の「Ｘ」は最新ではない更新セクタデータを表し、更新データ用ページ１４８０内の「Ｏ」は最新の更新セクタデータを表す。この標準ブロックユニット２３００へ割り当てられているグループデータにさらなる更新データが発生した場合には、それを記録する場所がない。そこで、メモリコントローラ１０２０は、予備ブロックユニット２４００を用いて新たな記録場所を確保する。すなわち、標準ブロックユニット２３００のオリジナルデータ用ページ１４７０内のＸで示された各データに対応する最新の更新データを、更新データマップテーブル３３００を参照することによって、更新データ用ページ１４８０内のＯで示されたデータから見つけ、そのＸの部分を「Ｏ」で置き換えたページデータを作り、予備ブロックユニット２４００の同一ページアドレスにコピーする。以下、この手続きをマージコピーと呼ぶ。また、Ｘの部分を含まない未更新ページはそのまま予備ブロックユニット２４００の同一ページアドレスにコピーする。これらのコピーをグループデータの全ページに渡って実施する。
【００４６】
図１０の下側に示す図は、予備ブロックユニット２４００において、グループデータの全ページコピーが完了した状況を示した図である。同図中、オリジナルデータ用ページ１４７０内の「Ｏ」で示されたセクタは最新の更新データが格納されていることを表す。このとき、更新データ用ページ１４８０は全て未書き込みの状態である。ここが当該グループデータの新たな更新データの記録先となる。
【００４７】
図１１は、以上のコピー手続きによる、当該グループのブロックマップテーブルと更新データマップテーブルの書き換え後の状態を示した図である。ブロックマップテーブル４２００では、各チップについて、隣接２ブロックのアドレス４２０２を、予備ブロックユニット２４００を構成するそれぞれのチップの隣接２ブロックのアドレスに書き換える。更新データマップテーブル４３００では、１２８個のエントリ全体について、更新対象セクタ４３０４とオリジナルアドレス４３０５の項目をクリアし、更新先ページ状態４３０６を「空き」に設定する。
【００４８】
図１２〜図１５は、フラッシュメモリチップ１１００〜１１１５内のあるページにおいて、上で述べたマージコピー処理が実行される時の詳細な手順を例示した図である。
【００４９】
本例では、第１１チップの隣接２ブロック（番号は２xおよび２x＋１）の第２ページに格納された２つのページデータ｛Ｊ０、Ｋ０、Ｌ０、Ｍ０｝および｛Ｓ０、Ｔ０、Ｕ０、Ｖ０｝において、セクタデータＫ０、Ｌ０の最新の更新データＫ１、Ｌ１が第３チップの第２w＋１ブロックの第６０ページに記録され、セクタデータＵ０、Ｖ０の最新の更新データＵ１、Ｖ１が第７チップの第２ｚブロックの第６０ページに記録されている状態から、これら２ページを第１１チップの別の隣接２ブロック（番号は２ｙおよび２ｙ＋１）の第２ページへとマージコピーする場合を示す。
【００５０】
まず、図１２のように、メモリコントローラ１０２０が、Ｋ１、Ｌ１を含む第３チップのページ５１１０、およびＵ１、Ｖ１を含む第７チップのページ５１２０に対して“Ｒｅａｄ”というフラッシュメモリコマンドを発行すると、これら２ページのデータがそれぞれチップ内部のページレジスタ１２０１、１２００へ読み出され、そこから必要なセクタデータＫ１、Ｌ１、Ｕ１、Ｖ１がテンポラリデータバッファ１０４０へと転送される。  
【００５１】
次に、図１３のように、メモリコントローラ１０２０が、｛Ｊ０、Ｋ０、Ｌ０、Ｍ０｝を格納したページ５１３０、および｛Ｓ０、Ｔ０、Ｕ０、Ｖ０｝を格納したページ５１４０に対して“Ｒｅａｄ＿ｆｏｒ＿Ｃｏｐｙ＿Ｂａｃｋ”というフラッシュメモリコマンドを発行すると、これら２ページのデータがそれぞれチップ内部のページレジスタ１２００、１２０１へと順に読み出される。
【００５２】
次に、図１４のように、メモリコントローラ１０２０が、ページレジスタ１２００、１２０１に対して“Ｒａｎｄｏｍ＿Ｄａｔａ＿Ｉｎｐｕｔ”というフラッシュメモリコマンドを発行すると、テンポラリデータバッファ１０４０内のセクタデータＫ１、Ｌ１（５１５０）がページレジスタ１２００内のＫ０、Ｌ０に上書きされ、続いてセクタデータＵ１、Ｖ１（５１６０）がページレジスタ１２０１内のＵ０、Ｖ０に上書きされる。このようにして各ページデータに更新データがマージされる。
【００５３】
最後に、図１５のように、メモリコントローラ１０２０が、第２ｙブロックおよび第２ｙ＋１ブロックそれぞれの第２ページ（５１７０および５１８０）に対して“Ｔｗｏ−Ｐｌａｎｅ＿Ｃｏｐｙ−Ｂａｃｋ＿Ｐｒｏｇｒａｍ”というフラッシュメモリコマンドを発行すると、ページレジスタ１２００、１２０１内のページデータ（つまりマージの結果）が当該それぞれの第２ページへと同時にプログラムされる。
【００５４】
このように、メモリコントローラ１０２０はページレジスタ１２００、１２０１を利用したフラッシュメモリコマンドを使用することにより、テンポラリデータバッファ１０４０とチップ間のデータ転送を最低限に抑えることができる。この方法はマージコピー処理の中でデータ転送時間を最小化するため、半導体記憶装置１０００に性能向上をもたらす効果がある。
【００５５】
ちなみに、グループデータ内で全く更新がないページを標準ブロックユニット２３００から予備ブロックユニット２４００へとコピーする場合には、図１３、図１５に示した２つの手順のみが行われる。
【００５６】
メモリコントローラ１０２０は、半導体記憶装置１０００に搭載された１６枚のフラッシュメモリチップに対して並列的にフラッシュメモリコマンドを発行して、以上に述べたコピー処理を実行する。このとき問題となるのは、実行すべきコマンドの量（コマンドタスク）があるチップに偏ってしまうと、その他のチップにアイドル状態が生じることである。ブロックユニット間のコピー全体にかかる処理時間はアイドル状態のチップ数およびその時間が多いほど長くなるため、このようなコマンドタスクの偏りは半導体記憶装置１０００に性能悪化をもたらす。本コピー処理は半導体記憶装置１０００へのライト要求コマンドに基づいて実行されるものであるため、これはすなわちライト性能の悪化となる。この問題を改善するためには、コマンドタスクがチップ全体にわたって均等に配分される必要がある。
【００５７】
以下、半導体記憶装置１０００における本問題の分析について図１６〜図１８を用いて示し、それに対する解決方法について図１９を用いて述べる。
【００５８】
図１６は、標準ブロックユニット内の第Ｎ（ここで、Ｎ＝０〜５９）ページのマージコピーを実施する状況で、コマンドタスクが第０チップに偏ってしまう例を示している。図中、第Ｎページ内のＸは更新されたセクタデータを表し、更新データ用ページ１４８０内のＯは第Ｎページ内にオリジナルアドレスを持つ最新の更新データを表す。この図は、第０チップには“Ｒｅａｄ”コマンド（図１２参照）で読み出すべき更新データを含むページが７ページも存在するが、その他のチップにはそのようなページが２、３ページしか存在しないような状況を示している。
【００５９】
図１７は、上記第Ｎページのマージコピーを実施するときの各チップのコマンドタスクを時系列に示したものである。ここで、時間６２１０は更新データ用ページ１４８０から最新の更新データをテンポラリデータバッファ１０４０へと読み出すための処理時間である。このうち、６２１１などのように白抜きで示した時間（約２５マイクロ秒）はページレジスタへのデータ読み出し時間である。６２１２などのように斜線で示した時間はテンポラリデータバッファ１０４０へのデータ転送時間である。これらは１セクタあたり約１３マイクロ秒である。時間６２２０は標準ブロックユニットの第Ｎページのページデータをページレジスタに読み出すための処理時間（約５０マイクロ秒）である。このうち、時間６２２１はプレイン０側ページのデータ読み出し時間（約２５マイクロ秒）、時間６２２２はプレイン１側ページのデータ読み出し時間（約２５マイクロ秒）である。時間６２３０はテンポラリデータバッファ１０４０内の更新データをページレジスタに転送してページデータにマージするための処理時間である。このうち、時間６２３１はプレイン０側のページレジスタへのデータ転送時間である。時間６２３２はプレイン１側のページレジスタへのデータ転送時間である。これらはともに１セクタあたり約１３マイクロ秒である。時間６２４０はページレジスタ上のマージ結果を予備ブロックユニットの第Ｎページへ書き込むための処理時間（約２００マイクロ秒）である。このように、第０チップ内の更新データをテンポラリデータバッファ１０４０へと読み出すための処理時間が、他のチップのそれよりも長いことで、他のチップにアイドル状態が生じている。これがライト性能悪化の原因となる。したがって、同一ライン内にオリジナルアドレスを持つような更新データの記録先がもしチップ全体に均等に分配されていれば、時間６２１０は短縮し、ライト性能悪化を抑制することができる。
【００６０】
なお、上例のように、標準ブロックユニット内の特定ページ（すなわち、論理アドレス空間内の特定ライン）内のセクタデータの最新の更新データがあるチップに偏って記録されていると、リード性能悪化の原因にもなることも示しておく。
【００６１】
図１８は、図１６のように記録された状態で、第Ｎライン全体（３２ページ）のリード要求コマンドを半導体記憶装置１０００に発行した場合に、各チップのコマンドタスクを時系列に示したものである。ここで、時間６３１０は更新データ用ページ１４８０から最新の更新データをホストデータバッファ１０３０へと読み出すための処理時間である。このうち、６３１１などのように白抜きで示した時間（約２５マイクロ秒）はページレジスタへのデータ読み出し時間である。６３１２などのように斜線で示した時間はホストデータバッファ１０３０へのデータ転送時間である。これらは１セクタあたり約１３マイクロ秒である。時間６３２０は標準ブロックユニットの第Ｎページのページデータ（ただし、更新されたセクタデータを除く）をホストデータバッファ１０３０へと読み出すための処理時間である。このうち、時間６３２１はプレイン０側のページレジスタへのデータ読み出し時間（約２５マイクロ秒）、時間６３２２はそこからホストデータバッファ１０３０へのデータ転送時間である。時間６３２３はプレイン１側のページレジスタへのデータ読み出し時間（約２５マイクロ秒）である。時間６３２４はそこからホストデータバッファ１０３０へのデータ転送時間である。時間６３２２および時間６３２４は１セクタあたり約１３マイクロ秒である。このように、第０チップ内の更新データをホストデータバッファ１０３０へと読み出すための処理時間が、他のチップのそれよりも長いことで、他のチップにアイドル状態が生じている。これがリード性能悪化の原因にもなっている。したがって、同一ライン内にオリジナルアドレスを持つような更新データの記録先がもしチップ全体に均等に分配されていれば、時間６３１０は短縮し、リード性能悪化も抑制することができる。
【００６２】
図１９は、メモリコントローラ１０２０が実行する処理の手順を示したものである。この処理は、半導体記憶装置１０００がライト要求コマンドを受けて、そのライトデータを更新データ用ページ１４８０に更新データとして記録する際に行われる。
【００６３】
メモリコントローラ１０２０は、ライト要求コマンドを通じて、ライト先ＬＢＡとライトデータ（すなわち、更新データ）を受信する（７０１０）。そして、そのＬＢＡの値から、数値計算によって、その更新元となるページを格納しているグループ番号とライン番号を特定する（７０２０）。次に、そのグループの更新データマップテーブル（３３００や４３００など）で「有効」状態のエントリ全体を参照し、１６枚のチップが、そのライン内にオリジナルアドレスを持つ有効な更新データをそれぞれ何ページ記録しているかを調査する（７０３０）。
【００６４】
次に、整数Ｘを１に初期化する（７０４０）。ステップ７０３０の調査結果において、その記録ページ数がＸ番目に小さいチップを選択する（７０５０）。そのグループの更新データマップテーブルで「空き」状態のエントリを検索し、選択したチップ内に未記録の更新データ用ページが少なくとも１つあるかを判定する（７０６０）。もし未記録ページがないならば（７０６０：いいえ）、整数Ｘに１を加算して（７０７０）、ステップ７０５０に戻る。
【００６５】
ステップ７０６０で、もし未記録ページがあるならば（７０６０：はい）、そのグループのブロックマップテーブル（３２００や４２００など）を参照して、選択したチップのブロック番号を特定し、そのブロック内の未記録ページを１つ選択し、そこに今回の更新データを記録（プログラム）する（７０８０）。
【００６６】
最後に、そのグループの更新データマップテーブルにおいて、今回記録したページのエントリを「空き」状態から「有効」状態に設定し、更新対象セクタやオリジナルアドレスといった必要な情報を登録する（７０９０）。以上で、処理を終了する。
【００６７】
この実施の形態によれば、同一ライン内にオリジナルアドレスを持つような更新データの記録先をチップ全体に均等に分配することができる。その結果、データのライト／リード要求コマンドの処理中に並列動作する複数のフラッシュメモリチップにおいて、フラッシュメモリコマンドの待機状態にある時間（アイドル時間）が削減される。したがって、半導体記憶装置１０００のライト／リード性能悪化を抑制することができる。
【００６８】
なお、以上の説明においては、装置外部からのライト要求コマンドによって受信した更新データのセクタサイズが１ページ内に収まるような場合を示してきたが、更新データのセクタサイズが複数ページに渡るような場合でも、それをページ単位（４セクタ単位）に分割し、個々の更新データについて上述のデータ更新処理を実施することが可能であり、本発明の効果を享受することは明白である。
【００６９】
また、上記実施の形態では、本発明を、メモリコントローラ１０２０と複数のフラッシュメモリチップ１１００〜１１１５とを有する半導体記憶装置１０００に適用している。
【００７０】
そのメモリコントローラ１０２０は、複数のフラッシュメモリチップ１１００〜１１１５を制御するためにフラッシュメモリチップ１１００〜１１１５にそれぞれ接続され、複数のフラッシュメモリチップ１１００〜１１１５の各々は、メモリコントローラ１０２０の指示で一括消去可能なブロック１３００〜１３１１を複数含み、ブロック１３００〜１３１１の各々は、メモリコントローラ１０２０が書込単位とする複数のページ１４００〜１４６３で構成されている。
【００７１】
また、メモリコントローラ１０２０は、各ブロック１３００〜１３１１を、複数のページから成る第１ページ集合（ページ１４００〜１４５９）と、複数のページから成る第２ページ集合（ページ１４６０〜１４６３）に分割して図３に示す状態にする第１の分割部と、論理アドレス空間を複数のグループ２０００〜２０１０（グループＮｏ．０〜Ｎｏ．１９９９の２０００個のグループ）に分割し、グループ０００〜２０１０の各々を複数のライン２１００〜２１６３に分割して図４に示す状態にする第２の分割部と、複数のフラッシュメモリチップ１１００〜１１１５の各々から、所定数のブロックを集めてブロックユニットを複数組作成し、所定数のブロックユニットを標準ブロックユニット２３００、その標準ブロックユニット以外のブロックユニットを予備ブロックユニット２４００として管理する管理部（図６，図７）と、標準ブロックユニット２３００の各々に１つのグループを対応付け、標準ブロックユニット２３００を構成する複数のブロックの第１ページ集合内のページに対応するグループのデータを格納する格納部（図９のテーブル３２００，３３００）を含んでいる。
【００７２】
そして、半導体記憶装置１０００は、標準ブロックユニット２３００を構成する複数のブロックの第２ページ集合内のページ中に、対応グループデータの更新データを記録するための未書き込みのページを有するものに適用した場合で説明したが、本発明が上記形態に限られるものではない。
【００７３】
また、メモリコントローラ１０２０は、半導体記憶装置１０００が例えばホストから受信したライトコマンドに応じて、ライト先の論理アドレスとライトデータとを受信し、論理アドレスを含むグループとラインとを特定し、複数のフラッシュメモリチップ１１００〜１１１５から、第２ページ集合に関する所定条件を満たす１つのフラッシュメモリチップを選択し、ライトデータを、特定グループの特定ライン内のデータの更新データとして、選択したフラッシュメモリチップの第２ページ集合内の未書き込みページに書き込む制御（図１９）を行なう場合で説明したが、本発明は上記形態に限られるものではない。
【００７４】
さらに、記メモリコントローラ１０２０は、所定条件を評価するために、グループデータの更新データに関する情報を管理するテーブル３２００，３３００を含み、これらのテーブル３２００，３３００は、メモリコントローラ１０２０内の揮発性ＲＡＭに作成される場合で説明したが、これに限るものではない。
【産業上の利用可能性】
【００７５】
本発明は、半導体記憶装置及び半導体記憶装置の制御方法に広く適用することができる。
【図面の簡単な説明】
【００７６】
【図１】本発明に係わる半導体記憶装置の内部構造を簡単に示した図である。
【図２】本発明に係わるフラッシュメモリチップの構成を示す図である。
【図３】本発明に係わるブロックの構成を示す図である
【図４】本発明に係わるページ構成を示す図である。
【図５】本発明に係わる半導体記憶装置の論理アドレス空間をフラッシュメモリの物理アドレス空間へ配置する方法を示す図の１つである。
【図６】本発明に係わる半導体記憶装置の論理アドレス空間をフラッシュメモリの物理アドレス空間へ配置する方法を示す図の１つである。
【図７】本発明に係わる半導体記憶装置の論理アドレス空間をフラッシュメモリの物理アドレス空間へ配置する方法を示す図の１つである。
【図８】本発明に係わる標準ブロックユニット内の更新データ用ページに更新データを記録する方法を説明するための図である。
【図９】本発明に係わる標準ブロックユニット内の更新データ用ページに更新データを記録するときに、更新データを記録する状態を管理するテーブルを示す図である。
【図１０】本発明に係わる標準ブロックユニットに記録された更新データをグループデータにマージし、それを予備ブロックにコピーする方法を説明するための図である。
【図１１】本発明に係わる準ブロックユニットに記録された更新データをグループデータにマージし、それを予備ブロックにコピーするときに、予備ブロックにコピーする状態を管理するテーブルを示す図である。
【図１２】本発明に係わる更新データのマージコピー処理において、フラッシュメモリチップに施されるリードコマンドの手続を示す図である。
【図１３】本発明に係わる本発明に係わる更新データのマージコピー処理において、フラッシュメモリチップに施されるリードフォーコピーバックコマンドの手続を示す図である。
【図１４】本発明に係わる本発明に係わる更新データのマージコピー処理において、フラッシュメモリチップに施されるランダムデータインプットコマンドの手続を示す図である。
【図１５】本発明に係わる本発明に係わる更新データのマージコピー処理において、フラッシュメモリチップに施されるツープレインコピーバックプログラムコマンドの手続を示す図である。
【図１６】本発明に係わる更新データの偏った記録状態によって発生するマージコピー性能の問題、リード性能の問題を説明するための図である。
【図１７】本発明に係わる更新データの偏った記録状態によって発生するマージコピー性能の問題、リード性能の問題を説明するための図である。
【図１８】本発明に係わる更新データの偏った記録状態によって発生するマージコピー性能の問題、リード性能の問題を説明するための図である。
【図１９】本発明に係わるメモリコントローラが実行する更新データ記録処理を示すフローチャートである。
【符号の説明】
【００７７】
１０００…半導体記憶装置、１０２０…メモリコントローラ、１０３０…ホストデータバッファ、１０４０…テンポラリデータバッファ、１１００〜１１１５…フラッシュメモリチップ。
【図１】
0005087347.tif 000002
【図２】
0005087347.tif 000003
【図３】
0005087347.tif 000004
【図４】
0005087347.tif 000005
【図５】
0005087347.tif 000006
【図６】
0005087347.tif 000007
【図７】
0005087347.tif 000008
【図８】
0005087347.tif 000009
【図９】
0005087347.tif 000010
【図１０】
0005087347.tif 000011
【図１１】
0005087347.tif 000012
【図１２】
0005087347.tif 000013
【図１３】
0005087347.tif 000014
【図１４】
0005087347.tif 000015
【図１５】
0005087347.tif 000016
【図１６】
0005087347.tif 000017
【図１７】
0005087347.tif 000018
【図１８】
0005087347.tif 000019
【図１９】
0005087347.tif 000020