JPH0749781A - インタロックハードウェアの単純化方法及び装置 - Google Patents
インタロックハードウェアの単純化方法及び装置Info
- Publication number
- JPH0749781A JPH0749781A JP6094234A JP9423494A JPH0749781A JP H0749781 A JPH0749781 A JP H0749781A JP 6094234 A JP6094234 A JP 6094234A JP 9423494 A JP9423494 A JP 9423494A JP H0749781 A JPH0749781 A JP H0749781A
- Authority
- JP
- Japan
- Prior art keywords
- latency
- program
- processing system
- hardware
- stop
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
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
ンパイルされた待ち時間とは異なる待ち時間を有するオ
ブジェクトコード互換処理システム(20, 40)におい
て、そのプログラムが適切に実行されることを可能にす
る方法及び装置を提供する。 【構成】 本発明は、コンピュータプログラムの作成時
に用いられた待ち時間仮定を用いて、コンピュータプロ
グラム内での演算の優先順位を保護し、かくしてコンピ
ュータプログラムの互換性が達成される。コンピュータ
プログラムが作成される場合に、待ち時間情報はコンピ
ュータプログラム内にもたらされる。その後、コンピュ
ータプログラムの実行時に、そのプログラムは処理シス
テムに対し、そのプログラムの作成時に使用された待ち
時間仮定を伝達することができる。コンピュータプログ
ラムの実行時に処理システムが待ち時間仮定を使用して
互換性を確保するための、種々の方法が記載される。
Description
仮定を使用してインタロックハードウェアを単純化する
方法及び装置に関し、より詳しくは、コード互換プロセ
ッサのハードウェア待ち時間とは無関係に、プログラム
のコード化時に使用された待ち時間仮定に従って、その
プログラムを異なるコード互換プロセッサで実行する方
法及び装置に関する。
る並列性を活用するために、多数の試みがなされてきて
いる。殆どの場合、これらの試みはユーザにとってわか
りやすいものである。
プライン化である。パイプライン化とは、パイプライン
セグメントと呼ばれる計算単位によって独立に実行でき
る計算段階へと、命令を区分することを意味する。パイ
プライン化はコンピュータの性能を大幅に向上させる
が、演算相互の間における高レベルの依存性によって、
達成できる最大のオーバラップは制限される。
ス志向のコンピュータプログラムを実行する処理システ
ムは、演算を高速で処理することができる。しかしなが
ら、パイプライン化を使用する場合には、以後の演算
が、まだ完了していないそれ以前の演算の結果に依存す
る状況に備えて、特殊な予防措置を講じなければならな
い。即ち、この特殊な予防措置は、先行する演算の結果
が得られる前に、それ以降の依存性のある演算が発行さ
れるのを防がねばならない。
ド又はインタロックハードウェアとして知られる特殊な
ハードウェアによって取り扱われていた。スコアボード
又はインタロックハードウェアによって、プログラマ
は、すべての演算が単一サイクル内に行われると仮定す
ることができる。しかしながら、多くの演算は1サイク
ルより長くかかるので、スコアボード又はインタロック
ハードウェアは、以前の未完了の演算の結果に対する、
その後の演算の依存性を検出しなければならない。即
ち、ある演算が完了するのに1サイクルより長くかか
り、その後の演算がこの先の命令に依存している場合に
は、処理システムは、この先行する未完了の演算の結果
が得られるまで後の演算の発行を停止させることによっ
て、依存性を保護するように機能しなければならない。
ード又はインタロックハードウェアアプローチの1例
は、M32/100マイクロプロセッサ(三菱電気株式会社)
によって示されている。M32/100マイクロプロセッサ
は、5ステージの命令実行パイプラインを有し、ハード
ウェアインタロック機構をスコアボードレジスタと共に
使用して、命令ストリームの優先順位を保存する。より
具体的には、M32/100は、パイプラインステージに対応
する複数のスコアボードレジスタを有している。現在の
命令の結果を受け取る資源(レジスタ)に対応するスコ
アボードレジスタ中に、ビットがセットされる。このビ
ットは、パイプライン中の命令の流れに同期された、次
のステージのスコアボードレジスタへとシフトされる。
命令の実行が完了すると、このビットはスコアボードレ
ジスタからシフトアウトされる。例えば、メモリオペラ
ンドをもつ命令がパイプラインのAステージに達し、セ
ットされたスコアボードビットを少なくとも1つのスコ
アボードレジスタに有するレジスタ又はメモリの内容を
取り出そうとする場合、命令パイプラインは停止され
る。M32/100マイクロプロセッサについては、Yoshida
らの"A Strategy for Avoiding Pipeline Interlock De
lays in a Microprocessor", 1990 IEEE International
Conference on Computer Design: VLSI in Computers
and Processors, Cambridge, MA (1990)に詳細に記載さ
れている。
ード又はインタロックハードウェアアプローチの別の例
は、タグ及びレディビット情報を各レジスタ項目と共に
使用する。レディビットはレジスタ項目中のデータが有
効かどうかを示し、タグはレジスタのバージョンを示
す。オペランドが準備できていない演算は、オペランド
が準備できるまで待ち領域に送られるので、誤った実行
は防止される。その結果、まだ準備のできていない命令
があっても、必ずしもマシンは停止されない。このアプ
ローチは、Uviegharaらの"An Experimental Single-Chi
p Data Flow CPU", IEEE Journal of Solid-State Circ
uits, Vol. 27, No.1, January 1992に詳細に記載され
ている。
結果が得られる前に後の従属演算が発行されるのを防
ぐ)は、プログラム中に組み込むこともできる。即ち、
実際のハードウェア待ち時間と一致する、ユーザに見え
る待ち時間を有する種類のマシンが存在している。これ
らのマシンの場合には、演算の実行からその結果の使用
までの間に必要な数の演算を挿入することによって、早
過ぎるデータの使用を防ぐプログラムを書くことができ
る。これらの挿入された演算は、ユーザに見える遅延ス
ロットと呼ばれるものの中に置かれる。演算の実行から
その結果の使用までの間の、ユーザに見える遅延スロッ
トの数は、待ち時間に依存している。ユーザに見える遅
延スロットを有するプログラムを実行する処理システム
は、依存性が存在するかどうかを判定するために、複雑
なスコアボードやインタロックハードウェアを使用する
必要はない。
マ又はコンパイラによってコードへとプログラムされ
る。プログラマ又はコンパイラは、処理システムの資源
可用性及び演算タイミング(例えばハードウェア待ち時
間)に関する詳細な知識を使用して演算をスケジューリ
ングし、他に何も動作するものがないときはノーオペレ
ーション(NOOP)を挿入する。ユーザに見える遅延スロ
ットの例は、メモリロード遅延スロット、分岐遅延スロ
ット、及び演算遅延スロットである。例えばロード遅延
スロットは、ロード動作後のサイクル数を定義し、その
間は処理システムは、ロードが完了したと仮定すること
ができない。
ラミングの利点は、演算が実行を開始した後の、何らか
の時間ウィンドウ中の潜在的な依存性に関して、システ
ムレジスタをテストするために従来使用されている、複
雑なスコアボードやインタロックハードウェアを処理シ
ステムが必要としないことである。通常必要とされるこ
の複雑なスコアボード又はインタロックハードウェア
は、精巧な高速検査ハードウェアであり、単一サイクル
中に依存性検査を多数実行できなければならない。必要
とされるこの複雑なスコアボード又はインタロックハー
ドウェアは、コストがかかるだけでなく、プロセッサの
負担になる。
ラムでは、複雑なスコアボード又はインタロックハード
ウェアの必要性が回避されるが、そのようなプログラム
は互換性の問題を有する。ユーザに見える遅延スロット
を持つようにプログラミングすることの主な欠点は、演
算を正しくスケジューリングするために、処理システム
のハードウェア待ち時間を知らねばならないことであ
る。その結果、ユーザに見える遅延スロットを使用し
て、誤った順序での実行を防ぐ処理システムは、異なる
ハードウェア待ち時間を有する処理システム用に作成又
はコンパイルされたプログラムを正しく実行できなくな
る。
ンドがハードウェア機能によって使用可能となる時点
と、その機能の結果得られるオペランドがその後のハー
ドウェア機能によって使用可能な状態となる時点の間
の、クロックサイクルの数として定義される。仮定され
る待ち時間とは、プロセッサ(プログラムを実行する)
が演算結果を算出するのに必要であるとして、プログラ
マが仮定するサイクル数である。ハードウェア待ち時間
とは、プロセッサの実際の待ち時間である。処理システ
ムは典型的には、各プロセッサに関連する固定のハード
ウェア待ち時間、或いは各演算に関連する固定のハード
ウェア待ち時間を有する、多数のプロセッサを有する。
エンコードされたコマンドであり、プロセッサが完了す
る必要のある動作を記述する。必要とされる入力オペラ
ンドの可用性が保証されるまで、演算を発行することは
できない。典型的には、必要な入力及び出力は、レジス
タ名によって指定される。さらにまた、命令とは、単一
サイクル内に発行されるとプログラマが仮定する、1つ
以上の演算の集合である。
り高速かつより高性能となった。その結果、ハードウェ
ア待ち時間は常に変化している。特定のプロセッサで実
行するために生成又はコンパイルされたユーザに見える
遅延スロットを伴うプログラムは、同じプロセッサファ
ミリのものであったとしても、異なる待ち時間を有する
プロセッサ上では適切に実行されないことが多い。従っ
て、ユーザに見える遅延スロットによるプログラミング
は、プログラムを実行する処理システムの待ち時間が、
プログラムの作成又はコンパイル時にプログラムに固定
された待ち時間とは異なる場合には、有効でない。従っ
て、ユーザに見える遅延スロットの従来の使用法では、
プログラムで仮定されたものとは異なるハードウェア待
ち時間を有する処理システムとの互換性が提供されな
い。
の次世代プロセッサが開発されるたびにプログラムを再
コンパイルすることは、商業的に実施不可能である。多
数の理由から、プログラムのベンダ及びユーザは、プロ
グラムバージョンができるだけ少ないことを望んでい
る。1つの主な理由は、新たな再コンパイルが行われる
と、そのたびに完全な再テストを行う必要があり、それ
が非常に時間を浪費すると共にコストもかかるからであ
る。別の理由は、ベンダが多数の異なるプログラムバー
ジョンを在庫しサポートすることを希望しないことであ
る。
定する、ユーザに見える遅延スロットを使用するプログ
ラムの一部を示す図である。この図1を使用して、従来
技術に関連する互換性の問題を例示する。図1におい
て、演算op2用に3サイクルのハードウェア待ち時間を
有する第1のプロセッサ用に、プログラム2をコンパイ
ルしたと仮定する。従来、ソースコードをコンパイル
し、又はアセンブリ言語プログラムを書く際には、前の
演算結果に依存することができない、意味のある演算を
遅延スロットに埋め込むことが好ましい。しかしなが
ら、そのような演算が利用可能でない場合には、遅延ス
ロットにノーオペーション(NOOP)を置くことができ
る。図1に示す例では、演算op2の実行からその結果の
使用(即ち演算op3)までの間に、プログラム中に2つ
の遅延スロット4がコード化されている。この例では、
遅延スロット4は演算op2の結果に依存しない演算(o
p)を含んでいる。表示ra, rb, rc, rd, reは、処理シ
ステム中のレジスタを示している。
ェア待ち時間を有する第2のプロセッサがその後開発さ
れたと仮定する。このプログラムは第1のプロセッサ上
では適切に実行されるが、第2のプロセッサ上では正し
く動作しない可能性が大きい。特に、第2のプロセッサ
がサイクル(0)で演算op2の実行を開始した場合、サ
イクル(4)になるまでは結果がレジスタrcに返される
保証はない。しかしながら、サイクル(3)では、レジ
スタrc中の値に依存する次の演算op3が実行を開始す
る。従って、第2のプロセッサでプログラムを実行する
と、誤った結果が得られることになる。その結果、ユー
ザに見える遅延スロットを使用し、かつ特定のプロセッ
サ用にコンパイルされたプログラムは、それ以前又は以
後の世代のプロセッサでの正しい実行が保証されなくな
る。
なくともある程度の互換性を提供する技術は存在してい
る。この技術は、共用メモリ複数命令ストリーム−複数
データ(MIMD)ストリームコンピュータアーキテクチャ
を有する、実験的なHorizonスーパーコンピューティン
グシステムで使用されている。Horizonスーパーコンピ
ューティングシステムの命令セットは、あらゆる命令に
ついて先読みフィールドを含む。先読みフィールドは、
命令のオーバラップを制御するために使用される値を含
んでいる。この値は、コードジェネレータによって、現
在の命令に依存する次の命令までの最小距離以下である
ことが保証される。即ち、先読みフィールド中の値は、
現在の命令が完了する前に発行される可能性のある、追
加的な命令の数を示している。Horizonスーパーコンピ
ューティングシステムの主な欠点は、あらゆる命令につ
いて先読みフィールドが提供されるために、このアーキ
テクチャ用のプログラムのコードサイズが大幅に増大す
ることである。例えば、ハードウェア待ち時間が1サイ
クルから8サイクルまで変化する場合には、あらゆる命
令に3ビット先読みフィールドが追加される。Horizon
スーパーコンピューティングシステムの別の欠点は、先
読みフィールド中の値が、命令内の3つの演算すべてに
適用され、それによって先読取りフィールド中の値が強
制的に、命令内での最悪ケース(最小)の値とされるこ
とである。この実験的なHorizonスーパーコンピューテ
ィングシステムについては、Kuehn及びSmith, "The Hor
izon Supercomputing System: Architecture and Softw
are", Supercomputing '88 (IEEE), November 1988、Dr
aper, "Compiling on Horizon", Supercomputing '88
(IEEE), November 1988、Thistle及びSmith, "A Proces
sor Architecture for Horizon", Supercomputing '88
(IEEE), November 1988に詳細に記載されている。
ome Incorporated製のCydraTM5は、ソフトウェアの互換
性とは無関係に、メモリアクセス時間を調整することが
できる。CydraTM5スーパーコンピュータは、共通の仮想
メモリシステムを共用する単一の数値演算プロセッサと
1個ないし6個の対話型プロセッサを有する、異機種マ
ルチプロセッサシステムである。このスーパーコンピュ
ータは、指示データフローアーキテクチャを有し、この
アーキテクチャでは、あらゆる演算の待ち時間が既知で
あることが必要とされる。プログラマは、各メモリ要求
に同じ時間がかかると認識する、「仮想時間」メモリ待
ち時間仮定を使用する。しかしながら現実には、データ
は予想よりも早く又は遅く準備される場合がある。コン
パイラによって予想されたアクセス時間が、一貫して実
際のアクセス時間よりも短い場合、プロセッサはその時
間のかなりの部分を凍結状態又は停止状態に費やす。予
想されたアクセス時間が、一貫して実際のアクセス時間
よりも長い場合には、コンパイル時に生成されたスケジ
ュールの長さは不必要に長くなる。
ューリングする際にコンパイラが仮定したメモリ待ち時
間値を含むプログラム可能レジスタである、メモリ待ち
時間レジスタを使用して、公称メモリアクセス時間を調
整する。このメモリシステムは、メモリ待ち時間レジス
タ中の値を使用して、メモリからのデータが予定より早
いか遅いかを判定し、また従って、データをバッファに
入れるべきかプロセッサを停止すべきかを判定する。結
果が遅れている場合には、結果が準備できるまで、プロ
セッサはその後の命令の実行を停止する。メモリ待ち時
間レジスタは、メモリ待ち時間の値又は最適値が不明の
場合にマシンに柔軟性を提供し、かつメモリアクセスだ
けに関して性能を向上させるために使用される。Cydra
TM5の1つの問題は、未処理のメモリ要求が幾つかある
ときにメモリ待ち時間レジスタがより大きな値に変更さ
れた場合には、CydraTM5がもはや適切に動作しなくなる
ことである。いずれにしても、CydraTM5スーパーコンピ
ュータは、当業者を悩ませてきた互換性の問題を解決し
ていない。CydraTM5スーパーコンピュータについては、
Rauらの"The CydraTM5 Stride-insensitive Memory Sys
tem", 1989 International Conference on Parallel Pr
ocessing, 1989に詳細に記載されている。
えるスロットによって設計されたプログラムは、複雑な
依存性検査ハードウェアの必要性を回避するが、これら
のプログラムでは明らかに互換性が失われる。その結
果、特定のプロセッサ用のユーザに見える遅延スロット
で設計されたプログラムは、将来のプロセッサとの順方
向互換性も、過去のプロセッサとの逆方向互換性ももた
ない。ハードウェア待ち時間は新規なプロセッサが具現
化されるごとに変化する傾向があるため、互換性をもつ
ことは極めて望ましい。
る固有の解決策を提供し、プロセッサのハードウェア待
ち時間が異なるかどうかにかかわらず、遅延スロットを
使用する単一のプログラムバージョンがプロセッサファ
ミリと互換性をもつようにすることを課題としている。
明は、プログラムの作成又はコンパイル時に使用された
のとは異なる待ち時間を有する処理システム中で、その
プログラムを正しく実行できるようにするものである。
るプログラムは、処理システムに対して、プログラムの
作成又はコンパイル時に使用された待ち時間仮定を通知
する。処理システムは、この待ち時間仮定とその処理シ
ステムの実際のハードウェア待ち時間とを使用して、そ
の後の命令の発行を停止しなければならないかどうかを
判定し、プログラムの待ち時間仮定が破られないことを
確保する。
対する利点を多数提供する。本発明は、オブジェクトコ
ード互換プロセッサファミリの間で、ソフトウェア互換
性が得られる。本発明では、プログラムのコード化時に
使用された待ち時間仮定に応じてプログラム内の演算の
優先順位を保護するので、ソフトウェア互換性が満たさ
れる。さらに、本発明はソフトウェア互換性を得る一方
で、プログラムのテキストサイズを最小限にしか増大し
ない。本発明はまた、パイプラインインタロックに関連
した、コストと時間のかかる依存性検査操作を実行する
必要性を大幅に減少させる。
明の第1の側面は、ユーザに見える待ち時間を有するプ
ログラム内に待ち時間情報を効率的に提供することに関
する。特に、プログラムは、プログラムコードサイズ効
率手段を使用する待ち時間仮定を含む。待ち時間仮定
は、プログラマ又はコンパイラがコードをスケジューリ
ングする際にプログラムに含められる。本発明の第2の
側面は、オブジェクトコード互換処理システム上での互
換性が保証されるように、プログラム内に含まれる待ち
時間仮定に応じてプログラムを実行する方法及び装置に
関する。
イズ効率手段によって実施することができる。例えば、
プログラムコードサイズ効率手段は、プログラムのヘッ
ダ中の待ち時間情報であっても、プログラムの本体内の
待ち時間設定文中の待ち時間情報であってもよい。
演算について仮定された待ち時間があるプロセッサ(例
えば関数パイプライン)の実際のハードウェア待ち時間
よりも短い場合、処理システムは、その後の指令がそれ
以前の未完了の演算に依存するかどうかにかかわらず、
1以上のサイクルにわたってその後の演算の発行を停止
する。この停止決定プロセスは、処理システムの各プロ
セッサで「実行中」のあらゆる演算に対して各演算ごと
に実行される。この実施例を拡張して、他のプロセッサ
によるすべての停止要求を追跡することによって、不要
な停止を避けることができる。
の実施例をスコアボード又はインタロックハードウェア
と組み合わせて、不要な停止の数をさらに減少させるこ
とができる。ある演算について仮定された待ち時間が実
際のハードウェア待ち時間以上である場合には、停止は
必要とされず、また(スコアボードやインタロックハー
ドウェアで)依存性検査を実行する必要はない。一方、
仮定された待ち時間がハードウェア待ち時間より短い場
合には、スコアボード又はインタロックハードウェアを
使用して、次に続く命令が、先行する未完了の演算の結
果に依存するかどうかを判定することができる。待ち時
間仮定と依存性検査を共に使用することによって、高速
で正確な実行を保証することができる。例えば通常、前
の命令から、待ち時間仮定よりも長いがハードウェア待
ち時間よりも短いサイクルだけ後に、次の命令を発行す
る場合には、プロセッサを停止する必要がある。しかし
ながら、次の命令が前の未完了の演算に依存していない
と依存性検査ハードウェアが判定した場合には、次の命
令を予定どおり処理することができる(即ち、次のサイ
クルでプロセッサを停止する必要はない)。一方、この
範囲内の次の命令が、前の未完了の演算の結果に依存し
ている場合には、処理システムは次に続く命令の発行を
停止しなければならない。
な説明から、より容易に理解することができる。添付図
面においては、同様の参照符号は同様の構成要素を示し
ている。
参照して説明する。しかしながら、本発明はこれらの限
定された実施例を越えるものであり、これらの図に関し
て本明細書に与えられた詳細な説明は例示的な目的のた
めのものであることを、当業者は容易に理解するであろ
う。
い待ち時間をもつ演算を処理する処理システムに適用で
きる。この処理システムには、特定の処理タスクを実行
する様々なプロセッサが含まれる。これらのプロセッサ
は、パイプライン機能を使用して演算を実行する関数パ
イプラインであることが好ましい。いずれにしても、各
プロセッサ(例えば関数パイプライン)は、それ自体の
ハードウェア待ち時間を有する。さらに厳密には、実行
する予定の各演算ごとに、ハードウェア待ち時間は処理
システムのハードウェア待ち時間に依存する。
に見える遅延スロットによって作成又はコンパイルされ
た従来のプログラムを、異なるハードウェア待ち時間を
有する処理システム上で使用することはできない。本発
明はこの問題を、プログラムがオブジェクトコード互換
プロセッサファミリ内で互換性をもつようにする効率的
な方法で解消するものである。
は、ユーザに見える遅延スロットを使用するプログラム
内に、待ち時間情報を効率的に提供することに関する。
第2の側面は、オブジェクトコード互換処理システム上
で互換性が保証されるようにして、プログラムによって
提供される待ち時間情報に応じてプログラムを実行する
方法及び装置に関する。
を使用してプログラム内に待ち時間仮定情報を提供する
ことに関する。図2は、テキスト効率手段の1実施態様
を示す図である。
システム20とプログラム22の対話を伴う。プログラム22
には、ヘッダ部分24と本体部分25が含まれる。図2で
は、ヘッダ部分24(即ち命令ストリームの外側)に、待
ち時間情報26(即ち、プログラマ又はコンパイラがコー
ドのスケジューリング時に使用した待ち時間仮定)が提
供されている。プログラム22内の演算の待ち時間仮定
は、プログラム22の開始時に、処理システム20内の待ち
時間記憶領域28に記憶することができる。この待ち時間
仮定は、様々な異なる方法でヘッダに配列又はコード化
することができる。
スト効率手段は、プログラムのヘッダにほんの数ビット
のテキストしか必要としない。従って、本発明の第1の
側面によれば、プログラム22は処理システム20に対し、
プログラム22が使用する待ち時間仮定を通知することが
でき、その場合に非常に少数のビットしか犠牲にしな
い。
時間設定文をプログラム内に演算として含む。この待ち
時間設定文は、プログラムの実行に際して、様々な処理
演算について待ち時間仮定を設定又は変更するように動
作する。表1は、プログラム中における待ち時間設定文
の1例を示す。待ち時間設定文set_LRA=4は、待ち時間
レジスタAに値4を設定する。その後、演算op4が発行
された場合に、処理システムは待ち時間レジスタA(LR
A)を見て、適切な待ち時間仮定を取り出す。この場
合、待ち時間仮定は、演算op4(仮定された待ち時間がL
RAによって指定される種類の演算に含まれる)のスケジ
ューリング時に使用された待ち時間を示す。従って、従
属演算op5は演算op4から4サイクルだけ後にくる。
見える遅延スロットは、レジスタra内の値に絶対に依存
しない演算(op)を含む。表1の表記ra, rb, rc, rd
は、処理システム中のレジスタを示す。
望ましい場合には、待ち時間設定文は特に有利である。
例えば性能上の理由から、プログラムが実行時に待ち時
間仮定を変更したい場合がある。待ち時間設定文によっ
て、プログラマ又はコンパイラは、演算の何れか又はす
べてについて、仮定された待ち時間を変更することがで
きる。同時に、これらの変更された待ち時間は、処理ハ
ードウェア(例えば待ち時間記憶領域)に提供される。
際に演算の待ち時間を増やすことが有益である。コード
が待ち時間2でスケジューリングされているが、後で待
ち時間4をもつプロセッサ上で実行する場合、極めて並
列性の高いループに入る際に待ち時間が4に増やされ、
ループを抜ける際に2に戻されるならば、プログラムは
待ち時間2と待ち時間4のどちらのマシン上でも、殆ど
最適な性能で実行を行う。待ち時間2のマシンに対する
唯一の性能損失は、最初にループに入る時の2サイクル
だけである。実行が最適化されるため、待ち時間4のマ
シンに対する性能の向上は劇的なものとなるが、これに
対してコードが待ち時間2でスケジューリングされた場
合には、プロセッサはループを反復するたびに2サイク
ル停止する。かくして、極めて並列性の高いループに入
る際に待ち時間を増やすことによって、コードはより長
い待ち時間をもつマシン上で効率的に実行される。一
方、ループの並列性がそれほど高くない場合には、待ち
時間を増やすと待ち時間2のマシンの性能が低下するだ
けで、待ち時間4のマシンの性能は向上しないから、待
ち時間を増やしてはならない。
テキスト効率手段は、処理システム20に対し、プログラ
ム22の作成又はコンパイル時に使用された待ち時間を通
知するが、プログラム22のテキストサイズは最小限しか
増大しない。
する際に実行されるステップを示すフローチャートであ
る。図3は、本発明の第1の側面と第2の側面をリンク
するように働く。まずステップ30において、プログラム
内に含まれた待ち時間仮定情報を有するプログラムが取
り出される(第1の側面)。次にステップ32において、
プログラムによって提供された待ち時間情報が、処理シ
ステム20が必要に応じて検索できるように、処理システ
ム20の待ち時間記憶領域28に記憶される。3番目に、処
理システム20は、ステップ32で待ち時間記憶領域28に記
憶された待ち時間仮定情報に応じてプログラム22をステ
ップ34で実行し、それによって、プログラムの作成時に
使用された待ち時間仮定が破られないことを確保する。
待ち時間記憶領域28と、処理システム20による待ち時間
仮定の使用については、以下で本発明の第2の側面に関
して詳述する。
て提供された待ち時間情報に応じてプログラムを実行す
る方法及び装置に関する。待ち時間情報とは、コンパイ
ラ又はプログラマがプログラムのスケジューリングに際
して使用した待ち時間仮定である。一般に、この方法及
び装置は、第1の側面によってプログラムから待ち時間
仮定を受け取り、次いで、オブジェクトコード互換処理
システムでの互換性が保証されるように、第2の側面に
よってプログラムの実行を制御する。
く実行されるように、処理システムによって講じられる
予防措置を統制する。具体的には、処理システムは、以
後の演算の発行を1以上のクロックサイクルにわたって
停止する必要があるかどうかを判定する。この判定は、
演算の実際のハードウェア待ち時間と、演算の仮定され
た待ち時間に基づいて下される。実際のハードウェア待
ち時間は、処理システム内に配線されている。仮定され
た待ち時間は、プログラム自体を介して処理システムに
提供される(第1の側面)。以後の演算の発行を1以上
のサイクルにわたって停止する必要があるかどうかを判
定するプロセスについて、以下で説明する(第2の側
面)。
実施例をいくつか説明する前に、この第2の側面がプロ
グラムの実行に対して有する効果の例について、簡単に
記述しておくことが有用である。図4は、本発明の第2
の側面の動作の簡単な例を示す図である。図4に示され
たプログラム2は、図1に示したのと同じプログラム2
であり、ユーザに見える遅延スロット4を含む。プログ
ラム2は、演算op2用に3サイクルの待ち時間を有する
(図1参照)プロセッサA上で走るように作成又はコン
パイルされている。特に、このプログラムをスケジュー
リングする際に、プログラム中の演算op2とop3の間に2
つの遅延スロット4がエンコードされている。これらの
遅延スロット4は、演算op2の結果に依存しない演算(o
p)を含んでいる。
行される。しかしながら、予防措置を講じないかぎり、
プログラム2は、演算op2用に4サイクルの待ち時間を
有するプロセッサB(プロセッサAとコード互換)上で
は正しく実行されない。問題は、プログラムは演算op2
の結果はサイクル3よりも前に準備されていると考える
が、実際にはプロセッサBは、サイクル4までは結果を
保証できないことである。
セッサB上で正しく実行させるのに必要な予防措置を提
供する。特にこの例では、演算op2用に4サイクルの待
ち時間を有するプロセッサBでプログラム2が実行され
ると、演算op3の実行をサイクル4にシフトするよう
に、サイクル3で停止10が生ずる。その結果、プログラ
ム2は、異なる待ち時間の組を有するプロセッサA上で
実行されるようにコンパイルされた場合でも、プロセッ
サB上で適切に実行される。図4は、停止10が演算op2
の後の第3のサイクルで生ずることを示しているが、停
止10は本発明の第2の側面の実施態様に応じて、サイク
ル1又は2で生ずることができ、或いは完全に回避する
ことさえ可能である。
ステム40のブロック図を示している。処理システム40
は、プログラムの命令を発行するための命令発行装置41
を含む。各命令は、同時に発行できる1以上の演算を含
む。命令発行装置41は、実行すべきプログラムを含むメ
モリ42に接続されている。プログラムの各演算が発行さ
れるたびに、命令発行装置41は待ち時間記憶領域63から
適当な待ち時間仮定を選択する。処理システム40は、待
ち時間仮定を検索する前に、本発明の第1の側面に関連
して、待ち時間記憶領域43に待ち時間仮定を入れてお
く。待ち時間記憶領域43とは、待ち時間命令装置41がア
クセスできる記憶領域(例えばレジスタ、メモリ位置な
ど)にすぎない。
ら成るプロセッサにも接続されている。図5に示す関数
パイプライン44は、関数パイプラインA、関数パイプラ
インB、及び関数パイプラインCである。各関数パイプ
ライン44は通常、異なるタスク用に構成される。例え
ば、関数パイプラインAをメモリ(ロード/記憶)演算
用に、関数パイプラインBを整数演算用に、関数パイプ
ラインCを浮動小数点演算用にすることが可能である。
理回路46を含む。各停止回路45は、関数パイプライン44
の1つと関連している。従って、処理システム40の各プ
ロセッサは、関数パイプライン44と停止回路45を共に含
むとみなすことができる。図5に示す停止回路45は、停
止回路A、停止回路B、及び停止回路Cである。各停止
回路は、処理システム40が停止を必要としているかどう
かを判定し、プログラムの待ち時間仮定が破られるのを
防ぐ。各停止回路45からの出力は、論理回路46に送ら
れ、論理回路46は命令発行装置41に停止信号を送る。ま
た、停止信号は各々の停止回路45にフィードバックされ
る。論理回路66はOR回路であることが好ましい。
ち時間仮定を受け取る。各関数パイプライン44の実際の
パイプライン待ち時間は、それに関連する(例えば回路
内に配線された)停止回路45に既知である。停止回路45
の機能は、処理システム40によるプログラムの正しい動
作を保証するために、停止が必要かどうかを判定するこ
とである。具体的には、停止回路45は命令発行装置41と
一緒になって、必要に応じて停止のためのさらなる命令
の発行を行い、プログラムの正しい実行を確保する。
発行装置41によって実行されるステップを示すフローチ
ャートである(発行/停止処理)。処理システムは、各
プログラム実行サイクルごとに、プログラムの次の命令
を発行するか停止するかを制御するように機能する。各
命令は、1つ以上の演算を含むことができる。複数の演
算を備えた命令は組み込まれたオーバラップを有する
が、命令内の各演算は、異なるプロセッサ(例えば関数
パイプライン)によって実行される。
1の命令を発行することによって処理が開始される。ス
テップ500で各命令が発行されるたびに、その命令内の
演算は、この種の演算を実行するプロセッサ(例えば関
数パイプライン44)に送られる。例えば整数加算演算
は、整数演算論理装置(ALU)パイプラインに送られ
る。或いはまた、ロード演算又はストア演算はメモリパ
イプラインに送られる。
の何れか(例えば停止回路45)がこのサイクルについて
停止を表明するかどうかに基づいて、決定がステップ50
2で下される。より具体的には、関数パイプライン44に
関連する停止回路45のうちの何れかが、このサイクルに
ついて停止を表明するかどうかに基づいて、ステップ50
2で決定が下される。停止表明の生成については、以下
で図7及び図8を参照して説明する。
(例えば停止回路45)も停止を表明しない場合には、ス
テップ504でプログラム中で次に続く命令が発行され、
それによって1つ以上の演算が適当な関数パイプライン
44に送られる。或いは、所与のサイクルについて1つ以
上のプロセッサ(例えば停止回路45)が停止を表明する
場合には、ステップ506において、次に続く命令の発行
は1サイクルにわたって停止される。何れの場合にも、
ステップ504と506の後に、システムはステップ508にお
いて、プログラムのすべての命令が発行されたかどうか
に基づいて決定を下す。プログラムのすべての演算が発
行されている場合には、発行/停止処理は完了し、ステ
ップ510で処理は停止される。一方、まだ発行されてい
ない演算がある場合には、ステップ502にループバック
することによって、発行/停止処理は継続される。しか
しながら、ステップ502に戻る前に、処理が次のクロッ
クサイクルに際してだけステップ502に進むように、ス
テップ512で同期遅延が行われる。
する処理ステップ(停止決定処理)の第1の実施例を示
すフローチャートである。各命令が発行されると(図
6)、命令に含まれる演算はそれぞれのプロセッサに送
られる。発行された各演算は、ステップ600においてプ
ロセッサの1つに受け取られる。次にステップ602にお
いて、プロセッサによるその演算のハードウェア待ち時
間から、その演算について仮定された待ち時間を減算す
ることによって、差の値(DIFF)が算出される。仮定さ
れた待ち時間は処理システムに対し、プログラムを介し
て利用可能とされ(第1の側面)、ハードウェア待ち時
間は処理システムに既知である。
ップ604で決定が下される。差の値(DIFF)がゼロより
大きい場合、プロセッサはステップ606において、次のD
IFFサイクルについて停止を表明する。他方、差の値(D
IFF)がゼロ以下の場合には、当該演算を処理するのに
停止は必要でない。ステップ604と606の後に、停止決定
処理は完了される。
する処理ステップ(停止決定処理)の第2の実施例を示
すフローチャートである。1例としては、図5に示すよ
うに、各プロセッサは少なくとも停止回路45と、関数パ
イプライン44とを含むことができる。関数パイプライン
44において各演算が「実行中」であるサイクルごとに、
処理システム40は、次の命令を発行するか、1サイクル
にわたって停止するかを決定する。各々の「実行中」演
算について行われる処理ステップを図8に示し、以下で
図5を参照して説明する。最初にステップ700におい
て、関数パイプライン44で処理するために演算が受け取
られる。ステップ700で受け取られた演算は、命令発行
装置41によって発行された(図6のステップ500, 504)
演算である。処理システム40は、「実行中」演算ごと
に、その演算の待ち時間仮定と、その演算を実行する関
数パイプライン44のハードウェア待ち時間とをモニタす
る。次にステップ702において、変数VとHのそれぞれ
に対して、その演算について仮定された待ち時間の値
と、関数パイプライン44のハードウェア待ち時間の値が
割り当てられる。仮定された待ち時間とは、プログラム
から検索され処理システム40(例えば待ち時間記憶領域
43)に記憶された、その特定の演算についての待ち時間
仮定である。
中」である全てのサイクルで実行される。ステップ704
は、次のサイクルがいつ始まるかを示す。最初は、ステ
ップ704を通過する次のサイクルは、ステップ700で受け
取られた演算の第1のサイクルである。図8に示す処理
ループのその後の反復においては、ステップ704を通過
する次のサイクルは、その演算の後のサイクルである。
これらのクロックサイクル中に、関数パイプライン44が
演算を処理する。
のうちの何れかがこのサイクルについて停止を表明する
かどうかに基づいて決定が下される。図5に関しては、
停止回路45が、それに関連する関数パイプライン44を停
止する必要がある場合に停止を表明する。そのサイクル
についてどのプロセッサも停止を表明しない場合には、
ステップ708で変数H及びVの値が共に1だけ小さくさ
れる。この場合停止は行われない(即ち図6で、ステッ
プ506ではなくステップ504が実行される)。これに対
し、そのサイクルについて1つ以上のプロセッサ(例え
ば停止回路45)が停止を表明する場合には、ステップ71
0において変数Hの値のみが1だけ小さくされる。この
場合には、このサイクルで停止が生ずる(即ち図6にお
いて、ステップ504ではなくステップ506が実行され
る)。
において変数Hの値に基づいて決定が下される。変数H
の値がゼロに等しい場合には、プロセッサは演算の処理
を完了しており(即ち演算はもはや「実行中」ではな
い)、ステップ714において停止決定処理を終了するこ
とができる。他方、変数Hの値がゼロより大きい場合に
は、ステップ716において変数Vの値に基づいて決定が
下される。変数Vの値がゼロより大きい場合には、停止
決定処理はステップ706へとループバックし、次のサイ
クルを処理する。この点でのループバックは、このサイ
クル中のその演算について停止が表明されていない状況
を示している。なぜなら演算はまだ関数パイプライン44
内にあり、このプロセッサが特定の演算について停止を
表明する前に、他のプロセッサにより表明された停止
(もしあれば)が依然として、待ち時間の差を補償しう
るからである。しかしながらその後の処理は、ステップ
718において、クロック信号と同期して次のサイクルに
進むように遅延される。また、変数Vの値がゼロ以下の
場合には、ステップ720において、次のサイクルについ
て停止が表明される。この点でのループバックは、この
サイクルについて停止が表明された状況を示している。
なぜなら、演算はまだ関数パイプライン44内にあり、待
ち時間仮定はハードウェア待ち時間より短く、(待ち時
間仮定期間中に)他のプロセッサにより要求された停止
は待ち時間の差を補償していないからである。ステップ
720の後に、処理はステップ718を介してステップ706へ
とループバックする。
が実際のハードウェア待ち時間より短いときに発行され
る。これらの停止表明は、プログラム演算の優先順位を
保護するように動作する。図7に示す停止決定プロセス
の第1の実施例は、ハードウェア待ち時間が仮定された
待ち時間を上回るサイクル量に直面して停止するにすぎ
ない。これに対し、図8に示す停止決定プロセスの第2
の実施例はより効率的である。この第2の実施例によれ
ば、本発明は、各プロセッサにおいて「実行中」の演算
の各々に対して同時に実行されている、他のすべての待
ち時間モニタリングプロセスの停止表明を追跡すること
ができる。即ち、関数パイプライン44の1つが命令発行
装置41をあるサイクルにわたって停止させる場合には、
全ての関数パイプライン44はそれぞれの停止決定処理
を、恰もそれらが停止を引き起こしたかのようにして調
整する。さらにまた、このアプローチは、他の理由で生
じた停止を補償することもできる。例えば、キャッシュ
ミスが発生した場合、メモリパイプラインは停止を表明
することができる。
実施例の任意の修正を示す。その結果得られる修正され
た実施例は、潜在的により速い処理速度を有するが、ス
コアボード又はインタロックハードウェアによる選択的
な依存性検査を必要とする。しかしながら、必要とされ
るスコアボード又はインタロックハードウェアは、従来
必要とされたものと比べて大幅に単純化される。詳しく
述べると、ステップ716(図8)で変数Vの値がゼロ以
下であると判定された場合には、スコアボード又はイン
タロックハードウェアを使用してステップ800で決定が
下される。このハードウェアは、次に発行される命令中
の何れかの演算が、この処理によってモニタされている
前の未完了(「実行中」)の演算の結果に依存するかど
うかを判定するために必要とされるにすぎない。そうで
ない場合には、処理はステップ718に進み、それによっ
て次の命令の発行の停止が回避される。他方、次の演算
が前の未完了の演算の結果に依存している場合には、図
8の場合と同様に、ステップ720において、次のサイク
ルについて停止が表明される。この修正された実施例の
主な利点は、処理サイクルの数がその演算についての待
ち時間仮定を越えるまでは(即ちV≦0)、依存性検査
を行う必要がないことである。その結果、依存性検査ハ
ードウェアは単純化され、必要な場合にのみ使用され
る。
ア実施態様の概略図であり、また図11は、関数パイプラ
イン44の概略図である。図10はまた、停止回路45の動作
を関数パイプライン44の動作と関連して示している。図
11に示された関数パイプライン44は、4つのステージS
1, S2, S3, S4を有する。従って、関数パイプライン44
の実際のハードウェア待ち時間は4サイクルである。こ
れらのステージは各々、処理中の演算の実行の一部分を
行う。演算動作は、待ち時間にかかわらず、関数パイプ
ライン44の各ステージを介して実時間で段階的に進む。
他方、後続する命令の発行は仮想時間で実行される。即
ち、停止回路45の1つによって停止が表明された場合、
次に続く命令は次のサイクルでは発行されない。この場
合、仮想時間は停止するが、実時間は継続する。
態様は、多数のレジスタ90-98と、OR回路99を含む。
待ち時間レジスタ90は、関数パイプライン44に発行され
た演算について、待ち時間仮定を受け取り、記憶する。
1例として、待ち時間レジスタ90は、待ち時間記憶領域
43(図6)の一部を示している。この関数パイプライン
44上に演算が発行されるたびに、レジスタ92の1つに待
ち時間仮定(LA)が分配される。待ち時間仮定が1に等
しい場合(LA=1)、ビットレジスタ92-1は「1」ビット
を受け取り、ビットレジスタ92-2及び92-3は「0」ビッ
トを受け取る。待ち時間仮定が2に等しい場合(LA=2)
は、ビットレジスタ92-2が「1」ビットを受け取り、ビ
ットレジスタ92-1及び92-3は「0」ビットを受け取る。
待ち時間仮定が3に等しい場合(LA=3)には、ビットレ
ジスタ92-3が「1」ビットを受け取り、ビットレジスタ
92-1及び92-2は「0」ビットを受け取る。待ち時間仮定
が少なくとも4の場合(LA≧4)は、停止は必要ないの
ですべてのレジスタ92が「0」ビットを受け取る。
されたばかりの演算の待ち時間仮定が3であると仮定し
て説明する。この演算が関数パイプライン44のステージ
S1に入ると、レジスタ92-3には「1」ビットがある。次
のサイクルで、演算は関数パイプライン44のステージS2
に進み、「1」ビットはビットレジスタ92-3からビット
レジスタ94へと落とされる。第3サイクルでは、演算は
ステージS3へと進み、「1」ビットはまたビットレジス
タ95へと落とされる。第4サイクルでは、演算は関数パ
イプライン44の最終ステージS4へと進み、「1」ビット
はビットレジスタ98へと左にシフトダウンされる。ビッ
トレジスタ96-98の何れかに「1」ビットがあると、O
R回路99は停止表明(要求)を発行し、これによってそ
の後の命令(ステージS4の演算の後に4演算だけ続く)
の発行は、1サイクルにわたって妨げられる。第4のサ
イクルが完了したならば、その演算の結果は関数パイプ
ライン44から得られ、その後の如何なる命令でも使用で
きるようになる。実際のパイプライン待ち時間は4サイ
クルであり、待ち時間仮定は3サイクルであったから、
停止は1回だけ必要であった。しかしながら、待ち時間
仮定が1サイクルであった場合には、3回の停止サイク
ルが必要になる(即ちビットレジスタ96, 97, 98)。
って停止が開始された場合には、異なる動作をする。例
えば、やはり待ち時間仮定を3とすると、他の停止回路
45によってサイクル2について停止が開始された場合、
「1」ビットはビットレジスタ94から右へと、停止回路
45を越えてシフトダウンされる。即ち、この「1」ビッ
トはビットレジスタからシフトアウトされる。従って、
停止サイクルが待ち時間仮定ウィンドウ内で生じた場合
には、「1」ビットは右へと(点線に沿って)シフトダ
ウンされて、停止回路45が表明する可能性のある停止の
数を減少させる。待ち時間ウィンドウとは、演算がプロ
セッサに発行されてから、経過サイクルの数がその演算
の待ち時間仮定に等しくなるまでの期間(サイクル単
位)である。
小さいか等しい」マシンにおけるものとした。このよう
なマシンは、演算が結果を生成するためにその全待ち時
間を要することを仮定するが、結果が予定より早く返さ
れることがないことは保証しない。例えば、ある演算が
3サイクルの待ち時間を有する場合、「より小さいか等
しい」マシンは、結果を即座に返す場合も、演算が発行
されてから最大3サイクル後に返す場合もある。たとえ
そうであっても、当業者であれば、本発明が「等しい」
マシンにも同様に適用できることを容易に理解するであ
ろう。「等しい」マシンは、演算の結果がちょうど待ち
時間で返されることを保証する。従って、一般的に言っ
て、必要とされる修正には、データをパイプラインでバ
ッファリングし、次いでそれをちょうど待ち時間で返す
ための、何らかの追加的なハードウェアが含まれうる。
おりである。ある演算についての実際のハードウェア待
ち時間が、プログラムのコード化時に使用された仮定さ
れた待ち時間以下である場合には、そのプログラムの実
行により正しい結果が得られる。しかしながら、一方、
仮定された待ち時間が実際のハードウェア待ち時間より
も短い場合には、本発明は、そのプログラムがスケジュ
ーリング時に使用された待ち時間仮定に従って実行され
ることを保証する。
の実際のハードウェア待ち時間が、プログラムの作成時
に使用されたハードウェア待ち時間と異なる場合であっ
ても、プログラムが適切に実行されることを保証する。
従って、ユーザに見える遅延スロットを使用するプログ
ラムは、実際のハードウェア待ち時間にかかわらず、コ
ード互換処理システムで正しく動作することができる。
から明らかであり、特許請求の範囲は本発明のそのよう
なすべての特徴及び利点をカバーすることを意図してい
る。さらに、当業者であれば多数の修正及び変更を容易
に想起しうるため、本発明を図示し説明した如きものと
同じ構成及び動作に限定することを望むものではない。
従って、すべての適切な修正及び均等物は、本発明の範
囲内に含まれるものである。
組み合わせからなる例示的な実施態様を示す。 1.処理システムにおいてコンピュータプログラムを実
行する方法であって、コンピュータプログラムが命令
と、コンピュータプログラムの作成時に使用された待ち
時間仮定を含むものにおいて、 (a)コンピュータプログラムからの待ち時間仮定を処
理システムの待ち時間記憶領域に記憶するステップと、
及び(b)処理システムでコンピュータプログラムを実
行すると同時に、処理システムによって待ち時間仮定が
破られないことを確保し、ハードウェア待ち時間にかか
わらず、コンピュータプログラムをオブジェクトコード
互換処理システムと互換性のあるものとするステップと
からなる方法。
くとも1つの演算を含み、前記実行ステップ(b)が、
(b1)コンピュータプログラムの命令を周期的に発行す
るステップと、及び(b2)実行中の演算のうちの特定の
1つについての待ち時間仮定が、その特定の演算を実行
するプロセッサのハードウェア待ち時間よりも短い場合
に、前記発行ステップ(b1)を一時的に停止するステッ
プとからなる、上記1の方法。
を有し、前記実行ステップ(b)が、(b1)コンピュー
タプログラムの命令を周期的に発行するステップと、
(b2)プロセッサの何れかが、ある演算に関連する待ち
時間仮定ウィンドウ内で停止を表明するかどうかをモニ
タするステップと、及び(b3)待ち時間仮定ウィンドウ
中に他の演算について他のプロセッサにより要求された
停止が、ハードウェア待ち時間と処理中の特定の演算に
ついての待ち時間仮定の間の差を補償しない場合に前記
発行ステップ(b1)を停止するステップとからなる、上
記1の方法。
コンピュータプログラムの命令が少なくとも1つの演算
を含み、処理システムが演算を処理するための少なくと
も複数のプロセッサを含む、上記1から3の何れか1の
方法。
めの処理システムであって、コンピュータプログラムが
命令と、コンピュータプログラムの作成時に使用された
仮定された待ち時間を示す待ち時間仮定情報を含むもの
において、各々に少なくとも1つの演算を含む、コンピ
ュータプログラムの命令を発行する命令発行装置と、コ
ンピュータプログラムから待ち時間仮定情報を受け取
り、記憶する待ち時間記憶領域と、コンピュータプログ
ラムの命令を処理する少なくとも1つのプロセッサと、
及び処理中の演算の各々についての待ち時間仮定に基づ
いて、前記命令発行装置による命令の発行を1サイクル
にわたって停止する停止決定回路とからなる処理システ
ム。
演算を実行する際に使用するハードウェア待ち時間を有
し、及び前記停止決定回路が、処理中の演算についての
待ち時間仮定とその演算を処理する前記プロセッサのハ
ードウェア待ち時間の両方に基づいて、命令の発行を停
止すべきかどうかを処理中の演算の各々について決定す
る、上記5の処理システム。
各々について、それぞれの演算の待ち時間仮定に等しい
サイクル数にわたって命令の発行の停止を延期するため
の構成を備える、上記5又は6の処理システム。
についての待ち時間仮定がハードウェア待ち時間よりも
短い場合、その演算の実行開始からその演算についての
待ち時間仮定に等しいサイクル数が経過した場合、及び
他の演算によって要求された停止要求がハードウェア待
ち時間と仮定された待ち時間の間の差を補償しない場合
に、命令の発行を1サイクルにわたって停止するための
構成を備える、上記5又は6の処理システム。
令が処理中の演算の結果に依存するかどうかを判定し、
依存性情報を生成する依存性検査装置を備え、及び前記
停止決定回路が、処理中の演算についての待ち時間仮定
と、前記依存性検査装置によって生成された依存性情報
の両方に基づいてその後の命令の発行を停止する、上記
5から8の何れか1の処理システム。
を備え、前記プロセッサのうちの少なくとも1つが関数
パイプラインであり、ハードウェア待ち時間が可変であ
る、上記5から9の何れか1の処理システム。
トコード互換プロセッサファミリの間で、ソフトウェア
互換性を得ることができる。本発明によれば、プログラ
ムのコード化時に使用された待ち時間仮定に応じてプロ
グラム内の演算の優先順位が保護され、かくしてソフト
ウェア互換性が満たされる。その一方で、プログラムの
テキストサイズは最小限しか増大されない。さらに、パ
イプラインインタロックに関連した、コストと時間を要
する依存性検査の実行の必要性は大幅に減少される。
ーザに見える遅延スロットを使用するプログラムの一部
を示す図である。
コード化時に使用された待ち時間仮定を処理システムに
通知できるようにする1つの技術を示す図である。
されるステップを示すフローチャートである。
ステムでの図1に示すプログラムと同じ部分の実行を示
す図である。
例を示すブロック図である。
理のフローチャートである。
る停止決定処理の第1の実施例を示すフローチャートで
ある。
る停止決定処理の第2の実施例を示すフローチャートで
ある。
任意選択的な修正を示す部分的なフローチャートであ
る。
である。
Claims (1)
- 【請求項1】 処理システムにおいてコンピュータプロ
グラムを実行する方法であって、コンピュータプログラ
ムが命令と、コンピュータプログラムの作成時に使用さ
れた待ち時間仮定を含むものにおいて、(a)コンピュ
ータプログラムからの待ち時間仮定を処理システムの待
ち時間記憶領域に記憶するステップと、及び(b)処理
システムでコンピュータプログラムを実行すると同時
に、処理システムによって待ち時間仮定が破られないこ
とを確保し、ハードウェア待ち時間にかかわらず、コン
ピュータプログラムをオブジェクトコード互換処理シス
テムと互換性のあるものとするステップとからなる方
法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US059041 | 1993-05-06 | ||
| US08/059,041 US5710912A (en) | 1993-05-06 | 1993-05-06 | Method and apparatus for enabling a computer system to adjust for latency assumptions |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0749781A true JPH0749781A (ja) | 1995-02-21 |
| JP3589698B2 JP3589698B2 (ja) | 2004-11-17 |
Family
ID=22020437
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP09423494A Expired - Fee Related JP3589698B2 (ja) | 1993-05-06 | 1994-05-06 | インタロックハードウェアの単純化方法及び装置 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US5710912A (ja) |
| JP (1) | JP3589698B2 (ja) |
| DE (1) | DE4409586C2 (ja) |
| GB (1) | GB2277820B (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2015135538A (ja) * | 2014-01-16 | 2015-07-27 | 三菱電機株式会社 | プロセッサ |
Families Citing this family (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2944563B2 (ja) * | 1997-04-03 | 1999-09-06 | 甲府日本電気株式会社 | パイプライン型情報処理装置 |
| US5964867A (en) * | 1997-11-26 | 1999-10-12 | Digital Equipment Corporation | Method for inserting memory prefetch operations based on measured latencies in a program optimizer |
| US6178493B1 (en) * | 1998-02-19 | 2001-01-23 | International Business Machines Corporation | Multiprocessor stalled store detection |
| US6675374B2 (en) | 1999-10-12 | 2004-01-06 | Hewlett-Packard Development Company, L.P. | Insertion of prefetch instructions into computer program code |
| US7847803B1 (en) * | 2000-07-26 | 2010-12-07 | Ati Technologies Ulc | Method and apparatus for interleaved graphics processing |
| US7343619B2 (en) * | 2002-03-16 | 2008-03-11 | Trustedflow Systems, Inc. | Trusted flow and operation control method |
| EP1512078B1 (en) * | 2002-05-24 | 2012-04-11 | Silicon Hive B.V. | Programmed access latency in mock multiport memory |
| KR100867269B1 (ko) * | 2007-02-22 | 2008-11-06 | 삼성전자주식회사 | 프로세서의 추론적 로드 명령 실행 방법 및 상기 방법을채용한 프로세서 |
| US7730288B2 (en) * | 2007-06-27 | 2010-06-01 | International Business Machines Corporation | Method and apparatus for multiple load instruction execution |
| JP2009110209A (ja) * | 2007-10-29 | 2009-05-21 | Panasonic Corp | 演算処理装置、プロセッサ、プログラム変換装置およびプログラム |
| US8078843B2 (en) * | 2008-01-31 | 2011-12-13 | International Business Machines Corporation | Facilitating processing in a computing environment using an extended drain instruction |
| US8098251B2 (en) * | 2008-02-22 | 2012-01-17 | Qualcomm Incorporated | System and method for instruction latency reduction in graphics processing |
| US9176907B2 (en) * | 2008-09-12 | 2015-11-03 | Hitachi, Ltd. | Semiconductor device and data processing system |
| US20120290810A1 (en) * | 2011-04-18 | 2012-11-15 | Jean-Jacques Lecler | Memory Access Latency Metering |
| US11275590B2 (en) * | 2015-08-26 | 2022-03-15 | Huawei Technologies Co., Ltd. | Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory |
| US20170192759A1 (en) * | 2015-12-31 | 2017-07-06 | Robert Keith Mykland | Method and system for generation of machine-executable code on the basis of at least dual-core predictive latency |
| US10185568B2 (en) * | 2016-04-22 | 2019-01-22 | Microsoft Technology Licensing, Llc | Annotation logic for dynamic instruction lookahead distance determination |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4722050A (en) * | 1986-03-27 | 1988-01-26 | Hewlett-Packard Company | Method and apparatus for facilitating instruction processing of a digital computer |
| US5051940A (en) * | 1990-04-04 | 1991-09-24 | International Business Machines Corporation | Data dependency collapsing hardware apparatus |
| US4891753A (en) * | 1986-11-26 | 1990-01-02 | Intel Corporation | Register scorboarding on a microprocessor chip |
| JP2858140B2 (ja) * | 1988-10-19 | 1999-02-17 | アポロ・コンピューター・インコーポレーテッド | パイプラインプロセッサ装置および方法 |
| US5224210A (en) * | 1989-07-28 | 1993-06-29 | Hewlett-Packard Company | Method and apparatus for graphics pipeline context switching in a multi-tasking windows system |
| US5021985A (en) * | 1990-01-19 | 1991-06-04 | Weitek Corporation | Variable latency method and apparatus for floating-point coprocessor |
| US5283873A (en) * | 1990-06-29 | 1994-02-01 | Digital Equipment Corporation | Next line prediction apparatus for a pipelined computed system |
| US5278967A (en) * | 1990-08-31 | 1994-01-11 | International Business Machines Corporation | System for providing gapless data transfer from page-mode dynamic random access memories |
| US5333284A (en) * | 1990-09-10 | 1994-07-26 | Honeywell, Inc. | Repeated ALU in pipelined processor design |
| GB2263565B (en) * | 1992-01-23 | 1995-08-30 | Intel Corp | Microprocessor with apparatus for parallel execution of instructions |
-
1993
- 1993-05-06 US US08/059,041 patent/US5710912A/en not_active Expired - Lifetime
-
1994
- 1994-03-21 DE DE4409586A patent/DE4409586C2/de not_active Expired - Fee Related
- 1994-05-04 GB GB9408864A patent/GB2277820B/en not_active Expired - Fee Related
- 1994-05-06 JP JP09423494A patent/JP3589698B2/ja not_active Expired - Fee Related
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2015135538A (ja) * | 2014-01-16 | 2015-07-27 | 三菱電機株式会社 | プロセッサ |
Also Published As
| Publication number | Publication date |
|---|---|
| DE4409586C2 (de) | 1997-08-21 |
| GB2277820A (en) | 1994-11-09 |
| GB2277820B (en) | 1997-11-26 |
| US5710912A (en) | 1998-01-20 |
| DE4409586A1 (de) | 1994-11-10 |
| JP3589698B2 (ja) | 2004-11-17 |
| GB9408864D0 (en) | 1994-06-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5941983A (en) | Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues | |
| US5854934A (en) | Optimizing compiler having data cache prefetch spreading | |
| US6212542B1 (en) | Method and system for executing a program within a multiscalar processor by processing linked thread descriptors | |
| JP3851707B2 (ja) | スーパースカラープロセッサの中央処理ユニット | |
| US5961639A (en) | Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution | |
| JP3120152B2 (ja) | コンピューターシステム | |
| US5913925A (en) | Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order | |
| JP3957456B2 (ja) | 不適正順序マルチスレッド実行を実行するロード命令およびストア命令を順序付けるシステム | |
| US8230423B2 (en) | Multithreaded processor architecture with operational latency hiding | |
| JP3957455B2 (ja) | 実行パイプラインの外部に複数のプログラム・カウンタとトレース・バッファを有するプロセッサ | |
| JP3589698B2 (ja) | インタロックハードウェアの単純化方法及び装置 | |
| US8560813B2 (en) | Multithreaded processor with fast and slow paths pipeline issuing instructions of differing complexity of different instruction set and avoiding collision | |
| US20160378488A1 (en) | Access to target address | |
| US7302557B1 (en) | Method and apparatus for modulo scheduled loop execution in a processor architecture | |
| US7565658B2 (en) | Hidden job start preparation in an instruction-parallel processor system | |
| US7454598B2 (en) | Controlling out of order execution pipelines issue tagging | |
| Sima | Decisive aspects in the evolution of microprocessors | |
| JP2005521937A (ja) | コンピュータオペレーティングシステムにおけるコンテキスト切り替え方法及び装置 | |
| JP3146058B2 (ja) | 並列処理型プロセッサシステムおよび並列処理型プロセッサシステムの制御方法 | |
| JP2928684B2 (ja) | Vliw型演算処理装置 | |
| US6944750B1 (en) | Pre-steering register renamed instructions to execution unit associated locations in instruction cache | |
| JPH10187464A (ja) | マルチスカラ・プログラムを作成する方法およびシステム | |
| US12169716B2 (en) | Microprocessor with a time counter for statically dispatching extended instructions | |
| JP2000099328A (ja) | プロセッサ及びその実行制御方法 | |
| JP2861234B2 (ja) | 命令処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040331 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040413 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040705 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040803 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040818 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080827 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090827 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100827 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110827 Year of fee payment: 7 |
|
| LAPS | Cancellation because of no payment of annual fees |