(57)【要約】【課題】メモリに格納されたデータを素早く利用することができる技術を提供することを目的とする。【解決手段】不揮発性メモリから前記揮発性メモリへのデータコピーを開始し、データコピーが完了したか否かに拘わらずに要求元装置からのリード要求を受信し、要求データが既に揮発性メモリにコピーされている場合には、データコピーの完了の前に揮発性メモリから要求データを読み出して要求元装置へ供給し、要求データが未だ揮発性メモリにコピーされていない場合には、要求データを不揮発性メモリからリードし、データコピーの完了の前に要求データを要求元装置に供給する。【選択図】図１
2008225608.tif 000002
【特許請求の範囲】
【請求項１】
読み出し速度が比較的低速な不揮発性メモリと、読み出し速度が比較的高速な揮発性メモリとを含むメモリセットを制御するメモリコントローラであって、
前記不揮発性メモリ内のデータを前記揮発性メモリにコピーするとともに、前記不揮発性メモリに格納されていたデータに対する外部の要求元装置からのリード要求に応答して前記揮発性メモリにコピーされたデータを読み出して前記要求元装置に供給するコピーデータ供給処理を実行するコピーデータ供給処理モジュールを備え、
前記コピーデータ供給処理は、
前記不揮発性メモリから前記揮発性メモリへのデータコピーを開始する処理と、
前記データコピーが完了したか否かに拘わらずに前記要求元装置からの前記リード要求を受信する処理と、
前記リード要求で要求されている要求データが既に前記揮発性メモリにコピーされている第１の場合に、前記データコピーの完了の前に前記不揮発性メモリの代わりに前記揮発性メモリから前記要求データを読み出して前記要求元装置へ供給する処理と、
前記要求データが未だ前記揮発性メモリにコピーされていない第２の場合に、前記要求データを前記不揮発性メモリからリードする応答リードを実行し、前記データコピーの完了の前に前記要求データを前記要求元装置に供給する処理と、
を含む、メモリコントローラ。
【請求項２】
請求項１に記載のメモリコントローラであって、
前記コピーデータ供給処理は、さらに、前記不揮発性メモリのアドレスの範囲を分割して得られる複数のブロックのそれぞれのデータのコピーを、所定の規則に従ったブロック順で実行する処理を含み、
前記応答リードは、前記リード要求の受信時に前記要求データが属するブロックである要求ブロックとは異なる他ブロックのデータのコピーが実行中である場合には、前記ブロック順に拘わらずに前記リード要求に応答して前記要求ブロックのデータの全体を前記不揮発性メモリからリードする処理である要求ブロック処理を含み、
前記コピーデータ供給処理は、さらに、前記要求ブロック処理によってリードされたデータを前記揮発性メモリに格納することによって前記要求ブロックのデータのコピーを完了する処理を含む、
メモリコントローラ。
【請求項３】
請求項２に記載のメモリコントローラであって、
前記所定の規則に従ったブロック順は、前記不揮発性メモリのアドレスの順番に辿られるブロック順であり、
前記コピーデータ供給処理は、さらに、前記要求ブロック処理の完了の後に前記要求ブロックの次のブロックから前記ブロック順にデータをコピーする処理を含む、
メモリコントローラ。
【請求項４】
請求項２または請求項３に記載のメモリコントローラであって、
前記要求ブロック処理は、
（１）前記他ブロックのデータのコピーを中断して前記要求ブロックのデータのコピーを開始する処理と、
（２）前記他ブロックのデータのコピーの完了に続けて前記要求ブロックのデータのコピーを開始する処理と、
の少なくとも一方を含む、メモリコントローラ。
【請求項５】
読み出し速度が比較的低速な不揮発性メモリと、読み出し速度が比較的高速な揮発性メモリとを含むメモリセットを制御する方法であって、
前記不揮発性メモリ内のデータを前記揮発性メモリにコピーするとともに、前記不揮発性メモリに格納されていたデータに対する外部の要求元装置からのリード要求に応答して前記揮発性メモリにコピーされたデータを読み出して前記要求元装置に供給するコピーデータ供給処理を実行する工程を備え、
前記コピーデータ供給処理は、
前記不揮発性メモリから前記揮発性メモリへのデータコピーを開始する処理と、
前記データコピーが完了したか否かに拘わらずに前記要求元装置からの前記リード要求を受信する処理と、
前記リード要求で要求されている要求データが既に前記揮発性メモリにコピーされている第１の場合に、前記データコピーの完了の前に前記不揮発性メモリの代わりに前記揮発性メモリから前記要求データを読み出して前記要求元装置へ供給する処理と、
前記要求データが未だ前記揮発性メモリにコピーされていない第２の場合に、前記要求データを前記不揮発性メモリからリードする応答リードを実行し、前記データコピーの完了の前に前記要求データを前記要求元装置に供給する処理と、
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリを制御するメモリコントローラ、メモリモジュール、メモリの制御方法に関するものである。
【背景技術】
【０００２】
データを格納するメモリを利用するために、種々の工夫が成されている。例えば、マイクロコンピュータの実行速度と比べてアクセス速度が遅いシリアルインターフェースのフラッシュメモリ（以下、シリアルフラッシュメモリとも呼ぶ）にプログラムを格納する技術が知られている。ここで、電源投入時に、ＣＰＵが動作する前にフラッシュメモリからＲＡＭにプログラムを転送し、ＣＰＵがＲＡＭ上のプログラムを実行するという技術も知られている。
【０００３】
【特許文献１】特開２００３−１４１０９６号公報
【特許文献２】特開２００６−１５５３０３号公報
【０００４】
ところが、ＣＰＵによるプログラム実行開始がプログラムの転送終了後であるので、プログラムの開始に時間がかかる場合があった。なお、このような問題は、メモリに格納されたプログラムを利用する場合に限らず、メモリに格納された他の種々のデータを利用する場合に共通する問題であった。また、このような問題は、シリアルフラッシュメモリに格納されたデータを利用する場合に限らず、他の種々のメモリに格納されたデータを利用する場合に共通する問題であった。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明は、上記の課題を解決するためになされたものであり、メモリに格納されたデータを素早く利用することができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述の課題の少なくとも一部を解決するため、本発明のメモリコントローラは、読み出し速度が比較的低速な不揮発性メモリと、読み出し速度が比較的高速な揮発性メモリとを含むメモリセットを制御するメモリコントローラであって、前記不揮発性メモリ内のデータを前記揮発性メモリにコピーするとともに、前記不揮発性メモリに格納されていたデータに対する外部の要求元装置からのリード要求に応答して前記揮発性メモリにコピーされたデータを読み出して前記要求元装置に供給するコピーデータ供給処理を実行するコピーデータ供給処理モジュールを備え、前記コピーデータ供給処理は、前記不揮発性メモリから前記揮発性メモリへのデータコピーを開始する処理と、前記データコピーが完了したか否かに拘わらずに前記要求元装置からの前記リード要求を受信する処理と、前記リード要求で要求されている要求データが既に前記揮発性メモリにコピーされている第１の場合に、前記データコピーの完了の前に前記不揮発性メモリの代わりに前記揮発性メモリから前記要求データを読み出して前記要求元装置へ供給する処理と、前記要求データが未だ前記揮発性メモリにコピーされていない第２の場合に、前記要求データを前記不揮発性メモリからリードする応答リードを実行し、前記データコピーの完了の前に前記要求データを前記要求元装置に供給する処理と、を含む。
【０００７】
このメモリコントローラによれば、不揮発性メモリから揮発性メモリへのデータコピーが完了したか否かに拘わらずに要求元装置からのリード要求が受信され、そして、データコピーの完了前に要求元装置へ要求データが供給されるので、メモリに格納されたデータを素早く利用することができる。
【０００８】
上記メモリコントローラにおいて、前記コピーデータ供給処理は、さらに、前記不揮発性メモリのアドレスの範囲を分割して得られる複数のブロックのそれぞれのデータのコピーを、所定の規則に従ったブロック順で実行する処理を含み、前記応答リードは、前記リード要求の受信時に前記要求データが属するブロックである要求ブロックとは異なる他ブロックのデータのコピーが実行中である場合には、前記ブロック順に拘わらずに前記リード要求に応答して前記要求ブロックのデータの全体を前記不揮発性メモリからリードする処理である要求ブロック処理を含み、前記コピーデータ供給処理は、さらに、前記要求ブロック処理によってリードされたデータを前記揮発性メモリに格納することによって前記要求ブロックのデータのコピーを完了する処理を含むこととしてもよい。
【０００９】
この構成によれば、要求ブロックのデータの全体が揮発性メモリにコピーされるので、連続な複数のアドレスがシーケンシャルにリードされる場合に、素早くデータを供給することができる。
【００１０】
上記メモリコントローラにおいて、前記所定の規則に従ったブロック順は、前記不揮発性メモリのアドレスの順番に辿られるブロック順であり、前記コピーデータ供給処理は、さらに、前記要求ブロック処理の完了の後に前記要求ブロックの次のブロックから前記ブロック順にデータをコピーする処理を含むこととしてもよい。
【００１１】
この構成によれば、ブロック順が不揮発性メモリのアドレスの順番に辿られるブロック順であり、そして、要求ブロックに続けて次のブロックからブロック順にデータがコピーされるので、複数のブロックに亘る連続な複数のアドレスがシーケンシャルにリードされる場合に、素早くデータを供給することができる。
【００１２】
上記各メモリコントローラにおいて、前記要求ブロック処理は、（１）前記他ブロックのデータのコピーを中断して前記要求ブロックのデータのコピーを開始する処理と、（２）前記他ブロックのデータのコピーの完了に続けて前記要求ブロックのデータのコピーを開始する処理と、の少なくとも一方を含むこととしてもよい。
【００１３】
この構成によれば、要求ブロックのデータのコピーの開始が過剰に遅れることが抑制されるので、要求データを素早く供給することができる。
【００１４】
なお、本発明は、種々の形態で実現することが可能であり、例えば、メモリの制御方法およびメモリを制御するメモリコントローラ、そのメモリコントローラとメモリとを備えるメモリモジュール、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
【発明を実施するための最良の形態】
【００１５】
次に、この発明の実施の形態を実施例に基づいて以下の順序で説明する。
Ａ．第１実施例：
Ｂ．第２実施例：
Ｃ．第３実施例：
Ｄ．変形例：
【００１６】
Ａ．第１実施例：
図１は、本発明の一実施例としてのデータ処理装置を示す概略図である。本実施例では、このデータ処理装置９１０は、図示しないプリンタに組み込まれ、印刷処理を実行する。印刷処理としては、例えば、入力された画像データから、図示しない印刷エンジン（種々の印刷機構）に供給すべき印刷データを生成する処理が挙げられる。
【００１７】
このデータ処理装置９１０は、バス５００と、バス５００に接続された中央処理装置７００（以下「ＣＰＵ７００」と呼ぶ）と、バス５００に接続されたメモリモジュール４００と、を有している。ＣＰＵ７００は、メモリモジュール４００からプログラムを読み出し、読み出したプログラムを実行することによって印刷処理を実行する。
【００１８】
メモリモジュール４００は、メモリコントローラ８００と、不揮発性のシリアルフラッシュメモリ６００と、揮発性のＳＲＡＭ（Static Random Access Memory）６１０と、を有している。これらのメモリ６００、６１０は、メモリコントローラ８００によって制御される。以下、シリアルフラッシュメモリ６００を、「シリアルメモリ６００」あるいは「フラッシュメモリ６００」とも呼ぶ。
【００１９】
バス５００にはメモリコントローラ８００が接続されている。ＣＰＵ７００は、バス５００を介して、メモリコントローラ８００にリード要求を送信する。メモリコントローラ８００は、リード要求に応答して、リード要求で指定されたアドレスに対応付けられたデータを、バス５００を介してＣＰＵ７００に供給する。以下、リード要求で指定されたアドレスを「要求アドレス」と呼び、要求アドレスに対応付けられたデータを「要求データ」と呼ぶ。
【００２０】
ＣＰＵ７００に供給されるべきデータ（この場合はプログラム）は、フラッシュメモリ６００に予め格納されている。フラッシュメモリ６００に格納されたデータは、ＳＲＡＭ６１０にコピーされる。そして、ＣＰＵ７００からのリード要求に応答してＳＲＡＭ６１０から要求データが読み出され、読み出された要求データがＣＰＵ７００に供給される。このようにフラッシュメモリ６００のデータをＳＲＡＭ６１０にコピーする理由は、フラッシュメモリ６００の読み出し速度が、ＳＲＡＭ６１０の読み出し速度と比べて遅いからである（読み出し速度は、単位時間当たりにリードされるデータ量を意味している）。後述するように、フラッシュメモリ６００からは１本の信号線によってデータが出力され、ＳＲＡＭ６１０からは１６本の信号線によってデータが出力される。その結果、同じ量のデータ出力に要する時間に関しては、フラッシュメモリ６００の時間の方が、ＳＲＡＭ６１０の時間と比べて、長い。そこで、リード要求に応答してＳＲＡＭ６１０から要求データをリードすれば、フラッシュメモリ６００から要求データをリードする場合と比べて、素早く要求データをＣＰＵ７００に供給することができる。フラッシュメモリ６００からＳＲＡＭ６１０へのデータコピーの詳細については後述する。
【００２１】
メモリコントローラ８００は、モジュールコントローラ８１０と、シリアルフラッシュ制御部８２０（以下「フラッシュ制御部８２０」とも呼ぶ）と、メモリアービタ８３０と、データコピー制御部８４０と、ライト制御部８５０と、リード制御部８６０と、コピー管理部８７０と、を有している。コピー管理部８７０は、メモリ８７２を有している。このメモリ８７２には、データコピーの進行状況を示す情報が格納される。メモリコントローラ８００の各構成要素は、各構成要素の機能を実現する電子回路によって構成されている。このような電子回路としては、例えば、ＡＳＩＣ（Application Specific Integrated Circuits）のような専用の電子回路を採用可能である。
【００２２】
フラッシュ制御部８２０は、フラッシュメモリ６００との通信を制御することによって、フラッシュメモリ６００からデータをリードする。この通信で転送される信号は、以下の信号を含んでいる。
（Ａ）チップセレクト信号／Ｓ（１本の信号線）。
（Ｂ）クロック信号Ｃ（１本の信号線）。
（Ｃ）入力データ信号Ｄ（１本の信号線）。
（Ｄ）出力データ信号Ｑ（１本の信号線）。
フラッシュ制御部８２０は、フラッシュメモリ６００に送信される信号／Ｓ、Ｃ、Ｄを制御し、出力データ信号Ｑをフラッシュメモリ６００から受信する。フラッシュメモリ６００は、クロック信号Ｃに同期して動作する。なお、信号を表す符号の先頭の符号「／」は、その信号が負論理の信号であることを意味している。これは、後述する他の信号についても同様である。
【００２３】
本実施例では、フラッシュメモリ６００からのデータリードは、以下のように実行される。
（１）フラッシュ制御部８２０が、チップセレクト信号／Ｓをアサートする。
（２）次に、フラッシュ制御部８２０が、入力データ信号Ｄを利用して、リードコマンドデータとリード対象アドレスとをこの順番にフラッシュメモリ６００に入力する（これらのデータは、１ビットずつクロック信号Ｃに同期して入力される）。
（３）フラッシュメモリ６００が、対象アドレスの入力に応答して、出力データ信号Ｑを利用して、対象アドレスに対応付けられたデータを出力する（データは、１ビットずつクロック信号Ｃに同期して出力される）。
なお、本実施例では、対象アドレスは２４ビットで表されている。そして、１つの対象アドレスに対応付けられたデータは１６ビットで表されている。また、リードコマンドデータは、フラッシュメモリ６００の設計に応じて予め決められたデータであり、例えば、８ビットの所定値で表されている。このリードコマンドデータの入力は、チップセレクト信号／Ｓがアサートされた後に、受け入れられる。なお、「信号をアサートする」とは、その信号をアクティブな状態に切り換えることを意味している。「信号をネゲートする」とは、その信号をインアクティブな状態に切り換えることを意味している。
【００２４】
メモリアービタ８３０は、ＳＲＡＭ６１０との通信を制御することによって、ＳＲＡＭ６１０へのデータライトと、ＳＲＡＭ６１０からのデータリードとを、実行する。この通信で転送される信号は、以下の信号を含んでいる。
（Ａ）チップイネーブル信号／ＣＥＮ（１本の信号線）。
（Ｂ）ライトイネーブル信号／ＷＥＮ（１本の信号線）。
（Ｃ）アドレス信号Ａｓ（２４本の信号線）。
（Ｄ）入力データ信号Ｄｓ（１６本の信号線）。
（Ｅ）出力データ信号Ｑｓ（１６本の信号線）。
（Ｆ）クロック信号ＣＬＫ（１本の信号線）。
メモリアービタ８３０は、ＳＲＡＭ６１０に送信される信号／ＣＥＮ、／ＷＥＮ、Ａｓ、Ｄｓ、ＣＬＫを制御し、出力データ信号ＱｓをＳＲＡＭ６１０から受信する。
【００２５】
本実施例では、ＳＲＡＭ６１０へのデータライトは、以下のように実行される。
（１）メモリアービタ８３０が、アドレス信号Ａｓをライト対象アドレスに設定する。
（２）次にメモリアービタ８３０が、チップイネーブル信号／ＣＥＮをアサートする
（３）ＳＲＡＭ６１０が、チップイネーブル信号／ＣＥＮのアサートに応答して、アドレス信号Ａｓを参照することによってライト対象アドレスを取得する。
（４）次にメモリアービタ８３０が、入力データ信号Ｄｓをライト対象データに設定する。
（５）次にＳＲＡＭ６１０は、チップイネーブル信号／ＣＥＮのアサートから所定数のクロック信号ＣＬＫのパルスが入力されたことに応答して、入力データ信号Ｄｓを参照することによってライト対象データを取得し、取得したデータをライト対象アドレスと対応付けて格納する。
（６）次にメモリアービタ８３０が、チップイネーブル信号／ＣＥＮをネゲートする。
なお、本実施例では、データライトの間は、ライトイネーブル信号／ＷＥＮはアクティブな状態に維持される。
【００２６】
また、本実施例では、ＳＲＡＭ６１０からのデータリードは、以下のように実行される。
（１）メモリアービタ８３０が、アドレス信号Ａｓをリード対象アドレスに設定する。
（２）次にメモリアービタ８３０が、チップイネーブル信号／ＣＥＮをアサートする。
（３）ＳＲＡＭ６１０が、チップイネーブル信号／ＣＥＮのアサートに応答して、アドレス信号Ａｓを参照することによってリード対象アドレスを取得する。そして、ＳＲＡＭ６１０は、出力データ信号Ｑｓをリード対象データに設定する（リード対象データは、リード対象アドレスに対応付けられたデータである）。
（４）次にメモリアービタ８３０が、出力データ信号Ｑｓを参照することによって、リード対象データを取得する。
なお、本実施例では、データリードの間は、ライトイネーブル信号／ＷＥＮはインアクティブな状態に維持される。
【００２７】
ライト制御部８５０は、メモリアービタ８３０に、ＳＲＡＭ６１０へのデータライトを実行させる。ライト対象アドレスとライト対象データとは、ライト制御部８５０からメモリアービタ８３０に供給される。
【００２８】
リード制御部８６０は、メモリアービタ８３０に、ＳＲＡＭ６１０からのデータリードを実行させる。リード制御部８６０は、リード対象アドレスをメモリアービタ８３０へ供給する。そして、リード制御部８６０は、メモリアービタ８３０から、ＳＲＡＭ６１０からリードされたデータを受信する。また、リード制御部８６０は、フラッシュ制御部８２０から、フラッシュメモリ６００からリードされたデータを受信する。リード制御部８６０は、データ信号ＤＡＴＡを利用して、受信したデータをバス５００（すなわちＣＰＵ７００）に供給する。
【００２９】
メモリアービタ８３０は、ライト制御部８５０によるデータライトと、リード制御部８６０によるデータリードとの間を調停する。
【００３０】
データコピー制御部８４０は、フラッシュ制御部８２０とライト制御部８５０とに、フラッシュメモリ６００からＳＲＡＭ６１０へのデータコピーを実行させる。コピー対象のアドレスは、データコピー制御部８４０からこれらの制御部８２０、８５０に供給される。このデータコピーの進行状況を示す情報は、メモリ８７２に格納される（詳細は後述）。
【００３１】
モジュールコントローラ８１０は、メモリコントローラ８００の各構成要素の動作を制御することによって、メモリコントローラ８００の全体の動作を制御する。また、モジュールコントローラ８１０は、各構成要素の制御に加えてバス５００との通信を制御することによって、コピーデータ供給処理を実行する。コピーデータ供給処理は、フラッシュメモリ６００からＳＲＡＭ６１０へデータをコピーするとともに、ＣＰＵ７００からのリード要求に応答して要求データをＳＲＡＭ６１０から読み出してＣＰＵ７００に供給する処理である。このように、モジュールコントローラ８１０は、特許請求の範囲における「コピーデータ供給処理モジュール」に相当する。
【００３２】
バス５００とメモリコントローラ８００との間で転送される信号は以下の信号を含んでいる。
（Ａ）リード要求信号／ＲＤ（１本の信号線）。
（Ｂ）アドレス信号ＡＤ（２４本の信号線）。
（Ｃ）ウェイト信号／ＷＡＩＴ（１本の信号線）。
（Ｄ）データ信号ＤＡＴＡ（１６本の信号線）。
メモリコントローラ８００に供給される信号／ＲＤ、ＡＤはＣＰＵ７００によって制御される。バス５００（ＣＰＵ７００）に送信されるウェイト信号／ＷＡＩＴはモジュールコントローラ８１０によって制御される。バス５００（ＣＰＵ７００）に送信されるデータ信号ＤＡＴＡは、リード制御部８６０によって制御される。
【００３３】
本実施例では、ＣＰＵ７００によるメモリモジュール４００からのデータリードは以下のように実行される。
（１）ＣＰＵ７００が、アドレス信号ＡＤを要求アドレスに設定する。
（２）次にＣＰＵ７００が、リード要求信号／ＲＤをアサートする（これらの信号ＡＤ、／ＲＤの設定の全体が「リード要求」に相当する）。
（３）モジュールコントローラ８１０が、リード要求に応答して、ウェイト信号／ＷＡＩＴをアサートする（このアサートによって、ＣＰＵ７００は、処理を中断する）。
（４）次にリード制御部８６０（モジュールコントローラ８１０）が、データ信号ＤＡＴＡを要求データに設定する。
（５）次にモジュールコントローラ８１０が、ウェイト信号／ＷＡＩＴをネゲートする。
（６）ＣＰＵ７００が、ウェイト信号／ＷＡＩＴのネゲートに応答して、処理を再開する（データ信号ＤＡＴＡを参照して要求データを取得する）。
【００３４】
なお、メモリコントローラ８００の各構成要素は、モジュールコントローラ８１０によって制御されている。従って、メモリコントローラ８００から出力される全ての信号（例えば、データ信号ＤＡＴＡや、入力データ信号Ｄや、アドレス信号Ａｓ）はモジュールコントローラ８１０によって制御されている、と言うこともできる。
【００３５】
また、上述したように、フラッシュメモリ６００に格納されたデータは、ＳＲＡＭ６１０にコピーされる。このコピーは、コピーデータ供給処理のコピーステージで実行される。このコピーステージは、コピーデータ供給処理の初期のステージである。このコピーの完了後にリード要求を受信した場合には、モジュールコントローラ８１０は、要求データをＳＲＡＭ６１０から読み出してＣＰＵ７００に供給する。コピー完了前にリード要求を受信した場合には、後述するコピーデータ供給処理のコピーステージの手順に従って、要求データがＣＰＵ７００に供給される。
【００３６】
図２は、第１実施例におけるコピーデータ供給処理のコピーステージの手順を示すフローチャートである。最初のステップＳ２００では、モジュールコントローラ８１０（図１）は、コピーデータ供給処理の開始指示を受信したことに応答して、コピーデータ供給処理を開始する。このような開始指示としては、任意の指示を採用可能である。例えば、データ処理装置９１０（メモリコントローラ８００）の電源が入れられたことを採用してもよい。また、メモリコントローラ８００に対するリセット信号（図示せず）がネゲートされたことを採用してもよい。
【００３７】
次のステップＳ２１０では、モジュールコントローラ８１０（図１）は、データコピー制御部８４０に、コピー開始指示を供給する。データコピー制御部８４０は、指示に従って、フラッシュ制御部８２０とライト制御部８５０とに、フラッシュメモリ６００からＳＲＡＭ６１０へのデータコピーを開始させる。データコピー制御部８４０は、コピー元アドレスをフラッシュ制御部８２０に供給し、フラッシュ制御部８２０は、フラッシュメモリ６００のそのアドレスからデータをリードする。フラッシュ制御部８２０によってリードされたデータはライト制御部８５０に供給される。データコピー制御部８４０は、コピー先アドレスをライト制御部８５０に供給し、ライト制御部８５０はＳＲＡＭ６１０のそのアドレスに受信したデータを格納する。データコピー制御部８４０は、コピー元アドレスとコピー先アドレスとを更新することによって、データのコピーを進行させる。なお、本実施例では、ＳＲＡＭ６１０でのアドレスは、フラッシュメモリ６００でのアドレスと同じアドレスに設定される。すなわち、コピー先アドレスは、コピー元アドレスと同じである。
【００３８】
また、コピー管理部８７０は、メモリ８７２に、コピー中のアドレス（フラッシュメモリ６００でのアドレス。以下「現行アドレス」とも呼ぶ）を格納する。また、本実施例では、データコピーは、先頭アドレスからシーケンシャルに実行される。その結果、現行アドレスよりも前のアドレスをコピー済みアドレスと識別し、現行アドレスよりも後のアドレスをコピーされていないアドレスと識別することができる。このような現行アドレスは、メモリコントローラ８００の種々の構成要素（例えば、データコピー制御部８４０）から取得され得る。なお、複数のアドレスのコピー順としては、アドレスの昇順に限らず、任意の順を採用可能である。いずれの場合も、コピー管理部８７０は、コピー済みのアドレスと、コピーされていないアドレスとを識別する情報（進行情報）をメモリ８７２に格納する。そして、コピー管理部８７０は、この進行情報を、コピーの進行に伴って更新する。
【００３９】
次のステップＳ２２０では、モジュールコントローラ８１０（図１）は、ＣＰＵ７００からリード要求を受信したか否かを判断する。リード要求を受信していない場合には、モジュールコントローラ８１０は、ステップＳ２４０に移行する。リード要求を受信した場合には、モジュールコントローラ８１０は、ステップＳ２３０で、要求データの供給処理を実行する（詳細は後述）。ステップＳ２３０が終了した後には、モジュールコントローラ８１０は、ステップＳ２４０に移行する。
【００４０】
ステップＳ２４０では、モジュールコントローラ８１０（図１）は、データコピーが完了したか否かを判断する。コピーが完了したか否かを示す情報は、データコピー制御部８４０からモジュールコントローラ８１０に供給される。データコピーが完了していない場合には、モジュールコントローラ８１０は、再びステップＳ２２０に移行する。
【００４１】
データコピーが完了した場合には、モジュールコントローラ８１０は、コピーステージを終了する。コピーステージの終了後、モジュールコントローラ８１０は、コピーデータ供給処理の通常ステージに移行する。この通常ステージでは、リード要求に応答して、モジュールコントローラ８１０は、要求データをＳＲＡＭ６１０から読み出してＣＰＵ７００に供給する。具体的には、モジュールコントローラ８１０は、要求アドレスとデータ供給指示とをリード制御部８６０に供給する。リード制御部８６０は、指示に従って、要求データをＳＲＡＭ６１０から読み出してバス５００（ＣＰＵ７００）に供給する。本実施例では、要求アドレスは、フラッシュメモリ６００でのアドレスと同じである。すなわち、ＳＲＡＭ６１０でのアドレスは、要求アドレスと同じである。
【００４２】
図３は、第１実施例における要求データ供給処理（図２：Ｓ２３０）の手順を示すフローチャートである。最初のステップＳ３００では、モジュールコントローラ８１０（図１）は、ウェイト信号／ＷＡＩＴをアサートする。このアサートに応答して、ＣＰＵ７００は処理を中断する。
【００４３】
次のステップＳ３１０では、モジュールコントローラ８１０（図１）は、要求データがコピー済みであるか否かを判断する。この判断は、メモリ８７２に格納された進行情報を参照することによって行われる。本実施例では、要求アドレスが、フラッシュメモリ６００でのアドレスと同じであるので、要求アドレスと現行アドレスとの比較によってこの判断が行われる。
【００４４】
要求データのコピーが済んでいる場合には、次のステップＳ３３０で、モジュールコントローラ８１０は、要求データをＳＲＡＭ６１０から読み出してバス５００（ＣＰＵ７００）に供給する。このステップは、上述した通常ステージでの要求データ供給処理と同様である。リード制御部８６０は、データ信号ＤＡＴＡを、ＳＲＡＭ６１０から読み出した要求データに設定する。
【００４５】
次のステップＳ３４０では、モジュールコントローラ８１０は、ウェイト信号／ＷＡＩＴをネゲートする。このネゲートに応答して、ＣＰＵ７００は、処理を再開する（データ信号ＤＡＴＡを参照して要求データを取得する）。また、このネゲートによって、要求データの供給処理は終了する。
【００４６】
ステップＳ３１０で、要求データがコピーされていないと判断された場合には、モジュールコントローラ８１０は、ステップＳ３２０に移行する。このステップＳ３２０では、モジュールコントローラ８１０は、要求データのコピーの完了を待つ。要求データのコピーが完了したか否かの判断は、ステップＳ３１０と同様に行われる。要求データのコピー完了に応答して、モジュールコントローラ８１０は、次のステップＳ３３０に移行する。
【００４７】
以上のように、第１実施例では、モジュールコントローラ８１０は、フラッシュメモリ６００からＳＲＡＭ６１０へのデータコピーが完了したか否かに拘わらずにＣＰＵ７００からのリード要求を受信する。そして、データコピーが完了する前にＣＰＵ７００へ要求データが供給されるので、メモリに格納されたデータを素早く利用することができる。また、メモリアービタ８３０は、ＳＲＡＭ６１０へのデータライトと、ＳＲＡＭ６１０からのデータリードとの間を調停する。この際、データリードのプライオリティがデータライトのプライオリティよりも上位に設定される。ＳＲＡＭ６１０にコピー済みのデータに対するリード要求がコピーの実行中にメモリコントローラ８００に入力された場合には、コピーのためのデータライトに優先して、ＳＲＡＭ６１０から要求データがリードされる。これらの結果、コピーの実行中にリード要求が入力された場合であっても、データコピー制御部８４０（モジュールコントローラ８１０）は、コピーの中断／再開を制御せずに済む。さらに、モジュールコントローラ８１０は、単に要求データがコピー済みか否か（ＳＲＡＭ６１０から要求データを読み出して良いか否か）を管理することによって、リード制御部８６０を制御すればよい。
【００４８】
なお、第１実施例では、図３のステップＳ３２０において、要求データのコピーが完了するまでフラッシュメモリ６００からデータがリードされる。このデータリードが、特許請求の範囲における「応答リード」に相当する。
【００４９】
また、第１実施例では、最後尾アドレスのデータを除くデータについて、データコピーの完了前の供給が可能である。このように少なくとも一部の要求アドレスのデータが、データコピー完了前に供給可能であれば、メモリに格納されたデータを素早く利用することができる。
【００５０】
Ｂ．第２実施例：
図４は、要求データ供給処理（図２：Ｓ２３０）の別の例を示すフローチャートである。図３に示す手順との差違は、ステップＳ３２０の代わりに、ステップＳ３５０〜Ｓ３５６が設けられている点である。これらのステップＳ３５０〜Ｓ３５６が完了した後は、処理がステップＳ３３０に移行する代わりに、要求データ供給処理が終了する。他のステップ（Ｓ３００、Ｓ３１０、Ｓ３３０、Ｓ３４０）は、図３の例と同様に実行される。なお、データ処理装置の構成と、コピーデータ供給処理のコピーステージの手順とは、図１、図２に示す第１実施例と同じである。
【００５１】
ステップＳ３５０では、モジュールコントローラ８１０（図１）は、コピー中断指示をデータコピー制御部８４０に供給する。データコピー制御部８４０は、指示に従ってフラッシュ制御部８２０とライト制御部８５０とを制御することによって、コピーを中断する。
【００５２】
次のステップＳ３５２では、モジュールコントローラ８１０（図１）は、要求データをフラッシュメモリ６００から読み出してバス５００（ＣＰＵ７００）へ供給する。具体的には、モジュールコントローラ８１０は、要求アドレスとリード供給指示とをフラッシュ制御部８２０に供給する。フラッシュ制御部８２０は、指示に従って、要求アドレスのデータをフラッシュメモリ６００からリードし、リードした要求データをリード制御部８６０に供給する。また、モジュールコントローラ８１０は、供給指示をリード制御部８６０に供給する。リード制御部８６０は、指示に従って、データ信号ＤＡＴＡを、フラッシュ制御部８２０から取得した要求データに設定する。
【００５３】
次のステップＳ３５４の処理は、ステップＳ３４０と同じである。ＣＰＵ７００（図１）は、ウェイト信号／ＷＡＩＴのネゲートに応答して、要求データを取得する。
【００５４】
次のステップＳ３５６では、モジュールコントローラ８１０（図１）は、コピー再開指示をデータコピー制御部８４０に供給する。データコピー制御部８４０は、指示に従ってフラッシュ制御部８２０とライト制御部８５０と制御することによって、コピーを再開する。このコピー再開によって、要求データの供給処理は終了する。なお、このステップ３５６は、ステップＳ３５４の前に実行されてもよい。一般には、要求データのリード完了に応答してコピーを再開することが可能である。
【００５５】
このように、第２実施例では、モジュールコントローラ８１０は、リード要求に応答してデータコピーを中断し、その中断に続けて要求データをフラッシュメモリ６００から読み出す。このように、データコピーよりも優先して要求データがリードされるので、要求データを素早くＣＰＵ７００に供給することができる。また、モジュールコントローラ８１０は、要求データのリード完了に応答してデータコピーを再開する。その結果、データコピーに過剰な時間がかかることを抑制できる。
【００５６】
Ｃ．第３実施例：
図５は、コピーデータ供給処理のコピーステージの別の例を示すフローチャートである。図２に示す手順との差違は、ブロック毎にデータコピーが進行する点である。ブロックとは、フラッシュメモリ６００のアドレスの範囲を分割して得られる複数の部分範囲のそれぞれを意味している。以下、このブロックのことを「セクタ」とも呼ぶ。なお、データ処理装置の構成は、図１に示す第１実施例と同じである。
【００５７】
図６は、コピー状態テーブル８７４とセクタポインタ８７６とを示す概略図である。これらのデータは、データコピーの進行状況をセクタ毎に管理するためのデータであり、コピー管理部８７０（図１）のメモリ８７２に格納されている。なお、メモリ８７２には、上述の各実施例と同様に現行アドレスも格納される。
【００５８】
図６（Ａ）に示すように、コピー状態テーブル８７４は、セクタ番号ＳＮと、アドレス範囲と、コピー済みフラグ（以下、単に「フラグＦ」とも呼ぶ）と、の対応関係を示している。アドレス範囲は、フラッシュメモリ６００のアドレスの範囲である。セクタ番号ＳＮとアドレス範囲との対応関係は、予め設定されている。本実施例では、２４ビットで表され得る範囲（００００００ｈ〜ＦＦＦＦＦＦｈ）の内の所定の一部の範囲（００００００ｈ〜０４ＦＦＦＦｈ）が、アドレスの有効範囲として利用される（「ｈ」は１６進法を意味している）。そして、図６（Ａ）の例では、この有効範囲が、同じサイズの５つのセクタに分割されている。なお、アドレスの有効範囲は、フラッシュメモリ６００の容量に応じて設定される。また、セクタのサイズおよび総数は、この例に限らず、任意に設定可能である。また、セクタのサイズは、セクタ毎に異なっていても良い。
【００５９】
セクタ番号ＳＮは、各セクタをアドレスの昇順に辿ったときにセクタ番号が昇順に辿られるように、「０」から昇順に割り振られている。ここで、各セクタのサイズが同じである場合には、セクタ番号ＳＮからアドレス範囲を算出することが可能である。従って、コピー状態テーブル８７４からアドレス範囲を省略してもよい。
【００６０】
フラグＦは、セクタのデータコピーが完了している場合には「１」に設定され、セクタのデータコピーが完了していない場合には「０」に設定される。
【００６１】
図６（Ｂ）に示すセクタポインタ８７６は、コピー対象セクタのセクタ番号ＳＮを示している。以下、コピー対象のセクタを「カレントセクタ」と呼ぶ。また、カレントセクタのセクタ番号を「カレントセクタ番号ＣＳＮ」と呼ぶ。カレントセクタ番号ＣＳＮは、セクタポインタ８７６によって示される番号である。
【００６２】
図７（Ａ）〜（Ｆ）は、第３実施例におけるデータコピーの様子を示す概略図である。図中には、セクタポインタ８７６と、コピー状態テーブル８７４と、フラッシュメモリ６００と、ＳＲＡＭ６１０とが示されている。これらの状態は、図７（Ａ）（Ｂ）（Ｃ）（Ｄ）（Ｅ）（Ｆ）の順に変化する。図中には、各メモリ６００、６１０の５つのセクタＳ０〜Ｓ４も示されている。ＳＲＡＭ６１０中のハッチングが付されたセクタは、コピー済みのセクタを示している。
【００６３】
図５の最初のステップＳ４００は、図２のステップＳ２００と同じである。次のステップＳ４１０では、モジュールコントローラ８１０（図１）は、データコピーの初期設定を行う。この初期設定では、データ８７４、８７６（図６（Ａ）（Ｂ））が初期化される。本実施例では、セクタ番号が「０」であるセクタからコピーが開始される。従って、カレントセクタ番号ＣＳＮが「０」に設定される。また、全てのセクタのフラグＦが「０」に設定される。コピー管理部８７０は、モジュールコントローラ８１０からの初期化指示に従って、これらのデータ８７４、８７６を初期化する。
【００６４】
次のステップＳ４２０では、モジュールコントローラ８１０（図１）は、全セクタのコピーが完了したか否かを判断する。この判断は、コピー状態テーブル８７４（図６（Ａ））を参照することによって行われる。後述するように、データコピーの進行に伴って、コピー済みセクタのフラグＦは「１」に設定される。
【００６５】
全てのセクタのデータコピーが完了している場合には、モジュールコントローラ８１０（図１）は、コピーステージを終了する。コピーステージの終了後、モジュールコントローラ８１０は、コピーデータ供給処理の通常ステージに移行する。この通常ステージでの処理は、上述の各実施例での処理と同じである。
【００６６】
コピー未完了のセクタが残っている場合には、次のステップＳ４３０で、モジュールコントローラ８１０（図１）は、カレントセクタのコピーが完了しているか否かを判断する。セクタポインタ８７６（図６（Ｂ））によって示されるセクタのフラグＦ（図６（Ａ））が「１」である場合に、カレントセクタのコピーが完了していると判断される。なお、後述するように、データコピーの進行に伴って、セクタポインタ８７６は更新される。
【００６７】
カレントセクタのコピーが完了している場合には、モジュールコントローラ８１０（図１）は、後述するステップＳ４６０に移行する。
【００６８】
カレントセクタのデータコピーが完了していない場合には、次のステップＳ４４０で、モジュールコントローラ８１０（図１）は、カレントセクタのデータコピー処理を実行する（詳細は後述）。本実施例では、図７（Ａ）に示すように、まず、セクタポインタ８７６が示す第０セクタＳ０がコピーされる。
【００６９】
図５のステップＳ４４０の完了（カレントセクタのコピーの完了）に応答して、次のステップＳ４５０では、モジュールコントローラ８１０は、フラグ設定指示をコピー管理部８７０に供給する。コピー管理部８７０は、指示に従って、カレントセクタのフラグＦを立てる（フラグＦを「１」に設定する）。図７（Ｂ）は、第０セクタＳ０のコピー完了に続く状態を示している。コピー状態テーブル８７４では、第０セクタＳ０のフラグＦが「１」に設定されている。ステップＳ４５０の処理が完了した後、モジュールコントローラ８１０は、ステップＳ４６０に移行する。
【００７０】
ステップＳ４６０では、モジュールコントローラ８１０は、インクリメント指示をコピー管理部８７０に供給する。コピー管理部８７０は、指示に従って、セクタポインタ８７６を「１」だけインクリメントする。図７（Ｂ）に示す例では、セクタポインタ８７６が「０」から「１」に更新されている。
【００７１】
なお、インクリメント前のカレントセクタが有効範囲における最終セクタである場合には（本実施例では、第４セクタＳ４）、コピー管理部８７０は、セクタポインタ８７６を先頭セクタの番号（本実施例では「０」）に設定する。ステップＳ４６０の処理が完了した後、モジュールコントローラ８１０は、再びステップＳ４２０に移行する。
【００７２】
以上の処理によって、複数のセクタは、セクタ番号の昇順（すなわち、アドレスの昇順）に、１つずつコピーされる。例えば、図７（Ｂ）の例では、第１セクタＳ１がコピーされている。このコピーは、図５のステップＳ４６０でセクタポインタ８７６が「１」に設定された後、モジュールコントローラ８１０が、再びステップＳ４４０に移行することによって、実行される。
【００７３】
なお、後述するように、本実施例では、一部のセクタのコピーが後回しにされる場合がある（図７（Ｃ）−（Ｆ））。この場合も、ステップＳ４６０（セクタポインタ８７６のインクリメント）と、ステップＳ４４０（カレントセクタのコピー）とが繰り返されることによって、全てのセクタがコピーされる。
【００７４】
図８は、カレントセクタのデータコピー処理（図５：Ｓ４４０）の手順を示すフローチャートである。最初のステップＳ５００では、モジュールコントローラ８１０（図１）は、カレントセクタのデータコピーを開始する。具体的には、モジュールコントローラ８１０は、カレントセクタ番号ＣＳＮとコピー開始指示とを、データコピー制御部８４０に供給する。データコピー制御部８４０は、上述の各実施例と同様に、指示に従って、フラッシュ制御部８２０とライト制御部８５０とに、カレントセクタのコピーを実行させる。データコピー制御部８４０は、コピーすべきアドレス範囲を、カレントセクタ番号ＣＳＮとメモリ８７２のコピー状態テーブル８７４とから特定する。
【００７５】
１つのセクタ内の複数のアドレスのコピー順としては、任意の順を採用可能である。ただし、本実施例では、アドレスの昇順が採用される。その結果、モジュールコントローラ８１０は、コピー中のセクタに含まれる複数のアドレスの内で、現行アドレスよりも前のアドレスをコピー済みアドレスと識別し、現行アドレスよりも後のアドレスをコピーされていないアドレスと識別することができる。
【００７６】
次のステップＳ５１０は、図２のステップＳ２２０と同じである。リード要求を受信していない場合には、モジュールコントローラ８１０は、ステップＳ５３０に移行する。リード要求を受信した場合には、モジュールコントローラ８１０は、ステップＳ５２０で、要求データの供給処理を実行する（詳細は後述）。ステップＳ５２０が終了した後には、モジュールコントローラ８１０は、ステップＳ５３０に移行する。
【００７７】
ステップＳ５３０では、モジュールコントローラ８１０は、カレントセクタのデータコピーが完了したか否かを判断する。コピーが完了したか否かを示す情報は、データコピー制御部８４０からモジュールコントローラ８１０に供給される。コピーが完了していない場合には、モジュールコントローラ８１０は、再びステップＳ５１０に移行する。コピーが完了した場合には、カレントセクタのデータコピー処理が終了する。
【００７８】
図９は、要求データ供給処理（図８：Ｓ５２０）の手順を示すフローチャートである。図３に示す手順との差違は、ステップＳ３２０の代わりにステップＳ３６２〜Ｓ３６８が設けられている点だけである。他のステップ（Ｓ３００、Ｓ３１０、Ｓ３３０、Ｓ３４０）は、図３の例と同様に実行される。なお、ステップＳ３１０では、判断のために、現行アドレスに加えて、コピー状態テーブル８７４とセクタポインタ８７６とが参照される（図６（Ａ）（Ｂ））。要求アドレスを含むセクタ（すなわち、要求データを含むセクタ。以下「要求セクタ」と呼ぶ）のフラグＦが「１」に設定されている場合には、要求データがコピー済みであると判断される。要求セクタがカレントセクタである場合には、現行アドレスと要求アドレスとの比較によって判断が実行される。他の場合には、要求データがコピーされていないと判断される。
【００７９】
ステップＳ３６２では、モジュールコントローラ８１０（図１）は、コピー中断指示をデータコピー制御部８４０に供給する。この指示に応答して、データコピー制御部８４０は、カレントセクタのコピーを中断する。図７（Ｃ）は、第１セクタＳ１のコピー中にリード要求が受信された状態を示している。要求データＲＤは第３セクタＳ３に含まれており、未だコピーされていない。この場合には、ステップＳ３６２で、カレントセクタ（第１セクタＳ１）のコピーが中断される。
【００８０】
次のステップＳ３６４では、モジュールコントローラ８１０は、セクタポインタ８７６を、要求セクタの番号に変更する。そして、次のステップ３６６では、モジュールコントローラ８１０は、新しいカレントセクタのコピーを開始する。図７（Ｃ）に示す例では、要求データＲＤは第３セクタＳ３内にある。その結果、図７（Ｄ）に示すように、ステップＳ３６４でセクタポインタ８７６が「３」に設定され、そして、ステップＳ３６６で第３セクタＳ３のコピーが開始される。
【００８１】
なお、ステップＳ３６４において、モジュールコントローラ８１０は、要求セクタを、コピー状態テーブル８７４（図６（Ａ））と要求アドレスとから特定する。コピー管理部８７０は、モジュールコントローラ８１０から受信した新たなセクタ番号と更新指示とに基づいて、セクタポインタ８７６を更新する。また、ステップＳ３６６は、図８のステップＳ５００と同様に実行される。
【００８２】
次のステップＳ３６８では、モジュールコントローラ８１０は、要求データのコピーが完了したか否かを判断する。コピーが完了したか否かを示す情報は、データコピー制御部８４０からモジュールコントローラ８１０に供給される。モジュールコントローラ８１０はコピーの完了を待ち、コピー完了に応答してステップＳ３３０に移行する。その後、ステップＳ３３０、Ｓ３４０が実行されることによって、要求データがＣＰＵ７００に供給される。そして、要求データの供給処理が終了する。
【００８３】
以後、図５、図８、図９の手順に従って、コピーデータ供給処理のコピーステージが実行される。例えば、図７（Ｄ）の例で第３セクタＳ３のコピーが完了した後には、図５のステップＳ４６０で、セクタポインタ８７６がインクリメントされる。これにより、セクタポインタ８７６が「４」に設定される（図７（Ｅ））。そして、図５のステップＳ４４０で第４セクタＳ４がコピーされる。第４セクタＳ４のコピーが完了した後には、図５のステップＳ４６０で、セクタポインタ８７６がインクリメントされる。ただし、図７（Ｅ）の例では、インクリメント前のカレントセクタ（Ｓ４）が最終セクタであるので、セクタポインタ８７６は「０」に設定される。また、第０セクタＳ０のコピーは既に完了しているので、ステップＳ４４０、Ｓ４５０は実行されずに、再びステップＳ４６０が実行される。これにより、セクタポインタ８７６は「１」に設定される。そして、第１セクタＳ１のコピーが実行される（図７（Ｆ））。以後、アドレス順に各セクタがコピーされる。
【００８４】
このように、第３実施例では、要求データがＳＲＡＭ６１０にコピーされておらず、かつ、リード要求の受信時に要求セクタとは異なる他セクタのコピーが実行中である場合には、そのリード要求に応答して要求セクタのデータの全体がＳＲＡＭ６１０にコピーされる。その結果、ＣＰＵ７００によって連続な複数のアドレス（フラッシュメモリ６００でのアドレス）がシーケンシャルにリードされる場合に、素早くデータを供給することができる。例えば、新たなリード要求によって前回のリード要求におけるアドレスの次のアドレスがリードされる場合に、前回のリード要求に応答して新たな要求データをＳＲＡＭ６１０に予めコピーしておくことが可能となる。このような連続な複数のアドレスのシーケンシャルなリードは、しばしば、実行される。例えば、プログラムをメモリからリードする場合や、画像データのような大きなサイズのデータをメモリからリードする場合がある。プログラムをリードする場合には、ジャンプ命令（分岐命令）から次のジャンプ命令までの間のデータ（プログラム）はシーケンシャルにリードされる。従って、本実施例のように、ＣＰＵ７００がメモリモジュール４００からプログラムをリードする場合には、プログラムの供給が素早く実行される。
【００８５】
また、本実施例では、要求セクタのコピーに続けて次のセクタからアドレス順にセクタがコピーされるので、複数のセクタに亘る連続な複数のアドレス（フラッシュメモリ６００でのアドレス）がシーケンシャルにリードされる場合に、素早くデータを供給することができる。
【００８６】
Ｄ．変形例：
なお、上記各実施例における構成要素の中の、独立クレームでクレームされた要素以外の要素は、付加的な要素であり、適宜省略可能である。また、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【００８７】
変形例１：
第３実施例における要求データの供給処理としては、図９に示す処理に限らず種々の処理を採用可能である。例えば、要求セクタのコピーが完了したことに応答して要求データを供給してもよい。また、ステップＳ３６２でカレントセクタ（他セクタ）のコピーを中断する代わりに、他セクタのコピー完了を待ち、他セクタのコピー完了に続けて要求セクタのコピーを開始してもよい。この場合も、要求セクタのデータのコピーの開始が過剰に遅れることが抑制されるので、要求データを素早く供給することができる。
【００８８】
また、モジュールコントローラ８１０は、リード要求の受信時における他セクタのコピーの進行状況に基づいて、他セクタのコピーを中断するか否かを判断しても良い。例えば、他セクタの複数のアドレスの内のコピー済みアドレスの総数が所定数を超えている場合に他セクタのコピーを続行し、コピー済みアドレスの総数が所定数以下である場合に他セクタのコピーを中断してもよい。ここで、所定数としては、任意の値を採用可能である。例えば、他セクタのアドレス総数の半分の値を採用してもよい。
【００８９】
また、ステップＳ３１０において、要求データがコピーされておらず、かつ、要求セクタがカレントセクタであると判断された場合には、ステップＳ３６２〜Ｓ３６６を実行せずに、ステップＳ３６８で要求データのコピーを待ってもよい。
【００９０】
また、ステップＳ３１０における判断方法としては、種々の方法を採用可能である。例えば、現行アドレスを利用せずに、コピー状態テーブル８７４（図６（Ａ））のみを参照して判断が実行されてもよい。この場合には、要求セクタのフラグＦが「０」である場合には、要求データがコピーされていないと判断される。
【００９１】
変形例２：
上述の各実施例において、アドレス順としては、アドレスの昇順に限らず、アドレスの降順を採用してもよい。この場合には、上述の各実施例において、「次のアドレス」として「１つだけデクリメントされたアドレス」を採用すればよい。また、「次のセクタ」としては、アドレスの降順にセクタを並べたときの次のセクタ（アドレスが小さいセクタ）を採用すればよい。
【００９２】
変形例３：
図５に示すコピーデータ供給処理において、複数のセクタのコピー順としては、アドレス順に限らず、任意の順を採用可能である。例えば、予め設定された不連続な順番にセクタがコピーされてもよい。この場合には、図５のステップＳ４６０において、セクタポインタ８７６をインクリメントする代わりに、予め設定された順番における次のセクタの番号にセクタポインタ８７６を設定すればよい。
【００９３】
変形例４：
図５、図８、図９に示す第３実施例において、要求セクタのコピー完了後にコピーされるセクタの順番としては、要求セクタの次のセクタから始まる順番に限らず、任意の順番を採用可能である。例えば、要求セクタのコピー完了の時点でコピー未完了の複数のセクタを、元のコピー順にコピーしてもよい。例えば、図７（Ｄ）に示す例では、要求セクタＳ３のコピーが完了した時点では、３つのセクタＳ１、Ｓ２、Ｓ４のコピーが完了していない。そこで、これら３つのセクタを、元のコピー順（アドレス順。すなわち、Ｓ１、Ｓ２、Ｓ４の順）にコピーしても良い。
【００９４】
変形例５：
上述の各実施例において、要求アドレスと、フラッシュメモリ６００でのアドレスとの第１の対応関係は、任意に設定可能である。例えば、要求アドレスがフラッシュメモリ６００でのアドレスと異なっていても良い。同様に、フラッシュメモリ６００でのアドレスと、ＳＲＡＭ６１０でのアドレスとの第２の対応関係も、任意に設定可能である。また、いずれの場合も、要求アドレスとＳＲＡＭ６１０でのアドレスとの第３の対応関係は、上述の第１対応関係と第２対応関係との両方に適合するように予め設定される。
【００９５】
いずれの場合も、モジュールコントローラ８１０は、予め設定された第１、第２、第３の対応関係に従って、コピー元アドレスとコピー先アドレスとの対応関係を示す情報をデータコピー制御部８４０に供給すればよい（例えば、図２のステップＳ２１０）。また、モジュールコントローラ８１０は、これらの対応関係に従って、要求アドレスに対応付けられたリード対象アドレスを、フラッシュ制御部８２０とリード制御部８６０とに供給すればよい（例えば、図３のステップＳ３３０、図４のステップＳ３５２）。
【００９６】
また、上述の各実施例において、ＣＰＵ７００のデータ長がフラッシュメモリ６００のデータ長と異なっていても良い（ここで、データ長とは、１つのアドレスに対応付けられたデータのサイズを意味している）。仮にＣＰＵ７００のデータ長が、フラッシュメモリ６００のデータ長の２倍である場合には、第１対応関係において、１つの要求アドレスに２つのメモリアドレスが対応付けられる。また、フラッシュメモリ６００のデータ長がＳＲＡＭ６１０のデータ長と異なっていても良い。この場合も、同様に第２対応関係を設定すればよい。また、ＣＰＵ７００のデータ長がＳＲＡＭ６１０のデータ長と異なっていても良い。この場合も、同様に第３対応関係を設定すればよい。
【００９７】
いずれの場合も、要求アドレスをシーケンシャルに辿ったときに、その要求アドレスに対応付けられたフラッシュメモリ６００のメモリアドレスもシーケンシャルに辿られるように、第１対応関係を設定することが好ましい。これにより、連続な複数の要求アドレスには、同じアドレス順で連続な複数のメモリアドレスが対応付けられる。その結果、第３実施例（図５、図８、図９）では、リード要求に応答してフラッシュメモリ６００の要求セクタをＳＲＡＭ６１０にコピーすることによって、ＣＰＵ７００によって連続な複数のアドレス（要求アドレス）がシーケンシャルにリードされる場合に、素早くデータを供給することができる。また、要求セクタのコピーに続けて次のセクタからアドレス順にセクタをコピーすることによって、複数のセクタに亘る連続な複数のアドレス（要求アドレス）がシーケンシャルにリードされる場合に、素早くデータを供給することができる。
【００９８】
変形例６：
上記各実施例において、不揮発性メモリとしては、フラッシュメモリ６００に限らず種々のメモリ（例えば、データが複数の信号線によって読み出されるパラレルフラッシュメモリや、ＥＥＰＲＯＭ等の不揮発性半導体メモリ）を採用可能である。また、揮発性メモリとしては、ＳＲＡＭ６１０に限らずリードとライトとが可能な種々のメモリ（例えば、ＤＲＡＭ（Dynamic RAM）やＳＤＲＡＭ（Synchronous DRAM）等の揮発性半導体メモリ）を採用可能である。いずれの場合も、不揮発性メモリの読み出し速度は、揮発性メモリの読み出し速度と比べて遅い場合が多いので、上述の各実施例のメモリコントローラを利用すれば、メモリに格納されたデータを素早く利用することができる。また、データリードの手順とデータライトの手順とのそれぞれとしては、メモリの設計に適合する任意の手順を採用可能である。
【００９９】
変形例７：
上記各実施例において、フラッシュメモリ６００の内の準備データを格納する部分が、全容量の一部であってもよい。ここで、準備データとは、外部の要求元装置からのリード要求に応答して供給され得るデータの全体を意味している。このような場合には、フラッシュメモリ６００の全アドレスのコピーの完了の代わりに、準備データのコピーが完了したことを、データコピーの完了の条件として採用可能である。
【０１００】
変形例８：
上述の各実施例において、不揮発性メモリとしては、リードコマンドと対象アドレスとを受信した後に、クロック信号に同期して対象アドレスからシーケンシャルにデータを出力する機能を有するメモリを採用可能である。例えば、上述のフラッシュメモリ６００は、このような機能を有している。このような不揮発性メモリを採用すれば、不揮発性メモリにリードコマンドと対象アドレスとを繰り返し供給すること無く、クロック信号の供給を継続することによって、不揮発性メモリから複数のアドレスのデータをリードすることができる。その結果、不揮発性メモリからのデータリードに過剰な時間がかかることを抑制できる。このような処理を不揮発性メモリから揮発性メモリにデータをコピーする場合に実行すれば、データコピーに過剰な時間がかかることを抑制できる。
【０１０１】
ここで、クロック信号の供給を停止すれば、不揮発性メモリからのデータ出力も停止する。その後、クロック信号の供給を再開すれば、不揮発性メモリからのデータ出力も再開される。そこで、フラッシュ制御部８２０は、データを受信できないことを示す所定の停止条件が成立する場合にはクロック信号の供給を停止し、データを受信できることを示す所定の再開条件が成立したことに応答してクロック信号の供給を再開することが好ましい。このように、リードコマンドと対象アドレスとを不揮発性メモリに供給せずにクロック信号の供給停止と供給再開とを繰り返し実行することによって、フラッシュ制御部８２０は、不揮発性メモリからのデータリードに過剰な時間がかかることを抑制しつつ、適切にデータをリードすることができる。なお、停止条件としては、種々の条件を採用可能である。例えば、フラッシュ制御部８２０の図示しないデータ受信バッファが空いていないことを採用してもよい。また、再開条件としては、種々の条件を採用可能である。例えば、上述のデータ受信バッファが空いていることを採用してもよい。
【０１０２】
変形例９：
上述の各実施例において、データ処理装置の構成としては、図１に示す構成に限らず、種々の構成を採用可能である。例えば、ＣＰＵ７００とメモリコントローラ８００とがバス５００を介さずに直接に接続されてもよい。
【０１０３】
また、コピーデータ供給処理を実行するコピーデータ供給処理モジュールの構成としては、図１に示す構成に限らず、種々の構成を採用可能である。例えば、複数のモジュールの全体が、「コピーデータ供給処理モジュール」として機能してもよい。また、メモリコントローラ８００の構成としても、図１に示す構成に限らず、種々の構成を採用可能である。例えば、データコピー制御部８４０を省略し、モジュールコントローラ８１０が直接にコピーを制御してもよい。
【０１０４】
また、メモリコントローラ８００に対してリード要求を送信する外部装置（外部の要求元装置）としては、ＣＰＵ７００に限らず、任意の装置を採用可能である。例えば、予め決定された手順に従ってデータ処理を実行する専用のデータ処理回路を採用してもよい。
【０１０５】
変形例１０：
上述の各実施例において、不揮発性メモリに格納するデータとしては、プログラムに限らず種々のデータを採用可能である。例えば、印刷データのサンプルや、種々の画像データを採用してもよい。
【０１０６】
また、上述の各実施例のメモリモジュール４００を適用する装置としては、任意の装置を採用可能である。例えば、プリンタにおける入力画像データから印刷データを生成するデータ処理装置を採用してもよい。また、プロジェクタにおける入力画像データから表示用画像データを生成するデータ処理装置を採用してもよい。また、デジタルカメラにおける画像データを生成するデータ処理装置を採用してもよい。また、汎用のコンピュータを採用してもよい。
【０１０７】
変形例１１：
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。例えば、図１のモジュールコントローラ８１０の機能を、ＣＰＵとメモリとを有するコンピュータにプログラムを実行させることによって実現してもよい。
【０１０８】
また、本発明の機能の一部または全部がソフトウェアで実現される場合には、そのソフトウェア（コンピュータプログラム）は、コンピュータ読み取り可能な記録媒体に格納された形で提供することができる。この発明において、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスクやＣＤ−ＲＯＭのような携帯型の記録媒体に限らず、各種のＲＡＭやＲＯＭ等のコンピュータ内の内部記憶装置や、ハードディスク等のコンピュータに固定されている外部記憶装置も含んでいる。
【図面の簡単な説明】
【０１０９】
【図１】本発明の一実施例としてのデータ処理装置を示す概略図である。
【図２】第１実施例におけるコピーデータ供給処理のコピーステージの手順を示すフローチャートである。
【図３】第１実施例における要求データ供給処理（図２：Ｓ２３０）の手順を示すフローチャートである。
【図４】要求データ供給処理（図２：Ｓ２３０）の別の例を示すフローチャートである。
【図５】コピーデータ供給処理のコピーステージの別の例を示すフローチャートである。
【図６】コピー状態テーブル８７４とセクタポインタ８７６とを示す概略図である。
【図７】第３実施例におけるデータコピーの様子を示す概略図である。
【図８】カレントセクタのデータコピー処理（図５：Ｓ４４０）の手順を示すフローチャートである。
【図９】要求データ供給処理（図８：Ｓ５２０）の手順を示すフローチャートである。
【符号の説明】
【０１１０】
４００…メモリモジュール
５００…バス
６００…シリアルフラッシュメモリ
６１０…ＳＲＡＭ
７００…ＣＰＵ（中央処理装置）
８００…メモリコントローラ
８１０…モジュールコントローラ
８２０…シリアルフラッシュ制御部（フラッシュ制御部）
８３０…メモリアービタ
８４０…データコピー制御部
８５０…ライト制御部
８６０…リード制御部
８７０…コピー管理部
８７２…メモリ
８７４…コピー状態テーブル
８７６…セクタポインタ
９１０…データ処理装置
【図１】
2008225608.tif 000003
【図２】
2008225608.tif 000004
【図３】
2008225608.tif 000005
【図４】
2008225608.tif 000006
【図５】
2008225608.tif 000007
【図６】
2008225608.tif 000008
【図７】
2008225608.tif 000009
【図８】
2008225608.tif 000010
【図９】
2008225608.tif 000011