以下、本発明の実施例を図面を用いて詳細に説明する。実施例の各ブロックを構成する回路素子は、特に制限されないが、公知のCMOS(相補型MOSトランジスタ)等の集積回路技術によって、単結晶シリコンのような1個の半導体基板上に形成される。
<実施例1>
図1は本発明を適用した半導体集積回路装置の一例であるメモリモジュールの第一の実施例を示したものである。本メモリモジュールは3つのチップによって構成されている。以下に夫々のチップについて説明する。
まず、CHIP1(FLASH)は不揮発性メモリである。不揮発性メモリにはROM(リードオンリーメモリ)、EEPROM(エレクトリカリイレーサブルアンドプログラマブルROM)、フラッシュメモリ等を用いることが出来る。本実施例で用いられるCHIP1の不揮発性メモリの典型例は後述するように広義のNAND型フラッシュメモリであり典型的には約256Mb程度の大きな記憶容量を持ち読み出し時間(読み出し要求からデータが出力されるまでの時間)として約25μsから50μsと比較的遅い。これに対して、CHIP3として典型的に用いられるSDRAMは、256Mb程度の大きな記憶容量を持ち読み出し時間は約35ns程度である。即ち、CHIP3の読み出し時間は、CHIP1のそれと比べると少なくとも100倍以上短い。このことはNOR型フラッシュメモリの読み出し時間が約80nsでDRAMと同じオーダーの読み出し時間を持つことと対照的である。本願発明は、読み出し時間の大きな差を持つメモリの効率的なアクセスに対する解を提供する。なお、DRAMは内部構成やインターフェイスの違いからEDO、SDRAM、DDR-SDRAM等様々な種類がある。本メモリモジュールにはいずれのDRAMでも用いることが出来るが、本実施例ではクロック同期型DRAMの典型例であるSDRAMを例に説明する。CHIP2(CTL#LOGIC)にはCHIP1及びCHIP3の制御を行う制御回路が搭載されている。
このメモリモジュールにはアドレス(A0〜A15)とクロック信号(CLK)とコマンド信号(CKE, /CS, /RAS, /CAS, /WE, DQMU/DQML )が入力される。電源はS-VCC, S-VSS, L-VCC,L-VSS,F-VCC, F-VSS, D1-VCC, D1-VSSを通して供給され、データの入出力にはDQ0〜DQ15が用いられる。いわゆるSDRAMインターフェースによって、このメモリモジュールは動作する。
CHIP2はCHIP1,CHIP3の動作に必要となる信号を供給する。CHIP2はCHIP1に対してシリアルクロック(F−SC)、アドレスおよびFLASH用データ(I/O0 〜I/O7)、コマンド(F-CE, F-/OE, F-/WE, F-/RES, F-CDE, F-RDY/BUSY)を供給する。さらに、CHIP2はCHIP3に対してクロック(D1-CLK)、アドレス(D1-A0〜D1-A14)、コマンド(D1-CKE, D1-/CS, D1-/RAS, D1-/CAS, D1-/WE, D1-DQMU/DQML)、DRAM用データ(D1-DQ0〜D1-DQ15)を供給する。
ここで各コマンド信号について簡単に説明する。 CHIP2に入力されるCLKはクロック信号、CKEはクロックイネーブル信号、/CSはチップセレクト信号、/RASはロウアドレスストローブ信号、/CASはカラムアドレスストローブ信号、/WEはライトイネーブル信号、DQMU/DQMLは入出力マスク信号である。CHIP3に入力されるD1-CLKはクロック信号、D1-CKEはクロックイネーブル信号、D1-/CSはチップセレクト信号、D1-/RASはロウアドレスストローブ信号、D1-/CASはカラムアドレスストローブ信号、D1-/WEはライトイネーブル信号、D1-DQMU/DQMLは入出力マスク信号である。CHIP1に入力されるF-/CEはチップイネーブル信号,F-/OEはアウトプットイネーブル信号,F-/WEはライトイネーブル信号,F-SCはシリアルクロック信号,F-/RESはリセット信号,F-CDEはコマンドデータイネーブル信号,F-RDY/BUSYはレディ/ビジィ信号,I/O0〜I/O7は入出力信号でアドレスの入力や、データの入出力に使用する。
CHIP2の制御回路(CTL#LOGIC)は、外部から入力されたアドレスの値によって、CHIP2の制御回路(CTL#LOGIC)に設けられたコマンドレジスタか、CHIP3のDRAMか、CHIP1のFLASHかを選択する。制御回路(CTL#LOGIC)に設けられたコントロールレジスタに値を設定しておくことによって、外部からのアクセスがコマンドレジスタへのアクセスか、DRAMへのアクセスか、FLASHへのアクセスかを区別することができる。いずれのアクセスもSDRAMインターフェイス方式によって行われる。
DRAMは、ワーク領域とFLASHデータコピー領域とに分かれており、ワーク用はプログラム実行時のワークメモリとして、FLASHデータコピー領域はFLASHからのデータをコピーするためのメモリとして利用される。
制御回路(CTL#LOGIC)内のコマンドレジスタにアクセスしロード命令やストア命令コードを書きこむことで、FLASHのデータをDRAMのFLASHデータコピー領域にコピー(ロード)したり、DRAMのFLASHデータコピー領域のデータをFLASHに書き戻したり(ストア)できる。
アドレス信号(A0〜A15)からコマンドレジスタにアクセスするためのアドレスと、コマンド信号(CKE,/CS,/RAS,/CAS,/WE,DQMU/DQML)からライト命令、入出力データ信号(D1-DQ0〜D1-DQ15)から、ロード命令コード、続いてFLASHを選択するアドレスの範囲でロード開始アドレス、ロード終了アドレスが入力されると、コマンドレジスタにはロード命令コードとロード開始アドレスとロード終了アドレスが書きこまれる。その後、FLASHのロード開始アドレスからロード終了アドレスの間のデータが読み出され、DRAMのFLASHデータコピー領域へ転送される。これによって、FLASHのデータはDRAMへ保持されることになる。
コマンドレジスタにストア命令コードとFLASHを選択するアドレスで、ストア開始アドレスとストア終了アドレスが書きこまれると、FLASHのストア開始アドレスからストア終了アドレスの間アドレスへ、DRAMのFLASHデータコピー領域のデータが書きこまれる。
FLASHの、どのアドレス範囲がDRAMのFLASHデータコピー領域の、どのアドレス範囲に対応するかは、制御回路(CTL#LOGIC)に設けられたコントロールレジスタに値を設定しておくことによって決めることができる。
FLASHは、書き換えを繰り返すことによって、信頼性が低下し、書き込み時に書いたデータが、読み出し時には異なるデータとなったり、書き換え時にデータが書き込まれなかったりすることが稀にある。
制御回路(CTL#LOGIC)はFLASHからデータを読み出す時、CHIP2(CTL#LOGIC)は、読み出しデータのエラーを検出、訂正し、DRAMへ転送する。
FLASHへのデータの書き込み時には、CHIP2(CTL#LOGIC)は正しく書き込まれたかをチェックし、正しく書き込まれなかった場合は、現在のアドレスとは異なるアドレスに書きこみを行う。いわゆる、代替え処理を行う。不良アドレスと、不良アドレスに対して、どのアドレスに代替え処理を行ったというアドレス管理も行う。
DRAMのFLASHデータコピー領域へアクセスする場合は、アドレス信号(A0〜A15)から、FLASHを選択するアドレスと、コマンド信号(CKE,/CS,/RAS,/CAS,/WE,DQMU/DQML )から、読み出し命令を入力すると、CHIP2の制御回路は、DRAMへアクセスし、FLASHのアドレスに対応したDRAMのFLASHデータコピー領域内アドレスからデータを読み出す。これによって、DRAMに保持されているFLASH領域のデータの読み出し時間は、DRAMと同等となる。
DRAMのワーク領域へアクセスする場合は、DRAMのワーク領域のアクセスに必要なアドレス信号やコマンド信号類を入力する。制御回路(CTL#LOGIC)はDRAMのワーク領域へのアドレスを生成し、DRAMへのアクセスを行う。リードアクセスの場合にはDRAMからの読み出しデータはDRAM用データI/O(D1-DQ0〜D1-DQ15)を通り、データ入出力線(I/O0〜I/O15)へ出力される。ライトアクセスの場合は書込みデータはメモリモジュールのデータ入出力線(I/O0〜I/O15)から入力され、その後DRAM 用データI/O(D1-DQ0〜D1-DQ15)を通してDRAMへ入力される。
以上説明した様に、本発明によるメモリモジュールでは、SDRAMインターフェイス方式を踏襲しFLASHの一部のデータ、あるいは全データをコピーできる領域をDRAM内に確保し、あらかじめFLASHからDRAMへデータを転送しておくことで、DRAM と同程度の速度でFLASHのデータを読み出すことができる。FLASHへデータを書く際は、いったんデータをDRAMに書き込み、必要に応じてFLASHへ書き戻すことができるため、データの書き込み速度もDRAMと同等となる。メモリモジュールの内部で、FALSHからの読み出し時は、エラー検出と訂正を行い、書きこみ時は、書きこみが正しく行われなかった不良アドレスに対して代替処理を行うため、処理が高速にでき、かつ信頼性を保つことができる。さらに、大容量のDRAMを用いるため、FLASHのデータをコピーできる領域のほかに、大容量のワーク領域も確保でき、携帯電話の高機能化に対応できる。
図2はCHIP2(CTL#LOGIC)の構成図である。CHIP2(CTL#LOGIC)は、外部からSDRAMインターフェースで動作し、CHIP3(DRAM1)とCHIP1(FLASH)を制御する制御回路である。以下で各回路ブロックの動作を説明する。
初期化回路INTは、DRAMへの電源供給開始時にメモリマネージメントユニットMMU 内のコントロールレジスタの初期化とDRAMの初期化を行う。メモリマネージメントユニットMMUは内蔵するコントロールレジスタに設定された値に従って外部より入力されたアドレスを変換し、コマンドレジスタREGやDRAMのワーク領域およびFLASHデータコピー領域、FLASHを選択し、アクセスを行う。コントロールレジスタの値は、電源供給時に初期化回路INTにより初期設定され、その後、コマンドレジスタREGに、メモリマネージメントMMU変更命令が入力した時に変更される。データ更新アドレス管理回路CPBは、DRAMのFLASHデータコピー領域にデータが書き込まれた時のアドレス情報を保持する。コマンドレジスタREGには、ロード命令、ストア命令、メモリマネージメントユニットMMU変更命令などの命令コードや、ロード開始アドレス、ロード終了アドレス、ストア開始アドレス、ストア終了アドレスなどのアドレスが書き込まれ保持される。
データバッファR/WBUFFERはDRAMの読み出しデータ、書き込みデータあるいは、FALSHの読み出しデータ、書き込みデータを一時的に保持する。クロックバッファCLKBUFはクロック信号を、DRAMとフラッシュ制御回路FCONへ供給する。コマンドジェネレータCOM#GENはDRAMへのアクセスに必要なコマンドを生成する。アクセスコントローラA#CONTはCHIP2の全体制御とDRAMへアクセスを行うためのアドレスを生成する。パワーモジュール(PM)はDRAMへの電源供給及び電源の制御を行う。フラッシュ制御信号生成回路FGENはFLASHのデータの読み出し、書き込みの制御を行う。エラー訂正回路ECCはFLASHから読み出したデータにエラーがあるかどうかをチェックし、エラーがあれば訂正を行う。代替処理回路REPは、FLASHへの書き込みが正しく行われたかをチェックし、正しく行われなかった場合は、FLASHにあらかじめ用意されている代替用の新たなアドレスに対して書き込みを行う。
次に本メモリモジュールの動作を説明する。初期化回路INTは、DRAMへの電源供給開始時にメモリマネージメントユニットMMU内のコントロールレジスタの初期化とDRAMの初期化を行う。コマンドレジスタREGが選択されロード命令がコマンドレジスタREGに書き込まれると、FLASHからDRAMへデータ転送を開始する。最初に、フラッシュ制御信号発生回路FGENはFLASHに対して読み出し動作を行う。FLASH から読み出されたデータに誤りが無ければ、直接、データをデータバッファR/W BUFFERに転送し、誤りがあれば、エラー訂正回路ECCで訂正し、データバッファR/W BUFFERに転送する。その次に、コマンド発生回路COM#GENからライト命令とアクセスコントローラA#CONTからアドレス信号、データバッファR/W BUFFERよりFLASHから読み出したデータがDRAMに対して入力され、DRAMのFLASHデータコピー領域へ書き込みが行われる。
データ更新管理回路CPBは、DRAMのFLASHデータコピー領域にデータが書き込まれた時、書き込みアドレスの情報を保持する。マンドレジスタREGが選択されストア命令がコマンドレジスタに書き込まれると、DRAMのFLASHデータコピー領域内データからFLASHへデータ転送を開始する。
最初に、コマンド発生回路COM#GENからリード命令とアクセスコントローラA#CONT からアドレス信号をDRAMに送りデータを読み出す。DRAMから読み出されたデータはデータバッファR/W BUFFERを通ってフラッシュコントローラFCONに転送され、フラッシュ制御信号発生回路FGENはFLASHに対して書き込みを行う。アドレス代替処理回路REPは、書き込みが成功したかどうかをチェックし、成功すれば処理を終了する。書き込みが失敗した時には、FLASHにあらかじめ用意されている代替用の新たなアドレスに対して書き込みを行う。代替え処理を行った際は、不良アドレスと、不良アドレスに対して、どのアドレスに代替え処理を行ったかというアドレス情報を保持し管理する。データ更新管理回路CPBは保持しているDRAMのアドレス情報の中で、FLASHへの書き込みが終了したアドレス情報をクリアする。このように、データ更新管理回路CPBは常に、最新のデータが更新されたアドレスを管理することができる。
DRAMのワーク領域およびFLASHデータコピー領域が選択され、リード命令の場合、コマンド発生回路COM#GENからリード命令信号とアクセスコントローラA#CONTからアドレス信号がDRAMへ送られ、データが読み出される。
DRAMのワーク領域およびFLASHデータコピー領域が選択され、ライト命令の場合、コマンド発生回路COM#GENからライト命令信号とアドレス発生回路A#CONTからアドレス信号、データバッファR/W BUFFERからデータをDRAMへ送り、データが書き込まれる。
信号PSよりDRAMの電源遮断命令入力すると、データ更新管理回路CPBが保持しているアドレスに対応するDRAMのデータをFLASHへ転送する。
最初に、コマンド発生回路COM#GENからリード命令とアクセスコントローラA#CONTからアドレス信号をDRAMに送りデータを読み出す。DRAMから読み出されたデータはデータバッファR/W BUFFERを通ってフラッシュコントローラFCONに転送され、フラッシュ制御信号発生回路FGENによってFLASHで書き込まれる。
データ更新管理回路CPBは保持しているDRAMのアドレス情報の内FLASHへの書き込みが終了したアドレス情報をクリアしていき、保持したアドレスに対応したデータがすべてFLASHへ書き込まれるとデータ更新管理回路CPBのアドレス情報はすべてクリアされる。すべてのデータがDRAMからFALSHへ転送された後、DRAMの電源を遮断する。電源を遮断することによって、電力を削減できる。
一旦、DRAMの電源供給を停止した後に再度DRAMを動作させるためにはPS信号より電源投入命令を入力する。電源投入命令によってDRAMへの電源供給を再開し、初期化回路INTが初期化手順をアクセスコントローラ(A#CONT)に指示し初期化が実行される。
図3、4はメモリマネージメントユニットMMUによって変換されるメモリマップの一例を示したものである。これらのメモリマップはいずれもMMU内部のコントロールレジスタに設定された値にしたがって選択することが出来る。本実施例では特に限定されないが、不揮発メモリの記憶領域が256+8Mb、DRAMの記憶領域が256Mb 、コマンドレジスタが8kbあるメモリモジュールを例に代表的なメモリマップを説明する。
図3ではアドレス信号A0〜A15を通じて入力したロウアドレス(A0〜A15)とカラムアドレス(A0〜A9)を元に、メモリマネージメントユニットMMUがコマンドレジスタREG(8kb)、DRAMのWork領域(128Mbit)、DRAMのFLASHコピー領域(128Mbit)、FLASH(256Mbit+8Mb)にアドレスを変換したメモリマップを示す。特に制限はないがメモリマップのアドレス空間の下部から、コマンドレジスタREG、DRAM 、FLASHがマッピングされている。
CHIP2(CTL#LOGIC)内部に存在するコマンドレジスターREGには、外部より、ロード命令、ストア命令、MMUレジスタ変更命令、電源遮断命令などの命令コードやロード命令やストア命令時の開始アドレスや終了アドレスが書きこまれる。
DRAMは、Work領域(128Mbit)、FLASHコピー領域(128Mbit)に分かれている。Work領域はプログラム実行時のワークメモリとして利用され、FLASHコピー領域は、FLASH領域のデータの一部をコピーし、保持しておくために利用される。FLASH 領域のデータの一部をFLASHコピー領域へコピーするために、メモリマネジメントユニットMMUは内部レジスタに設定された値によって、FLASHの、どのアドレスのデータがFLASHコピー領域内の、どのアドレスに対応しているかを決める。図3では、FLASH領域内のA1領域(64Mbit)とC1領域(64Mbit)のデータは、それぞれDRAMのFLASHコピー領域内のA1領域(64Mbit)と1領域(64Mbit)にコピーできるアドレス対応である1例を示してある。メモリマネジメントユニットMMUの内部コントロールレジスタの値を変更することによって、FLASH領域内のB1領域(64Mbit)とD1領域(56Mbit)のデータを、それぞれDRAMのFLASHコピー領域へコピーできるアドレス対応に変更することもできる。MMU内部レジスタの値は、外部からMMUレジスタ変更命令コードとレジスタ値をコマンドレジスタに書きこむことによって変更することができる。FLASH(256M+8Mbit)は、特に限定はしないが、メインデータ領域MD-Area(A1,A2,B1,B2 ,C1,C2,D1,D2:255.75Mbit)と代替領域Rep-Area(E1、E2:8.25Mbit)とに分かれている。メインデータ領域MD-Areaは、さらにデータ領域(A1,B1,C1,D1)と冗長領域(A2,B2,C2,D2)に分かれている。データ領域はプログラムやデータを格納し、冗長領域には、エラーを検出し修正するために必要なECCパリティデータなどを格納する。FLASHのデータ領域内のデータがDRAMのFLASHコピー領域へ転送され、あるいは、DRAMのFLASHコピー領域のデータがFLASHのデータ領域に転送される。FLASHは、書き換えを繰り返すことによって、信頼性が低下し、書き込み時に書いたデータが、読み出し時には異なるデータとなったり、書き換え時にデータが書き込まれなかったりすることが稀にある。代替領域はこのように不良となった領域(Fail Area B、Fail Area C)のデータを、新たな領域へ置き換えるために設けられている。代替領域の大きさは、特に限定しないが、FLASHが保証する信頼性が確保できるように決めると良い。
FLASHからDRAMへのデータ転送を説明する。FALSHのA1領域のデータをDRAMのFLASHコピー領域A1領域に転送するため、コマンドレジスタにロード命令とFALSH領域内A1領域の転送開始アドレスSADと転送終了アドレスEADを書き込む。そうすると、制御回路(CTL#LOGIC)はFLASHのA1領域内の転送開始アドレスFSADと転送終了アドレスFEADによって示されたアドレス範囲のデータを読み出し、メモリマネージメントユニットMMUによって対応づけられたDRAMのFLASHコピー領域A1領域内のアドレスDSADとDEADのアドレス範囲に転送する。FLASHからデータを読み出す際、FLASHのデータ領域A1にあるデータと冗長領域A2にあるECCパリティデータを読み出し、エラー訂正回路ECCによって、エラーga有れば修正される。修正されたデータだけをDRAMへ転送する。
DRAMからFLASHへのデータ転送を説明する。FALSHのA1領域へDRAMのFLASHコピー領域A1のデータを転送するため、コマンドレジスタにストア命令とFALSHのA1領域の転送開始アドレスSADと転送終了アドレスEADを書き込む。そうすると、制御回路(CTL#LOGIC)は、メモリマネージメントユニットMMUによって対応づけられたDRAMのFLASHコピー領域A1領域内のアドレスDSADとDEADのアドレス範囲のデータを読み出し、FLASHのA1領域内の転送開始アドレスFSADと転送終了アドレスFEADのアドレス範囲データを書きこむ。FLASHへデータを書きこむ際、エラー訂正回路ECCはECCパリティデータを生成する。フラッシュ制御回路FGENによって、DRAMより読み出されたデータはFLASHのデータ領域A1へ、生成されたECCパリティデータは冗長領域A2へ書きこまれる。アドレス代替処理回路REPは、書き込みが成功したかどうかをチェックし、成功すれば処理を終了する。書き込みが失敗した時には、FLASHの代替領域内のアドレスを選択し、DRAMより読み出されたデータは代替領域内の代替データE1へ、生成されたECCパリティデータは代替冗長領域E2へ書きこまれる。
次にDRAMのFLASHコピー領域A1のデータの読み出しについて説明する。外部より、FLASHのA1領域内アドレスFAD0とリード命令を入力すると、MMUはアドレスFAD0に対応したDRAMのFLASHコピー領域A1のアドレスDAD0にアドレス変換する。これによって、DRAMが選択されDRAMにコピーされたFLASHのデータを読み出すことができる。つまり、FLASHのデータをDRAMと同じ速度で読み出すことができる。
次にDRAMのワーク領域のデータの読み出しについて説明する。外部より、ワーク領域内アドレスWAD0とリード命令を入力すると、MMUはアドレスWAD0をアドレス発生回路A#COUNTへ出力する。これによって、DRAMのワーク領域内アドレスWAD0のデータを読み出すことができる。
次にDRAMのFLASHコピー領域A1へのデータの書きこみについて説明する。外部より、FLASHのA領域内アドレスFAD0とライト命令、書きこみデータを入力すると、MMUはアドレスFAD0に対応したDRAMのFLASHコピー領域内のアドレスDAD0にアドレス変換する。これによって、DRAMが選択されFLASHコピー領域A1へデータが書き込まれる。FLASHのデータ領域A1に対応したDRAMのFLASHコピー領域A1の書きこむことで、FLASHのデータをSRAMと同じ速度で書きこむことができる。
次にDRAMのワーク領域のデータの読み出しについて説明する。外部より、ワーク領域内アドレスWAD0とリード命令を入力すると、MMUはアドレスWAD0をアクセスコントローラA#COUNTへ出力する。これによって、DRAMのワーク領域内アドレスWAD0のデータを読み出すことができる。
次にDRAMのワーク領域のデータの書き込みについて説明する。外部より、ワーク領域内アドレスWAD0とライト命令、入力データを入力すると、アクセスコントローラA#COUNTはアドレスWAD0をDRAMへ出力する。これによって、DRAMのワーク領域内アドレスWAD0のデータを書き込むことができる。
図4では、図3と比較して、DRAMのFLAShコピー領域を192Mbitとより大きな領域として確保する場合の、メモリマップを示す。アドレス信号A0〜A15を通じて入力したロウアドレス(A0〜A15)とカラムアドレス(A0〜A9)を元に、メモリマネージメントユニットMMUがREGISTER領域、DRAM内Work領域(64Mbit)、DRAM内FLASHコピー領域(192Mbit)、FLASH領域(256Mbit) にアドレスを変換する。
メモリマップは、MMU内部のコントロールレジスタの値を変更することで、システムにあわせて利用者側で自由に選択できる。MMU内部コントロールレジスタの値は、外部からMMUレジスタ変更命令コードと変更したいレジスタ値をコマンドレジスタに書きこむことによって変更することができる。
図5は、電源投入時に制御回路(CTL#LOGIC)が行う初期化動作を示している。T1の期間に電源が投入されると、T2のリセット期間で制御回路(CTL#LOGIC)の初期化を行う。メモリマネージメントユニットMMU内部のコントロールレジスタの値はT2の期間で初期設定される。T3の期間では、初期化回路INTがDRAMの初期化動作とFLASHの初期化動作を同時に行う。初期化動作が終了すると、メモリモジュールはアイドル状態となり、外部からのアクセスを受け付けることが可能となる。
図6は、FLASHからDRAMへのデータ転送のフローチャートを示す。メモリモジュールがアイドル状態で外部からの命令を待っている(STEP1)時、ロード命令およびFLASHを選択するアドレスが入力(STEP2)すると、FLASHから入力アドレスに対応したデータとECCパリティデータ読み出す(STEP3)。読み出したデータにエラーがあるかをチェック(STEP4)しエラーがあれば、エラーを訂正し(STEP5 )、バッファに書きこむ(STEP6)。エラーがなければ直接バッファR/W_BUFFERに書きこむ(STEP6)。バッファR/W_BUFFERに書きこまれたデータをDRAMへ書きこむ際、DRAMに対してリフレッシュ要求が発生しているかをチェックし(STEP7)、リフレッシュ要求があれば、リフレッシュ動作を行い(STEP8)、その後、データをDRAMに書きこむ(STEP9)。リフレッシュ要求がなければ、すぐにデータをDRAMに書きこむ(STEP9)。
図7は、DRAMからFLASHからへのデータ転送のフローチャートを示す。メモリモジュールがアイドル状態で外部からの命令を待っている(STEP1)時、ストア命令とFLASHを選択するアドレスが入力(STEP2)すると、DRAMからデータの読み出しを開始する。その際、DRAMに対してリフレッシュ要求が発生しているかをチェックし(STEP3)、リフレッシュ要求があれば、リフレッシュ動作を行い(STEP4)、その後、DRAMからデータを読み出す(STEP5)。リフレッシュ要求がなければ、すぐにDRAMからデータを読み出す(STEP5)。読み出されたデータは、バッファR/W_BUFFERに転送され(STEP6)、FLASHへ書き込まれる(STEP7)。FLASHへの書き込み(STEP7)の際は、DRAMから読み出されたデータとエラー訂正回路ECC が生成したECCパリティデータをFLASHへ書きこむ。FLASHへの書き込みが成功したかをチェックし(STEP8)、成功すれば処理を終える(STEP10)。書き込みが失敗した場合は、代替用の他のアドレスを選択し(STEP9)、再度、FLASHへ書き込み(STEP7)、書き込み成功チェック(STEP11)を行い、成功すれば処理を終える(STEP10)。
図8(A)は、メモリモジュール内のDRAMからデータを読み出す時の外部からの命令フローを示す。図8(B)はメモリモジュール内DRAMへデータを書きこむ時の外部からの命令フローを示す。外部からSDRAMインターフェースで命令がメモリモジュールへ入力される。図8(A)を説明する。メモリモジュールがアイドル状態で外部からの命令を待っている(STEP1)。外部からACTIVE命令とロウアドレスが入力(STEP2)し、その後、READ命令とカラムアドレスが入力する(STEP3)と、ロウアドレスとカラムアドレスによって選択されたDRAMのメモリセルに保持されているデータが読み出され、入出力データ信号(DQ0−DQ15)を通ってメモリモジュールの外に出力される。PRICHARGE命令が入力する(STEP4)とメモリモジュールはアイドル状態となる。
図8(B)を説明する。メモリモジュールがアイドル状態で外部からの命令を待っている(STEP1)。外部からACTIVE命令とロウアドレスが入力(STEP2)し、その後、WRITE命令とカラムアドレスが入力する(STEP3)と、ロウアドレスとカラムアドレスによって選択されたDRAMのメモリセルに入出力データ信号(DQ0−DQ15)から入力されたデータが書きこまれる。PRICHARGE命令が入力する(STEP4)とメモリモジュールはアイドル状態となる。
図9は、データ更新管理回路CPBが行うアドレス保持とアドレスクリアのフローを示している。外部からのライト命令により、DRAMのFLASHデータコピー領域にデータが書きこまれる(STEP1)と書きこみアドレスに対応するフラグ信号をデータ更新管理回路CPB内のフラグレジスターに書きこむ(STEP2)。ストア命令とアドレスが外部より入力されると、DRAMのFLASHデータコピー領域からFLASHへのデータ転送が開始される(STEP3)。転送が完了したことをチェックし(STEP4)、完了していれば、フラグレジスター内の転送完了のアドレスのフラグをクリアする。
図10は、DRAMの電源遮断命令がメモリモジュールに入力した時の、メモリモジュールの動作フローを示す。電源遮断命令が、コマンドレジスタに入力すると、DRAM内FLASHコピー領域に書き込まれたデータの内、FLASHへ書き戻していないデータをすべてFLASHへ転送する。電源遮断命令が入力すると(STEP1)、DRAM内FLASHコピー領域に書き込まれたデータの内、まだFLASHへ書き戻していないデータのアドレスを検索するために、先ず、検索アドレスを検索開始アドレスに設定する(STEP2)。検索アドレスに対するデータ更新管理回路CPB内のフラグレジスター書きこまれたフラグが見つかれば(STEP3)、検索アドレスに対するDRAMのデータをFLASHに転送する。転送が完了すればこのフラグをクリアする(STEP5)。現在の検索アドレスが検索最終アドレスかどうかを判断し(STEP6)、検索最終アドレスではない場合は、現在の検索アドレスに1を加えたアドレスを次の検索アドレスとし(STEP7)、その後、STEP3、STEP4、STEP5、STEP6を繰り返す。現在の検索アドレスが検索最終アドレスである場合、処理を完了し、DRAMの電源を遮断する(STEP8)。
図11は、コマンドレジスタへロード命令が入力した際の、FLASHからDRAMへのデータ転送時のモジュールで行うSDRAMの動作を示す。メモリモジュールの外部よりSDRAMインターフェースで、アクテイブ命令AとロウアドレスRが入力し、その後、ライト命令WとカラムアドレスCと入出力信号IO0〜IO15からロード命令コードLdを入力する。続いて、入出力信号IO0〜IO15から、FLASH 領域内のデータでDRAMへコピーしたいデータの開始アドレスSaと終了アドレスEaを入力する。ロウアドレスRとカラムアドレスCによってコマンドレジスタが選択され、ロード命令コードLdと開始アドレスSaと終了アドレスEaがコマンドレジスタに書き込まれる。制御回路は開始アドレスSaと終了アドレスEaの範囲に対応したデータをFLASHから読み出しバッファに保持し、その後、SDRAM1へ書き込み動作をはじめる。DRAM1へ書きこむためのアドレスは、メモリマネージメントユニットMMUによってデータの開始アドレスSaはFLASHコピー領域のDRAMのロウアドレスR0とカラムアドレスC0に変換され、同様に終了アドレスEaはロウアドレスR0とカラムアドレスCFに変換される。
DRAM1へ書き込みは、D1-COMからアクテイブ命令AとD1-A0〜D1-A15からロウアドレスR0を入力し、その後、D1-COMからライト命令WとD1-A0〜D1-A15からカラムアドレスC0と入出力信号D1-IO0〜D1-IO15からデータを入力し書きこむ。書き込み動作はカラムアドレスとデータはカラムアドレスの最終アドレスCFまで続き、プリチャージ命令Pによって書き込みを終了する。DRAMへのデータの書き込みが開始してから終了するまでの間は、WAIT信号をHighに出力し、DRAMへデータを転送中であることを伝える。
図12は、コマンドレジスタへストア命令が入力した際の、SDRAMからFLASHへのデータ転送時のメモリモジュールで行うSDRAMの動作を示す。メモリモジュールの外部よりSDRAMインターフェースで、アクテイブ命令AとロウアドレスRが入力し、その後、ライト命令WとカラムアドレスCと入出力信号IO0〜IO15からストア命令コードStを入力する。続いて、入出力信号IO0〜IO15から、FLASH 領域内のデータでDRAMからFLASHへコピーバックしたいデータの開始アドレスSaと終了アドレスEaを入力する。ロウアドレスRとカラムアドレスCによってコマンドレジスタが選択され、ストア命令コードStと開始アドレスSaと終了アドレスEaがコマンドレジスタに書き込まれる。
制御回路は開始アドレスSaと終了アドレスEaの範囲に対応したデータをSDRAMから読み出し、FLASHへ書き込む。
SDRAM1から読み出すためのアドレスは、メモリマネージメントユニットMMUによってデータの開始アドレスSaをFLASHコピー領域のSDRAMのロウアドレスR0とカラムアドレスC0に変換され、同様に終了アドレスEaをロウアドレスR0とカラムアドレスCFに変換される。
SDRAM1からの読み出しは、D1-COMからアクテイブ命令AとD1-A0〜D1-A15からロウアドレスR0を入力し、その後、D1-COMからリード命令RとD1-A0〜D1-A15からカラムアドレスC0を入力し読み出す。読み出し動作はカラムアドレスの最終アドレスCFまで続き、プリチャージ命令Pによって読み出しを終了する。SDRAMからデータの読み出しを開始してから終了するまでの間は、WAIT信号をHighに出力し、SDRAMからデータを転送中であることを伝える。
図13 (a)は、SDRAMのワーク領域にアクセスした場合のSDRAMの動作を示し、図13(b)はSDRAMのFLASHコピー領域にアクセスした場合のSDRAMの動作を示している。
図13(a)の読み出し動作を説明する。メモリモジュールの外部よりSDRAMインターフェースで、アクテイブ命令AとロウアドレスR0を入力し、その後、リード命令RとカラムアドレスC0を入力する。制御回路はSDRAM1へアクテイブ命令AとロウアドレスR0を入力し、その後、リード命令RとカラムアドレスC0を入力すると、入出力信号D1-IO0〜D1-IO15からデータが出力され、入出力信号IO0〜IO15を通って外部へ出力される。
図13(a)の書き込み動作を説明する。メモリモジュールの外部よりSDRAMインターフェースで、アクテイブ命令AとロウアドレスR0を入力し、その後、ライト命令WとカラムアドレスC0と、入出力信号IO0 〜IO15からデータInを入力する。制御回路はSDRAM1へアクテイブ命令AとロウアドレスR0を入力し、その後、ライト命令WとカラムアドレスC0と、入出力信号D1-IO0 〜D1-IO15からデータInが入力されデータがSDRAMへ書き込まれる。
図13(b)の読み出し動作を説明する。メモリモジュールの外部よりSDRAMインターフェースで、アクテイブ命令AとロウアドレスRD、その後、リード命令RとカラムアドレスCDを入力する。メモリマネージメントユニットMMUによってFLASH領域のロウアドレスRDはFLASHコピー領域のロウアドレスRTに、同様にFLASH領域のカラムアドレスCDはFLASHコピー領域のカラムアドレスCTに変換される。SDRAM1へはアクテイブ命令AとロウアドレスRTがその後、リード命令RとカラムアドレスCTが入力され、入出力信号D1-IO0〜D1-IO15 からデータが出力され、入出力信号IO0〜IO15を通って外部へ出力される。
図13(b)の書き込み動作を説明する。メモリモジュールの外部よりSDRAMインターフェースで、アクテイブ命令AとロウアドレスRF、その後、ライト命令WとカラムアドレスCFと、入出力信号IO0〜IO15からデータInを入力する。メモリマネージメントユニットMMUによってFLASH領域のロウアドレスRFはFLASHコピー領域のロウアドレスRUに、同様にFLASH領域のカラムアドレスCFはFLASHコピー領域のカラムアドレスCUに変換される。SDRAM1へはアクテイブ命令AとロウアドレスRUがその後、ライト命令WとカラムアドレスCTが入力され、入出力信号D1-IO0〜D1-IO15からデータが入力され、SDRAMへ書きこまれる。
図14は、外部からコマンドレジスタへストア命令が書きこまれたことにより、DRAMからデータの読み出しが生じている時、外部より読み出し命令が入力した場合のSDRAMの動作を示す。ストア命令によりWAIT信号がHighになり、FLASHへ転送するためのデータOsがDRAM から読み出されている時、外部より、アクテイブ命令AとロウアドレスR0が入力されると、制御回路はプリチャージ命令PsをDRAM1へ発行し、DRAMからのFLASHへ転送するためのデータOsの読み出しを一次中断する。その後、DRAM1へアクテイブ命令AとロウアドレスR0を発行する。次に、外部よりリード命令RとカラムアドレスC0が入力されると、DRAM1へはリード命令Rとカラム命令C0が発行され、データOが読み出され、IO0〜IO15から出力される。外部からプリチャージ命令PとバンクアドレスB0が入力すると、DRAM1へプリチャージ命令PとバンクアドレスB0が発行され、データの読み出しが終了する。その後、制御回路は、DRAMからのFLASHへ転送するためのデータOsの読み出しを再開するため、アクティブ命令ASとロウアドレスR4、リード命令RsとカラムコマンドC4、リード命令RSとカラムコマンドC8をDRAM1へ発行する。
図15は本実施例におけるCHIP1(FLASH)の構成例である。コントロール信号バッファC-BUF、コマンドコントローラCTL、マルチプレクサMUX、データインプットバッファDI-BUF、インプットデータコントローラDC、セクタアドレスバッファSA-BUF、XデコーダX-DEC、メモリアレイMA(FLASH)、YアドレスカウンタY-CT、YデコーダY-DEC、Yゲート&センスアンプ回路YGATE/SENSE-AMP、データレジスタDATA-REG 、データアウトプットバッファDO-BUFより構成されている。CHIP1の動作は従来から一般的に使用されているAND型FLASHメモリと同様である。なお、AND型FLASHメモリは大容量フラッシュメモリの意味で広義のNAND型フラッシュメモリに分類されることもあり、本願ではNAND型フラッシュメモリといった場合にはAND型FLASHメモリも含まれるものとする。このCHIP1(FLASH)によって本実施例であるメモリモジュールが構成出来る。
図16は、CHIP1を構成できるAND型FLASHメモリからのデータ読み出し動作を示している。チップイネーブル信号F-/CEがLOW,コマンドデータイネーブル信号F-CDEがLOWになり、ライトイネーブル信号F-/WEが立ち上がった時、入出力信号I/O0〜I/O7より読み出し命令の命令コードRcodeを入力する。二番目と三番目のライトイネーブル信号F-/WEの立ち上がりで入出力信号I/O0〜I/O7よりセクタアドレスを入力する。入力したセクタアドレスに対応する16kbitのデータはメモリアレイMAからデータレジスタDATA-REGに転送される。データがメモリアレイMAからデータレジスタDATA-REGに転送されている間は、FLASHはビジーとなり、F-RDY/BUSYはレディ/ビジィ信号をLowにする。データ転送が終了したら、シリアルクロック信号F-SCの立ち上がりに同期し、データレジスタDATA−REG内のデータが8ビットづつ順に読み出され、入出力信号I/O0〜I/O7より出力される。
図17は本メモリモジュールのCHIP1(FLASH)を別のNAND型フラッシュメモリで構成した場合の例である。CHIP1に入力されるF-/CEはチップイネーブル信号,F-CLEはコマンドラッチイネーブル信号、F-ALEはアドレスラッチイネーブル信号、F-/WEはライトイネーブル信号,F-/REはリードイネーブル信号,F-/WPはライトプロテクト信号、F-R/Bはレディ/ビジィ信号,I/O0〜I/O7は入出力信号でアドレスの入力や、データの入出力に使用する。このようにNAND型フラッシュメモリによっても、本メモリモジュールは構成できる。
図18は、本メモリモジュールに用いられるNAND型メモリのブロック図を示す。動作ロジックコントローラL-CONT、制御回路CTL、入出力コントロール回路I/O-CONT、ステータスレジスタSTREG、アドレスレジスタADREG、コマンドレジスタCOMREG、レディ・ビジー回路R-B、高電圧発生回路VL-GEN、ローアドレスバッファROW-BUF、ローアドレスデコーダーROW-DEC、カラムバッファCOL−BUF、カラムデーコーダCOL-DEC、データレジスタDATA−REG、センスアンプSENSE-AMP、メモリアレイMAから構成されている。CHIP1の動作は従来から一般的に使用されているNAND型FLASHメモリと同様である。このCHIP1(FLASH)によって本実施例であるメモリモジュールが構成出来る。
図19は、CHIP1を構成するNAND型FLASHメモリからのデータ読み出し動作を示している。チップイネーブル信号F-/CEがLOW,コマンドラッチイネーブル信号F-CLEがHighになり、ライトイネーブル信号F-/WEが立ち上がった時、入出力信号I/O0〜I/O7より読み出し命令の命令コードRcodeを入力する。その後アドレスラッチイネーブルF-ALEがHighとなり2番目と3番目と4番目のライトイネーブル信号F-/WEの立ち上がりで入出力信号I/O0〜I/O7よりページアドレスを入力する。入力したページ4kbit(4224bit)アドレスに対応する4kbit(4224bit)のデータはメモリアレイMAからデータレジスタDATA-REGに転送される。データがメモリアレイMAからデータレジスタDATA-REGに転送されている間は、FLASHはビジーとなり、F-R/B はレディ/ビジィ信号をLowにする。データ転送が終了したら、リードイネーブル信号F-/REの立下りに同期し、データレジスタDATA−REG内のデータが8ビットづつ順に読み出され、入出力信号I/O0〜I/O7より出力される。
図20は本実施例におけるDRAMの構成例を示したものである。XアドレスバッファX-ADB,リフレッシュカウンタREF. COUNTER, XデコーダX-DEC,メモリアレイMA, YアドレスバッファY-ADB,YアドレスカウンタY-AD COUNTER, YデコーダY-DEC,センスアンプ回路&Yゲート(カラムスイッチ)SENS AMP.& I/O BUS, 入力データバッファ回路INPUT BUFFER, 出力データバッファ回路OUTPUT BUFFER,制御回路&タイミング発生回路CONTROL LOGIC & TGで構成されている。DRAMは従来より用いられている汎用SDRAMである。即ち4個の独立動作可能なメモリバンクを含み、それらに対するアドレス入力端子及びデータ入出力端子は共通化されバンク毎に時分割で利用される。このDRAMによって本実施例であるメモリモジュールが構成出来る。
以上説明した様に、本発明によるメモリモジュールでは、SDRAMインターフェイス方式を踏襲し、FLASHの一部のデータ、あるいは全データをコピーできる領域をDRAM内に確保し、あらかじめFLASHからDRAMへデータを転送しておくことで、DRAMと同程度の速度でFLASHのデータを読み出すことができる。FLASHへデータを書く際は、いったんデータをDRAMに書き込み、必要に応じてFLASHへ書き戻すことができるため、データの書き込み速度もDRAMと同等にできる。
メモリモジュールの内部で、FALSHからの読み出し時は、エラー検出と訂正を行い、書きこみ時は、書きこみが正しく行われなかった不良アドレスに対して代替処理を行うため、処理が高速にでき、かつ信頼性を保つことができる。
大容量のDRAMを用いるため、FLASHのデータをコピーできる領域のほかに、大容量のワーク領域も確保でき、携帯電話の高機能化に対応できる。
DRAMに確保するワーク領域とFLASHデータコピー領域の大きさや、管理単位を外部よりプログラムでき、システムにあわせて利用者側で自由に選択できる。
<実施例2>
図21は本発明のメモリモジュールにおける別の実施例を示す。本メモリモジュールは3つのチップによって構成されている。以下に夫々のチップについて説明する。まず、CHIP1(FLASH)は不揮発性メモリである。不揮発性メモリにはROM(リードオンリーメモリ)、EEPROM(エレクトリカリイレーサブルアンドプログラマブルROM)、フラッシュメモリ等を用いることが出来る。本実施例ではフラッシュメモリを例に説明する。CHIP2(SRAM+CTL#LOGIC)にはスタティックランダムアクセスメモリ(SRAM)と制御回路(CTL#LOGIC)が集積されている。制御回路はCHIP2に集積されたSRAMとCHIP3の制御を行う。CHIP3(DRAM1)はダイナミックランダムアクセスメモリ(DRAM)である。DRAMは内部構成やインターフェイスの違いからEDO、SDRAM 、DDR等様々な種類がある。本メモリモジュールにはいずれのDRAMでも用いることが出来るが、本実施例ではSDRAMを例に説明する。
このメモリモジュールには外部からアドレス(A0〜A24)とコマンド信号(S-/CE1, S-CE2, S-/OE, S-/WE, S-/LB, S-/UB, LS−EN, F-EN)が入力される。電源はS-VCC, S-VSS, LF-VCC, LF-VSS, LD-VCC, LD-VSSを通して供給され、データの入出力にはS-I/O0〜S-I/O15が用いられる。いわゆるSRAMインターフェース方式によって、このメモリモジュールは動作する。
CHIP2はCHIP1,CHIP3の動作に必要となる信号を供給する。CHIP2はCHIP1に対してシリアルクロック(F−SC)、アドレスおよびFLASH用データ(I/O0〜I/O7)、コマンド(F-CE, F-/OE, F-/WE, F-/RES, F-CDE, F-RDY/BUSY)、電源(F-VCC, F-VSS)を供給する。さらに、CHIP2はCHIP3に対してクロック(D1-CLK)、アドレス(D1-A0〜D1-A14)、コマンド(D1-CKE, D1-/CS, D1-/RAS, D1-/CAS, D1-/WE, D1-DQMU/DQML)、DRAM用データ(D1-DQ0〜D1-DQ15)、電源(D1-VCC, D1-VSS, D1-VCCQ, D1-VSSQ) を供給する。
ここで各コマンド信号について簡単に説明する。CHIP2 に入力されるS-/CE1, S-CE2はチップイネーブル信号、 S-/OEはアウトプットイネーブル信号、 S-/WEはライトイネーブル信号、 S-/LBはロアーバイト選択信号、S-/UBはアッパーバイト選択信号である。
CHIP1に入力されるF-/CEはチップイネーブル信号,F-/OEはアウトプットイネーブル信号,F-/WEはライトイネーブル信号,F-SCはシリアルクロック信号,F-/RESはリセット信号,F-CDEはコマンドデータイネーブル信号,F-RDY/BUSYはレディ/ビジィ信号,I/O0〜I/O7は入出力信号でアドレスの入力や,データの入出力に使用する。
CHIP2の制御回路(CTL#LOGIC)は、アドレスの値によって、制御回路内(CTL#LOGIC)内に設けられたコマンドレジスタREG、CHIP2内のSRAM、CHIP3のDRAM、CHIP1のFLASHのいずれかを選択する。
制御回路(CTL#LOGIC)に設けられたコントロールレジスタにあらかじめ値を設定しておくことによって、それぞれの領域を区別することができる。いずれへのアクセスもいわゆるSRAMインターフェイス方式によって行われる。
DRAMは、ワーク領域とFLASHデータコピー領域とに分かれており、ワーク用はプログラム実行時のワークメモリとして、FLASHデータコピー領域はFLASHからのデータをコピーするためのメモリとして利用される。
SRAMへアクセスする場合は、SRAMを選択するアドレス信号やコマンド信号類を制御回路(CTL#LOGIC)に入力するとCHIP2内部のSRAMへのアクセスを行う。リードアクセスの場合にはSRAMからデータを読み出し、メモリモジュールのデータ入出力線(I/O0〜I/O15)へ出力される。ライトアクセスの場合は書込みデータはメモリモジュールのデータ入出力線(I/O0〜I/O15)から入力され、SRAMに書きこまれる。
制御回路(CTL#LOGIC)内のコマンドレジスタREGにアクセスしロード命令やストア命令コードを書きこむことで、FLASHのデータをDRAM内のFLASHデータコピー領域にコピー(ロード)したり、DRAM内のFLASHデータコピー領域のデータをFLASHへ書き戻し(ストア)たりできる。
アドレス信号(A0〜A24)からコマンドレジスタREGにアクセスするためのアドレスと、コマンド信号(S-/CE1,S-CE2,S-/OE, S-/WE,S-LB,S-/UB)からライト命令、入出力データ信号(I/O0〜I/O15)から、ロード命令コード、続いてFLASH領域内のアドレスでロード開始アドレス、ロード終了アドレスが入力されると、コマンドレジスタにはロード命令コードとロード開始アドレスとロード終了アドレスが書きこまれる。そうすると、FLASHのロード開始アドレスからロード終了アドレスの間のデータが読み出され、DRAM内のFLASHデータコピー領域へ転送される。これによって、FLASHのデータはDRAMへ保持されることになる。
コマンドレジスタにストア命令コードとFLASHを選択するアドレスで、ストア開始アドレスとストア終了アドレスが書きこまれると、FLASHのストア開始アドレスからストア終了アドレスの間アドレスへDRAM内のFLASHデータコピー領域のデータが書き戻される。
FLASHの、どのアドレス範囲がDRAMのFLASHデータコピー領域の、どのアドレス範囲に対応するかは、制御回路(CTL#LOGIC)に設けられたコントロールレジスタに値を設定しておくことによって決めることができる。
FLASHは、書き換えを繰り返すことによって、信頼性が低下し、書き込み時に書いたデータが、読み出し時には異なるデータとなったり、書き換え時にデータが書き込まれなかったりすることが稀にある。
FLASHからデータを読み出す時、CHIP2(CTL#LOGIC)は、読み出しデータのエラーを検出、訂正し、DRAMへ転送する。FLASHへのデータの書き込み時は、CHIP2(CTL#LOGIC)は正しく書き込まれたかをチェックし、正しく書き込まれなかった場合は、現在のアドレスとは異なるアドレスに書きこみを行う。いわゆる、代替え処理を行う。不良アドレスと、不良アドレスに対して、どのアドレスに代替え処理を行ったというアドレス管理も行う。
DRAMのFLASHデータコピー領域へアクセスする場合は、アドレス信号(A0〜A24)から、FLASH領域のアドレスと、コマンド信号(S-/CE1, S-CE2, S-/OE, S-/WE,S-/LB, S-/UB)を入力する。コマンド信号がリード命令の場合、CHIP2の制御回路は、DRAMへアクセスし、FLASH領域内のアドレスに対応したDRAMのFLASHデータコピー領域内アドレスからデータを読み出す。ライト命令の場合は書込みデータはメモリモジュールのデータ入出力線(I/O0〜I/O15)から入力され、その後DRAM用データI/O(D1-DQ0〜D1-DQ15)を通してDRAMへ入力される。これによって、FLASHのデータの読み出しおよび書きこみ時間はSRAMと同等となる。
DRAMのワーク領域へアクセスする場合は、DRAM内ワーク領域へのアクセスに必要なアドレス信号やコマンド信号を入力する。制御回路(CTL#LOGIC)はDRAM内ワーク領域へのアドレスを生成し、DRAMへのアクセスを行う。リードアクセスの場合にはDRAMからの読み出しデータはDRAM用データI/O(D1-DQ0〜D1-DQ15)を通り、データ入出力線(I/O0〜I/O15)へ出力される。ライトアクセスの場合は書込みデータはメモリモジュールのデータ入出力線(I/O0〜I/O15)から入力され、その後DRAM 用データI/O(D1-DQ0〜D1-DQ15)を通してDRAMへ入力される。
CHIP3(DRAM)への電源はLD-VCC、LD-VSSから供給され、制御回路(CTL#LOGIC)を通してD1-VCC,D1-VSS,D1-VCCQ,D1-VSSQへ接続され、FLASHへの電源は、LF-VCC、LF-VSSから供給され、制御回路(CTL#LOGIC)を通してF-VCC,F-VSSへ接続される。DRAMおよびFLASHへの電源供給はコマンド信号PSによって制御され、必要に応じて切断することが出来る。
DRAMの電源遮断時には、制御回路(CTL#LOGIC)はDRAMからFLASHへ書き戻しが必要なデータのみを自動的に書き戻し、データの書き戻しが終了してからDRAMの電源を遮断する。
切断したDRAMの電源を再投入する場合にはDRAMの初期化を行う必要がある。DRAMおよびFLASHの初期化に必要な信号生成やタイミング制御は制御回路(CTL#LOGIC) が行う。
また、DRAMのリフレッシュを行う場合には制御回路(CTL#LOGIC)が定期的にバンクアクティブコマンドを投入して行うことが出来る。一般にDRAMのリフレッシュ特性は高温時に悪化するが、制御回路(CTL#LOGIC)に温度計を設けて高温時にバンクアクティブコマンドの投入間隔を狭めることによってDRAMをより広い温度範囲で使用することが出来る。
以上説明した実施例によれば、SRAMインターフェイス方式を踏襲しながら安価な汎用SDRAMとFLASHを用いた大容量かつアクセス速度がSRAMと同等なメモリモジュールが実現出来る。
本発明によるメモリモジュールでは、FLASHの一部のデータ、あるいは全データをコピーできる領域をDRAM内に確保し、あらかじめFLASHからDRAMへデータを転送しておくことで、SRAMと同等な速度でFLASHのデータを読み出すことができる。FLASHへデータを書く際は、いったんデータをDRAMに書き込み、必要に応じてFLASHへ書き戻すことができるため、データの書き込み速度もSRAMと同等にできる。
大容量SDRAMを用いることで、SDRAMにFLASHのデータをコピーできる領域のほかに大容量のワーク領域を確保できる。
FALSHからの読み出し時は、エラー検出と訂正を行い、書きこみ時は、書きこみが正しく行われなかった不良アドレスに対して代替処理を行うため、処理が高速にでき、信頼性を保つことができる。
大容量SDRAMを用いるため、SDRAMにFLASHのデータをコピーできる領域のほかに大容量のワーク領域を確保できる。
モジュール内部で実行されるリフレッシュの間隔を温度によって変えることによってDRAMの使用温度範囲を広げることが可能となり、使用温度範囲の広い大容量メモリモジュールが実現できる。
本発明の別の目的はデータ保持電流の少ないメモリモジュールを実現することである。この目的のために、特に低温時にはモジュール内部で実行されるリフレッシュ間隔を伸ばす事によって、データ保持電流を削減することが出来る。
さらにデータ保持電流を削減するためにはDRAMへ供給する電源を切断し、SRAMに記憶されたデータだけを保持すればよい。これによって、最小限のデータ保持電流で必要なデータだけを保持することが可能である。
図22はCHIP2(SRAM+CTL#LOGIC)を示したものである。CHIP2(SRAM+CTL#LOGIC)はSRAMと制御回路(CTL#LOGIC)から構成されており、集積されるSRAMは従来より一般的に使用されている非同期SRAMである。制御回路(CTL#LOGIC)はCHIP2のSRAM以外の部分で、図18では破線に囲まれた領域として示されており、AS、MMU、ATD、DTD、R/W BUFFER, CPB、A#CONT、REG、INT、 TMP、RC、PM、CLK#GEN、COM#GENによって構成される。以下で各回路ブロックの動作を説明する。
初期化回路INTは、電源供給開始時にメモリマネージメントユニットMMU内のコントロールレジスタの初期化とDRAMの初期化を行う。
メモリマネージメントユニットMMUは内蔵するコントロールレジスタに設定された値に従って外部より入力されたアドレスを変換し、REGISTER領域内のコマンドレジスタREGやDRAM内のワーク領域、DRAM内のFLASHデータコピー領域、FLASH領域を選択し、アクセスを行う。コントロールレジスタの値は、電源供給時に初期化回路INTにより初期設定される。コントロールレジスタの値を変更したい場合は、コマンドレジスタREGに、メモリマネージメントMMU変更命令を入力するSRAMが選択された場合にはアクセススイッチ(AS)によってSRAMへアドレス信号とコマンド信号が送られ、SRAMへのアクセスが行われる。
アドレストランジションディテクタ回路(ATD)はアドレス信号とコマンド信号の変化を検出してパルスを出力する。また、コマンドトランジションディテクタ回路(CTD)はコマンド信号の変化を検出してパルスを出力する。これらの検出回路が信号の変化を検出することによってメモリへのアクセスが開始される。
データ更新アドレス管理回路CPBは、DRAMのFLASHデータコピー領域にデータが書き込まれた時のアドレス情報を保持する。
コマンドレジスタREGには、ロード命令、ストア命令、メモリマネージメントユニットMMU変更命令、電源遮断命令などの命令コードや、ロード開始アドレス、ロード終了アドレス、ストア開始アドレス、ストア終了アドレスなどのアドレスが書き込まれ保持される。
データバッファR/WBUFFERはDRAMの読み出しデータ、書き込みデータあるいは、FALSHの読み出しデータ、書き込みデータを一時的に保持する。
コマンドジェネレータCOM#GENはDRAMへのアクセスに必要なコマンドを生成する。アクセスコントローラA#CONTはCHIP2の全体制御とDRAMへアクセスを行うためのアドレスを生成する。
フラッシュ制御信号生成回路FGENはFLASHのデータの読み出し、書き込みの制御を行う。
エラー訂正回路ECCはFLASHから読み出したデータにエラーがあるかどうかをチェックし、エラーがあれば訂正を行う。代替処理回路REPは、FLASHへの書き込みが正しく行われたかをチェックし、正しく行われなかった場合は、FLASHにあらかじめ用意されている代替用の新たなアドレスに対して書き込みを行う。
温度計測モジュール(TMP)は温度を測定し、測定した温度に応じた信号をRCとA#CONT に出力する。RCはリフレッシュカウンタで、DRAMのリフレッシュ間隔にあわせてリフレッシュを行うアドレスを生成する。また、温度計測モジュール(TMP)の出力信号によって温度に応じたリフレッシュ間隔の変更を行う。
パワーモジュール(PM)はCHIP2の制御回路(CTL#LOGIC)と DRAMへの電源供給及び電源の制御を行う。クロックジェネレータ(CLK#GEN)はクロックを生成し、DRAMと制御回路(CTL#LOGIC)へ供給する。コマンドジェネレータ(COM#GEN)はDRAMへのアクセスに必要なコマンドを生成する。アクセスコントローラ(A#CONT)はCHIP2 (SRAM+CTL#LOGIC)全体動作の制御と、DRAMへアクセスを行うためのアドレスを発生する。
フラッシュ制御信号生成回路FGENはFLASHのデータの読み出し、書き込みの制御を行う。
エラー訂正回路ECCはFLASHから読み出したデータにエラーがあるかどうかをチェックし、エラーがあれば訂正を行う。代替処理回路REPは、FLASHへの書き込みが正しく行われたかをチェックし、正しく行われなかった場合は、FLASHにあらかじめ用意されている代替用の新たなアドレスに対して書き込みを行う。
次に本メモリモジュールの動作を説明する。
CHIP2(SRAM+CTL#LOGIC)へメモリアクセスを行うには従来より一般に使用されている非同期SRAM方式でインターフェイスする。
アドレス信号(A0〜A24)あるいはコマンド信号(S-/LB, S-/UB, S-/WE, S-/CE1, S-CE2, S-/OE) が変化するとATDがこれを検知して、コマンドレジスタREG、SRAM、DRAMあるいはFLASHへのアクセスが開始される。
外部から入力されたアドレス信号(A0〜A24)の値はまずメモリマネージメントユニットMMUによって変換される。変換されたアドレスによってアクセス先がコマンドレジスタREGかSRAMかDRAM、あるいはFLASHなのかを決定する。
アドレスの変換パタンはメモリマネージメントユニットMMU内部のコントロールレジスタの値によって決められる。
コマンドレジスタREGが選択されロード命令コードがコマンドレジスタREGに書き込まれると、FLASHからDRAMへデータ転送を開始する。最初に、フラッシュコントローラFCON内部のフラッシュ制御信号発生回路FGENはFLASHに対して読み出し動作を行う。FLASHから読み出されたデータに誤りが無ければ、直接、データをデータバッファR/W BUFFERに転送し、誤りがあれば、エラー訂正回路ECCで訂正し、データバッファR/W BUFFERに転送する。その次に、コマンド発生回路COM#GEN からライト命令とアクセスコントローラA#CONTからアドレス信号、データバッファR/W BUFFERよりFLASHから読み出したデータがDRAMに対して入力され、DRAMのFLASHデータコピー領域へ書き込みが行われる。
データ更新管理回路CPBは、DRAMのFLASHデータコピー領域にデータが書き込まれた時、書き込みアドレスの情報を保持する。
コマンドレジスタREGが選択されストア命令がコマンドレジスタに書き込まれると、DRAMのFLASHデータコピー領域内データからFLASHへデータ転送を開始する
。
最初に、コマンド発生回路COM#GENからリード命令とアクセスコントローラA#CONT からアドレス信号をDRAMに送りデータを読み出す。DRAMから読み出されたデータはデータバッファR/W BUFFERを通ってフラッシュコントローラFCONに転送され、フラッシュ制御信号発生回路FGENはFLASHに対して書き込みを行う。アドレス代替処理回路REPは、書き込みが成功したかどうかをチェックし、成功すれば処理を終了する。書き込みが失敗した時には、FLASHにあらかじめ用意されている代替用の新たなアドレスに対して書き込みを行う。代替え処理を行った際は、不良アドレスと、不良アドレスに対して、どのアドレスに代替え処理を行ったかというアドレス情報を保持し管理する。データ更新管理回路CPBは保持しているDRAMのアドレス情報の中で、FLASHへの書き込みが終了したアドレス情報をクリアする。このように、データ更新管理回路CPBは常に、最新のデータが更新されたアドレスを管理することができる。
DRAMのワーク領域およびFLASHデータコピー領域が選択され、リード命令の場合、コマンド発生回路COM#GENからリード命令信号とアクセスコントローラA#CONT からアドレス信号がDRAMへ送られ、データが読み出される。
DRAMのワーク領域およびFLASHデータコピー領域が選択され、ライト命令の場合、コマンド発生回路COM#GENからライト命令信号とアドレス発生回路A#CONTからアドレス信号、データバッファR/W BUFFERからデータをDRAMへ送り、データが書き込まれる。
コマンドレジスタREGが選択され、電源遮断命令がコマンドレジスタに書き込まれると、データ更新管理回路CPBが保持しているアドレスに対応するDRAMのデータをFLASHへ転送する。最初に、コマンド発生回路COM#GENからリード命令とアクセスコントローラA#CONTからアドレス信号をDRAMに送りデータを読み出す。DRAMから読み出されたデータはデータバッファR/W BUFFERを通ってフラッシュコントローラFCONに転送され、フラッシュ制御信号発生回路FGENによってFLASHで書き込まれる。
データ更新管理回路CPBは保持しているDRAMのアドレス情報の内FLASHへの書き込みが終了したアドレス情報をクリアしていき、保持したアドレスに対応したデータがすべてFLASHへ書き込まれるとデータ更新管理回路CPBのアドレス情報はすべてクリアされる。
メモリモジュールを高温で使用する場合にはDRAMのリフレッシュ間隔を短くして頻繁にリフレッシュを行えばよい。そこで本メモリモジュールでは温度計測モジュール(TMP)が温度を測定してリフレッシュカウンタとアクセスコントローラに通知する。高温になればリフレッシュカウンタはリフレッシュ間隔を短く変更してリフレッシュ用アドレスを出力する。また、逆に低温時にはDRAMのリフレッシュ間隔を長く変更すればデータ保持電流を削減する事も出来る。この様な場合にも温度計測モジュール(TMP)が温度を測定してリフレッシュカウンタとアクセスコントローラに通知する。低温になればリフレッシュカウンタはリフレッシュ間隔を長く変更してリフレッシュ用アドレスを出力する。
メモリモジュールが実装された機器は動作状態に応じて消費電流を削減したい場合がある。そこで、パワーモジュールによってメモリの動作状態を変えて消費電力を削減する方法について説明する。
まず、最も簡単なものはパワーモジュールがコマンド信号PSに従ってリフレッシュカウンタが行うリフレッシュを停止させるものである。これによって、DRAMに記憶されたデータは破壊されるが、リフレッシュに必要な電力を削減することが出来る。
さらに消費電力を削減したい場合にはメモリモジュール内部においてDRAMへ供給する電源を切断する。この場合にはパワーモジュールが機器が出力するコマンド信号PSにしたがってDRAMへ供給されるD1-VCCへの電力供給を停止する。
この上、一段と消費電力を削減したい場合はパワーモジュールがコマンド信号PSにしたがってCHIP2(SRAM+CTL#LOGIC)のうちDRAMへのメモリアクセスに関与する部分への電源供給も停止すれば良い。この状態では例えばCHIP2(SRAM+CTL#LOGIC)のうちSRAMの他にはMMUとASだけに電源を接続して動作状態とし、SRAMへのアクセスだけを実行するモードとすることが可能である。
さらにコマンドPSによってSRAMのデータ保持だけを行う動作状態とすることも可能である。この場合にはSRAMへ接続される電源(S-VCC, S-VSS)以外を切断し、メモリへのアクセスは禁止される。この状態ではメモリモジュールはSRAMに記憶されたデータの保持を行う。
一旦DRAMへの電源供給を停止して動作を停止した後にDRAMを再び動作させるためには電源供給の再開の他、DRAMの初期化を行う必要がある。初期化方法は一般的なものだが本メモリモジュールではイニシャル回路(INT)が初期化の手順をアクセスコントローラ(A#CONT)に指示して初期化が実行される。
なお、DRAMのリフレッシュを停止した場合にもDRAMを再び動作させるためにはDRAMの初期化が必要であるが、やはりイニシャル回路(INT)が初期化の手順をアクセスコントローラ(A#CONT)に指示して初期化が実行される。
図23,24,25,26はメモリマネージメントユニットMMUによって変換されるメモリマップの一例を示したものである。これらのメモリマップはいずれもMMU内部のコントロールレジスタに設定された値にしたがって選択することが出来る。本実施例では特に限定されないが、FLASHの記憶容量が256+8Mb、データ保持をするSRAMが2Mb、DRAMが256Mb であるメモリモジュールを例に代表的なメモリマップを説明する。
図23ではアドレス信号A0〜A24を通じて入力したアドレスを元に、メモリマネージメントユニットMMUがコマンドレジスタREG(16kbit)、SRAMによるデータ保持領域(2Mbit)、DRAM内Work領域(128Mbit)、DRAM内FLASHコピー領域(128Mbit )、FLASH(256+8 Mbit)にアドレスを変換したメモリマップを示す。
特に制限はないがメモリマップのアドレス空間の下部から、コマンドレジスタREG,SRAM、DRAM、FLASHがマッピングされている。
コマンドレジスターREGは外部より、ロード命令、ストア命令、MMUレジスタ変更命令などの命令コードやロード命令やストア命令時の開始アドレスや終了アドレスが書きこまれる。
DRAMは、Work領域(128Mbit)、FLASHコピー領域(128Mbit)に分かれている。Work領域はプログラム実行時のワークメモリとして利用され、FLASHコピー領域は、FLASH領域のデータの一部をコピーし、保持しておくために利用される。
SRAMによる2Mbitのデータ保持領域は、アドレス空間の下部に集中して設定されている。この領域はDRAMと重複してメモリ空間にマッピングされているが、DRAMへのアクセスは行われず、SRAMへのみアクセスが行われる。
メモリモジュールの電源を制御してSRAMのデータだけを保持して使用するような場合にはSRAMの領域を集中して管理することが出来る。
アクセスされないDRAMの領域(SHADOW)はDRAMのメモリセルを救済する為に使用する事が出来る。本メモリモジュールには低温時にリフレッシュ間隔を延長して消費電力を下げる為の工夫がなされているが、その場合にはデータ保持が困難なメモリセル(Fail bit)も生じる。そこで、このSHADOWとなるDRAMを使用してFail bitの代替を行うことができる。図23では、DRAMにFail bit A, Fail bit Bが有り、これらのアドレスは前もって登録されており、アクセスがFail bitに行われる場合にはその代わりにそれぞれのSHADOWが代わりにアクセスされる。SHADOWによる代替によってFail bitが救済され低温時にリフレッシュ間隔を延長することによって消費電力の少ないメモリモジュールが実現できる。
FLASH領域のデータの一部をFLASHコピー領域へコピーするために、メモリマネジメントユニットMMUは内部レジスタに設定された値によって、FLASH領域内の、どのアドレスのデータがFLASHコピー領域内の、どのアドレスに対応しているかを決める。図23では、FLASH領域内のA1領域(64Mbit)とC1領域(64Mbit)のデータは、それぞれDRAMのFLASHコピー領域内のA1領域(64Mbit)と1領域(64Mbit)にコピーできるアドレス対応である1例を示してある。メモリマネジメントユニットMMUの内部コントロールレジスタの値を変更することによって、FLASH領域内のB1領域(64Mbit)とD1領域(56Mbit)のデータを、それぞれDRAMのFLASHコピー領域へコピーできるアドレス対応に変更することもできる。
FLASH(256M+8Mbit)は、特に限定はしないが、メインデータ領域MD-Area(A1,A2,B1,B2,C1,C2,D1,D2:255.75Mbit)と代替領域Rep-Area(E1、E2:8.25Mbit)とに分かれている。メインデータ領域は、さらにデータ領域(A1,B1,C1,D1)と冗長領域(A2,B2,C2 ,D2)に分かれている。データ領域はプログラムやデータを格納し、冗長領域には、エラーを検出し修正するためのECCパリティデータなどを格納する。FLASHのデータ領域内のデータがDRAMのFLASHコピー領域へ転送され、あるいは、DRAMのFLASHコピー領域のデータがFLASHのデータ領域に転送される。FLASHは、書き換えを繰り返すことによって、信頼性が低下し、書き込み時に書いたデータが、読み出し時には異なるデータとなったり、書き換え時にデータが書き込まれなかったりすることが稀にある。代替領域はこのように不良となった領域(Fail Area C、Fail Area D)のデータを、新たな領域へ置き換えるために設けられている。代替領域の大きさは、特に限定しないが、FLASHが保証する信頼性が確保できるように決めると良い。
FLASHからDRAMへのデータ転送を説明する。FALSHのA1領域のデータをDRAMのFLASHコピー領域A1領域に転送するため、コマンドレジスタにロード命令とFALSH領域内A1領域の転送開始アドレスSADと転送終了アドレスEADを書き込む。そうすると、制御回路(CTL#LOGIC)はFLASHのA1領域内の転送開始アドレスFSADと転送終了アドレスFEADによって示されたアドレス範囲のデータを読み出し、メモリマネージメントユニットMMUによって対応づけられたDRAMのFLASHコピー領域A1領域内のアドレスDSADとDEADのアドレス範囲に転送する。FLASHからデータを読み出す際、データの管理単位(ここでは8kbit)でFLASHのデータ領域A1にあるデータと冗長領域A2にあるECCパリティデータを読み出し、エラー訂正回路ECCによって、エラー有れば修正される。修正されたデータだけをDRAMへ転送する。
DRAMからFLASHへのデータ転送を説明する。FALSHのA1領域へDRAMのFLASHコピー領域A1のデータを転送するため、コマンドレジスタにストア命令とFALSHのA1領域の転送開始アドレスSADと転送終了アドレスEADを書き込む。そうすると、制御回路(CTL#LOGIC)は、メモリマネージメントユニットMMUによって対応づけられたDRAMのFLASHコピー領域A1領域内のアドレスDSADとDEADのアドレス範囲のデータを読み出し、FLASHのA1領域内の転送開始アドレスFSADと転送終了アドレスFEADのアドレス範囲データを書きこむ。FLASHへデータを書きこむ際、エラー訂正回路ECCはデータの管理単位(ここでは8kbit) でECCパリティデータを生成する。フラッシュ制御回路FGENによって、DRAMより読み出されたデータはFLASHのデータ領域A1へ、生成されたECCパリティデータは冗長領域A2へ書きこまれる。アドレス代替処理回路REPは、書き込みが成功したかどうかをチェックし、成功すれば処理を終了する。書き込みが失敗した時には、FLASHの代替領域内のアドレスを選択し、DRAMより読み出されたデータは代替領域内の代替データE1へ、生成されたECCパリティデータは代替冗長領域E2へ書きこまれる。
次にDRAMのFLASHコピー領域A1のデータの読み出しについて説明する。外部より、FLASHのA1領域内アドレスFAD0とリード命令を入力すると、MMUはアドレスFAD0に対応したDRAMのFLASHコピー領域A1のアドレスDAD0にアドレス変換する。これによって、DRAMが選択されDRAMにコピーされたFLASHのデータを読み出すことができる。つまり、FLASHのデータをDRAMと同じ速度で読み出すことができる。
次にDRAMのワーク領域のデータの読み出しについて説明する。外部より、ワーク領域内アドレスWAD0とリード命令を入力すると、MMUはアドレスWAD0をアドレス発生回路A#COUNTへ出力する。これによって、DRAMのワーク領域内アドレスWAD0のデータを読み出すことができる。
次にDRAMのFLASHコピー領域A1へのデータの書きこみについて説明する。外部より、FLASHのA1領域内アドレスFAD0とライト命令、書きこみデータを入力すると、MMUはアドレスFAD0に対応したDRAMのFLASHコピー領域内のアドレスDAD0にアドレス変換する。これによって、DRAMが選択されFLASHコピー領域A1へデータが書き込まれる。FLASHのデータ領域A1に対応したDRAMのFLASHコピー領域A1の書きこむことで、FLASHのデータをSRAMと同じ速度で書きこむことができる。
次にDRAMのワーク領域のデータの読み出しについて説明する。外部より、ワーク領域内アドレスWAD0とリード命令を入力すると、MMUはアドレスWAD0をアクセスコントローラA#COUNTへ出力する。これによって、DRAMのワーク領域内アドレスWAD0のデータを読み出すことができる。
次にDRAMのワーク領域のデータの書き込みについて説明する。外部より、ワーク領域内アドレスWAD0とライト命令、入力データを入力すると、アドレス発生回路A#COUNTはアドレスWAD0をDRAMへ出力する。これによって、DRAMのワーク領域内アドレスWAD0のデータを書き込むことができる。
図24に示したメモリマップの例では複数のアドレス空間に分散してSRAM領域が設定されている。やはりSRAMのアドレス空間はDRAMのアドレス空間に重なっており、重なったアドレス空間へのアクセスはSRAMに対して行われる。複数のSHADOWが複数のFail bitの救済に使用されている。この例ではSRAM領域が2Kbyte単位で設定してあるが、これはFLASHメモリの書込み消去単位に合わせており、アドレス空間の管理単位をFLASHメモリとそろえておくことによってOSやプログラムによるメモリ空間の扱いを簡単にするための工夫である。
また、メモリモジュールの電源を制御してSRAMのデータだけを保持して使用するような場合にはSRAMの領域をメモリ空間内に分散して配置することが出来る。
図25に示したメモリマップの例ではSRAMとDRAMは別のアドレス空間にマッピングされており、重複によって生じるSHADOWはない。したがって、アドレス空間はDRAMの256MbとSRAMの2Mbを足しあわせた258Mbになり、より広いアドレス空間を得る事が出来る。
図26に示したメモリマップでは図22のSRAM領域を128分割して配置した例である。図25に示した例と同様により広いアドレス空間を持つ事が出来る。また、図22に示した例と同様にメモリモジュールの電源を制御してSRAMのデータだけを保持して使用するような場合にはSRAMの領域をメモリ空間内に分散して配置することが出来る。
このようにMMUは指定したアドレス空間にSRAM領域やDRAM領域をわりあてることが出来る。その割り当て方法はMMUに設定したレジスタの値を変更する事によって容易に変更することが出来る。
また、特にデータ保持電流を少なくしたい場合には保持したいデータを格納するアドレス空間をSRAM領域に割り当て、DRAMへの電源供給を停止すればよい。この方法によってデータ保持電流の少ないメモリモジュールを実現することができる。
図27(A)は外部アクセスとリフレッシュアクセスとロード命令やストア命令時のDRAMへのアクセスの優先順位を示している。リフレッシュアクセスが第1優先、外部アクセスが第2優先、ロードあるいはストア命令におけるアクセスが第3優先となる。
図27(B)は外部から読み出しアクセス(READ)とリフレッシュアクセス(REF)がDRAMへ生じた際の動作を示している。
図27(C)はおよび書き込みアクセス(WRITE)とリフレッシュアクセス(REF)がDRAMへ生じた際の動作を示している。
リフレッシュアクセス(REF)が生じておらず、外部アクセス(READ、WRITE)が生じた場合は、外部アクセスは、そのままDRAMへ行われ、データの読み出しや、書き込みが行われる。
リフレッシュアクセス(REF)と外部アクセスが生じた場合、先ず、優先順位の高いリフレッシュアクセスによってリフレッシュ動作を行い、その次に、外部アクセスによる動作が実行される。リフレッシュ動作中は、WAIT信号はHighになり、DRAMへの動作がすでに行われていることを示す。
図28(A)はコマンドレジスタへ、ロード命令が書き込まれた際の、FLASHからDRAMへデータが転送される際の、DRAMへの動作を示す。FLASHからデータを読み出し、いったん、データバッファR/W BUFFERに保持しておく、その後、DRAMへアクセスしデータを書きこむ。DRAMへの書き込みアクセスが開始され、書き込みが終了するまでの間は、WAIT信号をHighにし、DRAMへのアクセスがすでに行われていることを示す。
図28(B)はコマンドレジスタへ、ストア命令が書き込まれた際の、DRAMからFLASH へデータが転送される際の、DRAMへの動作を示す。DRAMからデータを読み出し、いったん、データバッファに保持しておく、その後、FLASHへアクセスしデータを書きこむ。DRAMへの読み出しアクセスが開始され、書き込みが終了するまでの間は、WAIT信号をHighにし、DRAMへのアクセスがすでに行われていることを示す。
図29(A)はロード命令時のDRAMへ書き込みアクセス中に、外部より読み出しアクセスが生じた場合のDRAMの動作を示す。外部アクセスの種類は特に限定されないが、ここでは、読み出しアクセスを1例とした。外部アクセスが生じた場合は、ロード命令時のDRAMの書き込みアクセスをいったん停止し、外部アクセスを優先して処理する。外部アクセスの処理が終了したら、ロード命令時のDRAMの書き込みアクセスを再開する。
図29は(B)はストア命令時のDRAMへの読み出しアクセス中に、外部より書き込み読み出しアクセスが生じた場合のDRAMの動作を示す。外部アクセスの種類は特に限定されないが、ここでは、書き込みアクセスを1例とした。外部アクセスが生じた場合は、ストア命令時のDRAMの読み出しアクセスをいったん停止し、外部アクセスを優先して処理する。外部アクセスの処理が終了したら、ストア命令時のDRAMの読み出しアクセスを再開する。
図30は本発明であるメモリモジュールの動作波形の一例を示したものである。A0〜A20, S-/CE1, S-CE2, S-/LB, S-/UB, S-/OE, S-/WEはメモリモジュールへ入力される信号で、いわゆる非同期SRAMのインターフェイス信号である。データ入出力信号I/O0〜I/O15はデータの入力と出力を分けて夫々DIN、DOUTとして表した。MMU, ATD, CTDは夫々MMU回路、ATD回路、CTD回路の出力信号を表している。D1-CLKはDRAMへ供給されるクロック、D1-COMはDRAMへ供給されるコマンド信号の総称、 D1-A0〜D1-A15はDRAMのアドレス線、D1-DQ0〜D1-DQ15はDRAMのI/O線である。
まず、最初に行われているリードアクセスについて説明する。アドレスA0〜A24が入力されるとMMU回路は変換したアドレスを出力する。 ATD回路はアドレスA0〜A24とコマンド類(S-/CE1, S-CE2, S-/LB, S-/UB, S-/OE, S-/WE)の変化を検知し、アドレスとコマンドが確定するとパルスを出力する。このパルスをきっかけにDRAM1へバンクアクティブコマンドAとロウアドレスRa、つづいてがリードコマンドRとカラムアドレスCoが発行される。DRAM1から読み出されたデータはD-DQ0〜D-DQ15に出力され、一旦R/W BUFFERを通してからI/O0〜I/O15へ出力される。次のサイクルではライトアクセスの実行例を示した。ライトアクセスの場合もリードアクセスと同様にATD信号の立ち下がりをきっかけにバンクアクティブコマンドAとロウアドレスRaが発行される。その後、CTD回路がコマンド類(S-/CE1, S-CE2, S-/LB, S-/UB, S-/OE, S-/WE)の変化を検知して、ライト動作であることを認識し、パルスを出力する。このパルスをきっかけにライトコマンドWとカラムコマンドCoが発行されてライトが実行される。
図31は本発明であるメモリモジュールの動作波形の一例で、リフレッシュ動作が行われている時に、外部より読み出しアクセスが生じた際の動作波形を示している。
リフレッシュを行うため、DRAM1へバンクアクティブコマンドAとロウアドレスRaを発行し、その後プリチャ-じコマンドPとバンクアドレスBaを発行する。このリフレッシュ動作の期間中は、リフレッシュカウンタはRCはリフレッシュ期間中であることを示す信号RCを出力する。リフレッシュ期間中に生じた外部からのリードアクセスについて説明する。アドレスA0〜A24が入力されるとMMU回路は変換したアドレスを出力する。 ATD回路はアドレスA0〜A24とコマンド類(S-/CE1, S-CE2, S-/LB, S-/UB, S-/OE, S-/WE) の変化を検知し、アドレスとコマンドが確定するとパルスを出力する。このパルスによって、アドレスとコマンドをラッチする。リフレッシュ期間が終了したことをきっかけにDRAM1へバンクアクティブコマンドAとロウアドレスRa、つづいてがリードコマンドRとカラムアドレスCoが発行される。DRAM1から読み出されたデータはD-DQ0〜D-DQ15に出力され、一旦R/W BUFFERを通してからI/O0〜I/O15へ出力される。
図32は本実施例におけるSRAMの構成例を示したものである。Xデコーダ X-DEC, メモリアレイMA(SRAM), YゲートY-GATE, YデコーダY-DEC,入力データ制御回路D#CTL,制御回路CONTROL LOGICと各信号線の入出力バッファから構成されている。このSRAMは一般的ないわゆる非同期SRAMである。このSRAMによって本実施例であるメモリモジュールが構成出来る。
以上説明した実施例によれば、SRAMインターフェイス方式を踏襲しながら安価な汎用DRAMを用いた大容量メモリモジュールが実現出来る。本発明によるメモリモジュールでは、FLASHの一部のデータ、あるいは全データをコピーできる領域をDRAM内に確保し、あらかじめFLASHからDRAMへデータを転送しておくことで、SRAMと同程度の速度でFLASHのデータを読み出すことができる。FLASHへデータを書く際は、いったんデータをDRAMに書き込み、必要に応じてFLASHへ書き戻すことができるため、データの書き込み速度もSRAMと同等となる。FALSHからの読み出し時は、エラー検出と訂正を行い、書きこみ時は、書きこみが正しく行われなかった不良アドレスに対して代替処理を行うため、処理が高速にでき、信頼性を保つことができる。
メモリマネージメントユニットMMUによってSRAMによるデータ保持領域、DRAMのFLASHコピー領域、ワーク領域を自在に設定出来るため、様々な機器に対応して幅広く用いることが可能である。
本発明による制御回路(CTL#LOGIC)ではDRAMが使用されているがDRAMに必要なリフレッシュは制御回路(CTL#LOGIC)によって実行されるためSRAMと同様にリフレッシュを考慮せずに使用することが出来る。さらにDRAMのリフレッシュ間隔を狭めることによって高温時にもDRAMを動作させることが可能となり、使用温度範囲の広いメモリモジュールを実現できる。一方、低温時にはDRAMのリフレッシュ間隔を広げることによって、データ保持に必要な電力を削減し、データ保持電力の少ないメモリモジュールを実現することが出来る。パワーモジュールPMの働きによってはDRAMの一部、あるいは全部の電源供給を停止して記憶領域を限定してデータ保持に必要な電力を削減する事もできる。さらに、制御回路の電源供給も停止してよりデータ保持電力の少ないメモリモジュールを実現することも出来る。
<実施例3>
図33は本発明におけるメモリモジュールの第3の実施例を示したものである。図33(A)には上面図、図33(B)には断面図を示した。本メモリモジュールはボールグリッドアレイ(BGA)によって装置に実装する基盤(例えばガラスエポキシ基板でできたプリント回路ボードPCB)上に実施例1で示したCHIP1(FLASH)、CHIP2(CTL#LOGIC)、 CHIP3(DRAM)が搭載されたり、あるいは 実施例2で示したCHIP1(FLASH)、CHIP2(SRAM+CTL#LOGIC)、CHIP3(DRAM)が搭載されたりする。とくに制限されないが、CHIP1にはいわゆるチップの一端に信号および電源パッド列が1列に並ぶ汎用DRAMのベアチップが使用されており、CHIP3にはいわゆるチップの中央に信号及び電源パッド列が1列に並ぶ汎用DRAMのベアチップが使用されている。CHIP1と基盤上のボンディングパットはボンディングワイヤ(PATH2)で接続され、CHIP2と基盤上のボンディングパットはボンディングワイヤ(PATH3)で接続されている。CHIP3とCHIP2とボンディングワイヤ(PATH1)で接続される。CHIP1とCHIP2とボンディングワイヤ(PATH4)で接続される。チップの搭載された基盤上面は樹脂モールドが行われて各チップと接続配線を保護する。なお、さらにその上から金属、セラミック、あるいは樹脂のカバー(COVER)を使用しても良い。
本発明による実施例ではプリント回路ボードPCB上にベアチップを直接搭載する為、実装面積の小さなメモリモジュールを構成することが出来る。また、各チップを近接して配置することが出来るため、チップ間配線長を短くすることが出来る。チップ間の配線及び各チップと基盤間の配線をボンディングワイヤ方式で統一することによって少ない工程数でメモリモジュールを製造することが出来る。さらにチップ間をボンディングワイヤで直接配線することによって基盤上のボンディングパット数とボンディングワイヤの本数を削減して少ない工程数でメモリモジュールを製造することが出来る。大量に量産される汎用DRAMのベアチップを用いることができるため、メモリモジュールを安価に安定供給することが出来る。樹脂のカバーを使用した場合にはより強靭なメモリモジュールを構成することが出来る。セラミックや金属のカバーを使用した場合には強度のほか、放熱性やシールド効果に優れたメモリモジュールを構成することが出来る。
図34は本発明におけるメモリモジュールの図34の変形例である。図34(A)には上面図34(B)には断面図を示した。この例では、CHIP3(DRAM)、CHIP2(CTL#LOGIC あるいは SRAM+CTL#LOGIC)の実装および配線にボールグリッドアレイ(BGA)が用いられている。CHIP1と基盤上のボンディングパットはボンディングワイヤ(PATH2)で接続されている。この実装方法によってCHIP2(CTL#LOGIC あるいは SRAM+CTL#LOGIC)とCHIP3(DRAM)および、CHIP2(CTL#LOGIC)と基盤間とのボンディングが不要となりボンディング配線の本数を削減することができるため組み立て工数を削減できる上、より信頼性の高いメモリモジュールが実現できる。
<実施例4>
図35は本発明のメモリモジュールにおける別の実施例を示す。本メモリモジュールは4つのチップによって構成されている。以下に夫々のチップについて説明する。まず、CHIP1(FLASH)は不揮発性メモリである。不揮発性メモリにはROM(リードオンリーメモリ)、EEPROM(エレクトリカリイレーサブルアンドプログラマブルROM)、フラッシュメモリ等を用いることが出来る。本実施例ではフラッシュメモリを例に説明する。CHIP2(SRAM+CTL#LOGIC)にはスタティックランダムアクセスメモリ(SRAM)と制御回路(CTL#LOGIC)が集積されている。制御回路はCHIP2に集積されたSRAMとCHIP3およびCHIP4の制御を行う。CHIP3(DRAM1)、CHIP4(DRAM2)はダイナミックランダムアクセスメモリ(DRAM)である。DRAMは内部構成やインターフェイスの違いからEDO、SDRAM、DDR等様々な種類がある。本メモリモジュールにはいずれのDRAMでも用いることが出来るが、本実施例ではSDRAMを例に説明する。
このメモリモジュールには外部からアドレス(A0〜A24)とコマンド信号(S-/CE1, S-CE2, S-/OE, S-/WE, S-/LB, S-/UB, LS −EN, F-EN)が入力される。電源はS-VCC, S-VSS, F-VCC, F-VSS, L-VCC, L-VSSを通して供給され、データの入出力にはS-I/O0〜S-I/O15が用いられる。いわゆるSRAMインターフェースによって、このメモリモジュールは動作する。
CHIP2はCHIP1,CHIP3およびCHIP4の動作に必要となる信号を供給する。CHIP2 はCHIP1に対してシリアルクロック(F−SC)、アドレスおよびFLASH用データ(I/O0〜I/O7)、コマンド(F-CE, F-/OE, F-/WE, F-/RES, F-CDE, F-RDY/BUSY)、DRAM用データ(D1-DQ0〜D1-DQ15, D2-DQ0〜D2-DQ15)を供給する。さらに、CHIP2はCHIP3及びCHIP4に対してロック(D1-CLK, D2-CLK)、アドレス(D1-A0〜D1-A14, D2-A0〜D2-A14)、コマンド(D1-CKE, D2-CKE, D1-/CS, D2-/CS, D1-/RAS, D2-/RAS, D1-/CAS, D2-/CAS, D1-/WE, D2-/WE, D1-DQMU/DQML, D2-DQMU/DQML) 、DRAM用データ( D1-DQ0〜D1-DQ15, D2-DQ0〜D2-DQ15)、電源(D1-VCC, D2-VCC, D1-VSS, D2-VSS,D1-VCCQ, D2-VCCQ, D1-VSSQ, D2-VSSQ)を供給する。
ここで各コマンド信号について簡単に説明する。 CHIP2に入力されるS-/CE1, S-CE2はチップイネーブル信号、 S-/OEはアウトプットイネーブル信号、 S-/WEはライトイネーブル信号、 S-/LBはロアーバイト選択信号、S-/UBはアッパーバイト選択信号である。
CHIP1に入力されるF-/CEはチップイネーブル信号,F-/OEはアウトプットイネーブル信号,F-/WEはライトイネーブル信号,F-SCはシリアルクロック信号,F-/RESはリセット信号,F-CDEはコマンドデータイネーブル信号,F-RDY/BUSYはレディ/ビジィ信号,I/O0〜I/O7はデータ入出力信号でフラッシュメモリの制御に用いられる。
CHIP2の制御回路(CTL#LOGIC)は、外部から入力されたアドレスの値によって、CHIP2の制御回路(CTL#LOGIC)に設けられたコマンドレジスタか、CHIP2内部のSRAMか、CHIP3およびCHIP4のDRAMか、CHIP1のFLASHかを選択する。
制御回路(CTL#LOGIC)に設けられたコントロールレジスタにあらかじめ値を設定しておくことによって、それぞれを区別することができる。いずれへのアクセスもいわゆるSRAMインターフェイス方式によって行われる。
SRAM領域へアクセスする場合は、SRAM領域内のアドレス信号やコマンド信号類を制御回路(CTL#LOGIC)に入力するとCHIP2内部のSRAMへのアクセスを行う。リードアクセスの場合にはSRAMからデータを読み出し、メモリモジュールのデータ入出力線(S-I/O0〜S-I/O15)へ出力される。ライトアクセスの場合は書込みデータはメモリモジュールのデータ入出力線(S-I/O0〜S-I/O15)から入力され、SRAMに書きこまれる。
制御回路(CTL#LOGIC)内のコマンドレジスタにアクセスしロード命令やストア命令コードを書きこむことで、FLASH領域のデータをDRAM内のFLASHデータコピー領域にコピー(ロード)したり、DRAM内のFLASHデータコピー領域のデータをFLASH 領域に書き戻し(ストア)たりできる。
アドレス信号(A0〜A24)からコマンドレジスタにアクセスするためのアドレスと、コマンド信号(S-/CE1,S-CE2,S-/OE, S-/WE,S-LB,S-/UB)からライト命令、入出力データ信号(I/O0〜I/O15)から、ロード命令コード、続いてFLASH領域内のアドレスでロード開始アドレス、ロード終了アドレスが入力されると、コマンドレジスタにはロード命令コードとロード開始アドレスとロード終了アドレスが書きこまれる。そうすると、FLASH領域内のロード開始アドレスからロード終了アドレスの間のデータが読み出され、DRAM1およびDRAM2のFLASHデータコピー領域へ転送される。これによって、FLASHのデータはDRAMへ保持されることになる。
コマンドレジスタにストア命令コードとFLASH領域内のアドレスで、ストア開始アドレスとストア終了アドレスが書きこまれると、FLASH領域内のストア開始アドレスからストア終了アドレスの間アドレスへDRAM1あるいはDRAM2のFLASHデータコピー領域のデータが書き戻される。
FLASH領域のどのアドレス範囲がDRAM1およびDRAM2のFLASHデータコピー領域のどのアドレス範囲に対応するかは、制御回路(CTL#LOGIC)に設けられたコントロールレジスタに値を設定しておくことによって決めることができる。
FLASHは、書き換えを繰り返すことによって、信頼性が低下し、書き込み時に書いたデータが、読み出し時には異なるデータとなったり、書き換え時にデータが書き込まれなかったりすることが稀にある。
FLASHからデータを読み出す時、CHIP2(CTL#LOGIC)は、読み出しデータのエラーを検出、訂正し、DRAM1およびDRAM2へ転送する。FLASHへのデータの書き込み時は、CHIP2(CTL#LOGIC)は正しく書き込まれたかをチェックし、正しく書き込まれなかった場合は、現在のアドレスとは異なるアドレスに書きこみを行う。いわゆる、代替え処理を行う。不良アドレスと、不良アドレスに対して、どのアドレスに代替え処理を行ったというアドレス管理も行う。
DRAMへのFLASHデータコピー領域へアクセスする場合は、アドレス信号(A0〜A24)から、FLASH領域のアドレスと、コマンド信号(S-/CE1, S-CE2, S-/OE, S-/WE, S-/LB, S-/UB)を入力する。コマンド信号がリード命令の場合、CHIP2の制御回路は、DRAMへアクセスし、FLASH領域内のアドレスに対応したDRAMのFLASHデータコピー領域内アドレスからDRAM用データI/O(D1-DQ0〜D1-DQ15又はD2-DQ0〜D2-DQ15)を通して、データを読み出す。ライト命令の場合は書込みデータはメモリモジュールのデータ入出力線(S-I/O0〜S-I/O15)から入力され、その後DRAM用データI/O(D1-DQ0〜D1-DQ15およびD2-DQ0〜D2-DQ15)を通してDRAMへ入力される。これによって、FLASH領域のデータの読み出しおよび書きこみ時間はSRAMと同等となる。
DRAMのワーク領域へアクセスする場合は、DRAM内ワーク領域へのアクセスに必要なアドレス信号やコマンド信号を入力する。制御回路(CTL#LOGIC)はDRAM内ワーク領域へのアドレスを生成し、DRAMへのアクセスを行う。リードアクセスの場合にはDRAMからの読み出しデータはDRAM用データI/O(D1-DQ0〜D1-DQ15あるいはD2-DQ0〜D2-DQ15)を通り、データ入出力線(S-I/O0〜S-I/O15)へ出力される。ライトアクセスの場合は書込みデータはメモリモジュールのデータ入出力線(S-I/O0〜S-I/O15)から入力され、その後DRAM用データI/O(D1-DQ0〜D1-DQ15および D2-DQ0 〜D2-DQ15 )を通してDRAMへ入力される。
DRAM1への電源はLD-VCC、LD-VSSから供給され、制御回路(CTL#LOGIC)を通してD1-VCC,D1-VSS,D1-VCCQおよびD1-VSSQへ接続される。DRAMへの電源供給はコマンド信号PSによって制御され、必要に応じて切断することが出来る。
DRAMの電源遮断時には、制御回路(CTL#LOGIC)はDRAMからFLASHへ書き戻しが必要なデータのみを自動的に書き戻し、データの書き戻しが終了してからDRAMの電源を遮断する。
切断したDRAMの電源を再投入する場合にはDRAMおよびFLASHの初期化を行う必要がある。DRAMの初期化に必要な信号生成やタイミング制御は制御回路(CTL#LOGIC)が行う。
また、DRAMのリフレッシュを行う場合には制御回路(CTL#LOGIC)が定期的にバンクアクティブコマンドを投入して行うことが出来る。一般にDRAMのリフレッシュ特性は高温時に悪化するが、制御回路(CTL#LOGIC)に温度計を設けて高温時にバンクアクティブコマンドの投入間隔を狭めることによってDRAMをより広い温度範囲で使用することが出来る。
さらに、2つのDRAMによってワーク領域、およびFLASH領域を二重化させており、1つのデータは2つのDRAMに保持させた上で、リフレッシュを行うタイミングを調整することによってメモリモジュール外部からはリフレッシュ動作によってアクセスに制限が生じないようリフレッシュを隠蔽する。
以上説明した実施例によれば、SRAMインターフェイス方式を踏襲しながら安価な汎用SDRAMとFLASHを用いた大容量かつアクセス速度がSRAMと同等なメモリモジュールが実現出来る。本発明によるメモリモジュールでは、FLASHの一部のデータ、あるいは全データをコピーできる領域をDRAM内に確保し、あらかじめFLASHからDRAMへデータを転送しておくことで、SRAMと同等な速度でFLASHのデータを読み出すことができる。FLASHへデータを書く際は、いったんデータをDRAMに書き込み、必要に応じてFLASH へ書き戻すことができるため、データの書き込み速度もSRAMと同等にできる。
大容量SDRAMを用いることで、SDRAMにFLASHのデータをコピーできる領域のほかに大容量のワーク領域を確保できる。
FALSHからの読み出し時は、エラー検出と訂正を行い、書きこみ時は、書きこみが正しく行われなかった不良アドレスに対して代替処理を行うため、処理が高速にでき、信頼性を保つことができる。大容量SDRAMを用いるため、SDRAMにFLASHのデータをコピーできる領域のほかに大容量のワーク領域を確保できる。
本発明によるメモリモジュールではDRAMが使用されているがDRAMに必要なリフレッシュはモジュール内部で実行されるためSRAMと同様にリフレッシュを考慮せずに使用することが出来る。また、モジュール内部で実行されるリフレッシュの間隔を温度によって変えることによってDRAMの使用温度範囲を広げることが可能となり、使用温度範囲の広い大容量メモリモジュールが実現できる。
さらに、DRAMにおけるデータ保持の二重化とリフレッシュを行うタイミングを調整することによりDRAMのリフレッシュをメモリモジュール外部から隠蔽することが出来るため、本メモリモジュールにアクセスする場合にリフレッシュを考慮してタイミングを調整する必要は無い。従って従来のSRAMだけを用いたメモリモジュールと同様に使用することが出来るため、従来システムを変更せずに大容量メモリモジュールを使用することが出来る。本発明の別の目的はデータ保持電流の少ないメモリモジュールを実現することである。この目的のために、特に低温時にはモジュール内部で実行されるリフレッシュ間隔を伸ばす事によって、データ保持電流を削減することが出来る。さらにデータ保持電流を削減するためにはDRAMへ供給する電源を切断し、SRAMに記憶されたデータだけを保持すればよい。保持すべきデータだけをSRAMに記憶して、保持する必要の無いデータが記憶されたメモリへの電源供給を停止することによって最小限のデータ保持電流で必要なデータだけを保持することが可能である。
図36はCHIP2(SRAM+CTL#LOGIC)の回路ブロック図を示したものである。CHIP2(SRAM+CTL#LOGIC) はSRAMと制御回路(CTL#LOGIC)から構成されており、集積されるSRAM は従来より一般的に使用されている非同期SRAMである。制御回路(CTL#LOGIC)はCHIP2のSRAM以外の部分で、図36では破線に囲まれた領域として示されており、AS、MMU、ATD、CTD、FIFO、R/W BUFFER, CACHE、A#CONT、INT、 TMP、RC、PM、CLK#GEN、COM#GENによって構成される。
以下で各回路ブロックの動作を説明する。初期化回路INTは、電源供給時にメモリマネージメントユニットMMU内のコントロールレジスタの初期化とDRAMの初期化を行う。コマンドレジスタREGは、外部から入力したロード命令、ストア命令、MMU変更命令などの命令を保持する。
メモリマネージメントユニットMMUは内蔵するコントロールレジスタに設定された値に従って、外部より入力されたアドレスを変換し、コマンドレジスタREGやSRAM、DRAM内のワーク領域、DRAM内のFLASHデータコピー領域、FLASHを選択しアクセスを行う。コントロールレジスタの値は、電源供給時に初期化回路INTにより初期設定される。コントロールレジスタの値はコマンドレジスタREGに、MMU変更命令が入力した時に変更される。
SRAMが選択された場合にはアクセススイッチ(AS)によってSRAMへアドレス信号とコマンド信号が送られ、SRAMへのアクセスが行われる。
アドレストランジションディテクタ回路(ATD)はアドレス信号とコマンド信号の変化を検出してパルスを出力する。また、コマンドトランジションディテクタ回路(CTD)はコマンド信号の変化を検出してパルスを出力する。これらの検出回路が信号の変化を検出することによってメモリへのアクセスが開始される。
R/W BUFFERはDRAMの読み出し、書込みの為にデータを一時的に保持する。ファーストインファーストアウトメモリ(FIFO)は先入れ先出しのバッファ回路でDRAMへの書込みデータとそのアドレスを一時的に保持する。CACHEはリフレッシュを行うDRAMの切り替えや一回のアクセスが長期間にわたって行われた場合にDRAMへの書き込みデータ及びDRAMからの読み出しデータを一時的に記憶する。さらに、CACHEは、ロード命令による、DRAMへの書きこみデータも一次的に記憶する。
データ更新管理回路CPBは、DRAMに割り当てているFLASHデータコピー領域内のアドレスで、データが更新されたアドレスにあるいはアドレス範囲、つまり、書き込みが行われたアドレスあるいはアドレス範囲の情報を保持する。
コマンドレジスタREGには、ロード命令、ストア命令、メモリマネージメントユニットMMU変更命令、電源遮断命令などの命令コードや、ロード開始アドレス、ロード終了アドレス、ストア開始アドレス、ストア終了アドレスなどのアドレスが書き込まれ保持される。
コマンドジェネレータCOM#GENはDRAMへのアクセスに必要なコマンドを生成する。アクセスコントローラA#CONTはCHIP2の全体制御とDRAMへアクセスを行うためのアドレスを生成する。
フラッシュ制御信号生成回路FGENはFLASHのデータの読み出し、書き込みの制御を行う。
エラー訂正回路ECCはFLASHから読み出したデータにエラーがあるかどうかをチェックし、エラーがあれば訂正を行う。代替処理回路REPは、FLASHへの書き込みが正しく行われたかをチェックし、正しく行われなかった場合は、FLASHにあらかじめ用意されている代替用の新たなアドレスに対して書き込みを行う。
温度計測モジュール(TMP)は温度を測定し、測定した温度に応じた信号をRCとA#CONT に出力する。RCはリフレッシュカウンタで、DRAMのリフレッシュ間隔にあわせてリフレッシュを行うアドレスを生成する。また、温度計測モジュール(TMP)の出力信号によって温度に応じたリフレッシュ間隔の変更を行う。
パワーモジュール(PM)はCHIP2の制御回路(CTL#LOGIC)と DRAMへの電源供給及び電源の制御を行う。クロックジェネレータ(CLK#GEN)はクロックを生成し、DRAMと制御回路(CTL#LOGIC)へ供給する。コマンドジェネレータ(COM#GEN)はDRAMへのアクセスに必要なコマンドを生成する。アクセスコントローラ(A#CONT)はCHIP2 (SRAM+CTL#LOGIC)全体動作の制御と、DRAMへアクセスを行うためのアドレスを発生する。
次に本メモリモジュールの動作を説明する。
CHIP2(SRAM+CTL#LOGIC)へメモリアクセスを行うには、従来より一般に使用されている非同期SRAM方式でインターフェイスする。
アドレス信号(A0〜A24)あるいはコマンド信号(S-/LB, S-/UB, S-/WE, S-/CE1, S-CE2, S-/OE) が変化するとATDがこれを検知してコマンドレジスタREG、SRAM、DRAMへのアクセスが開始される。
外部から入力されたアドレス信号(A0〜A24)の値はまずMMUによって変換される。変換のパターンはあらかじめMMU内部のレジスタに入力した値によって決められる。変換されたアドレスによってアクセス先がコマンドレジスタREGかSRAMかDRAM かが決定する。
SRAMへアクセスが行われる場合にはMMUは変換したアドレスをSRAMへ送ると同時に、アクセススイッチ(AS)にコマンド転送を指示する。アクセススイッチ(AS)はコマンドをSRAMへ転送し、SRAMへのアクセスが開始される。これ以降の動作はいわゆる非同期SRAMへのアクセスが行われる。
DRAMへリードアクセスを行う場合には、外部から入力されてMMUによって変換されたアドレスとATDで検知されたコマンドがA#CONTに送られる。A#CONTは送られたアドレスとコマンドからアクセスがDRAMに対して実行される事を判断し、COM#GENにDRAMへのコマンド発行を指示する。また、A#CONTはMMUから受け取ったアドレスをDRAMのロウアドレスとカラムアドレスに変換して、2つのDRAMのうちアクセスを担当しているDRAMに出力する。COM#GENはCLK#GENが生成したクロックに同期してアドレスと同様にアクセスを担当しているDRAMにコマンドを発行する。コマンドとアドレスを受け取ったDRAMはデータを出力し、出力されたデータはR/W BUFFERを介してI/O0〜I/O15へ転送されてリードアクセスが終了する。DRAMへライトアクセスを行う場合は、外部から入力されMMUによって変換されたアドレスとATDで検知されたコマンド及びDTDで検知されたコマンドとデータがA#CONTに送られる。A#CONTは送られたアドレスとコマンドからアクセスがDRAMへ実行される事を判断し、COM#GENにDRAMへのコマンド発行を指示する。また、A#CONTはMMUから受け取ったアドレスをDRAM用に変換して、2つのDRAMのうちアクセスを担当しているDRAMへ出力する。COM#GENはCLK#GENが生成したクロックに同期してアドレスと同様にアクセスを担当しているDRAMにコマンドを発行する。書込まれるデータはI/O0〜I/O15から入力されR/W BUFFERに一旦保持された後、アクセスを担当しているDRAMに送られて書込みが行われる。また、書込まれるデータとそのアドレスは一旦FIFOにも保持され、もう一方のDRAMにもリフレッシュが終了した後に書込まれる。メモリモジュールを高温で使用する場合にはDRAMのリフレッシュ間隔を短くして頻繁にリフレッシュを行えばよい。そこで本メモリモジュールでは温度計測モジュール(TMP)が温度を測定してリフレッシュカウンタとアクセスコントローラに通知する。高温になればリフレッシュカウンタはリフレッシュ間隔を短く変更してリフレッシュ用アドレスを出力する。また、逆に低温時にはDRAMのリフレッシュ間隔を長く変更すればデータ保持電流を削減する事も出来る。この様な場合にも温度計測モジュール(TMP)が温度を測定してリフレッシュカウンタとアクセスコントローラに通知する。低温になればリフレッシュカウンタはリフレッシュ間隔を長く変更してリフレッシュ用アドレスを出力する。
メモリモジュールが実装された機器は動作状態に応じて消費電流を削減したい場合がある。そこで、パワーモジュールによってメモリの動作状態を変えて消費電力を削減する方法について説明する
電源制御の説明。
まず、最も簡単なものはパワーモジュールがコマンド信号PSに従ってリフレッシュカウンタが行うリフレッシュを停止させるものである。これによって、DRAMに記憶されたデータは破壊されるが、リフレッシュに必要な電力を削減することが出来る。
さらに消費電力を削減したい場合にはメモリモジュール内部においてDRAMへ供給する電源を切断する。この場合にはパワーモジュールが機器が出力するコマンド信号PSにしたがってDRAMへ供給されるD1-VCC, D2-VCCへの電力供給を停止する。電源の切断は2個のDRAMに対して行っても良いし、片方のDRAMの電源を切断するにとどめても良い。
この上、一段と消費電力を削減したい場合はパワーモジュールがコマンド信号PSにしたがってCHIP2(SRAM+CTL#LOGIC)のうちDRAMへのメモリアクセスに関与する部分への電源供給も停止すれば良い。この状態では例えばCHIP2(SRAM+CTL#LOGIC)のうちSRAMの他にはMMUとASだけに電源を接続して動作状態とし、SRAMへのアクセスだけを実行するモードとすることが可能である。
さらにコマンドPSによってSRAMのデータ保持だけを行う動作状態とすることも可能である。この場合にはSRAMへ接続される電源(S-VCC, S-VSS)以外を切断し、メモリへのアクセスは禁止される。この状態ではメモリモジュールはSRAMに記憶されたデータの保持を行う。
一旦DRAMへの電源供給を停止して動作を停止した後にDRAMを再び動作させるためには電源供給の再開の他、DRAMの初期化を行う必要がある。初期化方法は一般的なものだが本メモリモジュールではイニシャル回路(INT)が初期化の手順をアクセスコントローラ(A#CONT)に指示して初期化が実行される。
なお、DRAMのリフレッシュを停止した場合にもDRAMを再び動作させるためにはDRAMの初期化が必要であるが、やはりイニシャル回路(INT)が初期化の手順をアクセスコントローラ(A#CONT)に指示して初期化が実行される。
図37はMMUによって変換されるメモリマップの一例を示したものである。これらのメモリマップはいずれもMMU内部のレジスタに設定された値にしたがって選択することが出来る。本実施例では特に限定されないが、FLASHの記憶領域が256+8Mb、SRAMによるデータ保持領域が2Mb、DRAMの記憶領域が256Mbあるメモリモジュールを例に代表的なメモリマップを説明する。
図37では外部から入力されたアドレスA0〜A24を元に、メモリマネージメントユニットMMUが、コマンドレジスタREG、SRAM、DRAM内Work領域、DRAM内FLASHコピー領域、FLASHにアドレス変換したメモリマップを示す。アドレスによってそれぞれが選択され、アクセスされる。
制御回路(CTL#LOGIC)内部に存在するコマンドレジスターREGには外部より、ロード命令、ストア命令、MMUレジスタ変更命令、電源遮断命令などの命令コードやロード命令やストア命令時の開始アドレスや終了アドレスが書きこまれる。
コマンドレジスタREGにロード命令が書き込まれると、制御回路はFLASHからDRAMへデータ転送をおこなう。つまりDRAMに対しては、書き込みを行う。ストア命令が書き込まれると、制御回路はDRAMからFLASHへデータ転送を行う。つまりDRAMに対しては読み出しを行う。
2個のDRAM(CHIP3とCHIP4)は同一のアドレス空間にマッピングされて同一のデータを保持している。それぞれのDRAMはアクセスを担当する期間(WORK期間)とリフレッシュを優先して実行する期間(REF.期間)を交互に繰り返す。外部からのメモリアクセスはWORK期間中のDRAMに対して実行される。
また、この例では2MbのSRAM領域はアドレス空間の下部に集中して設定されている。この領域はDRAMと重複してメモリ空間にマッピングされているが、DRAMへのアクセスは行われず、SRAMへのみアクセスが行われる。
メモリモジュールの電源を制御してSRAMのデータだけを保持して使用するような場合にはSRAMの領域を集中して管理することが出来る。
アクセスされないDRAMの領域(SHADOW)はDRAMのメモリセルを救済する為に使用する事が出来る。本メモリモジュールには低温時にリフレッシュ間隔を延長して消費電力を下げる為の工夫がなされているが、その場合にはデータ保持が困難なメモリセル(Fail bit)も生じる。そこで、このSHADOWとなるDRAMを使用してFail bitの代替を行うことができる。図37ではWORK期間中のDRAMにFail bit Aが有り、REF.期間中のDRAMにFail bit Bがあるが、これらのアドレスは前もって登録されており、アクセスがFail bitに行われる場合にはその代わりにそれぞれのSHADOWが代わりにアクセスされる。SHADOWによる代替によってFail bitが救済され低温時にリフレッシュ間隔を延長することによって消費電力の少ないメモリモジュールが実現できる。
図38はDRAMのリフレッシュを隠蔽する為のアクセス制御方式の原理を示したものである。本発明におけるDRAMの動作はREF期間中のバンクへのアクセスに優先順位を付けて実行するという考え方で説明出来る。
図35(A)はアクセスの優先順位を模式的に表したものである。この図では、DRAM1がWORK期間中で、DRAM2がREF.期間中であることが表されている。また、一時的にアクセスを肩代わりするCACHE、書き込みデータを一時的に保管するFIFO、RCから発生したリフレッシュ要求、ロードおよびストア命令時のDRAMアクセスが表されている。
WORK期間中のDRAM1では外部からのアクセスだけが行われる。一方、REF期間中のDRAM2ではまずリフレッシュが最優先で行われる。次に、FIFOに保持されたデータの書込みが実行される。次に、CACHEが保持しているロード命令によるDRAMへの書きこみデータの書き戻し、最後に、ロード命令やストア命令によるDRAMアクセスが実行される。これらの動作はアクセス制御回路(A#CONT)によって優先順位が判定されて実行される。
また、外部アクセスは一回のアクセスが80nsで実行されるが、リフレッシュとFIFOからの書き戻し、CACHEからのライトアクセス、ロード、ストア命令時のアクセスは70nsで実行される。本メモリモジュールではこの時間差を利用して外部からリフレッシュを隠蔽している。
図38(B)はリードアクセスが実行される様子を示したものである。DRAM1がWORK期間中にリードアクセスが連続して行われた場合を示した。DRAM1では外部アクセスだけが80nsで実行され、データが読み出されてアクセスは完了する。一方、DRAM2ではリフレッシュが70nsで実行されるだけである。
ライトアクセスが行われる場合を図38(C)に示した。外部からのライトアクセスはまずWORK期間中であるDRAM1で実行される。同時に書き込みデータは、一旦FIFOに保持される。REF期間中のDRAM2では、まずリフレッシュが最優先で行われる。次に、FIFOに保持されていたデータの書き戻しが実行される。
ここで、WORK期間中のDRAM1は一回の動作に80nsを要しているのに対してREF期間中のDRAM2では一回の動作が70nsで終了している。したがって、DRAM2がリフレッシュ動作を行っても、書き込み動作をDRAM1より高速に行うのでいずれFIFOにある全てのデータ書き込みを終了してDRAM1に追いつくことが出来る。
図39はロードおよびストア命令によりDRAMへの書き込みや読み出しアクセスの隠蔽動作を示している。
図39(A)はストア命令よるDRAMへのリードアクセスが実行されている時、外部よりリードアクセスとライトアクセスが発生した場合のDRAMへのアクセスの様子を示したものである。DRAM1がWORK期間中で、DRAM2がREFRESH期間中である場合の例を示した。DRAM1では外部からのリードアクセスだけが80nsで実行される。一方、DRAM2ではストア命令よるDRAMへのリードアクセスが70nsで実行されているだけである。
図39(B)には、ロード命令よるDRAMへのライトアクセスが実行されている時、外部よりライトアクセスが発生した場合のDRAMへのアクセスの様子を示したものである。DRAM1では外部からのライトアクセスが80nsで実行され、同時に書き込みデータは一旦FIFOに保持される。REF期間中のDRAM2では、ロード命令よるDRAMへのライトアクセスが行われて
おり、同時に、書き込みデータはCACHEへ保持される。次に、FIFOに保持されているデータの書き込みが実行される。また、CACHEに保持されたデータは、DRAM1 がREFRESH期間となった時にDRAM1へ書き戻す。ここで、WORK期間中のDRAM1は一回の動作に80nsを要しているのに対してREF期間中のDRAM2では一回の動作が70nsで終了している。したがって、DRAM2がロード命令による書き込み動作を行っても、書き込み動作をDRAM1より高速に行うのでいずれFIFOにある全てのデータ書き込みを終了してDRAM1に追いつくことが出来る。
図39(C)には、DRAM1がREFRESH期間、DRAM2がWORK期間に交代した際のCACHEからのDRAMへのライトアクセスが実行されている時、外部よりライトアクセスが発生した場合のDRAMへのアクセスの様子を示したものである。DRAM2では外部からのライトアクセスが80nsで実行され、同時に書き込みデータは一旦FIFOに保持される。REF期間中のDRAM1では、CACHEからのDRAMへのライトアクセスが実行され、次に、FIFOに保持されているデータの書き込みが実行される。ここで、WORK期間中のDRAM2は一回の動作に80nsを要しているのに対してREF期間中のDRAM1では一回の動作が70nsで終了している。したがって、DRAM1がCACHEからの書き込み動作を行っても、書き込み動作をDRAM2より高速に行うのでいずれFIFO にある全てのデータ書き込みを終了してDRAM2に追いつくことが出来る。このように、ロード命令やストア命令によるDRAMへの内部アクセスを隠蔽し、外部からアクセスを実行できる。
図40にはDRAMのリフレッシュやロード命令やストア命令によるDRAMへの内部アクセスを隠蔽するため、2個のDRAMを時分割で動作させる様子を示した。図40(A)は通常使用温度範囲である75℃以下でのDRAMの動作例である。2個のDRAM(DRAM1とDRAM2)がWORK期間とREF.期間を交互に繰り返している。WORKと表示されたWORK期間中のDRAMが外部アクセスに対して動作する。最初のDRAM1がWORK期間となり外部からのアクセスに対応している。一方でREF.期間中のDRAMはリフレッシュ動作を優先して行い、外部アクセスが書き込みの場合にはりフレッシュ終了後にデータの書き込みを行う。
DRAMのメモリセルは通常64ms以内にリフレッシュを行う必要があるが、図示した例ではこの時間内に8回WORK期間とREF.期間を切り替えており、DRAM1とDRAM2がそれぞれ交互にWORK期間とREF.期間を4回ずつ繰り返している。
ここで、一回のREF.期間である8msの間に行われるリフレッシュに必要な時間をT1、同じくその間に行われるライトアクセスの結果FIFOに溜まったデータをライトバックするのに必要な時間をT2、ロード命令時のライトアクセスが可能な時間T3としてREF.期間中にリフレッシュとロード時ライトアクセスとライトバックが行える事を説明する。
256MbitのSDRAMを例に取ると、そのメモリ構成は8192ロウx512カラムx16ビットx4バンクとなっており、64msの間に32768回(8192ロウx4バンク分)のリフレッシュを行えば良い。したがって、図40(A)の例では1個のDRAMに対して64msの間にREF.期間が4回有るので、一回のREF.期間(8ms)の間に8192回のリフレッシュを行う事になる。
一回のリフレッシュに必要な時間は70nsなのでT1=70ns x 8192回 = 0.574msとなる。一方で、8msの間に外部から行われるライトアクセスの最大値を求めると、毎回のアクセスがすべてライトだったとして100000回(8ms / 80ns)になる。これをREF.期間中のDRAMにライトバックする為に必要な時間T1は7ms(70ns x 100000回) である。ロード時ライトアクセスを4096回行うとすると、ロード時ライトアクセスに必要な時間T3=70ns x 4096回 = 0.287msとなる。
したがって、T1 + T2 + T3 = 7.861ms < 8msとなり、REF.期間中にリフレッシュとロード命令によるライトアクセスとライトバックを十分実行できる事がわかる。また、リフレッシュはREF期間中のDRAM内の複数のバンクで同時に実行することも出来る。この場合にはT1期間に実行するリフレッシュの回数を減らす事が出来るので、T1期間を短縮する事が出来る。T1期間が短縮されればFIFOの記憶容量を減らすことが出来るほか、外部からアクセスされる間隔をより短くして高速なメモリが実現できる。
図40(B)はDRAMのリフレッシュ間隔を変更した場合について示した。一般にDRAMのリフレッシュ特性は高温時に悪化する。従って例えば75℃以上の高温時にはリフレッシュ間隔を短くすればデータを保持が可能となり、より広い温度範囲で動作させることが可能である。この例では高温時にリフレッシュ間隔を48msに短縮している。T1は変わらないが、T2は5.25ms、T3を0.144ms とすると、T1 + T2 + T3 = 5.97ms < 6msとなり、REF.期間中にリフレッシュとロード時ライトアクセスとライトバックを十分実行できる事がわかる。
一方、低温時にはリフレッシュ間隔を短縮してデータ保持電流を削減する事が出来る。図示した例では低温時にリフレッシュ間隔を倍の128msに延長している。この場合はREF期間は16msとなる。T1は変わらないが、T2は14msとなり、T3を1.15ms とすると、T1 + T2 +T3 = 15.8ms < 16msとなり、REF.期間中にリフレッシュとロード時ライトアクセスとライトバックを十分実行できる事がわかる。
本実施例ではDRAMの動作単位をチップ毎として説明したが、メモリモジュールの性能やメモリチップの構成に応じてたとえばバンクを動作単位としても良い。また、リフレッシュ間隔である64msを8つの期間に分割してWORK期間とREF期間にしたが、さらに細かく分割すればデータとアドレスを保持するFIFOの記憶容量を少なくすることが出来る。逆に大きく分割すればWORK期間とREF期間の切り換え回数を減らせるため、切り換えに伴う制御回路が簡略化出来る。
図41はCACHEの働きを説明する図面である。図41(A)ではWORK期間とREF.期間の切り替わり直前に外部からライトアクセスが行われた場合について示した。ここではDRAM1のWORK期間終了間際に外部アクセスAが行われている。このような場合にはDRAM1のWORK期間はライトアクセスの終了までdTだけ延長される。一方で、DRAM2は予定どおりWORK期間となり、ライトデータを書き込まずにライトアクセスの終了まで待機する。DRAM2に書き込まれなかったデータは一旦CACHEに保持される。WORK期間中にCACHEに保持されているのと同一のアドレスにアクセスが生じた場合はDRAM2ではなくCACHEに対して読み書きを行う。なお、アクセスが書き込みの場合はREF.期間中のDRAM1には通常どおりFIFOを経由して書き込みが行われる。CACHEに保持されたデータはDRAM2のWORK期間が終了した次のREF.期間に書き戻される。この書き戻しが終了すればCACHEの内容はクリアされる。アクセスがリードの場合はアクセスの終了までDRAM1のWORK期間がdTだけ延長されるだけである。
図41(B)は一回のアクセスがWORK期間及びREF.期間よりも長く行われた場合や、延長期間dTではカバーし切れない場合について示した。DRAM1がWORK期間中に開始された外部アクセスBは延長時間dTを超過してそのまま次のREF.期間中も継続してアクセスが続いている。この場合にはアクセスをCACHEに引き継ぎ、DRAM1はREF.期間に入る。DRAM2は予定どおりWORK期間に入り待機状態となる。リードアクセスの場合はデータがDRAM1からCACHEに引き継がれる。ライトアクセスの場合は継続していたアクセスが終了したら、CACHEに書き込まれたデータをDRAM1とDRAM2に書き戻す。書き戻しはそれぞれのDRAMがREF.期間に入ったときに行う。両方の書き戻しが終了すればCACHEの内容はクリアされる。このようにCACHEを使用してWORK期間とREF.期間にまたがるアクセスや、一回または複数回のWORK期間を超えるアクセスを処理することができる。
図42は本発明であるメモリモジュールの動作波形の一例を示したものである。A0〜A20, S-/CE1, S-CE2, S-/LB, S-/UB, S-/OE, S-/WEはメモリモジュールへ入力される信号で、いわゆる非同期SRAMのインターフェイス信号である。データ入出力信号I/O0〜I/O15はデータの入力と出力を分けて夫々DIN、DOUTとして表した。MMU, ATD, DTDは夫々MMU回路、ATD回路、CTD回路の出力信号を表している。D1-CLKはDRAM1へ供給されるクロック、D1-COMはDRAM1へ供給されるコマンド信号の総称、 D1-A0〜D1-A15はDRAMのDRAM1へ供給されるアドレス信号、D1-DQ0〜D1-DQ15はDRAMのI/O線はDRAM1の入出力データ信号である。D2-CLKはDRAM2へ供給されるクロック、D2-COMはDRAM2へ供給されるコマンド信号の総称、 D2-A0〜D2-A15はDRAMのDRAM2へ供給されるアドレス信号、D2-DQ0〜D2-DQ15 はDRAMのI/O線はDRAM2の入出力データ信号である。
まず、最初に行われているリードアクセスについて説明する。アドレスA0〜A24が入力されるとMMU回路は変換したアドレスを出力する。 ATD回路はアドレスA0〜A24とコマンド類(S-/CE1, S-CE2, S-/LB, S-/UB, S-/OE, S-/WE)の変化を検知し、アドレスとコマンドが確定するとパルスを出力する。このパルスをきっかけにWORK期間中のDRAM1へバンクアクティブコマンドAとロウアドレスRa、続いてリードコマンドRとカラムアドレスCoが発行される。DRAM1から読み出されたデータはD-DQ0〜D-DQ15に出力され、一旦R/W BUFFERを通してからI/O0〜I/O15へ出力される。また、REF.期間中のDRAM2にはバンクアクティブコマンドAとプリチャージコマンドPによって、リフレッシュが行われる。次のサイクルではライトアクセスの実行例を示した。ライトアクセスの場合もリードアクセスと同様にATD信号の立ち下がりをきっかけにバンクアクティブコマンドAとロウアドレスRaがDRAM1およびDRAM2へ発行される。ライトアクセス時にリフレッシュ動作が行われていないので、コマンドおよびアドレスはDRAM1およびDRAM2双方に発行される。その後、CTD回路がコマンド類(S-/CE1, S-CE2, S-/LB, S-/UB, S-/OE, S-/WE)の変化を検知してライト動作であること認識し、パルスを出力する。このパルスをきっかけにライトコマンドWとカラムコマンドCoがDRAM1およびDRAM2双方へ発行されてライトが実行される。
以上説明した実施例によれば、SRAMインターフェイス方式を踏襲しながら安価な汎用DRAMを用いた大容量メモリモジュールが実現出来る。本発明による制御回路(CTL#LOGIC)ではDRAMが使用されているがDRAMに必要なリフレッシュは制御回路(CTL#LOGIC)によって実行されるためSRAMと同様にリフレッシュを考慮せずに使用することが出来る。さらに、DRAMにおけるデータ保持の二重化とリフレッシュを行うタイミングおよびロードやストア命令によるDRAMへの内部アクセスを調整することによりDRAMのリフレッシュや内部アクセスをメモリモジュール外部から隠蔽することが出来るため、本メモリモジュールにアクセスする場合にリフレッシュやDRAMの内部アクセスを考慮してタイミングを調整する必要は無い。従って従来のSRAMだけを用いたメモリモジュールと同様に使用することが出来るため、従来システムを変更せずに大容量メモリモジュールを使用することが出来る。また、DRAMのリフレッシュ間隔を狭めることによって高温時にもDRAMを動作させることが可能となり、使用温度範囲の広いメモリモジュールを実現できる。一方、低温時にはDRAMのリフレッシュ間隔を広げることによって、データ保持に必要な電力を削減し、データ保持電力の少ないメモリモジュールを実現することが出来る。パワーモジュールPMの働きによってはDRAMの一部、あるいは全部の電源供給を停止して記憶領域を限定してデータ保持に必要な電力を削減する事もできる。さらに、制御回路の電源供給も停止してよりデータ保持電力の少ないメモリモジュールを実現することも出来る。また、このような場合にはMMUによってデータ保持を行う記憶領域が自在に設定出来るため、様々な機器に対応して幅広く用いることが可能である。
<実施例5>
図43は本発明におけるメモリモジュールの第四の実施例を示したものである。図43(A)には上面図、図43(B)には断面図を示した。本メモリモジュールはボールグリッドアレイ(BGA)によって装置に実装する基盤(例えばガラスエポキシ基板でできたプリント回路ボードPCB)上にCHIP1(FLASH)、CHIP2(SRAM+CTL#LOGIC)、CHIP3(DRAM1) 及びCHIP4(DRAM2)が搭載されている。とくに制限されないが、CHIP3及びCHIP4にはいわゆるチップの中央に信号及び電源パッド列が1列に並ぶ汎用DRAMのベアチップが使用されている。また、とくに制限されないが、CHIP1にはいわゆるチップの一端に信号及び電源パッド列が1列に並ぶFLASHの汎用ベアチップが使用されている。
CHIP1と基盤上のボンディングパットはボンディングワイヤ(PATH2)で接続され、CHIP2と基盤上のボンディングパットはボンディングワイヤ(PATH3)で接続されている。CHIP3及びCHIP4はCHIP2とボンディングワイヤ(PATH1)で接続される。CHIP1とCHIP2とボンディングワイヤ(PATH4)で接続される。チップの搭載された基盤上面は樹脂モールドが行われて各チップと接続配線を保護する。なお、さらにその上から金属、セラミック、あるいは樹脂のカバー(COVER)を使用しても良い。
本発明による実施例ではプリント回路ボードPCB上にベアチップを直接搭載する為、実装面積の小さなメモリモジュールを構成することが出来る。また、各チップを近接して配置することが出来るため、チップ間配線長を短くすることが出来る。チップ間の配線及び各チップと基盤間の配線をボンディングワイヤ方式で統一することによって少ない工程数でメモリモジュールを製造することが出来る。さらにチップ間をボンディングワイヤで直接配線することによって基盤上のボンディングパット数とボンディングワイヤの本数を削減して少ない工程数でメモリモジュールを製造することが出来る。大量に量産される汎用DRAMのベアチップを用いることができるため、メモリモジュールを安価に安定供給することが出来る。樹脂のカバーを使用した場合にはより強靭なメモリモジュールを構成することが出来る。セラミックや金属のカバーを使用した場合には強度のほか、放熱性やシールド効果に優れたメモリモジュールを構成することが出来る。
図44は本発明におけるメモリモジュールの図43の変形例である。図44(A)には上面図、図44(B)には断面図を示した。この例ではCHIP2(SRAM+CTL#LOGIC)がCHIP3及びCHIP4上に搭載されている。CHIP2とCHIP3又はCHIP4への配線にはPATH5が用いられている。CHIP1と基盤上のボンディングパットはボンディングワイヤ(PATH2) で接続され、CHIP2と基盤上のボンディングパットはボンディングワイヤ(PATH3) で接続されている。CHIP1とCHIP2とボンディングワイヤ(PATH4)で接続される。
この実装方法によってプリント回路ボードPCBの面積を削減する事が出来る。また、積層したチップ間の配線PATH1によって、配線長を短くする事が出来る為、配線の信頼性を向上できるほか、外部へのノイズ輻射を低減することが出来る。
<実施例6>
図45は本発明におけるメモリモジュールを利用した携帯電話機の実施例を示したものである。携帯電話は、アンテナANT、無線ブロックRF、ベースバンドブロックBB、音声コーデックブロックSP、スピーカーSK、マイクMK、プロセッサCPU、液晶表示部LCD、キーボードKEY、本発明のメモリモジュールMEMで構成される。
通話時の動作を説明する。アンテナANTを通って受信された音声は無線ブロックで増幅され、ベースバンドブロックBBへ入力される。ベースバンドブロックBBでは、音声のアナログ信号をデジタル信号に変換し、エラー訂正と復号処理おこない、音声コーデックブロックSPへ出力する。音声コーデックブロックがデジタル信号をアナログ信号に変換しスピーカーSKに出力すると、スピーカーから相手の声が聞こえる。
携帯電話機から、インターネットのホームページにアクセスし、音楽データをダウンロードし、再生して聞き、最後にダウンロードした音楽データを保存するという一連の作業を行うときの動作を説明する。メモリモジュールMEMには、基本プログラム、アプリケーションプログラム(メール、Webブラウザ、音楽再生、ゲームなど)が格納されている。キーボードより、Webブラウザの起動を指示すると、メモリモジュールMEM内のFLASHに格納されているWebブラウザのプログラムが、同じメモリモジュール内のDRAMへと転送される。DRAMへの転送が終了するとプロセッサCPUはDRAM内のWebブラウザのプログラムを実行し、液晶表示LCDにWebブラウザが表示される。所望のホームページにアクセスし、気に入った音楽データのダウンロードをキーボードより指示すると、音楽データは、アンテナANTを通って受信され、無線ブロックで増幅され、ベースバンドブロックBBへ入力される。ベースバンドブロックBBでは、アナログ信号である音楽データをデジタル信号に変換し、エラー訂正と復号処理おこなう。最終的に、デジタル信号化された音楽デーたはメモリモジュールMEMのDRAMへ一旦、格納され、FLASHへと転送される。次にキーボードKEYより、音楽再生プログラムの起動を指示するとメモリモジュールMEM内のFLASHに格納されている音楽再生プログラムが、同じメモリモジュール内のDRAMへと転送される。DRAMへの転送が終了するとプロセッサCPUはDRAM内の音声再生プログラムを実行し、液晶表示LCDに音楽再生プログラムが表示される。キーボードより、DRAMへダウンロードした音楽データを聞くための指示を行うと、プロセッサCPUは音楽再生プログラムを実行し、DRAMへ保持している音楽データ処理し、最終的にスピーカーSKから音楽が聞こてくる。このとき、本発明のメモリモジュールは大容量のDRAMを用いているため、Webブラウザと音楽再生プログラムはDRAMに保持されており、どちらのプログラムもCPUによって同時に実行されている。さらに、電子メールプログラムを起動し、電子メールプログラム、メールの送受信も同時にできる。Webのブラウザを停止した場合でも、メモリモジュール内のDRAMには保持しているため、再起動時はすぐに起動することができる。キーボードより電源遮断の指示が入力されると、メモリモジュールは、SRAMのみ動作させ、最低限のデータ時保持を行い、消費電力を極端に小さくできる。
このように、本発明のメモリモジュールを用いることにより、大量のメール、音楽再生、アプリケ-ションプログラムや音楽データ、静止画像データ、動画データなどを格納でき、さらに複数のプログラムを同時に実行できる。
以上説明したように本発明の好ましい実施例によって得られる効果は以下の通りである。FLASHのデータをDRAMにコピーすることで、FLASHデータの読み出しおよび書き込み速度をSDRAMやSRAMと同等にすることができる。