(57)【特許請求の範囲】
【請求項１】
複数のブロックをそれぞれが有する複数の半導体メモリと、
前記複数の半導体メモリの各々が有する前記複数のブロックの各々と１対１に対応付けられた複数の記憶領域がマトリクス状に配列され、列ごとに、何れか１つの前記半導体メモリが有する前記複数のブロックの各々に対応する前記記憶領域が並べられ、各記憶領域には、当該記憶領域に対応する前記ブロックの欠陥の有無を示す欠陥情報が記憶される第１テーブルと、
データの書き込みを要求する書き込みコマンドを受信する受信部と、
前記第１テーブルの複数の行と１対１に対応する複数のインデックス番号のうちの何れかを選択し、その選択した前記インデックス番号と、前記第１テーブルとに基づいて、前記半導体メモリごとに、データの書き込みが行われる前記ブロックを１つずつ選択して、誤り訂正符号を構成するための前記ブロックの組を作成する作成部と、
複数の前記データの各々に対して個別に割り当てられた論理アドレスごとに、前記インデックス番号、および、前記複数の半導体メモリと１対１に対応する複数のチャネル番号のうちの何れか１つの前記チャネル番号を対応付けて記憶する第２テーブルと、
前記受信部で前記書き込みコマンドを受信した場合、前記複数のチャネル番号のうちの何れかを選択し、前記組を構成する複数の前記ブロックのうち、その選択した前記チャネル番号に対応する前記ブロックに対して、書き込みが要求された前記データを書き込むとともに、当該データに割り当てられた前記論理アドレスと、前記組に対応する前記インデックス番号と、選択した前記チャネル番号とを対応付けて前記第２テーブルに書き込む書き込み部と、を備え、
前記作成部は、前記複数の半導体メモリの各々が有する前記複数のブロックの各々に欠陥が無い場合は、前記半導体メモリごとに、前記インデックス番号が示す行に属する前記記憶領域に対応するブロックを１つずつ選択する、
ことを特徴とするメモリシステム。
【請求項２】
前記受信部が、読み出しを要求する読み出しコマンドを受信した場合、読み出しが要求された前記データに割り当てられた前記論理アドレスに対応する前記インデックス番号および前記チャネル番号を前記第２テーブルから読み出し、その読み出した前記インデックス番号および前記チャネル番号と、前記第１テーブルとに基づいて、読み出しが要求された前記データが格納された前記ブロックを特定する特定部と、
前記特定部で特定された前記ブロックに格納された前記データを読み出す読み出し部と、を備える、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記作成部は、選択した前記インデックス番号と、前記第１テーブルの前記欠陥情報とに基づいて、前記組を作成する、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項４】
前記作成部は、前記第１テーブルの列ごとに、当該列内の欠陥が無い前記ブロックのうち、上から数えて、選択した前記インデックス番号に対応する行の数だけ下に位置する前記ブロックを選択して前記組を作成する、
ことを特徴とする請求項３に記載のメモリシステム。
【請求項５】
前記特定部は、前記第２テーブルから読み出した前記インデックス番号および前記チャネル番号と、前記第１テーブルのうち、前記第２テーブルから読み出したチャネル番号に対応する列における前記欠陥情報とに基づいて、読み出しが要求された前記データが格納された前記ブロックを特定する、
ことを特徴とする請求項２に記載のメモリシステム。
【請求項６】
前記特定部は、前記第１テーブルのうち、前記チャネル番号に対応する列内の欠陥が無い前記ブロックのうち、上から数えて、前記インデックス番号に対応する行の数だけ下に位置する前記ブロックを、読み出しが要求された前記データが格納された前記ブロックとして特定する、
ことを特徴とする請求項５に記載のメモリシステム。
【請求項７】
前記欠陥情報は１ビットの情報である、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項８】
データの書き込みを要求する書き込みコマンドを受信する第１ステップと、
複数の半導体メモリの各々が有する複数のブロックの各々と１対１に対応付けられた複数の記憶領域がマトリクス状に配列され、列ごとに、何れか１つの前記半導体メモリが有する前記複数のブロックの各々に対応する前記記憶領域が並べられ、各記憶領域には、当該記憶領域に対応する前記ブロックの欠陥の有無を示す欠陥情報が記憶される第１テーブルの複数の行と１対１に対応する複数のインデックス番号のうちの何れかを選択する第２ステップと、
前記第２ステップで選択した前記インデックス番号と、前記第１テーブルとに基づいて、前記半導体メモリごとに、データの書き込みが行われる前記ブロックを１つずつ選択して、誤り訂正符号を構成するための前記ブロックの組を作成する第３ステップと、
前記書き込みコマンドを受信した場合、前記複数の半導体メモリと１対１に対応する複数のチャネル番号のうちの何れかを選択する第４ステップと、
前記組を構成する複数の前記ブロックのうち、前記第４ステップで選択した前記チャネル番号に対応する前記ブロックに対して、書き込みが要求された前記データを書き込むとともに、当該データに割り当てられた論理アドレスと、前記組に対応する前記インデックス番号と、前記チャネル番号とを対応付けて第２テーブルに書き込む第５ステップと、をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムおよびプログラムに関する。
【背景技術】
【０００２】
従来、不揮発性の半導体記憶チップとして、ＮＡＮＤ型のフラッシュメモリ（ＮＡＮＤフラッシュメモリという）が広く使われている。ＮＡＮＤ型のフラッシュメモリでは、最小の記録単位はページであり、ページ単位での書き込みが行われる。書き込みを行ったデータをホストからの要求に応じて読み出すためには、ホストから指定された論理アドレスから、当該論理アドレスに対応するデータが、ＮＡＮＤフラッシュメモリ上で実際に記憶されている記憶位置（物理アドレス）を特定する必要がある。半導体記憶チップを使用したメモリシステムでは、大容量を実現するために、それぞれが複数のブロック（単位記憶領域）を有する複数の半導体記憶チップを用いる。そして、各半導体記憶チップが有するブロック同士を組にして誤り訂正を行う技術が知られている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】A Case for Redundant Arrays of Inexpensive Disks (RAID) UC Berkeley Technical Report UCB/CSD-87-391 1987年
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数のブロックで誤り訂正の組を構成する場合、訂正を行うためにはどのブロックを組にしているかを参照するためのテーブル（論物変換テーブル）が必須となるが、コスト低減の観点から、論物変換テーブルのサイズを小さくすることが求められている。本発明が解決しようとする課題は、ブロックを組にした誤り訂正において、組にしたブロックの情報を記録する論物変換テーブルのサイズを低減可能なメモリシステムを提供することである。
【課題を解決するための手段】
【０００５】
実施形態のメモリシステムは、複数のブロックをそれぞれが有する複数の半導体メモリと、第１テーブルと、受信部と、作成部と、第２テーブルと、書き込み部とを備える。第１テーブルは、各ブロックにそれぞれ対応するとともに欠陥情報が記憶される複数の記憶領域を有する。作成部は、第１テーブルの複数の行のうちの何れかを示すインデックス番号と、第１テーブルとに基づいて、半導体メモリごとに、データの書き込みが行われるブロックを１つずつ選択して、誤り訂正符号を構成するためのブロックの組を作成する。第２テーブルは、論理アドレスごとに、インデックス番号と、チャネル番号とを対応付けて記憶する。書き込み部は、受信部で書き込みコマンドを受信した場合、組を構成する複数のブロックのうち、選択したチャネル番号に対応するブロックに対して、データを書き込む。
【図面の簡単な説明】
【０００６】
【図１】本実施形態に係るメモリシステムのブロック図。
【図２】コンパクションを説明するための概念図。
【図３】論物変換テーブルの一例を示す図。
【図４】書き込み対象データを例示する図。
【図５】論理アドレスの構成を例示する図。
【図６】ラウンドロビンによる書き込みを説明するための図。
【図７】誤り訂正符号の構成を説明するための図。
【図８】書き込み処理の一例を示すフローチャート。
【図９】ページサイズ書き込み処理の一例を示すフローチャート。
【図１０】マージ書き込み処理の一例を示すフローチャート。
【図１１】読み出し処理の一例を示すフローチャート。
【図１２】ページサイズ読み出し処理の一例を示すフローチャート。
【図１３】ページ未満読み出し処理の一例を示すフローチャート。
【発明を実施するための形態】
【０００７】
図１は、本実施形態のメモリシステム１００の概略構成の一例を示すブロック図である。図１に示すように、メモリシステム１００は、制御部１０と、Ｉ／Ｆ部２０と、複数（１２個）の半導体メモリ３０Ａ〜３０Ｌと、記憶部４０と、を備える。
【０００８】
制御部１０は、メモリシステム１００の各部を制御する手段であり、例えばＣＰＵ（Central  Processing  Unit）などで構成される。Ｉ／Ｆ部２０は、制御部１０の制御の下、メモリシステム１００の上位装置であるホスト装置５０との通信を制御する。Ｉ／Ｆ部２０は、例えばＳＡＳ／ＳＡＴＡインタフェースなどで構成される。ホスト装置５０は、メモリシステム１００に対して、データの書き込みを要求する書き込みコマンド、および、データの読み出しを要求する読み出しコマンドなどの信号を送信する。
【０００９】
半導体メモリ３０Ａ〜３０Ｌは、半導体チップからなる記憶素子であり、例えばＮＡＮＤ型のフラッシュメモリで構成される。以下では、半導体メモリ３０Ａ〜３０Ｌの各々を区別する必要がない場合は、単に半導体メモリ３０と表記する。半導体メモリ３０は、ページと呼ばれる単位で読み書きが可能であり、複数ページがまとまってブロックと呼ばれる単位の記憶領域を構成する。ここでは、１ページのサイズが４ＫＢであり、６４ページで１ブロックが構成される。１つの半導体メモリ３０は、複数のブロックで構成される。
【００１０】
図１に示すように、半導体メモリ３０Ａ〜３０Ｌの各々に対してチャネル(ＣＨ０〜ＣＨ１１)が１つずつ割り当てられる。複数のチャネル（ＣＨ０〜ＣＨ１１）のうちの１つのチャネル(ここではＣＨ１１とする)は、冗長情報を書き込むためのチャネルとして設定され、残りのチャネル(ＣＨ０〜ＣＨ１０)は、ホスト装置５０から書き込みが要求されたデータを書き込むためのチャネルとして設定される。そして、チャネルＣＨ０〜ＣＨ１１の各ページを１つの組として誤り訂正符号が構成される。なお、後述するように、制御部１０は、ホスト装置５０から書き込みが要求されたデータがページのサイズより大きい場合にはこれを複数に分割し、分割したページ単位のデータ（分割データ）を各チャネルＣＨ０〜ＣＨ１０に割り当てて、書き込みを行う。
【００１１】
ここで、半導体メモリ３０への書き込み方式について説明する。ＮＡＮＤ型のフラッシュメモリでは、追記方式が採用される。この追記方式では、ブロック単位でデータの消去を行い、消去済みのブロックに対してページ単位で書き込みを行う。すなわち、ＮＡＮＤ型の半導体メモリにおいては、消去済みのブロックのうち書き込みがまだ行われていないページに対して書き込みが可能であり、既に書き込みが行なわれたページに対する上書きは不可能である。
【００１２】
また、ホスト装置５０からの要求により書き込みが行われるデータには、論理アドレス（Logical  Block  Address:LBA）が割り当てられ、ホスト装置５０から送信される書き込みコマンドには、書き込みが要求されるデータと、当該データに割り当てられた論理アドレスとが含まれる。本実施形態では、半導体メモリ３０において、書き込みが要求されたデータが書き込まれるブロックは、後述の論物変換テーブルに基づいて、当該データに割り当てられた論理アドレスとは無関係に決定され、ページの昇順で書き込みが行われる。そして、新たなデータの書き込みがホストから要求されると、制御部１０は、消去済みのブロックのうち書き込みがまだ行なわれていないページに対して新たなデータの書き込みを行う。このとき、前回書き込みが行われたページを無効にして、新たなデータの書き込みが行われたページを有効にする。またこのとき、制御部１０は、上述した誤り訂正符号を構成しながら新たなデータや冗長情報の書き込みを行なう。
【００１３】
上述の追記方式において、書き込みを続けることにより、無効にされたページが増えてくると、半導体メモリ３０において書き込みを実現可能な容量（実現容量という）が少なくなってくる。そして、書き込みが可能な新規の消去済みのブロック、即ち、消去後に書き込みがまだ行なわれていないブロック（フリーブロックという）が少なくなり、誤り訂正符号を構成するブロックの組（論理ブロック）の確保が不可能になった時点で書き込み不能となってしまう。これを防ぐために、制御部１０は、適当なタイミングでガベージコレクションを行なう。ＮＡＮＤ型の半導体メモリにおいて行なうガベージコレクションは、特にコンパクションという。
【００１４】
図２は、コンパクションを説明するための概念図である。制御部１０は、無効にされたページを含むブロックのうち、無効にされていないページに書き込まれたデータ（有効データという）を集めて新たにフリーブロックに書き直すことにより、有効データを移動させる。その後、制御部１０は、当該ブロックに対して消去を行うことにより、新たなフリーブロックを生成する。制御部１０は、このようなコンパクションを行なうことにより、書き込みが不能になったブロックが新たに書き込み可能になって、フリーブロックを確保することが可能になる。また、移動により有効データが書き込まれたブロックにおいても、書き込みがまだ行なわれていないページがあればそのページに新たに書き込みが可能である。
【００１５】
なお、コンパクションを行うためには少なくとも一つのフリーブロックが必要になるが、これは、半導体メモリ３０において実装された容量（実装容量という）より、書き込みを実際に実現可能な容量（実現容量）が少ないことを意味している。ここでは、実装容量と実現容量との差を余裕容量と呼んでいる。余裕容量が小さい時は、制御部１０は、コンパクションを頻繁に行わなければならず、その性能に与えるインパクトが大きい。
【００１６】
再び図１に戻って説明を続ける。記憶部４０は、各種データや各種プログラムを記憶する。本実施形態では、記憶部４０は、論物変換テーブルを記憶する。図３は、論物変換テーブル６０の一例を示す図である。図３に示すように、論物変換テーブル６０は、第１テーブル６２と、第２テーブル６４とを有する。第１テーブル６２は、半導体メモリ３０Ａ〜３０Ｌ（ＣＨ０〜ＣＨ１１）の各々が有する複数のブロックの各々と１対１に対応付けられた記憶領域Ｍがマトリクス状に配列され、列ごとに、何れか１つの半導体メモリ３０が有する複数のブロックの各々に対応する記憶領域Ｍが順番に並べられる。図３の例では、第１テーブル６２の第１列目は半導体メモリ３０Ａ（チャネルＣＨ０）に対応し、第２列目は半導体メモリ３０Ｂ（チャネルＣＨ１）に対応し、第３列目は半導体メモリ３０Ｃ（チャネルＣＨ２）に対応し、第４列目は半導体メモリ３０Ｄ（チャネルＣＨ３）に対応し、第５列目は半導体メモリ３０Ｅ（チャネルＣＨ４）に対応し、第６列目は半導体メモリ３０Ｆ（チャネルＣＨ５）に対応する。また、第７列目は半導体メモリ３０Ｇ（チャネルＣＨ６）に対応し、第８列目は半導体メモリ３０Ｈ（チャネルＣＨ７）に対応し、第９列目は半導体メモリ３０Ｉ（チャネルＣＨ８）に対応し、第１０列目は半導体メモリ３０Ｊ（チャネルＣＨ９）に対応し、第１１列目は半導体メモリ３０Ｋ（チャネルＣＨ１０）に対応し、第１２列目は半導体メモリ３０Ｌ（チャネルＣＨ１１）に対応する。
【００１７】
ここでは、一例として半導体メモリ３０の合計容量は１９２ＧＢであり、１９２ＧＢを１２チャネルで実現するので、１ブロックを１ＭＢとすると、総ブロック数は、１９２０００個となる。そうすると、１チャネル当たりのブロック数は、１９２０００÷１２＝１６０００個となる。つまり、複数の記憶領域Ｍは、１６０００行×１２列のマトリクス状に配列される。説明の便宜上、以下では、第１テーブル６２において、第ｉ行（１≦ｉ≦１６０００）の第ｊ列目（１≦ｊ≦１２）に位置する記憶領域ＭをＭｉｊと表記する。なお、各記憶領域を区別する必要が無い場合は、単に記憶領域Ｍと表記する。
【００１８】
本実施形態では、第１テーブル６２の第ｊ列目は、チャネルＣＨｊ−１に対応する。例えば第１テーブルの第１列目はチャネルＣＨ０に対応し、第２列目はチャネルＣＨ１に対応する。ここで、第１テーブル６２の第１列目に着目すると、第ｉ行目の記憶領域Ｍｉ１は、１６０００個のブロックが列方向に沿って順番に配列されるチャネルＣＨ０の第ｉ行目（第ｉ番目）のブロックに対応する。例えば記憶領域Ｍ１１は、チャネルＣＨ０の第１行目のブロックに対応し、記憶領域Ｍ２１は、チャネルＣＨ１の第２行目のブロックに対応する。他の列についても同様である。
【００１９】
また、本実施形態では、各記憶領域Ｍには、当該記憶領域Ｍに対応するブロックの欠陥の有無を示す欠陥情報が格納される。本実施形態では、欠陥情報は、１ビットの情報で表される。そして、ブロックに欠陥がある場合は、当該ブロックに対応する記憶領域Ｍに格納される欠陥情報は「１」に設定される一方、ブロックに欠陥が無い場合は、当該ブロックに対応する記憶領域Ｍに格納される欠陥情報は「０」に設定される。なお、これに限らず、ブロックに欠陥がある場合は、当該ブロックに対応する記憶領域Ｍに格納される欠陥情報は「０」に設定される一方、ブロックに欠陥が無い場合は、当該ブロックに対応する記憶領域Ｍに格納される欠陥情報は「１」に設定されてもよい。
【００２０】
さらに、第１テーブル６２の各行には、インデックス番号が個別に割り当てられる。本実施形態では、第１テーブル６２の第ｉ行には、インデックス番号「ｉ」が割り当てられる。例えば第１テーブル６２の第１行には、インデックス番号「１」が割り当てられ、第２行には、インデックス番号「２」が割り当てられるといった具合である。なお、インデックス番号の割り当て方法は任意であり、例えば第１テーブル６２の第１行に、インデックス番号「３」が割り当てられてもよい。要するに、第１テーブル６２の各行に対して、当該行を識別するためのインデックス番号が個別に割り当てられるものであればよい。
【００２１】
一方、図３に示すように、第２テーブル６４は、論理アドレスごとに、上述のインデックス番号と、チャネルの番号を示すチャネル番号と、ページの番号を示すページ番号とを対応付けて記憶する。ここでは、第２テーブル６４の各エントリ（データを格納する領域）は、論理アドレスをインデックスとして、上述のインデックス番号と、チャネル番号と、ページ番号とを格納する。本実施形態では、１９２ＧＢの容量を４ＫＢ（１ページ当たりのサイズ）で管理するので、第２テーブル６４のエントリ数は４８Ｍとなり、２６ビットで表現される。また、１ページは、５１２バイトごとのセクタで区分され、各セクタは、３ビットで表現される。
【００２２】
本実施形態では、図４に示すように、論理アドレスは２９ビットで構成され、上位２６ビットは、第２テーブル６４の各エントリのインデックスとなり、下位３ビットはページ内のセクタの位置を示す。
【００２３】
再び図１に戻って説明を続ける。制御部１０は、記憶部４０に記憶された制御プログラムを実行することにより、作成部１２、書き込み部１４、特定部１６、読み出し部１８の各機能を実現する。ここで、データの書き込みには、当該データを書き込むブロックの選択と、ブロック内のページの選択が必要になる。ここでは、データを書き込むブロックの選択について説明する。作成部１２は、書き込みが開始される前に、各チャネルＣＨ０〜ＣＨ１１から１つずつフリーブロックを選択してブロックの組（論理ブロック）を作成する。本実施形態では、作成部１２は、フリーブロックのみで作られた論理ブロック、すなわちフリー論理ブロックに対応するインデックス番号を選択し、その選択したインデックス番号と、第１テーブル６２とに基づいて、チャネルＣＨごとに（半導体メモリ３０ごとに）、データの書き込みが行われるブロックを１つずつ選択してブロックの組（論理ブロック）を作成する。ここでは、インデックス番号は、論理ブロックを識別するための番号（論理ブロック番号）とみなすこともできる。なお、インデックス番号（論理ブロック番号）の選択においては、各ブロックの書き換え回数を均等化するために、選択回数の少ないフリー論理ブロックが優先的に選択される。
【００２４】
いま、半導体メモリ３０に対するデータの書き込みが全く行われていない初期状態を想定する。この場合、作成部１２は、１〜１６０００のインデックス番号の中から任意の１つのインデックス番号を選択することができる。図３の例において、作成部１２がインデックス番号「５」を選択した場合を想定する。仮に、各ブロックに欠陥が存在せずに、各記憶領域Ｍに格納される欠陥情報が全て「０」であれば、作成部１２は、チャネルごとに、インデックス番号５に対応する第１テーブル６２の行に属する記憶領域Ｍに対応するブロックを１つずつ選択して論理ブロックを作成する。ここでは、インデックス番号「５」に対応する第１テーブル６２の行は第５行目なので、作成部１２は、各チャネル（ＣＨ０〜ＣＨ１１）の第５行目に属するブロック（第５番目のブロック）を選択して論理ブロックを作成する。
【００２５】
しかしながら、実際には図３に示すように、欠陥情報が「１」である記憶領域Ｍも存在するので（欠陥があるブロックも存在するので）、作成部１２は、選択したインデックス番号と、第１テーブル６２の欠陥情報とに基づいて、論理ブロックを作成する。より具体的には、特定部１６は、第１テーブル６２の列ごとに、当該列内の欠陥が無いブロックのうち、上から数えて、選択したインデックス番号「５」に対応する行の数だけ下に位置するブロックを選択して論理ブロックを作成する。ここでは、作成部１２は、第１テーブル６２の列ごとに、当該列内の「０」の欠陥情報が格納された記憶領域Ｍのうち、上から順番に数えて、５番目に位置する記憶領域Ｍに対応するブロックを選択する。
【００２６】
例えば第１テーブル６２の第１列目に着目すると、作成部１２は、当該第１列目内の欠陥情報が「０」の記憶領域Ｍのうち、第１行に属する記憶領域Ｍ１１から数えて５だけ下に位置する記憶領域Ｍ５１に対応するブロック（ＣＨ０の第５番目のブロック）を選択する。また、例えば第１テーブル６２の第２列目に着目すると、第１行および第２行の各々の記憶領域Ｍ（Ｍ１２、Ｍ２２）に格納される欠陥情報は「１」なので、作成部１２は、第３行に属する記憶領域Ｍ３１から数えて５だけ下に位置する記憶領域Ｍ７２に対応するブロック（ＣＨ１の第７番目のブロック）を選択する。他の列についても同様である。つまり、図３の例では、選択したインデックス番号が「５」の場合、作成部１２は、ＣＨ０、ＣＨ２〜ＣＨ４およびＣＨ６〜ＣＨ１１の各々の第５番目のブロックと、ＣＨ１の第７番目のブロックと、ＣＨ５の第１０番目のブロックとを選択して論理ブロックを作成する。
【００２７】
図１に戻って説明を続ける。書き込み部１４は、ホスト装置５０からの書き込みコマンドをＩ／Ｆ部２０で受信した場合、作成部１２で予め作成された論理ブロックを構成する複数（１２個）のブロックのうち、書き込みが要求されたデータ（「書き込み対象データ」と呼ぶ）を書き込むブロックを決定し、その決定したブロックに当該データを書き込む。
【００２８】
本実施形態では、書き込み部１４は、冗長情報を書き込むチャネル（ここではＣＨ１１）以外のチャネルで、４ＫＢ（１ページ分のサイズ）ごとにラウンドロビンにより書き込みを行うようにし、ラウンドロビンの順番に応じて、書き込み対象のチャネルを決定する。この書き込みにおいて、書き込み部１４は、決定したブロックの中の未だ書き込みが行われていないページに追記ポインタを設定し、その追記ポインタで示される位置のページに書き込み対象データを書き込む。そして、追記ポイントが、書き込みを行なったページに続く次のページであって書き込みがまだ行われていないページの位置を示すように更新する。したがって、追記ポインタの値は、次の書き込み位置を示すように、順次に変化する。
【００２９】
ここで、書き込み対象データ及び冗長情報のデータ構成について説明する。書き込み部１４は、書き込み対象データ自体の誤りを検出して訂正するための誤り訂正符号（ページＥＣＣという）、および、当該書き込み対象データに割り当てられた論理アドレスを当該書き込み対象データに付加する。尚、ページＥＣＣには、データの誤りを検出するＣＲＣ符号等の符号と、データの誤りを訂正するＥＣＣ符号等の符号とが含まれるものとする。ページＥＣＣにＣＲＣ符号も含む理由は、ＥＣＣ符号によりデータの誤りを訂正できない場合は誤訂正の可能性もあるからである。
【００３０】
図５は、冗長情報が付加された書き込み対象データを例示する図である。書き込み部１４は、このようなページＥＣＣ及び論理アドレスを付加した書き込み対象データを、上述のように決定されたブロック内の追記ポインタにより示されるページに書き込む。尚、書き込み対象データはページ単位の大きさであるが、ブロック内のページサイズは、書き込み対象データにページＥＣＣ及び論理アドレスが付加された全体の大きさに相当するものとする。また、書き込み部１４は、書き込み対象データがページのサイズより大きい場合には、これを複数の分割データに分割し、当該書き込み対象データに割り当てられた論理アドレスに基づいて、各分割アドレスの論理アドレスをそれぞれ算出する。一方、書き込み部１４は、誤り訂正符号を構成するために計算された冗長情報自体の誤りを検出して訂正するためのページＥＣＣを当該冗長情報に付加する。そして、ページＥＣＣを付加した当該冗長情報を、追記ポインタにより示されるチャネルＣＨ１１内のページに書き込む。
【００３１】
次に、複数の書き込み対象データが、ラウンドロビンによりチャネルＣＨ０〜ＣＨ１１に書き込まれる様子について説明する。図６は、ラウンドロビンにより行う書き込みを説明するための図である。尚、図の簡略化のため、データに対して付加された論理アドレスの図示を省略している。同図に示されるように、時刻Ｔ１でチャネルＣＨ０に対して最初のデータＤ１の書き込みが行われ、時刻Ｔ２でチャネルＣＨ１に対して次のデータＤ２の書き込みが行われるというように、チャネルＣＨ０〜ＣＨ１０まではラウンドロビンにより順番にデータの書き込みが行われる。
【００３２】
なお、時刻Ｔ１１で、チャネルＣＨ１０へのデータＤ１１の書き込みが行われる際には、時刻Ｔ１でチャネルＣＨ０に書き込まれたデータＤ１、時刻Ｔ２でチャネルＣＨ１に書き込まれたデータＤ２、時刻Ｔ３でチャネルＣＨ２に書き込まれたデータＤ３、時刻Ｔ４でチャネルＣＨ３に書き込まれたデータＤ４、時刻Ｔ５でチャネルＣＨ４に書き込まれたデータＤ５、時刻Ｔ６でチャネルＣＨ５に書き込まれたデータＤ６、時刻Ｔ７でチャネルＣＨ６に書き込まれたデータＤ７、時刻Ｔ８でチャネルＣＨ７に書き込まれたデータＤ８、時刻Ｔ９でチャネルＣＨ８に書き込まれたデータＤ９、時刻Ｔ１０でチャネルＣＨ９に書き込まれたデータＤ１０、時刻Ｔ１１でチャネルＣＨ１０に書き込まれたデータＤ１１のパリティＰが冗長情報として計算され、当該冗長情報Ｐの書き込みがチャネルＣＨ１１に対して行われる。更なるデータの書き込みの際には、チャネルＣＨ０から順にラウンドロビンで書き込みが行われる。このように、ラウンドロビンによりデータの書き込みが行われることにより、書き込みがチャネル間で均等になる。なお、同図の例では、時刻の経過と共に各チャネルに順に書き込みを行う様子が図示されているが、これに限らず、２つ以上のチャネルに同時に書き込みを行うようにしてもよい。
【００３３】
次に、誤り訂正符号の構成について図７を用いて説明する。尚、説明の便宜上、同図においては、チャネルＣＨ０〜ＣＨ１１に各々書き込まれる分割データに付加される論理アドレスの図示を省略している。同図に示されるように、チャネルＣＨ０〜ＣＨ１１の各書き込み対象データに対して、書き込み部１４は、オフセットが等しい位置のバイト同士で排他的論理和を計算し、この値を冗長情報として、チャネルＣＨ１１の半導体メモリ３０Ｌにおいて上述のオフセットが等しい位置に書き込む。すなわち、チャネルＣＨ０〜ＣＨ１１においてオフセットが等しい位置のバイト同士によって誤り訂正符号が構成される。
【００３４】
再び図１に戻って説明を続ける。特定部１６は、ホスト装置５０からの読み出しコマンドをＩ／Ｆ部２０で受信した場合、読み出しが要求されたデータ（「読み出し対象データ」と呼ぶ）が格納されたブロックを特定する。ホスト装置５０から送信される読み出しコマンドには、読み出し対象データに割り当てられた論理アドレスが含まれる。特定部１６は、当該論理アドレスに対応するインデックス番号およびチャネル番号を第２テーブル６４から読み出し、その読み出したインデックス番号およびチャネル番号と、第１テーブル６２とに基づいて、読み出し対象データが格納されたブロックを特定する。詳細な内容については後述する。読み出し部１８は、特定部１６で特定されたブロックに格納されたデータを読み出す。
【００３５】
次に、制御部１０が実行する処理の手順について説明する。まず、制御部１０が、ホスト装置５０からの書き込みコマンドに応じて、書き込み対象データの書き込みを行う処理（「書き込み処理」と呼ぶ）の手順について説明する。なお、作成部１２は、前述した方法で、予めフリーの論理ブロックを作成しておく。そして、書き込み部１４は、作成部１２により作成されたフリーの論理ブロックを構成する複数のブロックの各々の書き込み先のページを示す追記ポインタをチャネル毎に設定する。書き込みを始める前には、書き込み部１４は、作成部１２により作成された論理ブロックを構成する複数のブロックの各々の先頭のページを示すように各チャネルの追記ポインタを設定する。追記ポインタが全てのチャネルでブロックの最後に達して、論理ブロックにこれ以上追記できなくなったら、作成部１２は、フリーの論理ブロックを新たに作成する。
【００３６】
図８は、書き込み処理の一例を示すフローチャートである。図８に示すように、書き込み部１４は、ホスト装置５０からの書き込みコマンドをＩ／Ｆ部２０で受信すると（ステップＳ１）、書き込みが要求されたデータ（書き込み対象データ）と、当該書き込み対象データに割り当てられた論理アドレスとを書き込みコマンドから取り出して記憶部４０内のバッファ領域に書き込む（ステップＳ２）。
【００３７】
次に、書き込み部１４は、書き込み対象データのサイズが１ページ分のサイズ（ここでは一例として４ＫＢ）以下であるか否かを判定する（ステップＳ３）。書き込み対象データのサイズが１ページ分のサイズより大きいと判定した場合（ステップＳ３：ＮＯ）、書き込み部１４は、書き込み対象データをページ単位で分割し（ステップＳ４）、そのうちの先頭の分割データをバッファ領域から取り出す（ステップＳ５）。次に、書き込み部１４は、ステップＳ５で取り出した分割データのサイズが１ページ分のサイズ未満であるか否かを判定する（ステップＳ６）。分割データのサイズが１ページ分のサイズ未満ではない、つまりは１ページ分のサイズであると判定した場合（ステップＳ６：ＮＯ）、書き込み部１４は、ページサイズのデータをブロックに書き込む処理（ページサイズ書き込み処理）を実行する（ステップＳ７）。ページサイズ書き込み処理の詳細な内容については後述する。上述のステップＳ６において、分割データが１ページ分のサイズ未満であると判定した場合（ステップＳ６：ＹＥＳ）、書き込み部１４は、ページサイズ未満のデータをブロックに書き込む処理（マージ書き込み処理）を実行する（ステップＳ８）。マージ書き込み処理の詳細な内容については後述する。
【００３８】
ステップＳ７またはステップＳ８の後、書き込み部１４は、バッファ領域に分割データが残存しているか否かを判定する（ステップＳ９）。分割データが残存していないと判定した場合（ステップＳ９：ＮＯ）、書き込み処理は終了する。分割データが残存していると判定した場合（ステップＳ９：ＹＥＳ）、処理は上述のステップＳ５に戻される。
【００３９】
一方、上述のステップＳ３において、書き込み対象データのサイズが１ページ分のサイズ以下であると判定した場合（ステップＳ３：ＹＥＳ）、書き込み部１４は、当該書き込み対象データのサイズが１ページ分のサイズ未満であるか否かを判定する（ステップＳ１０）。書き込み対象データのサイズが１ページ分のサイズ未満ではない、つまりは１ページ分のサイズであると判定した場合（ステップＳ１０：ＮＯ）、書き込み部１４は、後述のページサイズ書き込み処理を実行する（ステップＳ１１）。一方、書き込み対象データのサイズが１ページ分のサイズ未満であると判定した場合（ステップＳ１０：ＹＥＳ）、書き込み部１４は、後述のマージ書き込み処理を実行する（ステップＳ１２）。
【００４０】
次に、書き込み部１４（制御部１０）が実行するページサイズ書き込み処理の手順について説明する。図９は、ページサイズ書き込み処理の一例を示すフローチャートである。まず書き込み部１４は、データ（分割データ含む）を書き込むチャネルをラウンドロビンにより決定する（ステップＳ２０）。次に、書き込み部１４は、今回の書き込みに用いられるフリーの論理ブロックを構成する複数のブロックのうち、ステップＳ２０で決定したチャネルに対応するブロックの、追記ポインタで示されるページにデータを書き込む（ステップＳ２１）。次に、書き込み部１４は、当該データに割り当てられた論理アドレスでインデックスされる第２テーブル６４のエントリに、今回の書き込みに用いられたフリーの論理ブロックに対応するインデックス番号（論理ブロック番号）と、ステップＳ２０で決定したチャネル番号と、追記ポインタで示されるページ番号とを対応付けて書き込む（ステップＳ２２）。
【００４１】
次に、書き込み部１４は、データを書き込んだチャネルが最終段のチャネル（ここではチャネルＣＨ１１）で、かつ、追記ポインタが示しているページはブロック内の最後のページであるか否かを判定する（ステップＳ２３）。データを書き込んだチャネルが最終段のチャネルで、かつ、追記ポインタが示しているページはブロック内の最後のページではないと判定した場合（ステップＳ２３の結果：ＮＯ）、書き込み部１４は、追記ポインタが次のページを示すように追記ポインタの値を１つだけインクリメントする（ステップＳ２４）。一方、データを書き込んだチャネルが最終段のチャネルで、かつ、追記ポインタが示しているページはブロック内の最後のページであると判定した場合（ステップＳ２３の結果：ＹＥＳ）、作成部１２は、新たにフリーの論理ブロックを作成する（ステップＳ２５）。そして、書き込み部１４は、新たに作成されたフリーの論理ブロックを構成する複数のブロックの各々の先頭のページを示すように各チャネルの追記ポインタを設定する。以上で、ページサイズ書き込み処理は終了する。
【００４２】
次に、制御部１０が実行するマージ書き込み処理の手順について説明する。図１０は、マージ書き込み処理の一例を示すフローチャートである。まず書き込み部１４は、書き込みを行うデータに割り当てられた論理アドレス（「書き込み論理アドレス」と呼ぶ）に対応するインデックス番号、チャネル番号およびページ番号が第２テーブル６４に既に格納されているか否かを判定する（ステップＳ３０）。
【００４３】
書き込み論理アドレスに対応するインデックス番号、チャネル番号およびページ番号が第２テーブル６４に既に格納されていると判定した場合（ステップＳ３０：ＹＥＳ）、制御部１０（特定部１６）は、当該書き込み論理アドレスに対応するインデックス番号、チャネル番号およびページ番号を第２テーブル６４から読み出す。そして、特定部１６は、読み出したインデックス番号およびチャネル番号と、第１テーブル６２とに基づいて、半導体メモリ３０のブロックを特定する。この特定方法については、後述の読み出し処理で詳細に説明する。また、特定部１６は、当該書き込み論理アドレスに対応するページ番号を第２テーブル６４から読み出す。以上のようにして、当該書き込み論理アドレスに対応するブロックと、当該ブロック内のページ番号とが特定される（ステップＳ３１）。
【００４４】
次に、読み出し部１８は、ステップＳ３１で特定されたブロック内のページ番号が示すページに格納されたデータ（ページデータ）を、記憶部４０のバッファ領域へ読み出す（ステップＳ３２）。次に、特定部１６は、書き込み論理アドレスの下位３ビットを参照して、対応するセクタを特定する（ステップＳ３３）。次に、書き込み部１４は、バッファ領域上のページデータのうちステップＳ３２で特定されたセクタに対応する位置に、データを書き込む（ステップＳ３４）。そして、書き込み部１４は、バッファ領域上のページデータを、新しいページ（追記ポインタで示されたページ）に書き込む。すなわち、書き込み部１４は、上述のページサイズ書き込み処理を実行する（ステップＳ３５）。以上で、マージ書き込み処理が終了する。
【００４５】
一方、上述のステップＳ３０において、書き込み論理アドレスに対応するインデックス番号、チャネル番号およびページ番号が第２テーブル６４に格納されていないと判定した場合（ステップＳ３０：ＮＯ）、書き込み部１４は、上述したページサイズ書き込み処理と同じ方法で、データの書き込みを行う（ステップＳ３６）。この内容は、図９に例示した内容と同じであるので、詳細な説明は省略する。以上で、マージ書き込み処理は終了する。
【００４６】
次に、制御部１０が、ホスト装置５０からの読み出しコマンドに応じて、読み出しが要求されたデータ（読み出し対象データ）の読み出しを行う処理（「読み出し処理」と呼ぶ）の手順について説明する。図１１は、読み出し処理の一例を示すフローチャートである。図１１に示すように、制御部１０（特定部１６）は、ホスト装置５０からの読み出しコマンドをＩ／Ｆ部２０で受信すると（ステップＳ４１）、読み出し対象データのサイズが１ページ分のサイズ以下であるか否かを判定する（ステップＳ４２）。読み出し対象データのサイズが１ページ分のサイズ（ページサイズ）より大きいと判定した場合（ステップＳ４２：ＮＯ）、制御部１０は、読み出し対象データをページサイズに分割し（ステップＳ４３）、そのうちの先頭の分割データを読み出す（ステップＳ４４）。次に、制御部１６は、ステップＳ４４で読み出した分割データのサイズが１ページ分のサイズ未満であるか否かを判定する（ステップＳ４５）。分割データのサイズが１ページ未満ではない、つまりは１ページ分のサイズであると判定した場合（ステップＳ４５：ＮＯ）、制御部１０は、ページサイズのデータを読み出す処理（ページサイズ読み出し処理）を実行する。ページサイズ読み出し処理の詳細な内容については後述する。上述のステップＳ４５において、分割データのサイズがページサイズ未満であると判定した場合（ステップＳ４５：ＹＥＳ）、制御部１０は、ページサイズ未満のデータを読み出す処理（ページ未満読み出し処理）を実行する（ステップＳ４７）。ページ未満読み出し処理の詳細な内容については後述する。
【００４７】
ステップＳ４６またはステップＳ４７の後、制御部１０は、分割データが残存しているか否かを判定する（ステップＳ４８）。分割データが残存していないと判定した場合（ステップＳ４８：ＮＯ）、読み出し処理は終了する。分割データが残存していると判定した場合（ステップＳ４８：ＹＥＳ）、処理は上述のステップＳ４４に戻される。
【００４８】
一方、上述のステップＳ４２において、読み出し対象データのサイズがページサイズ以下であると判定した場合（ステップＳ４２：ＹＥＳ）、制御部１０は、当該読み出し対象データのサイズがページサイズ未満であるか否かを判定する（ステップＳ４９）。読み出し対象データのサイズがページサイズ未満ではない、つまりは１ページ分のサイズであると判定した場合（ステップＳ４９：ＮＯ）、制御部１０は、後述のページサイズ読み出し処理を実行する（ステップＳ５０）。一方、読み出し対象データのサイズがページサイズ未満であると判定した場合（ステップＳ４９：ＹＥＳ）、制御部１０は、後述のページ未満読み出し処理を実行する（ステップＳ５１）。
【００４９】
次に、制御部１０が実行するページサイズ読み出し処理の手順について説明する。図１２は、ページサイズ読み出し処理の一例を示すフローチャートである。まず制御部１０（特定１６）は、読み出し対象データ（分割データ含む）に割り当てられる論理アドレス（「読み出し論理アドレス」と呼ぶ）を特定する（ステップＳ６１）。次に、特定部１６は、当該読み出し論理アドレスに対応するインデックス番号、チャネル番号およびページ番号の各々を第２テーブル６４から読み出す（ステップＳ６２）。
【００５０】
次に、特定部１６は、ステップＳ６２で読み出したインデックス番号およびチャネル番号と、第１テーブル６２とから、読み出し対象データが格納されたブロックを特定する（ステップＳ６３）。より具体的には、特定部１６は、ステップＳ６３で読み出したインデックス番号およびチャネル番号と、第１テーブル６２のうち、当該チャネル番号に対応する列内の欠陥情報とに基づいて、読み出し対象データが格納されたブロックを特定する。
【００５１】
さらに詳述すると、以下のとおりである。いま、ステップＳ６２で読み出されたインデックス番号が「５」、チャネル番号が「ＣＨ１」の場合を想定する。図３の例において、各ブロックに欠陥が存在しない場合、つまりは、各記憶領域Ｍに格納された欠陥情報が全て「０」の場合、インデックス番号５に対応する論理ブロックは、各チャネルＣＨ０〜ＣＨ１１の第５行目に属するブロックで構成される。そして、読み出されたチャネル番号は「ＣＨ１」（第１テーブル６２の第２列目に対応）なので、各ブロックに欠陥が存在しない場合は、第１テーブル６２の第５行の第２列目に位置する記憶領域Ｍ５２に対応するブロックが、読み出し対象データが格納されたブロックとして特定される。
【００５２】
しかしながら、実際には、図３に示すように、第１テーブル６２の第２列目においては、第１行に属する記憶領域Ｍ１２、および、第２行に属する記憶領域Ｍ２２の各々に格納された欠陥情報が「１」である。つまりは、欠陥があるブロックが存在するので、特定部１６は、第２列目内の欠陥が無いブロックのうち、上から数えて、読み出したインデックス番号「５」に対応する第１テーブル６２の行の数だけ下に位置するブロックを、読み出し対象データが格納されたブロックとして特定する。ここでは、特定部１６は、第１テーブル６２の第２列目において、第３行目に属する記憶領域Ｍ３２から数えて、５だけ下に位置する記憶領域Ｍ（第７行目の記憶領域Ｍ７２）に対応するブロックを、読み出し対象データが格納されたブロックとして特定する。以上のように、特定部１６は、ステップＳ６２で読み出したインデックス番号およびチャネル番号と、第１テーブル６２のうち、当該チャネル番号に対応する列における欠陥情報とに基づいて、読み出し対象データが格納されたブロックを特定する。
【００５３】
次に、読み出し部１８は、ステップＳ６３で特定されたブロック内のページのうち、ステップＳ６２で第２テーブル６４から読み出されたページ番号が示すページに格納されたデータを記憶部４０のバッファ領域に読み出す（ステップＳ６４）。次に、制御部１０は、バッファ領域に読み出したデータをホスト装置５０へ転送するようにＩ／Ｆ部２０を制御する（ステップＳ６５）。以上で、ページサイズ読み出し処理は終了する。
【００５４】
次に、制御部１０が実行するページ未満読み出し処理の手順について説明する。図１３は、ページ未満読み出し処理の一例を示すフローチャートである。まず制御部１０（特定１６）は、読み出し対象データに割り当てられる読み出し論理アドレスを特定する（ステップＳ７１）。次に、特定部１６は、当該読み出し論理アドレスに対応するインデックス番号、チャネル番号およびページ番号の各々を第２テーブル６４から読み出す（ステップＳ７２）。次に、特定部１６は、ステップＳ７２で読み出したインデックス番号およびチャネル番号と、第１テーブル６２とから、読み出し対象データが格納されたブロックを特定する（ステップＳ７３）。この内容は、図１２のステップＳ６３の内容と同様であるので、詳細な説明は省略する。
【００５５】
次に、読み出し部１８は、ステップＳ７３で特定されたブロック内のページのうち、ステップＳ７２で第２テーブル６４から読み出されたページ番号が示すページに格納されたデータを記憶部４０のバッファ領域に読み出す（ステップＳ７４）。次に、制御部１０は、バッファ領域に読み出したデータのうち、読み出し論理アドレスの下位３ビットで特定されるセクタに対応するデータを、ホスト装置５０へ転送するようにＩ／Ｆ部２０を制御する（ステップＳ７５）。以上で、ページ未満読み出し処理は終了する。
【００５６】
以上に説明したように、本実施形態では、第１テーブル６２の各記憶領域Ｍには、１ビットの情報が格納されるだけで済むので、結果として、論物変換テーブル６０のサイズを低減できるという有利な効果が得られる。
【００５７】
ここで、第１テーブル６２の各記憶領域Ｍに、当該記憶領域Ｍに対応するブロックの位置情報（物理アドレス）を格納する場合を想定すると、１チャネル当たり１６０００個のブロックを表現するのに必要なビット数は１４ビットであるので、この場合の第１テーブル６２の容量は、１４×１２（チャネル数）×１６０００（行数）÷８＝３３６Ｋバイトとなる。これに対して、本実施形態では、第１テーブル６２の各行において欠陥ブロックの有無を表現するのに必要なビット数は１２ビットであるので、第１テーブル６２の容量は、１２×１６０００（行数）÷８＝２４Ｋバイトとなる。したがって、本実施形態によれば、論物変換テーブル６０のサイズを大幅に低減できる。
【００５８】
以上、本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００５９】
例えば上述の実施形態では、論理ブロックの作成時に、作成部１２は、第１テーブル６２内の「０」の欠陥情報が格納された記憶領域Ｍを用いて、各チャネルのブロックを選択しているが、これに限らず、作成部１２は、第１テーブル６２内の「１」の欠陥情報が格納された記憶領域Ｍを用いて、各チャネルのブロックを選択することもできる。例えば論理ブロックの作成時に、作成部１２がインデックス番号「５」を選択した場合を例に挙げて説明すると以下のとおりである。
【００６０】
図３の例で、第１テーブル６２の第２列目に着目すると、作成部１２は、第１行目から、選択したインデックス番号「５」に対応する行（第５行目）までの各々に属する記憶領域Ｍ（Ｍ１２、Ｍ２２、Ｍ３２、Ｍ４２、Ｍ５２）のうち、欠陥情報「１」が格納された記憶領域Ｍの数をカウントする。欠陥情報「１」が格納された記憶領域Ｍが存在しない場合は、作成部１２は、第５行目に属する記憶領域Ｍ５２に対応するブロックを選択する。ここでは、図３に示すように、第１行目および第２行目の各々に属する記憶領域Ｍ（Ｍ１２、Ｍ２２）に欠陥情報「１」が格納されているので、このときのカウント値は「２」となる。
【００６１】
そして、作成部１２は、選択したインデックス番号「５」に対応する第５行目から、カウント値「２」だけ下に位置する第７行目までの各々に属する記憶領域Ｍ（Ｍ５２、Ｍ６２、Ｍ７２）のうち、欠陥情報「１」が格納された記憶領域Ｍの数をカウントする。欠陥情報「１」が格納された記憶領域Ｍが存在しない場合は、作成部１２は、第７行目に属する記憶領域Ｍ７２に対応するブロックを選択する。一方、欠陥情報「１」が格納された記憶領域Ｍが存在する場合は、作成部１２は、第７行目から、今回のカウント値だけ下にシフトした行までの各々に属する記憶領域Ｍのうち、欠陥情報「１」が格納された記憶領域Ｍの数をカウントする。図３の例では、第５行目から第７行目においては、欠陥情報「１」が格納された記憶領域Ｍが存在しないので、作成部１２は、第７行目に属する記憶領域Ｍ７２に対応するブロックを選択する。他の列についても同様である。
【００６２】
要するに、作成部１２は、選択したインデックス番号と、第１テーブル６２の欠陥情報とに基づいて、ブロックの組（論理ブロック）を作成するものであればよく、欠陥情報「１」が格納された記憶領域Ｍのカウント値を用いてブロックを選択することもできるし、欠陥情報「０」が格納された記憶領域Ｍのカウント値を用いてブロックを選択することもできる。また、カウント値は上から順番にカウントした値を用いてもよいし、下から順番にカウントした値を用いてもよく、その種類は任意に変更可能である。
【００６３】
なお、読み出し処理についても同様であり、特定部１６は、第２テーブル６４から読み出したインデックス番号およびチャネル番号と、第１テーブル６２のうち、当該チャネル番号に対応する列における欠陥情報とに基づいて、読み出しが要求されたデータが格納されたブロックを特定するものであればよい。
【００６４】
また、上述の実施形態では、半導体メモリ３０の数（チャネルの数）が１２個であるが、これに限らず、半導体メモリ３０の数は任意に変更可能である。また、ページのサイズ、ブロックのサイズ、および、半導体メモリ３０のサイズも任意に変更可能である。
【００６５】
また、上述のメモリシステム１００は、新たにブロックに欠陥が発生するたびに、第１テーブル６２を更新する更新部を備えることもできる。これにより、書き込み処理時において、欠陥のあるブロックにデータを書き込むことはない。また、例えばデータが書き込まれたブロックに後発的な欠陥が発生した場合は、論理ブロックを用いた誤り訂正を行うことで、データを回復させることができる。
【００６６】
また、上述の実施形態では、論物変換テーブル６０は、記憶部４０に記憶されているが、これに限らず、メモリシステム１００において、論物変換テーブル６０が記憶される場所は任意である。例えば論物変換テーブル６０の少なくとも一部が半導体メモリ３０に記憶されてもよい。例えば論物変換テーブル６０の全部が半導体メモリ３０に記憶されてもよいし、論物変換テーブル６０の一部が半導体メモリ３０に記憶され、論物変換テーブル６０のその他の部分が記憶部４０に記憶されてもよい。また、記憶部４０の種類も任意である。例えば記憶部４０は、ＳＲＡＭ（Static Random Access Memory）で構成されてもよいし、ＤＲＡＭ（Dynamic Random Access Memory）で構成されてもよい。
【符号の説明】
【００６７】
１０  制御部
１２  作成部
１４  書き込み部
１６  特定部
１８  読み出し部
２０  Ｉ／Ｆ部
３０  半導体メモリ
４０  記憶部
５０  ホスト装置
６０  論物変換テーブル
６２  第１テーブル
６４  第２テーブル
１００  メモリシステム
【図１】
0005319723.tif 000002
【図２】
0005319723.tif 000003
【図３】
0005319723.tif 000004
【図４】
0005319723.tif 000005
【図５】
0005319723.tif 000006
【図６】
0005319723.tif 000007
【図７】
0005319723.tif 000008
【図８】
0005319723.tif 000009
【図９】
0005319723.tif 000010
【図１０】
0005319723.tif 000011
【図１１】
0005319723.tif 000012
【図１２】
0005319723.tif 000013
【図１３】
0005319723.tif 000014