(57)【要約】【課題】不良メモリチップが発生した場合でも、並列駆動可能な組み合わせ数を最大限確保可能なメモリシステムを提供すること。【解決手段】物理バンク内の不良メモリチップが識別可能な不良メモリチップ情報に基づき、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを動的に設定する。【選択図】図１
2013069210.tif 000002
【特許請求の範囲】
【請求項１】
並列動作可能なチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各チャネル並列動作要素はバンクインタリーブ可能な複数の物理バンクを有し、各物理バンクは複数のメモリチップを有し、各メモリチップはデータ消去の単位である物理ブロックを複数個有する不揮発性半導体メモリと、
複数のチャネル並列動作要素から構成されるレーンに対応して１つ割り当てられ、物理バンク単位に個別接続され、１つの物理バンク内の複数のメモリチップに共通接続される複数のチップイネーブル信号によって前記物理バンクの選択を行うことによってレーン内の複数のチャネル並列動作要素に含まれる各物理バンク内のメモリチップを並列駆動する複数のメモリコントローラと、
各物理バンク内の不良メモリチップが識別可能な不良メモリチップ情報に基づき、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に設定するコントローラと、
を備え、前記複数のメモリコントローラは、コントローラが設定した論物バンク情報に基づいて前記チップイネーブル信号を駆動制御することを特徴とするメモリシステム。
【請求項２】
前記コントローラは、各物理バンク内の不良メモリチップが識別可能な不良メモリチップ情報及び各メモリチップ内の不良ブロックが識別可能な不良ブロック情報に基づき、不良メモリチップ及び不良ブロックを使用せずに各レーン内において並列アクセス可能なブロック数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に設定することを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記コントローラは、１レーンを構成する複数のチャネル並列動作要素から、不良メモリチップ数がより少ない物理バンク同士あるいは不良メモリチップ数がより多い物理バンク同士を順番に選択することによって前記論物バンク情報を形成することを特徴とする請求項１または２に記載のメモリシステム。
【請求項４】
前記コントローラは、１レーンを構成する複数のチャネル並列動作要素から、不良ブロック数がより少ないメモリチップ同士あるいは不良ブロック数がより多いメモリチップ同士を順番に選択することによって前記論物バンク情報を形成することを特徴とする請求項２に記載のメモリシステム。
【請求項５】
前記各メモリコントローラは、１レーンを構成する複数のチャネル並列動作要素に対して並列アクセスする複数のデータ単位に誤り訂正符号が付加されていることを特徴とする請求項１乃至４のいずれか一つに記載のメモリシステム。
【請求項６】
前記コントローラは、不良ブロックが所定の閾値以上発生したメモリチップを不良と判定し、不良と判定したメモリチップに関する情報を前記不良メモリチップ情報に更新追加することを特徴とする請求項１乃至５のいずれか一つに記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性半導体メモリを備えるメモリシステムに関する。
【背景技術】
【０００２】
近年のフラッシュメモリのパッケージは複数のメモリチップをスタックして構成されることが多くなっている。ＳＳＤ（Solid  State  Drive）に代表されるように、フラッシュメモリを使用して大容量のストレージデバイスを構成する際には、このようなパッケージを更に複数使用することにより構成することが多い。
【０００３】
例えば、８スタックされたパッケージを８個使用してＳＳＤを構成した場合、６４チップで１システムを構成することとなり、単一チップの不良率を０．１％とした場合でも、システムとしての不良率約６％程度となり、単一チップの不良率に対してシステムとしての不良率は大きなものなる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２６６１２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、不良チップあるいは不良ブロックが発生した場合でも、並列駆動可能な組み合わせ数を最大限確保可能なメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの実施形態によれば、不揮発性半導体メモリは、並列動作可能なチャネル並列動作要素を複数個有し、各チャネル並列動作要素はバンクインタリーブ可能な複数の物理バンクを有し、各物理バンクは複数のメモリチップを有し、各メモリチップはデータ消去の単位である物理ブロックを複数個有する。メモリコントローラは、複数個備えられ、複数のチャネル並列動作要素から構成されるレーンに対応して１つ割り当てられる。メモリコントローラは、物理バンク単位に個別接続され、１つの物理バンク内の複数のメモリチップに共通接続される複数のチップイネーブル信号によって物理バンクの選択を行うことによってレーン内の複数のチャネル並列動作要素に含まれる各物理バンク内のメモリチップを並列駆動する。コントローラは、各物理バンク内の不良メモリチップが識別可能な不良メモリチップ情報に基づき、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に設定する。各メモリコントローラは、コントローラが設定した論物バンク情報に基づいてチップイネーブル信号を駆動制御する。
【図面の簡単な説明】
【０００７】
【図１】図１は、ＳＳＤの構成例を示すブロック図である。
【図２】図２は、１レーン内のＮＡＮＤフラッシュの構成例を示すブロック図である。
【図３】図３は、１チャネルのＮＡＮＤフラッシュの内部構成例を示す図である。
【図４】図４は、ＮＡＮＤコントローラの内部構成例を示すブロック図である。
【図５】図５は、ＣＨ構成でのＥＣＣ符号のデータ配置例とレーン構成でのＥＣＣ符号のデータ配置例を示す図である。
【図６】図６は、各チャネルのＮＡＮＤフラッシュに対するアクセス情報の構成例を示す図である。
【図７】図７は、１レーン内でのＮＡＮＤフラッシュに対するアクセス動作手順例を示すフローチャートである。
【図８】図８は、同じバンク番号を持つバンクからチャネル並列動作を行わせるチップを選択する場合にチップ故障がある場合のチップ選択例を示す図である。
【図９】図９は、チップ故障がある場合に第１の実施形態の手法を用いた場合のチップ選択例を示す図である。
【図１０】図１０は、同じバンク番号を持つバンクからチャネル並列動作を行わせるチップを選択する場合にチップ故障がある場合のチップ選択例を示す図である。
【図１１】図１１は、図１０のチップ選択を行う場合のアクセス情報などを示す図である。
【図１２】図１２は、チップ故障がある場合に第１の実施形態の手法を用いた場合のチップ選択例を示す図である。
【図１３】図１３は、図１２のチップ選択を行う場合のアクセス情報などを示す図である。
【図１４】図１４は、チップ故障及びブロック故障がある場合に第２の実施形態の手法を用いた場合のチップ選択例を示す図である。
【図１５】図１５は、図１４のチップ選択を行う場合のアクセス情報などを示す図である。
【図１６】図１６は、同じバンク番号を持つバンクからチャネル並列動作を行わせるブロックを選択する場合にブロック故障がある場合のチャネル並列可能なブロック容量を示す図である。
【図１７】図１７は、ブロック故障がある場合に第２の実施形態の手法を用いた場合のチャネル並列可能なブロック容量を示す図である。
【発明を実施するための形態】
【０００８】
ＳＳＤ（Solid  State  Drive）では、複数のチャネルによって複数のフラッシュメモリを並列接続し、複数のフラッシュメモリを並列駆動することで、高速アクセスを可能にしている。また、ＳＳＤでは、各チャネルのフラッシュメモリをバンクインタリーブ可能な複数のバンクで構成し、チャネル並列動作に加えバンクインタリーブを行うことで更なる高速アクセスを可能にしている。
【０００９】
各チャネルのフラッシュメモリにおいて、各バンクは複数のメモリチップで構成され、各メモリチップはデータ消去の単位である物理ブロックを複数配列して構成される。このようなＳＳＤにおいては、並列駆動される各チャネルの物理ブロックを組み合わせて論理ブロックと呼ばれる仮想的なブロックを構成し、論理ブロック単位のアクセスを可能としている。
【００１０】
このように複数のチャネルから１つの物理ブロックを夫々選択することで論理ブロックを構成する場合、同一のバンク番号を持つ物理ブロックによって論理ブロックを構成するという制約を設けることで、論理ブロックの管理を容易にするとともに論理ブロックを構成する物理ブロックの個数の変化への対応を容易化させるという手法が採用される場合がある。
【００１１】
一方、ＳＳＤでは、チャネル毎に１つのメモリコントローラを配し、１つのメモリコントローラで１つのチャネルのフラッシュメモリを駆動制御するのが一般的である。メモリコントローラが行う機能としては、接続されるチャネルのフラッシュメモリの駆動処理、誤り訂正処理（ＥＣＣ処理）、バンクインタリーブ処理などがあり、これらの処理を上位コントローラの制御下で実行している。
【００１２】
しかし、各チャネルに１つのメモリコントローラを配する場合、チャネル数の増加や誤り訂正処理の複雑化などに伴いメモリコントローラのゲート規模が増大する。そこで、複数のチャネルのフラシュメモリに１つのメモリコントローラを配し、１つのメモリコントローラで複数のチャネルのフラッシュメモリを並列駆動することが考えられている。１つのメモリコントローラに接続される複数チャネルを本明細書ではレーン（Lane）と呼ぶ。このレーンを利用した構成では、例えば、誤り訂正処理を複数のチャネルで共用化することができ、ゲート規模を縮小することが可能である。
【００１３】
しかしながら、同一のバンク番号を持つ物理ブロックによって論理ブロックを構成するという制約を各レーンに適用した場合、不良チップあるいは不良ブロックが存在する場合、各レーンにおいて使用可能な物理ブロックを有効利用できず、使用可能な物理ブロックの組み合わせ容量が少なくなるという問題がある（図８参照）。
【００１４】
そこで、本実施形態では、レーン内部では、同一のバンク番号を持つ物理ブロックによって論理ブロックを構成するという制約を無くし、不良チップあるいは不良ブロックが存在する場合、使用可能な物理ブロックを有効利用し、使用可能な物理ブロックの組み合わせ容量を最大限確保できるようにする（図９参照）。すなわち、本実施形態では、レーン内において、複数の物理バンクから構成される仮想的な論理バンクという概念を導入し、不良メモリチップ情報に基づき、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを動的に設定可能とする。なお、レーン間で、論理バンクをどのように組み合わせるかについては、本実施形態では言及しない。
【００１５】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【００１６】
（第１の実施形態）
図１は、メモリシステムとしてのＳＳＤ１００の構成例を示すブロック図である。ＳＳＤ１００は、コントローラとしてのドライブ制御回路４と、不揮発性半導体メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤフラッシュと略す）１０と、ランダムアクセス可能な半導体メモリとしてのＲＡＭ２０と、ＡＴＡインタフェース（ＡＴＡ  Ｉ／Ｆ）２などのメモリ接続インタフェースなどを備えている。ＳＳＤ１００は、ＡＴＡ  Ｉ／Ｆ２を介してパーソナルコンピュータあるいはＣＰＵコアなどのホスト装置（以下、ホストと略す）１と接続され、ホスト１の外部メモリとして機能する。
【００１７】
ＮＡＮＤフラッシュ１０は、ホスト１によって指定されたユーザデータを記憶したり、ＲＡＭ２０で管理される管理情報をバックアップ用に記憶したりする。ＮＡＮＤフラッシュ１０は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。ＮＡＮＤフラッシュ１０は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、ＮＡＮＤフラッシュ１０では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。図１では、ＮＡＮＤフラッシュ１０は、４チャネル（４ｃｈ：ＣＨ０〜ＣＨ３）を介して、ドライブ制御回路４内部のＮＡＮＤコントローラ１１０に並列接続されており、４つのチャネル並列動作要素１０ａ〜１０ｄを並列動作させることが可能である。チャネル数は４つに限らず、任意のチャネル数を採用可能である。
【００１８】
ＲＡＭ２０としては、例えば揮発性半導体メモリを採用する。ＲＡＭ２０として、ＤＲＡＭ（Dynamic Random Access Memory）、ＳＲＡＭ（Static Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＰＲＡＭ（Phase Change Random Access Memory）などを採用することができる。ＲＡＭ２０は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。具体的には、データ転送用の記憶部（データ転送用キャッシュ）としては、ホスト１から書込要求があったデータをＮＡＮＤフラッシュ１０に書込む前に一時的に保存したり、ホスト１から読出要求があったデータをＮＡＮＤフラッシュ１０から読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、ＮＡＮＤフラッシュ１０に記憶されるデータの格納位置などを管理するための管理情報（ＮＡＮＤフラッシュ１０に記憶されている各種管理テーブルが起動時などに展開されたマスターテーブル、管理テーブルの変更差分情報であるログなど）を格納するために使用される。
【００１９】
ドライブ制御回路４は、ホスト１とＮＡＮＤフラッシュ１０との間でＲＡＭ２０を介してデータ転送制御を行うとともに、ＳＳＤ１００内の各構成要素を制御する。
【００２０】
ドライブ制御回路４は、データアクセス用バス１０１、回路制御用バス１０２を備えている。回路制御用バス１０２には、ドライブ制御回路４全体を制御するプロセッサ１０４が接続されている。回路制御用バス１０２には、ＮＡＮＤフラッシュ１０に記憶された各管理プログラム（ＦＷ：ファームウエア）をブートするブート用プログラムが格納されたブートＲＯＭ１０５がＲＯＭコントローラ１０６を介して接続されている。
【００２１】
ＡＴＡインタフェースコントローラ（ＡＴＡコントローラ）１１１、ＮＡＮＤコントローラ１１０、及びＲＡＭコントローラ１１４は、データアクセス用バス１０１と回路制御用バス１０２との両方に接続されている。ＡＴＡコントローラ１１１は、ＡＴＡインタフェース２を介してホスト１との間でデータを送受信する。データアクセス用バス１０１には、データ作業領域及びファームウェア展開領域として使用されるＳＲＡＭ１１５がＳＲＡＭコントローラ１１６を介して接続されている。ＮＡＮＤフラッシュ１０に記憶されているファームウェアは起動時、ブートＲＯＭ１０５に記憶されたブート用プログラムによってＳＲＡＭ１１５に転送される。プロセッサ１０４は、ＳＲＡＭ１１５に転送されたファームウェアを実行することで、ＳＳＤ１００内での最上位のコントローラとして動作し、ドライブ制御回路４内の構成要素を制御する。
【００２２】
ＲＡＭコントローラ１１４は、プロセッサ１０４とＲＡＭ２０とのインタフェース処理、ＡＴＡ  Ｉ／Ｆ２−ＲＡＭ２０間のデータ転送制御、ＮＡＮＤフラッシュ１０−ＲＡＭ２０間のデータ転送制御などを実行する。ＮＡＮＤコントローラ１１０は、プロセッサ１０４とＮＡＮＤフラッシュ１０とのインタフェース処理、ＮＡＮＤフラッシュ１０−ＲＡＭ２０間のデータ転送制御、誤り訂正符号のエンコード／デコード処理などを実行する。
【００２３】
図２は、ＮＡＮＤフラッシュ１０の内部構成例を示すものである。図２では、チャネル０（ＣＨ０）のチャネル並列動作要素１０ａ、チャネル１（ＣＨ１）のチャネル並列動作要素１０ｂを示している。図示を省略したチャネル２（ＣＨ２）のチャネル並列動作要素１０ｃ、チャネル３（ＣＨ３）のチャネル並列動作要素１０ｄも同様の構成を有している。各チャネル並列動作要素１０ａ〜１０ｄは、バンクインターリーブが可能な複数の物理バンク（図２では４バンク、Ｂａｎｋ０〜Ｂａｎｋ３）によって構成されており、各々の物理バンクは、複数のメモリチップ（図２では、４メモリチップ、Ｃｈｉｐ０〜Ｃｈｉｐ３）によって構成されている。なお、バンク番号を示すＢａｎｋ０〜３は、ＮＡＮＤフラッシュ１０上での物理的な位置を示す物理バンク番号を示している。バンクインタリーブとは、あるバンクのデータにアクセスしている遅延時間の最中に、すなわちあるバンクのレディビジー信号（ＲｙＢｙ）がビジー中に、次のバンクへアクセス要求を発行して時間を有効利用する手法である。
【００２４】
図３は、チャネル０（ＣＨ０）のチャネル並列動作要素１０ａ内のある１つのバンク（この場合ｂａｎｋ０）の内部構成例を示すものである。図３に示すように、１つのバンク内の各メモリチップ（ｃｈｉｐ０〜ｃｈｉｐ３）は、例えば、それぞれ複数の物理ブロックで構成されている（図４では、便宜上、４個の物理ブロックＢｌｋ０〜Ｂｌｋ３を示した）。
【００２５】
図４は、ＮＡＮＤコントローラ１１０の内部構成例を示すものである。ＮＡＮＤコントローラ（ＮＡＮＤＣ）１１０は、レーン０のＮＡＮＤフラッシュ１０を駆動制御するレーン０用ＮＡＮＤコントローラ（ＮＡＮＤＣ−ＬＮ０）１１０ａと、レーン１のＮＡＮＤフラッシュ１０を駆動制御するレーン１用ＮＡＮＤコントローラ（ＮＡＮＤＣ−ＬＮ０）１１０ｂとを有する。１つのレーン用ＮＡＮＤコントローラが駆動制御を行う複数のチャネルのことをレーンと呼称する。この実施形態では、４チャネルで構成されるＮＡＮＤフラッシュ１０を、レーン０（ＣＨ０及びＣＨ１）とレーン１（ＣＨ２及びＣＨ３）に分割し、レーン０のＮＡＮＤフラッシュ１０（チャネル並列動作要素１０ａ及び１０ｂ）を一方のＮＡＮＤＣ−ＬＮ０  １１０ａによって駆動制御し、レーン１のＮＡＮＤフラッシュ１０（チャネル並列動作要素１０ｃ及び１０ｄ）を他方のＮＡＮＤＣ−ＬＮ１  １１０ｂによって駆動制御することとする。すなわち、この実施の形態では、１レーンは２チャネルで構成される。
【００２６】
レーン０用ＮＡＮＤコントローラ１１０ａは、ＲＡＭ２０との間でＤＭＡ転送制御を行うＤＭＡコントローラ（ＤＭＡＣ）３０ａと、誤り訂正回路（ＥＣＣ回路）３１ａと、ＮＡＮＤＩ／Ｆ３２ａと、レーン０コントローラ３３ａとを備える。レーン０コントローラ３３ａは、ＣＨ０アクセス情報設定レジスタ３４ａと、ＣＨ１アクセス情報設定レジスタ３５ａと、動作許可レジスタ３６ａと、Ｉ／Ｆコントローラ３７ａと、コントローラ３８ａを有する。レーン１用ＮＡＮＤコントローラ１１０ｂも同様の構成を有し、ＤＭＡＣ３０ｂと、ＥＣＣ回路３１ｂと、ＮＡＮＤＩ／Ｆ３２ｂと、レーン１コントローラ３３ｂとを備える。レーン１コントローラ３３ｂも同様の構成を有し、ＣＨ２アクセス情報設定レジスタ３４ｂと、ＣＨ３アクセス情報設定レジスタ３５ｂと、動作許可レジスタ３６ｂと、Ｉ／Ｆコントローラ３７ｂと、コントローラ３８ｂを有する。
【００２７】
レーン０用ＮＡＮＤコントローラ１１０ａのＮＡＮＤ／ＩＦ３２ａには、２チャネル（ＣＨ０、ＣＨ１）分の信号線が接続されている。すなわち、ＮＡＮＤ／ＩＦ３２ａには、ＣＨ０のチャネル並列動作要素１０ａに接続されるコントロールＩ／Ｏ信号、チップイネーブル信号（ＣＥ００−０３）及びレディビジー信号（ＲｙＢｙ００−０３）と、ＣＨ１のチャネル並列動作要素１０ｂに接続されるコントロールＩ／Ｏ信号、チップイネーブル信号（ＣＥ１０−１３）及びレディビジー信号（ＲｙＢｙ１０−１３）が接続されている。コントロールＩ／Ｏ信号は、ＣＬＥ（コマンドラッチイネーブル）、ＡＬＥ（アドレスラッチイネーブル）、ＷＥ（ライトイネーブル）、ＲＥ（リードイネーブル）、ＤＱＳ（データストローブ信号）、Ｉ／Ｏ０〜Ｉ／Ｏ７（入出力端子）などを含む。同様に、レーン１用ＮＡＮＤコントローラ１１０ｂのＮＡＮＤ／ＩＦ３２ｂには、２チャネル（ＣＨ２、ＣＨ３）分のコントロールＩ／Ｏ信号、チップイネーブル信号（ＣＥ２０−２３、ＣＥ３０−３３）及びレディビジー信号（ＲｙＢｙ２０−２３、ＲｙＢｙ３０−３３）が接続されている。
【００２８】
図２では、レーン０コントローラ３３ａのＮＡＮＤＩ／Ｆ３２ａと、ＣＨ０のチャネル並列動作要素１０ａ及びＣＨ１のチャネル並列動作要素１０ｂとの信号線の接続をより詳細に示している。図２に示すように、各チャネルにおいて、コントロールＩ／Ｏ信号は、複数のバンク（Ｂａｎｋ０〜Ｂａｎｋ３）間で共有されているが、チップイネーブル信号ＣＥ０−３とレディビジー信号ＲｙＢｙ０−３は各バンクに個別に接続されている。すなわち、各チャネルにおいて、チップイネーブル信号ＣＥ０（ＣＥ００、ＣＥ１０、ＣＥ２０、ＣＥ３０）はバンク番号０のバンク（Ｂａｎｋ０）の各メモリチップに共通接続され、チップイネーブル信号ＣＥ１（ＣＥ０１、ＣＥ１１、ＣＥ２１、ＣＥ３１）はバンク番号１のバンク（Ｂａｎｋ１）の各メモリチップに共通接続され、チップイネーブル信号ＣＥ２（ＣＥ０２、ＣＥ１２、ＣＥ２２、ＣＥ３２）はバンク番号２のバンク（Ｂａｎｋ２）の各メモリチップに共通接続され、チップイネーブル信号ＣＥ３（ＣＥ０３、ＣＥ１３、ＣＥ２３、ＣＥ３３）はバンク番号３のバンク（Ｂａｎｋ３）の各メモリチップに共通接続されており、複数のバンク（Ｂａｎｋ０〜Ｂａｎｋ３）を複数のチップイネーブル信号（ＣＥ０−３）でバンク毎に個別に制御する。このように、各チャネルにおいてバンク番号ｎの物理バンクを選択する際には、チップイネーブル信号ＣＥｎをアサートとするような手法をとっている。
【００２９】
同様に、各チャネルにおいて、ＮＡＮＤフラッシュ１０の各バンクからは、自身がビジー状態であるかレディ状態であるかを示すレディビジー信号ＲｙＢｙ０−３（ＲｙＢｙ００〜ＲｙＢｙ３３）がＮＡＮＤＩ／Ｆに入力されている。各チャネルの各バンクに含まれる複数のメモリチップのＲｙＢｙ信号線は共通接続されている。
【００３０】
レーン０用ＮＡＮＤコントローラ１１０ａには、１つのＥＣＣ回路３１ａが搭載され、１つのＥＣＣ回路３１ａで２チャネル分のＥＣＣ処理を実行する。図５に示すように、５１２Ｂのセクタデータ毎にＥＣＣ符号を付加するものとする。図５（ａ）は、１チャネルに１つのＥＣＣ回路を設ける場合のＥＣＣ処理を示すもので、この場合は、ＣＨ０のＮＡＮＤフラッシュ１０に対してライトする５１２ＢのセクタデータにＥＣＣ符号が付加され、またＣＨ１のＮＡＮＤフラッシュ１０に対してライトする５１２ＢのセクタデータにＥＣＣ符号が付加されている。図５（ｂ）は、２チャネルに１つのＥＣＣ回路を設ける場合のＥＣＣ処理を示すもので、この場合は、ＣＨ０のＮＡＮＤフラッシュ１０に対してライトする２５６Ｂのデータと、ＣＨ１のＮＡＮＤフラッシュ１０に対してライトする２５６Ｂのデータとで１セクタデータを構成し、ＣＨ０及びＣＨ１に分散された５１２Ｂの１セクタデータに対しＥＣＣ符号が付加されている。ＥＣＣ回路３１ａでは、図５（ｂ）に示すようなＥＣＣ処理を実行する。
【００３１】
セクタデータのリードを考えた場合、図５（ａ）の場合は、１チャネルから５１２Ｂのセクタデータをリードする必要があるが、図５（ｂ）の場合は、並列動作可能な２チャネルから２５６Ｂずつデータをリードすればよく、リード所要時間が半分になるという利点がある。また、２チャネルに１つのＥＣＣ回路を設ければよいので、ＮＡＮＤコントローラ１１０のゲート規模が少なくなるという利点もある。
【００３２】
つぎに、レーン０コントローラ３３ａについて説明する。レーン１コントローラ３３ｂも同様の構成を有している。レーン０コントローラ３３ａのコントローラ３８ａには、回路制御用バス１０２を介して上位のプロセッサ１０４からＮＡＮＤフラッシュ１０のレーン０を駆動制御するための制御情報が入力される。コントローラ３８ａは、プロセッサ１０４から入力される制御情報に基づいてレーン０コントローラ３３ａの内部構成回路を制御する。プロセッサ１０４から入力される制御情報には、レーン０（チャネル０及びチャネル１）のＮＡＮＤフラッシュ１０にアクセスするためのアクセス情報が含まれる。
【００３３】
ＣＨ０アクセス情報設定レジスタ３４ａには、プロセッサ１０４から入力されるＣＨ０用のアクセス情報がコントローラ３８ａによって設定される。ＣＨ１アクセス情報設定レジスタ３５ａには、プロセッサ１０４から入力されるＣＨ１用のアクセス情報がコントローラ３８ａによって設定される。ＣＨ０アクセス情報設定レジスタ３４ａ及びＣＨ１アクセス情報設定レジスタ３５ａはキュー構造を有しており、複数のアクセス情報を蓄積することが可能である。図６は、プロセッサ１０４から入力されるアクセス情報の一例を示すものである。チャネル０のアクセス情報には、バンク番号、チップ番号、ブロック番号及び命令（ライト、リード、消去など）が含まれる。同様に、チャネル１のアクセス情報には、バンク番号、チップ番号、ブロック番号及び命令（ライト、リード、消去など）が含まれる。
【００３４】
ＣＨ０アクセス情報設定レジスタ３４ａ及びＣＨ１アクセス情報設定レジスタ３５ａに設定された各チャネルのアクセス情報は、コントローラ３８ａによって動作許可レジスタ３６ａにセットされる。コントローラ３８ａは、ＲｙＢｙ信号（ＲｙＢｙ００−０３，ＲｙＢｙ１０−１３）などに基づいて、チャネル０及びチャネル１の並列動作が可能になったときに、各チャネルのアクセス情報を動作許可レジスタ３６ａにセットする。Ｉ／Ｆコントローラ３７ａは、コントローラ３８ａの制御の基で、動作許可レジスタ３６ａにセットされたチャネル０及びチャネル１用のアクセス情報に基づいてＮＡＮＤＩ／Ｆ３２ａを駆動制御することで、アクセス情報に対応するコントロールＩ／Ｏ信号、チップイネーブル信号（ＣＥ０−３）を各チャネル０，１に出力させる。
【００３５】
つぎに、図７に従ってレーン０コントローラ３３ａの動作手順を説明する。まず、コントローラ３８ａは、ＣＨ０アクセス情報設定レジスタ３４ａ及びＣＨ１アクセス情報設定レジスタ３５ａに、プロセッサ１０４から入力されるチャネル０用のアクセス情報及びチャネル１用のアクセス情報を設定する（ステップＳ１００、Ｓ１１０）。コントローラ３８ａは、プロセッサ１０４からの制御情報及びＲｙＢｙ信号（ＲｙＢｙ０−３）などに基づいて、チャネル０及びチャネル１の並列動作を許可してもよいか否かを判定し（ステップＳ１２０）、並列動作を許可してもよいと判定すると、ＣＨ０アクセス情報設定レジスタ３４ａ及びＣＨ１アクセス情報設定レジスタ３５ａに設定された各チャネルのアクセス情報を動作許可レジスタ３６ａにセットする。
【００３６】
Ｉ／Ｆコントローラ３７ａは、コントローラ３８ａの制御の基で、動作許可レジスタ３６ａにセットされたチャネル０及びチャネル１用のアクセス情報に基づいてＮＡＮＤＩ／Ｆ３２ａを駆動制御することで、アクセス情報に対応するコントロールＩ／Ｏ信号、チップイネーブル信号（ＣＥ０−３）を各チャネル０，１に出力させる。これにより、アクセス情報に対応するチャネル０、１のＮＡＮＤフラッシュ１０の各ブロックのデータに対するアクセスが行われる（ステップＳ１３０）。コントローラ３８ａは、このアクセスが終了したか否かをＲｙＢｙ信号などに基づいて判定し（ステップＳ１４０）、アクセスが終了した場合は、ＣＨ０アクセス情報設定レジスタ３４ａ及びＣＨ１アクセス情報設定レジスタ３５ａに未処理命令が残っているか否かを判定し（ステップＳ１５０）、未処理命令が残っている場合は、上記の処理を繰り返す。未処理命令がなくなると、処理を終了する。
【００３７】
前述したように、プロセッサ１０４は、ＣＨ０アクセス情報設定レジスタ３４ａ及びＣＨ１アクセス情報設定レジスタ３５ａに設定されるアクセス情報をＮＡＮＤコントローラ１１０に出力する動作を行う。プロセッサ１０４は、不良チップ情報に基づいて、不良チップが発生している場合でも、各レーン内において、できるだけ多くの良品チップを使用したチャネル並列及びバンクインタリーブを行うことができるようなチャネル間のバンクの組み合わせ（バンク番号の組み合わせ）を含むアクセス情報をＮＡＮＤコントローラ１１０に出力する。プロセッサ１０４は、物理バンク内の不良チップが識別可能な不良チップ情報に基づき、不良チップを使用せずに各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクＢａｎｋ０〜３の組み合わせを示す論物バンク情報を動的に設定する。設定された論物バンク情報に基づいて図６に示したアクセス情報が形成される。論理バンクとは、後で説明するが、複数の物理バンクの組み合わせによって形成される仮想的なバンクのことをいう。
【００３８】
不良チップがどのメモリチップで発生しているかを示す不良チップ情報が、製品出荷時に管理情報としてＮＡＮＤフラッシュ１０に登録されている。また、製品出荷後に後発的に発生した不良チップ（例えば、不良ブロックが所定の閾値以上発生したチップ）もプロセッサ１０４によって検出され、後発的に発生した不良チップ情報も管理情報として更新追加される。プロセッサ１０４は、このような不良チップ情報に基づき、並列アクセス可能な組み合わせ数を最大限確保可能な物理バンクＢａｎｋ０〜３の組み合わせを動的に設定する。その詳細については後述する。
【００３９】
つぎに、図８及び図９を用いてレーン内におけるチャネル間でのバンクの組み合わせについて説明する。図８では、同じバンク番号を持つチップからチャネル並列動作を行わせるチップを選択するという規約を有する場合を示している。一方、図９では、チャネル並列動作を行わせるチップの組み合わせを、同じバンク番号をもつチップとは規定せず、チャネル並列に使用されるチップ数を出来るだけ多く確保可能なバンク番号の組み合わせを選択している。図８、図９において、上方に存在する「＃」が付されたバンク番号であるＢａｎｋ＃０〜Ｂａｎｋ＃３は、前述した仮想的な論理バンクの番号を示している。
【００４０】
図８及び図９では、白抜きが良品チップを示し、ハッチング付きが不良チップを示している。図８及び図９で、不良チップの発生状況は同じである。図８及び図９では、チャネル０のＮＡＮＤフラッシュ１０においては、バンク番号０の４チップから３つの不良チップが発生し、バンク番号１の４チップから２つの不良チップが発生し、バンク番号２の４チップから１つの不良チップが発生し、バンク番号３の４チップからは不良チップが発生していない。チャネル１のＮＡＮＤフラッシュ１０においては、バンク番号０の４チップからは不良チップが発生しておらず、バンク番号１の４チップから１つの不良チップが発生し、バンク番号２の４チップから２つの不良チップが発生し、バンク番号３の４チップからは３つの不良チップが発生している。
【００４１】
図８の場合は、チャネル間で同じバンク番号を持つチップを選択するので、論理バンク番号（Ｂａｎｋ＃０〜＃３）と物理バンク番号（Ｂａｎｋ０〜３）は一致している。すなわち、チャネル０のチップイネーブル信号ＣＥ００をチャネル０のバンク番号０の４チップに接続し、チャネル１のチップイネーブル信号ＣＥ１０をチャネル１のバンク番号０の４チップに接続している。同様に、チャネル０のチップイネーブル信号ＣＥ０１をチャネル０のバンク番号１の４チップに接続し、チャネル１のチップイネーブル信号ＣＥ１１をチャネル１のバンク番号１の４チップに接続し、…、チャネル０のチップイネーブル信号ＣＥ０３をチャネル０のバンク番号３の４チップに接続し、チャネル１のチップイネーブル信号ＣＥ１３をチャネル１のバンク番号３の４チップに接続している。
【００４２】
図８の場合は、Ｂａｎｋ＃０に関しては、ＣＨ０のＢａｎｋ０の良品チップ数が１で、ＣＨ１のＢａｎｋ０の良品チップ数が４であるので、１スタック（１チップずつ）しかチャネル並列動作を行わすことができない。また、Ｂａｎｋ＃１に関しては、チャネル並列可能数は２スタックであり、Ｂａｎｋ＃２に関しては、チャネル並列可能数は２スタックであり、Ｂａｎｋ＃３に関しては、チャネル並列可能数は１スタックである。したがって、図８の場合の、チャネル並列可能数の合計は、６スタックである。
【００４３】
一方、図９では、前述したように、チャネル並列動作を行わせるチップの組み合わせを、同じバンク番号をもつチップとは規定せず、チャネル並列に使用されるチップ数を出来るだけ多く確保可能なバンク番号の組み合わせを選択している。したがって、論理バンク番号（Ｂａｎｋ＃０〜＃３）と物理バンク番号（Ｂａｎｋ０〜３）は一致していない場合もある。すなわち、チャネル０において、良品チップの個数はバンク番号３、バンク番号２，バンク番号１、バンク番号０の順に少なくなり、チャネル１において、良品チップの個数はバンク番号０、バンク番号１，バンク番号２、バンク番号３の順に少なくなるので、良品チップの個数の多いものから少ないものへとなるようにチャネル０，１のバンクを選択している。すなわち、Ｂａｎｋ＃０をＣＨ０のＢａｎｋ３とＣＨ１のＢａｎｋ０との組み合わせとし、Ｂａｎｋ＃１をＣＨ０のＢａｎｋ２とＣＨ１のＢａｎｋ１との組み合わせとし、Ｂａｎｋ＃２をＣＨ０のＢａｎｋ１とＣＨ１のＢａｎｋ２との組み合わせとし、Ｂａｎｋ＃３をＣＨ０のＢａｎｋ０とＣＨ１のＢａｎｋ３との組み合わせとしている。この結果、Ｂａｎｋ＃０のチャネル並列可能数は４スタックであり、Ｂａｎｋ＃１のチャネル並列可能数は３スタックであり、Ｂａｎｋ＃２のチャネル並列可能数は２スタックであり、Ｂａｎｋ＃３のチャネル並列可能数は１スタックであり、図９の場合のチャネル並列可能数は１０スタックとなり、図８に比べ４スタック増加する。
【００４４】
図１０は、レーンをＣＨ０及びＣＨ１の２チャネルで構成し、１チャネルを２バンクで構成し、１バンクを４チップで構成し、１チップを４ブロックで構成した場合に、各ブロックに書き込むデータ例を示すものである。同じデータ名（ａ０，ｂ０など）を有する「ｘ」、「ｙ」の組（例えば、ａ０−ｘとａ０−ｙ）で並列動作を行うとする。図１１は、図１０に示すデータを書き込む場合のチャネル並列動作及びバンクインタリーブ動作を示している。このような構成において、図１０に示すように、チャネル０のバンク０のチップ２と、チャネル１のバンク１のチップ２と、チャネル１のバンク１のチップ３に、チップ不良が発生したとする。
【００４５】
図１０及び図１１では、図８と同様、ＣＨ０及びＣＨ１において、同一のバンク番号を選択して、チャネル並列動作を行わせた場合を示している。同一のバンク番号を選択するという制約を設けた場合、チップ不良が発生したチップと同一バンク番号を持つ他方チャネルのチップは不使用となるので、図１１に示すように、チャネル並列書き込みの合計ブロック数は２０ブロックとなる。
【００４６】
図１２は、同一のバンク番号を選択して、チャネル並列動作を行わせるという制約をなくし、不使用チップをできるだけ少なくするという方針に基づく場合の各ブロックに書き込むデータ例を示すものである。図１３は、図１２に示すデータを書き込む場合のチャネル並列動作及びバンクインタリーブ動作を示している。図１２、図１３では、同一のバンク番号、同一のチップ番号を選択して、チャネル並列動作を行わせる組み合わせを選択した後、不良チップの影響で余っていた良品チップが組になるようにバンク番号、チップ番号を選択している。したがって、この例では、図１３に示すように、書き込みブロック数が２１個目になる書き込み動作から２４個目になる書き込み動作を追加することができる。２１個目〜２４個目の書き込み動作では、バンク番号が異なるチップの組み合わせを行っている。すなわち、チャネル０のバンク１のチップ２と、チャネル１のバンク０のチップ２とでチャネル並列及びバンクインタリーブを行わせており、チャネル並列書き込みの合計ブロック数は２４ブロックに増加している。
【００４７】
図１１、図１３に示したＢａｎｋ番号、Ｃｈｉｐ番号、Ｂｌｏｃｋ番号は、プロセッサ１０４がＮＡＮＤコントローラ１１０の例えばレーン０コントローラ３３ａに対し出力するアクセス情報の内容の一部を示している。すなわち、図１１、図１３に示したＢａｎｋ番号、Ｃｈｉｐ番号、Ｂｌｏｃｋ番号は、図６に示したアクセス情報の内容の具体例を示している。
【００４８】
例えば、図１３の２２個目の書き込み動作を例にとって、レーン０用ＮＡＮＤコントローラ１１０ａの動作を説明する。
【００４９】
（２２個目の書き込み動作）
ＣＨ０アクセス情報設定レジスタ３４ａには、Ｂａｎｋ番号＝１，Ｃｈｉｐ番号＝２，Ｂｌｏｃｋ番号＝１がセットされ、ＣＨ１アクセス情報設定レジスタ３５ａには、Ｂａｎｋ番号＝０，Ｃｈｉｐ番号＝２，Ｂｌｏｃｋ番号＝１がセットされ、その後、これらのセットデータが動作許可レジスタ３６ａにセットされる。Ｉ／Ｆコントローラ３７ａは、動作許可レジスタ３６ａのセット内容に基づき、ＮＡＮＤＩ／Ｆ３２ａを制御する。これにより、ＣＨ０のＢａｎｋ番号＝１に対応するチップイネーブル信号ＣＥ０１がアサートされ、ＣＨ１のＢａｎｋ番号＝０に対応するチップイネーブル信号ＣＥ１０がアサートされ、異なるバンク番号を持つブロックのチャネル並列駆動が行われる。
【００５０】
つぎに、プロセッサ１０４で行われるアクセス情報の設定について説明する。まず、プロセッサ１０４が管理する管理情報には、図１２に示したようなチップ不良箇所を特定可能な不良チップテーブルが含まれている。このような不良チップテーブルには、不良チップを特定する情報が製品出荷前に予め登録されている。
【００５１】
プロセッサ１０４は、不良チップテーブルの登録内容に基づき、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップが最大数となるように、図９、図１２、図１３に示したように、論理バンクを構成する複数の物理バンクＢａｎｋ０〜３の組み合わせを示す論物バンク情報を決定する。最大数を確保する手法としては、例えば、図９に示したように、良品チップの個数の多いものから少ないものへとなるように、あるいは良品チップの個数の少ないものから多いものへとなるように、並列駆動するチャネル０，１のバンクを順次選択する手法がある。
【００５２】
決定された論理バンクと物理バンクとの対応関係を示す論物バンク情報は、管理情報としてＮＡＮＤフラッシュ１０およびＲＡＭ２０に記憶登録され、新たな不良チップが発生するまでは、この論物バンク情報を用いて図６に示したアクセス情報が形成される。
【００５３】
また、製品出荷後に後発的に発生した不良チップもプロセッサ１０４によって検出される。例えば、チップ内の全ブロックが不良ブロックとなった場合、あるいはチップ内での閾値以上の不良ブロックが発生した場合に、後発的な不良チップが発生したと判断する。そして、プロセッサ１０４は、後発的な不良チップが発生した場合、その不良チップ情報を不良チップテーブルに追加登録する。
【００５４】
また、不良チップが新たに発生した場合、プロセッサ１０４は、更新された不良チップテーブルの登録内容に基づき、前述と同様、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップが最大数となるように再組み替えを行って、論理バンクと物理バンクとの対応関係を示す論物バンク情報を再度決定する。再決定された論理バンクと物理バンクとの対応関係を示す論物バンク情報は、管理情報として記憶登録され、新たな不良チップが発生するまでは、この論物バンク情報を用いて図６に示したアクセス情報が形成される。
【００５５】
このように第１の実施形態においては、更新される不良チップ情報に基づき、各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に決定するようにしたので、不良チップが発生した場合でも、並列駆動可能な組み合わせチップ数を最大限確保可能なメモリシステムを提供することができる。
【００５６】
（第２の実施形態）
第２の実施形態では、ブロック不良が発生した場合にも、不良ブロックを使用せずに各レーン内において並列アクセス可能なブロック数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを動的に決定するようにしている。
【００５７】
図１４は、図１２に示したチップ不良への対処に対し、ブロック不良への対処をさらに追加した例を示すものである。図１５は、図１４に示すデータを書き込む場合のチャネル並列動作及びバンクインタリーブ動作を示している。図１４の場合は、チャネル０のバンク０のチップ２におけるブロック０及びブロック１と、チャネル０のバンク１のチップ３と、チャネル１のバンク１のチップ２におけるブロック０及びブロック１と、チャネル１のバンク１のチップ３に、チップ不良が発生したとしている。図１４、図１５では、同一のバンク番号、同一のチップ番号を選択して、チャネル並列動作を行わせる組み合わせを選択した後、不良チップの影響で余っていた良品チップが組になるようにバンク番号、チップ番号を選択し、さらにこの後、不良ブロックの影響で余っていた良品ブロックが組になるようバンク番号、チップ番号及びブロック番号を選択している。したがって、この例では、書き込みブロック数が２５個目になる書き込み動作から２６個目になる書き込み動作を追加することができる。２５個目〜２６個目の書き込み動作では、バンク番号が異なるチップ内ブロックの組み合わせを行っている。すなわち、チャネル０のバンク０のチップ２のブロック２と、チャネル１のバンク１のチップ２のブロック２とでチャネル並列を行わせ、またチャネル０のバンク０のチップ２のブロック３と、チャネル１のバンク１のチップ２のブロック３とでチャネル並列を行わせており、チャネル並列書き込みの合計ブロック数は２６ブロックに増加している。
【００５８】
なお、図１４、１５の場合は、２５個目〜２６個目の書き込み動作において、バンク番号は異なるがチップ番号が同じブロックをチャネル並列動作の組としたが、バンク番号及びチップ番号が異なるブロックをチャネル並列動作の組としてもよい。
【００５９】
図１５の２６個目の書き込み動作を例にとって、レーン０用ＮＡＮＤコントローラ１１０ａの動作を説明する。
（２６個目の書き込み動作）
ＣＨ０アクセス情報設定レジスタ３４ａには、Ｂａｎｋ番号＝０，Ｃｈｉｐ番号＝２，Ｂｌｏｃｋ番号＝３がセットされ、ＣＨ１アクセス情報設定レジスタ３５ａには、Ｂａｎｋ番号＝１，Ｃｈｉｐ番号＝２，Ｂｌｏｃｋ番号＝３がセットされ、その後、これらのセットデータが動作許可レジスタ３６ａにセットされる。Ｉ／Ｆコントローラ３７ａは、動作許可レジスタ３６ａのセット内容に基づき、ＮＡＮＤＩ／Ｆ３２ａを制御する。これにより、ＣＨ０のＢａｎｋ番号＝０に対応するチップイネーブル信号ＣＥ００がアサートされ、ＣＨ１のＢａｎｋ番号＝１に対応するチップイネーブル信号ＣＥ１１がアサートされ、異なるバンク番号内のブロックのチャネル並列駆動が行われる。
【００６０】
図１６及び図１７は、図１４及び図１５に示した動作例と同様、ブロック不良への対応例を示すものである。図１６及び図１７では、各バンクが１チップで構成されている場合を示している。図１６及び図１７では、図１４，図１５と同様、１つのレーン内の２チャネル（ＣＨ０、ＣＨ１）を示している。図１６では、同じバンク番号を持つブロックからチャネル並列動作を行わせるチップを選択するという規約を有する場合を示している。一方、図１７では、チャネル並列動作を行わせるブロックの組み合わせを、同じバンク番号をもつブロックとは規定せず、チャネル並列に使用されるブロック数を出来るだけ多く確保可能なバンク番号の組み合わせを選択している。
【００６１】
図１６及び図１７では、白抜き部分が良品ブロックを示し、ハッチング部分が不良ブロックを示している。図１６及び図１７で、不良チップの発生状況は同じである。１つのバンクの１チップの記憶容量が８０００ＫＢであるとする。図１６及び図１７では、チャネル０のＮＡＮＤフラッシュ１０においては、バンク番号０では不良ブロックが発生しておらず、バンク番号１では１０００ＫＢの不良ブロックが発生し、バンク番号２では２０００ＫＢの不良ブロックが発生し、バンク番号３では３０００ＫＢの不良ブロックが発生している。また、チャネル１のＮＡＮＤフラッシュ１０においては、バンク番号０では３０００ＫＢの不良ブロックが発生し、バンク番号１では２０００ＫＢの不良ブロックが発生し、バンク番号２は１０００ＫＢの不良ブロックが発生し、バンク番号３では不良ブロックが発生していない。
【００６２】
図１６の場合は、Ｂａｎｋ＃０に関しては、チャネル並列可能なブロック容量は５０００ＫＢで、Ｂａｎｋ＃１に関しては、チャネル並列可能なブロック容量は６０００ＫＢで、Ｂａｎｋ＃２に関しては、チャネル並列可能なブロック容量は６０００ＫＢで、Ｂａｎｋ＃３に関しては、チャネル並列可能なブロック容量は５０００ＫＢである。これらの合計ブロック容量は、２２０００ＫＢである。
【００６３】
これに対し、図１７では、チャネル並列動作を行わせるブロックの組み合わせを、同じバンク番号をもつブロックとは規定せず、チャネル並列に使用されるブロック数を出来るだけ多く確保可能なバンク番号の組み合わせを選択している。すなわち、チャネル０において、良品ブロック容量はバンク番号３、バンク番号２，バンク番号１、バンク番号０の順に多くなり、チャネル１において、良品ブロック容量はバンク番号０、バンク番号１，バンク番号２、バンク番号３の順に多くなるので、良品チップの個数の多いものから少ないものへとなるようにチャネル０，１のバンクを選択している。すなわち、Ｂａｎｋ＃０をＣＨ０のＢａｎｋ３とＣＨ１のＢａｎｋ０との組み合わせとし、Ｂａｎｋ＃１をＣＨ０のＢａｎｋ２とＣＨ１のＢａｎｋ１との組み合わせとし、Ｂａｎｋ＃２をＣＨ０のＢａｎｋ１とＣＨ１のＢａｎｋ２との組み合わせとし、Ｂａｎｋ＃３をＣＨ０のＢａｎｋ０とＣＨ１のＢａｎｋ３との組み合わせとしている。
【００６４】
この結果、図１７の場合は、Ｂａｎｋ＃０に関しては、チャネル並列可能なブロック容量は５０００ＫＢで、Ｂａｎｋ＃１に関しては、チャネル並列可能なブロック容量は６０００ＫＢとなり、図１６の場合と同じであるが、Ｂａｎｋ＃２に関しては、チャネル並列可能なブロック容量は７０００ＫＢで、Ｂａｎｋ＃３に関しては、チャネル並列可能なブロック容量は８０００ＫＢとなり、図１６の場合と比較して、計４０００ＫＢだけチャネル並列可能なブロック容量が増加している。
【００６５】
つぎに、プロセッサ１０４で行われるアクセス情報の設定について説明する。まず、プロセッサ１０４が管理する管理情報には、図１４に示したようなチップ不良箇所及びチップ内ブロック故障箇所を特定可能な不良位置テーブルが含まれている。このような不良位置テーブルには、不良チップ及び不良ブロックを特定する情報が製品出荷前に予め登録されている。
【００６６】
プロセッサ１０４は、不良位置テーブルの登録内容に基づき、不良メモリチップ及び不良ブロックを使用せずに各レーン内において並列アクセス可能なブロックが最大数となるように、図１４、図１５、図１７に示したように、論理バンクを構成する複数の物理バンクＢａｎｋ０〜３の組み合わせを示す論物バンク情報を決定する。最大数を確保する手法としては、例えば、図１７に示したように、良品ブロックの個数の多いものから少ないものへとなるように、あるいは良品ブロックの個数の少ないものから多いものへとなるように、並列駆動するチャネル０，１のバンクを順次選択する手法がある。
【００６７】
決定された論理バンクと物理バンクとの対応関係を示す論物バンク情報は、管理情報として記憶登録され、新たな不良チップが発生するまでは、この論物バンク情報を用いて図６に示したアクセス情報が形成される。
【００６８】
また、製品出荷後に後発的に発生した不良ブロックもプロセッサ１０４によって検出される。例えば、チップ内の全ブロックが不良ブロックとなった場合、あるいはチップ内での閾値以上の不良ブロックが発生した場合に、後発的な不良チップが発生したと判断する。また、閾値未満の不良ブロックが発生したチップについては、チップ不良とはせずに、後発的な不良ブロックが良品チップに発生したと判断する。そして、プロセッサ１０４は、後発的な不良チップが発生した場合、その不良チップ情報を不良位置テーブルに追加登録する。さらに、良品チップに後発的な不良ブロックが発生した場合は、この不良ブロック情報を不良位置テーブルに追加登録する。
【００６９】
また、不良チップが新たに発生した場合、あるいは不良ブロックが新たに発生した場合、プロセッサ１０４は、更新された不良位置テーブルの登録内容に基づき、前述と同様、不良メモリチップ及び不良ブロックを使用せずに各レーン内において並列アクセス可能なブロックが最大数となるように再組み替えを行って、論理バンクと物理バンクとの対応関係を示す論物バンク情報を再度決定する。再決定された論理バンクと物理バンクとの対応関係を示す論物バンク情報は、管理情報として記憶登録され、新たな不良チップあるいは不良ブロックが発生するまでは、この論物バンク情報を用いて図６に示したアクセス情報が形成される。
【００７０】
このように第２の実施形態においては、更新される不良チップ情報及び不良ブロック情報に基づき、各レーン内において並列アクセス可能なブロック数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に決定するようにしたので、不良チップあるいは不良ブロックが発生した場合でも、並列駆動可能な組み合わせブロック数を最大限確保可能なメモリシステムを提供することができる。
【００７１】
なお、第２の実施形態において、不良チップが発生していない状況下、あるいは１バンクを１メモリチップで構成する場合は、プロセッサ１０４は、図１７に示したように、不良ブロックを使用せずに各レーン内において並列アクセス可能なブロック数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に決定し、この論物バンク情報に基づいてアクセス情報を設定する。
【００７２】
なお、第１、第２の実施形態においては、プロセッサ１０４（ファームウエア）が、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に決定し、この論物バンク情報に基づいてアクセス情報を設定するようにしたが、ＮＡＮＤコントローラ１１０に、論物バンク情報を動的に決定し、この論物バンク情報に基づいてアクセス情報を設定する機能を搭載するようにしてもよい。
【００７３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７４】
１  ホスト、２  ＡＴＡインタフェース、４  ドライブ制御回路、１０  ＮＡＮＤフラッシュ、１０ａ〜１０ｄ  チャネル並列動作要素、２０  ＲＡＭ、３１ａ,３１ｂ  ＥＣＣ回路、３３ａ  レーン０コントローラ、３３ｂ  レーン１コントローラ、３４ａ  ＣＨ０アクセス情報設定レジスタ、３２ａ，３２ｂ  ＮＡＮＤＩ／Ｆ  ３５ａ  ＣＨ１アクセス情報設定レジスタ、３６ａ，３６ｂ  動作許可レジスタ、３７ａ，３７ｂ  Ｉ／Ｆコントローラ、３８ａ，３８ｂ  コントローラ、１０４     プロセッサ、１１０  ＮＡＮＤコントローラ、１１０ａ  レーン０用ＮＡＮＤコントローラ、  １１０ｂ  レーン１用ＮＡＮＤコントローラ。
【図１】
2013069210.tif 000003
【図２】
2013069210.tif 000004
【図３】
2013069210.tif 000005
【図４】
2013069210.tif 000006
【図５】
2013069210.tif 000007
【図６】
2013069210.tif 000008
【図７】
2013069210.tif 000009
【図８】
2013069210.tif 000010
【図９】
2013069210.tif 000011
【図１０】
2013069210.tif 000012
【図１１】
2013069210.tif 000013
【図１２】
2013069210.tif 000014
【図１３】
2013069210.tif 000015
【図１４】
2013069210.tif 000016
【図１５】
2013069210.tif 000017
【図１６】
2013069210.tif 000018
【図１７】
2013069210.tif 000019