IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

特開2022-47393メモリシステム、半導体記憶装置及びデータ読み出し方法
<>
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図1
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図2
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図3
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図4
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図5
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図6
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図7
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図8
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図9
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図10
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図11
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図12
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図13
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図14
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図15
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図16
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図17
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図18
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図19
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図20
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図21
  • 特開-メモリシステム、半導体記憶装置及びデータ読み出し方法 図22
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022047393
(43)【公開日】2022-03-24
(54)【発明の名称】メモリシステム、半導体記憶装置及びデータ読み出し方法
(51)【国際特許分類】
   G06F 11/10 20060101AFI20220316BHJP
   G11C 16/26 20060101ALI20220316BHJP
【FI】
G06F11/10 668
G06F11/10 644
G06F11/10 648
G11C16/26 100
【審査請求】未請求
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2020153283
(22)【出願日】2020-09-11
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002907
【氏名又は名称】特許業務法人イトーシン国際特許事務所
(72)【発明者】
【氏名】藤原 大輔
(72)【発明者】
【氏名】佐貫 朋也
(72)【発明者】
【氏名】藤澤 俊雄
【テーマコード(参考)】
5B001
5B225
【Fターム(参考)】
5B001AA11
5B001AB01
5B001AB02
5B001AB05
5B001AD03
5B225BA02
5B225CA11
5B225DA03
5B225DE08
5B225DE20
5B225EA05
5B225FA01
(57)【要約】
【課題】データの符号化率を小さくすることなく、ランダムリードを可能にするメモリシステムを提供する。
【解決手段】実施形態によれば、メモリシステム1は、NANDメモリ2と、メモリコントローラ3と有する。NANDメモリ2は、書き込みデータをコードワードに分割して生成されたコードワードを複数含むデータフレームに変換して、コードワード毎に誤り検出訂正のためのデータフレームの水平方向のパリティデータを生成して、書き込みデータの符号化を行う符号化器14と、復号器15を有する。NANDメモリ2の制御回路13は、読み出しコマンドを受信すると、読み出し対象データTDを、水平方向のパリティデータを用いた硬判定復号を行うように、復号器15を制御し、読み出し対象データTDの硬判定復号に成功したときは、復号された読み出し対象データTDをメモリコントローラ3へ出力する。
【選択図】図1
【特許請求の範囲】
【請求項1】
不揮発性メモリと、
前記不揮発性メモリへのデータの書き込み及び読み出しを制御するコントローラと、
前記不揮発性メモリに設けられ、前記不揮発性メモリへの書き込みデータを所定ビット数の単位データに分割して生成された前記単位データを複数含むデータフレームに変換して、前記単位データ毎に誤り検出訂正のための前記データフレームの第1パリティデータと、前記第1パリティデータとは異なる前記データフレームの第2パリティデータを生成して、前記書き込みデータの符号化を行う符号化器と、
前記不揮発性メモリに設けられ、前記不揮発性メモリから読み出した読み出しデータの復号を行う第1の復号器と、
前記不揮発性メモリに設けられ、前記コントローラから読み出しコマンドを受信すると、前記不揮発性メモリから読み出された読み出し対象データを、前記第1パリティデータを用いた第1復号を行うように、前記第1の復号器を制御し、前記読み出し対象データの前記第1復号に成功したときは、復号された前記読み出し対象データを前記コントローラへ出力する制御回路と、
を有するメモリシステム。
【請求項2】
前記第1復号は、硬判定復号である、請求項1に記載のメモリシステム。
【請求項3】
前記符号化器は、4ビット以下訂正のBCH符号化により前記符号化を行い、
前記第1の復号器は、直接法により前記復号を行う、
請求項1に記載のメモリシステム。
【請求項4】
前記不揮発性メモリは、前記読み出し対象データを含む前記不揮発性メモリの記憶領域の一部のデータを、前記単位データ毎に前記第1の復号器により復号し、前記単位データ毎の訂正ビット数に基づいてビット誤り率を計算し、前記ビット誤り率をモニタするビット誤り率モニタを有し、
前記制御回路は、前記ビット誤り率に基づいて、前記第1パリティデータを用いた第1復号により復号した前記読み出し対象データを、出力するか否かを判定する、請求項1に記載のメモリシステム。
【請求項5】
前記一部の記憶領域は、前記不揮発性メモリからのデータの読み出し単位のデータの一部である、請求項4に記載のメモリシステム。
【請求項6】
前記制御回路は、前記読み出し対象データの前記第1復号に成功しなかったときは、前記第2パリティデータを用いた第2復号を行うように、前記第1の復号器を制御し、前記読み出し対象データの前記第2復号に成功したときは、前記第2復号により復号された前記読み出し対象データを出力する、請求項1に記載のメモリシステム。
【請求項7】
前記第2復号は、硬判定復号である、請求項6に記載のメモリシステム。
【請求項8】
前記コントローラは、軟判定復号を行う第2の復号器を有し、
前記コントローラは、前記読み出し対象データの前記第1復号及び前記第2復号に成功しなかったときは、前記第2の復号器による前記軟判定復号を行うように、前記第2の復号器を制御する、請求項6に記載のメモリシステム。
【請求項9】
前記コントローラは、前記読み出し対象データの前記第1復号に成功せず、前記第2復号に成功したときは、巡回冗長検査を行う、請求項6に記載のメモリシステム。
【請求項10】
前記第1の復号器は、エラー数を判定するエラー判定回路と、第1のエラー数におけるエラービット位置を探索する第1探索回路と、前記第1のエラー数とは異なる第2のエラー数におけるエラービット位置を探索する第2探索回路とを有し、
前記エラー判定回路により判定された前記エラー数が前記第1のエラー数であるときは、前記第1探索回路は動作して前記第2探索回路は動作せず、前記エラー判定回路により判定された前記エラー数が前記第2のエラー数であるときは、前記第1探索回路は動作しないで前記第2探索回路は動作し、前記エラー判定回路により判定された前記エラー数が0であるときは、前記第1探索回路及び前記第2探索回路は動作しないように、前記第1探索回路及び前記第2探索回路は制御される、請求項1に記載のメモリシステム。
【請求項11】
前記不揮発性メモリは、NAND型フラッシュメモリである、請求項1に記載のメモリシステム。
【請求項12】
前記制御回路は、前記第1の復号及び前記第2の復号の成功及び失敗の情報を出力可能である、請求項6に記載のメモリシステム。
【請求項13】
不揮発性記憶領域を有する半導体記憶装置であって、
書き込みデータを所定ビット数の単位データに分割して生成された前記単位データを複数含むデータフレームに変換して、前記コードワード毎に誤り検出訂正のための前記データフレームの第1パリティデータと、前記第1パリティデータとは異なる前記データフレームの第2パリティデータを生成して、前記書き込みデータの符号化を行う符号化器と、
前記不揮発性記憶領域から読み出した読み出しデータの復号を行う復号器と、
読み出しコマンドを受信すると、前記不揮発性記憶領域から読み出された読み出し対象データを、前記第1パリティデータを用いた第1復号を行うように、前記復号器を制御し、前記読み出し対象データの前記第1復号に成功したときは、復号された前記読み出し対象データを出力する制御回路と、
を有する半導体記憶装置。
【請求項14】
前記符号化器は、4ビット以下訂正のBCH符号化により前記符号化を行い、
前記第1の復号器は、直接法により前記復号を行う、
請求項13に記載の半導体記憶装置。
【請求項15】
前記制御回路は、前記読み出し対象データの前記第1復号に成功しなかったときは、前記第2パリティデータを用いた第2復号を行うように、前記第1の復号器を制御し、前記読み出し対象データの前記第2復号に成功したときは、前記第2復号により復号された前記読み出し対象データを出力する、請求項13に記載の半導体記憶装置。
【請求項16】
前記制御回路は、前記第1の復号及び前記第2の復号の成功及び失敗の情報を出力可能である、請求項13に記載の半導体記憶装置。
【請求項17】
前記第1の復号器は、エラー数を判定するエラー判定回路と、第1のエラー数におけるエラービット位置を探索する第1探索回路と、前記第1のエラー数とは異なる第2のエラー数におけるエラービット位置を探索する第2探索回路とを有し、
前記エラー判定回路により判定された前記エラー数が前記第1のエラー数であるときは、前記第1探索回路は動作して前記第2探索回路は動作せず、前記エラー判定回路により判定された前記エラー数が前記第2のエラー数であるときは、前記第1探索回路は動作しないで前記第2探索回路は動作し、前記エラー判定回路により判定された前記エラー数が0であるときは、前記第1探索回路及び前記第2探索回路は動作しないように、前記第1探索回路及び前記第2探索回路は制御される、請求項13に記載の半導体記憶装置。
【請求項18】
不揮発性メモリからのデータの読み出し方法であって、
前記不揮発性メモリにおいて、前記不揮発性メモリへの書き込みデータを所定ビット数の単位データに分割して生成された前記単位データを複数含むデータフレームに変換して、前記コードワード毎に誤り検出訂正のための前記データフレームの第1パリティデータと、前記第1パリティデータとは異なる前記データフレームの第2パリティデータを生成して、前記書き込みデータの符号化を行い、
前記不揮発性メモリにおいて、前記不揮発性メモリから読み出した読み出しデータの復号を行い、
前記不揮発性メモリにおいて、前記読み出しコマンドを受信すると、前記不揮発性メモリから読み出された読み出し対象データを、前記第1パリティデータを用いた第1復号を行い、前記読み出し対象データの前記第1復号に成功したときは、復号された前記読み出し対象データを出力する、
データ読み出し方法。
【請求項19】
前記第1復号は、硬判定復号である、請求項18に記載のデータ読み出し方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステム、半導体記憶装置及びデータ読み出し方法に関する。
【背景技術】
【0002】
不揮発性メモリを用いたメモリシステムでは、所定のサイズでデータの書き込みと読み出しが行われる。メモリシステムは、誤り検出訂正回路を有している。誤り検出訂正回路では、読み出したデータの誤り検出訂正を行うために、誤り検出訂正符号を用いた符号化及び復号が行われる。不揮発性メモリから、その所定のサイズよりも小さいサイズでデータをランダムに読み出しが可能になれば、読み出し性能の向上が期待される。
【0003】
しかし、データサイズが小さくなればなるほど、データの符号化率は小さくなり、データの転送効率が悪くなると共に、メモリシステムのコストも上昇する。
【0004】
また、不揮発性メモリが使用される機器における要求仕様により、誤訂正率を保証しなければならない場合には、巡回冗長検査(Cyclic Redundancy Check;以下、CRCという)符号等をデータに付加する必要があるが、CRC符号等を付加すると、さらに符号化率が悪化する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2001-175542号公報
【特許文献2】特開2020-46871号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
そこで、実施形態は、データの符号化率を小さくすることなく、ランダムリードを可能にするメモリシステム、半導体記憶装置及びデータ読み出し方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
実施形態のメモリシステムは、不揮発性メモリと、前記不揮発性メモリへのデータの書き込み及び読み出しを制御するコントローラと、前記不揮発性メモリに設けられ、前記不揮発性メモリへの書き込みデータを所定ビット数の単位データに分割して生成された前記単位データを複数含むデータフレームに変換して、前記単位データ毎に誤り検出訂正のための前記データフレームの第1パリティデータと、前記第1パリティデータとは異なる前記データフレームの第2パリティデータを生成して、前記書き込みデータの符号化を行う符号化器と、前記不揮発性メモリに設けられ、前記不揮発性メモリから読み出した読み出しデータの復号を行う第1の復号器と、前記不揮発性メモリに設けられ、前記コントローラから読み出しコマンドを受信すると、前記不揮発性メモリから読み出された読み出し対象データを、前記第1パリティデータを用いた第1復号を行うように、前記第1の復号器を制御し、前記読み出し対象データの前記第1復号に成功したときは、復号された前記読み出し対象データを前記コントローラへ出力する制御回路と、を有する。
【図面の簡単な説明】
【0008】
図1】実施形態に関わるメモリシステムの構成を示すブロック図である。
図2】実施形態に関わる、NAND型フラッシュメモリの詳細な構成を示すブロック図である。
図3】実施形態に関わる、NAND型フラッシュメモリの1つのメモリセルアレイの構成を説明するための回路図である。
図4】実施形態に関わる、ホスト装置からのユーザデータの符号化を説明するための図である。
図5】実施形態に関わる、積符号フレームの構成例を説明するための図である。
図6】実施形態に関わる、直接法演算を実行する符号化器及び復号器の構成を示す回路図である。
図7】実施形態に関わる、デコーダの構成を示す回路図である。
図8】実施形態に関わる、ビット誤り率(BER)モニタがヒストグラム生成に用いるデータ領域を説明するための図である。
図9】実施形態に関わる、ヒストグラムの例を示す図である。
図10】実施形態に関わる、ビット誤り率(BER)におけるヒストグラム計算のタイミングを説明するためのグラフである。
図11】実施形態に関わる、ランダムリードの場合のメモリシステムにおける誤り検出訂正処理の動作の流れの例を示すフローチャートである。
図12】実施形態に関わる、サブページデータ中に複数の対象データが含まれることを示す図である。
図13】実施形態に関わる、硬判定復号と軟判定復号における、検出された生のビット誤り率と、訂正不能ビット誤り率との関係を示す模式的なグラフである。
図14】実施形態に関わる、メモリセルアレイ部が16個のプレーンを有するNANDメモリの構成を示すブロック図である。
図15】実施形態に関わる、NANDメモリの構成を示す組立図である。
図16】実施形態に関わる、16プレ-ンの各プレーンに1個のランダムリード対象データが存在する場合を示す図である。
図17】実施形態に関わる、16プレ-ンの各プレーンに2個のランダムリード対象データが存在する場合を示す図である。
図18】実施形態に関わる、16プレ-ンの各プレーンに4個のランダムリード対象データが存在する場合を示す図である。
図19】実施形態に関わる、メモリコントローラと複数のNANDメモリとを含むメモリシステムの構成を示す図である。
図20】実施形態の変形例1に関わるメモリシステムの構成を示すブロック図である。
図21】実施形態の変形例2に関わる、複数のワード線中の複数の対象データがランダムリードされる場合を説明するための図である。
図22】実施形態の変形例2に関わる、ビット誤り率(BER)モニタにおける4本のワード線についてのヒストグラム計算のタイミングを説明するためのグラフである。
【発明を実施するための形態】
【0009】
以下、図面を参照して実施形態を説明する。
(構成)
(全体構成)
図1は、本実施形態に関わるメモリシステムの構成を示すブロック図である。メモリシステム1は、不揮発性メモリとしてのNAND型フラッシュメモリ(以下、NANDメモリという)2と、メモリコントローラ3と、を備える。
【0010】
メモリシステム1は、点線で示すホスト装置(以下、単にホストともいう)4からの要求に応じて、ユーザデータをNANDメモリ2に記憶したり、NANDメモリ2に記憶されたユーザデータをホスト4へ出力したりする。ホスト4は、例えば、パーソナルコンピュータ、スマートフォンである。具体的には、メモリシステム1は、ホストからの書き込み要求に応じて所定のページ単位(例えば16KB(キロバイト))でユーザデータを書き込み、ホストからの読み出し要求に応じてその所定のページよりも小さなサイズ(例えば64B(バイト))のユーザデータをランダムに読み出すことができる。
【0011】
メモリシステム1は、メモリコントローラ3とNANDメモリ2とが1つのパッケージとして構成されるメモリカード等であってもよいし、SSD(Solid State Drive)等であってもよい。図1では、メモリシステム1は、ホスト4と接続された状態として示されている。
【0012】
NANDメモリ2は、メモリセルアレイ部11と、誤り検出訂正(Error Check and Correct)回路(以下、ECC回路という)12と、制御回路13と、を含む半導体記憶装置である。
【0013】
メモリセルアレイ部11は、複数のメモリセルアレイを含み、各メモリセルアレイは、2値又は4値以上のデータを記憶可能な不揮発性記憶領域である。ユーザデータは、メモリセルアレイ部11の複数のメモリセルアレイに不揮発的に記憶可能である。メモリセルアレイ部11の構成については、後述する。
【0014】
ECC回路12は、符号化器14と、復号器15と、ビット誤り率(Bit Error Rate)モニタ(以下、BERモニタという)16と、を含む。ECC回路12は、NANDメモリ2に搭載されるオンチップECC回路である。すなわち、NANDメモリ2は、誤り検出訂正機能を有する。
【0015】
ECC回路12の符号化器14は、メモリコントローラ3からのユーザデータをメモリセルアレイ部11に書き込むときに、誤り検出訂正符号(すなわちパリティデータ)を生成して、ユーザデータに付加する回路である。メモリコントローラ3は、ユーザデータを、所定のサイズのページ単位でNANDメモリ2に書き込む。
【0016】
符号化器14は、所定サイズのコードワードCW(後述する)を複数含む積符号フレームに再構成されたページデータに対して、水平方向及び垂直方向のパリティデータを生成する。所定サイズは、ページデータのサイズよりも小さい。
【0017】
符号化器14は、積符号フレームの水平方向の符号化と、積符号フレームの垂直方向の符号化を行う。
【0018】
本実施形態では、符号化器14は、サブページデータ単位(例えば4KB)で積符号フレームにおける水平方向及び垂直方向のパリティデータを生成する。所定サイズ(例えば64B)は、サブページデータ(例えば4KB)のサイズよりも小さい。
【0019】
ここでは、符号化器14は、4ビット以下のビットを訂正可能なBCH符号による符号化を行う。
【0020】
復号器15は、メモリセルアレイ部11から読み出したユーザデータの誤りを検出しかつ訂正してユーザデータを出力する。メモリコントローラ3は、読み出し要求に関わるアドレスからNANDメモリ2の物理アドレスを特定し、NANDメモリ2へランダムリードための読み出しコマンドを出力する。復号器15は、その読み出しコマンドに応じて読み出されたユーザデータを復号して、復号に成功したユーザデータをメモリコントローラ3へ出力する。
【0021】
復号器15は、「0」又は「1」で表現された二値情報である硬判定情報(すなわちハードビット(HB))に基づく硬判定復号を行う。復号器15は、後述するように、コードワードCW毎にデータの誤り検出訂正を行い、かつコードワードCW毎に、誤り検出訂正したときの訂正ビット数のデータを出力することができる。
【0022】
具体的には、復号器15は、積符号フレームの水平方向の復号と、後述する積符号フレームの垂直方向の復号を行う。例えば、ページデータのサイズが16KB程度のとき、コードワードCWは、8Bから10Bのサイズを有する。水平方向の復号は、例えば4次式を解く直接法演算により行われる。
【0023】
BERモニタ16は、復号器15において水平方向の復号を行ったときの訂正ビット数のヒストグラムの生成機能を有する回路である。BERモニタ16の処理内容については後述する。
【0024】
制御回路13は、誤り検出訂正回路12を含むNANDメモリ2の各部の動作を制御する。
【0025】
メモリコントローラ3は、NANDメモリ2へのデータの書き込み及びNANDメモリ2からのデータの読み出しを制御するコントローラである。具体的には、メモリコントローラ3は、ホスト4からの書き込み要求に応じて、NANDメモリ2を制御する。メモリコントローラ3は、ユーザデータを上述した所定のサイズ(例えば16KB)のページ単位でNANDメモリ2へ書き込む。また、メモリコントローラ3は、ホスト4からの読み出し要求に応じて、NANDメモリ2を制御する。ホスト4からの読み出し要求に係るユーザデータのサイズは、上述したように、書き込み時のページデータの所定のサイズ(例えば16KB)よりも小さいコードワードCWのサイズである。
【0026】
メモリコントローラ3は、プロセッサ21と、ECC回路22と、データバッファ23と、ホストインターフェース回路(以下、ホストI/Fという)24と、メモリインターフェース回路(以下、メモリI/Fという)25を含む。プロセッサ21と、ECC回路22と、データバッファ23と、ホストI/F24と、メモリI/F25とは、内部バス26により互いに接続されている。
【0027】
プロセッサ21は、メモリシステム1の各部を統括的に制御する。プロセッサ21は、ホストI/F24経由でホスト4からの要求を受けた場合に、その要求に従った制御を行う。例えば、プロセッサ21は、ホスト4からの要求に従って、NANDメモリ2へのユーザデータの書き込みをメモリI/F25へ指示する。また、プロセッサ21は、ホスト4からの要求に従って、NANDメモリ2からのユーザデータの読み出しをメモリI/F25へ指示する。
【0028】
また、プロセッサ21は、ホスト4からユーザデータの書き込み要求を受信した場合、データバッファ23に格納されるユーザデータに対して、NANDメモリ2上の記憶領域(メモリ領域)を決定する。すなわち、プロセッサ21は、ユーザデータの書き込み先を管理する。ホスト4から受信したユーザデータの論理アドレスと該ユーザデータが記憶されたNANDメモリ2上の記憶領域を示す物理アドレスとの対応関係の情報は、アドレス変換テーブル(図示せず)に記憶される。
【0029】
また、プロセッサ21は、ホスト4から読み出し要求を受信した場合、読み出し要求により指定された論理アドレスを上述のアドレス変換テーブルを用いて物理アドレスに変換する。プロセッサ21は、該物理アドレスからのデータの読み出しをメモリI/F25へ指示する。
【0030】
ECC回路22は、NANDメモリ2において復号に成功しなかったデータを復号する。よって、誤り検出訂正回路22は、復号器22aを備える。復号器22aは、チェイス復号法などを用いた軟判定復号によりデータの復号を行う。軟判定復号は、複数回の読み出しにより得られたデータの「0」又は「1」であった確率の情報(軟判定情報(ソフトビット))を用いて復号する処理である。
【0031】
データバッファ23は、ホスト4からのユーザデータをNANDメモリ2へ記憶するために一時的に記憶する。ホスト4からのユーザデータは、内部バス26に転送されてデータバッファ23に一時的に記憶される。また、データバッファ23は、NANDメモリ2から読み出したユーザデータをホスト4へ送信するために一時的に記憶する。データバッファ23は、例えば、SRAM(Static Random Access Memory)やDRAM(Dynamic Random Access Memory)などの汎用メモリである。
【0032】
ホストI/F24は、ホスト4との間のインターフェース規格に従った処理を実施する。ホストI/F24は、ホスト4から受信した要求及びユーザデータを内部バス26に出力する。ホストI/F24は、NANDメモリ2から読み出されたユーザデータや、プロセッサ21からの応答などをホスト4へ送信する。
【0033】
メモリI/F25は、プロセッサ21の制御の下、NANDメモリ2へのデータの書き込み、及びNANDメモリ2からのデータの読み出しに関する処理を行う。
(不揮発性メモリの構成)
図2は、NANDメモリ2の詳細な構成を示すブロック図である。NANDメモリ2は、上述したように、メモリセルアレイ部11とECC回路12と制御回路13を含む。図2では、メモリセルアレイ部11は、複数のプレーン11xを含んでいる。各プレーン11xは、メモリセルアレイ11aと、ロウデコーダ(図示せず)と、カラムデコーダ(図示せず)を含む。カラムデコーダは、ページデータPdを格納するページバッファ11bを有している。ページバッファ11bは、データを書き込むとき及び読み出すときのページデータPdを格納する。ECC回路12と複数のプレーン11xは、共通バス17を介して接続されている。
【0034】
なお、ここでは、メモリセルアレイ部11は、複数のプレーン11xを含んでいるが、1つのプレーンを含むものでもよい。
【0035】
NANDメモリ2は、複数のプレーン11xと共通バス17の間に設けられた、複数のページバッファロード回路18と複数のページバッファストア回路19を有している。各ページバッファロード回路18は、ページバッファ11bに格納されたデータをロードして、共通バス17へ出力する。各ページバッファストア回路19は、共通バス17からのデータを、ページバッファ11bに格納する。
【0036】
ECC回路12は、上述した、符号化器14、復号器15及びBERモニタ16に加えて、データを入力するECC入力回路12aと、データを出力するECC出力回路12bを有する。ECC入力回路12aは、ECC回路12で処理する入力データを共通バス17から受信して、符号化器14などへ出力する回路である。ECC出力回路12bは、ECC回路12の処理結果データ(符号化データ又は復号データ)を受信して、共通バス17へ出力する回路である。符号化器14及び復号器15の構成については、後述する。
【0037】
共通バス17のバス幅は、例えばコードワードCWと水平パリティ(pbh)を合わせたデータ(以下、コードワード単位データCWUという)のビット数と同じであり、高速な復号を可能にしている。
【0038】
また、NANDメモリ2は、メモリコントローラ3との間でデータ(アドレス及びデータ)の送受信をするための入出力インターフェース(以下、入出力I/Fと略す)20を有している。入出力I/F20は、共通バス17に接続されている。入出力I/F20は、メモリコントローラ3のメモリI/F25と、複数のデータ入出力線により接続されている。
【0039】
入出力I/F20は、データ入出力線DQ0~DQ7と接続されている。入出力I/F20は、データ入出力線DQ0~DQ7からアドレス及びデータを受信し、制御回路13へ出力する。制御回路13は、入出力I/F20を介して、データ入出力線DQ0~DQ7から、読み出しデータ及び各種データを出力する。
【0040】
制御回路13は、制御信号入力インターフェース(図示せず)を介して、各種制御信号を受信する。各種制御信号は、チップイネーブル信号BCE、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号BWE、リードイネーブル信号RE、BRE(REの相補信号)、ライトプロテクト信号BWP、データストローブ信号DQS、BDQS(DQSの相補信号)である。
【0041】
チップイネーブル信号BCEは、NANDメモリ2の選択信号として用いられる。コマンドラッチイネーブル信号CLEは、動作コマンドをレジスタ(図示せず)に取り込む際に使用される信号である。アドレスラッチイネーブル信号ALEは、アドレス情報もしくは入力データを、内蔵レジスタ(図示せず)に取り込む際に使用される信号である。ライトイネーブル信号BWEは、入出力I/F20上のコマンド、アドレス、およびデータをNANDメモリ2に取り込むための信号である。リードイネーブル信号RE、BREは、データを入出力I/F20からシリアルに出力させる際に使用される信号である。ライトプロテクト信号BWPは、NANDメモリ2の電源投入時、もしくは電源遮断時などの入力信号が不確定な場合に、予期できない消去や書き込みからデータを保護するために使用される。
【0042】
なお、メモリI/F25と入出力I/F20の間では、アドレスとデータの両方が送受信されるが、アドレスとデータは共通の信号線を用いて送受信されるようにしてもよいし、あるいは、アドレスとデータをそれぞれアドレス用信号線とデータ用信号線を用いて送受信するようにしてもよい。アドレスとデータをそれぞれアドレス用信号線とデータ用信号線を用いて送受信することにより、データ転送におけるレンテンシを小さくすることができる。
(メモリセルアレイの構成)
次に、各プレーンのメモリセルアレイの構成について説明する。
【0043】
各プレーン11xでは、ページと呼ばれる所定のサイズで、データの書き込みが行われ、ブロックと呼ばれるデータ単位で消去が行われる。メモリセルアレイ11aの同一のワード線に接続される複数のメモリセルをメモリセルグループと呼ぶ。メモリセルがシングルレベルセル(SLC)である場合は、1つのメモリセルグループが1ページに対応する。メモリセルがマルチレベルセル(MLC)である場合は、1つのメモリセルグループが複数ページに対応する。また、各メモリセルはワード線に接続するとともにビット線にも接続される。従って、各メモリセルは、ワード線を識別するアドレスとビット線を識別するアドレスとで識別することが可能である。
【0044】
図3は、本実施形態に関わるメモリセルアレイ11aの構成を示す回路図である。本例では、図示するように、1つのブロックBLKは例えば4つのストリングユニットSU(SU0~SU3)を含む。また各々のストリングユニットSUは、複数のNANDストリングNSを含む。
【0045】
NANDストリングNSの各々は、例えば8個のメモリセルトランジスタMT(MT0~MT7)及び2個の選択トランジスタST1、ST2を含んでいる。各メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。そして複数(例えば8個)のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されている。図3は、説明を簡単にするために、1つのストリングユニットSUが8本のワード線WLを有する例を示している。
【0046】
ストリングユニットSU0~SU3の各々における選択トランジスタST1のゲートは、それぞれセレクトゲート線SGD0~SGD3に接続される。これに対してストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、例えばセレクトゲート線SGSに共通接続される。もちろん、ストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、ストリングユニット毎に異なるセレクトゲート線SGS0~SGS3に接続されても良い。また、同一のブロックBLK内にあるメモリセルトランジスタMT0~MT7の制御ゲートはそれぞれワード線WL0~WL7に共通接続される。
【0047】
また、メモリセルアレイ11内において同一列にある複数のNANDストリングNSの選択トランジスタST1のドレインは、ビット線BL(BL0~BL(K-1)、但しKは2以上の自然数)に共通接続される。すなわちビット線BLは、複数のブロックBLK間で複数のNANDストリングNSを共通に接続する。更に、複数の選択トランジスタST2のソースは、ソース線SLに共通に接続されている。
【0048】
つまり、メモリセルアレイ11aは、各ビット線BLが共通に接続された複数のブロックBLKの集合体である。また、各ブロックBLKは、各ワード線WLを共通にする複数のストリングユニットSUを複数含む。各ストリングユニットSUは、互いに異なる複数のビット線BLに接続され、且つ同一のセレクトゲート線SGDに接続された複数のNANDストリングNSを含む。
【0049】
図1に戻り、NANDメモリ2は、他に、図示しない、ドライバ回路、アドレスレジスタ、コマンドレジスタ等を備える。シーケンサである制御回路13が、コマンドレジスタに保持されたコマンドに基づき、NANDメモリ2全体の動作を制御することにより、各プレーン11xへのデータの書き込み処理及び各プレーン11xからのデータの読み出し処理を行う。
【0050】
ここでは、1つのメモリセルトランジスタMTは、1ビットデータを保持可能である。すなわち、NANDメモリ2は、いわゆるSLC(Single Level Cell)方式の半導体記憶装置である。
【0051】
なお、1つのメモリセルトランジスタMTは、例えば多値データを保持可能であってもよい。例えば、1つのメモリセルトランジスタMTが3ビットデータを保持可能な場合、NANDメモリ2は、いわゆるTLC(Triple Level Cell)方式の半導体記憶装置である。この3ビットデータを、下位ビットからそれぞれ下位(Lower)ビット、中位(Middle)ビット、及び上位(Upper)ビットと呼ぶことにする。そして、一つのストリングユニット中の同一のワード線WLに接続された複数のメモリセルトランジスタMTの保持する下位ビットの集合を下位ページと呼び、中位ビットの集合を中位ページと呼び、上位ビットの集合を上位ページと呼ぶ。一つのストリング中の一つのワード線に接続された複数のメモリセルトランジスタMTは、下位、中位及び上位ビットを保持する一つのページユニットを構成する。つまり、各ページユニットには、図3において一点鎖線で示すように、3ページが割り当てられる。データの書き込みは、ページユニット単位で行われ、データの読み出しは、このページ毎に行われる。
【0052】
1つのメモリセルトランジスタMTが多値データを保持可能な場合、いわゆる低速書き込み(すなわち高信頼性書き込み)によるデータの書き込みが行われる。
(符号化)
書き込みデータであるユーザデータは、NANDメモリ2内において、符号化器14により符号化されて格納される。ユーザデータは、積符号フレームにより符号化される。
【0053】
図4は、ホスト4からのユーザデータの符号化を説明するための図である。図5は、積符号フレームの構成例を説明するための図である。
【0054】
図4に示すように、一回の書き込み対象データのユーザデータUDdは、4つのサブユーザデータUDに分割される。4つのサブユーザデータUDは、後述する4つのサブページデータPCDに対応する。各サブユーザデータUDは、制御回路13により、複数行でかつ複数列のデータからなる積符号フレームとして再構成される。
【0055】
図5に示すように、積符号フレームは、所定のサイズのデータ(以下、コードワードという)CWを複数行含むデータフレームである。各コードワードCWは、例えば、8B(64ビット)から100B(800ビット)の範囲内の所定のデータサイズを有する。ここでは、コードワードCWのビット数は、64Bである。積符号フレームは、水平方向のパリティビット部PBHと、垂直方向のパリティビット部PBVを含む。
【0056】
なお、図5に示すように、CRC用のコード部が、各サブユーザデータUDに含まれている。
【0057】
パリティビット部PBHは、コードワードCW毎に水平方向に付加された複数のパリティビットpbhである。パリティビットpbhは、水平方向のパリティビットである。1つのコードワードCWとパリティビットpbhとを合わせたデータが、コードワード単位データCWUである。符号化器14では、水平方向のパリティビットpbhは、各コードワードCWに対して、BCH(Bose-Chaudhuri-Hocquenghem)符号方式に基づいて生成される。ここでは、コードワードCWが64B(すなわち512ビット)に対して、4ビット以下のビット訂正可能なBCH符号による符号化が行われ、パリティビットpbhがコードワードCWに付加される。
【0058】
例えば、符号化が4ビット以下のビット訂正可能なBCH符号による場合、コードワードCW長が64Bのときは、ユーザデータの符号化率は0.86であり、コードワードCW長が48Bのときは、ユーザデータの符号化率は、0.89である。
【0059】
パリティビット部PBVは、複数のコードワード単位データCWUについて付加された垂直方向のパリティビットである。パリティビット部PBVは、複数のコードワードCWに対応するパリティビットpbv1と、パリティビット部PBHに対応するパリティビットpbv2を含む。
【0060】
垂直方向のパリティビットpbv1,pbv2は、垂直方向において、XOR(排他的論理和)演算により生成される。なお、垂直方向のパリティビットは、リード・ソロモン符号方式、BCH符号方式などの他の符号方式に基づいて生成されるものでもよい。
【0061】
図4に示すように、ユーザデータUDd(例えば16KB)は、4つのサブユーザデータUDに分割される。サブユーザデータUD(例えば4KB)毎に積符号フレームに基づくパリティデータPDが生成される。よって、符号化器14は、サブユーザデータUDとパリティデータPDを含む4つのサブページデータPCDを生成する。各サブページデータPCDが、積符号ECCフレームである。積符号ECCフレームは、積符号フレーム単位のECC処理単位である。制御回路13は、生成された4つのサブページデータPCDを、指定されたプレーン11xの物理アドレスのワード線WLに書き込む。
【0062】
なお、図4では、ページデータPdは、積符号フレームに基づく各サブページデータPCD中では、メモリコントローラ3からのサブユーザデータUDと、パリティデータPDの2つのデータフィールドに分かれているデータ構造を有しているが、図5に示すコードワードCW毎にパリティビットpbhを付加した複数のデータをシリアルに結合して、かつ最後にパリティビット部PBVを付加するようにしたデータ構造を有するようにしてもよい。
【0063】
水平方向のパリティビット部PBHと垂直方向のパリティビット部PBVに含まれるデータが、パリティデータPDを構成する。
【0064】
以上のように、符号化器14は、サブユーザデータUD毎に積符号フレームを作成して、水平方向及び垂直方向のパリティデータを算出する。
【0065】
そして、図4に示すように、ページデータPdは、ユーザデータUDdと、水平及び垂直方向のパリティデータPDと、を含む。各コードワードCWとそのコードワードに対応するパリティデータPDとは、ページデータPd中において予め決められた位置に関係付けられて配置される。
【0066】
以上のように、制御回路13は、NANDメモリ2に設けられ、NANDメモリ2への書き込みデータを所定ビット数の単位データ(上記の例ではコードワードCW)に分割する。符号化器14は、単位データ(CW)を複数含む積符号フレームに変換する。そして、符号化器14は、単位データ(コードワードCW)毎に誤り検出訂正のための積符号フレームの水平方向の第1パリティデータと、積符号フレームの垂直方向の第2パリティデータを生成して、書き込みデータの符号化を行う。
【0067】
ページデータPdは、共通バス17を介してメモリセルアレイ部11へ出力される。
(復号)
復号器15は、符号化されたユーザデータを復号する。すなわち、復号器15は、NANDメモリ2に設けられ、NANDメモリ2の複数のプレーン11xから読み出された読み出しデータの復号を行う。上述したように、復号器15は、「0」又は「1」で表現された二値情報である硬判定情報に基づく硬判定復号を行う。
【0068】
復号器15は、水平方向におけるコードワードCWに対して4ビット以下のビット訂正を直接法により行う第1の復号処理部と、積符号フレームの垂直方向における復号処理を行う第2の復号処理部とを有する。復号器15は、4ビット以下のビット訂正を直接法により実行するので、水平方向の復号処理を高速に行うことができる。
【0069】
復号器15の第1の復号処理部は、コードワードCWの水平方向の復号を、直接法演算により行う。直接法演算は、例えば「BCH復号への適用を有するルートを見出すハイブリッド法」(アール.ティ.チェン、ビー.ディ.カニンガム、アイ.ビー.オールダム著、情報セオリについてのIEEEトランザクション、15巻、No.2、329~335ページ、1969年(R.T,Chien,B.D.Cunningham,I.B.Oldham,”Hybrid methods for finding roots of a polynomial with application to BCH decoding”IEEE Transactions on Information Theory,vol 15,no.2,pp.329-335,1969))」に記載されている。
【0070】
なお、復号器15の第2の復号処理部は、積符号フレームに対して、垂直方向の複合を行う。
【0071】
復号器15は、各コードワードCWの水平方向の復号において誤り検出訂正をしたとき、訂正ビット数のデータを出力する。この訂正ビット数のデータは、後述するBERモニタ16においてヒストグラムを生成するときに用いられる。
【0072】
次に、符号化器14及び復号器15の構成を説明するが、直接法に関わる水平方向の符号化処理と復号処理について説明し、垂直方法の符号化処理と復号処理は、XOR演算などにより行われるので、説明は省略する。
【0073】
図6は、直接法演算を実行する符号化器14及び復号器15の構成を示す回路図である。符号化器14及び復号器15は、図6に示す回路30により実現されている。回路30は、入力回路31、出力回路32、バッファ33、パリティ/プリシンドローム算出回路34、シンドローム生成回路35、及びデコーダ36を有している。
【0074】
回路30には、入力データIDATAと、モードデータMODEとが入力される。回路30は、符号化されたデータ又は復号されたデータを出力する。モードデータMODEは、回路30を符号化器14として動作させるエンコードモードか、回路30を復号器15として動作させるデコードモードかを示す。モードデータMODEは、制御回路13から与えられる。
【0075】
入力回路31は、入力データIDATAを取り込む回路である。エンコードモードのときは、入力データIDATAは、コードワードCWのデータである。デコードモードのときは、入力データIDATAは、水平方向パリティが付加されたコードワードCWを含む符号化データ(コードワード単位データCWU)である。
【0076】
出力回路32は、符号化データ又は復号データを、出力データODATAとして出力する回路である。デコードモードのときは、出力データODATAは、コードワードCWのデータである。エンコードモードのときは、水平方向パリティが付加されたコードワードCWを含む符号化データである。
【0077】
バッファ33は、入力データIDATAを一時的に格納する回路である。
【0078】
パリティ/プリシンドローム算出回路34は、入力データIDATA(例えば64BのコードワードCW)を符号化するときはパリティを算出して出力し、入力データIDATAを復号するときはプリシンドロームを算出して出力する。
【0079】
具体的には、動作モードがエンコードモードであるとき、パリティ/プリシンドローム算出回路34は、パリティビットを生成する。生成されたパリティビットは、出力回路32へ出力される。出力回路32は、符号化データを出力データODATAとして出力する。符号化データは、バッファ33に格納された入力データにパリティビットが付加されたコードワード単位データCWUである。
【0080】
動作モードがデコードモードであるとき、パリティ/プリシンドローム算出回路34は、
プリシンドロームを算出し、シンドローム生成回路35へ出力する。
【0081】
動作モードがデコードモードであるとき、シンドローム生成回路35は、プリシンドロームに基づいてシンドロームを生成する。ここでは、4ビット以下のビットを訂正するので、シンドロームは、S1,S3,S5,S7である。
【0082】
デコーダ36は、生成されたシンドロームに基づいて、エラービット位置を示すアドレス、又は訂正失敗を、出力する回路である。
【0083】
図7は、デコーダ36の構成を示す回路図である。デコーダ36は、制御回路41、エラー判定回路42、第1探索回路43、第2探索回路44、及びアドレス変換回路45を有している。
【0084】
デコーダ36には、シンドロームが入力され、デコーダ36は、誤り位置のアドレス情報を出力する。
【0085】
制御回路41は、デコーダ36の全体の動作を制御する。
【0086】
エラー判定回路42は、シンドロームを入力して、エラーの訂正ビット数を判定する。エラー判定回路42は、ビット誤り位置を探索するための各種中間情報も算出する。エラー判定回路42は、第1探索回路43と第2探索回路44へ、シンドロームと中間情報を出力する。エラー判定回路42は、訂正ビット数のデータを制御回路41へ出力する。
【0087】
この訂正ビット数のデータは、BERモニタ16において用いられる。
【0088】
制御回路41は、訂正ビット数に基づいて、第1探索回路43又は第2探索回路44を起動する。訂正ビット数が1又は2であるときは、第1探索回路43を起動し、第2探索回路44を起動しない。訂正ビット数が3又は4であるときは、第1探索回路43を起動せず、第2探索回路44を起動する。
【0089】
第1探索回路43には、シンドロームS1と中間情報が入力される。第1探索回路43は、1又は2ビットの誤りの誤り位置探索を行う。
【0090】
第2探索回路44には、シンドロームS1と中間情報が入力される。第2探索回路44は、3又は4ビットの誤りの誤り位置探索を行う。
【0091】
すなわち、復号器15は、エラー数を判定するエラー判定回路42と、第1のエラー数におけるエラービット位置を探索する第1探索回路43と、第1のエラー数とは異なる第2のエラー数におけるエラービット位置を探索する第2探索回路44とを有する。
【0092】
また、制御回路41は、訂正ビット数に基づいて、アドレス変換回路45へ対する指示を行う。訂正ビット数が1又は2であれば、第1探索回路43の出力を入力するようにアドレス変換回路45へ指示する。訂正ビット数が3又は4であれば、第2探索回路44の出力を入力するようにアドレス変換回路45へ指示する。
【0093】
アドレス変換回路45は、第1探索回路43又は第2探索回路44からの誤り位置情報から、入力データIDATA中の誤りビット位置のアドレス情報に変換する。アドレス変換回路45は、また、訂正ビット数の情報と、デコード失敗の情報も出力する。
【0094】
制御回路41は、エラー判定回路42から訂正ビット数が0であるとの情報を受信すると、レディ状態情報(DEC_READY)を出力する。制御回路41は、レディ状態情報(DEC_READY)に基づいて、第1探索回路43及び第2探索回路44の動作を停止させることができる。その結果、第1探索回路43と第2探索回路44が電力を消費しない状態が発生するので、電流効率を低減することができる。
【0095】
以上のように、エラー判定回路42により判定されたエラー数が第1のエラー数であるときは、第1探索回路43は動作して第2探索回路44は動作せず、エラー判定回路42により判定されたエラー数が第2のエラー数であるときは、第1探索回路43は動作しないで第2探索回路44は動作し、エラー判定回路42により判定されたエラー数が0であるときは、第1探索回路43及び第2探索回路44は動作しないように、第1探索回路43及び第2探索回路44は制御される。
【0096】
本実施形態では、メモリコントローラ3は、ホスト4からのデータの読み出し要求に応じて、ランダムリードを行うことができる。本明細書において、ランダムリードとは、1ページ中の一部のデータを、例えば数バイト単位から100バイト単位で読み出す処理である。すなわち、ランダムリードとは、1ページ内又は1サブページ内の小さいデータサイズデータ(例えば64B)を読み出すことをいう。
(BERモニタリング)
BERモニタ16は、ランダムリードの読み出し対象データを含むページデータPdの一部のデータについて判定された訂正ビット数のヒストグラムを生成する回路である。ここでは、ページデータPdが16KB程度であれば、ページデータPdの一部は、先頭の512Bである。
【0097】
制御回路13は、メモリコントローラ3から読み出しコマンドを受信すると、そのコマンドにおいて指定されたアドレスを含むページデータPd又はサブページデータPCDの中の予め決められた領域のデータを復号器15に供給する。
【0098】
図8は、BERモニタ16がヒストグラム生成に用いるデータ領域を説明するための図である。複数のページデータPdがNANDメモリ2に記憶される。ランダムリードの対象アドレスを含むページデータPd(例えば図8ではワード線WL4)が読みだされたとき、ページデータPd又はサブページデータPCD中の所定の領域PBのデータが、BERモニタ領域として、復号器15に供給される。ここでは、図8に示すように、所定の領域(以下、BERモニタ領域という)PBのデータは、ページデータPdの先頭の512Bデータである。すなわち、BERモニタ領域PBのデータは、NANDメモリ2からのデータの読み出し単位のデータの一部である。
【0099】
制御回路13は、BERモニタ領域PBの複数のコードワードCWを、復号器15に供給する。復号器15は、入力されたBERモニタ領域PBの各コードワードCWを、ECCパリティであるパリティビットpbhを用いて復号し、訂正ビット数のデータを出力する。復号器15は、上述したように、復号処理において得られた訂正ビット数のデータを出力する。よって、復号器15は、入力されたBERモニタ領域PBに含まれる複数のコードワードCWについての訂正ビット数のデータを出力する。
【0100】
BERモニタ16は、復号器15において判定された複数のコードワードCWの訂正ビット数のデータを処理して、例えばパイプライン処理回路により処理して、訂正ビット数のヒストグラムデータを得ることができる。よって、制御回路13は、復号器15が出力した訂正ビット数のデータに基づき、訂正ビット数のヒストグラムを生成する。
【0101】
以上のように、読み出し対象データTDを含むメモリセルアレイ部11の記憶領域の一部のデータは、単位データとしてのコードワードCW毎に復号器15により復号される。NANDメモリ2に設けられたBERモニタ16は、単位データ毎の訂正ビット数に基づいてビット誤り率(BER)を計算し、ビット誤り率(BER)をモニタする。
【0102】
図9は、ヒストグラムの例を示す図である。復号器15が出力した訂正ビット数のデータから、制御回路13は、図9に示すような、訂正ビット数毎のヒストグラムを生成する。図9は、BERモニタ領域PBには、訂正ビット数が「0」であるコードワードCWが多く、訂正ビット数が「1」であるコードワードCWがわずかにあり、訂正ビット数が「2」以上のコードワードCWがない例を示している。
【0103】
図9に示すように、訂正ビット数が「0」の割合が高く、訂正ビット数が「1」が少ない割合で存在しても、訂正ビット数が「2」以上の割合が「0」である場合は、そのページデータPdに含まれるランダムリード対象データの復号時の誤訂正率は低いと考えられる。逆に、訂正ビット数が「2」以上の割合が所定の割合よりも高い場合は、そのページデータPdに含まれるランダムリード対象データの復号時の誤訂正率は低くない可能性があると考えられる。制御回路13は、BERモニタ16の生成したヒストグラムのデータから、ページデータPdあるいはサブページデータPCDに含まれるランダムリード対象データの復号時の誤訂正率が低いか、低くないかを判定することができる。
【0104】
例えば、制御回路13は、訂正ビット数が「2」以上の割合が0%で、訂正ビット数が「1」の割合が10%以下で、残りは訂正ビット数が「0」である場合、ページデータPdあるいはサブページデータPCDに含まれるランダムリード対象データの復号時の誤訂正率は低いと判定し、それ以外の場合は、ページデータPdあるいはサブページデータPCDに含まれるランダムリードの対象データの復号時の誤訂正率は低くないと判定する。
【0105】
ここでは、制御回路13は、訂正ビット数毎の全体に対する割合についての所定の閾値と、検出された各訂正ビット数の全体に対する割合とを比較して、ページデータPdあるいはサブページデータPCDに含まれるランダムリードの対象データの復号時の誤訂正率は低いか否かを判定する。
【0106】
なお、復号時の誤訂正率は低いか否かは、検出された各訂正ビット数の値と、所定の値(閾値)との比較により判定するようにしてもよい。
【0107】
本実施形態では、NANDメモリ2では、BERモニタ16によりヒストグラムデータ(ランダムリード対象データを含むページデータPdあるいはサブページデータPCDの訂正ビット数データ)が算出される。NANDメモリ2は、ヒストグラムデータに基づいて復号時の誤訂正率は低いと判定された場合に、符号化器14が硬判定復号による水平方向復号(以下、水平方向HB復号ともいう)に成功したときは、1又は2以上のコードワードCWのデータをそのまま、ランダムリード対象データとして、メモリコントローラ3へ出力する。
【0108】
さらに、後述するように、その水平方向HB復号に成功しなかった場合、NANDメモリ2は、積符号フレームの垂直方向の硬判定復号により、ランダムリード対象データを含むページデータPdあるいはサブページデータPCDの復号を行う。硬判定復号による垂直方向復号(以下、垂直方向HB復号ともいう)に成功したときは、NANDメモリ2は、ページデータPdあるいはサブページデータPCDと、復号されたデータとを、メモリコントローラ3へ出力する。
【0109】
また、積符号フレームの垂直方向HB復号にも成功しなかった場合、NANDメモリ2は、ランダムリード対象データを含むページデータPdあるいはサブページデータPCDのデータを、メモリコントローラ3へ出力して、メモリコントローラ3において、積符号フレームの軟判定復号による水平方向復号(以下、水平方向SB復号ともいう)を行う。
【0110】
さらに、メモリコントローラ3において、水平方向の軟判定復号にも成功しなかった場合、メモリコントローラ3において、積符号フレームの軟判定復号による垂直方向復号(以下、垂直方向SB復号ともいう)を行う。
【0111】
BERモニタ16によるBER計算は、ランダムリード処理に対してシーケンシャルに実行してもよいし、ランダムリード処理と並列に実行してもよい。
【0112】
図10は、BERモニタ16におけるヒストグラム計算のタイミングを説明するためのグラフである。1ページ(16KB)のデータ中の12.5%(2KB)のデータを読み出す場合のタイミングを示す図である。図10は、ケース1と、ケース2と、ケース3のタイミングチャートである。ケース1は、本実施形態のヒストグラム計算とランダムリードを直列に行うケースである。ケース2は、本実施形態のヒストグラム計算とランダムリードを並列に行うケースである。ケース3は、メモリコントローラ3において、積符号化を行わずに64B毎にBCH符号化されたデータを復号して2KBのデータを読み出すケースである。
【0113】
ケース1は、ページデータPd中のBERモニタ領域PBの複数のコードワードCW(24Bの場合)を用いて訂正ビット数のデータのヒストグラム計算を行ってから2KBのデータの読み出しを行っている。所定の条件下での出願人のシミュレーション計算では、1ページ中の2KBのデータの読み出しに、2825ns(ナノ秒)掛っている。
【0114】
ケース2は、ページデータPd中のBERモニタ領域PBの複数のコードワードCW(24Bの場合)を用いた訂正ビット数のデータのヒストグラム計算と、2KBのデータの読み出しを並列に行っている。所定の条件下での出願人のシミュレーション計算では、1ページ中の2KBのデータの読み出しに、2600ns(ナノ秒)掛っている。
【0115】
ケース3では、所定の条件下での出願人のシミュレーション計算では、1ページの2KBのデータの読み出しに、5160ns(ナノ秒)掛っている。
【0116】
図11は、ランダムリードの場合のメモリシステム1における誤り検出訂正処理の動作の流れの例を示すフローチャートである。
【0117】
ホスト4からデータの読み出し要求を受けると、メモリコントローラ3のプロセッサ21は、読み出し要求に関わるデータ(すなわち対象データ)の論理アドレスから変換された物理アドレス(対象データを含む記憶領域の物理アドレス)と、読み出しコマンドを、NANDメモリ2へ出力する。ここでは、1ページデータPd中の1つのサブページデータPCD中の複数の対象データが読み出される場合を説明する。
【0118】
図12は、サブページデータPCD中に複数の対象データTDが含まれることを示す図である。図12に示すように、サブページデータPCD(4KB)中に複数の対象データTDが存在している。
【0119】
制御回路13は、複数の物理アドレスのページを特定し、その物理アドレスのページデータPdをメモリセルアレイ部11から読み出す。制御回路13は、読み出されたページデータPdのBERモニタ領域PBの訂正ビット数のヒストグラムの生成をBERモニタ16に指示する。制御回路13がBERモニタ16からヒストグラムデータを受信すると、図11の処理が実行される。
【0120】
制御回路13は、BERモニタ16からのヒストグラムデータから、複数の対象データTDを含むページデータPdのビット誤り率(BER)が所定の割合より低いかを判定する(ステップ(以下、Sと略す)1)。
【0121】
上述したように、例えば、訂正ビット数が「2」以上の割合が0%で、訂正ビット数が「1」の割合が10%以下で、残りは訂正ビット数が「0」である場合、制御回路13は、対象データTDを含むページデータPdのビット誤り率(BER)は低いと判定する。それ以外の場合は、制御回路13は、対象データTDを含むページデータPdのビット誤り率(BER)は低くないと判定する。
【0122】
ビット誤り率が所定の割合より低い場合(S1:YES)、制御回路13は、サブページデータPCDの積符号フレームから、対象データTDのアドレスのデータを含む各コードワードCWに対して水平方向の硬判定復号を実行する(S2)。S2の処理は、水平方向HB復号である。
【0123】
S2の後、複数の対象データTDのアドレスのデータを含む複数のコードワードCWが全て正しく復号されたかを判定する(S3)。複数のコードワードCWが全て正しく復号された場合(S3:YES)、制御回路13は、複数の対象データを含む複数のコードワードCWの復号が成功したとして、パリティデータを付けないで、読み出し要求に関わる複数の物理アドレスの複数の対象データTD(すなわち複数のコードワードCW)をメモリコントローラ3へ出力する。この場合、メモリコントローラ3は、NANDメモリ2から受信した複数の対象データTDを、遅滞なくそのまま出力することができる。
【0124】
すなわち、NANDメモリ2に設けられた制御回路13は、ビット誤り率(BER)に基づいて、パリティデータpbhを用いた水平方向HB復号により復号した読み出し対象データTDを、出力するか否かを判定する。具体的には、制御回路13は、メモリコントローラ3から読み出しコマンドを受信すると、ビット誤り率(BER)が低いときには、メモリセルアレイ部11から読み出された読み出しコマンドに関わる読み出し対象データTDを、パリティデータpbhを用いた水平方向HB復号を行うように、復号器15を制御し、読み出し対象データTDの水平方向HB復号に成功したときは、復号された読み出し対象データTDをメモリコントローラ3へ出力する。
【0125】
ビット誤り率(BER)が所定の割合より低くない場合(S1:NO)、又は複数の対象データTDの複数のアドレスのデータを含む複数のコードワードCWが全て正しく復号されなかった場合(S3:NO)、制御回路13は、4KBの積符号データを用いて、第2の復号処理部に、サブページデータPCDの積符号フレームから、垂直パリティチェックすなわち垂直方向HB復号を実行させる(S4)。垂直パリティチェックにより、例えばXOR演算による消失訂正が行われる。S4の処理は、硬判定のハードビット(HB)復号処理である。
【0126】
なお、S4において、垂直方向HB復号を実行した後、その垂直方向HB復号で訂正されたデータを用いてさらに水平方向HB復号を行い、さらに必要であれば、垂直方向HB復号を実行するような繰り返し復号を実行するようにしてもよい。例えば、垂直パリティに、BCH符号あるいはリード・ソロモン符号に基づくパリティデータを用いると、繰り返し復号が実行可能である。
【0127】
S4の後、制御回路13は、複数の対象データTDのアドレスのデータを含む複数のコードワードCWが全て正しく復号されたかを判定する(S5)。複数のコードワードCWが全て正しく復号された場合(S5:YES)、制御回路13は、復号された対象データTDの複数のコードワードCWと共に、垂直方向HB復号により復号されたデータに対してCRCを実行するように、復号された4KBのユーザデータをメモリコントローラ3へ出力する。その結果、メモリコントローラ3においてCRCが実行される。なお、CRCは、制御回路13で実行してもよい。
【0128】
すなわち、メモリコントローラ3は、読み出し対象データ(TD)の水平方向HB復号に成功しなかった場合に、垂直方向HB復号に成功したときは、CRCを実行する。
【0129】
プロセッサ21は、NANDメモリ2から受信したユーザデータに対してCRCのチェックを実行し(S6)、CRCのチェックをパスしたかを判定する(S7)。ここでは、CRCのチェックは、サブページデータPCD単位である。
【0130】
以上のように、本実施形態では、BERモニタ16のビット誤り率(BER)が低いときに水平方向HB復号が成功しなかった場合、及びBERモニタ16のビット誤り率(BER)が低くない場合に、CRCのチェックを行うようにして、誤訂正の発生を防止すると共に、レイテンシーが大きくなるのを抑えている。言い換えれば、BERモニタ16のビット誤り率(BER)が低くかつ水平方向HB復号が成功した場合は、CRCは行われない。
【0131】
CRCをパスしたと判定された場合(S7:YES)、プロセッサ21は、ランダムリードに関わる複数の対象データTDを抽出して、ホスト4へ出力する。
【0132】
以上のように、制御回路13は、読み出し対象データTDの水平方向HB復号に成功しなかったときは(S3:NO)、垂直方向のパリティビットpbv1を用いた垂直方向HB復号を行うように、復号器15を制御する。制御回路13は、読み出し対象データ(TD)の垂直方向HB復号に成功したときは、垂直方向HB復号により復号された読み出し対象データTDを出力する。
【0133】
複数のコードワードCWが硬判定復号により正しく復号されなかった場合(S5:NO)、制御回路13は、複数の対象データを含む積符号フレームを、メモリコントローラ3へ出力し、ECC回路22の復号器22aによる水平方向SB復号が実行される(S8)。S8の処理は、軟判定のソフトビット(SB)復号処理である。
【0134】
プロセッサ21は、例えば、複数の対象データに関わるコードワードCWを複数回読み出し、その読み出されたデータを用いて各ビットの「0」又は「1」の確率計算を行いながら、軟判定を行う。
【0135】
以上のように、メモリコントローラ3のプロセッサ21は、読み出し対象データTDの水平方向及び垂直方向の硬判定復号に成功しなかったときは(S5:NO)、復号器22aによる水平方向SB復号を行うように、復号器22aを制御する(S8)。
【0136】
プロセッサ21は、水平方向SB復号の実行の結果、各コードワードCWが正しく復号されたかを判定する(S9)。
【0137】
水平方向SB復号が成功した場合(S9:YES)、プロセッサ21は、S6とS7の処理を実行する。
【0138】
水平方向SB復号が成功しなかった場合(S9:NO)、プロセッサ21は、復号器22aを用いて、サブページデータPCDの積符号フレームから、垂直方向SB復号を実行する(S10)。S4の処理は、XOR演算による軟判定のソフトビット(SB)復号処理である。垂直方向SB定復号の処理は、サブページデータPCD単位で行われる。なお、読み出し対象データTDが、4つのサブページデータPCDに渡って存在するときには、垂直方向SB復号の処理は、ページ単位で行われる。
【0139】
S10では、サブページデータPCD(例えば4KB)の積符号フレームの縦方向のパリティビット部PBVを用いて、垂直方向SB復号が実行される。
【0140】
なお、S10においても、上述したような繰り返しECCを実行するようにしてもよい。
【0141】
プロセッサ21は、垂直方向SB復号の実行の結果、対象データTDを含むコードワードCWが全て正しく復号されたかを判定する(S11)。
【0142】
垂直方向SB復号が成功した場合(S11:YES)、プロセッサ21は、S6とS7の処理を実行する。
【0143】
垂直方向SB復号が成功しなかった場合(S11:NO)、及びCRCチェックをパスしなかった場合(S7:NO)、プロセッサ21は、データの読み出しに失敗したことになり、データの読み出しに失敗した場合の予め決められた処理を実行する。
【0144】
以上のように、NANDメモリ2において、ハードビット(HB)に基づく硬判定による誤り検出訂正(硬判定復号)ができなかったときには、メモリコントローラ3が、軟判定による誤り検出訂正(軟判定復号)を行うことによって、誤り検出訂正の訂正率の向上が図られている。
【0145】
すなわち、BERモニタ16により読み出し対象データTDを含むページデータPdの誤訂正率が低いと考えられる場合、読み出し対象データTDを含むページのコードワードCWの水平方向の硬判定復号が成功したときは(S3:YES)、そのままNANDメモリ2は、読み出した対象データTDをメモリコントローラ3に出力する。
【0146】
さらに、水平方向の硬判定復号が成功しなかった場合(S3:NO)、及びBERモニタ16により読み出し対象データTDを含むページの誤訂正率が低くないと判定された場合(S1:NO)、メモリコントローラ3は、誤訂正がないことを確認するため、CRCチェックを行い、誤訂正率の低下を防いでいる。
【0147】
図13は、上述した硬判定復号と軟判定復号における、検出された生のビット誤り率RBER(Raw Bit Error Rate)と、訂正不能ビット誤り率UBER(Uncorrectable Bit Error Rate)との関係を示す模式的なグラフである。
【0148】
水平方向の硬判定復号のBER(Horizontal ECC(HB))、垂直方向の硬判定復号のBER(Vertical ECC(HB))、水平方向の軟判定復号のBER(Horizontal ECC(SB))及び垂直方向の軟判定復号のBER(Vertical ECC(SB))は、いずれも、白の矢印で示すように、生のビット誤り率RBERが大きくなるほど、訂正不能ビット誤り率UBERも大きくなる。
【0149】
また、生のビット誤り率RBERが大きくなるほど、訂正不能ビット誤り率UBERは、垂直方向の軟判定復号のBER(Vertical ECC(SB))、水平方向の軟判定復号のBER(Horizontal ECC(SB))、垂直方向の硬判定復号のBER(Vertical ECC(HB))、水平方向の硬判定復号のBER(Horizontal ECC(HB))の順に、小さくなる。
【0150】
よって、図11に示す順で復号を行うことにより、復号がなるべく早めに成功するようになっている。
【0151】
ここで、NANDメモリ2のプレーン数が16個の場合について説明する。
【0152】
図14は、メモリセルアレイ部が16個のプレーンを有するNANDメモリ2の構成を示すブロック図である。図15は、NANDメモリ2の構成を示す組立図である。NANDメモリ2は、2つの半導体チップ51,52を含む。半導体チップ51は、ECC回路12と制御回路13とを搭載した半導体装置である。半導体チップ52は、メモリセルアレイ部11Aを搭載した半導体装置である。半導体チップ51の上側に半導体チップ52が積層されて接着剤で固定されている。半導体チップ51と半導体チップ52は、ボールバンプ、ワイヤボンディングなどにより電気的に接続される。
【0153】
なお、半導体チップ52は、複数あってもよい。その場合、複数の半導体チップ52が、半導体チップ51の上側において積層されて、互いに接着剤で固定されている。
【0154】
メモリセルアレイ部11Aは、16個のプレーンPB(PB0、PB1、・・・、PB15)を含む。各プレーンPBは、複数のメモリセルトランジスタ(図示せず)を含むブロック(図示せず) を単位として上述の各種動作を行う。具体的には、例えば、各プレーンPBは、或るブロック内の一部のメモリセルトランジスタに対してデータの書き込み動作、及びデータの読み出し動作を行い、或るブロック内の全てのメモリセルトランジスタに対して、データの消去動作を行う。
【0155】
図14に示すように、プレーンPB0は、メモリセルアレイ61、ロウデコーダ62、及びセンスアンプモジュール63を含む。プレーンPB0~PB15は、特に記載する場合を除き、同等の構成を有する。
【0156】
メモリセルアレイ61は、複数のブロックBLK(BLK0、BLK1、・・・)を備えている。各ブロックBLKは、例えば、互いに識別可能なブロックアドレスによって区別される。なお、プレーンPB0以外のプレーンPBについても、プレーンPB0と同じブロックアドレスに対応するブロックBLKが含まれる。異なるプレーンPB間で同じブロックアドレスが割当てられたブロックBLK 同士は、互いに識別可能なプレーンアドレスによって区別される。ブロックBLKは、ワード線及びビット線に関連付けられた複数の不揮発性メモリセルトランジスタ(図示せず)を含む。ブロックBLKは、例えばデータの消去単位となり、同一のブロックBLK内のデータは、一括して消去される。各ブロックBLKは、複数のストリングユニットSU(SU0、SU1、・・・)を備えている。各ストリングユニットSUは、複数のNANDストリングNSを備えている。なお、メモリセルアレイ61内のブロック数、1ブロックBLK内のストリングユニット数、1ストリングユニットSU内のNANDストリング数は、任意の数に設定出来る。
【0157】
ロウデコーダ62は、図示しないレジスタに保持されたアドレス中のブロックアドレスに基づいてブロックBLK等を選択する。そして、選択されたブロックBLKには、ロウデコーダ62からの各種電圧が転送される。
【0158】
センスアンプモジュール63は、データの読み出し時には、メモリセルトランジスタの閾値電圧をセンスすることでデータを読み出す。センスアンプモジュール63は、データの書き込み時には、ビット線を介して書き込まれる書き込みデータをメモリセルトランジスタに転送する。また、センスアンプモジュール63は、図示しないレジスタからアドレス中のカラムアドレスを受取り、当該カラムアドレスに基づくカラムのデータを出力する。
【0159】
ここで、前提条件として、各プレーンから4KBのデータを読み出し、16プレーンから64KBのデータが読み出される場合であって、NANDメモリ2A内のデータの読み出し時間(tR)が7.5μsであり、7.5μs当たり、5.8KBのデータ出力が可能であるとしたとき、16プレーンから64Bデータを読み出せるかを出願人が検討した結果について説明する。
【0160】
図16は、16プレ-ンの各プレーンに1個のランダムリード対象データ(64B)が存在する場合を示す図である。すなわち、図16に示すように、各プレーン中に、読み出しデータを含む64Bデータが1つ含まれている。
【0161】
図17は、16プレ-ンの各プレーンに2個のランダムリード対象データ(64B)が存在する場合を示す図である。図17に示すように、各プレーン中に、読み出しデータを含む64Bデータが2つ含まれている。
【0162】
図18は、16プレ-ンの各プレーンに4個のランダムリード対象データ(64B)が存在する場合を示す図である。図18に示すように、各プレーン中に、読み出しデータを含む64Bデータが4つ含まれている。
【0163】
上記のデータ出力が可能であることを前提とすると、図18の場合、コードワード長が64Bであれば、90フレームが読み出し可能であるので、各プレーンから4個の64Bデータを読み出し可能となる。なお、図16の場合、コードワード長が256Bでも、23フレームが読み出し可能であり、図17の場合は、コードワード長が128Bでも、32フレームが読み出し可能である。
【0164】
よって、上述した16プレーンを含むNANDメモリ2は、コードワード長が64B~256Bであるときにも、図15及び図16に示すようなメモリシステムに適用可能である。
【0165】
また、メモリシステムは、メモリコントローラ3と、複数のNANDメモリ2を含む構成を有していてもよい。
【0166】
図19は、メモリコントローラ3と複数のNANDメモリ2とを含むメモリシステムの構成を示す図である。
【0167】
複数のNANDメモリ2は、2本のバスによりメモリコントローラ3と接続されている。各NANDメモリ2は、ECC回路22を有する。各NANDメモリ2は、メモリコントローラ3からのランダムリードコマンドに受信すると、上述したハードビット復号を行って、64B毎のデータをメモリコントローラ3へ出力することができる。
【0168】
図19において点線で示すように、NANDメモリ2において水平方向HB復号及び垂直方向HB復号に失敗すると、メモリコントローラ3のECC回路22において、ソフトビット復号が行われる。
【0169】
図19のような構成のメモリシステムにおいても、コードワード長を64Bとして、かつ16個のプレーンPB又は16個のNANDメモリ2の全てからデータを読み出す場合、1秒間に読み出しできる回数(IOPS(Input Output Per Second)は、16倍となる。よって、上述した実施形態の構成は、図19に示すようなメモリシステムにも、適用可能である。
【0170】
また、上述した実施形態では、NANDメモリ2においては、水平方向及び垂直方向の硬判定復号の成功と失敗が判定されている。よって、制御回路13は、その判定結果を保持しているので、メモリコントローラ3から訂正エラーステータスの問い合わせコマンドを受けると、データ入出力線DQ0~DQ7の一部を用いて、訂正ステータスをメモリコントローラ3へ出力することができる。すなわち、制御回路13は、水平方向HB復号及び垂直方向HB復号の成功及び失敗の情報を出力可能としてもよい。
【0171】
例えば、データの読み出しコマンドが実行されているときに不使用のデータ入出力線がある。制御回路13は、訂正ステータス情報を、そのような不使用のデータ入出力線を用いて、メモリコントローラ3へ出力することができる。例えば、制御回路13は、水平ECC訂正が成功したときは、データ入出力線DQ0の出力をLowとし、水平ECC訂正が失敗したときは、データ入出力線DQ0の出力をHighとする。制御回路13は、垂直ECC訂正が成功したときは、データ入出力線DQ1の出力をLowとし、垂直ECC訂正が失敗したときは、データ入出力線DQ1の出力をHighとする。
【0172】
さらに、NANDメモリ2において、CRCが実行されるようにした場合、制御回路13は、CRC訂正が成功したときは、データ入出力線DQ2の出力をLowとし、CRC訂正が失敗したときは、データ入出力線DQ2の出力をHighとする。
【0173】
よって、メモリコントローラ3は、NANDメモリ2におけるECC訂正の状態(成功あるいは失敗)の情報を得ることができる。
【0174】
なお、上述した実施形態では、BERモニタ16は、ランダムリードを行うときに、ヒストグラムを作成しているが、いわゆるリードパトロールなどの時に、ヒストグラムを生成するようにしてもよい。
【0175】
以上のように、上述した実施形態によれば、データの符号化率を小さくすることなく、ランダムリードを可能にするメモリシステム、半導体記憶装置及びデータ読み出し方法を提供することができる。
【0176】
上述した実施形態のメモリシステム1の訂正能力は、積符号を用いないでメモリコントローラ3においてECC訂正を行うメモリシステムの訂正能力よりも高い。
【0177】
例えば、ECCフレーム長が64Bで、符号化率が0.89であり、64Bのデータ毎にBCH符号化(4ビット以下訂正)をメモリコントローラ3において行うメモリシステムAを仮定した場合、出願人の行ったシミュレーションによれば、メモリシステムAの訂正能力は、4KB換算で0.04%であった。
【0178】
これに対して、上述した実施形態のような、ECCフレーム長が4KBであり、コードワードCW長が48Bの積符号フレームで、48Bのデータ毎にBCH符号化(4ビット以下訂正)を施す符号化をしたメモリシステムBの場合、出願人の行ったシミュレーションによれば、メモリシステムBの訂正能力は、4KB換算で0.22%であった。本実施形態に係わるメモリシステムBの訂正能力は、メモリシステムAの訂正能力の5.5倍である。
【0179】
また、出願人の行ったシミュレーションによれば、本実施形態に係わるメモリシステムBの実行スループットは、上記のメモリシステムAの実行スループットの24倍であった。
【0180】
また、出願人の行ったシミュレーションによれば、本実施形態に係わるメモリシステムBの電流効率は、0.73mA/1000MiBPSで、上記のメモリシステムAの電流効率は、7.5mA/1000MiBPSであった。本実施形態に係わるメモリシステムBの電流効率は、メモリシステムAの電流効率の1/10である。
【0181】
また、出願人の行ったシミュレーションによれば、本実施形態に係わるメモリシステムBの回路規模(復号部分)は、40KUnit(1Unitは、2入力NAND相当)で、上記のメモリシステムAの回路規模(復号部分)は、63KUであった。本実施形態に係わるメモリシステムBの回路規模(復号部分)は、メモリシステムAの回路規模(復号部分)の0.63である。
(変形例1)
上述した実施形態は、NANDメモリ2を用いたランダムリード可能なメモリシステムを開示しているが、メモリシステムが、従来からのページデータ毎あるいはサブページデータ毎のデータの読み出しを行う動作モードと、上述した実施形態のようなランダムリードを行う動作モードとを切り替え可能にできるようにしてもよい。
【0182】
図20は、本変形例1に関わるメモリシステムの構成を示すブロック図である。図20において、図1と同じ構成要素については、同じ符号を付して説明は省略し、図1と異なる構成に付いてのみ説明する。
【0183】
メモリコントローラ3のECC回路は、符号化器22bを有する。メモリシステム1Aには、外部から動作モード信号MODEが入力可能となっている。動作モード信号MODEは、半導体装置上のボンディング切り替えにより、HIGH又はLOWになるように設定されて、NANDメモリ2とメモリコントローラ3に与えられる。
【0184】
なお、動作モード信号MODEは、外部からの設定信号として、メモリシステム1Aに与えられるものでもよい。
【0185】
動作モード信号MODEがHIGHのとき、メモリシステム1Aは、ECC回路22の符号化器22bは使用されずに、上述した実施形態と同様の動作を実行して、ランダムリードが可能なシステムとして動作する。
【0186】
動作モード信号MODEがLOWのとき、メモリシステム1Aでは、ページデータの符号化にECC回路22の符号化器22bが使用され、復号器22aも符号化器22bにより符号化されたページデータを復号する。動作モード信号MODEがLOWのとき、さらに、NANDメモリ2のECC回路12は使用されない。
【0187】
動作モード信号MODEがLOWのとき、メモリシステム1Aは、通常のNANDメモリとしてページ単位でのデータの書き込みと読み出しを行う。
【0188】
動作モード信号MODEがHIGHのとき、メモリシステム1Aは、メモリコントローラ3の符号化器22bを使用しないで、ページ単位でのデータの書き込みを行うが、データの読み出しはランダムに行う。
【0189】
なお、メモリセルアレイ11が多値セルメモリ、例えば4bit/CellのQLC(Quad Level Cell)メモリであるとき、QLCメモリではビット誤り率(BER)が高くなるため、TLC(Triple Level Cell)として使用して、データの書き込み速度は遅くなるが、ビット誤り率(BER)は低くして、ランダムリード性能を高めるようにしてもよい。
【0190】
すなわち、多値の不揮発性メモリを用いてランダムリード可能なメモリシステムを構築するとき、いわゆる高信頼性書き込みである低速書き込みにより不揮発性メモリにデータを書き込み、ランダムリード性能を高めることができる。
【0191】
上述した実施形態では、不揮発性メモリであるNANDメモリ2は、SLC(Single Level Cell)を用いると、ビット誤り率(BER)を低くすることができるが、TLCメモリあるいはQLCメモリを使用した方が、メモリシステムのコストメリットを大きくすることができる。
(変形例2)
上述した実施形態では、1つのブロックBLK中の1つのワード線WLの1つのページデータPd中の対象データTDがランダムリードされるが、本変形例では、複数ブロックBLK内の複数の対象データTD、あるいは1つのブロックBLK内の複数のワード線WL中の複数の対象データTDがランダムリードされる。
【0192】
例えば、ブロックBLK毎にページバッファを用いて、BERモニタ16が各ページバッファについて訂正ビット数データからヒストグラムを作成することにより、複数ブロックBLK内の複数の対象データTDを同時に読み出すことができる。
【0193】
また、1つのブロックBLK内の複数の対象データTDを含む複数のワード線WLを順番に動作させて、各ワード線WLから対象データTDを含むコードワードCWを復号することにより、1つのブロックBLK内の複数の対象データTDを一緒に読み出すことができる。
【0194】
図21は、複数のワード線WL中の複数の対象データTDがランダムリードされる場合を説明するための図である。黒く示した部分が、対象データTDを含むコードワードCWを示している。
【0195】
図21の場合、対象データTDを含む4本のワード線WLのデータが同時に読み出され、点線で示す4つのページバッファを含むページバッファ部11Aに格納される。BERモニタ16は、各ページデータPd中のBERモニタ領域PBの訂正ビット数のヒストグラムを生成し、ページ毎の対象データTDの復号処理が実行される。
【0196】
図22は、BERモニタ16における4本のワード線WLについてのヒストグラム計算のタイミングを説明するためのグラフである。1ページデータ(約16KB)中の12.5%(2KB)のデータを読み出す場合のタイミングを示す図である。図22は、ヒストグラム計算とランダムリードを4本のワード線WLについて順番に行うケース1と、ヒストグラム計算とランダムリードをワード線WL毎に並列に行うケース2と、メモリコントローラ3において復号を行って2KBのデータを読み出すケース3のタイミングチャートである。
【0197】
ケース1は、ワード線WL毎にページデータPd中のBERモニタ領域PBの複数のコードワードCW(24B)を用いて訂正ビット数のデータのヒストグラム計算を行ってから2KBのデータの読み出しを行っている。所定の条件下での出願人のシミュレーション計算では、2KBのデータの読み出しに、3620ns(ナノ秒)掛っている。
【0198】
ケース2は、ワード線WL毎に、ページデータPd中のBERモニタ領域PBの複数のコードワードCW(24B)を用いた訂正ビット数のデータのヒストグラム計算と、2KBのデータの読み出しを並列に行っている。所定の条件下での出願人のシミュレーション計算では、2KBのデータの読み出しに、2720ns(ナノ秒)掛っている。
【0199】
ケース3では、所定の条件下での出願人のシミュレーション計算では、4本のワード線WLについて、2KBのデータの読み出しに、5160ns(ナノ秒)掛っている。
【0200】
よって、本変形例2によっても、実施形態と同等の効果を得ることができる。
【0201】
本発明の実施形態及びいくつかの変形例を説明したが、これらの実施形態及び各変形例は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0202】
1、1A メモリシステム、2 NAND型フラッシュメモリ、3 メモリコントローラ、4 ホスト、11 メモリセルアレイ、11A ページバッファ部、11a ページバッファ、12 誤り検出訂正回路、12a ECC入力回路、12b ECC出力回路、13 制御回路、14 符号化器、15 復号器、16 モニタ、17 共通バス、18 ページバッファロード回路、19 ページバッファストア回路、20 入出力インターフェース、21 プロセッサ、22 誤り検出訂正回路、22a 復号器、22b 符号化器、23 データバッファ、24 ホストインターフェース、25 メモリインターフェース、26 内部バス。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22