メモリシステム
【課題】不良メモリチップが発生した場合でも、並列駆動可能な組み合わせ数を最大限確保可能なメモリシステムを提供すること。
【解決手段】物理バンク内の不良メモリチップが識別可能な不良メモリチップ情報に基づき、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを動的に設定する。
【解決手段】物理バンク内の不良メモリチップが識別可能な不良メモリチップ情報に基づき、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを動的に設定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、不揮発性半導体メモリを備えるメモリシステムに関する。
【背景技術】
【0002】
近年のフラッシュメモリのパッケージは複数のメモリチップをスタックして構成されることが多くなっている。SSD(Solid State Drive)に代表されるように、フラッシュメモリを使用して大容量のストレージデバイスを構成する際には、このようなパッケージを更に複数使用することにより構成することが多い。
【0003】
例えば、8スタックされたパッケージを8個使用してSSDを構成した場合、64チップで1システムを構成することとなり、単一チップの不良率を0.1%とした場合でも、システムとしての不良率約6%程度となり、単一チップの不良率に対してシステムとしての不良率は大きなものなる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−266125号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の一つの実施形態は、不良チップあるいは不良ブロックが発生した場合でも、並列駆動可能な組み合わせ数を最大限確保可能なメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の一つの実施形態によれば、不揮発性半導体メモリは、並列動作可能なチャネル並列動作要素を複数個有し、各チャネル並列動作要素はバンクインタリーブ可能な複数の物理バンクを有し、各物理バンクは複数のメモリチップを有し、各メモリチップはデータ消去の単位である物理ブロックを複数個有する。メモリコントローラは、複数個備えられ、複数のチャネル並列動作要素から構成されるレーンに対応して1つ割り当てられる。メモリコントローラは、物理バンク単位に個別接続され、1つの物理バンク内の複数のメモリチップに共通接続される複数のチップイネーブル信号によって物理バンクの選択を行うことによってレーン内の複数のチャネル並列動作要素に含まれる各物理バンク内のメモリチップを並列駆動する。コントローラは、各物理バンク内の不良メモリチップが識別可能な不良メモリチップ情報に基づき、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に設定する。各メモリコントローラは、コントローラが設定した論物バンク情報に基づいてチップイネーブル信号を駆動制御する。
【図面の簡単な説明】
【0007】
【図1】図1は、SSDの構成例を示すブロック図である。
【図2】図2は、1レーン内のNANDフラッシュの構成例を示すブロック図である。
【図3】図3は、1チャネルのNANDフラッシュの内部構成例を示す図である。
【図4】図4は、NANDコントローラの内部構成例を示すブロック図である。
【図5】図5は、CH構成でのECC符号のデータ配置例とレーン構成でのECC符号のデータ配置例を示す図である。
【図6】図6は、各チャネルのNANDフラッシュに対するアクセス情報の構成例を示す図である。
【図7】図7は、1レーン内でのNANDフラッシュに対するアクセス動作手順例を示すフローチャートである。
【図8】図8は、同じバンク番号を持つバンクからチャネル並列動作を行わせるチップを選択する場合にチップ故障がある場合のチップ選択例を示す図である。
【図9】図9は、チップ故障がある場合に第1の実施形態の手法を用いた場合のチップ選択例を示す図である。
【図10】図10は、同じバンク番号を持つバンクからチャネル並列動作を行わせるチップを選択する場合にチップ故障がある場合のチップ選択例を示す図である。
【図11】図11は、図10のチップ選択を行う場合のアクセス情報などを示す図である。
【図12】図12は、チップ故障がある場合に第1の実施形態の手法を用いた場合のチップ選択例を示す図である。
【図13】図13は、図12のチップ選択を行う場合のアクセス情報などを示す図である。
【図14】図14は、チップ故障及びブロック故障がある場合に第2の実施形態の手法を用いた場合のチップ選択例を示す図である。
【図15】図15は、図14のチップ選択を行う場合のアクセス情報などを示す図である。
【図16】図16は、同じバンク番号を持つバンクからチャネル並列動作を行わせるブロックを選択する場合にブロック故障がある場合のチャネル並列可能なブロック容量を示す図である。
【図17】図17は、ブロック故障がある場合に第2の実施形態の手法を用いた場合のチャネル並列可能なブロック容量を示す図である。
【発明を実施するための形態】
【0008】
SSD(Solid State Drive)では、複数のチャネルによって複数のフラッシュメモリを並列接続し、複数のフラッシュメモリを並列駆動することで、高速アクセスを可能にしている。また、SSDでは、各チャネルのフラッシュメモリをバンクインタリーブ可能な複数のバンクで構成し、チャネル並列動作に加えバンクインタリーブを行うことで更なる高速アクセスを可能にしている。
【0009】
各チャネルのフラッシュメモリにおいて、各バンクは複数のメモリチップで構成され、各メモリチップはデータ消去の単位である物理ブロックを複数配列して構成される。このようなSSDにおいては、並列駆動される各チャネルの物理ブロックを組み合わせて論理ブロックと呼ばれる仮想的なブロックを構成し、論理ブロック単位のアクセスを可能としている。
【0010】
このように複数のチャネルから1つの物理ブロックを夫々選択することで論理ブロックを構成する場合、同一のバンク番号を持つ物理ブロックによって論理ブロックを構成するという制約を設けることで、論理ブロックの管理を容易にするとともに論理ブロックを構成する物理ブロックの個数の変化への対応を容易化させるという手法が採用される場合がある。
【0011】
一方、SSDでは、チャネル毎に1つのメモリコントローラを配し、1つのメモリコントローラで1つのチャネルのフラッシュメモリを駆動制御するのが一般的である。メモリコントローラが行う機能としては、接続されるチャネルのフラッシュメモリの駆動処理、誤り訂正処理(ECC処理)、バンクインタリーブ処理などがあり、これらの処理を上位コントローラの制御下で実行している。
【0012】
しかし、各チャネルに1つのメモリコントローラを配する場合、チャネル数の増加や誤り訂正処理の複雑化などに伴いメモリコントローラのゲート規模が増大する。そこで、複数のチャネルのフラシュメモリに1つのメモリコントローラを配し、1つのメモリコントローラで複数のチャネルのフラッシュメモリを並列駆動することが考えられている。1つのメモリコントローラに接続される複数チャネルを本明細書ではレーン(Lane)と呼ぶ。このレーンを利用した構成では、例えば、誤り訂正処理を複数のチャネルで共用化することができ、ゲート規模を縮小することが可能である。
【0013】
しかしながら、同一のバンク番号を持つ物理ブロックによって論理ブロックを構成するという制約を各レーンに適用した場合、不良チップあるいは不良ブロックが存在する場合、各レーンにおいて使用可能な物理ブロックを有効利用できず、使用可能な物理ブロックの組み合わせ容量が少なくなるという問題がある(図8参照)。
【0014】
そこで、本実施形態では、レーン内部では、同一のバンク番号を持つ物理ブロックによって論理ブロックを構成するという制約を無くし、不良チップあるいは不良ブロックが存在する場合、使用可能な物理ブロックを有効利用し、使用可能な物理ブロックの組み合わせ容量を最大限確保できるようにする(図9参照)。すなわち、本実施形態では、レーン内において、複数の物理バンクから構成される仮想的な論理バンクという概念を導入し、不良メモリチップ情報に基づき、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを動的に設定可能とする。なお、レーン間で、論理バンクをどのように組み合わせるかについては、本実施形態では言及しない。
【0015】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【0016】
(第1の実施形態)
図1は、メモリシステムとしてのSSD100の構成例を示すブロック図である。SSD100は、コントローラとしてのドライブ制御回路4と、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDフラッシュと略す)10と、ランダムアクセス可能な半導体メモリとしてのRAM20と、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースなどを備えている。SSD100は、ATA I/F2を介してパーソナルコンピュータあるいはCPUコアなどのホスト装置(以下、ホストと略す)1と接続され、ホスト1の外部メモリとして機能する。
【0017】
NANDフラッシュ10は、ホスト1によって指定されたユーザデータを記憶したり、RAM20で管理される管理情報をバックアップ用に記憶したりする。NANDフラッシュ10は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。NANDフラッシュ10は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、NANDフラッシュ10では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。図1では、NANDフラッシュ10は、4チャネル(4ch:CH0〜CH3)を介して、ドライブ制御回路4内部のNANDコントローラ110に並列接続されており、4つのチャネル並列動作要素10a〜10dを並列動作させることが可能である。チャネル数は4つに限らず、任意のチャネル数を採用可能である。
【0018】
RAM20としては、例えば揮発性半導体メモリを採用する。RAM20として、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase Change Random Access Memory)などを採用することができる。RAM20は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。具体的には、データ転送用の記憶部(データ転送用キャッシュ)としては、ホスト1から書込要求があったデータをNANDフラッシュ10に書込む前に一時的に保存したり、ホスト1から読出要求があったデータをNANDフラッシュ10から読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、NANDフラッシュ10に記憶されるデータの格納位置などを管理するための管理情報(NANDフラッシュ10に記憶されている各種管理テーブルが起動時などに展開されたマスターテーブル、管理テーブルの変更差分情報であるログなど)を格納するために使用される。
【0019】
ドライブ制御回路4は、ホスト1とNANDフラッシュ10との間でRAM20を介してデータ転送制御を行うとともに、SSD100内の各構成要素を制御する。
【0020】
ドライブ制御回路4は、データアクセス用バス101、回路制御用バス102を備えている。回路制御用バス102には、ドライブ制御回路4全体を制御するプロセッサ104が接続されている。回路制御用バス102には、NANDフラッシュ10に記憶された各管理プログラム(FW:ファームウエア)をブートするブート用プログラムが格納されたブートROM105がROMコントローラ106を介して接続されている。
【0021】
ATAインタフェースコントローラ(ATAコントローラ)111、NANDコントローラ110、及びRAMコントローラ114は、データアクセス用バス101と回路制御用バス102との両方に接続されている。ATAコントローラ111は、ATAインタフェース2を介してホスト1との間でデータを送受信する。データアクセス用バス101には、データ作業領域及びファームウェア展開領域として使用されるSRAM115がSRAMコントローラ116を介して接続されている。NANDフラッシュ10に記憶されているファームウェアは起動時、ブートROM105に記憶されたブート用プログラムによってSRAM115に転送される。プロセッサ104は、SRAM115に転送されたファームウェアを実行することで、SSD100内での最上位のコントローラとして動作し、ドライブ制御回路4内の構成要素を制御する。
【0022】
RAMコントローラ114は、プロセッサ104とRAM20とのインタフェース処理、ATA I/F2−RAM20間のデータ転送制御、NANDフラッシュ10−RAM20間のデータ転送制御などを実行する。NANDコントローラ110は、プロセッサ104とNANDフラッシュ10とのインタフェース処理、NANDフラッシュ10−RAM20間のデータ転送制御、誤り訂正符号のエンコード/デコード処理などを実行する。
【0023】
図2は、NANDフラッシュ10の内部構成例を示すものである。図2では、チャネル0(CH0)のチャネル並列動作要素10a、チャネル1(CH1)のチャネル並列動作要素10bを示している。図示を省略したチャネル2(CH2)のチャネル並列動作要素10c、チャネル3(CH3)のチャネル並列動作要素10dも同様の構成を有している。各チャネル並列動作要素10a〜10dは、バンクインターリーブが可能な複数の物理バンク(図2では4バンク、Bank0〜Bank3)によって構成されており、各々の物理バンクは、複数のメモリチップ(図2では、4メモリチップ、Chip0〜Chip3)によって構成されている。なお、バンク番号を示すBank0〜3は、NANDフラッシュ10上での物理的な位置を示す物理バンク番号を示している。バンクインタリーブとは、あるバンクのデータにアクセスしている遅延時間の最中に、すなわちあるバンクのレディビジー信号(RyBy)がビジー中に、次のバンクへアクセス要求を発行して時間を有効利用する手法である。
【0024】
図3は、チャネル0(CH0)のチャネル並列動作要素10a内のある1つのバンク(この場合bank0)の内部構成例を示すものである。図3に示すように、1つのバンク内の各メモリチップ(chip0〜chip3)は、例えば、それぞれ複数の物理ブロックで構成されている(図4では、便宜上、4個の物理ブロックBlk0〜Blk3を示した)。
【0025】
図4は、NANDコントローラ110の内部構成例を示すものである。NANDコントローラ(NANDC)110は、レーン0のNANDフラッシュ10を駆動制御するレーン0用NANDコントローラ(NANDC−LN0)110aと、レーン1のNANDフラッシュ10を駆動制御するレーン1用NANDコントローラ(NANDC−LN0)110bとを有する。1つのレーン用NANDコントローラが駆動制御を行う複数のチャネルのことをレーンと呼称する。この実施形態では、4チャネルで構成されるNANDフラッシュ10を、レーン0(CH0及びCH1)とレーン1(CH2及びCH3)に分割し、レーン0のNANDフラッシュ10(チャネル並列動作要素10a及び10b)を一方のNANDC−LN0 110aによって駆動制御し、レーン1のNANDフラッシュ10(チャネル並列動作要素10c及び10d)を他方のNANDC−LN1 110bによって駆動制御することとする。すなわち、この実施の形態では、1レーンは2チャネルで構成される。
【0026】
レーン0用NANDコントローラ110aは、RAM20との間でDMA転送制御を行うDMAコントローラ(DMAC)30aと、誤り訂正回路(ECC回路)31aと、NANDI/F32aと、レーン0コントローラ33aとを備える。レーン0コントローラ33aは、CH0アクセス情報設定レジスタ34aと、CH1アクセス情報設定レジスタ35aと、動作許可レジスタ36aと、I/Fコントローラ37aと、コントローラ38aを有する。レーン1用NANDコントローラ110bも同様の構成を有し、DMAC30bと、ECC回路31bと、NANDI/F32bと、レーン1コントローラ33bとを備える。レーン1コントローラ33bも同様の構成を有し、CH2アクセス情報設定レジスタ34bと、CH3アクセス情報設定レジスタ35bと、動作許可レジスタ36bと、I/Fコントローラ37bと、コントローラ38bを有する。
【0027】
レーン0用NANDコントローラ110aのNAND/IF32aには、2チャネル(CH0、CH1)分の信号線が接続されている。すなわち、NAND/IF32aには、CH0のチャネル並列動作要素10aに接続されるコントロールI/O信号、チップイネーブル信号(CE00−03)及びレディビジー信号(RyBy00−03)と、CH1のチャネル並列動作要素10bに接続されるコントロールI/O信号、チップイネーブル信号(CE10−13)及びレディビジー信号(RyBy10−13)が接続されている。コントロールI/O信号は、CLE(コマンドラッチイネーブル)、ALE(アドレスラッチイネーブル)、WE(ライトイネーブル)、RE(リードイネーブル)、DQS(データストローブ信号)、I/O0〜I/O7(入出力端子)などを含む。同様に、レーン1用NANDコントローラ110bのNAND/IF32bには、2チャネル(CH2、CH3)分のコントロールI/O信号、チップイネーブル信号(CE20−23、CE30−33)及びレディビジー信号(RyBy20−23、RyBy30−33)が接続されている。
【0028】
図2では、レーン0コントローラ33aのNANDI/F32aと、CH0のチャネル並列動作要素10a及びCH1のチャネル並列動作要素10bとの信号線の接続をより詳細に示している。図2に示すように、各チャネルにおいて、コントロールI/O信号は、複数のバンク(Bank0〜Bank3)間で共有されているが、チップイネーブル信号CE0−3とレディビジー信号RyBy0−3は各バンクに個別に接続されている。すなわち、各チャネルにおいて、チップイネーブル信号CE0(CE00、CE10、CE20、CE30)はバンク番号0のバンク(Bank0)の各メモリチップに共通接続され、チップイネーブル信号CE1(CE01、CE11、CE21、CE31)はバンク番号1のバンク(Bank1)の各メモリチップに共通接続され、チップイネーブル信号CE2(CE02、CE12、CE22、CE32)はバンク番号2のバンク(Bank2)の各メモリチップに共通接続され、チップイネーブル信号CE3(CE03、CE13、CE23、CE33)はバンク番号3のバンク(Bank3)の各メモリチップに共通接続されており、複数のバンク(Bank0〜Bank3)を複数のチップイネーブル信号(CE0−3)でバンク毎に個別に制御する。このように、各チャネルにおいてバンク番号nの物理バンクを選択する際には、チップイネーブル信号CEnをアサートとするような手法をとっている。
【0029】
同様に、各チャネルにおいて、NANDフラッシュ10の各バンクからは、自身がビジー状態であるかレディ状態であるかを示すレディビジー信号RyBy0−3(RyBy00〜RyBy33)がNANDI/Fに入力されている。各チャネルの各バンクに含まれる複数のメモリチップのRyBy信号線は共通接続されている。
【0030】
レーン0用NANDコントローラ110aには、1つのECC回路31aが搭載され、1つのECC回路31aで2チャネル分のECC処理を実行する。図5に示すように、512Bのセクタデータ毎にECC符号を付加するものとする。図5(a)は、1チャネルに1つのECC回路を設ける場合のECC処理を示すもので、この場合は、CH0のNANDフラッシュ10に対してライトする512BのセクタデータにECC符号が付加され、またCH1のNANDフラッシュ10に対してライトする512BのセクタデータにECC符号が付加されている。図5(b)は、2チャネルに1つのECC回路を設ける場合のECC処理を示すもので、この場合は、CH0のNANDフラッシュ10に対してライトする256Bのデータと、CH1のNANDフラッシュ10に対してライトする256Bのデータとで1セクタデータを構成し、CH0及びCH1に分散された512Bの1セクタデータに対しECC符号が付加されている。ECC回路31aでは、図5(b)に示すようなECC処理を実行する。
【0031】
セクタデータのリードを考えた場合、図5(a)の場合は、1チャネルから512Bのセクタデータをリードする必要があるが、図5(b)の場合は、並列動作可能な2チャネルから256Bずつデータをリードすればよく、リード所要時間が半分になるという利点がある。また、2チャネルに1つのECC回路を設ければよいので、NANDコントローラ110のゲート規模が少なくなるという利点もある。
【0032】
つぎに、レーン0コントローラ33aについて説明する。レーン1コントローラ33bも同様の構成を有している。レーン0コントローラ33aのコントローラ38aには、回路制御用バス102を介して上位のプロセッサ104からNANDフラッシュ10のレーン0を駆動制御するための制御情報が入力される。コントローラ38aは、プロセッサ104から入力される制御情報に基づいてレーン0コントローラ33aの内部構成回路を制御する。プロセッサ104から入力される制御情報には、レーン0(チャネル0及びチャネル1)のNANDフラッシュ10にアクセスするためのアクセス情報が含まれる。
【0033】
CH0アクセス情報設定レジスタ34aには、プロセッサ104から入力されるCH0用のアクセス情報がコントローラ38aによって設定される。CH1アクセス情報設定レジスタ35aには、プロセッサ104から入力されるCH1用のアクセス情報がコントローラ38aによって設定される。CH0アクセス情報設定レジスタ34a及びCH1アクセス情報設定レジスタ35aはキュー構造を有しており、複数のアクセス情報を蓄積することが可能である。図6は、プロセッサ104から入力されるアクセス情報の一例を示すものである。チャネル0のアクセス情報には、バンク番号、チップ番号、ブロック番号及び命令(ライト、リード、消去など)が含まれる。同様に、チャネル1のアクセス情報には、バンク番号、チップ番号、ブロック番号及び命令(ライト、リード、消去など)が含まれる。
【0034】
CH0アクセス情報設定レジスタ34a及びCH1アクセス情報設定レジスタ35aに設定された各チャネルのアクセス情報は、コントローラ38aによって動作許可レジスタ36aにセットされる。コントローラ38aは、RyBy信号(RyBy00−03,RyBy10−13)などに基づいて、チャネル0及びチャネル1の並列動作が可能になったときに、各チャネルのアクセス情報を動作許可レジスタ36aにセットする。I/Fコントローラ37aは、コントローラ38aの制御の基で、動作許可レジスタ36aにセットされたチャネル0及びチャネル1用のアクセス情報に基づいてNANDI/F32aを駆動制御することで、アクセス情報に対応するコントロールI/O信号、チップイネーブル信号(CE0−3)を各チャネル0,1に出力させる。
【0035】
つぎに、図7に従ってレーン0コントローラ33aの動作手順を説明する。まず、コントローラ38aは、CH0アクセス情報設定レジスタ34a及びCH1アクセス情報設定レジスタ35aに、プロセッサ104から入力されるチャネル0用のアクセス情報及びチャネル1用のアクセス情報を設定する(ステップS100、S110)。コントローラ38aは、プロセッサ104からの制御情報及びRyBy信号(RyBy0−3)などに基づいて、チャネル0及びチャネル1の並列動作を許可してもよいか否かを判定し(ステップS120)、並列動作を許可してもよいと判定すると、CH0アクセス情報設定レジスタ34a及びCH1アクセス情報設定レジスタ35aに設定された各チャネルのアクセス情報を動作許可レジスタ36aにセットする。
【0036】
I/Fコントローラ37aは、コントローラ38aの制御の基で、動作許可レジスタ36aにセットされたチャネル0及びチャネル1用のアクセス情報に基づいてNANDI/F32aを駆動制御することで、アクセス情報に対応するコントロールI/O信号、チップイネーブル信号(CE0−3)を各チャネル0,1に出力させる。これにより、アクセス情報に対応するチャネル0、1のNANDフラッシュ10の各ブロックのデータに対するアクセスが行われる(ステップS130)。コントローラ38aは、このアクセスが終了したか否かをRyBy信号などに基づいて判定し(ステップS140)、アクセスが終了した場合は、CH0アクセス情報設定レジスタ34a及びCH1アクセス情報設定レジスタ35aに未処理命令が残っているか否かを判定し(ステップS150)、未処理命令が残っている場合は、上記の処理を繰り返す。未処理命令がなくなると、処理を終了する。
【0037】
前述したように、プロセッサ104は、CH0アクセス情報設定レジスタ34a及びCH1アクセス情報設定レジスタ35aに設定されるアクセス情報をNANDコントローラ110に出力する動作を行う。プロセッサ104は、不良チップ情報に基づいて、不良チップが発生している場合でも、各レーン内において、できるだけ多くの良品チップを使用したチャネル並列及びバンクインタリーブを行うことができるようなチャネル間のバンクの組み合わせ(バンク番号の組み合わせ)を含むアクセス情報をNANDコントローラ110に出力する。プロセッサ104は、物理バンク内の不良チップが識別可能な不良チップ情報に基づき、不良チップを使用せずに各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクBank0〜3の組み合わせを示す論物バンク情報を動的に設定する。設定された論物バンク情報に基づいて図6に示したアクセス情報が形成される。論理バンクとは、後で説明するが、複数の物理バンクの組み合わせによって形成される仮想的なバンクのことをいう。
【0038】
不良チップがどのメモリチップで発生しているかを示す不良チップ情報が、製品出荷時に管理情報としてNANDフラッシュ10に登録されている。また、製品出荷後に後発的に発生した不良チップ(例えば、不良ブロックが所定の閾値以上発生したチップ)もプロセッサ104によって検出され、後発的に発生した不良チップ情報も管理情報として更新追加される。プロセッサ104は、このような不良チップ情報に基づき、並列アクセス可能な組み合わせ数を最大限確保可能な物理バンクBank0〜3の組み合わせを動的に設定する。その詳細については後述する。
【0039】
つぎに、図8及び図9を用いてレーン内におけるチャネル間でのバンクの組み合わせについて説明する。図8では、同じバンク番号を持つチップからチャネル並列動作を行わせるチップを選択するという規約を有する場合を示している。一方、図9では、チャネル並列動作を行わせるチップの組み合わせを、同じバンク番号をもつチップとは規定せず、チャネル並列に使用されるチップ数を出来るだけ多く確保可能なバンク番号の組み合わせを選択している。図8、図9において、上方に存在する「#」が付されたバンク番号であるBank#0〜Bank#3は、前述した仮想的な論理バンクの番号を示している。
【0040】
図8及び図9では、白抜きが良品チップを示し、ハッチング付きが不良チップを示している。図8及び図9で、不良チップの発生状況は同じである。図8及び図9では、チャネル0のNANDフラッシュ10においては、バンク番号0の4チップから3つの不良チップが発生し、バンク番号1の4チップから2つの不良チップが発生し、バンク番号2の4チップから1つの不良チップが発生し、バンク番号3の4チップからは不良チップが発生していない。チャネル1のNANDフラッシュ10においては、バンク番号0の4チップからは不良チップが発生しておらず、バンク番号1の4チップから1つの不良チップが発生し、バンク番号2の4チップから2つの不良チップが発生し、バンク番号3の4チップからは3つの不良チップが発生している。
【0041】
図8の場合は、チャネル間で同じバンク番号を持つチップを選択するので、論理バンク番号(Bank#0〜#3)と物理バンク番号(Bank0〜3)は一致している。すなわち、チャネル0のチップイネーブル信号CE00をチャネル0のバンク番号0の4チップに接続し、チャネル1のチップイネーブル信号CE10をチャネル1のバンク番号0の4チップに接続している。同様に、チャネル0のチップイネーブル信号CE01をチャネル0のバンク番号1の4チップに接続し、チャネル1のチップイネーブル信号CE11をチャネル1のバンク番号1の4チップに接続し、…、チャネル0のチップイネーブル信号CE03をチャネル0のバンク番号3の4チップに接続し、チャネル1のチップイネーブル信号CE13をチャネル1のバンク番号3の4チップに接続している。
【0042】
図8の場合は、Bank#0に関しては、CH0のBank0の良品チップ数が1で、CH1のBank0の良品チップ数が4であるので、1スタック(1チップずつ)しかチャネル並列動作を行わすことができない。また、Bank#1に関しては、チャネル並列可能数は2スタックであり、Bank#2に関しては、チャネル並列可能数は2スタックであり、Bank#3に関しては、チャネル並列可能数は1スタックである。したがって、図8の場合の、チャネル並列可能数の合計は、6スタックである。
【0043】
一方、図9では、前述したように、チャネル並列動作を行わせるチップの組み合わせを、同じバンク番号をもつチップとは規定せず、チャネル並列に使用されるチップ数を出来るだけ多く確保可能なバンク番号の組み合わせを選択している。したがって、論理バンク番号(Bank#0〜#3)と物理バンク番号(Bank0〜3)は一致していない場合もある。すなわち、チャネル0において、良品チップの個数はバンク番号3、バンク番号2,バンク番号1、バンク番号0の順に少なくなり、チャネル1において、良品チップの個数はバンク番号0、バンク番号1,バンク番号2、バンク番号3の順に少なくなるので、良品チップの個数の多いものから少ないものへとなるようにチャネル0,1のバンクを選択している。すなわち、Bank#0をCH0のBank3とCH1のBank0との組み合わせとし、Bank#1をCH0のBank2とCH1のBank1との組み合わせとし、Bank#2をCH0のBank1とCH1のBank2との組み合わせとし、Bank#3をCH0のBank0とCH1のBank3との組み合わせとしている。この結果、Bank#0のチャネル並列可能数は4スタックであり、Bank#1のチャネル並列可能数は3スタックであり、Bank#2のチャネル並列可能数は2スタックであり、Bank#3のチャネル並列可能数は1スタックであり、図9の場合のチャネル並列可能数は10スタックとなり、図8に比べ4スタック増加する。
【0044】
図10は、レーンをCH0及びCH1の2チャネルで構成し、1チャネルを2バンクで構成し、1バンクを4チップで構成し、1チップを4ブロックで構成した場合に、各ブロックに書き込むデータ例を示すものである。同じデータ名(a0,b0など)を有する「x」、「y」の組(例えば、a0−xとa0−y)で並列動作を行うとする。図11は、図10に示すデータを書き込む場合のチャネル並列動作及びバンクインタリーブ動作を示している。このような構成において、図10に示すように、チャネル0のバンク0のチップ2と、チャネル1のバンク1のチップ2と、チャネル1のバンク1のチップ3に、チップ不良が発生したとする。
【0045】
図10及び図11では、図8と同様、CH0及びCH1において、同一のバンク番号を選択して、チャネル並列動作を行わせた場合を示している。同一のバンク番号を選択するという制約を設けた場合、チップ不良が発生したチップと同一バンク番号を持つ他方チャネルのチップは不使用となるので、図11に示すように、チャネル並列書き込みの合計ブロック数は20ブロックとなる。
【0046】
図12は、同一のバンク番号を選択して、チャネル並列動作を行わせるという制約をなくし、不使用チップをできるだけ少なくするという方針に基づく場合の各ブロックに書き込むデータ例を示すものである。図13は、図12に示すデータを書き込む場合のチャネル並列動作及びバンクインタリーブ動作を示している。図12、図13では、同一のバンク番号、同一のチップ番号を選択して、チャネル並列動作を行わせる組み合わせを選択した後、不良チップの影響で余っていた良品チップが組になるようにバンク番号、チップ番号を選択している。したがって、この例では、図13に示すように、書き込みブロック数が21個目になる書き込み動作から24個目になる書き込み動作を追加することができる。21個目〜24個目の書き込み動作では、バンク番号が異なるチップの組み合わせを行っている。すなわち、チャネル0のバンク1のチップ2と、チャネル1のバンク0のチップ2とでチャネル並列及びバンクインタリーブを行わせており、チャネル並列書き込みの合計ブロック数は24ブロックに増加している。
【0047】
図11、図13に示したBank番号、Chip番号、Block番号は、プロセッサ104がNANDコントローラ110の例えばレーン0コントローラ33aに対し出力するアクセス情報の内容の一部を示している。すなわち、図11、図13に示したBank番号、Chip番号、Block番号は、図6に示したアクセス情報の内容の具体例を示している。
【0048】
例えば、図13の22個目の書き込み動作を例にとって、レーン0用NANDコントローラ110aの動作を説明する。
【0049】
(22個目の書き込み動作)
CH0アクセス情報設定レジスタ34aには、Bank番号=1,Chip番号=2,Block番号=1がセットされ、CH1アクセス情報設定レジスタ35aには、Bank番号=0,Chip番号=2,Block番号=1がセットされ、その後、これらのセットデータが動作許可レジスタ36aにセットされる。I/Fコントローラ37aは、動作許可レジスタ36aのセット内容に基づき、NANDI/F32aを制御する。これにより、CH0のBank番号=1に対応するチップイネーブル信号CE01がアサートされ、CH1のBank番号=0に対応するチップイネーブル信号CE10がアサートされ、異なるバンク番号を持つブロックのチャネル並列駆動が行われる。
【0050】
つぎに、プロセッサ104で行われるアクセス情報の設定について説明する。まず、プロセッサ104が管理する管理情報には、図12に示したようなチップ不良箇所を特定可能な不良チップテーブルが含まれている。このような不良チップテーブルには、不良チップを特定する情報が製品出荷前に予め登録されている。
【0051】
プロセッサ104は、不良チップテーブルの登録内容に基づき、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップが最大数となるように、図9、図12、図13に示したように、論理バンクを構成する複数の物理バンクBank0〜3の組み合わせを示す論物バンク情報を決定する。最大数を確保する手法としては、例えば、図9に示したように、良品チップの個数の多いものから少ないものへとなるように、あるいは良品チップの個数の少ないものから多いものへとなるように、並列駆動するチャネル0,1のバンクを順次選択する手法がある。
【0052】
決定された論理バンクと物理バンクとの対応関係を示す論物バンク情報は、管理情報としてNANDフラッシュ10およびRAM20に記憶登録され、新たな不良チップが発生するまでは、この論物バンク情報を用いて図6に示したアクセス情報が形成される。
【0053】
また、製品出荷後に後発的に発生した不良チップもプロセッサ104によって検出される。例えば、チップ内の全ブロックが不良ブロックとなった場合、あるいはチップ内での閾値以上の不良ブロックが発生した場合に、後発的な不良チップが発生したと判断する。そして、プロセッサ104は、後発的な不良チップが発生した場合、その不良チップ情報を不良チップテーブルに追加登録する。
【0054】
また、不良チップが新たに発生した場合、プロセッサ104は、更新された不良チップテーブルの登録内容に基づき、前述と同様、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップが最大数となるように再組み替えを行って、論理バンクと物理バンクとの対応関係を示す論物バンク情報を再度決定する。再決定された論理バンクと物理バンクとの対応関係を示す論物バンク情報は、管理情報として記憶登録され、新たな不良チップが発生するまでは、この論物バンク情報を用いて図6に示したアクセス情報が形成される。
【0055】
このように第1の実施形態においては、更新される不良チップ情報に基づき、各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に決定するようにしたので、不良チップが発生した場合でも、並列駆動可能な組み合わせチップ数を最大限確保可能なメモリシステムを提供することができる。
【0056】
(第2の実施形態)
第2の実施形態では、ブロック不良が発生した場合にも、不良ブロックを使用せずに各レーン内において並列アクセス可能なブロック数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを動的に決定するようにしている。
【0057】
図14は、図12に示したチップ不良への対処に対し、ブロック不良への対処をさらに追加した例を示すものである。図15は、図14に示すデータを書き込む場合のチャネル並列動作及びバンクインタリーブ動作を示している。図14の場合は、チャネル0のバンク0のチップ2におけるブロック0及びブロック1と、チャネル0のバンク1のチップ3と、チャネル1のバンク1のチップ2におけるブロック0及びブロック1と、チャネル1のバンク1のチップ3に、チップ不良が発生したとしている。図14、図15では、同一のバンク番号、同一のチップ番号を選択して、チャネル並列動作を行わせる組み合わせを選択した後、不良チップの影響で余っていた良品チップが組になるようにバンク番号、チップ番号を選択し、さらにこの後、不良ブロックの影響で余っていた良品ブロックが組になるようバンク番号、チップ番号及びブロック番号を選択している。したがって、この例では、書き込みブロック数が25個目になる書き込み動作から26個目になる書き込み動作を追加することができる。25個目〜26個目の書き込み動作では、バンク番号が異なるチップ内ブロックの組み合わせを行っている。すなわち、チャネル0のバンク0のチップ2のブロック2と、チャネル1のバンク1のチップ2のブロック2とでチャネル並列を行わせ、またチャネル0のバンク0のチップ2のブロック3と、チャネル1のバンク1のチップ2のブロック3とでチャネル並列を行わせており、チャネル並列書き込みの合計ブロック数は26ブロックに増加している。
【0058】
なお、図14、15の場合は、25個目〜26個目の書き込み動作において、バンク番号は異なるがチップ番号が同じブロックをチャネル並列動作の組としたが、バンク番号及びチップ番号が異なるブロックをチャネル並列動作の組としてもよい。
【0059】
図15の26個目の書き込み動作を例にとって、レーン0用NANDコントローラ110aの動作を説明する。
(26個目の書き込み動作)
CH0アクセス情報設定レジスタ34aには、Bank番号=0,Chip番号=2,Block番号=3がセットされ、CH1アクセス情報設定レジスタ35aには、Bank番号=1,Chip番号=2,Block番号=3がセットされ、その後、これらのセットデータが動作許可レジスタ36aにセットされる。I/Fコントローラ37aは、動作許可レジスタ36aのセット内容に基づき、NANDI/F32aを制御する。これにより、CH0のBank番号=0に対応するチップイネーブル信号CE00がアサートされ、CH1のBank番号=1に対応するチップイネーブル信号CE11がアサートされ、異なるバンク番号内のブロックのチャネル並列駆動が行われる。
【0060】
図16及び図17は、図14及び図15に示した動作例と同様、ブロック不良への対応例を示すものである。図16及び図17では、各バンクが1チップで構成されている場合を示している。図16及び図17では、図14,図15と同様、1つのレーン内の2チャネル(CH0、CH1)を示している。図16では、同じバンク番号を持つブロックからチャネル並列動作を行わせるチップを選択するという規約を有する場合を示している。一方、図17では、チャネル並列動作を行わせるブロックの組み合わせを、同じバンク番号をもつブロックとは規定せず、チャネル並列に使用されるブロック数を出来るだけ多く確保可能なバンク番号の組み合わせを選択している。
【0061】
図16及び図17では、白抜き部分が良品ブロックを示し、ハッチング部分が不良ブロックを示している。図16及び図17で、不良チップの発生状況は同じである。1つのバンクの1チップの記憶容量が8000KBであるとする。図16及び図17では、チャネル0のNANDフラッシュ10においては、バンク番号0では不良ブロックが発生しておらず、バンク番号1では1000KBの不良ブロックが発生し、バンク番号2では2000KBの不良ブロックが発生し、バンク番号3では3000KBの不良ブロックが発生している。また、チャネル1のNANDフラッシュ10においては、バンク番号0では3000KBの不良ブロックが発生し、バンク番号1では2000KBの不良ブロックが発生し、バンク番号2は1000KBの不良ブロックが発生し、バンク番号3では不良ブロックが発生していない。
【0062】
図16の場合は、Bank#0に関しては、チャネル並列可能なブロック容量は5000KBで、Bank#1に関しては、チャネル並列可能なブロック容量は6000KBで、Bank#2に関しては、チャネル並列可能なブロック容量は6000KBで、Bank#3に関しては、チャネル並列可能なブロック容量は5000KBである。これらの合計ブロック容量は、22000KBである。
【0063】
これに対し、図17では、チャネル並列動作を行わせるブロックの組み合わせを、同じバンク番号をもつブロックとは規定せず、チャネル並列に使用されるブロック数を出来るだけ多く確保可能なバンク番号の組み合わせを選択している。すなわち、チャネル0において、良品ブロック容量はバンク番号3、バンク番号2,バンク番号1、バンク番号0の順に多くなり、チャネル1において、良品ブロック容量はバンク番号0、バンク番号1,バンク番号2、バンク番号3の順に多くなるので、良品チップの個数の多いものから少ないものへとなるようにチャネル0,1のバンクを選択している。すなわち、Bank#0をCH0のBank3とCH1のBank0との組み合わせとし、Bank#1をCH0のBank2とCH1のBank1との組み合わせとし、Bank#2をCH0のBank1とCH1のBank2との組み合わせとし、Bank#3をCH0のBank0とCH1のBank3との組み合わせとしている。
【0064】
この結果、図17の場合は、Bank#0に関しては、チャネル並列可能なブロック容量は5000KBで、Bank#1に関しては、チャネル並列可能なブロック容量は6000KBとなり、図16の場合と同じであるが、Bank#2に関しては、チャネル並列可能なブロック容量は7000KBで、Bank#3に関しては、チャネル並列可能なブロック容量は8000KBとなり、図16の場合と比較して、計4000KBだけチャネル並列可能なブロック容量が増加している。
【0065】
つぎに、プロセッサ104で行われるアクセス情報の設定について説明する。まず、プロセッサ104が管理する管理情報には、図14に示したようなチップ不良箇所及びチップ内ブロック故障箇所を特定可能な不良位置テーブルが含まれている。このような不良位置テーブルには、不良チップ及び不良ブロックを特定する情報が製品出荷前に予め登録されている。
【0066】
プロセッサ104は、不良位置テーブルの登録内容に基づき、不良メモリチップ及び不良ブロックを使用せずに各レーン内において並列アクセス可能なブロックが最大数となるように、図14、図15、図17に示したように、論理バンクを構成する複数の物理バンクBank0〜3の組み合わせを示す論物バンク情報を決定する。最大数を確保する手法としては、例えば、図17に示したように、良品ブロックの個数の多いものから少ないものへとなるように、あるいは良品ブロックの個数の少ないものから多いものへとなるように、並列駆動するチャネル0,1のバンクを順次選択する手法がある。
【0067】
決定された論理バンクと物理バンクとの対応関係を示す論物バンク情報は、管理情報として記憶登録され、新たな不良チップが発生するまでは、この論物バンク情報を用いて図6に示したアクセス情報が形成される。
【0068】
また、製品出荷後に後発的に発生した不良ブロックもプロセッサ104によって検出される。例えば、チップ内の全ブロックが不良ブロックとなった場合、あるいはチップ内での閾値以上の不良ブロックが発生した場合に、後発的な不良チップが発生したと判断する。また、閾値未満の不良ブロックが発生したチップについては、チップ不良とはせずに、後発的な不良ブロックが良品チップに発生したと判断する。そして、プロセッサ104は、後発的な不良チップが発生した場合、その不良チップ情報を不良位置テーブルに追加登録する。さらに、良品チップに後発的な不良ブロックが発生した場合は、この不良ブロック情報を不良位置テーブルに追加登録する。
【0069】
また、不良チップが新たに発生した場合、あるいは不良ブロックが新たに発生した場合、プロセッサ104は、更新された不良位置テーブルの登録内容に基づき、前述と同様、不良メモリチップ及び不良ブロックを使用せずに各レーン内において並列アクセス可能なブロックが最大数となるように再組み替えを行って、論理バンクと物理バンクとの対応関係を示す論物バンク情報を再度決定する。再決定された論理バンクと物理バンクとの対応関係を示す論物バンク情報は、管理情報として記憶登録され、新たな不良チップあるいは不良ブロックが発生するまでは、この論物バンク情報を用いて図6に示したアクセス情報が形成される。
【0070】
このように第2の実施形態においては、更新される不良チップ情報及び不良ブロック情報に基づき、各レーン内において並列アクセス可能なブロック数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に決定するようにしたので、不良チップあるいは不良ブロックが発生した場合でも、並列駆動可能な組み合わせブロック数を最大限確保可能なメモリシステムを提供することができる。
【0071】
なお、第2の実施形態において、不良チップが発生していない状況下、あるいは1バンクを1メモリチップで構成する場合は、プロセッサ104は、図17に示したように、不良ブロックを使用せずに各レーン内において並列アクセス可能なブロック数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に決定し、この論物バンク情報に基づいてアクセス情報を設定する。
【0072】
なお、第1、第2の実施形態においては、プロセッサ104(ファームウエア)が、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に決定し、この論物バンク情報に基づいてアクセス情報を設定するようにしたが、NANDコントローラ110に、論物バンク情報を動的に決定し、この論物バンク情報に基づいてアクセス情報を設定する機能を搭載するようにしてもよい。
【0073】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0074】
1 ホスト、2 ATAインタフェース、4 ドライブ制御回路、10 NANDフラッシュ、10a〜10d チャネル並列動作要素、20 RAM、31a,31b ECC回路、33a レーン0コントローラ、33b レーン1コントローラ、34a CH0アクセス情報設定レジスタ、32a,32b NANDI/F 35a CH1アクセス情報設定レジスタ、36a,36b 動作許可レジスタ、37a,37b I/Fコントローラ、38a,38b コントローラ、104 プロセッサ、110 NANDコントローラ、110a レーン0用NANDコントローラ、 110b レーン1用NANDコントローラ。
【技術分野】
【0001】
本発明の実施形態は、不揮発性半導体メモリを備えるメモリシステムに関する。
【背景技術】
【0002】
近年のフラッシュメモリのパッケージは複数のメモリチップをスタックして構成されることが多くなっている。SSD(Solid State Drive)に代表されるように、フラッシュメモリを使用して大容量のストレージデバイスを構成する際には、このようなパッケージを更に複数使用することにより構成することが多い。
【0003】
例えば、8スタックされたパッケージを8個使用してSSDを構成した場合、64チップで1システムを構成することとなり、単一チップの不良率を0.1%とした場合でも、システムとしての不良率約6%程度となり、単一チップの不良率に対してシステムとしての不良率は大きなものなる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2009−266125号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の一つの実施形態は、不良チップあるいは不良ブロックが発生した場合でも、並列駆動可能な組み合わせ数を最大限確保可能なメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の一つの実施形態によれば、不揮発性半導体メモリは、並列動作可能なチャネル並列動作要素を複数個有し、各チャネル並列動作要素はバンクインタリーブ可能な複数の物理バンクを有し、各物理バンクは複数のメモリチップを有し、各メモリチップはデータ消去の単位である物理ブロックを複数個有する。メモリコントローラは、複数個備えられ、複数のチャネル並列動作要素から構成されるレーンに対応して1つ割り当てられる。メモリコントローラは、物理バンク単位に個別接続され、1つの物理バンク内の複数のメモリチップに共通接続される複数のチップイネーブル信号によって物理バンクの選択を行うことによってレーン内の複数のチャネル並列動作要素に含まれる各物理バンク内のメモリチップを並列駆動する。コントローラは、各物理バンク内の不良メモリチップが識別可能な不良メモリチップ情報に基づき、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に設定する。各メモリコントローラは、コントローラが設定した論物バンク情報に基づいてチップイネーブル信号を駆動制御する。
【図面の簡単な説明】
【0007】
【図1】図1は、SSDの構成例を示すブロック図である。
【図2】図2は、1レーン内のNANDフラッシュの構成例を示すブロック図である。
【図3】図3は、1チャネルのNANDフラッシュの内部構成例を示す図である。
【図4】図4は、NANDコントローラの内部構成例を示すブロック図である。
【図5】図5は、CH構成でのECC符号のデータ配置例とレーン構成でのECC符号のデータ配置例を示す図である。
【図6】図6は、各チャネルのNANDフラッシュに対するアクセス情報の構成例を示す図である。
【図7】図7は、1レーン内でのNANDフラッシュに対するアクセス動作手順例を示すフローチャートである。
【図8】図8は、同じバンク番号を持つバンクからチャネル並列動作を行わせるチップを選択する場合にチップ故障がある場合のチップ選択例を示す図である。
【図9】図9は、チップ故障がある場合に第1の実施形態の手法を用いた場合のチップ選択例を示す図である。
【図10】図10は、同じバンク番号を持つバンクからチャネル並列動作を行わせるチップを選択する場合にチップ故障がある場合のチップ選択例を示す図である。
【図11】図11は、図10のチップ選択を行う場合のアクセス情報などを示す図である。
【図12】図12は、チップ故障がある場合に第1の実施形態の手法を用いた場合のチップ選択例を示す図である。
【図13】図13は、図12のチップ選択を行う場合のアクセス情報などを示す図である。
【図14】図14は、チップ故障及びブロック故障がある場合に第2の実施形態の手法を用いた場合のチップ選択例を示す図である。
【図15】図15は、図14のチップ選択を行う場合のアクセス情報などを示す図である。
【図16】図16は、同じバンク番号を持つバンクからチャネル並列動作を行わせるブロックを選択する場合にブロック故障がある場合のチャネル並列可能なブロック容量を示す図である。
【図17】図17は、ブロック故障がある場合に第2の実施形態の手法を用いた場合のチャネル並列可能なブロック容量を示す図である。
【発明を実施するための形態】
【0008】
SSD(Solid State Drive)では、複数のチャネルによって複数のフラッシュメモリを並列接続し、複数のフラッシュメモリを並列駆動することで、高速アクセスを可能にしている。また、SSDでは、各チャネルのフラッシュメモリをバンクインタリーブ可能な複数のバンクで構成し、チャネル並列動作に加えバンクインタリーブを行うことで更なる高速アクセスを可能にしている。
【0009】
各チャネルのフラッシュメモリにおいて、各バンクは複数のメモリチップで構成され、各メモリチップはデータ消去の単位である物理ブロックを複数配列して構成される。このようなSSDにおいては、並列駆動される各チャネルの物理ブロックを組み合わせて論理ブロックと呼ばれる仮想的なブロックを構成し、論理ブロック単位のアクセスを可能としている。
【0010】
このように複数のチャネルから1つの物理ブロックを夫々選択することで論理ブロックを構成する場合、同一のバンク番号を持つ物理ブロックによって論理ブロックを構成するという制約を設けることで、論理ブロックの管理を容易にするとともに論理ブロックを構成する物理ブロックの個数の変化への対応を容易化させるという手法が採用される場合がある。
【0011】
一方、SSDでは、チャネル毎に1つのメモリコントローラを配し、1つのメモリコントローラで1つのチャネルのフラッシュメモリを駆動制御するのが一般的である。メモリコントローラが行う機能としては、接続されるチャネルのフラッシュメモリの駆動処理、誤り訂正処理(ECC処理)、バンクインタリーブ処理などがあり、これらの処理を上位コントローラの制御下で実行している。
【0012】
しかし、各チャネルに1つのメモリコントローラを配する場合、チャネル数の増加や誤り訂正処理の複雑化などに伴いメモリコントローラのゲート規模が増大する。そこで、複数のチャネルのフラシュメモリに1つのメモリコントローラを配し、1つのメモリコントローラで複数のチャネルのフラッシュメモリを並列駆動することが考えられている。1つのメモリコントローラに接続される複数チャネルを本明細書ではレーン(Lane)と呼ぶ。このレーンを利用した構成では、例えば、誤り訂正処理を複数のチャネルで共用化することができ、ゲート規模を縮小することが可能である。
【0013】
しかしながら、同一のバンク番号を持つ物理ブロックによって論理ブロックを構成するという制約を各レーンに適用した場合、不良チップあるいは不良ブロックが存在する場合、各レーンにおいて使用可能な物理ブロックを有効利用できず、使用可能な物理ブロックの組み合わせ容量が少なくなるという問題がある(図8参照)。
【0014】
そこで、本実施形態では、レーン内部では、同一のバンク番号を持つ物理ブロックによって論理ブロックを構成するという制約を無くし、不良チップあるいは不良ブロックが存在する場合、使用可能な物理ブロックを有効利用し、使用可能な物理ブロックの組み合わせ容量を最大限確保できるようにする(図9参照)。すなわち、本実施形態では、レーン内において、複数の物理バンクから構成される仮想的な論理バンクという概念を導入し、不良メモリチップ情報に基づき、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを動的に設定可能とする。なお、レーン間で、論理バンクをどのように組み合わせるかについては、本実施形態では言及しない。
【0015】
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【0016】
(第1の実施形態)
図1は、メモリシステムとしてのSSD100の構成例を示すブロック図である。SSD100は、コントローラとしてのドライブ制御回路4と、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDフラッシュと略す)10と、ランダムアクセス可能な半導体メモリとしてのRAM20と、ATAインタフェース(ATA I/F)2などのメモリ接続インタフェースなどを備えている。SSD100は、ATA I/F2を介してパーソナルコンピュータあるいはCPUコアなどのホスト装置(以下、ホストと略す)1と接続され、ホスト1の外部メモリとして機能する。
【0017】
NANDフラッシュ10は、ホスト1によって指定されたユーザデータを記憶したり、RAM20で管理される管理情報をバックアップ用に記憶したりする。NANDフラッシュ10は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページ及び下位ページを使用して多値記憶が可能である。NANDフラッシュ10は、複数のメモリチップによって構成され、各メモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、NANDフラッシュ10では、物理ページごとにデータの書き込み及びデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。図1では、NANDフラッシュ10は、4チャネル(4ch:CH0〜CH3)を介して、ドライブ制御回路4内部のNANDコントローラ110に並列接続されており、4つのチャネル並列動作要素10a〜10dを並列動作させることが可能である。チャネル数は4つに限らず、任意のチャネル数を採用可能である。
【0018】
RAM20としては、例えば揮発性半導体メモリを採用する。RAM20として、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase Change Random Access Memory)などを採用することができる。RAM20は、データ転送用、管理情報記録用または作業領域用の記憶部として使用される。具体的には、データ転送用の記憶部(データ転送用キャッシュ)としては、ホスト1から書込要求があったデータをNANDフラッシュ10に書込む前に一時的に保存したり、ホスト1から読出要求があったデータをNANDフラッシュ10から読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、NANDフラッシュ10に記憶されるデータの格納位置などを管理するための管理情報(NANDフラッシュ10に記憶されている各種管理テーブルが起動時などに展開されたマスターテーブル、管理テーブルの変更差分情報であるログなど)を格納するために使用される。
【0019】
ドライブ制御回路4は、ホスト1とNANDフラッシュ10との間でRAM20を介してデータ転送制御を行うとともに、SSD100内の各構成要素を制御する。
【0020】
ドライブ制御回路4は、データアクセス用バス101、回路制御用バス102を備えている。回路制御用バス102には、ドライブ制御回路4全体を制御するプロセッサ104が接続されている。回路制御用バス102には、NANDフラッシュ10に記憶された各管理プログラム(FW:ファームウエア)をブートするブート用プログラムが格納されたブートROM105がROMコントローラ106を介して接続されている。
【0021】
ATAインタフェースコントローラ(ATAコントローラ)111、NANDコントローラ110、及びRAMコントローラ114は、データアクセス用バス101と回路制御用バス102との両方に接続されている。ATAコントローラ111は、ATAインタフェース2を介してホスト1との間でデータを送受信する。データアクセス用バス101には、データ作業領域及びファームウェア展開領域として使用されるSRAM115がSRAMコントローラ116を介して接続されている。NANDフラッシュ10に記憶されているファームウェアは起動時、ブートROM105に記憶されたブート用プログラムによってSRAM115に転送される。プロセッサ104は、SRAM115に転送されたファームウェアを実行することで、SSD100内での最上位のコントローラとして動作し、ドライブ制御回路4内の構成要素を制御する。
【0022】
RAMコントローラ114は、プロセッサ104とRAM20とのインタフェース処理、ATA I/F2−RAM20間のデータ転送制御、NANDフラッシュ10−RAM20間のデータ転送制御などを実行する。NANDコントローラ110は、プロセッサ104とNANDフラッシュ10とのインタフェース処理、NANDフラッシュ10−RAM20間のデータ転送制御、誤り訂正符号のエンコード/デコード処理などを実行する。
【0023】
図2は、NANDフラッシュ10の内部構成例を示すものである。図2では、チャネル0(CH0)のチャネル並列動作要素10a、チャネル1(CH1)のチャネル並列動作要素10bを示している。図示を省略したチャネル2(CH2)のチャネル並列動作要素10c、チャネル3(CH3)のチャネル並列動作要素10dも同様の構成を有している。各チャネル並列動作要素10a〜10dは、バンクインターリーブが可能な複数の物理バンク(図2では4バンク、Bank0〜Bank3)によって構成されており、各々の物理バンクは、複数のメモリチップ(図2では、4メモリチップ、Chip0〜Chip3)によって構成されている。なお、バンク番号を示すBank0〜3は、NANDフラッシュ10上での物理的な位置を示す物理バンク番号を示している。バンクインタリーブとは、あるバンクのデータにアクセスしている遅延時間の最中に、すなわちあるバンクのレディビジー信号(RyBy)がビジー中に、次のバンクへアクセス要求を発行して時間を有効利用する手法である。
【0024】
図3は、チャネル0(CH0)のチャネル並列動作要素10a内のある1つのバンク(この場合bank0)の内部構成例を示すものである。図3に示すように、1つのバンク内の各メモリチップ(chip0〜chip3)は、例えば、それぞれ複数の物理ブロックで構成されている(図4では、便宜上、4個の物理ブロックBlk0〜Blk3を示した)。
【0025】
図4は、NANDコントローラ110の内部構成例を示すものである。NANDコントローラ(NANDC)110は、レーン0のNANDフラッシュ10を駆動制御するレーン0用NANDコントローラ(NANDC−LN0)110aと、レーン1のNANDフラッシュ10を駆動制御するレーン1用NANDコントローラ(NANDC−LN0)110bとを有する。1つのレーン用NANDコントローラが駆動制御を行う複数のチャネルのことをレーンと呼称する。この実施形態では、4チャネルで構成されるNANDフラッシュ10を、レーン0(CH0及びCH1)とレーン1(CH2及びCH3)に分割し、レーン0のNANDフラッシュ10(チャネル並列動作要素10a及び10b)を一方のNANDC−LN0 110aによって駆動制御し、レーン1のNANDフラッシュ10(チャネル並列動作要素10c及び10d)を他方のNANDC−LN1 110bによって駆動制御することとする。すなわち、この実施の形態では、1レーンは2チャネルで構成される。
【0026】
レーン0用NANDコントローラ110aは、RAM20との間でDMA転送制御を行うDMAコントローラ(DMAC)30aと、誤り訂正回路(ECC回路)31aと、NANDI/F32aと、レーン0コントローラ33aとを備える。レーン0コントローラ33aは、CH0アクセス情報設定レジスタ34aと、CH1アクセス情報設定レジスタ35aと、動作許可レジスタ36aと、I/Fコントローラ37aと、コントローラ38aを有する。レーン1用NANDコントローラ110bも同様の構成を有し、DMAC30bと、ECC回路31bと、NANDI/F32bと、レーン1コントローラ33bとを備える。レーン1コントローラ33bも同様の構成を有し、CH2アクセス情報設定レジスタ34bと、CH3アクセス情報設定レジスタ35bと、動作許可レジスタ36bと、I/Fコントローラ37bと、コントローラ38bを有する。
【0027】
レーン0用NANDコントローラ110aのNAND/IF32aには、2チャネル(CH0、CH1)分の信号線が接続されている。すなわち、NAND/IF32aには、CH0のチャネル並列動作要素10aに接続されるコントロールI/O信号、チップイネーブル信号(CE00−03)及びレディビジー信号(RyBy00−03)と、CH1のチャネル並列動作要素10bに接続されるコントロールI/O信号、チップイネーブル信号(CE10−13)及びレディビジー信号(RyBy10−13)が接続されている。コントロールI/O信号は、CLE(コマンドラッチイネーブル)、ALE(アドレスラッチイネーブル)、WE(ライトイネーブル)、RE(リードイネーブル)、DQS(データストローブ信号)、I/O0〜I/O7(入出力端子)などを含む。同様に、レーン1用NANDコントローラ110bのNAND/IF32bには、2チャネル(CH2、CH3)分のコントロールI/O信号、チップイネーブル信号(CE20−23、CE30−33)及びレディビジー信号(RyBy20−23、RyBy30−33)が接続されている。
【0028】
図2では、レーン0コントローラ33aのNANDI/F32aと、CH0のチャネル並列動作要素10a及びCH1のチャネル並列動作要素10bとの信号線の接続をより詳細に示している。図2に示すように、各チャネルにおいて、コントロールI/O信号は、複数のバンク(Bank0〜Bank3)間で共有されているが、チップイネーブル信号CE0−3とレディビジー信号RyBy0−3は各バンクに個別に接続されている。すなわち、各チャネルにおいて、チップイネーブル信号CE0(CE00、CE10、CE20、CE30)はバンク番号0のバンク(Bank0)の各メモリチップに共通接続され、チップイネーブル信号CE1(CE01、CE11、CE21、CE31)はバンク番号1のバンク(Bank1)の各メモリチップに共通接続され、チップイネーブル信号CE2(CE02、CE12、CE22、CE32)はバンク番号2のバンク(Bank2)の各メモリチップに共通接続され、チップイネーブル信号CE3(CE03、CE13、CE23、CE33)はバンク番号3のバンク(Bank3)の各メモリチップに共通接続されており、複数のバンク(Bank0〜Bank3)を複数のチップイネーブル信号(CE0−3)でバンク毎に個別に制御する。このように、各チャネルにおいてバンク番号nの物理バンクを選択する際には、チップイネーブル信号CEnをアサートとするような手法をとっている。
【0029】
同様に、各チャネルにおいて、NANDフラッシュ10の各バンクからは、自身がビジー状態であるかレディ状態であるかを示すレディビジー信号RyBy0−3(RyBy00〜RyBy33)がNANDI/Fに入力されている。各チャネルの各バンクに含まれる複数のメモリチップのRyBy信号線は共通接続されている。
【0030】
レーン0用NANDコントローラ110aには、1つのECC回路31aが搭載され、1つのECC回路31aで2チャネル分のECC処理を実行する。図5に示すように、512Bのセクタデータ毎にECC符号を付加するものとする。図5(a)は、1チャネルに1つのECC回路を設ける場合のECC処理を示すもので、この場合は、CH0のNANDフラッシュ10に対してライトする512BのセクタデータにECC符号が付加され、またCH1のNANDフラッシュ10に対してライトする512BのセクタデータにECC符号が付加されている。図5(b)は、2チャネルに1つのECC回路を設ける場合のECC処理を示すもので、この場合は、CH0のNANDフラッシュ10に対してライトする256Bのデータと、CH1のNANDフラッシュ10に対してライトする256Bのデータとで1セクタデータを構成し、CH0及びCH1に分散された512Bの1セクタデータに対しECC符号が付加されている。ECC回路31aでは、図5(b)に示すようなECC処理を実行する。
【0031】
セクタデータのリードを考えた場合、図5(a)の場合は、1チャネルから512Bのセクタデータをリードする必要があるが、図5(b)の場合は、並列動作可能な2チャネルから256Bずつデータをリードすればよく、リード所要時間が半分になるという利点がある。また、2チャネルに1つのECC回路を設ければよいので、NANDコントローラ110のゲート規模が少なくなるという利点もある。
【0032】
つぎに、レーン0コントローラ33aについて説明する。レーン1コントローラ33bも同様の構成を有している。レーン0コントローラ33aのコントローラ38aには、回路制御用バス102を介して上位のプロセッサ104からNANDフラッシュ10のレーン0を駆動制御するための制御情報が入力される。コントローラ38aは、プロセッサ104から入力される制御情報に基づいてレーン0コントローラ33aの内部構成回路を制御する。プロセッサ104から入力される制御情報には、レーン0(チャネル0及びチャネル1)のNANDフラッシュ10にアクセスするためのアクセス情報が含まれる。
【0033】
CH0アクセス情報設定レジスタ34aには、プロセッサ104から入力されるCH0用のアクセス情報がコントローラ38aによって設定される。CH1アクセス情報設定レジスタ35aには、プロセッサ104から入力されるCH1用のアクセス情報がコントローラ38aによって設定される。CH0アクセス情報設定レジスタ34a及びCH1アクセス情報設定レジスタ35aはキュー構造を有しており、複数のアクセス情報を蓄積することが可能である。図6は、プロセッサ104から入力されるアクセス情報の一例を示すものである。チャネル0のアクセス情報には、バンク番号、チップ番号、ブロック番号及び命令(ライト、リード、消去など)が含まれる。同様に、チャネル1のアクセス情報には、バンク番号、チップ番号、ブロック番号及び命令(ライト、リード、消去など)が含まれる。
【0034】
CH0アクセス情報設定レジスタ34a及びCH1アクセス情報設定レジスタ35aに設定された各チャネルのアクセス情報は、コントローラ38aによって動作許可レジスタ36aにセットされる。コントローラ38aは、RyBy信号(RyBy00−03,RyBy10−13)などに基づいて、チャネル0及びチャネル1の並列動作が可能になったときに、各チャネルのアクセス情報を動作許可レジスタ36aにセットする。I/Fコントローラ37aは、コントローラ38aの制御の基で、動作許可レジスタ36aにセットされたチャネル0及びチャネル1用のアクセス情報に基づいてNANDI/F32aを駆動制御することで、アクセス情報に対応するコントロールI/O信号、チップイネーブル信号(CE0−3)を各チャネル0,1に出力させる。
【0035】
つぎに、図7に従ってレーン0コントローラ33aの動作手順を説明する。まず、コントローラ38aは、CH0アクセス情報設定レジスタ34a及びCH1アクセス情報設定レジスタ35aに、プロセッサ104から入力されるチャネル0用のアクセス情報及びチャネル1用のアクセス情報を設定する(ステップS100、S110)。コントローラ38aは、プロセッサ104からの制御情報及びRyBy信号(RyBy0−3)などに基づいて、チャネル0及びチャネル1の並列動作を許可してもよいか否かを判定し(ステップS120)、並列動作を許可してもよいと判定すると、CH0アクセス情報設定レジスタ34a及びCH1アクセス情報設定レジスタ35aに設定された各チャネルのアクセス情報を動作許可レジスタ36aにセットする。
【0036】
I/Fコントローラ37aは、コントローラ38aの制御の基で、動作許可レジスタ36aにセットされたチャネル0及びチャネル1用のアクセス情報に基づいてNANDI/F32aを駆動制御することで、アクセス情報に対応するコントロールI/O信号、チップイネーブル信号(CE0−3)を各チャネル0,1に出力させる。これにより、アクセス情報に対応するチャネル0、1のNANDフラッシュ10の各ブロックのデータに対するアクセスが行われる(ステップS130)。コントローラ38aは、このアクセスが終了したか否かをRyBy信号などに基づいて判定し(ステップS140)、アクセスが終了した場合は、CH0アクセス情報設定レジスタ34a及びCH1アクセス情報設定レジスタ35aに未処理命令が残っているか否かを判定し(ステップS150)、未処理命令が残っている場合は、上記の処理を繰り返す。未処理命令がなくなると、処理を終了する。
【0037】
前述したように、プロセッサ104は、CH0アクセス情報設定レジスタ34a及びCH1アクセス情報設定レジスタ35aに設定されるアクセス情報をNANDコントローラ110に出力する動作を行う。プロセッサ104は、不良チップ情報に基づいて、不良チップが発生している場合でも、各レーン内において、できるだけ多くの良品チップを使用したチャネル並列及びバンクインタリーブを行うことができるようなチャネル間のバンクの組み合わせ(バンク番号の組み合わせ)を含むアクセス情報をNANDコントローラ110に出力する。プロセッサ104は、物理バンク内の不良チップが識別可能な不良チップ情報に基づき、不良チップを使用せずに各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクBank0〜3の組み合わせを示す論物バンク情報を動的に設定する。設定された論物バンク情報に基づいて図6に示したアクセス情報が形成される。論理バンクとは、後で説明するが、複数の物理バンクの組み合わせによって形成される仮想的なバンクのことをいう。
【0038】
不良チップがどのメモリチップで発生しているかを示す不良チップ情報が、製品出荷時に管理情報としてNANDフラッシュ10に登録されている。また、製品出荷後に後発的に発生した不良チップ(例えば、不良ブロックが所定の閾値以上発生したチップ)もプロセッサ104によって検出され、後発的に発生した不良チップ情報も管理情報として更新追加される。プロセッサ104は、このような不良チップ情報に基づき、並列アクセス可能な組み合わせ数を最大限確保可能な物理バンクBank0〜3の組み合わせを動的に設定する。その詳細については後述する。
【0039】
つぎに、図8及び図9を用いてレーン内におけるチャネル間でのバンクの組み合わせについて説明する。図8では、同じバンク番号を持つチップからチャネル並列動作を行わせるチップを選択するという規約を有する場合を示している。一方、図9では、チャネル並列動作を行わせるチップの組み合わせを、同じバンク番号をもつチップとは規定せず、チャネル並列に使用されるチップ数を出来るだけ多く確保可能なバンク番号の組み合わせを選択している。図8、図9において、上方に存在する「#」が付されたバンク番号であるBank#0〜Bank#3は、前述した仮想的な論理バンクの番号を示している。
【0040】
図8及び図9では、白抜きが良品チップを示し、ハッチング付きが不良チップを示している。図8及び図9で、不良チップの発生状況は同じである。図8及び図9では、チャネル0のNANDフラッシュ10においては、バンク番号0の4チップから3つの不良チップが発生し、バンク番号1の4チップから2つの不良チップが発生し、バンク番号2の4チップから1つの不良チップが発生し、バンク番号3の4チップからは不良チップが発生していない。チャネル1のNANDフラッシュ10においては、バンク番号0の4チップからは不良チップが発生しておらず、バンク番号1の4チップから1つの不良チップが発生し、バンク番号2の4チップから2つの不良チップが発生し、バンク番号3の4チップからは3つの不良チップが発生している。
【0041】
図8の場合は、チャネル間で同じバンク番号を持つチップを選択するので、論理バンク番号(Bank#0〜#3)と物理バンク番号(Bank0〜3)は一致している。すなわち、チャネル0のチップイネーブル信号CE00をチャネル0のバンク番号0の4チップに接続し、チャネル1のチップイネーブル信号CE10をチャネル1のバンク番号0の4チップに接続している。同様に、チャネル0のチップイネーブル信号CE01をチャネル0のバンク番号1の4チップに接続し、チャネル1のチップイネーブル信号CE11をチャネル1のバンク番号1の4チップに接続し、…、チャネル0のチップイネーブル信号CE03をチャネル0のバンク番号3の4チップに接続し、チャネル1のチップイネーブル信号CE13をチャネル1のバンク番号3の4チップに接続している。
【0042】
図8の場合は、Bank#0に関しては、CH0のBank0の良品チップ数が1で、CH1のBank0の良品チップ数が4であるので、1スタック(1チップずつ)しかチャネル並列動作を行わすことができない。また、Bank#1に関しては、チャネル並列可能数は2スタックであり、Bank#2に関しては、チャネル並列可能数は2スタックであり、Bank#3に関しては、チャネル並列可能数は1スタックである。したがって、図8の場合の、チャネル並列可能数の合計は、6スタックである。
【0043】
一方、図9では、前述したように、チャネル並列動作を行わせるチップの組み合わせを、同じバンク番号をもつチップとは規定せず、チャネル並列に使用されるチップ数を出来るだけ多く確保可能なバンク番号の組み合わせを選択している。したがって、論理バンク番号(Bank#0〜#3)と物理バンク番号(Bank0〜3)は一致していない場合もある。すなわち、チャネル0において、良品チップの個数はバンク番号3、バンク番号2,バンク番号1、バンク番号0の順に少なくなり、チャネル1において、良品チップの個数はバンク番号0、バンク番号1,バンク番号2、バンク番号3の順に少なくなるので、良品チップの個数の多いものから少ないものへとなるようにチャネル0,1のバンクを選択している。すなわち、Bank#0をCH0のBank3とCH1のBank0との組み合わせとし、Bank#1をCH0のBank2とCH1のBank1との組み合わせとし、Bank#2をCH0のBank1とCH1のBank2との組み合わせとし、Bank#3をCH0のBank0とCH1のBank3との組み合わせとしている。この結果、Bank#0のチャネル並列可能数は4スタックであり、Bank#1のチャネル並列可能数は3スタックであり、Bank#2のチャネル並列可能数は2スタックであり、Bank#3のチャネル並列可能数は1スタックであり、図9の場合のチャネル並列可能数は10スタックとなり、図8に比べ4スタック増加する。
【0044】
図10は、レーンをCH0及びCH1の2チャネルで構成し、1チャネルを2バンクで構成し、1バンクを4チップで構成し、1チップを4ブロックで構成した場合に、各ブロックに書き込むデータ例を示すものである。同じデータ名(a0,b0など)を有する「x」、「y」の組(例えば、a0−xとa0−y)で並列動作を行うとする。図11は、図10に示すデータを書き込む場合のチャネル並列動作及びバンクインタリーブ動作を示している。このような構成において、図10に示すように、チャネル0のバンク0のチップ2と、チャネル1のバンク1のチップ2と、チャネル1のバンク1のチップ3に、チップ不良が発生したとする。
【0045】
図10及び図11では、図8と同様、CH0及びCH1において、同一のバンク番号を選択して、チャネル並列動作を行わせた場合を示している。同一のバンク番号を選択するという制約を設けた場合、チップ不良が発生したチップと同一バンク番号を持つ他方チャネルのチップは不使用となるので、図11に示すように、チャネル並列書き込みの合計ブロック数は20ブロックとなる。
【0046】
図12は、同一のバンク番号を選択して、チャネル並列動作を行わせるという制約をなくし、不使用チップをできるだけ少なくするという方針に基づく場合の各ブロックに書き込むデータ例を示すものである。図13は、図12に示すデータを書き込む場合のチャネル並列動作及びバンクインタリーブ動作を示している。図12、図13では、同一のバンク番号、同一のチップ番号を選択して、チャネル並列動作を行わせる組み合わせを選択した後、不良チップの影響で余っていた良品チップが組になるようにバンク番号、チップ番号を選択している。したがって、この例では、図13に示すように、書き込みブロック数が21個目になる書き込み動作から24個目になる書き込み動作を追加することができる。21個目〜24個目の書き込み動作では、バンク番号が異なるチップの組み合わせを行っている。すなわち、チャネル0のバンク1のチップ2と、チャネル1のバンク0のチップ2とでチャネル並列及びバンクインタリーブを行わせており、チャネル並列書き込みの合計ブロック数は24ブロックに増加している。
【0047】
図11、図13に示したBank番号、Chip番号、Block番号は、プロセッサ104がNANDコントローラ110の例えばレーン0コントローラ33aに対し出力するアクセス情報の内容の一部を示している。すなわち、図11、図13に示したBank番号、Chip番号、Block番号は、図6に示したアクセス情報の内容の具体例を示している。
【0048】
例えば、図13の22個目の書き込み動作を例にとって、レーン0用NANDコントローラ110aの動作を説明する。
【0049】
(22個目の書き込み動作)
CH0アクセス情報設定レジスタ34aには、Bank番号=1,Chip番号=2,Block番号=1がセットされ、CH1アクセス情報設定レジスタ35aには、Bank番号=0,Chip番号=2,Block番号=1がセットされ、その後、これらのセットデータが動作許可レジスタ36aにセットされる。I/Fコントローラ37aは、動作許可レジスタ36aのセット内容に基づき、NANDI/F32aを制御する。これにより、CH0のBank番号=1に対応するチップイネーブル信号CE01がアサートされ、CH1のBank番号=0に対応するチップイネーブル信号CE10がアサートされ、異なるバンク番号を持つブロックのチャネル並列駆動が行われる。
【0050】
つぎに、プロセッサ104で行われるアクセス情報の設定について説明する。まず、プロセッサ104が管理する管理情報には、図12に示したようなチップ不良箇所を特定可能な不良チップテーブルが含まれている。このような不良チップテーブルには、不良チップを特定する情報が製品出荷前に予め登録されている。
【0051】
プロセッサ104は、不良チップテーブルの登録内容に基づき、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップが最大数となるように、図9、図12、図13に示したように、論理バンクを構成する複数の物理バンクBank0〜3の組み合わせを示す論物バンク情報を決定する。最大数を確保する手法としては、例えば、図9に示したように、良品チップの個数の多いものから少ないものへとなるように、あるいは良品チップの個数の少ないものから多いものへとなるように、並列駆動するチャネル0,1のバンクを順次選択する手法がある。
【0052】
決定された論理バンクと物理バンクとの対応関係を示す論物バンク情報は、管理情報としてNANDフラッシュ10およびRAM20に記憶登録され、新たな不良チップが発生するまでは、この論物バンク情報を用いて図6に示したアクセス情報が形成される。
【0053】
また、製品出荷後に後発的に発生した不良チップもプロセッサ104によって検出される。例えば、チップ内の全ブロックが不良ブロックとなった場合、あるいはチップ内での閾値以上の不良ブロックが発生した場合に、後発的な不良チップが発生したと判断する。そして、プロセッサ104は、後発的な不良チップが発生した場合、その不良チップ情報を不良チップテーブルに追加登録する。
【0054】
また、不良チップが新たに発生した場合、プロセッサ104は、更新された不良チップテーブルの登録内容に基づき、前述と同様、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップが最大数となるように再組み替えを行って、論理バンクと物理バンクとの対応関係を示す論物バンク情報を再度決定する。再決定された論理バンクと物理バンクとの対応関係を示す論物バンク情報は、管理情報として記憶登録され、新たな不良チップが発生するまでは、この論物バンク情報を用いて図6に示したアクセス情報が形成される。
【0055】
このように第1の実施形態においては、更新される不良チップ情報に基づき、各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に決定するようにしたので、不良チップが発生した場合でも、並列駆動可能な組み合わせチップ数を最大限確保可能なメモリシステムを提供することができる。
【0056】
(第2の実施形態)
第2の実施形態では、ブロック不良が発生した場合にも、不良ブロックを使用せずに各レーン内において並列アクセス可能なブロック数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを動的に決定するようにしている。
【0057】
図14は、図12に示したチップ不良への対処に対し、ブロック不良への対処をさらに追加した例を示すものである。図15は、図14に示すデータを書き込む場合のチャネル並列動作及びバンクインタリーブ動作を示している。図14の場合は、チャネル0のバンク0のチップ2におけるブロック0及びブロック1と、チャネル0のバンク1のチップ3と、チャネル1のバンク1のチップ2におけるブロック0及びブロック1と、チャネル1のバンク1のチップ3に、チップ不良が発生したとしている。図14、図15では、同一のバンク番号、同一のチップ番号を選択して、チャネル並列動作を行わせる組み合わせを選択した後、不良チップの影響で余っていた良品チップが組になるようにバンク番号、チップ番号を選択し、さらにこの後、不良ブロックの影響で余っていた良品ブロックが組になるようバンク番号、チップ番号及びブロック番号を選択している。したがって、この例では、書き込みブロック数が25個目になる書き込み動作から26個目になる書き込み動作を追加することができる。25個目〜26個目の書き込み動作では、バンク番号が異なるチップ内ブロックの組み合わせを行っている。すなわち、チャネル0のバンク0のチップ2のブロック2と、チャネル1のバンク1のチップ2のブロック2とでチャネル並列を行わせ、またチャネル0のバンク0のチップ2のブロック3と、チャネル1のバンク1のチップ2のブロック3とでチャネル並列を行わせており、チャネル並列書き込みの合計ブロック数は26ブロックに増加している。
【0058】
なお、図14、15の場合は、25個目〜26個目の書き込み動作において、バンク番号は異なるがチップ番号が同じブロックをチャネル並列動作の組としたが、バンク番号及びチップ番号が異なるブロックをチャネル並列動作の組としてもよい。
【0059】
図15の26個目の書き込み動作を例にとって、レーン0用NANDコントローラ110aの動作を説明する。
(26個目の書き込み動作)
CH0アクセス情報設定レジスタ34aには、Bank番号=0,Chip番号=2,Block番号=3がセットされ、CH1アクセス情報設定レジスタ35aには、Bank番号=1,Chip番号=2,Block番号=3がセットされ、その後、これらのセットデータが動作許可レジスタ36aにセットされる。I/Fコントローラ37aは、動作許可レジスタ36aのセット内容に基づき、NANDI/F32aを制御する。これにより、CH0のBank番号=0に対応するチップイネーブル信号CE00がアサートされ、CH1のBank番号=1に対応するチップイネーブル信号CE11がアサートされ、異なるバンク番号内のブロックのチャネル並列駆動が行われる。
【0060】
図16及び図17は、図14及び図15に示した動作例と同様、ブロック不良への対応例を示すものである。図16及び図17では、各バンクが1チップで構成されている場合を示している。図16及び図17では、図14,図15と同様、1つのレーン内の2チャネル(CH0、CH1)を示している。図16では、同じバンク番号を持つブロックからチャネル並列動作を行わせるチップを選択するという規約を有する場合を示している。一方、図17では、チャネル並列動作を行わせるブロックの組み合わせを、同じバンク番号をもつブロックとは規定せず、チャネル並列に使用されるブロック数を出来るだけ多く確保可能なバンク番号の組み合わせを選択している。
【0061】
図16及び図17では、白抜き部分が良品ブロックを示し、ハッチング部分が不良ブロックを示している。図16及び図17で、不良チップの発生状況は同じである。1つのバンクの1チップの記憶容量が8000KBであるとする。図16及び図17では、チャネル0のNANDフラッシュ10においては、バンク番号0では不良ブロックが発生しておらず、バンク番号1では1000KBの不良ブロックが発生し、バンク番号2では2000KBの不良ブロックが発生し、バンク番号3では3000KBの不良ブロックが発生している。また、チャネル1のNANDフラッシュ10においては、バンク番号0では3000KBの不良ブロックが発生し、バンク番号1では2000KBの不良ブロックが発生し、バンク番号2は1000KBの不良ブロックが発生し、バンク番号3では不良ブロックが発生していない。
【0062】
図16の場合は、Bank#0に関しては、チャネル並列可能なブロック容量は5000KBで、Bank#1に関しては、チャネル並列可能なブロック容量は6000KBで、Bank#2に関しては、チャネル並列可能なブロック容量は6000KBで、Bank#3に関しては、チャネル並列可能なブロック容量は5000KBである。これらの合計ブロック容量は、22000KBである。
【0063】
これに対し、図17では、チャネル並列動作を行わせるブロックの組み合わせを、同じバンク番号をもつブロックとは規定せず、チャネル並列に使用されるブロック数を出来るだけ多く確保可能なバンク番号の組み合わせを選択している。すなわち、チャネル0において、良品ブロック容量はバンク番号3、バンク番号2,バンク番号1、バンク番号0の順に多くなり、チャネル1において、良品ブロック容量はバンク番号0、バンク番号1,バンク番号2、バンク番号3の順に多くなるので、良品チップの個数の多いものから少ないものへとなるようにチャネル0,1のバンクを選択している。すなわち、Bank#0をCH0のBank3とCH1のBank0との組み合わせとし、Bank#1をCH0のBank2とCH1のBank1との組み合わせとし、Bank#2をCH0のBank1とCH1のBank2との組み合わせとし、Bank#3をCH0のBank0とCH1のBank3との組み合わせとしている。
【0064】
この結果、図17の場合は、Bank#0に関しては、チャネル並列可能なブロック容量は5000KBで、Bank#1に関しては、チャネル並列可能なブロック容量は6000KBとなり、図16の場合と同じであるが、Bank#2に関しては、チャネル並列可能なブロック容量は7000KBで、Bank#3に関しては、チャネル並列可能なブロック容量は8000KBとなり、図16の場合と比較して、計4000KBだけチャネル並列可能なブロック容量が増加している。
【0065】
つぎに、プロセッサ104で行われるアクセス情報の設定について説明する。まず、プロセッサ104が管理する管理情報には、図14に示したようなチップ不良箇所及びチップ内ブロック故障箇所を特定可能な不良位置テーブルが含まれている。このような不良位置テーブルには、不良チップ及び不良ブロックを特定する情報が製品出荷前に予め登録されている。
【0066】
プロセッサ104は、不良位置テーブルの登録内容に基づき、不良メモリチップ及び不良ブロックを使用せずに各レーン内において並列アクセス可能なブロックが最大数となるように、図14、図15、図17に示したように、論理バンクを構成する複数の物理バンクBank0〜3の組み合わせを示す論物バンク情報を決定する。最大数を確保する手法としては、例えば、図17に示したように、良品ブロックの個数の多いものから少ないものへとなるように、あるいは良品ブロックの個数の少ないものから多いものへとなるように、並列駆動するチャネル0,1のバンクを順次選択する手法がある。
【0067】
決定された論理バンクと物理バンクとの対応関係を示す論物バンク情報は、管理情報として記憶登録され、新たな不良チップが発生するまでは、この論物バンク情報を用いて図6に示したアクセス情報が形成される。
【0068】
また、製品出荷後に後発的に発生した不良ブロックもプロセッサ104によって検出される。例えば、チップ内の全ブロックが不良ブロックとなった場合、あるいはチップ内での閾値以上の不良ブロックが発生した場合に、後発的な不良チップが発生したと判断する。また、閾値未満の不良ブロックが発生したチップについては、チップ不良とはせずに、後発的な不良ブロックが良品チップに発生したと判断する。そして、プロセッサ104は、後発的な不良チップが発生した場合、その不良チップ情報を不良位置テーブルに追加登録する。さらに、良品チップに後発的な不良ブロックが発生した場合は、この不良ブロック情報を不良位置テーブルに追加登録する。
【0069】
また、不良チップが新たに発生した場合、あるいは不良ブロックが新たに発生した場合、プロセッサ104は、更新された不良位置テーブルの登録内容に基づき、前述と同様、不良メモリチップ及び不良ブロックを使用せずに各レーン内において並列アクセス可能なブロックが最大数となるように再組み替えを行って、論理バンクと物理バンクとの対応関係を示す論物バンク情報を再度決定する。再決定された論理バンクと物理バンクとの対応関係を示す論物バンク情報は、管理情報として記憶登録され、新たな不良チップあるいは不良ブロックが発生するまでは、この論物バンク情報を用いて図6に示したアクセス情報が形成される。
【0070】
このように第2の実施形態においては、更新される不良チップ情報及び不良ブロック情報に基づき、各レーン内において並列アクセス可能なブロック数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に決定するようにしたので、不良チップあるいは不良ブロックが発生した場合でも、並列駆動可能な組み合わせブロック数を最大限確保可能なメモリシステムを提供することができる。
【0071】
なお、第2の実施形態において、不良チップが発生していない状況下、あるいは1バンクを1メモリチップで構成する場合は、プロセッサ104は、図17に示したように、不良ブロックを使用せずに各レーン内において並列アクセス可能なブロック数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に決定し、この論物バンク情報に基づいてアクセス情報を設定する。
【0072】
なお、第1、第2の実施形態においては、プロセッサ104(ファームウエア)が、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に決定し、この論物バンク情報に基づいてアクセス情報を設定するようにしたが、NANDコントローラ110に、論物バンク情報を動的に決定し、この論物バンク情報に基づいてアクセス情報を設定する機能を搭載するようにしてもよい。
【0073】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0074】
1 ホスト、2 ATAインタフェース、4 ドライブ制御回路、10 NANDフラッシュ、10a〜10d チャネル並列動作要素、20 RAM、31a,31b ECC回路、33a レーン0コントローラ、33b レーン1コントローラ、34a CH0アクセス情報設定レジスタ、32a,32b NANDI/F 35a CH1アクセス情報設定レジスタ、36a,36b 動作許可レジスタ、37a,37b I/Fコントローラ、38a,38b コントローラ、104 プロセッサ、110 NANDコントローラ、110a レーン0用NANDコントローラ、 110b レーン1用NANDコントローラ。
【特許請求の範囲】
【請求項1】
並列動作可能なチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各チャネル並列動作要素はバンクインタリーブ可能な複数の物理バンクを有し、各物理バンクは複数のメモリチップを有し、各メモリチップはデータ消去の単位である物理ブロックを複数個有する不揮発性半導体メモリと、
複数のチャネル並列動作要素から構成されるレーンに対応して1つ割り当てられ、物理バンク単位に個別接続され、1つの物理バンク内の複数のメモリチップに共通接続される複数のチップイネーブル信号によって前記物理バンクの選択を行うことによってレーン内の複数のチャネル並列動作要素に含まれる各物理バンク内のメモリチップを並列駆動する複数のメモリコントローラと、
各物理バンク内の不良メモリチップが識別可能な不良メモリチップ情報に基づき、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に設定するコントローラと、
を備え、前記複数のメモリコントローラは、コントローラが設定した論物バンク情報に基づいて前記チップイネーブル信号を駆動制御することを特徴とするメモリシステム。
【請求項2】
前記コントローラは、各物理バンク内の不良メモリチップが識別可能な不良メモリチップ情報及び各メモリチップ内の不良ブロックが識別可能な不良ブロック情報に基づき、不良メモリチップ及び不良ブロックを使用せずに各レーン内において並列アクセス可能なブロック数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に設定することを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、1レーンを構成する複数のチャネル並列動作要素から、不良メモリチップ数がより少ない物理バンク同士あるいは不良メモリチップ数がより多い物理バンク同士を順番に選択することによって前記論物バンク情報を形成することを特徴とする請求項1または2に記載のメモリシステム。
【請求項4】
前記コントローラは、1レーンを構成する複数のチャネル並列動作要素から、不良ブロック数がより少ないメモリチップ同士あるいは不良ブロック数がより多いメモリチップ同士を順番に選択することによって前記論物バンク情報を形成することを特徴とする請求項2に記載のメモリシステム。
【請求項5】
前記各メモリコントローラは、1レーンを構成する複数のチャネル並列動作要素に対して並列アクセスする複数のデータ単位に誤り訂正符号が付加されていることを特徴とする請求項1乃至4のいずれか一つに記載のメモリシステム。
【請求項6】
前記コントローラは、不良ブロックが所定の閾値以上発生したメモリチップを不良と判定し、不良と判定したメモリチップに関する情報を前記不良メモリチップ情報に更新追加することを特徴とする請求項1乃至5のいずれか一つに記載のメモリシステム。
【請求項1】
並列動作可能なチャネル並列動作要素を複数個有する不揮発性半導体メモリであって、各チャネル並列動作要素はバンクインタリーブ可能な複数の物理バンクを有し、各物理バンクは複数のメモリチップを有し、各メモリチップはデータ消去の単位である物理ブロックを複数個有する不揮発性半導体メモリと、
複数のチャネル並列動作要素から構成されるレーンに対応して1つ割り当てられ、物理バンク単位に個別接続され、1つの物理バンク内の複数のメモリチップに共通接続される複数のチップイネーブル信号によって前記物理バンクの選択を行うことによってレーン内の複数のチャネル並列動作要素に含まれる各物理バンク内のメモリチップを並列駆動する複数のメモリコントローラと、
各物理バンク内の不良メモリチップが識別可能な不良メモリチップ情報に基づき、不良メモリチップを使用せずに各レーン内において並列アクセス可能なメモリチップ数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に設定するコントローラと、
を備え、前記複数のメモリコントローラは、コントローラが設定した論物バンク情報に基づいて前記チップイネーブル信号を駆動制御することを特徴とするメモリシステム。
【請求項2】
前記コントローラは、各物理バンク内の不良メモリチップが識別可能な不良メモリチップ情報及び各メモリチップ内の不良ブロックが識別可能な不良ブロック情報に基づき、不良メモリチップ及び不良ブロックを使用せずに各レーン内において並列アクセス可能なブロック数が最大となるように、論理バンクを構成する複数の物理バンクの組み合わせを示す論物バンク情報を動的に設定することを特徴とする請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、1レーンを構成する複数のチャネル並列動作要素から、不良メモリチップ数がより少ない物理バンク同士あるいは不良メモリチップ数がより多い物理バンク同士を順番に選択することによって前記論物バンク情報を形成することを特徴とする請求項1または2に記載のメモリシステム。
【請求項4】
前記コントローラは、1レーンを構成する複数のチャネル並列動作要素から、不良ブロック数がより少ないメモリチップ同士あるいは不良ブロック数がより多いメモリチップ同士を順番に選択することによって前記論物バンク情報を形成することを特徴とする請求項2に記載のメモリシステム。
【請求項5】
前記各メモリコントローラは、1レーンを構成する複数のチャネル並列動作要素に対して並列アクセスする複数のデータ単位に誤り訂正符号が付加されていることを特徴とする請求項1乃至4のいずれか一つに記載のメモリシステム。
【請求項6】
前記コントローラは、不良ブロックが所定の閾値以上発生したメモリチップを不良と判定し、不良と判定したメモリチップに関する情報を前記不良メモリチップ情報に更新追加することを特徴とする請求項1乃至5のいずれか一つに記載のメモリシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2013−69210(P2013−69210A)
【公開日】平成25年4月18日(2013.4.18)
【国際特許分類】
【出願番号】特願2011−208808(P2011−208808)
【出願日】平成23年9月26日(2011.9.26)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(391016358)東芝情報システム株式会社 (149)
【出願人】(506101285)東芝情報システムテクノロジー株式会社 (28)
【Fターム(参考)】
【公開日】平成25年4月18日(2013.4.18)
【国際特許分類】
【出願日】平成23年9月26日(2011.9.26)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(391016358)東芝情報システム株式会社 (149)
【出願人】(506101285)東芝情報システムテクノロジー株式会社 (28)
【Fターム(参考)】
[ Back to top ]