JP2018160065A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2018160065A JP2018160065A JP2017056573A JP2017056573A JP2018160065A JP 2018160065 A JP2018160065 A JP 2018160065A JP 2017056573 A JP2017056573 A JP 2017056573A JP 2017056573 A JP2017056573 A JP 2017056573A JP 2018160065 A JP2018160065 A JP 2018160065A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data
- interface circuit
- read
- memory controller
- 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
- 238000012937 correction Methods 0.000 claims abstract description 35
- 239000000872 buffer Substances 0.000 claims description 38
- 238000000034 method Methods 0.000 claims description 37
- 238000003745 diagnosis Methods 0.000 claims description 31
- 238000009826 distribution Methods 0.000 claims description 30
- 230000006870 function Effects 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 7
- 230000008672 reprogramming Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 13
- 238000012546 transfer Methods 0.000 description 13
- 230000008859 change Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000008054 signal transmission Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 238000002405 diagnostic procedure Methods 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
Images
Classifications
-
- 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/1068—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 sector programmable memories, e.g. flash disk
-
- 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/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/52—Protection of memory contents; Detection of errors in memory contents
-
- 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
- G11C2029/0409—Online test
-
- 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
- G11C2029/0411—Online error correction
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)
- Computer Security & Cryptography (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】メモリコントローラの負荷を低減すること。【解決手段】一つの実施形態によれば、メモリシステムは、不揮発性のメモリと、第1パッケージに封入されるメモリコントローラと、第1パッケージと異なる第2パッケージに封入されるメモリインタフェース回路とを備える。メモリコントローラは、誤り訂正のための符号化を行う符号化部を備え、ホストから受信したデータを符号化部によって符号化し、符号化されたデータをメモリにプログラムする。メモリインタフェース回路は、メモリとメモリコントローラとの間に介在する。メモリインタフェース回路は、誤り訂正のための復号化を行う復号化部を備える。メモリインタフェース回路は、メモリに格納されている符号化されたデータをリードし、リードされたデータを復号化部によって復号化することによってデータの診断を行い、診断結果をメモリコントローラに報告する。【選択図】図1
Description
本実施形態は、メモリシステムに関する。
NAND型フラッシュメモリのような半導体メモリを備えるストレージデバイスにおいては、メモリコントローラは、データの喪失を防止するために、半導体メモリに対し、種々のメンテナンス動作を実行する。メンテナンス動作としては、例えば格納されているデータの診断がある。メンテナンス動作のための処理量は、半導体メモリの容量の増加に応じて増大する傾向がある。
一つの実施形態は、メモリコントローラの負荷を低減したメモリシステムを得ることを目的とする。
一つの実施形態によれば、メモリシステムは、ホストに接続可能である。前記メモリシステムは、不揮発性のメモリと、第1パッケージに封入されるメモリコントローラと、前記第1パッケージと異なる第2パッケージに封入されるメモリインタフェース回路とを備える。前記メモリコントローラは、誤り訂正のための符号化を行う符号化部を備え、前記ホストから受信したデータである第1データを前記符号化部によって符号化し、符号化された第1データである第2データを前記メモリにプログラムする。前記メモリインタフェース回路は、前記メモリと前記メモリコントローラとの間に介在する。前記メモリインタフェース回路は、誤り訂正のための復号化を行う復号化部を備える。前記メモリインタフェース回路は、前記メモリに格納されている第2データである第3データを前記メモリからリードし、前記メモリからリードされた第3データである第4データを前記復号化部によって復号化することによって前記第4データの診断を行い、診断結果を前記メモリコントローラに報告する。
以下に添付図面を参照して、実施形態にかかるメモリシステムを詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態のメモリシステム100のパッケージ構成例を示すブロック図である。メモリシステム100は、プリント基板2a〜2cを備え、プリント基板2a〜2cは、メモリシステム100の外装を構成するハウジング1に収容されている。プリント基板2間はコネクタおよび/またはケーブル3で接続されている。
図1は、第1の実施形態のメモリシステム100のパッケージ構成例を示すブロック図である。メモリシステム100は、プリント基板2a〜2cを備え、プリント基板2a〜2cは、メモリシステム100の外装を構成するハウジング1に収容されている。プリント基板2間はコネクタおよび/またはケーブル3で接続されている。
プリント基板2aには、メモリコントローラ10がSoC(System-on-a-chip)として封入された第1パッケージ4が装着されている。また、プリント基板2bおよびプリント基板2cには、メモリインタフェース回路20が封入された第2パッケージ5と、それぞれ2つのメモリチップ30が封入された2つのNANDパッケージ6と、が装着されている。
また、ハウジング1は、ホスト200が接続されるコネクタ8を備え、コネクタ8は第1パッケージ4とホストインタフェース7で接続されている。
このように、第1の実施形態では、メモリシステム100は、メモリコントローラ10と各メモリインタフェース回路20とがそれぞれ異なるパッケージに封入されている。なお、図2に例示されるように、メモリインタフェース回路20と、複数のメモリチップ30とが同一の第2パッケージ5に封入されてもよい。
図3は、第1の実施形態のメモリシステム100の要素間の配線例といくつかの要素の内部構成例とを示すブロック図である。メモリシステム100は、ホスト200に接続され、ホスト200の外部記憶装置として機能する。ホスト200は、例えば、パーソナルコンピュータなどの情報処理装置、携帯電話、撮像装置であってもよいし、タブレットコンピュータまたはスマートフォンなどの携帯端末であってもよいし、ゲーム機器であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
メモリコントローラ10は、ホスト200に接続され、ホスト200と8つのメモリチップ30との間のデータ転送を制御する。各メモリインタフェース回路20は、ホスト200に接続されるホストインタフェースを有していない。各メモリインタフェース回路20は、メモリコントローラ10といくつかのメモリチップ30との間に介在し、メモリコントローラ10がデータ転送の相手のメモリチップ30を制御するための各種コマンド(後述のリードコマンド、ライトコマンド、イレースコマンド)および転送データの中継を実行することができる。ここでは、各メモリインタフェース回路20は、同一のプリント基板2に装着された2つのNANDパッケージ6に含まれる4つのメモリチップ30と接続される。即ち、各メモリインタフェース回路20には、4つのメモリチップ30が接続されている。なお、各メモリインタフェース回路20に接続されるメモリチップ30の数はこれに限定されない。メモリシステム100が備えるメモリチップ30を、NANDメモリ40と総称することがある。
各メモリインタフェース回路20は、各種情報の中継にあたっては、電気的な信号の伝達元および伝達先の選択、電気信号の増幅などを実行し得る。
なお、メモリコントローラ10とメモリインタフェース回路20の間のインタフェースと、メモリインタフェース回路20とメモリチップ30の間のインタフェースとに、互換性のある接続方式が採用され得る。接続方式とは、コネクタの形状および信号のプロトコルを含む。メモリコントローラ10とメモリインタフェース回路20の間のインタフェースと、メモリインタフェース回路20とメモリチップ30の間のインタフェースとに、互換性のある接続方式が採用される場合、メモリシステム100からメモリインタフェース回路20を省き、メモリコントローラ10と各メモリチップ30とを直接に接続する構成が採用可能となる。メモリインタフェース回路20を介さずに、メモリコントローラ10とメモリチップ30とを直接に接続したとしても、メモリシステム100は動作可能である。即ち、メモリコントローラ10は、各メモリチップ30に対し、直接に各種コマンドを送信する。また、メモリコントローラ10は、各メモリチップ30との間で、直接に、データの送受信を実行する。メモリコントローラ10とメモリインタフェース回路20の間のインタフェースと、メモリインタフェース回路20とメモリチップ30の間のインタフェースとに、互換性のある接続方式が採用されることによって、メモリインタフェース回路20の有無によってメモリコントローラ10およびメモリチップ30の構成を変更することが不要となる。
なお、メモリコントローラ10とメモリインタフェース回路20の間のインタフェースとして、高速なシリアルインタフェースを採用し、メモリインタフェース回路20とメモリチップ30の間のインタフェースとして、より簡易なパラレルインタフェースを採用することも可能である。その場合には、メモリコントローラ10側のピン数を低減することが可能である。
以降、あるメモリインタフェース回路20に接続されているメモリチップ30を、そのメモリインタフェース回路20の配下のメモリチップ30、と表現することがある。
メモリコントローラ10とメモリチップ30との間にメモリインタフェース回路20が介在することにより、メモリコントローラ10とメモリチップ30との間の配線の長さが長くなったとしても信号品質の低下が抑制できる。また、メモリコントローラ10とメモリチップ30との間の配線を長くすることが可能であるので、メモリシステム100に搭載可能なメモリチップ30の数を多くすることが可能である。
また、信号線あたりに接続されるメモリチップ30の数を少なくすることができるため、負荷容量が低減される。また、信号線の分岐が削減される。これらによって、信号品質が改善され、ひいては、信号伝達の高速化および低消費電力化などを実現することが可能である。
また、各メモリインタフェース回路20が複数のメモリチップ30に接続されることから、メモリコントローラ10のメモリチップ30側の接続ピンの数を抑制しながらメモリシステム100に搭載可能なメモリチップ30の数を多くすることが可能である。
なお、メモリインタフェース回路20と4つのメモリチップ30のそれぞれとを接続する接続線は、分岐を有していてもよいし、分岐を有していなくてもよい。
一例では、メモリインタフェース回路20は、4つのバスを備え、各バスには4つのメモリチップ30のいずれかが接続される。即ち、メモリインタフェース回路20と4つのメモリチップ30のそれぞれは、それぞれ異なるバスによって1対1に接続される。
別の例では、メモリインタフェース回路20は、1つのバスを備え、バスは4つに分岐する。そして、分岐した4つの端部のそれぞれに、4つのメモリチップ30のいずれかが接続される。バスは、プリント基板2bまたはプリント基板2c上で分岐してもよいし、NANDパッケージ6内で分岐してもよい。
各メモリチップ30は、不揮発性のメモリであり、一例では、NAND型フラッシュメモリである。不揮発性のメモリとしては、NAND型フラッシュメモリに限らず、3次元構造フラッシュメモリ、ReRAM(Resistance Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)などであってもよい。
各メモリチップ30は、メモリセルアレイを有する。メモリセルアレイは、マトリクス状に配列された複数のメモリセルを有する。メモリセルアレイは、データ消去の単位であるブロックを複数個有する。各ブロックは、複数のメモリセルグループMG(図5、図6参照)により構成されている。
図4は、各メモリチップ30の内部構成例を示す図である。メモリチップ30は、I/O部31、NAND制御部32、メモリセルアレイ33、ロウデコーダ34、センスアンプ35、ページバッファ36およびカラムデコーダ37を備える。I/O部31、NAND制御部32、ロウデコーダ34、センスアンプ35、ページバッファ36およびカラムデコーダ37は周辺回路を構成する。周辺回路は、メモリチップ30の外部から供給されるコマンドに従って、メモリセルアレイ33に対するアクセス(リード、プログラム、イレース)を実行する。
I/O部31は、メモリコントローラ10等の外部の機器との間の入出力を制御する。I/O部31は、コマンドを受信した場合、当該コマンドをNAND制御部32へ入力する。NAND制御部32は、I/O部31から入力されたコマンド等に基づいて、メモリチップ30の動作を制御する。具体的には、ライトコマンドが入力された場合、ライトコマンドによって要求されたデータをメモリセルアレイ33上の指定された領域へ書き込む制御を実行する。また、NAND制御部32は、リードコマンドが入力された場合、リードコマンドによって要求されたデータをメモリセルアレイ33から読み出す制御を実行する。メモリセルアレイ33から読み出されたデータはページバッファ36に格納される。NAND制御部32は、ページバッファ36に格納されたデータをメモリコンローラ10へ出力する。
本実施の形態で前提とするメモリセルアレイ33の構成に特に制約はなく、図5に示すような2次元構造のメモリセルアレイであってもよく、図6に示すような3次元構造のメモリセルアレイであってもよく、さらにはこれら以外であってもよい。
図5は、2次元構造のメモリセルアレイのブロックの構成例を示す図である。図5は、2次元構造のメモリセルアレイを構成する複数のブロックのうちの1つのブロックを示している。メモリセルアレイの他のブロックも図5と同様の構成を有する。図5に示すように、メモリセルアレイのブロックBLKは、(m+1)個(mは0以上の整数)のNANDストリングNSを備えている。各NANDストリングNSは、隣接するメモリセルトランジスタMT間で拡散領域(ソース領域またはドレイン領域)を共有して直列に接続された(n+1)個(nは0以上の整数)のメモリセルトランジスタMT0〜MTnと、この(n+1)個のメモリセルトランジスタMT0〜MTnの列の両端に配置される選択トランジスタST1,ST2と、を有する。
NANDストリングNSを構成するメモリセルトランジスタMT0〜MTnの制御ゲート電極には、それぞれワード線WL0〜WLnが接続されており、また各NANDストリングNS中のメモリセルトランジスタMTi(i=0〜n)間は、同一のワード線WLi(i=0〜n)によって共通接続されている。すなわち、ブロックBLK内において同一行にあるメモリセルトランジスタMTiの制御ゲート電極は、同一のワード線WLiに接続される。
各メモリセルトランジスタMT0〜MTnは、半導体基板上に形成された積層ゲート構造を有する電界効果型トランジスタから構成される。ここで、積層ゲート構造には、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層(浮遊ゲート電極)と、この電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲート電極と、が含まれる。メモリセルトランジスタMT0〜MTnは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記憶することができる。
1つのブロックBLK内の(m+1)個の選択トランジスタST1のドレインにはそれぞれビット線BL0〜BLmが接続され、ゲートには選択ゲート線SGDが共通接続されている。また、選択トランジスタST1のソースはメモリセルトランジスタMT0のドレインと接続されている。同様に、1つのブロックBLK内の(m+1)個の選択トランジスタST2のソースにはソース線SLが共通接続され、ゲートには選択ゲート線SGSが共通接続されている。また、選択トランジスタST2のドレインはメモリセルトランジスタMTnのソースと接続されている。
各メモリセルはワード線に接続されるとともにビット線にも間接的に接続される。各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別可能である。上述した通り、同一のブロックBLK内にあるメモリセル(メモリセルトランジスタMT)のデータは、一括して消去される。一方、データの読み出し及び書き込みは、メモリセルグループMG単位で行われる。1メモリセルグループMGは、1つのワード線に接続された複数のメモリセルを含む。
リード動作及びプログラム動作時において、物理アドレスに応じて、1本のワード線が選択され、1メモリセルグループMGが選択される。このメモリセルグループMG内のページの切り替えは物理アドレスによって行われる。
図6は、3次元構造のメモリセルアレイのブロックの構成例を示す図である。図6は、3次元構造のメモリセルアレイを構成する複数のブロックのうちの1つのブロックBLKを示している。メモリセルアレイの他のブロックも図6と同様の構成を有する。
図示するように、ブロックBLKは例えば4つのフィンガーFNG(FNG0〜FNG3)を含む。また各々のフィンガーFNGは、複数のNANDストリングNSを含む。NANDストリングNSの各々は、例えば8個のメモリセルトランジスタMT(MT0〜MT7)と、選択トランジスタST1,ST2とを含む。なお、メモリセルトランジスタMTの個数は8個に限られない。メモリセルトランジスタMTは、選択トランジスタST1、ST2間に、その電流経路が直列接続されるようにして配置されている。この直列接続の一端側のメモリセルトランジスタMT7の電流経路は選択トランジスタST1の電流経路の一端に接続され、他端側のメモリセルトランジスタMT0の電流経路は選択トランジスタST2の電流経路の一端に接続されている。
フィンガーFNG0〜FNG3の各々の選択トランジスタST1のゲートは、それぞれセレクトゲート線SGD0〜SGD3に共通接続される。他方で、選択トランジスタST2のゲートは、複数のフィンガーFNG間で同一のセレクトゲート線SGSに共通接続される。また、同一のブロックBLK内にあるメモリセルトランジスタMT0〜MT7の制御ゲートはそれぞれワード線WL0〜WL7に共通接続される。すなわち、ワード線WL0〜WL7及びセレクトゲート線SGSは同一ブロックBLK内の複数のフィンガーFNG0〜FNG3間で共通に接続されているのに対し、セレクトゲート線SGDは、同一ブロックBLK内であってもフィンガーFNG0〜FNG3毎に独立している。
NANDストリングNSを構成するメモリセルトランジスタMT0〜MT7の制御ゲート電極には、それぞれワード線WL0〜WL7が接続されており、また各NANDストリングNS中のメモリセルトランジスタMTi(i=0〜n)間は、同一のワード線WLi(i=0〜n)によって共通接続されている。すなわち、ブロックBLK内において同一行にあるメモリセルトランジスタMTiの制御ゲート電極は、同一のワード線WLiに接続される。
各メモリセルはワード線に接続されるとともにビット線にも間接的に接続される。各メモリセルは、ワード線およびセレクトゲート線SGD0〜SGD3を識別するアドレスとビット線を識別するアドレスとで識別可能である。上述した通り、同一のブロックBLK内にあるメモリセル(メモリセルトランジスタMT)のデータは、一括して消去される。一方、データの読み出し及び書き込みは、メモリセルグループMG単位で行われる。1メモリセルグループMGは、1つのワード線WLに接続され、かつ1つのフィンガーFNGに属する複数のメモリセルを含む。
リード動作及びプログラム動作時において、物理アドレスに応じて、1本のワード線WLおよび1本のセレクトゲート線SGDが選択され、メモリセルグループMGが選択される。
2次元構造のメモリセルアレイおよび3次元構造のメモリセルアレイにおいて、各メモリセルは多値記憶が可能である。メモリセルをシングルレベルセル(SLC)モードで動作させる場合は、1メモリセルグループMGが1ページに対応する。メモリセルをマルチレベルセル(MLC)モードで動作させる場合は、1メモリセルグループMGがNページ(Nは2以上の自然数)に対応する。
図7は、4値データ(データ“11”、“01”、“00”、“11”)を記憶できる4値メモリセル(2 bit/cell)の閾値電圧の分布を示している。横軸は閾値電圧を示している。縦軸はメモリセル数を示している。データを“xy”と表記した場合、xは上位ページデータを、yは下位ページデータを表している。以降の説明では、図7における閾値電圧が低い左側の分布の山から閾値電圧が高い右側の分布の山に向かって、E山、A山、B山、C山と呼ぶ。図7では、データ“11”の閾値電圧分布がE山に対応し、データ“01”の閾値電圧分布がA山に対応し、データ“00”の閾値電圧分布がB山に対応し、データ“10”の閾値電圧分布がC山に対応している。各山と、4値データとの対応は任意であり、例えばE山、A山、B山、C山と、データ“11”、“10”、“00”、“01”とが対応するようにしてもよい。
つぎに、メモリチップ30における4値データのプログラム処理について説明する。E山は、ブロック消去後のメモリセルの閾値電圧分布に対応し、データ“11”が割り当てられる。下位ページデータの値に応じて、すなわち下位ページデータの値が“0”のメモリセルに接続される選択ワード線にプログラム電圧Vprgを印加し、同メモリセルに接続される選択ビット線に例えば0Vを印加する。具体的には、センスアンプ35は、カラムデコーダ37により選択されたビット線の電位を0Vとする。ロウデコーダ34は、選択ワード線にプログラム電圧(プログラミングパルス)Vprgを印加する。すると、選択されたビット線および選択されたワード線との交点に位置するメモリセルの浮遊ゲートの閾値電圧が上昇する。センスアンプ35は、プログラミングパルスが印加される毎に、閾値電圧がページバッファ36に格納されているデータに応じたベリファイ電圧に到達したか否かを確認する。センスアンプ35は、閾値電圧がデータに応じたベリファイ電圧に到達するまで、ロウデコーダ34にプログラムパルスの印加を継続させる。このようにして、下位ページデータの値が“0”であるメモリセルの閾値電圧が所定のベリファイ電圧以上となるまでプログラム動作が繰り返される。
この後、データ“11”のメモリセルに対しては、メモリセルに高電圧がかからないようにし、メモリセルの閾値電圧Vthの上昇を防止する。例えば、データ“11”のメモリセルに対しては、他のデータ“01”、“00”、“10”のメモリセルに対するプログラム動作のときに、データ“11”のメモリセルに接続されるビット線に、書き込み禁止電圧Vddを印加し、選択トランジスタST1をオフにする。
データ“01”のメモリセルに対しては、所定のベリファイ電位VAVが設定され、このメモリセルの閾値電圧がベリファイ電圧VAV以上となるまで前記プログラム動作が繰り返される。
データ“00”のメモリセルに対しては、所定のベリファイ電位VBVが設定され、このメモリセルの閾値電圧がベリファイ電圧VBV以上となるまで前記プログラム動作が繰り返される。データ“10”のメモリセルに対しては、所定のベリファイ電位VCVが設定され、このメモリセルの閾値電圧がベリファイ電圧VCV以上となるまで前記プログラム動作が繰り返される。3ビット以上の多ビット記憶方式においても、上記の動作に更に上位のページデータに応じ、閾値電圧分布を8通り以上に分割する動作が加わるのみであるので、基本的な動作は同様である。
つぎに、メモリチップ30における4値データのリード処理について説明する。リード時においては、センスアンプ35は、ビット線BLに電源電位Vccをプリチャージし、ロウデコーダ34は、選択されたワード線WLに、各山の間に設定された読み出し電圧VAr、VBr、VCrを順次印加する。なお、ロウデコーダ34は、非選択のワード線WLには転送電位を印加し、非選択のワード線WLに属するメモリセルを導通状態にしておく。センスアンプ35は、プリチャージにより蓄えられた電荷がどの読み出し電位が印加されたときにソース線SLに流出したかを検知することによって対象のメモリセルに記憶されているデータを判定する。
例えば、図7に示したように、E山とA山との間に読み出し電圧VArが設定され、A山とB山との間に読み出し電圧VBrが設定され、B山とC山との間に読み出し電圧VCrが設定される。
下位ページが読み出し対象である場合においては、読み出し電圧VBrが判定に用いられる。センスアンプ35は、読み出し電圧VBrが印加された場合にソース線SLに電流を検出したとき、対象のメモリセルはデータ“1”を記憶していると判定する。また、センスアンプ35は、読み出し電圧VBrが印加された場合にソース線SLに電流を検出しなかったとき、対象のメモリセルはデータ“0”を記憶していると判定する。
上位ページが読み出し対象である場合においては、読み出し電圧VArおよび読み出し電圧VCrが判定に用いられる。センスアンプ35は、読み出し電圧VArが印加された場合に電流を検出したとき、または、読み出し電圧VCrが印加された場合に電流を検出したとき、対象のメモリセルはデータ“1”を記憶していると判定する。センスアンプ35は、読み出し電圧VArが印加された場合に電流を検出し、かつ、読み出し電圧VCrが印加された場合に電流を検出しなかったとき、対象のメモリセルはデータ“0”を記憶していると判定する。
図3に説明を戻す。前述したように、メモリコントローラ10は、ホスト200とNANDメモリ40との間のデータ転送を制御する。
メモリコントローラ10は、ホスト200から要求されたデータをNANDメモリ40から読み出す際には、リードコマンドをNANDメモリ40側に送信する。メモリコントローラ10は、ホスト200から指定された論理アドレスにマッピングされた位置を求め、求めた位置をリード位置として設定する。当該リードコマンドはどちらかのメモリインタフェース回路20を介して宛先のメモリチップ30に送られる。リードコマンドを受信したメモリチップ30では、データがメモリセルアレイ33から読み出される。読み出されたデータは、メモリインタフェース回路20を介してメモリコントローラ10側に送られる。
メモリコントローラ10は、ホスト200から受信したデータをNANDメモリ40に転送する際には、当該データとプログラムコマンドとをNANDメモリ40側に送信する。当該データと当該プログラムコマンドとは、どちらかのメモリインタフェース回路20を介して宛先のメモリチップ30に送られる。
メモリコントローラ10は、データをNANDメモリ40に送る際、空き領域からプログラム位置を決定する。空き領域とは、いずれのデータもプログラムされていない領域であり、新たなデータのプログラムが可能な領域である。メモリコントローラ10は、当該データの位置を示す論理アドレスに、決定されたプログラム位置をマッピングする。
ここで、当該データ(新しいデータ)の位置を示す論理アドレスに別のデータ(古いデータ)のプログラム位置がマッピングされていた場合、マッピングの更新により、当該古いデータのプログラム位置は、いずれの論理アドレスもマッピングされていない状態となる。その結果、ホスト200は、新しいデータをメモリシステム100からリードすることが可能であるが、古いデータをリードすることができなくなる。論理アドレスにマッピングされている位置に格納されているデータを、有効なデータと表記する。論理アドレスにマッピングされていない位置に格納されているデータを、無効なデータと表記する。
空き領域を有するブロックが枯渇した場合、メモリコントローラ10は、無効なデータをイレースすることによって、空き領域を有するブロックを生成する。1つのブロックに記憶される全てのデータが無効であることは稀であるため、実際には、メモリコントローラ10は、ブロック内に残っている有効なデータを別のブロックに転記(コピー)し、その後、転記元のブロックに記憶される全てのデータをイレースする。この有効なデータを転記するプロセスは、ガベージコレクションと呼ばれる。有効なデータの転記によって有効なデータを全く含まなくなったブロックは、フリーブロックと呼ばれる。
ガベージコレクションでは、NANDメモリ40からメモリコントローラ10にデータが読み出され、その後、そのデータは、メモリコントローラ10からNANDメモリ40に送られる。よって、メモリコントローラ10は、ガベージコレクションの際には、ホスト200とNANDメモリ40とのデータ転送の際と同様に、リードコマンドを送信したりプログラムコマンドを送信したりする。
メモリコントローラ10は、フリーブロックに格納されているデータをイレースするためのイレースコマンドを送信することができる。イレースコマンドは、メモリインタフェース回路20によって対象のメモリチップ30に転送される。
メモリコントローラ10は、プロセッサ11、RAM12、ECCエンコーダ13、およびECCデコーダ14を備える。本実施形態は、RAM12をメモリコントローラ10の内部に設けているが、RAM12をメモリコントローラ10の外部に設けてもよい。
プロセッサ11は、ファームウェアプログラムに基づき、ホスト200からの各種要求の受信および解釈、論理アドレスと物理アドレスとの間のマッピングの更新と維持、各種コマンドの生成などを行うことによって、ホスト200とNANDメモリ40との間のデータ転送およびガベージコレクションを実現する。
RAM12は、各種バッファとして機能し得る。例えば、RAM12は、ホスト200とNANDメモリ40との間のデータ転送のバッファとして使用され得る。別の例では、ガベージコレクションにおいて、NANDメモリ40からリードされた有効なデータがNANDメモリ40にプログラムされるまでの間、RAM12に一時的に保持される。
また、RAM12は、プロセッサ11のワークエリアとして機能し得る。例えば、論理アドレスと物理アドレスとのマッピングを管理する翻訳情報がRAM12にキャッシュされる。プロセッサ11は、RAM12にキャッシュされた翻訳情報を更新し、更新された翻訳情報を所定のタイミングでNANDメモリ40に不揮発化する。別の例では、ファームウェアプログラムは、NANDメモリ40に予め格納されており、メモリシステム100の起動時に、ファームウェアプログラムがNANDメモリ40からRAM12にロードされる。プロセッサ11は、RAM12にロードされたファームウェアプログラムを実行することによって、各種機能を実現する。
ECCエンコーダ13は、NANDメモリ40に送られるデータに対して、誤り訂正のための符号化を実行するものである。NANDメモリ40には、符号化されたデータが格納される。ECCエンコーダ13による符号化の方式としては、任意の方式が採用可能である。例えば、RS(Reed Solomon)符号化、BCH(Bose Chaudhuri Hocquenghem)符号化、LDPC(Low Density Parity Check)符号化等を用いることができる。
ECCデコーダ14は、ECCエンコーダ13によって符号化されたデータに対し、復号化を実行するものである。ECCデコーダ14は、NANDメモリ40から送られてきたデータの復号化を実行することによって、誤り訂正を実行する。ECCデコーダ14は、復号化によって検出された誤りの程度を、プロセッサ11に報告する。前記誤りの程度は、例えば、エラービット数、エラービット率、誤り訂正回数、訂正成功の旨、または訂正失敗の旨である。
エラービット数は、例えば、所定単位のデータ中のエラービットの個数である。エラービット率は、例えば、所定単位のデータ中のエラービットの割合である。誤り訂正回数は、誤り訂正に成功するまでに誤り訂正処理を行った回数である。
なお、メモリコントローラ10は、ECCデコーダ14よりも誤り訂正能力が強力な符号化/復号化手段をさらに備え得る。メモリコントローラ10は、ECCデコーダ14が誤り訂正に失敗した場合に、当該符号化/復号化手段によって誤り訂正を実行し得る。
NANDメモリ40では、データリテンション誤り、リードディスターブ誤り、プログラムディスターブ不良等の誤り要因がある。これらの誤り要因により、メモリセルの電荷量が変化する。その結果、メモリセルの閾値電圧分布が変化する。例えばデータリテンション誤りの場合、メモリセルの閾値電圧分布は、図8の破線で示すように変化する。このように閾値電圧分布が変化すると、設定された読み出し電圧VAr、VBr、VCrでは、正しくデータを識別できないセルの数が増加する。なお、以下では、上記した誤り要因によって閾値電圧が許容範囲外であって、データを正しく識別できないメモリセルをエラーセルと呼称する。許容範囲外であるメモリセルとは、例えば、データ“10”を書き込んだメモリセルのうち読み出し電圧VCrより小さい閾値電圧を持つメモリセル、データ“00”を書き込んだメモリセルのうち読み出し電圧VBrより小さい閾値電圧を持つメモリセル、データ“01”を書き込んだメモリセルのうち読み出し電圧VArより小さい閾値電圧を持つメモリセルである。
NANDメモリ40では、このようなエラーセルは、時間の経過とともに増える。エラーセルの個数が少ない間は、ECCデコーダ14での誤り訂正処理によってデータを復元することが出来る。しかし、ある程度以上エラーセルの個数が増えると、ECCデコーダ14による復号化ではデータを復元できなくなる。
このため、メモリシステム100では、パトロールリードが実行される。パトロールリードとは、各ブロックに格納されている各データを試行的にリードすることによって、復元できなくなる可能性があるデータを検出する処理である。復元できなくなる可能性があるデータが検出されると、メモリシステム100は、当該データの書き直し(リフレッシュ)を実行する。
仮にメモリコントローラ10がパトロールリードを実行する場合、リードされたデータが逐次メモリコントローラ10に送られ、ECCデコーダ14において逐次復号化処理が実行される。よって、メモリコントローラ10と各メモリチップ30との間で、情報(リードコマンド、およびリードされたデータ)の授受が発生する。メモリコントローラ10に接続されるメモリチップ30の数が多いほど、授受される情報の量が多くなり、メモリコントローラ10にかかる負荷が増大する。
そこで、第1の実施形態においては、各メモリインタフェース回路20は、配下の各メモリチップ30に対し、パトロールリードを実行する。これにより、パトロールリードを構成する情報の授受を、メモリチップ30とメモリインタフェース回路20との間だけで閉じることができるので、メモリコントローラ10にかかる負荷が低減される。
各メモリインタフェース回路20は、パトロールリードを実行するために、シーケンサ21とECCデコーダ22とを備える。
シーケンサ21は、シンプルなプロセッサと小規模なメモリとを備えるマイクロコンピュータユニットである。シーケンサ21は、当該プロセッサにおいて、当該メモリに内蔵するプログラムに基づき、パトロールリードに関する決められた動作を実行する。シーケンサ21は、ハードウェア回路によって構成されてもよい。
ECCデコーダ22は、ECCエンコーダ13によって符号化されたデータに対して復号化を実行するものである。パトロールリード時に、ECCデコーダ22は、NANDメモリ40から送られてきたデータに対して復号化を実行することによって、誤り訂正を実行する。ECCデコーダ22は、復号化によって検出された誤りの程度を、シーケンサ21に報告する。
なお、各メモリインタフェース回路20は、データを符号化するためのエンコーダを有さない。
次に、第1の実施形態のメモリシステム100の動作を説明する。図9は、第1の実施形態のメモリシステム100の動作を説明するシーケンス図である。
メモリコントローラ10は、まず、パトロール指示をメモリインタフェース回路20に送信する(S101)。パトロール指示は、プロセッサ11によって生成される。パトロール指示の送信タイミングは、特定のタイミングに限定されない。
パトロール指示は、パトロールリードの範囲を指定する物理アドレスを含む。パトロールリードの範囲は、ブロック単位で設定されてもよいし、メモリチップ30単位で設定されてもよい。
なお、パトロールリードの範囲は、指定されなくてもよい。シーケンサ21は、そのシーケンサ21を備えるメモリインタフェース回路20の配下の全てのメモリチップ30の記憶領域をパトロールリードの範囲と見なしてもよい。
また、パトロール指示は、任意の設定情報を含み得る。例えば、各メモリチップ30が、読み出し電圧(読み出し電圧VAr、VBr、VCr)の設定が可能に構成される場合、設定情報に、読み出し電圧の設定値が含まれていてもよい。シーケンサ21は、リード動作の際の読み出し電圧として、パトロールリードの対象のメモリチップ30に、設定情報に含まれていた設定値を使用させることができる。なお、この設定情報は、パトロール指示毎に通知されなくてもよい。メモリインタフェース回路20は、一度受信した設定情報をシーケンサ21内に保持し、以降、シーケンサ21内に記憶された設定情報を使用してもよい。
別の例では、ECCデコーダ22の符号化の方式として、コードレートが可変の方式が採用される場合には、設定情報に、コードレート情報が含まれていてもよい。ECCデコーダ22は、設定情報に含まれていたコードレート情報を用いて復号化を実行することができる。
メモリインタフェース回路20は、パトロール指示を受信すると、パトロールリードの範囲の記憶領域に格納されている全データに対し、パトロールリードを実行する。
なお、メモリコントローラ10は、パトロール指示を送信せず、メモリインタフェース回路20は、パトロール指示を受信することなくパトロールリードを開始してもよい。
パトロールリードでは、1回以上のリードが実行される。一例では、メモリインタフェース回路20は、パトロールリードの範囲の記憶領域を構成する各ページを順番にリードする。別の例では、メモリインタフェース回路20は、パトロールリードの範囲の記憶領域からブロック毎に1ページを選択するなどによって、1以上のリード対象のページを限定し、限定された1以上のリード対象のページのそれぞれをリードする。
各リードでは、メモリインタフェース回路20のシーケンサ21は、リードコマンドを生成し、生成したリードコマンドを宛先のメモリチップ30(以降、単に対象のメモリチップ30)に送信する(S102)。対象のメモリチップ30においては、周辺回路は、リードコマンドに応じてメモリセルアレイ33に対するリード動作を行い、メモリセルアレイ33からリードされたデータをメモリインタフェース回路20に出力する(S103)。
メモリインタフェース回路20がデータを受信すると、シーケンサ21は、ECCデコーダ22を用いることによって診断処理を実行する(S104)。診断処理の具体的な内容は、任意に設計され得る。
一例では、診断処理では、ECCデコーダ22は、誤り訂正を実行する。シーケンサ21は、誤り訂正によって検出された誤りの程度を、診断結果として扱う。
別の例では、シーケンサ21は、誤り訂正の成否に基づいて、リフレッシュの要否を判定する。ECCデコーダ22がデータに含まれる誤りの訂正に失敗した場合、シーケンサ21は、リフレッシュが必要であると判定する。ECCデコーダ22がデータに含まれる誤りの訂正に成功した場合、シーケンサ21は、リフレッシュは不要であると判定する。シーケンサ21は、リフレッシュが必要であると判定された位置を、診断結果とする。
さらに別の例では、シーケンサ21は、データに含まれていた誤りの数と所定の閾値とを比較し、比較結果に基づいてリフレッシュの要否を判定する。データに含まれている誤りの数が閾値を超えている場合、シーケンサ21は、リフレッシュが必要であると判定する。データに含まれている誤りの数が閾値を超えていない場合、シーケンサ21は、リフレッシュは不要であると判定する。シーケンサ21は、リフレッシュが必要であると判定された位置を、診断結果とする。
S102〜S104の処理は、繰り返し実行される。シーケンサ21は、所定のタイミングで、診断結果をメモリコントローラ10に送信する(S105)。
診断結果をメモリコントローラ10に送信するタイミングは、特定のタイミングに限定されない。一例では、シーケンサ21は、所定数のリードが完了する毎に、診断結果を送信する。別の例では、シーケンサ21は、1ブロックなど、単位サイズの記憶領域に対してリードが完了する毎に、診断結果を送信する。さらに別の例では、シーケンサ21は、リフレッシュが必要であると判定した場合に、診断結果を送信する。さらに別の例では、パトロールリードの範囲内の記憶領域を一通りリードした場合に、診断結果を送信する。
以上述べたように、第1の実施形態によれば、メモリコントローラ10は、ホスト200から受信したデータをECCエンコーダ13によって符号化し、符号化されたデータをNANDメモリ40にプログラムする。メモリインタフェース回路20は、メモリコントローラ10が封入された第1パッケージ4とは異なる第2パッケージ5に封入されており、ECCデコーダ22を備えている。メモリインタフェース回路20は、メモリコントローラ10とNANDメモリ40との間に介在する。メモリインタフェース回路20は、NANDメモリ40に格納されているデータをリードし、リードされたデータに対してECCデコーダ22によって復号化することによって、リードされたデータの診断を行う。メモリインタフェース回路20は、診断結果をメモリコントローラ10に送信する。
これにより、パトロールリードを構成する情報の授受を、メモリインタフェース回路20とNANDメモリ40との間で閉じることができるので、メモリコントローラ10にかかる負荷が低減される。
なお、以上の例では、メモリインタフェース回路20は、診断において、誤りの程度、または誤りの程度に基づくリフレッシュの要否を演算した。診断では、メモリインタフェース回路20は、隣接する2つの閾値電圧の分布の山の間のマージンの広さを測定してもよい。
例えば、図10に例示されるEtoAマージン300の広さが測定対象である場合を考える。EtoAマージン300は、E山とA山との間のマージンである。シーケンサ21は、読み出し電圧VArを設定し、上位ページおよび下位ページをリード位置とするリードを実行する。即ち、シーケンサ21は、2回のリードを実行する。ECCデコーダ22は、上位ページからリードされたデータと下位ページからリードされたデータとに対して誤り訂正を実行する。シーケンサ21は、誤り訂正の前後の各データを比較することによって、データ“11”がプログラムされ、データ“01”がリードされたメモリセルの数と、データ“01”がプログラムされ、データ“11”がリードされたメモリセルの数と、をカウントする。設定された読み出し電圧VArが、E山とA山との間のマージン内に存在する場合には、2つのカウント値はともにゼロである。よって、シーケンサ21は、2つのカウント値がともにゼロとなる読み出し電圧VArの範囲を探索することによって、EtoAマージン300の広さを求めることができる。他のマージンに関しても、同様の手順でマージンの広さが測定できる。
このように、メモリインタフェース回路20は、NANDメモリ40からリードされたデータに含まれているエラービット数に基づいて2つの閾値電圧の分布の山の間のマージンの広さを取得してもよい。
なお、メモリインタフェース回路20は、診断において、読み出し電圧をVArよりもやや低電位側に設定してリードを行い、エラービット数をカウントすることによって、その読み出し電圧における閾値分布の高さを取得してもよい。
また、メモリインタフェース回路20は、Distribution readを実行することにより、閾値電圧分布を取得し、取得された閾値電圧分布を診断結果としてメモリコントローラ10に送信してもよい。
Distribution readでは、シーケンサ21は、対象のメモリセルグループに対し、読み出し電圧を順次変更しながら複数回のシングルレベルリードを実行する。シングルレベルリードは、SLCモードでのリードである。シングルレベルリードによってリードされたデータの各ビットは、使用された読み出し電圧よりも、対応するメモリセルの閾値電圧が高いか低いかを示す。よって、シーケンサ21は、読み出し電圧をE山の最小電圧値からC山の最大電圧値に至るまで順次変更することによって、各山の形状を求めることができる。
また、メモリインタフェース回路20は、Distribution readを実行することによって、2つの山の間のマージンの広さを取得してもよい。
また、例えば、EtoAマージン300そのものを取得する代わりに、メモリインタフェース回路20は、図10に例示されるように、E山の頂点とA山の頂点との間に位置するそれぞれ異なる2つの電圧(VAr1およびVAr2)をそれぞれ読み出し電圧として用いてリードを実行し、2つのリードの結果で異なるデータ値が得られたビットをカウントすることによって、閾値電圧が電圧VAr1と電圧VAr2との間に位置するメモリセルの数を測定してもよい。閾値電圧が電圧VAr1と電圧VAr2との間に位置するメモリセルの数が小さいことは、EtoAマージン300が広いことを意味し、閾値電圧が電圧VAr1と電圧VAr2との間に位置するメモリセルの数が大きいことは、EtoAマージン300が狭いことを意味する。閾値電圧が電圧VAr1と電圧VAr2との間に位置するメモリセルの数に基づいて、リフレッシュの要否が判定され得る。
(第2の実施形態)
通常のリフレッシュ(以降、通常リフレッシュ)では、エラービット数が所定の閾値を越えたブロック内のデータが別のブロックにプログラムされる。しかし、通常リフレッシュは、プログラム先のブロックを確保するためのイレースを伴う。よって、通常リフレッシュが繰り返し実行されると、NANDメモリ40の疲弊が進む。
通常のリフレッシュ(以降、通常リフレッシュ)では、エラービット数が所定の閾値を越えたブロック内のデータが別のブロックにプログラムされる。しかし、通常リフレッシュは、プログラム先のブロックを確保するためのイレースを伴う。よって、通常リフレッシュが繰り返し実行されると、NANDメモリ40の疲弊が進む。
第2の実施形態では、各メモリインタフェース回路20は、上書きリフレッシュを指示することができる。上書きリフレッシュは、データリテンションなどにより閾値電圧が負側にシフトしたメモリセルに対し同一のデータを上書きする処理である。上書きとは、イレースを行わずに重ねてプログラムすることであり、換言すると、再プログラムすることである。上書きリフレッシュはプログラム動作のみでリフレッシュを実現する。よって、通常リフレッシュに比べイレースを伴わない分だけNANDメモリ40に与えるダメージが抑制される。また、上書きリフレッシュはイレーズレベルからのプログラムではなく途中の電圧からのプログラムに該当するので、上書きリフレッシュにおいては、プログラムは短時間で完了する。
図11は、第2の実施形態のメモリシステム100の動作を説明するシーケンス図である。
まず、メモリコントローラ10は、メモリインタフェース回路20に対し、上書きリフレッシュ指示を送信する(S201)。なお、上書きリフレッシュ指示は、上書きリフレッシュの対象位置を指定する物理アドレスを含む。また、パトロール指示と同様に、上書きリフレッシュ指示は、任意の設定情報を含み得る。
なお、メモリコントローラ10は、上書きリフレッシュ指示を送信せず、メモリインタフェース回路20は、上書きリフレッシュ指示を受信することなく上書きリフレッシュを開始してもよい。
メモリインタフェース回路20においては、上書きリフレッシュ指示を受信すると、上書きリフレッシュの対象位置からデータをリードするリードコマンドを、宛先のメモリチップ30(以降、対象のメモリチップ30)に送信する(S202)。対象のメモリチップ30においては、周辺回路は、リードコマンドに応じてメモリセルアレイ33に対するリード動作を行い、メモリセルアレイ33からリードされたデータをメモリインタフェース回路20に出力する(S203)。
メモリインタフェース回路20がデータを受信すると、ECCデコーダ22は、ECCデコーダ22によって誤り訂正を実行する(S204)。S204においては、S203によって送られてきた符号化されたデータに含まれるエラービットのみが訂正される。よってS204の処理によって得られるデータは、エラービットが訂正された符号化されたデータである。
シーケンサ21は、上書きリフレッシュコマンドと誤り訂正後のデータとを対象のメモリチップ30に送信する(S205)。上書きリフレッシュの位置は、S202、S203によってデータがリードされた位置と同一である。
対象のメモリチップ30においては、周辺回路は、上書きリフレッシュを実行する。例えば、図7に示した4値メモリセルの場合、A山に属するメモリセルに対しては、A山用のワード線電位が設定され、またA山用のベリファイ電位VAVが設定されて、プログラム動作が行われる。B山、C山に属するメモリセルに関しても同様の再プログラムが行われる。これにより、閾値電圧が負側にシフトした場合に、その閾値電圧を許容範囲内に移動させることができる。
対象のメモリチップ30は、上書きリフレッシュが完了すると、完了応答をメモリインタフェース回路20に送信する(S206)。
メモリインタフェース回路20は、完了応答を受信すると、上書きリフレッシュの完了報告をメモリコントローラ10に送信する(S207)。
なお、S201において、メモリコントローラ10は、上書きリフレッシュの対象位置を、ブロック単位など、範囲情報として与えてもよい。その場合には、S202〜S206の処理が、指定された範囲情報に含まれる各メモリセルグループ毎に実行され、指定された範囲情報に含まれる全てのメモリセルグループについて上書きリフレッシュが完了した後に、S207の処理が実行されてもよい。
以上述べたように、第2の実施形態によれば、メモリコントローラ10は、上書きリフレッシュ指示を送信する。メモリインタフェース回路20は、上書きリフレッシュ指示を受信すると、NANDメモリ40からデータをリードし、リードされたデータをECCデコーダ22によって復号化することによってリードされたデータに含まれるエラービットを訂正する。そして、メモリインタフェース回路20は、エラービットが訂正されたデータを、データがリードされた位置と同じ位置に再プログラムする。
これにより、リフレッシュにかかるデータの授受が、メモリインタフェース回路20とNANDメモリ40で閉じることができる。
なお、通常リフレッシュにおいては、メモリコントローラ10は、データのリード、データの書き直し先のブロックの確保、およびデータの書き直しを実行する。よって、通常リフレッシュにおいては、メモリコントローラ10とNANDメモリ40との間で、リフレッシュにかかるデータの授受が発生する。
これに対し、第2の実施形態の上書きリフレッシュの場合、メモリコントローラ10とNANDメモリ40との間で、リフレッシュにかかるデータの授受が発生しないので、リフレッシュの動作がメモリコントローラ10に与える負荷が軽減される。
なお、上書きリフレッシュの対象位置の設定方法は、特定の方法に限定されない。例えば、第1の実施形態のパトロールリードの動作が実行され、メモリコントローラ10は、メモリインタフェース回路20から得た診断結果に基づき、上書きリフレッシュの対象位置を特定する。
また、メモリコントローラ10は、メモリインタフェース回路20から得た診断結果に基づき、通常リフレッシュを実行するか上書きリフレッシュを実行するかを判定し、上書きリフレッシュを実行すると判定した場合に、メモリインタフェース回路20に上書きリフレッシュ指示を送ってもよい。
一例では、メモリインタフェース回路20は、2つの閾値電圧の分布の山の間のマージンの広さ(例えばEtoAマージン300)の広さを測定し、診断結果としてメモリコントローラ10に送信する。メモリコントローラ10は、2つの山の間のマージンの広さが所定の閾値よりも大きい場合、上書きリフレッシュを選択し、上書きリフレッシュ指示を送信する。メモリコントローラ10は、EtoAマージン300の広さが所定の閾値よりも小さい場合、通常リフレッシュを選択する。第1の実施形態で述べたように、2つの山の間のマージンの広さの測定方法は、特定の方法に限定されない。メモリインタフェース回路20は、NANDメモリ40からリードされたデータに含まれているエラービット数に基づいて2つの山の間のマージンの広さを演算してもよいし、Distribution readを実行することにより2つの山の間のマージンの広さを演算してもよい。
別の例では、メモリインタフェース回路20は、エラービット数を診断結果としてメモリコントローラ10に送信する。メモリコントローラ10は、エラービット数が第1の閾値よりも大きい場合、通常リフレッシュを選択する。メモリコントローラ10は、エラービット数が第1の閾値よりも小さく、かつ第1の閾値よりも小さい第2の閾値よりも大きい場合、上書きリフレッシュを選択する。第1の閾値は、ECCデコーダ22によって訂正可能な最大数よりも小さい値に設定される。
また、メモリコントローラ10は、パトロールリードとは関係なく上書きリフレッシュの対象位置を設定してもよい。例えば、メモリコントローラ10は、プログラムされてから所定の時間が経過した記憶領域を、上書きリフレッシュの対象位置として設定する。
また、メモリコントローラ10は、パトロールリードとは関係なく、通常リフレッシュを実行するか上書きリフレッシュを実行するかを判定してもよい。例えば、メモリコントローラ10は、同一の記憶領域に対して上書きリフレッシュを連続して所定回数実行した場合、次はその記憶領域に対して通常リフレッシュを実行する。
(第3の実施形態)
第3の実施形態では、メモリインタフェース回路20は、NANDメモリ40に対するリードにおいて、訂正強度に優れた復号化を行うことができる。
第3の実施形態では、メモリインタフェース回路20は、NANDメモリ40に対するリードにおいて、訂正強度に優れた復号化を行うことができる。
図12は、第3の実施形態のメモリインタフェース回路20の構成例を示す図である。図示するように、メモリインタフェース回路20は、シーケンサ21、ECCデコーダ22のほかに、バッファ23を備えている。バッファ23を構成するメモリの種類は、特定の種類に限定されない。
メモリコントローラ10に具備されるECCエンコーダ13は、軟判定(soft decision)を用いた復号化が可能な符号化方式で符号化を実行する。メモリインタフェース回路20に具備されるECCデコーダ22は、ECCエンコーダ13によって符号化され、NANDメモリ40に格納されたデータに対し、軟判定に基づく復号化を行うことができる。軟判定を用いた復号化が可能な符号化方式としては、例えばLDPC(Low-Density Parity-check Code)がある。
軟判定とは、ソフトビット情報を用いた復号処理である。軟判定においては、ソフトビット情報すなわち尤度情報が必要となる。ビット値の判定の基準となる電圧すなわち硬判定するための電圧をハードビット読み出し電圧(HB)とすると、HBと、HBより上側にシフトされた読み出し電圧を用いることによってリードされたデータと、HBより下側にシフトされた読み出し電圧を用いることによってリードされたデータとが、ソフトビット情報の生成に使用される。即ち、ソフトビット情報を得るためには、NANDメモリ40に対する複数回のリードが必要となる。
メモリインタフェース回路20では、シーケンサ21は、リード対象のメモリセルグループから、読み出し電圧をHBを中心とする複数の電圧のそれぞれに順次変更しながら、データを複数回リードする。各リードにおいては、シーケンサ21は、読み出し電圧を指定してリードコマンドを送信する。シーケンサ21は、各リードコマンドに応じてNANDメモリ40から出力された各データを、バッファ23に保存する。シーケンサ21は、NANDメモリ40から出力された複数のデータに基づく演算によって、ソフトビット情報を取得する。シーケンサ21は、ソフトビット情報をECCデコーダ22に入力し、ECCデコーダ22は、ソフトビット情報を用いることによって誤り訂正を実行する。
以上述べたように、第3の実施形態によれば、メモリインタフェース回路20は、読み出し電圧を変えながらNANDメモリ40から複数回、データをリードし、それぞれ異なる読み出し電圧を用いてリードされた複数のデータに基づいてソフトビット情報を取得する。そして、メモリインタフェース回路20は、ソフトビット情報をECCデコーダ22に入力して誤り訂正を実行させる。
このように、メモリインタフェース回路20は、多数のリードを伴う誤り訂正の強度が強い誤り訂正を実行することができるので、当該誤り訂正をメモリコントローラ10で行う場合に比べてメモリコントローラ10の負荷が低減される。
また、軟判定に要するデータの授受が、メモリインタフェース回路20とメモリチップ30との間で閉じており、メモリコントローラ10に対しては、メモリインタフェース回路20は、軟判定によって訂正されたデータのみを転送すればよい。メモリコントローラ10とNANDメモリ40との間で、軟判定に要するデータの授受が発生しないので、軟判定の処理がメモリコントローラ10に与える負荷が軽減される。
なお、以上では、メモリインタフェース回路20が軟判定を実行する、として説明した。メモリインタフェース回路20は、ソフトビット情報の演算を実行し、演算されたソフトビット情報をメモリコントローラ10に送信し、ソフトビット情報を用いた軟判定をメモリコントローラ10のECCデコーダ14が実行してもよい。その場合、ソフトビット情報を得るためのデータの授受をメモリインタフェース回路20とメモリチップ30との間で閉じることができ、ひいては、メモリコントローラ10に与える負荷が軽減される。
(第4の実施形態)
第4の実施形態のメモリインタフェース回路20の構成は、第3の実施形態と同様である。第4の実施形態では、メモリインタフェース回路20は、NANDメモリ40に対するfoggy&fine書き込みを支援することができる。
第4の実施形態のメモリインタフェース回路20の構成は、第3の実施形態と同様である。第4の実施形態では、メモリインタフェース回路20は、NANDメモリ40に対するfoggy&fine書き込みを支援することができる。
foggy&fine書き込みは、多値メモリセルにおいて隣接メモリセルへの書き込みに伴う閾値電圧の変動を抑制する為の書き込み方式である。foggy&fine書き込みでは、より具体的には、ターゲットのメモリセルに一旦粗くプログラムされ、次に、ターゲットのメモリセルに隣接するメモリセルへのプログラムが実行される。その後、ターゲットのメモリセルにプログラムが再度実行されることで、ターゲットのメモリセルの閾値電圧が目標値に補正される。即ち、foggy&fine書き込みによれば、1つのワードラインに、一度データが粗くプログラムされ、後に、データが再プログラムされる。再プログラムとは、過去にプログラムされた位置に対し、イレースを経ることなくプログラムされることである。
foggy&fine書き込みの手順の一例を以下に説明する。ここでは、4値メモリセルを有する2次元構造のメモリセルアレイに対してfoggy&fine書き込みが実行される例について説明する。foggy&fine書き込みは、3次元構造のメモリセルアレイに対しても実行可能である。また、foggy&fine書き込みは、4値以外の多値メモリセル(例えばTLC、QLC等)に対しても実行可能である。
(1)まず、メモリチップ30に下位ページ及び上位ページに対応する合計2ページ分の第1データが入力され、ワードライン0(WL0)の下位ページ及び上位ページに第1データが粗くプログラムされる(foggy書き込み)。
(2)次に、メモリチップ30に下位ページ及び上位ページに対応する合計2ページ分の第2データが入力され、ワードライン1(WL1)の下位ページ及び上位ページに第2データが粗くプログラムされる(foggy書き込み)。
(3)次に、合計2ページ分の第1データが再度、メモリチップ30に入力され、ワードライン0(WL0)の下位ページ及び上位ページに第1データが正確にプログラムされる(fine書き込み)。
(4)次に、メモリチップ30に下位ページ及び上位ページに対応する合計2ページ分の第3データが入力され、ワードライン2(WL2)の下位ページ及び上位ページに第3データが粗くプログラムされる(foggy書き込み)。
(5)次に、合計2ページ分の第2データが再度、メモリチップ30に入力され、ワードライン1(WL1)の下位ページ及び上位ページに第2データが正確にプログラムされる(fine書き込み)。以下同様である。
(2)次に、メモリチップ30に下位ページ及び上位ページに対応する合計2ページ分の第2データが入力され、ワードライン1(WL1)の下位ページ及び上位ページに第2データが粗くプログラムされる(foggy書き込み)。
(3)次に、合計2ページ分の第1データが再度、メモリチップ30に入力され、ワードライン0(WL0)の下位ページ及び上位ページに第1データが正確にプログラムされる(fine書き込み)。
(4)次に、メモリチップ30に下位ページ及び上位ページに対応する合計2ページ分の第3データが入力され、ワードライン2(WL2)の下位ページ及び上位ページに第3データが粗くプログラムされる(foggy書き込み)。
(5)次に、合計2ページ分の第2データが再度、メモリチップ30に入力され、ワードライン1(WL1)の下位ページ及び上位ページに第2データが正確にプログラムされる(fine書き込み)。以下同様である。
このように、foggy&fine書き込みでは、同じページに対し2回の書き込み処理が行われるため、同一のページに対応するデータを2回入力する必要が生じる。なお、データ入力回数は2回に限るものではなく、各ページへの書き込み順序もこれに限定されるものではない。
シーケンサ21は、メモリコントローラ10からプログラム対象のデータを受信する。プログラム対象のデータは符号化されている。シーケンサ21は、受信したプログラム対象のデータをバッファ23に格納する。そして、シーケンサ21は、バッファ23に格納されたデータを、対象のメモリチップ30に2回入力し、それぞれプログラムする。1回目のプログラムは、foggy書き込みであり、2回目のプログラムは、fine書き込みである。
なお、上述のfoggy&fine書き込みの手順の例では、第1データの2回の入力の間に、第2データおよび第3データの入力が発生する。よって、バッファ23は、少なくとも3つのデータ(第1データ、第2データ、第3データ)を格納可能な容量を有する。
以上述べたように、第4の実施形態によれば、メモリインタフェース回路20は、プログラム対象のデータをバッファ23に格納する。そして、メモリインタフェース回路20は、バッファ23に格納されたプログラム対象のデータをNANDメモリ40の第1の位置にプログラムし、第1の位置とは異なる第2の位置に他のデータをプログラムし、バッファ23に格納されたプログラム対象のデータを再度、第1の位置に再プログラムする。再プログラムは、前回のプログラムからイレースを経ることなく実行される。
これにより、foggy&fine書き込みにかかる同一のデータの複数回の入力を、メモリコントローラ10ではなくメモリインタフェース回路20が実行するので、メモリコントローラ10の負荷が低減される。
なお、foggy書き込みによってプログラムされるデータは、全ページ分のデータである必要はない。例えば、1つのワードラインに対しては、1回目に、最下位のページのデータが粗くプログラムされ(foggy書き込み)、2回目に、全ページのデータが正確にプログラムされる(fine書き込み)。その場合には、最下位のページのデータを2回入力する必要がある。メモリインタフェース回路20は、foggy書き込みが実行されたデータを保持しておき、fine書き込みにおいては、保持しているデータを含む全ページのデータをfine書き込みしてもよい。
また、メモリインタフェース回路20は、foggy&fine書き込みを実行するか否かに関わらず、バッファ23にプログラム対象のデータを一時記憶させてもよい。具体的には、シーケンサ21は、メモリコントローラ10がNANDメモリ40に対して送信したプログラム対象のデータを、バッファ23に記憶しておく。そして、シーケンサ21は、メモリコントローラ10がNANDメモリ40に対して送信したリードコマンドを受信した場合、リード対象のデータがバッファ23に格納されているか否かを判定する。リード対象のデータがバッファ23に格納されている場合、シーケンサ21は、リード対象のデータをバッファ23から読み出してメモリコントローラ10に送信する。その場合、シーケンサ21は、リードコマンドをNANDメモリ40に転送しない。
これにより、メモリコントローラ10は、データがプログラムの最中に当該データのリードを試みる場合、プログラムの完了を待つことなく当該データを取得することができる。
(第5の実施形態)
第5の実施形態では、メモリインタフェース回路20は、動的ODT(Dynamic On Die Termination)を制御することができる。
第5の実施形態では、メモリインタフェース回路20は、動的ODT(Dynamic On Die Termination)を制御することができる。
図13は、メモリインタフェース回路20とNANDメモリ40との間のデータ線の接続例を示す図である。データ線50の一端は、メモリインタフェース回路20のドライバ回路24に接続されている。データ線50は、4つに分岐し、それぞれ異なるメモリチップ30に具備されるドライバ回路38に接続されている。そして、データ線50のメモリチップ30側には、ODT回路39が具備されている。ODT回路39は、ODT機能のオン/オフを切り替えるための2つのスイッチを備える。当該2つのスイッチは、ODT制御信号線によって制御される。
図14は、ODT制御信号線の接続例を示す図である。図示するように、メモリインタフェース回路20と各メモリチップ30とは、ODT制御信号線51で1対1に接続されている。即ち、各メモリチップ30は、メモリインタフェース回路20と、分岐しない1本のODT制御信号線51で個別に接続されている。
シーケンサ21は、配下のメモリチップ30のうち1以上のメモリチップ30に対してデータを転送中であるか否か、および、各メモリチップ30はデータの転送対象のメモリチップ30であるか否か、に応じて、配下の各メモリチップ30のODT機能のオン/オフを実行する。シーケンサ21は、メモリコントローラ10からのコマンドを転送する際に、当該コマンドに含まれるアドレス情報に基づいて、動作するメモリチップ30を特定し、特定した結果に基づいて配下の各メモリチップ30のODT機能のオン/オフを決定する。パトロールリードなど、メモリインタフェース回路20自身がNANDメモリ40にアクセスを行う場合には、アクセス先のメモリチップ30を動作するメモリチップ30として特定し、特定した結果に基づいて配下の各メモリチップ30のODT機能のオン/オフを決定する。
ODT機能のオン/オフの決定方法は、特定の方法に限定されない。一例では、シーケンサ21は、配下のメモリチップ30のうちの、データの転送対象のメモリチップ30のODT機能をオフし、それ以外のメモリチップ30のODT機能をオンする。別の例では、シーケンサ21は、データの転送対象のメモリチップ30のODT機能をオンし、それ以外のメモリチップ30のODT機能をオフする。さらに別の例では、シーケンサ21は、配下のメモリチップ30のうちのいずれかのメモリチップ30にデータを転送中である場合には、配下の全てのメモリチップ30のODT機能をオンし、配下のメモリチップ30のいずれのメモリチップ30にもデータを転送していない場合には、配下の全てのメモリチップ30のODT機能をオフする。
仮にメモリインタフェース回路20ではなくメモリコントローラ10がODT機能を制御する場合、メモリコントローラ10と各メモリチップ30とがODT制御信号線51で1対1に接続される。図1に例示されるようにメモリシステム100が8個のメモリチップ30を有する場合には、メモリコントローラ10側に8本のODT制御信号線51が接続される。メモリコントローラ10側のODT制御信号線51の配線数は、メモリチップ30の数が増加するに応じて増加する。
第5の実施形態によれば、メモリインタフェース回路20が配下の各メモリチップ30と1対1でODT制御信号線51で接続されるので、メモリインタフェース回路20を複数設けることによって、ODT制御信号線51の配線を簡素にすることができる。
(第6の実施形態)
3次元構造のメモリセルアレイでは、電源オン状態であるか否かに関わらず、メモリセルの閾値電圧が徐々に変化し、エラーレートが上昇する。定期的にワードラインに適切なレベルの電圧を印加することで、閾値電圧の変化が抑制される。
3次元構造のメモリセルアレイでは、電源オン状態であるか否かに関わらず、メモリセルの閾値電圧が徐々に変化し、エラーレートが上昇する。定期的にワードラインに適切なレベルの電圧を印加することで、閾値電圧の変化が抑制される。
そこで、メモリインタフェース回路20は、配下のメモリチップ30が備える全ブロックのそれぞれに対し、定期的なリードを実行してもよい。リード位置は、各ブロックにつき1つのワードラインであってもよいし、各ブロックにつき複数のワードラインであってもよい。定期的なリードによって、リードされたブロックの各ワードラインには電圧(例えば転送電位)が印加されるので、閾値電圧の変化を抑制することが可能となる。
(第7の実施形態)
第7の実施形態では、メモリインタフェース回路20は、バックグラウンドで、配下のメモリチップ30に対してDistribution readを実行することによって、閾値電圧分布を測定する。そして、メモリインタフェース回路20は、測定した閾値電圧分布に基づいて、エラービット数ができるだけ少なくなる読み出し電圧(以降、最適読み出し電圧)を求める。そして、メモリインタフェース回路20は、求めた最適読み出し電圧をメモリコントローラ10に通知する。
第7の実施形態では、メモリインタフェース回路20は、バックグラウンドで、配下のメモリチップ30に対してDistribution readを実行することによって、閾値電圧分布を測定する。そして、メモリインタフェース回路20は、測定した閾値電圧分布に基づいて、エラービット数ができるだけ少なくなる読み出し電圧(以降、最適読み出し電圧)を求める。そして、メモリインタフェース回路20は、求めた最適読み出し電圧をメモリコントローラ10に通知する。
ここでは一例として、メモリインタフェース回路20は、最適読み出し電圧を例えばブロック単位で求める。最適読み出し電圧が求められる単位はブロックでなくてもよい。例えば、ページ単位、ワードライン単位、ワードライングループ単位、またはメモリセルグループ単位など、任意の単位でに最適読み出し電圧が取得され得る。
メモリコントローラ10は、メモリインタフェース回路20から通知されたブロック毎の最適読み出し電圧を例えばRAM12にキャッシュする。メモリコントローラ10は、キャッシュしているブロック毎の最適読み出し電圧を、メモリインタフェース回路20からの通知に応じて更新する。メモリコントローラ10は、あるブロックに対してリードを行う際に、そのブロックの最適読み出し電圧をキャッシュしている内容から取得して、取得した最適読み出し電圧を指定してリードコマンドをNANDメモリ40側に送信する。
このように、第7の実施形態においては、最適読み出し電圧の測定に必要となる多数のリードと、演算処理と、がメモリコントローラ10ではなくメモリインタフェース回路20によって実行されるので、メモリコントローラ10にかかる負荷が低減される。
また、最適読み出し電圧の測定を構成する情報の授受を、メモリチップ30とメモリインタフェース回路20との間だけで閉じることができるので、メモリコントローラ10にかかる負荷が低減される。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 ハウジング、2,2a,2b,2c プリント基板、3 コネクタおよび/またはケーブル、4 第1パッケージ、5 第2パッケージ、6 NANDパッケージ、7 ホストインタフェース、8 コネクタ、10 メモリコントローラ、11 プロセッサ、12 RAM、13 ECCエンコーダ、14 ECCデコーダ、20 メモリインタフェース回路、21 シーケンサ、22 ECCデコーダ、23 バッファ、24 ドライバ回路、30 メモリチップ、31 I/O部、32 NAND制御部、33 メモリセルアレイ、34 ロウデコーダ、35 センスアンプ、36 ページバッファ、37 カラムデコーダ、38 ドライバ回路、39 ODT回路、40 NANDメモリ、50 データ線、51 ODT制御信号線、100 メモリシステム、200 ホスト、300 EtoAマージン。
Claims (29)
- ホストに接続可能なメモリシステムであって、
不揮発性のメモリと、
第1パッケージに封入され、誤り訂正のための符号化を行う符号化部を備え、前記ホストから受信したデータである第1データを前記符号化部によって符号化し、符号化された第1データである第2データを前記メモリにプログラムするメモリコントローラと、
前記第1パッケージと異なる第2パッケージに封入され、前記メモリと前記メモリコントローラとの間に介在し、誤り訂正のための復号化を行う復号化部を備え、前記メモリに格納されている第2データである第3データを前記メモリからリードし、前記メモリからリードされた第3データである第4データを前記復号化部によって復号化することによって前記第4データの診断を行い、診断結果を前記メモリコントローラに報告する、メモリインタフェース回路と、
を備えることを特徴とするメモリシステム。 - 前記メモリコントローラは、前記診断結果に応じて上書きリフレッシュ指示を前記メモリインタフェース回路に送信し、
前記メモリインタフェース回路は、前記上書きリフレッシュ指示に応じて前記第3データを前記メモリからリードし、前記メモリからリードされた第3データである第5データを前記復号化部によって復号化することによって前記第5データに含まれるエラービットを訂正し、前記エラービットが訂正された第5データである第6データを前記メモリの前記第2データがプログラムされた位置である第1の位置に再プログラムする、
ことを特徴とする請求項1に記載のメモリシステム。 - 前記メモリは、それぞれ保持する値に応じた閾値電圧が設定される複数のメモリセルを備え、
前記メモリインタフェース回路は、前記第4データに含まれているエラービット数に基づいて値毎の閾値電圧分布間のマージンの広さを取得し、前記取得されたマージンの広さを前記診断結果として前記メモリコントローラに報告し、
前記メモリコントローラは、前記マージンの広さと所定の閾値との比較に基づいて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項2に記載のメモリシステム。 - 前記メモリインタフェース回路は、読み出し電圧を変えながら前記第3データを2回リードし、前記読み出し電圧を変えながら前記メモリからリードされた2つの第3データである2つの第7データの間で値が異なるビットの数を取得し、前記取得された数を前記診断結果として前記メモリコントローラに報告し、
前記メモリコントローラは、前記2つの第7データの間で値が異なるビットの数と所定の閾値との比較に基づいて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項2に記載のメモリシステム。 - 前記メモリインタフェース回路は、読み出し電圧を変えながら前記第3データを複数回リードし、前記読み出し電圧を変えながら前記メモリからリードされた第3データである複数の第8データに基づいてソフトビット情報を取得し、前記ソフトビット情報を前記復号化部に入力して誤り訂正を実行する、
ことを特徴とする請求項1に記載のメモリシステム。 - 前記メモリコントローラは、前記第2データを前記メモリインタフェース回路に送信し、
前記メモリインタフェース回路は、バッファをさらに備え、前記メモリコントローラから受信した第2データを前記バッファに格納し、前記バッファに格納された第2データを前記メモリ内の第2の位置にプログラムし、前記第2の位置とは異なる第3の位置に前記第2データと異なる第9データをプログラムした後、前記第2の位置に前記バッファに格納された第2データを再プログラムする、
ことを特徴とする請求項1に記載のメモリシステム。 - 前記メモリコントローラは、前記第2データを前記メモリインタフェース回路に送信し、
前記メモリインタフェース回路は、バッファをさらに備え、前記メモリコントローラから受信した第2データを前記バッファに格納し、前記メモリコントローラから前記第2データに対するリードコマンドを受信した場合、前記バッファに格納されている第2データを前記メモリコントローラに送信する、
ことを特徴とする請求項1に記載のメモリシステム。 - 前記メモリは、それぞれODT機能のオン/オフが可能な複数のメモリチップを含み、
前記メモリインタフェース回路は、それぞれのメモリチップとODT制御信号線で一対一に接続され、前記ODT制御信号線を操作することによって各メモリチップのODT機能をオン/オフする、
ことを特徴とする請求項1に記載のメモリシステム。 - 前記メモリは、複数のブロックを備え、
前記メモリインタフェース回路は、前記複数のブロックのそれぞれに対し、定期的なリードを実行する、
ことを特徴とする請求項1に記載のメモリシステム。 - 前記メモリインタフェース回路は、前記ホストに接続されるインタフェースを有さない、
ことを特徴とする請求項1に記載のメモリシステム。 - 前記メモリインタフェース回路および前記メモリは、前記第2パッケージにともに封入されている、
ことを特徴とする請求項1に記載のメモリシステム。 - 前記メモリインタフェース回路と前記メモリコントローラとを接続するインタフェースの接続方式と、前記メモリインタフェース回路と前記メモリとを接続するインタフェースの接続方式とは、互換性がある、
ことを特徴とする請求項1に記載のメモリシステム。 - 前記メモリコントローラは、第1基板に装着され、前記メモリインタフェース回路および前記メモリは、前記第1基板と異なる第2基板にともに装着され、前記第1基板と前記第2基板とはコネクタおよび/またはケーブルで接続されている、
ことを特徴とする請求項1に記載のメモリシステム。 - ホストに接続可能なメモリシステムであって、
不揮発性のメモリと、
第1パッケージに封入され、誤り訂正のための符号化を行う符号化部を備え、前記ホストから受信したデータである第1データを前記符号化部によって符号化し、符号化された第1データである第2データを前記メモリにプログラムし、その後、上書きリフレッシュ指示を送信するメモリコントローラと、
前記第1パッケージと異なる第2パッケージに封入され、前記メモリと前記メモリコントローラとの間に介在し、誤り訂正のための復号化を行う復号化部を備え、前記メモリに格納されている第2データである第3データを、前記上書きリフレッシュ指示に応じてリードし、前記メモリからリードされた第3データである第4データを前記復号化部によって復号化することによって前記第4データに含まれるエラービットを訂正し、前記エラービットが訂正された第4データである第5データを前記メモリの前記第2データがプログラムされた位置である第1の位置に再プログラムする、メモリインタフェース回路と、
を備えることを特徴とするメモリシステム。 - 前記メモリインタフェース回路は、前記第3データを前記メモリからリードし、前記メモリからリードされた第3データである第6データの診断を行い、診断結果を前記メモリコントローラに報告し、
前記メモリコントローラは、前記診断結果に応じて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項14に記載のメモリシステム。 - 前記メモリは、それぞれ保持する値に応じた閾値電圧が設定される複数のメモリセルを備え、
前記メモリインタフェース回路は、前記第6データに含まれているエラービット数に基づいて値毎の閾値電圧分布間のマージンの広さを取得し、前記取得されたマージンの広さを前記診断結果として前記メモリコントローラに報告し、
前記メモリコントローラは、前記マージンの広さと所定の閾値との比較に基づいて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項15に記載のメモリシステム。 - 前記メモリは、それぞれ保持する値に応じた閾値電圧が設定される複数のメモリセルを備え、
前記メモリインタフェース回路は、読み出し電圧を変えながら前記第3データを複数回リードし、それぞれ異なる読み出し電圧を用いて前記メモリからリードされたそれぞれの第6データに基づいて値毎の閾値電圧分布間のマージンの広さを演算し、前記演算されたマージンの広さを前記診断結果として前記メモリコントローラに報告し、
前記メモリコントローラは、前記マージンの広さと所定の閾値との比較に基づいて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項15に記載のメモリシステム。 - 前記メモリインタフェース回路は、読み出し電圧を変えながら前記第3データを2回リードし、前記読み出し電圧を変えながら前記メモリからリードされた2つの第3データである2つの第7データの間で値が異なるビットの数を取得し、前記取得された数を前記診断結果として前記メモリコントローラに報告し、
前記メモリコントローラは、前記2つの第7データの間で値が異なるビットの数と所定の閾値との比較に基づいて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項15に記載のメモリシステム。 - 前記メモリインタフェース回路は、前記第3データを読み出し電圧を変えながら複数回リードし、前記読み出し電圧を変えながら前記メモリからリードされた第3データである複数の第8データに基づいてソフトビット情報を取得し、前記ソフトビット情報を前記復号化部に入力して誤り訂正を実行する、
ことを特徴とする請求項14に記載のメモリシステム。 - 前記メモリコントローラは、前記第2データを前記メモリインタフェース回路に送信し、
前記メモリインタフェース回路は、バッファをさらに備え、前記メモリコントローラから受信した第2データを前記バッファに格納し、前記バッファに格納された第2データを前記第1の位置にプログラムし、前記第1の位置とは異なる第2の位置に前記第2データと異なる第9データをプログラムし、前記第1の位置に前記バッファに格納された第2データを再プログラムする、
ことを特徴とする請求項14に記載のメモリシステム。 - 前記メモリコントローラは、前記第2データを前記メモリインタフェース回路に送信し、
前記メモリインタフェース回路は、バッファをさらに備え、前記メモリコントローラから受信した第2データを前記バッファに格納し、前記メモリコントローラから前記第2データに対するリードコマンドを受信した場合、前記バッファに格納されている第2データを前記メモリコントローラに送信する、
ことを特徴とする請求項14に記載のメモリシステム。 - 前記メモリは、それぞれODT機能のオン/オフが可能な複数のメモリチップを含み、
前記メモリインタフェース回路は、それぞれのメモリチップとODT制御信号線で一対一に接続され、前記ODT制御信号線を操作することによって各メモリチップのODT機能をオン/オフする、
ことを特徴とする請求項14に記載のメモリシステム。 - 前記メモリは、複数のブロックを備え、
前記メモリインタフェース回路は、前記複数のブロックのそれぞれに対し、定期的なリードを実行する、
ことを特徴とする請求項14に記載のメモリシステム。 - 前記メモリインタフェース回路は、前記ホストに接続されるインタフェースを有さない、
ことを特徴とする請求項14に記載のメモリシステム。 - 前記メモリインタフェース回路と前記メモリコントローラとを接続するインタフェースの接続方式と、前記メモリインタフェース回路と前記メモリとを接続するインタフェースの接続方式とは、互換性がある、
ことを特徴とする請求項14に記載のメモリシステム。 - 前記メモリコントローラは、第1基板に装着され、前記メモリインタフェース回路および前記メモリは、前記第1基板と異なる第2基板にともに装着され、前記第1基板と前記第2基板とはコネクタおよび/またはケーブルで接続されている、
ことを特徴とする請求項14に記載のメモリシステム。 - 前記メモリコントローラは、第2の復号化部を備え、前記診断結果に応じて前記上書きリフレッシュ指示を送信するかまたは通常リフレッシュを実行し、
前記通常リフレッシュは、前記第3データを前記メモリからリードし、前記メモリからリードされた第3データである第10データを前記第2の復号化部によって前記第10データに含まれるエラービットを訂正し、前記エラービットが訂正された第10データである第11データを前記第1の位置と異なる第3の位置にプログラムする処理である、
ことを特徴とする請求項15に記載のメモリシステム。 - 前記メモリインタフェース回路は、前記第4データに含まれているエラービット数を前記診断結果として前記メモリコントローラに報告し、
前記メモリコントローラは、前記エラービット数に基づいて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項2に記載のメモリシステム。 - 前記メモリインタフェース回路は、前記第6データに含まれているエラービット数を前記診断結果として前記メモリコントローラに報告し、
前記メモリコントローラは、前記エラービット数に基づいて前記上書きリフレッシュ指示を送信する、
ことを特徴とする請求項15に記載のメモリシステム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017056573A JP2018160065A (ja) | 2017-03-22 | 2017-03-22 | メモリシステム |
US15/921,566 US10649844B2 (en) | 2017-03-22 | 2018-03-14 | Memory system |
US16/833,809 US11216337B2 (en) | 2017-03-22 | 2020-03-30 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017056573A JP2018160065A (ja) | 2017-03-22 | 2017-03-22 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018160065A true JP2018160065A (ja) | 2018-10-11 |
Family
ID=63582633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017056573A Pending JP2018160065A (ja) | 2017-03-22 | 2017-03-22 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (2) | US10649844B2 (ja) |
JP (1) | JP2018160065A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023029560A (ja) * | 2019-02-14 | 2023-03-03 | キオクシア株式会社 | 不揮発性半導体記憶装置 |
WO2023181892A1 (ja) * | 2022-03-22 | 2023-09-28 | ソニーセミコンダクタソリューションズ株式会社 | メモリコントローラおよびメモリ装置 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018160065A (ja) * | 2017-03-22 | 2018-10-11 | 東芝メモリ株式会社 | メモリシステム |
KR102070307B1 (ko) * | 2018-05-28 | 2020-01-23 | 에센코어 리미티드 | 저장 장치의 구동 방법 |
KR102624620B1 (ko) * | 2018-11-02 | 2024-01-15 | 에스케이하이닉스 주식회사 | 메모리 장치 및 이를 포함하는 메모리 시스템 |
US11004534B2 (en) * | 2019-08-06 | 2021-05-11 | Micron Technology, Inc. | Preemptive read refresh in memories with time-varying error rates |
KR20210018615A (ko) | 2019-08-06 | 2021-02-18 | 삼성전자주식회사 | 스토리지 장치 및 이를 포함하는 스토리지 시스템 |
US11366772B2 (en) | 2020-03-16 | 2022-06-21 | Micron Technology, Inc. | Separate inter-die connectors for data and error correction information and related systems, methods, and apparatuses |
US11681464B2 (en) * | 2020-06-08 | 2023-06-20 | Western Digital Technologies, Inc. | Predicting host access rates for variable bit rate data streams using a data storage controller |
US11177002B1 (en) * | 2020-06-30 | 2021-11-16 | Sandisk Technologies Llc | Programming memory cells using encoded TLC-fine |
US20220051744A1 (en) * | 2020-08-17 | 2022-02-17 | Mediatek Inc. | Memory controller with adaptive refresh rate controlled by error bit information |
JP2022042762A (ja) * | 2020-09-03 | 2022-03-15 | キオクシア株式会社 | 不揮発性メモリ、メモリシステム、および、不揮発性メモリの制御方法 |
US11340813B1 (en) | 2020-11-16 | 2022-05-24 | Micron Technology, Inc. | Reliability scan assisted voltage bin selection |
JP2023119953A (ja) * | 2022-02-17 | 2023-08-29 | キオクシア株式会社 | メモリシステム |
WO2023158185A1 (ko) * | 2022-02-21 | 2023-08-24 | 삼성전자 주식회사 | 전자 장치 및 이의 제어 방법 |
WO2024178374A1 (en) * | 2023-02-24 | 2024-08-29 | Micron Technology, Inc. | Touchup for memory device using embedded encoder and decoder |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9274895B1 (en) | 2013-02-22 | 2016-03-01 | Sandia Corporation | Processing device with self-scrubbing logic |
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 |
US9430324B2 (en) * | 2013-05-24 | 2016-08-30 | Rambus Inc. | Memory repair method and apparatus based on error code tracking |
US20150220394A1 (en) | 2014-02-03 | 2015-08-06 | Kabushiki Kaisha Toshiba | Memory system and method of controlling memory system |
US9495255B2 (en) * | 2014-08-07 | 2016-11-15 | Pure Storage, Inc. | Error recovery in a storage cluster |
US9502129B1 (en) | 2015-09-10 | 2016-11-22 | Kabushiki Kaisha Toshiba | Memory system and method of controlling nonvolatile memory |
JP2018160065A (ja) * | 2017-03-22 | 2018-10-11 | 東芝メモリ株式会社 | メモリシステム |
-
2017
- 2017-03-22 JP JP2017056573A patent/JP2018160065A/ja active Pending
-
2018
- 2018-03-14 US US15/921,566 patent/US10649844B2/en active Active
-
2020
- 2020-03-30 US US16/833,809 patent/US11216337B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023029560A (ja) * | 2019-02-14 | 2023-03-03 | キオクシア株式会社 | 不揮発性半導体記憶装置 |
JP7375231B2 (ja) | 2019-02-14 | 2023-11-07 | キオクシア株式会社 | 不揮発性半導体記憶装置 |
WO2023181892A1 (ja) * | 2022-03-22 | 2023-09-28 | ソニーセミコンダクタソリューションズ株式会社 | メモリコントローラおよびメモリ装置 |
Also Published As
Publication number | Publication date |
---|---|
US10649844B2 (en) | 2020-05-12 |
US20180276073A1 (en) | 2018-09-27 |
US20200226022A1 (en) | 2020-07-16 |
US11216337B2 (en) | 2022-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11216337B2 (en) | Memory system | |
US10545691B2 (en) | Memory system and method of controlling nonvolatile memory | |
US10706944B2 (en) | Memory controller for controlling memory device based on erase state information and method of operating the memory controller | |
US11262939B2 (en) | Memory system, memory controller, and operation method | |
CN113010459A (zh) | 存储器系统、存储器控制器以及操作存储器系统的方法 | |
US11561725B2 (en) | System and operating method thereof | |
US20210382655A1 (en) | Memory device, memory system, and operation method of memory device | |
US11474740B2 (en) | Memory system and memory controller | |
US11321014B2 (en) | Memory system, memory controller, and operating method for performing status check based on status check delay information | |
US11941272B2 (en) | Memory system and operating method of memory system | |
US12039190B2 (en) | Memory system and operating method of the memory system for calibrating a history read bias based on a number of error bits generated in a read operation | |
CN112037837B (zh) | 存储器系统、存储器控制器和存储器设备 | |
US12015425B2 (en) | Controller and operating method thereof for determining reliability data based on syndrome weight | |
US11880599B2 (en) | Memory system and operating method of the memory system inputting an additional read enable toggle signal to output status information of memory device | |
US11507323B2 (en) | Memory device and operating method thereof | |
US11334505B2 (en) | System and method for operating system | |
US20230289260A1 (en) | Controller and operating method of the controller for determining reliability data based on syndrome weight | |
KR20230045933A (ko) | 데이지 체인 토폴로지 기반의 저장 장치 | |
KR20210113743A (ko) | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 | |
KR20210132806A (ko) | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 | |
KR20210028335A (ko) | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20170605 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180905 |