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

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

Info

Publication number
JPH05324572A
JPH05324572A JP4282342A JP28234292A JPH05324572A JP H05324572 A JPH05324572 A JP H05324572A JP 4282342 A JP4282342 A JP 4282342A JP 28234292 A JP28234292 A JP 28234292A JP H05324572 A JPH05324572 A JP H05324572A
Authority
JP
Japan
Prior art keywords
address
register
bit
specific
bits
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
JP4282342A
Other languages
English (en)
Other versions
JP3381733B2 (ja
Inventor
Charles E Narad
チャールズ・イー・ナラド
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)

Abstract

(57)【要約】 【目的】 複数ビットレジスタ内で1つないし複数の特
定ビットを設定ないしクリアするため確実な原子アクセ
スを可能にするコンピュータ記憶レジスタ・アーキテク
チャを開示する。 【構成】 実施例では、多くの一意的なアドレスが複数
のビットレジスタに割り当てられる。1つのアドレスは
読取りアドレス、1つのアドレスはクリアアドレス、第
3のアドレスは設定アドレスからなる。アドレス解読器
はレジスタに指定されたアドレスを、それぞれ関連読取
り、クリア、設定操作のためにそのレジスタだけがアク
セスされるように解読する。論理ゼロのレジスタ位置等
価バイナリ・パターンを有するデータと設定ないしクリ
アするレジスタの特定ビット位置に対応するものは、設
定ないしクリアアドレスと関連付けられる。解読された
アドレスと関連したデータの位置等価バイナリ値が論理
1であれば、レジスタ内の対応するビットは設定される
かクリアされる。さもなくばそのビットは不変のままと
なる。

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つの特定の実施例を詳しく
説明するが、多くの別の実施例で同一結果をもたらすこ
とが明かとなろう。本発明の教示を取り入れた記憶レジ
スタ・アーキテクチャは、コンピュータシステム内で何
処でも実施できることが予測される。ここで好ましいと
されるように、ビットの設定ないしクリアを可能にする
レジスタは、割り込みステアリング・アーキテクチャ内
で実施される。本発明はどの様な多重プロセッサ・コン
ピュータシステムでも使用することが出来るが、カリフ
ォルニア州、マウンテンビューのサンシステムズ社によ
り製造された多重プロセッサ・コンピュータで機能する
ことを目的としている。以下に説明する本発明は、先に
挙げた継続出願、特に「動的ステアリング無向割込み」
の名称の継続出願番号 と共に機能することを意図
している。
【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の操作を以下の節で更に詳細に説
明する。図2を更に参照すると、レジスタ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は「設
定」、「クリア」、「選択」、「クロック」の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により判定され
るように、個々の設定ないしクリア、読取りビットを0
からNに設定する。図4に示すレジスタ12への特定の適
用では、フリップフロップ30への選択入力が図3に示す
ように解読されたそれぞれアドレスADDR4とADD
R8と関連したデータ27内の「n番目」の位置等価ビッ
ト28と22により起動される。0からNの全てのビット
は、アドレスADDR0と共に読取り命令が発せられた
ときに読み取られる。先の節で説明したように、本発明
で開示した設定ないしクリア原子アクセスアーキテクチ
ャは、本質的にその教示にしたがって構成されたレジス
タに対して「疑似レジスタ」機能を実施するものであ
る。疑似レジスタは一般に仮想的な非物理的記憶位置を
指すことを想起すべきである。疑似レジスタは、対象デ
ータを実際に格納する物理的レジスタに対して割り当て
られるアドレス以外のアドレスにより識別することが出
来る。従ってハードウエア内に物理的レジスタが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・・・位置等価ビット。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 バスに接続された多くのプロセッサを有
    するコンピュータシステムで、 複数のビットを格納するためにバスに接続されたそれぞ
    れが複数のアドレスにより識別される複数の制御レジス
    タからなるレジスタ手段と、 前記制御レジスタ内に格納された前記ビットにアクセス
    するために前記バスと前記レジスタ手段とに接続され、
    ある特定プロセッサにより発せられる前記アドレスの1
    つとデータ値からなるアドレス命令を受け取り、そのデ
    ータ値とアドレス命令内に含まれる前記アドレスにした
    がって特定の制御レジスタの特定ビットのみを変更する
    前記特定プロセッサを特定制御レジスタに、前記アドレ
    スの前記1つに応じて接続するアドレス手段とからなる
    原子アクセス制御レジスタ装置。
  2. 【請求項2】 バスに接続された多くのプロセッサを有
    するコンピュータシステムで、 ディジタルデータを格納するために前記バスに接続さ
    れ、それぞれが複数のアドレスと関連していて複数の格
    納位置を有して複数のビットを格納する複数の制御レジ
    スタからなるレジスタ手段と、 前記バスと前記レジスタ手段とに接続され、前記制御レ
    ジスタ内に格納された前記ビットにアクセスするアドレ
    ス解読手段を含むアドレス手段とからなるもので、 このアドレス手段は、特定プロセッサにより発せられ、
    特定の制御レジスタに対応した前記複数アドレスの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 true JPH05324572A (ja) 1993-12-07
JP3381733B2 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
US7174434B2 (en) 2001-02-24 2007-02-06 International Business Machines Corporation Low latency memory access and synchronization
US7529895B2 (en) 2003-08-22 2009-05-05 International Business Machines Corporation Method for prefetching non-contiguous data structures

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
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
JP4852427B2 (ja) * 2004-11-26 2012-01-11 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサシステム及びそれにおける排他制御方法
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
JP5527028B2 (ja) 2010-06-07 2014-06-18 株式会社ジェイテクト ボール螺子装置及び電動パワーステアリング装置
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7174434B2 (en) 2001-02-24 2007-02-06 International Business Machines Corporation Low latency memory access and synchronization
US7529895B2 (en) 2003-08-22 2009-05-05 International Business Machines Corporation Method for prefetching non-contiguous data structures

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
JP3381733B2 (ja) 2003-03-04
DE69231174T2 (de) 2001-03-01
US5287503A (en) 1994-02-15
EP0535820A3 (en) 1994-07-27

Similar Documents

Publication Publication Date Title
JP3381733B2 (ja) 原子アクセス制御レジスタ装置
JP5876458B2 (ja) Simdベクトルの同期
JP2745949B2 (ja) オペランド情報の静的および動的マスキングを同時かつ独立して行うデータ・プロセッサ
EP1008053B1 (en) Controlling memory access ordering in a multi-processing system
JP4977159B2 (ja) 特定のプロセッサを使ってアトミックなコンペア・アンド・スワップ命令を実行するための技術
US5889983A (en) Compare and exchange operation in a processing system
JP2776132B2 (ja) オペランド内の情報のスタティックおよびダイナミック・マスキングを兼ね備えるデータ処理システム
US6795901B1 (en) Shared memory interface with conventional access and synchronization support
KR20190108109A (ko) 캐시 라인 로킹을 이용한 원자적 프리미트브들의 구현
JPH05225061A (ja) 実時間キャッシュ機能を提供する集積回路用チップ
US5317749A (en) Method and apparatus for controlling access by a plurality of processors to a shared resource
KR20130085042A (ko) 구성 정보에 따라 원자 메모리 동작들을 수행하기 위한 방법들 및 메모리들
JP4130465B2 (ja) メモリ転送処理サイズが異なるプロセッサに関してアトミックな処理を実行するための技術
JPS5837587B2 (ja) メモリ・ロック装置
KR920005739B1 (ko) 기억부(memoryunit)에 사용되는 부분기입 제어회로.
JPS61264378A (ja) 記憶回路
JP3381079B2 (ja) キャッシュメモリを用いた排他制御システム
US7017015B2 (en) Method and system for coordinating the access of data by two computer processes
JPH0486943A (ja) 共有メモリの排他制御方式
JPH0348962A (ja) バスロック制御方式
JP3256387B2 (ja) 排他制御方法、プロセッサおよび計算機システム
EP0425843A2 (en) Enhanced locked bus cycle control in a cache memory computer system
JPS62119661A (ja) 共有メモリに対するアクセス管理方式
JP3996355B2 (ja) マルチプロセッサシステム
JP2629400B2 (ja) 自己同期型パイプライン処理装置

Legal Events

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