JPH07302200A - 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。 - Google Patents

順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。

Info

Publication number
JPH07302200A
JPH07302200A JP7104356A JP10435695A JPH07302200A JP H07302200 A JPH07302200 A JP H07302200A JP 7104356 A JP7104356 A JP 7104356A JP 10435695 A JP10435695 A JP 10435695A JP H07302200 A JPH07302200 A JP H07302200A
Authority
JP
Japan
Prior art keywords
instruction
load
cpu
instructions
ordered
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.)
Pending
Application number
JP7104356A
Other languages
English (en)
Inventor
Dale C Morris
デイル・シー・モーリス
Barry J Flahive
バリー・ジェイ・フラヒヴ
Michael L Ziegler
マイケル・エル・ズィーグラー
Jerome C Huck
ジェローム・シー・ハック
Stephen G Burger
ステファン・ジー・バーガー
Rugby B L Lee
ルビー・ビー・エル・リー
Bernard L Stumpf
バーナード・エル・スタンフ
Jeff Kurtze
ジェフ・カーツェ
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH07302200A publication Critical patent/JPH07302200A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【目的】 コンピュータの実行において、ロード動作に
影響を与えずに記憶動作を保護し、且つ追加CPU時間
を必要としない新しい命令を提供する。 【構成】 全ての前の記憶動作が完了するまでCPUが
その記憶動作を実行することを妨げる命令である順序付
け記憶命令と、CPU自体のロード動作が完了するまで
CPUが次のロード動作を実行することを妨げる順次付
けロード命令を提供することにより、複数のCPUから
なるシステムの効率を向上できる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピューターに使用
されるロード命令に関するものであり、より詳細には、
順序付けロード命令よりも後のロード命令の実行を妨げ
る方法に関する。
【0002】
【従来の技術】初期のディジタル・コンピュータは、何
らかの結果を得るためにプログラム中の命令を実行する
責任を負う単一の中央演算処理装置(CPU)を組み込
んでいた。このような単一プロセッサ・システムは一般
に、非常に簡単なプロセッサ実行モデルを有する。すな
わち、CPUは、ハードウェアが命令を一度に1つず
つ、実行中の特定のプログラムで命令が現れる順序で実
行するようにプログラマに見えるように命令を実行す
る。これは「プログラム順」実行と呼ばれ、この命令実
行方法は今日、パーソナル・コンピュータなどで広く使
用されている。
【0003】コンピュータの設計者は、より高い速度を
達成するために、同じコンピュータ・システムにおいて
複数のCPUを組み合わせている。これによって、単一
のCPUがすべてのプログラムを順次に実行するのでは
なく、各CPUがプログラムの一部を並行的に実行する
ので、各々のCPUの実行が速くなり全体としてより高
速コンピュータになる。
【0004】複数のCPUからなるコンピュータ・シス
テムが効果的に動作するには、各CPUが両方向に通信
できなければならない。この問題を解決するために、一
般に、CPUは、相互にアクセスできる共用メモリを使
用することによって両方向に通信する。共用メモリを相
互通信に使用できる1つの例は「メールボックス」方式
であり、この方式は本明細書においては、本発明の実施
例として採用されている。複数のCPUからなるコンピ
ュータでは、1つのCPUが動作を実行し、その動作の
結果が他のCPUによって使用されることが多い。この
ような相互関係にあるCPUが通信する1つの方法は、
「メールボックス」を「フラグ」と共に使用するように
することである。即ち、例えば第1のCPUが、第2の
CPUに使用できるようにデータを置くメールボックス
としてメモリ中のある位置が指定される。第2のCPU
は、自分自身が使用できる有効なデータがメールボック
スにあるかどうかを確認する特定のビット・パターン
(フラグ)を探すために、指定されたメモリ位置を読み
取る。本発明を理解するには、メールボックス・プロセ
スがどのように働くかを理解することが有用である。
【0005】図7および図8は、2つのCPU間のメー
ルボックス通信技法を示す。図7は、プロセッサ1が実
行するプログラム・コード・セクションを101で示し
ており、2つの命令が詳細に示されている。第1の命令
103によって、プロセッサ1はメールボックス位置に
データを記憶する。第2の命令105によって、プロセ
ッサ1はメールボックス・フラグをセットする。プロセ
ッサ2が実行するプログラム・コード・セクションが1
07で示されており、4つの命令が詳細に示されてい
る。第1の命令109によって、プロセッサ2はメール
・フラグをロードし、第2の命令111によって、プロ
セッサ2は、フラグがセットされている(メールボック
スに有効なデータがあることを示す)かどうかを調べる
ためにフラグを試験する。分岐命令113によって、プ
ロセッサ2は、フラグがセットされていない場合(命令
111によって判定される)、ループ・バックしてメー
ル・フラグを再ロードする(命令109)。フラグがセ
ットされている場合、プロセッサ2は分岐命令113よ
りも先に進み、次の命令115を実行する。この命令に
よって、プロセッサ2はメールボックス中のデータをロ
ードする。
【0006】図7に示した、プロセッサ1および2によ
る命令の実行の一例を図8に示す。これらは「順次一
貫」CPUの命令実行であり、これは、これらのCPU
がすべての命令をプログラム順に実行し、後の動作は、
前の動作がすべて完了するまで実行されないことを意味
する。プロセッサ1は、時間(T4)でメールボックス
にデータを記憶し(命令103)、次いで、時間(T
5)でメール・フラグを記憶する(命令105)。時間
(T0)〜(T3)によって示される期間中、プロセッ
サ1は、図示していない他の命令を実行する。この例で
は、プロセッサ2は、時間(T0)でメール・フラグを
ロードし(命令109)、時間(T1)で、フラグがセ
ットされているかどうかを調べるための検査を行う(命
令111)。分岐命令(113)は、時間(T2)で実
行され、フラグがプロセッサ1によってセットされてい
ないため、分岐命令によって、プロセッサ2は分岐して
メール・フラグ命令109をロードし、時間(T3)で
メール・フラグを再ロードする。フラグは時間(T4)
で再び検査され、フラグがセットされていないため、分
岐命令によって、プロセッサ2は再び分岐して、メール
・フラグ命令をロードする。この命令は、時間(T6)
で実行される。フラグは時間(T7)で再検査され、フ
ラグがプロセッサ1によってセットされているため、時
間(T8)で実行される分岐命令によってプロセッサ2
が分岐することはなく、したがって、プロセッサ2は次
に時間(T9)で、メールボックス中のデータをロード
する(命令115)。
【0007】この例では、プロセッサ2は、プロセッサ
1がメールボックス・データを記憶してフラグをセット
するまでメールボックスからのロードを行わないので、
妥当なメールボックス・データをロードすることを保証
される。
【0008】図8に示したプログラム順による実行は、
依然として有用な実行方法であるが、制限を有する。プ
ログラム順による実行では、全ての命令を順次に実行す
る必要がある。従って、前の命令を完了できない場合、
後の命令を実行することはできない。残念なことに、特
定の命令を直ちに実行することができないことが多い。
例えば、入出力装置が必要なデータを準備していないの
で、入出力命令を直ちに実行することはできない。した
がって、CPUは入出力装置が待っている間、実行でき
るあとの命令は待機しなければならない。高性能コンピ
ュータ・システムでは、そのような非効率を許容するこ
とはできない。
【0009】コンピュータの設計者は、このボトルネッ
クに対処するために、無関係の前の命令が完了する前に
後の命令を実行できるCPUを設計した。このようなC
PUは、順次一貫性を維持しない。順次一貫性によって
課される制約をなくせば、性能上の利益が得られるが、
それによって、マルチプロセッサ・コンピュータにおけ
る問題も発生する。たとえば、CPUが前の命令をすべ
て実行していないうちに後の命令を実行できる場合、メ
ールボックスおよびフラグを使用することによる通信は
失敗することがある。
【0010】マルチプロセッサのメールボックスの問題
の簡単な例を図9に示す。この図は、図7で詳細に説明
した命令が、命令を必ずしも順次一貫した方法で実行す
るわけではないCPUによって実行される命令を示した
ものである。プロセッサ1は、2つの動作を実行する。
第1の動作103は、時間(T4)中にメールボックス
にデータを記憶することであり、第2の動作は、時間
(T5)中にメール・フラグ105を記憶することであ
る。プロセッサ2は、時間(T0)でメール・フラグを
ロードし(109)、次いで、時間(T1)中に、メー
ル・フラグがセットされているかどうかを調べるための
検査を行う(111)。しかし、メール・フラグは時間
(T5)にならない限りプロセッサ1によって記憶され
ず、従って、プロセッサ2によって実行されるフラグ試
験は失敗し、時間(T2)で実行される分岐命令113
によって、プロセッサ2はメール・フラグのロードにル
ープ・バックする。プロセッサがメール・フラグをただ
ちにロードできず、例えば、メール・フラグがキャッシ
ュではなくメイン・メモリにある場合、プロセッサは、
メール・フラグのロードの実行を中断する。しかし、プ
ロセッサ2は、次のメールボックス・データのロード
(115)を実行できるので、これを実行する。即ち、
CPUは、この情報を後で実行する必要はないと「仮
定」し、したがって、このロードを実行して時間を節約
する。CPUは、時間(T4)でメール・フラグの再ロ
ードを完了し、時間(T5)でフラグを再試験する。こ
の第2回目の試みで、プロセッサ2はフラグがセットさ
れていることを知り、したがって、時間(T6)で実行
される分岐命令によってプロセッサ2が分岐することは
ない。プロセッサ2はすでに時間(T3)中にメールボ
ックスからのデータのロードを完了しているので、ロー
ドを再実行せず(仮定が正しかったと仮定する)、引き
続き、プログラム中の次の命令117を実行する。しか
し、プロセッサ2はメールボックス中の無効なデータを
読み取ることになる。これは受け入れられない結果であ
る。
【0011】したがって、プログラムが適切に実行され
るような何らかの手段をプログラマに与えなければなら
ない。プログラマは、命令を順次に実行し、かつ前の動
作が完了するまで次の動作を実行しないことをマルチプ
ロセッサ・システムに強制できなければならない。従来
技術のシステムは、「バリア」命令を使用することによ
ってこの問題を解決した。この命令は、バリア命令の前
にあるすべての動作が完了する前にバリア命令の後にあ
る動作が実行されることを妨げる。ロード動作または記
憶動作は、プログラム順に開始されるが、一般的な設計
慣習のためにそれらの動作が順不同に完了することに留
意されたい。すなわち、後で開始された動作は、前の動
作が完了する前に完了することができる。
【0012】図10および図11は、バリア命令を使用
して、図9に示した問題が発生するのを防ぐことを示
す。図10は、各CPUが実行するプログラムの一部を
リストアップしたもので、前記で論じたのと同じもので
あり、「メールボックス中のデータのロード命令」11
5の前に追加バリア命令401が置かれている。プロセ
ッサ1は、時間(T4)および時間(T5)中にそれぞ
れ、動作103および105を実行する。プロセッサ2
は、図9に関連して論じたのと同じ動作を時間(T0)
ないし時間(T2)で実行する。しかし、分岐命令11
3の後で、メールボックス中のデータのロード命令11
5の前に、バリア命令401が追加されている。したが
って、プロセッサ2がフラグを試験して、フラグがセッ
トされていないことを知った後、バリア命令によって、
プロセッサ2が「仮定を行い」メールボックス中のデー
タをロードすることが妨げられ、プロセッサ2は、次の
命令に進む前にフラグのロード・試験動作を完了してお
くことを強制される。メール・フラグの再ロードが遅延
し、プロセッサがメールボックス・データをロードでき
る場合でも、バリア命令は、次の命令に進む前にすべて
の未処理命令を完了しておくことをプロセッサに強制す
る。メールボックスからのデータのロードは最終的に、
メールボックス・データが有効なものである時間(T1
2)で達成される。バリア命令を使用することによっ
て、プロセッサ2がメールボックスから無効なデータを
ロードすることが防止された。この例は、13個の時間
単位が使用され、1時間単位当りに1CPU当り1つの
命令が実行されることを示す。しかし、異なるCPUハ
ードウェア設計では、同じ命令を実行するのに、より長
い、あるいは、より短い相対時間がかかる。
【0013】ロード動作に関する問題を図9に示した
が、同じ問題が記憶動作にも発生する。記憶の問題の一
例を図12に示す。この例では、プロセッサ1は、時間
(T0)でメールボックス(501)にデータを記憶す
ることはできないが、時間(T1)でフラグ(503)
を記憶することができる。これは、何らかの理由でプロ
セッサ1がメールボックス・メモリを使用できない場合
に発生することがある。プロセッサ1が時間(T1)で
フラグを記憶した場合、プロセッサ2はフラグを読み取
り、次いで、メールボックスから無効なデータをロード
する。プロセッサ1が時間(T4)までメールボックス
・データを記憶しなかったので、メールボックス・デー
タは無効である。
【0014】
【発明が解決しようとする課題】しかしながら、従来技
術のコンピュータ・システムは実際に、図11及び図1
2に示したように、フラグの記憶(601)の前、およ
びメールボックスからのロード(603)の前に、バリ
ア命令を使用する。残念なことに、バリア命令は、すべ
ての前の命令を完了するまでバリア命令よりも先に進ま
ずに待機することをCPUに強制する。これは多くの場
合、非効率的である。たとえば、ロードが適切に実行さ
れるようにバリア命令を使用する場合、このバリア命令
によって、保護されているロードに無関係の次の記憶が
行われることも妨げられる。記憶動作がバリア命令によ
って保護されているときは、逆のことが発生する恐れも
ある。CPUがバリア命令を実行するにはかなり時間が
かかるので、バリア命令を使用することによって追加非
効率な結果となってしまう。
【0015】従って、業界で必要とされているものは、
ロード動作に影響を与えずに記憶動作を保護し、あるい
は、記憶動作に影響を与えずにロード動作を保護し、か
つ追加したCPUに要する時間を必要とせずにそれを実
行する方法に解決しなければならない課題を有してい
る。
【0016】
【課題を解決するための手段】上記課題を解決するため
に、本発明は、新しいコンピュータ命令を提供すること
によって前述の問題を解消する。すべての前の記憶動作
が完了するまでCPUがその記憶動作を実行することを
妨げる新しい記憶命令が提供される。CPU自体のロー
ド動作が完了するまでCPUが次のロード動作を実行す
ることを妨げる新しいロード命令が提供される。
【0017】記憶コマンドが記憶バリア・コマンドと組
み合わされるようなCPU記憶命令がコード化される。
この結果は、バリア命令のない記憶命令が実行されるの
と同じ時間でCPUによって実行できる単一の命令であ
る。ロード命令が、ロード・バリア命令と組み合わさ
れ、バリア命令のないロード命令と同じ数のCPUサイ
クルで実行されるようなCPUロード命令もコード化さ
れる。これらの新しい命令を「ordered loa
d(順序付けロード)」および「orderedsto
re(順序付け記憶)」として識別する。
【0018】プログラマは、これらの新しい命令を使用
することによって、メールボックスおよび類似のトラン
ザクションが実行されるときにCPUによって正しいデ
ータが使用されるように命令を実行することをコンピュ
ータ・システムに強制することができる。また、新しい
命令は、必要な同期を行い、同時に、CPUが以後の無
関係な動作を実行し、最初の無関係な動作を遅延させら
れるようにし、それによって、関連するコンピュータ・
システムの全体的な効率を向上させる。さらに、バリア
命令に関連する従来の時間面の問題が解決する。
【0019】
【実施例】ヒューレット・パッカード・プレシジョン・
アーキテクチャ縮小命令セット・コンピュータ(Hew
lett−Packard Precision Ar
chitecture Reduced Instru
ction Set Computer、PA−RIS
C)アーキテクチャ命令セットは当技術分野で周知であ
る。カリフォルニア州Palo Altoのヒューレッ
ト・パッカード社によって発行された「PA−RISC
1.1 Architecture and Ins
truction Set Referrence M
anual」資料番号09740−90039は、PA
−RISCアーキテクチャ命令セットを記載している公
的に入手可能な文献であり、引用によって本明細書に合
体されている。
【0020】本発明は、「順序付けロード」と「順序付
け記憶」の2つの新しいコンピュータ命令を提供する。
これらの命令は多くのコンピュータ・システムで有用で
あるが、PA−RISCアーキテクチャを使用するコン
ピュータで特に有用である。これらの命令は、PA−R
ISC1.1命令で通常行われているようにコード化さ
れ、それらの命令が使用されているとき、特殊な命令デ
ィテクタがそれを検出する。これらの新しい命令のうち
の1つが検出されると、ディテクタは、順序付けロード
命令または順序付け記憶命令を実行することをCPUに
強制する。
【0021】図1は、検出プロセスの概略図を示す。命
令レジスタ701は、命令コード703とキー・ビット
705とを有する命令を保持する。定義により、この例
では、命令コード「1111」とキー・ビット「1」と
を有する命令は、順序付け記憶動作である。「and」
ゲート707は、すべての命令コード・ビットおよびキ
ー・ビットが「1」であるときそれを検出する。この条
件が検出されたとき、「and」ゲートは「オーダー」
線709上で「1」を出力する。CPU命令実行制御装
置711は、オーダー線709を監視し、すべての前の
記憶動作が完了するまで現状の記憶動作を中断する。
【0022】図2は、順序付けロード動作を検出する検
出プロセスの概略図を示す。前述のように、命令レジス
タ701は、命令コード703とキー・ビット705と
を含む命令を保持する定義により、この例では、命令コ
ード「1111」とキー・ビット「0」とを有する命令
は、順序付けロード命令である。インバータ・ゲート8
01は、キー・ビット位置705の内容を反転し、「a
nd」ゲート805に入力803を提供する。命令コー
ド703中のビットも「and」ゲート805に送り込
まれる。「and」ゲートが、すべての命令コード・ビ
ットが「1」であり、キー・ビットが「0」であること
を検出すると、「and」ゲートは「オーダー」線80
7上で「1」を出力する。CPU命令実行制御装置は、
オーダー線807を監視し、前のロード命令が完了する
まですべての以後のロード命令を中断する。
【0023】これらの新しい命令は、当業者には周知の
ように特定のコンピュータ・アーキテクチャに最適なよ
うにコード化することができ、好都合である。また、命
令検出手段は必然的に、本明細書で開示した利点から逸
脱せずに特定のアーキテクチャに応じて多数の形をと
る。PA−RISCアーキテクチャの場合、「順序付け
記憶」命令は、図3に示すようにコード化される。多数
のフィールドが示されているが、この議論に関連するフ
ィールドは、「命令コード」フィールド901、「a」
フィールド903、「m」フィールド905、フィール
ド「ext4」の第1ビット907、および変位フィー
ルド909「im5」である。順序付け記憶の場合、命
令コードは「03」、「a」フィールドは「0」、
「m」フィールドは「1」、「ext4」フィールドの
第1ビットは「1」、「im5」フィールドは「0」で
ある。他のフィールドは、PA−RISC1.1アーキ
テクチャのReference Manualの第5章
に記載されているのと同じ意味および目的を有する。
【0024】図4は、「ordered load」命
令用のコード化を示す。この場合も、命令コード901
は「03」、「a」フィールド903は「0」、「m」
フィールドは905は「1」、「im5」フィールドは
0である。この命令は、「ext4」フィールド907
の第1ビットが「0」であることによって、順序付け記
憶と区別される。好ましい実施例では、「順序付けロー
ド」は、ベース・レジスタを修正すべきであり(m=
1)、ロード後に修正が行われ(a=0)、0を追加す
ることによってベース・レジスタが修正される(Bas
e Reg=Base Reg+0)ことを指定するロ
ード・コマンドとして定義される。これによって、順序
付けロード命令および順序付け記憶命令が通常のロード
動作および記憶動作と同様に復号されるので、新しい命
令を使用するプログラムは、古く完全に順次型のPA−
RISCコンピュータ上で動作し、しかも適切に実行す
ることができる。
【0025】図5は、メールボックスへのデータの記憶
とフラグのセットに適用された順序付け記憶命令の使用
法を示す。プロセッサ1は、mailbox stor
e(メールボックスへの記憶)1101と、flag
store(フラグの記憶)1103と、data l
oad(データのロード)1105の3つの命令を実行
するようにプログラムされる。データのロード1105
はフラグの記憶1103とは無関係である。図のよう
に、メールボックスへのデータの記憶は、遅延し、時間
(T0)では完了できず、時間(T3)まで完了しな
い。プロセッサは、メールボックス・コマンドが完了す
るのを待つ間、メールボックス・フラグを記憶するため
に使用される順序付け記憶1103である次の命令に移
動する。しかし、未処理の前の記憶命令があるので、順
序付け記憶は、未処理のメールボックス記憶が完了する
まで中断される。したがって、メール・フラグの順序付
け記憶は時間(T4)で完了する。第3の命令1105
がロード命令であり、ロード命令が順序付け記憶コマン
ド1103の影響を受けないので、プロセッサは時間
(T2)でこの命令を実行する。
【0026】図6は、「順序付けロード」命令の使用法
を示す。「順序付けロード」によって、CPUは、「順
序付けロード」を完了するまで次のロードを実行するこ
とを妨げられる。プロセッサ2は、「順序付けロード」
メール・フラグ1201と、check flag(フ
ラグの検査)命令1203と、分岐(branchon
not flag)命令1205と、load fr
om a mailbox(メールボックスからのロー
ド)1207と、data store(データの記
憶)1209の5つの命令を実行するようにプログラム
される。データの記憶1209はロード1207とは無
関係である。時間(T0)で、プロセッサ2はメール・
フラグ1201をロードする。時間(T1)で、プロセ
ッサは、フラグが、メールボックスに有効なデータがあ
ることを示すようにセットされているかどうかを調べる
ために、前記フラグを試験する。この例のために、フラ
グがセットされていないと仮定すると、分岐命令120
5によって、CPUは最初に戻ってメール・フラグを再
ロードする。CPUは、再ロードを直ちに実行できない
場合、メール・フラグのロードが完了するのを待つ間
に、次の命令を実行しようとする。次の命令1207が
ロード・コマンドであり、メール・フラグのロードが
「順序付けロード」であったので、CPUはメールボッ
クスのロードを実行せず、その代わりに、時間(T3)
で記憶コマンド1209を実行する。時間(T4)で、
メール・フラグの順序付けロードが完了し、時間(T
5)で、フラグが再検査される。フラグが現在有効であ
ると仮定すると、分岐は発生せず、時間(T7)で、メ
ールボックス中のデータがロードされる。
【0027】新しい順序付けロード命令および順序付け
記憶命令ならびにその使用法によって、プログラマは、
特定の命令が特定の順序で実行されるようにし、しか
も、コンピュータが異なるタイプの命令の実行を継続で
きるようにすることができる。この柔軟性は、複数の命
令を実行するための追加CPU時間を必要とせずに達成
され、したがって、従来技術の設計に勝る効率上の顕著
な向上を表す。新しい命令を限られた1つの使用法、す
なわち、メールボックス通信で示したが、これらの命令
によって、以前は実施できなかったコンピュータ・ハー
ドウェア設計手法が可能になる。たとえば、2つのCP
U間で誤同期の恐れがあるときに作業を無駄にする必要
なしに、順不同で命令を開始するコンピュータを設計す
ることができる。CPUが命令を順不同で開始すること
は広く行われている。しかし、CPUは、それ自体が保
持するあるデータを求める要求を得たが、そのデータに
対する動作を順不同で実行していた場合、そのCPU
は、無効なデータを他のCPUに渡す危険を冒すことが
できず、順不同の作業を無駄にして作業を順次に再実行
しなければならない。データが有効である場合、CPU
は作業を順次に再実行する時間を無駄にし、要求を行っ
た他のCPUは作業が再実行されるのを待つ必要があ
る。順次に実行しなければならないロードおよび記憶は
現在、分かっているので、CPU間の同期の問題の恐れ
なしに他のすべてのロード動作および記憶動作を順不同
に実行することができる。キャッシュでミスする動作は
待機し、キャッシュで「ヒット」する他の動作はCPU
間の同期の問題なしに完了できるので、「非ブロッキン
グ」キャッシュおよび「非コヒーレント・ストア・バッ
ファ」を使用することも容易である。
【0028】PA−RISCアーキテクチャに関連して
好ましい実施例を説明したが、本明細書で開示した本発
明のこの仕様または実施態様を検討することによって当
業者には本発明の他の実施例が明らかになろう。仕様お
よび例は実施例としてのみ検討されるものであり、本発
明の真の範囲および趣旨は、特許請求の範囲によって示
される。
【0029】上記説明した実施例によって、本願発明
は、下記のように具現化することができる。
【0030】[1]一連のロード命令を含む命令ストリ
ームを実行するCPUによって実行されるロード動作を
順序付ける方法において、命令ストリーム中の順序付け
ロード命令を検出するステップと、CPUが、順序付け
ロード命令がCPUによって完了される前に、命令スト
リームにおける順序付けロード命令よりも後のロード命
令を実行するのを妨げるステップとを含むようにした順
次付けロード動作および順序付け記憶動作を強制する命
令を有するコンピュータのロード命令方法である。
【0031】[2]さらに、命令レジスタ中の命令を読
み取り、命令中の「命令コード」フィールドを所定のロ
ード・コードと比較して、その命令がロード命令である
ことを検出し、命令中の少なくとも1つの追加フィール
ドを所定のコードと比較して、その命令が順序付けロー
ド命令であることを検出することによって、順序付けロ
ード命令を検出する手段を含む上記[1]に記載の方法
である。 [3]さらに、命令レジスタを読み取り、命令が、CP
Uによってロード命令を実行すべきであり、レジスタを
修正すべきであり、ロード動作が完了した後にレジスタ
の修正を行うべきであり、かつレジスタに0を追加する
ことによってレジスタを修正すべきである(Reg=R
eg+0)ことを指定していることを検出することによ
って、順序付けロード命令を検出する手段を含む上記
[1]に記載の方法である。
【0032】[4]一連の記憶命令を含む命令ストリー
ムを実行するCPUによって実行される記憶動作を順序
付ける方法において、命令ストリーム中の順序付け記憶
命令を検出するステップと、CPUが、順序付け記憶命
令よりも前にCPUによって開始されたすべての記憶動
作の前に順序付け記憶命令記憶動作を実行するのを妨げ
るステップとを含んだ順次付けロード動作および順序付
け記憶動作を強制する命令を有するコンピュータのロー
ド命令方法である。
【0033】[5]さらに、命令レジスタ中の命令を読
み取り、命令中の「命令コード」フィールドを所定のロ
ード・コードと比較して、その命令が記憶命令であるこ
とを検出し、命令中の少なくとも1つの追加フィールド
を所定のコードと比較して、その命令が順序付け記憶命
令であることを検出することによって、順序付け記憶命
令を検出する手段を含む上記[4]に記載の方法であ
る。
【0034】[6]さらに、命令レジスタを読み取り、
命令が、CPUによって記憶命令を実行すべきであり、
レジスタを修正すべきであり、記憶動作が完了した後に
レジスタの修正を行うべきであり、レジスタに0を追加
することによってレジスタを修正すべきである(Reg
=Reg+0)ことを指定していることを検出すること
によって、順序付け記憶命令を検出する手段を含む上記
[4]に記載の方法である。
【0035】[7]ロード命令と記憶命令とを含む命令
ストリーム中の命令を実行する命令実行手段を有するデ
ィジタル・コンピュータにおいて、命令ストリーム中の
順序付け記憶命令および順序付けロード命令を検出する
検出手段と、検出手段と協動して、順序付けロード命令
が検出された場合、順序付けロード命令の次のロード命
令が、順序付けロード命令が命令実行手段によって実行
される前に実行されないように、命令実行手段を制御
し、順序付け記憶命令が検出された場合、順序付け命令
が、命令実行手段によって開始された記憶命令がすべて
完了しない限り実行されないように、命令実行手段を制
御する、制御手段とを備えたディジタル・コンピュータ
である。
【0036】[8]検出手段が、命令レジスタ中の命令
を読み取り、その命令がロード命令または記憶命令であ
ると判定し、次いで、命令の少なくとも1つのフィール
ドを所定のコードと比較して、命令が順序付けロード命
令または順序付け記憶命令であることを検出することに
よって、順序付け記憶命令または順序付けロード命令を
検出する上記[7]に記載のディジタル・コンピュータ
である。
【0037】
【発明の効果】上記説明したように、本発明に係るコン
ピュータ命令は、すべての前の記憶動作が完了するまで
CPUがその記憶動作を実行することを妨げる命令であ
り、プログラマは、これらの新しい命令を使用すること
によって、メールボックスおよび類似のトランザクショ
ンが実行されるときにCPUによって正しいデータが使
用されるように命令を実行することをコンピュータ・シ
ステムに強制することができる。また、新しい命令は、
必要な同期を行い、同時に、CPUが以後の無関係な動
作を実行し、最初の無関係な動作を遅延させられるよう
にし、それによって、関連するコンピュータ・システム
の全体的な効率を向上させることができると云う極めて
優れた効果を奏する。
【図面の簡単な説明】
【図1】簡略化された順序付け記憶命令検出装置を示す
図である。
【図2】簡略化された順序付けロード命令検出装置を示
す図である。
【図3】順序付け記憶命令の好ましいコード化を示す図
である。
【図4】順序付けロード命令の好ましいコード化を示す
図である。
【図5】順序付け記憶命令の典型的な使用法を示す図で
ある。
【図6】順序付けロード命令の典型的な使用法を示す図
である。
【図7】メールボックス通信を使用する2つの独立のC
PUに関する部分的な命令の流れを示す図である。
【図8】図1に示したコマンドの実行を示す図である。
【図9】非順次一貫CPUによる、図1に示したコマン
ドの実行を示す図である。
【図10】メールボックス通信を使用し、かつバリア命
令を組み込んだ、2つのCPUに関する部分的な命令の
流れを示す図である。
【図11】メールボックス・ロード動作の前にバリア命
令を使用する従来技術の方法を示す図である。
【図12】第1のCPUがメールボックス記憶動作を遅
延させる2つの独立のCUの部分的な命令フローを示す
図である。
【図13】フラグ記憶動作およびロード・メールボック
ス動作の前にバリア命令を使用する従来技術の方法を示
す図である。
【符号の説明】
701 命令レジスタ 703 命令コード 705 キー・ビット 709 オーダー線 711 CPU命令実行制御装置 803 入力 805 「and」ゲート 901 「命令コード」フィールド 903 「a」フィールド 905 「m」フィールド 907 「ext4」フィールドの第1ビット 909 「im5」フィールド 1101 メールボックス記憶命令 1105 データ・ロード命令 805 ANDゲート
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マイケル・エル・ズィーグラー アメリカ合衆国マサチューセッツ州ホワイ ティンスヴィル アイヴィー・レーン 166 (72)発明者 ジェローム・シー・ハック アメリカ合衆国カリフォルニア州パロアル ト トールスマン・ドライヴ 851 (72)発明者 ステファン・ジー・バーガー アメリカ合衆国カリフォルニア州サンタク ララ フォーブス・アヴェニュー 2257 (72)発明者 ルビー・ビー・エル・リー アメリカ合衆国カリフォルニア州ロスアル トス アサートン・コート 12933 (72)発明者 バーナード・エル・スタンフ アメリカ合衆国マサチューセッツ州シェル ムスフォード アクトン・ロード 50 (72)発明者 ジェフ・カーツェ アメリカ合衆国ニューハンプシャー州ナシ ュア スカイライン・ドライヴ 4

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 一連のロード命令を含む命令ストリーム
    を実行するプロセッサによって実行されるロード動作を
    順序付ける方法において、前記命令ストリーム中の順序
    付けロード命令を検出する手段と、前記プロセッサが、
    前記順序付けロード命令が完了される前に、前記命令ス
    トリームにおける前記順序付けロード命令よりも後のロ
    ード命令を実行するのを妨げる手段とを含むことを特徴
    とする順次付けロード動作および順序付け記憶動作を強
    制する命令を有するコンピュータのロード命令方法。
JP7104356A 1994-04-28 1995-04-27 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。 Pending JPH07302200A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US23490394A 1994-04-28 1994-04-28
US234-903 1994-04-28

Publications (1)

Publication Number Publication Date
JPH07302200A true JPH07302200A (ja) 1995-11-14

Family

ID=22883283

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7104356A Pending JPH07302200A (ja) 1994-04-28 1995-04-27 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。

Country Status (3)

Country Link
US (1) US6286095B1 (ja)
EP (1) EP0679993B1 (ja)
JP (1) JPH07302200A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014153851A (ja) * 2013-02-07 2014-08-25 Nec Computertechno Ltd 命令実行制御装置、命令実行制御システム、命令実行制御方法、及び、命令実行制御プログラム
JP2018523235A (ja) * 2015-07-21 2018-08-16 マコム・コネクティビティ・ソリューションズ・エルエルシー Dmb操作を伴うロード/ストア操作を使用するロード獲得/ストア解放命令の実装
JP2019200523A (ja) * 2018-05-15 2019-11-21 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2022518351A (ja) * 2019-01-31 2022-03-15 インターナショナル・ビジネス・マシーンズ・コーポレーション 入出力ストア命令をハンドリングする方法、システム、およびプログラム

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038646A (en) * 1998-01-23 2000-03-14 Sun Microsystems, Inc. Method and apparatus for enforcing ordered execution of reads and writes across a memory interface
US6442677B1 (en) * 1999-06-10 2002-08-27 Advanced Micro Devices, Inc. Apparatus and method for superforwarding load operands in a microprocessor
US6678810B1 (en) 1999-12-30 2004-01-13 Intel Corporation MFENCE and LFENCE micro-architectural implementation method and system
US7085914B1 (en) * 2000-01-27 2006-08-01 International Business Machines Corporation Methods for renaming stack references to processor registers
US6748518B1 (en) 2000-06-06 2004-06-08 International Business Machines Corporation Multi-level multiprocessor speculation mechanism
US6606702B1 (en) * 2000-06-06 2003-08-12 International Business Machines Corporation Multiprocessor speculation mechanism with imprecise recycling of storage operations
US6625660B1 (en) * 2000-06-06 2003-09-23 International Business Machines Corporation Multiprocessor speculation mechanism for efficiently managing multiple barrier operations
US6963967B1 (en) * 2000-06-06 2005-11-08 International Business Machines Corporation System and method for enabling weak consistent storage advantage to a firmly consistent storage architecture
US6691220B1 (en) * 2000-06-06 2004-02-10 International Business Machines Corporation Multiprocessor speculation mechanism via a barrier speculation flag
US6728873B1 (en) 2000-06-06 2004-04-27 International Business Machines Corporation System and method for providing multiprocessor speculation within a speculative branch path
US6725340B1 (en) * 2000-06-06 2004-04-20 International Business Machines Corporation Mechanism for folding storage barrier operations in a multiprocessor system
US6609192B1 (en) * 2000-06-06 2003-08-19 International Business Machines Corporation System and method for asynchronously overlapping storage barrier operations with old and new storage operations
US6880073B2 (en) * 2000-12-28 2005-04-12 International Business Machines Corporation Speculative execution of instructions and processes before completion of preceding barrier operations
US7490218B2 (en) * 2004-01-22 2009-02-10 University Of Washington Building a wavecache
US7657882B2 (en) * 2004-01-22 2010-02-02 University Of Washington Wavescalar architecture having a wave order memory
WO2005121948A1 (en) * 2004-06-02 2005-12-22 Sun Microsystems, Inc. Method and apparatus for enforcing membar instruction semantics in an execute-ahead processor
US7606998B2 (en) * 2004-09-10 2009-10-20 Cavium Networks, Inc. Store instruction ordering for multi-core processor
EP1995682A1 (fr) * 2007-05-21 2008-11-26 Stmicroelectronics Sa Personnalisation d'un microprocesseur et procédé de protection de données
US9280343B2 (en) * 2009-08-10 2016-03-08 Oracle America, Inc. Store queue with token to facilitate efficient thread synchronization
US9052890B2 (en) 2010-09-25 2015-06-09 Intel Corporation Execute at commit state update instructions, apparatus, methods, and systems
US9904616B2 (en) * 2011-12-14 2018-02-27 International Business Machines Corporation Instruction output dependent on a random number-based selection or non-selection of a special command from a group of commands
US8935513B2 (en) 2012-02-08 2015-01-13 International Business Machines Corporation Processor performance improvement for instruction sequences that include barrier instructions
US20150317158A1 (en) 2014-04-03 2015-11-05 Applied Micro Circuits Corporation Implementation of load acquire/store release instructions using load/store operation with dmb operation
US10191748B2 (en) * 2015-11-30 2019-01-29 Intel IP Corporation Instruction and logic for in-order handling in an out-of-order processor
DE112020000146B4 (de) 2019-01-31 2025-01-16 International Business Machines Corporation Verfahren, datenverarbeitungssystem und computerprogrammprodukt zur handhabung einer eingabe-/ausgabe-speicheranweisung
KR102681251B1 (ko) * 2019-01-31 2024-07-04 인터내셔널 비지네스 머신즈 코포레이션 입/출력 저장 명령의 처리
TWI773959B (zh) 2019-01-31 2022-08-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
JP2021043737A (ja) * 2019-09-11 2021-03-18 富士通株式会社 バリア同期システム、バリア同期方法及び並列情報処理装置
CN111857825B (zh) 2020-07-20 2024-10-29 昆仑芯(北京)科技有限公司 指令执行方法、装置、电子设备、存储介质和程序产品
US12572358B2 (en) * 2021-06-25 2026-03-10 Intel Corporation System, apparatus and methods for minimum serialization in response to non-serializing register write instruction

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4439828A (en) * 1981-07-27 1984-03-27 International Business Machines Corp. Instruction substitution mechanism in an instruction handling unit of a data processing system
JPS6432379A (en) * 1987-07-29 1989-02-02 Hitachi Ltd Computer
US5175829A (en) * 1988-10-25 1992-12-29 Hewlett-Packard Company Method and apparatus for bus lock during atomic computer operations
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
US5261067A (en) * 1990-04-17 1993-11-09 North American Philips Corp. Method and apparatus for providing synchronized data cache operation for processors in a parallel processing system
US5193167A (en) * 1990-06-29 1993-03-09 Digital Equipment Corporation Ensuring data integrity by locked-load and conditional-store operations in a multiprocessor system
US5230051A (en) * 1990-09-04 1993-07-20 Hewlett-Packard Company Distributed messaging system and method
US5408658A (en) * 1991-07-15 1995-04-18 International Business Machines Corporation Self-scheduling parallel computer system and method
US5363495A (en) * 1991-08-26 1994-11-08 International Business Machines Corporation Data processing system with multiple execution units capable of executing instructions out of sequence
IE80854B1 (en) * 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014153851A (ja) * 2013-02-07 2014-08-25 Nec Computertechno Ltd 命令実行制御装置、命令実行制御システム、命令実行制御方法、及び、命令実行制御プログラム
JP2018523235A (ja) * 2015-07-21 2018-08-16 マコム・コネクティビティ・ソリューションズ・エルエルシー Dmb操作を伴うロード/ストア操作を使用するロード獲得/ストア解放命令の実装
JP2019200523A (ja) * 2018-05-15 2019-11-21 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2022518351A (ja) * 2019-01-31 2022-03-15 インターナショナル・ビジネス・マシーンズ・コーポレーション 入出力ストア命令をハンドリングする方法、システム、およびプログラム

Also Published As

Publication number Publication date
EP0679993B1 (en) 1998-11-04
EP0679993A2 (en) 1995-11-02
US6286095B1 (en) 2001-09-04
EP0679993A3 (en) 1996-09-11

Similar Documents

Publication Publication Date Title
JPH07302200A (ja) 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。
JP2597811B2 (ja) データ処理システム
US5293500A (en) Parallel processing method and apparatus
US6772368B2 (en) Multiprocessor with pair-wise high reliability mode, and method therefore
JP2786574B2 (ja) コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
US6301655B1 (en) Exception processing in asynchronous processor
JP2002508564A (ja) 実行パイプラインの外部に複数のプログラム・カウンタとトレース・バッファを有するプロセッサ
US5764942A (en) Method and system for selective serialization of instruction processing in a superscalar processor system
JPH02257219A (ja) パイプラインプロセッサ装置および方法
JP2002508567A (ja) 誤推論後の命令再実施のためのアウトオブパイプライン・トレース・バッファ
JPS59114641A (ja) 割込処理装置
JP2002508568A (ja) 不適正順序マルチスレッド実行を実行するロード命令およびストア命令を順序付けるシステム
US6681317B1 (en) Method and apparatus to provide advanced load ordering
JP2009099097A (ja) データ処理装置
US20170024249A1 (en) Parallel Execution Mechanism and Operating Method Thereof
JP3400458B2 (ja) 情報処理装置
KR20010089588A (ko) 명령어 리플레이를 포함하는 프로세서 파이프라인
EP0679990A1 (en) A computer apparatus having a means to force sequential instruction execution
JPS63307535A (ja) パイプライン制御回路
CN117806706A (zh) 存储顺序违例处理方法、装置、电子设备及介质
US5634136A (en) Data processor and method of controlling the same
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
CN108834427B (zh) 处理向量指令
EP0605867A1 (en) Method and system for selective serialization of instruction processing in a superscalar processor system
EP0212132A1 (en) Method and digital computer for recovering from errors