JP2717752B2 - プロセッサ - Google Patents

プロセッサ

Info

Publication number
JP2717752B2
JP2717752B2 JP4298236A JP29823692A JP2717752B2 JP 2717752 B2 JP2717752 B2 JP 2717752B2 JP 4298236 A JP4298236 A JP 4298236A JP 29823692 A JP29823692 A JP 29823692A JP 2717752 B2 JP2717752 B2 JP 2717752B2
Authority
JP
Japan
Prior art keywords
data
processor
cache
address
protocol
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.)
Expired - Fee Related
Application number
JP4298236A
Other languages
English (en)
Other versions
JPH05241954A (ja
Inventor
マイケル・カガン
イタマール・カザチンスキイ
シムチャ・ゴッホマン
タル・ガット
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 JPH05241954A publication Critical patent/JPH05241954A/ja
Application granted granted Critical
Publication of JP2717752B2 publication Critical patent/JP2717752B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はキャッシュ・メモリに関
し、特に多重プロセッサ環境で作動するキャッシュ・メ
モリに関する。
【0002】
【従来の技術】本発明ではキャッシュ・メモリとRIS
Cマイクロプロセッサで実行する関連ロジックにおける
いくつかの改良点を説明する。RISCプロセッサは市
販のインテル860プロセッサの改良型バージョンであ
る。改良型キャッシュ・メモリと関連ロジックは特に共
用バスを使用する多重プロセッサ環境に適用することが
できる。
【0003】インテル860マイクロプロセッサは市販
されていることに加え、1990年にオズボーン・マッ
クグローヒル社刊行のニール・マルグリスによる「i
860マイクロプロセッサ・アーキテクチャ」などの数
々の印刷物で説明されている。キャッシュ・メモリを有
するインテル860マイクロプロセッサと他のマイクロ
プロセッサは、処理装置からそのキャッシュ・メモリに
仮想アドレスでアクセスする。仮想アドレスは変換装置
により物理的アドレスに変換され、ミスが生じると外部
メモリサイクルを始動して物理的アドレスを用いて主記
憶装置にアクセスする。一般に仮想アドレスでキャッシ
ュ・メモリにアクセスすることは、仮想アドレスから物
理的アドレスへの変換を待たずにアドレスを行うことが
できるのでより望ましい。
【0004】マルチプロセッサないし多重タスク環境で
は、いくつかの仮想アドレスを単一物理的アドレスに写
像することがある。これは従来技術で克服し難い問題を
提起してはいないが、この環境で従来の仮想アドレスを
元にしたキャッシュ・メモリを用いるには弱点がある。
そこで後述するように本発明ではマルチプロセッサない
し多重タスク環境により適したキャッシュ・メモリを説
明する。
【0005】キャッシュ・メモリを組織する際、データ
ラインサイズ、タグフィールドサイズ、オフセット・フ
ィールドサイズなどの間で一定の取り決めを行う。大方
の場合、それらの取り決めではデータラインサイズをデ
ータバスよりかなり広くし、一般にキャッシュのデータ
ラインにはいくつかの命令を含める。例えばインテル8
60マイクロプロセッサでは、キャッシュのデータライ
は32バイトで、データバスは8バイト、命令は4バ
イトである。命令フェッチでミスが生じると処理装置
は、命令がキャッシュ・メモリから処理装置に与えられ
る前にキャッシュ・メモリが全命令(8命令)を受け取
るまで待機しなければならない。そこで後述するよう
に、本発明ではこの待機期間をなくするラインバッファ
を備える。
【0006】多重プロセッサ環境で特にキャッシュ・コ
ヒーレンスを提供するよく知られたプロトコルが数多く
ある。キャッシュ・メモリ含む一部のプロセッサ
(例:インテル486)では、ライトスルー・プロトコ
ルを用いている。キャッシュ・メモリへの書込みが生じ
ると、同時に書込みサイクルは主記憶装置へ「ライトス
ルー」する。このようにして主記憶装置は常に現在デー
タの真のコピーを持つことになる(このプロトコルにつ
いては、キャッシュ・メモリはデータを無効ないし本発
明の用語で「共用」と類別する)。他のプロセッサで
は、インテル860で使用されるライトバック・プロト
コルのようなディファード(deferred)書込み
プロトコルを使用している。これではキャッシュ・メモ
リ内のデータは無効ないし排他的あるいは修正済み(汚
染)と類別される。一部のシステムで使用されているデ
ィファード書込みを有する他のプロトコルにライトワン
ス・プロトコルがある。このプロトコルでは、キャッシ
ュ・メモリ内のデータを無効、排他的、修正済み、ある
いは共用と類別する。これらのプロトコルとその変形は
米国特許4,755,930号で検討されている。
【0007】後述するように本発明によりユーザは3つ
のプロトコルの内の1つを選択することができる。本発
明を使用するプロセッサは、多重プロセッサ環境でプロ
セッサ外に最低の回路しか有せずにキャッシュ・コヒー
レンスを可能にする、他のプロセッサとの相互接続用の
いくつかの端子(ピン)を内蔵している。主記憶装置へ
書き込むデータの順序を維持することはときどき問題と
なり、特にメモリに共用バスを通してアクセスする場合
にそうである。「書込み」を格納しておくためにバッフ
ァを使用し、それによりそれらを都合の良いときに主記
憶装置に書き込むことができるようにしている。これに
伴う問題は、データが生成された順序で主記憶装置に書
き込むようにするには何らかのメカニズムを備えなけれ
ばならないということである。本発明は、一定の条件に
基づいて書込みの強い順序付けと弱い順序付けの両方を
可能にする適応的なメカニズムを提供する。
【0008】
【発明が解決しようとする課題】以上のように本発明の
目的はマルチプロセッサないし多重タスク環境により適
したキャッシュ・メモリを提供することである。更なる
目的は上記待機期間をなくするラインバッファを備え、
ユーザが上記3つのプロトコルの内の1つを選択するこ
とができるマイクロプロセッサを提供することである。
別の目的は一定の条件に基づいて書込みの強い順序付け
と弱い順序付けの両方を可能にする適応的なメカニズム
を提供することである。
【0009】
【課題を解決するための手段】キャッシュ・メモリを有
するマイクロプロセッサを改良するため、キャッシュ・
メモリは、キャッシュ・メモリ内のデータが無効状態、
共用状態、排他的状態、あるいは修正状態のうちの1つ
の状態にあることをそれぞれ示すデータラインに対する
記憶手段を内蔵する。プロセッサはライトバック/非ラ
イトスルー端子(WB/WT\)を識別する端子を内蔵
している(なお、WT\は WTにオーバーラインを付
したものを意味する。以下同様)。この端子がグランド
と接続されている場合はライトスルー・プロトコルが選
択され、Vccと接続されている場合はライトバック・
プロトコルが選択される。プロセッサからの読取り/書
込み信号と接続されている場合は、ライトワンス・プロ
トコルが選択される。プロセッサは、本発明の詳細な説
明で説明するように接続された場合に2つのプロセッサ
が最小限の外部回路を用いてライトワンス・プロトコル
に接続可能にする他の端子を内蔵している。本発明の他
の態様は以下の詳細な説明で述べる。
【0010】
【実施例】改良したキャッシュ・メモリと関連ロジック
を説明する。以下の説明では、本発明の完全な理解をも
たらすため特定ビット数など数々の特定の詳細を挙げ
る。しかし当業者には本発明はそれらの特定の詳細がな
くとも実施できることが明かとなろう。他の例では本発
明を不必要に曖昧にしないため、よく知られた回路をブ
ロック図で示すことにする。本出願を通しバイナリ情報
を示すのに「データ」という語を使用する。一部の例で
は、「データ」は例えばメモリに格納された定数、命令
ないし無数のその他のフィールドを初めとする総称的な
意味で使用している。本発明の本実施例では命令(デー
タ)は非命令データとは別々にキャッシュ・メモリ内に
格納される。これは適宜指摘する。
【0011】本発明のキャッシュ・メモリの本実施例は
64ビットRISCマイクロプロセッサの単一チップに
組み込む。プロセッサはよく知られた相補型金属酸化膜
半導体(CMOS)技術その他の技術を使用して実現で
きる。このプロセッサを製作するために用いる技術は本
発明にとっては重要ではなく、本発明はマイクロプロセ
ッサで使用するのに適したキャッシュ・メモリに向けた
ものである。そこで大部分本発明に関連したプロセッサ
のそれらの部分のみを説明することにする。
【0012】従来の技術の項で述べたように、本発明の
キャッシュ・メモリを組み込むプロセッサはインテル8
60の改良型バージョンである。この市販のRISCプ
ロセッサの入出力の多くは本発明のキャッシュ・メモリ
を組み込んだプロセッサで使用される。また先述したよ
うに、インテル860マイクロプロセッサを説明した優
れた参考文献として、1990年にオズボーン・マック
グローヒル社刊行のニール・マルグリスによる「i 8
60マイクロプロセッサ・アーキテクチャ」がある。
【0013】本発明のキャッシュ・メモリは、データ
(非命令)キャッシュと命令キャッシュに分割される。
両方とも32バイトのデータライン幅の4ウェイ・セッ
トアソシアティブ方式で、両方とも16kBのデータを
格納する。各々のタグフィールドは20ビットである。
7ビットのオフセットフィールドを用いてデータ記憶装
置のバンク内にエントリ番号を形成する。後述するよう
に物理的タグ及び仮想タグは両方とも非命令データ記憶
装置に格納する。物理的タグは、外部バス上のアドレス
の検査(スヌープ動作)並びに変換装置からの物理的ア
ドレスの検査の双方を可能にする二重ポート記憶装置ア
レィに格納する。このアレィで用いられるセルと1サイ
クル読取り/修正書込みサイクルを可能にする付随回路
は、1989年12月29日に出願され、本発明の譲渡
人に譲渡された出願番号458,985号の「1サイク
ル読取り・修正・書込み操作を有する二重ポート静的メ
モリ」の米国出願で説明されている。キャッシュ・メモ
リの記憶の残りは、マスタ・スレーブ・セルを用いる
インバッファを除き、通常の6トランジスタ・セル(静
的、フリップフロップ・セル)で実現する。仮想アドレ
スと物理的アドレスの各々は、インテル860の場合と
同様に32ビットで構成する。
【0014】仮想及び物理的タグ記憶装置の全体的なア
ーキテクチャととその作動 図1には、インテル860などの従来のプロセッサで見
られる処理装置と同様の処理装置15が示されている。
この処理装置には両方向データバスと仮想アドレスバス
が接続されている。データバスは外部データバス26と
接続されている。仮想アドレスは、キャッシュ・メモリ
と変換装置20に仮想アドレスバスを通して結合され
る。アドレスのタグフィールドは仮想アドレスタグ記憶
部分22に結合される。アドレスのオフセットフィール
ドはデータ・キャッシュ23に結合される。オフセット
フィールドは、データ・キャッシュ23のバンクにエン
トリ番号(データライン選択)を与える。インデックス
・フィールドは図示していない。仮想タグの格納に加え
て、物理的タグも物理的アドレスタグ記憶部分21に格
納する。各々の物理的タグはその対応する仮想タグと連
関している。変換装置20は処理装置15からの仮想ア
ドレスを通常の方法で物理的アドレスに変換する。変換
装置20の出力のバス24は外部アドレスバス25と接
続される。物理的アドレス(タグフィールド)は物理的
アドレスタグ記憶部分21と接続される。
【0015】図1に示すように、主記憶装置18、アド
レスバス25及びデータバス26は「チップ外」にあ
り、すなわちそれらは本実施例ではプロセッサの残りと
共に単一の基板上には形成されない。インテル860の
場合と同様、キャッシュ・メモリ、処理装置、変換装置
その他の装置は単一基板上に形成される。作動の際、処
理装置15がデータを要求する場合、データの仮想アド
レスが仮想アドレスタグ記憶部分22に送られる。処理
装置からのタグフィールドと仮想アドレスタグ記憶部分
22に格納されているタグフィールドが合致せず、ミス
状態になると想定する。仮想アドレスタグ記憶部分22
での比較過程と同時に、変換装置20は仮想アドレスを
物理的アドレスに変換する。次に物理的アドレスのタグ
フィールドは物理的アドレスタグ記憶部分21(非命令
データ用)と連結される。再びそれを物理的アドレスタ
グ記憶部分21に格納された物理的タグフィールドの各
々と比較する。再び合致せず、ミス状態が起こると想定
すると、読取りメモリサイクルが起動され、物理的アド
レスを用いて主記憶装置18にアクセスする。求めるア
ドレスが「キャッシュ可能」ならば、そのデータの対応
する仮想アドレスと物理的アドレスがそれぞれ仮想アド
レスタグ記憶部分22と物理的アドレスタグ記憶部分2
1に格納され、主記憶装置からのデータはデータ・キャ
ッシュ23に格納される。
【0016】図2で、再び処理装置はブロック28に示
す仮想アドレスを与えると想定する。このアドレスは再
び仮想アドレスタグ記憶部分22に連結される。ブロッ
ク30に示すように、処理装置15からの仮想アドレス
の20ビット・タグフィールドを仮想アドレスタグ記憶
部分22に格納された20ビット・タグフィールドと比
較する。合致すれば、ブロック33に示すようにデータ
(有効ならば)を従来技術でよく知られているように、
オフセットと索引ビットを用いて通常の方法でデータ・
キャッシュ23から得ることができる。仮想タグに対し
て比較が行われている間に、変換装置20は図2のブロ
ック29に示すように、仮想アドレスを物理的アドレス
に変換する。物理的アドレスのタグフィールドは物理的
アドレスタグ記憶部分21と連結され、そこに格納され
ている20ビットタグフィールドと比較される。仮想タ
グに対してミスが生じるが、物理的タグに対してヒット
が生ずれば、再びオフセットと索引ビット(これらのビ
ットは仮想、物理的アドレスに対して同じ)を用いて物
理的タグ部分のヒットに基づいてデータキャッシュから
データを選択する。またこの状態に対しブロック35で
示すように、仮想アドレスタグ・フィールドを、仮想ア
ドレスタグ記憶部分22のヒットをもたらした物理的ア
ドレスのタグフィールドに対応する位置に入れる。
【0017】仮想タグ、物理的タグの両方に対してミス
が生ずれば、通常のメモリサイクルを起動してデータは
主記憶装置から読み取られる。データがキャッシュ可能
であれば、ブロック32に示すように、データ自身に加
えて仮想アドレスタグ記憶部分と物理的アドレスタグ記
憶部分は更新される。プロセッサに対してタスク/コン
テキストの変更があれば、仮想アドレスタグ記憶部分2
2の全ての仮想タグは無効化される。データ・キャッシ
ュ23のデータ並びに物理的アドレスタグ記憶部分21
の物理的タグは残存する。変換装置は一般に新しいタス
クに写像することでこの時に再プログラムされる。処理
装置15が次に仮想アドレスを生成しても、仮想アドレ
スタグ記憶部分22内ではヒットは不可能てある。しか
し物理的アドレスタグ記憶部分21内ではヒットは可能
であり、そしてそれが生ずれば、データ・キャッシュ2
3からデータが与えられ、仮想アドレスのタグフィール
ドは仮想アドレスタグ記憶部分22のヒットをもたらし
た物理的タグフィールドに対応する位置にロードされ
る。
【0018】プロセッサ上で以上のタスクが実行され
る場合、単一物理的アドレスに対して2以上の仮想アド
レスが対応することは異常なことではない。従って或る
タスクから他のタスクへの変更がある場合、異なる仮想
アドレスが他の仮想アドレスと関連してデータ・キャッ
シュ23内に先に格納されたデータを要求することがで
きる。物理的タグが比較されるので、主記憶装置18に
依存することなくデータをデータ・キャッシュ23内で
求められる。図1に示すメモリキャッシュの他の利点、
特にマルチプロセッサ・アプリケーションでの利点は、
外部アドレスバス25上の物理的アドレスを物理的アド
レスタグ記憶部分21内のタグと比較することが出来、
特定のキャッシュがデータの最新バージョンか否かを
後述するように容易に判定することができる。物理的ア
ドレスタグ記憶部分21は上記の機能を行いつつ、スヌ
ープを可能にする二重ポート記憶アレィである。
【0019】ラインバッファ 本実施例で、図1で説明した仮想及び物理的タグフィー
ルドの用途は、キャッシュ・メモリの非命令データ部分
と共にのみ使用する。しかし命令記憶部分についても使
用することができる。他方、図3に示す改良形のライン
バッファは、非命令データ記憶装置ではなく命令記憶装
置と共に使用するが、これも非命令データ記憶装置に使
用することができる。図3のラインバッファを説明する
前に、プロセッサが命令の取出しを求め、キャッシュ・
メモリでミスが生じる場合、どのようなことが起こるか
検討することにする。説明するキャッシュ・メモリに
し、各データラインはは32バイドワイドであり、8命
令に対応する。ミスが生じると、キャッシュ・メモリ内
の1データライン全体が充填され、そこでブロセッサは
そのデータライン内で要求した命令(4バイト)を検索
することができる。その結果、ミスが一旦生じると、プ
ロセッサが要求した命令を検索できるようになる前に、
直ちに必要なバイトよりも多くのバイトをキャッシュ・
メモリに転送する必要があることがある。
【0020】図3のラインバッファはこの問題を解決す
る。図3の点線の下に示すキャッシュ・メモリ部分は、
命令データキャッシュ38(命令記憶装置を除き、デー
タ・キャッシュ23と同様)と命令タグ記憶部分37を
内蔵した通常のキャッシュ・メモリを反映したものであ
る。プロセッサからの仮想アドレスのタグフィールドは
命令タグ記憶部分と連結され、通常の方法で格納された
タグフィールドと比較される。合致すれば、オフセット
で選択したデータラインの1つは命令を通常の方法でも
たらす。典型的なケースとしてオフセットをキャッシュ
38に与えて、タグ記憶部分37で比較過程が行われて
いるのと同時に適切なデータラインを選択可能にするこ
とに注目すべきである。
【0021】本発明のラインバッファでは、要するに、
単一データライン内に格納されたデータのフィールドが
そのデータラインの残りの部分を含まずに選択できると
ともに、完全にアソシアティブな1ラインのキャッシェ
・メモリが加えられている。 ラインバッファは仮想アド
レス(27ビットと以下に説明するように少なくとも1
つの追加ビット)を格納する第1の記憶手段42とデー
タ(32ビットと後述する追加ビット)を格納する第2
の記憶手段44からなる。本実施例の記憶手段42と4
4は、従来技術でよく知られているマスタ・スレーブ・
フリップフロップを用いて製作される。この構成により
例えばアドレスやデータの記憶手段42、44からの読
取りや、新しいアドレスやデータの単一サイクルでの
インバッファへの読込みを可能にする単一メモリサイク
ルでの読取り、書込みが可能になる。
【0022】第1記憶手段42はタグフィールド(20
ビット)とオフセットフィールド(7ビット)の両方を
格納する。これは20ビット・タグフィールドだけしか
格納しない命令タグ記憶部分37と対照的である。処理
装置がキャッシュ・メモリから命令を求める場合、命令
タグ記憶部分37のタグフィールドで比較が生じるだけ
でなく、処理装置からのタグとオフセットフィールドの
両方が第1記憶手段42内に格納されたタグ及びオフセ
ットと比較される。通常の比較手段がこのために第1記
憶手段42内に内蔵されている。第1記憶手段42は、
追加ビット43すなわち「有効ビット」を含んでいる。
ミスが生じると、後述するように第1記憶手段42(タ
グ部分だけ)の内容は命令タグ記憶部分37に移され、
オフセットを用いてキャッシュ38内のデータライン
選択する。そして第2記憶手段44内のデータがキャッ
シュ38に移される。処理装置からのタグとオフセット
フィールドはそこで第1記憶手段42にロードされる。
この時の有効ビットは無効にセットされる。通常のメモ
リサイクルを用いてここで主記憶装置にアクセスする。
主記憶装置にアクセスされているデータは「キャッシュ
可能」であることを示す信号を主記憶装置が返答する
と、有効ビット43はその有効状態にセットされる。処
理装置がキャッシュ可能データを要求したことを示す信
号は、KEN\として識別される。この信号は現在イン
テル860で使用しているが、ラインバッファでではな
い。この有効ビットの利用は図12と共に説明する。
【0023】第2記憶手段44はそれぞれ64ビットワ
イドの4つの部分(セクション)に分割されている。更
に各々の部分には、各々の部分のデータが有効かどうか
を示すために用いる追加ビットが含まれている。例えば
8バイト(2命令)が部分45に格納されている。ビッ
ト49は部分45内のデータが有効かどうかを示すため
に用いる。同様に部分46、47、48に関連したビッ
トと、データライン全体の有効性を示すために用いる1
つの追加ビット51がある。このビットはキャッシュ3
8内で使用される有効ビットと対応している。
【0024】本実施例では、データバスは64ビットワ
イドで、従って各々のメモリサイクルについて第2記憶
手段44の1つの部分(セクション)が充填される。デ
ータが第2記憶手段44に左から右に典型的なデータラ
イン充填方式でロードされるとすると、まず記憶部分4
5が第1のメモリサイクルで充填され、有効ビット49
はその有効状態にセットされる。第2記憶手段44と関
連した他の全ての有効ビットはその無効ビット状態のま
まである。更にメモリサイクルが生じると、部分46、
47、48へデータがロードされ、それらの部分の各々
の関連有効ビットは有効状態に変わる。全ての部分が有
効データを持つようになると、ビット51が有効状態に
セットされる。
【0025】後述するようにデータを第2記憶手段44
からキャッシュ38に転送することができる。転送が生
じると、第1記憶手段42からのオフセットフィールド
をキャッシュ38へのエントリ番号として用い、第2記
憶手段44からのデータがキャッシュ38に転送され
る。最終有効ビット51だけがキャッシュ38に格納さ
れる。後述するように、例えば部分45、46だけがデ
ータを有していても、キャッシュ38へのデータの転送
は生じ得る。その後、次の2回のメモリサイクルで、
ータラインの残りの半分のデータがキャッシュ38に直
接転送される。
【0026】重要なことは、処理装置はデータライン全
の充填が生じる前に第2記憶手段44からデータを読
み取ることができることである。例えば部分45が主記
憶装置から2つの命令を受け取る第1のメモリサイクル
の後、無効ビット49はその有効状態にセットされる。
仮想アドレスの索引フィールドを用いることで、処理装
置は部分45からの命令の1つないし両方を選択し、そ
れにより残りの部分46、47、48が主記憶装置から
の命令で充填されていなくとも作動し続ける。これは、
従来の技術ではそのようなアクセスが可能になる前にキ
ャッシュ38のデータライン全体を満たすこととは対照
的である。実際、これを「第5ウエイ」を持つセット・
アソシアティブ方式とみることができる。
【0027】ここで図12に示すように、処理装置はブ
ロック55で示すように命令を読み取ろうとしていると
想定する。この命令のアドレス(タグとオフセットフィ
ールドの両方)は、第1記憶手段42と結合しており、
記憶手段の内容と比較される。同時に、オフセットフィ
ールドがキャッシュ38内のデータラインを選択する
間、命令のタグフィールドは通常の方法で命令タグ記憶
部分37に格納されたタグフィールドと比較される。ヒ
ットが命令タグ記憶部分37ないし第1記憶手段42の
どちらかで生じ得る。ヒットが命令タグ記憶部分37で
生じる場合、命令は通常の方法でキャッシュ38から提
供される。ヒットが第1記憶手段42の内容故に生じる
場合(タグとオフセットフィールドは合致しなければな
らない)は、第2記憶手段44から当該データが(もち
ろん有効であると想定して)選択される。
【0028】ブロック55で示すフェッチが第1記憶手
段42と命令タグ記憶部分37の両方でミスになる場合
を想定する。ミスにより外部メモリサイクルが起動され
る。すなわちプロセッサは主記憶装置から命令を得よう
とする。これが生じている間、第1記憶手段42の有効
な内容があればその内容は記憶手段から移される(実
際、ラインバッファの内容は、ラインバッファの次の
ータラインの充填が行われている間、キャッシュに書き
込まれる)。タグフィールドは命令タグ記憶部分37に
転送され、所定の置換アルゴリズム(例:ランダム置
換)下で命令タグ記憶部分37に格納されているタグフ
ィールドと取って替わる。第1記憶手段42からのオフ
セットフィールドはエントリ番号を提供して第2記憶手
段44からのデータをキャッシュ38へ転送できるよう
にする。ミスを起こしたアドレスのタグとオフセットフ
ィールドはそこで第1記憶手段42に転送される。これ
をブロック56により示す。
【0029】ここで第1記憶手段42にロードしたアド
レスはキャッシュ可能であると想定する。KEN\信号
が返答されると、ビット43は有効状態にセットされ
る。求めるデータがキャッシュ可能でない場合は、次の
ミスで新しいアドレスが第1記憶手段42にロードさ
れ、その以前の内容は廃棄される。データが主記憶装置
からもたらされ、第2記憶手段44の少なくとも1つの
部分にロードされると、先述したように処理装置はそれ
を利用することができる。一般にプロセッサ動作では、
パイプライン化故に主記憶装置から先の命令が返されて
到来する前に次の命令のフェッチが行われる。これを図
12のブロック58に示し、この次の命令のフェッチ
生じた場合、次の2つの可能な状態を示している。1つ
ラインバッファでのヒットであり、もう1つはライン
バッファでのミスである。別の可能性としては、命令タ
グ記憶部分37内でヒットが生じることがあり、この場
合、主記憶装置から先の命令が到来した後にキャッシュ
38から命令を選択する。
【0030】ここでミスがラインバッファで生じると想
定する。ブロック59に示すように、データ内容は、も
しあれば、第1記憶手段42からのオフセットフィール
ドでキャッシュ38に移され、先述したようにエントリ
番号を提供し、第1記憶手段42からのタグフィールド
は命令タグ記憶部分37に入力される。これにより新し
い命令アドレスを第1記憶手段42に入れる方法が切り
開かれる。外部メモリサイクルが起動され、一度主記憶
装置からもたらされた新しいデータは第2記憶手段44
に入力される。
【0031】次の命令フェッチでラインバッファでヒッ
トが生じる場合、そのようなヒットは先の命令が到来す
前後に生じ得る。それがブロック60で示すように先
の命令が到来する前に生じると、以下の指示子が存在す
る。すなわちアドレス有効ビット43は有効状態にな
り、先に要求した命令と関連した有効ビットは無効状態
となる。その状態下で、処理装置は先の命令は主記憶装
置からのその途上にあり、ブロック60で示すようにそ
の命令を待つべきであることを知る。他方、ヒットが先
の命令が到来した後に生じると、例えばビット49のそ
の命令と関連した有効ビットはその有効状態にあり、処
理装置は先の命令がもちろんプロセッサにより受け取ら
れれば第2記憶手段44からその命令を読み取ることが
できる。従って図3のラインバッファにより、処理装置
データライン全体の充填が生じる前に続行でき、それ
により通常キャッシュ・メモリでデータライン全体を充
填するのに関連した時間を節約できる。
【0032】キャッシュ一貫性プロトコルの実施 以下の説明では、既知のプロトコルのライトスルー、ラ
イトバック、ライトワンスを説明する。これに関して
「M」「E」「S」「I」の文字を使用し、それらの文
字はときどき集合的にMESIと称する。ライトワンス
・プロトコルについては、「I」はデータが無効である
ことを示し、「S」は例えばデータが主記憶装置にある
と共に他のキャッシュ・メモリにもあるという共有であ
ることを示す。「E」はデータが排他的であること、す
なわちデータが1つのキャッシュ・メモリと主記憶装置
内にあり、他のキャッシュ・メモリにないことを示す。
「M」はデータが修正されたものであり、主記憶装置内
のデータは不正確であることを示す。現在実施されてい
るように、データ(非命令データ)の各々のデータライ
には、4つのプロトコル状態「M」「E」「S」
「I」の1つを示すビットが含まれている。ライトスル
ー・プロトコルに付いては、「I」「S」状態だけが用
いられ、ライトバック・プロトコルには「I」「E」
「M」状態が用いられる。
【0033】重要なことは、プロセッサは3つのプロト
コルの1つをどれでも実行することができることであ
る。図8はライトワンス・プロトコルを提供する本発明
で実施できるように相互接続した2つのプロセッサを示
している。これには、インテル860には見られないプ
ロセッサと関連したいくつかの端子ないしピンがある。
まず図4を見ると、様々なプロトコルを理解するのに必
要な限りにおいて、プロセッサの端子とそれらの端子上
の信号が示されている。線62はプロセッサ(チップ)
とその外部環境の間の境界を意図したものである。従っ
て線62より上はプロセッサ内部であり、線より下はプ
ロセッサ外である。左端から順に両方向データバスが示
されている。また両方向アドレスバスがある。このバス
は上記したように外部アドレスバス上のアドレスをスヌ
ープすることが出来、そのために両方向である。2つの
アドレスストローブのEADS\とΛDS\がある。E
ADS\信号が低いときは、外部アドレスが有効であ
る。同様にADS\信号が低いときは、内部アドレスが
有効になる。プロトコルの選択を可能にするプロトコル
選択端子が設けられている。この端子はWB/WT\
(ライトバック/非ライトスルー)として識別する。こ
の端子への接続は後述する。
【0034】メモリサイクルが書込みあるいは読取りサ
イクル(W/R\)であるかどうかを示す通常に用いら
れる信号も後に説明するので図4に示す。プロセッサは
プロセッサに対しデータを無効化すべきであるというこ
とを示す信号を受け取る。この信号は「INV」と示
す。プロセッサが外部アドレスを感知している場合(ス
ヌープ動作)、この信号が高ければ、プロセッサは対応
するデータ(そのキャッシュ・メモリ内に見つかれば)
を無効「I」状態に置く。「BOFF\」信号はプロセ
ッサに印加されると、プロセッサはメモリサイクルの
行を撤回(バックオフ)する。この信号の利用は後述す
る。プロセッサは「外部書込みバッファ非空」のEWB
E\信号を受け取る。この信号は、外部書き込みバッフ
ァが空の場合に低くなる。HIT\信号は、外的に感知
されたアドレスに対してヒットが生じる場合にプロセッ
サによりもたらされる。この信号は通常電位が高いが、
ヒットが生じ、対応するデータが「M」ないし「E」
「S」である場合に降下する。HITM\信号は、外的
に感知されたアドレスに対してヒットが生じ、対応する
データが「M」状態にある場合に電位が降下する。従っ
てプロセッサが外部アドレスを感知しており、対応する
データが「M」状態にある場合は、HIT\とHITM
\の両信号は電位が降下する。最後にHOLD\信号
は、プロセッサに実際上作動を停止させる。これはバス
・アービタと共に用いるが、図8と共に説明する。
【0035】以下の説明では、異なるプロトコルに対し
「M」「E」「S」「I」を示すビットの状態をそれら
が変わる条件に沿って説明する。これらは例えばゲート
よりも状態図に付いて例示するが、これは本発明のより
明解な理解をもたらすために行うものである。当業者に
は通常のロジックを用いて状態図を実現できることが明
かであろう。図5,6,7は異なるプロトコルを得るた
めWB/WT\端子に対して行った接続を示している。
これらの図はシステム内で単一のプロセッサを使用した
場合に該当する。
【0036】まず図5で、本発明のキャッシュ・メモリ
とその関連ロジックを内蔵したプロセッサ63はグラン
に接続されたそのWB/WT\端子を持つとする。こ
れはライトスルーが真であることを示し、従ってライト
スルー・プロトコルが実施されることを示している。ラ
イトスルー・プロトコルに付いては、データは無効
(I)状態か共用(S)状態にあり、それは単一プロセ
ッサ環境に対してキャッシュ・メモリ内のデータは有効
であることを示す。線66に接続されたグランド電位
で、キャッシュ・メモリは各々のラインのデータで
「I」ないし「S」状態とだけ連関する。プロセッサが
読取りサイクルを始めると、キャッシュ・メモリに読み
込まれたデータは図5の「I」から「S」への状態の変
化(矢印71)で示すように有効である。プロセッサが
データをキャッシュ・メモリから読み取ると、データは
矢印73で示すように「S」状態に留まる。データは例
えばキャッシュ・メモリからデータをパージすることに
より矢印72で示すように無効になることができる。
【0037】図6を見ると、WB/WT\端子が線65
によりVcc(例:5ボルト)に接続されたことを除い
てプロセッサ63と同一であるプロセッサ64が示され
ている。これはライトバック・プロトコルを使用してい
ることを示し、従って各々のデータラインのデータに付
いて、「I」ないし「E」「M」を示すビットが適用さ
れることを示している。データラインの充填が生じる
と、状態は無効からプロトコルが主記憶装置内で見つか
るコピーを有していることを示す「E」に変化する。書
込みヒットが生じると、状態は「E」から「M」へと変
化する。ライトバック・プロトコルに対する状態とそれ
らの変移は現在インテル860で使用されている。
【0038】図7を見ると、プロセッサ63ないし64
と同一のものとすることのできるプロセッサ65が示さ
れている。今回はWB/WT\端子は線66により線6
7に接続されている(線66はW/R\端子である)。
この接続によりライトワンス・プロトコルをもたらして
いる。例えばデータラインの充填毎に、W/R\は読取
りサイクルに対して低いからデータラインは「S」状態
になる。これは図7で矢印74により示されており、線
66が低電位(大地)に接続された図5の矢印71と対
応する。このデータラインへの引続きの書込みは「S」
状態故に主記憶装置へのライトスルーとなる。最初の書
込みを行っているとき、プロセッサはWB/WT\端子
を抽出し、書込みサイクル故に高いと判定し、矢印75
で示すように状態を「E」状態に変える(ライトワン
ス)。このデータラインへの全ての後続の書込みは、矢
印76で示すように「M」状態への変更故に、バス上に
出てこない。その結果、ライトワンス・プロトコルを実
現できる。
【0039】図8には、共用データバス81と共用アド
レスバス82に接続された2つのプロセッサ76(P
1)と77(P2)が示されている。プロセッサ76と
77は先述のプロセッサと同一のものとすることができ
る。すなわちそれらは本発明のキャッシュ・メモリとそ
の関連ロジックを内蔵している。共用バス81、82は
主記憶装置79と後述する外的書込みバッファ78に接
続されている。図8では、共用データに対するライトワ
ンス・プロトコルを実施するプロセッサ76と77に対
する様々な相互接続が示されている(他のプロセッサが
データラインの充填を行っている間にHIT\がメモリ
サイクルをスヌープしているプロセッサに対してアサー
される)。ここで分かるようにそれらの相互接続によ
り、最低限のグルー(glue)ロジックで一貫性を有
するキャッシュが可能になる。
【0040】線84、86で示すように、1つのプロセ
ッサからの出力アドレスストローブ端子(ADS\)は
他のプロセッサの外部アドレスストローブ端子に接続さ
れる。これによりプロセッサの各々はそれぞれ他のサイ
クルをスヌープできるようになる。すなわち、プロセッ
サP1(76)がバス82上にアドレスを出すと、線8
6上にADS\ストローブ信号が生じてプロセッサP2
(77)のEADS\で受信され、この受信したストロ
ーブ信号によりプロセッサP2(77)はアドレスを読
み取る。このストローブ信号はバッファ78やメモリ7
9といったシステム内の他の構成部分と接続できる。1
つのプロセッサのHIT\端子は線82と85により他
のプロセッサのWB/WT\端子に接続される。これに
より1つのプロセッサがデータを読み取ってそのキャッ
シュ・メモリ内のデータラインを充填し、他のプロセッ
サが同一データを有しているとき、プロセッサは確実に
データは「S」状態にあることを示すようになる。これ
はBOFF\信号に関連して後に説明するようにHIT
M\信号が低い場合は生じない。
【0041】プロセッサ76が主記憶装置からキャッシ
ュ・メモリへのデータラインを読取り、そのデータライ
はプロセッサ77内にも存在すると想定する。更にプ
ロセッサ77内のそのデータラインは「E」状態にある
と想定する。線82上のヒット信号の電位は下がり、図
9の線93で示すようにデータはプロセッサ76に
「S」状態として読み取られるようになる。メモリサイ
クルをスヌープしているプロセッサ77の場合は、図1
0bの線100で示すように「E」状態は「S」状態に
変化する。プロセッサ77では、HIT\信号は低く、
プロセッサ77内にデータがあることを示している。し
かしデータは「M」状態にはないので、HITM\信号
は高い。またこれはプロセッサ76による読取りサイク
ルであるので、線87上の無効信号は低いままとなる。
その結果、両プロセッサは「S」状態にあること、すな
わちデータはキャッシュ・メモリにより共用されること
を示している。
【0042】1つのプロセッサのW/R\信号は他のプ
ロセッサのINV端子に接続されている。これにより他
のプロセッサが書込みを行っている間に1つのプロセッ
サでデータの妥当性検査が確実に行われる。図8の線8
3と87はこれを行う。プロセッサ76が書込みを行い
そのアドレスのデータがプロセッサ77内で見つかると
想定する。線87上の信号は高くなり、それによりプロ
セッサ77内の対応するデータは「I」状態を取る。こ
れは図10aては矢印97、10bては矢印98、10
cでは矢印99により示されている。また図10aに示
すように、プロセッサ77内のデータが記述した条件に
対して「S」状態にあるとき、キャッシュ・メモリ内の
データは「M」状態ではなく、「S」状態にあるため、
HIT\信号は低くなり、HITM\信号は高くなる。
図10bで、データが「E」状態にあるとき、それは矢
印98で示すように「I」状態に変化し、HIT\信号
は再び高くなる。INVピンがEADS\で活性になれ
ば「M」から「S」への転移が生じる。図10cでプロ
セッサ77内のデータが矢印99で示すように「M」状
態であれば、それは無効化される。HIT\とHITM
\の両信号は低い状態にあることに留意する。あるプロ
セッサがメモリサイクルのスヌープを行って他のプロセ
ッサがデータを読み取っていることを感知した場合、そ
のプロセッサが既に「S」状態にあるならば、図10a
の矢印96に示すようにそれは「S」状態に留まる。こ
こでスヌープをしているプロセッサは、ヒットが生じる
とともに、データは修正状態にないことを表示する。
【0043】図8に示すように、1つのプロセッサのH
ITM\端子は線91と92により他のプロセッサのバ
ックオフ端子とバスアービタに接続されている。これに
より1つのプロセッサが修正データを含むとき、他のプ
ロセッサが主記憶装置から無効データを読み取るのを確
実に防ぐことができる。例えばプロセッサ76が修正デ
ータを含むとき、主記憶装置79内の対応するアドレス
のデータは不正確である。プロセッサ77がそのデータ
を読み取ろうとする場合は、線91上のHITM\信号
は低くなり、プロセッサ77に撤回させる。これは後に
説明する。
【0044】図9の残りは、プロセッサ76ないし77
のようなプロセッサが読取り、書込みを行う場合に、そ
のライトワンス・プロトコルの標準更新を示している。
矢印94で示すように、プロセッサは「S」状態で、
「S」状態を変更する事なくそのキャッシュ・メモリか
ら読み取ることができる。矢印95で示すように、プロ
セッサがそのキャッシュに一旦書き込むと(第1の書込
み)、状態は「E」に変化し、データが主記憶装置に読
み込まれる。別の書込みがその位置に対して生じると、
矢印101で示すように状態を「M」状態に変化し、デ
ータの真のコピーだけがキャッシュ・メモリ内に含まれ
ていることを示す。この「M」状態、特にHITM\信
号は他のプロセッサが主記憶装置から不正確なデータを
読み取るのを防ぐ。
【0045】説明のため、プロセッサ76が「M」状態
のデータを含み、プロセッサ77が主記憶装置79から
そのアドレスのデータを読み取ろうとしていると想定す
る。この時プロセッサ76はスヌープモードであり、メ
インバス上のアドレスを認識する。そのHIT\及びH
ITM\は共に電位が降下する。これはプロセッサ77
に主記憶装置は旧くなっているということを示す。特に
線91上の信号はプロセッサ77に撤回させ、主記憶装
置からのデータを読み取らないようにさせる。線91と
92に接続されたバスアービタ80は線91上の信号を
感知し、プロセッサ77が読み取ることができる前にプ
ロセッサ76からデータをフラッシュ可能にしなければ
ならないことを認識する。バスアービタ80は名目上、
両プロセッサのホールド端子を通してそれらを続行でき
るようにする。しかし上記のような特定状況下では、ア
ービタ80は1つのプロセッサを保留し、他のプロセッ
サが先に進むことができるようにする。ここでアービタ
はプロセッサ77を保留してプロセッサ76が主記憶装
置79を更新できるようにする。そしてプロセッサ77
をリリースしてそれが主記憶装置から捜しているデータ
を読み取ることができるようにする。バスアービタ80
は一般に他のよく知られた機能を遂行するが、本発明に
関しては本発明に関連した機能のみを説明した。
【0046】主記憶装置への書込みの強順序と弱順序 本発明のプロセッサは図1に示す内部書込みバッファ1
7を使用する。このバッファはよく知られた方法で作動
し、以下に説明するものを除き、外部メモリへの書込み
のためのデータとアドレスを格納するものである。更に
本発明のプロセッサは図8に示す外部バッファ78と共
に作動するようにしている。このバッファは主記憶装置
79に書き込むデータの一時的な記憶装置となる。それ
らのバッファによりバスが使用中でないときにデータを
主記憶装置に書き込むことができる。外部バッファ78
は、外部書込みバッファが空である時を示す(図11、
13の)線88上に信号(EWBE\)を与える。図1
3ではこの信号は線121上の書込み順序制御回路12
0に接続して示されている。線122上の書込み順序制
御回路120には内部書込みバッファが空である時を示
す同様の信号IWBE\が接続されている。
【0047】上記のようにいつ書込みバッファを使用
し、キャッシュ・メモリがどこをスヌープするかという
固有の問題がある。この問題はメモリに書き込まれるデ
ータの順序に関連する。これは、外部観測者の観点から
スヌープするキャッシュの(「他の」プロセッサ)ア
クセスが主記憶装置アクセスと等価であることから生じ
る。他方、書込みバッファ内のデータ(主記憶装置に書
き込まれるのを待っている)は主記憶装置更新とはみら
れない。その結果、書込みバッファを持つスヌープを行
キャッシュはメモリアクセス順序問題を生じることが
ある。ライトバック・プロトコルでは連続書込みが問題
を悪化させるのでこの問題は更に深刻になる。
【0048】本発明は2つの際だった書込み順序モード
を提供する。1つは弱順序モードと呼び、他方は強順序
モード(SOM)と呼ぶ。リセット期間の最後の3クロ
ックサイクル中にEWBE\線がアクティブになる場
合、プロセッサは強順序モードにロックされ、さもなく
ば弱順序モードが使用中となる。モードの変更にはリセ
ットが必要である。SOMビットは、ソフトウエアが順
序モードをチェックできるように内部制御レジスタに入
力される。図13で、書込み順序制御回路120はリセ
ット信号を受け取り、強順序モードあるいは弱順序モー
ドが選択されたかを判定するためリセット期間中に線8
8を検査する。弱順序モードでは、キャッシュへの書込
みはバッファ内のデータでも許可される。データキャッ
シュから修正データラインがフラッシュされると、書込
みサイクル中、同一データラインと関連したデータに対
して書込みバッファ内を検査する。そのようなデータが
見つかれば、無効化される。その結果、弱順序モード内
で修正データラインは懸案の書込みデータを含み、二重
格納を防ぐ。以下の説明から分かるように、強順序モー
ドの作動とは対照的である。
【0049】図11ではブロック102から107まて
は強順序モード中の全体的な作動を示す。まず、プロセ
ッサがブロック102で示すように書込みサイクルを要
求すると想定する。更にブロック103で示すようにそ
のプロセッサのキャッシュ・メモリ内でミスが生じると
想定する。次にブロック105に示すように、データは
外部バッファ78に書き込まれたと想定する。3つの条
件に対してEWBE\信号は高くなっている。ここで更
にブロック106に示すように、同一プロセッサないし
別のプロセッサが書込みサイクルを要求し、ブロック1
06、107に示すようにそのキャッシュ・メモリ内で
ヒットが生じると想定する。ヒットが生じると、プロセ
ッサはEWBE\信号を送って外部書込みバッファ内に
データがあるかどうかを判定し、更にブロック108に
示すようにIWBE\信号を送ってその内部書込みバッ
ファ内にデータがあるかどうかを判定する。上記の条件
に対してどちらかの信号が高ければ、ブロック109で
「プロセッサ凍結」で示すようにプロセッサは停止され
る。キャッシュ・メモリはブロック110で示すよう
に、全てのデータが外部書込みバッファと内部書込みバ
ッファから主記憶装置に書き込まれるまで更新されな
い。内部及び外部バッファが空になれば、キャッシュを
ブロック111に示すように更新することができる。
【0050】要求した書込みが続いてキャッシュを更新
する前に全てのバッファを空にしなければならない。キ
ャッシュ内の「M」データはミスと関連した最初の書込
みが外部書込みバッファに到着する前にキャッシュから
主記憶装置にフラッシュすることができるので、内部チ
エックが行われる。上記したように、ブロック107に
示すヒットと関連したキャッシュの更新は、バッファが
空になり、更にこのヒットと関連したデータが安全に外
部メモリに格納されるまでキャッシュに書き込まれな
い。これは、プロセッサが書込みバッファが空になるの
を待つ間にデータラインが無効化されるのを避けるため
に行われる。
【0051】以下の例を考える。まず書込みバッファが
空であると想定する。キャッシュ・メモリの1つの中の
データラインは「M」状態にあり、その仮想タグは
「I」状態にある。最初の書込みサイクルはこのデータ
ラインの物理的タグにヒットし、従ってデータキャッシ
ュが更新され、データは外部バスに入力される。ここで
第2の書込みサイクルで、ヒットがその修正データライ
ンに対して生じるが、データは強順序を確保するため外
部メモリに最初に書き込まなければならないので、キャ
ッシュ・メモリに書き込まれないと想定する。ここで
ヌープの結果として修正データラインに対してヒットが
生じ、それによりデータラインはデータキャッシュから
外部メモリにフラッシュされ、先に述べた2つの懸案の
書込みサイクルをバイパスすると想定する。ラインは第
1の書込みデータを含むが第2の書込みデータを含まず
にライトバックされ、データキャッシュへの入力は無効
化される。第1の書込みと関連したデータは二重格納と
識別され、要求は打ち切られる。第2の書込み要求は新
しい格納と識別され、ラインフラッシュの後に進められ
る。第2の書込みと関連したデータはデータキャッシュ
を参照し続け、ここで外部書込みが完了してそのデータ
ラインが無効状態になれば、内部要求は打ち切られる。
【0052】図13ではプロセッサの輪郭を線125で
示している。アドレスとデータバスはバス130により
示されている。上述したように、EWBE\信号は線8
8上の書込み順序制御回路120と接続され、内部書込
みバッファ空信号IWBE\は線122上の書込み順序
制御回路120に接続されている。回路はキャッシュ・
メモリ内でいつヒットが生じるかを示す入力と書込みサ
イクルを示す信号を受け取る。強順序を選択し、空でな
いバッファで書込みサイクル中にヒットが生じると、処
理装置15は線124上の信号で示すように凍結され
る。先述したように、バッファが一旦空になれば、書込
み順序制御回路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・・・データ・キャッシュ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 タル・ガット イスラエル国 31015 ハイファ・ピイ オーボックス 1659・(番地無し) (56)参考文献 特開 平3−87948(JP,A) 特開 昭64−36351(JP,A) 特開 平2−226449(JP,A) 特開 平3−6756(JP,A) 特開 昭61−290550(JP,A) 米国特許4484267(US,A) 日経コンピュータ,〜13!(1982−3 −22)PP.71−85「アクセス・ギャッ プを埋めるディスク・キャッシュの機能 を見る」

Claims (14)

    (57)【特許請求の範囲】
  1. 【請求項1】 キャッシュの一貫性を維持するコンピュ
    ータ・システムであって、 主記憶装置を備え、 単一のチップにそれぞれ製作された第1及び第2のマイ
    クロプロセッサにして、それぞれには、プロトコル状態
    を表すプロトコル・ビットをそれぞれ含む複数のデータ
    ラインを格納する付随キャッシュ・メモリが組み込まれ
    ている、第1及び第2のマイクロプロセッサを備え、 前記第1及び第2のマイクロプロセッサ及び前記主記憶
    装置に結合された共用バスとを備え、 前記第1及び第2のマイクロプロセッサのそれぞれに
    は、 出力アドレス・ストローブ・ピンと、 外部アドレス・ストローブ・ピンと、 キャッシュ一貫性のためのプロトコルをユーザが選択で
    きるようにするプロトコル選択ピンと が設けられて
    り、 第1のシステム構成では、前記第1のマイクロプロセッ
    サの前記出力アドレス・ストローブ・ピン及び前記外部
    アドレス・ストローク・ピンは、それぞれ、前記第2の
    マイクロプロセッサの前記外部アドレス・ストローク・
    ピン及び前記出力アドレス・ストローブ・ピンに結介さ
    れており、この第1のシステム構成によって、前記第2
    のマイクロプロセッサによって起動された前記主記憶装
    置に対するメモリサイクルを前記第1のマイクロプロセ
    ッサがスヌープし 前記第1のマイクロプロセッサによ
    って起動された前記主記憶装置に対するメモリサイクル
    を前記第2のマイクロプロセッサがスヌープできるよう
    になっている、コンピュータ・システム。
  2. 【請求項2】 前記キャッシュ一貫性のためのプロトコ
    ルは、ライトバライトスルー及びライトワンスの中から
    前記プロトコル選択ピンによって選択される 請求項1に
    記載のコンピュータ・システム。
  3. 【請求項3】 前記第1のシステム構成は、ライトワン
    ス・プロトコルを実行する構成であり、データラインの
    プロトコル状態は、修正(M)、排他的(E)共用
    (S)又は無効(I)である、請求項2に記載のコンピ
    ュータ・システム。
  4. 【請求項4】 前記第1及び第2のマイクロプロセッサ
    は、それぞれメモリサイクルが読み出しサイクルか書き
    込みサイクルかを示す書き込み/読み出し(W/R)ピ
    ンと、入力無効化ピンとを有し、一方のマイクロプロセ
    ッサが前記共用バス上に外部検出のアドレスをスヌープ
    し、前記入力無効化ピンがアサートされると、そのマイ
    クロプロセッサは付随するキャッシュ・メモリ内の当該
    データをI状態に置く、請求項3に記載のコンピュータ
    ・システム。
  5. 【請求項5】 前記第1のシステム構成において、前記
    第1のマイクロプロセッサのW/Rピンは、前記第2の
    マイクロプロセッサの前記入力無効化ピンに結合され、
    前記第2のマイクロプロセッサのW/Rピンは、前記第
    1のマイクロプロセッサの前記入力無効化ピンに結合さ
    れている、請求項4に記紋のコンピュータ・システム。
  6. 【請求項6】 前記第1及び第2のマイクロプロセッサ
    は、それぞれ外部検出のアドレスをスヌープしている間
    にその付随するキャッシュ・メモリに対するヒットが発
    生すると、マイクロプロセッサによってアサートされる
    ヒットピンを有する、請求項5に記載のコンピュータ・
    システム。
  7. 【請求項7】 前記第1のシステム構成において、前記
    第1のマイクロプロセッサの前記ヒットピン及び前記プ
    ロトコル選択ピンは、それぞれ第2のマイクロプロセッ
    サの前記プロトコル選択ピン及び前記ヒットピンに結合
    されている、請求項6に記載のコンピュータ・システ
    ム。
  8. 【請求項8】 前記共用バスを介して前記第1及び第2
    のマイクロプロセッサに結合されたバス・アービタを更
    に備え、このバス・アービタは、あるアドレスにM状態
    のデータラインを有する前記第2のマイクロプロセッサ
    が主記憶装置を更新するまで前記第1のマイクロプロセ
    ッサにその主記憶装置のそのアドレスのデータラインを
    読まないようにさせる、請求項6に記載のコンピュータ
    ・シス テム。
  9. 【請求項9】 単一チップ上で第1のキャッシュを組み
    込んだ第1のプロセッサ、第2キャッシュを有する装
    置、主記憶装置、及び共用バスを有するコンピュータ・
    システムであって、この共用バスは前記第1のプロセッ
    サ、前記第2キャッシュを有する装置及び前記主記憶装
    置の間で情報を転送し、前記第1及び第2のキャッシュ
    は付随したプロトコルビットをそれぞれ有する複数のデ
    ータラインをそれぞれ格納し、このプロトコルビットは
    プロトコル状態を示し、各データラインのプロトコル状
    態は、修正(M)、排他的(E)、共用(S)及び無効
    (I)の中から選択されるコンピュータ・システムにお
    いて、 (a)前記第1のプロセッサのプロトコル選択ピンに第
    1のポテンシャルを与えることによって、前記第1のプ
    ロセッサに対する第1のキャッシュ一貫性プロトコルを
    選択し、 (b)前記第1のキャッシュ一貫性プロトコルに従っ
    て、前記第1のプロセッサによって前記主記憶装置内の
    第1のアドレスに対して第1のメモリサイクルを発し、 (c)前記第1のプロセッサのプロトコル選択ピンに第
    2のポテンシャルを与えることによって、前記第1のプ
    ロセッサに対する第2のキャッシュ一貫性プロトコルを
    選択し、 (d)前記第2のキャッシュ一貫性プロトコルに従っ
    て、前記第1のプロセッサによって前記主記憶装置内の
    第2のアドレスに対して第2のメモリサイクルを発す
    る、 キャッシュの一貫性を維持する方法。
  10. 【請求項10】 前記第1のメモリサイクルは読み出し
    サイクルであり、更に、 (e)前記主記憶装置から取り出したデータを前記第1
    のアドレスに対応するデータラインの第1のキャッシュ
    に格納し、 (f)前記第1のキャッシュのデータラインの状態をS
    状態に変更する、請求項9に記載のキャッシュの一貫性
    を維持する方法。
  11. 【請求項11】 前記装置は第2のプロセッサを備えて
    おり、前記第2のメ モリサイクルは読み出しサイクルで
    あり、更に、 (e)E状態にある前記第2のアドレスに関するデータ
    ラインを有する前記第2のプロセッサによって、前記第
    2のアドレスをスヌープする請求項9に記載のキャッシ
    ュの一貫性を維持する方法。
  12. 【請求項12】 前記第2キャッシュを有する装置は第
    2のプロセッサを備えており、前記第2のメモリサイク
    ルは書き込みサイクルである、請求項9に記載のキャッ
    シュの一貫性を維持する方法。
  13. 【請求項13】 (e)前記第2のプロセッサによって
    データラインを含む前記第2のアドレスをスヌープし、 (f)前記第2のプロセッサの前記第2のアドレスに関
    するデータラインをI状態であると想定する請求項12
    に記載のキャッシュの一貫性を維持する方法。
  14. 【請求項14】 前記第2キャッシュを有する装置は第
    2のプロセッサを備えており、更に、 (e)M状態にある前記第2のアドレスに関するデータ
    ラインを有する前第記2のプロセッサによって、前記第
    2のアドレスをスヌープし、 (f)前記第1のプロセッサに前記第2のアドレスに関
    するデータラインを読むことを撤回させ、 (g)第2のプロセッサによって主記憶装置を更新し、 (h)前記第1のプロセッサに前記第2のアドレスに関
    するデータラインを読むことを許可する、 請求項9に記載のキャッシュの一貫性を維持する方法。
JP4298236A 1991-10-11 1992-10-12 プロセッサ Expired - Fee Related JP2717752B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US775161 1991-10-11
US07/775,161 US5301298A (en) 1991-10-11 1991-10-11 Processor for multiple cache coherent protocols

Publications (2)

Publication Number Publication Date
JPH05241954A JPH05241954A (ja) 1993-09-21
JP2717752B2 true JP2717752B2 (ja) 1998-02-25

Family

ID=25103509

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4298236A Expired - Fee Related JP2717752B2 (ja) 1991-10-11 1992-10-12 プロセッサ

Country Status (4)

Country Link
US (1) US5301298A (ja)
JP (1) JP2717752B2 (ja)
GB (1) GB2260432B (ja)
HK (1) HK1006881A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002169724A (ja) * 2000-12-01 2002-06-14 Oki Electric Ind Co Ltd キャッシュメモリにおける部分無効化装置

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2260429B (en) * 1991-10-11 1995-05-24 Intel Corp Versatile cache memory
US5469555A (en) * 1991-12-19 1995-11-21 Opti, Inc. Adaptive write-back method and apparatus wherein the cache system operates in a combination of write-back and write-through modes for a cache-based microprocessor system
EP0600626A1 (en) * 1992-11-13 1994-06-08 Cyrix Corporation Coherency for write-back cache in a system designed for write-through cache
US5561783A (en) * 1992-11-16 1996-10-01 Intel Corporation Dynamic cache coherency method and apparatus using both write-back and write-through operations
US5848283A (en) * 1993-01-29 1998-12-08 International Business Machines Corporation Method and system for efficient maintenance of data coherency in a multiprocessor system utilizing cache synchronization
US5813028A (en) * 1993-10-12 1998-09-22 Texas Instruments Incorporated Cache read miss request invalidation prevention method
US5586297A (en) * 1994-03-24 1996-12-17 Hewlett-Packard Company Partial cache line write transactions in a computing system with a write back cache
US5826052A (en) * 1994-04-29 1998-10-20 Advanced Micro Devices, Inc. Method and apparatus for concurrent access to multiple physical caches
US5890221A (en) * 1994-10-05 1999-03-30 International Business Machines Corporation Method and system for offset miss sequence handling in a data cache array having multiple content addressable field per cache line utilizing an MRU bit
US5669003A (en) * 1994-12-23 1997-09-16 Intel Corporation Method of monitoring system bus traffic by a CPU operating with reduced power
US5692153A (en) * 1995-03-16 1997-11-25 International Business Machines Corporation Method and system for verifying execution order within a multiprocessor data processing system
JP3787155B2 (ja) * 1995-03-17 2006-06-21 インテル・コーポレーション ローカル・バス上の多重プロセッシング・キャッシュ・コヒーレンシ・プロトコル
US5699548A (en) * 1995-06-01 1997-12-16 Intel Corporation Method and apparatus for selecting a mode for updating external memory
KR100252752B1 (ko) * 1997-06-26 2000-04-15 김영환 다단계 제어 버스 중재장치
JP2002032265A (ja) * 2000-07-14 2002-01-31 Hitachi Ltd キャッシュ・アクセス制御方式およびデータ処理システム
US8185602B2 (en) * 2002-11-05 2012-05-22 Newisys, Inc. Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters
US7802058B1 (en) * 2003-04-30 2010-09-21 Silicon Graphics International Method for performing cache coherency in a computer system
DE602004017879D1 (de) * 2003-08-28 2009-01-02 Mips Tech Inc Integrierter mechanismus zum suspendieren und endznem prozessor
US20050160238A1 (en) * 2004-01-20 2005-07-21 Steely Simon C.Jr. System and method for conflict responses in a cache coherency protocol with ordering point migration
US7818391B2 (en) 2004-01-20 2010-10-19 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration
US8468308B2 (en) * 2004-01-20 2013-06-18 Hewlett-Packard Development Company, L.P. System and method for non-migratory requests in a cache coherency protocol
US8145847B2 (en) * 2004-01-20 2012-03-27 Hewlett-Packard Development Company, L.P. Cache coherency protocol with ordering points
US7769959B2 (en) 2004-01-20 2010-08-03 Hewlett-Packard Development Company, L.P. System and method to facilitate ordering point migration to memory
US8090914B2 (en) * 2004-01-20 2012-01-03 Hewlett-Packard Development Company, L.P. System and method for creating ordering points
US7620696B2 (en) * 2004-01-20 2009-11-17 Hewlett-Packard Development Company, L.P. System and method for conflict responses in a cache coherency protocol
US8176259B2 (en) 2004-01-20 2012-05-08 Hewlett-Packard Development Company, L.P. System and method for resolving transactions in a cache coherency protocol
US7395374B2 (en) * 2004-01-20 2008-07-01 Hewlett-Packard Company, L.P. System and method for conflict responses in a cache coherency protocol with ordering point migration
US20070038814A1 (en) * 2005-08-10 2007-02-15 International Business Machines Corporation Systems and methods for selectively inclusive cache
US8762652B2 (en) * 2008-04-30 2014-06-24 Freescale Semiconductor, Inc. Cache coherency protocol in a data processing system
US8504777B2 (en) * 2010-09-21 2013-08-06 Freescale Semiconductor, Inc. Data processor for processing decorated instructions with cache bypass
US10025711B2 (en) 2012-01-16 2018-07-17 Qualcomm Incorporated Hybrid write-through/write-back cache policy managers, and related systems and methods
GR20130100707A (el) 2013-12-23 2015-07-31 Arm Limited, Μεταφραση διευθυνσης σε μια συσκευη επεξεργασιας δεδομενων

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4484267A (en) 1981-12-30 1984-11-20 International Business Machines Corporation Cache sharing control in a multiprocessor

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3151422C2 (de) * 1981-12-24 1984-05-30 Karl 3350 Kreiensen Burgsmüller Verbrennungs-Kolbenkraftmaschine
US4622631B1 (en) * 1983-12-30 1996-04-09 Recognition Int Inc Data processing system having a data coherence solution
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
JPS6436351A (en) * 1987-07-31 1989-02-07 Alps Electric Co Ltd Disk cache 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
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
JPH02226449A (ja) * 1989-02-28 1990-09-10 Toshiba Corp キャッシュメモリ制御方式
EP0404128B1 (en) * 1989-06-21 1997-09-03 Hitachi, Ltd. Multi-processor system with hierarchical cache memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4484267A (en) 1981-12-30 1984-11-20 International Business Machines Corporation Cache sharing control in a multiprocessor

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
日経コンピュータ,〜13!(1982−3−22)PP.71−85「アクセス・ギャップを埋めるディスク・キャッシュの機能を見る」

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002169724A (ja) * 2000-12-01 2002-06-14 Oki Electric Ind Co Ltd キャッシュメモリにおける部分無効化装置

Also Published As

Publication number Publication date
US5301298A (en) 1994-04-05
HK1006881A1 (en) 1999-03-19
GB2260432B (en) 1995-05-17
GB9220788D0 (en) 1992-11-18
GB2260432A (en) 1993-04-14
JPH05241954A (ja) 1993-09-21

Similar Documents

Publication Publication Date Title
JP2717752B2 (ja) プロセッサ
US5367660A (en) Line buffer for cache memory
US5717898A (en) Cache coherency mechanism for multiprocessor computer systems
US7032074B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
US5903911A (en) Cache-based computer system employing memory control circuit and method for write allocation and data prefetch
US6021468A (en) Cache coherency protocol with efficient write-through aliasing
US8037253B2 (en) Method and apparatus for global ordering to insure latency independent coherence
US5379396A (en) Write ordering for microprocessor depending on cache hit and write buffer content
JPH0659976A (ja) 遅延プッシュをコピー・バック・データ・キャッシュに再ロードする方法
US11789868B2 (en) Hardware coherence signaling protocol
US6535958B1 (en) Multilevel cache system coherence with memory selectively configured as cache or direct access memory and direct memory access
US6484237B1 (en) Unified multilevel memory system architecture which supports both cache and addressable SRAM
EP0624845A1 (en) Information processing system comprising one or more cached devices
WO1997004392A1 (en) Shared cache memory device
JPH0574103B2 (ja)
KR100380674B1 (ko) 멀티프로세서 시스템에서의 기록-통과 기억 동작동안 캐시코히어런스를 유지하는 방법 및 시스템
KR980013130A (ko) 멀티프로세서시스템의 교체 라이트백 사이클 처리장치 및 방법
IE901532A1 (en) Improved scheme for insuring data consistency between a¹plurality of cache memories and the main memory in a¹multiprocessor computer system

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081114

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091114

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091114

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101114

Year of fee payment: 13

LAPS Cancellation because of no payment of annual fees