(57)【要約】【課題】システムデータの信頼性を確保しつつ、所定の並列度が確保されたユーザデータ用の論理ブロックを多く確保することが可能な論理ブロックの構築方法を提供する。【解決手段】システムデータを記憶する物理ブロックを所要個数選択し、その後前記選択された物理ブロック以外の物理ブロックを用いてユーザデータを記憶する論理ブロックを構築する。システムデータを記憶する物理ブロックの選択の際、使用不可である物理ブロックを示す使用不可ブロック情報に基づいて、選択後の複数の並列動作要素における使用可能な物理ブロックの個数が平準化されるように、使用可能な物理ブロックが多い並列動作要素から優先してシステムデータを記憶する物理ブロックを選択する。【選択図】図１
2013200663.tif 000002
【特許請求の範囲】
【請求項１】
データ消去の単位である物理ブロックを複数個含むメモリチップを複数個有し、並列動作可能な物理ブロックの集合単位である並列動作要素を複数個有する不揮発性半導体メモリを備えるメモリシステムにおける論理ブロックの構築方法において、
システムデータを記憶する物理ブロックを所要個数選択する第１ステップと、
第１のステップによって選択された物理ブロック以外の物理ブロックを用いてユーザデータを記憶する論理ブロックを構築する第２ステップと、を具備し、
前記第１のステップの際、
使用不可である物理ブロックを示す使用不可ブロック情報に基づいて、選択後の複数の並列動作要素における使用可能な物理ブロックの個数が平準化されるように、使用可能な物理ブロックが多い並列動作要素から優先してシステムデータを記憶する物理ブロックを選択する
ことを特徴とする論理ブロックの構築方法。
【請求項２】
前記第１のステップの際、複数の並列動作要素を複数のグルーブに分割し、
前記分割したグルーブ毎に、前記使用不可ブロック情報に基づいて、選択後の複数の並列動作要素における使用可能な物理ブロックの個数が平準化されるように、使用可能な物理ブロックが多い並列動作要素から優先してシステムデータを記憶する物理ブロックを選択し、
システムデータを記憶する物理ブロックをグループ間で多重化する
ことを特徴とする請求項１に記載の論理ブロックの構築方法。
【請求項３】
前記第１のステップの際、システムデータを記憶する物理ブロックをメモリチップの中央位置部分から選択することを特徴とする請求項１または２に記載の論理ブロックの構築方法。
【請求項４】
前記並列動作要素は、チャネル、バンク、プレーンを含み、
前記第２ステップでは、複数のチャネル、複数のバンク、複数のプレーンから物理ブロックを１つずつ選択し、選択した複数の物理ブロックを論理ブロックに対応付け、
前記第１ステップでは、
同一チャネル、同一バンクおよび同一プレーンに含まれる複数の物理ブロックを１つの分類単位として不揮発性半導体メモリに含まれる複数の物理ブロックを複数の分類単位に分類し、
前記使用不可ブロック情報に基づいて、選択後の複数の分類単位における使用可能な物理ブロックの個数が平準化されるように、使用可能な物理ブロックが多い分類単位から優先してシステムデータを記憶する物理ブロックを選択する
ことを特徴とする請求項１乃至３の何れか一つに記載の論理ブロックの構築方法。
【請求項５】
前記並列動作要素は、チャネル、バンク、プレーンを含み、
前記不揮発性半導体メモリは、複数のメモリチップで構成されるチャネルを複数個有し、各メモリチップは複数のプレーンに分割され、各プレーンは物理ブロックを複数個有し、各チャネルの複数のメモリチップは複数のチャネルに跨って複数のバンクに分割されており、
前記第２ステップでは、複数のチャネル、複数のバンク、同一メモリチップ内の複数のプレーンから物理ブロックを１つずつ選択し、選択した複数の物理ブロックを論理ブロックに対応付け、
前記第１ステップでは、
同一チャネル、同一バンク、同一メモリチップおよび同一プレーンに含まれる複数の物理ブロックを１つの分類単位として不揮発性半導体メモリに含まれる複数の物理ブロックを複数の分類単位に分類し、
前記使用不可ブロック情報に基づいて、選択後の複数の分類単位における使用可能な物理ブロックの個数が平準化されるように、使用可能な物理ブロックが多い分類単位から優先してシステムデータを記憶する物理ブロックを選択する
ことを特徴とする請求項１乃至３の何れか一つに記載の論理ブロックの構築方法。
【請求項６】
前記第１のステップでは、同一メモリチップ内の複数のプレーンにおける使用可能な物理ブロックの個数が平準化されるように、システムデータを記憶する物理ブロックを選択することを特徴とする請求項５に記載の論理ブロックの構築方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性半導体メモリを備えるメモリシステムにおける論理ブロックの構築方法に関する。
【背景技術】
【０００２】
ＳＳＤ（solid state drive）においては、フラッシュメモリの消去単位である物理ブロックを複数個組み合わせた仮想ブロックとしての論理ブロックという概念を導入し、この論理ブロック単位に並列に消去、書き込み、読み出しを行うことで、書き込み効率の向上と並列処理による高速化を図る場合がある。
【０００３】
フラッシュメモリ中の複数の物理ブロックの中には、記憶領域として使用できないバッドブロックが製造段階から含まれている場合がある。このようなバッドブロックを先天性バッドブロックという。論理ブロックは、このような先天性バッドバッドを除いた物理ブロックによって構築する必要がある。
【０００４】
また、ＳＳＤにおいて、フラッシュメモリに保存するデータには、ユーザが保存するユーザデータと、ＳＳＤの内部で使われる管理情報としてのシステムデータとがある。ユーザデータ用の論理ブロックを構築する際には、先天性バッドブロックを除外しつつ、所定数の並列度が確保されたユーザデータ用の論理ブロックを、余裕容量を取れるようにできるだけ多くの個数、確保できるのが望ましい。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１９９９０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の一つの実施形態は、システムデータの信頼性を確保しつつ、所定の並列度が確保されたユーザデータ用の論理ブロックを多く確保することが可能な論理ブロックの構築方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一つの実施形態によれば、メモリシステムは、データ消去の単位である物理ブロックを複数個含むメモリチップを複数個有し、並列動作可能な物理ブロックの集合単位である並列動作要素を複数個有する不揮発性半導体メモリを備える。システムデータを記憶する物理ブロックを所要個数選択する第１ステップと、第１のステップによって選択された物理ブロック以外の物理ブロックを用いてユーザデータを記憶する論理ブロックを構築する第２ステップとを具備される。前記第１のステップの際、使用不可である物理ブロックを示す使用不可ブロック情報に基づいて、選択後の複数の並列動作要素における使用可能な物理ブロックの個数が平準化されるように、使用可能な物理ブロックが多い並列動作要素から優先してシステムデータを記憶する物理ブロックを選択する。
【図面の簡単な説明】
【０００８】
【図１】図１は、ＳＳＤの内部構成例を示すブロック図である。
【図２】図２は、ＮＡＮＤの内部構成例を示す図である。
【図３】図３は、システムブロックテーブルを示す図である。
【図４】図４は、ユーザブロックテーブルを示す図である。
【図５】図５は、論理ブロックの構築手順を示すフローチャートである。
【図６】図６は、第１の実施形態のシステムブロックの選択処理を概念的に示す図である。
【図７】図７は、システム論理ブロックの構築手順を示すフローチャートである。
【図８】図８は、第２の実施形態のシステムブロックの選択処理を概念的に示す図である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、実施形態にかかる論理ブロックの構築方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【００１０】
（第１の実施形態）
図１は、ＳＳＤ（Solid  State  Drive）１００の構成例を示すブロック図である。ＳＳＤ１００は、ＡＴＡインタフェース（ＡＴＡ  Ｉ／Ｆ）などのホストインタフェース２を介してパーソナルコンピュータあるいはＣＰＵなどのホスト装置（以下、ホストと略す）１と接続され、ホスト１の外部記憶装置として機能する。ホスト１は、例えば、パーソナルコンピュータのＣＰＵ、スチルカメラ、ビデオカメラなどの撮像装置のＣＰＵである。ＳＳＤ１００は、ホストインタフェース２と、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤと略す）１０と、ＮＡＮＤ１０よりも高速アクセスが可能な半導体メモリであるＲＡＭ２０と、ＮＡＮＤコントローラ（ＮＡＮＤＣ）３１と、コントローラ３０とを備える。
【００１１】
ＮＡＮＤ１０は、ホスト１によって指定されたユーザデータ１１を記憶したり、ＲＡＭ２０で管理される管理情報を不揮発管理テーブル１２としてバックアップ記憶したりする。ＮＡＮＤ１０は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。ＮＡＮＤ１０は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、ＮＡＮＤ１０では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。
【００１２】
図２は、ＮＡＮＤ１０の詳細構成例を示すものである。この実施形態においては、ＮＡＮＤ１０は、８チャネル（８ｃｈ：ｃｈ０〜ｃｈ７）を介してＮＡＮＤコントローラ（ＮＡＮＤＣ）３１に並列接続されており、８つのチャネル並列動作要素１０ａ〜１０ｈを並列動作させることが可能である。チャネル数は８つに限らず、任意のチャネル数を採用可能である。各並列動作要素１０ａ〜１０ｈは、バンクインターリーブが可能な複数のバンク（この場合、４バンク、Ｂａｎｋ０〜Ｂａｎｋ３）によって構成されており、各バンクは、複数のメモリチップ（この場合、２メモリチップ、Ｃｈｉｐ０、Ｃｈｉｐ１）によって構成されている。各メモリチップは、例えば、それぞれ複数の物理ブロックを含むプレーン０、プレーン１の２つの領域（District）に分割されている。プレーン０およびプレーン１は、互いに独立した周辺回路（例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等）を備えており、プレーン倍速モードを使用することで、同時に消去／ライト／リードを行うことが可能である。このように、ＮＡＮＤ１０の各メモリチップは、複数のチャネルによる並列動作、複数のバンクによるバンクインターリーブ動作、複数のプレーンを用いた並列動作が可能である。なお、各メモリチップは、４つのプレーンに分割された構成であってもよいし、あるいは、全く分割されていなくてもよい。
【００１３】
このように、ＮＡＮＤ１０では、複数のチャネルによる並列動作、複数のバンクによる並列動作、複数のプレーンを用いた倍速モードによる並列動作が可能であり、チャネル数を８、バンク数を４、プレーン数を２とした場合、最大６４個の物理ブロックを並列動作させることが可能となる。
【００１４】
ＲＡＭ２０は、ホスト１からのデータをＮＡＮＤ１０にライトする際に一時的にデータを保存するライトバッファとしての記憶領域と、不揮発管理テーブル１２などの管理情報を記憶、更新するための記憶領域と、ＮＡＮＤ１０からリードされたデータを一時記憶するなどのための作業領域などとして機能する。
【００１５】
ホスト１はＳＳＤ１００に対しリード要求またはライト要求を出力する際には、ホストインタフェース２を介して論理アドレスとしてのＬＢＡ（Logical Block Addressing）をＳＳＤ１００に入力する。ＬＢＡは、セクタ（サイズ：例えば５１２Ｂ）に対して０からの通し番号をつけた論理アドレスである。
【００１６】
ＳＳＤ１００においては、複数の物理ブロックをまとめて管理する単位として、論理ブロックという仮想的なブロックを定義する。この実施の形態では、論理ブロックは、チャネル並列、バンクインターリーブ、プレーン倍速動作を行えるように物理ブロックを組み合わせる。すなわち、論理ブロックは、チャネル数×バンク数×プレーン数分の物理ブロックで構成される。図２に示したように、チャネル数＝８、プレーン数＝２、バンク数＝４であれば、論理ブロックは、最大６４個の物理ブロックで構成される。
【００１７】
なお、論理ブロックは、複数のチャネル分の物理ブロックのみで構成してもよいし、複数のバンク分の物理ブロックのみで構成してもよいし、複数のプレーン分の物理ブロックのみで構成してもよい。また、チャネル並列、バンクインターリーブが行えるように物理ブロックを組み合わせても良いし、チャネル並列、プレーン倍速動作が行えるように物理ブロックを組み合わせてもよいし、バンクインターリーブ、プレーン倍速動作が行えるように物理ブロックを組み合わせてもよい。
【００１８】
図１において、不揮発管理テーブル１２は、ＳＳＤ１００の内部で使われる管理情報であるシステムデータを管理するためのテーブルであり、ホスト１で指定される論理アドレスであるＬＢＡと、ＮＡＮＤ１０でのデータの記憶位置を表す物理アドレスとの対応を管理する論物変換テーブル（図示せず）や、論理ブロックを管理する論理ブロック管理テーブル１３などを含む。論理ブロック管理テーブル１３は、システムデータ（不揮発管理テーブル１２）が記憶される論理ブロックを管理するためのシステムブロックテーブル１３ａと、ユーザデータが記憶される論理ブロックを管理するためのユーザブロックテーブル１３ｂとを含む。
【００１９】
この実施形態では、ユーザデータ用の論理ブロック（以下、ユーザ論理ブロックという）は、前述したように、最大６４個の物理ブロックによって構成される。システムデータ用の論理ブロック（以下、システム論理ブロックという）は、ユーザデータに比べ書き込み量も通常少ないので、ユーザ論理ブロックよりサイズ（構成する物理ブロック数）を小さくする。システム論理ブロックを複数の物理ブロックで構成してもよいが、この実施形態では、１つの物理ブロックでシステム論理ブロックを構成する。
【００２０】
図３に、システムブロックテーブル１３ａを示す。システムブロックテーブル１３ａでは、論理ブロック番号と、論理ブロックを構成する物理ブロック番号（この実施形態では１個）を示す構成ブロック情報と、使用／未使用情報などの管理情報との対応が管理されている。使用／未使用情報は、各論理ブロックが使用中であるか否か、すなわち各論理ブロックがフリーブロックＦＢであるかアクティブブロックＡＢであるかを識別する。フリーブロックＦＢとは、内部に有効データを含まない、用途未割り当ての未使用ブロックのことである。アクティブブロックＡＢとは、内部に有効データを含み、用途が割り当てられた使用中ブロックのことである。
【００２１】
図４に、ユーザブロックテーブル１３ｂを示す。ユーザブロックテーブル１３ｂでは、論理ブロック番号と、論理ブロックを構成する複数の物理ブロック番号（この実施形態では６４個）を示す構成ブロック情報と、使用／未使用情報などの管理情報との対応が管理されている。なお、ユーザブロックテーブル１３ｂと、システムブロックテーブル１３ａを同じテーブルで管理することにしてもよい。
【００２２】
図１において、ＮＡＮＤＣ３１は、ＮＡＮＤ１０とのインタフェース処理を行うＮＡＮＤ  Ｉ／Ｆ、誤り訂正回路、ＤＭＡコントローラなどを備えており、コントローラ３０の制御に基づいて、ＲＡＭ２０に一時記憶されたデータをＮＡＮＤ１０に書き込んだり、ＮＡＮＤ１０に記憶されているデータを読み出してＲＡＭ２５に転送したりする。
【００２３】
コントローラ３０は、ＮＡＮＤ１０に記憶されたシステムプログラム（ファームウエア）と、このファームウェアを実行するプロセッサによってその機能が実現される。コントローラ３０は、データアクセス部３３、ブロック管理部３２を備える。データアクセス部３３は、ライトバッファを介したＮＡＮＤ１０へのライト処理、ＮＡＮＤ１０からのリード処理、ＮＡＮＤ１０でのデータ整理（コンパクション）などを実行する。コンパクション処理は、論理ブロック内の有効データを集めて別の論理ブロックに書き直すことで、新たなフリーブロック（用途未割り当ての論理ブロック）を生成する処理である。
【００２４】
ブロック管理部３２は、製造段階での初回電源投入時に論理ブロックの構築処理を行い、その構築結果を論理ブロック管理テーブル１３の構成ブロック情報に登録する。図５は、論理ブロックの構築処理の全体手順を示すものである。ブロック管理部３２は、製造段階において、電源が初めて投入されると、まずシステム論理ブロックを構築し（ステップＳ１００）、その後でユーザ論理ブロックを構築する（ステップＳ２００）。
【００２５】
システム論理ブロックは次のようにして構築される。システム論理ブロックは、使用不可ブロックを除く物理ブロックから選択する。使用不可ブロックは、初期（先天性）バッドブロック、固定管理領域（コントローラ３０として機能させるためのファームウェアが記憶される物理ブロック）、静的パーティションブロック（製造情報などが記憶される物理ブロック）などを含み、使用不可ブロック番号を示す情報は、例えば、静的パーティションブロックに予め登録されている。製造段階に構築された論理ブロックは、その後でのＳＳＤ１００のユーザ使用時にも、そのまま継続して使用される。
【００２６】
この実施形態では、システム論理ブロックを、多重化（ここでは二重化の例を示す）することで、信頼性を確保する。システム論理ブロックを二重化するために、ＮＡＮＤ１０を２つのグループＡ、グループＢに分ける。二重化の信頼性を高めるために、グループＡに所属する物理ブロックと、グループＢに所属する物理ブロックは、異なるメモリチップから取得するようにする。そのために、グループＡに所属する物理ブロックと、グループＢに所属する物理ブロックは、異なるチャネルから取得する。
【００２７】
図６は、システムブロックの選択処理を概念的に示す図である。図７は、システムブロックの選択手順を示すフローチャートである。ブロック管理部３２は、図６に示すように、例えば、グループＡは偶数チャネル（ｃｈ０、ｃｈ２、ｃｈ４、ｃｈ６）で構成し、グループＢは奇数チャネル（ｃｈ１、ｃｈ３、ｃｈ５、ｃｈ７）で構成するように、ＮＡＮＤ１０の物理ブロックをグループ分けする（図７：ステップＳ１１０）。全体で、Ｎ個のシステムブロックを確保する場合は、グループＡからＮ／２個の物理ブロックを選択し、グループＢからＮ／２個の物理ブロックを選択する。
【００２８】
また、ブロック管理部３２は、各グループ毎に、グループ内の物理ブロックを、同一チャネル、同一バンク、同一メモリチップおよび同一プレーンであることを１つの分類単位として複数の分類単位に分類する。この分類単位をプレーンリスト（Ｐｌａｎｅ  Ｌｉｓｔ）と呼称する。これにより、グループＡは、図６に示すように、４つのチャネル（ｃｈ０、ｃｈ２、ｃｈ４、ｃｈ６）と、４つのバンク（Ｂａｎｋ０〜Ｂａｎｋ３）と、２つのチップ（Ｃｈｉｐ０、Ｃｈｉｐ１）と、２つのプレーン（Ｐｌａｎｅ０、Ｐｌａｎｅ１）とによる分類によって、６４個のプレーンリスト（ＰＬ０〜ＰＬ６３）を持つことになる。図６において、プレーン０はｐ０と、プレーン１はｐ１と記載し、プレーンリスト０〜プレーンリスト６３は、ＰＬ０〜ＰＬ６３と記載する。
【００２９】
同様に、グループＢは、４つのチャネル（ｃｈ１、ｃｈ３、ｃｈ５、ｃｈ７）と、４つのバンク（Ｂａｎｋ０〜Ｂａｎｋ３）と、２つのチップ（Ｃｈｉｐ０、Ｃｈｉｐ１）と、２つのプレーン（Ｐｌａｎｅ０、Ｐｌａｎｅ１）による分類によって、６４個のプレーンリスト（ＰＬ６４〜ＰＬ１２７）を持つことになる。
【００３０】
つぎに、ブロック管理部３２は、グループＡの各プレーンリスト毎に、全物理ブロック数ｎｔから使用不可ブロック数ｎｂを減算することで、各プレーンリストの使用可能ブロック数ｎｇを演算する（ステップＳ１２０）。図６では、使用不可ブロックは、右下がりハッチングで示している。ブロック管理部３２は、各プレーンリストの使用可能ブロック数ｎｇ（あるいは使用不可ブロック数ｎｂ）を参照して、グループＡからＮ／２個の物理ブロックを選択し、選択したブロックをシステムブロックとしてシステムブロックテーブル１３ａに登録する。
【００３１】
ブロック管理部３２は、Ｎ／２個の物理ブロックを選択する際には、選択後の各プレーンリストにおける使用可能ブロック数ｎｇが平準化されるように、使用可能ブロックが多いプレーンリストから優先して物理ブロックを多く選択し、使用可能ブロックが少ないプレーンリストから物理ブロックを少なく選択する（ステップＳ１３０）。すなわち、グループＡ内の各プレーンリストから物理ブロックを均等にとることはしない。グループＢも同様にして、Ｎ／２個の物理ブロックを選択して、選択した物理ブロックをシステムブロックとしてシステムブロックテーブル１３ａに設定する。
【００３２】
図６において、選択したシステムブロックをドットアレイで示している。各プレーンリストにおいては、使用可能ブロックが多いプレーンリストから物理ブロックを優先的に選択しており、選択されたシステムブロックおよび使用不可ブロックを除外した使用可能ブロック数が平準化されている。
【００３３】
なお、システムブロックをＣｈｉｐから選択する際には、チップ内の中心位置付近に配置されている物理ブロックを選択するほうが望ましい。これは、チップ内の中心位置付近に配置されている物理ブロックほど信頼性が高いことが経験的に知られているからである。
【００３４】
ブロック管理部３２は、システムブロックおよび使用不可ブロック以外の物理ブロックを用いて、ユーザ論理ブロックの構築処理を行う。ユーザ論理ブロックの構築では、チャネル並列、バンクインターリーブ、プレーン倍速動作を行えるように、１２８個のプレーンリスト（ＰＬ０〜ＰＬ１２７）のうちの６４個のプレーンリストから１個ずつ物理ブロックを選択し、選択した６４個の物理ブロックで１つの論理ブロックを構築する。６４個の物理ブロックは、システムデータのグループ分け（グループＡ、Ｂ）とは関係なく、１２８個のプレーンリストから６４個の物理ブロックを選択する。例えば、Ｂａｎｋ０／Ｃｈ０に所属する４つのプレーンリストＰＬ０〜ＰＬ３のうちの、ｐｌａｎｅ０に所属するプレーンリストＰＬ０およびＰＬ２から１つの物理ブロックを選択し、ｐｌａｎｅ１に所属するプレーンリストＰＬ１およびＰＬ３から１つの物理ブロックを選択する。このような選択処理をＰＬ４〜ＰＬ７、…、ＰＬ１２４〜ＰＬ１２７について繰り返すことにより、１つの論理ブロックを構築する。
【００３５】
そして、ブロック管理部３２は、このような処理を繰り返すことにより、複数個の論理ブロックを構築する。システム論理ブロックを構築する際に、各プレーンリストの使用可能ブロック数が平準化されているので、ユーザ論理ブロックをより多く確保することが可能となる。
【００３６】
このように第１の実施形態においては、最初に、使用可能ブロックが多いプレーンリストから物理ブロックを優先的に選択するようにシステム論理ブロック構築を行って各プレーンリストの使用可能ブロック数を平準化し、かつシステムブロックを多重化し、その後ユーザ論理ブロックの構築を行うこととしているので、システムデータの信頼性を確保しつつ、所定の並列度が確保されたユーザデータ用の論理ブロックをより多く確保することが可能となる。また、システム論理ブロックをユーザ論理ブロックより先に構築しているので、チップ内に任意の位置からシステムブロックを選択することが可能となり、信頼性の高いチップ内の中心位置にシステムブロックを集中配置することも可能となる。
【００３７】
（第２の実施形態）
この第２の実施形態では、ユーザ論理ブロックを構築するときに、Ｂａｎｋ／Ｃｈａｎｎｅｌ単位の４つのプレーンリストから２つの物理ブロックを選択する際、プレーン０とプレーン１は同一チップから選択するという制約を設けている。例えば、図６において、Ｂａｎｋ０／Ｃｈ０に所属する４つのプレーンリストＰＬ０〜ＰＬ３から２つの物理ブロックを選択する際は、Ｃｈｉｐ０／ｐｌａｎｅ０に所属するプレーンリストＰＬ０およびＣｈｉｐ０／ｐｌａｎｅ１に所属するプレーンリストＰＬ１からそれぞれ１つずつ物理ブロックを選択するか、あるいはＣｈｉｐ１／ｐｌａｎｅ０に所属するプレーンリストＰＬ２およびＣｈｉｐ１／ｐｌａｎｅ１に所属するプレーンリストＰＬ３からそれぞれ１つずつ物理ブロックを選択するようにする。
【００３８】
このような制約があるため、第２の実施形態では、次のようなシステムブロックの選択処理を行うようにしている。第１の実施形態と同様、ＮＡＮＤ１０の物理ブロックをグループＡ、Ｂに分けて、各グループからＮ／２個の物理ブロックを確保する。これ以降は、偶数チャネル（ｃｈ０、ｃｈ２、ｃｈ４、ｃｈ６）から構成されるグループＡからＮ／２個の物理ブロックを選択する手順について説明する。
【００３９】
まず、ブロック管理部３２は、使用可能ブロックセット数ＮbsをＢａｎｋ／Ｃｈｎｎｅｌ単位毎に導出する。Ｂａｎｋ／Ｃｈｎｎｅｌ単位とは、図６に示したように、それぞれが４つのプレーンリスト（ＰＬ０〜ＰＬ３、ＰＬ４〜ＰＬ７、…、ＰＬ６０〜ＰＬ６３）を持つ同一バンク番号および同一チャネル番号を持つ物理ブロックの集合である。使用可能ブロックセット数Ｎbsとは、Ｂａｎｋ／Ｃｈｎｎｅｌ単位に含まれる各Ｃｈｉｐにおけるｐｌａｎｅ０、ｐｌａｎｅ１のうちで使用可能ブロック数が小さいものを加算した値のことをいう。例えば、使用可能ブロック数が、Ｃｈｉｐ０／ｐｌａｎｅ０＝１０、Ｃｈｉｐ０／ｐｌａｎｅ１＝７、Ｃｈｉｐ１／ｐｌａｎｅ０＝１２、Ｃｈｉｐ１／ｐｌａｎｅ１＝９であった場合は、使用可能ブロックセット数は、Ｃｈｉｐ０＝７、Ｃｈｉｐ１＝９であり、Ｂａｎｋ／Ｃｈｎｎｅｌ単位での使用可能ブロックセット数Ｎbsは１６となる。
【００４０】
このようにして、ブロック管理部３２は、使用可能ブロックセット数ＮbsをＢａｎｋ／Ｃｈｎｎｅｌ単位毎に導出した後、使用可能ブロックセット数Ｎbsが多い順にＢａｎｋ／Ｃｈｎｎｅｌ単位をソートする。図８（ａ）は、使用可能ブロックセット数Ｎbsが多い順にＢａｎｋ／Ｃｈｎｎｅｌ単位をソートした状態を示している。つぎに、ブロック管理部３２は、図８（ａ）に示すように、使用可能ブロックセット数が全Ｂａｎｋ／Ｃｈｎｎｅｌ単位に亘って平準化されるように、使用可能ブロックセット数が多いＢａｎｋ／Ｃｈｎｎｅｌ単位を優先して、物理ブロックを確保（選択）する。
【００４１】
このようにしてＢａｎｋ／Ｃｈｎｎｅｌ単位毎の使用可能ブロックセット数が確保されると、ブロック管理部３２は、Ｂａｎｋ／Ｃｈｎｎｅｌ単位毎の確保数分を、該当するＢａｎｋ／Ｃｈｎｎｅｌ単位の各プレーンリストに配分する。Ｂａｎｋ／Ｃｈｎｎｅｌ単位内では、図８（ｂ）に示すように、使用可能ブロック数が多いプレーンリストから物理ブロックを優先的に確保（選択）する。
【００４２】
また、Ｂａｎｋ／Ｃｈｎｎｅｌ単位内では、図８（ｂ）に示すように、同一Ｃｈｉｐ内のｐｌａｎｅ０、ｐｌａｎｅ１の使用可能ブロック数の偏りを是正するように、すなわち同一Ｃｈｉｐ内のｐｌａｎｅ０、ｐｌａｎｅ１の使用可能ブロック数が平準化されるように、物理ブロックを選択する。すなわち、同一Ｃｈｉｐ内のｐｌａｎｅ０、ｐｌａｎｅ１間で使用可能ブロック数に偏りがある場合は、ｐｌａｎｅ０、ｐｌａｎｅ１のうちの使用可能ブロック数が多いｐｌａｎｅから優先的にｐｌａｎｅ０、ｐｌａｎｅ１の使用可能ブロック数が均等になるように物理ブロックを選択する。偏りがない場合は、ｐｌａｎｅ０、ｐｌａｎｅ１から均等に物理ブロックを選択する。
【００４３】
このように第２の実施形態では、Ｂａｎｋ／Ｃｈｎｎｅｌ単位内では、同一Ｃｈｉｐ内のｐｌａｎｅ０、ｐｌａｎｅ１の使用可能ブロック数の偏りを是正するように、システムブロックを選択することとしたので、同一Ｃｈｉｐ内の各プレーンの使用可能ブロック数が平準化され、これにより、ユーザ論理ブロックを構築するときに、Ｂａｎｋ／Ｃｈａｎｎｅｌ単位から物理ブロックを選択する際、プレーン０とプレーン１は同一チップから選択するという制約がある場合に、ユーザ論理ブロックをより多く確保することが可能となる。
【００４４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４５】
１  ホスト、２  ホストインタフェース、１０  ＮＡＮＤ、１０ａ〜１０ｈ  チャネル並列動作要素、１３  論理ブロック管理テーブル、１３ａ  システムブロックテーブル、１３ｂ  ユーザブロックテーブル、３０  コントローラ、３２  ブロック管理部、３３       データアクセス部。
【図１】
2013200663.tif 000003
【図２】
2013200663.tif 000004
【図３】
2013200663.tif 000005
【図４】
2013200663.tif 000006
【図５】
2013200663.tif 000007
【図６】
2013200663.tif 000008
【図７】
2013200663.tif 000009
【図８】
2013200663.tif 000010