JPH11242599A - コンピュータプログラム製品 - Google Patents

コンピュータプログラム製品

Info

Publication number
JPH11242599A
JPH11242599A JP10358196A JP35819698A JPH11242599A JP H11242599 A JPH11242599 A JP H11242599A JP 10358196 A JP10358196 A JP 10358196A JP 35819698 A JP35819698 A JP 35819698A JP H11242599 A JPH11242599 A JP H11242599A
Authority
JP
Japan
Prior art keywords
instruction
program instructions
instructions
program
computer
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
JP10358196A
Other languages
English (en)
Inventor
Arcy Gerard Paul D
ポール ダーキー ジェラルド
C John Glossner
グロスナー シー.ジョン
Sanjay Jinturkar
ジンターカー サンジャイ
Stamatis Vassiliadis
ヴァッシリアディス スタマティス
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.)
Nokia of America Corp
Original Assignee
Lucent Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lucent Technologies Inc filed Critical Lucent Technologies Inc
Publication of JPH11242599A publication Critical patent/JPH11242599A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/3802Instruction prefetching
    • 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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/3818Decoding for concurrent execution
    • G06F9/3822Parallel decoding, e.g. parallel decode units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 コンパイラがあらかじめ指定した複数の命令
依存性を動的に格納するシステムを実現する。 【解決手段】 システムは、単一のdep命令を用いて
実現される。dep命令は、プロセッサハードウェアに
対して、このdep命令に関連する次のm個の命令が互
いに並列に実行されるよう命令する。さらに、dep命
令、および、dep命令によって区切られる命令は、プ
ロセッサ5内に実装される多重発行バッファ(MIB)
26に格納される。MIB26は、コンピュータのメイ
ンメモリ21とは別の、より小さく高速な特別の記憶バ
ッファである。並列に実行される命令が実行されるとき
にプロセッサ5がメインメモリ21ではなくMIB26
からそれらの命令を取得することができるように、MI
B26は、メインメモリ21とは別に、並列に実行され
る命令を格納することができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プログラム中の命
令を実行する際のコンピュータの速度を増大させること
に関する。
【0002】
【従来の技術】現代のコンピュータシステムでは、コン
パイラが、高水準プログラミング言語で書かれたプログ
ラム(一般にソースコードという。)を、コンピュータ
システムのプロセッサ上で物理的に実行される低水準言
語プログラム(一般に機械(マシン)コードあるいはオ
ブジェクトコードという。)に翻訳する。一部のコンピ
ュータあるいはマシンでは、コンパイラに加えて、人間
のプログラマがオブジェクトコードを生成することを可
能にするためにアセンブラが提供される。他のコンパイ
ラには、アセンブラの機能を実行して、プロセッサに直
接渡すことが可能なオブジェクトコードを生成するもの
もある。プロセッサ(例えば、中央処理装置(CP
U))の性能の1つの尺度は、オブジェクトコード中の
1つの命令を実行するのにかかる時間である。一般に、
プロセッサによって単一の命令が実行される時間(命令
実行速度ともいう。)を1マシンサイクルあるいはサイ
クルという。
【0003】コンピュータの命令実行速度の改善は、回
路レベルあるいは技術の改良、および、命令レベル並列
化(ILP(instruction level parallelism))、キャ
ッシュメモリ、命令のアウトオブオーダー実行およびプ
ロセッサ内の複数の並列実行ユニットの活用のような編
成上の技術によって達成される。ますます広く用いられ
るようになっているのはILPの活用、すなわち、コン
パイラ(あるいはアセンブラ)から生じる複数のオブジ
ェクトコード命令が発行されて単一のマシンサイクルで
同時にプロセッサによって実行されることを可能にする
ものである。
【0004】さまざまなレベルの並列化によるいくつか
のこのようなコンピュータ編成(すなわち、ハードウェ
アおよびソフトウェア)が知られている。並列化のレベ
ルは、ILPの機会を活用するために用いられる編成お
よび方法に関係する。最適化技術に基づいてオブジェク
トコードを最適化することは、ILPを活用する1つの
手段である。1つの重要な最適化技術は、コードに含ま
れる命令間の依存性(ハードウェアインターロックとも
いう。)を判定することである。命令は、与えられた数
の命令(あるいは命令シーケンス)内で、命令の実行の
順序が結果に影響しないとき、独立である。コードを最
適化するためのさまざまな方法が当業者に知られてい
る。このような最適化技術のさらに詳細な説明は、例え
ば、Aho etal., "Compilers, Principles, Techniques
and Tools", Addison Wesley (1988), Chapter 10、に
記載されている。
【0005】例えば、スーパースカラアーキテクチャと
呼ばれる編成を有する既知のマシンは、マシンサイクル
あたり4命令を超えるピーク命令実行速度を達成してい
る。しかし、これを達成するために、プロセッサは、オ
ブジェクトコード命令をデコードしてこのコードがプロ
セッサによって実行されるときの複数(m個まで。ただ
しmは整数)の命令間の依存性を判定する複雑なハード
ウェアを有する。このハードウェアをダイナミック検査
ロジックという。命令依存性が存在するかどうかを判定
するには多数の規則を実装する必要があるため、このよ
うな処理は非常に複雑である。
【0006】例えば、高々2個のオブジェクトコード命
令を並列に実行するように設計されたスーパースカラマ
シンを考える。また、命令シーケンス中にm個の命令が
あると仮定する。ILPを最大限に活用するためには、
任意の命令の与えられたペアが並列に発行されることが
可能であるか否かを判定するためにm2個のオーダーの
規則を命令デコードハードウェア内で実行しなければな
らないことが考えられる。複雑なダイナミック検査ロジ
ックは正しい結果を生成することができるが、プロセッ
サレベルでのこのような処理によりマシンサイクルタイ
ムが延びる。さらに、必要なプロセッサロジックは、オ
ブジェクトコードがメインメモリから取得されるたびご
とに検査演算を実行しなければならない。ループ命令は
一般的なプログラミング技法であるため、スーパースカ
ラアーキテクチャは、ループに関連する命令が実行され
るたびごとに検査演算を実行しなければならない。さら
に、これは、ILPを活用することによって達成される
性能利得を制限するスーパースカラマシンの限界のうち
の1つに過ぎない。すなわち、与えられたスーパースカ
ラマシンの限界に対して、命令実行速度は、スーパース
カラマシンの使用を保証するほど十分に速くならない可
能性がある。
【0007】ILPの系統のもう1つの既知のアプロー
チに、超長形式機械命令(VLIW)アーキテクチャが
ある。VLIWマシン内の実行ユニットは、コンパイラ
が、命令をプロセッサの実行ユニットに永続的に(すな
わち静的に)あらかじめ割り当てることを要求する。実
行ユニットは、発行された命令を受け取り、その命令に
よって指定される演算に従ってその命令を実行する、プ
ロセッサ内のハードウェアである。例えば、2個のオペ
ランドを乗算する命令は、乗算実行ユニットに送られる
ことは可能であるが、算術論理ユニット(ALU実行ユ
ニットともいう。)に送られることはできない。しか
し、加算命令は、ALUまたは乗算実行ユニットのいず
れに送られることも可能である。乗算実行ユニットは、
いずれの演算も実行可能である。VLIWマシンでは、
コンパイラは、乗算命令を単一の実行ユニット(この例
では、乗算実行ユニット)にあらかじめ割り当てる。こ
のような永続的バインディングの欠点は、命令から実行
ユニットへの完全なマッピングがメインメモリに格納さ
れていなければならず、これにより、nop(No Operat
ion)がメインメモリに格納されることになる。これは、
命令フェッチ帯域幅要求(すなわち、一連の命令を同時
に送るためにメインメモリによって必要とされるハード
ウェア量(例えば、物理ライン))を増大させるととも
に、オブジェクトコード互換性(すなわち、異なる数の
実行ユニットを有する別のプロセッサによってこのオブ
ジェクトコードが実行されるときにILP活用利得を維
持する能力)を排除する。例えば、2つの加算命令が乗
算実行ユニットにあらかじめ割り当てられていると仮定
する。実行時に、両方とも乗算実行ユニットによって実
行されなければならないため、プロセッサは、1つのこ
のような命令をALUに割り当てることができない。そ
の結果、両方の命令は同時に実行することができない。
すなわち、命令を実行ユニットに永続的にバインドする
と、これらを実行時に解決することができるプロセッサ
よりもILPが低くなる。
【0008】
【発明が解決しようとする課題】IBMのM.F.A.
S.T.、Texas InstrumentsのC6x、IBMのSC
ISMプロジェクトおよびIntelのIA−64アーキテ
クチャのように、ILPを活用するアプローチが実装さ
れているいくつもの既知のマシン製品あるいはプロジェ
クトがある。しかし、これらのアプローチはいずれも、
エンコードされる依存性の数に関して制限されるか、あ
るいは、多数のダイナミック検査ロジックを要求するた
め、ILPを活用することによって達成される利得が縮
小する。従って、オブジェクトコードを実行するプロセ
ッサが十分にILPを活用することができるように命令
の依存性を判定することによってオブジェクトコードを
最適化することが必要とされている。本発明は、そのよ
うな装置および方法に関するものであり、上記の製品あ
るいはプロジェクトのいずれにも含まれていない概念を
含む。
【0009】
【課題を解決するための手段】本発明は、コンパイラ制
御ダイナミックスケジューリング、すなわち、コンパイ
ラがあらかじめ指定した複数の命令依存性を動的に格納
するシステムおよび方法に関する。これは、単一のde
p命令を用いて実現される。dep命令は、プロセッサ
ハードウェアに対して、このdep命令に関連する次の
m個の命令(mは整数)が互いに並列に実行されるよう
命令する。さらに、dep命令、および、dep命令に
よって区切られる命令は、プロセッサ内に実装される多
重発行バッファ(MIB(Multiple Issue Buffer))に
格納される。MIBは、コンピュータのメインメモリと
は別の、より小さく高速な特別の記憶バッファである。
並列に実行される命令が実行されるときにプロセッサが
メインメモリではなくMIBからそれらの命令を取得す
ることができるように、MIBは、メインメモリとは別
に、並列に実行される命令を格納することができる。従
って、このような命令の実行は速くなる。さらに、複数
命令処理の場合、MIBがその目的でアクセスされるた
め、メインメモリは、同時に複数の命令を送ることに対
応したハードウェア(例えば、伝送ライン)を含む必要
がない。また、本発明は、このような本発明の特徴を含
むように修正されたスーパースカラおよびVLIWアー
キテクチャを含めて、ここで説明する本発明の特徴を含
む任意の編成で実装可能である。
【0010】本発明の利点は、ハードウェア依存性検査
を軽減するために、dep命令がコンパイラレベルで、
すなわち、プロセッサによる処理の前に、命令間依存性
をエンコードすることである。従って、dep命令によ
ってエンコードされたオブジェクトコードは、コンピュ
ータのメインメモリに存在する。これにより、実行時に
ハードウェアインターロックを判定するためのプロセッ
サ内の複雑なダイナミック検査ロジックが不要となる。
従って、プロセッサ動作は単純化されるため、高い性能
が実現され、低電力で動作可能となる。さらに、最適化
されたコードが永続的であるため、この利点は拡大す
る。すなわち、dep命令および後続の区切られた命令
は、命令シーケンスが実行されるたびごとに再エンコー
ドされる必要はなく、また、この命令シーケンスは、異
なる数の実行ユニットを有する別のプロセッサでも用い
られる。
【0011】本発明のもう1つの利点は、dep命令
は、それによって区切られる命令を所定の実行ユニット
にあらかじめ割り当てないことである。すなわち、高性
能低電力プロセッサをサポートすることに加えて、de
p命令は、実行時に特定の実行ユニットに命令を割り当
てるようにプロセッサを制限しない。このようにして、
コンパイラレベルでILPを活用する利得は、そのよう
な命令をプロセッサの実行ユニットにプロセッサが自由
に割り当てることを可能にすることによって維持され、
あるいはさらに最適化される。従って、プロセッサによ
る処理の前に、コードは、存在しうる最高度のILPを
達成するとともに実行ユニットに命令をあらかじめ割り
当てる欠点を回避するように最適化される。
【0012】本発明のもう1つの利点は、プロセッサが
オブジェクトコードを、コンピュータのメインメモリよ
り小さく高速なMIBにキャッシュあるいは格納するこ
とが可能であることである。このようにして、プロセッ
サがdep命令に関連する命令(dep命令パケットと
いう。)を実行するとき、このようなパケットをコンピ
ュータのメインメモリからではなくMIBから取得する
ことができる。この編成は、直ちにプロセッサに使用可
能な永続的な最適化された前処理を与える。さらに、本
発明に従って実装されるMIBのアーキテクチャによれ
ば、十分なプロセッサ実行ユニットが空いている場合に
は、区切られたバッファ境界内の命令パケットの命令が
同時に発行されることが可能である。例えば、dep命
令に関連する5個の命令を含むパケットに対して、プロ
セッサは、このような命令パケットを処理するために5
個の実行ユニットを有することが可能である。さらに、
dep命令はまた、dep命令パケットに関する追加情
報あるいはタグを、MIBを通じてプロセッサに提供す
るために含むことも可能である。このような追加情報
は、プロセッサレベルで実装される追加の最適化ロジッ
クのためにプロセッサにおいて使用されることが可能で
ある。
【0013】本発明のもう1つの利点は、同じ編成、あ
るいは、プロセッサの実行ユニットの数のみが異なり1
個以上の共通の実行ユニットを有する複数の実装におけ
るオブジェクトコード互換性である。例えば、2つの編
成がそれぞれ乗算、ALU、ロードおよびストア実行ユ
ニットを備え、第2の編成がさらにもう1つの乗算実行
ユニットを備える。本発明のdep命令が第1の編成に
対して設計されている場合、これは第2の編成によって
実行されることも可能であり、またその逆も成り立つ。
第1の編成は、4個の実行ユニットを有するため、4個
の命令を並列に発行することができる。第2の編成は、
5個の命令を並列に発行することができる。このように
第1および第2のいずれの編成でも実行が達成されるの
は、4個の命令を含むdep命令パケットがいずれの編
成でも実行可能であるためである。5個の命令を含むd
ep命令パケットに関しては、第2の編成では並列に実
行可能であるが、第1の編成では、4個の命令を並列に
実行した後、単一の命令が続いて実行される。
【0014】このように、本発明は、オブジェクトコー
ド実行のためにプロセッサによってdep命令を実装す
る際に高度な自由度および広い用途を提供する。このよ
うな特徴は、追加のダイナミック検査ロジックがプロセ
ッサによって処理される必要がないため、命令実行速度
増大が実行時に維持されるように、ILPの最大限の活
用を提供する。
【0015】
【発明の実施の形態】図1は、本発明の実施例によるコ
ンピュータシステムあるいはマシン1の高水準概略ブロ
ック図である。図中、プログラム2はソースコードをコ
ンパイラ/プリプロセッサ3に入力として提供する。コ
ンパイラ/プリプロセッサ3は、図1の実施例における
コンパイラ機能および前処理機能の両方を実行する。し
かし、理解されるように、コンパイラおよびプリプロセ
ッサの機能は別個のデバイスによって実装されることも
可能である。さらに、アセンブラ機能が、コンパイラに
よって実行されることも、あるいは、別個にアセンブラ
(図示せず)によって実行されることも可能である。
【0016】コンパイラ/プリプロセッサ3は、命令レ
ベル並列化(ILP)を実装するために、ソースコード
(コードを、命令セットアーキテクチャ(ISA(instr
uction set architecture))内の命令ともいう。)を調
べ、dep命令(図2)によって区切られることが可能
な命令依存性を識別する。コンパイラ/プリプロセッサ
3は、この目的のために、最適化規則4のセットを使用
する。コンパイラ/プリプロセッサ3は、ILPを活用
するために、dep命令を含めることによって最適化さ
れたオブジェクトコードを生成する。このようなdep
命令は、それによって区切られる命令のパケットの最初
の命令として追加される。dep命令およびそれによっ
て区切られる命令を含む命令シーケンスをここではde
p命令パケットという(その例は図2にdep命令パケ
ット11として示されている)。
【0017】dep命令を識別し実装する動作以外は、
コンパイラ/プリプロセッサ3の動作に用いられる演算
および信号は標準的である。従って、コンパイラ/プリ
プロセッサ3についてはこれ以上説明しない。コンパイ
ラ/プリプロセッサ3についてさらに詳細な説明は、Ah
o et al.の前掲書に記載されている。
【0018】さらに、本発明のよる代替実施例では、コ
ンパイラ3あるいはプリプロセッサ3以外のデバイスが
dep命令を実装することも可能である。例えば、de
p命令を実装するファシリティは、コンパイラとは別個
に実装されたソフトウェアファシリティ(例えば、ポス
トコンパイラ)であることも可能である。あるいは、マ
シン1内に設計された記憶領域(例えば、キャッシュ
(すなわち、マシン1の主記憶より小さく高速な特別の
記憶バッファ。キャッシュの例はMIBである。))
と、このような設計された記憶領域の別のサブシステム
との間に位置するハードウェアプリプロセッサの形式の
ハードウェアファシリティであることも可能である。
【0019】コンパイラ/プリプロセッサ3の出力は、
dep命令を含むようにコンパイルされ最適化されたオ
ブジェクトコードである。このオブジェクトコードは次
に、本発明に従って構成されたプロセッサ5(例えば、
中央処理装置(CPU)。詳細は後述)に入力される。
プロセッサ5ハードウェアはその後、一部はdep命令
に基づいて、実行のために命令をフェッチし発行する。
【0020】本発明の重要な利点は、コンパイラ/プリ
プロセッサ3による処理中のdep命令の静的すなわち
永続的実装である。すなわち、実行時にハードウェアイ
ンターロックを判定するためにプロセッサ内に複雑なダ
イナミック検査ロジックは不要である。これにより、単
純化された、従って高性能の処理が得られるとともに、
プロセッサによって要求される電力は低減される。さら
に、ループプログラミング技法に関連する命令がプロセ
ッサによって実行されるたびごとに、命令がdep命令
内にエンコードされた情報を既に含むように、最適化さ
れたコードは永続的であるため、この利点は拡大する。
すなわち、dep命令エンコーディングは、命令がプロ
セッサによって再実行されるときに再フェッチされる必
要がない。
【0021】図2に、数行のアセンブリコードを示す。
アセンブリコードを示したのは、オブジェクトコード
は、低水準言語として、0と1の列として現れるが、ア
センブリコードは、高水準言語として、コードの機能を
説明することを容易にする理解可能な記法および用語を
提供するためである。図示したアセンブリコードのde
p命令は、プロセッサ5による実行のためにオブジェク
トコードに翻訳される。
【0022】図2のアセンブリコードは、第1行の、l
abelによって記号的に示される命令アドレス位置の
例示的なdep命令と、第2〜6行の、このようなde
p命令によって区切られる命令(ここではdep命令パ
ケット11という。)とを含む。第7行は、第6行と第
8行の間に含まれる可能性のある任意個の命令を表す。
第8行は、分岐命令を含む。これは、プロセッサ5に対
して、labelにによって記号的に示される命令アド
レス位置(すなわち第1行)の命令を実行するよう指示
する。第8行の分岐命令は、コードにおいて前に定義さ
れた命令アドレスへ戻るため、ループ命令ともいう。さ
らに、第6行と第8行の間に命令がない場合、分岐は再
帰ループを生成する。図示したアセンブリコードは全体
として特定の機能を有しない。むしろ、これは、一連の
レジスタファイル22〜25(図3)からロードされる
値に対して実行され、結果がレジスタファイル22〜2
5に格納される、いくつかの演算(例えば加算や乗算)
の代表である。
【0023】第1行に示されるdep命令は、命令のシ
ーケンスがどのように相互作用するかに関する情報を含
む。1つの相互作用の形式は、dep命令パケット11
に示される命令が並列に実行されるものである。第1行
で、labelは、dep命令がある命令アドレスを指
す記号名である。用語「dep」は、これがdep命令
であることを示す。括弧内の情報、すなわち「inde
p」は、dep命令の型(タイプ)を指定する(別の型
のdep命令については後述)。この例では、型は独立
型である。独立型dep命令は、本発明の主要な型のd
ep命令である。これは、プロセッサ5のハードウェア
に対して、次のm個の命令が並列に実行可能であること
を示す。図2では(#4で示されるように)mの値は4
であるため、次の4個の命令がdep命令によって区切
られる。第2〜8行の、dep命令に続く命令は、命令
型、すなわち、ロード(load)、加算(add)、
乗算(mpy)およびストア(store)命令を含
む。命令型の名前はそれらの命令の機能も示す。例え
ば、加算命令型は、算術加算を実行する。命令の右側の
参照(例えば、第2行のロード命令の後にある「r0,
base0,offset0」は、図3のレジスタファ
イル22〜25に含まれるプロセッサ5メインメモリ内
のアドレスへのポインタである。このようなアドレス
は、命令が作用するデータを含む。「r0」は、bas
e0+offset0によって計算されるアドレスから
メインメモリ内のデータがロードされる場所を示す。
【0024】本発明によるdep命令の実装は、最適化
コンパイラ/プリプロセッサ3(図1)あるいはプログ
ラマが、プログラム2(図1)の命令シーケンス内のI
LP機会を識別することを要求する。ILPを発見する
いくつかの技術が当業者に周知である。これには、例え
ば、トレーススケジューリング、パーコレーションスケ
ジューリングおよびソフトウェアパイプライニングがあ
り、このような最適化技術についてさらに詳細には論文 ・C. Foster et al., "Percolation of code to enhanc
e parallel dispatching and execution", IEEE Transa
ctions on Computers, C-21:1411-1415 (Dec.1972) ・M. Lam, "Software Pipelining: An effective sched
uling technique forVLIW machines", Proceedings of
the SIGPLAN'88 Conference on ProgrammingLanguage D
esign and Implementation, pp.318-328 (1988) ・B. R. Rau et al., "Efficient code generation for
horizontal architectures: Compiler techniques and
architectural support", Proceedings 9th Annual Sy
mposium on Computer Architecture, pp.131-139 (Apri
l 1982) ・J. A. Fisher, "Trace Scheduling: A technique for
global microcode compaction", IEEE Transactions o
n Computers, vol.C-30, No.7 (July 1981), pp.478-49
0 に記載されている。
【0025】例えば、例示的なプログラミングコードの
以下のようなバージョンを考える。各バージョンは同じ
演算、すなわち、0〜N−1(変数iで表す。)の一連
の値を乗算し、このような一連の乗算の結果を加算する
という演算を提供する。この機能は、高水準言語である
プログラミング言語Cで書かれた第1のバージョンに示
されている。次に、この高水準言語コードは、2つのバ
ージョンのアセンブリコード、すなわち、低水準言語に
翻訳される。第1のアセンブリコードバージョンは、d
ep命令を実装せずにCプログラミングコードを翻訳
し、第2のアセンブリコードは、dep命令を実装する
ことを含めてCプログラミングコードを翻訳する。これ
らのバージョンは、dep命令がどのようにしてプロセ
ッサ5の速度を改善するかの比較を提供する。
【0026】C言語コードを以下に示す(以下これをC
コード例という。示されている行は、プログラム2内の
さらに大きいループ内に含まれることが可能であり、ま
た、単純な内側ループを含むことが可能である。) 1 for(i=0;i<N;i++) 2 result+=coef[i]*data
[i];
【0027】第1のアセンブリバージョンは、Cコード
例からそのアセンブリコード等価物への翻訳であって、
コンパイラ/プリプロセッサ3がdep命令に基づいて
コードを最適化しないものである。これは、Cコード例
と同じ機能を含む。以下を、非depコード例という。 1 move_immediate r0,N; 2 move_immediate r31,#0; //結果 3 load_addr p1,ptr_coef; 4 load_addr p2,ptr_data; 5 loop: load r3,p1++; 6 load r4,p2++; 7 mpy r5,r3,r4; 8 add r31,r31,r5; 9 sub r0,r0,#1; //r0−− 10 bne r0,loop; この非depコード例は、上記のCコード例と同じ機能
を有する。しかし、演算は、レジスタファイル22〜2
5からのデータに対する乗算および減算のような、Cコ
ード例を実行するのに必要なアセンブリコードにおいて
実装された低水準処理に関するものである。さらに、移
動(move)、ロードおよびストア演算が示されてい
る。最後に、非depコード例の第10行には、用語
「bne」が示されている。この用語は、等しくない場
合(すなわち、r0に含まれる値が0に等しくない場
合)に分岐することを指す条件を意味する。この条件が
満たされると、この命令は、プロセッサに対して、bn
eの次に示される用語「loop」で記号的に表される
命令アドレス位置へ進み、そのアドレスの命令を実行す
るよう指示する。
【0028】第2のアセンブリ言語バージョンは、Cコ
ード例からそのアセンブリコード等価物への翻訳であっ
て、コンパイラ/プリプロセッサ3がdep命令に基づ
いてコードを最適化したものである。これは、Cコード
例および非depコード例と同じ機能を含む。以下を、
depコード例という。 1 dep(indep)#4{ 2 move_immediate r0,N; 3 move_immediate r31,#0; 4 load_addr p1,ptr_coef; 5 load_addr p2,ptr_data; 6 } 7 loop: 8 dep(indep)#3{ 9 load r3,p1++; 10 load r4,p2++; 11 sub r0,r0,#1; 12 } 13 mpy r5,r3,r4; 14 dep(bind_branch){ 15 add r31,r31,r5; 16 bne r0,loop; 17 } bind_branchは、プロセッサ5ハードウェア
に対して、dep命令内のすべての命令を、分岐が行わ
れる前に実行しなければならないことを指示する(詳細
は後述)。また、bneは、等しくない場合の分岐を意
味し、ループを実装するために用いられる。
【0029】depコード例と非depコード例の違い
は、depコード例は非depコード例よりも最適化技
術を実装している点である。その結果、多くのループ回
数の場合、depコード例は、非depコード例よりも
少ないマシンサイクルで実行可能である。
【0030】具体的には、depコード例の処理を非d
epコード例と比較すると、プログラミングコードを最
適化するためのこのようなdep命令の利点が示され
る。depコード例では、1命令が1サイクルごとに実
行される場合、そのコードシーケンスが最初に実行され
るとき、非depコード例にくらべて3個の追加サイク
ルが要求される。これは、3個のdep命令がアセンブ
リコードに追加されているためである。dep命令は命
令の実行を並列に開始することができるが、このような
dep命令自体は並列には実行されない。しかし、第8
〜12行が最初に実行されると、それらの命令は、高速
並列取得のための記憶装置(例えば、多重発行バッファ
(MIB)26(図3))に格納されることが可能であ
る。このようにして、内側ループ(depコード例の第
8〜12行)の後続の繰り返しでは、ループは3サイク
ルで実行されるのに対して、非depコード例の第5〜
10行は6サイクルで実行される。従って、depコー
ド例の第8〜12行のループが2回実行されると、de
pコード例対非depコード例のマシンサイクル数に関
する損益分岐点に到達する。さらに、depコード例の
第8〜12行の後続の再実行中(すなわち、ループはプ
ログラム中で複数回呼び出されることが可能である。)
には、マシンサイクルがさらに節約される。
【0031】図3は、本発明の実施例によるプロセッサ
5のブロック図である。プロセッサは、設計された記憶
領域21〜26、実行ユニット27〜36、フェッチ3
7、デコーダ38、発行コントローラ(Issue C
tl)39および並列デコーダ40を有する。設計され
た記憶領域21〜26は、メインメモリ21ならびに一
連のレジスタファイル22〜25およびMIB26であ
る。レジスタファイルは、これらのファイルとの間でデ
ータの入出力に共通の伝送ラインを使用するためにまと
められた別々のレジスタデバイスである。レジスタファ
イル22〜25は、レジスタファイルオフセット22、
レジスタファイルベース23、レジスタファイルr24
およびレジスタファイルf25である。実行ユニット2
7〜36は、分岐ユニット27、分岐ユニット28、ロ
ードALU29、ストアALU30、データサービスユ
ニット(DSU(data service unit))31、乗算(M
PY)32、ALU33およびALU34である。
【0032】メインメモリ21は、dep命令パケット
11を含むオブジェクトコードの命令を格納する。ある
いは、オブジェクトコードは、例えばキャッシュあるい
はディスクのような別個のメモリ記憶領域に格納される
ことも可能である。レジスタファイル22〜25は、特
定の実行ユニット27〜36のためのデータを有する記
憶デバイスである。実施例では、レジスタファイル22
は分岐ユニット27および28、ロードALU29、ス
トアALU30ならびにDSU31に対応する。レジス
タファイルr24はDSU31、MPY32、ALU3
3およびALU34に対応する。レジスタファイルf2
5はFp(浮動小数点演算)ユニット35およびFpユ
ニット36に対応する。
【0033】実行ユニット27〜36は、特定のタイプ
の数学演算を実装する論理デバイスであり、これらの特
定演算専用である。プロセッサ5は、各命令を処理する
とき、その命令によって指示される演算を判定するとと
もに、その演算に基づいて、実行ユニット27〜36の
内のいずれがその命令を実行することができるかを判定
する。分岐ユニット27および28は、他の命令アドレ
スへ分岐することが可能なアセンブリプログラム命令を
実行する。ロードALU29は、算術演算に用いられる
値をレジスタファイルr24またはレジスタファイルf
25にロードし、ストアALU30は、レジスタファイ
ル内容をメインメモリに格納する。DSU31は、シフ
ト、ビット操作およびデータ置換を実行する。MPYユ
ニット32は、乗算を実行するが、算術および論理演算
を実行することも可能である。ALUユニット33およ
び34は算術演算を実行する。Fpユニット35および
36は、浮動小数点演算を実行する。実行ユニット27
〜36は、さらに、これらのユニット27〜36の演算
に用いられるレジスタファイル22〜25と通信する。
実行ユニット27〜36のこのような演算のための動作
および信号は標準的であり、J. L. Hennessy, D. Goldb
erg and D. Patterson, "Computer Architecture: A Qu
antitative Approach", Morgan Kan (2d. Ed. Aug. 199
5)、に記載されている。実行ユニットおよびレジスタフ
ァイルについてさらに詳細にはこの文献に記載されてい
る。
【0034】図2のdep命令パケット11を用いた本
発明によるプロセッサ5の一般的動作は以下の通りであ
る。フェッチ37は、命令フェッチユニット37Aに含
まれる命令アドレスレジスタ(IAR(Instruction Add
ress Register))(図示せず)によって指される命令ア
ドレスに基づいてメインメモリ21から命令をフェッチ
する。(IARおよび命令フェッチユニット37Aはフ
ェッチ37内に含まれる。命令フェッチユニット37A
は図4に示す。)その後、命令はデコーダ38へ送られ
る。実施例では、デコーダ38はシリアルデコードユニ
ットであり、命令に基づいて実行される動作の型(タイ
プ)を判定するために用いられる。次に、命令は発行コ
ントローラ39へ送られる。発行コントローラ39は、
MIB26内のIARをフェッチ37内のIARと比較
する。一致しなかった場合、発行コントローラ39は、
フェッチ37内のIARを、実行を続行する命令アドレ
スで更新し、フェッチ37に対して、メインメモリ21
からアドレスをフェッチするよう指示する。一致した場
合、命令はdep命令であり、IARは、実行ユニット
27〜36による並列実行のための命令を発行する並列
デコーダ40へ送るために、命令間依存性とともにMI
B26にキャッシュされる。発行コントローラ39はま
た、dep命令パケット11内の命令を含むプログラム
命令を、実行ユニット27〜36にマッピングすること
も可能である。発行コントローラ39は、このマッピン
グ機能を実行することによって、プログラム命令をさら
に最適化する。さらに、本発明の代替実施例では、別の
論理デバイス(例えば、並列デコーダ40のみで、また
は、発行コントローラ39と組み合わせて(いずれもプ
ロセッサ5に含まれる。))がこのマッピング機能を実
行することも可能である。さらに別の代替実施例では、
プロセッサ5の外部にある1個または複数のロジックが
マッピング機能を実行することが可能である。
【0035】図3はまた、メインメモリ21とフェッチ
37の間の制御およびデータ信号も示している。さら
に、実行コントロール(図3ではExec Ctlsと
して示す。)は、並列デコーダ40からの出力であり、
実行ユニット27〜36を制御するために用いられる。
(簡単のため、ユニット27〜36への実行コントロー
ルの入力は図示しない。)
【0036】MIB26について図4を参照してさらに
詳細に説明する。図4に、MIB26、命令フェッチユ
ニット37A、メインメモリ21、発行コントローラ3
9、並列デコーダ40および一連のデコードユニット4
1から50を示す。(簡単のため、ユニット41、42
および50のみを示す。)各デコードユニット41〜5
0は、実行ユニット27〜36のうちの1つに対応す
る。これらのユニット41から50は、実行ユニット2
7〜36による実行のために命令を送る前にそれらの命
令をさらに処理する。この追加処理は当業者に周知であ
るため、ここではこれ以上説明しない。
【0037】実施例のMIB26は、一連の記憶領域
(ここではレコードという。)を有する。(簡単のた
め、3個のレコードを図4に示す。)MIB26内の各
レコードは、IARフィールド26A、DEPフィール
ド26B、Numフィールド26C、および命令フィー
ルド26D(Instr0〜Instrnとして示す。ただし、n
は、MIB26の与えられたレコード内の命令の数であ
る。)を含むことが可能である。さらに、nは、本発明
により構成されるプロセッサ5内の実行ユニット27〜
36の数に等しい。命令フィールド26Dの数が実行ユ
ニット27〜36の数に等しいが、dep命令パケット
11の並列実行中に、区切られた命令の数はnより少な
い場合は、各実行ユニット27〜36がいずれも並列実
行に必要とされるわけではなく、使用されない実行ユニ
ット27〜36はnopを受け取る。nopすなわちno
operation命令は、このような命令フィールド26Dに
対応する実行ユニット27〜36に対して、命令を何も
実行しないことを指示する命令である。そのような、d
ep命令パケット11からの命令を含まない命令フィー
ルド26Dに対して、デコーダ38はそのようなフィー
ルド26Dにnopを書き込む。
【0038】本発明のもう1つの重要な利点は、nop
は、メインメモリ21においてではなくMIB26の命
令フィールド26Dにおいて実装されることである。こ
れにより、メインメモリ21に格納される命令を圧縮す
ることが可能となる。さらに、メインメモリ21内の命
令シーケンスをプロセッサ5に送るために要求されるメ
インメモリ21の伝送ラインの数は、nopがメインメ
モリ21に格納されない場合、削減される。最後に、本
発明のこの特徴により、プロセッサ5は、命令とnop
の所定のバインディングに基づいてではなく、実行ユニ
ット27〜36の最適使用に従って、MIB26内のd
ep命令パケット11に対応して命令を割り当てること
が可能となる。プロセッサ5がdep命令パケット11
をMIB26に割り当てた後、命令が書き込まれていな
い命令フィールド26Dはnopを含むことあるいはn
opが書き込まれることが可能である。従って、メイン
メモリ21記憶領域およびハードウェアは縮小し、プロ
セッサ5は、実行ユニット27〜36を自由に割り当て
ることによりILPを活用することによって達成される
利得を維持し、あるいはさらに最適化することができ
る。
【0039】図2のdep命令パケット11を用いた本
発明によるMIB26の一般的動作は以下の通りであ
る。dep命令の実行により、(命令アドレスラベルに
おける)IARの内容がMIB26に書き込まれる。次
の4個の命令がフェッチされると、プロセッサ5は、
(indep)型dep命令を順次実行し、一方、その
命令を同時にMIB26に書き込むことが可能である。
代替例では、プロセッサは、dep命令によって区切ら
れるすべての命令をフェッチしてからそれらを並列に発
行する。分岐ラベル命令が実行されると、IARがMI
B26のIARフィールド26Aに入り、4個のすべて
の命令が並列に発行される。
【0040】プログラムが実行されるとき、命令は、M
IB26に書き込まれるのと全く同様にトレースキャッ
シュに書き込まれる(Rotenberg et al., "Trace Cach
e: aLow Latency Approach to High Bandwidth Instruc
tion Fetching", Proceedings of the 29th Annual Int
ernational Symposium on Microarchitecture, pp.24-2
4 (Dec. 1996)、参照)。後に、オブジェクトコード
が、MIB26内にある命令アドレスに分岐すると、マ
シンは、格納されている依存性情報の制約に従って、す
べての命令を並列に発行することができる。MIB26
がdep命令パケット11内のすべての命令を物理的に
格納することができない(すなわち、MIB26内のレ
コード数が一杯であり追加レコードが書き込めない場
合、あるいは、nの値が4より小さい(例えば、命令フ
ィールドが2個である)場合)ような本発明の代替実施
例では、プロセッサ5は、dep命令パケット11の命
令のうちの2個を並列に発行した後、残りの2個の命令
を続いて発行することができる。このような実施例で
は、Numフィールド26Cは、dep命令パケット1
1のもとの命令シーケンスが保存されるように、フェッ
チ37内のIARをインクリメントする方法を指定す
る。
【0041】図5に、キャッシュあるいはMIB26の
編成が、必ずしも図4の実施例のように固定長バッファ
である必要はないことを示す。図5は、命令フィールド
26D′にnopが格納されていないような代替実施例
によるMIB26′の実装を示す。MIB26′以外
は、図5の装置は図4の装置と同一であり、同一の参照
符号を付してある。MIB26′について、相違点は、
命令フィールド26D′(すなわち、instr0〜instr
n)は、MIB26′とは別個の記憶装置に配置され
る。別個の記憶領域の使用に基づいて、MIB26′を
一般に2レベルバッファと呼び、追加情報の記憶領域を
必要とする。特に、アドレスフィールド26E′(図中
Addrで示す。)は、dep命令パケット11内の最
初の区切られた命令のメモリアドレスを格納する。これ
は、MIB26における余分なnop記憶スペースを不
要にするという効果がある。この場合、Numフィール
ド26Cは、命令フィールド26D′からいくつの命令
を読み出すべきか、さらに、IARフィールド26Aを
どのようにインクリメントするかを指定する。
【0042】本発明のMIB26′実施例については、
メモリのデフラグメンテーションが要求される可能性が
ある。各アドレスフィールド26E′に格納される命令
の数は可変であるため、メモリは断片化(フラグメンテ
ーション)を起こす可能性がある。これにより、キャッ
シュからの不必要な追い出しを引き起こすことや、とき
どきの圧縮を必要とすることがある。デフラグメンテー
ションは、設計記憶スペースの制約に関連し、当業者に
周知であるため、ここではこれ以上説明しない。
【0043】また、MIB26′の命令フィールド26
D′が、プロセッサ5のハードウェア(図3)によって
物理的に実行されることが可能なものより多くの命令を
格納することも可能である。この場合、発行コントロー
ラ39′のロジックが、オブジェクトコード命令を実行
可能パケットへとアセンブルし、実行ユニット27〜3
6(図3)を割り当て数サイクルにわたって命令を転送
する。
【0044】図4および図5にそれぞれ示されるMIB
26またはMIB26′に対して、これらはキャッシュ
として作用するため、与えられた時刻に格納されること
が可能な命令の数には制限がある。従って、他の命令の
記憶を可能にするためにMIBから系統的に命令を消去
するためのいくつかの既知の方法がある。しかし、実時
間動作を保証するためのいくつかの追加動作を導入する
ことが可能である。(命令を消去するためには、MIB
26およびMIB26′はいずれも同様に使用可能であ
る。)特に、dep命令によって区切られる特定の命令
はMIB26あるいは26′内に「ロック」されること
が可能である。これにより、制限された個数のエントリ
を有する実装に対するスラッシング(当業者に周知であ
り、ここではさらに詳細には説明しない。)状態の可能
性が回避される。また、これにより、命令実行速度が正
確に決定されることも可能となる。ロックMIB動作は
いくつかの方法で指定することが可能である。第1に、
別個のunlock_mib命令が実行されるまで、別個の命令が
MIB全体の内容をそのままにロックすることが可能で
ある。プログラム制御下で、これは、現在の内容は追い
出すことができないが、別のロケーションを解放してd
ep命令をMIBにキャッシュすることができることを
指定することも可能である。第2に、dep命令内の1
ビット(あるいは2進数の0または1)が、MIBの個
々のレコードをロックすることも可能である。MIBが
ない場合、このビットは無視される。さらに、MIBが
一杯であってすべてのレコードが現在ロックされている
場合、このビットは無視される。これは性能に悪影響を
及ぼす可能性がある。また、以下の命令シーケンスによ
って、MIBの特定のレコードを案ロックすることも可
能である。 1 ... 2 label: dep... 3 ... 4 load_addr r30,label; 5 unlock_mib r30; 6 ... この命令シーケンスは、第4行で、レジスタファイルr
24のロケーション30に命令アドレスラベルをロード
する。MIB26はIARによってdep命令パケット
を格納するため、命令は、MIB26のIARフィール
ド26Aに格納されているIARを参照することによっ
てアンロックされることが可能である。
【0045】単一レベルMIB(すなわちMIB26)
での使用に対するもう1つの重要な作用はflush_
mibである。この命令は、MIB26の内容を消去
し、命令フィールド26Dのロケーションのすべての命
令をnopにセットする。このようにして、各命令フィ
ールド26Dにnopが存在するため、dep命令パケ
ットがn個より少ない命令を含むときに再びnopを書
き込む必要がない。
【0046】再び図3を参照すると、代替実施例では、
本発明によるdep命令は、MIB26(あるいはいか
なるタイプのキャッシュ)が存在しない場合でも使用可
能である。この場合、要求されるのは命令帯域幅だけで
ある。これは、並列に発行される命令を格納することが
可能なプロセッサ5のデバイス内の記憶領域である。フ
ェッチ37がdep命令によって区切られる命令を保持
することができる場合、命令帯域幅はさらに小さくな
る。この場合、MIB26あるいは任意のタイプのキャ
ッシュに対して作用するすべての命令(例えば、loc
k_mibおよびflush_mib)は無視される。
【0047】再び図2を参照すると、さらに別の実施例
では、別の型のdep命令を、単独で、または、独立型
のdep命令に加えて、使用可能である。このような追
加の型の1つが並行型である。この型は、プロセッサ5
(図3)に対して、区切られた命令は並行して発行され
るように見えるべきことを示す。これは、このような命
令を実装するために用いられるレジスタファイル22〜
25から読み出される命令に影響を与える。(シリアル
な命令シーケンスに見られるように)更新された値を受
け取るのではなく、関連するレジスタファイル22〜2
5は、関連するレジスタファイル22〜25に含まれる
値をdep命令の前に受け取る。このため、複数の命令
のそれぞれがレジスタファイル22〜25内の重なり合
うアドレスに作用し、いずれかの命令が実行される前に
このようなアドレスの値を要求する場合、並行型のde
pが用いられる。これの例がスワップである。通常、ス
ワップ演算を実行するには一時レジスタを用いなければ
ならない。例えば、レジスタファイルr24内のr0と
r1をスワップする場合、一時レジスタr3を確保して
r0またはr1のいずれか一方の値を格納し、上書きさ
れた値ではなく命令実行前の値がスワップされるように
する。dep命令では、スワップは次のように実行する
ことができる。 1 dep(concurrent)#2{ 2 move r0,r1; 3 move r1,r0; 4 } この例では、一時レジスタr3は不要である。むしろ、
スワップ演算は、命令実行前にr0およびr1の値が別
々にロードされた2つの別個の実行ユニットを用いて実
行されている。このようにして、演算の結果として書き
込まれる値は、上書きされた値ではなく、r0およびr
1のレジスタ内のもとの値に基づく。
【0048】代替実施例で用いられるもう1つの型のd
ep命令は、bind_branch型のdep命令で
ある。これは、プロセッサ5のハードウェアに対して、
すべての命令は並列に発行することができるが、分岐命
令は、dep命令パケット内の他のすべての命令が実行
を完了するまで実行されないことを知らせる。区切られ
た命令全体を1サイクルで実行するのに十分な資源を有
するプロセッサ5の場合、これは(indep)型のd
ep命令と等価である。しかし、dep命令パケット全
体を実行するのに複数サイクルを必要とするプロセッサ
5の場合、パケット内のすべての命令が実行されるま
で、分岐の実行を遅延させる必要がある。
【0049】このようなdep命令のもう1つの型は、
分岐予測あるいは投機的動作型である。分岐予測dep
命令は、プロセッサ5のハードウェアが例えば次のよう
に分岐を統計的に予測することを除いては、bind_
branch型と同等の指定を行う。 1 dep(pred_taken)#4{ 2 load ... 3 mpy ... 4 add ... 5 bne r0,label; 6 } 7 ... bneあるいは分岐演算(記述)がこの例では用いられ
ている。r0の値が0に等しくない場合、この命令は、
プロセッサに対して、bneの次に示される命令アドレ
ス、すなわち、記号アドレスlabelへ進み、そのア
ドレスの命令、すなわち、pred_taken型de
p命令を実行するよう指示する。pred_taken
型dep命令により、プロセッサ5のハードウェアは、
プロセッサおよびこのような命令を収容することが可能
なパイプライン(図示せず)のできるだけ早いステージ
でアドレスlabelから命令をフェッチする。例え
ば、標準的なプロセッサ5のパイプラインは、4個のス
テージ、すなわち、フェッチ、デコード、実行およびラ
イトバックを有するが、高性能のプロセッサ5は、4個
より多くのステージを有し、ステージ数は非常に多くす
ることも可能である。さらに、命令の処理は、プロセッ
サ5の特定のステージ中に行われる。ステージおよび命
令の処理に関して、プロセッサ5の動作は当業者に周知
であり、ここではこれ以上説明しない。分岐予測型を用
いると、命令は、プロセッサの通常の処理よりも短いサ
イクル時間で処理される。
【0050】投機的動作型は、命令を実行するのに空い
ているできるだけ早いときにプロセッサ5を使用するた
めに一連の命令を実行するが、条件(例えば、分岐命令
に基づく)の結果が分かってその実行の結果(コミット
結果ともいう。)を格納するまで待機するものである。
例えば、例示的な投機的動作では、一連の命令が実行さ
れる間、分岐条件が満たされる場合に限りそれらの命令
は格納される。このようにして、プロセッサ5は、条件
の結果が命令実行の格納を可能にすること(投機的動作
がどのように設定されるかに応じて、条件を満たすこと
が結果を格納することを可能にするかどうか)を期待し
て最大の効率で実行される。この場合、条件の結果によ
り、このような実行の結果は無意味になり、結果は捨て
られることもある。一連の命令の実行の結果が捨てられ
る可能性があるため、この動作は投機的である。しか
し、結果が使用可能な場合、効率を増大させることがで
きる。具体的には、投機的動作型では、ある条件の結果
が分かるまで、結果はコミットされない。場合によって
は、投機的動作により、プロセッサ5のハードウェア
は、実行ユニット27〜36の利用率を最適化すること
ができる。しかし、一部の結果を捨てなければならない
可能性もある。例を掲げる。 1 dep(spec_br_nottaken)#3{ 2 load ... 3 add ... 4 store ... 5 } 6 branch label このdep命令パケットは、区切られたパケット全体が
投機的動作であることを指定する。この例では、条件は
分岐命令であり、分岐が行われない場合、命令シーケン
スは実行のためにレジスタファイル22〜25に格納さ
れる(命令をコミットするともいう)。そうでない場
合、すなわち、分岐が行われる場合、結果は捨てられ
る。この型の動作は、ストア命令の場合に特に重要であ
る。その理由は、多数の並列命令を発行しようとする場
合に、分岐命令より上のストア命令を移動するという困
難な問題を解決するからである。
【0051】上記のそれぞれの型のdep命令に関し
て、発行コントローラ39は、複雑な発行ストラテジを
扱わなければならない場合があり、また、すべての中間
計算を保持するのに十分な、アーキテクチャ的に不可視
のレジスタ22〜27を含むことを必要とする場合があ
る。プロセッサ5のこのような発行ストラテジおよび編
成は当業者に周知であるため、ここではこれ以上説明し
ない。さらに、上記の本発明の代替実施例では、dep
命令型は、単独で、または、他の1つまたは複数のこの
ような型と組み合わせて、使用可能である。dep命令
型の使用および組合せは設計的事項であり、本発明を制
限するものではない。
【0052】
【発明の効果】本発明の効果は、同じ編成、あるいは、
実行ユニットの個数は異なるが1つ以上の共通の実行ユ
ニットを有する編成の、複数の実装におけるオブジェク
トコード互換性である。例えば、2つの編成がそれぞれ
乗算、ALU、ロードおよびストア実行ユニットを備
え、第2の編成はさらにもう1つの乗算実行ユニットを
備えるとする。本発明のdep命令が第1の編成でコン
パイルされた場合、これは再コンパイルなしで第2の編
成によっても実行されることが可能であり、その逆も成
り立つ。第1の編成は4個の実行ユニットを有するた
め、4個の命令を並列に発行することができる。第2の
編成は5個の命令を並列に発行する。第1および第2の
いずれの編成でもこのような実行が達成されるのは、4
個の命令を含むdep命令パケットがいずれの編成でも
実行されることが可能であるためである。5個の命令を
含むdep命令パケットに関しては、これは第2の編成
では並列に実行されることが可能であり、第1の編成で
は、オブジェクトコードを再コンパイルすることを必要
とせずに、4個の命令を並列に実行した後、1個の命令
が続いて実行される。しかし、各編成がdep命令パケ
ットを実行するパフォーマンス時間は、パケット内のす
べての命令の並列処理と、一部の命令の並列処理後にパ
ケット内の残りの命令を続いて処理することのパフォー
マンス時間差に基づいて、相違する可能性がある。
【0053】以上、本発明の実施例について説明した
が、この説明に基づいて考えられるさまざまな変形例も
また本発明の技術的範囲に入る。特に、ここで示したd
ep命令パケットおよびdep命令は、dep命令の型
の単なる例示であり、単独であることまたは組合せであ
ることは要求されない。さらに、このようなパケットお
よび命令は、ここで示したプロセッサ編成とともに、I
LPを活用するdep命令およびプロセッサ編成の単な
る例示であり、これらは、本発明に従って構成されるd
ep命令およびプロセッサのいずれを制限するものでも
ない。
【図面の簡単な説明】
【図1】本発明による完全なプロセッサシステムを示す
高水準ブロック図である。
【図2】本発明の実施例によってエンコードされた特定
の形式のdep命令およびdep命令パケットの図であ
る。
【図3】図1に示した本発明の実施例によって構成され
たプロセッサ編成のブロック図である。
【図4】図3に示したプロセッサに対して本発明の実施
例によって構成された多重発行バッファのブロック図で
ある。
【図5】図3のプロセッサに対して本発明によって構成
された多重発行バッファの代替実施例のブロック図であ
る。
【符号の説明】
1 コンピュータシステム 2 プログラム 3 コンパイラ/プリプロセッサ 4 最適化規則 5 プロセッサ 11 dep命令パケット 21 メインメモリ 22 レジスタファイルオフセット 23 レジスタファイルベース 24 レジスタファイルr 25 レジスタファイルf 26 多重発行バッファ(MIB) 26A IARフィールド 26B DEPフィールド 26C Numフィールド 26D 命令フィールド 26E′ アドレスフィールド 27 分岐ユニット 28 分岐ユニット 29 ロードALU 30 ストアALU 31 データサービスユニット(DSU) 32 乗算(MPY)ユニット 33 ALU 34 ALU 35 Fpユニット 36 Fpユニット 37 フェッチ 37A 命令フェッチユニット 38 デコーダ 39 発行コントローラ 40 並列デコーダ 41 デコードユニット 42 デコードユニット 50 デコードユニット
───────────────────────────────────────────────────── フロントページの続き (71)出願人 596077259 600 Mountain Avenue, Murray Hill, New Je rsey 07974−0636U.S.A. (72)発明者 シー.ジョン グロスナー アメリカ合衆国,18104 ペンシルヴァニ ア,アレンタウン,アレキサンダー ドラ イブ 226 (72)発明者 サンジャイ ジンターカー アメリカ合衆国,18017 ペンシルヴァニ ア,ベスレヘム,イースト ブールヴァー ド 3148,アパートメント ビー (72)発明者 スタマティス ヴァッシリアディス オランダ,ズーターミア,ピー.ケンフォ ヴ 91

Claims (29)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータプロセッサによって実行さ
    れるコンピュータが読み取ることが可能なプログラムを
    有するコンピュータが使用可能な媒体を含むコンピュー
    タプログラム製品において、 前記プログラムは、前記コンピュータプロセッサによっ
    て実行される所定の動作を実行するための、コンピュー
    タが読み取ることが可能な複数のプログラム命令を含
    み、 少なくとも1つのプログラム命令は、前記コンピュータ
    プロセッサによって並行実行のために処理されることが
    可能な少なくとも2つのプログラム命令に関する情報を
    含む依存性命令であることを特徴とするコンピュータプ
    ログラム製品。
  2. 【請求項2】 前記依存性命令内の情報は、相異なる個
    数あるいは型の並行動作可能な複数の実行ユニットを有
    する複数の異なるコンピュータプロセッサに対して汎用
    性があることにより、前記製品は、複数のコンピュータ
    プロセッサでの実行の互換性があることを特徴とする請
    求項1に記載のコンピュータプログラム製品。
  3. 【請求項3】 並行動作可能な複数の実行ユニットを有
    するコンピュータプロセッサが複数のプログラム命令を
    実行する処理時間を短縮する方法において、 前記複数のプログラム命令のうち相互に独立に実行可能
    なプログラム命令のセットに関する情報を含む少なくと
    も1つの依存性命令を、前記複数のプログラム命令に含
    めるステップと、 前記依存性命令に応じて、前記プログラム命令のセット
    の少なくとも2個のプログラム命令からなるプログラム
    命令グループを形成するステップと、 前記プログラム命令グループ内のプログラム命令を、並
    列動作可能な実行ユニットのグループで並列に実行する
    ステップとからなることを特徴とする、複数のプログラ
    ム命令を実行する処理時間を短縮する方法。
  4. 【請求項4】 少なくとも2個のプログラム命令を格納
    する格納ステップをさらに有することを特徴とする請求
    項3に記載の方法。
  5. 【請求項5】 前記格納ステップは、キャッシュおよび
    多重発行バッファのうちの一方で実行されることを特徴
    とする請求項4に記載の方法。
  6. 【請求項6】 少なくとも2個のプログラム命令を記憶
    デバイスに格納するステップをさらに有し、該記憶デバ
    イスのうちの第1記憶デバイスは前記依存性命令に含ま
    れる前記情報を格納し、該記憶デバイスのうちの第2記
    憶デバイスは前記プログラム命令グループを格納するこ
    とを特徴とする請求項4に記載の方法。
  7. 【請求項7】 複数のプログラム命令のうちの少なくと
    も2個のプログラム命令を並行して実行することが可能
    なコンピュータ内のシステムにおいて、 前記複数のプログラム命令のうちの少なくとも1つは前
    記コンピュータに格納され、 前記複数のプログラム命令のうちの少なくとも1つは、
    前記複数のプログラム命令のうち相互に独立に実行可能
    な少なくとも2個のプログラム命令に関する情報を含む
    依存性命令であり、 前記システムは、 前記複数のプログラム命令を実行する少なくとも2個の
    並列動作可能な実行ユニットを有するコンピュータプロ
    セッサと、 前記コンピュータ内にあり、前記依存性命令に応答し
    て、前記実行ユニットに、前記少なくとも2個のプログ
    ラム命令を並列に実行させる手段とを有することを特徴
    とする、コンピュータ内のシステム。
  8. 【請求項8】 前記複数のプログラム命令のうちの少な
    くとも2個のプログラム命令を格納する少なくとも1つ
    の記憶デバイスをさらに有することを特徴とする請求項
    7に記載のシステム。
  9. 【請求項9】 前記少なくとも1つの記憶デバイスは、
    キャッシュおよび多重発行バッファのうちの一方である
    ことを特徴とする請求項8に記載のシステム。
  10. 【請求項10】 前記複数のプログラム命令のうちの少
    なくとも2個のプログラム命令を格納する少なくとも2
    個の記憶デバイスをさらに有し、該記憶デバイスのうち
    の第1記憶デバイスは前記依存性命令に含まれる前記情
    報を格納し、該記憶デバイスのうちの第2記憶デバイス
    は前記複数のプログラム命令のうちの少なくとも2個の
    プログラム命令を格納することを特徴とする請求項8に
    記載のシステム。
  11. 【請求項11】 コンピュータプロセッサによって実行
    されるコンピュータが読み取ることが可能なプログラム
    を有するコンピュータが使用可能な媒体を含むコンピュ
    ータプログラム製品において、 該プログラム内のコンピュータが読み取ることが可能な
    プログラムコード手段が、コンピュータが読み取ること
    が可能な複数のプログラム命令を含み、各プログラム命
    令は、前記コンピュータプロセッサによって実行される
    所定の動作を実行することが可能であり、 少なくとも1つのプログラム命令は、所定の方式で前記
    コンピュータプロセッサによる処理のために相互作用す
    る少なくとも2つのプログラム命令に関する情報を含む
    依存性命令であることを特徴とするコンピュータプログ
    ラム製品。
  12. 【請求項12】 前記依存性命令内の情報は、相異なる
    個数あるいは型の並行動作可能な複数の実行ユニットを
    有する複数の異なるコンピュータプロセッサに対して汎
    用性があることにより、前記製品は、複数のコンピュー
    タプロセッサでの実行の互換性があることを特徴とする
    請求項11に記載のコンピュータプログラム製品。
  13. 【請求項13】 前記依存性命令は、前記依存性命令に
    関連する少なくとも2つのプログラム命令が並行して実
    行されなければならないことを示すことを特徴とする請
    求項11に記載のコンピュータプログラム製品。
  14. 【請求項14】 前記複数のプログラム命令は、前記複
    数のプログラム命令のうちの別のプログラム命令の実行
    を開始する分岐命令を含み、 前記依存性命令に関連する少なくとも2つのプログラム
    命令は、前記分岐命令を含み、 前記依存性命令は、前記分岐命令が前記コンピュータプ
    ロセッサによって処理される前に、前記分岐命令以外
    の、前記依存性命令に関連する複数のプログラム命令が
    実行されなければならないことを示すことを特徴とする
    請求項11に記載のコンピュータプログラム製品。
  15. 【請求項15】 前記複数のプログラム命令は、前記複
    数のプログラム命令のうちの別のプログラム命令の実行
    を開始する分岐命令を含み、 前記依存性命令に関連する少なくとも2つのプログラム
    命令は、前記分岐命令を含まず、 前記依存性命令は、前記分岐命令が前記コンピュータプ
    ロセッサによって処理される前に、前記依存性命令に関
    連する複数のプログラム命令が実行されることを示し、
    前記依存性命令に関連する複数のプログラム命令の実行
    の結果は、前記分岐命令が実行される場合に限り前記コ
    ンピュータ内に保持されることを特徴とする請求項11
    に記載のコンピュータプログラム製品。
  16. 【請求項16】 並行動作可能な複数の実行ユニットを
    有するコンピュータプロセッサが複数のプログラム命令
    を実行する処理時間を短縮する方法において、 前記複数のプログラム命令のうち所定の方式で前記コン
    ピュータプロセッサによる処理のために相互作用するプ
    ログラム命令のセットに関する情報を含む少なくとも1
    つの依存性命令を、前記複数のプログラム命令に含める
    ステップと、 前記依存性命令に応じて、前記プログラム命令のセット
    の少なくとも2個のプログラム命令からなるプログラム
    命令グループを形成するステップと、 前記プログラム命令グループ内のプログラム命令を、並
    列動作可能な実行ユニットのグループで並列に実行する
    ステップとからなることを特徴とする、複数のプログラ
    ム命令を実行する処理時間を短縮する方法。
  17. 【請求項17】 前記依存性情報は、前記少なくとも2
    つのプログラム命令がそれぞれ、前記依存性情報に関連
    する各プログラム命令から前記プログラム命令グループ
    が形成されるように、並行して実行されなければならな
    いことを示すことを特徴とする請求項16に記載の方
    法。
  18. 【請求項18】 前記複数のプログラム命令のうちの別
    のプログラム命令の実行を開始する分岐命令を前記複数
    のプログラム命令に含めるステップと、 前記分岐命令を、前記依存性情報に関連するプログラム
    命令のセットに含めるステップと、 前記所定の方式に基づいて、前記コンピュータプロセッ
    サによって前記分岐命令が処理される前に、前記分岐命
    令以外の前記プログラム命令のセットを実行するステッ
    プとをさらに有することを特徴とする請求項16に記載
    の方法。
  19. 【請求項19】 前記複数のプログラム命令のうちの別
    のプログラム命令の実行を開始する分岐命令を前記複数
    のプログラム命令に含めるステップと、 前記分岐命令を、前記依存性情報に関連するプログラム
    命令のセットから除外するステップと、 前記所定の方式に基づいて、前記コンピュータプロセッ
    サによって前記分岐命令が処理される前に、前記プログ
    ラム命令のセットを実行し、前記分岐命令が実行される
    場合に限り、前記プログラム命令のセットの実行の結果
    を保持するステップとをさらに有することを特徴とする
    請求項16に記載の方法。
  20. 【請求項20】 少なくとも2個のプログラム命令を格
    納する格納ステップをさらに有することを特徴とする請
    求項16に記載の方法。
  21. 【請求項21】 前記格納ステップは、キャッシュおよ
    び多重発行バッファのうちの一方で実行されることを特
    徴とする請求項20に記載の方法。
  22. 【請求項22】 少なくとも2個のプログラム命令を記
    憶デバイスに格納するステップをさらに有し、該記憶デ
    バイスのうちの第1記憶デバイスは前記依存性命令に含
    まれる前記情報を格納し、該記憶デバイスのうちの第2
    記憶デバイスは前記プログラム命令グループを格納する
    ことを特徴とする請求項20に記載の方法。
  23. 【請求項23】 複数のプログラム命令のうちの少なく
    とも2個のプログラム命令を並行して実行することが可
    能なコンピュータ内のシステムにおいて、 前記複数のプログラム命令のうちの少なくとも1つは前
    記コンピュータに格納され、 前記複数のプログラム命令のうちの少なくとも1つは、
    前記複数のプログラム命令のうち所定の方式で前記コン
    ピュータプロセッサによる処理のために相互作用する少
    なくとも2個のプログラム命令に関する情報を含む依存
    性命令であり、 前記システムは、 前記複数のプログラム命令を実行する少なくとも2個の
    並列動作可能な実行ユニットを有するコンピュータプロ
    セッサと、 前記コンピュータ内にあり、前記依存性命令に応答し
    て、前記実行ユニットに、前記少なくとも2個のプログ
    ラム命令を並列に実行させる手段とを有することを特徴
    とする、コンピュータ内のシステム。
  24. 【請求項24】 前記依存性命令は、前記依存性命令に
    関連する少なくとも2つのプログラム命令が並行して実
    行されなければならないことを示すことを特徴とする請
    求項23に記載のシステム。
  25. 【請求項25】 前記複数のプログラム命令は、前記複
    数のプログラム命令のうちの別のプログラム命令の実行
    を開始する分岐命令を含み、 前記依存性命令に関連する少なくとも2つのプログラム
    命令は、前記分岐命令を含み、 前記依存性命令は、前記分岐命令が前記コンピュータプ
    ロセッサによって処理される前に、前記分岐命令以外
    の、前記依存性命令に関連する複数のプログラム命令が
    実行されなければならないことを示すことを特徴とする
    請求項14に記載のシステム。
  26. 【請求項26】 前記複数のプログラム命令は、前記複
    数のプログラム命令のうちの別のプログラム命令の実行
    を開始する分岐命令を含み、 前記依存性命令に関連する少なくとも2つのプログラム
    命令は、前記分岐命令を含まず、 前記依存性命令は、前記分岐命令が前記コンピュータプ
    ロセッサによって処理される前に、前記依存性命令に関
    連する複数のプログラム命令が実行されることを示し、
    前記依存性命令に関連する複数のプログラム命令の実行
    の結果は、前記分岐命令が実行される場合に限り前記コ
    ンピュータ内に保持されることを特徴とする請求項15
    に記載のシステム。
  27. 【請求項27】 前記複数のプログラム命令のうちの少
    なくとも2個のプログラム命令を格納する少なくとも1
    つの記憶デバイスをさらに有することを特徴とする請求
    項23に記載のシステム。
  28. 【請求項28】 前記少なくとも1つの記憶デバイス
    は、キャッシュおよび多重発行バッファのうちの一方で
    あることを特徴とする請求項27に記載のシステム。
  29. 【請求項29】 前記複数のプログラム命令のうちの少
    なくとも2個のプログラム命令を格納する少なくとも2
    個の記憶デバイスをさらに有し、該記憶デバイスのうち
    の第1記憶デバイスは前記依存性命令に含まれる前記情
    報を格納し、該記憶デバイスのうちの第2記憶デバイス
    は前記複数のプログラム命令のうちの少なくとも2個の
    プログラム命令を格納することを特徴とする請求項27
    に記載のシステム。
JP10358196A 1997-12-16 1998-12-16 コンピュータプログラム製品 Pending JPH11242599A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US99711797A 1997-12-16 1997-12-16
US08/997117 1997-12-16

Publications (1)

Publication Number Publication Date
JPH11242599A true JPH11242599A (ja) 1999-09-07

Family

ID=25543667

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10358196A Pending JPH11242599A (ja) 1997-12-16 1998-12-16 コンピュータプログラム製品

Country Status (2)

Country Link
EP (1) EP0924603A3 (ja)
JP (1) JPH11242599A (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0023696D0 (en) * 2000-09-27 2000-11-08 Univ Bristol Computer instructions
AU2002348842A1 (en) 2001-11-26 2003-06-10 Koninklijke Philips Electronics N.V. Wlim architecture with power down instruction
US8141068B1 (en) * 2002-06-18 2012-03-20 Hewlett-Packard Development Company, L.P. Compiler with flexible scheduling
EP1378824A1 (en) 2002-07-02 2004-01-07 STMicroelectronics S.r.l. A method for executing programs on multiple processors and corresponding processor system
EP1378825B1 (en) * 2002-07-02 2010-04-21 STMicroelectronics Srl A method for executing programs on selectable-instruction-length processors and corresponding processor system
US7206969B2 (en) * 2003-09-10 2007-04-17 Hewlett-Packard Development Company, L.P. Opportunistic pattern-based CPU functional testing
US10552152B2 (en) * 2016-05-27 2020-02-04 Arm Limited Method and apparatus for scheduling in a non-uniform compute device

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5504932A (en) * 1990-05-04 1996-04-02 International Business Machines Corporation System for executing scalar instructions in parallel based on control bits appended by compounding decoder
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
EP1186995B1 (en) * 1993-11-05 2003-09-03 Intergraph Corporation Instruction memory with associative cross-bar switch
US6430676B1 (en) * 1998-12-23 2002-08-06 Cray Inc. Method and system for calculating instruction lookahead

Also Published As

Publication number Publication date
EP0924603A2 (en) 1999-06-23
EP0924603A3 (en) 2001-02-07

Similar Documents

Publication Publication Date Title
KR100676011B1 (ko) 인스트럭션 처리 방법 및 장치와 기계 판독가능한 매체
US7458069B2 (en) System and method for fusing instructions
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
US8161266B2 (en) Replicating opcode to other lanes and modifying argument register to others in vector portion for parallel operation
CN108108188B (zh) 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段
CN108376097B (zh) 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
US8505002B2 (en) Translation of SIMD instructions in a data processing system
JP2928695B2 (ja) 静的インタリーブを用いたマルチスレッドマイクロプロセッサおよびそれを備えたシステムでの命令スレッド実行方法
JP3120152B2 (ja) コンピューターシステム
US6301705B1 (en) System and method for deferring exceptions generated during speculative execution
US7350055B2 (en) Tightly coupled accelerator
KR20180021812A (ko) 연속하는 블록을 병렬 실행하는 블록 기반의 아키텍쳐
US8499293B1 (en) Symbolic renaming optimization of a trace
WO2002008893A1 (en) A microprocessor having an instruction format containing explicit timing information
US20050251621A1 (en) Method for realizing autonomous load/store by using symbolic machine code
JP2002532775A (ja) インタープリタプログラム実行方法
JPH1165844A (ja) パイプラインバイパス機能を有するデータ処理装置
US7565658B2 (en) Hidden job start preparation in an instruction-parallel processor system
JP2001092657A (ja) 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体
WO2004003738A2 (en) Generating code for a configurable microprocessor
JPH1097423A (ja) ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ
Stark et al. Reducing the performance impact of instruction cache misses by writing instructions into the reservation stations out-of-order
US20070220235A1 (en) Instruction subgraph identification for a configurable accelerator
JPH11242599A (ja) コンピュータプログラム製品
US6295601B1 (en) System and method using partial trap barrier instruction to provide trap barrier class-based selective stall of instruction processing pipeline

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040615