JP2000181891A - 共有メモリアクセス順序保証方式 - Google Patents

共有メモリアクセス順序保証方式

Info

Publication number
JP2000181891A
JP2000181891A JP10360297A JP36029798A JP2000181891A JP 2000181891 A JP2000181891 A JP 2000181891A JP 10360297 A JP10360297 A JP 10360297A JP 36029798 A JP36029798 A JP 36029798A JP 2000181891 A JP2000181891 A JP 2000181891A
Authority
JP
Japan
Prior art keywords
processor
instruction
order
store
load
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP10360297A
Other languages
English (en)
Inventor
Yuuichi Saigan
裕一 西願
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 JP10360297A priority Critical patent/JP2000181891A/ja
Publication of JP2000181891A publication Critical patent/JP2000181891A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 (修正有) 【課題】共有メモリを有するマルチプロセッサシステム
において、ストアの順序保証のために後続の命令実行を
待たせる必要のない共有メモリアクセス順序保証方式を
提供する。 【解決手段】ストア順序を保証する側のプロセッサ10
1において、ストア順序保証リクエスト133以降に開
始したストアアクセス127が共有メモリ120に反映
されると順序保証フラグ136がセットされ、該リクエ
スト133以前のストアアクセス125が共有メモリ1
20および他プロセッサ102のキャッシュ124に反
映されるとリセットされる。一方ロード順序を保証する
側のプロセッサ102では、先行するロードアクセス1
28の読み出しが完了した後ロード順序保証リクエスト
134を発行し、前記順序保証フラグ136がリセット
されることによりロード順序保証リクエストは完了(1
35)となり、後続のロードアクセス130を開始す
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、複数のプロセッサ
と、1つあるいは複数のメモリバンクからなる共有メモ
リを有するマルチプロセッサシステムにおいて、あるプ
ロセッサからの共有メモリへのアクセス順序を他のプロ
セッサからみて保証する、共有メモリアクセス順序保証
方式に関する。
【0002】
【従来の技術】共有メモリを有するマルチプロセッサシ
ステムにおいて、特にスループットを重視するものは、
プロセッサと共有メモリとの間の結合網として、中間に
バッファを有する(多段)スイッチ型の主記憶制御装置
が用いられることがある。しかし、このようなスイッチ
型の主記憶制御装置において、スループットを維持した
まま、あるプロセッサからの全ての共有メモリアクセス
順序を他のプロセッサから見て保証するように制御する
ことは困難である。それには、順序保証が必要な共有メ
モリアクセスのみについて順序保証制御を行うようなw
eakly consistency modelと呼ば
れる記憶制御方式が有効である。
【0003】このようなスイッチ型の主記憶制御装置に
おいてメモリアクセスの順序を保証する場合、先行する
アクセスが完了するまで後続のアクセスを待たせるのが
一般的である。ここで、アクセスが完了するとは、スト
アアクセスの場合、どのプロセッサからも該ストアアク
セスの結果をロードアクセスによって読み出すことがで
きる状態になることを意味し、ロードアクセスの場合、
どのプロセッサからのストアアクセスによってもそのロ
ードアクセスによって読み出される値に影響しない状態
になることを意味する。しかし、先行するストアアクセ
スが全て完了することを保証するためには、かなりの時
間を要してしまう。
【0004】プロセッサ間で共有メモリを介して共有デ
ータの受け渡しをする場合を例にとってみると、共有デ
ータを渡す側のプロセッサは、共有データのストアの後
に、他プロセッサに共有データを参照することを許可す
るためのフラグのストアを行うが、共有データのストア
とフラグのストアの間でアクセス順序を保証する必要が
ある。このとき、共有データのストアが完了するまでフ
ラグのストアを待たせていると、以降の命令実行も待た
されることにより性能に影響を与えてしまう。
【0005】そこで、この待ち時間をなるべく短くする
ために、例えば特開平6―231032号公報に記載さ
れた技術は、共有データを参照することを許可するフラ
グを専用の共有レジスタに設定し、フラグ以前のストア
リクエストが全て主記憶制御装置内の順序保証可能なス
テージまで降りるまで、主記憶制御装置内においてフラ
グのストアのみを待たせことにより、プロセッサは先行
するストアの完了を待たずにフラグのストアを行うこと
ができるようにしている。
【0006】また、上記技術では、マルチプロセッサで
はなく、単一の演算プロセッサから見たI/Oプロセッ
サのメモリアクセス順序に関してではあるが、主記憶制
御装置内に存在するI/Oがアクセス中のアドレスと、
プロセッサがアクセスしようとしているアドレスをコン
ペアすることにより、I/Oがアクセス中のアドレスに
対してはプロセッサのアクセスを待たせるという方法も
考えられている。こうすることにより、I/Oプロセッ
サからのアクセスにおいて、フラグのストアは完了した
が共有データのストアは完了していないという状態で
も、プロセッサからの共有データのロードは主記憶制御
装置内のコンペア回路により待たされるので、誤って古
いデータを読んでしまうことはない。
【0007】
【発明が解決しようとする課題】先行するストアアクセ
スが完了する前に後続のストアアクセスを行うことによ
り、順序保証に要するオーバヘッドを軽減することがで
きる。
【0008】しかし、上記した技術のように共有レジス
タを用いて順序保証を行う方法では、共有データの受け
渡しにおけるフラグ領域が共有レジスタに限られている
ため、プログラムに制限が出来てしまう。一方、フラグ
領域を共有メモリに設定することができれば、プログラ
ムの自由度が広がる。
【0009】また、アドレスをコンペアする方法では、
I/Oプロセッサなど1台のプロセッサに限定し、さら
に主記憶制御装置内のバッファ数が少ないときは実現可
能であるが、複数のプロセッサへの対応や、プロセッサ
からメモリまでの間のバッファ数が多い主記憶制御装置
については、アドレスのコンペア数が多くなりハードウ
ェアへのインプリメントが困難となる。
【0010】さらに、これら2つの方法には、プロセッ
サがキャッシュを有する場合のコヒーレンス制御に関す
る考慮がないため、ハードウェアによってキャッシュの
コヒーレンスを保証するためには別の手段を考える必要
がある。
【0011】本発明は、順序保証のために要するオーバ
ヘッドを軽減することができる共有メモリアクセス順序
保証方式を提供するものである。
【0012】さらに、本発明は、プロセッサ間で共有デ
ータを受け渡しする際のフラグ領域として特別な同期レ
ジスタを必要とせず、任意のメモリ領域を指定すること
ができる共有メモリアクセス順序保証方式を提供するも
のである。
【0013】さらに、本発明は、多数のプロセッサによ
って構成されるシステムにおいても、ハードウェアにお
いてインプリメント可能な共有メモリアクセス順序保証
方式を提供するものである。
【0014】
【課題を解決するための手段】本発明では、ストアの順
序保証時にはストア順序保証命令、ロードの順序保証時
にはロード順序保証命令というように、二種類の順序保
証命令をプロセッサにて用意する。プロセッサがストア
順序保証命令を実行すると、先行のストア命令による全
てのストアリクエストを主記憶制御装置に掃き出した
後、ストア順序保証リクエストを主記憶制御装置に対し
て送出する。プロセッサから見るとストア順序保証命令
は主記憶制御装置がリクエストを受け付けた時点で完了
となるので、後続の命令はほとんど待たされることなく
実行することができる。主記憶制御装置には、ストア順
序保証リクエスト以前のストアリクエストがまだ完了し
ていないクリティカルな状態であることを表す順序保証
フラグがプロセッサ対応に用意されており、あるプロセ
ッサからストア順序保証リクエストが発行されたとき、
該プロセッサに対応する順序保証フラグが1にセットさ
れる。そしてストア順序保証リクエスト以前の全てのス
トアリクエストが共有メモリに達し、さらに他プロセッ
サのキャッシュへの反映が完了すると、該順序保証フラ
グを0にリセットする。このとき順序保証フラグを1に
セットするタイミングは、順序保証が可能な範囲ででき
るだけ遅い方が望ましい。
【0015】一方ロード順序保証命令は、先行するロー
ド命令の全てのリプライデータが戻ってきてから実行さ
れ、このとき後続の命令実行は一旦抑止される。主記憶
制御装置では、ロード順序保証リクエストを受け取った
時点でロード順序保証リクエストを発行したプロセッサ
以外の各プロセッサに対応する順序保証フラグを参照
し、順序保証フラグが全てリセットされていればその時
点でロード順序保証リクエストの完了とし、一つでもセ
ットされている順序保証フラグがあれば、それらの順序
保証フラグがリセットされた時点でロード順序保証リク
エストの完了として、プロセッサに完了報告を上げる。
ロード順序保証リクエストを発行したプロセッサは、主
記憶制御装置から完了報告を受け取ると、後続の命令実
行を再開する。
【0016】このように、ストア順序保証命令とロード
順序保証命令を組み合わせて用いれば、仮にストア順序
保証命令以前のストアリクエストが完了していなくて
も、順序保証フラグがセットされているためにロード順
序保証命令により後続のロード命令が抑止され、正しい
順序でロードが行われることになる。
【0017】尚、順序保証フラグをセット・リセットす
る代わりに、2つのカウンタをインクリメントすること
により、同時にセットできる複数の順序保証フラグがあ
るように見せて、ハードウェアの物量を軽減することが
できる。
【0018】
【発明の実施の形態】以下、本発明の一実施形態を図面
を用いて詳細に説明する。
【0019】図1は、n個のプロセッサ20−0〜20
−nと、m個のバンク27−0〜27−mにインタリー
ブされた主記憶28と、それらの間でデータの制御を行
う主記憶制御装置21からなるマルチプロセッサシステ
ムの構成例を示す。
【0020】ここで、プロセッサ20−0〜20−nに
は、命令を解読して演算を行う演算プロセッサだけでな
く、I/Oの制御を司るI/Oプロセッサも含まれる。
主記憶制御装置21内には、プロセッサ対応にn個のプ
ロセッサ制御部22−0〜22−nと、メモリバンク対
応にm個のメモリ制御部26−0〜26−mがあり、プ
ロセッサ制御部22−0〜22−nとメモリ制御部26
−0〜26−mは相互結合網で接続されている。
【0021】プロセッサ制御部22−0〜22−nは、
プロセッサ20−0〜20−nから発行されたストアや
ロードのリクエストを受け取り、リクエストに付随した
アドレスに従ってバンクに対応したメモリ制御部26−
0〜26−mへ送出し、ロードリクエストによって主記
憶28から読み出されたデータをメモリ制御部26−0
〜26−mから受け取り、プロセッサ20−0〜20−
nに対して返送する。また、プロセッサ20−0〜20
−n内のキャッシュを無効化するキャッシュパージリク
エストをメモリ制御部26−0〜26−mから受け取っ
た際は、キャッシュ制御部25−0〜25−nにおい
て、対応するプロセッサ20−0〜20−nに対して該
キャッシュパージリクエストを伝達する。プロセッサ制
御部22−0〜22−nには、この他に順序保証のため
の専用の論理として、ストア順序制御部23−0〜23
−n、ロード順序制御部24−0〜24−nがある。
【0022】メモリ制御部26−0〜26−mは、各プ
ロセッサ20−0〜20−nからプロセッサ制御部22
−0〜22−nを介して発行されたストアリクエストに
付随するデータを主記憶28中の対応するメモリバンク
27−0〜27−mに書込み、あるいはロードリクエス
トにより主記憶28からデータをフェッチして発行元の
プロセッサ制御部にリプライデータを返す。メモリ制御
部26−0〜26−mはさらに各プロセッサ20−0〜
20−nのキャッシュディレクトリのコピーを保持して
おり、ストアリクエストによってキャッシュの中のライ
ンをパージ(無効化)する必要のあるプロセッサに対し
てキャッシュパージリクエストを生成し、該プロセッサ
に対応するプロセッサ制御部22−0〜22−nに該パ
ージリクエストを送出する。
【0023】プロセッサ20−0〜20−nには順序保
証を行うための命令として、ストア順序保証命令とロー
ド順序保証命令の2種類が用意されている。以降、これ
らを便宜的にそれぞれSOE命令、LOE命令と呼ぶこ
とにする。
【0024】まず、プロセッサがSOE命令を実行した
ときの動作を説明する。
【0025】図6は、プロセッサ20がSOE命令を実
行したときにおける、プロセッサ20が実行中の命令お
よびプロセッサ20と主記憶制御装置21との間のイン
タフェースを表したタイムチャートの例である。
【0026】プロセッサ20はSOE命令202を実行
すると、それ以前に実行したストア命令201によるス
トアリクエスト204が全て主記憶制御装置21に対し
て発行されたことを保証した後、さらにSOEリクエス
ト205を主記憶制御装置21に対して発行する。これ
は、例えばプロセッサ20内のキャッシュやストアバッ
ファに先行するストアリクエストが留まっている場合、
それらを主記憶制御装置21に対して掃き出すことを意
味する。そして、主記憶制御装置21からSOEリクエ
スト205を受け付けた旨の報告206を受け取るまで
は、該SOE命令202の後続命令203の実行は抑止
する。
【0027】次に、プロセッサ20−0がSOE命令を
実行したときを例にとり、主記憶制御装置でのSOEリ
クエストの処理を説明する。
【0028】図2は、図1におけるマルチプロセッサシ
ステムにおいて、プロセッサ20−0がSOEリクエス
トを発行したときの信号の流れを示している。
【0029】プロセッサ20−0が発行したSOEリク
エストは、主記憶制御装置21内の対応するプロセッサ
制御部22−0が受け取り、ストア順序制御部23−0
に対してSOE開始信号30が送られる。
【0030】図3はストア順序制御部23−0のブロッ
ク図を示している。ストア順序制御部23−0はSOE
開始信号30を受け取ると、プロセッサ20−0からの
SOEリクエストが現在いくつ実行中であるかを示すカ
ウンタ33の値を参照し、k未満であればカウンタ33
を+1だけインクリメントし、プロセッサ20−0に対
してSOEリクエスト受け付け報告(SOE完了信号)
32を上げ、プロセッサ20−0以外に対応するロード
順序制御部24−1〜24−nにSOE開始信号38を
放送し、さらにメモリ制御部26−0〜26−mにSO
Eリクエスト36を分配する。ただし、このSOEリク
エスト36の分配時、プロセッサ20−0からSOEリ
クエスト以前に発行されたストアリクエストは追い越さ
ないように制御される。また、ロード順序制御部24−
1〜24−nへのSOE開始信号38の放送は、ディレ
イヤ37によって一定時間遅延された後実行される。一
方、SOEリクエストカウンタ33の値がkの場合は、
後述のSOE完了信号34−1〜34−nによりカウン
タ33の値がk未満になることを待ってから、プロセッ
サへのSOE受け付け報告(SOE完了信号)32、ロ
ード順序制御部24へのSOE開始信号38の放送、お
よびSOEリクエストのメモリ制御部26−0〜26−
mへの分配を行う。このカウンタ33により、主記憶制
御装置21内でのプロセッサ20−0発のSOEリクエ
ストの数がk個に限定される。
【0031】SOEリクエスト発行元のプロセッサ20
−0に対応するストア順序制御部23−0が、各プロセ
ッサ20−1〜20−nからのSOE完了報告信号34
−1〜34−nを受け取ると、それぞれのプロセッサに
対応した完了カウンタ35−1〜35−nの値をインク
リメントする。そして、全てのカウンタ35−1〜35
−nの値が1以上になる、すなわち全てのSOE完了報
告34−1〜34−nが揃うことにより、各完了カウン
タ35−1〜35−nおよびSOEリクエストカウンタ
33の値がディクリメントされる。主記憶制御装置21
内で、プロセッサ20−0が発行した実行中のSOEリ
クエストがいなければ、このカウンタ33の値は0とな
る。
【0032】メモリ制御部26−0〜26−mでは、ス
トア順序制御部23−0からSOEリクエスト36を受
け取ると、該SOEリクエスト36の発行元であるプロ
セッサ20−0から以前に受け取ったストアリクエスト
によるパージリクエストを追い越すことなく、プロセッ
サ20−0以外に対応するキャッシュ制御部25−1〜
25−nに対してSOEリクエストを分配する。
【0033】図5はキャッシュ制御部25のブロック図
を示したものである。
【0034】メモリ制御部26−0〜26−mから送出
されたSOEリクエスト50−0〜50−mは、リクエ
ストデコーダ51−0〜51−mによって発行元プロセ
ッサ番号がデコードされ、それぞれのプロセッサ番号に
対応するSOE待ち合せ論理54−0〜54−nに送ら
れる。ここで、自分が担当するプロセッサから発行され
たSOEリクエストは自分自身にはメモリ制御部26−
0〜26−mから分配されて来ないため、担当プロセッ
サ対応のSOE待ち合せ論理は存在しない。n−1個あ
るSOE待ち合せ論理のうち、プロセッサ20−0に対
応する待ち合せ論理54−0では、プロセッサ20−0
が発行元のSOEリクエスト50−0〜50−mによ
り、メモリバンク対応に用意された待ち合せカウンタ5
5−0〜55−mの値がインクリメントされる。例え
ば、メモリバンク#1対応のメモリ制御部26−1から
来たSOEリクエスト50−1は、カウンタ55−1を
インクリメントする。そして、全てのバンクに対応する
メモリ制御部26−0〜26−mからSOEリクエスト
が到達する、すなわち各バンクに対応する待ち合せカウ
ンタ55−0〜55−mの値が全て1以上になったら、
待ち合せが完了したことになり、一旦バッファ56にS
OEリクエストを格納して、対応するプロセッサに対し
てSOEリクエストを送出できたら各待ち合せカウンタ
55−0〜55−mの値をそれぞれディクリメントさせ
る。
【0035】キャッシュパージリクエストも同様にリク
エストデコーダ51−0〜51−mによってデコードさ
れるが、待ち合せ論理には行かず、パス53およびセレ
クタ57を通ってプロセッサに発行される。プロセッサ
に対するSOEリクエストとキャッシュパージリクエス
トは、セレクタ57によってプライオリティが取られ、
1リクエストずつプロセッサに対して発行される。この
とき、SOEリクエストはメモリ制御部から先行して送
出されたパージリクエストを追い越さないように制御さ
れる。
【0036】プロセッサ20−0が発行元のSOEリク
エストを主記憶制御装置21から受け取った各プロセッ
サ20−1〜20−nは、それ以前に主記憶制御装置2
1から受け取ったキャッシュパージリクエストが全て自
プロセッサのキャッシュに反映されたことを保証した
後、主記憶制御装置21に対してSOE完了報告を上げ
る。主記憶制御装置21においてSOE完了報告は、該
プロセッサに対応するロード順序制御部24へのSOE
完了信号43−0および、プロセッサ20−0に対応す
るストア順序制御部23−0へのSOE完了信号34−
1〜34−nとなって送出される。
【0037】図4はロード順序制御部24のブロック図
を示したものである。ロード順序制御部24は、SOE
リクエスト発行元のプロセッサ対応に、2個のカウンタ
44、45を持っている。ストア順序制御部23−0が
SOEリクエストを受け付けたときに放送される前記S
OE開始信号38−0は、プロセッサ20−0対応の開
始カウンタ44の値をインクリメントさせる。また、対
応プロセッサから前記SOE完了信号43−0を受け取
った時には完了カウンタ45の値がインクリメントされ
る。これらのカウンタは(k+1)進となっており、0
からkまでカウントアップした後は再び0に戻る。SO
Eリクエストが完了した時点でプロセッサ20−0から
更なるSOEリクエストが実行されていなければ、この
両者のカウンタ44、45は同じ値を示すことになる。
ストア順序制御部23−0においてプロセッサ20−0
発のSOEリクエストの数はk個に制限されており、ま
た両カウンタはk+1進となっているため、たとえSO
Eリクエストの完了が遅れて完了カウンタ45のインク
リメントが止まっていたとしても、開始カウンタ44だ
けがインクリメントされることによって完了カウンタ4
5と同じ値になってしまうことはない。
【0038】次に、プロセッサがLOE命令を実行した
ときの動作を述べる。
【0039】図7はプロセッサ20がLOE命令を実行
したときにおける、プロセッサが実行中の命令およびプ
ロセッサと主記憶制御装置間21のインタフェースを表
したタイムチャートの例である。
【0040】プロセッサ20においてLOE命令211
は、それ以前に実行したロード命令210に対するリプ
ライデータ216が全て戻った後に実行され、主記憶制
御装置21に対してLOEリクエスト214を発行し、
後続の命令212の実行を抑止する。主記憶制御装置2
1からLOE完了信号217を受け取ると、後続の命令
212の実行を再開する。
【0041】次に、プロセッサ20−1がLOE命令を
実行したときを例にとり、主記憶制御装置21でのLO
Eリクエストの処理を説明する。
【0042】再び図4を用いて説明すると、主記憶制御
装置21がLOEリクエスト214を受け取ると、対応
するロード順序制御部24−1に対してLOE開始信号
40が送られる。該LOE開始信号40により、LOE
実行フラグ41のセットと各プロセッサ対応のLOE完
了フラグ48のリセットが行われ、さらに各プロセッサ
対応のSOE開始カウンタ44の値がラッチ46によっ
て一時的に記憶される。そしてSOE完了カウンタ45
の値がラッチ44の値と等しくなったとき、LOE完了
フラグ48をセットする。全プロセッサ対応のLOE完
了フラグ48がセットされたとき、すなわちLOEリク
エストを受け取った時点で実行中であったSOEリクエ
ストが全て完了したとき、LOE完了信号42をプロセ
ッサに送出して、LOE実行フラグ41をリセットす
る。
【0043】図8はロード順序制御部において、各信号
を受信した際のカウンタやフラグなどの値の推移を表し
たタイムチャートの例を示したものである。この例で
は、同時に実行できる1プロセッサあたりのSOEリク
エストの数は3個としている(k=3)。
【0044】まず、SOE開始信号220、221、2
22、223により開始カウンタの値が、SOE完了信
号224、225、226、227により完了カウンタ
の値がそれぞれインクリメントされる。また、LOE開
始信号228により、該信号を受け取った時点の開始カ
ウンタの値“2”がラッチに保持され、完了カウンタの
値が同じく“2”になったタイミングでLOE完了フラ
グがセットされる。したがって、LOE開始信号228
を受け取る前に発行されたSOE開始信号220、22
1に対するSOE完了信号224、225を受け取った
タイミングで、LOE完了フラグがセットされることに
なる。
【0045】ところで、ストア順序制御部23から送ら
れるSOE開始信号38はディレイヤ37を通って一定
時間遅延されるが、この遅延時間が長すぎると、ロード
順序制御部24においてLOE開始信号40を受信した
ときにSOE開始カウンタ44のインクリメントが間に
合わず、本来待たせなければならないLOE命令が不当
に早く完了してしまう恐れがある。また、SOE開始カ
ウンタ44のインクリメントが完了カウンタ45のイン
クリメントより後になってしまうと、LOE開始信号4
0受信時にラッチしたSOE開始カウンタ値46と完了
カウンタ45の値が等しくならず、いつまでたってもL
OE完了フラグ48がセットできなくなる可能性もあ
る。逆に遅延時間が短すぎると、無関係なSOEリクエ
ストによってLOE命令が待たされる機会が多くなって
しまう。したがって、矛盾が発生しない範囲でできるだ
け長くなるように遅延時間を調節する必要がある。
【0046】次に、プロセッサ間における共有データの
受け渡しを例にとり、本実施例によって共有メモリへの
アクセス順序が保証可能となることを説明する。
【0047】図9は、プロセッサ101によって共有メ
モリに書込まれた共有データをプロセッサ102が読み
出すときの処理を記述したフローチャートである。
【0048】プロセッサ101は共有データのストア
(ステップ103)を行った後ストア順序保証命令(S
OE)を実行し(ステップ104)、共有データの読み
出し許可フラグのストア(ステップ105)を行う。一
方、プロセッサ102は共有データ読み出し許可フラグ
のロード(ステップ106)をフラグがセットされるま
で繰り返し(ステップ107)、ロード順序保証命令
(LOE)を実行(ステップ108)した後で共有デー
タのロード(ステップ109)を行う。
【0049】図10、図11は順序保証命令を全く使用
しなかった場合における、図9のプロセッサ間の共有デ
ータの受け渡しを表したタイムチャートを示している。
ここで、リクエスト125はプロセッサ101からの共
有データのストア、リクエスト127は同プロセッサ1
01からのフラグのストアであり、リクエスト128は
プロセッサ102からのフラグのロード、リクエスト1
30は同プロセッサ102からの共有データのロードを
表している。
【0050】ストアリクエスト125は共有メモリ12
0にデータを書込んだ後、プロセッサ102内のキャッ
シュ124を無効化するためのキャッシュパージリクエ
スト126となってプロセッサ102に伝達される。こ
の例では、フラグのロードリクエスト128は、最も早
くフラグのストア結果を読み出すことのできるタイミン
グとなっており、フラグの読み出しデータ129が戻っ
た後に共有データのロード130が実行される。このと
き、図10はリクエスト125とリクエスト127の間
で順序が保証できたときのケースであり、図11は後続
のリクエスト127が先行するリクエスト125を追い
越してしまったケースである。図10では、プロセッサ
101がストアした共有データの結果をプロセッサ10
2は正しく読むことができるが、図11ではフラグのス
トア127が先に処理されてしまったために、プロセッ
サ102は共有データのロード130によってキャッシ
ュ124上の古いデータを読んでしまっている。
【0051】図12は図11のケースにおいて、従来の
順序保証機構によってデータとフラグのストアの間に順
序保証リクエストを挿入したときのタイムチャートを示
している。
【0052】このように一般的な順序保証機構を用いた
場合、共有データのストアリクエスト125の後に順序
保証リクエスト132を発行し、先行する共有データの
ストアリクエスト125がプロセッサ102のキャッシ
ュ124に反映されるまで、後続のフラグストアリクエ
スト127の実行が待たされるようにしている。このよ
うにして、図11のように順序保証命令なしでは失敗す
るケースでも正しく共有データの受け渡しを行うことが
できるが、フラグのストア127を待たせる分だけロー
ド側のタイミングも遅れてしまう。
【0053】図13は図11のケースにおいて、本実施
例の順序保証命令を用いたときのタイムチャートを示し
ている。
【0054】プロセッサ101は、共有データのストア
125の後SOEリクエスト133を発行し、ストア1
25の完了を待たずにフラグのストア127を行うこと
ができる。したがって、プロセッサ102は従来の方法
よりも早くフラグのロードを行うことができる。また、
順序保証フラグ136はSOEリクエスト133以降の
ストアリクエストが共有メモリに到達したときにセット
され、SOEリクエスト以前のストアリクエストがプロ
セッサ102のキャッシュまで反映されたことをもって
リセットされる。このとき、プロセッサ102からのL
OEリクエスト134は順序保証フラグ136がリセッ
トされたことをもって完了となり、さらに共有データの
ロード130はLOEリクエスト134の完了報告13
5まで待たされるため、誤ってキャッシュ124上の古
いデータを読んでしまうこともない。
【0055】以上の例では、プロセッサはSOE命令と
LOE命令で動作が異なっていたが、SOE命令とLO
E命令の処理内容を全く同一とし、主記憶制御装置への
リクエスト発行時に、SOEリクエストとLOEリクエ
ストでオーダを分けるようにしてもよい。すなわち、S
OE命令あるいはLOE命令が実行されると、先行のロ
ード命令のリプライデータが戻ることを待ち、先行のス
トア命令によるストアリクエストが全て主記憶制御装置
に対して発行されたことを保証した後、SOEリクエス
トまたはLOEリクエストを主記憶制御装置に発行す
る。SOE受け付け報告とLOE完了報告も同一のイン
タフェースとなり、この報告を受けるまでは後続の命令
実行を抑止する。このようにして両者の動作を統一する
ことにより、本実施例のプロセッサにおけるインプリメ
ントを軽減することができる。
【0056】尚、一実施形態に基づき以上に説明した本
発明は、更に以下のように説明することもできる。
【0057】(1)複数のプロセッサと該プロセッサで
共有されるメモリと該共有メモリを制御する主記憶制御
装置からなるマルチプロセッサシステムにおいて、プロ
セッサにおいて実行されるストア順序保証命令と、前記
ストア順序保証命令を実行したプロセッサにおける、該
ストア順序保証命令以後のいずれかのストア命令の結果
が共有メモリに反映されるとセットされ、該ストア順序
保証命令以前の全てのストア命令の結果が共有メモリお
よび他プロセッサのキャッシュに反映されるとリセット
される、プロセッサ対応に用意された順序保証フラグ
と、プロセッサにおいて実行されると、該プロセッサの
先行するロード命令に対応するリプライデータが全て戻
ることを待った後、他プロセッサに対応する前記順序保
証フラグを参照し、その時点でセットされていた順序保
証フラグが全てリセットされるまで後続の命令実行を抑
止するロード順序保証命令とを有することを特徴とする
共有メモリアクセス順序保証機構。
【0058】(2)前記順序保証フラグをセットするタ
イミングを、前記ストア順序保証命令以後のいずれかの
ストア命令の結果が共有メモリに反映するタイミングに
代わって、該ストア順序保証命令前後のストア命令によ
るストアリクエスト間でアクセス順序の保証が不可能と
なるポイントに、該ストア順序保証命令以後のいずれか
のストア命令によるストアリクエストが到達してから一
定時間内とすることを特徴とする(1)記載の共有メモ
リアクセス順序保証機構。
【0059】(3)前記順序保証フラグを、それぞれ対
応プロセッサ以外の全てのプロセッサを担当するように
分散させ、セットする際は分散された各順序保証フラグ
を一斉にセットし、リセットするタイミングは対応プロ
セッサにおいて実行されたストア順序保証命令以前の全
てのストア命令の結果が共有メモリおよび担当プロセッ
サのキャッシュに反映されたときとし、ロード順序保証
命令は自プロセッサを担当する該順序保証フラグが全て
リセットされるまで後続の命令実行を抑止することを特
徴とする(1)あるいは(2)記載の共有メモリアクセ
ス順序保証機構。
【0060】(4)前記順序保証フラグを、対応プロセ
ッサについて複数個用意して、ストア順序保証命令毎に
異なる順序保証フラグをセットするものとし、リセット
される以前に連続してセットされることのないようにス
トア順序保証命令の実行が制御され、ロード順序保証命
令は、実行されたときにセットされていた全ての順序保
証フラグがリセットされるまで後続の命令実行を抑止す
ることを特徴とする(1)乃至(3)記載の共有メモリ
アクセス順序保証機構。
【0061】(5)前記複数個の順序保証フラグに代わ
り、プロセッサ対応に開始カウンタと完了カウンタを用
意し、順序保証フラグのセットを開始カウンタのインク
リメント、順序保証フラグのリセットを完了カウンタの
インクリメントに対応させ、ロード順序保証命令は、他
プロセッサ対応の完了カウンタの値が、ロード順序保証
命令が実行されたときのそれぞれの開始カウンタの値と
等しくなるまで、後続の命令実行を抑止することを特徴
とする(4)記載の共有メモリアクセス順序保証機構。
【0062】(6)プロセッサでのロード順序保証命令
とストア順序保証命令の振る舞いを統一し、ロード順序
保証命令あるいはストア順序保証命令が実行されると、
先行するロード命令に対応するリプライデータが全て戻
ることを待った後、先行するストア命令によるストアリ
クエストの後にロード順序保証リクエストあるいはスト
ア順序保証リクエストを主記憶制御装置に対して発行
し、主記憶制御装置において、ストア順序保証リクエス
トにより順序保証フラグのセットおよびリセット処理、
ロード順序保証リクエストにより順序保証フラグのリセ
ット待ち処理を行うことを特徴とする(1)記載の共有
メモリアクセス順序保証機構。
【0063】(7)複数のプロセッサと該プロセッサで
共有されるメモリと共有メモリを制御する主記憶制御装
置からなるマルチプロセッサシステムにおいて、あるプ
ロセッサにおいて(1)記載のストア順序保証命令を実
行し、別のプロセッサにおいて(1)記載のロード順序
保証命令を実行したとき、前記ストア順序保証命令前後
のストア命令による共有メモリへのストア順序は前記ロ
ード順序保証命令前後のロード命令によって見る限り保
証されることを利用した共有メモリアクセス順序保証方
法。
【0064】
【発明の効果】以上述べたように、本発明によれば、ス
トアの順序を保証する方のプロセッサでも、ストア順序
保証命令を実行した後に続けて後続の命令を実行するこ
とが可能となる。また、主記憶制御装置でのリクエスト
抑止は行わず、ロードの順序を保証したいプロセッサの
みがロード順序保証リクエストによって後続の命令実行
を抑止するため、順序保証に無関係な他のプロセッサか
ら見ても、リクエストが待たされるといった影響がな
い。さらに、共有データを受け渡しする際のフラグ領域
として、特別なレジスタでなくメモリ領域を割り当てる
ことが可能であり、ハードウェアの物量も軽減すること
ができる。
【図面の簡単な説明】
【図1】本発明の一実施例におけるマルチプロセッサシ
ステムの構成図である。
【図2】本発明の一実施例におけるストア順序保証リク
エストの流れを表す説明図である。
【図3】本発明の一実施例におけるストア順序制御部の
ブロック図である。
【図4】本発明の一実施例におけるロード順序制御部の
ブロック図である。
【図5】本発明の一実施例におけるキャッシュ制御部の
ブロック図である。
【図6】ストア順序保証命令を実行するプロセッサにお
ける動作のタイミングを示すタイムチャートである。
【図7】ロード順序保証命令を実行するプロセッサにお
ける動作のタイミングを示すタイムチャートである。
【図8】ロード順序制御部における動作のタイミングを
示すタイムチャートである。
【図9】プロセッサ間で共有データの受け渡しを行う手
順を示すフローチャートである。
【図10】共有メモリアクセス順序保証制御を行わない
が、アクセス順序が保証できる例を表すタイムチャート
である。
【図11】共有メモリアクセス順序保証制御を行わない
ことにより、アクセス順序が保証できない例を表すタイ
ムチャートである。
【図12】従来の共有メモリアクセス順序保証制御によ
り、図11の例でアクセス順序が保証される様子を表す
タイムチャートである。
【図13】本発明の一実施例による共有メモリアクセス
順序保証制御により、図11の例でアクセス順序が保証
される様子を表すタイムチャートである。
【符号の説明】
20 プロセッサ 21 記憶制御装置 22 プロセッサ制御部 23 ストア順序制御部 24 ロード順序制御部 25 キャッシュ制御部 26 メモリ制御部 27 メモリバンク 28 主記憶 33 カウンタ 35 完了カウンタ 37 ディレイヤ 41 LOE実行フラグ 44 開始カウンタ 45 完了カウンタ 48 LOE完了フラグ 51 リクエストデコーダ 54 待ち合せ論理 57 セレクタ 101 プロセッサ 102 プロセッサ 120 共有メモリ 124 キャッシュ 125 ストアリクエスト 127 ストアリクエスト 128 ロードリクエスト 130 ロードリクエスト 133 ストア順序保証リクエスト 134 ロード順序保証リクエスト 135 ロード順序保証完了報告 136 順序保証フラグ

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】各々キャッシュを備える複数のプロセッサ
    と、前記複数のプロセッサで共有される共有メモリと、
    前記共有メモリを制御する主記憶制御装置とを有するマ
    ルチプロセッサシステムの共有メモリアクセス順序保証
    方式において、 各プロセッサにおいて実行されるべく用意されたストア
    順序保証命令とロード順序保証命令と、任意のプロセッ
    サが前記ストア順序保証命令を実行した場合、前記スト
    ア順序保証命令を実行したプロセッサから発行されるス
    トア順序保証リクエストに応じてセットされ、前記スト
    ア順序保証命令以前に前記プロセッサから発行された全
    てのストア命令の結果が前記共有メモリおよび他プロセ
    ッサのキャッシュに反映されるとリセットされる、前記
    主記憶制御装置にプロセッサ対応に用意された複数の順
    序保証フラグを有し、任意のプロセッサが前記ロード順
    序保証命令を実行した場合、前記ロード順序保証命令を
    実行したプロセッサの先行するロード命令に対応するリ
    プライデータが全て戻ることを待った後、他プロセッサ
    に対応する前記順序保証フラグを参照し、その時点でセ
    ットされていた順序保証フラグが全てリセットされるま
    で後続の命令実行を抑止することを特徴とする共有メモ
    リアクセス順序保証方式。
  2. 【請求項2】各々キャッシュを備える複数のプロセッサ
    と、前記複数のプロセッサで共有される共有メモリと、
    前記共有メモリを制御する主記憶制御装置とを有するマ
    ルチプロセッサシステムの共有メモリアクセス順序保証
    方式において、 各プロセッサにおいて実行されるべく用意されたストア
    順序保証命令とロード順序保証命令と、任意のプロセッ
    サが前記ストア順序保証命令を実行した場合、前記スト
    ア順序保証命令を実行したプロセッサから発行されるス
    トア順序保証リクエストに応じてインクリメントされ
    る、前記主記憶制御装置にプロセッサ対応に用意された
    開始カウンタと、前記ストア順序保証命令以前に前記プ
    ロセッサから発行された全てのストア命令の結果が前記
    共有メモリおよび他プロセッサのキャッシュに反映され
    るとインクリメントされる、前記主記憶制御装置にプロ
    セッサ対応に用意された完了カウンタとを有し、任意の
    プロセッサが前記ロード順序保証命令を実行した場合、
    前記ロード順序保証命令を実行したプロセッサの先行す
    るロード命令に対応するリプライデータが全て戻ること
    を待った後、他プロセッサに対応する各完了カウンタの
    値が、前記ロード順序保証命令が実行されたときの各々
    対応するまで後続の命令実行を抑止することを特徴とす
    る共有メモリアクセス順序保証方式。
  3. 【請求項3】各々キャッシュを備える複数のプロセッサ
    と、前記複数のプロセッサで共有される共有メモリと、
    前記共有メモリを制御する主記憶制御装置とを有するマ
    ルチプロセッサシステムの共有メモリアクセス順序保証
    方法において、 ストア順序保証命令とロード順序保証命令とを用意し、
    任意のプロセッサが前記ストア順序保証命令を実行した
    場合、前記ストア順序保証命令を実行したプロセッサか
    ら発行されるストア順序保証リクエストに応じて前記主
    記憶制御装置にプロセッサ対応に用意された順序保証フ
    ラグをセットし、前記ストア順序保証命令以前に前記プ
    ロセッサから発行された全てのストア命令の結果が前記
    共有メモリおよび他プロセッサのキャッシュに反映され
    ると前記順序保証フラグをリセットし、任意のプロセッ
    サが前記ロード順序保証命令を実行した場合、前記ロー
    ド順序保証命令を実行したプロセッサの先行するロード
    命令に対応するリプライデータが全て戻ることを待った
    後、他プロセッサに対応する前記順序保証フラグを参照
    し、その時点でセットされていた順序保証フラグが全て
    リセットされるまで後続の命令実行を抑止することを特
    徴とする共有メモリアクセス順序保証方法。
JP10360297A 1998-12-18 1998-12-18 共有メモリアクセス順序保証方式 Pending JP2000181891A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10360297A JP2000181891A (ja) 1998-12-18 1998-12-18 共有メモリアクセス順序保証方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10360297A JP2000181891A (ja) 1998-12-18 1998-12-18 共有メモリアクセス順序保証方式

Publications (1)

Publication Number Publication Date
JP2000181891A true JP2000181891A (ja) 2000-06-30

Family

ID=18468797

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10360297A Pending JP2000181891A (ja) 1998-12-18 1998-12-18 共有メモリアクセス順序保証方式

Country Status (1)

Country Link
JP (1) JP2000181891A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009529748A (ja) * 2006-03-10 2009-08-20 クゥアルコム・インコーポレイテッド メモリ・バリア・バス・コマンドの効率的な実行
JP4779010B2 (ja) * 2006-02-27 2011-09-21 富士通株式会社 バッファリング装置およびバッファリング方法
US8176260B2 (en) 2006-02-24 2012-05-08 Fujitsu Limited Recording controller including snoop unit issuing invalidation request and response unit outputting notification indicating identification information for indentifying recording request and recording control method thereof
WO2013140459A1 (en) 2012-03-23 2013-09-26 Hitachi, Ltd. Method for accessing mirrored shared memories and storage subsystem using method for accessing mirrored shared memories
JP2015041282A (ja) * 2013-08-22 2015-03-02 富士通株式会社 情報処理装置及び情報処理装置の試験方法
US9026744B2 (en) 2005-03-23 2015-05-05 Qualcomm Incorporated Enforcing strongly-ordered requests in a weakly-ordered processing
JP2016024762A (ja) * 2014-07-24 2016-02-08 日本電気株式会社 情報処理装置、メモリ順序保障方法、及び、プログラム
JP2018523235A (ja) * 2015-07-21 2018-08-16 マコム・コネクティビティ・ソリューションズ・エルエルシー Dmb操作を伴うロード/ストア操作を使用するロード獲得/ストア解放命令の実装

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9026744B2 (en) 2005-03-23 2015-05-05 Qualcomm Incorporated Enforcing strongly-ordered requests in a weakly-ordered processing
US8176260B2 (en) 2006-02-24 2012-05-08 Fujitsu Limited Recording controller including snoop unit issuing invalidation request and response unit outputting notification indicating identification information for indentifying recording request and recording control method thereof
JP4779010B2 (ja) * 2006-02-27 2011-09-21 富士通株式会社 バッファリング装置およびバッファリング方法
US8533368B2 (en) 2006-02-27 2013-09-10 Fujitsu Limited Buffering device and buffering method
JP2009529748A (ja) * 2006-03-10 2009-08-20 クゥアルコム・インコーポレイテッド メモリ・バリア・バス・コマンドの効率的な実行
JP2015501957A (ja) * 2012-03-23 2015-01-19 株式会社日立製作所 二重化共有メモリアクセス方法と二重化共有メモリアクセス方法を用いたストレージ装置
US8700856B2 (en) 2012-03-23 2014-04-15 Hitachi, Ltd. Method for accessing mirrored shared memories and storage subsystem using method for accessing mirrored shared memories
WO2013140459A1 (en) 2012-03-23 2013-09-26 Hitachi, Ltd. Method for accessing mirrored shared memories and storage subsystem using method for accessing mirrored shared memories
JP2015041282A (ja) * 2013-08-22 2015-03-02 富士通株式会社 情報処理装置及び情報処理装置の試験方法
JP2016024762A (ja) * 2014-07-24 2016-02-08 日本電気株式会社 情報処理装置、メモリ順序保障方法、及び、プログラム
US9606923B2 (en) 2014-07-24 2017-03-28 Nec Corporation Information processing device with shared memory, memory order guarantee method using counters fence instructions in relation to cache-oriented requests, and recording medium storing program
JP2018523235A (ja) * 2015-07-21 2018-08-16 マコム・コネクティビティ・ソリューションズ・エルエルシー Dmb操作を伴うロード/ストア操作を使用するロード獲得/ストア解放命令の実装
CN110795150A (zh) * 2015-07-21 2020-02-14 安培计算有限责任公司 依dmb操作用加载/存储操作实施加载撷取/存储释放指令

Similar Documents

Publication Publication Date Title
US20240111441A1 (en) On-Chip Atomic Transaction Engine
JP3849951B2 (ja) 主記憶共有型マルチプロセッサ
JP3636871B2 (ja) 並列プロセッサシステム
JPH01503011A (ja) キャッシュマネッジメントシステムを含むデジタルデータ処理システム用汎用プロセッサユニット
US5353416A (en) CPU lock logic for corrected operation with a posted write array
JPH0285960A (ja) 情報処理システム
JPH0950400A (ja) マルチプロセッサシステム
JP2010501951A (ja) 管理モジュール、生産者及び消費者プロセッサ、その構成、共有メモリを介したインタープロセッサ通信方法
JP2000181891A (ja) 共有メモリアクセス順序保証方式
KR930003444B1 (ko) 주기억 참조의 순차화 제어방식
JPH06309230A (ja) バススヌ−プ方法
US6738837B1 (en) Digital system with split transaction memory access
WO1997004392A1 (en) Shared cache memory device
US5913231A (en) Method and system for high speed memory address forwarding mechanism
JPH11167557A (ja) 共有メモリアクセス順序保証方法及びマルチプロセッサシステム
JP2813182B2 (ja) マルチプロセッサコンピュータ複合装置
JP2002024007A (ja) プロセッサシステム
JP6365718B1 (ja) コンピュータシステム、及びメモリコピー方法
JPH1097465A (ja) マルチプロセッサシステム
JP4111645B2 (ja) キャッシュミスした後のメモリバスアクセス制御方式
JP3039391B2 (ja) メモリシステム
JPH0736704A (ja) プログラムダウンロード方式
JP2001184259A (ja) 演算処理装置及び該装置におけるデータ転送方法
JP2856709B2 (ja) バス間結合システム
JPH11212900A (ja) システム制御装置