しかしながら、小容量のSRAMを採用したのでは、外部からバッファメモリに入力したデータをフラッシュメモリに書き込みが完了するまでホスト装置からメモリカードへのデータ転送を待たせなければならない。また、フラッシュメモリからバッファメモリに蓄積した読み出しデータを外部に出力するまでフラッシュメモリの新たな読み出し動作を待たせなければならない。特に、フラッシュメモリへの書き込みを失敗した場合、例えば当初の書き込み動作を行ったセクタの不良により代替セクタへの再書き込みを行わなければならないとき、ホスト装置から次の書き込みデータをバッファメモリに受取ることができない。すなわち、フラッシュメモリとコントローラとの間の問題によりホスト装置とコントローラ間のデータ転送を待たせなければならない。これによって、ホスト装置の負担及び処理時間が増えて、データ処理効率が低下するとい問題を生ずる。
本発明者は上記問題点を検討する過程において、公知ではないが、本出願人による特許出願の存在を確認した。特願2001−174978、特願2001−177924、特願2001−213639、特願2001−213640である。これらの出願は揮発性メモリとしてのSDRAMの記憶情報をバックアップするのに不揮発性メモリとしてのフラッシュメモリを用いる技術を提供する。SDRAMはバッファメモリとして位置付けられていない。
本発明の目的は、メモリアクセスを伴うデータ処理即率の向上に寄与するメモリシステムを提供することにある。
本発明の別の目的は、外部からのアクセス要求に応答して外部インタフェースと不揮発性メモリのアクセス制御とを行うメモリシステムにおいて、ホスト装置との間のデータ転送に関するホスト装置の待ち時間短縮、処理負担低減、処理時間低減に寄与することができるメモリシステムを提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
〔1〕メモリシステムは、書き換え可能な不揮発性メモリと、バッファメモリと、コントローラとを有する。前記コントローラは、外部装置からのアクセス要求に応答して、前記コントローラと前記外部装置との間の第1データ転送、前記コントローラと前記不揮発性メモリとの間の第2データ転送、及び前記コントローラと前記バッファメモリとの間の第3データ転送を制御し、前記第3データ転送における前記コントローラから前記バッファメモリへの転送と前記バッファメモリから前記コントローラへの転送とを時分割で制御し、この時分割による転送に並行して前記第1データ転送又は前記第2データ転送を可能にする。
上記より、外部からのライトアクセス要求に応答するときコントローラは、バッファメモリへの書込みデータの蓄積とバッファメモリに蓄積した書込みデータの出力とを時分割で行ない、その書き込みデータ蓄積処理に並行して第2データ転送による不揮発性メモリへの書込みデータの転送を行なうことができ、また、その書き込みデータ出力処理に並行して第1データ転送による外部装置からの次の書き込みデータの入力を行なうことができる。外部からのリードアクセス要求に応答するときコントローラは、バッファメモリへの読み出しデータの蓄積とバッファメモリに蓄積した読み出しデータの出力とを時分割で行ない、その読み出しデータ蓄積処理に並行して第1データ転送による外部装置への読み出しデータの転送を行なうことができ、また、その読み出しデータ出力処理に並行して第2データ転送による不揮発性メモリからの次の読み出しデータの入力を行なうことができる。
上記バッファメモリのバッファリング機能により、外部装置例えばホスト装置による複数の書込みデータの供給タイミングに多くの待ち時間を必要とせず、また、ホスト装置による複数の読み出しデータの取得タイミングに多くの待ち時間を必要としない。したがって、ホスト装置とコントローラとの間のデータ転送に関するホスト装置の待ち時間短縮、処理負担低減、処理時間低減に寄与することができる。これは、メモリアクセスを伴うデータ処理即率の向上に寄与する。
本発明の望ましい一つの態様として、上記バッファリング機能を最大限発揮させるには前記第3データ転送の動作速度を、前記第1データ転送速度の大凡2倍よりも速くすることが望ましい。理論上ホスト装置の待ち時間がなくなる。
本発明の望ましい一つの態様として、前記バッファメモリをシングルポートのクロック同期型の揮発性メモリとし、FIFO動作させるのがよい。バッファメモリの高速化とアクセス制御の容易を実現できる。不揮発性メモリは例えばフラッシュメモリである。
第1転送と第3転送との間のバッファリング、第2転送と第3転送との間のバッファリングを実現する一つの態様として、前記コントローラは、前記外部装置とバッファメモリとの間に配置されるデュアルポートのデータバッファと、前記バッファメモリと前記不揮発性メモリとの間に配置されるデュアルポートのデータバッファとを有するのが望ましい。第1データ転送と第3データ転送の並列化、第2データ転送と第3データ転送の並列化のための制御が更に容易になる。
〔2〕本発明の別の観点によるメモリシステムは、書き換え可能な不揮発性メモリと、バッファメモリと、コントローラとを有する。前記コントローラは、外部装置に接続される第1データ転送制御部と、前記不揮発性メモリに接続される第2データ転送制御部と、前記バッファメモリに接続され前記第1データ転送制御部からの転送要求及び第2データ転送制御部からの転送要求に応答してバッファメモリとの間のデータ転送を制御する転送調停部とを有する。前記第1データ転送制御部は、デュアルポートのデータバッファを介して外部装置と転送調停部に接続され、転送調停部に転送要求を出力する。前記第2データ転送制御部は、デュアルポートのデータバッファを介して不揮発性メモリと転送調停部に接続され、転送調停部に転送要求を出力する。転送調停部は、第1データ転送制御部からの転送要求と第2データ転送制御部からの転送要求に対し、前記バッファメモリに対する書き込み方向の転送と前記バッファメモリに対する読み出し方向の転送とを時分割で制御する。
上記より、外部装置とコントローラとの間のデータ転送は第1データ転送制御部におけるデータバッファでバッファリングされ、不揮発性メモリとコントローラとの間のデータ転送は第2データ転送制御部におけるデータバッファでバッファリングされ、双方のデータバッファとバッファメモリとの間のデータ転送を時分割で行なうことができる。よって、外部からのライトアクセス要求に応答するときコントローラは、バッファメモリへの書込みデータの蓄積とバッファメモリに蓄積した書込みデータの出力とを時分割で行ない、その書き込みデータ蓄積処理に並行して第2転送制御部のデータバッファから不揮発性メモリに書込みデータの転送を行なうことができ、また、その書き込みデータ出力処理に並行して第1転送制御部のデータバッファに外部装置からの次の書き込みデータを取り込むことができる。外部装置からのリードアクセス要求に応答するときコントローラは、バッファメモリへの読み出しデータの蓄積とバッファメモリに蓄積した読み出しデータの出力とを時分割で行ない、その読み出しデータ蓄積処理に並行して第1転送制御部のデータバッファから外部装置へ読み出しデータの転送を行なうことができ、また、その読み出しデータ出力処理に並行して第2転送制御部にデータバッファに不揮発性メモリからの次の読み出しデータの取込みを行なうことができる。
上記バッファリング機能により、外部装置例えばホスト装置による複数の書込みデータの供給タイミングに多くの待ち時間を必要とせず、また、ホスト装置による複数の読み出しデータの取得タイミングに多くの待ち時間を必要としない。したがって、ホスト装置とコントローラ間のデータ転送に関するホスト装置の待ち時間短縮、処理負担低減、処理時間低減に寄与することができる。これは、メモリアクセスを伴うデータ処理即率の向上に寄与する。
本発明の具体的な態様として、外部からのライトアクセス要求に応答するとき、前記第1データ転送制御部は外部装置からデータバッファに所定量のデータが蓄積されたとき転送調停部にバッファメモリに対する書き込みのための転送要求を出力し、前記第2データ転送制御部はデータバッファに所定量のデータがないとき転送調停部にバッファメモリからデータバッファに対する読み出しのための転送要求を出力する。また、外部からのリードアクセス要求に応答するとき、前記第2データ転送制御部はバッファメモリからデータバッファに所定量のデータが蓄積されたとき転送調停部にバッファメモリに対する書き込みのための転送要求を出力し、前記第1データ転送制御部はデータバッファに所定量のデータがないとき転送調停部にバッファメモリに対する読み出しのための転送要求を出力する。
本発明の望ましい一つの態様として、上記バッファリング機能を最大限発揮させるには、前記調停部によるバッファメモリとの間のデータ転送の動作速度を、前記第1転送制御部による外部との間のデータ転送の動作速度に対して大凡2倍よりも速くすることが望ましい。理論上ホスト装置の待ち時間がなくなる。
本発明の望ましい一つの態様として、前記バッファメモリをシングルポートのクロック同期型の揮発性メモリで構成し、FIFO動作させるのがよい。バッファメモリの高速化とアクセス制御が容易である。不揮発性メモリは例えばフラッシュメモリである。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、外部からのライトアクセス要求に応答するときコントローラは、バッファメモリへの書込みデータの蓄積とバッファメモリに蓄積した書込みデータの出力とを時分割で行なうことができる。データバッファをデュアルポート化すれば、その書き込みデータ蓄積処理に並行して第2データ転送による不揮発性メモリへの書込みデータの転送を行なうことができ、また、その書き込みデータ出力処理に並行して第1データ転送による外部装置からの次の書き込みデータの入力を行なうことができる。
外部からのリードアクセス要求に応答するときコントローラは、バッファメモリへの読み出しデータの蓄積とバッファメモリに蓄積した読み出しデータの出力とを時分割で行なう。データバッファのデュアルポート化により、その読み出しデータ蓄積処理に並行して第1データ転送による外部装置への読み出しデータの転送を行なうことができ、また、その読み出しデータ出力処理に並行して第2データ転送による不揮発性メモリからの次の読み出しデータの入力を行なうことができる。
これにより、外部装置例えばホスト装置による複数の書込みデータの供給タイミングに多くの待ち時間を必要とさせず、また、ホスト装置による複数の読み出しデータの取得タイミングに多くの待ち時間を必要とさせない。したがって、ホスト装置とコントローラ間のデータ転送に関するホスト装置の待ち時間短縮、処理負担低減、処理時間低減に寄与することができる。メモリアクセスを伴うデータ処理効率を向上させることができる。
図1には本発明に係るメモリシステムの一例であるフラッシュメモリカードが例示される。同図に示されるフラッシュメモリカード1は、所定のセクタアドレス(物理アドレス)単位にデータ記憶領域とその管理領域とを有するフラッシュメモリ(不揮発性メモリ)2と、メモリシステムの外部に接続される外部情報処理装置例えばホスト装置3からの要求に応答して前記フラッシュメモリ2に対するアクセス制御を行うコントローラ4、前記コントローラ4に接続されたバッファメモリ5とを有する。
前記フラッシュメモリ2は、特に図示はしないが、電気的に消去及び書き込み可能なフラッシュッメモリセルをマトリクス配置したメモリセルアレイを有する。フラッシュッメモリセルは、特に制限されないが、チャンネル領域の上に絶縁膜で分離されたフローティングゲートとコントロールゲートを有し、例えば、電子をフローティングゲートにホットエレクトロン注入することでメモリセルの閾値電圧を上げ(例えば書き込みと称する)、また、フローティングゲートに注入されている電子をゲート絶縁膜を介してトンネル電流で放出させることによりメモリセルの閾値電圧を低くする(消去と称する)。フラッシュメモリセルのドレインはビット線に、ソースはソース線に、コントロールゲートはワード線に接続される。例えば、ワード線に割り当てられたアドレスが前記セクタアドレスである。セクタドレス信号によるワード線選択はワード線選択回路で行われる。セクタアドレスで指定された複数のフラッシュメモリセルの一部に対する選択はカラムアドレスを起点にカラムアドレスカウンタで生成されるカラムアドレス信号に基づいて行われる。尚、フラッシュメモリとして例えば特開2001−23383公報に記載の構成を採用することができる。
前記フラッシュメモリ2は例えばファイルメモリとして機能され、ローカルなメモリアドレスマッピングは図2に例示されるように、セクタアドレス1〜nの各アドレスに管理領域とユーザデータ記憶領域が割当てられ、管理領域には各セクタの良否(有効性)更には代替先の有無などの情報が記憶される。
前記バッファメモリ5は例えばクロック同期型の揮発性メモリであるシングルポートのSDRAM(Synchronous Dynamic Random Access Memory)によって構成される。以下バッファメモリ5を単にSDRAM5とも記す。前記SDRAM5は例えばダイナミック型メモリセルをマトリクス配置したメモリセルアレイを有し、クロック同期でコマンド及びアドレス等を入力し、コマンドで指定されるライトアクセス又はリードアクセスなどをクロック信号に同期して高速に行なうことができる。例えばホスト装置3とコントローラ4との間のバスを介するデータ転送(第1データ転送)の速度を100MB(メガ・バイト)/s(秒)とすると、SDRAM5とコントローラ4との間のバスを介するデータ転送(第3データ転送)の速度はその2倍以上である266MB/sとされる。フラッシュメモリ2とコントローラ4との間のバスを介するデータ転送(第2データ転送)の速度はフラッシュッメモリ2自体のアクセス速度が遅いのでそれに合わせて20MB/s程度である。
前記コントローラ4は、ホストデータ転送制御部(第1データ転送制御部)11、フラッシュデータ転送制御部(第2データ転送制御部)12、転送調停部13、CPU14、及び制御レジスタ15から成る。
前記制御レジスタ15はコマンドレジスタ(15C)、アドレスレジスタ(15A)及びステータスレジスタ(15S)を有する。ホスト装置3はフラッシュメモリカード1をアクセスするときコマンドレジスタ15Cにリード又はライトなどのコマンドをセットし、アクセスアドレスをアドレスレジスタ15Aにセットする。ホスト装置3とフラッシュメモリカード1との状態はステータスレジスタ15Sを介して相互に認識可能にされる。
CPU14はフラッシュメモリカード1を全体的に制御する。コマンドレジスタ15Cにコマンドがセットされると、CPU14はそのコマンドを解釈し、フラッシュメモリ2に対するメモリインタフェース制御と、ホスト装置3との間のデータインタフェース制御、そして、インタフェース制御されるデータに対するバッファ制御等を行なうことによって、アドレスレジスタ15Aにセットされたアドレスに対応するフラッシュメモリ2のセクタに対するアクセスを完了する。
前記ホストデータ転送制御部11はデュアルポートのデータバッファ20を介してホスト装置3と転送調停部13を接続する。転送要求回路21は転送調停部13に対して信号HDRQで転送要求を出し、信号HDACKでアクノリッジを受けることにより転送調停部13との間でデータバッファ20がデータの入力又は出力動作される。この入力又は出力は、ホストデータ転送制御部11が、信号HDIRを使って転送調停部13に指示する。このHDIR信号は、CPU14が転送動作開始前に、ホストデータ転送制御部11に設定する。ホストデータ転送制御部11は信号HDACKによるアクノリッジに応答して開始したデータバッファ20の転送調停部13に対する入力又は出力動作量が規定量に達したとき信号HEND_IRQをCPUにアサートして転送動作を終了する。これによってCPU14は転送調停部13に新たな転送要求を受付可能にする。ホストデータ転送制御部11はホスト装置3にウェイト信号HWAITを出力し、それをアサートすることによってホスト装置3に動作の休止を指示することができる。
尚、図示はしないが、データバッファ20とホスト装置3側との間の転送動作の可否についてはステータスレジスタ15Sを介するステータスの交換により判断する。ホスト装置3から見るとデータバッファ21はそのアドレス空間にマッピングされている。コントローラ4のホストインタフェース部分のアドレスマッピングを全体的に示すと図3のようになる。
前記フラッシュデータ転送制御部12はデュアルポートのデータバッファ22を介してフラッシュメモリ2と転送調停部13を接続する。データバッファ22はデュアルポートのFIFOバッファにより構成される。転送要求回路23は転送調停部13に対して信号FDRQで転送要求を出し、信号FDACKでアクノリッジを受けることにより転送調停部13との間でデータバッファ22がデータの入力又は出力動作される。この入力又は出力は、フラッシュデータ転送制御部13が、信号FDIRを使って転送調停部13に指示する。この信号FDIRは、CPU14が転送動作開始前に、フラッシュデータ転送制御部12に設定する。フラッシュデータ転送制御部12は信号FDACKによるアクノリッジに応答して開始したデータバッファ22の転送調停部13に対する入力又は出力動作量が規定量に達したとき信号FEND_IRQをCPUにアサートして転送動作を終了する。これによってCPU14は転送調停部13に新たな転送要求を受付可能にする。尚、図示はしないが、データバッファ22とフラッシュメモリ2側との間の転送動作の可否についてはフラッシュデータ転送制御部12がフラッシュッメモリ2のステータスレジスタを介するステータスの交換により判断する。
転送調停部13は、転送許可回路30、ホスト転送用アドレスカウンタ31及びフラッシュ転送用アドレスカウンタ32から成る。前記ホスト転送用アドレスカウンタ31はデータバッファ20とバッファメモリ5との間のデータ転送におけるSDRAM5のアクセスアドレスを生成する。前記フラッシュ転送用アドレスカウンタ32はデータバッファ22とフラッシュメモリ2との間のデータ転送におけるSDRAM5のアクセスアドレスを生成する。前記アドレスカウンタ31,32に対するアドレスプリセットはホスト装置3からのアクセス要求毎にCPU14が行なう。ここでは、SDRAM5は図4に例示されるようにFIFO形式でアクセス制御される。前記ホスト転送用アドレスカウンタ31はデータバッファ20からSDRAM5への書き込みにおいてはライトアドレスポインタとして機能され、SDRAM5からデータバッファ20への読み出しにおいてはリードアドレスポインタとして機能される。前記フラッシュ転送用アドレスカウンタ32はデータバッファ22からSDRAM5への書き込みにおいてはライトアドレスポインタとして機能され、SDRAM5からデータバッファ22への読み出しにおいてはリードアドレスポインタとして機能される。転送許可回路30は転送要求信号HDRQとFDRQとの競合を調停し、調停結果を信号HDACK、FDACKにより転送要求回路21,23に返す。
図5には転送調停部13による制御動作が例示される。転送調停部13は信号HDRQによってホスト転送要求があるか(S1)、信号FDRQによってフラッシュ転送要求があるか(S2)、リフレッシュする必要があるか(S3)を順次サイクリックに判定している。信号HDRQによりホスト転送要求がある場合、ホスト装置3からのライトアクセス要求に応答する処理ではアドレスカウンタ31が示すSDRAM5のアドレスへの書き込みを行ない、ホスト装置3からのリードアクセス要求に応答する処理ではアドレスカウンタ31が示すSDRAM5のアドレスに対する読み出しを行なって(S1A)、アドレスカウンタ31をインクリメントする(S1B)。信号FDRQによりフラッシュ転送要求がある場合、ホスト装置3からのライトアクセス要求に応答する処理ではアドレスカウンタ32が示すSDRAM5のアドレスに対する読み出し、ホスト装置3からのリードアクセス要求に応答する処理ではアドレスカウンタ32が示すSDRAM5のアドレス対する書き込みを行なって、アドレスカウンタ32をインクリメントする。リフレッシュを要すると判断されればSDRAM5に対する記憶情報のリフレッシュを行なう。リフレッシュアドレスは転送調停部13が保有する図示しないリフレッシュアドレスカウンタを用いて生成される。
図5より明らかなように、ホスト装置3からのライトアクセス要求に応答する処理では、アドレスカウンタ31が示すSDRAM5のアドレスへの書き込みと、アドレスカウンタ32が示すSDRAM5のアドレスに対する読み出しを、8バイト単位などで時分割即ち交互に行なうことができる。ホスト装置3からのリードアクセス要求に応答する処理ではアドレスカウンタ31が示すSDRAM5のアドレスに対する読み出しと、アドレスカウンタ32が示すSDRAMのアドレス対する書き込みを、8バイト単位などで時分割即ち交互に行なうことができる。
図6にはライト転送要求時におけるCPUの制御動作が例示される。CPU14は、ホスト装置3からのライトアクセス要求を検出すると(S10)、ホスト転送用アドレスカウンタ31のセット、即ち、初期化若しくは初期値のプリセットを行なう(S11)。更にCPU14はホストデータ転送制御部11にホスト装置3からデータバッファ20に入力されるデータを転送調停部13に転送制御する指示を与える(S12)。この後、CPU14はステータスレジスタ15Sに転送可能ステータスをセットしてホスト装置3に書き込みデータのデータバッファ20への転送開始を通知する(S13)。これによって転送調停部13は図5で説明した前記ホスト転送要求(S1)があった時の処理を行うことにより、ホスト装置3からデータバッファ20に8バイトのデータが入力される度にそのデータをアドレスカウンタ31で指定されるSDRAM5に格納可能にされる。更にCPU14は、アドレスレジスタ15Aに入力されたアクセスアドレスからフラッシュメモリ2の物理アドレス即ちセクタアドレスを算出し(S14)、算出したセクタアドレスへのライトコマンドをフラッシュデータ転送制御部4を介してフラッシュメモリ2に設定する(S15)。この後、CPU14はフラッシュ転送用アドレスカウンタ32のセット、即ち、初期化若しくは初期値のプリセットを行なう(S16)。そしてCPU14はフラッシュデータ転送制御部12にSDRAM5からデータバッファ22に8バイトのデータが入力される度にそのデータをフラッシュメモリ2に転送可能とする指示を与える(S17)。この間に転送調停部13は図5で説明した前記フラッシュ転送要求(S2)があった時の処理を行うことにより、データバッファ22の保持データが8バイトになるように、SDRAM5の記憶データをアドレスカウンタ32の値に従ってデータバッファ22の転送する。
CPU14は図5のホスト転送要求に応ずる処理とフラッシュ転送要求に応ずる処理が時分割で繰り返されていくいとき、前記信号HEND_IRQ及びFEND_IRQが共にアクティブになる状態を検出して(S18)、ライトアクセス要求待ち状態に入る(S10)。即ち、ホスト装置3から指示されたライトアクセス要求に応答して実行すべきライトデータ数に応ずるデータがSDRAM5に格納されたときHEND_IRQがアクティブにされ、前記実行すべきライトデータ数に応ずるデータがSDRAM5から読み出されたとき信号FEND_IRQがアクティブにされる。
図7にはリードアクセス要求時におけるCPUの制御動作が例示される。CPU14は、ホスト装置3からのリードアクセス要求を検出すると(S20)、アドレスレジスタ15Aに入力されたアクセスアドレスからフラッシュメモリ2の物理アドレス即ちセクタアドレスを算出し(S21)、算出したセクタアドレスへのリードコマンドをフラッシュデータ転送制御部4を介してフラッシュメモリ2に設定する(S22)。そしてCPU14はフラッシュ転送用アドレスカウンタ32のセット、即ち、初期化若しくは初期値のプリセットを行なう(S23)。更にCPU14はフラッシュデータ転送制御部12に、フラッシュメモリ2からデータバッファ22に入力されるデータを転送調停部13に転送制御する指示を与える(S24)。これによって転送調停部13は図5で説明した前記フラッシュ転送要求(S2)があった時の処理を行うことにより、フラッシュメモリ2からデータバッファ22に例えば8バイトのデータが入力される度に、そのデータをアドレスカウンタ32で指定されるSDRAM5に格納可能にする。この後、CPU14はホスト転送用アドレスカウンタ31のセット、即ち、初期化若しくは初期値のプリセットを行なう(S25)。そしてCPU14はホストデータ転送制御部11にSDRAM5からデータを読み出してデータバッファ20に供給する指示を与える(S26)。CPU14はステータスレジスタ15に転送可能ステータスをセットしてホスト装置3に読み出しデータの取込みが可能であることを通知し(S13)、転送調停部13は図5で説明した前記ホスト転送要求(S1)があった時の処理を行なって、データバッファ20の保持データが8バイトになるようにSDRAM5の記憶データをアドレスカウンタ31の値に従ってデータバッファ20の転送する。
CPU14は図5のホスト転送要求に応ずる処理とフラッシュ転送要求に応ずる処理が時分割で繰り返されていくいとき、前記信号HEND_IRQ及びFEND_IRQが共にアクティブになる状態を検出して(S28)、リードアクセス要求待ち状態に入る(S20)。即ち、ホスト装置3から指示されたリードアクセス要求に応答して実行すべきリードデータ数に応ずるデータがSDRAM5に格納されたときFEND_IRQがアクティブにされ、前記実行すべきリードデータ数に応ずるデータがSDRAM5から読み出されたとき信号HEND_IRQがアクティブにされる。
図8にはライトアクセス要求があったときのホスト装置3、SDRAM5及びフラッシュメモリ2のデータ転送動作を相関的に示す。(A)はホスト装置3の動作状態、(B)はSDRAM5の動作状態、(C)はフラッシュメモリ2の動作状態を示す。H_ADRはホスト装置3からコントローラ4に接続するアドレスバス、H_DATはホスト装置3とコントローラ4を接続するデータバス、H_WEはホスト装置3が出力するライトイネーブル信号、H_OEはホスト装置3が出力するアウトプットイネーブル信号である。D_CLKはSDRAM5に供給される同期クロック信号、D_WEはコントローラ4からSDRAM5に供給されるライトイネーブル信号、D_DATはコントローラ4とSDRAM5を接続するデータバスである。F_OEはコントローラ4がフラッシュメモリ2に出力するアウトプットイネーブル信号、F_WEはコントローラ4からフラッシュメモリ2に供給されるライトイネーブル信号、F_CSはコントローラ4からフラッシュメモリ2に出力されるシリアルクロック信号、F_DATはコントローラ4とフラッシュメモリ2を接続するデータバスである。
ホスト装置3はコントローラ4に向けて、アドレスレジスタ15Aにアドレス値、コマンドレジスタ15Cにライト転送コマンドを出力し、コントローラ4のステータスレジスタ15Sを読み込む。転送可能を示すステータスを読み込んだ後、データバッファ20のデータレジスタにデータを転送していく。データ転送はブロック単位であり、各ブロック例えば8バイトである。コントローラ4はフラッシュメモリ2に書き込みのセクタアドレス値、ライト転送コマンドを与えておく。コントローラ4はデータブロック1のデータを入力すると、そのデータをSDRAM5に書き込む。このときの書き込みサイクルはTdwで示される。これによって書き込まれたデータブロック1のデータは今度はSDRAM5からコントローラ4に読み出される。このときの読み出しサイクルはTdrで示される。コントローラ4に読み出されたデータブロック1のデータはフラッシュメモリ2に転送される。SDRAM5がデータブロック1のデータに対して書き込みサイクルTdwと読み出しサイクルを行っている最中に、ホスト装置3は、次のデータブロック2のデータをコントローラ4のバッファ20に向けて出力している。フラッシュメモリ2にデータブロック1のデータを転送しているときSDRAM5にはデータブロック2のデータに対するライトサイクルとリードサイクルが時分割で行われる。データブロック4までのデータに対して上記と同様の処理が行なわれる。
この例に従えば、コントローラ4が例えばデータバッファ20の転送調停部13側ポートからデータブロック3のデータを読み出してSDRAM5に格納し(Ti〜Tj)、これに続けてSDRAM5に格納したデータをデータバッファ22にその転送調停部13側ポートから格納しているとき(Tj〜Tk)、データバッファ20のホスト装置3側ポートから次のデータブロック4のデータがデータバッファ20に入力されると共に、データバッファ22のフラッシュメモリ2側ポートからその前のデータブロック2のデータがフラッシュメモリ2に転送される。要するに、ホスト装置3からのライトアクセス要求に応答するときコントローラ4は、SDRAM5への書込みデータの蓄積とSDRAM5に蓄積した書込みデータの出力とを時分割で行ない、前記SDRAM5への書き込みデータ蓄積処理に並行してフラッシュメモリ2への書込みデータの転送を行なうことができ、また、SDRAM5からの前記書き込みデータ出力処理に並行してホスト装置3からの次の書き込みデータの入力を行なうことができる。
図8の例では、フラッシュメモリ2に対するライトコマンド列は、アドレス値(セクタドレス値)、ライト転送コマンド、書き込みデータ(データブロック1〜データブロック4)、及びライトスタートコマンドとされ、フラッシュメモリ2はライトスタートコマンドが入力されること条件に、その直前までに入力された情報を一かたまりのコマンド列と解釈し、その結果にしたがってフラッシュメモリ2の内部で書き込み動作を開始する。図8においてアドレス値入力からライトスタートコマンド入力までのコマンド列供給サイクルはTfwとして図示される。
図9にはリードアクセス要求があったときのホスト装置、SDRAM及びフラッシュメモリのデータ転送動作を相関的に示す。(A)はホスト装置3の動作状態、(B)はSDRAM5の動作状態、(C)はフラッシュメモリ2の動作状態を示す。
ホスト装置3はコントローラ4に向けて、アドレスレジスタ15Aにアドレス値、コマンドレジスタ15Cにリード転送コマンドを出力する。コントローラ4はそのアドレス値とフラッシュリード転送コマンドをフラッシュメモリ2に与える。これによって、フラッシュメモリ2はクロック信号F_CSに同期してデータブロック1〜データブロック4のデータを順次読み出す。図9においてその読み出しサイクルはTfrとして図示される。最初に読み出されたデータブロック1のデータはデータバッファ22を介してSDRAM5に書き込まれる。この書き込みサイクルはTdwとして図示される。更に書き込まれたデータブロック1のデータはSDRAM5から読み出されてデータバッファ20に供給される。この読み出しサイクルはTdrとして図示される。データバッファ20にデータブロック1のデータが揃ったところで、ステータスレジスタ15Sが転送可能とされる。ホスト装置3はそのステータスを認識することによりデータブロック1のデータを取りこむ。データブロック2〜データブロック4についても上記同様の処理が行なわれる。
この例に従えば、コントローラ4が例えばデータバッファ22の転送調停部13側ポートからデータブロック3のデータを読み出してSDRAM5に格納し(Tp〜Tq)、これに続けてSDRAM5に格納したデータをデータバッファ20に格納しているとき(Tq〜Tr)、データバッファ22のフラッシュメモリ2側ポートから次のデータブロック4のデータがデータバッファ22に入力されると共に、データバッファ20のホスト装置3側ポートからその前のデータブロック2のデータがホスト装置3に取り込まれる。要するに、ホスト装置3からのリードアクセス要求に応答するときコントローラ4は、SDRAM5に対する読み出しデータの蓄積とSDRAM5に蓄積した読み出しデータの出力とを時分割で行ない、前記SDRAM5に対する読み出しデータ蓄積処理に並行してホスト装置3がバッファメモリ20から読み出しデータを取り込むことができ、また、SDRAM5から前記読み出しデータを出力する処理に並行してフラッシュメモリ2からの次の読み出しデータをバッファメモリ22に入力する処理を行なうことができる。
図10には前記SDRAMの書き込みサイクルTdwの一例が示される。CLKは前記D_CLKに対応するクロック信号、CKEはクロックイネーブル信号、CS_Nはチップ選択信号、RAS_Nはロウアドレスストローブ信号、CAS_Nは絡むアドレスストローブ信号、WE_Nは前記D_WEに対応するライトイネーブル信号、A14〜A0はアドレス信号、D15〜D0はデータである。
図11には前記SDRAMの読み出しサイクルTdrの一例が示される。
図12にはフラッシュメモリ2に対する書き込みサイクルTfwの一例が示される。1FHはライト転送コマンド、SA8(1)、SA(2)はアドレス値、40Hはライトスタートコマンドを意味する。書込みデータ(Din)はシリアルクロックSCに同期して入力される。
図13にはフラッシュメモリ2に対する読み出しサイクルTfrの一例が示される。00H/F0Hはリードト転送コマンド、SA8(1)、SA(2)はアドレス値を意味する。読み出しデータ(Dout)はシリアルクロックSCに同期して出力される。
図14にはライトアクセス要求に応答するデータ転送処理フローが例示される。同図の処理フローはフラッシュメモリ2に対する書き込みエラーがない場合を想定する。ホスト装置3からライトアクセス要求が発行されると、コントローラ4はホスト装置3にライト転送準備可能を通知し、フラッシュメモリ2にライト転送要求を出す。これを受けてホスト装置3はコントローラ4に書込みデータのライト転送を行い、コントローラ4はフラッシュメモリ2に書込みデータをライト転送する。フラッシュメモリ2はライト動作を行ない、ここでは、コントローラ4に正常終了を返す。データバッファ20に新たなブロックの書込みデータを蓄積する余裕がないような場合にコントローラ4は信号HWAITをアサートしてライト転送一時中断要求をホスト装置3に出す。コントローラ4は新たなブロックの書込みデータを蓄積可能になると、信号HWAITをネゲートしてライト転送再開をホスト装置3に与える。これによって、ホスト装置3はコントローラ4にライト転送を再開し、コントローラ4はフラッシュメモリ2に書き込みデータの転送を再開する。ライトアクセス要求に応答する全ての処理を終えるとコントローラ4はホスト装置3にライト転送終了通知を与える。
図15にはライトアクセス要求に応答する別のデータ転送処理フローが例示される。同図の処理フローはフラッシュメモリ2に対する書き込みエラーがある場合を想定する。ホスト装置3からライトアクセス要求が発行されると、コントローラ4はホスト装置3にライト転送準備可能を通知し、フラッシュメモリ2にライト転送要求を出す。これを受けてホスト装置3はコントローラ4に書込みデータのライト転送を行い、コントローラ4はフラッシュメモリ2に書込みデータをライト転送する。フラッシュメモリ2はライト動作を行ない、ここでは、書き込みエラーを生じ、コントローラ4に書き込み失敗終了を通知する。これを受けてコントローラ4は信号HWAITをアサートしてライト転送一時中断要求をホスト装置3に出す。その後、コントローラ4は、信号bHWAITをネゲートしてホスト装置3にライト転送再開を通知し、フラッシュメモリ2に代替ブロックライト転送要求を出す。そして、ホスト装置3が書込みデータをコントローラ4にライト転送し、コントローラ4はそのライトデータをフラッシュメモリ2にライト転送する。ここではフラッシュメモリ2は更に書き込み失敗し、書き込み失敗終了をコントローラ4に通知する。その後もコントローラ4は失敗に係る書き込み処理をフラッシュメモリ2に要求する。この間に、ホスト装置3は後続のライトデータをコントローラ4に予め転送しておくことができる。最後にライトアクセス要求に応答する全ての処理を終えるとコントローラ4はホスト装置3にライト転送終了通知を与える。
図16にはリードアクセス要求に応答するデータ転送処理フローが例示される。ホスト装置3からリードアクセス要求が発行されると、コントローラ4はホスト装置3にリード転送準備可能を通知し、フラッシュメモリ2にリード転送要求を出す。これを受けてフラッシュメモリ2は読み出しデータをコントローラ4にリード転送し、コントローラ4はそのリードデータをホスト装置3にリード転送する。ここでは、フラッシュメモリ2はコントローラ4に正常終了を返す。データバッファ20に新たなブロックの読み出しデータを蓄積する余裕がないような場合にコントローラ4は信号HWAITをアサートしてリード転送一時中断要求をホスト装置3に出す。コントローラ4は新たなブロックの読み出しデータを蓄積可能になると、信号HWAITをネゲートしてリード転送再開をホスト装置3に要求し、フラッシュメモリ2にリード転送要求を出す。これにより、上記同様に、フラッシュメモリ2は読み出しデータをコントローラ4にリード転送し、コントローラ4はそのリードデータをホスト装置3にリード転送する。リードアクセス要求に応答する全ての処理を終えるとコントローラ4はホスト装置3にリード転送終了通知を与える。
コントローラ4によるSDRAM5を用いた上記バッファリング機能により、ホスト装置3による複数の書込みデータの供給タイミングに多くの待ち時間を必要とせず、また、ホスト装置3による複数の読み出しデータの取得タイミングに多くの待ち時間を必要としない。したがって、ホスト装置3とコントローラ4間のデータ転送に関するホスト装置3の待ち時間短縮、処理負担低減、処理時間低減に寄与することができる。これは、フラッシュメモリカード1に対するアクセスを伴うデータ処理効率を向上させることができる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、不揮発性メモリはフラッシュメモリに限定されず、高誘電体メモリ等その他の記憶形式を採用する書換え可能な不揮発性メモリであってよい。また、1個のメモリセルに対する情報記憶ビット数も1ビットに限定されず、2ビット以上であってもよい。また、メモリシステムはPCカードのようなフラッシュメモリカードに限定されず、データプロセッサを実装したプロセッサボード上において構成することも可能である。また、コントローラにおいてホストインタフェース部分のデータバッファ、不揮発性メモリインタフェース部分のデータバッファはデュアルポートに限定されず、シングルポートのメモリ、若しくはレジスタ或はラッチ回路であってもよい。要するに、バッファメモリに対する前記時分割によるデータ転送に並行してホストインタフェース又はフラッシュインタフェース部分でデータ入出力が可能であればよい。