JP2000181712A - 命令実行順序を保証する計算機システム - Google Patents

命令実行順序を保証する計算機システム

Info

Publication number
JP2000181712A
JP2000181712A JP10360296A JP36029698A JP2000181712A JP 2000181712 A JP2000181712 A JP 2000181712A JP 10360296 A JP10360296 A JP 10360296A JP 36029698 A JP36029698 A JP 36029698A JP 2000181712 A JP2000181712 A JP 2000181712A
Authority
JP
Japan
Prior art keywords
instruction
value
processor
execution
lsync
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
JP10360296A
Other languages
English (en)
Inventor
Tetsuo Sugita
徹男 杉田
Naonobu Sukegawa
直伸 助川
Masaya Nakahata
昌也 中畑
Yuuichi Saigan
裕一 西願
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP10360296A priority Critical patent/JP2000181712A/ja
Publication of JP2000181712A publication Critical patent/JP2000181712A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】すべての先行する命令の及ぼす影響が終了する
まで待つ順序保証命令を用いず、性能を向上できる計算
機システムを提供する。 【解決手段】先行する全ての命令の命令プロセッサ内部
の動作の完了まで後続命令の開始を抑止するLSYNC
命令と、LSYNC停止機構105を新たに備える。L
SYNC停止機構105は、LSYNC命令がディスパ
ッチされた場合、各演算ユニット110、120、13
0の使用状態を監視し、少なくとも一つ以上の命令が実
行中であると、LSYNC命令以降の命令の実行開始を
抑止する。そして、LSYNC命令に先行する命令のす
べてが命令プロセッサ内部で完了した場合、その完了を
検知して、LSYNC命令以降の命令のディスパッチ動
作を再開する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、命令実行順序を保
証する計算機システムに関し、特に命令プロセッサにお
ける命令実行順序保証に関する。
【0002】
【従来の技術】従来の計算機システムにおいて、命令実
行の順序を保証する機構として先行するすべての命令の
及ぼす影響のすべてが終了するまで後続の命令の実行を
抑止し、実行を開始させないという動作を行なう、例え
ばSYNC命令のような順序保証命令がある。
【0003】
【発明が解決しようとする課題】従来の命令実行順序保
証命令は、先行するすべての命令の及ぼす影響が終了す
るまで、後続命令の命令フェッチを抑止するため、後続
命令が動作を開始するまでの時間が長くなる。そして、
特にパイプライン動作やスーパースカラ機構を有する場
合は、そのペナルティが計算機システムの性能を律する
大きな要因となる。
【0004】一方、すべての先行する命令の及ぼす影響
が終了するまで待つ順序保証命令があれば、あらゆる命
令実行順序保証に対する要求を満足することが可能とな
る。しかし、順序保証の要求の中には完全な順序保証を
求めていない場合もあるため、この場合に完全な命令実
行順序保証命令を用いると不当に長い時間を要してしま
うことになる。
【0005】従って、本発明の目的は、すべての先行す
る命令の及ぼす影響が終了するまで待つ命令実行順序保
証命令を用いず、性能を向上できる計算機システムを提
供することにある。
【0006】
【課題を解決するための手段】本発明は、命令の処理を
行う命令プロセッサの如き処理手段と、情報の記憶を行
う主記憶の如き記憶手段と、順序保証手段とを有する計
算機システムであって、順序保証手段は、処理手段の内
部での処理の完了に限定した命令実行順序保証命令によ
り、先行する命令を監視し、後続する命令の処理実行の
開始を制御するものである。
【0007】また、順序保証手段は、記憶手段へのアク
セス命令の実行開始を制御するものである。
【0008】
【発明の実施の形態】以下、本発明の一実施の形態およ
びその効果を図面を用いて詳細に説明する。
【0009】ここで、以下においては、本実施例におい
て新たに採用する軽量版の命令実行順序保証命令をLS
YNC命令、また、従来の完全な命令実行順序保証命令
をSYNC命令と記載する。
【0010】図1は、パイプライン方式でアウトオブオ
ーダ実行をおこなうスーパスカラプロセッサに適用した
例を示す。
【0011】本実施例において、プロセッサは1サイク
ルにひとつ以上の命令を命令バッファ102にフェッチ
することが可能で、1サイクルにひとつ以上の命令を理
解してその命令に対応する演算ユニットへ命令を発行す
ることが可能である。
【0012】ここで、命令を理解してその命令に対応す
る演算ユニット110、120、130へ命令を発行す
ることをディスパッチと呼ぶ。このディスパッチが行な
われると、各演算ユニットは、リザベーションステーシ
ョン111、121、131、リネームレジスタ123
等の命令実行に必要な資源を確保して、それぞれの演算
の種類に応じて動作をおこなう。
【0013】各演算ユニットには、分岐命令などの汎用
レジスタへの書き戻しをすることなく、命令プロセッサ
内部の演算のみで完了する命令を実行するための演算ユ
ニット110と、命令プロセッサ内部で演算を行い、そ
の結果を汎用レジスタ123に書き戻すような命令を実
行するための演算ユニット120と、命令プロセッサ内
部で計算したアドレスに対する命令プロセッサ外部の主
記憶や外部入出力を扱う命令を実行するための演算ユニ
ット130等があり、命令の種類によって複数の演算ユ
ニットが備えられる。尚、リザベーションステーション
111、121、131は各演算ユニット110、12
0、130毎に個別に存在する。
【0014】命令バッファ102から演算ユニット11
0、120、130に命令を発行するためには、命令に
対応するリザベーションステーション111、121、
131と、必要に応じてリネームレジスタ123を確保
する。
【0015】各命令は投棄的実行が可能であり、結果と
して本来実行すべき命令であった場合は、投棄実行の結
果を正しい結果と見倣す。また、本来実行すべきでない
命令であった場合は投棄実行の結果は破棄する。特に、
分岐命令において、分岐予測に基づいて分岐命令以後の
命令を投棄実行させる。そして、分岐予測成功時には投
棄実行結果を正しい結果と見倣す。また、分岐予測失敗
時にはその投棄実行した命令の結果を破棄する。
【0016】命令バッファ102から各演算ユニット1
10、120、130に処理が移った後は、各命令の実
行順序は命令の依存関係がない限りは保証されない。命
令プロセッサ内部で完結する演算命令はその演算結果が
レジスタに書き込まれた時点で完了となる。特に、条件
分岐命令は分岐の成否と分岐先アドレスの確定をもって
完了となる。また、主記憶アクセスが伴う命令は、その
命令が対象とする主記憶のアドレスが確定した時点で完
了となる。フェッチ系命令においてもフェッチデータの
レジスタへの書き戻しを待つことなく内部動作は完了と
する。
【0017】本実施例では、先行する全ての命令の命令
プロセッサ内部の動作の完了まで後続命令の開始を抑止
するLSYNC命令を新たに用意し、このLSYNC命
令を実行した場合、LSYNC命令に先行する全ての命
令の命令プロセッサ内部の動作の完了まで後続命令の開
始を抑止するLSYNC停止機構105を備える。この
LSYNC停止機構105は、LSYNC命令がディス
パッチされた場合、各演算ユニット110、120、1
30の使用状態を監視し、少なくとも一つ以上の命令が
実行中であると、LSYNC命令以降の命令の実行開始
を抑止する。そして、LSYNC命令以降の命令のディ
スパッチが停止している状態において、LSYNC命令
に先行する命令のすべてが命令プロセッサ内部で完了し
た場合には、その完了を検知して、LSYNC命令以降
の命令のディスパッチ停止状態を解除して通常のディス
パッチ動作を再開する。
【0018】LSYNC停止機構105によって、LS
YNC命令に後続する命令と、LSYNC命令に先行す
る命令との命令プロセッサ内部での動作順序を保証する
ことができる。
【0019】LSYNC命令が顕著な効果を発揮する例
を、図3を用いて説明する。
【0020】アウトオブオーダ実行をおこなうスーパス
カラプロセッサを用いたマルチプロセッサシステムにお
いて、プロセッサA300とプロセッサB310で各々
プログラム301、311を実行する場合を考える。主
記憶の初期値320はアドレスXが旧X値、アドレスY
が旧Y値であり、旧X値と新X値は異なる値であり、旧
Y値と新Y値は異なる値であるとする。
【0021】命令プロセッサA300で実行するプログ
ラム301は以下のものである。
【0022】STORE X=新X値 SYNC STORE Y=新Y値 このプログラムは、主記憶アドレスXに対して新X値を
書き込み、その完了を待って、その後に主記憶アドレス
Yに対して新Y値を書き込むという動作を行なわせる。
【0023】命令プロセッサB310で実行するプログ
ラム311は以下のものである。
【0024】P:LOAD Y BRANCH P: if Y=旧Y値 LOAD X このプログラムは、主記憶アドレスYの値を読み込み、
その値が旧Y値であったらラベルP:へと分岐して再度
主記憶アドレスYの値を読み込み、読み込んだ主記憶ア
ドレスの値が旧Y値ではなくなったら主記憶アドレスX
の値を読み込むという動作を行なわせる。
【0025】プログラム301、311では、命令プロ
セッサA300で主記憶アドレスXに書き込んだ新X値
を命令プロセッサB310で正しく読み込むことを期待
している。そのためには命令プロセッサA300が主記
憶アドレスXに値を書き込み終えたことを命令プロセッ
サB310が認識して、その後に主記憶アドレスXから
値を読み込む必要がある。
【0026】命令プロセッサA300が主記憶アドレス
Xに値を書き込んだことを保証するために、命令プロセ
ッサA300において主記憶アドレスXに新X値を書き
込んだ後に主記憶アドレスYに新Y値を書き込むように
し、このふたつのストア命令の間にSYNC命令を挿入
することによって、主記憶の値が変化する時刻の順序関
係を主記憶アドレスXが先で主記憶アドレスYが後にな
るようにしてある。
【0027】命令プロセッサA300が新X値を書き込
んだ主記憶アドレスXの値を命令プロセッサB310で
読み込むために、命令プロセッサA300によって主記
憶アドレスXに対する書き込みの後に、値が書き込まれ
るはずの主記憶アドレスXの値が新X値になるのを待
ち、その後に主記憶アドレスXを読み込む作りになって
いる。これにより、プロセッサB310が正しく新X値
を読み込むことができるようにしている。
【0028】ただし、マルチプロセッサシステムに於い
ては、各命令プロセッサA300と命令プロセッサB3
10はお互いに同期を取らずに独立して動作するため、
このプログラムのままでは、図3のタイムチャート33
0に示すタイミングで実行した場合に於いて以下に述べ
るような誤動作が発生し得る。
【0029】命令プロセッサB310にてプログラム3
11を実行開始前の状態で、主記憶アドレスXの値であ
る旧X値がキャッシュ312内に入っており、かつ主記
憶アドレスYの値がキャッシュ312内に入っていない
場合を考える。命令プロセッサA300にてプログラム
301を実行前の段階では主記憶アドレスXの値は旧X
値、主記憶アドレスYの値は旧Y値である。
【0030】以下、誤動作の発生する動作例を時間を追
って説明する。
【0031】(1)命令プロセッサA300に於いてプ
ログラム301の実行が開始される前に命令プロセッサ
B310のプログラム311の実行が開始され、主記憶
アドレスYに対するLOAD命令3101が発行され
る。この主記憶アドレスYの値は命令プロセッサB31
0のキャッシュ312内に存在しないため、主記憶に対
してLOAD命令が発行される。
【0032】(2)続いて命令プロセッサB310では
スーパスカラ実行により分岐命令が開始され、更に投棄
実行で主記憶アドレスXに対するLOAD命令3102
が発行される。
【0033】(3)主記憶アドレスXの値が命令プロセ
ッサB310のキャッシュ312に存在するため、主記
憶アドレスXに対するLOAD命令3102はキャッシ
ュ312にヒット3103して、キャッシュ312内に
ある旧X値がLOAD結果として命令プロセッサB31
0に戻る。この時点で命令プロセッサA300において
プログラム301の実行が開始され、主記憶アドレスX
に対する新X値のSTORE命令3003が発行され
る。
【0034】(4)プロセッサB310に於いて、戻っ
て来た主記憶アドレスXに対するLOAD命令3102
の返答である旧X値が、投棄実行による結果であり未だ
先行する分岐命令の成否が決定しておらず、主記憶アド
レスXに対するLOAD命令が実行されるべきか否かが決定
しない。従って、リネームレジスタ内に旧X値を保持し
ておく。ここで命令プロセッサA300に因る主記憶ア
ドレスXに対する新X値の書き込みが完了し、主記憶ア
ドレスXの値が新X値に更新3004される。
【0035】(5)命令プロセッサA300に因る主記
憶アドレスXの更新3004に因り全命令プロセッサの
キャッシュ内の主記憶アドレスXのエントリを消去する
動作が発生する。命令プロセッサB310内のキャッシ
ュ312の主記憶アドレスXのエントリも消去3105
される。
【0036】(6)命令プロセッサA300に於いて、
主記憶アドレスXに対するSTORE命令が完了したた
め、このSTORE命令に続くSYNC命令が完了30
06する。この時点では、命令プロセッサB310の発
行した主記憶アドレスYに対するLOAD命令は、メモ
リシステムの詰まりにより主記憶に到達していない31
07。尚、主記憶アドレスYに対するLOAD命令が主
記憶に到達しない状態は下記(9)まで続く。
【0037】(7)命令プロセッサA300に於いて、
SYNC命令が完了3006したので後続の主記憶アド
レスYに対する新Y値のSTORE命令が開始され、主
記憶に対して送出3007される。
【0038】(8)命令プロセッサA300に因る主記
憶アドレスYに対する新Y値の書き込みが完了し、主記
憶アドレスYの値が新Y値に更新3008される。
【0039】(9)命令プロセッサA300に因る主記
憶アドレスYの更新3008に因り、全命令プロセッサ
のキャッシュ内の主記憶アドレスYのエントリを消去す
る動作が発生する。命令プロセッサB310内のキャッ
シュ312には主記憶アドレスYのエントリがないた
め、何の動作も発生しない。
【0040】(10)命令プロセッサB310の発行し
た主記憶アドレスYに対するLOAD命令3101が、
ようやくこの時点で主記憶に到達する3110。
【0041】(11)既に命令プロセッサA300に因
って、主記憶アドレスYの値が新Y値に更新されている
ため、命令プロセッサB310の発行した主記憶アドレ
スYに対するLOAD命令の返答として新Y値が命令プ
ロセッサB310に対して戻る。
【0042】(12)命令プロセッサB310に於い
て、主記憶アドレスYの値が旧Y値ではなく新Y値であ
ったので条件分岐命令が非成立3112となりラベル
P:への分岐は発生しなくなる。
【0043】(13)既に投棄実行されて、その結果が
リネームレジスタに入っている主記憶アドレスXに対す
るLOAD命令3102が分岐命令の非成立3112に
因って、実行することが決定したため、リネームレジス
タ内にある主記憶アドレスXを読ん込んだ値である旧X
値が正しく読み込んだ値と見倣される3113。
【0044】結果として、プログラム301、311で
想定していた命令プロセッサA300から命令プロセッ
サB310に対して新X値を渡すという動作は成功しな
い事態が発生し、命令プロセッサB310に於いて間違
った値を受け取ってしまう可能性がある。
【0045】従って、不正な結果を引き起こさないため
には、命令プロセッサB310の条件分岐命令の分岐成
否が確定するまでは、後続する主記憶アドレスXに対す
るLOAD命令を投棄実行してはならない。
【0046】これを保証するためには条件分岐命令の直
後にSYNC命令を挿入する方法がある。この挿入によ
って条件分岐命令の成否が確定する前に後続するLOA
D命令を投棄実行することがなくなる。しかしSYNC
命令はSYNC命令に先行するすべての命令によるすべ
ての動作の完了を待つため、命令プロセッサB310の
先行命令によっては不当に長いペナルティを被る可能性
がある。
【0047】また、先行命令が完了するまでの時間が長
くかからない場合でも、そのSYNC命令の保証する範
囲が広いため、SYNC命令のレイテンシ分のペナルテ
ィは避けられない。
【0048】その結果、条件分岐命令の非成立が確定し
てから後続する主記憶アドレスXに対するLOAD命令
の実行が開始されるまでに、少なくともSYNC命令の
レイテンシ以上のペナルティがかかってしまい、これが
計算機システムの性能向上のネックとなり得る。
【0049】これに対して、本実施例におけるLSYN
C命令をSYNC命令の代わりに用いることとすると、
条件分岐命令の完了を待ってLSYNC命令に後続する
主記憶アドレスXに対するLOAD命令を実行すること
を保証することができる。しかも、LSYNC命令のサ
ポートする順序保証範囲が命令プロセッサ内部の動作の
完了のみのため、条件分岐命令非成立が確定した直後
に、後続する主記憶アドレスXに対するLOAD命令の
実行を開始することができ、順序保証に因るペナルティ
がSYNC命令に較べて非常に小さくなる。
【0050】通常、マルチプロセッサシステムに於い
て、主記憶経由でプロセッサ間でデータを受け渡す動作
は頻繁に発生するため、SYNC命令のみを使用して順
序保証を行なうと毎回SYNC命令のレイテンシのペナ
ルティを受け続けることになる。
【0051】特に、本実施例におけるようなマルチプロ
セッサシステムの場合、SYNC命令は先行する命令群
と後続する命令群に起因する動作の全ての実行順序を保
証する必要がある。すなわち、図2に示すように、命令
プロセッサ20がSYNC命令を発行した場合には、発
行元である命令プロセッサ20の内部、メモリシステム
27、主記憶28、各命令プロセッサ21、22、2
3、外部I/O29等のすべてに対して、命令プロセッ
サ20が影響を及ぼす。そして、その影響が完全に完了
したことが保証できた時点で、初めてSYNC命令に後
続する命令の実行を開始することができるため、その実
行開始条件を確認する動作だけで長い時間を要してしま
う。更に、巨大な計算機システムであればある程SYN
C命令の実行に要する時間が長くなる。そのため一般的
にSYNC命令の実行に要する時間は他の命令に対して
非常に大きい。また、SYNC命令の特徴から、このS
YNC命令実行中は後続命令が実行されないため、SY
NC命令のレイテンシが計算機システムの停止の原因と
なってしまう。そして、計算機システム全体の性能を計
算機システムの論理性能より低く決定する要因となり得
る。
【0052】従って、本実施例のLSYNC命令を用い
ることによって、順序保証のためのペナルティを低減さ
せることができ、計算機システムの性能をSYNC命令
のみを使用したものに較べて向上させることができる。
【0053】
【発明の効果】本発明によれば、先行する全ての命令の
命令プロセッサ内部の動作の完了まで後続命令の開始を
抑止するという新たな命令実行順序保証命令を用いるこ
とによって順序保証のためのペナルティを大幅に低減さ
せることができる。
【図面の簡単な説明】
【図1】本発明の一実施例における命令プロセッサの構
成を示す図。
【図2】完全命令実行順序保証命令の順序保証範囲を示
す図。
【図3】命令実行順序保証命令の挿入を必要とする命令
列の動作例を示す図。
【符号の説明】
102 命令バッファ 105 LSYNC停止機構 110、120、130 演算ユニット 20、21、22、23 命令プロセッサ 27 メモリシステム 28 主記憶 29 外部I/O 300 命令プロセッサA 301 命令プロセッサAで実行するプログラム 310 命令プロセッサB 311 命令プロセッサAで実行するプログラム
───────────────────────────────────────────────────── フロントページの続き (72)発明者 中畑 昌也 神奈川県秦野市堀山下1番地 株式会社日 立製作所汎用コンピュータ事業部内 (72)発明者 西願 裕一 神奈川県秦野市堀山下1番地 株式会社日 立製作所汎用コンピュータ事業部内 Fターム(参考) 5B013 BB08 BB15 BB18 DD04 DD05

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】命令を実行する処理手段と、順序保証手段
    とを有する計算機システムであって、前記順序保証手段
    は、処理手段の内部での処理の完了に限定した命令実行
    順序保証命令を実行した場合に、前記処理手段内部での
    先行する命令の実行状況を監視し、後続する命令の実行
    開始を制御することを特徴とする計算機システム。
  2. 【請求項2】請求項1記載の計算機システムにおいて、
    前記計算機システムは、情報の記憶を行う記憶手段を有
    し、前記順序保証手段は、前記記憶手段へのアクセス命
    令の実行開始を制御することを特徴とする計算機システ
    ム。
JP10360296A 1998-12-18 1998-12-18 命令実行順序を保証する計算機システム Pending JP2000181712A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10360296A JP2000181712A (ja) 1998-12-18 1998-12-18 命令実行順序を保証する計算機システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10360296A JP2000181712A (ja) 1998-12-18 1998-12-18 命令実行順序を保証する計算機システム

Publications (1)

Publication Number Publication Date
JP2000181712A true JP2000181712A (ja) 2000-06-30

Family

ID=18468792

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10360296A Pending JP2000181712A (ja) 1998-12-18 1998-12-18 命令実行順序を保証する計算機システム

Country Status (1)

Country Link
JP (1) JP2000181712A (ja)

Similar Documents

Publication Publication Date Title
US6697936B2 (en) Register file backup queue
US7200737B1 (en) Processor with a replay system that includes a replay queue for improved throughput
US7590825B2 (en) Counter-based memory disambiguation techniques for selectively predicting load/store conflicts
US6212626B1 (en) Computer processor having a checker
US6157999A (en) Data processing system having a synchronizing link stack and method thereof
JP2003502754A (ja) 先進のマイクロプロセッサにおけるスケジューリング強化方法および装置
US20120173848A1 (en) Pipeline flush for processor that may execute instructions out of order
US7051191B2 (en) Resource management using multiply pendent registers
US6807624B1 (en) Instruction control device and method therefor
JP2000181712A (ja) 命令実行順序を保証する計算機システム
JPH05181676A (ja) 並列処理型プロセッサシステム
US6944750B1 (en) Pre-steering register renamed instructions to execution unit associated locations in instruction cache
JP3497087B2 (ja) 命令制御装置及びその方法
US6772294B2 (en) Method and apparatus for using a non-committing data cache to facilitate speculative execution
JP2671160B2 (ja) 例外処理方式
JP2894438B2 (ja) パイプライン処理装置
JP7474779B2 (ja) 命令順序付け
JP3766772B2 (ja) 情報処理装置、例外回復処理方法および記録媒体
JP2953451B2 (ja) 割り込み処理方法
JPH08272608A (ja) パイプライン処理装置
JP3668643B2 (ja) 情報処理装置
Song Reducing register pressure through LAER algorithm
JP2003323294A (ja) スーパースカラプロセッサ
JP2003015867A (ja) 命令バッファ制御装置
JPH031252A (ja) ページフォルト処理方式