JP6012432B2 - 半導体記憶装置 - Google Patents

半導体記憶装置 Download PDF

Info

Publication number
JP6012432B2
JP6012432B2 JP2012258860A JP2012258860A JP6012432B2 JP 6012432 B2 JP6012432 B2 JP 6012432B2 JP 2012258860 A JP2012258860 A JP 2012258860A JP 2012258860 A JP2012258860 A JP 2012258860A JP 6012432 B2 JP6012432 B2 JP 6012432B2
Authority
JP
Japan
Prior art keywords
block
floating
blocks
data storage
user data
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.)
Expired - Fee Related
Application number
JP2012258860A
Other languages
English (en)
Other versions
JP2014106718A (ja
Inventor
裕子 玉川
裕子 玉川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MegaChips Corp
Original Assignee
MegaChips Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by MegaChips Corp filed Critical MegaChips Corp
Priority to JP2012258860A priority Critical patent/JP6012432B2/ja
Publication of JP2014106718A publication Critical patent/JP2014106718A/ja
Application granted granted Critical
Publication of JP6012432B2 publication Critical patent/JP6012432B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System (AREA)

Description

本発明は、半導体記憶装置に関する。
一般的に、NAND型フラッシュメモリの記憶領域は複数のブロックに分割されており、各ブロックには複数のページが含まれている。NAND型フラッシュメモリにおいて、データの書き込み及び読み出しの最小単位はページであり、データの消去の最小単位はブロックである。
NAND型フラッシュメモリの記憶領域は、ユーザデータ領域、管理領域、テンポラリデータ格納領域、及び代替領域に区分される。ユーザデータ領域には、ユーザデータが格納されるブロックである複数のユーザデータ格納ブロックが含まれる。管理領域には、記憶部を管理するための管理情報が格納されるブロックである複数の管理情報格納ブロックが含まれる。テンポラリデータ格納領域には、ユーザデータを一時的に格納するための複数のテンポラリデータ格納ブロックが含まれる。代替領域には、初期不良ブロック及び後発不良ブロックと代替するための複数の代替ブロックが含まれる。
NAND型フラッシュメモリに書き込まれたデータをページ単位で管理する場合には、ブロック単位で論理−物理アドレス変換を行うためのテーブル(以下「ブロック論物変換テーブル」と称す)とは別に、アクセスされたブロックに対してページ単位で論理−物理アドレス変換を行うためのテーブル(以下「ページ論物変換テーブル」と称す)が必要である。ブロック論物変換テーブル及びページ論物変換テーブルは、管理領域に格納される。また、テンポラリデータ格納領域は、ページ単位での論物変換によってデータを管理するための領域(以下「ページ論物領域」と称す)として使用することができる。
なお、下記特許文献1には、ブロック管理システムを伴うフラッシュメモリ等の不揮発性メモリにおいて、データを記録するために開放されている更新ブロックを置換するためのブロック置換手法が開示されている。
特表2010−503929号公報
上述した背景技術に係るNAND型フラッシュメモリにおいて、テンポラリデータ格納領域のブロック数は、ユーザデータ領域、管理領域、及び代替領域の各ブロック数に応じて、上限値が定められている。つまり、ページ論物領域のブロック数が一定の上限値に固定されている。従って、ページ論物領域の上限値を超えるブロックにアクセスが行われた場合には、書き込まれたデータはページ単位ではなくブロック単位で管理されることとなるため、無駄なブロック消去が発生してレイテンシ及びライフタイムの観点から非効率である。
本発明はかかる事情に鑑みて成されたものであり、テンポラリデータ格納ブロックとして使用するブロック数を効率的に拡張することにより、レイテンシ及びライフタイムを改善することが可能な、半導体記憶装置を得ることを目的とする。
本発明の第1の態様に係る半導体記憶装置は、それぞれに複数のページを含む複数のブロックを有する記憶部と、前記記憶部を制御する制御部と、を備え、前記記憶部は、ユーザデータが格納されるブロックである複数のユーザデータ格納ブロックを含むユーザデータ領域と、前記記憶部を管理するための管理情報が格納されるブロックである複数の管理情報格納ブロックを含む管理領域と、ユーザデータ格納ブロック及び管理情報格納ブロック以外のブロックである複数の浮遊ブロックを含む浮遊領域と、を有し、前記制御部は、後発不良ブロックが発生した場合に当該後発不良ブロックと代替するための代替ブロックとして浮遊ブロックを使用し、また、全ての浮遊ブロックのうちその時点で代替ブロックとして使用されていない残余の浮遊ブロックを、ユーザデータを一時的に格納するためのテンポラリデータ格納ブロックとして使用し、全ての浮遊ブロックのうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロックの数が所定の閾値以下となった場合、前記制御部は、全てのユーザデータ格納ブロックのうち使用されていないユーザデータ格納ブロックを、浮遊ブロックとして使用することを特徴とするものである。
第1の態様に係る半導体記憶装置によれば、記憶部は、複数の浮遊ブロックを含む浮遊領域を有する。そして、制御部は、後発不良ブロックが発生した場合に当該後発不良ブロックと代替するための代替ブロックとして浮遊ブロックを使用し、また、全ての浮遊ブロックのうちその時点で代替ブロックとして使用されていない残余の浮遊ブロックを、ユーザデータを一時的に格納するためのテンポラリデータ格納ブロックとして使用する。従って、後発不良ブロックの数が少ない時点では、残余の浮遊ブロック数が多いため、テンポラリデータ格納ブロックとして使用するブロック数を多く確保することができる。その結果、テンポラリデータ格納ブロックとして使用するブロック数を効率的に拡張できるため、レイテンシ及びライフタイムを改善することが可能となる。
また、第1の態様に係る半導体記憶装置によれば、全ての浮遊ブロックのうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロックの数が所定の閾値以下となった場合、制御部は、全てのユーザデータ格納ブロックのうち使用されていないユーザデータ格納ブロックを、浮遊ブロックとして使用する。ユーザデータ領域内の未使用のユーザデータ格納ブロックを浮遊ブロックとして確保し、当該浮遊ブロックを代替ブロック又はテンポラリデータ格納ブロックとして使用することにより、レイテンシ及びライフタイムをさらに改善することが可能となる。
本発明の第2の態様に係る半導体記憶装置は、第1の態様に係る半導体記憶装置において特に、前記制御部は、テンポラリデータ格納ブロックを、ページ単位での論理−物理アドレス変換によってデータを管理する領域として使用することを特徴とするものである。
第2の態様に係る半導体記憶装置によれば、制御部は、テンポラリデータ格納ブロックを、ページ単位での論理−物理アドレス変換によってデータを管理する領域(ページ論物領域)として使用する。ページ論物領域が効率的に拡張されることにより、無駄なブロック消去の発生を抑制できるため、レイテンシ及びライフタイムを改善することが可能となる。
本発明の第3の態様に係る半導体記憶装置は、第1又は第2の態様に係る半導体記憶装置において特に、データの書き込み要求を受領した場合、前記制御部は、全ての浮遊ブロックのうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロックに、当該データを書き込むことを特徴とするものである。
第3の態様に係る半導体記憶装置によれば、データの書き込み要求を受領した場合、制御部は、全ての浮遊ブロックのうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロックに、当該データを書き込む。代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロックが残存している場合には、当該浮遊ブロックを新たなテンポラリデータ格納ブロックとして割り当てて当該ブロックにデータを書き込むことにより、テンポラリデータ格納ブロックへのデータの書き込みを簡易に行うことが可能となる。
本発明の第4の態様に係る半導体記憶装置は、第1〜第3のいずれか一つの態様に係る半導体記憶装置において特に、データの書き込み要求を受領した場合、前記制御部は、当該データに対して割り当てられているテンポラリデータ格納ブロックの空きページに、当該データを書き込むことを特徴とするものである。
第4の態様に係る半導体記憶装置によれば、データの書き込み要求を受領した場合、制御部は、当該データに対して割り当てられているテンポラリデータ格納ブロックの空きページに、当該データを書き込む。書き込み要求のあったデータに対して既にテンポラリデータ格納ブロックが割り当てられており、当該テンポラリデータ格納ブロックに空きページが存在している場合には、当該空きページにデータを書き込むことにより、テンポラリデータ格納ブロックへのデータの書き込みを簡易に行うことが可能となる。
本発明の第5の態様に係る半導体記憶装置は、第1〜第4のいずれか一つの態様に係る半導体記憶装置において特に、後発不良ブロックが発生した場合、前記制御部は、全ての浮遊ブロックのうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロックを、当該後発不良ブロックの代替ブロックとして使用することを特徴とするものである。
第5の態様に係る半導体記憶装置によれば、後発不良ブロックが発生した場合、制御部は、全ての浮遊ブロックのうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロックを、当該後発不良ブロックの代替ブロックとして使用する。代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロックが残存している場合には、当該浮遊ブロックを代替ブロックとして使用することにより、後発不良ブロックの代替処理を簡易に行うことが可能となる。
本発明の第6の態様に係る半導体記憶装置は、第1〜第5のいずれか一つの態様に係る半導体記憶装置において特に、全ての浮遊ブロックのうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロックの数が所定の閾値以下となった場合、前記制御部は、前記浮遊領域内で空きブロックを生成することにより、新たな浮遊ブロックを確保することを特徴とするものである。
第6の態様に係る半導体記憶装置によれば、全ての浮遊ブロックのうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロックの数が所定の閾値以下となった場合、制御部は、浮遊領域内で空きブロックを生成することにより、新たな浮遊ブロックを確保する。浮遊領域内に確保した新たな浮遊ブロックを代替ブロック又はテンポラリデータ格納ブロックとして使用することにより、レイテンシ及びライフタイムをさらに改善することが可能となる。
本発明の第の態様に係る半導体記憶装置は、第1〜第6のいずれか一つの態様に係る半導体記憶装置において特に、全てのユーザデータ格納ブロックのうち使用されていないユーザデータ格納ブロックが存在しない場合、前記制御部は、前記ユーザデータ領域内で空きブロックを生成することにより、新たな浮遊ブロックを確保することを特徴とするものである。
の態様に係る半導体記憶装置によれば、全てのユーザデータ格納ブロックのうち使用されていないユーザデータ格納ブロックが存在しない場合、制御部は、ユーザデータ領域内で空きブロックを生成することにより、新たな浮遊ブロックを確保する。ユーザデータ領域内に確保した新たな浮遊ブロックを代替ブロック又はテンポラリデータ格納ブロックとして使用することにより、レイテンシ及びライフタイムをさらに改善することが可能となる。
本発明の第の態様に係る半導体記憶装置は、第1〜第7のいずれか一つの態様に係る半導体記憶装置において特に、浮遊ブロックとして使用されているユーザデータ格納ブロックに対するデータの書き込み要求を受領した場合、前記制御部は、二つの浮遊ブロックを確保し、一方の浮遊ブロックを当該データに対するユーザデータ格納ブロックとして割り当て、他方の浮遊ブロックを当該データに対するテンポラリデータ格納ブロックとして割り当てることを特徴とするものである。
の態様に係る半導体記憶装置によれば、浮遊ブロックとして使用されているユーザデータ格納ブロックに対するデータの書き込み要求を受領した場合、制御部は、二つの浮遊ブロックを確保し、一方の浮遊ブロックを当該データに対するユーザデータ格納ブロックとして割り当て、他方の浮遊ブロックを当該データに対するテンポラリデータ格納ブロックとして割り当てる。これにより、浮遊ブロックとして使用されているユーザデータ格納ブロックに対するデータの書き込み要求を受領した場合であっても、当該データを、割り当てられたユーザデータ格納ブロック及びテンポラリデータ格納ブロックへ書き込むことが可能となる。
本発明の第の態様に係る半導体記憶装置は、第1〜第8のいずれか一つの態様に係る半導体記憶装置において特に、浮遊ブロックとして使用されているユーザデータ格納ブロックに対するデータの読み出し要求を受領した場合、前記制御部は、予め定められた所定値を読み出しデータとして出力することを特徴とするものである。
の態様に係る半導体記憶装置によれば、浮遊ブロックとして使用されているユーザデータ格納ブロックに対するデータの読み出し要求を受領した場合、制御部は、予め定められた所定値を読み出しデータとして出力する。これにより、浮遊ブロックとして使用されているユーザデータ格納ブロックに対するデータの読み出し要求を受領した場合であっても、読み出しデータを簡易に出力することが可能となる。
本発明によれば、テンポラリデータ格納ブロックとして使用するブロック数を効率的に拡張することにより、レイテンシ及びライフタイムを改善することが可能な、半導体記憶装置を得ることができる。
本発明の実施の形態に係る半導体記憶装置のシステム構成を簡略化して示す図である。 記憶部のメモリマップを簡略化して示す図である。 制御部の構成を簡略化して示す図である。 データの書き込み要求を受領した場合にメモリコントローラが実行する処理の流れを示すフローチャートである。 テンポラリデータ格納ブロックの割り当て処理の第1の例を示す図である。 テンポラリデータ格納ブロックの割り当て処理の第2の例を示す図である。 後発不良ブロックが発生した場合にメモリコントローラが実行する処理の流れを示すフローチャートである。 代替ブロックの割り当て処理の第1の例を示す図である。 代替ブロックの割り当て処理の第2の例を示す図である。 制御部の構成を簡略化して示す図である。 データの書き込み要求を受領した場合にメモリコントローラが実行する処理の流れを示すフローチャートである。 後発不良ブロックが発生した場合にメモリコントローラが実行する処理の流れを示すフローチャートである。 貸付ブロックの開放処理の流れを示すフローチャートである。 貸付ブロックを対象とする読み出し要求を受領した場合にメモリコントローラが実行する処理の流れを示すフローチャートである。
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
図1は、本発明の実施の形態に係る半導体記憶装置1のシステム構成を簡略化して示す図である。図1に示すように半導体記憶装置1は、制御部2と、制御部2によって制御される記憶部3とを備えている。記憶部3は、例えばNAND型のフラッシュメモリによって構成されている。記憶部3は複数のブロックに分割されており、各ブロックには複数のページが含まれている。NAND型フラッシュメモリにおいて、ページはデータの書き込み及び読み出しの最小単位であり、ブロックはデータの消去の最小単位である。
図2は、記憶部3のメモリマップを簡略化して示す図である。図2に示すように記憶部3は、ユーザデータ領域R1、管理領域R2、浮遊領域R3、及び初期不良ブロック領域R4に区分される。ユーザデータ領域R1には、ユーザデータが格納されるブロックである複数のユーザデータ格納ブロック11が含まれる。管理領域R2には、記憶部3を管理するための管理情報が格納されるブロックである複数の管理情報格納ブロック12が含まれる。初期不良ブロック領域R4には、製造時に発生した初期不良ブロック14が含まれる。
浮遊領域R3には、複数の浮遊ブロック13が含まれる。浮遊ブロック13は、テンポラリデータ格納ブロック又は代替ブロックとして使用される。具体的に制御部2は、使用時に後発不良ブロックが発生した場合に、当該後発不良ブロックと代替するための代替ブロックとして浮遊ブロック13を使用する。また、制御部2は、全ての浮遊ブロック13のうちその時点で代替ブロックとして使用されていない残余の浮遊ブロック13を、ユーザデータを一時的に格納するためのテンポラリデータ格納ブロックとして使用する。テンポラリデータ格納ブロックは、ページ単位での論物変換(論理−物理アドレス変換)によってデータを管理するためのページ論物領域として使用することができる。なお、後発不良には、データを完全に消去できない消去エラー、データの書き込み時にビットエラーが発生する書き込みエラー、及び、データの読み出し時に閾値以上のビットエラーが発生する読み出しエラーが含まれる。
図3は、制御部2の構成を簡略化して示す図である。図3に示すように制御部2は、SRAM21及びメモリコントローラ22を備えて構成されている。SRAM21内には、ブロック論物変換テーブル31、ページ論物変換テーブル32、及び浮遊ブロック管理情報33が格納されている。
ブロック論物変換テーブル31は、ブロック単位で論物変換を行うためのテーブルである。ページ論物変換テーブル32は、ページ単位で論物変換を行うためのテーブルである。
浮遊ブロック管理情報33は、浮遊ブロック13の物理ブロックアドレスが格納される待ち行列である。待ち行列としては、例えばFIFO(First In First Out)方式のキューを使用することができる。FIFO方式のキューを使用することによって、浮遊ブロック13の使用頻度が分散され、その結果、ライフタイムの向上を図ることができる。浮遊ブロック管理情報33には、全ての浮遊ブロック13のうち、代替ブロックとしてもテンポラリデータ格納ブロックとしても使用されていない未使用の浮遊ブロック13の物理ブロックアドレスが格納される。
未使用の浮遊ブロック13が代替ブロック又はテンポラリデータ格納ブロックとして使用されると、浮遊ブロック管理情報33に格納されている当該浮遊ブロック13の物理ブロックアドレスが、浮遊ブロック管理情報33から削除される。また、テンポラリデータ格納ブロックとして使用されている浮遊ブロック13のデータが消去されることにより当該浮遊ブロック13が空きブロックとなった場合には、当該浮遊ブロック13の物理ブロックアドレスが浮遊ブロック管理情報33に追加される。また、後述するガベージコレクション(garbage collection)によって浮遊領域R3内に新たな空きブロックが生成された場合には、当該空きブロックの物理ブロックアドレスが浮遊ブロック管理情報33に追加される。
ブロック論物変換テーブル31、ページ論物変換テーブル32、及び浮遊ブロック管理情報33は、記憶部3の管理領域R2に格納されており、半導体記憶装置1の電源を投入した直後に実行される起動処理において、メモリコントローラ22によって管理領域R2からSRAM21に読み出される。なお、ブロック論物変換テーブル31、ページ論物変換テーブル32、及び浮遊ブロック管理情報33は、必ずしも記憶部3に格納されている必要はなく、記憶部3とは別の再書き込み可能な不揮発性の記憶媒体(フラッシュメモリ等)に格納されていても良い。
図4は、外部のホストコンピュータ等からデータの書き込み要求を受領した場合にメモリコントローラ22が実行する処理の流れを示すフローチャートである。
まずステップSP101においてメモリコントローラ22は、書き込み要求があったデータ(以下「書き込み対象データ」と称す)の論理ブロックアドレスに対して、テンポラリデータ格納ブロックが既に割り当てられているか否かを判定する。
テンポラリデータ格納ブロックが既に割り当てられている場合(つまりステップSP101の判定結果が「YES」である場合)には、次にステップSP102においてメモリコントローラ22は、当該テンポラリデータ格納ブロック内に、書き込み対象データを格納し得る空きページ(消去済みページ)が存在しているか否かを判定する。
空きページが存在している場合(つまりステップSP102の判定結果が「YES」である場合)には、次にステップSP106においてメモリコントローラ22は、書き込み対象データを当該空きページに書き込む。
テンポラリデータ格納ブロックが割り当てられていない場合(つまりステップSP101の判定結果が「NO」である場合)、又は、空きページが存在していない場合(つまりステップSP102の判定結果が「NO」である場合)には、次にステップSP103においてメモリコントローラ22は、SRAM21内の浮遊ブロック管理情報33を確認することによって、未使用の浮遊ブロック数が所定の閾値TH1(例えば「2ブロック」)以下であるか否かを判定する。なお、閾値TH1は「3ブロック」以上に設定しても良い。
未使用の浮遊ブロック数が閾値TH1より多い場合(つまりステップSP103の判定結果が「NO」である場合)には、次にステップSP105においてメモリコントローラ22は、未使用の複数の浮遊ブロック13の中から選択した一つの浮遊ブロック13を、書き込み対象データを格納するためのテンポラリデータ格納ブロックとして割り当てる。そして、その浮遊ブロック13の物理ブロックアドレスを浮遊ブロック管理情報33から削除することによって、SRAM21内の浮遊ブロック管理情報33を更新する。また、メモリコントローラ22は、予期しない電源断に起因する不整合を回避すべく、SRAM21内の浮遊ブロック管理情報33を更新するとともに、管理領域R2内の浮遊ブロック管理情報33も同様に更新する。
図5は、テンポラリデータ格納ブロックの割り当て処理の第1の例を示す図である。説明の簡単化のため、浮遊領域R3にブロックB01〜B12が含まれる例を示している。この例において、ブロックB01〜B04は既にテンポラリデータ格納ブロックとして使用されており、ブロックB11,B12は既に代替ブロックとして使用されている。従って、ブロックB05〜B10は未使用の浮遊ブロックであり、未使用の浮遊ブロック数は閾値TH1より多い。メモリコントローラ22は、未使用の浮遊ブロックB05〜B10の中から選択した一つの浮遊ブロックB05を、書き込み対象データを格納するためのテンポラリデータ格納ブロックとして割り当てる。
一方、未使用の浮遊ブロック数が閾値TH1以下である場合(つまりステップSP103の判定結果が「YES」である場合)には、次にステップSP104においてメモリコントローラ22は、浮遊領域R3を対象とするガベージコレクションを行うことによって、浮遊領域R3内に空きブロックを生成する。ガベージコレクションによる空きブロックの生成アルゴリズムとしては、任意のものを使用することができる。例えば、不連続の空きページを1ブロックサイズ以上連続させることによって、新たな空きブロックを生成する。その後、メモリコントローラ22は、空きブロックの生成によって確保された新たな浮遊ブロック13の物理ブロックアドレスを、浮遊ブロック管理情報33に追加する。
次にステップSP105においてメモリコントローラ22は、未使用の複数の浮遊ブロック13の中から選択した一つの浮遊ブロック13を、書き込み対象データを格納するためのテンポラリデータ格納ブロックとして割り当てる。そして、その浮遊ブロック13の物理ブロックアドレスを浮遊ブロック管理情報33から削除することによって、SRAM21内の浮遊ブロック管理情報33を更新する。また、メモリコントローラ22は、予期しない電源断に起因する不整合を回避すべく、SRAM21内の浮遊ブロック管理情報33を更新するとともに、管理領域R2内の浮遊ブロック管理情報33も同様に更新する。
図6は、テンポラリデータ格納ブロックの割り当て処理の第2の例を示す図である。この例において、ブロックB01〜B09は既にテンポラリデータ格納ブロックとして使用されており、ブロックB11,B12は既に代替ブロックとして使用されている。従って、未使用の浮遊ブロックはブロックB10のみであり、未使用の浮遊ブロック数は閾値TH1以下である。メモリコントローラ22は、ブロックB01〜B09を対象とするガベージコレクションを行うことによって新たな空きブロック(この例ではブロックB08,B09)を生成する。そして、未使用の浮遊ブロックB08〜B10の中から選択した一つの浮遊ブロックB08を、書き込み対象データを格納するためのテンポラリデータ格納ブロックとして割り当てる。
次にステップSP106においてメモリコントローラ22は、ステップSP105で割り当てられたテンポラリデータ格納ブロックに、書き込み対象データを書き込む。
次にステップSP107においてメモリコントローラ22は、SRAM21内のページ論物変換テーブル32を更新する。また、メモリコントローラ22は、予期しない電源断に起因する不整合を回避すべく、SRAM21内のページ論物変換テーブル32を更新するとともに、管理領域R2内のページ論物変換テーブル32も同様に更新する。
図7は、後発不良ブロックが発生した場合にメモリコントローラ22が実行する処理の流れを示すフローチャートである。
まずステップSP201においてメモリコントローラ22は、SRAM21内の浮遊ブロック管理情報33を確認することによって、未使用の浮遊ブロック数が所定の閾値TH1以下であるか否かを判定する。
未使用の浮遊ブロック数が閾値TH1より多い場合(つまりステップSP201の判定結果が「NO」である場合)には、次にステップSP203においてメモリコントローラ22は、未使用の複数の浮遊ブロック13の中から選択した一つの浮遊ブロック13を、後発不良ブロックの代替ブロックとして割り当てる。そして、その浮遊ブロック13の物理ブロックアドレスを浮遊ブロック管理情報33から削除することによって、SRAM21内の浮遊ブロック管理情報33を更新する。また、メモリコントローラ22は、予期しない電源断に起因する不整合を回避すべく、SRAM21内の浮遊ブロック管理情報33を更新するとともに、管理領域R2内の浮遊ブロック管理情報33も同様に更新する。
図8は、代替ブロックの割り当て処理の第1の例を示す図である。この例において、ブロックB01〜B04は既にテンポラリデータ格納ブロックとして使用されており、ブロックB11,B12は既に代替ブロックとして使用されている。従って、ブロックB05〜B10は未使用の浮遊ブロックであり、未使用の浮遊ブロック数は閾値TH1より多い。メモリコントローラ22は、未使用の浮遊ブロックB05〜B10の中から選択した一つの浮遊ブロックB10を、後発不良ブロックの代替ブロックとして割り当てる。
一方、未使用の浮遊ブロック数が閾値TH1以下である場合(つまりステップSP201の判定結果が「YES」である場合)には、次にステップSP202においてメモリコントローラ22は、浮遊領域R3を対象とするガベージコレクションを行うことによって、浮遊領域R3内に空きブロックを生成する。その後、メモリコントローラ22は、空きブロックの生成によって確保された新たな浮遊ブロック13の物理ブロックアドレスを、浮遊ブロック管理情報33に追加する。
次にステップSP203においてメモリコントローラ22は、未使用の複数の浮遊ブロック13の中から選択した一つの浮遊ブロック13を、後発不良ブロックの代替ブロックとして割り当てる。そして、その浮遊ブロック13の物理ブロックアドレスを浮遊ブロック管理情報33から削除することによって、SRAM21内の浮遊ブロック管理情報33を更新する。また、メモリコントローラ22は、予期しない電源断に起因する不整合を回避すべく、SRAM21内の浮遊ブロック管理情報33を更新するとともに、管理領域R2内の浮遊ブロック管理情報33も同様に更新する。
図9は、代替ブロックの割り当て処理の第2の例を示す図である。この例において、ブロックB01〜B09は既にテンポラリデータ格納ブロックとして使用されており、ブロックB11,B12は既に代替ブロックとして使用されている。従って、未使用の浮遊ブロックはブロックB10のみであり、未使用の浮遊ブロック数は閾値TH1以下である。メモリコントローラ22は、ブロックB01〜B09を対象とするガベージコレクションを行うことによって新たな空きブロック(この例ではブロックB08,B09)を生成する。そして、未使用の浮遊ブロックB08〜B10の中から選択した一つの浮遊ブロックB10を、後発不良ブロックの代替ブロックとして割り当てる。
次にステップSP204においてメモリコントローラ22は、発生した後発不良が消去エラーであるか否かを判定する。後発不良が消去エラーである場合(つまりステップSP204の判定結果が「YES」である場合)には、次にステップSP206においてメモリコントローラ22は、SRAM21内のブロック論物変換テーブル31を更新する。また、メモリコントローラ22は、予期しない電源断に起因する不整合を回避すべく、SRAM21内のブロック論物変換テーブル31を更新するとともに、管理領域R2内のブロック論物変換テーブル31も同様に更新する。
一方、後発不良が書き込みエラー又は読み出しエラーである場合(つまりステップSP204の判定結果が「NO」である場合)には、次にステップSP205においてメモリコントローラ22は、ブロックの代替処理を実行する。つまり、後発不良が発生したブロックに格納されているデータを、ステップSP203で割り当てた代替ブロックにコピーする。次にステップSP206においてメモリコントローラ22は、SRAM21内のブロック論物変換テーブル31を更新する。また、メモリコントローラ22は、予期しない電源断に起因する不整合を回避すべく、SRAM21内のブロック論物変換テーブル31を更新するとともに、管理領域R2内のブロック論物変換テーブル31も同様に更新する。
なお、以上の説明では、ガベージコレクションによる空きブロックの生成処理(ステップSP104,SP202)を、浮遊ブロック13の割り当て処理(ステップSP105,SP203)より前に実行する例について述べた。この例に限らず、空きブロックの生成処理は浮遊ブロック13の割り当て処理より後に実行しても良い。
また、ガベージコレクションの実行タイミングは、ホストコンピュータに対する半導体記憶装置1の動作中であっても良いし、アイドル中であっても良い。
また、ガベージコレクションの対象領域は、テンポラリデータ格納ブロックとして使用されている全ての浮遊ブロック13であっても良いし、その中の一部の浮遊ブロック13であっても良い。
また、以上の説明では、SRAM21内の浮遊ブロック管理情報33が更新されると、管理領域R2内の浮遊ブロック管理情報33もそれに同期して更新する例について述べた。この例に限らず、管理領域R2内の浮遊ブロック管理情報33は、前回の更新時から一定時間が経過したタイミング、書き込み回数が所定回数に達したタイミング、又は、半導体記憶装置1の電源をオフする直前のタイミング等の、所定のタイミングで更新しても良い。ブロック論物変換テーブル31及びページ論物変換テーブル32についても同様である。
また、以上の説明では、浮遊領域R3内に存在している全ての未使用の浮遊ブロック13の物理ブロックアドレスを、浮遊ブロック管理情報33に格納する例について述べた。この例に限らず、一部の浮遊ブロック13については、浮遊ブロック管理情報33への物理ブロックアドレスの格納を省略しても良い。また、必要になった場合には、浮遊領域R3の中で消去状態の浮遊ブロック13を探索し、その浮遊ブロック13の物理ブロックアドレスを浮遊ブロック管理情報33に追加しても良い。なお、あるブロックが消去状態であるか否かは、例えば、サイドバンド及びデータ領域の値が「FFh」であればそのブロックは消去状態であり、それ以外であれば消去状態でないと判定することができる。
<発展例>
上記実施の形態では、未使用の浮遊ブロック数が閾値TH1以下である場合には、浮遊領域R3を対象とするガベージコレクションを行うことによって、浮遊領域R3内で新たな空きブロックを確保する例について説明した。この例に限らず、浮遊領域R3内での空きブロックの確保に代えて、あるいは浮遊領域R3内での空きブロックの確保に加えて、ユーザデータ領域R1で新たな空きブロックを確保しても良い。例えば、浮遊領域R3内では空きブロックを確保できなかった場合に、ユーザデータ領域R1で空きブロックを確保する処理を実行する。
以下、上記実施の形態との相違点を中心に、ユーザデータ領域R1で空きブロックを確保する処理について説明する。
図10は、制御部2の構成を簡略化して示す図である。SRAM21内には、ブロック論物変換テーブル31、ページ論物変換テーブル32、浮遊ブロック管理情報33、及び貸付テーブル34が格納されている。貸付テーブル34には、浮遊ブロックとして割り当てられたユーザデータ格納ブロック(以下「貸付ブロック」と称す)の物理ブロックアドレスに対応する論理ブロックアドレスが格納される。貸付テーブル34は、記憶部3の管理領域R2に格納されており、半導体装置1の電源が投入された直後に実行される起動処理において、メモリコントローラ22によって管理領域R2からSRAM21に読み出される。なお、貸付テーブル34は、必ずしも記憶部3に格納されている必要はなく、記憶部3とは別の再書き込み可能な不揮発性の記憶媒体(フラッシュメモリ等)に格納されていても良い。
図11は、外部のホストコンピュータ等からデータの書き込み要求を受領した場合にメモリコントローラ22が実行する処理の流れを示すフローチャートである。
まずステップSP301においてメモリコントローラ22は、書き込み対象データの論理ブロックアドレスが貸付テーブル34に格納されているか否かを判定する。
書き込み対象データの論理ブロックアドレスが貸付テーブル34に格納されている場合(つまりステップSP301の判定結果が「YES」である場合)には、次にステップSP302においてメモリコントローラ22は、貸付ブロックの開放処理を実行する。貸付ブロックの開放処理については、後述の図13を用いて詳細に説明する。
一方、書き込み対象データの論理ブロックアドレスが貸付テーブル34に格納されていない場合(つまりステップSP301の判定結果が「NO」である場合)には、次にステップSP303においてメモリコントローラ22は、書き込み対象データの論理ブロックアドレスに対してテンポラリデータ格納ブロックが既に割り当てられているか否かを判定する。
テンポラリデータ格納ブロックが既に割り当てられている場合(つまりステップSP303の判定結果が「YES」である場合)には、次にステップSP304においてメモリコントローラ22は、当該テンポラリデータ格納ブロック内に、書き込み対象データを格納し得る空きページが存在しているか否かを判定する。
空きページが存在している場合(つまりステップSP304の判定結果が「YES」である場合)には、次にステップSP311においてメモリコントローラ22は、書き込み対象データを当該空きページに書き込む。
テンポラリデータ格納ブロックが割り当てられていない場合(つまりステップSP303の判定結果が「NO」である場合)、又は、空きページが存在していない場合(つまりステップSP304の判定結果が「NO」である場合)には、次にステップSP305においてメモリコントローラ22は、SRAM21内の浮遊ブロック管理情報33を確認することによって、未使用の浮遊ブロック数が所定の閾値TH2(例えば「2ブロック」)以下であるか否かを判定する。なお、閾値TH2は「3ブロック」以上に設定しても良い。
未使用の浮遊ブロック数が閾値TH2より多い場合(つまりステップSP305の判定結果が「NO」である場合)には、次にステップSP310においてメモリコントローラ22は、未使用の複数の浮遊ブロック13の中から選択した一つの浮遊ブロック13を、書き込み対象データを格納するためのテンポラリデータ格納ブロックとして割り当てる。そして、その浮遊ブロック13の物理ブロックアドレスを浮遊ブロック管理情報33から削除することによって、SRAM21内の浮遊ブロック管理情報33を更新する。
一方、未使用の浮遊ブロック数が閾値TH2以下である場合(つまりステップSP305の判定結果が「YES」である場合)には、次にステップSP306においてメモリコントローラ22は、既に貸付ブロックとして割り当てられているブロックを除いた残り全てのユーザデータ格納ブロック11を対象とする探索を行うことにより、ユーザデータ領域R1内に未使用のユーザデータ格納ブロック11が存在するか否かを判定する。
未使用のユーザデータ格納ブロック11が存在する場合(つまりステップSP306の判定結果が「YES」である場合)には、次にステップSP307においてメモリコントローラ22は、未使用のユーザデータ格納ブロック11を、新たな浮遊ブロック13として割り当てる。その後、メモリコントローラ22は、未使用ブロックの探索によって確保された新たな浮遊ブロック13の物理ブロックアドレスを浮遊ブロック管理情報33に追加することによって、SRAM21内の浮遊ブロック管理情報33を更新する。
次にステップSP308においてメモリコントローラ22は、浮遊ブロック13として割り当てられたユーザデータ格納ブロック11の物理ブロックアドレスに対応する論理ブロックアドレスを貸付テーブル34に追加することによって、SRAM21内の貸付テーブル34を更新する。また、メモリコントローラ22は、予期しない電源断に起因する不整合を回避すべく、SRAM21内の貸付テーブル34を更新するとともに、管理領域R2内の貸付テーブル34も同様に更新する。
未使用のユーザデータ格納ブロック11が存在しない場合(つまりステップSP306の判定結果が「NO」である場合)には、次にステップSP309においてメモリコントローラ22は、ユーザデータ領域R1又は浮遊領域R3を対象とするガベージコレクションを行うことによってユーザデータ領域R1又は浮遊領域R3内に空きブロックを生成し、その空きブロックを新たな浮遊ブロック13として確保する。ここでメモリコントローラ22は、既に貸付ブロックとして割り当てられているユーザデータ格納ブロック11を優先して、ガベージコレクションを実行する。その後、メモリコントローラ22は、空きブロックの生成によって確保された新たな浮遊ブロック13の物理ブロックアドレスを、浮遊ブロック管理情報33に追加する。
次にステップSP310においてメモリコントローラ22は、未使用の複数の浮遊ブロック13の中から選択した一つの浮遊ブロック13を、書き込み対象データを格納するためのテンポラリデータ格納ブロックとして割り当てる。そして、その浮遊ブロック13の物理ブロックアドレスを浮遊ブロック管理情報33から削除することによって、SRAM21内の浮遊ブロック管理情報33を更新する。
次にステップSP311においてメモリコントローラ22は、ステップSP310で割り当てられたテンポラリデータ格納ブロックに、書き込み対象データを書き込む。
次にステップSP312においてメモリコントローラ22は、SRAM21内のページ論物変換テーブル32を更新する。
図12は、後発不良ブロックが発生した場合にメモリコントローラ22が実行する処理の流れを示すフローチャートである。
まずステップSP401においてメモリコントローラ22は、SRAM21内の浮遊ブロック管理情報33を確認することによって、未使用の浮遊ブロック数が所定の閾値TH2以下であるか否かを判定する。
未使用の浮遊ブロック数が閾値TH2より多い場合(つまりステップSP401の判定結果が「NO」である場合)には、次にステップSP406においてメモリコントローラ22は、未使用の複数の浮遊ブロック13の中から選択した一つの浮遊ブロック13を、後発不良ブロックの代替ブロックとして割り当てる。そして、その浮遊ブロック13の物理ブロックアドレスを浮遊ブロック管理情報33から削除することによって、SRAM21内の浮遊ブロック管理情報33を更新する。
一方、未使用の浮遊ブロック数が閾値TH2以下である場合(つまりステップSP401の判定結果が「YES」である場合)には、次にステップSP402においてメモリコントローラ22は、既に貸付ブロックとして割り当てられているブロックを除いた残り全てのユーザデータ格納ブロック11を対象とする探索を行うことにより、ユーザデータ領域R1内に未使用のユーザデータ格納ブロック11が存在するか否かを判定する。
未使用のユーザデータ格納ブロック11が存在する場合(つまりステップSP402の判定結果が「YES」である場合)には、次にステップSP403においてメモリコントローラ22は、未使用のユーザデータ格納ブロック11を、新たな浮遊ブロック13として割り当てる。その後、メモリコントローラ22は、未使用ブロックの探索によって確保された新たな浮遊ブロック13の物理ブロックアドレスを浮遊ブロック管理情報33に追加することによって、SRAM21内の浮遊ブロック管理情報33を更新する。
次にステップSP404においてメモリコントローラ22は、浮遊ブロック13として割り当てられたユーザデータ格納ブロック11の物理ブロックアドレスに対応する論理ブロックアドレスを貸付テーブル34に追加することによって、SRAM21内の貸付テーブル34を更新する。また、メモリコントローラ22は、予期しない電源断に起因する不整合を回避すべく、SRAM21内の貸付テーブル34を更新するとともに、管理領域R2内の貸付テーブル34も同様に更新する。
未使用のユーザデータ格納ブロック11が存在しない場合(つまりステップSP402の判定結果が「NO」である場合)には、次にステップSP405においてメモリコントローラ22は、ユーザデータ領域R1又は浮遊領域R3を対象とするガベージコレクションを行うことによってユーザデータ領域R1又は浮遊領域R3内に空きブロックを生成し、その空きブロックを新たな浮遊ブロック13として確保する。ここでメモリコントローラ22は、既に貸付ブロックとして割り当てられているユーザデータ格納ブロック11を優先して、ガベージコレクションを実行する。その後、メモリコントローラ22は、空きブロックの生成によって確保された新たな浮遊ブロック13の物理ブロックアドレスを、浮遊ブロック管理情報33に追加する。
次にステップSP406においてメモリコントローラ22は、未使用の複数の浮遊ブロック13の中から選択した一つの浮遊ブロック13を、後発不良ブロックの代替ブロックとして割り当てる。そして、その浮遊ブロック13の物理ブロックアドレスを浮遊ブロック管理情報33から削除することによって、SRAM21内の浮遊ブロック管理情報33を更新する。
次にステップSP407においてメモリコントローラ22は、発生した後発不良が消去エラーであるか否かを判定する。後発不良が消去エラーである場合(つまりステップSP407の判定結果が「YES」である場合)には、次にステップSP409においてメモリコントローラ22は、SRAM21内のブロック論物変換テーブル31を更新する。
一方、後発不良が書き込みエラー又は読み出しエラーである場合(つまりステップSP407の判定結果が「NO」である場合)には、次にステップSP408においてメモリコントローラ22は、ブロックの代替処理を実行する。つまり、後発不良が発生したブロックに格納されているデータを、ステップSP406で割り当てた代替ブロックにコピーする。
次にステップSP409においてメモリコントローラ22は、SRAM21内のブロック論物変換テーブル31を更新する。
図13は、貸付ブロックの開放処理(図11のステップSP302)の流れを示すフローチャートである。
まずステップSP501においてメモリコントローラ22は、SRAM21内の浮遊ブロック管理情報33を確認することによって、未使用の浮遊ブロック数が所定の閾値TH2以下であるか否かを判定する。
未使用の浮遊ブロック数が閾値TH2より多い場合(つまりステップSP501の判定結果が「NO」である場合)には、次にステップSP506においてメモリコントローラ22は、未使用の複数の浮遊ブロック13の中から二つの浮遊ブロック13を選択する。そして、一方の浮遊ブロック13を、書き込み対象データを格納するためのユーザデータ格納ブロックとして割り当て、他方の浮遊ブロックを、書き込み対象データを格納するためのテンポラリデータ格納ブロックとして割り当てる。そして、これら二つの浮遊ブロック13の物理ブロックアドレスを浮遊ブロック管理情報33から削除することによって、SRAM21内の浮遊ブロック管理情報33を更新する。
一方、未使用の浮遊ブロック数が閾値TH2以下である場合(つまりステップSP501の判定結果が「YES」である場合)には、次にステップSP502においてメモリコントローラ22は、既に貸付ブロックとして割り当てられているブロックを除いた残り全てのユーザデータ格納ブロック11を対象とする探索を行うことにより、ユーザデータ領域R1内に未使用のユーザデータ格納ブロック11が存在するか否かを判定する。
未使用のユーザデータ格納ブロック11が存在する場合(つまりステップSP502の判定結果が「YES」である場合)には、次にステップSP503においてメモリコントローラ22は、未使用のユーザデータ格納ブロック11を、新たな浮遊ブロック13として割り当てる。その後、メモリコントローラ22は、未使用ブロックの探索によって確保された新たな浮遊ブロック13の物理ブロックアドレスを浮遊ブロック管理情報33に追加することによって、SRAM21内の浮遊ブロック管理情報33を更新する。
次にステップSP504においてメモリコントローラ22は、浮遊ブロック13として割り当てられたユーザデータ格納ブロック11の物理ブロックアドレスに対応する論理ブロックアドレスを貸付テーブル34に追加することによって、SRAM21内の貸付テーブル34を更新する。また、メモリコントローラ22は、予期しない電源断に起因する不整合を回避すべく、SRAM21内の貸付テーブル34を更新するとともに、管理領域R2内の貸付テーブル34も同様に更新する。
未使用のユーザデータ格納ブロック11が存在しない場合(つまりステップSP502の判定結果が「NO」である場合)には、次にステップSP505においてメモリコントローラ22は、ユーザデータ領域R1又は浮遊領域R3を対象とするガベージコレクションを行うことによってユーザデータ領域R1又は浮遊領域R3内に空きブロックを生成し、その空きブロックを新たな浮遊ブロック13として確保する。ここでメモリコントローラ22は、既に貸付ブロックとして割り当てられているユーザデータ格納ブロック11を優先して、ガベージコレクションを実行する。その後、メモリコントローラ22は、空きブロックの生成によって確保された新たな浮遊ブロック13の物理ブロックアドレスを、浮遊ブロック管理情報33に追加する。
次にステップSP506においてメモリコントローラ22は、未使用の複数の浮遊ブロック13の中から二つの浮遊ブロック13を選択する。そして、一方の浮遊ブロック13を、書き込み対象データを格納するためのユーザデータ格納ブロックとして割り当て、他方の浮遊ブロックを、書き込み対象データを格納するためのテンポラリデータ格納ブロックとして割り当てる。そして、これら二つの浮遊ブロック13の物理ブロックアドレスを浮遊ブロック管理情報33から削除することによって、SRAM21内の浮遊ブロック管理情報33を更新する。
次にステップSP507においてメモリコントローラ22は、書き込み対象データの論理ブロックアドレスを貸付テーブル34から削除することによって、SRAM21内の貸付テーブル34を更新する。また、メモリコントローラ22は、予期しない電源断に起因する不整合を回避すべく、SRAM21内の貸付テーブル34を更新するとともに、管理領域R2内の貸付テーブル34も同様に更新する。
次にステップSP508においてメモリコントローラ22は、上記した二つの浮遊ブロック13の物理ブロックアドレスに論理ブロックアドレスを割り当てることによって、SRAM21内のブロック論物変換テーブル31を更新する。また、メモリコントローラ22は、予期しない電源断に起因する不整合を回避すべく、SRAM21内のブロック論物変換テーブル31を更新するとともに、管理領域R2内のブロック論物変換テーブル31も同様に更新する。
図14は、貸付ブロックを対象とする読み出し要求を受領した場合にメモリコントローラ22が実行する処理の流れを示すフローチャートである。
まずステップSP601においてメモリコントローラ22は、読み出し対象データの論理ブロックアドレスが貸付テーブル34に格納されているか否かを判定する。
読み出し対象データの論理ブロックアドレスが貸付テーブル34に格納されていない場合(つまりステップSP601の判定結果が「NO」である場合)には、次にステップSP602においてメモリコントローラ22は、通常の読み出し処理を実行する。つまり、読み出し対象データの論理ブロックアドレスに対応する物理ブロックアドレスが付与されているユーザデータ格納ブロック11からデータを読み出す。
一方、読み出し対象データの論理ブロックアドレスが貸付テーブル34に格納されている場合(つまりステップSP601の判定結果が「YES」である場合)には、次にステップSP603においてメモリコントローラ22は、貸付ブロックへのリードアクセスを省略し、予め定められた所定値(例えば「FFh」)を、読み出しデータとして出力する。
なお、以上の説明では、ガベージコレクションによる空きブロックの生成処理(ステップSP309,SP405,SP505)を、浮遊ブロック13の割り当て処理(ステップSP310,SP406,SP506)より前に実行する例について述べた。この例に限らず、空きブロックの生成処理は浮遊ブロック13の割り当て処理より後に実行しても良い。
また、ガベージコレクションの実行タイミングは、ホストコンピュータに対する半導体記憶装置1の動作中であっても良いし、アイドル中であっても良い。
また、ガベージコレクションの対象領域は、全てのユーザデータ格納ブロック11であっても良いし、その中の一部のユーザデータ格納ブロック11であっても良い。
また、以上の説明では、SRAM21内の貸付テーブル34が更新されると、管理領域R2内の貸付テーブル34もそれに同期して更新する例について述べた。この例に限らず、管理領域R2内の貸付テーブル34は、前回の更新時から一定時間が経過したタイミング、書き込み回数が所定回数に達したタイミング、又は、半導体記憶装置1の電源をオフする直前のタイミング等の、所定のタイミングで更新しても良い。
また、以上の説明では、浮遊領域R3内に存在している全ての未使用の浮遊ブロック13の物理ブロックアドレスを、浮遊ブロック管理情報33に格納する例について述べた。この例に限らず、一部の浮遊ブロック13については、浮遊ブロック管理情報33への物理ブロックアドレスの格納を省略しても良い。また、必要になった場合には、浮遊領域R3の中で消去状態の浮遊ブロック13を探索し、その浮遊ブロック13の物理ブロックアドレスを浮遊ブロック管理情報33に追加しても良い。なお、あるブロックが消去状態であるか否かは、例えば、サイドバンド及びデータ領域の値が「FFh」であればそのブロックは消去状態であり、それ以外であれば消去状態でないと判定することができる。
<まとめ>
上記実施の形態に係る半導体記憶装置1によれば、記憶部3は、複数の浮遊ブロック13を含む浮遊領域R3を有する。そして、制御部2は、後発不良ブロックが発生した場合に当該後発不良ブロックと代替するための代替ブロックとして浮遊ブロック13を使用し、また、全ての浮遊ブロック13のうちその時点で代替ブロックとして使用されていない残余の浮遊ブロック13を、ユーザデータを一時的に格納するためのテンポラリデータ格納ブロックとして使用する。従って、後発不良ブロックの数が少ない時点では、残余の浮遊ブロック数が多いため、テンポラリデータ格納ブロックとして使用するブロック数を多く確保することができる。その結果、テンポラリデータ格納ブロックとして使用するブロック数を効率的に拡張できるため、レイテンシ及びライフタイムを改善することが可能となる。
また、上記実施の形態に係る半導体記憶装置1によれば、制御部2は、テンポラリデータ格納ブロックを、ページ単位での論理−物理アドレス変換によってデータを管理するページ論物領域として使用する。ページ論物領域が効率的に拡張されることにより、無駄なブロック消去の発生を抑制できるため、レイテンシ及びライフタイムを改善することが可能となる。
また、上記実施の形態に係る半導体記憶装置1によれば、データの書き込み要求を受領した場合、制御部2は、全ての浮遊ブロック13のうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロック13に、当該データを書き込む。代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロック13が残存している場合には、当該浮遊ブロック13を新たなテンポラリデータ格納ブロックとして割り当てて当該ブロックにデータを書き込むことにより、テンポラリデータ格納ブロックへのデータの書き込みを簡易に行うことが可能となる。
また、上記実施の形態に係る半導体記憶装置1によれば、データの書き込み要求を受領した場合、制御部2は、当該データに対して割り当てられているテンポラリデータ格納ブロックの空きページに、当該データを書き込む。書き込み要求のあったデータに対して既にテンポラリデータ格納ブロックが割り当てられており、当該テンポラリデータ格納ブロックに空きページが存在している場合には、当該空きページにデータを書き込むことにより、テンポラリデータ格納ブロックへのデータの書き込みを簡易に行うことが可能となる。
また、上記実施の形態に係る半導体記憶装置1によれば、後発不良ブロックが発生した場合、制御部2は、全ての浮遊ブロック13のうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロック13を、当該後発不良ブロックの代替ブロックとして使用する。代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロック13が残存している場合には、当該浮遊ブロック13を代替ブロックとして使用することにより、後発不良ブロックの代替処理を簡易に行うことが可能となる。
また、上記実施の形態に係る半導体記憶装置1によれば、全ての浮遊ブロック13のうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロック13の数が所定の閾値TH1以下となった場合、制御部2は、浮遊領域R3内で空きブロックを生成することにより、新たな浮遊ブロック13を確保する。浮遊領域R3内に確保した新たな浮遊ブロック13を代替ブロック又はテンポラリデータ格納ブロックとして使用することにより、レイテンシ及びライフタイムをさらに改善することが可能となる。
また、上記発展例に係る半導体記憶装置1によれば、全ての浮遊ブロック13のうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロック13の数が所定の閾値TH2以下となった場合、制御部2は、全てのユーザデータ格納ブロック11のうち使用されていないユーザデータ格納ブロック11を、浮遊ブロック13として使用する。ユーザデータ領域R1内の未使用のユーザデータ格納ブロック11を浮遊ブロック13として確保し、当該浮遊ブロック13を代替ブロック又はテンポラリデータ格納ブロックとして使用することにより、レイテンシ及びライフタイムをさらに改善することが可能となる。
また、上記発展例に係る半導体記憶装置1によれば、全てのユーザデータ格納ブロック11のうち使用されていないユーザデータ格納ブロックが存在しない場合、制御部2は、ユーザデータ領域R1内で空きブロックを生成することにより、新たな浮遊ブロック13を確保する。ユーザデータ領域R1内に確保した新たな浮遊ブロック13を代替ブロック又はテンポラリデータ格納ブロックとして使用することにより、レイテンシ及びライフタイムをさらに改善することが可能となる。
また、上記発展例に係る半導体記憶装置1によれば、浮遊ブロック13として使用されているユーザデータ格納ブロック11に対するデータの書き込み要求を受領した場合、制御部2は、二つの浮遊ブロック13を確保し、一方の浮遊ブロック13を当該データに対するユーザデータ格納ブロックとして割り当て、他方の浮遊ブロック13を当該データに対するテンポラリデータ格納ブロックとして割り当てる。これにより、浮遊ブロック13として使用されているユーザデータ格納ブロック11に対するデータの書き込み要求を受領した場合であっても、当該データを、割り当てられたユーザデータ格納ブロック及びテンポラリデータ格納ブロックへ書き込むことが可能となる。
また、上記発展例に係る半導体記憶装置1によれば、浮遊ブロック13として使用されているユーザデータ格納ブロック11に対するデータの読み出し要求を受領した場合、制御部2は、予め定められた所定値を、読み出しデータとして出力する。これにより、浮遊ブロック13として使用されているユーザデータ格納ブロック11に対するデータの読み出し要求を受領した場合であっても、読み出しデータを簡易に出力することが可能となる。
1 半導体記憶装置
2 制御部
3 記憶部
11 ユーザデータ格納ブロック
13 浮遊ブロック
R1 ユーザデータ領域
R3 浮遊領域

Claims (9)

  1. それぞれに複数のページを含む複数のブロックを有する記憶部と、
    前記記憶部を制御する制御部と、
    を備え、
    前記記憶部は、
    ユーザデータが格納されるブロックである複数のユーザデータ格納ブロックを含むユーザデータ領域と、
    前記記憶部を管理するための管理情報が格納されるブロックである複数の管理情報格納ブロックを含む管理領域と、
    ユーザデータ格納ブロック及び管理情報格納ブロック以外のブロックである複数の浮遊ブロックを含む浮遊領域と、
    を有し、
    前記制御部は、後発不良ブロックが発生した場合に当該後発不良ブロックと代替するための代替ブロックとして浮遊ブロックを使用し、また、全ての浮遊ブロックのうちその時点で代替ブロックとして使用されていない残余の浮遊ブロックを、ユーザデータを一時的に格納するためのテンポラリデータ格納ブロックとして使用し、
    全ての浮遊ブロックのうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロックの数が所定の閾値以下となった場合、前記制御部は、全てのユーザデータ格納ブロックのうち使用されていないユーザデータ格納ブロックを、浮遊ブロックとして使用する、半導体記憶装置。
  2. 前記制御部は、テンポラリデータ格納ブロックを、ページ単位での論理−物理アドレス変換によってデータを管理する領域として使用する、請求項1に記載の半導体記憶装置。
  3. データの書き込み要求を受領した場合、前記制御部は、全ての浮遊ブロックのうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロックに、当該データを書き込む、請求項1又は2に記載の半導体記憶装置。
  4. データの書き込み要求を受領した場合、前記制御部は、当該データに対して割り当てられているテンポラリデータ格納ブロックの空きページに、当該データを書き込む、請求項1〜3のいずれか一つに記載の半導体記憶装置。
  5. 後発不良ブロックが発生した場合、前記制御部は、全ての浮遊ブロックのうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロックを、当該後発不良ブロックの代替ブロックとして使用する、請求項1〜4のいずれか一つに記載の半導体記憶装置。
  6. 全ての浮遊ブロックのうち代替ブロック及びテンポラリデータ格納ブロックとして使用されていない浮遊ブロックの数が所定の閾値以下となった場合、前記制御部は、前記浮遊領域内で空きブロックを生成することにより、新たな浮遊ブロックを確保する、請求項1〜5のいずれか一つに記載の半導体記憶装置。
  7. 全てのユーザデータ格納ブロックのうち使用されていないユーザデータ格納ブロックが存在しない場合、前記制御部は、前記ユーザデータ領域内で空きブロックを生成することにより、新たな浮遊ブロックを確保する、請求項1〜6のいずれか一つに記載の半導体記憶装置。
  8. 浮遊ブロックとして使用されているユーザデータ格納ブロックに対するデータの書き込み要求を受領した場合、前記制御部は、二つの浮遊ブロックを確保し、一方の浮遊ブロックを当該データに対するユーザデータ格納ブロックとして割り当て、他方の浮遊ブロックを当該データに対するテンポラリデータ格納ブロックとして割り当てる、請求項1〜7のいずれか一つに記載の半導体記憶装置。
  9. 浮遊ブロックとして使用されているユーザデータ格納ブロックに対するデータの読み出し要求を受領した場合、前記制御部は、予め定められた所定値を読み出しデータとして出力する、請求項1〜8のいずれか一つに記載の半導体記憶装置。
JP2012258860A 2012-11-27 2012-11-27 半導体記憶装置 Expired - Fee Related JP6012432B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012258860A JP6012432B2 (ja) 2012-11-27 2012-11-27 半導体記憶装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012258860A JP6012432B2 (ja) 2012-11-27 2012-11-27 半導体記憶装置

Publications (2)

Publication Number Publication Date
JP2014106718A JP2014106718A (ja) 2014-06-09
JP6012432B2 true JP6012432B2 (ja) 2016-10-25

Family

ID=51028152

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012258860A Expired - Fee Related JP6012432B2 (ja) 2012-11-27 2012-11-27 半導体記憶装置

Country Status (1)

Country Link
JP (1) JP6012432B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6880769B2 (ja) 2017-01-24 2021-06-02 富士通株式会社 情報処理装置,制御プログラムおよび情報処理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5162846B2 (ja) * 2005-07-29 2013-03-13 ソニー株式会社 記憶装置、コンピュータシステム、および記憶システム
EP2077559B1 (en) * 2007-12-27 2012-11-07 Hagiwara Solutions Co., Ltd. Refresh method of a flash memory
US8949515B2 (en) * 2009-12-03 2015-02-03 Hitachi, Ltd. Storage device and memory controller

Also Published As

Publication number Publication date
JP2014106718A (ja) 2014-06-09

Similar Documents

Publication Publication Date Title
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8621139B2 (en) Data writing method for writing data into block of multi-level cell NAND flash memory by skipping a portion of upper page addresses and storage system and controller using the same
US8055873B2 (en) Data writing method for flash memory, and controller and system using the same
TWI524183B (zh) 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US8510502B2 (en) Data writing method, and memory controller and memory storage apparatus using the same
JP2018160195A (ja) メモリシステムおよび不揮発性メモリの制御方法
US9058256B2 (en) Data writing method, memory controller and memory storage apparatus
US9177656B2 (en) Data writing method, memory storage device and memory controlling circuit unit
JP2006031696A (ja) バッドブロック管理部を含むフラッシュメモリシステム
KR20100094241A (ko) 예비 블록을 포함하지 않는 불휘발성 메모리 장치
US20150277786A1 (en) Method, device, and program for managing a flash memory for mass storage
TWI451249B (zh) 用於非揮發性記憶體的資料合併方法、控制器與儲存裝置
US9122583B2 (en) Memory controller and memory storage device and data writing method
JP4666081B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US9383929B2 (en) Data storing method and memory controller and memory storage device using the same
US20120210045A1 (en) Data access method, and memory controller and memory storage apparatus using the same
JP2006195565A (ja) 半導体記憶装置の制御方法、メモリカード、及びホスト機器
TW201321974A (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
JP4966418B1 (ja) 情報処理装置及び書き込み制御方法
JP2004326165A (ja) メモリ制御装置およびメモリ制御方法
US8738847B2 (en) Data writing method, and memory controller and memory storage apparatus using the same
TWI521346B (zh) 用於非揮發性記憶體的資料合併方法、控制器與儲存裝置
US8589620B2 (en) Data writing method, memory controller, and memory storage apparatus
JP6012432B2 (ja) 半導体記憶装置
JP2008009614A (ja) メモリコントローラ、メモリシステム及びメモリ制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151030

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160721

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160727

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160818

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160907

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160920

R150 Certificate of patent or registration of utility model

Ref document number: 6012432

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees