(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2022-06-28
(45)【発行日】2022-07-06
(54)【発明の名称】半導体記憶装置
(51)【国際特許分類】
G11C 7/10 20060101AFI20220629BHJP
G06F 12/00 20060101ALI20220629BHJP
G11C 7/22 20060101ALI20220629BHJP
G11C 16/26 20060101ALI20220629BHJP
【FI】
G11C7/10 240
G06F12/00 560B
G06F12/00 564A
G11C7/22
G11C16/26 110
(21)【出願番号】P 2021139233
(22)【出願日】2021-08-27
【審査請求日】2021-08-27
(73)【特許権者】
【識別番号】511062254
【氏名又は名称】ウィンボンド エレクトロニクス コーポレーション
(74)【代理人】
【識別番号】100098497
【氏名又は名称】片寄 恭三
(72)【発明者】
【氏名】金子 二四三
(72)【発明者】
【氏名】妹尾 真言
(72)【発明者】
【氏名】葛西 央倫
【審査官】後藤 彰
(56)【参考文献】
【文献】特開2014-17034(JP,A)
【文献】特開2008-165879(JP,A)
【文献】特開2020-191145(JP,A)
【文献】米国特許出願公開第2021/0090638(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 7/10
G06F 12/00
G11C 16/26
G11C 7/22
(57)【特許請求の範囲】
【請求項1】
NAND型のメモリセルアレイと、メモリセルアレイから読み出されたページデータを保持可能な第1および第2のラッチを含むページバッファ/センス回路と、読出し動作を制御する制御手段とを含むNANDチップと、
誤り検出および訂正機能を含むECCチップとを含み、
前記第1のラッチは、ページデータの第1のデータ部分を保持する第1の保持部分と第2のデータ部分を保持する第2の保持部分とを含み、
前記第2のラッチは、前記第1のラッチのデータサイズよりも小さく、かつ前記第1のラッチの第2の保持部分から転送された第2のデータ部分を保持し、
前記制御手段は、前記第1のラッチの第1の保持部分に保持された第1のデータ部分を前記ECCチップに転送した後、前記第2のラッチに保持された第2のデータ部分を前記ECCチップに転送し、
前記ECCチップは、前記第1のデータ部分および前記第2のデータ部分の誤り検出および訂正を行い、
前記制御手段は、前記ECCチップが前記第1のデータ部分を外部に出力するタイミングに応答して前記メモリセルアレイから次のページを読出す、半導体記憶装置。
【請求項2】
前記NANDチップは、読出しデータを前記ECCチップに転送するための第1の専用端子を含み、
前記ECCチップは、前記第1の専用端子に接続され、前記読出しデータを受け取る第2の専用端子とを含む、請求項1に記載の半導体記憶装置。
【請求項3】
前記第1の保持部分および前記第2の保持部分は、それぞれ1/2ページ分のデータを保持する記憶容量を有し、前記第2のラッチは、1/2ページ分のデータを保持する記憶容量を有し、前記制御手段は、1/2ページ単位で前記ECCチップにデータを転送する、請求項1または2に記載の半導体記憶装置。
【請求項4】
1つのページがn個のセクタから構成され、前記ECCチップがデータの誤り検出および訂正をセクタ単位で行うとき、前記メモリセルアレイの読出し時間をtARRAY、前記NANDチップが前記ECCチップに1つのセクタのデータを転送する時間をtDOUT1、前記ECCチップが1つのセクタのデータを外部に出力する時間をtDOUT2、前記NANDチップが1つのセクタのデータを出力してから当該セクタの誤り検出および訂正が終わるまでのレイテンシをtLTCYとしたとき、次の(1)~(4)の数式で規定される制約を有する、請求項3に記載の半導体記憶装置。
tDOUT1+tLTCY<tDOUT2×n/2 ・・・(1)
tDOUT1<tDOUT2 ・・・(2)
tARRAY+tDOUT1+tLTCY<tDOUT2×n ・・・(3)
tARRAY+tDOUT1×n/2<tDOUT2×n ・・・(4)
【請求項5】
前記第1の保持部分および前記第2の保持部分は、それぞれ1/2ページ分のデータを保持する記憶容量を有し、前記第2のラッチは、1/4ページ分のデータを保持する記憶容量を有し、前記制御手段は、1/4ページ単位で前記ECCチップにデータを転送する、請求項1または2に記載の半導体記憶装置。
【請求項6】
1つのページがn個のセクタから構成され、前記ECCチップがデータの誤り検出および訂正をセクタ単位で行うとき、前記メモリセルアレイの読出し時間をtARRAY、前記NANDチップが前記ECCチップに1つのセクタのデータを転送する時間をtDOUT1、前記ECCチップが1つのセクタのデータを外部に出力する時間をtDOUT2としたとき、次の数式で規定される制約を有する、請求項5に記載の半導体記憶装置。
tARRAY+tDOUT1×(n×3/4)<tDOUT2×n
【請求項7】
前記NANDチップは、前記第1の専用端子から第1のクロック信号に同期して前記第1のデータ部分および前記第2のデータ部分を前記ECCチップに転送し、
前記ECCチップは、訂正したデータを第2のクロック信号に同期して外部に出力する、請求項2に記載の半導体記憶装置。
【請求項8】
前記制御手段は、ページの連続読出し動作を制御する、請求項1ないし7いずれか1つに記載の半導体記憶装置。
【請求項9】
前記NANDチップと前記ECCチップは、1つのパッケージ内に収容される、請求項1ないし7いずれか1つに記載の半導体記憶装置。
【請求項10】
NAND型のメモリセルアレイと、メモリセルアレイから読み出されたページデータを保持可能な第1および第2のラッチを含むページバッファ/センス回路とを含むNANDチップと、NANDチップから転送されたデータの誤り検出および訂正機能を含むECCチップとを含む半導体記憶装置における読出し方法であって、
前記NANDチップにおいて、前記メモリセルアレイから読み出されたページの第1のデータ部分と第2のデータ部分とを前記第1のラッチに保持し、前記第1のラッチに保持した第2のデータ部分を前記第2のラッチに転送し、その後、前記第1のラッチに保持した第1のデータ部分を前記ECCチップに転送した後、前記第2のラッチに保持した第2のデータ部分を前記ECCチップに転送し、
前記ECCチップにおいて、第1のデータ部分の誤り検出および訂正を行った後、第2のデータ部分の誤り検出および訂正を行い、
前記ECCチップが誤り訂正された第1のデータ部分を出力することに応答して前記NANDチップにおいてメモリセルアレイから次のページを読出す、読出し方法。
【請求項11】
前記NANDチップにおいて、前記第1のデータ部分および前記第2のデータ部分をクロック信号に同期して第1の専用端子から前記ECCチップに転送し、
前記ECCチップにおいて、第2の専用端子から前記第1のデータ部分および前記第2のデータ部分を前記クロック信号に同期して受け取る、請求項10に記載の読出し方法。
【請求項12】
前記第1のデータ部分および前記第2のデータ部分は、それぞれ1/2ページのデータであり、前記第2のラッチは、前記第1のラッチから1/2ページのデータを受け取り、前記NANDチップは、1/2ページ単位で前記ECCチップに第1のデータ部分または第2のデータ部分を転送する、請求項10に記載の読出し方法。
【請求項13】
1つのページがn個のセクタから構成され、前記ECCチップがデータの誤り検出および訂正をセクタ単位で行うとき、前記メモリセルアレイの読出し時間をtARRAY、前記NANDチップが前記ECCチップに1つのセクタのデータを転送する時間をtDOUT1、前記ECCチップが1つのセクタのデータを外部に出力する時間をtDOUT2、前記NANDチップが1つのセクタのデータを出力してから当該セクタの誤り検出および訂正が終わるまでのレイテンシをtLTCYとしたとき、次の(1)~(4)の数式で規定される制約を有する、請求項10に記載の読出し方法。
tDOUT1+tLTCY<tDOUT2×n/2 ・・・(1)
tDOUT1<tDOUT2 ・・・(2)
tARRAY+tDOUT1+tLTCY<tDOUT2×n ・・・(3)
tARRAY+tDOUT1×n/2<tDOUT2×n ・・・(4)
【請求項14】
前記第1のデータ部分および前記第2のデータ部分は、それぞれ1/2ページのデータであり、前記第2のラッチは、前記第1のラッチから1/4ページのデータを受け取る、前記NANDチップは、1/4ページ単位で前記ECCチップに第1のデータ部分または第2のデータ部分を転送する、請求項10に記載の読出し方法。
【請求項15】
1つのページがn個のセクタから構成され、前記ECCチップがデータの誤り検出および訂正をセクタ単位で行うとき、前記メモリセルアレイの読出し時間をtARRAY、前記NANDチップが前記ECCチップに1つのセクタのデータを転送する時間をtDOUT、前記ECCチップが1つのセクタのデータを外部に出力する時間をtDOUTとしたとき、次の数式で規定される制約を有する、請求項14に記載の読出し方法。
tARRAY+tDOUT1×(n×3/4)<tDOUT2×n
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、NAND型フラッシュメモリ等の半導体記憶装置に関し、特に誤り検出訂正に関する。
【背景技術】
【0002】
NAND型のフラッシュメモリでは、データのプログラムや消去が繰り返されることで、トンネル絶縁膜の劣化等により電荷保持特性が悪化したり、トンネル絶縁膜にトラップされた電荷によりしきい値変動が生じ、ビットエラーを引き起こすことがある。このようなビットエラー対策として、フラシュメモリにはエラー検出訂正回路(以下、ECC回路という)が用いられている(例えば、特許文献1、2)。
【先行技術文献】
【特許文献】
【0003】
【文献】特許6744950号公報
【文献】特許6744951号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
図1は、従来のオフチップECCのフラッシュメモリの構成を示す図である。フラッシュメモリ10は、NAND型のメモリセルアレイやその周辺回路を含むNANDチップ20を含んで構成され、NANDチップ20は、ECC機能40を搭載したコントローラチップ30に接続される。NANDチップ20とコントローラチップ30とは、それぞれ別個のパッケージに収容され、各パッケージが例えばプリント基板上に実装される。
【0005】
NANDチップ20とコントローラチップ30は、例えば、クロック信号に同期してデータを転送することができるSPI(Serial Peripheral Interface)を搭載し、両チップには、それぞれ#CS、CLK、DI、DO、#WP、#HOLDの入出力端子が設けられる。コントローラチップ30は、SPIの入出力端子を介してNANDチップ20にコマンド、アドレス、データを送信する。
【0006】
ECC機能40は、データを符号化してパリティデータを生成するエンコーダと、パリティデータに基づきデータを復号化するデコーダとを含む。ECC機能40は、例えば、BCHコードにより複数ビット(例えば、2ビット、4ビット、8ビットなど)のエラー検出・訂正を行い、この場合、BCHデコーダは、データのシンドロームを評価するシンドローム計算部と、エラー位置多項式(ELP)を計算するユークリッド互除計算部と、エラー位置多項式の根を計算し、エラー位置を探索するエラー位置探索部と、探索されたエラー位置に基づきエラーを訂正するエラー訂正部とを含む。
【0007】
NANDチップ20のページバッファ/センス回路は、2つのラッチを含み、1つのラッチは、2つのキャッシュから構成され、1つのキャッシュが複数のセクタ(例えば、2セクタ、4セクタなど)のデータを格納する。NANDチップ20とコントローラチップ30との間のデータ転送は、キャッシュ単位で行われる。また、ECC機能40は、セクタ単位でパリティデータを生成し、あるいはエラー検出・訂正を行う。ECC機能40により符号された1つのセクタは、メインデータとパリティデータとを含む。
【0008】
コントローラチップ30は、NANDチップ20にプログラム動作をさせるとき、ECC機能40によりプログラムすべきデータからパリティデータを生成し、生成したパリティデータとメインデータとをSPIのDO端子を介してNANDチップ20に転送する。NANDチップ20は、受け取ったメインデータとパリティデータとをラッチに保持し、ラッチに保持したデータをメモリセルアレイの選択ページにプログラムする。
【0009】
一方、NANDチップ20においてメモリセルアレイから読み出されたデータは、SPIのDO端子を介してコントローラチップ30に転送される。ECC機能40は、パリティデータに基づきエラーを検出し、その検出結果に応じてメインデータやパリティデータを訂正する。
【0010】
図2は、コントローラチップ30のECC機能の各部の動作を示すタイミングチャートである。NANDチップ20は、コントローラチップ30から転送された読出しコマンドに応じて読出し動作を行い、読み出したデータをコントローラチップ30に出力する。時刻t0で、コントローラチップ30のNAND_IFがNANDチップ20からセクタS0のメインデータとパリティデータPtの受け取りを開始し、時刻t1で、セクタS1のメインデータとパリティデータPtの受け取りを開始し、時刻t2、t3でセクタS2、セクタS3のメインデータとパリティデータPtの受け取りを開始する。ECC機能40は、セクタS1のデータの受け取りを行っている間に、これと並行してセクタS0のメインデータのシンドロームの計算、エラー位置多項式の計算、エラー位置の探索をパイプライン処理し、探索されたエラー位置に基づきセクタS0のメインデータのエラーを訂正する。その後、コントローラチップ30のCPU_IFは、セクタS0のエラー訂正したデータをホスト装置に転送する。セクタS1、S2、S3のECC処理も同様にパイプライン処理が行われ、各セクタのエラー訂正したデータがセクタの受信中に出力される。
【0011】
NANDチップ20からコントローラチップ30に読出しデータを転送する場合、シンドローム計算はセクタのパリティデータの転送後に行う必要がある。このため、SPIのDO端子のビット幅が狭いと、データ転送に時間がかかってしまい、その間、コントローラチップ30のアイドル状態が長くなり、パインライン処理によるパフォーマンスを十分に発揮させることができないという課題がある。また、メモリセルアレイの高集積化に伴い1ページのサイズが大きくなると、ページバッファ/センス回路の占有面積が大きくなり、これによりチップが大きくなってしまう。このため、ページバッファ/センス回路の省スペース化が望まれる。
【0012】
本発明は、このような従来の課題を解決し、誤り検出および訂正の処理の高速化を図りつつ小型化が可能な半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【0013】
本発明に係る半導体記憶装置は、NAND型のメモリセルアレイと、メモリセルアレイから読み出されたページデータを保持可能な第1および第2のラッチを含むページバッファ/センス回路と、読出し動作を制御する制御手段とを含むNANDチップと、誤り検出および訂正機能を含むECCチップとを含み、前記第1のラッチは、ページデータの第1のデータ部分を保持する第1の保持部分と第2のデータ部分を保持する第2の保持部分とを含み、前記第2のラッチは、前記第1のラッチのデータサイズよりも小さく、かつ前記第1のラッチの第2の保持部分から転送された第2のデータ部分を保持し、前記制御手段は、前記第1のラッチの第1の保持部分に保持された第1のデータ部分を前記ECCチップに転送した後、前記第2のラッチに保持された第2のデータ部分を前記ECCチップに転送し、前記ECCチップは、前記第1のデータ部分および前記第2のデータ部分の誤り検出および訂正を行い、前記制御手段は、前記ECCチップが前記第1のデータ部分を外部に出力するタイミングに応答して前記メモリセルアレイから次のページを読出す。
【0014】
ある態様では、前記NANDチップは、読出しデータを前記ECCチップに転送するための第1の専用端子を含み、前記ECCチップは、前記第1の専用端子に接続され、前記読出しデータを受け取る第2の専用端子とを含む。ある態様では、前記第1の保持部分および前記第2の保持部分は、それぞれ1/2ページ分のデータを保持する記憶容量を有し、前記第2のラッチは、1/2ページ分のデータを保持する記憶容量を有し、前記制御手段は、1/2ページ単位で前記ECCチップにデータを転送する。ある態様では、前記第1の保持部分および前記第2の保持部分は、それぞれ1/2ページ分のデータを保持する記憶容量を有し、前記第2のラッチは、1/4ページ分のデータを保持する記憶容量を有し、前記制御手段は、1/4ページ単位で前記ECCチップにデータを転送する。ある態様では、前記NANDチップは、前記第1の専用端子から第1のクロック信号に同期して前記第1のデータ部分および前記第2のデータ部分を前記ECCチップに転送し、前記ECCチップは、訂正したデータを第2のクロック信号に同期して外部に出力する。
【0015】
本発明に係る読出し方法は、NAND型のメモリセルアレイと、メモリセルアレイから読み出されたページデータを保持可能な第1および第2のラッチを含むページバッファ/センス回路とを含むNANDチップと、NANDチップから転送されたデータの誤り検出および訂正機能を含むECCチップとを含む半導体記憶装置におけるものであって、前記NANDチップにおいて、前記メモリセルアレイから読み出されたページの第1のデータ部分と第2のデータ部分とを前記第1のラッチに保持し、前記第1のラッチに保持した第2のデータ部分を前記第2のラッチに転送し、その後、前記第1のラッチに保持した第1のデータ部分を前記ECCチップに転送した後、前記第2のラッチに保持した第2のデータ部分を前記ECCチップに転送し、前記ECCチップにおいて、第1のデータ部分の誤り検出および訂正を行った後、第2のデータ部分の誤り検出および訂正を行い、前記ECCチップが誤り訂正された第1のデータ部分を出力することに応答して前記NANDチップにおいてメモリセルアレイから次のページを読出す。
【0016】
ある態様では、前記NANDチップにおいて、前記第1のデータ部分および前記第2のデータ部分をクロック信号に同期して第1の専用端子から前記ECCチップに転送し、前記ECCチップにおいて、第2の専用端子から前記第1のデータ部分および前記第2のデータ部分を前記クロック信号に同期して受け取る。ある態様では、前記第1のデータ部分および前記第2のデータ部分は、それぞれ1/2ページのデータであり、前記第2のラッチは、前記第1のラッチから1/2ページのデータを受け取り、前記NANDチップは、1/2ページ単位で前記ECCチップに第1のデータ部分または第2のデータ部分を転送する。ある態様では、前記第1のデータ部分および前記第2のデータ部分は、それぞれ1/2ページのデータであり、前記第2のラッチは、前記第1のラッチから1/4ページのデータを受け取る、前記NANDチップは、1/4ページ単位で前記ECCチップに第1のデータ部分または第2のデータ部分を転送する。
【発明の効果】
【0017】
本発明によれば、NANDチップのページバッファ/センス回路の第2のラッチのデータサイズを第1のラッチのデータサイズよりも小さくすることでNANDチップの小型化、省スペース化を図ることができる。また、NANDチップとは別個にECCチップを設けることで誤り検出および訂正の処理の高速化を図ることができる。
【図面の簡単な説明】
【0018】
【
図1】従来のフラッシュメモリの概略構成を示す図である。
【
図2】従来のフラッシュメモリのECC機能の動作を示すタイミングチャートである。
【
図3】本発明の実施例に係るフラッシュメモリの概略構成を示す図である。
【
図4】
図4(A)は、本実施例のフラッシュメモリの要部の構成を示す図、
図4(B)は、比較例としてのフラッシュメモリの要部の構成を示す図である。
【
図5】本発明の実施例に係るNANDチップとECCチップとの内部構成を示すブロック図である。
【
図6】本発明の実施例に係るフラッシュメモリのECC動作を示すタイミングチャートである。
【
図7】比較例のフラッシュメモリの連続読出し動作のタイミングチャートを示す図である。
【
図8】本発明の実施例に係るフラッシュメモリの連続読出し動作のタイミングチャートを示す図である。
【
図9】比較例のフラッシュメモリにおいて連続読出し動作中に中断が生じたときのタイミングチャートを示す図である。
【
図10】本実施例のフラッシュメモリにおいて連続読出し動作中に中断が生じたときのタイミングチャートを示す図である。
【
図11】本発明の第2の実施例に係るフラッシュメモリの連続読出し動作のタイミングチャートを示す図である。
【
図12】本発明の第2の実施例に係るフラッシュメモリにおいて連続読出し動作中に中断が生じたときのタイミングチャートを示す図である。
【発明を実施するための形態】
【0019】
次に、本発明の実施の形態について説明する。本発明に係る半導体記憶装置は、オフチップECC機能を有するNAND型フラッシュメモリに関する。本実施の形態に係るフラッシュメモリは、NAND型のメモリセルアレイを搭載するNANDチップと、ECC機能を搭載するECCチップとを含み、両チップは、ECCに関するデータを専用ポートを介して高速で転送することが可能である。ある態様では、フラッシュメモリは、積層された複数のNANDチップと1つのECCチップとを含み、複数のNANDチップおよびECCチップが1つのパッケージ内に収容される。
【実施例】
【0020】
次に、本発明の第1の実施例について図面を参照して詳細に説明する。
図3は、本発明の実施例に係るフラッシュメモリの概略構成を示す図である。本実施例に係るフラッシュメモリ100は、NANDチップ200と、NANDチップ200に電気的に接続されたECCチップ300とを含んで構成される。
【0021】
NANDチップ200は、ここには詳細を示さないが、典型的に、NAND型のメモリセルアレイおよび周辺回路を含む。周辺回路は、行デコーダ、列デコーダ、ページバッファ/センス回路、インターフェース回路、コントローラ、内部電圧生成回路などを含み、コントローラは、入力されたコマンドに応じて読出し、プログラム、消去等の動作を制御する。メモリセルアレイは、複数のブロックを含み、各ブロックには複数のNANDストリングが形成される。NANDストリングは、基板表面に2次元的に形成されてもよいし、基板表面上に3次元的に形成されてもよい。また、メモリセルは、1ビット(2値データ)を記憶するSLCタイプでもよいし、多ビットを記憶するタイプであってもよい。
【0022】
NANDチップ200は、ECCチップ300とのインターフェースとして、SPI用の入出力端子210(#CS、CLK、DI、DO、#WP、#HOLD)と、ECC専用の入出力端子220(VALID、CK、DATA)とを含む。”#”は、ローアクティブを示す。#CSは、チップをイネーブルまたはディスエーブルするためのチップセレクト信号を受け取る端子、CLKは、シリアルクロック信号を受け取る端子、DIは、シリアルデータを入力する端子、DOは、シリアルデータを出力する端子、#WPは、ステータスレジスタを書込みから保護するための信号を受け取る端子、#HOLDは、チップをホールドするための信号を受け取る端子である。NANDチップ200は、SPI用の入出力端子210を介して、シリアルクロック信号CLKに同期してコマンド、アドレス、データを受け取り、あるいはシリアルクロック信号CLKに同期してデータを出力する。
【0023】
ECC専用の入出力端子220として、VALIDは、NANDチップ200とECCチップ300間のデータ転送が有効か否かを示すVALID信号を入出力する端子、CKは、データ転送およびECC処理に使用されるクロック信号CKを出力する端子、DATAは、NANDチップ200とECCチップ300間のデータを入出力する端子である。ここで留意すべきことは、SPI用のDO端子/DI端子のビット幅m(データ転送幅)は、例えば、×1、×4または×8であるが、ECC専用のDATA端子のビット幅nは、SPI用のDO端子/DI端子のビット幅mよりも大きく構成することができ(n>m)、例えば、ビット幅nは、×32である。それ故、NANDチップ200とECCチップ300間のデータ転送時間は、クロック信号CKとクロック信号CLKの周波数が同一であれば、SPIによるデータ転送時間よりもn/m倍だけ早くなる。
【0024】
なお、ここには図示しないがNANDチップ200は、SPI用の入出力端子210の他にもONFiのインターフェースを備えることができる。ONFiのインターフェースは、CLE(コマンドラッチイネーブル)、ALE(アドレスラッチイネーブル)、#WE(ライトイネーブル)等の外部制御端子とI/Oなどの入出力端子を備える。
【0025】
ECCチップ300は、NANDチップ200とのインターフェースとして、SPI用の入出力端子310(#CS、CLK、DI、DO、#WP、#HOLD)と、ECC専用の入出力端子320(VALID、CK、DATA)とを含む。ECCチップ300のSPI用の入出力端子310は、NANDチップ200のSPI用の入出力端子210の対応する端子にそれぞれ電気的に結合され、ECC専用の入出力端子320は、NANDチップ200のECC専用の入出力端子220の対応する端子にそれぞれ電気的に結合される。
【0026】
ECCチップ300はさらに、コントローラチップ400とのインターフェースとして、SPI用の入出力端子330(#CS、CLK、DI、DO、#WP、#HOLD)を含む。入出力端子330は、コントローラチップ400のSPI用の入出力端子410の対応する端子に電気的に結合される。入出力端子310(#CS、CLK、DI、DO、#WP、#HOLD)の各々の端子は、内部配線等によって、入出力端子330(#CS、CLK、DI、DO、#WP、#HOLD)の各々の端子にそれぞれ電気的に結合されている。すなわち、入出力端子310および入出力端子330は、NANDチップ200とコントローラチップ400との接続のために物理的に離間して配置されるが、電気的には、入出力端子310と入出力端子330は、NANDチップ200およびコントローラチップ400に共通であり、こうした接続は、NANDチップ200のSPI用の入出力端子210がコントローラチップ400のSPI用の入出力端子410に接続されていることに等しい。
【0027】
図4(A)は、本実施例のフラッシュメモリの要部の構成を示す図、
図4(B)は、比較例としてのフラッシュメモリの要部の構成を示す図である。比較例のNANDチップ200、200_Xは、メモリセルアレイから読み出されたデータを保持したり、あるいはメモリセルアレイにプログラムするためのデータを保持するページバッファ/センス回路を含み、ページバッファ/センス回路は、データを保持するために2段のラッチL1、L2を備えている。ラッチL1、L2がそれぞれキャッシュC0、C1を含み、ラッチL1とラッチL2とは、キャッシュC0、C1単位で双方向のデータ転送が可能である。ラッチL1、L2は、それぞれ1ページ分のデータ(例えば、4KB)を保持し、キャッシュC0、C1は、1/2ページ分のデータ(例えば、2KB)を保持し、キャッシュC0は、セクタS0~S3の4つのセクタのデータを保持し(例えば、1つのセクタは512バイト)、キャッシュC1は、セクタS4~S7の4つのセクタのデータを保持する。
【0028】
例えば、NANDチップ200_Xにおいてページの連続読出し動作が行われるとき、メモリセルアレイから読み出されたページのデータがラッチL1のキャッシュC0、C1に保持され、次に、ラッチL1のキャッシュC0、C1に保持されたデータがキャッシュ単位でラッチL2のキャッシュC0、C1に転送される。ラッチL1からラッチL2への転送後、メモリセルアレイから次のページが読み出され、次のページのデータがラッチL1のキャッシュC0、C1に保持され、これと並行して、ラッチL2のキャッシュC0、C1に保持されたデータがECCチップ300に転送される。
【0029】
これに対し、本実施例のNANDチップ200では、ラッチL2がキャッシュC1のデータサイズで構成され、つまり、ラッチL2は、ラッチL1のキャッシュC0に対応するキャッシュC0を備えていない。ページの連続読出し動作が行われるとき、メモリセルアレイから読み出されたページのデータがラッチL1のキャッシュC0、C1に保持され、ラッチL1のキャッシュC1に保持されたデータがラッチL2のキャッシュC1に転送され、その後、ラッチL1のキャッシュC0に保持されたデータとラッチL2のキャッシュC1に保持されたデータが1ページ分のデータとしてECCチップ300に転送される。
【0030】
ECCチップ300は、NANDチップ200から受け取ったデータの誤り検出および訂正を行い、ECCチップ300がキャッシュC0に対応する先頭アドレスのデータをコントローラチップ400に出力することに応答してNANDチップがメモリセルアレイから次のページの読出しを行い、読み出したデータをラッチL1に保持する。キャッシュC0に対応する先頭アドレスのデータをコントローラチップ400に出力する時点で、キャッシュC0のデータはECC処理を終えており、また、ラッチL1のキャッシュC1のデータはラッチL2に転送されているため、ラッチL1に次のページのデータの上書きが可能である。
【0031】
本実施例では、NANDチップ200のページバッファ/センス回路のラッチL2のデータサイズ(記憶容量)を、NANDチップ200_Xのページバッファ/センス回路のラッチのラッチL2の半分にすることでNANDチップ200の小型化、省スペース化を図ることができる。
【0032】
図5は、NANDチップ200およびECCチップ300の内部構成を示すブロック図である。但し、NANDチップ200にはECC動作に関連する構成が示され、全ての構成は示されていないことに留意すべきである。
【0033】
NANDチップ200は、ラッチL1、L2を含むページバッファ/センス回路230と、クロック信号CKを生成する発振器OSCと、ECC専用の入出力端子220を介してECCチップ300との間のデータ転送を制御するインターフェース回路(以下、ECC_IF)240と、SPI用の入出力端子210を介してコントローラチップ300との間のデータ転送を制御するインターフェース回路(以下、CTL_IF)250と、ECC制御部260と、入出力端子210から入力されたコマンドおよびアドレスを受け取り、コマンドを解読するデコーダやアドレスの保持・カウントを行うアドレスカウンタを含み、コマンドのデコード結果に基づき各部を制御するコントローラ270と、ページバッファ/センス回路230の列アドレスを制御するアドレス制御部280とを含む。
【0034】
ラッチL1は、キャッシュC0、C1を含み、ラッチL2は、キャッシュC1のみを含み、ラッチL1とラッチL2とは、キャッシュC1のデータを双方向で転送が可能である。ラッチL1は、1ページ分のデータ(例えば、4KB)を保持し、キャッシュC0、C1は、1/2ページ分のデータ(例えば、2KB)を保持する。ラッチL2のキャッシュC1は、1/2ページ分のデータ(例えば、2KB)を保持する。キャッシュC0は、セクタS0~S3の4つのセクタのデータを保持し(例えば、1つのセクタは512バイト)、キャッシュC1は、セクタS4~S7の4つのセクタのデータを保持する。
【0035】
発振器OSCは、データ転送時間およびECC動作の各部の処理時間に最適となる周波数のクロック信号CKを生成する。NANDチップ200とECCチップ300との間のDATA端子によるデータ転送は、クロック信号CKに同期して行われ、ECCチップ300のECCコア360は、クロック信号CKに同期してECC処理を実行する。クロック信号CKの周波数は、SPIによるクロック信号CLKの周波数と無関係であり、クロック信号CLKの周波数よりも高く設定することができる。
【0036】
ECC_IF240は、発振器OSCで生成されたクロック信号CKを受け取り、このクロック信号CKをCK端子を介してECCチップ300のCK端子に供給する。ECC_IF240は、読出し動作時にラッチL2に保持された読出しデータをクロック信号CKに同期したタイミングでDATA端子からECCチップ300のDATA端子に出力し、また、プログラム動作時にECCチップ300で生成されたパリティデータをクロック信号CKに同期したタイミングでDATA端子から受け取る。
【0037】
ECC制御部260は、読出し動作時、VALID信号をECC_IF240に供給する。VALID信号は、ECC専用の入出力端子220、320間のデータ転送が有効となる期間を規定し、この期間は、キャッシュ単位のデータ転送を可能にする。ECC_IF240は、VALID信号で規定された期間中、例えば、VALID信号がハイレベルの期間中、NANDチップ200のDATA端子からECCチップのDATA端子にデータを転送する。また、ECC_IF240は、ECCチップ300のNAND_IF340がNANDチップ200からのデータを受け取ることができるようにするため、VALID端子からECCチップ300のVALID端子にVALID信号を出力する。
【0038】
CTL_IF250は、入出力端子210を介してのデータの入出力を制御する。CTL_IF250は、コントローラチップ400から出力されたコマンド、アドレス、データを受け取り、コマンドおよびアドレスをコントローラ270に提供し、データをラッチL2またはL1に保持する。
【0039】
コントローラ270は、入力されたコマンドをデコードし、デコード結果に基づき読出し、プログラム、消去等の動作を制御する。また、コントローラ270は、デコード結果に基づき読出しまたはプログラムを識別するコントロールフラグをECC制御部260に提供したり、NANDチップ200がビジー状態かスタンバイ状態かを示すステータス信号をCTL_IF250に提供する。さらにコントローラ270は、CTL_IF250から入力された列アドレスをカウントするアドレスカウンタを含み、アドレスカウンタのアドレスをアドレス制御部280に提供する。
【0040】
ECC制御部260は、ECC処理を制御するためのロジックおよびECC処理のためのアドレスの保持およびカウントを行うアドレスカウンタを含む。ECC制御部260は、ECCチップ300のECC制御部370と同様に構成され、つまり、ECCチップ300がどのようなECC動作を行っているのか認識できるようにするためECC制御部370と同期するECC制御部260を含んでいる。なお、コントロールフラグは、ECCコア360によるエンコーダまたはデコーダの切替えのために使用される。
【0041】
アドレス制御部280は、コントローラ270から出力される列アドレスとECC制御部260から出力されるECC用の列アドレスを受け取り、NANDチップ200の動作に応じて選択された列アドレスをページバッファ/センス回路230に提供する。ラッチL2から読み出すデータの位置またはラッチL2に書込むデータの位置は列アドレスによって制御される。
【0042】
ECCチップ300は、RAM0、RAM1と、ECC専用の入出力端子320を介してNANDチップ200との間のデータ転送を制御するインターフェース回路(以下、NAND_IF)340と、SPI用の入出力端子330、310を介してNANDチップ200およびコントローラチップ400との間のデータの入出力を制御するインターフェース回路(以下、CTL_IF)350と、エラー検出・訂正を行うECCコア360と、ECCコア360を制御するためのロジックおよびECC処理のためのアドレスの保持・カウントを行うアドレスカウンタを含むECC制御部370と、入出力端子310、330から入力されたコマンド、アドレス、データを受け取るコントローラ380と含む。
【0043】
ここで留意すべきは、ECCチップ300には、NANDチップ200がどのような動作を行っているのか認識できるように、NANDチップ200のコントローラ270と同様の入力されたコマンドおよびアドレスを受け取り、コマンドを解読するデコーダやアドレスの保持・カウントを行うアドレスカウンタを含んだコントローラ380が搭載されている。また、SPI用の入出力端子330は、SPI用の入出力端子310の対応する端子に電気的に結合されているため、コントローラ400からのコマンド、アドレス、データは、ECCチップ300およびNANDチップ200の双方に供給される。
【0044】
RAM0、RAM1は、それぞれ1/2ページ分のデータ、例えば、RAM0は、セクタS0~S3のデータを保持し、RAM1は、セクタS4~S7のデータを保持する。NANDチップ200において読出し動作が行われるとき、NAND_IF340は、VALID信号がハイアクティブの期間中、ECC専用の入出力端子220および320を介して、NANDチップ200から1ページ分のデータをセクタ単位で順次受け取る。受け取られたデータは、セレクタSEL1によって選択されたRAM0またはRAM1にData0(例えば、セクタS0~S3)またはData1(例えば、セクタS4~S7)として格納される。
【0045】
ECC制御部370は、ECCコア360が読出しデータのエラー検出・訂正を行うとき、セレクタSEL3によってRAM0またはRAM1のアドレスを選択し、選択したRAM0またはRAM1から読み出したデータをECCコア360に提供する。ECCコア360は、ECC制御部370の制御下において、RAM0またはRAM1から読み出されたデータについて、シンドローム計算、ユークリッド互除計算、エラー位置探索をパイプラインで処理し、探索されたエラー位置に応じてエラーを訂正するため、セレクタSEL4によって選択されたRAM0またはRAM1から読み出されたデータのエラービットを反転し、訂正されたデータは、CTL_IF350によって入出力端子330を介してコントローラチップ400に出力される。
【0046】
また、プログラム動作が行われるとき、コントローラチップ400からのコマンド、アドレス、データは、NANDチップ200に加えてECCチップ300にも入力される。コントローラ380は、コマンドのデコード結果に基づきプログラム動作であることを認識し、SPI用の入出力端子330から入力されたデータをRAM0およびRAM1に格納する。ECC制御部370は、コントローラ380からのコントロールフラグによりプログラム動作を認識し、ECCコア360のエンコーダを動作させる。
【0047】
ECCコア360は、ECC制御部370の制御下において、RAM0またはRAM1に保持された入力データを読出し、読み出したデータをセクタ単位で符号化し、各セクタのパリティデータを生成する。生成されたパリティデータは、NAND_IF340を介してDATA端子からNANDチップ200のDATA端子に転送される。NANDチップ200は、コントローラチップ400から受け取ったデータをラッチL2に保持しており、ECC_IF240を介してECCチップ300から受け取った各セクタのパリティデータは、ECC制御部260によって指定される列アドレスに従いラッチL1に保持され、その後、コントローラ270は、ラッチL1に保持されたデータをメモリセルアレイにプログラムする。
【0048】
次に、本実施例のフラッシュメモリ100のECC動作の詳細について説明する。
図6は、ECCコア360により読出しデータをデコードするときのタイミングチャートを示している。NANDチップ200が読出しコマンドに応じて読出し動作を行うとき、時刻t0で、NANDチップ200のECC_IF240がラッチL1に保持されたセクタS0のメインデータとパリティデータPtとをクロック信号CKに同期してDATA端子から送信し、ECCチップ300のNAND_IF340がDATA端子からセクタS0のメインデータとパリティデータPtの受け取りを開始し、時刻t1でセクタS0のメインデータとパリティデータPtの受け取りが終了する。時刻t0と時刻t1の転送時間は、ECC専用のDATA端子のデータ幅およびクロック信号CKの周波数がECC処理のために最適化されているので、SPI用の入出力端子210を介してデータを転送する時間よりも短くすることができる。同様に、時刻t2でセクタS1のメインデータとパリティデータPtの転送が終了し、時刻t3でセクタS2のメインデータとパリティデータPtの転送が終了し、時刻t4でセクタS3のメインデータとパリティデータPtの転送が終了する。
【0049】
NANDチップ200から受信したセクタS0~S3のデータは順次RAM0に格納される。RAM0へのセクタS0のデータの格納と並行して、ECCコア360は、セクタS0のシンドロームの計算を開始する。ある態様では、セクタS0のシンドローム計算が時刻t1で終了するように、DATA端子のビット幅やクロック信号CKの周波数が設定される。ECCコア360は、シンドローム計算後、セクタS1の受信中に、セクタS0のエラー位置多項式計算、エラー位置探索を行う。
【0050】
時刻t5で、ECCコア360は、クロック信号CLKに同期したセレクタSEL4、セレクタSEL5により選択されたRAM0からセクタS0のメインデータを読出し、ExORでセクタS0のメインデータのビットエラーを反転し、エラー訂正したセクタS0のメインデータをSPI用のクロック信号CLKに同期して入出力端子330のDO端子からコントローラチップ400に出力する。ECCコア360は、時刻t6、t7、t8で、セクタS1、S2、S3のエラー訂正を行い、エラー訂正されたセクタS1、S2、S3のメインデータを入出力端子330を介してコントローラチップ400の順次出力する。コントローラチップ400のCPU_IFは、時刻t6、t7、t8、t9で受け取ったセクタS0、S1、S2、S3のメインデータをホスト装置へ転送する。なお、ここには図示しないが、セクタS3の転送後、セクタS4~S7のデータ転送および誤り検出および訂正についても、上記と同様にして行われる。
【0051】
次に、本実施例のフラッシュメモリのページの連続読出し動作について説明する。
図7は、
図4(B)に示す比較例のフラッシュメモリ(ラッチL1、L2がそれぞれキャッシュC0、C1を備えている)の連続読出し動作のタイミングチャートであり、
図8は、本実施例のフラッシュメモリ(ラッチL2がキャッシュC1のみを備えている)の連続読出し動作のタイミングチャートである。
【0052】
図7、
図8において、上側半分にNANDチップ200の動作を示し、下側半分がECCチップ300のタイミングを示す。比較例のフラッシュメモリでは、NANDチップ200は、各ページの最終アドレスのデータを出力したら次のページのアレイ読出しを開始する。例えば、DATA端子からページP0のセクタS7の最終データが転送されたことに応答してページP2のアレイ読出しが開始される。ページの最終アドレスは、ECC制御部260に含まれるアドレスカウンタがクロック信号CKのトグル回数をカウントすることによって検出される。なお、連続読出しは、ラッチL2にページP0のデータが転送された後のページP1の読出しから実質的に開始される。
【0053】
NANDチップ200は、VALID信号がハイレベルの期間中、各ページのセクタS0~S7のデータをキャッシュ単位でECCチップ300に転送し、ECCチップ300がキャッシュ単位でセクタS0~S3またはセクタS4~S7のデータをDO端子から出力すると、このタイミングに応答してNANDチップ200が次のページのデータをキャッシュ単位でECCチップ300に転送する。NANDチップ200からECCチップ300にデータを転送するタイミングは、ECCチップ300がコントローラチップ400にキャッシュ単位の最終アドレスを出力したタイミングとなる。例えば、NANDチップ200は、ECCチップ300がページP0のセクタS3の最終データを出力したことに応答してページP1のセクタS0~S3のデータ転送を開始する。
【0054】
ECCチップ300がコントローラチップ400に対してキャッシュ単位の最終アドレスを出力するタイミングは、NANDチップ200にも接続されているクロック信号CLKのトグル回数をNANDチップ200内のコントローラ270のアドレスカウンタを使用して認識すればよい。NANDチップ200のコントローラ270内のADDカウンタは、ECCチップ300を搭載しないときや誤り訂正をしないときにはCTL_IF250から出力するデータを制御するために使用するが、誤り訂正をするときにはCTL_IF250からデータを出力しないので、上記の用途に使用することができる。
【0055】
一方、本実施例のフラッシュメモリでは、メモリセルアレイのアレイ読出しは、
図8に示すように、ECCチップ300の端子DOからページの先頭アドレスのデータが出力されたことに応答して行われる。例えば、端子DOからページP0のセクタS0の先頭アドレスのデータが出力されると、NANDチップ200は、ページP1のアレイ読出しを開始する。
【0056】
NANDチップ200は、メモリセルアレイから読み出されたページのデータをラッチL1のキャッシュC0、C1に保持し、次いで、ラッチL1のキャッシュC1のセクタS4~S7のデータをラッチL2のキャッシュC1に転送し、VALID信号がハイレベルの期間中、ラッチL1のキャッシュC0に保持されたセクタS0~S3のデータとラッチL2のキャッシュC1に保持されたセクタS4~S7のデータとを1ページ分のデータとしてキャッシュ単位でECCチップ300に転送する。NANDチップ200からECCチップ300にデータを転送するタイミングは、比較例の場合と同じであり、ECCチップ300がコントローラチップ400にキャッシュ単位の最終アドレスのデータを出力したタイミングとなる。例えば、NANDチップ200は、ECCチップ300がページP0のセクタS3の最終アドレスのデータを出力したことに応答してページP1のセクタS0~S3のデータ転送を開始する。
【0057】
ECCチップ300は、セクタ単位で誤り検出および訂正を行い、その後、DO端子から訂正したデータを出力する。NANDチップ200は、ECCチップ300がページの先頭アドレスのデータを出力すると、これに応答して次のページのアレイ読出しを開始し、読み出したデータをラッチL1に保持する。次のページのアレイ読出しを開始するとき、ラッチL1のキャッシュC1のデータがラッチL2に転送されているため、ラッチL1に次のページのデータが上書きされても問題はない。
【0058】
NANDチップ200のコントローラ270のアドレスカウンタとECCチップ300のコントローラ380のアドレスカウンタは同期しており、NANDチップ200のコントローラ270は、当該アドレスカウンタによってカウントされた列アドレスにより、ECCチップ300のDO端子から出力されるページの先頭アドレスのタイミングを知ることができる。
【0059】
次に、本実施例のフラッシュメモリの連続読出しを行うときの制約について説明する。ここで、アレイ読出しの時間をtARRAY、NANDチップ200が1セクタ分のデータを出力する時間をtDOUT1、ECCチップ300が1セクタ分のデータを出力する時間をtDOUT2、NANDチップ200が1セクタ分のデータを出力してから、そのセクタの誤り検出および訂正が終わるまでのレイテンシをtLTCYとする。
【0060】
比較例のフラッシュメモリでは、数式(1)、(2)の制約が生じる。
tDOUT1+tLTCY<tDOUT2×4 ・・・(1)
tDOUT1<tDOUR2 ・・・(2)
一方、本実施例のフラッシュメモリでは、
図8に示すように、数式(1)、(2)の制約に加え、数式(3)、(4)の制約が生じする。
tARRAY+tDOUT1+tLTCY<tDOUT2×8 ・・・(3)
tARRAY+tDOUT1×4<tDOUT2×8 ・・・(4)
【0061】
ここで、tARRAY=16us、1つのセクタのデータが512バイト、ECC専用のDATA端子のビット幅を16ビット、クロック信号CKの周波数を80MHzとすると、tDOUT1=4us、tLTCY=4usとなる。このとき、本実施例のフラッシュメモリの各制約は次のようになる。
(1)より、tDOUT2>(4+4)/4=2us
(2)より、tDOUT2>4us
(3)より、tDOUT2>(16+4+4)/8=3us
(4)より、tDOUT2>(16+4×4)/8=4us
となる。
【0062】
この場合、tDOUT2が4usよりも大きくなるように、クロック信号CLKの周波数および/またはDO端子のビット幅が設定される。なお、tARRAYが1キャッシュ(4つのセクタ)分のデータを出力する時間よりも短ければ、追加の制約は生じない。
【0063】
図9は、比較例のフラッシュメモリのページの連続読出し中に中断が生じた場合のタイミングチャート、
図10は、本実施例のフラッシュメモリのページの連続読出し中に中断が生じた場合のタイミングチャートである。例えば、ECCチップ300のクロック信号CLKの停止などにより連続読出し中にDO端子からのデータ出力が中断することがある(DO端子に中断箇所を示す)。このような中断が発生した場合、本実施例のフラッシュメモリでは、ECCチップ300のRAM0、RAM1がNANDチップ200から転送されたデータを保持しており、また、ECCチップ300がページの先頭アドレスのデータを出力するまでは、次のページのアレイ読出しが行われないためラッチL1、L2にはその前のページのデータが保持されている。従って、中断によりデータが消失されることはなく、また、NANDチップ200とECCチップ300は、読出しを行っているページのアドレスを共有しているので、中断後に連続読出しを正しく再開することができる。
【0064】
次に、本発明の第2の実施例について説明する。第1の実施例は、NANDチップ200のページバッファ/センス回路のラッチL2の記憶容量(データサイズ)をキャッシュC1に半減する構成を示したが、第2の実施例では、ラッチL2のキャッシュC1の記憶容量をさらに半減させる。すなわち、本実施例のラッチL2のキャッシュC1は、1/4ページ分のデータを保持する。例えば、1ページが4KBであれば、ラッチL2のC1は、1KBである。ラッチL2のキャッシュC1のデータサイズは、ラッチL1のキャッシュC1のデータサイズの半分になるため、ラッチL2のキャッシュC1がラッチL1のキャッシュC1から一度に受け取るデータは、1/4ページ分のデータ(2つのセクタ分のデータ)となる。つまり、ラッチL1のキャッシュC0がセクタS0~S3のデータを保持し、ラッチL1のキャッシュC1がセクタS4~S7のデータを保持する。次にラッチL1のキャッシュC0、キャッシュC1が保持したセクタS0~S5の3/4ページ分のデータがECCチップ300に転送され、ラッチL1のキャッシュC1に格納されたセクタS6、S7のデータがラッチL2のキャッシュC1に転送される。ラッチL2のキャッシュC1がセクタS6、S7のデータを保持し、ラッチL2のキャッシュC1が保持したセクタS6、S7の1/4ページ分のデータがECCチップ300に転送される。
【0065】
第1の実施例では、NANDチップ200とECCチップ300間のデータ転送は、キャッシュ単位(セクタS0~S3/セクタS4~S7)で行われたが、第2の実施例では、1/4ページ単位または2つのセクタ単位でデータ転送が行われる。それ故、NANDチップ200のECC制御部260は、2つのセクタ単位または1/4ページ単位でデータ転送期間を規定するVALID信号を生成する。
【0066】
図11に、第2の実施例のフラッシュメモリの連続読出し動作のタイミングチャートを示す。同図に示すように、本実施例の連続読出しでは、メモリセルアレイのアレイ読出しは、第1の実施例のときと同様に、ECCチップ300のDO端子からページの先頭アドレスのデータが出力されたことに応答して行われ、NANDチップ200からECCチップ300へのデータ転送は、ECCチップ300のDO端子から2つのセクタ単位の先頭アドレスのデータが出力されたことに応答して行われる。例えば、ECCチップ300がDO端子からページP0のセクタS0の先頭アドレスのデータを出力することに応答してページP1のアレイ読み出しが行われ、次いで、ページP0のセクタS2の先頭アドレスのデータが出力されることに応答してNANDチップ200からECCチップ300のページP1の2つのセクタS0、S1のデータ転送が開始される。
【0067】
次に、第2の実施例のフラッシュメモリの連続読出しを行うときの制約について説明する。1つのキャッシュが4つのセクタから構成されると仮定し、アレイ読出しの時間をtARRAY、NANDチップ200が1セクタ分のデータを出力する時間をtDOUT1、ECCチップ300が1セクタ分のデータを出力する時間をtDOUT2とする。数式(1)は、第1の実施例のときの制約であり、第2の実施例の制約は、数式(2)に示される。
tARRAY+tDOUT1×4<tDOUT2×8 ・・・(1)
tARRAY+tDOUT1×6<tDOUT2×8 ・・・(2)
【0068】
ここで、tARRAY=16us、1つのセクタのデータが512バイト、ECC専用のDATA端子のビット幅を16ビット、クロック信号CKの周波数を80MHzとすると、tDOUT1=4usとなる。このとき、数式(2)の制約は次のようになる。
tDOUT2>(16+4×6)/8=5us
この制約は、例えば、入出力端子×4のSDRタイプの製品であれば、200MHzのシリアルクロック信号の周波数までサポートできることを意味する。
【0069】
図12は、第2の実施例のフラッシュメモリのページの連続読出し中に中断が生じた場合のタイミングチャートである。例えば、ECCチップ300の読出しクロック信号CLKの停止により読出しが中断されても、データが上書き等によって消失されることはなく、中断後に連続読出しを正しく再開することができる。
【0070】
このように第2の実施例によれば、ページバッファ/センス回路のラッチL2のデータサイズをさらに削減することで、NANDチップ200のチップサイズを縮小することができ、ひいてはフラッシュメモリの小型化、省スペース化を図ることができる。
【0071】
なお、上記実施例では、1つのページが8つのセクタ(1つのキャッシュが4つのセクタ)から構成される例を示したが、これは一例であり、例えば1つのページが4KB(1つのキャッシュが2KB)であるとき、1つのセクタが512バイトであれば、1つのページが8つのセクタから構成されるが、1ページが2KBであれば、1つのページが4つのセクタから構成されるようにしてもよい。この場合にも、ECCチップ300は、セクタ単位でECC処理を行う(プログラム動作時、セクタ毎にパリティデータが生成され、読出し動作時、パリティデータに基づきセクタの誤り検出および訂正が行われる)。
【0072】
本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0073】
100:フラッシュメモリ
200:NANDチップ
210:SPI用の入出力端子
220:ECC専用の入出力端子
300:ECCチップ
310:SPI用の入出力端子
320:ECC専用の入出力端子
400:コントローラチップ
410:SPI用の入出力端子
【要約】
【課題】 エラー検出・訂正の処理時間の高速化を図りつつ小型化が可能な半導体記憶装置を提供する。
【解決手段】 本発明のフラッシュメモリ100は、NANDチップ200とECCチップ300とを有する。NANDチップ200は、メモリセルアレイと、ラッチL1およびラッチL2を含むページバッファ/センス回路と、ECCチップ300との間でデータ転送が可能な専用の入出力端子220とを有する。ラッチL1は、キャッシュC0、C1を含み、ラッチL2は、キャッシュC1のみを含む。ラッチL1のキャッシュC0のデータとラッチL2のキャッシュC1のデータがECCチップ300に転送され、ECCチップ300から先頭アドレスのデータが出力されることに応答してメモリセルアレイから次のページが読み出され、読み出したデータがラッチL1に保持される。
【選択図】
図3