JP2010009141A - データ転送方法 - Google Patents
データ転送方法 Download PDFInfo
- Publication number
- JP2010009141A JP2010009141A JP2008164949A JP2008164949A JP2010009141A JP 2010009141 A JP2010009141 A JP 2010009141A JP 2008164949 A JP2008164949 A JP 2008164949A JP 2008164949 A JP2008164949 A JP 2008164949A JP 2010009141 A JP2010009141 A JP 2010009141A
- Authority
- JP
- Japan
- Prior art keywords
- data
- buffer
- ecc
- parity
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
【課題】動作性能を向上出来るデータ転送方法を提供すること。
【解決手段】NAND型フラッシュメモリ10からデータをページ単位で第1バッファ12に読み出すステップS10と、前記第1バッファ12に読み出したデータのうち、パリティを第2バッファ21に転送するステップS12と、前記パリティを前記第2バッファ21に転送した後、前記第1バッファ12に読み出したデータのうち、メインデータを前記第2バッファ21に転送するステップS14〜S17と、前記パリティを用いて、前記第2バッファ21に転送された前記メインデータのエラー訂正処理を行うステップS18と、前記エラー訂正処理の行われた前記メインデータを、第3バッファ31に転送するステップS19とを具備する。
【選択図】図5
【解決手段】NAND型フラッシュメモリ10からデータをページ単位で第1バッファ12に読み出すステップS10と、前記第1バッファ12に読み出したデータのうち、パリティを第2バッファ21に転送するステップS12と、前記パリティを前記第2バッファ21に転送した後、前記第1バッファ12に読み出したデータのうち、メインデータを前記第2バッファ21に転送するステップS14〜S17と、前記パリティを用いて、前記第2バッファ21に転送された前記メインデータのエラー訂正処理を行うステップS18と、前記エラー訂正処理の行われた前記メインデータを、第3バッファ31に転送するステップS19とを具備する。
【選択図】図5
Description
この発明は、データ転送方法に関する。例えば、エラー訂正機能を有する不揮発性半導体メモリにおけるデータ転送方法に関する。
従来、ECC(Error Checking and Correcting)機能を有する半導体メモリが知られている。ECC機能は、読み出したデータの中にエラーが存在するか否かを検査し、もしエラーが存在すれば、そのエラーを正しく訂正する機能である(例えば特許文献1参照)。
また従来、不揮発性の半導体メモリとして、NAND型フラッシュメモリが広く知られている。NAND型フラッシュメモリでは、ある確率でエラーが発生するため、ECC機能を搭載することが重要である。
しかしながら、大容量化が要求されるNAND型フラッシュメモリにおいては、従来のECC機能であると、エラー訂正処理による待ち時間が長くなり、データの読み出し及び書き込み速度が低下するという問題があった。
米国特許7,290,082号明細書
この発明は、動作性能を向上出来るデータ転送方法を提供する。
この発明の一態様に係るデータ転送方法は、NAND型フラッシュメモリからデータをページ単位で第1バッファに読み出すステップと、前記第1バッファに読み出したデータのうち、パリティを第2バッファに転送するステップと、前記パリティを前記第2バッファに転送した後、前記第1バッファに読み出したデータのうち、メインデータを前記第2バッファに転送するステップと、前記パリティを用いて、前記第2バッファに転送された前記メインデータのエラー訂正処理を行うステップと、前記エラー訂正処理の行われた前記メインデータを、第3バッファに転送するステップとを具備する。
本発明によれば、動作性能を向上出来るデータ転送方法を提供出来る。
以下、この発明の実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
[第1の実施形態]
この発明の第1の実施形態に係るデータ転送方法について、図1を用いて説明する。図1は、本実施形態に係るデータ転送方法を実現するメモリシステムのブロック図である。
この発明の第1の実施形態に係るデータ転送方法について、図1を用いて説明する。図1は、本実施形態に係るデータ転送方法を実現するメモリシステムのブロック図である。
<メモリシステムの全体構成>
図示するように、本実施形態に係るメモリシステム1は、大まかにはNAND型フラッシュメモリ2、RAM部3、及びコントローラ部4を備えている。そしてNAND型フラッシュメモリ2、RAM部3、及びコントローラ部4は、同一の半導体基板上に形成され、1つのチップに集積されている。以下、各ブロックの詳細について説明する。
図示するように、本実施形態に係るメモリシステム1は、大まかにはNAND型フラッシュメモリ2、RAM部3、及びコントローラ部4を備えている。そしてNAND型フラッシュメモリ2、RAM部3、及びコントローラ部4は、同一の半導体基板上に形成され、1つのチップに集積されている。以下、各ブロックの詳細について説明する。
<NAND型フラッシュメモリ2>
NAND型フラッシュメモリ2は、メモリシステム1の主記憶部として機能する。図示するようにNAND型フラッシュメモリ2は、メモリセルアレイ10、ロウデコーダ11、ページバッファ12、電圧発生回路13、シーケンサ14、及びオシレータ15、16を備えている。
NAND型フラッシュメモリ2は、メモリシステム1の主記憶部として機能する。図示するようにNAND型フラッシュメモリ2は、メモリセルアレイ10、ロウデコーダ11、ページバッファ12、電圧発生回路13、シーケンサ14、及びオシレータ15、16を備えている。
メモリセルアレイ10は、データを保持可能な複数のメモリセルトランジスタを備えている。図2はメモリセルアレイ10の回路図である。図示するように、メモリセルアレイ10は大まかには第1領域17と第2領域18とを含む。第1領域17は、ユーザデータ等の正味のデータ(以下、メインデータと呼ぶ)を保持する。他方、第2領域18は第1領域17のスペア領域として用いられ、例えばエラー訂正用の情報(パリティ等)を保持する。
第1領域17及び第2領域18はそれぞれ、複数のメモリセルユニット19を備えている。メモリセルユニット19の各々は、例えば32個のメモリセルトランジスタMT0〜MT31と、選択トランジスタST1、ST2とを含んでいる。以下、メモリセルトランジスタMT0〜MT31を区別しない場合には、単にメモリセルトランジスタMTと呼ぶ。メモリセルトランジスタMTは、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層(例えば浮遊ゲート)と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを有する積層ゲート構造を備えている。なお、メモリセルトランジスタMTの個数は32個に限られず、8個や16個、64個、128個、256個等であってもよく、その数は限定されるものではない。また、メモリセルトランジスタMTは、窒化膜に電子をトラップさせる方式を用いたMONOS(Metal Oxide Nitride Oxide Silicon)構造であっても良い。
メモリセルトランジスタMTは、隣接するもの同士でソース、ドレインを共有している。そして、選択トランジスタST1、ST2間に、その電流経路が直列接続されるようにして配置されている。直列接続されたメモリセルトランジスタMTの一端側のドレインは選択トランジスタST1のソースに接続され、他端側のソースは選択トランジスタST2のドレインに接続されている。
同一行にあるメモリセルトランジスタMTの制御ゲートは、ワード線WL0〜WL31のいずれかに共通接続される。また同一行にある選択トランジスタST1、ST2のゲートは、それぞれセレクトゲート線SGD、SGSに共通接続されている。なお説明の簡単化のため、以下ではワード線WL0〜WL31を、単にワード線WLと呼ぶことがある。ワード線WL及びセレクトゲート線SGD、SGSは、第1領域17と第2領域18とで共通に用いられる。
第1領域17において同一列にある選択トランジスタST1のドレインは、ビット線BL0〜BLn(nは自然数)に共通接続される。また、第2領域18において同一列にある選択トランジスタST1のドレインは、ビット線BL(n+1)〜BLm(mは自然数)に共通接続される。ビット線BL0〜BLmについても、単にビット線BLと呼ぶことがある。選択トランジスタST2のソースはソース線SLに共通接続される。なお、選択トランジスタST1、ST2は必ずしも両方必要ではなく、メモリセルユニット19を選択出来るのであればいずれか一方のみが設けられていても良い。
上記構成において、同一のワード線WLに接続された複数のメモリセルトランジスタMTには一括してデータが書き込まれ、または読み出され、この単位をページと呼ぶ。更に、同一行にある複数のメモリセルユニット19は一括してデータが消去され、この単位をメモリブロックと呼ぶ。
各々のメモリセルトランジスタMTは、例えば、浮遊ゲートに注入された電子の多寡によるトランジスタの閾値電圧の変化に応じて、1ビットのデータを保持することが可能である。なお、閾値電圧の制御を細分化し、各々のメモリセルトランジスタMTに2ビット以上のデータを保持する構成としても良い。
図3は、図2に示すメモリセルアレイ10から読み出される、またはメモリセルアレイ10にプログラムされる1ページ分のデータを模式的に示し、ページバッファ12の構成にも対応する図である。
図示するように、第1領域17から読み出される、または第1領域17にプログラムされるメインデータは、例えば512バイトのサイズを有する4つのセクタ(第1セクタ〜第4セクタ)を含み、そのサイズは(512バイト×4)=2048バイト(=2Kバイト、但しKは1024)である。更に、第2領域18に対しては、例えば64バイトのデータがプログラムされ、また読み出される。エラー訂正用のパリティは、セクタ毎に例えば80ビットずつ用意される。従って、メインデータが4つのセクタを含む場合には、第2領域18に対応する64バイトのデータのうち、(80ビット×4)=320ビットがエラー訂正用のパリティである。
以上のように、1ページのデータサイズは(2048+64)バイトであり、このサイズのデータがメモリセルアレイ10に一括してプログラムされ、または読み出される。データは、同一のワード線WLに接続された全てのメモリセルトランジスタMTから読み出されても良い。この場合、第1領域17に接続されるビット線BLの数は16384本(n=16383)であり、第2領域に接続されるビット線BLの数は512本(m=16895)である。しかし、例えば偶数ビット線毎、または奇数ビット線毎にデータのプログラム及び読み出しが行われても良い。この場合は、ビット線BLの本数は倍となる。
引き続き図1に戻って、NAND型フラッシュメモリ2の構成について説明を続ける。ロウデコーダ11は、データのプログラム、読み出し、及び消去動作の際に、ワード線WL及びセレクトゲート線SGD、SGSを選択する。そして、ワード線WL及びセレクトゲート線SGD、SGSに対して、必要な電圧を印加する。
ページバッファ12はページサイズのデータを保持可能とされ、データのプログラム動作時には、RAM部3から与えられるデータを一時的に保持し、メモリセルアレイ10にデータを書き込む。他方、読み出し動作時には、メモリセルアレイ10から読み出されたデータを一時的に保持し、RAM部3へ転送する。そして図3に示すように、そのうちの一部の領域がメインデータ保持用として使用され、残りがパリティ等の保持用として使用される。
電圧発生回路13は、外部から与えられる電圧を昇圧または降圧することにより、データのプログラム、読み出し、及び消去に必要な電圧を発生する。そして発生した電圧を、例えばロウデコーダ11に供給する。電圧発生回路13で発生された電圧が、ワード線WLに印加される。
シーケンサ14は、NAND型フラッシュメモリ2全体の動作を司る。すなわち、コントローラ部4からプログラム命令(Program)、ロード命令(Load)、または消去命令(図示せず)を受けると、これに応答して、データのプログラム、読み出し、及び消去を実行するためのシーケンスを実行する。そして、このシーケンスに従って、電圧発生回路13やページバッファ12の動作を制御する。
オシレータ15は内部クロックICLKを生成する。すなわち、クロック生成器として機能する。そしてオシレータ15は、生成した内部クロックICLKをシーケンサ14に供給する。シーケンサ14は、この内部クロックICLKに同期して動作する。
オシレータ16は内部クロックACLKを生成する。すなわち、クロック生成器として機能する。そしてオシレータ16は、生成した内部クロックACLKをコントローラ部4やRAM部3へ供給する。内部クロックACLKは、コントローラ部4やRAM部3の動作の基準となるクロックである。
<RAM部3>
次に、引き続き図1を参照しつつ、RAM部3について説明する。RAM部3は、大まかにはECC部20、SRAM(Static Ramdom Access Memory)30、インターフェース部40、及びアクセスコントローラ50を備えている。以下、それぞれについて説明する。
次に、引き続き図1を参照しつつ、RAM部3について説明する。RAM部3は、大まかにはECC部20、SRAM(Static Ramdom Access Memory)30、インターフェース部40、及びアクセスコントローラ50を備えている。以下、それぞれについて説明する。
なお、本実施形態に係るメモリシステム1では、NAND型フラッシュメモリ2が主記憶部として機能し、RAM部3のSRAM30がバッファとして機能する。従って、NAND型フラッシュメモリ2からデータを外部に読み出す際には、まずNAND型フラッシュメモリ2のメモリセルアレイ10から読み出されたデータが、ページバッファ12を介してRAM部3のSRAM30に格納される。その後、SRAM30内のデータがインターフェース部40に転送されて、外部に出力される。他方、データをNAND型フラッシュメモリ2に記憶させる際には、まず外部から与えられたデータが、インターフェース部40を介してRAM部3内のSRAM30に格納される。その後、SRAM30内のデータがページバッファ12へ転送されて、メモリセルアレイ10に書き込まれる。
以下では、データがメモリセルアレイ10から読み出されてから、ページバッファ12を介してSRAM30に転送されるまでの動作を、データの“ロード(load)”と呼ぶ。また、SRAM30内のデータが、インターフェース部40内において後述するバーストバッファ41、42を介してインターフェース43に転送されるまでの動作を、データの“リード(read)”と呼ぶ。
更に、NAND型フラッシュメモリ2に記憶させるべきデータが、インターフェース43からバーストバッファ41、42を介してSRAM30に転送されるまでの動作を、データの“ライト(write)”と呼ぶ。また、SRAM30内のデータがページバッファ12に転送されて、NAND型フラッシュメモリ2のメモリセルアレイ10に書き込まれるまでの動作を、データの“プログラム(program)”と呼ぶ。
<<ECC部20>>
ECC部20は、データについてのエラー検出及びエラー訂正、並びにパリティの生成(以下、これらをまとめてECC処理と呼ぶことがある)を行う。すなわち、データのロード時には、NAND型フラッシュメモリ2から読み出されたデータについてエラーの検出及び訂正を行う。他方、データのプログラム時には、プログラムすべきデータについてパリティの生成を行う。ECC部20は、ECCバッファ21及びECCエンジン22を備えている。
ECC部20は、データについてのエラー検出及びエラー訂正、並びにパリティの生成(以下、これらをまとめてECC処理と呼ぶことがある)を行う。すなわち、データのロード時には、NAND型フラッシュメモリ2から読み出されたデータについてエラーの検出及び訂正を行う。他方、データのプログラム時には、プログラムすべきデータについてパリティの生成を行う。ECC部20は、ECCバッファ21及びECCエンジン22を備えている。
ECCバッファ21は、NANDバスによりNAND型フラッシュメモリ2のページバッファ12と接続され、ECCバスによりSRAM30と接続される。これらのバス幅は共に等しく、例えば64ビットである。そしてデータのロード時には、ページバッファ12からNANDバスを介して転送されるデータを保持すると共に、ECC処理済みのデータをSRAM30へECCバスを介して転送する。他方、データのプログラム時には、SRAM30からECCバスを介して転送されるデータを保持すると共に、転送されたデータとパリティとをページバッファ12へNANDバスを介して転送する。
ECCエンジン22は、ECCバッファ21に保持されるデータを用いてECC処理を行う。ECCエンジンは、例えばハミングコードを用いた1ビット訂正方式を用いる。そして、訂正処理に必要な最小限のパリティデータを使用する。ECCエンジン22は、図3で説明した各セクタにつき、512ビット単位でECC処理を行う。つまり、2kビット(kは自然数)のうちの1ビットを訂正するためには(k+1)ビットのパリティを必要とする。よって、512ビット単位でECC処理を行う場合には、k=9であるので、512ビットあたり10ビットのパリティを使用する。
つまりECCエンジン22は、データロード時には、512ビット毎に10ビットのパリティを用いてシンドロームを生成し、これによりエラー検出を行う。そしてエラーが発見された際には、これを訂正する。他方、データプログラム時には、512ビット毎に10ビットのパリティを生成する。
図4は、ECC部20、ページバッファ12、及びDQバッファ31のブロック図である。DQバッファ31は、後述するSRAM30の備えるバッファである。図示するように、ECCバッファ21は第1〜第3保持部23〜25を備えている。第1〜第3保持部23は、ページバッファ12及びDQバッファ31との間で、例えば64ビット単位でデータの転送を行う。第1、第2保持部23、24はそれぞれ、512ビット分のメインデータを保持可能とされる。また第3保持部25は、データロード時にはページバッファ12から転送されるパリティを保持し、データプログラム時にはECCエンジン22で生成されたパリティを保持する。そしてECCエンジン22は、第1〜第3保持部23〜25内のデータを用いてECC処理を実行する。
<<SRAM30>>
次に、図1に戻ってSRAM30について説明する。メモリシステム1においてSRAM30は、NAND型フラッシュメモリ2に対するバッファメモリとして機能する。図示するように、SRAM30は前述のDQバッファ31、複数(本実施形態では2つ)のデータRAM、及び1つのブート(boot)RAMを備えている。
次に、図1に戻ってSRAM30について説明する。メモリシステム1においてSRAM30は、NAND型フラッシュメモリ2に対するバッファメモリとして機能する。図示するように、SRAM30は前述のDQバッファ31、複数(本実施形態では2つ)のデータRAM、及び1つのブート(boot)RAMを備えている。
DQバッファ31は、データRAMまたはブートRAMにデータを書き込む、または読み出す際に、一時的にデータを保持する。DQバッファ31は前述の通り、ECCバスにより、ECCバッファ21との間でデータ転送可能とされている。またDQバッファ31は、例えば64ビットのバス幅を有するRAM/Registerバスを用いて、インターフェース部40との間でデータ転送可能とされている。DQバッファ31もページバッファ12と同様に、メインデータを保持する領域と、パリティ等を保持する領域とを備えている。
ブートRAMは、例えばメモリシステム1を起動するためのブートコード(boot code)を一時的に保持する。ブートRAMの容量は、例えば1Kバイトである。またデータRAMは、ブートコード以外のデータ(メインデータ及びパリティ)を一時的に保持し、その容量は例えば2Kバイトであり、2つ設けられている。データRAM及びブートRAMはそれぞれ、メモリセルアレイ32、センスアンプ33、及びロウデコーダ34を備えている。
メモリセルアレイ32は、データ保持可能な複数のSRAMセルを備える。SRAMセルはそれぞれ、ワード線及びビット線に接続される。メモリセルアレイ32も、メモリセルアレイ10と同様に、メインデータを保持する領域と、パリティ等を保持する領域とを備えている。センスアンプ33は、SRAMセルからビット線に読み出したデータをセンス・増幅する。またセンスアンプ33は、DQバッファ31内のデータをSRAMセルに書き込む際の負荷としても機能する。ロウデコーダ34は、メモリセルアレイ32におけるワード線を選択する。
<<インターフェース部40>>
次に、引き続き図1を参照しつつインターフェース部40について説明する。図示するようにインターフェース部40は、複数(本実施形態では2つ)のバーストバッファ(burst buffer)41、42、及びインターフェース43を備えている。
次に、引き続き図1を参照しつつインターフェース部40について説明する。図示するようにインターフェース部40は、複数(本実施形態では2つ)のバーストバッファ(burst buffer)41、42、及びインターフェース43を備えている。
インターフェース43は、メモリシステム1外部のホスト機器と接続可能とされ、ホスト機器との間でデータ、制御信号、及びアドレスAdd等、種々の信号の入出力を司る。制御信号の一例は、メモリシステム1全体をイネーブルにするチップイネーブル信号/CE、アドレスをラッチさせるためのアドレスバリッド信号/AVD、バーストリード(burst read)用のクロックCLK、書き込み動作をイネーブルにするライトイネーブル信号/WE、データの外部への出力をイネーブルにするアウトプットイネーブル信号/OE、などである。
インターフェース43は、例えば16ビットのバス幅を有するDIN/DOUTバスによりバーストバッファ41、42と接続されている。そしてインターフェース34は、ホスト機器からのデータのリード要求、ロード要求、ライト要求、及びプログラム要求等に係る制御信号をアクセスコントローラ50へ転送する。そしてデータリード時には、バーストバッファ41、42内のデータをホスト機器へ出力する。またデータライト時には、ホスト機器から与えられるデータをバーストバッファ41、42へ転送する。
バーストバッファ41、42は、RAM/RegisterバスによりDQバッファ31及びコントローラ部4とデータ転送可能とされ、また前述のDIN/DOUTバスによりインターフェース43とデータ転送可能とされている。そして、ホスト機器からインターフェース43を介して与えられるデータ、またはDQバッファ31から与えられるデータを、一時的に保持する。
<<アクセスコントローラ50>>
アクセスコントローラ50は、インターフェース43から制御信号及びアドレスを受け取る。そして、ホスト機器の要求を満たす動作を実行するよう、SRAM30及びコントローラ部4を制御する。
アクセスコントローラ50は、インターフェース43から制御信号及びアドレスを受け取る。そして、ホスト機器の要求を満たす動作を実行するよう、SRAM30及びコントローラ部4を制御する。
より具体的には、ホスト機器の要求に応じてアクセスコントローラ50は、SRAM30とコントローラ4の後述するレジスタ60とのいずれかをアクティブ状態とする。そして、SRAM30に対するデータのライトコマンドまたはリードコマンド(Write/Read)、またはレジスタ60に対するライトコマンドまたはリードコマンド(Write/Read、以下、これをレジスタライトコマンドまたはレジスタリードコマンドと呼ぶ)を発行する。これらの制御により、SRAM30及びコントローラ部4は動作を開始する。
<コントローラ部4>
次に、引き続き図1を参照しつつ、コントローラ部4について説明する。コントローラ部4は、NAND型フラッシュメモリ2及びRAM部3の動作を制御する。すなわち、メモリシステム1全体としての動作を統括する機能を有する。図示するようにコントローラ部4は、レジスタ60、コマンドユーザインターフェース(command user interface)61、ステートマシン(state machine)62、アドレス/コマンド発生回路63、及びアドレス/タイミング発生回路64を備えている。
次に、引き続き図1を参照しつつ、コントローラ部4について説明する。コントローラ部4は、NAND型フラッシュメモリ2及びRAM部3の動作を制御する。すなわち、メモリシステム1全体としての動作を統括する機能を有する。図示するようにコントローラ部4は、レジスタ60、コマンドユーザインターフェース(command user interface)61、ステートマシン(state machine)62、アドレス/コマンド発生回路63、及びアドレス/タイミング発生回路64を備えている。
レジスタ60は、ファンクションの動作状態を設定するためのレジスタである。すなわちレジスタ60は、アクセスコントローラ50から与えられるレジスタライトコマンドまたはレジスタリードコマンドに応じて、ファンクションの動作状態を設定する。より具体的には、レジスタ60には、例えばデータロード時にはロードコマンドが設定され、データプログラム時にはプログラムコマンドが設定される。
コマンドユーザインターフェース61は、所定のコマンドがレジスタ60に設定されることで、メモリシステム1に対してファンクション実行コマンドが与えられたことを認識する。そして、内部コマンド信号(Command)を発行し、ステートマシン62へ出力する。
ステートマシン62は、コマンドユーザインターフェース61から与えられる内部コマンド信号に基づいて、メモリシステム1内部におけるシーケンス動作を制御する。ステートマシン62がサポートするファンクションは、ロード、プログラム、及び消去等、多数あり、これらのファンクションを実行するよう、NAND型フラッシュメモリ2及びRAM部3の動作を制御する。なお前述の通りロードは、NAND型フラッシュメモリ2からデータを読み出してSRAM30へ出力する動作であり、プログラムは、RAMデータをNAND型フラッシュメモリ2に記憶する動作であり、消去は、NAND型フラッシュメモリ2内のデータを削除する動作である。
アドレス/コマンド発生回路63は、ステートマシン62の制御に基づいてNAND型フラッシュメモリ2の動作を制御する。より具体的には、アドレスやコマンド(Program/Load)等を生成し、NAND型フラッシュメモリ2へ出力する。アドレス/コマンド発生回路63は、オシレータ16の生成する内部クロックACLKに同期しつつ、これらのアドレスやコマンドを出力する。
アドレス/タイミング発生回路64は、ステートマシン62の制御に基づいてRAM部3の動作を制御する。より具体的には、RAM部3において必要なアドレスやコマンドを発行して、アクセスコントローラ50及びECCエンジン22へ出力する。
<メモリシステム1の動作>
次に、上記構成のメモリシステム1における大まかな動作について簡単に説明する。前述の通り本実施形態に係るメモリシステム1では、NAND型フラッシュメモリ2とホスト機器との間のデータの授受は、SRAM30を介して行われる。
次に、上記構成のメモリシステム1における大まかな動作について簡単に説明する。前述の通り本実施形態に係るメモリシステム1では、NAND型フラッシュメモリ2とホスト機器との間のデータの授受は、SRAM30を介して行われる。
すなわち、ホスト機器がメモリシステム1のNAND型フラッシュメモリ2にデータを記憶させる場合には、まずホスト機器から与えられるライトコマンドとSRAM30のアドレスに従って、データがデータRAMまたはブートRAMに一旦、格納される。その後、ホスト機器から与えられるプログラムコマンドとNAND型フラッシュメモリ2のアドレスに従って、SRAM30に格納されたデータが、ページ単位で一括してNAND型フラッシュメモリ2にプログラムされる。
また、ホスト機器がNAND型フラッシュメモリ2内のデータを読み出す場合には、まずホスト機器から与えられるロードコマンド、NAND型フラッシュメモリ2のアドレス、及びSRAM30のアドレスに従って、データがNAND型フラッシュメモリ2から読み出され、データRAMまたはブートRAMに一旦、格納される。その後、ホスト機器から与えられるリードコマンドとSRAM30のアドレスに従って、データRAMまたはブートRAMに保持されるデータが、インターフェース部40を介してホスト機器に読み出される。
以下、ロードの場合の動作手順の一例について、簡単に説明する。
まず、ホスト機器がインターフェース部40に対して、ロードすべきNAND型フラッシュメモリ2のアドレス及びSRAMのアドレスを入力し、またロードコマンドを入力する。
まず、ホスト機器がインターフェース部40に対して、ロードすべきNAND型フラッシュメモリ2のアドレス及びSRAMのアドレスを入力し、またロードコマンドを入力する。
するとメモリシステム1では、アクセスコントローラ50が上記アドレス及びコマンドをレジスタ60に設定する。レジスタ60にコマンドが設定されたことを検知したコマンドユーザインターフェース61は、内部コマンド信号を発行する。ロードの場合にはロードコマンドが発行される。
ユーザインターフェース61からロードコマンドを受信することにより、ステートマシン62が起動する。ステートマシン62は、各回路ブロックについて必要な初期化を行った後、アドレス/コマンド発生回路63に対して、NAND型フラッシュメモリ2に対してセンスコマンドを発行するよう要求する。
するとアドレス/コマンド発生回路63は、レジスタ60に設定されたアドレスにつき、データのセンスを行うよう、シーケンサ14に対してセンスコマンドを発行する。
アドレス/コマンド発生回路63からセンスコマンドを受けることで、シーケンサ14が起動する。シーケンサ14は、NAND型フラッシュメモリ2において必要な初期化を行った後、指定されたアドレスのセンス動作を行う。すなわち、電圧発生回路13、ロウデコーダ11、図示せぬセンスアンプ、及びページバッファ12を制御し、センスデータをページバッファ12に格納させる。その後シーケンサ14は、センス動作が終了したことを、ステートマシン62に通知する。
次にステートマシン62は、アドレス/コマンド発生回路63に対して、NAND型フラッシュメモリ2に対して転送コマンドを発行するよう命令する。転送コマンドとは、NAND型フラッシュメモリ2からRAM部3へデータを転送するための命令である。この命令に応じてアドレス/コマンド発生回路63は、転送コマンドを発行してシーケンサ14へ出力する。
転送コマンドを受けたシーケンサ14は、ページバッファ12をデータ転送可能なようにセットする。そしてシーケンサ14の制御に従って、ページバッファ12内のデータがNANDバスを介してECCバッファ21へ転送される。
更にステートマシン62は、ECC部20に対してエラー訂正開始制御信号を発行する。この信号に応答して、ECC部20がECC処理を行う。そして、ECC処理されたデータが、ECC部20からECCバスを介してDQバッファ31に転送される。
引き続き、アクセスコントローラ50の命令に従って、DQバッファ31内のデータが、SRAM30のメモリセルアレイ32に書き込まれる。
以上により、データのロードが完了する。その後、ホスト機器はインターフェース部40を介してリードコマンドを発行することで、メモリセルアレイ32に書き込まれたデータを読み出す。
<ページバッファ12、ECC部20、及びDQバッファ31間のデータ転送方法>
次に、データロード時における、ページバッファ12、ECC部20、及びDQバッファ31間における、データの転送方法の詳細について、図5を用いて説明する。図5は、本実施形態に係るデータ転送方法のフローチャートである。
次に、データロード時における、ページバッファ12、ECC部20、及びDQバッファ31間における、データの転送方法の詳細について、図5を用いて説明する。図5は、本実施形態に係るデータ転送方法のフローチャートである。
図示するように、まずNAND型フラッシュメモリ2において、データがページ単位でページバッファ12に読み出される(ステップS10)。このページデータには、第1領域17から読み出された2Kバイトのデータと、第2領域から読み出された64バイトのデータが含まれる。そして第2領域から読み出されたデータには320ビットのパリティが含まれる。
その後、アドレス/コマンド発生回路62の命令に応答してシーケンサ14が、パリティの先頭番地をNAND型フラッシュメモリ2のページバッファ12に入力する(ステップS11)。これによりページバッファ12は、パリティをECCバッファ21の第3保持部25へ64ビット単位で転送する(ステップS12)。
引き続き、シーケンサ14は、アドレス/コマンド発生回路62の命令に従って、メインデータの先頭番地をページバッファ12に入力する(ステップS13)。これによりページバッファ12は、メインデータをECCバッファ21の第1保持部23と第2保持部24とのいずれか一方へ、64ビット単位で転送する(ステップS14)。
メインデータの転送量が512ビットに達し(ステップS15、YES)、且つ対象とするセクタのデータが全て転送済みであれば(ステップS16、YES)、当該セクタに関するデータのページバッファ12からECCバッファ21への転送は停止する。対象とするセクタにつき未転送のデータが残っていれば(ステップS16、NO)、ページバッファ12は、データの転送先として第1、第2保持部23、24を切り替えて(ステップS17)、引き続きメインデータの転送を継続する(ステップS14)。
また、ステップS15においてメインデータの転送量が512ビットに達すると、ECCエンジン22は512ビット単位でECC処理を行う(ステップS18)。すなわち、パリティとメインデータとを用いてシンドロームを生成し、データ中のエラーを検出する。そしてエラーが検出されればそれを訂正する。更に、既にECC処理されたメインデータがあれば、そのメインデータが、ECCバッファ21からDQバッファ31へ転送される(ステップS19)。
メインデータのDQバッファ31への転送量が512ビットに達し(ステップS20、YES)、且つ対象とするセクタのメインデータが全て転送済みであれば(ステップS21、YES)、最後に第3保持部25がパリティをDQバッファへ転送し(ステップS23)、処理は完了する。ステップS21において、対象とするセクタにつき、DQバッファ31へ未転送のデータが残っていれば(ステップS21、NO)、ECCバッファ31はデータの転送元を第1、第2保持部23、24間で切り替えて(ステップS22)、引き続きメインデータの転送を継続する(ステップS19)。
なお、以上のステップS14〜S17におけるメインデータのページバッファ12からECCバッファ21への転送処理と、ステップS18のECC処理と、ステップS19〜S22におけるメインデータのECCバッファ21からDQバッファ31への転送処理とは、平行して行われる。より具体的には、512ビットずつ、且つ第1保持部23と第2保持部24とを切り替えつつ、行われる。この点の詳細について、以下具体例を用いつつ説明する。
<具体例>
以上のデータ転送の具体例を、図6乃至図10を用いて説明する。図6は、メモリセルアレイ10からのデータの読み出し開始から、メインデータとパリティとをDQバッファ31へ転送するまでの処理の流れを示すタイミングチャートである。また図7乃至図10は、データ転送時における、関連する回路ブロックのブロック図である。なお、図6において、“[”と“]”とで挟んだ数字は、対応する処理を行うのに必要なクロック数である。
以上のデータ転送の具体例を、図6乃至図10を用いて説明する。図6は、メモリセルアレイ10からのデータの読み出し開始から、メインデータとパリティとをDQバッファ31へ転送するまでの処理の流れを示すタイミングチャートである。また図7乃至図10は、データ転送時における、関連する回路ブロックのブロック図である。なお、図6において、“[”と“]”とで挟んだ数字は、対応する処理を行うのに必要なクロック数である。
<<時刻t0〜t1>>
図6に示すように、時刻t0〜t1の期間において、データ(メインデータ+パリティ)がメモリセルアレイ10からページバッファ12に読み出される(ステップS10)。
図6に示すように、時刻t0〜t1の期間において、データ(メインデータ+パリティ)がメモリセルアレイ10からページバッファ12に読み出される(ステップS10)。
<<時刻t1〜t3>>
その後、時刻t1において、パリティの先頭番地がページバッファ12に入力される(ステップS11、図6における“Sp”)。パリティの先頭番地の入力には、例えば10クロックを要する。これに引き続き、時刻t2において、パリティがページバッファ12から第3保持部25に転送される(ステップS12、図6における“Ta−p”)。この様子を示しているのが図7である。図示するように、例えばECC処理の対象が第1セクタであったとすると、第1セクタに対応したパリティ(80ビット)が第3保持部25に転送される。NANDバスは64ビット幅であるので、パリティの転送には2クロックを要する。また以下では、メインデータの第1セクタを、512ビット毎に順次データD1〜D8と呼ぶことにする。
その後、時刻t1において、パリティの先頭番地がページバッファ12に入力される(ステップS11、図6における“Sp”)。パリティの先頭番地の入力には、例えば10クロックを要する。これに引き続き、時刻t2において、パリティがページバッファ12から第3保持部25に転送される(ステップS12、図6における“Ta−p”)。この様子を示しているのが図7である。図示するように、例えばECC処理の対象が第1セクタであったとすると、第1セクタに対応したパリティ(80ビット)が第3保持部25に転送される。NANDバスは64ビット幅であるので、パリティの転送には2クロックを要する。また以下では、メインデータの第1セクタを、512ビット毎に順次データD1〜D8と呼ぶことにする。
<<時刻t3〜t5>>
次に、時刻t3〜t5における処理について、図8を参照しつつ説明する。時刻t3において、メインデータの先頭番地がページバッファ12に入力される(ステップS13、図6における“Sm”)。メインデータの先頭番地の入力には、例えば10クロックを要する。これに引き続き、時刻t4において、メインデータ(データD1)がページバッファ12から第1保持部23に転送される(ステップS14、図6における“Ta−1”)。512ビット分のデータ(データD1)が転送されるには8クロックを要し、時刻t5でデータD1の転送が完了する。
次に、時刻t3〜t5における処理について、図8を参照しつつ説明する。時刻t3において、メインデータの先頭番地がページバッファ12に入力される(ステップS13、図6における“Sm”)。メインデータの先頭番地の入力には、例えば10クロックを要する。これに引き続き、時刻t4において、メインデータ(データD1)がページバッファ12から第1保持部23に転送される(ステップS14、図6における“Ta−1”)。512ビット分のデータ(データD1)が転送されるには8クロックを要し、時刻t5でデータD1の転送が完了する。
<<時刻t5〜t6>>
次に、時刻t5〜t6における処理について、図9を参照しつつ説明する。時刻t5においてページバッファ12は、転送先を第1保持部23から第2保持部24に切り替えて(ステップS17)、データD1に後続するデータD2の第2保持部24への転送を開始する(ステップS14、図6における“Ta−2”)。データD2の転送にも8クロックを要し、時刻t6でデータD2の転送が終了する。また同時に、ECCエンジン22は、第1保持部23内のデータD1と第3保持部25内のパリティとを用いてECC処理を行う(ステップS18、図6における“Em−1”)。
次に、時刻t5〜t6における処理について、図9を参照しつつ説明する。時刻t5においてページバッファ12は、転送先を第1保持部23から第2保持部24に切り替えて(ステップS17)、データD1に後続するデータD2の第2保持部24への転送を開始する(ステップS14、図6における“Ta−2”)。データD2の転送にも8クロックを要し、時刻t6でデータD2の転送が終了する。また同時に、ECCエンジン22は、第1保持部23内のデータD1と第3保持部25内のパリティとを用いてECC処理を行う(ステップS18、図6における“Em−1”)。
<<時刻t6〜t7>>
次に、時刻t6〜t7における処理について、図10を参照しつつ説明する。時刻t6においてページバッファ12は、転送先を第2保持部24から第1保持部23に切り替えて(ステップS17)、データD2に後続するデータD3の第1保持部24への転送を開始する(ステップS14、図6における“Ta−3”)。データD3の転送にも8クロックを要し、時刻t7でデータD3の転送が終了する。また同時にECCエンジン22は、第2保持部24内のデータD2と第3保持部25内のパリティとを用いてECC処理を行う(ステップS18、図6における“Em−2”)。更に、データD3の転送及びデータD2に関するECC処理と並行して、ECC処理済みのデータD1が、第1保持部23からDQバッファ31へ転送される(ステップS19、図6における“Tb−1”)。
次に、時刻t6〜t7における処理について、図10を参照しつつ説明する。時刻t6においてページバッファ12は、転送先を第2保持部24から第1保持部23に切り替えて(ステップS17)、データD2に後続するデータD3の第1保持部24への転送を開始する(ステップS14、図6における“Ta−3”)。データD3の転送にも8クロックを要し、時刻t7でデータD3の転送が終了する。また同時にECCエンジン22は、第2保持部24内のデータD2と第3保持部25内のパリティとを用いてECC処理を行う(ステップS18、図6における“Em−2”)。更に、データD3の転送及びデータD2に関するECC処理と並行して、ECC処理済みのデータD1が、第1保持部23からDQバッファ31へ転送される(ステップS19、図6における“Tb−1”)。
<<時刻t7〜t10>>
以後、時刻t7〜t10の期間は、時刻t6〜t7で説明した処理を繰り返す。すなわち、時刻t7〜t8では、ページバッファ12からデータD4の第2保持部24への転送と、ECCエンジン22によるデータD3についてのECC処理と、ECC処理済みのデータD2のDQバッファ31への転送処理が同時に実行される。以下同様である。
以後、時刻t7〜t10の期間は、時刻t6〜t7で説明した処理を繰り返す。すなわち、時刻t7〜t8では、ページバッファ12からデータD4の第2保持部24への転送と、ECCエンジン22によるデータD3についてのECC処理と、ECC処理済みのデータD2のDQバッファ31への転送処理が同時に実行される。以下同様である。
<<時刻t10〜t12>>
時刻t10において、データD8のページバッファ12からECCバッファ21への転送が終了する(ステップS16、YES)。すなわち、4096ビット分のメインデータの、ECCバッファ21への転送が終了する。そして時刻t11において、データD8についてのECC処理が終了する。また時刻t11においてデータD8のDQバッファ31への転送が開始され(ステップS19)、時刻t12においてその転送が完了する(ステップS21、YES)。
時刻t10において、データD8のページバッファ12からECCバッファ21への転送が終了する(ステップS16、YES)。すなわち、4096ビット分のメインデータの、ECCバッファ21への転送が終了する。そして時刻t11において、データD8についてのECC処理が終了する。また時刻t11においてデータD8のDQバッファ31への転送が開始され(ステップS19)、時刻t12においてその転送が完了する(ステップS21、YES)。
<<時刻t12〜t13>>
最後に、時刻t12〜t13の期間において、第3保持部25に保持されるパリティがDQバッファ31へ転送され(ステップS23)、一連の処理が終了する。そして、DQバッファ内のデータがメモリセルアレイ32に格納される。
最後に、時刻t12〜t13の期間において、第3保持部25に保持されるパリティがDQバッファ31へ転送され(ステップS23)、一連の処理が終了する。そして、DQバッファ内のデータがメモリセルアレイ32に格納される。
<効果>
以上のように、この発明の第1の実施形態に係るデータ転送方法であると、メインデータよりも先にパリティをページバッファ12から読み出している。また、ECC処理をセクタ単位で行うのではなく、セクタを複数に分割したより小さな単位で行っている。従って、ページバッファ12からECC部20へのデータ転送と、ECC処理と、ECC部20からDQバッファ31へのデータ転送とを、並列的に処理出来る。その結果、データのロード速度を向上し、メモリシステムの動作性能を向上出来る。本効果につき、以下詳細に説明する。
以上のように、この発明の第1の実施形態に係るデータ転送方法であると、メインデータよりも先にパリティをページバッファ12から読み出している。また、ECC処理をセクタ単位で行うのではなく、セクタを複数に分割したより小さな単位で行っている。従って、ページバッファ12からECC部20へのデータ転送と、ECC処理と、ECC部20からDQバッファ31へのデータ転送とを、並列的に処理出来る。その結果、データのロード速度を向上し、メモリシステムの動作性能を向上出来る。本効果につき、以下詳細に説明する。
通常、ECC機能を備えたNAND型フラッシュメモリでは、まずメインデータをECC部へ全て読み出し、その後パリティを読み出して、ECC処理を行う。すると、図6で説明したデータの例の場合、データの転送順序と、それに要するクロック数は次のようになる。すなわち、
(1)先頭番地をページバッファに入力:10クロック
(2)4096ビット分のメインデータをECC部へ転送:64クロック
(3)パリティをECC部へ転送:1クロック
(4)ECC処理:4クロック
(5)ECC処理済みの4096ビット分のメインデータをDQバッファへ転送:64クロック
(6)パリティをDQバッファへ転送:1クロック
すなわち、トータルの処理に144クロックを要する。4096ビット分のメインデータを一括してECC処理するため、パリティは13ビットで済み、パリティの転送は1クロックで済むが、全体としては144クロックという、非常に長時間を必要とする。そのため、メインデータのデータサイズが大きくなるほど、データのロード速度が極端に低下するという問題がある。
(1)先頭番地をページバッファに入力:10クロック
(2)4096ビット分のメインデータをECC部へ転送:64クロック
(3)パリティをECC部へ転送:1クロック
(4)ECC処理:4クロック
(5)ECC処理済みの4096ビット分のメインデータをDQバッファへ転送:64クロック
(6)パリティをDQバッファへ転送:1クロック
すなわち、トータルの処理に144クロックを要する。4096ビット分のメインデータを一括してECC処理するため、パリティは13ビットで済み、パリティの転送は1クロックで済むが、全体としては144クロックという、非常に長時間を必要とする。そのため、メインデータのデータサイズが大きくなるほど、データのロード速度が極端に低下するという問題がある。
しかし本実施形態に係る方法であると、メインデータを複数(例えば8個)に分割し、分割した単位でECC処理を行っている。本実施形態に係る方法によるデータ転送の流れは次のようになる。すなわち、
(1)パリティの先頭番地をページバッファ12に入力:10クロック
(2)パリティをECC部20へ転送:2クロック
(3)メインデータの先頭番地をページバッファ12に入力:10クロック
(4)(4−1)4096ビット分のメインデータをECC部へ転送、
(4−2)512ビット分のメインデータの転送が完了次第、512ビット単位でECC処理、
(4−3)512ビット分のメインデータのECC処理が完了次第、512ビット単位でDQバッファへメインデータを転送
:(4)全体で(8×10)=80クロック
(5)パリティをDQバッファへ転送:2クロック
すなわち、トータルの処理に必要なクロック数は104クロックとなる。512ビット単位でECC処理をするため、パリティは4096ビットあたり80ビットが必要となり、またページバッファ12に対してメインデータの先頭番地だけでなくパリティの先頭番地も入力する必要がある。しかし、メインデータのECC部への転送と、ECC処理と、メインデータのDQバッファ31への転送処理を並列に行うことが出来る。これにより、データのロード速度を格段に向上出来る。
(1)パリティの先頭番地をページバッファ12に入力:10クロック
(2)パリティをECC部20へ転送:2クロック
(3)メインデータの先頭番地をページバッファ12に入力:10クロック
(4)(4−1)4096ビット分のメインデータをECC部へ転送、
(4−2)512ビット分のメインデータの転送が完了次第、512ビット単位でECC処理、
(4−3)512ビット分のメインデータのECC処理が完了次第、512ビット単位でDQバッファへメインデータを転送
:(4)全体で(8×10)=80クロック
(5)パリティをDQバッファへ転送:2クロック
すなわち、トータルの処理に必要なクロック数は104クロックとなる。512ビット単位でECC処理をするため、パリティは4096ビットあたり80ビットが必要となり、またページバッファ12に対してメインデータの先頭番地だけでなくパリティの先頭番地も入力する必要がある。しかし、メインデータのECC部への転送と、ECC処理と、メインデータのDQバッファ31への転送処理を並列に行うことが出来る。これにより、データのロード速度を格段に向上出来る。
上記方法を実現するために、本実施形態ではメインデータよりも先に、80ビット分のパリティを読み出している。これにより、パリティの読み出しに要するクロック数を最小限(2クロック)に抑えることが出来る。また、メインデータを、ECC処理の単位となるだけ読み出した時点で、すぐにECC処理を実行可能としている。
更に、メインデータ用のECCバッファを複数(第1保持部23と第2保持部24)設けている。これにより、ページバッファ12からECCバッファ21へのメインデータ転送と、ECC処理済みのメインデータのDQバッファ31への転送とを並行して行うことが出来る。
[第2の実施形態]
次に、この発明の第2の実施形態に係るデータ転送方法について説明する。本実施形態は、上記第1の実施形態において、4096ビット単位でECC処理をする方法に関するものである。本実施形態に係るメモリシステムのブロック構成や、大まかな動作の流れは第1の実施形態と同様であるので、以下では第1の実施形態と異なる点についてのみ説明する。
次に、この発明の第2の実施形態に係るデータ転送方法について説明する。本実施形態は、上記第1の実施形態において、4096ビット単位でECC処理をする方法に関するものである。本実施形態に係るメモリシステムのブロック構成や、大まかな動作の流れは第1の実施形態と同様であるので、以下では第1の実施形態と異なる点についてのみ説明する。
図11は、本実施形態における1ページ分のデータの模式図である。図示するように、メモリセルアレイ10の第1領域17から読み出されるデータは、第1の実施形態で説明した図3と同様である。図3と異なる点は、セクタ毎に必要なパリティのビット数が、第1の実施形態では80ビットであったのに対し、本実施形態では13ビットである点である。これは、ECCエンジン22が4096ビットを一括してECC処理するからである(4096=212)。
図12は、本実施形態に係るECC部20のブロック図である。図示するように、ECCバッファ21は、メインデータ保持部26とパリティ保持部27とを含む。メインデータ保持部26は、4096ビットのメインデータを保持可能とされる。パリティ保持部27は、第1の実施形態で説明した第3保持部25と同様である。メインデータ保持部26及びパリティ保持部26は、ページバッファ12とNANDバスにより接続され、DQバッファ31とECCバスにより接続される。
<ページバッファ12、ECC部20、及びDQバッファ31間のデータ転送方法>
次に、データロード時における、ページバッファ12、ECC部20、及びDQバッファ31間における、データの転送方法の詳細について、図13を用いて説明する。図13は、本実施形態に係るデータ転送方法のフローチャートである。
次に、データロード時における、ページバッファ12、ECC部20、及びDQバッファ31間における、データの転送方法の詳細について、図13を用いて説明する。図13は、本実施形態に係るデータ転送方法のフローチャートである。
図示するように、第1の実施形態で説明した図5と同様にステップS10、S11の処理の後、ページバッファ12がパリティをパリティ保持部27に転送する(ステップS30)。引き続きステップS13の処理の後、ページバッファ12がメインデータをメインデータ保持部26に転送する(ステップS31)。
メインデータの全ビット(4096ビット)がメインデータ保持部26に転送された後(ステップS32、YES)、ECCエンジン22がECC処理を行う(ステップS33)。
ECC処理が終了すると、メインデータがDQバッファへ転送される(ステップS34)。そして、メインデータの全ビット(4096ビット)がDQバッファ31へ転送された後(ステップS35、YES)、パリティがDQバッファ31へ転送される(ステップS36)。
<具体例>
以上のデータ転送の具体例を、図14を用いて説明する。図14は、NAND型フラッシュメモリ2においてデータを読み出してから、メインデータとパリティとをDQバッファ31へ転送するまでの処理の流れを示すタイミングチャートである。なお、図6と同様、図14において“[”と“]”とで挟んだ数字は、対応する処理を行うのに必要なクロック数である。
以上のデータ転送の具体例を、図14を用いて説明する。図14は、NAND型フラッシュメモリ2においてデータを読み出してから、メインデータとパリティとをDQバッファ31へ転送するまでの処理の流れを示すタイミングチャートである。なお、図6と同様、図14において“[”と“]”とで挟んだ数字は、対応する処理を行うのに必要なクロック数である。
<<時刻t0〜t5>>
図示するように、時刻t5までは、第1の実施形態で説明した図6の場合と同様である(ステップS10〜S31)。異なるのは、パリティの転送に要するクロック数が、本実施形態では1クロックで済む点である。これは、本実施形態の方がパリティのビット数が少ないからである。時刻t5までの時点で、512ビット分のメインデータがメインデータ保持部26に転送される。
図示するように、時刻t5までは、第1の実施形態で説明した図6の場合と同様である(ステップS10〜S31)。異なるのは、パリティの転送に要するクロック数が、本実施形態では1クロックで済む点である。これは、本実施形態の方がパリティのビット数が少ないからである。時刻t5までの時点で、512ビット分のメインデータがメインデータ保持部26に転送される。
<<時刻t5〜t7>>
時刻t5以降は、ページバッファ12が残りの3584ビット分のメインデータをメインデータ保持部26に転送する(ステップS31)。第1の実施形態と異なり、この期間にECC処理やデータのDQバッファ31への転送は行われない。メインデータのメインデータ保持部26への転送には、トータルで(8×8クロック)=64クロックを要する。
時刻t5以降は、ページバッファ12が残りの3584ビット分のメインデータをメインデータ保持部26に転送する(ステップS31)。第1の実施形態と異なり、この期間にECC処理やデータのDQバッファ31への転送は行われない。メインデータのメインデータ保持部26への転送には、トータルで(8×8クロック)=64クロックを要する。
<<時刻t7〜t8>>
時刻t6で4096ビット分のメインデータの転送が終了すると、ECCエンジン22はECC処理を行う。前述の通り、ECC処理は4096ビット一括で実行される(ステップS33)。
時刻t6で4096ビット分のメインデータの転送が終了すると、ECCエンジン22はECC処理を行う。前述の通り、ECC処理は4096ビット一括で実行される(ステップS33)。
<<時刻t8〜t12>>
時刻t8でECC処理が終了すると、ECC処理済みのメインデータがDQバッファへ転送される(ステップS34)。メインデータのDQバッファ31への転送には、トータルで(8×8クロック)=64クロックを要する。
時刻t8でECC処理が終了すると、ECC処理済みのメインデータがDQバッファへ転送される(ステップS34)。メインデータのDQバッファ31への転送には、トータルで(8×8クロック)=64クロックを要する。
<<時刻t12〜t13>>
最後に、時刻t12〜t13の期間において、パリティ保持部27に保持されるパリティがDQバッファ31へ転送され、一連の処理が終了する。この転送に要するクロック数も1クロックである。
最後に、時刻t12〜t13の期間において、パリティ保持部27に保持されるパリティがDQバッファ31へ転送され、一連の処理が終了する。この転送に要するクロック数も1クロックである。
<効果>
以上のように、第1の実施形態と同様にメインデータよりも先にパリティを読み出す方法を用いて、且つ、データ転送とECC処理とを並行して行わない場合であっても良い。この場合、図14に示すようにトータルに要するクロック数は154クロックとなるが、ECCバッファ21においてメインデータを保持するバッファは1つ(メインデータ保持部26)だけで良く、またパリティのビット数を小さくすることが出来る。
以上のように、第1の実施形態と同様にメインデータよりも先にパリティを読み出す方法を用いて、且つ、データ転送とECC処理とを並行して行わない場合であっても良い。この場合、図14に示すようにトータルに要するクロック数は154クロックとなるが、ECCバッファ21においてメインデータを保持するバッファは1つ(メインデータ保持部26)だけで良く、またパリティのビット数を小さくすることが出来る。
[第3の実施形態]
次に、この発明の第3の実施形態に係るデータ転送方法について説明する。本実施形態は、上記第1の実施形態で説明したデータ転送方法を、プログラム時に適用したものである。本実施形態に係るメモリシステムのブロック構成や、大まかな動作の流れは第1の実施形態と同様であるので、以下では第1の実施形態と異なる点についてのみ説明する。
次に、この発明の第3の実施形態に係るデータ転送方法について説明する。本実施形態は、上記第1の実施形態で説明したデータ転送方法を、プログラム時に適用したものである。本実施形態に係るメモリシステムのブロック構成や、大まかな動作の流れは第1の実施形態と同様であるので、以下では第1の実施形態と異なる点についてのみ説明する。
図15は、本実施形態に係るメモリシステム1における、データプログラム時の、DQバッファ31、ECC部20、及びページバッファ12間におけるデータの転送方法を示すフローチャートである。第1の実施形態で説明した図5と異なる点は、ロードの際のデータの流れがページバッファ12→ECC部20→DQバッファ31であったのに対して、プログラムの場合にはその逆のDQバッファ31→ECC部20→ページバッファ12である点である。以下詳細に説明する。
図示するように、まずアドレス/コマンド発生回路62の命令に従ってシーケンサ14が、メインデータの先頭番地をページバッファ12に予め入力する(ステップS40)。引き続き、アクセスコントローラ50の命令に従って、DQバッファ31がメインデータとスペアデータ(メモリセルアレイ10の第2領域に書き込むべきデータ)とを、ECCバッファ21の第1保持部23と第2保持部24とのいずれか一方へ、64ビット単位で転送する(ステップS41)。なお、以下ではメインデータとスペアデータとを区別しない場合には、一括してデータと呼ぶ。
メインデータの転送量が512ビットに達し(ステップS42、YES)、且つ対象とするセクタの未転送データが残っていれば(ステップ43、NO)、アクセスコントローラ50はデータの転送先として第1、第2保持部23、24を切り替えて(ステップS44)、引き続きデータの転送を継続する(ステップS41)。他方、当該セクタについてのデータが全て転送済みであれば(ステップS43、YES)、DQバッファ31はECCバッファ21へのデータ転送を停止する。更に、既にパリティ生成済みのメインデータがあれば、ECCバッファ21はそのメインデータをページバッファ12へ転送する(ステップS46)。
メインデータのページバッファ12への転送量が512ビットに達し(ステップS47、YES)、且つ対象とするセクタのメインデータが全てページバッファ12へ転送済みであれば(ステップS48、YES)、ECC部21は第3保持部25内のパリティをページバッファ12へ64ビット単位で転送する(ステップS50)。その後、ページバッファ12に格納されたメインデータとパリティとが、NAND型フラッシュメモリ2のメモリセルアレイ10にページ単位で書き込まれる(ステップS51)。
他方、ステップS48において、対象とするセクタにつき、ページバッファ12へ未転送のデータが残っていれば(ステップS48、NO)、ECCバッファ31はデータの転送元を第1、第2保持部23、24間で切り替えて(ステップS49)、引き続きパリティ生成済みのメインデータの転送を継続する(ステップS46)。
なお、以上のステップS41〜S44におけるデータのDQバッファ31からECCバッファ21への転送処理と、ステップS45のECC処理と、ステップS46〜S49におけるメインデータのECCバッファ21からページバッファ12への転送処理とは、平行して行われる。より具体的にはデータロード時と同様に、512ビットずつ、且つ第1保持部23と第2保持部24とを切り替えつつ、行われる。この点の詳細について、以下具体例を用いつつ説明する。
<具体例>
以上のデータ転送の具体例を、図16を用いて説明する。図16は、NAND型フラッシュメモリ2においてページバッファ12の先頭アドレスを入力してから、メモリセルアレイ10へのデータのプログラムが完了するまでの処理の流れを示すタイミングチャートである。なお、図16においても、“[”と“]”とで挟んだ数字は、対応する処理を行うのに必要なクロック数である。
以上のデータ転送の具体例を、図16を用いて説明する。図16は、NAND型フラッシュメモリ2においてページバッファ12の先頭アドレスを入力してから、メモリセルアレイ10へのデータのプログラムが完了するまでの処理の流れを示すタイミングチャートである。なお、図16においても、“[”と“]”とで挟んだ数字は、対応する処理を行うのに必要なクロック数である。
<<時刻t0〜t1>>
図6に示すように、時刻t0〜t1の期間において、メインデータの先頭番地がページバッファ12に入力される(ステップS40、図16における“S”)。メインデータの先頭番地の入力には、例えば10クロックを要する。
図6に示すように、時刻t0〜t1の期間において、メインデータの先頭番地がページバッファ12に入力される(ステップS40、図16における“S”)。メインデータの先頭番地の入力には、例えば10クロックを要する。
<<時刻t1〜t2>>
次に時刻t1において、DQバッファ31がメインデータD1を第1保持部23に転送する(ステップS41、図16における“Tb−1”)。512ビット分のデータ(データD1)が転送されるには8クロックを要し、時刻t2でデータD1の転送が完了する。
次に時刻t1において、DQバッファ31がメインデータD1を第1保持部23に転送する(ステップS41、図16における“Tb−1”)。512ビット分のデータ(データD1)が転送されるには8クロックを要し、時刻t2でデータD1の転送が完了する。
<<時刻t2〜t3>>
時刻t2においてDQバッファ31は、転送先を第1保持部23から第2保持部24に切り替えて(ステップS44)、データD1に後続するデータD2の第2保持部24への転送を開始する(ステップS41、図6における“Tb−2”)。データD2の転送にも8クロックを要し、時刻t3でデータD2の転送が終了する。また同時にECCエンジン22は、第1保持部23内のデータD1を用いてECC処理を行い、パリティを生成する(ステップS45、図16における“Pm−1”)。
時刻t2においてDQバッファ31は、転送先を第1保持部23から第2保持部24に切り替えて(ステップS44)、データD1に後続するデータD2の第2保持部24への転送を開始する(ステップS41、図6における“Tb−2”)。データD2の転送にも8クロックを要し、時刻t3でデータD2の転送が終了する。また同時にECCエンジン22は、第1保持部23内のデータD1を用いてECC処理を行い、パリティを生成する(ステップS45、図16における“Pm−1”)。
<<時刻t3〜t4>>
時刻t3においてDQバッファ31は、転送先を第2保持部24から第1保持部23に切り替えて(ステップS44)、データD2に後続するデータD3の第1保持部24への転送を開始する(ステップS41、図16における“Tb−3”)。データD3の転送にも8クロックを要し、時刻t4でデータD3の転送が終了する。また同時に、ECCエンジン22は、第2保持部24内のデータD2を用いてECC処理を行い、パリティを生成する(ステップS45、図6における“Pm−2”)。更に時刻t3では、データD1についてのパリティの生成が完了しているので、データD3の転送及びデータD2に関するECC処理と並行して、第1保持部23は、ECC処理済みのデータD1をページバッファ12へ転送する(ステップS46、図6における“Ta−1”)。
時刻t3においてDQバッファ31は、転送先を第2保持部24から第1保持部23に切り替えて(ステップS44)、データD2に後続するデータD3の第1保持部24への転送を開始する(ステップS41、図16における“Tb−3”)。データD3の転送にも8クロックを要し、時刻t4でデータD3の転送が終了する。また同時に、ECCエンジン22は、第2保持部24内のデータD2を用いてECC処理を行い、パリティを生成する(ステップS45、図6における“Pm−2”)。更に時刻t3では、データD1についてのパリティの生成が完了しているので、データD3の転送及びデータD2に関するECC処理と並行して、第1保持部23は、ECC処理済みのデータD1をページバッファ12へ転送する(ステップS46、図6における“Ta−1”)。
<<時刻t4〜t7>>
以後、時刻t4〜t7の期間は、時刻t3〜t4で説明した処理を繰り返す。すなわち、時刻t4〜t5では、DQバッファ31からデータD4の第2保持部24への転送(“Tb−4”)と、ECCエンジン22によるデータD3についてのECC処理(“Pm3”)と、ECC処理済みのデータD2のページバッファ12への転送(“Ta−2”)処理が同時に実行される。以下同様である。そして時刻t7において、メインデータのDQバッファ31からECCバッファ21への転送が終了する。
以後、時刻t4〜t7の期間は、時刻t3〜t4で説明した処理を繰り返す。すなわち、時刻t4〜t5では、DQバッファ31からデータD4の第2保持部24への転送(“Tb−4”)と、ECCエンジン22によるデータD3についてのECC処理(“Pm3”)と、ECC処理済みのデータD2のページバッファ12への転送(“Ta−2”)処理が同時に実行される。以下同様である。そして時刻t7において、メインデータのDQバッファ31からECCバッファ21への転送が終了する。
<<時刻t7〜t8>>
時刻t7〜t8の期間は、DQバッファ31からパリティの第3保持部25への転送(“Tb−p”)と、ECCエンジン22によるデータD8についてのECC処理(“Pm8”)と、ECC処理済みのデータD7のページバッファ12への転送(“Ta−7”)処理が同時に実行される。
時刻t7〜t8の期間は、DQバッファ31からパリティの第3保持部25への転送(“Tb−p”)と、ECCエンジン22によるデータD8についてのECC処理(“Pm8”)と、ECC処理済みのデータD7のページバッファ12への転送(“Ta−7”)処理が同時に実行される。
<<時刻t8〜t9>>
時刻t8〜t9の期間は、ECCエンジン22によるECC処理(“Pp”)と、ECC処理済みのデータD8のページバッファ12への転送(“Ta−8)処理が同時に実行される。ECC処理Ppでは、ECC処理Pm1〜Pm8で得られた処理結果に基づいて、80ビットのパリティが生成される。すなわち、パリティは4096ビットのメインデータを用いて生成される。生成されたパリティは、ECCバッファ21に上書きされる。そして時刻t9において、メインデータのECCバッファ21からページバッファ12への転送が終了する(ステップS48、YES)。
時刻t8〜t9の期間は、ECCエンジン22によるECC処理(“Pp”)と、ECC処理済みのデータD8のページバッファ12への転送(“Ta−8)処理が同時に実行される。ECC処理Ppでは、ECC処理Pm1〜Pm8で得られた処理結果に基づいて、80ビットのパリティが生成される。すなわち、パリティは4096ビットのメインデータを用いて生成される。生成されたパリティは、ECCバッファ21に上書きされる。そして時刻t9において、メインデータのECCバッファ21からページバッファ12への転送が終了する(ステップS48、YES)。
<<時刻t9〜t10>>
時刻t9〜t19の期間においてECC部20は、第3保持部25に保持するパリティをページバッファ12へ転送する(ステップS50)。
時刻t9〜t19の期間においてECC部20は、第3保持部25に保持するパリティをページバッファ12へ転送する(ステップS50)。
<<時刻t10〜t111>>
そして、ページバッファ12に転送されたメインデータとパリティとがメモリセルアレイ10にプログラムされ(ステップS51)、一連の処理が終了する。
そして、ページバッファ12に転送されたメインデータとパリティとがメモリセルアレイ10にプログラムされ(ステップS51)、一連の処理が終了する。
<効果>
以上のように、この発明の第3の実施形態に係るデータ転送方法であると、第1の実施形態と同様に、セクタを複数に分割した単位でECC処理を行っている。従って、DQバッファ31からECC部20へのデータ転送と、ECC処理と、ECC部20からページバッファ12へのデータ転送とを、並列的に処理出来る。その結果、データのプログラム速度を向上し、メモリシステムの動作性能を向上出来る。本効果につき、以下詳細に説明する。
以上のように、この発明の第3の実施形態に係るデータ転送方法であると、第1の実施形態と同様に、セクタを複数に分割した単位でECC処理を行っている。従って、DQバッファ31からECC部20へのデータ転送と、ECC処理と、ECC部20からページバッファ12へのデータ転送とを、並列的に処理出来る。その結果、データのプログラム速度を向上し、メモリシステムの動作性能を向上出来る。本効果につき、以下詳細に説明する。
通常のNAND型フラッシュメモリでは、第1の実施形態で説明したロード時と同様プログラム時も、全てのメインデータをECC部に転送した後にパリティを生成し、その後、メインデータとパリティとをページバッファに転送する。従って、DQバッファからページバッファにデータを転送するには、ロード時と同様に144クロックを要する。
しかし、本実施形態に係る方法であると、メインデータを複数(例えば8個)に分割し、分割した単位でECC処理を行っている。本実施形態に係る方法によるデータ転送の流れは次のようになる。すなわち、
(1)メインデータの先頭番地をページバッファ12に入力:10クロック
(2)(2−1)4096ビット分のメインデータとパリティとをECC部へ順次転送、
(2−2)512ビット分のメインデータの転送が完了次第、512ビット単位でECC処理、
(2−3)512ビット分のメインデータのECC処理が完了次第、512ビット単位でページバッファへメインデータを転送
(2−4)パリティをページバッファへ転送
:(2)全体で(8×10)+2=82クロック
すなわち、トータルの処理に必要なクロック数は92クロックとなる。特にプログラム時ではロード時と異なり、パリティの生成はメインデータが全て揃った後に行われる(図16における処理“Pp”)。従って、DQバッファ31からECCバッファ21へのデータ転送の順序は、メインデータ→パリティ、であるので、先頭番地の入力はメインデータに関する1回で良い。従って、従って、プログラム速度を大幅に向上出来る。
(1)メインデータの先頭番地をページバッファ12に入力:10クロック
(2)(2−1)4096ビット分のメインデータとパリティとをECC部へ順次転送、
(2−2)512ビット分のメインデータの転送が完了次第、512ビット単位でECC処理、
(2−3)512ビット分のメインデータのECC処理が完了次第、512ビット単位でページバッファへメインデータを転送
(2−4)パリティをページバッファへ転送
:(2)全体で(8×10)+2=82クロック
すなわち、トータルの処理に必要なクロック数は92クロックとなる。特にプログラム時ではロード時と異なり、パリティの生成はメインデータが全て揃った後に行われる(図16における処理“Pp”)。従って、DQバッファ31からECCバッファ21へのデータ転送の順序は、メインデータ→パリティ、であるので、先頭番地の入力はメインデータに関する1回で良い。従って、従って、プログラム速度を大幅に向上出来る。
[第4の実施形態]
次に、この発明の第4の実施形態に係るメモリシステムについて説明する。本実施形態は、上記第1乃至第3の実施形態で説明したメモリシステムにおけるクロックとデータの転送方法に関する。以下では、第1乃至第3の実施形態と異なる点についてのみ説明する。
次に、この発明の第4の実施形態に係るメモリシステムについて説明する。本実施形態は、上記第1乃至第3の実施形態で説明したメモリシステムにおけるクロックとデータの転送方法に関する。以下では、第1乃至第3の実施形態と異なる点についてのみ説明する。
<クロック及びデータの転送経路について>
図17は、本実施形態に係るメモリシステム1の一部領域のブロック図であり、特にクロックとデータの転送経路に着目した図である。また図17では、NAND型フラッシュメモリ2、ECC部20、及びSRAM30の内部構造につき、本実施形態に関わる部分のみを図示している。
図17は、本実施形態に係るメモリシステム1の一部領域のブロック図であり、特にクロックとデータの転送経路に着目した図である。また図17では、NAND型フラッシュメモリ2、ECC部20、及びSRAM30の内部構造につき、本実施形態に関わる部分のみを図示している。
図示するようにメモリシステム1は、クロックを伝播させるためのスイッチ70〜71を有している。スイッチ70は、コントローラ部4とNAND型フラッシュメモリ2との間でのクロックの伝播をスイッチングする。スイッチ70は、データロード時にオン状態となる。スイッチ71は、オシレータ16とSRAM30との間でのクロックの伝播をスイッチングする。スイッチ71は、データプログラム時にオン状態となる。スイッチ72は、コントローラ部4及びECC部20と、NAND型フラッシュメモリ2との間でのクロックの伝播をスイッチングする。スイッチ72は、データプログラム時にオン状態となる。
また、NAND型フラッシュメモリ2、ECC部20、及びSRAM30は、上記第1乃至第3の実施形態で説明した構成の他、それぞれ入出力部(I/O)80、28、35を備えている。そして、外部とのデータの入出力は、入出力部80、28、35によってクロックに同期して行われる。
以下、NAND型フラッシュメモリ2とECC部20との間で転送されるデータをデータDATA_NANDと呼び、ECC部20とSRAM30との間で転送されるデータをデータDATA_RAMと呼ぶことにする。
<データロード時について>
次に、データロード時におけるクロックとデータの伝播の様子について、図18を用いて説明する。図18は、図17と同様にメモリシステム1のブロック図であり、特にデータロード時の様子について示している。
次に、データロード時におけるクロックとデータの伝播の様子について、図18を用いて説明する。図18は、図17と同様にメモリシステム1のブロック図であり、特にデータロード時の様子について示している。
図示するように、スイッチ70がオン状態とされ、スイッチ71、72はオフ状態とされる。また、オシレータ16は内部クロックACLKを生成し、これをコントローラ部4へ供給する。コントローラ部4は内部クロックACLKに同期して動作し、また内部クロックACLKに基づいて内部クロックCLK_LOAD1を生成する。
内部クロックCLK_LOAD1は、スイッチ70を介してNAND型フラッシュメモリ2へ供給される。NAND型フラッシュメモリ2は内部クロックCLK_LOAD1に同期して動作し、その入出力部80は、内部クロックCLK_LOAD1に同期してデータDATA_NAND(メインデータとパリティ)をECC部20へ出力する。
内部クロックCLK_LOAD1は、NAND型フラッシュメモリ2だけでなくECC部20へも供給される。ECC部20は、内部クロックCLK_LOAD1に同期して動作する。従ってECC部20の入出力部28は、NAND型フラッシュメモリ2から与えられるデータDATA_NANDを、内部クロックCLK_LOAD1に同期して内部に取り込む。
またECC部20は、図示せぬ遅延回路やバッファ等により内部クロックCLK_LOAD1の波形整形等の処理を行うことで、内部クロックCLK_LOAD2を生成する。そしてECC部20はECC処理を行った後、データDATA_RAM(エラー訂正後のメインデータとパリティ)を、内部クロックCLK_LOAD2に同期して、入出力部28からSRAM30へ出力する。
ECC部30からは、データDATA_RAMと共に内部クロックCLK_LOAD2もSRAM30へ供給される。SRAM30は、内部クロックCLK_LOAD2に同期して動作する。従ってSRAM30の入出力部35は、ECC部20から与えられるデータDATA_RAMを、内部クロックCLK_LOAD2に同期して内部に取り込む。
図19は、データロード時における内部クロックACLK、CLK_LOAD1、CLK_LOAD2、及びデータDATA_NAND、DATA_RAMのタイミングチャートである。
図示するように、データDATA_NANDは内部クロックCLK_LOAD1に同期してNAND型フラッシュメモリ2から出力され、またECC部20に取り込まれる。データDATA_RAMは、内部クロックCLK_LOAD2に同期してECC部20から出力され、またSRAM30に取り込まれる。
<データプログラム時について>
次に、データプログラム時におけるクロックとデータの伝播の様子について、図20を用いて説明する。図20は、図18と同様にメモリシステム1のブロック図であり、特にデータプログラム時の様子について示している。
次に、データプログラム時におけるクロックとデータの伝播の様子について、図20を用いて説明する。図20は、図18と同様にメモリシステム1のブロック図であり、特にデータプログラム時の様子について示している。
図示するように、スイッチ71、72がオン状態とされ、スイッチ70はオフ状態とされる。また、オシレータ16は内部クロックACLKを生成し、これをコントローラ部4へ供給する。コントローラ部4は内部クロックACLKに同期して動作する。
内部クロックACLKは、スイッチ71を介してSRAM30へも供給される。SRAM30は内部クロックCLK_LOAD1に同期して動作し、その入出力部31は、内部クロックACLKに同期して、データDATA_NAND(メインデータとパリティ)をECC部20へ出力する。
SRAM30からは、データDATA_RAMだけでなく内部クロックもECC部20に対して与えられる。この内部クロックはSRAM30において内部クロックACLKに基づいて生成されたものであり、以後、内部クロックCLK_PG1と呼ぶことにする。ECC部20は、内部クロックCLK_PG1に同期して動作する。従ってECC部20は、SRAM30から与えられるデータDATA_RAMを、内部クロックCLK_PG1に同期して内部に取り込む。
またECC部20は、図示せぬ遅延回路やバッファ等により内部クロックCLK_PG1の波形整形等の処理を行うことで、内部クロックCLK_PG2を生成する。そしてECC部20は、内部クロックCLK_PG2に同期して、データDATA_NAND(メインデータと、生成したパリティ)をNAND型フラッシュメモリ2へ出力する。
ECC部30からは、データDATA_NANDと共に、内部クロックCLK_PG2もNAND型フラッシュメモリ2へ供給される。NAND型フラッシュメモリ2は、内部クロックCLK_PG2に同期して動作する。従ってNAND型フラッシュメモリ2は、ECC部20から与えられるデータDATA_NANDを、内部クロックCLK_PG2に同期して内部に取り込む。
図21は、データプログラム時における内部クロックACLK、CLK_PG1、CLK_PG2、及びデータDATA_NAND、DATA_RAMのタイミングチャートである。
図示するように、データDATA_RAMは内部クロックCLK_PG1に同期してNAND型フラッシュメモリ2から出力され、内部クロックCLK_PG1に同期してECC部20に取り込まれる。データDATA_NANDは、内部クロックCLK_PG2に同期してECC部20から出力され、またNAND型フラッシュメモリ2に取り込まれる。
<効果>
以上のように、この発明の第4の実施形態に係るメモリシステムであると、各機能ブロック間のデータ転送の流れに合わせて、内部クロックを伝播させている。言い換えれば、データロード時とデータプログラム時とにおいて、基準クロックを使い分けつつ、クロック同期データ転送を行っている。従って、メモリシステム1内におけるデータ転送精度を向上出来、メモリシステムの動作信頼性を向上出来る。本効果につき、以下説明する。
以上のように、この発明の第4の実施形態に係るメモリシステムであると、各機能ブロック間のデータ転送の流れに合わせて、内部クロックを伝播させている。言い換えれば、データロード時とデータプログラム時とにおいて、基準クロックを使い分けつつ、クロック同期データ転送を行っている。従って、メモリシステム1内におけるデータ転送精度を向上出来、メモリシステムの動作信頼性を向上出来る。本効果につき、以下説明する。
近年、例えば携帯電話の多機能化・高性能化が進むにつれ、携帯電話システムも多様化し、現在では様々な種類のシステムが使われている。それぞれのシステムに使用されるメモリには最も適した種類や容量の組み合わせがあり、その一つが図1に示されるメモリシステム1である。メモリシステム1では、コントローラ部4と、NAND型フラッシュメモリ2と、高速読み取り性能を備えたNORインターフェース(インターフェース部40)と、バッファメモリとして活用するSRAM30と、データ訂正機能を備えたECC部20とが、1つのチップに集積される。このように複数の回路ブロック(システム)が1つのチップに搭載された場合、複数のシステム間のデータ転送精度を向上させる技術が重要となる。
この点、あるクロック発生器の発生するクロックに基づいて複数のシステムを動作させる場合には、次のような問題が生じる。図22は、コントローラ部4、NAND型フラッシュメモリ2、ECC部20、及びSRAM30を備えたシステムのブロック図である。
本構成において、オシレータ16が発生する内部クロックACLKに同期してECC部20及びSRAM30が動作する。またコントローラ部4は、内部クロックACLKに基づいて内部クロックCLK_LOADを生成し、内部クロックCLK_LOADに同期してNAND型フラッシュメモリ2が動作する。
この場合の各種信号のタイミングチャートを図23に示す。図中において、“ACLK”はオシレータ16で発生されたクロックであり、“ACLK(ECC)”及び“ACLK(SRAM)”は、それぞれECC部20及びSRAM30に実際に入力されるクロックを示す。
内部クロックACLK(ECC)、ACLK(SRAM)は、内部クロックACLKが遅延された信号である。そして、オシレータ16からECC部20に達する経路で生じる遅延と、オシレータ16からSRAM30に達する経路で生じる遅延は異なるのが通常であり、場合によっては非常に大きな差がある。更にその遅延量の差は、データDATA_RAMがECC部20からSRAM30に達する際に発生する遅延量と何ら関連は無い。同様に、内部クロックACLK、CLK_LOAD間の位相差(遅延量)と、データDATA_NANDがNAND型フラッシュメモリ2からECC部20に達する際に発生する遅延量との間にも関連性は無い。
その結果、図23に示す例であると、データDATA_NANDについてはセットアップタイムtS1がホールドタイムtH1に比べて極端に短くなる。またデータDATA_RAMについては、ホールドタイムtH2がセットアップタイムtS2に比べて極端に短くなる。このように、セットアップタイムとホールドタイムとの間に大きなアンバランスが生じることで、データを正確に転送するためのタイミング制御が非常にシビアになるという問題がある。また、上記アンバランスを改善するには配線遅延を調整する必要があるが、これは非常に困難であった。
同様の問題はプログラム時にも発生する。図24及び図25はそれぞれ、プログラム時におけるシステムのブロック図及び各種信号のタイミングチャートである。図示するように、この場合にもデータDATA_RAM、DATA_NANDにおいて、セットアップタイムtS1、tS2とホールドタイムtH1、tH2との間にアンバランスが生じる。
しかしながら、本実施形態に係る構成であると上記問題を解決出来る。すなわち、図18及び図20を用いて説明したように、各回路ブロックに使用する内部クロックを、ロード及びプログラム毎に切り替えている。更に、内部クロックの伝播方向をデータの伝播方向に合わせている。例えば、データを伝送する配線とクロックを伝送する配線とは並列に配置され、その配線長はほぼ等しくなる。従って、内部クロックに生じる遅延量は、データに生じる遅延量とほぼ等しくなり、上記問題が解決される。
より具体的には、データロード時においては、内部クロックCLK_LOAD1がNAND型フラッシュメモリ2に達するまでに必要な時間とECC部20に達するまでに必要な時間との差は、データDATA_NANDがNAND型フラッシュメモリ2からECC部20に達するまでに必要な時間にほぼ等しい。また、内部クロックCLK_LOAD2がECC部20からSRAM30に達するまでに必要な時間は、データDATA_RAMがECC部20からSRAM30に達するまでに必要な時間にほぼ等しい。従って、図19に示すように、データDATA_NAND、DATA_RAMについてのセットアップタイムtS1とホールドタイムtH1とをほぼ等しく出来る。
またデータプログラム時においては、内部クロックCLK_PG1がSRAM30からECC部20に達するまでに必要な時間と、データDATA_RAMがSRAM30からECC部20に達するまでに必要な時間はほぼ等しい。また、内部クロックCLK_PG2がECC部20からNAND型フラッシュメモリ2に達するまでに必要な時間は、データDATA_NANDがECC部20からNAND型フラッシュメモリ2に達するまでに必要な時間にほぼ等しい。従って、図21に示すように、データDATA_NAND、DATA_RAMについてのセットアップタイムtS2とホールドタイムtH2とをほぼ等しく出来る。
以上の結果、メモリシステム1内において各回路ブロック間でのデータ転送精度を向上出来、配線遅延によるジッター(jitter)を大幅に改善出来る。
以上のように、この発明の第1乃至第4の実施形態に係るメモリシステムであると、主記憶としてのNAND型フラッシュメモリ、バッファとしてのSRAM、エラー訂正機能を有するECC部、及びコントローラを同一半導体基板上に形成した半導体装置において、各ブロック間におけるデータ転送性能を向上出来る。これにより、メモリシステムの性能及び信頼性を向上出来る。
なお、上記第1、第2の実施形態は、第3の実施形態と組み合わせても良い。すなわち、データロード時においては第1または第2の実施形態で説明したデータ転送方法を使用し、データプログラム時においては第3の実施形態で説明したデータ転送方法を使用しても良い。また上記では第4の実施形態は、第1乃至第3の実施形態の少なくともいずれかと組み合わせても良いが、組み合わせない場合であっても良い。すなわち、第4の実施形態において、パリティをメインデータの後に転送する場合であっても良い。
また、第1乃至第3の実施形態において、各処理に要するクロック数(各回路ブロック間に要するクロック数や、ECC処理に要するクロック数)は一例に過ぎず、上記記載の場合と異なっていても良い。更に、4096ビット(512バイト)のメインデータをECC処理する場合について説明したが、ページバッファ12のサイズが2Kバイトの場合、図6、図14、または図16で説明したデータ転送を4回繰り返すことで、ページサイズのデータを転送出来る。
また、上記第3の実施形態では、転送処理Tb−pにより、パリティをDQバッファ31からECCバッファ21へ転送している。しかし、処理Ppにおいては、既に行われた処理Pm1〜Pm8の結果に応じてパリティが生成され、このパリティによってTb−pで生成されたパリティは上書きされる。従って、転送処理Tb−pを省略しても構わない。
データロード時も同様であり、パリティはECC処理に使用後は不要となる。従って、第1、第2の実施形態で説明した転送処理Tb−pは省略しても構わない。しかしながら、DQバッファ31及びメモリセルアレイ32にパリティを格納する領域を設け、この領域にメインデータと同様にパリティを転送することで、ECC処理でのパリティ生成が正常か否かを確認することが出来る。
更に、上記第4の実施形態ではクロックの立ち上がりエッジで同期してデータが入出力される場合を例に説明したが、立ち下がりエッジで入出力されても良い。
更に、上記第1乃至第4の実施形態では、NAND型フラッシュメモリ2、RAM部3、及びコントローラ部4がワンチップに集積された例を挙げて説明した。このようなメモリシステム2の具体例としては、「OneNAND(登録商標)」型のフラッシュメモリが挙げられる。しかし、必ずしもワンチップ化されている場合に限らず、NAND型フラッシュメモリ2、RAM部3、及びコントローラ部4が別々の半導体チップで実現されている場合であっても良い。
すなわち、上記実施形態に係るデータ転送方法は、
(1)NAND型フラッシュメモリ10からデータをページ単位で第1バッファ12に読み出すステップS10と、前記第1バッファ12に読み出したデータのうち、パリティを第2バッファ21に転送するステップS12と、前記パリティを前記第2バッファ21に転送した後、前記第1バッファ12に読み出したデータのうち、メインデータを前記第2バッファ21に転送するステップS14〜S17と、前記パリティを用いて、前記第2バッファ21に転送された前記メインデータのエラー訂正処理を行うステップS18と、前記エラー訂正処理の行われた前記メインデータを、第3バッファ31に転送するステップS19とを具備する。
(2)上記(1)において、前記メインデータはN個(Nは3以上の自然数)のグループD1〜D8に分割されて、順次、前記第1バッファ12から前記第2バッファ21へ転送され、i番目(iは自然数であり、i≦N)のグループDiが前記第1バッファ12から前記第2バッファ21に転送される期間に、(i−1)番目のグループD(i−1)のエラー訂正処理が行われ、且つエラー訂正処理済みの(i−2)番目のグループD(i−2)が前記第3バッファ31に転送される。
(3)上記(2)において、前記第2バッファ21は、それぞれがデータ保持可能な第1データ保持部23と第2データ保持部24とを備え、前記第1データ保持部23に前記i番目のグループDiが転送される期間において、前記第2データ保持部24は前記(i−1)番目のグループD(i−1)のエラー訂正処理に使用される。
(4)上記(1)において、前記NAND型フラッシュメモリ10は、前記メインデータを保持可能な第1領域17と、前記パリティを保持可能な第2領域18とを備え、前記第1乃至第3バッファ12、21、31はそれぞれ、前記第1領域17内の前記メインデータに対応する領域と、前記第2領域18内の前記パリティに対応する領域とを備える。
(5)上記(1)において、前記第1バッファ12からの前記第2バッファ21への前記メインデータの転送、前記メインデータの前記エラー訂正処理、及び前記第2バッファ21からの前記第3バッファ31への前記メインデータの転送は、前記メインデータを複数のグループに分割して行われる。
(6)第1バッファ31からメインデータを第2バッファ21へ転送するステップS41〜S44と、前記第2バッファ21へ転送された前記メインデータにつき、エラー訂正回路22がパリティを作成するステップS46と、前記メインデータと前記パリティとを第3バッファ12に転送するステップS47と、前記メインデータと前記パリティとを、ページ単位でNAND型フラッシュメモリ10にプログラムするステップS50とを具備し、前記メインデータはN個(Nは3以上の自然数)のグループD1〜D8に分割されて、順次、前記第1バッファ31から前記第2バッファ21へ転送され、i番目(iは自然数であり、(i+2)≦N)のグループDiが前記第2バッファ21から前記第3バッファ12に転送される期間に、(i+1)番目のグループD(i+1)につきパリティが生成され、且つ(i+2)番目のグループD(i+2)が前記第1バッファ31から前記第2バッファ21に転送される。
(8)上記(7)において、前記第2バッファ21は、それぞれがデータ保持可能な第1データ保持部23と第2データ保持部24とを備え、前記第1データ保持部23に前記i番目のグループDiが転送される期間において、前記第2データ保持部24は前記(i+1)番目のグループD(i+1)の前記パリティの生成に使用される。
(9)上記(7)において、前記第1バッファ31からの前記第2バッファ21への前記メインデータの転送、前記メインデータについての前記パリティの生成、及び前記第2バッファ21からの前記第3バッファ12への前記メインデータの転送は、前記メインデータを複数のグループに分割して行われる。
(9)上記(1)乃至(8)のいずれかにおいて、前記第1バッファと前記第2バッファとの間でデータを転送する第1転送経路のバス幅は、前記第2バッファと前記第3バッファとの間でデータを転送する第2転送経路のバス幅と等しい。
(10)上記(9)において、前記第2バッファ21は、前記メインデータの入力と出力とを時間的に平行して行う機能を有する。
更に、上記実施形態に係るメモリシステムは、
(11)データを保持可能なNAND型フラッシュメモリ2と、前記データについてのECC処理を行うECCシステム20と、前記NAND型フラッシュメモリ2に対する前記データの入出力に使用されるバッファメモリ30と、前記NAND型フラッシュメモリ2、前記ECCシステム20、及び前記バッファメモリ30の動作を制御するコントローラ4とを具備し、前記NAND型フラッシュメモリ2、前記ECCシステム20、前記バッファメモリ30、及び前記コントローラ4間におけるクロックの伝播方向が、前記データのロード時とプログラム時とで切り替わる。
(12)上記(11)において、第1クロックACLKを生成するクロック生成器16を更に備え、前記データのプログラム時には、前記データが前記バッファメモリ30から前記ECCシステム20を介して前記NAND型フラッシュメモリ2に転送され、
前記バッファメモリ30は、前記第1クロックACLKに基づいて第2クロックCLK_PG1を生成し、前記第2クロックCLK_PG1に同期して、前記第2クロックCLK_PG1と前記データを前記ECCシステム20へ転送し、
前記ECCシステム20は、前記データにつきパリティを生成すると共に、前記第2クロックに基づいて第3クロックCLK_PG2を生成し、前記第3クロックCLK_PG2に同期して、前記第3クロックCLK_PG2と前記データを前記NAND型フラッシュメモリ2に転送し、
前記NAND型フラッシュメモリ2は、前記第3クロックCLK_PG2に同期して、前記データを受信する。
(13)上記(11)において、第1クロックACLKを生成するクロック生成器16を更に備え、前記データのロード時には、前記コントローラ4が前記第1クロックACLKに基づいて第2クロックCLK_LOAD1を生成し、
前記NAND型フラッシュメモリ2は、前記第2クロックCLK_LOAD1に同期して前記データを前記ECCシステム20へ転送し、
前記ECCシステム20は、前記第2クロックCLK_LOAD1に同期して前記データを受信し、前記データにつきエラー検出及びエラー訂正を行うと共に、前記第2クロックCLK_LOAD1に基づいて第3クロックCLK_LOAD2を生成し、前記第3クロックCLK_LOAD2に同期して、前記第3クロックCLK_LOAD2と前記データを前記バッファメモリ30へ出力し、
前記バッファメモリ30は、前記第3クロックCLK_LOAD2に同期して、前記データを受信する。
(1)NAND型フラッシュメモリ10からデータをページ単位で第1バッファ12に読み出すステップS10と、前記第1バッファ12に読み出したデータのうち、パリティを第2バッファ21に転送するステップS12と、前記パリティを前記第2バッファ21に転送した後、前記第1バッファ12に読み出したデータのうち、メインデータを前記第2バッファ21に転送するステップS14〜S17と、前記パリティを用いて、前記第2バッファ21に転送された前記メインデータのエラー訂正処理を行うステップS18と、前記エラー訂正処理の行われた前記メインデータを、第3バッファ31に転送するステップS19とを具備する。
(2)上記(1)において、前記メインデータはN個(Nは3以上の自然数)のグループD1〜D8に分割されて、順次、前記第1バッファ12から前記第2バッファ21へ転送され、i番目(iは自然数であり、i≦N)のグループDiが前記第1バッファ12から前記第2バッファ21に転送される期間に、(i−1)番目のグループD(i−1)のエラー訂正処理が行われ、且つエラー訂正処理済みの(i−2)番目のグループD(i−2)が前記第3バッファ31に転送される。
(3)上記(2)において、前記第2バッファ21は、それぞれがデータ保持可能な第1データ保持部23と第2データ保持部24とを備え、前記第1データ保持部23に前記i番目のグループDiが転送される期間において、前記第2データ保持部24は前記(i−1)番目のグループD(i−1)のエラー訂正処理に使用される。
(4)上記(1)において、前記NAND型フラッシュメモリ10は、前記メインデータを保持可能な第1領域17と、前記パリティを保持可能な第2領域18とを備え、前記第1乃至第3バッファ12、21、31はそれぞれ、前記第1領域17内の前記メインデータに対応する領域と、前記第2領域18内の前記パリティに対応する領域とを備える。
(5)上記(1)において、前記第1バッファ12からの前記第2バッファ21への前記メインデータの転送、前記メインデータの前記エラー訂正処理、及び前記第2バッファ21からの前記第3バッファ31への前記メインデータの転送は、前記メインデータを複数のグループに分割して行われる。
(6)第1バッファ31からメインデータを第2バッファ21へ転送するステップS41〜S44と、前記第2バッファ21へ転送された前記メインデータにつき、エラー訂正回路22がパリティを作成するステップS46と、前記メインデータと前記パリティとを第3バッファ12に転送するステップS47と、前記メインデータと前記パリティとを、ページ単位でNAND型フラッシュメモリ10にプログラムするステップS50とを具備し、前記メインデータはN個(Nは3以上の自然数)のグループD1〜D8に分割されて、順次、前記第1バッファ31から前記第2バッファ21へ転送され、i番目(iは自然数であり、(i+2)≦N)のグループDiが前記第2バッファ21から前記第3バッファ12に転送される期間に、(i+1)番目のグループD(i+1)につきパリティが生成され、且つ(i+2)番目のグループD(i+2)が前記第1バッファ31から前記第2バッファ21に転送される。
(8)上記(7)において、前記第2バッファ21は、それぞれがデータ保持可能な第1データ保持部23と第2データ保持部24とを備え、前記第1データ保持部23に前記i番目のグループDiが転送される期間において、前記第2データ保持部24は前記(i+1)番目のグループD(i+1)の前記パリティの生成に使用される。
(9)上記(7)において、前記第1バッファ31からの前記第2バッファ21への前記メインデータの転送、前記メインデータについての前記パリティの生成、及び前記第2バッファ21からの前記第3バッファ12への前記メインデータの転送は、前記メインデータを複数のグループに分割して行われる。
(9)上記(1)乃至(8)のいずれかにおいて、前記第1バッファと前記第2バッファとの間でデータを転送する第1転送経路のバス幅は、前記第2バッファと前記第3バッファとの間でデータを転送する第2転送経路のバス幅と等しい。
(10)上記(9)において、前記第2バッファ21は、前記メインデータの入力と出力とを時間的に平行して行う機能を有する。
更に、上記実施形態に係るメモリシステムは、
(11)データを保持可能なNAND型フラッシュメモリ2と、前記データについてのECC処理を行うECCシステム20と、前記NAND型フラッシュメモリ2に対する前記データの入出力に使用されるバッファメモリ30と、前記NAND型フラッシュメモリ2、前記ECCシステム20、及び前記バッファメモリ30の動作を制御するコントローラ4とを具備し、前記NAND型フラッシュメモリ2、前記ECCシステム20、前記バッファメモリ30、及び前記コントローラ4間におけるクロックの伝播方向が、前記データのロード時とプログラム時とで切り替わる。
(12)上記(11)において、第1クロックACLKを生成するクロック生成器16を更に備え、前記データのプログラム時には、前記データが前記バッファメモリ30から前記ECCシステム20を介して前記NAND型フラッシュメモリ2に転送され、
前記バッファメモリ30は、前記第1クロックACLKに基づいて第2クロックCLK_PG1を生成し、前記第2クロックCLK_PG1に同期して、前記第2クロックCLK_PG1と前記データを前記ECCシステム20へ転送し、
前記ECCシステム20は、前記データにつきパリティを生成すると共に、前記第2クロックに基づいて第3クロックCLK_PG2を生成し、前記第3クロックCLK_PG2に同期して、前記第3クロックCLK_PG2と前記データを前記NAND型フラッシュメモリ2に転送し、
前記NAND型フラッシュメモリ2は、前記第3クロックCLK_PG2に同期して、前記データを受信する。
(13)上記(11)において、第1クロックACLKを生成するクロック生成器16を更に備え、前記データのロード時には、前記コントローラ4が前記第1クロックACLKに基づいて第2クロックCLK_LOAD1を生成し、
前記NAND型フラッシュメモリ2は、前記第2クロックCLK_LOAD1に同期して前記データを前記ECCシステム20へ転送し、
前記ECCシステム20は、前記第2クロックCLK_LOAD1に同期して前記データを受信し、前記データにつきエラー検出及びエラー訂正を行うと共に、前記第2クロックCLK_LOAD1に基づいて第3クロックCLK_LOAD2を生成し、前記第3クロックCLK_LOAD2に同期して、前記第3クロックCLK_LOAD2と前記データを前記バッファメモリ30へ出力し、
前記バッファメモリ30は、前記第3クロックCLK_LOAD2に同期して、前記データを受信する。
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
1…メモリシステム、2…NAND型フラッシュメモリ、3…RAM部、4…コントローラ部、10、32…メモリセルアレイ、11、34…ロウデコーダ、12…ページバッファ、13…電圧発生回路、14…シーケンサ、15、16…オシレータ、17…第1領域、18…第2領域、19…メモリセルユニット、20…ECC部、21…ECCバッファ、22…ECCエンジン、23…第1保持部、24…第2保持部、25…第3保持部、26…メインデータ保持部、27…パリティ保持部、28、35、80…入出力部、30…SRAM、31…DQバッファ、33…センスアンプ、40…インターフェース部、41、42…バーストバッファ、43…インターフェース、50…アクセスコントローラ、60…レジスタ、61…コマンドユーザインターフェース、62…ステートマシン、63…アドレス/コマンド発生回路、64…アドレス/0タイミング発生回路、70〜72…スイッチ
Claims (6)
- NAND型フラッシュメモリからデータをページ単位で第1バッファに読み出すステップと、
前記第1バッファに読み出したデータのうち、パリティを第2バッファに転送するステップと、
前記パリティを前記第2バッファに転送した後、前記第1バッファに読み出したデータのうち、メインデータを前記第2バッファに転送するステップと、
前記パリティを用いて、前記第2バッファに転送された前記メインデータのエラー訂正処理を行うステップと、
前記エラー訂正処理の行われた前記メインデータを、第3バッファに転送するステップと
を具備することを特徴とするデータ転送方法。 - 前記メインデータはN個(Nは3以上の自然数)のグループに分割されて、順次、前記第1バッファから前記第2バッファへ転送され、
i番目(iは自然数であり、i≦N)のグループが前記第1バッファから前記第2バッファに転送される期間に、(i−1)番目のグループのエラー訂正処理が行われ、且つエラー訂正処理済みの(i−2)番目のグループが前記第3バッファに転送される
ことを特徴とする請求項1記載のデータ転送方法。 - 前記第2バッファは、それぞれがデータ保持可能な第1データ保持部と第2データ保持部とを備え、
前記第1データ保持部に前記i番目のグループが転送される期間において、前記第2データ保持部は前記(i−1)番目のグループのエラー訂正処理に使用される
ことを特徴とする請求項2記載のデータ転送方法。 - 第1バッファからメインデータを第2バッファへ転送するステップと、
前記第2バッファへ転送された前記メインデータにつき、エラー訂正回路がパリティを作成するステップと、
前記メインデータと前記パリティとを第3バッファに転送するステップと、
前記メインデータと前記パリティとを、ページ単位でNAND型フラッシュメモリにプログラムするステップと
を具備し、前記メインデータはN個(Nは3以上の自然数)のグループに分割されて、順次、前記第1バッファから前記第2バッファへ転送され、
i番目(iは自然数であり、(i+2)≦N)のグループが前記第2バッファから前記第3バッファに転送される期間に、(i+1)番目のグループにつきパリティが生成され、且つ(i+2)番目のグループが前記第1バッファから前記第2バッファに転送される
ことを特徴とするデータ転送方法。 - 前記第2バッファは、それぞれがデータ保持可能な第1データ保持部と第2データ保持部とを備え、
前記第1データ保持部に前記i番目のグループが転送される期間において、前記第2データ保持部は前記(i+1)番目のグループの前記パリティの生成に使用される
ことを特徴とする請求項4記載のデータ転送方法。 - 前記第1バッファと前記第2バッファとの間でデータを転送する第1転送経路のバス幅は、前記第2バッファと前記第3バッファとの間でデータを転送する第2転送経路のバス幅と等しい
ことを特徴とする請求項1乃至5いずれか1項記載のデータ転送方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008164949A JP2010009141A (ja) | 2008-06-24 | 2008-06-24 | データ転送方法 |
US12/406,336 US8239744B2 (en) | 2008-06-24 | 2009-03-18 | Memory system with semiconductor memory and its data transfer method |
KR1020090056069A KR101088235B1 (ko) | 2008-06-24 | 2009-06-23 | 반도체 메모리를 갖는 메모리 시스템 및 그 데이터 전송 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008164949A JP2010009141A (ja) | 2008-06-24 | 2008-06-24 | データ転送方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010009141A true JP2010009141A (ja) | 2010-01-14 |
Family
ID=41432524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008164949A Abandoned JP2010009141A (ja) | 2008-06-24 | 2008-06-24 | データ転送方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8239744B2 (ja) |
JP (1) | JP2010009141A (ja) |
KR (1) | KR101088235B1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015156227A (ja) * | 2012-06-22 | 2015-08-27 | 華邦電子股▲ふん▼有限公司 | オンチップのnand型フラッシュメモリおよびその不良ブロック管理方法 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012119034A (ja) * | 2010-11-30 | 2012-06-21 | Toshiba Corp | メモリシステム |
DE102011010610B4 (de) * | 2011-02-08 | 2014-03-20 | Austriamicrosystems Ag | Schaltung zum Generieren einer Startsequenz und Verfahren zum Generieren einer Startfrequenz |
JP6072449B2 (ja) * | 2012-07-09 | 2017-02-01 | ルネサスエレクトロニクス株式会社 | 半導体記憶回路及びその動作方法 |
JP6041610B2 (ja) * | 2012-10-02 | 2016-12-14 | キヤノン株式会社 | 情報処理装置及びその制御方法、並びに、そのプログラムと記憶媒体 |
KR102048765B1 (ko) * | 2013-01-15 | 2020-01-22 | 삼성전자주식회사 | 메모리 시스템의 동작 방법 및 메모리 시스템 |
CN103092717B (zh) * | 2013-01-18 | 2016-03-02 | 深圳市硅格半导体有限公司 | 闪存的数据处理方法及装置 |
US9454422B2 (en) * | 2014-01-30 | 2016-09-27 | International Business Machines Corporation | Error feedback and logging with memory on-chip error checking and correcting (ECC) |
JP6131207B2 (ja) * | 2014-03-14 | 2017-05-17 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
US10395753B2 (en) * | 2014-08-28 | 2019-08-27 | Winbond Electronics Corp. | Semiconductor memory device and programming method thereof |
TWI562154B (en) | 2015-02-17 | 2016-12-11 | Silicon Motion Inc | Methods for reading data from a storage unit of a flash memory and apparatuses using the same |
US11227653B1 (en) | 2016-12-06 | 2022-01-18 | Gsi Technology, Inc. | Storage array circuits and methods for computational memory cells |
US10891076B1 (en) | 2016-12-06 | 2021-01-12 | Gsi Technology, Inc. | Results processing circuits and methods associated with computational memory cells |
US10998040B2 (en) | 2016-12-06 | 2021-05-04 | Gsi Technology, Inc. | Computational memory cell and processing array device using the memory cells for XOR and XNOR computations |
US10521229B2 (en) | 2016-12-06 | 2019-12-31 | Gsi Technology, Inc. | Computational memory cell and processing array device using memory cells |
US10847212B1 (en) | 2016-12-06 | 2020-11-24 | Gsi Technology, Inc. | Read and write data processing circuits and methods associated with computational memory cells using two read multiplexers |
US10777262B1 (en) | 2016-12-06 | 2020-09-15 | Gsi Technology, Inc. | Read data processing circuits and methods associated memory cells |
US10860320B1 (en) | 2016-12-06 | 2020-12-08 | Gsi Technology, Inc. | Orthogonal data transposition system and method during data transfers to/from a processing array |
US10770133B1 (en) | 2016-12-06 | 2020-09-08 | Gsi Technology, Inc. | Read and write data processing circuits and methods associated with computational memory cells that provides write inhibits and read bit line pre-charge inhibits |
US10847213B1 (en) | 2016-12-06 | 2020-11-24 | Gsi Technology, Inc. | Write data processing circuits and methods associated with computational memory cells |
US10943648B1 (en) | 2016-12-06 | 2021-03-09 | Gsi Technology, Inc. | Ultra low VDD memory cell with ratioless write port |
US10854284B1 (en) | 2016-12-06 | 2020-12-01 | Gsi Technology, Inc. | Computational memory cell and processing array device with ratioless write port |
CN110058964B (zh) * | 2018-01-18 | 2023-05-02 | 伊姆西Ip控股有限责任公司 | 数据恢复方法、数据恢复***和计算机可读介质 |
JP2019204565A (ja) * | 2018-05-22 | 2019-11-28 | 東芝メモリ株式会社 | 半導体記憶装置及びメモリシステム |
US10930341B1 (en) | 2019-06-18 | 2021-02-23 | Gsi Technology, Inc. | Processing array device that performs one cycle full adder operation and bit line read/write logic features |
US10958272B2 (en) | 2019-06-18 | 2021-03-23 | Gsi Technology, Inc. | Computational memory cell and processing array device using complementary exclusive or memory cells |
US10877731B1 (en) | 2019-06-18 | 2020-12-29 | Gsi Technology, Inc. | Processing array device that performs one cycle full adder operation and bit line read/write logic features |
CN116092566A (zh) * | 2021-10-29 | 2023-05-09 | 长鑫存储技术有限公司 | 基础芯片、存储***以及半导体结构 |
CN116072200A (zh) * | 2021-10-29 | 2023-05-05 | 长鑫存储技术有限公司 | 基础芯片、存储***以及半导体结构 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3527873B2 (ja) * | 1999-09-03 | 2004-05-17 | 松下電器産業株式会社 | 誤り訂正装置 |
US6957378B2 (en) * | 2001-06-04 | 2005-10-18 | Kabushiki Kaisha Toshiba | Semiconductor memory device |
JP4112849B2 (ja) | 2001-11-21 | 2008-07-02 | 株式会社東芝 | 半導体記憶装置 |
US20040083334A1 (en) | 2002-10-28 | 2004-04-29 | Sandisk Corporation | Method and apparatus for managing the integrity of data in non-volatile memory system |
KR100543447B1 (ko) | 2003-04-03 | 2006-01-23 | 삼성전자주식회사 | 에러정정기능을 가진 플래쉬메모리장치 |
KR100546348B1 (ko) | 2003-07-23 | 2006-01-26 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그 데이터 저장 방법 |
JP4135680B2 (ja) | 2004-05-31 | 2008-08-20 | ソニー株式会社 | 半導体記憶装置および信号処理システム |
KR20070076849A (ko) | 2006-01-20 | 2007-07-25 | 삼성전자주식회사 | 메모리 카드의 카피백 동작을 수행하는 장치 및 방법 |
-
2008
- 2008-06-24 JP JP2008164949A patent/JP2010009141A/ja not_active Abandoned
-
2009
- 2009-03-18 US US12/406,336 patent/US8239744B2/en active Active
- 2009-06-23 KR KR1020090056069A patent/KR101088235B1/ko active IP Right Grant
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015156227A (ja) * | 2012-06-22 | 2015-08-27 | 華邦電子股▲ふん▼有限公司 | オンチップのnand型フラッシュメモリおよびその不良ブロック管理方法 |
Also Published As
Publication number | Publication date |
---|---|
KR101088235B1 (ko) | 2011-11-30 |
US20090319871A1 (en) | 2009-12-24 |
US8239744B2 (en) | 2012-08-07 |
KR20100002147A (ko) | 2010-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101088235B1 (ko) | 반도체 메모리를 갖는 메모리 시스템 및 그 데이터 전송 방법 | |
US8375273B2 (en) | Semiconductor device including a NAND flash memory | |
US7372744B2 (en) | Memory system which copies successive pages, and data copy method therefor | |
US6882569B2 (en) | Non-volatile semiconductor memory device | |
KR101636248B1 (ko) | 플래시 메모리 장치, 이를 포함하는 플래시 메모리 시스템 및 이의 프로그램 방법 | |
US8472247B2 (en) | Non-volatile memory device and method for programming the device, and memory system | |
KR101532754B1 (ko) | 비휘발성 메모리 장치의 프로그램 방법 | |
JP2010009642A (ja) | 半導体記憶装置およびそのテスト方法 | |
US20090319863A1 (en) | Error-correcting system of semiconductor memory, error-correcting method, and memory system with error-correcting system | |
JP2009158015A (ja) | 不揮発性半導体記憶装置 | |
US20180277180A1 (en) | Memory system | |
JP2011100518A (ja) | 半導体装置及びその制御方法 | |
US10726911B2 (en) | Memory system | |
US20120159284A1 (en) | Semiconductor memory device capable of transferring various types of data | |
JP2012119034A (ja) | メモリシステム | |
JP4101583B2 (ja) | 消去動作時間を短縮したフラッシュメモリ | |
US8315098B2 (en) | Memory system | |
JP5017443B2 (ja) | メモリシステム | |
JP2013030251A (ja) | メモリシステム | |
TWI776607B (zh) | 半導體裝置及連續讀出方法 | |
US11868654B2 (en) | Semiconductor device | |
US11003393B2 (en) | Nonvolatile memory device and method of controlling initialization of the same | |
JP4988048B1 (ja) | 半導体記憶装置 | |
JP2012119033A (ja) | メモリシステム | |
JP2012168719A (ja) | メモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20100913 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20120702 |