JP2020144958A - メモリシステムおよび方法 - Google Patents

メモリシステムおよび方法 Download PDF

Info

Publication number
JP2020144958A
JP2020144958A JP2019039796A JP2019039796A JP2020144958A JP 2020144958 A JP2020144958 A JP 2020144958A JP 2019039796 A JP2019039796 A JP 2019039796A JP 2019039796 A JP2019039796 A JP 2019039796A JP 2020144958 A JP2020144958 A JP 2020144958A
Authority
JP
Japan
Prior art keywords
memory
memory cells
attribute information
neural network
network model
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
Application number
JP2019039796A
Other languages
English (en)
Inventor
ユー ヤン ウン
Yu-Yang Eun
ユー ヤン ウン
岐笵 朴
Gibeom Park
岐笵 朴
一央 堀内
Kazuo Horiuchi
一央 堀内
遼 山城
Ryo Yamashiro
遼 山城
耕司 堀崎
Koji Horisaki
耕司 堀崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2019039796A priority Critical patent/JP2020144958A/ja
Priority to US16/559,230 priority patent/US11086569B2/en
Publication of JP2020144958A publication Critical patent/JP2020144958A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/04Arrangements for writing information into, or reading information out from, a digital store with means for avoiding disturbances due to temperature effects
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B41/00Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates
    • H10B41/20Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates characterised by three-dimensional arrangements, e.g. with cells on different height levels
    • H10B41/23Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates characterised by three-dimensional arrangements, e.g. with cells on different height levels with source and drain on different levels, e.g. with sloping channels
    • H10B41/27Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates characterised by three-dimensional arrangements, e.g. with cells on different height levels with source and drain on different levels, e.g. with sloping channels the channels comprising vertical portions, e.g. U-shaped channels
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B43/00EEPROM devices comprising charge-trapping gate insulators
    • H10B43/20EEPROM devices comprising charge-trapping gate insulators characterised by three-dimensional arrangements, e.g. with cells on different height levels
    • H10B43/23EEPROM devices comprising charge-trapping gate insulators characterised by three-dimensional arrangements, e.g. with cells on different height levels with source and drain on different levels, e.g. with sloping channels
    • H10B43/27EEPROM devices comprising charge-trapping gate insulators characterised by three-dimensional arrangements, e.g. with cells on different height levels with source and drain on different levels, e.g. with sloping channels the channels comprising vertical portions, e.g. U-shaped channels
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B69/00Erasable-and-programmable ROM [EPROM] devices not provided for in groups H10B41/00 - H10B63/00, e.g. ultraviolet erasable-and-programmable ROM [UVEPROM] devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Human Computer Interaction (AREA)
  • Neurology (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】リード電圧の推定の精度を向上させたメモリシステムを提供する。【解決手段】一つの実施形態によれば、複数のメモリセルと、メモリコントローラとを備える。メモリコントローラは、1以上の参照リード電圧を用いて複数のメモリセルに対するリードを行うことによってしきい値電圧に対するメモリセルの数を示すヒストグラムを取得する。そして、メモリコントローラは、ヒストグラムを、複数のメモリセルに格納されたデータをリードするための1以上の実リード電圧を出力する出力層を備えたトレーニング済みのニューラルネットワークモデルに入力する。そして、メモリコントローラは、出力層から出力された1以上の実リード電圧を用いて複数のメモリセルに対するリードを行う。【選択図】図6

Description

本実施形態は、メモリシステムおよび方法に関する。
不揮発性のメモリセルを有するメモリシステムが知られている。そのようなメモリシステムにおいては、リード処理においては、メモリセルのしきい値電圧とリード電圧との比較に基づいて、そのメモリセルに保持されているデータが判定される。
メモリセルのしきい値電圧は、種々の要因によって変化し得る。メモリシステムは、メモリセルのしきい値電圧が変化したとしてもそのメモリセルから正しいデータを得ることができるように、リード電圧を変更することが可能に構成されている。
米国特許第9069659号明細書
一つの実施形態は、リード電圧の推定の精度を向上させたメモリシステムを提供することを目的とする。
一つの実施形態によれば、複数のメモリセルと、メモリコントローラとを備える。メモリコントローラは、1以上の参照リード電圧を用いて複数のメモリセルに対するリードを行うことによってしきい値電圧に対するメモリセルの数を示すヒストグラムを取得する。そして、メモリコントローラは、ヒストグラムを、複数のメモリセルに格納されたデータをリードするための1以上の実リード電圧を出力する出力層を備えたトレーニング済みのニューラルネットワークモデルに入力する。そして、メモリコントローラは、出力層から出力された1以上の実リード電圧を用いて複数のメモリセルに対するリードを行う。
図1は、実施形態のメモリシステムの構成例を示す模式的な図である。 図2は、実施形態のメモリチップの構成例を示す模式的な図である。 図3は、実施形態のブロックBLKの回路構成を示す模式的な図である。 図4は、実施形態のブロックBLKの一部領域の断面図である。 図5は、実施形態のメモリセルのしきい値電圧の分布の例を示す模式的な図である。 図6は、実施形態のメモリコントローラが使用するトレーニング済みのニューラルネットワークモデルの構成の一例を示す模式的な図である。 図7は、実施形態の属性情報を示す模式的な図である。 図8は、実施形態のニューラルネットワークモデルのトレーニング環境の一例を示す模式的な図である。 図9は、実施形態のデータベースの構成の一例を示す模式的な図である。 図10は、実施形態のコンピュータにおいて実行される、ニューラルネットワークモデルのトレーニングの方法の一例を示すフローチャートである。 図11は、実施形態のメモリシステムにおいて実行される、実リード電圧を推定する動作の一例を示すフローチャートである。 図12は、実施形態のメモリコントローラが使用するトレーニング済みのニューラルネットワークモデルの構成の別の一例を示す模式的な図である。
以下に添付図面を参照して、実施形態にかかるメモリシステムおよび方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
(実施形態)
図1は、実施形態のメモリシステムの構成例を示す模式的な図である。メモリシステム1は、ホスト(Host)2と接続可能に構成されている。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。
メモリシステム1は、ホスト2からアクセス要求(リード要求およびライト要求)を受け付けることができる。
メモリシステム1は、NAND型のフラッシュメモリ(NANDメモリ)100と、ホスト2とNANDメモリ100との間のデータ転送を実行するメモリコントローラ200と、を備えている。
メモリコントローラ200は、ホストインタフェース(Host I/F)201と、RAM(Random Access Memory)202と、CPU(Central Processing Unit)203と、NANDC204と、ECC(Error Correction Circuit)205と、温度センサ206と、を備える。
メモリコントローラ200は、例えばSoC(System-On-a-Chip)として構成され得る。メモリコントローラ200は、複数のチップによって構成されてもよい。メモリコントローラ200は、CPU203に代えて、FPGA(field-programmable gate array)やASIC(application specific integrated circuit)を備えていてもよい。即ち、メモリコントローラ200は、ソフトウェア、ハードウェア、またはこれらの組み合わせによって構成され得る。
RAM202は、バッファ、あるいはCPU203のワークエリアとして使用されるメモリである。RAM202を構成するメモリの種類は、特定の種類に限定されない。例えば、RAM202は、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、またはこれらの組み合わせによって構成される。
ホストインタフェース201は、ホスト2との間の通信インタフェースの制御を実行する。ホストインタフェース201は、CPU203による制御の下で、ホスト2とRAM202との間のデータ転送を実行する。NANDC204は、CPU203による制御の下で、NANDメモリ100とRAM202との間のデータ転送を実行したりする。
CPU203は、ホストインタフェース201、RAM202、NANDC204、およびECC205を制御する。CPU203は、ファームウェアプログラムを実行することによって、上記した各種構成要素の制御を実現する。
ECC205は、NANDメモリ100に送られるデータを符号化する。符号化は、誤り訂正符号による符号化である。ECC205は、NANDメモリ100から送られてきたデータに対し、復号化を実行し、それによって当該データに含まれるビットエラーの検出と訂正とを実施する。
ECC205が使用する符号化の方式は、特定の方式に限定されない。一例では、符号化の方式として、LDPC(Low Density Parity Check)が採用され得る。
温度センサ206は、メモリシステム1内の温度に対応した値を出力する。温度センサ206は、メモリコントローラ200の外に設けられてもよい。温度センサ206は、4つのメモリチップ101のうちの一部の各々または全部の各々に内蔵されてもよい。温度センサ206は、4つのメモリチップ101のうちの一部の各々の近傍または全部の各々の近傍に搭載されてもよい。メモリシステム1が備える温度センサ206の数は、1つに限定されない。
NANDメモリ100は、1以上のメモリチップ(Chip)101を含む。ここでは一例として、NANDメモリ100は4つのメモリチップ101を含む。
図2は、実施形態のメモリチップ101の構成例を示す模式的な図である。図示するようにメモリチップ101は、周辺回路110およびメモリセルアレイ111を備える。
メモリセルアレイ111は、各々が複数の不揮発性メモリセルトランジスタの集合である複数のブロックBLK(BLK0、BLK1、…)を備える。ブロックBLKの各々は、それぞれがワード線およびビット線に関連付けられたメモリセルトランジスタの集合である複数のストリングユニットSU(SU0、SU1、…)を備える。ストリングユニットSUの各々は、メモリセルトランジスタが直列接続された複数のNANDストリング114を備える。なお、ストリングユニットSU内のNANDストリング114の数は任意である。
周辺回路110は、例えば、ロウデコーダ、カラムデコーダ、センスアンプ、ラッチ回路、および電圧発生回路を含む。周辺回路110は、メモリコントローラ200からコマンドを受信すると、メモリセルアレイ111に対し、プログラム処理、リード処理、およびイレース処理のうちの当該コマンドに対応した処理を実行する。
図3は、実施形態のブロックBLKの回路構成を示す模式的な図である。なお、各ブロックBLKは、同一の構成を有している。ブロックBLKは、例えば4つのストリングユニットSU0〜SU3を有する。各ストリングユニットSUは、複数のNANDストリング114を含む。
NANDストリング114の各々は、例えば64個のメモリセルトランジスタMT(MT0〜MT63)および選択トランジスタST1、ST2を含んでいる。メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。そして64個のメモリセルトランジスタMT(MT0〜MT63)は、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されている。なお、メモリセルトランジスタMTは、電荷蓄積層に絶縁膜を用いたMONOS型であってもよいし、電荷蓄積層に導電膜を用いたFG型であってもよい。さらに、NANDストリング114内のメモリセルトランジスタMTの個数は64個に限定されない。
ストリングユニットSU0〜SU3の各々における選択トランジスタST1のゲートは、それぞれ選択ゲート線SGD0〜SGD3に接続される。これに対してストリングユニットSU0〜SU3の各々における選択トランジスタST2のゲートは、例えば選択ゲート線SGSに共通接続される。ストリングユニットSU0〜SU3の各々における選択トランジスタST2のゲートは、ストリングユニットSU毎に異なる選択ゲート線SGS0〜SGS3に接続されてもよい。同一のブロックBLK内にあるメモリセルトランジスタMT0〜MT63の制御ゲートは、それぞれワード線WL0〜WL63に共通接続される。
ストリングユニットSU内にある各NANDストリング114の選択トランジスタST1のドレインは、それぞれ異なるビット線BL(BL0〜BL(L−1)、但しLは2以上の自然数)に接続される。また、ビット線BLは、複数のブロックBLK間で各ストリングユニットSU内にある1つのNANDストリング114を共通に接続する。更に、各選択トランジスタST2のソースは、ソース線SLに共通に接続されている。
つまりストリングユニットSUは、異なるビット線BLに接続され、且つ同一の選択ゲート線SGDに接続されたNANDストリング114の集合である。またブロックBLKは、ワード線WLを共通にする複数のストリングユニットSUの集合である。そしてメモリセルアレイ111は、ビット線BLを共通にする複数のブロックBLKの集合である。
周辺回路110によるプログラム処理およびリード処理は、1つのストリングユニットSUにおける1つのワード線WLに接続されたメモリセルトランジスタMTに対して、一括して実行され得る。1つのストリングユニットSUにおける1つのワード線WLに対してプログラム処理またはリード処理が実行され得る1ビットのデータの集まりを「ページ」と表記する。
周辺回路110によるイレース処理は、ブロックBLK単位で実行される。即ち、1つのブロックBLKに格納された全てのデータは、一括にイレースされる。
図4は、実施形態のブロックBLKの一部領域の断面図である。本図に示されるように、p型のウェル領域(半導体基板)10上に、複数のNANDストリング114が形成されている。すなわち、ウェル領域10上には、選択ゲート線SGSとして機能する例えば4層の配線層11、ワード線WL0〜WL63として機能する64層の配線層12、および選択ゲート線SGDとして機能する例えば4層の配線層13が、順次積層されている。積層された配線層間には、図示せぬ絶縁膜が形成されている。
そして、これらの配線層13、12、11を貫通してウェル領域10に達するピラー状の導電体14が形成されている。導電体14の側面には、ゲート絶縁膜15、電荷蓄積層(絶縁膜または導電膜)16、およびブロック絶縁膜17が順次形成され、これらによってメモリセルトランジスタMT、並びに選択トランジスタST1およびST2が形成されている。導電体14は、NANDストリング114の電流経路として機能し、各トランジスタのチャネルが形成される領域となる。そして導電体14の上端は、ビット線BLとして機能する金属配線層18に接続される。
ウェル領域10の表面領域内には、n+型不純物拡散層19が形成されている。拡散層19上にはコンタクトプラグ20が形成され、コンタクトプラグ20は、ソース線SLとして機能する金属配線層21に接続される。更に、ウェル領域10の表面領域内には、p+型不純物拡散層22が形成されている。拡散層22上にはコンタクトプラグ23が形成され、コンタクトプラグ23は、ウェル配線CPWELLとして機能する金属配線層24に接続される。ウェル配線CPWELLは、ウェル領域10を介して導電体14に電位を印加するための配線である。
以上の構成が、半導体基板に平行な第2方向D2に複数配列されており、第2方向D2に並ぶ複数のNANDストリング114の集合によってストリングユニットSUが形成される。
なお、図2〜4に示された構成は一例である。メモリセルアレイ111の構成は、上記した構成に制限されない。例えば、メモリセルアレイ111は、NANDストリング114が2次元的に配列された構成を有していてもよい。
以降では、メモリセルトランジスタMTを、単に、メモリセルと表記する。
図5は、実施形態のメモリセルのしきい値電圧の分布の例を示す模式的な図である。図5に含まれる3つのグラフにおいて、縦軸は、メモリセルの数(ビットカウント)を示しており、横軸は、しきい値電圧(Vth)を示している。なお、以降に説明される例では、特に断りがない限り、各メモリセルにデータを保持する方式として、TLC(Triple Level Cell)と呼ばれる方式が適用されていることとしている。TLCの方式によれば、各メモリセルは、3ビットのデータを保持することができる。
TLCの場合、しきい値電圧の取り得る範囲は、8つの範囲に区分される。この8つの区分を、しきい値電圧が低いほうから順に、“Er”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、および“G”ステートと呼ぶことにする。各メモリセルのしきい値電圧は、プログラム処理の際に、周辺回路110によって、“Er”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、および“G”ステート、の何れかに属するように、制御される。
その結果、しきい値電圧に対するメモリセルの数をプロットした場合、メモリセルのしきい値電圧の分布は、図5の(A)に示されるように、それぞれ異なるステートに属する8つのローブを形成する。
8つのステートは、それぞれ異なる3ビットのデータに対応する。一例では、“Er”ステートは“111”に対応し、“A”ステートは“110”に対応し、“B”ステートは“100”に対応し、“C”ステートは“000”に対応し、“D”ステートは“010”に対応し、“E”ステートは“011”に対応し、“F”ステートは“001”に対応し、“G”ステートは“101”に対応する。このように、各メモリセルは、そのしきい値電圧が属するステートに対応したデータを保持することができる。
なお、1つのメモリセルに保持される3ビットのデータの各桁は、位置に対応した名称で表記される。例えばLSB(Least Significant Bit)はロアービット、MSB(Most Significant Bit)はアッパービット、LSBとMSBとの間のビットはミドルビット、と称される。
しきい値電圧は、イレース処理によって“Er”ステートまで低下せしめられる。また、しきい値電圧は、プログラム処理によって、“Er”ステートに維持されるか、または“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、および“G”ステート、の何れかに至るまで、上昇せしめられる。
隣接する2つのステートの境界には、データの判定のための電圧が設定される。この電圧を、後述する参照リード電圧(reference read voltage)と区別するために、実リード電圧(actual read voltage)、と表記する。
例えば、図5の(A)に例示されるように、“Er”ステートと“A”ステートとの間に実リード電圧Vaが設定され、“A”ステートと“B”ステートとの間に実リード電圧Vbが設定され、“B”ステートと“C”ステートとの間に実リード電圧Vcが設定され、“C”ステートと“D”ステートとの間に実リード電圧Vdが設定され、“D”ステートと“E”ステートとの間に実リード電圧Veが設定され、“E”ステートと“F”ステートとの間に実リード電圧Vfが設定され、“F”ステートと“G”ステートとの間に実リード電圧Vgが設定される。つまり、8つのステートが設定されるTLCモードでは、7点の実リード電圧が設定される。リード処理においては、周辺回路110は、複数点の実リード電圧を用いてメモリセルが属するステートを特定し、特定したステートをデータにデコードする。
ここで、メモリセルのしきい値電圧は、種々の要因によって変化し得る。しきい値電圧のローブの一部または全部がステート間の境界にある実リード電圧を越えた場合、データの誤判定が発生する。即ち、プログラム処理時と異なった値が読み出される。プログラム処理時と異なった値を、ビットエラーと表記する。
メモリコントローラ200は、ビットエラーに対し、ECC205によるエラー訂正と、実リード電圧のシフトと、で対処することができる。
例えば、メモリコントローラ200は、NANDメモリ100から取得したデータに対してECC205を用いたエラー訂正を実行する。エラー訂正に失敗した場合、メモリコントローラ200は、実リード電圧Va〜Vgの最適値を推定し、推定によって得られた実リード電圧Va〜Vgの最適値を実リード電圧Va〜Vgの新たな設定値として設定してリード処理をリトライする。
実リード電圧Va〜Vgの最適値は、ビットエラーの発生率を出来るだけ小さくすることができる実リード電圧Va〜Vgの値をいう。
図5の(B)は、図5の(A)に示される分布が得られてからしばらくの間、メモリシステム1が使用された後に得られる、しきい値電圧の分布を示している。本図に示されるように、それぞれ異なるステートに対応する8つのローブは、図5の(A)に示される8つのローブとは形状および位置が異なっている。8つのローブの裾野が重なり合って、1つの連続した分布が形成されている。このような分布が得られた場合、当該分布が有する7つの極小点を実リード電圧Va〜Vgとして設定すれば、ビットエラーの発生率を最小にすることが可能と考えられる。即ち、Va_opt,Vb_opt,Vc_opt,Vd_opt,Ve_opt,Vf_opt,Vg_optが、図5の(B)の状態の分布における実リード電圧Va〜Vgの最適値に該当する。
なお、実リード電圧Va〜Vgの最適値は、必ずしも当該分布が有する極小点、例えばビットエラーの発生率を最小にするための値、でなくてもよい。
本実施形態および後述する実施形態では、メモリコントローラ200は、トレーニング済みのニューラルネットワークモデルを用いることによって実リード電圧Va〜Vgの最適値を推定する。
具体的には、メモリコントローラ200は、予め決められた1点以上の参照リード電圧を用いてリードを実行することによって、しきい値電圧に対するメモリセルの数を示すヒストグラムを取得して、取得したヒストグラムを、トレーニング済みのニューラルネットワークモデルに入力する。当該ニューラルネットワークモデルは、実リード電圧Va〜Vgを出力する出力層を備える。メモリコントローラ200は、ニューラルネットワークモデルの出力層から出力された実リード電圧Va〜Vgを、データを判定するための実際のリード電圧、つまり実リード電圧として用いて、リードを実行する。
図5の(B)の例では、7点の参照リード電圧Vr1,Vr2,Vr3,Vr4,Vr5,Vr6,Vr7が予め設定されている。
ワード線に参照リード電圧Vri(ただしiは1から7までの整数)を印加した場合、当該ワード線に接続されたメモリセルの群のうち、しきい値電圧がVriより低いメモリセルは、オン状態となり、しきい値電圧がVriより高いメモリセルは、オフ状態となる。メモリセルがオン状態であるかオフ状態であるかは、周辺回路110が備えるセンスアンプによって判定される。
メモリコントローラ200は、周辺回路110に、対象のワード線に参照リード電圧Vr1,Vr2,Vr3,Vr4,Vr5,Vr6,Vr7を順次印加させて、参照リード電圧毎に各メモリセルがオン状態であるかオフ状態であるかを判定させる。メモリコントローラ200は、参照リード電圧毎に、対象のワード線に接続された複数のメモリセルのうちの、オン状態およびオフ状態のうちの予め決められた状態のメモリセルの数をカウントする。そして、メモリコントローラ200は、参照リード電圧毎に得られたカウント値に基づいて、参照リード電圧Vr1,Vr2,Vr3,Vr4,Vr5,Vr6,Vr7によって区切られた8つの区間をビンとし、メモリセルの数を度数とするヒストグラムを生成する。
例えば、参照リード電圧Vriが印加された場合のオン状態のメモリセルの数をCiと表記し、対象のワード線に接続されたメモリセルの数をCmtと表記すると、VrjとVr(j+1)とによって区切られた区間の度数は、C(j+1)−Cjの演算によって得ることができる。ただし、jは1から6までの整数である。Vr1より小さい区間の度数は、C1とされる。Vr7より大きい区間の度数は、Cmt−C7とされる。
図5の(C)は、上記の処理によって得られたヒストグラムを示す模式図である。
なお、参照リード電圧Vr1〜Vr7は、予め設定されている。参照リード電圧Vr1〜Vr7の設定方法は、特定の方法に限定されない。
例えば、7つの実リード電圧Va〜Vgのそれぞれの初期値が予め決められており、メモリコントローラ200は、各実リード電圧の初期値からの差分を用いて周辺回路110に各実リード電圧を設定する場合がある。そのような場合においては、7つの実リード電圧Va〜Vgの初期値が7つの参照リード電圧Vr1〜Vr7として使用されてもよい。
なお、参照リード電圧Vr1〜Vr7は、トレーニングにおいて入力データとして使用されるヒストグラムを得るために使用された参照リード電圧と等しい。
また、図5の例では、参照リード電圧の数は、実リード電圧の数と等しい。参照リード電圧の数は、実リード電圧の数と異なっていてもよい。例えば、参照リード電圧の数が3つであり、メモリコントローラ200は、当該3つの参照リード電圧を用いて4つのビンを有するヒストグラムを生成してもよい。
図6は、実施形態のメモリコントローラ200が使用するトレーニング済みのニューラルネットワークモデル300の構成の一例を示す模式的な図である。
ニューラルネットワークモデル300は、1つの隠れ層を有する多層パーセプトロン(Multi-Layer Perceptron : MLP)の構成を有している。ニューラルネットワークモデル300は、全結合のMLP(fully connected MLP)であってもよいし、非全結合のMLP(sparsely connected MLP)であってもよい。隠れ層で使用される活性化関数は、例えばReLU(Rectified Linear Units)関数であり、出力層で使用される活性化関数は、例えば線形関数である。
図6の例では、入力層に入力されるデータは、ヒストグラムと、属性情報とを含む。入力層は、ヒストグラムが入力されるノードとして、ヒストグラムが備えるビンの数に対応した数(即ち8個)のノードを備える。また、入力層は、属性情報が入力されるノードとして、属性情報の数に対応した数(ここでは1個)のノードを備える。
出力層は、実リード電圧Va〜Vgの数に対応した数(即ち7個)のノードを備える。隠れ層は、1以上のノードによって構成される。図6の例では、隠れ層は15個のノードを備える。
隠れ層および出力層では、各ノードは、バイアスおよび前の層のノードからの各入力値に対して重みを乗じ、重みが乗じられた後の各値の総和に対して活性化関数を適用し、活性化関数の適用によって得られた値を出力する。
各重みは、トレーニングによって予め決定されている。つまり、ニューラルネットワークモデル300は、ヒストグラムおよび属性情報を含む入力データを実リード電圧Va〜Vgの最適値にマップするように予めトレーニングされている。
図7は、実施形態の属性情報を示す模式的な図である。
属性情報は、例えば、メモリコントローラ200の使用の状況に関する情報を含む。メモリコントローラ200の使用の状況に関する情報は、例えば、プログラム/イレースサイクルの実行回数、リードの実行回数、プログラムが実行されてからの経過時間、温度情報、などである。
プログラム/イレースサイクルは、空のブロックBLKに対する初回の書き込みから当該ブロックBLK内のデータのイレースまでのプロセスをいう。プログラム/イレースサイクルの実行回数が増加するほど、しきい値電圧が変化しやすくなる。よって、プログラム/イレースサイクルをニューラルネットワークモデル300の入力データに含めることによって、プログラム/イレースサイクルの実行回数に起因するしきい値電圧の変化を考慮した推定が可能となる。
また、メモリセルに格納されたデータが多数回、リードされると、当該メモリセルまたは当該メモリセルの近傍のメモリセルのしきい値電圧が変化し得る。この現象は、リードディスターブとして知られている。リードの実行回数をニューラルネットワークモデル300の入力データに含めることによって、リードディスターブを考慮した推定が可能となる。
また、メモリセルのしきい値電圧は、時間の経過とともに低下する傾向がある。プログラムが実行されてからの経過時間をニューラルネットワークモデル300の入力データに含めることによって、時間の経過によるしきい値電圧の低下を考慮した推定が可能となる。
また、メモリセルの特性、例えば時間経過によるしきい値電圧の低下の速度は、メモリセルの温度に応じて変化する。温度情報をニューラルネットワークモデル300の入力データに含めることによって、温度に応じたメモリセルの特性の違いを考慮した推定が可能となる。
なお、ニューラルネットワークモデル300に入力される温度情報は、NANDメモリ100へのプログラム時における温度情報であってもよいし、NANDメモリ100からのリード時における温度情報であってもよいし、プログラム時における温度情報およびリード時における温度情報の対であってもよい。つまり、ニューラルネットワークモデル300に入力される温度情報としては、任意のタイミングで取得された温度情報が使用され得る。
また、属性情報は、メモリセルの位置に関する情報であってもよい。メモリセルの位置に関する情報は、例えばワード線番号である。
メモリセルアレイ111が図2〜4に例示されたような3次元構成を有する場合、メモリセルアレイ111は、例えば次のように製造される。即ち、まず、多数の配線層11、12、13が積層される。その後、これらの配線層11、12、13を貫通する孔がドライエッチングなどによって形成され、その孔にピラー状の導電体14などが形成される。
ここで、孔の径を深さ方向のどの位置でも一定とすることは難しい。孔は、例えば、深さ方向の位置に応じて拡径したり縮径したりする傾向がある。これによって、各メモリセルの特性は、深さ方向の位置毎に、つまりワード線の位置毎に、異なる場合がある。
ワード線番号をニューラルネットワークモデル300の入力データに含めることによって、ワード線の位置毎のメモリセルの特性の違いを考慮した推定が可能となる。
一般に、線形回帰モデルによれば、ヒストグラムおよび属性情報のように複数種類の入力データから実リード電圧Va〜Vgの最適値を高精度に推定することが困難である。
実施形態によれば、ニューラルネットワークモデル300は、非線形活性化関数によって活性化される隠れ層を備えた多層パーセプトロンによって構成されている。この構成により、ニューラルネットワークモデル300は、非線形回帰モデルとして機能する。ニューラルネットワークモデル300は、非線形回帰によって、ヒストグラムと属性情報とを含む入力データを、実リード電圧Va〜Vgの最適値に、高い精度で対応付けることができる。つまり、メモリコントローラ200は、ニューラルネットワークモデル300を用いることによって、実リード電圧Va〜Vgの最適値を高精度に推定することが可能である。
また、ニューラルネットワークモデル300の入力データに属性情報を含めることによって、メモリシステム1の使用の状況が異なる種々のケースにおいて実リード電圧の最適値を高精度に推定することが可能となる。
なお、入力層が備える属性情報の入力用のノードの数は、2以上であってもよい。つまり、入力層は、それぞれ異なる種類の属性情報が入力される2以上のノードを備え得る。
また、入力層が備えるヒストグラムの入力用のノードの数は8に限定されない。入力層が備えるヒストグラムの入力用のノードの数は、入力されるヒストグラムのビンの数に応じて変更され得る。
また、隠れ層で使用される活性化関数は、ReLU関数に限定されない。隠れ層で使用される活性化関数として、シグモイド関数などを含む任意の非線形活性化関数を利用することができる。
また、ニューラルネットワークモデル300が備える隠れ層の数は、1つに限定されない。ニューラルネットワークモデル300が備える隠れ層の数は、2以上であってもよい。
上述したニューラルネットワークモデル300の構成は、モデル情報207に記録されている。モデル情報207は、例えば、複数のノードの定義と、ノード間の接続関係の定義と、バイアスと、を含む。モデル情報207では、各ノードには、活性化関数とトレーニング済みの重みが関連付けられている。
モデル情報207は、例えばNANDメモリ100内の所定の位置に予め格納されている。メモリシステム1の起動時には、CPU203は、モデル情報207をRAM202にロードする。そして、CPU203は、RAM202にロードされたモデル情報207に基づいて、各ノードに関連付けられた重み、バイアス、活性化関数に基づく計算を行うことによって、ニューラルネットワークモデル300としての計算を実現する。
なお、ニューラルネットワークモデル300は、CPU203に替えて、専用のハードウェア回路によって実現することも可能である。例えば、レジスタ、乗算器、および加算器を備えるプロセッサユニットの群によってニューラルネットワークモデル300が構成されてもよい。各プロセッサユニットが、ニューラルネットワークモデル300の各ノードと同様の接続関係で相互に接続され、各プロセッサユニットのレジスタには、トレーニング済みの重みが格納されることで、プロセッサユニットの群をニューラルネットワークモデル300として機能させることが可能である。
CPU203は、ニューラルネットワークモデル300としての計算によって得られた実リード電圧の計算値を電圧情報208に実リード電圧の設定値として記録する。CPU203は、NANDメモリ100に対してデータのリードを行う際には、電圧情報208に記録された実リード電圧の設定値を使用する。
なお、電圧情報208には、実リード電圧が、所定の単位領域毎に記録される。単位領域は、例えばブロックBLKである。つまり、1つのブロックBLKに含まれる全てのメモリセルに対し、共通する実リード電圧が使用される。なお、単位領域はブロックBLKに限定されない。例えば、単位領域はワード線などであってもよい。
また、図1の例では、電圧情報208はRAM202に格納されている。例えば、電圧情報208は、メモリシステム1の電源断の前には、RAM202からNANDメモリ100に退避される。メモリシステム1の起動後には、NANDメモリ100からRAM202にロードされる。なお、電圧情報208は、NANDメモリ100に退避されなくてもよい。また、電圧情報208が格納される位置はRAM202に限定されない。
上記したニューラルネットワークモデル300は、予めトレーニングされている。
図8は、実施形態のニューラルネットワークモデル300のトレーニング環境の一例を示す模式的な図である。
図8に示されるように、ニューラルネットワークモデル300のトレーニングは、CPU401と、メモリ402と、を備えたコンピュータ400において実行される。
メモリ402は、揮発性メモリ、不揮発性メモリ、またはそれらの組み合わせによって構成される。メモリ402には、モデル情報403と、データベース404と、が予め格納される。
データベース404には、それぞれ正解データが対応付けられた多数のトレーニングデータが記録されている。
図9は、実施形態のデータベース404の構成の一例を示す模式的な図である。データベース404は、複数のレコードを備える。各レコードには、ヒストグラムと、属性情報と、実リード電圧の最適値と、が格納される。トレーニングでは、各レコードに格納されているこれらの情報のうちの、ヒストグラムおよび属性情報は、入力データとして使用され、実リード電圧の最適値は、正解データとして使用される。
各レコードの内容は、メモリチップ101の1以上のサンプル品などから予め取得されたものである。例えば、メモリチップ101の1以上のサンプル品が試験装置に接続され、試験装置は、メモリシステム1の実際の使用を模擬した試験を実施する。つまり、試験装置は、各サンプル品に対して実際の使用で想定される種々のコマンドを種々のパターンで送信する。試験装置は、各サンプル品の周囲の温度を変化させてもよい。
試験では、アクセスのパターンや環境温度を異ならせることで、各サンプル品は、プログラム/イレースサイクルの実行回数、リードの実行回数、プログラムされてからの経過時間、または使用時の温度、などの点で異なる状態にされる。試験装置は、各状態においてヒストグラムを取得する。
つまり、試験装置は、サンプル品が備える周辺回路110に、対象のワード線に参照リード電圧Vr1,Vr2,Vr3,Vr4,Vr5,Vr6,Vr7を順次印加させて、参照リード電圧毎に各メモリセルがオン状態であるかオフ状態であるかを判定させる。試験装置は、参照リード電圧毎に、対象のワード線に接続された複数のメモリセルのうちの、オン状態およびオフ状態のうちの予め決められた状態のメモリセルの数をカウントする。そして、試験装置は、参照リード電圧毎に得られたカウント値に基づいて、参照リード電圧Vr1,Vr2,Vr3,Vr4,Vr5,Vr6,Vr7によって区切られた8つの区間をビンとし、メモリセルの数を度数とするヒストグラムを生成する。
試験装置は、サンプル品からヒストグラムを取得する際に、実リード電圧の最適値を取得する。実リード電圧の最適値の取得方法は、特定の方法に限定されない。実リード電圧の最適値は、例えば、ディストリビューションリードを実行することによって得ることができる。ディストリビューションリードとは、ワード線に印加される電圧を所定の刻み幅ごとにシフトさせながら当該ワード線に接続された、オン状態のメモリセルの数またはオフ状態のメモリセルの数を観測することによって、例えば図5の(B)に示されるようなメモリセルのしきい値電圧の分布を測定する動作をいう。試験装置は、ディストリビューションリードによって得られたメモリセルのしきい値電圧の分布から、7つの極小点を特定し、特定された7つの極小点を実リード電圧の最適値として取得する。なお、実リード電圧の最適値の取得方法はこれに限定されない。
試験装置は、ヒストグラムと、ヒストグラムを取得した際に取得した実リード電圧の最適値とを出力する。また、試験装置は、ヒストグラムを取得した際に、プログラム/イレースサイクルの実行回数、リードの実行回数、プログラムされてからの経過時間、温度、またはヒストグラムが取得されたワード線を示すワード線番号を、属性情報として出力する。データベース404の1つのレコードには、試験装置から出力された属性情報、ヒストグラム、および実リード電圧の最適値が記録される。
なお、データベース404を構築する方法は上記の方法に限定されない。属性情報、ヒストグラム、および実リード電圧の最適値のうちの一部または全部は、シミュレーションによって取得されてもよい。また、種々の条件で使用された1以上のメモリシステムが用意され、当該1以上のメモリシステムから属性情報、ヒストグラム、および実リード電圧の最適値のうちの一部または全部が取得されてもよい。
図8に説明を戻す。
モデル情報403は、トレーニングが完了する前のニューラルネットワークモデル300の構成が記録された情報である。モデル情報403は、例えば、モデル情報207と同様のデータ構造を有している。ただし、トレーニングの開始の前では、各重みには初期値が設定されている。
CPU401は、モデル情報403に基づいて、各ノードに関連付けられた重み、バイアス、活性化関数に基づく計算を行うことによって、ニューラルネットワークモデルとしての計算を実現する。CPU401は、モデル情報403に基づくニューラルネットワークモデルに対し、各レコードに格納された属性情報およびヒストグラムを入力データとして使用し、入力データと同一のレコードに格納された実リード電圧の最適値を正解データとして使用するトレーニングを実行する。これによって、最適化されたニューラルネットワークモデル、即ちニューラルネットワークモデル300が生成される。
図10は、実施形態のコンピュータ400において実行される、ニューラルネットワークモデルのトレーニングの方法の一例を示すフローチャートである。なお、本図の例では、ミニバッチトレーニングが適用されている。つまり、データベース404に含まれる全レコードが、レコードの数がほぼ等しい複数のグループ(ミニバッチ)に分割され、ミニバッチ毎に損失関数(loss function)が演算される。トレーニングの方法としては、ミニバッチトレーニングに替えて、バッチトレーニングまたはオンライントレーニングが適用されてもよい。
図10に示されるように、まず、CPU401は、データベース404に含まれる全レコードを、複数のミニバッチに分割する(S101)。S101では、CPU401は、各ミニバッチに含めるレコードをできるだけランダムに選択する。
そして、CPU401は、1つのミニバッチを選択する(S102)。
そして、CPU401は、フォワードプロパゲーションを実行することで、実リード電圧を計算する(S103)。つまり、CPU401は、モデル情報403に基づくニューラルネットワークモデルの入力層に、ヒストグラムと属性情報とを入力して、当該ニューラルネットワークモデルの出力層から実リード電圧を取得する。CPU401は、S102によって選択されたミニバッチに含まれるレコード毎に、実リード電圧の計算を実行する。
続いて、CPU401は、S103によって得られた実リード電圧の計算値(calculated value)と、正解データ(つまり実リード電圧の最適値)と、に基づいて、損失関数を計算する(S104)。
損失関数の演算式は特定の演算式に限定されない。例えば、損失関数Lossは、例えば下記の式(1)のように定義される。
Loss = Mean (WeightLS * MSE_Vi) ・・・(1)
式(1)において、添え字iはaからgまでの何れかのアルファベットである。MSE_Viは、実リード電圧Viの計算値と実リード電圧Viの最適値との差分の2乗を、ミニバッチに含まれる全レコードについて平均することによって得られる値を示す。
Meanは、7つのリード電圧Va〜Vgについて値の平均を演算する処理を示す。式(1)の例では、リード電圧毎に重みWeightLSが加算されたMSE_Viが、平均の演算の対象に該当する。
つまり、式(1)によれば、損失関数Lossは、重みが適用されたリード電圧毎の平均二乗誤差を平均することによって得られる。
別の例では、損失関数Lossは、例えば下記の式(2)のように定義される。
Loss = Mean (WeightLS * MSE_FBCi) ・・・(2)
式(2)において、MSE_FBCiは、実リード電圧Viの計算値を用いてデータをリードした場合に検出されるエラービットの数と、実リード電圧Viの最適値を用いてデータをリードした場合に検出されるエラービットの数と、の差分の2乗を、ミニバッチに含まれる全レコードについて平均することによって得られる値を示す。エラービットの数は、実際のリードによって求められてもよいし、シミュレーションによって求められてもよい。
つまり、式(2)によれば、損失関数Lossは、重みが適用されたリード電圧毎のエラービットの数の平均二乗誤差を平均することによって得られる。
なお、損失関数Lossの定義は、上記した2つの例に限定されない。
損失関数で使用される重みWeightLSは、任意に設定される。図5の(A)を用いて説明されたデータコーディングに従えば、各メモリセルに格納される3ビットのデータのうちのミドルビットは、Vb,Vd,およびVgの3つの実リード電圧を用いて判定され得る。これに対し、アッパービットおよびロアービットは、2つの実リード電圧を用いて判定され得る。つまり、ミドルビットの判定には、他のビットの判定に比べて多くの実リード電圧を用いた判定を必要とする。したがって、ミドルビットは、しきい値電圧の変化に対する耐性が、他のビットに比べて弱い。そこで、Vb,Vd,およびVgにかかる重みを、Va,Vc,Ve,Vfにかかる重みよりも大きくすることで、Vb,Vd,およびVgを他の実リード電圧よりも最適値により近づけるようにしてもよい。
S104に続いて、CPU401は、バックプロパゲーションを実行して、ニューラルネットワークモデルに含まれる重み毎に損失関数の勾配を計算する(S105)。
そして、CPU401は、ニューラルネットワークモデルに含まれる各重みを、損失関数の勾配に基づいて更新する(S106)。つまり、CPU401は、モデル情報403に含まれる各重みを更新する。
そして、CPU401は、まだ選択されていないミニバッチが存在するか否かを判定する(S107)。まだ選択されていないミニバッチが存在する場合(S107:Yes)、S102に制御が移行して、CPU401は、まだ選択されていないミニバッチから一つのミニバッチを選択する。
まだ選択されていないミニバッチが存在しない場合(S107:No)、CPU401は、トレーニングを終了するか否かを判定する(S108)。トレーニングの終了の判定の基準は、特定の基準に限定されない。CPU401は、予め決められた数のエポックが実行された場合に、トレーニングを終了すると判定してもよい。または、CPU401は、損失関数が所定以下になった場合に、トレーニングを終了すると判定してもよい。
トレーニングを終了しないと判定された場合(S108:No)、制御がS101に移行して、CPU401は、各バッチに含まれるレコード群をシャッフルする。
トレーニングを終了すると判定された場合(S108:Yes)、コンピュータ400によるトレーニングが完了する。
トレーニング後のモデル情報403は、モデル情報207としてメモリシステム1に実装される。
図11は、実施形態のメモリシステム1において実行される、実リード電圧を推定する動作の一例を示すフローチャートである。
まず、メモリコントローラ200は、対象のワード線に対して参照リード電圧Vr1,Vr2,Vr3,Vr4,Vr5,Vr6,Vr7を用いたリードを行うことによって、参照リード電圧毎に各メモリセルの状態を取得する(S201)。
そして、メモリコントローラ200(例えばCPU203)は、参照リード電圧毎の各メモリセルの状態に基づいて、ヒストグラムを生成する(S202)。
続いて、メモリコントローラ200は、属性情報を取得する(S203)。属性情報の取得の方法は、属性情報の種類に応じて異なる。
例えば、プログラム/イレースサイクルの実行回数、リードの実行回数、およびプログラムが実行されてからの経過時間は、メモリコントローラ200によって管理情報209に記録されている。メモリコントローラ200は、管理情報209からプログラム/イレースサイクルの実行回数、リードの実行回数、およびプログラムが実行されてからの経過時間のうちの属性情報に該当する情報を、管理情報209から取得することができる。
なお、プログラム/イレースサイクルの実行回数、リードの実行回数、およびプログラムが実行されてからの経過時間は、ブロックBLKなどの所定の単位領域毎に記録されている。メモリコントローラ200は、対象のワード線を含む単位領域にかかる属性情報を、管理情報209から取得する。なお、単位領域はブロックBLKに限定されない。単位領域はワード線などであってもよい。
なお、管理情報209は、例えばRAM202に格納されており、管理情報209に対する記録または更新は、RAM202上で実行される。管理情報209は、メモリシステム1の電源断の前には、RAM202からNANDメモリ100に退避され、メモリシステム1の起動後には、NANDメモリ100からRAM202にロードされる。
また、温度が属性情報として使用される場合には、メモリコントローラ200は、温度センサ206の出力値を属性情報として取得することができる。または、メモリコントローラ200は、プログラム時などに温度センサ206の出力値を取得して、当該出力値を管理情報209にプログラム時の温度情報として記録し、管理情報209に記録された温度情報を属性情報として取得してもよい。
また、ワード線番号が属性情報として使用される場合には、メモリコントローラ200は、参照リード電圧を用いたリードが実行されたワード線の番号を属性情報として取得することができる。
続いて、メモリコントローラ200は、フォワードプロパゲーションを実行することで、実リード電圧を計算する(S204)。つまり、メモリコントローラ200は、モデル情報207に基づくニューラルネットワークモデル300の入力層に、ヒストグラムと属性情報とを入力して、当該ニューラルネットワークモデル300の出力層から出力される実リード電圧を取得する。
メモリコントローラ200は、取得した実リード電圧の計算値を電圧情報208に記録する(S205)。メモリコントローラ200は、以降のリードでは、電圧情報208に記録された計算値を使用する。
なお、図11に示された実リード電圧の推定の動作は、任意のタイミングで実行される。
例えば、ECC205が、あるワード線から読み出されたデータに含まれるエラービットの訂正に失敗した場合、メモリコントローラ200は、当該ワード線を対象のワード線と見なして図11に示される実リード電圧の推定を実行する。そして、メモリコントローラ200は、実リード電圧の推定によって更新された実リード電圧の設定値を用いることによって、当該ワード線に格納されたデータのリードを再び実行する。
別の例では、ECC205が、あるワード線から読み出されたデータに含まれるエラービットの訂正に成功しても、エラービットの数が所定個以上であった場合、当該ワード線を対象のワード線と見なして実リード電圧の推定を実行する。そして、メモリコントローラ200は、次回以降のリードでは、実リード電圧の推定によって更新された実リード電圧の設定値を用いる。
実リード電圧の推定の動作は、所定の時間間隔で実行されてもよい。つまり、ECC205による誤り訂正の結果に依存しない任意の基準によって、実リード電圧の推定の動作を実行するタイミングが決定されてもよい。
なお、以上では、TLCの方式でデータを保持するメモリセルに対応したニューラルネットワークモデル300を挙げて説明した。出力層を構成するノードの数を変更することで、ニューラルネットワークモデル300を、SLC(Single Level Cell)、MLC(Multi Level Cell)、QLC(Quad Level Cell)など、TLC以外の方式でデータを保持するメモリセルに対応させることが可能である。
図12は、実施形態のメモリコントローラ200が使用するトレーニング済みのニューラルネットワークモデルの構成の別の一例を示す模式的な図である。本図は、QLCの方式でデータを保持するメモリセルに対応するニューラルネットワークを示している。QLCの方式によれば、各メモリセルは、4ビットのデータを保持することができる。
図12の例によれば、入力層は、16個のビンを有するヒストグラムを入力するための16個のノードと、管理情報用の3個のノードと、によって構成される。本図に示されるニューラルネットワークモデル300の入力層に入力される16個のビンを有するヒストグラムは、15点の参照リード電圧を使用することによって取得される。管理情報用の3個のノードには、それぞれ異なる種類の管理情報が入力される。例えば、3個のノードには、ワード線番号、プログラム/イレースサイクルの実行回数、およびリードの実行回数が入力される。
出力層は、各メモリセルに格納される4ビットのデータを判定するための15点の実リード電圧Va〜Voの最適値を出力するための15個のノードによって構成される。そして隠れ層は、1以上のノードによって構成される。図12では、一例として、隠れ層は、32個のノードによって構成されている。
なお、図12の例では、隠れ層で使用される活性化関数は、ReLU関数であり、出力層で使用される活性化関数は、線形関数である。隠れ層で使用される活性化関数は、ReLU関数に限定されない。隠れ層で使用される活性化関数としては、任意の非線形活性化関数を利用することが可能である。
このように、出力層が備えるノードの数を変更することによって、種々の方式でデータを保持するメモリセルに対応したニューラルネットワークモデル300を得ることができる。
以上述べたように、実施形態によれば、メモリコントローラ200は、1以上の参照リード電圧を用いてしきい値電圧に対するメモリセルの数を示すヒストグラムを取得する。そして、メモリコントローラ200は、取得されたヒストグラムを、1以上の実リード電圧を出力する出力層を備えたトレーニング済みのニューラルネットワークモデル300に入力して、出力層から出力された1以上の実リード電圧を、リードに使用する。ニューラルネットワークモデル300は、非線形活性化関数によって活性化される1以上の隠れ層を備える。
これによって、非線形回帰が実現するので、実リード電圧の最適値を高い精度で推定することが可能となる。
なお、ニューラルネットワークモデル300は、必ずしも非線形活性化関数によって活性化される1以上の隠れ層を備えなくてもよい。その場合、ニューラルネットワークモデル300は、線形回帰を行うことになる。ヒストグラムと実リード電圧の最適値との関係が線形である場合には、ニューラルネットワークモデル300が非線形活性化関数によって活性化される1以上の隠れ層を備えなくても、実リード電圧の最適値を高い精度で推定することが可能である。
また、ニューラルネットワークモデル300は、ヒストグラムが入力されるノードと属性情報が入力されるノードとを備える入力層を備えている。つまり、メモリコントローラ200は、ニューラルネットワークモデル300の入力層に、ヒストグラムと属性情報とを入力する。
ニューラルネットワークモデル300の入力データとして、属性情報が加えられることによって、実リード電圧の最適値の推定の精度がさらに向上する。
なお、前述したように、ヒストグラムを取得するために使用される参照リード電圧の数は、実リード電圧の数よりも少なくてもよい。ヒストグラムを取得するために使用される参照リード電圧の数が実リード電圧の数よりも少ない場合、ニューラルネットワークモデル300の入力層に含まれるヒストグラムの入力用のノードの数を減らすことができる。これによって、ニューラルネットワークモデル300の計算の負荷が低減される。
また、ニューラルネットワークモデル300のトレーニングに要する時間が低減される。ヒストグラムを生成するために必要となる参照リード電圧の数が低減されることで、ヒストグラムを生成するためのリードの回数が減るので、メモリコントローラ200によるヒストグラムの生成に要する時間を短縮することができる。同様の理由により、データベース404用のヒストグラムの生成に要する時間を短縮することができる。
なお、属性情報は、プログラム/イレースサイクルの実行回数であってもよい。プログラム/イレースサイクルをニューラルネットワークモデル300の入力データに含めることによって、プログラム/イレースサイクルの実行回数に起因するしきい値電圧の変化を考慮した推定が可能となる。
また、属性情報は、リードの実行回数であってもよい。リードの実行回数をニューラルネットワークモデル300の入力データに含めることによって、リードディスターブを考慮した推定が可能となる。
また、属性情報は、ワード線番号、つまりメモリセルの位置情報であってもよい。メモリセルの位置情報をニューラルネットワークモデル300の入力データに含めることによって、メモリセルの位置毎の特性の違いを考慮した推定が可能となる。
また、属性情報は、温度センサ206の出力値であってもよい。温度センサ206の出力値をニューラルネットワークモデル300の入力データに含めることによって、温度に応じたメモリセルの特性の違いを考慮した推定が可能となる。
また、属性情報は、プログラムが実行されてからの経過時間であってもよい。プログラムが実行されてからの経過時間をニューラルネットワークモデル300の入力データに含めることによって、時間の経過によるしきい値電圧の低下を考慮した推定が可能となる。
また、実施形態によれば、コンピュータ400では、CPU401は、ヒストグラムと1以上の実リード電圧とをデータベース404から取得する(S102)。そして、CPU401は、当該ヒストグラムを入力データとして使用し、当該1以上の実リード電圧を正解データとして使用するトレーニングを、ニューラルネットワークモデルに対して実行する(S101〜S108)。
これによって、ヒストグラムから1以上の実リード電圧の最適値を高い精度で推定することが可能なニューラルネットワークモデル300を得ることが可能となる。
また、CPU401は、データベース404から属性情報をさらに取得して、当該属性情報を入力データに含める。
ヒストグラムと属性情報とを入力データとしたトレーニングが実行されることで、ニューラルネットワークモデル300の推定の精度をさらに向上させることが可能となる。
また、トレーニングの対象となるニューラルネットワークモデルは、非線形活性化関数によって活性化される1以上の隠れ層を備える。これによって、非線形回帰が実現するので、高精度な推定が可能となる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト、100 NANDメモリ、101 メモリチップ、110 周辺回路、111 メモリセルアレイ、200 メモリコントローラ、203,401 CPU、206 温度センサ、207,403 モデル情報、208 電圧情報、209 管理情報、300 ニューラルネットワークモデル、400 コンピュータ、402 メモリ、404 データベース。

Claims (18)

  1. 複数のメモリセルと、
    1以上の参照リード電圧を用いて前記複数のメモリセルに対するリードを行うことによってしきい値電圧に対するメモリセルの数を示すヒストグラムを取得し、前記ヒストグラムを、前記複数のメモリセルに格納されたデータをリードするための1以上の実リード電圧を出力する出力層を備えたトレーニング済みのニューラルネットワークモデルに入力し、前記出力層から出力された前記1以上の実リード電圧を用いて前記複数のメモリセルに対するリードを行う、メモリコントローラと、
    を備えるメモリシステム。
  2. 前記ニューラルネットワークモデルは、第1のノードと第2のノードとを備える入力層を備え、
    前記メモリコントローラは、前記第1のノードに前記ヒストグラムを入力し、前記第2のノードに属性情報(property information)を入力する、
    請求項1に記載のメモリシステム。
  3. 前記ニューラルネットワークモデルは、1以上の隠れ層をさらに備え、
    前記1以上の隠れ層は、非線形活性化関数によって活性化される第3のノードを含む、
    請求項2に記載のメモリシステム。
  4. 前記1以上の参照リード電圧に含まれる参照リード電圧の数は、前記1以上の実リード電圧に含まれる実リード電圧の数より少ない、
    請求項1に記載のメモリシステム。
  5. 前記属性情報は、前記複数のメモリセルに対するプログラム/イレースサイクルの実行回数である、
    請求項2に記載のメモリシステム。
  6. 前記属性情報は、前記複数のメモリセルに対するリードの実行回数である、
    請求項2に記載のメモリシステム。
  7. 前記属性情報は、前記複数のメモリセルの位置情報である、
    請求項2に記載のメモリシステム。
  8. 温度センサをさらに備え、
    前記属性情報は、前記温度センサの出力値である、
    請求項2に記載のメモリシステム。
  9. 前記属性情報は、前記複数のメモリセルにプログラムが実行されてからの経過時間である、
    請求項2に記載のメモリシステム。
  10. メモリシステムが備える複数のメモリセルに含まれる、しきい値電圧に対するメモリセルの数を示すヒストグラムと、前記複数のメモリセルに格納されたデータをリードするための1以上の実リード電圧と、を取得し、
    前記ヒストグラムを入力データとして使用し、前記1以上の実リード電圧を正解データとして使用するトレーニングを、ニューラルネットワークモデルに対して実行する、
    を含む方法。
  11. 属性情報をさらに取得するを含み、
    前記入力データは、前記属性情報をさらに含む、
    請求項10に記載の方法。
  12. 前記ニューラルネットワークモデルは、1以上の隠れ層を備え、
    前記1以上の隠れ層は、非線形活性化関数によって活性化されるノードを含む、
    請求項11に記載の方法。
  13. 前記ヒストグラムの各ビンを区切る電圧の数は、前記1以上の実リード電圧に含まれる実リード電圧の数よりも少ない、
    請求項10に記載の方法。
  14. 前記属性情報は、前記複数のメモリセルに対するプログラム/イレースサイクルの実行回数である、
    請求項11に記載の方法。
  15. 前記属性情報は、前記複数のメモリセルに対するリードの実行回数である、
    請求項11に記載の方法。
  16. 前記属性情報は、前記複数のメモリセルの位置情報である、
    請求項11に記載の方法。
  17. 前記属性情報は、温度センサの出力値である、
    請求項11に記載の方法。
  18. 前記属性情報は、前記複数のメモリセルにプログラムが実行されてからの経過時間である、
    請求項11に記載の方法。
JP2019039796A 2019-03-05 2019-03-05 メモリシステムおよび方法 Pending JP2020144958A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019039796A JP2020144958A (ja) 2019-03-05 2019-03-05 メモリシステムおよび方法
US16/559,230 US11086569B2 (en) 2019-03-05 2019-09-03 Memory system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019039796A JP2020144958A (ja) 2019-03-05 2019-03-05 メモリシステムおよび方法

Publications (1)

Publication Number Publication Date
JP2020144958A true JP2020144958A (ja) 2020-09-10

Family

ID=72335253

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019039796A Pending JP2020144958A (ja) 2019-03-05 2019-03-05 メモリシステムおよび方法

Country Status (2)

Country Link
US (1) US11086569B2 (ja)
JP (1) JP2020144958A (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11221769B2 (en) * 2019-09-27 2022-01-11 Samsung Electronics Co., Ltd. Performing noise cancellation on a memory device using a neural network
US11742879B2 (en) 2019-03-13 2023-08-29 Samsung Electronics Co., Ltd. Machine-learning error-correcting code controller
KR102601152B1 (ko) * 2019-05-10 2023-11-13 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
JP2021047695A (ja) * 2019-09-19 2021-03-25 キオクシア株式会社 メモリシステム
JP2021149995A (ja) 2020-03-23 2021-09-27 キオクシア株式会社 メモリシステム
US11626168B2 (en) * 2021-03-10 2023-04-11 Samsung Electronics Co.. Ltd. De-noising using multiple threshold-expert machine learning models
CN114860624B (zh) * 2022-05-23 2023-04-28 深圳市芯存科技有限公司 一种基于Nandflash芯片的数据擦写方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9251019B2 (en) 2012-05-29 2016-02-02 SanDisk Technologies, Inc. Apparatus, system and method for managing solid-state retirement
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
GB201301622D0 (en) * 2013-01-30 2013-03-13 Ibm Method and apparatus for read measurement of a plurarity of resistive memory cells
CN107533668B (zh) 2016-03-11 2021-01-26 慧与发展有限责任合伙企业 用于计算神经网络的节点值的硬件加速器和方法
US11501131B2 (en) 2016-09-09 2022-11-15 SK Hynix Inc. Neural network hardware accelerator architectures and operating method thereof

Also Published As

Publication number Publication date
US20200285419A1 (en) 2020-09-10
US11086569B2 (en) 2021-08-10

Similar Documents

Publication Publication Date Title
JP2020144958A (ja) メモリシステムおよび方法
KR102599123B1 (ko) 인공 신경망 모델에 기초하여 읽기 레벨들을 추론하는 스토리지 장치 및 인공 신경망 모델의 학습 방법
TWI596616B (zh) 胞元間干擾的消除
US10360101B2 (en) Memory controller and data reading method
US11004517B2 (en) Storage device including nonvolatile memory device and operating method thereof
US9069659B1 (en) Read threshold determination using reference read threshold
US20210082528A1 (en) Memory system and method
US10719396B2 (en) Memory system
JP2019149219A (ja) メモリシステム
JP2013520760A (ja) 隣接状態情報に基づく温度補償がなされる不揮発性記憶装置
US11205498B1 (en) Error detection and correction using machine learning
US11221769B2 (en) Performing noise cancellation on a memory device using a neural network
JP2019160355A (ja) メモリシステム、読み出し方法、プログラムおよびメモリコントローラ
US20190279724A1 (en) Memory system, read method, program, and memory controller
US9583207B2 (en) Adaptive data shaping in nonvolatile memory
JP2019164858A (ja) メモリシステム
JP2021047695A (ja) メモリシステム
US11342040B2 (en) Memory system
JP2021044034A (ja) メモリシステム
JP2020009513A (ja) メモリシステム
JP2022050898A (ja) メモリシステムおよびメモリシステムの制御方法
JP2024024383A (ja) メモリシステム
US11941293B2 (en) Operation method of storage controller using history table, and storage device including the storage controller
US11775203B2 (en) Storage device including nonvolatile memory device and method of operating the same
JP7087013B2 (ja) メモリシステムおよび不揮発性メモリの制御方法