(57)【特許請求の範囲】
【請求項１】
データが記憶された複数のブロックを有するメモリアレイと、
論理アドレスを物理アドレスに変換するための、最新の第１変換テーブルと過去の第２変換テーブルとを格納する格納部と、
前記格納部から読み出した第１変換テーブル及び第２変換テーブルに基づいて、データ化けの有無を判定するために記憶データを読み出す候補となる一以上の候補ブロックを列挙したブロックリストを作成するリスト作成部と、
前記リスト作成部によって作成されたブロックリストに含まれている候補ブロックの中から、記憶データの読み出しを実行するブロックである一以上の対象ブロックを決定する対象ブロック決定部と、
前記対象ブロック決定部によって決定された対象ブロックから記憶データを読み出すことにより、データ化けの有無を判定する判定部と、
を備える、半導体記憶装置。
【請求項２】
前記リスト作成部は、第１変換テーブルと第２変換テーブルとで論理アドレスと物理アドレスとの対応関係が変更されていない論理アドレスを列挙することにより、ブロックリストを作成する、請求項１に記載の半導体記憶装置。
【請求項３】
前記格納部は、過去のブロックリストをさらに格納し、
前記リスト作成部は、新たなブロックリストを作成する際に、前記格納部から読み出した過去のブロックリストに列挙されている論理アドレスに対して高い優先順位を割り当てる、請求項２に記載の半導体記憶装置。
【請求項４】
前記リスト作成部は、ブロックリストに複数の論理アドレスを列挙する場合、消去回数が多いブロック順に高い優先順位を割り当てる、請求項２又は３に記載の半導体記憶装置。
【請求項５】
前記リスト作成部は、ブロックリストに複数の論理アドレスを列挙する場合、過去のエラービット数が多いブロック順に高い優先順位を割り当てる、請求項２〜４のいずれか一つに記載の半導体記憶装置。
【請求項６】
前記リスト作成部によって作成されたブロックリストを更新するリスト更新部をさらに備え、
前記リスト更新部は、前記対象ブロック決定部によって決定された対象ブロックに対して前記判定部による判定が行われると、当該対象ブロックをブロックリストから削除することによりブロックリストを更新する、請求項１〜５のいずれか一つに記載の半導体記憶装置。
【請求項７】
前記リスト更新部はさらに、ブロックリストに含まれている候補ブロックに対して記憶データの書き換えが行われると、当該候補ブロックをブロックリストから削除することによりブロックリストを更新する、請求項６に記載の半導体記憶装置。
【請求項８】
ブロックリストに複数の候補ブロックが含まれている場合、前記対象ブロック決定部は、複数の候補ブロックのうち優先順位が最も高い一つの候補ブロックを対象ブロックとして決定する、請求項１〜７のいずれか一つに記載の半導体記憶装置。
【請求項９】
ブロックリストに複数の候補ブロックが含まれている場合、前記対象ブロック決定部は、全ての候補ブロックを対象ブロックとして決定する、請求項１〜７のいずれか一つに記載の半導体記憶装置。
【請求項１０】
ブロックリストに複数の候補ブロックが含まれている場合、前記対象ブロック決定部は、ホスト装置によって指定された所定数の候補ブロックを対象ブロックとして決定する、請求項１〜７のいずれか一つに記載の半導体記憶装置。
【請求項１１】
前記判定部は、前記半導体記憶装置の起動時に、対象ブロックからの記憶データの読み出し及びデータ化けの有無の判定を実行する、請求項１〜１０のいずれか一つに記載の半導体記憶装置。
【請求項１２】
前記判定部は、前記半導体記憶装置のアイドル期間中に、対象ブロックからの記憶データの読み出し及びデータ化けの有無の判定を実行する、請求項１〜１１のいずれか一つに記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置に関する。
【背景技術】
【０００２】
フラッシュメモリ等の半導体記憶装置では、メモリセルトランジスタのデータ保持特性（リテンション特性）が悪化すると、浮遊ゲートに蓄積された電荷が時間の経過とともにゲート絶縁膜を介して半導体基板に漏出し、それによってメモリセルトランジスタの記憶データにデータ化けが生じることが知られている。
【０００３】
下記特許文献１には、同一のブロックに対してデータ消去からデータ書込までの時間間隔が短いほどデータ保持特性が上がるという物理特性を前提として、ブロックに対するデータ消去及びデータ書込の実行タイミングを制御する半導体記憶装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１４−５１２６１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
リテンション特性の悪化に起因して記憶データにデータ化けが生じているか否かは、実際に記憶データを読み出してみないと分からない。従って、上記特許文献１のようにブロックに対するデータ消去及びデータ書込の実行タイミングを制御したとしても、実際にデータ化けが生じていないことは保証されない。
【０００６】
本発明はかかる事情に鑑みて成されたものであり、リテンション特性の悪化等に起因するデータ化けの有無を、簡易な処理でかつ短時間で判定することが可能な半導体記憶装置を得ることを目的とするものである。
【課題を解決するための手段】
【０００７】
本発明の第１の態様に係る半導体記憶装置は、データが記憶された複数のブロックを有するメモリアレイと、論理アドレスを物理アドレスに変換するための、最新の第１変換テーブルと過去の第２変換テーブルとを格納する格納部と、前記格納部から読み出した第１変換テーブル及び第２変換テーブルに基づいて、データ化けの有無を判定するために記憶データを読み出す候補となる一以上の候補ブロックを列挙したブロックリストを作成するリスト作成部と、前記リスト作成部によって作成されたブロックリストに含まれている候補ブロックの中から、記憶データの読み出しを実行するブロックである一以上の対象ブロックを決定する対象ブロック決定部と、前記対象ブロック決定部によって決定された対象ブロックから記憶データを読み出すことにより、データ化けの有無を判定する判定部と、を備えることを特徴とするものである。
【０００８】
第１の態様に係る半導体記憶装置によれば、リスト作成部は、格納部から読み出した第１変換テーブル及び第２変換テーブルに基づいて、一以上の候補ブロックを列挙したブロックリストを作成する。最新の第１変換テーブルと過去の第２変換テーブルとで論理アドレスと物理アドレスとの対応関係が変更されていないブロックは、データ書込が行われてからの経過時間が長く、データ化けが生じている可能性がある。従って、リスト作成部が第１変換テーブルと第２変換テーブルとを比較してそのようなブロックをピックアップすることにより、データ化けが生じている可能性があるブロックを列挙したブロックリストを作成することができる。そして、対象ブロック決定部は、リスト作成部によって作成されたブロックリストに含まれている候補ブロックの中から一以上の対象ブロックを決定し、判定部は、対象ブロック決定部によって決定された対象ブロックから記憶データを読み出すことにより、データ化けの有無を判定する。従って、無条件に全てのブロックを対象としてデータ化けの有無を判定するのではなく、データ化けが生じている可能性があるブロックをブロックリストに列挙し、ブロックリストに含まれているブロックのみを対象としてデータ化けの有無を判定することができる。その結果、リテンション特性の悪化等に起因するデータ化けの有無を、簡易な処理でかつ短時間で判定することが可能となる。
【０００９】
本発明の第２の態様に係る半導体記憶装置は、第１の態様に係る半導体記憶装置において特に、前記リスト作成部は、第１変換テーブルと第２変換テーブルとで論理アドレスと物理アドレスとの対応関係が変更されていない論理アドレスを列挙することにより、ブロックリストを作成することを特徴とするものである。
【００１０】
第２の態様に係る半導体記憶装置によれば、リスト作成部は、第１変換テーブルと第２変換テーブルとで論理アドレスと物理アドレスとの対応関係が変更されていない論理アドレスを列挙することにより、ブロックリストを作成する。これにより、データ化けが生じている可能性があるブロックを列挙したブロックリストを簡易に作成することが可能となる。
【００１１】
本発明の第３の態様に係る半導体記憶装置は、第２の態様に係る半導体記憶装置において特に、前記格納部は、過去のブロックリストをさらに格納し、前記リスト作成部は、前記格納部から読み出した過去のブロックリストに列挙されている論理アドレスに対して高い優先順位を割り当てることを特徴とするものである。
【００１２】
第３の態様に係る半導体記憶装置によれば、リスト作成部は、新たなブロックリストを作成する際に、過去のブロックリストに列挙されている論理アドレスに対して高い優先順位を割り当てる。過去のブロックリストに論理アドレスが列挙されており、かつ、最新の第１変換テーブルと過去の第２変換テーブルとで論理アドレスと物理アドレスとの対応関係が変更されていないブロックは、データ書込が行われてからの経過時間が他のブロックよりも長く、データ化けが生じている可能性が他のブロックよりも高い。従って、データ化けが生じている可能性が高いブロックに対しては新たなブロックリストにおいて高い優先順位を割り当てることにより、そのようなブロックは優先的に対象ブロックとして決定されるため、データ化けの有無を優先的に判定することが可能となる。
【００１３】
本発明の第４の態様に係る半導体記憶装置は、第２又は第３の態様に係る半導体記憶装置において特に、前記リスト作成部は、ブロックリストに複数の論理アドレスを列挙する場合、消去回数が多いブロック順に高い優先順位を割り当てることを特徴とするものである。
【００１４】
第４の態様に係る半導体記憶装置によれば、リスト作成部は、ブロックリストに複数の論理アドレスを列挙する場合には、消去回数が多いブロック順に高い優先順位を割り当てる。消去回数が多いブロックは、消去回数が少ないブロックと比較して、リテンション特性の悪化やディスターブの影響に起因してデータ化けが生じている可能性が高い。従って、ブロックリストに複数の論理アドレスを列挙する場合には、消去回数が多いブロック順に高い優先順位を割り当てることにより、消去回数が多いブロックは優先的に対象ブロックとして決定されるため、データ化けの有無を優先的に判定することが可能となる。
【００１５】
本発明の第５の態様に係る半導体記憶装置は、第２〜第４のいずれか一つの態様に係る半導体記憶装置において特に、前記リスト作成部は、ブロックリストに複数の論理アドレスを列挙する場合、過去のエラービット数が多いブロック順に高い優先順位を割り当てることを特徴とするものである。
【００１６】
第５の態様に係る半導体記憶装置によれば、リスト作成部は、ブロックリストに複数の論理アドレスを列挙する場合には、過去のエラービット数が多いブロック順に高い優先順位を割り当てる。過去のエラービット数が多いブロックは、エラービット数が少ないブロックと比較して、メモリセルトランジスタが劣化している可能性が高い。従って、ブロックリストに複数の論理アドレスを列挙する場合には、過去のエラービット数が多いブロック順に高い優先順位を割り当てることにより、過去のエラービット数が多いブロックは優先的に対象ブロックとして決定されるため、データ化けの有無を優先的に判定することが可能となる。
【００１７】
本発明の第６の態様に係る半導体記憶装置は、第１〜第５のいずれか一つの態様に係る半導体記憶装置において特に、前記リスト作成部によって作成されたブロックリストを更新するリスト更新部をさらに備え、前記リスト更新部は、前記対象ブロック決定部によって決定された対象ブロックに対して前記判定部による判定が行われると、当該対象ブロックをブロックリストから削除することによりブロックリストを更新することを特徴とするものである。
【００１８】
第６の態様に係る半導体記憶装置によれば、リスト更新部は、対象ブロック決定部によって決定された対象ブロックに対して判定部による判定が行われると、当該対象ブロックをブロックリストから削除する。データ化けの有無の判定が行われたブロックに関してはブロックリストから削除することにより、次の候補ブロックが対象ブロックとして決定されるため、当該次の候補ブロックを対象としてデータ化けの有無を判定することが可能となる。
【００１９】
本発明の第７の態様に係る半導体記憶装置は、第６の態様に係る半導体記憶装置において特に、前記リスト更新部はさらに、ブロックリストに含まれている候補ブロックに対して記憶データの書き換えが行われると、当該候補ブロックをブロックリストから削除することによりブロックリストを更新することを特徴とするものである。
【００２０】
第７の態様に係る半導体記憶装置によれば、リスト更新部は、ブロックリストに含まれている候補ブロックに対して記憶データの書き換えが行われると、当該候補ブロックをブロックリストから削除する。記憶データの書き換えが行われたブロックは、データ書込が行われてからの経過時間が短いため、データ化けが生じている可能性が低い。従って、記憶データの書き換えが行われたブロックに関してはブロックリストから削除することにより、他の候補ブロックが対象ブロックとして決定されるため、当該他の候補ブロックを対象としてデータ化けの有無を判定することが可能となる。
【００２１】
本発明の第８の態様に係る半導体記憶装置は、第１〜第７のいずれか一つの態様に係る半導体記憶装置において特に、ブロックリストに複数の候補ブロックが含まれている場合、前記対象ブロック決定部は、複数の候補ブロックのうち優先順位が最も高い一つの候補ブロックを対象ブロックとして決定することを特徴とするものである。
【００２２】
第８の態様に係る半導体記憶装置によれば、ブロックリストに複数の候補ブロックが含まれている場合、対象ブロック決定部は、複数の候補ブロックのうち優先順位が最も高い一つの候補ブロックを対象ブロックとして決定する。このように、一回の処理では対象ブロックを一つの候補ブロックのみに制限することにより、データ化けの有無を判定する処理に要する所要時間が短縮されるため、他の処理に対する待機時間の発生を回避することが可能となる。
【００２３】
本発明の第９の態様に係る半導体記憶装置は、第１〜第７のいずれか一つの態様に係る半導体記憶装置において特に、ブロックリストに複数の候補ブロックが含まれている場合、前記対象ブロック決定部は、全ての候補ブロックを対象ブロックとして決定することを特徴とするものである。
【００２４】
第９の態様に係る半導体記憶装置によれば、ブロックリストに複数の候補ブロックが含まれている場合、対象ブロック決定部は、全ての候補ブロックを対象ブロックとして決定する。半導体記憶装置のアイドル期間等、時間的に余裕がある場合には、ブロックリストに含まれている全ての候補ブロックを対象ブロックとして順に決定することにより、他の処理に対する待機時間の発生を回避しつつ、全ての候補ブロックを対象としてデータ化けの有無を判定することが可能となる。
【００２５】
本発明の第１０の態様に係る半導体記憶装置は、第１〜第７のいずれか一つの態様に係る半導体記憶装置において特に、ブロックリストに複数の候補ブロックが含まれている場合、前記対象ブロック決定部は、ホスト装置によって指定された所定数の候補ブロックを対象ブロックとして決定することを特徴とするものである。
【００２６】
第１０の態様に係る半導体記憶装置によれば、ブロックリストに複数の候補ブロックが含まれている場合、対象ブロック決定部は、ホスト装置によって指定された所定数の候補ブロックを対象ブロックとして決定する。このように、対象ブロックの数をホスト装置が指定することにより、他の処理に対する待機時間が発生しない範囲内で最大数の候補ブロックを対象として、データ化けの有無を判定することが可能となる。
【００２７】
本発明の第１１の態様に係る半導体記憶装置は、第１〜第１０のいずれか一つの態様に係る半導体記憶装置において特に、前記判定部は、前記半導体記憶装置の起動時に、対象ブロックからの記憶データの読み出し及びデータ化けの有無の判定を実行することを特徴とするものである。
【００２８】
第１１の態様に係る半導体記憶装置によれば、判定部は、半導体記憶装置の起動時に、対象ブロックからの記憶データの読み出し及びデータ化けの有無の判定を実行する。判定部の処理を半導体記憶装置の起動時に実行することにより、判定部の処理を実行する機会を、半導体記憶装置の起動毎に少なくとも一回は確保できる。
【００２９】
本発明の第１２の態様に係る半導体記憶装置は、第１〜第１１のいずれか一つの態様に係る半導体記憶装置において特に、前記判定部は、前記半導体記憶装置のアイドル期間中に、対象ブロックからの記憶データの読み出し及びデータ化けの有無の判定を実行することを特徴とするものである。
【００３０】
第１２の態様に係る半導体記憶装置によれば、判定部は、半導体記憶装置のアイドル期間中に、対象ブロックからの記憶データの読み出し及びデータ化けの有無の判定を実行する。判定部の処理を半導体記憶装置のアイドル期間中に実行することにより、他の処理に対する待機時間の発生を回避しつつ、判定部の処理を実行することが可能となる。
【発明の効果】
【００３１】
本発明によれば、リテンション特性の悪化等に起因するデータ化けの有無を、簡易な処理でかつ短時間で判定することが可能となる。
【図面の簡単な説明】
【００３２】
【図１】半導体記憶装置の利用形態を示す図である。
【図２】半導体記憶装置の構成を示す図である。
【図３】メモリコントローラのうち本発明に関わる機能を抜き出して示す図である。
【図４】メモリコントローラがブロックリストを生成する処理の流れを示すフローチャートである。
【図５】最新変換テーブル及び過去変換テーブルがＳＲＡＭに格納された状況を示す図である。
【図６】最新変換テーブル、過去変換テーブル、及びブロックリストがＳＲＡＭに格納された状況を示す図である。
【図７】ブロックリストの一例を簡略化して示す図である。
【図８】更新されたブロックリストを示す図である。
【図９】更新されたブロックリストを示す図である。
【図１０】メモリコントローラがブロックリストを生成する処理の流れを示すフローチャートである。
【図１１】最新変換テーブル、過去変換テーブル、及び過去ブロックリストがＳＲＡＭに格納された状況を示す図である。
【図１２】ブロックリストの一例を簡略化して示す図である。
【図１３】メモリコントローラがブロックリストを生成する処理の流れを示すフローチャートである。
【図１４】ブロックリストの一例を簡略化して示す図である。
【図１５】メモリコントローラがブロックリストを生成する処理の流れを示すフローチャートである。
【図１６】ブロックリストの一例を簡略化して示す図である。
【発明を実施するための形態】
【００３３】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
【００３４】
図１は、本発明に係る半導体記憶装置２の利用形態を示す図である。半導体記憶装置２は、例えばＮＡＮＤ型フラッシュメモリ又はＮＯＲ型フラッシュメモリを用いたメモリカードであり、ホスト装置１に着脱自在に接続される。
【００３５】
図２は、半導体記憶装置２の構成を示す図である。図２の接続関係で示すように、半導体記憶装置２は、ホストインタフェース１１、メモリコントローラ１２、メモリアレイ１３、及びＳＲＡＭ１４を備えて構成されている。メモリアレイ１３は、データの消去単位である複数のブロックを有している。各ブロックは、データの書込単位及び読出単位である複数のページを有している。
【００３６】
ホスト装置１がメモリアレイ１３にアクセスする場合、ホスト装置１は、アクセス先のブロックの論理アドレスを含むコマンドを発行する。メモリコントローラ１２は、論理アドレスを物理アドレスに変換するための論理−物理アドレス変換テーブル（以下「論物変換テーブル」と称す）を参照することにより、受領したコマンドに含まれている論理アドレスを物理アドレスに変換する。それにより、メモリコントローラ１２は、メモリアレイ１３内の所望のブロックにアクセスする。
【００３７】
本発明に係る半導体記憶装置２において、メモリアレイ１３内の所定領域には、現在有効である最新の論物変換テーブル（以下「最新変換テーブル」と称す）と、最新変換テーブルの前に使用されていた過去の論物変換テーブル（以下「過去変換テーブル」と称す）とが記憶されている。
【００３８】
図３は、メモリコントローラ１２のうち、本発明に関わる機能を抜き出して示す図である。図３に示すように、メモリコントローラ１２は、リスト作成部３１、リスト更新部３２、対象ブロック決定部３３、及び判定部３４を備えて構成されている。
【００３９】
以下、本発明に係る半導体記憶装置２の様々な実施の形態について順に説明する。
【００４０】
＜実施の形態１＞
図４は、本発明の実施の形態１に係る半導体記憶装置２に関して、メモリコントローラ１２がブロックリスト（詳細は後述する）を生成する処理の流れを示すフローチャートである。
【００４１】
ホスト装置１は、メモリコントローラ１２にブロックリストを生成させるための所定のコマンドＤ１を発行する。過去変換テーブル２２には、それが作成された時刻を示すタイムスタンプが付加されている。ホスト装置１は、過去変換テーブル２２に付加されているタイムスタンプを半導体記憶装置２から取得し、当該タイムスタンプで示される時刻と現在時刻とを比較する。そして、両時刻の時間差が所定時間以上であれば、ホスト装置１は、現在時刻を示すタイムスタンプとともにコマンドＤ１を半導体記憶装置２に送信する。
【００４２】
メモリコントローラ１２が当該コマンドＤ１を受領すると、まずステップＳＰ１０１においてリスト作成部３１は、過去変換テーブル２２をメモリアレイ１３から読み出して、ＳＲＡＭ１４に格納する。なお、最新変換テーブル２１はすでにメモリアレイ１３から読み出されてＳＲＡＭ１４に格納されている。図５は、最新変換テーブル２１及び過去変換テーブル２２がＳＲＡＭ１４に格納された状況を示す図である。
【００４３】
次にステップＳＰ１０２においてリスト作成部３１は、メモリアレイ１３の使用に際して想定されている全ての論理ブロックアドレスのうち、任意の一つ（例えば先頭（ｉ＝１））の論理アドレスを設定する。
【００４４】
次にステップＳＰ１０３においてリスト作成部３１は、ステップＳＰ１０２で設定された論理アドレスに対応する物理アドレスが、最新変換テーブル２１と過去変換テーブル２２とで一致しているか否かを判定する。
【００４５】
両物理アドレスが一致している場合（つまりステップＳＰ１０３における判定結果が「ＹＥＳ」である場合）には、次にステップＳＰ１０４においてリスト作成部３１は、ステップＳＰ１０２で設定された論理アドレスをブロックリストに追加する。一方、両物理アドレスが一致していない場合（つまりステップＳＰ１０３における判定結果が「ＮＯ」である場合）には、リスト作成部３１は、ステップＳＰ１０２で設定された論理アドレスをブロックリストに追加しない。リスト作成部３１は、想定されているＸ個全ての論理アドレスに関して上記の処理が完了するまで、ステップＳＰ１０２〜ＳＰ１０４を繰り返し実行する。
【００４６】
リスト作成部３１は、このようにして生成したブロックリスト４１を、ＳＲＡＭ１４に格納する。図６は、最新変換テーブル２１、過去変換テーブル２２、及びブロックリスト４１がＳＲＡＭ１４に格納された状況を示す図である。リスト作成部３１は、ブロックリスト４１の生成が完了すると、ＳＲＡＭ１４に格納されているブロックリスト４１をメモリアレイ１３内の所定領域に書き込む。また、ＳＲＡＭ１４に格納されている最新変換テーブル２１を、過去変換テーブルとしてメモリアレイ１３内の所定領域に書き込む。過去変換テーブルには、上記でホスト装置１から半導体記憶装置２に送信されたタイムスタンプが付加される。
【００４７】
図７は、ブロックリスト４１の一例を簡略化して示す図である。図７に示した例では、ブロックリスト４１には、論理ブロックアドレス「００１」「００２」「００３」「００４」「００９」「０１０」「０１１」と、最新変換テーブル２１において各論理ブロックアドレスに対応する物理ブロックアドレス「５０１」「５０２」「５０３」「５０４」「５０９」「５１０」「５１１」とが列挙されている。
【００４８】
メモリコントローラ１２は、上記のようにして生成されたブロックリスト４１を参照することにより、半導体記憶装置２の起動時に、リテンション特性の悪化に起因するデータ化けの有無の判定処理（以下「サーチリード」と称す）を実行する。
【００４９】
図３を参照して、対象ブロック決定部３３は、ブロックリスト４１をメモリアレイ１３から読み出して、ＳＲＡＭ１４に格納する。次に、ブロックリスト４１に列挙されている複数の論理アドレスの中から、一つの論理アドレスを決定する。ブロックリスト４１においては、先頭から順に高い優先順位が割り当てられており、対象ブロック決定部３３は、優先順位が最も高い先頭の論理アドレス「００１」を決定する。そして、決定した論理アドレス「００１」を、データＤ２として判定部３４に入力する。なお、ブロックリスト４１に論理アドレスが一つも登録されていない場合には、サーチリードは実行されない。
【００５０】
次に、判定部３４は、論理アドレス「００１」に対応する物理アドレス「５０１」で示されるブロックの全ページから記憶データを読み出す。そして、読み出した記憶データに関してＣＲＣ（Cyclic Redundancy Check）等を用いてデータ誤りをチェックすることにより、データ化けの有無を判定する。
【００５１】
判定部３４は、読み出した記憶データにデータ化けが生じている場合には、そのブロックの物理アドレスを、リフレッシュ対象のブロックを列挙したテーブル（図示しない）に書き込むとともに、論理アドレス「００１」を対象とするサーチリードが完了した旨を、データＤ３としてリスト更新部３２に入力する。一方、読み出した記憶データにデータ化けが生じていない場合には、論理アドレス「００１」を対象とするサーチリードが完了した旨を、データＤ３としてリスト更新部３２に入力する。
【００５２】
リスト更新部３２は、データＤ３で示される論理アドレス「００１」をブロックリスト４１から削除することにより、ブロックリスト４１を更新する。図８は、更新されたブロックリスト４１を示す図である。論理アドレス「００１」に対するサーチリードが完了したことにより、図７に示したブロックリスト４１から論理アドレス「００１」の項目が削除されている。
【００５３】
また、メモリアレイ１３内のいずれかのブロックに対してデータの書き換えが行われると、データの書き換えが行われたブロックの論理アドレスが、データＤ４としてリスト更新部３２に入力される。リスト更新部３２は、データＤ４で示される論理アドレスが、ブロックリスト４１に列挙されている論理アドレスのいずれかに一致すると、当該論理アドレスをブロックリスト４１から削除することにより、ブロックリスト４１を更新する。図９は、更新されたブロックリスト４１を示す図である。例えば論理アドレス「００９」「０１０」に関してデータの書き換えが行われたことにより、図８に示したブロックリスト４１から論理アドレス「００９」「０１０」の項目が削除されている。
【００５４】
リスト更新部３２は、ブロックリスト４１の更新が完了すると、ＳＲＡＭ１４に格納されているブロックリスト４１を、メモリアレイ１３内の所定領域に書き込む。
【００５５】
このように本実施の形態１に係る半導体記憶装置２によれば、リスト作成部３１は、ＳＲＡＭ１４（格納部）から読み出した最新変換テーブル２１（第１変換テーブル）及び過去変換テーブル２２（第２変換テーブル）に基づいて、一以上の候補ブロックを列挙したブロックリスト４１を作成する。最新変換テーブル２１と過去変換テーブル２２とで論理アドレスと物理アドレスとの対応関係が変更されていないブロックは、データ書込が行われてからの経過時間が長く、データ化けが生じている可能性がある。従って、リスト作成部３１が最新変換テーブル２１と過去変換テーブル２２とを比較してそのようなブロックをピックアップすることにより、データ化けが生じている可能性があるブロックを列挙したブロックリスト４１を作成することができる。そして、対象ブロック決定部３３は、リスト作成部３１によって作成されたブロックリスト４１に含まれている候補ブロックの中から対象ブロックを決定し、判定部３４は、対象ブロック決定部３３によって決定された対象ブロックから記憶データを読み出すことにより、データ化けの有無を判定する。従って、無条件に全てのブロックを対象としてデータ化けの有無を判定するのではなく、データ化けが生じている可能性があるブロックをブロックリスト４１に列挙し、ブロックリスト４１に含まれているブロックのみを対象としてデータ化けの有無を判定することができる。その結果、リテンション特性の悪化に起因するデータ化けの有無を、簡易な処理でかつ短時間で判定することが可能となる。
【００５６】
また、サーチリードを実行することで、リードディスターブの影響によってメモリセルトランジスタのしきい値が上昇するため、リテンション特性の悪化によって降下したしきい値が回復する効果も期待できる。
【００５７】
また、本実施の形態１に係る半導体記憶装置２によれば、リスト作成部３１は、最新変換テーブル２１と過去変換テーブル２２とで論理アドレスと物理アドレスとの対応関係が変更されていない論理アドレスを列挙することにより、ブロックリスト４１を作成する。これにより、データ化けが生じている可能性があるブロックを列挙したブロックリスト４１を簡易に作成することが可能となる。
【００５８】
また、本実施の形態１に係る半導体記憶装置２によれば、リスト更新部３２は、対象ブロック決定部３３によって決定された対象ブロックに対してサーチリードが行われると、当該対象ブロックをブロックリスト４１から削除する。サーチリードが行われたブロックに関してはブロックリスト４１から削除することにより、ブロックリスト４１内の次の候補ブロックが対象ブロックとして決定されるため、当該次の候補ブロックを対象としてサーチリードを実行することが可能となる。
【００５９】
また、本実施の形態１に係る半導体記憶装置２によれば、リスト更新部３２は、ブロックリスト４１に含まれている候補ブロックに対して記憶データの書き換えが行われると、当該候補ブロックをブロックリスト４１から削除する。記憶データの書き換えが行われたブロックは、データ書込が行われてからの経過時間が短いため、データ化けが生じている可能性が低い。従って、記憶データの書き換えが行われたブロックに関してはブロックリスト４１から削除することにより、ブロックリスト４１内の他の候補ブロックが対象ブロックとして決定されるため、当該他の候補ブロックを対象としてサーチリードを実行することが可能となる。
【００６０】
また、本実施の形態１に係る半導体記憶装置２によれば、ブロックリスト４１に複数の候補ブロックが含まれている場合、対象ブロック決定部３３は、複数の候補ブロックのうち優先順位が最も高い一つの候補ブロックを対象ブロックとして決定する。このように、一回のサーチリードでは対象ブロックを一つの候補ブロックのみに制限することにより、サーチリードに要する所要時間が短縮されるため、他の処理に対する待機時間の発生を回避することが可能となる。
【００６１】
また、本実施の形態１に係る半導体記憶装置２によれば、判定部３４は、半導体記憶装置２の起動時に、サーチリードを実行する。サーチリードを半導体記憶装置２の起動時に実行することにより、サーチリードを実行する機会を、半導体記憶装置２の起動毎に少なくとも一回は確保できる。
【００６２】
なお、以上の説明では、ＮＡＮＤ型フラッシュメモリ又はＮＯＲ型フラッシュメモリを用いた半導体記憶装置を例にとり説明したが、本発明の適用対象はこれらに限らず、リテンション特性の悪化に起因してデータ化けが発生し得る任意の半導体記憶装置に関して、本発明は適用可能である。また、データ化けは、リテンション特性の悪化に限らず、リードディスターブ又はプログラムディスターブ等の影響によっても発生する。本発明は、リテンション特性の悪化に起因するデータ化けのみならず、発生原因を問わない任意のデータ化けに関して適用可能であり、上記と同様の効果を得ることができる。後述する他の実施の形態についても同様である。
【００６３】
＜実施の形態２＞
図１０は、本発明の実施の形態２に係る半導体記憶装置２に関して、メモリコントローラ１２がブロックリストを生成する処理の流れを示すフローチャートである。
【００６４】
まずステップＳＰ２０１においてリスト作成部３１は、過去変換テーブル２２をメモリアレイ１３から読み出して、ＳＲＡＭ１４に格納する。次にステップＳＰ２０２においてリスト作成部３１は、ブロックリスト４１を過去ブロックリスト４２としてメモリアレイ１３から読み出して、ＳＲＡＭ１４に格納する。図１１は、最新変換テーブル２１、過去変換テーブル２２、及び過去ブロックリスト４２がＳＲＡＭ１４に格納された状況を示す図である。
【００６５】
次にステップＳＰ２０３においてリスト作成部３１は、メモリアレイ１３の使用に際して想定されている全ての論理ブロックアドレスのうち、任意の一つ（例えば先頭（ｉ＝１））の論理アドレスを設定する。
【００６６】
次にステップＳＰ２０４においてリスト作成部３１は、ステップＳＰ２０３で設定された論理アドレスが、過去ブロックリスト４２に列挙されている論理アドレスのいずれかと一致しているか否かを判定する。
【００６７】
両論理アドレスが一致している場合（つまりステップＳＰ２０４における判定結果が「ＹＥＳ」である場合）には、リスト作成部３１は、次の論理アドレスに更新する。
【００６８】
一方、両論理アドレスが一致していない場合（つまりステップＳＰ２０４における判定結果が「ＮＯ」である場合）には、次にステップＳＰ２０５においてリスト作成部３１は、ステップＳＰ２０３で設定された論理アドレスに対応する物理アドレスが、最新変換テーブル２１と過去変換テーブル２２とで一致しているか否かを判定する。
【００６９】
両物理アドレスが一致している場合（つまりステップＳＰ２０５における判定結果が「ＹＥＳ」である場合）には、次にステップＳＰ２０６においてリスト作成部３１は、ステップＳＰ２０３で設定された論理アドレスをブロックリストの末尾に追加し、その後、次の論理アドレスに更新する。一方、両物理アドレスが一致していない場合（つまりステップＳＰ２０５における判定結果が「ＮＯ」である場合）には、リスト作成部３１は、ステップＳＰ２０３で設定された論理アドレスをブロックリストに追加することなく、次の論理アドレスに更新する。リスト作成部３１は、想定されているＸ個全ての論理アドレスに関して上記の処理が完了するまで、ステップＳＰ２０３〜ＳＰ２０６を繰り返し実行する。
【００７０】
リスト作成部３１は、このようにして生成した新たなブロックリスト４１を、ＳＲＡＭ１４に格納する。また、リスト作成部３１は、ブロックリスト４１の生成が完了すると、ＳＲＡＭ１４に格納されているブロックリスト４１をメモリアレイ１３内の所定領域に書き込む。また、ＳＲＡＭ１４に格納されている最新変換テーブル２１を、過去変換テーブルとしてメモリアレイ１３内の所定領域に書き込む。
【００７１】
図１２は、ブロックリスト４１の一例を簡略化して示す図である。図１２に示した例では、図９に示したブロックリストの末尾に、論理ブロックアドレス「００６」「００７」と、最新変換テーブル２１において各論理ブロックアドレスに対応する物理ブロックアドレス「５０６」「５０７」とが追加されている。新たな論理アドレス「００６」「００７」をブロックリスト４１の末尾に追加することにより、これらの論理アドレスには低い優先順位が割り当てられる。換言すれば、過去ブロックリスト４２に列挙されている論理アドレスと一致する論理アドレス「００２」「００３」「００４」「０１１」に対しては、高い優先順位が割り当てられる。
【００７２】
このように本実施の形態２に係る半導体記憶装置２によれば、リスト作成部３１は、新たなブロックリスト４１を作成する際に、過去ブロックリスト４２に列挙されている論理アドレスに対して高い優先順位を割り当てる。過去ブロックリスト４２に論理アドレスが列挙されており、かつ、最新変換テーブル２１と過去変換テーブル２２とで論理アドレスと物理アドレスとの対応関係が変更されていないブロックは、データ書込が行われてからの経過時間が他のブロックよりも長く、データ化けが生じている可能性が他のブロックよりも高い。従って、データ化けが生じている可能性が高いブロックに対しては新たなブロックリスト４１において高い優先順位を割り当てることにより、そのようなブロックは優先的に対象ブロックとして決定されるため、データ化けの有無を優先的に判定することが可能となる。
【００７３】
＜実施の形態３＞
図１３は、本発明の実施の形態３に係る半導体記憶装置２に関して、メモリコントローラ１２がブロックリストを生成する処理の流れを示すフローチャートである。
【００７４】
まずステップＳＰ１０１においてリスト作成部３１は、過去変換テーブル２２をメモリアレイ１３から読み出して、ＳＲＡＭ１４に格納する。
【００７５】
次にステップＳＰ１０２においてリスト作成部３１は、メモリアレイ１３の使用に際して想定されている全ての論理ブロックアドレスのうち、任意の一つ（例えば先頭（ｉ＝１））の論理アドレスを設定する。
【００７６】
次にステップＳＰ１０３においてリスト作成部３１は、ステップＳＰ１０２で設定された論理アドレスに対応する物理アドレスが、最新変換テーブル２１と過去変換テーブル２２とで一致しているか否かを判定する。
【００７７】
両物理アドレスが一致していない場合（つまりステップＳＰ１０３における判定結果が「ＮＯ」である場合）には、リスト作成部３１は、ステップＳＰ１０２で設定された論理アドレスをブロックリストに追加することなく、次の論理アドレスに更新する。
【００７８】
一方、両物理アドレスが一致している場合（つまりステップＳＰ１０３における判定結果が「ＹＥＳ」である場合）には、次にステップＳＰ３０１においてリスト作成部３１は、当該物理アドレスで示されるブロックに関する過去の消去回数に基づいて、ブロックリストへの論理アドレスの挿入箇所を設定する。各物理ブロックの消去回数に関する情報は、過去の消去回数を物理ブロック毎にカウントしたリスト情報として、メモリアレイ１３内の所定領域に格納されている。リスト作成部３１は、当該リスト情報を参照することにより、消去回数が多いブロック順に高い優先順位が割り当てられるように、論理アドレスの挿入箇所を設定する。次にステップＳＰ１０４においてリスト作成部３１は、ステップＳＰ１０２で設定された論理アドレスを、ステップＳＰ３０１で設定された挿入箇所に追加し、その後、次の論理アドレスに更新する。リスト作成部３１は、想定されているＸ個全ての論理アドレスに関して上記の処理が完了するまで、ステップＳＰ１０２〜ＳＰ１０４を繰り返し実行する。
【００７９】
リスト作成部３１は、このようにして生成したブロックリスト４１を、ＳＲＡＭ１４に格納する。また、リスト作成部３１は、ブロックリスト４１の生成が完了すると、ＳＲＡＭ１４に格納されているブロックリスト４１をメモリアレイ１３内の所定領域に書き込む。また、ＳＲＡＭ１４に格納されている最新変換テーブル２１を、過去変換テーブルとしてメモリアレイ１３内の所定領域に書き込む。
【００８０】
図１４は、ブロックリスト４１の一例を簡略化して示す図である。図１４に示した例では、ブロックリスト４１には、消去回数が多い順に先頭から並ぶように、論理ブロックアドレス「００９」「００２」「００３」「００４」「００１」「０１０」「０１１」と、最新変換テーブル２１において各論理ブロックアドレスに対応する物理ブロックアドレス「５０９」「５０２」「５０３」「５０４」「５０１」「５１０」「５１１」とが列挙されている。
【００８１】
このように本実施の形態３に係る半導体記憶装置２によれば、リスト作成部３１は、ブロックリスト４１に複数の論理アドレスを列挙する場合には、消去回数が多いブロック順に高い優先順位を割り当てる。消去回数が多いブロックは、消去回数が少ないブロックと比較して、リテンション特性の悪化やディスターブの影響に起因してデータ化けが生じている可能性が高い。従って、ブロックリスト４１に複数の論理アドレスを列挙する場合には、消去回数が多いブロック順に高い優先順位を割り当てることにより、消去回数が多いブロックは優先的に対象ブロックとして決定されるため、データ化けの有無を優先的に判定することが可能となる。
【００８２】
なお、消去回数が多いブロック順に高い優先順位を割り当てる代わりに、過去のエラービット数が多いブロック順に高い優先順位を割り当てても良い。この場合、各物理ブロックのエラービット数に関する情報は、過去のエラービット数を物理ブロック毎にカウントしたリスト情報として、メモリアレイ１３内の所定領域に格納されている。リスト作成部３１は、上記ステップＳＰ３０１において、当該リスト情報を参照することにより、エラービット数が多いブロック順に高い優先順位が割り当てられるように、論理アドレスの挿入箇所を設定する。
【００８３】
過去のエラービット数が多いブロックは、エラービット数が少ないブロックと比較して、メモリセルトランジスタが劣化している可能性が高い。従って、ブロックリスト４１に複数の論理アドレスを列挙する場合には、過去のエラービット数が多いブロック順に高い優先順位を割り当てることにより、過去のエラービット数が多いブロックは優先的に対象ブロックとして決定されるため、データ化けの有無を優先的に判定することが可能となる。
【００８４】
また、図１３では上記実施の形態１を基礎として、挿入箇所を設定するステップＳＰ３０１を追加する例について説明したが、本実施の形態３は上記実施の形態２にも適用できる。図１５は、本変形例に関して、メモリコントローラ１２がブロックリストを生成する処理の流れを示すフローチャートである。上記実施の形態２で説明したステップＳＰ２０５とステップＳＰ２０６との間に、挿入箇所を設定するステップＳＰ３０１が追加されている。
【００８５】
図１６は、本変形例で生成されたブロックリスト４１の一例を簡略化して示す図である。図１６に示した例では、図１４に示したブロックリストに、論理ブロックアドレス「００６」「００７」と、最新変換テーブル２１において各論理ブロックアドレスに対応する物理ブロックアドレス「５０６」「５０７」とが追加されている。物理アドレス「５０６」のブロックは消去回数が「２」であるため、消去回数が「２」のグループの末尾に論理アドレス「００６」が挿入されている。また、物理アドレス「５０７」のブロックは消去回数が「４」であるため、消去回数が「４」のグループの末尾に論理アドレス「００７」が挿入されている。
【００８６】
＜変形例１＞
上記実施の形態１〜３において、対象ブロック決定部３３は、ブロックリスト４１に複数の候補ブロックが列挙されている場合、複数の候補ブロックのうち優先順位が最も高い一つの候補ブロックを対象ブロックとして決定する。
【００８７】
これに代えて本変形例１に係る半導体記憶装置２では、対象ブロック決定部３３は、ブロックリストに複数の候補ブロックが含まれている場合、全ての候補ブロックを対象ブロックとして決定する。
【００８８】
半導体記憶装置２のアイドル期間等、時間的に余裕がある場合には、ブロックリスト４１に含まれている全ての候補ブロックを対象ブロックとして順に決定することにより、他の処理に対する待機時間の発生を回避しつつ、全ての候補ブロックを対象としてサーチリードを実行することが可能となる。
【００８９】
＜変形例２＞
上記実施の形態１〜３において、対象ブロック決定部３３は、ブロックリスト４１に複数の候補ブロックが列挙されている場合、複数の候補ブロックのうち優先順位が最も高い一つの候補ブロックを対象ブロックとして決定する。
【００９０】
これに代えて本変形例２に係る半導体記憶装置２では、対象ブロック決定部３３は、ホスト装置１によって指定された所定数の候補ブロックを、対象ブロックとして決定する。
【００９１】
対象ブロックの許容数をホスト装置１が指定することにより、他の処理に対する待機時間が発生しない範囲内で最大数の候補ブロックを対象として、サーチリードを実行することが可能となる。
【００９２】
＜変形例３＞
上記実施の形態１〜３において、メモリコントローラ１２は、半導体記憶装置２の起動時にサーチリードを実行する。
【００９３】
本変形例３に係る半導体記憶装置２では、メモリコントローラ１２は、半導体装置２の起動時に代えて、あるいは起動時に追加して、半導体記憶装置２のアイドル期間中にサーチリードを実行する。
【００９４】
サーチリードを半導体記憶装置２のアイドル期間中に実行することにより、他の処理に対する待機時間の発生を回避しつつ、サーチリードを実行することが可能となる。
【符号の説明】
【００９５】
１  ホスト装置
２  半導体記憶装置
１２  メモリコントローラ
１３  メモリアレイ
１４  ＳＲＡＭ
３１  リスト作成部
３２  リスト更新部
３３  対象ブロック決定部
３４  判定部
【図１】
0006348400.tif 000002
【図２】
0006348400.tif 000003
【図３】
0006348400.tif 000004
【図４】
0006348400.tif 000005
【図５】
0006348400.tif 000006
【図６】
0006348400.tif 000007
【図７】
0006348400.tif 000008
【図８】
0006348400.tif 000009
【図９】
0006348400.tif 000010
【図１０】
0006348400.tif 000011
【図１１】
0006348400.tif 000012
【図１２】
0006348400.tif 000013
【図１３】
0006348400.tif 000014
【図１４】
0006348400.tif 000015
【図１５】
0006348400.tif 000016
【図１６】
0006348400.tif 000017