JP2665813B2 - 記憶制御装置 - Google Patents

記憶制御装置

Info

Publication number
JP2665813B2
JP2665813B2 JP2043820A JP4382090A JP2665813B2 JP 2665813 B2 JP2665813 B2 JP 2665813B2 JP 2043820 A JP2043820 A JP 2043820A JP 4382090 A JP4382090 A JP 4382090A JP 2665813 B2 JP2665813 B2 JP 2665813B2
Authority
JP
Japan
Prior art keywords
memory
memory access
atomic
access
address
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 - Lifetime
Application number
JP2043820A
Other languages
English (en)
Other versions
JPH03246656A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2043820A priority Critical patent/JP2665813B2/ja
Priority to GB9027947A priority patent/GB2241800B/en
Priority to DE4104781A priority patent/DE4104781C2/de
Publication of JPH03246656A publication Critical patent/JPH03246656A/ja
Priority to US08/160,363 priority patent/US5446862A/en
Priority to US08/517,549 priority patent/US5579505A/en
Application granted granted Critical
Publication of JP2665813B2 publication Critical patent/JP2665813B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は,複数のプロセツサまたはプロセツサ相当回
路より成る計算機システムにおけるメモリのアクセス方
式に関するものである。
〔従来の技術〕
共有メモリを持つマルチプロセツサ・システムにおい
ては,または並列プログラム処理システムにおいては,
一連のデータ処理を行なううえで,その間に他のデータ
処理が割り込んでは困ることがある。また各プロセツサ
がそれぞれ分担データ処理し,その結果が揃つた後に総
合処理をするといつた同期動作が必要なことがある。
こうした,共有メモリを持つマルチプロセツサ・シス
テムで,共有メモリ領域のデータ処理に対し,一連のデ
ータのリードまたはライトのシーケンスの間,他のプロ
グラムからのメモリ,アクセスを許さない排他動作をす
るアトミツクなメモリアクセス機能が必要となつてく
る。
ここでは,リード,ライト等のメモリに対する動作を
メモリアクセスといい,その間他のプログラムまたはプ
ロセツサによつて分割されない一連のメモリ・アクセス
・シーケンスを,アトミツクなメモリアクセスという。
従来はこのアトミツクなメモリアクセス機能のうち,
リードに続いてライト動作が行なわれる特別な場合に
は,メモリのリード・モデイフアイ・ライト機能により
実現していた。
このことは,たとえば,K.Hwang&F.A.Briggs著の“Co
mputer Architecture and Parallel Processing"(McGr
aw−Hill Book Comany,1984)の第8.1節“Interprocess
Communication Mechanisms"に述べられており,よく
知られた技術である。
メモリのリード・モデイフアイ・ライト機能は,連続
するメモリ・サイクルで,指定したアドレスからデータ
を読出し,続いて同じアドレスにデータを書き込むこと
ができ,その間,他のメモリ参照を許さない機能であ
る。メモリのこのような機能は,例えば,三菱電機株式
会社の「′88三菱半導体データブツク−メモリ編」の25
6KB DRAMチツプM5M4256で提供されているリード・モデ
イフアイ・ライト機能を利用すれば実現することができ
る。
上記のリード・モデイフアイ・ライト機能を用いてア
トミツクなメモリアクセスを実現する場合には,リード
・モデイフアイ・ライトを行なうプロセツサが独占的に
メモリアクセスを行えるように,メモリ・バスを専用使
用する必要がある。これによつて,他のプロセツサが割
り込んでメモリアクセスを行なうことを防止し,アトミ
ツクなメモリアクセスを実現する。
このようなハードウエア動作を,プログラムあるいは
ミクロな機械命令の面からみてみよう。
上記のようなアトミツクなメモリアクセスを行なうた
めの機械命令としては,F.A.Briggs著の“Synchronizati
on,Coherence,and Event Ordering in Multiprocessor
s"(IEEE Computer,Vol.21,No.2,Februnry1988,pp.9−2
1)にも述べられているように,Test&Set命令やCompare
&Swap命令が提供される。いずれも,メモリ上の領域を
排他的にアクセスするための命令である。
Test&Set命令は,次のような動作を排他的に不可分
な動作として行なう。
Test&Set(x) {temp←x;x←1; return temp;} また,Compare&Swap命令は次のような動作を排他的に
不可分な動作として行なう。
Compare&Swap(r1,r2,w) {temp←x; if(temp=r1)then{w;r2;z←1} else{r1←temp;z←0}} ここで,zはフラグ変数で比較結果に応じて0または1
がセツトされる。
これらの命令は,複数の並列に動作しているプログラ
ム間で共有される資源に対応して設けられたロツク,つ
まり,占有確保と開放に用いられる。例えば,lockをこ
のようなロツクとし,lock=0ならばlockに対応する資
源Rがどのプログラムにも確保されていないものとし,l
ock=1ならば資源Rがいずれかのプログラムに確保さ
れているものとする。ここであるプログラムPが資源R
を確保するときには,先ず次の動作を行なう。
y=Test&Set(lock) 変数yにはlockの以前の値が格納されるため,これを
調べることにより,lockの値がTest&Set命令の実行以前
に0であつたか1であつたかを知ることができる。0で
あつたら対応する資源Rは自由であつたことになり,Tes
t&Set命令によつてlock=1となり,資源Rの使用権が
プログラムPに得られたことになる。また,yが1であつ
たなら,資源RはP以外のプログラムに確保されていた
ことになり,Pは資源Rが開放されるまでTest&Set命令
を繰り返すことになる。
以上のことはTest&Set命令を使って説明したが,Comp
are&Swap命令についても同等の動作に使用することが
できる。
Test&Set命令は上述のように資源に対応したロツク
を確保するための命令であるが,一般に資源の使用が終
了し,これを開放するためにロツクを解除するための特
別な命令は設けられていない。上述の例を使えば,lock
←0,すなわち,lockに0をストアするだけでよいため,
通常のストア命令が使われる。
Compare&Set命令についても同様である。
なお,アトミツクなメモリアクセスに使用されるTest
&Set命令や,Compare&Swap命令では,データのリード
とそれに続くライトの動作を排他・一連動作として行な
い,この間に他のメモリアクセスを許してはいなかつ
た。
〔発明が解決しようとする課題〕
従来のマルチプロセツサ・システムでは,アトミツク
なメモリアクセスを行なうためにリード・モデイフアイ
・ライト機能を使用するため,1つのプロセツサがリード
・モデイフアイ・ライトを行なうと,プロセツサとメモ
リを接続するメモリ・バスは占有され,他のプロセツサ
はアトミツクなメモリアクセスとは異なる領域のメモリ
・アクセスであつても,アトミツクなメモリアクセスが
終るまで実行を待たされた。このため処理時間が遅くな
るという第1の課題があつた。
また,従来はリードとそれに続くライトに対してのみ
アトミツクなメモリ・アクセスが可能であり,一連のリ
ードまたはライトの任意のシーケンスに対しては,この
ようなアクセスは出来なかつた。
特開昭59−116866ではアトミツクなメモリアクセスを
アドレスごとに管理し,異なるメモリ領域へのメモリ・
アクセスを可能にする技術が開示されている。
しかし,アトミツクなメモリアクセスがマルチプロセ
ツサ間の同期動作等で必要とされることを考えれば,単
に複数のプロセツサからの異なるアドレスへのメモリア
クセスを許すだけでは不十分である。つまりプロセツサ
ごとに,またはプログラムごとに正しく実行されている
ことを管理しなければ,データ破壊,またはシステム暴
走の恐れがある。
また第2の課題として,機械命令体系で考えると,従
来のTest&SetやCompare&Swap命令は,アトミツクなメ
モリアクセスを開始するのに利用されるが,アトミツク
なメモリアクセスの終了には特別の命令がなく,通常の
Store命令または相当命令が使用されていた。このため
他のデータに対するStore命令と混同され,プログラミ
ングを誤る可能性があつた。
さらに第3の課題として,従来のシステムではメモリ
の並列アクセスを想定していなかつたので,Test&Set命
令やCompare&Swapは一連の動作保護,したがつて対象
メモリ領域に対してその時点での保護を行なうのみであ
つた。後に続くプログラムや同時に実行されている他の
プログラムの正当性管理は考慮されていなかつたので,
誤つたプログラムに対しデータやシステムが破壊される
危険性があり,信頼性で難点があつた。
第1から第3の課題に対応する発明1から3までをま
とめると,従来考えられていなかつたプログラムの正当
性またはシステムとしての動作の正しさを保証しなが
ら,全体のメモリアクセスの時間を短縮することを目的
とする。
[課題を解決するための手段] この発明に係る記憶制御装置は、以下の要素を備えた
ものである。
(a)複数のプロセッサ、 (b)前記複数のプロセッサがそれぞれアクセスする共
有メモリ、 (c)前記複数のプロセッサと前記共有メモリとが接続
されたメモリバス、 (d)前記メモリバスに接続され、以下の要素を備えた
メモリバス制御手段 (d1)メモリアクセスの上位のアドレスをエントリアド
レスとし、各エントリは少なくとも、前記共有メモリへ
の一連のメモリアクセス・シーケンスが他のメモリアク
セスで分割されないアトミックなメモリアクセスの開始
時にセットされ、終了時にリセットされるフラグと、前
記アトミックなメモリアクセスの下位のアドレスと、前
記アトミックなメモリアクセスの実行元の前記プロセッ
サを示す識別子と、から構成された排他メモリアクセス
記憶アレイ、 (d2)前記各プロセッサによる前記アトミックなメモリ
アクセス要求を前記メモリバスから入力し、このメモリ
アクセスに基づき、このメモリアクセスの上位アドレス
をエントリアドレスとする前記排他メモリアクセス記憶
アレイの前記フラグ、前記アトミックなメモリアクセス
の下位のアドレス、及び、前記識別子、をセットするア
トミックメモリアクセス制御手段、 (d3)前記各プロセッサによる前記共有メモリのアクセ
ス要求を前記メモリバスから入力し、このメモリアクセ
スの上位アドレスをエントリアドレスとする前記排他メ
モリアクセス記憶アレイにセットされた内容に基づき、
前記共有メモリをアクセスするための前記各プロセッサ
による前記メモリバスの使用を許可又は不許可とする制
御を行なうメモリバス許可手段。
また、前記フラグは、前記各プロセッサに設けられた
第1の機械命令でセットされ、前記各プロセッサに設け
られた第2の機械命令でリセットされるものである。
さらに、前記メモリバス許可手段は、メモリアクセス
を不許可とするときには、不許可に対する処理を実行す
る処理ルーチンを起動する手段を備えているものであ
る。
[作用] この発明においては、プロセッサが一連のデータのリ
ード又はライトのシーケンスが他のメモリアクセスで分
割されない排他動作となっているアトミックなメモリア
クセスの要求を出したとき、これを区別して排他メモリ
アクセス記憶アレイに記憶し、その後のメモリアクセス
に対しては、メモリバス許可手段により、前記排他メモ
リアクセス記憶アレイに記憶させた内容に基づいてアド
レスのチェックを行ない、前記共有メモリをアクセスす
るための各プロセッサによる前記メモリバスの使用を許
可又は不許可とする制御を行なう。
また、第1の機械命令により、アトミツクなメモリア
クセスの開始を示すフラグがセットされ、第2の機械命
令により、前記フラグはセットされる。
さらに、前記メモリバス許可手段は、メモリアクセス
を不許可とするときには、不許可に対する処理を実行す
る処理ルーチンを起動する。
〔発明の実施例〕
本発明の実施例を図に基いて説明する。
第2図はマルチプロセツサ・システムまたは単一プロ
セツサ・システムの構成を示すもので,それぞれの例
(a)(b)で,メモリまたはメモリ・バンク(10
0),プロセツサ(200)−(203),入出力制御装置(2
51)−(253),メモリバス制御手段としてのメモリ・
バス制御機構(MBC)(300)はメモリ・バス(400)に
接続されている。4つのプロセツサ(200)−(203)は
メモリ・バス(400)を介してメモリ(100)にアクセス
する。この際のメモリ・バスの制御はメモリ・バス制御
機構(MBC)で行なわれる。
第3図は第2図のメモリ・バス制御機構(300)の内
部を示したもので,アトミツクメモリアクセス制御手段
としてのアトミツク・メモリアクセス制御機構メモリバ
ス許可手段としてのメモリ・バス許可論理(MBGL)(39
0)からなる。図では本発明に関係する部分のみを示
し,その他の一般のメモリ・バスの制御に要する機構/
論理は説明の簡単化のために省いてある。アトミツク・
メモリ・アクセス制御機構(AMAC)(310),メモリア
クセス要求のアドレス(MR_ADDRESS),メモリアクセス
要求の種別を示すコード(MR_CODE),メモリアクセス
要求の識別子(MR_ID)を入力とし,これらの信号よ
り,メモリアクセス要求チエツク信号(MR_CHECK)を出
力する。識別子は具体的には,プロセツサ番号またはプ
ログラム対応番号である。メモリアクセス要求チエツク
信号(MR_CHECK)は,MR_ADDRESS,MR_CODE,MR_IDで示さ
れた現行のメモリアクセス要求が,アトミツクなメモリ
アクセス領域に対して矛盾のないメモリアクセス要求で
あるかどうかをチエツクした信号であり,メモリ・バス
許可論理(MBGL)(390)の入力となつている。メモリ
・バス許可論理では,MR_CHECKおよびその他のメモリ・
バス制御機構(300)内部の状態より,最終的なメモリ
・バスの許可信号(MR_GRANT)を出力する。
第1図はアトミツク・メモリ・アクセス制御機構(AM
AC)(310)の内部を示すもので,本発明の最も重要な
部分であり,(311)は排他メモリアクセス記憶アレイ
(AA)(以下アドレス・アレイ(AA)と略す),(31
2)及び(313)は比較器,(314)は論理AND回路,(31
5)及び(316)は論理NOT回路を示す。アドレス・アレ
イ(AA)(311)は,V,A,IDの3つのフイールドからなる
複数のエントリを持つたメモリであり,1つのアトミツク
なメモリアクセス領域に対して1つのエントリを有す
る。各エントリのVフィールドは,エントリの有効/無
効を示すフラグ,Aフィールドはメモリアドレスの下位ビ
ツトを保持するフイールド,IDフィールドはメモリアク
セス要求の識別子を保持するフイールドである。アドレ
ス・アレイ(AA)(311)のエントリは,メモリアクセ
ス要求アドレスMR_ADDRESSの上位ビツトで決定され,そ
のエントリのAフイールドとメモリアクセス要求アドレ
スの下位ビツトが比較器(313)によつて比較され,そ
のエントリが示すメモリ・アドレスとメモリアクセス要
求のアドレスとが等しいかどうかを決定する。また,同
時に,メモリアクセス要求の識別子も比較器(312)に
よつて比較される。なお,MR_ADDRESSは,第3図で示さ
れるメモリアクセス要求のコード(MR_CODE)をデコー
ドした信号で,メモリに対するアクセス要求があること
を示す信号である。チエツク信号(MR_CHECK)の出力
は,以上のようなアドレス・アレイ(AA)のフイールド
や比較結果に応じて,次のようにメモリ・バスの使用に
ついて許可/不許可となる。
この様なアトミツク・メモリ・アクセス制御機構(AM
AC)(310)について,メモリアクセス要求に対する動
作は以下のようになる。
あるプロセツサで実行しているプログラムPROG1がメ
モリ・アドレスaに対し,アトミツクなアクセスを開始
するとaの上位ビツトahで示されるアドレス・アレイ
(AA)(311)のエントリのVフラグが有効となり,Aフ
イールドにはaの下位ビツトAlが格納され,このメモリ
アクセス要求の識別子idlがIDフイールドに格納され
る。アトミツクなメモリ・アクセスが終了するとVフラ
グが無効になる。
別のプログラムPROG2がメモリ・アドレスaに対して
アクセス要求を出したとすると,このメモリ参照要求の
識別子id2が先に記憶されているIDフイールド中のid1と
異なればアクセスは不許可となる。
以上により,単に異なるメモリアドレスへの参照動作
を許し,パス使用効率をあげるというだけでなく,処理
効率を上げながら論理的に矛盾のない動作を管理し,信
頼性を上げることが出来る。
並列動作をさせながら正しいシーケンスを保つには,
アトミツクなメモリアクセスも排他的で完結したもので
なくてはいけない。
以上の動作を上記の表を参照して,まとめて記述する
と次のようになる。
(a) プロセツサがアトミツクなメモリアクセス要求
を出したとき,アドレス・アレイにすでにアトミツク・
メモリアクセス要求がセツトされていなければ,アクセ
ス要求を許可し,そのアドレスと識別子をアトミツク・
メモリアクセス記憶アレイに記憶し, (b) プロセツサがアトミツクなまたは非アトミツク
なメモリアクセス要求を出したとき,そのアドレスがす
でにアドレス・アレイにセツトされているアドレスと一
致しなければアクセス要求を許可し, (c) プロセツサがアトミツクなメモリアクセス要求
を出したとき,アドレス・アレイにすでにアトミツク・
メモリアクセス要求がセツトされている場合は識別子を
調べ,識別子が一致する場合にはアクセス要求を許可
し, (d) プロセツサがアトミツクなメモリアクセス要求
を出したとき,アドレス・アレイにすでにアトミツク・
メモリアクセス要求がセツトされている場合は識別子を
調べ,識別子が一致しなければアクセス要求を拒否す
る。
これを処理フローとして第4図に示す。図においてメ
モリ・アクセスが不許可になる場合がいくつかあるが,
これらに対するその後の処理は必ずしも同じではない。
例えば,アトミツクでないメモリ・アクセス要求で,ア
ドレスは一致するが識別子は一致しない場合は,アトミ
ツクなアクセスを行なつているメモリ領域に通常の非ア
トミツクなメモリのリードまたはライトを行なう場合に
相当するため,エラーとして処理しても不都合はない。
これに対し,アトミツクなメモリ・アクセス要求でア
ドレスは一致するが識別子は一致しない場合は,アトミ
ツクなアクセスを行なつているメモリ領域にアトミツク
なメモリ・アクセスを行なおうとする場合に相当し,こ
のメモリ領域を使用しているプログラムまたはプロセツ
サが使用を終了するまで待たせる処理をするのが一般的
である。
上記構成により,メモリ・アクセスの動作がどのよう
に短縮されるかを述べる。第5図(a)は通常のメモリ
アクセス(リードとライト)の基本的な動作タイミング
を示し,この例ではリードは4サイクル,ライトは1サ
イクルで終了する。第5図(b)は従来のメモリ・アク
セスの動作タイミングの例を示す。メモリ・バスはプロ
セツサごとに処理期間中占有され,処理は直列になる。
これに対し,第5図(c)は本発明の対応タイミング例
である。以下,動作を詳しく説明する。
図において,Cyclは動作タイミングを示し,MBCはバス
制御機構のメモリに対する動作指令、GrntはMBCがプロ
セツサ等に与える信号,MBはメモリ・バスの使用状態,P0
−P3はプロセツサの動作を示す。
第5図(a)において,R−XXXはメモリ・アドレスXXX
に対するリード要求,W−XXXはメモリ・アドレスXXXに対
するライト要求である。図においては,プロセツサPOが
サイクル1でアドレス300に対するリード要求を出し,
サイクル4でメモリよりデータが返る。従つて,本発明
には関係なくが,メモリのリード動作には4サイクルを
要する。また,ライト動作は1サイクルで終了し,図で
はサイクル5でW−200が出ているが,プロセツサPOで
は,このサイクルでライト動作が終了する。しかし,実
際には,これも本発明には関係ないが,メモリの動作が
3サイクルその後に続く。ここで,Cyclはメモリ・バス
のサイクルを示し,MBCはメモリ・バス制御機構内で処理
を行うメモリ要求を示し,Grntはメモリ・バスの許可/
不許可(BM_GRANT)を示し,OK_nは,プロセツサPnに対
するメモリ・バスの許可信号を示す。また,MBはメモリ
・バスの使用状況を示し,Busyは使用されていることを
示す。PnはプロセツサPnのメモリ参照要求を示す。な
お,この説明では,メモリは4バンクに分れており,そ
れぞれメモリ・アドレスXXXに対し,XXX mod4が0,1,2,3
の要求を独立に処理できるものと仮定している。もちろ
ん,メモリを1つとして任意のアドレスをとつてもかま
わない。
第5図(b)はこれに基く従来の動作例である。図に
おいてR−500とそれに続くW−500がアトミツクなメモ
リ・アクセスとなつている。メモリアクセス(R−501,
W−502,R−503)は上記のアトミツク・アクセスが終了
した後,処理される。
第5図(c)は,本発明による動作例で,第5図
(b)に対応している。第5図(c)では,A−XXXはメ
モリ・アドレスXXXに対するアトミツクなアクセスを開
始することを示し,C−XXXはメモリ・アドレスXXXに対す
るアトミツクなアクセスを終了することを示す。この図
においては,プロセツサP1がサイクル1でメモリ・アド
レス500に対し,アトミツクなメモリ・アクセスを開始
し,サイクル7でそれを終了している。その間,サイク
ル2でリード要求,サイクル6でライト要求を出してい
るが,これらのアクセスはアトミツクなアクセスである
ことが保証される。プロセツサP1がこのようなアトミツ
クなメモリ・アクセスを行つている間に,プロセツサP0
はサイクル4でライト動作,プロセツサP2はサイクル3
でリード動作,プロセツサP3はサイクル5でリード動
作,をそれぞれ行つている。これらのアクセスは,メモ
リ・バンクが異なるために可能となつているが,従来の
技術においては,メモリ・バンクが異なつていても,1つ
のプロセツサがアトミツクなメモリ・アクセスを行つて
いる間はメモリ・バスをロツクする必要があり,これが
終了するまで待たされていたが,本発明を利用すること
により,第5図(c)に示すように,メモリ・アクセス
が効率化される。
なお,第5図においては,A−XXXおよびC−XXXによ
り,明示的にアトミツクなメモリアクセスの開始と終了
を行なつているが,R−XXX(リード)あるいはW−XXX
(ライト)の属性としてアトミツクなメモリアクセスの
開始と終了を指定し,R−XXXあるいはW−XXXとA−XXX
あるいはC−XXXを組み合わせることも考えられる。例
えば,A&R−XXXにより,メモリ・アドレスXXXに対する
リード動作と,このメモリ・アドレスに対するアトミツ
クなメモリ・アクセスの開始を指定する。同様に,A&W
−XXXにより,ライト動作とアトミツクなメモリ・アク
セスの開始を指定する。また,C&R−XXXにより,メモ
リ・アドレスXXXに対するリード動作とこのメモリ・ア
ドレスに対するアトミツクなメモリ・アクセスの終了を
指定する。同様に,C&W−XXXにより,ライト動作とア
トミツクなメモリ・アクセスの終了を指定する。
こうした構成を前提にして,プログラミングの際の命
令が具体的にどうなるかを述べる第1図に示されたよう
なメモリ・バス制御機構によるアトミツクはメモリ・ア
クセスのサポートがある際に,アトミツクなメモリアク
セスを開始することを示す機械命令と終了とすることを
示す機械命令を設け,その2つの機械命令の間に任意の
機械命令を使用できるようにした実施例を第6図に示
す。
第6図(a)は本発明の明示的な機械命令語の説明を
したものであり,データ・レジスタdr(drレジスタはd
0,d1,d2のように複数個ある)に格納されたデータを,
メモリアクセス要求時に使用するメモリアクセス要求ID
を保持するレジスタidrにロードする機械命令loadid,id
rに格納されたIDをデータ・レジスタdrにセーブする機
械命令storeid,アドレス・レジスタar(arはa0,a1,a2の
ように複数個ある)に保持されたメモリ・アクセスにあ
るデータをデータ・レジスタdrにロードする機械命令lo
ad,データ・レジスタに格納されたデータをarに格納さ
れたメモリ・アドレスにストアする機械命令store,arに
保持されたメモリ・アドレスに対しアトミツクなメモリ
・アクセスを開始することを示す機械命令lock,arに保
持されたメモリ・アドレスに対するアトミツクなメモリ
・アクセスの終了を示す機械命令unlockを示している。
load命令及びstore命令に伴うメモリアクセス要求には,
idrに格納されたデータがメモリアクセス要求IDとして
使用される。
これらの基本機械命令語を用いたアトミツク・メモリ
参照のプログラム例を第6図(b)に示す。
第6図(b)には,idrに格納されているメモリアクセ
ス要求IDをセーブし,新しいIDをidrにロードした後,
アトミツクなメモリ・アクセスを開始し,必要な処理の
終了後,アトミツクなメモリ・アクセスを終了し,セー
ブしたメモリアクセス要求IDをリストアしている例を示
す。これにより,プログラムの上で明示的にアトミツク
なメモリアクセスを行つていることがlock命令とunlock
命令により理解でき,プログラミングの効率を向上させ
るとともに,プログラミングのエラーを減少させること
ができる。
第7図では,上記のような機械命令を前提とした高位
のプログラミング言語(Pascal風言語)でのメモリのロ
ツク/アンロツクについての例を示す。ここでは,メモ
リ上にロツク・アレイ(Lock_Table)を設け,手続きMe
mory_Lock(n)およびMemory_Unlock(n)で,nで指定
したLock_Table〔n〕をロツク/アンロツクすることを
示し,さらにこれを使用したプログラム例を示す。
ロツク・アレイ(Lock_Table)は,例えばOSで管理す
る資源に対応するロツクを保持するメモリに利用でき
る。この場合,例えばLock_Table〔7〕でデイスク・ユ
ニツト#7に対するロツクを表わすとすると,あるプロ
グラムがデイスク・ユニツト#7を使用する際にはMemo
ry_Lock(7)によつてロツクを行ない,使用が終了し
デイスク・ユニツト#7を開放する際にはMemory_Unloc
k(7)によつてアンロツクする。このプログラムはMem
ory_Lock(7)とMemory_Unlock(7)との間にデイス
ク・ユニツト#7に対するアクセスを行なうことにな
る。
ここで,手続きMemory_Lock(n)は機械命令lockを
使い,手続きMemory_Unlock(n)は機械命令unlockを
使つて用意に実現することができる。機械命令lockおよ
びunlockの仕様により,これらによつてアトミツクのメ
モリ・アクセスが行なわれている間,同時に他のメモリ
・アクセスも可能であり,マルチプロセツサのプログラ
ムを開発するうえで効率の向上が図れる。
次に,プログラムの一貫性もしくは動作の正しさを保
証する動作について述べる。ここでは,アトミツクなメ
モリ・アクセスに関する例外を検知し,それに対応して
割込みを発生させ,対応する処理ルーチンを起動するメ
カニズムの一実施例を示す。
アトミツクなメモリ・アクセス例外は第1図に示すア
トミツク・メモリ・アクセス制御機構(310)で検知す
ることができる。これは,例えばアトミツクなメモリ・
アクセスがアドレス400に対してなされているときに,
このメモリ・アドレスに対してメモリアクセス要求IDが
異なるメモリアクセス要求が出された場合に検知され
る。これは,アトミツクなメモリ・アクセスによつて保
護されているメモリ領域に,許可を持たない(メモリア
クセス要求IDが異なる)プログラムが非アトミツクなア
クセスをする場合を含み,例えば異常例外として処理し
ても構わないし,またそのほうが望ましいことが多い。
これは,通常,並列プログラミングでは,同時に動作す
るプログラムが同一のメモリ領域にアクセスする場合に
はアトミツクなメモリ・アクセスを行なうのが普通であ
り,非アトミツクなアクセスを行なうのはプログラミン
グ・エラーによる場合が多いからである。
メモリ・バス制御機構で検出されたメモリアクセス例
外は,他のメモリアクセス例外と同様に処理することが
可能であり,このために特別の割り込み機構を設ける必
要はなく,メモリアクセス例外の要因を1つふやし,こ
れをハード・ウエアでサポートするだけでよい。もちろ
ん,専用の割り込み機構を設けてもよい。
この例外による割り込み処理についても従来より知ら
れている方法や機構を利用して実現することが可能であ
る。
アトミツクなメモリアクセス例外の割り込みが発生し
た場合の処理例を第8図に示す。
この図では,アトミツクなメモリアクセス例外の発生
に伴つて,ハードウエアの機構により,メモリアクセス
例外に対する例外処理ルーチンが起動され,そこでアト
ミツク・メモリアクセス例外と認識され,これの解析が
行なわれ,この例外を発生したプログラムを特定し,こ
のプログラムヘエラーの通知を行なつた後,このプログ
ラムを中断する。ここで,アトミツク・メモリアクセス
例外の解析では,ハードウエア機構の支援を受け,例外
を発生した際のメモリ・アクセス要求の種類とメモリア
クセス識別子およびそれに対応するアトミツク・メモリ
アクセス制御機構内のアドレス・アレイのエントリの情
報を読み込み,例外の発生状態を知る。
また,例外を発生したプログラムの特定では,例外の
発生状態からメモリアクセス識別子を知り,これを元に
各種のプログラム管理テーブルを参照しながら例外を発
生したプログラムを特定する。
さらに,例外を発生したプログラムは処理の継続は不
可能であるため,発生したエラーに対応するコードをセ
ツトし,プログラムの実行を中断する処理を行う。
〔発明の効果〕
以上のようにこの発明によれば、複数のプロセッサと
共有メモリとが接続されたメモリバスと、このメモリバ
スに接続されたメモリバス制御手段とを備え、このメモ
リバス制御手段は、一連のメモリアクセス・シーケンス
が他のメモリアクセスで分割されないアトミツクなメモ
リアクセスを排他メモリアクセス記憶アレイに記憶して
おき、各プロセツサによる共有メモリアクセスの際に
は、前記排他メモリアクセス記憶アレイに記憶させた内
容に基づいてアドレスのチェックを行ない、前記共有メ
モリをアクセスするための各プロセッサによる前記メモ
リバスの使用を許可又は不許可とする制御を行なうこと
により、アトミツクなメモリアクセスの実行中であって
も、複数のプロセッサと共有メモリとが接続されたメモ
リバスを占有することがなく、共有メモリアクセスの処
理時間を短縮することができる。さらに、一組のアトミ
ツクなメモリ読み出し動作及び書き込み動作に対してだ
けでなく、任意の数の読み出し動作及び書き込み動作か
らなる一連のメモリアクセスシーケンスに対しても、他
のメモリアクセスで分割されないアトミツクなものとす
ることができ、柔軟なアトミツクメモリアクセスを実現
することができる。
また、アトミツクなメモリアクセスの開始と終了に別
個に機械命令を設けたことにより、この間に任意の他の
命令を混乱なく実行でき、しかも容易にプログラミング
できるので、プログラムの信頼性が向上する。
さらに、アトミツクなメモリアクセスを行なっている
メモリ領域に対して不正なメモリアクセスがあったとき
に、アトミツクなメモリ領域を保護するため、不許可に
対する処理を実行する処理ルーチンを起動するので、シ
ステムの信頼性が向上する。
【図面の簡単な説明】
第1図はアトミツク・メモリ・アクセス制御機構を示す
図,第2図はマルチプロセツサ・システムの構成を示す
図,第3図はメモリ・バス制御機構を示す図,第4図は
メモリ・アクセスに対する処理ルーチンを示す図,第5
図はメモリ参照のタイミングを示す図,第6図は機械命
令およびそれによるプログラムの一部を示す図,第7図
は高位プログラミング言語で記述された手続きを示す
図,第8図は例外処理フローを示す図である。図中,
(100)はメモリ,(200)−(203)はプロセツサ,(3
00)はメモリ・バス制御機構,(400)はメモリ・バ
ス,(310)はアトミツク・メモリ・アクセス制御機
構,(390)はメモリ・バス許可論理,(311)は排他メ
モリアクセス記憶アレイ(AA)、(312)−(313)は比
較器,(314)は論理AND回路,(315)−(316)は論理
NOT回路を示す。 なお,図中,同一あるいは相当部分には同一符号を付し
て示してある。

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】以下の要素を備えた記憶制御装置。 (a)複数のプロセッサ、 (b)前記複数のプロセッサがそれぞれアクセスする共
    有メモリ、 (c)前記複数のプロセッサと前記共有メモリとが接続
    されたメモリバス、 (d)前記メモリバスに接続され、以下の要素を備えた
    メモリバス制御手段 (d1)メモリアクセスの上位のアドレスをエントリアド
    レスとし、各エントリは少なくとも、前記共有メモリへ
    の一連のメモリアクセス・シーケンスが他のメモリアク
    セスで分割されないアトミックなメモリアクセスの開始
    時にセットされ、終了時にリセットされるフラグと、前
    記アトミックなメモリアクセスの下位のアドレスと、前
    記アトミックなメモリアクセスの実行元の前記プロセッ
    サを示す識別子と、から構成された排他メモリアクセス
    記憶アレイ、 (d2)前記各プロセッサによる前記アトミックなメモリ
    アクセス要求を前記メモリバスから入力し、このメモリ
    アクセスに基づき、このメモリアクセスの上位アドレス
    をエントリアドレスとする前記排他メモリアクセス記憶
    アレイの前記フラグ、前記アトミックなメモリアクセス
    の下位のアドレス、及び、前記識別子、をセットするア
    トミックメモリアクセス制御手段、 (d3)前記各プロセッサによる前記共有メモリのアクセ
    ス要求を前記メモリバスから入力し、このメモリアクセ
    スの上位アドレスをエントリアドレスとする前記排他メ
    モリアクセス記憶アレイにセットされた内容に基づき、
    前記共有メモリをアクセスするための前記各プロセッサ
    による前記メモリバスの使用を許可又は不許可とする制
    御を行なうメモリバス許可手段。
  2. 【請求項2】前記フラグは、前記各プロセッサに設けら
    れた第1の機械命令でセットされ、前記各プロセッサに
    設けられた第2の機械命令でリセットされることを特徴
    とする特許請求の範囲第(1)項に記載の記憶制御装
    置。
  3. 【請求項3】前記メモリバス許可手段は、メモリアクセ
    スを不許可とするときには、不許可に対する処理を実行
    する処理ルーチンを起動する手段を備えていることを特
    徴とする特許請求の範囲第(1)項に記載の記憶制御装
    置。
JP2043820A 1990-02-23 1990-02-23 記憶制御装置 Expired - Lifetime JP2665813B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2043820A JP2665813B2 (ja) 1990-02-23 1990-02-23 記憶制御装置
GB9027947A GB2241800B (en) 1990-02-23 1990-12-21 Memory access method and system
DE4104781A DE4104781C2 (de) 1990-02-23 1991-02-13 Speicherzugriffssteuerung
US08/160,363 US5446862A (en) 1990-02-23 1993-11-29 System and method for granting or preventing atomic or nonatomic memory access requests to shared memory regions
US08/517,549 US5579505A (en) 1990-02-23 1995-08-21 Memory access system and method for granting or preventing atomic or nonatomic memory access requests to shared memory regions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2043820A JP2665813B2 (ja) 1990-02-23 1990-02-23 記憶制御装置

Publications (2)

Publication Number Publication Date
JPH03246656A JPH03246656A (ja) 1991-11-05
JP2665813B2 true JP2665813B2 (ja) 1997-10-22

Family

ID=12674385

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2043820A Expired - Lifetime JP2665813B2 (ja) 1990-02-23 1990-02-23 記憶制御装置

Country Status (4)

Country Link
US (2) US5446862A (ja)
JP (1) JP2665813B2 (ja)
DE (1) DE4104781C2 (ja)
GB (1) GB2241800B (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5434970A (en) * 1991-02-14 1995-07-18 Cray Research, Inc. System for distributed multiprocessor communication
US5848276A (en) * 1993-12-06 1998-12-08 Cpu Technology, Inc. High speed, direct register access operation for parallel processing units
US5666509A (en) * 1994-03-24 1997-09-09 Motorola, Inc. Data processing system for performing either a precise memory access or an imprecise memory access based upon a logical address value and method thereof
US5761731A (en) * 1995-01-13 1998-06-02 Digital Equipment Corporation Method and apparatus for performing atomic transactions in a shared memory multi processor system
US6101525A (en) * 1995-05-19 2000-08-08 Emc Corporation Method and apparatus for shared memory cleanup
US5970510A (en) * 1996-04-10 1999-10-19 Northrop Grumman Corporation Distributed memory addressing system
US6047388A (en) * 1997-04-09 2000-04-04 International Business Machines Corporation Method and apparatus for processing an invalid address request
US5900018A (en) * 1997-06-24 1999-05-04 Sun Microsystems, Inc. Processor-implemented method of controlling data access to shared resource via exclusive access control write-cache
US6112282A (en) * 1997-06-24 2000-08-29 Sun Microsystems, Inc. Apparatus for atomic locking-accessing-unlocking of a shared resource
US6000029A (en) 1997-11-03 1999-12-07 Motorola, Inc. Method and apparatus for affecting subsequent instruction processing in a data processor
US6243750B1 (en) * 1998-03-26 2001-06-05 International Business Machines Corporation Method and system for measuring Web site access requests
US7111293B1 (en) 1998-06-03 2006-09-19 Ants Software, Inc. Method for increased concurrency in a computer system
US6189093B1 (en) * 1998-07-21 2001-02-13 Lsi Logic Corporation System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register
US6289445B2 (en) 1998-07-21 2001-09-11 Lsi Logic Corporation Circuit and method for initiating exception routines using implicit exception checking
US7013305B2 (en) 2001-10-01 2006-03-14 International Business Machines Corporation Managing the state of coupling facility structures, detecting by one or more systems coupled to the coupling facility, the suspended state of the duplexed command, detecting being independent of message exchange
US6701429B1 (en) * 1998-12-03 2004-03-02 Telefonaktiebolaget Lm Ericsson(Publ) System and method of start-up in efficient way for multi-processor systems based on returned identification information read from pre-determined memory location
US6223335B1 (en) * 1998-12-09 2001-04-24 Sun Microsystems, Inc. Platform independent double compare and swap operation
US6189061B1 (en) * 1999-02-01 2001-02-13 Motorola, Inc. Multi-master bus system performing atomic transactions and method of operating same
US6763447B2 (en) * 1999-12-02 2004-07-13 Ants Software, Inc. Lock-free list for use with computer system utilizing FIFO queue for tracking order of various sublists
US6795901B1 (en) * 1999-12-17 2004-09-21 Alliant Techsystems Inc. Shared memory interface with conventional access and synchronization support
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US6836840B2 (en) 2001-07-30 2004-12-28 International Business Machines Corporation Slaves with identification and selection stages for group write
US6862666B2 (en) * 2002-05-16 2005-03-01 Sun Microsystems, Inc. Hardware assisted lease-based access to memory
US7412581B2 (en) * 2003-10-28 2008-08-12 Renesas Technology America, Inc. Processor for virtual machines and method therefor
US7175090B2 (en) * 2004-08-30 2007-02-13 Cognex Technology And Investment Corporation Methods and apparatus for reading bar code identifications
US8458724B2 (en) * 2007-06-15 2013-06-04 Microsoft Corporation Automatic mutual exclusion
US7769928B1 (en) * 2007-06-28 2010-08-03 Emc Corporation Data storage system having CPUs adapted to perform a second atomic operation request prior to completion of a first atomic operation request
US8739141B2 (en) * 2008-05-19 2014-05-27 Oracle America, Inc. Parallelizing non-countable loops with hardware transactional memory
US8843682B2 (en) * 2010-05-18 2014-09-23 Lsi Corporation Hybrid address mutex mechanism for memory accesses in a network processor
US8103937B1 (en) * 2010-03-31 2012-01-24 Emc Corporation Cas command network replication
US11200330B2 (en) * 2018-08-01 2021-12-14 Red Hat, Inc. Secure storage access through rate limitation
US10817221B2 (en) * 2019-02-12 2020-10-27 International Business Machines Corporation Storage device with mandatory atomic-only access
US20220027291A1 (en) * 2020-07-24 2022-01-27 Advanced Micro Devices, Inc. Arbitrating atomic memory operations

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3710324A (en) * 1970-04-01 1973-01-09 Digital Equipment Corp Data processing system
US3815099A (en) * 1970-04-01 1974-06-04 Digital Equipment Corp Data processing system
US4412303A (en) * 1979-11-26 1983-10-25 Burroughs Corporation Array processor architecture
US4574350A (en) * 1982-05-19 1986-03-04 At&T Bell Laboratories Shared resource locking apparatus
JPS59116866A (ja) * 1982-12-23 1984-07-05 Toshiba Corp 計算機システムの記憶装置
US4644496A (en) * 1983-01-11 1987-02-17 Iowa State University Research Foundation, Inc. Apparatus, methods, and systems for computer information transfer
US4604694A (en) * 1983-12-14 1986-08-05 International Business Machines Corporation Shared and exclusive access control
US4561051A (en) * 1984-02-10 1985-12-24 Prime Computer, Inc. Memory access method and apparatus in multiple processor systems
CA1239227A (en) * 1984-10-17 1988-07-12 Randy D. Pfeifer Method of and arrangement for ordering of multiprocessor operations in a multiprocessor system
US4604743A (en) * 1984-11-21 1986-08-05 North American Philips Corporation Bus structure for an image processor
US4736317A (en) * 1985-07-17 1988-04-05 Syracuse University Microprogram-coupled multiple-microprocessor module with 32-bit byte width formed of 8-bit byte width microprocessors
US4937733A (en) * 1987-05-01 1990-06-26 Digital Equipment Corporation Method and apparatus for assuring adequate access to system resources by processors in a multiprocessor computer system
IN169634B (ja) * 1987-07-01 1991-11-23 Digital Equipment Corp
JPH01113849A (ja) * 1987-10-19 1989-05-02 Internatl Business Mach Corp <Ibm> マルチユーザシステム
DE3735574A1 (de) * 1987-10-21 1989-05-03 Goldschmidt Ag Th Fluessige zubereitung zur herstellung elektrisch leitfaehiger und infrarot reflektierender fluordotierter zinnoxidschichten auf glas- oder glaskeramikoberflaechen sowie verfahren zur herstellung derartiger schichten unter verwendung dieser zubereitungen
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
US5136691A (en) * 1988-01-20 1992-08-04 Advanced Micro Devices, Inc. Methods and apparatus for caching interlock variables in an integrated cache memory
US4975870A (en) * 1988-02-25 1990-12-04 Data General Corporation Apparatus for locking a portion of a computer memory
US4969088A (en) * 1988-04-26 1990-11-06 International Business Machines Corporation Hardware mechanism for automatically detecting hot-spot references and diverting same from memory traffic in a multiprocessor computer system
JPH07107052B2 (ja) * 1988-05-25 1995-11-15 三菱化学株式会社 複素環式アルデヒドの製造方法
DE68925064T2 (de) * 1988-05-26 1996-08-08 Hitachi Ltd Taskausführungssteuerverfahren für ein Multiprozessorsystem mit Post/Warte-Prozedur
US5050072A (en) * 1988-06-17 1991-09-17 Modular Computer Systems, Inc. Semaphore memory to reduce common bus contention to global memory with localized semaphores in a multiprocessor system
US5175829A (en) * 1988-10-25 1992-12-29 Hewlett-Packard Company Method and apparatus for bus lock during atomic computer operations
US5142676A (en) * 1988-12-28 1992-08-25 Gte Laboratories Incorporated Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory
US5175837A (en) * 1989-02-03 1992-12-29 Digital Equipment Corporation Synchronizing and processing of memory access operations in multiprocessor systems using a directory of lock bits
US5136714A (en) * 1989-12-04 1992-08-04 International Business Machines Corporation Method and apparatus for implementing inter-processor interrupts using shared memory storage in a multi-processor computer system
US5075842A (en) * 1989-12-22 1991-12-24 Intel Corporation Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism
US5163143A (en) * 1990-11-03 1992-11-10 Compaq Computer Corporation Enhanced locked bus cycle control in a cache memory computer system
US5261106A (en) * 1991-12-13 1993-11-09 S-Mos Systems, Inc. Semaphore bypass

Also Published As

Publication number Publication date
GB2241800A (en) 1991-09-11
US5579505A (en) 1996-11-26
US5446862A (en) 1995-08-29
GB2241800B (en) 1993-12-08
DE4104781A1 (de) 1991-08-29
GB9027947D0 (en) 1991-02-13
JPH03246656A (ja) 1991-11-05
DE4104781C2 (de) 1996-08-22

Similar Documents

Publication Publication Date Title
JP2665813B2 (ja) 記憶制御装置
KR100578437B1 (ko) 다수의 스레드의 병행 실행을 지원하는 컴퓨터 시스템에서의 인터럽트 처리 메커니즘
US6779089B2 (en) Locked content addressable memory for efficient access
US5889983A (en) Compare and exchange operation in a processing system
US8793471B2 (en) Atomic program verification
US5442755A (en) Multi-processor system with lock address register in each processor for storing lock address sent to bus by another processor
JPS59180767A (ja) 直列化装置
US5287503A (en) System having control registers coupled to a bus whereby addresses on the bus select a control register and a function to be performed on the control register
GB2414573A (en) Control of access to a shared resource in a data processing apparatus
WO2012078775A1 (en) Programmable atomic memory using stored atomic procedures
US5136714A (en) Method and apparatus for implementing inter-processor interrupts using shared memory storage in a multi-processor computer system
JPH1115793A (ja) 資源の保全性を保護する方法
JP3797570B2 (ja) セマフォ命令用のセマフォ・バッファを用いた装置と方法
JPH0383154A (ja) 多重処理コンピュータ・システム及び方法
JP2003050789A (ja) 回路、プロセッサ、及びマルチプロセッサシステム
US5522029A (en) Fault tolerant rendezvous and semaphore for multiple parallel processors
JP2000003302A (ja) 共有メモリ排他アクセス制御方法
JP2015158936A (ja) データ処理装置
KR960003065B1 (ko) 정보처리장치
EP0297895B1 (en) Apparatus and method using lockout for synchronization of access to main memory signal groups in a multiprocessor data processing system
JP2001519937A (ja) コンピュータリソースのロック処理
JP2848437B2 (ja) マルチクラスタ排他制御装置
JPH02100755A (ja) 情報処理装置
JPH01300365A (ja) マルチプロセッサシステムの排他制御方式
JPH04343143A (ja) マルチプロセッサシステムにおける共有資源相互排除方式