JP2019215777A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2019215777A JP2019215777A JP2018113505A JP2018113505A JP2019215777A JP 2019215777 A JP2019215777 A JP 2019215777A JP 2018113505 A JP2018113505 A JP 2018113505A JP 2018113505 A JP2018113505 A JP 2018113505A JP 2019215777 A JP2019215777 A JP 2019215777A
- Authority
- JP
- Japan
- Prior art keywords
- data
- block
- page
- writing
- storage device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Retry When Errors Occur (AREA)
- Read Only Memory (AREA)
Abstract
【課題】 半導体ストレージデバイスへのデータの書き込みに失敗した後の再書き込みを効率化できるメモリシステムを実現する。【解決手段】 実施形態によれば、メモリシステムは、半導体ストレージデバイスと、前記半導体ストレージデバイスと電気的に接続される第1コントローラとから構成される。前記半導体ストレージデバイスは、複数のブロックを含む不揮発性メモリと、第2コントローラとを具備する。第2コントローラは、前記第1コントローラによって、前記不揮発性メモリ内の第1ブロックに含まれる第1ページに第1データを書き込むことが要求された場合に、前記第1ページへの前記第1データの書き込みが失敗したならば、当該書き込みの失敗を前記第1コントローラに通知することなく、前記第1データが、前記不揮発性メモリ内の第2ブロックに書き込まれるように制御する。【選択図】図3
Description
本発明の実施形態は、不揮発性メモリを備えるメモリシステムに関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
このようなメモリシステムの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピューティングデバイスのメインストレージとして使用されている。
このようなメモリシステムの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。SSDは、様々なコンピューティングデバイスのメインストレージとして使用されている。
SSDは、例えば、NAND型フラッシュメモリのような不揮発性メモリを備える半導体ストレージデバイスと、この半導体ストレージデバイスに対するライトやリードのような各種のアクセスを制御するメモリコントローラとを備える。例えば、メモリコントローラによる書き込み要求に応じてデータが半導体ストレージデバイスに書き込まれる。
このような書き込みが失敗した場合、半導体ストレージデバイスはメモリコントローラに失敗を通知する。メモリコントローラは、通知に応じて、半導体ストレージデバイスに対してデータの書き込みを再度要求し、要求に応じてデータが半導体ストレージデバイスに再度書き込まれる。
本発明が解決しようとする課題は、半導体ストレージデバイスへのデータの書き込みに失敗した後の再書き込みを効率化できるメモリシステムを提供することである。
実施形態によれば、メモリシステムは、半導体ストレージデバイスと、前記半導体ストレージデバイスと電気的に接続される第1コントローラとから構成される。前記半導体ストレージデバイスは、複数のブロックを含む不揮発性メモリと、第2コントローラとを具備する。第2コントローラは、前記第1コントローラによって、前記不揮発性メモリ内の第1ブロックに含まれる第1ページに第1データを書き込むことが要求された場合に、前記第1ページへの前記第1データの書き込みが失敗したならば、当該書き込みの失敗を前記第1コントローラに通知することなく、前記第1データが、前記不揮発性メモリ内の第2ブロックに書き込まれるように制御する。
以下、実施の形態について図面を参照して説明する。
(第1実施形態)
まず、図1を参照して、第1実施形態に係るメモリシステム1の構成を説明する。
まず、図1を参照して、第1実施形態に係るメモリシステム1の構成を説明する。
メモリシステム1は、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された一つ以上の半導体ストレージデバイス5を含む。メモリシステム1は、当該メモリシステム1にアクセスするホスト2とで、コンピュータシステムを構成し得る。
ホスト2は、メモリシステム1にアクセスする情報処理装置(コンピューティングデバイス)である。ホスト2は、大量且つ多様なデータをメモリシステム1に保存するサーバ(ストレージサーバ)であってもよいし、パーソナルコンピュータであってもよい。メモリシステム1は、例えば、NAND型フラッシュメモリを備えたソリッドステートドライブ(SSD)として実現され得る。
メモリシステム1は、ホスト2として機能する情報処理装置のメインストレージとして使用され得る。メモリシステム1は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とメモリシステム1とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)、Fibre channel、NVM Express(NVMe)(登録商標)等が使用され得る。
メモリシステム1は、半導体ストレージデバイス5と、この半導体ストレージデバイス5に電気的に接続されるメモリコントローラ4とから構成される。半導体ストレージデバイス5は、不揮発性メモリのメモリセルアレイ31を備える。この不揮発性メモリは、例えば、NAND型フラッシュメモリであり、半導体ストレージデバイス5は、例えば、NAND型フラッシュメモリチップである。
メモリコントローラ4は、System−on−a−chip(SoC)のような回路によって実現され得る。メモリシステム1は、揮発性メモリであるランダムアクセスメモリ、例えば、DRAM6を備えていてもよい。あるいは、SRAMのようなランダムアクセスメモリがメモリコントローラ4に内蔵されていてもよい。
DRAM6等のランダムアクセスメモリには、論理物理アドレス変換テーブル21のキャッシュ領域が設けられている。論理物理アドレス変換テーブル21は、ホスト2が指定する論理アドレスそれぞれと半導体ストレージデバイス5(より詳しくはメモリセルアレイ31)の物理アドレスそれぞれとの間のマッピングを管理し、例えば、ルックアップテーブル(LUT)として実現される。DRAM6等のランダムアクセスメモリには、さらに、半導体ストレージデバイス5から読み出されたデータを一時的に格納するためのバッファ領域であるリードバッファ、半導体ストレージデバイス5に書き込まれるデータを一時的に格納するためのバッファ領域であるライトバッファ、およびガベージコレクション(GC)に用いられるデータを一時的に格納するためのバッファ領域であるGCバッファ、ブロック管理に用いられる各種の情報(例えば、後述するプログラム/イレーズ(P/E)サイクル数)の格納領域等が設けられてもよい。なお、DRAM6は、メモリコントローラ4の内部に設けられていてもよい。
メモリコントローラ4は、Toggle DDR、Open NAND Flash Interface(ONFI)等のインタフェース規格に対応するNANDインタフェース13を介して、半導体ストレージデバイス5に電気的に接続されている。NANDインタフェース13は、半導体ストレージデバイス5を制御するように構成されたNAND制御回路として機能する。
メモリコントローラ4は、半導体ストレージデバイス5を制御するように構成されたメモリコントローラとして機能する。
メモリコントローラ4は、半導体ストレージデバイス5のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能してもよい。このFTLによって実行されるデータ管理には、(1)論理アドレスそれぞれと半導体ストレージデバイス5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)ページ単位のリード/ライトとブロック単位の消去(イレーズ)動作とを隠蔽するための処理、等が含まれる。論理アドレスは、メモリシステム1をアドレス指定するためにホスト2によって使用されるアドレスである。この論理アドレスとしては、例えば、論理ブロックアドレス(LBA)が使用される。
論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングの管理は、論理物理アドレス変換テーブル21を用いて実行される。メモリコントローラ4は、論理物理アドレス変換テーブル21を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスのデータがライトされた半導体ストレージデバイス5内の物理記憶位置を示す。論理物理アドレス変換テーブル21は、メモリシステム1の電源オン時に半導体ストレージデバイス5からDRAM6にロードされてもよい。
半導体ストレージデバイス5は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイ31を含む。このメモリセルアレイ31は、複数のブロックB0〜Bm−1を含む。ブロックB0〜Bm−1の各々は複数のページ(ここではページP0〜Pn−1)を含む。ブロックB0〜Bm−1は、データ消去の最小単位として機能する。ブロックは、「消去ブロック」、または「物理ブロック」と称されることもある。ページP0〜Pn−1の各々は、同一ワード線に接続された複数のメモリセルを含む。ページP0〜Pn−1は、データ書き込み動作およびデータ読み出し動作の単位である。なお、ワード線をデータ書き込み動作およびデータ読み出し動作の単位としてもよい。
ブロックB0〜Bm−1の各々に対して許容できる最大P/Eサイクル数は限られている。あるブロックの1回のP/Eサイクルは、このブロック内の全てのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作(プログラム動作)とを含む。
したがって、1つのページへのデータ書き込みは、1つのP/Eサイクル当たり1回のみ可能である。このため、メモリコントローラ4は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、メモリコントローラ4は、論理物理アドレス変換テーブル21を更新してこの論理アドレスをこの別の物理記憶位置に関連付けると共に、以前のデータを無効化する。以下では、論理物理アドレス変換テーブル21から参照されているデータ(すなわち論理アドレスと紐付けられているデータ)を有効データと称する。また、どの論理アドレスとも紐付けられていないデータを無効データと称する。有効データは、後にホスト2からリードされる可能性があるデータである。無効データは、もはやホスト2からリードされる可能性が無いデータである。
ブロック管理には、ウェアレベリング、ガベージコレクション(GC)等が含まれる。なお、本実施形態では、後述するように、メモリコントローラ4によるバッドブロックの管理は必要ない。
メモリコントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14等を含んでもよい。これらホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14は、バス10を介して相互接続されていてもよい。
ホストインタフェース11は、ホスト2から様々なコマンド、例えば、I/Oコマンド、各種制御コマンド、等を受信する回路として機能する。I/Oコマンドには、ライトコマンド、リードコマンド、アンマップコマンド(トリムコマンド)、フォーマットコマンド、フラッシュコマンド等が含まれ得る。
DRAMインタフェース14は、DRAM6のアクセスを制御するように構成されたDRAM制御回路として機能する。DRAM6の記憶領域は、論理物理アドレス変換テーブル21を格納するための領域や、図示しないリードバッファ、ライトバッファ、GCバッファ等として利用される領域に割り当てられる。
CPU12は、ホストインタフェース11、NANDインタフェース13、およびDRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、図示しないROM等に格納されている制御プログラム(ファームウェア)を実行することによって様々な処理を行う。このCPU12は、上述のFTLの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12の動作は、CPU12によって実行される上述のファームウェアによって制御される。なお、FTL処理およびコマンド処理の一部または全部は、メモリコントローラ4内の専用ハードウェアによって実行されてもよい。
CPU12は、例えば、リード制御部121、ライト制御部122、およびGC制御部123として機能することができる。
リード制御部121は、論理アドレスに対応する論理物理アドレス変換テーブル21のエントリに基づいて、論理アドレスに対応する物理アドレスを求め、半導体ストレージデバイス5からリードコマンドに応じたデータを読み出す。
ライト制御部122は、ライトコマンドとともにホスト2から受信されたユーザデータを、DRAM6上のライトバッファに蓄積する。また、ライト制御部122は、このライトコマンドよってユーザデータをある論理アドレスに書き込むことが要求されている場合、このユーザデータが書き込まれるべき物理アドレスを決定する。そして、ライト制御部122は、そのユーザデータを、決定された物理アドレスに対応するブロックおよびページに書き込むことを半導体ストレージデバイス5に要求する。より具体的には、ライト制御部122は、半導体ストレージデバイス5に、物理アドレスを示す情報(例えばブロックおよびページ)と、ユーザデータとを送出する。
次いで、ライト制御部122は、半導体ストレージデバイス5にプログラムを指示する。すなわち、ライト制御部122は、半導体ストレージデバイス5にプログラムコマンドを送ることにより、半導体ストレージデバイス5に対して、送出されたユーザデータを書き込み先のブロックおよびページにプログラムさせる。
半導体ストレージデバイス5内のメモリセルアレイ31は複数のブロックを含んでいる。ブロックは、有効データを格納しているブロック(アクティブブロック)と、有効データを格納しておらず、イレーズ処理を経ることで新たなデータの書き込みに利用可能なブロック(フリーブロック)とに大別される。1つ以上のフリーブロックから1つが選択され、イレーズ処理を経ることで、書き込み先ブロックとして割り当てられる。書き込み先ブロックは、有効データを格納し得る。
また、ライト制御部122は、ライトバッファ内の、送出されたユーザデータが蓄積されていた領域を解放する。ライト制御部122は、論理アドレスと物理アドレスとをマッピングする。このマッピングは、論理物理アドレス変換テーブル21内のエントリとして記録される。ライト制御部122は、半導体ストレージデバイス5に書き込みを要求した後、半導体ストレージデバイス5によるその書き込みが完了する前に、論理アドレスと物理アドレスとをマッピングし、当該マッピングを示すエントリを用いて論理物理アドレス変換テーブル21を更新する。
GC制御部123も、GCバッファを用いて、上述したようなライト制御部122による書き込み動作と同様にして、半導体ストレージデバイス5への書き込みを行うことができる。GC制御部123は、有効データを格納しているアクティブブロック群からガベージコレクションソースブロック(GCソースブロック)を選択し、このGCソースブロック内の有効データを、フリーブロック群から書き込み先ブロックとして確保されたガベージコレクションデスティネーションブロック(GCデスティネーションブロック)に書き込むことを半導体ストレージデバイス5に要求する。
半導体ストレージデバイス5は、メモリセルアレイ31、入出力バッファ32、制御回路33、置き換えコントローラ34、RAM35、周辺回路36、等を備える。NANDインタフェース13を介して、メモリコントローラ4から供給されるか、あるいはメモリコントローラ4に供給される各種の制御信号、コマンド、アドレス、およびデータは、入出力バッファ32に蓄積される。つまり、メモリコントローラ4と半導体ストレージデバイス5とは、NANDインタフェース13および入出力バッファ32を介して制御信号、コマンド、アドレス、およびデータの授受を行う。
メモリセルアレイ31は複数のブロックを含む。メモリセルアレイ31は、あるブロックのあるページへの書き込みが失敗した場合、そのブロックにおいて、書き込みが失敗したページ以降のページに書き込み(追記書き込み)ができなくなるという特性を有している場合がある。
制御回路33は、入出力バッファ32を介してメモリコントローラ4から供給される各種の外部制御信号(書き込みイネーブル信号、読み出しイネーブル信号、コマンドラッチイネーブル信号、アドレスラッチイネーブル信号、等)とコマンドとに基づき、データの書き込み動作、消去動作、および読み出し動作を制御する。
周辺回路36は、制御回路33と協働して、ワード線およびビット線の駆動、書き込み、消去および読み出しの動作に必要な内部電圧の発生等を制御する。
置き換えコントローラ34は、例えば、回路として実現され、制御回路33による、メモリセルアレイ31内のあるブロックのあるページに対するデータの書き込みが失敗した場合に、置き換えのための置き換えブロックを割り当て、置き換えブロックにそのデータが書き込まれるように制御回路33等を制御する。置き換えコントローラ34は、あるブロックのあるページに対するデータの書き込みが失敗したならば、そのブロックのそのページ以降にデータが書き込まれないように制御し、そのページ以降に書き込まれるべきであったデータが置き換えブロックに書き込まれるように制御する。また、書き込みが失敗したページ以降からのデータの読み出しが要求される場合に、実際にデータが書き込まれた置き換えブロック内のページからデータが読み出されるように制御回路33等を制御する。
RAM35には、置き換えテーブル38とフリーブロック情報39とが格納されている。
置き換えテーブル38には、あるデータが書き込まれるべきであった書き込み失敗位置と、当該書き込み失敗位置への書き込みの失敗に応じて確保された置き換え位置とが相互に関連付けて記録される。
例えば、図2に示すように、置き換えテーブル38は、書き込み失敗位置と置き換え位置とをそれぞれ含む一つ以上のエントリを含み得る。書き込み失敗位置は、書き込みに失敗した物理記憶位置を示し、例えば、ブロック番号とページ番号とで表される。置き換え位置は、この書き込み失敗位置が置き換えられた物理記憶位置を示し、例えば、ブロック番号で表される。なお、書き込み失敗位置がブロック番号で表されてもよいし、置き換え位置がブロック番号とページ番号とで表されてもよい。
また、フリーブロック情報39は、有効データを含まない1つ以上のフリーブロックにそれぞれ対応する1つ以上のブロック番号を含む。
置き換えコントローラ34は、あるブロックのあるページに対するデータの書き込みが失敗したことに応じて、フリーブロック情報39を用いて、1つ以上のフリーブロックから1個を選択し、イレーズ処理を施して、置き換えブロックとして割り当てる。置き換えブロックは、有効データを格納し得る。そして、置き換えコントローラ34は、書き込みが失敗したブロックおよびページを示す書き込み失敗位置と、置き換えブロックを示す置き換え位置とを含むエントリを、置き換えテーブル38に追加する。また、置き換えコントローラ34は、割り当てられた置き換えブロックのブロック番号を、フリーブロック情報39から削除する。
図3から図8を参照して、半導体ストレージデバイス5において、あるブロックのあるページに対するデータの書き込みが失敗した場合に、そのページ以降に書き込まれるべきであったデータが置き換えブロックに書き込まれる例について説明する。
図3に示すように、例えば、メモリコントローラ4によって、メモリセルアレイ31内のブロック100に含まれるページ1にデータBを書き込むことが要求される場合、制御回路33および周辺回路36は、このページ1にデータBを書き込む。置き換えコントローラ34は、ページ1へのデータBの書き込みが失敗したならば、当該書き込みの失敗をメモリコントローラ4に通知することなく、データBが、メモリセルアレイ31内の置き換えのためのブロック200(置き換えブロック)に書き込まれるように制御する。データBは、図3に示すように、例えば、ブロック200の先頭のページ0に書き込まれる。
なお、データBは、図4に示すように、書き込みに失敗したページ1と同一のページ番号を有する、ブロック200内のページ1に書き込まれてもよい。
また、図5に示すように、ブロック200のページ0へのデータBの書き込みが成功した後、メモリコントローラ4によって、ブロック100内のページ1より後のページ(ここでは、ページ2)にデータCを書き込むことが要求された場合、置き換えコントローラ34は、データCが、ブロック200に書き込まれるように制御する。つまり、ブロック100内のページ1以降に書き込まれることが要求されたデータは、ブロック200に書き込まれる。
なお、図6に示すように、置き換えコントローラ34は、データBだけでなく、ブロック100のページ1へのデータBの書き込みが失敗した時点でブロック100に既に書き込まれていたデータ(ここでは、データA)も、ブロック200に書き込まれるようにしてもよい。
したがって、置き換えコントローラ34は、ブロック100のページ1へのデータBの書き込みが失敗した場合、(a)ブロック100に既に書き込まれているデータAと書き込みに失敗したデータBとをブロック200に書き込むこと、(b)データBをブロック200の先頭のページ0に書き込むこと、および(c)ブロック200内の、書き込みに失敗したページ1と同一のページ番号を有するページ1に、データBを書き込むこと、の内のいずれかを選択することができる。
また、図7に示すように、置き換えのためのブロック200へのデータBの書き込みが失敗したならば、置き換えコントローラ34は、当該書き込みの失敗をメモリコントローラ4に通知することなく、データBが、メモリセルアレイ31内のさらに別のブロック300に書き込まれるように制御する。図8に示すように、このブロック300へのデータBの書き込みが成功した後、メモリコントローラ4によって、ブロック100内のページ1より後のページ(ここでは、ページ2)にデータCを書き込むことが要求された場合、置き換えコントローラ34は、データCが、ブロック300に書き込まれるように制御する。つまり、ブロック100内のページ1以降に書き込まれることが要求されたデータは、ブロック300に書き込まれる。
なお、ブロック300へのデータBの書き込みが失敗したならば、置き換えコントローラ34は、当該書き込みの失敗をメモリコントローラ4に通知することなく、データBが、メモリセルアレイ31内のさらに別のブロック(例えば、ブロック400)に書き込まれるように制御する。さらに、ブロック400へのデータBの書き込みが失敗したならば、置き換えコントローラ34は、当該書き込みの失敗をメモリコントローラ4に通知することなく、データBが、メモリセルアレイ31内のさらに別のブロック(例えば、ブロック500)に書き込まれるように制御する。このように、置き換えコントローラ34は、あるブロックへのデータBの書き込みが失敗したならば、さらに別のブロックを確保してデータBが書き込まれるように制御する動作を、書き込みが成功するまで繰り返す。
本実施形態の半導体ストレージデバイス5は、このような置き換えコントローラ34の動作により、あるブロックへのデータの書き込みが失敗したとしても、書き込みの失敗をメモリコントローラ4に通知することなく、そのデータを置き換えブロックに書き込むことができる。
このように、本実施形態の半導体ストレージデバイス5は書き込みの失敗をメモリコントローラ4に通知しないように構成されるが、書き込みの失敗をメモリコントローラに通知するように構成される半導体ストレージデバイスがある。この半導体ストレージデバイスによって書き込みの失敗が通知された場合、メモリコントローラは、その半導体ストレージデバイスに対して、書き込みに失敗したデータと巻き添えで破壊されたデータとを別のブロックに書き込むことを要求する。
半導体ストレージデバイスでは、書き込みのためのプログラム動作において、1つのメモリセルに対してデータが複数のプログラム段階を経て書き込まれる場合がある。例えば、半導体ストレージデバイスが、メモリセル当たりに2ビットのデータを格納可能なマルチレベルセル(MLC)フラッシュメモリを備える場合、あるワード線に接続された1つのメモリセルに、2ページ分のデータである下位ページデータと上位ページデータとが分けて書き込まれる。このようなメモリセルでは、上位ページデータの書き込みに失敗したことによって、既に書き込まれていた下位ページデータが破壊されることがある。このように、書き込みに失敗したページとは別のページに書き込まれていて破壊されたデータを、巻き添えで破壊されたデータと称する。
なお、書き込み時に、隣接するワード線と物理的にショートしたことによって、その隣接するワード線に接続されたメモリセル内のデータが破壊されることがある。このように破壊されたデータも、巻き添えで破壊されたデータである。
図9から図14を参照して、メモリコントローラと、書き込み失敗時にその失敗をメモリコントローラに通知する半導体ストレージデバイスとによる書き込み処理の例について説明する。以下では、複数のブロックのセットをセクタと称する。
ここでは、セクタ41にデータが書き込まれる例を示す。一般に、データの書き込み先としてセクタが用いられる。以下では、説明を分かりやすくするために、一例として、セクタ41が4つのブロック100,200,300,400を含み、これらブロック100,200,300,400の各々がページ0からページ3の4つのページを含む場合について示す。
セクタに含まれる複数のページには、それぞれ物理アドレスが割り当てられる。図9に示すセクタ41には16ページが含まれている。これら16ページには、ページ番号が小さい順に、且つブロック番号が小さい順に、物理アドレス0〜15が割り当てられている。つまり、セクタ41では、ブロック100のページ0に物理アドレス0、ブロック200のページ0に物理アドレス1、ブロック300のページ0に物理アドレス2、ブロック400のページ0に物理アドレス3、ブロック100のページ1に物理アドレス4、ブロック200のページ1に物理アドレス5、……、ブロック300のページ3に物理アドレス14、ブロック400のページ3に物理アドレス15が割り当てられる。なお、セクタ41に含まれるブロックの数と、各ブロックに含まれるページの数とは、メモリシステムの特性や用途等に応じて任意に設定可能である。
この例における半導体ストレージデバイスは、本実施形態の半導体ストレージデバイス5とは異なり、書き込み失敗時に、メモリコントローラに失敗を通知することなく別のブロックにデータを書き込む置き換え機能を有していない。メモリコントローラは半導体ストレージデバイスからの書き込み失敗の通知に応じて、新たな書き込み先のセクタを確保し、そのセクタに対して、書き込みが失敗したデータと後続するデータとを書き込むように構成される。
メモリコントローラは、ホスト2によってある論理アドレスにデータを書き込むことが要求された場合に、そのデータをある物理アドレスに書き込むことを決定し、当該物理アドレスにデータを書き込むことを半導体ストレージデバイスに要求する。そして、メモリコントローラは、それら論理アドレスと物理アドレスとをマッピングする。このマッピングは、論理物理アドレス変換テーブル21−1内のエントリとして記録される。メモリコントローラは、半導体ストレージデバイスに書き込みを要求した後、半導体ストレージデバイスによるその書き込みが完了する前に、論理アドレスと物理アドレスとをマッピングし、当該マッピングを示すエントリを用いて論理物理アドレス変換テーブル21−1を更新する。
セクタ41では、割り当てられた物理アドレスが小さいページから順にデータが書き込まれる。つまり、セクタ41では、ブロック100、ブロック200、ブロック300、ブロック400の順に、各ブロック内の1ページにデータが書き込まれる。また、各ブロック内では、先頭のページ0から順にデータが書き込まれる。したがって、セクタ41では、ブロック100のページ0、ブロック200のページ0、ブロック300のページ0、ブロック400のページ0、ブロック100のページ1、ブロック200のページ1、……、ブロック300のページ3、ブロック400のページ3の順にデータが書き込まれることになる。このような順序の書き込みにより、セクタにおける追記書き込みが実現される。
図9において、ページを表す各領域には、“物理アドレス[論理アドレス]”のフォーマットで、そのページに対応する物理アドレスおよび論理アドレスが示されている。また、これら領域の内、ハッチングで示された領域は、対応するページにまだデータが書き込まれていないことを示し、物理アドレスのみが示されている。したがって、図9に示す例では、物理アドレス0〜9のページに対するデータの書き込みが完了し、それら物理アドレス0〜9のそれぞれに、論理アドレス8,7,6,5,4,3,2,1,15,14のそれぞれがマッピングされている。また、物理アドレス10〜15のページにはデータがまだ書き込まれておらず、それら物理アドレス10〜15にはいずれの論理アドレスもマッピングされていない。
図10は、このセクタ41に対応する論理物理アドレス変換テーブル21−1を示す。論理物理アドレス変換テーブル21−1は、論理アドレス1,2,3,4,5,6,7,8,14,15のそれぞれに、物理アドレス7,6,5,4,3,2,1,0,9,8のそれぞれがマッピングされ、論理アドレス0,9〜13にはいずれの物理アドレスもマッピングされていないことを示している。
図11に示すように、ホスト2によって論理アドレス13にデータを書き込むことがさらに要求された場合、メモリコントローラは、当該データを物理アドレス10に書き込むことを決定する。メモリコントローラは、半導体ストレージデバイスに対して物理アドレス10にデータを書き込むことを要求する。メモリコントローラは、半導体ストレージデバイスに書き込みを要求した後、半導体ストレージデバイスによる書き込みが完了する前に、図12に示すように、論理アドレス13と物理アドレス10とのマッピングを示すエントリを論理物理アドレス変換テーブル21−1に追加する。
ここで、図13および図14を参照して、半導体ストレージデバイスによる物理アドレス10[論理アドレス13]へのデータの書き込みが失敗した場合について説明する。
図13に示すように、ブロック300内のページ2である物理アドレス10へのデータの書き込みが失敗した場合、半導体ストレージデバイスは、その失敗をメモリコントローラに通知する。メモリコントローラは、通知に応じて、新たな書き込み先セクタ42を確保する。セクタ42は、セクタ41と同様に、4つのブロック500,600,700,800を含み、これらブロック500,600,700,800の各々がページ0からページ3の4つのページを含む。
セクタ42には16ページが含まれている。これら16ページには、ページ番号が小さい順に、且つブロック番号が小さい順に、物理アドレス16〜31が割り当てられている。つまり、セクタ42では、ブロック500のページ0に物理アドレス16、ブロック600のページ0に物理アドレス17、ブロック700のページ0に物理アドレス18、ブロック800のページ0に物理アドレス19、ブロック500のページ1に物理アドレス20、ブロック600のページ1に物理アドレス21、……、ブロック700のページ3に物理アドレス30、ブロック800のページ3に物理アドレス31が割り当てられる。
メモリコントローラは、書き込みが失敗した論理アドレス13に書き込まれるべきデータを、物理アドレス16に書き込むことを決定する。メモリコントローラは、そのデータを物理アドレス16に書き込むことを半導体ストレージデバイスに要求する。そして、メモリコントローラは、図14に示すように、論理アドレス13と物理アドレス16とのマッピングを示すエントリを追加することにより、論理物理アドレス変換テーブル21−1を更新する。
また、ホスト2からさらなるデータの書き込みが要求された場合には、書き込みセクタ42内の物理アドレス17〜31のページに順にデータが書き込まれることになる。したがって、物理アドレス10への書き込み失敗に応じて新たなセクタ42が確保され、元のセクタ41内の、書き込みに失敗した物理アドレス10に後続する物理アドレス11〜15にはデータが書き込まれない。
ここでは、ブロック300が、書き込みが失敗したページ2(物理アドレス10)と、これより後のページ3(物理アドレス14)とにはデータを書き込む(追記する)ことができない特性を有していることを想定している。そのため、セクタ41に対して物理アドレスの順にデータを書き込むことができなくなくなる。さらに、書き込み失敗が発生していなければセクタ41に追記されたであろうデータは、別のセクタ42に書き込まれることになる。図13に示すように、この別のセクタ42に割り当てられた物理アドレス16〜31は、セクタ41に書き込み済みのデータの物理アドレス1〜9とは連続していない。このように、連続した物理アドレスにデータが書き込まれないならば、有効データが断片化される度合いが高まり、それに伴うGCの発生頻度が増加することによって、半導体ストレージデバイスに対するアクセス性能が低下する可能性がある。
このような構成では、メモリコントローラは、書き込みの失敗を常に想定して、書き込み対象のデータだけでなく、その書き込み失敗時に破壊され得る範囲のデータをライトバッファ等に保持しておく必要がある。また、メモリコントローラは、書き込みが失敗したブロックが再利用されないように、そのブロックをバッドブロック(不良ブロック)として管理する必要がある。
また、メモリコントローラは、セクタ41内の物理アドレス10への書き込みを要求したことに応じて、論理物理アドレス変換テーブル21−1を更新し、書き込みの失敗が発生し、セクタ42内の物理アドレス16への書き込みを要求したことに応じて、論理物理アドレス変換テーブル21−1をさらに更新する。論理物理アドレス変換テーブル21−1が膨大なサイズを有することがある。その場合、メモリコントローラは、論理物理アドレス変換テーブル21−1の更新のための処理に時間を要し、半導体ストレージデバイスへの書き込みのための処理の効率が低下する。
半導体ストレージデバイスにおける書き込み失敗に対処するためのこのようなメモリコントローラの動作は、メモリシステムにおいて非常に大きな負担となるものである。
さらに、ブロック100,200,400において書き込みの失敗が発生していないにも関わらず、ブロック100のページ3、ブロック200のページ3、並びにブロック400のページ2およびページ3にはデータを書き込むことができない。つまり、それらページ分の記憶容量を利用することができなくなる。
そのため本実施形態では、半導体ストレージデバイス5を、あるブロックのあるページへのデータの書き込みが失敗した場合に、メモリコントローラ4に失敗を通知することなく、別のブロックにそのデータを書き込むように構成する。半導体ストレージデバイス5は、書き込みが失敗したとしてもメモリコントローラ4に通知することなく、成功するまでその内部で書き込み動作を繰り返すことにより、メモリセルアレイ31にデータを書き込むことができる。
図15から図21を参照して、本実施形態のメモリコントローラ4と半導体ストレージデバイス5とによる書き込み処理の例について説明する。ここでは、セクタ45にデータが書き込まれる例を示す。以下では、説明を分かりやすくするために、一例として、セクタ45が4つのブロック100,200,300,400を含み、これらブロック100,200,300,400の各々がページ0からページ3の4つのページを含む場合について示す。上述したように、セクタ45に含まれるブロックの数と、各ブロックに含まれるページの数とは、メモリシステム1の特性や用途等に応じて任意に設定可能である。また、セクタ45内でデータが書き込まれるページの順序(セクタにおける追記書き込みの順序)と物理アドレスの割り当ては、図9を参照して上述したセクタ41と同様である。
図15は、物理アドレス0〜9のページに対するデータの書き込みが完了した後、物理アドレス10のページに対するデータの書き込みが要求された時点のセクタ45を示す。物理アドレス0〜10のそれぞれには、論理アドレス8,7,6,5,4,3,2,1,15,14,13のそれぞれがマッピングされている。
図16は、このセクタ45に対応する論理物理アドレス変換テーブル21を示す。論理物理アドレス変換テーブル21は、論理アドレス1,2,3,4,5,6,7,8,14,15のそれぞれに、物理アドレス7,6,5,4,3,2,1,0,9,8のそれぞれがマッピングされていることを示す。また、物理アドレス10のページに対するデータの書き込みが要求された後、論理物理アドレス変換テーブル21に、論理アドレス13と物理アドレス10とのマッピングを示すエントリが追加されている。
図17は、物理アドレス10のページ、すなわち、ブロック300のページ2に対する書き込み失敗が発生した場合のセクタ45を示す。ここでは、ブロック300が、書き込みが失敗したページ2と、これより後のページ3とにはデータを書き込む(追記する)ことができない特性を有していることを想定している。そのため、半導体ストレージデバイス5は、この書き込み失敗の発生に応じて、データの書き込み先を置き換えるためのブロック500を割り当てる。ブロック500には、有効データを含まないフリーブロック群から選択された1つのブロックが、イレーズ処理を経ることで用いられる。
半導体ストレージデバイス5は、ブロック500の、例えば、ページ0にデータ(ブロック300のページ2への書き込みに失敗したデータ)を書き込む。書き込まれるデータは、例えば、入出力バッファ32に蓄積されているデータである。また、書き込み時に、書き込みデータの復元用のパリティデータを生成しながら書き込む方法が用いられる場合、置き換え先のブロック500に書き込まれるデータには、パリティデータを用いて復元されたデータが用いられてもよい。この場合、書き込み失敗時のリトライのためのデータが入出力バッファ32に蓄積されないので、入出力バッファ32に蓄積されるデータ量を削減できる。
そして、半導体ストレージデバイス5は、書き込みに失敗したブロック300と置き換え先のブロック500とをペアで管理する。なお、論理物理アドレス変換テーブル21は、図16に示したように、物理アドレス10と論理アドレス13とのマッピングを示すエントリを含んだままでよく、更新する必要はない。
次いで、図18に示すように、ホスト2から論理アドレス12,11,10のそれぞれにデータを書き込むことが要求された場合、メモリコントローラ4は、データを物理アドレス11,12,13のそれぞれに書き込むことを決定する。なお、書き込みの要求は、ホスト2による要求に限らず、ガベージコレクション処理のようなメモリシステム1の内部動作によって生じた要求であってもよい。メモリコントローラ4は、半導体ストレージデバイス5に対して物理アドレス11,12,13のそれぞれにデータを書き込むことを要求する。この要求に応じて、半導体ストレージデバイス5は、ブロック400のページ2、ブロック100のページ3、およびブロック200のページ3のそれぞれにデータを書き込む。
そして、ホスト2から論理アドレス9にデータを書き込むことが要求された場合、メモリコントローラ4は、当該データを物理アドレス14に書き込むことを決定する。メモリコントローラ4は、半導体ストレージデバイス5に対して物理アドレス14にデータを書き込むことを要求する。半導体ストレージデバイス5は、ブロック300のページ2における書き込み失敗によって、ブロック300のページ3にデータを書き込むことができないので、データを置き換えブロック500のページ1に書き込む。このページ1は、書き込みに失敗したデータが書き込まれたブロック500のページ0に後続するページである。
さらに、ホスト2から論理アドレス8にデータを書き込むことが要求された場合、メモリコントローラ4は、当該データを物理アドレス15に書き込むことを決定する。メモリコントローラ4は、半導体ストレージデバイス5に対して物理アドレス15にデータを書き込むことを要求する。半導体ストレージデバイス5は、データをブロック500のページ3に書き込む。
このように、ブロック300のページ2への書き込みにエラーが発生した場合、このページ2に書き込まれるべきであったデータを、半導体ストレージデバイス5において内部的に、置き換えブロック500に改めて書き込む。これにより、後続するデータを、書き込みに失敗したブロック300を除いたブロック100,200,400と、置き換えブロック500とに対して継続して書き込む(追記する)ことができる。
図19は、このセクタ45に対応する論理物理アドレス変換テーブル21を示す。図16に示した論理物理アドレス変換テーブル21と比較して、この論理物理アドレス変換テーブル21には、論理アドレス8〜12のそれぞれに、物理アドレス15〜11のそれぞれがマッピングされていることを示すエントリが追加されている。
また、図20(a)に示すように、半導体ストレージデバイス5において、書き込みに失敗したブロック300と置き換えブロック500とはペアで管理されている。上述した通り、ブロック300のページ2に対する書き込みが失敗したことにより、ブロック300のページ2に書き込まれるべきであったデータは、置き換えブロック500のページ0に書き込まれている。また、ブロック300のページ3に書き込まれるべきデータは、置き換えブロック500のページ1に書き込まれている。
書き込み失敗によってブロック300のページの少なくとも一部がブロック500のページに置き換えられ、ブロック300とブロック500とがペアで管理されていることは、メモリコントローラ4のような半導体ストレージデバイス5の外部からは隠蔽されている。つまり、図20(b)に示すように、書き込み失敗による置き換えが発生していても、外部(例えば、メモリコントローラ4)からはブロック300のページ0からページ3である物理アドレス2,6,10,14にデータが書き込まれているものと認識される。したがって、メモリコントローラ4は、書き込み失敗による置き換えを何等考慮することなく、半導体ストレージデバイス5にアクセスすることができる。
図21は、書き込み失敗が発生したブロック300とその置き換えのためのブロック500とを管理するための置き換えテーブル38の例を示す。置き換えテーブル38内の各エントリは、書き込み失敗位置と置き換え位置とを含む。上述したように、書き込み失敗位置は、書き込みに失敗した物理記憶位置を示し、例えば、ブロック番号とページ番号とで表される。置き換え位置は、この書き込み失敗位置が置き換えられた物理記憶位置を示し、例えば、ブロック番号で表される。
図21に示す置き換えテーブル38では、書き込み失敗位置が“300−2”であって、置き換え位置が“500”であるエントリにより、ブロック300のページ2が、ブロック500に置き換えられたことが示されている。半導体ストレージデバイス5は、このエントリに基づいて、ブロック300のページ2に書き込まれるべきであったデータが、ブロック500のページ0に書き込まれていることを認識できると共に、ブロック300のページ2より後のページに書き込まれるべきデータが、ブロック500のページ1から順に継続して書き込まれ得ることを認識できる。
このような構成により、セクタ45内のブロック300のページ2に対するデータの書き込みが失敗した場合、失敗したページ2以降のページ(すなわち、ページ2およびページ3)が、別のブロック500内のページ(例えば、ページ0およびページ1)に置き換えられるので、セクタ45に継続してデータを書き込むことができる。
なお、メモリコントローラ4によって、半導体ストレージデバイス5内のあるブロックのあるページからデータを読み出すことが要求された場合、半導体ストレージデバイス5は、置き換えテーブル38を用いて、そのページが置き換えられたページであるか否かを判定する。半導体ストレージデバイス5は、例えば、データの読み出しが要求されたブロック内のページが、置き換えテーブル38の各エントリにおいて書き込み失敗位置として示されるブロック内のページ以降のページ(すなわち、書き込みに失敗したページ以降のページ)に該当するか否かを判定する。いずれのエントリにおいても該当しない場合、半導体ストレージデバイス5は、読み出しが要求されたブロック内のページからデータを読み出す。
一方、該当するエントリがある場合、半導体ストレージデバイス5は、そのエントリの置き換え位置として示されるブロックにおいて、読み出し対象のページが置き換えられたページを特定し、そのページからデータを読み出す。半導体ストレージデバイス5は、書き込み失敗位置として示されたページと読み出し対象のページとの相対的な関係に基づいて、置き換えられたページを特定することができる。
例えば、図20(a)に示した例において、メモリコントローラ4によってブロック300のページ3からデータを読み出すことが要求された場合、半導体ストレージデバイス5は、図21に示した置き換えテーブル38を用いて、読み出し対象のブロック300のページ3が置き換えられたブロック500内のページを特定する。置き換えテーブル38に含まれる一つのエントリは、書き込み失敗位置として示されるブロック300のページ2が、置き換え位置として示されるブロック500の先頭のページに置き換えられていることを示している。読み出し対象のブロック300のページ3は、書き込み失敗位置として示されるブロック300のページ2よりも一つ後のページである。したがって、置き換えブロック500の先頭のページ0よりも一つ後のページであるページ1が、読み出し対象であるブロック300のページ3が置き換えられたページとして特定される。
このように、置き換えテーブル38を用いることにより、あるブロックに対する書き込みが失敗したことにより置き換えブロックに書き込まれたデータを適切に読み出すことができる。
次いで、図22および図23を参照して、置き換えブロックにおいてさらに書き込み失敗が発生する場合の書き込み処理の例を示す。
図22に示すセクタ45では、物理アドレス0〜5のページに対するデータの書き込みが完了した後、物理アドレス6のページ、すなわち、ブロック300のページ1に対するデータの書き込みが失敗し、置き換えのためのブロック500のページ0にそのデータが書き込まれている。半導体ストレージデバイス5は、ブロック300とブロック500とをペアで管理する。より具体的には、図23に示すように、書き込み失敗位置がブロック300のページ1であって、置き換え位置がブロック500であることを示すエントリが、置き換えテーブル38に追加される。
そして、セクタ45では、物理アドレス6〜9のページに対する書き込みが完了した後、物理アドレス10のページ、すなわち、ブロック500のページ1に対するデータの書き込みがさらに失敗し、新たな置き換えのためのブロック600のページ0にそのデータが書き込まれている。半導体ストレージデバイス5は、ブロック500とブロック600とをペアで管理する。より具体的には、図23に示すように、書き込み失敗位置がブロック500のページ1であって、置き換え位置がブロック600であることを示すエントリが、置き換えテーブル38に追加される。
このように、本実施形態の半導体ストレージデバイス5は、置き換えブロック500で書き込み失敗が発生した場合に、さらなる置き換えブロック600にデータを書き込むと共に、この置き換えの関係を置き換えテーブル38に記述するように構成される。そのため、あるブロック300に対応する物理アドレス2,6,10,14に対する複数の書き込み失敗にも容易に対応することができる。
したがって、半導体ストレージデバイス5における書き込み失敗を考慮することなく追記書き込みを要求できるシンプルなインタフェースを、メモリコントローラ4に対して提供することができる。メモリコントローラ4では書き込み失敗に応じたエラー処理が行われず、且つメモリコントローラ4と半導体ストレージデバイス5との間でエラー処理のためのデータ伝送が行われないので、書き込み失敗に対処するための処理を簡素化および高速化することができる。また、半導体ストレージデバイス5において、書き込みに失敗したバッドブロックを、置き換えテーブル38を用いて認識できるので、メモリコントローラ4ではバッドブロックの管理が不要となる。
なお、上述した例では、あるブロックにおいて、書き込みが失敗したページ以降に書き込まれるべきであったデータを、別のブロックの先頭から順に書き込むことにより、ブロックを置き換えるアルゴリズムを示した。書き込み失敗が発生したブロックの置き換えは、このアルゴリズムに限られず、以下のような種々のアルゴリズムが用いられ得る。
図24および図25は、ブロック全体が置き換えられる例を示す。この例では、ブロック300のページ1へのデータの書き込みが失敗した場合に、ブロック300に書き込まれるべき全てのデータが、置き換えブロック500に書き込まれる。この場合、ブロック300が、書き込みに失敗したページ1より後のページ2,3にデータを書き込む(追記する)ことができる特性を有していたとしても、ブロック300に書き込まれるべき全てのデータが、置き換えブロック500に書き込まれる。なお、ブロック300のページ0に既に書き込まれていたデータは、このページ0から読み出されて、置き換えブロック500のページ0に書き込まれる。
置き換えテーブル38には、図25に示すように、書き込み失敗位置がブロック300であって、置き換え位置がブロック500であることを示すエントリが追加される。ブロック全体が置き換えられるので、このエントリではブロック番号のみが管理されればよく、ページ番号を管理する必要がない。したがって、置き換えテーブル38のサイズをより小さくすることができる。
図26および図27は、ブロック内のページが部分的に置き換えられる例を示す。この例では、各ブロックが、書き込みが失敗したページにはデータを書き込むことができないものの、その書き込みが失敗したページより後のページにデータを書き込むことができる特性を有していることを想定する。
ブロック300のページ1へのデータの書き込みが失敗した場合、そのデータのみが置き換えブロック500に書き込まれる。また、ブロック300内の後続するページ2およびページ3に書き込まれるべきデータは、それらページ2およびページ3に書き込まれ、置き換えブロック500には書き込まれない。
置き換えテーブル38には、図27に示すように、書き込み失敗位置がブロック300のページ1であって、置き換え位置がブロック500であることを示すエントリが追加される。
なお、書き込みが失敗したデータは、置き換えブロック500内の先頭のページ0に限らず、任意のページに書き込まれ得る。その場合、置き換えテーブル38内の対応するエントリでは、置き換え位置としてブロック番号とページ番号とが示される。
また、置き換えブロック500内のデータが書き込まれていないページを、ブロック300以外の別のブロックの置き換えに使用することもできる。
図28および図29は、ブロック内のページが部分的に置き換えられる別の例を示す。この例では、各ブロックが、書き込みが失敗したページ以降のページにデータを書き込むことができない特性を有していることを想定する。
ブロック300のページ1へのデータの書き込みが失敗した場合、ブロック300のページ1とこれより後のページ2およびページ3とに書き込まれるべきであったデータが、置き換えブロック500内の対応するページ1〜3に書き込まれる。つまり、元のブロック300においてデータの書き込みが完了しているページ0に対応する置き換えブロック500内のページ0には、データが書き込まれないように制御される。
置き換えテーブル38には、図29に示すように、書き込み失敗位置がブロック300のページ1であって、置き換え位置がブロック500のページ1であることを示すエントリが追加される。なお、置き換えブロック500では、書き込み失敗位置のページ(ここでは、ページ1)と同一のページ番号を有するページからデータが書き込まれるので、置き換え位置に示されるページ番号は省略することができる。すなわち、置き換えテーブル38には、書き込み失敗位置がブロック300のページ1であって、置き換え位置がブロック500であることを示すエントリが追加されてもよい。
半導体ストレージデバイス5では、上述したような種々のブロック置き換えアルゴリズムが用いられ、状況に応じて最適なアルゴリズムを選択することもできる。そのような選択により、ブロックの置き換えによるメモリシステム1のパフォーマンスの低下を最低限に抑制することができる。また、半導体ストレージデバイス5のメモリセルアレイ31が、書き込みが失敗したページ以降にデータを書き込むことができない特性を有する場合や、書き込みが失敗したページより後のページにもデータを書き込むことができる特性を有する場合に、その特性に応じて最適なブロック置き換えアルゴリズムを選択することができる。
図30および図31を参照して、書き込み失敗を通知する半導体ストレージデバイスに接続されたメモリコントローラの動作と、本実施形態の書き込み失敗を通知しない半導体ストレージデバイス5に接続されたメモリコントローラ4の動作との差異を説明する。
図30のタイミングチャートは、書き込み失敗を通知する半導体ストレージデバイス(NAND型フラッシュメモリチップ)における、メモリセルアレイ内のあるブロックのあるページへのプログラム動作シーケンスの例を示す。メモリコントローラ(NAND I/F)は、シリアル入力コマンド“80h”、プログラム動作が実行されるべきブロックおよびページを指定するアドレス、書き込むべきデータ、プログラム開始コマンド“10h”を、入出力バッファを介してこの半導体ストレージデバイスに送出する。そして、メモリコントローラは、この半導体ストレージデバイスのレディ/ビジー信号(RY/BY)を監視し、プログラム動作の完了を待つ。この半導体ストレージデバイスにおいてプログラム動作が実行されている間(tPROG)、この半導体ストレージデバイスはビジー状態に維持される。また、メモリコントローラは、プログラム動作が実行されている間に、論理物理アドレス変換テーブルを更新する。
半導体ストレージデバイスは、プログラム動作が成功したか否かを検証するためのベリファイ動作を実行する。プログラムおよびベリファイ動作は、プログラム動作が成功するか、あるいはプログラムおよびベリファイ動作のループ回数が、設定された最大ループ回数に達するまで繰り返される。プログラムおよびベリファイ動作が完了すると、半導体ストレージデバイスは、レディ状態に戻る。半導体ストレージデバイスがレディ状態になると、メモリコントローラは、ステータスリードコマンド“70h”を、入出力バッファを介して半導体ストレージデバイスに送出する。プログラム動作が成功したならば、成功を示すステータス(passステータス)が半導体ストレージデバイスからメモリコントローラに通知される。一方、プログラム動作が成功しなかったならば、失敗を示すステータス(failステータス)が半導体ストレージデバイスからメモリコントローラに通知される。
失敗を示すステータスが通知された場合、メモリコントローラは、プログラム動作が新たに実行されるべきアドレス(すなわち、ブロックおよびページ)を決定する。なお、書き込みが失敗したページを有するブロックがセクタを構成している場合、図13を参照して上述したように、そのセクタと同数のブロックを含む新たな書き込みセクタが確保される。これは、ライト性能およびリード性能が低下しないように、あるセクタ内で連続してデータを書き込むためである。メモリコントローラは、確保された新たな書き込みセクタにおいて、プログラム動作が新たに実行されるべきアドレスを決定する。
そして、メモリコントローラは、新たなアドレスへのデータ書き込みを要求するために、再度、シリアル入力コマンド“80h”、決定されたプログラム動作が実行されるべきブロックおよびページを指定するアドレス、書き込むべきデータ、プログラム開始コマンド“10h”を、入出力バッファを介してこの半導体ストレージデバイスに送出する。また、メモリコントローラは、半導体ストレージデバイスによってプログラム動作が実行され、ビジー状態である間に、論理物理アドレス変換テーブルを再度更新する。
半導体ストレージデバイスがビジー状態からレディ状態に戻った場合、メモリコントローラは、ステータスリードコマンド“70h”を、入出力バッファを介して半導体ストレージデバイスに送出する。メモリコントローラは、半導体ストレージデバイスから成功を示すステータスまたは失敗を示すステータスの通知を受ける。
メモリコントローラは、例えば、書き込みの成功を示すステータスが半導体ストレージデバイスからメモリコントローラに通知されるまで、上述のシリアル入力コマンドを送出してからステータスの通知を受けるまでの動作を繰り返す。論理物理アドレス変換テーブルは、この動作毎に更新される。そのため、論理物理アドレス変換テーブルが膨大なデータ量を有するテーブルであるならば、その更新のための処理に時間を要し、半導体ストレージデバイスへの書き込みのための処理の効率が低下する。
さらに、上述したように、あるページへの書き込み失敗に応じて、新たな書き込みセクタにデータが書き込まれるので、元のセクタでは、バッドブロックではない正常なブロック内のページであるにも関わらず、データの書き込みに利用されないページが発生する。
一方、図31のタイミングチャートは、本実施形態の半導体ストレージデバイス5における、メモリセルアレイ31内のあるブロックのあるページへのプログラム動作シーケンスの例を示す。メモリコントローラ4(NAND I/F13)は、シリアル入力コマンド“80h”、プログラム動作が実行されるべきブロックおよびページを指定するアドレス、書き込むべきデータ、プログラム開始コマンド“10h”を、入出力バッファ32を介して半導体ストレージデバイス5に送出する。そして、メモリコントローラ4は、半導体ストレージデバイス5のレディ/ビジー信号(RY/BY)を監視し、プログラム動作の完了を待つ。半導体ストレージデバイス5においてプログラム動作が実行されている間(tPROG)、半導体ストレージデバイス5はビジー状態に維持される。また、メモリコントローラ4は、プログラム動作が実行されている間に、論理物理アドレス変換テーブル21を更新する。
半導体ストレージデバイス5は、プログラム動作が成功したか否かを検証するためのベリファイ動作を実行する。プログラムおよびベリファイ動作は、プログラム動作が成功するか、あるいはプログラムおよびベリファイ動作のループ回数が、設定された最大ループ回数に達するまで繰り返される。プログラムおよびベリファイ動作が完了し、プログラム動作が成功したならば、半導体ストレージデバイス5は、レディ状態に戻る。
プログラムおよびベリファイ動作が完了し、プログラム動作が失敗したならば、半導体ストレージデバイス5は、ビジー状態のまま、書き込みに失敗したブロック内のページを置き換えるための、置き換えブロック内のページに対して、プログラムおよびベリファイ動作を実行する。半導体ストレージデバイス5は、この置き換えブロックに対するプログラムおよびベリファイ動作が完了し、プログラム動作が成功したならば、レディ状態に戻る。一方、このプログラム動作が失敗したならば、さらに別の置き換えブロックに対するプログラムおよびベリファイ動作が実行される。つまり、このようなプログラムおよびベリファイ動作が、置き換えブロックに対するプログラム動作が成功するまで繰り返される。
このように、半導体ストレージデバイス5は、メモリコントローラ4から要求されたプログラム動作が失敗したとしても、その失敗をメモリコントローラ4に通知せず、半導体ストレージデバイス5の内部で、書き込みに失敗したデータを別のブロックに書き込むためのプログラム動作を実行する。また、メモリコントローラ4は、プログラム開始コマンド“10h”を送出して、半導体ストレージデバイス5にプログラム動作を要求した後、そのプログラム動作に関して、半導体ストレージデバイス5との間で何等処理を行うことがない。したがって、あるブロック内のページへのプログラム動作に失敗した後、メモリコントローラ4にその失敗を通知せずに、半導体ストレージデバイス5の内部で、置き換えブロックのページへのプログラム動作を効率的に行うことができる。
図32および図33のフローチャートを参照して、メモリコントローラと、書き込み失敗時にその失敗をメモリコントローラに通知する半導体ストレージデバイスとによる書き込み処理について説明する。この半導体ストレージデバイスは、本実施形態の半導体ストレージデバイス5とは異なり、書き込み失敗時に、メモリコントローラに失敗を通知することなく別のブロックにデータを書き込む置き換え機能を有していない。
図32のフローチャートは、メモリコントローラによって実行される書き込み処理の手順の例を示す。
メモリコントローラは、ある論理アドレスにデータを書き込む場合、そのデータが書き込まれる物理アドレス(書き込み先物理アドレス)を決定する(ステップS11)。メモリコントローラは、半導体ストレージデバイスに対して、書き込み先物理アドレスに対応するブロックのページにデータを書き込むことを要求する(ステップS12)。そして、メモリコントローラは、ステップS11における論理アドレスと物理アドレスとを示すエントリを用いて、論理物理アドレス変換テーブルを更新する(ステップS13)。
次いで、メモリコントローラは、半導体ストレージデバイスによる書き込みが完了したか否かを判定する(ステップS14)。メモリコントローラは、半導体ストレージデバイスのレディ/ビジー信号(RY/BY)を監視し、書き込みを要求した後、ビジー状態からレディ状態に戻ったことに応じて、書き込みが完了したと判断する。より具体的には、メモリコントローラは、半導体ストレージデバイスによるプログラム動作およびベリファイ動作が完了したか否かを判定する。メモリコントローラは、半導体ストレージデバイスのレディ/ビジー信号(RY/BY)を監視し、プログラム開始コマンドを送出した後、ビジー状態からレディ状態に戻ったことに応じて、プログラム動作およびベリファイ動作が完了したと判断する。
書き込みが完了していない場合(ステップS14のNO)、ステップS14に戻り、半導体ストレージデバイスによる書き込みが完了したか否かが再度判定される。したがって、メモリコントローラは、半導体ストレージデバイスによる書き込みが完了するまで、後続する手順の実行を待つ。
一方、書き込みが完了した場合(ステップS14のYES)、メモリコントローラは、半導体ストレージデバイスにステータスの通知を要求する(ステップS15)。プログラム動作が成功したならば、成功を示すステータスが半導体ストレージデバイスからメモリコントローラに通知される。一方、プログラム動作が失敗したならば、失敗を示すステータスが半導体ストレージデバイスからメモリコントローラに通知される。
メモリコントローラは、通知されたステータスに基づき、書き込みが成功したか否かを判定する(ステップS16)。書き込みが成功した場合(ステップS16のYES)、処理を終了する。
書き込みが失敗した場合(ステップS16のNO)、メモリコントローラは、エラー内容を確認し、ライトリトライを準備し(ステップS17)、ステップS11に戻る。すなわち、書き込みが失敗したデータを半導体ストレージデバイス内の別の物理アドレスに書き込むための手順がさらに実行される。
図33のフローチャートは、書き込み失敗時にその失敗をメモリコントローラに通知する半導体ストレージデバイスによって実行される書き込み処理の手順の例を示す。
半導体ストレージデバイスは、メモリコントローラから書き込みが要求されたか否かを判定する(ステップS21)。メモリコントローラによる書き込みの要求においては、書き込み先のブロックおよびページを指定するアドレスと書き込むべきデータとがメモリコントローラから半導体ストレージデバイスに送出される。書き込みが要求されていない場合(ステップS21のNO)、ステップS21に戻る。
一方、書き込みが要求された場合(ステップS21のYES)、半導体ストレージデバイスは、レディ/ビジー信号(RY/BY)をレディ状態からビジー状態に遷移させ、書き込み先のブロックのページにデータを書き込む(ステップS22)。より具体的には、半導体ストレージデバイスは、書き込み先のブロックのページにデータをプログラムするためのプログラム動作を実行し、そしてプログラム動作が成功したか否かを検証するためのベリファイ動作を実行する。プログラムおよびベリファイ動作は、プログラム動作が成功するか、あるいはプログラムおよびベリファイ動作のループ回数が、設定された最大ループ回数に達するまで繰り返される。
書き込み動作(すなわち、プログラムおよびベリファイ動作)が完了し、書き込みが成功したならば(ステップS23のYES)、半導体ストレージデバイスは成功を示すステータスを入出力バッファ(ステータスレジスタ)に設定する(ステップS24)。一方、書き込みが失敗したならば(ステップS23のNO)、半導体ストレージデバイスは失敗を示すステータスを入出力バッファに設定する(ステップS25)。そして、半導体ストレージデバイスは、レディ/ビジー信号(RY/BY)をレディ状態に戻す(ステップS26)。
次いで、半導体ストレージデバイスは、メモリコントローラからステータスの通知が要求されたか否かを判定する(ステップS27)。ステータスの通知が要求されていない場合(ステップS27のNO)、ステップS27に戻る。
ステータスの通知が要求された場合(ステップS27のYES)、半導体ストレージデバイスは、書き込みの成功または失敗を示すステータスをメモリコントローラに通知し(ステップS28)、処理を終了する。
以上により、半導体ストレージデバイスにおいて書き込みが失敗した場合、半導体ストレージデバイスによる通知に応じて、メモリコントローラは半導体ストレージデバイスにライトリトライのための書き込み動作を実行させる。このようなライトリトライにより、書き込まれるデータが断片化し、アクセス性能が低下する可能性がある。また、論理物理アドレス変換テーブルはライトリトライの度に更新されるが、論理物理アドレス変換テーブルが膨大なサイズを有する場合には、更新のための処理に時間を要し、半導体ストレージデバイスへの書き込みのための処理の効率が低下する。
これに対して、図34および図35のフローチャートは、本実施形態のメモリコントローラ4と半導体ストレージデバイス5とによって実行される書き込み処理の例を示す。半導体ストレージデバイス5は、書き込み失敗時に、メモリコントローラ4に失敗を通知することなく、別のブロックにデータを書き込む置き換え機能を有している。
図34のフローチャートを参照して、メモリコントローラ4によって実行される書き込み処理の手順の例を説明する。
メモリコントローラ4は、ある論理アドレスにデータを書き込む場合、そのデータが書き込まれるべき物理アドレスを決定する(ステップS31)。メモリコントローラ4は、半導体ストレージデバイス5に対して、書き込み先物理アドレスに対応するブロックのページにデータを書き込むことを要求する(ステップS32)。そして、メモリコントローラ4は、ステップS31における論理アドレスと物理アドレスとを示すエントリを用いて、論理物理アドレス変換テーブル21を更新し(ステップS33)、処理を終了する。
このように、メモリコントローラ4は、半導体ストレージデバイス5に書き込みを要求するだけでよく、書き込みの成功/失敗の通知を要求したり、失敗時にライトリトライのための処理を行ったりする必要がない。
図35のフローチャートは、半導体ストレージデバイス5によって実行される書き込み処理の手順の例を示す。
半導体ストレージデバイス5は、メモリコントローラ4から書き込みが要求されたか否かを判定する(ステップS401)。メモリコントローラ4による書き込みの要求においては、書き込み先のブロックおよびページを指定するアドレスと書き込むべきデータとがメモリコントローラ4から半導体ストレージデバイス5に送出される。書き込みが要求されていない場合(ステップS401のNO)、ステップS401に戻る。
一方、書き込みが要求された場合(ステップS401のYES)、半導体ストレージデバイス5は、置き換えテーブル38を用いて、メモリコントローラ4によって書き込み先のアドレスとして指定されたブロックのページが書き込み可能であるか否かを判定する(ステップS402)。
書き込み先のブロックのページが書き込み可能である場合(ステップS402のYES)、半導体ストレージデバイス5は、その書き込み先のブロックのページにデータを書き込む(ステップS403)。より具体的には、半導体ストレージデバイス5は、書き込み先のブロックのページにデータをプログラムするためのプログラム動作を実行し、そしてプログラム動作が成功したか否かを検証するためのベリファイ動作を実行する。プログラムおよびベリファイ動作は、プログラム動作が成功するか、あるいはプログラムおよびベリファイ動作のループ回数が、設定された最大ループ回数に達するまで繰り返される。
書き込み動作(すなわち、プログラムおよびベリファイ動作)が完了したならば、半導体ストレージデバイス5は、書き込みが成功したか否かを判定する(ステップS404)。書き込みが成功した場合(ステップS404のYES)、処理を終了する。
書き込みが失敗した場合(ステップS404のNO)、あるいは書き込み先のブロックのページが書き込み不可である場合(ステップS402のNO)、半導体ストレージデバイス5は、書き込み先の置き換えのための置き換えブロックが割り当て済みであるか否かを判定する(ステップS405)。置き換えブロックが割り当てられていない場合(ステップS405のNO)、半導体ストレージデバイス5は、有効データを含まないフリーブロック群から一つのブロックを選択し、イレーズ処理を施して、置き換えブロックとして割り当てる(ステップS406)。そして、半導体ストレージデバイス5は置き換えテーブル38を更新する(ステップS407)。半導体ストレージデバイス5は、書き込みに失敗した物理記憶位置と、その書き込み先から置き換えられた物理記憶位置とを示すエントリを、置き換えテーブル38に追加する。
置き換えブロックが割り当てられている場合(ステップS405のYES)、ステップS406およびステップS407がスキップされる。
次いで、半導体ストレージデバイス5は、その置き換えブロック内の置き換え先のページを決定する(ステップS408)。半導体ストレージデバイス5は、決定された置き換え先のページにデータを書き込む(ステップS409)。そして、半導体ストレージデバイス5は、書き込みが成功したか否かを判定する(ステップS410)。書き込みが失敗した場合(ステップS410のNO)、ステップS405に戻り、別の置き換え先にデータを書き込むための手順が実行される。
一方、書き込みが成功した場合(ステップS410のYES)、処理を終了する。
以上の構成により、第1実施形態によれば、半導体ストレージデバイスへのデータの書き込みに失敗した後の再書き込みを効率化することができる。置き換えコントローラ34は、メモリコントローラ4によって、メモリセルアレイ31内の第1ブロックに含まれる第1ページに第1データを書き込むことが要求された場合に、第1ページへの第1データの書き込みが失敗したならば、当該書き込みの失敗をメモリコントローラ4に通知することなく、第1データを、メモリセルアレイ31内の第2ブロックに書き込む。
これにより、半導体ストレージデバイス5における書き込み失敗を考慮することなく追記書き込みを要求できるシンプルなインタフェースを、メモリコントローラ4に対して提供することができる。メモリコントローラ4では書き込み失敗に応じたエラー処理が行われず、且つメモリコントローラ4と半導体ストレージデバイス5との間でエラー処理のためのデータ伝送が行われないので、書き込み失敗に対処するための処理を簡素化および高速化することができる。
また、半導体ストレージデバイス5では、書き込みに失敗したブロックと、その置き換えに用いられたブロックとが、置き換えテーブル38を用いて管理される。これにより、書き込みに失敗したバッドブロックを、置き換えテーブル38を用いて認識できるので、メモリコントローラ4ではバッドブロックの管理が不要となる。
(第2実施形態)
第1実施形態では、メモリコントローラ4と半導体ストレージデバイス5とが、NANDインタフェース13および入出力バッファ32を介して制御信号、コマンド、アドレス、およびデータの授受を行う。これに対して、第2実施形態では、NANDインタフェース13と入出力バッファ32との間に、書き込みに失敗したブロックを別のブロックに置き換えるための置き換えコントローラ34を含むモジュールが設けられる。
第1実施形態では、メモリコントローラ4と半導体ストレージデバイス5とが、NANDインタフェース13および入出力バッファ32を介して制御信号、コマンド、アドレス、およびデータの授受を行う。これに対して、第2実施形態では、NANDインタフェース13と入出力バッファ32との間に、書き込みに失敗したブロックを別のブロックに置き換えるための置き換えコントローラ34を含むモジュールが設けられる。
第2実施形態に係るメモリシステム1の構成は第1実施形態のメモリシステム1と同様であり、第2実施形態と第1実施形態とでは、半導体ストレージデバイス5において、置き換えコントローラ34およびRAM35を含むモジュールと、メモリセルアレイ31、入出力バッファ32、制御回路33、および周辺回路36を含むモジュールとが別々に設けられる点のみが異なる。以下、第1実施形態と異なる点のみを説明する。
図36に示すように、半導体ストレージデバイス5は、置き換えモジュール51とメモリモジュール52とを備える。置き換えモジュール51は、置き換えコントローラ34およびRAM35を備える。メモリモジュール52は、メモリセルアレイ31、入出力バッファ32、制御回路33、および周辺回路36を備える。置き換えモジュール51とメモリモジュール52とは、別々のチップに設けられる。また、置き換えモジュール51が設けられるチップと、メモリモジュール52が設けられるチップとは、同一パッケージ内(すなわち、一つの半導体ストレージデバイス5内)に含まれる。
置き換えコントローラ34は、入出力バッファ32を介して、制御回路33による、あるブロックのあるページへのデータの書き込みが失敗したことを検出する。置き換えコントローラ34は、検出された書き込みの失敗に応じて、置き換え先のブロックを決定し、書き込みが失敗したデータを置き換え先のブロック内のページ(例えば、先頭のページ、書き込みが失敗したページと同一のページ番号のページ、等)に書き込むように、制御回路33に要求する。より具体的には、置き換えコントローラ34は、この要求のために、例えば、シリアル入力コマンド“80h”、プログラム動作が実行されるべき置き換え先のブロックおよびページを指定するアドレス、書き込むべきデータ、プログラム開始コマンド“10h”を入出力バッファ32に送出する。制御回路33は、この要求(コマンドおよびデータ)に応じて、置き換え先のブロック内のページに対するデータの書き込み動作を行う。また、置き換えコントローラ34は、書き込みが失敗したブロック内のページを示す書き込み失敗位置と、置き換え先のブロックを示す置き換え位置とを含むエントリを置き換えテーブル38に追加する。
また、置き換えコントローラ34は、置き換えテーブル38を用いて、メモリコントローラ4から半導体ストレージデバイス5に供給される外部制御信号、コマンド、アドレス、およびデータの内、ブロックの置き換えに関わる外部制御信号、コマンド、アドレス、およびデータを検出する。より具体的には、置き換えコントローラ34は、メモリコントローラ4による、例えば、書き込みが失敗したページより後のページへの書き込み要求や、書き込みに失敗したページ以降のページからの読み出し要求に関わる外部制御信号、コマンド、アドレス、およびデータを検出する。
置き換えコントローラ34は、書き込みが失敗したページより後のページへの書き込み要求を、対応する置き換えブロック内のページへの書き込み要求に変換し、変換された書き込み要求に対応する外部制御信号、コマンド、アドレス、およびデータを入出力バッファ32に送出する。また、置き換えコントローラ34は、書き込みに失敗したページ以降のページからの読み出し要求を、対応する置き換えブロック内のページからの読み出し要求に変換し、変換された読み出し要求に対応する外部制御信号、コマンド、アドレス、およびデータを入出力バッファ32に送出する。なお、置き換えコントローラ34は、ブロックの置き換えに関わらない外部制御信号、コマンド、アドレス、およびデータをそのまま入出力バッファ32に送出する。
制御回路33は、第1実施形態において上述した動作と同様に、入出力バッファ32を介して供給される各種の外部制御信号と、コマンド、アドレスとに基づき、データの書き込み動作、消去動作、および読み出し動作を制御する。
なお、置き換えモジュール51が設けられるチップと、メモリモジュール52が設けられるチップとは、別々のパッケージ内に含まれていてもよい。例えば、メモリモジュール52のチップが半導体ストレージデバイス5のパッケージ内に含まれる一方、置き換えモジュール51のチップがこれとは別のパッケージ内に含まれていてもよい。
以上説明したように、第1および第2実施形態によれば、半導体ストレージデバイスへのデータの書き込みに失敗した後の再書き込みを効率化することができる。メモリシステム1は、半導体ストレージデバイス5と、当該半導体ストレージデバイス5と電気的に接続されるメモリコントローラ4から構成される。半導体ストレージデバイス5は、複数のブロックを含むメモリセルアレイ31と置き換えコントローラ34とを備える。置き換えコントローラ34は、メモリコントローラ4によって、メモリセルアレイ31内の第1ブロックに含まれる第1ページに第1データを書き込むことが要求された場合に、第1ページへの第1データの書き込みが失敗したならば、当該書き込みの失敗をメモリコントローラ4に通知することなく、第1データを、メモリセルアレイ31内の第2ブロックに書き込む。
このように、メモリコントローラ4との間で何等処理を行うことなく、書き込みに失敗した第1データを別の第2ブロックに書き込むことができるので、書き込みに失敗した後の再書き込みを効率化することができる。
なお、第1および第2実施形態では、不揮発性メモリとしてNAND型フラッシュメモリを例示した。しかし、これら実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
また、第1および第2実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。これら実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…メモリシステム、2…ホスト、4…メモリコントローラ、5…半導体ストレージデバイス、6…DRAM、10…バス、11…ホスト I/F、12…CPU、13…NAND I/F、14…DRAM I/F、121…リード制御部、122…ライト制御部、123…GC制御部、21…論理物理アドレス変換テーブル、30…バス、31…メモリセルアレイ、32…入出力バッファ、33…制御回路、34…置き換えコントローラ、35…RAM、36…周辺回路、38…置き換えテーブル、39…フリーブロック情報。
Claims (12)
- 半導体ストレージデバイスと、
前記半導体ストレージデバイスと電気的に接続される第1コントローラとから構成されるメモリシステムであって、
前記半導体ストレージデバイスは、
複数のブロックを含む不揮発性メモリと、
前記第1コントローラによって、前記不揮発性メモリ内の第1ブロックに含まれる第1ページに第1データを書き込むことが要求された場合に、前記第1ページへの前記第1データの書き込みが失敗したならば、当該書き込みの失敗を前記第1コントローラに通知することなく、前記第1データが、前記不揮発性メモリ内の第2ブロックに書き込まれるように制御する第2コントローラとを具備するメモリシステム。 - 前記第2コントローラは、さらに、前記第2ブロックへの前記第1データの書き込みが成功した後、前記第1コントローラによって、前記第1ブロック内の前記第1ページより後の第2ページに第2データを書き込むことが要求された場合、前記第2データが、前記第2ブロックに書き込まれるように制御する請求項1記載のメモリシステム。
- 前記第2コントローラは、さらに、前記第2ブロックへの前記第1データの書き込みが失敗したならば、当該書き込みの失敗を前記第1コントローラに通知することなく、前記第1データが、前記不揮発性メモリ内の第3ブロックに書き込まれるように制御する請求項1記載のメモリシステム。
- 前記第2コントローラは、さらに、前記第3ブロックへの前記第1データの書き込みが成功した後、前記第1コントローラによって、前記第1ブロック内の前記第1ページより後の第2ページに第2データを書き込むことが要求された場合、前記第2データが、前記第3ブロックに書き込まれるように制御する請求項3記載のメモリシステム。
- 前記第2コントローラは、さらに、前記第1ページへの前記第1データの書き込みが失敗したならば、前記第1ブロックに書き込まれているデータと前記第1データとが、前記第2ブロックに書き込まれるように制御する請求項1記載のメモリシステム。
- 前記第2コントローラは、さらに、前記第1ページへの前記第1データの書き込みが失敗したならば、前記第1データが、前記第2ブロックの先頭のページに書き込まれるように制御する請求項1記載のメモリシステム。
- 前記第2コントローラは、さらに、前記第1ページへの前記第1データの書き込みが失敗したならば、前記第1データが、前記第2ブロック内の、前記第1ページと同一のページ番号を有するページに書き込まれるように制御する請求項1記載のメモリシステム。
- 前記第2コントローラは、前記第1ページへの前記第1データの書き込みが失敗したならば、(a)前記第1ブロックに書き込まれているデータと前記第1データとを前記第2ブロックに書き込むこと、(b)前記第1データを前記第2ブロックの先頭ページに書き込むこと、および(c)前記第2ブロック内の、前記第1ページと同一のページ番号を有するページに、前記第1データを書き込むこと、の内のいずれかを選択するように構成される請求項1記載のメモリシステム。
- 前記第2コントローラは、さらに、前記第2ブロックへの前記第1データの書き込みが成功した後、前記第1コントローラによって、前記第1ブロック内の前記第1ページから前記第1データを読み出すことが要求された場合、前記第2ブロックから前記第1データが読み出されるように制御する請求項1記載のメモリシステム。
- 前記第2コントローラは、さらに、前記第1ブロックおよび前記第1ページを示す書き込み失敗位置と、前記書き込み失敗位置に関連付けられ、前記第2ブロックを示す置き換え位置とを記録する請求項1記載のメモリシステム。
- 前記第2コントローラは、前記第1ページへの前記第1データの書き込みが失敗したならば、前記第1ブロックに含まれる複数のページの内、前記第1ページ以降のページにデータが書き込まれないように制御する請求項1記載のメモリシステム。
- 前記第1コントローラは、
第1論理アドレスに前記第1データを書き込むことが要求された場合に、前記第1データが書き込まれるべき第1物理アドレスを決定し、
前記第1物理アドレスに対応する前記第1ブロック内の前記第1ページに前記第1データを書き込むことを前記半導体ストレージデバイスに要求し、
前記第1データの書き込みが完了する前に、前記第1論理アドレスと前記第1物理アドレスとの対応を示すように論理物理アドレス変換テーブルを更新するように構成される請求項1記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018113505A JP2019215777A (ja) | 2018-06-14 | 2018-06-14 | メモリシステム |
US16/271,555 US11061610B2 (en) | 2018-06-14 | 2019-02-08 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018113505A JP2019215777A (ja) | 2018-06-14 | 2018-06-14 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019215777A true JP2019215777A (ja) | 2019-12-19 |
Family
ID=68840002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018113505A Pending JP2019215777A (ja) | 2018-06-14 | 2018-06-14 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US11061610B2 (ja) |
JP (1) | JP2019215777A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023003920A1 (en) * | 2021-07-21 | 2023-01-26 | Abbott Diabetes Care Inc. | Over-the-air programming of sensing devices |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5193822B2 (ja) | 2008-11-19 | 2013-05-08 | 株式会社東芝 | 追記型メモリデバイス |
US20110202554A1 (en) * | 2010-02-18 | 2011-08-18 | Hand Held Products, Inc. | Remote device management system and method |
JP5377526B2 (ja) * | 2011-01-13 | 2013-12-25 | 株式会社東芝 | 不揮発性半導体記憶装置 |
US9128822B2 (en) | 2012-06-22 | 2015-09-08 | Winbond Electronics Corporation | On-chip bad block management for NAND flash memory |
US10175889B2 (en) * | 2016-03-10 | 2019-01-08 | Toshiba Memory Corporation | Memory system capable of accessing memory cell arrays in parallel |
-
2018
- 2018-06-14 JP JP2018113505A patent/JP2019215777A/ja active Pending
-
2019
- 2019-02-08 US US16/271,555 patent/US11061610B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11061610B2 (en) | 2021-07-13 |
US20190384531A1 (en) | 2019-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11221914B2 (en) | Memory system for controlling nonvolatile memory | |
JP7446482B2 (ja) | 順次的にプログラムするメモリサブシステムにおいて非同期電力損失をハンドリングすること | |
US11301369B2 (en) | Logical to physical mapping management using low-latency non-volatile memory | |
JP7358594B2 (ja) | メモリシステム | |
KR20210039871A (ko) | 메타 데이터를 관리하는 스토리지 시스템, 스토리지 시스템을 제어하는 호스트 시스템 및 스토리지 시스템의 동작방법 | |
JP5525605B2 (ja) | フラッシュメモリモジュール | |
JP2021114038A (ja) | メモリシステムおよび制御方法 | |
US20130173954A1 (en) | Method of managing bad storage region of memory device and storage device using the method | |
US10936203B2 (en) | Memory storage device and system employing nonvolatile read/write buffers | |
CN114341824B (zh) | 用于粗映射存储器子系统的取消映射 | |
JP2019020788A (ja) | メモリシステムおよび制御方法 | |
US11360868B2 (en) | Redundant cloud memory storage for a memory subsystem | |
JP7353934B2 (ja) | メモリシステムおよび制御方法 | |
US20150052329A1 (en) | Memory control device, host computer, information processing system and method of controlling memory control device | |
JP7381678B2 (ja) | メモリシステム | |
KR20200033625A (ko) | 메모리 시스템에서의 유효 데이터 체크 방법 및 장치 | |
JP7392080B2 (ja) | メモリシステム | |
JP2022171208A (ja) | メモリシステムおよび制御方法 | |
JP2019148913A (ja) | メモリシステム | |
US11366751B2 (en) | Storage device and storage control method | |
TW201935232A (zh) | 記憶體管理方法及使用所述方法的儲存控制器 | |
US11061610B2 (en) | Memory system | |
US12079499B2 (en) | Managing superblock writes using data transfer lists | |
CN115203066A (zh) | 检测到故障后生成裸片块映射的系统、存储媒体和方法 | |
US20240329882A1 (en) | Memory system and information processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180830 |