(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024043364
(43)【公開日】2024-03-29
(54)【発明の名称】メモリコントローラ、メモリコントローラの制御方法、およびメモリシステム
(51)【国際特許分類】
G06F 12/00 20060101AFI20240322BHJP
G11C 16/04 20060101ALI20240322BHJP
G11C 11/56 20060101ALI20240322BHJP
G11C 16/26 20060101ALI20240322BHJP
G06F 12/04 20060101ALI20240322BHJP
【FI】
G06F12/00 597U
G11C16/04 170
G11C11/56 220
G11C16/26 100
G06F12/04 530
【審査請求】未請求
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2022148516
(22)【出願日】2022-09-16
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】100120031
【弁理士】
【氏名又は名称】宮嶋 学
(74)【代理人】
【識別番号】100107582
【弁理士】
【氏名又は名称】関根 毅
(74)【代理人】
【識別番号】100118843
【弁理士】
【氏名又は名称】赤岡 明
(74)【代理人】
【識別番号】100124372
【弁理士】
【氏名又は名称】山ノ井 傑
(72)【発明者】
【氏名】島田 克行
(72)【発明者】
【氏名】小松 裕樹
【テーマコード(参考)】
5B160
5B225
【Fターム(参考)】
5B160DA08
5B160NA01
5B225BA01
5B225BA19
5B225DA03
5B225DA10
5B225DD11
5B225EA05
5B225FA01
(57)【要約】
【課題】多値メモリの閾値電圧の判定電圧をメモリ領域内に好適に記憶させることが可能なメモリコントローラ、メモリコントローラの制御方法、およびメモリシステムに関する。
【解決手段】一の実施形態によれば、メモリコントローラは、3種類以上の値を記憶可能なメモリセル用の閾値電圧の2種類以上の判定電圧を、ベクトル量に圧縮する圧縮部を備える。前記コントローラは、さらに、前記ベクトル量をメモリ領域内に記憶させる記憶部を備える。前記コントローラは、さらに、前記ベクトル量を前記判定電圧に伸張する伸張部を備える。
【選択図】
図7
【特許請求の範囲】
【請求項1】
3種類以上の値を記憶可能なメモリセル用の閾値電圧の2種類以上の判定電圧を、ベクトル量に圧縮する圧縮部と、
前記ベクトル量をメモリ領域内に記憶させる記憶部と、
前記ベクトル量を前記判定電圧に伸張する伸張部と、
を備えるメモリコントローラ。
【請求項2】
前記判定電圧は、n種類の判定電圧を含み、前記ベクトル量は、m個の成分を含む(nおよびmは、n>m≧2を満たす整数)、請求項1に記載のメモリコントローラ。
【請求項3】
前記圧縮部は、前記判定電圧の所定の電圧に対するシフト値を、前記ベクトル量に圧縮する、請求項1に記載のメモリコントローラ。
【請求項4】
前記判定電圧は、前記メモリセルを含むメモリのブロックごとに設定される、請求項1に記載のメモリコントローラ。
【請求項5】
前記判定電圧は、前記メモリセルを含むメモリのワード線ごとに設定される、請求項1に記載のメモリコントローラ。
【請求項6】
前記圧縮部および前記伸張部の少なくともいずれかは、前記圧縮部により圧縮される前の前記判定電圧と、前記伸張部により伸張された後の前記判定電圧との間の誤差に基づいて訓練される、請求項1に記載のメモリコントローラ。
【請求項7】
前記圧縮部および前記伸張部の少なくともいずれかは、前記メモリセルを含むメモリの記憶データが読み出された際のFBC(Fail Bit Count)に基づいて訓練される、請求項1に記載のメモリコントローラ。
【請求項8】
前記記憶部は、前記ベクトル量と前記FBCとを前記メモリ領域内に記憶させる、請求項7に記載のメモリコントローラ。
【請求項9】
前記圧縮部は、関数を用いて前記判定電圧を前記ベクトル量に圧縮する、請求項1に記載のメモリコントローラ。
【請求項10】
前記判定電圧は、n種類の判定電圧を含み、前記ベクトル量は、m個の成分を含み(nおよびmは、n>m≧2を満たす整数)、
前記関数は、前記n種類の判定電圧に対応するn種類の値を入力とし、前記n種類の値から選択されたm種類の値を出力とする、請求項9に記載のメモリコントローラ。
【請求項11】
前記伸張部は、前記ベクトル量から前記判定電圧を推定することで、前記ベクトル量を前記判定電圧に伸張する、請求項9に記載のメモリコントローラ。
【請求項12】
前記推定の誤差は、前記伸張部の訓練により低減させることが可能である、請求項11に記載のメモリコントローラ。
【請求項13】
前記圧縮部は、第1ニューラルネットワークにより、前記判定電圧を前記ベクトル量に圧縮する、請求項1に記載のメモリコントローラ。
【請求項14】
前記伸張部は、第2ニューラルネットワークにより、前記ベクトル量を前記判定電圧に伸張する、請求項13に記載のメモリコントローラ。
【請求項15】
3種類以上の値を記憶可能なメモリセル用の閾値電圧の2種類以上の判定電圧を、圧縮部によりベクトル量に圧縮し、
前記ベクトル量を、記憶部によりメモリ領域内に記憶させ、
前記ベクトル量を、伸張部により前記判定電圧に伸張する、
ことを含むメモリコントローラの制御方法。
【請求項16】
前記判定電圧は、n種類の判定電圧を含み、前記ベクトル量は、m個の成分を含む(nおよびmは、n>m≧2を満たす整数)、請求項15に記載のメモリコントローラの制御方法。
【請求項17】
前記圧縮部は、前記判定電圧の所定の電圧に対するシフト値を、前記ベクトル量に圧縮する、請求項15に記載のメモリコントローラの制御方法。
【請求項18】
3種類以上の値を記憶可能なメモリセルを含むメモリと、
前記メモリセル用の閾値電圧の2種類以上の判定電圧を、ベクトル量に圧縮する圧縮部と、
前記ベクトル量を前記メモリのメモリ領域内に記憶させる記憶部と、
前記ベクトル量を前記判定電圧に伸張する伸張部と、
を備えるメモリシステム。
【請求項19】
前記判定電圧は、前記メモリのブロックごとに設定される、請求項18に記載のメモリシステム。
【請求項20】
前記判定電圧は、前記メモリのワード線ごとに設定される、請求項18に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリコントローラ、メモリコントローラの制御方法、およびメモリシステムに関する。
【背景技術】
【0002】
メモリコントローラが、多値メモリの閾値電圧の判定電圧を、当該メモリのメモリ領域内に記憶させると、判定電圧の記憶データがメモリ領域を圧迫するおそれがある。一方、判定電圧を圧縮し、判定電圧の圧縮データをメモリ領域内に記憶させ、その後に判定電圧の圧縮データを伸張すると、元の判定電圧と判定電圧の伸張データとの間に誤差が生じるおそれがある。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
多値メモリの閾値電圧の判定電圧をメモリ領域内に好適に記憶させることが可能なメモリコントローラ、メモリコントローラの制御方法、およびメモリシステムに関する。
【課題を解決するための手段】
【0005】
一の実施形態によれば、メモリコントローラは、3種類以上の値を記憶可能なメモリセル用の閾値電圧の2種類以上の判定電圧を、ベクトル量に圧縮する圧縮部を備える。前記コントローラは、さらに、前記ベクトル量をメモリ領域内に記憶させる記憶部を備える。前記コントローラは、さらに、前記ベクトル量を前記判定電圧に伸張する伸張部を備える。
【図面の簡単な説明】
【0006】
【
図1】第1実施形態の情報処理システムの構成を示すブロック図である。
【
図2】第1実施形態のメモリコントローラ11の機能構成を示すブロック図である。
【
図3】第1実施形態のメモリユニット12aの構成を示すブロック図である。
【
図4】第1実施形態のメモリセルアレイ45の構成を示す回路図である。
【
図5】第1実施形態の閾値電圧とメモリセル数との関係を示すグラフである。
【
図6】第1実施形態の比較例のメモリコントローラ11の動作を説明するための図である。
【
図7】第1実施形態のメモリコントローラ11の動作を説明するための図である。
【
図8】第1実施形態の推定部51の動作を説明するための模式図である。
【
図9】第1実施形態の変形例の推定部51の動作を説明するための模式図である。
【
図10】第1実施形態の推定部51の動作について説明するための模式図である。
【
図11】第1実施形態の圧縮部21および伸張部22の動作を説明するための模式図である。
【
図12】第1実施形態の圧縮部21および伸張部22の動作を説明するためのフローチャートである。
【
図13】第2実施形態の圧縮部21および伸張部22の動作を説明するための模式図である。
【
図14】第2実施形態の圧縮部21および伸張部22の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【0007】
以下、本発明の実施形態を、図面を参照して説明する。
図1~
図14において、同一の構成には、同一の符号を付す。
【0008】
(第1実施形態)
【0009】
図1は、第1実施形態の情報処理システムの構成を示すブロック図である。
図1は、一例として、NANDメモリ12が3つのメモリユニット12aを備える場合を示している。
【0010】
第1実施形態の情報処理システムは、メモリシステム1と、ホスト装置2とを含む。メモリシステム1は、例えば、メモリカード、UFS(Universal Flash Storage)、またはSSD(Solid State Drive)である。メモリシステム1は、例えば、ホスト装置2の外部記憶装置として機能する。ホスト装置2は、例えば、パーソナルコンピュータ、サーバ装置、モバイル装置などの情報処理装置である。ホスト装置2は、メモリシステム1に対するアクセス要求(リード要求およびライト要求)を発行することが可能である。
【0011】
メモリシステム1は、メモリコントローラ11と、NANDメモリ12とを備えている。
【0012】
メモリコントローラ11は、メモリシステム1の種々の動作を制御する。例えば、メモリコントローラ11は、ホスト装置2からのリード要求に基づいて、NANDメモリ12からのデータの読み出しを制御する。また、メモリコントローラ11は、ホスト装置2からのライト要求に基づいて、NANDメモリ12へのデータの書き込みを制御する。メモリコントローラ11は、CPU(Central Processing Unit)11aと、RAM(Random Access Memory)11bと、ROM(Read Only Memory)11cと、ECC(Error Correcting Code)回路11dと、メモリI/F(Interface)コントローラ11eと、ホストI/Fコントローラ11fとを備えている。メモリコントローラ11は、さらに、ソフトウェアが格納されたストレージを備えていてもよい。メモリコントローラ11は、さらに、情報処理を実行する電気回路(ハードウェア)を備えていてもよい。
【0013】
CPU11aは、種々のプログラムを実行するプロセッサである。例えば、ROM11cに格納されたファームフェアが、RAM11bに展開され、CPU11aにより実行される。また、例えば、ストレージ内に格納されたソフトウェアが、RAM11bに展開され、CPU11aにより実行される。
RAM11bは、データの読み出しおよび書き込みが可能な揮発性の半導体メモリである。RAM11bは、CPU11aにワークエリアを提供する。
ROM11cは、データの読み出しが可能な半導体メモリである。ROM11cは、CPU11aの動作に必要な種々のデータを格納している。
【0014】
ECC回路11dは、エラー訂正処理を行う回路である。ECC回路11dは、NANDメモリ12にデータ(書き込みデータ)が書き込まれる際に、エラー訂正のための符号化を行う。これにより、書き込みデータにエラー訂正符号が付与される。ECC回路11dは、さらに、NANDメモリ12からデータ(読み出しデータ)が読み出される際に、書き込み時に付与されたエラー訂正符号に基づいて、エラー訂正を行う。これにより、読み出しデータにエラーが含まれている場合に、エラーを訂正することが可能となる。
【0015】
メモリI/Fコントローラ11eは、メモリコントローラ11とNANDメモリ12との間のインタフェースを管理する回路である。メモリI/Fコントローラ11eは、CPU11aによる制御の下、メモリコントローラ11とNANDメモリ12との間のデータ転送を制御する。
ホストI/Fコントローラ11fは、メモリコントローラ11とホスト装置2との間のインタフェースを管理する回路である。ホストI/Fコントローラ11fは、CPU11aによる制御の下、メモリコントローラ11とホスト装置2との間のデータ転送を制御する。
【0016】
NANDメモリ12は、各メモリセルに3種類以上の値を記憶させることが可能な多値メモリとして機能する。例えば、NANDメモリ12が16値メモリの場合には、各メモリセルは、16種類の値を記憶することができる。16種類の値としては、例えば、0から15(2進法では、0000から1111)の値がある。NANDメモリ12は、1つまたは複数のメモリユニット12aを備えている。各メモリユニット12aは、複数のメモリセルを含むメモリセルアレイを備えている。メモリセルアレイは、データを記憶可能なメモリ領域として機能する。メモリセルアレイの詳細については、後述する。
【0017】
図2は、第1実施形態のメモリコントローラ11の機能構成を示すブロック図である。
【0018】
メモリコントローラ11は、圧縮部21と、伸張部22と、情報管理部23とを備えている。情報管理部23は、記憶部の例である。これらの機能は、ファームウェア、ソフトウェア、および電気回路のうちのいずれにより実現されてもよい。また、これらの機能は、ファームウェア、ソフトウェア、および電気回路のうちの2つ以上を組み合わせて実現されてもよい。例えば、ROM11c内に格納されたファームフェアが、RAM11bに展開され、CPU11aにより実行されることで、これらの機能が実現される。
【0019】
圧縮部21は、NANDメモリ12のメモリセル用の2種類以上の判定電圧を、ベクトル量(圧縮データ)に圧縮する。
【0020】
伸張部22は、ベクトル量をメモリ領域から取得し、ベクトル量を判定電圧(伸張データ)に伸張する。ベクトル量から伸張された判定電圧は、閾値電圧を特定するために使用される。
【0021】
なお、圧縮部21が判定電圧をベクトル量に圧縮する過程は、判定電圧を何らかの量に変換する過程と、この変換量をベクトル量に圧縮する過程とを含んでいてもよい。この場合、伸張部22がベクトル量を判定電圧に伸張する過程は、ベクトル量をこの変換量に伸張する過程と、この変換量を判定電圧に変換する過程とを含んでいてもよい。この変換量の例は、後述するシフト量Sftである。
【0022】
情報管理部23は、ベクトル量をNANDメモリ12のメモリ領域内に記憶させる。例えば、情報管理部23は、メモリコントローラ11の動作に必要な種々の情報を、メモリ領域内に記憶させることで管理する。情報管理部23は、例えば、各メモリユニット12aの各ブロックに関する情報を、ブロック管理情報として管理する。本実施形態の判定電圧は、各メモリユニット12aのブロックごとに設定される。そのため、本実施形態の判定電圧は、ブロック管理情報として管理される。なお、判定電圧は、各ブロックのワード線ごとに設定されてもよい。この場合にも、判定電圧は、ブロック管理情報として管理されてもよい。
【0023】
ここで、上述した判定電圧の詳細を説明する。本実施形態のNANDメモリ12は、各メモリセルに3種類以上の値を記憶させることができる。よって、NANDメモリ12の閾値電圧の分布が、3つ以上のロブ(Lob)と呼ばれるピークを有する。その結果、閾値電圧を特定するために、2種類以上の判定電圧が使用される。例えば、NANDメモリ12が16値メモリの場合、閾値電圧の分布は、16個のロブを有する。この場合、閾値電圧を特定するために、15種類の判定電圧が使用される。判定電圧は、NANDメモリ12からデータを読み出す際に使用される。判定電圧は、読み出し閾値電圧とも呼ばれる。
【0024】
これらの判定電圧は、NANDメモリ12のメモリ領域内に記憶されることで管理される。この場合、判定電圧をそのままメモリ領域内に記憶させると、メモリ領域を圧迫するおそれがある。理由は、多値メモリの判定電圧の種類が多いからである。そこで、本実施形態のメモリコントローラ11は、判定電圧を圧縮し、判定電圧の圧縮データをメモリ領域内に記憶させる。これにより、メモリ領域の圧迫を抑制することが可能となる。
【0025】
一方、判定電圧を圧縮し、判定電圧の圧縮データをメモリ領域内に記憶させ、その後に判定電圧の圧縮データを伸張すると、元の判定電圧と判定電圧の伸張データとの間に誤差が生じるおそれがある。そこで、本実施形態のメモリコントローラ11は、3種類以上の判定電圧をスカラー量ではなくベクトル量に圧縮する。これにより、上記のような誤差を低減しつつ、メモリ領域の圧迫を抑制することが可能となる。
【0026】
本実施形態の圧縮部21、伸張部22、および情報管理部23のさらなる詳細については、後述する。
【0027】
図3は、第1実施形態のメモリユニット12aの構成を示すブロック図である。
【0028】
本実施形態の各メモリユニット12aは、I/O(Input/Output)信号処理回路31と、制御信号処理回路32と、チップ制御回路33と、RY/BY生成回路34と、コマンドレジスタ35と、アドレスレジスタ36と、ロウデコーダ41と、カラムデコーダ42と、データレジスタ43と、センスアンプ44と、メモリセルアレイ45とを備えている。ロウデコーダ41、カラムデコーダ42、データレジスタ43、およびセンスアンプ44は、メモリセルアレイ45に対するリード動作、ライト動作、およびイレース動作のインタフェースとして機能する。
【0029】
I/O信号処理回路31は、メモリユニット12aへの入力信号と、メモリユニット12aからの出力信号とを処理するバッファ回路である。I/O信号処理回路31によりラッチされたコマンド、アドレス、およびデータは、それぞれ、コマンドレジスタ35、アドレスレジスタ36、およびデータレジスタ43に振り分けられる。
【0030】
制御信号処理回路32は、メモリユニット12aへの制御信号を処理する回路である。制御信号処理回路32は、メモリユニット12aへの制御信号に基づいて、I/O信号処理回路31による上記の振り分けを制御する。制御信号処理回路32に入力される制御信号は、例えば、CE(チップイネーブル)信号、CLE(コマンドラッチイネーブル)信号、ALE(アドレスラッチイネーブル)信号、WE(ライトイネーブル信号)信号、RE(リードイネーブル)信号、WP(ライトプロテスト)信号などである。制御信号処理回路32は、さらに、制御信号をチップ制御回路33に転送する。
【0031】
チップ制御回路33は、メモリチップ(メモリユニット12a)を制御する回路である。チップ制御回路33は、制御信号処理回路32から転送された制御信号に基づいて、メモリユニット12aの動作を制御する。チップ制御回路33の動作態様は、例えば、チップ制御回路33の状態が制御信号に応じて遷移することで変化する。
【0032】
RY/BY生成回路34は、RY(レディ)信号およびBY(ビジー)信号を出力する回路である。RY/BY生成回路34は、チップ制御回路33による制御の下、RY信号およびBY信号を選択的に出力する。RY信号は、メモリユニット12aが非動作中(レディ状態)である場合に出力される。BY信号は、メモリユニット12aが動作中(ビジー状態)である場合に出力される。
【0033】
コマンドレジスタ35は、コマンドを格納するレジスタである。コマンドレジスタ35内に格納されたコマンドは、チップ制御回路33により読み出される。
【0034】
アドレスレジスタ36は、アドレスを格納するレジスタである。アドレスレジスタ36内に格納されたアドレスは、チップ制御回路33、ロウデコーダ41、およびカラムデコーダ42により読み出される。
【0035】
ロウデコーダ41は、メモリセルアレイ45のワード線に関する制御を行うデコーダである。ロウデコーダ41は、アドレスレジスタ36から読み出したロウアドレスに基づいて、メモリセルアレイ45内のワード線に電圧を印加する。
カラムデコーダ42は、データレジスタ43のラッチ回路に関する制御を行うデコーダである。カラムデコーダ42は、アドレスレジスタ36から読み出したカラムアドレスに基づいて、データレジスタ43内のラッチ回路を選択する。
データレジスタ43は、データを格納するレジスタである。データレジスタ43は、I/O信号処理回路31からのデータと、センスアンプ44からのデータとを格納する。
センスアンプ44は、メモリセルアレイ45のビット線に関する動作を行うアンプである。センスアンプ44は、メモリセルアレイ45内のビット線に読み出されたデータを検知する。
【0036】
メモリセルアレイ45は、複数のメモリセルを含むアレイである。メモリセルアレイ45は、データを記憶可能なメモリ領域として機能する。本実施形態NANDメモリ12は、これらのメモリセルが3次元アレイ状に配置された3次元半導体メモリとなっている。メモリセルアレイ45のさらなる詳細については、後述する。
【0037】
図4は、第1実施形態のメモリセルアレイ45の構成を示す回路図である。
【0038】
メモリセルアレイ45は、複数のブロックを含む。
図4は、複数のブロックの例として、ブロックBLK0と、ブロックBLK1とを示している。以下、本実施形態のブロックの構成を、ブロックBLK0を題材として説明する。
【0039】
ブロックBLK0は、複数のストリングユニットSU0~SU3を含んでいる。ストリングユニットSU0~SU3の各々は、p本のビット線BL0~BLp-1とセルソース線CELSRCとの間に、p本のNANDストリングSTRを含んでいる(pは、2以上の整数)。例えばストリングユニットSU0では、ビット線BL0とセルソース線CELSRCとの間のNANDストリングSTRが、ワード線WL0~WL15上にメモリセルトランジスタ(メモリセル)MT0~MT15を備え、選択線SGSL0、SGDL0上に選択トランジスタ(選択ゲート)ST0、DT0を備えている。選択線SGSL0は、ソース側選択線と呼ばれる。選択線SGDL0は、ドレイン側選択線と呼ばれる。本実施形態では、他のNANDストリングSTRも同様の構造を有している。
【0040】
図5は、第1実施形態の閾値電圧とメモリセル数との関係を示すグラフである。
【0041】
図5は、閾値電圧の分布D
1~D
16を示している。NANDメモリ12が16値メモリの場合、閾値電圧の分布は、16個のロブを有する。分布D
1は、値15(2進法で1111)が記憶されているメモリセルの閾値電圧の分布を示している。分布D
2は、値14(2進法で1110)が記憶されているメモリセルの閾値電圧の分布を示している。これは、分布D
3~D
16についても同様である。
【0042】
図5は、さらに、判定電圧V
1~V
15を示している。NANDメモリ12が16値メモリの場合、閾値電圧を特定するために、15種類の判定電圧V
1~V
15が使用される。例えば、判定電圧V
1は、値15(2進法で1111)が記憶されているメモリセルの閾値電圧と、値14(2進法で1110)が記憶されているメモリセルの閾値電圧とを区別するために使用される。また、判定電圧V
2は、値14(2進法で1110)が記憶されているメモリセルの閾値電圧と、値10(2進法で1010)が記憶されているメモリセルの閾値電圧とを区別するために使用される。これは、判定電圧V
3~V
15についても同様である。
【0043】
次に、
図6および
図7を参照し、第1実施形態のメモリコントローラ11と、第1実施形態の比較例のメモリコントローラ11とを比較する。
【0044】
図6は、第1実施形態の比較例のメモリコントローラ11の動作を説明するための図である。比較例のメモリコントローラ11については、実施形態のメモリコントローラ11と同様に、
図1~
図5に示す符号を用いて説明する。
【0045】
図6(a)は、比較例のメモリコントローラ11の圧縮部21および伸張部22を示している。比較例の圧縮部21は、シフト量Sftをコードブックインデックスiに圧縮する。また、比較例の伸張部22は、コードブックインデックスiをシフト量Sftに伸張する。シフト量Sftは、n個(nは、2以上の整数)の成分S
1~S
nを含むベクトル量である(Sft={S
1,S
2,S
3,・・・,S
n})。一方、コードブックインデックスiは、スカラー量である。
【0046】
比較例のNANDメモリ12が16値メモリの場合、閾値電圧を特定するために15種類の判定電圧V1~V15が使用される。一方、シフト量Sftの成分Skは、判定電圧Vkの所定の電圧Vk(0)に対するシフト値である(kは、1≦k≦nを満たす整数)。よって、シフト量Sftの成分Skは、Sk=Vk-Vk(0)で表される。その結果、15種類の判定電圧V1~V15が使用される場合、シフト量Sftは、15個の成分S1~S15を含む15次ベクトルとなる。以下、シフト量Sftの成分Skを「シフト値Sk」とも表記する。なお、所定の電圧V1(0)~V15(0)は、例えば、判定電圧V1~V15の基準値(デフォルト値)である。
【0047】
図6(b)は、比較例の情報管理部23により管理されているコードブックテーブルを示している。コードブックテーブルは、コードブックインデックスiとコードブックとの対応関係を示している。コードブックテーブルは、典型的なシフト量Sftをコードブックとして列挙したテーブルである。例えば、シフト量Sftをコードブックインデックスiに圧縮する際に、シフト量Sftが、コードブックインデックスiを「1」とするコードブック{S
1
1,S
2
1,S
3
1,・・・,S
n
1}と最も近い場合には、シフト量Sftの圧縮データは、「1」となる。この場合、コードブックインデックスiをシフト量Sftに伸張すると、圧縮データ「1」が伸張データ{S
1
1,S
2
1,S
3
1,・・・,S
n
1}に伸張される。すなわち、このシフト量Sft={S
1,S
2,S
3,・・・,S
n}を圧縮および伸張すると、圧縮および伸張により得られるシフト量は、{S
1
1,S
2
1,S
3
1,・・・,S
n
1}となる。
【0048】
図6(c)は、比較例の情報管理部23により管理されているブロック管理情報を示している。ブロック管理情報は、例えば、ブロックインデックスbとコードブックインデックスiとの対応関係を示している。ブロックインデックスbは、NANDメモリ12の各ブロック(
図4)を特定するためのインデックスである。例えば、ブロックインデックスbを「b1」「b2」「b3」とするブロックのシフト量Sftがそれぞれ、コードブックインデックスiを「i1」「i2」「i3」とするように圧縮された場合には、
図6(c)に示すブロック管理情報が設定される。すなわち、ブロック「b1」「b2」「b3」のコードブックインデックスiの欄に、それぞれ「i1」「i2」「i3」が格納される。ブロックインデックスbは、例えば、スカラー量である。
比較例のシフト量Sftは、コードブックインデックスiに圧縮されて、メモリ領域内に記憶される。これにより、メモリ領域の圧迫を抑制することが可能となる。しかしながら、シフト量Sftをコードブックインデックスiに圧縮し、コードブックインデックスiをシフト量Sft(コードブック)に伸張すると、元のシフト量Sftと、伸張されたシフト量Sft(コードブック)との間に誤差が生じるおそれがある。例えば上述の例では、元のシフト量{S
1,S
2,S
3,・・・,S
n}と、伸張されたシフト量{S
1
1,S
2
1,S
3
1,・・・,S
n
1}との間に誤差が生じる。
【0049】
図7は、第1実施形態のメモリコントローラ11の動作を説明するための図である。
【0050】
図7(a)は、本実施形態のメモリコントローラ11の圧縮部21および伸張部22を示している。圧縮部21は、シフト量Sftを圧縮ベクトルvに圧縮する。また、伸張部22は、圧縮ベクトルvをシフト量Sftに伸張する。シフト量Sftは、上述のように、n個(nは、2以上の整数)の成分S
1~S
nを含むベクトル量である(Sft={S
1,S
2,S
3,・・・,S
n})。一方、圧縮ベクトルvは、m個(mは、2以上の整数)の成分v
1~v
mを含むベクトル量である(v={v
1,v
2,v
3,・・・,v
m})。ただし、mは、nよりも小さい整数である(n>m≧2)。
【0051】
第1実施形態のNANDメモリ12が16値メモリの場合、上述の通り、閾値電圧を特定するために15種類の判定電圧V1~V15が使用される。この場合、シフト量Sftは、15個の成分(シフト値)S1~S15を含む15次ベクトルとなる。一方、圧縮ベクトルvの次数mは、2~14の整数であり、例えば4である。この場合、圧縮ベクトルvは、4個の成分v1~v4を含む4次ベクトルとなる。
【0052】
図7(b)は、第1実施形態の情報管理部23により管理されているブロック管理情報を示している。ブロック管理情報は、例えば、ブロックインデックスbと圧縮ベクトルvとの対応関係を示している。ブロックインデックスbは、上述のように、NANDメモリ12の各ブロック(
図4)を特定するためのインデックスである。例えば、ブロックインデックスbを「b1」「b2」「b3」とするブロックのシフト量Sftがそれぞれ、圧縮ベクトルvを「v1」「v2」「v3」とするように圧縮された場合には、
図7(b)に示すブロック管理情報が設定される。すなわち、ブロック「b1」「b2」「b3」の圧縮ベクトルvの欄に、それぞれ「v1」「v2」「v3」が格納される。ブロックインデックスbは、例えば、上述のように、スカラー量である。
【0053】
ブロック管理情報は、さらに、ブロックインデックスbとFBC(Fail Bit Count)との対応関係を示している。FBCは、各ブロックの記憶データが読み出された際に、誤って読み出されたビットの総数である。
図7(b)では、ブロック「b1」「b2」「b3」のFBCの欄に、それぞれ「FBC1」「FBC2」「FBC3」が格納されている。
【0054】
第1実施形態のシフト量Sftは、スカラー量であるコードブックインデックスiではなく、ベクトル量である圧縮ベクトルvに圧縮される。これにより、誤差を低減しつつ、メモリ領域の圧迫を抑制することが可能となる。理由は、シフト量Sftをベクトル量に圧縮すれば、一般に、シフト量Sftをスカラー量に圧縮するのに比べて、圧縮により失われる情報量が少ないからである。
【0055】
次に、
図8~
図10を参照し、第1実施形態の推定部51について説明する。
【0056】
図8は、第1実施形態の推定部51の動作を説明するための模式図である。
【0057】
圧縮部21および伸張部22の少なくともいずれかは、読み出し精度を訓練により向上させるための推定部51を備えていてもよい。例えば、圧縮部21を推定部51により訓練することで、元のシフト量Sftと伸張されたシフト量Sftとの間の誤差が小さくなるように圧縮を行うことが可能となる。また、伸張部22を推定部51により訓練することで、元のシフト量Sftと伸張されたシフト量Sftとの間の誤差が小さくなるように伸張を行うことが可能となる。本実施形態の推定部51は、例えば、
図11(b)に示す伸張部22、
図13に示す圧縮部21(第2実施形態)、および
図13に示す伸張部22(第2実施形態)に適用可能である。
【0058】
推定部51は、ファームウェア、ソフトウェア、および電気回路のうちのいずれにより実現されてもよい。また、推定部51は、ファームウェア、ソフトウェア、および電気回路のうちの2つ以上を組み合わせて実現されてもよい。本実施形態では、
図1に示すROM11c内に格納されたファームフェアが、RAM11bに展開され、CPU11aにより実行されることで、推定部51が実現される。例えば、推定部51は、DNN(Deep Neural Network)モデルなどの機械学習モデルに相当する。本実施形態によれば、メモリシステム1のメーカーによりメモリシステム1が出荷された後に、上記のような誤差を訓練(機械学習)により低減することが可能となる。
【0059】
以下、
図8に示す推定部51の動作について説明する。
【0060】
図8では、シフト量Sftが推定部51に入力され、シフト量Sft’が推定部51から出力されている。推定部51は、圧縮部21と同様にシフト量Sftを圧縮ベクトルvに圧縮し、伸張部22と同様に圧縮ベクトルvをシフト量Sftに伸張する。
図8は、伸張されたシフト量Sftを、元のシフト量Sftと区別するために、符号Sft’で示している。よって、推定部51は、元のシフト量Sftを圧縮および伸張して得られたシフト量Sft’を出力している。シフト量Sftとシフト量Sft’とが異なることは、推定部51の解答「Sft’」が正解「Sft」と異なっていることを意味する。
【0061】
図8は、さらに、損失関数L(Sft,Sft’)を示している。損失関数L(Sft,Sft’)は、シフト量Sftとシフト量Sft’との間の誤差に対応する値を出力する関数である。損失関数L(Sft,Sft’)の出力値は、推定部51に損失(loss)として入力される。本実施形態の訓練は、損失関数L(Sft,Sft’)の出力値を用いて行われる。なお、損失関数L(Sft,Sft’)の出力値は、メモリコントローラ11内の推定部51以外の機能ブロックが計算してもよいし、推定部51が計算してもよい。本実施形態の訓練は、例えば、損失関数L(Sft,Sft’)の出力値がゼロに近付くように行われる。
【0062】
上記の訓練は、どのようなタイミングで行ってもよい。例えば、メモリシステム1内でリード動作が行われた際に、訓練が行われてもよい。また、圧縮部21により圧縮が行われた際に、訓練が行われてもよい。また、メモリシステム1内でパトロールリードまたはリトライが発生した際に、訓練が行われてもよい。
【0063】
図9は、第1実施形態の変形例の推定部51の動作を説明するための模式図である。
図9に示す推定部51については、
図8に示す推定部51との相違点を中心に説明する。
【0064】
図9でも、シフト量Sftが推定部51に入力され、シフト量Sft’が推定部51から出力されている。本変形例の推定部51も、元のシフト量Sftを圧縮および伸張して得られたシフト量Sft’を出力している。
【0065】
図9は、さらに、FBCを示している。FBCは、例えば、メモリセルアレイ45(
図4)のブロックごとに算出される。上述のように、各ブロックのFBCは、各ブロックの記憶データが読み出された際に、誤って読み出されたビットの総数である。本変形例のFBCは、推定部51に損失として入力される。本変形例の訓練は、FBCを用いて行われる。なお、FBCは、メモリコントローラ11内の推定部51以外の機能ブロックが計算してもよいし、推定部51が計算してもよい。本変形例の訓練は、例えば、FBCがゼロに近付くように行われる。
【0066】
本変形例では、推定部51からシフト量Sft’が出力されると、シフト量Sft’に対応する判定電圧を用いてリード動作が行われる。その後、このリード動作の際のFBCが算出される。このFBCは、推定部51に訓練用に入力される。また、このFBCは、上述のブロック管理情報として記憶および管理される。
【0067】
図10は、第1実施形態の推定部51の動作について説明するための模式図である。
図10に示す推定部51は、
図8に示す推定部51と同じものであるが、
図9に示す推定部51と同じものでもよい。
【0068】
図10は、初期のNANDメモリ12の疲労度の例と、寿命近くのNANDメモリ12の疲労度の例とを示している。初期のNANDメモリ12は、疲労度80%のメモリセルと、疲労度50%のメモリセルと、疲労度10%のメモリセルとを含んでいる。寿命近くのNANDメモリ12の疲労度は、疲労度90%のメモリセルと、疲労度70%のメモリセルと、疲労度50%のメモリセルとを含んでいる。
【0069】
初期のNANDメモリ12は、疲労度の低いメモリセルを多く含んでいる。寿命近くのNANDメモリ12は、疲労度の高いメモリセルを多く含んでいる。一方、好適な判定電圧(シフト量Sft)の値は、このような疲労度に応じて変化すると考えられる。本実施形態によれば、メモリシステム1の出荷後に推定部51による訓練を行うことができるため、疲労度に追従して判定電圧(シフト量Sft)を変化させることで、疲労度が変化しても読み出し精度を高く維持することが可能となる。
【0070】
次に、
図11および
図12を参照し、本実施形態の圧縮部21および伸張部22のさらなる詳細について説明する。
【0071】
図11は、第1実施形態の圧縮部21および伸張部22の動作を説明するための模式図である。
【0072】
図11(a)では、圧縮部21が、シフト量Sftを圧縮ベクトルvに圧縮している。具体的には、圧縮部21は、シフト量Sftの15個のシフト値S
1~S
15の中から4個のシフト値S
4、S
7、S
10、S
14を選択し、選択されたシフト値S
4、S
7、S
10、S
14をそれぞれ、圧縮ベクトルvの成分v
1、v
2、v
3、v
4として出力している。以下、圧縮ベクトルvの成分v
1~v
4を「ベクトル成分v
1~v
4」とも表記する。
【0073】
図11(a)では、圧縮部21が、関数を用いてシフト量Sftを圧縮ベクトルvに圧縮する。この関数は、シフト値S
1~S
15を入力とし、ベクトル成分v
1~v
4を出力としている。これら入力と出力との間には、v
1=S
4、v
2=S
7、v
3=S
10、v
4=S
14の関係が成り立つ。このように、本実施形態の圧縮部21は、静的な関数を用いてシフト量Sftを圧縮ベクトルvに圧縮する。
【0074】
なお、ベクトル成分v1~v4の各々は、本実施形態では、シフト値S1~S15のうちの1つに依存しているが、シフト値S1~S15のうちの2つ以上に依存していてもよい。例えば、ベクトル成分v1は、v1=√(S1×S3)で与えられてもよい。
【0075】
図11(b)では、伸張部22が、圧縮ベクトルvをシフト量Sftに伸張している。ベクトル成分v
1~v
4は、シフト値S
1~S
15の一部の情報しか含んでいないため、関数を用いて圧縮ベクトルvをシフト量Sftに精度よく伸張することは難しい。そこで、本実施形態の伸張部22は、推定部51を含んでいる。伸張部22は、圧縮ベクトルvからシフト量Sftを推定部51により推定することで、圧縮ベクトルvをシフト量Sftに伸張する。この推定の誤差は、上述の訓練により低減することが可能である。この推定は、ベクトル成分v
1~v
4と、その他の値とを用いて行ってもよい。このような値の例は、ライト動作からの経過時間t、およびW/EサイクルPEである。
【0076】
一方、本実施形態の圧縮部21は、関数を用いてシフト量Sftを圧縮ベクトルvに圧縮しているため、本実施形態の圧縮部21は、推定部51を含んでいなくてもよい。本実施形態によれば、関数を用いて圧縮を行うことで、圧縮を簡単に行うことが可能となる。
【0077】
図12は、第1実施形態の圧縮部21および伸張部22の動作を説明するためのフローチャートである。
【0078】
図12(a)は、圧縮部21の動作フローを示している。
【0079】
まず、圧縮部21が、シフト量Sftを取得する(S11)。シフト量Sftの各成分(シフト値)は、
図6を参照して説明したように、判定電圧(読み出し閾値電圧Vth)から所定の電圧を減算することで算出可能である。
【0080】
次に、圧縮部21が、シフト量Sftを圧縮ベクトルvに変換する(S12)。この変換は、例えば、上記の関数を用いて行われる。
【0081】
次に、圧縮部21が、圧縮ベクトルvを保存する(S13)。圧縮ベクトルvは、例えば、ブロック管理情報としてNANDメモリ12に保存される。
【0082】
図12(b)は、伸張部22等の動作のフローを示している。
【0083】
まず、伸張部22が、NANDメモリ12に保存されている圧縮ベクトルvを、RAM12bへとフェッチする(S21)。次に、伸張部22が、圧縮ベクトルvからシフト量Sftを推定する(S22)。この推定は、例えば、推定部51により行われる。
【0084】
次に、メモリシステム1が、このシフト量Sftから得られた判定電圧を用いて、リード動作を行う(S23)。この際、リード動作が成功した場合には(S24 YES)、正しいシフト量Sftとして、シフト量Sftに追従する上述のシフト量Sft’を、推定部51により取得する(S25)。一方、リード動作が失敗した場合には(S24 NO)、別の方法で、上述のシフト量Sft’に代わる正しいシフト量Sftを取得する(S26)。
【0085】
次に、伸張部22(推定部51)が、上述の損失(loss)を計算する(S27)。損失は、例えば、損失関数L(Sft,Sft’)を用いて計算される。次に、計算された損失が推定部51に入力され、推定部51(DNNモデル)が更新される(S28)。
【0086】
以上のように、本実施形態のメモリコントローラ11は、判定電圧のシフト量Sftを圧縮ベクトルvに圧縮して、NANDメモリ12のメモリ領域内に記憶させる。よって、本実施形態によれば、多値メモリの閾値電圧の判定電圧を、メモリ領域内に好適に記憶させることが可能となる。例えば、圧縮前の判定電圧と伸張後の判定電圧との間の誤差を低減しつつ、メモリ領域の圧迫を抑制することが可能となる。
【0087】
(第2実施形態)
【0088】
図13は、第2実施形態の圧縮部21および伸張部22の動作を説明するための模式図である。
図13に示す圧縮部21および伸張部22は、
図11に示す圧縮部21および伸張部22の変形例に相当する。
【0089】
本実施形態では、圧縮部21および伸張部22の各々が、
図8に示す推定部51を備えている。そのため、本実施形態の圧縮部21は、シフト量Sftから圧縮ベクトルvを推定部51により推定することで、シフト量Sftを圧縮ベクトルvに圧縮する。また、本実施形態の伸張部22は、圧縮ベクトルvからシフト量Sftを推定部51により推定することで、圧縮ベクトルvをシフト量Sftに伸張する。圧縮部21および伸張部22の各々が、
図8に示す推定部51の代わりに、
図9に示す推定部51を備えていてもよい。
【0090】
本実施形態では、圧縮部21が、推定部51としてエンコーダを含み、伸張部22が、推定部51としてデコーダを含んでいる(
図13)。エンコーダは、シフト量Sftを特徴量(圧縮ベクトルv)に変換し、デコーダは、特徴量をシフト量Sftに逆変換する。
図13は、逆変換(復元)により得られたシフト量Sftを、元のシフト量Sftと区別するために、符号Sft’で示している。
図13は、エンコーダおよびデコーダという2つのニューラルネットワークにより構成されるオートエンコーダを示している。エンコーダおよびデコーダは、それぞれ、第1および第2ニューラルネットワークの例である。本実施形態によれば、圧縮も伸張も関数ではなく推定により行うことで、例えば、より正確に疲労度を反映した読み出しを実現することが可能となる。
【0091】
図14は、第2実施形態の圧縮部21および伸張部22の動作を説明するためのフローチャートである。
図14に示すフローは、
図12に示すフローの変形例に相当する。
【0092】
図14(a)は、圧縮部21等の動作フローを示している。
【0093】
まず、圧縮部21が、シフト量Sftを取得する(S31)。次に、圧縮部21が、シフト量Sftをエンコーダに入力して、圧縮ベクトルvを算出する(S32)。また、メモリシステム1が、このシフト量Sftに対応する判定電圧を用いたリード動作を行って、FBCを取得する(S33)。次に、圧縮部21が、圧縮ベクトルvおよびFBCを保存する(S34)。圧縮ベクトルvおよびFBCは、例えば、ブロック管理情報としてNANDメモリ12に保存される。
【0094】
図14(b)は、伸張部22等の動作のフローを示している。
【0095】
まず、伸張部22が、NANDメモリ12に保存されている圧縮ベクトルvおよびFBCを、RAM12bへとフェッチする(S41)。次に、伸張部22が、圧縮ベクトルvをデコーダに入力して、シフト量Sftを推定する(S42)。
【0096】
次に、メモリシステム1が、このシフト量Sftから得られた判定電圧を用いて、リード動作を行う(S43)。この際、リード動作が成功した場合には(S44 YES)、正しいシフト量Sftとして、シフト量Sftに追従する上述のシフト量Sft’を、推定部51により取得する(S45)。一方、リード動作が失敗した場合には(S44 NO)、別の方法で、上述のシフト量Sft’に代わる正しいシフト量Sftを取得する(S46)。S45、S46の各々では、さらに、このリード動作に関するFBCを取得する。
【0097】
次に、伸張部22(推定部51)が、上述の損失(loss)を計算する(S47)。損失は、例えば、FBCにより与えられる。次に、計算された損失が推定部51に入力され、推定部51(DNNモデル)が更新される(S48)。
【0098】
本実施形態のメモリコントローラ11は、第1実施形態のメモリコントローラ11と同様に、判定電圧のシフト量Sftを圧縮ベクトルvに圧縮して、NANDメモリ12のメモリ領域内に記憶させる。よって、本実施形態によれば、多値メモリの閾値電圧の判定電圧を、メモリ領域内に好適に記憶させることが可能となる。例えば、圧縮前の判定電圧と伸張後の判定電圧との間の誤差を低減しつつ、メモリ領域の圧迫を抑制することが可能となる。
【0099】
実施形態は例示であり、発明の範囲はそれらに限定されない。
【符号の説明】
【0100】
1 メモリシステム
2 ホスト装置
11 メモリコントローラ
11a CPU
11b RAM
11c ROM
11d ECC回路
11e メモリI/Fコントローラ
11f ホストI/Fコントローラ
12 NANDメモリ
12a メモリユニット
21 圧縮部
22 伸張部
23 情報管理部
31 I/O信号処理回路
32 制御信号処理回路
33 チップ制御回路
34 RY/BY生成回路
35 コマンドレジスタ
36 アドレスレジスタ
41 ロウデコーダ
42 カラムデコーダ
43 データレジスタ
44 センスアンプ
45 メモリセルアレイ
51 推定部