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

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

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

<>
  • 特許-メモリシステム及び制御方法 図1
  • 特許-メモリシステム及び制御方法 図2
  • 特許-メモリシステム及び制御方法 図3
  • 特許-メモリシステム及び制御方法 図4
  • 特許-メモリシステム及び制御方法 図5
  • 特許-メモリシステム及び制御方法 図6
  • 特許-メモリシステム及び制御方法 図7
  • 特許-メモリシステム及び制御方法 図8
  • 特許-メモリシステム及び制御方法 図9
  • 特許-メモリシステム及び制御方法 図10
  • 特許-メモリシステム及び制御方法 図11
  • 特許-メモリシステム及び制御方法 図12
  • 特許-メモリシステム及び制御方法 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-22
(45)【発行日】2024-04-01
(54)【発明の名称】メモリシステム及び制御方法
(51)【国際特許分類】
   G06F 12/06 20060101AFI20240325BHJP
   G06F 11/10 20060101ALI20240325BHJP
   G06F 12/00 20060101ALI20240325BHJP
【FI】
G06F12/06 540
G06F11/10 662
G06F12/00 597U
G06F12/06 550A
【請求項の数】 8
(21)【出願番号】P 2019191644
(22)【出願日】2019-10-21
(65)【公開番号】P2021068072
(43)【公開日】2021-04-30
【審査請求日】2022-09-13
【前置審査】
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】100176599
【弁理士】
【氏名又は名称】高橋 拓也
(74)【代理人】
【識別番号】100205095
【弁理士】
【氏名又は名称】小林 啓一
(74)【代理人】
【識別番号】100208775
【弁理士】
【氏名又は名称】栗田 雅章
(72)【発明者】
【氏名】近藤 尊
【審査官】北村 学
(56)【参考文献】
【文献】特表2010-501915(JP,A)
【文献】特開平04-052940(JP,A)
【文献】特開平04-247541(JP,A)
【文献】特開平07-311708(JP,A)
【文献】特開2001-325217(JP,A)
【文献】特開2008-204222(JP,A)
【文献】特開2017-054274(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/00 - 12/06
G06F 11/08 - 11/10
G11C 11/56
G11C 16/00 - 17/18
(57)【特許請求の範囲】
【請求項1】
それぞれがメモリセルを含む複数の並列動作要素を有する不揮発性メモリと、
前記複数の並列動作要素を制御するメモリコントローラと、を備え、
前記メモリコントローラは、
前記不揮発性メモリからデータをリードする場合、
前記複数の並列動作要素に含まれる前記メモリセルが保持するデータをセンスするセンス動作を順次、前記複数の並列動作要素に指示し、
前記センス動作のリード条件に応じた動作時間の満了を、前記センス動作を指示した並列動作要素ごとに測定し、
前記複数の並列動作要素のいずれかの前記センス動作の前記動作時間が満了していた場合、前記動作時間が満了した並列動作要素のステータス確認をすることなく、前記動作時間が満了した並列動作要素に前記データの転送動作を指示
前記メモリコントローラは、前記センス動作を指示した並列動作要素の前記動作時間の満了を測定するタイマを有し、
前記リード条件に基づいて前記動作時間を前記タイマに設定する、
メモリシステム。
【請求項2】
前記複数の並列動作要素は、1つのチャネルを介して前記メモリコントローラに接続されている、
請求項1に記載のメモリシステム。
【請求項3】
前記メモリコントローラは、
前記複数の並列動作要素に前記センス動作を指示するリードコマンドセットを発行し、前記リードコマンドセットの前記リード条件に基づいて前記動作時間を前記タイマに設定する、
請求項に記載のメモリシステム。
【請求項4】
前記メモリコントローラは、前記複数の並列動作要素のそれぞれについて前記リード条件ごとの動作時間を管理し、前記リードコマンドセットが発行された前記複数の並列動作要素の前記リード条件に対応する動作時間のうち最長の動作時間を前記タイマに設定する、請求項に記載のメモリシステム。
【請求項5】
前記リード条件は、ライト方式の種類およびページ種別の少なくともいずれかを含む、請求項乃至請求項のいずれか1項に記載のメモリシステム。
【請求項6】
それぞれがメモリセルを含む複数の並列動作要素を有する不揮発性メモリと、
前記複数の並列動作要素を制御するメモリコントローラと、を備え、
前記メモリコントローラは、
前記不揮発性メモリからデータをリードする場合、
前記複数の並列動作要素に含まれる前記メモリセルが保持するデータをセンスするセンス動作を順次、前記複数の並列動作要素に指示し、
前記センス動作のリード条件に応じた動作時間の満了を、前記センス動作を指示した並列動作要素ごとに測定し、
前記複数の並列動作要素のいずれかの前記センス動作の前記動作時間が満了していた場合、前記動作時間が満了した並列動作要素のステータス確認をすることなく、前記動作時間が満了した並列動作要素に前記データの転送動作を指示し、
記転送動作により転送されたデータに対して誤り訂正処理を行い、
前記誤り訂正処理において訂正不能となるエラーが生じた場合には、前記複数の並列動作要素のうち前記データの転送元の並列動作要素のステータス確認を行い、前記データの転送元の並列動作要素のステータスがビジーであった場合に、前記データの転送元の並列動作要素に対し、リセットコマンドを発行する
モリシステム。
【請求項7】
前記並列動作要素は、メモリチップである
請求項1乃至請求項のいずれか1項に記載のメモリシステム。
【請求項8】
それぞれがメモリセルを含む複数の並列動作要素を有する不揮発性メモリにおいて、前記複数の並列動作要素を制御する制御方法であって、
前記不揮発性メモリからデータをリードする場合、
前記複数の並列動作要素に含まれる前記メモリセルが保持するデータをセンスするセンス動作を順次、前記複数の並列動作要素に指示し、
前記センス動作のリード条件に応じた動作時間を、前記センス動作を指示した並列動作要素の前記動作時間の満了を測定するタイマに、前記リード条件に基づいて設定し、
前記動作時間の満了を、前記センス動作を指示した並列動作要素ごとに前記タイマにより測定し、
前記複数の並列動作要素のいずれかの前記センス動作の前記動作時間が満了していた場合、前記動作時間が満了した並列動作要素のステータス確認をすることなく、前記動作時間が満了した並列動作要素に前記データの転送動作を指示する、
制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステム及び制御方法に関する。
【背景技術】
【0002】
メモリシステムは、メモリコントローラと、メモリコントローラに接続されるメモリとを備える。メモリは例えば複数の並列動作要素を有する。メモリコントローラは、例えば複数のチャネルを有し、1チャネルあたり複数の並列動作要素を制御する。
【0003】
このような構成において、メモリコントローラがステータスポーリングを行って、メモリのステータスを確認する場合がある。しかしながら、ステータスポーリングに要する時間がリード動作の遅延の一因となっている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2014-041468号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の実施形態は、ステータスポーリングによるリード動作の遅延を抑制することが可能なメモリシステム及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【0006】
実施形態のメモリシステムは、それぞれがメモリセルを含む複数の並列動作要素を有する不揮発性メモリと、前記複数の並列動作要素を制御するメモリコントローラと、を備え、前記メモリコントローラは、前記不揮発性メモリからデータをリードする場合、前記複数の並列動作要素に含まれる前記メモリセルが保持するデータをセンスするセンス動作を順次、前記複数の並列動作要素に指示し、前記センス動作のリード条件に応じた動作時間の満了を、前記センス動作を指示した並列動作要素ごとに測定し、前記複数の並列動作要素のいずれかの前記センス動作の前記動作時間が満了していた場合、前記動作時間が満了した並列動作要素のステータス確認をすることなく、前記動作時間が満了した並列動作要素に前記データの転送動作を指示し、前記メモリコントローラは、前記センス動作を指示した並列動作要素の前記動作時間の満了を測定するタイマを有し、前記リード条件に基づいて前記動作時間を前記タイマに設定する
【図面の簡単な説明】
【0007】
図1図1は、実施形態にかかるメモリシステムの構成の一例を示す図である。
図2図2は、実施形態にかかるメモリチップの構成の一例を示す図である。
図3図3は、実施形態にかかるメモリセルアレイの構成の一例を示す図である。
図4図4は、実施形態にかかるメモリセルアレイの複数のメモリセルトランジスタの閾値電圧分布およびリード電圧を示す図である。
図5図5は、実施形態にかかるメモリセルアレイの複数のメモリセルトランジスタの閾値電圧分布およびリード電圧を示す図である。
図6図6は、実施形態にかかるメモリセルアレイの複数のメモリセルトランジスタの閾値電圧分布およびリード電圧を示す図である。
図7図7は、実施形態にかかるメモリシステムにおけるリード動作の概要を示す図である。
図8図8は、実施形態にかかるメモリシステムにおけるリード動作のコマンドセットを示す図である。
図9図9は、実施形態にかかるメモリシステムにおけるリード動作の詳細を示す図である。
図10図10は、実施形態にかかるメモリシステムにおけるリード動作に関する処理の手順の一例を示すフロー図である。
図11図11は、比較例にかかるメモリシステムにおけるリード動作の詳細を示す図である。
図12図12は、実施形態の変形例にかかるリード動作においてビジースタックが発生した場合を示す図である。
図13図13は、実施形態の変形例にかかるリード動作においてビジースタックが発生した場合の処理の手順の一例を示すフロー図である。
【発明を実施するための形態】
【0008】
以下に、実施形態につき図面を参照しつつ詳細に説明する。なお、下記の実施形態により、本発明が限定されるものではない。また、下記実施形態における構成要素には、当業者が容易に想定できるものあるいは実質的に同一のものが含まれる。
【0009】
(メモリシステムの構成例)
図1は、実施形態にかかるメモリシステム1の構成の一例を示す図である。図1に示すように、メモリシステム1は、メモリコントローラ10、NAND型フラッシュメモリ20(以下、「NANDメモリ20」と記載)、及びDRAM(Dynamic Random Access Memory)30を備える。
【0010】
不揮発性メモリとしてのNANDメモリ20は複数のNANDパッケージ21を有する。個々のNANDパッケージ21は、それぞれ複数のメモリチップ210(0)~210(2)を備える。並列動作要素としてのメモリチップ210(0)~210(2)は、データを不揮発に記憶する不揮発性メモリである。複数のメモリチップ210(0)~210(2)は、それぞれ独立して動作し、複数のメモリチップ210(0)~210(2)間での並列動作が可能である。
【0011】
メモリシステム1において、NANDメモリ20が有するNANDパッケージ21の個数は任意である。また、NANDパッケージ21が有するメモリチップ210(0)~210(2)の個数は任意である。
【0012】
以下においては、NANDメモリ20を例に挙げて説明するが、不揮発性メモリはこれに限らず、例えばMRAM(Magnetoresistive Random Access Memory),PCRAM(Phase Change Random Access Memory),ReRAM(Resistive Random Access Memory)等の他のメモリであってもよい。
【0013】
DRAM30は、データを一時的に記憶することが可能な揮発性メモリである。ただし、メモリシステム1が備える揮発性メモリはDRAMに限定されない。メモリシステム1は、例えば揮発性メモリとしてSRAM(Static Random Access Memory)等を備えていてもよい。
【0014】
メモリコントローラ10は、例えばSoC(System on a Chip)、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)等のIC(Integrated Circuit)であり、NANDメモリ20及びDRAM30に各種動作を命令することができる。メモリコントローラ10は、外部のホスト2からの要求(リクエスト)に基づいた動作と、ホスト2からの要求に依らない動作とを実行する。メモリコントローラ10の各機能は、プログラムを実行するCPU(Central Processing Unit)により実現されてもよく、専用のハードウェアで実現されてもよい。
【0015】
メモリコントローラ10は、CPU11、ホストインタフェース(I/F)コントローラ12、RAM13、複数のNANDコントローラ14、及びDRAM I/Fコントローラ15を備える。
【0016】
CPU11は、メモリコントローラ10全体の動作を制御する。CPU11は、例えばホスト2から受信したリード要求に応答してリードコマンドを発行して、発行したリードコマンドをNANDコントローラ14に送信する。
【0017】
RAM13は、CPU11の作業領域として使用される記憶領域である。RAM13には、例えばNANDメモリ20を管理するためのパラメータや、各種の管理テーブル等が記憶される。RAM13は、例えばホスト2から受信した要求の待ち行列(コマンドキュー)を記憶する。また、RAM13は、NANDメモリ20に格納されたデータに関連付けられた論理アドレスをNANDメモリ20の物理アドレスに変換するためのアドレス変換テーブルを記憶する。このアドレス変換テーブルは、例えばNANDメモリ20内に格納され、メモリシステム1の起動時に読み出されてRAM13に記憶される。RAM13としては、SRAM等の揮発性メモリが用いられる。なお、アドレス変換テーブルのデータサイズが大きい場合には、アドレス変換テーブルは、RAM13よりも容量の大きいDRAM30に記憶されることがある。
【0018】
ホストI/Fコントローラ12は、ホスト2に接続され、メモリシステム1とホスト2との間の通信を司る。ホストI/Fコントローラ12は、例えばメモリシステム1とホスト2との間で、データ、要求、及びアドレスの転送を制御する。ホストI/Fコントローラ12は、例えばSATA(Serial Advanced Technology Attachment)、SAS(Serial Attached SCSI)、PCIe(PCI Express)、NVMe(Non-Volatile Memory Express)(登録商標)等の通信インタフェース規格をサポートする。つまり、メモリシステム1に接続されるホスト2としては、例えばSATA、SAS、PCIe、NVMe等のインタフェースを含むコンピュータ等が挙げられる。
【0019】
DRAM I/Fコントローラ15は、DRMA30に接続され、メモリコントローラ10とDRAM30との間の通信を司る。DRAM I/Fコントローラ15は、DRAMインタフェース規格に基づいて構成されている。なお、DRAM I/Fコントローラ15の構成はこれに限定されず、メモリシステム1が備える揮発性メモリの種類に基づいて変更することができる。
【0020】
複数のNANDコントローラ14は、それぞれ異なるチャネルCh.0~Ch.3を介して、それぞれ異なるNANDパッケージ21に接続される。各チャネルCh.0~Ch.3は、入出力信号線および制御信号線を含む配線群によって構成される。入出力信号線は、例えばデータ、アドレス、及びコマンドを送受信するための信号線である。制御信号線は、例えばNANDメモリ20を制御する制御信号を送受信するための信号線である。
【0021】
複数のNANDコントローラ14は、それぞれ異なるチャネルCh.0~Ch.3を制御する。またこれにより、複数のNANDコントローラ14は、それぞれ対応するNANDパッケージ21内のそれぞれのメモリチップ210(0)~210(2)に対し、CPU11から指示されたコマンドの制御を実行する。
【0022】
個々のNANDコントローラ14は、タイマ140~142、レジスタ143、ECC部144、及びNAND I/F145を備える。
【0023】
タイマ140~142は、メモリシステム1の各種動作に関連する動作時間を測定することができる。タイマ140~142には、例えば並列動作する複数のメモリチップ210(0)~210(2)の動作時間に関する情報をセットされ、タイマ140~142は、これを測定することができる。
【0024】
タイマ140~142の個数は任意であるが、例えばメモリコントローラ10が1回のインタリーブ動作で発行可能なコマンド数と同数以上とすることができる。インタリーブ動作は、並列処理が可能なメモリチップ210(0)~210(2)等にそれぞれコマンドを発行して並列動作をさせることである。メモリコントローラ10が1回のインタリーブ動作で発行可能なコマンド数は、DRAM30の容量等、メモリコントローラ10が有するリソースによる。以下、メモリコントローラ10が1回のインタリーブ動作で発行可能なコマンド数は、3であるとする。
【0025】
ただし、タイマ140~142の個数を、メモリチップ210(0)~210(2)等の並列動作要素の数と同数以上としてもよい。
【0026】
レジスタ143は、メモリシステム1の各種動作に関連する動作時間を記憶する。レジスタ143は、例えば並列動作する複数のメモリチップ210(0)~210(2)の動作時間に関する情報を記憶する。
【0027】
ECC部144は、データに対する誤り検出及び誤り訂正のために、データの符号化および復号を行う。具体的には、ECC部144は、NANDメモリ20に書き込むデータを符号化する。また、ECC部144は、NANDメモリ20から読み出されたデータを復号する。ECC部144は、復号によって、読み出されたデータに対する誤り検出及び誤り訂正を実行する。ECC部144は、誤り訂正に失敗した場合には、誤り訂正の失敗をCPU11に通知する。ECC部144による符号化および復号のアルゴリズムには、RS(リード・ソロモン)符号やBCH(Bose-Chaudhuri-Hocquenghem)符号や低密度パリティ検査(LDPC)符号等を用いた任意のアルゴリズムを適用することが可能である。
【0028】
NAND I/F145は、NANDコントローラ14とNANDパッケージ21とを接続し、NANDコントローラ14とNANDパッケージ21との間の通信を司る。NAND I/F145は、NANDインタフェース規格に基づいて構成されている。
【0029】
(メモリチップの構成例)
図2は、実施形態にかかるメモリチップ210の構成の一例を示す図である。図2に示すように、メモリチップ210は、メモリセルアレイ211、センスアンプモジュール212、ロウデコーダモジュール213、入出力回路214、レジスタ215、ロジックコントローラ216、シーケンサ217、レディ/ビジー生成回路218、及び電圧生成回路219を備える。
【0030】
メモリセルアレイ211は、ブロックBLK0~BLKn(nは0以上の整数)を含んでいる。ブロックBLKは、ビット線およびワード線に関連付けられた複数のメモリセル(メモリセルトランジスタ)の集合であり、例えばデータの消去単位となる。
【0031】
ブロックBLK0~BLKnには、ノーマルブロック及びロムヒューズブロック等がある。ノーマルブロックは、メモリコントローラ10からの通常のアクセスが許可され、データのライト及びリードが可能である。ロムヒューズブロックは、メモリコントローラ10からの通常のアクセスが禁止され、メモリチップ210自身のための管理情報が記憶される。ロムヒューズに記憶される管理情報は、例えば不良ブロック情報や不良カラム情報の他、メモリチップ210の動作時間に関する情報等を含む。
【0032】
レジスタ215は、ステータスレジスタ215A、アドレスレジスタ215B、及びコマンドレジスタ215Cを含む。ステータスレジスタ215Aは、例えばシーケンサ217のステータス情報STSを記憶し、このステータス情報STSをシーケンサ217の指示に基づいて入出力回路214に転送する。ステータスレジスタ215Aは、上述のロムヒューズブロックから取得したメモリチップ210の動作時間に関する情報をシーケンサ217の指示に基づいて入出力回路214に転送してもよい。アドレスレジスタ215Bは、入出力回路214から転送されたアドレス情報ADDを記憶する。アドレス情報ADDには、例えばカラムアドレス、ロウアドレス、及びブロックアドレスが含まれる。カラムアドレスはセンスアンプモジュール212で使用され、ロウアドレス及びブロックアドレスはロウデコーダモジュール213で使用される。コマンドレジスタ215Cは、入出力回路214から転送されたコマンドCMDを記憶する。
【0033】
センスアンプモジュール212は、センスアンプ212A及びページバッファ212Bを備える。センスアンプ212Aは、カラムアドレスに応じたビット線が選択されることにより、所定のメモリセルアレイ211からデータDATを読み出す。ページバッファ212Bは、メモリセルアレイ211から読み出されたリードデータDAT、または、メモリコントローラ10から入出力回路214を介して受け取ったライトデータDATを一時的に記憶するデータラッチを複数備える。
【0034】
ロウデコーダモジュール213は、アドレスレジスタ215Bに記憶されたブロックアドレスに基づいて、各種動作を実行する対象のブロックBLKを選択する。また、ロウデコーダモジュール213は、アドレスレジスタ215Bに記憶されたロウアドレスに基づいて、各種動作を実行する対象のワード線を選択する。また、ロウデコーダモジュール213は、電圧生成回路219から供給された電圧を、選択したブロックBLKに転送する。
【0035】
入出力回路214は、例えば8ビット幅の入出力バスI/O(I/O1~I/O8)を介して入出力信号をメモリコントローラ10との間で送受信する。入出力回路214は、例えばメモリコントローラ10から受信した入出力信号に含まれるライトデータDATをページバッファ212Bに転送し、また、ページバッファ212Bから転送されたリードデータDATを入出力信号としてメモリコントローラ10に送信する。
【0036】
ロジックコントローラ216は、メモリコントローラ10から受信した各種制御信号に基づいて、入出力回路214及びシーケンサ217を制御する。各種制御信号としては、例えばチップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、及びライトプロテクト信号WPnが使用される。
【0037】
チップイネーブル信号CEnは、メモリチップ210をイネーブルにするための信号である。コマンドラッチイネーブル信号CLEは、入出力バスI/Oを介してメモリチップ210に入力される信号がコマンドCMDであることを入出力回路214に通知する信号である。アドレスラッチイネーブル信号ALEは、入出力バスI/Oを介してメモリチップ210に入力される信号がアドレスADDであることを入出力回路214に通知する信号である。ライトイネーブル信号WEnは、入出力信号の入力を入出力回路214に対して命令する信号である。リードイネーブル信号REnは、入出力信号の出力を入出力回路214に対して命令する信号である。ライトプロテクト信号WPnは、例えば電源のオンオフ時にメモリチップ210を保護状態にするための信号である。
【0038】
シーケンサ217は、コマンドレジスタ215Cに記憶されたコマンドCMDに基づいて、メモリチップ210全体の動作を制御する。シーケンサ217は、例えばセンスアンプモジュール212、ロウデコーダモジュール213、及び電圧生成回路219を制御して、ライト動作やリード動作等の各種動作を実行する。
【0039】
レディ/ビジー生成回路218は、メモリチップ210の動作状態に基づいてレディ/ビジー信号RBnを生成する。レディ/ビジー信号RBnは、メモリチップ210がメモリコントローラ10からのコマンドを受け付け可能なレディ状態であるか、コマンドを受け付けられないビジー状態であるかを、メモリコントローラ10に通知する信号である。
【0040】
ただし、実施形態のメモリシステム1において、メモリコントローラ10はレディ/ビジー信号RBnを受信しない。これにより、複数チャネルCh.0~Ch.3を備えるメモリコントローラ10において、ピン数を削減することができる。メモリコントローラ10においては、後述するように、レディ/ビジー信号RBnに依らず、ステータスリードコマンド等のステータスレジスタ215Aのデータを読み出すコマンドによって、メモリチップ210がレディ状態であるかビジー状態であるか等のメモリチップ210のステータスを取得する。なお、ステータスレジスタ215Aのデータを読み出すコマンドは、メモリチップ210がビジー状態であっても受け付けられる。
【0041】
電圧生成回路219は、シーケンサ217の制御に基づいて所望の電圧を生成し、生成した電圧をメモリセルアレイ211、センスアンプモジュール212、及びロウデコーダモジュール213等に供給する。電圧生成回路219は、例えばアドレスレジスタ215Bに記憶されたアドレスに基づいて、後述する選択ワード線および非選択ワード線に対応する信号線に対してそれぞれ所望の電圧を印加する。
【0042】
(メモリセルアレイの構成例)
図3は、実施形態にかかるメモリセルアレイ211の構成の一例を示す図である。図3は、メモリセルアレイ211内の1つのブロックBLKについての詳細な回路構成を示す。図3に示すように、ブロックBLKは例えば複数のストリングユニットSU(SU0~SU3)を有する。図3の例では、ブロックBLKは4つのストリングユニットSU0~SU3を含むが、その数は任意である。
【0043】
個々のストリングユニットSUは、ビット線BL0~BLm(mは0以上の整数)にそれぞれ関連付けられた複数のNANDストリングNSを含む。各々のNANDストリングNSは、例えばメモリセルトランジスタMT0~MT7及び選択トランジスタST1,ST2を含む。1つのNANDストリングNSに含まれるメモリセルトランジスタMT及び選択トランジスタSTの数は任意である。
【0044】
メモリセルトランジスタMTは、例えば制御ゲート及び電荷蓄積層を備え、データを不揮発に記憶する。NANDストリングNSに含まれるメモリセルトランジスタMT0~MT7は、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されている。同一のブロックBLKに含まれる各々のNANDストリングNSのメモリセルトランジスタMT0の制御ゲートは、ワード線WL0に共通に接続されている。同様に、同一のブロックBLKに含まれる複数のNANDストリングNSのメモリセルトランジスタMT1~MT7の制御ゲートは、それぞれワード線WL1~WL7に共通に接続されている。
【0045】
なお、以下の説明では、それぞれのストリングユニットSU内で共通のワード線WLに接続される複数のメモリセルトランジスタMTをセルユニットCUとする。また、セルユニットCUに含まれるそれぞれのメモリセルトランジスタMTが記憶する1ビットデータの集合のことをページと称する。したがって、1つのメモリセルトランジスタに1ビットデータが記憶される場合、セルユニットCUは1ページ分のデータを記憶する。また、1つのメモリセルトランジスタに2ビットデータが記憶される場合、セルユニットCUは2ページ分のデータを記憶する。
【0046】
選択トランジスタST1,ST2は、リード及びライト等の各種動作時におけるストリングユニットSUの選択に使用される。同一のカラムアドレスに対応するNANDストリングNSに含まれる選択トランジスタST1のドレインは、対応するビット線BLに共通に接続されている。ストリングユニットSU0に含まれる複数の選択トランジスタST1のゲートはセレクトゲート線SGD0に共通に接続されている。同様に、ストリングユニットSU1~SU3に含まれる複数の選択トランジスタST1のゲートは、それぞれセレクトゲート線SGD1~SGD3に共通に接続されている。同一のブロックBLKにおいて、複数の選択トランジスタST2のソースは、1つのソース線SLに共通に接続されている。複数の選択トランジスタST2のゲートは1つのセレクトゲート線SGSに共通に接続されている。
【0047】
このようなメモリセルアレイ211の回路構成において、ワード線WL0~WL7は、ブロックBLKごとに設けられている。ビット線BL0~BLmは、複数のブロックBLK間で共有されている。ソース線SLは、複数のブロックBLK間で共有されている。なお、ワード線WL及びセレクトゲート線SGD,SGSの本数は、メモリセルトランジスタMT及び選択トランジスタST1,ST2の個数に基づいて変更される。
【0048】
(メモリセルトランジスタの閾値電圧分布)
図4図6は、実施形態にかかるメモリセルアレイ211の複数のメモリセルトランジスタMTの閾値電圧分布およびリード電圧を示す図である。図4図6はそれぞれ異なるライト方式によるメモリセルトランジスタMTの閾値電圧分布を示している。図4図6における縦軸はメモリセルトランジスタMTの個数であり、横軸はメモリセルトランジスタMTの閾値電圧Vthである。図4図6に示すように、複数のメモリセルトランジスタMTは、記憶するデータのビット数に基づいて複数の閾値電圧分布を形成する。
【0049】
図4は、1つのメモリセルトランジスタMTが1ビットデータを記憶するSLC(Single-Level Cell)方式である場合に、複数のメモリセルトランジスタMTの閾値電圧によって形成される閾値電圧分布を示す。図4に示すように、SLC方式の場合、複数のメモリセルトランジスタMTは2つの閾値電圧分布を形成する。この2つの閾値電圧分布のことを、閾値電圧の低いものから順に“ER”ステート、“A”ステートと称することとする。SLC方式では、例えば“ER”ステート及び“A”ステートに、それぞれ“1”データ及び“0”データが割り当てられる。
【0050】
図5は、1つのメモリセルトランジスタMTが2ビットデータを記憶するMLC(Multi-Level Cell)方式である場合に、複数のメモリセルトランジスタMTの閾値電圧によって形成される閾値電圧分布を示す。図5に示すように、MLC方式の場合、複数のメモリセルトランジスタMTは4つの閾値電圧分布を形成する。この4つの閾値電圧分布のことを、閾値電圧の低いものから順に“ER”ステート、“A”ステート、“B”ステート、及び“C”ステートと称することとする。MLC方式では、例えば“ER”ステート、“A”ステート、“B”ステート、及び“C”ステートに、それぞれ“11(Upper/Lower)”データ、“01”データ、“00”データ、及び“10”データが割り当てられる。
【0051】
図6は、1つのメモリセルトランジスタMTが3ビットデータを記憶するTLC(Triple-Level Cell)方式である場合に、複数のメモリセルトランジスタMTの閾値電圧によって形成される閾値電圧分布を示す。図6に示すように、TLC方式の場合、複数のメモリセルトランジスタMTは8つの閾値電圧分布を形成する。この8つの閾値電圧分布のことを、閾値電圧の低いものから順に“ER”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、及び“G”ステートと称することとする。TLC方式では、例えば“ER”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、及び“G”ステートに、それぞれ“111(Upper/Middle/Lower)”データ、“110”データ、“100”データ、“000”データ、“010”データ、“011”データ、“001”データ、及び“101”データが割り当てられる。
【0052】
これらの閾値電圧分布において、隣り合う閾値電圧分布の間に、それぞれリード電圧が設定される。例えば、リード電圧ARは、“ER”ステートにおける最高の閾値電圧と、“A”ステートにおける最低の閾値電圧との間に設定され、リード対象のメモリセルトランジスタMTの閾値電圧が“ER”ステートの閾値電圧分布に含まれるのか、“A”ステート以上の閾値電圧分布に含まれるのかを判定する動作に使用される。リード対象のメモリセルトランジスタMTにリード電圧ARが印加されると、“ER”ステートに対応するメモリセルトランジスタMTはオンし、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、及び“G”ステートに対応するメモリセルトランジスタMTはオフする。その他のリード電圧も同様に設定される。
【0053】
つまり、リード電圧BRは“A”ステートの閾値電圧分布と“B”ステートの閾値電圧分布との間に設定される。リード電圧CRは“B”ステートの閾値電圧分布と“C”ステートの閾値電圧分布との間に設定される。リード電圧DRは“C”ステートの閾値電圧分布と“D”ステートの閾値電圧分布との間に設定される。リード電圧ERは“D”ステートの閾値電圧分布と“E”ステートの閾値電圧分布との間に設定される。リード電圧FRは“E”ステートの閾値電圧分布と“F”ステートの閾値電圧分布との間に設定される。リード電圧GRは“F”ステートの閾値電圧分布と“G”ステートの閾値電圧分布との間に設定される。
【0054】
また、各ライト方式において、最も閾値電圧が高い閾値電圧分布における最高の閾値電圧よりも高い電圧に、リードパス電圧VREADが設定される。MLC方式におけるリードパス電圧VREADは、SLC方式におけるリードパス電圧VREADよりも高く設定されてもよい。同様に、TLC方式におけるリードパス電圧VREADは、MLC方式におけるリードパス電圧VREADよりも高く設定されてもよい。これにより、リードパス電圧VREADがゲートに印加されたメモリセルトランジスタMTは、記憶するデータに依らずにオンする。
【0055】
ここで、SLC方式、MLC方式、及びTLC方式の各ライト方式に要するリード時間(後述するセンス動作時間)はそれぞれ異なる。SLC方式よりはMLC方式の方が、また、MLC方式よりはTLC方式の方が、センス動作時間は長くなっていく。
【0056】
リード対象のページによってもセンス動作時間は異なる。SLC方式のリードは、1つのリードレベル(AR)を用いる。MLC方式のロワーページのリードは、1つのリードレベル(BR)を用いる。MLC方式のアッパーページのリードは、2つのリードレベル(AR、CR)を用いる。TLC方式のアッパーページのリードは、2つのリードレベル(CR、GR)を用いる。TLC方式のロワーページのリードは、2つのリードレベル(AR、ER)を用いる。TLC方式のミドルページのリードは、3つのリードレベル(BR、DR、FR9を用いる。このように、リードに用いるリードレベルが増えるとセンス動作時間も増加する。
【0057】
隣り合うステート間の閾値電圧分布のマージンが小さいほど、ノイズ等の影響を受けやすいため、センス動作時間は長くなる傾向にある。具体的には、ステート間のマージンは、SLC方式>MLC方式>TLC方式なので、1つのリードレベルにおけるセンス動作時間はSLC方式<MLC方式<TLC方式となる。
【0058】
上記に示す1つのメモリセルトランジスタMTに記憶されるデータのビット数と、メモリセルトランジスタMTの閾値電圧分布に対するデータの割り当てとは一例である。上記以外の様々なデータの割り当てが閾値電圧分布に対して適用されてもよい。また、各リード電圧およびリードパス電圧は、各ライト方式で同じ電圧値に設定されてもよいし、異なる電圧に設定されてもよい。また、上記に示すMLC方式のロワーページ/アッパーページのビットアサインのエンコーディングは一例に過ぎない。同様に、TLC方式のロワーページ/ミドルページ/アッパーページのビットアサインのエンコーディングは一例に過ぎない。その他のエンコーディングも適用可能であり、その場合、各ページ間のセンス動作時間の大小関係も様々に異なりうる。
【0059】
(リード動作の概要)
次に、図7及び図8を用いて、リード動作の概要について説明する。
【0060】
図7は、実施形態にかかるメモリシステム1におけるリード動作の概要を示す図である。図7に示すように、リード動作にはセンス動作S1とデータ転送動作S2との2つが含まれる。
【0061】
センス動作S1とは、センスアンプモジュール212がメモリセルアレイ211に記憶されたデータを読み出す動作である。データ転送動作S2とは、センスアンプモジュール212(より具体的にはページバッファ212B)に読み出されたデータを入出力バスI/Oを介してメモリコントローラ10に転送する動作である。
【0062】
センス動作S1について具体的に説明する。シーケンサ217は、リード対象のメモリセルトランジスタMTに接続されるワード線WL(選択ワード線WL)にリード電圧を印加し、非対象のメモリセルトランジスタMTに接続されるワード線WL(非選択ワード線WL)にリードパス電圧VREADを印加する。また、センスアンプ212Aはビット線BLに流れる電流をセンスする。シーケンサ217は、センスアンプ212Aがビット線BLに電流が流れたとセンスすると、メモリセルトランジスタMTの閾値電圧はそのときのリード電圧以下であると判定する。また、シーケンサ217は、センスアンプ212Aがビット線BLに電流が流れていないとセンスすると、メモリセルトランジスタMTの閾値電圧はそのときのリード電圧より高いと判定する。シーケンサ217は、この動作を、リード対象のページ種別に必要なリードレベルの数だけ繰り返し、ページバッファ212Bにて論理演算することで、ページデータを得る。
【0063】
図8は、実施形態にかかるメモリシステム1におけるリード動作のコマンドセットを示す図である。図8に示すように、メモリチップ210は、メモリコントローラ10から、「Add」で指定される物理アドレスにおけるページ種別を指定する「PSC(Page Select Command)」と、センス動作を指示する「00H」と、カラムアドレス及びロウアドレスを指定する「Add」と、データのセンス開始を指示する「30H」とを受信すると、センス動作S1を開始する。これらのコマンド及びアドレスのセットをリードコマンドセットともいう。
【0064】
メモリチップ210は、センス動作S1を開始するとビジー状態に遷移し、メモリコントローラ10からデータ転送動作に関するコマンドを受け付けない。このため、メモリコントローラ10は、センス動作が終了してメモリチップ210がレディ状態に遷移した後に、データ転送動作を指示する必要がある。このように、センス動作によるビジー時間をtR時間、または、センス動作時間とも称する。
【0065】
メモリチップ210は、センス動作S1を終えるとレディ状態に遷移する。メモリコントローラ10は、例えばステータスリードコマンドを発行してメモリチップ210のステータスを取得することにより、メモリチップ210がレディ状態であると判断する。
【0066】
レディ状態となったメモリチップ210は、メモリコントローラ10から、データ転送を指示する「05H」と、カラムアドレス及びロウアドレスを指定する「Add」と、データ転送の開始を指示する「50H」とを受信すると、データ転送動作S2を開始する。これらのコマンド及びアドレスのセットをデータ転送コマンドセットともいう。
【0067】
上述のように、センス動作によるビジー時間(tR時間)、つまり、データのセンス動作に要する動作時間は、ライト方式等のリード条件によって異なる。ここで、リード条件とは、例えばライト方式の種類、ページ種別、リード動作の対象となるワード線を示すロウアドレス、ワード線グループ、及びメモリチップ210のアドレスの少なくともいずれかである。
【0068】
ライト方式の具体例としては、SLC方式、MLC方式、TLC方式、及びQLC(Quadruple-Level Cell)方式等がある。QLC方式とは、1つのメモリセルトランジスタMTに4ビットデータを記憶させる方式で、ロワーページ、ミドルページ、アッパーページ、及びトップページを有する。
【0069】
ページ種別とは、MLC方式の場合にはロワーページ及びミドルページを指し、TLC方式の場合にはロワーページ、ミドルページ、及びアッパーページを指し、QLC方式の場合にはロワーページ、ミドルページ、アッパーページ、及びトップページを指す。
【0070】
ワード線グループとは、複数のワード線を1つのグループとして取り扱う考え方である。例えば、ワード線WL0~WL3をワード線グループWGP1とし、ワード線WL4~WL8をワード線グループWGP2としてグルーピングを行う。
【0071】
以上のようなリード条件ごとのセンス動作時間の違いは、例えば上述のロムヒューズブロックに記憶されている。ロムヒューズブロックへのセンス動作時間に関する情報の格納は、例えばメモリシステム1の出荷時に行われる。ロムヒューズブロックに記憶されたセンス動作時間情報は、メモリシステム1の起動時に例えばメモリチップ210内部のステータスレジスタ215Aに読み出され、ステータスレジスタ215AからNANDコントローラ14内部のレジスタ143に設定される。また、メモリシステム1の出荷時には、初期診断によりリード条件ごとのセンス動作時間の測定を行ってもよい。このときのセンス動作時間をNANDコントローラ14のレジスタ143に設定してもよい。
【0072】
リード条件ごとのセンス動作時間にはメモリチップ210間でばらつきがあるが、例えばリード条件ごとに、センス動作に最も時間を要したメモリチップ210の動作時間である最長の時間を採用することで、ロムヒューズブロック、ステータスレジスタ215A、及びレジスタ143の容量を削減することができる。
【0073】
(リード動作の詳細)
次に、図9を用いて、リード動作の詳細について説明する。図9は、実施形態にかかるメモリシステム1におけるリード動作の詳細を示す図である。
【0074】
図9に示すNANDコントローラは、例えば図1において、チャネルCh.0により1つのNANDパッケージ21に接続されるNANDコントローラ14である。図9に示すChip0~2は、例えば図1において、チャネルCh.0に接続されたNANDパッケージ21が有するメモリチップ210(0)~210(2)である。
【0075】
また、NANDコントローラ14のレジスタ143は、NANDパッケージ21に含まれる各メモリチップ210の例えばステータスレジスタ215Aから、センス動作時間に関する情報を取得して記憶しているものとする。
【0076】
図9に示すように、NANDコントローラ14は、1つのチャネルCh.0に接続された1つのメモリチップ210にコマンドを実行させている間、別のメモリチップ210にもコマンドを実行させるインタリーブ動作を行う。これにより、メモリシステム1のパフォーマンスが向上する。
【0077】
具体的には、NANDコントローラ14は、例えばメモリチップ210(0)に対してリードコマンドセットを送信する。メモリチップ210(0)は、指定された物理アドレスに対応するメモリセルトランジスタMTの指定されたページのデータのセンスを開始し、ビジー状態となる。一方、NANDコントローラ14は、リードコマンドセットに含まれるページ種別を指定する「PSC」に基づき、指定したページ種別における最長のセンス動作時間を、タイマ140~142のいずれかに設定する。ここでは、NANDコントローラ14は、タイマ140にセンス動作時間を設定するものとする。タイマ140は、設定されたセンス動作時間が満了となるまでセンス動作時間の測定を実行する。
【0078】
NANDコントローラ14は、メモリチップ210(0)へのリードコマンドセットの送信が終了すると、例えばメモリチップ210(1)に対してリードコマンドセットを送信する。メモリチップ210(1)は、指定された物理アドレスに対応するメモリセルトランジスタMTの指定されたページのデータのセンスを開始し、ビジー状態となる。一方、NANDコントローラ14は、リードコマンドセットに含まれるページ種別を指定する「PSC」に基づき、指定したページ種別における最長のセンス動作時間を、使用中のタイマ140を除くタイマ141,142のいずれかに設定する。ここでは、NANDコントローラ14は、タイマ141にセンス動作時間を設定するものとする。タイマ141は、設定されたセンス動作時間が満了となるまでセンス動作時間の測定を実行する。
【0079】
NANDコントローラ14は、メモリチップ210(1)へのリードコマンドセットの送信が終了すると、メモリチップ210(2)に対してリードコマンドセットを送信する。メモリチップ210(2)は、指定された物理アドレスに対応するメモリセルトランジスタMTの指定されたページのデータのセンスを開始し、ビジー状態となる。一方、NANDコントローラ14は、リードコマンドセットに含まれるページ種別を指定する「PSC」に基づき、指定したページ種別における最長のセンス動作時間を、使用されていないタイマ142に設定する。タイマ142は、設定されたセンス動作時間が満了となるまでセンス動作時間の測定を実行する。
【0080】
NANDコントローラ14は、1回のインタリーブ動作で発行可能なコマンド数(3)に対応する数のメモリチップ210(0)~210(2)が全てビジー状態となると、メモリチップ210(0)~210(2)の状態を監視するステータスポーリングを開始する。ステータスポーリングでは、NANDコントローラ14が、順次、メモリチップ210(0)~210(2)にステータスリードコマンドを発行する。ステータスリードコマンドを受信したメモリチップ210(0)~210(2)のシーケンサ217は、メモリチップ210(0)~210(2)のステータス情報をステータスレジスタ215Aに格納し、これを入出力回路214に転送する。これにより、NANDコントローラ14は、メモリチップ210(0)~210(2)のステータスを取得することができる。
【0081】
NANDコントローラ14は、メモリチップ210(0)~210(2)のいずれかがレディ状態となるまで、または、タイマ140~142に設定されたセンス動作時間が満了となるまで、ステータスポーリングを継続する。図9の例では、タイマ140~142のいずれかに設定されたセンス動作時間が満了となる前に、メモリチップ210(0)がレディ状態となっている。NANDコントローラ14は、取得したメモリチップ210(0)のステータス情報から、メモリチップ210(0)がレディ状態となったと判断する。
【0082】
NANDコントローラ14は、メモリチップ210(0)がレディ状態となったと判断すると、メモリチップ210(0)に対してデータ転送コマンドセットを送信する。メモリチップ210(0)は、先のリードコマンドセットにしたがってセンスしたデータのNANDコントローラ14への転送を実行する。
【0083】
ここで、図9の例では、メモリチップ210(0)からのデータがNANDコントローラ14へと転送されている間に、メモリチップ210(1)のセンス動作が終了している。また、その後ほどなくして、メモリチップ210(1)のセンス動作時間を測定するタイマ141の設定時間が満了となっている。
【0084】
また、同様に図9の例では、メモリチップ210(0)からのデータがNANDコントローラ14へと転送されている間に、メモリチップ210(1)に次いで、メモリチップ210(2)のセンス動作が終了している。また、メモリチップ210(0)からNANDコントローラ14へのデータ転送の終了後ほどなくして、メモリチップ210(2)のセンス動作時間を測定するタイマ142の設定時間が満了となっている。
【0085】
NANDコントローラ14は、メモリチップ210(0)からのデータ転送が完了すると、タイマ141に設定されたセンス動作時間が満了していることから、メモリチップ210(1)のセンス動作が終了し、メモリチップ210(1)がレディ状態になっていると判断する。NANDコントローラ14は、ステータスリードコマンドによるステータス確認をすることなく、メモリチップ210(1)に対してデータ転送コマンドセットを送信する。メモリチップ210(1)は、先のリードコマンドセットにしたがってセンスしたデータのNANDコントローラ14への転送を実行する。
【0086】
NANDコントローラ14は、メモリチップ210(1)からのデータ転送が完了すると、タイマ142に設定されたセンス動作時間が満了していることから、メモリチップ210(2)のセンス動作が終了し、メモリチップ210(2)がレディ状態になっていると判断する。NANDコントローラ14は、ステータスリードコマンドによるステータス確認をすることなく、メモリチップ210(2)に対してデータ転送コマンドセットを送信する。メモリチップ210(2)は、先のリードコマンドセットにしたがってセンスしたデータのNANDコントローラ14への転送を実行する。
【0087】
以上により、実施形態のメモリシステム1におけるリード動作が終了する。
【0088】
(メモリシステムにおけるリード処理の例)
次に、図10を用いて、実施形態のメモリシステム1におけるリード動作に関する処理の例について説明する。図10は、実施形態にかかるメモリシステム1におけるリード動作に関する処理の手順の一例を示すフロー図である。
【0089】
図10に示すように、メモリシステム1のNANDコントローラ14は、自身と接続されるNANDパッケージ21のメモリチップ210(0)~210(2)のいずれかにリードコマンドセットを送信する(ステップS101)。また、NANDコントローラ14は、自身が送信したリードコマンドセットに含まれるページ種別の指定に基づき、指定したページ種別における最長のセンス動作時間をタイマ140~142のいずれかに設定する(ステップS102)。
【0090】
NANDコントローラ14は、リードコマンドセットの発行対象のメモリチップ210が他にも存在するか否かを判定する(ステップS103)。コマンド発行対象のメモリチップ210が他にも存在する場合には(ステップS103:Yes)、ステップS101以降の処理を繰り返す。
【0091】
NANDコントローラ14は、コマンド発行対象のメモリチップ210が存在しない場合には(ステップS103:No)、タイマ140~142による測定時間を参照して、センス動作時間が満了したメモリチップ210が存在するか否かを判定する(ステップS104)。
【0092】
NANDコントローラ14は、センス動作時間が満了したメモリチップ210が存在しない場合には(ステップS104:No)、メモリチップ210(0)~210(2)に対して順次、ステータスポーリングを行って(ステップS105)、レディ状態のメモリチップ210が存在するか否かを判定する(ステップS106)。レディ状態のメモリチップ210が存在しない場合には(ステップS106:No)、NANDコントローラ14は、ステップS104以降の処理を繰り返す。
【0093】
NANDコントローラ14は、センス動作時間が満了したメモリチップ210が存在する場合(ステップS104:Yes)、または、レディ状態のメモリチップ210が存在する場合には(ステップS106:Yes)、そのメモリチップ210にデータ転送コマンドセットを送信する(ステップS107)。
【0094】
NANDコントローラ14は、データ転送コマンドセットの発行対象のメモリチップ210が他にも存在するか否かを判定する(ステップS108)。コマンド発行対象のメモリチップ210が他にも存在する場合には(ステップS108:Yes)、ステップS103以降の処理を繰り返す。
【0095】
NANDコントローラ14は、コマンド発行対象のメモリチップ210が存在しない場合には(ステップS108:No)、処理を終了する。
【0096】
以上により、実施形態のメモリシステム1におけるリード動作に関する処理が終了する。
【0097】
(比較例)
次に、図11を用いて、比較例のメモリシステムにおけるリード動作について説明する。図11は、比較例にかかるメモリシステムにおけるリード動作の詳細を示す図である。比較例のメモリシステムでは、各メモリチップ(0)~(2)のステータスを専らステータスリードコマンドに頼って判断する。
【0098】
図11に示すように、比較例のメモリシステムにおいては、NANDコントローラがメモリチップ(0)~(2)に順次、リードコマンドセットを発行した後、ステータスポーリングを行って、いずれかのメモリチップ(0)~(2)がレディ状態となるのを待つ。その後、NANDコントローラが、レディ状態となったメモリチップ(0)からデータ転送を受け付けている間に、メモリチップ(1)(2)のセンス動作が順次、終了する。しかしながら、比較例のメモリシステムにおいては、NANDコントローラがメモリチップ(1)(2)の状態を知るには、ステータスポーリングを行ってメモリチップ(1)(2)のステータスを取得しなければならない。
【0099】
NANDコントローラは、メモリチップ(0)からのデータ転送終了後、ステータスポーリングによりメモリチップ(1)がレディ状態であることを知り、メモリチップ(1)からのデータ転送を受け付ける。またさらに、NANDコントローラは、メモリチップ(1)からのデータ転送終了後、ステータスポーリングによりメモリチップ(2)がレディ状態であることを知り、メモリチップ(2)からのデータ転送を受け付ける。
【0100】
ここで、メモリチップ(0)からのデータ転送終了後の、メモリチップ(1)に対するステータスポーリング(ステータスリードコマンドの発行)、及びメモリチップ(2)に対するステータスポーリング(ステータスリードコマンドの発行)によって、比較例のメモリシステムにおけるリード動作に遅延が生じてしまっている。上記のようなメモリチップのステータス確認に要する時間は、メモリシステムのパフォーマンス低下の一因となる。
【0101】
実施形態のメモリシステム1によれば、複数のメモリチップ210(0)~210(2)のいずれかのセンス動作の動作時間が満了していた場合、メモリコントローラ10は、動作時間が満了したメモリチップ210のステータス確認をすることなく、そのメモリチップ210にデータ転送動作を指示する。これにより、ステータスポーリングによるリード動作の遅延を抑制することができる。
【0102】
実施形態のメモリシステム1によれば、ライト方式の種類およびページ種別等のリード条件に基づいて、センス動作の動作時間をタイマ140~142のいずれかに設定する。これにより、メモリコントローラ10は、複数のメモリチップ210(0)~210(2)のいずれかのセンス動作の動作時間が満了しているか否かを知ることができる。したがって、メモリチップ210のステータス確認をすることなく、動作時間が満了したメモリチップ210がレディ状態にあるものと判断することができる。
【0103】
実施形態のメモリシステム1によれば、ライト方式の種類およびページ種別等のリード条件は、メモリコントローラ10が発行するリードコマンドセットに含まれる。これにより、メモリコントローラ10は、リード条件に基づいて、センス動作の動作時間をタイマ140~142のいずれかに設定することができる。
【0104】
実施形態のメモリシステム1によれば、メモリコントローラ10は、リード条件ごとの動作時間のうち最長の動作時間をタイマ140~142のいずれかに設定する。すなわち、NANDコントローラ14のレジスタ143、メモリチップ210のステータスレジスタ215A、及びメモリチップ210のロムヒューズブロック等は、例えばメモリチップ210(0)~210(2)間でばらつきのある動作時間を全て記憶する必要が無く、メモリシステム1におけるリソースを有効に活用することができる。また、メモリチップ210(0)~210(2)間で動作時間がばらつく場合であっても、データ転送コマンドセットを適正なタイミングで送信することができる。
【0105】
(変形例)
次に、図12及び図13を用いて、実施形態の変形例のリード動作について説明する。
【0106】
メモリシステムでは、センス動作において、メモリチップの状態がビジーのまま固定されてしまうビジースタックという不良が発生する場合がある。変形例においては、ビジースタックが発生した場合のメモリシステムにおけるリード動作について説明する。以下の説明においても、上述の実施形態と同様、メモリシステム1を例にとる。
【0107】
図12は、実施形態の変形例にかかるリード動作においてビジースタックが発生した場合を示す図である。
【0108】
図12に示すように、NANDコントローラ14が、メモリチップ210(0),210(1)等に順次、リードコマンドセットを発行して、タイマ140,141にそれぞれセンス動作時間を設定した後、メモリチップ210(1)においてビジースタックが発生している。
【0109】
このような場合であっても、NANDコントローラ14により例えばメモリチップ210(1)用としてタイマ141に設定されたセンス動作時間は、所定時間が経過すれば満了する。図12の例では、タイマ141のセンス動作時間は、NANDコントローラ14がメモリチップ210(0)からデータ転送を受け付けている間に満了している。
【0110】
このため、NANDコントローラ14は、メモリチップ210(0)からのデータ転送終了後、メモリチップ210(1)に対してデータ転送コマンドセットを発行する。ただし、メモリチップ210(1)は、このデータ転送コマンドセットを受け付けられる状態に無く、メモリチップ210(1)からNANDコントローラ14へは、有意味なデータは転送されない。
【0111】
NANDコントローラ14が備えるECC部144は、メモリチップ210から転送されたデータの誤り訂正を行う構成要素である。上記の場合、ECC部144は、メモリチップ210(1)からのデータが訂正不能であると判定する。
【0112】
NANDコントローラ14は、ECC部144がデータ訂正不能と判定すると、メモリチップ210(1)に対してステータスリードコマンドを発行し、メモリチップ210(1)のステータスを確認する。メモリチップ210(1)がビジー状態であれば、NANDコントローラ14は、メモリチップ210(1)にビジースタックが発生したものと判断し、メモリチップ210(1)に対してリセットコマンドを発行してメモリチップ210(1)をリセットする。
【0113】
図13は、実施形態の変形例にかかるリード動作においてビジースタックが発生した場合の処理の手順の一例を示すフロー図である。ビジースタックは、例えば上述の実施形態の図10のフローにおけるステップS107の処理後に発生しうる。
【0114】
NANDコントローラ14は、センス動作時間が満了したメモリチップ210に対してデータ転送コマンドセットを送信した後(ステップS107)、図13に示すように、ECC部144が訂正不能と判定したか否かを確認する(ステップS201)。ECC部144が訂正不能と判定をしていなければ(ステップS201:No)、NANDコントローラ14は、通常のフローに戻って、他のメモリチップ210への処理を継続する(ステップS108)。
【0115】
ECC部144が訂正不能と判定をした場合(ステップS201:Yes)、NANDコントローラ14は、訂正不能と判定されたデータの転送元であるメモリチップ210に対してステータスリードコマンドを発行する(ステップS202)。NANDコントローラ14は、メモリチップ210からステータスを取得してメモリチップ210がビジー状態であるか否かを判断する(ステップS203)。
【0116】
NANDコントローラ14は、メモリチップ210がビジー状態であれば(ステップS203:Yes)、メモリチップ210にビジースタックが発生したと判断し、タイムアウト処理をする。すなわち、NANDコントローラ14は、メモリチップ210に対してリセットコマンドを発行し(ステップS204)、このメモリチップ210に対する処理を終了する。その後、NANDコントローラ14は、他のメモリチップ210への処理を継続する(ステップS108)。
【0117】
NANDコントローラ14は、メモリチップ210がレディ状態であれば(ステップS203:No)、メモリチップ210にビジースタックは発生していないものと判断し、メモリチップ210に対してリトライリードコマンドを発行する(ステップS205)。リトライリードコマンドは、ECC部144が訂正不能と判定したデータのリードを、メモリチップ210に再実行させるコマンドである。その後、NANDコントローラ14は、ステップS201以降の処理を繰り返す。
【0118】
例えば、比較例のメモリシステムにおいては、メモリチップにビジースタックが発生した場合であっても、タイムアウト判定がなされるまでに長時間を要する。
【0119】
変形例のリード動作によれば、動作時間が満了したメモリチップ210のステータス確認をすることなく、そのメモリチップ210にデータ転送動作を指示する。これにより、メモリチップ210にビジースタックが発生していた場合には、データの誤り訂正処理において訂正不能となることで、タイムアウト判定を速やかに行うことができる。
【0120】
変形例のリード動作によれば、データの誤り訂正処理において訂正不能となるエラーが生じた場合には、データの転送元のメモリチップ210のステータス確認を行う。これにより、メモリチップ210がレディ状態であるなど、ビジースタックの発生によるエラーでない場合には、メモリチップ210にリード動作を再実行させることができる。
【0121】
[その他の実施形態]
上述の実施形態等においては、並列動作要素がメモリチップ210(0)~210(2)である場合について説明したが、並列動作要素はメモリチップ210(0)~210(2)に限られない。例えば、1つのメモリチップ内に、メモリセルアレイとセンスアンプモジュール及びロウデコーダモジュール等の周辺回路とをそれぞれ有する複数のプレーンが含まれることがある。複数のプレーンは個々に並列処理が可能であり、このような場合には、個々のプレーンが並列動作要素に相当する。この他、並列での処理が可能な個々の構成を並列動作要素として規定することが可能である。
【0122】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0123】
1…メモリシステム、2…ホスト、10…メモリコントローラ、14…NANDコントローラ、20…NAND型フラッシュメモリ(NANDメモリ)、21…NANDパッケージ、140~142…タイマ、143…レジスタ、144…ECC部、145…NANDインタフェース(NAND I/F)、210…メモリチップ、211…メモリセルアレイ、212…センスアンプモジュール、213…ロウデコーダモジュール。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13