(57)【要約】【課題】セルフリフレッシュ動作中にデータの書き込みアクセスの指示があっても、正しいデータを保持する。【解決手段】半導体装置は、DRAM３０と、このDRAM３０のデータを保持するためのキャッシュメモリ１４と、バス１１に接続されたCPU１２と、バス１１とDRAM３０との間に接続され、バス１１から送られてくるアクセス指示に従い、DRAM３０に対してアクセス制御を行うDRAM制御回路１６とを備えている。DRAM制御回路１６では、バス１１から送られてくるアクセス指示を受信し、所定の制御処理を行ってバス１１へ応答を返すバス制御回路１６aと、DRAM制御回路１６の動作設定を行うレジスタ１６bと、DRAM３０への制御信号を生成する信号生成回路１６cと、DRAM３０がセルフリフレッシュモードの時にバス１１からのアクセス指示を検出した場合に、そのアクセス指示の内容を保持するFIFOバッファ２０とを有している。【選択図】図１
2007115087.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する記憶装置と、
前記記憶装置のデータを保持するためのキャッシュメモリと、
信号伝送用のバスに接続され、半導体装置全体を制御する中央処理装置と、
前記バスと前記記憶装置との間に接続され、前記バスから送られてくるアクセス指示に従い、前記記憶装置に対してアクセス制御を行う記憶装置用制御回路と、
を備えた半導体装置であって、
前記記憶装置用制御回路は、
前記バスから送られてくる前記アクセス指示を受信し、所定の制御処理を行って前記バスへ応答を返すバス制御回路と、
前記記憶装置用制御回路の動作設定を行う設定回路と、
前記記憶装置への制御信号を生成する信号生成回路と、
前記記憶装置がセルフリフレッシュモードの時に前記バスからの前記アクセス指示を検出した場合に、前記アクセス指示の内容を保持するデータ保持回路と、
を有することを特徴とする半導体装置。
【請求項２】
前記設定回路は、レジスタであり、前記データ保持回路は、バッファであることを特徴とする請求項１記載の半導体装置、
【請求項３】
前記バッファは、前記アクセス指示の内容を保持するバッファ本体と、前記バッファ本体が満杯になったことを検出して前記セルフリフレッシュから復帰するための信号を生成する回路と、を有することを特徴とする請求項２記載の半導体装置。
【請求項４】
データの同期が終了した時点で自動的に前記セルフリフレッシュモードに移行する回路構成にしたことを特徴とする請求項３記載の半導体装置。
【請求項５】
前記バッファ本体は、ファーストイン・ファーストアウト・メモリであることを特徴とする請求項３又は４記載の半導体装置。
【請求項６】
バスと、
データを格納する記憶装置と、
前記バスと前記記憶装置とに接続され、前記記憶装置がセルフリフレッシュモードであって前記バスからのアクセス指示を検出した場合、前記アクセス指示の内容を保持するデータ保持回路とにより構成されることを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置（例えば、ダイナミック・ランダム・アクセス・メモリ（以下「DRAM」という。）、このDRAMのデータを保持するためのキャッシュメモリ、中央処理装置（以下「CPU」という。）、及びDRAM制御回路を有する半導体装置に関するものである。
【背景技術】
【０００２】
従来、DRAMを制御する半導体装置に関する技術としては、例えば、次のような文献に記載されるものがあった。
【０００３】
【特許文献１】特開平８−２７３３５４号公報
【特許文献２】特開２０００−７６８５０号
【特許文献３】特開２００３−５９２６５号公報
【０００４】
特許文献１には、セルフリフレッシュ動作時においても、DRAMアクセス要求に対応できるDRAMセルリフレッシュ制御回路の技術が記載されている。特許文献２には、セルフリフレッシュ機能付きDRAMに関する半導体記憶装置の技術が記載されている。又、特許文献３には、キャッシュメモリ付きCPUによってDRAMリフレッシュ制御を行う半導体装置の技術が記載されている。
【０００５】
図７は、従来のDRAM制御回路を有する半導体装置を示す概略の構成図である。この図７では、DRAMをバスに接続して使用する場合の構成例が示されている。
【０００６】
図７の半導体装置は、信号伝送用のバス１を有している。バス１には、例えば、装置全体を制御するCPU２と、このCPU２によりアクセスされるプログラム（命令）用キャッシュメモリ３及びデータ用キャッシュメモリ４と、各種の機能ブロック（Intellectual Proprety：IP)５−１〜５−ｎと、DRAM制御回路６により制御されるデータ格納用のDRAM７とが接続されている。CPU２によりアクセスされるキャッシュメモリ３，４の一般的な機能については、特許文献３に記載され、DRAMのリフレッシュ機能に関する一般的な構成については、特許文献２に記載されている。
【０００７】
半導体装置では、DRAM７以外にスタティック・ランダム・アクセス・メモリ（以下「SRAM」という。）やリード・オンリ・メモリ（以下「ROM」という。）等の多様なメモリを接続する可能性があるため、一般的には、バス１とDRAM７との間に、DRAM７を制御するためのDRAM制御回路６が置かれる。DRAM制御回路６は、バス１から送られてくるアクセス指示を受理してその応答を返すバス制御回路６aと、DRAM制御回路自身の動作設定を行う設定レジスタ６bと、DRAM７に対して適切なプロトコルで制御信号を生成する信号生成回路６cとから構成されている。
【０００８】
DRAM７は、SRAMに比べると、アクセス速度が遅いが、大容量で安価であるという利点がある。このDRAM７では、容量に電荷を溜めることでデータを保持する構造なので、容量からのリーク放電によるデータ消失を防ぐために、一定間隔毎に電荷を再チャージするリフレッシュ動作（再書き込み動作）を必要とする。リフレッシュ動作には、オートリフレッシュモードとセルフリフレッシュモードがある。オートリフレッシュモードでは、信号生成回路６ｃからDRAM７に対してコマンド（命令）を発行すると、DRAM７の内部にあるリフレッシュカウンタが示すロウアドレス（行アドレス）に対してリフレッシュ動作を行う。データを保持するためには、リフレッシュサイクル内に全てのロウアドレスに対してDRAM７のリフレッシュを行う必要がある。
【０００９】
図８は、図７の半導体装置におけるバスアクセス発生時の処理フローを示す図である。
バス１側からアクセス指示（バスアクセス）があると（ステップＳ１）、バス制御回路６ａによりセルフリフレッシュモードか否かが判定され（ステップＳ２）、セルフリフレッシュモードのときには、バスアクセスが無効（Invalid）となり（ステップＳ３）、セルフリフレッシュモードでないときには、信号生成回路６ｃからの制御信号によりDRAM ７に対するリード（Read)／ライト（Write)のアクセスが実行される（ステップＳ４）。
【００１０】
ステップＳ３のセルフリフレッシュモードでは、クロックを非活性にしてデバイスの消費電力を低く抑えながら、内部のリフレッシュカウンタを用いて自動的にリフレッシュ動作を行う。つまり、セルフリフレッシュモードでは、バス１からの高速なクロックの供給を停止して、低消費電力の状態に入る。DRAM７内のリフレッシュカウンタを動作させるクロックは、別経路で入力される十分に遅いクロックなので、消費電力を低減することができる。この動作モードは、長時間、デバイスにアクセスしない場合に有効である。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
例えば、近年のマイクロプロセッサユニット（以下「MPU」という。）は、ハーバードアーキテクチャを採用し、アクセス速度を向上させるためにプログラム用キャッシュメモリ３及びデータ用キャッシュメモリ４を搭載しているものが多く出てきている。このようなプログラムとデータ用で別々のポートを持つMPUでは、アクセス速度の速いデータ用キャッシュメモリ４の対象領域を、アクセス速度の遅いDRAM７にする場合がある。
【００１２】
キャッシュメモリ４をライトバックモードで動作させていると、キャッシュメモリ４にミスヒットが発生した時に、このキャッシュメモリ４から追い出されるデータをメモリに書き戻す動作が発生する。即ち、キャッシュメモリ４にデータを書き込む際に、このキャッシュメモリ４にミスヒットが発生した場合、新しいデータを入れるために古いデータを消す必要がある。消そうとしているデータが、DRAM７にあるデータより新しいデータになっていれば、データの整合性を保つために、消す前にそのデータをDRA７に書き戻さなければならない。そのため、DRAM７に対してデータを書き戻す動作が必要になるが、このようなデータの書き戻しはいつ発生するか分からないという問題がある。
【００１３】
特に、DRAM７をセルフリフレッシュモードに切り替えた後でキャッシュメモリ４のデータの入れ替えが発生した場合、DRAM７がアクセスを無効なものとして受け付けずにデータが消失してしまう。つまり、セルフリフレッシュモードの間は、バス１からのクロックの供給が止まっているため、書き込みアクセスの指示があっても、実際にはDRAM７には書き込みアクセスが行われず、データが失われてしまう。
【００１４】
この問題をCPU２のソフトウェア側の工夫で回避しようとすると、キャッシュメモリ４の中身とDRAM７の中身を全て同期させる処理が必要になるが、キャッシュメモリ全面にアクセスすることになるため、それに応じた時間が掛かってしまう。このように、CPU２のソフトウェア側で対処しようとすると、セルフリフレッシュモードに移行する前に、キャッシュメモリ４の全てのデータをDRAM７と同期させる等、時間が掛かる処理が必要となり、これらを従来の特許文献１〜３を組み合わせて解決することが困難であるという課題があった。
【００１５】
なお、オートリフレッシュモードでは、バス１からDRAM７へのアクセスが問題とならない。オートリフレッシュモードでは、CPU２のソフトウェア側からコマンドを発行して処理を開始する。リフレッシュ動作自体はごく短時間で終わるし、コマンドを発行すると言うことは、その間バス１を占有しているということなので、オートリフレッシュとバスアクセスが競合することが無く、セルフリフレッシュモード時のような問題が生じない。
【００１６】
本発明では、上記の課題を解決するために、セルフリフレッシュ動作中にデータの書き込みアクセスの指示があっても、正しいデータを保持することができるDRAM制御回路を有する半導体装置を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明の半導体装置は、データを格納する記憶装置と、前記記憶装置のデータを保持するためのキャッシュメモリと、信号伝送用のバスに接続され、半導体装置全体を制御するCPUと、前記バスと前記記憶装置との間に接続され、前記バスから送られてくるアクセス指示に従い、前記記憶装置に対してアクセス制御を行う記憶装置用制御回路とを備えている。そして、前記記憶装置用制御回路では、前記バスから送られてくる前記アクセス指示を受信し、所定の制御処理を行って前記バスへ応答を返すバス制御回路と、前記記憶装置用制御回路の動作設定を行う設定回路と、前記記憶装置への制御信号を生成する信号生成回路と、前記記憶装置がセルフリフレッシュモードの時に前記バスからの前記アクセス指示を検出した場合に、前記アクセス指示の内容を保持するデータ保持回路とを有している。
【発明の効果】
【００１８】
本発明によれば、セルフリフレッシュ動作中にデータの書き込みアクセスの指示があっても、正しいデータを保持することができる。即ち、セルフリフレッシュモードに移行した直後にデータアクセスがあると、再びセルフリフレッシュモードに移行することで、低消費電力化の利点を保ったまま、データの整合性を保持することができる。特に、データ保持回路を設けているので、全て記憶装置用制御回路側だけで、データの整合性を保持することが可能になる。
【００１９】
又、バッファ本体が満杯になったことを検出してセルフリフレッシュから復帰するための信号を生成する回路を有する場合は、バッファのサイズを最小限に抑えながら、データの整合性を保持することができる。
【発明を実施するための最良の形態】
【００２０】
本発明を実施するための最良の形態の半導体装置は、データを格納するDRAMと、前記DRAMのデータを保持するためのキャッシュメモリと、信号伝送用のバスに接続され、半導体装置全体を制御するCPUと、前記バスと前記DRAMとの間に接続され、前記バスから送られてくるアクセス指示に従い、前記DRAMに対してアクセス制御を行うDRAM制御回路とを備えている。そして、前記DRAM制御回路では、前記バスから送られてくる前記アクセス指示を受信し、所定の制御処理を行って前記バスへ応答を返すバス制御回路と、前記DRAM制御回路の動作設定を行うレジスタと、前記DRAMへの制御信号を生成する信号生成回路と、前記DRAMがセルフリフレッシュモードの時に前記バスからの前記アクセス指示を検出した場合に、前記アクセス指示の内容を保持するファーストイン・ファーストアウト（以下「FIFO」という。）型バッファとを有している。
【実施例１】
【００２１】
（実施例１の構成）
図１（ａ）、（ｂ）は、本発明の実施例１を示す半導体装置の概略の構成図であり、同図（ａ）は半導体装置の全体構成図、及び同図（ｂ）は同図（ａ）中のFIFOバッファの構成図である。
【００２２】
図１（ａ）に示される半導体装置は、信号伝送用のバス１１を有している。バス１１には、例えば、装置全体を制御するCPU１２と、このCPU１２によりアクセスされるプログラム用キャッシュメモリ１３及びデータ用キャッシュメモリ１４と、各種の機能ブロック（IP)１５−１〜１５−ｎと、記憶装置用制御回路（例えば、DRAM制御回路）１６により制御されるデータ格納用の記憶装置（例えば、リフレッシュ機能を有するDRAM）３０とが接続されている。
【００２３】
DRAM制御回路１６は、バス１１に接続されたバス制御回路１６aと、設定回路（例えば、設定レジスタ）１６bと、信号生成回路１６cと、データ保持回路であるバッファ（例えば、FIFOバッファ）２０とを有している。バス制御回路１６aは、バス１１から送られてくるアクセス指示を受理してその応答を返す回路であり、この回路１６aに、設定レジスタ１６b、信号生成回路１６c、及びFIFOバッファ２０が相互に接続されている。設定レジスタ１６bは、DRAM制御回路自身の動作設定を行う回路であり、この回路１６bに、信号生成回路１６cが接続されている。信号生成回路１６cは、DRAM３０に対して適切なプロトコルで制御信号を生成する回路である。FIFOバッファ２０は、DRAM３０がセルフリフレッシュモード時にバス１１からのアクセス指示を検出した場合にそのアクセス指示の内容を保持する回路である。
【００２４】
図１（ｂ）に示されるFIFOバッファ２０は、バス制御回路１６aから与えられるアドレスADとデータDA、アクセス種別等（例えば、制御信号CS、書き込み要求信号WD、読み出し要求信号RD等）を一塊としたデータを複数個保持するバッファ本体（例えば、FIFOメモリ）２１と、このFIFOメモリ２１から出力される書き込み位置（例えば、書き込みアドレスWA）と読み出し位置（例えば、読み出しアドレスRA)を比較して一致信号AGを出力するアドレス比較回路２２と、セルフリフレッシュ中にアクセス指示があったことを検出する回路とから構成されている。
【００２５】
セルフリフレッシュ中にアクセス指示があったことを検出する回路は、一致信号AGを反転するインバータ２３と、このインバータ２３の出力信号とデータ同期要求信号SAとの論理和を求める２入力のオアゲート（以下「ORゲート」という。）２４と、このORゲート２４の出力信号とバス制御回路１６aから与えられるクリア信号CLとの論理積を求めて不一致検出信号を出力する２入力のアンドゲート（以下「ANDゲート」という。）２５と、このANDゲート２５から出力される不一致検出信号を保持してデータ同期要求信号SAを出力する不一致検出レジスタ２６とにより構成されている。
【００２６】
データ同期要求信号SAは、FIFOメモリ２１が満杯になったことを検出してセルフリフレッシュから復帰するための信号である。この信号SAは、アドレス比較回路２２、インバータ２３、ORゲート２４、ANDゲート２５、及び不一致検出レジスタ２６により構成される回路により生成される。FIFOメモリ２１の出力データ、一致信号AG、及びデータ同期要求信号SAは、バス制御回路１６aに与えられる。
【００２７】
図２は、図１中のDRAM３０を示す概略の構成図である。
このDRAM３０は、例えば、従来とほぼ同様に、セルフリフレッシュ機能を有するものであり、データ格納用のメモリセルアレイ３１を備えている。メモリセルアレイ３１は、直交する複数のワード線WL及びビット線BLを有し、これらの交差箇所にそれぞれ接続された複数のメモリセルがマトリクス状に配列されている。複数のワード線WLは、ロウアドレスをデコードするロウアドレスデコーダ３２により選択される。複数のビット線BL上に読み出された読み出しデータは、センスアンプ３３により検出及び増幅され、コラムアドレス（列アドレス）をデコードするコラムアドレスデコーダ３４により選択された後、アウトプットイネーブル信号OEにより活性化されるデータ出力バッファ３５により、入出力端子I/Oへ出力される。入出力端子I/Oから入力される書き込みデータは、反転ライトイネーブル信号/WEにより活性化されるデータ入力バッファ３６により、コラムアドレスデコーダ３４により選択されるビット線BLへ送られ、このビット線BLと、ロウアドレスデコーダ３２により選択されるワード線WLとの交差箇所に位置するメモリセルに書き込まれる。
【００２８】
外部から反転ロウアドレスストローブ信号/RAS、反転コラムアドレスストローブ信号/CAS、及び反転ライトイネーブル信号/WEが、クロックジェネレータ３７に与えられると、このクロックジェネレータ３７からクロックが出力されてアドレスカウンタ３８へ与えられる。バス１１から供給される高速のクロックCLKに基づいて生成される低速のセルフリフレッシュ用クロックCK1、又は、比較的高速のオートリフレッシュ用クロックCK2のいずれか一方が、リフレッシュカウンタ３９に与えられると、このリフレッシュカウンタ３９により、その入力クロック数がカウント（計数）され、このカウント結果がアドレスカウンタ３８に与えられる。すると、アドレスカウンタ３８により、メモリセル選択用のアドレスが生成される。このアドレス中のロウアドレスが、ロウアドレスバッファ４０に取り込まれてロウアドレスデコーダ３２へ送られ、そのアドレス中のコラムアドレスが、コラムアドレスバッファ４１に取り込まれてコラムアドレスバッファ３４へ送られる。
【００２９】
このような構成のDRAM３０では、データの書き込み期間と読み出し期間との間において、全メモリセルのリフレッシュが行われる。セルフリフレッシュモードでは、供給されるセルフリフレッシュ用クロックCK1がリフレッシュカウンタ３９でカウントされ、このカウント値に基づき、アドレスカウンタ３８によりリフレッシュ用のアドレスが生成され、このアドレスに基づいて全メモリセルのリフレッシュが自動的に行われる。リフレッシュ中は、このDRAM３０に対してアクセスすることができない。これに対し、オートリフレッシュモードでは、CPU１２側からの指示に基づき、オートリフレッシュ用クロックCK2を用いて、リフレッシュカウンタ３９及びアドレスカウンタ３８によってリフレッシュ用のアドレスが生成され、このアドレスによりメモリセルがリフレッシュされる。
【００３０】
（実施例１の動作）
図３は、図１の半導体装置におけるバスアクセス時の処理フローを示す図である。
バス１１からバスアクセスの要求があると（ステップＳ１１）、DRAM制御回路１６内のバス制御回路１６aにより、セルフリフレッシュの要求か否かが判定される（ステップＳ１２）。ステップＳ１２の判定結果が通常のアクセス要求の場合は、バス制御回路１６ａの制御により、信号生成回路１６ｃからDRAM３０へ、アクセス用の制御信号等（例えば、信号/RAS,/CAS,/WE,OE等)が出力され、DRAM３０に対するデータの読み出し又は書き込みが行われる。DRAM３０がセルフリフレッシュモード時以外は、FIFOバッファ２０が動作しない。
【００３１】
ステップＳ１２の判定結果がセルフリフレッシュモードの場合には、バス制御回路１６ａの制御によってFIFOバッファ２０が動作し、DRAM３０がセルフリフレッシュモードへ移行する（ステップＳ１３）。DRAM３０がセルフリフレッシュモードに移行する時、バス制御回路１６aからFIFOバッファ２０へ出力されるクリア信号CLが一度論理“0”になり、FIFOバッファ２０内のANDゲート２５の出力信号が“０”になって不一致検出レジスタ２６の値が“０”になる。その後、クリア信号CLが“１”になる。
【００３２】
セルフリフレッシュモードでは、バス１１からDRAM３０への高速のクロックCLKの供給が停止され、これに代えて低速のクロックCK1によってDRAM３０の全メモリセルに対するリフレッシュが行われる。セルフリフレッシュモード中のバス１１からのアクセスの内容（例えば、制御信号CS、アドレスAD、データDA、書き込み要求WD、読み出し要求RD）は、FIFOメモリ２１に書き込まれて保持される（ステップＳ１３）。FIFOメモリ２１にデータDAが書き込まれると、書き込みアドレスWAと読み出しアドレスRAとがアドレス比較回路２２により比較され、FIFOメモリ２１が満杯か否かが判定される（ステップＳ１４）。判定結果が満杯でない場合は、書き込みアドレスWAと読み出しアドレスRAとが不一致になるので、アドレス比較回路２２から出力される一致信号AGが“０”になり、この不一致結果がインバータ２３により反転され、ORゲート２４及びANDゲート２５を介して不一致検出レジスタ２６に“1”が書き込まれる。不一致検出レジスタ２６から出力されるデータ同期要求信号SAは、クリア信号CLが“０”にならない限り“0”にはならないので、書き込みがあったことを示す。
【００３３】
ステップＳ１４の判定結果が満杯の場合は、一致信号AGが“１”、データ同期要求信号SAが“１”なるので、バス制御回路１６a及び信号生成回路１６cの制御により、DRAM３０のセルフリフレッシュ動作が退避（Exit、中止）させられ（ステップＳ１５）、FIFOメモリ２１に保持されたアクセスの内容が順に出力されてDRAM３０へ書き込まれ、そのアクセスが実行される（ステップＳ１６）。この動作は、FIFOメモリ２１が空（Empty)になるまで続けられる（ステップＳ１７）。
【００３４】
FIFOメモリ２１が空になると、書き込みアドレスWAと読み出しアドレスRAが一致するので、アドレス比較回路２２から出力される一致信号AGが“１”になり、これがインバータ２３で反転され、ORゲート２４及びANDゲート２５を介して“０”が不一致検出レジスタ２６に書き込まれる。これを受けて、バス制御回路１６aの制御により、DRAM３０のセルフリフレッシュ動作が復帰（Enter)する（ステップＳ１８）。
【００３５】
DRAM３０がCPU１２からのセルフリフレッシュ解除コマンドを受け取ると、通常のリード／ライト動作に復帰する。セルフリフレッシュモードから通常動作に復帰するときに、不一致検出レジスタ２６の値がバス制御回路１６ａにより確認され、、FIFOメモリ２１にデータの書き込みが保持されていれば、その内容がDRAM３０に反映される。
【００３６】
（実施例１の効果）
本実施例１の効果が顕著であることを説明するために、例えば、従来の図７の半導体装置を改良した参考例１、２を挙げ、この参考例１、２と本実施例１を比較することにより、本実施例１に下記の（１）、（２）のような顕著な効果があることを説明する。
【００３７】
（１）  参考例１、２
参考例１として、従来の図７の半導体装置において、セルフリフレッシュ中にバス１からDRAM７へのアクセス指示があると、DRAM７を通常動作モードに復帰させた後、データアクセスを行い、バスアクセスを完了させる。それ以外の場合は、通常のDRAM制御回路６として動作させる、という構成が考えられる。このような構成では、次のような利点がある。
【００３８】
従来のDRAM制御回路６では、セルフリフレッシュ中のアクセスは無効なので、CPU２のソフトウェア側でキャッシュメモリ４とDRAM７のデータを同期させる必要がある。しかし、本参考例１を用いると、DRAM７のセルフリフレッシュモードを利用する際に、ソフトウェアによる時間の掛かる処理を行わなくても、データの整合性を保持することが可能になる。
【００３９】
又、参考例２として、従来の図７の半導体装置において、バス制御回路６ａにより制御される割り込み信号発生回路を新たに設け、その割り込み信号によりCPU２に対して割り込み処理を行わせる、という構成が考えられる。この構成の動作では、セルフリフレッシュ中に、DRAM７へアクセスがあると、DRAM７を通常動作モードに復帰させた後、データアクセスを完了させる。その後に、割り込み信号発生回路から割り込み信号を発生し、CPU２に対して割り込み処理を行わせて通常動作モードに復帰したことを知らせることで、再びセルフリフレッシュモードに移行させることができる。それ以外の状態では、通常のDRAM制御回路６として動作する。このような構成では、次のような利点がある。
【００４０】
参考例１では、セルフリフレッシュモードに移行した直後にデータアクセスがあると、復帰した状態に留まるため、セルフリフレッシュモードによる低消費電力化の利点（アドバンテージ）がなくなってしまう。これに対して本参考例２では、再びセルフリフレッシュモードに移行することで、低消費電力化のアドバンテージを保ったまま、データの整合性を保持することができる。
【００４１】
（２）  参考例２との比較
参考例２では、DRAM制御回路６から出る配線を増やさなければならず、CPU２での処理も必要になるという欠点がある。そこで、これを解消するために本実施例１では、FIFOバッファ２０を設けている。これにより、全てDRAM制御回路１６側だけで、データの整合性を保持することが可能になる。
【実施例２】
【００４２】
（実施例２の構成）
図４（ａ）、（ｂ）は、本発明の実施例２を示す半導体装置の概略の構成図であり、同図（ａ）は半導体装置の全体構成図、及び同図（ｂ）は同図（ａ）中のFIFOバッファの構成図である。この図４において、実施例１を示す図１中の要素と共通の要素には共通の符号が付されている。
【００４３】
本実施例２の半導体装置では、図１中のFIFOバッファ２０とは異なる構成のFIFOバッファ２０Aを設けている。このFIFOバッファ２０Aでは、DRAM３０とバス１１とのインタフェース部分に、実施例１と同様に、アドレスとデータ、アクセス種別等を一塊としたデータを複数個保持するFIFOメモリ２１と、実施例１と同様に書き込み／読み出し位置を比較して一致信号AGを出力するアドレス比較回路２２と、実施例１と同様にセルフリフレッシュ中にアクセスがあったことをインバータ２３、ORゲート２４及びANDゲート２５により検出して保持する不一致検出レジスタ２６とを有している。本実施例２のFIFOバッファ２０Aでは、新たに、FIFOメモリ２１が満杯になったことを例えば２入力ANDゲート２７−１、２入力ORゲート２７−２、及び２入力ANDゲート２７−３により検出してバッファ満杯検出レジスタ２７−４により保持する回路を追加している。
【００４４】
ここで、ANDゲート２７−１は、アドレス比較回路２２及び不一致検出レジスタ２６の出力側に接続され、アドレス比較回路２２から出力される一致信号AGと、不一致検出レジスタ２６から出力されるデータ同期要求信号SAとの論理積を求める回路であり、このANDゲート２７−１の出力側及びバッファ満杯検出レジスタ２７−４の出力側に、ORゲート２７−２が接続されている。ORゲート２７−２は、ANDゲート２７−１の出力信号と、バッファ満杯検出レジスタ２７−４から出力される復帰要求信号RTとの論理和を求める回路であり、このORゲート２７−２の出力側にANDゲート２７−３が接続されている。ANDゲート２７−３は、ORゲート２７−２の出力信号とクリア信号CLとの論理積を求める回路であり、この出力側に、復帰要求信号RTを出力するバッファ満杯検出レジスタ２７−４が接続されている。
【００４５】
(実施例２の動作）
図５は、図４の半導体装置におけるバスアクセス時の処理フローを示す図である。
バス１１からバスアクセスの要求があると（ステップＳ２１）、実施例１と同様に、現在、DRAM３０がセルフリフレッシュ中であるか否かが判定される（ステップＳ２２）。ステップＳ２２の判定結果がセルフリフレッシュモード中でない場合は、バス制御回路１６ａの制御により、信号生成回路１６ｃからDRAM３０へ、アクセス用の制御信号等が出力され、DRAM３０に対するデータの読み出し又は書き込みが行われる。DRAM３０がセルフリフレッシュモード時以外は、FIFOバッファ２０Aが動作しない。
【００４６】
ステップＳ２２の判定結果がセルフリフレッシュモードの場合には、バス制御回路１６ａの制御によってFIFOバッファ２０Aが動作し、DRAM３０へのアクセス情報がFIFOバッファ２０Ａへ書き込まれる（ステップＳ２３）。
【００４７】
セルフリフレッシュモードでは、実施例１と同様に、バス１１からDRAM３０への高速のクロックCLKの供給が停止され、これに代えて低速のクロックCK1によってDRAM３０の全メモリセルに対するリフレッシュが行われる。セルフリフレッシュモード中のバス１１からのアクセスの内容は、FIFOメモリ２１に書き込まれて保持される（ステップＳ２３）。FIFOメモリ２１にデータDAが書き込まれると、書き込みアドレスWAと読み出しアドレスRAとがアドレス比較回路２２により比較され、FIFOメモリ２１が満杯か否かが判定される（ステップＳ２４）。判定結果が満杯でない場合は、書き込みアドレスWAと読み出しアドレスRAとが不一致になるので、アドレス比較回路２２から出力される一致信号AGが“０”になり、この不一致結果がインバータ２３により反転され、ORゲート２４及びANDゲート２５を介して不一致検出レジスタ２６に“1”が書き込まれる。不一致検出レジスタ２６から出力されるデータ同期要求信号SAは、クリア信号CLが“０”にならない限り“0”にはならないので、書き込みがあったことを示す。
【００４８】
この際、実施例１と異なり、不一致検出レジスタ２６の値が“1”で、且つ、書き込みアドレスWAと読み出しアドレスRAが一致する場合は、書き込みアドレスWAが一周したことを意味するので、ANDゲート２７−１、ORゲート２７−２及びANDゲート２７−３を介してバッファ満杯検出レジスタ２７−４に“1”が書き込まれる。このバッファ満杯検出レジスタ２７−４から出力される復帰要求信号RTも、クリア信号CLが“0”にならない限り“0”にはならず、FIFOメモリ２１が満杯になったことを示す。
【００４９】
ステップＳ２４の判定結果が満杯の場合は、実施例１と同様に、一致信号AGが“１”、データ同期要求信号SAが“１”なるので、バス制御回路１６a及び信号生成回路１６cの制御により、DRAM３０のセルフリフレッシュ動作が退避（Exit）させられ（ステップＳ２５）、FIFOメモリ２１に保持されたアクセスの内容が順に出力されてDRAM３０へ書き込まれ、そのアクセスが実行される（ステップＳ２６）。この動作は、FIFOメモリ２１が空（Empty)になるまで続けられる（ステップＳ２７）。
【００５０】
FIFOメモリ２１が空になると、実施例１と同様に、書き込みアドレスWAと読み出しアドレスRAが一致するので、アドレス比較回路２２から出力される一致信号AGが“１”になり、これがインバータ２３で反転され、ORゲート２４及びANDゲート２５を介して“０”が不一致検出レジスタ２６に書き込まれる。これを受けて、バス制御回路１６aの制御により、DRAM３０のセルフリフレッシュ動作が復帰（Enter)する（ステップＳ２８）。DRAM３０がセルフリフレッシュモードに移行するとき、バス制御回路１６aからFIFOバッファ２０Aへ出力されるクリア信号CLが一度“0”になり、FIFOバッファ２０A内のANDゲート２５，２７−３の出力信号が“０”になって不一致検出レジスタ２６及びバッファ満杯検出レジスタ２７−４の値が“０”になる。その後、クリア信号CLが“１”になる。
【００５１】
DRAM３０がCPU１２からのセルフリフレッシュモード解除コマンドを受け取ると、通常のリード／ライト動作に復帰する。セルフリフレッシュモードから通常動作に復帰するときに、不一致検出レジスタ２６の値がバス制御回路１６ａにより確認され、、FIFOメモリ２１にデータの書き込みが保持されていれば、その内容がDRAM３０に反映される。この場合は、実施例１と異なり、バッファ満杯検出レジスタ２７−４の値は“0”なので、セルフリフレッシュモードには移行しない。
【００５２】
図６は、図５のCPU１２によるセルフリフレッシュからの復帰時の処理フローを示す図である。
【００５３】
セルフリフレッシュ中にFIFOメモリ２１が満杯になったときは、バッファ満杯検出レジスタ２７−４から出力される復帰要求信号RTが“１”になるので、バス制御回路１６aの制御により、セルフリフレッシュ動作を退避させてDRAM３０を通常動作モードに復帰させる（ステップＳ２５）。FIFOメモリ２１の書き込みアドレスWAと読み出しアドレスRAをアドレス比較回路２２で比較し（ステップＳ２５−１）、両方のアドレスWA,RAが等しければ（不一致（ Unmatch）ではない）、セルフリフレッシュ中にアクセスがなかったことになるので、特になにもしない。一致しなければ、セルフリフレッシュ中にアクセスがあったということなので、FIFOメモリ２１のデータをDRAM３０へと反映させる（ステップＳ２６）。FIFOメモリ２１のデータの全てをDRAM３０に反映したら、セルフリフレッシュからの復帰後処理を終了し、通常のアクセスを受け付ける状態へ復帰する。
【００５４】
(実施例２の効果）
実施例１では、FIDOバッファ２０のサイズは、セルフリフレッシュ中に発生するデータアクセスを全て保持できるだけの大きさが必要となるが、どれだけの大きさを持てば良いのかはアプリケーションに依存するため調べることは難しく、大きめに設定することになり、セルフリフレッシュモードによる低消費電力化のアドバンテージがなくなってしまう。そこで、これを解消するために、本実施例２のFIFOバッファ２０Aでは、FIFOメモリ２１が満杯になったことを検出してバッファ満杯検出レジスタ２７−４により保持する回路を追加したので、FIFOバッファ２０Aのサイズを最小限に抑えながら、データの整合性を保持することができる。
【００５５】
なお、本発明は、上記実施例１、２に限定されず、図１、図２、図４中の回路構成は図示以外の構成に変更したり、図３、図５、図６の処理フローは図示以外の処理内容に変更しても良い。
【００５６】
例えば、図１の半導体装置を、バス１１と、データを格納するDRAM３０と、これらのバス１１とDRAM３０とに接続され、該DRAM３０がセルフリフレッシュモードであってバス１１からのアクセス指示を検出した場合、このアクセス指示の内容を保持するFIFOバッファ２０とにより構成しても、実施例１とほぼ同様の効果が得られる。
【図面の簡単な説明】
【００５７】
【図１】本発明の実施例１を示す半導体装置の概略の構成図である。
【図２】図１中のＤＲＡＭを示す概略の構成図である。
【図３】図１の半導体装置におけるバスアクセス時の処理フローを示す図である。
【図４】本発明の実施例２を示す半導体装置の概略の構成図である。
【図５】図４の半導体装置におけるバスアクセス時の処理フローを示す図である。
【図６】図５のＣＰＵによるセルフリフレッシュからの復帰時の処理フローを示す図である。
【図７】従来のＤＲＡＭ制御回路を有する半導体装置を示す概略の構成図である。
【図８】図７の半導体装置におけるバスアクセス発生時の処理フローを示す図である。
【符号の説明】
【００５８】
１１      バス
１２      CPU
１３，１４      キャッシュメモリ
１６，１６A      DRAM制御回路
１６ａ      バス制御回路
１６ｂ      設定レジスタ
１６ｃ      信号生成回路
２０，２０A      FIFOバッファ
３０      DRAM
【図１】
2007115087.tif 000003
【図２】
2007115087.tif 000004
【図３】
2007115087.tif 000005
【図４】
2007115087.tif 000006
【図５】
2007115087.tif 000007
【図６】
2007115087.tif 000008
【図７】
2007115087.tif 000009
【図８】
2007115087.tif 000010