JPH0756808A - データキャッシュバッファ及び記憶方法 - Google Patents
データキャッシュバッファ及び記憶方法Info
- Publication number
- JPH0756808A JPH0756808A JP3041187A JP4118791A JPH0756808A JP H0756808 A JPH0756808 A JP H0756808A JP 3041187 A JP3041187 A JP 3041187A JP 4118791 A JP4118791 A JP 4118791A JP H0756808 A JPH0756808 A JP H0756808A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- data
- buffer
- information
- address
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【目的】コンピュータ・システムにおいて、プロセッサ
からメモリへの記憶に要する時間を短縮して、ロードに
要する時間に近づける。 【構成】データキャッシュとCPU間にメモリへの記憶
(書込み)用キャッシュバッファを設けた。
からメモリへの記憶に要する時間を短縮して、ロードに
要する時間に近づける。 【構成】データキャッシュとCPU間にメモリへの記憶
(書込み)用キャッシュバッファを設けた。
Description
【0001】
【発明の技術分野】この発明は広義にはコンピュータ
と、中央処理装置(CPU) とデータキャッシュの間の動作
に関する。
と、中央処理装置(CPU) とデータキャッシュの間の動作
に関する。
【0002】
【従来技術とその問題点】コンピュータは一つまたはそ
れ以上の論理プロセッサを有する。プロセッサは受け取
った特定の指令(コマンド)および受け取った指令の順
序にしたがって供給されるデータに論理または演算ステ
ップを実行する。入出力装置のようなコンピュータの他
の要素と通信するため、プロセッサは読み取り、書き込
み動作ができなければならない。読み取り動作はプロセ
ッサにある機能を実行させる指令を出す、あるいはプロ
セッサにある機能を実行するためのデータを与えるため
のプロセッサへの入力である。プロセッサは、プロセッ
サに指令またはデータを入力する一つまたはそれ以上の
要素に接続することができる。プロセッサに接続される
典型的な要素としては、メモリ要素がある。メモリ要素
の例としては、ランダムアクセスメモリ(RAM) 、リード
オンリーメモリ(ROM) 、光学ディスク、ハードディス
ク、およびフロッピーディスクがある。通常、コンピュ
ータは読み取り、書き込みの可能な主メモリ要素を有す
る。書き込み動作はコンピュータの他の要素に、ある機
能を実行する、あるいはデータを渡す、あるいはそのプ
ロセッサまたはコンピュータのなんらかの他の要素によ
る未来の動作のためにデータを記憶するように要求する
ための指令を与えるプロセッサからの出力である。記憶
動作には書き込み動作と書き込み場所の指令が含まれ
る。
れ以上の論理プロセッサを有する。プロセッサは受け取
った特定の指令(コマンド)および受け取った指令の順
序にしたがって供給されるデータに論理または演算ステ
ップを実行する。入出力装置のようなコンピュータの他
の要素と通信するため、プロセッサは読み取り、書き込
み動作ができなければならない。読み取り動作はプロセ
ッサにある機能を実行させる指令を出す、あるいはプロ
セッサにある機能を実行するためのデータを与えるため
のプロセッサへの入力である。プロセッサは、プロセッ
サに指令またはデータを入力する一つまたはそれ以上の
要素に接続することができる。プロセッサに接続される
典型的な要素としては、メモリ要素がある。メモリ要素
の例としては、ランダムアクセスメモリ(RAM) 、リード
オンリーメモリ(ROM) 、光学ディスク、ハードディス
ク、およびフロッピーディスクがある。通常、コンピュ
ータは読み取り、書き込みの可能な主メモリ要素を有す
る。書き込み動作はコンピュータの他の要素に、ある機
能を実行する、あるいはデータを渡す、あるいはそのプ
ロセッサまたはコンピュータのなんらかの他の要素によ
る未来の動作のためにデータを記憶するように要求する
ための指令を与えるプロセッサからの出力である。記憶
動作には書き込み動作と書き込み場所の指令が含まれ
る。
【0003】プロセッサは、指令の受領、データ処理、
あるいはデータの記憶を行って、出力装置に適当な時に
出力を提供する、あるいはプロセッサの能力を最大活用
するためにメモリに頻繁にアクセスする。多くのメモリ
要素はプロセッサで使用できる速度まで早くアクセスす
ることができないため、より早くアクセスできるデータ
キャッシュが用いられる。通常、データキャッシュは主
メモリほど情報を記憶することはできないが、情報を提
供し、受け取るという点ではより速く、また高価であ
る。プロセッサはデータキャッシュ主メモリより速く情
報を格納し、またロードできるため、プロセッサはまず
データキャッシュにアクセスし、データキャッシュが適
当な情報ブロックを記憶しているときデータキャッシュ
を用いて情報を格納し、ロードする。
あるいはデータの記憶を行って、出力装置に適当な時に
出力を提供する、あるいはプロセッサの能力を最大活用
するためにメモリに頻繁にアクセスする。多くのメモリ
要素はプロセッサで使用できる速度まで早くアクセスす
ることができないため、より早くアクセスできるデータ
キャッシュが用いられる。通常、データキャッシュは主
メモリほど情報を記憶することはできないが、情報を提
供し、受け取るという点ではより速く、また高価であ
る。プロセッサはデータキャッシュ主メモリより速く情
報を格納し、またロードできるため、プロセッサはまず
データキャッシュにアクセスし、データキャッシュが適
当な情報ブロックを記憶しているときデータキャッシュ
を用いて情報を格納し、ロードする。
【0004】情報が処理されると主メモリは一般に次の
2つの方法のいずれかの方法により更新される。一つの
方法は、記憶情報がキャッシュと主メモリの両方に同時
に書き込まれるライトスルーキャッシュである。もう一
つの方法は記憶情報がまずキャッシュに書き込まれ、主
メモリがその後更新されるライトバックキャッシュある
いはコピーバックキャッシュである。ライトバックキャ
ッシュは、プロセッサが、ライトスルーキャッシュのよ
うに主メモリが更新されるのを待つ必要がなく、またデ
ータキャッシュから主メモリへのブロック転送が行わ
れ、主メモリバスのトラフィックを低減するという利点
がある。しかし、欠点としてデータキャッシュと主メモ
リが常には同一ではないという点がある。
2つの方法のいずれかの方法により更新される。一つの
方法は、記憶情報がキャッシュと主メモリの両方に同時
に書き込まれるライトスルーキャッシュである。もう一
つの方法は記憶情報がまずキャッシュに書き込まれ、主
メモリがその後更新されるライトバックキャッシュある
いはコピーバックキャッシュである。ライトバックキャ
ッシュは、プロセッサが、ライトスルーキャッシュのよ
うに主メモリが更新されるのを待つ必要がなく、またデ
ータキャッシュから主メモリへのブロック転送が行わ
れ、主メモリバスのトラフィックを低減するという利点
がある。しかし、欠点としてデータキャッシュと主メモ
リが常には同一ではないという点がある。
【0005】プロセッサ、マイクロプロセッサ、あるい
は中央処理装置(CPU) からキャッシュへの書き込み動作
は読み取り動作より低速である傾向がある。書き込み動
作を行うために記憶指令が与えられる。記憶指令は二つ
のステップからなる。記憶指令では、まずヒットがある
かどうかを見るためのチェックが行われなければならな
い。ヒットとは記憶すべきデータがキャッシュ内に記憶
位置を有するときをいう。キャッシュは常に主メモリほ
ど多くの記憶位置を保有することができないため、記憶
すべきデータがそのときキャッシュに無い場合がある。
チェックが行われ、ヒットした後、データがキャッシュ
に書き込まれる。この多段階の記憶過程には通常プロセ
ッサの二つまたはそれ以上のクロックサイクルを要す
る。一方、読み取りあるいはロード動作は通常一つのク
ロックサイクルを要するのみである。典型的な状況で
は、記憶動作を行うのに要する時間はロード動作を行う
のに要する時間より数倍長い。したがって、従来クロッ
クサイクルを長くすることによって機械の基本サイクル
を増大させて記憶時間を延ばすか、さもなければ記憶動
作は、記憶動作が完了する前に、キャッシュを使用しな
ければならない次の命令に対して( パイプラインを止め
る) インタロックをかけなければならなかった。これら
はいずれにしても性能を低下させる。
は中央処理装置(CPU) からキャッシュへの書き込み動作
は読み取り動作より低速である傾向がある。書き込み動
作を行うために記憶指令が与えられる。記憶指令は二つ
のステップからなる。記憶指令では、まずヒットがある
かどうかを見るためのチェックが行われなければならな
い。ヒットとは記憶すべきデータがキャッシュ内に記憶
位置を有するときをいう。キャッシュは常に主メモリほ
ど多くの記憶位置を保有することができないため、記憶
すべきデータがそのときキャッシュに無い場合がある。
チェックが行われ、ヒットした後、データがキャッシュ
に書き込まれる。この多段階の記憶過程には通常プロセ
ッサの二つまたはそれ以上のクロックサイクルを要す
る。一方、読み取りあるいはロード動作は通常一つのク
ロックサイクルを要するのみである。典型的な状況で
は、記憶動作を行うのに要する時間はロード動作を行う
のに要する時間より数倍長い。したがって、従来クロッ
クサイクルを長くすることによって機械の基本サイクル
を増大させて記憶時間を延ばすか、さもなければ記憶動
作は、記憶動作が完了する前に、キャッシュを使用しな
ければならない次の命令に対して( パイプラインを止め
る) インタロックをかけなければならなかった。これら
はいずれにしても性能を低下させる。
【0006】
【発明の目的】従って本発明の目的は、データキャッシ
ュバッファを設けて書き込み(ストア)動作を高速化
し、前記欠点を解消することにある。
ュバッファを設けて書き込み(ストア)動作を高速化
し、前記欠点を解消することにある。
【0007】
【発明の概要】この発明は、情報を受け取る入力と情報
を送出する出力を有し、指令を実行しデータに演算を処
す処理手段と、この処理手段の出力に接続され、処理手
段から情報を受け取りその情報を記憶するための入力と
出力とを有するバッファ手段、およびバッファ手段の出
力に接続され、バッファ手段からの情報を受け取りその
情報を記憶するためのデータキャッシュ手段とからなる
コンピュータ用のデータキャッシュバッファを提供する
ことによって従来技術の限界を克服するものである。
を送出する出力を有し、指令を実行しデータに演算を処
す処理手段と、この処理手段の出力に接続され、処理手
段から情報を受け取りその情報を記憶するための入力と
出力とを有するバッファ手段、およびバッファ手段の出
力に接続され、バッファ手段からの情報を受け取りその
情報を記憶するためのデータキャッシュ手段とからなる
コンピュータ用のデータキャッシュバッファを提供する
ことによって従来技術の限界を克服するものである。
【0008】データキャッシュ記憶バッファは適応性が
高く、直接マップされたセットアソシエイティブな、あ
るいは完全な連想型のキャッシュに適応することができ
る。また、実アドレスまたは仮想アドレスによってアク
セスされるキャッシュに適応できる。最後に、ライトバ
ックキャッシュまたはライトスルーキャッシュに適応す
ることができる。
高く、直接マップされたセットアソシエイティブな、あ
るいは完全な連想型のキャッシュに適応することができ
る。また、実アドレスまたは仮想アドレスによってアク
セスされるキャッシュに適応できる。最後に、ライトバ
ックキャッシュまたはライトスルーキャッシュに適応す
ることができる。
【0009】この発明により高い動作周波数が可能にな
り、記憶によって起こる性能の劣化を最小限にする。現
在の多くのプロセッサ(特にRISCプロセッサ)では動作
周波数はキャッシュの読み取りおよび書き込みの速度に
よって制限される。通常、キャッシュは市場で入手可能
な高速RAM を用いて実施される。データキャッシュは性
能の劣化を防ぐため、一つのサイクルでロードと記憶を
交互に完了することができなければならない。しかし、
市販のRAM ではキャッシュの読み取りを書き込みより速
く完了することができ、2種のアクセスが一つのサイク
ルで完了する場合、動作周波数は書き込みアクセスによ
って制限される。記憶(書き込み)をバッファすること
によって書き込みを完了するために一つ以上のサイクル
を用いることができ、動作周波数はより速い読み取りア
クセスによって制限されるため、より高くなる。第2の
利点は記憶による性能劣化の低減である。バッファによ
ってバッファが一杯になるまで損失なく記憶が実行され
る。バッファへのエントリー数を増やすことによって記
憶による劣化が低減される。この発明はプロセッサと主
メモリ間よりむしろ、CPU とそのキャッシュとの間のバ
ッファ記憶に用いられる。これによって、記憶による性
能の劣化の低減に加えてプロセッサを相当高い動作周波
数で動作させることができる。
り、記憶によって起こる性能の劣化を最小限にする。現
在の多くのプロセッサ(特にRISCプロセッサ)では動作
周波数はキャッシュの読み取りおよび書き込みの速度に
よって制限される。通常、キャッシュは市場で入手可能
な高速RAM を用いて実施される。データキャッシュは性
能の劣化を防ぐため、一つのサイクルでロードと記憶を
交互に完了することができなければならない。しかし、
市販のRAM ではキャッシュの読み取りを書き込みより速
く完了することができ、2種のアクセスが一つのサイク
ルで完了する場合、動作周波数は書き込みアクセスによ
って制限される。記憶(書き込み)をバッファすること
によって書き込みを完了するために一つ以上のサイクル
を用いることができ、動作周波数はより速い読み取りア
クセスによって制限されるため、より高くなる。第2の
利点は記憶による性能劣化の低減である。バッファによ
ってバッファが一杯になるまで損失なく記憶が実行され
る。バッファへのエントリー数を増やすことによって記
憶による劣化が低減される。この発明はプロセッサと主
メモリ間よりむしろ、CPU とそのキャッシュとの間のバ
ッファ記憶に用いられる。これによって、記憶による性
能の劣化の低減に加えてプロセッサを相当高い動作周波
数で動作させることができる。
【0010】
【発明の実施例】図3はプロセッサ10がデータキャッシ
ュ20を使用する方法を示す。プロセッサが主メモリ30か
らの情報を待つ時間を低減するため、データキャッシュ
はプロセッサが使用する可能性の最も高い情報を記憶す
るために設けられた。プロセッサはデータキャッシュか
らの情報を主メモリからの情報よりも速く読み取ること
ができ、したがってプロセッサは情報処理ステップ間で
長く待つことはない。通常、データキャッシュに記憶さ
れた情報は主メモリからの情報の部分集合である。この
部分集合は通常プロセッサが現在使用している情報を取
り囲むアドレスを有する情報群として選択される。たと
えば、プロセッサが現在C000000 のアドレスに記憶され
た情報を使用している場合、データキャッシュはアドレ
スB000000 からD000000 に記憶された情報を保有する。
この方法を取る理由は、プロセッサが続いて使用する情
報のアドレスはプロセッサが次に使用する情報のアドレ
スに近い可能性が高く、したがってそれをデータキャッ
シュに記憶することによってシステムバス40上を戻って
主メモリにアクセスすることなく速いアクセスが提供さ
れるからである。プロセッサはさらに情報を必要とする
とき、データキャッシュをチェックして、その情報のア
ドレスがデータキャッシュ内にあるかどうかを見る。そ
のアドレスが見つかった場合、そのアドレスに記憶され
た情報はプロセッサに読み取られるか、あるいはデータ
キャッシュに重ね書きされる。アドレスが見つからない
場合、プロセッサは12を介してシステムバス40に行き、
32を介して主メモリ30にアクセスし、プロセッサが必要
とする特定アドレスに記憶された情報を含む情報ブロッ
クを検索し、それを60を介してデータキャッシュ20に記
憶する。データキャッシュ20がライトスルーキャッシュ
である場合、プロセッサがキャッシュに書き込みをする
度にキャッシュは12、40および32を介して主メモリ30に
書き込みをする。これはキャッシュと主メモリへの同時
書き込みである。データキャッシュ20がライトバックキ
ャッシュである場合、アドレスがアドレス線50を介して
データキャッシュに発見されたとき、プロセッサはデー
タキャッシュにのみ書き込みを行い主メモリには行わな
い。プロセッサがデータキャッシュに記憶されていない
情報を必要とするとき、あるいはプロセッサに割り込む
ことなく主メモリにアクセスするのに都合のよい時間が
あるとき、主メモリは60、12、40および32を介してプロ
セッサを通じてデータキャッシュによって更新される。
この設計は一般に時間の節約になるが、欠点としてデー
タキャッシュが主メモリと同一ではないという点があ
る。一般に、プロセッサが常に最新情報にアクセスして
いるかぎり、これは問題ではない。
ュ20を使用する方法を示す。プロセッサが主メモリ30か
らの情報を待つ時間を低減するため、データキャッシュ
はプロセッサが使用する可能性の最も高い情報を記憶す
るために設けられた。プロセッサはデータキャッシュか
らの情報を主メモリからの情報よりも速く読み取ること
ができ、したがってプロセッサは情報処理ステップ間で
長く待つことはない。通常、データキャッシュに記憶さ
れた情報は主メモリからの情報の部分集合である。この
部分集合は通常プロセッサが現在使用している情報を取
り囲むアドレスを有する情報群として選択される。たと
えば、プロセッサが現在C000000 のアドレスに記憶され
た情報を使用している場合、データキャッシュはアドレ
スB000000 からD000000 に記憶された情報を保有する。
この方法を取る理由は、プロセッサが続いて使用する情
報のアドレスはプロセッサが次に使用する情報のアドレ
スに近い可能性が高く、したがってそれをデータキャッ
シュに記憶することによってシステムバス40上を戻って
主メモリにアクセスすることなく速いアクセスが提供さ
れるからである。プロセッサはさらに情報を必要とする
とき、データキャッシュをチェックして、その情報のア
ドレスがデータキャッシュ内にあるかどうかを見る。そ
のアドレスが見つかった場合、そのアドレスに記憶され
た情報はプロセッサに読み取られるか、あるいはデータ
キャッシュに重ね書きされる。アドレスが見つからない
場合、プロセッサは12を介してシステムバス40に行き、
32を介して主メモリ30にアクセスし、プロセッサが必要
とする特定アドレスに記憶された情報を含む情報ブロッ
クを検索し、それを60を介してデータキャッシュ20に記
憶する。データキャッシュ20がライトスルーキャッシュ
である場合、プロセッサがキャッシュに書き込みをする
度にキャッシュは12、40および32を介して主メモリ30に
書き込みをする。これはキャッシュと主メモリへの同時
書き込みである。データキャッシュ20がライトバックキ
ャッシュである場合、アドレスがアドレス線50を介して
データキャッシュに発見されたとき、プロセッサはデー
タキャッシュにのみ書き込みを行い主メモリには行わな
い。プロセッサがデータキャッシュに記憶されていない
情報を必要とするとき、あるいはプロセッサに割り込む
ことなく主メモリにアクセスするのに都合のよい時間が
あるとき、主メモリは60、12、40および32を介してプロ
セッサを通じてデータキャッシュによって更新される。
この設計は一般に時間の節約になるが、欠点としてデー
タキャッシュが主メモリと同一ではないという点があ
る。一般に、プロセッサが常に最新情報にアクセスして
いるかぎり、これは問題ではない。
【0011】図4は中央処理装置CPU 100 を用いたデー
タキャッシュ記憶バッファの基本構成要素を示す。実際
のアプリケーションではバッファの実施態様は様々であ
り、その選定はCPU とキャッシュの設計によって決ま
る。データキャッシュ記憶バッファの動作は次の通りで
ある。 1.CPU 100 が記憶命令を実行するとき、データキャッ
シュ112 はヒットをチェックするためにアクセスされ
る。キャッシュヒットが起こった場合、記憶データ110
、124 、114 とそのアドレス118 、120 、116 が記憶
バッファ128 に書き込まれるが、データキャッシュ112
は更新されない。このキャッシュのチェックとバッファ
の更新はロードに必要な同一時間に起こるため、余分な
時間を必要とせずまた性能が向上する。バッファ128 は
有限数のエントリーを保有することに注意する。バッフ
ァ128 が一杯のとき記憶が実行された場合、CPU 100 は
一つまたはそれ以上のエントリーを空けるために停止し
なければならない。キャッシュ誤りが起こった場合、CP
U は停止して誤りを処理する。この誤りは図3に示すよ
うに適当な情報ブロックを主メモリからデータキャッシ
ュに転送することによって処理される。
タキャッシュ記憶バッファの基本構成要素を示す。実際
のアプリケーションではバッファの実施態様は様々であ
り、その選定はCPU とキャッシュの設計によって決ま
る。データキャッシュ記憶バッファの動作は次の通りで
ある。 1.CPU 100 が記憶命令を実行するとき、データキャッ
シュ112 はヒットをチェックするためにアクセスされ
る。キャッシュヒットが起こった場合、記憶データ110
、124 、114 とそのアドレス118 、120 、116 が記憶
バッファ128 に書き込まれるが、データキャッシュ112
は更新されない。このキャッシュのチェックとバッファ
の更新はロードに必要な同一時間に起こるため、余分な
時間を必要とせずまた性能が向上する。バッファ128 は
有限数のエントリーを保有することに注意する。バッフ
ァ128 が一杯のとき記憶が実行された場合、CPU 100 は
一つまたはそれ以上のエントリーを空けるために停止し
なければならない。キャッシュ誤りが起こった場合、CP
U は停止して誤りを処理する。この誤りは図3に示すよ
うに適当な情報ブロックを主メモリからデータキャッシ
ュに転送することによって処理される。
【0012】2.ほとんどのアーキテクチャではCPU 命
令の多くはデータキャッシュにアクセスしない。この発
明では、CPU がこれらの非データキャッシュアクセス命
令を検出し、これらの命令の実行と並行して122 、126
を介して記憶バッファを空にする。バッファエントリー
を空けるには、CPU とキャッシュの設計によるがこのサ
イクルが一回またはそれ以上必要である。バッファまた
はデータキャッシュがアクセスされていない停止サイク
ル期間中にも空にすることができることに注意する。
令の多くはデータキャッシュにアクセスしない。この発
明では、CPU がこれらの非データキャッシュアクセス命
令を検出し、これらの命令の実行と並行して122 、126
を介して記憶バッファを空にする。バッファエントリー
を空けるには、CPU とキャッシュの設計によるがこのサ
イクルが一回またはそれ以上必要である。バッファまた
はデータキャッシュがアクセスされていない停止サイク
ル期間中にも空にすることができることに注意する。
【0013】3.記憶バッファ128 とデータキャッシュ
112 に同一のアドレスがある時があり得る。これはその
アドレスの情報がCPU によって記憶バッファ128 に最後
に書き込まれたものであることを意味する。記憶バッフ
ァが有効エントリーを含むとき、キャッシュのデータに
は無効なものがある。記憶バッファに有効情報があると
き、データキャッシュのそれに対応するデータは無効な
ものあるいは古いものである。ロード、記憶、およびキ
ャッシュ管理命令等のキッシュからのデータを用いる動
作はすべて118 、120 を介してアドレス記憶バッファ11
6 に問い合わせてそのデータのアドレスも記憶バッファ
にあるかどうかを判定しなければならず、それがある場
合には命令の要求するデータが126 、110 を介してデー
タ記憶バッファ114 から読み取られ、データキャッシュ
112 からは読み取られない。このようにロード命令が実
行されるとき、CPU は記憶バッファをチェックしてバッ
ファがアドレスされているデータを含んでいるかどうか
を判定しなければならない。これはロードのアドレスを
すべての有効な記憶バッファエントリーのアドレスと比
較することによって行われる。突き合わせがなされたと
き、CPU はデータキャッシュではなく記憶バッファから
のデータを使用しなければならない。これはロードによ
る性能の劣化がないようにロード動作に必要な時間とほ
ぼ同じ時間に起こらなければならない。同様に、バッフ
ァの内容もまた記憶動作についてチェックしなければな
らない。バッファが実行されている。記憶されるデータ
を含む場合、新しい記憶データがバッファ内の現在の記
憶データに取って替わらなければならない。
112 に同一のアドレスがある時があり得る。これはその
アドレスの情報がCPU によって記憶バッファ128 に最後
に書き込まれたものであることを意味する。記憶バッフ
ァが有効エントリーを含むとき、キャッシュのデータに
は無効なものがある。記憶バッファに有効情報があると
き、データキャッシュのそれに対応するデータは無効な
ものあるいは古いものである。ロード、記憶、およびキ
ャッシュ管理命令等のキッシュからのデータを用いる動
作はすべて118 、120 を介してアドレス記憶バッファ11
6 に問い合わせてそのデータのアドレスも記憶バッファ
にあるかどうかを判定しなければならず、それがある場
合には命令の要求するデータが126 、110 を介してデー
タ記憶バッファ114 から読み取られ、データキャッシュ
112 からは読み取られない。このようにロード命令が実
行されるとき、CPU は記憶バッファをチェックしてバッ
ファがアドレスされているデータを含んでいるかどうか
を判定しなければならない。これはロードのアドレスを
すべての有効な記憶バッファエントリーのアドレスと比
較することによって行われる。突き合わせがなされたと
き、CPU はデータキャッシュではなく記憶バッファから
のデータを使用しなければならない。これはロードによ
る性能の劣化がないようにロード動作に必要な時間とほ
ぼ同じ時間に起こらなければならない。同様に、バッフ
ァの内容もまた記憶動作についてチェックしなければな
らない。バッファが実行されている。記憶されるデータ
を含む場合、新しい記憶データがバッファ内の現在の記
憶データに取って替わらなければならない。
【0014】記憶バッファの設計は使用されるデータキ
ャッシュのタイプに左右される。しかし、記憶バッファ
はセットアソシエーティブなキャッシュ、完全連想型の
キャッシュ、および直接マップキャッシュ等を含む様々
なタイプのキャッシュに用いることができる。セットア
ソシエーティブなキャッシュはn単位のデータがあるア
ドレスに関連付けられる場合である。一般に、n=1、
2、あるいは4である。n=2であるとき、キャッシュ
は両方向セットアソシエーティブキャッシュと呼ばれ
る。直接キャッシュはn=1の場合であり、あるアドレ
スに対して1単位のデータが得られる。
ャッシュのタイプに左右される。しかし、記憶バッファ
はセットアソシエーティブなキャッシュ、完全連想型の
キャッシュ、および直接マップキャッシュ等を含む様々
なタイプのキャッシュに用いることができる。セットア
ソシエーティブなキャッシュはn単位のデータがあるア
ドレスに関連付けられる場合である。一般に、n=1、
2、あるいは4である。n=2であるとき、キャッシュ
は両方向セットアソシエーティブキャッシュと呼ばれ
る。直接キャッシュはn=1の場合であり、あるアドレ
スに対して1単位のデータが得られる。
【0015】図1に実施例を示す。記憶バッファはデー
タ組み合わせユニット300 、直前のエントリー302 、付
番5エントリー304 、制御回路306 からなる。この場
合、データキャッシュは倍長語の両方向セットアソシエ
ーティブキャッシュである。6エントリー(302、304)は
倍長語のデータ312 、倍長語のキャッシュアドレス308
およびアドレス比較器310 からなる。さらに、付番エン
トリーはまた群標識314、316 と有効ビット318 、320
を含む。組み合わせユニット300 は記憶すべき新しいデ
ータを前にキャッシュ内の目標位置にあった倍長語と組
み合わせる。これは実行ユニットが倍長語より小さいデ
ータ項目を含み得るからである。記憶は読み取り─修飾
─書き込み(リード・モディファイ・ライト)動作によ
って行われる。データは目標キャッシュ位置から読み取
られ、新しいデータが読み取られたデータを修飾するた
めに用いられ、その結果は322 を介してキャッシュRAM
324に書き込まれる。記憶バッファは記憶の読み取り─
修飾部分を動作の書き込み部分から時間的に分離するこ
とを可能にする。
タ組み合わせユニット300 、直前のエントリー302 、付
番5エントリー304 、制御回路306 からなる。この場
合、データキャッシュは倍長語の両方向セットアソシエ
ーティブキャッシュである。6エントリー(302、304)は
倍長語のデータ312 、倍長語のキャッシュアドレス308
およびアドレス比較器310 からなる。さらに、付番エン
トリーはまた群標識314、316 と有効ビット318 、320
を含む。組み合わせユニット300 は記憶すべき新しいデ
ータを前にキャッシュ内の目標位置にあった倍長語と組
み合わせる。これは実行ユニットが倍長語より小さいデ
ータ項目を含み得るからである。記憶は読み取り─修飾
─書き込み(リード・モディファイ・ライト)動作によ
って行われる。データは目標キャッシュ位置から読み取
られ、新しいデータが読み取られたデータを修飾するた
めに用いられ、その結果は322 を介してキャッシュRAM
324に書き込まれる。記憶バッファは記憶の読み取り─
修飾部分を動作の書き込み部分から時間的に分離するこ
とを可能にする。
【0016】この実施例では記憶バッファは326 を介し
たプロセッサパイプラインの一部である。パイプライン
は330 を介した新しいロードまたは332 を介した記憶が
各サイクル毎に開始し得るように設計される。記憶バッ
ファ128 はプロセッサパイプラインの二つの段に関係す
るが、実際には記憶を行うために3 つの状態を取る。第
1の状態は第1のパイプラインの段が実行するときに起
こり、次の二つの状態は第2のパイプラインの段が実行
するときに起こる。第1のサイクルの間、一つのアドレ
スが328 を介してキャッシュのRAM に発せられる。第2
のサイクルの間、要求されたデータがヒットとパリティ
エラー標識とともに返される。記憶動作のために、キャ
ッシュRAM 324 から返されたデータが記憶データと組み
合わされ( マージされ) 、記憶バッファの前のエントリ
ー302 に入力される。このアドレスはアドレス328 を介
して記憶バッファの前のエントリー302 として入力され
る。記憶の第2のサイクルの間、そのアドレスと群標識
とともに前のエントリーに記憶されたデータとアドレス
は付番エントリー304 に記憶される。アクセスがキャッ
シュ内でヒットし、トラップが起こらず、またパリティ
エラーが検出されない場合、このエントリーは確認され
る。さもなければ、このエントリーは無効のままであ
る。記憶バッファに記憶された有効データは、キャッシ
ュ内のそれに対応するデータが無効であることを暗示す
る。キャッシュ内のデータが無効である可能性があるた
め、キャッシュの各アクセスは記憶バッファに同時に問
い合わせて、データが記憶バッファにあるかどうかを判
定しなければならない。データが記憶バッファにあると
き、それはキャッシュからの無効データの代わりに用い
られなければならない。この場合、このデータは記憶バ
ッファからバイパス(334) されたと言われる。アドレス
比較310 はバイパスすべきかどうかを検出するのに用い
られる。アドレス線328 に沿ったキャッシュのアクセス
の度にキャッシュアドレスが比較器310 、さらにキャッ
シュ324 内のRAM アドレス336 にも送られる。その後こ
のアドレスは記憶バッファに記憶された6 つのアドレス
308 と比較される。番号の付いたエントリーについて
は、エントリーが有効であり、アクセスにヒットがあ
り、群標識がヒットを起こした群と一致し、かつエント
リー内のアドレスが現在のアドレスと一致するときこの
エントリーは一致する。前のエントリーは、前のエント
リーにヒットがあり、両方のアクセスに対する群が同一
であり、かつ前のエントリーが現在のアドレスと一致す
るとき、一致する。記憶バッファのエントリーとの一致
がある場合、そのエントリーからのデータはそれがキャ
ッシュのRAM から直接読み取られたものであるかのよう
に使用される。一致があるとき、一致信号がデータ312
に一致した特定の一致線338 に沿って送出される。デー
タ312 はバイパスデータ線334 に沿ってマルチプレクサ
Mux 340 に送られる。バイパスロード330 については、
CPU によって用いられたデータは342 を介してキャッシ
ュから来るのではなく、334 を介して記憶バッファから
来る。バイパスに記憶については、CPU の記憶データ33
2 と組み合わせるべきデータはMux 340 とバイパスデー
タ線334 を介して記憶バッファから来る。このバイパス
動作、および記憶バッファは一般にハードウエアで構成
され自動的に行われてきており、プログラムコードには
完全に不可視である。
たプロセッサパイプラインの一部である。パイプライン
は330 を介した新しいロードまたは332 を介した記憶が
各サイクル毎に開始し得るように設計される。記憶バッ
ファ128 はプロセッサパイプラインの二つの段に関係す
るが、実際には記憶を行うために3 つの状態を取る。第
1の状態は第1のパイプラインの段が実行するときに起
こり、次の二つの状態は第2のパイプラインの段が実行
するときに起こる。第1のサイクルの間、一つのアドレ
スが328 を介してキャッシュのRAM に発せられる。第2
のサイクルの間、要求されたデータがヒットとパリティ
エラー標識とともに返される。記憶動作のために、キャ
ッシュRAM 324 から返されたデータが記憶データと組み
合わされ( マージされ) 、記憶バッファの前のエントリ
ー302 に入力される。このアドレスはアドレス328 を介
して記憶バッファの前のエントリー302 として入力され
る。記憶の第2のサイクルの間、そのアドレスと群標識
とともに前のエントリーに記憶されたデータとアドレス
は付番エントリー304 に記憶される。アクセスがキャッ
シュ内でヒットし、トラップが起こらず、またパリティ
エラーが検出されない場合、このエントリーは確認され
る。さもなければ、このエントリーは無効のままであ
る。記憶バッファに記憶された有効データは、キャッシ
ュ内のそれに対応するデータが無効であることを暗示す
る。キャッシュ内のデータが無効である可能性があるた
め、キャッシュの各アクセスは記憶バッファに同時に問
い合わせて、データが記憶バッファにあるかどうかを判
定しなければならない。データが記憶バッファにあると
き、それはキャッシュからの無効データの代わりに用い
られなければならない。この場合、このデータは記憶バ
ッファからバイパス(334) されたと言われる。アドレス
比較310 はバイパスすべきかどうかを検出するのに用い
られる。アドレス線328 に沿ったキャッシュのアクセス
の度にキャッシュアドレスが比較器310 、さらにキャッ
シュ324 内のRAM アドレス336 にも送られる。その後こ
のアドレスは記憶バッファに記憶された6 つのアドレス
308 と比較される。番号の付いたエントリーについて
は、エントリーが有効であり、アクセスにヒットがあ
り、群標識がヒットを起こした群と一致し、かつエント
リー内のアドレスが現在のアドレスと一致するときこの
エントリーは一致する。前のエントリーは、前のエント
リーにヒットがあり、両方のアクセスに対する群が同一
であり、かつ前のエントリーが現在のアドレスと一致す
るとき、一致する。記憶バッファのエントリーとの一致
がある場合、そのエントリーからのデータはそれがキャ
ッシュのRAM から直接読み取られたものであるかのよう
に使用される。一致があるとき、一致信号がデータ312
に一致した特定の一致線338 に沿って送出される。デー
タ312 はバイパスデータ線334 に沿ってマルチプレクサ
Mux 340 に送られる。バイパスロード330 については、
CPU によって用いられたデータは342 を介してキャッシ
ュから来るのではなく、334 を介して記憶バッファから
来る。バイパスに記憶については、CPU の記憶データ33
2 と組み合わせるべきデータはMux 340 とバイパスデー
タ線334 を介して記憶バッファから来る。このバイパス
動作、および記憶バッファは一般にハードウエアで構成
され自動的に行われてきており、プログラムコードには
完全に不可視である。
【0017】読み取り─修飾─書き込み動作の書き込み
部分を行うためには、キャッシュの設計には二つのサイ
クルが必要になる。実行ユニットはデータキャッシュ32
4 をアクセスしない命令を検出する。番号の付いた記憶
バッファのエントリー304 の少なくとも一つは有効であ
り、かかる命令が検出され、書き込み動作が始まる。す
ぐ後に続く命令もキャッシュにアクセスしない場合、書
き込み動作が完了し、エントリーは記憶バッファから除
去される。さもなければ、書き込み動作は中止され、エ
ントリーはバッファに残る。この記憶バッファは優先待
ち行列を用いて次の更新動作に対してどの番号付きエン
トリーを用いるべきか、また次の書き込み動作にどのエ
ントリーを用いるべきかを判定する。記憶バッファに記
憶を行うのに用いられる第一の優先待ち行列は前のサイ
クルで無効であった最も低い番号のエントリーを指す。
記憶バッファから書き込み動作を介してエントリーを除
去するのに用いられる第2の優先待ち行列は前のサイク
ルで有効であった最も低い番号のエントリーを指す。記
憶バッファはフリーエントリーが無いかどうかを検出す
るロジックを含む。実行ユニットの制約から、記憶命令
の第1サイクルの後記憶バッファにこの記憶を受け入れ
る余裕が無い場合、パイプラインを凍結しなければなら
ない。記憶バッファが第1サイクルの後パイプラインを
凍結するためには、前の二つの命令からの記憶が記憶バ
ッファに入力される前に停止標識の信号を出さなければ
ならない。記憶バッファは5つのエントリーがすべて有
効である時、4つのエントリーのいずれも有効である
時、そして3つのエントリーのいずれも有効である時を
検出することによってそれが一杯になった時を判定す
る。さらに前の命令の前の命令が記憶である場合、それ
はバイパスが起こった場合、トラックを維持する。記憶
バッファが一杯であることを検出する目的のため、前の
命令が記憶でありバイパスが起こった場合、それは記憶
としてカウントされない。前の命令は同様な方法で処理
されるのが理想的であるが、そのバイパス状態はそれが
可能なほど早くはわからない。記憶バッファ制御306 は
次の場合に記憶バッファ128 が一杯であると考える。 −5つの付番エントリー304 がすべて有効である場合、
あるいは、 −4つの付番エントリー304 が有効であり、前の二つの
命令の1つが記憶であった場合、あるいは、 −3つの付番エントリー304 が有効であり、前の二つの
命令の両方が記憶であった場合 記憶バッファ制御306 が記憶バッファ128 が一杯であ
り、新しい記憶命令が開始されると考える場合、実行ユ
ニットは、キャッシュへのエントリーの書き込みができ
るように2サイクル停止するよう信号を受ける。
部分を行うためには、キャッシュの設計には二つのサイ
クルが必要になる。実行ユニットはデータキャッシュ32
4 をアクセスしない命令を検出する。番号の付いた記憶
バッファのエントリー304 の少なくとも一つは有効であ
り、かかる命令が検出され、書き込み動作が始まる。す
ぐ後に続く命令もキャッシュにアクセスしない場合、書
き込み動作が完了し、エントリーは記憶バッファから除
去される。さもなければ、書き込み動作は中止され、エ
ントリーはバッファに残る。この記憶バッファは優先待
ち行列を用いて次の更新動作に対してどの番号付きエン
トリーを用いるべきか、また次の書き込み動作にどのエ
ントリーを用いるべきかを判定する。記憶バッファに記
憶を行うのに用いられる第一の優先待ち行列は前のサイ
クルで無効であった最も低い番号のエントリーを指す。
記憶バッファから書き込み動作を介してエントリーを除
去するのに用いられる第2の優先待ち行列は前のサイク
ルで有効であった最も低い番号のエントリーを指す。記
憶バッファはフリーエントリーが無いかどうかを検出す
るロジックを含む。実行ユニットの制約から、記憶命令
の第1サイクルの後記憶バッファにこの記憶を受け入れ
る余裕が無い場合、パイプラインを凍結しなければなら
ない。記憶バッファが第1サイクルの後パイプラインを
凍結するためには、前の二つの命令からの記憶が記憶バ
ッファに入力される前に停止標識の信号を出さなければ
ならない。記憶バッファは5つのエントリーがすべて有
効である時、4つのエントリーのいずれも有効である
時、そして3つのエントリーのいずれも有効である時を
検出することによってそれが一杯になった時を判定す
る。さらに前の命令の前の命令が記憶である場合、それ
はバイパスが起こった場合、トラックを維持する。記憶
バッファが一杯であることを検出する目的のため、前の
命令が記憶でありバイパスが起こった場合、それは記憶
としてカウントされない。前の命令は同様な方法で処理
されるのが理想的であるが、そのバイパス状態はそれが
可能なほど早くはわからない。記憶バッファ制御306 は
次の場合に記憶バッファ128 が一杯であると考える。 −5つの付番エントリー304 がすべて有効である場合、
あるいは、 −4つの付番エントリー304 が有効であり、前の二つの
命令の1つが記憶であった場合、あるいは、 −3つの付番エントリー304 が有効であり、前の二つの
命令の両方が記憶であった場合 記憶バッファ制御306 が記憶バッファ128 が一杯であ
り、新しい記憶命令が開始されると考える場合、実行ユ
ニットは、キャッシュへのエントリーの書き込みができ
るように2サイクル停止するよう信号を受ける。
【0018】この特定の実施例では、記憶バッファ128
は、記憶バッファの要求と関係のない固有なシステム区
分要求から、2つの集積回路チップ上に物理的に配置さ
れる。1つのチップはアドレスとアドレス比較器を含
む。他のチップはデータを含む。いずれのチップも群標
識314 、316 および有効ビット318 、320 を追跡する。
異なるチップ上の記憶バッファのそれぞれの半分の間の
制御信号400 だけがどの命令がリードおよび記憶である
か、記憶データの大きさ、どの命令がキャッシュにアク
セスしないか、6つのアドレス比較器310 からの一致線
338 の標識であり、ヒット標識、群標識、パリティ標識
およびトラップ標識である。パリティ標識とトラップ標
識はいずれもキャッシュミスと同様に、進行中の記憶を
中止するために用いられる。両方のチップが各バッファ
エントリーに対する群標識を追跡する理由はいずれのチ
ップもエントリーに対する全アドレスの追跡をするため
である。アドレス比較はキャッシュアドレスについての
み行われ、全アドレスについては行われないため、ある
1つのアドレスに対して2つまでのエントリーが一致す
る可能性がある。これは、この実施例では、キャッシュ
内に二つの群があるためである。一致する実際のエント
リーはそれぞれの一致するエントリーの群を検討し、そ
れを現在のアクセスの群と比較することによって判定さ
れる。しかし、この発明は記憶バッファの各半分がそれ
ぞれの集積回路チップに載るように2分することには限
定されない。
は、記憶バッファの要求と関係のない固有なシステム区
分要求から、2つの集積回路チップ上に物理的に配置さ
れる。1つのチップはアドレスとアドレス比較器を含
む。他のチップはデータを含む。いずれのチップも群標
識314 、316 および有効ビット318 、320 を追跡する。
異なるチップ上の記憶バッファのそれぞれの半分の間の
制御信号400 だけがどの命令がリードおよび記憶である
か、記憶データの大きさ、どの命令がキャッシュにアク
セスしないか、6つのアドレス比較器310 からの一致線
338 の標識であり、ヒット標識、群標識、パリティ標識
およびトラップ標識である。パリティ標識とトラップ標
識はいずれもキャッシュミスと同様に、進行中の記憶を
中止するために用いられる。両方のチップが各バッファ
エントリーに対する群標識を追跡する理由はいずれのチ
ップもエントリーに対する全アドレスの追跡をするため
である。アドレス比較はキャッシュアドレスについての
み行われ、全アドレスについては行われないため、ある
1つのアドレスに対して2つまでのエントリーが一致す
る可能性がある。これは、この実施例では、キャッシュ
内に二つの群があるためである。一致する実際のエント
リーはそれぞれの一致するエントリーの群を検討し、そ
れを現在のアクセスの群と比較することによって判定さ
れる。しかし、この発明は記憶バッファの各半分がそれ
ぞれの集積回路チップに載るように2分することには限
定されない。
【0019】この実施例は単一ビットのキャッシュエラ
ーを検出、修正し、多重処理を可能にする。これらの特
徴は、記憶バッファによって可能とされている。図2は
記憶バッファの3つの起動に対して起こる事象系列を示
している。ここで2種類のアドレスに言及していること
に注意する。第1に、CPU がロードおよび記憶命令を実
行することによって発生するアドレスがある。第2に、
キャッシュを参照するために用いられるキャッシュアド
レスがある。一般にある1つのキャッシュアドレスは1
つ以上のCPU アドレスに対応しうる。キャッシュアドレ
スにはキャッシュ群が関係している。CPU アドレス群A
は現在どのキャッシュ群がアドレスA を含むかによって
判決される。CPU がCPU アドレスAへのロード指令406
を実行する場合、次のことが起こる。データキャッシュ
はそれがCPU のアドレスAにデータを含むかどうかをチ
ェックする。含んでいない場合、これはキャッシュミス
であり、見逃されたデータは主メモリから転送され、再
度ロードが試みられる。キャッシュがCPU アドレスAに
対するデータを含んでいない場合、6つの記憶バッファ
エントリーが、それらがCPU アドレスAに対するデータ
を含んでいるかを見るためにチェックされる(400) 。付
番記憶バッファエントリーは、それが有効と示され、そ
の群がCPU アドレスAの群と同じであり、またそのキャ
ッシュアドレスがCPU アドレスA のそれと一致する場合
にCPU アドレスAに対するデータを含む。前に実行され
た指令が記憶であり、前のエントリーの群がCPU アドレ
スAのそれと同じであり、前のエントリーのキャッシュ
アドレスがCPU アドレスのそれと一致する場合に、前の
記憶バッファエントリーはCPU アドレスAを含む。
ーを検出、修正し、多重処理を可能にする。これらの特
徴は、記憶バッファによって可能とされている。図2は
記憶バッファの3つの起動に対して起こる事象系列を示
している。ここで2種類のアドレスに言及していること
に注意する。第1に、CPU がロードおよび記憶命令を実
行することによって発生するアドレスがある。第2に、
キャッシュを参照するために用いられるキャッシュアド
レスがある。一般にある1つのキャッシュアドレスは1
つ以上のCPU アドレスに対応しうる。キャッシュアドレ
スにはキャッシュ群が関係している。CPU アドレス群A
は現在どのキャッシュ群がアドレスA を含むかによって
判決される。CPU がCPU アドレスAへのロード指令406
を実行する場合、次のことが起こる。データキャッシュ
はそれがCPU のアドレスAにデータを含むかどうかをチ
ェックする。含んでいない場合、これはキャッシュミス
であり、見逃されたデータは主メモリから転送され、再
度ロードが試みられる。キャッシュがCPU アドレスAに
対するデータを含んでいない場合、6つの記憶バッファ
エントリーが、それらがCPU アドレスAに対するデータ
を含んでいるかを見るためにチェックされる(400) 。付
番記憶バッファエントリーは、それが有効と示され、そ
の群がCPU アドレスAの群と同じであり、またそのキャ
ッシュアドレスがCPU アドレスA のそれと一致する場合
にCPU アドレスAに対するデータを含む。前に実行され
た指令が記憶であり、前のエントリーの群がCPU アドレ
スAのそれと同じであり、前のエントリーのキャッシュ
アドレスがCPU アドレスのそれと一致する場合に、前の
記憶バッファエントリーはCPU アドレスAを含む。
【0020】ロードについては次の四つのケースがあ
る。 1 : CPU アドレスAを含むエントリーが無い。この
場合、データは適切なキャッシュ群から取られ、CPU に
送られる。 2 : 前のエントリーがCPU アドレスAを含む。この
場合、データは前のエントリーからバイパスされ、CPU
に送られる。3 : 付番のエントリーがCPU アドレス
Aを含む。この場合、データはそのエ ントリー
からバイパスされ、CPU に送られる。 4 : 前のエントリーと付番のエントリーの両方がCP
U アドレスAを含む。この場合、データは前のエントリ
ーからバイパスされ、CPU に送られる。これは前のエン
トリーの内容が付番のエントリーの内容より新しいため
である。ロードは記憶バッファに対して他の効果を持た
ない。
る。 1 : CPU アドレスAを含むエントリーが無い。この
場合、データは適切なキャッシュ群から取られ、CPU に
送られる。 2 : 前のエントリーがCPU アドレスAを含む。この
場合、データは前のエントリーからバイパスされ、CPU
に送られる。3 : 付番のエントリーがCPU アドレス
Aを含む。この場合、データはそのエ ントリー
からバイパスされ、CPU に送られる。 4 : 前のエントリーと付番のエントリーの両方がCP
U アドレスAを含む。この場合、データは前のエントリ
ーからバイパスされ、CPU に送られる。これは前のエン
トリーの内容が付番のエントリーの内容より新しいため
である。ロードは記憶バッファに対して他の効果を持た
ない。
【0021】CPU がCPU アドレスBへのロード指令408
を実行する場合、次のことが起こる。データキャッシュ
はそれがCPU のアドレスB にデータを含むかどうかをチ
ェックする。含んでいない場合、これはキャッシュミス
であり、見逃されたデータは主メモリーから転送され、
再度ロードが試みられる。キャッシュがCPU アドレスB
に対するデータを含んでいない場合、6つの記憶バッフ
ァエントリーが、それらがCPU アドレスBに対するデー
タを含んでいるかを見るためにチェックされる(402) 。
番号の付いた記憶バッファエントリーは、それが有効と
示され、その群がCPU アドレスBの群と同じであり、ま
たそのキャッシュアドレスがCPU アドレスBのそれと一
致する場合にCPU アドレスBに対するデータを含む。前
に実行された指令が記憶であり、前のエントリーの群が
CPU アドレスBのそれと同じであり、前のエントリーの
キャッシュアドレスがCPU アドレスのそれと一致する場
合に、前の記憶バッファエントリーはCPU アドレスB を
含む。ロードについては次の四つのケースがある。 1 : CPU アドレスBを含むエントリーが無い。この
場合、データは適切なキャッシュ群から取られ、以下に
説明する組み合わせ動作への入力として用いられる。 2 : 前のエントリーがCPU アドレスBを含む。この
場合、データは前のエントリーからバイパスされ、組み
合わせ動作への入力として用いられる。 3 : 付番のエントリーがCPU アドレスBを含む。こ
の場合、データはそのエントリーからバイパスされ、組
み合わせ動作への入力として用いられる。4 : 前の
エントリーと付番エントリーの両方がCPU アドレスBを
含む。この 場合、データは前のアドレスからバ
イパスされ、組み合わせ動作への入 力として用
いられる。 これらの各ケースにおいて、アドレスBの最新データは
直接キャッシュから、あるいは記憶バッファエントリー
から得られる。記憶における次のステップは、このデー
タをCPU からの記憶すべきデータと組み合わせることで
ある。この組み合わせ動作の結果はアドレスBの最新デ
ータとなる。このデータはその群とキャッシュアドレス
とともに、図1で示されるCPU が記憶データを供給する
サイクルで記憶バッファの前のエントリーに入れられ
る。また、このとき、無効の付番記憶バッファエントリ
ーの一つが選択される。次のサイクルで、データ、群、
およびキャッシュアドレスが前のエントリーから選択さ
れた付番エントリーに複写される。それは有効として示
される。記憶が実行されるとき常に少なくとも1つの有
効エントリーがある。それは記憶バッファが一杯である
場合、CPU が停止し、記憶の実行前にエントリーを書き
出すためである。(次に説明する)。
を実行する場合、次のことが起こる。データキャッシュ
はそれがCPU のアドレスB にデータを含むかどうかをチ
ェックする。含んでいない場合、これはキャッシュミス
であり、見逃されたデータは主メモリーから転送され、
再度ロードが試みられる。キャッシュがCPU アドレスB
に対するデータを含んでいない場合、6つの記憶バッフ
ァエントリーが、それらがCPU アドレスBに対するデー
タを含んでいるかを見るためにチェックされる(402) 。
番号の付いた記憶バッファエントリーは、それが有効と
示され、その群がCPU アドレスBの群と同じであり、ま
たそのキャッシュアドレスがCPU アドレスBのそれと一
致する場合にCPU アドレスBに対するデータを含む。前
に実行された指令が記憶であり、前のエントリーの群が
CPU アドレスBのそれと同じであり、前のエントリーの
キャッシュアドレスがCPU アドレスのそれと一致する場
合に、前の記憶バッファエントリーはCPU アドレスB を
含む。ロードについては次の四つのケースがある。 1 : CPU アドレスBを含むエントリーが無い。この
場合、データは適切なキャッシュ群から取られ、以下に
説明する組み合わせ動作への入力として用いられる。 2 : 前のエントリーがCPU アドレスBを含む。この
場合、データは前のエントリーからバイパスされ、組み
合わせ動作への入力として用いられる。 3 : 付番のエントリーがCPU アドレスBを含む。こ
の場合、データはそのエントリーからバイパスされ、組
み合わせ動作への入力として用いられる。4 : 前の
エントリーと付番エントリーの両方がCPU アドレスBを
含む。この 場合、データは前のアドレスからバ
イパスされ、組み合わせ動作への入 力として用
いられる。 これらの各ケースにおいて、アドレスBの最新データは
直接キャッシュから、あるいは記憶バッファエントリー
から得られる。記憶における次のステップは、このデー
タをCPU からの記憶すべきデータと組み合わせることで
ある。この組み合わせ動作の結果はアドレスBの最新デ
ータとなる。このデータはその群とキャッシュアドレス
とともに、図1で示されるCPU が記憶データを供給する
サイクルで記憶バッファの前のエントリーに入れられ
る。また、このとき、無効の付番記憶バッファエントリ
ーの一つが選択される。次のサイクルで、データ、群、
およびキャッシュアドレスが前のエントリーから選択さ
れた付番エントリーに複写される。それは有効として示
される。記憶が実行されるとき常に少なくとも1つの有
効エントリーがある。それは記憶バッファが一杯である
場合、CPU が停止し、記憶の実行前にエントリーを書き
出すためである。(次に説明する)。
【0022】CPU が二つの連続するサイクル中に(ロー
ドまたは記憶指令を実行することによって)キャッシュ
にアクセスしない時は常に、記憶バッファエントリーは
少なくとも、一つが有効であれば、(410) キャッシュに
書き込まれる。CPU はNDCA(非データキャッシュアドレ
ス) と呼ばれる信号を発生する。図1 はそれがキャッシ
ュを必要とする指令を実行していないことを示す。この
信号が二つの連続する状態の間真である場合、これらの
2つの状態の直前に選択された有効エントリーがキャッ
シュに書き込まれ、そのエントリーは無効と示される(4
12) 。番号の付いた記憶バッファだけがこのようにして
書き込み可能である。NDCA線だけが1サイクルの間真で
ある場合、" バッファ書き込み中止" のケースが起こ
る。この場合、記憶バッファは変更されず、キャッシュ
は更新されない。
ドまたは記憶指令を実行することによって)キャッシュ
にアクセスしない時は常に、記憶バッファエントリーは
少なくとも、一つが有効であれば、(410) キャッシュに
書き込まれる。CPU はNDCA(非データキャッシュアドレ
ス) と呼ばれる信号を発生する。図1 はそれがキャッシ
ュを必要とする指令を実行していないことを示す。この
信号が二つの連続する状態の間真である場合、これらの
2つの状態の直前に選択された有効エントリーがキャッ
シュに書き込まれ、そのエントリーは無効と示される(4
12) 。番号の付いた記憶バッファだけがこのようにして
書き込み可能である。NDCA線だけが1サイクルの間真で
ある場合、" バッファ書き込み中止" のケースが起こ
る。この場合、記憶バッファは変更されず、キャッシュ
は更新されない。
【0023】
【発明の効果】以上詳述したように本発明の実施により
データのストア(記憶)がデータのロードと等価な時間
で行なえる。そのためにデータのロードが低速になるこ
ともないからデータのロード/ストアの時間差が実質的
になくなり、ひいてはコンピュータシステムの高速化が
実現され、従って本発明は実用に供して有益である。
データのストア(記憶)がデータのロードと等価な時間
で行なえる。そのためにデータのロードが低速になるこ
ともないからデータのロード/ストアの時間差が実質的
になくなり、ひいてはコンピュータシステムの高速化が
実現され、従って本発明は実用に供して有益である。
【図1】本発明の一実施例を示すための図である。
【図2】クロッサイクルに対してパッファの活動を示し
た図である。
た図である。
【図3】データキャッシュを使った処理装置を示す図で
ある。
ある。
【図4】基本的なデータキャッシュ記憶バッファの構成
を示す図である。
を示す図である。
Claims (3)
- 【請求項1】後記(イ)乃至(ハ)より成るコンピュー
タ用データキャッシュバッファ。 (イ)情報を受信するための入力と情報を送信するため
の出力とを有し、指令(コマンド)実行とデータへの演
算を実行する処理手段(100)。 (ロ)前記処理手段から情報を受信し記憶するため、前
記処理手段に接続された入力と、出力とを有するバッフ
ァ手段(128)。 (ハ)前記バッファ手段から情報を受信し該情報を記憶
するため前記バッファ手段に接続された入力を有するデ
ータキャッシュ手段(112)。 - 【請求項2】後記(イ)乃至(ハ)から成るデータキャ
ッシュバッファ。 (イ)出力を有し、情報のロード及びストア(記憶)を
実行するための処理装置(100)。 (ロ)前記処理装置(100)の出力(118)に接続
された入力を有し、前記処理装置からの情報を受信し、
該情報をストアし、かつ出力(122、126)を有す
るバッファ(128)。 (ハ)前記バッファの前記出力に接続された入力を有
し、前記バッファからの前記情報を受信するデータキャ
ッシュ(112)。 - 【請求項3】処理装置(100)、データキャッシュ
(112)、システムバス(40)、バッファ(12
8)とを有するシステムにおいて、ロード動作実行に要
する時間と等価な時間でストア(記憶)動作を実行する
ための後記(イ)乃至(ハ)のステップから成る記憶方
法。 (イ)処理装置(110)から前記バッファ(128)
へ情報を送信するステップ。 (ロ)データキャッシュ(20)に前記バッファの情報
(410)を書き込むステップ。 (ハ)後続する所定時間に前記データキャッシュ(2
0)の情報を主記憶装置(30)へ書き込むステップ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US47978290A | 1990-02-13 | 1990-02-13 | |
US479782 | 1990-02-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0756808A true JPH0756808A (ja) | 1995-03-03 |
Family
ID=23905410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3041187A Pending JPH0756808A (ja) | 1990-02-13 | 1991-02-13 | データキャッシュバッファ及び記憶方法 |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP0442690A3 (ja) |
JP (1) | JPH0756808A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2008155802A1 (ja) * | 2007-06-20 | 2010-08-26 | 富士通株式会社 | キャッシュメモリ制御装置、およびパイプライン制御方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6219773B1 (en) | 1993-10-18 | 2001-04-17 | Via-Cyrix, Inc. | System and method of retiring misaligned write operands from a write buffer |
US5740398A (en) * | 1993-10-18 | 1998-04-14 | Cyrix Corporation | Program order sequencing of data in a microprocessor with write buffer |
US5584009A (en) * | 1993-10-18 | 1996-12-10 | Cyrix Corporation | System and method of retiring store data from a write buffer |
US5615402A (en) * | 1993-10-18 | 1997-03-25 | Cyrix Corporation | Unified write buffer having information identifying whether the address belongs to a first write operand or a second write operand having an extra wide latch |
EP0651331B1 (en) * | 1993-10-18 | 2002-01-09 | National Semiconductor Corporation | A write buffer for a superpipelined, superscalar microprocessor |
DE69530720T2 (de) * | 1994-03-09 | 2003-11-27 | Sun Microsystems, Inc. | Verzögertes Cachespeicherschreiben eines Speicherungsbefehls |
US9454486B2 (en) | 2013-07-12 | 2016-09-27 | Apple Inc. | Cache pre-fetch merge in pending request buffer |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58133696A (ja) * | 1982-02-03 | 1983-08-09 | Hitachi Ltd | 記憶制御方式 |
JPS6267649A (ja) * | 1985-09-19 | 1987-03-27 | Nec Corp | キヤツシユメモリ制御装置におけるストア処理方式 |
US4755936A (en) * | 1986-01-29 | 1988-07-05 | Digital Equipment Corporation | Apparatus and method for providing a cache memory unit with a write operation utilizing two system clock cycles |
-
1991
- 1991-02-12 EP EP19910301097 patent/EP0442690A3/en not_active Withdrawn
- 1991-02-13 JP JP3041187A patent/JPH0756808A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2008155802A1 (ja) * | 2007-06-20 | 2010-08-26 | 富士通株式会社 | キャッシュメモリ制御装置、およびパイプライン制御方法 |
JP4750889B2 (ja) * | 2007-06-20 | 2011-08-17 | 富士通株式会社 | キャッシュメモリ制御装置、およびパイプライン制御方法 |
US8327079B2 (en) | 2007-06-20 | 2012-12-04 | Fujitsu Limited | Cache memory control device and pipeline control method |
Also Published As
Publication number | Publication date |
---|---|
EP0442690A2 (en) | 1991-08-21 |
EP0442690A3 (en) | 1992-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11803486B2 (en) | Write merging on stores with different privilege levels | |
US5809530A (en) | Method and apparatus for processing multiple cache misses using reload folding and store merging | |
JP2554449B2 (ja) | キャッシュ・メモリを有するデータ処理システム | |
US6226722B1 (en) | Integrated level two cache and controller with multiple ports, L1 bypass and concurrent accessing | |
US7240159B2 (en) | Data processor having cache memory | |
EP0856798B1 (en) | A cache system | |
US20030023814A1 (en) | Method and system for detecting and resolving virtual address synonyms in a two-level cache hierarchy | |
JPH08272682A (ja) | ロード・バッファを備えたロード/ストア・ユニット内にて切り離されたタグ及びデータ・アレイへのアクセス方法及びそのアレイを有する装置 | |
JP2735781B2 (ja) | キャッシュ・メモリ制御システム及び方法 | |
JPH0321934B2 (ja) | ||
US6332179B1 (en) | Allocation for back-to-back misses in a directory based cache | |
US6463514B1 (en) | Method to arbitrate for a cache block | |
JP2001290702A (ja) | 記憶装置 | |
JPH0756808A (ja) | データキャッシュバッファ及び記憶方法 | |
US6839806B2 (en) | Cache system with a cache tag memory and a cache tag buffer | |
JP2552704B2 (ja) | データ処理装置 | |
JPH09179781A (ja) | カラム書き込み確認機能を持つキャッシュ | |
JPH08194644A (ja) | キャッシュメモリ装置 | |
JPH0719229B2 (ja) | 記憶キー制御方式 | |
JPH0683707A (ja) | キャッシュメモリ制御装置 |