JPH10177559A - Device, method, and system for processing data - Google Patents

Device, method, and system for processing data

Info

Publication number
JPH10177559A
JPH10177559A JP9289317A JP28931797A JPH10177559A JP H10177559 A JPH10177559 A JP H10177559A JP 9289317 A JP9289317 A JP 9289317A JP 28931797 A JP28931797 A JP 28931797A JP H10177559 A JPH10177559 A JP H10177559A
Authority
JP
Japan
Prior art keywords
instruction
processor
result buffer
count
result
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
JP9289317A
Other languages
Japanese (ja)
Inventor
J Stark William
ウィリアム・ジェイ・スターク
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 JPH10177559A publication Critical patent/JPH10177559A/en
Pending 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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, 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Abstract

PROBLEM TO BE SOLVED: To provide a method and system for commonly using result data in a multiprocessor computer system. SOLUTION: A multiprocessor computer system incorporates a plurality of processors and each processor incorporates an execution unit 304, a program counter 303, a result buffer 306 containing a plurality of entries which are assigned for holding the output value of the instruction executed by the execution unit 304, and an operation counter 307 which contains an operation count which is at least incremented when the instruction, the output value of which is stored in the buffer 306, is executed by the execution unit 304. The specific entry assigned in the result buffer 306 against a prescribed output value is selected as the function of the operation count when the instruction which generates a given output value is executed.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は、マイクロプロセッ
サ・コンピュータ・システムにおけるデータ処理の改善
に関する。
The present invention relates to improved data processing in microprocessor computer systems.

【0002】[0002]

【従来の技術】従来のマルチプロセッサ・コンピュータ
・システムのブロック図が、図1に最も単純な用語で要
約されて示される。プロセッサ101、111、121
は、システム・バス122を介してメモリ102と対話
する。プロセッサ101に属するプログラム・カウンタ
103は、命令がフェッチされるメモリ102内の位置
を指定する。図2に示されるようにフォーマットされる
命令がプロセッサ101内の実行ユニット104にディ
スパッチされる。実行ユニット104は命令により指定
される操作201を実行する。図2に図式的に示される
ように、操作201への入力値202がメモリ102内
のある位置から、またはプロセッサ101に属するレジ
スタ・ファイル105内のある位置からフェッチされ得
る。同様に図2に図式的に示されるように、操作201
からの出力値203はメモリ102内のある位置に、或
いはレジスタ・ファイル105内のある位置に、または
プログラム・カウンタ103に記憶され得る。
2. Description of the Related Art A block diagram of a conventional multiprocessor computer system is shown in FIG. 1 summarized in simplest terms. Processor 101, 111, 121
Interacts with the memory 102 via the system bus 122. A program counter 103 belonging to the processor 101 specifies the location in the memory 102 where the instruction is fetched. Instructions formatted as shown in FIG. 2 are dispatched to an execution unit 104 in the processor 101. Execution unit 104 performs an operation 201 specified by the instruction. As shown diagrammatically in FIG. 2, an input value 202 to operation 201 may be fetched from a location in memory 102 or from a location in register file 105 belonging to processor 101. Operation 201 is also illustrated schematically in FIG.
May be stored at some location in memory 102, or at some location in register file 105, or in program counter 103.

【0003】プロセッサにより実行される操作における
入力値が、共用メモリ・マルチプロセッサ環境におい
て、別のプロセッサにより実行される別の命令の結果
(すなわち出力値)の場合、その操作の処理はより複雑
となる。第1に、第1のプロセッサ、例えばプロセッサ
101が入力値として使用されるこうした結果を獲得す
るために、第2のプロセッサ、例えばプロセッサ111
が最初にこれらの出力値をメモリ102に記憶しなけれ
ばならず、次にプロセッサ101がこれらの結果をメモ
リ102から取り出し、入力値として命令の実行のため
に使用する。明らかなようにこれらの前提条件のステッ
プは、追加の命令及びクロック・サイクルを消費して、
これらの値をあるプロセッサから他のプロセッサへスト
ア及びロードする。それにより、相当な非効率性及びプ
ロセッサ能力の不要な消費を生じることになる。また他
の実行済みの命令の結果を入力として要求する命令の実
行は、第1のプロセッサがメモリ102内の以前の陳腐
な値ではなく、適切な結果を実際にアクセスしているこ
とを保証するようにプロセッサが同期されることを要求
する。従来技術では、システム内でメモリ・コヒーレン
スを維持するために、データ管理の複雑なプロシージャ
が要求される。
If the input value in an operation performed by a processor is the result of another instruction (ie, an output value) executed by another processor in a shared memory multiprocessor environment, the processing of the operation is more complicated. Become. First, a second processor, such as processor 111, obtains such a result in which the first processor, such as processor 101, is used as an input value.
Must first store these output values in memory 102, and then processor 101 retrieves these results from memory 102 and uses them as input values for executing instructions. Obviously, these prerequisite steps consume additional instructions and clock cycles,
Store and load these values from one processor to another. This will result in significant inefficiencies and unnecessary consumption of processor power. Also, execution of an instruction that requires the result of another executed instruction as input ensures that the first processor is actually accessing the appropriate result, rather than the previous stale value in memory 102. So that the processors are synchronized. The prior art requires complicated procedures for data management to maintain memory coherence in the system.

【0004】同一プロセッサ上で実行される命令間でデ
ータを共用するのに対して共用メモリ・マルチプロセッ
サ構成において、異なるプロセッサ上で実行される命令
間でデータを共用する非効率性は、アルゴリズムを定義
する様式を形成してきた。例えば、共用メモリ・マルチ
プロセッサのために作成されるアルゴリズムは、あるプ
ロセッサ上で実行される命令ストリームにより生成され
るデータを、別のプロセッサ上で実行される命令ストリ
ームと共用することによる性能劣化を最小化するように
注意深く区分化される。このデータは通常、メモリ操作
を介して共用され、ロッキング・プリミティブを介して
同期される。それに対して単一プロセッサのために作成
されるアルゴリズムはこうした制限を有さない。ある命
令により生成されるデータが、レジスタ・ファイル、高
帯域幅、低待ち時間機構を介して他の命令と共用され、
命令実行のリニア・シーケンスを介して同期される。
[0004] The inefficiency of sharing data between instructions executing on different processors in a shared memory multiprocessor configuration, while sharing data between instructions executing on the same processor, makes the algorithm inefficient. The defining style has been formed. For example, an algorithm created for a shared memory multiprocessor may reduce the performance degradation of sharing data generated by an instruction stream executing on one processor with an instruction stream executing on another processor. Carefully segmented to minimize. This data is typically shared via memory operations and synchronized via locking primitives. In contrast, algorithms created for a single processor do not have these limitations. The data produced by one instruction is shared with other instructions via a register file, high bandwidth, low latency mechanism,
Synchronized via a linear sequence of instruction execution.

【0005】共用メモリ・マルチプロセッサによりもた
らされる低帯域幅、高待ち時間、高オーバヘッドの並列
性は、多くのアルゴリズムに固有のきめ細かな命令レベ
ル並列性(ILP)を利用するのに好適でないので、プ
ロセッサ創案者はこうしたアルゴリズムを効率的に実行
するシステムを構成するために、他のアプローチを採用
してきた。パイプライン技術、複数の実行ユニット及び
高性能なハードウェア及びソフトウェア命令スケジュー
リング技術を採用することにより、彼らは単一プロセッ
サ上で、単一の命令ストリーム内で見い出される命令の
並列実行を達成し(これらはレジスタ・ファイルを介し
てデータを共用する)、ILPを示すアルゴリズムを効
率的に実行する手段を提供した。
[0005] The low bandwidth, high latency, high overhead parallelism provided by shared memory multiprocessors is not suitable for exploiting the fine-grained instruction level parallelism (ILP) inherent in many algorithms, Processor creators have taken other approaches to constructing systems that perform these algorithms efficiently. By employing pipeline technology, multiple execution units and sophisticated hardware and software instruction scheduling techniques, they achieve parallel execution of instructions found in a single instruction stream on a single processor ( They share data via register files), and provided a means to efficiently execute the algorithm indicating ILP.

【0006】[0006]

【発明が解決しようとする課題】残念ながら、2つの欠
点がこうしたアプローチの全体的な有効性を制限する。
第1の欠点はプロセッサの複雑性の増加である。一度に
1命令をプログラム順序に実行する単純なプロセッサ
が、一度に複数命令を実行可能なように拡張されると
き、非プログラム順序の実行のためのそれらのスケジュ
ーリング、回路数、シリコン面積、回路の複雑度、テス
トの複雑度、開発時間、リスク及び開発コストの全てが
劇的に増加する。
Unfortunately, two disadvantages limit the overall effectiveness of such an approach.
The first disadvantage is an increase in processor complexity. As simple processors, which execute one instruction at a time in program order, are extended to execute more than one instruction at a time, their scheduling, number of circuits, silicon area, circuit Complexity, test complexity, development time, risk and development costs all increase dramatically.

【0007】第2の欠点は全てのアルゴリズムが、複数
の命令を並列に実行可能な単一のプロセッサにより提供
される計算帯域幅を利用できる訳ではない事実による。
換言すると、これらのアルゴリズムは一度に複数命令を
実行可能な複雑なプロセッサ上の場合とほとんど同様
に、一度に1命令を実行可能な単純なプロセッサ上でも
効率的に実行される傾向がある。更に、多くのこうした
アルゴリズムは通常、マルチプロセッサ環境において実
行されるとき、具合良くスケールされ得る。
A second disadvantage is due to the fact that not all algorithms can take advantage of the computational bandwidth provided by a single processor capable of executing multiple instructions in parallel.
In other words, these algorithms tend to run efficiently on simple processors that can execute one instruction at a time, much as they do on complex processors that can execute multiple instructions at a time. Furthermore, many such algorithms can typically be scaled nicely when executed in a multiprocessor environment.

【0008】従って、従来、第1のクラスのアルゴリズ
ムの理想的な実行環境は、一度に複数命令を実行可能
な、高額の開発費を要する単一の複雑なプロセッサであ
り、第2のクラスのアルゴリズムの理想的な実行環境
は、一度に1命令を実行可能な、安価に開発可能な複数
の単純なプロセッサを含む、共用メモリまたは分散メモ
リ・マルチプロセッサ構成であった。
Conventionally, therefore, the ideal execution environment for the first class of algorithms is a single complex processor which can execute a plurality of instructions at a time and requires a high development cost. The ideal execution environment for the algorithm was a shared-memory or distributed-memory multiprocessor configuration, including multiple inexpensive and simple processors that could execute one instruction at a time.

【0009】[0009]

【課題を解決するための手段】本発明は、複数のプロセ
ッサを含むマルチプロセッサ・コンピュータ・システム
を提供し、各プロセッサが実行ユニットと、プログラム
・カウンタと、実行ユニットにより実行される命令の出
力値を保持するために割当てられる複数のエントリを含
む結果バッファと、出力値を結果バッファに記憶する命
令が実行ユニットにより実行されるとき、少なくとも増
分される操作カウントを含む操作カウンタとを含む。所
与の出力値に対して結果バッファ内に割当てられる特定
のエントリが、その所与の出力値を生成する命令が実行
されるときに、操作カウントの関数として選択される。
各プロセッサは更に、実行される命令から複数のプロセ
ッサの1つを識別するプロセッサ識別子を抽出する復号
器を含み、命令の1つ以上の入力値が、識別されるプロ
セッサの結果バッファから取り出される。各復号器はま
た、実行される命令から変位値を抽出する。この変位値
は、所望の入力値が識別されたプロセッサの結果バッフ
ァに記憶されるときの、実行中プロセッサの現操作カウ
ントと、識別されたプロセッサの期待操作カウントとの
相対差を提供する。復号器は、変位値及び命令を実行し
ているプロセッサの現操作カウントの関数として、アク
セス・キーを生成し、識別されたプロセッサの結果バッ
ファ内の、アクセス・キーにより指標付けられるエント
リから入力値を取り出す。本発明の上述の及び追加の目
的、特徴及び利点が、以下の詳細な説明から明らかとな
ろう。
SUMMARY OF THE INVENTION The present invention provides a multiprocessor computer system including a plurality of processors, each processor having an execution unit, a program counter, and an output value of an instruction executed by the execution unit. And an operation counter that includes an operation count that is at least incremented when an instruction that stores an output value in the result buffer is executed by the execution unit. The particular entry assigned in the result buffer for a given output value is selected as a function of the operation count when the instruction that produces that given output value is executed.
Each processor further includes a decoder that extracts a processor identifier from the executed instruction that identifies one of the plurality of processors, and one or more input values of the instruction are retrieved from a result buffer of the identified processor. Each decoder also extracts a quantile from the executed instruction. This quantile provides the relative difference between the current operation count of the executing processor and the expected operation count of the identified processor when the desired input value is stored in the identified processor's result buffer. The decoder generates an access key as a function of the quantile value and the current operation count of the processor executing the instruction, and the input value from an entry in the result buffer of the identified processor, indexed by the access key. Take out. The above and additional objects, features and advantages of the present invention will become apparent from the following detailed description.

【0010】[0010]

【発明の実施の形態】次々に出現する半導体技術は、増
加しつつある回路を単一チップ上にパッケージ化するこ
とを実現可能にする。複数の論理エンティティを異なる
チップの代わりに、同一チップ上に配置することによ
り、プロセッサ創案者はデータ帯域幅の多大な増加、並
びに待ち時間の減少を利用することができる。複雑なプ
ロセッサ全体を単一チップ上に配置することにより、プ
ロセッサ製造者は最新技術を多大に向上させた。密度が
増加すると、一層複雑な単一チップ・プロセッサを多大
なコストをかけ開発することが可能になるが、一方で性
能利得の低下を経験する。
DESCRIPTION OF THE PREFERRED EMBODIMENTS The emerging semiconductor technology makes it possible to package an increasing number of circuits on a single chip. By placing multiple logical entities on the same chip instead of different chips, processor creators can take advantage of a significant increase in data bandwidth as well as reduced latency. By placing the entire complex processor on a single chip, processor manufacturers have greatly improved the state of the art. As density increases, more complex single-chip processors can be developed at greater cost, while experiencing reduced performance gains.

【0011】しかしながら、高密度を別の様式で利用す
ることにより、複数の単純なプロセッサを単一チップ上
にパッケージ化することが可能になり、上述の第2のク
ラスのアルゴリズムに対するコスト有効な解決を提供す
ることができる。
However, by utilizing the high density in another manner, it is possible to package multiple simple processors on a single chip, a cost-effective solution to the second class of algorithms described above. Can be provided.

【0012】本発明は、複数の単純なプロセッサを単一
チップ上に配置することにより提供される、データ帯域
幅の多大な増加を利用する。それにより、レジスタ・フ
ァイルの高帯域幅及び低待ち時間を示すマルチプロセッ
サのデータ共用及び同期機構を提供するように、命令セ
ット・アーキテクチャを拡張する。本発明はその出発点
として、単純なプロセッサのマルチプロセッサ構成を採
用するので、実施例は第2のクラスのアルゴリズムを変
更無しに、コスト有効に実行する。
The present invention takes advantage of the significant increase in data bandwidth provided by placing multiple simple processors on a single chip. This extends the instruction set architecture to provide a multiprocessor data sharing and synchronization mechanism that exhibits high bandwidth and low latency register files. Since the present invention employs a simple processor multiprocessor configuration as a starting point, the embodiment can execute the second class of algorithms cost-effectively without modification.

【0013】しかしながら、本発明の実施例は、単一命
令ストリームにより通常記述され、高度なILPを示す
上述の第1のクラスのアルゴリズムも効率的に実行する
ことができる。これはアルゴリズムを複数のまたは分散
同時入用命令ストリームに再コンパイルすることにより
達成される。これらの命令ストリームは、上述の拡張を
介して互いに通信し、構成内の複数の単純なプロセッサ
上で同時に実行されるとき、アルゴリズムの高性能性を
提供する。単一の複雑なプロセッサの代わりに、本発明
を介して通信する複数の単純なプロセッサを使用するこ
とにより、好適な実施例において示されるように、類似
の性能が獲得される。
However, embodiments of the present invention, which are usually described by a single instruction stream and which exhibit high ILP, can also efficiently execute the first class of algorithms described above. This is accomplished by recompiling the algorithm into multiple or distributed concurrent instruction streams. These instruction streams communicate with each other via the extensions described above and provide the high performance of the algorithm when executed simultaneously on multiple simple processors in the configuration. Similar performance is obtained by using multiple simple processors communicating via the present invention instead of a single complex processor, as shown in the preferred embodiment.

【0014】或いは本発明の実施例は、既存の命令セッ
ト・アーキテクチャを拡張する代わりに、完全に新たな
命令セット・アーキテクチャを実現し得る。こうした実
施例は、ほとんどの命令セット・アーキテクチャ内で見
い出されるレジスタ・ファイルを増補ではなく、置換す
る本発明の機構を使用することにより、プロセッサ設計
の複雑性を一層低減し得る。
Alternatively, embodiments of the present invention may implement a completely new instruction set architecture instead of extending an existing instruction set architecture. Such an embodiment may further reduce the complexity of the processor design by using the mechanism of the present invention to replace, rather than augment, the register file found in most instruction set architectures.

【0015】図3を参照すると、本発明の好適な実施例
に従う集積化マルチプロセッサ・コンピュータ・システ
ムが示される。対称マルチプロセッサ(SMP)・シス
テムの各プロセッサ301、312、321はプログラ
ム・カウンタ303、実行ユニット304、レジスタ・
ファイル305、結果バッファ306、操作カウンタ3
07及び復号器308を含む。本発明のシステムは好適
には、単一チップ集積回路上で実現される。なぜなら、
要求される帯域幅がこうした設計を用いることにより、
より容易に獲得されるからである。システム・バス32
2はメモリ302及びプロセッサ301、312、32
1を相互接続する。各プロセッサ内における結果バッフ
ァ及び操作カウンタの追加は、マルチプロセッサ内での
データの処理を容易にする。これはプロセッサ301、
312、321が関連する命令を同時に処理するように
同期され、非常に高い帯域幅及び非常に低い待ち時間に
よりデータを共用することを可能にする機構の提供によ
り達成され、それにより同時入用命令ストリームを実行
する手段が提供される。このように、本発明のマルチプ
ロセッサ・システムは、既存のSMP作業負荷を再コン
パイルすること無く処理するSMPシステムとして、或
いは劇的に増加したプロセッサ間通信帯域幅を利用し、
あたかも複数プロセッサが単一の複雑なスーパースカラ
・プロセッサであるかのように、複数の同時入用命令ス
トリームに再コンパイルされる単一命令ストリームを処
理するILP処理システムとして作用することができ
る。
Referring to FIG. 3, there is shown an integrated multiprocessor computer system according to a preferred embodiment of the present invention. Each processor 301, 312, 321 of a symmetric multiprocessor (SMP) system has a program counter 303, an execution unit 304, a register
File 305, result buffer 306, operation counter 3
07 and a decoder 308. The system of the present invention is preferably implemented on a single chip integrated circuit. Because
By using such a design, the required bandwidth,
Because it is more easily obtained. System bus 32
2 is a memory 302 and processors 301, 312, and 32
1 are interconnected. The addition of result buffers and operation counters within each processor facilitates processing of data within a multiprocessor. This is processor 301,
Achieved by providing a mechanism that allows the 312, 321 to simultaneously process related instructions and share data with very high bandwidth and very low latency, thereby enabling simultaneous input instructions. Means are provided for executing the stream. Thus, the multiprocessor system of the present invention utilizes an existing SMP workload as a SMP system without recompiling or utilizing a dramatically increased interprocessor communication bandwidth,
It can act as an ILP processing system that processes a single instruction stream that is recompiled into multiple concurrent instruction streams, as if the multiple processors were a single, complex superscalar processor.

【0016】IPL処理システムとして作用するために
IPLを示す単一命令ストリームが、コンピュータのコ
ンパイラにより複数命令ストリームに区分化され、これ
らが後述の命令セット・アーキテクチャ拡張を介して通
信される。これらの複数のストリームは複数の単純なプ
ロセッサ301、312、321上のカーネルのディス
パッチャにより同時に実行されるとき、単一の複雑なス
ーパースカラ・プロセッサの性能に近い処理速度を獲得
する。図4に示されるように、復号器308により復号
され、本発明のマルチプロセッサ・システムにより使用
される命令が、出力403が実行中プロセッサの結果バ
ッファに記憶されるように指定し得る。それ以外に、出
力をプロセッサのレジスタ・ファイルまたはプログラム
・カウンタ、またはメモリに記憶する任意選択がある。
また、図4から分かるように、本発明により使用される
命令は、入力値402がリモート・プロセッサの結果バ
ッファからフェッチされるように指定し得る他に、メモ
リまたはプロセッサのレジスタ・ファイルから取り出す
任意選択がある。
A single instruction stream indicative of the IPL to act as an IPL processing system is partitioned by a computer compiler into multiple instruction streams, which are communicated via an instruction set architecture extension described below. These multiple streams, when executed concurrently by the dispatcher of the kernel on multiple simple processors 301, 312, 321, gain processing speeds approaching the performance of a single complex superscalar processor. As shown in FIG. 4, instructions decoded by decoder 308 and used by the multiprocessor system of the present invention may specify that output 403 be stored in the result buffer of the executing processor. Other options include storing the output in a processor register file or program counter or memory.
Also, as can be seen from FIG. 4, the instructions used by the present invention may specify that the input value 402 be fetched from the remote processor's result buffer, as well as any other fetches from memory or the processor register file. There is a choice.

【0017】操作カウンタ307は、実行ユニット30
4により実行される各命令または命令グループに対して
固有の数値カウント値を提供する操作カウントを含む。
操作カウンタ307は、特定の命令がそのプロセッサに
より実行されるとき、増分される。以下で詳述されるよ
うに、操作カウンタ307は結果バッファ306に出力
値を記憶する命令が実行ユニット304により実行され
るとき、少なくとも増分される。更にマルチプロセッサ
301、312及び321に渡り、操作カウンタ307
を同期する機構が提供される。以下で理解されるよう
に、特定の実施例に依存して、この同期は多くの方法で
実現され得る。例えば、好適な実施例では、マルチプロ
セッサ・システム内の特定のプロセッサ・セット内の全
ての操作カウンタを任意の値に割当てる(次に関連する
結果バッファをリセットする)命令の、命令セット・ア
ーキテクチャへの組み込みが様々なプロセッサの操作カ
ウントを同期する。別の実施例では、命令の実行に直接
相関付けられない特定の事象の発生時に、プロセッサ内
の機構がマルチプロセッサ内の特定のプロセッサ・セッ
ト内の全ての操作カウンタを任意の値に割当てる(次に
関連する結果バッファをリセットする)。こうして選択
された命令が実行ユニット304内で実行されるとき、
操作カウンタ307内に含まれる操作カウントが1増加
し、他のケースでは不変に維持される。好適な実施例に
おいて実現されるように、出力が結果バッファ306に
記憶されるように指定する各命令の実行に際して、操作
カウンタが1増加しなければならない。
The operation counter 307 includes the execution unit 30
4 includes an operation count that provides a unique numeric count value for each instruction or group of instructions executed.
Operation counter 307 is incremented when a particular instruction is executed by the processor. As will be described in detail below, the operation counter 307 is incremented at least when an instruction to store the output value in the result buffer 306 is executed by the execution unit 304. Further, the operation counter 307 is transmitted to the multiprocessors 301, 312 and 321.
Is provided. As will be appreciated, depending on the particular implementation, this synchronization can be achieved in many ways. For example, in the preferred embodiment, the instruction set architecture assigns all operation counters in a particular set of processors in a multiprocessor system to an arbitrary value (and then resets the associated result buffer). The built-in synchronizes the operation counts of the various processors. In another embodiment, upon occurrence of a particular event that is not directly correlated to the execution of an instruction, a mechanism within the processor assigns all operation counters within a particular set of processors within a multiprocessor to any value (next Resets the result buffer associated with.) When the selected instruction is executed in the execution unit 304,
The operation count contained in the operation counter 307 is incremented by 1 and remains unchanged in other cases. As implemented in the preferred embodiment, upon execution of each instruction that specifies that the output be stored in the result buffer 306, the operation counter must be incremented by one.

【0018】以下では、結果バッファのエントリ割当て
及び割当て解除を管理する2つの方法について述べる。
特定の実施例の要求に依存して、これらの方法のいずれ
かがその実施例にとって、より適していると思われる。
The following describes two methods for managing the result buffer entry allocation and deallocation.
Depending on the requirements of a particular embodiment, any of these methods may be more suitable for that embodiment.

【0019】図5、図6及び図7に示される第1の方法
(M1)は、"使用カウント"を採用する。結果バッファ
・エントリが割当てられる都度、エントリ内に配置され
る結果を生成する命令が使用カウントを指定する。この
使用カウントは、その特定の結果が1つ以上の続く命令
により参照される回数を示す。従って、結果が使用カウ
ントにより指定される回数だけ参照された後、その結果
はもはや必要とされず、結果バッファ・エントリが割当
て解除され得る。
The first method (M1) shown in FIGS. 5, 6 and 7 employs a "use count". Each time a result buffer entry is allocated, the instruction producing the result placed in the entry specifies the usage count. This usage count indicates the number of times that particular result is referenced by one or more subsequent instructions. Thus, after the result has been referenced the number of times specified by the usage count, the result is no longer needed and the result buffer entry may be deallocated.

【0020】図8、図9及び図10に示される第2の方
法(M2)は、システム内のプロセッサ間での操作カウ
ントの差を制限することにより、いずれのプロセッサも
別のプロセッサがまだ読出してない結果を上書きできな
いように保証する。例えば、各プロセッサがその結果バ
ッファ内に16エントリを有し、所与のプロセッサが可
能な最速レートでデータをその結果バッファに書込む場
合(すなわち1操作カウントにつき1結果)、そのプロ
セッサは結果を結果バッファに書込む都度、その操作カ
ウントが現操作カウントから16を減算した値に等しか
った時に、自身が生成した結果を上書きしていることに
なる。更にプロセッサ(A)が−1乃至−4の操作カウ
ント変位を用いて、別のプロセッサ(B)の結果バッフ
ァから結果を読出せる場合、そのプロセッサ(A)は他
のプロセッサ(B)から、プロセッサ(B)がプロセッ
サ(A)の現操作カウントから4を減算した値に等しい
操作カウントを有した時に生成された結果を読出すこと
ができる。従って、システム内の任意の2つのプロセッ
サの操作カウント間の差が11を越えることを阻止され
る場合、あるプロセッサがまだ別のプロセッサにより読
出されていない結果バッファ・エントリを上書きするこ
とは不可能である。
The second method (M2), shown in FIGS. 8, 9 and 10, is to limit the difference in operation counts between processors in the system so that either processor is still read by another processor. Ensure that unseen results cannot be overwritten. For example, if each processor has 16 entries in its result buffer and a given processor writes data to its result buffer at the fastest possible rate (ie, one result per operation count), then that processor will Each time the result buffer is written, when the operation count is equal to the value obtained by subtracting 16 from the current operation count, the result generated by itself is overwritten. Further, when the processor (A) can read the result from the result buffer of another processor (B) using the operation count displacement of -1 to -4, the processor (A) receives the result from the other processor (B). The result generated when (B) has an operation count equal to the processor (A) 's current operation count minus 4 can be read. Thus, if the difference between the operation counts of any two processors in the system is prevented from exceeding 11, it is impossible for one processor to overwrite a result buffer entry that has not yet been read by another processor. It is.

【0021】方法M1は、プロセッサの相対進歩におい
て、より大きな自由度を容易にするが、方法M2は、使
用カウントを事前に計算する必要性、並びに複数の条件
コード・パスに渡り、結果の参照を平衡させる必要性を
除去することにより、コンパイラのタスクを単純化す
る。
While method M1 facilitates greater freedom in the relative advancement of the processor, method M2 requires the need to pre-calculate usage counts, as well as referencing the results across multiple condition code paths. Simplifies the task of the compiler by eliminating the need to balance

【0022】図5を参照すると、本発明の好適な実施例
に従うローカル結果バッファ306の論理構成が示され
る。結果バッファは個別の数のエントリから成り、それ
らの各々は出力値を保持するために割当てられ、その値
がもはや不要となるとき、割当て解除される。割当てら
れるエントリ501は結果バッファ306の複数のエン
トリの1つであり、記憶済みの出力値502及び使用カ
ウント503を含む。所与の割当てられるエントリ50
1は、そのエントリが結果バッファに割当てられた時点
のプロセッサの現操作カウント504に一意的に関連付
けられる。後で理解されるように、この関連付けは多数
の方法により達成され得る。例えば直接マップ化構成の
場合のように、特定の操作カウントが特定のエントリに
一意的に関連付けられ、関連操作カウントが操作カウン
タ内に含まれるとき、出力値がそのエントリにだけ記憶
されることが好ましい。好適な実施例では、結果バッフ
ァ306が直接マップ化キャッシュとして機能し、結果
バッファ内の各エントリが特定の操作カウントに直接マ
ップされる。これはレジスタ・ファイルの半分を成す資
源を利用する。なぜなら後述のように、ILPモードで
実行しているとき、アドレス指定可能なレジスタの数が
半減されるからである。別の実施例では、結果バッファ
がアソシアティブ・メモリとして構成され得る。使用カ
ウント503(または参照カウント)は、関連出力値5
02が別の1つ以上のプロセッサ内で実行される他の命
令により指定される入力値として使用される回数(すな
わち、そのデータが他の命令内で参照される回数)を示
す。使用カウンタが0のとき、これは結果バッファ・エ
ントリに記憶される値がもはや必要とされない、従っ
て、エントリが将来割当てられるように解放されている
ことを示す。
Referring to FIG. 5, there is shown a logical configuration of the local result buffer 306 according to a preferred embodiment of the present invention. The result buffer consists of a distinct number of entries, each of which is allocated to hold an output value and deallocated when that value is no longer needed. The entry 501 to be assigned is one of a plurality of entries in the result buffer 306, and includes the stored output value 502 and the usage count 503. Given entry 50
A 1 is uniquely associated with the processor's current operation count 504 at the time the entry was assigned to the result buffer. As will be appreciated, this association can be achieved in a number of ways. When a particular operation count is uniquely associated with a particular entry and the associated operation count is included in the operation counter, such as in a direct mapped configuration, the output value may be stored only in that entry. preferable. In the preferred embodiment, the result buffer 306 functions as a direct mapped cache, with each entry in the result buffer mapped directly to a particular operation count. It uses resources that make up half of the register file. This is because the number of addressable registers is halved when executing in ILP mode, as described below. In another embodiment, the result buffer may be configured as associative memory. Usage count 503 (or reference count) is associated output value 5
02 indicates the number of times used as an input value specified by another instruction executed in another one or more processors (that is, the number of times the data is referred to in another instruction). When the usage counter is 0, this indicates that the value stored in the result buffer entry is no longer needed, and thus the entry is free for future assignment.

【0023】図6を参照すると、本発明のマルチプロセ
ッサにおいて、命令がその出力403がローカル結果バ
ッファ306に記憶されるように指定するとき、データ
を処理する方法のフロー図を示す。プロセスはステップ
600で開始し、次にステップ601に移行し、マルチ
プロセッサのプロセッサ内で命令を復号し実行する。実
行される命令が出力値及びその値の使用カウントを生成
し、命令を実行しているプロセッサの操作カウンタを増
分する。ステップ602で、命令を実行しているプロセ
ッサは、その結果バッファ内のエントリを出力値を記憶
するために割当てようとする。割当てられたエントリは
操作カウンタに記憶されるプロセッサの操作カウントの
現行値に関連付けられねばならない。このことは、適切
な操作カウントを再生し、その操作カウントを結果バッ
ファを指標付けするキーとして使用することにより、結
果バッファ内のエントリをアクセスする将来の操作を可
能にする。割当ての試行が失敗すると、次にステップ6
03でプロセッサが機能停止し、それが成功するまでス
テップ602で再試行する。割当ての試行が成功する
と、次にステップ604で、ステップ601で生成され
た出力値及び使用カウントがメモリに記憶される。プロ
セスはステップ605で終了する。
Referring to FIG. 6, there is shown a flow diagram of a method for processing data when an instruction specifies that its output 403 be stored in local result buffer 306 in a multiprocessor of the present invention. The process begins at step 600 and then moves to step 601 where the instructions are decoded and executed within a multi-processor processor. The executed instruction generates an output value and a usage count of that value, and increments an operation counter of the processor executing the instruction. At step 602, the processor executing the instruction attempts to allocate an entry in the resulting buffer to store the output value. The assigned entry must be associated with the current value of the processor's operation count stored in the operation counter. This allows future operations to access entries in the result buffer by regenerating the appropriate operation count and using that operation count as a key to index the result buffer. If the allocation attempt fails, then step 6
The processor stalls at 03 and retries at step 602 until it succeeds. If the allocation attempt is successful, then at step 604, the output value and usage count generated at step 601 are stored in memory. The process ends at step 605.

【0024】図7を参照すると、本発明のマルチプロセ
ッサ・システムにおいて、命令がその入力402がリモ
ート・プロセッサの結果バッファ306内のエントリか
らフェッチされるように指定するとき、データを処理す
るプロセスのフロー図が示される。実際、本発明で使用
される用語"リモート・プロセッサ"は、命令を実行して
いるプロセッサ以外のプロセッサ、または命令を実行し
ているプロセッサのいずれかを指し示す。プロセスはス
テップ700で開始し、ステップ701に移行し、そこ
でプロセッサが命令を復号し、入力フィールド402か
らプロセッサ識別子(PID)及び変位値を抽出する。
ステップ702で変位値がプロセッサの操作カウントと
結合され、アクセス・キーが形成される。ステップ70
3で、ステップ701でプロセッサIDにより示された
リモート・プロセッサの操作カウントが決定される。ス
テップ704で、ステップ702で形成されたアクセス
・キーがステップ703で決定されたリモート操作カウ
ントと比較される。アクセス・キーがリモート操作カウ
ントよりも大きい場合、ステップ705で、プロセッサ
が機能停止し、アクセス・キーがリモート操作カウント
以下になるまで、ステップ703及び704を再試行す
る。アクセス・キーがリモート操作カウント以下の場
合、ステップ706で、ステップ702で形成されたア
クセス・キーを用いて、プロセッサIDにより示される
リモート・プロセッサの結果バッファから選択エントリ
をアクセスする。
Referring to FIG. 7, in the multiprocessor system of the present invention, when an instruction specifies that its input 402 be fetched from an entry in the remote processor's result buffer 306, the process of processing the data. A flow diagram is shown. In fact, the term "remote processor" as used in the present invention refers to either a processor other than the processor executing the instructions, or a processor executing the instructions. The process begins at step 700 and proceeds to step 701, where the processor decodes the instruction and extracts a processor identifier (PID) and a quantile from the input field 402.
In step 702, the quantile is combined with the operation count of the processor to form an access key. Step 70
At 3, the operation count of the remote processor indicated by the processor ID in step 701 is determined. At step 704, the access key formed at step 702 is compared with the remote operation count determined at step 703. If the access key is greater than the remote operation count, at step 705, the processor stalls and retries steps 703 and 704 until the access key is below the remote operation count. If the access key is less than or equal to the remote operation count, then at step 706, the selected entry is accessed from the remote processor result buffer indicated by the processor ID using the access key formed at step 702.

【0025】従って、変位値は現命令が実行される間の
操作カウントと、リモート・プロセッサから取り出され
る入力値が生成され、リモート・プロセッサの結果バッ
ファ内に割当てられる間の操作カウントとの相対差であ
る。アクセス・キーは、リモート入力値が生成される間
の実際の操作カウントの値を与えるために計算される。
リモート操作カウントがアクセス・キー以上になったと
判断されるまで(ステップ704)、プロセスを機能停
止することにより(ステップ705)、リモート・プロ
セッサの結果バッファから取り出される結果が、所望の
結果が生成される以前ではなく、生成された後に取り出
されることを保証する。このように、本発明のプロセッ
サは、正しい結果がリモート結果バッファに記憶される
以前に、その結果バッファから入力値を早まって取り出
すことを阻止する。更にマルチプロセッサ・システムの
操作カウンタが同期されるので、アクセス・キーはリモ
ート結果が生成されると期待される操作カウントを提供
するだけでなく、それらの結果を記憶するために割当て
られるリモート結果バッファ内のエントリを指し示す指
標も提供する。これはリモート・プロセッサが、図6の
プロセス・フローで述べられるように動作し、そのプロ
セッサの現操作カウントに関連して、出力値のエントリ
を割当てることによる。結果的にアクセス・キーにより
指標付けられ、リモート結果バッファ内でアクセスされ
るエントリはプロセスにより正しい出力値がそのエント
リからフェッチされることを可能にする(ステップ70
7)。
Thus, the displacement value is the relative difference between the operation count during the execution of the current instruction and the operation count during which the input value retrieved from the remote processor is generated and assigned in the remote processor's result buffer. It is. The access key is calculated to give the value of the actual operation count during the generation of the remote input value.
By stopping the process (step 705) until the remote operation count is determined to be greater than or equal to the access key (step 705), the result retrieved from the remote processor's result buffer produces the desired result. Ensure that it is retrieved after it has been created, not before. Thus, the processor of the present invention prevents premature retrieval of input values from a remote result buffer before the correct result is stored in that buffer. In addition, since the operation counters of the multiprocessor system are synchronized, the access keys not only provide the operation counts at which remote results are expected to be generated, but also a remote result buffer allocated to store those results. It also provides an index pointing to the entry in. This is because the remote processor operates as described in the process flow of FIG. 6 and assigns an output value entry in relation to the processor's current operation count. The entry, indexed by the access key and accessed in the remote result buffer, allows the correct output value to be fetched from that entry by the process (step 70).
7).

【0026】ステップ708では、リモート結果バッフ
ァ内のアクセスされたエントリに関連付けられる使用
(参照)カウントが減分される。ステップ709では、
減分された使用カウントが0に減少すると、ステップ7
10で、リモート結果バッファ内のエントリが結果バッ
ファから割当て解除され、将来の割当てにより再利用さ
れ得る。いずれの場合にも、リモート結果を入力値とし
て要求する直接プロセッサ内の命令が、ステップ707
から入力として取り出された出力値を用いて、ステップ
711で実行される。その後、プロセスはステップ71
2で終了する。
At step 708, the use (reference) count associated with the accessed entry in the remote result buffer is decremented. In step 709,
When the decremented use count decreases to 0, step 7
At 10, the entry in the remote result buffer is deallocated from the result buffer and may be reused by future allocations. In either case, the instruction in the direct processor requesting the remote result as an input value is
Is executed in step 711 by using the output value extracted as an input from. Thereafter, the process proceeds to step 71.
End with 2.

【0027】図8、図9及び図10は、結果バッファ・
エントリ割当て及び割当て解除を管理する第2の方法
(M2)を示す点で、図5、図6及び図7と異なる。こ
の方法は、使用カウントが各結果バッファ・エントリに
関連付けられることを要求しない。ほとんどの点で、図
8、図9及び図10は、図5、図6及び図7と同じ振舞
いを示し、図8、図9及び図10で使用される参照番号
の番号付けは、図5、図6及び図7で使用される番号付
けに対応する。これらの図の全てに関して述べることは
冗長であるので、図8、図9及び図10と、対応する図
5、図6及び図7との間の違いだけについて以下では述
べることにする。従って、以下で述べられない全ての部
分は、図5、図6及び図7の対応要素と同一であると想
定されるべきである。
FIG. 8, FIG. 9 and FIG.
5, 6 and 7 in that a second method (M2) for managing entry allocation and deallocation is shown. This method does not require a usage count to be associated with each result buffer entry. In most respects, FIGS. 8, 9 and 10 show the same behavior as FIGS. 5, 6 and 7, and the numbering of the reference numbers used in FIGS. , And correspond to the numbering used in FIGS. Since the description of all of these figures is redundant, only the differences between FIGS. 8, 9 and 10 and the corresponding FIGS. 5, 6 and 7 will be described below. Therefore, all parts not described below should be assumed to be the same as corresponding elements in FIGS. 5, 6 and 7.

【0028】図8を参照すると、方法M2は結果バッフ
ァ・エントリが使用カウントを含まない点で、方法M1
と異なる。方法M2では、結果バッファに書込まれる結
果を生成する命令が使用カウントを指定しない。従っ
て、使用カウントが結果バッファ・エントリに書込まれ
ず、結果バッファ・エントリは使用カウントを保持する
機構を含まない。
Referring to FIG. 8, method M2 differs from method M1 in that the result buffer entry does not include a usage count.
And different. In method M2, the instruction that produces the result written to the result buffer does not specify a use count. Thus, the usage count is not written to the result buffer entry, and the result buffer entry does not include a mechanism to keep the usage count.

【0029】図9を参照すると、方法M2は方法M1と
次のように異なる。ステップ901で、命令はステップ
601の場合のように使用カウントを生成しない。ステ
ップ902では、現プロセッサの操作カウントが他のプ
ロセッサの操作カウントと比較される。ここでOCDを
現プロセッサの操作カウントと、最低の操作カウントを
有するプロセッサの操作カウントとの差としよう。また
Dを、図7のステップ702でキーを生成するとき使用
され得る最大の変位絶対値としよう。例えば、変位フィ
ールドが−1乃至−4の範囲の場合、Dは4である。R
Eを各プロセッサの結果バッファ内で見い出されるエン
トリの数としよう。OCD、D及びREの値が与えられ
ると、ステップ902は次のように振る舞う。すなわ
ち、OCDとDとの和がREより小さい場合、エントリ
が割当てられ、制御がステップ904に移行する。それ
以外ではエントリは割当てられず、制御はステップ90
3に移行する。ステップ904では、ステップ604の
場合と異なり、使用カウントが新たに割当てられた結果
バッファ・エントリに記憶されない。
Referring to FIG. 9, method M2 differs from method M1 as follows. At step 901, the instruction does not generate a usage count as in step 601. In step 902, the operation count of the current processor is compared with the operation counts of other processors. Let OCD be the difference between the operation count of the current processor and the operation count of the processor with the lowest operation count. Let D be the largest absolute displacement that can be used when generating the key in step 702 of FIG. For example, if the displacement field ranges from -1 to -4, D is 4. R
Let E be the number of entries found in each processor's result buffer. Given the values of OCD, D, and RE, step 902 behaves as follows. That is, if the sum of OCD and D is less than RE, an entry is allocated and control transfers to step 904. Otherwise, no entry is assigned and control returns to step 90
Move to 3. At step 904, unlike step 604, the usage count is not stored in the newly allocated result buffer entry.

【0030】図10を参照すると、方法M2は、図7の
ステップ708、709及び710で実行された使用カ
ウントの操作、及び結果バッファ・エントリの割当て解
除が実行されない点で方法M1と異なる。逆に、方法M
2では、図10に示されるように、制御がステップ10
07からステップ1011に直接移行する。これは、方
法M2では、結果バッファ・エントリから値を読出す命
令が、そのエントリの割当て解除に積極的に参加しない
事実による。逆にエントリは、その関連操作カウント
が、図7のステップ702で示されるようにキーを形成
する、任意のプロセッサにより生成され得る操作カウン
トの範囲外になると、暗黙的に割当て解除される。
Referring to FIG. 10, method M2 differs from method M1 in that the manipulation of the usage count and the deallocation of the result buffer entry performed in steps 708, 709 and 710 of FIG. 7 are not performed. Conversely, Method M
In step 2, as shown in FIG.
The process directly proceeds from step 07 to step 1011. This is due to the fact that in method M2, instructions that read values from a result buffer entry do not actively participate in deallocation of that entry. Conversely, an entry is implicitly deallocated when its associated operation count falls outside the range of operation counts that can be generated by any processor that forms the key as shown in step 702 of FIG.

【0031】命令セット・アーキテクチャの例:本発明
を説明するために、本発明において機能するコンピュー
タ命令セット・アーキテクチャの例について述べること
にする。最初に、従来技術を示す仮のコンピュータ命令
セット・アーキテクチャ(A)について述べる。次に、
プログラム・フラグメントの例が、従来の仮アーキテク
チャ(A)に対して符号化され、そのプログラム・フラ
グメントが、多数の通常のコンピュータ上で実行される
様子が述べられる。次に、仮アーキテクチャが、本発明
の好適な実施例のマルチプロセッサ・システムにおいて
機能するように拡張される(A')。次に、プログラム
・フラグメントの例が、本発明の好適な実施例の拡張コ
ンピュータ命令セット・アーキテクチャ(A')におい
て、再符号化される様子が示され、また本発明に従い、
再符号化されたプログラム・フラグメントが、マルチプ
ロセッサ・コンピュータ・システムの一例上において実
行される様子が述べられる。
Example Instruction Set Architecture: To illustrate the present invention, an example of a computer instruction set architecture that functions in the present invention will be described. First, a temporary computer instruction set architecture (A) showing the prior art will be described. next,
An example of a program fragment is coded for a conventional tentative architecture (A), describing how the program fragment is executed on a number of conventional computers. Next, the provisional architecture is extended (A ') to function in the multiprocessor system of the preferred embodiment of the present invention. Next, an example of a program fragment is shown to be re-encoded in the extended computer instruction set architecture (A ') of the preferred embodiment of the present invention, and in accordance with the present invention,
It is described that the re-encoded program fragment is executed on an example of a multiprocessor computer system.

【0032】仮コンピュータ命令セット・アーキテクチ
ャ(A)が、記憶済みプログラム・マシンであり、アド
レス指定可能なメモリ(M)と、データ値を保持するた
めに使用される32個の高速バッファ、すなわち汎用レ
ジスタ(R)のセットと、条件コードを保持するために
使用される8個の高速バッファ(CR)のセットと、次
に実行される命令(I)のメモリ・アドレス(M内)を
含むプログラム・カウンタ(PC)とを有するものとす
る。命令(I)のタイプが、次のように幾つかのクラス
に分類される。 1.ALU(算術論理演算)命令。この命令の符号化
は、演算コード(例えば加算、減算、乗算など)と、2
つの入力レジスタ名(すなわち、演算の入力として作用
するデータ値が取り出される32個の汎用レジスタの2
つを示す、2つの5ビット値)と、1つの出力レジスタ
名(演算により生成されたデータ値が配置されるレジス
タを示す)とを含む。 2.ALU/即値命令。これは入力レジスタ名の1つ
が、命令内に直接符号化される即値データ値により置換
される以外は、ALU命令と同じである。 3.ロード命令。この命令の符号化は、演算コードと、
変位値と、1つの入力レジスタ名(指名される入力レジ
スタ内の変位及びデータ値が一緒に追加され、データ値
が取り出されるメモリ位置の名前を指定する)と、1つ
の出力レジスタ名(メモリから取り出された値が配置さ
れるレジスタを示す)とを含む。 4.ストア命令。この命令の符号化は、演算コードと、
変位値と、1つの入力レジスタ名(指名される入力レジ
スタ内の変位及びデータ値が一緒に追加され、データ値
が配置されるメモリ位置の名前を指定する)と、別の入
力レジスタ名(メモリに配置されるデータ値が取り出さ
れるレジスタを示す)とを含む。 5.テスト命令。この命令の符号化は、論理テストを指
定する演算コードと、そのデータ値が比較されるレジス
タを示す2つの入力レジスタ名と、1つの出力条件コー
ド・レジスタ(CR)名(8つの条件コード・スロット
のいずれが、テストの結果を示すためにセットされるか
を示す)とを含む。 6.テスト/即値命令。これは入力レジスタ名の1つ
が、命令内に直接符号化される即値データ値により置換
される以外は、テスト命令と同じである。 7.フロー制御命令。この命令の符号化は、PCがメモ
リ内の新たな位置を指し示すようにセットされるための
基準を指定する演算コードと、前記基準に従う値を含む
入力条件コード・レジスタ名と、前記基準が満足される
場合に、次の命令がフェッチされるメモリ内の新たな位
置の指定とを含む。
The provisional computer instruction set architecture (A) is a stored program machine that has addressable memory (M) and 32 high-speed buffers used to hold data values, ie, general purpose A program including a set of registers (R), a set of eight high-speed buffers (CR) used to hold condition codes, and a memory address (in M) of an instruction (I) to be executed next・ It has a counter (PC). Instruction (I) types fall into several classes as follows. 1. ALU (arithmetic logic operation) instruction. This instruction is encoded by using an operation code (for example, addition, subtraction, multiplication, etc.) and 2
One input register name (i.e., 2 of 32 general purpose registers from which data values serving as inputs to the operation are taken)
Two 5-bit values), and one output register name (indicating a register in which the data value generated by the operation is located). 2. ALU / immediate instruction. This is the same as the ALU instruction, except that one of the input register names is replaced by an immediate data value encoded directly in the instruction. 3. Load instruction. The encoding of this instruction consists of an operation code,
The displacement value, one input register name (the displacement and data value in the nominated input register are added together to specify the name of the memory location from which the data value is to be retrieved), and one output register name (from memory Indicates the register where the fetched value is located). 4. Store instruction. The encoding of this instruction consists of an operation code,
The displacement value, one input register name (the displacement and data value in the nominated input register are added together to specify the name of the memory location where the data value is located) and another input register name (memory Indicates the register from which the data value located is located. 5. Test instruction. The encoding of this instruction consists of an operation code specifying a logical test, two input register names indicating registers whose data values are compared, and one output condition code register (CR) name (eight condition codes. Which of the slots is set to indicate the result of the test). 6. Test / immediate instructions. This is the same as the test instruction, except that one of the input register names is replaced by an immediate data value encoded directly in the instruction. 7. Flow control instructions. The encoding of this instruction comprises an opcode specifying a criterion for the PC to be set to point to a new location in memory, an input condition code register name containing a value according to the criterion, and If so, specifying the new location in memory where the next instruction will be fetched.

【0033】次に示すものは、仮コンピュータ命令セッ
ト・アーキテクチャ(A)に対して作成されたプログラ
ム・フラグメントを定義する。アセンブラ・ニーモニッ
クス及び擬似コードの混在が、アルゴリズムの振舞い、
及び機械語命令によるアルゴリズムの実現の両方を示す
ために使用される。これらは当業者には容易に理解され
よう。所与の命令に関連付けられるIDは、後にその特
定の命令を簡潔に参照するために使用される。
The following defines a program fragment created for the Temporary Computer Instruction Set Architecture (A). The mixture of assembler mnemonics and pseudo-code is the behavior of the algorithm,
And machine language instructions to implement the algorithm. These will be readily understood by those skilled in the art. The ID associated with a given instruction is used later to briefly refer to that particular instruction.

【表1】 O034】実行タイミング:キャッシュ・ミス、分岐予
測及び投機実行などの要因により、命令実行タイミング
に導入される複雑性により、ここでの例で示されるタイ
ミングは、次の単純化した仮定を想定する。すなわち、
a)全てのロード、ストア及び命令フェッチがキャッシ
ュ内でヒットし、従って機能停止サイクルを生じない。
b)実行が進行する以前にフロー制御依存性が解決され
るはずであり、それにより通常分岐予測及び投機実行に
関わる要因を除去する。しかしながら、これら全ての要
因の影響は、(A)及び(A')のタイミングが比較さ
れるときに議論される。無条件分岐(I24)はフォー
ルド(fold)され、何も罰則を招かず、また依存性を課
さない。プログラム・フラグメントにとって、複数の可
能な実行パスが存在する事実により、ここではその1つ
だけが示され、メイン・ループ(I11乃至I30)が
2度繰り返し、第1の繰返しの間には(I20)に対す
る分岐パスに従い、第2の繰返しの間には(I20)に
対する非分岐パスに従う。
[Table 1] O. Execution Timing: Due to the complexity introduced into instruction execution timing due to factors such as cache misses, branch prediction and speculative execution, the timing shown in the example here assumes the following simplified assumption. That is,
a) All loads, stores and instruction fetches will hit in the cache, thus not causing stall cycles.
b) Flow control dependencies should be resolved before execution proceeds, thereby eliminating factors normally associated with branch prediction and speculative execution. However, the effects of all these factors are discussed when the timings of (A) and (A ') are compared. The unconditional branch (I24) is folded, causing no penalty and imposing no dependencies. Due to the fact that there are multiple possible execution paths for a program fragment, only one is shown here, the main loop (I11 to I30) repeats twice, and during the first iteration (I20 ) Following the non-branching path to (I20) during the second iteration.

【0035】プログラム・フラグメント例の実行タイミ
ングについて、コンピュータ命令セット・アーキテクチ
ャ(A)を実現する2つの従来のコンピュータ構成に関
連して述べることにする。一方の構造は"シンプル"と呼
ばれ、1つの実行ユニットを有し、1サイクルにつき1
命令を実行可能で、命令をそれらがメモリからフェッチ
される順に実行しなければならない。他方は"コンプレ
ックス"と呼ばれ、複数の実行ユニットを有し、1サイ
クルにつき(例えば)4つの命令を任意の順に実行可能
であって、所与のサイクルの間に実行するために、命令
の全てのデータ及びフロー制御依存性が、前のサイクル
中にまたはそれ以前に満足されなければならない制限だ
けに従う。
The execution timing of the example program fragment will be described in connection with two conventional computer configurations that implement the computer instruction set architecture (A). One structure is called "simple" and has one execution unit and one per cycle.
The instructions must be executable and the instructions must be executed in the order in which they are fetched from memory. The other, called the "complex", has multiple execution units, can execute four instructions per cycle (for example) in any order, and can execute instructions during a given cycle in order to execute them. All data and flow control dependencies obey only the restrictions that must be satisfied during or prior to the previous cycle.

【表2】 [Table 2]

【0036】[0036]

【表3】 [Table 3]

【0037】この例では、(A)のシンプル技法が、プ
ログラム・フラグメントを実行するために44サイクル
を要するのに対してコンプレックス技法は20サイクル
しか要さない。従って、このコード・フラグメントによ
り表されるものと類似のILP振舞いを示すアルゴリズ
ムを実行する上で、コンプレックス・マシンを構成する
ことにより性能的な利点がもたらされる。有限な記憶効
果が考慮されるとき、この利点は幾分は減少するが、業
界の傾向としては、コンピュータ製造者がコンプレック
ス・プロセッサの開発に関わる大きなリスク及び支出を
正当化している。次のセクションでは、本発明がシンプ
ル・マシンの低い設計コスト及び複雑性を享受しなが
ら、如何にコンプレックス・マシンの性能利点の幾つか
を提供するかを示すことにする。
In this example, the simple technique of (A) requires 44 cycles to execute a program fragment, while the complex technique requires only 20 cycles. Thus, configuring a complex machine provides a performance advantage in executing an algorithm that exhibits ILP behavior similar to that represented by this code fragment. This advantage is somewhat reduced when finite memory effects are considered, but the trend in the industry is for computer manufacturers to justify the large risks and expenditures involved in developing complex processors. In the next section, we will show how the present invention provides some of the performance benefits of a complex machine while enjoying the low design cost and complexity of a simple machine.

【0038】本発明は新たな命令セット・アーキテクチ
ャとして、または既存の命令セット・アーキテクチャの
拡張として実現される。前者は多大に単純化された基本
マシン構成を有する適用範囲の広い機能を提供し、後者
は前記アーキテクチャのSMP構成内の複数プロセッサ
が、単一スレッド問題をより迅速に解決するように協働
することを可能にする。本発明では後者について述べ、
仮のコンピュータ命令セット・アーキテクチャ(A)に
本発明の機構を組み込むことにより、アーキテクチャ
(A')を生成する。また、結果バッファ管理方法M1
により課せられる追加のプログラミング要求について詳
述するために、好適な実施例は方法M1を組み込む。
The present invention can be implemented as a new instruction set architecture or as an extension of an existing instruction set architecture. The former provides flexible functionality with a greatly simplified basic machine configuration, while the latter cooperates with multiple processors in the SMP configuration of the architecture to solve single-thread problems more quickly. Make it possible. The present invention describes the latter,
The architecture (A ') is generated by incorporating the features of the present invention into the hypothetical computer instruction set architecture (A). Also, the result buffer management method M1
The preferred embodiment incorporates method M1 to elaborate on the additional programming requirements imposed by.

【0039】図4に示されるように、命令の出力がプロ
セッサの結果バッファに経路指定され得るように、また
命令の入力がその命令が実行されているプロセッサの結
果バッファから、またはリモート・プロセッサの結果バ
ッファから経路指定され得るように命令符号化が拡張さ
れる。本実施例は(5ビット・ネーム)を介して、レジ
スタを入力または出力としてアドレス指定する命令が、
1)16個の汎用レジスタの1つまたは、2)結果バッ
ファのいずれかを入力または出力として指定するように
命令セットを拡張する。本発明は1操作カウントにつ
き、従ってこの場合1命令につき、1出力だけが結果バ
ッファに書込まれるようにする手段を提供する点にも注
目されたい。上述のように、結果バッファ内のエントリ
は、そのエントリに対するデータが結果バッファに記憶
されるとき、プロセッサの操作カウントに論理的に関連
付けられる。好適な実施例では、16個の結果バッファ
・エントリが存在し、これらがラウンドロビン式に16
個の操作カウントに関連付けられる。従って、次の操作
カウントが発生するとき、結果データが結果バッファの
第1のエントリに記憶される(以前のデータの使用カウ
ントが0に達したと仮定する)。インデックス・レジス
タを自動的に更新するLOAD命令など、2つ以上の汎
用レジスタを変更する命令は、1出力だけを結果バッフ
ァに書込み得る。好適な実施例の入出力操作の符号化を
以下に示す。
As shown in FIG. 4, the output of an instruction can be routed to the result buffer of the processor, and the input of the instruction can be from the result buffer of the processor in which the instruction is being executed, or of the remote processor. Instruction encoding is extended so that it can be routed from the result buffer. This embodiment uses (5-bit name) instructions to address registers as inputs or outputs,
The instruction set is extended to specify either 1) one of the 16 general purpose registers or 2) one of the result buffers as input or output. It should also be noted that the present invention provides a means to ensure that only one output is written to the result buffer per operation count, and thus in this case per instruction. As described above, an entry in the result buffer is logically associated with the processor's operation count when data for that entry is stored in the result buffer. In the preferred embodiment, there are 16 result buffer entries, which are round robin 16
Associated with the operation count. Thus, when the next operation count occurs, the result data is stored in the first entry of the result buffer (assuming the previous data usage count has reached zero). Instructions that modify more than one general purpose register, such as a LOAD instruction that automatically updates the index register, may write only one output to the result buffer. The encoding of the input / output operations of the preferred embodiment is shown below.

【表4】 (A)における5ビット操作入出力符号化: Input:'RRRRR':RRRRRを介して32個のレジスタの1つを指定。 Output:'RRRRR':RRRRRを介して32個のレジスタの1つを指定。 (A')における5ビット操作入出力符号化: Input:'0RRRR':RRRRを介して16個のレジスタの1つを指定。 '1PPDD':PPを介して4個のプロセッサの1つ内の結果バッファを指定。 DDを介して操作カウント変位(−4乃至−1)を指定。 Output:'0RRRR':RRRRを介して、16個のレジスタの1つを指定。 '1CCCC':ローカル・プロセッサの結果バッファを指定。 CCCCを介して結果の使用カウント(0乃至15)を指定。[Table 4] 5-bit operation input / output encoding in (A): Input: 'RRRRR': Designates one of 32 registers via RRRRR. Output: 'RRRRR': One of 32 registers is specified via RRRRR. 5-bit operation input / output encoding in (A '): Input:' 0RRRR ': One of 16 registers is specified via RRRR. '1PPDD': Specifies the result buffer in one of the four processors via PP. Specify operation count displacement (-4 to -1) via DD. Output: '0RRRR': One of 16 registers is specified via RRRR. '1CCCC': Specifies the local processor result buffer. Specify the result usage count (0 to 15) via CCCC.

【0040】これは既存の設計のプロセッサにとって使
用可能な汎用レジスタの数を効果的に半減するが、本発
明はプロセッサが、従来ローカル・レジスタ・ファイル
と対話するときだけ享受されたのと同様の高帯域幅によ
り、バッファ方式で互いに通信する能力を提供する。或
いは、本発明の機能は、結果バッファ・レジスタをプロ
セッサ設計に追加することにより、実現され得る。
Although this effectively halves the number of general purpose registers available to processors of existing designs, the present invention is similar to processors that have traditionally been enjoyed only when interacting with a local register file. The high bandwidth provides the ability to communicate with each other in a buffered manner. Alternatively, the functionality of the present invention may be implemented by adding a result buffer register to the processor design.

【0041】単純化のために、この例での仮マシンはほ
とんどのマシンの場合のように、浮動小数点レジスタの
ファイルを提供しないものとする。しかしながら、汎用
レジスタ符号化を汎用結果バッファとして使用する同一
の技術が、浮動小数点レジスタ符号化及び浮動小数点結
果バッファにも適用可能であることが明らかである。同
様に、ここで述べられる仮マシンは、テスト命令結果が
8個の条件コード・レジスタの1つに仕向けられ、フロ
ー制御命令がこれらのレジスタから入力を読出すことを
指定する。汎用レジスタ符号化が本発明により拡張され
るように、条件コード・レジスタ符号化も同様に拡張さ
れ得る。
For simplicity, it is assumed that the temporary machine in this example does not provide a file of floating point registers as in most machines. However, it is clear that the same technique of using general-purpose register encoding as a general-purpose result buffer is also applicable to floating-point register encoding and floating-point result buffers. Similarly, the hypothetical machine described herein specifies that the test instruction results be directed to one of eight condition code registers, and that the flow control instructions read input from these registers. As general register encoding is extended by the present invention, condition code register encoding can be extended as well.

【表5】 (A)における3ビット操作入出力符号化: Input:'RRR':RRRを介して8個のCRの1つを指定。 Output:'RRR':RRRを介して8個のCRの1つを指定。 (A')における3ビット操作入出力符号化: Input:'0RR':RRを介して4個のCRの1つを指定。 '1PP':PPを介して4個のプロセッサの1つ内の結果バッファを指定。 操作カウント変位−1を指定。 Output:'0RR':RRを介して4個のCRの1つを指定。 '1CC':ローカル・プロセッサの結果バッファを指定。 CCを介して結果の使用カウント(0乃至3)を指定。[Table 5] 3-bit operation input / output encoding in (A): Input: 'RRR': One of eight CRs is specified via RRR. Output: 'RRR': One of the eight CRs is specified via RRR. 3-bit operation input / output encoding in (A '): Input:' 0RR ': Designates one of four CRs via RR. '1PP': Specify the result buffer in one of the four processors via PP. Specify operation count displacement -1. Output: '0RR': One of the four CRs is specified via RR. '1CC': Specifies the result buffer of the local processor. Specify the result usage count (0 to 3) via CC.

【0042】プロセッサ・フィールド(この実施例では
4つのプロセッサの1つを選択する)は、実際には本発
明により相互接続されるプロセッサの総数を制限しな
い。逆に、これは単一プロセッサが、その近隣の4つ
(その1つはプロセッサ自身であり得る)とだけ直接対
話できるように制限する。実施例の変更により、特定の
ニーズに適するプロセッサ間接続トポロジを実現するこ
とが可能である。本発明をより効果的に教示するため
に、本実施例は単純なトポロジを採用する。本発明は無
制限の数のプロセッサの使用を阻むものではないが、単
純化のために本実施例では、コンパイラが所与のプログ
ラムを4つの仮想プロセッサに分散するように制限す
る。これは各仮想プロセッサを4つの物理プロセッサの
1つに直接マップすることによる。従って、上述の2ビ
ット(PP)が、SMP内の4つの物理プロセッサの1つ
を指名する手段を提供する(実際、本発明は共用メモリ
を要求せず、専用メモリを保有するプロセッサを有する
一部のアプリケーションにおいて、使用され得る)。
The processor field (which selects one of the four processors in this embodiment) does not actually limit the total number of processors interconnected according to the present invention. Conversely, this limits a single processor to only be able to interact directly with its neighbors (one of which may be the processor itself). By changing the embodiment, it is possible to realize an inter-processor connection topology suitable for specific needs. In order to more effectively teach the present invention, this embodiment employs a simple topology. Although the present invention does not preclude the use of an unlimited number of processors, for simplicity, the present embodiment restricts the compiler to distribute a given program to four virtual processors. This is by mapping each virtual processor directly to one of the four physical processors. Thus, the two bits (PP) described above provide a means to nominate one of the four physical processors in the SMP (in fact, the present invention does not require shared memory and has a processor with dedicated memory). May be used in some applications).

【0043】ここで示される当の符号化は極めて任意で
あり、本発明をより理解するための実例として提供され
るだけである。従って、この例の符号化及びアーキテク
チャは、本発明の範囲を制限するものではなく、単に説
明の目的のために提供されるだけである。
The encodings shown here are very arbitrary and are only provided as examples for a better understanding of the invention. Thus, the encoding and architecture of this example does not limit the scope of the invention, but is provided for illustrative purposes only.

【0044】上述のように、少なくとも結果が結果バッ
ファに書込まれる度に、操作カウントが増分されるとい
う条件で、様々な実施例が操作カウントを異なる状況下
において増分し得る。
As described above, various embodiments may increment the operation count under different circumstances, provided that the operation count is incremented at least each time a result is written to the result buffer.

【0045】本発明の実施例の変形には、次のようなも
のが含まれる。 a)あらゆる単一命令の実行時に、操作カウントを増分
する。 b)結果を結果バッファに書込む命令の実行時だけ操作
カウントを増分する。 c)1つ以上の入力値を結果バッファから読出すか、結
果を結果バッファに書込む命令の実行時だけ操作カウン
トを増分する。 d)命令の実行時、操作カウントを増分するか否かを示
すフラグを、各命令内に符号化する。 e)命令の実行時に操作カウントに加算されるオフセッ
ト(0乃至n)を指定するフィールドを各命令内に符号
化する。 f)上述の変形の1つを採用し得る複数の操作モード
を、命令セット・アーキテクチャに組み込む。
Modifications of the embodiment of the present invention include the following. a) Increment the operation count upon execution of every single instruction. b) Increment the operation count only during execution of the instruction that writes the result to the result buffer. c) Read the one or more input values from the result buffer or increment the operation count only when executing an instruction that writes the result to the result buffer. d) When executing instructions, a flag indicating whether or not to increment the operation count is encoded in each instruction. e) Encode within each instruction a field that specifies the offset (0-n) to be added to the operation count when the instruction is executed. f) Incorporate into the instruction set architecture multiple modes of operation that can employ one of the variants described above.

【0046】当業者は次のことに着目されよう。すなわ
ち、任意のサイズの命令グループを所与の操作カウント
に関連付ける能力が、マシンにおいて(プロセッサがま
だ生成されていないデータ値により、或いは出力値を記
憶する結果バッファを割当てることができないことによ
り、機能停止しない限り、)プロセッサが操作カウント
を通じて任意の速度で進行可能なことに関連付けられ、
たとえそれらの隣人が、キャッシュ・ミスまたは誤って
予測された分岐などの、予期不能な実行時間要因により
機能停止する間にもプロセッサが前進する手段が提供さ
れる。本発明のこの非同期の性質は、例えばVLIW
(非常に長い命令ワード)などの、同期式に実行される
グループ内の任意の命令が機能停止し、そのグループ内
の他の全ての命令を機能停止にし得る同期式(またはロ
ック・ステップ)ILP実行技術に比較して、明らかに
有利である。
Those skilled in the art will note the following. That is, the ability to associate a group of instructions of any size with a given operation count is a feature of the machine (because the processor cannot allocate a result buffer to store output values or to store output values). Associated with the processor being able to proceed at any speed through the operation count, unless stopped)
A means is provided for the processor to advance while their neighbors fail due to unpredictable execution time factors such as cache misses or mispredicted branches. This asynchronous nature of the present invention is, for example, VLIW
Synchronous (or lock-step) ILP that can cause any instruction in a group to be executed synchronously, such as (very long instruction word) to stall and to stall all other instructions in the group There is a clear advantage over implementation techniques.

【0047】プログラマは、操作カウントを制限無しに
成長し得る値と見なすが、ハードウェア技法では、操作
カウントを少数のビットにより表し、それが最大値を越
えるときに、0に"ロール・オーバ"することが許され
る。操作カウントの正確な値が決して重要な訳ではな
く、重要なのは、システム内の他のプロセッサの操作カ
ウントに対する操作カウントの値であるからである。任
意の2つのプロセッサの操作カウント間の相対差は、デ
ータ依存性及びバッファ割当てにより制限されるので、
システム内の任意の2つのプロセッサの操作カウント間
には既知の最大距離が存在する。この距離が、操作カウ
ンタの所与のハードウェア技法により表される限り、そ
の技法は正しく動作する。
Although the programmer views the operation count as a value that can grow without bound, the hardware technique represents the operation count by a small number of bits, and when it exceeds the maximum value, "rolls over" to zero. Is allowed to do so. The exact value of the operation count is not at all important, because it is the value of the operation count relative to the operation counts of other processors in the system. Since the relative difference between the operation counts of any two processors is limited by data dependencies and buffer allocation,
There is a known maximum distance between the operation counts of any two processors in the system. As long as this distance is represented by a given hardware technique of the operation counter, that technique will work correctly.

【0048】単純化のため、本実施例では、プロセッサ
が命令を実行する都度、その操作カウントを増分する。
このことはもちろん、"同期"を維持するために各プロセ
ッサが同一数の命令を実行しなければならないことを意
味し、従って、コンパイラは操作カウントの平衡を保つ
ために、幾つかのノップ(NO-OP)命令を挿入する必要
がある。
For simplicity, in this embodiment, each time the processor executes an instruction, its operation count is incremented.
This, of course, means that each processor must execute the same number of instructions to maintain "synchronization," and therefore the compiler may need to use several nops (NO -OP) instruction must be inserted.

【0049】上述のように、本発明の正しい実施例は、
プロセッサが互いに正しく通信できるように、それらを
既知の状態に置くための特定の手段を要求する。この目
的を達成するために、本実施例は1つの新たなユーザ・
レベルの命令、1つの新たなスーパーバイザ・レベルの
命令、及び1つの新たな例外タイプを次のように導入す
る。
As mentioned above, the correct embodiment of the invention is:
It requires certain means to put them in a known state so that the processors can communicate properly with each other. To this end, the present embodiment provides a single new user
A level instruction, one new supervisor-level instruction, and one new exception type are introduced as follows.

【0050】SPAWN命令は、4つのプロセッサの1
つ及び命令アドレスを指定する。指定されたプロセッサ
がSPAWN命令を実行しているプロセッサと同一の場
合、そのプロセッサの操作カウントが0にセットされ、
その結果バッファがクリアされ(すなわち、全ての参照
カウントが0にセットされる)、そのプログラム・カウ
ンタ(PC)が、新たに指定された命令アドレスから命
令をフェッチ開始するようにセットされる。指定された
プロセッサ(PS)が、SPAWN命令を実行している
プロセッサ(PE)と異なる場合には、PSの操作カウ
ント(OC)がPEのそれにセットされ、PSの結果バ
ッファがクリアされ、PSのPCが、新たに指定された
命令アドレスから命令をフェッチ開始するようにセット
される。
The SPAWN instruction is one of four processors.
And the instruction address. If the specified processor is the same as the processor executing the SPAWN instruction, the operation count of that processor is set to 0;
As a result, the buffer is cleared (ie, all reference counts are set to zero) and its program counter (PC) is set to begin fetching instructions from the newly specified instruction address. If the designated processor (PS) is different from the processor (PE) executing the SPAWN instruction, the PS operation count (OC) is set to that of the PE, the PS result buffer is cleared, and the PS The PC is set to start fetching instructions from the newly specified instruction address.

【0051】SPAWN命令を使用することにより、あ
るプロセッサにより実行されている命令シーケンスが、
別のプロセッサ上において命令シーケンスの実行を開始
し、それと同期することができる。このプロセスを繰り
返すことにより、全てのプロセッサが、同時依存命令シ
ーケンスの同時実行を開始することができる。
[0051] By using the SPAWN instruction, the instruction sequence being executed by a processor becomes:
Execution of the instruction sequence on another processor can be initiated and synchronized with. By repeating this process, all processors can begin executing concurrently dependent instruction sequences simultaneously.

【0052】PREEMPT命令はスーパーバイザ・レ
ベルの命令である。これはPREEMPT例外が発行さ
れるプロセッサを指定する。カーネル・ディスパッチャ
が同時依存スレッドを実行している全てのプロセッサ上
で、タスク切り替えを発生させ得るように設計される。
The PREEMPT instruction is a supervisor-level instruction. This specifies the processor where the PREEMPT exception is issued. It is designed so that the kernel dispatcher can cause a task switch on all processors running concurrently dependent threads.

【0053】PREEMPT例外は任意の例外同様、割
込まれるプロセッサにその現命令ストリームからの命令
の実行を停止させ、例外ベクトルにより指し示される命
令の実行を開始させる。上述のように、これは別のプロ
セッサがPREEMPT命令を実行するとき発生し、タ
スクを構成する全ての同時依存スレッドが、カーネル・
ディスパッチャにより調和して切り替えられることを保
証するように設計される。
The PREEMPT exception, like any exception, causes the interrupted processor to stop executing instructions from its current instruction stream and begin executing the instruction pointed to by the exception vector. As described above, this occurs when another processor executes the PREEMPT instruction, and all concurrent dependent threads making up the task are
Designed to ensure that they can be switched in harmony by the dispatcher.

【0054】本発明の拡張ISA(A')において再符
号化されるプログラム・フラグメント例:以下では、本
発明のマルチプロセッサの好適な実施例において実行さ
れるように符号化されるプログラム・フラグメント例が
示される。以前の例で使用された擬似符号化アセンブラ
・ニーモニックの標準セットに対して、追加の拡張が定
義される。これらの拡張はプログラマに(A')におい
て使用可能な拡張をニーモニック形式で表す手段を提供
する。
Example Program Fragment Recoded in Extended ISA (A ') of the Invention: The following is an example of a program fragment encoded to be executed in a preferred embodiment of the multiprocessor of the invention. Is shown. Additional extensions are defined to the standard set of pseudo-coded assembler mnemonics used in the previous example. These extensions provide the programmer with a means to represent the extensions available in (A ') in mnemonic form.

【表6】 [Table 6]

【表7】 [Table 7]

【0056】[0056]

【表8】 [Table 8]

【0057】[0057]

【表9】 [Table 9]

【0058】[0058]

【表10】 [Table 10]

【0059】多数の命令が、オリジナル・フラグメント
内に現れなかった再符号化同時入用プログラム・フラグ
メント内に現れる。更に、オリジナル・フラグメント内
に現れる幾つかの命令が、2つ以上の再符号化フラグメ
ント内に現れる。次に要約して説明する。
A number of instructions appear in the recoded coinciding program fragment that did not appear in the original fragment. In addition, some instructions appearing in the original fragment may appear in more than one re-encoded fragment. Next, a brief description will be given.

【0060】プロセッサ0及びプロセッサ1のフラグメ
ントの最初にあるSPAWN命令は、4つの同時入用命
令ストリームを初期化及び同期する。
The SPAWN instruction at the beginning of the Processor 0 and Processor 1 fragments initializes and synchronizes four simultaneous input instruction streams.

【0061】オリジナル・フラグメント内の命令I20
で開始する条件パスは(等価機能を維持しながら)僅か
に再符号化され、ストリームの分散を単純化する。この
再符号化に関連付けられる例外の他に、オリジナル・フ
ラグメントからのフロー制御命令が、全ての再符号化同
時入用フラグメント内で見い出され得る。これは論理的
である。なぜなら、4つの全ての同時入用プログラム
が、互いに"同期"を維持するために、類似のフロー制御
パスに従わねばならないからである。
Instruction I20 in original fragment
The condition paths starting with are slightly re-encoded (while maintaining the equivalent function), simplifying the distribution of the stream. In addition to the exceptions associated with this re-encoding, flow control instructions from the original fragment may be found in every re-encoded fragment. This is logical. This is because all four concurrent programs must follow a similar flow control path to maintain "synchronization" with each other.

【0062】4つの同時入用プログラム間の通信を可能
にするために、結果バッファが使用されるが、結果バッ
ファを通過するデータの一部は、より永久的な性質を有
し、将来の使用のために汎用レジスタに移動されなけれ
ばならない。この目的のために、幾つかの命令が、単に
データ値を結果バッファから汎用レジスタに転送するた
めに追加される。
A result buffer is used to enable communication between the four concurrent programs, but some of the data passing through the result buffer has a more permanent nature and may be used for future use. Have to be moved to a general purpose register. To this end, some instructions are added simply to transfer data values from the result buffer to general purpose registers.

【0063】前述のように、本実施例(理解を容易にす
るために示される)は、あらゆる命令の実行時にプロセ
ッサの操作カウントを増分するので、この特定の実施例
では、各同時入用コード・フラグメントが同一数の命令
を実行し、他と同じ操作カウントを維持することを保証
するために、多数のノップ命令を含むことが必要であ
る。
As noted above, this embodiment (shown for ease of understanding) increments the processor's operation count upon execution of any instruction, so in this particular embodiment, each concurrent input code -It is necessary to include multiple Knop instructions to ensure that the fragment executes the same number of instructions and maintains the same operation count as the others.

【0064】最後に、結果バッファに書込まれるデータ
が、(使用カウントにより示される)所与の数の将来の
命令により消費されなければならないので、通常は値を
消費しない命令IL及びINが条件パスに追加され、そ
れらが実際に正しい回数消費されることを保証する(使
用カウントが0に達することを保証する)。結果バッフ
ァ管理方法M2を組み込む実施例は使用カウントを有さ
ず、従って、こうした要求に従わない点に注意された
い。
Finally, since the data written to the result buffer must be consumed by a given number of future instructions (indicated by the usage count), the instructions IL and IN, which normally do not consume values, are conditional. Added to the path, ensuring that they are actually consumed the correct number of times (guaranteed that the usage count reaches zero). Note that embodiments incorporating the result buffer management method M2 do not have a usage count and therefore do not comply with such requirements.

【0065】実行タイミング:次に、4つの同時入用プ
ログラム・フラグメントが、本実施例により規定される
ように拡張されるSMPの、4つの"シンプル"・プロセ
ッサ上で同時に実行されるときの、サイクル毎の実行振
舞いについて示す。ここで示されるタイミングは、以前
のタイミング例と同一の単純化を仮定し、以前のタイミ
ング例と同一の実行パスに従うコードを示す。
Execution Timing: Next, when four simultaneous input program fragments are executed simultaneously on the four "simple" processors of the SMP, which is extended as defined by this embodiment. The execution behavior for each cycle will be described. The timing shown here assumes the same simplification as the previous timing example and shows the code following the same execution path as the previous timing example.

【表11】 [Table 11]

【0066】前記例から分かるように、プログラム・フ
ラグメントを実行するのに44サイクルを費やす従来の
ISA(A)のシンプル技法が、本実施例に従いISA
(A')に拡張され、プログラム・フラグメントが、好
適な実施例に従い、4つのプロセッサ(各々は(A')
としてのシンプル技法)間で分散されるとき、分散プロ
グラム・フラグメント(前もって実行される1度限りの
同期命令を含む)を実行するのに24サイクルを費や
す。これは(A)のコンプレックス技法(すなわちスー
パスカラ・プロセッサ)の場合の20サイクルの実行時
間に極めて近付く。
As can be seen from the above example, the conventional ISA (A) simple technique of spending 44 cycles executing a program fragment,
Expanded to (A ') and the program fragment is divided into four processors (each of (A') according to the preferred embodiment.
When distributed between (a simple technique as), it takes 24 cycles to execute a distributed program fragment (including a one-time synchronization instruction that is executed beforehand). This is very close to the 20 cycle execution time for the complex technique of (A) (ie, superscalar processor).

【0067】キャッシュ・ミス、誤って予測された分
岐、及び他の要因による予期不能な機能停止条件をより
詳細に調べると、本発明の実施例は、その非同期の性質
により、非プログラム順序の実行をサポートするほとん
どのスーパースカラ・プロセッサと同一の性能特性を示
す。すなわち、これらは1命令が機能停止された事実に
も関わらず、できるだけ多くの作業を実行し続ける。
Looking more closely at unpredictable stall conditions due to cache misses, mispredicted branches, and other factors, embodiments of the present invention, by virtue of their asynchronous nature, cause out-of-order execution. It has the same performance characteristics as most superscalar processors that support That is, they continue to perform as much work as possible, despite the fact that one instruction has been disabled.

【0068】例えば本実施例では、全ての4つの命令ス
トリームが、同一サイクルの間にロード命令を実行する
可能性がある。4つのいずれかがキャッシュにミス(失
敗)する場合、他の3つはまだ続く命令の実行を継続す
ることができる(もちろん、機能停止した命令ストリー
ムに対する依存性が無いことを条件とする)。従って、
他の3つの命令ストリームは命令の実行を継続し、それ
らの幾つかは、キャッシュをヒットまたはミスし得るロ
ード命令であり得る。こうした振舞いは、キャッシュ・
ミスに遭遇後、非依存命令を非プログラム順序に実行し
続ける単一"コンプレックス"・プロセッサの振舞いと等
価である。
For example, in this embodiment, all four instruction streams may execute a load instruction during the same cycle. If any of the four miss the cache, the other three can continue execution of the still following instructions (provided, of course, that there is no dependency on the stalled instruction stream). Therefore,
The other three instruction streams continue executing instructions, some of which may be load instructions that can hit or miss the cache. These behaviors are
Equivalent to the behavior of a single "complex" processor that continues to execute independent instructions out of order after encountering a miss.

【0069】誤って予測された分岐命令の場合、本実施
例により規定されるように拡張されるSMP上で実行さ
れる同時入用ストリーム内の、複数の同時に実行される
分岐が、分岐を誤って予測する"コンプレックス"・プロ
セッサにおいて生じる罰則と同一の罰則を招く。
In the case of a mispredicted branch instruction, a plurality of concurrently executed branches in a concurrent input stream executed on the SMP extended as defined by this embodiment Incurs the same penalties that occur in predicting "complex" processors.

【0070】或いは、本発明で教示される技術により、
SPAWN命令を使用することにより、条件分岐に続く
第2の命令ストリームを生成し、条件が解決されるま
で、分岐パス及び非分岐のパスの両方を同時に実行し、
その時点で、ストリームの1つが終了されてもよい。こ
うしたアプローチは、特定の"コンプレックス"・プロセ
ッサで見い出される非常に高性能な投機実行能力を模倣
する。
Alternatively, according to the technique taught in the present invention,
Using the SPAWN instruction to generate a second stream of instructions following the conditional branch, executing both branch and non-branch paths simultaneously until the condition is resolved;
At that point, one of the streams may be terminated. Such an approach mimics the very high performance of speculative execution found in certain "complex" processors.

【0071】本発明は特に、好適な実施例に関連して述
べられてきたが、当業者には、本発明の趣旨及び範囲か
ら逸脱すること無しに、その形態及び詳細における様々
な変更が可能であることが理解されよう。
Although the present invention has been particularly described with reference to preferred embodiments, workers skilled in the art will recognize that various changes may be made in form and detail without departing from the spirit and scope of the invention. It will be understood that

【0072】まとめとして、本発明の構成に関して以下
の事項を開示する。
In summary, the following items are disclosed regarding the configuration of the present invention.

【0073】(1)出力値を生成する命令を実行する実
行ユニットと、前記実行ユニットにより実行される命令
の出力値を保持するために割当てられる複数のエントリ
を含む結果バッファと、出力値を前記結果バッファに記
憶する命令が前記実行ユニットにより実行されるとき、
少なくとも増分される操作カウントを含む操作カウンタ
であって、所与の出力値に対して前記結果バッファ内に
割当てられる特定のエントリが、前記所与の出力値を生
成する命令が実行されるときに、前記操作カウントに応
答して選択される、操作カウンタと、を含む、データ処
理装置。 (2)前記結果バッファ内の各出力値が使用カウントに
関連して記憶され、前記使用カウントが、関連出力値が
別の1つ以上の装置内で実行される他の命令により指定
される入力として使用される回数を示す、前記(1)記
載のデータ処理装置。 (3)前記実行ユニットにより実行される命令から、複
数の装置の1つを識別する装置識別子を抽出する復号器
を含み、前記命令の1つ以上の入力値が前記識別された
装置の結果バッファから取り出される、前記(1)記載
のデータ処理装置。 (4)前記復号器が、前記実行ユニットにより実行され
る前記命令から変位値を抽出し、該変位値が前記命令を
実行している装置の操作カウントと、前記識別された装
置の前記結果バッファ内の前記1つ以上の入力値のエン
トリに関連付けられる、前記識別された装置の期待操作
カウントとの相対差を提供し、前記復号器が、前記変位
値及び前記命令を実行する前記装置の操作カウントに応
答して、アクセス・キーを生成し、前記識別された装置
の前記結果バッファ内の、前記アクセス・キーに関連付
けられるエントリから入力値を取り出す、前記(3)記
載のデータ処理装置。 (5)前記変位値が選択された量より小さく制限され
る、前記(4)記載のデータ処理装置。 (6)複数のプロセッサを含み、各前記プロセッサが、
1つ以上の入力を用いて、出力値を生成する命令を実行
する実行ユニットと、前記実行ユニットにより実行され
る命令の出力値を保持するために割当てられる複数のエ
ントリを含む結果バッファと、出力値を前記結果バッフ
ァに記憶する命令が前記実行ユニットにより実行される
とき、少なくとも増分される操作カウントを含む操作カ
ウンタであって、所与の出力値に対して、前記結果バッ
ファ内に割当てられる特定のエントリが、前記所与の出
力値を生成する命令が実行されるときに、前記操作カウ
ントに応答して選択される、操作カウンタと、前記実行
ユニットにより実行される命令から、前記複数のプロセ
ッサの1つを識別するプロセッサ識別子を抽出する復号
器であって、前記命令の1つ以上の入力値が前記識別さ
れたプロセッサの前記結果バッファから取り出される、
復号器と、を含む、マルチプロセッサ・コンピュータ・
システム。 (7)前記結果バッファ内の各出力値が使用カウントに
関連して記憶され、前記使用カウントが、関連出力値が
前記複数のプロセッサの少なくとも他の1つにおいて実
行される他の命令により指定される入力として使用され
る回数を示す、前記(6)記載のマルチプロセッサ・コ
ンピュータ・システム。 (8)各前記復号器が、前記実行ユニットにより実行さ
れる前記命令から変位値を抽出し、該変位値が前記命令
を実行しているプロセッサの操作カウントと、前記識別
されたプロセッサの前記結果バッファ内の1つ以上の入
力値のエントリに関連付けられる、前記識別されたプロ
セッサの期待操作カウントとの相対差を提供し、前記復
号器が、前記変位値及び前記命令を実行する前記プロセ
ッサの操作カウントに応答して、アクセス・キーを生成
し、前記識別されたプロセッサの前記結果バッファ内の
前記アクセス・キーに関連付けられるエントリから、入
力値を取り出す、前記(6)記載のマルチプロセッサ・
システム。 (9)前記変位値が選択された量より小さく制限され
る、前記(8)記載のマルチプロセッサ・コンピュータ
・システム。 (10)前記複数のプロセッサがアクセス可能な共用メ
モリを含む、前記(6)記載のマルチプロセッサ・シス
テム。 (11)データ処理システムにおいて、データを処理す
る方法であって、結果バッファに記憶される出力値を生
成する命令を実行するステップと、操作カウントを増分
するステップと、前記出力値を前記結果バッファのエン
トリに記憶するステップであって、前記エントリが増分
された操作カウントに関連付けられる記憶ステップと、
を含む、方法。 (12)前記出力値に関連して、前記結果バッファに記
憶される使用カウントを生成するステップを含み、前記
使用カウントが、関連出力値が少なくとも他の1つのプ
ロセッサ内で実行される他の命令により指定される入力
として使用される回数を示す、前記(11)記載の方
法。 (13)命令が実行される以前に前記命令を復号し、複
数のプロセッサの1つを識別するプロセッサ識別子を抽
出する復号ステップを含み、前記命令の1つ以上の入力
値が、前記識別されたプロセッサの前記結果バッファか
ら取り出される、前記(11)記載の方法。 (14)前記復号ステップが、前記命令を実行している
プロセッサの操作カウントと、前記識別されたプロセッ
サの前記結果バッファ内の前記1つ以上の入力値のエン
トリに関連付けられる、前記識別されたプロセッサの期
待操作カウントとの相対差を提供する、変位値を抽出す
るステップを含み、前記復号ステップが更に、前記変位
値及び前記命令を実行する前記プロセッサの操作カウン
トの関数として、アクセス・キーを生成し、前記識別さ
れたプロセッサの前記結果バッファ内の、前記アクセス
・キーに関連付けられるエントリから、入力値を取り出
すステップを含む、前記(13)記載の方法。 (15)前記変位値が選択された量を越えることを阻止
するステップを含む、前記(14)記載の方法。 (16)複数のプロセッサを有する多重処理システムに
おいて、結果を記憶する方法であって、結果を生成する
命令を、前記複数のプロセッサの1つにおいて実行する
ステップと、当該プロセッサに関連付けられる操作カウ
ントを増分するステップであって、前記結果が前記当該
プロセッサ及び前記増分された操作カウントとの関連付
けにより、一意的に識別される増分ステップと、前記結
果を前記多重処理システム内において記憶するステップ
であって、前記結果が前記当該プロセッサ及び前記増分
された操作カウントにより定義される特定の識別によ
り、前記複数のプロセッサの任意のプロセッサにより、
記憶装置内でアクセスされる、記憶ステップと、を含
む、方法。 (17)前記結果に関連して記憶される使用カウントを
生成するステップを含み、前記使用カウントが、関連結
果が前記複数のプロセッサの1つ以上のプロセッサ内で
実行される他の命令により指定される入力として使用さ
れる回数を示す、前記(16)記載の方法。 (18)前記複数のプロセッサの前記操作カウントが、
選択された量を越えることを阻止するステップを含む、
前記(16)記載の方法。
(1) An execution unit for executing an instruction for generating an output value, a result buffer including a plurality of entries allocated to hold an output value of the instruction executed by the execution unit, When the instructions stored in the result buffer are executed by the execution unit,
An operation counter that includes at least an operation count that is incremented, wherein a particular entry assigned in the result buffer for a given output value is such that when the instruction that produces the given output value is executed, And an operation counter selected in response to the operation count. (2) An input wherein each output value in the result buffer is stored in association with a usage count, wherein the usage count is specified by another instruction whose associated output value is executed in another one or more devices. The data processing device according to the above (1), wherein the data processing device indicates the number of times of use. And (3) a decoder for extracting, from the instructions executed by the execution unit, a device identifier identifying one of a plurality of devices, wherein one or more input values of the instructions are a result buffer of the identified device. The data processing device according to the above (1), which is extracted from the data processing device. (4) the decoder extracts a displacement value from the instruction executed by the execution unit, wherein the displacement value is an operation count of a device executing the instruction and the result buffer of the identified device; Providing a relative difference with an expected operation count of the identified device associated with an entry of the one or more input values in the decoder, wherein the decoder operates the device to execute the displacement values and the instructions. The data processing device of claim 3, wherein in response to the count, an access key is generated and an input value is retrieved from an entry associated with the access key in the result buffer of the identified device. (5) The data processing device according to (4), wherein the displacement value is limited to be smaller than a selected amount. (6) including a plurality of processors, wherein each of the processors includes:
An execution unit for executing an instruction to generate an output value using one or more inputs; a result buffer including a plurality of entries allocated to hold an output value of the instruction executed by the execution unit; An operation counter including at least an operation count that is incremented when an instruction that stores a value in the result buffer is executed by the execution unit, the identification being assigned in the result buffer for a given output value. A plurality of entries from an operation counter and an instruction executed by the execution unit, wherein the plurality of processors are selected in response to the operation count when an instruction to generate the given output value is executed. A decoder that extracts a processor identifier identifying one of the instructions, wherein one or more input values of the instruction are associated with the identified processor. Is taken out from the serial result buffer,
A multiprocessor computer including a decoder
system. (7) each output value in the result buffer is stored in association with a usage count, wherein the usage count is specified by another instruction whose associated output value is executed in at least one other of the plurality of processors. The multiprocessor computer system according to (6), wherein the multiprocessor computer system indicates the number of times used as an input. (8) each of the decoders extracts a displacement value from the instruction executed by the execution unit, wherein the displacement value is an operation count of a processor executing the instruction and the result of the identified processor; Providing a relative difference with an expected operation count of the identified processor, associated with an entry of one or more input values in a buffer, wherein the decoder operates the processor to execute the instructions and the displacement values. The multiprocessor of claim 6, further comprising: generating an access key in response to the count; and retrieving an input value from an entry associated with the access key in the result buffer of the identified processor.
system. (9) The multiprocessor computer system according to (8), wherein the displacement value is limited to less than a selected amount. (10) The multiprocessor system according to (6), including a shared memory accessible by the plurality of processors. (11) A method for processing data in a data processing system, the method comprising: executing an instruction to generate an output value stored in a result buffer; incrementing an operation count; Storing the entries in an entry, wherein the entries are associated with an incremented operation count;
Including, methods. (12) generating a usage count stored in the result buffer in association with the output value, wherein the usage count is associated with another instruction whose associated output value is executed in at least one other processor. The method according to (11) above, wherein the method indicates the number of times used as an input specified by. (13) decoding the instruction before the instruction is executed, and extracting a processor identifier identifying one of a plurality of processors, wherein one or more input values of the instruction are the identified The method of claim 11, wherein the method is retrieved from the result buffer of a processor. (14) the identified processor, wherein the decoding step is associated with an operation count of a processor executing the instruction and an entry of the one or more input values in the result buffer of the identified processor. Extracting a displacement value that provides a relative difference from the expected operation count of the processor, the decoding step further generating an access key as a function of the displacement value and an operation count of the processor executing the instruction. The method of (13), further comprising retrieving an input value from an entry associated with the access key in the result buffer of the identified processor. (15) The method according to (14), including the step of preventing the displacement value from exceeding a selected amount. (16) A method for storing a result in a multiprocessing system having a plurality of processors, the method comprising: executing an instruction for generating a result in one of the plurality of processors; and an operation count associated with the processor. Incrementing, wherein the result is uniquely identified by association with the processor and the incremented operation count, and storing the result in the multiprocessing system. By a particular identification, wherein the result is defined by the processor and the incremented operation count, by any processor of the plurality of processors;
Storing in a storage device. (17) generating a usage count that is stored in association with the result, wherein the usage count is specified by other instructions executed in one or more of the plurality of processors. (16). The method according to (16), wherein the number of times used as an input is indicated. (18) The operation count of the plurality of processors is:
Preventing the selected amount from being exceeded.
The method according to the above (16).

【図面の簡単な説明】[Brief description of the drawings]

【図1】最も単純な用語に要約して示される、従来のマ
ルチプロセッサ・コンピュータ・システムのブロック図
である。
FIG. 1 is a block diagram of a conventional multiprocessor computer system, summarized in simplest terms.

【図2】従来のマルチプロセッサにおける従来の命令の
実行形式を示す図である。
FIG. 2 is a diagram showing a conventional instruction execution format in a conventional multiprocessor.

【図3】本発明の実施例による集積化マルチプロセッサ
・コンピュータ・システムを示す図である。
FIG. 3 illustrates an integrated multiprocessor computer system according to an embodiment of the present invention.

【図4】本発明の好適な実施例に従う、命令の実行形式
を示す図である。
FIG. 4 is a diagram showing an execution format of an instruction according to a preferred embodiment of the present invention;

【図5】本発明の好適な実施例に従う、ローカル結果バ
ッファの論理構成を示す図である。
FIG. 5 is a diagram illustrating a logical configuration of a local result buffer according to a preferred embodiment of the present invention.

【図6】命令がその出力がローカル結果バッファ内に記
憶されるように指定するとき、本発明のマルチプロセッ
サ内でデータを処理する方法のフロー図である。
FIG. 6 is a flow diagram of a method for processing data within a multiprocessor of the present invention when an instruction specifies that its output be stored in a local result buffer.

【図7】本発明の好適な実施例に従い、命令がその入力
がリモート・プロセッサの結果バッファ内のエントリか
らフェッチされるように指定するとき、本発明のマルチ
プロセッサ・システム内でデータを処理するプロセスの
フロー図である。
FIG. 7 processes data in a multiprocessor system of the present invention when an instruction specifies that its input be fetched from an entry in a remote processor result buffer in accordance with a preferred embodiment of the present invention. It is a flowchart of a process.

【図8】使用カウントの記憶が除去される、図5の結果
バッファの別の実施例を示す図である。
FIG. 8 illustrates another embodiment of the result buffer of FIG. 5, wherein storage of the usage count is removed.

【図9】使用カウントの必要性が除去される、図6に示
されるデータ処理方法の別の実施例を示す図である。
FIG. 9 illustrates another embodiment of the data processing method shown in FIG. 6, where the need for a usage count is eliminated.

【図10】使用カウントの必要性が除去される、図7に
示されるデータ処理方法の別の実施例を示す図である。
FIG. 10 illustrates another embodiment of the data processing method shown in FIG. 7, in which the need for a usage count is eliminated.

【符号の説明】[Explanation of symbols]

101、111、121、301、312、321 プ
ロセッサ 102、302 メモリ 103、303 プログラム・カウンタ 104、304 実行ユニット 105、305 レジスタ・ファイル 122、322 システム・バス 201 操作 202、402 入力値 203、403、502 出力値 306 結果バッファ 307 操作カウンタ 308 復号器 501、801 エントリ 503 使用カウント 504 現操作カウント
101, 111, 121, 301, 312, 321 processor 102, 302 memory 103, 303 program counter 104, 304 execution unit 105, 305 register file 122, 322 system bus 201 operation 202, 402 input value 203, 403, 502 Output value 306 Result buffer 307 Operation counter 308 Decoder 501, 801 Entry 503 Usage count 504 Current operation count

Claims (18)

【特許請求の範囲】[Claims] 【請求項1】出力値を生成する命令を実行する実行ユニ
ットと、 前記実行ユニットにより実行される命令の出力値を保持
するために割当てられる複数のエントリを含む結果バッ
ファと、 出力値を前記結果バッファに記憶する命令が前記実行ユ
ニットにより実行されるとき、少なくとも増分される操
作カウントを含む操作カウンタであって、所与の出力値
に対して前記結果バッファ内に割当てられる特定のエン
トリが、前記所与の出力値を生成する命令が実行される
ときに、前記操作カウントに応答して選択される、操作
カウンタと、を含む、データ処理装置。
An execution unit for executing an instruction to generate an output value; a result buffer including a plurality of entries allocated to hold an output value of the instruction executed by the execution unit; An operation counter that includes at least an incremented operation count when instructions stored in a buffer are executed by the execution unit, wherein a particular entry assigned in the result buffer for a given output value is An operation counter selected in response to the operation count when an instruction to generate a given output value is executed.
【請求項2】前記結果バッファ内の各出力値が使用カウ
ントに関連して記憶され、前記使用カウントが、関連出
力値が別の1つ以上の装置内で実行される他の命令によ
り指定される入力として使用される回数を示す、請求項
1記載のデータ処理装置。
2. The method of claim 1, wherein each output value in the result buffer is stored in association with a usage count, wherein the usage count is specified by another instruction whose associated output value is executed in another one or more devices. 2. The data processing apparatus according to claim 1, wherein the data processing apparatus indicates a number of times used as an input.
【請求項3】前記実行ユニットにより実行される命令か
ら、複数の装置の1つを識別する装置識別子を抽出する
復号器を含み、前記命令の1つ以上の入力値が前記識別
された装置の結果バッファから取り出される、請求項1
記載のデータ処理装置。
3. A decoder for extracting a device identifier identifying one of a plurality of devices from an instruction executed by the execution unit, wherein one or more input values of the instruction are associated with the identified device. 2. The method of claim 1, wherein the information is retrieved from a result buffer.
The data processing device according to claim 1.
【請求項4】前記復号器が、前記実行ユニットにより実
行される前記命令から変位値を抽出し、該変位値が前記
命令を実行している装置の操作カウントと、前記識別さ
れた装置の前記結果バッファ内の前記1つ以上の入力値
のエントリに関連付けられる、前記識別された装置の期
待操作カウントとの相対差を提供し、前記復号器が、前
記変位値及び前記命令を実行する前記装置の操作カウン
トに応答して、アクセス・キーを生成し、前記識別され
た装置の前記結果バッファ内の、前記アクセス・キーに
関連付けられるエントリから入力値を取り出す、請求項
3記載のデータ処理装置。
4. The decoder extracts a displacement value from the instruction executed by the execution unit, wherein the displacement value is an operation count of a device executing the instruction and the operation count of the identified device. An apparatus for providing a relative difference with an expected operation count of the identified device associated with an entry of the one or more input values in a result buffer, wherein the decoder executes the instruction with the displacement value. 4. The data processing apparatus according to claim 3, further comprising: generating an access key in response to the operation count of the input device; and retrieving an input value from an entry associated with the access key in the result buffer of the identified device.
【請求項5】前記変位値が選択された量より小さく制限
される、請求項4記載のデータ処理装置。
5. The data processing apparatus according to claim 4, wherein said displacement value is limited to be smaller than a selected amount.
【請求項6】複数のプロセッサを含み、各前記プロセッ
サが、 1つ以上の入力を用いて、出力値を生成する命令を実行
する実行ユニットと、 前記実行ユニットにより実行される命令の出力値を保持
するために割当てられる複数のエントリを含む結果バッ
ファと、 出力値を前記結果バッファに記憶する命令が前記実行ユ
ニットにより実行されるとき、少なくとも増分される操
作カウントを含む操作カウンタであって、所与の出力値
に対して、前記結果バッファ内に割当てられる特定のエ
ントリが、前記所与の出力値を生成する命令が実行され
るときに、前記操作カウントに応答して選択される、操
作カウンタと、 前記実行ユニットにより実行される命令から、前記複数
のプロセッサの1つを識別するプロセッサ識別子を抽出
する復号器であって、前記命令の1つ以上の入力値が前
記識別されたプロセッサの前記結果バッファから取り出
される、復号器と、 を含む、マルチプロセッサ・コンピュータ・システム。
6. An execution unit including a plurality of processors, each of said processors executing an instruction to generate an output value using one or more inputs, and an output unit of an instruction executed by the execution unit. A result buffer including a plurality of entries allocated for holding; and an operation counter including at least an operation count that is incremented when an instruction to store an output value in the result buffer is executed by the execution unit. An operation counter, for a given output value, a particular entry assigned in the result buffer is selected in response to the operation count when an instruction to generate the given output value is executed. And a processor for extracting, from the instructions executed by the execution unit, a processor identifier identifying one of the plurality of processors. A decoder, wherein one or more input values of the instruction are retrieved from the result buffer of the identified processor.
【請求項7】前記結果バッファ内の各出力値が使用カウ
ントに関連して記憶され、前記使用カウントが、関連出
力値が前記複数のプロセッサの少なくとも他の1つにお
いて実行される他の命令により指定される入力として使
用される回数を示す、請求項6記載のマルチプロセッサ
・コンピュータ・システム。
7. Each output value in said result buffer is stored in association with a usage count, said usage count being determined by another instruction whose associated output value is executed in at least one of said plurality of processors. 7. The multiprocessor computer system of claim 6, indicating a number of times to be used as a designated input.
【請求項8】各前記復号器が、前記実行ユニットにより
実行される前記命令から変位値を抽出し、該変位値が前
記命令を実行しているプロセッサの操作カウントと、前
記識別されたプロセッサの前記結果バッファ内の1つ以
上の入力値のエントリに関連付けられる、前記識別され
たプロセッサの期待操作カウントとの相対差を提供し、
前記復号器が、前記変位値及び前記命令を実行する前記
プロセッサの操作カウントに応答して、アクセス・キー
を生成し、前記識別されたプロセッサの前記結果バッフ
ァ内の前記アクセス・キーに関連付けられるエントリか
ら、入力値を取り出す、請求項6記載のマルチプロセッ
サ・システム。
8. Each of the decoders extracts a displacement value from the instruction executed by the execution unit, wherein the displacement value is an operation count of a processor executing the instruction, and an operation count of the identified processor. Providing a relative difference with an expected operation count of the identified processor associated with one or more input value entries in the result buffer;
An entry associated with the access key in the result buffer of the identified processor, wherein the decoder generates an access key in response to the displacement value and an operation count of the processor executing the instruction. 7. The multiprocessor system according to claim 6, wherein an input value is obtained from the multiprocessor.
【請求項9】前記変位値が選択された量より小さく制限
される、請求項8記載のマルチプロセッサ・コンピュー
タ・システム。
9. The multiprocessor computer system according to claim 8, wherein said displacement value is limited to less than a selected amount.
【請求項10】前記複数のプロセッサがアクセス可能な
共用メモリを含む、請求項6記載のマルチプロセッサ・
システム。
10. The multiprocessor of claim 6, further comprising a shared memory accessible by said plurality of processors.
system.
【請求項11】データ処理システムにおいて、データを
処理する方法であって、 結果バッファに記憶される出力値を生成する命令を実行
するステップと、 操作カウントを増分するステップと、 前記出力値を前記結果バッファのエントリに記憶するス
テップであって、前記エントリが増分された操作カウン
トに関連付けられる記憶ステップと、 を含む、方法。
11. A method of processing data in a data processing system, the method comprising: executing an instruction to generate an output value stored in a result buffer; incrementing an operation count; Storing the entries in a result buffer, wherein the entries are associated with an incremented operation count.
【請求項12】前記出力値に関連して、前記結果バッフ
ァに記憶される使用カウントを生成するステップを含
み、前記使用カウントが、関連出力値が少なくとも他の
1つのプロセッサ内で実行される他の命令により指定さ
れる入力として使用される回数を示す、請求項11記載
の方法。
12. The method of claim 11, further comprising generating a usage count stored in the result buffer in association with the output value, wherein the usage count is performed in at least one other processor. 12. The method of claim 11, wherein the method indicates a number of times used as an input specified by the instruction.
【請求項13】命令が実行される以前に前記命令を復号
し、複数のプロセッサの1つを識別するプロセッサ識別
子を抽出する復号ステップを含み、前記命令の1つ以上
の入力値が、前記識別されたプロセッサの前記結果バッ
ファから取り出される、請求項11記載の方法。
13. The method of claim 1, further comprising the step of: decoding the instruction before the instruction is executed; and extracting a processor identifier identifying one of the plurality of processors, wherein one or more input values of the instruction include the identification value. 12. The method of claim 11, wherein the result is retrieved from the result buffer of a designated processor.
【請求項14】前記復号ステップが、前記命令を実行し
ているプロセッサの操作カウントと、前記識別されたプ
ロセッサの前記結果バッファ内の前記1つ以上の入力値
のエントリに関連付けられる、前記識別されたプロセッ
サの期待操作カウントとの相対差を提供する、変位値を
抽出するステップを含み、前記復号ステップが更に、前
記変位値及び前記命令を実行する前記プロセッサの操作
カウントの関数として、アクセス・キーを生成し、前記
識別されたプロセッサの前記結果バッファ内の、前記ア
クセス・キーに関連付けられるエントリから、入力値を
取り出すステップを含む、請求項13記載の方法。
14. The method of claim 14, wherein the decoding step is associated with an operation count of a processor executing the instruction and an entry of the one or more input values in the result buffer of the identified processor. Extracting a displacement value that provides a relative difference from an expected operation count of the processor, wherein the decoding step further comprises: an access key as a function of the displacement value and an operation count of the processor executing the instruction. And generating an input value from an entry associated with the access key in the result buffer of the identified processor.
【請求項15】前記変位値が選択された量を越えること
を阻止するステップを含む、請求項14記載の方法。
15. The method of claim 14, including the step of preventing said displacement value from exceeding a selected amount.
【請求項16】複数のプロセッサを有する多重処理シス
テムにおいて、結果を記憶する方法であって、 結果を生成する命令を、前記複数のプロセッサの1つに
おいて実行するステップと、 当該プロセッサに関連付けられる操作カウントを増分す
るステップであって、前記結果が前記当該プロセッサ及
び前記増分された操作カウントとの関連付けにより、一
意的に識別される増分ステップと、 前記結果を前記多重処理システム内において記憶するス
テップであって、前記結果が前記当該プロセッサ及び前
記増分された操作カウントにより定義される特定の識別
により、前記複数のプロセッサの任意のプロセッサによ
り、記憶装置内でアクセスされる、記憶ステップと、 を含む、方法。
16. A method for storing a result in a multi-processing system having a plurality of processors, the method comprising: executing an instruction to generate a result in one of the plurality of processors; and an operation associated with the processor. Incrementing a count, wherein the result is uniquely identified by association with the processor and the incremented operation count; and storing the result in the multiprocessing system. Wherein the result is accessed in a storage device by any processor of the plurality of processors with a particular identification defined by the processor and the incremented operation count. Method.
【請求項17】前記結果に関連して記憶される使用カウ
ントを生成するステップを含み、前記使用カウントが、
関連結果が前記複数のプロセッサの1つ以上のプロセッ
サ内で実行される他の命令により指定される入力として
使用される回数を示す、請求項16記載の方法。
17. A method for generating a usage count stored in connection with said result, said usage count comprising:
17. The method of claim 16, wherein the associated result indicates a number of times to be used as an input specified by another instruction executed in one or more of the plurality of processors.
【請求項18】前記複数のプロセッサの前記操作カウン
トが、選択された量を越えることを阻止するステップを
含む、請求項16記載の方法。
18. The method of claim 16, including the step of preventing the operation count of the plurality of processors from exceeding a selected amount.
JP9289317A 1996-12-16 1997-10-22 Device, method, and system for processing data Pending JPH10177559A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/767,406 US5889947A (en) 1996-12-16 1996-12-16 Apparatus and method for executing instructions that select a storage location for output values in response to an operation count
US08/767406 1996-12-16

Publications (1)

Publication Number Publication Date
JPH10177559A true JPH10177559A (en) 1998-06-30

Family

ID=25079382

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9289317A Pending JPH10177559A (en) 1996-12-16 1997-10-22 Device, method, and system for processing data

Country Status (5)

Country Link
US (1) US5889947A (en)
JP (1) JPH10177559A (en)
KR (1) KR19980063538A (en)
CN (1) CN1095133C (en)
TW (1) TW355771B (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019505039A (en) * 2015-12-11 2019-02-21 ビバンテ コーポレーション Hardware access counter and event generation to coordinate multi-threaded processing

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6188948B1 (en) 1998-10-02 2001-02-13 Navistar International Transportation Corp. Vehicle anti-lock brake systems assembly verification system
US6643763B1 (en) 2000-02-28 2003-11-04 International Business Machines Corporation Register pipe for multi-processing engine environment
JP3957948B2 (en) * 2000-04-12 2007-08-15 富士通株式会社 Arithmetic processing unit
US6978309B1 (en) * 2000-07-31 2005-12-20 Cisco Technology, Inc. Method and system for reprogramming instructions for a switch
US6662253B1 (en) * 2000-09-13 2003-12-09 Stmicroelectronics, Inc. Shared peripheral architecture
US7069442B2 (en) * 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US8606960B2 (en) * 2002-12-09 2013-12-10 Intel Corporation Method and apparatus for improving packet processing
US7395527B2 (en) 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US8381037B2 (en) * 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
JP4549652B2 (en) * 2003-10-27 2010-09-22 パナソニック株式会社 Processor system
US7895382B2 (en) 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US7415705B2 (en) 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
US9690581B2 (en) * 2013-10-15 2017-06-27 Mil Computing, Inc. Computer processor with deferred operations
KR101730991B1 (en) 2014-10-28 2017-04-28 삼성전자주식회사 Storage device and operating method of storage device
US10776312B2 (en) * 2017-03-14 2020-09-15 Azurengine Technologies Zhuhai Inc. Shared memory access for a reconfigurable parallel processor with a plurality of chained memory ports
US11947802B1 (en) 2022-09-13 2024-04-02 Microsoft Technology Licensing, Llc Memory buffer management on hardware devices utilizing distributed decentralized memory buffer monitoring

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58114274A (en) * 1981-12-28 1983-07-07 Hitachi Ltd Data processor
US5297255A (en) * 1987-07-28 1994-03-22 Hitachi, Ltd. Parallel computer comprised of processor elements having a local memory and an enhanced data transfer mechanism
US5237694A (en) * 1991-05-30 1993-08-17 Advanced Micro Devices, Inc. Processing system and method including lock buffer for controlling exclusive critical problem accesses by each processor
US5347639A (en) * 1991-07-15 1994-09-13 International Business Machines Corporation Self-parallelizing computer system and method
US5535346A (en) * 1994-07-05 1996-07-09 Motorola, Inc. Data processor with future file with parallel update and method of operation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019505039A (en) * 2015-12-11 2019-02-21 ビバンテ コーポレーション Hardware access counter and event generation to coordinate multi-threaded processing

Also Published As

Publication number Publication date
KR19980063538A (en) 1998-10-07
CN1185609A (en) 1998-06-24
TW355771B (en) 1999-04-11
US5889947A (en) 1999-03-30
CN1095133C (en) 2002-11-27

Similar Documents

Publication Publication Date Title
Hirata et al. An elementary processor architecture with simultaneous instruction issuing from multiple threads
CN108027771B (en) Block-based processor core composition register
US6240502B1 (en) Apparatus for dynamically reconfiguring a processor
Smith et al. The microarchitecture of superscalar processors
US7055021B2 (en) Out-of-order processor that reduces mis-speculation using a replay scoreboard
US6314511B2 (en) Mechanism for freeing registers on processors that perform dynamic out-of-order execution of instructions using renaming registers
US6092175A (en) Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US5890008A (en) Method for dynamically reconfiguring a processor
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
Byrd et al. Multithreaded processor architectures
CN110249302B (en) Simultaneous execution of multiple programs on a processor core
US9811340B2 (en) Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor
US20050038550A1 (en) Program product and data processing system
JPH10177559A (en) Device, method, and system for processing data
KR20180020985A (en) Decoupled processor instruction window and operand buffer
US20030149865A1 (en) Processor that eliminates mis-steering instruction fetch resulting from incorrect resolution of mis-speculated branch instructions
Bousias et al. Instruction level parallelism through microthreading—a scalable approach to chip multiprocessors
Moshovos et al. Microarchitectural innovations: Boosting microprocessor performance beyond semiconductor technology scaling
Jesshope Implementing an efficient vector instruction set in a chip multi-processor using micro-threaded pipelines
Jesshope Scalable instruction-level parallelism
Dorojevets et al. Multithreaded decoupled architecture
Wei et al. A near-memory processor for vector, streaming and bit manipulation workloads
Marcuello et al. Control and data dependence speculation in multithreaded processors
Uhrig et al. Coupling of a reconfigurable architecture and a multithreaded processor core with integrated real-time scheduling
Yankelevsky et al. α-coral: a multigrain, multithreaded processor architecture

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040106

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20040114