JP3200757B2 - 並列計算機の記憶制御方法および並列計算機 - Google Patents

並列計算機の記憶制御方法および並列計算機

Info

Publication number
JP3200757B2
JP3200757B2 JP28740393A JP28740393A JP3200757B2 JP 3200757 B2 JP3200757 B2 JP 3200757B2 JP 28740393 A JP28740393 A JP 28740393A JP 28740393 A JP28740393 A JP 28740393A JP 3200757 B2 JP3200757 B2 JP 3200757B2
Authority
JP
Japan
Prior art keywords
cache
data
line
directory
main memory
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
JP28740393A
Other languages
English (en)
Other versions
JPH07121493A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP28740393A priority Critical patent/JP3200757B2/ja
Priority to US08/328,759 priority patent/US5606686A/en
Publication of JPH07121493A publication Critical patent/JPH07121493A/ja
Application granted granted Critical
Publication of JP3200757B2 publication Critical patent/JP3200757B2/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • 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/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17393Indirect interconnection networks non hierarchical topologies having multistage networks, e.g. broadcasting scattering, gathering, hot spot contention, combining/decombining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は多数台のプロセッシング
・ユニットからなる並列計算機に係り、特に、主記憶を
各プロセッシング・ユニットに分散配置した並列計算機
の記憶制御方法および並列計算機に関する。
【0002】
【従来の技術】計算機性能の飛躍的向上に関して、多数
台のプロセッシング・ユニットを並列動作させる、並列
計算機が有望視されている。以下ではプロセッシング・
ユニットを略してPUと呼ぶ。こうした並列計算機で
は、複数のPU間でデータを共有するためにプロセッサ
間で共有メモリをもつ。さらに、データのアクセスを高
速化するために、各PUには共有データをキャッシング
するためのキャッシュを設ける。そこで、PU間でキャ
ッシュの一貫性を保つための回路が必要になる。並列P
U間でキャッシュの一貫性を保つために、従来広く用い
られた方法としては、PU間を共有バスにより結合し
た、TCMP(Tightly−Coupled Mu
lti−Processors)方式が有る。共有バス
上にキャッシュの一貫性を取るためのコマンドをブロー
ドキャストすることにより、システム全体のキャッシュ
を容易にコントロールすることができる。例えば共有さ
れたデータが変更された場合は、データが変更されたこ
とをバスを通じてすぐに全PUに通知することができ
る。しかし、同方式では、接続可能なPUの数が共有バ
スのスループットにより制限されるため、拡張性に乏し
く、高々20台程度のPUしか接続することが出来な
い。
【0003】上記の問題を解決し、拡張性に富んだ共有
メモリシステムを実現するするために、特開平5ー89
056等において物理分散論理共有メモリ(以下では分
散共有メモリもしくはDSMと略す)が提案されてい
る。DSMにおいては主記憶は各PUに分散しておか
れ、また、PU間を共有バスではなく多段結合網などの
ネットワークにより結合することにより、PU数に見合
ったネットワークスループットを提供し、接続可能なP
U数の制限をなくす事が出来る。しかし、PU間をネッ
トワークにより結合したため、全PUにキャッシュ一貫
性のためのコマンドをブロードキャストをすることは、
多大な手間がかかるばかりか、ネットワークトラフィッ
クの無用な増大を招くため得策ではない。従って、キャ
ッシュ一貫性を保持するためのコマンドを、全てのPU
にブロードキャストするのではなく、実際に必要とする
PUにのみ送付する機能が必須である。従来提案された
並列計算機のDSMによる主記憶制御装置は「The
Stanford Dash Multiproces
sor,IEEE Computer,March 1
992 pp63〜78」に示されるように、各PUに
おかれた主記憶装置の各ラインに対応し、そのラインが
どのPUにキャッシングされているか(どのPUがキャ
ッシュ上にコピーを持っているか)を示す為の専用のメ
モリ(ディレクトリ)を設ける。図2に従来のディレク
トリタイプのDSMの構成を示す。図では16PUのシ
ステムにおいて、主記憶の各ライン毎にキャッシングし
ているPUを16ビットのビットパターンで記憶する。
共有データが変更された場合など、キャッシュ一貫性を
保持するためのコマンドを送出することが必要になった
場合は、コマンドは一旦主記憶に送られる。その後、主
記憶の制御回路は、主記憶に付随するディレクトリが指
し示すPUに対して当該コマンドを送付する。同時に、
ディレクトリの内容の更新も行われる。あるデータに対
して書き込みが起ったときにはディレクトリのビットが
1となっているPU全てに無効化コマンドが出される。
その結果、キャッシュ上のコピーは全て消去される。例
えば図2の0番地に書き込みが起った場合は、PU1,
7,13に無効化コマンドが送られる。また、キャッシ
ングされているデータに対して読み出しが起った場合
は、読み出しコマンドはディレクトリが指し示すPUへ
送られ、そのPUのキャッシュからデータが供給され
る。ディレクトリを用いてキャッシュを管理することに
より、キャッシュ一貫性を保持するためのコマンドは、
当該ラインをキャッシングしているPUのみに送られ、
そのほかの無関係なPUには送る必要はないため、全P
Uへのブロードキャストは不要である。従って、DSM
のにおけるネットワークで接続されたPUの間でのキャ
ッシュの一貫性の管理を効率的に行うことが出来る。
【0004】
【発明が解決しようとする課題】上記従来技術では、主
記憶装置の各ライン毎に、そのラインをどのPUがキャ
ッシングしているかを示すディレクトリを置かなければ
ならないが、ディレクトリのために使用されるメモリー
量が多いという問題点が有る。例えば上記の従来例では
16台のPUそれぞれについて、キャッシングの有無を
ビットパターンで記憶している。その場合、1ワード8
バイト、1ライン4ワードのマシンの場合、キャッシュ
1ライン(4×8×8=256ビット)毎に16ビット
のディレクトリが必要であるため、全体では主記憶容量
の1/16のディレクトリが必要と成り、ハードウェア
コストの増加につながる。PUの台数が多い計算機の場
合はディレクトリのコストの問題はさらに大きくなる。
例えば256PUを持った計算機の場合、上記のように
ディレクトリをビットパターンで持った場合、キャッシ
ュ1ライン毎に256ビットものディレクトリが必要と
なる。これは、主記憶の容量に匹敵する。この問題をあ
る程度解決するためにキャッシングしているPU番号を
ビットパターンで覚えるのではなく、PU番号の配列の
形で覚える方法が提案されている。この方式では、PU
番号の配列は8要素程度に制限する。この方式をリミテ
ッドポインタ方式(以下では単にポインタ方式)と呼
ぶ。一般に1ラインを共有するPUの数はそれほど多く
ないので、高々8個程度のポインタを持てばほとんどの
場合十分ではある。ただしこの方法だと、用意されてい
たポインタを全て使い切ってしまった場合、 (1)ポインタの最大値を越えないように一番昔にキャ
ッシングしたものから順に無効化する。 (2)ディレクトリ管理をやめ、全PUへのブロードキ
ャストを行う。 等の対策が必要になり、性能低下を招く。ポインタ方式
の場合でも、256PUで8個のポインタを持った場
合、8×8=64ビットのポインタが必要であり、更に
ポインタの使用/不使用を表すビットが8ビット必要で
あるため、合計72ビットものポインタが必要である。
これはビットパターンで持った場合の256ビットより
は小さいが、ラインサイズに対して無視できない値であ
る。以上のように従来のディレクトリ方式によりDSM
を実装する場合、ディレクトリとして使用されるメモリ
量が、主記憶のデータを記憶するメモリ量と同程度必要
となり、ハードウェアコストの著しい増大を招く。本発
明の目的は、ディレクトリのためのメモリ量の増大無し
に、ディレクトリ方式によるDSMを実現することにあ
る。
【0005】
【課題を解決するための手段】各プロセッシングユニッ
トの主記憶の各々のデータラインに対応し、該ラインが
自または他の何れかのプロセッシングユニットのキャッ
シュに登録されているか否かを示す情報を付与し、ライ
ンのデータがいずれかのプロセッシングユニットのキャ
ッシュに登録された場合には、上記情報を登録状態と
し、該ラインのデータが記憶されていた主記憶領域にデ
ータに代えて該ラインのデータがどのプロセッシングユ
ニットのキャッシュに登録されているかを示すディレク
トリ情報を記憶させる。そして、該ラインのデータをキ
ャッシュに登録しているプロセッシングユニットの組み
合せが変更された場合には、該主記憶上に記憶されたデ
ィレクトリ情報を現在該ラインのデータをキャッシュに
登録しているプロセッシングユニットを示すディレクト
リ情報に変更する。また、該ラインのデータをどのプロ
セッシングユニットもキャッシュに登録しなくなった場
合には、ディレクトリ情報に代えてキャッシュ上に登録
されたデータを主記憶に書き戻すようにしている。ま
た、キャッシュに登録したラインが、キャッシュの空き
領域が無くなったことによりリプレースされた場合もし
くはプロセッサから明示的な命令等によりキャッシュか
ら追い出される場合に、キャッシュの該ラインのアドレ
スとキャッシュ上に登録されていたデータを主記憶に送
付し、主記憶に記憶された該ラインに相当するディレク
トリを読み出し、該ディレクトリを調べて、該ラインの
データをキャッシュ上に登録していたプロセッシングユ
ニットが2以上有った場合にはディレクトリの内容のみ
を更新し、1のみであった場合にはキャッシュから送ら
れてきたデータをディレクトリに代えて主記憶に書き戻
すようにしている。また、各プロセッシングユニットの
主記憶の各々のデータラインに対応し、該ラインが読み
出し専用であるか否かを示す情報を付与し、読み出し専
用でないラインのデータがキャッシュ上に登録された場
合にはディレクトリ情報を作成して該ラインのデータが
記憶されていた主記憶領域にデータに代えてディレクト
リ情報を記憶させ、読み出し専用であるラインのデータ
がキャッシュ上に登録された場合にはディレクトリ情報
の作成を行わないようにしている。
【0006】
【作用】上記の手段により、主記憶上のデータラインを
キャッシングしているプロセシングユニットを示すディ
レクトリが主記憶にデータに代えて記憶されるため、デ
ィレクトリ用に新たにメモリを用意する必要は無い。従
って、ディレクトリのハードウェアコストの問題を回避
することが出来る。ライトバック型のキャッシュの場
合、最新のデータは常にキャッシュ上に置かれ、主記憶
上にはキャッシングされる前の古い値しか入っていない
ため、通常は主記憶に残っているデータは不要である。
従って、データがキャッシングされた場合、主記憶に残
っているデータを消去し、ディレクトリとして使用する
ことが出来る。データの読み出しが行われた場合にはキ
ャッシングしているプロセシングユニットが最新のデー
タを供給することになる。キャッシングされているプロ
セシングユニット組合せが変更された場合には、各キャ
ッシュから主記憶に変更が通知され、主記憶上のディレ
クトリが常に最新のキャッシュの状態を反映するように
変更される。その結果キャッシングしているプロセシン
グユニットが残り1つの場合にキャッシュ上のデータが
追い出される場合には、キャッシュから主記憶へデータ
の書き戻しが行われ、主記憶上のデータが復旧される。
以上の制御によりデータがキャッシングされている間の
み、主記憶をディレクトリとして用いることが出来る。
主記憶上にディレクトリを作成する場合、主記憶上のデ
ータは消されてしまう。その結果、もともと主記憶にあ
ったデータに変更がない場合にも、キャッシュから主記
憶への書き戻しが必要になる。特に、主記憶上のデータ
が読み出し専用であった場合には、以上述べたキャッシ
ングによるディレクトリの作成や、データの書き戻しな
どの処理は無駄である。従って、主記憶の各データライ
ンに対応し、そのデータラインが読み出し専用であるこ
とを示すビットを設け、読み出し専用ビットが立ってい
るデータラインがキャッシングされた場合には、主記憶
上のディレクトリの作成は行わず、主記憶上のデータを
残したままキャッシングを行う。これにより、書き込み
が行われない、すなわち読み出し専用であるデータライ
ンに対する無駄なディレクトリ管理のオーバヘッドを削
減することができる。
【0007】
【実施例】図1、図3〜19に本発明の一実施例を示
す。図1は256台のPUからなる並列マシンである。
図において100、110はPU、800はPU間を結
ぶネットワークである、ネットワークの形状は任意であ
り、多段結合網、メッシュなど一般のネットワークを使
用できる。ここではPU0のみについて内部の詳細を記
す。他のPUも同一の内部構成を持つ。PU0の内部で
10はCPU、30はキャッシュ、20はキャッシュ制
御回路、40が主記憶装置、50が主記憶制御回路、6
0がネットワーク入出力回路である。CPUからはアド
レスバス23、コマンド11、データバス24がキャッ
シュ制御回路に入力され、CPUのメモリアクセスをキ
ャッシュ制御回路に伝える。キャッシュ30内にはデー
タのラインを記憶するためのデータアレイ35、キャッ
シュに登録されたラインの上位アドレスを記憶するため
のアドレスアレイ31、各ラインのキャッシュ状態を記
憶するための状態アレイ32、33、34を持つ。キャ
ッシュ内の各メモリは、それぞれコラムアドレス23a
を用いてアクセスされる。キャッシュはダイレクトマッ
プ型のキャッシュである。キャッシュ制御回路20の内
部では、21がキャッシュ動作決定回路、23がアドレ
スバス、24がデータバス、22は自PUのPU番号を
記憶するためのレジスタ、25がキャッシュがネットワ
ークに出すコマンドの送信先を選択するためのセレクタ
である。21のキャッシュ動作決定回路の内部は複雑で
あるので図3に詳細を記す。
【0008】主記憶装置40の中では、41はデータを
記憶するためのメモリ、42、43は主記憶のライン毎
に該当するラインの状態を表すための主記憶状態ビット
である。主記憶のメモリは、42、43で表される主記
憶の状態に応じて、データに代えてディレクトリ情報を
格納するために用いられる場合もある。主記憶制御回路
50はネットワーク等からのコマンドを受け、主記憶を
アクセス、管理するための回路であり、アドレスバス5
3、データバス54、ディレクトリ情報をメンテナンス
するためのディレクトリ操作回路52、及び主記憶動作
決定回路51、主記憶がネットワークに出すコマンドの
宛先を選択するためのセレクタ55より構成される。主
記憶動作決定回路51、ディレクトリ操作回路52の内
部は複雑であるため、図7、図8に詳細を記す。ネット
ワーク入出力回路は、キャッシュ制御回路20、主記憶
制御回路50の入出力する信号と、ネットワークコマン
ドとの間でのフォーマット変換、及び実際のパケット入
出力を行うための回路であり、キャッシュ向きのコマン
ドパケット分解回路61、キャッシュからのコマンドパ
ケット組立回路62、主記憶向きのコマンドパケット分
解回路63、主記憶からのコマンドパケット組立回路6
4、及び、ネットワークへのパケット送信回路66、受
信回路65から構成される。コマンドの組立/分解回路
が主記憶向け、キャッシュ向けと別々に用意されている
理由は主記憶、キャッシュが独立に動作するためであ
る。また、パケット送信回路66と受信回路65の間に
は、PU内の主記憶とキャッシュの間のコマンドをネッ
トワークを介さずに転送するためのバイパス回路66b
がおかれる。
【0009】図3はキャッシュ動作決定回路21の詳細
図である。図3において、210はキャッシュアドレス
アレイ31からのキャッシュアドレス31aと、アクセ
スアドレスの上位アドレス23bを比較し、キャッシュ
ヒットを判定するための比較器である。211はヒット
信号210a、キャッシュ状態32a、33a、34a
及びCPUコマンド11に基づきリプレース時のキャッ
シュの書き戻しの必要性を判断する回路である。211
により書き戻しが必要となった場合は214のFLコマ
ンド発生回路により書き戻しが行われる。212は上記
の条件から主記憶アクセス等のためのコマンドを発生す
るための回路、213はキャッシュの次状態を決定する
ための回路である。ラッチ215、216はキャッシュ
が外部へのデータ読み出しの返答を待ち合わせているこ
とを示すラッチであり、それぞれFコマンドFIコマン
ドの返答を待ち合わせていることを示す。回路、211
〜213は組合せ回路で構成されており、入力と出力の
関係はそれぞれ図4〜図6で規定される。図3のキャッ
シュ動作決定回路21の動作は詳細に後述する。
【0010】図7は主記憶動作決定回路51の詳細図で
ある。図7において、510はディレクトリ操作回路5
2から出力されたアクセスPU数52aをデコードする
ためのデコーダ、512はコマンドパケット分解回路6
3より出力される外部からのアクセスコマンド63aの
デコーダである。ゲート511a〜511d、513a
〜513iは、外部コマンドのデコード結果512a〜
512d、アクセスPU数のデコード結果510a〜5
10c及び主記憶の状態ビット43a、42aより、主
記憶の動作条件513j〜513rを判定するためのゲ
ートである。上記の各条件における、主記憶の実際の動
作は、条件判断を伴う繰返し等を含むため、純粋な組合
せ回路により実現するのは困難であると考えられる。従
って、この実施例においては主記憶の動作は主記憶制御
プロセッサ514により行われる。図9〜図14に主記
憶制御プロセッサ514のフローチャートを示す。図7
の主記憶動作決定回路51の動作の詳細は後述する。
【0011】図8はディレクトリ操作回路52の詳細図
である。図8において、523はディレクトリ情報の記
憶、演算を行うためのワークレジスタ(WREG)であ
る。ワークレジスタはデータバスを介し、主記憶上のメ
モリと1ライン分のディレクトリ情報をやり取りする。
521、522はワークレジスタのビットセット/ビッ
トクリアを行うための回路、524は前記のビット演算
を行うビット位置を指定するためのデコーダ、525は
ワークレジスタの1が立っているビット位置を示すため
のプライオリティエンコーダである。525において、
複数のビットが立っていた場合はLSBの方が優先して
出力される。プライオリティエンコーダの出力は主記憶
がディレクトリ操作のためのコマンドを出力する際のア
クセス先PU番号52cとして用いられる。526はワ
ークレジスタがオール0であることを判定するための回
路である。526の出力ワークレジスタ0信号52b
は、主記憶制御プロセッサ514の分岐条件として使わ
れる。520はデータバス上の1であるビットの数を数
え、ディレクトリ上のキャッシングしているPUの数を
表すアクセスPU数信号52aを出力するための回路で
ある。図8のディレクトリ操作回路52の動作の詳細は
後述する。図15は図7〜図14で表される、主記憶制
御回路50の動作の概要を1枚の表にまとめたものであ
る。
【0012】図16は、本発明における、主記憶のビッ
ト構成を詳細に記したものである。図に示すように通常
は主記憶のメモリ41は1ライン分のデータ(256ビ
ット)を記憶しているが、読み出し専用でないラインが
キャッシングされた場合(つまり、主記憶状態ビット4
2、43の組合せが、ROビットが0でCビットが1の
場合)には、メモリ41にはデータに代えて256PU
分のフルマップディレクトリ情報が記憶される。主記憶
のメモリ41上の各ビットはLSBから順にPU0〜P
U255のキャッシュに該当するラインが記憶されてい
るかどうかを示す。1ならばデータは該当するPUにキ
ャッシングされており、0ならばキャッシングされてい
ない。この例ではディレクトリの構成方法としてフルマ
ップのビットパターンを用いたが、キャッシングしてい
るPUをエンコードされたPU番号で表すポインター方
式を使用することもでき、同様の制御方式でディレクト
リ制御を行うことが可能である。図19にポインタ方式
のディレクトリを用いた場合の主記憶のビット構成を示
す。図19では、ディレクトリのエントリは16個あ
り、各エントリは15ビットのPU番号、1ビットのエ
ントリの使用/未使用を表すビットより構成される。こ
の場合、PU数の最大値は32768と大幅に多くのP
Uを扱うことが可能となる。ただし、ポインタ方式を使
用した場合には、1時にキャッシングするPUの数が1
6を越えないように無効化を行うなどの制御が必要にな
る。
【0013】ネットワークパケットの形式を図17に示
す。パケットには宛先PU番号701、パケット長を7
02、コマンド703、アクセスアドレス704があ
る。そのほかにコマンドによってはそのラインをアクセ
スしているPUを表すためのアクセス元PU番号70
5、アクセスラインのデータ706がおかれる。図18
には本発明で説明される並列計算機のアドレスのビット
構成及びアドレスマップを示す。主記憶のアドレスの上
位16ビットをそのアドレスを主記憶上に保持するPU
番号を示すために使用する。その結果、各PUに分散し
て配置されている主記憶全てをCPUから直接アクセス
することが出来る、物理分散論理共有メモリ(分散共有
メモリ)システムを実現することができる。本実施例で
は主記憶の各ラインに対応し、そのラインがキャッシン
グされている事を示す状態ビット42、データが読み出
し専用であることを示すビット43を設け、読み出し専
用でないラインがキャッシングされている場合には、主
記憶のメモリ41そのものの上にデータに代えてディレ
クトリ情報を記憶し、アクセス対象となるデータはキャ
ッシュ上のデータとし、ディレクトリ情報によりキャッ
シュ上のデータの写しを管理することに特徴が有る。
【0014】先ず、図1、図16、図18を用いて本シ
ステムの動作の概略を述べる。図18に本システムのア
ドレスのビット構成及びアドレスマップを示す。各PU
の主記憶は1つのアドレス空間に置かれる。これによ
り、各PUは他のPUの主記憶も自PUの主記憶と同様
にアクセスすることが出来る。CPUは64ビットのア
ドレスを持ち、上位16ビットはPU番号を表し、下位
48ビットでPU内のアドレスを表す。アドレスは、キ
ャッシュにおいては、上位アドレス(PU番号を含む)
とコラムアドレスに分けられる(図では1Mバイトのキ
ャッシュを持った場合のアドレス構成であり、コラムア
ドレスは20ビットである)。この場合、PU数の最大
値は65536、PU内メモリは最大256T(テラ)
バイトまで実装できる。ただし、常にこれらの全てが実
装される訳ではない。本システムでは各PUはダイレク
トマップ型のキャッシュを持つ。本実施例においては、
キャッシュ間のデータ一貫性は無効化(書き込みが起っ
たデータの他のキャッシュ上のコピーを消すこと)によ
り保持される。ただし、無効化のかわりに他のPUのキ
ャッシュ上のデータを最新のデータを表すように更新す
る方式を用いたキャッシュにおいても、本発明のディレ
クトリ制御方式は実現可能である。キャッシュは自PU
内の主記憶のデータのみならず、他PUの主記憶のデー
タも保持することが可能である。
【0015】CPU10がメモリアクセスを行った場
合、先ずキャッシュ制御回路20にコマンド、アドレ
ス、データ(書き込み、コンペーアーアンドスワップの
場合)が伝達される。CPUからのアクセスコマンドは
以下の4種である。 ・読み出し(Read) ・書き込み(Write) ・コンペアーアンドスワップ(C/S) 読み出しと新データの書き込みを不可分に実行する。
(クリティカルセクションへのアクセスに使用する) ・データ書き戻し(Flush) キャッシュ上のデータをメモリに書き戻す。CPUから
のアクセスを受けたキャッシュは、キャッシュアドレス
アレイ31の検索を行い、キャッシュのヒット/ミスの
判定を行い、さらにキャッシュ状態32、33、34の
値に応じキャッシュデータアレイ35上のデータのアク
セスを行う。さらに、主記憶へのコマンドが必要かどう
かの判定が行われ、キャッシュミス、共有領域への書き
込みに伴う無効化などにより、主記憶へのコマンドが必
要な場合はネットワーク800を通じてコマンドが送出
される。キャッシュは各キャッシュラインに対し、E
(排他)32、S(共有)33、R(読み出し専用)3
3の3ビットにより下記の4状態を表す。 ・E:(Exclusive) キャッシュ上のデータは排他であり、他のPUのキャッ
シュ上にコピーはない。本状態のときはEビットがオン
になる。 ・S:(Shared) キャッシュ上のデータは共有状態であり、他のPUのキ
ャッシュ上にコピーが存在する可能性が有る。本状態の
ときはSビットがオンになる。 ・R:(Read only) キャッシュ上のデータは読み出し専用である。本状態の
ときはRビットがオンになる。 ・I:(Invalid) キャッシュ上のデータは無効である。上記の3ビットが
全てオフの場合I状態になる。 E状態の場合はキャッシュ上のデータは自由に読み書き
できるのに対し、S状態のデータに書き込みが起った場
合は、他のキャッシュ上のコピーを無効化することによ
りキャッシュ一貫性を保持する必要が有る。
【0016】キャッシュからのコマンドを受け取った主
記憶は図17に示したコマンドのアクセスアドレスフィ
ールド704に格納されたアクセスアドレスにより主記
憶のアクセスを行い、主記憶管理ビット42(Cビッ
ト)、43(ROビット)の値に応じ、メモリ41上の
ディレクトリ情報の読み出し、データのアクセス等を行
う。その後、ディレクトリ操作回路52を用いてディレ
クトリの値を更新する。更に、他PUのキャッシュ上の
データの読み出し、無効化のために、他のPUのキャッ
シュへのコマンドが必要な場合はネットワーク800を
通じて他PUのキャッシュにコマンドが送出される。
【0017】図16にCビット(42)、RO(43)
ビットにより示される主記憶の状態を示す。Cビット、
ROビットは主記憶の各ラインに対応しておかれ、Cビ
ットは主記憶上のラインがキャッシングされていること
を示し、ROビットは主記憶上のラインは読み出し専用
であることを示す。Cビットは主記憶制御回路によりセ
ット/リセットされる。ROビットはCPUの特殊命令
により、セット/リセットされる。従って、主記憶のラ
イン毎に読み出し専用である事をソフトウェアで設定す
ることが出来る。通常(ROビットが0のとき)は、主
記憶のラインがキャッシングされていない場合(Cビッ
トが0の場合)は主記憶(41)上にはデータがおかれ
る。それに対し、データがキャッシングされている場合
(Cビットが1の場合)は主記憶のラインにはどのPU
がデータをキャッシングしているかを示すビットパター
ン(ディレクトリ)がおかれる。主記憶の各ビットはお
のおのPU0〜PU255に対応し、ビットが1の場合
は該当するPUがデータをキャッシングしていることを
示し、ビットが0の場合には該当するPUはデータを持
っていないことを表す。Cビットが1の場合には主記憶
上にはデータはおかれないため、該当するデータはキャ
ッシュ上にのみおかれることになる。この場合、主記憶
コントローラは、ディレクトリ情報を利用し最新データ
の読み出し、キャッシュ上のデータの無効化などを行
う。それに対してラインが読み出し専用のとき(ROビ
ットが1のとき)は、キャッシングされた場合もディレ
クトリの作成は行われない。従って、キャッシングの有
無にかかわらず、主記憶はデータを保持する。主記憶か
ら各キャッシュに対して出されたコマンドを受け取った
キャッシュは、図17に示したコマンドパケットのアド
レスフィールド704に格納されたアクセスアドレスに
よりキャッシュ30へのアクセスを行い、無効化、デー
タの読み出しなど必要とされる動作を行う。さらに、デ
ータの返送などが必要な場合はさらにネットワークを通
じたコマンドの転送が行われる。これら主記憶制御回路
50、キャッシュ制御回路20の動作は後に詳細に説明
する。
【0018】ネットワーク上のコマンドのフォーマット
を図17に示す。図は2バイト幅のネットワークにおけ
るパケット形式である。アドレス/データの1ワードは
8バイトであり、1ラインは4ワード(32バイト)で
ある。パケットには ・宛先PU番号701 ・パケット長702 ・コマンド703 ・アクセスアドレス(A)704 ・アクセス元PU番号(R)705 主記憶アクセスを発行したPUの番号 ・データライン(DL)706 アクセスされたアドレスを含む1ライン分のデータ が含まれる。このうちR、DLのフィールドはオプショ
ンであり、必要なコマンドにのみ付けられる。
【0019】ネットワーク上のコマンドは大きく分けて ・キャッシュから主記憶へのコマンド ・主記憶からキャッシュへのコマンド ・キャッシュ間のコマンド の3種に大別され、それぞれ以下に示すコマンドを持
つ。 (1)キャッシュから主記憶へのコマンド F(A,R):(Fetch) アドレスAを含むラインのデータの読み出し、R番PU
に返送する。このコマンドは、後述するDATAコマン
ド等によるラインの転送を必要とする。 I(A,R):(Invalidate) R番PU以外の全てのPUのキャッシュ上の、アドレス
Aを含むラインのデータを無効化する。 FI(A,R):(Fetch&Invalidat
e) アドレスAを含むラインのデータを読み出し、R番PU
に返送する。さらに、R番PU以外の全てのPUのキャ
ッシュ上のアドレスAを含むラインのデータを無効化す
る。このコマンドもDATAコマンド等によるラインの
転送を必要とする。 FL(A,DL,R):(Flush) キャッシュからアドレスAを含むラインのデータ(D
L)を追い出したことを示す。他にキャッシングしてい
るPUが無い場合には主記憶にデータを書き戻す。 (2)主記憶からキャッシュへのコマンド REQ(A,R):(Request) キャッシュ上のアドレスAを含むラインをR番PUに供
給する要求。 INV(A,R):(Invalidate) キャッシュ上のアドレスAを含むラインを無効化する要
求。 REQINV(A,R):(Request&Inva
lidate) キャッシュ上のアドレスAを含むラインをR番PUに供
給した後、該当するラインを無効化する要求。 EX(A):(Exclusive) キャッシュ上のアドレスAを含むラインを排他状態にす
る要求。 DATA(A,DL):(Data) 主記憶からキャッシュに(読み出し専用でない)ライン
のデータを供給する。 DATARO(A,DL):(Data ReadOn
ly) 主記憶からキャッシュに読み出し専用であるラインのデ
ータを供給する。 (3)キャッシュからキャッシュへのコマンド DATACACHE(A,DL):(Data Cac
he) キャッシュから他のキャッシュにラインのデータを供給
する。このうち、DATA、DATARO、DATAC
ACHEはFもしくはFIコマンドに対する応答である
(単独で出されることはない)。
【0020】ここで、ネットワーク入出力回路60に置
けるコマンドの取り扱について述べる。ネットワークコ
マンドはコマンドパケット組立回路62、64において
アドレス、コマンド等の各信号から、図17に示す形式
に組み立てられた後、パケット送信回路66に入力され
る。パケット送信回路では、パケットの宛先PU番号7
01を調べ、自PUに対するコマンドであると判定され
た場合にはネットワークを使わずに66bを通じて、自
PUのパケット受信回路61に入力される。その他の場
合にはネットワーク800を通じパケットに記された宛
先PUに送られる。ネットワークから送られてきたコマ
ンドは先ずパケット受信回路61に入力される。パケッ
ト受信回路ではパケット内のコマンドフィールド703
に記されたコマンドの種類により、キャッシュ制御回路
20に送るべきコマンドか、主記憶制御回路50に送る
べきコマンドかが判定される。具体的には上記(1)に
示されたコマンドは主記憶装置に、(2)(3)に示さ
れたコマンドはキャッシュに送られる。主記憶装置、キ
ャッシュに入力されたコマンドはコマンドパケット分解
回路61、63でアドレス、コマンドなどのそれぞれの
信号に分解される。例えば、キャッシュ側のコマンドパ
ケット分解回路61では、パケット中のアドレス704
を23、コマンド703を61a、アクセス元PU番号
705を61b、データ706を24に分解する。コマ
ンドパケット組立回路62では宛先PU番号701を2
5aから、コマンド703を21aから、アクセスアド
レス704を23から、アクセス元PU番号705を2
2から、データライン706を24から取り込み、組み
立てる(パケット長702はコマンド毎に決められてい
る)。主記憶側の回路でも同様の操作が行われる。
【0021】次に図1、図3〜図6を用いて、キャッシ
ュ制御回路20の動作を詳細に説明する。キャッシュ制
御回路20は、CPU10もしくは他のPUの主記憶等
からネットワーク800を通じて到来するコマンドを受
け(自PUからのコマンドの場合も有る)、キャッシュ
の状態に応じた動作を行う回路である。キャッシュはC
PUからのアクセス、外部からのアクセスの両方を受け
付ける。CPU10からのアクセスが行われた場合はC
PUからのアドレスはアドレスバス23に出され、コマ
ンドはコマンド信号11を経由して伝えられる。また、
書込み、C/Sの場合はデータバス24にデータが出力
される。外部からのアクセスが行われた場合はコマンド
パケット分解回路61でアドレス23、コマンド61
a、アクセスPU番号61b、データ24が各バス等の
上に出される。キャッシュ動作決定回路21はCPUコ
マンド11もしくは外部コマンド61aをトリガーとし
て動作を開始する。キャッシュアクセスが行われた場合
にはアドレスバス23上にはアクセスアドレスが出力さ
れ、その1部であるコラムアドレス23aを用い、コラ
ムアドレス23aで指定される領域からキャッシュ30
内のアドレスアレイ31、状態アレイ32、33、34
が読み出される。キャッシュ動作決定回路21では先ず
Hit判定回路210において、アクセスアドレスの上
位アドレス23bとアドレスアレイからのキャッシュア
ドレス31aの比較を行い、キャッシュのヒット/ミス
を決定する。それと同時にキャッシュの状態信号(32
a、33a、34a)及び、CPUや外部からのコマン
ド信号(11、61a)もキャッシュ動作決定回路に入
力される。キャッシュ動作決定回路の内部では、キャッ
シュ書き戻し判定回路211、外部コマンド発生回路2
12、次状態判定回路213の3つの回路でキャッシュ
の次の動作を決定する。これらの回路は組合せ回路であ
り、入力、出力の関係は図4、図5、図6で表されてい
る(図中の斜線は起り得ない組み合せを示す)。
【0022】キャッシュ書き戻し判定回路211では、
現在アクセスするラインをリプレース(該当するコラム
アドレスのキャッシュに現在入っているラインの追い出
し)する際にキャッシュ上のデータを主記憶に書き戻す
必要があるかどうかが判定される。図4に示すように、
キャッシュヒットの場合は既に該当するアドレスはキャ
ッシュに登録されているのでリプレース、書き戻しは必
要ない。キャッシュミスの場合は、該当するコラムアド
レスに既に登録されているラインのキャッシュ状態によ
り書き戻しの要/不要を判断する。キャッシュ状態が
E、S、つまり有効なデータがキャッシュに登録されて
いた場合は、リプレース時に該当するラインの書き戻し
を行う必要がある。この書き戻しはデータが変更されて
いない場合にも必要である。なぜなら、ディレクトリ情
報の更新を行うとともに、ディレクトリとして使われて
いた主記憶上に最新のデータを復旧しなければならない
可能性が有るからである(データの復旧の必要がなくて
もディレクトリ情報を更新するため、最低限リプレース
されたアドレスは通知しなければならない)。それに対
して、キャッシュ状態がRの場合は主記憶ではディレク
トリ制御は行われていないので、アドレスの通知、デー
タの書き戻しは必要はない。またキャッシュ状態がIの
場合は書き戻し等は行う必要はない。キャッシュ書き戻
し判定回路211で書き戻しが必要であると判断された
場合には、信号211aを通じてFLコマンド発生回路
214に通知され、外部コマンド出力信号21aを通じ
パケット組立回路62に、FLコマンドを送出すること
が指示される。その際、アドレスバス23にはアドレス
アレイ31からのキャッシュアドレス31aが出力さ
れ、FLコマンドのアドレスとして用いられる。FLコ
マンドのあて先はキャッシュアドレス中のPU番号フィ
ールドで示されるPUである。このFLは次に述べる外
部コマンド発生回路からのコマンドに先だって出され
る。
【0023】次に図5、図6を用いて外部コマンド発生
回路212及び次状態決定回路213の動作について述
べる。外部コマンド発生回路212は、CPUもしくは
外部からのコマンドと、アクセスされたキャッシュライ
ンの状態から、外部コマンド出力信号21aに出力する
コマンドを決定する回路である。外部コマンド出力信号
に出されたコマンドはパケット組立回路62に伝えら
れ、ネットワーク上にコマンドが出力される。それに対
して次状態決定回路213は、同じ条件からアクセスさ
れたキャッシュラインの次のキャッシュ状態を決定する
ための回路である。次状態決定回路213で決定された
次状態はキャッシュの状態アレイ32、33、34に書
込まれる。ただし、CPUアクセスがミスした場合など
にFコマンドを用いて他のPUにあるデータを読み出し
た場合にはキャッシュの次状態の決定は行われず、返答
コマンド待合せ回路215、216を用いて例外的な動
作が行われる。以下ではCPU、外部からの各コマンド
別に動作を述べる。CPUからのReadコマンドに対
し、キャッシュミスした場合もしくはキャッシュヒット
してI状態であった場合には、Fコマンドをアクセスさ
れたアドレスを主記憶上に持っているPU(以下ではホ
ームPUと呼ぶ)に送り、必要なラインの読み出しを要
求する。キャッシュはデータの返答待ちになる。ホーム
PUの番号はアドレスのPU番号の部分(23c)によ
り示されるため、ホームPUにコマンドを送る際には送
信先PU番号のセレクタ25aはPU番号アドレス23
cの側に切り替えられる。また、アクセスPU番号には
自PUのPU番号22が入力される。キャッシュの次状
態の決定はコマンドの返答によりラインが送られるまで
行われず、その代わり、返答コマンド待合せ回路のFラ
ッチ215がセットされる。この場合、CPUからのア
クセスは待ち状態に入り、データのアクセスも返答の到
着後となる。ただし、外部からのコマンドの受け付けは
Fラッチとは無関係に行われる。それに対し、キャッシ
ュヒットして、キャッシュ状態がE、S、Rの場合はキ
ャッシュ上のデータの読み出しが行われ、外部へのコマ
ンドは出力されず、キャッシュ状態も変化しない。CP
UからのWriteもしくはC/Sコマンドに対し、キ
ャッシュミスした場合もしくはキャッシュヒットしてI
状態であった場合には、FIコマンドをホームPUに送
り、必要なラインを読み出すと同時に、キャッシュの一
貫性を保つために、他のキャッシュ上のラインのコピー
を無効化する。キャッシュはFコマンドの場合と同様に
待ち状態に入り、返答コマンド待合せ回路のFIラッチ
216がセットされる。キャッシュヒットして、キャッ
シュがE状態の場合はキャッシュ上のデータは排他であ
るため、自由に変更することが出来る。従って、キャッ
シュ上のデータへの書込みもしくはC/S動作が行わ
れ、外部コマンドの出力、キャッシュ状態の変化は行わ
れない。キャッシュヒットして、キャッシュ状態がSの
場合は、キャッシュ上のデータを排他にするために、他
のキャッシュ上のコピーを消去するためのIコマンドが
ホームPUに送られたる。その後キャッシュ上のデータ
のアクセスが行われ、キャッシュの次状態はEとなる。
CPUからのFlushコマンドに対しては、先ほどの
リプレースの場合と同様に、キャッシュヒットして、キ
ャッシュ状態がE、Sの場合にはディレクトリ情報を更
新すると共に、主記憶上のデータを復旧しなければなら
ない可能性が有るため、ホームPUに対しFLコマンド
が送られる。それに対してRの場合には主記憶ではディ
レクトリ制御は行われていないため、FLコマンドは不
要である。キャッシュミスもしくは、キャッシュヒット
してI状態の場合はFLを行う必要はない。キャッシュ
の次状態はIとなる。ただし、キャッシュミスの場合は
既に登録されている他のアドレスのラインのデータのキ
ャッシュ状態は変化しない。
【0024】次に外部からのコマンドに対する動作を述
べる。外部からINVコマンドが来た場合はキャッシュ
上のデータは無効化されI状態となる。ただし、キャッ
シュミスの場合はキャッシュ状態は変化しない。外部か
らREQコマンドが到来した場合は、外部からのアクセ
スアドレスを用い、データアレイ35上のデータが読み
出され、DATACACHEコマンドでアクセス元のP
Uに返送される。従って外部コマンド出力21aにはD
ATACACHEが出され、送信先PU番号を切り替え
るセレクタ25はアクセス元PU番号61bに切り替え
られる。キャッシュの次状態はSとなる。REQINV
の場合もREQと同様にDATACACHEコマンドで
データの返送が行われた後、キャッシュの次状態はIと
なる。外部からEXコマンドが到来した場合はキャッシ
ュの状態がE、Sの場合は、キャッシュの次状態はEと
なり、キャッシュ上のデータを排他状態とする。キャッ
シュ状態がIの場合はキャッシュ次状態はIのままとな
り、キャッシュミスの場合はキャッシュ状態は変化しな
い。
【0025】次にDATA、DATACACHE、DA
TAROコマンドによる外部からの返答が行われた場合
の動作について述べる。この場合、キャッシュは返答コ
マンド待合せ回路のラッチ215、216の何れかがO
Nとなり、CPUからのアクセスを待たせた状態となっ
ている。この場合、パケットにより送られてきたアドレ
ス及びデータラインをアドレスアレイ31及びデータア
レイ35に書込むと同時に、キャッシュの次状態を決定
し、状態アレイに書込む。キャッシュの次状態はコマン
ドの種類等により変化する。Fラッチ215がON(F
コマンドの返答待ち)の場合はデータの返送されてきた
コマンドにより次状態は異なる。DATAコマンドによ
りデータが返送された場合は、主記憶からデータが返送
されてきたので、他のキャッシュがデータをキャッシン
グしていることはない。従ってキャッシュ上のラインの
新状態はEとなる。DATACACHEによりデータが
返送された場合は、ラインは他のキャッシュから供給さ
れているためデータは共有である。従って、キャッシュ
の新状態はSとなる。DATAROの場合はラインは読
み出し専用であるため、キャッシュの新状態はRとな
る。FIラッチ216がON(FIコマンドの返答待
ち)の場合は例えキャッシュからデータが供給された場
合でも、相手のキャッシュ上のデータは無効化されてい
る。従って、キャッシュの新状態は必ずEとなる。
【0026】次に図1、図7〜図15を用いて、主記憶
制御回路50の動作を詳細に説明する。主記憶制御回路
50は、他のPUのキャッシュからネットワーク800
を通じて到来するコマンドを受け(自PUからのコマン
ドの場合も有る)、主記憶の読み出しや、ディレクトリ
を用いたキャッシュ管理など必要な動作を行うための回
路である。主記憶アクセスが行われた場合はコマンドパ
ケット分解回路63でアドレス53、コマンド63a、
アクセスPU番号63b、データ54が各バス等の上に
出される。主記憶動作決定回路51は外部コマンド63
aをトリガーとして動作を開始する。主記憶アクセスが
行われると、先ずアドレスバス53上のアドレスを用い
て、主記憶装置40内の主記憶状態ビット42、43、
及びデータもしくはディレクトリを保持するメモリ41
の読み出しが行われる。メモリから読み出された値はデ
ィレクトリ操作回路52の中のビット数計数回路520
に入力されキャッシングしているPUの数が求められ、
アクセスPU数信号52aを通じ主記憶動作決定回路5
1に入力される。ただし、この値が意味を持つのはディ
レクトリ管理が行われている時、つまりCビットが1で
且つROビットが0の時のみである。主記憶動作決定回
路51では主記憶状態、42a、43a、アクセスPU
数52a、外部コマンド63a、及びディレクトリ操作
回路のワークレジスタ523がオール0であることを示
すワークレジスタ0信号52bを入力とし、必要な外部
へコマンド51aの出力、ディレクトリ操作回路52を
用いたディレクトリ制御、及び必要ならば主記憶状態設
定回路515を用いた主記憶状態の変更が行われる。こ
の際、外部コマンドの出力等は複雑な条件判断を伴う繰
返し動作であり、通常の論理回路で構成することは困難
である。それゆえ、主記憶動作決定回路の主要部の動作
は主記憶制御プロセッサ514で行う。その前段の、主
記憶制御プロセッサの動作条件を判定する部分は組み合
せ回路で構成する。
【0027】主記憶動作決定回路の動作は、図7の論理
図及び図9〜図14の主記憶制御プロセッサの動作フロ
ーにより表される。図7において、外部コマンド63a
は外部コマンドデコーダ512において、F、I、F
I、FLの4つに分類される。また、アクセスPU数5
2aもデコーダで1、2、3以上の3つに分類される。
その後、ゲート511a〜511d、513a〜513
iを用いて、主記憶状態42a、43a、デコードされ
た外部コマンド512a〜512d、デコードされたア
クセスPU数510a〜510cより主記憶制御プロセ
ッサ514の動作条件513j〜513rを判定する。
主記憶制御プロセッサの動作条件は以下の9つの場合で
ある。 ・場合1: ROビットが1。つまり、アクセスされた
ラインが読み出し専用である場合。(場合2以下は全て
読み出し専用で無い場合) ・場合2: Cビットが0。つまり、キャッシングして
いるPUが1つもなく、コマンドがF、FIのとき。
(場合3以下は全てキャッシングしているPUがある場
合) ・場合3: キャッシングしているPUの数が1以上
で、コマンドがFのとき。 ・場合4: キャッシングしているPUの数が1で、コ
マンドがFIのとき。 ・場合5: キャッシングしているPUの数が1で、コ
マンドがFLのとき。 ・場合6: キャッシングしているPUの数が2以上
で、コマンドがIのとき。 ・場合7: キャッシングしているPUの数が2以上
で、コマンドがFIのとき。 ・場合8: キャッシングしているPUの数が2で、コ
マンドがFLのとき。 ・場合9: キャッシングしているPUの数が3以上
で、コマンドがFLのとき。 この他に、 ・場合: キャッシングしているPUが1で、コマン
ドがIのとき。 もあるが、主記憶制御回路は何の動作も行わないため
(なぜなら、キャッシュ上のデータは既に排他状態にな
っている)、主記憶制御プロセッサの動作条件からは省
いてある。主記憶状態、コマンド等の組み合せにこれ以
外の場合も考えられるが、それ等は実際には起り得ない
組み合せである。主記憶制御プロセッサの動作がキャッ
シングの有無、キャッシングしているPUの数により違
うのは、キャッシングしているPU数に応じてディレク
トリの管理方法が違うからである。図9〜図14では以
上で述べた9つの場合のそれぞれについて主記憶制御プ
ロセッサ514が取るべき動作を規定した動作フローで
ある。主記憶管理プロセッサは以上述べた9つの場合に
応じ外部コマンド51aの出力、ディレクトリ操作回路
52によるディレクトリの操作を行う。ディレクトリ操
作回路52から主記憶制御プロセッサ514へはディレ
クトリ操作回路内のワークレジスタ523がオール0で
あることを示すワークレジスタ0信号52bが条件判断
のために入力される。
【0028】図8にディレクトリ操作回路52の詳細図
を示す。ディレクトリ操作回路には、データバス54上
の1であるビット数を計算し、アクセスPU数52aを
出力するビット数計数回路520、データバス54上に
出されたディレクトリの値を記憶し、演算を行うための
ワークレジスタ523、ワークレジスタに対してビット
演算を行うビットセット回路521、ビットクリア回路
522、ビット演算を行うビット位置をアクセス元PU
番号63b、もしくはプライオリティエンコーダ525
の出力52cから求めるデコーダ回路524、ワークレ
ジスタの値からアクセス先PU番号52cを求めるため
のプライオリティエンコーダ525、ワークレジスタの
値がオール0であることを判定し、ワークレジスタ0信
号52bを出力するためのオール0判定回路526から
なる。プライオリティエンコーダ525はワークレジス
タの値523aの中で1である一番下のビットの番号を
返す。つまり、ディレクトリ上で複数のビットが立って
いた場合は、PU番号が一番小さいPUのPU番号が出
力される。
【0029】主記憶制御プロセッサが行う機能としては
以下の8個が有る。 (1) 外部コマンド51aの出力。(これによりコマ
ンドパケット組立回路64はパケットの組立を行い、送
信回路66を起動する。)図9〜図14では外部コマン
ドは下線で表す。 (2) 送信先PU切り替え回路55の切り替え。(コ
マンドパケット分解回路63から出力されるアクセス元
PU番号63b、ディレクトリ操作回路52の中のプラ
イオリティエンコーダ525から出力されるアクセス先
PU番号52cの2者から選択する。) (3) 主記憶状態設定回路515を用いた、主記憶の
状態のCビット(42a)のセット/リセット(通常は
主記憶状態は変化しない)。 (4) WREG523のビットのセット/クリア(ビ
ット操作の入力としては、コマンドパケット分解回路6
3から出力されるアクセス元PU番号63b、もしく
は、プライオリティエンコーダ525の出力52cのど
ちらかをデコーダ524でデコードした結果が用いられ
る)。これはキャッシングしているPUが増減した場合
の、ディレクトリ操作に用いられる。 (5) ワークレジスタ(WREG)523全体のクリ
ア。 (6) データバス54を経由した、WREG523と
主記憶のメモリ41との間のディレクトリ情報の読み出
し、書込み。 (7) データバス54を通じ、コマンドパケットで送
られてきたデータの主記憶のメモリ41への書込み。 (8) ワークレジスタ0信号52bを使用した、WR
EG523がオール0かどうかの判定、条件分岐。 この8つの動作を図9〜図14に示すように組み合せ、
主記憶制御プロセッサ514は動作する。
【0030】以下では図9〜図14の流れ図をもとに、
場合1〜場合9の各場合について、主記憶制御プロセッ
サ514の動作を述べる。場合1、つまりアクセスされ
たラインが読み出し専用である場合には、ディレクトリ
操作を行う必要はない。従って、DATAROコマンド
で(主記憶状態読み出しと同時に主記憶メモリ41から
あらかじめ読み出されてある)ラインのデータをアクセ
ス元PUに送る(ステップ911、912)。場合2、
つまりF、FIコマンドに対してキャッシングしている
PUが1つもない場合は、主記憶上に最新のデータが存
在する。従って、DATAコマンドで読み出された値を
アクセス元PUに送る(ステップ921、922)。更
に、キャッシングしたPUの番号を記憶するために、主
記憶のメモリの該当するラインにはディレクトリを作成
しなければならない。そのため、ディレクトリが作成さ
れたことを表すために、主記憶状態のCビットをセット
し(ステップ923)、WREGのアクセス元PUに対
応するビットのみをセットし(ステップ924、92
5)、WREGの内容を主記憶に書込む(ステップ92
6)。場合3、つまりFコマンドに対してキャッシング
しているPUが存在する場合には、主記憶のメモリ41
上にはディレクトリ情報が置かれているため、最新のデ
ータは存在しない。従って、キャッシングしているPU
の1つにREQコマンドで、データのアクセス元PUへ
の転送を要求する必要がある。そのため、主記憶上のデ
ィレクトリ情報をWREGに読み込み(ステップ93
1)、プライオリティエンコーダから出力される番号の
PU(キャッシングしているPUの中で一番番号の小さ
いPU)にREQコマンドを送付する(ステップ93
2、933)。WREG上のディレクトリ情報のアクセ
ス元PU番号に対応するビットをセットし(ステップ9
34)主記憶にディレクトリ情報を書き戻す(ステップ
935)。場合4、つまりFIコマンドに対してキャッ
シングしているPUが1台ある場合は、キャッシングし
ているPUにデータのアクセス元PUへの転送を要求す
ると同時に、そのPU上のデータを無効化する必要があ
る。この場合、ディレクトリ情報をWREGに読み込み
(ステップ941)プライオリティエンコーダから出力
されるキャッシングしているPUにREQINVコマン
ドを送付する(ステップ942、943)。WREG上
のディレクトリ情報はアクセス元PU番号に対応するビ
ットのみをセットし(ステップ944、945)、主記
憶へディレクトリ情報を書き戻す(ステップ946)。
場合5、つまりキャッシングしているPUの数が1のと
きにFLコマンドが到来した場合は、キャッシングして
いるPUが無くなったため、ディレクトリ管理をやめ、
主記憶上のラインのデータを復旧する必要がある。その
ため、主記憶状態のCビットをリセットし(ステップ9
51)、FLコマンドで送られてきたラインデータを主
記憶に書込む(ステップ952)。場合6、つまりキャ
ッシングしているPUの数が2以上の場合にIコマンド
が到来した場合は、アクセス元以外のPUのキャッシュ
上にあるデータを全て無効化する必要がある。一般には
キャッシングしているPUの数は複数であるので、繰返
し動作により複数のPUに無効化コマンドを送付しなけ
ればならない。そのため、ディレクトリ情報をWREG
に読み込んだ(ステップ961)後、アクセス元PUに
相当するビットをクリアする(ステップ962)。その
後プライオリティエンコーダの出力するPUにINVメ
ッセージを送付し、該当するWREGのビットをクリア
する動作を、WREGがオール0になるまで繰り返す
(ステップ963〜966)。その後WREGのアクセ
ス元PUに該当するビットをセットし(ステップ96
7)、ディレクトリ情報を書き戻す(ステップ96
8)。場合7、つまりキャッシングしているPUの数が
2以上のときにFIコマンドが到来した場合も、キャッ
シングしているPUの一つにデータのアクセス元PUへ
の転送を要求すると同時に、全PUのキャッシュ上のデ
ータを無効化する必要がある。そのため、ディレクトリ
情報をWREGに読み込んだ(ステップ971)後、プ
ライオリティエンコーダの出力するPUにREQINV
コマンドを出力(ステップ972、973)すると共
に、REQINVを送信したPUに該当するWREGの
ビットをクリアする(ステップ974)。これにより、
キャッシングしているPUの中で、PU番号の一番小さ
いPUに対して、データのアクセス元PUへの転送要求
と無効化を同時に実行する。その後残りのPUのキャッ
シュ上のデータを全て無効化する。そのため、プライオ
リティエンコーダの出力するPUにINVメッセージを
送付し、該当するWREGのビットをクリアする動作
を、WREGがオール0になるまで繰り返す(ステップ
975〜978)。その後WREGのアクセス元PUに
該当するビットをセットし(ステップ979)、ディレ
クトリ情報を書き戻す(ステップ970)。場合8、つ
まりFLコマンドに対しキャッシングしているPUの数
が2であった場合は、キャッシングしているPUはまだ
1個残っているので、主記憶にデータを書き戻す必要は
ない。この場合は、ディレクトリ操作(データを追い出
したPUに対するディレクトリをクリアすること)、及
び残ったPUに対しデータが排他であることの通知を行
う必要がある。そのため、ディレクトリ情報をWREG
に読み込んだ(ステップ981)後、アクセス元PUに
対応するビットをクリアし(ステップ982)、プライ
オリティエンコーダの出力するキャッシングしている残
り1台のPUに対しEXコマンドを送付する(ステップ
983、984)。最後にディレクトリ情報を主記憶に
書き戻す(ステップ985)。場合9、つまりFLコマ
ンドに対しキャッシングしているPUの数が3以上の場
合は、ディレクトリ操作のみを行う。そのため、ディレ
クトリ情報のWREGへの読み込み(ステップ99
1)、アクセス元PUに対応するビットのクリア(ステ
ップ992)、及びディレクトリ情報の書き戻し(99
3)を行う。
【0031】図15は以上述べた主記憶動作決定回路5
1の動作の概要ををまとめたものである。これらの動作
を行うことにより、各PUのキャッシュのキャッシング
状況に合わせ、主記憶そのものの上にあるディレクトリ
を管理することが出来る。以上述べた機構により、キャ
ッシュ、主記憶の状態を矛盾無く管理し、主記憶そのも
のにディレクトリを置いたDSM方式を実現することが
出来る。
【0032】
【発明の効果】本発明によれば、並列計算機において、
データが記憶されていた主記憶領域そのものをディレク
トリとして用いることにより、主記憶の他にディレクト
リのためのメモリを持つことをなくし、ディレクトリの
ために主記憶の容量を増大させることなく分散共有メモ
リを実現することが出来る。
【図面の簡単な説明】
【図1】本発明の実施例の並列計算機の構成を示す図で
ある。
【図2】従来のディレクトリ方式の分散共有メモリ機構
を持った並列計算機の構成を示す図である。
【図3】キャッシュ動作決定回路の詳細構成を示す図で
ある。
【図4】キャッシュリプレース判定回路の入力と出力の
関係を説明する図である。
【図5】外部コマンド発生回路の入力と出力の関係を説
明する図である。
【図6】キャッシュ次状態判定回路の入力と出力の関係
を説明する図である。
【図7】主記憶動作決定回路の詳細構成を示す図であ
る。
【図8】ディレクトリ操作回路の詳細構成を示す図であ
る。
【図9】主記憶制御プロセッサにおける処理の場合1、
2のフローチャートを示す図である。
【図10】主記憶制御プロセッサにおける処理の場合3
のフローチャートを示す図である。
【図11】主記憶制御プロセッサにおける処理の場合
4、5のフローチャートを示す図である。
【図12】主記憶制御プロセッサにおける処理の場合6
のフローチャートを示す図である。
【図13】主記憶制御プロセッサにおける処理の場合7
のフローチャートを示す図である。
【図14】主記憶制御プロセッサにおける処理の場合
8、9のフローチャートを示す図である。
【図15】主記憶制御回路の動作をまとめて説明する図
である。
【図16】本実施例における主記憶装置のビット構成を
示す図である。
【図17】ネットワークを流れるコマンドの形式を示す
図である。
【図18】本実施例における、アドレスのビット割当て
およびアドレスマップを示す図である。
【図19】ポインタ方式を採用した場合の主記憶装置の
ビット構成を示す図である。
【符号の説明】
10 CPU 20 キャッシュ制御回路 21 キャッシュ動作決定回路 22 自PU番号保持レジスタ 23 アドレスバス 24 データバス 25 送信先PU番号選択セレクタ(キャッシュ動作決
定回路) 30 キャッシュ 31 キャッシュアドレスアレイ 32 キャッシュ状態アレイ(Eビット) 33 キャッシュ状態アレイ(Sビット) 34 キャッシュ状態アレイ(Rビット) 35 キャッシュデータアレイ 40 主記憶装置 41 主記憶メモリ 42 主記憶状態(Cビット)メモリ 43 主記憶状態(ROビット)メモリ 44 ディレクトリ専用メモリ 50 主記憶制御回路 51 主記憶動作決定回路 52 ディレクトリ操作回路 53 アドレスバス 54 データバス 55 送信先PU番号選択セレクタ(主記憶動作決定回
路) 60 ネットワーク入出力回路 61 コマンドパケット分解回路(キャッシュ制御回
路) 62 コマンドパケット組立回路(キャッシュ制御回
路) 63 コマンドパケット分解回路(主記憶制御回路) 64 コマンドパケット組立回路(主記憶制御回路) 65 パケット受信回路 66 パケット送信回路 100、110 プロセッシング・ユニット 210 キャッシュヒット判定回路 211 キャッシュ書き戻し判定回路 212 外部コマンド発生回路 213 キャッシュ次状態判定回路 214 FLコマンド発生回路 215 返答コマンド待合せラッチ(F) 216 返答コマンド待合せラッチ(FI) 510 アクセスPU数デコーダ 512 外部コマンドデコーダ 514 主記憶制御プロセッサ 520 ビット数計数回路 521 ビットセット回路 522 ビットクリア回路 523 ワークレジスタ 525 プライオリティエンコーダ 526 ワークレジスタオール0判定回路 800 ネットワーク
フロントページの続き (51)Int.Cl.7 識別記号 FI G06F 15/177 682 G06F 15/177 682K (72)発明者 北井 克佳 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所 中央研究所内 (56)参考文献 寺澤卓也,天野英晴,工藤知宏,”マ ルチプロセッサの記憶システム (1)”,情報処理,社団法人情報処理 学会,1993年1月15日,第34巻,第1 号,p.96−105 寺澤卓也,天野英晴,工藤知宏,”マ ルチプロセッサの記憶システム (2)”,情報処理,社団法人情報処理 学会,1993年2月15日,第34巻,第2 号,p.233−243 福田晃,”並列オペレーティング・シ ステム”,情報処理,社団法人情報処理 学会,1993年9月15日,第34巻,第9 号,p.1139−1149 Daniel Lenoski et al.,”The Stanford Dash Multiprocess or”,Computer,IEEE, 1992年3月,第25巻,第3号,p.63− 79 David Chaiken et al.,”Directory−Bas ed Cache Coherence in Large−Scale Mu ltiprocessors”,Com puter,IEEE,1990年6月,第 23巻,第6号,p.49−58 (58)調査した分野(Int.Cl.7,DB名) G06F 15/16 - 15/177 G06F 12/08 - 12/12

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】 複数のプロセッシングユニットを持ち、
    各々のプロセッシングユニットが主記憶の一部を持ち、
    各プロセッシングユニットに分散しておかれた主記憶を
    全てのプロセッシングユニットが共有してアクセスする
    ことが可能であり、各プロセッシングユニットにおかれ
    たキャッシュに自または他のプロセッシングユニットの
    主記憶上のデータを登録し、主記憶のデータを複数のプ
    ロセッシングユニットで共用するようにした並列計算機
    の記憶制御方法であって、 各プロセッシングユニットの主記憶の各々のデータライ
    ンに対応し、該ラインが自または他の何れかのプロセッ
    シングユニットのキャッシュに登録されているか否かを
    示す情報を付与し、 ラインのデータがいずれかのプロセッシングユニットの
    キャッシュに登録された場合には、前記登録されている
    か否かを示す情報を登録状態とし、該ラインのデータが
    記憶されていた主記憶領域にデータに代えて該ラインの
    データがどのプロセッシングユニットのキャッシュに登
    録されているかを示すディレクトリ情報を記憶させ、 該ラインのデータをキャッシュに登録しているプロセッ
    シングユニットの組み合せが変更された場合には該主記
    憶上に記憶されたディレクトリ情報を現在該ラインのデ
    ータをキャッシュに登録しているプロセッシングユニッ
    トを示すディレクトリ情報に変更し、 該ラインのデータをどのプロセッシングユニットもキャ
    ッシュに登録しなくなった場合には、ディレクトリ情報
    に代えてキャッシュ上に登録されたデータを主記憶に書
    き戻すようにしたことを特徴とする並列計算機の記憶制
    御方法。
  2. 【請求項2】 請求項1記載の並列計算機の記憶制御方
    法において、 キャッシュに登録したラインが、キャッシュの空き領域
    が無くなったことによりリプレースされた場合もしくは
    プロセッサから明示的な命令等によりキャッシュから追
    い出される場合に、 キャッシュの該ラインのアドレスとキャッシュ上に登録
    されていたデータを主記憶に送付し、主記憶に記憶され
    た該ラインに相当するディレクトリを読み出し、 該ラインのデータをキャッシュ上に登録していたプロセ
    ッシングユニットが2以上有った場合にはディレクトリ
    の内容のみを更新し、1のみであった場合にはキャッシ
    ュから送られてきたデータをディレクトリに代えて主記
    憶に書き戻すようにしたことを特徴とする並列計算機の
    記憶制御方法。
  3. 【請求項3】 請求項1記載の並列計算機の記憶制御方
    法において、 各プロセッシングユニットの主記憶の各々のデータライ
    ンに対応し、該ラインが読み出し専用であるか否かを示
    す情報を付与し、 読み出し専用でないラインのデータがキャッシュ上に登
    録された場合にはディレクトリ情報を作成して該ライン
    のデータが記憶されていた主記憶領域にデータに代えて
    ディレクトリ情報を記憶させ、 読み出し専用であるラインのデータがキャッシュ上に登
    録された場合にはディレクトリ情報の作成を行わないよ
    うにしたことを特徴とする並列計算機の記憶制御方法。
  4. 【請求項4】 CPUと、キャッシュと、キャッシュ制
    御回路と、主記憶装置と、主記憶制御回路と、ネットワ
    ーク入出力回路を備えるプロセッシングユニットを複数
    台ネットワークにより接続し、各プロセッシングユニッ
    トの主記憶装置に分散して記憶されたデータを全てのプ
    ロセッシングユニットが共有してアクセスし、各プロセ
    ッシングユニットにおかれたキャッシュに自または他の
    プロセッシングユニットの主記憶装置上のデータを登録
    し、主記憶装置のデータを複数のプロセッシングユニッ
    トで共用するようにした並列計算機であって、 各プロセッシングユニットの主記憶装置の各々のデータ
    ラインに対応して、該ラインが自または他の何れかのプ
    ロセッシングユニットのキャッシュに登録されているか
    否かを示す情報を記憶する記憶手段を設け、 各プロセッシングユニットの主記憶制御回路は、ライン
    のデータがいずれかのプロセッシングユニットのキャッ
    シュに登録された場合、前記記憶手段に登録されたこと
    を示す情報を格納すると共に該ラインのデータがどのプ
    ロセッシングユニットのキャッシュに登録されているか
    を示すディレクトリ情報を作成して該ラインのデータが
    記憶されていた主記憶領域にデータに代えて記憶する手
    段と、該ラインのデータをキャッシュに登録しているプ
    ロセッシングユニットの組み合せが変更された場合、該
    主記憶装置に記憶されたディレクトリ情報を現在該ライ
    ンのデータをキャッシュに登録しているプロセッシング
    ユニットを示すディレクトリ情報に変更する手段と、該
    ラインのデータをどのプロセッシングユニットもキャッ
    シュに登録しなくなった場合、ディレクトリ情報に代え
    てキャッシュ上に登録されたデータを主記憶装置に書き
    戻す手段を備えることを特徴とする並列計算機。
  5. 【請求項5】 請求項4記載の並列計算機において、 キャッシュに登録したラインが、キャッシュの空き領域
    が無くなったことによりリプレースされた場合もしくは
    プロセッサから明示的な命令等によりキャッシュから追
    い出され、前記主記憶制御回路が前記キャッシュ制御回
    路からキャッシュの該ラインのアドレスとキャッシュ上
    に登録されていたデータを送付された場合、前記主記憶
    制御回路は、主記憶装置に記憶された該ラインに相当す
    るディレクトリを読み出し、該ラインのデータをキャッ
    シュ上に登録していたプロセッシングユニットが2以上
    あったときにはディレクトリの内容のみを更新し、1の
    みであったときにはキャッシュから送られてきたデータ
    をディレクトリに代えて主記憶装置に書き戻す手段を備
    えることを特徴とする並列計算機。
  6. 【請求項6】 請求項4記載の並列計算機において、 各プロセッシングユニットの主記憶装置の各々のデータ
    ラインに対応して、該ラインが読み出し専用であるか否
    かを示す情報を記憶する記憶手段を設け、 前記主記憶制御回路は、読み出し専用でないラインのデ
    ータがキャッシュ上に登録された場合、ディレクトリ情
    報を作成して該ラインのデータが記憶されていた主記憶
    領域にデータに代えてディレクトリ情報を記憶し、読み
    出し専用であるラインのデータがキャッシュ上に登録さ
    れた場合、ディレクトリ情報の作成を行わない手段を備
    えることを特徴とする並列計算機。
JP28740393A 1993-10-22 1993-10-22 並列計算機の記憶制御方法および並列計算機 Expired - Fee Related JP3200757B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP28740393A JP3200757B2 (ja) 1993-10-22 1993-10-22 並列計算機の記憶制御方法および並列計算機
US08/328,759 US5606686A (en) 1993-10-22 1994-10-24 Access control method for a shared main memory in a multiprocessor based upon a directory held at a storage location of data in the memory after reading data to a processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28740393A JP3200757B2 (ja) 1993-10-22 1993-10-22 並列計算機の記憶制御方法および並列計算機

Publications (2)

Publication Number Publication Date
JPH07121493A JPH07121493A (ja) 1995-05-12
JP3200757B2 true JP3200757B2 (ja) 2001-08-20

Family

ID=17716891

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28740393A Expired - Fee Related JP3200757B2 (ja) 1993-10-22 1993-10-22 並列計算機の記憶制御方法および並列計算機

Country Status (2)

Country Link
US (1) US5606686A (ja)
JP (1) JP3200757B2 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3872118B2 (ja) * 1995-03-20 2007-01-24 富士通株式会社 キャッシュコヒーレンス装置
JP3502216B2 (ja) * 1995-07-13 2004-03-02 富士通株式会社 情報処理装置
JP3674720B2 (ja) * 1995-10-23 2005-07-20 富士通株式会社 並列計算機におけるデータ転送方法
JPH09204403A (ja) * 1996-01-26 1997-08-05 Hitachi Ltd 並列計算機
US5878268A (en) * 1996-07-01 1999-03-02 Sun Microsystems, Inc. Multiprocessing system configured to store coherency state within multiple subnodes of a processing node
US6282195B1 (en) 1997-01-09 2001-08-28 Silicon Graphics, Inc. Packetized data transmissions in a switched router architecture
CA2241909A1 (en) * 1997-07-10 1999-01-10 Howard Thomas Olnowich Cache coherent network, network adapter and message protocol for scalable shared memory processing systems
US6292705B1 (en) 1998-09-29 2001-09-18 Conexant Systems, Inc. Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system
US6633945B1 (en) 1997-12-07 2003-10-14 Conexant Systems, Inc. Fully connected cache coherent multiprocessing systems
US6418537B1 (en) 1997-12-07 2002-07-09 Conexant Systems, Inc. Accurate timing calibration for each of multiple high-speed clocked receivers using a single DLL
US6065077A (en) * 1997-12-07 2000-05-16 Hotrail, Inc. Apparatus and method for a cache coherent shared memory multiprocessing system
US6516442B1 (en) 1997-12-07 2003-02-04 Conexant Systems, Inc. Channel interface and protocols for cache coherency in a scalable symmetric multiprocessor system
US6175900B1 (en) * 1998-02-09 2001-01-16 Microsoft Corporation Hierarchical bitmap-based memory manager
US6295581B1 (en) * 1998-02-20 2001-09-25 Ati Technologies, Inc. Method and apparatus for assuring cache coherency
JP2000076205A (ja) * 1998-08-28 2000-03-14 Hitachi Ltd マルチプロセッサ
US6266743B1 (en) 1999-02-26 2001-07-24 International Business Machines Corporation Method and system for providing an eviction protocol within a non-uniform memory access system
US6469988B1 (en) 1999-07-08 2002-10-22 Conexant Systems, Inc. Low-level circuit implementation of signal flow graphs for real-time signal processing of high-speed digital signals
US6678798B1 (en) * 2000-07-20 2004-01-13 Silicon Graphics, Inc. System and method for reducing memory latency during read requests
US6915387B1 (en) 2000-07-20 2005-07-05 Silicon Graphics, Inc. System and method for handling updates to memory in a distributed shared memory system
US6938128B1 (en) 2000-07-20 2005-08-30 Silicon Graphics, Inc. System and method for reducing memory latency during read requests
US8635410B1 (en) 2000-07-20 2014-01-21 Silicon Graphics International, Corp. System and method for removing data from processor caches in a distributed multi-processor computer system
US6633960B1 (en) * 2000-08-31 2003-10-14 Hewlett-Packard Development Company, L.P. Scalable directory based cache coherence protocol
US6658525B1 (en) 2000-09-28 2003-12-02 International Business Machines Corporation Concurrent access of an unsegmented buffer by writers and readers of the buffer
JP2004302713A (ja) * 2003-03-31 2004-10-28 Hitachi Ltd 記憶システム及びその制御方法
US7007128B2 (en) * 2004-01-07 2006-02-28 International Business Machines Corporation Multiprocessor data processing system having a data routing mechanism regulated through control communication
US7308558B2 (en) * 2004-01-07 2007-12-11 International Business Machines Corporation Multiprocessor data processing system having scalable data interconnect and data routing mechanism
US7549029B2 (en) * 2005-05-06 2009-06-16 International Business Machines Corporation Methods for creating hierarchical copies
WO2008005927A2 (en) * 2006-06-30 2008-01-10 Verint Americas Inc. Distributive network control
WO2008016515A2 (en) * 2006-08-01 2008-02-07 Massachusetts Institute Of Technology Extreme virtual memory
US7840537B2 (en) 2006-12-22 2010-11-23 Commvault Systems, Inc. System and method for storing redundant information
JP2008305201A (ja) * 2007-06-07 2008-12-18 Nippon Telegr & Teleph Corp <Ntt> ノード間データ転送制御装置およびメモリ構成変更方法ならびにプログラム
US7945739B2 (en) * 2007-08-28 2011-05-17 International Business Machines Corporation Structure for reducing coherence enforcement by selective directory update on replacement of unmodified cache blocks in a directory-based coherent multiprocessor
US9015181B2 (en) * 2008-09-26 2015-04-21 Commvault Systems, Inc. Systems and methods for managing single instancing data
AU2009296695B2 (en) 2008-09-26 2013-08-01 Commvault Systems, Inc. Systems and methods for managing single instancing data
US8412677B2 (en) 2008-11-26 2013-04-02 Commvault Systems, Inc. Systems and methods for byte-level or quasi byte-level single instancing
US8401996B2 (en) 2009-03-30 2013-03-19 Commvault Systems, Inc. Storing a variable number of instances of data objects
US8578120B2 (en) 2009-05-22 2013-11-05 Commvault Systems, Inc. Block-level single instancing
WO2012045023A2 (en) 2010-09-30 2012-04-05 Commvault Systems, Inc. Archiving data objects using secondary copies
EP2696289B1 (en) * 2011-04-07 2016-12-07 Fujitsu Limited Information processing device, parallel computer system, and computation processing device control method
US9020890B2 (en) 2012-03-30 2015-04-28 Commvault Systems, Inc. Smart archiving and data previewing for mobile devices
US9633022B2 (en) 2012-12-28 2017-04-25 Commvault Systems, Inc. Backup and restoration for a deduplicated file system
US10324897B2 (en) 2014-01-27 2019-06-18 Commvault Systems, Inc. Techniques for serving archived electronic mail
US9639276B2 (en) * 2015-03-27 2017-05-02 Intel Corporation Implied directory state updates
US10324914B2 (en) 2015-05-20 2019-06-18 Commvalut Systems, Inc. Handling user queries against production and archive storage systems, such as for enterprise customers having large and/or numerous files

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4755930A (en) * 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
US5058006A (en) * 1988-06-27 1991-10-15 Digital Equipment Corporation Method and apparatus for filtering invalidate requests
US5287484A (en) * 1989-06-21 1994-02-15 Hitachi, Ltd. Multi-processor system for invalidating hierarchical cache
EP0468831B1 (en) * 1990-06-29 1997-10-15 Digital Equipment Corporation Bus protocol for write-back cache processor
IE860318L (en) * 1990-10-01 1986-08-05 Digital Equipment Corp System bus for a multi-cache data processing system
JPH0589056A (ja) * 1991-09-27 1993-04-09 Nec Corp マルチプロセツサ通信方式およびマルチプロセツサ通信装置
US5359723A (en) * 1991-12-16 1994-10-25 Intel Corporation Cache memory hierarchy having a large write through first level that allocates for CPU read misses only and a small write back second level that allocates for CPU write misses only

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Daniel Lenoski et al.,"The Stanford Dash Multiprocessor",Computer,IEEE,1992年3月,第25巻,第3号,p.63−79
David Chaiken et al.,"Directory−Based Cache Coherence in Large−Scale Multiprocessors",Computer,IEEE,1990年6月,第23巻,第6号,p.49−58
寺澤卓也,天野英晴,工藤知宏,"マルチプロセッサの記憶システム(1)",情報処理,社団法人情報処理学会,1993年1月15日,第34巻,第1号,p.96−105
寺澤卓也,天野英晴,工藤知宏,"マルチプロセッサの記憶システム(2)",情報処理,社団法人情報処理学会,1993年2月15日,第34巻,第2号,p.233−243
福田晃,"並列オペレーティング・システム",情報処理,社団法人情報処理学会,1993年9月15日,第34巻,第9号,p.1139−1149

Also Published As

Publication number Publication date
JPH07121493A (ja) 1995-05-12
US5606686A (en) 1997-02-25

Similar Documents

Publication Publication Date Title
JP3200757B2 (ja) 並列計算機の記憶制御方法および並列計算機
US6631448B2 (en) Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol
US5537569A (en) Multiprocessor system utilizing a directory memory and including grouped processing elements each having cache
US8793433B2 (en) Digital data processing apparatus having multi-level register file
US20030005236A1 (en) Imprecise snooping based invalidation mechanism
JP2516300B2 (ja) 多重プロセツサ・システムの性能の最適化装置及び方法
US5784590A (en) Slave cache having sub-line valid bits updated by a master cache
JP3281893B2 (ja) キャッシュ・メモリ階層内で利用するキャッシュ・コヒーレンシ機構を実施するための方法およびシステム
US5095424A (en) Computer system architecture implementing split instruction and operand cache line-pair-state management
US6405290B1 (en) Multiprocessor system bus protocol for O state memory-consistent data
JPH10133947A (ja) 統合されたプロセッサ・メモリ装置
JPH05225061A (ja) 実時間キャッシュ機能を提供する集積回路用チップ
US6345341B1 (en) Method of cache management for dynamically disabling O state memory-consistent data
JPH0559455B2 (ja)
JP2000010860A (ja) キャッシュメモリ制御回路及びプロセッサ及びプロセッサシステム及び並列プロセッサシステム
KR20030024895A (ko) 캐시 코히어런트 멀티-프로세서 시스템에서 순서화된입출력 트랜잭션을 파이프라이닝하기 위한 방법 및 장치
JP4041402B2 (ja) サイクルあたりの多重キャッシュライン無効化をサポートするための方法および装置
US5361342A (en) Tag control system in a hierarchical memory control system
US6397303B1 (en) Data processing system, cache, and method of cache management including an O state for memory-consistent cache lines
KR20040063793A (ko) 로우-레벨 캐시를 포함한 액세스 촉진용 리버스 디렉토리
JP2004199677A (ja) キャッシュを動作させるためのシステム及び方法
US6973541B1 (en) System and method for initializing memory within a data processing system
KR100380674B1 (ko) 멀티프로세서 시스템에서의 기록-통과 기억 동작동안 캐시코히어런스를 유지하는 방법 및 시스템
EP0173893B1 (en) Computing system and method providing working set prefetch for level two caches
US5895486A (en) Method and system for selectively invalidating cache lines during multiple word store operations for memory coherence

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees