JP2011164994A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2011164994A JP2011164994A JP2010027944A JP2010027944A JP2011164994A JP 2011164994 A JP2011164994 A JP 2011164994A JP 2010027944 A JP2010027944 A JP 2010027944A JP 2010027944 A JP2010027944 A JP 2010027944A JP 2011164994 A JP2011164994 A JP 2011164994A
- Authority
- JP
- Japan
- Prior art keywords
- loop count
- life
- memory
- ssd
- semiconductor memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1084—Degraded mode, e.g. caused by single or multiple storage removals or disk failures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3058—Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/324—Display of status information
- G06F11/327—Alarm or error message display
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/50—Marginal testing, e.g. race, voltage or current testing
- G11C29/50004—Marginal testing, e.g. race, voltage or current testing of threshold voltage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/344—Arrangements for verifying correct erasure or for detecting overerased cells
- G11C16/3445—Circuits or methods to verify correct erasure of nonvolatile memory cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/50—Marginal testing, e.g. race, voltage or current testing
- G11C2029/5004—Voltage
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
Abstract
【課題】複数のブロックで構成された不揮発性半導体メモリ全体の劣化状態を正確に検出することができるメモリシステムを提供すること。
【解決手段】メモリシステムにおいて、データ消去の単位であるブロックを複数個有する不揮発性半導体メモリであるNANDメモリ20と、NANDメモリ20のデータ書き込みに要するNANDメモリ20への印加電圧のループ回数を書き込み時ループ回数としてモニタする書き込み時ループ回数モニタ部13と、書き込み時ループ回数をブロック単位に管理するための管理テーブルと、管理テーブルに基づいてNANDメモリ20の劣化状態を判定する寿命管理部14と、を備える。
【選択図】図5
【解決手段】メモリシステムにおいて、データ消去の単位であるブロックを複数個有する不揮発性半導体メモリであるNANDメモリ20と、NANDメモリ20のデータ書き込みに要するNANDメモリ20への印加電圧のループ回数を書き込み時ループ回数としてモニタする書き込み時ループ回数モニタ部13と、書き込み時ループ回数をブロック単位に管理するための管理テーブルと、管理テーブルに基づいてNANDメモリ20の劣化状態を判定する寿命管理部14と、を備える。
【選択図】図5
Description
本発明は、不揮発性半導体メモリを備えたメモリシステムに関する。
NAND型フラッシュメモリは、書き込みを行う前に消去処理が必要な半導体メモリである。NAND型フラッシュメモリのデータの書き込み/消去は、基板−制御ゲート間に高電圧を印加することにより、浮遊ゲートに電子を注入/放出させる。これを多数回行うと浮遊ゲート周りのゲート酸化膜が劣化し、NAND型フラッシュメモリの寿命と密接に関連する書き込み/消去特性に悪影響を及ぼすことが知られている。
このため、NAND型フラッシュメモリの寿命を正確に把握しておく必要がある。従来、特許文献1記載の記憶装置は、NAND型フラッシュメモリの消去回数を基にNAND型フラッシュメモリの寿命を算出していた。この方法で算出されたメモリセルの寿命は、実際のメモリセルにおける電子レベルでのストレス寿命とはいえなかった。このため、実際のメモリセルの寿命と算出した寿命との間にバラツキがあり、必ずしも正確に寿命を算出できていなかった。
また、特許文献2に記載の記憶装置は、コントロール部がメモリ部に指令信号を出力して、空き領域を有する所望の消去ブロックにパルス電圧を印加させ、メモリ部は、パルス電圧を印加するごとに消去ブロックの消去が完了したか否かを検出している。そして、ブロックが未消去の場合、コントロール部は、再び所望の消去ブロックにパルス電圧を印加させる処理を繰り返し、印加させたパルス電圧のパルス数(繰り返し回数)に基づいて消去ブロックの特性の劣化状態を判定している。
また、特許文献3に記載の記憶装置は、MPUがタイマで各セクタ単位の消去時間を測定し、その中で1ブロックでも計測された消去時間が規定値を超えた場合に警告フラグをオンにすることで、次回の書き込みを禁止する。すなわち、フラッシュメモリ(例えば、NAND型フラッシュメモリ)のデータを消去するのに要した時間を測定し、この測定結果に基づいて、フラッシュメモリの書換え寿命を判定する。
しかしながら、上記特許文献1乃至特許文献3に記載の方法では、複数のブロックで構成されたNAND型フラッシュメモリを含むメモリシステム全体としての寿命(劣化状態)を正確に検出することはできなかった。
本発明は、複数のブロックで構成された不揮発性半導体メモリ全体の劣化状態を正確に検出することができるメモリシステムを提供することを目的とする。
本願発明の一態様によれば、データ消去の単位であるブロックを複数個有する不揮発性半導体メモリと、前記不揮発性半導体メモリのデータ書き込みに要する前記不揮発性半導体メモリへの印加電圧のループ回数を書き込み時ループ回数としてモニタする書き込み時ループ回数モニタ部と、前記書き込み時ループ回数を前記ブロック単位に管理するための管理テーブルと、前記管理テーブルに基づいて前記不揮発性半導体メモリの劣化状態を判定する寿命管理部と、を備えることを特徴とするメモリシステムが提供される。
また、本願発明の一態様によれば、データ消去の単位であるブロックを複数個有する不揮発性半導体メモリと、前記不揮発性半導体メモリのデータ消去に要する前記不揮発性半導体メモリへの印加電圧のループ回数を消去時ループ回数としてモニタする消去時ループ回数モニタ部と、前記消去時ループ回数を前記ブロック単位に管理するための管理テーブルと、前記管理テーブルに基づいて前記不揮発性半導体メモリの劣化状態を判定する寿命管理部と、を備えることを特徴とするメモリシステムが提供される。
本願発明の一態様によれば、データ消去の単位であるブロックを複数個有する不揮発性半導体メモリと、前記不揮発性半導体メモリのデータ書き込みに要する前記不揮発性半導体メモリへの印加電圧のループ回数を書き込み時ループ回数としてモニタする書き込み時ループ回数モニタ部と、前記書き込み時ループ回数を前記ブロック単位に管理するための管理テーブルと、外部装置から前記管理テーブルの読み出し要求があった場合に、前記管理テーブルを前記外部装置に送信する管理テーブル送信部と、を備えることを特徴とするメモリシステムが提供される。
本願発明の一態様によれば、データ消去の単位であるブロックを複数個有する不揮発性半導体メモリと、前記不揮発性半導体メモリのデータ消去に要する前記不揮発性半導体メモリへの印加電圧のループ回数を消去時ループ回数としてモニタする消去時ループ回数モニタ部と、前記消去時ループ回数を前記ブロック単位に管理するための管理テーブルと、外部装置から前記管理テーブルの読み出し要求があった場合に、前記管理テーブルを前記外部装置に送信する管理テーブル送信部と、を備えることを特徴とするメモリシステムが提供される。
本発明によれば、複数のブロックで構成された不揮発性半導体メモリ全体の劣化状態を正確に検出することができるという効果を奏する。
以下に添付図面を参照して、本発明の実施の形態に係るメモリシステムを詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
(第1の実施の形態)
本実施の形態では、不揮発性半導体メモリの一例であるNAND型フラッシュメモリを有したSSD((Solid State Drive))の寿命(劣化状態)を判定するため、NAND型フラッシュメモリのメモリセルへの書込みや消去の際の印加電圧のループ回数を検知する。ここでのループ回数は、NAND型フラッシュメモリへの書込みや消去の際に、NAND型フラッシュメモリへ印加される電圧のパルス数(電圧印加回数)である。NAND型フラッシュメモリへは、書込みや消去の際に、所定の電圧が、電圧を少しずつ大きくしながら複数回(ループ回数分)に渡って印加される。
本実施の形態では、不揮発性半導体メモリの一例であるNAND型フラッシュメモリを有したSSD((Solid State Drive))の寿命(劣化状態)を判定するため、NAND型フラッシュメモリのメモリセルへの書込みや消去の際の印加電圧のループ回数を検知する。ここでのループ回数は、NAND型フラッシュメモリへの書込みや消去の際に、NAND型フラッシュメモリへ印加される電圧のパルス数(電圧印加回数)である。NAND型フラッシュメモリへは、書込みや消去の際に、所定の電圧が、電圧を少しずつ大きくしながら複数回(ループ回数分)に渡って印加される。
印加電圧のループ回数を検知した後、ループ回数と予め設定しておいた設定値(所定の閾値)とを比較し、この比較結果に基づいて、NAND型フラッシュメモリ内の各ブロックの劣化状態を判定する。さらに、劣化状態の判定結果を用いて、SSD(複数の不揮発性半導体メモリを含むメモリシステム全体)の劣化状態を判定する。なお、以下の説明では、NAND型フラッシュメモリを、NANDメモリと略する。
まず、図1〜図4を参照して、SSDを備えたメモリシステムの構成やNANDメモリの構成などについて説明し、その後、図5〜図13を参照して、本実施の形態の特徴の1つであるSSDの構成や動作などについて説明する。
図1は、メモリシステムとしてのSSD100Aの構成例を示すブロック図である。SSD100Aは、ホスト装置(以下、ホストと略す)1と接続するためのホスト接続インタフェース(後述のホストI/F40)を備えている。図1では、ホストI/F40がATAインタフェース(ATA I/F)2などのメモリ接続インタフェースである場合を示している。SSD100Aは、ATA I/F2(ホストI/F40)を介してパーソナルコンピュータあるいはCPUコアなどのホスト1と接続され、ホスト1の外部メモリとして機能する。また、SSD100Aは、RS232Cインタフェース(RS232C I/F)などの通信インタフェース3を介して、デバッグ用/製造検査用機器200との間でデータを送受信することができる。
SSD100Aは、不揮発性半導体メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリと略す)20と、コントローラとしてのドライブ制御回路4と、揮発性半導体メモリとしてのDRAM30と、電源回路5と、状態表示用のLED6と、ドライブ内部の温度を検出する温度センサ7と、フューズ8とを備えている。
電源回路5は、ホスト1側の電源回路から供給される外部直流電源から複数の異なる内部直流電源電圧を生成し、これら内部直流電源電圧をSSD100A内の各回路に供給する。また、電源回路5は、外部電源の立ち上がりを検知し、パワーオンリセット信号を生成して、ドライブ制御回路4に供給する。
フューズ8は、ホスト1側の電源回路とSSD100A内部の電源回路5との間に設けられている。外部電源回路から過電流が供給された場合、フューズ8が切断され、内部回路の誤動作を防止する。
NANDメモリ20は、例えば4並列動作を行う4つの並列動作要素20a〜20dを有し、4つの並列動作要素20a〜20dは、4つのチャネル(ch0〜ch3)によってドライブ制御回路4に接続されている。各並列動作要素20a〜20dは、バンクインターリーブが可能な複数のバンクによって構成されている。すなわち、各並列動作要素は、例えば4バンク(Bank0〜Bank3)によって構成されており、各バンクは、複数のNANDメモリチップ、例えば2つのメモリチップ(Chip0、Chip1)により構成されている。
各メモリチップは、例えば、それぞれ複数の物理ブロックを含むプレーン0、プレーン1の2つの領域(District)に分割されている。プレーン0およびプレーン1は、互いに独立した周辺回路(例えば、ロウデコーダ、カラムデコーダ、ページバッファ、データキャッシュ等)を備えており、倍速モードを使用することにより、同時に消去/書き込み/読み出しを行うことが可能である。
このように、NANDメモリ20の各NANDメモリチップは、複数のチャネルによる並列動作、複数のバンクによるバンクインターリーブ動作、同一バンク内の複数チップのインターリーブ動作、複数のプレーンを用いた倍速モードによる並列動作が可能である。なお、各メモリチップは、2つ以上の複数のプレーンに分割された構成であってもよいし、あるいは、全く分割されていなくてもよい。
DRAM30は、ホスト1とNANDメモリ20との間で、データ転送用キャッシュ及び作業領域用メモリなどとして機能する。DRAM30の作業領域用メモリに記憶される内容は、例えばNANDメモリ20に記憶されている各種管理テーブルが、起動時などに展開されたマスターテーブル(スナップショット)、あるいは管理テーブルの変更差分であるログ情報などがある。
尚、DRAM30の代わりに、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)などの不揮発性ランダムアクセスメモリを使用することも可能である。不揮発性ランダムアクセスメモリを利用する場合、電源切断時に各種管理テーブルなどをNANDメモリ20に退避させる動作の一部又は全部を省略することができる。
ドライブ制御回路4は、ホスト1とNANDメモリ20との間でDRAM30を介してデータ転送制御を行うとともに、SSD100A内の各構成要素を制御する。また、ドライブ制御回路4は、状態表示用LED6にステータス表示用信号を供給するとともに、電源回路5からのパワーオンリセット信号を受けて、リセット信号およびクロック信号をドライブ制御回路4内及びSSD100A内の各部に供給する機能も有している。
各NANDメモリチップは、データ消去の単位である物理ブロックを複数配列して構成されている。
図2(a)は、NANDメモリチップに含まれる1個の物理ブロックの構成例を示す回路図である。各物理ブロックは、X方向に沿って順に配列された(p+1)個のNANDストリングを備えている(pは、0以上の整数)。各NANDストリングに含まれる選択トランジスタST1は、ドレインがビット線BL0〜BLpに接続され、ゲートが選択ゲート線SGDに共通接続されている。また、選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートが選択ゲート線SGSに共通接続されている。
各メモリセルトランジスタ(メモリセルとも言う)MCTは、半導体基板上に形成された積層ゲート構造を備えたMOSFET(Metal Oxide Semiconductor Field Effect Transistor)により構成されている。積層ゲート構造は、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層(浮遊ゲート電極)、及び電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。メモリセルトランジスタMCTは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記憶する。メモリセルトランジスタMCTは、1ビットを記憶するように構成されていてもよいし、多値(2ビット以上のデータ)を記憶するように構成されていてもよい。
また、メモリセルトランジスタMCTは、浮遊ゲート電極を有する構造に限らず、MONOS(Metal-Oxide-Nitride-Oxide-Silicon)型など、電荷蓄積層としての窒化膜界面に電子をトラップさせることにより閾値電圧が調整可能な構造であってもよい。MONOS構造のメモリセルトランジスタMCTについても同様に、1ビットを記憶するように構成されていてもよいし、多値(2ビット以上のデータ)を記憶するように構成されていてもよい。
各NANDストリングにおいて、(q+1)個のメモリセルトランジスタMCTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。すなわち、複数のメモリセルトランジスタMCTは、隣接するもの同士で拡散領域(ソース領域若しくはドレイン領域)を共有するような形でY方向に直列接続される。
各NANDストリングにおいて、最もドレイン側に位置するメモリセルトランジスタMCTから順に、制御ゲート電極がワード線WL0〜WLqにそれぞれ接続されている。従って、ワード線WL0に接続されたメモリセルトランジスタMCTのドレインは選択トランジスタST1のソースに接続され、ワード線WLqに接続されたメモリセルトランジスタMCTのソースは選択トランジスタST2のドレインに接続されている。
ワード線WL0〜WLqは、物理ブロック内のNANDストリング間で、メモリセルトランジスタMCTの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルトランジスタMCTの制御ゲート電極は、同一のワード線WLに接続される。この同一のワード線WLに接続される(p+1)個のメモリセルトランジスタMCTは1ページ(物理ページ)として取り扱われ、この物理ページごとにデータの書き込みおよびデータの読み出しが行われる。
また、ビット線BL0〜BLpは、ブロック間で、選択トランジスタST1のドレインを共通に接続している。つまり、複数のブロック内において同一列にあるNANDストリングは、同一のビット線BLに接続される。
図2(b)は、例えば、1個のメモリセルトランジスタMCTに2ビットの記憶を行う4値データ記憶方式での閾値分布を示す模式図である。4値データ記憶方式は、上位ページデータ“x”と下位ページデータ“y”で定義される4値データ“xy”の何れか1つをメモリセルトランジスタMCTに保持可能である。
4値データ“xy”は、メモリセルトランジスタMCTの閾値電圧の順に、例えば、データ“11”、“01”、“00”、“10”が割り当てられる。データ“11”は、メモリセルトランジスタMCTの閾値電圧が例えば負とされた消去状態である。尚、データの割り当て規則はこれに限らない。また、1個のメモリセルトランジスタMCTに3ビット以上の記憶を行う構成であってもよい。
下位ページの書き込み動作において、データ“11”(消去状態)のメモリセルトランジスタMCTに対して選択的に、下位ビットデータ“y”を書き込むことによって、データ“10”が書き込まれる。上位ページの書き込み前のデータ“10”の閾値分布は、上位ページ書き込み後のデータ“01”とデータ“00”の閾値分布の中間程度に位置しており、上位ページの書き込み後の閾値分布よりブロードであってもよい。上位ページの書き込み動作において、データ“11”のメモリセルと、データ“10”のメモリセルに対して、それぞれ選択的に上位ビットデータ“x”が書き込まれることにより、データ“01”及びデータ“00”が書き込まれる。擬似SLCモードは、下位ページのみを使用して書き込みを行う。下位ページの書き込みは、上位ページの書き込みに比べて高速である。
図3は、ドライブ制御回路4のハードウェア的な内部構成例を示すブロック図である。ドライブ制御回路4は、データアクセス用バス101、第1の回路制御用バス102、及び第2の回路制御用バス103を備えている。第1の回路制御用バス102には、ドライブ制御回路4全体を制御するプロセッサ104が接続されている。第1の回路制御用バス102には、ブートROM105がROMコントローラ106を介して接続されている。ブートROM105には、NANDメモリ20に記憶された各管理プログラム(FW:ファームウエア)をブートするブート用プログラムが格納されている。
また、第1の回路制御用バス102には、クロックコントローラ107が接続されている。このクロックコントローラ10A7は、図1に示した電源回路5からのパワーオンリセット信号を受けて、リセット信号およびクロック信号を各部に供給する。
第2の回路制御用バス103は、第1の回路制御用バス102に接続されている。第2の回路制御用バス103には、図1に示した温度センサ7からのデータを受けるためのI2C回路108、状態表示用LED6にステータス表示用信号を供給するパラレルIO(PIO)回路109、RS232C I/F3を制御するシリアルIO(SIO)回路110が接続されている。
ATAインタフェースコントローラ(ATAコントローラ)111、第1のECC(Error Checking and Correction)回路112、NAND用のコントローラであるコントローラ10A、及びDRAMコントローラ114は、データアクセス用バス101と第1の回路制御用バス102との両方に接続されている。ATAコントローラ111は、ATAインタフェース2を介してホスト1との間でデータを送受信する。データアクセス用バス101には、データ作業領域およびファームウェア展開領域として使用されるSRAM115がSRAMコントローラ116を介して接続されている。NANDメモリ20に記憶されているファームウェアは起動時、ブートROM105に記憶されたブート用プログラムによってSRAM115に転送される。
コントローラ10Aは、NAND I/F117、第2のECC回路118、及びDMA転送制御用DMAコントローラ119を備えている。NAND I/F117は、NANDメモリ20とのインタフェース処理を行う。DMA転送制御用DMAコントローラ119は、NANDメモリ20とDRAM30間のアクセス制御を行う。第2のECC回路118は第2の訂正符号のエンコードを行い、また、第1の誤り訂正符合のエンコード及びデコードを行う。第1のECC回路112は、第2の誤り訂正符号のデコードを行う。第1の誤り訂正符号、第2の誤り訂正符号は、例えば、ハミング符号、BCH(Bose Chaudhuri Hocqenghem)符号、RS(Reed Solomon)符号、或いはLDPC(Low Density Parity Check)符号等であり、第2の誤り訂正符号の訂正能力は、第1の誤り訂正符号の訂正能力よりも高いとする。
図1に示したように、NANDメモリ20において、4つの並列動作要素20a〜20dは各複数ビットの4つのチャネルを介して、ドライブ制御回路4内部のNANDコントローラ112に並列接続されており、4つの並列動作要素20a〜20dを並列動作させることが可能である。また、各チャネルのNANDメモリ20は、バンクインターリーブが可能な4つのバンクに分割されており、各メモリチップのプレーン0およびプレーン1に対しても、同時にアクセスを行うことが可能である。したがって、1チャネルに付き、最大8つの物理ブロック(4バンク×2プレーン)を、ほぼ同時に制御することが可能である。すなわち、最大8つの物理ブロックに対して同時に書き込みなどの処理を実行することが可能である。
図4は、図1に示す1つのNANDメモリチップ(NAND型フラッシュメモリ)の一例を示す機能ブロック図である。
メモリセルアレイ201は、複数のビット線と複数のワード線と共通ソース線を含み、例えばEEPROMセルからなる電気的にデータを書き換え可能なメモリセルがマトリクス状に配置されている。このメモリセルアレイ201には、ビット線を制御するためのビット線制御回路202とワード線制御回路206が接続されている。
ビット線制御回路202は、ビット線を介してメモリセルアレイ201中のメモリセルのデータを読み出したり、ビット線を介してメモリセルアレイ201中のメモリセルの状態を検出したり、ビット線を介してメモリセルアレイ201中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行なう。ビット線制御回路202には、カラムデコーダ203、データ入出力バッファ204が接続されている。
ビット線制御回路202内のデータ記憶回路はカラムデコーダ203によって選択される。データ記憶回路に読み出されたメモリセルのデータは、前記データ入出力バッファ204を介してデータ入出力端子205から外部へ出力される。データ入出力端子205は、メモリチップ外部のドライブ制御回路4に接続される。
このドライブ制御回路4は、データ入出力端子205から出力されたデータを受ける。さらに、ドライブ制御回路4は、NAND型フラッシュメモリの動作を制御する各種コマンドCMD、アドレスADD、及びデータDTを出力する。ドライブ制御回路4からデータ入出力端子205に入力された書き込みデータは、データ入出力バッファ204を介して、カラムデコーダ203によって選択されたデータ記憶回路に供給され、コマンド及びアドレスは制御信号及び制御電圧発生回路207に供給される。
ワード線制御回路206は、メモリセルアレイ201に接続されている。このワード線制御回路206は、メモリセルアレイ201中のワード線を選択し、選択されたワード線に読み出し、書き込みあるいは消去に必要な電圧を印加する。
メモリセルアレイ201、ビット線制御回路202、カラムデコーダ203、データ入出力バッファ204、及びワード線制御回路206は、制御信号及び制御電圧発生回路207に接続され、この制御信号及び制御電圧発生回路207によって制御される。
制御信号及び制御電圧発生回路207は、制御信号入力端子208に接続され、ドライブ制御回路4から制御信号入力端子208を介して入力されるALE(アドレス・ラッチ・イネーブル)、CLE(コマンド・ラッチ・イネーブル)、WE(ライト・イネーブル)などの各種制御信号、及びドライブ制御回路4からデータ入出力端子205及びデータ入出力バッファ204を介して入力されるコマンドCMDによって制御される。
この制御信号及び制御電圧発生回路207は、データの書き込み時にワード線やビット線に供給される電圧を発生するとともに、ウェルに供給される電圧を発生する。制御信号及び制御電圧発生回路207は、例えばチャージポンプ回路のような昇圧回路を含み、プログラム電圧や読み出し電圧、消去電圧を生成可能とされている。
さらに、制御信号及び制御電圧発生回路207は、後述するように、読み出し電圧のレベルを変更可能とされている。すなわち、制御信号及び制御電圧発生回路207は、制御信号入力端子208を介して入力される各種制御信号、データ入出力端子205及びデータ入出力バッファ204を介して入力されるコマンドCMDを受けて、読み出し動作時にワード線に印加する電圧を+方向、または−方向にシフトさせる機能を有している。
前記ビット線制御回路202、カラムデコーダ203、ワード線制御回路206、制御信号及び制御電圧発生回路207は書き込み回路、及び読み出し回路を構成している。
メモリセルアレイ201は、本体データを格納するための記憶領域に加えて、ECC(Error Correction Code)を記憶する記憶領域201−1を有している。
SSD100Aでは、書き込み回数や消去回数が増えると、NANDメモリ20が備えるセルのゲート酸化膜に電子がトラップされる。このため、消去の際にゲート酸化膜から電子を抜くには、消去回数の増加に伴って高電圧で多くの印加回数が必要となる。また、ゲート酸化膜に電子がトラップされることでセルの閾値が高く見えるので、少ない電圧印加回数で書込みが終了する。このため、印加電圧の回数と実際のセルの劣化と間に相関関係を有するので、本実施の形態では、この相関関係を利用してNANDメモリ20の寿命を検知する。
つぎに、本実施の形態のSSD100Aの構成と動作について説明する。図5は、本発明の第1の実施の形態に係るメモリシステムとしてのSSDの機能構成例を示す機能ブロック図である。SSD100Aは、コントローラ10Aと、NANDメモリ20と、DRAM30と、ホスト1と接続するためのホストI/F40と、警告出力部21などを備えている。
NANDメモリ20は、ホスト1によって指定されたユーザデータを記憶したり、DRAM30で管理される管理情報をバックアップ用に記憶したりする。NANDメモリ20は、複数のメモリセルがマトリクス状に配列されたメモリセルアレイを有し、個々のメモリセルは上位ページおよび下位ページを使用して多値記憶が可能である。NANDメモリ20は、複数のNANDメモリチップによって構成され、各NANDメモリチップは、データ消去の単位である物理ブロックを複数配列して構成される。また、NANDメモリ20では、物理ページごとにデータの書き込みおよびデータの読み出しが行われる。物理ブロックは、複数の物理ページによって構成されている。
物理ブロックアドレスは、物理ブロックに割り当てられた固定的なアドレスである。論理ブロックアドレスは、ホスト1から指定されるアドレスや、仮想的なブロックである論理ブロックに割り当てられる変更可能なアドレスである。論理ブロックとは、例えば、物理ブロックを複数組み合わせて構成される仮想的なブロックのことをいう。
DRAM30は、データ転送用、管理情報記録用の記憶部として使用される。具体的には、データ転送用の記憶部(データ転送用キャッシュ領域)は、ホスト1から書込要求があったデータをNANDメモリ20に書込む前に一時的に保存したり、ホスト1から読出要求があったデータをNANDメモリ20から読出して一時的に保存したりするために使用される。また、管理情報記録用の記憶部としては、NANDメモリ20に記憶されるデータの格納位置を管理するための管理情報(論理アドレスと物理アドレスとの対応など)、後述の書き込み時ループ回数Lwおよび消去時ループ回数Leを物理ブロック単位に管理するための管理情報(ループ回数管理テーブル31)などを含む各種管理情報を格納するために使用される。
NANDメモリ20には、図6に示すような、ループ回数管理テーブル(書き込み/消去ループ回数管理テーブル)31が記憶されており、ループ回数管理テーブル31はシステム起動時、NANDメモリ20から読み出されて、DRAM30に格納される。ループ回数管理テーブル31は、書き込み時のループ回数である書き込み時ループ回数Lwと、消去時のループ回数である消去時ループ回数Leとを、物理ブロック単位(物理ブロックアドレス単位)に管理するためのテーブルである。書き込み時ループ回数Lwは、物理ブロック内で書き込み時ループ回数が最も小さいページのループ回数(最悪値)(最も経年変化が大きいページ)を当該物理ブロックの書き込み時ループ回数Lwとして採用する。書き込み時ループ回数Lw、消去時ループ回数Leとしては、実際にモニタされた最新のループ回数が登録されている。
コントローラ10Aは、ホスト1とNANDメモリ20との間でDRAM30を介してデータ転送制御を行うとともに、SSD100A内の各構成要素を制御するソフトウエアを有している。コントローラ10AとNANDメモリ20との間は、コマンド、アドレス、データなどを入出力するためのコントロールI/O線(CtrlI/O)によって接続され、また、NANDメモリ20がレディ状態にあるかビジー状態にあるかを示すレディ/ビジー信号(Ry/By)がNANDメモリ20からコントローラ10Aに入力されている。コントローラ10Aは、読み書き制御部11、消去時ループ回数モニタ部12、書き込み時ループ回数モニタ部13、寿命管理部14を具えている。
読み書き制御部11は、DRAM30に格納された管理情報に基づいて、DRAM30のキャッシュ領域を介してNANDメモリ20に対するデータの読み書き制御を行う。
消去時ループ回数モニタ部12は、NANDメモリ20の物理ブロックの消去の度、もしくは予め決めた所定の周期、頻度で各物理ブロックの消去時ループ回数LeをNANDメモリ20から取得する。
図7は、書き換え回数と、消去時ループ回数Leとの関係を示すグラフである。このグラフは、多数の物理ブロックについての検証データの平均をとったものであり、このグラフによれば、初期状態では、消去時ループ回数Leは少ないが、書き換え回数が増加するにしたがって、消去時ループ回数Leが増加している。したがって、消去時ループ回数Leからブロックの劣化具合がわかり、消去時ループ回数LeをSSD100Aの寿命判定の基準とすることができる。
図8は、第1の実施の形態に係る消去処理の動作シーケンスを示すタイムチャートである。消去処理では、コントロールI/O線を介して、消去を示すコマンド「60h」、アドレス、コマンド「D0h」が入力され、消去処理が実行される。消去処理の実行中は、レディ/ビジー信号(Ry/By)がビジーに立ち下がっている。消去処理の実行中には、NANDメモリ20に所定の印加電圧が、印加電圧を少しずつ大きくしながら複数回に渡って入力される。消去処理が終了すると、レディ/ビジー信号(Ry/By)がレディに立ち上がる。消去時ループ回数モニタ部12は、レディ/ビジー信号(Ry/By)がレディに立ち上がったことを検知すると、コントロールI/O線を介して、コマンド「Loop Count Command」を入力する。NANDメモリ20は、「Loop Count Command」に応答して、直前の消去処理に対するステータス信号(消去時ループ回数Leおよび正常終了/異常終了など)を出力する。
NANDメモリ20では、消去コマンド「60h」が入力された後のレディ/ビジー信号(Ry/By)をモニタし、レディ/ビジー信号(Ry/By)がビジーに立ち下がってからレディに立ち上がるまでの間に、NANDメモリ20のブロックに印加された電圧の回数を消去時ループ回数Le(イレースパルス回数)として測定し、測定した消去時ループ回数Leをステータス信号として消去時ループ回数モニタ部12に送る。消去時ループ回数モニタ部12は、NANDメモリ20からの消去時ループ回数Leをループ回数管理テーブル31の対応する物理ブロックのエントリに登録(追記)する。
書き込み時ループ回数モニタ部13は、物理ページに対する書き込みの度、もしくは予め決めた所定の周期、頻度で各物理ページの書き込み時のループ回数であるページ書き込み時ループ回数LwpをNANDメモリ20から取得する。
図9は、書き換え回数と、ページ書き込み時ループ回数Lwpとの関係を示すグラフである。このグラフは、多数の物理ページについての検証データの平均をとったものであり、このグラフによれば、ページ書き込み時ループ回数Lwpは、書き換え回数が増加するにしたがって、徐々に減少している。したがって、ページ書き込み時ループ回数Lwpからブロックの劣化具合がわかり、ページ書き込み時ループ回数LwpをSSD100Aの寿命判定の基準とすることができる。
図10は、第1の実施の形態に係る書き込み処理の動作シーケンスを示すタイムチャートである。書き込み処理では、コントロールI/O線を介して、書き込みを示すコマンド「80h」、アドレス、データ、コマンド「10h」が入力され、書き込み処理が実行される。書き込み処理の実行中は、レディ/ビジー信号(Ry/By)がビジーに立ち下がっている。書き込み処理が終了すると、レディ/ビジー信号(Ry/By)がレディに立ち上がる。書き込み時ループ回数モニタ部13は、レディ/ビジー信号(Ry/By)がレディに立ち上がったことを検知すると、コントロールI/O線を介して、コマンド「Loop Count Command」を入力する。NANDメモリ20は、「Loop Count Command」に応答して、直前の書き込み処理に対するステータス信号(ページ書き込み時ループ回数Lwpおよび正常終了/異常終了など)を出力する。
NANDメモリ20では、書き込みコマンド「80h」が入力された後のレディ/ビジー信号(Ry/By)をモニタし、レディ/ビジー信号(Ry/By)がビジーに立ち下がってからレディに立ち上がるまでの間にNANDメモリ20のメモリセルに印加された電圧の回数をページ書き込み時ループ回数Lwp(プログラムパルス回数)として測定し、測定したページ書き込み時ループ回数Lwpをステータス信号として書き込み時ループ回数モニタ部13に送る。
書き込み時ループ回数モニタ部13は、各ページの、ページ書き込み時ループ回数LwpをNANDメモリ20から受信し、受信した各ページの、ページ書き込み時ループ回数Lwpを物理ブロック単位の書き込み時ループ回数Lwに変換する。物理ブロック単位の書き込み時ループ回数Lwを求める手法としては、最もページ書き込み時ループ回数が小さい(最も経年変化が大きいページ)ものを当該物理ブロックの書き込み時ループ回数Lwとして採用する。書き込み時ループ回数モニタ部13では、導出した書き込み時ループ回数Lwをループ回数管理テーブル31の対応する物理ブロックのエントリに登録する。
書き込みの際は、図11に示すように、メモリセルに書き込み電圧Vpgmを印加する度に、ベリファイ動作を行って書き込みが正常に行われたか否かをチェックし、書き込みが正常に行われていない場合は、書き込み電圧Vpgmの増加、ベリファイ動作を、正常な書き込みが行われるまであるいはタイムアウトするまで繰り返し実行する。書き込み時ループ回数モニタ部13は、このループ回数を、ページ書き込み時ループ回数Lwpとして取得する。
また、消去処理の際も、同様の、消去電圧印加、ベリファイの繰り返し制御を行っている。消去時ループ回数モニタ部12は、消去処理時のループ回数を消去時ループ回数Leとして取得する。
寿命管理部14は、ループ回数管理テーブル31の登録データに基づき、当該SSD100Aの寿命を判断するもので、当該SSD100Aが所定の劣化状態に到達したと判断した場合に、SSD10A0の外部装置であるホスト1や警告出力部21にその旨を示す警告指示を出力する。寿命管理部14は、NANDメモリ20の物理ブロックの消去の度、もしくは予め決めた所定の周期、頻度でSD100Aが所定の劣化状態に到達したか否かを判断する。
SSD100Aの寿命は、ブロック毎の書き込み時ループ回数Lwおよびブロック毎の消去時ループ回数Leの何れか一方を用いて判定できる。このため、寿命判定を実行する際、書き込み時ループ回数Lw、消去時ループ回数Leのうちのどちらかまたは両方を使用するかは、デバイスの種類によって予め決めておく。書き込み時ループ回数Lwを用いてSSD100Aの寿命を判定する場合は、消去時ループ回数モニタ部12や、ループ回数管理テーブル31の消去時ループ回数Leは不要となる。また、消去時ループ回数Leを用いてSSD100Aの寿命を判定する場合は、書き込み時ループ回数モニタ部13や、ループ回数管理テーブル31の書き込み時ループ回数Lwは不要となる。
寿命管理部14は、下記の判断方法1〜8の何れかの方法または判断方法1〜8を組み合わせた方法によって、SSD100Aが所定の劣化状態に到達したか(寿命が近づいたか)否かを判断する。
(判断方法1)
寿命管理部14は、ループ回数管理テーブル31に登録された各物理ブロックのうち、書き込み時ループ回数Lwが各物理ブロックの状態判定に用いる状態管理用の閾値(後述の下限値Wmin)よりも小さい物理ブロックのブロック数を算出する。換言すると、寿命管理部14は、ループ回数管理テーブル31に登録された各物理ブロックのうち、下限値Wminよりも小さい書き込み時ループ回数Lwの物理ブロック数を算出する。寿命管理部14は、算出した物理ブロック数がSSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用許容ブロック数Bnw1)よりも多くなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。
寿命管理部14は、ループ回数管理テーブル31に登録された各物理ブロックのうち、書き込み時ループ回数Lwが各物理ブロックの状態判定に用いる状態管理用の閾値(後述の下限値Wmin)よりも小さい物理ブロックのブロック数を算出する。換言すると、寿命管理部14は、ループ回数管理テーブル31に登録された各物理ブロックのうち、下限値Wminよりも小さい書き込み時ループ回数Lwの物理ブロック数を算出する。寿命管理部14は、算出した物理ブロック数がSSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用許容ブロック数Bnw1)よりも多くなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。
(判断方法2)
寿命管理部14は、NANDメモリ20の全ブロック数と、判断方法1によって算出した物理ブロック数との比率が、SSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用ブロック比Brw1)(例えば80%)よりも多くなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。
寿命管理部14は、NANDメモリ20の全ブロック数と、判断方法1によって算出した物理ブロック数との比率が、SSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用ブロック比Brw1)(例えば80%)よりも多くなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。
(判断方法3)
寿命管理部14は、ループ回数管理テーブル31に登録された各物理ブロックのうち、各物理ブロックの状態判定に用いる状態管理用の閾値(後述の上限値Emax)よりも大きい消去時ループ回数Leの物理ブロック数を算出する。寿命管理部14は、算出した物理ブロック数がSSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用許容ブロック数Bne)よりも多くなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。
寿命管理部14は、ループ回数管理テーブル31に登録された各物理ブロックのうち、各物理ブロックの状態判定に用いる状態管理用の閾値(後述の上限値Emax)よりも大きい消去時ループ回数Leの物理ブロック数を算出する。寿命管理部14は、算出した物理ブロック数がSSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用許容ブロック数Bne)よりも多くなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。
(判断方法4)
寿命管理部14は、NANDメモリ20の全ブロック数と、判断方法3によって算出した物理ブロック数との比率が、SSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用ブロック比Bre)よりも多くなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。
寿命管理部14は、NANDメモリ20の全ブロック数と、判断方法3によって算出した物理ブロック数との比率が、SSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用ブロック比Bre)よりも多くなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。
なお、判断方法2や判断方法4でのNANDメモリ20の全ブロック数は、有効な物理ブロックとスペア領域とを足し合わせた領域であってもよいし、有効な物理ブロックとスペア領域の何れか一方の領域であってもよい。NAND型フラッシュメモリでは一般に、デバイスのライフタイムに亘って保証すべき有効な(Valid/Good)ブロック数の最小値が規定されている。この場合、スペア領域のブロック数は、最低限保証される有効ブロック数以上のブロック数として定義することができる。あるいは、SSDなどのメモリシステムでは、外部からデータ容量として見える以上の物理ブロックが管理用、置換用、バッファリング用に設けられている場合がある。この場合、スペア領域のブロック数は、外部からデータ容量として見えるブロック数以上のブロック数として定義することもできる。
(判断方法5)
寿命管理部14は、ループ回数管理テーブル31に登録された物理ブロックの書き込み時ループ回数Lwの平均値を算出する。寿命管理部14は、算出した書き込み時ループ回数Lwの平均値が、SSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用閾値Taw)よりも小さくなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。
寿命管理部14は、ループ回数管理テーブル31に登録された物理ブロックの書き込み時ループ回数Lwの平均値を算出する。寿命管理部14は、算出した書き込み時ループ回数Lwの平均値が、SSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用閾値Taw)よりも小さくなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。
(判断方法6)
寿命管理部14は、ループ回数管理テーブル31に登録された物理ブロックの消去時ループ回数Leの平均値を算出する。寿命管理部14は、算出した消去時ループ回数Leの平均値が、SSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用閾値Tae)よりも大きくなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。
寿命管理部14は、ループ回数管理テーブル31に登録された物理ブロックの消去時ループ回数Leの平均値を算出する。寿命管理部14は、算出した消去時ループ回数Leの平均値が、SSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用閾値Tae)よりも大きくなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。
(判断方法7)
寿命管理部14は、ループ回数管理テーブル31に登録された物理ブロックの書き込み時ループ回数Lwの中から書き込み時ループ回数Lwの最小値または最大値を算出する。寿命管理部14は、算出した書き込み時ループ回数Lwの最小値または最大値が、SSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用閾値Tmw)よりも小さくなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。これにより、書き込み時ループ回数Lwに基づいて最も経年劣化が小さいと判断される物理ブロックまたは最も経年劣化が大きいと判断される物理ブロックと、寿命管理用の閾値との比較に基づいてSSD100Aに寿命がきたことを判断できる。
寿命管理部14は、ループ回数管理テーブル31に登録された物理ブロックの書き込み時ループ回数Lwの中から書き込み時ループ回数Lwの最小値または最大値を算出する。寿命管理部14は、算出した書き込み時ループ回数Lwの最小値または最大値が、SSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用閾値Tmw)よりも小さくなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。これにより、書き込み時ループ回数Lwに基づいて最も経年劣化が小さいと判断される物理ブロックまたは最も経年劣化が大きいと判断される物理ブロックと、寿命管理用の閾値との比較に基づいてSSD100Aに寿命がきたことを判断できる。
(判断方法8)
寿命管理部14は、ループ回数管理テーブル31に登録された物理ブロックの消去時ループ回数Leの中から消去時ループ回数Leの最小値または最大値を算出する。寿命管理部14は、算出した消去時ループ回数Leの最小値または最大値が、SSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用閾値Tme)よりも大きくなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。これにより、消去時ループ回数Leに基づいて最も経年劣化が小さいと判断される物理ブロックまたは最も経年劣化が大きいと判断される物理ブロックと、寿命管理用の閾値との比較に基づいてSSD100Aに寿命がきたことを判断できる。
寿命管理部14は、ループ回数管理テーブル31に登録された物理ブロックの消去時ループ回数Leの中から消去時ループ回数Leの最小値または最大値を算出する。寿命管理部14は、算出した消去時ループ回数Leの最小値または最大値が、SSD100Aの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用閾値Tme)よりも大きくなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。これにより、消去時ループ回数Leに基づいて最も経年劣化が小さいと判断される物理ブロックまたは最も経年劣化が大きいと判断される物理ブロックと、寿命管理用の閾値との比較に基づいてSSD100Aに寿命がきたことを判断できる。
警告出力部21は、例えば液晶モニタなどの表示装置である。なお、警告出力部21は、音声出力装置であってもよいし、LED(Light Emitting Diode)などの照明装置であってもよい。警告出力部21が音声出力装置である場合は、音声の出力によって警告を出力し、警告出力部21が照明装置である場合は、照明装置を点灯または点滅させることによって警告を出力する。
つぎに、SSD100A自身によるSSD100Aの寿命判定処理手順について説明する。図12は、第1の実施の形態に係るSSDの寿命判定処理手順を示すフローチャートである。なお、ここでは消去時ループ回数Leに基づいてSSD100Aの寿命判定を行なう場合について説明するが、書き込み時ループ回数Lwに基づいてSSD100Aの寿命判定を行なう場合についても同様の処理手順によってSSD100Aの寿命判定を行なうことができる。
ホスト1とSSD100Aとの間の消去処理は、図8に示した消去処理の動作シーケンスに従って行なわれる。具体的には、コントローラ10AからNANDメモリ20に消去指令が送られて、NANDメモリ20に消去指令が入力される(ステップS110)。これにより、NANDメモリ20のブロックのうち、コントローラ10Aからの消去指令で指定されたブロックに対してデータの消去処理が行なわれる(ステップS120)。
消去処理の際、消去時ループ回数モニタ部12は、消去対象となっているブロックに印加した電圧の回数を消去時ループ回数Leとして検出し(ステップS130)、検出した消去時ループ回数Leをループ回数管理テーブル31の対応する物理ブロックのエントリに登録する。これにより、ループ回数管理テーブル31が更新される(ステップS140)。
この後、寿命管理部14は、ループ回数管理テーブル31の登録データに基づいて、SSD100Aの寿命を判断する。すなわち、SSD100Aが自らSSD100Aの寿命判定を行なう(ステップS150)。本実施の形態の寿命管理部14は、上述した判断方法1〜8の何れかの方法によって、SSD100Aが所定の劣化状態に到達したか否かを判断する。
ここでは、寿命管理部14が、上述した判断方法1や判断方法3を用いてSSD100Aが所定の劣化状態に到達したか否かを判断する場合について説明する。寿命管理部14は、各物理ブロックの状態判定に用いる状態管理用の閾値(後述のブロック用閾値情報32)を用いて、NANDメモリ20が所定の劣化状態に到達したか否かを判断する。
図13は、ブロックの状態判定に用いるブロック用閾値情報を示す図である。NANDメモリ20へは、予めSSD100Aの劣化状態の判定に用いる閾値(許容範囲)を、ブロック用閾値情報32に登録しておく。
ブロック用閾値情報32には、書き込み時ループ回数Lwの許容範囲として、下限値Wminと上限値Wmaxが登録される。また、ブロック用閾値情報32には、消去時ループ回数Leの許容範囲として、下限値Eminと上限値Emaxが登録される。書き込み時ループ回数Lwの許容範囲や消去時ループ回数Leの許容範囲は、NANDメモリ20(メモリ素子)のデバイス特性などを参照して設定しておく。
寿命管理部14は、例えば、ブロック用閾値情報32を参照し、判断方法1に従って、SSD100Aの寿命を判定する。この場合、寿命管理部14は、ループ回数管理テーブル31に登録された各物理ブロックのうち、下限値Wminよりも小さい書き込み時ループ回数Lwの物理ブロック数と、上限値Wmax(例えば初期時の書き込み時ループ回数Lw)よりも大きい書き込み時ループ回数Lwの物理ブロック数との合計値を算出する。
本実施の形態では、下限値Wminに加えて、上限値Wmaxよりも大きい書き込み時ループ回数Lwの物理ブロック数をSSD100Aの寿命判定に用いている。これは、書き込み時ループ回数Lwが、上限値Wmaxよりも大きいブロックは、何らかの異常がある可能性が高いからである。
寿命管理部14は、算出した物理ブロック数の合計が許容範囲内であるか否かを判断する(ステップS160)。具体的には、寿命管理部14は、算出した物理ブロック数の合計がSSD寿命判定用許容ブロック数Bnw1よりも大きくなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。
寿命管理部14は、SSD100Aが所定の劣化状態に到達したと判断した場合に、警告出力部21などにその旨を示す警告を出力する。換言すると、寿命管理部14は、算出した物理ブロック数の合計が許容範囲内でない場合(ステップS160、No)、警告出力部21などに警告を出力する(ステップS170)。一方、寿命管理部14は、算出した物理ブロック数の合計が許容範囲内である場合(ステップS160、Yes)、警告を出力することなく寿命判定を終了する。
また、寿命管理部14は、例えば、ブロック用閾値情報32を参照し、判断方法3に従って、SSD100Aの寿命を判定してもよい。この場合、寿命管理部14は、ループ回数管理テーブル31に登録された各物理ブロックのうち、下限値Emin(例えば初期時の消去時ループ回数Le)よりも小さい書き込み時ループ回数Lwの物理ブロック数と、上限値Emaxよりも大きい消去時ループ回数Leの物理ブロック数との合計値を算出する。
本実施の形態では、上限値Emaxに加えて、下限値Eminよりも小さい消去時ループ回数Leの物理ブロック数をSSD100Aの寿命判定に用いている。これは、消去時ループ回数Leが、下限値Eminよりも小さいブロックは、何らかの異常がある可能性が高いからである。
寿命管理部14は、算出した物理ブロック数の合計がSSD寿命判定用許容ブロック数Bneよりも多くなった場合に、SSD100Aが所定の劣化状態に到達したと判断する。寿命管理部14は、SSD100Aが所定の劣化状態に到達したと判断した場合に、警告出力部21などにその旨を示す警告を出力する。
なお、判断方法1,2,5,7によってSSD100Aの寿命判定を行なう場合には、消去時ループ回数Leの下限値Eminと上限値Emaxは不要となる。また、判断方法3,4,6,8によってSSD100Aの寿命判定を行なう場合、書き込み時ループ回数Lwの下限値Wminと上限値Wmaxは不要となる。
また、上限値Wmaxよりも大きい書き込み時ループ回数Lwの物理ブロック数を用いることなく、下限値Wminよりも小さい書き込み時ループ回数Lwの物理ブロック数に基づいてSSD100Aの寿命判定を行ってもよい。この場合、書き込み時ループ回数Lwの下限値Wminは不要となる。
また、下限値Eminよりも小さい消去時ループ回数Leの物理ブロック数を用いることなく、上限値Emaxよりも大きい消去時ループ回数Leの物理ブロック数に基づいてSSD100Aの寿命判定を行ってもよい。この場合、消去時ループ回数Leの下限値Eminは不要となる。
また、本実施の形態では、書き込み時ループ回数Lwを、書き込み時のループ回数の最悪値とする場合について説明したが、予め決めた所定の物理ページのページ書き込み時ループ回数Lwpを当該物理ブロックの書き込み時ループ回数Lwとしてもよい。
また、寿命管理部14は、上述した判断方法1〜8以外の方法によって、SSD100Aの寿命を判断してもよい。また、ループ回数管理テーブル31やブロック用閾値情報32は、NANDメモリ20に格納しておいてもよいし、DRAM30に格納しておいてもよい。また、本実施の形態では、SSD100Aの外部に警告出力部21を配置する場合について説明したが、SSD100Aの内部に警告出力部21を配置してもよい。
また、図8や図10などで説明した消去処理時や書き込み処理時に用いるコマンドの種類やコマンドの番号は一例であり、他のコマンドによって消去処理や書き込み処理を行ってもよい。
このように第1の実施の形態では、実際にモニタした消去時ループ回数Leおよび/または書き込み時ループ回数Lwに基づいて、SSD100Aの寿命を判断しているので、ロット・個体・ブロック間などのばらつきに左右されず、正確な寿命判断が可能となる。したがって、複数のブロックで構成された不揮発性半導体メモリ全体の劣化状態を正確に検出することが可能となる。
また、コントローラ10Aが寿命管理部14を備えているので、SSD100A自身でSSD100Aの寿命を判断することが可能となる。また、SSD100A自身がSSD100Aの寿命に関する警告指示を出力するので、ホスト1への負担を軽減しつつSSD100Aの寿命に関する警告をユーザに知らせることが可能となる。
(第2の実施の形態)
つぎに、第2の実施の形態に係るメモリシステムについて説明する。第2の実施の形態では、ループ回数管理テーブル31をSSD(後述のSSD100B)から外部装置であるホスト1に送り、ホスト1がSSD100Bの寿命判定を行なう。
つぎに、第2の実施の形態に係るメモリシステムについて説明する。第2の実施の形態では、ループ回数管理テーブル31をSSD(後述のSSD100B)から外部装置であるホスト1に送り、ホスト1がSSD100Bの寿命判定を行なう。
図14は、本発明の第2の実施の形態に係るSSDの機能構成例を示す機能ブロック図である。なお、図14の各構成要素のうち図5に示すSSD100Aと同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。本実施の形態のホスト1は、寿命管理部16を備えている。寿命管理部16は、第1の実施の形態で説明したSSD100Aが備える寿命管理部14と同様の機能を有している。
図14に示すメモリシステムとしてのSSD100Bは、コントローラ10Bと、NANDメモリ20と、DRAM30と、ホストI/F40などを備えている。コントローラ10Bは、コントローラ10Aと略同様の機能を有しており、コントローラ10Aと比べて、コントローラ10Bが寿命管理部14を備えていない点と、コントローラ10Bが寿命通知部15を備えている点が異なる。具体的には、コントローラ10Bは、読み書き制御部11、消去時ループ回数モニタ部12、書き込み時ループ回数モニタ部13、寿命通知部15を具えている。
SSD100Bの寿命通知部15は、ホスト1からループ回数管理テーブル31の要求があった場合に、NANDメモリ20からループ回数管理テーブル31を読み出してホスト1に送る。ホスト1からSSD100Bへのループ回数管理テーブル31の要求は、例えばSMART(Self-Monitoring Analysis and Reporting Technology)コマンドなどによって行なわれる。SMARTコマンドは、ホスト1がNANDメモリ20などの状態を引き出すための要求コマンドである。なお、ホスト1は、DRAM30を介してNANDメモリ20からループ回数管理テーブル31を読み出してもよい。
つぎに、ホスト1によるSSD100Bの寿命判定処理手順について説明する。図15は、第2の実施の形態に係るSSDの寿命判定処理手順を示すフローチャートである。なお、図15の処理手順のうち、図12に示す処理手順と同様の処理手順については、重複する説明を省略する。
図15に示した処理のうち、コントローラ10BからNANDメモリ20への消去命令の入力処理からループ回数管理テーブル31の更新処理までは、図12に示した処理と同様の処理である。すなわち、図15に示したステップS210〜S240の処理は、図12に示したステップS110〜S140の処理と同様の処理である。
ホスト1は、任意のタイミングでSSD100Bにループ回数管理テーブル31の要求を行なう。ホスト1からループ回数管理テーブル31の要求があると、寿命通知部15は、ループ回数管理テーブル31をNANDメモリ20から読み出してホスト1に送信する(ステップS250)。ホスト1の寿命管理部16は、第1の実施の形態で説明した寿命管理部14と同様の処理によって、SSD100Bの寿命判定を行なう(ステップS260)。そして、SSD100Bの劣化状態が許容範囲内でない場合(ステップS270、No)、警告出力部21などに警告を出力する(ステップS280)。一方、寿命管理部14は、SSD100Bの劣化状態が許容範囲内である場合(ステップS270、Yes)、警告を出力することなく寿命判定を終了する。
なお、ループ回数管理テーブル31に登録する書き込み時のループ回数に関する情報は、書き込み時のループ回数の最悪値(最小値)である書き込み時ループ回数Lwに限らない。
図16は、ループ回数管理テーブルの他の構成例を示す図である。ループ回数管理テーブル33は、ページ書き込み時ループ回数Lwpのブロック内の平均値である書き込み時ループ回数平均値Laと、ブロック内で書き込み済みのページ数である書き込み済みページ数Pと、消去時ループ回数Leとを、物理ブロック単位に管理するためのテーブルである。書き込み時ループ回数平均値La、書き込み済みページ数P、消去時ループ回数Leとしては、実際にモニタされた最新のループ回数、ページ数が登録されている。
各ブロックへは、ページ単位でデータの書き込みが行なわれる。したがって、書き込み時ループ回数平均値Laと書き込み済みページ数Pとをループ回数管理テーブル33内に記憶させておくことにより、新たなページへの書き込みが行なわれた場合であっても、新たな書き込み時ループ回数平均値Laを容易に算出することが可能となる。
ここで、ループ回数管理テーブル33を用いたSSD100Bの寿命判定処理について説明する。ホスト1は、下記の判断方法9,10の何れかの方法または判断方法9,10を組み合わせた方法によって、SSD100Bが所定の劣化状態に到達したか(寿命が近づいたか)否かを判断する。
(判断方法9)
寿命管理部16は、ループ回数管理テーブル33に登録された各物理ブロックのうち、各物理ブロックの状態判定に用いる状態管理用の閾値(平均値用閾値Aw)よりも小さい書き込み時ループ回数平均値Laの物理ブロック数を算出する。寿命管理部16は、算出した物理ブロック数がSSD100Bの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用許容ブロック数Bnw2)よりも多くなった場合に、SSD100Bが所定の劣化状態に到達したと判断する。
寿命管理部16は、ループ回数管理テーブル33に登録された各物理ブロックのうち、各物理ブロックの状態判定に用いる状態管理用の閾値(平均値用閾値Aw)よりも小さい書き込み時ループ回数平均値Laの物理ブロック数を算出する。寿命管理部16は、算出した物理ブロック数がSSD100Bの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用許容ブロック数Bnw2)よりも多くなった場合に、SSD100Bが所定の劣化状態に到達したと判断する。
(判断方法10)
寿命管理部16は、NANDメモリ20の全ブロック数と、(9)の方法によって算出した物理ブロック数との比率が、SSD100Bの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用ブロック比Brw2)よりも多くなった場合に、SSD100Bが所定の劣化状態に到達したと判断する。
寿命管理部16は、NANDメモリ20の全ブロック数と、(9)の方法によって算出した物理ブロック数との比率が、SSD100Bの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用ブロック比Brw2)よりも多くなった場合に、SSD100Bが所定の劣化状態に到達したと判断する。
なお、寿命管理部16は、判断方法5、6を用いてSSD100Bの寿命を判定してもよいし、判断方法1〜10を組み合わせた方法によって、SSD100Bの寿命を判定してもよい。また、SSD100Aの寿命管理部14がループ回数管理テーブル33を用いてSSD100Aの寿命判定を行う場合も、ホスト1によるSSD100Bの寿命判定と同様の方法によって寿命判定が行われる。
また、各物理ブロックの状態判定に用いる書き込み時ループ回数Lwの許容範囲や消去時ループ回数Leの許容範囲は1つずつに限らず複数でもよい。許容範囲をN(Nは自然数)個とすることによって、N段階の状態判定を行なうことが可能となる。具体的には、寿命管理部16は、各物理ブロックの劣化状態が、N個の何れの許容範囲内かに基づいて、各許容範囲に対応付けられた複数の劣化段階の何れであるかを判定する。ここでは、許容範囲を2つずつ設定した場合について説明する。例えば、書き込み時ループ回数Lwの第1の許容範囲と第2の許容範囲とを予め設定しておく。そして、書き込み時ループ回数Lwが第1の許容範囲を超えた場合に、物理ブロックの状態が少し劣化したと判断する。さらに、書き込み時ループ回数Lwが第2の許容範囲を超えた場合に、物理ブロックの状態がかなり劣化したと判断する。
図17は、ブロックの状態判定を2段階で行なう場合のブロック用閾値情報を示す図である。ブロック用閾値情報34には、書き込み時ループ回数Lwの許容範囲として、第1下限値Wmin1、第1上限値Wmax1、第2下限値Wmin2、第2上限値Wmax2が登録される。また、ブロック用閾値情報32には、消去時ループ回数Leの許容範囲として、第1下限値Emin1、第1上限値Emax1、第2下限値Emin2、第2上限値Emax2が登録される。
書き込み時ループ回数Lwの許容範囲において、第2下限値Wmin2は第1下限値Wmin1よりも厳しい条件とし、第2上限値Wmax2は第1上限値Wmax1よりも厳しい条件としておく。また、消去時ループ回数Leの許容範囲において、第2下限値Emin2は第1下限値Emin1よりも厳しい条件とし、第2上限値Emax2は第1上限値Emax1よりも厳しい条件としておく。
例えば、寿命管理部16は、ブロック用閾値情報34を参照し、判断方法1に従ってSSD100Bの寿命を判定する。この場合、寿命管理部16は、ループ回数管理テーブル31に登録された各物理ブロックのうち、書き込み時ループ回数Lwが第1下限値Wmin1よりも小さい物理ブロックのブロック数と、書き込み時ループ回数Lwが第1上限値Wmax1よりも大きい物理ブロックのブロック数との合計値を算出する。
寿命管理部16は、算出した物理ブロック数の合計がSSD寿命判定用許容ブロック数Bnw1よりも大きい場合に、SSD100Bの劣化状態が第1段階の劣化状態に到達したと判断する。
また、寿命管理部16は、ループ回数管理テーブル31に登録された各物理ブロックのうち、第2下限値Wmin2よりも小さい書き込み時ループ回数Lwの物理ブロック数と、第2上限値Wmax2よりも大きい書き込み時ループ回数Lwの物理ブロック数との合計値を算出する。
寿命管理部16は、算出した物理ブロック数の合計がSSD寿命判定用許容ブロック数Bnw1よりも大きい場合に、SSD100Bの劣化状態が第2段階の劣化状態(第1段階よりも劣化が進んだ状態)に到達したと判断する。
なお、ここでは、各物理ブロックの状態判定に用いる書き込み時ループ回数Lwの許容範囲や、消去時ループ回数Leの許容範囲を複数設定する場合について説明したが、SSD100Bの寿命判定に用いる寿命管理用の閾値(SSD寿命判定用許容ブロック数Bnw1など)を複数個設定してもよい。例えば、判断方法1の方法によって算出した物理ブロック数が、SSD100Bの寿命判定に用いる寿命管理用の第1の閾値よりも大きい場合に、SSD100Bの劣化状態が第1段階に到達したと判断する。また、判断方法1の方法によって算出した物理ブロック数が、SSD100Bの寿命判定に用いる寿命管理用の第2の閾値よりも大きい場合に、SSD100Bの劣化状態が第2段階(第1段階よりも寿命が短くなった状態)に到達したと判断する。
なお、本実施の形態では、ホスト1が寿命管理部16を備える構成としたが、ホスト1以外の外部装置が寿命管理部16を備える構成としてもよい。また、寿命管理部14がブロック用閾値情報34を用いてSSD100Aの寿命判定を行なう場合、寿命管理部14は、上述したホスト1と同様の処理によって、SSD100Aの寿命判定を行なう。
このように第2の実施の形態では、SSD100Bが寿命通知部15を備えているので、ホスト1にループ回数管理テーブル31を送信することが可能となる。また、ホスト1が寿命管理部16を備えているので、ホスト1がSSD100Aの寿命を判断することが可能となる。また、各物理ブロックの状態判定に用いる書き込み時ループ回数Lwの許容範囲や、消去時ループ回数Leの許容範囲を複数設定しているので、SSD100Bの劣化状態を詳細に管理することが可能となる。
1 ホスト、10A,10B コントローラ、11 読み書き制御部、12 消去時ループ回数モニタ部、13 書き込み時ループ回数モニタ部、14,16 寿命管理部、15 寿命通知部、20 NANDメモリ、21 警告出力部、30 DRAM、31,33 ループ回数管理テーブル、32,34 ブロック用閾値情報。
Claims (8)
- データ消去の単位であるブロックを複数個有する不揮発性半導体メモリと、
前記不揮発性半導体メモリのデータ書き込みに要する前記不揮発性半導体メモリへの印加電圧のループ回数を書き込み時ループ回数としてモニタする書き込み時ループ回数モニタ部と、
前記書き込み時ループ回数を前記ブロック単位に管理するための管理テーブルと、
前記管理テーブルに基づいて前記不揮発性半導体メモリの劣化状態を判定する寿命管理部と、
を備えることを特徴とするメモリシステム。 - データ消去の単位であるブロックを複数個有する不揮発性半導体メモリと、
前記不揮発性半導体メモリのデータ消去に要する前記不揮発性半導体メモリへの印加電圧のループ回数を消去時ループ回数としてモニタする消去時ループ回数モニタ部と、
前記消去時ループ回数を前記ブロック単位に管理するための管理テーブルと、
前記管理テーブルに基づいて前記不揮発性半導体メモリの劣化状態を判定する寿命管理部と、
を備えることを特徴とするメモリシステム。 - データ消去の単位であるブロックを複数個有する不揮発性半導体メモリと、
前記不揮発性半導体メモリのデータ書き込みに要する前記不揮発性半導体メモリへの印加電圧のループ回数を書き込み時ループ回数としてモニタする書き込み時ループ回数モニタ部と、
前記書き込み時ループ回数を前記ブロック単位に管理するための管理テーブルと、
外部装置から前記管理テーブルの読み出し要求があった場合に、前記管理テーブルを前記外部装置に送信する管理テーブル送信部と、
を備えることを特徴とするメモリシステム。 - データ消去の単位であるブロックを複数個有する不揮発性半導体メモリと、
前記不揮発性半導体メモリのデータ消去に要する前記不揮発性半導体メモリへの印加電圧のループ回数を消去時ループ回数としてモニタする消去時ループ回数モニタ部と、
前記消去時ループ回数を前記ブロック単位に管理するための管理テーブルと、
外部装置から前記管理テーブルの読み出し要求があった場合に、前記管理テーブルを前記外部装置に送信する管理テーブル送信部と、
を備えることを特徴とするメモリシステム。 - 前記寿命管理部は、
書き込み時ループ回数が所定の閾値よりも小さいブロックの数に基づいて、前記不揮発性半導体メモリの劣化状態を判定することを特徴とする請求項1に記載のメモリシステム。 - 前記寿命管理部は、
消去時ループ回数が所定の閾値よりも大きいブロックの数に基づいて、前記不揮発性半導体メモリの劣化状態を判定することを特徴とする請求項2に記載のメモリシステム。 - 前記所定の閾値は複数からなり、
前記寿命管理部は、前記不揮発性半導体メモリの劣化状態が、前記閾値の大きさに応じた複数の劣化段階の何れであるかを判定することを特徴とする請求項5または6に記載のメモリシステム。 - 前記寿命管理部が前記不揮発性半導体メモリは所定の劣化状態よりも劣化が進行していると判定した場合に、所定の警告を出力する警告出力部をさらに備えることを特徴とする請求項1または2に記載のメモリシステム。
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010027944A JP2011164994A (ja) | 2010-02-10 | 2010-02-10 | メモリシステム |
US12/886,260 US8605504B2 (en) | 2010-02-10 | 2010-09-20 | Memory system |
US14/070,020 US20140059281A1 (en) | 2010-02-10 | 2013-11-01 | Memory system |
US14/300,784 US9053016B2 (en) | 2010-02-10 | 2014-06-10 | Memory system |
US14/677,361 US9348699B2 (en) | 2010-02-10 | 2015-04-02 | Memory system |
US15/135,953 US9569111B2 (en) | 2010-02-10 | 2016-04-22 | Memory system |
US15/402,522 US10073624B2 (en) | 2010-02-10 | 2017-01-10 | Memory system |
US16/100,608 US10606481B2 (en) | 2010-02-10 | 2018-08-10 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010027944A JP2011164994A (ja) | 2010-02-10 | 2010-02-10 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011164994A true JP2011164994A (ja) | 2011-08-25 |
Family
ID=44354588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010027944A Pending JP2011164994A (ja) | 2010-02-10 | 2010-02-10 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (7) | US8605504B2 (ja) |
JP (1) | JP2011164994A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170016548A (ko) * | 2015-08-03 | 2017-02-14 | 삼성전자주식회사 | 백업 기능을 갖는 메모리 모듈 |
US9875064B2 (en) | 2015-03-11 | 2018-01-23 | Toshiba Memory Corporation | Storage system architecture for improved data management |
KR20200068941A (ko) * | 2018-12-06 | 2020-06-16 | 에스케이하이닉스 주식회사 | 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011164994A (ja) | 2010-02-10 | 2011-08-25 | Toshiba Corp | メモリシステム |
US8681562B2 (en) * | 2011-01-10 | 2014-03-25 | Micron Technology, Inc. | Memories and methods of programming memories |
JP2012169006A (ja) * | 2011-02-14 | 2012-09-06 | Toshiba Corp | 半導体記憶装置 |
KR20130047400A (ko) * | 2011-10-31 | 2013-05-08 | 삼성전자주식회사 | 불휘발성 메모리 및 그것의 제어 방법 |
KR101404260B1 (ko) * | 2011-12-23 | 2014-06-05 | 한양대학교 산학협력단 | 플래시 메모리의 수명 인디케이터를 제공하는 장치 및 장치 |
KR20130076429A (ko) * | 2011-12-28 | 2013-07-08 | 삼성전자주식회사 | 메모리 장치의 저장 영역 관리 방법 및 이를 이용한 저장 장치 |
KR20130078455A (ko) * | 2011-12-30 | 2013-07-10 | 삼성전자주식회사 | 메모리 특성 정보를 저장하는 반도체 메모리 장치, 이를 포함하는 메모리 모듈, 메모리 시스템 및 반도체 메모리 장치의 동작방법 |
US20140013028A1 (en) * | 2012-07-09 | 2014-01-09 | Hamilton Sundstrand Corporation | Hardware flash memory wear monitoring |
TWI484333B (zh) * | 2012-07-12 | 2015-05-11 | Phison Electronics Corp | 彈性緩衝器模組及傳輸介面之彈性緩衝方法 |
JP6005566B2 (ja) | 2013-03-18 | 2016-10-12 | 株式会社東芝 | 情報処理システム、制御プログラムおよび情報処理装置 |
KR102070626B1 (ko) | 2013-06-26 | 2020-01-30 | 삼성전자주식회사 | 반도체 메모리 장치 및 이를 포함하는 메모리 시스템 |
KR102065664B1 (ko) | 2013-08-09 | 2020-01-13 | 삼성전자 주식회사 | 메모리 장치의 열화 상태 추정 방법 및 이를 이용한 메모리 시스템에서의 웨어 레벨링 방법 |
US20150163606A1 (en) * | 2013-12-06 | 2015-06-11 | Starkey Laboratories, Inc. | Visual indicators for a hearing aid |
WO2016048846A1 (en) * | 2014-09-28 | 2016-03-31 | Aplus Flash Technology, Inc | Self-timed slc nand pipeline and concurrent program without verification |
KR102314135B1 (ko) * | 2015-06-22 | 2021-10-18 | 삼성전자 주식회사 | 적응적인 루프를 수행하는 플래시 메모리 장치, 메모리 시스템 및 그 동작방법 |
US9971510B2 (en) * | 2016-10-16 | 2018-05-15 | Mediatek Inc. | Method for managing memory and associated microcontroller |
JP6765321B2 (ja) * | 2017-02-28 | 2020-10-07 | キオクシア株式会社 | メモリシステムおよび制御方法 |
CN107291399B (zh) * | 2017-06-30 | 2020-11-24 | 苏州浪潮智能科技有限公司 | 一种基于spdk的后端存储方法、装置及*** |
US11294594B2 (en) * | 2017-08-07 | 2022-04-05 | Kioxia Corporation | SSD architecture supporting low latency operation |
KR20190040598A (ko) * | 2017-10-11 | 2019-04-19 | 에스케이하이닉스 주식회사 | 컨트롤러 및 컨트롤러의 동작방법 |
CN110534151B (zh) * | 2018-05-24 | 2021-06-08 | 深圳忆联信息***有限公司 | 实现写入前擦除的方法、装置、计算机设备及存储介质 |
KR20200044308A (ko) | 2018-10-19 | 2020-04-29 | 삼성전자주식회사 | 스토리지 장치 및 서버 장치 |
CN110379451B (zh) * | 2019-06-19 | 2021-04-23 | 合肥致存微电子有限责任公司 | Ssd防数据丢失方法、***及应用该方法的ssd |
US11150825B2 (en) * | 2019-12-05 | 2021-10-19 | Microsoft Technology Licensing, Llc | Adaptive spare block usage in solid state drives |
US11442654B2 (en) * | 2020-10-15 | 2022-09-13 | Microsoft Technology Licensing, Llc | Managing and ranking memory resources |
CN112582018A (zh) * | 2020-12-17 | 2021-03-30 | 普冉半导体(上海)股份有限公司 | 非易失存性存储器中存储单元的寿命自检测方法及*** |
US11600346B2 (en) * | 2021-06-03 | 2023-03-07 | Winbond Electronics Corp. | Non-volatile memory and write cycle recording device thereof |
CN116700602B (zh) * | 2022-12-08 | 2024-04-12 | 荣耀终端有限公司 | 一种查询扩展内存寿命的方法及设备 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2716906B2 (ja) | 1992-03-27 | 1998-02-18 | 株式会社東芝 | 不揮発性半導体記憶装置 |
JPH0652694A (ja) | 1992-07-30 | 1994-02-25 | Hitachi Ltd | フラッシュメモリの寿命検出方式 |
JPH09305497A (ja) | 1996-05-15 | 1997-11-28 | Hitachi Ltd | 記録再生装置およびそのコントローラ、データ保護方法 |
JPH09330598A (ja) | 1996-06-10 | 1997-12-22 | Mitsubishi Electric Corp | 記憶装置及びその特性劣化状態判定方法 |
JPH11250675A (ja) | 1998-03-04 | 1999-09-17 | Canon Inc | 記憶装置及び記憶制御方法 |
JP3242890B2 (ja) * | 1998-12-16 | 2001-12-25 | 株式会社ハギワラシスコム | 記憶装置 |
JP3886673B2 (ja) * | 1999-08-06 | 2007-02-28 | 株式会社東芝 | 不揮発性半導体記憶装置 |
US6493835B1 (en) * | 1999-09-30 | 2002-12-10 | Storage Technology Corporation | System and method for detecting media and transport degradation during multichannel recording |
US6894931B2 (en) * | 2002-06-20 | 2005-05-17 | Kabushiki Kaisha Toshiba | Nonvolatile semiconductor memory device |
DE60316171T2 (de) * | 2002-10-28 | 2008-05-29 | SanDisk Corp., Milpitas | Automatischer abnutzungsausgleich in einem nicht-flüchtigen speichersystem |
JP4249165B2 (ja) * | 2005-08-18 | 2009-04-02 | 富士通株式会社 | 媒体記憶装置のデータ消失防止方法及び媒体記憶装置 |
US20070255889A1 (en) * | 2006-03-22 | 2007-11-01 | Yoav Yogev | Non-volatile memory device and method of operating the device |
US8049145B1 (en) * | 2006-04-19 | 2011-11-01 | Agerson Rall Group, L.L.C. | Semiconductor device having variable parameter selection based on temperature and test method |
US7523013B2 (en) * | 2006-05-15 | 2009-04-21 | Sandisk Corporation | Methods of end of life calculation for non-volatile memories |
US8060718B2 (en) * | 2006-06-20 | 2011-11-15 | International Business Machines | Updating a memory to maintain even wear |
US7356442B1 (en) * | 2006-10-05 | 2008-04-08 | International Business Machines Corporation | End of life prediction of flash memory |
JP4575346B2 (ja) | 2006-11-30 | 2010-11-04 | 株式会社東芝 | メモリシステム |
US7649782B2 (en) * | 2007-07-31 | 2010-01-19 | Freescale Semiconductor, Inc. | Non-volatile memory having a dynamically adjustable soft program verify voltage level and method therefor |
US7590001B2 (en) * | 2007-12-18 | 2009-09-15 | Saifun Semiconductors Ltd. | Flash memory with optimized write sector spares |
US8239611B2 (en) * | 2007-12-28 | 2012-08-07 | Spansion Llc | Relocating data in a memory device |
JP5040773B2 (ja) * | 2008-03-31 | 2012-10-03 | 富士通株式会社 | メモリバッファ割当装置およびプログラム |
KR20100049809A (ko) * | 2008-11-04 | 2010-05-13 | 삼성전자주식회사 | 불휘발성 메모리 장치의 소거 방법 |
US20100174845A1 (en) * | 2009-01-05 | 2010-07-08 | Sergey Anatolievich Gorobets | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques |
US8036035B2 (en) * | 2009-03-25 | 2011-10-11 | Micron Technology, Inc. | Erase cycle counter usage in a memory device |
US20100318719A1 (en) * | 2009-06-12 | 2010-12-16 | Micron Technology, Inc. | Methods, memory controllers and devices for wear leveling a memory |
US8479080B1 (en) * | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
US8489966B2 (en) * | 2010-01-08 | 2013-07-16 | Ocz Technology Group Inc. | Solid-state mass storage device and method for failure anticipation |
JP5349256B2 (ja) * | 2009-11-06 | 2013-11-20 | 株式会社東芝 | メモリシステム |
JP2011164994A (ja) * | 2010-02-10 | 2011-08-25 | Toshiba Corp | メモリシステム |
US20110252289A1 (en) * | 2010-04-08 | 2011-10-13 | Seagate Technology Llc | Adjusting storage device parameters based on reliability sensing |
KR101702356B1 (ko) * | 2010-08-09 | 2017-02-03 | 삼성전자주식회사 | 전하 트랩형 플래시 메모리 장치 및 그것의 소거 방법 |
US8645773B2 (en) * | 2011-06-30 | 2014-02-04 | Seagate Technology Llc | Estimating temporal degradation of non-volatile solid-state memory |
US9244763B1 (en) * | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
-
2010
- 2010-02-10 JP JP2010027944A patent/JP2011164994A/ja active Pending
- 2010-09-20 US US12/886,260 patent/US8605504B2/en active Active
-
2013
- 2013-11-01 US US14/070,020 patent/US20140059281A1/en not_active Abandoned
-
2014
- 2014-06-10 US US14/300,784 patent/US9053016B2/en active Active
-
2015
- 2015-04-02 US US14/677,361 patent/US9348699B2/en active Active
-
2016
- 2016-04-22 US US15/135,953 patent/US9569111B2/en active Active
-
2017
- 2017-01-10 US US15/402,522 patent/US10073624B2/en active Active
-
2018
- 2018-08-10 US US16/100,608 patent/US10606481B2/en active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9875064B2 (en) | 2015-03-11 | 2018-01-23 | Toshiba Memory Corporation | Storage system architecture for improved data management |
KR20170016548A (ko) * | 2015-08-03 | 2017-02-14 | 삼성전자주식회사 | 백업 기능을 갖는 메모리 모듈 |
KR102274038B1 (ko) * | 2015-08-03 | 2021-07-09 | 삼성전자주식회사 | 백업 기능을 갖는 메모리 모듈 |
KR20200068941A (ko) * | 2018-12-06 | 2020-06-16 | 에스케이하이닉스 주식회사 | 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치 |
KR102663661B1 (ko) * | 2018-12-06 | 2024-05-10 | 에스케이하이닉스 주식회사 | 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
US20170123673A1 (en) | 2017-05-04 |
US10073624B2 (en) | 2018-09-11 |
US20160239214A1 (en) | 2016-08-18 |
US9348699B2 (en) | 2016-05-24 |
US20140297930A1 (en) | 2014-10-02 |
US8605504B2 (en) | 2013-12-10 |
US10606481B2 (en) | 2020-03-31 |
US9053016B2 (en) | 2015-06-09 |
US20140059281A1 (en) | 2014-02-27 |
US20150212888A1 (en) | 2015-07-30 |
US9569111B2 (en) | 2017-02-14 |
US20110197045A1 (en) | 2011-08-11 |
US20190004706A1 (en) | 2019-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10606481B2 (en) | Memory system | |
JP5364750B2 (ja) | メモリシステム、及び不揮発性メモリデバイスの制御方法 | |
US11069414B2 (en) | Non-volatile semiconductor storage device | |
US10916312B2 (en) | Memory system performing read of nonvolatile semiconductor memory device | |
JP2012203957A (ja) | メモリシステム | |
US11625297B2 (en) | Storage device and operating method thereof | |
US11275524B2 (en) | Memory system, memory controller, and operation method of memory system | |
US11755248B2 (en) | Memory system and operating method of memory system | |
US20230195193A1 (en) | Controller executing activation mode or low power mode based on state of multiple sub-circuits and operating method thereof | |
CN112951285A (zh) | ***、控制器和用于操作***的方法 |