(57)【要約】      （修正有）【課題】ヒット率がより向上し、ミスヒットペナルティ時間の短いキャッシュメモリ装置を提供する。【解決手段】キャッシュタグメモリ１１１と入力アドレスに格納されたアドレスを比較する一致検出回路１１３と、不一致を検出した時に外部メモリ１３０からデータを転送してデータ更新処理をする制御回路１１０と、データ更新処理をした場合に入力アドレスを更新するアドレス格納回路１１６と、外部からの動作中断時又はデータ更新処理中に、入力アドレスを更新し検出回路１１３へ出力するアドレス更新回路５６０と、更新アドレスとメモリ１１１のアドレスを検出回路１１３で比較した結果に応じデータ更新処理の可否情報を格納する更新情報格納回路５７３を備え、ミスヒットしたアドレスに続く次のアドレスもミスヒットの場合にそのアドレスを続けて更新し、検出回路１１３で一致を検出した時には続けてメモリ１１２のデータ更新処理をする。【選択図】図１４
2004220624.tif 000002
【特許請求の範囲】
【請求項１】
第１のアドレス及び該第１アドレスとは異なる第２のアドレスから構成され、所望のデータに対応するアドレス情報のうち、任意の第１アドレスを格納する第１のメモリと、
第２のアドレスと、前記第１のアドレスが共通なアドレス情報に対する複数の第２のアドレスに対応する複数のデータとを格納する第２のメモリと、
入力された前記アドレス情報の第１のアドレスと前記第１のメモリに格納された第１のアドレスとを比較して一致／不一致を検出する一致検出回路と、
前記一致検出回路が前記一致を検出したときには前記入力されたアドレス情報に対応したデータを出力データとして前記第２のメモリから読み出す第１の処理と、前記一致検出回路が前記不一致を検出したときには前記入力されたアドレス情報と第１のアドレス情報が共通なアドレス情報に対応する複数のデータを第３のメモリから前記第２のメモリへ書き込む第２の処理とを選択的に制御する制御回路と、
前記入力されたアドレス情報を格納し、前記制御回路が前記第２の処理を選択した場合に、前記格納されたアドレス情報の第２のアドレスを更新して前記第３のメモリに対して出力するアドレス格納回路と、
外部から動作の中断が指示されている時に、前記入力されたアドレス情報の第１のアドレスを更新して前記一致検出回路へ出力するアドレス更新回路と、
前記アドレス更新回路にて更新された第１のアドレスと前記第１のメモリに格納された第１のアドレスとを前記一致検出回路にて比較した結果に応じて、前記制御回路へ出力すべき前記更新された第１のアドレスに基づく第２の処理を行うか否かの情報を格納する更新情報格納回路と、
を有することを特徴とするキャッシュメモリ装置。
【請求項２】
第１のアドレス及び該第１アドレスとは異なる第２のアドレスから構成され、所望のデータに対応するアドレス情報のうち、任意の第１のアドレスを格納する第１のメモリと
前記第１のアドレスが共通なアドレス情報に対する複数の第２のアドレスに対応する複数のデータを格納する第２のメモリと、
入力された前記アドレス情報の第１のアドレスと前記第１のメモリに格納された第１のアドレスとを比較して一致／不一致を検出する一致検出回路と、
前記一致検出回路が前記一致を検出したときには前記入力されたアドレス情報に対応したデータを出力データとして前記第２のメモリから読み出す第１の処理と、前記一致検出回路が前記不一致を検出したときには前記入力されたアドレス情報と第１のアドレスが共通なアドレス情報に対応する複数のデータを第３のメモリから前記第２のメモリへ書き込む第２の処理とを選択的に制御する制御回路と、
前記入力されたアドレス情報を格納し、前記制御回路が前記第２の処理を選択している場合に、前記格納されたアドレス情報の第２のアドレスを更新して前記第３のメモリに対して出力するアドレス格納回路と、
前記第２の処理を行っている時に、前記入力されたアドレス情報の第１のアドレスを更新して前記一致検出回路へ出力するアドレス更新回路と、
前記アドレス更新回路にて更新された第１のアドレスと前記第１のメモリに格納された第１のアドレスとを前記一致検出回路にて比較した結果に応じて、前記制御回路へ出力すべき前記更新された第１のアドレスに基づく第２の処理を行うか否かの情報を格納する更新情報格納回路と、
を有することを特徴とするキャッシュメモリ装置。
【請求項３】
前記更新情報格納回路は、前記アドレス格納回路から出力されるアドレスにて前記第３のメモリから読み出されるデータに基づいて、前記アドレス更新回路にて更新された第１のアドレスに対する第２の処理を行うか否かを判断する手段を有することを特徴とする請求項１又は請求項２記載のキャッシュメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロプロセッサ（以下ＭＰＵと称する）等の情報処理装置におけるデータの高速読出しに用いられるキャッシュメモリ装置に関するものである。
【背景技術】
【０００２】
キャッシュメモリ装置は情報処理装置の処理速度向上のため、広く利用されている。このキャッシュメモリ装置に関する技術は、例えば、次のような文献に記載されるものがあった。
【非特許文献１】Ｈａｒｏｌｄ  Ｓ．Ｓｔｏｎｅ著「高性能コンピュータアーキテクチャ」（平１−３−３０）丸善（株）、Ｐ．２３−４２
【非特許文献２】日経エレクトロニクス[４３４]．（１９８７−１１−１６）日経ＢＰ社、Ｐ．１５９−１７４
【０００３】
非特許文献１，２には従来のキャッシュメモリ装置の基本的な構成が示されている。従来のキャッシュメモリ装置は、キャッシュメモリ装置の外部につけられた外部メモリに比べて、小容量とすることで高速な動作をするメモリ（これをキャッシュメモリという）を設け、このキャッシュメモリ内に読出し頻度が高いデータを格納し、読出し要求があったデータが、キャッシュメモリ内にあればキャッシュメモリから要求のデータを読出すことで高速な読出しを行い、キャッシュメモリ内になければ、キャッシュメモリ装置に外付けされた外部メモリから要求のデータを読出すことで通常の読出しを行うものである。以下に、そのキャッシュメモリ装置の具体的な構成とその動作を説明する。
【０００４】
図２は従来のキャッシュメモリ装置の基本的な回路図である。
このキャッシュメモリ装置５０は情報処理装置内に設けられる中央処理装置（以下、ＣＰＵという）等のデータの読出し要求者１（以下キャッシュ要求者という）からのキャッシュアドレスＣＡに応じたキャッシュデータＣＤを出力するものであり、該キャッシュメモリ装置５０の内部回路を制御するコントロール回路１０、小容量高速のランダム・アクセス・メモリ（以下、ＲＡＭという）等で構成されるキャッシュタグメモリ１１、小容量高速のＲＡＭ等で構成されるキャッシュデータメモリ１２、及び一致検出回路１３を備えている。キャッシュタグメモリ１１は、キャッシュデータメモリ１２に格納したデータのアドレスの一部を格納するもので、アドレス端子Ａ、データ入／出力端子（以下、Ｉ／Ｏ端子という）Ｄ、コントロール回路１０により活性化されるライトイネーブル端子ＷＥ、該コントロール回路１０により活性化される端子ＶＡｉ及び端子ＶＡｏを有している。キャッシュデータメモリ１２は、読出し頻度の高いデータを格納するもので、アドレス端子Ａ、Ｉ／Ｏ端子Ｄ、及びコントロール回路１０により活性化されるライトイネーブル端子ＷＥを有している。一致検出回路１３は、イネーブル端子Ｅが活性化されると入力される２つの情報の一致／不一致を検出し、一致の時にはヒット信号ＨＩＴを出力する回路である。
【０００５】
また、このキャッシュメモリ装置５０には、ヒット信号ＨＩＴによりイネーブル端子Ｅが活性化されてキャッシュアドレスＣＡを格納するレジスタ１４と、ヒット信号ＨＩＴによりイネーブル端子Ｅが活性化されるとＩＤバス２３上のキャッシュデータＣＤを格納するレジスタ１５と、コントロール回路１０によりカウントイネーブル端子ＣＥが活性化されたアドレスＥＡを格納する外部レジスタ１６と、該コントロール回路１０により制御されるトライステートバッファ１７，１８，２０，２１及びＡＮＤゲート１９と、ＩＡバス２２とが、設けられている。
【０００６】
キャッシュアドレスＣＡを格納するレジスタ１４の出力側には、トライステートバッファ１７及びＩＡバス２２を介して、キャッシュタグメモリ１１及びキャッシュデータメモリ１２の各アドレス端子Ａがそれぞれ接続されている。レジスタ１４から、キャッシュアドレスＣＡの全ビット数ａがＩＡバス２２へ出力され、その全ビット数ａのうちの、Ｌｏｇ２（全タグ数）＝ｂがキャッシュタグメモリ１１のアドレス端子Ａに供給され、下位（ｂ＋１）（但し、１＝Ｌｏｇ２（ライン数））がキャッシュデータメモリ１２のアドレス端子Ａへ供給され、さらに上位（ａ−ｂ−１）が一致検出回路１３へ供給される。キャッシュアドレスＣＡの上位（ａ−ｂ−１）は、トライステートバッファ１８を介して、キャッシュタグメモリ１１のＩ／Ｏ端子Ｄに供給されると共に、一致検出回路１３へ供給される。キャッシュタグメモリ１１の端子ＶＡｏは、コントロール回路１０で制御されるＡＮＤゲート１９を介して、一致検出回路１３のイネーブル端子Ｅに接続されている。
【０００７】
キャッシュデータメモリ１２のＩ／Ｏ端子Ｄは、ＩＤバス２３に接続され、そのＩＤバス２３がレジスタ１５の入力側に接続されている。レジスタ１４の出力側には、コントロール回路１０によりカウントイネーブル端子ＣＥが活性化される外部レジスタ１６が接続されている。外部レジスタ１６は、端子ＣＥが活性化されると、レジスタ１４から出力されるキャッシュアドレスＣＡの全ビット数ａ（＝アドレスＥＡ）を格納する機能を有し、その出力側が、トライステートバッファ２０を介してＩＡバス２２に接続されると共に、大容量低速のＲＡＭ等で構成される外部メモリ３０のアドレス端子Ａに接続されている。外部メモリ３０は、アドレス端子Ａの他に、データ出力端子Ｄ、及びキャッシュメモリ装置５０をウェイト状態（待ち状態）にするための端子Ｄ−ＷＡＩＴ等を有し、該データ出力端子Ｄがトライステートバッファ２１を介してＩＤバス２３に接続されると共に、該端子Ｄ−ＷＡＩＴがコントロール回路１０の入力側に接続されている。
【０００８】
第３図は、キャッシュタグメモリ１１の記憶内容を示す図である。
キャッシュタグメモリ１１は、アドレス（タグ）ＴＡＧと有効ビット（バリッドビット）等からなる。タグＴＡＧは、ハードウエア量を減らすために、ある程度、アドレスをグループ化して付けられている。このグループ化された数をライン数（またはブロック数）といい、アドレスの近いものをまとめるのが一般的である。図３においては、１グループに４つのデータとしている。つまり、キャッシュアドレスＣＡの下位２ビットを除くビットが同じもの、例えば“０…０”のデータを１グループとしている。
【０００９】
次に、図２に示すキャッシュメモリ装置５０の動作を説明する。
キャッシュ要求者１からキャッシュアドレスＣＡが供給されると、それがレジスタ１４に一時格納された後、読出されてそのキャッシュアドレスＣＡに対応するデータがキャッシュデータメモリ１２に格納されているか否か（即ち、ヒットか否か）を調べる。つまり、レジスタ１４からトライステートバッファ１７を介してＩＡバス２２へ出力されたキャッシュアドレスＣＡと、キャッシュタグメモリ１１の内容の一致／不一致が一致検出回路１３で検出され、一致（以下ヒットという）ならば、該一致検出回路１３からヒット信号ＨＩＴが出力され、コントロール回路１０に与えられると共に、レジスタ１４，１５のイネーブル端子Ｅに与えられる。ヒット信号ＨＩＴがコントロール回路１０に入力されると、該コントロール回路１０の出力によってキャッシュタグメモリ１１及びキャッシュデータメモリ１２の各ライトイネーブル端子ＷＥが活性化され、キャッシュアドレスＣＡのうちの下位（ｂ＋１）により指定される該キャッシュデータメモリ１２内のデータがＩＤバス２３へ読出される。このＩＤバス２３に読出されたデータは、レジスタ１５からキャッシュデータＣＤとしてキャッシュ要求者１へ出力される。
【００１０】
一方、キャッシュ要求者１から要求されたキャッシュアドレスＣＡに対応するデータがキャッシュデータメモリ１２内になければ（以下ミスヒットという）、コントロール回路１０の出力によって活性化される外部レジスタ１６により、レジスタ１４から出力されたキャッシュアドレスＣＡの全ビット数ａ（ＥＡ）が外部メモリ３０のアドレス端子Ａへ送られ、その全ビット数ａに対応した記憶データが該外部メモリ３０のデータ出力端子Ｄから読出される。この読出されたデータは、トライステートバッファ２１を介してキャッシュデータメモリ１２へ送られて該キャッシュデータメモリ１２の内容が更新された後、ＩＤバス２３及びレジスタ１５を介してキャッシュデータＣＤの形でキャッシュ要求者１へ出力される。
【００１１】
このように、ミスヒットの場合、ミスヒットしたアドレスを含む１ライン分のデータが外部メモリ３０から読出され、キャッシュデータメモリ１２の内容が更新される。ここで、ミスヒットしてからキャッシュデータメモリ１２の内容を更新し、真のキャッシュデータＣＤをキャッシュ要求者１へ返す方法には、従来次のような第１、第２の方法がある。  
【００１２】
（１）第１の方法
図４は図２のキャッシュメモリ装置５０の動作を示すタイミングチャートである。図中、ｍ，ｎ＋１  ，…はアドレスを示す。ミスヒットペナルティ時間とは、ミスヒットしてからキャッシュデータＣＤが有効になるまでの時間をいう。
図４において、ｎ＋１＝“ｘ…ｘ０１”（２進数表現）とする。図３に示すように１ライン４アドレス分としている。なお、外部メモリ３０は、２サイクルでアクセスできるものとしている。タグＴＡＧには、バリッドビットを含むが、１タグデータに対して１ビットしかない。４回の書込み（ライト）とも、タグデータ（＝“ｘ…ｘ”）を書込むが、バリッドビットにバリッド情報を書くのは最後の１回のみである。図２の外部レジスタ１６の下位２ビットは、カウンタになっており、ミスヒットによってキャッシュアドレスＣＡの値がロードされ、その下位２ビットは“００”にクリアされる。
【００１３】
ミスヒットしてからキャッシュデータメモリ１２を更新し、キャッシュ要求者１へ真のキャッシュデータＣＤを返す方法として、最も単純に考えられる方法は、図４に示すように、ミスヒットが発生したら、このアドレスが含まれるラインのうち、ある決まったアドレスからデータを読出（リード）してくれるようにすることである。例えば、図４に示すように１ライン４アドレス分の構成であれば、“ｘｘ…ｘ００”，“ｘ…ｘ０１”，“ｘ…ｘ１０”，“ｘ…ｘ１１”という順にデータを読込む。この間、キャッシュデータメモリ１２は更新（書込み）のために使用されるので、キャッシュデータＣＤが先に書込まれたとしてもバリッド（有効）にならない。
【００１４】
（２）第２の方法
メモリインタリーブ方式やダイナミックＲＡＭ（以下、ＤＲＡＭという）の特性を生かしたアクセス方法（ページモードやスタティックカラム等）により、バースト転送をサポートすることによってミスヒットペナルティ時間を短縮することも考えられる。その構成例を図５に示す。
図５はキャッシュメモリ装置５１の回路図であり、図２中の要素と共通の要素には共通の符号が付されている。
このキャッシュメモリ装置５１は、ＤＲＡＭページモードを使った構成である。図２のキャッシュメモリ装置５０と基本的に異なる点は、外部レジスタ１６内のカウンタの出力が加算器３５で＋１インクリメント（増分）されてセレクタ３６に入力し、そのセレクタ３６の出力が該カウンタに入力するようになっている点である。なお、図５の符号４０は、結線状態を示す。
【００１５】
キャッシュ要求者１からのキャッシュアドレスＣＡは、タグＴＡＧ、ラインアドレスＬＡ、及びライン内アドレスＩＡより構成され、それらがレジスタ１４内に最上位ビット（ＭＳＢ）から最下位ビット（ＬＳＢ）へ向けて格納される。そして、ライン内アドレスＩＡと加算器３５の出力とのいずれか一方が、セレクタ３６で選択されて外部レジスタ１６内のカウンタに入力されるようになっている。また、外部メモリ３０は、ＤＲＡＭで構成され、それをページモードで動作させるために、該外部メモリ３０とコントロール回路１０との間で、ロー・アドレス・ストローブ信号（以下、ＲＡＳＮという。但し、Ｎは逆送を表す）、コラム・アドレス・ストローブ信号（以下、ＣＡＳＮという）、及びウェイト信号率のメモリコントロール信号Ｓ１０が授受される。
ＤＲＡＭページモードとは、ＲＡＳＮを“Ｌ”レベルのままＣＡＳＮパルスを次々と加えることにより、高速の読出し／書込み動作を行うモードである。このモードでは、ＲＡＳＮの“Ｌ”レベル状態でビット線レベルを“Ｌ”レベルあるいは“Ｈ”レベル状態にしたまま、ＣＡＳ系の動作を連続的に繰返し、任意のビット線への書込みあるいは読出しを行うようになっている。
【００１６】
図６は図５の動作を示すタイミングチャートである。このタイミングチャートでは、１ライン４データで構成されている。ＣＫはクロック、ｎは下位２ビットが“０”である場合である。
図５のキャッシュメモリ装置５１では、要求されたキャッシュアドレスＣＡがレジスタ１４に格納されると、そのレジスタ１４内のタグＴＡＧと、キャッシュタグメモリ１１のデータ出力端子Ｄｏから読出されたデータとが、一致検出回路１３で一致／不一致の検出が行われる。不一致のときにはミスヒットとなるので、レジスタ１４内のタグＴＡＧが結線４０を介して外部レジスタ１６に格納され、その外部レジスタ１６の出力が結線４０を介して外部メモリ３０のアドレス端子Ａに入力される。すると、メモリコントロール信号Ｓ１０により、ページモードで、外部メモリ３０の端子データＤからデータが高速に読出されてキャッシュデータメモリ１２のデータ入力端子Ｄｉに入力され、該キャッシュデータメモリ１２の出力端子ＤｏからキャッシュデータＣＤの形で読出される。これにより、ミスヒットペナルティ時間を短縮できる。
【００１７】
しかしながら、上記のキャッシュメモリ装置５０及び５１では各々、次のような課題があった。
図２に示すキャッシュメモリ装置５０ではミスヒット時にミスヒットしたデータをキャッシュデータメモリ１２に書込むための時間が長いため、データの読出しにかかるミスヒットペナルティ時間が長い。
図５に示すキャッシュメモリ装置５１では、外部メモリ３０等を構成するＤＲＡＭの方がバースト転送速度に追いついていないため、最初の１つを読込むまでに数クロックかかる。最初の１つを読込んだ後には図６に示すように、４データ分を読んでくる。
キャッシュメモリ装置５１では、ミスヒットを起こしたアドレスの含まれるラインの次のラインが続けて必要な場合であっても、一度バースト転送アクセスモードを抜けて、また新たにミスヒットを起こしてラインのうちの最初のデータが到達するまで、無駄な時間を費やしてしまっている。つまり、ミスヒットしたラインのデータを更新するときに、その後の連続したアドレスのデータがミスヒットすることが分かっていても、必ず一定のラインのデータしか更新しないため、ヒット率が低下するという問題がある。そのため、未だ技術的に充分満足のゆくキャッシュメモリを得ることが困難であった。
【発明の開示】
【発明が解決しようとする課題】
【００１８】
本発明は、従来技術が持っていたミスヒットペナルティ時間が長い、ヒット率が低いという問題点を解決することを課題とするものである。
【課題を解決するための手段】
【００１９】
上記課題を解決するため、本発明は第１のアドレス及び該第１アドレスとは異なる第２のアドレスから構成され、所望のデータに対応するアドレス情報のうち、任意の第１アドレスを格納する第１のメモリと、第２のアドレスと、前記第１のアドレスが共通なアドレス情報に対する複数の第２のアドレスに対応する複数のデータとを格納する第２のメモリと、入力された前記アドレス情報の第１のアドレスと前記第１のメモリに格納された第１のアドレスとを比較して一致／不一致を検出する一致検出回路と、前記一致検出回路が前記一致を検出したときには前記入力されたアドレス情報に対応したデータを出力データとして前記第２のメモリから読み出す第１の処理と、前記一致検出回路が前記不一致を検出したときには前記入力されたアドレス情報と第１のアドレス情報が共通なアドレス情報に対応する複数のデータを第３のメモリから前記第２のメモリへ書き込む第２の処理とを選択的に制御する制御回路と、前記入力されたアドレス情報を格納し、前記制御回路が前記第２の処理を選択した場合に、前記格納されたアドレス情報の第２のアドレスを更新して前記第３のメモリに対して出力するアドレス格納回路と、外部から動作の中断が指示されている時又は第２の処理を行っている時に、前記入力されたアドレス情報の第１のアドレスを更新して前記一致検出回路へ出力するアドレス更新回路と、前記アドレス更新回路にて更新された第１のアドレスと前記第１のメモリに格納された第１のアドレスとを前記一致検出回路にて比較した結果に応じて、前記制御回路へ出力すべき前記更新された第１のアドレスに基づく第２の処理を行うか否かの情報を格納する更新情報格納回路とを設けたものである。
【発明の効果】
【００２０】
本発明はキャッシュメモリ装置のヒット率がより向上し、ミスヒットペナルティ時間が短くなるという効果を奏する。
【発明を実施するための最良の形態】
【００２１】
本発明は、外部から動作の中断が指示されている時やミスヒットによるキャッシュデータ更新中に、アドレスを更新し、ミスヒットしたアドレスに続く次のアドレスもミスヒットするか否かを判定し、次のアドレスもミスヒットで、連続したアドレスが必要な場合には次のアドレスを続けて更新し、更新されたアドレスとキャッシュタグメモリに格納されたアドレスとを比較し、一致した時には続けてキャッシュデータの更新をすることにより実現することができる。
【実施例１】
【００２２】
図１は本発明の第１の実施例を示すキャッシュメモリ装置の回路図である。
このキャッシュメモリ装置１００は図２に示したキャッシュメモリ装置５０において、一致検出回路１５０とＯＲゲート１５１とが付加されている。一致検出回路１５０はミスヒットによるキャッシュデータメモリの更新時に、コントロール回路１１０の出力信号によって、イネーブル端子Ｅが活性化されて動作する。一致検出回路１５０はレジスタ１１４からのキャッシュアドレスＣＡの全ビット数ａと、外部メモリ１３０からキャッシュデータメモリ１１２へデータを書込むアドレス（全ビット数ａ）との一致を検出する機能を有する。ＯＲゲート１５１は、一致検出回路１５０の出力と、一致検出回路１１３から出力されるタグヒット信号ＴＡＧ・ＨＩＴとの論理和を求め、該一致検出回路１５０の検出結果が一致のときにレジスタ１１５のイネーブル端子Ｅを活性化する機能を有している。
【００２３】
コントロール回路１１０は、一致検出回路１１３からタグヒット信号ＴＡＧ・ＨＩＴを入力すると、キャッシュ更新信号Ｓ１０ａを出力してトライステートバッファ１２０，１２１をオン状態にし、外部メモリ１３０のデータ出力端子Ｄから出力された読出しデータを、ＩＤバス１２３へ出力させる。ＩＤバス１２３上に出力された読出しデータは、ＯＲゲート１５１によってイネーブル状態となったレジスタ１１５に取込まれ、キャッシュデータＣＤとしてキャッシュ要求者１０１へ返される。つまり、ＯＲゲート１５１は、ミスヒットによるキャッシュ更新時に、一致検出回路１５０の検出結果が一致であれば、外部メモリ１３０から読出されたデータをバイパスして、キャッシュ要求者１０１に対してもキャッシュデータＣＤとして出力する機能を有している。
【００２４】
次に、図１に示すキャッシュメモリ装置１００の動作を図７を参照しつつ説明する。
図７は、図１のキャッシュメモリ装置２００の動作を示すタイミングチャートである。この図７において、ｎ＋１＝“ｘ…ｘ０１”、ｎ＋４＝“Ｙ…Ｙ００”とする。そして、１ライン４アドレス分としている。なお、外部メモリ１３０は、バースト転送により、連続アドレスなら、最初のみ１ウェイトで読めるものとしている。バリッドビットは、最後の書込みで“１”が書かれる。また、外部レジスタ１１６の下位ビットは、カウントイネーブル端子ＣＥにより活性化されるカウンタになっている。
【００２５】
図１において、キャッシュ要求者１０１から必要なデータのキャッシュアドレスＣＡが供給されると、そのキャッシュアドレスＣＡがレジスタ１１４に書込まれる。キャッシュ更新状態でなければ、コントロール回路１１０から出力されるキャッシュ更新信号ＳＩＯａによってトライステートバッファ１１７がオン状態となっているので、レジスタ１１４に書込まれたキャッシュアドレスＣＡがＩＡバス１２２へ送られる。キャッシュデータメモリ１１２は、ＩＡバス１２２上のアドレスのうち、特定されるタグとラインのアドレス、例えば下位（ｂ＋１）をアドレス端子Ａで受け取り、そのアドレスで指定された記憶データをＩ／Ｏ端子ＤよりＩＤバス１２３へ出力する。
【００２６】
同時に、キャッシュデータメモリ１１２に格納されているデータが、要求されたキャッシュアドレスＣＡのものかを検証するために、特定されるタグのアドレスＬｏｇ２（全タグ数）＝ｂに対するキャッシュタグメモリ１１１の記憶データがＩ／Ｏ端子Ｄより読出され、一致検出回路１１３により、与えられたタグとの一致／不一致の検出が行われる。この結果は、キャッシュデータメモリ１１２がリード状態（キャッシュ更新状態ではない）で、かつキャッシュタグメモリ１１１の端子ＶＡｏによって示される該キャッシュタグメモリ１１１の内容が有効であれば、ＡＮＤゲート１２４を介してイネーブル状態となった一致検出回路１１３による一致検出の結果が有効であり、該一致検出回路１１３からタグヒット信号ＴＡＧ・ＨＩＴが出力されてコントロール回路１１０へ供給される。
【００２７】
このとき、一致検出回路１１３の検出結果が一致であれば、ＩＤバス１２３の内容が有効であることを示すため、タグヒット信号ＴＡＧ・ＨＩＴがＯＲゲート１５１を通して生成されたヒット信号ＨＩＴをキャッシュ要求者１０１へ返すと共に、該ヒット信号ＨＩＴによってレジスタ１１５への書込みを有効にする。さらに次のキャッシュ要求者１０１からのキャッシュアドレスＣＡを受け取るため、レジスタ１１４への書込みをも有効にする。これに対し、一致検出回路１１３から出力されるタグヒット信号ＴＡＧ・ＨＩＴが不一致状態を示すときには、ミスヒットとなり、次のサイクルから、キャッシュデータメモリ１１２がキャッシュ更新状態に入る。
キャッシュデータメモリ１１２が更新状態に入ると、コントロール回路１１０は、外部メモリ１３０からのデータの取り込みを可能にするため、キャッシュ更新信号ＳＩＯａによってトライステートバッファ１２０，１２１をオン状態にすると共に、ＩＡバス１２２へのアドレス供給源である外部レジスタ１１６のカウントイネーブル端子ＣＥを活性化し、ＩＤバス１２３への読出しデータ供給源を外部メモリ１３０にする。外部レジスタ１１６の内容は、ミスヒット時には必ず書き換えられる。
【００２８】
このとき、外部読出しデータが有効なタイミングであることを示す外部メモリ１３０の端子Ｄ−ＷＡＩＴが“Ｌ”レベルとなり、コントロール回路１１０から出力されるキャッシュ更新信号ＳＩＯａが“Ｈ”レベルであるので、該コントロール回路１１０はキャッシュタグメモリ１１１及びキャッシュデータメモリ１１２の各ライトイネーブル端子ＷＥを所定の周期で活性化する。
外部レジスタ１１６の下位２ビットはカウンタになっているので、キャッシュタグメモリ１１１及びキャッシュデータメモリ１１２の各ライタイネーブル端子ＷＥが活性化されるときに、該外部レジスタ１１６のカウントイネーブル端子ＣＥも活性化されて該カウンタがカウントアップする。
【００２９】
これがｎ回（例えば４回）繰り返され、ミスヒットしたラインアドレスのデータが全て書き換えられる。これにより、外部メモリ１３０のデータ出力端子Ｄよりデータを読出し、その読出されたデータがトライステートバッファ１２１を介してキャッシュデータメモリ１１２のＩ／Ｏ端子Ｄへ送られ、キャッシュ更新が行われる。また、コントロール回路１１０は、４回目にのみ有効であることをキャッシュタグメモリ１１１の端子ＶＡｉに書込む。以上のキャッシュ更新動作は、従来の図２のキャッシュメモリ装置５０と同様である。
【００３０】
本実施例の特徴は、前記のキャッシュ更新動作に加えて、キャッシュデータ更新中に、キャッシュデータメモリ１１２への書き込みデータを、キャッシュ要求者１０１から要求されれば、それをバイパスして渡すようにしている。つまり、キャッシュ更新状態時に、コントロール回路１１０の出力によって一致検出回路１５０がイネーブル状態となり、該一致検出回路１５０により、レジスタ１１４の内容と外部レジスタ１１６の内容との一致／不一致を検出する。この検出結果と、一致検出回路１１３から出力されたタグヒット信号ＴＡＧ・ＨＩＴとが、ＯＲゲート１５１で論理和が取られ、ヒット信号ＨＩＴが生成されてキャッシュ要求者１０１へ返されると共に、レジスタ１１５がイネーブルとなり、外部メモリ１３０からＩＤバス１２３へ読出されたデータが、キャッシュ要求者１０１へ出力される。
【００３１】
これを、図７によって説明するとクロック２においてキャッシュアドレスＣＡのｎ＋１がミスヒットし、キャッシュメモリ装置１００はキャッシュタグメモリ１１１及びキャッシュデータメモリ１１２の更新動作に入る。この時、信号ＴＡＧ−ＨＩＴは一致検出回路１１３の一致検出結果が不一致を示す“Ｌ”状態となる。クロック３においてコントロール回路１１０は、この信号ＴＡＧ−ＨＩＴの状態に応答して一致検出回路１５０及び外部レジスタ１１６をイネーブル状態にかつ、キャッシュタグメモリ１１１及びキャッシュデータメモリ１１２をライトイネーブル状態にする。外部レジスタ１１６には、キャッシュアドレスＣＡ（“ｘ…ｘ０１”）がそのまま取り込まれる。
【００３２】
一致検出回路１５０にはキャッシュアドレスＣＡと外部レジスタ１１６に取込まれたキャッシュアドレスに基づくアドレスデータＥＡが入力される。ここで、外部レジスタ１１６の下位２ビットはカウンタになっており、アドレスデータＥＡはキャッシュメモリ１１１，１１２への１ライン分の書込みに応じて１ずつカウントアップするためクロック４ではアドレスデータＥＡはｘ…ｘ０１”であるが、続くクロック５，６，７にはそれぞれ “ｘ…ｘ１０”， “ｘ…ｘ１１，” “ｘ…ｘ００”と変化する。よって、一致検出回路１５０の キャッシュアドレスＣＡとアドレスデータＥＡとの一致検出結果はクロック４で一致となる。このため、一致検出回路はレジスタ１１４，１１５をイネーブルとする。外部メモリ１３０は外部レジスタ１１６で生成されたアドレスデータＥＡ“ｘ…ｘ０１”に基づくデータを出力する。このデータは、レジスタ１１５を介してキャッシュデータＣＤとして、キャッシュ要求者１０１に渡すとともに キャッシュデータメモリ１１２にも更新書込みされる。また、キャッシュ要求者１０１はレジスタ１１４がイネーブルとなっているので、次のキャッシュアドレスＣＡとしてｎ＋２（“ｘ…ｘ０１”）を送る。
【００３３】
クロック５において、キャッシュメモリ装置１００はｎ＋１を含むラインのキャッシュデータの更新を行っており、外部レジスタ１１６によって、生成されたアドレスデータ“ｘ…ｘ１０”に対応するデータをキャッシュデータメモリ１１２に更新書込みしている。ここでレジスタ１１４にはｎ＋２が格納されており、キャッシュタグメモリ１１１にはまだタグ“ｘ…ｘ”が更新書込みされていないので、一致検出回路１１３は不一致となるが、一致検出回路１５０及び外部レジスタ１１６はイネーブル状態を保つため、キャッシュアドレスＣＡのｎ＋２が一致検出回路１５０へ入力される。この時、一致検出回路１５０はもう一方の入力として、ｎ＋２と同じアドレスデータを入力しているので一致を検出し、レジスタ１１４，１１５をイネーブル状態に保つ。なお、キャッシュ要求者１０１が要求したキャッシュアドレスＣＡのｎ＋２に対応するデータはキャッシュデータメモリ１１２への書込みとともに、レジスタ１１５を介してキャッシュ要求者１０１へ渡されている。また、キャッシュ要求者はレジスタ１１４がイネーブル状態なので次のキャッシュアドレスＣＡとしてｎ＋３（“ｘ…ｘ１１”）を送る。
【００３４】
ｎ＋３はｎとｎ＋２の関係と同様にｎ＋２に連続するアドレスデータなので、クロック６においてクロック５と同様な作業がされる。ただし、クロック７においてキャッシュアドレスＣＡとしてｎ＋４（“Ｙ…Ｙ００”）が入力される。ｎ＋４はキャッシュタグメモリ１１１内に格納されたタグと一致になるとともに、外部レジスタ１１６で生成されたタグ“ｘ…ｘ”に対する４回目の書込みをするためのアドレスデータ“ｘ…ｘ００”とも不一致となるので、レジスタ１１４，１１５のイネーブル状態は解除される。但し、この時既に外部レジスタ１１６から、外部メモリ１３０へはアドレスデータＥＡとして“ｘ…ｘ００”が送られ、キャッシュデータメモリ１１２及びレジスタ１１５へはアドレスデータ“ｘ…ｘ００”に対するデータが送られているので、キャッシュデータＣＤとして“ｘ…ｘ００”に対するデータが要求者１０１へはレジスタ１１５を介して送られている。また、“ｘ…ｘ”のキャッシュタグメモリ１１１への書込みもクロック７のタイミングで行っている。クロック８ではクロック２と同様な作業を行い、ここでまた、タグの不一致が生ずると、クロック９以降は前述と同様な更新作業に入る。
【実施例２】
【００３５】
本発明の第１の実施例のキャッシュメモリ装置１００において、キャッシュ要求者１０１からウェイト要求があった時に、キャッシュデータ更新動作を待ち状態にすることを可能としたのが図８に示すキャッシュデータメモリ装置２００である。図８はキャッシュメモリ装置２００の回路図である。第１の実施例のキャッシュメモリ装置１００に対してキャッシュメモリ装置２００には、３つのＡＮＤゲート２０１，２０２，２０３が付加されている。
【００３６】
ＡＮＤゲート２０１はキャッシュ要求者１０１からのウェイト要求状態を示す信号とコントロール回路１１０からの出力信号との論理積をとって、その結果をキャッシュタグメモリ１１１及びキャッシュデータメモリ１１２の各ライトイネーブル端子ＷＥに入力する。つまり、ＡＮＤゲート２０１はキャッシュ要求者１０１がウェイト要求しておらず、かつ、キャッシュタグメモリ１１１及びキャッシュデータメモリ１１２へ書込み要求が出された時に、キャッシュタグメモリ１１１及びキャッシュデータメモリ１１２のライトネーブル端子ＷＥを活性化させる。
【００３７】
ＡＮＤゲート２０２は、キャッシュ要求者１０１からのウェイト要求状態を示す信号とコントロール回路１１０からの出力信号との論理積をとって、その結果を外部レジスタ１１６のカウントイネーブル端子ＣＥに入力する。つまり、ＡＮＤゲート２０２はキャッシュ要求者１０１がウェイト要求しておらず、かつ、外部レジスタ１１６のカウントを“１”だけ加算する要求が出された時に、外部レジスタ１１６のカウントイネーブル端子ＣＥを活性化する。
【００３８】
ＡＮＤゲート２０３は、キャッシュ要求者１０１からのウェイト要求状態を示す信号とＯＲゲート１５１の出力信号（キャッシュデータのＨＩＴ状態を示す信号）との論理積をとって、その結果をレジスタ１１４，１１５のイネーブル端子Ｅに入力する。つまり、ＡＮＤゲート２０３は、キャッシュ要求者１０１がウェイト要求しておらず、かつ、キャッシュアドレスＣＡとキャッシュタグメモリ１１１内のタグと一致した時か、キャッシュアドレスＣＡと外部レジスタ１１６のデータが一致した時に、レジスタ１１４，１１５のイネーブル端子Ｅを活性化する。
従って、キャッシュ要求者１０１がウェイト要求をすることにより、キャッシュタグメモリ１１１及びキャッシュデータメモリ１１２へのデータの書込み、外部レジスタ１１６の外部メモリ１３０からの読出しが要求されたデータアドレスの出力、キャッシュデータＣＤのレジスタ１１５への格納が禁止され、キャッシュメモリ装置２００のキャッシュデータの更新処理全体が待ち状態となる。
【００３９】
次に、図８に示すキャッシュメモリ装置２００の動作を図９で説明する。図９は図８のキャッシュメモリ装置２００の動作を示すタイミングチャートである。
図９において、キャッシュ要求者１０１がウェイト要求をしているクロック２〜４の間はレジスタ１１４，１１５は不活性化となり、それぞれ、キャッシュアドレスＣＡ＝ｎ＋１、キャッシュデータＣＤ＝ｍを格納したままである。また、外部レジスタ１１６もｎ＋１を格納したままである。さらに、キャッシュタグメモリ１１１及びキャッシュデータメモリ１１２の各ライトイネーブル端子ＷＥは“Ｌ”レベルのままで活性化されない。
【実施例３】
【００４０】
本発明の第１の実施例のキャッシュメモリ装置１００において、キャッシュデータの更新時にキャッシュ要求者１０１からウェイト要求が生じた場合にも、キャッシュデータの更新を行うが、ウェイト状態の時に更新されたデータに対しても容易にアクセスできるようにしたのが、図１０に示す第３の実施例のキャッシュメモリ装置３００である。図１０は第３の実施例のキャッシュメモリ装置３００の回路図である。第１の実施例のキャッシュメモリ装置１００に対して、キャッシュメモリ装置３００は複数個のレジスタ３０１、レジスタ３０１に対応して設けられた複数個の一致検出回路３０２、レジスタ３０１に対応して設けられた複数個のトライステートバッファ３０４、トライステートバッファ３２１、ＡＮＤゲート３０３、ＯＲゲート３０５と３５１が設けられている。
レジスタ３０１各々は外部メモリ１３０から読出されたアドレス、データ及びコントロール回路１１０から出力される信号であるバリッドフラグが１セットで格納されている。このコントロール回路１１０から出力される信号がイネーブル端子Ｅに入力することによって、レジスタ３０１は活性化する。本実施例においてレジスタ３０１は３つ（バッファ０，１，２）用意されている。これは１ライン４アドレスで、キャッシュデータの更新は１ライン分行うことから、更新に充分適用できる数としたためで、３つに限るものではない。
【００４１】
一致検出回路３０２もレジスタ３０１に対応して３つ用意され、対応するレジスタ３０１からのバリッドフラグ信号Ｖに応じて活性化し、レジスタ１１４から出力されたキャッシュアドレスＣＡとレジスタ３０１に格納されたアドレスとの一致検出を行う。一致検出の結果、各一致検出回路３０２の出力は、それぞれ対応するトライステートバッファ３０４の動作制御を行うとともに、ＯＲゲート３０５に入力される。ＯＲゲート３０５は、各一致検出回路３０２の論理和をとり、その結果信号をＯＲゲート３５１に入力するとともに、その結果信号の反転信号にてトライステートバッファ３２１の動作制御を行う。トライステートバッファ３０４は一致検出回路３０２に対応して３つ用意され、各対応する一致検出回路３０２の一致検出の結果に応じて、各対応する。
【００４２】
レジスタ３０１に格納されたデータをＩＤバス１２３にそれぞれ出力する。トライステートバッファ３２１はＯＲゲート３０５の出力の反転信号に応じて、外部メモリ１３０に格納されたデータをＩＤバス１２３に出力する。ＯＲゲート３５１は入力としてＯＲゲート３０５の出力の他に、一致検出回路１１３及び１５０の一致検出結果が入力される３入力ＯＲゲートである。この３つの信号の論理和をとって、その結果の出力はＡＮＤゲート３０３の入力となる。ＡＮＤゲート３０３にはキャッシュ要求者１０１からのウェイト信号ＷＡＩＴも入力され、論理積の結果をレジスタ１１４，１１５のそれぞれのイネーブル端子Ｅに入力する。
【００４３】
次に、図１０に示すキャッシュメモリ装置３００の動作を図１１にて説明する。図１１は、図１０のキャッシュメモリ装置３００の動作を示すタイミングチャートである。
図１１において、クロック２において、ミスヒット（タグＨＩＴが“０”）となり、キャッシュメモリ装置３００はキャッシュデータの更新作業を開始する。しかしクロック２において、キャッシュ要求者１０１がウェイト状態となっている。
第２の実施例ではウェイト状態の間はキャッシュデータの更新作業は行われなかったが、この第３の実施例においては、ウェイト状態中のクロック４にて、外部メモリ１３０のデータが出力されると、キャッシュデータメモリ１１２へそのデータが書込まれる。これと同時に、そのデータはトライステートバッファ３２１を介してレジスタ１１５に入力される。クロック４においてはキャッシュ要求者１０１はまだウェイト状態のため、レジスタ１１５に入力されたキャッシュデータを受け取れない。ただし、クロック４において、コントロール回路１１０からの出力信号によってレジスタ３０１の１つを活性化して外部メモリ１３０からの出力であるアドレスと、そのアドレスに対応するデータをレジスタ３０１（例えばバッファ０）に格納する。この時、レジズタ３０１（バッファ０）にはアドレス及び、そのアドレスに対応するデータの他に、コントロール回路１１０からの出力信号によって、バリッドフラグがバリッド（有効）になる。
【００４４】
クロック５において、キャッシュ要求者１０１は再びクロック４と同じアドレスを要求する。この時、クロック４の際、レジスタ３０１に要求するアドレスとデータが格納されているため、複数の一致検出回路３０２のうち１つは一致を検出するので、ＯＲゲート３０５を介してトライステートバッファ３２１を非動作状態とし、トライステートバッファ３０４を介して、レジスタ３０１（バッファ０）からＩＤバス１２３に要求するアドレスのデータを出力する。なお、この時、キャッシュデータメモリ１１２には、次のアドレスに対応するデータが書込まれて、レジスタ３０１（例えばバッファ１）にも同様のアドレス、データが書込まれる。この様にして、以降も、キャッシュ要求者１０１からのアドレスとキャッシュデータメモリ１１２への書込みのタイミングがずれているにもかかわらず、レジスタ３０１（例えばバッファ１，２）からキャッシュデータＣＤがキャッシュ要求者１０１に出力される。
【実施例４】
【００４５】
第３の実施例において、必要と思われる時だけレジスタ３０１にアドレス、データを書込むようにしたのが、図１２に示す第４の実施例のキャッシュメモリ装置４００である。図１２はキャッシュメモリ装置４００の回路図である。
第３の実施例のキャッシュメモリ装置３００に対して、キャッシュメモリ装置４００はバッファリング監視回路４０１が付加されている。バッファリング監視回路４０１はキャッシュ要求者１０１がウェイト状態の時に更新するキャッシュデータがレジスタ３０１に格納すべきデータか否かをチェックし、所定の格納先のレジスタ３０１（図１２ではレジスタ３０１は２つしか示されていないので、バッファ０あるいはバッファ１）に格納するとともに、不要になったレジスタ３０１のデータを無効にするものである。バッファリング監視回路４０１はウェイト信号ＷＡＩＴ、各一致検出回路１５０、３０２の出力信号（検出結果）、外部レジスタ１１６の出力、及びコントロール回路１１０のキャッシュタグメモリ１１１及びキャッシュデータメモリ１１２のライトイネーブル端子を活性化する出力信号が入力され、レジスタ３０１を活性化する信号及びレジスタ３０１に格納されたデータの有効性を示すバリッドフラグを出力する。
【００４６】
次に、図１２に示すキャッシュメモリ装置４００の動作を図１３にて説明する。図１３は図１２のキャッシュメモリ装置４００の動作を示すタイミングチャートである。
バッファリング監視回路４０１は、レジスタ３０１（バッファ０と１）にデータを格納する条件及び格納したデータを無効にする条件を、例えば次のようにしている。
【００４７】
（１）バッファ０に格納する条件
“キャッシュデータメモリヘの書込みをしているデータのアドレスの下位１ビットが
０”
かつ
“バッファ０自身に格納されたデータが無効”
かつ
“バイパスＨＩＴで、キャッシュ要求者１０１がウェイト状態であるか、バッファ１
がＨＩＴでキャッシュ要求者１０１がウェイト状態である。”
（２）バッファ１に格納する条件
“キャッシュデータメモリヘの書込みをしているデータのアドレスの下位１ビットが
１”
かつ
“バッファ１自身に格納されたデ一タが無効”
かつ
“バイパスＨＩＴで、キャッシュ要求者１０１がウェイト状態であるか、バッファ０
がＨＩＴでキャッシュ要求者１０１がウェイト状態である。”
（３）バッファ０に格納したデータを無効にする条件
“キャッシュデータメモリヘの書込みをしているデータのアドレスの下位１ビットが
０”
かつ
“バイパスＨＩＴかバッファ０ＨＩＴでともにキャッシュ要求者１０１がウェイト状
態でない”
（４）バッファ１に格納したデータを無効にする条件
“キャッシュデータメモリヘの書込みをしているデータのアドレスの下位１ビットが
１”
かつ
“バイパスＨＩＴかバッファ１ＨＩＴでともにキャッシュ要求者１０１がウェイト状
態でない。”
【００４８】
クロック２において、ミスヒットが発生し、キャッシュデータメモリ１１２の更新が行われるが、クロック４において、外部メモリ１３０からデータが読出されるＩＤバス１２３にデータｎ＋１が生ずる（バイパスＨＩＴ状態）。クロック４ではキャッシュ要求者１０１はウェイト状態である。また、アドレスデータｎ＋１の下位１ビットが、例えば“０”ならば、前記（１）の条件を満たすため、バッファ０にデータｎ＋１が書込まれる。クロック５ではバッファ０のＨＩＴが発生するが、この時はまだ、キャッシュ要求者１０１はウェイト状態のため、バッファ０のデータは無効にならない。しかし、（２）の条件が満たされるため（データｎ＋１の下位１ビットを“０”としたのでそれに続くデータｎ＋２の下位１ビットは“１”）、バッファ１にデータｎ＋２が書込まれる。このようにして、前記（１）〜 （４）の条件を満たす場合に、新たな書込みやデータの無効を行っていく。
【実施例５】
【００４９】
図１４は、本発明の第５の実施例を示すキャッシュメモリ装置５００の回路図であり、図１のキャッシュメモリ装置１００中の要素と共通の要素には共通の符号が付されている。
このキャッシュメモリ装置５００は、図５のキャッシュメモリ装置５１と同様に、ＭＰＵ等の命令発生部に設けられる命令キャッシュメモリとして動作するもので、キャッシュ更新時においてキャッシュメモリがウェイト状態のときにミスヒットしたラインアドレスに続く次のラインアドレスもミスヒットするか否かを判定するミスヒット判定手段５６０と、キャッシュ更新中に新たに読んできたデータ（命令）が必要とされるか否か（例えば、分岐命令があるか否か）を判別する必要性判別手段５７０と、次のラインアドレスもミスヒットであってその内容が必要とされるならば（分岐命令がなければ）、続けて次のラインアドレスも更新する更新手段５８０とＡＮＤゲート５７４が、付加されている。
【００５０】
ミスヒット判定手段５６０は、レジスタ１１４の出力側に設けられたセレクタ５６１と、該セレクタ５６１の出力を＋１インクリメントする加算器５６２と、該加算器５６２の出力によって内容が書き換えられてセレクタ５６１へ出力するレジスタ５６３とで、構成されている。必要性判別手段５７０は、外部メモリ１３０のデータ出力端子Ｄから読出されたデータをデコードするデコーダ５７１と、該デコーダ５７１の出力の論理和を取るＯＲゲート５７２と、該ＯＲゲート５７２の出力を一時保持する遅延型フリップフロップからなるフラグ５７３とを備えている。
ＡＮＤゲート５７４は一致検出回路１１３から出力されるタグヒット信号ＴＡＧ・ＨＩＴ、コントロール回路１１０から出力される信号ＨＩＴ・Ｅ、及び該コントロール回路１１０から出力されるライトイネーブル信号Ｓ１０ｂの論理積を求めてヒット信号ＨＩＴを出力する。ライトイネ一ブル信号ＳＩＯｂは、キャッシュタグメモリ１１１及びキャッシュデータメモリ１１２にそれぞれ設けられた反転ライトイネーブル端子ＷＥＮをそれぞれ活性化する信号である。
更新手段５８０は、レジスタ１１４の出力を選択して外部レジスタ１１６の内容を更新するセレクタ５８１と、該外部アドレス１１６の出力を＋１インクリメントして該セレクタ５８１にフィードバックする加算器５８２とを、備えている。なお、５４０は結線状態を示す。
【００５１】
次に、図１４に示すキャッシュメモリ装置５００の動作を図１５を参照しつつ説明する。
図１５は、キャッシュメモリ装置５００の動作を示すタイミングチャートである。この図１５中のｎは、下位２ビットが“００”である場合を示す。このタイミングチャートの前提条件は、要求されるキャッシュアドレスＣＡ（つまり命令）のうち、アドレスｎ〜ｎ＋５までの命命とｎ＋７の命令は分岐命令ではないが、ｎ＋６の命令が分岐命令である。このキャッシュメモリを使うキャッシュアドレス要求側の例えぱＣＰＵの分岐のタイプは、遅延分岐で行われ、ｎ＋６の分岐命令がｍに分岐する。そのため、実行順序は、ｎ，ｎ＋１,…，ｎ＋６, ｎ＋７，ｍとなる。キャッシュメモリに対してアドレスｎ〜ｎ＋１０までとｍ〜ｍ＋３まではミスヒットし、ｍ＋４〜ｍ＋１０まではヒットする。また、外部メモリ１３０へのアクセスはＤＲＡＭのぺ一ジモードを使用し、最初のデータが到達するまで、２クロックＣＫかかるため、２つ先のラインアドレスまでチエックできるものとする。
【００５２】
まず、図１５の時刻ｔ１において、キャッシュ要求者１０１からキャッシュアドレスＣＡのうちのｎ−１が供給されると、それがレジスタ１１４に格納された後、その内容とキャッシュタグメモリ１１１内のアドレスとが一致検出回路１１３で一致／不一致の検出が行われる。ここでは、一致するので、アドレスｎ−１に対応するキャッシュデータメモリ１１２内のデータがデータ出力端子Ｄｏから読出され、キャッシュデータＣＤとしてキャッシュ要求者１０１へ返される。
時刻ｔ２において、キャッシュアドレスＣＡとしてｎが供給されると、一致検出回路１１３の検出結果によってミスヒットとなる。そのため、キャッシュメモリ装置５００は次から更新モードヘ移る。そして、外部メモリ１３０へのアドレスＥＡを送出するレジスタ１１６に、ミスヒットを起こしたアドレスｎがセレクタ５８１を通して書込まれる。セレクタ５８１は、常時、レジスタ１１４の方を向いている。
【００５３】
時刻ｔ３では、キャッシュメモリにとっては空き状態（ウェイト状態）である。外部メモリ１３０の仕様により、２クロックＣＫ後にしかデータが到達しない。時刻ｔ４も同じである。この間、ミスヒット判定手段５６０は、続くラインアドレスもミスヒットするか否かを調ぺる。
即ち、時刻のｔ３，ｔ４のウェイト状態のとき、コン卜ロール回路１１０から出力される信号ＨＩＴ・Ｅが“Ｌ”レベルになる。セレクタ５６１は通常、レジスタ１１４の方を向いているが、信号ＨＩＴ・Ｅが“Ｌ”レベルの間だけ、レジスタ５６３の方を向く。このレジスタ５６３では、常に、キャッシュタグメモリ１１１に与えるべき値を加算器５６２で＋１インクリメントした値を取り込んでいるため、ウェイト状態のときに続くラインドレスがミスヒットか否かを調べることができる。なお、この間に一致検出回路１１３から出力されるタグヒット信号ＴＡＧ・ＨＩＴは、要求されたキャッシュアドレスＣＡに対して無効なので、信号ＨＩＴ・ＥによってＡＮＤゲート５７４でマスクをかけてある。この結果、時刻ｔ３及びｔ４ともミスヒットしたため、もともとミスヒットを起こしたラインアドレスとそれに続く２つのラインアドレスも、同時に更新する予定になる。
【００５４】
時刻ｔ５において、もともとミスヒットを起こしたキャッシュアドレスＣＡのデータが到達したため、キャッシュデータメモリ１１２及びキャッシュタグメモリ１１１はライト状態になる。通常、キャッシュデータメモリ１１２に対してのアドレスはキャッシュアドレスＣＡであるが、書込み時は、外部レジスタ１１６から外部メモリ１３０へのアドレスＥＡが送出され、外部メモリ１３０のデータ出力端子Ｄからデータが読出され、キャッシュタグメモリ１１１及びキャッシュデータメモリ１１２のデータとタグＴＡＧが更新される。このとき、外部レジスタ１１６のライン内アドレスＩＡに対応するカウンタ部分が加算器５３５でインクリメントされ、次のデータの更新に備える。ラインアドレスの更新期間中は、セレクタ５３６が加算器５３５の方を向いている。
【００５５】
時刻ｔ６において、一致検出回路１１３が一致状態を検出するので、キャッシュメモリがヒット状態となり、キャッシュデータメモリ１１２のデータ出力端子Ｄｏから読出されたｎのキャッシュデータＣＤがキャッシュ要求者１０１へ返され、レジスタ１１４には新た要求されたキャッシュアドレスＣＡのｎ＋１が書込まれる。その後の時刻ｔ７〜ｔ１０は、時刻ｔ５，ｔ６と同様の動作をする。
時刻ｔ１１において、もともとミスヒットを起こしたライン内の最後のアドレスを更新する。基本的には、時刻ｔ５と同様の動作をするが、この他に、必要性判別手段５７０によって続くラインの更新を行うか否かの判定を行う。
即ち、時刻ｔ３において続くラインアドレスはミスヒットすることがわかっている。ここで、今更新しているラインアドレスの中に分岐命令があるか否かをデコーダ５７１でデコードした結果が、キャッシュデータメモリ１１２へのライト時（時刻ｔ５，ｔ７，ｔ９，ｔ１１）のとき、コン卜ロール回路１１０から出力される信号ＨＩＴ・Ｅが“Ｌ”レベルのときにリセットされたフラグ５７３に格納されている。そのため、時刻ｔ１１では、このフラグ５７３の値とデコード結果とをＯＲゲート５７２によって論理和を求めることにより、分岐命令がミスヒットしたラインアドレス内にあったか否かを判定できる。ここでは、ミスヒットしたラインアドレス内に分岐命令がなかったので、加算器５８２によってインクリメントした値を外部レジスタ１１６にロードし、次から続くラインアドレスを更新する。
【００５６】
時刻ｔ１２は時刻ｔ６と同様の動作である。さらに、時刻ｔ１３〜ｔ１９は、時刻ｔ５〜ｔ１１と同様の動作である。時刻ｔ１９のとき、今度は時刻ｔ４において、この次のラインアドレスもミスヒットすることがわかっているが、時刻ｔ１７において必要性判別手段５７０によって分岐命令が出力されたため、フラグ５７３の内容が“１”になっているので、次の更新を行わず、ここで外部メモリ１３０へのアクセスを取り止める。
時刻ｔ２０では、時刻ｔ１２と同様の動作である。ただ、この時刻ｔ２０において、レジスタ１１４に格納されるキャッシュアドレスＣＡは、ｎ＋６アドレスにあった分岐命令によって発生したアドレスｍである。時刻ｔ２１以降は、キャッシュ要求者１０１からの要求によって発生したキャッシュ更新サイクル時刻ｔ２以降と同様の動乍となる。
【００５７】
この第５の実施例では、次のような利点を有している。
本実施例では、ミスヒットしてから最初のデータが到達するまでのキャッシュメモリがひまな間（ウェイト状態の間）に、ミスヒット判定手段５６０により、ミスヒットを起こしたラインアドレスの次のラインアドレスもミスヒットするか否かを調ベ、必要性判別手段５７０により、実際にミスヒットしたラインの連続アドレスが必要であることが判れば（例えば、分岐命令がなければ）、更新手段５８０によって次のラインアドレスも続けて更新するようにしているので、ヒット率を向上できる。
【実施例６】
【００５８】
第５の実施例のキャッシュメモリ装置５００において、キャッシュデータメモリ１１２とキャッシュタグメモリ１１１の書込みをそれぞれ独立して行わせることにより、ミスヒットによるキャッシュデータメモリ１１２へのデータの書込み最中でも、キャッシュタグメモリ１１１を利用して次のラインアドレスのヒット／ミスヒットを調べることを可能にしたのが図１６に示す第６の実施例のキャッシュメモリ装置６００である。
図１６はキャッシュメモリ装置６００の回路図である。図１４に示すキャッシュメモリ装置５００に対し、一致検出回路１１３と一致検出回路６０１の一致検出結果に基づいて、コントロール回路１１０が、キャッシュタグメモリ１１１及びキャッシュデータメモリ１１２をそれぞれ独立して書込みを許可するライトイネーブル信号ＴＷＥ、ＤＷＥを出力している。また、キャッシュメモリ装置６００はＯＲゲート６０２が付加されている。一致検出回路６０１は、キャッシュアドレスＣＡのタグＴＡＧ及びラインアドレスＬＡと外部レジスタ１１６に格納されたキャッシュアドレスのタグＴＡＧ及びラインアドレスＬＡの一致を検出し、一致が検出された場合は、コントロール回路１１０へ書込みマッチング信号ＷＡ−ＭＡＴを出力する。つまり、外部メモリから要求のアドレスが出力されているかどうかを検出するものである。
【００５９】
コントロール回路１１０は、書込みマッチング信号ＷＡ−ＭＡＴに応じて、キャッシュデ一タメモリ１１２ヘライトイネーブル信号ＤＷＥを出力し、キャッシュタグメモリ１１１へ１ラインデータごとに１回だけ、キャッシュタグメモリ１１１へのライトイネーブル信号ＴＷＥを出力する。ＯＲゲート６０２は外部メモリ１３０のデータが有効であることを示すＤ−ＷＡＩＴ信号に応じて、コントロール回路１１０から出力されるＨＩＴ−Ｖ信号とＡＮＤゲート５７４との論理和をとり、その結果をキャッシュ要求者にＨＩＴ信号として出カするものである。
【００６０】
次に、図１６のキャッシュメモリ装置６００の動作を図１７を用いて説明する。図１７はキャッシュメモリ装置６００の動作を示す動作タイミングチャートである。図１７において、１ライン４アドレスとし、外部メモリ１３０へのアクセスは最初のものは２クロック後に有効、連続アドレスならば１クロック後に有効になるものとしている。また、キャッシュメモリ装置６００に対する要求のキャッシュアドレスＣＡはｎからｎ＋７まではミスヒットし、ｎ＋６に分岐命令があるときの実行例である。
【００６１】
時刻ｔ１において、要求のアドレスであるｎ−１はヒットしたため、キャッシュタグメモリ１１１へはｎ−１がそのまま渡される。時刻ｔ２において、ｎがミスヒットとなり、次の時刻ｔ４から外部メモリ１３０ヘアクセスする為、このｎは更新手段５８０を介して外部レジスタ１１６に取込まれ、ｎに対するキャッシュデータの更新が開始される。時刻ｔ７〜１２において、最初にキャッシュデータの更新を起こしたアドレスｎと同じラインのｎ＋１，ｎ＋２，ｎ＋３のヒット状態を調べ、全てミスヒットであるから外部メモリ１３０から続いてｎ＋１，ｎ＋２，ｎ＋３のデータが送られ、ライトイネーブル信号ＤＷＥに応じてキャッシュデータメモリ１１２へｎ＋１，ｎ＋２，ｎ＋３の書込みを行う。
この時、一致検出回路６０１は外部メモリ１３０から要求のアドレスのデータが読出されているか否かを調べる。例えば時刻ｔ７においては要求のキャッシュアドレスＣＡがｎ＋１であるので、外部レジスタ１１６に格納されたアドレスｎが、加算回路５３５によって、下位１ビット（ＩＡ）を１だけインクリメントした時に、一致検出回路６０１は一致を検出し、ＷＡ−ＭＡＴ信号をコントロール回路１１０に出カする。また、外部メモリ１３０は読出し状態となっているので、Ｄ−ＷＡＩＴ信号もコントロール回路１１０に対して出力されている。
【００６２】
コントロール回路１１０は、ＷＡ−ＭＡＴ信号とＤ・ＷＡＩＴ信号により要求のアドレスが正しく読出されることをキャッシュ要求者に通達するためＨＩＴ−Ｖ信号を出力し、ＨＩＴ信号を生成する。このキャッシュデータメモリ１１２の更新期間として時刻ｔ１３において、更新手段５８０により、ｎ＋３の次のラインアドレスつまり、ｎ＋４が生成され、キャッシュタグメモリ１１１に対し、ｎ＋４のヒット状態をチェックする。本例においてはｎ＋４もミスヒットとしている。このミスヒットの結果は図示せぬレジスタに格納する。また、ミスヒットの結果をコントロール回路１１０に送るようにしてもよい。時刻ｔ１２において、アドレスｎのラインの更新が終了し、コントロール回路１１０はライトイネーブル信号ＤＷＥの４回目の出力とともにライトイネーブル信号ＴＷＥを出力する。また、必要性判別手段５７０はｎ〜ｎ＋３には分岐命令を検出しないので、更新作業は継続して行われる。よって、ｎ＋４のラインの更新が行われる。時刻ｔ１７において、ｎ＋６は分岐命令であることを、必要性判別手段５７０が検出し、この検出結果をコントロール回路１１０に対して出力する。コントロール回路１１０はｎ＋４のラインの更新が終了した後の時刻ｔ２１にて、分岐先のｍに対し、上記と同様な動作を行う。
【００６３】
以上のように、６つの実施例にて、本発明のキャッシュメモリ装置を説明したが、各実施例に示す回路及び動作タイミングは同様の動作が可能であれば、種々に変更可能である。
【産業上の利用可能性】
【００６４】
以上詳細に説明したように、本発明の第１の実施例によれぱ、ミスヒットによるキャッシュデータ更新中に、書込んでいるデータをキャッシュ要求者に渡せる手段を設けたので、ヒット率が向上するとともにミスヒツトペナルティ時間が短縮する。
本発明の第２の実施例によれぱ、第１の実施例においてキャッシュ要求者のウェイト要求に対してキャッシュデータの更新を中断する手段を設けたので、第１の実施例の効果に加えて、ウェイト要求の信号によりキャッシュデータの更新処理全体を待ち状態にし、これによりキャッシュ要求者とキャッシュメモリ装置とのタイミングを合わせることができる。従って、キャッシュメモリ装置を有するシステム全体としての動作特性が向上する。
本発明の第３の実施例によれば、第１の実施例において、キャッシュ要求者のウェイト要求に対して、キャッシュデータのキャッシュ要求者へのキャッシュデータの出力を中断する手段と、ウェイト状態時に更新したキャッシュデータを格納しておくバッファ手段とを設けたので、ウェイト要求に対してキャッシュデータの更新を中断することなく、かつ、ウェイト状態時に更新されたキャッシュデータに対してもアクセス可能となり、第２の実施例より動作特性が向上する。
本発明の第４の実施例によれば、第３の実施例において設けたバッファ手段に格納する対象に対して、キャッシュデータの格納の必要性を判断する手段を設けて、必要なキャッシュデータのみをバッファ手段に格納するようにしたので、第３の実施例に比ベて、少ないハード量で、第３の実施例と同様な効果が得られる。
【００６５】
第５の実施例によれば、ミスヒットによるキャッシュデータ更新中に、ミスヒットしたキャッシュデータのラインアドレスデータに続く次のラインアドレスデータもミスヒットするか否かを判定する手段と、キャッシュデータ更新中に更新しているデータの内容が必要とされるか否かを判別する手段と、この判別手段によって更新しているデータの内容が必要とされ、かつ、次のラインアドレスデータがミスヒットであったならば、続けて次のラインアドレスデータも更新する手段を設けたので、キャッシュデータの更新までの時間を利用して次のラインアドレスデータのヒット状態を判定でき、更新中のアドレスに分岐命令等がなければ、次のラインアドレスデータを続けて更新するようにしたので、キャッシュメモリ装置の稼動率及びヒット率がより向上し、ミスヒットペナルティ時間が短くなる。
第６の実施例によれば、第５の実施例のキャッシュメモリ装置において、キャッシュデータメモリとキャッシュタグメモリをそれぞれ独立のライトイネーブル信号で制御するとともに要求のキャッシュメモリと外部メモリから読出されているメモリとの一致を検出する一致検出回路を設け、コントロール回路が、キャッシュデータメモリとキャッシュタグメモリをそれぞれ独立したライトイネーブル信号によって制御しても、キャッシュ要求者には正しく書込みが行われていることを示すＨＩＴ信号を出力するようにしたので、キャッシュデータメモリの更新期間中にキャッシュタグメモリを利用して、更新中のキャッシュアドレスのデータに続くキャッシュアドレスのヒット状態を判定でき、第５の実施例と同様な効果を得ることができる。
【図面の簡単な説明】
【００６６】
【図１】本発明の第１の実施例を示すキャッシュメモリ装置の回路図である。
【図２】従来のキャッシュメモリ装置の回路図である。
【図３】キャッシュタグメモリの記憶内容を説明する図である。
【図４】図２のキャッシュメモリ装置の動作を示すタイミングチャートである。
【図５】従来の他の例を示すキャッシュメモリ装置の回路図である。
【図６】図５のキャッシュメモリ装置の動作を示すタイミングチャートである。
【図７】図１のキャッシュメモリ装置の動作を示すタイミングチャートである。
【図８】本発明の第２の実施例を示すキャッシュメモリ装置の回路図である。
【図９】図８のキャッシュメモリ装置の動作を示すタイミングチャートである。
【図１０】本発明の第３の実施例を示すキャッシュメモリ装置である。
【図１１】図１０のキャッシュメモリ装置の動作を示すタイミングチャートである。
【図１２】本発明の第４の実施例を示すキャッシュメモリ装置である。
【図１３】図１２のキャッシュメモリ装置の動作を示すタイミングチャートである。
【図１４】本発明の第５の実施例を示すキャッシュメモリ装置である。
【図１５】図１４のキャッシュメモリ装置の動作を示すタイミングチャートである。
【図１６】本発明の第６の実施例を示すキャッシュメモリ装置である。
【図１７】図１６のキャッシュメモリ装置の動作を示すタイミングチャートである。
【符号の説明】
【００６７】
１００，２００，３００，４００，５００，６００    キャッシュメモリ装置
１０１                                            キャッシュ要求者
１１０                                            コントロール回路
１１２                                            キャッシュデータメモリ
１１３                                            一致検出回路
１１４，１１５                                    レジスタ
１１６                                            外部レジスタ
１１７，１１８，１２０，１２１                    トライステートバッファ
１２２                                            ＩＡバス
１２３                                            ＩＤバス
１２４                                            ＡＮＤゲート
１３０                                            外部メモリ
１５０                                            一致検出回路
１５１                                            ＯＲゲート
２０１，２０２，２０３                            ＡＮＤゲート
３０１                                            レジスタ
３０２                                            一致検出回路
３０３                                            ＡＮＤゲート
３０４，３２１                                    トライステートバッファ
３０５，３５１                                    ＯＲゲート
４０１                                            バッファリング監視回路
５３５，５６２，５８２                            加算器
５３６，５６１，５８１                            セレクタ
５６０                                            ミスヒット判定手段
５６３                                            レジスタ
５７０                                            必要性判別手段
５７１                                            デコーダ
５７２                                            ＯＲゲート
５７３                                            フラグ
５７４                                            ＡＮＤゲート
５８０                                            更新手段
６０１                                            一致検出回路
６０２                                            ＯＲゲート
【図１】
2004220624.tif 000003
【図２】
2004220624.tif 000004
【図３】
2004220624.tif 000005
【図４】
2004220624.tif 000006
【図５】
2004220624.tif 000007
【図６】
2004220624.tif 000008
【図７】
2004220624.tif 000009
【図８】
2004220624.tif 000010
【図９】
2004220624.tif 000011
【図１０】
2004220624.tif 000012
【図１１】
2004220624.tif 000013
【図１２】
2004220624.tif 000014
【図１３】
2004220624.tif 000015
【図１４】
2004220624.tif 000016
【図１５】
2004220624.tif 000017
【図１６】
2004220624.tif 000018
【図１７】
2004220624.tif 000019