(57)【要約】キャッシュメモリ（キャッシュタグＲＡＭ２２およびキャッシュデータＲＡＭ２３）のリプレースに関するリプレースウェイ情報を保持するシングルポートＬＲＵ・ＲＡＭ（２６）と、シングルポートＬＲＵ・ＲＡＭ（２６）のリプレースウェイ情報に基づいて、リプレース対象のウェイをＬＲＵ方式により選択するＬＲＵリプレースウェイ選択部（２７）と、リプレースウェイ情報を使用せずにランダム方式によりリプレース対象のウェイを選択するランダムリプレースウェイ選択部（１０５）と、ＣＰＵ（１０）から同時に発行されキャッシュメモリへのアクセスにかかる第１のリクエストおよび第２のリクエストのそれぞれについてヒット判定を行うヒット判定部（１０２）と、第１のリクエストおよび第２のリクエストに対応するヒット判定が共にキャッシュミスである場合、第１のリクエストに対応させてＬＲＵリプレースウェイ選択部（２７）にウェイを選択させるとともに、第２のリクエストに対応させてランダムリプレースウェイ選択部（１０５）にウェイを選択させる調停部（１０４）とを備えている。
2004046933.tif 000002
【特許請求の範囲】
【請求項１】
上位装置と主記憶装置との間に設けられ、複数ウェイ構成のキャッシュメモリに対する制御を行うメモリ制御装置において、
前記キャッシュメモリのリプレースに関するリプレースウェイ情報を保持するリプレースウェイ情報保持手段と、
前記リプレースウェイ情報保持手段の前記リプレースウェイ情報に基づいて、リプレース対象の第１のウェイを選択する第１のリプレースウェイ選択手段と、
前記リプレースウェイ情報を使用せずにリプレース対象の第２のウェイを選択する第２のリプレースウェイ選択手段と、
前記上位装置から同時に発行され前記キャッシュメモリへのアクセスにかかる第１のリクエストおよび第２のリクエストのそれぞれについてヒット判定を行うヒット判定手段と、
前記第１のリクエストおよび前記第２のリクエストに対応する前記ヒット判定が共にキャッシュミスである場合、前記第１のリクエストに対応させて前記第１のリプレースウェイ選択手段に前記第１のウェイを選択させるとともに、前記第２のリクエストに対応させて前記第２のリプレースウェイ選択手段に前記第２のウェイを選択させる調停手段と、
を備えたことを特徴とするメモリ制御装置。
【請求項２】
前記ヒット判定手段の前記ヒット判定に基づいて、ヒット状態がキャッシュヒットまたはキャッシュミスのうちいずれかの傾向にあるかを判定するヒット状態判定手段を備え、
前記調停手段は、
前記第１のリクエストおよび前記第２のリクエストに対応する前記ヒット判定が共にキャッシュミスでありかつ前記ヒット状態が前記キャッシュミスである場合、前記第１のリクエストに対応させて前記第１のリプレースウェイ選択手段に前記第１のウェイを選択させるとともに、前記第２のリクエストに対応させて前記第２のリプレースウェイ選択手段に前記第２のウェイを選択させる第１の調停手段と、
前記ヒット判定が共にキャッシュミスでありかつ前記ヒット状態が前記キャッシュヒットである場合、前記第１のリクエストに対応させて前記第１のリプレースウェイ選択手段に前記第１のウェイを選択させるとともに、前記第２のリクエストを前記ヒット判定手段に再投入し、該ヒット判定手段のヒット判定がキャッシュミスである場合、前記第２のリクエストに対応させて前記第１のリプレースウェイ選択手段に前記第１のウェイを選択させる第２の調停手段と、
を備えたことを特徴とする請求の範囲第１項に記載のメモリ制御装置。
【請求項３】
前記第１のリプレースウェイ選択手段は、最も使われていないデータを追い出す方式に基づいて、前記第１のウェイを選択し、前記第２のリプレースウェイ選択手段は、ランダムに前記第２のウェイを選択することを特徴とする請求の範囲第１項または第２項に記載のメモリ制御装置。
【請求項４】
上位装置と主記憶装置との間に設けられ、複数ウェイ構成のキャッシュメモリを有するキャッシュメモリ装置に適用されるキャッシュリプレース制御方法において、
リプレースウェイ情報保持手段に保持され前記キャッシュメモリのリプレースに関するリプレースウェイ情報に基づいて、リプレース対象の第１のウェイを選択する第１のリプレースウェイ選択工程と、
前記リプレースウェイ情報を使用せずにリプレース対象の第２のウェイを選択する第２のリプレースウェイ選択工程と、
前記上位装置から同時に発行され前記キャッシュメモリへのアクセスにかかる第１のリクエストおよび第２のリクエストのそれぞれについてヒット判定を行うヒット判定工程と、
前記第１のリクエストおよび前記第２のリクエストに対応する前記ヒット判定が共にキャッシュミスである場合、前記第１のリクエストに対応させて前記第１のリプレースウェイ選択工程で前記第１のウェイを選択させるとともに、前記第２のリクエストに対応させて前記第２のリプレースウェイ選択工程で前記第２のウェイを選択させる調停工程と、
を含むことを特徴とするキャッシュリプレース制御方法。
【請求項５】
前記ヒット判定工程の前記ヒット判定に基づいて、ヒット状態がキャッシュヒットまたはキャッシュミスのうちいずれかの傾向にあるかを判定するヒット状態判定工程を含み、
前記調停工程は、
前記第１のリクエストおよび前記第２のリクエストに対応する前記ヒット判定が共にキャッシュミスでありかつ前記ヒット状態が前記キャッシュミスである場合、前記第１のリクエストに対応させて前記第１のリプレースウェイ選択工程で前記第１のウェイを選択させるとともに、前記第２のリクエストに対応させて前記第２のリプレースウェイ選択工程で前記第２のウェイを選択させる第１の調停工程と、
前記ヒット判定が共にキャッシュミスでありかつ前記ヒット状態が前記キャッシュヒットである場合、前記第１のリクエストに対応させて前記第１のリプレースウェイ選択工程で前記第１のウェイを選択させるとともに、前記第２のリクエストを前記ヒット判定工程で再投入し、該ヒット判定工程のヒット判定がキャッシュミスである場合、前記第２のリクエストに対応させて前記第１のリプレースウェイ選択工程で前記第１のウェイを選択させる第２の調停工程と、
を含むことを特徴とする請求の範囲第４項に記載のキャッシュリプレース制御方法。
【発明の詳細な説明】
【技術分野】  本発明は、メモリ制御装置およびキャッシュリプレース制御方法に関するものであり、特に、複数同時アクセスに対応でき、実装面積を削減しつつキャッシュ性能を向上させることができるメモリ制御装置およびキャッシュリプレース制御方法に関するものである。
【背景技術】  第８図は、従来のキャッシュメモリ装置２０の構成を示すブロック図である。この図に示したキャッシュメモリ装置２０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０と主記憶装置３０との間の速度差を埋めるために、キャッシュメモリを備えた装置である。このキャッシュメモリは、後述するキャッシュタグＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２２およびキャッシュデータＲＡＭ２３から構成されている。
ＣＰＵ１０は、キャッシュメモリ装置２０に対して、データのリードまたはライトに関するリクエストを出し、キャッシュメモリまたは主記憶装置３０からデータのリード／ライトを行う。
主記憶装置３０は、大容量であってかつアクセス時間がキャッシュメモリ（キャッシュタグＲＡＭ２２およびキャッシュデータＲＡＭ２３）に比して遅いという特性を備えている。この主記憶装置３０には、ＣＰＵ１０で用いられるデータの全てが記憶されている。
キャッシュメモリ（キャッシュタグＲＡＭ２２およびキャッシュデータＲＡＭ２３）は、主記憶装置３０に記憶されている全データのうち、一部（頻繁に使用されるデータ）を記憶している。キャッシュメモリは、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、アクセス時間が主記憶装置３０に比して短いという特性を備えている。
さらに、記憶容量の面から見れば、主記憶装置３０よりもキャッシュメモリの記憶容量が小さい。
ここで、キャッシュメモリ装置２０においては、データ格納方式として、セットアソシアティブ方式が採用されている。このセットアソシアティブ方式は、第９図に示したようにキャッシュメモリ（キャッシュタグＲＡＭ２２およびキャッシュデータＲＡＭ２３）を複数のウェイ（ウェイ０およびウェイ１）に分割しておき、各ウェイにおける決められたラインにデータが格納される方式である。
同図に示したキャッシュタグＲＡＭ２２においては、例えば、ウェイ０のラインＮにアドレスａが格納されており、ウェイ１のラインＮにアドレスｂが格納されている。
また、キャッシュデータＲＡＭ２３においては、例えば、ウェイ０のラインＮにデータＡが格納されており、ウェイ１のラインＮにデータＢが格納されている。キャッシュタグＲＡＭ２２およびキャッシュデータＲＡＭ２３においては、アドレスａとデータＡとが、アドレスｂとデータＢとがそれぞれ一対一で対応している。
第８図に戻り、キャッシュタグ部２１は、ＣＰＵ１０からのリクエスト（アドレス）を受付け、キャッシュタグＲＡＭ２２およびヒット判定部２４から構成されている。キャッシュタグＲＡＭ２２は、キャッシュデータＲＡＭ２３（第９図参照）に格納されているデータに対応するアドレス（タグ）を格納している。
ヒット判定部２４は、ＣＰＵ１０からのアドレスと、キャッシュタグＲＡＭ２２のアドレスとを比較し、両者が一致した場合、ヒット判定結果を「キャッシュヒット」とする。「キャッシュヒット」の場合には、当該アドレスに対応するデータがキャッシュデータＲＡＭ２３に存在することを意味している。
一方、ＣＰＵ１０からのアドレスと、キャッシュタグＲＡＭ２２のアドレスとが不一致である場合、ヒット判定部２４は、ヒット判定結果を「キャッシュミス」とする。「キャッシュミス」の場合には、当該アドレスに対応するデータがキャッシュデータＲＡＭ２３に存在しないことを意味している。
「キャッシュミス」の場合には、主記憶装置３０から当該アドレスに対応するデータが読み出され、キャッシュデータＲＡＭ２３で当該データがリプレース（書き換え）された後、ＣＰＵ１０へ渡される。ここで、リプレースする場合には、キャッシュデータＲＡＭ２３においてあるウェイのデータを追い出す必要がある。そして、上記ウェイに主記憶装置３０からのデータが格納される。
ここで、従来のキャッシュメモリ装置２０において、複数のウェイの中から、リプレース対象のウェイ（以下、リプレースウェイと称する）を選択するアルゴリズムとしては、最も使用されていなかったデータが格納されたウェイを選択するというＬＲＵ（Ｌａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）方式が採用されている。
また、ヒット判定部２４は、ヒット判定結果をシングルポートＬＲＵ・ＲＡＭ２６およびキャッシュデータＲＡＭ２３へ通知する。
リプレース部２５は、ヒット判定結果が「キャッシュミス」である場合に、キャッシュデータＲＡＭ２３（第９図参照）でリプレースすべきウェイを選択する機能を備えており、シングルポートＬＲＵ・ＲＡＭ２６およびＬＲＵリプレースウェイ選択部２７から構成されている。
シングルポートＬＲＵ・ＲＡＭ２６は、一つの入力ポートを備えており、キャッシュデータＲＡＭ２３でデータをリプレースする場合に、前述したＬＲＵ方式により選択されたリプレースウェイを表すリプレースウェイ情報を格納している。
具体的には、第９図に示したように、シングルポートＬＲＵ・ＲＡＭ２６には、ライン毎にリプレースウェイの番号（０）に対応するリプレースウェイ情報が格納されている。同図では、ラインＮには、リプレースウェイとしてのウェイ０を表すリプレースウェイ情報が格納されている。
つまり、キャッシュデータＲＡＭ２３においては、ウェイ０（ラインＮ）に格納されているデータＡが、最も使用されていなかったデータである。
第８図に戻り、ＬＲＵリプレースウェイ選択部２７は、キャッシュメモリ（キャッシュタグＲＡＭ２２およびキャッシュデータＲＡＭ２３）における複数のウェイの中から、シングルポートＬＲＵ・ＲＡＭ２６を参照して、ＬＲＵ方式によりリプレースウェイを選択した後、ＬＲＵリプレース要求（アドレスを含む）を主記憶装置３０へ出す。
主記憶装置３０は、上記ＬＲＵリプレース要求に対応するアドレスからデータを読み出し、これをキャッシュデータＲＡＭ２３のリプレースウェイ（ライン）に格納し、リプレース処理を実行する。
つぎに、従来のキャッシュメモリ装置２０の動作について、第１０図に示したフローチャートを参照しつつ説明する。ステップＳＡ１では、ヒット判定部２４は、ＣＰＵ１０よりリクエスト（従来では、データのリードの場合を例にとって説明）があるか否かを判断し、この場合、判断結果を「Ｎｏ」として、同判断を繰り返す。
そして、ＣＰＵ１０からリクエストがあると、ヒット判定部２４は、ステップＳＡ１の判断結果を「Ｙｅｓ」とする。ステップＳＡ２では、ヒット判定部２４は、キャッシュタグＲＡＭ２２にアクセスし、ＣＰＵ１０からのアドレスと、キャッシュタグＲＡＭ２２のアドレスとを比較し、ヒット判定を行う。
ステップＳＡ３では、ヒット判定部２４は、キャッシュヒットしたか否かを判断する。ステップＳＡ３の判断結果が「Ｙｅｓ」である場合、すなわち、ヒット判定結果が「キャッシュヒット」である場合、ステップＳＡ４では、キャッシュデータＲＡＭ２３からＣＰＵ１０へデータが転送される。
すなわち、ヒット判定部２４からヒット判定結果（キャッシュヒット）がキャッシュデータＲＡＭ２３へ通知されると、キャッシュデータＲＡＭ２３の当該アドレスに格納されているデータがリードされ、このデータがＣＰＵ１０へ転送される。
一方、ステップＳＡ３の判断結果が「Ｎｏ」である場合、すなわち、ヒット判定結果が「キャッシュミス」である場合、ステップＳＡ５では、ヒット判定部２４は、リプレース部２５（シングルポートＬＲＵ・ＲＡＭ２６）およびキャッシュデータＲＡＭ２３へヒット判定結果（「キャッシュミス」）を通知する。
ステップＳＡ６では、ＬＲＵリプレースウェイ選択部２７は、ヒット判定結果（「キャッシュミス」）を受けて、シングルポートＬＲＵ・ＲＡＭ２６を参照し、前述したＬＲＵ方式に基づいて、キャッシュデータＲＡＭ２３におけるリプレースウェイを選択する。
ステップＳＡ７では、ＬＲＵリプレースウェイ選択部２７は、主記憶装置３０へ、ステップＳＡ６で選択されたリプレースウェイに対応するＬＲＵリプレース要求（アドレスを含む）を出す。
ステップＳＡ８では、主記憶装置３０は、ＬＲＵリプレース要求を受けて、当該アドレスからデータを読み出す。ステップＳＡ９では、主記憶装置３０は、読み出したデータをキャッシュデータＲＡＭ２３へ転送する。
ステップＳＡ１０では、ＬＲＵリプレースウェイ選択部２７で選択されたリプレースウェイ（ライン）にデータが格納（リプレース）されるというリプレース処理が実行される。ステップＳＡ４では、キャッシュデータＲＡＭ２３からＣＰＵ１０へ当該データが転送される。
ここで、近年では、マイクロプロセッサで複数の処理を同時に実行するスーパスカラ方式が採用されているものが多く見受けられる。このスーパスカラ方式においては、複数の処理に応じて複数のリクエストを処理可能なキャッシュメモリ装置が必要とされる。
従来では、上記ニーズを受けて、例えば、第８図に示したシングルポートＬＲＵ・ＲＡＭ２６に代えて、複数の入力ポートを有するマルチポートＬＲＵ・ＲＡＭを設けて、同時に複数のリプレースを行えるように構成している。
第１１図は、上記マルチポートＬＲＵ・ＲＡＭを備えた従来のキャッシュメモリ装置４０の構成を示すブロック図である。この図において、第８図の各部に対応する部分には同一の符号を付ける。
第１１図においては、第８図に示したキャッシュメモリ装置２０に代えて、キャッシュメモリ装置４０が設けられている。キャッシュメモリ装置４０においては、第８図に示したキャッシュタグ部２１およびリプレース部２５に代えて、キャッシュタグ部４１およびリプレース部４３が設けられている。
キャッシュタグ部４１は、ＣＰＵ１０からの複数のリクエスト（アドレス）、すなわち、第１のリクエスト（アドレス）および第２のリクエスト（アドレス）を受け付け可能とされており、キャッシュタグＲＡＭ２２およびヒット判定部４２から構成されている。
ヒット判定部４２は、ＣＰＵ１０からの第１のリクエストに対応するアドレスと、キャッシュタグＲＡＭ２２のアドレスとを比較してヒット判定を行い、第１のヒット判定結果を通知する。
また、ヒット判定部４２は、ＣＰＵ１０からの第２のリクエストに対応するアドレスと、キャッシュタグＲＡＭ２２のアドレスとを比較してヒット判定を行い、第２のヒット判定結果を通知する。
リプレース部４３は、第１のヒット判定結果および第２のヒット判定結果が共に「キャッシュミス」である場合に、キャッシュデータＲＡＭ２３（第９図参照）でリプレースすべきウェイを並列的に選択する機能を備えており、マルチポートＬＲＵ・ＲＡＭ４４、第１のＬＲＵリプレースウェイ選択部４５および第２のＬＲＵリプレースウェイ選択部４６から構成されている。
マルチポートＬＲＵ・ＲＡＭ４４は、第１のヒット判定結果（第１のリクエスト）および第２のヒット判定結果（第２のリクエスト）に対応する二つの入力ポートを備えており、キャッシュデータＲＡＭ２３でデータをリプレースする場合に、前述したＬＲＵ方式により選択されたリプレースウェイを表すリプレースウェイ情報を格納している。
第１のＬＲＵリプレースウェイ選択部４５は、第１のヒット判定結果（キャッシュミス）に対応して設けられており、キャッシュメモリ（キャッシュタグＲＡＭ２２およびキャッシュデータＲＡＭ２３）における複数のウェイの中から、マルチポートＬＲＵ・ＲＡＭ４４を参照して、ＬＲＵ方式により第１のリプレースウェイを選択した後、第１のＬＲＵリプレース要求（アドレスを含む）を主記憶装置３０へ出す。
第２のＬＲＵリプレースウェイ選択部４６は、第２のヒット判定結果（キャッシュミス）に対応して設けられており、キャッシュメモリ（キャッシュタグＲＡＭ２２およびキャッシュデータＲＡＭ２３）における複数のウェイの中から、マルチポートＬＲＵ・ＲＡＭ４４を参照して、ＬＲＵ方式により第２のリプレースウェイを選択した後、第２のＬＲＵリプレース要求（アドレスを含む）を主記憶装置３０へ出す。
主記憶装置３０は、上記第１のＬＲＵリプレース要求および第２のＬＲＵリプレース要求に対応する各アドレスから第１のデータおよび第２のデータを読み出し、これらをキャッシュデータＲＡＭ２３の第１のリプレースウェイ（ライン）および第２のリプレースウェイ（ライン）にそれぞれ格納し、並列的にリプレース処理を実行する。
ところで、前述したように従来のキャッシュメモリ装置４０（第１１図参照）においては、二つの入力ポートを有するマルチポートＬＲＵ・ＲＡＭ４４を設けて、ＣＰＵ１０からの複数の同時リクエストに対応させている。
しかしながら、マルチポートＬＲＵ・ＲＡＭ４４を採用した場合には、シングルポートＬＲＵ・ＲＡＭ２６（第８図参照）に比べて、実装面積が増加し、小型化の要請に応えることができないという問題があった。
そこで、第８図に示したキャッシュメモリ装置２０においては、ＣＰＵ１０より複数の同時リクエストがあった場合に、一方のリクエストを先に処理した後、他方のリクエストを処理し直すという順番待ちの構成を採ることが考えられる。かかる構成では、複数の同時リクエストに対応してＬＲＵリプレースウェイが順番に選択されるため、キャッシュメモリのヒット率が低下しないという利点を備えている。
しかしながら、パイプライン処理を行う構成では、他方のリクエストを処理し直す場合に、パイプラインの最初のステージまで処理が戻ってしまうため、当該他方のリクエストが処理されるまでに相当の時間がかかるという欠点を備えている。
このような処理時間の遅れは、科学技術演算やトランザクション処理等のように大規模データを扱う場合にキャッシュ性能の低下をもたらすことになる。
また、大規模データを扱う場合には、キャッシュメモリにデータが格納されても利用されることなくすぐにリプレースされる場合が多く、キャッシュヒット率の向上よりも、むしろキャッシュミス時に主記憶装置からデータをできるだけ早く持ってくることが求められている。
本発明は、上記に鑑みてなされたもので、複数同時アクセスに対応でき、実装面積を削減しつつキャッシュ性能を向上させることができるメモリ制御装置およびキャッシュリプレース制御方法を提供することを目的としている。
【発明の開示】
上記目的を達成するために、本発明は、上位装置と主記憶装置との間に設けられ、複数ウェイ構成のキャッシュメモリに対する制御を行うメモリ制御装置において、前記キャッシュメモリのリプレースに関するリプレースウェイ情報を保持するリプレースウェイ情報保持手段と、前記リプレースウェイ情報保持手段の前記リプレースウェイ情報に基づいて、リプレース対象の第１のウェイを選択する第１のリプレースウェイ選択手段と、前記リプレースウェイ情報を使用せずにリプレース対象の第２のウェイを選択する第２のリプレースウェイ選択手段と、前記上位装置から同時に発行され前記キャッシュメモリへのアクセスにかかる第１のリクエストおよび第２のリクエストのそれぞれについてヒット判定を行うヒット判定手段と、前記第１のリクエストおよび前記第２のリクエストに対応する前記ヒット判定が共にキャッシュミスである場合、前記第１のリクエストに対応させて前記第１のリプレースウェイ選択手段に前記第１のウェイを選択させるとともに、前記第２のリクエストに対応させて前記第２のリプレースウェイ選択手段に前記第２のウェイを選択させる調停手段と、を備えたことを特徴とする。
また、本発明は、上位装置と主記憶装置との間に設けられ、複数ウェイ構成のキャッシュメモリを有するキャッシュメモリ装置に適用されるキャッシュリプレース制御方法において、リプレースウェイ情報保持手段に保持され前記キャッシュメモリのリプレースに関するリプレースウェイ情報に基づいて、リプレース対象の第１のウェイを選択する第１のリプレースウェイ選択工程と、前記リプレースウェイ情報を使用せずにリプレース対象の第２のウェイを選択する第２のリプレースウェイ選択工程と、前記上位装置から同時に発行され前記キャッシュメモリへのアクセスにかかる第１のリクエストおよび第２のリクエストのそれぞれについてヒット判定を行うヒット判定工程と、前記第１のリクエストおよび前記第２のリクエストに対応する前記ヒット判定が共にキャッシュミスである場合、前記第１のリクエストに対応させて前記第１のリプレースウェイ選択工程で前記第１のウェイを選択させるとともに、前記第２のリクエストに対応させて前記第２のリプレースウェイ選択工程で前記第２のウェイを選択させる調停工程と、を含むことを特徴とする。
かかる発明によれば、第１のリクエストおよび第２のリクエストに対応するヒット判定が共にキャッシュミスである場合、第１のリクエストに対応させて第１のウェイを選択させるとともに、第２のリクエストに対応させてリプレースウェイ情報を使用せずにリプレース対象の第２のウェイを選択させることとしたので、シングルポートのリプレースウェイ情報保持手段で、複数同時アクセスに対応でき、実装面積を削減しつつキャッシュ性能を向上させることができる。
【図面の簡単な説明】  第１図は、本発明にかかる実施の形態１の構成を示すブロック図であり、第２図は、第１図に示したリプレース部１０３の動作を説明する図であり、第３図は、同実施の形態１の動作を説明するフローチャートであり、第４図は、本発明にかかる実施の形態２の構成を示すブロック図であり、第５図は、第４図に示したリプレース部２０１の動作を説明する図であり、第６図は、第４図に示したヒット状態判定部２０２の動作を説明する図であり、第７図は、同実施の形態２の動作を説明するフローチャートであり、第８図は、従来のキャッシュメモリ装置２０の構成を示すブロック図であり、第９図は、第８図に示したキャッシュタグＲＡＭ２２、キャッシュデータＲＡＭ２３およびシングルポートＬＲＵ・ＲＡＭ２６の構成を示す図であり、第１０図は、第８図に示したキャッシュメモリ装置２０の動作を説明するフローチャートであり、第１１図は、従来のキャッシュメモリ装置４０の構成を示すブロック図である。
【発明を実施するための最良の形態】  以下、図面を参照して本発明にかかる実施の形態１および２について詳細に説明する。
（実施の形態１）
第１図は、本発明にかかる実施の形態１の構成を示すブロック図である。この図において、第８図の各部に対応する部分には同一の符号を付ける。第１図においては、第８図に示したキャッシュメモリ装置２０に代えて、キャッシュメモリ装置１００が設けられている。
また、キャッシュメモリ装置１００においては、第８図に示したキャッシュタグ部２１およびリプレース部２５に代えて、キャッシュタグ部１０１およびリプレース部１０３が設けられている。
キャッシュタグ部１０１は、ＣＰＵ１０からの複数のリクエスト（アドレス）、すなわち、第１のリクエスト（アドレス）および第２のリクエスト（アドレス）を受け付け可能とされており、キャッシュタグＲＡＭ２２およびヒット判定部１０２から構成されている。
また、ＣＰＵ１０からは、第１のリクエストおよび第２のリクエストが同時に出される場合と、第１のリクエスト（または第２のリクエスト）が単独で出される場合とがある。
ヒット判定部１０２は、ＣＰＵ１０からの第１のリクエストに対応するアドレスと、キャッシュタグＲＡＭ２２のアドレスとを比較してヒット判定を行い、第１のヒット判定結果を通知する。
また、ヒット判定部１０２は、ＣＰＵ１０からの第２のリクエストに対応するアドレスと、キャッシュタグＲＡＭ２２のアドレスとを比較してヒット判定を行い、第２のヒット判定結果を通知する。
リプレース部１０３は、第２図に示したように、ＣＰＵ１０からの第１のリクエスト、第２のリクエストの有無に応じて、キャッシュデータＲＡＭ２３（第９図参照）でリプレースすべきウェイを所定の方式（ＬＲＵ方式、ランダム方式）で選択する機能を備えている。
ここで、ＬＲＵ方式は、前述したように、キャッシュメモリ（キャッシュタグＲＡＭ２２およびキャッシュデータＲＡＭ２３）における複数のウェイの中から、最も使用されていなかったデータが格納されたウェイを選択する方式である。
一方、ランダム方式は、キャッシュメモリ（キャッシュタグＲＡＭ２２およびキャッシュデータＲＡＭ２３）における複数のウェイの中から、ランダムにウェイを選択する方式である。
リプレース部１０３は、シングルポートＬＲＵ・ＲＡＭ２６（第９図参照）、調停部１０４、ランダムリプレースウェイ選択部１０５およびＬＲＵリプレースウェイ選択部２７から構成されている。
シングルポートＬＲＵ・ＲＡＭ２６（第９図参照）は、前述したように、一つの入力ポートを備えており、キャッシュデータＲＡＭ２３でデータをリプレースする場合に、ＬＲＵ方式により選択されたリプレースウェイを表すリプレースウェイ情報を格納している。
調停部１０４は、第２図に示したように、ＣＰＵ１０からの第１のリクエスト、第２のリクエストの有無に応じて、第１のリクエストの処理、第２のリクエスト処理の調停を図る。
すなわち、第２図に示したように、第１のリクエストおよび第２のリクエストが共に無い（＝０）場合には、いずれの処理もさせない。第１のリクエストのみが有る場合（＝１）、すなわち、第１のヒット判定結果のみがヒット判定部１０２より入力された場合、調停部１０４は、第１のリクエストをＬＲＵ方式で処理すべく、第１のヒット判定結果をシングルポートＬＲＵ・ＲＡＭ２６へ渡す。
また、第２のリクエストのみが有る場合（＝１）、すなわち、第２のヒット判定結果のみがヒット判定部１０２より入力された場合、調停部１０４は、第２のリクエストをＬＲＵ方式で処理すべく、第２のヒット判定結果をシングルポートＬＲＵ・ＲＡＭ２６へ渡す。
また、第１のリクエストおよび第２のリクエストの双方が同時に有る場合（＝１）、すなわち、第１のヒット判定結果および第２のヒット判定結果の双方が同時にヒット判定部１０２より入力された場合、調停部１０４は、第１のリクエストをＬＲＵ方式で処理すべく、第１のヒット判定結果をシングルポートＬＲＵ・ＲＡＭ２６へ渡すとともに、第２のリクエストをランダム方式で処理すべく、ランダムリプレースウェイ選択部１０５へ渡す。
ＬＲＵリプレースウェイ選択部２７は、キャッシュメモリ（キャッシュタグＲＡＭ２２およびキャッシュデータＲＡＭ２３）における複数のウェイの中から、シングルポートＬＲＵ・ＲＡＭ２６を参照して、ＬＲＵ方式によりリプレースウェイを選択した後、リプレース要求（アドレスを含む）を主記憶装置３０へ出す。
ランダムリプレースウェイ選択部１０５は、キャッシュメモリ（キャッシュタグＲＡＭ２２およびキャッシュデータＲＡＭ２３）における複数のウェイの中から、ランダム方式によりリプレースウェイを選択した後、リプレース要求（アドレスを含む）を主記憶装置３０へ出す。
主記憶装置３０は、上記両リプレース要求に対応する各アドレスから第１のデータ、第２のデータを読み出し、これらをキャッシュデータＲＡＭ２３の各リプレースウェイ（ライン）に格納し、リプレース処理を実行する。
つぎに、上述した実施の形態１の動作について、第３図に示したフローチャートを参照しつつ説明する。
ステップＳＢ１では、ヒット判定部１０２は、ＣＰＵ１０よりリクエスト（実施の形態１では、データのリードの場合を例にとって説明）があるか否かを判断し、この場合、判断結果を「Ｎｏ」として、同判断を繰り返す。
そして、ＣＰＵ１０から第１のリクエストおよび第２のリクエストが同時にあると、ヒット判定部１０２は、ステップＳＢ１の判断結果を「Ｙｅｓ」とする。ステップＳＢ２では、ヒット判定部１０２は、キャッシュタグＲＡＭ２２にアクセスし、ＣＰＵ１０からの各アドレスと、キャッシュタグＲＡＭ２２のアドレスとを比較し、第１のリクエストおよび第２のリクエストのそれぞれについてヒット判定を行う。
ステップＳＢ３では、ヒット判定部１０２は、キャッシュヒットしたか否かを判断する。ステップＳＢ３の判断結果が「Ｙｅｓ」である場合、すなわち、ヒット判定結果がそれぞれ「キャッシュヒット」である場合、ステップＳＢ４では、キャッシュデータＲＡＭ２３からＣＰＵ１０へ第１のデータおよび第２のデータが転送される。
すなわち、ヒット判定部１０２から第１のヒット判定結果（キャッシュヒット）および第２のヒット判定結果（キャッシュヒット）がキャッシュデータＲＡＭ２３へ通知されると、キャッシュデータＲＡＭ２３の当該アドレスに格納されている第１のデータおよび第２のデータがリードされ、これらの第１のデータおよび第２のデータがＣＰＵ１０へ転送される。
一方、ステップＳＢ３の判断結果が「Ｎｏ」である場合、すなわち、「キャッシュミス」の場合、ステップＳＢ５では、ヒット判定部１０２は、リプレース部１０３の調停部１０４へ第１のヒット判定結果（「キャッシュミス」）および第２のヒット判定結果（「キャッシュミス」）を通知する。
ステップＳＢ６では、調停部１０４は、通知された第１のヒット判定結果および第２のヒット判定結果に基づいて、同時複数のキャッシュミスがあるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。
以後、ステップＳＢ７〜ステップＳＢ１２と、ステップＳＢ１３〜ステップＳＢ１８とが並列的に実行される。
すなわち、ステップＳＢ７では、調停部１０４は、シングルポートＬＲＵ・ＲＡＭ２６へ第１のヒット判定結果（「キャッシュミス」）を通知する。
ステップＳＢ８では、ＬＲＵリプレースウェイ選択部２７は、第１のヒット判定結果（「キャッシュミス」）を受けて、シングルポートＬＲＵ・ＲＡＭ２６を参照し、前述したＬＲＵ方式に基づいて、キャッシュデータＲＡＭ２３におけるリプレースウェイを選択する。
ステップＳＢ９では、ＬＲＵリプレースウェイ選択部２７は、主記憶装置３０へ、ステップＳＢ８で選択されたリプレースウェイに対応するリプレース要求を出す。
ステップＳＢ１０では、主記憶装置３０は、リプレース要求を受けて、当該アドレスから第１のデータを読み出す。ステップＳＢ１１では、主記憶装置３０は、読み出した第１のデータをキャッシュデータＲＡＭ２３へ転送する。
ステップＳＢ１２では、ＬＲＵリプレースウェイ選択部２７で選択されたリプレースウェイ（ライン）に第１のデータが格納（リプレース）されるというリプレース処理が実行される。
一方、ステップＳＢ１３では、調停部１０４は、ランダムリプレースウェイ選択部１０５へ第２のヒット判定結果（「キャッシュミス」）を通知する。
ステップＳＢ１４では、ランダムリプレースウェイ選択部１０５は、第２のヒット判定結果（「キャッシュミス」）を受けて、前述したランダム方式に基づいて、キャッシュデータＲＡＭ２３におけるリプレースウェイを選択する。
ステップＳＢ１５では、ランダムリプレースウェイ選択部１０５は、主記憶装置３０へ、ステップＳＢ１４で選択されたリプレースウェイに対応するリプレース要求を出す。
ステップＳＢ１６では、主記憶装置３０は、リプレース要求を受けて、当該アドレスから第２のデータを読み出す。ステップＳＢ１７では、主記憶装置３０は、読み出した第２のデータをキャッシュデータＲＡＭ２３へ転送する。
ステップＳＢ１８では、ランダムリプレースウェイ選択部１０５で選択されたリプレースウェイ（ライン）にデータが格納（リプレース）されるというリプレース処理が実行される。
ステップＳＢ４では、キャッシュデータＲＡＭ２３からＣＰＵ１０へ第１のデータおよび第２のデータが転送される。
また、ＣＰＵ１０より第１のリクエストのみがあると、ヒット判定部１０２は、ステップＳＢ１の判断結果を「Ｙｅｓ」とする。ステップＳＢ２では、ヒット判定部１０２は、キャッシュタグＲＡＭ２２にアクセスし、ＣＰＵ１０からのアドレスと、キャッシュタグＲＡＭ２２のアドレスとを比較し、第１のリクエストについてヒット判定を行う。
ステップＳＢ３では、ヒット判定部１０２は、キャッシュヒットしたか否かを判断する。ステップＳＢ３の判断結果が「Ｙｅｓ」である場合、すなわち、ヒット判定結果が「キャッシュヒット」である場合、ステップＳＢ４では、キャッシュデータＲＡＭ２３からＣＰＵ１０へデータが転送される。
すなわち、ヒット判定部１０２から第１のヒット判定結果（キャッシュヒット）がキャッシュデータＲＡＭ２３へ通知されると、キャッシュデータＲＡＭ２３の当該アドレスに格納されている第１のデータがリードされ、第１のデータがＣＰＵ１０へ転送される。
一方、ステップＳＢ３の判断結果が「Ｎｏ」である場合、すなわち、「キャッシュミス」の場合、ステップＳＢ５では、ヒット判定部１０２は、リプレース部１０３の調停部１０４へ第１のヒット判定結果（「キャッシュミス」）を通知する。
ステップＳＢ６では、調停部１０４は、通知された第１のヒット判定結果に基づいて、同時複数のキャッシュミスがあるか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
すなわち、ステップＳＢ７では、調停部１０４は、シングルポートＬＲＵ・ＲＡＭ２６へ第１のヒット判定結果（「キャッシュミス」）を通知する。
ステップＳＢ８では、ＬＲＵリプレースウェイ選択部２７は、第１のヒット判定結果（「キャッシュミス」）を受けて、シングルポートＬＲＵ・ＲＡＭ２６を参照し、前述したＬＲＵ方式に基づいて、キャッシュデータＲＡＭ２３におけるリプレースウェイを選択する。
ステップＳＢ９では、ＬＲＵリプレースウェイ選択部２７は、主記憶装置３０へ、ステップＳＢ８で選択されたリプレースウェイに対応するリプレース要求を出す。
ステップＳＢ１０では、主記憶装置３０は、リプレース要求を受けて、当該アドレスから第１のデータを読み出す。ステップＳＢ１１では、主記憶装置３０は、読み出した第１のデータをキャッシュデータＲＡＭ２３へ転送する。
ステップＳＢ１２では、ＬＲＵリプレースウェイ選択部２７で選択されたリプレースウェイ（ライン）に第１のデータが格納（リプレース）されるというリプレース処理が実行される。
ステップＳＢ４では、キャッシュデータＲＡＭ２３からＣＰＵ１０へ第１のデータが転送される。
また、ＣＰＵ１０より第２のリクエストのみがあると、ヒット判定部１０２は、ステップＳＢ１の判断結果を「Ｙｅｓ」とする。ステップＳＢ２では、ヒット判定部１０２は、キャッシュタグＲＡＭ２２にアクセスし、ＣＰＵ１０からのアドレスと、キャッシュタグＲＡＭ２２のアドレスとを比較し、第２のリクエストについてヒット判定を行う。
ステップＳＢ３では、ヒット判定部１０２は、キャッシュヒットしたか否かを判断する。ステップＳＢ３の判断結果が「Ｙｅｓ」である場合、すなわち、ヒット判定結果が「キャッシュヒット」である場合、ステップＳＢ４では、キャッシュデータＲＡＭ２３からＣＰＵ１０へデータが転送される。
すなわち、ヒット判定部１０２から第２のヒット判定結果（キャッシュヒット）がキャッシュデータＲＡＭ２３へ通知されると、キャッシュデータＲＡＭ２３の当該アドレスに格納されている第２のデータがリードされ、第２のデータがＣＰＵ１０へ転送される。
一方、ステップＳＢ３の判断結果が「Ｎｏ」である場合、すなわち、「キャッシュミス」の場合、ステップＳＢ５では、ヒット判定部１０２は、リプレース部１０３の調停部１０４へ第２のヒット判定結果（「キャッシュミス」）を通知する。
ステップＳＢ６では、調停部１０４は、通知された第２のヒット判定結果に基づいて、同時複数のキャッシュミスがあるか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
すなわち、ステップＳＢ７では、調停部１０４は、シングルポートＬＲＵ・ＲＡＭ２６へ第２のヒット判定結果（「キャッシュミス」）を通知する。
ステップＳＢ８では、ＬＲＵリプレースウェイ選択部２７は、第２のヒット判定結果（「キャッシュミス」）を受けて、シングルポートＬＲＵ・ＲＡＭ２６を参照し、前述したＬＲＵ方式に基づいて、キャッシュデータＲＡＭ２３におけるリプレースウェイを選択する。
ステップＳＢ９では、ＬＲＵリプレースウェイ選択部２７は、主記憶装置３０へ、ステップＳＢ８で選択されたリプレースウェイに対応するリプレース要求を出す。
ステップＳＢ１０では、主記憶装置３０は、リプレース要求を受けて、当該アドレスから第２のデータを読み出す。ステップＳＢ１１では、主記憶装置３０は、読み出した第２のデータをキャッシュデータＲＡＭ２３へ転送する。
ステップＳＢ１２では、ＬＲＵリプレースウェイ選択部２７で選択されたリプレースウェイ（ライン）に第２のデータが格納（リプレース）されるというリプレース処理が実行される。
ステップＳＢ４では、キャッシュデータＲＡＭ２３からＣＰＵ１０へ第２のデータが転送される。
なお、実施の形態１においては、第１のリクエスト（または第２のリクエスト）が単独で発行された場合に、ＬＲＵリプレースウェイ選択部２７でＬＲＵ方式でリプレースウェイを選択する構成について説明したが、これに代えて、ランダムリプレースウェイ選択部１０５でランダム方式でリプレースウェイを選択する構成としてもよい。
以上説明したように、実施の形態１によれば、ヒット判定部１０２で第１のリクエストおよび第２のリクエストに対応するヒット判定が共にキャッシュミスである場合、第１のリクエストに対応させてＬＲＵリプレースウェイ選択部２７でウェイを選択させるとともに、第２のリクエストに対応させてシングルポートＬＲＵ・ＲＡＭ２６のリプレースウェイ情報を使用せずにリプレース対象のウェイをランダムリプレースウェイ選択部１０５に選択させることとしたので、シングルポートのシングルポートＬＲＵ・ＲＡＭ２６で、複数同時アクセスに対応でき、実装面積を削減しつつキャッシュ性能を向上させることができる。
（実施の形態２）
さて、前述した実施の形態１では、ＣＰＵ１０により、第１のリクエストおよび第２のリクエストが同時に発行され、第１のヒット判定結果および第２のヒット判定結果が共にキャッシュミスである場合に、ＬＲＵ方式およびランダム方式によりリプレース処理を実行する例について説明したが、ヒット状態（キャッシュヒット多発またはキャッシュミス多発）に基づいて、リプレース処理に変化をつけるように構成してもよい。以下では、この構成例を実施の形態２として説明する。
第４図は、本発明にかかる実施の形態２の構成を示すブロック図である。この図において、第１図の各部に対応する部分には同一の符号を付ける。第４図においては、第１図に示したキャッシュメモリ装置１００に代えて、キャッシュメモリ装置２００が設けられている。
また、キャッシュメモリ装置２００においては、第１図に示したリプレース部１０３に代えて、リプレース部２０１が設けられている。
リプレース部２０１は、第５図に示したように、ＣＰＵ１０からの第１のリクエスト、第２のリクエストの有無、後述するヒット状態に応じて、キャッシュデータＲＡＭ２３（第９図参照）でリプレースすべきウェイを所定の方式（ＬＲＵ方式、ランダム方式）で選択する機能を備えている。
リプレース部２０１においては、第１図に示した調停部１０４に代えて、ヒット状態判定部２０２および調停部２０３が設けられている。
ヒット状態判定部２０２は、第６図に示した状態遷移により、ヒット判定部１０２におけるヒット判定結果（第１のヒット判定結果、第２のヒット判定結果）が、キャッシュミスの傾向にあるか、またはキャッシュヒットの傾向にあるかを判定する。
具体的には、ヒット状態判定部２０２において、ヒット判定部１０２のヒット判定結果（第１のヒット判定結果、第２のヒット判定結果）がキャッシュヒットである場合、ヒット状態が一つ右へ遷移される。
一方、ヒット判定部１０２のヒット判定結果（第１のヒット判定結果、第２のヒット判定結果）がキャッシュミスである場合、ヒット状態が一つ左へ遷移される。
例えば、ヒット状態が「０１」である場合に、ヒット判定結果がキャッシュヒットである場合、ヒット状態判定部２０２は、ヒット状態を右へ遷移させ、「０１」から「１０」とする。続いて、ヒット判定結果がキャッシュヒットである場合、ヒット状態判定部２０２は、ヒット状態を右へ遷移させ、「１０」から「１１」とする。
そして、ヒット判定結果がキャッシュミスになる場合、ヒット状態判定部２０２は、ヒット状態を左へ遷移させ、「１１」から「１０」とする。続いて、ヒット判定結果がキャッシュミスである場合、ヒット状態判定部２０２は、ヒット状態を左へ遷移させ、「１０」から「０１」とする。
ヒット状態判定部２０２は、ヒット状態が「１０」または「１１」である場合、ヒット判定結果が、キャッシュヒットの傾向にあるとして、ヒット状態を「キャッシュヒット」として、調停部２０３へ通知する。
一方、ヒット状態が「００」または「０１」である場合、ヒット判定結果が、キャッシュミスの傾向にあるとして、ヒット状態を「キャッシュミス」として、調停部２０３へ通知する。
調停部２０３は、第５図に示したように、ＣＰＵ１０からの第１のリクエスト、第２のリクエストの有無、ヒット状態判定部２０２で判定されたヒット状態に応じて、第１のリクエストの処理、第２のリクエストの処理の調停を図る。
すなわち、第５図に示したように、ヒット状態が「キャッシュミス」（または「キャッシュヒット」）において、第１のリクエストおよび第２のリクエストが共に無い（＝０）場合には、いずれの処理もさせない。
また、ヒット状態が「キャッシュミス」（または「キャッシュヒット」）において、第１のリクエストのみが有る場合（＝１）、すなわち、第１のヒット判定結果のみがヒット判定部１０２より入力された場合、調停部２０３は、第１のリクエストをＬＲＵ方式で処理すべく、第１のヒット判定結果をシングルポートＬＲＵ・ＲＡＭ２６へ渡す。
また、ヒット状態が「キャッシュミス」（または「キャッシュヒット）において、第２のリクエストのみが有る場合（＝１）、すなわち、第２のヒット判定結果のみがヒット判定部１０２より入力された場合、調停部２０３は、第２のリクエストをＬＲＵ方式で処理すべく、第２のヒット判定結果をシングルポートＬＲＵ・ＲＡＭ２６へ渡す。
また、ヒット状態が「キャッシュミス」において、第１のリクエストおよび第２のリクエストの双方が同時に有る場合（＝１）、すなわち、第１のヒット判定結果および第２のヒット判定結果の双方が同時にヒット判定部１０２より入力された場合、調停部２０３は、第１のリクエストをＬＲＵ方式で処理すべく、第１のヒット判定結果をシングルポートＬＲＵ・ＲＡＭ２６へ渡すとともに、第２のリクエストをランダム方式で処理すべく、ランダムリプレースウェイ選択部１０５へ渡す。
ここで、ＬＲＵ方式によるリプレース処理は、最も使用されたかったウェイをリプレースウェイとして選択しているため、リプレースウェイがランダムに選択されるランダム方式よりもキャッシュヒット率が高くなる。
従って、ヒット状態がキャッシュミスの場合には、キャッシュヒット率の向上よりも、ランダム方式によりリプレース処理を高速に実行し、キャッシュミス時に主記憶装置３０からデータをできるだけ早く持ってくることが優先される。
一方、ヒット状態が「キャッシュヒット」において、第１のリクエストおよび第２のリクエストの双方が同時に有る場合（＝１）、すなわち、第１のヒット判定結果および第２のヒット判定結果の双方が同時にヒット判定部１０２より入力された場合、調停部２０３は、第１のリクエストをＬＲＵ方式で処理すべく、第１のヒット判定結果をシングルポートＬＲＵ・ＲＡＭ２６へ渡す。
これに並行して、ヒット状態判定部２０２は、第２のヒット判定結果に対応する第２のリクエストをキャッシュタグ部１０１に再投入する。なお、第２のリクエストは、ランダム方式で処理されない。
再投入された第２のリクエストについては、ＬＲＵ方式によりリプレースウェイ処理が実行される。
このように、ヒット状態がキャッシュヒットの場合には、リプレース処理を高速に実行することよりも、ＬＲＵ方式によりキャッシュヒット率を向上させることが優先される。
つぎに、上述した実施の形態２の動作について、第７図に示したフローチャートを参照しつつ説明する。
ステップＳＣ１では、ヒット判定部１０２は、ＣＰＵ１０よりリクエスト（実施の形態２では、データのリードの場合を例にとって説明）があるか否かを判断し、この場合、判断結果を「Ｎｏ」として、同判断を繰り返す。
そして、ＣＰＵ１０より第１のリクエストのみがあると、ヒット判定部１０２は、ステップＳＣ１の判断結果を「Ｙｅｓ」とする。ステップＳＣ２では、ヒット判定部１０２は、キャッシュタグＲＡＭ２２にアクセスし、ＣＰＵ１０からのアドレスと、キャッシュタグＲＡＭ２２のアドレスとを比較し、第１のリクエストについてヒット判定を行う。
ステップＳＣ３では、ヒット判定部１０２は、キャッシュヒットしたか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。ステップＳＣ４では、キャッシュデータＲＡＭ２３からＣＰＵ１０へ第１のデータが転送される。
ステップＳＣ５では、ヒット状態判定部２０２は、第１のリクエストに対応する第１のヒット判定結果（この場合、「キャッシュヒット」）に基づいて、ヒット状態を更新する。例えば、第６図に示したヒット状態が「０１」である場合、ヒット状態判定部２０２は、上記キャッシュヒットを受けて、ヒット状態を「０１」から「１０」に遷移させる。これにより、ヒット状態は、「キャッシュヒット」とされる。
また、ＣＰＵ１０から第１のリクエストおよび第２のリクエストが同時にあると、ヒット判定部１０２は、ステップＳＣ１の判断結果を「Ｙｅｓ」とする。  ステップＳＣ２では、ヒット判定部１０２は、キャッシュタグＲＡＭ２２にアクセスし、ＣＰＵ１０からの各アドレスと、キャッシュタグＲＡＭ２２のアドレスとを比較し、第１のリクエストおよび第２のリクエストのそれぞれについてヒット判定を行う。
ステップＳＣ３では、ヒット判定部１０２は、キャッシュヒットしたか否かを判断し、この場合、判断結果を「Ｎｏ」とする。ステップＳＣ６では、ヒット判定部１０２は、リプレース部２０１の調停部２０３へ第１のヒット判定結果（「キャッシュミス」）および第２のヒット判定結果（「キャッシュミス」）を通知する。
ステップＳＣ７では、調停部２０３は、通知された第１のヒット判定結果および第２のヒット判定結果に基づいて、同時複数のキャッシュミスがあるか否かを判断し、この場合、判断結果を「Ｙｅｓ」とする。
以後、ステップＳＣ８〜ステップＳＣ１３と、ステップＳＣ１４〜ステップＳＣ２１とが並列的に実行される。
すなわち、ステップＳＣ８では、調停部２０３は、シングルポートＬＲＵ・ＲＡＭ２６へ第１のヒット判定結果（「キャッシュミス」）を通知する。
ステップＳＣ９では、ＬＲＵリプレースウェイ選択部２７は、第１のヒット判定結果（「キャッシュミス」）を受けて、シングルポートＬＲＵ・ＲＡＭ２６を参照し、前述したＬＲＵ方式に基づいて、キャッシュデータＲＡＭ２３におけるリプレースウェイを選択する。
ステップＳＣ１０では、ＬＲＵリプレースウェイ選択部２７は、主記憶装置３０へ、ステップＳＣ９で選択されたリプレースウェイに対応するリプレース要求を出す。
ステップＳＣ１１では、主記憶装置３０は、リプレース要求を受けて、当該アドレスから第１のデータを読み出す。ステップＳＣ１２では、主記憶装置３０は、読み出した第１のデータをキャッシュデータＲＡＭ２３へ転送する。
ステップＳＣ１３では、ＬＲＵリプレースウェイ選択部２７で選択されたリプレースウェイ（ライン）に第１のデータが格納（リプレース）されるというリプレース処理が実行される。
ステップＳＣ４では、キャッシュデータＲＡＭ２３からＣＰＵ１０へ第１のデータが転送される。
ステップＳＣ５では、ヒット状態判定部２０２は、第１のリクエストおよび第２のリクエストに対応する第１のヒット判定結果および第２のヒット判定結果（例えば、共に「キャッシュミス」）に基づいて、ヒット状態を更新する。この場合、第６図に示したヒット状態が「１０」であるため、ヒット状態判定部２０２は、上記二つのキャッシュミスを受けて、ヒット状態を「１０」→「０１」→「００」に遷移させる。これにより、ヒット状態は、「キャッシュミス」とされる。
一方、ステップＳＣ１４では、調停部２０３は、ヒット状態判定部２０２により判定されたヒット状態がキャッシュヒットであるか否かを判断し、この場合、ヒット状態がキャッシュヒット「１０」であるため、判断結果を「Ｙｅｓ」とする。
ステップＳＣ２１では、調停部２０３は、第２のヒット判定結果に対応する第２のリクエストをキャッシュタグ部１０１に再投入する。
これにより、ヒット判定部１０２は、ステップＳＣ１の判断結果を「Ｙｅｓ」とする。ステップＳＣ２では、ヒット判定部１０２は、キャッシュタグＲＡＭ２２にアクセスし、ＣＰＵ１０からのアドレス（この場合、再投入された第２のリクエスト）と、キャッシュタグＲＡＭ２２のアドレスとを比較し、第２のリクエストについてヒット判定を行う。この場合、第２のリクエストに対応する第２のヒット判定結果は、キャッシュミスであるとする。
ステップＳＣ３では、ヒット判定部１０２は、キャッシュヒットしたか否かを判断し、この場合、判断結果を「Ｎｏ」とする。ステップＳＣ６では、ヒット判定部１０２は、リプレース部２０１の調停部２０３へ第２のヒット判定結果（「キャッシュミス」）を通知する。
ステップＳＣ７では、調停部２０３は、通知された第２のヒット判定結果に基づいて、同時複数のキャッシュミスがあるか否かを判断し、この場合、判断結果を「Ｎｏ」とする。
ステップＳＣ８では、調停部２０３は、シングルポートＬＲＵ・ＲＡＭ２６へ第２のヒット判定結果（「キャッシュミス」）を通知する。
ステップＳＣ９では、ＬＲＵリプレースウェイ選択部２７は、第２のヒット判定結果（「キャッシュミス」）を受けて、シングルポートＬＲＵ・ＲＡＭ２６を参照し、前述したＬＲＵ方式に基づいて、キャッシュデータＲＡＭ２３におけるリプレースウェイを選択する。
ステップＳＣ１０では、ＬＲＵリプレースウェイ選択部２７は、主記憶装置３０へ、ステップＳＣ９で選択されたリプレースウェイに対応するリプレース要求を出す。
ステップＳＣ１１では、主記憶装置３０は、リプレース要求を受けて、当該アドレスから第２のデータを読み出す。ステップＳＣ１２では、主記憶装置３０は、読み出した第２のデータをキャッシュデータＲＡＭ２３へ転送する。
ステップＳＣ１３では、ＬＲＵリプレースウェイ選択部２７で選択されたリプレースウェイ（ライン）に第２のデータが格納（リプレース）されるというリプレース処理が実行される。
ステップＳＣ４では、キャッシュデータＲＡＭ２３からＣＰＵ１０へ第２のデータが転送される。ステップＳＣ５では、ヒット状態判定部２０２は、前述と同様にして、第２のリクエストに対応する第２のヒット判定結果（「キャッシュミス」）に基づいて、ヒット状態を更新する。なお、ステップＳＣ１４の判断結果が「Ｎｏ」である場合には、前述したステップＳＢ１３〜ステップＳＢ１８（第３図参照）と同様にして、ステップＳＣ１５〜ステップＳＣ２０が実行される。
以上説明したように、実施の形態２によれば、ヒット判定部１０２のヒット判定が共にキャッシュミスでありかつヒット状態判定部２０２のヒット状態がキャッシュヒットである場合、第１のリクエストに対応させてＬＲＵリプレースウェイ選択部２７に第１のウェイを選択させるとともに、第２のリクエストをキャッシュタグ部１０１に再投入し、ヒット判定部１０２のヒット判定がキャッシュミスである場合、第２のリクエストに対応させてＬＲＵリプレースウェイ選択部２７にウェイを選択させることとしたので、リプレース処理を高速に実行することよりも、キャッシュヒット率を向上させることを優先させることができる。
以上本発明にかかる実施の形態１および２について図面を参照して詳述してきたが、具体的な構成例はこれらの実施の形態１および２に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等があっても本発明に含まれる。
以上説明したように、本発明によれば、第１のリクエストおよび第２のリクエストに対応するヒット判定が共にキャッシュミスである場合、第１のリクエストに対応させて第１のウェイを選択させるとともに、第２のリクエストに対応させてリプレースウェイ情報を使用せずにリプレース対象の第２のウェイを選択させることとしたので、シングルポートのリプレースウェイ情報保持手段で、複数同時アクセスに対応でき、実装面積を削減しつつキャッシュ性能を向上させることができるという効果を奏する。
また、本発明によれば、ヒット判定が共にキャッシュミスでありかつヒット状態がキャッシュヒットである場合、第１のリクエストに対応させて第１のウェイを選択させるとともに、第２のリクエストを再投入し、ヒット判定がキャッシュミスである場合、第２のリクエストに対応させて第１のウェイを選択させることとしたので、リプレース処理を高速に実行することよりも、キャッシュヒット率を向上させることを優先させることができるという効果を奏する。
【産業上の利用可能性】  以上のように、本発明にかかるメモリ制御装置およびキャッシュリプレース制御方法は、キャッシュメモリのリプレースに対して有用である。
【符号の説明】
ＳＢ１：  リクエストあり？
ＳＢ２：  キャッシュタグＲＡＭにアクセスし、ヒット判定
ＳＢ３：  ヒットしたか？
ＳＢ４：  キャッシュデータＲＡＭからＣＰＵへデータを転送
ＳＢ５：  調停部へヒット判定結果を通知
ＳＢ６：  同時複数のキャッシュミスあり？
ＳＢ７：  シングルポートＬＲＵ・ＲＡＭへ第１（第２）のヒット判定結果を通知
ＳＢ８：  ＬＲＵリプレースウェイ選択部でリプレースウェイを選択
ＳＢ９：  ＬＲＵリプレースウェイ選択部から主記憶装置へリプレース要求を出す
ＳＢ１０：主記憶装置から第１（第２）のデータを読み出す
ＳＢ１１：主記憶装置からキャッシュデータＲＡＭへ第１（第２）のデータを転送
ＳＢ１２：リプレース処理
ＳＢ１３：ランダムリプレースウェイ選択部へ第２のヒット判定結果を通知
ＳＢ１４：ランダムリプレースウェイ選択部でリプレースウェイを選択
ＳＢ１５：ランダムリプレースウェイ選択部から主記憶装置へリプレース要求を出す
ＳＢ１６：主記憶装置から第２のデータを読み出す
ＳＢ１７：主記憶装置からキャッシュデータＲＡＭへ第２のデータを転送
ＳＢ１８：リプレース処理
ＳＣ１：  リクエストあり？
ＳＣ２：  キャッシュタグＲＡＭにアクセスし、ヒット判定
ＳＣ３：  ヒットしたか？
ＳＣ４：  キャッシュデータＲＡＭからＣＰＵへデータを転送
ＳＣ５：  ヒット状態を更新
ＳＣ６：  調停部へヒット判定結果を通知
ＳＣ７：  同時複数のキャッシュミスあり？
ＳＣ８：  シングルポートＬＲＵ・ＲＡＭへ第１（第２）のヒット判定結果を通知
ＳＣ９：  ＬＲＵリプレースウェイ選択部でリプレースウェイを選択
ＳＣ１０：ＬＲＵリプレースウェイ選択部から主記憶装置へリプレース要求を出す
ＳＣ１１：主記憶装置から第１（第２）のデータを読み出す
ＳＣ１２：主記憶装置からキャッシュデータＲＡＭへ第１（第２）のデータを転送
ＳＣ１３：リプレース処理
ＳＣ１４：ヒット状態がキャッシュヒット？
ＳＣ１５：ランダムリプレースウェイ選択部へ第２のヒット判定結果を通知
ＳＣ１６：ランダムリプレースウェイ選択部でリプレースウェイを選択
ＳＣ１７：ランダムリプレースウェイ選択部から主記憶装置へリプレース要求を出す
ＳＣ１８：主記憶装置から第２のデータを読み出す
ＳＣ１９：主記憶装置からキャッシュデータＲＡＭへ第２のデータを転送
ＳＣ２０：リプレース処理
ＳＣ２１：第２のリクエストを再投入
ＳＡ１：  リクエストあり？
ＳＡ２：  キャッシュタグＲＡＭにアクセスし、ヒット判定
ＳＡ３：  ヒットしたか？
ＳＡ４：  キャッシュデータＲＡＭからＣＰＵへデータを転送
ＳＡ５：  ヒット判定結果（キャッシュミス）を通知
ＳＡ６：  リプレースウェイを選択
ＳＡ７：  主記憶装置へＬＲＵリプレース要求を出す
ＳＡ８：  主記憶装置からデータを読み出す
ＳＡ９：  主記憶装置からキャッシュデータＲＡＭへデータを転送
ＳＡ１０：リプレース処理
【図１】
2004046933.tif 000003
【図２】
2004046933.tif 000004
【図３】
2004046933.tif 000005
【図４】
2004046933.tif 000006
【図５】
2004046933.tif 000007
【図６】
2004046933.tif 000008
【図７】
2004046933.tif 000009
【図８】
2004046933.tif 000010
【図９】
2004046933.tif 000011
【図１０】
2004046933.tif 000012
【図１１】
2004046933.tif 000013
【国際調査報告】
2004046933.tif 000014
2004046933.tif 000015
2004046933.tif 000016
2004046933.tif 000017