JP3636871B2 - 並列プロセッサシステム - Google Patents

並列プロセッサシステム Download PDF

Info

Publication number
JP3636871B2
JP3636871B2 JP25062197A JP25062197A JP3636871B2 JP 3636871 B2 JP3636871 B2 JP 3636871B2 JP 25062197 A JP25062197 A JP 25062197A JP 25062197 A JP25062197 A JP 25062197A JP 3636871 B2 JP3636871 B2 JP 3636871B2
Authority
JP
Japan
Prior art keywords
processor
processors
cache
sub
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
JP25062197A
Other languages
English (en)
Other versions
JPH1196124A (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 JP25062197A priority Critical patent/JP3636871B2/ja
Priority to US09/153,872 priority patent/US6263406B1/en
Publication of JPH1196124A publication Critical patent/JPH1196124A/ja
Application granted granted Critical
Publication of JP3636871B2 publication Critical patent/JP3636871B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、各プロセッサが主記憶を共有する並列プロセッサシステムに関し、特に各プロセッサ内のキャッシュと主記憶の一致保証を含むプロセッサ間同期制御を行うのに好適な並列プロセッサシステムに関する。
【0002】
【従来の技術】
主記憶共有型並列プロセッサシステムのプロセッサ間同期制御には、各プロセッサに対して同時に起動をかけることを保証する起動同期制御、各プロセッサでの処理が終結したことを保証する終結同期制御、及び、各プロセッサ間の主記憶アクセス順序を保証するバリア同期制御がある。各プロセッサが主記憶の写しを格納するキャッシュを有し、各プロセッサ間で依存関係のあるデータを処理する場合には、キャッシュと主記憶との一致(キャッシュコヒーレンス)を考慮して、起動、終結、バリア同期制御を行う必要がある。
【0003】
従来、主記憶共有型並列プロセッサシステムとしては、図9に示すように、キャッシュを有するプロセッサと主記憶間をバス結合で結ぶシステムが知られている。このようなシステムにおいて、キャッシュと主記憶の一致保証を行うためには、あるプロセッサの主記憶に対するストアリクエストをバスを介してその他のプロセッサがスヌープし、自キャッシュ内に同一アドレスに対するデータを保持している場合、そのエントリのキャンセルを行う方式がとられている。また、終結やバリア同期制御の高速化のために、複数のプロセッサ間で、これら同期処理通信専用のオープンドレイン型のインターフェースを利用する方式も知られている。オープンドレイン型のインターフェースを用いることにより、複数チップで構成される複数のプロセッサ全てが終結やバリア同期に到達していることを検出し、その同期成立を全てのプロセッサに通知することが可能である。
【0004】
以下、図9のシステムを用いて、従来の主記憶共有型並列プロセッサシステムでの起動、終結、バリア同期の処理を説明する。
【0005】
まず、起動処理について説明する。メインプロセッサ1がサブプロセッサ2〜4に対して起動をかける命令をデコードした場合には、メインプロセッサ1が起動発レジスタ12をセットし、起動専用インターフェース141を介して各サブプロセッサ2〜4に対して起動信号を送り、各サブプロセッサ内の起動受レジスタ22、32、42をセットすることにより、各サブプロセッサ2〜4の起動を行う。
【0006】
この場合、メインプロセッサ1が起動命令以前に発行したストアリクエストに対して、各サブプロセッサ2〜4のキャッシュ20〜40と主記憶130の一致保証をするために、メインプロセッサ1の起動命令の前にSYNC命令を挿入していた。SYNC命令は、メインプロセッサ1内でその命令がデコードされると、SYNC命令以前にデコードされた命令がすべて完了するまでSYNC命令以降の命令のデコードを抑止する。SYNC命令以前の命令がすべて完了するとバス140を介して、すべてのサブプロセッサ2〜4に対してSYNCリクエストを送出する。SYNCリクエストを受け取った各サブプロセッサ2〜4は、メインプロセッサ1内でSYNC命令以前に発行された主記憶130へのストア命令に対して、各サブプロセッサ2〜4のキャッシュと主記憶130の一致制御をするためのキャッシュキャンセルがすべて完了すると、そのことを主記憶制御装置(SC)120に対して通知する。SC120はすべてのサブプロセッサ2〜4からの完了通知を受け取るとメインプロセッサ1に対して一致保証がとれたことを通知し、その通知によりメインプロセッサでのSYNC命令が完了し、次命令にある起動命令がデコードされる。よって起動命令を実行する時にはキャッシュと主記憶の一致保証がなされており、キャッシュと主記憶の一致保証を含む起動制御が達成される。
【0007】
次に、終結処理について説明する。サブプロセッサ2〜4がメインプロセッサ1に対して終結を行う命令をデコードした場合には、各サブプロセッサ2〜4が終結発レジスタ23、33、43をセットし、すべてのサブプロセッサ2〜4が終結発レジスタ23、33、43をセットしたときに、オープンドレイン型の終結インターフェース142を介して、メインプロセッサ1に終結信号が送られ、メインプロセッサ1内の終結受レジスタ13がセットされると終結動作が完了する。
【0008】
この場合も、サブプロセッサ2〜4が終結命令以前に発行したストア命令に対して、メインプロセッサ1のキャッシュ10と主記憶130の一致保証をするために、終結命令の前にSYNC命令が挿入される。サブプロセッサ(2とする)にてSYNC命令がデコードされ、バス140にSYNCリクエストが送出されると、受け取ったメインプロセッサ1と他サブプロセッサ3、4は、SYNCリクエストを送出したサブプロセッサ2がSYNC命令以前に発行したストア命令に対して、メインプロセッサ1と他サブプロセッサ3、4のキャッシュと主記憶130の一致保証をするためのキャッシュキャンセルがすべて完了すると、そのことをSC120に対して通知する。SC120がメインプロセッサ1と他サブプロセッサ3、4からの完了通知を受け取ると、SYNCリクエストを送出したサブプロセッサ2に対して一致保証が取れたことを通知し、その通知によりサブプロセッサ2でのSYNC命令が完了し、次命令にある終結命令を実行し、自サブプロセッサ2の終結発レジスタ23をセットする。他のサブプロセッサ3、4についても同様である。こうして、すべてのサブプロセッサ2〜4でSYNC命令が完了した時点で、メインプロセッサ1のキャッシュと主記憶130の一致は保証され、すべてのサブプロセッサ2〜4が終結発レジスタ23、33、43をセットし、終結専用インターフェース142を介してメインプロセッサ1に対して終結信号を送り、メインプロセッサ1内の終結受レジスタ13をセットすることにより、キャッシュと主記憶の一致保証を含む終結制御が達成される。
【0009】
最後に、バリア同期処理について説明する。一般に、コンパイル時に複数のプロセッサに割り当てる複数のプログラムのある時点以前の命令による主記憶アクセスアドレスと、それ以降の命令による主記憶アクセスアドレスに重なりがないと判定できない場合、一律にキャッシュと主記憶の一致制御(キャッシュコヒーレンス制御)の完了を保証したバリア同期命令が挿入される。すべてのプロセッサ1〜4間でバリア同期命令をデコードした場合には、各プロセッサ1〜4がバリア同期発レジスタ14、24、34、44をセットし、すべてのプロセッサ1〜4がバリア同期発レジスタ14、24、34、44をセットをしたときに、オープンドレイン型のバリア同期専用インターフェース143を介して各プロセッサ1〜4に対してバリア同期成立信号が送られ、各プロセッサ内のバリア同期受レジスタ15、25、35、45がセットされ、バリア同期が完了する。
【0010】
この場合も、各プロセッサ1〜4がバリア同期命令以前に発行したストアリクエストに対して、他プロセッサ1〜4のキャッシュと主記憶130の一致保証をするために、バリア同期命令の前にSYNC命令が挿入される。プロセッサ(メインプロセッサ1とする)にてSYNC命令がデコードされ、バス140にSYNCリクエストが送出されると、受け取った各サブプロセッサ2〜4は、SYNCリクエストを送出したメインプロセッサ1がSYNC命令以前に発行したストアリクエストに対して、サブプロセッサ2〜4のキャッシュと主記憶130の一致保証をするためのキャッシュキャンセルが完了すると、そのことをSC120に対して通知する。SC120がサブプロセッサ2〜4からの完了通知を受け取ると、SYNCリクエストを送出したメインプロセッサ1に対して一致保証が取れたことを通知し、その通知によりメインプロセッサ1でのSYNC命令が完了し、次命令にあるバリア同期命令を実行し、自プロセッサ1のバリア同期発レジスタ14をセットする。サブプロセッサ2〜4についても同様である。こうして、すべてのプロセッサ1〜4でSYNC命令が完了した時点で、すべてのプロセッサ1〜4のキャッシュと主記憶130の一致が保証され、すべてのプロセッサ1〜4がバリア同期発レジスタ14、24、34、44をセットすると、バリア同期専用インターフェース143を介してすべてのプロセッサ1〜4に対してバリア同期成立信号が送られ、同プロセッサ1〜4内のバリア同期受レジスタ15、25、35、45をセットすることにより、キャッシュと主記憶の一致保証を含むバリア同期制御が達成される。
【0011】
【発明が解決しようとする課題】
主記憶共有型並列プロセッサシステムは、図9に示したような複数のプロセッサと主記憶間をバス結合で結ぶシステムが一般的である。このシステムでは1度にひとつのプロセッサしか主記憶に対してアクセスする事ができないので、キャッシュが有効に働き、各プロセッサからの主記憶へのリクエストがそれほど頻繁に起こらないようなシステムには適している。しかし、大規模科学技術計算のようにデータ容量がキャッシュ容量を大きく越えるためにプロセッサからの主記憶アクセスが頻繁に起こるようなシステムには適さない。
【0012】
そこで、図10に示すように、プロセッサ1〜4と主記憶130間を各々SC5〜8を介して独立したパスで結び、それぞれのプロセッサが同時に主記憶に対してアクセスできるようなシステムが考えられている。ところが、このようなシステムで、各プロセッサ間をバスで結び、他プロセッサからのリクエストをスヌープすることによりキャッシュと主記憶間の一致保証を行おうとすると、すべてのプロセッサが同時にメモリリクエストを発行する可能性があるので、プロセッサと主記憶間のスループットを確保するためには、スヌープ専用のアドレス線をプロセッサ数分用意し、同時に複数のリクエストをスヌープできるようにしなければならない。このためにプロセッサの物量が増大してしまうというという問題が生じる。そこですべてのプロセッサ1〜4のキャッシュに保持するデータの主記憶アドレス情報を一元管理するアドレス管理テーブル制御装置(FAA)9を用意する。そして、あるプロセッサから主記憶130へのロードリクエストがあるとそのアドレスをFAA9に登録し、あるプロセッサからストアリクエストが発行された場合には、そのアドレスがFAA9に登録されているプロセッサに対して、キャッシュキャンセルリクエストを発行するという方法をとる。
【0013】
しかしながら、図10に示すシステムにおいて、キャッシュと主記憶の一致を保証する起動、終結、バリア同期動作を行う場合、従来と同様に、起動命令、終結命令あるいはバリア同期命令の前にSYNC命令を挿入する必要があり、SYNC命令の処理と起動、終結、バリア同期命令の処理が逐次的となり、並列処理の性能向上の点で問題がある。
【0014】
以下に、図10に示すシステムにおける起動時の動作を図11のタイムチャートに基づいて説明する。メインプロセッサ1のプログラムはストア命令、SYNC命令、起動命令の順で処理される。
【0015】
まず、メインプロセッサ1でストア命令がデコードされると、ストアリクエストがSC5へ送出され(ステップ201)、SC5では、ストアリクエストの完了が保証されると、FAA9へ参照要求を送出する(ステップ202)。FAA9では、ストアリクエストと同じアドレスのデータをキャッシュに保持しているサブプロセッサ2〜4に対するキャッシュキャンセルのリクエストをSC6〜8に対して送出する(ステップ203)。キャッシュキャンセルリクエストは、SC6〜8から、各サブプロセッサ2〜4へ送出される(ステップ204)。サブプロセッサ2〜4がキャンセルリクエストを受け取り、キャッシュのキャンセルが完了すると、キャッシュと主記憶との一致が保証される(ステップ205)。
【0016】
次に、メインプロセッサ1でストア命令の後にSYNC命令がデコードされると、以前に発行されている命令がすべて完了した時点でSYNCリクエストをSC5に対して送出する(ステップ210)。SYNCリクエストは、SC5からFAA9へ送出され(ステップ211)、キャンセルリクエストの送出(ステップ203)が完了した時点で、FAA9からSC6〜8へ送出される(ステップ212)。このSYNCリクエストは、SC6〜8からサブプロセッサ2〜4へ送出され(ステップ213)、各サブプロセッサ2〜4ではキャッシュキャンセルの完了をもって(ステップ205)、SC6〜8へSYNC完了通知を送出する(ステップ214)。SYNC完了通知はSC6〜8からFAA9へ通知され(ステップ215)、FAA9は、すべてのサブプロセッサ2〜4からのSYNC完了通知を受けとった時点でSC5に対してSYNC完了通知を送る(ステップ216)。SYNC完了通知はSC5からメインプロセッサ1へ送出され(ステップ217)、メインプロセッサ1では、このSYNC完了通知によりSYNC命令を完了し、起動命令をデコードする。起動命令のデコードにより、図9で示した起動発レジスタ12がセットされると、起動専用インターフェースを介し、起動信号がサブプロセッサ2〜4へ送出され(ステップ218)、サブプロセッサ内の起動受レジスタ22、32、42がセットされる(ステップ219)。
【0017】
以上、起動処理について説明したが、終結、バリア同期においても同様であり、キャッシュと主記憶の一致保証のためのSYNC命令の処理と起動、終結、バリア同期命令の処理が、逐次的に処理される。このことが、並列処理性能を向上せしめる上での問題となる。
【0018】
本発明の目的は、起動、終結、バリア同期命令に対して、SCでキャッシュと主記憶の一致保証をすることによって、高速なキャッシュと主記憶との一致保証を可能にする並列プロセッサシステムを提供することにある。
【0019】
本発明の他の目的は、起動、終結、バリア同期を同一の回路で実現し、メインプロセッサとサブプロセッサが同じ動作をすることをプログラム的に保証することにより、メインプロセッサとサブプロセッサを区別しないハードウエアが実現できる並列プロセッサシステムを提供することにある。
【0020】
本発明の他の目的は、キャッシュと主記憶との一致保証を行わない同期インターフェースを追加することにより、キャッシュと主記憶との一致保証を必要としない処理の開始を早めることができる並列プロセッサシステムを提供することにある。
【0022】
【課題を解決するための手段】
本発明は、キャッシュを有する複数のプロセッサと、それぞれのプロセッサに接続された複数の主記憶制御装置(SC)と、複数のプロセッサにより共有される主記憶と、すべてのプロセッサのキャッシュに保持するデータの主記憶アドレス情報を一元管理するアドレス管理テーブル(FAA)を持つ主記憶共有型並列プロセッサシステムにおいて、高速な同期インターフェースを実現するために、メインプロセッサがサブプロセッサに対して起動をかける命令(起動命令)をデコードした場合に、メインプロセッサが起動レジスタをセットし、メインプロセッサに接続されたSCに対して起動信号を送る手段と、起動信号を受け取ったメインプロセッサに接続されたSCが起動命令以前にメインプロセッサにて発行されたストア命令によるFAAのチェック及び必要なキャッシュキャンセルのメインプロセッサ以外のプロセッサに接続されたSCへの発行が完了したことを検出し、サブプロセッサに接続されたSCに対して通知する手段と、その通知を受け取った各サブプロセッサに接続されたSCが、メインプロセッサから起動命令以前に発行されたサブプロセッサへのキャッシュキャンセルをすべて当該SCに接続されたサブプロセッサに発行したことを検出した時点で接続されたサブプロセッサに対して起動をかける手段を有する、キャッシュと主記憶の一致保証を含む起動インターフェースを備えている。
【0023】
また、各サブプロセッサが内部の処理を終結したことを示す命令(終結命令)をデコードした場合に、各サブプロセッサが終結レジスタをセットし、各サブプロセッサに接続されたSCに対して終結信号を送る手段と、終結信号を受け取った各サブプロセッサに接続されたSCが終結命令以前に当該SCに接続されたサブプロセッサにて発行されたストア命令によるFAAのチェック及び必要なキャッシュキャンセルの当該SCに接続されたサブプロセッサ以外のプロセッサに接続されたSCへの発行が完了したことを検出する手段と、すべてのサブプロセッサに接続されたSCでストア命令によるFAAのチェック及び必要なキャッシュキャンセルの当該SCに接続されたサブプロセッサ以外のプロセッサに接続されたSCへの発行が完了したことを検出した場合に、それをメインプロセッサに接続されたSCに対して通知する手段と、その通知を受け取ったメインプロセッサに接続されたSCが、各サブプロセッサから終結命令以前に発行されたメインプロセッサへのキャッシュキャンセルをすべてプロセッサに発行したことを検出した時点でメインプロセッサに対して終結を通知する手段を有する、キャッシュと主記憶の一致保証を含む終結インターフェースを備えている。
【0024】
また、すべてのプロセッサ間で同一アドレスの主記憶データアクセスの順序性を保証するために同期をとる命令(バリア同期)を各プロセッサがデコードした場合に、各プロセッサがバリア同期レジスタをセットし、各SCに対してバリア同期信号を送る手段と、バリア同期信号を受け取った各SCがバリア同期命令以前に当該SCに接続されたプロセッサにて発行されたストア命令によるFAAのチェック及び必要なキャッシュキャンセルの当該SCに接続されたプロセッサ以外のプロセッサに接続されたSCへの発行が完了したことを検出する手段と、すべてのSCでストア命令によるFAAのチェック及び必要なキャッシュキャンセルの当該SCに接続されたプロセッサ以外のプロセッサに接続されたSCへの発行が完了したことを検出した場合に、それを各SCに対して通知する手段と、該通知を受け取った各SCが、受け付けたキャッシュキャンセルをすべて当該SCに接続されたプロセッサに発行した時点で接続されたプロセッサにバリア同期成立を通知する手段を有するキャッシュと主記憶の一致保証を含む同期インターフェースを備えている。
【0025】
また、起動、終結において、メインプロセッサ用、サブプロセッサ用に特別なハードウエアを用意する必要がないように、起動を行うときには、メインプロセッサが起動の通知を行うと同様にサブプロセッサも起動の通知を行い、終結を行うときには、サブプロセッサが終結の通知を行うと同様にメインプロセッサも終結の通知を行ない、起動、終結をバリア同期と同じ動作で実現する。
【0026】
さらに、キャッシュと主記憶との一致保証を含む同期インターフェースと、一致保証を含まない同期インターフェースを用いることにより、キャッシュと主記憶の一致保証を必要としない処理を、一致保証をした同期が完了する前に開始する。
【0030】
【発明の実施の形態】
以下、本発明の実施の形態としての各実施例を詳細に説明する。
【0031】
〈実施例1〉
図1は本実施例における起動インターフェースの構成を示すブロック図、図2は終結インターフェースの構成を示すブロック図、図3はバリア同期インターフェースの構成を示すブロック図である。なお、図1乃至図3では、便宜上、主記憶制御装置(SC)5〜8に共通に接続される主記憶は省略してある。
【0032】
図1〜3において、メインプロセッサ1はデコーダ11が起動命令をデコードすると起動発レジスタ12をセットし、バリア同期命令をデコードするとバリア同期発レジスタ14をセットする。終結受レジスタ13は、サブプロセッサ2〜4の処理が終結するとセットされ、バリア同期受レジスタ15はバリア同期がとれるとセットされる。サブプロセッサ2〜4は、デコーダ21,31,41が終結命令をデコードすると終結発レジスタ23,33,43をセットし、バリア同期命令をデコードするとバリア同期発レジスタ24,34,44をセットする。起動受レジスタ22、32、42はメインプロセッサ1から起動がかけられるとセットされ、バリア同期受レジスタ25,35,45はバリア同期がとれるとセットされる。
【0033】
アドレス管理テーブル制御装置(FAA)9はアドレス管理テーブル91を持ち、すべてのプロセッサ1〜4のキャッシュ10〜40に保持するデータの主記憶アドレス情報を一元管理する。キャンセル発行回路92は、主記憶へのストアリクエストに対してアドレス管理テーブル91を参照し、必要ならばSC5〜8に対してキャッシュキャンセルリクエストの発行を行う。キャンセル完通知回路93〜96は、キャンセル発行回路92を監視し、自プロセッサからの主記憶へのリクエストに対する他プロセッサへのキャッシュキャンセルリクエストの発行が完了したことを検出してSC5〜8に通知する。
【0034】
SC5〜8は発完了保証回路51,61,71,81と受完了保証回路52,62,72,82を有する。発完了保証回路51,61,71,81は自プロセッサが発行したストアリクエストに対する他プロセッサへのキャッシュキャンセルリクエストがFAA9からSC5〜8に送られたことを保証し、受完了保証回路52、62、72、82はキャッシュキャンセルリクエストがSC5〜8からプロセッサ1〜4へ送られたことを保証する。オープンドレインパス55は、発完了保証回路51,61,71,81の発完了通知のアンドをとって、受完了保証回路51,61,71,81に伝えるパスである。
【0035】
図4は、SC5〜8の発完了保証回路51,61,71,81の具体的構成を示すブロック図である。図4において、同期レジスタ100は自プロセッサが同期命令(起動、終結、バリア同期)をデコードしたことを示す。セレクタ104は、自プロセッサがストアリクエストを発行するとインクリメンタ101によりインクリメントされた値を、FAA9からキャンセル完通知を受け取るとデクリメンタ102によりデクリメントされた値を、それ以外はそのままの値をセレクトする。発カウントレジスタ103はセレクトされた値を保持する。ゼロ判定回路105は発カウントレジスタ103の値が0になったことを判定する。発完了判定回路106は、同期レジスタ100がセットされ、かつ、発カウントレジスタ103の値が0になったことを判定する。
【0036】
図5は、SC5〜8の受完了保証回路52,62,72,82の具体的構成を示すブロック図である。図5において、発完了レジスタ110は発完了保証が完了したことを示す。セレクタ114は、FAA9から自SC5にキャンセルリクエストが送られるとインクリメンタ111によりインクリメントされた値を、自SCから自プロセッサへキャンセルリクエストが送られるとデクリメンタ112によりデクリメントされた値を、それ以外はそのままの値をセレクトする。受カウントレジスタ113はセレクトされた値を保持する。ゼロ判定回路115は受カウントレジスタ113の値が0になったことを判定する。受完了判定回路116は、発完了レジスタ110がセットされ、かつ受カウントレジスタ113の値が0になったことを判定する。
【0037】
まず、図1の構成により起動処理の動作を説明する。なお、図12にこの場合のタイムチャートを示す。
【0038】
メインプロセッサ1が起動命令をデコードすると、起動発レジスタ12をセットする。起動発レジスタ12の出力信号は、SC5内の発完了保証回路51に送出され(ステップ230)、同期レジスタ100をセットする。発完了保証回路51では、メインプロセッサ1でストアリクエストが発行される度に発カウントレジスタ103をインクリメントしていくので、起動命令より前に発行されたストアリクエスト(ステップ201)によって発カウントレジスタ103はすでにカウントアップされている。SC5からFAA9へストアリクエストに対する参照要求が送出され(ステップ202)、FAA9のキャンセル完通知回路93からSC5へ、メインプロセッサ1が発行したストアリクエストに対するキャッシュキャンセルの発行完了が通知されると、発カウントレジスタ103をデクリメントしていく。発カウントレジスタ103の値が0になると、発行したストアリクエストに対するキャッシュキャンセルリクエストがすべて発行された(ステップ203)ことを意味するので、これをゼロ判定回路115により判定する。CS5の発完了保証回路51は、メインプロセッサ1により起動処理が通知され、かつ、キャッシュキャンセルリクエストがすべて発行されたことを発完了判定回路106により判定すると、それをパス(同期インターフェースパス)54を介して各サブプロセッサ2〜4に接続されたSC6〜8内の受完了保証回路62,72,82に通知し(ステップ231)、その発完了レジスタ110をセットする。受完了保証回路62,72,82では、FAA9のキャンセル発行回路92からSC6〜8にキャッシュキャンセルリクエストが発行される度に受カウントレジスタ113をインクリメントしていくので、発完了レジスタ110がセットされたときにはすでにカウントアップされており、受け取ったキャンセルリクエストをプロセッサ2〜4に送る度に受カウントレジスタ113をデクリメントしていく。受カウントレジスタ113の値が0になると、キャッシュキャンセルリクエストをすべてプロセッサに発行した(ステップ204)ことを意味するので、これをゼロ判定回路115により判定する。SC6〜8の受完了保証回路62,72,82は、SC5の発完了保証回路51から発完了通知を受け取り、かつ、キャッシュキャンセルリクエストをすべてプロセッサ2〜4へ発行したことを受完了判定回路116により判定すると、各サブプロセッサ2〜4へ起動通知をし(ステップ232)、起動受レジスタ22,32,42をセットする(ステップ233)。各サブプロセッサ2〜4は、起動受レジスタ22,32,42がセットされると与えられた処理を開始する。
【0039】
先の図11と図12のタイムチャートを比較して明らかな如く、本実施例では、起動命令に対して、SCでキャッシュと主記憶の一致保証をすることによって、キャッシュと主記憶との一致保証を含む高速な同期制御が実現する。
【0040】
次に、図2の構成により終結処理の動作を説明する。各サブプロセッサ2〜4が終結命令をデコードすると、終結発レジスタ23,33,43をセットする。終結発レジスタ23,33,43の出力信号は、それぞれSC6〜8内の発完了保証回路61,71,81に送られ同期レジスタ100をセットする。発完了保証回路61,71,81では、サブプロセッサ2〜4でストアリクエストが発行される度に発カウントレジスタ103をインクリメントしていくので、終結命令より前に発行されたストアリクエストによって発カウントレジスタ103はすでにカウントアップされており、FAA9のキャンセル完通知回路94,95,96から、発行したストアリクエストに対するキャッシュキャンセルの発行完了が通知される度に発カウントレジスタ103をデクリメントしていく。発カウントレジスタ103の値が0になると、発行したストアリクエストに対するキャッシュキャンセルリクエストがすべて発行されたことを意味するので、これをゼロ判定回路115により判定する。SC6〜8の発完了保証回路61,71,81は、サブプロセッサ2〜4から処理終結が通知され、かつキャッシュキャンセルリクエストがすべて発行されたことを発完了判定回路106により判定すると、発完了通知信号をSC間に張られているオープンドレインパス55に送りつける。オープンドレインパス55は、すべてのサブプロセッサ2〜4に接続されたSC6〜8からの発完了通知信号を受けるとオンになり、メインプロセッサ1に接続されたSC5の受完了保証回路52に通知し、その発完了レジスタ110をセットする。受完了保証回路52では、FAA9のキャンセル発行回路92からSC5にキャッシュキャンセルリクエストが発行される度に受カウントレジスタ113をインクリメントしていくので、発完了レジスタ110がセットされたときにはすでにカウントアップされており、受け取ったキャンセルリクエストをプロセッサ1に送る度に受カウントレジスタ113をデクリメントしていく。受カウントレジスタ113の値が0になると、キャッシュキャンセルリクエストをすべてプロセッサ1に発行したことを意味するので、これをゼロ判定回路115により判定する。SC5の受完了保証回路52は、SC6〜8からの発完了通知を受け取り、かつ、キャッシュキャンセルリクエストをすべてプロセッサ1へ発行したことを受完了判定回路116により判定すると、メインプロセッサ1へ終結通知をし、終結受レジスタ13をセットする。メインプロセッサ1は、終結受レジスタ13がセットされると、次に行う処理を開始する。
【0041】
次に、図3の構成によりバリア同期を行うときの動作を説明する。各プロセッサ1〜4がバリア同期命令をデコードすると、バリア同期発レジスタ13,23,33,43をセットする。バリア同期発レジスタ13,23,33,43の出力信号は、それぞれSC5〜8内の発完了保証回路51,61,71,81に送られ同期レジスタ100をセットする。発完了保証回路51,61,71,81では、プロセッサ1〜4でストアリクエストが発行される度に発カウントレジスタ103をインクリメントしていくので、バリア同期命令より前に発行されたストアリクエストによって発カウントレジスタ103はすでにカウントアップされており、FAA9のキャンセル完通知回路93,94,95,96から、発行したストアリクエストに対するキャッシュキャンセルの発行完了が通知される度に発カウントレジスタ103をデクリメントしていく。発カウントレジスタ103の値が0になると、発行したストアリクエストに対するキャッシュキャンセルリクエストがすべて発行されたことを意味するので、これをゼロ判定回路115により判定する。SC1〜4の発完了保証回路51,61,71,81はプロセッサ1〜4からバリア同期が通知され、かつ、キャッシュキャンセルリクエストがすべて発行されたことを発完了判定回路106により判定すると、発完了通知信号をSC間に張られているオープンドレインパス55に送りつける。オープンドレインパス55は、すべてのSC5〜8からの発完了通知信号を受けるとオンになり、各SC5〜8の受完了保証回路52,62,72,82に通知し、その発完了レジスタ110をセットする。受完了保証回路52,62,72,82では、FAA9のキャンセル発行回路92からSC5〜8にキャッシュキャンセルリクエストが発行される度に受カウントレジスタ113をインクリメントしていくので、発完了レジスタ110がセットされたときにはすでにカウントアップされており、受け取ったキャンセルリクエストをプロセッサ1〜4に送る度に受カウントレジスタ113をデクリメントしていく。受カウントレジスタ113の値が0になると、キャッシュキャンセルリクエストをすべてプロセッサに発行したことを意味するので、これをゼロ判定回路115により判定する。受完了保証回路52,62,72,82は、すべてのSC5〜8からの発完了通知を受け取り、かつ、キャッシュキャンセルリクエストをすべてプロセッサ1〜4へ発行したことを受完了判定回路116により判定すると、プロセッサ1〜4へバリア同期成立信号を送り、バリア同期受レジスタ15,25,35,45をセットする。各プロセッサ1〜4は、バリア同期受レジスタ15,25,35,45がセットされると次に行う処理を開始する。
【0042】
〈実施例2〉
図3では、バリア同期のケースのみについて説明を行ったが、同一の構成で起動、終結、各ケースの同期制御を行うことも可能である。これを図6を用いて説明する。図6は、図3の構成を起動、終結、バリア同期の各ケースの同期制御に適用するために一般化して示したものである。
【0043】
まず、起動を行う場合、図1の動作では、メインプロセッサ1のみが起動命令をデコードし起動発レジスタ12をセットしていたが、図6の実施形態において起動を行う場合にはサブプロセッサ2〜4のプログラム中にも起動命令を挿入し、各サブプロセッサ2〜4が起動命令をデコードしたときに同期発レジスタ26,36,46をセットするようにする。こうして、各プロセッサ1が起動命令をデコードすると、同期発レジスタ16,26,36,46がセットされる。これ以降は、上述の図3で説明したバリア同期制御と同様の処理が行われ、各プロセッサ1〜4の同期受レジスタ17,27,37,47がセットされると、各プロセッサ1〜4は起動がかけられたと判断し、処理を開始する。
【0044】
次に、終結を行う場合、図2の動作では、サブプロセッサ2〜4のみが終結命令をデコードし終結発レジスタ23,33,43をセットしていたが、図6の実施形態において終結を行う場合にはメインプロセッサ1のプログラム中にも終結命令を挿入し、メインプロセッサ1が終結命令をデコードしたときに同期発レジスタ16をセットするようにする。こうして、各プロセッサ1〜4が終結命令をデコードすると、同期発レジスタ16,26,36,46がセットされる。これ以降は、上述の図3で説明したバリア同期制御と同様の処理が行われ、各プロセッサ1〜4の同期受レジスタ17,27,37,47がセットされると、各プロセッサ1〜4は処理が終結したと判断し、以降の処理を開始する。
【0045】
〈実施例3〉
各プロセッサのキャッシュ上のデータのアクセスを伴わない処理を行う場合には、主記憶とキャッシュの一致保証は不要である。このような処理では、各プロセッサのキャッシュと主記憶との一致保証を行わないインターフェースを追加することにより、一致保証を必要としない処理を早く開始することができ、効率を上げることができる。
【0046】
図7は、この場合の構成例を示したもので、図6の構成に保証無同期受レジスタ18,28,38,48を追加するとともに、同期発レジスタ16,26,36,46と該保証無同期受レジスタ18,28,38,48とをオープンドレインパス56で接続したものである。なお、保証有同期受レジスタ17,27,37,47は図6の同期受レジスタの呼び名を変えただけである。
【0047】
以下に、図7の動作を図13のタイムチャートに基づいて説明する。なお、図13は図12との比較のため、メインプロセッサ1の同期命令(起動、終結、バリア同期命令)に着目しているが、サブプロセッサ2〜4の同期命令についても同様である。
【0048】
まず、各プロセッサ1〜4が同期命令(起動、終結、バリア同期命令)をデコードし、同期発レジスタ16,26,36,46をセットすると、その出力信号はSC5〜8に送られると共に(ステップ330)、オープンドレインパス56に送られる。オープンドレインパス56はすべての同期発レジスタ16,26,36,46がセットされるとオンになり、各プロセッサ1〜4に対して、キャッシュ10〜40と主記憶の一致保証なしの同期通知を行い、各プロセッサ1〜4の保証無同期受レジスタ18,28,38,48をセットする(ステップ340)。保証無同期受レジスタ18,28,38,48がセットされると、各プロセッサ1〜4ではキャッシュ10〜40と主記憶との一致保証を必要としない処理を開始する。その後、図10と同様の動作で各プロセッサ1〜4に対してキャッシュと主記憶の一致保証をした同期通知がなされ、保証有同期受レジスタ17,27,37,47がセットされ(ステップ341)、一致保証を必要とする処理が開始される。
【0049】
なお、図7では、図6の構成にキャッシュと主記憶との一致保証を行わないインターフェースを追加する場合を示したが、同様に、図1乃至図3の起動・終結・バリア同期インターフェースの各構成にキャッシュと主記憶との一致保証を行わないインターフェースを追加することも可能である。
【0050】
〈実施例4〉
一般にコンパイラは、コンパイル時に複数のプロセッサに割当てる複数のプログラムのある時点以前の命令による主記憶アクセスアドレスと、それ以降の命令による主記憶アクセスアドレスに重なりがないと判定できない場合には、一律にキャッシュと主記憶の一致保証制御(キャッシュコヒーレンス制御)の完了を保証したバリア同期命令を挿入する。このコンパイル時にデータ依存関係がないことを保証できないため、キャッシュコヒーレンス制御の完了を保証したバリア同期命令を挿入した場合でも、プログラム実行時にはその依存関係が判定可能になる場合がある。例えば、DOループにおいて実行時に配列サイズが決定するようなケースが挙げられる。この様に、動的にデータ依存関係がないと判定できるようなケースに、常にキャッシュコヒーレンス制御の完了を保証したバリア同期制御を実行すると、本来不要な待ち合わせ時間を費やし、高速処理の妨げとなる。
【0051】
本実施例は、動的にデータ依存関係がないと判定できるような場合、キャッシュコヒーレンス制御の完了を考慮せずにバリア同期を成立させることにより、余計な待ち合わせ時間を削減し、高速な並列処理を実現するものである。
【0052】
図8に、本実施例の概略構成図を示す。各々キャッシュを備える複数のプロセッサ1〜4は、主記憶制御装置(SC)5を介し、主記憶(図示せず)を共有してアクセスするように接続される。アドレス管理テーブル制御装置(FAA)9は、すべてのプロセッサ1〜4のキャッシュ10〜40に保持するデータの主記憶アドレス情報を一元管理する。なお、CS5は、これまでの実施例のように各プロセッサごとに設けることでもよい。
【0053】
各プロセッサ1〜4は、バリア同期発レジスタ14,24,44およびバリア同期受レジスタ15,25,45を備える。これは、図3と同様である。ここで、メインプロセッサ1は主に並列化できない処理を実行し、サブプロセッサ2,4は、メインプロセッサ1より並列化できる処理を割当てられ、並列処理を実行するものとする。メインプロセッサ1は、キャッシュコヒーレンス制御要否判定部19を備える。該キャッシュコヒーレンス制御要否判定部19は、キャッシュコヒーレンス不要レジスタ19に加えてキャッシュコヒーレンス制御要否判定キュー192を備え、キャッシュコヒーレンス不要レジスタ191の値をキューイングすることができる。SC5は、キャッシュコヒーレンス制御部510、キャッシュコヒーレンスありバリア同期成立回路521とキャッシュコヒーレンスなしバリア同期成立回路522とOR回路523を備えるバリア同期成立制御部520、及び、全プロセッサ1〜4のバリア同期信号を同期化する同期回路530を備える。キャッシュコヒーレンス制御部510は、図3の発完了保証回路と受完保証回路を一緒にしたものと基本的に同じである。オープンドレインパス57は
、各プロセッサ1〜4のバリア同期発レジスタ14,24,44が全てセットされたときオンになり、バリア同期信号をSC5に伝達する。
【0054】
本実施例の動作として、まず、図14に示すような2つのDOループを含むプログラムを実行する場合のバリア同期を説明する。
【0055】
図14に示す2つのDOループは、隣接する2つのDOループであって、共に配列Aをアクセスする。ここで、ループDO10の配列A(i)のアクセス範囲J〜Kと、ループDO20の配列A(i)のアクセス範囲L〜Mは、プログラム実行時に確定し、DO10の配列A(i)とDO20の配列A(i)に重なりがあるか否かを動的に判定可能とする。
【0056】
図15に、各プロセッサ1,2,4で実行するバリア同期に係る命令列の概略を示す。メインプロセッサ1は、キャッシュコヒーレンス制御要否判定ルーチン、バリア同期命令、バリア同期成立確認の順に実行し、サブプロセッサ2,4は、ストア命令A(i)、バリア同期命令、バリア同期成立確認、ロード命令A
(i)の順に実行する。
【0057】
メインプロセッサ1内のキャッシュコヒーレンス不要レジスタ191は、初期値が“0”であり、キャッシュコヒーレンス制御要否判定ルーチンによりキャッシュコヒーレンス制御要と判定した時は“0”、不要と判定した時は“1”をセットする。各サブプロセッサ2,4からストア命令が発行されると、FAA9は、キャッシキャンセルリクエストを発行し、キャッシュキャンセル処理の終了を確認すると、キャンセル完を通知する。全プロセッサ1,2,4がバリア同期命令を実行すると、各バリア同期発レジスタ14,24,44の値がすべて“1”にセットされる。これにより、オープンドレインパス57がオンとなり、SC5の同期回路504を介してバリア同期成立制御部500に“1”が伝達される。
【0058】
キャッシュコヒーレンス制御要の場合、キャッシュコヒーレンス制御要否判定部19の出力信号は“0”である。この時、キャッシュコヒーレンスなしバリア同期成立回路522は機能せず、キャッシュコヒーレンスありバリア同期成立回路221のみが機能する。キャッシュコヒーレンスありバリア同期成立回路521は、同期回路504の出力が“1”のとき、キャッシュコヒーレンス制御部510からキャッシュセル処理の終了通知を受け取った時点で、OR回路503を介して、バリア同期成立信号を全プロセッサ1,2,4に報告する。各プロセッサ1,2,4は該バリア同期成立信号を受信すると、バリア同期受レジスタ15,25,45を“1”にセットする。同時に、バリア同期発レジスタ14,24,44を“0”にリセットする。
【0059】
一方、キャッシュコヒーレンス制御不要の場合、キャッシュコヒーレンス制御要否判定部19の出力信号は“1”である。この場合、キャッシュコヒーレンスなしバリア同期成立回路502が機能し、全てのプロセッサ1,2,4がバリア同期に到達したことを示す同期回路504の出力が“1”となった時点で、OR回路503を介して、ただちにバリア同期成立信号を全プロセッサ1,2,4に報告する。これにより、各プロセッサ1,2,4はバリア同期受レジスタ15,25,45を“1”にセットし、同時に、バリア同期発レジスタ14,25,45の値を“0”にリセットする。さらに、メインプロセッサ1では、キャッシュコヒーレンス不要レジスタ191の値を“0”にリセットする。
【0060】
次に、本実施例の動作として、図16に示すような4つのDOループを含むプログラムを実行する場合のバリア同期を説明する。
【0061】
図16に示す4つのDOループは、隣接する4つのDOループである。ここで、ループDO30の配列A(i)のアクセス範囲J〜Kと、ループDO40の配列A(i)のアクセス範囲L0〜M0はプログラム実行時に確定し、DO30の配列A(i)と、DO40の配列A(i)に重なりがあるか否かは動的に判定可能とする。同様に、DO40とDO50の配列B(i)、DO50とDO60の配列C(i)に関しても、実行時にアクセス範囲が確定し、重なりがあるか否かは動的に判定可能とする。
【0062】
図17に、各プロセッサ1,2,4で実行するバリア同期に係る命令列の概略を示す。メインプロセッサ1は、キャッシュコヒーレンス制御要否判定ルーチン(0)〜(2)、バリア同期命令(0)、バリア同期成立確認(0)、バリア同期命令(1)、バリア同期成立確認(1)、バリア同期命令(2)、バリア同期成立確認(2)の順に実行し、サブプロセッサ2,4はストア命令A(i)、バリア同期命令(0)、バリア同期成立確認(0)、ロード命令A(i)、ストア命令B(i)、バリア同期命令(1)、バリア同期成立確認(1)、ロード命令B(i)、ストア命令C(i)、バリア同期命令(2)、バリア同期成立確認(2)、ロード命令C(i)の順に実行する。
【0063】
キャッシュコヒーレンス判定ルーチンは、判定(0)、判定(1)、判定(2)の順に行われ、この判定結果は順に、キャッシュコヒーレンス制御要否判定部19にてキャッシュコヒーレンス不要レジスタ191を介してキャッシュコヒーレンス制御要否判定キュー192にキューイングされる。
【0064】
バリア同期命令(0)〜(2)の実行時、キャッシュコヒーレンス制御要否判定キュー192にキューイングされているキャッシュコヒーレンス制御要否判定値を順に使用して、キャッシュコヒーレンス制御の要否の情報がバリア同期成立制御部500に伝達される。この情報により、図14のケースと同様に、バリア同期成立制御部500ではキャッシュコヒーレンス制御要もしくはキャッシュコヒーレンス制御不要のバリア同期成立制御を行う。メインプロセッサ1では、バリア同期成立動作ごとに、使用したキャッシュコヒーレンス要否判定キュー192の内容を順に“0”にリセットする。
【0065】
本実施例において、キャッシュコヒーレンス制御要否判定を行わずにバリア同期を実行する場合には、キャッシュコヒーレンス制御要否判定部19の出力をキャッシュコヒーレンス制御要を示す値に固定とすることで、必砂キャッシュコヒーレンス制御の完了を保証したバリア同期命令を実行することが可能となる。
【0066】
なお、本実施例4は、先の実施例3と組み合せて使用することも可能である。即ち、まず、実施例3を適用して、各プロセッサでキャッシュと主記憶との一致保証を必要としない処理を開始し、その後、実施例4を適用して、動的にキャッシュと主記憶の一致保証制御の要/不要を場合わけし、いずれかを実行する。
【0067】
【発明の効果】
以上述べたように、本発明では、キャッシュを有する複数のプロセッサが主記憶を共有する並列プロセッサシステムにおいて、起動、終結、バリア同期命令を処理する場合、SCでキャッシュと主記憶との一致保証を含んで処理することによって、キャッシュと主記憶の一致保証を必要とする同期処理に対し、高速な同期インターフェースが実現できる。また、起動、終結、バリア同期を同一の構成で実現しメインプロセッサとサブプロセッサが同じ動作をすることをプログラム的に保証することにより、メインプロセッサとサブプロセッサを区別しないハードウエアが実現できる。さらに、キャッシュと主記憶との一致保証を行わない同期インターフェースを追加することにより、キャッシュと主記憶との一致保証を必要としない処理の開始を早めることができる。
【図面の簡単な説明】
【図1】本発明における起動インターフェースの構成例を示すブロック図である。
【図2】本発明における終結インターフェースの構成例を示すブロック図である。
【図3】本発明におけるバリア同期インターフェースの構成例を示すブロック図である。
【図4】本発明における発完了保証回路の構成例を示すブロック図である。
【図5】本発明における受完了保証回路の構成例を示すブロック図である。
【図6】本発明における起動、終結、バリア同期を同一構成で実現する同期インターフェースの構成例を示すブロック図である。
【図7】本発明におけるキャッシュと主記憶の一致保証を含む同期インターフェースと一致保証を含まない同期インターフェースを備える構成例を示す図である。
【図8】本発明における動的にデータ依存関係がないと判定できるケースを検出してバリア同期制御を実施する構成例を示す図である。
【図9】従来のバスインターフェースによる同期制御方式の構成例を示すブロック図である。
【図10】スイッチング型のSCを用いた並列プロセッサシステムの構成例を示すブロック図である。
【図11】従来技術による起動処理のタイムチャートである。
【図12】図1の本発明による起動処理のタイムチャートである。
【図13】図7の本発明による同期処理のタイムチャートである。
【図14】図8の本発明によるバリア同期制御を説明する命令列の一例である。
【図15】図14の命令列の実行をプロセッサ別に記述した図である。
【図16】図8の本発明によるバリア同期制御を説明する命令列の他の一例である。
【図17】図16の命令列の実行をプロセッサ別に記述した図である。
【符号の説明】
1,2,3,4 プロセッサ
5,6,7,8 主記憶制御装置(SC)
12 起動発レジスタ
22,32,42 起動受レジスタ
13 終結受レジスタ
23,33,43 終結発レジスタ
14,24,34,44 バリア同期発レジスタ
15,25,35,45 バリア同期受レジスタ
16,26,36,46 同期発レジスタ
17,27,37,47 保証有同期受レジスタ
18,28,38,48 保証無同期受レジスタ
19 キャッシュコヒーレンス制御要否判定部
51,61,71,81 発完了保証回路
52,62,72,82 受完了保証回路
510 キャッシュコヒーレンス制御部
520 バリア同期成立制御部
521 キャッシュコヒーレンスありバリア同期成立回路
522 キャッシュコヒーレンスなしバリア同期成立回路
530 同期回路

Claims (5)

  1. キャッシュを有する複数のプロセッサと、それぞれのプロセッサに接続された複数の主記憶制御装置(SC)と、複数のプロセッサにより共有される主記憶と、すべてのプロセッサのキャッシュに保持するデータの主記憶アドレス情報を一元管理するアドレス管理テーブル制御装置(FAA)を具備する並列プロセッサシステムにおいて、
    メインプロセッサがサブプロセッサに対して起動をかける命令(起動命令)を実行すると、メインプロセッサに接続されたSCに対して起動信号を送出する手段を有し
    前記起動信号を受け取ったメインプロセッサに接続されたSCが、起動命令以前にメインプロセッサにて発行されたストア命令によるFAAのチェック及び必要なキャッシュキャンセルのメインプロセッサ以外のプロセッサに接続されたSCへの発行が完了したことを検出し、各サブプロセッサに接続されたSCに対して通知する手段を有し
    前記通知を受け取った各サブプロセッサに接続されたSCが、メインプロセッサから起動命令以前に発行されたサブプロセッサへのキャッシュキャンセルをすべて当該SCに接続されたサブプロセッサに発行したことを検出した時点で該接続されたサブプロセッサに対して起動をかける手段有し、
    メインプロセッサと各サブプロセッサ間でキャッシュと主記憶の一致保証を含む起動同期制御を行うことを特徴とする並列プロセッサシステム。
  2. キャッシュを有する複数のプロセッサと、それぞれのプロセッサに接続された複数の主記憶制御装置(SC)と、複数のプロセッサにより共有される主記憶と、すべてのプロセッサのキャッシュに保持するデータの主記憶アドレス情報を一元管理するアドレス管理テーブル制御装置(FAA)を具備する並列プロセッサシステムにおいて、
    各サブプロセッサが内部の処理を終結したことを示す命令(終結命令)を実行すると、各サブプロセッサに接続されたSCに対して終結信号を送出する手段を有し
    前記終結信号を受け取った各サブプロセッサに接続されたSCが、終結命令以前に当該SCに接続されたサブプロセッサにて発行されたストア命令によるFAAのチェック及び必要なキャッシュキャンセルの当該SCに接続されたサブプロセッサ以外のプロセッサに接続されたSCへの発行が完了したことを検出する手段を有し
    すべてのサブプロセッサに接続されたSCで前記ストア命令によるFAAのチェック及び必要なキャッシュキャンセルの当該SCに接続されたサブプロセッサ以外のプロセッサに接続されたSCへの発行が完了したことを検出した場合に、それをメインプロセッサに接続されたSCに対して通知する手段を有し
    前記通知を受け取ったメインプロセッサに接続されたSCが、各サブプロセッサから終結命令以前に発行されたメインプロセッサへのキャッシュキャンセルをすべてメインプロセッサに発行したことを検出した時点でメインプロセッサに対して終結を通知する手段有し、
    メインプロセッサと各サブプロセッサ間でキャッシュと主記憶の一致保証を含む終結同期制御を行うことを特徴とする並列プロセッサシステム。
  3. キャッシュを有する複数のプロセッサと、それぞれのプロセッサに接続された複数の主記憶制御装置(SC)と、複数のプロセッサにより共有される主記憶と、すべてのプロセッサのキャッシュに保持するデータの主記憶アドレス情報を一元管理するアドレス管理テーブル制御装置(FAA)を具備する並列プロセッサシステムにおいて、
    各プロセッサがすべてのプロセッサ間で同一アドレスの主記憶アクセスの順序性を保証するために同期をとる命令(バリア同期命令)を実行すると、各プロセッサに接続されたSCに対してバリア同期信号を送る手段を有し
    前記バリア同期信号を受け取った各SCが、バリア同期命令以前に当該SCに接続されたプロセッサにて発行されたストア命令によるFAAのチェック及び必要なキャッシュキャンセルの当該SCに接続されたプロセッサ以外のプロセッサに接続されたSCへの発行が完了したことを検出する手段を有し
    すべてのSCで前記ストア命令によるFAAのチェック及び必要なキャッシュキャンセルの当該SCに接続されたプロセッサ以外のプロセッサに接続されたSCへの発行が完了したことを検出した場合に、それを各SCに対して通知する手段を有し
    前記通知を受け取った各SCが、受け付けたキャッシュキャンセルをすべて当該SCに接続されたプロセッサに発行した時点で接続されたプロセッサにバリア同期成立を通知する手段有し、
    キャッシュと主記憶の一致保証を含むバリア同期制御を行うことを特徴とする並列プロセッサシステム。
  4. キャッシュを有する複数のプロセッサと、それぞれのプロセッサに接続された複数の主記憶制御装置(SC)と、複数のプロセッサにより共有される主記憶と、すべてのプロセッサのキャッシュに保持するデータの主記憶アドレス情報を一元管理するアドレス管理テーブル制御装置(FAA)を具備する並列プロセッサシステムにおいて、
    各プロセッサ間で起動、終結、バリア同期の各ケースの同期制御を行うために、すべてのプロセッサが起動命令、終結命令、バリア同期命令(以下、同期命令で総称する)を発行し、
    各プロセッサが同期命令を実行すると、各プロセッサに接続されたSCに対して同期信号を送出する手段を有し
    前記同期信号を受け取った各SCが、同期命令以前に当該SCに接続されたプロセッサにて発行されたストア命令によるFAAのチェック及び必要なキャッシュキャンセルの当該SCに接続されたプロセッサ以外のプロセッサに接続されたSCへの発行が完了したことを検出する手段を有し
    すべてのSCで前記ストア命令によるFAAのチェック及び必要なキャッシュキャンセルの当該SCに接続されたプロセッサ以外のプロセッサに接続されたSCへの発行が完了したことを検出した場合に、それを各SCに対して通知する手段を有し
    前記通知を受け取った各SCが、受け付けたキャッシュキャンセルをすべて当該SCに接続されたプロセッサに発行した時点で接続されたプロセッサに同期成立を通知する手段を有し
    起動、終結、バリア同期の各ケースのキャッシュと主記憶の一致保証を含む同期制御を行うことを特徴とする並列プロセッサシステム。
  5. 請求項1乃至4のいずれかに記載の並列プロセッサシステムにおいて、すべてのプロセッサが接続されたSCへ同期信号(起動、終結、バリア同期信号)を送出したことを検出して、すべてのプロセッサに対して同期成立を通知する手段を有し、キャッシュと主記憶との一致保証有の同期制御とともに一致保証無しの同期制御を行うことを特徴とする並列プロセッサシステム。
JP25062197A 1997-09-16 1997-09-16 並列プロセッサシステム Expired - Fee Related JP3636871B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP25062197A JP3636871B2 (ja) 1997-09-16 1997-09-16 並列プロセッサシステム
US09/153,872 US6263406B1 (en) 1997-09-16 1998-09-16 Parallel processor synchronization and coherency control method and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP25062197A JP3636871B2 (ja) 1997-09-16 1997-09-16 並列プロセッサシステム

Publications (2)

Publication Number Publication Date
JPH1196124A JPH1196124A (ja) 1999-04-09
JP3636871B2 true JP3636871B2 (ja) 2005-04-06

Family

ID=17210588

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25062197A Expired - Fee Related JP3636871B2 (ja) 1997-09-16 1997-09-16 並列プロセッサシステム

Country Status (2)

Country Link
US (1) US6263406B1 (ja)
JP (1) JP3636871B2 (ja)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132529A (ja) * 1998-10-23 2000-05-12 Sony Corp 並列処理装置、並列処理方法および記録媒体
JP3858492B2 (ja) 1998-12-28 2006-12-13 株式会社日立製作所 マルチプロセッサシステム
US20140325175A1 (en) * 2013-04-29 2014-10-30 Pact Xpp Technologies Ag Pipeline configuration protocol and configuration unit communication
AU5805300A (en) 1999-06-10 2001-01-02 Pact Informationstechnologie Gmbh Sequence partitioning in cell structures
US6725340B1 (en) * 2000-06-06 2004-04-20 International Business Machines Corporation Mechanism for folding storage barrier operations in a multiprocessor system
US6728873B1 (en) * 2000-06-06 2004-04-27 International Business Machines Corporation System and method for providing multiprocessor speculation within a speculative branch path
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US9411532B2 (en) 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
KR20020096252A (ko) * 2001-06-19 2002-12-31 인터내셔널 비지네스 머신즈 코포레이션 프로세서에서의 명령 실행 방법, 컴퓨터 시스템에사용하기 위한 프로세서 및 데이터 처리 시스템
US10031733B2 (en) 2001-06-20 2018-07-24 Scientia Sol Mentis Ag Method for processing data
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US7480697B2 (en) * 2002-05-28 2009-01-20 International Business Machines Corporation Method and apparatus using attached hardware subsystem to communicate between attached hosts
AU2003289844A1 (en) 2002-09-06 2004-05-13 Pact Xpp Technologies Ag Reconfigurable sequencer structure
CA2419340A1 (en) * 2003-02-20 2004-08-20 Ibm Canada Limited - Ibm Canada Limitee Software barrier synchronization
JP4372043B2 (ja) * 2005-05-12 2009-11-25 株式会社ソニー・コンピュータエンタテインメント コマンド実行制御装置、コマンド実行指示装置およびコマンド実行制御方法
US7770170B2 (en) * 2005-07-12 2010-08-03 Microsoft Corporation Blocking local sense synchronization barrier
US7587555B2 (en) * 2005-11-10 2009-09-08 Hewlett-Packard Development Company, L.P. Program thread synchronization
US7555607B2 (en) * 2005-11-10 2009-06-30 Hewlett-Packard Development Company, L.P. Program thread syncronization for instruction cachelines
JP2007148709A (ja) * 2005-11-28 2007-06-14 Hitachi Ltd プロセッサシステム
JP2008097498A (ja) * 2006-10-16 2008-04-24 Olympus Corp プロセッシング・エレメント、コントロール・ユニット、及びこれらを備える処理システム、分散処理方法
JP2009176116A (ja) * 2008-01-25 2009-08-06 Univ Waseda マルチプロセッサシステムおよびマルチプロセッサシステムの同期方法
US8386664B2 (en) * 2008-05-22 2013-02-26 International Business Machines Corporation Reducing runtime coherency checking with global data flow analysis
US8281295B2 (en) * 2008-05-23 2012-10-02 International Business Machines Corporation Computer analysis and runtime coherency checking
JP2010033555A (ja) * 2008-06-30 2010-02-12 Olympus Corp コントロール・ユニット、分散処理システム及び分散処理方法
US8285670B2 (en) * 2008-07-22 2012-10-09 International Business Machines Corporation Dynamically maintaining coherency within live ranges of direct buffers
JP4631948B2 (ja) 2008-08-13 2011-02-16 日本電気株式会社 情報処理装置及び順序保証方式
GB2474446A (en) * 2009-10-13 2011-04-20 Advanced Risc Mach Ltd Barrier requests to maintain transaction order in an interconnect with multiple paths
JP5279690B2 (ja) * 2009-12-04 2013-09-04 三菱電機株式会社 列車内映像表示システムおよび方法
US9069893B2 (en) * 2011-03-23 2015-06-30 International Business Machines Corporation Automatic verification of determinism for parallel programs
WO2013084314A1 (ja) * 2011-12-07 2013-06-13 富士通株式会社 演算処理装置及び演算処理装置の制御方法
WO2013084315A1 (ja) * 2011-12-07 2013-06-13 富士通株式会社 演算処理装置、及び、演算処理装置の制御方法
US9092272B2 (en) 2011-12-08 2015-07-28 International Business Machines Corporation Preparing parallel tasks to use a synchronization register
JP5549694B2 (ja) * 2012-02-23 2014-07-16 日本電気株式会社 超並列計算機、同期方法、同期プログラム
JP6074932B2 (ja) * 2012-07-19 2017-02-08 富士通株式会社 演算処理装置及び演算処理方法
JP5811245B1 (ja) * 2014-07-24 2015-11-11 日本電気株式会社 情報処理装置、メモリ順序保障方法、及び、プログラム
US10318355B2 (en) * 2017-01-24 2019-06-11 Oracle International Corporation Distributed graph processing system featuring interactive remote control mechanism including task cancellation
US11461130B2 (en) 2020-05-26 2022-10-04 Oracle International Corporation Methodology for fast and seamless task cancelation and error handling in distributed processing of large graph data
GB2597078B (en) * 2020-07-14 2022-07-13 Graphcore Ltd Communication between host and accelerator over network

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
JPH10149285A (ja) * 1996-11-18 1998-06-02 Hitachi Ltd 命令実行制御方法および情報処理装置
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

Also Published As

Publication number Publication date
US6263406B1 (en) 2001-07-17
JPH1196124A (ja) 1999-04-09

Similar Documents

Publication Publication Date Title
JP3636871B2 (ja) 並列プロセッサシステム
JPH10149285A (ja) 命令実行制御方法および情報処理装置
JPH0679307B2 (ja) コプロセッサの並行動作制御方式
CN115481058A (zh) 内存原子操作指令的执行方法、装置、访问模块及系统
CN115061803A (zh) 一种多核处理系统及其任务调度方法、芯片、存储介质
JPH0594317A (ja) 仮想計算機の入出力割り込み処理方式
JPH0564825B2 (ja)
JP2002024195A (ja) 並列処理装置、及び、並列処理方法
JP2000181891A (ja) 共有メモリアクセス順序保証方式
JP2004334863A (ja) 順番のある(in−order)キューをドレインする(drain)システムおよび方法
JPS623366A (ja) マルチプロセツサシステム
JP3006676B2 (ja) マルチプロセッサ
JP5163128B2 (ja) 共有メモリ型マルチプロセッサにおける手続の呼び出し方法、手続の呼び出しプログラム、記録媒体、およびマルチプロセッサ
US20090019259A1 (en) Multiprocessing method and multiprocessor system
JPS6227837A (ja) 主記憶アクセス方式
JP2018147126A (ja) 並列プロセス実行方法
JP2795312B2 (ja) プロセス間通信スケジューリング方式
JP3375505B2 (ja) 同期制御方法および主記憶共有型並列プロセッサ
JPH04296963A (ja) マルチプロセッサシステム
JP2559165B2 (ja) マルチプロセッサシステム
JP2776261B2 (ja) 計算装置の同期方法
JPS6145348A (ja) バス優先権制御方式
JP2856709B2 (ja) バス間結合システム
JPS62288949A (ja) シリアライズ命令制御装置
JPS6228866A (ja) 主記憶アクセス方式

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041005

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041012

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041213

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: 20041228

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050106

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees