(57)【要約】【課題】キャッシュメモリへの書込不良を正確に検出すると共に、データリカバリに伴うペナルティ期間を短縮することが可能なキャッシュメモリ制御回路を提供する。【解決手段】キャシュメモリ制御回路３３を、連続して入力され得るデータの最大個数(＝"４")分のキャッシュメモリ３２＿１〜３２＿４各々に対応して設けられ、各々が対応するキャッシュメモリに一のデータを書き込むと共に、前記対応するキャッシュメモリから読み出したデータが前記一のデータと一致するか否かを判定し、両データが一致しないと判定した場合に前記一のデータを前記対応するキャッシュメモリに再び書き込む４個のリカバリ部３３１＿１〜３３１＿４と、リカバリ部３３１＿１〜３３１＿４を順次制御し、連続して入力されたデータＤ０〜Ｄ３各々を互いに異なるキャッシュメモリに書き込ませる書込制御部３３２と、で構成する。【選択図】図１
2010140140.tif 000002
【特許請求の範囲】
【請求項１】
連続して入力され得るデータの最大個数Ｎ分のキャッシュメモリ各々に対応して設けられ、各々が対応するキャッシュメモリに一のデータを書き込むと共に、前記対応するキャッシュメモリから読み出したデータが前記一のデータと一致するか否かを判定し、両データが一致しないと判定した場合に前記一のデータを前記対応するキャッシュメモリに再び書き込むＮ個のリカバリ部と、
Ｎ個以下のリカバリ部を順次制御し、連続して入力されたＮ個以下の入力データ各々を互いに異なるキャッシュメモリに書き込ませる書込制御部と、
を備えたキャッシュメモリ制御回路。
【請求項２】
請求項１において、
各リカバリ部が、前記書込、判定、及び再書込を互いに独立した処理サイクルで行い、
前記書込制御部が、各リカバリ部を１処理サイクルずつずらして制御することを特徴としたキャッシュメモリ制御回路。
【請求項３】
請求項１又は２において、
前記書込制御部が、前記入力データのデータ長及び個数に基づき、前記入力データと共に指定された一つの書込開始アドレス中から下位数ビットのビットデータを抽出すると共に、前記ビットデータが示す値に応じて、各入力データについて制御対象とするリカバリ部及びその制御順序を決定することを特徴としたキャッシュメモリ制御回路。
【請求項４】
請求項２において、
前記書込制御部が、前記書込開始アドレス中の前記ビットデータより上位のビットデータを、各キャッシュメモリに共通の書込先アドレスとすることを特徴としたキャッシュメモリ制御回路。
【請求項５】
請求項１〜４のいずれか一項において、
各リカバリ部が、前記一のデータを保持するレジスタを有し、前記読み出したデータが前記一のデータと一致しないと判定した場合、前記レジスタで保持されるデータを用いて前記再書込を行うことを特徴としたキャッシュメモリ制御回路。
【請求項６】
請求項１〜５のいずれか一項において、
前記入力データに誤り検出符号が付加されており、
各リカバリ部が、前記誤り検出符号を用いて、前記読み出したデータが前記一のデータと一致するか否かを判定することを特徴としたキャッシュメモリ制御回路。
【請求項７】
請求項１〜６のいずれか一項において、
各リカバリ部が、前記再書込の後に前記対応するキャッシュメモリから読み出したデータが前記一のデータと一致するか否かを再判定し、
各リカバリ部による前記再判定の結果に基づき、各入力データの互いに異なるキャッシュメモリへの書込が正常に完了したか否かを監視し、その監視結果を前記入力データの入力元に対して通知する書込監視部をさらに備えたことを特徴とするキャッシュメモリ制御回路。
【請求項８】
連続して入力され得るデータの最大個数Ｎ分のキャッシュメモリと、
各キャッシュメモリに対応して設けられ、各々が対応するキャッシュメモリに一のデータを書き込むと共に、前記対応するキャッシュメモリから読み出したデータが前記一のデータと一致するか否かを判定し、両データが一致しないと判定した場合に前記一のデータを前記対応するキャッシュメモリに再び書き込むＮ個のリカバリ部と、Ｎ個以下のリカバリ部を順次制御し、連続して入力されたＮ個以下の入力データ各々を互いに異なるキャッシュメモリに書き込ませる書込制御部とを有するキャッシュメモリ制御回路と、
を備えたキャッシュメモリ装置。
【請求項９】
請求項８において、
各リカバリ部が、前記再書込の後に前記対応するキャッシュメモリから読み出したデータが前記一のデータと一致するか否かを再判定し、
前記キャッシュメモリ制御回路が、各リカバリ部による前記再判定の結果に基づき、各入力データの互いに異なるキャッシュメモリへの書込が正常に完了したか否かを監視し、その監視結果を前記入力データの入力元に対して通知する書込監視部をさらに有することを特徴とするキャッシュメモリ装置。
【請求項１０】
連続して入力され得るデータの最大個数Ｎ分のキャッシュメモリの内の一のキャッシュメモリに一のデータを書き込むと共に、前記一のキャッシュメモリから読み出したデータが前記一のデータと一致するか否かを判定し、両データが一致しないと判定した場合に前記一のデータを前記一のキャッシュメモリに再び書き込むリカバリステップと、
前記リカバリステップを、連続して入力されたＮ個以下の入力データ各々について互いに異なるキャッシュメモリを対象として順次実行する書込制御ステップと、
を備えたキャッシュメモリ制御方法。
【請求項１１】
請求項１０において、
前記リカバリステップが、前記書込、判定、及び再書込を互いに独立した処理サイクルで実行し、
前記書込制御ステップが、前記リカバリステップを前記入力データ毎に１処理サイクルずつずらして実行することを特徴としたキャッシュメモリ制御方法。
【請求項１２】
請求項１０又は１１において、
前記書込制御ステップが、前記入力データのデータ長及び個数に基づき、前記入力データと共に指定された一つの書込開始アドレス中から下位数ビットのビットデータを抽出すると共に、前記ビットデータが示す値に応じて、各入力データについて前記リカバリステップの実行対象とするキャッシュメモリ及びその実行順序を決定することを特徴としたキャッシュメモリ制御方法。
【請求項１３】
請求項１２において、
前記書込制御ステップが、前記書込開始アドレス中の前記ビットデータより上位のビットデータを、各キャッシュメモリに共通の書込先アドレスとすることを特徴としたキャッシュメモリ制御方法。
【請求項１４】
請求項１０〜１３のいずれか一項において、
前記リカバリステップが、前記一のデータを保持すると共に、前記読み出したデータが前記一のデータと一致しないと判定した場合、前記保持したデータを用いて前記再書込を行うことを特徴としたキャッシュメモリ制御方法。
【請求項１５】
請求項１０〜１４のいずれか一項において、
前記リカバリステップは、前記入力データに誤り検出符号が付加されている場合、前記誤り検出符号を用いて、前記読み出したデータが前記一のデータと一致するか否かを判定することを特徴としたキャッシュメモリ制御方法。
【請求項１６】
請求項１０〜１５のいずれか一項において、
前記リカバリステップが、前記再書込の後に前記一のキャッシュメモリから読み出したデータが前記一のデータと一致するか否かを再判定し、
前記リカバリステップの実行対象とした各キャッシュメモリについての前記再判定の結果に基づき、各入力データの互いに異なるキャッシュメモリへの書込が正常に完了したか否かを監視し、その監視結果を前記入力データの入力元に対して通知する書込監視ステップをさらに備えたことを特徴とするキャッシュメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ制御回路、キャッシュメモリ装置、及びキャッシュメモリ制御方法に関し、特にキャッシュメモリへの書込不良を検出すると共に、当該書込不良が検出されたデータをリカバリする技術に関する。
【背景技術】
【０００２】
近年のマイクロコントローラの高速化に伴い、キャシュメモリへのデータ書込タイミングが非常に厳しくなっている。このため、ノイズ等の外的要因によるキャシュメモリへの書込不良が頻繁に発生している。
【０００３】
このような書込不良に対処するため、一般的なキャッシュメモリ装置においては、キャシュメモリへの書込データにパリティビットやＥＣＣ(Ｅｒｒｏｒ Ｃｏｒｒｅｃｔｉｎｇ Ｃｏｄｅ)等を付加し、以てキャッシュメモリ内のデータを保護する方式が採用されている。しかしながら、この方式では、データ誤りがキャッシュメモリへの書込時点では無く、これより後にキャッシュメモリからの読出が行われた際に初めて検知されることとなる。このため、データ誤りが書込不良により発生したのか、或いはデータ保持中に発生したのかを特定することが非常に困難である。また、ＥＣＣを用いた場合には、基本的に１ビットの誤り訂正しかできない。
【０００４】
上記の問題に対処するデータリカバリ方式が、特許文献１に記載されている。このデータリカバリ方式では、レジスタに保持したライトスルーメモリへの書込データ(入力データ)と、ライトスルーメモリから書込と並行して出力されるデータとを比較し、両データの不一致を検出した場合、レジスタに保持される書込データを用いてライトスルーメモリへの再書込を行う。
【特許文献１】特開平５−３１４０１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の特許文献１は、ライトスルーメモリ内部のビット線が正しく動作したか否かを検出するに過ぎず、実際にライトスルーメモリにデータが正しく書き込まれたか否かを検出するものではない。
【０００６】
ところで、キャッシュメモリへの書込動作としては、主にバースト書込動作(連続的なデータの書込動作)が行われる。このバースト書込動作を上記の特許文献１に記載されるデータリカバリ方式において行った場合には、或るデータのリカバリのために後続のデータの書込が中断されてしまうというペナルティ期間が発生する。このペナルティ期間は、バースト書込動作の遅延に繋がる。
【課題を解決するための手段】
【０００７】
本発明の一態様に係るキャッシュメモリ制御回路は、連続して入力され得るデータの最大個数Ｎ分のキャッシュメモリ各々に対応して設けられ、各々が対応するキャッシュメモリに一のデータを書き込むと共に、前記対応するキャッシュメモリから読み出したデータが前記一のデータと一致するか否かを判定し、両データが一致しないと判定した場合に前記一のデータを前記対応するキャッシュメモリに再び書き込むＮ個のリカバリ部と、Ｎ個以下のリカバリ部を順次制御し、連続して入力されたＮ個以下の入力データ各々を互いに異なるキャッシュメモリに書き込ませる書込制御部と、を備える。
【０００８】
また、本発明の一態様に係るキャッシュメモリ装置は、連続して入力され得るデータの最大個数Ｎ分のキャッシュメモリと、各キャッシュメモリに対応して設けられ、各々が対応するキャッシュメモリに一のデータを書き込むと共に、前記対応するキャッシュメモリから読み出したデータが前記一のデータと一致するか否かを判定し、両データが一致しないと判定した場合に前記一のデータを前記対応するキャッシュメモリに再び書き込むＮ個のリカバリ部と、Ｎ個以下のリカバリ部を順次制御し、連続して入力されたＮ個以下の入力データ各々を互いに異なるキャッシュメモリに書き込ませる書込制御部とを有するキャッシュメモリ制御回路と、を備える。
【０００９】
さらに、本発明の一態様に係るキャッシュメモリ制御方法は、連続して入力され得るデータの最大個数Ｎ分のキャッシュメモリの内の一のキャッシュメモリに一のデータを書き込むと共に、前記一のキャッシュメモリから読み出したデータが前記一のデータと一致するか否かを判定し、両データが一致しないと判定した場合に前記一のデータを前記一のキャッシュメモリに再び書き込むリカバリステップと、前記リカバリステップを、連続して入力されたＮ個以下の入力データ各々について互いに異なるキャッシュメモリを対象として順次実行する書込制御ステップと、を備える。
【００１０】
すなわち、本発明では、各キャシュメモリへの書込不良を、各キャッシュメモリから実際に読み出したデータを用いてデータ書込直後に検出する。このため、書込不良を正確に検出することが可能である。また、バースト書込動作に際して連続的に入力されるデータ各々のリカバリをパイプライン的に行う。このため、上述したデータリカバリに伴うペナルティ期間を短縮することが可能となる。
【発明の効果】
【００１１】
本発明によれば、キャッシュメモリへの書込不良を正確に検出すると共に、データリカバリに伴うペナルティ期間を短縮することができ、以て本発明を適用するマイクロコントローラ等の動作信頼性及び動作性能を、従来と比較して大幅に向上させることが可能である。
【発明を実施するための最良の形態】
【００１２】
以下、本発明に係るキャッシュメモリ制御回路及びキャッシュメモリ装置の実施の形態を、図１〜図６を参照して説明する。なお、各図面において同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００１３】
図１に示すマイクロコントローラ１は、大略、ＣＰＵ(Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ)１０と、メインメモリ２０と、本実施の形態に係るキャシュメモリ装置３０とで構成される。ＣＰＵ１０、メインメモリ２０、及びキャッシュメモリ装置３０は、システムバス４０を介して相互接続される。また、ＣＰＵ１０及びキャッシュメモリ装置３０は、同図に点線で示す如く、１つの半導体チップ５０上に実装される。ここで、ＣＰＵ１０は、メインメモリ２０に記憶される各種データの内で使用頻度の高い一部のデータをキャッシュメモリ装置３０に記憶し、以て半導体チップ５０外部に設けられたメインメモリ２０へのアクセスに因るオーバヘッドを低減させる。
【００１４】
また、キャッシュメモリ装置３０は、データバッファ３１と、４個のキャッシュメモリ３２＿１〜３２＿４(以下、符号３２で総称することがある)と、キャッシュメモリ制御回路３３とを備えている。データバッファ３１は、ＣＰＵ１０によるバースト書込動作に際して、システムバス４０を介して連続的に入力される最大４個のデータＤ０〜Ｄ３を格納すると共に、これらのデータＤ０〜Ｄ３をデータバス３４に順次転送する。また、キャッシュメモリ制御回路３３は、データバス３４に転送されたデータＤ０〜Ｄ３を互いに異なるキャッシュメモリに順次書き込むための制御を行う。なお、図示の例では、キャッシュメモリ装置２０に連続的に入力されるデータの最大個数(以下、最大バースト数と呼称する)が"４"であるものとし、これに対応して４個のキャッシュメモリ３２＿１〜３２＿４を設けている。すなわち、キャッシュメモリ装置２０内には、キャッシュメモリを最大バースト数と同数分だけ設ければ良い。
【００１５】
また、キャッシュメモリ制御回路３３は、キャッシュメモリ３２＿１〜３２＿４にそれぞれ対応して設けたリカバリ部３３１＿１〜３３１＿４(以下、符号３３１で総称することがある)と、書込制御部３３２と、書込監視部３３３とを備えている。
【００１６】
この内、リカバリ部３３１は、書込制御部３３２からチップセレクト信号ＣＳ及び書込イネーブル信号ＷＥを受けると、下記(Ａ)〜(Ｄ)に示す処理を順次行う。
【００１７】
(Ａ)データ書込処理
データバス３４に転送されたデータ(以下、書込データと呼称することがある)をキャッシュメモリ３２に書き込む。
(Ｂ)べリファイ処理
キャッシュメモリ３２から読み出したデータが、上記(Ａ)で書き込んだデータと一致するか否かを判定する。
(Ｃ)データ再書込処理
上記(Ｂ)の判定の結果として両データの不一致が検出された場合、上記(Ａ)で書き込んだデータをキャッシュメモリ３２に再び書き込む。
(Ｄ)書込エラー通知処理
キャッシュメモリ３２から上記(Ｃ)により再書込されたデータを読み出し、上記(Ａ)で書き込んだデータと一致するか否かを再び判定する。この再判定の結果として両データの不一致が検出された場合、書込監視部３３３に対して書込エラー信号Ｓｗｅｒｒを与える。
【００１８】
また、書込制御部３３２は、制御部３３２１と、アドレスバッファ３３２２とを備えている。制御部３３２１は、データＤ０〜Ｄ３と共にＣＰＵ１０から指定された書込開始アドレスＡｓ中の下位ビットに基づき、データの書込先とするキャッシュメモリとその選択順序を決定する(以下、この処理をデータ書込先決定処理と呼称し、その詳細については後述する)と共に、各リカバリ部３３１＿１〜３３１＿４にチップセレクト信号ＣＳ及び書込イネーブル信号ＷＥを与えてデータの書込を制御する。また、アドレスバッファ３２２２は、書込開始アドレスＡｓ中の上位ビットを格納すると共に、当該上位ビットを各キャッシュメモリに共通の書込先アドレスとしてアドレスバス３５に転送する。すなわち、上記(Ａ)〜(Ｄ)の処理の実行期間中、書込先アドレスは変化しない。このため、リカバリ部３３１は、書込先アドレスを保持する(認識する)必要が無い。
【００１９】
また、書込監視部３３３は、各リカバリ部３３１＿１〜３３１＿４からの書込エラー信号Ｓｗｅｒｒの受信有無によって、各データＤ０〜Ｄ３の各キャッシュメモリ３２＿１〜３２＿４への書込が正常に完了したか否かを監視すると共に、その監視結果を示す信号(以下、監視結果信号と呼称する)Ｓｍｎｔを、システムバス４０を介してＣＰＵ１０に対して通知する。
【００２０】
次に、本実施の形態の全体動作を、図２を参照して説明する。なお、同図においては、キャッシュメモリ制御回路３３内の制御部３３２１が、データＤ０〜Ｄ３の書込先をそれぞれキャッシュメモリ３２＿１〜３２＿４として決定した場合を扱う。
【００２１】
この場合、制御部３３２１は、最初の処理サイクルＴ０において、リカバリ部３３１＿１に対してチップセレクト信号ＣＳ及び書込イネーブル信号ＷＥを与える。リカバリ部３３１＿１は、上記(Ａ)に示したデータ書込処理を実行し、以てデータバス３４に転送されたデータＤ０をキャッシュメモリ３２＿１に書き込む。この時、他のリカバリ部３３１＿２〜３３１＿４にはチップセレクト信号ＣＳ及び書込イネーブル信号ＷＥが与えられていないため、キャッシュメモリ３２＿２〜３２＿４は、データ保持状態ＮＡに在る。
【００２２】
次の処理サイクルＴ１において、リカバリ部３３１＿１は、上記(Ｂ)に示したべリファイ処理を実行し、以てキャッシュメモリ３２＿１にデータＤ０が正しく書込まれているか否かを確認する。これと並行して、制御部３３２１は、リカバリ部３３１＿２に対してチップセレクト信号ＣＳ及び書込イネーブル信号ＷＥを与える。リカバリ部３３１＿２は、データ書込処理を実行し、以てデータバス３４に転送されたデータＤ１をキャッシュメモリ３２＿２に書き込む。この時、キャッシュメモリ３２＿３及び３２＿４は、依然としてデータ保持状態ＮＡに在る。
【００２３】
今、リカバリ部３３１＿１によるべリファイ処理の結果が図示の如く"ＮＧ"であったとすると(すなわち、キャッシュメモリ３２＿１への書込不良が発生したとすると)、次の処理サイクルＴ２において、リカバリ部３３１＿１は、上記(Ｃ)に示したデータ再書込処理を実行し、以てデータＤ０をキャッシュメモリ３２＿１に再び書き込む。これと並行して、リカバリ部３３１＿２は、べリファイ処理を実行し、以てキャッシュメモリ３２＿２にデータＤ１が正しく書込まれているか否かを確認する。この結果が図示の如く"ＯＫ"であるとすると、リカバリ部３３１＿２は動作を停止する(以降、キャシュメモリ３２＿２はデータ保持状態ＮＡとなる)。また、制御部３３２１は、リカバリ部３３１＿３に対してチップセレクト信号ＣＳ及び書込イネーブル信号ＷＥを与える。リカバリ部３３１＿３は、データ書込処理を実行し、以てデータバス３４に転送されたデータＤ２をキャッシュメモリ３２＿３に書き込む。この時、キャッシュメモリ３２＿４は、依然としてデータ保持状態ＮＡに在る。
【００２４】
次の処理サイクルＴ３において、リカバリ部３３１＿１は、上記(Ｄ)に示した書込エラー通知処理を実行し、以てキャッシュメモリ３２＿１にデータＤ０が正しく書込まれているか否かを再び確認する。この結果が図示の如く"ＯＫ"であったとすると、リカバリ部３３１＿１は、書込エラー信号Ｓｗｅｒｒを発生せずに動作を停止する(以降、キャシュメモリ３２＿１はデータ保持状態ＮＡとなる)。これと並行して、リカバリ部３３１＿３は、べリファイ処理を実行し、以てキャッシュメモリ３２＿３にデータＤ２が正しく書込まれているか否かを確認する。この結果が図示の如く"ＯＫ"であるとすると、リカバリ部３３１＿３は動作を停止する(以降、キャシュメモリ３２＿３はデータ保持状態ＮＡとなる)。また、制御部３３２１は、リカバリ部３３１＿４に対してチップセレクト信号ＣＳ及び書込イネーブル信号ＷＥを与える。リカバリ部３３１＿４は、データ書込処理を実行し、以てデータバス３４に転送されたデータＤ３をキャッシュメモリ３２＿４に書き込む。
【００２５】
次の処理サイクルＴ４において、リカバリ部３３１＿４は、べリファイ処理を実行し、以てキャッシュメモリ３２＿４にデータＤ３が正しく書込まれているか否かを確認する。この結果が図示の如く"ＯＫ"であるとすると、リカバリ部３３１＿４は動作を停止する(以降、キャシュメモリ３２＿４はデータ保持状態ＮＡとなる)。
【００２６】
このように、データＤ０のリカバリに伴うペナルティ期間は、一連の処理サイクルＴ０〜Ｔ４中に隠蔽されることとなる。なお、最大バースト数未満のデータについてのバースト書込を実行する場合には、データの書込先として一部のキャッシュメモリを選択すれば良い。
【００２７】
また、書込エラー通知処理における再確認の結果が"ＮＧ"であった場合には、リカバリ部３３１は、書込エラー信号Ｓｗｅｒｒを書込監視部３３３に対して与える。これを受けた書込監視部３３３は、バースト書込動作が異常完了したことを示す監視結果信号ＳｍｎｔをＣＰＵ１０に対して通知する。これにより、ＣＰＵ１０は、同一のデータＤ０〜Ｄ３についてのバースト書込の再実行等の種々の障害対応を実施することができる。
【００２８】
次に、上記の全体動作を実現するリカバリ部３３１の具体的な構成及びその動作を、図３及び図４を参照して説明する。
【００２９】
図３に示すように、リカバリ部３３１は、データレジスタ３３１１と、再書込制御部３３１２と、セレクタ３３１３及び３３１４と、エラーチェック部３３１５と、べリファイ制御部３３１６とを備えている。なお、上述した通り、リカバリ部３３１は、図１に示したアドレスバス３５に転送される書込先アドレスＡｗを保持する必要が無い。
【００３０】
データレジスタ３３１１は、図１に示した書込制御部３３２からチップセレクト信号ＣＳ及び書込イネーブル信号ＷＥを受けると、データバス３４に転送された書込データＤｗをラッチして保持する。また、書込データＤｗには、ＣＰＵ１０によりデータ保護ビットが付加されているものとする。なお、データ保護ビットには、パリティビットやＥＣＣ等の各種の誤り検出符号を用いることができる。
【００３１】
また、セレクタ３３１３は、再書込制御部３３１２からのセレクト信号Ｓｓｅｌに応じて、書込データＤｗ又はデータレジスタ３３１１から出力されるデータのいずれか一方を選択する。一方、セレクタ３３１４は、セレクト信号Ｓｓｅｌに応じて、チップセレクト信号ＣＳ及び書込イネーブル信号ＷＥ、又は再書込制御部３３１２により発生されるチップセレクト信号及び書込イネーブル信号(以下、それぞれ制御チップセレクト信号及び制御書込イネーブル信号と呼称し、符号ＣＳＢ及びＷＥＢを付す)のいずれか一方を選択する。なお、セレクタ３３１３は、セレクト信号Ｓｓｅｌが"Ｌレベル"を呈する場合に書込データＤｗを選択し、"Ｈレベル"を呈する場合にはデータレジスタ３３１１の出力データを選択するものとする。また、セレクタ３３１４は、セレクト信号Ｓｓｅｌが"Ｌレベル"を呈する場合にチップセレクト信号ＣＳ及び書込イネーブル信号ＷＥを選択し、"Ｈレベル"を呈する場合には制御チップセレクト信号ＣＳＢ及び制御書込イネーブル信号ＷＥＢを選択するものとする。さらに、以降の説明の便宜上、セレクタ３３１３から選択されたデータ(キャッシュメモリ３２に実際に入力されるデータ)を、入力データと呼称すると共に符号Ｄｉｎを付し、セレクタ３３１４により選択されたチップセレクト信号及び書込イネーブル信号(キャッシュメモリ３２に実際に入力される信号)を、それぞれ、入力チップセレクト信号及び入力書込イネーブル信号と呼称すると共に符号ＣＳｉｎ及びＷＥｉｎを付している。
【００３２】
また、再書込制御部３３１２は、チップセレクト信号ＣＳ及び書込イネーブル信号ＷＥ、並びにべリファイ制御部３３１６からの再書込要求信号Ｓｒｅｑを受けると、キャッシュメモリ３２に対する読出及び再書込を行うために上記の制御チップセレクト信号ＣＳＢ、制御書込イネーブル信号ＷＥＢ、及びセレクト信号Ｓｓｅｌを発生する。
【００３３】
また、エラーチェック部３３１５は、キャッシュメモリ３２から実際に読み出したデータＤｒに付加されたデータ保護ビットを用いて、キャッシュメモリ３２に書込不良が発生しているか否かを確認すると共に、この確認結果を示すエラー検出信号Ｓｄｅｔをべリファイ制御部３３１６に与える。なお、エラー検出信号Ｓｄｅｔは、書込不良が発生している場合に"Ｈレベル"を呈し、書込不良が発生していない場合には"Ｌレベル"を呈するものとする。また、エラーチェック部３３１５は、キャシュメモリ３２の読出制御回路(図示せず)と共用しても良い。この場合、エラーチェック部３３１５は、図３に点線で示す如く読出データＤｒを、図１に示したシステムバス４０を介してＣＰＵ１０に転送する。
【００３４】
また、べリファイ制御部３３１６は、エラー検出信号Ｓｄｅｔが"Ｌレベル"から"Ｈレベル"に変化した場合、再書込制御部３３１２に対して再書込要求信号Ｓｒｅｑを与える。これによりデータの再書込が行われてもエラー検出信号Ｓｄｅｔが"Ｌレベル"に戻らない場合、べリファイ制御部３３１６は、図１に示した書込監視部３３３に対して書込エラー信号Ｓｗｅｒｒを与える。なお、エラーチェック部３３１５が読出制御回路と共用される場合には、べリファイ制御部３３１６は、エラー検出信号Ｓｄｅｔが"Ｌレベル"から"Ｈレベル"に変化すると、図３に点線で示す如く読出エラー信号Ｓｒｅｒｒを、例えば図１に示したシステムバス４０を介してＣＰＵ１０に転送する。
【００３５】
以下、リカバリ部３３１の動作を、図４を参照して説明する。
【００３６】
図４に示すように、アドレスバス３５には、処理サイクルＴ０〜Ｔ４に亘って共通の書込先アドレスＡｗが転送される。一方、データバス３４には、１処理サイクル毎にデータＤ０〜Ｄ３が順次転送される。
【００３７】
最初の処理サイクルＴ０において、リカバリ部３３１＿１は、図１に示したキャッシュメモリ制御回路３３内の制御部３３２１から、チップセレクト信号ＣＳ及び書込イネーブル信号ＷＥ(共にアクティブ)を受ける。この時、データレジスタ３３１１には、データＤ０が格納される。また、再書込制御部３３１２は、セレクト信号Ｓｓｅｌ＝"Ｌレベル"をセレクタ３３１３及び３３１４にそれぞれ与える。従って、キャッシュメモリ３２＿１には、チップセレクト信号ＣＳ及び書込イネーブル信号ＷＥがそれぞれ入力チップセレクト信号ＣＳｉｎ及び入力書込イネーブル信号ＷＥｉｎとして与えられると共に、データバス３４に転送されたデータＤ０が入力データＤｉｎとして与えられる。これにより、キャッシュメモリ３２＿１内の書込先アドレスＡｗにデータＤ０が書き込まれる。
【００３８】
次の処理サイクルＴ１において、再書込制御部３３１２は、セレクト信号Ｓｓｅｌ＝"Ｈレベル"をセレクタ３３１３及び３３１４に与えると共に、制御チップセレクト信号ＣＳＢ＝"アクティブ"及び制御書込イネーブル信号ＷＥＢ＝"インアクティブ"を発生する。従って、キャッシュメモリ３２＿１には、制御チップセレクト信号ＣＳＢ及び制御書込イネーブル信号ＷＥＢがそれぞれ入力チップセレクト信号ＣＳｉｎ及び入力書込イネーブル信号ＷＥｉｎとして与えられる。この時、入力チップセレクト信号ＣＳｉｎが"アクティブ"を呈する一方、制御書込イネーブル信号ＷＥＢが"インアクティブ"を呈するため、キャッシュメモリ３２＿１内の書込先アドレスＡｗから、データＤ０が読出データＤｒとして出力される。
【００３９】
エラーチェック部３３１５は、データＤ０に付加されたデータ保護ビットを用いてキャッシュメモリ３２＿１に書込不良が発生しているか否かを確認する。この結果、書込不良の発生を検出した場合、エラーチェック部３３１５は、エラー検出信号Ｓｄｅｔを"Ｌレベル"から"Ｈレベル"に変化させる。この変化を検知したべリファイ制御部３３１６は、再書込制御部３３１２に対して再書込要求信号Ｓｒｅｑを与える。
【００４０】
また、同処理サイクルＴ１において、チップセレクト信号ＣＳ及び書込イネーブル信号ＷＥ(共にアクティブ)を受けたリカバリ部３３１＿２は、リカバリ部３３１＿１による処理サイクルＴ０における動作と同様にして、キャッシュメモリ３２＿２内の書込先アドレスＡｗにデータＤ１を書き込む。
【００４１】
次の処理サイクルＴ２において、リカバリ部３３１＿１内の再書込制御部３３１２は、入力書込イネーブル信号ＷＥｉｎ(制御書込イネーブル信号ＷＥＢ)を"アクティブ"に変化させる。この時、セレクト信号Ｓｓｅｌが"Ｈレベル"を呈する状態に在るため、セレクタ３３１３は、データレジスタ３３１１から出力されるデータＤ０を、入力データＤｉｎとしてキャッシュメモリ３２＿１に与える。これにより、キャッシュメモリ３２＿１内の書込先アドレスＡｗにデータＤ０が再び書き込まれる。
【００４２】
また、同処理サイクルＴ２において、リカバリ部３３１＿２は、リカバリ部３３１＿１による処理サイクルＴ１における動作と同様にして、キャッシュメモリ３２＿２からデータＤ１を読み出し、キャッシュメモリ３２＿２に書込不良が発生しているか否かを確認する。この結果、書込不良の発生を検出しなかった場合、リカバリ部３３１＿２は、エラー検出信号Ｓｄｅｔを"Ｌレベル"に維持する。従って、再書込要求信号Ｓｒｅｑは発生しない。一方、リカバリ部３３１＿３は、リカバリ部３３１＿１及び３３１＿２と同様にして、キャッシュメモリ３２＿３内の書込先アドレスＡｗにデータＤ２を書き込む。
【００４３】
次の処理サイクルＴ３において、リカバリ部３３１＿１内の再書込制御部３３１２は、入力書込イネーブル信号ＷＥｉｎ(制御書込イネーブル信号ＷＥＢ)を"インアクティブ"に変化させる。これにより、キャッシュメモリ３２＿１内の書込先アドレスＡｗから、データＤ０が再び読み出される。エラーチェック部３３１５は、キャッシュメモリ３２＿１に書込不良が発生しているか否かを再び確認する。この結果、書込不良の発生を検出しなかった場合、エラーチェック部３３１５は、エラー検出信号Ｓｄｅｔを"Ｈレベル"から"Ｌレベル"に変化させる。この変化を検知したべリファイ制御部３３１６は、再書込制御部３３１２に対する再書込要求信号Ｓｒｅｑの出力を停止する。
【００４４】
次の処理サイクルＴ４において、再書込制御部３３１２は、制御チップセレクト信号ＣＳＢを"インアクティブ"に変化させると共に、セレクト信号Ｓｓｅｌを"Ｌレベル"に変化させる。この時、リカバリ部３３１＿１に対するチップセレクト信号ＣＳが"インアクティブ"であるため、入力チップセレクト信号ＣＳｉｎは"インアクティブ"に変化する。従って、キャッシュメモリ３２＿１は、データ保持状態となる。
【００４５】
また、上記の処理サイクルＴ３において、リカバリ部３３１＿３は、リカバリ部３３１＿１及び３３１＿２と同様にして、キャッシュメモリ３２＿３からデータＤ２を読み出し、キャッシュメモリ３２＿３に書込不良が発生しているか否かを確認する。この結果、書込不良の発生を検出しなかった場合、リカバリ部３３１＿３は、エラー検出信号Ｓｄｅｔを"Ｌレベル"に維持する。従って、次の処理サイクルＴ４において、キャッシュメモリ３２＿３は、データ保持状態となる。一方、上記の処理サイクルＴ３において、リカバリ部３３１＿４は、リカバリ部３３１＿１〜３３１＿３と同様にして、キャッシュメモリ３２＿４内の書込先アドレスＡｗにデータＤ３を書き込む。
【００４６】
また、上記の処理サイクルＴ４において、リカバリ部３３１＿４は、リカバリ部３３１＿１〜３３１＿３と同様にして、キャッシュメモリ３２＿４からデータＤ３を読み出し、キャッシュメモリ３２＿４に書込不良が発生しているか否かを確認する。この結果、書込不良の発生を検出しなかった場合、リカバリ部３３１＿４は、エラー検出信号Ｓｄｅｔを"Ｌレベル"に維持する。従って、次の処理サイクル(図示せず)において、キャッシュメモリ３２＿４は、データ保持状態となる。
【００４７】
最後に、図１に示した書込制御部３３２内の制御部３３２１によるデータ書込先決定処理を、図５及び図６を参照して詳細に説明する。
【００４８】
まず前提として、一般的なキャッシュメモリ装置は、バースト書込動作に際して重要なデータを優先して書き込む、或いは書き換える機能(以下、クリティカルワードファースト機能と呼称する)を有する。このクリティカルワードファースト機能を利用するため、ＣＰＵは、キャシュメモリ装置に対するデータの入力順序及び書込開始アドレスを所定のアルゴリズムに従って決定する(以下、この方式をオーダリング方式と呼称する)。
【００４９】
オーダリング方式としては、サブブロックオーダリング方式が一般に採用されている。このサブブロックオーダリング方式においては、大略、キャシュメモリ装置に対して最重要データが最初に入力されると共に、書込開始アドレスとして当該最重要データの書込先アドレスが指定される。
【００５０】
より具体的には、図１に示したＣＰＵ１０がサブブロックオーダリング方式を採用している場合、ＣＰＵ１０は、書込開始アドレスＡｓ及びデータＤ０〜Ｄ３の入力順序を図５に示す如く決定する。但し、図５においては、データＤ０〜Ｄ３のデータ長が３２ビット(４バイト)である場合を扱っている。データＤ０が最重要データである場合、キャシュメモリ装置３０には、書込開始アドレスＡｓ＝"Ｘ…Ｘ０(１６進表記、Ｘは任意の値)"が入力されると共に、データＤ０〜Ｄ３がデータＤ０、Ｄ１、Ｄ２、Ｄ３の順に入力される。また、データＤ１が最重要データである場合、キャシュメモリ装置３０には、書込開始アドレスＡｓ＝"Ｘ…Ｘ４"が入力されると共に、データＤ０〜Ｄ３がデータＤ１、Ｄ０、Ｄ３、Ｄ２の順に入力される。また、データＤ２が最重要データである場合、キャシュメモリ装置３０には、書込開始アドレスＡｓ＝"Ｘ…Ｘ８"が入力されると共に、データＤ０〜Ｄ３がデータＤ２、Ｄ３、Ｄ０、Ｄ１の順に入力される。また、データＤ３が最重要データである場合、キャシュメモリ装置３０には、書込開始アドレスＡｓ＝"Ｘ…ＸＣ"が入力されると共に、データＤ０〜Ｄ３がデータＤ３、Ｄ２、Ｄ１、Ｄ０の順に入力される。すなわち、サブブロックオーダリング方式においては、データ書込の度毎に指定される書込開始アドレスＡｓとデータＤ０〜Ｄ３の入力順序が変化することとなる。
【００５１】
この変化に対応してキャッシュメモリ３２＿１〜３２＿４内のデータを正確に書き換えるため、キャシュメモリ装置３０(書込制御部３３２内の制御部３３２１)は、書込開始アドレスＡｓ中の下位ビットに基づき、データの書込先とするキャッシュメモリとその選択順序を決定する。
【００５２】
より具体的には、まず、制御部３３２１は、ＣＰＵ１０から入力されるデータのデータ長(＝データバス３４のバス幅)及びバースト数に基づき、書込開始アドレスＡｓ中の下位数ビットを抽出する。
【００５３】
例えば、データＤ０〜Ｄ３のデータ長が３２ビット(４バイト)であるとすると、図５に示したように、書込開始アドレスＡｓの下位４ビット(ビットデータＡｓ[３：０])は、データＤ０〜Ｄ３のいずれが最重要データであるかに応じて１６進表記で"０"、"４"、"８"、"Ｃ"(２進表記で"００００"、"０１００"、"１０００"、"１１００")のいずれかを示し、ビットデータＡｓ[３：２]のみが変化する。このため、制御部３３２１は、書込開始アドレスＡｓ中のビットデータＡｓ[３：２]を抽出する。また、データＤ０〜Ｄ３のデータ長が６４ビット(８バイト)であるとすると、書込開始アドレスＡｓの下位５ビット(ビットデータＡｓ[４：０])が、２進表記で"０００００"、"０１０００"、"１００００"、"１１０００"のいずれかを示し、ビットデータＡｓ[４：３]のみが変化する。このため、制御部３３２１は、書込開始アドレスＡｓ中のビットデータＡｓ[４：３]を抽出する。すなわち、制御部３３２１は、書込開始アドレスＡｓ中のデータ長に依存して変化しない無効ビット(すなわち、最重要データの識別に不要なビット)を除外し、データ個数に依存して変化する有効ビット(すなわち、最重要データの識別に必要なビット)のみを取得する。
【００５４】
なお、書込開始アドレスＡｓ中の制御部３３２１により抽出されたビットデータより上位のビットデータ(すなわち、図５に示した"Ｘ…Ｘ")は、図１に示したアドレスバッファ３３２２で保持され、各キャッシュメモリ３２＿１〜３２＿４に共通の書込先アドレスＡｗとして使用されることとなる。
【００５５】
そして、制御部３３２１は、抽出したビットデータが示す値に応じて、データの書込先とするキャッシュメモリとその選択順序を決定する。
【００５６】
データＤ０〜Ｄ３のデータ長が３２ビット(４バイト)であり且つ書込開始アドレスＡｓ中からビットデータＡｓ[３：２]を抽出した場合を例に取ると、制御部３３２１は、図６に示す如く各データＤ０〜Ｄ３の書込先とするキャッシュメモリの選択順序を決定する。
【００５７】
まず、図６(ａ)に示す如くビットデータＡｓ[３：２]が２進表記で"００"である場合(すなわち、図１に示したデータバッファ３１に、データＤ０〜Ｄ３がデータＤ０、Ｄ１、Ｄ２、Ｄ３の順に入力される場合)、制御部３３２１は、キャシュメモリ３２＿１〜３２＿４をそれぞれ対象として、ビットデータＡｓ[３：２]の各ビットと、２ビットのバイナリカウンタ(図示せず)のカウンタ値Ｃｔの各ビットとの排他的論理和(ＸＯＲ)を取る。この結果、キャシュメモリ３２＿１〜３２＿４に対応するＸＯＲ値として、それぞれ２進表記で"００"、"０１"、"１０"、"１１"(１０進表記で"０"、"１"、"２"、"３")が得られる。制御部３３２１は、これらのＸＯＲ値をそのままキャシュメモリ３２＿１〜３２＿４の選択順序(すなわち、リカバリ部３３１＿１〜３３１＿４の制御順序)とする。従って、制御部３３２１は、チップセレクト信号ＣＳ及び書込イネーブル信号ＷＥを、リカバリ部３３１＿１、３３１＿２、３３１＿３、３３１＿４の順に"アクティブ"にする。これにより、データＤ０〜Ｄ３が、キャシュメモリ３２＿１〜３２＿４にそれぞれ書き込まれる。
【００５８】
なお、バースト数が"２"である場合(すなわち、データＤ２及びＤ３が入力されない場合)、制御部３３２１は、２個のキャシュメモリ３２＿１、３２＿２を順に選択する。
【００５９】
また、図６(ｂ)に示す如くビットデータＡｓ[３：２]が２進表記で"０１"である場合(すなわち、データＤ０〜Ｄ３がデータＤ１、Ｄ０、Ｄ３、Ｄ２の順に入力される場合)、キャシュメモリ３２＿１〜３２＿４に対応するＸＯＲ値として、それぞれ２進表記で"０１"、"００"、"１１"、"１０"(１０進表記で"１"、"０"、"３"、"２")が得られる。従って、制御部３３２１は、キャシュメモリ３２＿２、３２＿１、３２＿４、３２＿３を順に選択する。これにより、図６(ａ)の場合と同様、データＤ０〜Ｄ３が、キャシュメモリ３２＿１〜３２＿４にそれぞれ書き込まれる。
【００６０】
なお、バースト数が"２"である場合、制御部３３２１は、２個のキャシュメモリ３２＿２、３２＿１を順に選択する。
【００６１】
また、図６(ｃ)に示す如くビットデータＡｓ[３：２]が２進表記で"１０"である場合(すなわち、データＤ０〜Ｄ３がデータＤ２、Ｄ３、Ｄ０、Ｄ１の順に入力される場合)、キャシュメモリ３２＿１〜３２＿４に対応するＸＯＲ値として、それぞれ２進表記で"１０"、"１１"、"００"、"０１"(１０進表記で"２"、"３"、"０"、"１")が得られる。従って、制御部３３２１は、キャシュメモリ３２＿３、３２＿４、３２＿１、３２＿２を順に選択する。これにより、図６(ａ)及び(ｂ)の場合と同様、データＤ０〜Ｄ３が、キャシュメモリ３２＿１〜３２＿４にそれぞれ書き込まれる。
【００６２】
また、図６(ｄ)に示す如くビットデータＡｓ[３：２]が２進表記で"１１"である場合(すなわち、データＤ０〜Ｄ３がデータＤ３、Ｄ２、Ｄ１、Ｄ０の順に入力される場合)、キャシュメモリ３２＿１〜３２＿４に対応するＸＯＲ値として、それぞれ２進表記で"１１"、"１０"、"０１"、"００"(１０進表記で"３"、"２"、"１"、"０")が得られる。従って、制御部３３２１は、キャシュメモリ３２＿４、３２＿３、３２＿２、３２＿１を順に選択する。これにより、図６(ａ)〜(ｃ)の場合と同様、データＤ０〜Ｄ３が、キャシュメモリ３２＿１〜３２＿４にそれぞれ書き込まれる。
【００６３】
なお、上記の実施の形態によって本発明は限定されるものではなく、特許請求の範囲の記載に基づき、当業者によって種々の変更が可能なことは明らかである。例えば、上記のデータ書込先決定処理は、サブブロックオーダリング方式に限らず、ＣＰＵが採用するオーダリング方式と同一のアルゴリズムに従って実行すれば良い。例えばＣＰＵがシーケンシャルオーダリング方式(書込開始アドレスＡｓとして常時"Ｘ…Ｘ０"を指定する方式)を採用する場合、制御部３３２１は、データの書込先とするキャッシュメモリとその選択順序を、固定的に或いは図６(ａ)に示した方法で決定することができる。
【図面の簡単な説明】
【００６４】
【図１】本発明に係るキャッシュメモリ制御回路及びキャシュメモリ装置の実施の形態の構成例を示したブロック図である。
【図２】本発明に係るキャッシュメモリ制御回路及びキャシュメモリ装置の実施の形態の全体動作例を示した図である。
【図３】本発明に係るキャッシュメモリ制御回路及びキャシュメモリ装置の実施の形態に用いるリカバリ部の構成例を示したブロック図である。
【図４】本発明に係るキャッシュメモリ制御回路及びキャシュメモリ装置の実施の形態に用いるリカバリ部の動作例を示したタイムチャート図である。
【図５】サブブロックオーダリング方式を採用するＣＰＵにおける書込開始アドレス及びデータ入力順序の決定処理例を示した図である。
【図６】本発明に係るキャッシュメモリ制御回路及びキャシュメモリ装置の実施の形態に用いる制御部におけるデータ書込先の決定処理例を示した図である。
【符号の説明】
【００６５】
１  マイクロコントローラ
１０  ＣＰＵ
２０  メインメモリ
３０  キャシュメモリ装置
３１  データバッファ
３２, ３２＿１〜３２＿４  キャッシュメモリ
３３  キャッシュメモリ制御回路
３４  データバス
３５  アドレスバス
４０  システムバス
５０  半導体チップ
３３１, ３３１＿１〜３３１＿４  リカバリ部
３３２  書込制御部
３３３  書込監視部
３３１１  データレジスタ
３３１２  再書込制御部
３３１３, ３３１４  セレクタ
３３１５  エラーチェック部
３３１６  べリファイ制御部
３３２１  制御部
３３２２  アドレスバッファ
Ｄ０〜Ｄ３  データ
Ｄｗ  書込データ
Ｄｉｎ  入力データ
Ｄｒ  読出データ
Ａｓ  書込開始アドレス
Ａｗ  書込アドレス
ＣＳ  チップセレクト信号
ＣＳＢ  制御チップセレクト信号
ＣＳｉｎ  入力チップセレクト信号
ＷＥ  書込イネーブル信号
ＷＥＢ  制御書込イネーブル信号
ＷＥｉｎ  入力書込イネーブル信号
Ｓｗｅｒｒ  書込エラー信号
Ｓｒｅｒｒ  読出エラー信号
Ｓｍｎｔ  監視結果信号
Ｓｒｅｑ  再書込要求信号
Ｓｓｅｌ  セレクト信号
Ｓｄｅｔ  エラー検出信号
Ｔ０〜Ｔ４  処理サイクル
【図１】
2010140140.tif 000003
【図２】
2010140140.tif 000004
【図３】
2010140140.tif 000005
【図４】
2010140140.tif 000006
【図５】
2010140140.tif 000007
【図６】
2010140140.tif 000008