JP2014505941A - 半導体記憶装置及び半導体記憶装置の制御方法 - Google Patents

半導体記憶装置及び半導体記憶装置の制御方法 Download PDF

Info

Publication number
JP2014505941A
JP2014505941A JP2013548944A JP2013548944A JP2014505941A JP 2014505941 A JP2014505941 A JP 2014505941A JP 2013548944 A JP2013548944 A JP 2013548944A JP 2013548944 A JP2013548944 A JP 2013548944A JP 2014505941 A JP2014505941 A JP 2014505941A
Authority
JP
Japan
Prior art keywords
block
refresh
reliability
data
memory 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.)
Granted
Application number
JP2013548944A
Other languages
English (en)
Other versions
JP5629391B2 (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2014505941A publication Critical patent/JP2014505941A/ja
Application granted granted Critical
Publication of JP5629391B2 publication Critical patent/JP5629391B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3404Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management

Abstract

【課題】フラッシュメモリの記憶領域ごとの劣化度及びリード頻度に基づいて、記憶領域ごとに信頼性維持期間を算出し、算出した信頼性維持期間に基づいて、記憶領域ごとに計画的にリフレッシュを実行する。
【解決手段】フラッシュメモリ120〜128とメモリコントローラ110とが接続して構成される半導体記憶装置100Aであって、フラッシュメモリ120〜128は、記憶領域として複数のブロックを備えて構成され、メモリコントローラ110は、複数のブロックごとにブロックの劣化度及びリード頻度を管理し、該管理するブロックの劣化度及びリード頻度に基づいて、ブロックに記憶されているデータの信頼性維持期間を取得し、該取得した信頼性維持期間に基づいて、ブロックに記憶されているデータを他のブロックに記憶し直して該データの障害ビットを訂正するためのリフレッシュを実行することを特徴とする半導体記憶装置100A。
【選択図】図1

Description

本発明は、半導体記憶装置及び半導体記憶装置の制御方法に関し、特に電気的に書換え可能な不揮発性メモリの一種であるフラッシュメモリを記憶媒体とする半導体記憶装置及びその制御方法に適用して好適なるものである。
フラッシュメモリは、データ記憶後の経過時間に応じてその記憶されたデータが徐々に変化する特性(リテンション特性)を持ち、また複数回のデータの読出し(リード)によってそのリードされたデータが徐々に変化する特性(リードディスターブ特性)を持つ。このためフラッシュメモリを記憶媒体として備える半導体記憶装置は、一般に、ライト時には複数ビットの訂正能力を持つECC(Error Correcting Code)をデータに付加し、これをフラッシュメモリの記憶領域に格納する。これによりリード時にはこのECCを用いて元データから変化した障害ビットを訂正することができる。このようにして半導体記憶装置は、正確なデータ保持の実現を可能としている。
ここで、半導体記憶装置においてデータ保持期間が長期間に及ぶ場合や、特定領域に対して局所的なリードが複数回行われる場合又はこれらが組み合わさった場合には、ECCの訂正能力を超えて、障害ビットが発生する場合がある。このとき半導体記憶装置により記憶されているデータの信頼性は低下して維持されないこととなる。従来、こうしたECC訂正不能障害に対応し、このECC訂正不能障害の発生確率を十分に低く維持するべく、元データから変化した障害ビット数がECCの訂正可能ビット数を超える前に、フラッシュメモリに既に記憶されているデータを一旦読み出し、読み出したデータの障害ビットをECCにより訂正した後、訂正したデータを再度フラッシュメモリの他の記憶領域に記憶し直す手法がある。この障害ビットの訂正を目的として既に記憶されているデータを再度記憶し直す動作を「リフレッシュ」と呼ぶ。
ECC訂正不能障害を適切に防止するためには、障害ビット数の増加に応じてリフレッシュを実行する必要がある。すなわち障害ビット数が増加してECC訂正可能ビット数を超える前にリフレッシュを実行する必要がある。
例えば、リードディスターブに起因する障害ビット数は、特定の記憶領域に対する累積リード回数によって変化するため、リード頻度に応じてリフレッシュを実行することが望ましい。
そこで、特許文献1には、フラッシュメモリからのデータリード時にリード回数をカウントしておき、リード回数が一定数に達した場合に、記憶済みのデータを一旦読み出して障害ビット数を検査し、障害ビット数が予め定められた規定数以上の場合には、リフレッシュを実行する技術が開示されている。
また、リテンション特性に起因する障害ビット数は、データ記憶後の経過時間によって変化するため、データ記憶後の経過時間に応じてリフレッシュを実行することが望ましい。
そこで、特許文献2には、フラッシュメモリにデータを記憶した後、データ記憶後の経過時間をカウントし、経過時間が予め定められた期間を超過した場合にリフレッシュを実行する技術が開示されている。
また、障害ビット数は、記憶領域の劣化度によっても変化する傾向にあり、例えば劣化度の高い記憶領域は劣化度の低い記憶領域と比べて、リード頻度が少なくデータ記憶後の経過時間が短期間であっても増加する傾向にある。
そこで、特許文献3には、フラッシュメモリにおける記憶領域の劣化度を考慮して、将来の障害ビット数を予測するとともに、将来的に信頼性維持が不可能であると判断した場合、すなわち将来的に障害ビット数がECC訂正可能ビット数を超過すると判断した場合には、記憶済みのデータを他の記憶領域に書き写し、元の記憶領域を一定期間不使用とすることで、データ保持特性を回復させる技術が開示されている。
米国特許出願公開第2004−0257888号明細書 米国特許第7325090号公報 米国特許出願公開第2010−0165689号明細書
ここで、フラッシュメモリの劣化度は、各記憶領域の累積消去回数等に依存するものであり、累積消去回数にはバラつきがあることからも各記憶領域で一様にならないことは明らかである。また仮に、消去回数を平準化する技術(ウェアレベリング)を適切に実行した場合であっても、フラッシュメモリの製造工程において生じる品質差、微小な環境温度差又はデータ等の各種要因により、フラッシュメモリの全記憶領域で障害ビットの増加傾向を均一化することは困難である。このことから、高い信頼性を維持してデータを記憶しておくことが可能な期間(以下、これを「信頼性維持期間」と呼ぶ)は、フラッシュメモリの記憶領域ごとに異なるということが言える。
従って、フラッシュメモリにデータを記憶してからリフレッシュを実行するまでの期間(以下、これを「リフレッシュ期間」と呼ぶ)を記憶領域ごとの劣化度によらずに一律に定めてしまうと、リフレッシュ期間内に信頼性を維持することができないと判断した劣化度の高い記憶領域にはデータを記憶することができなくなる。半導体記憶装置は一般に、一定量の予備領域を備えて構成され、データを記憶することができないと判断した場合にはこの予備領域を記憶領域の代替えとすることが可能であるが、予備領域が枯渇した場合には装置寿命が尽きたものと判断してこれ以上データを記憶することができなくなる。よって装置寿命を延長するためには、劣化度の高い記憶領域のリフレッシュ期間を短縮して頻繁にリフレッシュを実行する必要がある。
一方、劣化度の高い記憶領域の信頼性を維持するために、リフレッシュ期間をこの劣化度の高い記憶領域に合わせて一律に短期間に定めた場合、劣化度が低く長期間データ保持が可能な記憶領域についても頻繁にリフレッシュを実行することとなる。過剰なリフレッシュは、記憶領域の劣化を進展させる原因となるだけでなく、リフレッシュによる内部リソース(バス帯域、プロセッサ又はDMA等)の占有により、上位装置からの要求に対する処理性能が低下する原因となり好ましくない。
上記の課題を解消するためには、フラッシュメモリの記憶領域ごとの個々の劣化度、データ記憶後の経過時間及びリード頻度に基づいて、最適なリフレッシュ期間を定めるとともに、ここで定めたリフレッシュ期間に従ってリフレッシュを実行することが望ましい。このように必要最低限のリフレッシュを実行することで、半導体記憶装置に記憶されたデータの信頼性を維持しつつ、装置の長寿命化を実現することが可能となる。
しかし、特許文献1に記載の技術では、リード頻度に基づいてリフレッシュを実行するだけであり、劣化度及び経過時間に基づいてリフレッシュを実行することはできない。また記憶領域ごとにリード頻度をカウントしてリフレッシュを実行することはできない。
また、特許文献2に記載の技術では、経過時間に基づいてリフレッシュを実行するだけであり、劣化度及びリード頻度に基づいてリフレッシュを実行することはできない。また記憶領域ごとに経過時間をカウントしてリフレッシュを実行することはできない。
また、特許文献3に記載の技術は、将来的に信頼性を維持することができないと判断した時点で即座にデータを他の記憶領域に書き写すというものであり、信頼性を維持することができないと判断してから数日間は高い信頼性を維持してデータを記憶しておくことが可能であるにも関わらずリフレッシュを実行することとなる。よって、不要なリフレッシュによりデータの劣化が進展し、半導体記憶装置の性能も低下することになる。また記憶領域ごとの劣化度、経過時間及びリード頻度に基づいて、リフレッシュを実行することはできない。
従って、フラッシュメモリの記憶領域ごとの劣化度、経過時間及びリード頻度に基づいて、記憶領域ごとに信頼性維持期間を算出し、算出した信頼性維持期間を用いて、記憶領域ごとに計画的にリフレッシュを実行できれば、データの信頼性を維持するとともに、装置性能の低下を抑制し、また装置の長寿命化を図れるものと考えられる。
本発明は以上の点を考慮してなされたもので、データの信頼性を維持するとともに、装置性能の低下を抑制し、また装置を長寿命化させ得る半導体記憶装置及びその制御方法を提案しようとするものである。
かかる課題を解決するために本発明においては、記憶領域を提供するフラッシュメモリと、前記フラッシュメモリに対するデータの読み書きを制御するメモリコントローラとを有する半導体記憶装置において、前記フラッシュメモリの記憶領域は、複数のブロックに分割されて管理され、前記メモリコントローラは、前記ブロックごとに該ブロックの劣化度及びリード頻度を管理し、該管理する前記ブロックの劣化度及びリード頻度に基づいて、前記ブロックに記憶されているデータの信頼性維持期間を取得し、該取得した信頼性維持期間に基づいて、前記ブロックに記憶されているデータを他のブロックに記憶し直すリフレッシュを実行することを特徴とする。
また、本発明においては、記憶領域を提供するフラッシュメモリと、前記フラッシュメモリに対するデータの読み書きを制御するメモリコントローラとを有する半導体記憶装置の制御方法において、前記フラッシュメモリの記憶領域は、複数のブロックに分割されて管理され、前記メモリコントローラが、前記複数のブロックごとに該ブロックの劣化度及びリード頻度を管理する第1のステップと、前記メモリコントローラが、前記管理する前記ブロックの劣化度及びリード頻度に基づいて、前記ブロックに記憶されているデータの信頼性維持期間を取得する第2のステップと、前記メモリコントローラが、前記取得した信頼性維持期間に基づいて、前記ブロックに記憶されているデータを他のブロックに記憶し直すリフレッシュを実行する第3のステップと、を備えることを特徴とする。
本発明によれば、データの信頼性を維持するとともに、装置性能の低下を抑制し、また装置の長寿命化を図ることができる。
半導体記憶装置の概略構成図である。 フラッシュメモリの内部構成図である。 ブロックの内部構成図である。 ページの内部構成図である。 第1の実施の形態におけるデータ保持期間管理情報の概念図である。 第1の実施の形態における信頼性維持期間表の概念図である。 第1の実施の形態におけるリフレッシュ管理情報の概念図である。 第1の実施の形態におけるライト処理のフローチャートである。 第1の実施の形態におけるリード処理のフローチャートである。 第1の実施の形態におけるリフレッシュ処理のフローチャートである。 第2の実施の形態におけるベリファイ管理情報の概念図である。 第2の実施の形態における障害ビット閾値表の概念図である。 第2の実施の形態におけるライト処理のフローチャートである。 第2の実施の形態におけるリード処理のフローチャートである。 第2の実施の形態におけるベリファイ制御処理のフローチャートである。 第2の実施の形態におけるベリファイ処理のフローチャートである。 第2の実施の形態における障害ビット数分布の概念図である。 第2の実施の形態における管理画面の構成図である。 第3の実施の形態における信頼性ランク管理情報の概念図である。 第3の実施の形態におけるライト処理のフローチャートである。 第3の実施の形態におけるリード処理のフローチャートである。 第3の実施の形態におけるリフレッシュ処理のフローチャートである。 第4の実施の形態におけるベリファイ処理のフローチャートである。 第5の実施の形態におけるベリファイ処理のフローチャートである。
以下図面について、本発明の一実施の形態を詳述する。
(1)第1の実施の形態
(1−1)半導体記憶装置の構成
図1は、全体として本実施の形態による半導体記憶装置100Aの概略構成を示す。この半導体記憶装置100Aは、上位装置101及び管理装置102と通信可能に接続されている。
半導体記憶装置100Aは、フラッシュメモリコントローラ110及び複数のフラッシュメモリ120〜128(例えば32個)を備え、フラッシュメモリコントローラ110は、ディスクインターフェース111、ネットワークインターフェース112、RAM(Random Access Memory)113、スイッチ114、プロセッサ115A、データバッファ116及びフラッシュメモリインターフェース117を備えて構成される。
ディスクインターフェース111は、ストレージ装置又はサーバー等の上位装置101に接続され、スイッチ114を介してフラッシュメモリコントローラ110の各部に接続されている。ディスクインターフェース111は、上位装置101からのリード/ライト要求、要求対象の論理的な格納位置を指定するLBA(Logical Block Address)及びライト要求時におけるライトデータを受信する。またディスクインターフェース111は、半導体記憶装置100Aの制御用コマンドを受信した場合、受信したコマンドに基づいて、半導体記憶装置100Aの動作状況、利用状況及び現在の設定値等を上位装置に通知する。
ネットワークインターフェース112は、管理装置102からの各種情報を受信し、又は管理情報102に各種情報を送信する。
RAM113は、具体的にはDRAM(Dynamic RAM)等の揮発性メモリから構成され、このRAM113にはフラッシュメモリコントローラ110の動作を制御するための各種プログラム、フラッシュメモリ120〜128の管理情報及び各DMAで用いられる転送制御情報を含んだ転送リスト等が格納される。なおRAM113は、データを格納するデータバッファ116の機能の一部又は全部を含むとしてもよい。
スイッチ114は、フラッシュメモリコントローラ110内のディスクインターフェース111、ネットワークインターフェース112、RAM113、プロセッサ115A、データバッファ116及びフラッシュメモリインターフェース117を接続し、各部間のデータをアドレス又はIDによってルーティングして転送する。
プロセッサ115Aは、スイッチ114を介してフラッシュメモリコントローラ110の各部と接続し、RAM113に記憶された各種プログラム及び管理情報に基づいて、フラッシュメモリコントローラ110全体を統括的に制御する。またプロセッサ115Aは、定期的な情報取得と割り込み受信機能によって、フラッシュメモリコントローラ110全体を監視する。
データバッファ116は、フラッシュメモリコントローラ110においてデータ転送が処理途中の一時的なデータを格納する。
フラッシュメモリインターフェース117は、複数のバス(例えば16本)を介して複数のフラッシュメモリ120〜128に接続されている。各バスには複数(例えば2個)のフラッシュメモリが接続されており、フラッシュメモリインターフェース117はCE(Chip Enable)信号を用いて同一バスに接続された複数のフラッシュメモリを独立して制御する。またフラッシュメモリインターフェース117は、プロセッサ115Aからのリード/ライト要求に応じて動作する。このときフラッシュメモリインターフェース117は、要求対象を物理アドレス(PBA:Physical Block Address)により受信する。フラッシュメモリインターフェース117は、PBAにより、フラッシュメモリ120〜128、ブロック及びページを算出し、要求対象のフラッシュメモリに対して、ブロック及びページを指定したリード/ライト要求を行う。
またフラッシュメモリインターフェース117は、リード時にはフラッシュメモリ120〜128から記憶済みのデータをリードしてリードしたデータをデータバッファ116に転送する。またライト時にはライトデータをデータバッファ116からリードしてリードしたデータをフラッシュメモリ120〜128にライトする。
またフラッシュメモリインターフェース117は、ECC生成回路、ECCによるデータ損失検出回路及びECC訂正回路を備えて構成され、ライト時には、ECC生成回路によりデータに対してECCを付加してライトする。またリード時には、ECCによるデータ損失検出回路によりフラッシュメモリ120〜128からのリードデータを検査する。またデータ損失が検出された際には、ECC訂正回路によりデータ訂正を行い、訂正ビット数をRAM113に格納する。
上位装置101は、例えば業務システムの中核をなすコンピュータ、ファイルサーバー又は多数の半導体記憶装置が接続されるストレージ装置が相当する。上位装置101は、図示しないプロセッサ、メモリ、ネットワークインターフェース及びローカル入出力デバイス等のハードウェア資源を備えて構成され、またデバイスドライバ、オペレーティングシステム(OS)及びアプリケーションプログラム等のソフトウェア資源を備えて構成される。上位装置101は、プロセッサの制御の下、各種プログラムを実行することで、半導体記憶装置100Aとの通信及びデータのリード/ライト要求を行う。また上位装置101は、プロセッサの制御の下、管理用プログラムを実行することで、半導体記憶装置100Aの使用状況及び動作状況等の管理情報を取得する。また上位装置101は、半導体記憶装置100Aの管理単位、半導体記憶装置100Aの制御方法及び要求データの信頼性を指定又は変更することができる。
管理装置102は、図示しないプロセッサ、メモリ、ネットワークインターフェース及びローカル入出力デバイス等のハードウェア資源と、図示しない管理プログラム等のソフトウェア資源を備えたコンピュータである。管理装置102は、プログラムによってストレージ装置からの情報を取得し、例えば後述の図18に示すような管理画面を表示する。システム管理者は、管理装置102に表示された管理画面を用いて、半導体記憶装置100Aの監視及び運用における制御を行う。なお管理装置102は上述の上位装置101と同じ装置であってもよいし、異なる管理専用の装置であってもよい。
なお上述のディスクインターフェース111、ネットワークインターフェース112、RAM113、スイッチ114、プロセッサ115A、データバッファ116及びフラッシュメモリインターフェース117は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)による1つの半導体素子内に構成されていてもよいし、複数の個別専用IC(Integrated Circuit)を相互に接続することにより構成されていてもよい。
(1−2)データ構成
図2は、フラッシュメモリ120の内部構成を示す。フラッシュメモリ120は、レジスタ201及び複数(例えば4096個)のブロック202〜206から構成される。なお他のフラッシュメモリ121〜128もフラッシュメモリ120と同様の構成である。
レジスタ201は、ページサイズ(例えば4KB)以上の記憶容量を持つレジスタであり、ブロック202〜206は、データの記憶領域である。フラッシュメモリ120は、ブロック単位でのみデータの消去が可能である。
フラッシュメモリ120は、フラッシュメモリインターフェース117からのリード/ライト要求の指示に従って動作し、ライト時には、まずフラッシュメモリインターフェース117からライトコマンド、要求対象のブロック及びページ番号を受信し、次いでフラッシュメモリインターフェース117から転送されるライトデータをレジスタ201に格納する。その後フラッシュメモリ120は、レジスタ201に格納したデータを指定されたページにライトする。またリード時には、フラッシュメモリ120は、まずフラッシュメモリインターフェース117からリードコマンド、要求対象のブロック及びページ番号を受信し、次いで指定されたページに格納されているデータをリードしてレジスタ201に格納する。その後フラッシュメモリ120は、レジスタ201に格納したデータをフラッシュメモリインターフェース117に転送する。
図3は、ブロック202の内部構成を示す。ブロック202は、複数(例えば128個)のページ301〜307から構成される。なお他のブロック203〜206もブロック202と同様の構成である。
ページ301〜307は、データの最小記憶領域である。フラッシュメモリ120は、このページ単位でデータのリード/ライトを行う。ページ301〜307にデータを書き込む順序は予め規定されており、フラッシュメモリ120は、301、302、303、…、307の順にデータをライトする。また記憶済みのページに上書きすることは禁止されており、そのページが属するブロックに記憶されているデータを全て消去した後でなければ、再度そのページにデータを記憶することはできない。このため本願発明が適用される半導体記憶装置100Aは、上位装置101が指定する論理的なアドレス(LBA)と半導体記憶装置100A内部における物理的な記憶位置を指定するアドレス(PBA)とを別の体系によって管理し、LBAとPBAとを対応付けたテーブル情報を管理する。フラッシュメモリ120は、このテーブル情報により、上位装置101から同一LBAのデータについて更新ライト要求を受信した場合であっても、更新前にLBAに対応付けていたPBAを別のページを示す新たなPBAに変換し、変換したPBAにより指定される記憶領域にライトする処理を行っている。上記のアドレス変換処理により、フラッシュメモリ120は、上位装置101に対して実際の物理的な記憶領域の変更を隠蔽することができる。
図4は、ページ301の内部構成を示す。ページ301は、複数(例えば8個)のデータ及びECCから構成される。なお他のページ302〜307もページ301と同様の構成である。
データ401、403及び405は、一定のビット数(例えば4KB)から構成され、ECC402、404及び406は、保障するデータに隣接してそれぞれ記憶される。またECC402は、データ401に隣接して記憶されることにより、データと合わせて1つのECC/CW(ECC/Code Word)を構成する。図4の場合、例えばECC402は、データ401(「Data1」)と合わせて1つのECC/CWを構成している。このECC/CW1つ当たりの障害ビット数がECC訂正可能ビット数を超過した際に、データ損失障害が生じることとなる。なお図4のページ301は、ページ内に8個のECC/CWを構成しているが必ずしもこれに限らず、ページサイズやECCの強度(訂正可能ビット数)に合わせて任意の数のECC/CWを構成するとしてもよい。
(1−3)各種管理情報の構成
図5は、半導体記憶装置100AのRAM113に記憶された管理情報のうち、データ保持期間管理情報500を示す。データ保持期間管理情報500は、ブロックごとにデータ保持期間を管理し、ブロックごとにリフレッシュを実行するために用いられる情報であり、ブロック番号欄501、データ記憶日時欄502、リード回数欄503、消去回数欄504、劣化度欄505、1日当たりの平均リード回数欄506及び信頼性維持期間欄507から構成される。
ブロック番号欄501には、半導体記憶装置100Aが管理する全ブロックのブロック番号が格納される。なお図1に示すように、半導体記憶装置100Aに搭載されたフラッシュメモリが複数存在する場合には、フラッシュメモリの番号とそのフラッシュメモリ内のブロック番号とが合わせて格納される。すなわちブロック番号欄501には、半導体記憶装置100Aに搭載された全フラッシュメモリの全ブロックの中から対象ブロックが一意に特定される値が格納される。
なお図5では、ブロック番号欄501に対象ブロックを一意に特定する値を格納する例を示したが、同一の使用条件で用いる複数ブロックをまとめて1つのブロックグループとし、これを特定するための値がブロック番号欄501に格納されるとしてもよい。ただし、このように複数のブロックをグループで管理するとした場合、リードディスターブによる障害ビットの増加はリードが生じたページを含むブロック内に限定されるため、リードディスターブを考慮したブロックグループのデータの信頼性予測精度は低下する。
データ記憶日時欄502には、ブロックにデータを記憶した日時(日付)が格納される。現在日時は半導体記憶装置100Aにより常時管理されており、ブロックの先頭ページにデータがライトされた記憶日時がデータ記憶日時欄502に格納される。
またリード回数欄503には、ブロックからデータをリードした累積リード回数が格納される。リード回数は、半導体記憶装置100Aによりデータがリードされる度に累積的にカウントされ、累積的にカウントされたカウント値がリード回数欄503に格納される。
さらに消去回数欄504には、ブロックからデータを消去した累積消去回数が格納される。消去回数は、半導体記憶装置100Aによりデータが消去される度に累積的にカウントされ、累積的にカウントされたカウント値が消去回数欄504に格納される。
劣化度欄505には、ブロックの劣化度を示す値が格納される。劣化度は、例えば単に上述の消去回数であってもよいし、後述の第2の実施の形態で述べるように障害ビット数分布に基づいて算出される値としてもよい。
また1日当たりの平均リード回数欄506には、1日当たりの平均リード回数、すなわちリード頻度が格納される。1日当たりの平均リード回数は、プロセッサ115Aにより算出される値であり、まずデータ記憶日時欄502からデータ記憶日時が取得され、現在日時から取得されたデータ記憶日時を差し引いてデータ記憶後の経過時間が取得される。そしてリード回数欄503から累積リード回数が取得され、取得された累積リード回数を経過時間で割って算出された値が1日当たりのリード回数とされる。なおここでは1日単位でリード頻度を管理する例について示したがこれに限らず、例えば1時間単位や1週間単位でリード頻度を管理するとしてもよく、いかなる単位であっても特定の記憶領域からのリード頻度を示す値であればよい。
さらに信頼性維持期間欄507には、ブロックにデータが記憶された後、そのデータの信頼性を維持して記憶しておくことが可能であると予測される予測期間が格納される。ここに格納される値は、後述の信頼性維持期間表600(図6参照)に基づいて取得される。
従って図5の場合、例えばブロック番号が「1」のブロックは、データが記憶された日時は「2010/08/20」であり、現在までにこのブロックからデータがリードされた回数は「5000回」であり、また現在までにこのブロックからデータが消去された消去回数は「1983回」であることが示されている。またこのブロックの劣化度は「3500」であり、1日当たりの平均リード回数は「0回」(1000回未満)であり、このブロックに記憶されたデータの信頼性維持期間は「80日」であることが示されている。
図6は、半導体記憶装置100AのRAM113に記憶された管理情報のうち、信頼性維持期間表600を示す。信頼性維持期間表600は、劣化度及び1日当たりの平均リード回数に基づいて一意の信頼性維持期間を決定するために用いられる。なお決定した信頼性維持期間は、上述のデータ保持期間管理情報500(図5参照)の信頼性維持期間欄507に格納される。
信頼性維持期間表600は、劣化度欄601、1日当たりの平均リード回数欄602及び信頼性維持期間欄603から構成される。
劣化度欄601には、ブロックの劣化度を示す値が格納され、1日当たりの平均リード回数欄602には、1日当たりの平均リード回数が格納される。また信頼性維持期間欄603には、半導体記憶装置100Aに搭載するフラッシュメモリの種別や特性に応じて予め定められた信頼性維持期間が格納される。信頼性維持期間表600によれば、劣化度欄601から1つの劣化度を特定し、かつ、1日当たりの平均リード回数欄602から1つのリード回数を特定することにより、信頼性維持期間欄603から一意の信頼性維持期間を特定することができる。
従って図6の場合、例えば劣化度が「2000」であり、1日当たりの平均リード回数が「1000回」(0〜1000回未満)であるブロックは、これら劣化度及びリード回数の交わる値が「50日」であるから、信頼性維持期間は「50日」であることが示されている。
ここで、信頼性維持期間欄603に格納される信頼性維持期間は、採用するフラッシュメモリの種別や各特性に応じて変化するため、事前に記憶媒体として採用するフラッシュメモリのリテンション特性及びリードディスターブ特性を測定しておき、測定結果である障害ビット数の増加傾向を反映させたものが用いられる。例えば、20ビット(bit)のECC訂正能力を持つ半導体記憶装置100Aにおいて、平均障害ビット数が5ビットを信頼性基準における許容限界ビット数とした場合、事前のフラッシュメモリテストにて劣化度及び1日当たりの平均リード回数の条件ごとに、ブロックにて測定された平均障害ビット数が5ビットまで増加する期間が計測され、計測された期間が信頼性維持期間として用いられる。
このように、信頼性維持期間欄603に格納される信頼性維持期間は、データに対して要求する信頼性に応じて自由に決定することができ、信頼性維持期間欄603の値を適宜変更することで、半導体記憶装置100Aによるデータ保持の信頼性を自由に変更することができる。なお本実施の形態では、半導体記憶装置100Aの稼働前に、装置に搭載する予定のフラッシュメモリのリテンション特性及びリードディスターブ特性を予め測定しておき、その測定結果に基づいて信頼性維持期間欄603の値を決定するとしたがこれに限らず、半導体記憶装置100Aの動作中に取得した障害ビット数に基づいて、信頼性維持期間欄603の値を逐次更新するとしてもよい。例えば半導体記憶装置100Aの許容限界ビット数が平均5ビットであり、信頼性維持期間中のリードにて平均5ビットの障害ビット数が検出された場合、事前に決定した信頼性維持期間欄603の値が示す障害ビット数の増加傾向よりもデータ保持特性の悪い記憶領域が存在するため、信頼性を向上させるべく信頼性維持期間欄603の値を減らして信頼性維持期間を短縮するように更新するとしてもよい。
また、半導体記憶装置100Aに搭載するフラッシュメモリの記憶領域の一部に、信頼性維持期間算出用の指標領域を作成しておき、その値に基づいて信頼性維持期間表600の値を決定するとしてもよい。例えば半導体記憶装置100Aの初期動作時に、フラッシュメモリごとに一部のブロックに対して所定回数のライトと消去を実行し、あえて劣化させた障害ビット指標ブロック群を作成しておく。そして経過時間ごとに、障害ビット指標ブロック群より障害ビットを測定し、障害ビットの増加傾向から信頼性維持期間欄603の値をフラッシュメモリごとに決定する。このようにフラッシュメモリごとの障害ビット指標ブロック群から取得した障害ビットの増加傾向を参照することより信頼性維持期間欄603の値を決定することで、フラッシュメモリごとの品質差に対応する事が可能となる。
また、本実施の形態では、信頼性維持期間欄603には事前のテスト又は動作中のテストによって得られる値が格納されるとしたが必ずしもこれに限らず、数式によって算出される値が格納されるとしてもよい。例えば事前のフラッシュメモリテストにて測定したブロックの劣化度及び1日当たりの平均リード回数の条件ごとの測定値に基づいて、劣化度及び1日当たりの平均リード回数を変数とした二変数の関数を用意し、この関数を用いて信頼性維持期間を算出し、算出した値を格納するとしてもよい。
また、図6の1日当たりの平均リード回数欄602は、各項目の分割単位として1000回、10000回、20000回としたがこれに限らず、半導体記憶装置100Aにおいて信頼性維持期間を高精度に取得する必要があれば、各項目の分割単位をより細分化してもよい。また劣化度における各項目の分割単位も同様に、より細分化してもよい。信頼性維持期間表600の精度は、半導体記憶装置100Aに要求される信頼性、記憶媒体として採用するフラッシュメモリの製造プロセス、SLC(Single Level Cell)、MLC(Multi Level Cell)及びTLC(Triple Level Cell)といった条件により変更することができる。
なお、図6の信頼性維持期間表600を参照して信頼性維持期間が取得される際、対象ブロックの1日当たりの平均リード回数が参照されるが、実際の1日当たりの平均リード回数が図6の1日当たりの平均リード回数の各値と完全に一致する必要はなく、図6の1日当たりの平均リード回数の分割単位の各値に合わせて四捨五入して参照すればよい。
図7は、半導体記憶装置100AのRAM113に記憶された管理情報のうち、リフレッシュ管理情報700を示す。リフレッシュ管理情報700は、リフレッシュ実施予定日を管理するために用いられ、リフレッシュ日時欄701、リフレッシュ対象ブロック数欄702及びリフレッシュ対象ブロック番号欄703から構成される。
リフレッシュ日時欄701には、将来リフレッシュを実行する予定の日時が格納され、リフレッシュ対象ブロック数欄702には、リフレッシュを実行するリフレッシュ対象ブロックのブロック数が格納され、リフレッシュ対象ブロック番号欄703には、リフレッシュを実行するリフレッシュ対象ブロックのブロック番号が格納される。
従って図7の場合、例えば将来「2010/09/11」にリフレッシュを実行する予定であり、この日時にリフレッシュを実行するリフレッシュ対象ブロックのブロック数は「41241」個であり、リフレッシュ対象ブロックのブロック番号は「32449」、「8742」、「2」、…であることが示されている。
(1−4)各種処理の処理手順
図8は、半導体記憶装置100Aのプロセッサ115Aにより実行されるライト処理の処理手順を示す。プロセッサ115Aは、上位装置101からデータ及びライト先LBAを含むライト要求を受信すると、この図8に示すライト処理を開始する。
そしてプロセッサ115Aは、このライト処理を開始すると、まず上位装置101からのライト要求が新規ライト又は追記ライトの何れであるかを判断する(S1)。ここでいう新規ライトとは、データが消去されている状態のブロックに対してデータを新規に記憶することをいい、一般に、先頭ページから順番にデータをライトする処理をいう。一方追記ライトとは、既にデータが記憶されている状態のページを持つブロックに対して途中のページからデータを追加して記憶することをいう。
プロセッサ115Aは、ステップS1において上位装置101からのライト要求が新規ライトであると判断すると、ライト対象ブロックを取得する(S2)。より詳細には、プロセッサ115Aは半導体記憶装置100Aが管理する未書込みブロックの登録リスト(以下、これを「未書込みブロックプール」と呼ぶ)から任意のブロックをライト対象ブロックとして取得する。またこの時、プロセッサ115Aはライト要求に含まれるライト先LBAとステップS2で取得したライト対象ブロックのPBAとを対応付ける。その後プロセッサ115Aは、対応付けたPBAにより指定されるページに対してデータをライトすることになる。
プロセッサ115Aは、ステップS2で取得したライト対象ブロックの先頭ページに対し、上位装置101からのデータをライトする(S3)。その後プロセッサ115Aは、上位装置101にライト完了報告を通知する。
次いでプロセッサ115Aは、RAM113に格納されているデータ保持期間管理情報500を参照して、データをライトしたブロックの劣化度を取得する(S4)。
そしてプロセッサ115Aは、RAM113に格納されている信頼性維持期間表600を参照して、1日当たりの平均リード回数を0回としたときに、ステップS4で取得した劣化度に基づいて一意に定まる信頼性維持期間を取得する(S5)。なおライト直後のブロックの1日当たりの平均リード回数は0回であることから、ここではステップS4で取得した劣化度と平均リード回数0回とに基づいて、信頼性維持期間を取得することができる。
次いでプロセッサ115Aは、RAM113に格納されているデータ保持期間管理情報500のデータ記憶日時欄502、1日当たりの平均リード回数欄506及び信頼性維持期間欄507のそれぞれに、ステップS2で取得したライト対象ブロックに対応するデータ記憶日時、1日当たりの平均リード回数及び信頼性維持期間を格納する(S6)。なおその他の欄(503〜505)には、この新規ライト処理前の状態の値が既に格納されている。
次いでプロセッサ115Aは、ステップS5で取得した信頼性維持期間を現在日時に加えて、これをリフレッシュ実施予定日として算出する(S7)。そしてプロセッサ115Aは、算出したリフレッシュ実施予定日と同一の日時をリフレッシュ管理情報700のリフレッシュ日時欄701から抽出し、抽出した日時に対応するリフレッシュ対象ブロック数欄702のブロック数を1個分加算する。またプロセッサ115Aは、抽出した日時に対応するリフレッシュ対象ブロック番号欄703に、ステップS2で取得したライト対象ブロックのブロック番号を格納する。また同時に、これまで予定していたリフレッシュ実施予定日に対応するリフレッシュ対象ブロック数欄702からブロック数を1個分減算するとともに、リフレッシュ対象ブロック番号欄703からライト対象ブロックのブロック番号を削除する。このようにしてプロセッサ115Aは、リフレッシュ管理情報700を更新して(S7)、ライト処理を終了する。
これに対してプロセッサ115Aは、ステップS2において上位装置101からのライト要求が追記ライトであると判断すると、追記対象ブロックの該当ページにライト要求に含まれるデータをライトする(S8)。その後プロセッサ115Aは、上位装置101にライト完了報告を通知して、ライト処理を終了する。
図9は、半導体記憶装置100Aのプロセッサ115Aにより実行されるリード処理の処理手順を示す。プロセッサ115Aは、上位装置101からリード先LBAを含むリード要求を受信すると、この図9に示すリード処理を開始する。
まずプロセッサ115Aは、上位装置101からのリード要求に含まれるリード先LBAをPBAに変換し、変換したPBAにより指定されるリード対象ページからデータをリードする。そしてプロセッサ115Aは、リードしたデータを上位装置101に転送する(S11)。
次いでプロセッサ115Aは、データ保持期間管理情報500のリード回数欄503からリード対象ブロックのリード回数を取得し、取得した値にリード回数を加算した後、加算したリード回数をリード回数欄503に格納してデータ保持期間管理情報500を更新する(S12)。
次いでプロセッサ115Aは、データ保持管理情報500のデータ記憶日時欄502からリード対象ブロックのデータ記憶日時を取得し、取得したデータ記憶日時と現在日時との差からデータ記憶後の経過時間を算出する(S13)。
次いでプロセッサ115Aは、ステップS12で更新したリード回数をステップS13で算出した経過時間で割って、1日当たりの平均リード回数を新たに算出する(S14)。
次いでプロセッサ115Aは、データ保持期間管理情報500の1日当たりの平均リード回数欄506からリード対象ブロックの1日当たりの平均リード回数を取得し、取得した1日当たりの平均リード回数と、ステップS14で新たに算出した1日当たりの平均リード回数との差の絶対値を変化量として算出する(S15)。
そしてプロセッサ115Aは、ステップS15で算出した変化量が予め定められた閾値以上であるか否かを判断する(S16)。なおここで用いる閾値は、信頼性維持期間表600(図6参照)の1日当たりの平均リード回数欄602の区分単位に基づいて定まる値とする。例えば図6の場合、1日当たりの平均リード回数欄602の区分単位は10000回単位であるから、閾値は「10000」となる。
プロセッサ115Aは、この判断で肯定結果を得ると、信頼性維持期間を取得するために用いた1日当たりの平均リード回数が大きく変化したものと判断してステップS17に移行する。
すなわちプロセッサ115Aは、信頼性維持期間表600を参照して、ステップS14で新たに算出した1日当たりの平均リード回数及び劣化度を用いて新たな信頼性維持期間を取得する。そしてプロセッサ115Aは、取得した新たな信頼性維持期間及びステップS14で新たに算出した1日当たりの平均リード回数をデータ保持期間管理情報500のリード対象ブロックに対応する信頼性維持期間欄507及び1日当たりの平均リード回数欄506にそれぞれ格納して、データ保持期間管理情報500を更新する(S17)。
次いでプロセッサ115Aは、ステップS17で取得した新たな信頼性維持期間を現在日時に加算して、これをリフレッシュ実施予定日として算出する(S18)。そしてプロセッサ115Aは、算出したリフレッシュ実施予定日と同一日時をリフレッシュ管理情報700のリフレッシュ日時欄701から抽出し、抽出した日時に対応するリフレッシュ対象ブロック数欄702に格納されるブロック数を1個分加算するとともに、リフレッシュ対象ブロック番号欄703にリード対象ブロックのブロック番号を格納する。また同時に、これまで予定していたリフレッシュ実施予定日に対応するリフレッシュ対象ブロック数欄702からブロック数を1個分減算するとともに、リフレッシュ対象ブロック番号欄703からリード対象ブロックのブロック番号を削除する。このようにしてプロセッサ115Aは、リフレッシュ管理情報700を更新して(S18)、リード処理を終了する。
これに対してプロセッサ115Aは、ステップS16で否定結果を得ると、現在の信頼性維持期間に大きな変化は生じていないと判断し、リフレッシュ管理情報700を更新することなく、リード処理を終了する。
一方、図10は、半導体記憶装置100Aのプロセッサ115Aにより実行されるリフレッシュ処理の処理手順を示す。プロセッサ115Aは、上位装置101からのアクセス要求とリフレッシュ処理とが競合して装置性能が低下することを防止するため、上位装置101からのアクセス要求がないタイミングで定期的にこの図10に示すリフレッシュ処理を開始する。
プロセッサ115Aは、このリフレッシュ処理を開始すると、まずリフレッシュ管理情報700のリフレッシュ日時欄701から現在日時と同一日時を抽出し、抽出した日時に対応するリフレッシュ対象ブロック数をリフレッシュ対象ブロック数欄702から取得する(S21)。
次いでプロセッサ115Aは、ステップS21で取得したリフレッシュ対象ブロック数が0であるか否かを判断する(S22)。
プロセッサ115Aは、この判断で肯定結果を得ると、現在日時においてリフレッシュを実行する必要はないものと判断して、リフレッシュ処理を終了する。
これに対してプロセッサ115Aは、ステップS22で否定結果を得ると、リフレッシュ管理情報700のリフレッシュ対象ブロック番号欄703から現在日時に対応するリフレッシュ対象ブロック番号を1つ取得する(S23)。
次いでプロセッサ115Aは、リフレッシュを実行する場合にリフレッシュ対象ブロックに格納されているデータを他のブロックに書き写す処理を行うが、そのときのコピー先としてリフレッシュ先ブロックを未書込みブロックプールから取得する(S24)。
次いでプロセッサ115Aは、リフレッシュ対象ブロックの全ページのうち、上位装置101のLBAと対応付がなされている全ての有効ページのデータを取得する(S25)。より詳細には、プロセッサ115Aはフラッシュメモリインターフェース117に搭載されたECC機能によりリフレッシュ対象ブロックのデータについて障害ビットを修正し、障害ビット数が0となったリフレッシュ対象ブロックのデータをデータバッファ116に読み出す。
続いてプロセッサ115Aは、ステップS25で取得したリフレッシュ対象ブロックのデータをステップS24で取得したリフレッシュ先ブロックにライトする(S26)。なおこのときのライト処理は上述のライト処理(S1〜S7参照)と同様である。すなわちプロセッサ115Aは、リフレッシュ先ブロックをリフレッシュ対象ブロックとしてライト処理を行い、このリフレッシュ先ブロックをデータ保持期間管理情報500及びリフレッシュ管理情報700に反映させて、これらの管理情報を更新する。
さらにプロセッサ115Aは、上位装置101のLBAをリフレッシュ先ブロックに対応付ける(S27)。この対応付けにより、上位装置101はリフレッシュ実行後でもリフレッシュ実行前と同一のLBAでリフレッシュ先ブロックのデータにアクセスすることができる。
次いでプロセッサ115Aは、ステップS23で取得したリフレッシュ対象ブロックのデータを消去して、このデータを消去したリフレッシュ対象ブロックを未書込みブロックプールに登録する(S28)。またプロセッサ115Aは、リフレッシュ管理情報700のリフレッシュ日時欄701から現在日時を抽出し、抽出した現在日時に対応するリフレッシュ対象ブロック数欄702からリフレッシュ対象ブロック数を1個分減算する。また抽出した現在日時に対応するリフレッシュ対象ブロック番号欄703からリフレッシュ対象ブロックのブロック番号を削除する。このようにしてプロセッサ115Aは、リフレッシュ管理情報700を更新する(S28)。
プロセッサ115Aは、上位装置101からのアクセス要求があるか否かを判断し(S29)、この判断で肯定結果を得ると、上位装置101からのアクセス要求を優先して、リフレッシュ処理を一時終了する。
これに対してプロセッサ115Aは、ステップS29の判断で否定結果を得ると、ステップS22に移行して、リフレッシュの実行が必要な他のブロックについてリフレッシュ処理を継続する。
(1−5)第1の実施の形態の効果
以上のように、本実施の形態によれば、データ保持期間管理情報500、信頼性維持期間表600及びリフレッシュ管理情報700により、ブロックごとに適宜リフレッシュ処理を実行することができ、不要なリフレッシュを抑制することができる。またリフレッシュの実行に際しては上位装置101からのアクセス要求を優先するため、リフレッシュの実行による装置性能の低下を防止することができる。
(2)第2の実施の形態
(2−1)半導体記憶装置の構成
図1において、100Bは全体として第2の実施の形態による半導体記憶装置100Bを示す。この半導体記憶装置100Bは、信頼性維持期間の妥当性を検査する点を除いて第1の実施の形態による半導体記憶装置100Aと同様に構成されている。より詳細には、第2の実施の形態では、ブロック内の全ページの障害ビット数を実際に読み出して測定し、測定結果に基づいて信頼性維持期間の妥当性を検査する。以下、このブロックに対する障害ビットの悉皆測定を「ベリファイ」と呼ぶ。信頼性維持期間内においてブロックごとにベリファイを実行することにより、予測される障害ビット数の増加傾向と異なるブロックを検知することができ、障害ビット数の増加が予測より急峻であっても、ECC訂正不能障害となる前にリフレッシュを実行することができる。
(2−2)各種管理情報の構成
図11は、半導体記憶装置100BのRAM113に記憶された管理情報のうち、ベリファイ管理情報800を示す。ベリファイ管理情報800は、ベリファイ実施予定日を管理するために用いられ、ベリファイ日時欄801、ベリファイ対象ブロック数欄802及びベリファイ対象ブロック番号欄803から構成される。
ベリファイ日時欄801には、将来ベリファイを実行する予定の日時が格納され、ベリファイブロック数欄802には、ベリファイを実行する対象ブロックのブロック数が格納される。またベリファイ対象ブロック番号欄803には、ベリファイを実行する対象ブロックのブロック番号が格納される。
従って図11の場合、例えば将来「2010/08/21」にベリファイを実行する予定であり、この日時にベリファイを実行する対象ブロックのブロック数は「21241」個であり、ブロック番号は「32449」、「8742」、「2」、…であることが示されている。
ここで、上述の図11に示したベリファイ管理情報800を用いてベリファイを実行する場合以外にも、リード時に取得した障害ビット数が予め定めておいた予測障害ビット数(閾値)よりも特異に多い場合には、このリード対象のブロックを「特異ブロック」として判定し、判定した特異ブロックに対してベリファイを実行するとしてもよい。特異ブロックの判定の際に用いる閾値は、ブロックの使用条件のうち、劣化度、1日当たりの平均リード回数及びデータ記憶後の経過時間の3つに基づいて定めるものとする。例えば劣化度の高いブロックに対しては、劣化度の低いブロックと比較して障害ビット数が多いことからも明らかなように、閾値を高く定める。また1日当たりの平均リード回数の少ないブロックに対しては、1日当たりの平均リード回数の多いブロックと比較して障害ビット数が少ないことから、閾値を低く定める。またデータ記憶後の経過時間が長いブロックに対しては、経過時間が短いブロックと比較して障害ビット数が多いことから、閾値を高く定める。このようにブロックに対する3つの条件を組み合わせてブロックの使用条件ごとに閾値を定める場合、後述の障害ビット数閾値表(図12参照)が用いられる。
図12は、半導体記憶装置100BのRAM113に記憶された管理情報のうち、障害ビット数閾値表900を示す。障害ビット数閾値表900は、上述の特異ブロックを判定する際に用いる閾値を決定するために用いられる。
障害ビット数閾値表900は、劣化度欄901、1日当たりの平均リード回数欄902、経過時間欄903及び閾値欄904から構成される3次元表である。
劣化度欄901には、ブロックの劣化度を示す値が格納され、1日当たりの平均リード回数欄902には、1日当たりの平均リード回数が格納される。また経過時間欄903には、ブロックにデータを記憶してから現在までの経過時間が格納され、閾値欄904には、特異ブロックの判定の際に用いる閾値(障害ビット数)が格納される。
従って図12の場合、例えば劣化度が「2000」であり、1日当たりの平均リード回数が「1000回」であり、経過時間が「0日」であるブロックに対する閾値は、「7bit」であることが示されている。なおブロックの劣化度、1日当たりの平均リード回数及び経過時間が図12に示した障害ビット数閾値表900の各項目と完全に一致しない場合には、障害ビット数閾値表900の各項目に一致するように四捨五入や近傍値を算出することで、ブロックに対する閾値を取得することができる。
ここで、閾値欄904に格納される閾値は、採用するフラッシュメモリの種別や各特性に応じて変化するため、事前に記憶媒体として採用するフラッシュメモリのリテンション特性及びリードディスターブ特性を測定しておき、測定結果である障害ビット数の増加傾向を反映させたものが用いられる。例えば、平均障害ビット数から10ビット多く障害ビットが生じたブロックを特異ブロックの判断基準とする場合、平均障害ビット数が3ビットとなるブロックの使用条件(劣化度、1日当たりの平均リード回数及びデータ記憶後の経過時間)において13ビットが特異ブロックの判断閾値として用いられる。
また事前のフラッシュメモリテストにより、劣化度、1日当たりの平均リード回数及びデータ記憶後の経過時間の個々の条件ごとに、障害ビット数が生じる確率分布を測定しておき、その確率分布を閾値欄904に格納する閾値に用いるとしてもよい。
なお閾値欄904の各値は、装置に対して要求する信頼性維持期間の精度に基づいて決定され、特異ブロックの判定に用いる閾値を変更することで半導体記憶装置100Bによるデータ保持の信頼性の精度を向上することができる。また本実施の形態では、閾値欄904には閾値が格納され、特異ブロックの判定の際に用いる閾値はこの閾値欄904から取得されるとしたが必ずしもこれに限らず、数式によって算出される値が特異ブロックの判定の際に用いられるとしてもよい。例えば事前のフラッシュメモリテストの測定において、劣化度、1日平均当たりの平均リード回数及びデータ記憶後の経過時間を組み合わせた条件ごとに生じた障害ビット数を測定し、その測定値に基づいて各条件変数とした三変数の関数を作成してRAM113に格納しておくとしてもよい。そして特異ブロックの判定時には、対象ブロックの劣化度、1日平均当たりの平均リード回数及びデータ記憶後の経過日時を事前に作成した関数に代入して閾値を算出するとしてもよい。
また図12の1日当たりの平均リード回数欄902の各項目の分割単位として1000回、10000回、20000回としたがこれに限らず、半導体記憶装置100Bにおいて特異ブロックの判定精度を高める場合、1日当たりの平均リード回数の各項目の分割単位をより細分化した障害ビット数閾値表900を作成すればよい。また劣化度における各項目の分割単位も同様に、より細分化してもよい。障害ビット数閾値表900の精度は、半導体記憶装置100Bに要求される信頼性、記憶媒体として採用するフラッシュメモリの製造プロセスやSLC(Single Level Cell)、MLC(Multi Level Cell)、TLC(Triple Level Cell)といった条件により変更することができる。
(2−3)各種処理の処理手順
図13は、半導体記憶装置100Bのプロセッサ115Bにより実行されるライト処理の処理手順を示す。プロセッサ115Bは、上位装置101からデータ及びライト先LBAを含むライト要求を受信すると、この図13に示すライト処理を開始する。
ステップS31〜S37及びS39における処理は、図8のステップS1〜S8における処理と同様であるため、ここでの説明は省略する。
プロセッサ115Bは、ステップS38において、ステップS35で取得した信頼性維持期間の半分の期間を現在日時に加算し、これをベリファイ実施予定日として算出する(S38)。そしてプロセッサ115Bは、算出したベリファイ実施予定日と同一の日時をベリファイ管理情報800のベリファイ日時欄801から抽出し、抽出した日時に対応するベリファイ対象ブロック数欄802のブロック数を1個分加算する。またプロセッサ115Bは、抽出した日時に対応するベリファイ対象ブロック番号欄803に、ステップS32で取得したライト対象ブロックのブロック番号を格納する。また同時に、これまで予定していたベリファイ実施予定日に対応するベリファイ対象ブロック数欄802からブロック数を1個分減算するとともに、ベリファイ対象ブロック番号欄803からライト対象ブロックのブロック番号を削除する。このようにしてプロセッサ115Aは、ベリファイ管理情報800を更新して(S38)、ライト処理を終了する。
なおここでは信頼性維持期間の半分の期間を現在日時に加えてベリファイ実施予定日を算出するとしたがこれに限らず、ベリファイ実施予定日は信頼性維持期間内であればよい。例えば信頼性維持期間から3日減らした日数を現在日時に加え、これをベリファイ実施予定日としてもよい。この場合、リフレッシュ実施予定日の3日前に、ベリファイが実行されることになる。
一方、図14は、半導体記憶装置100Aのプロセッサ115Bにより実行されるリード処理の処理手順を示す。プロセッサ115Bは、上位装置101からリード先LBAを含むリード要求を受信すると、この図14に示すリード処理を開始する。
ステップS41及びS43〜S49における処理は、図9のステップS11〜S18における処理と同様であるため、ここでの説明は省略する。
プロセッサ115Bは、ステップS42において、ステップS41でリードした際に取得したリード対象ページの障害ビット数が図12の障害ビット数閾値表900から取得した閾値以下であるか否かを判断する(S42)。図12の障害ビット数閾値表900から閾値を取得する処理として、まずプロセッサ115Bは、データ保持期間管理情報500からリード対象ブロックのデータ記憶後の経過時間、リード回数及び劣化度を取得し、次いで取得したリード回数をデータ記憶後の経過時間で割って、1日当たりのリード平均リード回数を算出する。そしてプロセッサ115Bは、障害ビット閾値表900から劣化度、1日当たりの平均リード回数及びデータ記憶後の経過時間のそれぞれに該当する障害ビット数を閾値として取得する。
プロセッサ115Bは、この判断で否定結果を得ると、このリード対象ページを含むブロックを障害ビット数が多い特異ブロックであると判断し、この特異ブロックに対して障害ビットの発生状況を検査するためにベリファイを実行する。なおこの特異ブロックについては、信頼性維持期間の算出及びリフレッシュ実施予定日の算出は行われない。
これに対してプロセッサ115Bは、ステップS42の判断で肯定結果を得ると、ステップS43に移行して、上述の図9で説明したリード処理を行う。
このようにベリファイは、ベリファイ管理情報800により定められた日時に計画的に行われる場合とステップS42で特異ブロックを検出した場合の何れの場合にも行われる。
一方、プロセッサ115Bは、ステップS50において、ステップS48で取得した新たな信頼性維持期間の半分の期間を現在日時に加算して、これをベリファイ実施予定日として算出する(S50)。そしてプロセッサ115Bは、算出したベリファイ実施予定日と同一日時をベリファイ管理情報800のベリファイ日時欄801から抽出し、抽出した日時に対応するベリファイ対象ブロック数欄802に格納されるブロック数を1個分加算するとともに、ベリファイ対象ブロック番号欄803にリード対象ブロックのブロック番号を格納する。また同時に、これまで予定していたベリファイ実施予定日に対応するベリファイブロック数欄802からリード対象ブロック数を1個分減算するとともに、ベリファイ対象ブロック番号欄803からリード対象ブロックのブロック番号を削除する。このようにしてプロセッサ115Bは、ベリファイ管理情報800を更新して(S50)、リード処理を終了する。
他方、図15は、半導体記憶装置100Bのプロセッサ115Bにより実行されるベリファイ制御処理の処理手順を示す。プロセッサ115Bは、ベリファイの実行と上位装置101からのアクセス要求とが競合して装置性能が低下することを防止するため、上位装置101からのアクセス要求がないタイミングで定期的にこのベリファイ制御処理を開始する。
そしてプロセッサ115Bは、まずベリファイ管理情報800のベリファイ日時欄801から現在日時と同一日時を抽出し、抽出した日時に対応するベリファイ対象ブロック数欄802からベリファイ対象ブロック数を取得する(S51)。
次いでプロセッサ115Bは、上述のステップS51で取得したベリファイ対象ブロック数が0であるか否か判断する(S52)。
プロセッサ115Bは、この判断で肯定結果を得ると、ベリファイの実行が必要なブロックはないものと判断して、このベリファイ制御処理を終了する。
これに対してプロセッサ115Bは、ステップS52の判断で否定結果を得ると、ベリファイ管理情報800のベリファイ対象ブロック番号欄803からベリファイ対象ブロックのブロック番号を1つ取得する(S53)。
そしてプロセッサ115Bは、ステップS53で取得したブロック番号のブロックに対してベリファイを実行する(S54)。ベリファイ処理についての詳細は後述する(図16参照)。
次いでプロセッサ115Bは、上位装置101からのアクセス要求があるか否かを判断し(S55)、この判断で肯定結果を得ると、上位装置101からのアクセス要求を優先して、ベリファイ制御処理を一時終了する。
これに対してプロセッサ115Bは、ステップS55の判断で否定結果を得ると、ステップS52に移行して、ベリファイの実行が必要な他のブロックについてベリファイ制御処理を継続する。なお上位装置101からのアクセス要求が連続し、ベリファイ管理情報800に格納されたブロックに対して所定の日時以内にベリファイを実行することができないと判断した場合には、上位装置101からのアクセス要求を停止してベリファイ制御処理を優先するとしてもよい。
図16は、半導体記憶装置100Bのプロセッサ115Bにより実行されるベリファイ処理の処理手順を示す。プロセッサ115Bは、特異ブロックを検出した場合(図14:S42参照)又はベリファイ制御処理においてベリファイを実行するタイミングであると判断した場合(図15;S54参照)、このベリファイ処理を開始する。
まずプロセッサ115Bは、ベリファイ対象ブロック内の全ページをリードして各ページのECC/CWごとの障害ビット数を取得するとともに、取得した障害ビット数からブロック内における障害ビット数分布及び最大障害ビット数を取得する(S61)。なおプロセッサ115Bは、フラッシュメモリインターフェース117により障害ビット数を取得するものとし、取得した障害ビット数はRAM113に格納されるものとする。
次いでプロセッサ115Bは、ステップS61で取得した最大障害ビット数が予め定められた閾値以下であるか否かを判断する(S62)。ここでの閾値は、半導体記憶装置100B内で許容される最大障害ビット数である。
プロセッサ115Bは、この判断で否定結果を得ると、このベリファイ対象ブロックは障害ビット数が多く記憶領域として使用することができないものと判断し、すぐにリフレッシュを実行するとともにその後使用することができない「使用不可ブロック」として管理する。
これに対してプロセッサ115Bは、ステップS62の判断で肯定結果を得ると、このベリファイ対象ブロックは障害ビット数が少なく記憶領域として継続して使用することができ、すぐにリフレッシュを実行する必要がないものと判断して、最適な劣化度を決定するために後述のステップS63に移行する。
プロセッサ115Bは、ステップS61で取得した障害ビット数分布に基づいて劣化度を決定し、決定した劣化度をデータ保持期間管理情報500(図5参照)の劣化度欄505に格納して、このデータ保持期間管理情報500を更新する(S63)。なおこの障害ビット数分布に基づいて劣化度を決定する方法については後述する(図17参照)。
次いでプロセッサ115Bは、ステップS63で決定した新たな劣化度がステップS63で更新する前のデータ保持期間管理情報500に格納されていた劣化度と同一であるか否かを判断する(S64)。
プロセッサ115Bは、この判断で肯定結果を得ると、ベリファイ処理を終了する。これに対してプロセッサ115Bは、この判断で否定結果を得ると、新たな劣化度に基づいてリフレッシュ実施予定日を算出するために、ステップS65に移行する。
プロセッサ115Bは、データ保持期間管理情報500のデータ記憶日時欄502及び1日当たりの平均リード回数欄506からデータ記憶日時及び1日当たりの平均リード回数を取得する(S65)。
次いでプロセッサ115Bは、ステップS65で取得したデータ記憶日時を現在日時から差し引いて、ベリファイ対象ブロックのデータ記憶後の経過時間を算出する(S66)。
次いでプロセッサ115Bは、信頼性維持期間表600(図6参照)を参照して、ステップS63で決定した新たな劣化度及びステップS65で取得した1日当たりの平均リード回数を用いて新たな信頼性維持期間を取得し、取得した新たな信頼性維持期間をデータ保持期間管理情報500の信頼性維持期間欄507に格納して、データ保持期間管理情報500を更新する(S67)。
次いでプロセッサ115Bは、ステップS65で取得したデータ記憶日時にステップS67で取得した信頼性維持期間を加算して、これをリフレッシュ実施予定日として算出する(S68)。そしてプロセッサ115Bは、算出したリフレッシュ実施予定日と同一日時をリフレッシュ管理情報700のリフレッシュ日時欄701から抽出し、抽出した日時に対応するリフレッシュブロック数欄702に格納されているブロック数を1個分加算するとともに、リフレッシュ対象ブロック番号欄703にベリファイ対象ブロックのブロック番号を格納する。また同時に、これまで予定していたリフレッシュ実施予定日に対応するリフレッシュブロック数欄702からブロック数を1個分減算するとともに、リフレッシュ対象ブロック番号欄703からベリファイ対象ブロックのブロック番号を削除する。このようにしてプロセッサ115Bは、リフレッシュ管理情報700を更新した後(S68)、ベリファイ処理を終了する。
(2−4)障害ビット数分布及び障害ビット数分布指標の構成
図17は、半導体記憶装置100BのRAM113に格納された障害ビット数分布1000と障害ビット数分布指標1001及び1002とを示す。障害ビット数分布1000と障害ビット数分布指標1001及び1002とは、上述のベリファイ処理(図16参照)において劣化度を算出するために用いられる。障害ビット数分布1000は、上述のベリファイ処理のステップS61で取得されるものであり、また障害ビット数分布指標1001及び1002は、予めRAM113に格納されているものであって、事前のフラッシュメモリテストにて劣化度、1日当たりの平均リード回数及びデータ記憶後の経過時間の条件ごとに障害ビット数分布を測定した結果に基づいて作成されたものである。
障害ビット数分布1000は、データ記憶後の経過時間が「20日」であり、1日当たりの平均リード回数が「1000回」であるベリファイ対象ブロックの障害ビット数分布を示している。障害ビット数分布1000は、障害ビット数欄1000A及びECC/CW欄1000Bから構成され、障害ビット数欄1000Aには、障害ビットの数が0から一定数まで順次格納され、ECC/CW欄1000Bには、障害ビット数欄1000Aに格納された障害ビット数に対応するECC/CWの個数が格納される。
従って図17の場合、例えばベリファイ対象ブロック内に、障害ビットが生じていないECC/CWは「500個」あり、また障害ビットが「1個」だけ生じているECC/CWは「230個」あり、また障害ビットが「2個」生じているECC/CWは「122個」存在することを示している。
また障害ビット数分布指標1001は、劣化度が「1000」であり、データ記憶後の経過時間が「20日」であり、1日当たりの平均リード回数が「1000回」であるブロックの障害ビット数分布を示している。障害ビット数分布指標1001は、上述の障害ビット数分布1000と同様、障害ビット数欄1001A及びECC/CW欄1001Bから構成され、それぞれ障害ビット数及び対応するECC/CWの個数が格納される。
従って図17の場合、例えば劣化度が「1000」のブロック内に、障害ビットが生じていないECC/CWは「700個」あり、また障害ビットが「1個」だけ生じているECC/CWは「230個」あり、また障害ビットが「2個」生じているECC/CWは「122個」存在することを示している。
また障害ビット数分布指標1002は、劣化度が「2000」であり、データ記憶後の経過時間が「20日」であり、1日当たりの平均リード回数が「1000回」であるブロックの障害ビット数分布を示している。障害ビット数分布指標1002は、上述の障害ビット数分布指標1001と劣化度が異なる他は同様に構成されている。
従って図17の場合、例えば劣化度が「2000」のブロック内に、障害ビットが生じていないECC/CWは「520個」あり、また障害ビットが「1個」だけ生じているECC/CWは「240個」あり、また障害ビットが「2個」生じているECC/CWは「85個」存在することを示している。
ここで、プロセッサ115Bは障害ビット数分布1000の劣化度を決定するために、データ記憶後の経過時間及び1日当たりの平均リード回数が障害ビット数分布1000と同一である障害ビット数分布指標1001及び1002を用いてそれぞれを比較する。
比較の方法としては、例えば障害ビット数分布1000と各障害ビット数分布指標(ここでは1001及び1002)とのECC/CW数の差の絶対値を障害ビット数ごとにそれぞれ算出し、すべての障害ビット数におけるECC/CW数の差の絶対値を足し合わせて合計値を算出する。そして合計値が最小となる障害ビット数分布指標を障害ビット数分布1000と最も類似した障害ビット数分布指標として決定し、この決定した障害ビット数分布指標の劣化度をベリファイ対象ブロックの新たな劣化度として定める。
具体的には、障害ビット数分布1000と障害ビット数分布指標1001との比較では、障害ビット数が「0個」におけるECC/CW数はそれぞれ「500個」と「700個」であるから、ECC/CW数の差の絶対値は「200個」となる。また障害ビット数が「1個」におけるECC/CW数はそれぞれ「230個」で同一であるから、ECC/CW数の差の絶対値は「0個」となる。このようにして、すべての障害ビット数におけるECC/CW数の差の絶対値を算出してこれらの合計値を算出する。
一方で障害ビット数分布1000と障害ビット数分布指標1002との比較についても同様に行い、すべての障害ビット数におけるECC/CW数の差の絶対値を算出してこれらの合計を算出する。
そして算出した2つのECC/CW数の差の絶対値の合計が最小となる方の障害ビット数分布指標の劣化度を新たな劣化度として定める。なおここでは2つの障害ビット数分布指標を用いて新たな劣化度を定めているがこれに限らず、管理する劣化度の精度に応じて複数の劣化度に対応する障害ビット数分布指標を用いて新たな劣化度を定めることとしてもよい。
また新たな劣化度を決定する他の方法として、例えば障害ビット数分布1000のECC/CW欄1000Bに格納されているすべてのECC/CW数の合計値、すなわちベリファイ対象ブロック内で生じたすべての障害ビット数の合計値と、障害ビット数分布指標1001及び1002のECC/CW欄1001B及び1002Bに格納されているすべてのECC/CW数の合計値とを比較して、ECC/CW欄1000B内のすべてのECC/CW数の合計値に最も近い合計値を算出した障害ビット数分布指標の劣化度を新たな劣化度として定めることとしてもよい。
また障害ビット数分布指標1001及び1002を分布関数の母数(パラメータ)にてRAM113に格納し、上記比較に用いてもよい。より詳細には、劣化度、データ記憶後の経過時間及び1日当たりの平均リード回数ごとの各障害ビット数分布指標に、障害ビット数分布を表す二項分布の平均ビット障害率やポアソン分布のECC/CW当たりの平均障害ビット数といった母数を用いる。この各母数を代入した分布関数の値を、先の障害ビット数分布指標と同様に障害ビット数分布1000と比較することで、劣化度を定めることとしてもよい。なお本実施の形態では、ベリファイ処理時に劣化度を決定する場合について述べたがリフレッシュ処理時にも同様の劣化度判定を行い、次ライト時の信頼性維持期間の予測精度向上を図るとしてもよい。具体的には、図10のステップS25におけるリード時に図16のべリファイ処理を合わせて行うことで、リフレッシュ時にも劣化度を変更することができる。
(2−5)画面構成
図18は、管理装置102に表示される管理画面1100の構成例を示す。なお管理画面1100は、プロセッサ115Bの制御により半導体記憶装置100Bに表示されるとしてもよい。システム管理者は、この管理画面1100を用いて、信頼性維持期間表600(図6参照)や障害ビット数閾値表900(図12参照)に格納される各値を半導体記憶装置100Bに対して要求する信頼性に応じて設定することができる。
管理画面1100は、システム管理者が操作する項目として信頼性モード選択領域1101、許容障害ビット数領域1102、最長リフレッシュ周期領域1103及び許容劣化度領域1104を備えて構成され、また半導体記憶装置100Bのステータスを表示する項目として平均劣化度領域1105、平均リフレッシュ周期領域1106、平均ベリファイ周期領域1107、使用不可ブロック数領域1108を備えて構成される。また管理画面1100は、システム管理者に何らかのメッセージを通知するためのメッセージウィンドウ1109を備える。
信頼性選択モード領域1101は、半導体記憶装置100Bの信頼性をシステム管理者が設定するための領域であり、複数(ここでは3つ)のラジオボタンのうちの1つを選択するための領域である。選択可能な信頼性の種類には、「コンシューマモード」、「エンタープライズモード」及び「カスタムモード」がある。
「コンシューマモード」は、例えば1sector per in 10^14[bits]等の信頼性を基準に動作するモードであり、「エンタープライズモード」は、例えば1sector per in 10^16[bits]等の信頼性を基準動作するモードであって、「コンシューマモード」よりも高い信頼性を維持して動作するモードである。半導体記憶装置100Bは、これらのモードにより設定した信頼性に基づいて、信頼性維持期間表600(図6参照)の各信頼性維持期間や障害ビット数閾値表900(図12参照)の各閾値、及び図16のステップS62で用いる使用不可ブロックを判定するための閾値を変化させることができる。例えば「エンタープライズモード」が選択された場合、「コンシューマモード」よりも信頼性維持期間表600の各値は小さくなり、リフレッシュ期間は短縮されることになる。また同様に「エンタープライズモード」が選択された場合、「コンシューマモード」よりも障害ビット数閾値表900の値は小さくなり、より少ない障害ビット数でも、使用不可ブロックとして判定されることになる。
なお半導体記憶装置100Bは、「コンシューマモード」及び「エンタープライズモード」の2つのモードにおけるそれぞれの信頼性維持期間表600及び障害ビット数閾値表900をRAM113に格納しており、モードの変更によって参照する表を変えることにより、上述の信頼性基準を変更する機能を実現する。
また「カスタムモード」は、上述の「コンシューマモード」や「エンタープライズモード」のように信頼性基準を変更するのではなく、システム管理者がマニュアルで許容障害ビット数領域1102、最長リフレッシュ周期領域1103及び許容劣化度領域1104の各領域において任意の値を入力するためのモードである。
また障害ビット数領域1102は、ECC/CWにおいて許容する障害ビット数をシステム管理者が入力するための領域であり、ここで入力された障害ビット数を超過したECC/CWを含むブロックについては、プロセッサ115Bにより使用不可と判断される。
また最長リフレッシュ周期領域1103は、リフレッシュ周期の上限をシステム管理者が入力するための領域であり、ここで入力されたリフレッシュ周期を超過したブロックについては強制的にリフレッシュが実行されることになる。より詳細には、図8のステップS7、図9のステップS18、図13のステップS37、図14のステップS49及び図16のステップS68におけるリフレッシュ実施予定日の算出処理において、算出したリフレッシュ実施予定日が最長リフレッシュ周期領域1103に入力された値を超過している場合、最長リフレッシュ周期がリフレッシュ期間としてリフレッシュ管理情報700に格納されることになる。
また許容劣化度領域1104は、記憶領域として用いるフラッシュメモリ内領域の劣化度の上限をシステム管理者が入力するための領域であり、ここで入力された劣化度を超過したブロックについては、プロセッサ115Bにより使用不可と判断される。このようにシステム管理者は、管理画面1100において任意の値を入力することにより、半導体記憶装置100Bのデータ保持の信頼性を柔軟に変更することができる。
次いで平均劣化度領域1105は、半導体記憶装置100B内に搭載されている全てのフラッシュメモリ内の全てのブロックの劣化度の平均を表示するための領域である。システム管理者は、ここで表示される平均を参照することにより、半導体記憶装置100Bの寿命(残りの使用可能期間、残りの書き換え可能容量及び劣化度等)を把握することができる。
また平均リフレッシュ周期領域1106は、半導体記憶装置100Bにより実行されている各ブロックのリフレッシュ周期の平均値を表示するための領域である。システム管理者は、ここで表示される平均値を参照することにより、リフレッシュによる装置性能の低下の影響を把握することができる。
また平均ベリファイ周期領域1107は、半導体記憶装置100Bにより実行されている各ブロックのベリファイ周期の平均値を表示するための領域である。システム管理者は、ここで表示される平均値を参照することにより、ベリファイによる装置性能の低下の影響を把握することができる。
また使用不可ブロック数領域1108は、半導体記憶装置100Bに搭載されている全フラッシュメモリ内の全ブロックについて、図16のステップS62で使用不可ブロックと判断されたブロックの個数を表示するための領域である。システム管理者は、ここで表示される使用不可ブロック数を参照することにより、半導体記憶装置100Bの寿命を把握することができる。
(2−6)第2の実施の形態の効果
以上のように、本実施の形態によれば、ベリファイ処理(図16参照)により、劣化度の変更が必要であると判断した場合には障害ビット数分布に基づいて新たな劣化度を算出し、算出した新たな劣化度に基づいて新たなリフレッシュ実施予定日を算出することができる。よって予測障害ビット数よりも特異に障害ビット数が増加した特異ブロックについてはリフレッシュ期間を短縮してECC訂正不能障害を防止することができ、データの信頼性を高く維持することが可能となる。また逆に予測障害ビット数よりも特異に障害ビット数が少ないブロックについてはリフレッシュ期間を延長して不要なリフレッシュ処理を防止することができ、装置性能の低下を抑制することができる。更に劣化度を変更することにより、次のライト時までの信頼性維持期間の予測精度を向上させることができる。
またベリファイ処理(図16参照)により、ブロックに対する消去回数を劣化度とせずにベリファイによる障害ビット数分布に基づいて劣化度を算出するため、消去回数が多くともデータ保持特性が良いブロックについてはリフレッシュ期間を延長してデータ保持特性を有効活用することができる。一方消去回数が少ないにも関わらずデータ保持特性が良くないブロックについてはリフレッシュ期間を短縮してデータの信頼性を向上することができる。
(3)第3の実施の形態
(3−1)半導体記憶装置の構成
図1において、100Cは全体として第3の実施の形態による半導体記憶装置100Cを示している。この半導体記憶装置100Cは、特定のタイミングにリフレッシュが集中して実行されることを防止して上位装置101に対する応答性能の低下を防止する点及び半導体記憶装置100Cに記憶されるデータの信頼性を時間的に一定に維持する点を除いて第1の実施の形態による半導体記憶装置100Aと同様に構成されている。
ここで、上述の第1の実施の形態ではリフレッシュ管理情報700によりリフレッシュを実行することが必要なリフレッシュ対象ブロックを取得し、取得したリフレッシュ対象ブロックに対して信頼性維持期間内にリフレッシュを実行することとしている。しかしこうした方法でリフレッシュを実行すると、特定の日時にリフレッシュの実行が集中する場合がある。
そしてリフレッシュの実行が集中した場合、半導体記憶装置100Cは、データの信頼性を維持するために上位装置101への応答を停止してリフレッシュを優先して実行することとなるが、このとき装置性能は不安定になる。
また信頼性維持期間内であってもリフレッシュの実行が必要なブロックが集中した場合、データ消失の危険性が相対的に高まったブロックが偏在することとなり、半導体記憶装置100C全体の信頼性は時間的に増減し、信頼性の低い時期が発生することになる。
そこで本実施の形態では、上述のリフレッシュにおける課題を緩和するものであり、上位装置101への応答性能を安定させるとともに、半導体記憶装置100C全体の信頼性を時間的に一定に維持することを実現するものである。
(3−2)信頼性ランク管理情報の構成
第3の実施の形態において用いるデータ保持期間管理情報及び信頼性維持期間表は、第1の実施の形態において用いるデータ保持期間管理情報500及び信頼性維持期間表600の構成と同様であるためここでの説明は省略する。また第3の実施の形態では、リフレッシュ管理情報700を用いず、後述の信頼性ランク管理情報1200(図19参照)を用いてリフレッシュを実行する。
図19は、半導体記憶装置100CのRAM113に記憶された管理情報のうち、信頼性ランク管理情報1200を示す。信頼性ランク管理情報1200は、信頼性ランクごとにブロックを管理するために用いられ、信頼性ランク欄1201、許容ブロック数欄1202、存在ブロック数欄1203及びブロック番号欄1204から構成される。
そして信頼性ランク欄1201には、半導体記憶装置100Cに存在するブロックの相対的な信頼性の度合いを示す値(信頼性の範囲)が格納される。信頼性は、ブロックにデータが記憶された後の経過時間を信頼性維持期間で割って得られた値とする。例えばデータ記憶後の経過時間が「21日」であり、信頼性維持期間が「30日」であるブロックの信頼性は、信頼性維持期間全体のうちの70%の日数が既に経過したものであるから、「70%」となる。そしてこのブロックは、図19の場合、信頼性ランク「60%〜89%」に該当することになる。
なおこの信頼性ランクは、フラッシュメモリのリテンション特性に基づいて定めたものであり、異なる使用条件下のブロックをデータの信頼性という観点から分類するためのものである。例えば信頼性維持期間が30日であって、データ記憶後の経過時間が15日のブロックと、信頼性維持期間が20日であって、データ記憶後の経過時間が10日のブロックとは使用条件が異なるものの、何れも信頼性は50%であるから、リフレッシュを実行するタイミングについては同等に管理される。
そして許容ブロック数欄1202には、信頼性ランク欄1201により区分される信頼性ランクごとに、半導体記憶装置100C内で存在を許容する許容ブロックの数が格納される。なおこの信頼性ランクごとの許容ブロック数は、装置性能の安定性や信頼性の時間的増減を考慮して、システム管理者の任意の値が格納される。
また存在ブロック数欄1203には、信頼性ランク欄1201により区分される信頼性ランクごとに、半導体記憶装置100C内で存在する存在ブロックの数が格納される。またブロック番号欄1204には、信頼性ランク欄1201により区分される信頼性ランクごとに、その信頼性ランクに存在する存在ブロックの番号が格納される。
従って図19の場合、例えば信頼性ランクが「60%〜89%」のブロックは、半導体記憶装置100C内に「14745個(20%)」まで存在することが認められており、実際には「18432個(25%)」が存在していることが示されている。またこの信頼性ランクに存在する18432個の存在ブロックの番号は、「38754」、「2444」、「68221」、・・・であることが示されている。また「60%〜89%」の信頼性ランクにおいては、上述のように存在ブロック数が許容ブロック数を超えているため、両者の差である「3687個」のブロックがリフレッシュの実行対象となる。
なお図19の信頼性ランク管理情報1200では、信頼性ランク欄1201において信頼性ランクを5段階に区分しているが必ずしもこれに限られない。また信頼性ランクの算出方法として、データ記憶後の経過時間を信頼性維持期間で割って算出するとしたがこれに限らず、信頼性維持期間を一定値として単にデータ記憶後の経過時間を信頼性ランクとしてもよい。
また各条件(劣化度及び1日当たりの平均リード回数)における経過時間ごとの障害ビット数分布を事前に測定しておき、その分布を用いて各条件と経過時間ごとの信頼性ランクを決定するとしてもよい。例えば障害ビット数が5ビットを超える確率で信頼性ランクを分類するとした場合、劣化度が「1000」で1日当たりの平均リード回数が「1000回」のブロックにおいてデータ記憶後「10日」が経過したとき、障害ビット数が5ビットとなる確率が事前のフラッシュメモリテストで10%であれば、信頼性ランクを「5%〜29%」として管理するような信頼性ランクを用いるとしてもよい。
(3−3)各種処理の処理手順
図20は、半導体記憶装置100Cのプロセッサ115Cにより実行されるライト処理の処理手順を示す。プロセッサ115Cは、上位装置101からデータ及びライト先LBAを含むライト要求を受信すると、この図20に示すライト処理を開始する。
ステップS71〜S76及びS78における処理は、図8のステップS1〜S6及びS8の処理と同様であるため、ここでの説明は省略する。
プロセッサ115Cは、ステップS77において、データ記憶後の経過時間(新規ライト処理のため、値は0)をステップS75で取得した信頼性維持期間で割って、これを信頼性ランクとして算出する(S77)。そしてプロセッサ115Cは、この信頼性ランクに対応する存在ブロック数欄1203(図19参照)に格納されるブロック数を1個分加算するとともに、ブロック番号欄1204にライト対象ブロックの番号を格納して信頼性ランク管理情報1200を更新して(S77)、ライト処理を終了する。
図21は、半導体記憶装置100Cのプロセッサ115Cにより実行されるリード処理の処理手順を示す。プロセッサ115Cは、上位装置101からリード先LBAを含むリード要求を受信すると、この図21に示すリード処理を開始する。
ステップS81〜S87における処理は、図9のステップS11〜17の処理と同様であるため、ここでの説明は省略する。
プロセッサ115Cは、ステップS88において、ステップS83で算出したデータ記憶後の経過時間をステップS87で取得した信頼性維持期間で割って、これを信頼性ランクとして算出する(S88)。そしてプロセッサ115Cは、算出した信頼性ランクと同一の信頼性ランクを信頼性管理情報1200の信頼性ランク欄1201から抽出し、抽出した信頼性ランクに対応する存在ブロック数欄1203に格納されているブロック数を1個分加算するとともに、ブロック番号欄1204にリード対象ブロックのブロック番号を格納する。また同時に、これまでの信頼性ランクに対応する存在ブロック数欄1203からブロック数を1個分減算するとともに、ブロック番号欄1204からリード対象ブロックのブロック番号を削除する。このようにしてプロセッサ115Cは、信頼性ランク管理情報1200を更新した後(S88)、リード処理を終了する。
なお各ブロックの信頼性ランクは毎日変化するため、上述のリード処理において信頼性ランク管理情報1200を更新する処理とは別に、信頼性ランク管理情報1200を定期的又は不定期に更新するとしてもよい。例えばプロセッサ115Cは、1日に最低でも1度全ブロックについて、データ保持期間管理情報500のデータ記憶日時欄502からデータ記憶日時を取得して現在日時との差からデータ記憶後の経過時間を算出し、一方で信頼性維持期間欄507から信頼性維持期間を取得し、経過時間を信頼性維持期間で割って信頼性ランクを算出する。そしてプロセッサ115Cは、この全ブロックについて算出した信頼性ランクに基づいて信頼性ランク管理情報1200を更新するとしてもよい。
図22は、半導体記憶装置100Cのプロセッサ115Cにより実行されるリフレッシュ処理の処理手順を示す。プロセッサ115Cは、上位装置101からのアクセス要求とリフレッシュ処理とが競合して装置性能が低下することを防止するため、上位装置101からのアクセス要求がないタイミングで定期的にこのリフレッシュ処理を開始する。
まずプロセッサ115Cは、信頼性ランク管理情報1200の許容ブロック数欄1202及び存在ブロック数欄1203から各信頼性ランクの許容ブロック数及び存在ブロック数を取得する(S91)。
次いでプロセッサ115Cは、ステップS91で取得した許容ブロック数よりも存在ブロック数の方が多い信頼性ランクがあるか否かを判断する(S92)。
プロセッサ115Cは、この判断で否定結果を得ると、現在日時においてリフレッシュを実行する必要はないものと判断して、リフレッシュ処理を終了する。
これに対してプロセッサ115Cは、ステップS92で肯定結果を得ると、許容ブロック数を超過している信頼性ランクのブロックをリフレッシュ対象ブロックとして判定し、リフレッシュ対象ブロックのブロック番号を無作為に1つ取得する(S93)。
次いでプロセッサ115Cは、ステップS94〜S97における処理により、ステップS93で取得したブロック番号のブロックに対してリフレッシュを実行する(S94〜S97)。なおステップS94〜S97における処理は、図10のステップS24〜S27の処理と同様であるため、ここでの説明は省略する。
プロセッサ115Cは、ステップS93で取得したリフレッシュ対象ブロックのデータを消去して、このリフレッシュ対象ブロックを未書込みブロックプールに格納する(S98)。そしてプロセッサ115Cは、信頼性ランク管理情報1200において、信頼性ランク「0%〜4%」に対応する存在ブロック欄1203のブロック数を1個分加算し、ブロック番号欄1204にリフレッシュ実行後のリフレッシュ対象ブロックのブロック番号を格納する。また同時に、プロセッサ115Cは、信頼性ランク欄1201からリフレッシュ実行前のリフレッシュ対象ブロックの信頼性ランクを取得し、取得した信頼性ランクに対応する存在ブロック数欄1203のブロック数を1個分減算する。また取得した信頼性ランクに対応するブロック番号欄1204からリフレッシュ対象ブロックのブロック番号を削除する。このようにしてプロセッサ115Cは、信頼性ランク管理情報1200を更新する(S98)。
そしてプロセッサ115Cは、上位装置101からのアクセス要求があるか否かを判断し(S99)、この判断で肯定結果を得ると、上位装置101からのアクセス要求を優先して、リフレッシュ処理を一時終了する。
これに対してプロセッサ115Cは、ステップS99の判断で否定結果を得ると、ステップS92に移行して、リフレッシュの実行が必要な他のブロックについてリフレッシュ処理を継続する。
(3−4)第3の実施の形態の効果
以上のように、本実施の形態によれば、相対的に信頼性の悪化したブロックが時間的に偏在しないように平準化する制御を行うことにより、半導体記憶装置100C全体の信頼性を時間的に一定に維持することができる。また信頼性ランク管理情報1200(図19参照)について、信頼性ランクの値が大きく(信頼性が低く)なるに従い、許容ブロック数が小さくなるように設定すれば、リフレッシュは段階的に実行されることになるため、特定の期間に集中してリフレッシュが実行されることを防止することができ、上位装置101への応答性能の低下を軽減することができる。
(4)第4の実施の形態
(4−1)半導体記憶装置の構成
図1において、100Dは全体として第3の実施の形態による半導体記憶装置100Dを示している。この半導体記憶装置100Dは、搭載するフラッシュメモリの全ブロックに対してベリファイを実行し、その過程で取得した障害ビット数に基づいてブロックごとにリフレッシュ期間を決定する点を除いて第1の実施の形態による半導体記憶装置100Aと同様に構成されている。
なおこの半導体記憶装置100Dは、第1〜3の実施の形態で用いた劣化度、データ記憶後の経過時間及び1日当たりの平均リード回数といったブロックごとの使用条件を管理情報として管理しない点を除いて第1の実施の形態による半導体記憶装置100Aと同様に構成されている。
またこの半導体記憶装置100Dは、ライト処理において、上位装置101からのデータをフラッシュメモリに記憶するという一般的な処理を行い、またリード処理についても同様に、フラッシュメモリからデータをリードして、上位装置101に転送するという一般的な処理を行う。従ってここでは、これらの処理についての説明は省略する。
この半導体記憶装置100Dは、ライト処理及びリード処理とは独立して、搭載するフラッシュメモリの全ブロックに対して定期的にベリファイを実行する。より詳細には、半導体記憶装置100Dは例えば5日間のうち、最低でも1度は障害ビット数の発生状況を確認するためのリードを実行し、そのリード時に取得した障害ビット数の最大値の閾値に基づいて、リフレッシュ周期を決定する。
(4−2)ベリファイ処理
図23は、半導体記憶装置100Dのプロセッサ115Dにより実行されるベリファイ処理の処理手順を示す。プロセッサ115Dは、半導体記憶装置100Dの動作中(起動中)において定期的又は不定期に、この図23に示すベリファイ処理を開始する。
なおプロセッサ115Dは、半導体記憶装置100Dが搭載するフラッシュメモリの全記憶領域に対して実行可能な速度でこのベリファイ処理を実行する。例えば半導体記憶装置100Dが2万個のフラッシュメモリを搭載している場合であって、5日以内に最低でも1度はこのベリファイ処理を実行するとした場合、プロセッサ115Dは、1日当たり4千個のブロックに対してこのベリファイ処理を確実に実行する。なおこのベリファイ処理と上位装置101からのアクセス要求とが競合する場合、プロセッサ115Dはベリファイ処理を優先して実行する。
まずプロセッサ115Dは、ベリファイ対象ブロック内の全ページをリードするとともに、リードした各ページのECC/CWごとの障害ビット数をRAM113に格納し、RAM113に格納したECC/CWごとの障害ビット数のうち、最大障害ビット数を取得する(S101)。
次いでプロセッサ115Dは、ステップS101で取得したベリファイ対象ブロック内で生じた最大障害ビット数が閾値よりも小さいか否かを判断する(S102)。なおここで用いる閾値は、ECC訂正可能ビット数よりも小さい値を用いることとし、半導体記憶装置100Dに要求される信頼性に応じて変更することとする。一般に、閾値を小さくすれば高い信頼性を確保することができ、閾値を大きくすれば信頼性は低下するもののリフレッシュ頻度を抑制することができる。
プロセッサ115Dは、上述のステップS102の判断で否定結果を得ると、リフレッシュが必要であると判断してリフレッシュを実行する。
これに対してプロセッサ115Dは、この判断で肯定結果を得ると、現時点でのリフレッシュは不要であると判断してステップS103に移行する。このように上位装置101への応答とは独立して定期的にベリファイを実行してリフレッシュの要否を判断することにより、ブロックの劣化度やリード頻度に応じてブロックごとに個別にリフレッシュを実行することができる。
プロセッサ115Dは、ベリファイ対象ブロックのブロック番号に1を加算して、次にベリファイを実行するブロックのブロック番号を取得する(S103)。
次いでプロセッサ115Dは、ステップS103で取得したブロック番号が半導体記憶装置100Dに搭載される全フラッシュメモリの最終ブロック番号以下であるか否かを判断する(S104)。
プロセッサ115Dは、この判断で肯定結果を得ると、ステップS101に移行して、ステップS103で取得したブロック番号のブロックをベリファイ対象ブロックとしてベリファイを実行する。
これに対してプロセッサ115Dは、ステップS104の判断で否定結果を得ると、半導体記憶装置100Dが搭載する全フラッシュメモリのブロックに対して少なくとも1度はベリファイを実行したものと判断し、先頭ブロックからベリファイを再度実行するため、ステップS103で1加算したブロック番号を0に戻して(S105)、ステップS101に移行する。プロセッサ115Dは、以上の処理を定期的に繰り返す。
(4−3)第4の実施の形態の効果
以上のように、本実施の形態によれば、半導体記憶装置100Dの動作中(起動中)に図23のベリファイ処理を繰り返し実行することにより、最大障害ビット数が一定値まで増加したブロックについては順次リフレッシュを実行することができる。
(5)第5の実施の形態
(5−1)半導体記憶装置の構成
図1において、100Eは全体として第5の実施の形態による半導体記憶装置100Eを示している。この半導体記憶装置100Eは、搭載するフラッシュメモリの全ブロックに対してベリファイを実行する点で第4の実施の形態と同様であり、ベリファイの実行に際しては障害ビット数の分布を取得し、取得した障害ビット数の分布に基づいてブロックごとのリフレッシュ期間を決定する点を除いて第4の実施の形態による半導体記憶装置100Dと同様に構成されている。
(5−2)ベリファイ処理
図24は、半導体記憶装置100Eのプロセッサ115Eにより実行されるベリファイ処理の処理手順を示す。プロセッサ115Eは、半導体記憶装置100Eの動作中(起動中)において定期的又は不定期に、この図24に示すベリファイ処理を開始する。
なおプロセッサ115Eは、半導体記憶装置100Eが搭載するフラッシュメモリの全記憶領域に対して実行可能な速度でこのベリファイ処理を実行する。この点については、第4の実施の形態と同様である。
まずプロセッサ115Eは、ベリファイ対象ブロック内の全ページをリードするとともに、リードした各ページのECC/CWごとの障害ビット数をRAM113に格納し、RAM113に格納したECC/CWごとの障害ビット数に基づいて、ベリファイ対象ブロック内の障害ビット数分布を取得する(S111)。
次いでプロセッサ115Eは、ステップS111で取得した障害ビット数分布とリフレッシュ要否判定用に予め用意した障害ビット数分布(以下、これを「リフレッシュ指標」と呼ぶ)との差を算出する(S112)。
ここで、リフレッシュ指標とは、上述のようにリフレッシュ要否判定用に予め用意した障害ビット数分布であって、例えばブロック内の障害ビット数が0個のECC/CW数は120個、障害ビット数が1個のECC/CW数は200個、…というように、ブロック内の障害ビット数とECC/CWの個数とを対応付けた障害ビット数分布である。上述のステップS111で取得した障害ビット数分布がこのリフレッシュ指標に類似している場合、具体的にはステップS111で取得した障害ビット数分布とリフレッシュ指標との差の絶対値が小さい場合、信頼性を維持することができないものとしてリフレッシュが必要と判断されることになる。なおここでの絶対値の算出方法については、図17の劣化度を決定する際の処理と同様であり、ベリファイ対象ブロックの障害ビット数分布1000と障害ビット数分布指標1001及び1002とを比較する処理と同様である。
プロセッサ115Eは、ステップS112で算出した障害ビット数分布とリフレッシュ指標との差が予め定められた閾値よりも小さいか否かを判断する(S113)。
プロセッサ115Eは、この判断で肯定結果を得ると、ベリファイ対象ブロック内の障害ビットはリフレッシュ指標に類似した分布で発生しているものと判断し、このベリファイ対象ブロックに対してリフレッシュを実行する。
これに対してプロセッサ115Eは、ステップS113の判断で否定結果を得ると、ベリファイ対象ブロック内の障害ビットはリフレッシュ指標と異なる分布で発生しているものと判断し、このベリファイ対象ブロックについては現時点でのリフレッシュは不要であると判断する。そしてプロセッサ115Eは、次のブロックをベリファイ対象ブロックとするべく、ステップS114に移行する。
ステップS114〜S116における処理は、図23のステップS103〜S105と同様であるため、ここでの説明は省略する。プロセッサ115Eは、以上の処理を定期的に繰り返す。
(5−3)第5の実施の形態の効果
以上のように、本実施の形態によれば、半導体記憶装置100Eの動作中(起動中)に図24のベリファイ処理を繰り返し実行することにより、リフレッシュ指標に類似する障害ビット数分布のブロックについては順次リフレッシュを実行することができる。
本発明は、フラッシュメモリを記憶媒体として搭載した種々の構成の半導体記憶装置に広く適用することができる。
100A〜100E……半導体記憶装置、110……フラッシュメモリコントローラ、115……プロセッサ、117……フラッシュメモリインターフェース、120〜128……フラッシュメモリ、201……ブロック、301……ページ、402……ECC付加コード、500……データ保持期間管理情報、600……信頼性維持期間表、700……リフレッシュ管理情報、800……ベリファイ管理情報、900……障害ビット数閾値表、1000……障害ビット数分布、1001〜1002……障害ビット数分布指標、1100……管理画面、1200……信頼ランク管理情報

Claims (15)

  1. 記憶領域を提供するフラッシュメモリと、前記フラッシュメモリに対するデータの読み書きを制御するメモリコントローラとを有する半導体記憶装置において、
    前記フラッシュメモリの記憶領域は、複数のブロックに分割されて管理され、
    前記メモリコントローラは、前記ブロックごとに、該ブロックの劣化度及びリード頻度を管理し、該管理する前記ブロックの劣化度及びリード頻度に基づいて、前記ブロックに記憶されているデータの信頼性維持期間を取得し、該取得した信頼性維持期間に基づいて、前記ブロックに記憶されているデータを他のブロックに記憶し直すリフレッシュを実行する
    ことを特徴とする半導体記憶装置。
  2. 前記メモリコントローラは、前記ブロックごとに該ブロックの劣化度及びリード頻度を管理するためのデータ保持期間管理情報を備えて構成され、前記データ保持期間管理情報に基づいて、前記信頼性維持期間を取得し、該取得した信頼性維持期間に基づいて、前記リフレッシュを実行する
    ことを特徴とする請求項1に記載の半導体記憶装置。
  3. 前記メモリコントローラは、前記ブロックの劣化度及びリード頻度の組み合わせにより前記信頼性維持期間が一意に定まる信頼性維持期間表又は前記ブロックの劣化度及びリード頻度を変数として代入することにより前記信頼性維持期間が一意に定まる数式を備えて構成され、前記信頼性維持期間表又は前記数式に基づいて、前記信頼性維持期間を取得する
    ことを特徴とする請求項1に記載の半導体記憶装置。
  4. 前記メモリコントローラは、前記ブロックごとに前記リフレッシュを実行する日時を管理するためのリフレッシュ管理情報を備えて構成され、前記リフレッシュ管理情報に基づいて、前記リフレッシュを実行する
    ことを特徴とする請求項1に記載の半導体記憶装置。
  5. 前記メモリコントローラは、前記フラッシュメモリにデータを書き込むライト処理において、ライト後のライト対象ブロックの劣化度及びリード頻度に基づいて、該ライト対象ブロックに記憶されたデータの信頼性維持期間を取得し、該取得した信頼性維持期間に基づいて、該ライト対象ブロックに対して前記リフレッシュを実行する
    ことを特徴とする請求項1に記載の半導体記憶装置。
  6. 前記メモリコントローラは、前記フラッシュメモリからデータを読み込むリード処理において、リード後のリード対象ブロックの劣化度及びリード頻度に基づいて、該リード対象ブロックに記憶されているデータの信頼性維持期間を取得し、該取得した信頼性維持期間に基づいて、該リード対象ブロックに対して前記リフレッシュを実行する
    ことを特徴とする請求項1に記載の半導体記憶装置。
  7. 前記メモリコントローラは、前記リフレッシュを実行するリフレッシュ処理において、上位装置からのアクセス要求があった場合には該アクセス要求に対する処理を優先し、前記リフレッシュの実行を一時的に停止する
    ことを特徴とする請求項1に記載の半導体記憶装置。
  8. 前記メモリコントローラは、前記リフレッシュを実行するまでの期間内に、前記ブロックごとに該ブロックをリードしてブロック内で生じた障害ビット数の発生状況を取得するベリファイを実行し、該ベリファイを実行して取得した障害ビット数に基づいて、ベリファイ対象ブロックの新たな劣化度を決定し、該決定した新たな劣化度に基づいて、前記ベリファイ対象ブロックに記憶されたデータについて新たな信頼性維持期間を取得し、該取得した新たな信頼性維持期間に基づいて、該ベリファイ対象ブロックに対して前記リフレッシュを実行する
    ことを特徴とする請求項1に記載の半導体記憶装置。
  9. 前記メモリコントローラは、前記ブロックの劣化度、リード頻度及びデータ記憶後の経過時間の組み合わせにより障害ビット数閾値が一意に定まる障害ビット数閾値表又は前記ブロックの劣化度、リード頻度及びデータ記憶後の経過時間を変数として代入することにより前記障害ビット数閾値が一意に定まる数式を備えて構成され、前記障害ビット数閾値表又は前記数式に基づいて、前記ベリファイ対象ブロックの障害ビット数閾値を取得し、該取得した障害ビット数閾値と前記ベリファイを実行して取得した障害ビット数とに基づいて、前記ベリファイ対象ブロックに記憶されたデータについて新たな劣化度を決定するか否かを判断する
    ことを特徴とする請求項8に記載の半導体記憶装置。
  10. 前記メモリコントローラは、前記ブロックの劣化度、リード頻度及びデータ記憶後の経過時間の組み合わせごとに障害ビット数分布を示す障害ビット数分布指標又は分布関数の母数を備えて構成され、前記障害ビット数分布指標又は前記母数と前記ベリファイを実行して取得した障害ビット数とに基づいて、前記ベリファイ対象ブロックに記憶されたデータについて新たな劣化度を決定する
    ことを特徴とする請求項8に記載の半導体記憶装置。
  11. 前記メモリコントローラは、前記ブロックの劣化度、リード頻度及びデータ記憶後の経過時間の組み合わせごとに障害ビット数分布を示す障害ビット数分布指標を備えて構成され、前記障害ビット数分布指標と前記ベリファイを実行して取得した障害ビット数とを比較して最も類似する障害ビット数分布指標の劣化度を前記ベリファイ対象ブロックの新たな劣化度として決定する
    ことを特徴とする請求項8に記載の半導体記憶装置。
  12. 前記メモリコントローラは、前記ブロックにデータが記憶された後の経過時間及び前記信頼性維持期間に基づいて算出されるブロックの信頼性ランクごとに前記ブロックを管理し、前記信頼性ランクごとに許容する許容ブロック数を超過したブロックに対して前記リフレッシュを実行する
    ことを特徴とする請求項1に記載の半導体記憶装置。
  13. 記憶領域を提供するフラッシュメモリと、前記フラッシュメモリに対するデータの読み書きを制御するメモリコントローラとを有する半導体記憶装置において、
    前記フラッシュメモリの記憶領域は、複数のブロックに分割されて管理され、
    前記メモリコントローラは、一定期間内に、前記ブロックごとに該ブロック内で生じた障害ビット数の発生状況を取得するためのベリファイを実行し、該ベリファイを実行して取得した障害ビット数が予め定められた閾値よりも大きい場合、ベリファイ対象ブロックに記憶されているデータを他のブロックに記憶し直すリフレッシュを実行する
    ことを特徴とする半導体記憶装置。
  14. 記憶領域を提供するフラッシュメモリと、前記フラッシュメモリに対するデータの読み書きを制御するメモリコントローラとを有する半導体記憶装置において、
    前記フラッシュメモリの記憶領域は、複数のブロックに分割されて構成され、
    前記メモリコントローラは、一定期間内に、前記ブロックごとに該ブロック内で生じた障害ビット数の発生状況を取得するためのベリファイを実行し、該ベリファイを実行して取得した障害ビット数と予め定められた障害ビット数分布指標との差が予め定められた閾値よりも大きい場合、ベリファイ対象ブロックに記憶されているデータを他のブロックに記憶し直すリフレッシュを実行する
    ことを特徴とする半導体記憶装置。
  15. 記憶領域を提供するフラッシュメモリと、前記フラッシュメモリに対するデータの読み書きを制御するメモリコントローラとを有する半導体記憶装置の制御方法において、
    前記フラッシュメモリの記憶領域は、複数のブロックに分割されて管理され、
    前記メモリコントローラが、前記複数のブロックごとに該ブロックの劣化度及びリード頻度を管理する第1のステップと、
    前記メモリコントローラが、前記管理する前記ブロックの劣化度及びリード頻度に基づいて、前記ブロックに記憶されているデータの信頼性維持期間を取得する第2のステップと、
    前記メモリコントローラが、前記取得した信頼性維持期間に基づいて、前記ブロックに記憶されているデータを他のブロックに記憶し直すリフレッシュを実行する第3のステップと、
    を備えることを特徴とする半導体記憶装置の制御方法。
JP2013548944A 2011-04-28 2011-04-28 半導体記憶装置及び半導体記憶装置の制御方法 Expired - Fee Related JP5629391B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/002507 WO2012147136A1 (en) 2011-04-28 2011-04-28 Semiconductor storage apparatus and method for controlling semiconductor storage apparatus

Publications (2)

Publication Number Publication Date
JP2014505941A true JP2014505941A (ja) 2014-03-06
JP5629391B2 JP5629391B2 (ja) 2014-11-19

Family

ID=44276352

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013548944A Expired - Fee Related JP5629391B2 (ja) 2011-04-28 2011-04-28 半導体記憶装置及び半導体記憶装置の制御方法

Country Status (5)

Country Link
US (1) US9129699B2 (ja)
EP (1) EP2659489A1 (ja)
JP (1) JP5629391B2 (ja)
CN (1) CN103392208A (ja)
WO (1) WO2012147136A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10713161B2 (en) 2015-12-14 2020-07-14 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US10831395B2 (en) 2018-03-23 2020-11-10 Toshiba Memory Corporation Memory system, control method, and control device

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8650353B2 (en) * 2011-07-01 2014-02-11 Intel Corporation Apparatus, system, and method for refreshing non-volatile memory
JP5674634B2 (ja) 2011-12-28 2015-02-25 株式会社東芝 コントローラ、記憶装置およびプログラム
US9236110B2 (en) 2012-06-30 2016-01-12 Intel Corporation Row hammer refresh command
US9627085B2 (en) * 2012-11-29 2017-04-18 Silicon Motion Inc. Refresh method for flash memory and related memory controller thereof
US9384821B2 (en) 2012-11-30 2016-07-05 Intel Corporation Row hammer monitoring based on stored row hammer threshold value
US9032141B2 (en) * 2012-11-30 2015-05-12 Intel Corporation Row hammer monitoring based on stored row hammer threshold value
US9141534B2 (en) * 2012-12-14 2015-09-22 Sandisk Technologies Inc. Tracking read accesses to regions of non-volatile memory
JP6133591B2 (ja) * 2012-12-21 2017-05-24 株式会社メガチップス 半導体記憶装置及びコンピュータシステム
US9251885B2 (en) * 2012-12-28 2016-02-02 Intel Corporation Throttling support for row-hammer counters
US9117504B2 (en) * 2013-07-03 2015-08-25 Micron Technology, Inc. Volume select for affecting a state of a non-selected memory volume
JP5981906B2 (ja) * 2013-12-17 2016-08-31 京セラドキュメントソリューションズ株式会社 画像形成装置
KR101609980B1 (ko) * 2014-03-14 2016-04-06 단국대학교 산학협력단 메모리 기반 저장장치의 주기적 갱신 장치 및 방법
US9804781B2 (en) 2014-03-26 2017-10-31 Seagate Technology Llc Storage media performance management
DE102014208609A1 (de) * 2014-05-08 2015-11-26 Robert Bosch Gmbh Refresh eines Speicherbereichs einer nichtflüchtigen Speichereinheit
US10229055B2 (en) * 2014-10-29 2019-03-12 Seagate Technology Llc Adaptive spanning control
KR102250423B1 (ko) 2015-01-13 2021-05-12 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
KR102277521B1 (ko) 2015-01-23 2021-07-16 삼성전자주식회사 저장 장치 및 그것의 리드 리클레임 및 읽기 방법
US9798475B2 (en) 2015-03-11 2017-10-24 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory
US10193579B2 (en) 2015-09-08 2019-01-29 Toshiba Memory Corporation Storage control device, storage system, and storage control method
JP6679412B2 (ja) * 2016-05-19 2020-04-15 キヤノン株式会社 ストレージ制御装置、情報処理方法及びプログラム
US10664119B2 (en) * 2017-01-04 2020-05-26 International Business Machines Corporation Document content pool
US10176860B1 (en) 2017-08-29 2019-01-08 Micron Technology, Inc. Refresh in non-volatile memory
US10324653B1 (en) 2017-12-01 2019-06-18 Red Hat Israel, Ltd. Fast evacuation of a cloned disk to a storage device
JP6837419B2 (ja) * 2017-12-05 2021-03-03 ルネサスエレクトロニクス株式会社 半導体記憶装置、及び半導体記憶装置のリフレッシュ方法
US10446243B2 (en) * 2017-12-18 2019-10-15 Macronix International Co., Ltd. Storage device and associated control method to determine target memory blocks for probe operation
JP2019168853A (ja) * 2018-03-22 2019-10-03 東芝メモリ株式会社 メモリシステム、その制御方法及びプログラム
US10509747B2 (en) * 2018-05-17 2019-12-17 Seagate Technology Llc Memory access operation suspend/resume
KR102567111B1 (ko) 2018-08-02 2023-08-14 삼성전자주식회사 스토리지 디바이스 및 스토리지 디바이스의 동작 방법
KR102599117B1 (ko) 2018-11-14 2023-11-06 삼성전자주식회사 블록들의 온 셀 카운트들을 모니터링하고 저장하는 스토리지 장치 및 그것의 동작 방법
CN110570892A (zh) * 2019-07-31 2019-12-13 联芸科技(杭州)有限公司 控制存储器刷新的方法、装置以及控制器
CN112506420A (zh) * 2019-09-16 2021-03-16 伊姆西Ip控股有限责任公司 在存储系统中管理擦洗操作的方法、设备和产品
KR20220039277A (ko) * 2020-09-22 2022-03-29 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11625177B2 (en) * 2020-11-20 2023-04-11 Micron Technology, Inc. Combination scan management for block families of a memory device
JP2023088017A (ja) 2021-12-14 2023-06-26 キオクシア株式会社 メモリシステムおよび制御方法
US11941276B2 (en) * 2022-07-28 2024-03-26 Micron Technology, Inc. Incomplete superblock management for memory systems

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008139927A (ja) * 2006-11-30 2008-06-19 Toshiba Corp メモリシステム
JP2008181380A (ja) * 2007-01-25 2008-08-07 Toshiba Corp メモリシステムおよびその制御方法
JP2008287404A (ja) * 2007-05-16 2008-11-27 Hitachi Ltd 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法
JP2009129070A (ja) * 2007-11-21 2009-06-11 Hitachi Ltd フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム
JP2009205578A (ja) * 2008-02-29 2009-09-10 Toshiba Corp 半導体記憶装置
JP2009223876A (ja) * 2007-12-27 2009-10-01 Hagiwara Sys-Com:Kk メモリの管理方法
US20090307412A1 (en) * 2008-06-06 2009-12-10 Phison Electronics Corp. Memory management method for non-volatile memory and controller using the same
JP2010086402A (ja) * 2008-10-01 2010-04-15 Hagiwara Sys-Com:Kk メモリの管理方法及びフラッシュメモリデバイス
JP2010160816A (ja) * 2010-03-29 2010-07-22 Toshiba Corp 半導体記憶装置の制御方法
JP2011059907A (ja) * 2009-09-09 2011-03-24 Nec Corp 端末装置及びそれに用いる不揮発メモリ管理方法並びにそのプログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4256198B2 (ja) 2003-04-22 2009-04-22 株式会社東芝 データ記憶システム
US7325090B2 (en) 2004-04-29 2008-01-29 Sandisk Il Ltd. Refreshing data stored in a flash memory
JP5216244B2 (ja) * 2007-05-31 2013-06-19 株式会社東芝 データリフレッシュ装置、及びデータリフレッシュ方法
JP4675985B2 (ja) 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8261136B2 (en) * 2009-06-29 2012-09-04 Sandisk Technologies Inc. Method and device for selectively refreshing a region of a memory of a data storage device

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008139927A (ja) * 2006-11-30 2008-06-19 Toshiba Corp メモリシステム
JP2008181380A (ja) * 2007-01-25 2008-08-07 Toshiba Corp メモリシステムおよびその制御方法
JP2008287404A (ja) * 2007-05-16 2008-11-27 Hitachi Ltd 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法
JP2009129070A (ja) * 2007-11-21 2009-06-11 Hitachi Ltd フラッシュメモリ記憶装置の制御方法、その方法を用いたフラッシュメモリ記憶装置及びストレージシステム
JP2009223876A (ja) * 2007-12-27 2009-10-01 Hagiwara Sys-Com:Kk メモリの管理方法
JP2009205578A (ja) * 2008-02-29 2009-09-10 Toshiba Corp 半導体記憶装置
US20090307412A1 (en) * 2008-06-06 2009-12-10 Phison Electronics Corp. Memory management method for non-volatile memory and controller using the same
JP2010086402A (ja) * 2008-10-01 2010-04-15 Hagiwara Sys-Com:Kk メモリの管理方法及びフラッシュメモリデバイス
JP2011059907A (ja) * 2009-09-09 2011-03-24 Nec Corp 端末装置及びそれに用いる不揮発メモリ管理方法並びにそのプログラム
JP2010160816A (ja) * 2010-03-29 2010-07-22 Toshiba Corp 半導体記憶装置の制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10713161B2 (en) 2015-12-14 2020-07-14 Toshiba Memory Corporation Memory system and method for controlling nonvolatile memory
US10831395B2 (en) 2018-03-23 2020-11-10 Toshiba Memory Corporation Memory system, control method, and control device

Also Published As

Publication number Publication date
EP2659489A1 (en) 2013-11-06
WO2012147136A1 (en) 2012-11-01
CN103392208A (zh) 2013-11-13
US20120278533A1 (en) 2012-11-01
JP5629391B2 (ja) 2014-11-19
US9129699B2 (en) 2015-09-08

Similar Documents

Publication Publication Date Title
JP5629391B2 (ja) 半導体記憶装置及び半導体記憶装置の制御方法
US9946472B2 (en) Semiconductor storage device having nonvolatile semiconductor memory
US9063844B2 (en) Non-volatile memory management system with time measure mechanism and method of operation thereof
US11704239B2 (en) Garbage collection method for storage medium, storage medium, and program product
KR101217416B1 (ko) 멀티레벨 데이터 저장 셀용 관리 동작
JP5697796B2 (ja) 電気的に書き換え可能な不揮発性半導体メモリを有する半導体記憶装置
TWI428739B (zh) 記憶卡之壽命終點恢復及尺寸重整
US20100199020A1 (en) Non-volatile memory subsystem and a memory controller therefor
US8627181B1 (en) Storage apparatus, storage controller, and method for managing locations of error correcting code blocks in array
CN105556610A (zh) 具有动态读取阈值机制的数据贮存系统以及操作其的方法
US11016679B2 (en) Balanced die set execution in a data storage system
US8200892B2 (en) Memory controller, memory system with memory controller, and method of controlling flash memory
WO2014147735A1 (ja) 記憶装置および記憶装置制御方法
US10586601B2 (en) Semiconductor memory device and read control method thereof
JP6102515B2 (ja) 情報処理装置、制御回路、制御プログラム、および制御方法
US20120026795A1 (en) Electronic Apparatus and Data Reading Method
US11923026B2 (en) Data storage system with intelligent error management
JP2021177401A (ja) 情報処理装置
JP2015111453A (ja) フラッシュメモリモジュール

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140603

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140729

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: 20140909

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141003

R150 Certificate of patent or registration of utility model

Ref document number: 5629391

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees