JPH07334428A - キャッシュメモリ - Google Patents

キャッシュメモリ

Info

Publication number
JPH07334428A
JPH07334428A JP6131754A JP13175494A JPH07334428A JP H07334428 A JPH07334428 A JP H07334428A JP 6131754 A JP6131754 A JP 6131754A JP 13175494 A JP13175494 A JP 13175494A JP H07334428 A JPH07334428 A JP H07334428A
Authority
JP
Japan
Prior art keywords
block
cache
lock
bit
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP6131754A
Other languages
English (en)
Inventor
Takashi Miyamori
高 宮森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP6131754A priority Critical patent/JPH07334428A/ja
Priority to EP95109234A priority patent/EP0687979A1/en
Priority to KR1019950016146A priority patent/KR960002009A/ko
Publication of JPH07334428A publication Critical patent/JPH07334428A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning

Abstract

(57)【要約】 【目的】 この発明は、同一セット内の少なくとも1つ
のブロックデータはロックできないようにして、キャッ
シュのリフィル制御を簡単化するとともに、構成の小型
化ならびに性能低下を防止するキャッシュメモリを提供
することを目的とする。 【構成】 この発明は、キャッシメモリシステム10に
おけるキャッシメモリ部11の同一セットの複数のブロ
ックデータの内すべてのブロックデータがロックされな
いようにキャッシュコントロール部12によりロックビ
ットL及びリプレースビットRを更新制御して、少なく
とも1つのブロックデータのリフィルを可能とし、リフ
ィル処理を容易に行うように構成されてなる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、計算機システムに用い
られるキャッシュメモリに関し、特にセットアソシアテ
ィブ方式とフルアソシアティブ方式のキャッシュにおい
て、キャッシュに格納された特定のブロックをキャッシ
ュ内にロックして置き換え(リプレース)られないよう
に制御するキャッシュメモリに関する。
【0002】
【従来の技術】ロック機能を有するキャッシュを内蔵す
るマイクロプロセッサとしては、例えば富士通MB86
930(参考文献 「富士通半導体デバイス PROCESSO
R MANUAL SPARClite ユーザーマニュアルMB86930 」)
がある。
【0003】図12は従来のロック機能を有するキャッ
シュメモリの構成を示す図である。
【0004】図12に示す従来例では、キャッシュサイ
ズは2Kバイト、2ウェイセットアソシアティブ方式、
ブロックサイズ16バイトという構成である。ウェイ数
は2で、各ウェイのセット数は64である。ブロックサ
イズが16バイトで2Kバイトのキャッシュを構成して
いる。
【0005】個々のブロック毎に、1ビットのバリッド
ビットV0,V1、ブロックデータがロックされている
か否かを示す1ビットのロックビットL0,L1、22
ビットのブロックアドレスBAddr0,Baddr
1、16バイト(128ビット)のブロックデータBD
ata0,BData1が格納される。なお、リプレー
スするデータを示すリプレースビットは、図示しないが
バリッドビット及びロックビットと同様にして設けられ
ている。
【0006】図13は図12に示す従来のキャッシュの
アドレス構成を示す図である。
【0007】図13において、32ビットのアドレスの
うちビット9からビット4の6ビットはセットアドレス
であり、キャッシュのセットを指定する。指定されたセ
ットのBAddr0及びBAddr1とアドレスのビッ
ト31からビット10のブロックアドレスが比較され、
一致するとヒットとなり、不一致の場合はミスヒットと
なる。アドレスのビット3から0はブロック内のアドレ
スを示す。
【0008】上記従来例では、全ブロックに対応してロ
ックビットがあるので、同一セットの2つのブロックが
同時にロックされていることがある。図12に示す構成
では、セット番号2の2つのブロックがともにロック
(ロックビットL0とL1がともに1)されている。ま
た、ウェイ0にはブロックアドレスAのデータが、ウェ
イ1にはブロックアドレスCのデータが格納されている
とする。このような状態において、セットアドレスが2
でブロックアドレスがAでもCでもないデータがアクセ
スされると、キャッシュミスが発生する。この場合は、
両方のウェイがロックされているのでリプレースは行わ
れない。このため、ミスしたデータはキャッシュに置く
ことなく処理されなければならない。
【0009】
【発明が解決しようとする課題】以上説明したように、
従来のキャッシュメモリでは、同一のセットの両方のウ
ェイがロックされる場合があり、このような場合には、
そのセットアドレスのデータはキャッシュに置くことが
できなくなる。このように、ロックビットの状態、すな
わちデータがロックされているか否かによってキャッシ
ュのリプレースの制御が異なり、制御が複雑になるとい
う不具合が生じていた。
【0010】また、各ウェイごとにロックビットが必要
となり、ハードウエアが大型化するという不具合を招い
ていた。
【0011】さらに、キャッシュシステムによっては、
論理的なブロックサイズをプログラムで変更できるもの
がある。このようなキャッシュシステムでは、論理的な
ブロックサイズが拡大された際に、拡大されたブロック
の一部が上記のようにロックされてキャッシュに置くこ
とができないことがある。このような場合に、キャッシ
ュに置けなかったデータに対するキャッシュミスヒット
の度に、再度拡大されたブロックサイズ全体がキャッシ
ュにリフィル(置き換え処理)されることになる。
【0012】このため、ミスヒットしたデータ以外でも
リフィル処理されるため、無駄なリフィルサイクルが必
要となり、そのための処理時間だけ性能が低下してしま
うという欠点があった。
【0013】そこで、本発明は、上記に鑑みてなされた
ものである、その目的とするところは、同一セット内の
少なくとも1つのブロックデータはロックできないよう
にして、キャッシュのリフィル制御を簡単化するととも
に、構成の小型化ならびに性能低下を防止するキャッシ
ュメモリを提供することにある。
【0014】
【課題を解決するための手段】上記目的を達成するため
に、請求項1記載の発明は、タグアドレスを格納するタ
グアドレス記憶領域と、そのタグアドレスに対応するブ
ロックデータを格納するデータ記憶領域と、リプレース
を禁止するか否かをブロック毎に設定可能とするための
ロック情報記憶領域とを有し、複数のブロックを1つの
セットとして管理するセットアソシアティブ方式又はフ
ルアソシアティブ方式のキャッシュメモリであって、同
一セット内のすべてのブロックがロックされないように
ブロックのロック情報を同一セット内の他のブロックの
ロック情報と関連させて管理する制御回路を有して構成
される。
【0015】請求項2記載の発明は、セットアソシアテ
ィブ方式又はフルアソシアティブ方式のキャッシュメモ
リにおいて、同一セット内の複数のブロックデータから
次にリプレースするブロックデータを指定する情報を格
納するリプレース情報記憶領域と、同一セット内のブロ
ックデータの置き換えを禁止してキャッシュ内に保持す
るように指定するロック情報を格納するロック情報記憶
領域と、各ブロック毎にブロックデータが有効であるか
否かを示すバリッド情報を格納するバリッド情報記憶領
域と、各ブロック毎に格納されているブロックデータの
ブロックアドレスを格納するブロックアドレス記憶領域
と、各ブロックのブロックデータを格納するブロックデ
ータ記憶領域を備えたメモリ部と、前記メモリ部のバリ
ッド情報記憶領域に格納されたバリッド情報が有効なブ
ロックにおける前記ブロックアドレス記憶領域に格納さ
れたブロックアドレスと、キャッシュアクセスの際に外
部から入力されるブロックアドレスとを比較して、両者
が一致した時にヒット信号を出力する比較器と、キャッ
シュアクセスの際に、アクセスされたセットの前記リプ
レース情報記憶領域に格納されたリプレース情報と、前
記ロック情報記憶領域に格納されたロック情報と、比較
器から出力されるヒット信号と、ブロックデータをキャ
ッシュにロックすることを指示するオートロック信号の
入力により、同一セット内のすべてのブロックがロック
されないようにアクセス後のリプレース情報、ロック情
報及びバリッド情報を更新制御するキャッシュコントロ
ール回路とから構成される。
【0016】請求項3記載の発明は、請求項2記載の発
明において、前記キャッシュメモリは、2ウェイセット
アソシアティブ方式のキャッシュメモリであって、前記
メモリ部のリプレース情報記憶領域は、各セット毎に次
にリプレースされるか否かのウェイを指定する1ビット
の情報を格納し、前記メモリ部のロック情報記憶領域
は、各セット毎にセットのいずれかのウェイがロックさ
れているか否かを指定する1ビットの情報を格納し、前
記キャッシュコントロール回路は、いずれかのウェイの
ブロックデータがロックされている場合は、前記リプレ
ース情報記憶領域に格納されているリプレース情報を更
新しないように制御してなる。
【0017】請求項4記載の発明は、請求項2記載の発
明において、前記メモリ部のロック情報記憶領域は、各
ブロック毎にそのブロックがロックされているか否かを
指定する1ビットの情報を格納し、前記キャッシュコン
トロール回路は、同一セット内のすべてのブロックデー
タがロックされないように前記ロック情報記憶領域に格
納された情報を更新制御してなる。
【0018】
【作用】上記構成において、この発明は、同一セットの
複数のブロックデータの内すべてのブロックデータがロ
ックされないようにして、少なくとも1つのブロックデ
ータのリフィルを可能とし、リフィル処理を容易に行う
ようにしている。
【0019】
【実施例】以下、図面を用いてこの発明の実施例を説明
する。
【0020】図1は請求項1,2又は3記載の発明の一
実施例に係わるキャッシュメモリシステムの構成を示す
図である。
【0021】図1において、キャッシュメモリシステム
10は、キャッシュメモリ部11、キャッシュコントロ
ーラ部12、比較器13,14及びセレクタ15を備え
て構成されている。
【0022】キャッシュメモリシステム10は、外部よ
りクロックclock、キャッシュアドレスBAddr
InとSAddrIn、リード信号RD、ライト信号W
R、リフィル信号Refillによってアクセスされ
る。
【0023】外部からのリードアクセスの時は、リード
信号RDがアクティブ(例えば“0”)になり、キャッ
シュアドレスに対応したデータがキャッシュにヒットす
ればその値がブロックデータ出力BDataOutに出
力される。ライトアクセスの時は、ライト信号WRがア
クティブ(0)になり、キャッシュアドレスがヒットし
た時は、BDataInのデータがキャッシュに格納さ
れる。リフィルアクセスの時は、Refill信号がア
クティブ(0)になり、BDataInのデータがキャ
ッシュに格納される。オートロック信号DALcは、デ
ータをキャッシュへロックするように指示する信号であ
る。オートロック信号が有効(例えば“1”)のときに
アクセスされたキャッシュブロックはキャッシュにロッ
クされる。
【0024】次に、キャッシュメモリシステム10内の
個々のブロックを説明する。
【0025】キャッシュメモリ部11は、キャッシュサ
イズが1Kバイト、2ウェイセットアソシアティブ方
式、ブロックサイズは4バイトである。したがってセッ
ト数は128である。アドレスが32ビットの場合は8
ビット目から2ビット目の7ビットがセットアドレスと
なり、アドレスの31ビット目から9ビット目の23ビ
ットがブロックアドレスとなる。
【0026】また、キャッシュメモリ部11は、セット
毎にリプレースビットR、ロックビットL、ウェイ0の
バリッドビットV0、ウェイ0のブロックアドレスBA
ddr0、ウェイ0のブロックデータBData0、ウ
ェイ1のバリッドビットV1、ウェイ1のブロックアド
レスBAddr1、ウェイ1のブロックデータBDat
a1からなる。すなわち、128組のバリッドビットV
0、ブロックアドレスBAddr0、ブロックデータB
Data0によりウェイ0が構成され、128組のバリ
ッドビットV1、ブロックアドレスBAddr1、ブロ
ックデータBData1によりウェイ1が構成されてお
り、ウェイ0の1組のバリッドビットV0、ブロックア
ドレスBAddr0、ブロックデータBData0及び
ウェイ1の1組のバリッドビットV1、ブロックアドレ
スBAddr1、ブロックデータBData1に対して
1つのリプレースビットRならびにロックビットLが対
応して1つのセットを構成している。
【0027】リプレースビットRは、次にリプレースさ
れるウェイを示す1ビット情報である。リプレースビッ
トRが例えば“0”の時は次にウェイ0がリプレースさ
れ、“1”の時はウェイ1がリプレースされる。
【0028】ロックビットLは、セットのいずれのウェ
イがロックされているかを示す1ビットの情報である。
ロックビットLが例えば“0”の時はウェイ0,1とも
にロックされていない。ロックビットLが“1”の時
は、リプレースビットRを反転したウェイが常にキャッ
シュに置かれてロックされる、リプレースアルゴリズム
として例えばLRU方式を採ると、ロックビットLが
“0”でロックされていない時はリプレースビットRは
最近にアクセスされたのと反対のウェイを示す。ロック
ビットLが“1”で一方のウェイがロックされている時
は、リプレースビットRは常にリプレース可能なウェイ
を示す。
【0029】ウェイ0のバリッドビットV0、ウェイ1
のバリッドビットV1は、それぞれウェイ0、ウェイ1
に有効なデータが置かれているか否かを示す1ビットの
情報であり、初期化後にすべて“1”となる。ウェイ0
のバリッドビットV0、ウェイ1のバリッドビットV1
は例えば“1”の時に有効であることを示す。
【0030】ブロックアドレスBAddr0、BAdd
r1は、それぞれウェイ0、ウェイ1に格納されている
ブロックのブロックアドレスを示す23ビットの情報で
ある。ウェイ0のブロックデータBData0、ウェイ
1のブロックデータBData1は、それぞれ、ウェイ
0、ウェイ1に格納されている4バイト(32ビット)
のブロックデータである。
【0031】キャッシュコントローラ部12は、キャッ
シュメモリシステム10の外部から入力されるリード信
号RD、ライト信号WR、リフィル信号Refill、
クロック信号clock、オートロック信号DALc
と、キャッシュメモリ部11から入力されるリプレース
ビットR、ロックビットL、ウェイ0のバリッドビット
V0、ウェイ1のバリッドビットV1、ヒット信号hi
t0,hit1に基づいてキャッシュメモリ部11を制
御する。
【0032】比較器13は、アクセスされたセットのウ
ェイ0のバリッドビットV0が“1”で有効な時に、ブ
ロックアドレス入力BAddrInとウェイ0のブロッ
クアドレスBAddr0とを比較して一致した時にヒッ
ト信号hit0を有効(1)にする。
【0033】比較器14は、アクセスされたセットのウ
ェイ1のバリッドビットV1が“1”で有効な時に、ブ
ロックアドレス入力BAddrInとウェイ1のブロッ
クアドレスBAddr1とを比較して一致した時にヒッ
ト信号hit1を有効(1)にする。
【0034】セレクタ15は、ヒット信号hit0とh
it1に基づいてヒットした方のブロックデータをキャ
ッシュメモリシステム10の外部へ出力する。hit0
が有効の時にウェイ0のブロックデータBData0
を、hit1が有効の時にウェイ1のブロックデータB
Data1を出力する。
【0035】次に、キャッシュアクセスによるキャッシ
ュメモリ部11の状態遷移を図2を参照して説明する。
【0036】キャッシュのアクセスには、キャッシュの
読み出し(リード)、キャッシュへの書き込み(ライ
ト)と、キャッシュミスヒット後の主記憶からのデータ
読み込み(リフィル)がある。
【0037】ヒット時のキャッシュメモリ部11の状態
遷移を説明する。
【0038】図2において、リードヒット、ライトヒッ
ト、リフィルヒットの場合は、同じようにして状態遷移
する。
【0039】まず、オートロック信号DALcが無効
(0)でかつロックビットLが無効(0)の時は、キャ
ッシュへヒットアクセスすると、リプレースビットRを
ヒットしなかったウェイにする。また、ロックビットL
を無効(0)のままとする。
【0040】次に、オートロック信号DALcが無効
(0)でかつロックビットLが有効(1)の時は、キャ
ッシュへヒットアクセスすると、リプレースビットRを
変化させない。また、ロックビットLも有効(1)のま
まである。この場合は、一方のウェイのブロックはロッ
クされてリプレースできないように、ヒットしたウェイ
とは無関係にリプレースビットRは常にロックされてい
ないブロックのウェイを示す。
【0041】次に、オートロック信号DALcが有効
(1)でかつロックビットLが無効(0)の時は、キャ
ッシュへヒットアクセスすると、リプレースビットRは
ヒットしなかったウェイとし、ロックビットLを有効
(1)にする。これにより、ヒットしたブロックをキャ
ッシュにロックする。
【0042】次に、オートロック信号DALcが有効
(1)でかつロックビットLが有効(1)の時は、キャ
ッシュへヒットアクセスすると、リプレースビットRを
変化させない。ロックビットLは有効(1)のままにす
る。この場合は、すでにロックされているブロックのデ
ータを優先してロックし続ける。オートロック信号DA
Lcが有効の時のアクセスであるが、この時ヒットした
ブロックはキャッシュにはロックされない。
【0043】次に、リフィルミス時のキャッシュメモリ
部11の状態遷移を図3を参照して説明する。
【0044】図3において、オートロック信号DALc
が無効(0)でかつロックビットLが無効(0)の時
は、リフィルアクセスがミスすると、リプレースビット
Rで指定されるウェイをリプレースするのでRビットを
反転する。また、ロックビットLを無効(0)のままと
し、リプレースしたウェイのバリッドビットV0あるい
はV1をセットする。
【0045】次に、オートロック信号DALcが無効
(0)でかつロックビットLが有効(1)の時は、リフ
ィルアクセスがミスすると、リプレースビットRは変化
させない。また、ロックビットLも有効(1)のままで
ある。この場合は、一方のウェイのブロックはロックさ
れてリプレースはできないようになっているので、リプ
レースビットRは常にロックされていないブロックのウ
ェイを示す。また、リプレースしたウェイのバリッドビ
ットV0あるいはV1をセットする。
【0046】次に、オートロック信号DALcが有効
(1)でかつロックビットLが無効(0)の時は、リフ
ィルアクセスがミスすると、リプレースビットRで指定
されるウェイをリプレースするのでRビットを反転す
る。オートロック信号DALcが有効なのでロックビッ
トLを有効(1)にする。これにより、リプレースした
ウェイのブロックをキャッシュにロックする。また、リ
プレースしたウェイのバリッドビットV0あるいはV1
をセットする。
【0047】次に、オートロック信号DALcが有効
(1)でかつロックビットLが有効(1)の時は、リフ
ィルアクセスがミスすると、リプレースビットRを変化
させない。ロックビットLは有効(1)のままとする。
この場合は、すでにロックされているブロックのデータ
を優先してロックし続ける。オートロック信号DALc
が有効の時のアクセスであるが、この時リプレースした
ブロックはキャッシュにはロックされない。また、リプ
レースしたウェイのバリッドビットV0あるいはV1を
セットする。
【0048】リードミス、ライトミスの場合は、キャッ
シュメモリ部11の状態遷移はなく、前の状態をそのま
ま保持している。
【0049】次に、リードヒット時の動作タイミングを
図4の動作タイミングチャートを参照して説明する。
【0050】図4において、クロックclockが
“1”の時に、セットアドレス入力SAddrInによ
り対応するセットのロックビットLold(それまでの
状態のロックビットの値をLoldとし、次の状態のロ
ックビットの値をLnewとする)、リプレースビット
Rold(それまでの状態のリプレースビットの値をR
oldとし、次の状態のリプレースビットの値をRne
wとする)、ウェイ0のバリッドビットV0、ウェイ1
のバリッドビットV1、ウェイ0のブロックアドレスB
Addr0、ウェイ1のブロックアドレスBAddr1
が読み出される。比較器13と比較器14にて、ブロッ
クアドレス入力BAddrInとBAddr0及びBA
ddr1が比較され、ヒットしたウェイのヒット信号h
it0あるいはhit1がアクティブ(1)になる。
【0051】キャッシュコントローラ部12は、クロッ
クclockの立ち下がりから、次の状態のロックビッ
トLnewとリプレースビットRnewを出力し、キャ
ッシュへの書き込みを制御する信号TagWR信号をア
クティブ(0)にする。また、ヒットしたデータをBD
ataOutへ出力する。次のクロックの立ち上がりで
TagWR信号がインアクティブ(1)となり、その立
ち上がりでロックビットLnewとリプレースビットR
newの値がヒットしてアクセスされているセットのリ
プレースビットR、ロックビットLに格納される。
【0052】次に、ライトヒット時の動作タイミングを
図5に示す動作タイミングチャートを参照して説明す
る。
【0053】図5において、クロックclockが
“1”の時に、セットアドレス入力SAddrInによ
り対応するセットのロックビットLold、リプレース
ビットRold、ウェイ0のバリッドビットV0、ウェ
イ1のバリッドビットV1、ウェイ0のブロックアドレ
スBAddr0、ウェイ1のブロックアドレスBAdd
r1が読み出される。比較器13と比較器14にて、ブ
ロックアドレス入力BAddrInとBAddr0及び
BAddr1が比較され、ヒットしたウェイのヒット信
号hit0あるいはhit1がアクティブ(1)にな
る。
【0054】キャッシュコントローラ部12は、クロッ
クclockの立ち下がりから次の状態のロックビット
LnewとリプレースビットRnewを出力し、キャッ
シュへの書き込みを制御するTagWR信号をアクティ
ブ(0)にする。また、データ入力BDataInをヒ
ットしたキャッシュブロックへ書き込むため、制御信号
BDataWR0あるいはBDataWR1をアクティ
ブ(0)にする。
【0055】次のクロックの立ち上がりでTagWR信
号と、制御信号BDataWR0あるいはBDataW
R1がインアクティブ(1)となる。その立ち上がりで
ロックビットLnewとリプレースビットRnewの値
がヒットしてアクセスされているセットのリプレースビ
ットR、ロックビットLに格納される。また、制御信号
BDataWR0あるいはBDataWR1の立ち上が
りでブロックデータ入力BDataInがヒットしたキ
ャッシュのブロックデータBData0あるいはBDa
ta1に格納される。
【0056】次に、リフィルヒット時の動作タイミング
を図6の動作タイミングチャートを参照して説明する。
【0057】クロックclockが“1”の時に、セッ
トアドレス入力SAddrInにより対応するセットの
ロックビットLold、リプレースビットRold、ウ
ェイ0のバリッドビットV0、ウェイ1のバリッドビッ
トV1、ウェイ0のブロックアドレスBAddr0、ウ
ェイ1のブロックアドレスBAddr1が読み出され
る。比較器13と比較器14にて、ブロックアドレス入
力BAddrInとBAddr0及びBAddr1が比
較され、ヒットしたウェイのヒット信号hit0あるい
はhit1がアクティブ(1)となる。
【0058】キャッシュコントローラ部12は、クロッ
クclockの立ち下がりから、次の状態のロックビッ
トLnewとリプレースビットRnewを出力し、キャ
ッシュへの書き込みを制御するTagWR信号をアクテ
ィブ(0)にする。また、データ入力BDataInを
ヒットしたキャッシュブロックへ書き込むため、制御信
号BDataWR0あるいはBDataWR1をアクテ
ィブ(0)にする。
【0059】次のクロックの立ち上がりでTagWR信
号と、制御信号BDataWR0あるいはBDataW
R1がインアクティブ(1)となる。その立ち上がりで
ロックビットLnewとリプレースビットRnewの値
がヒットしてアクセスされているセットのリプレースビ
ットR、ロックビットLに格納される。また、制御信号
BDataWR0あるいはBDataWR1の立ち上が
りでブロックデータ入力BDataInがヒットしたキ
ャッシュのブロックデータBData0あるいはBDa
ta1に格納される。
【0060】次に、リフィルミス時の動作タイミングを
図7の動作タイミングチャートを参照して説明する。
【0061】クロックclockが“1”の時に、セッ
トアドレス入力SAddrInにより対応するセットの
ロックビットLold、リプレースビットRold、ウ
ェイ0のバリッドビットV0、ウェイ1のバリッドビッ
トV1、ウェイ0のブロックアドレスBDddr0、ウ
ェイ1のブロックアドレスBDddr1が読み出され
る。比較器13と比較器14にて、ブロックアドレス入
力BAddrInとBAddr0及びBAddr1が比
較され、ヒットしたウェイのヒット信号hit0とhi
t1がともにインアクティブ(0)になる。
【0062】キャッシュコントローラ部12は、クロッ
クclockの立ち下がりから、次の状態のロックビッ
トLnewとリプレースビットRnewを出力し、キャ
ッシュへの書き込みを制御するTagWR信号をアクテ
ィブ(0)にする。リプレースビットRoldのウェイ
にリフィルデータ入力BDataInを書き込み、バリ
ッドビットV0あるいはV1をセットするため、制御信
号BDataWR0あるいはBDataWR1をアクテ
イブ(0)にし、バリッドビットのセット信号V0se
tあるいはV1setをアクテイブ(0)にする。
【0063】次のクロックの立ち上がりでTagWR信
号,制御信号BDataWR0あるいはBDataWR
1と、バリッドビットのセット信号V0setあるいは
V1setがインアクティブ(1)となる。その立ち上
がりエッジでロックビットLnewとリプレースビット
Rnewの値がアクセスされているセットのリプレース
ビットR、ロックビットLに格納される。
【0064】また、制御信号BDataWR0あるいは
制御信号BDataWR1の立ち上がりでブロックデー
タ入力BDataInがリプレースされるキャッシュの
ブロックデータBData0あるいはBData1に格
納される。バリッドビットのセット信号V0setある
いはV1setの立ち上がりで、バリッドビットV0あ
るいはV1が“1”にセットされる。
【0065】次に、図8を用いてキャッシュメモリ部1
1の内部構成を説明する。
【0066】図8において、キャッシュメモリ部11
は、アドレスデコーダ20とRAMセル21から構成さ
れる。
【0067】キャッシュメモリ部11は、セットアドレ
ス入力SAddrInとリード信号RD、ライト信号W
Rとリフィル信号Refillを入力する。リード信号
RD、ライト信号WR、リフィル信号Refillのい
ずれかがアクテイブ(0)のとき、ゲート22は出力信
号をアクテイブにする。ゲート22の出力信号がアクテ
イブになると、アドレスデコーダ20は、セットアドレ
ス入力SAddrInをデコードして対応するセットの
ワード線をアクテイブにする。
【0068】RAMセル21は独立して書き込みができ
る、リプレースビットRセル22、ロックビットLセル
23、ウェイ0のバリッドビットV0セル24、ウェイ
0のブロックアドレスBAddr0セル25、ウェイ0
のブロックデータBData0セル26、ウェイ1のバ
リッドビットV1セル27、ウェイ1のブロックアドレ
スBAddr1セル28、ウェイ1のブロックデータB
Data1セル29から構成されている。
【0069】リプレースビットRセル22は、128ワ
ード×1ビットのRAMセルで構成され、アドレスデコ
ーダ20からワード線が有効な時に、TagWR信号が
“1”ならば対応するワードのデータをリプレースビッ
トRoldに出力する。また、TagWR信号の立ち上
がりでリプレースビットRnew入力を対応するワード
に格納する。
【0070】ロックビットLセル23は、128ワード
×1ビットのRAMセルで構成され、アドレスデコーダ
20からワード線が有効な時に、TagWR信号が
“1”ならば対応するワードのデータをロックビットL
oldに出力する。また、TagWR信号の立ち上がり
でロックビットLnew入力を対応するワードに格納す
る。
【0071】ウェイ0のバリッドビットV0セル24
は、128ワード×1ビットのRAMセルで構成され、
アドレスデコーダ20からワード線が有効な時に、バリ
ッドビットのセット信号V0setが“1”ならば対応
するワードのデータをV0に出力する。また、バリッド
ビットのセット信号V0setの立ち上がりで入力
“1”を対応するワードに格納する。
【0072】ウェイ0のブロックアドレスBAddr0
セル25は、128ワード×23ビットのRAMセルで
構成され、アドレスデコーダ20からワード線が有効な
時に、BAddrWr0信号が“1”ならば対応するワ
ードのデータをBAddr0に出力する。また、BAd
drWR0信号の立ち上がりでBDddrIn入力を対
応するワードに格納する。
【0073】ウェイ0のブロックデータBData0セ
ル26は、128ワード×32ビットのRAMセルで構
成され、アドレスデコーダ20からワード線が有効な時
に、BDataWR0信号が“1”ならば対応するワー
ドのデータをBData0に出力する。また、BDat
aWR0信号の立ち上がりでBDataIn入力を対応
するワードに格納する。
【0074】ウェイ1のバリッドビットV1セル27
は、128ワード×1ビットのRAMセルで構成され、
アドレスデコーダ20からワード線が有効な時に、V1
set信号が“1”ならば対応するワードのデータをV
1に出力する。また、V1set信号の立ち上がりで入
力“1”を対応するワードに格納する。
【0075】ウェイ1のブロックアドレスBAddr1
セル28は、128ワード×23ビットのRAMセルで
構成され、アドレスデコーダ20からワード線が有効な
時に、BAddrWR1信号が“1”ならば対応するワ
ードのデータをBAddr1に出力する。また、BAd
drWR1信号の立ち上がりでBAddrIn入力を対
応するワードに格納する。
【0076】ウェイ1のブロックデータBData1セ
ル29は、128ワード×32ビットのRAMセルで構
成され、アドレスデコーダ20からワード線が有効な時
に、BDataWR1信号が“1”ならば対応するワー
ドのデータをBData1に出力する。また、BDat
aWR1信号の立ち上がりでBDataIn入力を対応
するワードに格納する。
【0077】次に、図9を用いてキャッシュコントロー
ラ部12の内部構成を説明する。
【0078】図9において、キャッシュコントローラ部
12は、組み合わせ回路30とフリップフロップ31,
32から構成される。
【0079】組み合わせ回路30は、オートロック信号
DALc、キャッシュメモリ部11からの出力のロック
ビットLold、リプレースビットRold、比較器1
3からの出力のヒット信号hit0、比較器14からの
出力のヒット信号hit1、リード信号RD、リード信
号RD、リフィル信号Refillを入力として、キャ
ッシュタグの新しい値であるロックビットLnew’、
リプレースビットRnew’とキャッシュの更新のため
の制御信号であるTagWR’信号、V0set’信
号、V1set’信号、BDataWR0’信号、BD
ataWR1’信号、BAddrWR0’信号、BAd
drWR1’信号を出力する。
【0080】ロックビットLnew’とリプレースビッ
トRnew’はフリップフロップ31でクロックclo
ckの立ち下がりでラッチされて、キャッシュメモリ部
11に出力される。TagWR’信号、V0set’信
号、V1set’信号、BDataWR0’信号、BD
ataWR1’信号、BAddrWR0’信号、BAd
drWR1’信号はクロックclockの後半(0の
時)のみアクティブとなるように、プリセット付きのフ
リップフロップ32にクロックclockの立ち下がり
でラッチされる。また、クロックclockの前半(1
の時)ではプリセットされ出力はインアクティブ(1)
となる。
【0081】次に、図10を用いてキャッシュコントロ
ーラ部12の組み合わせ回路30の構成を説明する。
【0082】組み合わせ回路30の論理は、図2に示す
ヒット時のキャッシュメモリ部11の状態遷移と図3に
示すリフィルミス時のキャッシュメモリ部11の状態遷
移を表すことになる。したがって、論理式で表すと以下
のようになる。
【0083】Lnew=! (((!WR || !R
D) && (hit0 || hit1)) ||
!Refill) && !DALc &&!Lol
d); Rnew=(!Refill && !hit0 &&
!hit1 &&!Lold) ? !Rold : ((!WR || !RD || !Refill)
&& hit0 && !Lold) ? 1 : ((!WR || !RD || !Refill)
&& hit1 && !Lold) ? 0 : R
old; TagWR=! ((!WR || !RD || !
Refill) &&(hit0 || hit1)
|| (!Refill &&!hit0 && !h
it1); V0set=! ((!Refill && !hit
0 && !hit1) && !Rol
d); V1set=! ((!Refill && !hit
0 && !hit1) && Rol
d); BDataWR0=!(((!Refill || !
WR) && hit0) || (!Refill
&& !hit0 &&!hit1) && !Rol
d); BDataWR1=!(((!Refill || !
WR) && hit1) || (!Refill
&& !hit0 &&!hit1) && Rol
d); BAddrWR0=! ((!Refill && !
hit0 && !hit1) && !Rold); BAddrWR1=! ((!Refill && !
hit0 && !hit1) && Rold); ここで、「!」は論理反転、「||」は論理和、「&
&」は論理積を表す。また、「(論理式)? 式A :
式B」は論理式が真のとき式A、偽のとき式Bとなる
セレクタを意味する。
【0084】この論理式を、論理回路を用いて構成する
と、例えば図10に示すように構成される。
【0085】以上説明したように、上記実施例では、少
なくとも1つのウェイはロックされないので、キャッシ
ュに置くことができない領域がなくなる。したがって、
ロックビットの状態によらずキャッシュミス時に必ずリ
プレースを行うのでキャッシュの制御が容易となる。
【0086】また、キャッシュの中に必要なロックビッ
トが減少するので、ハードウエアを削減できる。例えば
実施例のキャッシュの構成では、従来の方法では各ウェ
イ毎に必要となり256ビットが必要であったが、上記
実施例では半分の128ビットでよい。
【0087】さらに、論理的なブロックサイズをプログ
ラムで変更できるキャッシュシステムにおいては、論理
的なブロックサイズを大きくしても、拡大したブロック
の一部がロック機能によってキャッシュに置けないとい
う状態がなくなり、キャッシュミス時のリプレースのオ
ーバーヘッドを削減することができる。
【0088】図11は請求項1,2又は4記載の発明の
一実施例に係わるキャッシュメモリシステムの構成を示
す図である。
【0089】図11に示す実施例は4ウェイセットアソ
シアティブ方式の構成を示すものである。
【0090】この実施例のキャッシュメモリシステム4
0では、キャッシュメモリ部41の各ウェイ(ウェイ0
〜ウェイ3)毎にそのウェイがロックされているかを示
すロックビットLnとリプレースの優先度を示すリプレ
ースフィールドRn、ブロックデータの有効を示すバリ
ッドビットVnを含んでいる。キャッシュコントローラ
部42は、ロックビットLnがセットされているブロッ
クはリプレースされないように次にリプレースするブロ
ックを指定する。また、セットのうち3つのセットがロ
ックされているときは残りのセットがロックされないよ
うに、ロックビットの更新を制御する。すなわち、キャ
ッシュは少なくとも1つのセットはロックされないよう
にロックビットに基づいて制御される。
【0091】以上説明した実施例では、キャッシュサイ
ズが1Kバイトのものを例に説明したが、本発明はこの
構成に限定されるものではなく、キャッシュサイズが5
12バイト、2Kバイト、あるいはそれ以外のサイズの
キャッシュでも適用できる。
【0092】また、ブロックサイズが4バイトのものを
例に説明したが、本発明はこの構成に限定されるもので
はなく、ブロックサイズが16バイト、32バイト、あ
るいはそれ以外のサイズのキャッシュでも適用できる。
【0093】さらに、2ウェイと4ウェイセットアソシ
アティブ方式のものを例に説明したが、本発明はこの構
成に限定されるものではなく、8ウェイ、あるいはそれ
以外のウェイ数のキャッシュでも適用でき、フルアソシ
アティブ方式のキャッシュでも適用できる。なお、フル
アソシアティブ方式では、セットアソシアティブ方式に
対して単一のセットと見なし、それぞれのブロック毎に
ロック情報ならびにリプレース情報が設定されている。
【0094】また、リプレースビットRは次にリプレー
スされるウェイを示しているが、逆にリプレースされな
いウェイを示すようにしてもよい。
【0095】さらにまた、リプレースアルゴリズムとし
てLRU方式について説明したが、本発明はこの構成に
限定されるものではなく、ランダム、FIFO(First I
n First Out)など、他のリプレースアルゴリズムに対し
ても適用できる。
【0096】
【発明の効果】以上説明したように、請求項1,2,3
又は4記載の発明によれば、同一セットの複数のブロッ
クデータの内すべてのブロックデータがロックされない
ようにロック情報及びリプレース情報を更新制御するよ
うにしたので、少なくとも1つのブロックデータはロッ
クされずリフィル処理が可能となる。これにより、ミス
ヒット時のリフィル処理を容易かつ迅速に行うことがで
きる。また、プログラムによって論理的なブロックサイ
ズを変更可能なシステムにおいては、拡大されたブロッ
クの一部がロックされてリフィルされないということは
回避され、キャッシュミス時のリフィル処理のオーバー
ヘッドを削減することができる。
【0097】一方、請求項1,2又は3記載の発明によ
れば、上記効果に加えて、ロック情報が削減されるた
め、構成の小型化を図ることができる。
【図面の簡単な説明】
【図1】請求項1,2又は3記載の発明の一実施例に係
わるキャッシュメモリの構成を示す図である。
【図2】図1に示す実施例におけるヒット時のキャッシ
ュメモリ部の状態遷移を示す図である。
【図3】図1に示す実施例におけるリフィルミス時のキ
ャッシュメモリ部の状態遷移を示す図である。
【図4】図1に示す実施例におけるリードヒット時の動
作タイミングを示す図である。
【図5】図1に示す実施例におけるライトヒット時の動
作タイミングを示す図である。
【図6】図1に示す実施例におけるリフィルヒット時の
動作タイミングを示す図である。
【図7】図1に示す実施例におけるリフィルミス時の動
作タイミングを示す図である。
【図8】図1に示す実施例におけるキャッシュメモリ部
の回路構成を示す図である。
【図9】図1に示す実施例におけるキャッシュコントロ
ール部の回路構成を示す図である。
【図10】図1に示す実施例におけるキャッシュコント
ロール部の組み合わせ回路の回路構成を示す図である。
【図11】請求項1,2又は4記載の発明の一実施例に
係わるキャッシュメモリの構成を示す図である。
【図12】従来のキャッシュメモリの構成を示す図であ
る。
【図13】図12に示す従来のキャッシュメモリのアド
レス構成を示す図である。
【符号の説明】
10,40 キャッシュメモリシステム 11,41 キャッシュメモリ部 12,42 キャッシュコントローラ部 13,14 比較器 15 セレクタ 20 アドレスデコーダ 21 RAMセル 30 組み合わせ回路 31,32 フリップフロップ

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 タグアドレスを格納するタグアドレス記
    憶領域と、そのタグアドレスに対応するブロックデータ
    を格納するデータ記憶領域と、リプレースを禁止するか
    否かをブロック毎に設定可能とするためのロック情報記
    憶領域と、を有し、 複数のブロックを1つのセットとして管理するセットア
    ソシアティブ方式又はフルアソシアティブ方式のキャッ
    シュメモリであって、 同一セット内のすべてのブロックがロックされないよう
    にブロックのロック情報を同一セット内の他のブロック
    のロック情報と関連させて管理する制御回路を有するこ
    とを特徴とするキャッシュメモリ。
  2. 【請求項2】 セットアソシアティブ方式又はフルアソ
    シアティブ方式のキャッシュメモリにおいて、 同一セット内の複数のブロックデータから次にリプレー
    スするブロックデータを指定する情報を格納するリプレ
    ース情報記憶領域と、同一セット内のブロックデータの
    置き換えを禁止してキャッシュ内に保持するように指定
    するロック情報を格納するロック情報記憶領域と、各ブ
    ロック毎にブロックデータが有効であるか否かを示すバ
    リッド情報を格納するバリッド情報記憶領域と、各ブロ
    ック毎に格納されているブロックデータのブロックアド
    レスを格納するブロックアドレス記憶領域と、各ブロッ
    クのブロックデータを格納するブロックデータ記憶領域
    を備えたメモリ部と、 前記メモリ部のバリッド情報記憶領域に格納されたバリ
    ッド情報が有効なブロックにおける前記ブロックアドレ
    ス記憶領域に格納されたブロックアドレスと、キャッシ
    ュアクセスの際に外部から入力されるブロックアドレス
    とを比較して、両者が一致した時にヒット信号を出力す
    る比較器と、 キャッシュアクセスの際に、アクセスされたセットの前
    記リプレース情報記憶領域に格納されたリプレース情報
    と、前記ロック情報記憶領域に格納されたロック情報
    と、比較器から出力されるヒット信号と、ブロックデー
    タをキャッシュにロックすることを指示するオートロッ
    ク信号の入力により、同一セット内のすべてのブロック
    がロックされないようにアクセス後のリプレース情報、
    ロック情報及びバリッド情報を更新制御するキャッシュ
    コントロール回路とを有することを特徴とするキャッシ
    ュメモリ。
  3. 【請求項3】 前記キャッシュメモリは、2ウェイセッ
    トアソシアティブ方式のキャッシュメモリであって、 前記メモリ部のリプレース情報記憶領域は、各セット毎
    に次にリプレースされるか否かのウェイを指定する1ビ
    ットの情報を格納し、 前記メモリ部のロック情報記憶領域は、各セット毎にセ
    ットのいずれかのウェイがロックされているか否かを指
    定する1ビットの情報を格納し、 前記キャッシュコントロール回路は、いずれかのウェイ
    のブロックデータがロックされている場合は、前記リプ
    レース情報記憶領域に格納されているリプレース情報を
    更新しないように制御することを特徴とする請求項2記
    載のキャッシュメモリ。
  4. 【請求項4】 前記メモリ部のロック情報記憶領域は、
    各ブロック毎にそのブロックがロックされているか否か
    を指定する1ビットの情報を格納し、 前記キャッシュコントロール回路は、同一セット内のす
    べてのブロックデータがロックされないように前記ロッ
    ク情報記憶領域に格納された情報を更新制御することを
    特徴とする請求項2記載のキャッシュメモリ。
JP6131754A 1994-06-14 1994-06-14 キャッシュメモリ Pending JPH07334428A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP6131754A JPH07334428A (ja) 1994-06-14 1994-06-14 キャッシュメモリ
EP95109234A EP0687979A1 (en) 1994-06-14 1995-06-14 Cache memory having lockable entries
KR1019950016146A KR960002009A (ko) 1994-06-14 1995-06-14 캐쉬메모리

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6131754A JPH07334428A (ja) 1994-06-14 1994-06-14 キャッシュメモリ

Publications (1)

Publication Number Publication Date
JPH07334428A true JPH07334428A (ja) 1995-12-22

Family

ID=15065412

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6131754A Pending JPH07334428A (ja) 1994-06-14 1994-06-14 キャッシュメモリ

Country Status (3)

Country Link
EP (1) EP0687979A1 (ja)
JP (1) JPH07334428A (ja)
KR (1) KR960002009A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002510085A (ja) * 1998-03-31 2002-04-02 インテル・コーポレーション テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761712A (en) * 1995-06-07 1998-06-02 Advanced Micro Devices Data memory unit and method for storing data into a lockable cache in one clock cycle by previewing the tag array
WO1998002818A1 (en) * 1996-07-16 1998-01-22 Advanced Micro Devices, Inc. A data memory unit configured to store data in one clock cycle and method for operating same
US6848024B1 (en) 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6748492B1 (en) 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6732234B1 (en) 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
GB2368150B (en) * 2000-10-17 2005-03-30 Advanced Risc Mach Ltd Management of caches in a data processing apparatus
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US8261022B2 (en) 2001-10-09 2012-09-04 Agere Systems Inc. Method and apparatus for adaptive cache frame locking and unlocking
US6823426B2 (en) 2001-12-20 2004-11-23 Intel Corporation System and method of data replacement in cache ways
US7266587B2 (en) 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US20080147989A1 (en) * 2006-12-14 2008-06-19 Arm Limited Lockdown control of a multi-way set associative cache memory

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5029072A (en) * 1985-12-23 1991-07-02 Motorola, Inc. Lock warning mechanism for a cache
US5353425A (en) * 1992-04-29 1994-10-04 Sun Microsystems, Inc. Methods and apparatus for implementing a pseudo-LRU cache memory replacement scheme with a locking feature

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002510085A (ja) * 1998-03-31 2002-04-02 インテル・コーポレーション テンポラリ命令及び非テンポラリ命令用の共用キャッシュ構造

Also Published As

Publication number Publication date
EP0687979A1 (en) 1995-12-20
KR960002009A (ko) 1996-01-26

Similar Documents

Publication Publication Date Title
JP4098347B2 (ja) キャッシュメモリおよびその制御方法
JP7049338B2 (ja) タグマッチングコマンドに応答する記憶回路
US8583872B2 (en) Cache memory having sector function
JP5536655B2 (ja) キャッシュメモリ、メモリシステム及びデータコピー方法
US7321954B2 (en) Method for software controllable dynamically lockable cache line replacement system
JPH07334428A (ja) キャッシュメモリ
US6643737B1 (en) Cache lock device and method therefor
US6898671B2 (en) Data processor for reducing set-associative cache energy via selective way prediction
JPS6111865A (ja) メモリアクセス制御方式
WO2005066796A1 (ja) キャッシュメモリ及びその制御方法
EP0997821A1 (en) Cache memory having a freeze function
US9304929B2 (en) Storage system having tag storage device with multiple tag entries associated with same data storage line for data recycling and related tag storage device
JPH09325913A (ja) 半導体記憶装置
JP3988485B2 (ja) キャッシュ回路、情報処理装置及び電子機器
JPH09237221A (ja) キャッシュ制御システム
JPH05233454A (ja) キャッシュメモリ装置
JPH06243045A (ja) キャッシュメモリ
JPH1139218A (ja) キャッシュシステム
JP2001005725A (ja) キャッシュ記憶装置
JPH06282487A (ja) キャッシュ装置
JPH04205154A (ja) マイクロプロセッサシステム
JP2006343803A (ja) キャッシュメモリ
JP2001175535A (ja) 半導体記憶装置およびそれを用いたキャッシュメモリシステム
JPH04288647A (ja) キャッシュメモリにおける置き換え制御装置
JPH02171944A (ja) バッファ記憶装置