JP3381733B2 - 原子アクセス制御レジスタ装置 - Google Patents

原子アクセス制御レジスタ装置

Info

Publication number
JP3381733B2
JP3381733B2 JP28234292A JP28234292A JP3381733B2 JP 3381733 B2 JP3381733 B2 JP 3381733B2 JP 28234292 A JP28234292 A JP 28234292A JP 28234292 A JP28234292 A JP 28234292A JP 3381733 B2 JP3381733 B2 JP 3381733B2
Authority
JP
Japan
Prior art keywords
register
address
control
bits
bit
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
JP28234292A
Other languages
English (en)
Other versions
JPH05324572A (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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH05324572A publication Critical patent/JPH05324572A/ja
Application granted granted Critical
Publication of JP3381733B2 publication Critical patent/JP3381733B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/52Indexing scheme relating to G06F9/52
    • G06F2209/521Atomic

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は一般にコンピュータシス
テム・ハードウエアに関し、特にコンピュータシステム
・プロセッサ内の制御装置と状況レジスタのハードウエ
ア・アーキテクチャに関する。
【0002】
【従来の技術】コンピュータシステムはしばしば、一時
的なデータの記憶ないし制御目的でレジスタを利用す
る。レジスタは通常、一般に1から4バイトに渡り複数
ビットの情報を同時に格納できるように構成されてい
る。コンピュータ・プロセッサで生成された論理ゼロや
1の形のデータがレジスタに格納することが出来、続い
てプロセッサで再読取りされる。コンピュータの操作を
制御する際、オペレーティング・システムではしばしば
複数ビットレジスタ内に格納されたビット集合中の単一
ビットを残りビットに影響を与えることなく修正するこ
とが必要になる。そのような場合、オペレーティング・
システムは読取り・修正・書込みサイクルを実行し、そ
れによりCPUは記憶レジスタ内に含まれる情報を読取
り、内容を修正し、続いて修正した内容をレジスタに再
び書き込む。読取り・変更・書込み操作により、プロセ
ッサは後のデータ処理ないし計算操作で必要になる特定
制御パラメータのビットを設定ないしクリアすることが
出来る。
【0003】読取り・修正・書込みサイクルの実行は、
通常単一プロセッサシステムで用いられる。しかし1つ
以上のマスタ装置がレジスタにアクセスする等しい機会
を持つ多重プロセッサ環境では、1つのマスタがオーバ
ーライトしたり、修正、変更、あるいは別のマスタ装置
により先に格納されたレジスタの内容と接続したりする
可能性が実質的にある。図1を簡単に参照すると、記憶
レジスタを共用する2つのプロセッサが示されており、
ここで両方のプロセッサは単一レジスタ上で読取り・修
正・書込みサイクルを並列に行っている。図1から、マ
スタBがその最終書込み操作を完了すると、マスタBは
マスタAの書込み操作を無効になすることが分かる。多
重プロセッサシステムの重要な要件は、特定マスタによ
り格納された情報は別のマスタにより後に無効にされる
ことはないということである。特定レジスタの内容の状
態は、そのような内容をそのレジスタに格納するように
したマスタ装置と一致しているが、これは「コヒーレン
ス」として知られている。1つ以上のマスタがレジスタ
内に格納された情報を修正する機会を持つ多重プロセッ
サ環境でのコヒーレンスは、おもにキャッシュ・メモリ
・アーキテクチャに関して問題となるものである。キャ
ッシュ・メモリを組み込んだ多重プロセッサ・アーキテ
クチャでは、特定マスタに関するキャッシュの一貫性は
特に重要である。
【0004】従来技術では、キャッシュ・コヒーレンス
問題を防ぐ主要な方法は、図2に示すようにいわゆる
「相互排他ロック」を呼び出すことである。相互排他ロ
ックは、ソフトウエアで特定マスタが特定レジスタにア
クセスする前に、そのレジスタと交信して制御すること
をアクセスするマスタのみに許可する信号ないしフラッ
グの所有権を得るセマフォである。相互排他ロックは一
般にフラッグを含むハードウエア・レジスタと交換操作
を実行しているマスタにより呼び出される。マスタはフ
ラッグの内容を読取り、その後一部非ゼロ値をレジスタ
にロードする。その際、読取り、書込みの両操作は、交
換操作の間にそのレジスタに他のマスタが読取り、書込
みが出来ないようにして行われる。マスタは次に交換中
にレジスタから読み取った内容の値をテストし、即ちレ
ジスタ内容が「0」に等しければロックは「フリー」で
あったことになり、マスタはレジスタ内容が一部非ゼロ
に等しければ、ロックは「フリー」でないと宣言するこ
とが出来、マスタはそのロックを使用することが否定さ
れる。マスタは一般的に交換とテスト操作をロックが
「フリー」であることを示すテスト値が「0」になるま
で行い続ける。ロックはロックを制御するマスタが
「0」をフラッグ・レジスタに書き込むことにより解除
される。例えば図2に示すように、ロックはマスタが交
換操作を実行するときに設定され、マスタは一部の非ゼ
ロ値<lock_busy>を格納する。次にマスタは
ロックレジスタに先に格納された内容の値を基準値<l
ock_free>に対してテストする。先に格納され
た内容が<lock_free>と等しければ、マスタ
はそれがロックの所有者であると判定する。
【0005】
【発明が解決しようとする課題】相互排他ロックの制御
により、プロセッサは格納された情報は後に別のプロセ
ッサによる予期しないアクセスにより破壊されるかも知
れないという懸念無しにレジスタにアクセスして情報を
格納することが出来る。更にフラッグを設定することに
よりロックを主張したマスタだけが、フラッグをクリア
することによりそのロックを解除することが出来る。相
互排他ロックは従来技術でよく知られており、ロック機
能をもたらすソフトウエア・アルゴリズムはいくつか存
在する。多重プロセッサシステムでは、そのような相互
排他ロックが多く存在し、オペレーティング・システム
・ソフトウエアはそのようなロックを頻繁に用いて、重
要なコードが何時実行されるか、あるいは重要なレジス
タが何時アクセスされるかを示している。しかし相互排
他ロックを使用する場合は、ロック機能をもたらすため
にかなりの追加処理時間並びに追加コード・スペースを
必要とする。速度が重要な演算では、複数ロックを使用
することは実質的にシステムの性能を阻害したり、落と
すことになる得る。以下に説明するように、本発明は従
来技術で提供された時間集中的なソフトウエア・インタ
ロック・メカニズムを必要とせずに、多重プロセッサ環
境のシステム記憶レジスタ内に格納されたデータとマス
タとの間のコヒーレンスを確保する単純なレジスタ・ア
ーキテクチャを開示する。更に、本発明により、共用レ
ジスタの1つないし複数の個々のビットにアクセスし
て、従来技術用にソフトウエア・インタロックを必要と
せずに、直接的活動時に修正することが出来る。
【0006】
【課題を解決するための手段】本発明は多重プロセッサ
環境内のレジスタ構造のための方法と装置を提供するも
のであり、プロセッサは間違ったマスタによる原子アク
セスレジスタの意図しないアクセスを防ぎながら、ソフ
トウエア・インタロック無しにレジスタ内の1つないし
複数の特定ビットを設定又はクリアするために、共用レ
ジスタに原子的にアクセスする。複数の独自のアドレス
が複数ビット原子アクセスレジスタに割り当てられてい
る。実施例では、3つのアドレスが各々の原子アクセス
レジスタに割り当てられている。1つのアドレスはクリ
ア・アドレス、第2のアドレスはセット・アドレス、第
3のアドレスは読取りアドレスである。各々のアドレス
は他の全てのアドレスから異なっている。アドレス解読
器は、プロセッサがレジスタアクセス命令を発すると
き、各々の原子キャッシュレジスタに指定されたアドレ
スを解読する。アドレス解読器により解読されると、各
々のアドレスは同一の物理レジスタを指し、2つのアド
レスは「疑似レジスタ」を指す。論理ゼロの位置等価バ
イナリ・パターンを持つデータと設定ないしクリアする
物理レジスタの特定ビット位置に等価なものは、それぞ
れ設定及びクリア・アドレスと連関される。読取りアド
レスとはデータは連関されない。原子アクセスレジスタ
内の各々のビットは、設定、クリア、選択、システム・
クロック入力及び出力イネーブルを持つフリップフロッ
プで形成されている。特定フリップフロップ用の選択入
力は、解読されたアドレスと関連した位置等価バイナリ
・データにしたがって活性化される。変更する特定ビッ
トに対応するデータが論理1であれば、レジスタ内にそ
のデータビットを含むフリップフロップが選択される。
一度選択されると、選択されたビットを含むレジスタと
関連したアドレスがそれぞれ設定ないしクリア機能から
なるかどうかにより、ビットが設定ないしクリアされ
る。アクセスされた物理レジスタの残りのビットは同様
に、対応する疑似レジスタにアクセスするアドレスと関
連した残りの位置等価バイナリデータにしたがって変更
される。レジスタの各々のフリップフロップの出力可能
は、発せられたアドレスが読取りアドレスであるときレ
ジスタの各々のビットの内容をアクセスするプロセッサ
に送る。
【0007】
【実施例】多重プロセッサ・コンピュータシステムにお
いて、各々のプロセッサが、ソフトウエア・インタロッ
クを必要とせずに1つないし複数の特定ビットを設定な
いしクリアするために共用レジスタに原子的にアクセス
するレジスタ・アーキテクチャを開示する。以下の説明
では、本発明の完全な理解をもたらすために説明のため
に特定の数、時間、信号などを述べるが、当業者には本
発明はそれらの特定の詳細なしに実施することが出来る
ことが明かとなろう。他の例では、よく知られた回路や
装置をブロック図形式で示し、本発明を不必要に曖昧に
しないようにしている。本発明は多くの実施例で実施す
ることが出来る。以下には2つの特定の実施例を詳しく
説明するが、多くの別の実施例で同一結果をもたらすこ
とが明かとなろう。本発明の教示を取り入れた記憶レジ
スタ・アーキテクチャは、コンピュータシステム内で何
処でも実施できることが予測される。ここで好ましいと
されるように、ビットの設定ないしクリアを可能にする
レジスタは、割り込みステアリング・アーキテクチャ内
で実施される。本発明はどの様な多重プロセッサ・コン
ピュータシステムでも使用することが出来るが、カリフ
ォルニア州、マウンテンビューのサンシステムズ社によ
り製造された多重プロセッサ・コンピュータで機能する
ことを目的としている。以下に説明する本発明は、先に
挙げ出願、特に「動的ステアリング無向割込み」の名
称の米国特許出願番号07/767023号と共に機能
することを意図している。
【0008】ここで図3を参照すると、2つの原子アク
セスレジスタを示すブロック図が示されている。しかし
特定の多重プロセッサ・コンピュータシステム設計で
は、どの様な数の原子アクセスレジスタをも実施するこ
とが出来る。図3で、複数ビットレジスタ10が既知の方
法で形成されている。レジスタ10は複数の個々のビット
15により形成されている。レジスタ10内に含まれるビッ
ト15の数に関しては、実際上の制限はなく、レジスタ10
は一般的にコンピュータシステム・バス(図示せず)が
収容できるだけ多くのビットを含んでいる。実施例では
レジスタ10は32ビットワイドである。レジスタ10と関連
したものに複数アドレス25がある。図3に示すように、
個々のアドレスのADDR0,ADDR4、ADDR8
はすべてレジスタ10を指している。プロセッサ(図示せ
ず)によって実行され、アドレス解読器(図示せず)に
より解読されると、アドレス25はプロセッサにレジスタ
10にアクセスすることを許可する。プロセッサとアドレ
ス解読器は、従来技術で一般に知られるように形成され
ている。どのアドレス25がプロセッサにより実行される
かによって、レジスタ10に対する活動が異なることに留
意することが重要である。レジスタ10の詳細も解読器の
実施方法による。説明のためにアドレス25に対して特定
のアドレス値を割り当てているが、各々のアドレスが一
意的であり、解読可能で、全体的なシステム・アーキテ
クチャと一致するならば、本発明内ではどの様なアドレ
ス値でも機能することが理解されよう。
【0009】レジスタ10を構成する個々のビット15に対
する活動は、アドレス命令がプロセッサにより実行され
るときに、各々のアドレス25と関連したデータ27により
制御される。特にレジスタ10内の個々のビット16は、ア
クセスするプロセッサにより実行されるアドレス命令内
の特定アドレス25と関連したデータ27のバイナリ表現の
位置等価ビット28で表すことが出来る。即ち、実行され
る特定のアドレス25と関連したデータ27のバイナリ・デ
ータ等価内の位置等価ビット28位置は、レジスタ10内の
物理的ビット16が作用されるかどうかを制御する。レジ
スタ10内の個々のビット15を制御する際の関連データ27
と関連したアドレス25の操作を以下の節で更に詳細に説
明する。図を更に参照すると、レジスタ10上で読取り
操作を行うために割り当てられたアドレス25はADDR
0である。プロセッサにより実行され、アドレス解読器
により解読されると、ADDR0はレジスタ10を指し示
し、プロセッサはレジスタ10内に含まれる全てのビット
15のデータを読取る。レジスタ10内のビット15は読取り
操作中に変更されないので、アドレス25が読取りを行う
ために割り当てられたとき、アドレス25と関連したデー
タ27はない。クリア操作を行うために割り当てられるア
ドレスはADDR4である。プロセッサにより実行され
て解読されると、ADDR4もレジスタ10を指し示す。
しかし読取り操作と関連したADDR0アドレスとは異
なり、ADDR4アドレスはクリアするビット15をマス
クするデータ27と関連している。次にプロセッサはレジ
スタ10の特定ビット15をADDR4と関連したデータ27
と等価のバイナリの位置等価ビット28にしたがってクリ
アする。位置等価ビット28が論理1であるならば、位置
等価ビット28に対応したビット16は論理0に設定され
る。ビット16は、位置等価ビット28が論理0ならば、不
変のままとなる。最後の設定操作を行うために割り当て
られるアドレス25はADDR8である。プロセッサによ
り実行され、解読されると、ADDR8もレジスタ10を
指し示す。上記のADDR4の場合のように、データ27
はアドレスADDR8と関連する。プロセッサはレジス
タ10の各々のビット16をアドレスADDR8と関連した
データ27とバイナリ等価の位置等価ビット22にしたがっ
て設定する。位置等価ビット22が論理1ならば、位置等
価ビット22に対応するビット16は論理1に設定される。
位置等価ビット22が論理0ならば、ビット16は不変のま
まとなる。
【0010】レジスタ11を構成する個々のビット17に対
する活動は、プロセッサによりアドレス命令が実行され
るとき、アドレス26の各々に関連したデータ27により制
御される。特に、レジスタ11内の個々のビット18は、ア
クセスするプロセッサにより実行される特定アドレス26
と関連したデータ27のバイナリ表現の位置等価ビット29
で表すことが出来る。即ち、実行される特定のアドレス
26と関連したデータ27のバイナリ・データ等価の位置等
価ビット29の位置は、レジスタ11内の物理的ビット18が
作用されるかどうかを制御する。レジスタ11内の個々の
ビット17を制御する際の関連データ27と関連したアドレ
ス26の操作を以下の節で更に詳細に説明する。図3を更
に参照すると、レジスタ11上で読取り操作を行うために
割り当てられたアドレス26はADDRCである。プロセ
ッサにより実行され、アドレス解読器により解読される
と、ADDRCはレジスタ11を指し示し、プロセッサは
レジスタ11内に含まれる全てのビット17のデータを読取
る。アドレス26が読取りを行うために割り当てられたと
き、レジスタ11内のビット17は読取り操作中に変更され
ないので、アドレス26と関連したデータ27はない。クリ
ア操作を行うために割り当てられるアドレスはADDR
10である。プロセッサにより実行されて解読されると、
ADDR410レジスタ11を指し示す。しかし読取り操作
と関連したADDRCアドレスとは異なり、ADDR10
アドレスはクリアするビット17をマスクするデータ27と
関連している。次にプロセッサはレジスタ11の特定ビッ
ト17をADDR10と関連したデータ27のバイナリ等価の
位置等価ビット29にしたがってクリアする。位置等価ビ
ット29が論理1であるならば、位置等価ビット29に対応
したビット18は論理0に設定される。ビット17は、位置
等価ビット29が論理0ならば、不変のままとなる。最後
に設定操作を行うために割り当てられるアドレス26はA
DDR14である。プロセッサにより実行され解読される
と、ADDR14もレジスタ11を指し示す。上記のADD
R10の場合のように、データ27はアドレスADDR14と
関連する。プロセッサはレジスタ11の各々のビット18を
アドレスADDR14と関連したデータ27のバイナリ等価
の位置等価ビット23にしたがって設定する。位置等価ビ
ット23が論理1ならば、位置等価ビット23に対応するビ
ット18は論理1に設定される。位置等価ビット23が論理
0ならば、ビット18は不変のままとなる。
【0011】ここで図4を参照すると、Nビット原子ア
クセスレジスタ12の実施を示すブロック図が示されてい
る。図4で、レジスタ12のフリップフロップ30は「n番
目」のビットを格納する。フリップフロップ30は「設定
(SET)」、「クリア(CLR)」、「選択(SELECT)」、「クロ
ック(CLK)」の4つの入力を持っている。レジスタ12と
関連しているのが、アドレス解読器35である。アドレス
解読器35は既知の設計を持ち、既知の方法で実施される
ハードウエア解読器で、アドレス回線用の適切な入力並
びに有効な読取りないし書込み操作が進行中であること
を示す信号を受け取るために「読取りイネーブル(RD
−EN)」、「書込みイネーブル(WR−EN)」入力
を持っている。アドレス解読器35はフリップフロップ
30の設定クリア入力に、レジスタ12を構成する残りの
各々のフリップフロップの設定クリア入力に、それぞ
接続された「設定」「クリア」の2つの入力を持っ
ている。アドレス解読器35の読取り出力は、フリップフ
ロップ30及びレジスタ12を構成する残りの全てのフリッ
プフロップの出力イネーブル(OE)入力に接続されて
いる。レジスタ12と関連したアドレスサイクル中及び読
取り操作が行われていることを示すプロセッサ(図示せ
ず)からの適切な信号が存在する間、出力イネーブルは
アサートされる。図3、4に示すように、フリップフロ
ップ30の選択入力は、アドレス25と関連したデータ27か
ら導出され、特にフリップフロップ30と関連したデータ
27の位置等価バイナリ表現から導出される。フリップフ
ロップ30とアドレス解読器35のクロック入力は、コンピ
ュータ内に分散されたシステムクロック信号から取って
いる。
【0012】作動の際は、アドレス回線上に表れるアド
レスはアドレス解読器35により制御されるレジスタ12と
対応するとアドレス解読器35が判定すると、アドレス解
読器35はアドレス25と関連したデータ27により判定さ
れたように、個々の設定ないしクリア、読取りを行う
図4に示すレジスタ12への特定の適用では、フリップフ
ロップ30への選択入力が図3に示すように解読されたそ
れぞれアドレスADDR4とADDR8と関連したデー
タ27内の「n番目」の位置等価ビット28と22により起動
される。0からNの全てのビットは、アドレスADDR
0と共に読取り命令が発せられたときに読み取られる。
先の節で説明したように、本発明で開示した設定ないし
クリア原子アクセスアーキテクチャは、本質的にその教
示にしたがって構成されたレジスタに対して「疑似レジ
スタ」機能を実施するものである。疑似レジスタは一般
に仮想的な非物理的記憶位置を指すことを想起すべきで
ある。疑似レジスタは、対象データを実際に格納する物
理的レジスタに対して割り当てられるアドレス以外のア
ドレスにより識別することが出来る。従ってハードウエ
ア内に物理的レジスタが1つしか存在しなくとも、物理
的レジスタはレジスタで複数の機能を果たすことを可能
にする複数のアドレスにより識別することが出来る。
【0013】ここで図7によって、レジスタビットの読
取り、設定、クリアを制御するアドレス及び関連データ
の特定の例を説明する。図7には、読取り、書込みコマ
ンドと関連したアドレスとデータが示されている。更に
図7には、アドレスにより指示された特定レジスタ(図
示せず)の最終レジスタ内容が示されている。図7で例
示目的で、レジスタは4ビットレジスタと想定してい
る。図7で、4ビットレジスタの内容を構成するバイナ
リデータは、最初は1とゼロの任意の組合せである。レ
ジスタ内の全てのビット位置をクリアすることが最初に
望まれると想定する。レジスタのビットをクリアするた
め、オペレーティング・システムは図3に関して上記で
説明した書込み−クリア操作に割り当てられたアドレス
即ちADDR4を用いて、レジスタに書込みを行う。物
理的レジスタ内の特定のバイナリ位置をバイナリデータ
値の等価ビット位置に関連付ける本発明によれば、バイ
ナリ表現の位置等価ビットが論理1に設定されたとき、
特定ビットが選択される。従ってレジスタ内の全てのビ
ット位置をクリアするには、全ての4ビット位置を選択
する必要がある。全ての4ビットを選択するには、デー
タ表現の全ての位置等価バイナリビットを論理1に設定
する必要がある。4ビットレジスタに付いては、バイナ
リデータ表現は「1111」となる。バイナリ1111
は16進表記ではFと等価である。従って4ビットレジス
タ内の全てのビット位置をクリアするには、制御プロセ
ッサにより実行される合成命令は、WRT ADDR4
FHとなる。
【0014】遂行する次の操作は、レジスタ内の特定ビ
ットを設定するものと想定する。更に設定するビットは
最上位ビットであると想定する。レジスタ内に最上位ビ
ットを設定するには、「1000」のバイナリ表現が要
求される。図3と上記の説明から、設定コマンドと関連
したアドレスはアドレスADDR8となる。従ってレジ
スタの最上位ビットを設定する際、合成命令はWRT
ADDR8 8Hとなる。更に次の操作は、レジスタ内
の下から2番目の最下位ビットを設定することであると
する。ここでも設定するアドレスはADDR8である。
下から2番目の最下位ビットを設定してアドレスADD
R8と関連したデータは、「0010」ないし2Hに等
しいデータとなる。従ってレジスタ内で下から2番目の
最下位ビットを設定する合成命令はWRT ADDR8
2Hとなる。ここでレジスタの内容は読取りであるとす
る。図3に示す上記の説明からの読取りアドレスはアド
レスADDR0である。注目すべきことに、オペレーテ
ィング・システムは読み取っているレジスタからデータ
を受け取ることを期待しているので、読取りコマンドと
関連したデータはない。従ってレジスタを読み取る命令
はRD ADDR0となる。読取りコマンドを実行する
と、レジスタ内容が読取りを要求しているプロセッサの
読取り入力に表れる。次に最上位ビットをクリアすると
する。従って最上位ビットを選択する書込み−クリアア
ドレスADDR4が実行される。最上位ビットは、4番
目のビット位置、即ちバイナリ1000を選択するデー
タを書き込むことにより達成される。従って最上位ビッ
トをクリアする合成命令はWRTADDR4 8Hとな
る。最後にレジスタの内容を再び読み取ることが望まれ
る。上述のように、読取りコマンドはアドレスADDR
0と関連したデータを必要としない。従って合成命令は
RD ADDR0となる。上記の例にしたがって実行さ
れた各々の命令に付いて、図4は、各々の操作ステップ
に続いてレジスタの最終内容を示している。
【0015】先の節で説明したように、本発明の主要な
属性は、多重ステップ命令サイクル中に、意図しないプ
ロセッサによるレジスタへの意図しないアクセスを避け
ることが出来るということである。従って、多重プロセ
ッサ・コンピュータシステムで多重プロセッサにより共
用されるレジスタ内にプロセッサで格納されるデータと
そのようなプロセッサとの間のコヒーレンスが維持され
る。機能的に、物理的レジスタ10及び11を指し示すアド
レス25と26の1つを選択することで、それぞれレジスタ
10、11内での活動が決定される。即ちレジスタ10と関連
した全てのアドレス25はレジスタ10でしか作動しないの
で、特定プロセッサのためにレジスタ10内で格納された
データのコヒーレンスは確保される。レジスタ10は解読
したときにプロセッサをレジスタ10に結び付けるアドレ
スを実行するプロセッサによってしかアクセスされな
い。機能の独自性はアドレス26によりレジスタ11で相似
的に得ることが出来る。従って一意的なレジスタアドレ
スは、従来技術で遭遇したコヒーレンス問題を回避しつ
つ、多重プロセッサによりアクセス出来るレジスタの十
分な選択を提供する。
【0016】本発明の他の重要な属性は、レジスタ内の
個々のビットは、多重ステップの読取り・修正・書込み
サイクルを必要とせずに、原子的に設定ないしクリア出
来るということである。本発明は位置等価バイナリデー
タ・パターンの個々のビットを設定ないしクリアする物
理的レジスタの実際のビットのマスクとして用いる。マ
スタとマスタにより格納されたデータの間のデータコヒ
ーレンスを維持するための厄介なコードスペースや時間
集中的ソフトウエア・インタロック方式の必要性はそれ
により取り除かれる。
【0017】当業者には、読取り命令は、書込み−設定
アドレスないし書込み−クリア・アドレスをプロセッサ
により発せられる適切な読取り可能信号と共に用いるこ
とにより実施できることが理解されよう。第1の実施例
のように3つの別々のアドレスを用いて読み取るか、ど
ちらかの書込みアドレスを用いて読み取るかは、完全に
設計者の自由裁量による。以前の第1世代(即ち4ビッ
ト)プロセッサでは、アドレススペースは限定され、大
きな値の全てのアドレスもそうであった。最近の32ビッ
ト及びそれ以上のプロセッサでは、アドレススペースは
一般的に装置に対してブロックで割り当てられ、それは
予期される離散アドレスの数をはるかに越えている。従
って2アドレス原子アクセス・レジスタを構築するか、
3アドレス原子アドレス・レジスタを構成するかは、全
く設計者の好みの問題である。2アドレス実施に対して
3アドレス実施を選択することはもちろん、アドレス解
読器の設計に影響を与える。ここで図8を参照すると、
レジスタへの原子アクセスの本発明の第2の実施例が示
されている。図8で、レジスタ40は上記のように構築さ
れた複数ビットレジスタである。単一のアドレス45はレ
ジスタ40のみを指し示す。アドレス45と関連しているの
は、そのバイナリ等価性がレジスタ40内の個々のビット
41を設定ないしクリアするマスクを提供するデータ47で
ある。この第2の実施例では、レジスタ40の単一ビット
42は、操作が設定ないしクリア命令なのかを示すフラッ
グとして示される。このフラッグ機能を果たすビットは
レジスタ40内に含まれる任意のビットでもよい。残りの
ビットはデータを通常の方法で格納する。図8に示すよ
うに、第2の実施例では最上位ビット42がフラッグとし
て用いられ、1は操作はビットを設定し、0はビットを
クリアすることを示す。従ってこの第2の実施例にした
がって原子アクセス・レジスタを実施すると、先の実施
例よりも1ビット少なく設定ないしクリアすることにな
る。即ちNビットで形成された原子アクセスレジスタで
は、第1ないし第2の実施例の原子アクセスレジスタは
Nビットを設定ないしクリアするのに対して、第2の実
施例はレジスタのN−1ビットを設定ないしクリアす
る。論理1に等しいアドレス命令と関連したデータ47の
バイナリ等価の最上位ビット48でのレジスタ40への書込
みコマンドにより、データ47のバイナリ等価の残りのビ
ットはレジスタ40内に含まれた個々のビット41を設定す
るビット・マスクとして割り込まれることになる。他
方、書込み命令で発せられたデータ47のバイナリ等価の
最上位ビット42が論理0であれば、バイナリ等価の残り
のビットは、レジスタ40の個々のビットをクリアするビ
ットマスクとして割り込まれることになる。第2の実施
例では、最上位ビット42の状態は読取り操作では無意味
である。
【図面の簡単な説明】
【図1】複数マスタ環境がオーバーライトあるいはレジ
スタの意図しない修正を生じることのある従来技術で遭
遇するコヒーレンス問題を例示する。
【図2】図1に示すコヒーレンス問題に対する従来技術
の解決法を示し、ソフトウエア相互排他ロックにより他
のマスタによりアクセスされている特定レジスタへのマ
スタのアクセスを防ぐ。
【図3】3つの別々のアドレスを各々の物理的原子的ア
クセス・レジスタに割り当て、各々のアドレスは関連ビ
ットマスクを担持する本発明の実施例を示す。
【図4】原子的アクセスレジスタ内のフリップフロック
の設定、クリア、読取りアドレス選択回線を例示する。
【図5】本発明の実施例で用いられるアドレス解読器の
論理表である。
【図6】原子的アクセスレジスタを含むフリップフロッ
プの論理表である。
【図7】読取り、書込み操作に付いてレジスタへの原子
的アクセス例を例示する。
【図8】本発明の第2の実施例を例示し、単一アドレス
が各々の物理的、原子アクセス・レジスタに割り当てら
れるが、原子的機能は関連ビットマスクの単一ビットに
より制御される。
【符号の説明】
10、11・・・レジスタ、25、26・・・アドレ
ス、27・・・データ、28・・・位置等価ビット。
フロントページの続き (56)参考文献 特開 平2−116951(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 15/177 G06F 12/00 G06F 9/30

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】 バスに接続された複数のプロセッサを有
    するコンピュータシステムにおける原子アクセス制御レ
    ジスタ装置であって前記バスに接続されて複数のビットを格納する複数の制
    御レジスタを含むレジスタ手段を備え、前記複数の制御
    レジスタのそれぞれで複数の機能が行われ、前記複数の
    制御レジスタのそれぞれが複数のアドレスで特定され、
    それらの複数のアドレスのそれぞれによって、特定の制
    御レジスタと、その特定の制御レジスタで行われる特定
    の機能とが選択されるものであり前記バスおよび前記レジスタ手段に接続されて前記制御
    レジスタに格納されたビットにアクセスするアドレス手
    段を備え前記アドレス手段は、特定のプロセッサから発生された
    アドレス命令を受け、そのアドレス命令には前記複数の
    アドレスのうちの1つとデータ値とが含まれており前記アドレス手段は、前記特定のプロセッサを特定の制
    御レジスタに接続し、前記特定の制御レジスタ中の特定
    のビットにアクセスしてそれらの特定のビットについて
    特定の機能が行われるようになし、前記特定の制御レジ
    スタおよび前記特定の機能は、前記複数のアドレスのう
    ちの前記1つによって決定され、前記特定の制御レジス
    タ中の前記特定のビットは、前記アドレス命令中の前記
    データ値によって決定されるように構成されていることを特徴とする 原子アクセス制御レジスタ装置。
  2. 【請求項2】 バスに接続された複数のプロセッサを有
    するコンピュータシステムにおける原子アクセス制御レ
    ジスタ装置あって前記バスに接続されて複数のビットを格納する複数の制
    御レジスタを含むレジスタ手段を備え、それらの制御レ
    ジスタのそれぞれは 複数の記憶位置を有して複数のビッ
    トを格納するものであり、前記複数の制御レジスタのそ
    れぞれで複数の機能が行われ、前記複数の制御レジスタ
    のそれぞれが複数のアドレスで特定され、それらの複数
    のアドレスのそれぞれによって、特定の制御レジスタ
    と、その特定の制御レジスタで行われる特定の機能とが
    選択されるものであり; 前記バスと前記レジスタ手段とに接続され、前記制御レ
    ジスタ内に格納された前記ビットにアクセスするアドレ
    ス解読手段を含むアドレス手段を備え; 前記アドレス手段は、特定のプロセッサからアドレス命
    令が発生されるとそのアドレス命令を受け、そのアドレ
    ス命令には前記複数のアドレスのうちの1つと、ビッ
    トマスクを構成する、記憶位置等価バイナリデータ表現
    を有するデータ値とが含まれており; 前記アドレス解読手段は、前記複数のアドレスのうちの
    前記1つを解読し、前記特定のプロセッサを当該アドレ
    スで指定された特定制御レジスタに接続前記アドレス手段は、前記特定の制御レジスタ中の特定
    のビットにアクセスしてそれらの特定のビットについて
    特定の機能が行われるようになし、前記特定の機能は、
    前記複数のアドレスのうちの前記1つによって決定さ
    れ、前記特定の制御レジスタ中の前記特定のビットは、
    前記アドレス命令中の前記データ値の前記記憶位置等価
    バイナリデータ表現により構成されたビットマスクに従
    って決定されるように構成されていることを特徴とする 原子アクセス制御レジスタ装置。
  3. 【請求項3】 バスに接続された複数のプロセッサを有
    するコンピュータシステムにおいて原子アクセス制御を
    行う方法であって: 複数のビットを格納する複数の制御レジスタを含むレジ
    スタ手段にして、前記複数の制御レジスタのそれぞれで
    は複数の機能が行われ得るようにした、レジスタ手段を
    準備するステップを備え前記複数の制御レジスタのそれぞれに対して複数のアド
    レスを割り当てるステップを備え、それらの複数のアド
    レスのそれぞれによって、特定の制御レジスタと、その
    特定の制御レジスタで行われる特定の機能との選択が可
    能とされ ; 前記制御レジスタ内に格納されているビットにアクセス
    するアドレス手段を準備するステップを備えこのアドレス手段に、前記複数のアドレスのうちの1つ
    とデータ値とが含まれているアドレス命令を与えるステ
    ップを備え前記アドレス手段を用い、前記アドレス命令を発生した
    特定のプロセッサを、特定の制御レジスタに接続し、そ
    の特定の制御レジスタ中の特定のビットのみについて特
    定の機能が行われるようにするステップを備え、前記特
    定の制御レジス タおよび前記特定の機能はアドレスによ
    って決定され、前記特定のビットは、前記アドレス命令
    中の前記データ値によって決定されるように構成されて
    いることを特徴とする原子アクセス制御を行う方法
JP28234292A 1991-09-27 1992-09-28 原子アクセス制御レジスタ装置 Expired - Fee Related JP3381733B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/767,122 US5287503A (en) 1991-09-27 1991-09-27 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
US767122 1991-09-27

Publications (2)

Publication Number Publication Date
JPH05324572A JPH05324572A (ja) 1993-12-07
JP3381733B2 true JP3381733B2 (ja) 2003-03-04

Family

ID=25078543

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28234292A Expired - Fee Related JP3381733B2 (ja) 1991-09-27 1992-09-28 原子アクセス制御レジスタ装置

Country Status (5)

Country Link
US (1) US5287503A (ja)
EP (1) EP0535820B1 (ja)
JP (1) JP3381733B2 (ja)
KR (1) KR970011207B1 (ja)
DE (1) DE69231174T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006057208A1 (ja) * 2004-11-26 2006-06-01 International Business Machines Corporation マルチプロセッサシステム及びそれにおける排他制御方法
EP2392837A2 (en) 2010-06-07 2011-12-07 JTEKT Corporation Ball screw apparatus and electric power steering apparatus

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2078913A1 (en) * 1991-12-12 1993-06-13 John J. Reilly Interprocessor communication system and method for multiprocessor circuitry
JP2688164B2 (ja) * 1993-07-26 1997-12-08 インターナショナル・ビジネス・マシーンズ・コーポレイション 情報処理システム
US5574922A (en) * 1994-06-17 1996-11-12 Apple Computer, Inc. Processor with sequences of processor instructions for locked memory updates
JP2682469B2 (ja) * 1994-09-20 1997-11-26 日本電気株式会社 命令コード符号化方式
EP0715252B1 (en) * 1994-11-14 2000-05-10 Nec Corporation A bit field peripheral
JPH0916472A (ja) * 1995-07-04 1997-01-17 Fujitsu Ltd キャッシュメモリ試験方法
US5790888A (en) 1996-08-12 1998-08-04 Seeq Technology, Inc. State machine for selectively performing an operation on a single or a plurality of registers depending upon the register address specified in a packet
US6230219B1 (en) * 1997-11-10 2001-05-08 International Business Machines Corporation High performance multichannel DMA controller for a PCI host bridge with a built-in cache
US6484251B1 (en) * 1999-10-14 2002-11-19 International Business Machines Corporation Updating condition status register based on instruction specific modification information in set/clear pair upon instruction commit in out-of-order processor
US6795901B1 (en) 1999-12-17 2004-09-21 Alliant Techsystems Inc. Shared memory interface with conventional access and synchronization support
US6782440B2 (en) * 2000-07-26 2004-08-24 T.N.S. Holdings, Inc. Resource locking and thread synchronization in a multiprocessor environment
DE10103546A1 (de) * 2001-01-26 2002-08-01 Thomson Brandt Gmbh Verfahren zum Steuern einer Peripherieeinrichtung mittels einer Zentraleinrichtung sowie Einrichtungen zur Nutzung des Verfahrens
JP3963372B2 (ja) 2001-02-24 2007-08-22 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システム
US20030126414A1 (en) * 2002-01-02 2003-07-03 Grochowski Edward T. Processing partial register writes in an out-of order processor
US7174405B1 (en) * 2003-06-06 2007-02-06 Cisco Technology, Inc. Method and system for replacing a read-modify-write operation with an atomic set-bits or clear-bits operation
US7529895B2 (en) 2003-08-22 2009-05-05 International Business Machines Corporation Method for prefetching non-contiguous data structures
CN102150132A (zh) * 2008-09-10 2011-08-10 瑞萨电子株式会社 信息处理装置
US8397005B2 (en) 2010-03-16 2013-03-12 St-Ericsson Sa Masked register write method and apparatus
US9063831B1 (en) * 2012-12-21 2015-06-23 Cadence Design Systems, Inc. Method and apparatus for optimizing access to control registers in an emulation chip
US9916217B2 (en) * 2016-01-05 2018-03-13 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Accessing hidden diagnostic registers
US11928329B2 (en) * 2021-12-02 2024-03-12 Nxp B.V. System and method for managing access to registers

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4085106A (en) * 1976-01-07 1978-04-18 E. I. Du Pont De Nemours And Company Bicyclic and tricyclic trisaminomethanes
JPS6037477B2 (ja) * 1976-06-02 1985-08-26 株式会社日立製作所 デイスプレイ装置
US4086658A (en) * 1976-10-04 1978-04-25 International Business Machines Corporation Input/output and diagnostic arrangements for programmable machine controllers having multiprogramming capabilities
US4194241A (en) * 1977-07-08 1980-03-18 Xerox Corporation Bit manipulation circuitry in a microprocessor
JPS60702B2 (ja) * 1978-08-30 1985-01-09 株式会社東芝 通信制御装置
US4520439A (en) * 1981-01-05 1985-05-28 Sperry Corporation Variable field partial write data merge
JPS59103153A (ja) * 1982-12-06 1984-06-14 Fujitsu Ltd デ−タ処理装置
US4663728A (en) * 1984-06-20 1987-05-05 Weatherford James R Read/modify/write circuit for computer memory operation
US5201039A (en) * 1987-09-30 1993-04-06 Mitsubishi Denki Kabushiki Kaisha Multiple address-space data processor with addressable register and context switching
US4862155A (en) * 1987-10-26 1989-08-29 Tektronix, Inc. Graphic display system with secondary pixel image storage
JPH02284229A (ja) * 1989-04-25 1990-11-21 Nec Corp マイクロプロセッサの状態記憶装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006057208A1 (ja) * 2004-11-26 2006-06-01 International Business Machines Corporation マルチプロセッサシステム及びそれにおける排他制御方法
JPWO2006057208A1 (ja) * 2004-11-26 2008-08-07 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Maschines Corporation マルチプロセッサシステム及びそれにおける排他制御方法
JP4852427B2 (ja) * 2004-11-26 2012-01-11 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサシステム及びそれにおける排他制御方法
EP2392837A2 (en) 2010-06-07 2011-12-07 JTEKT Corporation Ball screw apparatus and electric power steering apparatus

Also Published As

Publication number Publication date
KR970011207B1 (ko) 1997-07-08
EP0535820B1 (en) 2000-06-14
DE69231174D1 (de) 2000-07-20
EP0535820A2 (en) 1993-04-07
KR930006541A (ko) 1993-04-21
DE69231174T2 (de) 2001-03-01
US5287503A (en) 1994-02-15
JPH05324572A (ja) 1993-12-07
EP0535820A3 (en) 1994-07-27

Similar Documents

Publication Publication Date Title
JP3381733B2 (ja) 原子アクセス制御レジスタ装置
JP5876458B2 (ja) Simdベクトルの同期
JP4309420B2 (ja) 特定のspeを使ってcellプロセッサのアトミックなコンペア・アンド・スワップ命令を実行するための技術
JP2776132B2 (ja) オペランド内の情報のスタティックおよびダイナミック・マスキングを兼ね備えるデータ処理システム
US6795901B1 (en) Shared memory interface with conventional access and synchronization support
US4430707A (en) Microprogrammed digital data processing system employing multi-phase subroutine control for concurrently executing tasks
JP2625277B2 (ja) メモリアクセス装置
JPH10134008A (ja) 半導体装置およびコンピュータシステム
KR20190108109A (ko) 캐시 라인 로킹을 이용한 원자적 프리미트브들의 구현
KR20130085042A (ko) 구성 정보에 따라 원자 메모리 동작들을 수행하기 위한 방법들 및 메모리들
JPH0526217B2 (ja)
JPS5837587B2 (ja) メモリ・ロック装置
JP4130465B2 (ja) メモリ転送処理サイズが異なるプロセッサに関してアトミックな処理を実行するための技術
US5615374A (en) Lock control method for resource
JPS61264378A (ja) 記憶回路
JP3256387B2 (ja) 排他制御方法、プロセッサおよび計算機システム
US7017015B2 (en) Method and system for coordinating the access of data by two computer processes
EP0425843A2 (en) Enhanced locked bus cycle control in a cache memory computer system
JPH0348962A (ja) バスロック制御方式
JPH0486943A (ja) 共有メモリの排他制御方式
JPS62119661A (ja) 共有メモリに対するアクセス管理方式
JP3996355B2 (ja) マルチプロセッサシステム
JP2629400B2 (ja) 自己同期型パイプライン処理装置
US20040034758A1 (en) System for producing addresses for a digital signal processor
JPH033047A (ja) 演算機能付きメモリ

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees