(57)【要約】【課題】フラッシュメモリにおける処理順序に偏りが生じるのを回避する。【解決手段】フラッシュメモリ１０は、データを入出力するブロックを例えば２つ備え、フラッシュメモリインターフェース２６は、フラッシュメモリ１０の各ブロックに対応するインターフェースを２つ備え、また、監視制御部を備える。監視制御部は、２つのインターフェースから送信される処理要求信号に対して、２つのインターフェースによるデータ転送が交互に行われるように、許可信号の送信タイミングを設定し、この許可信号を２つのインターフェースに送信する。【選択図】図１
2005332249.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する複数のフラッシュメモリとの間でデータ転送を行うメモリコントローラにおいて、
前記複数のフラッシュメモリとの間でデータ転送を行うためのデータを記憶するデータ記憶部と、
前記データ記憶部と前記各フラッシュメモリとの間に、前記各フラッシュメモリに対応して備えられ、データ転送を要求する処理要求信号を送信し、データ転送を許可する許可信号を受信して、対応するフラッシュメモリと前記データ記憶部との間でデータ転送を行う複数のデータ転送部と、
前記複数のデータ転送部から送信された複数の処理要求信号を受信して、前記各データ転送部によるデータ転送が順番に行われるように送信タイミングを設定した許可信号を、前記各データ転送部に送信する転送制御部と、を備えた、
ことを特徴とするメモリコントローラ。
【請求項２】
前記各フラッシュメモリは、ページ単位でデータの入出力が行われるものであって、
前記データ記憶部は、前記転送対象のデータを保持するものとして、前記各フラッシュメモリの各ページに対応する量のデータ保持が可能な複数のデータ保持部が備えられたものであり、
前記各データ保持部は、データが供給されたものから順に、データが排出されるように構成されたものである、
ことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記転送制御部は、前記データ記憶部と前記各フラッシュメモリとの間で行われるデータ転送の順序を判別し、前記順序が後と判別したデータ転送部からの処理要求信号を、前記順序が先と判別したデータ転送部からの処理要求信号よりも先に受信したときは、前記順序が先と判別したデータ転送部に許可信号を送信して前記対応するフラッシュメモリとの間でデータ転送が行われてから、前記順序が後と判別したデータ転送部に許可信号を送信するように、前記各データ転送部への許可信号の送信タイミングを設定する、
ことを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記転送制御部は、前記フラッシュメモリとの間でデータ転送を行ったデータ転送部が次にデータ転送を行うべき順序を最後尾とする、
ことを特徴とする請求項１乃至３のいずれか１項に記載のメモリコントローラ。
【請求項５】
データを記憶する複数のフラッシュメモリと、
請求項１乃至４のいずれか１項に記載のメモリコントローラと、を備えた、
ことを特徴とするフラッシュメモリシステム。
【請求項６】
データを記憶する複数のフラッシュメモリとの間でデータ転送を行うために、前記各フラッシュメモリに対応して備えられた複数のデータ転送部から、データ転送を要求する処理要求信号を受信するステップと、
前記各フラッシュメモリとのデータ転送が順番に行われるように、前記データ転送を許可するための許可信号を送信する送信タイミングを設定するステップと、
前記送信タイミングに従って、各データ転送部に前記許可信号を送信するステップと、を備えた、
ことを特徴とするフラッシュメモリのデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリのデータ転送方法に関する。
【背景技術】
【０００２】
半導体メモリは、メモリカードやシリコンディスクといったメモリシステムに用いられる。また、近年、この半導体メモリには、フラッシュメモリが広く採用されている。フラッシュメモリは、不揮発性メモリの一種であり、電力が供給されていないときでも、データを保持することが要求される。
【０００３】
特に、ＮＡＮＤ型フラッシュメモリは、上記メモリシステムに多く用いられる。ＮＡＮＤ型フラッシュメモリでは、複数のメモリセルを含んでおり、論理値”１”を示すデータが格納されているとき、各メモリセルは消去状態である。また、論理値”０”を示すデータが格納されているとき、各メモリセルは書き込み状態である。
【０００４】
ＮＡＮＤ型フラッシュメモリに含まれている複数のメモリセルは、それぞれ、他のメモリセルとは独立して、消去状態から書き込み状態へと変化させることができる。
【０００５】
これとは対照的に、各メモリセルは、他のメモリセルと独立して書き込み状態から消去状態へと変化させることができない。
このときには、ブロックと称される予め定められた数のメモリセルが、全て同時に消去状態になる。この一括消去動作は、一般に、「ブロック消去」と称されている。
【０００６】
ＮＡＮＤ型フラッシュメモリに対する書き込み処理若しくは読み出し処理は、ページと称される予め定められた数のメモリ単位で行われる。消去処理の単位であるブロックは複数のページで構成される。
【０００７】
また、フラッシュメモリに書き込まれるデータは、一旦、フラッシュメモリ内のレジスタに保持された後、レジスタからメモリセルアレイを構成する各メモリセルに複写される。この複写を行っている間、フラッシュメモリは、ビジー状態となり、他の処理を受け付けない。このため、このビジー状態が解除されるまで、フラッシュメモリにアクセスすることができない。
【０００８】
レジスタからメモリセルへの複写又はメモリセルからレジスタへの複写を実行するには、メモリセルに高電圧を印加して電子を注入しなければならない。このため、複写の実行によるビジー状態の期間は長くなり、書き込み処理の処理効率が低下する。
【０００９】
このような問題を解決するため、複数チップのフラッシュメモリを備え、ビジー状態が解除されていることが検出されたフラッシュメモリから順に処理を行うようにしたものがある（例えば、特許文献１参照）。
【特許文献１】特開平１０−６３４４２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかし、従来のメモリでは、ビジー状態が解除されたフラッシュメモリに対して順次、書き込み処理や読み出し処理が開始されるので、処理時間は短縮されるものの、フラッシュメモリで処理が実行されるときに発生するビジー期間にばらつきが生じる。このばらつきにより、各フラッシュメモリにおける処理の進行状況に偏りが生じる。この状態を放置して書き込み処理を行った場合、進行の早いフラッシュメモリに対して優先的に書き込み処理が行われ、各フラッシュメモリに書き込まれるデータの順序に乱れが生じる。
【００１１】
本発明は、このような従来の問題点に鑑みてなされたもので、フラッシュメモリにおける処理順序に偏りが生じるのを回避することが可能なメモリコントローラ、フラッシュメモリシステム及びフラッシュメモリのデータ転送方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
この目的を達成するため、本発明の第１の観点に係るメモリコントローラは、
データを記憶する複数のフラッシュメモリとの間でデータ転送を行うメモリコントローラにおいて、
前記複数のフラッシュメモリとの間でデータ転送を行うためのデータを記憶するデータ記憶部と、
前記データ記憶部と前記各フラッシュメモリとの間に、前記各フラッシュメモリに対応して備えられ、データ転送を要求する処理要求信号を送信し、データ転送を許可する許可信号を受信して、対応するフラッシュメモリと前記データ記憶部との間でデータ転送を行う複数のデータ転送部と、
前記複数のデータ転送部から送信された複数の処理要求信号を受信して、前記各データ転送部によるデータ転送が順番に行われるように送信タイミングを設定した許可信号を、前記各データ転送部に送信する転送制御部と、を備えたことを特徴とする。
【００１３】
前記各フラッシュメモリは、ページ単位でデータの入出力が行われるものであって、
前記データ記憶部は、前記転送対象のデータを保持するものとして、前記各フラッシュメモリの各ページに対応する量のデータ保持が可能な複数のデータ保持部が備えられたものであり、
前記各データ保持部は、データが供給されたものから順に、データが排出されるように構成されたものであってもよい。
【００１４】
前記転送制御部は、前記データ記憶部と前記各フラッシュメモリとの間で行われるデータ転送の順序を判別し、前記順序が後と判別したデータ転送部からの処理要求信号を、前記順序が先と判別したデータ転送部からの処理要求信号よりも先に受信したときは、前記順序が先と判別したデータ転送部に許可信号を送信して前記対応するフラッシュメモリとの間でデータ転送が行われてから、前記順序が後と判別したデータ転送部に許可信号を送信するように、前記各データ転送部への許可信号の送信タイミングを設定するようにしてもよい。
【００１５】
前記転送制御部は、前記フラッシュメモリとの間でデータ転送を行ったデータ転送部が次にデータ転送を行うべき順序を最後尾としてもよい。
【００１６】
本発明の第２の観点に係るフラッシュメモリシステムは、
データを記憶する複数のフラッシュメモリと、
請求項１乃至４のいずれか１項に記載のメモリコントローラと、を備えたことを特徴とする。
【００１７】
本発明の第３の観点に係るフラッシュメモリのデータ転送方法は、
データを記憶する複数のフラッシュメモリとの間でデータ転送を行うために、前記各フラッシュメモリに対応して備えられた複数のデータ転送部から、データ転送を要求する処理要求信号を受信するステップと、
前記各フラッシュメモリとのデータ転送が順番に行われるように、前記データ転送を許可するための許可信号を送信する送信タイミングを設定するステップと、
前記送信タイミングに従って、各データ転送部に前記許可信号を送信するステップと、を備えたことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、フラッシュメモリにおける処理順序に偏りが生じるのを回避することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態に係るメモリ装置を図面を参照して説明する。
本実施形態に係るフラッシュメモリシステムの構成を図１に示す。
本実施形態に係るフラッシュメモリシステム１は、通常、ホストシステム２に着脱可能に装着されて使用され、ホストシステム２に対して一種の外部記憶装置として用いられるものである。
【００２０】
ホストシステム２は、コンピュータ、デジタルスチルカメラのように、文字、音声、あるいは画像情報等の種々の情報を処理するものである。ホストシステム２は、フラッシュメモリシステム１に論理アドレスを与えてフラッシュメモリ１０にアクセスする。
【００２１】
フラッシュメモリシステム１は、フラッシュメモリ１０と、コントローラ２０と、を備える。フラッシュメモリ１０は、ハードディスクの代わりになるストレージデバイスへの用途として開発されたものであり、ＮＡＮＤ型フラッシュメモリからなる複数のチップを備える。
【００２２】
このＮＡＮＤ型フラッシュメモリは、不揮発性メモリであり、一般的には、レジスタとメモリセルアレイとによって構成され、レジスタとメモリセルとの間でデータの複写を行って、データの書き込み又は読み出しを行う。
【００２３】
メモリセルアレイは、複数のメモリセル群と、ワード線と、を備える。各メモリセル群は、複数のメモリセルが直列に接続されたものである。ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、データの複写、即ち、レジスタから選択されたメモリセルへの複写又は選択されたメモリセルからレジスタへのデータの複写が行われる。
【００２４】
メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタによって構成される。ここで、上側のゲート、下側のゲートは、それぞれ、コントロールゲート、フローティングゲートと呼ばれており、フローティングゲートに電荷（電子）を注入若しくはフローティングゲートから電荷（電子）を排出することによって、データの書き込み若しくはデータの消去が行われる。
【００２５】
このフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。尚、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧を印加して電子が注入される。また、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧を印加して電子が排出される。
【００２６】
ここで、フローティングゲートに電子が注入されている状態が書き込み状態であり、論理値「０」に対応する。また、フローティングゲートから電子が排出されている状態が消去状態であり、論理値「１」に対応する。
【００２７】
一般的なＮＡＮＤ型フラッシュメモリのメモリセルアレイは、例えば、図２（ａ）に示すように、１ブロックが３２ページ（Ｐ０〜Ｐ３１）で構成されている。各ページは、５１２バイトのユーザ領域と１６バイトの冗長領域とで構成される。
【００２８】
但し、ＮＡＮＤ型フラッシュメモリの構成は仕様によって異なる。記憶容量が大きい場合、ＮＡＮＤ型フラッシュメモリは、例えば、図２（ｂ）に示すように、１ブロックが６４ページ（Ｐ０〜Ｐ６３）、各ページが２０４８バイトのユーザ領域と６４バイトの冗長領域とで構成される。
【００２９】
ユーザ領域は、主に、ホストシステム２から供給されるデータを記憶するための領域であり、冗長領域は、エラーコレクションコード、対応論理ブロックアドレス、ブロックステータス（フラグ）等の付加データを記録するための領域である。
【００３０】
エラーコレクションコードは、ユーザ領域に記憶されているデータに含まれる誤りを検出し、訂正するためのデータである。
【００３１】
対応論理ブロックアドレスは、データが格納されているブロックに対応するアドレスを示すデータである。
【００３２】
ブロックステータスは、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域には、不良ブロックであることを示すフラグが書き込まれる。
【００３３】
このように構成されたＮＡＮＤ型フラッシュメモリでは、ランダムアクセスを行うことができず、データの書き込みと読み出しとは、レジスタを介してページ単位で行われ、消去はブロック単位で行われる。また、ＮＡＮＤ型フラッシュメモリでは、データの上書をすることができないので、データは、データが消去されている領域に書き込まれる。
【００３４】
ＮＡＮＤ型フラッシュメモリは、このような特徴を有するため、データの書き換えを行う場合、通常、データが消去されているブロックに新たなデータが書き込まれ、書き換え前の古いデータが書き込まれているブロックのデータがブロック単位で消去される。このようなデータの書き換えを行った場合、書き換え後のデータは、書き換え前とは異なるブロックに書き込まれる。
【００３５】
このため、ホストシステム２がフラッシュメモリシステム１に与える論理アドレスと、フラッシュメモリ１０内でのブロックアドレスである物理ブロックアドレスとの対応関係は、データを書き換える毎に動的に変化する。
【００３６】
従って、論理ブロックアドレスと物理ブロックアドレスとの対応関係を管理する必要があり、通常、この対応関係は、アドレス変換テーブルによって管理される。このアドレス変換テーブルは、各ページの冗長領域に記憶されている対応論理ブロックアドレスに基づいて作成される。
【００３７】
尚、ブロックにデータが格納されていない場合、フラッシュメモリ１０の冗長領域には、このブロックに対応する対応論理ブロックアドレスは格納されない。このため、この対応論理ブロックアドレスが格納されているか否かで、そのブロックが消去済みブロックであるか否かを判断することができる。
【００３８】
ブロックステータスは、ブロックの良否を示すフラグである。正常にデータの書き込み等を行うことができないブロックは、不良ブロックと判別され、冗長領域には、不良ブロックであることを示すフラグが書き込まれる。
【００３９】
図１に戻り、コントローラ２０は、ホストインターフェース２１と、マイクロプロセッサ２２と、ワークエリア２３と、バッファ２４と、ＥＣＣブロック２５と、フラッシュメモリインターフェース２６と、を備える。
【００４０】
ホストインターフェース２１は、ホストシステム２との間でデータ、アドレス情報、ステータス情報及び外部コマンド情報等の授受を行うための機能ブロックであり、動作設定レジスタ、タスクファイルレジスタ、エラーレジスタ等を備える（いずれも図示せず）。
【００４１】
このうち、タスクファイルレジスタは、ホストシステム２より供給されるホストアドレス及び外部コマンドを一時的に格納するためのレジスタである。エラーレジスタは、エラーが発生した場合にデータがセットされるレジスタである。
【００４２】
ホストシステム２に装着されたフラッシュメモリシステム１は、外部バス３１を介してホストシステム２に接続される。ホストインターフェース２１は、ホストシステム２からデータ等が供給されると、フラッシュメモリシステム１の入口として、供給されたデータ等をコントローラ２０の内部に取り込む。
【００４３】
また、フラッシュメモリシステム１がホストシステム２にデータ等を供給する場合、ホストインターフェース２１は、データ等をホストシステム２に供給するフラッシュメモリシステム１の出口として機能する。
【００４４】
マイクロプロセッサ２２は、コントローラ２０を構成する各機能ブロック全体の動作を制御するための機能ブロックである。
【００４５】
ワークエリア２３は、フラッシュメモリ１０の制御に必要なデータを一時的に格納する作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。ワークエリア２３は、必要なデータとして、論理ブロックアドレスと物理ブロックアドレスとの対応関係を管理する前述のアドレス変換テーブルも格納する。
【００４６】
ＥＣＣブロック２５は、フラッシュメモリ１０に書き込むデータに付加されるエラーコレクションデータを生成するとともに、読み出したデータに付加されたエラーコレクションコードに基づいて、読み出したデータの誤り検出を行い、検出した誤りを訂正すための機能ブロックである。
【００４７】
バッファ２４は、フラッシュメモリ１０から読み出されたデータをホストシステム２の受け取り準備ができるまで保持し、また、フラッシュメモリ１０に書き込むデータを、フラッシュメモリ１０への書き込み準備ができるまで一時的に保持するための機能ブロックである。
【００４８】
バッファ２４は、転送対象のデータを保持するものとして、複数のデータ保持部を備える。各データ保持部は、フラッシュメモリ１０の各チップの１ページ当たりのデータを保持するだけの領域が割り当てられる。
【００４９】
例えば、フラッシュメモリ１０の各チップの１ページが５１２バイトのデータによって構成されたものである場合、マイクロプロセッサ２２は、各データ保持部に、この５１２バイトのデータを保持することが可能な領域を割り当てる。
【００５０】
また、１ページが２０４８バイトのデータによって構成されたものである場合、マイクロプロセッサ２２は、各データ保持部に、２０４８バイトのデータを保持することが可能な領域を割り当てる。データ量が１ページ分を越える場合、マイクロプロセッサ２２は、バッファ２４に、各ページに対応する複数のデータ保持部を設定する。
【００５１】
各データ保持部は、ページ単位でデータが供給され、データが供給されたデータ保持部から順に、データを排出するように構成されている。マイクロプロセッサ２２は、このようなデータ保持部に関する制御を行う。
【００５２】
フラッシュメモリインターフェース２６は、内部バス３２を介して、フラッシュメモリ１０との間でデータ、アドレス情報、ステータス情報、内部コマンド情報及びデバイスＩＤ情報等の授受を行うために備えられた機能ブロックである。フラッシュメモリインターフェース２６は、内部コマンドを実行する際に必要な情報を設定するための複数のレジスタを備える（図示せず）。
【００５３】
ここで、内部コマンドとは、コントローラ２０がフラッシュメモリ１０に処理の実行を指示するためのコマンドであり、フラッシュメモリ１０は、コントローラ２０からの内部コマンドに従って動作する。これに対して、外部コマンドとは、ホストシステム２がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。
【００５４】
フラッシュメモリインターフェース２６は、図３に示すように、インターフェース２６−０，２６−１と、監視制御部２７と、を備える。インターフェース２６−０，２６−１は、フラッシュメモリ１０との間で独立してデータ等の転送を行う複数系統のインターフェースとして備えられたものである。
【００５５】
インターフェース２６−０は、フラッシュメモリ１０のチップ１０−０に対応して備えられ、ＮＡＮＤ型フラッシュメモリに対応するチップ１０−０との間でデータ転送を行うＣＨ（チャンネル）０のインターフェースである。
【００５６】
インターフェース２６−０は、チップ１０−０との間でデータ転送を行う場合、図４に示すように、監視制御部２７に、データ転送を要求する処理要求信号ＲＥＱ０を送信する。そして、インターフェース２６−０は、処理要求信号ＲＥＱ０に応答して監視制御部２７から送信された許可信号ＡＣＫ０’を受信して、チップ１０−０に対して書き込み処理又は読み出し処理を行うためのデータを転送する。
【００５７】
インターフェース２６−１は、フラッシュメモリ１０のチップ１０−１に対応して備えられ、ＮＡＮＤ型フラッシュメモリに対応するチップ１０−１との間でデータ転送を行うＣＨ１のインターフェースである。
【００５８】
インターフェース２６−１は、チップ１０−１との間でデータ転送を行う場合、図４に示すように、監視制御部２７に、データ転送を要求する処理要求信号ＲＥＱ１を送信する。そして、インターフェース２６−１は、処理要求信号ＲＥＱ１に応答して監視制御部２７から送信された許可信号ＡＣＫ１’を受信して、チップ１０−１に対して書き込み処理又は読み出し処理を行うためのデータを転送する。
【００５９】
監視制御部２７は、インターフェース２６−０，２６−１から送信された２つの処理要求信号ＲＥＱ０，ＲＥＱ１を受信して、インターフェース２６−０，２６−１によるデータ転送が順番に行われるように送信タイミングを設定した許可信号ＡＣＫ０’，ＡＣＫ１’を、それぞれ、インターフェース２６−０，２６−１に送信するものである。
【００６０】
監視制御部２７は、インターフェース２６−０，２６−１から、それぞれ、処理要求信号ＲＥＱ０，ＲＥＱ１を受信すると、インターフェース２６−０，２６−１のうち、いずれが先に、それぞれ、チップ１０−０，１０−１との間でデータ転送を行うべきか、その順序を判別する。
【００６１】
監視制御部２７は、例えば、インターフェース２６−０によるデータ転送の方が先であると判別した場合に、インターフェース２６−１から処理要求信号ＲＥＱ１を受信したときは、インターフェース２６−０から処理要求信号ＲＥＱ０を受信するまで待機する。監視制御部２７は、処理要求信号ＲＥＱ０を受信すると、処理要求信号ＲＥＱ０に対応した処理要求信号ＲＥＱ０’をバッファ２４に送信する。
【００６２】
バッファ２４は、処理要求信号ＲＥＱ０’に応答して許可信号ＡＣＫ０を監視制御部２７に送信する。監視制御部２７は、バッファ２４から許可信号ＡＣＫ０を受信してインターフェース２６−０に許可信号ＡＣＫ０’を送信する。監視制御部２７は、インターフェース２６−０に許可信号ＡＣＫ０’を送信すると、インターフェース２６−０が次にデータ転送を行う順序をインターフェース２６−１よりも後として記憶する。
【００６３】
そして、監視制御部２７は、次にデータ転送を行う順序がインターフェース２６−１になった後、つまり、インターフェース２６−０に許可信号ＡＣＫ０’を送信した後、処理要求信号ＲＥＱ１に対応した処理要求信号ＲＥＱ１’をバッファ２４に送信する。
バッファ２４は、処理要求信号ＲＥＱ１’に応答して許可信号ＡＣＫ１を監視制御部２７に送信する。監視制御部２７は、バッファ２４から許可信号ＡＣＫ１を受信してインターフェース２６−１に許可信号ＡＣＫ１’を送信する。監視制御部２７は、インターフェース２６−１に許可信号ＡＣＫ１’を送信すると、インターフェース２６−１が次にデータ転送を行う順序をインターフェース２６−０よりも後として記憶する。
【００６４】
また、監視制御部２７は、例えば、インターフェース２６−１によるデータ転送の方が先であると判別した場合に、インターフェース２６−０から処理要求信号ＲＥＱ０を受信したときは、インターフェース２６−１から処理要求信号ＲＥＱ１を受信するまで、待機する。監視制御部２７は、処理要求信号ＲＥＱ１を受信すると、処理要求信号ＲＥＱ１に対応した処理要求信号ＲＥＱ１’をバッファ２４に送信する。
【００６５】
バッファ２４は、処理要求信号ＲＥＱ１’に応答して許可信号ＡＣＫ１を監視制御部２７に送信する。監視制御部２７は、バッファ２４から許可信号ＡＣＫ１を受信してインターフェース２６−１に許可信号ＡＣＫ１’を送信する。監視制御部２７は、インターフェース２６−１に許可信号ＡＣＫ１’を送信すると、インターフェース２６−１が次にデータ転送を行う順序をインターフェース２６−０よりも後として記憶する。
【００６６】
そして、監視制御部２７は、次にデータ転送を行う順序がインターフェース２６−０になった後、つまり、インターフェース２６−１に許可信号ＡＣＫ１’を送信した後、処理要求信号ＲＥＱ０に対応した処理要求信号ＲＥＱ０’をバッファ２４に送信する。
バッファ２４は、処理要求信号ＲＥＱ０’に応答して許可信号ＡＣＫ０を監視制御部２７に送信する。監視制御部２７は、バッファ２４から許可信号ＡＣＫ０を受信してインターフェース２６−０に許可信号ＡＣＫ０’を送信する。監視制御部２７は、インターフェース２６−０に許可信号ＡＣＫ０’を送信すると、インターフェース２６−０が次にデータ転送を行う順序をインターフェース２６−１よりも後として記憶する。
【００６７】
このようにして、監視制御部２７は、インターフェース２６−０，２６−１間でデータ転送が交互に行われるように、許可信号ＡＣＫ０’，ＡＣＫ１’の送信タイミングを設定する。
【００６８】
次に本実施形態に係るフラッシュメモリシステム１の動作を説明する。
フラッシュメモリシステム１がホストシステム２に装着されると、フラッシュメモリシステム１は、外部バス３１を介してホストシステム２に接続される。
【００６９】
ホストシステム２は、データをフラッシュメモリ１０に書き込む場合、外部バス３１を介してフラッシュメモリシステム１にアドレスを供給し、書き込むデータをフラッシュメモリシステム１に供給する。
フラッシュメモリシステム１は、供給されたデータを、ホストインターフェース２１を介してコントローラ２０の内部に取り込む。
【００７０】
マイクロプロセッサ２２は、例えば、図５に示すように、バッファ２４に３つのデータ保持部２４Ａ，２４Ｂ，２４Ｃを設定する。フラッシュメモリ１０の１ページ当たりのバイト数が５１２バイトとすると、マイクロプロセッサ２２は、３つのデータ保持部２４Ａ，２４Ｂ，２４Ｃに、それぞれ、５１２バイトの領域を割り当てる。
【００７１】
マイクロプロセッサ２２は、ホストシステム２から供給されたデータを、割り当てた５１２バイトの領域に対応するように区分する。区分したデータが、図５に示すように、Page1〜Page5までのデータになったものとすると、まず、マイクロプロセッサ２２は、図６に示すように、Page1，Page2，Page3のデータを、それぞれ、バッファ２４のデータ保持部２４Ａ，２４Ｂ，２４Ｃに保持する。データ保持部２４Ａ，２４Ｂ，２４Ｃは、フラッシュメモリ１０に書き込むデータを、フラッシュメモリ１０への書き込み準備ができるまで一時的に保持する。
【００７２】
そして、フラッシュメモリインターフェース２６とバッファ２４とは、処理要求信号ＲＥＱ０’，ＲＥＱ１’、許可信号ＡＣＫ０，ＡＣＫ１を送受信する。この場合、データの送受信が行われるタイミングには、図７（ａ）〜（ｃ）に示すように、３つのパターンが可能である。尚、パターン１〜３の関係は、インターフェース２６−０，２６−１を入れ替えると、逆の関係になる。
【００７３】
まず、パターン１は、図７（ａ）に示すように、先にデータ転送を行うべきインターフェース２６−０が、インターフェース２６−１よりも先に処理要求信号ＲＥＱ０を監視制御部２７に送信する場合である。
【００７４】
パターン１の場合、監視制御部２７は、図７（ａ）に示すように、インターフェース２６−０，２６−１から、それぞれ、処理要求信号ＲＥＱ０，ＲＥＱ１を、この順番で受信する。監視制御部２７は、処理要求信号ＲＥＱ０に対応する処理要求信号ＲＥＱ０’をバッファ２４に出力する。バッファ２４は許可信号ＡＣＫ０を監視制御部２７に出力する。監視制御部２７は、許可信号ＡＣＫ０を受信して、許可信号ＡＣＫ０に対応する許可信号ＡＣＫ０’をインターフェース２６−０に出力する。
【００７５】
監視制御部２７は、処理要求信号ＲＥＱ１に対応する処理要求信号ＲＥＱ１’をバッファ２４に出力する。バッファ２４が処理要求信号ＲＥＱ１’に応答して許可信号ＡＣＫ１を監視制御部２７に出力すると、監視制御部２７は、許可信号ＡＣＫ１に対応する許可信号ＡＣＫ１’をインターフェース２６−１に送信する。
【００７６】
パターン２は、図７（ｂ）に示すように、後でデータ転送を行うべきインターフェース２６−１が、インターフェース２６−０よりも先に処理要求信号ＲＥＱ１を監視制御部２７に送信する場合である。
【００７７】
パターン２の場合、監視制御部２７は、図７（ｂ）に示すように、インターフェース２６−１からの処理要求信号ＲＥＱ１を先に受信しても、インターフェース２６−０からの処理要求信号ＲＥＱ０を受信するまで待機する。監視制御部２７は、インターフェース２６−０からの処理要求信号ＲＥＱ０を受信すると、処理要求信号ＲＥＱ０’をバッファ２４に送信する。
【００７８】
バッファ２４が処理要求信号ＲＥＱ０’に応答して、監視制御部２７に許可信号ＡＣＫ０を送信すると、監視制御部２７は、この許可信号ＡＣＫ０を受信して、許可信号ＡＣＫ０に対応する許可信号ＡＣＫ０’をインターフェース２６−０に出力する。
【００７９】
監視制御部２７は、次に、処理要求信号ＲＥＱ１’をバッファ２４に送信する。バッファ２４は、処理要求信号ＲＥＱ１’に応答して、監視制御部２７に許可信号ＡＣＫ１を出力すると、監視制御部２７は、許可信号ＡＣＫ１に対応する許可信号ＡＣＫ１’をインターフェース２６−１に送信する。
【００８０】
このパターン２におけるフラッシュメモリ１０へのデータの書き込みタイミングを図８に示す。
インターフェース２６−０，２６−１に接続されたフラッシュメモリ１０は、図８（ａ）、（ｃ）に示すように、時刻ｔ１０、ｔ１１（ｔ１０＜ｔ１１）において、ビジー信号として、それぞれ、信号Ｓ１２，信号Ｓ１０をＬ（低）レベルからＨレベル（高レベル）に立ち上げるものとする。尚、ビジー信号のＬレベルは、処理中であることを示し、Ｈレベルは、待機中であることを示す。
【００８１】
信号Ｓ１２（ＢＵＳＹ＿ＣＨ１）がＨレベルに立ち上がると、インターフェース２６−１は、内部バス３２を介してフラッシュメモリ１０（チップ１０−１）に、コマンド信号Ｃ、アドレス信号Ａを、順次、出力する。
【００８２】
続いて、インターフェース２６−１は、図８（ｄ）の信号Ｓ１３で示すように、処理要求信号ＲＥＱ１をＬレベルからＨレベルに立ち上げる。しかし、監視制御部２７は、信号Ｓ１３（ＲＥＱ１）がＨレベルに立ち上がっても、このまま、処理要求信号ＲＥＱ０が立ち上がるまで待機する。
【００８３】
一方、信号Ｓ１０が立ち上がると、インターフェース２６−０は、コマンド信号Ｃ、アドレス信号Ａを、順次、フラッシュメモリ１０（チップ１０−０）に出力する。コマンド信号Ｃは、フラッシュメモリ１０（チップ１０−０）内のレジスタに書き込むデータを転送するコマンドである。続いて、インターフェース２６−０は、図８（ｂ）の信号Ｓ１１で示すように、処理要求信号ＲＥＱ０をＬレベルからＨレベルに立ち上げる。
【００８４】
監視制御部２７は、信号Ｓ１１（ＲＥＱ０）がＨレベルに立ち上がると、図８（ｅ）の信号Ｓ１４で示すように、処理要求信号ＲＥＱ０’をＬレベルからＨレベルに立ち上げる。
【００８５】
処理要求信号ＲＥＱ０’がＨレベルに立ち上がると、バッファ２４は、図８（ｆ）の信号Ｓ１５で示すように、許可信号ＡＣＫ０をＬレベルからＨレベルに立ち上げる。
【００８６】
信号Ｓ１５（ＡＣＫ０）がＨレベルに立ち上がると、監視制御部２７は、図８（ｇ）の信号Ｓ１６で示すように、許可信号ＡＣＫ０’をＬレベルからＨレベルに立ち上げる。
【００８７】
信号Ｓ１６（ＡＣＫ０’）がＨレベルに立ち上がると、インターフェース２６−０は、バッファ２４が保持しているデータＤをフラッシュメモリ１０に転送する。
【００８８】
また、監視制御部２７は、信号Ｓ１６（ＡＣＫ０’）をＨレベルに立ち上げると、図８（ｈ）の信号Ｓ１７で示すように、処理要求信号ＲＥＱ１’をＬレベルからＨレベルに立ち上げる。
【００８９】
信号Ｓ１７（ＲＥＱ１’）がＨレベルに立ち上がると、バッファ２４は、応答して、図８（ｉ）の信号Ｓ１８で示すように、許可信号ＡＣＫ１をＬレベルからＨレベルに立ち上げる。
【００９０】
信号Ｓ１８（ＡＣＫ１）がＨレベルに立ち上がると、監視制御部２７は、図８（ｊ）の信号Ｓ１９で示すように、許可信号ＡＣＫ１’をＬレベルからＨレベルに立ち上げる。
【００９１】
信号Ｓ１６（ＡＣＫ１’）がＨレベルに立ち上がると、インターフェース２６−１は、バッファ２４が保持しているデータＤをフラッシュメモリ１０に転送する。
【００９２】
フラッシュメモリ１０のチップ１０−０へのデータＤの転送が終了すると、インターフェース２６−０は、内部バス３２を介してフラッシュメモリ１０（チップ１０−０）に、コマンド信号Ｃ’を送信する。
【００９３】
また、フラッシュメモリ１０のチップ１０−１へのデータＤの転送が終了すると、インターフェース２６−１は、内部バス３２を介してフラッシュメモリ１０（チップ１０−１）に、コマンド信号Ｃ’を送信する。コマンド信号Ｃ’は、フラッシュメモリ１０内のレジスタに保持されたデータをフラッシュメモリ１０内のメモリセルアレイに複写するコマンドである。
【００９４】
このようなタイミングで、パターン２におけるデータの書き込み処理が行われる。
【００９５】
パターン３は、図７（ｃ）に示すように、データ転送を行ったインターフェース２６−０が、インターフェース２６−１よりも先に、再度、処理要求信号ＲＥＱ０を監視制御部２７に送信する場合である。
【００９６】
パターン３の場合、監視制御部２７は、図７（ｃ）に示すように、処理要求信号ＲＥＱ０を受信すると、処理要求信号ＲＥＱ０’をバッファ２４に送信する。バッファ２４は、処理要求信号ＲＥＱ０’に応答して監視制御部２７に許可信号ＡＣＫ０を送信する。
【００９７】
監視制御部２７は、許可信号ＡＣＫ０を受信すると、許可信号ＡＣＫ０’をインターフェース２６−０に送信する。この場合、監視制御部２７は、次にデータ転送を行うべきものがインターフェース２６−１であることを判別する。監視制御部２７は、再度、インターフェース２６−０から、処理要求信号ＲＥＱ０を受信しても、処理要求信号ＲＥＱ１を受信するまで待機する。
【００９８】
監視制御部２７は、インターフェース２６−１からの処理要求信号ＲＥＱ１を受信すると、バッファ２４に処理要求信号ＲＥＱ１’を送信する。
【００９９】
バッファ２４は、処理要求信号ＲＥＱ１’に応答して、監視制御部２７に許可信号ＡＣＫ１を送信すると、監視制御部２７は、許可信号ＡＣＫ１を受信して、許可信号ＡＣＫ１に対応する許可信号ＡＣＫ１’をインターフェース２６−１に出力する。
【０１００】
次に、監視制御部２７は、バッファ２４に処理要求信号ＲＥＱ０’を送信する。バッファ２４は、処理要求信号ＲＥＱ０’に応答して監視制御部２７に許可信号ＡＣＫ０を送信すると、監視制御部２７は、この許可信号ＡＣＫ０を受信して、許可信号ＡＣＫ０に対応する許可信号ＡＣＫ０’をインターフェース２６−０に送信する。
【０１０１】
このようにして、監視制御部２７は、許可信号ＡＣＫ０’，ＡＣＫ１’を交互にインターフェース２６−０，２６−１に送信するようにタイミングを制御する。
【０１０２】
例えば、図５に示すように、先にデータ転送を行うべきインターフェース２６−０が、インターフェース２６−１よりも先に処理要求信号ＲＥＱ０を監視制御部２７に送信した場合、このパターンは、パターン１に該当する。
【０１０３】
この場合、監視制御部２７は、図７（ａ）に示すパターン１に従って、インターフェース２６−０に許可信号ＡＣＫ０’を送信し、インターフェース２６−０は、許可信号ＡＣＫ０’を受信して、チップ１０−０へのPage1のデータの転送を開始する。監視制御部２７は、許可信号ＡＣＫ０’を送信した後に、許可信号ＡＣＫ１’をインターフェース２６−１に送信する。インターフェース２６−１は、許可信号ＡＣＫ１’を受信して、チップ１０−１へのPage2のデータの転送を開始する。
【０１０４】
次に、図９に示すように、後にデータ転送を行うべきインターフェース２６−１が、インターフェース２６−０よりも先に、処理要求信号ＲＥＱ１を監視制御部２７に送信した場合、このパターンは、パターン２に該当する。
【０１０５】
この場合、監視制御部２７は、図７（ｂ）に示すパターン２に従って、インターフェース２６−０に許可信号ＡＣＫ０’を送信してから、インターフェース２６−１に、許可信号ＡＣＫ１’を送信する。インターフェース２６−０は、チップ１０−０にPage1のデータの転送を開始し、この転送が開始された後に、インターフェース２６−１は、チップ１０−１にPage2のデータの転送を開始する。
【０１０６】
次に、図１０に示すように、転送したPage1のデータがチップ１０−０内のレジスタからメモリセルアレイに複写され、Page1のデータを転送したインターフェース２６−０が、インターフェース２６−１よりも先に、再度、処理要求信号ＲＥＱ０を監視制御部２７に送信した場合、このパターンは、パターン３に該当する。
【０１０７】
この場合、監視制御部２７は、図７（ｃ）に示すパターン３に従って、インターフェース２６−１に許可信号ＡＣＫ１’を送信してから、インターフェース２６−０に、許可信号ＡＣＫ０’を送信する。インターフェース２６−１は、チップ１０−１にPage2のデータの転送を開始し、この転送が開始された後に、インターフェース２６−０は、チップ１０−０にPage3のデータの転送を開始する。
【０１０８】
このようにして、監視制御部２７が許可信号ＡＣＫ０’，ＡＣＫ１’を交互にインターフェース２６−０，２６−１に送信すると、データ保持部２４Ａ〜２４Ｃに取り込まれたデータは、結果として、以下のように取り込まれた順に、フラッシュメモリ１０のチップ１０−０，１０−１に交互に割り当てられる。
【０１０９】
ステップ１：データ保持部２４Ａのデータ→チップ１０−０
ステップ２：データ保持部２４Ｂのデータ→チップ１０−１
ステップ３：データ保持部２４Ｃのデータ→チップ１０−０
ステップ４：データ保持部２４Ａのデータ→チップ１０−１
ステップ５：データ保持部２４Ｂのデータ→チップ１０−０
・・・
【０１１０】
次に、フラッシュメモリ１０からのデータの読み出し処理について説明する。
フラッシュメモリ１０からのデータの読み出し処理についても、監視制御部２７は、データの書き込み処理と同じように、図７（ａ）〜（ｃ）に示すパターン１〜３に従って、処理要求信号と許可信号との送信タイミングを調整する。
【０１１１】
パターン２におけるフラッシュメモリ１０からのデータの読み出しタイミングを図１１に示す。
インターフェース２６−０，２６−１は、それぞれ、コマンド信号Ｃ、アドレス信号Ａを、順次、フラッシュメモリ１０に出力する。コマンド信号Ｃは、フラッシュメモリ１０から、データを読み出すコマンドである。
【０１１２】
フラッシュメモリ１０は、図１１（ａ）、（ｃ）に示すように、時刻ｔ２０において、ビジー信号として、それぞれ、信号Ｓ２２（ＢＵＳＹ＿ＣＨ１），信号Ｓ２０（ＢＵＳＹ＿ＣＨ０）をＨレベルからＬレベルに立ち下げる。尚、データの読み出し時においても、ビジー信号のＬレベルは、処理中であることを示し、Ｈレベルは、待機中であることを示す。
【０１１３】
図１１（ｃ）に示すように、フラッシュメモリ１０は、信号Ｓ２２（ＢＵＳＹ＿ＣＨ１）をＨレベルに立ち上げ、インターフェース２６−１は、図１１（ｄ）の信号Ｓ２３で示すように、処理要求信号ＲＥＱ１をＬレベルからＨレベルに立ち上げる。しかし、監視制御部２７は、信号Ｓ２３（ＲＥＱ１）がＨレベルに立ち上がっても、このまま、処理要求信号ＲＥＱ０が立ち上がるまで待機する。
【０１１４】
時間が経過して、図１１（ａ）に示すように、フラッシュメモリ１０が信号Ｓ２０（ＢＵＳＹ＿ＣＨ０）をＨレベルに立ち上げると、図１１（ｂ）の信号Ｓ２１で示すように、インターフェース２６−０は、処理要求信号ＲＥＱ０をＨレベルに立ち上げる。
【０１１５】
信号Ｓ２１（ＲＥＱ０）が立ち上がると、監視制御部２７は、図１１（ｅ）の信号Ｓ２４で示すように、処理要求信号ＲＥＱ０’をＬレベルからＨレベルに立ち上げる。
【０１１６】
信号Ｓ２４（ＲＥＱ０’）がＨレベルに立ち上がると、図１１（ｆ）の信号Ｓ２５で示すように、バッファ２４は、許可信号ＡＣＫ０をＬレベルからＨレベルに立ち上げる。
【０１１７】
信号Ｓ２５（ＡＣＫ０）がＨレベルに立ち上がると、図１１（ｇ）の信号Ｓ２６で示すように、監視制御部２７は、許可信号ＡＣＫ０’をＬレベルからＨレベルに立ち上げる。
【０１１８】
信号Ｓ２６（ＡＣＫ０’）がＨレベルに立ち上がると、インターフェース２６−０は、時刻ｔ２１において、フラッシュメモリ１０のチップ１０−０のデータＤをバッファ２４に転送する。
【０１１９】
一方、監視制御部２７は、信号Ｓ２６（ＡＣＫ０’）をＨレベルに立ち上げると、図１１（ｈ）の信号Ｓ２７で示すように、処理要求信号ＲＥＱ１’をＬレベルからＨレベルに立ち上げる。
【０１２０】
信号Ｓ２７（ＲＥＱ１’）がＨレベルに立ち上がると、バッファ２４は、図１１（ｉ）の信号Ｓ２８で示すように、許可信号ＡＣＫ１をＬレベルからＨレベルに立ち上げる。
【０１２１】
信号Ｓ２８（ＡＣＫ１）がＨレベルに立ち上がると、監視制御部２７は、図１１（ｊ）の信号Ｓ２９で示すように、許可信号ＡＣＫ１’をＬレベルからＨレベルに立ち上げる。
【０１２２】
信号Ｓ２９（ＡＣＫ１’）がＨレベルに立ち上がると、インターフェース２６−１は、時刻ｔ２２（ｔ２１＜ｔ２２）において、フラッシュメモリ１０のチップ１０−１のデータＤをバッファ２４に転送する。このようなタイミングで、パターン２におけるデータの読み出し処理が行われる。
【０１２３】
このようにして、監視制御部２７は、許可信号ＡＣＫ０’，ＡＣＫ１’を交互にインターフェース２６−０，２６−１に送信する。そして、監視制御部２７は、最初にフラッシュメモリ１０のチップ１０−０のデータをバッファ２４のデータ保持部２４Ａに割り当てるとすると、結果として、チップ１０−０，１０ー１のデータは、以下のようにデータ保持部２４Ａ〜２４Ｃに割り当てられる。
【０１２４】
ステップ１：チップ１０−０のデータ→データ保持部２４Ａ
ステップ２：チップ１０−１のデータ→データ保持部２４Ｂ
ステップ３：チップ１０−０のデータ→データ保持部２４Ｃ
ステップ４：チップ１０−１のデータ→データ保持部２４Ａ
ステップ５：チップ１０−０のデータ→データ保持部２４Ｂ
・・・
【０１２５】
以上説明したように、本実施形態によれば、監視制御部２７が、インターフェース２６−０，２６−１からの処理要求信号ＲＥＱ０，ＲＥＱ１を受け付けると、処理要求信号ＲＥＱ０’，ＲＥＱ１’が交互にバッファ２４に送信されるようにタイミングを調整するようにした。従って、フラッシュメモリにおける処理順序に偏りが生じるのを回避することができる。
【０１２６】
尚、本発明を実施するにあたっては、種々の形態が考えられ、上記実施の形態に限られるものではない。
例えば、上記実施の形態では、フラッシュメモリ１０に対するインターフェース２６−０，２６−１を、独立した２系統のバスで構成した場合について説明した。しかし、系統数は、特に限定されるものではなく、３系統以上のバスで構成されてもよい。
【０１２７】
３系統以上のインターフェースを備えた場合、監視制御部２７は、バッファ２４と各チップとの間で行われるデータ転送の順序を判別し、各インターフェースに、順番に許可信号を送信する。そして、監視制御部２７は、フラッシュメモリ１０との間でデータ転送を行ったインターフェースが次にデータ転送を行うべき順序を最後尾とする。
【０１２８】
また、監視制御部２７は、フラグを用いて、許可信号ＡＣＫ０’，ＡＣＫ１’の送信タイミングを制御するようにしてもよい。例えば、フラッシュメモリインターフェース２６内を上記実施形態のように２系統とした場合、インターフェース２６−０，２６−１のうちのフラグ値に対応するものに、先に許可信号を送信する。
【０１２９】
即ち、フラグ値が０の場合に、インターフェース２６−０，２６−１から、それぞれ、処理要求信号ＲＥＱ０，ＲＥＱ１が順次、送信されれば、監視制御部２７は、それぞれ、インターフェース２６−０，２６−１に、許可信号ＡＣＫ０’，ＡＣＫ１’を、順に送信する。
【０１３０】
また、フラグ値０の場合に、インターフェース２６−０，２６−１から、それぞれ、処理要求信号ＲＥＱ１，ＲＥＱ０が順次、送信されても、監視制御部２７は、それぞれ、インターフェース２６−０，２６−１に、許可信号ＡＣＫ０’，ＡＣＫ１’の順に送信する。このようにしても、データ転送を交互に行わせるように制御することができる。
【図面の簡単な説明】
【０１３１】
【図１】本発明の実施形態に係るフラッシュメモリシステムの構成を示すブロック図である。
【図２】図１のフラッシュメモリのメモリセルアレイの構成を示す説明図である。
【図３】図１のフラッシュメモリインターフェースとフラッシュメモリとの主要構成を示すブロック図である。
【図４】図１のバッファとフラッシュメモリインターフェース（監視制御部、インターフェース）との間で送受信される信号を示す説明図である。
【図５】ホストシステムが書き込み処理時にデータをフラッシュメモリに供給する場合の説明図である。
【図６】書き込み処理を行う場合に、バッファが、ホストシステムから供給されたデータをデータ保持部に保持した場合の説明図である。
【図７】フラッシュメモリインターフェースの動作パターンを示す説明図であり、（ａ）〜（ｃ）は、それぞれ、パターン１〜３を示す。
【図８】図７（ｂ）に示すパターン２の場合における書き込み処理の内容を示すタイミングチャートである。
【図９】図７（ｂ）のパターン２の具体例を示す説明図である。
【図１０】図７（ｃ）のパターン３の具体例を示す説明図である。
【図１１】図７（ｂ）のパターン２の場合における読み出し処理の内容を示すタイミングチャートである。
【符号の説明】
【０１３２】
１    フラッシュメモリシステム
２    ホストシステム
１０  フラッシュメモリ
１０−０，１０−１  チップ
２０  コントローラ
２４  バッファ
２６  フラッシュメモリインターフェース
２６−０，２６−１  インターフェース
２７  監視制御部
【図１】
2005332249.tif 000003
【図２】
2005332249.tif 000004
【図３】
2005332249.tif 000005
【図４】
2005332249.tif 000006
【図５】
2005332249.tif 000007
【図６】
2005332249.tif 000008
【図７】
2005332249.tif 000009
【図８】
2005332249.tif 000010
【図９】
2005332249.tif 000011
【図１０】
2005332249.tif 000012
【図１１】
2005332249.tif 000013