JPH05204756A - デジタルプロセッサ - Google Patents

デジタルプロセッサ

Info

Publication number
JPH05204756A
JPH05204756A JP4298234A JP29823492A JPH05204756A JP H05204756 A JPH05204756 A JP H05204756A JP 4298234 A JP4298234 A JP 4298234A JP 29823492 A JP29823492 A JP 29823492A JP H05204756 A JPH05204756 A JP H05204756A
Authority
JP
Japan
Prior art keywords
data
processor
tag
cache
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
Application number
JP4298234A
Other languages
English (en)
Inventor
Michael Kagan
マイケル・カガン
David Perlmutter
デビッド・パールムッター
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JPH05204756A publication Critical patent/JPH05204756A/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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache

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)【要約】 【目的】 データを生成された順序で確実に主メモリに
書込むメカニズムを提供する。 【構成】 物理タグと仮想タグの双方を記憶するマイク
ロプロセッサの改良されたキャッシュメモリ。仮想タグ
についてヒットが見出されない場合には、変換装置の出
力を使用して物理タグを検査する。これは、1つの物理
アドレスがいくつかの物理アドレスと関連していること
がありうる文脈変更に関して特に有用である。さらに、
物理アドレスタグ記憶部はデュアルポート形アレイであ
るので、処理装置をサーブしつつ外部バスアドレスのス
ヌーピングを実行することができる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はキャッシュメモリの分野
に関し、特に、多重プロセッサ環境において動作するキ
ャッシュメモリに関する。
【0002】
【従来の技術】本発明は、RISCマイクロプロセッサ
で実現されるキャッシュメモリ及びその関連論理におけ
るいくつかの改良を説明する。このRISCプロセッサ
は市販のIntel 860プロセッサの改良型であ
る。改良されたキャッシュメモリ及び関連論理は、共用
バスを採用する多重プロセッサ環境に適用可能である。
Intel 860マイクロプロセッサは既に市販され
ているが、1990年にOsborne McGraw
−Hillより刊行されたNeal Margulis
の「i860 Microprocessor Arc
hitecture」などの数多くの印刷物にも記載さ
れている。
【0003】キャッシュメモリを有するIntel 8
60マイクロプロセッサやその他のマイクロプロセッサ
は処理装置から得た仮想アドレスによってそれらのメモ
リをアクセスする。仮想アドレスは変換装置により物理
アドレスへ変換され、ミスが起こると、外部メモリサイ
クルが開始され、物理アドレスを使用して主メモリをア
クセスする。通常、仮想アドレスから物理アドレスへの
変換を待たずにアクセスを実行できるので、キャッシュ
メモリを仮想アドレスによってアクセスするほうが望ま
しい。多重プロセッサ環境、あるいは多重タスク環境の
下では、いくつかの仮想アドレスを単一の物理アドレス
にマッピングすることがある。従来の技術ではこれによ
って克服できないほどの問題が起こることはないが、こ
の環境で従来の仮想アドレスに基づくキャッシュメモリ
を使用する場合には不利益がある。以下の説明からわか
るように、本発明は多重プロセッサ/多重タスク環境に
より適するキャッシュメモリを提供する。
【0004】キャッシュメモリを編成するときには、行
サイズ、タグフィールドのサイズ、オフセットフィール
ドのサイズなどについていくつかの妥協点を見出す。多
くの場合、それらの妥協を行った結果、1行はデータバ
スよりかなり広い大きさになり、通常は1つのキャッシ
ュ行がいくつかの命令を含む。たとえば、Intel8
60マイクロプロセッサの場合、キャッシュ行は32バ
イト、データバスは8バイト、そして、命令は4バイト
である。命令取り出しについてミスが起こると、キャッ
シュメモリから処理装置へ命令を供給する前に、キャッ
シュメモリが完全な1行分の命令(8つの命令)を受信
するまで処理装置は待機しなければならない。以下の説
明からわかるように、本発明はこの待機時間を0にする
ラインバッファを提供する。
【0005】特に多重プロセッサ環境においてキャッシ
ュコヒーレンシーを提供するための周知のプロトコルは
数多くある。キャッシュメモリを含むプロセッサ(たと
えば、Intel 486)の中には、ライトスループ
ロトコルを使用するものがある。キャッシュメモリに対
して書込みが起こると、書込みサイクルは主メモリへ
「ライトスルー」する。従って、主メモリは常に現在デ
ータの真のコピーを有していることになる。(このプロ
トコルの場合、キャッシュメモリはデータを無効又はこ
の特許の用語に従った「共用」のいずれかとして分類す
る。)他のプロセッサでは、Intel 860で使用
しているライトバックプロトコルのような遅延書込みプ
ロトコルを採用する。その場合、キャッシュメモリのデ
ータを無効、排他又は修正済(ダーティ)として分類す
る。いくつかのシステムで採用されている遅延書込みの
もう1つのプロトコルはライトワンスプロトコルであ
る。このプロトコルの場合には、キャッシュメモリのデ
ータを無効、排他、修正済又は共用のいずれかとして分
類する。これらのプロトコルとその変形は、米国特許第
4,755,930号に記載されている。
【0006】以下の説明からわかるように、本発明によ
れば、ユーザーは上記の3つのプロトコルから1つを選
択することができる。本発明を採用するプロセッサは他
のプロセッサとの相互接続のためのいくつかの端子(ピ
ン)を含み、それにより、プロセッサの外部の最小限の
回路を使用して多重プロセッサ環境の中でキャッシュコ
ヒーレンシーを実現することができるのである。特に共
用バスを介してメモリをアクセスする場合には、主メモ
リに書込まれるデータの順序を維持することが問題にな
ることは多い。「書込み内容」を都合の良いときに主メ
モリに書込めるように、書込み内容を記憶するためのバ
ッファを使用することもある。それに伴う問題は、デー
タを生成された順序で確実に主メモリに書込むために何
らかのメカニズムをもうけなければならないという点で
ある。
【0007】
【発明が解決しようとする課題】以下の説明からわかる
ように、本発明は、いくつかの条件に基づいて書込みの
強い順序付けと、弱い順序付けの双方を可能にするとい
う点で適応性をもつメカニズムを提供する。
【0008】
【課題を解決するための手段】処理装置と、キャッシュ
メモリと、変換装置とを有するデジタルプロセッサにお
ける改良を説明する。キャッシュメモリは、プロセッサ
からキャッシュメモリに結合される仮想アドレスタグフ
ィールドを記憶する記憶部を有する。それらの仮想アド
レスは変換装置にも結合し、物理アドレスに変換され
る。キャッシュメモリは、物理アドレスのタグフィール
ドを記憶する物理アドレスタグ記憶部を含む。変換装置
からのアドレスと、外部アドレスバスからのアドレスと
は(「スヌーピング」のために)この記憶部に結合す
る。仮想アドレスについてミスが起こった場合、このア
ドレスを変換し、対応する物理アドレスタグフィールド
を物理アドレスタグ記憶部に記憶されているタグフィー
ルドと比較する。そこで一致が起これば、関連するデー
タ(有効である場合)を提供し、仮想アドレスタグ記憶
部を仮想アドレスタグフィールドによって更新する。一
致が見出されなければ、通常のメモリサイクルで物理ア
ドレスを使用して主メモリをアクセスする。本発明の他
の面は以下の本発明の詳細な説明から明白になるであろ
う。
【0009】
【実施例】改良されたキャッシュメモリとそれに関連す
る論理を説明する。以下の説明中、本発明を完全に理解
させるために、特定のビット数などの特定の詳細な事項
を数多く挙げるが、そのような特定の詳細な事項を含ま
ずとも本発明を実施しうることは当業者には自明であろ
う。また、場合によっては、本発明を無用にあいまいに
しないために周知の回路をブロック線図の形態で示すこ
とがある。この出願を通して使用する用語「データ」は
2進情報を指示している。場合によっては、「データ」
を幾分か総称的な意味で使用しており、たとえば、メモ
リに記憶されている定数、命令又は無数の他のフィール
ドを含むこともある。本発明の好ましい実施例では、命
令(データ)は非命令データとは別個にキャッシュメモ
リに記憶される。本発明のキャッシュメモリの現時点で
好ましい実施例はシングルチップ、64ビットRISC
マイクロプロセッサに組込まれている。プロセッサは周
知の相補形金属酸化物半導体(CMOS)技術又は他の
技術を採用して実現されれば良い。プロセッサを製造す
るために使用するこの特定の技術は本発明には重大な意
味をもっていない。さらに、本発明はマイクロプロセッ
サと共に使用するのに適するキャッシュメモリを目指し
ている。以下の説明の大部分において、本発明を指向す
るプロセッサの部分のみを説明する。〔従来の技術〕の
項で述べた通り、本発明のキャッシュメモリを組込んだ
プロセッサは改良形のIntel 860である。本発
明のキャッシュメモリを組込んだプロセッサにおいて
は、この市販のRISCプロセッサの入力と出力の多く
を使用する。前述の通り、Intel 860を説明す
るすぐれた参考文献は、1990年にOsborne
McGraw−Hillより刊行されているNeal
Margulisの「i860 Microproce
ssor Architecture」である。
【0010】本発明のキャッシュメモリはデータ(非命
令)キャッシュと、命令キャッシュとに分割される。共
に32バイトの行幅をもつ四重セットアソシエイティブ
である。共に16KBのデータを記憶する。各タグフィ
ールドは20ビットであり、エントリ番号を複数のデー
タ記憶バンクとして形成するために7ビットのオフセッ
トフィールドを使用する。以下に説明するが、非命令デ
ータ記憶装置の場合、物理タグと仮想タグの双方を記憶
する。物理タグは、外部バスのアドレスの検査(スヌー
ピング)と、変換装置からの物理アドレスの検査とを可
能にするデュアルポート形記憶装置アレイに記憶され
る。このアレイや、付随する回路で使用され、1サイク
ルの読取り/修正/書込みサイクルを可能にするセル
は、1989年12月29日出願の同時係属出願第45
8,985号、名称「Dual Port Stati
c Memory with One Cycle R
ead−Modify−Write Operatio
n」に記載されている。尚、この出願は本発明と同一の
譲受人に譲渡されている。キャッシュメモリの記憶装置
の残る部分は、マスター・スレーブセルを使用するライ
ンバッファを除いて、普通の6トランジスタセル(静的
フリップフロップセル)によって実現される。仮想アド
レスと物理アドレスは、共に、Intel 860の場
合と同様にそれぞれ32個のビットから構成される。
【0011】仮想タグ及び物理タグ記憶装置の全体的ア
ーキテクチャと、その動作 図1を参照すると、処理装置15が示されている。この
処理装置はIntel860のような従来のプロセッサ
に見られる処理装置と同じであっても良い。この処理装
置は双方向データバスと、仮想アドレスバスとに結合し
ている。データバスは外部データバス26に結合し、仮
想アドレスはバスを介してキャッシュメモリと、変換装
置20とに結合する。アドレスのタグフィールドは仮想
アドレスタグ記憶部22に結合する。アドレスのオフセ
ットフィールドはデータキャッシュ23に結合する。オ
フセットフィールドはエントリ番号(行選択)をデータ
キャッシュ23の複号のバンクに供給する。インデック
スフィールドは図示されていない。仮想タグを記憶する
のに加えて、物理タグも物理アドレスタグ記憶部21に
記憶する。各物理タグは対応する仮想タグと関連してい
る。変換装置20は処理装置15から得た仮想アドレス
を通常通りに物理アドレスに変換する。変換装置20の
出力端子、すなわち、バス24は外部アドレスバス25
に結合している。物理アドレス(タグフィールド)は物
理アドレスタグ記憶部21に結合する。
【0012】図1に示すように、主メモリ18と、アド
レスバス25と、データバス26は「オフチップ」であ
る。すなわち、現時点で好ましい実施例では、それらは
プロセッサのその他の部分と共に単一の基板の上に形成
されるのではない。Intel 860の場合と同様
に、キャッシュメモリと、処理装置と、変換装置と、そ
の他の装置は単一の基板の上に形成される。
【0013】動作中、処理装置15がデータを要求する
と、そのデータに関わる仮想アドレスがタグ記憶部22
へ送信される。処理装置からのタグフィールドと、記憶
部22に記憶されているタグフィールドとの間に一致が
存在しないと仮定すれば、その結果、ミス条件が生じ
る。タグ記憶部22における比較プロセスと同時に、変
換装置20は仮想アドレスを物理アドレスに変換する。
次に、物理アドレスのタグフィールドをタグ記憶部21
に結合する(非命令データの場合)。それをタグ記憶部
21に記憶されている物理タグフィールドのそれぞれと
再び比較する。同じように、一致が存在せず、ミス条件
が起こったと仮定すると、そこでメモリ読取りサイクル
が開始され、物理アドレスを使用して主メモリ18をア
クセスする。シークしているデータが「キャッシュ可
能」であれば、そのデータの対応する仮想アドレスと物
理アドレスを記憶部22及び21にそれぞれ記憶し、主
メモリから得たデータをデータキャッシュ23に記憶す
る。
【0014】図2を参照して説明する。同様に、処理装
置はブロック28により指示するように仮想アドレスを
供給すると仮定する。このアドレスは前述のように仮想
アドレスタグ記憶部22に結合する。ブロック30によ
り指示するように、処理装置15から得た仮想アドレス
の20ビットタグフィールドを仮想アドレスタグ記憶部
22に記憶されている20ビットタグフィールドと比較
する。一致が起これば、ブロック33により指示するよ
うに、当該技術で良く知られている通り、オフセットビ
ット及びインデックスビットを使用して通常の方式によ
りデータキャッシュ23からデータ(有効である場合)
を得る。仮想タグについて比較が行われている間、図2
にブロック29により指示するように、変換装置20は
仮想アドレスを物理アドレスに変換している。物理アド
レスのタグフィールドを物理アドレスタグ記憶部21に
結合し、そこに記憶されている20ビットタグフィール
ドと比較する。仮想タグについてはミスが起こったが、
物理タグについてはヒットである場合には、物理タグ記
憶部におけるヒットに基づいて、再びオフセットビット
とインデックスビットを使用してデータキャッシュから
データを選択する。(オフセットビットとインデックス
ビットは仮想アドレスと物理アドレスの双方に対して同
一である。)この条件の場合にも、ブロック35により
指示するように、仮想アドレスタグ記憶部22の、ヒッ
トを発生させた物理アドレスのタグフィールドに対応す
る記憶場所に仮想アドレスタグフィールドを導入する。
【0015】仮想タグと物理タグの双方についてミスが
あるならば、通常のメモリサイクルを開始し、主メモリ
からデータを読取る。データがキャッシュ可能であれ
ば、ブロック32により指示するように、データ自体に
加えて、仮想アドレスタグ記憶部と物理アドレスタグ記
憶部を更新する。プロセッサに関してテキスト/文脈変
更がある場合、記憶部22の全ての仮想タグを無効にす
る。データキャッシュ23のデータと、記憶部21の物
理タグとはそのまま残る。この時点で、新たなタスクの
ためのマッピングによって変換装置を再プログラムす
る。処理装置15が次に仮想アドレスを生成すると、記
憶部22の中ではヒットは起こりえない。ところが、記
憶部21ではヒットが起こりうる。そこで、ヒットが起
これば、データキャッシュからデータを供給し、仮想ア
ドレスに関わるタグフィールドを記憶部22の、ヒット
を発生させた物理タグフィールドに対応する記憶場所に
ロードする。
【0016】1つのプロセッサで2つ以上のタスクがラ
ンしているとき、単一の物理アドレスが2つ以上の対応
する仮想アドレスを有していることは珍しくない。従っ
て、1つのタスクから別のタスクへの変更がある場合、
ある仮想アドレスに関連して先にデータキャッシュ23
に記憶されていたデータを異なる仮想アドレスが要求し
ていることもあるかもしれない。物理タグを比較するの
で、主メモリ18を頼らずにデータはデータキャッシュ
23において求められる。図1に示すメモリキャッシュ
について、特にマイクロプロセッサに適用する場合に得
られるもう1つの利点は、外部アドレスバス25の物理
アドレスを記憶部21のタグと比較でき、後述するよう
に、ある特定のキャッシュがデータの最新バージョンを
有するか否かを容易に判定できることである。物理タグ
記憶部21は、上述の機能を実行しつつスヌーピングを
可能にするデュアルポート形記憶装置アレイである。
【0017】ラインバッファ 現時点で好ましい実施例では、図1に関連して説明した
ように仮想タグフィールドと物理タグフィールドを使用
するのはキャッシュメモリの非命令データ部分にのみ限
られる。しかしながら、命令記憶部分にもこれを利用す
ることは可能であろう。これに対し、図3に示すライン
バッファの改良は命令記憶と関連して使用されるもの
で、非命令データ記憶には使用されないが、同じように
非命令データの記憶に利用することも可能であろう。
【0018】図3のラインバッファを説明するのに先立
って、処理装置が命令を取り出そうとし、キャッシュメ
モリでミスがあったときに何が起こるかを検討しておく
と有益である。先に説明したキャッシュメモリの場合、
各行のデータの幅は命令8つに相当する32バイトであ
る。ミスが起こると、キャッシュメモリの行1つ分が充
填され、そこで、処理装置はその行の中で要求した命令
(4バイト)を検索することができる。従って、ミスが
起こってしまうと、プロセッサが要求した命令を検索で
きるようになる前に、直ちに必要とされるバイトより多
くのバイトをキャッシュメモリへ伝送することが必要に
なるであろう。
【0019】図3に示すラインバッファはこの問題を緩
和する。図3の破線の下方に示すキャッシュメモリの部
分は、命令データキャッシュ38(命令記憶部を除いて
データキャッシュ23と同様)と、命令タグ記憶部37
とを含む普通のキャッシュメモリである。処理装置から
得た仮想アドレスのタグフィールドは命令タグ記憶部に
結合し、通常通りに記憶されているタグフィールドと比
較される。一致が起これば、オフセットにより選択した
行の1つは通常通りに命令を提供する。尚、タグ記憶部
37で比較プロセスが実行されているのと同時に適切な
行を選択できるように、オフセットをキャッシュ38に
供給するのも通常通りである。本発明のラインバッファ
の場合、実際には、完全に連想型である追加の1行キャ
ッシュメモリが加わるのであるが、そのメモリでは、1
つのデータ行に記憶されているデータのフィールドをそ
の行の残り部分が存在していなくとも選択できる。ライ
ンバッファは仮想アドレス(27ビットと、後述するよ
うな少なくとも1つの追加ビット)を記憶する第1の記
憶手段42と、データ(32バイト+後述する追加のビ
ット)を記憶する第2の記憶手段44とから構成され
る。
【0020】現時点で好ましい実施例の記憶手段42及
び44は、当該技術では良く知られているマスター・ス
レーブフリップフロップを使用して製造される。この構
成によれば、読取りと書込みを1つのメモリサイクルで
実行できるので、以下の説明からわかるように、記憶手
段42及び44からアドレスとデータを読取る動作と、
新たなアドレスとデータをラインバッファに書込む動作
とを単一のサイクルで実行することが可能である。記憶
手段42はタグフィールド(20ビット)と、オフセッ
トフィールド(7ビット)の双方を記憶する。これは、
20ビットのタグフィールドのみを記憶する記憶部37
とは対照的である。処理装置がキャッシュメモリから命
令をシークすると、記憶部37の中でタグフィールドの
比較が行われるばかりでなく、処理装置から得たタグフ
ィールドとオフセットフィールドの双方を記憶手段42
に記憶されているタグフィールド及びオフセットフィー
ルドと比較する動作も起こる。この目的のために、記憶
手段42には通常の比較手段が含まれている。
【0021】記憶手段42は追加ビット43、すなわ
ち、「有効ビット」を記憶している。以下にさらに詳細
に説明するが、ミスが起こると、記憶手段42の内容
(タグ部分のみ)は記憶部37へ伝送され、そこでオフ
セットを使用してキャッシュメモリ38内部の行を選択
する。次に、記憶手段44のデータがキャッシュメモリ
38へ伝送される。その後に処理装置から得たタグフィ
ールドとオフセットフィールドを記憶手段42にロード
する。この時点で有効ビットは無効にセットされる。こ
こで通常のメモリサイクルを使用して主メモリをアクセ
スする。主メモリのアクセス中のデータが「キャッシュ
可能」であることを指示する信号を主メモリが戻すと、
有効ビット43はその有効状態にセットされる。処理装
置がキャッシュ可能データを要求したことを指示する信
号はKEN/として表わされる。この信号は、現在、I
ntel 860で使用されているが、ラインバッファ
と共に使用されているのではない。この有効ビットの使
用については後に図12に関連して説明する。
【0022】記憶手段44はそれぞれ64ビット幅の4
つのセクションに分割されている。さらに、各セクショ
ンは、その中に記憶されているデータが有効であるか否
かを指示するために使用される追加ビットを含む。たと
えば、セクション45には8つのバイト(命令2つ)が
記憶されている。ビット49は、セクション45のデー
タが有効であるか否かを指示するために使用される。同
様に、セクション46,47及び48と関連するビット
がある。また、行全体の有効性を指示するために使用さ
れる追加ビット51が1つある。このビットはキャッシ
ュメモリ38で使用される有効ビットに対応する。現時
点で好ましい実施例では、データバスの幅は64ビット
であるので、メモリサイクルごとに記憶手段44のセク
ションが1つずつ充填されることになる。典型的な行充
填の場合にデータを記憶手段44に左から右へロードす
るものと仮定すると、まず、第1のメモリサイクルで記
憶セクション45を充填し、有効ビット49をその有効
状態にセットする。記憶手段44と関連する他の全ての
有効ビットは無効状態のままである。さらに多くのメモ
リサイクルが発生するにつれて、セクション46,47
及び48にもデータはロードされてゆき、それらのセク
ションとそれぞれ関連する有効ビットは有効状態に変わ
る。全てのセクションが有効データを得たならば、ビッ
ト51は有効状態にセットされる。
【0023】後述するように、第1の記憶手段44から
キャッシュメモリ38へデータを伝送しても良い。伝送
を実行するときには、記憶手段42から得たオフセット
フィールドをキャッシュ38へのエントリ番号として使
用し、記憶手段44のデータをキャッシュ38へ伝送す
る。後述するように、たとえば、セクション45及び4
6にしかデータがなくても、キャッシュ38へのデータ
の伝送は可能である。その後、続く2つのメモリサイク
ルの中で、行の残り半分に関わるデータをキャッシュ3
8へ直接伝送する。行全体の充填が起こる前に処理装置
が記憶手段からデータを読取れることは重要である。た
とえば、第1のメモリサイクルにおいてセクション45
が主メモリから2つの命令を受信した後、無効ビット4
9は有効状態にセットされる。処理装置は、仮想アドレ
スのインデックスフィールドを使用することによって、
セクション45から一方の命令、もしくは双方の命令を
選択し、そこで、残るセクション46,47及び48が
主メモリからの命令によって充填されていなくとも動作
を継続する。これは、従来の技術におけるようにアクセ
スが可能になる前にキャッシュ38の行全体を充填して
しまう動作とは対照的である。実際には、これを「第5
の」セットアソシエイティブ方式とみなしても良い。
【0024】次に図12を参照して説明する。ブロック
55により示すように、処理装置は1つの命令を読取ろ
うとしていると仮定する。この命令に関わるアドレス
(タグフィールドとオフセットアドレスの双方)を記憶
手段42に結合し、記憶手段の内容と比較する。同時
に、命令のタグフィールドを通常の方式によって記憶部
37に記憶されているタグフィールドと比較すると共
に、オフセットフィールドに基づいてキャッシュメモリ
38の行を選択する。記憶部37又は記憶手段42のい
ずれかでヒットが起こりうる。記憶部37でヒットが起
これば、キャッシュ38から通常通りに命令を供給す
る。記憶手段42の内容によってヒットが起こる場合
(タグフィールドとオフセットフィールドの双方が一致
しなければならない)には、言うまでもなく記憶手段4
4のデータが有効であると仮定して、そこから適切なデ
ータを選択する。
【0025】ブロック55により示した取り出しの結
果、記憶手段42と記憶部37の双方でミスが起こった
と仮定する。このミスは外部メモリサイクルを開始させ
る。すなわち、プロセッサは主メモリからその命令を得
ようとするのである。これが起こっている間、記憶手段
42に有効な内容が存在していれば、それらの内容は記
憶手段から移動する。(実際には、ラインバッファの次
の行充填を実行している間にラインバッファの内容をキ
ャッシュに書込むことになる。)タグフィールドは記憶
部37へ伝送され、所定の置き換えアルゴリズム(たと
えば、ランダム置き換え)の下に、記憶部37に記憶さ
れていたタグフィールドと置き換えられる。記憶手段4
2からのオフセットフィールドは、記憶手段44のデー
タをキャッシュメモリ38へ伝送させるためのエントリ
番号となる。そこで、ミスを起こさせたアドレスのタグ
フィールドとオフセットフィールドを記憶手段42へ伝
送するのである。このことはブロック56により表わさ
れている。
【0026】ここで、記憶手段42にロードされたアド
レスはキャッシュ可能であると仮定する。KEN\信号
が戻れば、ビット43は有効状態にセットされる。シー
クしたデータがキャッシュ不可能である場合には、次の
ミスの時点で記憶手段42に新たなアドレスをロード
し、先の内容を放棄する。主メモリからデータが戻さ
れ、記憶手段44の少なくとも1つのセクションにロー
ドされたならば、先に述べた通り、処理装置はそのデー
タを利用できる。通常、プロセッサの動作中には、パイ
プライン方式をとっているために、主メモリから先の命
令が戻って来る前に次の命令を取り出すようになってい
る。このことは図12のブロック58により表わされて
いる。この次の命令取り出しが行われたときに起こりう
る2つの状態が示されている。その1つは、ラインバッ
ファにおけるヒットであり、第2はラインバッファにお
けるミスである。別の可能性として記憶部37における
ヒットがあり、その場合には、主メモリから先の命令が
戻って来た後に記憶部38から命令を選択する。
【0027】ここで、ラインバッファでミスが起こった
と仮定する。ブロック59により示すように、データ内
容があれば、それらをキャッシュ38へ移動させる。そ
の際、記憶手段42から得たオフセットフィールドは前
述のようにエントリ番号となり、記憶手段42から得た
タグフィールドは記憶部37に入力する。これにより、
新たな命令アドレスを記憶手段42に導入するための経
路が開かれる。外部メモリサイクルが始まり、主メモリ
からデータが戻ったならば、そのデータを記憶手段44
に導入する。次の命令取り出しに関してラインバッファ
でヒットが起こる場合には、そのようなヒットは先の命
令が戻る前又は戻った後のいずれかで起こると考えられ
る。ブロック60により示すように先の命令が戻る前に
ヒットが起こったならば、次の標識が現れる。まず、ア
ドレス有効ビット43は有効状態にあり、先に要求され
た命令と関連する有効ビットは無効状態にある。そのよ
うな条件の下では、処理装置は先の命令が主メモリから
戻る途上にあり、ブロック60により指示するようにそ
の命令を待つべきであることを認識している。これに対
し、命令が戻った後にヒットが起こる場合には、命令と
関連する有効ビット、たとえば、ビット49は有効状態
にあり、当然のことながら、処理装置は先の命令を取り
上げた後に記憶手段44から命令を読取ることができ
る。このように、図3のラインバッファは行全体を充填
する前に処理装置の動作を進行させることができるの
で、通常はキャッシュメモリにおいて1つの行全てを充
填することと関連して費やしていた時間は節約されるの
である。
【0028】キャッシュコヒーレンシープロトコルの実
以下の説明の中では、ライトスルー、ライトバック及び
ライトワンスという周知のプロトコルについて論じる。
それに関連して「M」,「E」,「S」及び「I」の4
文字を使用するが、時によってはそれらの文字を合わせ
て「MESI」とすることもある。ライトワンスプロト
コルの場合、「I」はデータが無効であることを示し、
「S」はデータが共用であること、たとえば、データが
主メモリにあるのに加えて別のキャッシュメモリにもあ
ることを示す。「E」はデータが排他的であること、す
なわち、データは唯一つのキャッシュメモリと主メモリ
にのみにあり、他のキャッシュメモリにはないことを示
す。「M」はデータが修正されており、主メモリのデー
タは不正確であることを示す。現時点での実現形態によ
れば、それぞれのデータ行(非命令データの行)は4つ
のプロトコル状態「M」,「E」,「S」,「I」の中
の1つを指示するためのビットを含んでいる。ライトス
ループロトコルの場合、「I」と「S」の2つの状態の
みを使用する。ライトバックプロトコルの場合には、
「I」,「E」及び「M」の状態を使用する。
【0029】以下の説明からわかる通り、プロセッサが
3つのプロトコルのいずれをも実現できることは重要で
ある。図8は、本発明で可能であるようにライトワンス
プロトコルを実行するために相互接続された2つのプロ
セッサを示す。この点に関して、Intel 860に
は見られないようなプロセッサと関連するいくつかの端
子、すなわち、ピンがある。まず、図4を参照すると、
様々なプロトコルを理解する上で必要な範囲内で、プロ
セッサの端子とそれらの端子における信号が示されてい
る。図中の線62はプロセッサ(チップ)とその外部環
境との境界線を表わすべきものである。従って、この線
62の上方はプロセッサの内部,線の下方はプロセッサ
の外部ということになる。
【0030】最も左側の部分から見てみると、双方向デ
ータバスが示されている。また、双方向アドレスバスも
あるが、前述の通り、このバスは外部アドレスバスのア
ドレスを感知することができ、その意味で双方向バスで
ある。アドレスストローブにはEADS\と、ADS\
の2つがある。EADS\信号がローであるとき、外部
アドレスは有効である。同様に、ADS\信号がローで
あるとき、内部アドレスは有効である。プロトコルの選
択を行うためのプロトコル選択端子が設けられている。
この端子はWB/WT\(ライトバック/非ライトスル
ー)として表わされている。この端子に対する接続につ
いては後に説明する。メモリサイクルが書込みサイクル
であるか又は読取りサイクルであるかを指示するために
一般に使用される信号(W/R\)についても後に説明
するので、その端子も図4に示されている。プロセッサ
は、プロセッサがデータを無効化すべきであることを指
示する信号を受信する。この信号は「INV」として示
されている。プロセッサが外部アドレスを感知している
(スヌーピング)ときにこの信号がハイである場合に
は、プロセッサは対応するデータ(キャッシュメモリで
見出されれば)を無効「I」状態にする。「BOFF
\」信号は、プロセッサに印加されると、プロセッサを
メモリサイクルの完了から撤退させる。この信号の用途
については後に説明する。プロセッサはEWBE\信
号、すなわち、「外部書込みバッファは空でない」こと
を表わす信号を受信する。外部書込みバッファが空であ
るときには、この信号はローである。HIT\信号は、
外部で感知されたアドレスについてヒットが起こったと
きにプロセッサにより供給される。この信号は通常はハ
イであり、ヒットが起こり且つ対応するデータが
「E」,「S」又は「M」状態であるときにその電位は
降下する。HITM\信号の電位は、外部で感知された
アドレスについてヒットが起こり且つ対応するデータが
「M」状態にあるときに降下する。従って、プロセッサ
がスヌーピングを行っている間に対応するデータが
「M」状態にある場合には、HIT\信号とHITM\
信号の双方の電位は降下する。最後に、HOLD\信号
はプロセッサに実際に動作を停止させる。この信号はバ
スアービトレータと関連して使用される。この信号につ
いては図8を参照しながら説明する。
【0031】以下の説明中、「M」,「E」,「S」及
び「I」を表わすビットの状態をそれぞれのプロトコル
に関してそれらのビットが変化する条件と共に論じる。
これを、たとえば、ゲートではなく状態図によって示す
が、それは本発明をさらに明瞭に理解させるためであ
る。状態図を実現するために通常の論理を使用しても良
いことは当業者には自明であろう。図5、図6及び図7
は、異なるプロトコルを得るためにWB/WT\端子に
対して成される接続を示す。それらの図は、1つのシス
テムにおいて単一のプロセッサを使用する場合に適用さ
れる。まず、図5を参照する。本発明のキャッシュメモ
リと、それに関連する論理とを含むプロセッサ63のW
B/WT\端子が接地点に接続していると仮定する。こ
のことは、ライトスルーが真であり、従って、ライトス
ループロトコルが実現されることを示唆する。ライトス
ループロトコルの場合、データは無効「I」状態又は共
用「S」状態のいずれかであり、それは、単一プロセッ
サ環境について、キャッシュメモリのデータが有効であ
ることを示す。信号線66に接地電位が結合していると
き、キャッシュメモリは各データ行を「I」又は「S」
状態と関連させるのみである。プロセッサが読取りサイ
クルを開始させると、キャッシュメモリに読込まれるデ
ータは図5に示す「I」から「S」への状態の変化(矢
印71)により指示するように有効である。プロセッサ
がキャッシュメモリからデータを読取る場合には、矢印
73により指示する通り、データは「S」状態にとどま
る。たとえば、キャッシュメモリからのデータのパージ
によって、データを矢印72により示すように無効化す
ることができる。
【0032】図6に示すプロセッサ64は、そのWB/
WT\端子が信号線65によりVcc(たとえば、5ボ
ルト)に接続している点を除いて、プロセッサ63と同
一であって良い。このことはライトバックプロトコルが
使用中であり、従って、データ行ごとに「I」,「E」
又は「M」を示すビットが適用されることを示唆してい
る。行充填が起こると、状態は無効から「E」へ変化
し、それはプロセッサが主メモリで見出されるのと同じ
良いコピーを有することを表わしている。書込みヒット
が起こると、状態は「E」から「M」へ変化する。ライ
トバックプロトコルに関わる状態とその遷移は、Int
el 860において現在使用されているのと同じであ
る。
【0033】次に図7を参照すると、プロセッサ63又
は64と同一であって良いプロセッサ65が示されてい
る。この時点で、WB/WT\端子は信号線66により
信号線67に接続している。尚、信号線66はW/R\
端子である。この接続はライトワンスプロトコルを実行
させる。たとえば、行充填が終了するたびに、読取りサ
イクルについてはW/R\はローであるのでその行は
「S」状態になる。このことは図7に矢印74により示
されており、信号線66がロー電位(接地点)に接続す
る図5の矢印71に相当する。その後に続いてこの行に
書込むと、「S」状態であるため、それは主メモリへの
ライトスルーになる。1度目の書込みを実行していると
き、プロセッサはWB/WT\端子をサンプリングし、
書込みサイクルであるためにその信号はハイであると判
定し、矢印75により示すように状態を「E」状態に変
化させる(ライトワンス)。その後のこの行に対するあ
らゆる書込みは、矢印76により示すように「M」状態
に変化するために、バスには現れない。そこで、ライト
ワンスプロトコルが実現されるのである。
【0034】次に図8を参照すると、共用データバス8
1と、共用アドレスバス82とに結合する2つのプロセ
ッサ76(P1)及び77(P2)が示されている。プ
ロセッサ76及び77は先に述べたプロセッサと同一で
あっても良い。すなわち、プロセッサは本発明のキャッ
シュメモリと、それに関連する論理とを含んでいる。共
用バス81及び82は主メモリ79と、以下に説明する
外部書込みバッファ78とに結合している。図8には、
共用データについてライトワンスプロトコルを実現する
(スヌーピングを実行しているプロセッサに対してHI
T\を印加する一方で、他方のプロセッサは行充填を実
行している)プロセッサ76及び77の様々な相互接続
を示す。以下の説明からわかるように、図示する相互接
続により、最小限のグルー論理でコヒーレントキャッシ
ングが可能になる。
【0035】信号線84及び86により示すように、一
方のプロセッサの出力アドレスストローブ端子(ADS
\)は他方のプロセッサの外部のアドレスストローブ端
子に結合している。これにより、各プロセッサは1つお
きのサイクルでスヌープすることが保証される。すなわ
ち、プロセッサP1がバス81へアドレスを出力すると
き、信号線86のADS\ストローブ信号はプロセッサ
P2 77にアドレスを読取らせる。尚、このストロー
ブ信号はバッファ78やメモリ79などのシステム中の
他の構成要素に結合されても良い。一方のプロセッサの
このHIT\端子は信号線82及び85により他方のプ
ロセッサのWB/WT\端子に結合している。これによ
り、一方のプロセッサがそのキャッシュメモリで行を充
填するためにデータを読取っており、他方のプロセッサ
が同一のデータを有しているとき、プロセッサはデータ
が「S」状態にあることを確実に指示するようになる。
このことは、以下にBOFF\信号に関連して説明する
ように、HITM\信号がローである場合には起こらな
い。
【0036】プロセッサ76がそのキャッシュメモリに
ついて主メモリから1つのデータ行を読取っており、そ
の行がプロセッサ77にも存在しているものと仮定す
る。さらに、プロセッサ77の行は「E」状態にあると
仮定する。信号線82のヒット信号の電位が降下する
と、図9の線93により示すように、プロセッサ76に
読込まれるデータを「S」状態にさせる。スヌープ中で
あるプロセッサ77の場合、「E」状態は図10bの線
100により指示するように「S」状態に変化する。プ
ロセッサ77の場合、HIT\信号はデータがプロセッ
サ77に存在していることを指示するローである。とこ
ろが、データは「M」状態でないので、HITM\信号
はハイである。また、これはプロセッサ76による読取
りサイクルであるので、信号線87の無効信号はローの
ままである。従って、2つのプロセッサは、共に、デー
タが「S」状態にあることを指示する。すなわち、デー
タはキャッシュメモリにより共用されているのである。
一方のプロセッサのW/R\信号は他方のプロセッサの
INV端子に接続している。これにより、他方のプロセ
ッサが書込んでいる間に一方のプロセッサのデータの無
効化は保証される。これを実行するのは図8の信号線8
3及び87である。
【0037】プロセッサ76は書込み中であり、そのア
ドレスのデータがプロセッサ77で見出されるものと仮
定する。信号線87の信号はハイになるので、プロセッ
サ77の対応するデータは「I」状態をとる。このこと
は図10aに矢印97により示され、図10bに矢印9
8により示され、図10cに矢印99により示されてい
る。また、図10aに示す通り、上述の条件についてプ
ロセッサ77のデータが「S」状態にあるとき、キャッ
シュメモリのデータは「M」状態ではなく、「S」状態
にあるので、HIT\信号はローになり、HITM\信
号はハイになる。図10bでは、データが「E」状態で
あるとき、矢印98により指示するように、これもまた
「I」状態に変化し、この場合にも同様にHIT\信号
はハイである。INVピンがEADS\によって活動状
態である場合、「M」から「S」への状態の遷移が起こ
る。図10cにおいて、プロセッサ77のデータが偶然
に「M」状態になると、矢印99により指示するように
データは無効化される。尚、HIT\信号とHITM\
信号は共にロー状態にある。プロセッサがスヌープ中で
あり、別のプロセッサはデータを読取っていることを感
知したとき、プロセッサが既に「S」状態にあれば、図
10aの矢印76により示すように「S」状態はそのま
ま変わらない。従って、スヌープ中のプロセッサはヒッ
トが起こったこと及びデータは修正状態にないことを指
示する。
【0038】図8に示すように、一方のプロセッサのH
ITM\端子は信号線91及び92により他方のプロセ
ッサのバックオフ端子と、バスアービトレータとに結合
している。これにより、一方のプロセッサが修正済デー
タを記憶しているとき、他方のプロセッサは主メモリか
ら無効データを読取ることを確実に阻止されるようにな
る。たとえば、プロセッサ76が修正済データを記憶し
ている場合、主メモリ79の対応するアドレスのデータ
は不正確である。プロセッサ77がそのデータを読取ろ
うとすれば、信号線91のHITM\信号はローにな
り、その結果、プロセッサ77はバックオフする。この
ことについては後に説明する。
【0039】図9のその他の部分は、プロセッサ76又
は77のようなプロセッサが読取り及び書込みを実行し
ているときのライトワンスプロトコルの標準的な更新を
示す。矢印94により指示する通り、「S」状態になる
と、プロセッサは「S」の状態を変えることなくそのキ
ャッシュメモリから読取れる。矢印95により指示する
ように、プロセッサがキャッシュに書込むと(最初の書
込み)、状態は「E」に変化し、主メモリからデータが
読取られる。その記憶場所に対して再び書込みが起こる
と、矢印101により指示するように、状態はキャッシ
ュメモリにデータの唯一の真のコピーが記憶されている
ことを示す「M」へ変化する。この「M」状態、特にH
ITM\信号は他方のプロセッサが主メモリから不正確
なデータを読取るのを阻止する。
【0040】説明の便宜上、プロセッサ76は「M」状
態のデータを記憶しており、プロセッサ77は主メモリ
79からそのアドレスのデータを読取ろうとしているも
のと仮定する。この時点ではプロセッサ76はスヌープ
モードにあり、主バスにおけるアドレスを認識する。H
IT\信号及びHITM\信号の双方の電位は降下す
る。これにより、プロセッサ77は主メモリが既に古く
なっていることを報知される。詳細にいえば、信号線9
1の信号はプロセッサ77に主メモリからデータを読取
らせるのではなく、バックオフさせる。信号線91及び
92に結合しているバスアービトレータ80は信号線9
1の信号を感知し、プロセッサ77の読取りが可能にな
る前にデータをプロセッサ76からフラッシュさせなけ
ればならないことを知る。バスアービトレータ80は、
名目上は、双方のプロセッサのホールド端子を介してそ
れらを進行させる。ところが、先に説明したようないく
つかの条件の下では、アービトレータ80は一方のプロ
セッサをホールドする一方で、他方のプロセッサを進行
させる。この場合、アービトレータはプロセッサ77を
ホールドする一方、プロセッサ76には主メモリ79を
更新させる。次にプロセッサ77は解放されるので、プ
ロセッサ77はシークしているデータを主メモリから読
取ることができる。通常、バスアービトレータ80は他
の周知の機能を実行するが、この明細書には、本発明に
関連する機能のみを説明する。
【0041】主メモリへの書込みの強い順序付けと弱い
順序付け 本発明のプロセッサは図1に示す内部書込みバッファ1
7を採用する。このバッファは、周知のように、以下に
述べる場合を除いて外部メモリへの書込みのためのデー
タとアドレスを記憶するように動作する。さらに、本発
明のプロセッサは図8の外部バッファ78と共に動作す
るように動作する。このバッファは主メモリ79に書込
むべきデータを一時的に記憶する。このバッファは、バ
スが使用中ではないときに、データを主メモリに書込ま
せる。外部バッファ78は、外部書込みバッファが空で
ある時点を指示する信号(EWBE\)を信号線88
(図11及び図13)に供給する。図示するように、信
号は図13の信号線121を介して書込み順序付け制御
回路120に書込まれる。同様に信号線122を介して
回路120に結合する信号IWBE\は、内部書込みバ
ッファが空である時点を指示する信号である。
【0042】書込みバッファを使用する場合に前述のよ
うにキャッシュメモリがスヌープを実行すると、固有の
問題が起こる。この問題はメモリに書込まれるデータの
順序付けに関わるものである。問題が起こるのは、外部
から観察するという立場からいうと、スヌーピングを実
行しているキャッシュの(「他方のプロセッサ」の)ア
クセスは主メモリのアクセスと同等であるためである。
これに対し、書込みバッファの(主メモリへの書込みを
待機している)データは主メモリ更新としてはみなされ
ない。そのため、書込みバッファを伴うキャッシュがス
ヌープすることにより、メモリアクセスの順序付けの問
題が生じて来るのである。ライトバックプロトコルの場
合、連続する書込みが問題を悪化させるので、問題は一
層深刻になる。
【0043】本発明は2つの明確に異なる書込み順序付
けモードを実行する。その1つは弱い順序付けモードと
呼ばれ、他方は強い順序付けモード(SOM)と呼ばれ
る。リセット期間の終わりの3つのクロックサイクルの
間にEWBE\信号線が活動状態である場合にプロセッ
サは強い順序付けモードにロックされ、そうでない場合
には弱い順序付けモードに入る。モードを変更するとき
にはリセットが必要である。ソフトウェアが順序付けモ
ードを検査できるように、内部制御レジスタにSOMビ
ットが挿入されている。図13を参照して説明すると、
書込み順序付け制御回路120はリセット信号を受信
し、リセット期間中に、選択されたのが強い順序付けモ
ードであるか又は弱い順序付けモードであるかを判定す
るために信号線88を検査する。弱い順序付けモードで
は、バッファのデータについてさえキャッシュへの書込
みが許可される。データキャッシュから修正行をフラッ
シュするとき、処理装置は同一の行と関連するデータに
ついて書込みバッファの係属中の書込みサイクルを検査
する。そのようなデータが見出されれば、データは無効
化される。従って、弱い順序付けモードにおいては、修
正行は係属中の書込みデータを含んでおり、二重記憶は
阻止される。以下の説明から明らかになるであろうが、
それは強い順序付けモードの動作とは対照的である。
【0044】図11を参照すると、ブロック102から
107は強い順序付けモードの間の総体的な動作を示
す。まず、ブロック102により示すように、プロセッ
サが書込みサイクルを要求したと仮定する。その上に、
ブロック103により示すように、そのプロセッサのキ
ャッシュメモリでミスが起こったと仮定する。次に、ブ
ロック105により示すように、データが外部バッファ
78に書込まれるものと仮定する。このような条件の下
では、EWBE\信号はハイである。そこで、ブロック
106により示すように、同じプロセッサ又は別のプロ
セッサが書込みサイクルを要求し、また、ブロック10
7により示すように、そのキャッシュメモリでヒットが
起こったものとさらに仮定する。ヒットが起こると、ブ
ロック108により示すように、プロセッサはEWBE
\信号を感知することにより外部書込みバッファにデー
タが存在するか否かを判定し、さらに、IWBE\信号
を感知することによりその内部書込みバッファにデータ
が存在しているか否かを判定する。上述の条件にあるよ
うにいずれかの信号がハイであれば、プロセッサはブロ
ック109に「PUを凍結する」により示すように停止
される。ブロック110により示すように、全てのデー
タが外部書込みバッファ及び内部書込みバッファから主
メモリに書込まれるまで、キャッシュメモリは更新され
ない。内部書込みバッファと外部書込みバッファが空に
なれば、ブロック111により示すようにキャッシュを
更新して良い。
【0045】要求された書込みが進行してキャッシュを
更新する前に、全てのバッファは空になっていなければ
ならない。ミスと関連する先の書込みが外部書込みバッ
ファに到達する前にキャッシュから主メモリへキャッシ
ュの「M」データがフラッシュされることもあるので、
内部検査を実行する。前述のように、ブロック107に
ついて示すヒットと関連するキャッシュの更新は、バッ
ファが空になるまで、さらには、このヒットと関連する
データが外部メモリに安全に記憶されるまでキャッシュ
には書込まれない。これは、プロセッサが書込みバッフ
ァが空になるのを待機している期間の中で行を無効化す
るのを回避するためである。
【0046】次の例を考慮してみる。まず、書込みバッ
ファは空であると仮定する。1つのキャッシュメモリに
おける1つのデータ行は「M」状態にあり、その仮想タ
グは「I」状態にある。1度目の書込みサイクルはこの
行の物理タグをヒットし、そのためにデータキャッシュ
は更新され、データは外部バスへも送り出される。そこ
で、2度目の書込みについてこの修正行に対しヒットが
起こると仮定するが、強い順序付けを確保するために
は、まず第1にデータを外部メモリに書込まなければな
らないので、データはキャッシュメモリに書込まれな
い。そこで、スヌーピングの結果をとして修正行に対し
ヒットが起こり、そのためにその行はデータキャッシュ
から外部メモリへフラッシュされ、それによって先に述
べた2つの係属中の書込みサイクルをバイパスするもの
と仮定する。ライトバックされる行は第1の書込みデー
タを含むが第2の書込みデータを含んでおらず、データ
キャッシュのエントリは無効化される。1度目の書込み
と関連するデータは二重記憶として識別されて、要求は
打ち切られる。2度目の書込み要求は新たな記憶として
識別されて、行フラッシュの後に進行してゆく。2度目
の書込みと関連するデータはデータキャッシュをルック
アップすることを継続し、この時点では行は無効状態に
あるので、外部書込みが完了した後に、内部要求は打ち
切られる。
【0047】図13を参照すると、線125はプロセッ
サの輪郭を表わす。アドレスバスとデータバスはバス1
30により示されている。前述の通り、EWBE\信号
は信号線88を介して回路120に結合し、内部書込み
バッファ空信号IWBE\は信号線122を介して回路
120に結合する。回路は、キャッシュメモリ内部でヒ
ットが起こる時点を指示する入力と、書込みサイクルを
指示するための信号とをさらに受信す。強い順序付けを
選択した場合、バッファが空でない状態で書込みサイク
ルについてヒットが起こると、処理装置15は信号線1
24の信号により示すように凍結される。先に説明した
ように、バッファが空になれば、回路120は処理装置
15を解放し、キャッシュメモリの書込みが許可され
る。以上、キャッシュメモリが処理装置及び関連装置と
共に単一の基板の上に形成されるマイクロプロセッサに
おいて特に有用である改良されたキャッシュメモリ及び
関連する回路を説明した。
【図面の簡単な説明】
【図1】本発明のキャッシュメモリと処理装置、変換装
置及び主メモリとの結合を示し、さらに、仮想タグ記憶
部と、物理タグ記憶部とを示す本発明のキャッシュメモ
リの一部のブロック線図。
【図2】図1のブロック線図により実現される論理を示
す流れ図。
【図3】本発明のキャッシュメモリで採用するラインバ
ッファを示すブロック線図。
【図4】プロセッサインタフェース、特に、本発明のキ
ャッシュメモリを含むプロセッサに印加される信号及び
そのプロセッサにより供給される信号のいくつかを示す
図。
【図5】本発明のキャッシュメモリを含むプロセッサの
端子に対してなされる接続を示す図並びにそのプロセッ
サにおけるライトスループロトコルの実現を示す状態
図。
【図6】本発明のキャッシュメモリを含むプロセッサの
端子に対してなされる接続を示す図並びにそのプロセッ
サにおけるライトバックプロトコルの実現を示す状態
図。
【図7】本発明のキャッシュメモリを含むプロセッサの
端子に対してなされる接続を示す図並びにそのプロセッ
サにおけるライトワンスプロトコルの実現を示す状態
図。
【図8】それぞれが本発明によるキャッシュメモリを含
む2つのプロセッサと、それらの相互接続を示す図。
【図9】図8のプロセッサの動作を説明するために使用
される状態図。
【図10】S状態に対するスヌープヒットの場合の図8
のプロセッサの動作を説明するために使用される状態図
(a)と、E状態に対するスヌープヒットの場合の図8
のプロセッサの動作を説明するために使用される状態図
(b)と、E状態に対するスヌープヒットの無効化の場
合の図8のプロセッサの動作を説明するために使用され
る状態図(c)。
【図11】強い順序付けモードの場合に図13のブロッ
ク線図で実現される論理を示す流れ図。
【図12】図3のラインバッファで実現される論理を示
す流れ図。
【図13】順序付けモードの場合のキャッシュメモリ及
び関連する論理を示すブロック線図。
【符号の説明】
15 処理装置 17 内部書込みバッファ 18 主メモリ 20 変換装置 21 物理アドレスタグ記憶部 22 仮想アドレスタグ記憶部 23 データキャッシュ 25 外部アドレスバス 26 外部データバス 37 命令タグ記憶部 38 命令データキャッシュ 42,44 記憶手段 76,77 プロセッサ 78 外部書込みバッファ 79 キャッシュメモリ 80 バスアービトレータ 81 共用データバス 82 共用アドレスバス 120 書込み順序付け制御回路

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 処理装置と、キャッシュメモリと、前記
    処理装置からの仮想アドレスを物理アドレスに変換する
    変換装置とを有するデジタルプロセッサにおいて、 前記キャッシュメモリは、前記処理装置から仮想アドレ
    スタグフィールドを受信するように結合された仮想アド
    レスタグ記憶部を有し、その仮想アドレスタグ記憶部に
    ある仮想タグフィールドに対して一致が起こった場合に
    はデータメモリ部のアクセスをイネーブルするもので、 前記キャッシュメモリは、前記変換装置から物理アドレ
    スタグフィールドを受信するように結合された物理アド
    レスタグ記憶部をも有し、その物理アドレスタグ記憶部
    で一致が起こった場合には前記データメモリ部のアクセ
    スをイネーブルするものであることを特徴とするデジタ
    ルプロセッサ。
  2. 【請求項2】 処理装置と、キャッシュメモリと、前記
    処理装置からの仮想アドレスを物理アドレスに変換する
    変換装置とを有するデジタルプロセッサにおいて、 前記キャッシュメモリは、前記処理装置から仮想アドレ
    スタグフィールドを受信するように結合された仮想アド
    レスタグ記憶部を有し、その仮想アドレスタグ記憶部で
    一致が起こった場合にはデータメモリ部のアクセスをイ
    ネーブルするもので、 前記キャッシュメモリは、前記変換装置から物理アドレ
    スタグフィールドを受信するように結合された物理アド
    レスタグ記憶部をも有し、その物理アドレスタグ記憶部
    で一致が起こった場合には前記データメモリ部のアクセ
    スをイネーブルするもので、 前記仮想アドレスタグ記憶部と前記物理アドレスタグ記
    憶部は、前記物理アドレスタグ記憶部で一致が起こった
    ときに、仮想アドレスタグ記憶部の対応する記憶場所が
    識別されるように編成されており;前記仮想アドレスタ
    グ記憶部は、前記物理アドレスタグ記憶部が前記プロセ
    ッサの外部にあるアドレスバスから前記物理アドレスタ
    グフィールドを受信している間に、同時に前記処理装置
    から前記アドレスタグフィールドを受信することができ
    るようにしたことを特徴とするデジタルプロセッサ。
JP4298234A 1991-10-11 1992-10-12 デジタルプロセッサ Pending JPH05204756A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US77776391A 1991-10-11 1991-10-11
US777,763 1991-10-11

Publications (1)

Publication Number Publication Date
JPH05204756A true JPH05204756A (ja) 1993-08-13

Family

ID=25111185

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4298234A Pending JPH05204756A (ja) 1991-10-11 1992-10-12 デジタルプロセッサ

Country Status (4)

Country Link
US (1) US5717898A (ja)
JP (1) JPH05204756A (ja)
FR (1) FR2682507A1 (ja)
GB (1) GB2260429B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001147857A (ja) * 1999-10-01 2001-05-29 Hitachi Ltd 改善されたメモリ管理ユニット及びキャッシュメモリを有するマイクロプロセッサを用いたデータ処理方法
JP2020513605A (ja) * 2016-12-12 2020-05-14 インテル・コーポレーション プロセッサアーキテクチャのための装置および方法
US11294809B2 (en) 2016-12-12 2022-04-05 Intel Corporation Apparatuses and methods for a processor architecture

Families Citing this family (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69434669T2 (de) * 1993-10-29 2006-10-12 Advanced Micro Devices, Inc., Sunnyvale Spekulative Befehlswarteschlange für Befehle mit variabler Byteslänge
US5689672A (en) * 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
DE69427734T2 (de) * 1993-10-29 2002-05-23 Advanced Micro Devices Inc Linearadressierter Mikroprozessorcachespeicher
US5737550A (en) * 1995-03-28 1998-04-07 Advanced Micro Devices, Inc. Cache memory to processor bus interface and method thereof
KR970029072A (ko) * 1995-11-17 1997-06-26 김주용 이중 디렉토리 가상 캐쉬 및 그 제어 방법
US5752265A (en) * 1996-06-13 1998-05-12 Compaq Computer Corporation Memory accessing in a multi-processor system using snooping
US5875469A (en) * 1996-08-26 1999-02-23 International Business Machines Corporation Apparatus and method of snooping processors and look-aside caches
US7330870B1 (en) * 1997-02-11 2008-02-12 International Business Machines Corporation Streaming computer system and method with multi-version protocol compatibility
US7251617B1 (en) * 1998-12-28 2007-07-31 Walker Digital, Llc Method and apparatus for managing subscriptions
US6370632B1 (en) 1997-11-18 2002-04-09 Intrinsity, Inc. Method and apparatus that enforces a regional memory model in hierarchical memory systems
US6260131B1 (en) * 1997-11-18 2001-07-10 Intrinsity, Inc. Method and apparatus for TLB memory ordering
US6247098B1 (en) * 1998-02-17 2001-06-12 International Business Machines Corporation Cache coherency protocol with selectively implemented tagged state
US6308255B1 (en) * 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6480952B2 (en) 1998-05-26 2002-11-12 Advanced Micro Devices, Inc. Emulation coprocessor
US6349366B1 (en) * 1998-06-18 2002-02-19 Compaq Information Technologies Group, L.P. Method and apparatus for developing multiprocessor cache control protocols using a memory management system generating atomic probe commands and system data control response commands
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6427196B1 (en) * 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US6983350B1 (en) * 1999-08-31 2006-01-03 Intel Corporation SDRAM controller for parallel processor architecture
US7191309B1 (en) 1999-09-01 2007-03-13 Intel Corporation Double shift instruction for micro engine used in multithreaded parallel processor architecture
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US6484238B1 (en) 1999-12-20 2002-11-19 Hewlett-Packard Company Apparatus and method for detecting snoop hits on victim lines issued to a higher level cache
US6532509B1 (en) 1999-12-22 2003-03-11 Intel Corporation Arbitrating command requests in a parallel multi-threaded processing system
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
US6631430B1 (en) * 1999-12-28 2003-10-07 Intel Corporation Optimizations to receive packet status from fifo bus
US7620702B1 (en) 1999-12-28 2009-11-17 Intel Corporation Providing real-time control data for a network processor
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6307789B1 (en) * 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6661794B1 (en) * 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US7480706B1 (en) 1999-12-30 2009-01-20 Intel Corporation Multi-threaded round-robin receive for fast network port
US6976095B1 (en) 1999-12-30 2005-12-13 Intel Corporation Port blocking technique for maintaining receive packet ordering for a multiple ethernet port switch
US6584522B1 (en) 1999-12-30 2003-06-24 Intel Corporation Communication between processors
US6952824B1 (en) 1999-12-30 2005-10-04 Intel Corporation Multi-threaded sequenced receive for fast network port stream of packets
US6631462B1 (en) * 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
US6356983B1 (en) 2000-07-25 2002-03-12 Src Computers, Inc. System and method providing cache coherency and atomic memory operations in a multiprocessor computer architecture
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7020871B2 (en) * 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
US6615337B1 (en) * 2001-08-09 2003-09-02 Advanced Micro Devices, Inc. Method and apparatus for maintaining coherency in a translation lookaside buffer
US7487505B2 (en) 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US7225281B2 (en) 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
US6868476B2 (en) * 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7216204B2 (en) 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US7126952B2 (en) * 2001-09-28 2006-10-24 Intel Corporation Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method
US7158964B2 (en) * 2001-12-12 2007-01-02 Intel Corporation Queue management
US7107413B2 (en) 2001-12-17 2006-09-12 Intel Corporation Write queue descriptor count instruction for high speed queuing
US7269179B2 (en) 2001-12-18 2007-09-11 Intel Corporation Control mechanisms for enqueue and dequeue operations in a pipelined network processor
US7895239B2 (en) 2002-01-04 2011-02-22 Intel Corporation Queue arrays in network devices
US7181573B2 (en) 2002-01-07 2007-02-20 Intel Corporation Queue array caching in network devices
US6934951B2 (en) * 2002-01-17 2005-08-23 Intel Corporation Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section
US7181594B2 (en) * 2002-01-25 2007-02-20 Intel Corporation Context pipelines
US7610451B2 (en) 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
US7149226B2 (en) 2002-02-01 2006-12-12 Intel Corporation Processing data packets
US7471688B2 (en) * 2002-06-18 2008-12-30 Intel Corporation Scheduling system for transmission of cells to ATM virtual circuits and DSL ports
US7337275B2 (en) 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
US7352769B2 (en) 2002-09-12 2008-04-01 Intel Corporation Multiple calendar schedule reservation structure and method
US7433307B2 (en) * 2002-11-05 2008-10-07 Intel Corporation Flow control in a network environment
US6941438B2 (en) 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
US7136990B2 (en) 2003-01-16 2006-11-14 Ip-First, Llc. Fast POP operation from RAM cache using cache row value stack
US7191291B2 (en) 2003-01-16 2007-03-13 Ip-First, Llc Microprocessor with variable latency stack cache
US7139876B2 (en) 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing fast speculative pop operation from a stack memory cache
US7139877B2 (en) 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing speculative load operation from a stack memory cache
US7174405B1 (en) * 2003-06-06 2007-02-06 Cisco Technology, Inc. Method and system for replacing a read-modify-write operation with an atomic set-bits or clear-bits operation
US7443836B2 (en) 2003-06-16 2008-10-28 Intel Corporation Processing a data packet
US7213099B2 (en) * 2003-12-30 2007-05-01 Intel Corporation Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches
US7206915B2 (en) * 2004-06-03 2007-04-17 Emc Corp Virtual space manager for computer having a physical address extension feature
US7805588B2 (en) * 2005-10-20 2010-09-28 Qualcomm Incorporated Caching memory attribute indicators with cached memory data field
US7627734B2 (en) * 2006-01-13 2009-12-01 Broadcom Corporation Virtual on-chip memory
JP4297969B2 (ja) * 2006-02-24 2009-07-15 富士通株式会社 記録制御装置および記録制御方法
GB2442984B (en) * 2006-10-17 2011-04-06 Advanced Risc Mach Ltd Handling of write access requests to shared memory in a data processing apparatus
KR100903381B1 (ko) * 2006-11-24 2009-06-23 주식회사 하이닉스반도체 반도체 메모리 장치 및 그의 구동 방법
KR20080047027A (ko) * 2006-11-24 2008-05-28 주식회사 하이닉스반도체 반도체 메모리 장치 및 그 구동 방법
US8135916B1 (en) * 2008-04-25 2012-03-13 Marvell International Ltd. Method and apparatus for hardware-configurable multi-policy coherence protocol

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3723976A (en) * 1972-01-20 1973-03-27 Ibm Memory system with logical and real addressing
US4484267A (en) * 1981-12-30 1984-11-20 International Business Machines Corporation Cache sharing control in a multiprocessor
US4612612A (en) * 1983-08-30 1986-09-16 Amdahl Corporation Virtually addressed cache
US4622631B1 (en) * 1983-12-30 1996-04-09 Recognition Int Inc Data processing system having a data coherence solution
EP0180369B1 (en) * 1984-10-31 1992-08-19 Texas Instruments Incorporated Cache memory addressable by both physical and virtual addresses
US4991081A (en) * 1984-10-31 1991-02-05 Texas Instruments Incorporated Cache memory addressable by both physical and virtual addresses
US4847804A (en) * 1985-02-05 1989-07-11 Digital Equipment Corporation Apparatus and method for data copy consistency in a multi-cache data processing unit
US4755930A (en) * 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
US4785398A (en) * 1985-12-19 1988-11-15 Honeywell Bull Inc. Virtual cache system using page level number generating CAM to access other memories for processing requests relating to a page
GB8728494D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Multi-cache data storage system
US5113510A (en) * 1987-12-22 1992-05-12 Thinking Machines Corporation Method and apparatus for operating a cache memory in a multi-processor
US5025366A (en) * 1988-01-20 1991-06-18 Advanced Micro Devices, Inc. Organization of an integrated cache unit for flexible usage in cache system design
EP0343567A3 (en) * 1988-05-25 1991-01-09 Hitachi, Ltd. Multi-processing system and cache apparatus for use in the same
GB8814077D0 (en) * 1988-06-14 1988-07-20 Int Computers Ltd Data memory system
US4939641A (en) * 1988-06-30 1990-07-03 Wang Laboratories, Inc. Multi-processor system with cache memories
GB8823077D0 (en) * 1988-09-30 1988-11-09 Int Computers Ltd Data processing apparatus
US5148533A (en) * 1989-01-05 1992-09-15 Bull Hn Information Systems Inc. Apparatus and method for data group coherency in a tightly coupled data processing system with plural execution and data cache units
EP0439952A3 (en) * 1990-01-31 1992-09-09 Sgs-Thomson Microelectronics, Inc. Dual-port cache tag memory
US5301298A (en) * 1991-10-11 1994-04-05 Intel Corporation Processor for multiple cache coherent protocols
GB2260628A (en) * 1991-10-11 1993-04-21 Intel Corp Line buffer for cache memory
US5379396A (en) * 1991-10-11 1995-01-03 Intel Corporation Write ordering for microprocessor depending on cache hit and write buffer content

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001147857A (ja) * 1999-10-01 2001-05-29 Hitachi Ltd 改善されたメモリ管理ユニット及びキャッシュメモリを有するマイクロプロセッサを用いたデータ処理方法
JP2020513605A (ja) * 2016-12-12 2020-05-14 インテル・コーポレーション プロセッサアーキテクチャのための装置および方法
US11294809B2 (en) 2016-12-12 2022-04-05 Intel Corporation Apparatuses and methods for a processor architecture

Also Published As

Publication number Publication date
GB2260429A (en) 1993-04-14
US5717898A (en) 1998-02-10
FR2682507B1 (ja) 1994-12-16
GB9216500D0 (en) 1992-09-16
FR2682507A1 (fr) 1993-04-16
GB2260429B (en) 1995-05-24

Similar Documents

Publication Publication Date Title
JPH05204756A (ja) デジタルプロセッサ
JPH05216756A (ja) プロセッサ及びキャッシュメモリ
US5301298A (en) Processor for multiple cache coherent protocols
US7032074B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US5535352A (en) Access hints for input/output address translation mechanisms
US5586297A (en) Partial cache line write transactions in a computing system with a write back cache
US5903911A (en) Cache-based computer system employing memory control circuit and method for write allocation and data prefetch
US5784590A (en) Slave cache having sub-line valid bits updated by a master cache
US5524208A (en) Method and apparatus for performing cache snoop testing using DMA cycles in a computer system
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
KR100228940B1 (ko) 메모리 일관성 유지 방법
JPH05210583A (ja) プロセッサ及び書込むデータの正しい順序付けを実行する方法
JPH0659976A (ja) 遅延プッシュをコピー・バック・データ・キャッシュに再ロードする方法
US11789868B2 (en) Hardware coherence signaling protocol
US20140289471A1 (en) Coherence de-coupling buffer
US5930821A (en) Method and apparatus for shared cache lines in split data/code caches
KR100380674B1 (ko) 멀티프로세서 시스템에서의 기록-통과 기억 동작동안 캐시코히어런스를 유지하는 방법 및 시스템
JP3971807B2 (ja) キャッシュ記憶装置および方法
JP2000215102A (ja) プロセッサ用の進歩したメモリ階層構造
KR980013130A (ko) 멀티프로세서시스템의 교체 라이트백 사이클 처리장치 및 방법