JPH06236271A - プロセッサおよび命令推測実行方法 - Google Patents

プロセッサおよび命令推測実行方法

Info

Publication number
JPH06236271A
JPH06236271A JP5319307A JP31930793A JPH06236271A JP H06236271 A JPH06236271 A JP H06236271A JP 5319307 A JP5319307 A JP 5319307A JP 31930793 A JP31930793 A JP 31930793A JP H06236271 A JPH06236271 A JP H06236271A
Authority
JP
Japan
Prior art keywords
version
register
branch
dispatch
instruction
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
JP5319307A
Other languages
English (en)
Other versions
JP3137157B2 (ja
Inventor
David S Levitan
デーヴィッド・エス・レヴィタン
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH06236271A publication Critical patent/JPH06236271A/ja
Application granted granted Critical
Publication of JP3137157B2 publication Critical patent/JP3137157B2/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
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

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)

Abstract

(57)【要約】 【目的】 命令を推測実行するためのデータ処理システ
ムを提供すること。 【構成】 本発明は、プロセッサ中のブランチ処理ユニ
ットによって生成できるアドレスに命令を記憶するメモ
リを含む。プロセッサは、更新値、ディスパッチ・バー
ジョン値、および完了バージョン値を記憶するカウント
・レジスタを含む。ブランチ制御用の更新値およびディ
スパッチ値を初期設定し、その初期設定の完了に応じ
て、更新値を完了バージョン値としてコピーする。シス
テムはさらに、条件付きブランチ命令のディスパッチに
応じて、ディスパッチ・バージョン値を検査して、ある
ブランチを選択すべきか否かを判定し、次いでディスパ
ッチ・バージョン値を減分する。ブランチの完了に応じ
て、完了バージョン・レジスタの内容を減分する。最後
に、ブランチが完了する前に割込みの発生に応じて、デ
ィスパッチ・バージョン値を完了バージョン値で置き換
えることにより、システムを、命令の推測実行の前の状
態に復元する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データ処理システムに
関し、詳しくは、プログラム命令の推測実行をサポート
する方法およびシステムに関する。さらに詳細には、本
発明は、無条件状態情報を、推測実行が失敗した後の回
復のために保存しておく方法に関する。
【0002】
【従来の技術】現代のデータ処理システムの設計者は、
絶えずそのようなシステムの性能面の向上に努めてい
る。データ処理システム効率を向上させる1つの技法
は、システム・プロセッサにおいて、サイクル・タイム
を短くし、1命令当たりサイクル(CPI)率を下げる
ことである。このような技法をデータ処理システムに応
用した例に、IBMのRISCシステム/6000(R
S/6000)コンピュータがある。RS/6000シ
ステムは、数値中心の科学技術の応用分野およびマルチ
ユーザ商業環境でうまく機能するように設計されてい
る。RS/6000プロセッサは、スーパースカラ実施
態様を使用する。すなわち、複数の命令が同時に発行さ
れ実行される。
【0003】プロセッサ・アーキテクチャは、コンピュ
ータの計算要素を構築するためのレジスタ、演算機構、
および制御論理機構の組合せに関するものである。プロ
セッサ構築時の重要な考慮点は、プロセッサが提供する
命令セットである。命令とは、演算と、そのオペランド
の値または位置とを指定するステートメントである。命
令セットとは、特定のマシン用のそのようなあらゆる有
効ステートメントの集合である。
【0004】元来、RISCマシンは、1マシン・サイ
クル当たり1個の命令を実行する。この目的のために、
すべての命令は一定の長さとされ、パイプライン実施態
様と互換性のある方式に適合されていた。命令セットを
単純にすることが、設計上の目標であった。これによっ
て、いわゆる複合命令セット・コンピュータ(CIS
C)に比べて、サイクル・タイムがさらに短縮された。
しかし、RISCの利点の一部は、コンピュータのプロ
セッサとメイン・メモリの間のトラフィックの増加によ
って相殺された。このような状況が発生したのは、RI
SCマシンでタスクを実行するには、さらに強力な命令
セットを備えたCISCマシンで実行する場合よりも、
多くの命令インスタンスが必要だからである。
【0005】複数の命令を同時に発行して実行するに
は、高命令帯域幅で実行できる独立した機能ユニットが
必要である。RS/6000システムは、本来的にパイ
プライン式の別々のブランチ処理ユニット、固定小数点
処理ユニット、および浮動小数点処理ユニットを使用す
ることによってこれを実現している。ブランチ処理ユニ
ットは、条件付きブランチ命令を処理する。他のRIS
C設計と同様に、命令を復号するのに必要でなくなった
複雑な復号論理機構を使用して、プロセッサ・チップ上
に命令キャッシュが提供されている。これによって、プ
ロセッサとメモリの間のトラフィックが削減され、命令
の取出しがきわめて迅速になる。
【0006】特に重要な命令サブセットは、条件付きブ
ランチに関するものである。条件付きブランチ命令と
は、他の1つまたは複数の命令の特定の処理の結果に応
じて、アプリケーション内で指定された条件付きブラン
チをとることを指令する命令である。実際的な例に、F
ortranのdoループがある。以前から、条件付き
ブランチ命令は、(RISCシステムを含む)パイプラ
イン式コンピュータの扱いにくさの原因となってきた。
すなわち、条件付きブランチ命令がパイプライン待ち行
列中を待ち行列内の実行位置まで伝搬するまでに、条件
付きブランチを解決する前に、待ち行列中の条件付きブ
ランチ命令の後に1つのブランチに対応する命令をロー
ドしておいて、実行時遅延を避ける必要がある。それに
は、関連する命令の処理の結果を知らないままで、条件
付きブランチの次にくる命令に関して選択を行う必要が
ある。この選択は誤りとなる可能性がある。
【0007】実行に影響を及ぼすすべての条件が最終的
に定義される前に命令を実行することを推測実行と呼
ぶ。条件付きブランチの結果または可能なあらゆる割込
みの到着を待っていると、完全な並行処理は不可能にな
る。したがって、命令の並行実行を完全に使用する場合
は、命令の推測実行からプロセッサを回復するための何
らかの方式を提供する必要がある。誤ったブランチに沿
って処理が進行していると判定された場合は、割込みを
生成して、実行の進路を変更することができる。割込み
に応答する際に、プロセッサは最後の非推測実行ステッ
プに戻る。
【0008】RISCマシンでいくつかの複合演算を使
用すると、性能を向上できることが経験的に分かってい
る。これは一部には、プロセッサの実施態様に関する現
在の好ましい技法、すなわちVLSIの性質によるもの
である。現在、チップ上の使用面積を最小限に抑えるこ
とは、プロセッサを実施するのに使用するデバイスの数
を最小限にすることよりも重要である。従って、RIS
Cベースの設計にいくつかの複合命令が使用されるよう
になった。複合命令を含めるための基準は、空間の使用
が最小限になることである。RS/6000命令セット
の1つの命令を用いて、ブランチ・オン・カウント・ル
ープを実行することができる。ブランチ・オン・カウン
ト命令は、以前は3個の命令で行われていたものに代わ
る1ステップ命令である。単一の命令を3個の命令の代
用にすることは、専用カウント・レジスタを設けること
によって可能になった。しかし、この配列自体は推測実
行をサポートしない。カウント・レジスタの実施はRS
/6000マシン内に設けられたレジスタ名前変更用の
機構によっても可能であるが、ディスパッチ・サイクル
中にはカウント・レジスタの値が分からないので、マシ
ン・サイクルがある程度むだになる。
【0009】プロセッサ・チップ上で最小面積を使用す
るブランチ・オン・ループのハードウェア実施態様が望
ましい。
【0010】
【発明が解決しようとする課題】本発明の一目的は、プ
ログラム命令の推測実行をサポートする改良された方法
およびシステムを提供することである。
【0011】本発明の他の目的は、条件付き状態情報
を、推測実行が失敗した後に回復するために保存してお
くことである。
【0012】
【課題を解決するための手段】前述の目的は、以下のよ
うにして達成される。本発明は、命令を推測実行するた
めのデータ処理システムを提供する。このデータ処理シ
ステムは、プロセッサ中のブランチ処理ユニットによっ
て生成できるアドレスに命令を記憶するメモリを含む。
またプロセッサは、ブランチ制御カウントの更新値、デ
ィスパッチ・バージョン値、および完了バージョン値を
記憶するカウント・レジスタを含む。ブランチ処理ユニ
ットに接続された取出し機構が、ブランチ処理ユニット
で計算されたアドレスに基づいてメモリから命令を取り
出す。ブランチ処理ユニットは、条件付きブランチ命令
の処理を扱う。そのために、ブランチ制御用の更新値お
よびディスパッチ値を初期設定する手段が設けられてい
る。さらに、初期設定の完了に応じて、更新値を完了バ
ージョン値としてコピーする手段が含まれる。システム
はさらに、条件付きブランチ命令のディスパッチに応じ
て、ディスパッチ・バージョン値を検査して、あるブラ
ンチを選択すべきか否かを判定し、次いでディスパッチ
・バージョン値を減分する手段を含む。ブランチの完了
に応じて、完了バージョン・レジスタの内容を減分する
手段が設けられている。最後に、ブランチが完了する前
に割込みの発生に応じて、ディスパッチ・バージョン値
を完了バージョン値で置き換えることにより、システム
を、命令の推測実行の前の状態に復元する手段が設けら
れている。
【0013】
【実施例】図面、特に図1を参照すると、本発明の方法
およびシステムを実施するために使用できるスーパース
カラ・コンピュータ・システム10を示す高水準ブロッ
ク図が示されている。図のように、スーパースカラ・コ
ンピュータ・システム10は、データ、命令などを記憶
するために使用されるメモリ18を含むことが好まし
い。メモリ18内に記憶されるデータまたは命令には、
当業者に周知の方法でキャッシュ/メモリ・インタフェ
ース20を使用してアクセスすることが好ましい。キャ
ッシュ・メモリ・システムのサイズ設定および使用法
は、データ処理技術分野内の周知の一部門であり、本発
明では取り上げない。しかし、連想式キャッシュ技術を
使用することにより、キャッシュ/メモリ・インタフェ
ース20内に一時的に記憶されたデータを使用して高率
のメモリ・アクセスを実現できることが、当業者には理
解されよう。
【0014】キャッシュ/メモリ・インタフェース20
からの命令は通常、好ましくは複数の待ち行列位置を含
む命令待ち行列22にロードされる。スーパースカラ・
コンピュータ・システムの典型的な実施例では、命令待
ち行列が8個の待ち行列位置を含むことができ、したが
って所与のサイクル中に、キャッシュ/メモリ・インタ
フェース20によって渡される有効な命令の数と、命令
待ち行列22内で利用可能な空間の量に応じて、命令待
ち行列22に0ないし8個の命令をロードすることがで
きる。
【0015】そのようなスーパースカラ・コンピュータ
・システムでは普通であるが、命令待ち行列22は、複
数の実行ユニットに命令をディスパッチするために使用
される。図1に示すように、コンピュータ・システム1
0は、浮動小数点処理ユニット24、固定小数点処理ユ
ニット26、およびブランチ処理ユニットを含む。した
がって、命令待ち行列22は、単一のサイクル中に、0
ないし8個の命令を各実行ユニットに1個ずつディスパ
ッチすることができる。
【0016】命令待ち行列22からディスパッチされた
順次命令だけでなく、いわゆる「条件付きブランチ命
令」も、ブランチ処理ユニットで実行するために、命令
待ち行列22にロードすることができる。条件付き命令
とは、1つまたは複数の順次命令の特定の処理の結果に
応じてアプリケーション内でとる関連する条件付きブラ
ンチを指定する命令である。スーパースカラ・コンピュ
ータ・システム10などのパイプライン式プロセッサ・
システムの実行時遅延を最小限にするために、命令待ち
行列内の条件付きブランチ命令の存在を検出し、条件付
きブランチの結果を予測する。当業者には明らかなよう
に、条件付きブランチが「選択されない」と予測される
と、命令待ち行列内の順次命令は単に現経路に沿って進
行し、命令は修正されない。しかし、ブランチの発生に
関する予測が誤っている場合、プログラムの順序で条件
付きブランチ命令の次にくる順次命令をパージし、ター
ゲット命令を取り出す必要がある。また、条件付きブラ
ンチが「選択される」と予測され、予測が正しいことが
分かった場合は、ターゲット命令が取り出され、それら
の命令を使用して条件付きブランチをたどる。言うまで
もなく、「選択される」という予測が誤っている場合
は、ターゲット命令をパージし、プログラムの順序で条
件付きブランチ命令の次にくる順次命令を取り出す必要
がある。
【0017】図示したように、スーパースカラ・コンピ
ュータ・システム10はまた、条件レジスタ32を含む
ことが好ましい。条件レジスタ32は、コンピュータ・
システム10内で処理される順次命令の結果を使用して
実行される様々な比較の結果を一時的に記憶するために
使用される。したがって、浮動小数点処理ユニット24
および固定小数点処理ユニット26が条件レジスタ32
に結合される。条件レジスタ32内の特定の条件の状況
を検出し、それをブランチ処理ユニット28に結合し
て、ターゲット・アドレスを生成することができる。そ
の後、ターゲット・アドレスを使用し、ブランチを開始
する条件の発生に応じて、ターゲット命令を取り出す。
【0018】次に、ブランチ処理ユニット28は、ター
ゲット・アドレスを取出し機構30に結合する。取出し
機構30は、条件付きブランチをたどるのに必要なター
ゲット命令の取出しアドレスを計算し、それらの取出し
アドレスをキャッシュ/メモリ・インタフェース20に
結合する。当業者には明らかなように、それらの取出し
アドレスに関連するターゲット命令がキャッシュ/メモ
リ・インタフェース20内に存在する場合、それらのタ
ーゲット命令は命令待ち行列22にロードされる。ある
いは、ターゲット命令を、メモリ18から取り出し、そ
れらのターゲット命令の取出しに必要な遅延の後、キャ
ッシュ/メモリ・インタフェース20から命令待ち行列
22にロードすることもできる。
【0019】代替命令待ち行列の使用による従来技術の
データ処理システムにおける命令待ち行列の内容の操作
を、図2の予約テーブル36に示す。図2は、7個の連
続するサイクル・タイムにおける命令待ち行列データの
内容の操作を示す。サイクル・タイム1に、命令待ち行
列は、条件付きブランチ命令(bc)、比較命令(cm
p)、および4個の演算論理機構(alu)命令を含む
ことが図から分かる。従来技術の命令待ち行列の待ち行
列3中で条件付きブランチ命令が検出されると、待ち行
列3中の順次命令が代替命令待ち行列(図示せず)にロ
ードされる。次に、サイクル2で、条件付きブランチに
関連するターゲット命令に対する要求が開始され、サイ
クル3でこれらの命令が命令待ち行列にロードされる。
これらの命令は、条件付きブランチ命令に関連する条件
付きブランチが「選択される」という予測に基づいてい
る。
【0020】次に、サイクル4で、比較(cmp)命令
が命令待ち行列中の実行位置まで伝搬し、条件付きブラ
ンチ命令が「解決される」。条件付きブランチ命令が解
決されて、条件付きブランチが「選択されない」ことが
示された場合、サイクル5で、前に代替命令待ち行列に
ロードされた順次命令が、再び主命令待ち行列にロード
される。図2の命令待ち行列のサイクル6および7は、
以後の追加の順次命令の処理を示す。図示したように、
条件付きブランチ命令の予測を誤ると、命令待ち行列内
に単一の空サイクルしか存在しなくなる。しかし、前述
のように、この従来技術の技法を実施するには、代替命
令待ち行列を使用する必要がある。
【0021】図3を参照すると、汎用レジスタ(GPR
S)40と、予測分岐、命令の推測実行、および誤った
ブランチに沿った命令の推測実行からの回復を伴うブラ
ンチ・オン・カウント命令を実施するために使用される
3個の専用レジスタとを含む、レジスタの一領域の概略
ブロック図が示されている。3個の専用レジスタは、デ
ィスパッチ・バージョン・レジスタ42、更新バージョ
ン・レジスタ44、および完了バージョン・レジスタ4
6である。
【0022】機能的に、ディスパッチ・バージョン・レ
ジスタ42は、アドレス生成に使用するカウントのディ
スパッチ・ステージ・バージョンを提供する。ディスパ
ッチ・ステージ・バージョンは常に、完了バージョン・
レジスタ46に記憶されたカウントの完了ステージ・バ
ージョンに先行する。完了ステージ・バージョン・カウ
ントは、最後に推測実行されて確認された命令に対応す
るカウントである。更新バージョン・レジスタ44の内
容は、推測実行された命令のカウントに対応する。この
カウントは、確認されると完了バージョン・レジスタ4
6にコピーされる。カウントの更新バージョンの目的
は、MOVE_TO_COUNT命令が実行を完了する前にディスパ
ッチ・バージョンを減分できるようにすることである。
MOVE_TO_COUNT命令自体を推測実行することが可能であ
る。
【0023】レジスタ42、44、46へのデータの移
動は、プロセッサ命令セットの一定の命令の発生によっ
て制御される。命令は、コンパイラによって生成され、
従来の、処理ユニットの制御論理機構によって復号され
る。プログラム中のループのブランチの推測実行は、固
定小数点処理ユニット26によって開始される。カウン
ト値を汎用レジスタ40にロードする記憶命令が実行さ
れる。次に、MOVE_TO_COUNT命令の実行が開始し、その
結果、ゲート48および50にゲート制御信号が印加さ
れる。その結果、汎用レジスタ40の内容がディスパッ
チ・バージョン・レジスタ42および更新バージョン・
レジスタ44にコピーされる。
【0024】BRANCH_ON_COUNT命令がディスパッチされ
ると、ディスパッチ・バージョン・レジスタ42の内容
が検査され、ブランチを選択すべきか否か、またはプロ
グラムの各ステップの実行が順次失敗するか否かが判定
される。ゲート52および56にゲート制御信号が印加
され、その結果、ディスパッチ・バージョン・レジスタ
42の内容がブランチ処理ユニット28に適用され、減
分機構54によってディスパッチ・バージョン・レジス
タ42の以前の内容から1を減分した値がディスパッチ
・バージョン・レジスタ42にコピーされる。
【0025】BRANCH_ON_COUNT命令の次の命令が完了す
る前に割込みが発生して、たとえば誤った命令シーケン
スをたどったことが示された場合、ゲート58にゲート
制御信号が印加される。ゲート58は、完了バージョン
・レジスタ46の内容をディスパッチ・バージョン・レ
ジスタ42にコピーするために使用される。これによっ
て、ディスパッチ・バージョン・レジスタ42の状態
が、まだ確認されていない推測命令の実行前の状態に戻
る。
【0026】前述のように、ゲート48は、MOVE_TO_CO
UNT命令の開始により、汎用レジスタ40の内容の更新
バージョン・レジスタ44へのコピーを制御する。更新
バージョン・レジスタ44の内容は、MOVE_TO_COUNT命
令の完了により、ゲート60によって完了バージョン・
レジスタ46にコピーされる。この場合、BRANCH_ON_CO
UNT命令の次にくるブランチが完了して確認されるま
で、初期カウントが保存される。プロセッサ信号の完了
論理がブランチの結果から暫定的マーク付けを除去する
と、ゲート62にゲート制御信号が印加され、その結
果、完了バージョン・レジスタ46の内容が減分機構6
4によって減分されて、その結果が完了バージョン・レ
ジスタ46にコピーされる。
【0027】図4は、本発明の単純であるが性能がより
低い実施例を示す。この実施例では、ゲート48および
更新バージョン・レジスタ44が除去されている。ディ
スパッチ・バージョン・レジスタ42および完了バージ
ョン・レジスタ44へのデータの移動は、様々なゲート
への信号によって制御される。完了バージョン・レジス
タ46は、更新バージョン・レジスタ44ではなくディ
スパッチ・バージョン・レジスタ42からデータを受け
取る。信号は、図3に関して説明した信号と同様である
が、いくぶん異なる時に発生する。タイミングの最も重
要な変更は、BRANCH_ON_COUNT命令に関するものであ
る。すなわち、この場合は、BRANCH_ON_COUNT命令は、M
OVE_TO_COUNT命令が完了し、完了バージョン・レジスタ
46がロードされるまで、実行できない。
【0028】MOVE_TO_COUNT命令が開始すると、ゲート
50にゲート信号が印加され、汎用レジスタ40の内容
がディスパッチ・バージョン・レジスタ42にコピーさ
れる。MOVE_TO_COUNTが完了すると、ゲート60に信号
が印加され、ディスパッチ・バージョン・レジスタ42
の内容が完了バージョン・レジスタ46に適用される。
これで、DISPATCH_ON_COUNT命令を実行することができ
る。BRANCH_ON_COUNT命令、割り込み、および完了BRANC
H_ON_COUNTの扱いは、第1の実施例と同じである。
【図面の簡単な説明】
【図1】本発明の方法およびシステムを実施するために
使用できるスーパースカラ・コンピュータ・システムの
高水準ブロック図である。
【図2】命令待ち行列の使用による従来技術のデータ処
理システムにおける命令待ち行列の内容の操作を示す予
約テーブルである。
【図3】本発明の好ましい実施例によるブランチ・オン
・カウント・レジスタ・アーキテクチャの概略図であ
る。
【図4】本発明の第2の好ましい実施例によるブランチ
・オン・カウント・レジスタの概略図である。
【符号の説明】
10 スーパースカラ・データ処理システム 18 メモリ 20 キャッシュ/メモリ・インタフェース 22 命令待ち行列 24 浮動小数点処理ユニット 26 固定小数点処理ユニット 28 ブランチ処理ユニット 32 条件レジスタ 40 汎用レジスタ 42 ディスパッチ・バージョン・レジスタ 44 更新バージョン・レジスタ 46 完了バージョン・レジスタ 48 ゲート

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】条件付きブランチ命令に対して作用し、メ
    モリ装置から命令を取り出す際に使用されるターゲット
    ・アドレスを計算する、ブランチ処理ユニットを含む、
    データ処理システム用のプロセッサであって、 条件付きブランチに関係するカウント値の初期バージョ
    ンの供給源と、 カウント値のディスパッチ・バージョンを記憶する手段
    と、 非推測実行命令に対応するカウント値の完了バージョン
    を記憶する手段と、 move to count命令の実行開始に応答して、カウント値
    の初期バージョンを、前記ディスパッチ・バージョン記
    憶手段にロードする手段と、 move to count命令の完了に応答して、カウント値の初
    期バージョンを、前記完了バージョン記憶手段に移動す
    る手段と、 branch on count命令のディスパッチに応答して、前記
    ディスパッチ・バージョンを減分する手段と、 ブランチの完了に応答して、前記完了バージョン記憶手
    段の内容を減分する手段とを備えるプロセッサ。
  2. 【請求項2】カウントの初期バージョンを移動する前記
    手段が、 前記カウントの初期バージョンを記憶する更新手段と、 前記更新手段の内容を、前記完了バージョン記憶手段に
    転送するゲートとを備える請求項1に記載のプロセッ
    サ。
  3. 【請求項3】割込みに応答して、前記完了バージョン記
    憶手段の内容を、前記ディスパッチ・バージョン記憶手
    段にロードする手段を備える請求項2に記載のプロセッ
    サ。
  4. 【請求項4】条件付きブランチ命令を処理するブランチ
    処理ユニットを有するデータ処理システムにおいて、ブ
    ランチ処理ユニットによって計算されたアドレスに基づ
    いてメモリから回復された命令を推測実行する方法であ
    って、 ディスパッチ・バージョン・レジスタを条件付きブラン
    チの制御用のカウント値で初期設定するステップと、 前記ディスパッチ・バージョン・レジスタの初期設定の
    完了時に、初期設定データを完了バージョン・レジスタ
    にコピーするステップと、 条件付きブランチ命令のディスパッチに応答して、ディ
    スパッチ・バージョン・レジスタの内容を検査して選択
    すべきブランチを決定し、次いで前記ディスパッチ・バ
    ージョン・レジスタの内容を減分するステップと、 前記選択されたブランチの完了に応じて、完了バージョ
    ン・レジスタの内容を減分するステップと、 前記選択されたブランチの完了前に割込みが発生したと
    き、前記完了バージョン・レジスタの内容を前記ディス
    パッチ・バージョン・レジスタにコピーするステップと
    を含む方法。
  5. 【請求項5】前記初期設定ステップが、 前記プロセッサの汎用レジスタに値をロードするステッ
    プと、 前記汎用レジスタの内容を前記ディスパッチ・バージョ
    ン・レジスタおよび更新レジスタに移動する処理を実行
    するステップとを含む請求項4に記載の方法。
  6. 【請求項6】前記初期設定データを前記完了バージョン
    ・レジスタにコピーする前記ステップが、更新レジスタ
    の内容を完了バージョン・レジスタにコピーするステッ
    プを含む請求項5に記載の方法。
  7. 【請求項7】更新レジスタの内容を完了バージョン・レ
    ジスタにコピーする前記ステップ以後の諸ステップをル
    ープとして実行するステップを含む請求項6に記載の方
    法。
  8. 【請求項8】すでに待ち行列に入っている未完了のbran
    ch on count命令の数とは無関係に、branch on count命
    令をディスパッチするステップを含む請求項7に記載の
    方法。
  9. 【請求項9】命令を格納するためのメモリと、 ディスパッチ・バージョン・レジスタおよび完了バージ
    ョン・レジスタと、 計算されたアドレスに基づいてメモリから命令を取り出
    す手段と、 条件付きブランチ命令を処理するブランチ処理ユニット
    と、 ブランチ制御のために前記ディスパッチ・バージョン・
    レジスタの内容を初期設定する手段と、 初期設定の完了に応答して、初期設定データを前記完了
    バージョン・レジスタにコピーする手段と、 条件付きブランチ命令のディスパッチに応答して、ディ
    スパッチ・バージョン・値を検査して、選択すべきブラ
    ンチを決定し、次いで前記ディスパッチ・バージョン・
    レジスタの内容を減分する手段と、 ブランチの完了に応答して、前記完了バージョン・レジ
    スタの内容を減分する手段と、 ブランチの完了前の割込みの発生に応答して、前記ディ
    スパッチ・バージョン・レジスタの内容を前記完了バー
    ジョン・レジスタの内容で置き換えて、システムを、命
    令の推測実行前の状態に復元する手段とを含む、命令を
    推測実行するためのデータ処理システム。
  10. 【請求項10】前記ディスパッチ・バージョン値の内容
    を初期設定する前記手段が、 プロセッサの汎用レジスタに値をロードする手段と、 前記汎用レジスタの内容を前記ディスパッチ・バージョ
    ン・レジスタに移動する処理を実行する手段とを含む請
    求項9に記載のデータ処理システム。
  11. 【請求項11】すでに待ち行列に入っている未完了のbr
    anch on count命令の数とは無関係に、branch on count
    命令をディスパッチするステップをさらに含む請求項1
    0に記載のデータ処理システム。
  12. 【請求項12】更新レジスタと、 前記ディスパッチ・バージョン・レジスタの初期設定と
    同期して前記更新レジスタの内容を初期設定する手段と
    を備え、 初期設定データを前記完了バージョンにコピーする手段
    が、前記更新レジスタの内容を前記完了バージョン・レ
    ジスタにコピーするために、前記更新レジスタと前記完
    了バージョン・レジスタの間に接続されていることを特
    徴とする、請求項11に記載のデータ処理システム。
JP05319307A 1993-01-08 1993-12-20 プロセッサおよび命令推測実行方法 Expired - Fee Related JP3137157B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US002445 1993-01-08
US08/002,445 US5421020A (en) 1993-01-08 1993-01-08 Counter register implementation for speculative execution of branch on count instructions

Publications (2)

Publication Number Publication Date
JPH06236271A true JPH06236271A (ja) 1994-08-23
JP3137157B2 JP3137157B2 (ja) 2001-02-19

Family

ID=21700801

Family Applications (1)

Application Number Title Priority Date Filing Date
JP05319307A Expired - Fee Related JP3137157B2 (ja) 1993-01-08 1993-12-20 プロセッサおよび命令推測実行方法

Country Status (4)

Country Link
US (1) US5421020A (ja)
EP (1) EP0605872B1 (ja)
JP (1) JP3137157B2 (ja)
DE (1) DE69325086T2 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0623874A1 (en) * 1993-05-03 1994-11-09 International Business Machines Corporation Method for improving the performance of processors executing instructions in a loop
US5740393A (en) * 1993-10-15 1998-04-14 Intel Corporation Instruction pointer limits in processor that performs speculative out-of-order instruction execution
US5721857A (en) * 1993-12-30 1998-02-24 Intel Corporation Method and apparatus for saving the effective address of floating point memory operations in an out-of-order microprocessor
US5963975A (en) * 1994-04-19 1999-10-05 Lsi Logic Corporation Single chip integrated circuit distributed shared memory (DSM) and communications nodes
US5642493A (en) * 1994-11-25 1997-06-24 Motorola, Inc. Method of loading instructions into an instruction cache by repetitively using a routine containing a mispredicted branch instruction
JP3494489B2 (ja) * 1994-11-30 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
US5802346A (en) * 1995-06-02 1998-09-01 International Business Machines Corporation Method and system for minimizing the delay in executing branch-on-register instructions
US5943494A (en) * 1995-06-07 1999-08-24 International Business Machines Corporation Method and system for processing multiple branch instructions that write to count and link registers
US5764970A (en) * 1995-11-20 1998-06-09 International Business Machines Corporation Method and apparatus for supporting speculative branch and link/branch on count instructions
US5740419A (en) * 1996-07-22 1998-04-14 International Business Machines Corporation Processor and method for speculatively executing an instruction loop
US5951679A (en) * 1996-10-31 1999-09-14 Texas Instruments Incorporated Microprocessor circuits, systems, and methods for issuing successive iterations of a short backward branch loop in a single cycle
US6003128A (en) * 1997-05-01 1999-12-14 Advanced Micro Devices, Inc. Number of pipeline stages and loop length related counter differential based end-loop prediction
US6085305A (en) 1997-06-25 2000-07-04 Sun Microsystems, Inc. Apparatus for precise architectural update in an out-of-order processor
US5958047A (en) * 1997-06-25 1999-09-28 Sun Microsystems, Inc. Method for precise architectural update in an out-of-order processor
US5838988A (en) * 1997-06-25 1998-11-17 Sun Microsystems, Inc. Computer product for precise architectural update in an out-of-order processor
US6505296B2 (en) * 1997-10-13 2003-01-07 Hewlett-Packard Company Emulated branch effected by trampoline mechanism
US6233645B1 (en) 1998-11-02 2001-05-15 Compaq Computer Corporation Dynamically disabling speculative prefetch when high priority demand fetch opportunity use is high
US6338133B1 (en) 1999-03-12 2002-01-08 International Business Machines Corporation Measured, allocation of speculative branch instructions to processor execution units
US6675372B1 (en) * 2000-10-31 2004-01-06 Sun Microsystems, Inc. Counting speculative and non-speculative events
US6766444B1 (en) 2000-11-02 2004-07-20 Intel Corporation Hardware loops
US6920547B2 (en) * 2000-12-20 2005-07-19 Intel Corporation Register adjustment based on adjustment values determined at multiple stages within a pipeline of a processor
US7065636B2 (en) 2000-12-20 2006-06-20 Intel Corporation Hardware loops and pipeline system using advanced generation of loop parameters
US7181737B2 (en) 2002-03-18 2007-02-20 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using static procedure return addresses
US6912633B2 (en) 2002-03-18 2005-06-28 Sun Microsystems, Inc. Enhanced memory management for portable devices
US7010783B2 (en) 2002-03-18 2006-03-07 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using reduced dynamic memory allocation
US6996802B2 (en) 2002-03-18 2006-02-07 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using initialization order and calling order constraints
US7281237B2 (en) 2003-01-16 2007-10-09 Sun Microsystems, Inc. Run-time verification of annotated software code
US7424620B2 (en) 2003-09-25 2008-09-09 Sun Microsystems, Inc. Interleaved data and instruction streams for application program obfuscation
US7353499B2 (en) 2003-09-25 2008-04-01 Sun Microsystems, Inc. Multiple instruction dispatch tables for application program obfuscation
US7415618B2 (en) 2003-09-25 2008-08-19 Sun Microsystems, Inc. Permutation of opcode values for application program obfuscation
US7363620B2 (en) 2003-09-25 2008-04-22 Sun Microsystems, Inc. Non-linear execution of application program instructions for application program obfuscation
US8220058B2 (en) 2003-09-25 2012-07-10 Oracle America, Inc. Rendering and encryption engine for application program obfuscation
US7930522B2 (en) * 2008-08-19 2011-04-19 Freescale Semiconductor, Inc. Method for speculative execution of instructions and a device having speculative execution capabilities
CN109739557B (zh) * 2019-01-08 2022-02-18 郑州云海信息技术有限公司 零开销循环装置及实现方法、系统、设备、计算机介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62159228A (ja) * 1986-01-07 1987-07-15 Nec Corp 命令先取り装置
JPS62159231A (ja) * 1986-01-07 1987-07-15 Nec Corp 命令先取り装置
JPH0328928A (ja) * 1989-06-26 1991-02-07 Nec Corp Loopの制御方式
JPH0343830A (ja) * 1989-07-11 1991-02-25 Fujitsu Ltd ブロックリピート回路

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1985000453A1 (en) * 1983-07-11 1985-01-31 Prime Computer, Inc. Data processing system
US4920477A (en) * 1987-04-20 1990-04-24 Multiflow Computer, Inc. Virtual address table look aside buffer miss recovery method and apparatus
US4942520A (en) * 1987-07-31 1990-07-17 Prime Computer, Inc. Method and apparatus for indexing, accessing and updating a memory
US5136696A (en) * 1988-06-27 1992-08-04 Prime Computer, Inc. High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5101484A (en) * 1989-02-14 1992-03-31 Intel Corporation Method and apparatus for implementing an iterative program loop by comparing the loop decrement with the loop value

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62159228A (ja) * 1986-01-07 1987-07-15 Nec Corp 命令先取り装置
JPS62159231A (ja) * 1986-01-07 1987-07-15 Nec Corp 命令先取り装置
JPH0328928A (ja) * 1989-06-26 1991-02-07 Nec Corp Loopの制御方式
JPH0343830A (ja) * 1989-07-11 1991-02-25 Fujitsu Ltd ブロックリピート回路

Also Published As

Publication number Publication date
JP3137157B2 (ja) 2001-02-19
EP0605872B1 (en) 1999-05-26
US5421020A (en) 1995-05-30
EP0605872A1 (en) 1994-07-13
DE69325086T2 (de) 1999-12-16
DE69325086D1 (de) 1999-07-01

Similar Documents

Publication Publication Date Title
JP3137157B2 (ja) プロセッサおよび命令推測実行方法
US5136696A (en) High-performance pipelined central processor for predicting the occurrence of executing single-cycle instructions and multicycle instructions
US5649138A (en) Time dependent rerouting of instructions in plurality of reservation stations of a superscalar microprocessor
EP1003095B1 (en) A computer system for executing branch instructions
US5634103A (en) Method and system for minimizing branch misprediction penalties within a processor
US6526502B1 (en) Apparatus and method for speculatively updating global branch history with branch prediction prior to resolution of branch outcome
JP3120152B2 (ja) コンピューターシステム
JP3565504B2 (ja) プロセッサにおける分岐予測方法及びプロセッサ
US4777594A (en) Data processing apparatus and method employing instruction flow prediction
US5687349A (en) Data processor with branch target address cache and subroutine return address cache and method of operation
EP0448499B1 (en) Instruction prefetch method and system for branch-with-execute instructions
JPH10133873A (ja) 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を投機的に実行するためのプロセッサおよび方法
US20060168432A1 (en) Branch prediction accuracy in a processor that supports speculative execution
US6687812B1 (en) Parallel processing apparatus
JPH0334024A (ja) 分岐予測の方法とそのための装置
KR100472346B1 (ko) 명령어 리플레이를 포함하는 프로세서 파이프라인
KR100242403B1 (ko) 데이타 처리 시스템의 조건 레지스터 데이타 임시 저장 방법 및 시스템
US5898864A (en) Method and system for executing a context-altering instruction without performing a context-synchronization operation within high-performance processors
JP2742374B2 (ja) スーパースカラ・プロセッサ・システムにおける命令ディスパッチ効率を向上させる方法およびシステム
US6622240B1 (en) Method and apparatus for pre-branch instruction
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US5784604A (en) Method and system for reduced run-time delay during conditional branch execution in pipelined processor systems utilizing selectively delayed sequential instruction purging
JP3779012B2 (ja) 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法
JPH06266556A (ja) データ処理装置
JP3721002B2 (ja) メモリ要求を形成するために並列に生成される複数の取出アドレスのうちの1つを選択する、プロセッサおよび命令取出方法

Legal Events

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