(57)【要約】【課題】低コストで、並列にアクセスされるブロックの集合を制御することができるメモリシステムを実現する。【解決手段】メモリシステムは、異なる不揮発性メモリチップにそれぞれ属する複数のブロックを各々が含む複数の並列アクセス単位を制御する。メモリシステムは、複数の並列アクセス単位の各々に含まれる不良ブロックの数が第１の数以下になるように規定された複数のアドレス変換ルールを示す情報を格納しており、各アドレス変換ルールは、各不揮発性メモリチップに送出されるブロックアドレスを別のブロックアドレスに変換するための数学的規則を示す。メモリシステム内のアドレス変換回路は、複数のアドレス変換ルールの各々の数学的規則に基づいて、各不揮発性メモリチップに送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行する。【選択図】図１０
2019212103.tif 000002
【特許請求の範囲】
【請求項１】
メモリシステムであって、
各々が複数のブロックを含む複数の不揮発性メモリチップと、
前記複数の不揮発性メモリチップに電気的に接続され、異なる不揮発性メモリチップにそれぞれ属する複数のブロックを各々が含む複数の並列アクセス単位を制御するように構成されたコントローラとを具備し、
前記メモリシステムは、前記複数の並列アクセス単位の各々に含まれる不良ブロックの数が第１の数以下になるように規定された、前記複数の不揮発性メモリチップに対応する複数のアドレス変換ルールを示す情報を格納しており、前記複数のアドレス変換ルールの各々は、各不揮発性メモリチップに送出されるブロックアドレスを別のブロックアドレスに変換するための数学的規則を示し、
前記コントローラは、前記複数のアドレス変換ルールの各々の数学的規則に基づいて、各不揮発性メモリチップに送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行するように構成されたアドレス変換回路を具備する、メモリシステム。
【請求項２】
前記第１の数は、前記複数の不揮発性メモリチップにそれぞれ含まれる不良ブロックの数の平均値以下の整数に設定されている請求項１記載のメモリシステム。
【請求項３】
前記アドレス変換回路は、各不揮発性メモリチップに送出されるブロックアドレスの各々に同じアドレス変換動作を施すことによって、各不揮発性メモリチップに送出されるブロックアドレスの各々を別のブロックアドレスに変換するように構成されている請求項１記載のメモリシステム。
【請求項４】
前記アドレス変換回路は前記複数の不揮発性メモリチップに対応する複数のアドレス変換回路部を含み、前記複数のアドレス変換回路部の各々は、対応するアドレス変換ルールの数学的規則に基づいて、一つの不揮発性メモリチップに送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行するように構成されている請求項１記載のメモリシステム。
【請求項５】
前記複数のアドレス変換ルールの各々は、各不揮発性メモリチップに送出されるブロックアドレスに任意の整数を加える加算、前記ブロックアドレスから任意の整数を減ずる減算、各不揮発性メモリチップに対応する最大ブロックアドレスから前記ブロックアドレスを減ずる演算、または前記ブロックアドレスを表す複数のビットの一部または全てを反転する演算のうちの任意の一つまたは任意の２以上の組み合わせを示す請求項１記載のメモリシステム。
【請求項６】
前記情報は前記メモリシステムに永続的に格納されている請求項１記載のメモリシステム。
【請求項７】
前記情報は前記複数の不揮発性メモリチップの少なくとも一つに、または前記メモリシステムに含まれる他の不揮発性メモリのいずれかに永続的に格納されている請求項１記載のメモリシステム。
【請求項８】
各並列アクセス単位に含まれる複数のブロックそれぞれのブロックアドレスは、各並列アクセス単位を識別するアドレスから数学的規則に基づいて定められる請求項１記載のメモリシステム。
【請求項９】
メモリシステムであって、
各々が複数のプレーンを含む複数の不揮発性メモリチップと、
前記複数の不揮発性メモリチップに電気的に接続され、異なるプレーンにそれぞれ属する複数のブロックを各々が含む複数の並列アクセス単位を制御するように構成されたコントローラとを具備し、
前記メモリシステムは、前記複数の並列アクセス単位の各々に含まれる不良ブロックの数が第１の数以下になるように規定された、前記複数の不揮発性メモリチップに含まれる複数のプレーンに対応する複数のアドレス変換ルールを示す情報を格納しており、前記複数のアドレス変換ルールの各々は、各プレーンに送出されるブロックアドレスを別のブロックアドレスに変換するための数学的規則を示し、
前記コントローラは、前記複数のアドレス変換ルールの各々の数学的規則に基づいて、各プレーンに送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行するように構成されたアドレス変換回路を具備する、メモリシステム。
【請求項１０】
前記第１の数は、前記複数のプレーンにそれぞれ含まれる不良ブロックの数の平均値以下の整数に設定されている請求項９記載のメモリシステム。
【請求項１１】
前記アドレス変換回路は、各プレーンに送出されるブロックアドレスの各々に同じアドレス変換動作を施すことによって、各プレーンに送出されるブロックアドレスの各々を別のブロックアドレスに変換するように構成されている請求項９記載のメモリシステム。
【請求項１２】
前記アドレス変換回路は前記複数のプレーンに対応する複数のアドレス変換回路部を含み、前記複数のアドレス変換回路部の各々は、対応するアドレス変換ルールの数学的規則に基づいて、一つのプレーンに送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行するように構成されている請求項９記載のメモリシステム。
【請求項１３】
前記複数のアドレス変換ルールの各々は、各プレーンに送出されるブロックアドレスに任意の整数を加える加算、前記ブロックアドレスから任意の整数を減ずる減算、各プレーンに対応する最大ブロックアドレスから前記ブロックアドレスを減ずる演算、または前記ブロックアドレスを表す複数のビットの一部または全てを反転する演算のうちの任意の一つまたは任意の２以上の組み合わせを示す請求項９記載のメモリシステム。
【請求項１４】
前記情報は前記メモリシステムに永続的に格納されている請求項９記載のメモリシステム。
【請求項１５】
前記情報は前記複数の不揮発性メモリチップの少なくとも一つに、または前記メモリシステムに含まれる他の不揮発性メモリのいずれかに永続的に格納されている請求項９記載のメモリシステム。
【請求項１６】
各並列アクセス単位に含まれる複数のブロックそれぞれのブロックアドレスは、各並列アクセス単位を識別するアドレスから数学的規則に基づいて定められる請求項９記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
【背景技術】
【０００２】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、ＮＡＮＤフラッシュ技術ベースのソリッドステートドライブ（ＳＳＤ）が知られている。
ＳＳＤのようなメモリシステムにおいては、リード／ライト性能を改善するために、複数のブロック（物理ブロック）を並列にアクセスする技術が使用される場合がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２０１５／０３３９２２３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、通常、メモリシステムに搭載される個々の不揮発性メモリチップには、利用できない不良ブロックが存在する場合がある。並列にアクセスされるブロックの集合を構築するためには、このような不良ブロックの存在を考慮することが必要となる。
本発明が解決しようとする課題は、低コストで、並列にアクセスされるブロックの集合を制御することができるメモリシステムを提供することである。
【課題を解決するための手段】
【０００５】
実施形態によれば、メモリシステムは、各々が複数のブロックを含む複数の不揮発性メモリチップと、前記複数の不揮発性メモリチップに電気的に接続され、異なる不揮発性メモリチップにそれぞれ属する複数のブロックを各々が含む複数の並列アクセス単位を制御するように構成されたコントローラとを具備する。前記メモリシステムは、前記複数の並列アクセス単位の各々に含まれる不良ブロックの数が第１の数以下になるように規定された、前記複数の不揮発性メモリチップに対応する複数のアドレス変換ルールを示す情報を格納しており、前記複数のアドレス変換ルールの各々は、各不揮発性メモリチップに送出されるブロックアドレスを別のブロックアドレスに変換するための数学的規則を示す。前記コントローラは、前記複数のアドレス変換ルールの各々の数学的規則に基づいて、各不揮発性メモリチップに送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行するように構成されたアドレス変換回路を具備する。
【図面の簡単な説明】
【０００６】
【図１】実施形態に係るメモリシステム（フラッシュストレージデバイス）を含む情報処理システムの構成例を示すブロック図。
【図２】同実施形態のメモリシステムに含まれる不揮発性メモリの構成例を示すブロック図。
【図３】同実施形態のメモリシステムにおいて使用される複数のチャンネルと複数のＮＡＮＤ型フラッシュメモリチップとの関係を示すブロック図。
【図４】同実施形態のメモリシステムにおいて使用される複数のチャンネルと各々が複数のプレーンを含む複数のＮＡＮＤ型フラッシュメモリチップとの関係を示すブロック図。
【図５】同実施形態のメモリシステムにおいて使用される、ある並列アクセス単位の構成例を示す図。
【図６】同実施形態のメモリシステムにおいて使用される、ある並列アクセス単位の別の構成例を示す図。
【図７】複数のＮＡＮＤ型フラッシュメモリチップに存在する不良ブロックのパターンの例を説明するための図。
【図８】同実施形態のメモリシステムによって実行されるブロック再配置動作を説明するための図。
【図９】同実施形態のメモリシステムによって実行されるアドレス変換動作の例を説明するための図。
【図１０】同実施形態のメモリシステムに含まれる複数のアドレス変換回路と複数のＮＡＮＤ型フラッシュメモリチップとの関係の例を示すブロック図。
【図１１】同実施形態のメモリシステムに含まれる複数のアドレス変換回路と複数のプレーンとの関係の例を示すブロック図。
【図１２】同実施形態のメモリシステムに含まれる複数のアドレス変換回路と複数のＮＡＮＤ型フラッシュメモリチップとの関係の別の例を示すブロック図。
【図１３】同実施形態のメモリシステムに含まれるアドレス変換回路の構成例を示すブロック図。
【発明を実施するための形態】
【０００７】
以下、図面を参照して、実施形態を説明する。  
まず、図１を参照して、一実施形態に係るメモリシステムを含む情報処理システム１の構成を説明する。
このメモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、ＮＡＮＤフラッシュ技術ベースのフラッシュストレージデバイス３として実現されている。
【０００８】
情報処理システム１は、ホスト（ホストデバイス）２と、フラッシュストレージデバイス３とを含む。ホスト２は、フラッシュストレージデバイス３をアクセスする情報処理装置（コンピューティングデバイス）である。ホスト２は、サーバコンピュータであってもよいし、パーソナルコンピュータであってもよい。
【０００９】
ホスト２がサーバコンピュータとして実現されているケースにおいては、ホスト２は、ネットワーク５０を介して複数のエンドユーザ端末（クライアント）５１に接続されてもよい。ホスト２は、これらエンドユーザ端末６１に対して様々なサービスを提供することができる。
【００１０】
ホスト（サーバ）２によって提供可能なサービスの例には、（１）システム稼働プラットフォームを各クライアント（各エンドユーザ端末６１）に提供するプラットホーム・アズ・ア・サービス（ＰａａＳ）、（２）仮想サーバのようなインフラストラクチャを各クライアント（各エンドユーザ端末６１）に提供するインフラストラクチャ・アズ・ア・サービス（ＩａａＳ）、等がある。
【００１１】
複数の仮想マシンが、このホスト（サーバ）２として機能する物理サーバ上で実行されてもよい。ホスト（サーバ）２上で走るこれら仮想マシンの各々は、対応する幾つかのクライアント（エンドユーザ端末６１）に各種サービスを提供するように構成された仮想サーバとして機能することができる。
【００１２】
フラッシュストレージデバイス３は、ホスト２として機能する情報処理装置の外部ストレージとして使用され得る。フラッシュストレージデバイス３は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
【００１３】
ホスト２とフラッシュストレージデバイス３とを相互接続するためのインタフェースとしては、ＳＣＳＩ、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）、ＡＴＡ、Ｓｅｒｉａｌ  ＡＴＡ（ＳＡＴＡ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）（登録商標）、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｆｉｂｒｅ  ｃｈａｎｎｅｌ、ＮＶＭ  Ｅｘｐｒｅｓｓ（ＮＶＭｅ）（登録商標）等を使用し得る。
【００１４】
フラッシュストレージデバイス３は、コントローラ４および不揮発性メモリ（ＮＡＮＤ型フラッシュメモリ）５を備える。ＳＳＤ３は、ランダムアクセスメモリ、例えば、ＤＲＡＭ６も備えていてもよい。
ＮＡＮＤ型フラッシュメモリ５は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。ＮＡＮＤ型フラッシュメモリ５は、２次元構造のＮＡＮＤ型フラッシュメモリであってもよいし、３次元構造のＮＡＮＤ型フラッシュメモリであってもよい。
【００１５】
ＮＡＮＤ型フラッシュメモリ５のメモリセルアレイは、図２に示されているように、複数のブロックＢＬＫ０〜ＢＬＫｍ−１を含む。ブロックＢＬＫ０〜ＢＬＫｍ−１の各々は複数のページ（ここではページＰ０〜Ｐｎ−１）を含む。ブロックＢＬＫ０〜ＢＬＫｍ−１の各々は、消去動作の単位として機能する。ブロックは、「物理ブロック」、または「消去ブロック」と称されることもある。ページＰ０〜Ｐｎ−１の各々は、同一ワード線に接続された複数のメモリセルを含む。ページＰ０〜Ｐｎ−１は、データ書き込み動作およびデータ読み込み動作の単位である。
【００１６】
本実施形態では、コントローラ４は、ブロック（物理ブロック）の集合を各々が含む複数の並列アクセス単位を制御する。並列アクセス単位は、「スーパーブロック」、または「論理ブロック」とも称される。各並列アクセス単位は、異なるＮＡＮＤ型フラッシュメモリチップにそれぞれ属する複数のブロック（物理ブロック）を含むブロックグループである。コントローラ４は、ある並列アクセス単位に含まれる複数のブロックに対するデータ書き込み動作およびデータ読み出し動作を並列に実行することができる。コントローラ４は、並列アクセス単位の単位で消去動作を実行する。したがって、並列アクセス単位は、実際上、消去動作の単位として機能する。
【００１７】
図１に示されているように、ＮＡＮＤ型フラッシュメモリ５に格納されるデータは、ユーザデータと、管理データとに大別される。ユーザデータはホスト２によってその書き込みが要求されたデータである。管理データは、コントローラ４の動作を制御するための様々な管理情報を含む。管理情報の例には、論理物理アドレス変換テーブルとして機能するルックアップテーブル（ＬＵＴ）３２、および並列アクセス単位にそれぞれ含まれる不良ブロックの数が均一になるように各チップ内のブロック間でブロックアドレスを入れ替えるためのルールセット３３が含まれてもよい。
【００１８】
コントローラ４は、Ｔｏｇｇｌｅインタフェース、オープンＮＡＮＤフラッシュインタフェース（ＯＮＦＩ）のようなＮＡＮＤインタフェース１３を介して、不揮発性メモリであるＮＡＮＤ型フラッシュメモリ５に電気的に接続されている。コントローラ４は、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたメモリコントローラ（制御回路）である。
【００１９】
ＮＡＮＤ型フラッシュメモリ５は、図３に示すように、複数のＮＡＮＤ型フラッシュメモリチップ（ＮＡＮＤ型フラッシュメモリダイ）を含んでいてもよい。個々のＮＡＮＤ型フラッシュメモリチップは独立して動作可能である。このため、ＮＡＮＤ型フラッシュメモリチップは、並列動作可能な単位として機能する。図３においては、ＮＡＮＤインタフェース１３に１６個のチャンネルＣｈ．１〜Ｃｈ．１６が接続されており、１６個のチャンネルＣｈ．１〜Ｃｈ．１６の各々に２つのＮＡＮＤ型フラッシュメモリチップが接続されている場合が例示されている。この場合、チャンネルＣｈ．１〜Ｃｈ．１６に接続された１６個のＮＡＮＤ型フラッシュメモリチップ＃０〜＃１５がバンク＃０として編成されてもよく、またチャンネルＣｈ．１〜Ｃｈ．１６に接続された残りの１６個のＮＡＮＤ型フラッシュメモリチップ＃１６〜＃３１がバンク＃１として編成されてもよい。バンクは、複数のメモリモジュールをバンクインタリーブによって並列動作させるための単位として機能する。図３の構成例においては、１６チャンネルと、２つのバンクを使用したバンクインタリーブとによって、最大３２個のＮＡＮＤ型フラッシュメモリチップを並列動作させることができる。
【００２０】
本実施形態では、コントローラ４は、上述したように、各々が複数のブロックＢＬＫから構成される複数の並列アクセス単位（以下、スーパーブロックと称する）を制御する。
一つのスーパーブロックは、これに限定されないが、ＮＡＮＤ型フラッシュメモリチップ＃０〜＃３１から一つずつ選択される計３２個のブロックＢＬＫを含んでいてもよい。図３においては、ハッチングによって示されるブロック（物理ブロック）それぞれは、ある一つのスーパーブロックに含まれるブロックを表している。
【００２１】
なお、ＮＡＮＤ型フラッシュメモリチップ＃０〜＃３１の各々はマルチ・プレーン構成を有していてもよい。各プレーンは、複数のブロック（物理ブロック）を含む。例えば、ＮＡＮＤ型フラッシュメモリチップ＃０〜＃３１の各々が、図４に示されているように、２つのプレーン（ＰＬＡＮＥ０、ＰＬＡＮＥ１）を含むマルチ・プレーン構成を有する場合には、一つのスーパーブロックは、ＮＡＮＤ型フラッシュメモリチップ＃０〜＃３１に対応する６４個のプレーンから一つずつ選択される計６４個のブロックＢＬＫを含んでいてもよい。図４においては、ハッチングによって示されるブロック（物理ブロック）それぞれは、ある一つのスーパーブロックに含まれるブロックを表している。
【００２２】
図５には、３２個のブロック（ここでは、ＮＡＮＤ型フラッシュメモリチップ＃０内のブロックＢＬＫ１、ＮＡＮＤ型フラッシュメモリチップ＃１内のブロックＢＬＫ２、ＮＡＮＤ型フラッシュメモリチップ＃２内のブロックＢＬＫ７、ＮＡＮＤ型フラッシュメモリチップ＃３内のブロックＢＬＫ４、ＮＡＮＤ型フラッシュメモリチップ＃４内のブロックＢＬＫ６、…ＮＡＮＤ型フラッシュメモリチップ＃３１内のブロックＢＬＫ２）を含む一つのスーパーブロック（ＳＢ）が例示されている。
【００２３】
このスーパーブロック（ＳＢ）へのデータの書き込みにおいては、コントローラ４は、ＮＡＮＤ型フラッシュメモリチップ＃０内のブロックＢＬＫ１のページ０、ＮＡＮＤ型フラッシュメモリチップ＃１内のブロックＢＬＫ２のページ０、ＮＡＮＤ型フラッシュメモリチップ＃２内のブロックＢＬＫ７のページ０、ＮＡＮＤ型フラッシュメモリチップ＃３内のブロックＢＬＫ４のページ０、ＮＡＮＤ型フラッシュメモリチップ＃４内のブロックＢＬＫ６のページ０、…、ＮＡＮＤ型フラッシュメモリチップ＃３１内のブロックＢＬＫ２のページ０、ＮＡＮＤ型フラッシュメモリチップ＃０内のブロックＢＬＫ１のページ１、ＮＡＮＤ型フラッシュメモリチップ＃１内のブロックＢＬＫ２のページ１、…という順序でデータを書き込んでもよい。これにより、最大３２ページへのデータ書き込みを並列に実行することができる。また、このスーパーブロック（ＳＢ）からのデータの読み出しにおいても、最大で３２ページからのデータの読み出しを並列に実行することができる。
【００２４】
図６には、６４個のブロック（ここでは、ＮＡＮＤ型フラッシュメモリチップ＃０内のプレーン０のブロックＢＬＫ１、ＮＡＮＤ型フラッシュメモリチップ＃０内のプレーン１のブロックＢＬＫ０、ＮＡＮＤ型フラッシュメモリチップ＃１内のプレーン０のブロックＢＬＫ２、ＮＡＮＤ型フラッシュメモリチップ＃１内のプレーン１のブロックＢＬＫ３、ＮＡＮＤ型フラッシュメモリチップ＃２内のプレーン０のブロックＢＬＫ７、ＮＡＮＤ型フラッシュメモリチップ＃２内のプレーン１のブロックＢＬＫ６、ＮＡＮＤ型フラッシュメモリチップ＃３内のプレーン０のブロックＢＬＫ４、ＮＡＮＤ型フラッシュメモリチップ＃３内のプレーン１のブロックＢＬＫ４、ＮＡＮＤ型フラッシュメモリチップ＃４内のプレーン０のブロックＢＬＫ６、ＮＡＮＤ型フラッシュメモリチップ＃４内のプレーン１のブロックＢＬＫ２、…ＮＡＮＤ型フラッシュメモリチップ＃３１内のプレーン０のブロックＢＬＫ２、ＮＡＮＤ型フラッシュメモリチップ＃３１内のプレーン１のブロックＢＬＫ２）を含む一つのスーパーブロック（ＳＢ）が例示されている。
【００２５】
次に、図１のコントローラ４の構成について説明する。
コントローラ４は、複数のチャンネル（例えば１６個のチャンネル）を介して複数のＮＡＮＤ型フラッシュメモリチップに電気的に接続される。コントローラ４は、異なるＮＡＮＤ型フラッシュメモリチップ（または異なるプレーン）にそれぞれ属する複数のブロック（物理ブロック）を各々が含む複数のスーパーブロックを制御する。
【００２６】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ５のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層（ＦＴＬ）として機能してもよい。このＦＴＬによって実行されるデータ管理には、（１）論理アドレスそれぞれとＮＡＮＤ型フラッシュメモリ５の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、（２）ＮＡＮＤ型フラッシュメモリ５の制約（例えば、ページ単位のリード／ライト動作とブロック（スーパーブロック）単位の消去動作）を隠蔽するための処理、等が含まれる。論理アドレスは、フラッシュストレージデバイス３の論理アドレス空間内の位置をアドレス指定するためにホスト２によって使用されるアドレスである。この論理アドレスとしては、ＬＢＡ（ｌｏｇｉｃａｌ  ｂｌｏｃｋ  ａｄｄｒｅｓｓ（ａｄｄｒｅｓｓｉｎｇ））が使用され得る。
【００２７】
論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングの管理は、論理物理アドレス変換テーブルとして機能するルックアップテーブル（ＬＵＴ）３２を用いて実行される。コントローラ４は、ルックアップテーブル（ＬＵＴ）３２を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスのデータが書き込まれているＮＡＮＤ型フラッシュメモリ５内の最新の物理記憶位置を示す。アドレス変換テーブル（ＬＵＴ３２）は、フラッシュストレージデバイス３の電源オン時にＮＡＮＤ型フラッシュメモリ５からＤＲＡＭ６にロードされてもよい。
【００２８】
ＮＡＮＤ型フラッシュメモリ５においては、ページへのデータ書き込みは１消去サイクル当たり１回のみ可能である。つまり、データが既に書き込まれているブロック内の領域に新たなデータを直接上書きすることができない。このため、既に書き込まれているデータを更新する場合には、コントローラ４はそのブロック内または別ブロックの未書き込み領域に新たなデータを書き込み、そして以前のデータを無効データとして扱う。換言すれば、コントローラ４は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ４は、ＬＵＴ３２を更新してこの論理アドレスをこの別の物理記憶位置に関連付けると共に、以前のデータを無効化する。
【００２９】
ブロック管理には、不良ブロック（バッドブロック）の管理と、ウェアレベリングと、ガベージコレクション（ＧＣ）等が含まれる。不良ブロックはデータを正常にリード／ライトすることができない物理ブロックを意味する。ウェアレベリングは、ブロックそれぞれの消耗を均一化するための動作である。ＧＣは、有効データと無効データとが混在する幾つかのブロック（ＧＣソーススーパーブロック）内の有効データをフリーブロック（ＧＣデスティネーションスーパーブロック）にコピーする。そして、コントローラ４は、ルックアップテーブル（ＬＵＴ）３２を更新して、コピーされた有効データの論理アドレスそれぞれにコピー先物理アドレスをマッピングする。有効データが別のブロック（ＧＣデスティネーションスーパーブロック）にコピーされることによって無効データのみになったブロック（スーパーブロック）はフリーブロック（フリースーパーブロック）として解放される。これによって、このスーパーブロックはこのスーパーブロックに属するブロックの集合に対する消去動作が実行された後に再利用することが可能となる。
【００３０】
ここで、有効データとは、ある論理アドレスに関連付けられている最新のデータを意味する。例えば、ＬＵＴ３２から参照されているデータ（すなわち論理アドレスから最新のデータとして紐付けられているデータ）は有効データである。有効データは、後にホスト２からリードされる可能性がある。無効データとは、もはやどの論理アドレスにも関連付けられていないデータを意味する。どの論理アドレスにも関連付けられていないデータは、ホスト２からリードされる可能性が無い。
【００３１】
図１に示されているように、コントローラ４は、ホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４、およびハードウェアロジック１５、等を含む。これらホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４、およびハードウェアロジック１５は、バス１０を介して相互接続される。
【００３２】
ホストインタフェース１１は、ホスト２との通信を実行するように構成されたホストインタフェース回路である。ホストインタフェース１１は、ホスト２から様々な要求（コマンド）を受信する。これら要求（コマンド）には、ライト要求（ライトコマンド）、リード要求（リードコマンド）、アンマップ／トリム要求（アンマップ／トリムコマンド）、他の様々な要求（コマンド）が含まれる。
【００３３】
ＣＰＵ１２は、ホストインタフェース１１、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４、ハードウェアロジック１５を制御するように構成されたプロセッサである。ＣＰＵ１２は、フラッシュストレージデバイス３の電源オンに応答してＮＡＮＤ型フラッシュメモリ５または図示しないＲＯＭから制御プログラム（ファームウェア）をＤＲＡＭ６にロードし、そしてこのファームウェアを実行することによって様々な処理を行う。なお、ファームウェアはコントローラ４内の図示しないＳＲＡＭ上にロードされてもよい。このＣＰＵ１２は、ホスト２からの様々なコマンドを処理するためのコマンド処理等を実行することができる。ＣＰＵ１２の動作は、ＣＰＵ１２によって実行される上述のファームウェアによって制御される。なお、コマンド処理の一部または全部は、コントローラ４内の専用ハードウェアによって実行してもよい。
【００３４】
ＣＰＵ１２は、ライト制御部２１およびリード制御部２２として機能することができる。これらライト制御部２１およびリード制御部２２の各々の一部または全部も、コントローラ４内の専用ハードウェアによって実現されてもよい。
ブロック（スーパーブロック）の状態は、有効データを格納しているアクティブブロックと、有効データを格納していないフリーブロックとに大別される。アクティブブロックである各スーパーブロックは、アクティブブロックプールと称されるリストによって管理される。一方、フリーブロックである各スーパーブロックは、フリーブロックプールと称されるリストによって管理される。
【００３５】
ライト制御部２１は、フリーブロックプールから選択された一つのフリーブロック（フリースーパーブロック）を、ホスト２から受信されるデータが書き込まれるべき書き込み先スーパーブロックとして割り当てる。そして、ライト制御部２１は、ホスト２から受信されるライトデータを、書き込み先スーパーブロックに含まれる複数のブロックに並列に書き込むための処理を実行する。書き込み先スーパーブロック全体がデータで満たされた場合、この書き込み先スーパーブロックはアクティブブロックプールによって管理される。また、フリーブロックプールから新たな書き込み先スーパーブロックが割り当てられる。
【００３６】
リード制御部２２は、ホスト２から受信されるリードコマンドによって指定された論理アドレスに対応するデータを、このデータが格納されているスーパーブロック内の物理記憶位置から読み出す。
ＮＡＮＤインタフェース１３は、ＣＰＵ１２の制御の下、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたメモリ制御回路である。ＤＲＡＭインタフェース１４は、ＣＰＵ１２の制御の下、ＤＲＡＭ６を制御するように構成されたＤＲＡＭ制御回路である。ＤＲＡＭ６の記憶領域の一部は、ライトデータを一時的に格納するためのライトバッファ（ＷＢ）３１として使用されてもよい。また、ＤＲＡＭ６の記憶領域の他の一部は、ＮＡＮＤ型フラッシュメモリ５からロードされるＬＵＴ３２およびルールセット３３を格納するために使用されてもよい。
【００３７】
このルールセット３３は、複数のスーパーブロックの各々に含まれる不良ブロックの数がある閾値以下になるように規定された複数のアドレス変換ルール（ルール＃１、ルール＃２、…、ルール＃ｎ）を含む。これらアドレス変換ルール（ルール＃１、ルール＃２、…、ルール＃ｎ）は、フラッシュストレージデバイス３に含まれる複数のＮＡＮＤ型フラッシュメモリチップにそれぞれ対応する。あるいは、各ＮＡＮＤ型フラッシュメモリチップがマルチ・プレーン構成を有するケースにおいては、ルールセット３３は、プレーンの総数に等しい数のアドレス変換ルール（ルール＃１、ルール＃２、…、ルール＃ｎ）を含んでもよい。この場合、これらアドレス変換ルール（ルール＃１、ルール＃２、…、ルール＃ｎ）は、これら複数のプレーンにそれぞれ対応する。つまり、ルールセット３３は、複数のＮＡＮＤ型フラッシュメモリチップ（または複数のプレーン）にそれぞれ対応する複数のアドレス変換ルールを示す情報である。
【００３８】
例えば、フラッシュストレージデバイス３の工場出荷前に、フラッシュストレージデバイス３に搭載される複数のＮＡＮＤ型フラッシュメモリチップの各々に存在する不良ブロックのパターンに基づいて、スーパーブロック間で不良ブロックの数を均一にするためアドレス変換ルールがチップ毎（またはプレーン毎）に決定される。そして、これら決定されたアドレス変換ルールを含むルールセット３３は、フラッシュストレージデバイス３に永続的に格納される。例えば、ルールセット３３は、複数のＮＡＮＤ型フラッシュメモリチップの少なくとも一つに永続的に格納されてもよい。あるいは、フラッシュストレージデバイス３がＮＡＮＤ型フラッシュメモリチップ以外の不揮発性メモリ（例えば、ＮＯＲ型フラッシュメモリチップ）をさらに含む構成である場合においては、ルールセット３３は、ＮＡＮＤ型フラッシュメモリチップ以外のこの不揮発性メモリに永続的に格納されてもよい。
【００３９】
一つのアドレス変換ルールは、このアドレス変換ルールに対応する一つの不揮発性メモリチップ（または一つのプレーン）に送出されるブロックアドレスを、このチップ（またはこのプレーン）の別のブロックアドレスに変換するための数学的規則を示す。ブロックアドレスは、あるＮＡＮＤ型フラッシュメモリチップ（または、あるプレーン）内の特定のブロック（物理ブロック）を一意に識別するためのアドレスであり、ブロック番号と称されることもある。使用可能な数学的規則の例は、各ＮＡＮＤ型フラッシュメモリチップ（または各プレーン）に送出されるブロックアドレスに任意の整数を加える加算、ブロックアドレスから任意の整数を減ずる減算、各ＮＡＮＤ型フラッシュメモリチップ（または各プレーン）に対応する最大ブロックアドレスからブロックアドレスを減ずる演算、またはブロックアドレスを表す複数のビットの一部または全てを反転する演算、等を含む。各アドレス変換ルールは、これら加算、減算、および２つの演算のうちの任意の一つまたは任意の２以上の組み合わせを示してもよい。
【００４０】
ハードウェアロジック１５は、アドレス変換回路１５１を含む。アドレス変換回路１５１は、ルールセット３３に含まれるアドレス変換ルール（ルール＃１、ルール＃２、…、ルール＃ｎ）の各々の数学的規則に基づいて、各ＮＡＮＤ型フラッシュメモリチップ（または各プレーン）に送出されるブロックアドレスの各々を、各ＮＡＮＤ型フラッシュメモリチップ（または各プレーン）の別のブロックアドレスに変換するアドレス変換動作を実行するように構成された演算回路である。アドレス変換回路１５１は、複数のＮＡＮＤ型フラッシュメモリチップ（または複数のプレーン）にそれぞれに対応する複数のアドレス変換動作を時分割で実行してもよい。あるいは、アドレス変換回路１５１は複数のＮＡＮＤ型フラッシュメモリチップ（または複数のプレーン）にそれぞれに対応する複数のアドレス変換回路部を含んでいてもよい。この場合には、複数のＮＡＮＤ型フラッシュメモリチップ（または複数のプレーン）にそれぞれに対応する複数のアドレス変換動作を同時に実行することができる。
【００４１】
図７の上部は、複数のＮＡＮＤ型フラッシュメモリチップに存在する不良ブロックのパターンの例を示す。
ここでは、フラッシュストレージデバイス３が８個のＮＡＮＤ型フラッシュメモリチップ（チップ＃０〜チップ＃７）を含み、８個のＮＡＮＤ型フラッシュメモリチップ（チップ＃０〜チップ＃７）の各々が３２個のブロック（ＢＬＫ０〜ＢＬＫ３１）を含んでおり、チップ＃０〜チップ＃７にそれぞれ属する８個のブロックが一つのスーパーブロックＳＢとして編成される場合を想定する。一つのスーパーブロックＳＢに属するべきブロックそれぞれのブロックアドレスは、このスーパーブロックＳＢを識別するアドレス（スーパーブロックアドレス）から数学的規則に基づいて定めることができる。
【００４２】
スーパーブロックアドレスから数学的規則に基づいて一意にブロックアドレスの組み合わせを定めるというこの方法を使用することにより、スーパーブロック毎にこのスーパーブロックに属するブロックアドレスを保持する専用の管理テーブルを使用することなく、各スーパーブロックアドレスのみから各スーパーブロックに属するブロックアドレスの組み合わせを容易に特定することができる。
【００４３】
この数学的規則としては、スーパーブロックアドレスから一意にブロックアドレスの組み合わせを決定することが可能な任意の規則を使用し得る。
ここでは、図示の簡単化のために、一つのスーパーブロックＳＢは、このスーパーブロックＳＢのスーパーブロックアドレスと同じブロックアドレスを有するブロックの集合を含む場合が例示されている。
【００４４】
つまり、スーパーブロックＳＢ０はチップ＃０〜チップ＃７にそれぞれ属する８個のブロックＢＬＫ０を含み、スーパーブロックＳＢ１はチップ＃０〜チップ＃７にそれぞれ属する８個のブロックＢＬＫ１を含み、スーパーブロックＳＢ２はチップ＃０〜チップ＃７にそれぞれ属する８個のブロックＢＬＫ２を含み、同様に、スーパーブロックＳＢ３１はチップ＃０〜チップ＃７にそれぞれ属する８個のブロックＢＬＫ３１を含む。
【００４５】
図７の上部において、クロスハッチングで示されるブロックは不良ブロックである。チップ＃０は８個の不良ブロックを含み、チップ＃１は２個の不良ブロックを含み、チップ＃２は１個の不良ブロックを含み、チップ＃３は１個の不良ブロックを含み、チップ＃４は５個の不良ブロックを含み、チップ＃５は１個の不良ブロックを含み、チップ＃６は１個の不良ブロックを含み、チップ＃７は１個の不良ブロックを含む。
【００４６】
もし一つ以上の不良ブロックを含むスーパーブロックは使用しない、というポリシーが適用されたならば、一つ以上の不良ブロックを含むスーパーブロックに属する正常ブロック（シングルハッチングで示されるブロック）は利用不可能となる。図７においては、右上から左下に延びる実線でハッチングされたブロックは一つの不良ブロックを含むスーパーブロックに属する正常ブロック（利用不可能な正常ブロック）を示し、左上から右下に延びる実線でハッチングされたブロックは２以上の不良ブロックを含むスーパーブロックに属する正常ブロック（利用不可能な正常ブロック）を示している。
【００４７】
図７の下部には、各チップに含まれる各不良ブロックを同じチップに属する不良ブロック以外のブロックで置き換える処理が示されている。
例えば、チップ＃０においては、不良ブロックＢＬＫ３、不良ブロックＢＬＫ８、不良ブロックＢＬＫ１３、不良ブロックＢＬＫ１６、不良ブロックＢＬＫ１９、不良ブロックＢＬＫ２１は、チップ＃０に属するブロックＢＬＫ２５、ブロックＢＬＫ２６、ブロックＢＬＫ２８、ブロックＢＬＫ２９、ブロックＢＬＫ３０、ブロックＢＬＫ３１でそれぞれ置換されてもよい。同様に、チップ＃１においては、不良ブロックＢＬＫ１０、不良ブロックＢＬＫ２１は、チップ＃１に属するブロックＢＬＫ３０、ブロックＢＬＫ３１でそれぞれ置換されてもよい。
【００４８】
このように、各チップに含まれる各不良ブロックを同じチップに属する不良ブロック以外のブロックで置き換えることにより、各チップの先頭から合計２４（＝３２−８）個のブロックは利用可能状態となる。しかし、各チップの残りのブロックＢＬＫ２４〜ＢＬＫ３１は利用できない。よって、構築可能なスーパーブロックＳＢの数は、最も不良ブロックの多いチップ＃０内の正常ブロックの数までに制限されてしまう。
【００４９】
本実施形態では、スーパーブロックＳＢ０〜ＳＢ３１の各々に含まれる不良ブロックの数がある閾値以下になるようにチップ毎にアドレス変換ルールが予め決定されており、この決定されたアドレス変換ルールに基づいて、各チップに送出されるブロックアドレスの各々を他のブロックアドレスに変換するアドレス変換動作がコントローラ４によって実行される。
【００５０】
図８の上部は複数のＮＡＮＤ型フラッシュメモリチップに存在する不良ブロックのパターンの例を示している。この不良ブロックのパターンは図７の上部で説明した不良ブロックのパターンと同じである。
図８の下部は、コントローラ４によって実行されるブロック再配置動作を示す。
【００５１】
図８の下部に示されているように、本実施形態では、スーパーブロックＳＢ０〜ＳＢ３１の各々に含まれる不良ブロックの数がある閾値以下になるようにチップ毎にブロックが再配置される。ここでは、スーパーブロックＳＢ０〜ＳＢ３１の各々に含まれる不良ブロックの数が１以下になるようにチップ毎にブロックを再配置する場合が例示されているが、各スーパーブロックが含むことが許容される不良ブロックの数の上限は１に限定されず、例えば、チップそれぞれ含まれる不良ブロックの数の平均値以下の整数に設定されていればよい。ここでは、不良ブロックの総数が２０で、チップ数が８であるので、各スーパーブロックが含むことが許容される不良ブロックの数の上限は平均不良ブロック数（＝２．５）以下の整数であればよい。これにより、スーパーブロックＳＢ０〜ＳＢ３１それぞれに含まれる不良ブロック数の差をある範囲内に制限しつつ、図７の下部で説明したブロック再配置よりも、利用可能ブロックの数を増やすことができる。
【００５２】
チップ当たりの不良ブロックの数はチップ毎にそれぞれ異なる。チップ間の不良ブロック数の差は、これらチップの製造工程数が増加するほど大きくなる傾向がある。三次元構造のフラッシュメモリのように、多くの層を含む現代のフラッシュメモリチップの製造には多くの数の製造工程が必要とされる。このため、チップ間の不良ブロック数の差は比較的大きい。また、一般に、ほとんどのチップは少ない不良ブロック数しか含まないが、一部のチップは多くの不良ブロック数を含むというケースが多い。
【００５３】
図７の下部で説明したブロック再配置では、各チップ内の利用可能なブロック数は、最も不良ブロックの多いチップ＃０内の正常ブロックの数（ここでは２４）までに制限されてしまう結果となる。
一方、図８の下部で説明したブロック再配置では、各チップ内の利用可能なブロックの数は、最も不良ブロックの多いチップ＃０内の正常ブロックの数に影響されない。したがって、全チップの不良ブロック数の合計が極端に大きくならない限り、スーパーブロックＳＢ０〜ＳＢ３１間の不良ブロック数の差をある範囲内に制限できるので、これらスーパーブロックＳＢ０〜ＳＢ３１それぞれのリード／ライト性能の差を許容範囲内に納めることができる。
【００５４】
また、もしスーパーブロックそれぞれとこれらスーパーブロックの各々に属するブロックの集合との関係をテーブル形式の管理情報を使用して管理するという方法が使用されたならば、この管理情報の格納のために多くのメモリリソースが消費されることになる。例えば、この管理情報のサイズは、［全チップのブロック数の合計］×［チップアドレス＋ブロックアドレス］となる。通常、一つのチップは１０００〜２０００程度のブロックを含む。また、［チップアドレス＋ブロックアドレス］を表現するために必要な情報量は２バイト程度となる。よって、管理情報のサイズは非常に大きくなる。
【００５５】
本実施形態では、数学的規則を示すアドレス変換ルールに基づくアドレス変換動作（加算、減算、ビット反転、等のような算術論理演算）によって各チップ内のブロック間でブロックアドレスが入れ替えられ、これによってブロック再配置が実行される。一つのアドレス変換ルールは、例えば、利用可能な幾つかの演算の一つとこの演算のために使用されるパラメータのみを指定すればよい。このため、一つのアドレス変換ルールの格納のために必要なデータ量は数ビット程度である。したがって、本実施形態では、ルールセット３３のサイズは［総チップ数（または総プレーン数）］×［数ビット］となり、低コストで複数のスーパーブロックを制御することができる。
【００５６】
図９は、コントローラ４のアドレス変換回路１５１によって実行されるアドレス変換動作の例を示す。
図９の上部は、複数のＮＡＮＤ型フラッシュメモリチップに存在する不良ブロックのパターンの例とチップ毎に適用されるアドレス変換ルールの例を示す。
【００５７】
図９の上部では、図示の簡単化のために、フラッシュストレージデバイス３が４個のＮＡＮＤ型フラッシュメモリチップ（チップ＃０〜チップ＃３）を含み、４個のＮＡＮＤ型フラッシュメモリチップ（チップ＃０〜チップ＃３）の各々が８個のブロック（ＢＬＫ０〜ブロックＢＬＫ７）を含み、チップ＃０〜チップ＃３にそれぞれ属する４個のブロックが一つのスーパーブロックＳＢとして編成される場合が想定されている。また、クロスハッチングで示されるブロックは不良ブロックである。
【００５８】
一つのスーパーブロックＳＢに属するべきブロックそれぞれのブロックアドレスは、このスーパーブロックＳＢのアドレス（スーパーブロックアドレス）から数学的規則に基づいて定めることができる。ここでは、図示の簡単化のために、一つのスーパーブロックＳＢは、このスーパーブロックＳＢのスーパーブロックアドレスと同じブロックアドレスを有するブロックの集合を含む場合が想定されている。
【００５９】
チップ＃０においては、例えば、チップ＃０に送出されるブロックアドレスに１を加える加算がアドレス変換ルール＃０として適用されてもよい。
チップ＃０に送出される３ビットのブロックアドレス（ブロック番号）が０（＝“０００”）を示すならば、この３ビットのブロックアドレス（ブロック番号）は１（＝“００１”）に変換され、ブロックアドレス（＝“０００”）を有するブロックＢＬＫ０の代わりに、ブロックアドレス（＝“００１”）を有するブロックＢＬＫ１がアクセスされる。
【００６０】
チップ＃０に送出される３ビットのブロックアドレス（ブロック番号）が１（＝“００１”）を示すならば、この３ビットのブロックアドレス（ブロック番号）は２（＝“０１０”）に変換され、ブロックアドレス（＝“００１”）を有するブロックＢＬＫ１の代わりに、ブロックアドレス（＝“０１０”）を有するブロックＢＬＫ２がアクセスされる。
【００６１】
同様に、チップ＃０に送出される３ビットのブロックアドレス（ブロック番号）が７（＝“１１１”）を示すならば、この３ビットのブロックアドレス（ブロック番号）は０（＝“０００”）に変換され、ブロックアドレス（＝“１１１”）を有するブロックＢＬＫ７の代わりに、ブロックアドレス（＝“０００”）を有するブロックＢＬＫ０がアクセスされる。
【００６２】
このように、チップ＃０に送出されるブロックアドレスそれぞれには同じアドレス変換動作（ここでは、ブロックアドレスに１を加える加算）が施され、これによってチップ＃０の各ブロックの配置は図９の下部に示すように左側に１ブロック分だけシフトされる。この結果、チップ＃０においては、不良ブロックＢＬＫ１は、スーパーブロックＳＢ１に属するブロックではなく、スーパーブロックＳＢ０に属するブロックとして扱われる。同様に、不良ブロックＢＬＫ３はスーパーブロックＳＢ３に属するブロックではなく、スーパーブロックＳＢ２に属するブロックとして扱われ、不良ブロックＢＬＫ４はスーパーブロックＳＢ４に属するブロックではなく、スーパーブロックＳＢ３に属するブロックとして扱われる。
【００６３】
チップ＃１においては、例えば、チップ＃１に送出されるブロックアドレスから１を減ずる減算がアドレス変換ルール＃１として適用されてもよい。
この場合、チップ＃１に送出されるブロックアドレスそれぞれには同じアドレス変換動作（ここでは、ブロックアドレスから１を減ずる減算）が施され、これによってチップ＃１の各ブロックの配置は図９の下部に示すように右側に１ブロック分だけシフトされる。この結果、チップ＃１においては、不良ブロックＢＬＫ４は、スーパーブロックＳＢ４に属するブロックではなく、スーパーブロックＳＢ５に属するブロックとして扱われる。同様に、不良ブロックＢＬＫ３はスーパーブロックＳＢ３に属するブロックではなく、スーパーブロックＳＢ４に属するブロックとして扱われる。
【００６４】
チップ＃２においては、例えば、チップ＃２に送出されるブロックアドレスに１を加える加算がアドレス変換ルール＃２として適用されてもよい。
この場合、チップ＃２に送出されるブロックアドレスそれぞれには同じアドレス変換動作（ここでは、ブロックアドレスに１を加える加算）が施され、これによってチップ＃２の各ブロックの配置は図９の下部に示すように左側に１ブロック分だけシフトされる。この結果、チップ＃２においては、不良ブロックＢＬＫ２は、スーパーブロックＳＢ２に属するブロックではなく、スーパーブロックＳＢ１に属するブロックとして扱われる。
【００６５】
チップ＃３においては、例えば、最大ブロックアドレス（＝“１１１”）から、チップ＃３に送出されるブロックアドレスを減じる演算がアドレス変換ルール＃３として適用されてもよい。
この場合、チップ＃３に送出される３ビットのブロックアドレス（ブロック番号）が０（＝“０００”）を示すならば、この３ビットのブロックアドレス（ブロック番号）は７（＝“１１１”）に変換され、ブロックアドレス（＝“０００”）を有するブロックＢＬＫ０の代わりに、ブロックアドレス（＝“１１１”）を有するブロックＢＬＫ７がアクセスされる。
【００６６】
チップ＃３に送出される３ビットのブロックアドレス（ブロック番号）が１（＝“００１”）を示すならば、この３ビットのブロックアドレス（ブロック番号）は６（＝“１１０”）に変換され、ブロックアドレス（＝“００１”）を有するブロックＢＬＫ１の代わりに、ブロックアドレス（＝“１１０”）を有するブロックＢＬＫ６がアクセスされる。
【００６７】
同様に、チップ＃３に送出される３ビットのブロックアドレス（ブロック番号）が７（＝“１１１”）を示すならば、この３ビットのブロックアドレス（ブロック番号）は０（＝“０００”）に変換され、ブロックアドレス（＝“１１１”）を有するブロックＢＬＫ７の代わりに、ブロックアドレス（＝“０００”）を有するブロックＢＬＫ０がアクセスされる。
【００６８】
このように、チップ＃３に送出されるブロックアドレスそれぞれには同じアドレス変換動作（ここでは、最大ブロックアドレスからブロックアドレスを減じる演算）が施され、これによってチップ＃３の各ブロックの配置は、図９の下部に示すように、例えば、不良ブロックＢＬＫ０と正常ブロックＢＬＫ７の間で位置が入れ替えられる。
【００６９】
なお、アドレス変換のために使用可能な数学的規則の例には、この他、以下の演算も含まれる。
（１）ブロックアドレスの最下位ビット［ｂ０］のみを反転する演算：  この演算はチップ（またはプレーン）当たりの総ブロック数が２の整数倍である場合に利用されてもよい。
【００７０】
（２）ブロックアドレスの下位２ビット［ｂ１，ｂ０］によって表現される４通りの組み合わせを互いに入れ替える演算：  この演算はチップ（またはプレーン）当たりの総ブロック数が４の整数倍である場合に利用されてもよい。例えば、下位２ビット［ｂ１，ｂ０］が［ｂ０，ｂ１］に変換されるように下位２ビット［ｂ１，ｂ０］の位置を互いに入れ替える演算が利用されてもよいし、下位２ビット［ｂ１，ｂ０］を反転する演算が利用されてもよい。
【００７１】
（３）ブロックアドレスの下位３ビット［ｂ２，ｂ１，ｂ０］によって表現される８通りの組み合わせを互いに入れ替える演算：  この演算はチップ（またはプレーン）当たりの総ブロック数が８の整数倍である場合に利用されてもよい。
（４）ブロックアドレスの全ビットを反転する演算
図１０は、フラッシュストレージデバイス３のコントローラ４に含まれる複数のアドレス変換回路１５１と複数のＮＡＮＤ型フラッシュメモリチップとの関係の例を示す。
【００７２】
ここでは、フラッシュストレージデバイス３が８個のＮＡＮＤ型フラッシュメモリチップ（チップ＃０〜チップ＃７）を含み、チップ＃０〜チップ＃７にそれぞれ属する８個のブロックが一つのスーパーブロックＳＢとして編成される場合が想定されている。
【００７３】
例えば、フラッシュストレージデバイス３の初期製造工程においては、フラッシュストレージデバイス３に搭載されるチップ＃０〜チップ＃７それぞれに存在する不良ブロックのパターンに基づいて、スーパーブロック間で不良ブロックの数を均一にするためアドレス変換ルールをチップ毎に決定するための学習処理２００が実行される。この学習処理２００は、コントローラ４ではなく、工場内のシステムによって実行される。このシステムは、チップ＃０〜チップ＃７にそれぞれ対応する８個のアドレス変換ルールを決定する。
学習処理２００においては、個々のチップに適用すべきアドレス変換ルールが、予め定義された使用可能な複数種のアドレス変換ルールの中からそれぞれ選択されてもよい。決定された８個のアドレス変換ルールはルールセット３３として８個のＮＡＮＤ型フラッシュメモリチップのいずれか一つに永続的に格納されるか、あるいはコントローラ４内の他の不揮発性メモリに永続的に格納される。
【００７４】
フラッシュストレージデバイス３の工場出荷後においては、チップ＃０に対応するアドレス変換回路＃０は、チップ＃０に対応するアドレス変換ルール＃０によって示される数学的規則に基づき、チップ＃０に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行する。チップ＃１に対応するアドレス変換回路＃１は、チップ＃１に対応するアドレス変換ルール＃１によって示される数学的規則に基づき、チップ＃１に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行する。同様に、チップ＃７に対応するアドレス変換回路＃７は、チップ＃７に対応するアドレス変換ルール＃７によって示される数学的規則に基づき、チップ＃７に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作（算術論理演算）を実行する。
【００７５】
図１１は、フラッシュストレージデバイス３のコントローラ４に含まれる複数のアドレス変換回路１５１と複数のプレーンとの関係の例を示す。
ここでは、フラッシュストレージデバイス３が８個のＮＡＮＤ型フラッシュメモリチップ（チップ＃０〜チップ＃７）を含み、チップ＃０〜チップ＃７の各々が２つのプレーン（ＰＬＡＮＥ０、ＰＬＡＮＥ１）を含み、総数１６のプレーンにそれぞれ属する１６個のブロックが一つのスーパーブロックＳＢとして編成される場合が想定されている。
【００７６】
例えば、フラッシュストレージデバイス３の初期製造工程においては、フラッシュストレージデバイス３に搭載される総数１６のプレーンそれぞれに存在する不良ブロックのパターンに基づいて、スーパーブロック間で不良ブロックの数を均一にするためアドレス変換ルールをプレーン毎に決定するための学習処理２００が実行される。この学習処理２００は、コントローラ４ではなく、工場内のシステムによって実行される。学習処理２００においては、個々のプレーンに適用すべきアドレス変換ルールが、予め定義された使用可能な複数種のアドレス変換ルールの中からそれぞれ選択されてもよい。このシステムは、総数１６のプレーンにそれぞれ対応する１６個のアドレス変換ルールを決定する。１６個のアドレス変換ルールはルールセット３３として８個のＮＡＮＤ型フラッシュメモリチップのいずれか一つに永続的に格納されるか、あるいはコントローラ４内の他の不揮発性メモリに永続的に格納される。
【００７７】
フラッシュストレージデバイス３の工場出荷後においては、チップ＃０のＰＬＡＮＥ０に対応するアドレス変換回路＃０は、チップ＃０のＰＬＡＮＥ０に対応するアドレス変換ルール＃０によって示される数学的規則に基づき、チップ＃０のＰＬＡＮＥ０に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行する。チップ＃０のＰＬＡＮＥ１に対応するアドレス変換回路＃１は、チップ＃０のＰＬＡＮＥ１に対応するアドレス変換ルール＃１によって示される数学的規則に基づき、チップ＃０のＰＬＡＮＥ１に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行する。
【００７８】
同様に、チップ＃７のＰＬＡＮＥ０に対応するアドレス変換回路＃１４は、チップ＃７のＰＬＡＮＥ０に対応するアドレス変換ルール＃１４によって示される数学的規則に基づき、チップ＃７のＰＬＡＮＥ０に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行する。チップ＃７のＰＬＡＮＥ１に対応するアドレス変換回路＃１５は、チップ＃７のＰＬＡＮＥ１に対応するアドレス変換ルール＃１５によって示される数学的規則に基づき、チップ＃７のＰＬＡＮＥ１に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作を実行する。
【００７９】
図１２は、フラッシュストレージデバイス３のコントローラ４に含まれる複数のアドレス変換回路１５１と複数のＮＡＮＤ型フラッシュメモリチップとの関係の別の例を示す。
ここでは、複数のアドレス変換回路１５１の各々に、ブロックアドレスではなく、アクセスされるべきスーパーブロックを示すスーパーブロックアドレスが供給される場合が想定されている。
【００８０】
この場合、各アドレス変換回路１５１は、図１３に示されているように、アドレス変換回路１５１ａと、このアドレス変換回路１５１ａの前段に設けられたブロックアドレス変換回路１５１ｂとを含んでいてもよい。例えば、チップ＃０に対応するアドレス変換回路１５１＃０のアドレス変換回路１５１ａは、チップ＃０に対応するアドレス変換ルール＃０によって示される数学的規則に基づき、チップ＃０に送出されるブロックアドレスの各々を別のブロックアドレスに変換する。チップ＃０に対応するアドレス変換回路１５１＃０のブロックアドレス変換回路１５１ｂは、アクセスされるべきスーパーブロックを示す特定のスーパーブロックアドレスをチップ＃０内の特定のブロックを指定する特定のブロックアドレスに変換する。本実施形態では、一つのスーパーブロックに属するべきブロックそれぞれのブロックアドレスは、このスーパーブロックのスーパーブロックアドレスから特定の数学的規則に基づいて定められている。したがって、ブロックアドレス変換回路１５１ｂによる特定のスーパーブロックアドレスから特定のブロックアドレスへの変換は、この特定の数学的規則に基づいて実行することができる。なお、各スーパーブロックが、このスーパーブロックのスーパーブロックアドレス（スーパーブロック番号）と同じブロックアドレス（ブロック番号）を有するブロックの集合によって構成されている場合には、特定のブロックアドレスは特定のスーパーブロックアドレスと一致するので、ブロックアドレス変換回路１５１ｂは設けられていなくてよい。
【００８１】
なお、複数のアドレス変換回路１５１の各々にスーパーブロックアドレスを供給する図１２の構成は、複数のプレーンにそれぞれ対応する複数のアドレス変換回路１５１を含む図１１の構成にも適用することができる。
以上説明したように、本実施形態によれば、複数の並列アクセス単位（スーパーブロック）の各々に含まれる不良ブロックの数が閾値（第１の数）以下になるように規定された複数のアドレス変換ルールの各々の数学的規則に基づいて、各不揮発性メモリチップ（または各プレーン）９に送出されるブロックアドレスの各々を別のブロックアドレスに変換するアドレス変換動作がアドレス変換回路１５１によって実行される。したがって、スーパーブロックそれぞれとこれらスーパーブロックの各々に属するブロックの集合との関係をテーブル形式の管理情報を使用して管理することなく、スーパーブロックそれぞれとこれらスーパーブロックの各々に属するブロックの集合との関係を変更することができ、これによってスーパーブロックそれぞれに含まれる不良ブロックの数をこれらスーパーブロック間でほぼ均一にすることが可能となる。よって、低コストで、並列にアクセスされるブロックの集合を効率よく制御することが可能となる。
【００８２】
なお、本実施形態のフラッシュストレージデバイス３の構成は、以下のタイプ＃１、タイプ＃２を含む様々なタイプのストレージデバイスに適用可能である。
＜タイプ＃１ストレージデバイス＞
タイプ＃１のストレージデバイスは、ＬＢＡのような論理アドレスを指定するリード／ライトコマンドをホスト２から受信するように構成されている。リード／ライトコマンドは、論理アドレス、データの長さを指定するが、ＮＡＮＤ型フラッシュメモリ５の物理アドレスを指定しない。フラッシュストレージデバイス３がタイプ＃１のストレージデバイスとして実現されている場合には、図１のライト制御部２１は、ホスト２から受信したライトコマンドに応じて、ホスト２から受信されるデータ（ライトデータ）を、書き込み先スーパーブロック内の利用可能な物理記憶位置に書き込む。そして、図１のライト制御部２１は、ＬＵＴ３２を更新することによって、ライトデータが書き込まれた物理記憶位置を示す物理アドレスをこのライトデータの論理アドレスにマッピングする。図１のリード制御部２２がホスト２からリードコマンドを受信した場合、リード制御部２２は、ＬＵＴ３２を参照することによって、リードコマンドによって指定された論理アドレスに対応する物理アドレスを取得する。そして、リード制御部２２は、この物理アドレスによって指定されるＮＡＮＤ型フラッシュメモリ５内の物理記憶位置からデータを読み出す。
【００８３】
＜タイプ＃２ストレージデバイス＞
タイプ＃２のストレージデバイスは、ＮＡＮＤ型フラッシュメモリ５の物理アドレスを指定するリード／ライトコマンドをホスト２から受信するように構成されている。フラッシュストレージデバイス３がタイプ＃２のストレージデバイスとして実現されている場合には、論理アドレスそれぞれとＮＡＮＤ型フラッシュメモリ５の物理アドレスそれぞれとの間のマッピングを管理するための論理物理アドレス変換テーブルはホスト２に設けられる。
【００８４】
図１のライト制御部２１は、ブロックアドレスと論理アドレスとを指定するライトコマンドをホスト２から受信する。論理アドレスは、書き込むべきデータ（ライトデータ）を識別可能な識別子であり、例えば、ＬＢＡであってもよいし、あるいはキー・バリュー・ストアのキーであってもよいし、このキーのハッシュ値であってもよい。ライトコマンドを受信した場合、ライト制御部２１は、まず、ホスト２からのライトデータを書き込むべき、この指定されたブロックアドレスを有するブロック（書き込み先ブロック）内の位置（書き込み先位置）を決定する。次いで、ライト制御部２１は、ホスト２からのライトデータを、この書き込み先ブロックの書き込み先位置に書き込む。この場合、ライト制御部２１は、ライトデータのみならず、このライトデータとこのデータの論理アドレスの双方を書き込み先ブロックに書き込むことができる。
【００８５】
そして、ライト制御部２１は、この書き込み先ブロックの上述の書き込み先位置を示すブロック内物理アドレスをホスト２に通知する。このブロック内物理アドレスは、この書き込み先ブロック内の書き込み先位置を示すブロック内オフセットによって表される。
【００８６】
このように、ライト制御部２１は、ホスト２から指定されたブロックアドレスを有するブロック内の書き込み先位置を自身で決定し、そしてホスト２からのライトデータをこのブロック内のこの書き込み先位置に書き込む。そして、ライト制御部２１は、この書き込み先位置を示すブロック内物理アドレス（ブロック内オフセット）をライト要求に対応するレスポンス（返り値）としてホスト２に通知する。あるいは、ライト制御部２１は、ブロック内物理アドレス（ブロック内オフセット）のみをホスト２に通知するのではなく、論理アドレスとブロックアドレスとブロック内物理アドレス（ブロック内オフセット）との組をホスト２に通知してもよい。
【００８７】
したがって、フラッシュストレージデバイス３は、ブロックアドレスをホスト２にハンドリングさせつつ、ページ書き込み順序制約、バッドページ、ページサイズ等を隠蔽することができる。
この結果、ホスト２は、ブロック境界は認識できるが、ページ書き込み順序制約、バッドページ、ページサイズについては意識することなく、どのユーザデータがどのブロックに存在するかを管理することができる。
【００８８】
ホスト２から受信されるライトコマンドによって指定されるブロックアドレスは物理ブロックのブロックアドレスであってもよいし、スーパーブロックのブロックアドレス（スーパーブロックアドレス）であってもよい。
フラッシュストレージデバイス３がタイプ＃２のストレージデバイスとして実現されている場合には、図１のリード制御部２２は、物理アドレス（すなわち、ブロックアドレスおよびブロック内オフセット）を指定するリード要求（リードコマンド）をホスト２から受信する。リードコマンドをホスト２から受信した場合、リード制御部２２は、これらブロックアドレスおよびブロック内オフセットに基づいて、リード対象のブロック内のリード対象の物理記憶位置からデータをリードする。リード対象のブロックは、ブロック番号によって特定される。このブロック内のリード対象の物理記憶位置は、ブロック内オフセットによって特定される。
【００８９】
ホスト２から受信されるリードコマンドによって指定されるブロックアドレスは物理ブロックのブロックアドレスであってもよいし、スーパーブロックのブロックアドレス（スーパーブロックアドレス）であってもよい。
リード／ライトコマンドによって指定されるブロックアドレスがある物理ブロックのブロックアドレスを示すケースにおいては、このブロックアドレスはチップアドレス（チップ番号）とブロックアドレス（ブロック番号）との組み合わせによって表されてもよいし、チップアドレス（チップ番号）とプレーン番号とブロックアドレス（ブロック番号）との組み合わせによって表されてもよい。
【００９０】
なお、別の実施形態では、アドレス変換回路１５１は、例えば、ＣＰＵ１２内のＡＬＵによって実現されてもよい。
また、本実施形態では、不揮発性メモリとしてＮＡＮＤ型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又は、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような他の様々な不揮発性メモリにも適用できる。
【００９１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９２】
２…ホスト、３…フラッシュストレージデバイス、４…コントローラ、５…ＮＡＮＤ型フラッシュメモリ、２１…ライト制御部、２２…リード制御部、１５１…アドレス変換回路。
【図１】
2019212103.tif 000003
【図２】
2019212103.tif 000004
【図３】
2019212103.tif 000005
【図４】
2019212103.tif 000006
【図５】
2019212103.tif 000007
【図６】
2019212103.tif 000008
【図７】
2019212103.tif 000009
【図８】
2019212103.tif 000010
【図９】
2019212103.tif 000011
【図１０】
2019212103.tif 000012
【図１１】
2019212103.tif 000013
【図１２】
2019212103.tif 000014
【図１３】
2019212103.tif 000015