(57)【要約】【課題】動作性能を向上出来るデータ転送方法を提供すること。【解決手段】ＮＡＮＤ型フラッシュメモリ１０からデータをページ単位で第１バッファ１２に読み出すステップＳ１０と、前記第１バッファ１２に読み出したデータのうち、パリティを第２バッファ２１に転送するステップＳ１２と、前記パリティを前記第２バッファ２１に転送した後、前記第１バッファ１２に読み出したデータのうち、メインデータを前記第２バッファ２１に転送するステップＳ１４〜Ｓ１７と、前記パリティを用いて、前記第２バッファ２１に転送された前記メインデータのエラー訂正処理を行うステップＳ１８と、前記エラー訂正処理の行われた前記メインデータを、第３バッファ３１に転送するステップＳ１９とを具備する。【選択図】図５
2010009141.tif 000002
【特許請求の範囲】
【請求項１】
ＮＡＮＤ型フラッシュメモリからデータをページ単位で第１バッファに読み出すステップと、
前記第１バッファに読み出したデータのうち、パリティを第２バッファに転送するステップと、
前記パリティを前記第２バッファに転送した後、前記第１バッファに読み出したデータのうち、メインデータを前記第２バッファに転送するステップと、
前記パリティを用いて、前記第２バッファに転送された前記メインデータのエラー訂正処理を行うステップと、
前記エラー訂正処理の行われた前記メインデータを、第３バッファに転送するステップと
を具備することを特徴とするデータ転送方法。
【請求項２】
前記メインデータはＮ個（Ｎは３以上の自然数）のグループに分割されて、順次、前記第１バッファから前記第２バッファへ転送され、
ｉ番目（ｉは自然数であり、ｉ≦Ｎ）のグループが前記第１バッファから前記第２バッファに転送される期間に、（ｉ−１）番目のグループのエラー訂正処理が行われ、且つエラー訂正処理済みの（ｉ−２）番目のグループが前記第３バッファに転送される
ことを特徴とする請求項１記載のデータ転送方法。
【請求項３】
前記第２バッファは、それぞれがデータ保持可能な第１データ保持部と第２データ保持部とを備え、
前記第１データ保持部に前記ｉ番目のグループが転送される期間において、前記第２データ保持部は前記（ｉ−１）番目のグループのエラー訂正処理に使用される
ことを特徴とする請求項２記載のデータ転送方法。
【請求項４】
第１バッファからメインデータを第２バッファへ転送するステップと、
前記第２バッファへ転送された前記メインデータにつき、エラー訂正回路がパリティを作成するステップと、
前記メインデータと前記パリティとを第３バッファに転送するステップと、
前記メインデータと前記パリティとを、ページ単位でＮＡＮＤ型フラッシュメモリにプログラムするステップと
を具備し、前記メインデータはＮ個（Ｎは３以上の自然数）のグループに分割されて、順次、前記第１バッファから前記第２バッファへ転送され、
ｉ番目（ｉは自然数であり、（ｉ＋２）≦Ｎ）のグループが前記第２バッファから前記第３バッファに転送される期間に、（ｉ＋１）番目のグループにつきパリティが生成され、且つ（ｉ＋２）番目のグループが前記第１バッファから前記第２バッファに転送される
ことを特徴とするデータ転送方法。
【請求項５】
前記第２バッファは、それぞれがデータ保持可能な第１データ保持部と第２データ保持部とを備え、
前記第１データ保持部に前記ｉ番目のグループが転送される期間において、前記第２データ保持部は前記（ｉ＋１）番目のグループの前記パリティの生成に使用される
ことを特徴とする請求項４記載のデータ転送方法。
【請求項６】
前記第１バッファと前記第２バッファとの間でデータを転送する第１転送経路のバス幅は、前記第２バッファと前記第３バッファとの間でデータを転送する第２転送経路のバス幅と等しい
ことを特徴とする請求項１乃至５いずれか１項記載のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ転送方法に関する。例えば、エラー訂正機能を有する不揮発性半導体メモリにおけるデータ転送方法に関する。
【背景技術】
【０００２】
従来、ＥＣＣ（Error Checking and Correcting）機能を有する半導体メモリが知られている。ＥＣＣ機能は、読み出したデータの中にエラーが存在するか否かを検査し、もしエラーが存在すれば、そのエラーを正しく訂正する機能である（例えば特許文献１参照）。
【０００３】
また従来、不揮発性の半導体メモリとして、ＮＡＮＤ型フラッシュメモリが広く知られている。ＮＡＮＤ型フラッシュメモリでは、ある確率でエラーが発生するため、ＥＣＣ機能を搭載することが重要である。
【０００４】
しかしながら、大容量化が要求されるＮＡＮＤ型フラッシュメモリにおいては、従来のＥＣＣ機能であると、エラー訂正処理による待ち時間が長くなり、データの読み出し及び書き込み速度が低下するという問題があった。
【特許文献１】米国特許７，２９０，０８２号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
この発明は、動作性能を向上出来るデータ転送方法を提供する。
【課題を解決するための手段】
【０００６】
この発明の一態様に係るデータ転送方法は、ＮＡＮＤ型フラッシュメモリからデータをページ単位で第１バッファに読み出すステップと、前記第１バッファに読み出したデータのうち、パリティを第２バッファに転送するステップと、前記パリティを前記第２バッファに転送した後、前記第１バッファに読み出したデータのうち、メインデータを前記第２バッファに転送するステップと、前記パリティを用いて、前記第２バッファに転送された前記メインデータのエラー訂正処理を行うステップと、前記エラー訂正処理の行われた前記メインデータを、第３バッファに転送するステップとを具備する。
【発明の効果】
【０００７】
本発明によれば、動作性能を向上出来るデータ転送方法を提供出来る。
【発明を実施するための最良の形態】
【０００８】
以下、この発明の実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【０００９】
［第１の実施形態］  
この発明の第１の実施形態に係るデータ転送方法について、図１を用いて説明する。図１は、本実施形態に係るデータ転送方法を実現するメモリシステムのブロック図である。
【００１０】
＜メモリシステムの全体構成＞  
図示するように、本実施形態に係るメモリシステム１は、大まかにはＮＡＮＤ型フラッシュメモリ２、ＲＡＭ部３、及びコントローラ部４を備えている。そしてＮＡＮＤ型フラッシュメモリ２、ＲＡＭ部３、及びコントローラ部４は、同一の半導体基板上に形成され、１つのチップに集積されている。以下、各ブロックの詳細について説明する。
【００１１】
＜ＮＡＮＤ型フラッシュメモリ２＞  
ＮＡＮＤ型フラッシュメモリ２は、メモリシステム１の主記憶部として機能する。図示するようにＮＡＮＤ型フラッシュメモリ２は、メモリセルアレイ１０、ロウデコーダ１１、ページバッファ１２、電圧発生回路１３、シーケンサ１４、及びオシレータ１５、１６を備えている。
【００１２】
メモリセルアレイ１０は、データを保持可能な複数のメモリセルトランジスタを備えている。図２はメモリセルアレイ１０の回路図である。図示するように、メモリセルアレイ１０は大まかには第１領域１７と第２領域１８とを含む。第１領域１７は、ユーザデータ等の正味のデータ（以下、メインデータと呼ぶ）を保持する。他方、第２領域１８は第１領域１７のスペア領域として用いられ、例えばエラー訂正用の情報（パリティ等）を保持する。
【００１３】
第１領域１７及び第２領域１８はそれぞれ、複数のメモリセルユニット１９を備えている。メモリセルユニット１９の各々は、例えば３２個のメモリセルトランジスタＭＴ０〜ＭＴ３１と、選択トランジスタＳＴ１、ＳＴ２とを含んでいる。以下、メモリセルトランジスタＭＴ０〜ＭＴ３１を区別しない場合には、単にメモリセルトランジスタＭＴと呼ぶ。メモリセルトランジスタＭＴは、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（例えば浮遊ゲート）と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを有する積層ゲート構造を備えている。なお、メモリセルトランジスタＭＴの個数は３２個に限られず、８個や１６個、６４個、１２８個、２５６個等であってもよく、その数は限定されるものではない。また、メモリセルトランジスタＭＴは、窒化膜に電子をトラップさせる方式を用いたＭＯＮＯＳ（Metal Oxide Nitride Oxide Silicon）構造であっても良い。
【００１４】
メモリセルトランジスタＭＴは、隣接するもの同士でソース、ドレインを共有している。そして、選択トランジスタＳＴ１、ＳＴ２間に、その電流経路が直列接続されるようにして配置されている。直列接続されたメモリセルトランジスタＭＴの一端側のドレインは選択トランジスタＳＴ１のソースに接続され、他端側のソースは選択トランジスタＳＴ２のドレインに接続されている。
【００１５】
同一行にあるメモリセルトランジスタＭＴの制御ゲートは、ワード線ＷＬ０〜ＷＬ３１のいずれかに共通接続される。また同一行にある選択トランジスタＳＴ１、ＳＴ２のゲートは、それぞれセレクトゲート線ＳＧＤ、ＳＧＳに共通接続されている。なお説明の簡単化のため、以下ではワード線ＷＬ０〜ＷＬ３１を、単にワード線ＷＬと呼ぶことがある。ワード線ＷＬ及びセレクトゲート線ＳＧＤ、ＳＧＳは、第１領域１７と第２領域１８とで共通に用いられる。
【００１６】
第１領域１７において同一列にある選択トランジスタＳＴ１のドレインは、ビット線ＢＬ０〜ＢＬｎ（ｎは自然数）に共通接続される。また、第２領域１８において同一列にある選択トランジスタＳＴ１のドレインは、ビット線ＢＬ（ｎ＋１）〜ＢＬｍ（ｍは自然数）に共通接続される。ビット線ＢＬ０〜ＢＬｍについても、単にビット線ＢＬと呼ぶことがある。選択トランジスタＳＴ２のソースはソース線ＳＬに共通接続される。なお、選択トランジスタＳＴ１、ＳＴ２は必ずしも両方必要ではなく、メモリセルユニット１９を選択出来るのであればいずれか一方のみが設けられていても良い。
【００１７】
上記構成において、同一のワード線ＷＬに接続された複数のメモリセルトランジスタＭＴには一括してデータが書き込まれ、または読み出され、この単位をページと呼ぶ。更に、同一行にある複数のメモリセルユニット１９は一括してデータが消去され、この単位をメモリブロックと呼ぶ。
【００１８】
各々のメモリセルトランジスタＭＴは、例えば、浮遊ゲートに注入された電子の多寡によるトランジスタの閾値電圧の変化に応じて、１ビットのデータを保持することが可能である。なお、閾値電圧の制御を細分化し、各々のメモリセルトランジスタＭＴに２ビット以上のデータを保持する構成としても良い。
【００１９】
図３は、図２に示すメモリセルアレイ１０から読み出される、またはメモリセルアレイ１０にプログラムされる１ページ分のデータを模式的に示し、ページバッファ１２の構成にも対応する図である。
【００２０】
図示するように、第１領域１７から読み出される、または第１領域１７にプログラムされるメインデータは、例えば５１２バイトのサイズを有する４つのセクタ（第１セクタ〜第４セクタ）を含み、そのサイズは（５１２バイト×４）＝２０４８バイト（＝２Ｋバイト、但しＫは１０２４）である。更に、第２領域１８に対しては、例えば６４バイトのデータがプログラムされ、また読み出される。エラー訂正用のパリティは、セクタ毎に例えば８０ビットずつ用意される。従って、メインデータが４つのセクタを含む場合には、第２領域１８に対応する６４バイトのデータのうち、（８０ビット×４）＝３２０ビットがエラー訂正用のパリティである。
【００２１】
以上のように、１ページのデータサイズは（２０４８＋６４）バイトであり、このサイズのデータがメモリセルアレイ１０に一括してプログラムされ、または読み出される。データは、同一のワード線ＷＬに接続された全てのメモリセルトランジスタＭＴから読み出されても良い。この場合、第１領域１７に接続されるビット線ＢＬの数は１６３８４本（ｎ＝１６３８３）であり、第２領域に接続されるビット線ＢＬの数は５１２本（ｍ＝１６８９５）である。しかし、例えば偶数ビット線毎、または奇数ビット線毎にデータのプログラム及び読み出しが行われても良い。この場合は、ビット線ＢＬの本数は倍となる。
【００２２】
引き続き図１に戻って、ＮＡＮＤ型フラッシュメモリ２の構成について説明を続ける。ロウデコーダ１１は、データのプログラム、読み出し、及び消去動作の際に、ワード線ＷＬ及びセレクトゲート線ＳＧＤ、ＳＧＳを選択する。そして、ワード線ＷＬ及びセレクトゲート線ＳＧＤ、ＳＧＳに対して、必要な電圧を印加する。
【００２３】
ページバッファ１２はページサイズのデータを保持可能とされ、データのプログラム動作時には、ＲＡＭ部３から与えられるデータを一時的に保持し、メモリセルアレイ１０にデータを書き込む。他方、読み出し動作時には、メモリセルアレイ１０から読み出されたデータを一時的に保持し、ＲＡＭ部３へ転送する。そして図３に示すように、そのうちの一部の領域がメインデータ保持用として使用され、残りがパリティ等の保持用として使用される。
【００２４】
電圧発生回路１３は、外部から与えられる電圧を昇圧または降圧することにより、データのプログラム、読み出し、及び消去に必要な電圧を発生する。そして発生した電圧を、例えばロウデコーダ１１に供給する。電圧発生回路１３で発生された電圧が、ワード線ＷＬに印加される。
【００２５】
シーケンサ１４は、ＮＡＮＤ型フラッシュメモリ２全体の動作を司る。すなわち、コントローラ部４からプログラム命令（Program）、ロード命令（Load）、または消去命令（図示せず）を受けると、これに応答して、データのプログラム、読み出し、及び消去を実行するためのシーケンスを実行する。そして、このシーケンスに従って、電圧発生回路１３やページバッファ１２の動作を制御する。
【００２６】
オシレータ１５は内部クロックＩＣＬＫを生成する。すなわち、クロック生成器として機能する。そしてオシレータ１５は、生成した内部クロックＩＣＬＫをシーケンサ１４に供給する。シーケンサ１４は、この内部クロックＩＣＬＫに同期して動作する。
【００２７】
オシレータ１６は内部クロックＡＣＬＫを生成する。すなわち、クロック生成器として機能する。そしてオシレータ１６は、生成した内部クロックＡＣＬＫをコントローラ部４やＲＡＭ部３へ供給する。内部クロックＡＣＬＫは、コントローラ部４やＲＡＭ部３の動作の基準となるクロックである。
【００２８】
＜ＲＡＭ部３＞  
次に、引き続き図１を参照しつつ、ＲＡＭ部３について説明する。ＲＡＭ部３は、大まかにはＥＣＣ部２０、ＳＲＡＭ（Static Ramdom Access Memory）３０、インターフェース部４０、及びアクセスコントローラ５０を備えている。以下、それぞれについて説明する。
【００２９】
なお、本実施形態に係るメモリシステム１では、ＮＡＮＤ型フラッシュメモリ２が主記憶部として機能し、ＲＡＭ部３のＳＲＡＭ３０がバッファとして機能する。従って、ＮＡＮＤ型フラッシュメモリ２からデータを外部に読み出す際には、まずＮＡＮＤ型フラッシュメモリ２のメモリセルアレイ１０から読み出されたデータが、ページバッファ１２を介してＲＡＭ部３のＳＲＡＭ３０に格納される。その後、ＳＲＡＭ３０内のデータがインターフェース部４０に転送されて、外部に出力される。他方、データをＮＡＮＤ型フラッシュメモリ２に記憶させる際には、まず外部から与えられたデータが、インターフェース部４０を介してＲＡＭ部３内のＳＲＡＭ３０に格納される。その後、ＳＲＡＭ３０内のデータがページバッファ１２へ転送されて、メモリセルアレイ１０に書き込まれる。
【００３０】
以下では、データがメモリセルアレイ１０から読み出されてから、ページバッファ１２を介してＳＲＡＭ３０に転送されるまでの動作を、データの“ロード（load）”と呼ぶ。また、ＳＲＡＭ３０内のデータが、インターフェース部４０内において後述するバーストバッファ４１、４２を介してインターフェース４３に転送されるまでの動作を、データの“リード（read）”と呼ぶ。
【００３１】
更に、ＮＡＮＤ型フラッシュメモリ２に記憶させるべきデータが、インターフェース４３からバーストバッファ４１、４２を介してＳＲＡＭ３０に転送されるまでの動作を、データの“ライト（write）”と呼ぶ。また、ＳＲＡＭ３０内のデータがページバッファ１２に転送されて、ＮＡＮＤ型フラッシュメモリ２のメモリセルアレイ１０に書き込まれるまでの動作を、データの“プログラム（program）”と呼ぶ。
【００３２】
＜＜ＥＣＣ部２０＞＞  
ＥＣＣ部２０は、データについてのエラー検出及びエラー訂正、並びにパリティの生成（以下、これらをまとめてＥＣＣ処理と呼ぶことがある）を行う。すなわち、データのロード時には、ＮＡＮＤ型フラッシュメモリ２から読み出されたデータについてエラーの検出及び訂正を行う。他方、データのプログラム時には、プログラムすべきデータについてパリティの生成を行う。ＥＣＣ部２０は、ＥＣＣバッファ２１及びＥＣＣエンジン２２を備えている。
【００３３】
ＥＣＣバッファ２１は、ＮＡＮＤバスによりＮＡＮＤ型フラッシュメモリ２のページバッファ１２と接続され、ＥＣＣバスによりＳＲＡＭ３０と接続される。これらのバス幅は共に等しく、例えば６４ビットである。そしてデータのロード時には、ページバッファ１２からＮＡＮＤバスを介して転送されるデータを保持すると共に、ＥＣＣ処理済みのデータをＳＲＡＭ３０へＥＣＣバスを介して転送する。他方、データのプログラム時には、ＳＲＡＭ３０からＥＣＣバスを介して転送されるデータを保持すると共に、転送されたデータとパリティとをページバッファ１２へＮＡＮＤバスを介して転送する。
【００３４】
ＥＣＣエンジン２２は、ＥＣＣバッファ２１に保持されるデータを用いてＥＣＣ処理を行う。ＥＣＣエンジンは、例えばハミングコードを用いた１ビット訂正方式を用いる。そして、訂正処理に必要な最小限のパリティデータを使用する。ＥＣＣエンジン２２は、図３で説明した各セクタにつき、５１２ビット単位でＥＣＣ処理を行う。つまり、２ｋビット（ｋは自然数）のうちの１ビットを訂正するためには（ｋ＋１）ビットのパリティを必要とする。よって、５１２ビット単位でＥＣＣ処理を行う場合には、ｋ＝９であるので、５１２ビットあたり１０ビットのパリティを使用する。
【００３５】
つまりＥＣＣエンジン２２は、データロード時には、５１２ビット毎に１０ビットのパリティを用いてシンドロームを生成し、これによりエラー検出を行う。そしてエラーが発見された際には、これを訂正する。他方、データプログラム時には、５１２ビット毎に１０ビットのパリティを生成する。
【００３６】
図４は、ＥＣＣ部２０、ページバッファ１２、及びＤＱバッファ３１のブロック図である。ＤＱバッファ３１は、後述するＳＲＡＭ３０の備えるバッファである。図示するように、ＥＣＣバッファ２１は第１〜第３保持部２３〜２５を備えている。第１〜第３保持部２３は、ページバッファ１２及びＤＱバッファ３１との間で、例えば６４ビット単位でデータの転送を行う。第１、第２保持部２３、２４はそれぞれ、５１２ビット分のメインデータを保持可能とされる。また第３保持部２５は、データロード時にはページバッファ１２から転送されるパリティを保持し、データプログラム時にはＥＣＣエンジン２２で生成されたパリティを保持する。そしてＥＣＣエンジン２２は、第１〜第３保持部２３〜２５内のデータを用いてＥＣＣ処理を実行する。
【００３７】
＜＜ＳＲＡＭ３０＞＞  
次に、図１に戻ってＳＲＡＭ３０について説明する。メモリシステム１においてＳＲＡＭ３０は、ＮＡＮＤ型フラッシュメモリ２に対するバッファメモリとして機能する。図示するように、ＳＲＡＭ３０は前述のＤＱバッファ３１、複数（本実施形態では２つ）のデータＲＡＭ、及び１つのブート（boot）ＲＡＭを備えている。
【００３８】
ＤＱバッファ３１は、データＲＡＭまたはブートＲＡＭにデータを書き込む、または読み出す際に、一時的にデータを保持する。ＤＱバッファ３１は前述の通り、ＥＣＣバスにより、ＥＣＣバッファ２１との間でデータ転送可能とされている。またＤＱバッファ３１は、例えば６４ビットのバス幅を有するRAM/Registerバスを用いて、インターフェース部４０との間でデータ転送可能とされている。ＤＱバッファ３１もページバッファ１２と同様に、メインデータを保持する領域と、パリティ等を保持する領域とを備えている。
【００３９】
ブートＲＡＭは、例えばメモリシステム１を起動するためのブートコード（boot code）を一時的に保持する。ブートＲＡＭの容量は、例えば１Ｋバイトである。またデータＲＡＭは、ブートコード以外のデータ（メインデータ及びパリティ）を一時的に保持し、その容量は例えば２Ｋバイトであり、２つ設けられている。データＲＡＭ及びブートＲＡＭはそれぞれ、メモリセルアレイ３２、センスアンプ３３、及びロウデコーダ３４を備えている。
【００４０】
メモリセルアレイ３２は、データ保持可能な複数のＳＲＡＭセルを備える。ＳＲＡＭセルはそれぞれ、ワード線及びビット線に接続される。メモリセルアレイ３２も、メモリセルアレイ１０と同様に、メインデータを保持する領域と、パリティ等を保持する領域とを備えている。センスアンプ３３は、ＳＲＡＭセルからビット線に読み出したデータをセンス・増幅する。またセンスアンプ３３は、ＤＱバッファ３１内のデータをＳＲＡＭセルに書き込む際の負荷としても機能する。ロウデコーダ３４は、メモリセルアレイ３２におけるワード線を選択する。
【００４１】
＜＜インターフェース部４０＞＞  
次に、引き続き図１を参照しつつインターフェース部４０について説明する。図示するようにインターフェース部４０は、複数（本実施形態では２つ）のバーストバッファ（burst buffer）４１、４２、及びインターフェース４３を備えている。
【００４２】
インターフェース４３は、メモリシステム１外部のホスト機器と接続可能とされ、ホスト機器との間でデータ、制御信号、及びアドレスＡｄｄ等、種々の信号の入出力を司る。制御信号の一例は、メモリシステム１全体をイネーブルにするチップイネーブル信号／ＣＥ、アドレスをラッチさせるためのアドレスバリッド信号／ＡＶＤ、バーストリード（burst read）用のクロックＣＬＫ、書き込み動作をイネーブルにするライトイネーブル信号／ＷＥ、データの外部への出力をイネーブルにするアウトプットイネーブル信号／ＯＥ、などである。
【００４３】
インターフェース４３は、例えば１６ビットのバス幅を有するＤＩＮ／ＤＯＵＴバスによりバーストバッファ４１、４２と接続されている。そしてインターフェース３４は、ホスト機器からのデータのリード要求、ロード要求、ライト要求、及びプログラム要求等に係る制御信号をアクセスコントローラ５０へ転送する。そしてデータリード時には、バーストバッファ４１、４２内のデータをホスト機器へ出力する。またデータライト時には、ホスト機器から与えられるデータをバーストバッファ４１、４２へ転送する。
【００４４】
バーストバッファ４１、４２は、RAM/RegisterバスによりＤＱバッファ３１及びコントローラ部４とデータ転送可能とされ、また前述のＤＩＮ／ＤＯＵＴバスによりインターフェース４３とデータ転送可能とされている。そして、ホスト機器からインターフェース４３を介して与えられるデータ、またはＤＱバッファ３１から与えられるデータを、一時的に保持する。
【００４５】
＜＜アクセスコントローラ５０＞＞  
アクセスコントローラ５０は、インターフェース４３から制御信号及びアドレスを受け取る。そして、ホスト機器の要求を満たす動作を実行するよう、ＳＲＡＭ３０及びコントローラ部４を制御する。
【００４６】
より具体的には、ホスト機器の要求に応じてアクセスコントローラ５０は、ＳＲＡＭ３０とコントローラ４の後述するレジスタ６０とのいずれかをアクティブ状態とする。そして、ＳＲＡＭ３０に対するデータのライトコマンドまたはリードコマンド（Write/Read）、またはレジスタ６０に対するライトコマンドまたはリードコマンド（Write/Read、以下、これをレジスタライトコマンドまたはレジスタリードコマンドと呼ぶ）を発行する。これらの制御により、ＳＲＡＭ３０及びコントローラ部４は動作を開始する。
【００４７】
＜コントローラ部４＞  
次に、引き続き図１を参照しつつ、コントローラ部４について説明する。コントローラ部４は、ＮＡＮＤ型フラッシュメモリ２及びＲＡＭ部３の動作を制御する。すなわち、メモリシステム１全体としての動作を統括する機能を有する。図示するようにコントローラ部４は、レジスタ６０、コマンドユーザインターフェース（command user interface）６１、ステートマシン（state machine）６２、アドレス／コマンド発生回路６３、及びアドレス／タイミング発生回路６４を備えている。
【００４８】
レジスタ６０は、ファンクションの動作状態を設定するためのレジスタである。すなわちレジスタ６０は、アクセスコントローラ５０から与えられるレジスタライトコマンドまたはレジスタリードコマンドに応じて、ファンクションの動作状態を設定する。より具体的には、レジスタ６０には、例えばデータロード時にはロードコマンドが設定され、データプログラム時にはプログラムコマンドが設定される。
【００４９】
コマンドユーザインターフェース６１は、所定のコマンドがレジスタ６０に設定されることで、メモリシステム１に対してファンクション実行コマンドが与えられたことを認識する。そして、内部コマンド信号（Command）を発行し、ステートマシン６２へ出力する。
【００５０】
ステートマシン６２は、コマンドユーザインターフェース６１から与えられる内部コマンド信号に基づいて、メモリシステム１内部におけるシーケンス動作を制御する。ステートマシン６２がサポートするファンクションは、ロード、プログラム、及び消去等、多数あり、これらのファンクションを実行するよう、ＮＡＮＤ型フラッシュメモリ２及びＲＡＭ部３の動作を制御する。なお前述の通りロードは、ＮＡＮＤ型フラッシュメモリ２からデータを読み出してＳＲＡＭ３０へ出力する動作であり、プログラムは、ＲＡＭデータをＮＡＮＤ型フラッシュメモリ２に記憶する動作であり、消去は、ＮＡＮＤ型フラッシュメモリ２内のデータを削除する動作である。
【００５１】
アドレス／コマンド発生回路６３は、ステートマシン６２の制御に基づいてＮＡＮＤ型フラッシュメモリ２の動作を制御する。より具体的には、アドレスやコマンド（Program/Load）等を生成し、ＮＡＮＤ型フラッシュメモリ２へ出力する。アドレス／コマンド発生回路６３は、オシレータ１６の生成する内部クロックＡＣＬＫに同期しつつ、これらのアドレスやコマンドを出力する。
【００５２】
アドレス／タイミング発生回路６４は、ステートマシン６２の制御に基づいてＲＡＭ部３の動作を制御する。より具体的には、ＲＡＭ部３において必要なアドレスやコマンドを発行して、アクセスコントローラ５０及びＥＣＣエンジン２２へ出力する。
【００５３】
＜メモリシステム１の動作＞  
次に、上記構成のメモリシステム１における大まかな動作について簡単に説明する。前述の通り本実施形態に係るメモリシステム１では、ＮＡＮＤ型フラッシュメモリ２とホスト機器との間のデータの授受は、ＳＲＡＭ３０を介して行われる。
【００５４】
すなわち、ホスト機器がメモリシステム１のＮＡＮＤ型フラッシュメモリ２にデータを記憶させる場合には、まずホスト機器から与えられるライトコマンドとＳＲＡＭ３０のアドレスに従って、データがデータＲＡＭまたはブートＲＡＭに一旦、格納される。その後、ホスト機器から与えられるプログラムコマンドとＮＡＮＤ型フラッシュメモリ２のアドレスに従って、ＳＲＡＭ３０に格納されたデータが、ページ単位で一括してＮＡＮＤ型フラッシュメモリ２にプログラムされる。
【００５５】
また、ホスト機器がＮＡＮＤ型フラッシュメモリ２内のデータを読み出す場合には、まずホスト機器から与えられるロードコマンド、ＮＡＮＤ型フラッシュメモリ２のアドレス、及びＳＲＡＭ３０のアドレスに従って、データがＮＡＮＤ型フラッシュメモリ２から読み出され、データＲＡＭまたはブートＲＡＭに一旦、格納される。その後、ホスト機器から与えられるリードコマンドとＳＲＡＭ３０のアドレスに従って、データＲＡＭまたはブートＲＡＭに保持されるデータが、インターフェース部４０を介してホスト機器に読み出される。
【００５６】
以下、ロードの場合の動作手順の一例について、簡単に説明する。  
まず、ホスト機器がインターフェース部４０に対して、ロードすべきＮＡＮＤ型フラッシュメモリ２のアドレス及びＳＲＡＭのアドレスを入力し、またロードコマンドを入力する。
【００５７】
するとメモリシステム１では、アクセスコントローラ５０が上記アドレス及びコマンドをレジスタ６０に設定する。レジスタ６０にコマンドが設定されたことを検知したコマンドユーザインターフェース６１は、内部コマンド信号を発行する。ロードの場合にはロードコマンドが発行される。
【００５８】
ユーザインターフェース６１からロードコマンドを受信することにより、ステートマシン６２が起動する。ステートマシン６２は、各回路ブロックについて必要な初期化を行った後、アドレス／コマンド発生回路６３に対して、ＮＡＮＤ型フラッシュメモリ２に対してセンスコマンドを発行するよう要求する。
【００５９】
するとアドレス／コマンド発生回路６３は、レジスタ６０に設定されたアドレスにつき、データのセンスを行うよう、シーケンサ１４に対してセンスコマンドを発行する。
【００６０】
アドレス／コマンド発生回路６３からセンスコマンドを受けることで、シーケンサ１４が起動する。シーケンサ１４は、ＮＡＮＤ型フラッシュメモリ２において必要な初期化を行った後、指定されたアドレスのセンス動作を行う。すなわち、電圧発生回路１３、ロウデコーダ１１、図示せぬセンスアンプ、及びページバッファ１２を制御し、センスデータをページバッファ１２に格納させる。その後シーケンサ１４は、センス動作が終了したことを、ステートマシン６２に通知する。
【００６１】
次にステートマシン６２は、アドレス／コマンド発生回路６３に対して、ＮＡＮＤ型フラッシュメモリ２に対して転送コマンドを発行するよう命令する。転送コマンドとは、ＮＡＮＤ型フラッシュメモリ２からＲＡＭ部３へデータを転送するための命令である。この命令に応じてアドレス／コマンド発生回路６３は、転送コマンドを発行してシーケンサ１４へ出力する。
【００６２】
転送コマンドを受けたシーケンサ１４は、ページバッファ１２をデータ転送可能なようにセットする。そしてシーケンサ１４の制御に従って、ページバッファ１２内のデータがＮＡＮＤバスを介してＥＣＣバッファ２１へ転送される。
【００６３】
更にステートマシン６２は、ＥＣＣ部２０に対してエラー訂正開始制御信号を発行する。この信号に応答して、ＥＣＣ部２０がＥＣＣ処理を行う。そして、ＥＣＣ処理されたデータが、ＥＣＣ部２０からＥＣＣバスを介してＤＱバッファ３１に転送される。
【００６４】
引き続き、アクセスコントローラ５０の命令に従って、ＤＱバッファ３１内のデータが、ＳＲＡＭ３０のメモリセルアレイ３２に書き込まれる。
【００６５】
以上により、データのロードが完了する。その後、ホスト機器はインターフェース部４０を介してリードコマンドを発行することで、メモリセルアレイ３２に書き込まれたデータを読み出す。
【００６６】
＜ページバッファ１２、ＥＣＣ部２０、及びＤＱバッファ３１間のデータ転送方法＞  
次に、データロード時における、ページバッファ１２、ＥＣＣ部２０、及びＤＱバッファ３１間における、データの転送方法の詳細について、図５を用いて説明する。図５は、本実施形態に係るデータ転送方法のフローチャートである。
【００６７】
図示するように、まずＮＡＮＤ型フラッシュメモリ２において、データがページ単位でページバッファ１２に読み出される（ステップＳ１０）。このページデータには、第１領域１７から読み出された２Ｋバイトのデータと、第２領域から読み出された６４バイトのデータが含まれる。そして第２領域から読み出されたデータには３２０ビットのパリティが含まれる。
【００６８】
その後、アドレス／コマンド発生回路６２の命令に応答してシーケンサ１４が、パリティの先頭番地をＮＡＮＤ型フラッシュメモリ２のページバッファ１２に入力する（ステップＳ１１）。これによりページバッファ１２は、パリティをＥＣＣバッファ２１の第３保持部２５へ６４ビット単位で転送する（ステップＳ１２）。
【００６９】
引き続き、シーケンサ１４は、アドレス／コマンド発生回路６２の命令に従って、メインデータの先頭番地をページバッファ１２に入力する（ステップＳ１３）。これによりページバッファ１２は、メインデータをＥＣＣバッファ２１の第１保持部２３と第２保持部２４とのいずれか一方へ、６４ビット単位で転送する（ステップＳ１４）。
【００７０】
メインデータの転送量が５１２ビットに達し（ステップＳ１５、ＹＥＳ）、且つ対象とするセクタのデータが全て転送済みであれば（ステップＳ１６、ＹＥＳ）、当該セクタに関するデータのページバッファ１２からＥＣＣバッファ２１への転送は停止する。対象とするセクタにつき未転送のデータが残っていれば（ステップＳ１６、ＮＯ）、ページバッファ１２は、データの転送先として第１、第２保持部２３、２４を切り替えて（ステップＳ１７）、引き続きメインデータの転送を継続する（ステップＳ１４）。
【００７１】
また、ステップＳ１５においてメインデータの転送量が５１２ビットに達すると、ＥＣＣエンジン２２は５１２ビット単位でＥＣＣ処理を行う（ステップＳ１８）。すなわち、パリティとメインデータとを用いてシンドロームを生成し、データ中のエラーを検出する。そしてエラーが検出されればそれを訂正する。更に、既にＥＣＣ処理されたメインデータがあれば、そのメインデータが、ＥＣＣバッファ２１からＤＱバッファ３１へ転送される（ステップＳ１９）。
【００７２】
メインデータのＤＱバッファ３１への転送量が５１２ビットに達し（ステップＳ２０、ＹＥＳ）、且つ対象とするセクタのメインデータが全て転送済みであれば（ステップＳ２１、ＹＥＳ）、最後に第３保持部２５がパリティをＤＱバッファへ転送し（ステップＳ２３）、処理は完了する。ステップＳ２１において、対象とするセクタにつき、ＤＱバッファ３１へ未転送のデータが残っていれば（ステップＳ２１、ＮＯ）、ＥＣＣバッファ３１はデータの転送元を第１、第２保持部２３、２４間で切り替えて（ステップＳ２２）、引き続きメインデータの転送を継続する（ステップＳ１９）。
【００７３】
なお、以上のステップＳ１４〜Ｓ１７におけるメインデータのページバッファ１２からＥＣＣバッファ２１への転送処理と、ステップＳ１８のＥＣＣ処理と、ステップＳ１９〜Ｓ２２におけるメインデータのＥＣＣバッファ２１からＤＱバッファ３１への転送処理とは、平行して行われる。より具体的には、５１２ビットずつ、且つ第１保持部２３と第２保持部２４とを切り替えつつ、行われる。この点の詳細について、以下具体例を用いつつ説明する。
【００７４】
＜具体例＞  
以上のデータ転送の具体例を、図６乃至図１０を用いて説明する。図６は、メモリセルアレイ１０からのデータの読み出し開始から、メインデータとパリティとをＤＱバッファ３１へ転送するまでの処理の流れを示すタイミングチャートである。また図７乃至図１０は、データ転送時における、関連する回路ブロックのブロック図である。なお、図６において、“［”と“］”とで挟んだ数字は、対応する処理を行うのに必要なクロック数である。
【００７５】
＜＜時刻ｔ０〜ｔ１＞＞  
図６に示すように、時刻ｔ０〜ｔ１の期間において、データ（メインデータ＋パリティ）がメモリセルアレイ１０からページバッファ１２に読み出される（ステップＳ１０）。
【００７６】
＜＜時刻ｔ１〜ｔ３＞＞  
その後、時刻ｔ１において、パリティの先頭番地がページバッファ１２に入力される（ステップＳ１１、図６における“Ｓｐ”）。パリティの先頭番地の入力には、例えば１０クロックを要する。これに引き続き、時刻ｔ２において、パリティがページバッファ１２から第３保持部２５に転送される（ステップＳ１２、図６における“Ｔａ−ｐ”）。この様子を示しているのが図７である。図示するように、例えばＥＣＣ処理の対象が第１セクタであったとすると、第１セクタに対応したパリティ（８０ビット）が第３保持部２５に転送される。ＮＡＮＤバスは６４ビット幅であるので、パリティの転送には２クロックを要する。また以下では、メインデータの第１セクタを、５１２ビット毎に順次データＤ１〜Ｄ８と呼ぶことにする。
【００７７】
＜＜時刻ｔ３〜ｔ５＞＞  
次に、時刻ｔ３〜ｔ５における処理について、図８を参照しつつ説明する。時刻ｔ３において、メインデータの先頭番地がページバッファ１２に入力される（ステップＳ１３、図６における“Ｓｍ”）。メインデータの先頭番地の入力には、例えば１０クロックを要する。これに引き続き、時刻ｔ４において、メインデータ（データＤ１）がページバッファ１２から第１保持部２３に転送される（ステップＳ１４、図６における“Ｔａ−１”）。５１２ビット分のデータ（データＤ１）が転送されるには８クロックを要し、時刻ｔ５でデータＤ１の転送が完了する。
【００７８】
＜＜時刻ｔ５〜ｔ６＞＞  
次に、時刻ｔ５〜ｔ６における処理について、図９を参照しつつ説明する。時刻ｔ５においてページバッファ１２は、転送先を第１保持部２３から第２保持部２４に切り替えて（ステップＳ１７）、データＤ１に後続するデータＤ２の第２保持部２４への転送を開始する（ステップＳ１４、図６における“Ｔａ−２”）。データＤ２の転送にも８クロックを要し、時刻ｔ６でデータＤ２の転送が終了する。また同時に、ＥＣＣエンジン２２は、第１保持部２３内のデータＤ１と第３保持部２５内のパリティとを用いてＥＣＣ処理を行う（ステップＳ１８、図６における“Ｅｍ−１”）。
【００７９】
＜＜時刻ｔ６〜ｔ７＞＞  
次に、時刻ｔ６〜ｔ７における処理について、図１０を参照しつつ説明する。時刻ｔ６においてページバッファ１２は、転送先を第２保持部２４から第１保持部２３に切り替えて（ステップＳ１７）、データＤ２に後続するデータＤ３の第１保持部２４への転送を開始する（ステップＳ１４、図６における“Ｔａ−３”）。データＤ３の転送にも８クロックを要し、時刻ｔ７でデータＤ３の転送が終了する。また同時にＥＣＣエンジン２２は、第２保持部２４内のデータＤ２と第３保持部２５内のパリティとを用いてＥＣＣ処理を行う（ステップＳ１８、図６における“Ｅｍ−２”）。更に、データＤ３の転送及びデータＤ２に関するＥＣＣ処理と並行して、ＥＣＣ処理済みのデータＤ１が、第１保持部２３からＤＱバッファ３１へ転送される（ステップＳ１９、図６における“Ｔｂ−１”）。
【００８０】
＜＜時刻ｔ７〜ｔ１０＞＞  
以後、時刻ｔ７〜ｔ１０の期間は、時刻ｔ６〜ｔ７で説明した処理を繰り返す。すなわち、時刻ｔ７〜ｔ８では、ページバッファ１２からデータＤ４の第２保持部２４への転送と、ＥＣＣエンジン２２によるデータＤ３についてのＥＣＣ処理と、ＥＣＣ処理済みのデータＤ２のＤＱバッファ３１への転送処理が同時に実行される。以下同様である。
【００８１】
＜＜時刻ｔ１０〜ｔ１２＞＞  
時刻ｔ１０において、データＤ８のページバッファ１２からＥＣＣバッファ２１への転送が終了する（ステップＳ１６、ＹＥＳ）。すなわち、４０９６ビット分のメインデータの、ＥＣＣバッファ２１への転送が終了する。そして時刻ｔ１１において、データＤ８についてのＥＣＣ処理が終了する。また時刻ｔ１１においてデータＤ８のＤＱバッファ３１への転送が開始され（ステップＳ１９）、時刻ｔ１２においてその転送が完了する（ステップＳ２１、ＹＥＳ）。
【００８２】
＜＜時刻ｔ１２〜ｔ１３＞＞  
最後に、時刻ｔ１２〜ｔ１３の期間において、第３保持部２５に保持されるパリティがＤＱバッファ３１へ転送され（ステップＳ２３）、一連の処理が終了する。そして、ＤＱバッファ内のデータがメモリセルアレイ３２に格納される。
【００８３】
＜効果＞  
以上のように、この発明の第１の実施形態に係るデータ転送方法であると、メインデータよりも先にパリティをページバッファ１２から読み出している。また、ＥＣＣ処理をセクタ単位で行うのではなく、セクタを複数に分割したより小さな単位で行っている。従って、ページバッファ１２からＥＣＣ部２０へのデータ転送と、ＥＣＣ処理と、ＥＣＣ部２０からＤＱバッファ３１へのデータ転送とを、並列的に処理出来る。その結果、データのロード速度を向上し、メモリシステムの動作性能を向上出来る。本効果につき、以下詳細に説明する。
【００８４】
通常、ＥＣＣ機能を備えたＮＡＮＤ型フラッシュメモリでは、まずメインデータをＥＣＣ部へ全て読み出し、その後パリティを読み出して、ＥＣＣ処理を行う。すると、図６で説明したデータの例の場合、データの転送順序と、それに要するクロック数は次のようになる。すなわち、  
（１）先頭番地をページバッファに入力：１０クロック  
（２）４０９６ビット分のメインデータをＥＣＣ部へ転送：６４クロック  
（３）パリティをＥＣＣ部へ転送：１クロック  
（４）ＥＣＣ処理：４クロック
（５）ＥＣＣ処理済みの４０９６ビット分のメインデータをＤＱバッファへ転送：６４クロック  
（６）パリティをＤＱバッファへ転送：１クロック  
すなわち、トータルの処理に１４４クロックを要する。４０９６ビット分のメインデータを一括してＥＣＣ処理するため、パリティは１３ビットで済み、パリティの転送は１クロックで済むが、全体としては１４４クロックという、非常に長時間を必要とする。そのため、メインデータのデータサイズが大きくなるほど、データのロード速度が極端に低下するという問題がある。
【００８５】
しかし本実施形態に係る方法であると、メインデータを複数（例えば８個）に分割し、分割した単位でＥＣＣ処理を行っている。本実施形態に係る方法によるデータ転送の流れは次のようになる。すなわち、  
（１）パリティの先頭番地をページバッファ１２に入力：１０クロック  
（２）パリティをＥＣＣ部２０へ転送：２クロック  
（３）メインデータの先頭番地をページバッファ１２に入力：１０クロック  
（４）（４−１）４０９６ビット分のメインデータをＥＣＣ部へ転送、  
（４−２）５１２ビット分のメインデータの転送が完了次第、５１２ビット単位でＥＣＣ処理、  
（４−３）５１２ビット分のメインデータのＥＣＣ処理が完了次第、５１２ビット単位でＤＱバッファへメインデータを転送  
：（４）全体で（８×１０）＝８０クロック  
（５）パリティをＤＱバッファへ転送：２クロック  
すなわち、トータルの処理に必要なクロック数は１０４クロックとなる。５１２ビット単位でＥＣＣ処理をするため、パリティは４０９６ビットあたり８０ビットが必要となり、またページバッファ１２に対してメインデータの先頭番地だけでなくパリティの先頭番地も入力する必要がある。しかし、メインデータのＥＣＣ部への転送と、ＥＣＣ処理と、メインデータのＤＱバッファ３１への転送処理を並列に行うことが出来る。これにより、データのロード速度を格段に向上出来る。
【００８６】
上記方法を実現するために、本実施形態ではメインデータよりも先に、８０ビット分のパリティを読み出している。これにより、パリティの読み出しに要するクロック数を最小限（２クロック）に抑えることが出来る。また、メインデータを、ＥＣＣ処理の単位となるだけ読み出した時点で、すぐにＥＣＣ処理を実行可能としている。
【００８７】
更に、メインデータ用のＥＣＣバッファを複数（第１保持部２３と第２保持部２４）設けている。これにより、ページバッファ１２からＥＣＣバッファ２１へのメインデータ転送と、ＥＣＣ処理済みのメインデータのＤＱバッファ３１への転送とを並行して行うことが出来る。
【００８８】
［第２の実施形態］  
次に、この発明の第２の実施形態に係るデータ転送方法について説明する。本実施形態は、上記第１の実施形態において、４０９６ビット単位でＥＣＣ処理をする方法に関するものである。本実施形態に係るメモリシステムのブロック構成や、大まかな動作の流れは第１の実施形態と同様であるので、以下では第１の実施形態と異なる点についてのみ説明する。
【００８９】
図１１は、本実施形態における１ページ分のデータの模式図である。図示するように、メモリセルアレイ１０の第１領域１７から読み出されるデータは、第１の実施形態で説明した図３と同様である。図３と異なる点は、セクタ毎に必要なパリティのビット数が、第１の実施形態では８０ビットであったのに対し、本実施形態では１３ビットである点である。これは、ＥＣＣエンジン２２が４０９６ビットを一括してＥＣＣ処理するからである（４０９６＝２１２）。
【００９０】
図１２は、本実施形態に係るＥＣＣ部２０のブロック図である。図示するように、ＥＣＣバッファ２１は、メインデータ保持部２６とパリティ保持部２７とを含む。メインデータ保持部２６は、４０９６ビットのメインデータを保持可能とされる。パリティ保持部２７は、第１の実施形態で説明した第３保持部２５と同様である。メインデータ保持部２６及びパリティ保持部２６は、ページバッファ１２とＮＡＮＤバスにより接続され、ＤＱバッファ３１とＥＣＣバスにより接続される。
【００９１】
＜ページバッファ１２、ＥＣＣ部２０、及びＤＱバッファ３１間のデータ転送方法＞  
次に、データロード時における、ページバッファ１２、ＥＣＣ部２０、及びＤＱバッファ３１間における、データの転送方法の詳細について、図１３を用いて説明する。図１３は、本実施形態に係るデータ転送方法のフローチャートである。
【００９２】
図示するように、第１の実施形態で説明した図５と同様にステップＳ１０、Ｓ１１の処理の後、ページバッファ１２がパリティをパリティ保持部２７に転送する（ステップＳ３０）。引き続きステップＳ１３の処理の後、ページバッファ１２がメインデータをメインデータ保持部２６に転送する（ステップＳ３１）。
【００９３】
メインデータの全ビット（４０９６ビット）がメインデータ保持部２６に転送された後（ステップＳ３２、ＹＥＳ）、ＥＣＣエンジン２２がＥＣＣ処理を行う（ステップＳ３３）。
【００９４】
ＥＣＣ処理が終了すると、メインデータがＤＱバッファへ転送される（ステップＳ３４）。そして、メインデータの全ビット（４０９６ビット）がＤＱバッファ３１へ転送された後（ステップＳ３５、ＹＥＳ）、パリティがＤＱバッファ３１へ転送される（ステップＳ３６）。
【００９５】
＜具体例＞  
以上のデータ転送の具体例を、図１４を用いて説明する。図１４は、ＮＡＮＤ型フラッシュメモリ２においてデータを読み出してから、メインデータとパリティとをＤＱバッファ３１へ転送するまでの処理の流れを示すタイミングチャートである。なお、図６と同様、図１４において“［”と“］”とで挟んだ数字は、対応する処理を行うのに必要なクロック数である。
【００９６】
＜＜時刻ｔ０〜ｔ５＞＞  
図示するように、時刻ｔ５までは、第１の実施形態で説明した図６の場合と同様である（ステップＳ１０〜Ｓ３１）。異なるのは、パリティの転送に要するクロック数が、本実施形態では１クロックで済む点である。これは、本実施形態の方がパリティのビット数が少ないからである。時刻ｔ５までの時点で、５１２ビット分のメインデータがメインデータ保持部２６に転送される。
【００９７】
＜＜時刻ｔ５〜ｔ７＞＞  
時刻ｔ５以降は、ページバッファ１２が残りの３５８４ビット分のメインデータをメインデータ保持部２６に転送する（ステップＳ３１）。第１の実施形態と異なり、この期間にＥＣＣ処理やデータのＤＱバッファ３１への転送は行われない。メインデータのメインデータ保持部２６への転送には、トータルで（８×８クロック）＝６４クロックを要する。
【００９８】
＜＜時刻ｔ７〜ｔ８＞＞  
時刻ｔ６で４０９６ビット分のメインデータの転送が終了すると、ＥＣＣエンジン２２はＥＣＣ処理を行う。前述の通り、ＥＣＣ処理は４０９６ビット一括で実行される（ステップＳ３３）。
【００９９】
＜＜時刻ｔ８〜ｔ１２＞＞  
時刻ｔ８でＥＣＣ処理が終了すると、ＥＣＣ処理済みのメインデータがＤＱバッファへ転送される（ステップＳ３４）。メインデータのＤＱバッファ３１への転送には、トータルで（８×８クロック）＝６４クロックを要する。
【０１００】
＜＜時刻ｔ１２〜ｔ１３＞＞  
最後に、時刻ｔ１２〜ｔ１３の期間において、パリティ保持部２７に保持されるパリティがＤＱバッファ３１へ転送され、一連の処理が終了する。この転送に要するクロック数も１クロックである。
【０１０１】
＜効果＞  
以上のように、第１の実施形態と同様にメインデータよりも先にパリティを読み出す方法を用いて、且つ、データ転送とＥＣＣ処理とを並行して行わない場合であっても良い。この場合、図１４に示すようにトータルに要するクロック数は１５４クロックとなるが、ＥＣＣバッファ２１においてメインデータを保持するバッファは１つ（メインデータ保持部２６）だけで良く、またパリティのビット数を小さくすることが出来る。
【０１０２】
［第３の実施形態］  
次に、この発明の第３の実施形態に係るデータ転送方法について説明する。本実施形態は、上記第１の実施形態で説明したデータ転送方法を、プログラム時に適用したものである。本実施形態に係るメモリシステムのブロック構成や、大まかな動作の流れは第１の実施形態と同様であるので、以下では第１の実施形態と異なる点についてのみ説明する。
【０１０３】
図１５は、本実施形態に係るメモリシステム１における、データプログラム時の、ＤＱバッファ３１、ＥＣＣ部２０、及びページバッファ１２間におけるデータの転送方法を示すフローチャートである。第１の実施形態で説明した図５と異なる点は、ロードの際のデータの流れがページバッファ１２→ＥＣＣ部２０→ＤＱバッファ３１であったのに対して、プログラムの場合にはその逆のＤＱバッファ３１→ＥＣＣ部２０→ページバッファ１２である点である。以下詳細に説明する。
【０１０４】
図示するように、まずアドレス／コマンド発生回路６２の命令に従ってシーケンサ１４が、メインデータの先頭番地をページバッファ１２に予め入力する（ステップＳ４０）。引き続き、アクセスコントローラ５０の命令に従って、ＤＱバッファ３１がメインデータとスペアデータ（メモリセルアレイ１０の第２領域に書き込むべきデータ）とを、ＥＣＣバッファ２１の第１保持部２３と第２保持部２４とのいずれか一方へ、６４ビット単位で転送する（ステップＳ４１）。なお、以下ではメインデータとスペアデータとを区別しない場合には、一括してデータと呼ぶ。
【０１０５】
メインデータの転送量が５１２ビットに達し（ステップＳ４２、ＹＥＳ）、且つ対象とするセクタの未転送データが残っていれば（ステップ４３、ＮＯ）、アクセスコントローラ５０はデータの転送先として第１、第２保持部２３、２４を切り替えて（ステップＳ４４）、引き続きデータの転送を継続する（ステップＳ４１）。他方、当該セクタについてのデータが全て転送済みであれば（ステップＳ４３、ＹＥＳ）、ＤＱバッファ３１はＥＣＣバッファ２１へのデータ転送を停止する。更に、既にパリティ生成済みのメインデータがあれば、ＥＣＣバッファ２１はそのメインデータをページバッファ１２へ転送する（ステップＳ４６）。
【０１０６】
メインデータのページバッファ１２への転送量が５１２ビットに達し（ステップＳ４７、ＹＥＳ）、且つ対象とするセクタのメインデータが全てページバッファ１２へ転送済みであれば（ステップＳ４８、ＹＥＳ）、ＥＣＣ部２１は第３保持部２５内のパリティをページバッファ１２へ６４ビット単位で転送する（ステップＳ５０）。その後、ページバッファ１２に格納されたメインデータとパリティとが、ＮＡＮＤ型フラッシュメモリ２のメモリセルアレイ１０にページ単位で書き込まれる（ステップＳ５１）。
【０１０７】
他方、ステップＳ４８において、対象とするセクタにつき、ページバッファ１２へ未転送のデータが残っていれば（ステップＳ４８、ＮＯ）、ＥＣＣバッファ３１はデータの転送元を第１、第２保持部２３、２４間で切り替えて（ステップＳ４９）、引き続きパリティ生成済みのメインデータの転送を継続する（ステップＳ４６）。
【０１０８】
なお、以上のステップＳ４１〜Ｓ４４におけるデータのＤＱバッファ３１からＥＣＣバッファ２１への転送処理と、ステップＳ４５のＥＣＣ処理と、ステップＳ４６〜Ｓ４９におけるメインデータのＥＣＣバッファ２１からページバッファ１２への転送処理とは、平行して行われる。より具体的にはデータロード時と同様に、５１２ビットずつ、且つ第１保持部２３と第２保持部２４とを切り替えつつ、行われる。この点の詳細について、以下具体例を用いつつ説明する。
【０１０９】
＜具体例＞  
以上のデータ転送の具体例を、図１６を用いて説明する。図１６は、ＮＡＮＤ型フラッシュメモリ２においてページバッファ１２の先頭アドレスを入力してから、メモリセルアレイ１０へのデータのプログラムが完了するまでの処理の流れを示すタイミングチャートである。なお、図１６においても、“［”と“］”とで挟んだ数字は、対応する処理を行うのに必要なクロック数である。
【０１１０】
＜＜時刻ｔ０〜ｔ１＞＞  
図６に示すように、時刻ｔ０〜ｔ１の期間において、メインデータの先頭番地がページバッファ１２に入力される（ステップＳ４０、図１６における“Ｓ”）。メインデータの先頭番地の入力には、例えば１０クロックを要する。
【０１１１】
＜＜時刻ｔ１〜ｔ２＞＞  
次に時刻ｔ１において、ＤＱバッファ３１がメインデータＤ１を第１保持部２３に転送する（ステップＳ４１、図１６における“Ｔｂ−１”）。５１２ビット分のデータ（データＤ１）が転送されるには８クロックを要し、時刻ｔ２でデータＤ１の転送が完了する。
【０１１２】
＜＜時刻ｔ２〜ｔ３＞＞  
時刻ｔ２においてＤＱバッファ３１は、転送先を第１保持部２３から第２保持部２４に切り替えて（ステップＳ４４）、データＤ１に後続するデータＤ２の第２保持部２４への転送を開始する（ステップＳ４１、図６における“Ｔｂ−２”）。データＤ２の転送にも８クロックを要し、時刻ｔ３でデータＤ２の転送が終了する。また同時にＥＣＣエンジン２２は、第１保持部２３内のデータＤ１を用いてＥＣＣ処理を行い、パリティを生成する（ステップＳ４５、図１６における“Ｐｍ−１”）。
【０１１３】
＜＜時刻ｔ３〜ｔ４＞＞  
時刻ｔ３においてＤＱバッファ３１は、転送先を第２保持部２４から第１保持部２３に切り替えて（ステップＳ４４）、データＤ２に後続するデータＤ３の第１保持部２４への転送を開始する（ステップＳ４１、図１６における“Ｔｂ−３”）。データＤ３の転送にも８クロックを要し、時刻ｔ４でデータＤ３の転送が終了する。また同時に、ＥＣＣエンジン２２は、第２保持部２４内のデータＤ２を用いてＥＣＣ処理を行い、パリティを生成する（ステップＳ４５、図６における“Ｐｍ−２”）。更に時刻ｔ３では、データＤ１についてのパリティの生成が完了しているので、データＤ３の転送及びデータＤ２に関するＥＣＣ処理と並行して、第１保持部２３は、ＥＣＣ処理済みのデータＤ１をページバッファ１２へ転送する（ステップＳ４６、図６における“Ｔａ−１”）。
【０１１４】
＜＜時刻ｔ４〜ｔ７＞＞  
以後、時刻ｔ４〜ｔ７の期間は、時刻ｔ３〜ｔ４で説明した処理を繰り返す。すなわち、時刻ｔ４〜ｔ５では、ＤＱバッファ３１からデータＤ４の第２保持部２４への転送（“Ｔｂ−４”）と、ＥＣＣエンジン２２によるデータＤ３についてのＥＣＣ処理（“Ｐｍ３”）と、ＥＣＣ処理済みのデータＤ２のページバッファ１２への転送（“Ｔａ−２”）処理が同時に実行される。以下同様である。そして時刻ｔ７において、メインデータのＤＱバッファ３１からＥＣＣバッファ２１への転送が終了する。
【０１１５】
＜＜時刻ｔ７〜ｔ８＞＞  
時刻ｔ７〜ｔ８の期間は、ＤＱバッファ３１からパリティの第３保持部２５への転送（“Ｔｂ−ｐ”）と、ＥＣＣエンジン２２によるデータＤ８についてのＥＣＣ処理（“Ｐｍ８”）と、ＥＣＣ処理済みのデータＤ７のページバッファ１２への転送（“Ｔａ−７”）処理が同時に実行される。
【０１１６】
＜＜時刻ｔ８〜ｔ９＞＞  
時刻ｔ８〜ｔ９の期間は、ＥＣＣエンジン２２によるＥＣＣ処理（“Ｐｐ”）と、ＥＣＣ処理済みのデータＤ８のページバッファ１２への転送（“Ｔａ−８）処理が同時に実行される。ＥＣＣ処理Ｐｐでは、ＥＣＣ処理Ｐｍ１〜Ｐｍ８で得られた処理結果に基づいて、８０ビットのパリティが生成される。すなわち、パリティは４０９６ビットのメインデータを用いて生成される。生成されたパリティは、ＥＣＣバッファ２１に上書きされる。そして時刻ｔ９において、メインデータのＥＣＣバッファ２１からページバッファ１２への転送が終了する（ステップＳ４８、ＹＥＳ）。
【０１１７】
＜＜時刻ｔ９〜ｔ１０＞＞  
時刻ｔ９〜ｔ１９の期間においてＥＣＣ部２０は、第３保持部２５に保持するパリティをページバッファ１２へ転送する（ステップＳ５０）。
【０１１８】
＜＜時刻ｔ１０〜ｔ１１１＞＞  
そして、ページバッファ１２に転送されたメインデータとパリティとがメモリセルアレイ１０にプログラムされ（ステップＳ５１）、一連の処理が終了する。
【０１１９】
＜効果＞  
以上のように、この発明の第３の実施形態に係るデータ転送方法であると、第１の実施形態と同様に、セクタを複数に分割した単位でＥＣＣ処理を行っている。従って、ＤＱバッファ３１からＥＣＣ部２０へのデータ転送と、ＥＣＣ処理と、ＥＣＣ部２０からページバッファ１２へのデータ転送とを、並列的に処理出来る。その結果、データのプログラム速度を向上し、メモリシステムの動作性能を向上出来る。本効果につき、以下詳細に説明する。
【０１２０】
通常のＮＡＮＤ型フラッシュメモリでは、第１の実施形態で説明したロード時と同様プログラム時も、全てのメインデータをＥＣＣ部に転送した後にパリティを生成し、その後、メインデータとパリティとをページバッファに転送する。従って、ＤＱバッファからページバッファにデータを転送するには、ロード時と同様に１４４クロックを要する。
【０１２１】
しかし、本実施形態に係る方法であると、メインデータを複数（例えば８個）に分割し、分割した単位でＥＣＣ処理を行っている。本実施形態に係る方法によるデータ転送の流れは次のようになる。すなわち、  
（１）メインデータの先頭番地をページバッファ１２に入力：１０クロック  
（２）（２−１）４０９６ビット分のメインデータとパリティとをＥＣＣ部へ順次転送、  
（２−２）５１２ビット分のメインデータの転送が完了次第、５１２ビット単位でＥＣＣ処理、  
（２−３）５１２ビット分のメインデータのＥＣＣ処理が完了次第、５１２ビット単位でページバッファへメインデータを転送  
（２−４）パリティをページバッファへ転送  
：（２）全体で（８×１０）＋２＝８２クロック  
すなわち、トータルの処理に必要なクロック数は９２クロックとなる。特にプログラム時ではロード時と異なり、パリティの生成はメインデータが全て揃った後に行われる（図１６における処理“Ｐｐ”）。従って、ＤＱバッファ３１からＥＣＣバッファ２１へのデータ転送の順序は、メインデータ→パリティ、であるので、先頭番地の入力はメインデータに関する１回で良い。従って、従って、プログラム速度を大幅に向上出来る。
【０１２２】
［第４の実施形態］  
次に、この発明の第４の実施形態に係るメモリシステムについて説明する。本実施形態は、上記第１乃至第３の実施形態で説明したメモリシステムにおけるクロックとデータの転送方法に関する。以下では、第１乃至第３の実施形態と異なる点についてのみ説明する。
【０１２３】
＜クロック及びデータの転送経路について＞  
図１７は、本実施形態に係るメモリシステム１の一部領域のブロック図であり、特にクロックとデータの転送経路に着目した図である。また図１７では、ＮＡＮＤ型フラッシュメモリ２、ＥＣＣ部２０、及びＳＲＡＭ３０の内部構造につき、本実施形態に関わる部分のみを図示している。
【０１２４】
図示するようにメモリシステム１は、クロックを伝播させるためのスイッチ７０〜７１を有している。スイッチ７０は、コントローラ部４とＮＡＮＤ型フラッシュメモリ２との間でのクロックの伝播をスイッチングする。スイッチ７０は、データロード時にオン状態となる。スイッチ７１は、オシレータ１６とＳＲＡＭ３０との間でのクロックの伝播をスイッチングする。スイッチ７１は、データプログラム時にオン状態となる。スイッチ７２は、コントローラ部４及びＥＣＣ部２０と、ＮＡＮＤ型フラッシュメモリ２との間でのクロックの伝播をスイッチングする。スイッチ７２は、データプログラム時にオン状態となる。
【０１２５】
また、ＮＡＮＤ型フラッシュメモリ２、ＥＣＣ部２０、及びＳＲＡＭ３０は、上記第１乃至第３の実施形態で説明した構成の他、それぞれ入出力部（Ｉ／Ｏ）８０、２８、３５を備えている。そして、外部とのデータの入出力は、入出力部８０、２８、３５によってクロックに同期して行われる。
【０１２６】
以下、ＮＡＮＤ型フラッシュメモリ２とＥＣＣ部２０との間で転送されるデータをデータＤＡＴＡ＿ＮＡＮＤと呼び、ＥＣＣ部２０とＳＲＡＭ３０との間で転送されるデータをデータＤＡＴＡ＿ＲＡＭと呼ぶことにする。
【０１２７】
＜データロード時について＞  
次に、データロード時におけるクロックとデータの伝播の様子について、図１８を用いて説明する。図１８は、図１７と同様にメモリシステム１のブロック図であり、特にデータロード時の様子について示している。
【０１２８】
図示するように、スイッチ７０がオン状態とされ、スイッチ７１、７２はオフ状態とされる。また、オシレータ１６は内部クロックＡＣＬＫを生成し、これをコントローラ部４へ供給する。コントローラ部４は内部クロックＡＣＬＫに同期して動作し、また内部クロックＡＣＬＫに基づいて内部クロックＣＬＫ＿ＬＯＡＤ１を生成する。
【０１２９】
内部クロックＣＬＫ＿ＬＯＡＤ１は、スイッチ７０を介してＮＡＮＤ型フラッシュメモリ２へ供給される。ＮＡＮＤ型フラッシュメモリ２は内部クロックＣＬＫ＿ＬＯＡＤ１に同期して動作し、その入出力部８０は、内部クロックＣＬＫ＿ＬＯＡＤ１に同期してデータＤＡＴＡ＿ＮＡＮＤ（メインデータとパリティ）をＥＣＣ部２０へ出力する。
【０１３０】
内部クロックＣＬＫ＿ＬＯＡＤ１は、ＮＡＮＤ型フラッシュメモリ２だけでなくＥＣＣ部２０へも供給される。ＥＣＣ部２０は、内部クロックＣＬＫ＿ＬＯＡＤ１に同期して動作する。従ってＥＣＣ部２０の入出力部２８は、ＮＡＮＤ型フラッシュメモリ２から与えられるデータＤＡＴＡ＿ＮＡＮＤを、内部クロックＣＬＫ＿ＬＯＡＤ１に同期して内部に取り込む。
【０１３１】
またＥＣＣ部２０は、図示せぬ遅延回路やバッファ等により内部クロックＣＬＫ＿ＬＯＡＤ１の波形整形等の処理を行うことで、内部クロックＣＬＫ＿ＬＯＡＤ２を生成する。そしてＥＣＣ部２０はＥＣＣ処理を行った後、データＤＡＴＡ＿ＲＡＭ（エラー訂正後のメインデータとパリティ）を、内部クロックＣＬＫ＿ＬＯＡＤ２に同期して、入出力部２８からＳＲＡＭ３０へ出力する。
【０１３２】
ＥＣＣ部３０からは、データＤＡＴＡ＿ＲＡＭと共に内部クロックＣＬＫ＿ＬＯＡＤ２もＳＲＡＭ３０へ供給される。ＳＲＡＭ３０は、内部クロックＣＬＫ＿ＬＯＡＤ２に同期して動作する。従ってＳＲＡＭ３０の入出力部３５は、ＥＣＣ部２０から与えられるデータＤＡＴＡ＿ＲＡＭを、内部クロックＣＬＫ＿ＬＯＡＤ２に同期して内部に取り込む。
【０１３３】
図１９は、データロード時における内部クロックＡＣＬＫ、ＣＬＫ＿ＬＯＡＤ１、ＣＬＫ＿ＬＯＡＤ２、及びデータＤＡＴＡ＿ＮＡＮＤ、ＤＡＴＡ＿ＲＡＭのタイミングチャートである。
【０１３４】
図示するように、データＤＡＴＡ＿ＮＡＮＤは内部クロックＣＬＫ＿ＬＯＡＤ１に同期してＮＡＮＤ型フラッシュメモリ２から出力され、またＥＣＣ部２０に取り込まれる。データＤＡＴＡ＿ＲＡＭは、内部クロックＣＬＫ＿ＬＯＡＤ２に同期してＥＣＣ部２０から出力され、またＳＲＡＭ３０に取り込まれる。
【０１３５】
＜データプログラム時について＞  
次に、データプログラム時におけるクロックとデータの伝播の様子について、図２０を用いて説明する。図２０は、図１８と同様にメモリシステム１のブロック図であり、特にデータプログラム時の様子について示している。
【０１３６】
図示するように、スイッチ７１、７２がオン状態とされ、スイッチ７０はオフ状態とされる。また、オシレータ１６は内部クロックＡＣＬＫを生成し、これをコントローラ部４へ供給する。コントローラ部４は内部クロックＡＣＬＫに同期して動作する。
【０１３７】
内部クロックＡＣＬＫは、スイッチ７１を介してＳＲＡＭ３０へも供給される。ＳＲＡＭ３０は内部クロックＣＬＫ＿ＬＯＡＤ１に同期して動作し、その入出力部３１は、内部クロックＡＣＬＫに同期して、データＤＡＴＡ＿ＮＡＮＤ（メインデータとパリティ）をＥＣＣ部２０へ出力する。
【０１３８】
ＳＲＡＭ３０からは、データＤＡＴＡ＿ＲＡＭだけでなく内部クロックもＥＣＣ部２０に対して与えられる。この内部クロックはＳＲＡＭ３０において内部クロックＡＣＬＫに基づいて生成されたものであり、以後、内部クロックＣＬＫ＿ＰＧ１と呼ぶことにする。ＥＣＣ部２０は、内部クロックＣＬＫ＿ＰＧ１に同期して動作する。従ってＥＣＣ部２０は、ＳＲＡＭ３０から与えられるデータＤＡＴＡ＿ＲＡＭを、内部クロックＣＬＫ＿ＰＧ１に同期して内部に取り込む。
【０１３９】
またＥＣＣ部２０は、図示せぬ遅延回路やバッファ等により内部クロックＣＬＫ＿ＰＧ１の波形整形等の処理を行うことで、内部クロックＣＬＫ＿ＰＧ２を生成する。そしてＥＣＣ部２０は、内部クロックＣＬＫ＿ＰＧ２に同期して、データＤＡＴＡ＿ＮＡＮＤ（メインデータと、生成したパリティ）をＮＡＮＤ型フラッシュメモリ２へ出力する。
【０１４０】
ＥＣＣ部３０からは、データＤＡＴＡ＿ＮＡＮＤと共に、内部クロックＣＬＫ＿ＰＧ２もＮＡＮＤ型フラッシュメモリ２へ供給される。ＮＡＮＤ型フラッシュメモリ２は、内部クロックＣＬＫ＿ＰＧ２に同期して動作する。従ってＮＡＮＤ型フラッシュメモリ２は、ＥＣＣ部２０から与えられるデータＤＡＴＡ＿ＮＡＮＤを、内部クロックＣＬＫ＿ＰＧ２に同期して内部に取り込む。
【０１４１】
図２１は、データプログラム時における内部クロックＡＣＬＫ、ＣＬＫ＿ＰＧ１、ＣＬＫ＿ＰＧ２、及びデータＤＡＴＡ＿ＮＡＮＤ、ＤＡＴＡ＿ＲＡＭのタイミングチャートである。
【０１４２】
図示するように、データＤＡＴＡ＿ＲＡＭは内部クロックＣＬＫ＿ＰＧ１に同期してＮＡＮＤ型フラッシュメモリ２から出力され、内部クロックＣＬＫ＿ＰＧ１に同期してＥＣＣ部２０に取り込まれる。データＤＡＴＡ＿ＮＡＮＤは、内部クロックＣＬＫ＿ＰＧ２に同期してＥＣＣ部２０から出力され、またＮＡＮＤ型フラッシュメモリ２に取り込まれる。
【０１４３】
＜効果＞  
以上のように、この発明の第４の実施形態に係るメモリシステムであると、各機能ブロック間のデータ転送の流れに合わせて、内部クロックを伝播させている。言い換えれば、データロード時とデータプログラム時とにおいて、基準クロックを使い分けつつ、クロック同期データ転送を行っている。従って、メモリシステム１内におけるデータ転送精度を向上出来、メモリシステムの動作信頼性を向上出来る。本効果につき、以下説明する。
【０１４４】
近年、例えば携帯電話の多機能化・高性能化が進むにつれ、携帯電話システムも多様化し、現在では様々な種類のシステムが使われている。それぞれのシステムに使用されるメモリには最も適した種類や容量の組み合わせがあり、その一つが図１に示されるメモリシステム１である。メモリシステム１では、コントローラ部４と、ＮＡＮＤ型フラッシュメモリ２と、高速読み取り性能を備えたＮＯＲインターフェース（インターフェース部４０）と、バッファメモリとして活用するＳＲＡＭ３０と、データ訂正機能を備えたＥＣＣ部２０とが、１つのチップに集積される。このように複数の回路ブロック（システム）が１つのチップに搭載された場合、複数のシステム間のデータ転送精度を向上させる技術が重要となる。
【０１４５】
この点、あるクロック発生器の発生するクロックに基づいて複数のシステムを動作させる場合には、次のような問題が生じる。図２２は、コントローラ部４、ＮＡＮＤ型フラッシュメモリ２、ＥＣＣ部２０、及びＳＲＡＭ３０を備えたシステムのブロック図である。
【０１４６】
本構成において、オシレータ１６が発生する内部クロックＡＣＬＫに同期してＥＣＣ部２０及びＳＲＡＭ３０が動作する。またコントローラ部４は、内部クロックＡＣＬＫに基づいて内部クロックＣＬＫ＿ＬＯＡＤを生成し、内部クロックＣＬＫ＿ＬＯＡＤに同期してＮＡＮＤ型フラッシュメモリ２が動作する。
【０１４７】
この場合の各種信号のタイミングチャートを図２３に示す。図中において、“ＡＣＬＫ”はオシレータ１６で発生されたクロックであり、“ＡＣＬＫ（ＥＣＣ）”及び“ＡＣＬＫ（ＳＲＡＭ）”は、それぞれＥＣＣ部２０及びＳＲＡＭ３０に実際に入力されるクロックを示す。
【０１４８】
内部クロックＡＣＬＫ（ＥＣＣ）、ＡＣＬＫ（ＳＲＡＭ）は、内部クロックＡＣＬＫが遅延された信号である。そして、オシレータ１６からＥＣＣ部２０に達する経路で生じる遅延と、オシレータ１６からＳＲＡＭ３０に達する経路で生じる遅延は異なるのが通常であり、場合によっては非常に大きな差がある。更にその遅延量の差は、データＤＡＴＡ＿ＲＡＭがＥＣＣ部２０からＳＲＡＭ３０に達する際に発生する遅延量と何ら関連は無い。同様に、内部クロックＡＣＬＫ、ＣＬＫ＿ＬＯＡＤ間の位相差（遅延量）と、データＤＡＴＡ＿ＮＡＮＤがＮＡＮＤ型フラッシュメモリ２からＥＣＣ部２０に達する際に発生する遅延量との間にも関連性は無い。
【０１４９】
その結果、図２３に示す例であると、データＤＡＴＡ＿ＮＡＮＤについてはセットアップタイムｔＳ１がホールドタイムｔＨ１に比べて極端に短くなる。またデータＤＡＴＡ＿ＲＡＭについては、ホールドタイムｔＨ２がセットアップタイムｔＳ２に比べて極端に短くなる。このように、セットアップタイムとホールドタイムとの間に大きなアンバランスが生じることで、データを正確に転送するためのタイミング制御が非常にシビアになるという問題がある。また、上記アンバランスを改善するには配線遅延を調整する必要があるが、これは非常に困難であった。
【０１５０】
同様の問題はプログラム時にも発生する。図２４及び図２５はそれぞれ、プログラム時におけるシステムのブロック図及び各種信号のタイミングチャートである。図示するように、この場合にもデータＤＡＴＡ＿ＲＡＭ、ＤＡＴＡ＿ＮＡＮＤにおいて、セットアップタイムｔＳ１、ｔＳ２とホールドタイムｔＨ１、ｔＨ２との間にアンバランスが生じる。
【０１５１】
しかしながら、本実施形態に係る構成であると上記問題を解決出来る。すなわち、図１８及び図２０を用いて説明したように、各回路ブロックに使用する内部クロックを、ロード及びプログラム毎に切り替えている。更に、内部クロックの伝播方向をデータの伝播方向に合わせている。例えば、データを伝送する配線とクロックを伝送する配線とは並列に配置され、その配線長はほぼ等しくなる。従って、内部クロックに生じる遅延量は、データに生じる遅延量とほぼ等しくなり、上記問題が解決される。
【０１５２】
より具体的には、データロード時においては、内部クロックＣＬＫ＿ＬＯＡＤ１がＮＡＮＤ型フラッシュメモリ２に達するまでに必要な時間とＥＣＣ部２０に達するまでに必要な時間との差は、データＤＡＴＡ＿ＮＡＮＤがＮＡＮＤ型フラッシュメモリ２からＥＣＣ部２０に達するまでに必要な時間にほぼ等しい。また、内部クロックＣＬＫ＿ＬＯＡＤ２がＥＣＣ部２０からＳＲＡＭ３０に達するまでに必要な時間は、データＤＡＴＡ＿ＲＡＭがＥＣＣ部２０からＳＲＡＭ３０に達するまでに必要な時間にほぼ等しい。従って、図１９に示すように、データＤＡＴＡ＿ＮＡＮＤ、ＤＡＴＡ＿ＲＡＭについてのセットアップタイムｔＳ１とホールドタイムｔＨ１とをほぼ等しく出来る。
【０１５３】
またデータプログラム時においては、内部クロックＣＬＫ＿ＰＧ１がＳＲＡＭ３０からＥＣＣ部２０に達するまでに必要な時間と、データＤＡＴＡ＿ＲＡＭがＳＲＡＭ３０からＥＣＣ部２０に達するまでに必要な時間はほぼ等しい。また、内部クロックＣＬＫ＿ＰＧ２がＥＣＣ部２０からＮＡＮＤ型フラッシュメモリ２に達するまでに必要な時間は、データＤＡＴＡ＿ＮＡＮＤがＥＣＣ部２０からＮＡＮＤ型フラッシュメモリ２に達するまでに必要な時間にほぼ等しい。従って、図２１に示すように、データＤＡＴＡ＿ＮＡＮＤ、ＤＡＴＡ＿ＲＡＭについてのセットアップタイムｔＳ２とホールドタイムｔＨ２とをほぼ等しく出来る。
【０１５４】
以上の結果、メモリシステム１内において各回路ブロック間でのデータ転送精度を向上出来、配線遅延によるジッター（jitter）を大幅に改善出来る。
【０１５５】
以上のように、この発明の第１乃至第４の実施形態に係るメモリシステムであると、主記憶としてのＮＡＮＤ型フラッシュメモリ、バッファとしてのＳＲＡＭ、エラー訂正機能を有するＥＣＣ部、及びコントローラを同一半導体基板上に形成した半導体装置において、各ブロック間におけるデータ転送性能を向上出来る。これにより、メモリシステムの性能及び信頼性を向上出来る。
【０１５６】
なお、上記第１、第２の実施形態は、第３の実施形態と組み合わせても良い。すなわち、データロード時においては第１または第２の実施形態で説明したデータ転送方法を使用し、データプログラム時においては第３の実施形態で説明したデータ転送方法を使用しても良い。また上記では第４の実施形態は、第１乃至第３の実施形態の少なくともいずれかと組み合わせても良いが、組み合わせない場合であっても良い。すなわち、第４の実施形態において、パリティをメインデータの後に転送する場合であっても良い。
【０１５７】
また、第１乃至第３の実施形態において、各処理に要するクロック数（各回路ブロック間に要するクロック数や、ＥＣＣ処理に要するクロック数）は一例に過ぎず、上記記載の場合と異なっていても良い。更に、４０９６ビット（５１２バイト）のメインデータをＥＣＣ処理する場合について説明したが、ページバッファ１２のサイズが２Ｋバイトの場合、図６、図１４、または図１６で説明したデータ転送を４回繰り返すことで、ページサイズのデータを転送出来る。
【０１５８】
また、上記第３の実施形態では、転送処理Ｔｂ−ｐにより、パリティをＤＱバッファ３１からＥＣＣバッファ２１へ転送している。しかし、処理Ｐｐにおいては、既に行われた処理Ｐｍ１〜Ｐｍ８の結果に応じてパリティが生成され、このパリティによってＴｂ−ｐで生成されたパリティは上書きされる。従って、転送処理Ｔｂ−ｐを省略しても構わない。
【０１５９】
データロード時も同様であり、パリティはＥＣＣ処理に使用後は不要となる。従って、第１、第２の実施形態で説明した転送処理Ｔｂ−ｐは省略しても構わない。しかしながら、ＤＱバッファ３１及びメモリセルアレイ３２にパリティを格納する領域を設け、この領域にメインデータと同様にパリティを転送することで、ＥＣＣ処理でのパリティ生成が正常か否かを確認することが出来る。
【０１６０】
更に、上記第４の実施形態ではクロックの立ち上がりエッジで同期してデータが入出力される場合を例に説明したが、立ち下がりエッジで入出力されても良い。
【０１６１】
更に、上記第１乃至第４の実施形態では、ＮＡＮＤ型フラッシュメモリ２、ＲＡＭ部３、及びコントローラ部４がワンチップに集積された例を挙げて説明した。このようなメモリシステム２の具体例としては、「ＯｎｅＮＡＮＤ（登録商標）」型のフラッシュメモリが挙げられる。しかし、必ずしもワンチップ化されている場合に限らず、ＮＡＮＤ型フラッシュメモリ２、ＲＡＭ部３、及びコントローラ部４が別々の半導体チップで実現されている場合であっても良い。
【０１６２】
すなわち、上記実施形態に係るデータ転送方法は、  
（１）ＮＡＮＤ型フラッシュメモリ１０からデータをページ単位で第１バッファ１２に読み出すステップＳ１０と、前記第１バッファ１２に読み出したデータのうち、パリティを第２バッファ２１に転送するステップＳ１２と、前記パリティを前記第２バッファ２１に転送した後、前記第１バッファ１２に読み出したデータのうち、メインデータを前記第２バッファ２１に転送するステップＳ１４〜Ｓ１７と、前記パリティを用いて、前記第２バッファ２１に転送された前記メインデータのエラー訂正処理を行うステップＳ１８と、前記エラー訂正処理の行われた前記メインデータを、第３バッファ３１に転送するステップＳ１９とを具備する。  
（２）上記（１）において、前記メインデータはＮ個（Ｎは３以上の自然数）のグループＤ１〜Ｄ８に分割されて、順次、前記第１バッファ１２から前記第２バッファ２１へ転送され、ｉ番目（ｉは自然数であり、ｉ≦Ｎ）のグループＤｉが前記第１バッファ１２から前記第２バッファ２１に転送される期間に、（ｉ−１）番目のグループＤ（ｉ−１）のエラー訂正処理が行われ、且つエラー訂正処理済みの（ｉ−２）番目のグループＤ（ｉ−２）が前記第３バッファ３１に転送される。  
（３）上記（２）において、前記第２バッファ２１は、それぞれがデータ保持可能な第１データ保持部２３と第２データ保持部２４とを備え、前記第１データ保持部２３に前記ｉ番目のグループＤｉが転送される期間において、前記第２データ保持部２４は前記（ｉ−１）番目のグループＤ（ｉ−１）のエラー訂正処理に使用される。  
（４）上記（１）において、前記ＮＡＮＤ型フラッシュメモリ１０は、前記メインデータを保持可能な第１領域１７と、前記パリティを保持可能な第２領域１８とを備え、前記第１乃至第３バッファ１２、２１、３１はそれぞれ、前記第１領域１７内の前記メインデータに対応する領域と、前記第２領域１８内の前記パリティに対応する領域とを備える。  
（５）上記（１）において、前記第１バッファ１２からの前記第２バッファ２１への前記メインデータの転送、前記メインデータの前記エラー訂正処理、及び前記第２バッファ２１からの前記第３バッファ３１への前記メインデータの転送は、前記メインデータを複数のグループに分割して行われる。  
（６）第１バッファ３１からメインデータを第２バッファ２１へ転送するステップＳ４１〜Ｓ４４と、前記第２バッファ２１へ転送された前記メインデータにつき、エラー訂正回路２２がパリティを作成するステップＳ４６と、前記メインデータと前記パリティとを第３バッファ１２に転送するステップＳ４７と、前記メインデータと前記パリティとを、ページ単位でＮＡＮＤ型フラッシュメモリ１０にプログラムするステップＳ５０とを具備し、前記メインデータはＮ個（Ｎは３以上の自然数）のグループＤ１〜Ｄ８に分割されて、順次、前記第１バッファ３１から前記第２バッファ２１へ転送され、ｉ番目（ｉは自然数であり、（ｉ＋２）≦Ｎ）のグループＤｉが前記第２バッファ２１から前記第３バッファ１２に転送される期間に、（ｉ＋１）番目のグループＤ（ｉ＋１）につきパリティが生成され、且つ（ｉ＋２）番目のグループＤ（ｉ＋２）が前記第１バッファ３１から前記第２バッファ２１に転送される。  
（８）上記（７）において、前記第２バッファ２１は、それぞれがデータ保持可能な第１データ保持部２３と第２データ保持部２４とを備え、前記第１データ保持部２３に前記ｉ番目のグループＤｉが転送される期間において、前記第２データ保持部２４は前記（ｉ＋１）番目のグループＤ（ｉ＋１）の前記パリティの生成に使用される。  
（９）上記（７）において、前記第１バッファ３１からの前記第２バッファ２１への前記メインデータの転送、前記メインデータについての前記パリティの生成、及び前記第２バッファ２１からの前記第３バッファ１２への前記メインデータの転送は、前記メインデータを複数のグループに分割して行われる。  
（９）上記（１）乃至（８）のいずれかにおいて、前記第１バッファと前記第２バッファとの間でデータを転送する第１転送経路のバス幅は、前記第２バッファと前記第３バッファとの間でデータを転送する第２転送経路のバス幅と等しい。  
（１０）上記（９）において、前記第２バッファ２１は、前記メインデータの入力と出力とを時間的に平行して行う機能を有する。  
更に、上記実施形態に係るメモリシステムは、  
（１１）データを保持可能なＮＡＮＤ型フラッシュメモリ２と、前記データについてのＥＣＣ処理を行うＥＣＣシステム２０と、前記ＮＡＮＤ型フラッシュメモリ２に対する前記データの入出力に使用されるバッファメモリ３０と、前記ＮＡＮＤ型フラッシュメモリ２、前記ＥＣＣシステム２０、及び前記バッファメモリ３０の動作を制御するコントローラ４とを具備し、前記ＮＡＮＤ型フラッシュメモリ２、前記ＥＣＣシステム２０、前記バッファメモリ３０、及び前記コントローラ４間におけるクロックの伝播方向が、前記データのロード時とプログラム時とで切り替わる。  
（１２）上記（１１）において、第１クロックＡＣＬＫを生成するクロック生成器１６を更に備え、前記データのプログラム時には、前記データが前記バッファメモリ３０から前記ＥＣＣシステム２０を介して前記ＮＡＮＤ型フラッシュメモリ２に転送され、  
前記バッファメモリ３０は、前記第１クロックＡＣＬＫに基づいて第２クロックＣＬＫ＿ＰＧ１を生成し、前記第２クロックＣＬＫ＿ＰＧ１に同期して、前記第２クロックＣＬＫ＿ＰＧ１と前記データを前記ＥＣＣシステム２０へ転送し、  
前記ＥＣＣシステム２０は、前記データにつきパリティを生成すると共に、前記第２クロックに基づいて第３クロックＣＬＫ＿ＰＧ２を生成し、前記第３クロックＣＬＫ＿ＰＧ２に同期して、前記第３クロックＣＬＫ＿ＰＧ２と前記データを前記ＮＡＮＤ型フラッシュメモリ２に転送し、  
前記ＮＡＮＤ型フラッシュメモリ２は、前記第３クロックＣＬＫ＿ＰＧ２に同期して、前記データを受信する。  
（１３）上記（１１）において、第１クロックＡＣＬＫを生成するクロック生成器１６を更に備え、前記データのロード時には、前記コントローラ４が前記第１クロックＡＣＬＫに基づいて第２クロックＣＬＫ＿ＬＯＡＤ１を生成し、  
前記ＮＡＮＤ型フラッシュメモリ２は、前記第２クロックＣＬＫ＿ＬＯＡＤ１に同期して前記データを前記ＥＣＣシステム２０へ転送し、  
前記ＥＣＣシステム２０は、前記第２クロックＣＬＫ＿ＬＯＡＤ１に同期して前記データを受信し、前記データにつきエラー検出及びエラー訂正を行うと共に、前記第２クロックＣＬＫ＿ＬＯＡＤ１に基づいて第３クロックＣＬＫ＿ＬＯＡＤ２を生成し、前記第３クロックＣＬＫ＿ＬＯＡＤ２に同期して、前記第３クロックＣＬＫ＿ＬＯＡＤ２と前記データを前記バッファメモリ３０へ出力し、  
前記バッファメモリ３０は、前記第３クロックＣＬＫ＿ＬＯＡＤ２に同期して、前記データを受信する。
【０１６３】
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【図面の簡単な説明】
【０１６４】
【図１】この発明の第１の実施形態に係るメモリシステムのブロック図。
【図２】この発明の第１の実施形態に係るＮＡＮＤ型フラッシュメモリのメモリセルアレイの回路図。
【図３】この発明の第１の実施形態に係るページデータの模式図。
【図４】この発明の第１の実施形態に係るＥＣＣ部のブロック図。
【図５】この発明の第１の実施形態に係るデータ転送方法のフローチャート。
【図６】この発明の第１の実施形態に係るデータ転送方法のタイミングチャート。
【図７】この発明の第１の実施形態に係るメモリシステムのブロック図。
【図８】この発明の第１の実施形態に係るメモリシステムのブロック図。
【図９】この発明の第１の実施形態に係るメモリシステムのブロック図。
【図１０】この発明の第１の実施形態に係るメモリシステムのブロック図。
【図１１】この発明の第２の実施形態に係るページデータの模式図。
【図１２】この発明の第２の実施形態に係るＥＣＣ部のブロック図。
【図１３】この発明の第２の実施形態に係るデータ転送方法のフローチャート。
【図１４】この発明の第２の実施形態に係るデータ転送方法のタイミングチャート。
【図１５】この発明の第３の実施形態に係るデータ転送方法のフローチャート。
【図１６】この発明の第３の実施形態に係るデータ転送方法のタイミングチャート。
【図１７】この発明の第４の実施形態に係るメモリシステムのブロック図。
【図１８】この発明の第４の実施形態に係るメモリシステムのブロック図。
【図１９】この発明の第４の実施形態に係るメモリシステムにおける、データ及びクロックのタイミングチャート。
【図２０】この発明の第４の実施形態に係るメモリシステムのブロック図。
【図２１】この発明の第４の実施形態に係るメモリシステムにおける、データ及びクロックのタイミングチャート。
【図２２】メモリシステムのブロック図。
【図２３】データ及びクロックのタイミングチャート。
【図２４】メモリシステムのブロック図。
【図２５】データ及びクロックのタイミングチャート。
【符号の説明】
【０１６５】
１…メモリシステム、２…ＮＡＮＤ型フラッシュメモリ、３…ＲＡＭ部、４…コントローラ部、１０、３２…メモリセルアレイ、１１、３４…ロウデコーダ、１２…ページバッファ、１３…電圧発生回路、１４…シーケンサ、１５、１６…オシレータ、１７…第１領域、１８…第２領域、１９…メモリセルユニット、２０…ＥＣＣ部、２１…ＥＣＣバッファ、２２…ＥＣＣエンジン、２３…第１保持部、２４…第２保持部、２５…第３保持部、２６…メインデータ保持部、２７…パリティ保持部、２８、３５、８０…入出力部、３０…ＳＲＡＭ、３１…ＤＱバッファ、３３…センスアンプ、４０…インターフェース部、４１、４２…バーストバッファ、４３…インターフェース、５０…アクセスコントローラ、６０…レジスタ、６１…コマンドユーザインターフェース、６２…ステートマシン、６３…アドレス／コマンド発生回路、６４…アドレス／０タイミング発生回路、７０〜７２…スイッチ
【図１】
2010009141.tif 000003
【図２】
2010009141.tif 000004
【図３】
2010009141.tif 000005
【図４】
2010009141.tif 000006
【図５】
2010009141.tif 000007
【図６】
2010009141.tif 000008
【図７】
2010009141.tif 000009
【図８】
2010009141.tif 000010
【図９】
2010009141.tif 000011
【図１０】
2010009141.tif 000012
【図１１】
2010009141.tif 000013
【図１２】
2010009141.tif 000014
【図１３】
2010009141.tif 000015
【図１４】
2010009141.tif 000016
【図１５】
2010009141.tif 000017
【図１６】
2010009141.tif 000018
【図１７】
2010009141.tif 000019
【図１８】
2010009141.tif 000020
【図１９】
2010009141.tif 000021
【図２０】
2010009141.tif 000022
【図２１】
2010009141.tif 000023
【図２２】
2010009141.tif 000024
【図２３】
2010009141.tif 000025
【図２４】
2010009141.tif 000026
【図２５】
2010009141.tif 000027