JP2618178B2 - スカラ/ベクトル複合処理システム、スカラ/ベクトル複合処理システム用の相互問い合わせ装置及びデータ・コヒーレンスを維持するための方法 - Google Patents

スカラ/ベクトル複合処理システム、スカラ/ベクトル複合処理システム用の相互問い合わせ装置及びデータ・コヒーレンスを維持するための方法

Info

Publication number
JP2618178B2
JP2618178B2 JP5075849A JP7584993A JP2618178B2 JP 2618178 B2 JP2618178 B2 JP 2618178B2 JP 5075849 A JP5075849 A JP 5075849A JP 7584993 A JP7584993 A JP 7584993A JP 2618178 B2 JP2618178 B2 JP 2618178B2
Authority
JP
Japan
Prior art keywords
vector
data unit
processor element
scalar
request
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 - Lifetime
Application number
JP5075849A
Other languages
English (en)
Other versions
JPH0635953A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH0635953A publication Critical patent/JPH0635953A/ja
Application granted granted Critical
Publication of JP2618178B2 publication Critical patent/JP2618178B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8076Details on data register access
    • 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/0817Cache consistency protocols using directory methods
    • G06F12/0828Cache consistency protocols using directory methods with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、スカラ/ベクトル複合
処理システム内の相互問い合わせに係り、更に詳細に説
明すれば、各プロセッサが専用のキャッシュをそれぞれ
備えている多重プロセッサ形式のスカラ/ベクトル複合
処理システム・システム内のデータのコヒーレンス(一
貫性又は完全性)を保証することに係る。なお、明細書
の以下の記述を簡潔にするため、「XI」という略語が
「相互問い合わせ」を表し、「EX」が「排他的所有
権」(書き込み権限)を表し、「RO」が「共有所有
権」(読み取り専用権限)を表すものとする。また、
「L1」、「L2」、「L3」という略語がシステム記
憶階層のそれぞれのレベルを表し、数字が小さいほどプ
ロセッサの側に接近して位置するものとする。例えば、
L1メモリは、それぞれのプロセッサ専用に設けられる
キャッシュ・メモリであり、以下これを「L1キャッシ
ュ」と呼び、L1キャッシュに付随するデイレクトリを
「L1デイレクトリ」と呼ぶ。同様に、L2メモリは、
複数のプロセッサによって共有されたキャッシュ・メモ
リであり、以下これを「L2キャッシュ」と呼ぶ。更
に、複数のプロセッサによって共有された主記憶装置に
ついては、以下これを「L3メモリ」と呼ぶことにす
る。
【0002】
【従来の技術及びその課題】各プロセッサがL1キャッ
シュをそれぞれ備えている多重プロセッサ・システムで
は、データ・コヒーレンスの問題、即ちL2キャッシュ
又はL3メモリ内のデータ内容と、幾つかのL1キャッ
シュ内に存在するそのデータの対応するコピーとの整合
性を維持しなければならないという問題が存在する。こ
のような整合性が失われるのは、或るプロセッサが、L
3メモリ又は自己のL1キャッシュの何れかに書き込み
を行う際に、他のプロセッサのL1キャッシュ内に存在
するそのデータの全てのコピーが無効(古いデータ)で
あることをマークしないか、又はこれらのコピーを同時
に更新することを保証しない場合である。本発明は、複
数の実行要素を備えた高性能のスーパコンピュータ・シ
ステムについて、この問題を解決することに向けられて
いる。
【0003】各プロセッサが1つ以上のスカラ・プロセ
ッサ要素(SXE)及び1つ以上のベクトル・プロセッ
サ要素(VXE)をそれぞれ備えている高性能の多重プ
ロセッサ・システムでは、それぞれのSXEがL1キャ
ッシュを通してL3メモリをアクセスし、それぞれのV
XEがL1キャッシュをバイパスしてL3メモリとの間
でデータを直接的にフェッチ(読み取り又は取り出し)
及びストア(書き込み又は変更)することが極めて有利
である。このことは、主として大規模な先端科学技術ア
プリケーション及び高性能のスーパコンピュータ向けに
設計された「密結合」型の多重プロセッサ・システムに
おいて特に当てはまる。
【0004】これには、幾つかの理由がある。L1キャ
ッシュが必要となるのは、スカラ専用アプリケーション
の性能を向上させるためであり、また、科学技術計算を
主とするアプリケーションのスカラ部分についてもそう
である。これに対し、VXEの演算が支配的な高度並列
アプリケーションについては、L1キャッシュの容量
や、帯域幅や、キャッシュのブロッキング機構が、性能
を著しく制限することがあるから、VXEの「パイプラ
イン化」オペランドを、L3メモリとの間で直接的に要
求することが重要となる。このことは、次のようなシス
テム設計上の2つの重要な要件をもたらす。
【0005】(a)VXE要求のトラヒック・レートが
高いので、L3メモリの設計は、全ての要求をL1キャ
ッシュを通して行うような設計に比べて、一層多い数の
オペランド要求に適応しなければならない。
【0006】(b)「データ・コヒーレンス」を保証す
るために、システムは、極めて高いVXE要求のトラヒ
ック・レートにサービスできる処の、集中型のコヒーレ
ンス機構を備えなければならない。
【0007】現行の多重プロセッサ型スーパコンピュー
タの設計は、データ・コヒーレンスの問題を回避するた
め、通常のスカラ型のL1キャッシュを含めないか、又
はL1キャッシュを設ける場合には、データ・コヒーレ
ンスの解決をオペレーティング・システム又はアプリケ
ーションに負わせるようにしている。もし、L1キャッ
シュを含めないように設計されていれば、高性能ではあ
るが高価なSRAMチップを使用して、L3メモリへの
アクセス回数を最少化することができる。しかし、この
ような設計手法は、アプリケーションの性能を向上させ
るのと引き換えに、アプリケーションの範囲を限定する
か、又はソフトウェアに相当の複雑さを加えることにな
る。他方、各プロセッサがL1キャッシュをそれぞれ備
えている従来の多重プロセッサ・システムでは、全ての
L1ディレクトリのコピーである1組のコピー・ディレ
クトリを使用して、データ・コヒーレンスを維持するよ
うにしている。即ち、各プロセッサの読み取り要求につ
いて、他の全てのプロセッサのコピー・ディレクトリ内
で相互問い合わせを行って、他の任意のプロセッサが要
求されたデータ・ユニットのコピーを格納しているかを
否かを確認する、ということである。このプロセスは、
一度にただ1つのプロセッサだけが、一のデータ・ユニ
ットのEX所有権を有することを保証する。即ち、一の
データ・ユニットのEX所有権を有する唯1つのプロセ
ッサだけが、そのデータ・ユニットに書き込むことを許
されるのである。また、各データ・ユニットには、RO
所有権を設定することもできる。その場合、全てのプロ
セッサは、そのデータ・ユニットの読み取りを行うこと
を許されるが、どのプロセッサもそのデータ・ユニット
への書き込みを行うことはできない。
【0008】データ・コヒーレンスの問題は、ストアス
ルー型のL1キャッシュについては、比較的簡明であ
る。なぜなら、ストアスルー型のL1キャッシュ内で書
き込みを行う場合、複数のプロセッサによって共有され
た補助メモリでも書き込みを同時に行う必要があるから
である。L1キャッシュをバックアップする補助メモリ
は、L2キャッシュである場合もあり、L3メモリであ
る場合もある。L2キャッシュは、ストアイン型又はス
トアスルー型のどちらでもよいが、L3メモリに至る書
き込みバスのトラフィックを減少させるためには、スト
アイン型であることが望ましい。
【0009】ストアイン型のL1キャッシュを使用する
理由は、主として、補助メモリとL1キャッシュとの間
に設けられるメモリ・バスの帯域幅が、同じ頻度のプロ
セッサ・アクセスについて、ストアスルー型のL1キャ
ッシュよりも小さい、という点にある。一のキャッシュ
・ロケーションを一のプロセッサの要求に割り当てる
と、この要求に応じてL3メモリ又は他のキャッシュか
ら読み取られたデータ・ユニットのコピーを受け取るこ
とができる。ストアイン型のL1キャッシュを使用する
場合には、プロセッサは、一のキャッシュ・ロケーショ
ン内にある一のデータ・ユニットにのみ書き込みを行っ
て、L3メモリ内の対応するアドレスにあるデータ・ユ
ニットへの書き込みを行わない。従って、そのキャッシ
ュ・ロケーションは、そのデータ・ユニットの最新の変
更バージョンを格納する処の、システム内の唯1つの記
憶位置となる。プロセッサは、その実行中プログラムが
必要とするたびに、そのデータ・ユニットへ書き込みを
行うことができる。システム内のデータ・コヒーレンス
を維持するには、各データ・ユニットの最新のバージョ
ンを、その後続処理に用いることが不可欠である。
【0010】ストアスルー型のL1キャッシュは、読み
取りアクセスについては単独で用いられるが、書き込み
アクセスについては、アクセスされたデータ・ユニット
の最新のバージョンを維持するように、このL1キャッ
シュ及び次の記憶階層レベルにある補助メモリ(L2キ
ャッシュ又はL3メモリ)内の同じデータ・ユニット
を、両者ともに変更することが必要である。しかし、こ
のようなキャッシュのストアスルー特性は、システム内
のデータ・コヒーレンスの問題を解決しない。なぜな
ら、ストアスルー型の他のL1キャッシュが、同じデー
タ・ユニットの古いバージョンを格納することがあり得
るからである。従って、多重プロセッサ・システム内の
複数のL1キャッシュがストアイン型又はストアスルー
型のどちらであろうとも、新しく要求されたデータ・ユ
ニットを一のL1キャッシュに読み取る際に、これらの
L1キャッシュの内容について相互問い合わせを行うこ
とが必要となるのである。
【0011】任意のプロセッサが一のデータ・ユニット
へ最初の書き込みを行う場合は、これに先立ち、そのプ
ロセッサに対し、そのデータ・ユニットのEX所有権が
割り当てられる。従来技術では、プロッセッサに所有権
を割り当てるため、L1キャッシュ内のそれぞれのデー
タ・ユニットに関連するL1デイレクトリ内の、EXフ
ラグ・ビットを設定するようにしている。例えば、オン
状態にあるEXフラグ・ビットはEX所有権を表し、オ
フ状態にあるEXフラグ・ビットはRO所有権を表す。
一のデータ・ユニットのEX所有権が一のプロセッサに
割り当てられている場合には、そのプロセッサだけが、
そのデータ・ユニットへ書き込みを行うことができる。
これに対し、一のデータ・ユニットのRO所有権が割り
当てられている場合は、どのプロセッサも、そのデータ
・ユニットへの書き込みを行うことができない。即ち、
システム内の全てのプロセッサは、そのデータ・ユニッ
トを読み取ることができるに過ぎず、従って複数のL1
キャッシュ内に、変更不能なデータ・ユニットの多数の
コピーが存在することがあり得るのである。
【0012】一般に、キャッシュは、要求に基づいて、
そのシステム記憶階層からデータ・ユニットを読み取
る。キャッシュ・ミスが生ずる場合は、ミスしたデータ
・ユニットを読み取るために、一の読み取り要求を生成
してこれを次の記憶階層レベルに送信する。
【0013】ストアイン型のL1キャッシュは、その置
換制御部(LRU制御部)の制御下で、変更済みのデー
タ・ユニットをL3メモリに送信する。一のデータ・ユ
ニットの置換が行われるのは、そのデータ・ユニットが
L1キャッシュ内で最も長い間使用されておらず、しか
もこのL1キャッシュ内にある他のエントリのどれも
が、新しい要求について使用できないような場合であ
る。最も長い間使用されなかったLRUエントリを、新
しい要求と置換するために選択する場合、この置換プロ
セスを「エージング・アウト」と呼ぶこともある。置換
制御部は、これが選択したLRUエントリ内にあるデー
タ・ユニットを、その変更の有無に拘わらず、キャッシ
ュ・ミスの結果として読み取られた新しいデータ・ユニ
ットと置換させる。L1キャッシュ内にある置換すべき
データ・ユニットが変更済みである場合は、L3メモリ
から読み取り中の新しく要求されたデータ・ユニットを
重ね書きする前に、かかる変更済みのデータ・ユニット
をL1キャッシュから放出して、L3メモリのような他
の記憶位置に書き込まねばならない。例えば、一のプロ
セッサが、そのL1キャッシュ内に現に存在しないデー
タ・ユニットを要求する場合には、要求されたアドレス
を使用して、そのデータ・ユニットをL3メモリ(又は
他のキャッシュ)から読み取るとともに、そのデータ・
ユニットを新しく割り当てたLRUキャッシュ・ロケー
ションに書き込まねばならない。この新しいデータ・ユ
ニットを受け取るべきLRUキャッシュ・ロケーション
は、現に使用されていないキャッシュ・ロケーションで
ある。もし、使用可能な全てのキャッシュ・ロケーショ
ンが変更済みのデータ・ユニットで以て現に占有されて
いれば、そのうちの1つを新しいデータ・ユニットのた
めに再割り当てしなければならない。しかし、再割り当
てしたキャッシュ・ロケーションにその新しいデータ・
ユニットを書き込む前に、このキャッシュ・ロケーショ
ン内にある変更済みのデータ・ユニットを、L3メモリ
へ放出することが必要となる。即ち、この放出プロセス
は、新しいデータ・ユニットをL1キャッシュに書き込
む前に、行わなければならない。放出されたデータ・ユ
ニットの所有権は、プロセッサのEX所有権からL3メ
モリの所有権に変更される。
【0014】もし、L1キャッシュ内にある一のデータ
・ユニットが変更済みでなければ、そのデータ・ユニッ
トとL3メモリ内にあるバックアップ・コピーとは同じ
であるから、そのデータ・ユニットを置換するに当たっ
ては、放出を行わないで、そのデータ・ユニットに単に
重ね書きすればよい。
【0015】米国特許第4394731号は、多重プロ
セッサ・システム内のデータ・コヒーレンスを制御する
ために、ストアイン型のL1キャッシュに付随するL1
デイレクトリの各エントリ内で、EX/ROフラグ・ビ
ットを使用することを開示している。この開示内容を簡
述すると、各L1キャッシュ内に現に存在する全てのデ
ータ・ユニットの各プロセッサによる所有権を識別する
ために、各L1デイレクトリごとに一のコピー・デイレ
クトリをそれぞれ設ける。そして、他のプロセッサがE
X所有権を取得することを要求している一のデータ・ユ
ニットを、どのプロセッサが現に所有又は共通に使用し
ているかを識別するため、全てのコピー・デイレクトリ
を1組として使用する。相互問い合わせ(XI)とは、
任意のデータ・ユニットのEX所有権又はRO所有権を
有する任意のプロセッサを識別するため、これらのコピ
ー・デイレクトリ相互間で用いられるプロセスであり、
具体的には、要求されたデータ・ユニットのアドレス
を、全てのコピー・デイレクトリ内にあるアドレスと比
較することによって行われる。もし、要求されたデータ
・ユニットのアドレスが一のコピー・デイレクトリ内で
検出されるならば、これは、そのアドレスに対応するデ
ータ・ユニットを格納する一のL1キャッシュ、従って
そのプロセッサを識別することになる。かくて、識別さ
れたプロセッサのコピー・デイレクトリからそのL1キ
ャッシュに相互無効化信号を送信して、そのデータ・ユ
ニットのエントリを無効化した後に、そのデータ・ユニ
ットの所有権を他のプロセッサのL1キャッシュに引渡
す。
【0016】このXIプロセスは、一度に唯1つのプロ
セッサだけが一のデータ・ユニットを排他的に所有する
(そのEX所有権を有する)ことを保証するように、他
のL1キャッシュで検出されたそのデータ・ユニットの
全てのコピーを無効化することを特徴としている。
【0017】従って、何れの時点においても、多重プロ
セッサ・システム内の複数のプロセッサのうち唯1つの
プロセッサだけが、任意のデータ・ユニットのEX所有
権を有することができる。一のデータ・ユニットのEX
所有権を他のプロセッサが要求する場合、そのデータ・
ユニットのEX所有権を、(現所有者である)一のプロ
セッサから当該他のプロセッサに変更することができ
る。プロセッサにEX所有権を割り当てるための従来の
機構は、L1デイレクトリ・エントリの各々にEX/R
Oフラグ・ビットを設けて、このエントリに関連するデ
ータ・ユニットが当該プロセッサによって「所有」され
ていることを表すように、このEX/ROフラグ・ビッ
トをオン状態に設定する、というものである。このEX
/ROフラグ・ビットがオフ状態にあると、これは関連
するデータ・ユニットのRO所有権を表し、この場合に
は、システム内の全てのプロセッサが関連するデータ・
ユニットを同時に使用することができる。かくて、任意
のL1キャッシュ内にある有効な各データ・ユニット
は、EX所有権又はRO所有権のどちらかを有する。
【0018】前掲の米国特許第4394731号に係る
コピー・デイレクトリを用いたXI機構は、L3メモリ
からストアイン型の一のL1キャッシュに読み取られる
データ・ユニットについて、次の所有権を自動的に割り
当てるようにしている。 1.EX所有権:全てのプロセッサのコピー・デイレク
トリ内で、そのデータ・ユニットが検出されない場合。 2.EX所有権:他のプロセッサのコピー・デイレクト
リ内で、そのデータ・ユニットが変更済みで且つEX所
有権を有するものして検出される場合。要求されたその
データ・ユニットは、要求元プロセッサのL1キャッシ
ュに読み取られる前に、前記他のプロセッサのL1キャ
ッシュから放出される。 3.RO所有権:他のプロセッサのコピー・デイレクト
リ内で、そのデータ・ユニットが変更済みでなく且つE
X所有権を有するものとして検出され、また新しい要求
がそのデータ・ユニットを変更しそうにない場合(新し
い要求が読み取り要求に相当する場合)。このようにし
て検出されたそのデータ・ユニットは、前記他のプロセ
ッサのL1キャッシュ内に残され、そのEX所有権がR
O所有権に変更される。 4.EX所有権:1以上の他のプロセッサのコピー・デ
イレクトリ内で、そのデータ・ユニットがRO所有権を
有するものとして検出され、そして新しい要求がそのデ
ータ・ユニットを変更しそうな場合(新しい要求が書き
込み要求に相当する場合)。このようにして検出された
そのデータ・ユニットは、前記他のプロセッサのL1キ
ャッシュ内で無効化される。このような無効化動作は、
「EX所有権へのプロモート」と呼ばれる、時間のかか
るプロセスを用いる。 5.RO所有権:他のプロセッサのコピー・デイレクト
リ内で、そのデータ・ユニットがRO所有権を有するも
のとして検出される場合。このようにして検出されたそ
のデータ・ユニットは、そのRO所有権のまま、前記他
のプロセッサのL1キャッシュ内に残される。 6.RO所有権:プロセッサ要求の型に関係なく、その
データ・ユニットがページ・テーブル・エントリであり
且つこのエントリ内でRO所有権を有するように設定さ
れていることが検出される場合。
【0019】Gannonらによる米国特許第5265
232号(1991年4月3日付けの米国特許出願第6
79900号及び特願平4−29537号に対応)に開
示されている設計は、データ・コヒーレンスの問題を論
理的に解決してはいるが、前述のように全てのメモリ要
求がL1キャッシュを通ることを必要としているため
に、システムの性能を全体として制限している。
【0020】Beanらによる米国特許第549026
1号(1991年4月3日付けの米国特許出願第680
176号及び特願平4−39482号に対応)は、L1
キャッシュ内にあるデータ・ユニットの所有権のインタ
ーロック制御を開示する。このインターロック制御は、
ストアイン型の一のL1キャッシュ内で排他的に所有さ
れている一のデータ・ユニットの所有権の変更を、その
プロセッサが発行するそのデータ・ユニットを対象とす
る全ての書き込みの完了とインターロックさせることを
意図する。かかるインターロックは、そのプロセッサ
が、そのデータ・ユニットのEX所有権又はRO所有権
のどちらかを要求する他のプロセッサから一の相互無効
化(XI)信号を受け取り且つこれに応答するまで、継
続して行われる。
【0021】
【課題を解決するための手段】本発明の目的は、データ
・コヒーレンスの問題を解決するとともに、「パイプラ
イン化」オペランドのVXE要求をL3メモリに対し直
接的に与えることを可能にすることによって、スカラ型
のL1キャッシュから得られる利点を格納すると同時
に、通常のスーパコンピュータ設計の利点を得るため
の、手段及び方法を提供することである。本発明のアプ
ローチによれば、結果的に得られるハードウェア・シス
テムの設計は、より広範囲のアプリケーションに対して
最適化されるだけでなく、データ・コヒーレンスを保証
するというタスクをシステム・ソフトウェアに課さな
い。
【0022】本発明の1実施例において、スカラ/ベク
トル複合処理システムは、L3メモリと、複数のベクト
ル・プロセッサ要素(以下「VXE」と略記)と、それ
ぞれ各自のキャッシュを備えたスカラ・プロセッサ要素
(以下「SXE」と略記)とから構成されている。SX
E相互間に設けられている相互問い合わせ(XI)手段
は、最新のコピーがL3メモリ及びL1キャッシュ内に
書き込まれていることを保証するためのものである。こ
の相互問い合わせ手段内のXIディレクトリは、それぞ
れのSXE内にあるデータ・ユニット(キャッシュ・ラ
イン)の状態を格納している。また、それぞれのSXE
が無効データを読み取らないように、VXEが現に書き
込み中のデータ・ユニットを記録するためのベクトル・
ストア・レジスタ(以下「VSR」と略記)スタックが
設けられている。
【0023】
【実施例】本発明は、相互問い合わせ(XI)機構を使
用して、データ・コヒーレンスを保証し且つ超高速のV
XE要求トラヒック・レートにサービスすることができ
るように、書き込みを行うべくVXEが現にアドレス中
のL3メモリのデータ・ユニットのアドレスを格納する
1組のVSRスタックを設けることを特徴とする。これ
らのデータ・ユニットは、キャッシュ・ラインのサイズ
(例えば、128バイト境界上の128連続バイト)を
増分単位とする。本発明の主題は、多重プロセッサ・シ
ステム内のデータ・コヒーレンスを維持するために、こ
れらのVSRスタックをどのように使用するかという点
に向けられている。
【0024】本発明を使用するための重要な「前提条
件」がある。即ち、このVSR設計の機構を、前掲の米
国特許第5265232号に記載されたものと同様の、
集中型のコヒーレンス手段(XIディレクトリ)と連係
して使用しなければならない、ということである。この
特許を、以下、「Gannonらの出願」と称する。な
お、Gannonらの出願は、前掲のBeanらによる
米国特許第5490261号を援用している。
【0025】Gannonらの出願では、L1キャッシ
ュからの全てのメモリ要求が、集中型のXIディレクト
リを通して与えられるようになっている。各プロセッサ
がVXEを備えているものと仮定すると、Gannon
らの出願では、VXEのデータ要求は、他の全ての型の
データ要求と同様に、各プロセッサのL1キャッシュを
通して与えられることになる。
【0026】Gannonらの出願では、全てのL1キ
ャッシュは、ストアスルー機構を使用している。即ち、
各プロセッサは、自己のL1キャッシュにデータを書き
込むと同時に、同じデータをL3メモリに書き込む。一
のプロセッサが書き込みを行うことを許されるのは、そ
のプロセッサが自己のL1キャッシュ内にあるそのアド
レスされたデータ・ユニットについてEX所有権を有す
る場合だけである。即ち、多重プロセッサ・システム内
にある唯1つのプロセッサだけが、一のデータ・ユニッ
トのEX所有権を有することができるに過ぎない。従っ
て、もし、一のプロセッサが自己のL1キャッシュ内に
ある一のデータ・ユニットのEX所有権を有していれ
ば、他の如何なるL1キャッシュも、EX所有権又はR
O所有権を以て、そのデータ・ユニットを格納すること
ができない。しかし、任意の数のL1キャッシュが、R
O所有権を以て一のデータ・ユニットを格納することが
できる。Gannonらの出願は、コヒーレンス手段の
実施例として、L2キャッシュを備えたもの(図1)
と、備えないもの(図9)とを幾つか開示している。説
明を簡潔にするため、本明細書では、L2キャッシュを
一切備えていない実施例のみを開示する。これは、Ga
nnonらの出願の図9の実施例に相当する。この実施
例の場合、Gannonらの出願は、スカラ型のデータ
要求についてコヒーレンスを維持するための手段及び方
法を開示している。それらの手段及び方法は、本発明に
おけるスカラ型のデータ要求についても適用されるもの
とする。
【0027】本発明は、スカラ/ベクトル複合処理シス
テム内の各VXEごとに、1組(例えば、256個)の
VSRスタックを設けている。VSRスタックの各組
は、唯1つのVXEと関連付けられている。一のVXE
がL3メモリへ直接的にオペランドを書き込むための準
備を完了する場合、そのVXEは、図1のXI要求バス
を通して空きのVSRスタックを取得した後、図1のX
I応答バスを通して相互問い合わせ(XI)機構から、
L3メモリへの書き込みを行うための許可を受けなけれ
ばならない。この許可が付与されるのは、このデータ・
ユニットを格納する全てのL1キャッシュが、このデー
タ・ユニットを無効とマークした後だけである。各VS
Rスタックは、一のデータ・ユニットの実アドレスを格
納する。一旦、一のVSRスタックを取得すると、その
VXEは、L3メモリ内にあるそのデータ・ユニットを
対象として、所要数のオペランドを書き込むことができ
る。もし、そのVXEがストライド1(連続オペラン
ド)を書き込んでいるのであれば、同一のVSRスタッ
クを使用して、16個までの連続的なフルワード・オペ
ランド又は32個までの連続的なダブルワード・オペラ
ンドを書き込むことができる。1以外のストライドにつ
いては、1つのVSRスタックによって「カバーされ
る」書き込みの数は減少する。キャッシュ・ラインのサ
イズが128バイトであり、またストライドが16(フ
ルワード・オペランドの場合)又は32(ダブルワード
・オペランドの場合)よりも大きい場合、そのVSRス
タックは、1つのVXE書き込みを行うのに十分である
に過ぎない。そのVXEがL3メモリへ実際に書き込む
べき値の計算を完了する時点の十分前に、そのVXEが
必要なVSRスタックを取得できるようにするには、大
きなVSRスタックの組が必要になる。このようにする
と、そのVXEは、実際の書き込みを行う準備を完了す
る時点の十分前に、複数のVSRスタックを取得するこ
とができるので、将来の書き込みのためのVSRスタッ
クを事前に割り当てるようにしても、性能に悪影響を及
ぼさないのである。更に、そのVXEは、ベクトル命令
に格納されているベクトル長さ及びストライド値によっ
て、各VSRスタックによって「カバーされる」オペラ
ンドの数及び各VSRスタックに記入すべきデータユニ
ット・アドレスを決定するのに必要な情報を有してい
る。
【0028】1つ以上のベクトル書き込みを行うに当た
って一のVSRスタックを取得するには、通常のXI要
求機構を経なければならない。なぜなら、1つ以上のL
1キャッシュがその要求されたデータ・ユニットを格納
しているか否かを決定するためには、集中型のXIディ
レクトリをアクセスしなければならないからである。も
し、1つ以上のL1キャッシュがそのデータ・ユニット
を格納していれば、要求されたVSRスタックを有効と
マークする前に、これらのL1キャッシュ内のそのデー
タ・ユニットを無効化しなければならない。この点に関
し、そのVXEが一のVSRスタックを取得することを
要求して、L3メモリへの書き込みの許可を得るという
動作は、Gannonらの出願に開示されているよう
に、通常のL1キャッシュ内にあるデータ・ユニットに
ついてEX所有権を要求するという動作と類似してい
る。しかし、そのVXEが一のVSRスタックによって
カバーされている一のデータ・ユニットへの書き込みを
完了した場合は、そのVXEは、XI機構内の他の活動
とは無関係にそのVSRスタックをリセット(解除)す
ることができる。かくて、単一のVXEは、1つのVS
Rスタックを取得すると同時に、他のVSRスタックを
解除することができる。このことは、VXEトラヒック
についてのXI機構の要求処理能力を倍増する効果を有
する。このことは、データ・コヒーレンスを維持するた
めに本発明を使用する際の重要な利点となる。
【0029】ベクトル・オペランドの読み取りは、如何
なるVSRスタックも使用せず、従って如何なる場合で
もXI機構に干渉することはない。なぜなら、ベクトル
・オペランドの読み取りは、XI機構に対していかなる
要求も行わずに、L3メモリからデータを読み取るに過
ぎないからである。これが可能である所以は、L1キャ
ッシュがストアスルー型であり、従ってL3メモリが常
に論理的にコヒーレント、即ちデータの最新の状態がL
3メモリ内に存在するからである。もし、L1キャッシ
ュがストアイン型であれば、このことは当てはまらない
であろう。
【0030】ベクトル処理では、1つのVXEが偶数オ
ペランドを処理しているのと同時に、他のVXEが奇数
オペランドを処理しているということが、屡々あり得
る。従って、両方のVXEが、それぞれの別個のVSR
スタックを通して、L3メモリ内の同一のデータ・ユニ
ットを同時にアクセスしているということがあり得る。
この場合、設計者は、次の2つの選択肢を有する。
【0031】(a)両方のVXEが、それぞれの別個の
VSRスタックを通して、L3メモリ内の同一のデータ
・ユニットに同時に書き込むことができるようにする。
【0032】(b)一度に何れか一方のVXEが、L3
メモリ内の所定のデータ・ユニットに書き込むことがで
きるようにする。
【0033】何れの選択も可能であり、明らかに(b)
の選択肢のほうが安全であるが、それにも拘わらず、本
発明者は、(a)の選択肢を実現するほうが性能上の観
点から遥かに好ましいと結論した。一のアプリケーショ
ンが、そのアプリケーション又はシステム・ソフトウェ
アを通してL3メモリのセクションをインタロックせず
に、同一オペランドのロケーションに2つの別個のVX
Eを通して書き込みを行うというリスクは、殆どないか
らである。ここで留意すべきは、L3メモリ内にある同
一のデータ・ユニットへの並行的なVXE書き込みは許
されるが、1つ以上のVXEによって現に書き込み中の
任意のデータ・ユニット(即ち、有効なVSRスタック
内に格納されているデータユニット・アドレスに対応す
るデータ・ユニット)をどのL1キャッシュも格納でき
ないことに留意されたい。
【0034】一のL1キャッシュ内にあるデータ・ユニ
ットのEX又はROアクセスのためにSXEによってな
されたXI要求は、XI要求バスを介してXI機構へ与
えられる。このXI機構は、(Gannonらの出願に
開示されているように)そのデータ・ユニットを格納し
ている他のL1キャッシュを検査することに加えて、そ
のデータ・ユニットが任意のVXEによって現に書き込
み中であるか否かを検出するために全てのVSRスタッ
クを検査する。もし、そのデータ・ユニットのアドレス
が(有効ビットをオン状態に設定されている)有効なV
SRスタックによって格納されているのであれば、XI
機構は、全てのVXEがそのデータ・ユニットを解除す
るまで、そのデータ・ユニットについてEX所有権又は
RO所有権を許可することを遅延(待機)させなければ
ならない。
【0035】図1には、N個のCPU(CPU1〜N)
から成る多重プロセッサ・システム100が示されてい
る。CPU1〜Nの各々は、例えば、ストアスルー型の
L1キャッシュ104及びL1ディレクトリ105を備
える1つのSXE 103と、1つのVXE 107と
から構成されている。また、各CPUは、読み取り専用
であり且つそのCPUの命令ストリームを格納する命令
キャッシュも含むことができる。もし、各CPUが命令
キャッシュを含んでいるのであれば、そのメモリ要求
は、L1キャッシュによって使用されるものと同じイン
タフェースを介して行われ、ROデータに対するL1キ
ャッシュ要求とは識別できない。説明を簡潔にするた
め、好ましい実施例は、命令キャッシュを含んでいない
ものとする。
【0036】図1において、SXE 103及びVXE
107の各々は、集中型のXI機構106との間に、
XI要求/応答インタフェースを有する。XI機構10
6は、優先順位回路121と、スカラXIディレクトリ
123と、複数のVSRスタック125と、XI応答論
理127とを含んでいる。XI要求バス110は、XI
機構106と各CPU内に含まれているSXE 103
及びVXE 107との間に結合されている。一のCP
U内に含まれているSXE 103及びVXE107か
らの全ての組み合わせ要求は、XI要求バス110を介
して、待ち行列式のクロスバー・スイッチとすることが
できる優先順位回路121へ個別に供給される。XI機
構106からの全ての応答は、マルチドロップ式のXI
応答バス111を介して、適切なSXE 103及びV
XE 107へ供給される。更に、VXE 107の各
々からXI機構106へ延びているVSR解除バス11
3は、前述のように、有効なデータユニット・アドレス
を現に格納していないVSRスタック125をリセット
するための解除信号(コマンド)を供給する。XIディ
レクトリ123の内容は、その置換手段108によって
置換することができる。L3メモリには、参照番号10
1が付されている。CPU1〜Nの各々に含まれている
VXE 107並びにSXE 103内にあるL1キャ
ッシュ104との書き込みデータ及び読み取りデータの
授受は、書き込み/読み取りバス133を通して行われ
る。図1において、SXE 103からのL3メモリ1
01への全ての要求は、L1キャッシュ104を通して
L3メモリ101に対して行われるのに対し、VXE
107からの全ての要求は、キャッシュ機構を経ずに、
L3メモリ101に対して直接的に行われる。図1は、
Gannonらの出願の図9を修正したものである。本
発明では、XI機構106は、VSRスタック125を
含むように修正されている。更に、VXE 107とV
SRスタック125との間に直結された別個のVSR解
除バス113が新たに設けられている。
【0037】M個のXIインタリーブについては、L3
メモリ101の1/Mだけが単一のXIインタリーブに
よって参照されるように、L3メモリ101内のそれぞ
れのデータ・ユニットが分割されている。これらのデー
タ・ユニットは、キャッシュ・ラインのサイズ(例え
ば、128バイト境界上の128連続バイト)に相当
し、そしてデータユニット・アドレスとは、L3メモリ
101内にあるこれらのデータ・ユニットのアドレスを
意味する。L3メモリ101内にあるデータ・ユニット
のアドレスは、何れかの論理方式でXIインタリーブに
割り当てることができるが、ラウンド・ロビン方式が好
ましいと考えられる。
【0038】通常の待ち行列式クロスバー・スイッチと
することができる優先順位回路121は、M個のXIイ
ンタリーブの各々ごとに、N個のCPUからのXI要求
バス110を、XI機構106へ接続する。SXE 1
03及びVXE 107は、セレクタ109を介してX
I要求バス110に結合されている。VSR解除バスの
各々は全てのXIインタリーブに接続されるので、VX
E 107からのVSR解除バス113は、優先順位回
路121をバイパスするようになっている。一般に、N
個のCPUからの予想ピーク・トラヒックを処理するの
に十分なXIインタリーブが存在しなければならない。
各CPUは、1マシン・サイクル当たり2つのXI要求
(1つはVXEから、もう1つはSXEから)を生成す
ることができるが、SXE 103からのトラヒック
は、(キャッシュ・ミス時にだけSXE 103からの
要求が行われるに過ぎないので)、相当に低頻度で生起
する筈である。
【0039】XI要求バス110は、図2に示されてい
るように、次の情報フィールドを含んでいる。
【0040】V=一の要求がバス110上で有効である
ことを指示する有効ビット。
【0041】VXE=その要求が一のVXE 107か
らのものであることを指示する1ビット。
【0042】SXE=その要求がSXE 103からの
ものであることを指示する1ビット。
【0043】ID=要求元のSXE 103又はVXE
107の識別子。
【0044】VSR ID=一のVXE要求について要
求されたVSRスタック125。
【0045】DU ADDR=参照中のデータユニット
・アドレス。
【0046】REQ TYPE=SXE要求の型を指示
する符号化フィールド(以下を参照)。
【0047】 読み取り専用 排他的 EX所有権へのプロモート 条件付き読み取り専用 無効化肯定応答 RO所有権へのデモート肯定応答 放出−参照済みのデータ・ユニットがL1キャッシュか
ら除去された。 このメッセージは、VXE 107又はSXE 103
内で生成され、セレクタ109及びXI要求バス110
を介して送信された後、XI機構106において復号化
される。セレクタ109は、マルチプレクサである。
【0048】XI応答バス111は、図3に示されてい
るように、次の情報フィールドを含んでいる。V、VX
E、SXE、ID、DU ADDR及びVSR IDの
各フィールドは、前述と同じである。
【0049】RESPONSE TYPE=応答の型を
指示する符号化フィールド(以下を参照)。
【0050】 VSRの許可 読み取り専用要求を許可 排他的要求を許可 アドレスされたデータ・ユニットを無効化 アドレスされたデータ・ユニットを読み取り専用にデモ
ート これらの応答フィールドは、XI機構106内で生成さ
れ、共通のXI応答バス111及びSXE/VXEデコ
ーダ109aを介して、VXE 107及びSXE 1
03に送られる。このメッセージは、SXE 103又
はVXE 107において復号化される。
【0051】VSR解除バス113は、図4に示されて
いるように、次の情報フィールドを含んでいる。
【0052】V=一のVSRスタックをリセット(解
除)するための有効なコマンドがVSR解除バス113
上に存在する。
【0053】VXE ID=要求元のVXE 107の
識別子。
【0054】VSR ID=リセットすべきVSRスタ
ック125の識別子。
【0055】このメッセージは、VXE 107内で生
成され、VSR解除バス113を介して送信された後、
VSRスタック125において復号化される。
【0056】図5には、XI機構106の1つのXI機
構インタリーブ内に含まれる論理が示されている。一の
SXE 103又はVXE 107からの一のXI要求
は、図2のフォーマットで生成され、セレクタ109
(図1)を介してXI要求バス110に供給された後、
セレクタ129を介してスカラXIディレクトリ123
及びシステム内の各VXE 107に対応する1組のV
SRスタック125に供給される。図6には、XIディ
レクトリ123の構成が示されている。XIディレクト
リ123へのXI要求は、XIディレクトリ・アレイ1
26に制御信号を供給するために、デコーダ124によ
って復号化される。XIディレクトリ・アレイ126
は、システム内にある任意のL1キャッシュ103によ
って格納されている一意的なデータ・ユニットの各々ご
とに一のエントリを格納し、そしてかかるエントリを正
確に維持するため、キャッシュされたデータ・ユニット
が変更される場合には、常にXI要求バス110を介し
てXIディレクトリ123へ送られるXI要求によっ
て、その内容が更新されるようになっている。図7に
は、XIディレクトリ・アレイ126内の一のエントリ
が示されている。このエントリは、これに対応するデー
タ・ユニットを格納するCPUの識別子であるCPUI
Dと、そのデータ・ユニットのRO所有権及びEX所有
権をそれぞれ表すROフラグ・ビット及びEXフラグ・
ビットと、有効ビット(有効な場合)と、アドレスとを
それぞれ格納している。従って、任意のXI要求が供給
される場合、Gannonらの出願に開示されているよ
うに、このXI要求でXIディレクトリ123を問い合
わせることにより、その要求されたデータ・ユニットが
任意のL1キャッシュ104内においてEX所有権又は
RO所有権を以て格納されているか、或いはどのL1キ
ャッシュ104内にも格納されていないかを決定するこ
とができる。このようなXIディレクトリ123の問い
合わせを行うためには、各エントリ内の上位のデータユ
ニット・アドレスを、比較手段(コンパレータ)129
aにおいてXI要求バス110上の上位アドレスと比較
することにより、両アドレスが一致するか否かを決定す
ればよい。その比較状態は、状態線130に出力され
る。アドレス情報を含まないアドレスされたディレクト
リ・エントリは、バス135を介して、XI応答バス論
理127に供給される。このXIディレクトリ123の
問い合わせと並行して、有効なVSRスタック125の
各々に格納されているデータユニット・アドレスが、X
I要求バス110a上に供給されているアドレスと比較
される。この比較動作の目的は、現に進行中のベクトル
書き込みの対象であるメモリ・ロケーションの内容を、
任意のL1キャッシュ104が現に格納しているか否か
を決定することにある。このXI要求に対する諸応答
は、図3のフォーマットを有するように、XI応答バス
論理127内で符号化された後、XI応答バス111へ
多重化される。XI応答バス111上のXI応答は、そ
れぞれのデコーダ109aで復号化された後、VXE
107又はSXE 103へ送られる。応答不能なXI
要求は、XI応答バス論理127の制御下で、再循環待
ち行列128(図5を参照)に入れられる。許可される
と、セレクタ129はその状態を変更して、再循環待ち
行列128からのXI要求をXIディレクトリ123及
びVSRスタック125に供給することができる。
【0057】図8には、VXE 107−1に関連する
1組のVSRスタックとして、16個のVSRスタック
125−1〜125−16が示されている。VSRスタ
ック125−1〜125−16は、それぞれのVSRレ
ジスタ301−1〜301−16内に、L3メモリ10
1内にある一のデータ・ユニットのアドレスと、そのア
ドレスがVXE 107−1によってデータを書き込む
ために現に使用されているか否かを指示する有効ビット
とをそれぞれ格納する。この有効ビットがリセットされ
ていると、VXE 107−1がそのVSRスタック1
25を使用して現に書き込みを行っていないことを指示
するので、有効ビットがリセット状態にある場合のアド
レス比較は無視される。この有効ビットがオン状態に設
定されるのは、一のVXE 107がXI要求バス11
0を通して一のVSRスタックを取得する場合であり、
この有効ビットがリセット状態に設定されるのは、VX
E解除バス113から一のコマンドが受け取られる場合
である。VSRレジスタ3011〜301−16内に現
に格納されているデータユニット・アドレスは、VSR
スタック125−1〜125−16の比較手段303−
1〜303−16において、XI要求バス110上のア
ドレスと比較される。もし、有効ビットがオン状態に設
定されていないか、又はアドレスの一致が検出されなけ
れば、ANDゲート305−1〜305−16は、それ
ぞれの応答を供給しない。これらのVSRスタック12
5−1〜125−nからの出力は、ORゲート307を
通して、XI応答バス論理127に結合されている。
【0058】この実施例では、XIインタリーブ当た
り、16個のVSRスタック125−1〜125−16
が設けられている。XIインタリーブ当たりのVSRス
タックの数は、費用対効果比及びVXEの設計特性に基
づいて決定すべき、設計上の選択事項である。
【0059】図9には、VSRスタック125の有効ビ
ットを設定するのに必要なXIインタリーブ当たりの論
理が示されており、図10には、同じくVSRスタック
125の有効ビットをリセットするのに必要な論理が示
されている。特定のVSRスタック125内にあるVS
Rレジスタ301の有効ビットがオン状態に設定される
のは、一のVSRスタック125を取得するために、X
I応答バス論理127から線150を介して供給される
VSR設定制御信号及びVXE 107からXI要求バ
ス110を介して供給されるXI要求(フォーマットに
ついては図2を参照)がANDゲート403において有
効となり、そしてXI要求バス110からのVXE I
Dフィールド及びVSR IDフィールがそのVSRス
タック125のデコーダ401及び402においてそれ
ぞれ復号化される場合である。有効ビットがそのVXE
107からの最初のXI要求を受信する際に設定され
ていても、そのVXE 107は、要求されたデータ・
ユニットをEX所有権を以て格納するL1キャッシュ1
04(それが存在する場合)がこのデータ・ユニットを
無効化した後、そのVXE 107がそのデータ・ユニ
ットの書き込み権限を有する旨を通知されるまで、L3
メモリ101へのオペランド書き込みを開始することは
許されない。この通知は、適切なXI応答バス111を
介してそのVXE 107へ送られる処の、一の応答を
通して行われる。この通知は、XIディレクトリ123
から線130に生ぜられる比較状態によって決定され
る。XI応答(フォーマットについては図3を参照)内
の一のフィールドは、前述のようにして有効に設定され
た(要求済み)のVSRスタック125を識別し、従っ
て書き込み要求を受け取ることができるL3メモリ10
1内の特定のデータ・ユニットを識別する。
【0060】一旦、書き込み権限を有することを通知さ
れると、そのVXE 107は、そのデータ・ユニット
への全ての書き込みが完了するまで、要求済みのVSR
スタック125を解除しない。そのVXE 107が
(現に実行中のVXE命令について)特定のデータ・ユ
ニットへの最後の書き込みを完了する場合、そのVXE
107は、VXE解除バス113を通して有効な一のV
SR解除コマンドを生成することによって、要求済みの
VSRスタック125を解除する。即ち、VSR解除バ
ス113から有効なVSR解除コマンドを受信し且つデ
コーダ405においてVSR IDフィールドを復号化
した後、要求済みのVSRスタック125の有効ビット
が直ちにリセットされるのである。それぞれのVSRス
タック125は、XI機構106内で生起している他の
活動とは無関係に解除される。このことは、一のVSR
スタック125をリセットするためにXI要求バス11
0のサイクルを必要としないから、XI機構106のV
XE要求処理能力を効果的に倍増するという、本発明の
重要な特徴をもたらすことになる。
【0061】図11には、XI要求バス110を介して
受け取られるSXE 103からの排他的、読み取り専
用又は条件付き読み取り専用のライン・フェッチ要求に
応答して行われる処の、XI応答バス論理127の動作
の流れ図が示されている。全てのVSRスタック125
内に格納されているデータユニット・アドレスは、図8
の比較手段303において、この要求のデータユニット
・アドレスと比較され、これらのアドレスが互いにヒッ
トすれば、その結果がXI応答バス論理127へ供給さ
れる。もし、この「VSRヒット」が存在すれば、SX
E 103からの要求は、その要求されたアドレスを格
納している全てのVSRスタック125が解除されるま
で、XI応答バス論理127内の再循環待ち行列128
に格納される。前記全てのVSRスタック125が解除
された時点で、(一のVSRスタック125が同一のア
ドレスを格納しているか否かを確認するために)これら
のVSRスタック125が再び問い合わせされる。も
し、この時点で、「VSRヒット」が全く存在しなけれ
ば、そのXI要求は、図5のセレクタ129の制御下
で、Gannonらの出願の流れ図(図12a〜図12
c)に示すようにXIディレクトリ123に送られ、最
終的に、(読み取り専用又は排他的要求に応じた)デー
タ・ユニットの「許可」が、XI応答バス111を介し
て要求元のSXE103へ返信される。一般に、SXE
103からの諸要求はL3メモリの異なる領域を対象
とするものであり、また前述のような「VSRヒット」
が存在する可能性は低いはずである。また、SXE 1
03からの要求が、(Gannonらの出願の図12d
に示されている)「EX所有権へのプロモート」に相当
する場合や、(Gannonらの出願の図12eに示さ
れている)XIディレクトリ123のエントリを無効化
することに相当する場合は、Gannonらの出願に示
すように処理されることに留意されたい。なぜなら、こ
れらの場合について、どのVSRスタック125も有効
になることがないからである。
【0062】図12には、一のVXE 107からのX
I要求に応答して行われる処の、XI応答バス論理12
7の動作の流れ図が示されている。先ず、要求されたデ
ータ・ユニット(DU)を任意のL1キャッシュ104
が格納しているか否かを決定するために、スカラXIデ
ィレクトリ123がアクセスされる。もし、図6の比較
状態線130によって[XIディレクトリのミス」が指
示され、従ってこのようなL1キャッシュ104が存在
しないことが分かれば、そのVXE 107からXI要
求バス110aに供給されたデータユニット・アドレス
を、VSR設定制御信号の制御下で、要求済みのVSR
スタック125内に記入するとともに、そのVSRスタ
ック125の有効ビットをオン状態に設定して、そのV
SRスタック125がそのVXE 107によって現に
書き込み中の有効なデータユニット・アドレスを格納し
ていることを指示する。VSR設定制御信号は、要求済
みのVSRスタック125の有効ビットをオン状態に設
定するために、線150を介して図9のANDゲート4
03に供給されるようになっている。他方、「XIディ
レクトリのヒット」が生じて、1つ以上のL1キャッシ
ュ104がその要求されたデータ・ユニットを格納して
いることを指示する場合には、そのデータ・ユニットを
RO所有権を以て格納する全てのL1キャッシュ104
がそのデータ・ユニットを無効化するように通知され
(その応答は不要)、そしてそのデータ・ユニットをE
X所有権を以て格納する任意のL1キャッシュ104が
そのデータ・ユニットを無効化するように通知され且つ
そのようなL1キャッシュ104からそのデータ・ユニ
ットが無効化された旨の応答が受信されるまで、要求済
みのVSRスタック125の有効ビットは、オン状態に
設定されないのである。そのデータ・ユニットをEX所
有権を以て格納する後者のL1キャッシュ104からの
応答が必要となるのは、そのデータ・ユニットを無効化
する前に、SXE103からの要求に基づく進行中の全
ての書き込みを完了できるようにするためである。その
間、VXE 107からの要求は、再循環待ち行列12
8内に書き込まれる。SXE 103からの要求に基づ
く進行中の全ての書き込み動作が完了した後、要求済み
のVSRスタック125の有効ビットがオン状態に設定
される。VXE 107からの要求を、再循環待ち行列
128からセレクタ129を通してゲートすることがで
きるのは、XI応答バス111上のVXE 107への
XI応答についてヒットが存在せず、そしてVSR設定
制御信号が存在しない場合である。要求アドレスは、そ
の要求が最初にXI要求バス110上に置かれる際に、
要求済みのVSRスタック125内に記入できることに
留意されたい。要求済みのVSRスタック125を有効
化するタイミングだけが重要である。要求済みのVSR
スタック125が有効化されるのは、そのデータユニッ
ト・アドレスに対応するデータ・ユニットへの書き込み
ストア許可(即ち、VSR許可)を指示する応答を、そ
の要求元VXE 107がXI応答バス111を介して
受信した後だけである。
【0063】
【発明の効果】VXEからの高トラヒック・レートのX
I要求を処理するのに適したハードウェア手段は、過去
において全く存在していなかったか、又は存在していた
としても、不十分なものであった。その理由は、多重プ
ロセッサ・システムが通常のL1キャッシュを全く備え
ていないか、又はGannonらの出願のように、多重
プロセッサ・システムが通常のL1キャッシュを備えて
いる場合であっても、全てのベクトル・トラヒックがこ
れらのL1キャッシュを通るように設計されていたの
で、ベクトル処理を相当に利用するアプリケーションに
ついてSXE及びVXEの両方の性能が著しく低下して
いた、という点にある。
【0064】大型の科学技術アプリケーションのベクト
ル処理を効率的に行うためには、VXEからの要求を
(L1キャッシュをバイパスして)L3メモリに対し直
接的にインタフェースしなければならない。この方針が
正しいとすれば、VSRスタック(又はこれと類似の機
構)を全く持たないという代替的なアプローチは、全て
のVXEトラヒックが集中型のXIディレクトリのエン
トリを使用しなければならないことを意味する。しか
し、このようなアプローチは、システムの性能について
深刻な影響を及ぼすことになろう。その主な理由は、各
ベクトル要求ごとに、XIディレクトリを少なくとも3
回アクセスしなければならない、という点にある。詳述
すれば、該当するデータ・ユニットをSXEが格納して
いるか否かを決定すべくXIディレクトリに問い合わせ
るための第1回目のアクセス、VXEが現に使用中の該
当するデータ・ユニットのアドレスをXIディレクトリ
に書き込むための第2回目のアクセス、そしてVXEが
該当するデータ・ユニットのアドレスをXIディレクト
リから除去するための第3回目のアクセスと、総計で少
なくとも3回のアクセスを行わなければならないからで
ある。また、XIディレクトリの大きな割合が、VXE
エントリによって占有されるということもある。VXE
からの要求が、各VXEごとにマシン・サイクル当たり
1回のレートで潜在的に生起するものとすれば、VSR
スタックを用いない解決法は、最適のベクトル性能が設
計上の要件である場合、非実用的とならざるを得ない。
本発明に従って、複数のVSRスタックを設けるように
すれば、要求されたデータ・ユニットをSXEが格納し
ているか否かを決定するために、XIディレクトリを1
回だけアクセスすればよいことになる。
【図面の簡単な説明】
【図1】本発明の好ましい実施例に従った高性能の密結
合型スカラ/ベクトル複合処理システムの構成を示すブ
ロック図である。
【図2】XI要求バス上のメッセージ・フォーマットを
示す図である。
【図3】XI応答バス上のメッセージ・フォーマットを
示す図である。
【図4】XI解除バス上のメッセージ・フォーマットを
示す図である。
【図5】XI機構の構成を示すブロック図である。
【図6】XIディレクトリの構成を示すブロック図であ
る。
【図7】XIディレクトリのエントリを示す図である。
【図8】各CPUに関連するベクトル・ストア・レジス
タ(VSR)スタックの構成を示すブロック図である。
【図9】VSRの有効ビット設定論理の構成を示すブロ
ック図である。
【図10】VSRの有効ビット・リセット論理の構成を
示すブロック図である。
【図11】SXEから受信された排他的、読み取り専用
又は条件付き読出専用要求を処理するためのXI機構の
アルゴリズムを示す流れ図である。
【図12】VXE要求を処理するためのXI機能のアル
ゴリズムを示す流れ図である。
【符号の説明】
100 スカラ/ベクトル複合処理システム 101 主記憶装置(L3メモリ) 103 スカラ・プロセッサ要素(SXE) 104 L1キャッシュ 105 L1ディレクトリ 106 相互問い合わせ(XI)機構 107 ベクトル・プロセッサ要素(VXE) 108 XIディレクトリ置換手段 110 XI要求バス 111 XI応答バス 113 VSR解除バス 121 優先順位回路 123 XIディレクトリ 125 ベクトル・ストア・レジスタ(VSR)スタッ
ク 127 XI応答バス論理
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ドナルド、ウォルター、プライス アメリカ合衆国ニューヨーク州、レイ ク、カトライン、ドリス、レーン、57 (72)発明者 リザ、セイエド、ラジ アメリカ合衆国カリフォルニア州、パ ロ、アルト、ナンバー、308、アルマ、 ストリート、427 (56)参考文献 特開 平2−77858(JP,A) 特開 平2−85960(JP,A)

Claims (8)

    (57)【特許請求の範囲】
  1. 【請求項1】スカラ・プロセッサ要素と、ベクトル・プ
    ロセッサ要素と、共有メモリとを備え、読み取り又は書
    き込み要求及び応答に従って、前記プロセッサ要素と前
    記共有メモリとの間でデータ・ユニットの書き込み及び
    読み取りを行うようにしたスカラ/ベクトル複合処理シ
    ステムにおいて、 一のデータ・ユニットの所有権を有する任意のスカラ・
    プロセッサ要素を識別するための識別子及び前記共有メ
    モリにおいて当該データ・ユニットを位置づけるための
    一のアドレス表示を格納するとともに、どのスカラ・プ
    ロセッサ要素も当該データ・ユニットの所有権を有して
    いない場合には、前記スカラ・プロセッサ要素からの要
    求に対する応答を供給して当該データ・ユニットのアク
    セスを許可するための相互問い合わせディレクトリと、 前記ベクトル・プロセッサ要素によって現に書き込み中
    のデータ・ユニットのアドレス表示を格納するためのベ
    クトル・ストア・レジスタ・スタックと、 前記スカラ・プロセッサ要素からの要求が、前記ベクト
    ル・ストア・レジスタ・スタック内に格納されているア
    ドレス表示と一致するアドレス表示を有するデータ・ユ
    ニットを対象としている場合には、当該要求に対応する
    前記相互問い合わせディレクトリからの応答を遅延させ
    るための手段とを備えて成る、スカラ/ベクトル複合処
    理システム用の相互問い合わせ装置。
  2. 【請求項2】前記ベクトル・ストア・レジスタ・スタッ
    クの各々が、前記アドレス表示を格納するための一のレ
    ジスタと、当該レジスタ内に格納されているアドレス表
    示を前記スカラ・プロセッサ要素から供給される要求の
    アドレス表示と比較するための比較手段とを含んでいる
    ことを特徴とする、請求項1記載のスカラ/ベクトル複
    合処理システム用の相互問い合わせ装置。
  3. 【請求項3】各スカラ・プロセッサ要素が、一のデータ
    ・ユニットを読み取り又は書き込む際に、相互問い合わ
    せ要求信号を送信し、相互問い合わせ応答信号に応答し
    て動作するように待機する、複数のスカラ・プロセッサ
    要素と、 各ベクトル・プロセッサ要素が、一のデータ・ユニット
    を読み取り又は書き込む際に、相互問い合わせ要求信号
    を送信し、相互問い合わせ応答信号に応答して動作する
    ように待機するとともに、当該各ベクトル・プロセッサ
    要素がそれに関連するベクトル命令の処理を終了したと
    きに一の解除信号を供給する、複数のベクトル・プロセ
    ッサ要素と、 共有メモリと、 前記スカラ・プロセッサ要素及び前記ベクトル・プロセ
    ッサ要素からの要求を受信するための複数のエントリを
    有し、当該エントリの各々に、一のデータ・ユニットの
    所有権を有する一のスカラ・プロセッサ要素の識別子及
    び前記共有メモリにおいて当該データ・ユニットを位置
    づけるための一のアドレス表示を格納するとともに、当
    該アドレス表示を前記スカラ・プロセッサ要素及び前記
    ベクトル・プロセッサ要素から供給される要求のアドレ
    ス表示と比較して一致が存在する場合には第1の比較信
    号を供給するための比較手段を有している相互問い合わ
    せディレクトリと、 各ベクトル・ストア・レジスタ・スタックが、前記ベク
    トル・プロセッサ要素によって現に書き込み中のデータ
    ・ユニットのアドレス表示を一の設定信号に応答して格
    納するための一のレジスタと、当該レジスタ内に格納さ
    れているアドレス表示を前記スカラ・プロセッサ要素か
    ら供給される要求のアドレス表示と比較して一致が存在
    する場合には第2の比較信号を供給するための比較手段
    とを含むとともに、前記解除信号によってリセットされ
    る、複数のベクトル・ストア・レジスタ・スタックと、 前記スカラ・プロセッサ要素及び前記ベクトル・プロセ
    ッサ要素からの前記相互問い合わせ要求を前記相互問い
    合わせディレクトリに供給するとともに、前記スカラ・
    プロセッサ要素からの前記相互問い合わせ要求を前記ベ
    クトル・ストア・レジスタ・スタックに供給するための
    手段と前記解除信号を前記ベクトル・ストア・レジスタ
    ・スタックに結合するための手段と、 前記第1の比較信号が存在せず且つ一のベクトル・スト
    ア・レジスタ・スタックに対する一のベクトル・プロセ
    ッサ要素からの要求が存在することに応答して、前記設
    定信号を当該要求されたベクトル・ストア・レジスタ・
    スタックに供給するとともに、前記第2の比較信号に応
    答して、前記ベクトル・ストア・レジスタ・スタックが
    前記ベクトル・プロセッサ要素からの解除信号によって
    リセットされるまで、前記スカラ・プロセッサ要素から
    供給され且つ前記レジスタ内に格納されているアドレス
    表示と一致するアドレス表示を有する要求に対応する前
    記相互問い合わせディレクトリからの応答を遅延させる
    ための手段とを備えたことを特徴とする、スカラ/ベク
    トル複合処理システム。
  4. 【請求項4】前記ベクトル・プロセッサ要素の各々ごと
    に、複数の前記ベクトル・ストア・レジスタ・スタック
    が設けられていることを特徴とする、請求項3記載のス
    カラ/ベクトル複合処理システム。
  5. 【請求項5】前記スカラ・プロセッサ要素の各々に関連
    して、排他的所有権又は共有所有権を以て一のデータ・
    ユニットを格納するための一のキャッシュ・メモリがそ
    れぞれ設けられ、前記第1の比較信号が存在する場合に
    は、前記相互問い合わせディレクトリ内に格納されてい
    るアドレス表示と一致するアドレス表示を有し且つ単一
    のキャッシュ・メモリ内に排他的所有権を以て格納され
    ているデータ・ユニットを無効化し、当該単一のキャッ
    シュ・メモリが当該データ・ユニットを無効化したとい
    う通知を受信した後に、前記設定信号を供給するととも
    に、他のキャッシュ・メモリ内に共有所有権を以て格納
    されている当該データ・ユニットを無効化することを特
    徴とする、請求項3記載のスカラ/ベクトル複合処理シ
    ステム。
  6. 【請求項6】前記相互問い合わせディレクトリからの応
    答を遅延させるための手段が、前記解除信号によって解
    除されるまで、当該遅延された応答を格納するための手
    段を含んでいることを特徴とする、請求項3記載のスカ
    ラ/ベクトル複合処理システム。
  7. 【請求項7】ストアスルー型のキャッシュ・メモリをそ
    れぞれ有する複数のスカラ・プロセッサ要素と、共有メ
    モリと、相互問い合わせディレクトリと、複数のベクト
    ル・プロセッサ要素と、前記ベクトル・プロセッサ要素
    によって書き込みを行うべきデータ・ユニットのアドレ
    ス表示を格納するための複数のベクトル・ストア・レジ
    スタ・スタックとを備えたスカラ/ベクトル複合処理シ
    ステムにおいて、 前記共有メモリ内にあるデータ・ユニットのうち、前記
    スカラ・プロセッサ要素のキャッシュ・メモリ内に格納
    されているデータ・ユニットのアドレス表示と、当該デ
    ータ・ユニットを格納しているキャッシュ・メモリの識
    別子とを、前記相互問い合わせディレクトリ内に格納す
    る段階と、 データ・ユニットに対する要求を、前記スカラ・プロセ
    ッサ要素及び前記ベクトル・プロセッサ要素から前記相
    互問い合わせディレクトリに送信する段階と、前記スカ
    ラ・プロセッサ要素及び前記ベクトル・プロセッサ要素
    から送信された前記要求のアドレス表示を、前記相互問
    い合わせディレクトリ内に格納されているアドレス表示
    と比較する段階と、 前記スカラ・プロセッサ要素から送信された前記要求の
    アドレス表示を、前記ベクトル・ストア・レジスタ・ス
    タック内に格納されているアドレス表示と比較する段階
    と前記相互問い合わせディレクトリ内に格納されている
    アドレス表示との一致が存在せず且つ一のベクトル・ス
    トア・レジスタ・スタックに対する一のベクトル・プロ
    セッサ要素からの要求が存在する場合には、当該要求さ
    れたベクトル・ストア・レジスタ・スタック内に当該ベ
    クトル・プロセッサ要素によって書き込むべき一のデー
    タ・ユニットのアドレス表示を格納する段階と、 一のベクトル・ストア・レジスタ・スタック内に格納さ
    れているアドレス表示との一致が存在する場合には、前
    記一のベクトル・プロセッサ要素が当該アドレス表示を
    使用して前記一のデータ・ユニットの書き込みを終了す
    るまで、前記スカラ・プロセッサ要素から供給され且つ
    当該アドレス表示と一致するアドレス表示を有する要求
    に対応する前記相互問い合わせディレクトリからの応答
    を遅延させる段階とを含むことを特徴とする、データ・
    コヒーレンスを維持するための方法。
  8. 【請求項8】前記一のデータ・ユニットの書き込みの終
    了時に、前記一のベクトル・プロセッサ要素が前記一の
    ベクトル・ストア・レジスタ・スタックに解除信号を直
    接的に供給することによって、当該ベクトル・ストア・
    レジスタ・スタックをリセットすることを特徴とする、
    請求項7記載のデータ・コヒーレンスを維持するための
    方法。
JP5075849A 1992-05-26 1993-04-01 スカラ/ベクトル複合処理システム、スカラ/ベクトル複合処理システム用の相互問い合わせ装置及びデータ・コヒーレンスを維持するための方法 Expired - Lifetime JP2618178B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US889022 1986-07-24
US07/889,022 US5426754A (en) 1992-05-26 1992-05-26 Cross-interrogate method and means for combined scaler and vector processing system

Publications (2)

Publication Number Publication Date
JPH0635953A JPH0635953A (ja) 1994-02-10
JP2618178B2 true JP2618178B2 (ja) 1997-06-11

Family

ID=25394370

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5075849A Expired - Lifetime JP2618178B2 (ja) 1992-05-26 1993-04-01 スカラ/ベクトル複合処理システム、スカラ/ベクトル複合処理システム用の相互問い合わせ装置及びデータ・コヒーレンスを維持するための方法

Country Status (2)

Country Link
US (1) US5426754A (ja)
JP (1) JP2618178B2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3248992B2 (ja) * 1993-07-13 2002-01-21 富士通株式会社 マルチプロセッサ
IT1269470B (it) * 1994-01-25 1997-04-01 Whirlpool Italia Circuito di controllo ad alta frequenza per motori in c.c. particolarmente per macchine lavabiancheria
US5717895A (en) * 1994-12-01 1998-02-10 Cray Research, Inc. Associative scalar data cache with write-through capabilities for a vector processor
US5875462A (en) * 1995-12-28 1999-02-23 Unisys Corporation Multi-processor data processing system with multiple second level caches mapable to all of addressable memory
US5699552A (en) * 1996-01-26 1997-12-16 Unisys Corporation System for improved processor throughput with enhanced cache utilization using specialized interleaving operations
US5752258A (en) * 1996-07-01 1998-05-12 Sun Microsystems, Inc. Encoding method for directory state in cache coherent distributed shared memory system
US5862316A (en) * 1996-07-01 1999-01-19 Sun Microsystems, Inc. Multiprocessing system having coherency-related error logging capabilities
US5895495A (en) * 1997-03-13 1999-04-20 International Business Machines Corporation Demand-based larx-reserve protocol for SMP system buses
US6341336B1 (en) * 1998-02-17 2002-01-22 International Business Machines Corporation Cache coherency protocol having tagged state used with cross-bars
US6189094B1 (en) * 1998-05-27 2001-02-13 Arm Limited Recirculating register file
US6857061B1 (en) * 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
US6857049B1 (en) * 2000-08-30 2005-02-15 Unisys Corporation Method for managing flushes with the cache
EP1512068B1 (en) * 2002-05-24 2007-09-05 Nxp B.V. Access to a wide memory
TWI289789B (en) * 2002-05-24 2007-11-11 Nxp Bv A scalar/vector processor and processing system
US6772294B2 (en) * 2002-07-08 2004-08-03 Sun Microsystems, Inc. Method and apparatus for using a non-committing data cache to facilitate speculative execution
US8516200B2 (en) 2010-09-07 2013-08-20 International Business Machines Corporation Avoiding cross-interrogates in a streaming data optimized L1 cache
JP5445701B1 (ja) 2013-02-05 2014-03-19 日本電気株式会社 フラッシュ制御装置、フラッシュ制御方法、及び、キャッシュメモリ装置
WO2020175720A1 (ko) * 2019-02-28 2020-09-03 엘지전자 주식회사 디지털 디바이스 및 그 제어 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4394731A (en) * 1980-11-10 1983-07-19 International Business Machines Corporation Cache storage line shareability control for a multiprocessor system
JP2610821B2 (ja) * 1986-01-08 1997-05-14 株式会社日立製作所 マルチプロセツサシステム
US5032985A (en) * 1988-07-21 1991-07-16 International Business Machines Corporation Multiprocessor system with memory fetch buffer invoked during cross-interrogation
US5123095A (en) * 1989-01-17 1992-06-16 Ergo Computing, Inc. Integrated scalar and vector processors with vector addressing by the scalar processor
US5276828A (en) * 1989-03-01 1994-01-04 Digital Equipment Corporation Methods of maintaining cache coherence and processor synchronization in a multiprocessor system using send and receive instructions
US5230070A (en) * 1989-09-08 1993-07-20 International Business Machines Corporation Access authorization table for multi-processor caches
JP2825906B2 (ja) * 1990-02-01 1998-11-18 株式会社日立製作所 計算機システム
US5263144A (en) * 1990-06-29 1993-11-16 Digital Equipment Corporation Method and apparatus for sharing data between processors in a computer system

Also Published As

Publication number Publication date
US5426754A (en) 1995-06-20
JPH0635953A (ja) 1994-02-10

Similar Documents

Publication Publication Date Title
JP2618178B2 (ja) スカラ/ベクトル複合処理システム、スカラ/ベクトル複合処理システム用の相互問い合わせ装置及びデータ・コヒーレンスを維持するための方法
JP3158161B2 (ja) 集積キャッシュユニットおよび集積キャッシュユニットにおいてインターロック変数をキャッシュする方法
US6636949B2 (en) System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
US7360031B2 (en) Method and apparatus to enable I/O agents to perform atomic operations in shared, coherent memory spaces
US7032074B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US5784590A (en) Slave cache having sub-line valid bits updated by a master cache
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
US6760819B2 (en) Symmetric multiprocessor coherence mechanism
US5490261A (en) Interlock for controlling processor ownership of pipelined data for a store in cache
US6751720B2 (en) Method and system for detecting and resolving virtual address synonyms in a two-level cache hierarchy
US6681295B1 (en) Fast lane prefetching
JP3016575B2 (ja) 複数キャッシュ・メモリ・アクセス方法
US7493446B2 (en) System and method for completing full updates to entire cache lines stores with address-only bus operations
US20060179174A1 (en) Method and system for preventing cache lines from being flushed until data stored therein is used
EP0301354A2 (en) Cache consistency protocol for multiprocessor system
JPH11506852A (ja) 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減
JPH0775010B2 (ja) 多重処理システムのコヒーレンス手段
JPH09259036A (ja) ライトバックキャッシュおよびライトバックキャッシュ内で整合性を維持する方法
JPH10254773A (ja) アクセス方法、処理装置およびコンピュータ・システム
US11720495B2 (en) Multi-level cache security
US6591341B1 (en) Multilevel cache system and method having a merged tag array to store tags for multiple data arrays
JP5265827B2 (ja) ハイブリッドコヒーレンスプロトコル
US20060179173A1 (en) Method and system for cache utilization by prefetching for multiple DMA reads
US6973541B1 (en) System and method for initializing memory within a data processing system
JPH10501914A (ja) 共用キャッシュ・メモリ装置