JP2019083082A - フラッシュメモリモジュール及びフラッシュメモリ - Google Patents
フラッシュメモリモジュール及びフラッシュメモリ Download PDFInfo
- Publication number
- JP2019083082A JP2019083082A JP2017209424A JP2017209424A JP2019083082A JP 2019083082 A JP2019083082 A JP 2019083082A JP 2017209424 A JP2017209424 A JP 2017209424A JP 2017209424 A JP2017209424 A JP 2017209424A JP 2019083082 A JP2019083082 A JP 2019083082A
- Authority
- JP
- Japan
- Prior art keywords
- refresh
- data
- flash memory
- controller
- voltage
- 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
Landscapes
- Read Only Memory (AREA)
Abstract
【課題】チップ内で記録領域を検査し、リフレッシュの要否を判断すること。【解決手段】セルを用いてデータを保持する複数のフラッシュメモリと、前記複数のフラッシュメモリへのデータの入出力を管理するコントローラとを備え、前記フラッシュメモリは、前記セルの電圧を測定してリフレッシュの要否を判定して前記コントローラへ報告し、前記コントローラは、前記リフレッシュを実行すること。【選択図】図1
Description
本発明は、フラッシュメモリモジュール及びフラッシュメモリに関するものである。
NAND型フラッシュメモリ(以下FM)を搭載するソリッドステートドライブ(以下SSD)等の不揮発性メモリを搭載する記憶モジュール(以下不揮発性メモリ記憶モジュール)は、従来エンタープライズシステムの長期記憶用媒体として用いられてきたハードディスクドライブ(以下HDD)よりも高速にデータの書き込み及び読み出しが可能であり、システムの高性能化を意図した、HDDの置き換えとしての利用が広がっている。こうしたFMのエンタープライズシステムへの利用拡大は、微細化と多値化によるFMのビットコスト低下に起因している。
FMは電子を格納するセルにより構成されており、このセルに電子が注入されている個数とデータのビット値を対応付けることで値を記録する。この電子の個数が時間経過により増減変化すると対応付けられたビット値が変化し、エラービットとなる。近年、微細化や多値化により、わずかな電子の移動でもビット値が変化するようになったため、FMのエラービットは増加しやすく、高信頼にデータを保持可能な期間は短縮されている。
そこで、エンタープライズシステムに適用されるSSDでは、NVMCTL(Non Volatile Memory Controller)がFMにデータを記録する際に、エラービットを訂正するECC(Error Correction Code)を付与しておき、定期的にデータを読み出してECCにてデータ中に生じたエラービットを訂正して、訂正データを再度FMに記録する「リフレッシュ」と呼ばれる動作を行いデータの長期保存を行っている。こうした技術として、例えば、特許文献1に開示される技術がある。
リフレッシュは、消去動作を伴う為、実施する度にFMを劣化させる。このため、必要不可欠なときにのみ実施する事が望ましい。特許文献2には、記録データ中に発生したエラービットが一定数以上となったときのみに、リフレッシュする技術が開示されており、必要最低限のリフレッシュを実現している。
また、FMから読み出す電圧を最適化し、エラービットを削減する技術があり、こうした技術は、特許文献3に開示されている。
特許文献2は、データにECCを付与してFMに格納しておき、記録データ中に生じたエラービット数を測定するために、NVMCTLがデータをFMより取得し、ECCを用いてエラービット訂正し、エラービット数をカウントする。以降、本資料では、このエラービットを測定する為のリードを検査リードと呼ぶ。近年FMの記憶容量が増大し、一つのSSDの記憶容量も増大している。このため、リフレッシュの要否を決定する為の検査リードのリード量が増加している。
また、近年のFMはエラービット数が多く、その訂正にLDPC(Low Density Parity Check)と呼ばれる訂正符号を用いている。このLDPCは、データ訂正のためにエラービット訂正の対象データ以外に、ソフトデータと呼ばれる訂正を補助するデータを用いる事がある。このソフトデータは、エラービット訂正の対象データの1〜2倍のデータ量がある。このため、NVMCTLは、検査リードにてエラービット数を計量する為に、データとソフトデータをFMより取得する必要がある。
上記の理由より、NVMCTLとFM間のデータ転送路は、多量の検査リード用データが転送されるため、ホストから要求されたリード・ライトのデータ転送と競合し、ホストリクエストに対するリード・ライト応答時時間の増加を招いている。
また、近年のFMの記憶容量密度が向上し、不揮発性メモリ記憶モジュール全体の記憶容量も増加しており、従来と同等頻度の検査リードの実施が困難となり、信頼性低下を招いている。
本発明の課題は、チップ内で記録領域を検査し、リフレッシュの要否を判断することにある。
前述の課題を解決するため、本発明は、セルを用いてデータを保持する複数のフラッシュメモリと、前記複数のフラッシュメモリへのデータの入出力を管理するコントローラとを備え、前記フラッシュメモリは、前記セルの電圧を測定してリフレッシュの要否を判定して前記コントローラへ報告し、前記コントローラは、前記リフレッシュを実行することを特徴とする。
本発明によれば、チップ内で記録領域を検査し、リフレッシュの要否を判断することができる。結果として、SSDに搭載する複数のFMにその処理を分散させ、コントローラとFM間のデータ転送量を削減できる為、ホストリクエストのリード・ライトにより生じたデータ転送との競合が軽減され、ホストリクエストに対する処理性能を向上できる。
次に、本発明の実施形態を図面に基づいて説明する。尚、本発明は、以下に説明する実施形態に限定されるものではない。
(1−1)システム構成
まず本発明が適用されるシステム構成について図1並びに図2を用いて説明する。図1は、本発明が適用されるシステム例の概要について示しており、本発明は、図1を例とするシステムに適用可能なものである。
まず本発明が適用されるシステム構成について図1並びに図2を用いて説明する。図1は、本発明が適用されるシステム例の概要について示しており、本発明は、図1を例とするシステムに適用可能なものである。
図1は、本発明が適用されるシステム構成について示している。図1のストレージ(Storage)100は、ネットワーク、例えば、SAN(Storage Area Network)101を介して、複数のサーバ(Server)102と接続されており、各サーバ(ホスト)102からの要求(ホストリクエスト)に応じてストレージ100は、データをストレージ100内部の記憶媒体に記録し、またはストレージ100内部の記録媒体から読み出す。ストレージ100は、図1に示すように、複数のコントローラ(以下CTL)117と、複数のエクスパンダー114と、複数の不揮発性メモリモジュール(以下NVMモジュール)115とから構成される。
各CTL117は、プロセサ(Processor)112、DRAM(Dynamic Random Access Memory)111、フロントエンドインターフェース(FE IF)116、バックエンドインターフェース(BE IF)113により構成される。CTL117は、冗長性を確保するために、ストレージ100に少なくとも2つ以上が搭載されており、あるCTL117に故障が生じた場合他方のCTL117にて処理が継続可能なように設計されている。
プロセサ112は、ストレージ100の制御を行うコンポーネントであり、フロントエンドインターフェース116、DRAM111、バックエンドインターフェース113と接続されている。プロセサ112は、ストレージ100の制御ソフトウェアが動作しており、ストレージ100内の各種データ転送を制御する。
フロントエンドインターフェース116は、ストレージ100とSAN101を接続するためのインターフェースであり、Ethernet(登録商標)やFC(Fibre Channel)等のプロトコルにより、SAN101を介したリクエストやデータ転送を行う。
DRAM111は、ストレージプログラムの格納やデータの一次的な格納を行うコンポーネントであり、ライトキャッシュとして上位装置(例えば、サーバ102)から受領したデータを一旦格納する。このとき、上位装置から受領したライトデータを他のCTL117のDRAM111にもコピーすることで冗長性を確保する。
バックエンドインターフェース113は、記憶媒体であるNVMモジュール115と接続するためのインターフェースであり、SAS(Serial Attached SCSI)やFC等のプロトコルにより各種リクエストの通知やデータ転送を行う。
エクスパンダー114は、複数のNVMモジュール115を格納しており、バックエンドインターフェース113と接続されている。
NVMモジュール115は、記憶モジュール装置として、内部にFM(図示せず)を搭載しており、ストレージ100のCTL117からの要求に応じてデータをFMに記録する、またはデータをFMより読み出す記憶媒体である。ストレージ100は、複数台のNVMモジュール115を管理しており、複数台のNVMモジュール115に跨るようにデータを冗長化して記録する。この機能により、NVMモジュール115の突発的な故障時にデータの消失に対応する。こうした技術の一例としてRAID(Redundant Array Inexpensive Disk)がある。RAIDは、例えば4台のNVMモジュール115を一つのグループとして扱い。サーバ102から受領したライトデータを3台のNVMモジュール115に分割して記録する。このときに3台に記録する3つのデータをXOR演算しパリティデータを生成する。そしてこのパリティデータを、4台目のNVMモジュール115に記録する。こうすることで、4台のNVMモジュール115のうち1台が突然故障しても、他の3台のNVMモジュール115に記録されたデータから、故障したNVMモジュール115に記録されているデータを復元できる。
以上、本発明が適用されるステム構成の一例である。尚、本発明は図1に示すシステム構成に限定されるものではない。本発明はデータをNVMモジュール115に格納して長期に保存する他のシステムにも適用可能なものである。例えば、図2に示すようなシステム構成でもよい。図2は、複数のサーバノードにより構成されるシステムである。
図2は、本発明が適用されるノード構成について示している。図2のサーバ200は、一次記憶領域であるDRAM211、ソフトウェアに従って様々な処理を実施するプロセサ212、各種周辺機器を接続するスイッチ(以下SW)213、二次記憶領域となるNVMモジュール115、他のサーバ200に接続するネットワークインターフェース(I/F)217により構成される。尚、図2では、プロセサ212とNVMモジュール115がSW113を経由して接続する構成について示すが本発明はこの例に限定されるものではない。プロセサ212がNVMモジュール115に直接接続するとしてもよい。
DRAM211は、プロセサ212から短時間でアクセス可能な接続にてプロセサ212と接続されており、プロセサ212が処理するプログラムや処理対象データを格納する領域である。
プロセサ212は、プログラムに従って動作し、対象データを処理する装置である。プロセサ212は、内部に複数のプロセサコア(図示せず)を持ち、各プロセサコアは各自独立してまたは協調してプログラムを処理するものである。また、プロセサ212は、内部にDRAMコントローラ(図示せず)を持ち、DRAMコントローラは、プロセサ212からのリクエストに応じてDRAM211よりデータを取得、またはDRAM211にデータを格納する。また、プロセサ212は、外部IOインターフェース(図示せず)を持ち、外部IOインターフェースを介してSW213に接続し、またSW213を経由して二次記憶装置であるNVMモジュール115に指示を通知する事が可能である。プロセサ212は、各種処理を行う。尚、図2の例では、ネットワークインターフェース217は、プロセサ212と直接接続している例について記すが、本発明は、この例に限定されるものではない。例えば、ネットワークインターフェース217は、SW213を介してプロセサ212と接続するとしても良い。
プロセサ212では、仮想マシンを生成するハイパーバイザが動作しており、仮想マシン上では各種アプリケーションが動作している。このアプリケーションがデータを永続的に記録するときに、ストレージ機能を有する仮想マシンに仮想的に指示をおこなう。このとき、ストレージ機能を有する仮想マシンを処理するプロセサ212は、DRAM211に格納されているデータを、ストレージ機能を有する仮想マシンの管理方式に従って、NVMモジュール115に記録する。
SW213は、高速な外部IOバスを仲介する部位であり、例えばPCI−ExpressやInfiniband等の接続規格のパケットをパケットに定められたルーティング方式で転送する。SW213は、NVMモジュール115を複数台接続可能とし、プロセサ212と各種デバイス間の情報を通信する。なお、図2には、SW213に対して一台のNVMモジュール115を接続した例について示すが、本発明は、この例に限定されるものではない。例えば、SW213に対して2台以上のNVMモジュール115を接続してもよく、また各ノードであるサーバ200内のSW213に接続されるNVMモジュール115は同一数でなくてもよい。例えば、あるノード内には1台のNVMモジュール115がSW213を介して接続されており、他のノードには2台のNVMモジュール115がSW213を介して接続されていてもよい。
NVMモジュール115は、解析対象データを格納する二次記憶装置である。本発明においては、NVMモジュール115は、プロセサ212から通知されるライト情報に基づきライト対象データをDARM211より取得する。
ネットワークインターフェース217は、ノード間を接続するネットワークに接続するためのインターフェースである。図2の例では、ノードとなるサーバ200は、ネットワーク(Network)203として、例えばEthernet(登録商標)を用いて、他ノードとの通信を行うが、本発明はこの例に限定されるものではない。例えばノードとなるサーバ200は、他のノードとなるサーバ200とInfinibandを介して通信するとしてもよい。
以上、図2の構成について説明した。本発明は先の図1の構成だけでなく、図2の構成に対しても適用される。
(1−2)NVMモジュールの構成
次に図3を用いて、本発明が適用されるNVMモジュール115の内部構成について説明する。図3は、NVMモジュール115の内部構成を示す図である。
次に図3を用いて、本発明が適用されるNVMモジュール115の内部構成について説明する。図3は、NVMモジュール115の内部構成を示す図である。
NVMモジュール115は内部に、不揮発性記憶モジュールコントローラ(以下NVMモジュールコントローラ)310と複数(例えば32個)のFM(FMチップ)320〜328を備える。NVMモジュールコントローラ310は、その内部に組み込みプロセサ(E-Processor)315、RAM313、データバッファ(Data Buffer)316、I/Oインターフェース(Interface)311、FMインターフェース(Interface)317、及びデータ転送を相互に行うスイッチ(Switch)314を備えている。
スイッチ314は、NVMモジュールコントローラ310内の組み込みプロセサ315、RAM313、データバッファ316、I/Oインターフェース311、FMインターフェース317を接続し、各部位間のデータをアドレスまたはID(Identification)によってルーティングし転送する。尚、本実施例では、図3に示すように、単一のスイッチ314に各ハードウェア及びハードウェア実装論理がスター状に接続された例について記すが、本発明は、この例に限定されるものではない。例えば内部に複数のスイッチを有し、接続が必要な各ハードウェア及びハードウェア実装論理が通信可能なように接続されていればそれで良い。
I/Oインターフェース311は、上位装置(例えば、プロセサ112)と接続するハードウェア実装論理であり、スイッチ314を介してNVMモジュールコントローラ310の各部位と接続する。I/Oインターフェース311は、上位装置からの各種コマンドを受領し、NVMモジュールコントローラ310内部のRAM313に記録する。また、I/Oインターフェース311は、上位装置からのコマンドを受領した際に、NVMモジュールコントローラ310内部の組み込みプロセサ315に割り込みを行うか、または組み込みプロセサ315がポーリングしているRAM313上の記憶領域に、コマンドを受領したことを通知するデータを記録する。
組み込みプロセサ315は、スイッチ314を介してNVMモジュールコントローラ310の各部位と接続し、RAM313に記録されたプログラム及び管理情報を基にNVMモジュールコントローラ310全体を制御する。また、組み込みプロセサ315は、定期的な情報取得、及び割り込み受信機能によって、NVMモジュールコントローラ310全体を監視する。
データバッファ316は、NVMモジュールコントローラ310でのデータ転送処理途中の一時的なデータを格納する。
FMインターフェース317は、複数バス、例えば16本のバスによってFM320からFM328と接続する。各バスは、FM320からFM328の中の複数(例えば4)のFMを接続し、同じくFMに接続されるCE(Chip Enable)信号を用い、同一バスに接続された複数FMを独立して制御する。
FMインターフェース317は、組み込みプロセサ315より指示されるリード/ライト要求に応じて動作する。もし、リード要求であれば、指示されたFMから格納データをリードしデータバッファ316に転送し、ライト要求であれば格納すべきデータをデータバッファ316から呼び出し、格納先のFMに転送する。
また、FMインターフェース317は、ECC生成回路、ECCによるデータ損失検出回路、ECC訂正回路(いずれも図示せず)を有し、データ書き込み時にはデータに対してECCを付加して書き込む。またデータ呼び出し時にECCによるデータ損失検出回路によって、FMからの呼び出しデータを検査し、データ損失が検出された際には、ECC訂正回路によってデータ訂正を行う。
以上説明した、スイッチ314、I/Oインターフェース311、組み込みプロセサ315、データバッファ316、FMインターフェース317は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)として、一つの半導体素子内で構成してもよいし、複数の個別専用IC(Integrated Circuit)を相互に接続した構成であってもよい。
RAM313は具体的にはDRAMなどの揮発性メモリが挙げられる。RAM313は、NVMモジュール115内で用いられるFM320からFM328の管理情報、各DMA(Direct Memory Access)が用いる転送制御情報を含んだ転送リスト等を格納する。尚、RAM313はデータを格納するデータバッファ316の機能の一部または全てを含みデータ格納に用いる構成としてもよい。
ここまで図3を用いて本発明が適用されるNVMモジュール115の構成について説明した。
(1−3)FMの内部構造
次に図4を用いてFMの内部構造について説明する。本実施例のFM(FMチップ)、例えば、FM320は、内部に少なくともFMバスインターフェース(BUS Interface)401、マイクロプロセサ(Micro Processor)402、データ転送バス403、ビットカウンター(Bit Counter)404、読み出し電圧コントロール(Read Voltage Control)405、FMセルアレイ406を有し、一つの半導体チップ(半導体基板)上に形成されている。
次に図4を用いてFMの内部構造について説明する。本実施例のFM(FMチップ)、例えば、FM320は、内部に少なくともFMバスインターフェース(BUS Interface)401、マイクロプロセサ(Micro Processor)402、データ転送バス403、ビットカウンター(Bit Counter)404、読み出し電圧コントロール(Read Voltage Control)405、FMセルアレイ406を有し、一つの半導体チップ(半導体基板)上に形成されている。
FMバスインターフェース401は、NVMモジュール115のNVMモジュールコントローラ310と接続する為のFMインターフェース317に接続するインターフェースである。FM(FMチップ)320は、FMバスインターフェース401を通じて、NVMモジュール115から各種コマンドを受領し、また、FMセルアレイ406からの情報をNVMモジュール115に転送する。
マイクロプロセサ402は、FMセルアレイ406に属する複数のセル(図示せず)を含むFM(FMチップ)を制御するプロセサである。複数のセルに対するデータの入出力を制御するマイクロプロセサ402は、FM内の内部バスを使って各機能部位に指示を送る。本実施例では、マイクロプロセサ402は、後述の最適読み出し電圧探索を制御し、リフレッシュの要否を判断することを特徴とする。
データ転送バス403は、FMセルアレイ406からのデータ読み出しやFMセルアレイ406へのデータ記録を行う際のデータ転送を行うバスである。
ビットカウンター404は、データに含まれるビット値の0または1の個数をカウントする機能ブロックである。本実施例では、後述の最適読み出し電圧探索のために用いることを特徴とする。
読み出し電圧コントロール405は、マイクロプロセサ402に従って、読み出し電圧を制御する機能ブロックである。FM320は後述のとおり、時間経過伴いエラービットを相対的に減少させる読み出し電圧が変化するため、読み出し電圧を変更する必要がある。読み出し電圧コントロール405は、マイクロプロセサ402に従って読み出し電圧を変更する。
FMセルアレイ406は、Yデコード(Decode)407、Xデコード(Decode)408、電圧測定部(Sensing)409、データを記録するセル群(図示せず)で構成される。このセル群によりデータの記憶領域を構成する。各セルは、電子の個数に応じた閾値電圧を保持する。FM320の記憶領域は、最小消去単位であるブロック420によって、複数のブロック420に分割されている。各ブロック420は、さらに最小書き込み単位であるページ、例えば、ページ410、411、412に分割されている。ページ410、411、412は、同一にデータの書き込みやデータの読み込みがなされる8KB個や16KB個等のセル群により構成されている。
またページ410、411、412の中には、データとECCを組み合わせたECCCW(Error Correction Code Word)を格納している。データは、FM320が保持すべきデータであり、このデータに生じるエラービットを訂正する目的で、マイクロプロセサ402は、ECCを算出し、データに結合してECCCWを作成し、作成したECCCWをFM320に記録している。
FMセルアレイ406は、マイクロプロセサ402からの要求に応じて、FMセルアレイ406内の所定のページにデータを記録し、また所定のページからデータを読み出す。本実施例において読み出したデータは、FMバス(図示せず)または、ビットカウンター404に転送される。
MLC(Multi Level Cell)やTLC(Triple Level Cell)、QLC(Quad Level Cell)といったタイプのFM320は、一つのセルに複数のページのbit値を記録する。このため、ブロック420を構成するページ(410、・・・)は、それぞれ特定のセル群を共有している。本実施例では、MLCタイプのFM320について記述するが、この構成においては、2つのページが、一つのセルを共有している。図4の例では、ページ(ページ0)410とページ(ページ1)411、ページ(ページN−1)413とページ(ページN)414が、それぞれセル群を共有するページである。以降このセル群を共有するページをペアページと呼ぶ。
(1−4)FMにおけるエラービット発生概要
本発明は、FM320に生じるエラービット数がECCにて訂正可能な範囲に留めておく為、リフレッシュを実施し、データ保持の信頼性を向上させるものである。この技術を説明する前に、FM320におけるエラービット発生の概要について図5を用いて説明する。
本発明は、FM320に生じるエラービット数がECCにて訂正可能な範囲に留めておく為、リフレッシュを実施し、データ保持の信頼性を向上させるものである。この技術を説明する前に、FM320におけるエラービット発生の概要について図5を用いて説明する。
図5は、一つのセルに2bitの値(ビット値)を格納するMLC(Multi Level Cell)の閾値電圧の分布を模式的に示した図である。FM320としてMLCタイプのものを用いる場合、マイクロプロセサ402は、2bitの値を一つのセルに格納するために、複数のセルの閾値電圧(閾値電圧範囲)を4つのレベル(Level)1〜4に区分し、各レベルに2bitの値を対応付けて管理している。例えば、Level1 = 11b(「11」ビット)、 Level2 = 01b(「01」ビット)、 Level3 = 00b(「00」ビット)、 Level4 = 10b(「10」ビット)である。図5(a)に示すのが、データ記録直後の閾値電圧の分布である。データ記録時に、FM320では、指定されたbit値に対応した閾値電圧となるようにセルに電子を注入するが、電子のセルへの注入は不安定なため、複数のセル群を同一の目標とする閾値電圧となるように電子を注入しても、セル群の閾値電圧は、図5(a)に示す各閾値電圧分布501〜504のようにばらつく。
一般に、各レベルを区分する閾値電圧(各レベル間の境界を示す閾値電圧)521、522、523は、前述のばらつき(セル群の閾値電圧のばらつき)を考慮して設定されており、セル群の閾値電圧がばらついても、目標とする閾値電圧と区分する閾値電圧のマージンで吸収可能な範囲に収まる。
閾値電圧分布501は、Level1の目標とした閾値電圧となるように記録したセル群(例えば、「01」のデータが格納されるページ1、2に属するセル群)の閾値電圧分布である。
閾値電圧分布502は、Level2の目標とした閾値電圧となるように記録したセル群(例えば、「00」のデータが格納されるページ3、4に属するセル群)の閾値電圧分布である。
閾値電圧分布503は、Level3の目標とした閾値電圧となるように記録したセル群の閾値電圧分布である。
閾値電圧分布504は、Level4の目標とした閾値電圧となるように記録したセル群の閾値電圧分布である。
図5(b)に示す閾値電圧の分布は、図5(a)に示した閾値電圧分布のセルが、時間経過により変化したことを示している。セルに注入されている電子は、時間経過とともにセルから放出されるため、閾値電圧分布504は、時間経過により閾値電圧523より低い方向に移動し、閾値電圧分布514に遷移する。このとき、閾値電圧分布514の一部のセルの閾値電圧は、Level4とLevel3との境界を区分するための閾値電圧523を下回っている。このため、仮に、Level4とLevel3との境界を区分するための閾値電圧523を読み出し電圧として用いた場合には、Level4に属するセルであっても、データ読み出し時にはLevel3と判断される。
Level4やLevel3等の各閾値電圧のレベルは、前述のとおりbit値に対応付けられているため、記録時の閾値電圧が時間変化により変化すると読み出し時のbit値が変わる。これによってエラービットが発生する。
(1−5)最適読み出し電圧探索処理
図5に示したように時間経過により、セル群の閾値電圧は徐々に移動する。このため、各レベルを区分する閾値電圧をリード時の読み出し電圧として用いてデータをリードした場合、エラービットの個数はデータを記録してからの経過時間に応じて変化する。しかし、エラービット数は、一般的に各閾値電圧分布の重なりが小さいところほど少なくなるため、閾値電圧の移動(変化)に合わせて、読み出し電圧(各レベルを区分する閾値電圧)を適切に変更すると、エラービットを減少させることが可能になる。
図5に示したように時間経過により、セル群の閾値電圧は徐々に移動する。このため、各レベルを区分する閾値電圧をリード時の読み出し電圧として用いてデータをリードした場合、エラービットの個数はデータを記録してからの経過時間に応じて変化する。しかし、エラービット数は、一般的に各閾値電圧分布の重なりが小さいところほど少なくなるため、閾値電圧の移動(変化)に合わせて、読み出し電圧(各レベルを区分する閾値電圧)を適切に変更すると、エラービットを減少させることが可能になる。
例えば、Level3とLevel4との境界を区分するための閾値電圧523は、記録直後の閾値電圧分布504と閾値電圧分布503とを区分するには適切であったが、時間経過後の閾値電圧分布513と閾値電圧分布514とを区分するには、図5に示す位置より閾値電圧を下降させた電圧を読み出し電圧とした方がエラービットを減少させる事が可能となる。
従って、リード時にセルからデータをリードする際に確実なエラービット訂正を可能とするためには、読み出し電圧の最適化が必要となる。
本実施例のNVMモジュール115は、閾値電圧分布の移動(変化)にあわせて、読み出し電圧(各レベルを区分する閾値電圧)を最適化することで、FM320からのデータリードにおけるエラービットを削減し、信頼性を維持している。また、本実施例においては、このエラービットを減少させる最適な読み出し電圧の値を用いて、FM320のマイクロプロセサ402がリフレッシュの要否を決定する。
次に、本実施例におけるFMが実施する最適読み出し電圧の探索方法について図6を用いて説明する。図6は、MLCセルにおけるLevel3を目標とした閾値電圧となるように記録したセル群の閾値電圧分布503とLevel4を目標とした閾値電圧となるように記録したセル群の閾値電圧分布504の境界において、エラービットを削減する読み出し電圧を探索する場合の例について記したものである。
FM320の閾値電圧分布503と閾値電圧分布504との境界を探索する最適読み出し電圧探索処理において、本実施例のFM320は、閾値電圧分布503から探索を開始する。なお、本実施例のFM320はリード対象ページのビット値を、読み出し電圧より下で閾値電圧がLevel3と判断されれば0、読み出し電圧より上でLevel4と判断されれば1とそれぞれ対応付けている。
最初にFM320は、マイクロプロセサ402の制御により読み出し電圧コントロール405を制御して、探索用読み出し電圧として、例えば、図6(a)に示すように、読み出し電圧601を用いてセルアレイ406内のページ(例えば、ページ410)からデータを読み出す。そして、そのデータをビットカウンター404に転送し、データ中のビット値0(Level3に属するセルであって、ビット値「00」のデータが記録されたセルのビット値0)の個数(セルの個数)をカウントする。次に、マイクロプロセサ402は、読み出し電圧コントロール405を制御して、読み出し電圧として、例えば、読み出し電圧602を用いて、先と同一のページからデータを読みだし、そのデータをビットカウンター404に転送し、データ中のビット値1(Level4に属するセルであって、ビット値「10」のデータが記録されたセルのビット値1)の個数(セルの個数)をカウントする。この処理を、以降、読み出し電圧603から読み出し電圧607に掛けて順に行う。
そして、となりの読み出し電圧との差分を求める。例えば、読み出し電圧601にて読み出したデータに含まれるビット値0の個数(セルの個数)と、読み出し電圧602にて読み出したデータに含まれるビット値0の個数(セルの個数)との差を計算する。この処理を読み出し電圧601から読み出し電圧607に掛けて順に行った例を図6(b)に示す。
図6(b)には、各読み出し電圧の変更内容620と、各読み出し電圧の変更により変化した対象ページのデータに含まれる0の個数621の変化を示している。2つの閾値電圧分布503、504を適切に分離する境界では、読み出し電圧を変更したことによる0の個数(セルの個数)が少なくなる。このため、図6(b)に示す値から、マイクロプロセサ402は、二つの閾値電圧分布503、504の適切な境界は、読み出し電圧603と読み出し電圧604との間にあると認識する。そして、この適切な境界は、一般にエラービットを軽減できる可能性の高い領域であるため、読み出し電圧603と読み出し電圧604との間の電圧が準最適な読み出し電圧であるので、本実施例のFM320は、この準最適な読み出し電圧を「最適読み出し電圧」として記す。この最適読み出し電圧は、各レベルを区分する読み出し電圧毎に設定することができ、各最適読み出し電圧を、それぞれ読み出し時のビット値の判定基準となる判定基準電圧として管理することができる。
この際、マイクロプロセサ402は、各セルから各セルの閾値電圧を読み出し、読み出した各セルの閾値電圧と、複数のレベル(Level)1〜4のうち相隣接する二つのレベルの少なくとも一方のレベルに属する電圧であって、最適読み出し電圧(判定基準電圧)の上下に亘って変更される複数の読み出し電圧(探索用読み出し電圧)601〜607とを順次比較し、読み出した各セルの閾値電圧が、各探索用読み出し電圧より小さい場合のビット値の個数を、各探索用読み出し電圧を変更する毎に算出し、各算出したビット値の個数が最小となる二つの探索用読み出し電圧を選出し、選出した二つの探索用読み出し電圧から新たな探索用読み出し電圧を生成し、生成した新たな探索用読み出し電圧といずれかの判定基準電圧との差が設定値から外れる場合、生成した新たな探索用読み出し電圧で、いずれかの判定基準電圧を変更することができる。
また、マイクロプロセサ402は、各セルから各セルの閾値電圧を読み出し、読み出した各セルの閾値電圧と、複数のレベル(Level)1〜4のうち相隣接する二つのレベルの少なくとも一方のレベルに属する電圧であって、各レベルを区分するための最適読み出し電圧(判定基準電圧)の上下に亘って設定された複数の読み出し電圧(探索用読み出し電圧)601〜607とを順次比較し、読み出した各セルの閾値電圧が、各読み出し電圧601〜607より小さ場合のセルの個数を読み出し電圧毎に算出し、算出したセルの個数が最小となる読み出し電圧、例えば、読み出し電圧604をレベル(Level)3・4間の境界を区分するための最適読み出し電圧(判定基準電圧)することができる。この際、例えば、読み出し電圧604と、各セルの閾値電圧を探索する前に設定された最適読み出し電圧(判定基準電圧)との差が設定値から外れる場合、各セルの閾値電圧を探索する前に設定された最適読み出し電圧(判定基準電圧)を、セルの個数が最小となる読み出し電圧604に変更することができる。なお、他のレベル間においても、同様の処理を行う。また、マイクロプロセサ402は、例えば、閾値電圧分布501〜504が、閾値電圧分布511〜514のように変化したことを検出した場合、検出した閾値電圧分布の変化に応じて、最適読み出し電圧(判定基準電圧)を変更することになる。
以上が、本実施例の最適読み出し電圧探索処理である。この処理によって、本実施例のFM320は、時間経過により閾値電圧が変化し最適読み出し電圧が変化しても、その値を探索できる。
(1−6)最適読み出し電圧を用いたリフレッシュ要否判定
本実施例は、FM320がNVMモジュールコントローラ310からの要求に従って、最適読み出し電圧探索を行い、リフレッシュの要否を判定し、NVMモジュールコントローラ310にその判断結果を通知するものである。この最適読み出し電圧を用いたリフレッシュ要否判定について以下に説明する。
本実施例は、FM320がNVMモジュールコントローラ310からの要求に従って、最適読み出し電圧探索を行い、リフレッシュの要否を判定し、NVMモジュールコントローラ310にその判断結果を通知するものである。この最適読み出し電圧を用いたリフレッシュ要否判定について以下に説明する。
リフレッシュは、リフレッシュ対象とした領域(一般には最小消去単位であるブロック)に格納されたデータ中に生じたエラービットがECCにより訂正可能な状態の間に、実施する必要がある。従って、リフレッシュ要否判定は、エラービットの個数を用いて判断するのが一般的である。しかし、本実施例では、FM320にECC訂正回路を搭載せずにリフレッシュ要否を判断可能とするために最適読み見出し電圧を用いる。
一般にFM320のセルに格納された電子は時間経過により流出する為、最適読み出し電圧は、図7に示すように時間経過に対して緩やかに下降する。図7は、本実施例における最適読み出し電圧の時間的推移を示す特性図である。また、図7に示すように閾値電圧の高いセルほど、セルに格納した電子の流出は早い為、レベルL3-L4(Level3-Level4)間の最適な読み出し電圧701は、レベルL1-L2(Level1-Level2)間の最適読み出し電圧703より短期間で大きく低下する。閾値電圧の高いセル群ほど閾値電圧の低下が早いため、あるレベルを目的として記録したセル群の閾値電圧分布は、閾値電圧が一つ下のレベルのセル群の閾値電圧分布と重なっていき、最適読み出し電圧を用いても削減できないエラービットが生じる。この最適読み出し電圧とエラービット数には相関関係があるため、事前評価にてリフレッシュの実施が必要なエラービット数に到達すると推定される最適読み出し電圧を調査しておき、この値を用いることで、最適読み出し電圧を用いたリフレッシュ要否判断が可能となる。
また、変更可能な読み出し電圧の範囲が制限されたFM320を利用する場合において、最適読み出し電圧を用いたリードが出来なくなると、エラービットが急激に増加し始めるため、最適読み出し電圧の制限値(例えば、下限値)に到達する前にリフレッシュを実施する必要がある。この場合、最適読み出し電圧の制限値にマージンを持たせた値をリフレッシュ判断基準として用いることで、最適読み出し電圧の範囲が制限されたFMにおいて、十分に信頼性を維持可能なリフレッシュ要否判断が可能となる。
以上で、最適読み出し電圧を用いたリフレッシュ要否判定について説明した。
(1−7)リフレッシュ要否判定要求コマンド
本実施例のNVMモジュール115は、NVMモジュールコントローラ310が各FMに記憶領域毎のリフレッシュ要否判定を依頼し、その応答に基づいてリフレッシュを実施する。図8は、このNVMモジュールコントローラ310から各FMに転送するリフレッシュ要否判定要求のコマンドを示している。
本実施例のNVMモジュール115は、NVMモジュールコントローラ310が各FMに記憶領域毎のリフレッシュ要否判定を依頼し、その応答に基づいてリフレッシュを実施する。図8は、このNVMモジュールコントローラ310から各FMに転送するリフレッシュ要否判定要求のコマンドを示している。
リフレッシュ要否判定要求コマンド800は、オペコード(OPCODE)801、ブロックアドレス(BLK_ADDRESS)802、ページ範囲(PAGE_RANGE)803、各レベル間(L1-L2、L2-L3、L3-L4)の最適読み出し電圧の上限(Upper_Limit)804、806、808、各レベル間(L1-L2、L2-L3、L3-L4)の最適読み出し電圧の下限(Lower_Limit)805、807、809の情報を有している。
オペコード801は、このコマンドが他のリード要求やライト要求のコマンドと異なり、リフレッシュ要否判定要求であることを通知するためのフィールドである。
ブロックアドレス802は、リフレッシュ要否判定の対象とするブロック420を通知するフィールドである。本実施例のNVMモジュールコントローラ310は、管理する全てのFM(FM320からFM328)のブロック420に対して定期的にリフレッシュ要否判定処理を実施する。このため、NVMモジュールコントローラ310は、このフィールドを用いてリフレッシュ要判定のブロック420を順に変更する。
ページ範囲803は、リフレッシュの要否判定として検査するページを指定するフィールドである。極めて高い信頼性が要求される装置であれば、このフィールドには、ブロック420の全ページを検査対象として指定する。一方で、こうした全ページの検査には時間がかかるので、ブロック420内の一部分を指定する事が望ましい場合もある。この場合、NVMモジュール115は、ブロック420内の一部のページのみを用いてブロック420全体のリフレッシュ要否を判断する。
各レベル間の最適読み出し電圧の上限804、806、808は、それぞれのレベル間にてリフレッシュが必要と判断される最適読み出し電圧(判定基準電圧)の上限値を指定するフィールドである。本実施例のFM320からFM328は、ブロックアドレス802にて指定されたブロック420内のページ範囲803にて指定されたページ毎に最適読み出し電圧探索を行い、ページ毎の最適読み出し電圧を得る。
この各ページの最適読み出し電圧の平均値が各レベル間の最適読み出し電圧の上限804、806、808に指定された値の何れかを上回った場合、各FMは、当該ブロック420のリフレッシュが必要と判断し、NVMモジュールコントローラ310に当該ブロック420のリフレッシュが必要という値を返送する。この基準により、リードディスターブ等の影響で閾値電圧が増加した場合に、適切なリフレッシュが可能となる。
各レベル間の最適読み出し電圧の下限805、807、809は、それぞれのレベル間にてリフレッシュが必要と判断される最適読み出し電圧(判定基準電圧)の下限値を指定するフィールドである。本実施例のFM320からFM328は、ブロックアドレス802にて指定されたブロック420内のページ範囲803にて指定されたページ毎に最適読み出し電圧探索を行い、ページ毎の最適読み出し電圧を得る。この各ページの最適読み出し電圧の平均値が各レベル間の最適読み出し電圧の下限804、806、808に指定された値の何れかを下回った場合、各FMは、当該ブロック420のリフレッシュが必要と判断し、NVMモジュールコントローラ310に当該ブロック420のリフレッシュが必要という値を返送する。この基準により、データ記録後の時間経過の影響で閾値電圧が増加した場合に、適切なリフレッシュが可能となる。
尚、各レベル間の最適読み出し電圧の上限値や下限値について、指定されたページ群におけるページの最適読み出し電圧の平均値を用いる例について記したが、本実施例はその例に限定されるものではない。例えば、検査対象とされたページ群におけるページの一つでも最適読み出し電圧の下限を超過した場合にリフレッシュが必要と判断するとしてもよい。
また本実施例では、MLCを対象とした例について記述したが、本発明はこの例について限定されるものではない。例えばTLC、QLC等において実施するとしてもよい。この場合、各レベル間の最適読み出し電圧の上限804、806、808、各レベル間の最適読み出し電圧の下限805、807、809の種類数は変化する。MLCは4つのレベル(Level1〜Level4)を区分するため3種の上限、下限を指定するフィールドを設けたが、TLCは、8つのレベル(Level1〜Level8)を区分する為7種の上限、下限を指定するフィールドを持つとしてもよい。
また、本実施例では、MLCの全ての読み出しで電圧について個別に上限、下限を指定するコマンドを用いるが、本発明はこの例に限定されるものではない。例えば、3種類の読み出し電圧が存在するMLCにおいて、レベルL2-L3の1種類の読み出し電圧しかリフレッシュ要否判定に用いないとしてもよい。また、レベルL1-L2,L2-L3,L3-L4の読み出し電圧の合計値を指定するとしてもよい。
また、本実施例では、ページ範囲803というフィールドで、ブロック420内の一部のページの連続した範囲を指定する例について記すが、本発明はこの例に限定されるものはない。例えば、要否判定対象とすべきページを離散的に格納するリストであってもよい。この場合、リフレッシュ要否判定要求コマンドのフィールドには、離散的なページ番号、例えば「1,4,7,10,13,16,30,33,36」等の要否判定に用いるページ番号が個別に格納される。
また、本実施例では、最適読み出し電圧のみを用いたリフレッシュ要否判定について記すが、本発明はこの例に限定されるものでない。FM内部にECC訂正回路を保有している場合には、FM内部にてデータを訂正し、エラービット個数を計量し、そのエラービット数を用いてリフレッシュ要否を判断するとしてもよい。この場合、リフレッシュ要否判定要求コマンド800内には、リフレッシュ基準となるエラービット数をしてするフィールドを含む。
以上、本実施例のFMが対応するフレッシュ要否判定要求コマンド800について説明した。
(1−8)NVMモジュールのリフレッシュ要否検査
続いて、本実施例におけるNVMモジュール115のリフレッシュ要否検査の処理フローについて図9を用いて説明する。本実施例のNVMモジュール115は図9に示すリフレッシュ要否検査を定期的に実行する。例えば、最低でも1日1度は実施する。または、上位のストレージ装置からのIO要求がない場合に優先的に実施する。
続いて、本実施例におけるNVMモジュール115のリフレッシュ要否検査の処理フローについて図9を用いて説明する。本実施例のNVMモジュール115は図9に示すリフレッシュ要否検査を定期的に実行する。例えば、最低でも1日1度は実施する。または、上位のストレージ装置からのIO要求がない場合に優先的に実施する。
NVMモジュール115のリフレッシュ要否検査の最初のステップS901は、NVMモジュール115内の組み込みプロセサ315がNVMモジュール115内の独自のブロック番号におけるリフレッシュ要否検査対象のブロック番号を0とするステップである。本実施例のNVMモジュール115は、内部に複数のFM(FM320からFM328)を搭載しており、各FMの各ブロック420にNVMモジュール115独自のブロック番号を割り当てて管理している。以降このブロック420の番号をNVMモジュール内ブロック番号と記す。
ステップS901より続くステップS902は、NVMモジュール115内の組み込みプロセサ315が、ステップS901にて取得したNVMモジュール内ブロック番号が示すFMのブロック420の管理情報を参照し、ブロック420の最終ページが記録された時刻を取得し、その値と現在時刻との差を計算して、ブロック420にデータが記録されてからの経過時間を算出し、取得するステップである。尚、本実施例のNVMモジュール115は、全てのブロック420について、全部のブロック420の最終ページを記録した時間を保持しており、データが記録されていない消去済みブロック420については、そのことを示すデータが格納されている。
ステップS902より続くステップS903は、ステップS902にて取得されたデータより、ステップS901にて取得したNVMモジュール内ブロック番号が示すブロック420がデータを記録中であるかを判定するステップである。データが記録されていないと判定したときには、ステップS909に遷移する。一方で、データ記録からの経過時間が正の値を示しており、データが記録されていると判定したときには、リフレッシュ要否判定を行う為にステップS904に遷移する。
ステップS903から続くステップS904は、ステップS902にて取得したブロックのデータ記録後の経過時間を用いて、「リフレッシュ要」と判断するための最適読み出し電圧を取得するステップである。本実施例のNVMモジュール115は、データを記録してからの経過時間毎に、「リフレッシュ要」と判断するための最適読み出し電圧の上限値及び下限値を変更する。一般に短期間で最適読み出し電圧が大きく変化するブロック420は危険であり、時間経過が長い場合には、例え大きく最適読み出し電圧が変化していても、時間経過に対して緩やかに変化していると判断し、より危険性が高まるまでリフレッシュをスキップする。この仕組みにより本実施例のNVMモジュール115は、不要なリフレッシュを抑制している。
尚、本発明はこの例に限定されるものでは無く、データ記録後の経過時間に対して、各FMが「リフレッシュ要」と判断するための最適読み出し電圧の上限値及び下限値を一定としてもよい。
ステップS904より続くステップS905は、NVMモジュール115の組み込みプロセサ315が各FMに対して、図8に示したリフレッシュ要否判定要求コマンド800を作成し、通知するステップである。通知を受けた各FMは、この後、各FM内におけるリフレッシュ要否判定処理を行う。この詳細については図10にて後述する。
ステップS905より続くステップS906は、NVMモジュール115の組み込みプロセサ315が、リフレッシュ要否判定処理の結果を各FMより取得するステップである。尚、本実施例のNVMモジュール115は、ステップS905を実施した後、リフレッシュ要否判定処理の結果を受領するまで、他の処理を実施していないように記しているが、本発明はこの例に限定されるものではない。例えば、NVMモジュール115は、ステップS905を行った後、各FMが内部でリフレッシュ要否判定処理を実施している為、結果を受領可能となるまで一定時間があり、この間にリードやライト等のコマンドの処理を実施するとしてもよい。また、一つのFMにリフレッシュ要否判定処理を要求した後、異なるFMにリフレッシュ要否判定処理を要求するとしてもよい。例えば、ステップS902からステップS908までの一連の処理を、搭載するFMの個数だけ並列に実行するとしてもよい。このように搭載するFMの個数だけ並行に実施することで、リフレッシュ要否検査を短期間で完了可能となる。
ステップS906より続くステップS907は、ステップS906にて取得したリフレッシュ要否判定要求コマンド800の結果として、ステップS901にて取得したNVMモジュール内ブロック番号が示すブロック420のリフレッシュ要否判定結果が「リフレッシュ要」であった場合に、リフレッシュを実施するためにステップS907に遷移する。一方で、ステップS901にて取得したNVMモジュール内ブロック番号が示すブロック420のリフレッシュ要否判定結果が「リフレッシュ要」でなかった場合には、ステップS909に遷移する。
ステップS907より続くステップS908は、リフレッシュの処理を実施するステップである。本実施例のNVMモジュール115におけるリフレッシュは一般的なものである。組み込みプロセサ315は、リフレッシュ対象のブロック420の有効ページ(NVMモジュールが上位装置提供する論理領域のデータが格納されているページ)からからデータを読み出し、読み出したデータ中に生じた全てのエラービットを、ECCを用いて訂正し、訂正後のデータをリフレッシュ対象ブロックとは異なる予備ブロックに記録する。この記録が終了した後、リフレッシュ対象ブロックを消去し、新たな予備ブロックとして管理する。
ステップS908、ステップS903及びステップS907より続くステップS909は、組み込みプロセサ315が、NVMモジュール内ブロック番号をインクリメントするステップである。
ステップS909より続くステップS910は、ステップS909にてインクリメントしたNVMモジュール内ブロック番号が、NVMモジュール115が管理する最終ブロック番号より大きいかを判断するステップである。ステップS909にて算出したブロック番号が最終ブロック番号より大きい場合、組み込みプロセサ315は、NVMモジュール115が管理する全ブロック420についてリフレッシュ要否検査を実施したと判断し、終了する。一方で、ステップS909にて算出したブロック番号が最終ブロック番号より小さい場合、次のブロック420に対してリフレッシュ要否検査を実施するためステップS902に遷移する。
以上で本実施例におけるNVMモジュール115が実施するリフレッシュ要否検査の処理フローについて説明した。
(1−9)FMのリフレッシュ要否判定処理
続いてFMのリフレッシュ要否判定処理について図10を用いて説明する。図10に示すFMのリフレッシュ要否判定処理は、図9に示したステップS905においてNVMモジュール115の組み込みプロセサ315が、図8にて示したリフレッシュ要否判定要求コマンド800を各FMに通知し、そのコマンドを各FMが受領したときに開始される。
続いてFMのリフレッシュ要否判定処理について図10を用いて説明する。図10に示すFMのリフレッシュ要否判定処理は、図9に示したステップS905においてNVMモジュール115の組み込みプロセサ315が、図8にて示したリフレッシュ要否判定要求コマンド800を各FMに通知し、そのコマンドを各FMが受領したときに開始される。
本実施例の各FMのリフレッシュ要否判定処理の最初ステップであるステップS1001は、各FM内のマイクロプロセサ402が、リフレッシュ要否判定要求コマンド800を受領してコマンド内のページ範囲803のフィールドの格納値を取得し、その値に記録されたページ番号の内、最も小さなページ番号を取得するステップである。
ステップS1001より続くステップS1002は、マイクロプロセサ402の各種制御により、リフレッシュ要否判定要求コマンド800のブロックアドレス802のフィールドに記載されたFM内のブロック番号とステップS1001にて取得したページ番号が示すページに対して前述の最適読み出し電圧探索を行うステップである。このとき、ステップS1001のページ番号示すページの種別、例えば、LSB(Least Significant Bit)、MSB(Most Significant Bit)等により、取得可能な最適読み出し電圧が異なる。本実施例のMLCタイプのFM、例えば、FM320において、ページ種別がLSBのページは、閾値電圧のLevel2-Level3の境界でのみ値が変わる為、最適読み出し電圧探索の結果、Level2-Level3の最適読み出し電圧のみが取得される。一方で、ページ種別がMSBのページは、閾値電圧のLevel1-Level2とLevel3-Level4の境界で値が変わる為、最適読み出し電圧の結果Level3-Level4の境界における最適読み出し電圧が取得できる。このとき、最適読み出し電圧を取得したマイクロプロセサ402は、その値を内部の記憶領域に格納し保持しておく。
ステップS1002より続くステップS1003では、最適読み出し電圧探索対象ページ番号インクリメントするステップである。本発明はリフレッシュ要否判定要求コマンド800にリフレッシュ要否探索ページの範囲(判定対象セルが属する探索ページの範囲)を連続ページで指定する例について記すが、仮に、リフレッシュ要否判定要求コマンド800のリフレッシュ要否探索ページの範囲に離散的なページ番号のリストが格納されている場合は、最適読み出し電圧探索対象ページ番号はインクリメントではなく、リストの次に記載されたページ番号を取得する処理となる。
ステップS1003より続くステップS1004は、ステップS1003にて取得した最適読み出し電圧探索対象ページ番号が、NVMモジュールコントローラ310より受領したリフレッシュ要否判定要求コマンド内のページ範囲803のフィールドの格納値より大きいかを判断するステップである。最適読み出し電圧探索対象ページ番号が、ページ範囲803のフィールドの格納値よりも大きい場合ステップS1005に遷移する。一方で、最適読み出し電圧探索対象ページ番号が、ページ範囲803のフィールドの格納値以下の場合、最適読み出し探索を行う為にステップS1002に遷移する。
ステップS1004より遷移するステップS1005は、ページ範囲803のフィールドに指定されたページ数だけ繰り返したステップS1002にて取得した最適読み出し電圧の値について、閾値電圧境界毎(Level1-Level2,Level2-Level3,Level3-Lever4)に平均値を算出するステップである。
ステップS1005より遷移するステップS1006は、ステップS1005にて算出した平均値が、NVMモジュールコントローラ310より受領したリフレッシュ要否判定要求コマンド内の最適読み出し電圧の上限値804、806、808及び下限値805、807、809のフィールドの格納値が示す範囲外にあるかを判定するステップである。本実施例の各FMにおいては、最適読み出し電圧の平均値が一つでも範囲外にある場合、リフレッシュが必要と判断し、ステップS1007に遷移する。一方で、各最適読み出し電圧の平均値の全てが、リフレッシュ要否判定要求コマンド800で指定された範囲内であるとき、対象ブロック420のリフレッシュは不要と判断し、ステップS1008に遷移する。
ステップS1006より遷移するステップS1007は、各FMがNVMモジュール115に、リフレッシュ要否判定要求コマンド800にて指定されたブロック420のリフレッシュが必要であることを通知するステップである。各FM内のマイクロプロセサ402は、NVMモジュール115のNVMモジュールコントローラ310にリフレッシュ要否判定要求コマンド800の応答として、「リフレッシュ要」ということを示す値を返す。
ステップS1006より遷移するステップS1008は、各FMがNVMモジュール115に、リフレッシュ要否判定要求コマンド800にて指定されたブロック420のリフレッシュが不要であることを通知するステップである。各FM内のマイクロプロセサ402は、NVMモジュール115のNVMモジュールコントローラ310にリフレッシュ要否判定要求コマンド800の応答として、「リフレッシュ不要」ということを示す値を返す。
以上で本実施例におけるリフレッシュ要否判定処理について説明した。本実施例のリフレッシュ要否判定処理はMLCのFMを用いた例について記したが、本発明はこの例に限定されるものでない。SLC、TLC、QLC等の如何なるFMであってもよい。
以上述べたとおり、本実施例では、NVMモジュール115は、内部で管理する全FMの記憶領域について、定期的にリフレッシュ要否判定処理を実施する。このリフレッシュ要否判定処理は、FM内でデータ転送が完結するために、NVMモジュールコントローラ310と各FMを繋ぐ転送経路に負荷を掛けない。このため、NVMモジュール115が高速に実施すべき上位装置からのリード・ライト要求により生じるデータ転送との競合率を軽減でき、NVMモジュール115の性能を安定させ、平均性能的な性能を向上できる。
また、リフレッシュ要否判定処理はFM単体で完結するため、NVMモジュール115は複数のFMに対して同時にリフレッシュ要否判定要求を通知し、リフレッシュ要否判定処理は、搭載するFMの個数だけ並列に実行できる。このため、単一のNVMモジュールコントローラ310がリフレッシュ要否判定処理を実施するより、高速に実施できる。結果、単一のNVMモジュールコントローラ310がリフレッシュ要否を判定するよりも高頻度にリフレッシュ要否判定が実施可能となり、NVMモジュール115の信頼性を向上できる。また、リフレッシュ要否判定を同一頻度とした場合、単一のNVMモジュールコントローラ310が管理できるFMチップの個数、即ち記憶容量を増加でき、NVMモジュール115の記憶容量密度を向上できる。
本実施例によれば、リフレッシュ要否の判断をFMチップ内の処理にて完結させることで、SSDに搭載する複数のFMにその処理を分散させ、またNVMモジュールコントローラ310とFM間のデータ転送量を削減できる為、ホストリクエストのリード・ライトにより生じたデータ転送との競合が軽減され、ホストリクエストに対する処理性能を向上できる。
また、リフレッシュ要否の判断を複数のFMにて分散して実施することで、短期間でリフレッシュ要否の判断を完了する事ができ、リフレッシュ要否の判断の実施頻度を向上でき、信頼性を向上できる。さらに、リフレッシュ要否の判断を複数のFMにて分散して実施することで、同一時間でより多くの領域に対してリフレッシュ要否の判断が可能となる為、揮発性メモリ記憶モジュールの容量を増加できる。
実施例1では、NVMモジュール内のNVMモジュールコントローラ310の組み込みプロセサ315が、各FM(FMチップ)に対してリフレッシュ要否判定を要求してきた。しかし、本発明はこの例に限定されるものではない。例えば、各FMが自発的にリフレッシュ要否を判定し、リフレッシュが必要と判断された際に、NVMモジュールコントローラ310の組み込みプロセサ315に割り込み通知するものでもよい。
実施例2では、FM(FMチップ)が自発的にその内部領域についてリフレッシュ要否を検査し、FM(FMチップ)に割り込みで通知するNVMモジュール115について説明する。尚、構成については実施例1と同等の為、省略する。
実施例2のNVMモジュール115は、装置起動時に搭載する全てのFM(FM320からFM328)に対してリフレッシュ条件設定コマンドを転送する。リフレッシュ条件設定コマンドは、図8に示したリフレッシュ要否判定要求コマンド800と同等の内容(条件設定コマンドでは、リフレッシュ要否判定対象のブロック420を指定するものでは無いため、ブロック番号802は含まない)である。
但し、実施例2のNVMモジュール115の組み込みプロセサ315は実施例1とは異なり、リフレッシュ要否判定用の条件を装置起動時に1度だけ初期設定として各FMに通知する。因みに実施例1では、データ記録毎の経過時間に応じてリフレッシュ要否判定条件を変更してきたが、実施例2は、リフレッシュ要否判定条件は、データ記録後の経過時間に応じて変更しない。
実施例2の各FM(FMチップ)は装置起動時の初期設定としてリフレッシュ要否判定条件を受領する。各FMは、このリフレッシュ要否判定条件を、NVMモジュール115が停止するまで保持しておき、以降、NVMモジュールコントローラ310内の組み込みプロセサ315からの指示(リフレッシュ要否判定要求)無しで、自律してFM(FMチップ)内の領域を検査し、リフレッシュ要否判定を行う。
実施例2の各FM(FMチップ)は、各FM(FMチップ)内の複数の記憶領域の中で、データが記録されているブロック420を管理しており、データが記録されているブロック420の全てを対象となるように逐次対象ブロックを変更しながら、図11に示すリフレッシュ要否判定処理を組み込みプロセサ315の指示無く繰り返し実施する。従って、図11のフローは、NVMモジュール115を構成する個々のFM(FMチップ)が、個々に実施する。
図11は、実施例2の各FMのマイクロプロセサ402が実施するリフレッシュ要否判定の制御フローである。
図11の最初のステップであるS1101では、各FM(FMチップ)がNVMモジュール起動時に組み込みプロセサ315より受領して以降保持しているリフレッシュ要否判定条件を参照し、最適読み出し電圧探索対象ページの番号を取得する。
ステップS1101より続くステップS1102からステップS1105までは、実施例1のステップS1002からステップS1005と同等の処理の為説明は省略する。実施例2では、NVMモジュール115を管理する組み込みプロセサ315からの指示無く、各FM(FMチップ)がリフレッシュ要否判定を行う為、ステップS1106にて各最適読み出し電圧の平均値の全てが、各FMが保持しているリフレッシュ要否判定条件の上限または下限の範囲内であるとき、組み込みプロセサ315には何も通知せずに終了となる。
一方で、S1106にて各最適読み出し電圧の平均値のいずれかが、各FMが保持しているリフレッシュ要否判定条件の上限または下限の範囲外であるとき、リフレッシュが必要と判断し、NVMモジュール115を管理するNVMモジュールコントローラ310の組み込みプロセサ315に通知する。この通知は、実施例2の場合、組み込みプロセサ315への割り込みとして通知するが、本発明はこの例に限定されるものではない。例えば、組み込みプロセサ315が定期的にポーリングする領域に、リフレッシュが必要なブロック番号を記録するとしてもよい。
以上で、実施例2の説明を終了する。実施例2によれば、NVMモジュール115を管理するNVMモジュールコントローラ310の組み込みプロセサ315が、複数のFM(FM320からFM328)に対してリフレッシュ要否判定コマンド800を通知する必要がないため、組み込みプロセサ315の負荷を実施例1と比べて軽減できる。このためNVMモジュール115の性能を向上できる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、プロセサ402とビットカウンター404及び読み出し電圧コントロール405を一体化することもできる。上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に記録して置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
100 ストレージ、102 サーバ、112 プロセサ、114 エクスパンダー、115 NVMモジュール、200 サーバ、212 プロセサ、310 NVMモジュールコントローラ、315 組み込みプロセサ、320〜328 FM、402 マイクロプロセサ、404 ビットカウンター、405 読み出し電圧コントロール、406 FMセルアレイ、410〜414 ページ、420 ブロック、800 リフレッシュ要否判定要求コマンド
Claims (13)
- セルを用いてデータを保持する複数のフラッシュメモリと、
前記複数のフラッシュメモリへのデータの入出力を管理するコントローラとを備え、
前記フラッシュメモリは、前記セルの電圧を測定してリフレッシュの要否を判定して前記コントローラへ報告し、
前記コントローラは、前記リフレッシュを実行すること
を特徴とするフラッシュメモリモジュール。 - 請求項1に記載のフラッシュメモリモジュールにおいて、
前記コントローラは、リフレッシュ要否判定要求コマンドを送信し、
前記フラッシュメモリは、前記リフレッシュ要否判定要求コマンドを受信した場合に、前記リフレッシュの要否を判定すること
を特徴とするフラッシュメモリモジュール。 - 請求項1に記載のフラッシュメモリモジュールにおいて、
前記コントローラは、前記リフレッシュの要否判定要求を送信し、
前記フラッシュメモリは、自発的に前記リフレッシュの要否を判定すること
を特徴とするフラッシュメモリモジュール。 - 請求項1に記載のフラッシュメモリモジュールにおいて、
前記フラッシュメモリは、前記セルの読み出し電圧値を調査し、前記読み出し電圧値が所定の範囲外の場合に、リフレッシュ要と判定すること
を特徴とするフラッシュメモリモジュール。 - 請求項1に記載のフラッシュメモリモジュールと、
複数の前記フラッシュメモリモジュールを制御するストレージコントローラと、
を備えたストレージシステム。 - セルを用いてデータを保持する複数のフラッシュメモリと、
前記複数のフラッシュメモリへのデータの入出力を管理するコントローラと、
リフレッシュの実行を制御するリフレッシュ実行部と、
前記セルの電圧に基づいて前記リフレッシュの要否を判定し、リフレッシュ要と判定された場合に、前記リフレッシュ実行部に報告を送信するリフレッシュ要否判定部と、
を備え、
前記リフレッシュ実行部は、前記リフレッシュ要否判定部から前記報告を受信した場合に、前記リフレッシュを行うこと
を特徴とするフラッシュメモリモジュール。 - 請求項6に記載のフラッシュメモリモジュールにおいて、
一のリフレッシュ実行部に対して、複数のリフレッシュ要否判定部が設けられていること
を特徴とするフラッシュメモリモジュール。 - 請求項7に記載のフラッシュメモリモジュールにおいて、
前記リフレッシュ実行部は、前記コントローラに設けられ、
前記リフレッシュ要否判定部は、前記フラッシュメモリに設けられること
を特徴とするフラッシュメモリモジュール。 - 電子を保持する複数のセルと、
前記複数のセルへのデータの入出力を制御するとともに、前記セルの電圧に基づいてリフレッシュの要否を判定するプロセッサと、を同一の半導体チップ上に形成したこと
を特徴とするフラッシュメモリ。 - 請求項9に記載のフラッシュメモリにおいて、
前記プロセッサは、前記リフレッシュを要と判断した場合に、前記フラッシュメモリが接続されるバスを介して、リフレッシュを行うコントローラに報告を行うこと
を特徴とするフラッシュメモリ。 - データを保持するセルを有する複数のフラッシュメモリと、前記複数のフラッシュメモリへのデータの入出力を管理するコントローラと、を備えたフラッシュメモリモジュールにおけるデータリフレッシュ方法において、
前記フラッシュメモリは、前記セルの電圧を測定してリフレッシュの要否を判定して前記コントローラへ報告し、
前記コントローラは、前記リフレッシュを実行すること
を特徴とするデータリフレッシュ方法。 - データを保持するセルを有する複数のフラッシュメモリと、前記複数のフラッシュメモリへのデータの入出力を管理するコントローラと、を備えたフラッシュメモリモジュールにおけるデータリフレッシュ方法において、
リフレッシュ要否判定部が、前記セルの電圧に基づいてリフレッシュの要否を判定し、リフレッシュ要と判定された場合に、前記リフレッシュ要の報告を送信し、
リフレッシュ実行部が、前記リフレッシュ要の報告を受信し、前記リフレッシュの実行を制御すること
を特徴とするデータリフレッシュ方法。 - データとして電子を保持する複数のセルを用いてデータを格納するフラッシュメモリにおけるデータリフレッシュ方法において、
前記複数のセルと、前記複数のセルへのデータの入出力を制御するとともに、前記セルの電圧に基づいてリフレッシュの要否を判定するプロセッサと、を同一の半導体チップ上に形成したこと
を特徴とするデータリフレッシュ方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017209424A JP2019083082A (ja) | 2017-10-30 | 2017-10-30 | フラッシュメモリモジュール及びフラッシュメモリ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017209424A JP2019083082A (ja) | 2017-10-30 | 2017-10-30 | フラッシュメモリモジュール及びフラッシュメモリ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019083082A true JP2019083082A (ja) | 2019-05-30 |
Family
ID=66670820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017209424A Pending JP2019083082A (ja) | 2017-10-30 | 2017-10-30 | フラッシュメモリモジュール及びフラッシュメモリ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2019083082A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110703993A (zh) * | 2019-09-20 | 2020-01-17 | 上海新储集成电路有限公司 | 一种用于短时非易失性存储器的数据刷新方法 |
-
2017
- 2017-10-30 JP JP2017209424A patent/JP2019083082A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110703993A (zh) * | 2019-09-20 | 2020-01-17 | 上海新储集成电路有限公司 | 一种用于短时非易失性存储器的数据刷新方法 |
CN110703993B (zh) * | 2019-09-20 | 2023-07-04 | 上海新储集成电路有限公司 | 一种用于短时非易失性存储器的数据刷新方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11586679B2 (en) | Proactive corrective actions in memory based on a probabilistic data structure | |
JP7121875B1 (ja) | パーシステントメモリシステム等のデータ完全性 | |
US9043517B1 (en) | Multipass programming in buffers implemented in non-volatile data storage systems | |
US10459793B2 (en) | Data reliability information in a non-volatile memory device | |
US9135112B2 (en) | Policy for read operations addressing on-the-fly decoding failure in non-volatile memory | |
US10777271B2 (en) | Method and apparatus for adjusting demarcation voltages based on cycle count metrics | |
JP2019520639A (ja) | インテグラルポストパッケージリペア | |
NL2029034B1 (en) | Adaptive internal memory error scrubbing and error handling | |
US10803972B2 (en) | Flash memory module, storage system, and method of controlling flash memory | |
US20180150233A1 (en) | Storage system | |
KR102310832B1 (ko) | 비동기식 독립 평면 판독 기능을 이용하여 저장 디바이스의 성능을 개선하기 위한 방법 및 시스템 | |
US10719248B2 (en) | Apparatuses and methods for counter update operations | |
EP4018315A1 (en) | Performing error control operation on memory component for garbage collection | |
JP2019128948A (ja) | 集積回路装置及びストレージ装置 | |
US20180059943A1 (en) | Media Controller and Method for Management of CPU-Attached Non-Volatile Memory | |
US11836377B2 (en) | Data transfer management within a memory device having multiple memory regions with different memory densities | |
JP2019083082A (ja) | フラッシュメモリモジュール及びフラッシュメモリ | |
US11688453B2 (en) | Memory device, memory system and operating method | |
US11868661B2 (en) | Row hammer attack alert | |
US11747994B2 (en) | Power loss protection of data in memory devices | |
US20230395121A1 (en) | Row hammer refresh operation | |
US20230409708A1 (en) | Progressive Detection and Response to Row Hammer Attack | |
US20230393932A1 (en) | Managing data integrity using a change in a number of data errors and an amount of time in which the change occurred | |
CN116909802A (zh) | 用于经分区存储系统的动态rain |