(57)【要約】【課題】消去間隔を長くすることで、寿命を延長する。【解決手段】データ消去の単位であるブロックを複数個有する不揮発性メモリ１０を含むメモリシステム１の制御方法であって、各ブロックのデータが消去された消去時期を計測する工程と、少なくとも外部から供給されるデータを、空き状態でありかつ消去時期が最も古い第１のブロックに書き込む工程とを含む。【選択図】      図４
2010108522.tif 000002
【特許請求の範囲】
【請求項１】
データ消去の単位であるブロックを複数個有する不揮発性メモリを含むメモリシステムの制御方法であって、
各ブロックのデータが消去された消去時期を計測する工程と、
少なくとも外部から供給されるデータを、空き状態でありかつ消去時期が最も古い第１のブロックに書き込む工程と、
を具備することを特徴とするメモリシステムの制御方法。
【請求項２】
ブロックごとに、空き状態或いは使用中状態であるかを示す状態値と前記消去時期とを対応付けるブロックテーブルを作成する工程と、
前記ブロックテーブルの情報に基づいて、前記第１のブロックを選択する工程と、
をさらに具備することを特徴とする請求項１に記載のメモリシステムの制御方法。
【請求項３】
データ消去の単位であるブロックを複数個有する不揮発性メモリを含むメモリシステムの制御方法であって、
各ブロックのデータが消去された消去時期を計測する工程と、
各ブロックの消去回数をカウントする工程と、
ブロックごとに、空き状態或いは使用中状態であるかを示す状態値と前記消去時期と前記消去回数とを対応付けるブロックテーブルを生成する工程と、
前記ブロックテーブルの情報に基づいて、空き状態かつ消去時期が最も古い方から一定数のブロックのうちで、消去回数が最も少ない第１のブロックを選択する工程と、
少なくとも外部から供給されるデータを、前記第１のブロックに書き込む工程と、
を具備することを特徴とするメモリシステムの制御方法。
【請求項４】
データ消去の単位であるブロックを複数個有する不揮発性メモリを含むメモリシステムの制御方法であって、
各ブロックのデータが消去された消去時期を計測する工程と、
各ブロックの消去回数をカウントする工程と、
ブロックごとに、空き状態或いは使用中状態であるかを示す状態値と前記消去時期と前記消去回数とを対応付けるブロックテーブルを生成する工程と、
前記ブロックテーブルの情報に基づいて、空き状態かつ消去時期が最も古い方から一定割合数のブロックのうちで、消去回数が最も少ない第１のブロックを選択する工程と、
少なくとも外部から供給されるデータを、前記第１のブロックに書き込む工程と、
を具備することを特徴とするメモリシステムの制御方法。
【請求項５】
データ消去の単位であるブロックを複数個有する不揮発性メモリを含むメモリシステムの制御方法であって、
各ブロックのデータが消去された消去時期を計測する工程と、
各ブロックの消去回数をカウントする工程と、
ブロックごとに、空き状態或いは使用中状態であるかを示す状態値と前記消去時期と前記消去回数とを対応付けるブロックテーブルを生成する工程と、
前記ブロックテーブルの情報に基づいて、空き状態かつ消去時期が一定時期より古いブロックのうちで、消去回数が最も少ない第１のブロックを選択する工程と、
少なくとも外部から供給されるデータを、前記第１のブロックに書き込む工程と、
を具備することを特徴とするメモリシステムの制御方法。
【請求項６】
前記ブロックテーブルの情報に基づいて、使用中状態かつ消去時期が最も古い方から一定数のブロックのうちで、消去回数が最も少ない第２のブロックを選択する工程と、
前記ブロックテーブルの情報に基づいて、空き状態かつ消去時期が最も古い方から一定数のブロックのうちで、消去回数が最も多い第３のブロックを選択する工程と、
前記第２のブロックと前記第３のブロックとの消去回数の差を算出する工程と、
この差が閾値を越えた場合に、前記第２のブロックのデータを前記第３のブロックに入れ替える工程と、
をさらに具備することを特徴とする請求項２乃至５のいずれかに記載のメモリシステムの制御方法。
【請求項７】
前記ブロックテーブルの情報に基づいて、使用中状態かつ消去時期が最も古い方から一定割合数のブロックのうちで、消去回数が最も少ない第２のブロックを選択する工程と、
前記ブロックテーブルの情報に基づいて、空き状態かつ消去時期が最も古い方から一定割合数のブロックのうちで、消去回数が最も多い第３のブロックを選択する工程と、
前記第２のブロックと前記第３のブロックとの消去回数の差を算出する工程と、
この差が閾値を越えた場合に、前記第２のブロックのデータを前記第３のブロックに入れ替える工程と、
をさらに具備することを特徴とする請求項２乃至５のいずれかに記載のメモリシステムの制御方法。
【請求項８】
前記ブロックテーブルの情報に基づいて、使用中状態かつ消去時期が一定時期より古いブロックのうちで、消去回数が最も少ない第２のブロックを選択する工程と、
前記ブロックテーブルの情報に基づいて、空き状態かつ消去時期が一定時期より古いブロックのうちで、消去回数が最も多い第３のブロックを選択する工程と、
前記第２のブロックと前記第３のブロックとの消去回数の差を算出する工程と、
この差が閾値を越えた場合に、前記第２のブロックのデータを前記第３のブロックに入れ替える工程と、
をさらに具備することを特徴とする請求項２乃至５のいずれかに記載のメモリシステムの制御方法。
【請求項９】
前記不揮発性メモリに対して消去間隔に応じた負荷の程度を管理し、かつこの負荷の程度を示す負荷集中度を生成する工程と、
前記負荷集中度が閾値を超えた場合に、使用中状態である第２のブロックのデータを、空き状態である第３のブロックに入れ替える工程と、
をさらに具備することを特徴とする請求項２乃至５のいずれかに記載のメモリシステムの制御方法。
【請求項１０】
前記ブロックテーブルの情報に基づいて、前記第２のブロックを選択する工程と、
前記ブロックテーブルの情報に基づいて、前記第３のブロックを選択する工程と、
をさらに具備し、
前記第２のブロックは、使用中状態かつ消去時期が最も古い方から一定数のブロックのうちで、消去回数が最も少ないブロックであり、
前記第３のブロックは、空き状態かつ消去時期が最も古い方から一定数のブロックのうちで、消去回数が最も多いブロックであることを特徴とする請求項９に記載のメモリシステムの制御方法。
【請求項１１】
前記ブロックテーブルの情報に基づいて、前記第２のブロックを選択する工程と、
前記ブロックテーブルの情報に基づいて、前記第３のブロックを選択する工程と、
をさらに具備し、
前記第２のブロックは、使用中状態かつ消去時期が最も古い方から一定割合数のブロックのうちで、消去回数が最も少ないブロックであり、
前記第３のブロックは、空き状態かつ消去時期が最も古い方から一定割合数のブロックのうちで、消去回数が最も多いブロックであることを特徴とする請求項９に記載のメモリシステムの制御方法。
【請求項１２】
前記ブロックテーブルの情報に基づいて、前記第２のブロックを選択する工程と、
前記ブロックテーブルの情報に基づいて、前記第３のブロックを選択する工程と、
をさらに具備し、
前記第２のブロックは、使用中状態かつ消去時期が一定時期より古いブロックのうちで、消去回数が最も少ないブロックであり、
前記第３のブロックは、空き状態かつ消去時期が一定時期より古いブロックのうちで、消去回数が最も多いブロックであることを特徴とする請求項９に記載のメモリシステムの制御方法。
【請求項１３】
前記負荷集中度を生成する工程は、複数の消去時期とこの消去時期ごとに設定された加算値とを対応付ける加算値テーブルを用いて、空き状態から使用中状態に更新されるごとに、当該ブロックの消去時期に対応する加算値を加算する工程を含み、
前記負荷集中度は、合計加算値に対応することを特徴とする請求項９乃至１２のいずれかに記載のメモリシステムの制御方法。
【請求項１４】
前記加算する工程は、使用中状態から空き状態に更新されるごとに、当該ブロックの消去時期に対応する加算値をさらに加算することを特徴とする請求項１３に記載のメモリシステムの制御方法。
【請求項１５】
前記負荷集中度に基づいて、入れ替え処理の回数を制限し、かつ前記入れ替え処理を実行するか否かを示す論理値を生成する工程をさらに具備し、
前記入れ替える工程は、前記論理値に基づいて、前記入れ替え処理を実行するか否かを決定することを特徴とする請求項９乃至１４のいずれかに記載のメモリシステムの制御方法。
【請求項１６】
前記制限する工程は、乱数を生成する工程と、前記乱数が閾値より小さいか否かを判定する工程と、この判定結果に基づいて前記論理値を生成する工程とを含むことを特徴とする請求項１５に記載のメモリシステムの制御方法。
【請求項１７】
前記計測する工程は、全てのブロックにおいて実行される消去回数をカウントし、
前記消去時期は、通算消去回数に対応することを特徴とする請求項１乃至１６のいずれかに記載のメモリシステムの制御方法。
【請求項１８】
前記計測する工程は、各ブロックが消去された時刻を計測し、
前記消去時期は、前記時刻に対応することを特徴とする請求項１乃至１６のいずれかに記載のメモリシステムの制御方法。
【請求項１９】
前記計測する工程は、各ブロックが消去されたときの当該メモリシステムの通電時間を計測し、
前記消去時期は、前記通電時間に対応することを特徴とする請求項１乃至１６のいずれかに記載のメモリシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステムの制御方法に係り、例えばＮＡＮＤ型フラッシュメモリを備えたメモリシステムの制御方法に関する。
【背景技術】
【０００２】
近年、不揮発性半導体メモリは、大型コンピュータから、パーソナルコンピュータ、家電製品、携帯電話等、様々な所で利用されている。特に、ＮＡＮＤ型フラッシュメモリは、電気的に書き換えが可能であり、不揮発性、大容量化、高集積化が可能な半導体メモリである。また、最近では、ＮＡＮＤ型フラッシュメモリは、ハードディスクドライブ（ＨＤＤ）の置き換えとしても考えられている。
【０００３】
ＮＡＮＤ型フラッシュメモリは、書き込みを行う前に消去処理が必要な半導体メモリである。その寿命は、書き換え回数に依存している。ＮＡＮＤ型フラッシュメモリのデータの書き込み／消去は、基板−制御ゲート間に高電圧を印加することにより、浮遊ゲートに電子を注入／放出させる。これを多数回行うと浮遊ゲート周りのゲート酸化膜が劣化し、浮遊ゲートに注入した電子が抜けていき、データが破壊されてしまう。すなわち、書き換え回数が増えると、書き換えてからデータを保持（リテンション）する期間が短くなる（リテンション特性の低下）。
【０００４】
また、パーソナルコンピュータ等のコンピュータが記録するデータは、時間的局所性、及び領域的局所性を兼ね備えている（非特許文献１参照）。そのため、データを記録する際に外部から指定されたアドレスにそのまま記録していくと、特定の領域に短時間に書き換え、すなわち消去処理が集中し、消去回数の偏りが大きくなる。
【０００５】
一方で、ＮＡＮＤ型フラッシュメモリの寿命は、消去処理の間隔にも依存しており、その間隔が長いほどリテンション特性が良く、寿命が延びることが知られている（非特許文献２参照）。これは、消去間隔が短いとリテンション特性が悪く、寿命が損なわれることも示している。また、短い間隔で書き込みを行ったとしても、相応の長期間消去を行わなければリテンション特性が回復することも知られている（非特許文献３参照）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】David A. Patterson and John L. Hennessy, “Computer Organization and Design: The Hardware/Software Interface”, Morgan Kaufmann Pub, 2004/8/31
【非特許文献２】Neal Mielke et al., “Flash EEPROM Threshold Instabilities due to Charge Trapping During Program/Erase Cycling”, IEEE TRANSACTIONS ON DEVICE AND MATERIALS RELIABILITY, VOL. 4, NO. 3, SEPTEMBER 2004, PP.335-344
【非特許文献３】Neal Mielke et al., “Recovery Effects in the Distributed Cycling of Flash Memories”, 44th Annual International Reliability Physics Symposium, San Jose, 2006, PP.29-35
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、消去間隔を長くすることで、寿命を延ばすことが可能なメモリシステムの制御方法を提供する。
【課題を解決するための手段】
【０００８】
本発明の一態様に係るメモリシステムの制御方法は、データ消去の単位であるブロックを複数個有する不揮発性メモリを含むメモリシステムの制御方法であって、各ブロックのデータが消去された消去時期を計測する工程と、少なくとも外部から供給されるデータを、空き状態でありかつ消去時期が最も古い第１のブロックに書き込む工程とを具備する。
【０００９】
本発明の一態様に係るメモリシステムの制御方法は、データ消去の単位であるブロックを複数個有する不揮発性メモリを含むメモリシステムの制御方法であって、各ブロックのデータが消去された消去時期を計測する工程と、各ブロックの消去回数をカウントする工程と、ブロックごとに、空き状態或いは使用中状態であるかを示す状態値と前記消去時期と前記消去回数とを対応付けるブロックテーブルを生成する工程と、前記ブロックテーブルの情報に基づいて、空き状態かつ消去時期が最も古い方から一定数のブロックのうちで、消去回数が最も少ない第１のブロックを選択する工程と、少なくとも外部から供給されるデータを、前記第１のブロックに書き込む工程とを具備する。
【００１０】
本発明の一態様に係るメモリシステムの制御方法は、データ消去の単位であるブロックを複数個有する不揮発性メモリを含むメモリシステムの制御方法であって、各ブロックのデータが消去された消去時期を計測する工程と、各ブロックの消去回数をカウントする工程と、ブロックごとに、空き状態或いは使用中状態であるかを示す状態値と前記消去時期と前記消去回数とを対応付けるブロックテーブルを生成する工程と、前記ブロックテーブルの情報に基づいて、空き状態かつ消去時期が最も古い方から一定割合数のブロックのうちで、消去回数が最も少ない第１のブロックを選択する工程と、少なくとも外部から供給されるデータを、前記第１のブロックに書き込む工程とを具備する。
【００１１】
本発明の一態様に係るメモリシステムの制御方法は、データ消去の単位であるブロックを複数個有する不揮発性メモリを含むメモリシステムの制御方法であって、各ブロックのデータが消去された消去時期を計測する工程と、各ブロックの消去回数をカウントする工程と、ブロックごとに、空き状態或いは使用中状態であるかを示す状態値と前記消去時期と前記消去回数とを対応付けるブロックテーブルを生成する工程と、前記ブロックテーブルの情報に基づいて、空き状態かつ消去時期が一定時期より古いブロックのうちで、消去回数が最も少ない第１のブロックを選択する工程と、少なくとも外部から供給されるデータを、前記第１のブロックに書き込む工程とを具備する。
【発明の効果】
【００１２】
本発明によれば、消去間隔を長くすることで、寿命を延ばすことが可能なメモリシステムの制御方法を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態に係るメモリシステム１を備えた計算機システムの一例を示す概略図。
【図２】第１の実施形態に係るメモリシステム１の構成を示す概略図。
【図３】ＮＡＮＤ型フラッシュメモリ１０に含まれる１個のブロックの構成を示す回路図。
【図４】ＮＡＮＤコントローラ１１の一例を説明するブロック図。
【図５】ブロック制御部３０及び消去時期計測部３１の構成を示すブロック図。
【図６】ＮＡＮＤコントローラ１１の一連の書き込み動作を示すフローチャート。
【図７】ＮＡＮＤコントローラ１１のブロック解放処理を示すフローチャート。
【図８】割当ブロック選択部３２の構成を示すブロック図。
【図９】割当ブロック選択部３２の割当ブロック選択処理を示すフローチャート。
【図１０】ＮＡＮＤコントローラ１１のブロック割当処理を示すフローチャート。
【図１１】ＮＡＮＤコントローラ１１のブロック消去処理を示すフローチャート。
【図１２】平準化部３５の構成を示すブロック図。
【図１３】ＮＡＮＤコントローラ１１の平準化処理を示すフローチャート。
【図１４】入替元ブロック選択部３３の構成を示すブロック図。
【図１５】入替元ブロック選択部３３の入替元ブロック選択処理を示すフローチャート。
【図１６】入替先ブロック選択部３４の構成を示すブロック図。
【図１７】入替先ブロック選択部３４の入替先ブロック選択処理を示すフローチャート。
【図１８】本発明の第２の実施形態に係る割当ブロック選択部３２の構成を示すブロック図。
【図１９】割当ブロック選択部３２の割当ブロック選択処理を示すフローチャート。
【図２０】本発明の第３の実施形態に係る平準化部３５の構成を示すブロック図。
【図２１】平準化制限部３７の構成を示すブロック図。
【図２２】ＮＡＮＤコントローラ１１の平準化処理を示すフローチャート。
【図２３】平準化制限部３７の乱数判定処理を示すフローチャート。
【図２４】本発明の第４の実施形態に係るＮＡＮＤコントローラ１１の構成を示すブロック図。
【図２５】平準化部３５の構成を示すブロック図。
【図２６】ＮＡＮＤコントローラ１１の平準化処理を示すフローチャート。
【図２７】実施例に係るＳＳＤ１の構成を示すブロック図
【図２８】ドライブ制御回路１０２の構成を示すブロック図。
【図２９】プロセッサ１０８の構成を示すブロック図。
【図３０】ＳＳＤ１００を搭載したポータブルコンピュータの一例を示す斜視図。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について図面を参照して説明する。なお、以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００１５】
［第１の実施形態］
本実施形態のメモリシステムは、例えば、ホスト装置が実装されたプリント基板上に実装され、バスを介してホスト装置との間でデータの転送を行う。或いは、メモリシステムは、ホスト装置に対して着脱可能なように構成され、ホスト装置に接続された状態でバスを介してホスト装置との間でデータの転送を行うようにしてもよい。図１は、本実施形態のメモリシステム１を備えた計算機システムの一例を示す概略図である。
【００１６】
計算機システムは、中央演算処理装置（ＣＰＵ：Central Processing Unit）２、ＤＲＡＭ（Dynamic Random Access Memory）等のメインメモリ３、メインメモリ３を制御するメモリコントローラ４、及び本実施形態のメモリシステム１を備えている。ＣＰＵ２、メインメモリ３、及びメモリシステム１は、アドレスを扱うアドレスバス、及びデータを扱うデータバスを介して接続されている。
【００１７】
このような計算機システムでは、ＣＰＵ２からの転送要求（読出要求、或いは書込要求）に応じて、書込要求であればＣＰＵ２のデータ（外部から入力されたデータを含む）、或いはメインメモリ３のデータがメモリシステム１に転送され、読出要求であればメモリシステム１のデータがＣＰＵ２、或いはメインメモリ３に転送される。
【００１８】
メモリシステム１は、不揮発性半導体メモリの一種であるＮＡＮＤ型フラッシュメモリ１０、及びこのＮＡＮＤ型フラッシュメモリ１０を制御するＮＡＮＤコントローラ１１を備えている。以下に、メモリシステム１の構成の一例について説明する。
【００１９】
［１．メモリシステム１の構成］
図２は、メモリシステム１の構成を示す概略図である。メモリシステム１は、ＮＡＮＤ型フラッシュメモリ１０、及びＮＡＮＤコントローラ１１を備えている。ＮＡＮＤコントローラ１１は、ホストインターフェース回路（ホストＩ／Ｆ）２１、演算処理装置（ＭＰＵ：Micro processing unit）２２、ＲＯＭ（Read-only memory）２３、ＲＡＭ（Random access memory）２４、及びＮＡＮＤインターフェース回路（ＮＡＮＤ Ｉ／Ｆ）２５を備えている。
【００２０】
ホストインターフェース回路２１は、ＮＡＮＤコントローラ１１とホスト装置（ＣＰＵ２、メインメモリ３）との間のインターフェース処理を行う。
【００２１】
ＭＰＵ２２は、メモリシステム１全体の動作を制御する。ＭＰＵ２２は、例えば、メモリシステム１が電源供給を受けたときに、ＲＯＭ２３に格納されているファームウェア（制御プログラム）をＲＡＭ２４上に読み出して所定の処理を実行することにより、各種のテーブルをＲＡＭ２４上に作成する。また、ＭＰＵ２２は、ホスト装置から書込要求、読出要求、消去要求を受け、これらの要求に応じてＮＡＮＤ型フラッシュメモリ１０に所定の処理を実行する。
【００２２】
ＲＯＭ２３は、ＭＰＵ２２により制御される制御プログラム等を格納する。ＲＡＭ２４は、ＭＰＵ２２の作業エリアとして使用され、ＲＯＭ２３からロードされた制御プログラムや各種のテーブルを記憶する。ＮＡＮＤインターフェース回路２５は、ＮＡＮＤコントローラ１１とＮＡＮＤ型フラッシュメモリ１０との間のインターフェース処理を行う。
【００２３】
ＮＡＮＤ型フラッシュメモリ１０は、データ消去の単位であるブロックを複数配列して構成されている。図３は、ＮＡＮＤ型フラッシュメモリ１０に含まれる１個のブロックの構成を示す回路図である。各ブロックは、Ｘ方向に沿って順に配列された（ｍ＋１）個のＮＡＮＤストリングを備えている（ｍは、０以上の整数）。（ｍ＋１）個のＮＡＮＤストリングにそれぞれ含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ０〜ＢＬｍに接続され、ゲートが選択ゲート線ＳＧＤに共通接続されている。また、選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートが選択ゲート線ＳＧＳに共通接続されている。
【００２４】
各メモリセルトランジスタＭＴは、半導体基板上に形成された積層ゲート構造を備えたＭＯＳＦＥＴ（metal oxide semiconductor field effect transistor）から構成される。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（浮遊ゲート電極）、及び電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタＭＴは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記憶する。メモリセルトランジスタＭＴは、１ビットを記憶するように構成されていてもよいし、多値（２ビット以上のデータ）を記憶するように構成されていてもよい。
【００２５】
各ＮＡＮＤストリングにおいて、（ｎ＋１）個のメモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。すなわち、複数のメモリセルトランジスタＭＴは、隣接するもの同士で拡散領域（ソース領域若しくはドレイン領域）を共有するような形でＹ方向に直列接続される。
【００２６】
そして、最もドレイン側に位置するメモリセルトランジスタＭＴから順に、制御ゲート電極がワード線ＷＬ０〜ＷＬｎにそれぞれ接続されている。従って、ワード線ＷＬ０に接続されたメモリセルトランジスタＭＴのドレインは選択トランジスタＳＴ１のソースに接続され、ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴのソースは選択トランジスタＳＴ２のドレインに接続されている。
【００２７】
ワード線ＷＬ０〜ＷＬｎは、ブロック内のＮＡＮＤストリング間で、メモリセルトランジスタＭＴの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルトランジスタＭＴの制御ゲート電極は、同一のワード線ＷＬに接続される。この同一のワード線ＷＬに接続される（ｍ＋１）個のメモリセルトランジスタＭＴは１ページとして取り扱われ、このページごとにデータの書き込み及びデータの読み出しが行われる。
【００２８】
また、ビット線ＢＬ０〜ＢＬｍは、ブロック間で、選択トランジスタＳＴ１のドレインを共通に接続している。つまり、複数のブロック内において同一列にあるＮＡＮＤストリングは、同一のビット線ＢＬに接続される。
【００２９】
本発明の各実施形態における各機能ブロックは、ハードウェア、及びソフトウェアのいずれか、又は両者の組み合わせとして実現することができる。このため、各機能ブロックは、これらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明される。このような機能が、ハードウェアとして実現されるか、又はソフトウェアとして実現されるかは、具体的な実施態様、又はシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、様々な方法でこれらの機能を実現し得るが、そのような実現を決定することは本発明の範疇に含まれるものである。
【００３０】
以下に、ＮＡＮＤコントローラ１１のより具体的な構成の一例について説明する。図４は、ＮＡＮＤコントローラ１１の一例を説明するブロック図である。
【００３１】
ＮＡＮＤコントローラ１１は、ブロック制御部３０、消去時期計測部３１、割当ブロック選択部３２、入替元ブロック選択部３３、入替先ブロック選択部３４、平準化部３５、及びＮＡＮＤインターフェース回路（ＮＡＮＤ Ｉ／Ｆ）２５を備えている。
【００３２】
消去時期計測部３１は、ＮＡＮＤ型フラッシュメモリ１０の各ブロックのデータが消去されるごとに、当該ブロックの消去時期を計測する。そして、消去時期計測部３１は、この消去時期をブロック制御部３０に送る。
【００３３】
ブロック制御部３０は、ブロックごとの各種情報（消去時期を含む）を管理する。また、ブロック制御部３０は、ＣＰＵ２からの転送要求に応じて、ＮＡＮＤ型フラッシュメモリ１０に対して書込要求、読出要求、消去要求を行う。具体的には、ブロック制御部３０は、後述するアドレステーブル３０Ａ、及びブロックテーブル３０Ｂを備えており、これらのテーブルを利用して、書込要求、読出要求、消去要求を行う。
【００３４】
割当ブロック選択部３２は、例えば外部（ＣＰＵ２、或いはメインメモリ３）から供給される新たなデータをＮＡＮＤ型フラッシュメモリ１０に書き込む際に、この書き込みに割り当てるブロック（以下、割当ブロックという）を選択する。そして、割当ブロック選択部３２は、この割り当てブロックに対応するブロック番号（割当ブロック番号）をブロック制御部３０に送る。なお、ＮＡＮＤ型フラッシュメモリ１０に書き込まれるデータとしては、メモリシステム１の外部から供給されるユーザデータの他に、メモリシステム１内部の管理に必要なシステムデータの２種類が存在する。
【００３５】
平準化部３５は、後述する平準化処理を実行する。そして、平準化部３５は、この平準化処理に伴い、ＮＡＮＤ型フラッシュメモリ１０に対して書込要求、読出要求、消去要求を行う。なお、平準化とは、ブロックの消去回数を揃えること（いわゆる、ウェアレベリング：wear leveling）を意味する。このように、ブロックの消去回数を揃えることで、一部のブロックへ消去処理が集中するのを防ぐことができるため、ＮＡＮＤ型フラッシュメモリ１０の寿命を延ばすことが可能となる。
【００３６】
入替元ブロック選択部３３は、平準化部３５による平準化処理に使用される、データ入れ替え元のブロック（以下、入替元ブロックという）を選択する。入替先ブロック選択部３４は、平準化部３５による平準化処理に使用される、データ入れ替え先のブロック（以下、入替先ブロックという）を選択する。
【００３７】
ＮＡＮＤインターフェース回路２５は、ブロック制御部３０及び平準化部３５から、書込要求、読出要求、及び消去要求を受ける。そして、ＮＡＮＤインターフェース回路２５は、これらの要求に応じて、ＮＡＮＤ型フラッシュメモリ１０に対してデータの書き込み、読み出し、及び消去を伝える。
【００３８】
図５は、ブロック制御部３０及び消去時期計測部３１の構成を示すブロック図である。ブロック制御部３０は、アドレステーブル３０Ａ、ブロックテーブル３０Ｂ、及び演算部３０Ｃを備えている。
【００３９】
アドレステーブル３０Ａは、ホスト装置（ＣＰＵ２）からアドレスバスを介して送られるアドレスを含むアドレス領域（論理ブロックアドレス）と、このアドレス領域に対応する、ＮＡＮＤ型フラッシュメモリ１０内のブロックの番号（物理ブロックアドレス）との関係を示す。このアドレステーブル３０Ａを用いることで、ブロック制御部３０は、ホスト装置から送られるアドレスを含むアドレス領域のデータがどのブロックに対応するかを特定することができる。このアドレステーブル３０Ａは、例えば、後述するブロック解放処理、ブロック割当処理に伴い更新される。
【００４０】
ブロックテーブル３０Ｂは、ブロック番号ごとに、アドレステーブル３０Ａにブロック番号が設定されていないか（以下、空き状態という）、アドレステーブル３０Ａにブロック番号が設定されているか（以下、使用中状態という）を示すブロックの状態と、データが消去された回数（消去回数）と、消去時期計測部３１から送られる消去時期とを情報として格納する。このブロックテーブル３０Ｂは、例えば、後述するブロック解放処理、ブロック割当処理、ブロック消去処理に伴い更新される。
【００４１】
ブロックの状態が空き状態であれば、ＮＡＮＤ型フラッシュメモリ１０内部で当該ブロックに対して実際に消去が行われたか否かに係わらず、当該ブロックに対応するアドレス領域は、ホスト装置から見ると、データが格納されていない空き領域であると認識される。一方、ブロックの状態が使用中状態であれば、当該ブロックに対応するアドレス領域は、ホスト装置から見ると、データが格納されている使用中領域であると認識される。
【００４２】
なお、実際には、これらアドレステーブル３０Ａ及びブロックテーブル３０Ｂは、ＲＡＭ２４、或いは、ＲＡＭ２４及びＮＡＮＤ型フラッシュメモリ１０の両方に格納されている。但し、ＮＡＮＤ型フラッシュメモリ１０に不揮発に格納されたアドレステーブル３０Ａ及びブロックテーブル３０Ｂは、必ずしもＲＡＭ２４を更新した都度更新を行う必要はない。
【００４３】
演算部３０Ｃは、ＮＡＮＤ型フラッシュメモリ１０のデータが消去されるごとに、ブロックテーブル３０Ｂに含まれる、消去が行われたブロックの消去回数を１カウントアップする。なお、実際には、演算部３０Ｃの処理は、ＭＰＵ２２により行われる。
【００４４】
ブロック制御部３０は、割当ブロック選択部３２から割当ブロック番号を受ける。そして、ブロック制御部３０は、この割当ブロック番号を用いて、アドレステーブル３０Ａのブロック番号を更新する。また、ブロック制御部３０は、この割当ブロック番号に対応するブロックテーブル３０Ｂ内の情報（割当ブロック情報）と、ブロックの割り当てに伴って解放されたブロックの情報（解放ブロック情報）とを平準化部３５に送る。
【００４５】
また、ブロック制御部３０は、ブロックテーブル３０Ｂを用いて、ＮＡＮＤ型フラッシュメモリ１０に含まれる全てのブロックの情報（全ブロック情報）を、割当ブロック選択部３２、入替元ブロック選択部３３、及び入替先ブロック選択部３４に送る。
【００４６】
消去時期計測部３１は、消去回数をカウントする消去回数カウンタ３１Ａ、及び消去回数カウンタ３１Ａのカウント値を更新する演算部３１Ｂを備えている。消去時期計測部３１は、ＮＡＮＤ型フラッシュメモリ１０内のブロックに対して消去処理が行われた回数を計測し、この計測された回数を消去時期として出力する。
【００４７】
具体的には、演算部３１Ｂは、いずれかのブロックが消去されるごとに、消去回数カウンタ３１Ａを１カウントアップする。消去回数カウンタ３１Ａのカウント値（消去番号）は、消去時期としてブロック制御部３０（具体的には、ブロックテーブル３０Ｂ）に送られる。この例の消去時期計測部３１では、消去番号が小さいほど、消去時期が古くなる。なお、実際には、演算部３１Ｂの処理は、ＭＰＵ２２により行われる。
【００４８】
消去時期としては、この他に、消去処理が行われた時刻（消去時刻）や、ＮＡＮＤコントローラ１１の通電時間等を用いるようにしてもよい。消去時刻を消去時期として用いる場合は、消去時期計測部３１が時計を備え、消去処理が行われるごとに、その時刻を消去時期として出力する。通電時間を消去時期として用いる場合は、消去時期計測部３１がタイマーを備え、消去処理が行われるごとに、それまでの通電時間を計測し、その通電時間を消去時期として出力する。このように、消去時期として、消去回数、消去時刻、及び通電時間のいずれを用いるかは、任意に選択することが可能である。なお、消去時期が特定可能な情報であれば、上記３種類以外を用いることも可能である。
【００４９】
［２．ＮＡＮＤコントローラ１１の書き込み動作］
次に、ＮＡＮＤコントローラ１１の書き込み動作について説明する。図６は、ＮＡＮＤコントローラ１１の一連の書き込み動作を示すフローチャートである。
【００５０】
まず、ＮＡＮＤコントローラ１１は、ＣＰＵ２から書込要求を受けることで、書き込み動作を開始する（ステップＳ１０）。続いて、ブロック制御部３０は、アドレステーブル３０Ａを用いて、書込要求のアドレスを含むアドレス領域に対して、ブロック番号が登録されている（ブロックが割り当てられている）か否かを判定する（ステップＳ１１）。ブロック番号が登録されている（ブロックが割り当てられている）場合、このアドレス領域に対してデータの上書きを行う必要があるため、ＮＡＮＤコントローラ１１は、上記ブロック番号に対応するブロックを解放するブロック解放処理を実行する（ステップＳ１２）。
【００５１】
ステップＳ１１においてブロック番号が登録されていない（ブロックが割り当てられていない）と判定された場合、或いはステップＳ１２においてブロック解放処理を実行後、割当ブロック選択部３２は、上記アドレス領域に割り当てるブロック（割当ブロック）を選択する割当ブロック選択処理を実行する（ステップＳ１３）。
【００５２】
続いて、ブロック制御部３０は、割当ブロックに対応するブロック番号（割当ブロック番号）を用いて、アドレステーブル３０Ａ及びブロックテーブル３０Ｂを更新するために、ブロック割当処理を実行する（ステップＳ１４）。続いて、ブロック制御部３０は、割当ブロックに対してブロック消去処理を実行する（ステップＳ１５）。
【００５３】
続いて、ブロック制御部３０は、この消去された割当ブロックにデータを書き込む（ステップＳ１６）。すなわち、ブロック制御部３０は、ＮＡＮＤインターフェース回路２５に書込要求を発行する。この書込要求に基づいて、ＮＡＮＤインターフェース回路２５は、ＮＡＮＤ型フラッシュメモリ１０に、割当ブロックへのデータの書き込みを伝える。
【００５４】
続いて、ＮＡＮＤコントローラ１１は、平準化処理を実行する（ステップＳ１７）。平準化処理を終えて、ＮＡＮＤコントローラ１１の一連の書き込み動作が終了する。なお、ステップＳ１７の平準化処理は、ステップＳ１３の割当ブロック選択処理の前に行うようにしてもよい。
【００５５】
以下に、書き込み動作に含まれる各処理について説明する。  
［２−１．ブロック解放処理］
図７は、ＮＡＮＤコントローラ１１のブロック解放処理を示すフローチャートである。ブロック制御部３０は、アドレステーブル３０Ａに含まれる、書込要求のアドレスを含むアドレス領域に対応するブロック番号を、未割り当ての状態（未割当状態）に設定する（ステップＳ２０）。続いて、ブロック制御部３０は、ブロックテーブル３０Ｂに含まれる、上記ブロック番号の状態を、空き状態に設定する。ブロック解放処理において新たに空き状態に設定されたブロックを、以下解放ブロックという（ステップＳ２１）。
【００５６】
続いて、ブロック制御部３０は、ブロックテーブル３０Ｂに含まれる、解放ブロックの情報（解放ブロック情報）を平準化部３５に送る。解放ブロック情報は、少なくとも、解放されたブロック番号の消去時期を含んでいる。平準化部３５は、この解放ブロック情報を用いて、後述する負荷集中度を更新する（ステップＳ２２）。
【００５７】
［２−２．割当ブロック選択処理］
図８は、割当ブロック選択部３２の構成を示すブロック図である。図９は、割当ブロック選択部３２の割当ブロック選択処理を示すフローチャートである。
【００５８】
割当ブロック選択部３２は、２個のセレクタ３２Ａ及び３２Ｂを備えている。割当ブロック選択部３２は、ブロック制御部３０から全ブロック情報を受ける（ステップＳ３０）。この全ブロック情報は、セレクタ３２Ａに送られる。続いて、セレクタ３２Ａは、全ブロックの状態を確認し、全ブロックのうち空き状態のブロックを抽出する（ステップＳ３１）。そして、セレクタ３２Ａは、空き状態のブロックに対応するブロック情報（空き状態ブロック情報）をセレクタ３２Ｂに送る。
【００５９】
続いて、セレクタ３２Ｂは、セレクタ３２Ａにより抽出されたブロックのうち、消去時期が最も古いブロックを割当ブロックとして選択する（ステップＳ３２）。この割当ブロックに対応する割当ブロック番号は、ブロック制御部３０に送られる。
【００６０】
［２−３．ブロック割当処理］
図１０は、ＮＡＮＤコントローラ１１のブロック割当処理を示すフローチャートである。ブロック制御部３０は、アドレステーブル３０Ａに含まれる、書込要求のアドレスを含むアドレス領域に対して、割当ブロックのブロック番号を設定する（ステップＳ４０）。続いて、ブロック制御部３０は、ブロックテーブル３０Ｂに含まれる、上記ブロック番号の状態を、使用中状態に設定する（ステップＳ４１）。
【００６１】
続いて、ブロック制御部３０は、ブロックテーブル３０Ｂに含まれる、割当ブロックの情報（割当ブロック情報）を平準化部３５に送る。割当ブロック情報は、少なくとも、割り当てられたブロック番号の消去時期を含んでいる。平準化部３５は、この割当ブロック情報を用いて、後述する負荷集中度を更新する（ステップＳ４２）。
【００６２】
［２−４．ブロック消去処理］
図１１は、ＮＡＮＤコントローラ１１のブロック消去処理を示すフローチャートである。ブロック制御部３０は、ＮＡＮＤインターフェース回路２５に、割当ブロックに対する消去要求を発行する（ステップＳ５０）。この消去要求に基づいて、ＮＡＮＤインターフェース回路２５は、ＮＡＮＤ型フラッシュメモリ１０に、割当ブロックのデータの消去を伝える（ステップＳ５１）。続いて、消去時期計測部３１（具体的には、演算部３１Ｂ）は、消去回数カウンタ３１Ａのカウント値（消去番号）を１カウントアップする（ステップＳ５２）。
【００６３】
続いて、ブロック制御部３０は、ブロックテーブル３０Ｂに含まれる、消去した割当ブロックに対応する消去回数及び消去時期を更新する（ステップＳ５３）。具体的には、ブロック制御部３０は、消去時期計測部３１から送られる消去時期を用いて、ブロックテーブル３０Ｂに含まれる、消去した割当ブロックのブロック番号に対応する消去時期を更新する。また、演算部３０Ｃは、ブロックテーブル３０Ｂに含まれる、消去した割当ブロックのブロック番号に対応する消去回数を１カウントアップする。
【００６４】
［２−５．平準化処理］
ＮＡＮＤ型フラッシュメモリ１０の寿命を延長するには、各ブロックの消去回数を揃えることと、特定の領域に対して短期間に頻繁に書き換え処理を行うことを避けることとの両立が必要である。消去回数を揃えることだけに着目してＮＡＮＤ型フラッシュメモリ１０の寿命を延長しようとすると、書き込み状況によっては特定の領域が短期間に書き換えが進行してしまうことがある。短期間にこの修正（平準化）を頻繁に行うと、消去回数は揃い、短期間の特定の領域への書き込み集中を避けることができるが、修正に起因する消去処理が多くなり、結果として寿命を延長することができない。一方で、修正の間隔を延ばし過ぎると、特定の領域に間隔の短い消去処理が集中することになり、寿命が短くなってしまう。このような知見に基づいて、本実施形態の平準化処理では、平準化の回数を最適化し、かつブロックごとの消去回数を揃えるようにしている。
【００６５】
平準化処理は、平準化部３５、入替元ブロック選択部３３、及び入替先ブロック選択部３４により実行される。なお、前述したように、この平準化処理は、図６の割当ブロック選択処理（ステップＳ１３）の前に行うようにしてもよい。図１２は、平準化部３５の構成を示すブロック図である。
【００６６】
平準化部３５は、負荷集中度管理部３６、平準化判定部３５Ａ、及び平準化閾値を格納する記憶部３５Ｂを備えている。平準化判定部３５Ａは、平準化閾値、及び負荷集中度管理部３６から送られる負荷集中度を用いて、今回の書き込み動作時に平準化処理を行うか否かを判定する。そして、平準化処理を行う場合、平準化判定部３５Ａは、ＮＡＮＤインターフェース回路２５に、平準化処理に伴う読出要求、消去要求、及び書込要求を発行する。
【００６７】
負荷集中度管理部３６は、解放ブロック用加算値テーブル３６Ａ、割当ブロック用加算値テーブル３６Ｂ、演算部３６Ｃ、及び負荷集中度カウンタ３６Ｄを備えている。また、負荷集中度管理部３６は、ブロック制御部３０から解放ブロック情報及び割当ブロック情報を受ける。
【００６８】
解放ブロック用加算値テーブル３６Ａは、複数の消去時期と、これらに対応する複数の加算値との対応関係を示す。これらの加算値は、消去時期に応じて大きさが変わっており、正、ゼロ、及び負のいずれの値も取り得る。また、加算値は、消去時期が新しいほど値が大きく、古くなるに伴い小さく設定される。なお、もっと単純化して、ある消去時期を越えた場合は負の一定加算値を出力し、ある消去時期以下である場合は正の一定加算値を出力するようにしてもよい。解放ブロック用加算値テーブル３６Ａは、解放ブロック情報に含まれる消去時期に対応する加算値を演算部３６Ｃに送る。
【００６９】
同様に、割当ブロック用加算値テーブル３６Ｂは、複数の消去時期と、これらに対応する複数の加算値との対応関係を示す。これらの加算値は、消去時期に応じて大きさが変わっており、正、ゼロ、及び負のいずれの値も取り得る。また、加算値は、消去時期が新しいほど値が大きく、古くなるに伴い小さく設定される。なお、もっと単純化して、ある消去時期を越えた場合は負の一定加算値を出力し、ある消去時期以下である場合は正の一定加算値を出力するようにしてもよい。割当ブロック用加算値テーブル３６Ｂは、割当ブロック情報に含まれる消去時期に対応する加算値を演算部３６Ｃに送る。
【００７０】
演算部３６Ｃは、解放ブロック用加算値テーブル３６Ａ及び割当ブロック用加算値テーブル３６Ｂからそれぞれ送られる加算値を用いて、負荷集中度カウンタ３６Ｄのカウント値を更新する。なお、実際には、演算部３６Ｃの処理は、ＭＰＵ２２により行われる。負荷集中度カウンタ３６Ｄは、カウント値を負荷集中度として平準化判定部３５Ａに送る。この負荷集中度の大きさによって、間隔の短い消去処理が頻繁に行われているか否かを判定することができる。
【００７１】
図１３は、ＮＡＮＤコントローラ１１の平準化処理を示すフローチャートである。平準化判定部３５Ａは、負荷集中度管理部３６から送られる負荷集中度が平準化閾値を越えているか否かを判定する（ステップＳ６０）。この平準化閾値は、平準化処理を実行するか否かを判定するために使用され、また、ＮＡＮＤ型フラッシュメモリ１０の寿命（或いは、データリテンション期間）をどの程度延ばすかという基準に基づいて設定される。
【００７２】
データを消去するごとに、ＮＡＮＤ型フラッシュメモリ１０のリテンション特性は悪化する（すなわち、寿命が短くなる）。一方、消去間隔が長くなると、ＮＡＮＤ型フラッシュメモリ１０のリテンション特性が回復していく。すなわち、短い間隔で消去処理が連続して行われた場合には、リテンション特性の回復時間が確保できないため、ＮＡＮＤ型フラッシュメモリ１０の寿命が短くなってしまう。そこで、本実施形態では、消去間隔が長いか短いかという基準を、負荷集中度が小さいか大きいかという基準に置き換えて判断している。そして、間隔の短い消去処理が連続して行われたことを、負荷集中度が平準化閾値を超えたか否かで判断し、負荷集中度が平準化閾値を超えた場合にのみ、一部のブロックへの消去処理が集中するのを防ぐために平準化処理を行うようにしている。なお、平準化閾値の設定には、消去間隔を所定時間長くすることでどの程度寿命が回復するかを示す、ＮＡＮＤ型フラッシュメモリ１０の特性も加味される。
【００７３】
ステップＳ６０において平準化閾値を越えていると判定された場合、入替元ブロック選択部３３は、入替元ブロック選択処理を実行する（ステップＳ６１）。この入替元ブロック選択処理により選択された入替元ブロックの情報（入替元ブロック情報）は、平準化判定部３５Ａに送られる。続いて、入替先ブロック選択部３４は、入替先ブロック選択処理を実行する（ステップＳ６２）。この入替先ブロック選択処理により選択された入替先ブロックの情報（入替先ブロック情報）は、平準化判定部３５Ａに送られる。
【００７４】
続いて、ブロック制御部３０及び負荷集中度管理部３６は、入替元ブロック選択部３３により選択された入替元ブロックを解放するブロック解放処理を実行する（ステップＳ６３）。このブロック解放処理は、図７と同じである。続いて、ブロック制御部３０及び負荷集中度管理部３６は、入替先ブロック選択部３４により選択された入替先ブロックを、入替元ブロックのデータを移動するブロックとして割り当てるブロック割当処理を実行する（ステップＳ６４）。このブロック割当処理は、図１０と同じである。
【００７５】
続いて、ＮＡＮＤコントローラ１１は、ＮＡＮＤ型フラッシュメモリ１０に含まれる入替元ブロックのデータを読み出す（ステップＳ６５）。具体的には、平準化判定部３５Ａは、入替元ブロック選択部３３から送られる入替元ブロック情報を用いて、ＮＡＮＤインターフェース回路２５に読出要求を発行する。この読出要求に基づいて、ＮＡＮＤインターフェース回路２５は、ＮＡＮＤ型フラッシュメモリ１０に、入替元ブロックからのデータの読み出しを伝える。読み出されたデータは、ＲＡＭ２４等に一時的に格納される。
【００７６】
続いて、ＮＡＮＤコントローラ１１は、ＮＡＮＤ型フラッシュメモリ１０に含まれる入替先ブロックのデータを消去する（ステップＳ６６）。具体的には、平準化判定部３５Ａは、入替先ブロック選択部３４から送られる入替先ブロック情報を用いて、ＮＡＮＤインターフェース回路２５に消去要求を発行する。この消去要求に基づいて、ＮＡＮＤインターフェース回路２５は、ＮＡＮＤ型フラッシュメモリ１０に、入替先ブロックのデータの消去を伝える。この際、ブロック制御部３０によって入替先ブロックの消去回数及び消去時期が更新される（図１１参照）。
【００７７】
続いて、ＮＡＮＤコントローラ１１は、ＮＡＮＤ型フラッシュメモリ１０に含まれる入替先ブロックに、入替元ブロックから読み出されたデータを書き込む（ステップＳ６７）。具体的には、平準化判定部３５Ａは、入替先ブロック情報を用いて、ＮＡＮＤインターフェース回路２５に書込要求を発行する。この書込要求に基づいて、ＮＡＮＤインターフェース回路２５は、ＮＡＮＤ型フラッシュメモリ１０に、入替先ブロックへのデータの書き込みを伝える。
【００７８】
［２−５−１．入替元ブロック選択処理］
図１４は、入替元ブロック選択部３３の構成を示すブロック図である。図１５は、入替元ブロック選択部３３の入替元ブロック選択処理を示すフローチャートである。
【００７９】
入替元ブロック選択部３３は、３個のセレクタ３３Ａ〜３３Ｃ、及び入替元ブロック設定値を格納する記憶部３３Ｄを備えている。入替元ブロック選択部３３は、ブロック制御部３０から全ブロック情報を受ける（ステップＳ７０）。この全ブロック情報は、セレクタ３３Ａに送られる。続いて、セレクタ３３Ａは、全ブロックの状態を確認し、全ブロックのうち使用中状態のブロックを抽出する（ステップＳ７１）。そして、セレクタ３３Ａは、使用中状態のブロックに対応するブロック情報（使用中状態ブロック情報）をセレクタ３３Ｂに送る。
【００８０】
続いて、セレクタ３３Ｂは、使用中状態ブロック情報のうち入替元ブロック設定値により設定された条件のブロック情報を抽出する（ステップＳ７２）。ここで、入替元ブロック設定値には、
（Ａ）消去時期の最も古い方から一定数のブロック
（Ｂ）消去時期の最も古い方から一定割合数のブロック
（Ｃ）消去時期が一定時期より古いブロック
のいずれかが設定されている。条件（Ａ）〜（Ｃ）のいずれを入替元ブロック設定値として使用するのかは、任意に選択することができる。例えば、入替元ブロック設定値として条件（Ａ）を用いる場合、セレクタ３３Ｂは、使用中状態のブロックのうち、消去時期の最も古い方から一定数のブロックを抽出する。そして、セレクタ３３Ｂは、抽出したブロックに対応するブロック情報をセレクタ３３Ｃに送る。
【００８１】
条件（Ａ）及び（Ｂ）は、空き状態のブロックを消去時期順にソートし、古い方から一定数／一定割合のブロックを探索する。従って、ステップＳ７２において選択されるブロック数を多くすることができるため、ステップＳ７３においてより消去回数が少ないブロックを選択する確率を高くすることが可能となる。条件（Ｃ）は、消去時期が一定時期を超えた空き状態のブロックのみをソートすればよいので、処理負荷が最も少ない。また、条件（Ａ）及び（Ｂ）は、消去時期の古いほうから常に一定数／一定割合のブロックを抽出するのに対し、条件（Ｃ）では、消去時期が一定期間以上空いたブロックが抽出される。このため、条件（Ｃ）は、消去間隔を必ず一定間隔空けることができ、その分、消去回数の比較候補を少なくすることが可能となる。
【００８２】
続いて、セレクタ３３Ｃは、セレクタ３３Ｂにより抽出されたブロックのうち消去回数が最も少ないブロックを入替元ブロックとして選択する（ステップＳ７３）。この入替元ブロックに対応する入替元ブロック情報は、平準化判定部３５Ａに送られる。
【００８３】
このような入替元ブロック選択処理により、頻繁に書き換えられていないデータを格納した、リテンション特性の良いブロックを入替元ブロックとして選択することができる。
【００８４】
［２−５−２．入替先ブロック選択処理］
図１６は、入替先ブロック選択部３４の構成を示すブロック図である。図１７は、入替先ブロック選択部３４の入替先ブロック選択処理を示すフローチャートである。
【００８５】
入替先ブロック選択部３４は、３個のセレクタ３４Ａ〜３４Ｃ、及び入替先ブロック設定値を格納する記憶部３４Ｄを備えている。入替先ブロック選択部３４は、ブロック制御部３０から全ブロック情報を受ける（ステップＳ８０）。この全ブロック情報は、セレクタ３４Ａに送られる。続いて、セレクタ３４Ａは、全ブロックの状態を確認し、全ブロックのうち空き状態のブロックを抽出する（ステップＳ８１）。そして、セレクタ３４Ａは、空き状態のブロックに対応するブロック情報（空き状態ブロック情報）をセレクタ３４Ｂに送る。
【００８６】
続いて、セレクタ３４Ｂは、空き状態ブロック情報のうち入替先ブロック設定値により設定された条件のブロック情報を抽出する（ステップＳ８２）。ここで、入替先ブロック設定値には、
（Ａ）消去時期の最も古い方から一定数のブロック
（Ｂ）消去時期の最も古い方から一定割合数のブロック
（Ｃ）消去時期が一定時期より古いブロック
のいずれかが設定されている。条件（Ａ）〜（Ｃ）のいずれを入替先ブロック設定値として使用するのかは、任意に選択することができる。例えば、入替先ブロック設定値として条件（Ａ）を用いる場合、セレクタ３４Ｂは、空き状態のブロックのうち、消去時期の最も古い方から一定数のブロックを抽出する。そして、セレクタ３４Ｂは、抽出したブロックに対応するブロック情報をセレクタ３４Ｃに送る。
【００８７】
条件（Ａ）及び（Ｂ）は、空き状態のブロックを消去時期順にソートし、古い方から一定数／一定割合のブロックを探索する。従って、ステップＳ８２において選択されるブロック数を多くすることができるため、ステップＳ８３においてより消去回数が少ないブロックを選択する確率を高くすることが可能となる。条件（Ｃ）は、消去時期が一定時期を超えた空き状態のブロックのみをソートすればよいので、処理負荷が最も少ない。また、条件（Ａ）及び（Ｂ）は、消去時期の古いほうから常に一定数／一定割合のブロックを抽出するのに対し、条件（Ｃ）では、消去時期が一定期間以上空いたブロックが抽出される。このため、条件（Ｃ）は、消去間隔を必ず一定間隔空けることができ、その分、消去回数の比較候補を少なくすることが可能となる。
【００８８】
続いて、セレクタ３４Ｃは、セレクタ３４Ｂにより抽出されたブロックのうち消去回数が最も多いブロックを入替先ブロックとして選択する（ステップＳ８３）。この入替先ブロックに対応する入替先ブロック情報は、平準化判定部３５Ａに送られる。
【００８９】
このような入替先ブロック選択処理により、リテンション特性がある程度悪化した空き状態のブロックを、入替先ブロックとして選択することができる。その後、この入替先ブロックには、入替元ブロックに格納されていた頻繁に書き換えられていないデータが格納される。これにより、入替先ブロックに対しては、その後のデータ消去回数を減らすとともに、リテンション特性を回復させることが可能となる。
【００９０】
以上詳述したように本実施形態では、各ブロックが消去された消去時期を測定し、各ブロックと消去時期とを対応付けてブロックテーブル３０Ｂに格納する。そして、外部から供給されたデータをＮＡＮＤ型フラッシュメモリ１０に書き込む場合に、空き状態のブロックのうち消去時期が最も古いブロックを割当ブロックとして選択し、この割当ブロックに上記データを書き込むようにしている。
【００９１】
従って本実施形態によれば、各ブロックに対して消去間隔を長くすることができるため、消去間隔を長くすることでリテンション特性が回復するというメモリセルトランジスタの特性を利用することで、各ブロックのリテンション特性の悪化を低減することができる。これにより、ＮＡＮＤ型フラッシュメモリ１０の寿命を長くすることが可能となる。
【００９２】
また、本実施形態では、負荷集中度管理部３６によってＮＡＮＤ型フラッシュメモリ１０のリテンション特性の悪化を負荷集中度として特定し、負荷集中度が平準化閾値を越えている場合に、平準化処理を行うようにしている。これにより、平準化を頻繁に行わずに、平準化の回数を最適化でき、かつブロックごとの消去回数を揃えることが可能となる。この結果、一部のブロックの消去回数が増えることでＮＡＮＤ型フラッシュメモリ１０全体の寿命が短くなるのを防ぐことができる。
【００９３】
また、入替元ブロック選択処理により、頻繁に書き換えられていないデータを格納したブロックを入替元ブロックとして選択し、入替先ブロック選択処理により、リテンション特性がある程度悪化したブロックを入替先ブロックとして選択する。そして、入替元ブロックに格納されていた頻繁に書き換えられていないデータを入替先ブロックに移動するようにしている。これにより、一度書き込みで割り当てられたまま長い期間解放されないブロックも平準化処理により解放されるようになる。この結果、入替先ブロックに対しては、その後のデータ消去回数を減らすことが可能となり、ひいては、入替先ブロックのリテンション特性の悪化を低減することが可能となる。
【００９４】
［第２の実施形態］
第２の実施形態は、割当ブロック選択部３２による割当ブロック選択処理の他の例について示しており、割当ブロックを選択する際に、消去時期が古く、かつ消去回数が少ないブロックを割当ブロックとして選択するようにしている。
【００９５】
図１８は、割当ブロック選択部３２の構成を示すブロック図である。図１９は、割当ブロック選択部３２の割当ブロック選択処理を示すフローチャートである。なお、ＮＡＮＤコントローラ１１のうち割当ブロック選択部３２以外の構成は、第１の実施形態と同じである。
【００９６】
割当ブロック選択部３２は、３個のセレクタ３２Ａ〜３２Ｃ、及び割当ブロック設定値を格納する記憶部３２Ｄを備えている。割当ブロック選択部３２は、ブロック制御部３０から全ブロック情報を受ける（ステップＳ９０）。この全ブロック情報は、セレクタ３２Ａに送られる。続いて、セレクタ３２Ａは、全ブロックの状態を確認し、全ブロックのうち空き状態のブロックを抽出する（ステップＳ９１）。そして、セレクタ３２Ａは、空き状態のブロックに対応するブロック情報（空き状態ブロック情報）をセレクタ３２Ｂに送る。
【００９７】
続いて、セレクタ３２Ｂは、空き状態ブロック情報のうち割当ブロック設定値により設定された条件のブロック情報を抽出する（ステップＳ９２）。ここで、割当ブロック設定値には、
（Ａ）消去時期の最も古い方から一定数のブロック
（Ｂ）消去時期の最も古い方から一定割合数のブロック
（Ｃ）消去時期が一定時期より古いブロック
のいずれかが設定されている。条件（Ａ）〜（Ｃ）のいずれを割当ブロック設定値として使用するのかは、任意に選択することができる。例えば、割当ブロック設定値として条件（Ａ）を用いる場合、セレクタ３２Ｂは、空き状態のブロックのうち、消去時期の最も古い方から一定数のブロックを抽出する。そして、セレクタ３２Ｂは、抽出したブロックに対応するブロック情報をセレクタ３２Ｃに送る。
【００９８】
条件（Ａ）及び（Ｂ）は、空き状態のブロックを消去時期順にソートし、古い方から一定数／一定割合のブロックを探索する。従って、ステップＳ９２において選択されるブロック数を多くすることができるため、ステップＳ９３においてより消去回数が少ないブロックを選択する確率を高くすることが可能となる。条件（Ｃ）は、消去時期が一定時期を超えた空き状態のブロックのみをソートすればよいので、処理負荷が最も少ない。また、条件（Ａ）及び（Ｂ）は、消去時期の古いほうから常に一定数／一定割合のブロックを抽出するのに対し、条件（Ｃ）では、消去時期が一定期間以上空いたブロックが抽出される。このため、条件（Ｃ）は、消去間隔を必ず一定間隔空けることができ、その分、消去回数の比較候補を少なくすることが可能となる。
【００９９】
続いて、セレクタ３２Ｃは、セレクタ３２Ｂにより抽出されたブロックのうち消去回数が最も少ないブロックを割当ブロックとして選択する（ステップＳ９３）。この割当ブロックに対応する割当ブロック番号は、ブロック制御部３０に送られる。
【０１００】
以上詳述したように本実施形態によれば、外部から供給されたデータを書き込む割当ブロックを選択する際に、空き状態のブロックのうちで、消去時期が古く、かつ消去回数が少ないブロックを割当ブロックとして選択することが可能となる。これにより、リテンション特性がより良いブロックに外部からのデータを書き込むことができるため、ＮＡＮＤ型フラッシュメモリ１０の寿命を長くすることが可能となる。
【０１０１】
［第３の実施形態］
平準化処理を行うと、ＮＡＮＤ型フラッシュメモリ１０に含まれる全ブロックの消去回数を揃えることができる。しかし、平準化処理をあまり頻繁に行うと、平準化処理に伴う消去処理が多発するため、ＮＡＮＤ型フラッシュメモリ１０の寿命延長を妨げてしまう可能性がある。そこで、本実施形態では、負荷集中度が平準化閾値を超えた場合でも、平準化処理の回数を制限するようにしている。
【０１０２】
図２０は、本発明の第３の実施形態に係る平準化部３５の構成を示すブロック図である。平準化部３５は、負荷集中度管理部３６、平準化判定部３５Ａ、平準化閾値を格納する記憶部３５Ｂ、及び平準化制限部３７を備えている。負荷集中度管理部３６の構成は、第１の実施形態と同じである。
【０１０３】
平準化制限部３７は、負荷集中度管理部３６から送られる負荷集中度を受ける。そして、負荷集中度に基づいて、平準化処理の回数を制限するために使用される論理値を生成する。この論理値は、平準化判定部３５Ａに送られる。平準化判定部３５Ａは、負荷集中度が平準化閾値を超え、かつ、平準化制限部３７からの論理値が真である場合に、平準化処理を実行する。
【０１０４】
図２１は、平準化制限部３７の構成を示すブロック図である。平準化制限部３７は、乱数閾値テーブル３７Ａ、乱数生成部３７Ｂ、及び乱数判定部３７Ｃを備えている。
【０１０５】
乱数閾値テーブル３７Ａは、複数の負荷集中度と、これらに対応する複数の乱数閾値との対応関係を示す。乱数閾値テーブル３７Ａは、負荷集中度管理部３６から送られる負荷集中度に対応する乱数閾値を、乱数判定部３７Ｃに送る。平準化処理の回数をどの程度制限するかは、乱数閾値の値によって任意に設定することができる。例えば、負荷集中度が大きい（すなわち、短い間隔で消去処理が連続して行われている）ような使用状況では、乱数閾値を大きくすることで、平準化処理の回数をあまり制限しないようにする。一方、負荷集中度が小さい（すなわち、消去間隔が長い）ような使用状況では、乱数閾値を小さくすることで、平準化処理の回数を大きく制限する。
【０１０６】
乱数生成部３７Ｂは、乱数を生成する。この乱数は、乱数判定部３７Ｃに送られる。乱数判定部３７Ｃは、乱数が乱数閾値より小さいか否かを判定する。そして、乱数判定部３７Ｃは、乱数が乱数閾値より小さい場合は真の論理値を生成し、乱数が乱数閾値以上である場合は偽の論理値を生成する。この論理値は、平準化判定部３５Ａに送られる。
【０１０７】
次に、このように構成されたＮＡＮＤコントローラ１１の平準化処理について説明する。図２２は、ＮＡＮＤコントローラ１１の平準化処理を示すフローチャートである。
【０１０８】
まず、平準化判定部３５Ａは、負荷集中度管理部３６から送られる負荷集中度が平準化閾値を越えているか否かを判定する（ステップＳ６０）。平準化閾値を越えていると判定された場合、平準化制限部３７は、乱数判定処理を実行する（ステップＳ１００）。
【０１０９】
図２３は、平準化制限部３７の乱数判定処理を示すフローチャートである。まず、乱数生成部３７Ｂは、乱数を生成する（ステップＳ１０１）。続いて、平準化制限部３７は、乱数閾値テーブル３７Ａを用いて、負荷集中度管理部３６から送られる負荷集中度に対応する乱数閾値を算出する（ステップＳ１０２）。
【０１１０】
続いて、乱数判定部３７Ｃは、乱数が乱数閾値より小さいか否かを判定する（ステップＳ１０３）。そして、乱数判定部３７Ｃは、乱数が乱数閾値より小さい場合は、真の論理値を出力する（ステップＳ１０４）。一方、乱数判定部３７Ｃは、乱数が乱数閾値以上である場合は、偽の論理値を出力する（ステップＳ１０５）。
【０１１１】
図２２に戻って、平準化判定部３５Ａは、乱数判定部３７Ｃから出力された論理値を判定する（ステップＳ１０６）。そして、平準化判定部３５Ａは、この論理値が真である場合は、平準化処理（第１の実施形態で示したステップＳ６１〜６７）を実行する。一方、平準化判定部３５Ａは、この論理値が偽である場合は、平準化処理を中止する。
【０１１２】
以上詳述したように本実施形態によれば、負荷集中度が平準化閾値を超えた場合でも、平準化処理の回数を制限することができる。これにより、平準化処理に伴う消去処理が多発するのを防ぐことができるため、ＮＡＮＤ型フラッシュメモリ１０の寿命を延ばすことが可能となる。
【０１１３】
また、平準化処理によりＮＡＮＤ型フラッシュメモリ１０に含まれる全ブロックの消去回数を揃えることができるとともに、平準化処理の回数を最適化することが可能となる。
【０１１４】
［第４の実施形態］
第４の実施形態は、平準化処理を実行するか否かの判定の方法が第１の実施形態と異なっており、入替元ブロックの消去回数と入替先ブロックの消去回数との差が平準化閾値を超えた場合に、平準化処理を実行するようにしている。
【０１１５】
図２４は、本発明の第４の実施形態に係るＮＡＮＤコントローラ１１の構成を示すブロック図である。基本的には、第１の実施形態で示した図４と同じである。第１の実施形態と異なる部分は、平準化部３５の内部構成と、ブロック制御部３０から平準化部３５に送られる解放ブロック情報及び割当ブロック情報が省かれている（使用されない）ことである。
【０１１６】
図２５は、平準化部３５の構成を示すブロック図である。平準化部３５は、平準化判定部３５Ａ、及び平準化閾値を格納する記憶部３５Ｂを備えている。平準化判定部３５Ａは、入替元ブロック選択部３３から送られる入替元ブロック情報と、入替先ブロック選択部３４から送られる入替先ブロック情報とを受ける。そして、平準化判定部３５Ａは、入替元ブロック情報に含まれる消去回数と、入替先ブロック情報に含まれる消去回数との差を算出し、この差と平準化閾値とを用いて、今回の書き込み動作時に平準化処理を行うか否かを判定する。平準化処理を行う場合、平準化判定部３５Ａは、ＮＡＮＤインターフェース回路２５に、読出要求、消去要求、及び書込要求を発行する。
【０１１７】
図２６は、ＮＡＮＤコントローラ１１の平準化処理を示すフローチャートである。まず、入替元ブロック選択部３３は、入替元ブロック選択処理を実行する（ステップＳ１１０）。この入替元ブロック選択処理により選択された入替元ブロックの情報（入替元ブロック情報）は、平準化判定部３５Ａに送られる。続いて、入替先ブロック選択部３４は、入替先ブロック選択処理を実行する（ステップＳ１１１）。この入替先ブロック選択処理により選択された入替先ブロックの情報（入替先ブロック情報）は、平準化判定部３５Ａに送られる。なお、入替元ブロック選択処理、及び入替先ブロック選択処理は、第１の実施形態と同じである。
【０１１８】
続いて、平準化判定部３５Ａは、入替元ブロック情報に含まれる消去回数と、入替先ブロック情報に含まれる消去回数との差を算出する（ステップＳ１１２）。続いて、平準化判定部３５Ａは、算出した差が平準化閾値を越えているか否かを判定する（ステップＳ１１３）。この平準化閾値は、平準化処理を実行するか否かを判定するために使用され、また、ＮＡＮＤ型フラッシュメモリ１０の寿命（或いは、データリテンション期間）をどの程度延ばすかという基準に基づいて設定される。
【０１１９】
平準化閾値を越えていると判定された場合、ブロック制御部３０は、入替元ブロック選択部３３により選択された入替元ブロックを解放するブロック解放処理を実行する（ステップＳ６３）。このブロック解放処理は、第１の実施形態と同じである。その後は、第１の実施形態で示した図１３と同様に、ＮＡＮＤコントローラ１１は、ステップＳ６４〜Ｓ６７の動作を実行する。
【０１２０】
一方、ステップＳ１１３において平準化閾値を越えていない判定された場合、平準化部３５は、平準化処理を中止する。
【０１２１】
以上詳述したように本実施形態によれば、ブロック間の消去回数のアンバランスを検出することができ、さらに、このアンバランスを平準化処理により修正することができる。これにより、ブロック間の消去回数を揃えることができるため、ＮＡＮＤ型フラッシュメモリ１０の寿命を延ばすことが可能となる。
【０１２２】
なお、第３の実施形態で示した平準化制限部３７を第４の実施形態に適用することも可能である。
【０１２３】
［実施例］
上記各実施形態のメモリシステム１をＳＳＤ（Solid State Drive）として構成した場合の実施例について説明する。図２７は、ＳＳＤ１００の構成を示すブロック図である。
【０１２４】
ＳＳＤ１００は、データ保存用の複数のＮＡＮＤ型フラッシュメモリ（ＮＡＮＤメモリ）１０、データ転送用または作業領域用のＤＲＡＭ１０１、これらを制御するドライブ制御回路１０２、及び電源回路１０３を備えている。ドライブ制御回路１０２は、ＳＳＤ１００の外部に設けられる状態表示用ＬＥＤを制御するための制御信号を出力する。
【０１２５】
ＳＳＤ１００は、ＡＴＡインターフェース（ＡＴＡ  Ｉ／Ｆ）を介して、パーソナルコンピュータ等のホスト装置との間でデータを送受信する。また、ＳＳＤ１００は、ＲＳ２３２Ｃインターフェース（ＲＳ２３２Ｃ  Ｉ／Ｆ）を介して、デバッグ用機器との間でデータを送受信する。
【０１２６】
電源回路１０４は、外部電源を受け、この外部電源を用いて複数の内部電源を生成する。これらの内部電源は、ＳＳＤ１００内の各部に供給される。また、電源回路１０３は、外部電源の立ち上がりまたは立ち下りを検知して、パワーオンリセット信号またはパワーオフリセット信号を生成する。これらパワーオンリセット信号及びパワーオフリセット信号は、ドライブ制御回路１０２に送られる。
【０１２７】
図２８は、ドライブ制御回路１０２の構成を示すブロック図である。ドライブ制御回路１０２は、データアクセス用バス１０４、第１の回路制御用バス１０５、及び第２の回路制御用バス１０６を備えている。
【０１２８】
第１の回路制御用バス１０５には、ドライブ制御回路１０２全体を制御するプロセッサ１０７が接続されている。また、第１の回路制御用バス１０５には、各管理プログラム（ＦＷ：firmware）のブート用プログラムが格納されたブートＲＯＭ１０８がＲＯＭコントローラ１０９を介して接続されている。また、第１の回路制御用バス１０５には、電源回路１０３からのパワーオン／オフリセット信号を受けて、リセット信号及びクロック信号を各部に供給するクロックコントローラ１１０が接続されている。
【０１２９】
第２の回路制御用バス１０６は、第１の回路制御用バス１０５に接続されている。第２の回路制御用バス１０６には、状態表示用ＬＥＤにステータス表示用信号を供給するパラレルＩＯ（ＰＩＯ）回路１１１、ＲＳ２３２Ｃインターフェースを制御するシリアルＩＯ（ＳＩＯ）回路１１２が接続されている。
【０１３０】
ＡＴＡインターフェースコントローラ（ＡＴＡコントローラ）１１３、第１のＥＣＣ（Error Check and Correct）回路１１４、ＮＡＮＤコントローラ１１５、及びＤＲＡＭコントローラ１１９は、データアクセス用バス１０４と第１の回路制御用バス１０５との両方に接続されている。ＡＴＡコントローラ１１３は、ＡＴＡインターフェースを介してホスト装置との間でデータを送受信する。データアクセス用バス１０４には、データ作業領域として使用されるＳＲＡＭ１２０がＳＲＡＭコントローラ１２１を介して接続されている。
【０１３１】
ＮＡＮＤコントローラ１１５は、４つのＮＡＮＤメモリ１０とのインターフェース処理を行うＮＡＮＤ  Ｉ／Ｆ１１８、第２のＥＣＣ回路１１７、及びＮＡＮＤメモリ−ＤＲＡＭ間のアクセス制御を行うＤＭＡ転送制御用ＤＭＡコントローラ１１６を備えている。
【０１３２】
図２９は、プロセッサ１０７の構成を示すブロック図である。プロセッサ１０７は、データ管理部１２２、ＡＴＡコマンド処理部１２３、セキュリティ管理部１２４、ブートローダ１２５、初期化管理部１２６、デバッグサポート部１２７を備えている。
【０１３３】
データ管理部１２２は、ＮＡＮＤコントローラ１１５、第１のＥＣＣ回路１１４を介して、ＮＡＮＤメモリ−ＤＲＡＭ間のデータ転送、ＮＡＮＤチップに関する各種機能を制御する。
【０１３４】
ＡＴＡコマンド処理部１２３は、ＡＴＡコントローラ１１３、及びＤＲＡＭコントローラ１１９を介して、データ管理部１２２と協動してデータ転送処理を行う。セキュリティ管理部１２４は、データ管理部１２２及びＡＴＡコマンド処理部１２３と協動して各種のセキュリティ情報を管理する。ブートローダ１２５は、パワーオン時、各管理プログラム（ＦＷ）をＮＡＮＤメモリ１０からＳＲＡＭ１２０にロードする。
【０１３５】
初期化管理部１２６は、ドライブ制御回路１０２内の各コントローラ／回路の初期化を行う。デバッグサポート部１２７は、外部からＲＳ２３２Ｃインターフェースを介して供給されたデバッグ用データを処理する。
【０１３６】
図３０は、ＳＳＤ１００を搭載したポータブルコンピュータ２００の一例を示す斜視図である。ポータブルコンピュータ２００は、本体２０１と、表示ユニット２０２とを備えている。表示ユニット２０２は、ディスプレイハウジング２０３と、このディスプレイハウジング２０３に収容された表示装置２０４とを備えている。
【０１３７】
本体２０１は、筐体２０５と、キーボード２０６と、ポインティングデバイスであるタッチパッド２０７とを備えている。筐体２０５内部には、メイン回路基板、ＯＤＤユニット（Optical Disk Device）、カードスロット、ＳＳＤ１００等が収容されている。
【０１３８】
カードスロットは、筐体２０５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部２０８が設けられている。ユーザは、この開口部２０８を通じて筐体２０５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【０１３９】
ＳＳＤ１００は、従来のＨＤＤの置き換えとして、ポータブルコンピュータ２００内部に実装された状態として使用してもよいし、ポータブルコンピュータ２００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【０１４０】
尚、上記各実施形態のメモリシステム１は、ＳＳＤに限らず、例えば、ＳＤＴＭカードに代表されるメモリカードとして構成することも可能である。メモリシステム１をメモリカードとして構成する場合、ポータブルコンピュータに限らず、携帯電話、ＰＤＡ、デジタルスチルカメラ、デジタルビデオカメラ等、各種電子機器に対して適用可能である。
【０１４１】
本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で、構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を構成することができる。例えば、実施形態に開示される全構成要素から幾つかの構成要素を削除してもよいし、異なる実施形態の構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１４２】
１…メモリシステム、２…ＣＰＵ、３…メインメモリ、４…メモリコントローラ、１０…ＮＡＮＤ型フラッシュメモリ、１１…ＮＡＮＤコントローラ、２１…ホストインターフェース回路、２２…ＭＰＵ、２３…ＲＯＭ、２４…ＲＡＭ、２５…ＮＡＮＤインターフェース回路、３０…ブロック制御部、３０Ａ…アドレステーブル、３０Ｂ…ブロックテーブル、３０Ｃ，３１Ｂ，３６Ｃ…演算部、３１…消去時期計測部、３１Ａ…消去回数カウンタ、３２…割当ブロック選択部、３２Ａ〜３２Ｃ，３３Ａ〜３３Ｃ，３４Ａ〜３４Ｃ…セレクタ、３２Ｄ，３３Ｄ，３４Ｄ，３５Ｂ…記憶部、３３…入替元ブロック選択部、３４…入替先ブロック選択部、３５…平準化部、３５Ａ…平準化判定部、３６…負荷集中度管理部、３６Ａ…解放ブロック用加算値テーブル、３６Ｂ…割当ブロック用加算値テーブル、３６Ｄ…負荷集中度カウンタ、３７…平準化制限部、３７Ａ…乱数閾値テーブル、３７Ｂ…乱数生成部、３７Ｃ…乱数判定部、１００…ＳＳＤ、１０１…ＤＲＡＭ、１０２…ドライブ制御回路、１０３…電源回路、１０４…データアクセス用バス、１０５…第１の回路制御用バス、１０６…第２の回路制御用バス、１０７…プロセッサ、１０８…ブートＲＯＭ、１０９…ＲＯＭコントローラ、１１０…クロックコントローラ、１１１…ＰＩＯ回路、１１２…ＳＩＯ回路、１１３…ＡＴＡインターフェースコントローラ、１１４…第１のＥＣＣ回路、１１５…ＮＡＮＤコントローラ、１１６…ＤＭＡコントローラ、１１７…第２のＥＣＣ回路、１１９…ＤＲＡＭコントローラ、１２０…ＳＲＡＭ、１２１…ＳＲＡＭコントローラ、１２２…データ管理部、１２３…ＡＴＡコマンド処理部、１２４…セキュリティ管理部、１２５…ブートローダ、１２６…初期化管理部、１２７…デバッグサポート部、２００…ポータブルコンピュータ、２０１…本体、２０２…表示ユニット、２０３…ディスプレイハウジング、２０４…表示装置、２０５…筐体、２０６…キーボード、２０７…タッチパッド、２０８…開口部。
【図１】
2010108522.tif 000003
【図２】
2010108522.tif 000004
【図３】
2010108522.tif 000005
【図４】
2010108522.tif 000006
【図５】
2010108522.tif 000007
【図６】
2010108522.tif 000008
【図７】
2010108522.tif 000009
【図８】
2010108522.tif 000010
【図９】
2010108522.tif 000011
【図１０】
2010108522.tif 000012
【図１１】
2010108522.tif 000013
【図１２】
2010108522.tif 000014
【図１３】
2010108522.tif 000015
【図１４】
2010108522.tif 000016
【図１５】
2010108522.tif 000017
【図１６】
2010108522.tif 000018
【図１７】
2010108522.tif 000019
【図１８】
2010108522.tif 000020
【図１９】
2010108522.tif 000021
【図２０】
2010108522.tif 000022
【図２１】
2010108522.tif 000023
【図２２】
2010108522.tif 000024
【図２３】
2010108522.tif 000025
【図２４】
2010108522.tif 000026
【図２５】
2010108522.tif 000027
【図２６】
2010108522.tif 000028
【図２７】
2010108522.tif 000029
【図２８】
2010108522.tif 000030
【図２９】
2010108522.tif 000031
【図３０】
2010108522.tif 000032