JPWO2006057208A1 - マルチプロセッサシステム及びそれにおける排他制御方法 - Google Patents

マルチプロセッサシステム及びそれにおける排他制御方法 Download PDF

Info

Publication number
JPWO2006057208A1
JPWO2006057208A1 JP2006547760A JP2006547760A JPWO2006057208A1 JP WO2006057208 A1 JPWO2006057208 A1 JP WO2006057208A1 JP 2006547760 A JP2006547760 A JP 2006547760A JP 2006547760 A JP2006547760 A JP 2006547760A JP WO2006057208 A1 JPWO2006057208 A1 JP WO2006057208A1
Authority
JP
Japan
Prior art keywords
lock
variable
read
signal
register
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
Application number
JP2006547760A
Other languages
English (en)
Other versions
JP4852427B2 (ja
Inventor
真 上田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2006547760A priority Critical patent/JP4852427B2/ja
Publication of JPWO2006057208A1 publication Critical patent/JPWO2006057208A1/ja
Application granted granted Critical
Publication of JP4852427B2 publication Critical patent/JP4852427B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4208Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
    • G06F13/4217Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus with synchronous protocol
    • 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/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

【課題】ロック変数のアトミックリードモディファイライト機能を有する高価なシステムと同等の機能を簡単な構成で実現可能なマルチプロセッサシステムを提供する。【解決手段】あるCPUが読出信号READをアサートすると、ロックレジスタ18からロック変数LOCKが読み出されるとともに、ロックレジスタ18にロック状態「1」のロック変数LOCKが書き込まれる。読み出されたロック変数LOCKが非ロック状態「0」の場合、そのCPUはロックを獲得できる。ロック変数LOCKが読み出されるとともに、ロック状態「1」のメインロック変数LOCKが書き込まれるので、その直後に、別のCPUが読出信号READをアサートしても、ロックレジスタ18からロック状態「1」のロック変数LOCKが読み出されるので、その別のCPUはロックを獲得できない。

Description

本発明は、マルチプロセッサシステム及びそれにおける排他制御方法に関し、さらに詳しくは、排他制御を実行する前にロックを獲得し、排他制御を実行した後にロックを解放するマルチプロセッサシステム及びそれにおける排他制御方法に関する。
従来、マルチスレッドプログラミングの実行環境として、MESI(Modified Exclusive Shared Invalid)のようなキャッシュコヒーレンシプロトコルと、不可分(アトミック)転送をサポートするバスとが必要である。しかし、これらを実装したCPU(Central Processing Unit)及びバスは高価である。
今日、安価なCPUであっても、Linuxサポートの必要性からTLB(Translation Look-aside Buffer)を持っている。このようなCPUを用いた場合、アトミック転送をサポートするバスさえ実装すれば、マルチプロセッサシステムを構築することができる。この場合、バススヌープのハードウェアサポートがなくても、NUMA(Non-Uniform Memory Access)と同じOS(Operating System)を利用すれば、TLBのサポートを使ってキャッシュコヒーレンシを維持することは可能である。
ここで、アトミック転送をサポートするバスが必要なのは、CPU間の排他制御を可能にするためである。たとえば各CPUのTLBを排他的に書き換えるためには、ロック変数をアトミックにリードモディファイライトする必要がある。しかし、ユニプロセッサを意図して設計された安価な組み込みプロセッサ及びそのバス規約は、アトミックリードモディファイライトをサポートしていない。
以下、アトミックリードモディファイライトの必要性を図5を参照して説明する。ここでは、ロック変数lockをメモリ上にアロケートしている。
まずCPUはメモリからロック変数lockを読み出し(S1)、lock=1か否かを判断する(S2)。lock=1、つまりロック変数がロック状態になっている限り(S2でYES)、CPUは繰り返しロック変数lockを読み出す(S1)。一方、lock=0、つまりロック変数が非ロック状態の場合(S2でNO)、CPUはlock=1に書き換え、これにより排他制御に必要なロックを獲得する(S3)。ロックを獲得した後、CPUは所定の排他制御を実行する(S4)。排他制御を完了した後、CPUはlock=0に書き換え、これによりロックを解放する(S5)。
しかし、lock=0を読み出してからlock=1に書き換えるまでの間に、他のCPUがlock=0を読み出すと、ロックを獲得できると誤認する可能性がある。これを防止するためには、上述したロック変数の読出動作S1と書込動作S3とをアトミックに実行しなければならない。
また、上述したアトミックリードモディファイライトをCPUに実行させるためのプログラムは、アトミック転送に必要な専用命令を使うため、Cのような高級言語ではなく、アセンブリ言語で記述しなければならない。
米国特許第5175829号明細書(下記の特許文献1)は、アトミック転送をCPU及びローカルバスに実装した装置を開示している。この種のマルチプロセッサシステムは、バスバンド幅を削減するために共有バス方式を採用し、MESIプロトコルを用いることによってロックを獲得できないCPUが無駄なリードアクセスを繰り返さないようにする。
米国特許第5175829号明細書(下記の特許文献2)は、ロックを管理するためのスワップレジスタをCPUに内蔵した装置を開示している。この装置は、スワップレジスタに格納したロック変数をメモリに格納したロック変数で時々スワップして更新し、ロックを獲得するためのリードアクセスはこのスワップレジスタに対して行われる。この装置も、高価でかつ複雑なアトミックリードモディファイライト機能の存在を前提としている。
米国特許第5666515号明細書(下記の特許文献3)は、リトライ信号を送ることによってロックをかけ、バスバンド幅の飽和を軽減した装置を開示している。この装置も、高価でかつ複雑なアトミックリードモディファイライト機能の存在を前提としている。
米国特許第5175829号明細書 米国特許第5535365号明細書 米国特許第5666515号明細書
本発明の目的は、ロック変数のアトミックリードモディファイライト機能を有する高価なシステムと同等の機能を簡単な構成で実現可能なマルチプロセッサシステム及びそれにおける排他制御方法を提供することである。
課題を解決するための手段及び発明の効果
本発明によるマルチプロセッサシステムは、複数のプロセッサと、ロックレジスタとを備える。プロセッサの各々は、排他制御を実行する前にロックを獲得するために読出信号をアサートし、かつ排他制御を実行した後にロックを解放するために書込信号をアサートする。ロックレジスタは、複数のプロセッサに接続される。ロックレジスタは、保持手段と、ロック変数出力手段と、ロック変数入力手段とを含む。保持手段は、ロック状態又は非ロック状態の第1のロック変数を保持する。ロック変数出力手段は、プロセッサの1つが読出信号をアサートすると、それ以前に保持手段に保持されていた第1のロック変数を出力する。ロック変数入力手段は、プロセッサの1つが読出信号をアサートすると、ロック状態の第1のロック変数を保持手段に設定し、プロセッサの1つが書込信号をアサートすると、非ロック状態の第1のロック変数を保持手段に設定する。
上記マルチプロセッサシステムでは、あるプロセッサが読出信号をアサートすると、ロックレジスタから第1のロック変数が読み出されるとともに、ロックレジスタにロック状態の第1のロック変数が書き込まれる。読み出された第1のロック変数が非ロック状態の場合、そのプロセッサはロックを獲得することができる。第1のロック変数が読み出されるとともに、ロック状態の第1のロック変数が書き込まれるので、その直後に、別のプロセッサが読出信号をアサートしても、ロックレジスタからロック状態の第1のロック変数が読み出されるため、その別のプロセッサはロックを獲得することができない。このように、本発明によるマルチプロセッサシステムは、ロックレジスタを設けるだけで、ロック変数のアトミックリードモディファイライト機能を有する高価なシステムと同等の機能を実現することができる。
好ましくは、ロックレジスタはさらに、バスリトライ手段を含む。バスリトライ手段は、第1のロック変数がロック状態に設定されている間にプロセッサの1つが読出信号をアサートすると、プロセッサに供給するためのバスリトライ信号を発生する。
この場合、プロセッサはバスリトライ信号を受け、これによりロックの獲得が不可能なことを認識するので、むやみに読出信号をアサートしないようにすることができる。
好ましくは、マルチプロセッサシステムはさらに、第1のバスと、メモリと、2のバスとを備える。第1のバスは、複数のプロセッサに共通に接続される。メモリは、第1のバスに接続される。第2のバスは、複数のプロセッサに共通に接続される。ロックレジスタは第2のバスに接続される。
この場合、あるプロセッサがロックを獲得しているために、別のプロセッサがそのロックの解放を待っているとき、その別のプロセッサは第2のバス経由で読出信号をアサートしてロックレジスタから第1のロック変数を読み出し、その一方で、ロックを獲得しているプロセッサは第1のバス経由でメモリにアクセスする。したがって、ロックを獲得しているプロセッサからメモリへのアクセスは妨げられない。
さらに好ましくは、メモリは1又は2以上の第2のロック変数を記憶する。プロセッサの各々は、読出信号をアサートしてロックレジスタから第1のロック変数を読み出し、読み出した第1のロック変数が非ロック状態の場合、メモリから第2のロック変数を読み出し、読み出した第2のロック変数が非ロック状態の場合、第2のロック変数をロック状態に書き換える。
この場合、プロセッサはまずロックレジスタから第1のロック変数を読み出してロックを獲得し、続いてメモリから第2のロック変数を読み出してロックを獲得する。このようにロックを階層的に獲得するようにしているので、多数のロック変数を設定することができる。
また、本発明による排他制御方法は、複数のプロセッサと、複数のプロセッサに接続されたロック状態又は非ロック状態の第1のロック変数を保持するロックレジスタとを備えたマルチプロセッサにおける排他制御方法であって、プロセッサの1つがロックを獲得するために読出信号をアサートすると、ロックレジスタから第1のロック変数を読み出すとともに、ロック状態の第1のロック変数をロックレジスタに書き込むステップと、読み出した第1のロック変数が非ロック状態の場合、当該1つのプロセッサによって排他制御を実行する排他制御ステップと、排他制御を実行した後、当該1つのプロセッサがロックを解放するために書込信号をアサートすると、非ロック状態の第1のロック変数をロックレジスタに書き込むステップとを含む。
上記排他制御方法では、あるプロセッサが読出信号をアサートすると、ロックレジスタから第1のロック変数が読み出されるとともに、ロックレジスタにロック状態の第1のロック変数が書き込まれる。読み出された第1のロック変数が非ロック状態の場合、そのプロセッサはロックを獲得することができる。第1のロック変数が読み出されるとともに、ロック状態の第1のロック変数が書き込まれるので、その直後に、別のプロセッサが読出信号をアサートすると、ロックレジスタからロック状態の第1のロック変数が読み出される。そのため、その別のプロセッサはロックを獲得することができない。このように、本発明による排他制御方法は、ロックレジスタを設けるだけで、ロック変数のアトミックリードモディファイライト機能を有する高価なシステムと同等の機能を実現することができる。
好ましくは、排他制御方法はさらに、第1のロック変数がロック状態の間にプロセッサの1つが読出信号をアサートすると、プロセッサに供給するためのバスリトライ信号を発生するステップを含む。
この場合、プロセッサはバスリトライ信号を受け、これによりロックの獲得が不可能なことを認識するので、むやみに読出信号をアサートしないようにすることができる。
好ましくは、マルチプロセッサシステムはさらに、1又は2以上の第2のロック変数を記憶するメモリを備える。上記排他制御ステップは、読み出した第1のロック変数が非ロック状態の場合、メモリから第2のロック変数を読み出すステップと、読み出した第2のロック変数が非ロック状態の場合、第2のロック変数をロック状態に書き換えるステップと、第2のロック変数をロック状態に書き換えた後、排他制御を実行するステップとを含む。
この場合、プロセッサはまずロックレジスタから第1のロック変数を読み出してロックを獲得し、続いてメモリから第2のロック変数を読み出してロックを獲得する。このようにロックを階層的に獲得するようにしているので、多数のロック変数を設定することができる。
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当部分には同一符号を付してその説明は繰り返さない。
図1を参照して、本発明の実施の形態によるマルチプロセッサシステム10は、CPU11及び12と、バスマスタ13及び14と、クロスバーバス15及び16と、システムメモリ17と、ロックレジスタ18とを備える。
CPU11及び12と、バスマスタ13及び14とは、クロスバーバス15に共通に接続される。CPU11及び12と、バスマスタ13及び14とはまた、もう1つのクロスバーバス16にも共通に接続される。システムメモリ17はクロスバーバス15に接続され、ロックレジスタ18はクロスバーバス16に接続される。CPU11又は12はクロスバーバス15経由でシステムメモリ17にアクセス可能であり、クロスバーバス16経由でロックレジスタ18にもアクセス可能である。バスマスタ13又は14はクロスバーバス15経由でシステムメモリ17にアクセス可能であり、クロスバーバス16経由でロックレジスタ18にもアクセス可能である。
ロックレジスタ18は、排他制御に必要なロックを管理するためのレジスタである。CPU11又は12は、排他制御を実行する前に読出信号をアサートしてロックレジスタ18からロックを獲得し、排他制御を実行した後に書込信号をアサートしてそのロックを解放する。ロックレジスタ18はメモリ上にマップされるが、システムメモリ17とは異なるアドレスが割り当てられる。
図2を参照して、ロックレジスタ18は、CPU11又は12から読出信号READ及び書込信号WRITEを受け付け、読出データバス信号READdatabus及びバスリトライ信号BUSRetryを出力する。ロックレジスタ18は、遅延フリップフロップ(DFF)19及び20と、OR回路21と、AND回路22及び23と、マルチプレクサ24とを備える。OR回路21は、読出信号READ及びDFF19の出力信号を受ける。AND回路22は、OR回路21の出力信号、書込信号WRITEの論理反転信号及びリセット信号RESETの論理反転信号を受ける。DFF19は、クロック信号CLKに同期してAND回路22の出力信号をラッチする。読出信号READがH(論理ハイ)レベル「1」の場合、マルチプレクサ24はDFF19の出力信号の出力信号を選択して出力する。一方、読出信号READがL(論理ロー)レベル「0」の場合、マルチプレクサ24はDFF20の出力信号を選択して出力する。DFF20は、クロック信号CLKに同期してマルチプレクサ24の出力信号をラッチし、読出データバス信号READdatabusとして出力する。AND回路23は、読出信号READ及びDFF19の出力信号を受け、バスリトライ信号BUSRetryを発生する。
DFF19は、ロック状態「1」又は非ロック状態「0」のメインロック変数LOCKを保持する機能を有する。OR回路21及びAND回路22は、CPU11又は12が読出信号READをアサートすると、ロック状態「1」のメインロック変数LOCKをDFF19に設定し、CPU11又は12が書込信号WRITEをアサートすると、非ロック状態「0」のメインロック変数LOCKをDFF19に設定する機能を有する。マルチプレクサ24及びDFF20は、CPU11又は12が読出信号READをアサートすると、それ以前にDFF19に保持されていたメインロック変数LOCKを出力する機能を有する。AND回路23は、メインロック変数LOCKがロック状態「1」に設定されている間にCPU11又は12が読出信号READをアサートすると、CPU11及び12に供給するためのバスリトライ信号BUSRetryを発生する機能を有する。
また、システムメモリ17には、1又は2以上のサブロック変数lockを記憶させている。CPU11又は12はスヌープキャッシュを持たないので、サブロック変数lockをアロケートするためのメモリ領域は非キャッシュ領域に設定する。
次に、ロックレジスタ18の動作を図3を参照して説明する。
リセット信号RESETがHレベルにアサートされると、クロック信号CLKが立ち上がる時刻t1で、ロックレジスタ18は初期化される。具体的には、AND回路22は、読出信号READ及び書込信号WRITEに関係なく、Lレベルの信号を出力し、DFF19はこれをラッチする。つまり、DFF19は非ロック状態「0」のメインロック変数LOCKを保持する。
次に、1つのCPU11又は12がロックが獲得可能か否かを確認するために、読出信号READをHレベルにアサートすると、AND回路22の出力信号がHレベルになる。DFF19は、クロック信号CLKが立ち上がる時刻t2で、そのHレベルの信号をラッチして出力する。DFF19の出力信号はOR回路21に与えられるので、読出信号READがLレベルに戻った後も、DFF19はHレベルの信号をラッチし続け、これによりロック状態「1」のメインロック変数LOCKを保持する。
読出信号READがLレベルに戻ると、マルチプレクサ24はDFF20の出力信号を選択し、DFF20はLレベルの信号をラッチし続けるので、読出データバス信号READdatabusはLレベルのまま維持される。したがって、当該CPU11又は12はロックが獲得可能と認識する。
ロックが獲得可能と認識した直後に、他のCPU12又は11がロックが獲得可能か否かを確認するために、読出信号READをHレベルにアサートしたとしても、DFF19の出力信号は既にHレベルになっているので、AND回路23はバスリトライ信号BUSRetryをHレベルにアサートする。したがって、当該他のCPUはロックが獲得不可能と認識する。また、読出信号READがHレベルにアサートされ、マルチプレクサ24がDFF19の出力信号を選択するので、クロック信号CLKが立ち上がる時刻t3で、DFF20がHレベルの信号をラッチし、これにより読出データバス信号READdatabusがHレベルにアサートされる。
次に、当該CPU11又は12がロックを解放するために、書込信号WRITEをHレベルにアサートすると、AND回路22の出力信号がLレベルになる。DFF19は、クロック信号CLKが立ち上がる時刻t4で、そのLレベルの信号をラッチして出力する。これにより、メインロック変数LOCKは非ロック状態「0」にクリアされる。
その後、再びCPU11又は12がロックが獲得可能か否かを確認するために、読出信号READをHレベルにアサートすると、クロック信号CLKが立ち上げる時刻t5で、DFF19は前回と同様にHレベルの信号をラッチして出力する。このとき、マルチプレクサ24はLレベルの信号を選択するので、DFF20はこれをラッチして出力する。したがって、読出データバス信号READdatabusはLレベルに戻り、CPU11又は12はロックが獲得可能と認識する。
次に、このロックレジスタ18を用いたマルチプロセッサシステム10全体の動作を図4を参照して説明する。
CPU11又は12は、ロックレジスタ18からメインロック変数LOCKを読み出し(S11)、LOCK=1か否か、つまりメインロック変数LOCKがロック状態「1」か否かを判断する(S12)。非ロック状態「0」の場合(S12でNO)、CPU11又は12は、システムメモリ17からサブロック変数lockを読み出し(S13)、lock=1か否か、つまりサブロック変数lockがロック状態「1」か否かを判断する(S14)。非ロック状態「0」の場合(S14でNO)、CPU11又は12は、「1」をサブロック変数lockに書き込み、これによりロックを獲得する(S15)。ロックの獲得後、CPU11又は12は、所定の排他制御を実行する(S16)。排他制御の完了後、CPU11又は12は「0」をサブロック変数lockに書き込み、これによりロックを解放する(S17)。
以上のように本発明の実施の形態によれば、CPU11又は12が読出信号READをアサートすると、ロックレジスタ18からメインロック変数LOCKが読み出され、かつ直ちにロックレジスタ18にロック状態「1」のメインロック変数LOCKが書き込まれるので、その直後に、別のCPU12又は11が読出信号READをアサートしても、ロックレジスタ18からロック状態「1」のメインロック変数LOCKが読み出される。そのため、別のCPU12又は11はロックを獲得することができない。したがって、ロック変数のアトミックリードモディファイライト機能を有する高価なマルチプロセッサシステムと同等の機能をロックレジスタ18を設けるだけで実現することができる。
また、メインロック変数LOCKがロック状態「1」に設定されている間にCPU11又は12が読出信号READをアサートすると、バスリトライ信号BUSRetryが発生し、CPU11及び12はこのバスリトライ信号BUSRetryを受けてロックの獲得が不可能なことを認識するので、むやみに読出信号READをアサートしないようにすることができる。
また、ロックの獲得又は解放のためのCPU11又は12からロックレジスタ18へのアクセスは専用のクロスバーバス16経由で行われるので、CPU11又は12がロックを獲得しているために、別のCPU12又は11がそのロックの解放を待っているとき、別のCPU12又は11はクロスバーバス16経由で読出信号READをアサートしてロックレジスタ18からメインロック変数LOCKを読み出し、その一方で、ロックを獲得しているCPU11又は12はクロスバーバス15経由でシステムメモリ17にアクセスする。したがって、ロックを獲得しているCPU11又は12からシステムメモリ17へのアクセスは妨げられない。
また、1又は2以上のサブロック変数lockをシステムメモリ17に記憶しておき、CPU11又は12はまずロックレジスタ18からメインロック変数LOCKを読み出してロックを獲得し、続いてシステムメモリ17からサブロック変数lockを読み出してロックを獲得するというように、ロックを階層的に獲得しているので、多数のロック変数lockを設定することができる。
以上、本発明の実施の形態を説明したが、上述した実施の形態は本発明を実施するための例示に過ぎない。よって、本発明は上述した実施の形態に限定されることなく、その趣旨を逸脱しない範囲内で上述した実施の形態を適宜変形して実施することが可能である。
本発明の実施の形態によるマルチプロセッサシステムの全体構成を示す機能ブロック図である。 図1中のロックレジスタの構成を示す回路図である。 図2に示したロックレジスタの動作を示すタイミング図である。 図1に示したマルチプロセッサシステムによるロック獲得動作を示すフロー図である。 従来のマルチプロセッサによるロック獲得動作を示すフロー図である。
符号の説明
10 マルチプロセッサシステム
11,12 CPU
15,16 クロスバーバス
17 システムメモリ
18 ロックレジスタ
LOCK メインロック変数
lock サブロック変数
READ 読出信号
WRITE 書込信号
BUSRetry バスリトライ信号
READdatabus 読出データバス信号


【発明の名称】マルチプロセッサシステム
【0001】
【技術分野】
[0001]
本発明は、マルチプロセッサシステムに関し、さらに詳しくは、排他制御を実行する前にロックを獲得し、排他制御を実行した後にロックを解放するマルチプロセッサシステムに関する。
【背景技術】
[0002]
従来、マルチスレッドプログラミングの実行環境として、MESI(Modified Exclusive Shared Invalid)のようなキャッシュコヒーレンシプロトコルと、不可分(アトミック)転送をサポートするバスとが必要である。しかし、これらを実装したCPU(Central Processing Unit)及びバスは高価である。
[0003]
今日、安価なCPUであっても、Linuxサポートの必要性からTLB(Translation Look−aside Buffer)を持っている。このようなCPUを用いた場合、アトミック転送をサポートするバスさえ実装すれば、マルチプロセッサシステムを構築することができる。この場合、バススヌープのハードウェアサポートがなくても、NUMA(Non−Uniform Memory Access)と同じOS(Operating System)を利用すれば、TLBのサポートを使ってキャッシュコヒーレンシを維持することは可能である。
[0004]
ここで、アトミック転送をサポートするバスが必要なのは、CPU間の排他制御を可能にするためである。たとえば各CPUのTLBを排他的に書き換えるためには、ロック変数をアトミックにリードモディファイライトする必要がある。しかし、ユニプロセッサを意図して設計された安価な組み込みプロセッサ及びそのバス規約は、アトミックリードモディファイライトをサポートしていない。
[0005]
以下、アトミックリードモディファイライトの必要性を図5を参照して説明する。ここでは、ロック変数lockをメモリ上にアロケートしている。
[0006]
まずCPUはメモリからロック変数lockを読み出し(S1)、lock=1か否かを判断する(S2)。lock=1、つまりロック変数がロック状態になっている限り(S2でYES)、CPUは繰り返しロック変数lockを読み出す(S1)。一方、lock=0、つまりロック変数が非ロ
【0003】
【発明が解決しようとする課題】
[0012]
本発明の目的は、ロック変数のアトミックリードモディファイライト機能を有する高価なシステムと同等の機能を簡単な構成で実現可能なマルチプロセッサシステムを提供することである。
課題を解決するための手段及び発明の効果
[0013]
本発明によるマルチプロセッサシステムは、複数のプロセッサと、ロックレジスタとを備える。プロセッサの各々は、排他制御を実行する前にロックを獲得するために読出信号をアサートし、かつ排他制御を実行した後にロックを解放するために書込信号をアサートする。ロックレジスタは、複数のプロセッサに接続される。ロックレジスタは、保持手段と、ロック変数出力手段と、ロック変数入力手段とを含む。保持手段は、ロック状態又は非ロック状態の第1のロック変数を保持する。ロック変数出力手段は、プロセッサの1つが読出信号をアサートすると、それ以前に保持手段に保持されていた第1のロック変数を出力する。ロック変数入力手段は、プロセッサの1つが読出信号をアサートすると、ロック状態の第1のロック変数を保持手段に設定し、プロセッサの1つが書込信号をアサートすると、非ロック状態の第1のロック変数を保持手段に設定する。
[0014]
上記マルチプロセッサシステムでは、あるプロセッサが読出信号をアサートすると、ロックレジスタから第1のロック変数が読み出されるとともに、ロックレジスタにロック状態の第1のロック変数が書き込まれる。読み出された第1のロック変数が非ロック状態の場合、そのプロセッサはロックを獲得することができる。第1のロック変数が読み出されるとともに、ロック状態の第1のロック変数が書き込まれるので、その直後に、別のプロセッサが読出信号をアサートしても、ロックレジスタからロック状態の第1のロック変数が読み出されるため、その別のプロセッサはロックを獲得することができない。このように、本発明によるマルチプロセッサシステムは、ロックレジスタを設けるだけで、ロック変数のアトミックリードモディファイライト機能を有する高価なシステムと同等の機能を実現することができる。
[0015]
好ましくは、ロックレジスタはさらに、バスリトライ手段を含む。バスリトライ手段は、第1のロック変数がロック状態に設定されている間にプロセッサの1つが読出信号をアサートすると、プロセッサに供給するためのバスリトライ信号を発生する。
【0004】
[0016]
この場合、プロセッサはバスリトライ信号を受け、これによりロックの獲得が不可能なことを認識するので、むやみに読出信号をアサートしないようにすることができる。
[0017]
好ましくは、マルチプロセッサシステムはさらに、第1のバスと、メモリと、2のバスとを備える。第1のバスは、複数のプロセッサに共通に接続される。メモリは、第1のバスに接続される。第2のバスは、複数のプロセッサに共通に接続される。ロックレジスタは第2のバスに接続される。
[0018]
この場合、あるプロセッサがロックを獲得しているために、別のプロセッサがそのロックの解放を待っているとき、その別のプロセッサは第2のバス経由で読出信号をアサートしてロックレジスタから第1のロック変数を読み出し、その一方で、ロックを獲得しているプロセッサは第1のバス経由でメモリにアクセスする。したがって、ロックを獲得しているプロセッサからメモリへのアクセスは妨げられない。
[0019]
さらに好ましくは、メモリは1又は2以上の第2のロック変数を記憶する。プロセッサの各々は、読出信号をアサートしてロックレジスタから第1のロック変数を読み出し、読み出した第1のロック変数が非ロック状態の場合、メモリから第2のロック変数を読み出し、読み出した第2のロック変数が非ロック状態の場合、第2のロック変数をロック状態に書き換える。
[0020]
この場合、プロセッサはまずロックレジスタから第1のロック変数を読み出してロックを獲得し、続いてメモリから第2のロック変数を読み出してロックを獲得する。このようにロックを階層的に獲得するようにしているので、多数のロック変数を設定することができる。
[0021]
【0005】
[0022]
[0023]
[0024]
[0025]
[0026]
【発明を実施するための最良の形態】
[0027]
以下、図面を参照し、本発明の実施の形態を詳しく説明する。図中同一又は相当

Claims (7)

  1. 各々が、排他制御を実行する前にロックを獲得するために読出信号をアサートし、かつ排他制御を実行した後にロックを解放するために書込信号をアサートする複数のプロセッサと、
    前記複数のプロセッサに接続されたロックレジスタとを備え、
    前記ロックレジスタは、
    ロック状態又は非ロック状態の第1のロック変数を保持する保持手段と、
    前記プロセッサの1つが読出信号をアサートすると、それ以前に前記保持手段に保持されていた第1のロック変数を出力するロック変数出力手段と、
    前記プロセッサの1つが読出信号をアサートすると、ロック状態の第1のロック変数を前記保持手段に設定し、前記プロセッサの1つが書込信号をアサートすると、非ロック状態の第1のロック変数を前記保持手段に設定するロック変数入力手段とを含むことを特徴とするマルチプロセッサシステム。
  2. 請求項1に記載のマルチプロセッサシステムであって、
    前記ロックレジスタはさらに、
    前記第1のロック変数がロック状態に設定されている間に前記プロセッサの1つが読出信号をアサートすると、前記プロセッサに供給するためのバスリトライ信号を発生するバスリトライ手段を含むことを特徴とするマルチプロセッサシステム。
  3. 請求項1に記載のマルチプロセッサシステムであってさらに、
    前記複数のプロセッサに共通に接続された第1のバスと、
    前記第1のバスに接続されたメモリと、
    前記複数のプロセッサに共通に接続された第2のバスとを備え、
    前記ロックレジスタは前記第2のバスに接続されたことを特徴とするマルチプロセッサシステム。
  4. 請求項1に記載のマルチプロセッサシステムであってさらに、
    1又は2以上の第2のロック変数を記憶するメモリを備え、
    前記プロセッサの各々は、読出信号をアサートして前記ロックレジスタから第1のロック変数を読み出し、読み出した第1のロック変数が非ロック状態の場合、前記メモリから第2のロック変数を読み出し、読み出した第2のロック変数が非ロック状態の場合、第2のロック変数をロック状態に書き換えることを特徴とするマルチプロセッサシステム。
  5. 複数のプロセッサと、前記複数のプロセッサに接続されたロック状態又は非ロック状態の第1のロック変数を保持するロックレジスタとを備えたマルチプロセッサにおける排他制御方法であって、
    前記プロセッサの1つがロックを獲得するために読出信号をアサートすると、前記ロックレジスタから第1のロック変数を読み出すとともに、ロック状態の第1のロック変数を前記ロックレジスタに書き込むステップと、
    読み出した第1のロック変数が非ロック状態の場合、当該1つのプロセッサによって排他制御を実行する排他制御ステップと、
    排他制御を実行した後、当該1つのプロセッサがロックを解放するために書込信号をアサートすると、非ロック状態の第1のロック変数を前記ロックレジスタに書き込むステップとを含むことを特徴とするマルチプロセッサシステムにおける排他制御方法。
  6. 請求項5に記載の排他制御方法であってさらに、
    前記第1のロック変数がロック状態の間に前記プロセッサの1つが読出信号をアサートすると、前記プロセッサに供給するためのバスリトライ信号を発生するステップを含むことを特徴とするマルチプロセッサシステムにおける排他制御方法。
  7. 請求項5に記載の排他制御方法であって、前記マルチプロセッサシステムはさらに、1又は2以上の第2のロック変数を記憶するメモリを備え、
    前記排他制御ステップは、
    読み出した第1のロック変数が非ロック状態の場合、前記メモリから第2のロック変数を読み出すステップと、
    読み出した第2のロック変数が非ロック状態の場合、第2のロック変数をロック状態に書き換えるステップと、
    第2のロック変数をロック状態に書き換えた後、排他制御を実行するステップとを含むことを特徴とするマルチプロセッサシステムにおける排他制御方法。

JP2006547760A 2004-11-26 2005-11-21 マルチプロセッサシステム及びそれにおける排他制御方法 Expired - Fee Related JP4852427B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006547760A JP4852427B2 (ja) 2004-11-26 2005-11-21 マルチプロセッサシステム及びそれにおける排他制御方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2004341466 2004-11-26
JP2004341466 2004-11-26
JP2006547760A JP4852427B2 (ja) 2004-11-26 2005-11-21 マルチプロセッサシステム及びそれにおける排他制御方法
PCT/JP2005/021336 WO2006057208A1 (ja) 2004-11-26 2005-11-21 マルチプロセッサシステム及びそれにおける排他制御方法

Publications (2)

Publication Number Publication Date
JPWO2006057208A1 true JPWO2006057208A1 (ja) 2008-08-07
JP4852427B2 JP4852427B2 (ja) 2012-01-11

Family

ID=36497945

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006547760A Expired - Fee Related JP4852427B2 (ja) 2004-11-26 2005-11-21 マルチプロセッサシステム及びそれにおける排他制御方法

Country Status (6)

Country Link
US (1) US20080270723A1 (ja)
EP (1) EP1832980B1 (ja)
JP (1) JP4852427B2 (ja)
CN (1) CN101061462B (ja)
AT (1) ATE555437T1 (ja)
WO (1) WO2006057208A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080133858A1 (en) * 2004-11-04 2008-06-05 Board Of Trustees Of Michigan State University Secure Bit
JP4874165B2 (ja) * 2006-07-07 2012-02-15 ルネサスエレクトロニクス株式会社 マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス権設定方法
CN103377086A (zh) * 2012-04-27 2013-10-30 华为技术有限公司 用于异步多核系统操作共享资源的方法、装置及系统
CN104508645B (zh) * 2012-07-31 2017-08-18 慧与发展有限责任合伙企业 用于使用多个子锁来控制对具有读取器‑写入器锁的共享数据结构的访问的系统和方法
US9501332B2 (en) * 2012-12-20 2016-11-22 Qualcomm Incorporated System and method to reset a lock indication
CN104268105B (zh) * 2014-09-23 2017-06-30 天津国芯科技有限公司 处理器局部总线互斥存取的扩展结构及操作方法
CN106980544B (zh) * 2017-03-31 2020-03-03 北京奇艺世纪科技有限公司 一种线程同步方法及线程同步系统
CN114036091B (zh) * 2021-10-30 2023-06-16 西南电子技术研究所(中国电子科技集团公司第十研究所) 多处理器外设复用电路及其复用方法
US12039339B1 (en) * 2022-06-28 2024-07-16 Amazon Technologies, Inc. System configuration control through locking of control registers

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0680497B2 (ja) * 1989-12-15 1994-10-12 富士通株式会社 排他記憶域制御方式
JPH06348661A (ja) * 1993-06-11 1994-12-22 Fujitsu Ltd マルチプロセッサ間排他制御方式
JPH07113909B2 (ja) * 1992-11-27 1995-12-06 工業技術院長 並列計算機
JP3381733B2 (ja) * 1991-09-27 2003-03-04 サン・マイクロシステムズ・インコーポレイテッド 原子アクセス制御レジスタ装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01286070A (ja) * 1988-05-13 1989-11-17 Nec Corp データ処理システム
US5175829A (en) * 1988-10-25 1992-12-29 Hewlett-Packard Company Method and apparatus for bus lock during atomic computer operations
US5669002A (en) * 1990-06-28 1997-09-16 Digital Equipment Corp. Multi-processor resource locking mechanism with a lock register corresponding to each resource stored in common memory
JPH07191944A (ja) * 1991-09-11 1995-07-28 Internatl Business Mach Corp <Ibm> 多重プロセッサによる多数の資源への命令におけるデッドロックを防止するためのシステムおよび方法
US5666515A (en) * 1993-02-18 1997-09-09 Unisys Corporation Information processing system having multiple modules and a memory on a bus, where any module can lock an addressable portion of the memory by sending retry signals to other modules that try to read at the locked address
US5535365A (en) * 1993-10-22 1996-07-09 Cray Research, Inc. Method and apparatus for locking shared memory locations in multiprocessing systems
US6226717B1 (en) * 1999-02-04 2001-05-01 Compaq Computer Corporation System and method for exclusive access to shared storage
US6782440B2 (en) * 2000-07-26 2004-08-24 T.N.S. Holdings, Inc. Resource locking and thread synchronization in a multiprocessor environment
JP3963372B2 (ja) * 2001-02-24 2007-08-22 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システム
US6986005B2 (en) * 2001-12-31 2006-01-10 Hewlett-Packard Development Company, L.P. Low latency lock for multiprocessor computer system
JP6080497B2 (ja) * 2012-10-31 2017-02-15 ルネサスエレクトロニクス株式会社 抵抗補正回路、抵抗補正方法、及び半導体装置
JP7113909B2 (ja) * 2018-11-15 2022-08-05 株式会社Fuji プラズマ照射装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0680497B2 (ja) * 1989-12-15 1994-10-12 富士通株式会社 排他記憶域制御方式
JP3381733B2 (ja) * 1991-09-27 2003-03-04 サン・マイクロシステムズ・インコーポレイテッド 原子アクセス制御レジスタ装置
JPH07113909B2 (ja) * 1992-11-27 1995-12-06 工業技術院長 並列計算機
JPH06348661A (ja) * 1993-06-11 1994-12-22 Fujitsu Ltd マルチプロセッサ間排他制御方式

Also Published As

Publication number Publication date
EP1832980B1 (en) 2012-04-25
EP1832980A1 (en) 2007-09-12
CN101061462A (zh) 2007-10-24
CN101061462B (zh) 2010-10-06
ATE555437T1 (de) 2012-05-15
EP1832980A4 (en) 2011-02-23
JP4852427B2 (ja) 2012-01-11
WO2006057208A1 (ja) 2006-06-01
US20080270723A1 (en) 2008-10-30

Similar Documents

Publication Publication Date Title
JP4852427B2 (ja) マルチプロセッサシステム及びそれにおける排他制御方法
TWI434214B (zh) 用以延伸快取一致性以保持緩衝資料之裝置,處理器,系統及方法
JP6342970B2 (ja) トランザクショナルメモリ(tm)システムにおける読み出し及び書き込み監視属性
US8364911B2 (en) Efficient non-transactional write barriers for strong atomicity
US7007108B2 (en) System method for use of hardware semaphores for resource release notification wherein messages comprises read-modify-write operation and address
JP5366802B2 (ja) 仮想化されたトランザクショナルメモリのグローバルオーバーフロー方法
US5550988A (en) Apparatus and method for performing error correction in a multi-processor system
US9052947B2 (en) Unified optimistic and pessimistic concurrency control for a software transactional memory (STM) system
US8706982B2 (en) Mechanisms for strong atomicity in a transactional memory system
US8209689B2 (en) Live lock free priority scheme for memory transactions in transactional memory
TWI461912B (zh) 用於交易式記憶體系統中之硬體屬性之記憶體模式
US20020078307A1 (en) Memory-to-memory copy and compare/exchange instructions to support non-blocking synchronization schemes
US8296524B2 (en) Supporting efficient spin-locks and other types of synchronization in a cache-coherent multiprocessor system
KR20020097145A (ko) 라운드 로빈 및 로킹 캐시 대체 수행 방법 및 장치
JP2007058493A (ja) マルチプロセッサシステム及びそれにおける排他制御方法
US6484272B1 (en) Gate close balking for fair gating in a nonuniform memory architecture data processing system
US6480973B1 (en) Gate close failure notification for fair gating in a nonuniform memory architecture data processing system
JP2005327086A (ja) 半導体集積回路装置
JPH05143454A (ja) キヤツシユ制御方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100629

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20100709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100909

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110720

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110725

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20111004

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111024

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141028

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees