JPH08339331A - キャッシュメモリー - Google Patents

キャッシュメモリー

Info

Publication number
JPH08339331A
JPH08339331A JP7144974A JP14497495A JPH08339331A JP H08339331 A JPH08339331 A JP H08339331A JP 7144974 A JP7144974 A JP 7144974A JP 14497495 A JP14497495 A JP 14497495A JP H08339331 A JPH08339331 A JP H08339331A
Authority
JP
Japan
Prior art keywords
address
register
tag
data
block
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.)
Withdrawn
Application number
JP7144974A
Other languages
English (en)
Inventor
Yutaka Takahashi
豊 高橋
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.)
ALPS LSI TECHNOL KK
Original Assignee
ALPS LSI TECHNOL KK
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 ALPS LSI TECHNOL KK filed Critical ALPS LSI TECHNOL KK
Priority to JP7144974A priority Critical patent/JPH08339331A/ja
Publication of JPH08339331A publication Critical patent/JPH08339331A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【目的】 占有面積,消費電流が少なく低コストであっ
て、組み込み型プロセッサに適したキャッシュメモリー
を提供する。 【構成】 CPUから送られるアドレスADは、8組の
タグレジスタから成るタグブロック4へ入力される。該
アドレスがタグヒットすると、ヒットセット信号HSと
アドレスADを元にデータメモリー10を読み出し、バ
リッドビットVが有効である場合、該メモリーの出力デ
ータCDをラッチしてCPUへ送出する。一方、ミスヒ
ットの場合、LRUシフタ6が決定するレジスタ番号L
RUのタグにアドレスADを登録し、アドレスCIND
EXQをFIFO9に蓄えて、アドレスIADDRと外
部要求信号CEXTREQを送出して主記憶をアクセス
する。その後、信号CFRDYが返った時点で書き込み
信号nCWEを上げフェッチデータFDATAをRAM
・10rへ書き込む。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、組み込み型コントロー
ラ向けのプロセッサに搭載するのに適したキャッシュメ
モリーに関する。
【0002】
【従来の技術】従来より、主記憶装置の性能を等価的に
高速なものとすることを狙って、キャッシュメモリーが
幅広く利用されている。このようなキャッシュメモリー
に対して主記憶のデータをマッピングするキャッシュ構
成として、セクタ方式,ダイレクトマッピング方式,フ
ルアソシアティブ方式,セットアソシアティブ方式など
が良く知られている。これらの方式の中でもセットアソ
シアティブ方式は主流の一つであって、コスト,性能を
加味した結果として4ウェイセットアソシアティブの構
成を採用したプロセッサは数多い。一般に、キャッシュ
メモリーには、当該キャッシュメモリーの中のブロック
が主記憶装置のどの領域に対応しているかを示すアドレ
スを保持するためのタグメモリーがライン毎に設けられ
ている。
【0003】さらに、主記憶のブロック数と比較した場
合、タグメモリーには少数のブロックのアドレスしか保
持することができない。従って、プログラムの実行が進
むにつれて、現在タグメモリー内に保持しているアドレ
スを、新たに読み出した主記憶ブロックのアドレスで順
次置換してゆく必要が生じてくる。その際、置き換える
べきタグメモリーのエントリを決定するために、LRU
(Least Recently Used) アルゴリズムが使用される。
そして、この置き換えアルゴリズムを実現するために、
一般にはタグメモリーの各エントリにLRU用のビット
が設けられている。
【0004】
【発明が解決しようとする課題】ところで、ナビゲーシ
ョンシステム,プリンタといった機器に搭載される、い
わゆる組み込み用途向けのプロセッサについては、チッ
プ面積や消費電力などに対する要求が厳しいことが多
い。そのため、この種のプロセッサに内蔵するキャッシ
ュとしては、低消費電力であって、チップ上の占有面積
が小さく従って低コストであることが望ましい。
【0005】ところが、従来の一般的なキャッシュメモ
リーは、高速で高価なプロセッサへ接続することを想定
していることが多く、従ってシステム性能の向上に有利
な構成を優先して採用している場合が多い。そのため、
キャッシュメモリー自体の規模が大きくなって、消費電
力,チップ面積が増大し、組み込み用途には不向きであ
った。また、上述したように、セットアソシアティブ方
式,ダイレクトマッピング方式のいずれにあっても、タ
グメモリーを各ライン毎に必要とする。従って、特に、
ヒット率で有利なセットアソシアティブ方式を採用しよ
うとした場合にあっては、そのセット数を増やすことが
困難であった。
【0006】また、上記のように、従来においては、タ
グメモリーのエントリ毎にLRU用のビットを設けてい
たため、エントリの数が増えるにつれてタグメモリーの
容量の増大が看過できないほど大きくなっていた。さら
に、キャッシュメモリーの容量を増やすと、これに対応
させてタグメモリーを増設する必要があり、占有面積,
消費電流の点で著しく不利になっていた。このように、
一般的なキャッシュメモリーを組み込み用途のプロセッ
サに適用するにあたっては、様々な課題が存在してい
た。本発明は上記の点に鑑みてなされたものであり、そ
の目的は、組み込み型プロセッサに適した、占有面積,
消費電流が少なく低コストなキャッシュメモリーを提供
することにある。
【0007】
【課題を解決するための手段】以上の課題を解決するた
めに、請求項1記載の発明は、主記憶装置のデータ読み
出し/書き込みの単位よりも大きなサイズを持つブロッ
クを単位として、該主記憶装置のデータの写しを保持す
るデータメモリーと、前記データメモリーの各ブロック
に対応して、該ブロックの元データが格納された前記主
記憶装置上の領域の先頭アドレスのブロック番号部を保
持するタグレジスタと、前記主記憶装置に対するアクセ
スアドレスのブロック番号部が、前記タグレジスタの内
容と一致するかどうかを判定するアドレス比較手段とを
具備したことを特徴としている。
【0008】また、請求項2記載の発明は、請求項1記
載の発明において、前記ブロックのサイズを512バイ
トとしたことを特徴としている。また、請求項3記載の
発明は、請求項1又は2記載の発明において、前記タグ
レジスタには互いに異なる番号が与えられており、使用
された最新のタグレジスタ番号を入力として、最も使用
されていないタグレジスタ番号を出力するシフタと、前
記アクセスアドレスのブロック番号部が前記タグレジス
タの何れかに一致した場合には一致したタグレジスタの
番号を選択し、前記何れのタグレジスタにも一致しなか
った場合には前記シフタの出力を選択して、選択された
タグレジスタ番号を前記使用された最新のタグレジスタ
番号として出力する選択手段とを具備したことを特徴と
している。
【0009】また、請求項4記載の発明は、請求項3記
載の発明において、前記シフタは、シフトクロックに同
期してシフトするレジスタ群であって、前記タグレジス
タ番号を保持する番号レジスタを直列に接続してなるレ
ジスタ群と、前記番号レジスタが保持するタグレジスタ
番号と、前記使用された最新のタグレジスタ番号を比較
する番号比較手段と、前記番号レジスタ毎に設けられ、
該番号レジスタ又は該番号レジスタよりも前段の番号レ
ジスタの何れかにおいて、前記両タグレジスタ番号が一
致した場合に、該番号レジスタの次段の番号レジスタに
前記シフトクロックが入るのを禁止するクロック制御手
段とから成ることを特徴としている。
【0010】
【作用】請求項1記載の発明によれば、主記憶装置に対
するアクセスアドレスのブロック番号部とタグレジスタ
の内容とをアドレス比較手段で比較して、一致した場合
には、該タグレジスタに対応するデータメモリのブロッ
クを主記憶装置のデータの代わりに使用し、一致しなか
った場合には主記憶装置に格納された元データを使用す
る。
【0011】また、請求項3記載の発明によれば、アク
セスアドレスのブロック番号部がタグレジスタの何れか
に一致した場合には、一致したタグレジスタの番号を使
用された最新のタグレジスタ番号として出力する。一
方、何れのタグレジスタにも一致しなかった場合には、
シフタの出力である最も使用されていないタグレジスタ
の番号を置き換えて使用することとし、該タグレジスタ
の番号を最新のタグレジスタ番号として出力する。
【0012】また、請求項4記載の発明によれば、番号
レジスタ群をシフトクロックに同期してシフトする際
に、各番号レジスタの内容と使用された最新のタグレジ
スタ番号を番号比較手段で比較して、双方のタグレジス
タ番号が一致した場合には、一致が見られた番号レジス
タよりも後段の番号レジスタがシフトされないようにク
ロック制御手段で制御する。
【0013】
【実施例】以下、図面を参照して本発明の一実施例につ
いて説明する。まず初めに、本発明によるキャッシュメ
モリーの概要について述べておく。一般に、キャッシュ
する命令,データのアクセスについてはアドレスに連続
性がある。特に、組み込み用途で使用されるアプリケー
ションにあってはその傾向が顕著であって、プログラム
がシーケンシャルに流れることが多い。従って、プログ
ラムの実行過程では分岐などが発生することもあるが、
メモリーマップ上におけるプログラムの実行アドレスの
履歴はある程度の塊と見なせる場合が多い。
【0014】本発明はこのような組み込み用途のアプリ
ケーションが有する特質に着目したものである。すなわ
ち、上記のようにアドレスが連続して変化することか
ら、全てのライン毎にタグメモリーのアドレスを持つ必
要性が薄く、ある程度のアドレス範囲全体に対して1つ
のタグアドレスを持つようにしても性能に与える影響は
ほとんどない。従って、1つのタグアドレスがカバーす
るブロックのサイズを大きくすることにより、タグメモ
リーに保持しているアドレスのビット幅を節約すること
が可能となる。
【0015】そこで、本実施例においては、各キャッシ
ュセットにアドレスを保持するタグレジスタを1つだけ
用意することにした。その結果として、以下に詳述する
ように、キャッシュメモリーは4Kバイトの容量を持つ
8ウェイセットアソシアティブメモリーの構成となっ
た。すなわち、タグのアドレスは8セットだけ必要とな
るだけで、タグメモリーの大幅な削減が可能となってい
る。これにより、面積と消費電流の面で有利な構成とす
ることができる。さらに、キャッシュのヒット率(従っ
て性能)に関しても、従来と同程度かこれを上回るもの
が得られる。
【0016】なお、プログラムの走行中に発生する分岐
などを考慮した場合、タグレジスタを1個だけ設ける構
成ではヒット率が悪いことが予想された。そこで、本実
施例によるキャッシュメモリーでは、タグレジスタを8
個用意することとした。また、次に述べる理由から、各
タグレジスタに対応するメモリーブロックの大きさを5
12バイトに決定した。
【0017】組み込み用途の様々なアプリケーションを
走行させ、分岐先のアドレスを求めて統計を取った結
果、図2に示すような分布が得られた。同図において、
縦軸は各種分岐命令の出現率(出現頻度)である。ま
た、横軸は、分岐先のアドレスと分岐命令(同図の横軸
の「0」が分岐命令に相当する)との間の相対的なアド
レスを意味している。すなわち、横軸の各数字は、各相
対アドレスを2の累乗で表した場合の、累乗部分の数字
を示している。そして、この数字が正数である場合は分
岐命令よりも後ろのアドレスに分岐することを意味し、
負数である場合は分岐命令よりも前のアドレス(たとえ
ばループの先頭に戻るような場合)に分岐することを意
味している。たとえば、横軸の値が「4」であれば、分
岐先のアドレスは、分岐命令に対して24( =16)の
間だけ後ろのアドレスに分岐することを意味する。ま
た、「−5」であれば、分岐命令に対して25( =3
2)だけ前のアドレスに分岐することを意味する。
【0018】また、系列1〜3は分岐の種類を示してお
り、系列1(S1)はディレイドブランチ(Delayed Br
anch)によるもの、系列2(S2)はサブルーチン,関
数呼び出し等によるもの、系列3(S3)はこれら以外
の一般的な条件分岐命令,無条件分岐命令によるもので
ある。
【0019】この図からわかるように、約7割の分岐先
がアドレス幅で8ビット(−256〜+256)の範囲
内に入っている。この範囲を越えるものは、系列2のサ
ブルーチン・関数呼び出しなどに限定されているが、こ
の種の分岐は一般の分岐命令に比較して出現頻度が少な
く、あまり考慮する必要はない。以上のことから、8ビ
ットのアドレス範囲を1ブロックに収められるようにキ
ャッシュメモリーを構成すれば、かなりの確率で分岐先
のアドレスが当該分岐命令と同一ブロックに収まるよう
に制御することが可能となる。加えて、上述したように
タグレジスタを8個設けるようにしたため、7回までの
分岐であれば命令をキャッシュ上に置くことができる。
【0020】次に、本実施例によるキャッシュメモリー
の構成を説明する。以下では便宜上、命令キャッシュを
前提として説明する。従って、プロセッサからキャッシ
ュメモリーに対するアクセスは読み出し動作に限られる
が、本実施例をデータキャッシュに対して応用すること
は何らの問題も存在しない。なお、以下では、信号名の
先頭に「n」が付与された場合、その信号は「n」を付
与しない元の信号の反転信号を表わす。例えば、後述す
る信号nIDXCKはクロックIDXCKを反転した信
号を意味している。
【0021】図1は、本実施例によるキャッシュメモリ
ーの構成を示すブロック図であって、同図に示すキャッ
シュブロック1の回路は、すべて1チップ上に搭載され
ている。また、キャッシュブロック1の内部の全ての回
路は、位相が互いに180゜だけ異なる2相のクロック
TM,クロックTV(何れも図示略)に基づいて動作す
る。
【0022】さて、図1において、アドレスADRS
は、図示しないCPU(中央処理装置)が、該CPUの
アドレスバス上に送出するメモリーアドレスである。こ
こで、本実施例における主記憶装置は一時に4バイト
(1ワード)を読み書きすることが可能である。従っ
て、キャッシュブロック1に与えられるメモリーアドレ
スは、アドレスADRSの下位2ビットを除いた30ビ
ットのアドレス、すなわちワードアドレスとなる。
【0023】ラッチ2は、アドレスラッチパルス(以
下、アドレスパルスと呼ぶ)ALATの立ち上がりタイ
ミングでアドレスADRSを取り込み、アドレスADと
して出力する。ラッチ3は、クロックnIDXCKの立
ち上がり(従って、クロックIDXCKの立ち下がり)
タイミングで上記のアドレスADを取り込み、アドレス
IADDRとして外部バスBUSへ送出する。
【0024】タグブロック4は、アドレスADの上位2
3ビットをもとに、CPUから送出されたメモリーアド
レスがキャッシュメモリーにヒットしたかミスヒットし
たかを判定するタグメモリーである。すなわち、主記憶
装置は論理的に512バイトを単位とするブロックで分
割されていると考えられる。これらのブロックには、ア
ドレスADの上位23ビットで指定されるブロック番号
が付与されており、このブロック番号をもとにして、あ
る主記憶のブロックがキャッシュメモリーに存在するか
をタグブロック4で決定する。
【0025】このタグブロック4は8個のタグレジスタ
(図1では図示省略)などから構成されており、アドレ
スAD[31:9]が何れかのタグレジスタにヒットし
た場合にヒット信号TAGHITとして”1”を出力す
る。その際、いずれのタグレジスタにヒットしたかを示
す3ビットのヒットセット信号HSを出力する。なお、
このタグブロック4の詳細な回路構成については後述す
る。
【0026】ラッチ5は、ヒット信号TAGHITをク
ロックIDXCKの立ち上がりで捉えて、ヒット信号C
TAGHITとして出力する。LRUシフタ6(LRU
shifter 6)は、クロックLRUCLKのパルスが出た
場合に、周知のLRUアルゴリズムに基づいて、最も使
用されていないタグレジスタのレジスタ番号LRUを決
定して出力する。このレジスタ番号LRUは、キャッシ
ュミスヒットが発生した場合に置き換えるべきタグレジ
スタの番号を意味している。
【0027】実際には、LRUシフタ6は3ビット幅の
レジスタが8個によって構成されたシフトレジスタとそ
の他の周辺回路から構成されている。ここで、クロック
LRUCLKは、クロックIDXCKの立ち上がりの後
で、次に出るクロックTVの立ち上がりに同期して出る
ようになっている。なお、LRUシフタ6の構成の詳細
は後述する。
【0028】マルチプレクサ7は、ヒット信号CTAG
HITの値に応じて、ヒットセット信号HSとレジスタ
番号LRUとを切り替えて出力する。すなわち、ヒット
信号CTAGHITが”1”であってタグにヒットした
場合は、ヒットしたタグレジスタの番号であるヒットセ
ット信号HSを選択する。一方、ヒット信号CTAGH
ITが”0”であってタグにミスヒットした場合は、次
に書き込むべきタグレジスタの番号、すなわちレジスタ
番号LRUを選択する。これは、ミスヒットした場合
は、LRUアルゴリズムに基づいて決定されるタグレジ
スタに対してアドレスADの上位23ビットの内容を登
録するとともに、該タグレジスタに相当するキャッシュ
メモリーのブロックに対して主記憶から読みだしたデー
タの内容を書き込む必要が生じるからである。
【0029】ミキサ8は、マルチプレクサ7が選択した
3ビットのレジスタ番号の後ろに、アドレスADの下位
7ビットを結合して、10ビット幅のアドレスCIND
EXQを出力する。すなわち、3ビットのレジスタ番号
がアドレスCINDEXQのビット9〜7に相当し、ア
ドレスADの下位7ビットがアドレスCINDEXQの
ビット6〜0に相当する。
【0030】FIFO9(First In First Out 9)は、
クロックIDXCKの立ち上がりをトリガとしてアドレ
スCINDEXQを順次取り込み、アドレスCINDE
Xとして「先入れ先出し」順に出力するバッファであ
る。このアドレスCINDEXは後述するデータメモリ
ーへのアクセスアドレスとして使用される。本実施例に
おいて、FIFO9は直列に並べられた4つのレジスタ
FIFO#0〜FIFO#3(何れも詳細は図示略)か
ら構成されている。これらレジスタのうち、レジスタF
IFO#0が出力段に最も近く配置され、レジスタFI
FO#3が入力段に最も近く配置されている。また、F
IFO9へ入力されたアドレスCINDEXQは必ずレ
ジスタFIFO#0,FIFO#1,FIFO#2,F
IFO#3の順に書き込み/読み出しが行われる。
【0031】また、これらの各レジスタに対応して有効
ビットFIFOV(図示略)が設けられている。そし
て、上記の4個のレジスタのうち、あるレジスタにデー
タが書き込まれた場合、外部要求信号CEXTREQの
立ち上がりのタイミングで、当該レジスタに対応する有
効ビットFIFOVが”1”に設定され、該レジスタの
内容が有効となったことを表示する。そして、有効ビッ
トFIFOVは、対応するレジスタに関する主記憶アク
セスが完了した時点で”0”に戻される。
【0032】さらに、FIFO動作を実現するために、
レジスタFIFO#0〜FIFO#3の各々に対応して
信号FIFOrd0〜FIFOrd3(図示略)が存在
し、これらの信号の何れか1つだけが”1”となって、
対応するレジスタの出力を選択して出力端子へ送出する
ようになっている。
【0033】なお、図1によればFIFO9の段数は4
段となっているが、FIFO9の実質的な深さは外部バ
スBUSのウェイトサイクルによって決定される。そし
て、FIFO9に書き込まれた深さ分のアドレスについ
て、すべての主記憶の読み出しが行われるまでは、次の
メモリーアドレスに対する読み出し要求は待たされるよ
うになっている。本実施例においては、ウェイトサイク
ルはクロックTM(あるいはクロックTV)の1サイク
ル分(又は後述する別のタイミング例では2サイクル
分)であって、アドレスが2つ(又は3つ)入力される
とFIFO9は一杯となり、それ以上アドレスが入らな
いように制御される。
【0034】データメモリー10は主記憶の内容のコピ
ーを保持したメモリー装置である。このデータメモリー
10は、4キロバイトの容量を持つRAM・10r(Ra
ndomAccess Memory 10r)と、当該RAM・10rの5
12バイトを単位とするブロック毎に設けられた、1ビ
ット×8個のバリッドビットVを保持するRAM・10
vから構成されている。
【0035】RAM・10rは10ビット幅のアドレス
端子AIN、書き込み制御端子WE、32ビット幅のデ
ータ入力端子DINおよびデータ出力端子DOUTを有
する。このRAM・10rは、ワード(=4バイト)を
単位として、書き込み制御端子WEの値に応じてデータ
入力端子/データ出力端子からデータを読み書きするこ
とができる。RAM・10rの読み出しデータは、アド
レス端子AINの内容が確定してからクロックTVの1
クロック分の時間が経過した後に有効となる。また、こ
のRAM・10rの各ブロックは上述した8個のタグレ
ジスタに対応しており、論理的には容量128ワード×
8個のブロックから構成されているとみなすことができ
る。
【0036】また、主記憶からRAM・10rに対して
書き込みがなされる場合、1ブロック(=512バイ
ト)分のデータが一度に書き込まれるのではなく、CP
Uがデータを必要とした時点で書き込みが行われるよう
になっている。というのは、分岐命令を実行した場合な
どにおいては、CPUが当該1ブロック分のすべてのデ
ータを使用する(換言すれば、ブロック内の全命令を実
行する)とは限らず、従って、一度にブロック全体の書
き込みを行うことは性能の観点からして得策ではないか
らである。
【0037】さらに、アドレス端子AINへ入力される
アドレスCINDEXはワード単位のアドレスであっ
て、そのビット9〜7がブロックの番号に相当し、ま
た、そのビット6〜0が各ブロック内の相対ワードアド
レスに相当する。そして、アドレス端子AINで指定さ
れたワードの内容が、データCDとしてデータ出力端子
DOUT読み出されると、該ワードが属するブロックの
バリッドビットVがRAM・10vから同時に読み出さ
れる。
【0038】リセット回路11は、タグブロック4のい
ずれかのタグレジスタの内容を置き換えるに際して、こ
のタグレジスタに対応するRAM・10rのブロックの
バリッドビットVをリセットすることで、該ブロックの
データの内容を無効状態とする。書込制御回路12は、
外部バスBUSから送出されたデータ有効信号CFRD
Yをもとにして、RAM・10rに対する書き込み信号
nCWEを作成する。このデータ有効信号CFRDY
は、外部バスBUSを経て送出されたフェッチデータF
DATAの内容が確定したことを示す信号である。ここ
で、フェッチデータFDATAはキャッシュミスした際
に主記憶から読み出されるデータである。
【0039】アンドゲート13は、RAM・10vから
出力されたバリッドビットVとヒット信号CTAGHI
Tとの論理積をとって出力する。この出力信号は、CP
Uから与えられたメモリーアドレスに対したタグ,デー
タの双方が有効であることを意味している。制御回路1
4は、アンドゲート13の出力信号をもとにして、外部
要求信号CEXTREQ及びデータ有効信号nCREA
DYを作成する。ここで、外部要求信号CEXTREQ
は外部バスBUSに対する外部要求信号であって、キャ
ッシュにミスヒットした場合の主記憶に対する読み出し
要求信号である。また、データ有効信号nCREADY
は、本キャッシュブロック1の出力データであるデータ
CDATA(後述)の内容が有効となったことを示す信
号である。
【0040】マルチプレクサ15は、データ有効信号C
FRDYに応じて、外部バスBUSから送られてきた主
記憶のフェッチデータFDATAとRAM・10rの読
み出しデータであるデータCDのうちの何れか1つを選
択して出力する。すなわち、データ有効信号CFRDY
が”1”である場合はフェッチデータFDATAが選択
され、”0”である場合はデータCDが選択される。
【0041】ラッチ16は、マルチプレクサ15が出力
したデータを、データ有効信号nCREADYの立ち下
がりタイミング又はデータ有効信号CFRDYの立ち上
がりタイミングで捉え、データCDATAとして出力す
る。なお、以上述べた、データCDATA,外部要求信
号CEXTREQ,データ有効信号nCREADYは何
れもCPUへ送られる信号である。
【0042】次に、図3を参照して、上述したタグブロ
ック4の構成について詳述する。同図において、図1と
同一の意味を有する信号には同一の符号を付してあり、
ここではその説明を省略する。図3に示すタグブロック
4には、23ビット分のアドレスを保持する8個のレジ
スタ31-0,31-1,………,31-7が設けられてお
り、各レジスタは23個の一般的なDタイプラッチから
構成されている。これらのラッチにおいて、ckはクロ
ック入力端子,Dはデータ入力端子,Rはリセット端
子,Qはデータ出力端子である。
【0043】デコーダ32は、3ビットのレジスタ番号
LRUをデコードすることにより、レジスタ31-0〜3
1-7に対する書き込み動作にあたって、何れか1つのレ
ジスタを選択するためのものである。つまり、レジスタ
番号LRUの値に応じて次に述べる8個のアンドゲート
の入力のいずれか1つに”1”を出力する。アンドゲー
ト33-0,33-1,………,33-7は、デコーダ32の
出力と、書き込みイネーブルパルスである書き込みタグ
WETAGの論理積をとって、レジスタ31-0〜31-7
の何れか1つのck端子へ書き込みパルスを送出する。
【0044】コンパレータ34-0,34-1,………,3
4-7の各々は、アドレスADのビット31〜9と、レジ
スタ31-0,31-1,………,31-7の23ビットのア
ドレスの内容とをビット単位に比較する。各コンパレー
タは、さらに、有効状態又は無効状態を表示するバリッ
ドビットを保持するラッチ(図示略)を有している。初
期状態(リセット直後)において、これらのバリッドビ
ットはすべて無効状態(”0”)となっている。また、
このバリッドビットは、対応するレジスタにアドレスA
Dの内容が書き込まれた場合に有効状態(”1”)に設
定される。そして、各コンパレータは、上記の比較結果
が全ビットの一致を示しており、同時に、該コンパレー
タ内のバリッドビットが有効状態である場合にだけ”
1”を出力する。なお、コンパレータ34-0,34-1,
………,34-7の全出力の論理和を取った結果が、図1
に示したヒット信号TAGHITとなる。
【0045】エンコーダ35は、コンパレータ34-0,
34-1,………,34-7の出力をもとに、アドレスAD
と同一のアドレスを有するレジスタの番号を求めてヒッ
トセット信号HSを作成する。すなわち、アドレスAD
がコンパレータ34-0の内容と一致した場合にはヒット
セット信号HSとして「0」を出力し、コンパレータ3
4-1の内容と一致した場合は「1」を出力し、………、
コンパレータ34-7の内容と一致した場合は「7」を出
力する。
【0046】次に、図4を参照して、上述したLRUシ
フタ6の構成について詳述する。同図において、図1と
同一の意味を有する信号には同一の符号を付してあり、
ここではその説明を省略する。LRUシフタ6には、直
列に接続された8個のレジスタ41-0〜41-7が含まれ
る。これらのレジスタのうち、出力(レジスタ番号LR
U)に最も近いものがレジスタ41-0であり、入力(マ
ルチプレクサ7の出力)に最も近いものがレジスタ41
-7である。また、例えば、レジスタ41-7の出力がレジ
スタ41-6の入力に接続されている。
【0047】各レジスタは、3ビット幅のレジスタ番号
の各ビットに対応した同種のラッチ3個から構成されて
いる。これらのラッチは、比較機能を有するDタイプの
ラッチであって、Dはデータ入力端子,Qはデータ出力
端子,ckはクロック入力端子,S/Rは出力端子Qを
各々”1”/”0”に強制するセット/リセット入力端
子,compは比較結果の出力端子、cinは共通入力
端子である。なお、実際のラッチはS端子とR端子の両
方の端子を持っているが、煩雑となるのを避けるため
に、リセット信号resetが接続された端子だけを図
示してある。
【0048】ここで、comp端子に出力される比較結
果は、共通入力端子cinとデータ入力端子DとのEN
OR(exclusive NOR )論理を取ったものとなる。つま
り、両端子に入力される値が一致した場合にcomp端
子へ”1”が出力される。また、これらのレジスタ41
-0〜41-7は、初期化時においてリセット信号rese
tが”1”となることで、それぞれ0〜7に初期化され
る。
【0049】一方、アンドゲート42-0〜42-7は、各
々レジスタ41-0〜41-7を構成する3個のラッチのc
omp端子の全出力結果の論理積を演算して出力する。
つまり、各レジスタの共通入力端子cinとデータ入力
端子Dの全3ビットが完全に一致したかどうかを判定す
るためのゲートである。また、43-1〜43-6はオアゲ
ート,44-1〜44-7は一方の入力にインバータが接続
されたアンドゲートである。これらのゲートの働きによ
り、(入力段に近い方の)前段のレジスタのうち、共通
入力端子cinとデータ入力端子Dが一致するレジスタ
が1つでもあった場合に、当該レジスタのck端子へク
ロックLRUCLKが入るのを禁止する造りになってい
る。
【0050】次に、上記構成によるキャッシュメモリー
の動作を説明する。図5は、本実施例によるキャッシュ
メモリーの動作を示す第1のタイミングチャートであ
る。同図では、5回のメモリーアクセスが行われる場合
について示してある。これらメモリーアクセスのうち、
1回目と5回目のメモリーアクセスはキャッシュにヒッ
トし、2回目〜4回目のメモリーアクセスはミスヒット
している。さらに言うと、2回目のメモリーアクセスは
タグにヒットしない場合であり、3回目と4回目のメモ
リーアクセスは、タグにヒットしたがデータが無効状態
であった場合である。
【0051】ここで、前提条件として、図3に示すタグ
ブロック4内のレジスタ31-0〜レジスタ31-7の内容
が、各々「a18,a17,a16,a5,a4,a
3,a12,a1」となっているものとする。また、こ
れらのレジスタに対応する各コンパレータ内部のバリッ
ドビットはすべて有効状態であるとする。さらに、LR
Uシフタ6内部のレジスタ41-7〜41-0の内容は、入
力段に近い順に「1,5,7,4,3,0,2,6」と
なっているとする(なお、以後も入力段に近い順にLR
Uシフタ6の内容を列挙する)。
【0052】なお、図5において、左の欄の「キャッシ
ュの状態」の項目はキャッシュメモリーの状態を表して
おり、「MISS」は、タグにヒットしなかったか、タグに
はヒットしたがデータが無効状態であった場合を言う。
また「HIT」は、タグにヒットしなおかつデータも有効
であった場合を言う。さらに、「WRITE」はキャッシュ
(RAM・10r)に対する書き込みがされることを意
味している。
【0053】まず、時刻t1 において、CPUは、クロ
ックTMが立ち上がる前にアドレスバスへ最初のメモリ
ーアドレスを送出し、これによりアドレスADRSの値
が「a1」に確定する。ここで、以下に示すように、こ
のアドレス「a1」はタグにヒットすると共に、データ
メモリー10内のデータ自体も有効なものである。次
に、時刻t2 において、アドレスラッチ信号ALATの
立ち上がりでラッチ2がアドレスADRSの内容をラッ
チするとアドレスADの値が「a1」となる。そして、
このアドレスの値をもとにタグブロック4でタグが引か
れる。
【0054】すなわち、図3のコンパレータ34-0〜3
4-7は、それぞれレジスタ31-0〜31-7に保持された
アドレスとアドレス「a1」とを比較する。この場合、
レジスタ31-7の内容が「a1」であり、さらに該レジ
スタに対応したバリッドビットも有効状態であるため、
コンパレータ34-7の出力だけが”1”となり、その他
のコンパレータの出力はすべて”0”となる。これによ
り、エンコーダ35は、ヒットセット信号HSとしてレ
ジスタ31-7に対応した値「7」を生成する。また、こ
のとき同時に、図1のヒット信号TAGHITが”1”
となる。
【0055】次に、時刻t3 においてクロックIDXC
Kが立ち上がると、ラッチ5がヒット信号TAGHIT
をラッチして、ヒット信号CTAGHITが”1”とな
る。これにより、マルチプレクサ7の出力がヒットセッ
ト信号HS側へ切り替わる。すると、アドレスCIND
EXQとして、ヒットセット信号HSの値「7」の後ろ
にアドレス「a1」の下位7ビットを連結した値(以
後、「ax1」とする)が出力される。またこの時、ア
ドレスCINDEXQがFIFO9に入力されてレジス
タFIFO#0の内容が「ax1」となる。このように
して、アドレスCINDEXが「ax1」に確定する
と、データメモリー10の読み出し動作が開始される。
【0056】そして、時刻t4 において、データCDと
して、RAM・10rの「ax1」番地の内容「d1」
が読み出されてくる。また同時に、RAM・10rのブ
ロックのうち「ax1」番地の属する7番目のブロック
に対応するRAM・10vの内容が読み出され、バリッ
ドビットVに”1”が出力される。従って、アドレス
「a1」に対して、タグとデータメモリーの双方にヒッ
トしたこととなってアンドゲート13の出力が”1”と
なる。
【0057】また、時刻t4から少し遅れた時刻t5にお
いて、クロックLRUCLKが出る。ここで、この時点
のLRUシフタ6のレジスタ41-7〜41-0の内容は
「1,5,7,4,3,0,2,6」である。そして、
各レジスタでは、該レジスタが保持しているデータとマ
ルチプレクサ7の出力値「7」とが比較される。この場
合、レジスタ41-5の内容が「7」であるため、アンド
ゲート42-0〜42-7のうち、アンドゲート42-5の出
力だけが”1”となる。これにより、オアゲート43-1
〜43ー5の出力がすべて”1”となり、その結果とし
て、アンドゲート44-1〜44-5の出力がすべて”0”
となって、レジスタ41-0〜41-4についてはクロック
LRUCLKの入力が禁止される。
【0058】一方、アンドゲート42-6,42−7の出
力は何れも”0”であるから、アンドゲート44-6,4
4-7の出力はクロックLRUCLKをスルーで通す。す
なわち、クロックLRUCLKが入ると、レジスタ41
-5〜41ー7にだけクロックが入って、レジスタ41-6の
内容がレジスタ41ー5へ、レジスタ41ー7の内容がレジ
スタ41ー6へ、マルチプレクサ7の出力データがレジス
タ41ー7へそれぞれ同時にセットされる。このようにし
て、入力段から数えて3段分のレジスタの内容が出力段
側へ1段分だけシフトして、入力段のレジスタには該L
RUシフタ6の入力値「7」が設定されてLRU動作を
実現することができる。これにより、LRUシフタ6の
内容は「7,1,5,4,3,0,2,6」となる。
【0059】他方、上述したようにアンドゲート13の
出力が”1”になると、制御回路14は、時刻t6 のク
ロックTMの立ち上がりでデータ有効信号nCREAD
Yを”1”とする。また、このアドレスについては主記
憶に対するアクセスが発生しておらず、データ有効信号
CFRDYは”0”のままである。そのため、マルチプ
レクサ15はRAM・10rの出力側のデータCDを選
択して出力する。そして、ラッチ16はデータ有効信号
nCREADYの立ち下がりでデータCDを取り込み、
データCDATAとして「d1」をCPUへ送出する。
CPUは、データ有効信号nCREADYが”1”とな
ったことで、キャッシュメモリーのデータが有効となっ
たことを認識してデータCDATAの値「d1」をデー
タバスから取り込む。
【0060】次に、CPUがアドレスADRSとして
「a2」番地をアクセスすると、上記と同じ時刻t6 に
おいて、ラッチ2にアドレス値「a2」が取り込まれ、
アドレスADに「a2」が出力される。ここで、以下に
示すように、このアドレス「a2」はタグにミスヒット
するアドレスである。このアドレス「a2」でタグブロ
ック4を引くと、該アドレスの値は図3に示すレジスタ
31-0〜31-7の何れとも一致せず、コンパレータ34
-0〜34-7はいずれも”0”を出力する。これにより、
ヒット信号TAGHITが”0”となり、時刻t7 でヒ
ット信号CTAGHITが”0”となる。そして、マル
チプレクサ7はLRUシフタ6の出力側を選択して、こ
の時点におけるレジスタ番号LRUの値「6」の後ろに
アドレスADの下位7ビットを結合したアドレス(以
下、「ax2」と呼ぶ)がアドレスCINDEXQとし
て出力され、アドレス値「ax2」がレジスタFIFO
#0に書き込まれる。
【0061】次に、時刻t8 において、ヒット信号CT
AGHITの立ち下がりをトリガとして書き込みタグW
ETAGが”1”となり、ミスヒットしたアドレスに関
してタグブロック4への登録が開始される。この時点で
はレジスタ番号LRUに「6」が出力されており、図3
のデコーダ32は該レジスタ番号LRUをデコードし
て、アンドゲート33-6に対応する出力だけを”1”と
する。これにより、レジスタ31-6にだけクロックが入
り、アドレスADの値「a2」がレジスタ31ー6に取り
込まれる。この時同時に、該レジスタに対応するタグの
バリッドビットが有効状態に設定される。以上のように
して、ミスヒットしたアドレスがタグブロック4に登録
される。さらに、リセット回路11は、RAM・10v
のバリッドビットのうちレジスタ番号LRU「6」に対
応したビットをリセットする。これにより、データメモ
リー10の6番目のブロックに対するデータが無効とな
る。
【0062】次に、時刻t9 において、ラッチ3がクロ
ックIDXCKの立ち下がりでアドレスADを取り込
み、アドレスIADDRとして「a2」が外部バスBU
Sへ送出される。さらに、時刻t10において、クロック
LRUCLKが出て、その際のヒット信号CTAGHI
Tが”0”であることから、LRUシフタ6の入力には
レジスタ番号LRUの値「6」がそのまま戻される。こ
の場合、LRUシフタ6内の全レジスタにクロックが入
るので、クロックLRUCLKに同期してLRUシフタ
6内のレジスタ全体の内容が1段分だけそのままシフト
する。結局LRUシフタ6の内容は「6,7,1,5,
4,3,0,2」となる。
【0063】一方、ヒット信号CTAGHITが”0”
であるためアンドゲート13の出力は”0”となる。こ
れにより、時刻t11において、制御回路14は外部要求
信号CEXTREQを”1”として主記憶に対する読み
出し要求をCPUへ送出する。CPUは、この要求を受
理して、前述したアドレスIADDRの値「a2」番地
に対する読み出し要求を主記憶装置へ送る。また、信号
EXTREQが出ることにより、FIFOV0が”1”
に設定されてレジスタFIFO#0の内容が有効状態と
なる。
【0064】次に、CPUがアドレスADRSとして
「a3」番地をアクセスすると、上記と同じ時刻t11に
おいて、ラッチ2にアドレス値「a3」が取り込まれ、
アドレスADとして「a3」が出力される。ここで、以
下に示すように、このアドレス「a3」はタグにはヒッ
トするが、データメモリー10には該アドレスに対応し
たデータが登録されていない。
【0065】このアドレス「a3」でタグブロック4を
引くと、図3のレジスタ31-5にヒットするため、上記
と同様の動作によりタグヒット信号TAGHITが”
1”となり、ヒットセット信号HSが”5”となる。こ
れにより、時刻t12においてヒット信号CTAGHIT
が”1”となる。そして、ヒットセット信号HSの値
「5」の後ろにアドレスADの下位7ビットを結合した
アドレス(以下、「ax3」と呼ぶ)がアドレスCIN
DEXQとして出力され、クロックIDXCKの立ち上
がりでアドレス値「ax3」がレジスタFIFO#1に
書き込まれる。
【0066】次に、時刻t13において、ラッチ3がアド
レスADを取り込んで、アドレスIADDRとして「a
3」が外部バスBUSへ送出される。また、時刻t14に
おいてクロックLRUCLKが出るが、その際、LRU
シフタ6の入力はヒットセット信号HSの値「5」であ
り、従って、LRUシフタ6の内容は「5,6,7,
1,4,3,0,2」となる。
【0067】さらに、この時、アドレスCINDEXと
して値「ax3」が出力され、データメモリー10の読
み出しが行われて、該アドレスに対するバリッドビット
Vとして”0”が読み出されて、アンドゲート13の出
力が”0”となる。すると、制御回路14は、時刻t15
において外部要求信号CEXTREQを”1”として主
記憶アクセス要求をCPUへ送出する。これにより、C
PUはアドレスIADDRの値「a3」番地へ読み出し
要求を行う。さらに、この時、FIFOV1が”1”に
設定され、レジスタFIFO#1が有効となる。これに
より、FIFO9が一杯となり、以後のCPUによるメ
モリーアクセスは、FIFO9に溜まったアドレスがす
べて捌けるまで保留される。
【0068】次に、時刻t16において、アドレス「a
2」に対する主記憶の読み出しが完了して、データ有効
信号CFRDYが”1”となる。その際、フェッチデー
タFDATAとして、アドレスa2の内容である「d
2」が得られる。また、マルチプレクサ15は、フェッ
チデータFDATAを選択して出力し、この出力データ
がラッチ16でラッチされて、データCDATAとして
「d2」がCPUへ送出される。
【0069】また、アドレス「a2」のアクセスが完了
したことにより、信号FIFOV0が”0”となるとと
もに、信号FIFOrd0が”1”となってレジスタF
IFO#0の内容「ax2」がアドレスCINDEXと
して出力される。さらに、データ有効信号CFRDYの
立ち上がりをトリガとして、書込制御回路12が書き込
み信号nCWEを”1”とする。これにより、RAM・
10rの「ax2」番地に対して、主記憶から読み出さ
れたデータ「d2」が書き込まれる。さらに、制御回路
14は、時刻t17においてデータ有効信号nCREAD
Yを”1”として、CPUはデータCDATAの値「d
2」の取り込みを行う。
【0070】続いて、時刻t18において、アドレス「a
3」に対する主記憶の読み出しが完了すると、フェッチ
データFDATAとして値「d3」が得られ、このデー
タがラッチ16にラッチされてCPUへ送出される。ま
た、信号FIFOV1が”0”に戻り、信号FIFOr
d1が”1”となってレジスタFIFO#1の内容「a
x3」がCINDEXとして出力される。そして、信号
nCWEが”1”となってRAM・10rのax3番地
に対してデータ「d3」が書き込まれる。そして、時刻
t19において、データ有効信号nCREADYが”1”
となってCPUがデータCDATAの内容「d3」を読
み取る。
【0071】次に、時刻t20において、CPUは新たな
アドレス「a4」に対するアクセスを開始する。このア
ドレスに対しては、以下に示すように、上述したアドレ
ス「a3」と同様に動作する。まず、アドレスADとし
て「a4」が出力される。このアドレスでタグブロック
4を引くと、レジスタ31-4にヒットして、タグヒット
信号TAGHITが”1”に、ヒットセット信号HS
が”4”となり、ヒット信号CTAGHITが”1”と
なる。そして、ヒットセット信号HSの値「4」の後ろ
にアドレスADの下位7ビットを結合したアドレス(以
下、「ax4」と呼ぶ)がアドレスCINDEXQとし
て出力され、時刻t21においてクロックIDXCKが立
ち上がると、アドレス「ax4」がレジスタFIFO#
0へ書き込まれる。
【0072】次に、時刻t22において、ラッチ3にアド
レスADが取り込まれ、アドレスIADDRとして「a
4」が外部バスBUSへ送出される。また、時刻t23に
おいて、クロックLRUCLKが出てLRUシフタ6の
内容が「4,5,6,7,1,3,0,2」となる。一
方で、アドレス「ax4」に対するデータメモリー10
の読み出しが行われて、該アドレスに対するバリッドビ
ットVとして”0”が読み出され、アンドゲート13の
出力が”0”となる。そして、時刻t24において、外部
要求信号CEXTREQが”1”となって、CPUはア
ドレスIADDRの値「a4」番地へ主記憶の読み出し
要求を行う。さらにこの時、FIFOV0が”1”に設
定される。
【0073】また、同じく時刻t24において、CPUは
アドレス「a5」に対するアクセスを開始する。する
と、アドレス「a4」の場合と同様にして、アドレスA
Dに「a5」でタグブロック4を引くと、レジスタ31
-3にヒットして、タグヒット信号TAGHITが”1”
に、ヒットセット信号HSが”3”になる。そして、ヒ
ットセット信号HSの値「3」の後ろにアドレスADの
下位7ビットを結合したアドレス(以下、「ax5」と
呼ぶ)がアドレスCINDEXQとして出力され、時刻
t25においてクロックIDXCKが立ち上がると、アド
レスax5がレジスタFIFO#1に書き込まれ、アド
レス「ax5」に対してデータメモリー10の読み出し
要求がなされる。
【0074】次に、時刻t26において、クロックLRU
CLKが出てLRUシフタ6の内容が「3,4,5,
6,7,1,0,2」となる。また、RAM・10rの
ax5番地の内容が読み出されて、データCDに「d
5」が出力されると共に、バリッドビットVとして”
1”が読み出される。これにより、アンドゲート13の
出力が”1”となるが、この時点では先にアクセス要求
を行ったアドレス「a4」に対する主記憶アクセスがま
だ完了していない。そこで、制御回路14はデータ有効
信号nCREADYを”1”としないように制御する。
このような状態を読み出し保留(read pending)状態と
呼ぶ。
【0075】そうした場合、時刻t27においてFIFO
V1が”1”に設定されて、アドレス「a5」に対する
要求が一旦レジスタFIFO#1へ入れられる。そし
て、時刻t28において、アドレス「a4」に対する主記
憶アクセスが完了すると、データ有効信号CFRDY
が”1”となり、フェッチデータFDATAにデータ
「d4」が得られ、次いで、データCDATAが「d
4」となる。さらに、信号FIFOrd0が”1”とな
り、アドレスCINDEXの値が「ax4」に切り替わ
って、書き込み信号nCWEが出て、データ「d4」が
RAM・10rのax4番地へ書き込まれる。さらに、
時刻t29においてnCREADYが”1”となって、C
PUがデータCDATAの内容「d4」を読み取る。
【0076】次に、上述したタイミングとは異なる第2
のタイミングに基づいた動作について説明を行う。図6
は、この動作を説明するための第2のタイミングチャー
トである。ここで、同図においても、図5同様、5回の
メモリーアクセスが行われる場合について示してある。
但し、図5と場合とは異なり、3回目のメモリーアクセ
ス(アドレスADRSの内容が「a3」)がタグ,デー
タメモリーの何れにもヒットする。また、主記憶のウェ
イトサイクルは2サイクルであって、FIFO9の実質
的な深さは3段となっている。
【0077】次に、図6に基づくキャッシュメモリーの
動作につき、図5と異なる部分を中心にして説明する。
なお、図6の時刻t51〜t52の動作は図5の時刻t1 〜
t13の動作と同じであるため、その説明を省略する。ま
ず、時刻t52において、アドレス「a3」に対するキャ
ッシュの読み出しが完了して、データCDに値「d3」
が得られる。しかし、この時点ではアドレス「a2」に
対する主記憶の読み出しが完了しておらず、上記と同様
の理由で読み出し保留状態となる。これにより、時刻t
53において、信号FIFOV1が”1”となって、アド
レス「a3」に対する要求がレジスタFIFO#1に蓄
えられる。
【0078】次に、時刻t54において、アドレスADが
「a4」となる。上述したように、このアドレスはタグ
にヒットするから、時刻t55において、ヒットセット信
号HSが「4」に、アドレスCINDEXQが「ax
4」になる。その際、アドレス「ax4」はデータメモ
リー10に存在しないため、バリッドビットVとして”
0”が読み出される。そして、時刻t56において、アド
レスADがラッチ3に取り込まれてアドレスIADDR
が「a4」となる。その後、時刻t57において、制御回
路14が外部要求信号CEXTREQを”1”にする
と、主記憶の「a4」番地に対する読み出し要求がCP
Uを介して行われる。
【0079】次いで、時刻t58において、信号FIFO
V2が”1”となってアドレス「a4」に対する要求が
レジスタFIFO#2に蓄えられ、これでFIFO9が
一杯になる。またこの時、アドレス「a2」に対する主
記憶の読み出しが完了して、フェッチデータFDATA
に値「d2」が得られ、信号FIFOV0が”0”とな
る。さらに、信号FIFOrd0が出て、アドレスCI
NDEXがアドレス「a2」に対応する値「ax2」へ
切り替わり、RAM・10rのax2番地へデータ「d
2」が書き込まれる。その後、時刻t59において、信号
nCREADYが”0”となってCPUがデータCDA
TAの値「d2」の取り込みを行う。
【0080】次に、時刻t60において、信号FIFOr
d1が”1”となり、これに伴って信号FIFOV1
が”0”に戻る。また、アドレスCINDEXが「ax
3」へ切り替わって、先ほど保留しておいたアドレス
「a3」に関する読み出し処理が再開される。すなわ
ち、アドレス「ax3」について、再度RAM・10r
の内容が読み出され、続く時刻t61においてデータCD
に値「d3」が得られる。そして、時刻t62において、
信号nCREADYが”0”となって、データCDAT
Aの内容「d3」をCPUが取り込む。
【0081】その後、時刻t63でアドレス「a4」に対
する主記憶の読み出しが完了すると、フェッチデータF
DATAの内容がラッチされて、データCDATAが
「d4」となる。またこの時、信号FIFOrd2が出
てアドレスCINDEXが「ax4」に切り替わり、デ
ータ「d4」がRAM・10rのax4番地へ書き込ま
れる。さらに、時刻t64で信号nCREADYが”0”
となって、CPUがデータCDATAの内容「d4」の
読み取りを行う。なお、時刻t65以降のアドレス「a
5」に対する読み出しについては、例えばアドレス「a
1」に関する動作と同じであって、容易にその動作を理
解できるため、その説明を省略する。
【0082】このように、本実施例によるキャッシュメ
モリーは、プロセッサに内蔵した構成とすることができ
る。このようにすると、プロセッサの外部バスに接続さ
れた様々な装置(例えばシリアル入出力装置やビデオボ
ード)の影響を受けずにキャッシュメモリーを構成する
ことが可能となる。また、組み込み型のプロセッサで
は、CPU,固定プログラムが格納されたROM(Read
Only Memory),装置を制御するシステム等が接続され
ているだけであって非常にコンパクトな構成であるた
め、キャッシュを内蔵させることは非常に有用である。
【0083】
【発明の効果】以上説明したように、請求項1記載の発
明によれば、主記憶装置のデータ読み出し/書き込みの
単位よりも大きなサイズを持つブロックを単位としてデ
ータメモリーを構成すると共に、タグレジスタに主記憶
上のアドレスのブロック番号部だけを保持するようにし
たので、タグレジスタの容量を大幅に削減することが可
能となり、消費電流が少なく占有面積の小さなキャッシ
ュメモリーを構成できるという効果が得られる。
【0084】また、請求項2記載の発明によれば、ブロ
ックのサイズを512バイトとしたので、組み込み用途
のアプリケーションプログラムの実行中に分岐が発生し
たとしても、分岐先の大部分が分岐命令と同一のブロッ
ク上に存在することとなり、キャッシュミスヒットの確
率を低減することが可能となるという効果が得られる。
【0085】また、請求項3又は4記載の発明によれ
ば、番号レジスタ群をシフトクロックに同期してシフト
する際に、各番号レジスタの内容と使用された最新のタ
グレジスタ番号を番号比較手段で比較して、双方のタグ
レジスタ番号が一致した場合には、一致が見られた番号
レジスタよりも後段の番号レジスタがシフトされないよ
うにしたので、タグメモリーに専用のビットを設けるこ
となくLRUアルゴリズムに基づいたタグレジスタの置
換処理が実現でき、従って、タグメモリーの容量の削減
が可能となって、消費電流が少なく占有面積の小さなキ
ャッシュメモリーを構成できるという効果が得られる。
【図面の簡単な説明】
【図1】 本発明の一実施例によるキャッシュメモリー
の構成を示すブロック図である。
【図2】 組み込み用途のアプリケーションにおいて、
分岐命令実行時の分岐先のアドレス範囲の分布を表わし
た図である。
【図3】 同実施例によるキャッシュメモリーを構成す
るタグブロック4の詳細な回路図である。
【図4】 同実施例によるキャッシュメモリーを構成す
るLRUシフタ6の詳細な回路図である。
【図5】 同実施例によるキャッシュメモリーの動作を
表わす第1のタイミングチャートである。
【図6】 同実施例によるキャッシュメモリーの動作を
表わす第2のタイミングチャートである。
【符号の説明】
1…キャッシュブロック、4…タグブロック、6…LR
Uシフタ、7…マルチプレクサ、9…FIFO、10…
データメモリー、10r,10v…RAM、11…リセ
ット回路、31-0〜31-7…レジスタ、32…デコー
ダ、33-0〜33-7…アンドゲート、34-0〜34-7…
コンパレータ、35…エンコーダ、41-0〜41-7…レ
ジスタ、42-0〜42-7…アンドゲート、43-1〜43
-7…オアゲート、44-1〜44-7…アンドゲート

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 主記憶装置のデータ読み出し/書き込み
    の単位よりも大きなサイズを持つブロックを単位とし
    て、該主記憶装置のデータの写しを保持するデータメモ
    リーと、 前記データメモリーの各ブロックに対応して、該ブロッ
    クの元データが格納された前記主記憶装置上の領域の先
    頭アドレスのブロック番号部を保持するタグレジスタ
    と、 前記主記憶装置に対するアクセスアドレスのブロック番
    号部が、前記タグレジスタの内容と一致するかどうかを
    判定するアドレス比較手段とを具備したことを特徴とす
    るキャッシュメモリー。
  2. 【請求項2】 前記ブロックのサイズを512バイトと
    したことを特徴とする請求項1記載のキャッシュメモリ
    ー。
  3. 【請求項3】 前記タグレジスタには互いに異なる番号
    が与えられており、 使用された最新のタグレジスタ番号を入力として、最も
    使用されていないタグレジスタ番号を出力するシフタ
    と、 前記アクセスアドレスのブロック番号部が前記タグレジ
    スタの何れかに一致した場合には一致したタグレジスタ
    の番号を選択し、前記何れのタグレジスタにも一致しな
    かった場合には前記シフタの出力を選択して、選択され
    たタグレジスタ番号を前記使用された最新のタグレジス
    タ番号として出力する選択手段とを具備したことを特徴
    とする請求項1又は2記載のキャッシュメモリー。
  4. 【請求項4】 前記シフタは、 シフトクロックに同期してシフトするレジスタ群であっ
    て、前記タグレジスタ番号を保持する番号レジスタを直
    列に接続してなるレジスタ群と、 前記番号レジスタが保持するタグレジスタ番号と、前記
    使用された最新のタグレジスタ番号を比較する番号比較
    手段と、 前記番号レジスタ毎に設けられ、該番号レジスタ又は該
    番号レジスタよりも前段の番号レジスタの何れかにおい
    て、前記両タグレジスタ番号が一致した場合に、該番号
    レジスタの次段の番号レジスタに前記シフトクロックが
    入るのを禁止するクロック制御手段とから成ることを特
    徴とする請求項3記載のキャッシュメモリー。
JP7144974A 1995-06-12 1995-06-12 キャッシュメモリー Withdrawn JPH08339331A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7144974A JPH08339331A (ja) 1995-06-12 1995-06-12 キャッシュメモリー

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7144974A JPH08339331A (ja) 1995-06-12 1995-06-12 キャッシュメモリー

Publications (1)

Publication Number Publication Date
JPH08339331A true JPH08339331A (ja) 1996-12-24

Family

ID=15374537

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7144974A Withdrawn JPH08339331A (ja) 1995-06-12 1995-06-12 キャッシュメモリー

Country Status (1)

Country Link
JP (1) JPH08339331A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11102435A (ja) * 1997-06-05 1999-04-13 Digital Equip Corp <Dec> ノンブロッキング・パイプライン・キャッシュ
US6643737B1 (en) 1998-11-13 2003-11-04 Nec Electronics Corporation Cache lock device and method therefor
CN100428200C (zh) * 2006-12-28 2008-10-22 北京时代民芯科技有限公司 一种片上指令cache的实现方法
CN100437525C (zh) * 2003-08-05 2008-11-26 Sap股份公司 数据缓存方法、缓存存储器及数据处理系统

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11102435A (ja) * 1997-06-05 1999-04-13 Digital Equip Corp <Dec> ノンブロッキング・パイプライン・キャッシュ
US6643737B1 (en) 1998-11-13 2003-11-04 Nec Electronics Corporation Cache lock device and method therefor
CN100437525C (zh) * 2003-08-05 2008-11-26 Sap股份公司 数据缓存方法、缓存存储器及数据处理系统
CN100428200C (zh) * 2006-12-28 2008-10-22 北京时代民芯科技有限公司 一种片上指令cache的实现方法

Similar Documents

Publication Publication Date Title
US6950903B2 (en) Power reduction for processor front-end by caching decoded instructions
US20060248277A1 (en) System, method, and apparatus for least recently used determination for caches
US5535350A (en) Cache memory unit including a replacement address register and address update circuitry for reduced cache overhead
JPH03206523A (ja) デジタルコンピユータにおいてデータをメモリ内のスタツク上にプツシユする方法およびパイプラインされる命令とメモリを有するデジタルコンピユータにおいてスタツクオペレーシヨンを実行する回路
JP3498673B2 (ja) 記憶装置
US6718439B1 (en) Cache memory and method of operation
US20020116581A1 (en) Memory aliasing in a processor system
US20160217079A1 (en) High-Performance Instruction Cache System and Method
US7596661B2 (en) Processing modules with multilevel cache architecture
JPH08339331A (ja) キャッシュメモリー
US5724548A (en) System including processor and cache memory and method of controlling the cache memory
JPH07210460A (ja) バッファストレイジのムーブイン制御方法
US20040162942A1 (en) Computer system embedding sequential buffers therein for improving the performance of a digital signal processing data access operation and a method thereof
US5421026A (en) Data processor for processing instruction after conditional branch instruction at high speed
JP3997404B2 (ja) キャッシュメモリ及びその制御方法
US20070011432A1 (en) Address generation unit with operand recycling
JP2003030129A (ja) データバッファ
JP4111645B2 (ja) キャッシュミスした後のメモリバスアクセス制御方式
JP3295728B2 (ja) パイプラインキャッシュメモリの更新回路
JP2689920B2 (ja) 演算処理システムに用いられるプリフェッチバッファ装置
JPH04369061A (ja) キャッシュメモリの制御方式
JPH05143330A (ja) スタツクキヤツシユの制御方式及びスタツクキヤツシユ
JP5480793B2 (ja) プログラマブルコントローラ
JP3614946B2 (ja) メモリバッファ装置
JP3278564B2 (ja) 命令キャッシュ

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20020903