JP2000194680A - マルチプロセッサシステム - Google Patents
マルチプロセッサシステムInfo
- Publication number
- JP2000194680A JP2000194680A JP10372772A JP37277298A JP2000194680A JP 2000194680 A JP2000194680 A JP 2000194680A JP 10372772 A JP10372772 A JP 10372772A JP 37277298 A JP37277298 A JP 37277298A JP 2000194680 A JP2000194680 A JP 2000194680A
- Authority
- JP
- Japan
- Prior art keywords
- synchronization
- processors
- transaction
- coherence
- instruction
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0822—Copy directories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
ステムのプロセッサ間データ交換を高速化する。 【解決手段】同期用のトランザクションを出力する命令
を用意する。CPUはこの命令を実行すると、先行命令
のトランザクションを全て出力した後に同期用のトラン
ザクションを主記憶とコヒーレンス管理部とに出力す
る。主記憶はこの同期用のトランザクションでメモリア
クセスのシリアライズを、コヒーレンス管理部はこのト
ランザクションでキャッシュコヒーレンス制御の完了保
証とを行う。これにより、メモリアクセスのシリアライ
ズとキャッシュコヒーレンス制御の完了保証とが同時に
実行できる。 【効果】プロセッサ間のデータ交換が高速化できる。
Description
記憶共有型マルチプロセッサシステムに関する。特に、
各プロセッサ内のキャッシュのコヒーレンス制御を含む
プロセッサ間のメモリアクセス順序制御を行うのに適し
たマルチプロセッサシステムに関する。
数のプロセッサを同時に使用するマルチプロセッサシス
テムが広く使われている。マルチプロセッサシステムに
は、主記憶をそれぞれのプロセッサに用意する分散記憶
型と、主記憶をプロセッサ間で共有する主記憶共有型と
がある。この内、主記憶共有型は、プロセッサ間で共有
するデータの管理が容易であることから、分散記憶型に
比べてプログラミングがしやすく、普及が進んでいる。
ッサが独立に動作するだけでなく、必要に応じてプロセ
ッサ間でデータ交換を行いながら動作する。主記憶共有
型のマルチプロセッサでは、あるプロセッサが主記憶に
書き込んだ値を別なプロセッサが読み出すことでデータ
交換を行う。このようなプロセッサ間のデータ交換で
は、プロセッサ間のメモリアクセス順序保証が必要であ
る。具体的には、あるプロセッサが書き込むデータを別
なプロセッサが読み出す場合、この読み出しがデータの
書き込み前ではなく、書き込んだ後になることを保証す
る手段が要る。
表的な構成概要を図12、図13を用いて説明する。図
12はバス構成のマルチプロセッサを示す。CPU51
00〜5130はメモリバス5150で結合されてお
り、主記憶5140へのアクセスはこのメモリバス51
50を通して行う。メモリバス5150によりアクセス
をシリアライズできるので、データ交換のための書き込
みと読み出しの順序保証を制御しやすい。反面、CPU
5100〜5130から主記憶5140へのアクセス量
は、メモリバス5150ネックにより制限される。
マルチプロセッサでは、CPU5200〜5230が独
立に主記憶5240と接続される。スイッチ型の特徴
は、各CPUの主記憶アクセスの干渉が少ないという点
にある。例えばCPU5200からの線5250を通し
た主記憶5240へのアクセスは、他のCPU5210
〜5230からの主記憶アクセスのパス5260〜52
80に影響を与えない。実際の構成ではCPU5200
〜5230と主記憶5240との間に多段のスイッチを
用意することが多く、この場合は干渉は全く無い訳では
ない。しかし、バス構成のように主記憶アクセスを完全
にシリアライズする要素はないので影響の程度は小さ
く、高いアクセス性能を実現できる。反面、各プロセッ
サがバラバラに動作するので、プロセッサ間のメモリア
クセス順序保証は難しい。
チ構成の主記憶共有型マルチプロセッサシステムで、プ
ロセッサ間のメモリアクセス順序保証を高速に行う技術
を開示する。具体的には、同期用の命令をプロセッサに
用意し、この命令により出力されるトランザクションを
利用してメモリアクセスのシリアライズを行う。これに
より、プロセッサ間の書き込みと読み出しの順序制御を
行う。
術としてキャッシュが広く使われている。このキャッシ
ュをプロセッサ毎に持つケースでは、プロセッサ間のデ
ータ交換のためにキャッシュの一致制御(コヒーレンス
制御)が必要になる。コヒーレンス制御とは、あるプロ
セッサのキャッシュに登録されているデータと同じメモ
リアドレスを持つデータを別なプロセッサが更新した場
合、キャッシュ上の古いデータを更新するか、もしくは
抹消する制御である。データ交換で正しいデータを読み
出せることを保証するには、所望のデータについてのコ
ヒーレンス制御を実行する必要がある。
同期用の命令を用意したマルチプロセッサシステムにお
いて、キャッシュコヒーレンスを保証を可能にすること
である。
ス順序制御とコヒーレンス制御との2つを独立して行う
のではなく、同時にまとめて実行して効率の良いプロセ
ッサ間のデータ交換を実現することにある。
ッサに用意し、この命令により各プロセッサから出力さ
れるトランザクションを用いて、主記憶アクセスのシリ
アライズを行うとともにコヒーレンス制御の完了保証も
行う。具体的には、次の4つを実現する。
に実行した命令のトランザクションを全て主記憶側へ出
力した後で、同期命令によるトランザクションを出力す
る。このトランザクションを主記憶とコヒーレンス管理
部との両方に出力する。
ンを受けると、そのソースとなるプロセッサからの主記
憶アクセスを止める機構を持つ。全プロセッサより同期
用のトランザクションを受けると主記憶アクセスを再開
する。これにより、主記憶アクセスのシリアライズを行
う。
サから同期用のトランザクションを受けると、同期用ト
ランザクションよりも前のトランザクションについてコ
ヒーレンス制御を完了させ、その後に各プロセッサに対
してコヒーレンス制御の完了を通知する。
部からの完了通知を待つ手段を用意する。これにより、
コヒーレンス制御の完了が保証される。
最初に本実施例で採用する「コヒーレンス制御を伴うメ
モリアクセス順序保証方法」であるバリア同期の概念に
ついて説明し、その後で本実施例の概要、および詳細を
記述する。
を理解する上で、コヒーレンス制御とメモリアクセス順
序制御とを同時に行う手段として本実施例が採用する
「バリア同期」について説明する。
満たす意味で使用する。
を満たす。つまり、下記のload/storeはキャッシュヒ
ットでもミスヒットでも良い。) (1)2プロセッサ以上任意の数のプロセッサが参加で
き、バリア同期に参加した全プロセッサの間で(2)
(3)に記述するコヒーレンス制御、およびメモリアク
セス順序制御を行う。(以下、(2)(3)の項目は、
バリア同期に参加しているプロセッサ間での保証事項と
して記述する。) (2)バリア同期の前に各プロセッサが行ったメモリア
クセスは、バリア同期の後に各プロセッサが実行するメ
モリアクセスに反映される。別な記述をすれば、いずれ
のプロセッサがバリア同期の前に行った主記憶へのstor
eも、バリア同期の後に実行する任意のプロセッサの同
一アドレスに対するloadに反映される。
ったメモリアクセスは、バリア同期の前に各プロセッサ
が実行したメモリアクセスに影響を及ぼさない。別な記
述をすれば、いずれのプロセッサがバリア同期の後に行
う主記憶へのstoreも、バリア同期の前に行った任意の
プロセッサによる同一アドレスに対するloadに反映され
ることはない。
プロセッサで実行する場合は、ループの中身を分割し、
各プロセッサに実行させる手段が用いられる。図11で
は、並列実行するプログラムを5000に、このプログ
ラムを4CPUで実行する様子を5010〜5060に
示す。なお、ハッチングされている部分が、本プログラ
ムの処理を各CPUが実行している時間を示す。
することによるメリットが小さいことから、シングルプ
ロセッサで処理をすることが一般的である。図では、ル
ープ演算以外の部分を全てCPU0が実行する。(図中
5010、5060)これに対し、ループ部分は処理量
が多いので、全CPUで分担して実行する。(図中50
20〜5050) 図11に示すようなプログラムでは、ほとんどの場合、
CPU0がループ前の処理5010でstoreした結果を
CPU1〜3がループ演算5030〜5050中で使用
することになる。また、ループ演算5030〜5050
でのCPU1〜3の計算結果を、CPU0がループ以降
の処理5060で使用することも多い。よって、ループ
の前後でアクセス順序保証を行う必要がある。
で示したバリア同期を使用すれば、必要なアクセス順序
保証が実現できる。つまり、同期Aにバリア同期を使用
することで、CPU0が5010でstoreした結果を、
CPU1〜3は5030〜5050で正しくloadできる
ことを保証される。また、同期Bにバリア同期を使用す
ることで、CPU1〜3が5030〜5050でstore
した結果を、CPU0は5060で正しくloadできるこ
とが保証される。この場合、同期AでもBでもCPU
0,1,2,3ともにバリア同期に参加することが必要
である。
憶共有型マルチプロセッサシステムにおける、バリア同
期の実装方法およびその動作を説明する。
る。
0,3010の4つが主記憶制御部50を共有する、ス
イッチ構成の主記憶共有マルチプロセッサシステムを示
す。コヒーレンス管理については、コヒーレンス管理部
80を用いたFAA方式を採用する。
0は完全に同一であり、図1ではCPU10のみ内部を
記述している。内部には、バリア同期の要求を保持する
要求レジスタ120とバリア同期の結果を記録する結果
レジスタ130とを持つ。また内部のキャッシュに登録
しているデータのアドレス情報をタグ160に記憶す
る。
に同期制御部300,1300,2300,3300を
用意する。同期制御部は、次の4つの制御を行う。
使ったCPU間の同期情報の管理。
370,3370を使ったCPU間での高速データ転送
の制御。
0,3350を使った各CPUのバリアへの参加不参加
制御。
360,3360を使ったバリア同期状態の保持。
0,2300,3300をCPU10,1010,20
10,3010とは独立して持つが、もちろんCPU内
部に同期制御部を取り込むことも可能である。
10,2010,3010からのメモリアクセスに応じ
て動作する。内部にバリア検出部700,1700,2
700,3700を持ち、バリア同期のトランザクショ
ンによる主記憶アクセスのシリアライズを行う。
1010,2010,3010のキャッシュのコヒーレ
ンス管理を行う。概要は、各CPUのタグ情報を内部に
保持し、storeを受けるとこれに従い他CPUのタグ情
報をチェックし、キャッシュに登録されているデータへ
のstoreだと検出すると、その登録データを抹消するkil
lトランザクションをCPUに通知する。コヒーレンス
制御の詳細は後述する。コヒーレンス管理部80は、内
部にバリア検出部800,1800,2800,380
0を持ち、バリア同期によるコヒーレンス管理のシリア
ライズを行う。
る。まず、前提となるCPUの動作/命令を挙げ、次に
メモリアクセス方法、通常のコヒーレンス制御方法の概
要を記述し、最後にバリア同期の動作概要を説明する。
の5つを前提として説明する。
0,3010はストアスルー制御のキャッシュメモリを
持つ。
0,3010はキャッシュヒット時はキャッシュからlo
adする通常の「load命令」の他に、キャッシュがヒット
した場合も必ず主記憶(もしくは後述する通信レジス
タ)からデータをloadする「dload命令」(direct load
命令)を持つ。本dload命令は、いくつかのRISCプ
ロセッサでは、「キャッシュ禁止ページへのload」とい
う形で実現できる。
0,3010はバリア同期専用の命令である「barrier
命令」を持つ。このbarrier命令により生成されるbarri
erトランザクションは、barrier命令に先行するトラン
ザクションよりも後に、同期制御部300,1300,
2300,3300、主記憶制御部50、コヒーレンス
制御部80へと出力される。
0,3010はbarrier命令を実行すると、バリア同期
が規定の状態になるまで後続の命令の実行を止める。
0,3010は、基本的に命令の実行順序は命令列上の
順序と一致しなくてよい。(out-of-oder実行) (2)については、dload命令が無い場合には一部の最
適化が不可能になるだけで、本実施例の基本的な動作は
変わらない。(3)(4)については、バリア同期専用
命令である必要は必ずしも無いが、barrierトランザク
ションについては、同期制御部300,1300,23
00,3300、主記憶制御部50、コヒーレンス制御
部80が他のトランザクションと区別して「同期のため
のトランザクション」であることを認識できる必要があ
る。(5)については、barrier命令では後述2.2.
3節の条件を満たすことが必要になる。
コヒーレンス制御 メモリアクセス方法/通常のコヒーレンス制御(バリア
同期時以外でのコヒーレンス制御)について説明する。
以下、load動作/direct load動作/store動作につい
て、CPU10の動作で説明する。
すると、タグ160を見て、loadのターゲットアドレス
のデータがキャッシュに存在するかどうかをチェックす
る。キャッシュがヒットすればキャッシュからloadす
る。ミスした場合は、線p150、同期制御部300、
線p300を通じて、主記憶制御部50、コヒーレンス
管理部80までloadトランザクションを出力する。
が届くと、主記憶制御部50は要求loadアドレスに従い
メモリを読み出した値を、線p310、同期制御部30
0、線p160を通してCPU10に戻す。データが戻
ると、CPU10は、リプライデータをレジスタに格納
し使用するとともに、キャッシュにもリプライデータ
を、タグ160にリプライデータのアドレス情報を登録
しておき、後でまだ同じデータに対してloadが発生した
時にはキャッシュ上のデータを使えるようにする。
ションが届くと、コヒーレンス管理部80は要求loadア
ドレスの情報がCPU10のキャッシュに登録されるこ
とをFAAに記憶しておく。
load命令を実行すると、タグ160のチェックを行わ
ず、線p150、同期制御部300、線p300を通じ
て、主記憶制御部50コヒーレンス管理部80までdire
ct loadトランザクションを出力する。
クションが届くと、主記憶制御部50は要求loadアドレ
スに従いメモリを読み出した値を、線p330、同期制
御部300、線p160を通してCPU10に戻す。デ
ータが戻ると、CPU10は、リプライデータをレジス
タに格納し使用することは行うが、キャッシュにはリプ
ライデータを登録しない。
ランザクションが届いた場合は、このトランザクション
を無視してFAAには登録しない。もちろん、direct l
oadトランザクション自身がコヒーレンス管理部80に
到達する前に消される制御にしてもよい。
行すると、タグ160を見て、storeのターゲットアド
レスのデータがキャッシュに存在するかどうかをチェッ
クし、キャッシュがヒットすればキャッシュの値を更新
する。また、キャッシュのヒット/ミスに関わらず、線
p150、同期制御部300、線p300を通じて、主
記憶制御部50、コヒーレンス管理部80までstoreト
ランザクション(storeデータ込み)を出力する。
ンが届くと、主記憶制御部50はターゲットアドレスに
ついてstoreデータで更新する。
クションが届くと、コヒーレンス管理部80ではstore
のターゲットアドレスのデータが、store元のCPU1
0以外のCPU1010,2010,3010のキャッ
シュに登録されているかどうか、FAAをチェックす
る。登録されているCPUがあれば、そのCPUに対し
て当該データのkillトランザクションを出力する。ここ
ではCPU間の動作パタンを変えて、「CPU1010
からのstoreによりCPU10にkillトランザクション
を出力する」ケースについて、killトランザクションの
動きを説明する。線p330、同期制御部300、線p
170を通して、タグ160にkillトランザクションが
届く。タグ160では、killトランザクションに示され
るデータがキャッシュ上に存在する時は、これを抹消す
る。
0,1010,2010,3010のキャッシュにデー
タを登録する時にはコヒーレンス管理部80にも登録さ
れる。また、あるCPUのキャッシュに登録されるデー
タに対して別なCPUがstoreを実行した場合に、キャ
ッシュに登録されるデータを抹消する動作が行える。よ
って、あるCPUがstoreしたにも関わらず、別なプロ
セッサのキャッシュにstore前のデータが残りつづける
ということはなく、基本的なコヒーレンス制御は達成で
きている。ただし、storeが主記憶制御部50に影響を
及ぼす時点と、killトランザクションにより各CPUの
タグ上からデータが消える時点との間には、当然時間差
がある。
期では前記の通り、「バリア同期前のメモリアクセスの
影響は、バリア同期の後のメモリアクセスには完全に反
映されている」、「バリア同期後のメモリアクセスは、
バリア同期の前のメモリアクセスには影響を及ぼさな
い」、の2点を守る必要がある。(ここでのメモリアク
セスとは、キャッシュがヒットして実際には主記憶制御
部50へのトランザクションが発生しないケースを含
む) これを実現するため、図1に示すハードウェアで
は、バリア同期で基本的に次の動作を行う。
0,3010は、barrier命令よりも前の各メモリアク
セス命令について、以下の3条件が成立するまで待って
からbarrierトランザクションをCPUより出力する。
について、キャッシュヒットであればキャッシュより読
み出し終わっていること。キャッシュミスであれば、少
なくともload要求トランザクションがCPU10,10
10,2010,3010より出力されたこと。
については、少なくともdload要求トランザクションが
CPU10,1010,2010,3010より出力さ
れたこと。
については、少なくともstore要求トランザクションが
CPU10,1010,2010,3010より出力さ
れたこと。
検出部700,1700,2700,3700でbarrie
rトランザクションを検出する。検出すると、そのパス
からのリクエスト(例えばバリア検出部700が検出し
た時は、線p300を通してのリクエスト)を止める。
全バリア検出部700,1700,2700,3700
ともに検出すると、リクエストを止める動作を終了し、
主記憶アクセスを再開させる。
バリア検出部800,1800,2800,3800で
barrierトランザクションを検出する。バリア検出部8
00,1800,2800,3800の全てがバリアを
検出すると、最後のbarrierトランザクションの前にコ
ヒーレンス管理部80に到達している全てのリクエスト
に起因するkillトランザクションの後ろにackトランザ
クションを生成し、各同期制御部300,1300,2
300,3300を通してCPU10,1010,20
10,3010に送出する。
0,3010は、コヒーレンス管理部80からのackト
ランザクションが到着し、更にackトランザクションに
先行するkillトランザクションの処理が全て完了するま
でbarrier命令で待つ。barrier命令より後の命令は、ba
rrier命令が終わるまで実行しない。
保証できる。
主記憶制御部50へのトランザクションは、(A)によ
りbarrierトランザクションより前に主記憶制御部50
に到着する。barrier命令の後の命令に起因する主記憶
制御部50へのトランザクションは、(D)によりbarr
ier成立後にCPUより出力される。ここでbarrier成立
時点では(C)により全CPUよりbarrierトランザク
ションが出力されたことが保証される。このことから、
barrier命令の後の命令に起因するトランザクション
が、barrierトランザクションよりも前に主記憶制御部
50に到着することはない。(注:構成によっては、ba
rrier成立時点で、主記憶制御部50でもbarrierトラン
ザクションが揃っているという保証は無い。これは、ba
rrier成立はあくまでコヒーレンス管理部80でbarrier
トランザクションが揃ったことを意味し、主記憶制御部
50のBusyの状態によっては主記憶制御部50の方
ではまだbarrierトランザクションが揃っていない場合
も有り得る。但し、既にbarrierトランザクションが主
記憶制御部50の方向に出力された後であることは保証
される。) よって、(B)の制御により、主記憶制御
部50へのトランザクションについては、任意のCPU
がbarrier命令よりも前に実行する命令に起因する主記
憶制御部50へのトランザクションは、任意のCPUが
barrier命令よりも後に実行する命令に起因する主記憶
制御部50へのトランザクションに反映される。また逆
に、任意のCPUがbarrier命令よりも前に実行する命
令に起因する主記憶制御部50へのトランザクション
は、、任意のCPUがbarrier命令よりも後に実行する
命令に起因する主記憶制御部50へのトランザクション
の影響を受けない。
令によるstoreトランザクションについては、(A)に
よりbarrierトランザクションより前にコヒーレンス制
御部80に到着する。(C)により、各CPUがbarrie
rのackを受ける前に、全CPUのbarrier命令の前のsto
re命令に起因するkillトランザクションを受け取ること
になる。(D)により、barrier命令の後続が動作を始
める時点では、コヒーレンス制御部80より受け取った
killトランザクションは処理することになる。つまり、
barrier命令の前に存在するstore命令によるコヒーレン
ス制御が完了してから、各CPUはbarrier命令の後続
を実行することになる。
がbarrier命令より前に実行したstore命令の結果を任意
のCPUはbarrier命令の後に実行するload命令(キャ
ッシュヒット/ミスヒット両方のケースを含む)およびd
load命令で参照することができる。また、任意のCPU
がbarrier命令の後に実行するstore命令の影響を任意の
CPUが実行するbarrier命令の前のload/dloadは影響
を受けない。よって、バリア同期の定義として記述した
1.1節の(2)(3)の条件を満たすことになる。
詳細を、図1〜図10を使用して、本実施例の各構成要
素の動作を説明する。最後に、本実施例の機能を用いた
命令列について図14〜16を用いて説明する。
10は全て同一の構成である。本節では、図2を用いて
CPU10内部の構成、および動作を説明する。
キャッシュに登録されるデータのアドレス情報を記憶す
るタグ160、主記憶制御部50へのload/dloadトラン
ザクションのバッファであるフェッチバッファ170、
storeトランザクションのバッファであるストアバッフ
ァ180を持つ。更に、各種レジスタを含むCPUコア
110内部にbarrierの要求状態を保持する要求レジス
タ120、barrierの結果が入る結果レジスタ130、b
arrier命令での待ち時間を監視するタイマ140を持
つ。
PU10の動作を説明する。
と、線p100を通してキャッシュへとload要求を出力
する。キャッシュ150は、load要求のアドレスとタグ
160に登録されるアドレスとを比較し、キャッシュヒ
ットの場合は線p110を通してCPUコア110に結
果を返答する。キャッシュミスの場合は、線p120を
通してフェッチバッファ170にloadリクエストが格納
される。dload命令では、load命令と異なりキャッシュ
ヒットのケースでも線p120を通してフェッチバッフ
ァ170にdloadリクエストを格納する。store命令をC
PUコア110が実行すると、線100を通してキャッ
シュへとstore要求を出力する。キャッシュ150は、s
tore要求のアドレスとタグ160に登録されるアドレス
とを比較し、キャッシュヒットの場合はキャッシュ上の
データを更新する。また、キャッシュヒット/ミスに関
らず、線p140を通してストアバッファ180にstor
eトランザクションを格納する。なお、CPU10はout
-of-oder実行を基本としているので、命令列上の順番と
フェッチバッファ170、ストアバッファ180に格納
される順序は同一で無くて良い。但し、フェッチバッフ
ァ170、ストアバッファ180自身はFIFO制御を
行う。
ッファ170、ストアバッファ180に格納されるトラ
ンザクションを、線p150を通して同期制御部300
へと出力する。フェッチバッファ170とストアバッフ
ァ180のプライオリティの付け方は任意である。load
/dloadリクエストの場合は、最終的に線p160を通し
てリプライデータが戻るが、このデータはフェッチバッ
ファ170、線p130を経由して、キャッシュ150
に記憶し、そのアドレス情報はタグ160に記憶する。
ンザクションについて説明する。
より線p170を経由してタグ160に伝わる。タグ1
70では、killトランザクションのアドレスにヒットす
るエントリがあれば、それを抹消する。
を説明する。
ると、最初に要求レジスタ120をセットする。要求レ
ジスタ120の構成を図3に示す。要求レジスタ120
はRビット122、Cビット124の2ビットを持つ。
ここで、Rビットはbarrier要求、Cビットはコヒーレ
ンス制御完了待ち有り(C=0)/無し(C=1)を示
す。barrier命令で指定される即値が0であればR=
1,C=0に、barrier命令で指定される即値が1であ
ればR=1,C=1になる。コヒーレンス制御待ち有り
/無しについて、およびbarrier命令の即値については
後述する。なお、この要求レジスタにセットされた値
は、線p210よりバリアの開始が通知されるとリセッ
トされる。なお、Rビットの値は線p190より、Cビ
ットの値は線p200より同期制御部300へ伝えられ
る。
arrierトランザクションを、barrier命令に先行する全
てのload/dload/store命令の後に線p100に出力す
る。CPUコア110からキャッシュ150に出力され
たbarrierに先行するloadリクエストの内、キャッシュ
ヒットのloadリクエストに対するリプライが線p180
を通してCPUコア110に返答されたことが保証され
た、およびCPUコア110からキャッシュ150に投
げられたbarrierに先行するload/dload/storeリクエス
トによるトランザクションを全てフェッチバッファ17
0、ストアバッファ180に積まれたことが保証された
時点で、キャッシュ150はbarrierトランザクション
をフェッチバッファ170、ストアバッファ180に積
む。
ッファ170、ストアバッファ180の両方からbarrie
rトランザクションを受けると、線p150を通して同
期制御部300にbarrierトランザクションを出力す
る。
実行すると、結果レジスタ130にbarrierの完了が記
録されるまで後続命令の実行を止める。結果レジスタの
構成を図4に示す。結果レジスタはEビット132の1
ビットを持つ。同期制御部300より、barrierのackが
線p170を通してタグ160に伝わると、先行killト
ランザクションのタグ160への反映が終わった後で線
p180を通して結果レジスタにbarrierのackが伝えら
れる。これによりEビットが立つ。このEビットは、ba
rrier命令でCPUコアがackを待つ動作を終えた時点で
リセットされる。
間は、タイマ140で監視する。規定時間を超えてbarr
ier命令で待ち続けた場合は、CPUコアはbarrier命令
で待ち続ける動作を止め、例外動作に入る。但し、この
場合もbarrierトランザクションの出力および要求レジ
スタへの設定は通常通り行い、待つ動作のみ中止する。
例えばCPU10はbarrier命令を実行して待ち状態に
入っているのに、別なCPU1010がプログラムバグ
でbarrier命令に到達しないケースも有り得るので、タ
イマによるbarrier同期完了待ち中止は必要な機能であ
る。なお、タイマでタイムアウトした時にプロセスをki
llするためにも、要求レジスタ120、結果レジスタ1
30の退避回復ができる必要がある。
0,3300は全て同一の構成である。本節では、図5
を用いて同期制御部300の構成概要、および動作を説
明する。
350、状態レジスタ360、通信レジスタ370であ
る。マスク350は、図6に示すとおりMビット355
の1ビットにより構成されるレジスタで、その同期制御
部300に接続されるCPU10がバリア同期に参加す
るかしないかを表す。
ビット365の1ビットにより構成されるレジスタで、
接続されるCPU10よりbarrierトランザクションが
来るとB=1にセットし、主記憶制御部50、コヒーレ
ンス制御部80までbarrierトランザクションを出力す
ると、(もしくはコヒーレンス制御完了待ち無しのバリ
ア同期となり、barrierトランザクションを出力する必
要が無くなると(後述))B=0にリセットされる。
る。CPU10がbarrier命令を実行し、このbarrierト
ランザクションが同期制御部300に来ただけで主記憶
制御部50にbarrierトランザクションを出力してしま
うと、以降主記憶制御部50のバリア検出部700で後
続リクエストをストップする動作に入る。よって、これ
以降にCPU10がbarrierタイムアウトを検出したと
しても、主記憶をアクセスできない。これを防ぐため
に、後述するようにCPU10,1010,2010,
3010の内、マスクされていないCPU全てがbarrie
r命令を実行し、必ずbarrierトランザクションが主記憶
制御部50で揃うことが保証されるまで、同期制御部3
60はbarrierトランザクションを状態レジスタ360
に記憶しておき、主記憶制御部50へは出力しない。な
お、CPU10でタイムアウトを検出した時のプロセス
kill作業の為にも、状態レジスタ360は退避回復がで
きることが必須である。
速なCPU間データ転送の為に用意するメモリマップド
レジスタである。構成は図8のようなフルビットのレジ
スタである。図1に示すとおり、通信レジスタ370,
1370,2370,3370はそれぞれ線p320の
バスで結合されており、全てがミラーリングされてい
る。すなわち、例えばCPU10が通信レジスタ370
に設定した値は、速やかに通信レジスタ1370,23
70,3370にも伝達される。
0、通信レジスタ370はメモリマップドレジスタであ
るが、これらはコヒーレンス管理部80によるコヒーレ
ンス制御が不可能なので、読み出しにはload命令ではな
くdload命令を使用する必要がある。(設定はstore命令
で良い)CPU10よりload/dload/storeトランザクシ
ョンを受けた時の同期制御部300の動作を説明する。
同期制御部300は線p150よりこれらのトランザク
ションを受けると、デコーダ制御部330、線p40
0、バリア生成部340、線p300を通して、主記憶
制御部50、コヒーレンス制御部80へ出力する。主記
憶制御部50からのリプライデータは、線p310、デ
コーダ制御部330、線p160を経由して、CPU1
0へと戻る。
reでは、デコーダ制御部330は何も機能しないが、dl
oad/storeトランザクションのアドレスから、マスク3
50、状態レジスタ360、通信レジスタ370へのア
クセスと判定した場合は、それぞれのレジスタを線p4
10,p430,p460を通じてアクセスする。dloa
dであればリプライ値を線p420,p440,p47
0経由で集め、線p160を通してCPU10に返答す
る。
り、コヒーレンス制御部80からCPU10へのkillト
ランザクションが発生した場合は、線p330、ack検
出部510、線p660、ack生成部500、線p17
0を通して、CPU10までkillトランザクションを上
げる。
作を説明する。barrier命令により、CPU10内の要
求レジスタ120に値がセットされると、要求レジスタ
の設定値は同期制御部まで線p190、線200を通じ
て伝えられる。線p190、p200経由の情報は、線
p340,p350経由でand回路200,210へと
出力される。ここで、CPU10がマスクされていた場
合は、同期制御部300内のor回路310,320によ
りand回路200、210への出力が常に1になる。
10より線p150を通して同期制御部300に出力さ
れると、デコーダ制御部330はbarrierトランザクシ
ョンであることを識別し、状態レジスタ360をセット
する。更に、barrierトランザクションは通信レジスタ
370にも線p460経由で伝えられる。通信レジスタ
370については、barrierトランザクションよりも前
のstoreを反映し終わり、これが他の通信レジスタ13
70、2370、3370へと線p320を経由して伝
達されたことが保証できる時に、同期制御部内の線p5
10を1にする。この信号は線p360経由でand回路
220へ出力されるが、この信号もやはり同期制御部3
00内のor回路380により、マスクされている場合は
常に1になる。
同期制御部300,1300,2300,3300から
の出力が全て1になると、その結果が線p370,p3
80,p390を経由して同期制御部300内のラッチ
460,470,480に伝わる。
のCPUの要求レジスタ120のRビットが1になった
ときに線p370は1になる。ラッチ460は線p37
0が1になると1にセットされる。ラッチ460がセッ
トされると、すなわちいずれ必ず各同期制御部300,
1300,2300,3300より主記憶制御部50に
barrierトランザクションが出力されるので、主記憶制
御部50へbarrierトランザクションを出力しても良い
ことになる。
ジスタ120のCビットが1になったときに線p380
は1になる。ラッチ470は線p370が1になったこ
とをトリガに線p380の情報を記憶する。これはすな
わちマスクされていないすべてのCPUがbarrier命令
の即値で1を指定したことを意味する。1CPUでも0
を指定した場合には、ラッチ470が記憶する値は0に
なる。
信レジスタより1が上がると線p390は1になる。こ
れはすなわちbarrier命令の前のstoreトランザクション
を全通信レジスタ370,1370,2370,337
0に反映し終わったことを表す。
期制御部300でバリア同期動作が引き起こされる。以
下、(1)マスクされていない同期制御部300で、ラ
ッチ460が1になり、470が0だった場合(コヒー
レンス制御完了待ち有り)、(2)マスクされていない
同期制御部300で、ラッチ460が1になり、470
が1だった場合(コヒーレンス制御完了待ち無し)、
(3)マスクされている同期制御部300で、ラッチ4
60が1になり、470が0だった場合(コヒーレンス
制御完了待ち有り)、(4)マスクされている同期制御
部300で、ラッチ460が1になり、470が1だっ
た場合(コヒーレンス制御完了待ち無し)、の4パタン
について説明する。
0で、ラッチ460が1になり、470が0だった場合
(コヒーレンス制御完了待ち有り) ラッチ460がセットされたことで線p560が1にな
り、かつbarrierトランザクションが状態レジスタ36
0にセットされたことでor回路390の出力線540が
1になると、線550も1になる。この時、ラッチ47
0の出力線p580は0でなので、and回路420の出
力も1になり、線p530を通じてバリア生成部340
を起動する。バリア生成部340は起動されると、barr
ierトランザクションを生成し、線p300を通じて主
記憶制御部50、コヒーレンス管理部80に出力する。
また、and回路400の出力も1になることから、線p
500を通じて状態レジスタ360をリセットし、また
線p210を通じて、CPU10の要求レジスタ120
のリセットも行う。
いCPU全てがbarrier命令を実行してbarrier動作が開
始された時点で、コヒーレンス制御完了待ち有りが指定
されている(少なくとも1CPUはbarrier命令の即値
で0を指定した)時には、マスクされていない同期制御
部300は、CPU10からのbarrierトランザクショ
ンの到着を一旦状態レジスタに格納し確認したら、主記
憶制御部50およびコヒーレンス制御部80へbarrier
トランザクションを出力するということを表す。同時
に、状態レジスタ360をクリアし、CPU10の要求
レジスタもクリアする。
トランザクションに従い、コヒーレンス管理部80は必
要なkillトランザクションを線p330に出力した後、
ackトランザクションをack検出部510まで出力して来
る。ack検出部510はackトランザクションを検出する
と、線p610を使い、ラッチ490をセットする。こ
れにより、線p600が1になり、更にor回路430に
より線p640が1になる。ここで、ラッチ460は既
に1なので線p570も1になっていることから、ラッ
チ480も1になれば線p650は1になる。ack生成
部500は線p650が1になるとackトランザクショ
ンを生成し、線p170を経由してCPU10に出力す
る。これはすなわち、コヒーレンス管理部80からack
トランザクションを受けると、通信レジスタの更新も終
わっていればCPU10にackトランザクションを出力
することになる。ack生成部500は、ackトランザクシ
ョンをCPU10に出力すると、線p620を通じて、
ラッチ460,470,480をリセットする。
0で、ラッチ460が1になり、470が1だった場合
(コヒーレンス制御完了待ち無し) ラッチ460がセットされたことで線p560が1にな
り、かつbarrierトランザクションが状態レジスタ36
0にセットされたことでor回路390の出力線540が
1になると、線550も1になる。この時、ラッチ47
0の出力線p580は1でなので、and回路420の出
力は0のままであり、バリア生成部340は起動されな
い。and回路400の出力は1になることから、線p5
00を通じて状態レジスタ360をリセットし、また線
p210を通じて、CPU10の要求レジスタ120の
リセットも行う。
いCPU全てがbarrier命令を実行してbarrier動作が開
始された時点で、コヒーレンス制御完了待ち無しが指定
されている(全CPUがbarrier命令の即値で1を指定
した)時には、マスクされていない同期制御部300
は、CPU10からのbarrierトランザクションの到着
を一旦状態レジスタに格納し確認した後、主記憶制御部
50、コヒーレンス制御部80へ出力することなく、抹
消することを表す。状態レジスタ360とCPU10の
要求レジスタについては、コヒーレンス制御完了待ち無
しの場合と同様にクリアする。
ザクションは無いので、ラッチ490は1にはならない
が、ラッチ460,470は1なので、or回路430の
出力は1になり、よって、ラッチ480も1になれば線
p650は1になる。ack生成部500は線p650が
1になるとackトランザクションを生成し、線p170
を経由してCPU10に出力する。これはすなわち、コ
ヒーレンス管理部80からackトランザクションを受け
なくても、通信レジスタの更新が終わっていればCPU
10にackトランザクションを出力することになる。ack
生成部500は、ackトランザクションをCPU10に
出力すると、線p620を通じて、ラッチ460,47
0,480をリセットする。
完了待ち無しは、通信レジスタ370の値保証だけを高
速に行うために使える。実際の例は後述する。
で、ラッチ460が1になり、470が0だった場合
(コヒーレンス制御完了待ち有り) マスクされている場合は、barrierトランザクションが
状態レジスタ360にセットされなくても、or回路39
0の出力が1になるので、ラッチ460がセットされた
ことだけで(ラッチ470の出力線p580は0でなの
で)、線p530を通じてバリア生成部340が起動さ
れることになる。バリア生成部340は起動されると、
barrierトランザクションを生成し、線p300を通じ
て主記憶制御部50、コヒーレンス管理部80に出力す
る。ただし、and回路400の出力は1にならないこと
から、状態レジスタ360、CPU10の要求レジスタ
120のリセットは行われない。
いCPU全てがbarrier命令を実行してbarrier動作が開
始された時点で、コヒーレンス制御完了待ち有りが指定
されている(少なくとも1CPUはbarrier命令の即値
で0を指定した)時には、マスクされている同期制御部
300は、無条件に主記憶制御部50およびコヒーレン
ス制御部80へbarrierトランザクションを出力すると
いうことを表す。
トランザクションに従い、コヒーレンス管理部80は必
要なkillトランザクションを線p330に出力した後、
ackトランザクションをack検出部510まで出力して来
る。ack検出部510はackトランザクションを検出する
と、線p610を使い、ラッチ490をセットする。こ
れにより、線p600が1になり、更にor回路430に
より線p640が1になる。ここで、ラッチ460は既
に1なので線p570も1になっていることから、ラッ
チ480も1になれば線p650は1になる。ack生成
部500は線p650が1になっても、マスクされてい
ることで線p670が1であると、ackトランザクショ
ンは生成せず、線p620を通じてラッチ460,47
0,480のリセットのみ行う。これはすなわち、コヒ
ーレンス管理部80からackトランザクションを受けて
も、CPU10へはackトランザクションは返さず、ラ
ッチ460,470,480の状態のみリセットするこ
とを意味する。
で、ラッチ460が1になり、470が1だった場合
(コヒーレンス制御完了待ち無し) マスクされている場合は、barrierトランザクションが
状態レジスタ360にセットされなくても、or回路39
0の出力が1になるが、ラッチ470も1であり、and
回路400,420とも1にはならない。よって、バリ
ア生成部340は起動されず、状態レジスタ360、要
求レジスタ120のリセットも行われない。
いCPU全てがbarrier命令を実行してbarrier動作が開
始された時点で、コヒーレンス制御完了待ち無しが指定
されている(全CPUがbarrier命令の即値で1を指定
した)時には、マスクされている同期制御部300は、
特に動作が無いことを意味する。
ザクションは無いので、ラッチ490は1にはならない
が、ラッチ460,470は1なので、or回路430の
出力は1になり、よって、ラッチ480も1になれば線
p650は1になる。ack生成部500は線p650が
1になっても、マスクされていることで線p670が1
であると、ackトランザクションは生成せず、線p62
0を通じてラッチ460,470,480のリセットの
み行う。これはすなわち、コヒーレンス管理部80から
ackトランザクションを受けても、CPU10へはackト
ランザクションは返さず、ラッチ460,470,48
0の状態のみリセットすることを意味する。
るケースで、コヒーレンス制御完了待ち有りとなった場
合は、各同期制御部で(1)(3)の動作が混じるが、
いずれも主記憶制御部50,コヒーレンス管理部80へ
barrierトランザクションを出力する。逆に、コヒーレ
ンス制御完了待ち無しとなった場合は、各同期制御部で
(2)(4)の動作が混じるが、いずれも主記憶制御部
50,コヒーレンス管理部80へbarrierトランザクシ
ョンを出力しない。
び動作を説明する。
700,1700,2700,3700と、主記憶60
とを持つ。barrierトランザクションが検出されなけれ
ば、線p300,p1300,p2300,p3300
を通して同期制御部300,1300,2300,33
00より来たload/dload/storeトランザクションは、バ
リア検出部700,1700,2700,3700を通
過して、線p720,1720,2720,3720経
由で主記憶60にアクセスする。storeトランザクショ
ンについてはstoreデータを主記憶60に反映し、load/
dloadトランザクションについては、リプライ値を線p
310,p1310,p2310,p3310を経由し
て同期制御部300,1300,2300,3300に
返答する。
ションを検出すると、線p300からの主記憶60への
アクセスをバリア検出部700で停止し、また線p70
0よりand回路710へ1を出力する。同様に、バリア
検出部1700,2700,3700全てでbarrierト
ランザクションを検出すると、and回路710の出力線
p710が1になり、各バリア検出部700,170
0,2700,3700をリセットする。
トランザクション全てが主記憶60に出力された後で、
barrierトランザクションの後のトランザクションが主
記憶60へ出力される動作になり、barrierトランザク
ションによる主記憶アクセスのシリアライズが実現す
る。
成、および動作を説明する。
検出部800,1800,2800,3800と、FA
A90とを持つ。barrierトランザクションが検出され
なければ、線p300,p1300,p2300,p3
300を通して同期制御部300,1300,230
0,3300より来たload/storeトランザクションは、
バリア検出部800,1800,2800,3800を
通過して、線p820,p1820,p2820,p3
820経由でFAA90に到達する。loadであればFA
A登録、storeであればFAAチェックおよびチェック
に引っ掛かった場合はkillトランザクションを生成し、
線p330,p1330,p2330,p3330を経
由して同期制御部300,1300,2300,330
0に出力する。
ションを検出すると、線p800を1にする。この時、
線p300からFAAへのトランザクションの流れを止
めるかどうかについては、止めても止めなくてもどちら
でもよい。これは、CPU10,1010,2010,
3010がbarrier命令から抜けるには、コヒーレンス
管理部80よりackを出力する必要があることから、bar
rierトランザクションの後ろに別のトランザクションが
来ることがないことと、仮にbarrier命令よりも後のsto
reトランザクションが来てしまい、不当にkillトランザ
クションが生成されたとしても、主記憶側でシリアライ
ズしているので、結局、barrier命令よりも前のlload命
令はbarrier命令より後のstore命令よりも先に主記憶ア
クセスすることになり、問題が発生し得ないことによ
る。(これに対し、主記憶制御部50の方は、barrier
トランザクションが揃うまでCPU10,1010,2
010,3010を必ず待たせることができる保証がな
いので、シリアライズが必要である。)同様に、バリア
検出部1800,2800,3800全てでbarrierト
ランザクションを検出すると、and回路810の出力線
p810が1になり、各バリア検出部800,180
0,2800,3800をリセットするとともに、ack
生成部820を起動して、ackトランザクションを線p
330,p1330,p2330,p3330を経由し
て同期制御部300,1300,2300,3300に
出力する。
トランザクション全てについてのFAA90への操作が
終わり、それに伴うkillトランザクションを同期制御部
300,1300,2300,3300に出力した後
で、ackトランザクションを出力する制御が実現する。
用いた命令列例を示す。
について、CPU10、CPU1010の間での命令列
例を示す。CPU10がbarrier命令(即値0)の前に
実行した、主記憶60、通信レジスタ370へのstore
(6010、6020)の値は、CPU1010がbarr
ier命令(即値0)の後に実行する通信レジスタ370
へのdload命令(6120)、主記憶60へのload命令
(6130)に必ず反映されることが保証できる。な
お、ここでは命令6020,6120のdloadで通信レ
ジスタ370をアクセスしたが、これは主記憶60に対
するアクセスでも問題ない。また、barrier命令の即値
はCPU10、CPU1010とも0としたが、これは
どちらかが1であっても変わらない。
について、CPU10、CPU1010の間での命令列
例を示す。CPU1010がbarrier命令(即値0)の
前に実行した、主記憶60、通信レジスタ370へのst
ore(6310、6320)の値は、CPU10がbarri
er命令(即値0)の後に実行する通信レジスタ370へ
のdload命令(6220)、主記憶60へのload命令
(6230)に必ず反映されることが保証できる。な
お、ここではdloadで通信レジスタ370をアクセスし
たが、これは主記憶60に対するアクセスでも問題な
い。また、barrier命令の即値はCPU10、CPU1
010とも0としたが、これはどちらかが1であっても
変わらない。
例として示す。CPU10、CPU1010ともbarrie
r命令の即値が1なので、コヒーレンス制御完了待ち無
しのバリア同期が機能する。この場合、CPU10がba
rrier命令の前で実行した通信レジスタ370へのstore
(6410)は、CPU1010がbarrier命令の後で
実行するdload命令(6520)に必ず反映される。但
し、この場合は通信レジスタ370の代りに主記憶60
を指定すると、store結果の反映が保証できない。load
命令を使った場合も同様である。
セッサにおいて、メモリアクセス順序保証とコヒーレン
ス保証とを同時に高速に実行でき、プロセッサ間のデー
タ交換の性能が高まる。
テムを表す図である。
を表す図である。
ジスタを表す図である。
ジスタを表す図である。
御部を表す図である。
を表す図である。
ジスタを表す図である。
ジスタを表す図である。
制御部を表す図である。
ーレンス管理部を表す図である。
表す図である。
サを表す図である。
る。
る。
る。
40,450,710,810…and回路 310,320,380,390,430…or回路 700,800,1700,1800,2700,28
00,3700,3800…バリア検出部。
Claims (12)
- 【請求項1】キャッシュを有する複数のプロセッサと、 前記複数のプロセッサにより共有される主記憶と、 前記複数のプロセッサのキャッシュに保持するデータの
アドレス情報を管理してプロセッサ間のキャッシュコヒ
ーレンス制御を行うコヒーレンス管理機構と、 前記プロセッサはプロセッサ間の同期を目的とする命令
を実行した時に同期用トランザクションを発生するマル
チプロセッサシステムにおいて、、 前記複数のプロセッサのいずれかから同期用トランザク
ションを受けると前記主記憶に対するアクセス処理を停
止し、前記複数のプロセッサの全てより前記同期用トラ
ンザクションが出力されると前記主記憶に対するアクセ
ス処理を再開する主記憶アクセス順序保証機構と、 前記複数のプロセッサの同期用トランザクションよりも
前のリクエストに対する前記コヒーレンス管理機構によ
るキャッシュコヒーレンス制御を完了したことを当該プ
ロセッサに通知するコヒーレンス完了保証機構とを備
え、 かつ前記プロセッサの各々は、前記同期を目的とする命
令を実行した後前記コヒーレンス完了保証機構からの前
記通知を受けるまで後続の命令の実行を停止すること特
徴とするマルチプロセッサシステム。 - 【請求項2】前記プロセッサから前記同期用トランザク
ションを受けるとこれを保持し、前記プロセッサの全て
が前記同期を目的とする命令を実行すると主記憶と前記
コヒーレンス管理機構に該同期用トランザクションを出
力する同期用トランザクション保持機構をさらに有する
請求項1記載のマルチプロセッサシステム。 - 【請求項3】前記プロセッサの1つから同期用トランザ
クションを受けるとこれを記憶し、前記プロセッサの全
てから該同期用トランザクションを受けるとこれを解除
するとともに、最後に受けた該同期用トランザクション
よりも前のトランザクションに対するコヒーレンス制御
が終わったことをもって同期前のキャッシュコヒーレン
ス制御が完了したことを検出するコヒーレンス完了保証
機構を持つ請求項1記載のマルチプロセッサシステム。 - 【請求項4】キャッシュを有する複数のプロセッサと、 前記複数のプロセッサにより共有される主記憶と、 前記複数のプロセッサのキャッシュに保持するデータの
アドレス情報を管理してプロセッサ間のキャッシュコヒ
ーレンス制御を行うコヒーレンス管理機構を具備し、 前記複数のプロセッサ間の同期について参加不参加を表
すマスク情報を各プロセッサ毎に持ち、 該プロセッサのプロセッサ間の同期を目的とする命令を
実行した時に同期用トランザクションを発生するマルチ
プロセッサシステムにおいて、 前記複数のプロセッサのいずれかから同期用トランザク
ションを受けるとプロセッサからの主記憶に対するアク
セス処理を停止し、前記複数のプロセッサの内同期に参
加するプロセッサの全てより同期用トランザクションが
出力されると該主記憶に対するアクセス処理を再開する
主記憶アクセス順序保証機構と、 前記複数のプロセッサの内同期に参加するプロセッサの
全てより出力された同期用トランザクションよりも前の
全てのリクエストに対する、前記コヒーレンス管理機構
によるキャッシュコヒーレンス制御を完了したことを前
記プロセッサに通知するコヒーレンス完了保証機構とを
備え、 かつ前記プロセッサの各々は、前記同期を目的とする命
令を実行した後前記コヒーレンス完了保証機構からの前
記通知を受けるまで後続の命令の実行を停止すること特
徴とするマルチプロセッサシステム。 - 【請求項5】前記プロセッサから前記同期用トランザク
ションを受けるとこれを保持し、前記プロセッサの全て
が前記同期を目的とする命令を実行すると主記憶と前記
コヒーレンス管理機構に該同期用トランザクションを出
力する同期用トランザクション保持機構をさらに有する
請求項4記載のマルチプロセッサシステム。 - 【請求項6】前記プロセッサの1つから同期用トランザ
クションを受けるとこれを記憶し、前記プロセッサの全
てから該同期用トランザクションを受けるとこれを解除
するとともに、最後に受けた該同期用トランザクション
よりも前のトランザクションに対するコヒーレンス制御
が終わったことをもって同期前のキャッシュコヒーレン
ス制御が完了したことを検出するコヒーレンス完了保証
機構を持つ請求項4記載のマルチプロセッサシステム。 - 【請求項7】キャッシュを有する複数のプロセッサと、
複数の該プロセッサにより共有される主記憶と、全ての
該プロセッサの該キャッシュに保持するデータのアドレ
ス情報を管理してプロセッサ間のキャッシュコヒーレン
ス制御を行うコヒーレンス管理機構を具備し、 該プロセッサのプロセッサ間の同期を目的とする命令を
実行した時に同期用トランザクションを発生し、 該全プロセッサの該同期用トランザクションよりも前の
全てのリクエストに対する、該コヒーレンス管理機構に
よるキャッシュコヒーレンス制御を完了したことを該プ
ロセッサに通知するコヒーレンス完了保証機構と、 該プロセッサが該コヒーレンス管理機構からの該キャッ
シュコヒーレンス制御完了通知を待つ機構と、 該プロセッサが該キャッシュコヒーレンス制御完了通知
を待つ時間が規定時間を超えると割込みを発生するタイ
マを持つことを特徴とするマルチプロセッサシステム。 - 【請求項8】キャッシュを有する複数のプロセッサと、
複数の該プロセッサにより共有される主記憶と、全ての
該プロセッサの該キャッシュに保持するデータのアドレ
ス情報を管理してプロセッサ間のキャッシュコヒーレン
ス制御を行うコヒーレンス管理機構を具備し、 該プロセッサ間の同期について参加不参加を表すマスク
情報を該各プロセッサ毎に持ち、 該プロセッサのプロセッサ間の同期を目的とする命令を
実行した時に同期用トランザクションを発生し、 少なくとも該プロセッサの内同期に参加するもの全てよ
り出力された該同期用トランザクションよりも前の全て
のリクエストに対する、該コヒーレンス管理機構による
キャッシュコヒーレンス制御を完了したことを該プロセ
ッサに通知するコヒーレンス完了保証機構と、 該プロセッサが該コヒーレンス管理機構からの該キャッ
シュコヒーレンス制御完了通知を待つ機構と、 該プロセッサが該キャッシュコヒーレンス制御完了通知
を待つ時間が規定時間を超えると割込みを発生するタイ
マを持つことを特徴とするマルチプロセッサシステム。 - 【請求項9】キャッシュを有する複数のプロセッサと、
複数の該プロセッサにより共有される主記憶と、全ての
該プロセッサの該キャッシュに保持するデータのアドレ
ス情報を管理してプロセッサ間のキャッシュコヒーレン
ス制御を行うコヒーレンス管理機構を具備し、 該プロセッサ間のデータ交換のための通信レジスタを持
ち、 該プロセッサのプロセッサ間の同期を目的とする命令を
実行した時に同期用トランザクションを発生し、 該同期用トランザクションを受けると該プロセッサから
の該主記憶に対するアクセス処理を停止し、該プロセッ
サ全てより該同期用トランザクションが出力されると該
主記憶に対するアクセス処理を再開する主記憶アクセス
順序保証機構と、 該全プロセッサの該同期用トランザクションよりも前の
全てのリクエストに対する、該コヒーレンス管理機構に
よるキャッシュコヒーレンス制御を完了したことと、該
全プロセッサの該同期用トランザクションよりも前の全
ての該通信レジスタに対するアクセスが完了したことと
を該プロセッサに通知するコヒーレンス完了保証機構
と、 該プロセッサが該コヒーレンス管理機構からの該キャッ
シュコヒーレンス制御完了通知を待つ機構とを持つこと
を特徴とするマルチプロセッサシステム。 - 【請求項10】前記同期を目的とする命令で、同期によ
る保証範囲が前記通信レジスタの値のみか、前記主記憶
に対するアクセス順序保証および前記コヒーレンス管理
機構によるキャッシュコヒーレンス制御完了保証までか
を選択できることを特徴とする請求項9に記載のマルチ
プロセッサシステム。 - 【請求項11】キャッシュを有する複数のプロセッサ
と、複数の該プロセッサにより共有される主記憶と、全
ての該プロセッサの該キャッシュに保持するデータのア
ドレス情報を管理してプロセッサ間のキャッシュコヒー
レンス制御を行うコヒーレンス管理機構を具備し、 該プロセッサ間の同期について参加不参加を表すマスク
情報を該各プロセッサ毎に持、 該プロセッサ間のデータ交換のための通信レジスタを持
ち、 該プロセッサのプロセッサ間の同期を目的とする命令を
実行した時に同期用トランザクションを発生し、 該同期用トランザクションを受けると該プロセッサから
の該主記憶に対するアクセス処理を停止し、該プロセッ
サの内同期に参加する全てより該同期用トランザクショ
ンが出力されると該主記憶に対するアクセス処理を再開
する主記憶アクセス順序保証機構と、 少なくとも該プロセッサの内同期に参加するもの全てよ
り出力された該同期用トランザクションよりも前の全て
のリクエストに対する、該コヒーレンス管理機構による
キャッシュコヒーレンス制御を完了したことと、少なく
とも該プロセッサの内同期に参加するもの全てより出力
された該同期用トランザクションよりも前の全ての該通
信レジスタに対するアクセスが完了したこととを該プロ
セッサに通知するコヒーレンス完了保証機構と、 該プロセッサが該コヒーレンス管理機構からの該キャッ
シュコヒーレンス制御完了通知を待つ機構とを持つこと
を特徴とするマルチプロセッサシステム。 - 【請求項12】前記同期を目的とする命令で、同期によ
る保証範囲が前記通信レジスタの値のみか、前記主記憶
に対するアクセス順序保証および前記コヒーレンス管理
機構によるキャッシュコヒーレンス制御完了保証までか
を選択できることを特徴とする請求項11に記載のマル
チプロセッサシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP37277298A JP3858492B2 (ja) | 1998-12-28 | 1998-12-28 | マルチプロセッサシステム |
US09/473,276 US6466988B1 (en) | 1998-12-28 | 1999-12-28 | Multiprocessor synchronization and coherency control system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP37277298A JP3858492B2 (ja) | 1998-12-28 | 1998-12-28 | マルチプロセッサシステム |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2000194680A true JP2000194680A (ja) | 2000-07-14 |
JP2000194680A5 JP2000194680A5 (ja) | 2005-07-21 |
JP3858492B2 JP3858492B2 (ja) | 2006-12-13 |
Family
ID=18501026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP37277298A Expired - Fee Related JP3858492B2 (ja) | 1998-12-28 | 1998-12-28 | マルチプロセッサシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US6466988B1 (ja) |
JP (1) | JP3858492B2 (ja) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008512785A (ja) * | 2004-09-10 | 2008-04-24 | カビウム・ネットワークス | マルチコアプロセッサの格納命令の順序づけ |
JP2010044599A (ja) * | 2008-08-13 | 2010-02-25 | Nec Corp | 情報処理装置及び順序保証方式 |
JP2012203687A (ja) * | 2011-03-25 | 2012-10-22 | Nec Corp | 通信装置、通信方法、およびプログラム |
JP2013137833A (ja) * | 2013-04-08 | 2013-07-11 | Waseda Univ | マルチプロセッサシステムおよびマルチプロセッサシステムの同期方法 |
US8504781B2 (en) | 2008-10-14 | 2013-08-06 | Canon Kabushiki Kaisha | Methods and systems for inter-processor communication under a multiprocessor environment |
JP2015127982A (ja) * | 2015-04-06 | 2015-07-09 | 学校法人早稲田大学 | マルチプロセッサシステム |
JP2015167036A (ja) * | 2009-10-13 | 2015-09-24 | アーム・リミテッド | 分散システム内の種々のコンポーネントの活動を同期させること |
JP2015185000A (ja) * | 2014-03-25 | 2015-10-22 | 株式会社デンソー | データ処理装置 |
JP2016024762A (ja) * | 2014-07-24 | 2016-02-08 | 日本電気株式会社 | 情報処理装置、メモリ順序保障方法、及び、プログラム |
US9891655B2 (en) | 2014-12-05 | 2018-02-13 | Fujitsu Limited | Parallel operation system, apparatus and medium |
JP2019515384A (ja) * | 2016-04-27 | 2019-06-06 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | インターサブグループデータ共有 |
US10817183B2 (en) | 2017-07-11 | 2020-10-27 | Fujitsu Limited | Information processing apparatus and information processing system |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6725340B1 (en) * | 2000-06-06 | 2004-04-20 | International Business Machines Corporation | Mechanism for folding storage barrier operations in a multiprocessor system |
US6748518B1 (en) * | 2000-06-06 | 2004-06-08 | International Business Machines Corporation | Multi-level multiprocessor speculation mechanism |
US6947963B1 (en) * | 2000-06-28 | 2005-09-20 | Pluris, Inc | Methods and apparatus for synchronizing and propagating distributed routing databases |
US20040139145A1 (en) * | 2000-12-21 | 2004-07-15 | Bar-Or Gigy | Method and apparatus for scalable distributed storage |
JP3628265B2 (ja) * | 2001-02-21 | 2005-03-09 | 株式会社半導体理工学研究センター | マルチプロセッサシステム装置 |
US6986022B1 (en) * | 2001-10-16 | 2006-01-10 | Cisco Technology, Inc. | Boundary synchronization mechanism for a processor of a systolic array |
US7100021B1 (en) * | 2001-10-16 | 2006-08-29 | Cisco Technology, Inc. | Barrier synchronization mechanism for processors of a systolic array |
JP3798726B2 (ja) * | 2002-04-26 | 2006-07-19 | インターナショナル・ビジネス・マシーンズ・コーポレーション | メモリ・アクセス順序付け及びロック管理の方法、装置、プログラム及び記録媒体 |
US7356568B2 (en) * | 2002-12-12 | 2008-04-08 | International Business Machines Corporation | Method, processing unit and data processing system for microprocessor communication in a multi-processor system |
US7359932B2 (en) * | 2002-12-12 | 2008-04-15 | International Business Machines Corporation | Method and data processing system for microprocessor communication in a cluster-based multi-processor system |
US7493417B2 (en) * | 2002-12-12 | 2009-02-17 | International Business Machines Corporation | Method and data processing system for microprocessor communication using a processor interconnect in a multi-processor system |
US7360067B2 (en) * | 2002-12-12 | 2008-04-15 | International Business Machines Corporation | Method and data processing system for microprocessor communication in a cluster-based multi-processor wireless network |
US7073031B1 (en) * | 2003-12-18 | 2006-07-04 | Emc Corporation | Multi-processor system having data coherency |
US7428619B2 (en) * | 2005-01-18 | 2008-09-23 | Sony Computer Entertainment Inc. | Methods and apparatus for providing synchronization of shared data |
JP4372043B2 (ja) * | 2005-05-12 | 2009-11-25 | 株式会社ソニー・コンピュータエンタテインメント | コマンド実行制御装置、コマンド実行指示装置およびコマンド実行制御方法 |
US20080098178A1 (en) * | 2006-10-23 | 2008-04-24 | Veazey Judson E | Data storage on a switching system coupling multiple processors of a computer system |
JP2009176116A (ja) * | 2008-01-25 | 2009-08-06 | Univ Waseda | マルチプロセッサシステムおよびマルチプロセッサシステムの同期方法 |
US8527710B2 (en) * | 2009-02-17 | 2013-09-03 | Hitachi, Ltd. | Storage controller and method of controlling storage controller |
WO2011058639A1 (ja) * | 2009-11-12 | 2011-05-19 | 富士通株式会社 | 通信方法、情報処理装置及びプログラム |
US8935513B2 (en) * | 2012-02-08 | 2015-01-13 | International Business Machines Corporation | Processor performance improvement for instruction sequences that include barrier instructions |
US9652300B2 (en) * | 2012-06-28 | 2017-05-16 | Intel Corporation | Systems, methods, and computer program products for preemption of threads at a synchronization barrier |
US9122401B2 (en) | 2012-08-23 | 2015-09-01 | Apple Inc. | Efficient enforcement of command execution order in solid state drives |
US9489307B2 (en) * | 2012-10-24 | 2016-11-08 | Texas Instruments Incorporated | Multi domain bridge with auto snoop response |
US9582256B2 (en) * | 2013-03-14 | 2017-02-28 | Sas Institute Inc. | Automated cooperative concurrency with minimal syntax |
US10067870B2 (en) * | 2016-04-01 | 2018-09-04 | Intel Corporation | Apparatus and method for low-overhead synchronous page table updates |
US10120814B2 (en) | 2016-04-01 | 2018-11-06 | Intel Corporation | Apparatus and method for lazy translation lookaside buffer (TLB) coherence |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US5611070A (en) * | 1990-05-10 | 1997-03-11 | Heidelberger; Philip | Methods and apparatus for performing a write/load cache protocol |
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 |
US5604882A (en) * | 1993-08-27 | 1997-02-18 | International Business Machines Corporation | System and method for empty notification from peer cache units to global storage control unit in a multiprocessor data processing system |
US5613153A (en) * | 1994-10-03 | 1997-03-18 | International Business Machines Corporation | Coherency and synchronization mechanisms for I/O channel controllers in a data processing system |
US5978874A (en) | 1996-07-01 | 1999-11-02 | Sun Microsystems, Inc. | Implementing snooping on a split-transaction computer system bus |
US5887138A (en) | 1996-07-01 | 1999-03-23 | Sun Microsystems, Inc. | Multiprocessing computer system employing local and global address spaces and COMA and NUMA access modes |
US5958019A (en) | 1996-07-01 | 1999-09-28 | Sun Microsystems, Inc. | Multiprocessing system configured to perform synchronization operations |
US5875468A (en) * | 1996-09-04 | 1999-02-23 | Silicon Graphics, Inc. | Method to pipeline write misses in shared cache multiprocessor systems |
JPH10149285A (ja) | 1996-11-18 | 1998-06-02 | Hitachi Ltd | 命令実行制御方法および情報処理装置 |
JP3375505B2 (ja) | 1996-12-24 | 2003-02-10 | 株式会社日立製作所 | 同期制御方法および主記憶共有型並列プロセッサ |
JP3636871B2 (ja) | 1997-09-16 | 2005-04-06 | 株式会社日立製作所 | 並列プロセッサシステム |
US6038651A (en) | 1998-03-23 | 2000-03-14 | International Business Machines Corporation | SMP clusters with remote resource managers for distributing work to other clusters while reducing bus traffic to a minimum |
-
1998
- 1998-12-28 JP JP37277298A patent/JP3858492B2/ja not_active Expired - Fee Related
-
1999
- 1999-12-28 US US09/473,276 patent/US6466988B1/en not_active Expired - Lifetime
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008512785A (ja) * | 2004-09-10 | 2008-04-24 | カビウム・ネットワークス | マルチコアプロセッサの格納命令の順序づけ |
JP2010044599A (ja) * | 2008-08-13 | 2010-02-25 | Nec Corp | 情報処理装置及び順序保証方式 |
JP4631948B2 (ja) * | 2008-08-13 | 2011-02-16 | 日本電気株式会社 | 情報処理装置及び順序保証方式 |
US8468307B2 (en) | 2008-08-13 | 2013-06-18 | Nec Corporation | Information processing apparatus and order guarantee method |
US8504781B2 (en) | 2008-10-14 | 2013-08-06 | Canon Kabushiki Kaisha | Methods and systems for inter-processor communication under a multiprocessor environment |
JP2015167036A (ja) * | 2009-10-13 | 2015-09-24 | アーム・リミテッド | 分散システム内の種々のコンポーネントの活動を同期させること |
JP2012203687A (ja) * | 2011-03-25 | 2012-10-22 | Nec Corp | 通信装置、通信方法、およびプログラム |
JP2013137833A (ja) * | 2013-04-08 | 2013-07-11 | Waseda Univ | マルチプロセッサシステムおよびマルチプロセッサシステムの同期方法 |
JP2015185000A (ja) * | 2014-03-25 | 2015-10-22 | 株式会社デンソー | データ処理装置 |
JP2016024762A (ja) * | 2014-07-24 | 2016-02-08 | 日本電気株式会社 | 情報処理装置、メモリ順序保障方法、及び、プログラム |
US9891655B2 (en) | 2014-12-05 | 2018-02-13 | Fujitsu Limited | Parallel operation system, apparatus and medium |
JP2015127982A (ja) * | 2015-04-06 | 2015-07-09 | 学校法人早稲田大学 | マルチプロセッサシステム |
JP2019515384A (ja) * | 2016-04-27 | 2019-06-06 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | インターサブグループデータ共有 |
US10817183B2 (en) | 2017-07-11 | 2020-10-27 | Fujitsu Limited | Information processing apparatus and information processing system |
Also Published As
Publication number | Publication date |
---|---|
US6466988B1 (en) | 2002-10-15 |
JP3858492B2 (ja) | 2006-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2000194680A (ja) | マルチプロセッサシステム | |
US6801986B2 (en) | Livelock prevention by delaying surrender of ownership upon intervening ownership request during load locked / store conditional atomic memory operation | |
US6748501B2 (en) | Microprocessor reservation mechanism for a hashed address system | |
US5550988A (en) | Apparatus and method for performing error correction in a multi-processor system | |
US9274856B2 (en) | Improving processor performance for instruction sequences that include barrier instructions | |
US8180977B2 (en) | Transactional memory in out-of-order processors | |
US9244724B2 (en) | Management of transactional memory access requests by a cache memory | |
Tomić et al. | EazyHTM: Eager-lazy hardware transactional memory | |
KR100308677B1 (ko) | 복수l1캐쉬라인의파이프라인형스누핑 | |
EP0495165B1 (en) | Overlapped serialization | |
US20030145136A1 (en) | Method and apparatus for implementing a relaxed ordering model in a computer system | |
US5931957A (en) | Support for out-of-order execution of loads and stores in a processor | |
US20010052053A1 (en) | Stream processing unit for a multi-streaming processor | |
US20060230207A1 (en) | Asynchronous symmetric multiprocessing | |
JP2003044452A (ja) | 同期メモリ・バリアを実装する方法およびシステム | |
US20040123078A1 (en) | Method and apparatus for processing a load-lock instruction using a scoreboard mechanism | |
WO2014025731A1 (en) | Interaction of transactional storage accesses with other atomic semantics | |
TW201610677A (zh) | 指示異動狀態之一致性協定增強 | |
US7080209B2 (en) | Method and apparatus for processing a load-lock instruction using a relaxed lock protocol | |
US6785779B2 (en) | Multi-level classification method for transaction address conflicts for ensuring efficient ordering in a two-level snoopy cache architecture | |
JP3159435B2 (ja) | ロード/ロード検出及びリオーダー方法及び装置 | |
US9632955B2 (en) | Reorder buffer permitting parallel processing operations with repair on ordering hazard detection within interconnect circuitry | |
US5875468A (en) | Method to pipeline write misses in shared cache multiprocessor systems | |
US9442878B2 (en) | Parallel snoop and hazard checking with interconnect circuitry | |
JP2007533014A (ja) | ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041203 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041203 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20041203 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060417 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060815 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060829 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060911 |
|
LAPS | Cancellation because of no payment of annual fees |