JP2008225608A - メモリを制御するメモリコントローラ、メモリモジュール、メモリの制御方法 - Google Patents

メモリを制御するメモリコントローラ、メモリモジュール、メモリの制御方法 Download PDF

Info

Publication number
JP2008225608A
JP2008225608A JP2007059695A JP2007059695A JP2008225608A JP 2008225608 A JP2008225608 A JP 2008225608A JP 2007059695 A JP2007059695 A JP 2007059695A JP 2007059695 A JP2007059695 A JP 2007059695A JP 2008225608 A JP2008225608 A JP 2008225608A
Authority
JP
Japan
Prior art keywords
data
request
copy
memory
read
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007059695A
Other languages
English (en)
Inventor
Masahiko Mizoguchi
昌彦 溝口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2007059695A priority Critical patent/JP2008225608A/ja
Publication of JP2008225608A publication Critical patent/JP2008225608A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Memory System (AREA)

Abstract

【課題】メモリに格納されたデータを素早く利用することができる技術を提供することを目的とする。
【解決手段】不揮発性メモリから前記揮発性メモリへのデータコピーを開始し、データコピーが完了したか否かに拘わらずに要求元装置からのリード要求を受信し、要求データが既に揮発性メモリにコピーされている場合には、データコピーの完了の前に揮発性メモリから要求データを読み出して要求元装置へ供給し、要求データが未だ揮発性メモリにコピーされていない場合には、要求データを不揮発性メモリからリードし、データコピーの完了の前に要求データを要求元装置に供給する。
【選択図】図1

Description

本発明は、メモリを制御するメモリコントローラ、メモリモジュール、メモリの制御方法に関するものである。
データを格納するメモリを利用するために、種々の工夫が成されている。例えば、マイクロコンピュータの実行速度と比べてアクセス速度が遅いシリアルインターフェースのフラッシュメモリ(以下、シリアルフラッシュメモリとも呼ぶ)にプログラムを格納する技術が知られている。ここで、電源投入時に、CPUが動作する前にフラッシュメモリからRAMにプログラムを転送し、CPUがRAM上のプログラムを実行するという技術も知られている。
特開2003−141096号公報 特開2006−155303号公報
ところが、CPUによるプログラム実行開始がプログラムの転送終了後であるので、プログラムの開始に時間がかかる場合があった。なお、このような問題は、メモリに格納されたプログラムを利用する場合に限らず、メモリに格納された他の種々のデータを利用する場合に共通する問題であった。また、このような問題は、シリアルフラッシュメモリに格納されたデータを利用する場合に限らず、他の種々のメモリに格納されたデータを利用する場合に共通する問題であった。
本発明は、上記の課題を解決するためになされたものであり、メモリに格納されたデータを素早く利用することができる技術を提供することを目的とする。
上述の課題の少なくとも一部を解決するため、本発明のメモリコントローラは、読み出し速度が比較的低速な不揮発性メモリと、読み出し速度が比較的高速な揮発性メモリとを含むメモリセットを制御するメモリコントローラであって、前記不揮発性メモリ内のデータを前記揮発性メモリにコピーするとともに、前記不揮発性メモリに格納されていたデータに対する外部の要求元装置からのリード要求に応答して前記揮発性メモリにコピーされたデータを読み出して前記要求元装置に供給するコピーデータ供給処理を実行するコピーデータ供給処理モジュールを備え、前記コピーデータ供給処理は、前記不揮発性メモリから前記揮発性メモリへのデータコピーを開始する処理と、前記データコピーが完了したか否かに拘わらずに前記要求元装置からの前記リード要求を受信する処理と、前記リード要求で要求されている要求データが既に前記揮発性メモリにコピーされている第1の場合に、前記データコピーの完了の前に前記不揮発性メモリの代わりに前記揮発性メモリから前記要求データを読み出して前記要求元装置へ供給する処理と、前記要求データが未だ前記揮発性メモリにコピーされていない第2の場合に、前記要求データを前記不揮発性メモリからリードする応答リードを実行し、前記データコピーの完了の前に前記要求データを前記要求元装置に供給する処理と、を含む。
このメモリコントローラによれば、不揮発性メモリから揮発性メモリへのデータコピーが完了したか否かに拘わらずに要求元装置からのリード要求が受信され、そして、データコピーの完了前に要求元装置へ要求データが供給されるので、メモリに格納されたデータを素早く利用することができる。
上記メモリコントローラにおいて、前記コピーデータ供給処理は、さらに、前記不揮発性メモリのアドレスの範囲を分割して得られる複数のブロックのそれぞれのデータのコピーを、所定の規則に従ったブロック順で実行する処理を含み、前記応答リードは、前記リード要求の受信時に前記要求データが属するブロックである要求ブロックとは異なる他ブロックのデータのコピーが実行中である場合には、前記ブロック順に拘わらずに前記リード要求に応答して前記要求ブロックのデータの全体を前記不揮発性メモリからリードする処理である要求ブロック処理を含み、前記コピーデータ供給処理は、さらに、前記要求ブロック処理によってリードされたデータを前記揮発性メモリに格納することによって前記要求ブロックのデータのコピーを完了する処理を含むこととしてもよい。
この構成によれば、要求ブロックのデータの全体が揮発性メモリにコピーされるので、連続な複数のアドレスがシーケンシャルにリードされる場合に、素早くデータを供給することができる。
上記メモリコントローラにおいて、前記所定の規則に従ったブロック順は、前記不揮発性メモリのアドレスの順番に辿られるブロック順であり、前記コピーデータ供給処理は、さらに、前記要求ブロック処理の完了の後に前記要求ブロックの次のブロックから前記ブロック順にデータをコピーする処理を含むこととしてもよい。
この構成によれば、ブロック順が不揮発性メモリのアドレスの順番に辿られるブロック順であり、そして、要求ブロックに続けて次のブロックからブロック順にデータがコピーされるので、複数のブロックに亘る連続な複数のアドレスがシーケンシャルにリードされる場合に、素早くデータを供給することができる。
上記各メモリコントローラにおいて、前記要求ブロック処理は、(1)前記他ブロックのデータのコピーを中断して前記要求ブロックのデータのコピーを開始する処理と、(2)前記他ブロックのデータのコピーの完了に続けて前記要求ブロックのデータのコピーを開始する処理と、の少なくとも一方を含むこととしてもよい。
この構成によれば、要求ブロックのデータのコピーの開始が過剰に遅れることが抑制されるので、要求データを素早く供給することができる。
なお、本発明は、種々の形態で実現することが可能であり、例えば、メモリの制御方法およびメモリを制御するメモリコントローラ、そのメモリコントローラとメモリとを備えるメモリモジュール、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
次に、この発明の実施の形態を実施例に基づいて以下の順序で説明する。
A.第1実施例:
B.第2実施例:
C.第3実施例:
D.変形例:
A.第1実施例:
図1は、本発明の一実施例としてのデータ処理装置を示す概略図である。本実施例では、このデータ処理装置910は、図示しないプリンタに組み込まれ、印刷処理を実行する。印刷処理としては、例えば、入力された画像データから、図示しない印刷エンジン(種々の印刷機構)に供給すべき印刷データを生成する処理が挙げられる。
このデータ処理装置910は、バス500と、バス500に接続された中央処理装置700(以下「CPU700」と呼ぶ)と、バス500に接続されたメモリモジュール400と、を有している。CPU700は、メモリモジュール400からプログラムを読み出し、読み出したプログラムを実行することによって印刷処理を実行する。
メモリモジュール400は、メモリコントローラ800と、不揮発性のシリアルフラッシュメモリ600と、揮発性のSRAM(Static Random Access Memory)610と、を有している。これらのメモリ600、610は、メモリコントローラ800によって制御される。以下、シリアルフラッシュメモリ600を、「シリアルメモリ600」あるいは「フラッシュメモリ600」とも呼ぶ。
バス500にはメモリコントローラ800が接続されている。CPU700は、バス500を介して、メモリコントローラ800にリード要求を送信する。メモリコントローラ800は、リード要求に応答して、リード要求で指定されたアドレスに対応付けられたデータを、バス500を介してCPU700に供給する。以下、リード要求で指定されたアドレスを「要求アドレス」と呼び、要求アドレスに対応付けられたデータを「要求データ」と呼ぶ。
CPU700に供給されるべきデータ(この場合はプログラム)は、フラッシュメモリ600に予め格納されている。フラッシュメモリ600に格納されたデータは、SRAM610にコピーされる。そして、CPU700からのリード要求に応答してSRAM610から要求データが読み出され、読み出された要求データがCPU700に供給される。このようにフラッシュメモリ600のデータをSRAM610にコピーする理由は、フラッシュメモリ600の読み出し速度が、SRAM610の読み出し速度と比べて遅いからである(読み出し速度は、単位時間当たりにリードされるデータ量を意味している)。後述するように、フラッシュメモリ600からは1本の信号線によってデータが出力され、SRAM610からは16本の信号線によってデータが出力される。その結果、同じ量のデータ出力に要する時間に関しては、フラッシュメモリ600の時間の方が、SRAM610の時間と比べて、長い。そこで、リード要求に応答してSRAM610から要求データをリードすれば、フラッシュメモリ600から要求データをリードする場合と比べて、素早く要求データをCPU700に供給することができる。フラッシュメモリ600からSRAM610へのデータコピーの詳細については後述する。
メモリコントローラ800は、モジュールコントローラ810と、シリアルフラッシュ制御部820(以下「フラッシュ制御部820」とも呼ぶ)と、メモリアービタ830と、データコピー制御部840と、ライト制御部850と、リード制御部860と、コピー管理部870と、を有している。コピー管理部870は、メモリ872を有している。このメモリ872には、データコピーの進行状況を示す情報が格納される。メモリコントローラ800の各構成要素は、各構成要素の機能を実現する電子回路によって構成されている。このような電子回路としては、例えば、ASIC(Application Specific Integrated Circuits)のような専用の電子回路を採用可能である。
フラッシュ制御部820は、フラッシュメモリ600との通信を制御することによって、フラッシュメモリ600からデータをリードする。この通信で転送される信号は、以下の信号を含んでいる。
(A)チップセレクト信号/S(1本の信号線)。
(B)クロック信号C(1本の信号線)。
(C)入力データ信号D(1本の信号線)。
(D)出力データ信号Q(1本の信号線)。
フラッシュ制御部820は、フラッシュメモリ600に送信される信号/S、C、Dを制御し、出力データ信号Qをフラッシュメモリ600から受信する。フラッシュメモリ600は、クロック信号Cに同期して動作する。なお、信号を表す符号の先頭の符号「/」は、その信号が負論理の信号であることを意味している。これは、後述する他の信号についても同様である。
本実施例では、フラッシュメモリ600からのデータリードは、以下のように実行される。
(1)フラッシュ制御部820が、チップセレクト信号/Sをアサートする。
(2)次に、フラッシュ制御部820が、入力データ信号Dを利用して、リードコマンドデータとリード対象アドレスとをこの順番にフラッシュメモリ600に入力する(これらのデータは、1ビットずつクロック信号Cに同期して入力される)。
(3)フラッシュメモリ600が、対象アドレスの入力に応答して、出力データ信号Qを利用して、対象アドレスに対応付けられたデータを出力する(データは、1ビットずつクロック信号Cに同期して出力される)。
なお、本実施例では、対象アドレスは24ビットで表されている。そして、1つの対象アドレスに対応付けられたデータは16ビットで表されている。また、リードコマンドデータは、フラッシュメモリ600の設計に応じて予め決められたデータであり、例えば、8ビットの所定値で表されている。このリードコマンドデータの入力は、チップセレクト信号/Sがアサートされた後に、受け入れられる。なお、「信号をアサートする」とは、その信号をアクティブな状態に切り換えることを意味している。「信号をネゲートする」とは、その信号をインアクティブな状態に切り換えることを意味している。
メモリアービタ830は、SRAM610との通信を制御することによって、SRAM610へのデータライトと、SRAM610からのデータリードとを、実行する。この通信で転送される信号は、以下の信号を含んでいる。
(A)チップイネーブル信号/CEN(1本の信号線)。
(B)ライトイネーブル信号/WEN(1本の信号線)。
(C)アドレス信号As(24本の信号線)。
(D)入力データ信号Ds(16本の信号線)。
(E)出力データ信号Qs(16本の信号線)。
(F)クロック信号CLK(1本の信号線)。
メモリアービタ830は、SRAM610に送信される信号/CEN、/WEN、As、Ds、CLKを制御し、出力データ信号QsをSRAM610から受信する。
本実施例では、SRAM610へのデータライトは、以下のように実行される。
(1)メモリアービタ830が、アドレス信号Asをライト対象アドレスに設定する。
(2)次にメモリアービタ830が、チップイネーブル信号/CENをアサートする
(3)SRAM610が、チップイネーブル信号/CENのアサートに応答して、アドレス信号Asを参照することによってライト対象アドレスを取得する。
(4)次にメモリアービタ830が、入力データ信号Dsをライト対象データに設定する。
(5)次にSRAM610は、チップイネーブル信号/CENのアサートから所定数のクロック信号CLKのパルスが入力されたことに応答して、入力データ信号Dsを参照することによってライト対象データを取得し、取得したデータをライト対象アドレスと対応付けて格納する。
(6)次にメモリアービタ830が、チップイネーブル信号/CENをネゲートする。
なお、本実施例では、データライトの間は、ライトイネーブル信号/WENはアクティブな状態に維持される。
また、本実施例では、SRAM610からのデータリードは、以下のように実行される。
(1)メモリアービタ830が、アドレス信号Asをリード対象アドレスに設定する。
(2)次にメモリアービタ830が、チップイネーブル信号/CENをアサートする。
(3)SRAM610が、チップイネーブル信号/CENのアサートに応答して、アドレス信号Asを参照することによってリード対象アドレスを取得する。そして、SRAM610は、出力データ信号Qsをリード対象データに設定する(リード対象データは、リード対象アドレスに対応付けられたデータである)。
(4)次にメモリアービタ830が、出力データ信号Qsを参照することによって、リード対象データを取得する。
なお、本実施例では、データリードの間は、ライトイネーブル信号/WENはインアクティブな状態に維持される。
ライト制御部850は、メモリアービタ830に、SRAM610へのデータライトを実行させる。ライト対象アドレスとライト対象データとは、ライト制御部850からメモリアービタ830に供給される。
リード制御部860は、メモリアービタ830に、SRAM610からのデータリードを実行させる。リード制御部860は、リード対象アドレスをメモリアービタ830へ供給する。そして、リード制御部860は、メモリアービタ830から、SRAM610からリードされたデータを受信する。また、リード制御部860は、フラッシュ制御部820から、フラッシュメモリ600からリードされたデータを受信する。リード制御部860は、データ信号DATAを利用して、受信したデータをバス500(すなわちCPU700)に供給する。
メモリアービタ830は、ライト制御部850によるデータライトと、リード制御部860によるデータリードとの間を調停する。
データコピー制御部840は、フラッシュ制御部820とライト制御部850とに、フラッシュメモリ600からSRAM610へのデータコピーを実行させる。コピー対象のアドレスは、データコピー制御部840からこれらの制御部820、850に供給される。このデータコピーの進行状況を示す情報は、メモリ872に格納される(詳細は後述)。
モジュールコントローラ810は、メモリコントローラ800の各構成要素の動作を制御することによって、メモリコントローラ800の全体の動作を制御する。また、モジュールコントローラ810は、各構成要素の制御に加えてバス500との通信を制御することによって、コピーデータ供給処理を実行する。コピーデータ供給処理は、フラッシュメモリ600からSRAM610へデータをコピーするとともに、CPU700からのリード要求に応答して要求データをSRAM610から読み出してCPU700に供給する処理である。このように、モジュールコントローラ810は、特許請求の範囲における「コピーデータ供給処理モジュール」に相当する。
バス500とメモリコントローラ800との間で転送される信号は以下の信号を含んでいる。
(A)リード要求信号/RD(1本の信号線)。
(B)アドレス信号AD(24本の信号線)。
(C)ウェイト信号/WAIT(1本の信号線)。
(D)データ信号DATA(16本の信号線)。
メモリコントローラ800に供給される信号/RD、ADはCPU700によって制御される。バス500(CPU700)に送信されるウェイト信号/WAITはモジュールコントローラ810によって制御される。バス500(CPU700)に送信されるデータ信号DATAは、リード制御部860によって制御される。
本実施例では、CPU700によるメモリモジュール400からのデータリードは以下のように実行される。
(1)CPU700が、アドレス信号ADを要求アドレスに設定する。
(2)次にCPU700が、リード要求信号/RDをアサートする(これらの信号AD、/RDの設定の全体が「リード要求」に相当する)。
(3)モジュールコントローラ810が、リード要求に応答して、ウェイト信号/WAITをアサートする(このアサートによって、CPU700は、処理を中断する)。
(4)次にリード制御部860(モジュールコントローラ810)が、データ信号DATAを要求データに設定する。
(5)次にモジュールコントローラ810が、ウェイト信号/WAITをネゲートする。
(6)CPU700が、ウェイト信号/WAITのネゲートに応答して、処理を再開する(データ信号DATAを参照して要求データを取得する)。
なお、メモリコントローラ800の各構成要素は、モジュールコントローラ810によって制御されている。従って、メモリコントローラ800から出力される全ての信号(例えば、データ信号DATAや、入力データ信号Dや、アドレス信号As)はモジュールコントローラ810によって制御されている、と言うこともできる。
また、上述したように、フラッシュメモリ600に格納されたデータは、SRAM610にコピーされる。このコピーは、コピーデータ供給処理のコピーステージで実行される。このコピーステージは、コピーデータ供給処理の初期のステージである。このコピーの完了後にリード要求を受信した場合には、モジュールコントローラ810は、要求データをSRAM610から読み出してCPU700に供給する。コピー完了前にリード要求を受信した場合には、後述するコピーデータ供給処理のコピーステージの手順に従って、要求データがCPU700に供給される。
図2は、第1実施例におけるコピーデータ供給処理のコピーステージの手順を示すフローチャートである。最初のステップS200では、モジュールコントローラ810(図1)は、コピーデータ供給処理の開始指示を受信したことに応答して、コピーデータ供給処理を開始する。このような開始指示としては、任意の指示を採用可能である。例えば、データ処理装置910(メモリコントローラ800)の電源が入れられたことを採用してもよい。また、メモリコントローラ800に対するリセット信号(図示せず)がネゲートされたことを採用してもよい。
次のステップS210では、モジュールコントローラ810(図1)は、データコピー制御部840に、コピー開始指示を供給する。データコピー制御部840は、指示に従って、フラッシュ制御部820とライト制御部850とに、フラッシュメモリ600からSRAM610へのデータコピーを開始させる。データコピー制御部840は、コピー元アドレスをフラッシュ制御部820に供給し、フラッシュ制御部820は、フラッシュメモリ600のそのアドレスからデータをリードする。フラッシュ制御部820によってリードされたデータはライト制御部850に供給される。データコピー制御部840は、コピー先アドレスをライト制御部850に供給し、ライト制御部850はSRAM610のそのアドレスに受信したデータを格納する。データコピー制御部840は、コピー元アドレスとコピー先アドレスとを更新することによって、データのコピーを進行させる。なお、本実施例では、SRAM610でのアドレスは、フラッシュメモリ600でのアドレスと同じアドレスに設定される。すなわち、コピー先アドレスは、コピー元アドレスと同じである。
また、コピー管理部870は、メモリ872に、コピー中のアドレス(フラッシュメモリ600でのアドレス。以下「現行アドレス」とも呼ぶ)を格納する。また、本実施例では、データコピーは、先頭アドレスからシーケンシャルに実行される。その結果、現行アドレスよりも前のアドレスをコピー済みアドレスと識別し、現行アドレスよりも後のアドレスをコピーされていないアドレスと識別することができる。このような現行アドレスは、メモリコントローラ800の種々の構成要素(例えば、データコピー制御部840)から取得され得る。なお、複数のアドレスのコピー順としては、アドレスの昇順に限らず、任意の順を採用可能である。いずれの場合も、コピー管理部870は、コピー済みのアドレスと、コピーされていないアドレスとを識別する情報(進行情報)をメモリ872に格納する。そして、コピー管理部870は、この進行情報を、コピーの進行に伴って更新する。
次のステップS220では、モジュールコントローラ810(図1)は、CPU700からリード要求を受信したか否かを判断する。リード要求を受信していない場合には、モジュールコントローラ810は、ステップS240に移行する。リード要求を受信した場合には、モジュールコントローラ810は、ステップS230で、要求データの供給処理を実行する(詳細は後述)。ステップS230が終了した後には、モジュールコントローラ810は、ステップS240に移行する。
ステップS240では、モジュールコントローラ810(図1)は、データコピーが完了したか否かを判断する。コピーが完了したか否かを示す情報は、データコピー制御部840からモジュールコントローラ810に供給される。データコピーが完了していない場合には、モジュールコントローラ810は、再びステップS220に移行する。
データコピーが完了した場合には、モジュールコントローラ810は、コピーステージを終了する。コピーステージの終了後、モジュールコントローラ810は、コピーデータ供給処理の通常ステージに移行する。この通常ステージでは、リード要求に応答して、モジュールコントローラ810は、要求データをSRAM610から読み出してCPU700に供給する。具体的には、モジュールコントローラ810は、要求アドレスとデータ供給指示とをリード制御部860に供給する。リード制御部860は、指示に従って、要求データをSRAM610から読み出してバス500(CPU700)に供給する。本実施例では、要求アドレスは、フラッシュメモリ600でのアドレスと同じである。すなわち、SRAM610でのアドレスは、要求アドレスと同じである。
図3は、第1実施例における要求データ供給処理(図2:S230)の手順を示すフローチャートである。最初のステップS300では、モジュールコントローラ810(図1)は、ウェイト信号/WAITをアサートする。このアサートに応答して、CPU700は処理を中断する。
次のステップS310では、モジュールコントローラ810(図1)は、要求データがコピー済みであるか否かを判断する。この判断は、メモリ872に格納された進行情報を参照することによって行われる。本実施例では、要求アドレスが、フラッシュメモリ600でのアドレスと同じであるので、要求アドレスと現行アドレスとの比較によってこの判断が行われる。
要求データのコピーが済んでいる場合には、次のステップS330で、モジュールコントローラ810は、要求データをSRAM610から読み出してバス500(CPU700)に供給する。このステップは、上述した通常ステージでの要求データ供給処理と同様である。リード制御部860は、データ信号DATAを、SRAM610から読み出した要求データに設定する。
次のステップS340では、モジュールコントローラ810は、ウェイト信号/WAITをネゲートする。このネゲートに応答して、CPU700は、処理を再開する(データ信号DATAを参照して要求データを取得する)。また、このネゲートによって、要求データの供給処理は終了する。
ステップS310で、要求データがコピーされていないと判断された場合には、モジュールコントローラ810は、ステップS320に移行する。このステップS320では、モジュールコントローラ810は、要求データのコピーの完了を待つ。要求データのコピーが完了したか否かの判断は、ステップS310と同様に行われる。要求データのコピー完了に応答して、モジュールコントローラ810は、次のステップS330に移行する。
以上のように、第1実施例では、モジュールコントローラ810は、フラッシュメモリ600からSRAM610へのデータコピーが完了したか否かに拘わらずにCPU700からのリード要求を受信する。そして、データコピーが完了する前にCPU700へ要求データが供給されるので、メモリに格納されたデータを素早く利用することができる。また、メモリアービタ830は、SRAM610へのデータライトと、SRAM610からのデータリードとの間を調停する。この際、データリードのプライオリティがデータライトのプライオリティよりも上位に設定される。SRAM610にコピー済みのデータに対するリード要求がコピーの実行中にメモリコントローラ800に入力された場合には、コピーのためのデータライトに優先して、SRAM610から要求データがリードされる。これらの結果、コピーの実行中にリード要求が入力された場合であっても、データコピー制御部840(モジュールコントローラ810)は、コピーの中断/再開を制御せずに済む。さらに、モジュールコントローラ810は、単に要求データがコピー済みか否か(SRAM610から要求データを読み出して良いか否か)を管理することによって、リード制御部860を制御すればよい。
なお、第1実施例では、図3のステップS320において、要求データのコピーが完了するまでフラッシュメモリ600からデータがリードされる。このデータリードが、特許請求の範囲における「応答リード」に相当する。
また、第1実施例では、最後尾アドレスのデータを除くデータについて、データコピーの完了前の供給が可能である。このように少なくとも一部の要求アドレスのデータが、データコピー完了前に供給可能であれば、メモリに格納されたデータを素早く利用することができる。
B.第2実施例:
図4は、要求データ供給処理(図2:S230)の別の例を示すフローチャートである。図3に示す手順との差違は、ステップS320の代わりに、ステップS350〜S356が設けられている点である。これらのステップS350〜S356が完了した後は、処理がステップS330に移行する代わりに、要求データ供給処理が終了する。他のステップ(S300、S310、S330、S340)は、図3の例と同様に実行される。なお、データ処理装置の構成と、コピーデータ供給処理のコピーステージの手順とは、図1、図2に示す第1実施例と同じである。
ステップS350では、モジュールコントローラ810(図1)は、コピー中断指示をデータコピー制御部840に供給する。データコピー制御部840は、指示に従ってフラッシュ制御部820とライト制御部850とを制御することによって、コピーを中断する。
次のステップS352では、モジュールコントローラ810(図1)は、要求データをフラッシュメモリ600から読み出してバス500(CPU700)へ供給する。具体的には、モジュールコントローラ810は、要求アドレスとリード供給指示とをフラッシュ制御部820に供給する。フラッシュ制御部820は、指示に従って、要求アドレスのデータをフラッシュメモリ600からリードし、リードした要求データをリード制御部860に供給する。また、モジュールコントローラ810は、供給指示をリード制御部860に供給する。リード制御部860は、指示に従って、データ信号DATAを、フラッシュ制御部820から取得した要求データに設定する。
次のステップS354の処理は、ステップS340と同じである。CPU700(図1)は、ウェイト信号/WAITのネゲートに応答して、要求データを取得する。
次のステップS356では、モジュールコントローラ810(図1)は、コピー再開指示をデータコピー制御部840に供給する。データコピー制御部840は、指示に従ってフラッシュ制御部820とライト制御部850と制御することによって、コピーを再開する。このコピー再開によって、要求データの供給処理は終了する。なお、このステップ356は、ステップS354の前に実行されてもよい。一般には、要求データのリード完了に応答してコピーを再開することが可能である。
このように、第2実施例では、モジュールコントローラ810は、リード要求に応答してデータコピーを中断し、その中断に続けて要求データをフラッシュメモリ600から読み出す。このように、データコピーよりも優先して要求データがリードされるので、要求データを素早くCPU700に供給することができる。また、モジュールコントローラ810は、要求データのリード完了に応答してデータコピーを再開する。その結果、データコピーに過剰な時間がかかることを抑制できる。
C.第3実施例:
図5は、コピーデータ供給処理のコピーステージの別の例を示すフローチャートである。図2に示す手順との差違は、ブロック毎にデータコピーが進行する点である。ブロックとは、フラッシュメモリ600のアドレスの範囲を分割して得られる複数の部分範囲のそれぞれを意味している。以下、このブロックのことを「セクタ」とも呼ぶ。なお、データ処理装置の構成は、図1に示す第1実施例と同じである。
図6は、コピー状態テーブル874とセクタポインタ876とを示す概略図である。これらのデータは、データコピーの進行状況をセクタ毎に管理するためのデータであり、コピー管理部870(図1)のメモリ872に格納されている。なお、メモリ872には、上述の各実施例と同様に現行アドレスも格納される。
図6(A)に示すように、コピー状態テーブル874は、セクタ番号SNと、アドレス範囲と、コピー済みフラグ(以下、単に「フラグF」とも呼ぶ)と、の対応関係を示している。アドレス範囲は、フラッシュメモリ600のアドレスの範囲である。セクタ番号SNとアドレス範囲との対応関係は、予め設定されている。本実施例では、24ビットで表され得る範囲(000000h〜FFFFFFh)の内の所定の一部の範囲(000000h〜04FFFFh)が、アドレスの有効範囲として利用される(「h」は16進法を意味している)。そして、図6(A)の例では、この有効範囲が、同じサイズの5つのセクタに分割されている。なお、アドレスの有効範囲は、フラッシュメモリ600の容量に応じて設定される。また、セクタのサイズおよび総数は、この例に限らず、任意に設定可能である。また、セクタのサイズは、セクタ毎に異なっていても良い。
セクタ番号SNは、各セクタをアドレスの昇順に辿ったときにセクタ番号が昇順に辿られるように、「0」から昇順に割り振られている。ここで、各セクタのサイズが同じである場合には、セクタ番号SNからアドレス範囲を算出することが可能である。従って、コピー状態テーブル874からアドレス範囲を省略してもよい。
フラグFは、セクタのデータコピーが完了している場合には「1」に設定され、セクタのデータコピーが完了していない場合には「0」に設定される。
図6(B)に示すセクタポインタ876は、コピー対象セクタのセクタ番号SNを示している。以下、コピー対象のセクタを「カレントセクタ」と呼ぶ。また、カレントセクタのセクタ番号を「カレントセクタ番号CSN」と呼ぶ。カレントセクタ番号CSNは、セクタポインタ876によって示される番号である。
図7(A)〜(F)は、第3実施例におけるデータコピーの様子を示す概略図である。図中には、セクタポインタ876と、コピー状態テーブル874と、フラッシュメモリ600と、SRAM610とが示されている。これらの状態は、図7(A)(B)(C)(D)(E)(F)の順に変化する。図中には、各メモリ600、610の5つのセクタS0〜S4も示されている。SRAM610中のハッチングが付されたセクタは、コピー済みのセクタを示している。
図5の最初のステップS400は、図2のステップS200と同じである。次のステップS410では、モジュールコントローラ810(図1)は、データコピーの初期設定を行う。この初期設定では、データ874、876(図6(A)(B))が初期化される。本実施例では、セクタ番号が「0」であるセクタからコピーが開始される。従って、カレントセクタ番号CSNが「0」に設定される。また、全てのセクタのフラグFが「0」に設定される。コピー管理部870は、モジュールコントローラ810からの初期化指示に従って、これらのデータ874、876を初期化する。
次のステップS420では、モジュールコントローラ810(図1)は、全セクタのコピーが完了したか否かを判断する。この判断は、コピー状態テーブル874(図6(A))を参照することによって行われる。後述するように、データコピーの進行に伴って、コピー済みセクタのフラグFは「1」に設定される。
全てのセクタのデータコピーが完了している場合には、モジュールコントローラ810(図1)は、コピーステージを終了する。コピーステージの終了後、モジュールコントローラ810は、コピーデータ供給処理の通常ステージに移行する。この通常ステージでの処理は、上述の各実施例での処理と同じである。
コピー未完了のセクタが残っている場合には、次のステップS430で、モジュールコントローラ810(図1)は、カレントセクタのコピーが完了しているか否かを判断する。セクタポインタ876(図6(B))によって示されるセクタのフラグF(図6(A))が「1」である場合に、カレントセクタのコピーが完了していると判断される。なお、後述するように、データコピーの進行に伴って、セクタポインタ876は更新される。
カレントセクタのコピーが完了している場合には、モジュールコントローラ810(図1)は、後述するステップS460に移行する。
カレントセクタのデータコピーが完了していない場合には、次のステップS440で、モジュールコントローラ810(図1)は、カレントセクタのデータコピー処理を実行する(詳細は後述)。本実施例では、図7(A)に示すように、まず、セクタポインタ876が示す第0セクタS0がコピーされる。
図5のステップS440の完了(カレントセクタのコピーの完了)に応答して、次のステップS450では、モジュールコントローラ810は、フラグ設定指示をコピー管理部870に供給する。コピー管理部870は、指示に従って、カレントセクタのフラグFを立てる(フラグFを「1」に設定する)。図7(B)は、第0セクタS0のコピー完了に続く状態を示している。コピー状態テーブル874では、第0セクタS0のフラグFが「1」に設定されている。ステップS450の処理が完了した後、モジュールコントローラ810は、ステップS460に移行する。
ステップS460では、モジュールコントローラ810は、インクリメント指示をコピー管理部870に供給する。コピー管理部870は、指示に従って、セクタポインタ876を「1」だけインクリメントする。図7(B)に示す例では、セクタポインタ876が「0」から「1」に更新されている。
なお、インクリメント前のカレントセクタが有効範囲における最終セクタである場合には(本実施例では、第4セクタS4)、コピー管理部870は、セクタポインタ876を先頭セクタの番号(本実施例では「0」)に設定する。ステップS460の処理が完了した後、モジュールコントローラ810は、再びステップS420に移行する。
以上の処理によって、複数のセクタは、セクタ番号の昇順(すなわち、アドレスの昇順)に、1つずつコピーされる。例えば、図7(B)の例では、第1セクタS1がコピーされている。このコピーは、図5のステップS460でセクタポインタ876が「1」に設定された後、モジュールコントローラ810が、再びステップS440に移行することによって、実行される。
なお、後述するように、本実施例では、一部のセクタのコピーが後回しにされる場合がある(図7(C)−(F))。この場合も、ステップS460(セクタポインタ876のインクリメント)と、ステップS440(カレントセクタのコピー)とが繰り返されることによって、全てのセクタがコピーされる。
図8は、カレントセクタのデータコピー処理(図5:S440)の手順を示すフローチャートである。最初のステップS500では、モジュールコントローラ810(図1)は、カレントセクタのデータコピーを開始する。具体的には、モジュールコントローラ810は、カレントセクタ番号CSNとコピー開始指示とを、データコピー制御部840に供給する。データコピー制御部840は、上述の各実施例と同様に、指示に従って、フラッシュ制御部820とライト制御部850とに、カレントセクタのコピーを実行させる。データコピー制御部840は、コピーすべきアドレス範囲を、カレントセクタ番号CSNとメモリ872のコピー状態テーブル874とから特定する。
1つのセクタ内の複数のアドレスのコピー順としては、任意の順を採用可能である。ただし、本実施例では、アドレスの昇順が採用される。その結果、モジュールコントローラ810は、コピー中のセクタに含まれる複数のアドレスの内で、現行アドレスよりも前のアドレスをコピー済みアドレスと識別し、現行アドレスよりも後のアドレスをコピーされていないアドレスと識別することができる。
次のステップS510は、図2のステップS220と同じである。リード要求を受信していない場合には、モジュールコントローラ810は、ステップS530に移行する。リード要求を受信した場合には、モジュールコントローラ810は、ステップS520で、要求データの供給処理を実行する(詳細は後述)。ステップS520が終了した後には、モジュールコントローラ810は、ステップS530に移行する。
ステップS530では、モジュールコントローラ810は、カレントセクタのデータコピーが完了したか否かを判断する。コピーが完了したか否かを示す情報は、データコピー制御部840からモジュールコントローラ810に供給される。コピーが完了していない場合には、モジュールコントローラ810は、再びステップS510に移行する。コピーが完了した場合には、カレントセクタのデータコピー処理が終了する。
図9は、要求データ供給処理(図8:S520)の手順を示すフローチャートである。図3に示す手順との差違は、ステップS320の代わりにステップS362〜S368が設けられている点だけである。他のステップ(S300、S310、S330、S340)は、図3の例と同様に実行される。なお、ステップS310では、判断のために、現行アドレスに加えて、コピー状態テーブル874とセクタポインタ876とが参照される(図6(A)(B))。要求アドレスを含むセクタ(すなわち、要求データを含むセクタ。以下「要求セクタ」と呼ぶ)のフラグFが「1」に設定されている場合には、要求データがコピー済みであると判断される。要求セクタがカレントセクタである場合には、現行アドレスと要求アドレスとの比較によって判断が実行される。他の場合には、要求データがコピーされていないと判断される。
ステップS362では、モジュールコントローラ810(図1)は、コピー中断指示をデータコピー制御部840に供給する。この指示に応答して、データコピー制御部840は、カレントセクタのコピーを中断する。図7(C)は、第1セクタS1のコピー中にリード要求が受信された状態を示している。要求データRDは第3セクタS3に含まれており、未だコピーされていない。この場合には、ステップS362で、カレントセクタ(第1セクタS1)のコピーが中断される。
次のステップS364では、モジュールコントローラ810は、セクタポインタ876を、要求セクタの番号に変更する。そして、次のステップ366では、モジュールコントローラ810は、新しいカレントセクタのコピーを開始する。図7(C)に示す例では、要求データRDは第3セクタS3内にある。その結果、図7(D)に示すように、ステップS364でセクタポインタ876が「3」に設定され、そして、ステップS366で第3セクタS3のコピーが開始される。
なお、ステップS364において、モジュールコントローラ810は、要求セクタを、コピー状態テーブル874(図6(A))と要求アドレスとから特定する。コピー管理部870は、モジュールコントローラ810から受信した新たなセクタ番号と更新指示とに基づいて、セクタポインタ876を更新する。また、ステップS366は、図8のステップS500と同様に実行される。
次のステップS368では、モジュールコントローラ810は、要求データのコピーが完了したか否かを判断する。コピーが完了したか否かを示す情報は、データコピー制御部840からモジュールコントローラ810に供給される。モジュールコントローラ810はコピーの完了を待ち、コピー完了に応答してステップS330に移行する。その後、ステップS330、S340が実行されることによって、要求データがCPU700に供給される。そして、要求データの供給処理が終了する。
以後、図5、図8、図9の手順に従って、コピーデータ供給処理のコピーステージが実行される。例えば、図7(D)の例で第3セクタS3のコピーが完了した後には、図5のステップS460で、セクタポインタ876がインクリメントされる。これにより、セクタポインタ876が「4」に設定される(図7(E))。そして、図5のステップS440で第4セクタS4がコピーされる。第4セクタS4のコピーが完了した後には、図5のステップS460で、セクタポインタ876がインクリメントされる。ただし、図7(E)の例では、インクリメント前のカレントセクタ(S4)が最終セクタであるので、セクタポインタ876は「0」に設定される。また、第0セクタS0のコピーは既に完了しているので、ステップS440、S450は実行されずに、再びステップS460が実行される。これにより、セクタポインタ876は「1」に設定される。そして、第1セクタS1のコピーが実行される(図7(F))。以後、アドレス順に各セクタがコピーされる。
このように、第3実施例では、要求データがSRAM610にコピーされておらず、かつ、リード要求の受信時に要求セクタとは異なる他セクタのコピーが実行中である場合には、そのリード要求に応答して要求セクタのデータの全体がSRAM610にコピーされる。その結果、CPU700によって連続な複数のアドレス(フラッシュメモリ600でのアドレス)がシーケンシャルにリードされる場合に、素早くデータを供給することができる。例えば、新たなリード要求によって前回のリード要求におけるアドレスの次のアドレスがリードされる場合に、前回のリード要求に応答して新たな要求データをSRAM610に予めコピーしておくことが可能となる。このような連続な複数のアドレスのシーケンシャルなリードは、しばしば、実行される。例えば、プログラムをメモリからリードする場合や、画像データのような大きなサイズのデータをメモリからリードする場合がある。プログラムをリードする場合には、ジャンプ命令(分岐命令)から次のジャンプ命令までの間のデータ(プログラム)はシーケンシャルにリードされる。従って、本実施例のように、CPU700がメモリモジュール400からプログラムをリードする場合には、プログラムの供給が素早く実行される。
また、本実施例では、要求セクタのコピーに続けて次のセクタからアドレス順にセクタがコピーされるので、複数のセクタに亘る連続な複数のアドレス(フラッシュメモリ600でのアドレス)がシーケンシャルにリードされる場合に、素早くデータを供給することができる。
D.変形例:
なお、上記各実施例における構成要素の中の、独立クレームでクレームされた要素以外の要素は、付加的な要素であり、適宜省略可能である。また、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
変形例1:
第3実施例における要求データの供給処理としては、図9に示す処理に限らず種々の処理を採用可能である。例えば、要求セクタのコピーが完了したことに応答して要求データを供給してもよい。また、ステップS362でカレントセクタ(他セクタ)のコピーを中断する代わりに、他セクタのコピー完了を待ち、他セクタのコピー完了に続けて要求セクタのコピーを開始してもよい。この場合も、要求セクタのデータのコピーの開始が過剰に遅れることが抑制されるので、要求データを素早く供給することができる。
また、モジュールコントローラ810は、リード要求の受信時における他セクタのコピーの進行状況に基づいて、他セクタのコピーを中断するか否かを判断しても良い。例えば、他セクタの複数のアドレスの内のコピー済みアドレスの総数が所定数を超えている場合に他セクタのコピーを続行し、コピー済みアドレスの総数が所定数以下である場合に他セクタのコピーを中断してもよい。ここで、所定数としては、任意の値を採用可能である。例えば、他セクタのアドレス総数の半分の値を採用してもよい。
また、ステップS310において、要求データがコピーされておらず、かつ、要求セクタがカレントセクタであると判断された場合には、ステップS362〜S366を実行せずに、ステップS368で要求データのコピーを待ってもよい。
また、ステップS310における判断方法としては、種々の方法を採用可能である。例えば、現行アドレスを利用せずに、コピー状態テーブル874(図6(A))のみを参照して判断が実行されてもよい。この場合には、要求セクタのフラグFが「0」である場合には、要求データがコピーされていないと判断される。
変形例2:
上述の各実施例において、アドレス順としては、アドレスの昇順に限らず、アドレスの降順を採用してもよい。この場合には、上述の各実施例において、「次のアドレス」として「1つだけデクリメントされたアドレス」を採用すればよい。また、「次のセクタ」としては、アドレスの降順にセクタを並べたときの次のセクタ(アドレスが小さいセクタ)を採用すればよい。
変形例3:
図5に示すコピーデータ供給処理において、複数のセクタのコピー順としては、アドレス順に限らず、任意の順を採用可能である。例えば、予め設定された不連続な順番にセクタがコピーされてもよい。この場合には、図5のステップS460において、セクタポインタ876をインクリメントする代わりに、予め設定された順番における次のセクタの番号にセクタポインタ876を設定すればよい。
変形例4:
図5、図8、図9に示す第3実施例において、要求セクタのコピー完了後にコピーされるセクタの順番としては、要求セクタの次のセクタから始まる順番に限らず、任意の順番を採用可能である。例えば、要求セクタのコピー完了の時点でコピー未完了の複数のセクタを、元のコピー順にコピーしてもよい。例えば、図7(D)に示す例では、要求セクタS3のコピーが完了した時点では、3つのセクタS1、S2、S4のコピーが完了していない。そこで、これら3つのセクタを、元のコピー順(アドレス順。すなわち、S1、S2、S4の順)にコピーしても良い。
変形例5:
上述の各実施例において、要求アドレスと、フラッシュメモリ600でのアドレスとの第1の対応関係は、任意に設定可能である。例えば、要求アドレスがフラッシュメモリ600でのアドレスと異なっていても良い。同様に、フラッシュメモリ600でのアドレスと、SRAM610でのアドレスとの第2の対応関係も、任意に設定可能である。また、いずれの場合も、要求アドレスとSRAM610でのアドレスとの第3の対応関係は、上述の第1対応関係と第2対応関係との両方に適合するように予め設定される。
いずれの場合も、モジュールコントローラ810は、予め設定された第1、第2、第3の対応関係に従って、コピー元アドレスとコピー先アドレスとの対応関係を示す情報をデータコピー制御部840に供給すればよい(例えば、図2のステップS210)。また、モジュールコントローラ810は、これらの対応関係に従って、要求アドレスに対応付けられたリード対象アドレスを、フラッシュ制御部820とリード制御部860とに供給すればよい(例えば、図3のステップS330、図4のステップS352)。
また、上述の各実施例において、CPU700のデータ長がフラッシュメモリ600のデータ長と異なっていても良い(ここで、データ長とは、1つのアドレスに対応付けられたデータのサイズを意味している)。仮にCPU700のデータ長が、フラッシュメモリ600のデータ長の2倍である場合には、第1対応関係において、1つの要求アドレスに2つのメモリアドレスが対応付けられる。また、フラッシュメモリ600のデータ長がSRAM610のデータ長と異なっていても良い。この場合も、同様に第2対応関係を設定すればよい。また、CPU700のデータ長がSRAM610のデータ長と異なっていても良い。この場合も、同様に第3対応関係を設定すればよい。
いずれの場合も、要求アドレスをシーケンシャルに辿ったときに、その要求アドレスに対応付けられたフラッシュメモリ600のメモリアドレスもシーケンシャルに辿られるように、第1対応関係を設定することが好ましい。これにより、連続な複数の要求アドレスには、同じアドレス順で連続な複数のメモリアドレスが対応付けられる。その結果、第3実施例(図5、図8、図9)では、リード要求に応答してフラッシュメモリ600の要求セクタをSRAM610にコピーすることによって、CPU700によって連続な複数のアドレス(要求アドレス)がシーケンシャルにリードされる場合に、素早くデータを供給することができる。また、要求セクタのコピーに続けて次のセクタからアドレス順にセクタをコピーすることによって、複数のセクタに亘る連続な複数のアドレス(要求アドレス)がシーケンシャルにリードされる場合に、素早くデータを供給することができる。
変形例6:
上記各実施例において、不揮発性メモリとしては、フラッシュメモリ600に限らず種々のメモリ(例えば、データが複数の信号線によって読み出されるパラレルフラッシュメモリや、EEPROM等の不揮発性半導体メモリ)を採用可能である。また、揮発性メモリとしては、SRAM610に限らずリードとライトとが可能な種々のメモリ(例えば、DRAM(Dynamic RAM)やSDRAM(Synchronous DRAM)等の揮発性半導体メモリ)を採用可能である。いずれの場合も、不揮発性メモリの読み出し速度は、揮発性メモリの読み出し速度と比べて遅い場合が多いので、上述の各実施例のメモリコントローラを利用すれば、メモリに格納されたデータを素早く利用することができる。また、データリードの手順とデータライトの手順とのそれぞれとしては、メモリの設計に適合する任意の手順を採用可能である。
変形例7:
上記各実施例において、フラッシュメモリ600の内の準備データを格納する部分が、全容量の一部であってもよい。ここで、準備データとは、外部の要求元装置からのリード要求に応答して供給され得るデータの全体を意味している。このような場合には、フラッシュメモリ600の全アドレスのコピーの完了の代わりに、準備データのコピーが完了したことを、データコピーの完了の条件として採用可能である。
変形例8:
上述の各実施例において、不揮発性メモリとしては、リードコマンドと対象アドレスとを受信した後に、クロック信号に同期して対象アドレスからシーケンシャルにデータを出力する機能を有するメモリを採用可能である。例えば、上述のフラッシュメモリ600は、このような機能を有している。このような不揮発性メモリを採用すれば、不揮発性メモリにリードコマンドと対象アドレスとを繰り返し供給すること無く、クロック信号の供給を継続することによって、不揮発性メモリから複数のアドレスのデータをリードすることができる。その結果、不揮発性メモリからのデータリードに過剰な時間がかかることを抑制できる。このような処理を不揮発性メモリから揮発性メモリにデータをコピーする場合に実行すれば、データコピーに過剰な時間がかかることを抑制できる。
ここで、クロック信号の供給を停止すれば、不揮発性メモリからのデータ出力も停止する。その後、クロック信号の供給を再開すれば、不揮発性メモリからのデータ出力も再開される。そこで、フラッシュ制御部820は、データを受信できないことを示す所定の停止条件が成立する場合にはクロック信号の供給を停止し、データを受信できることを示す所定の再開条件が成立したことに応答してクロック信号の供給を再開することが好ましい。このように、リードコマンドと対象アドレスとを不揮発性メモリに供給せずにクロック信号の供給停止と供給再開とを繰り返し実行することによって、フラッシュ制御部820は、不揮発性メモリからのデータリードに過剰な時間がかかることを抑制しつつ、適切にデータをリードすることができる。なお、停止条件としては、種々の条件を採用可能である。例えば、フラッシュ制御部820の図示しないデータ受信バッファが空いていないことを採用してもよい。また、再開条件としては、種々の条件を採用可能である。例えば、上述のデータ受信バッファが空いていることを採用してもよい。
変形例9:
上述の各実施例において、データ処理装置の構成としては、図1に示す構成に限らず、種々の構成を採用可能である。例えば、CPU700とメモリコントローラ800とがバス500を介さずに直接に接続されてもよい。
また、コピーデータ供給処理を実行するコピーデータ供給処理モジュールの構成としては、図1に示す構成に限らず、種々の構成を採用可能である。例えば、複数のモジュールの全体が、「コピーデータ供給処理モジュール」として機能してもよい。また、メモリコントローラ800の構成としても、図1に示す構成に限らず、種々の構成を採用可能である。例えば、データコピー制御部840を省略し、モジュールコントローラ810が直接にコピーを制御してもよい。
また、メモリコントローラ800に対してリード要求を送信する外部装置(外部の要求元装置)としては、CPU700に限らず、任意の装置を採用可能である。例えば、予め決定された手順に従ってデータ処理を実行する専用のデータ処理回路を採用してもよい。
変形例10:
上述の各実施例において、不揮発性メモリに格納するデータとしては、プログラムに限らず種々のデータを採用可能である。例えば、印刷データのサンプルや、種々の画像データを採用してもよい。
また、上述の各実施例のメモリモジュール400を適用する装置としては、任意の装置を採用可能である。例えば、プリンタにおける入力画像データから印刷データを生成するデータ処理装置を採用してもよい。また、プロジェクタにおける入力画像データから表示用画像データを生成するデータ処理装置を採用してもよい。また、デジタルカメラにおける画像データを生成するデータ処理装置を採用してもよい。また、汎用のコンピュータを採用してもよい。
変形例11:
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。例えば、図1のモジュールコントローラ810の機能を、CPUとメモリとを有するコンピュータにプログラムを実行させることによって実現してもよい。
また、本発明の機能の一部または全部がソフトウェアで実現される場合には、そのソフトウェア(コンピュータプログラム)は、コンピュータ読み取り可能な記録媒体に格納された形で提供することができる。この発明において、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスクやCD−ROMのような携帯型の記録媒体に限らず、各種のRAMやROM等のコンピュータ内の内部記憶装置や、ハードディスク等のコンピュータに固定されている外部記憶装置も含んでいる。
本発明の一実施例としてのデータ処理装置を示す概略図である。 第1実施例におけるコピーデータ供給処理のコピーステージの手順を示すフローチャートである。 第1実施例における要求データ供給処理(図2:S230)の手順を示すフローチャートである。 要求データ供給処理(図2:S230)の別の例を示すフローチャートである。 コピーデータ供給処理のコピーステージの別の例を示すフローチャートである。 コピー状態テーブル874とセクタポインタ876とを示す概略図である。 第3実施例におけるデータコピーの様子を示す概略図である。 カレントセクタのデータコピー処理(図5:S440)の手順を示すフローチャートである。 要求データ供給処理(図8:S520)の手順を示すフローチャートである。
符号の説明
400…メモリモジュール
500…バス
600…シリアルフラッシュメモリ
610…SRAM
700…CPU(中央処理装置)
800…メモリコントローラ
810…モジュールコントローラ
820…シリアルフラッシュ制御部(フラッシュ制御部)
830…メモリアービタ
840…データコピー制御部
850…ライト制御部
860…リード制御部
870…コピー管理部
872…メモリ
874…コピー状態テーブル
876…セクタポインタ
910…データ処理装置

Claims (5)

  1. 読み出し速度が比較的低速な不揮発性メモリと、読み出し速度が比較的高速な揮発性メモリとを含むメモリセットを制御するメモリコントローラであって、
    前記不揮発性メモリ内のデータを前記揮発性メモリにコピーするとともに、前記不揮発性メモリに格納されていたデータに対する外部の要求元装置からのリード要求に応答して前記揮発性メモリにコピーされたデータを読み出して前記要求元装置に供給するコピーデータ供給処理を実行するコピーデータ供給処理モジュールを備え、
    前記コピーデータ供給処理は、
    前記不揮発性メモリから前記揮発性メモリへのデータコピーを開始する処理と、
    前記データコピーが完了したか否かに拘わらずに前記要求元装置からの前記リード要求を受信する処理と、
    前記リード要求で要求されている要求データが既に前記揮発性メモリにコピーされている第1の場合に、前記データコピーの完了の前に前記不揮発性メモリの代わりに前記揮発性メモリから前記要求データを読み出して前記要求元装置へ供給する処理と、
    前記要求データが未だ前記揮発性メモリにコピーされていない第2の場合に、前記要求データを前記不揮発性メモリからリードする応答リードを実行し、前記データコピーの完了の前に前記要求データを前記要求元装置に供給する処理と、
    を含む、メモリコントローラ。
  2. 請求項1に記載のメモリコントローラであって、
    前記コピーデータ供給処理は、さらに、前記不揮発性メモリのアドレスの範囲を分割して得られる複数のブロックのそれぞれのデータのコピーを、所定の規則に従ったブロック順で実行する処理を含み、
    前記応答リードは、前記リード要求の受信時に前記要求データが属するブロックである要求ブロックとは異なる他ブロックのデータのコピーが実行中である場合には、前記ブロック順に拘わらずに前記リード要求に応答して前記要求ブロックのデータの全体を前記不揮発性メモリからリードする処理である要求ブロック処理を含み、
    前記コピーデータ供給処理は、さらに、前記要求ブロック処理によってリードされたデータを前記揮発性メモリに格納することによって前記要求ブロックのデータのコピーを完了する処理を含む、
    メモリコントローラ。
  3. 請求項2に記載のメモリコントローラであって、
    前記所定の規則に従ったブロック順は、前記不揮発性メモリのアドレスの順番に辿られるブロック順であり、
    前記コピーデータ供給処理は、さらに、前記要求ブロック処理の完了の後に前記要求ブロックの次のブロックから前記ブロック順にデータをコピーする処理を含む、
    メモリコントローラ。
  4. 請求項2または請求項3に記載のメモリコントローラであって、
    前記要求ブロック処理は、
    (1)前記他ブロックのデータのコピーを中断して前記要求ブロックのデータのコピーを開始する処理と、
    (2)前記他ブロックのデータのコピーの完了に続けて前記要求ブロックのデータのコピーを開始する処理と、
    の少なくとも一方を含む、メモリコントローラ。
  5. 読み出し速度が比較的低速な不揮発性メモリと、読み出し速度が比較的高速な揮発性メモリとを含むメモリセットを制御する方法であって、
    前記不揮発性メモリ内のデータを前記揮発性メモリにコピーするとともに、前記不揮発性メモリに格納されていたデータに対する外部の要求元装置からのリード要求に応答して前記揮発性メモリにコピーされたデータを読み出して前記要求元装置に供給するコピーデータ供給処理を実行する工程を備え、
    前記コピーデータ供給処理は、
    前記不揮発性メモリから前記揮発性メモリへのデータコピーを開始する処理と、
    前記データコピーが完了したか否かに拘わらずに前記要求元装置からの前記リード要求を受信する処理と、
    前記リード要求で要求されている要求データが既に前記揮発性メモリにコピーされている第1の場合に、前記データコピーの完了の前に前記不揮発性メモリの代わりに前記揮発性メモリから前記要求データを読み出して前記要求元装置へ供給する処理と、
    前記要求データが未だ前記揮発性メモリにコピーされていない第2の場合に、前記要求データを前記不揮発性メモリからリードする応答リードを実行し、前記データコピーの完了の前に前記要求データを前記要求元装置に供給する処理と、
    を含む、方法。
JP2007059695A 2007-03-09 2007-03-09 メモリを制御するメモリコントローラ、メモリモジュール、メモリの制御方法 Pending JP2008225608A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007059695A JP2008225608A (ja) 2007-03-09 2007-03-09 メモリを制御するメモリコントローラ、メモリモジュール、メモリの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007059695A JP2008225608A (ja) 2007-03-09 2007-03-09 メモリを制御するメモリコントローラ、メモリモジュール、メモリの制御方法

Publications (1)

Publication Number Publication Date
JP2008225608A true JP2008225608A (ja) 2008-09-25

Family

ID=39844195

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007059695A Pending JP2008225608A (ja) 2007-03-09 2007-03-09 メモリを制御するメモリコントローラ、メモリモジュール、メモリの制御方法

Country Status (1)

Country Link
JP (1) JP2008225608A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016509325A (ja) * 2013-03-14 2016-03-24 マイクロン テクノロジー, インク. トレーニング、データ再構築および/またはシャドウィングを含むメモリシステムおよび方法
US9575759B2 (en) 2014-04-08 2017-02-21 Samsung Electronics Co., Ltd. Memory system and electronic device including memory system
JP2017102943A (ja) * 2017-01-10 2017-06-08 マイクロン テクノロジー, インク. トレーニング、データ再構築および/またはシャドウィングを含むメモリシステムおよび方法
WO2020158059A1 (ja) * 2019-01-31 2020-08-06 ソニーセミコンダクタソリューションズ株式会社 メモリ制御装置、メモリモジュールおよび情報処理システム

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016509325A (ja) * 2013-03-14 2016-03-24 マイクロン テクノロジー, インク. トレーニング、データ再構築および/またはシャドウィングを含むメモリシステムおよび方法
US9645919B2 (en) 2013-03-14 2017-05-09 Micron Technology, Inc. Memory systems and methods including training, data organizing, and/or shadowing
US10664171B2 (en) 2013-03-14 2020-05-26 Micron Technology, Inc. Memory systems and methods including training, data organizing, and/or shadowing
US11487433B2 (en) 2013-03-14 2022-11-01 Micron Technology, Inc. Memory systems and methods including training, data organizing, and/or shadowing
US9575759B2 (en) 2014-04-08 2017-02-21 Samsung Electronics Co., Ltd. Memory system and electronic device including memory system
JP2017102943A (ja) * 2017-01-10 2017-06-08 マイクロン テクノロジー, インク. トレーニング、データ再構築および/またはシャドウィングを含むメモリシステムおよび方法
WO2020158059A1 (ja) * 2019-01-31 2020-08-06 ソニーセミコンダクタソリューションズ株式会社 メモリ制御装置、メモリモジュールおよび情報処理システム

Similar Documents

Publication Publication Date Title
KR101562973B1 (ko) 메모리 장치 및 메모리 장치의 동작 방법
TWI407300B (zh) 電源管理控制器與方法
JP2012150815A (ja) 複数の回路における性能パラメータの整合
JP5610566B2 (ja) 半導体装置及びデータ処理システム
JP2007219581A (ja) メモリコントローラおよびこれを搭載する電子機器
JP2011095916A (ja) 電子機器
JP2008009817A (ja) 半導体装置及びデータ転送方法
JP4325685B2 (ja) メモリを制御するメモリコントローラ、メモリモジュール、メモリの制御方法、および、コンピュータ。
JP3665030B2 (ja) バス制御方法及び情報処理装置
JP2008225608A (ja) メモリを制御するメモリコントローラ、メモリモジュール、メモリの制御方法
JP4957283B2 (ja) メモリを制御するメモリコントローラ、メモリの制御方法。
JP6590718B2 (ja) 情報処理装置及びその制御方法
JP2007066118A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP2011003060A (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
JP2009258925A (ja) 計算機システムおよび計算機システムのメモリ管理方法
JP2015215684A (ja) 情報処理装置及び情報処理プログラム
JP2008009702A (ja) 演算処理システム
JP2005182538A (ja) データ転送装置
JP5966305B2 (ja) 印刷装置
JP6590662B2 (ja) メモリを制御する制御装置及びメモリの省電力制御方法
JP2011013836A (ja) メモリ配置管理装置及びマイクロプロセッサ
JP2006260092A (ja) 情報処理装置またはデータ転送制御装置
JP2004118300A (ja) Dmaコントローラ
JP2006331248A (ja) データ転送装置
JP6840470B2 (ja) 情報転送装置および情報転送方法