JPH05233286A - データ処理システム - Google Patents
データ処理システムInfo
- Publication number
- JPH05233286A JPH05233286A JP4182510A JP18251092A JPH05233286A JP H05233286 A JPH05233286 A JP H05233286A JP 4182510 A JP4182510 A JP 4182510A JP 18251092 A JP18251092 A JP 18251092A JP H05233286 A JPH05233286 A JP H05233286A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- execution
- execution unit
- data processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000004044 response Effects 0.000 claims abstract description 5
- 238000000034 method Methods 0.000 claims description 24
- 238000003672 processing method Methods 0.000 claims description 3
- 238000001514 detection method Methods 0.000 abstract description 3
- 230000001419 dependent effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 10
- 230000003111 delayed effect Effects 0.000 description 6
- 230000001934 delay Effects 0.000 description 4
- 230000004888 barrier function Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 231100000957 no side effect Toxicity 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
(57)【要約】 (修正有)
【目的】 独立した実行ユニット内で複数のインストラ
クションをシーケンス順を越えて並列実行する。 【構成】 個々が複数のインストラクションを格納及び
実行するための独立した回路を含む複数の実行ユニット
を含むデータ処理システムであり、シーケンスの複数の
インストラクションからインストラクションを複数の実
行ユニットに供給するための回路が含まれるが、個々の
インストラクションは複数の実行ユニットの一つのみに
供給される。このシステムは、第一の実行ユニット内の
インストラクションが正しい結果を得るために第二の実
行ユニット内のインストラクションの実行の前に実行を
完結しなければならない場合を検出するための回路を含
む。さらに、この検出回路に応答して、第二の実行ユニ
ット内のインストラクションの実行を第一の実行ユニッ
ト内のインストラクションの実行が完結するまで遅延す
るための回路を含む。
クションをシーケンス順を越えて並列実行する。 【構成】 個々が複数のインストラクションを格納及び
実行するための独立した回路を含む複数の実行ユニット
を含むデータ処理システムであり、シーケンスの複数の
インストラクションからインストラクションを複数の実
行ユニットに供給するための回路が含まれるが、個々の
インストラクションは複数の実行ユニットの一つのみに
供給される。このシステムは、第一の実行ユニット内の
インストラクションが正しい結果を得るために第二の実
行ユニット内のインストラクションの実行の前に実行を
完結しなければならない場合を検出するための回路を含
む。さらに、この検出回路に応答して、第二の実行ユニ
ット内のインストラクションの実行を第一の実行ユニッ
ト内のインストラクションの実行が完結するまで遅延す
るための回路を含む。
Description
【0001】
【産業上の利用分野】本発明は、データ処理システム、
より詳細には、複数の実行ユニットを持つデータ処理シ
ステム内においてインストラクションをシーケンスの順
番を越えて並列に実行するデータ処理システム及びデー
タ処理方法に関する。
より詳細には、複数の実行ユニットを持つデータ処理シ
ステム内においてインストラクションをシーケンスの順
番を越えて並列に実行するデータ処理システム及びデー
タ処理方法に関する。
【0002】
【従来の技術】データ処理システムは、歴史的に、イン
ストラクションが順番に実行されることを要求してき
た。データ処理システム内において、インストラクショ
ンをできる限り迅速に実行することは、勿論、有益なこ
とである。インストラクションの実行を速くするための
先行技術による一つの方法は、一つの実行ユニットを使
用し、スループットを上げる方法である。第二の方法
は、複数の実行ユニットを使用し、インストラクション
をできるだけ多く並列に実行する方法である。複数の実
行ユニット内でインストラクションを並列に実行する場
合、インストラクション間のデータの依存性を処理する
ための方法を提供することが必要である。
ストラクションが順番に実行されることを要求してき
た。データ処理システム内において、インストラクショ
ンをできる限り迅速に実行することは、勿論、有益なこ
とである。インストラクションの実行を速くするための
先行技術による一つの方法は、一つの実行ユニットを使
用し、スループットを上げる方法である。第二の方法
は、複数の実行ユニットを使用し、インストラクション
をできるだけ多く並列に実行する方法である。複数の実
行ユニット内でインストラクションを並列に実行する場
合、インストラクション間のデータの依存性を処理する
ための方法を提供することが必要である。
【0003】非並列データ処理システム内において、デ
ータの依存性を扱うための一つの方法が『メインメモリ
への或はこれからのデータ伝送と重複するCPUレジス
タからレジスタへのデータ伝送を持つデータ処理システ
ム(Data Processing Systemwith CPU Register to Reg
ister Data Transfers Overlapped with Data Transfer
to and from Main Storage)』と言う名称の合衆国特
許第4,630,195号において開示されている。こ
の方法は、あるインストラクションによって使用される
べきレジスタが保留状態のI/Oインストラクションの
対象であるか否かを決定するためにレジスタ上のタグを
使用する。そのレジスタが空いているときは、このイン
ストラクションはこのI/Oインストラクションが完結
することを待つことなく実行できる。但し、この方法
は、並列処理スキームを伴うことはない。
ータの依存性を扱うための一つの方法が『メインメモリ
への或はこれからのデータ伝送と重複するCPUレジス
タからレジスタへのデータ伝送を持つデータ処理システ
ム(Data Processing Systemwith CPU Register to Reg
ister Data Transfers Overlapped with Data Transfer
to and from Main Storage)』と言う名称の合衆国特
許第4,630,195号において開示されている。こ
の方法は、あるインストラクションによって使用される
べきレジスタが保留状態のI/Oインストラクションの
対象であるか否かを決定するためにレジスタ上のタグを
使用する。そのレジスタが空いているときは、このイン
ストラクションはこのI/Oインストラクションが完結
することを待つことなく実行できる。但し、この方法
は、並列処理スキームを伴うことはない。
【0004】並列データ処理システム内においてデータ
依存性を扱うための一つの方法はプログラムをデータフ
ローに従って表現する方法である。この方法の一例が、
IEEEトランザクション・オン・コンピュータ(IEEE
Transactions on Computers)、Vol.C−26、N
o.2、1977年2月号、ページ138−146に掲
載の論文『データフロー多重プロセッサ(A Data Flow
Multiprocessor)』において開示されている。この方法
においては、インストラクションは個々が要求するオペ
ランドに従ってモジュールに分離される。あるインスト
ラクションが第二のインストラクションに依存する場合
は、これは第二のインストラクションと同一モジュール
内におかれる。個々のモジュールは自己完結型であり、
全てのデータ依存性が含まれているために副作用を生じ
ることはない。従って、複数のプロセッサが自由に複数
のモジュールを同時に実行することができる。この方法
の短所は、これが従来のシステムと全く異なるユニーク
なデータフロー言語を要求することである。
依存性を扱うための一つの方法はプログラムをデータフ
ローに従って表現する方法である。この方法の一例が、
IEEEトランザクション・オン・コンピュータ(IEEE
Transactions on Computers)、Vol.C−26、N
o.2、1977年2月号、ページ138−146に掲
載の論文『データフロー多重プロセッサ(A Data Flow
Multiprocessor)』において開示されている。この方法
においては、インストラクションは個々が要求するオペ
ランドに従ってモジュールに分離される。あるインスト
ラクションが第二のインストラクションに依存する場合
は、これは第二のインストラクションと同一モジュール
内におかれる。個々のモジュールは自己完結型であり、
全てのデータ依存性が含まれているために副作用を生じ
ることはない。従って、複数のプロセッサが自由に複数
のモジュールを同時に実行することができる。この方法
の短所は、これが従来のシステムと全く異なるユニーク
なデータフロー言語を要求することである。
【0005】並列データ処理システム内のインストラク
ションを扱うための第二の方法は、プロセッサを同期さ
せる方法である。IBM技術小冊子(IBM Technical Di
sclosure Bulletin )、Vol.32、No.7、19
89年12月号、ページ109−113に掲載の論文
『複数のプロセッサを同期するためのデバイス(Device
for Synchronizing Multiple Processors)』は複数の
プロセッサを同期するためのデバイスを開示する。この
デバイスはバリア(barrier )同期能力、及び複数のプ
ロセスからの複数の要求を直列化する能力を持つ。バリ
ア同期は、シーケンスのインストラクション内の任意の
プロセスがこのバリアをパスする前に全てのプロセスが
到達しなければならないポイントである。直列化動作
は、複数の同時的な要求の個々に優先順位を示すために
固有の整数を割り当て、また個々のプロセスにシステム
資源の固有のセットを割り当てる動作である。この方法
は、あまりにも厳格すぎ、インストラクションがそれら
のもとの順番を越えて実行されることを許さないという
問題を持つ。
ションを扱うための第二の方法は、プロセッサを同期さ
せる方法である。IBM技術小冊子(IBM Technical Di
sclosure Bulletin )、Vol.32、No.7、19
89年12月号、ページ109−113に掲載の論文
『複数のプロセッサを同期するためのデバイス(Device
for Synchronizing Multiple Processors)』は複数の
プロセッサを同期するためのデバイスを開示する。この
デバイスはバリア(barrier )同期能力、及び複数のプ
ロセスからの複数の要求を直列化する能力を持つ。バリ
ア同期は、シーケンスのインストラクション内の任意の
プロセスがこのバリアをパスする前に全てのプロセスが
到達しなければならないポイントである。直列化動作
は、複数の同時的な要求の個々に優先順位を示すために
固有の整数を割り当て、また個々のプロセスにシステム
資源の固有のセットを割り当てる動作である。この方法
は、あまりにも厳格すぎ、インストラクションがそれら
のもとの順番を越えて実行されることを許さないという
問題を持つ。
【0006】『浮動小数点動作のための方法及び装置
(Method and Apparatus for Floating Point Operatio
n )』という名称の合衆国特許第4,763,294号
は、インストラクションのタイプに応じて固定小数点プ
ロセッサと浮動小数点プロセッサを同期するための装置
を開示する。浮動小数点インストラクションはインター
ロックを要求する第一のグループのメンバーか或はイン
ターロックを要求しない第二のグループのメンバーかの
いずれかである。いずれの場合も、固定小数点ユニット
は浮動小数点インストラクションのディスパッチを制御
し、浮動小数点プロセッサがアイドル状態になるのを待
たなければならない。こうして、固定小数点プロセッサ
は、常に、それらインストラクションをそれらの元のシ
ーケンス順で見ている。
(Method and Apparatus for Floating Point Operatio
n )』という名称の合衆国特許第4,763,294号
は、インストラクションのタイプに応じて固定小数点プ
ロセッサと浮動小数点プロセッサを同期するための装置
を開示する。浮動小数点インストラクションはインター
ロックを要求する第一のグループのメンバーか或はイン
ターロックを要求しない第二のグループのメンバーかの
いずれかである。いずれの場合も、固定小数点ユニット
は浮動小数点インストラクションのディスパッチを制御
し、浮動小数点プロセッサがアイドル状態になるのを待
たなければならない。こうして、固定小数点プロセッサ
は、常に、それらインストラクションをそれらの元のシ
ーケンス順で見ている。
【0007】『先行インストラクションと後続インスト
ラクションの間でオペランドデータを直接に伝送するた
めのパイプライン連結された並列データ処理装置(Pipe
lined Parallel Data Processing Apparatus for Direc
tly Transferring Operand Data between Preceding an
d Succeeding Instructions )』という名称の合衆国特
許第4,916,606号はあるインストラクションが
前のインストラクションの結果を使用する場合を検出
し、データを直接に後続インストラクションに供給する
装置を開示する。これはデータ検索ステップを不要に
し、実行の速度を向上させるが、但し、並列処理インス
トラクションをシーケンスを越えて実行することは許さ
ない。
ラクションの間でオペランドデータを直接に伝送するた
めのパイプライン連結された並列データ処理装置(Pipe
lined Parallel Data Processing Apparatus for Direc
tly Transferring Operand Data between Preceding an
d Succeeding Instructions )』という名称の合衆国特
許第4,916,606号はあるインストラクションが
前のインストラクションの結果を使用する場合を検出
し、データを直接に後続インストラクションに供給する
装置を開示する。これはデータ検索ステップを不要に
し、実行の速度を向上させるが、但し、並列処理インス
トラクションをシーケンスを越えて実行することは許さ
ない。
【0008】『並列処理タイプの演算動作処理装置及び
この装置内で使用されるコンパイラ(Arithmetic Opera
tion Processing Apparatus of the Parallel Processi
ng Type and Compiler which is Used in this Appara
tus )』という名称の合衆国特許第4,956,800
号は実行シーケンス及び入/出力シーケンスを並列にて
実行することを可能にすることにより高速にて演算動作
プロセスを遂行するための装置を開示する。これは、実
行速度を向上させるが、これらインストラクションはこ
の場合もシーケンス順にて実行される。
この装置内で使用されるコンパイラ(Arithmetic Opera
tion Processing Apparatus of the Parallel Processi
ng Type and Compiler which is Used in this Appara
tus )』という名称の合衆国特許第4,956,800
号は実行シーケンス及び入/出力シーケンスを並列にて
実行することを可能にすることにより高速にて演算動作
プロセスを遂行するための装置を開示する。これは、実
行速度を向上させるが、これらインストラクションはこ
の場合もシーケンス順にて実行される。
【0009】
【発明が解決しようとする課題】上に詳細に説明された
参照文献のいずれも一つの実行ユニットがその実行ユニ
ット内のインストラクションの正しい実行が第二の実行
ユニット内のインストラクションの実行の完了に依存す
る場合にのみ遅延されるような独立した複数の実行ユニ
ット内のインストラクションをシーケンス順を越えて並
列実行するメカニズムについては開示しない。
参照文献のいずれも一つの実行ユニットがその実行ユニ
ット内のインストラクションの正しい実行が第二の実行
ユニット内のインストラクションの実行の完了に依存す
る場合にのみ遅延されるような独立した複数の実行ユニ
ット内のインストラクションをシーケンス順を越えて並
列実行するメカニズムについては開示しない。
【課題を解決するための手段】上記課題を達成するため
本発明のデータ処理システムは、各々が複数のインスト
ラクションを格納及び実行するための独立した手段を含
む複数の実行ユニットと、複数のインストラクションの
各々が上記複数の実行ユニットの一つのみに供給される
シーケンスの複数のインストラクションから上記実行ユ
ニットにインストラクションを供給するための手段と、
上記実行ユニットに接続され、正しい結果を得るため
に、第一の実行ユニット内のあるインストラクションが
第二の実行ユニット内のインストラクションより前に実
行を完了しなければならない場合を検出するための手段
と、上記検出手段に応答して、上記第二の実行ユニット
内の上記インストラクションの実行を上記第一の実行ユ
ニット内の上記インストラクションが実行を完了するま
で遅延するための手段を含むことを特徴とする。
本発明のデータ処理システムは、各々が複数のインスト
ラクションを格納及び実行するための独立した手段を含
む複数の実行ユニットと、複数のインストラクションの
各々が上記複数の実行ユニットの一つのみに供給される
シーケンスの複数のインストラクションから上記実行ユ
ニットにインストラクションを供給するための手段と、
上記実行ユニットに接続され、正しい結果を得るため
に、第一の実行ユニット内のあるインストラクションが
第二の実行ユニット内のインストラクションより前に実
行を完了しなければならない場合を検出するための手段
と、上記検出手段に応答して、上記第二の実行ユニット
内の上記インストラクションの実行を上記第一の実行ユ
ニット内の上記インストラクションが実行を完了するま
で遅延するための手段を含むことを特徴とする。
【0010】
【作用】本発明によると、各々がインストラクションを
格納及び実行するための独立した回路を含む複数の実行
ユニットを持つデータ処理システムが提供される。ま
た、シーケンスの複数のインストラクションからこれら
実行ユニットにインストラクションを供給するための回
路が提供されるが、ここでは、個々のインストラクショ
ンはこれら複数の実行ユニットの一つのみに提供され
る。このシステムは第一の実行ユニット内のインストラ
クションが正しい結果を得るために第二の実行ユニット
内のインストラクションの実行の前に実行を完了しなけ
ればならない場合を検出するための回路を含む。さら
に、この検出回路に応答して、第二の実行ユニット内の
インストラクションの実行を第一の実行ユニット内のイ
ンストラクションが実行を完了するまで遅延するための
回路が提供される。
格納及び実行するための独立した回路を含む複数の実行
ユニットを持つデータ処理システムが提供される。ま
た、シーケンスの複数のインストラクションからこれら
実行ユニットにインストラクションを供給するための回
路が提供されるが、ここでは、個々のインストラクショ
ンはこれら複数の実行ユニットの一つのみに提供され
る。このシステムは第一の実行ユニット内のインストラ
クションが正しい結果を得るために第二の実行ユニット
内のインストラクションの実行の前に実行を完了しなけ
ればならない場合を検出するための回路を含む。さら
に、この検出回路に応答して、第二の実行ユニット内の
インストラクションの実行を第一の実行ユニット内のイ
ンストラクションが実行を完了するまで遅延するための
回路が提供される。
【0011】一つの好ましい実施例においては、これら
インストラクションがインストラクションの複数のクラ
スの一つに属し、個々の実行ユニットが一つのクラスの
インストラクションを実行するために専用化されるデー
タ処理システムが提供される。このシステムはさらに個
々のインストラクションのクラスを決定するための回路
及びあるクラスに属するインストラクションをそのクラ
スのインストラクションを実行するために専用化された
実行ユニットに提供するための回路を含む。さらに、第
一の実行ユニット内の個々のインストラクションと第二
の実行ユニット内の元のシーケンスにおいてこれに先行
するインストラクションの数とを関連付けるための回路
が提供される。最後に、(1)第一の実行ユニット内の
インストラクションの実行をそのインストラクションと
関連するカウントがゼロでなく、また正しい結果を得る
ために第二の実行ユニット内のそのインストラクション
に先行するインストラクションがそのインストラクショ
ンの前に実行されなければならないときにのみ遅延し、
(2)第二の実行ユニット内のインストラクションの実
行を第一の実行ユニット内のインストラクションと関連
するカウントが第二の実行ユニット内のこのインストラ
クションに先行する第二の実行ユニット内のインストラ
クションの数以下或はこれに等しく、また第一の実行ユ
ニット内のインストラクションが正しい結果を得るため
に第二の実行ユニット内のインストラクションの前に実
行されなければならないときにのみ遅延するための回路
が含まれる。
インストラクションがインストラクションの複数のクラ
スの一つに属し、個々の実行ユニットが一つのクラスの
インストラクションを実行するために専用化されるデー
タ処理システムが提供される。このシステムはさらに個
々のインストラクションのクラスを決定するための回路
及びあるクラスに属するインストラクションをそのクラ
スのインストラクションを実行するために専用化された
実行ユニットに提供するための回路を含む。さらに、第
一の実行ユニット内の個々のインストラクションと第二
の実行ユニット内の元のシーケンスにおいてこれに先行
するインストラクションの数とを関連付けるための回路
が提供される。最後に、(1)第一の実行ユニット内の
インストラクションの実行をそのインストラクションと
関連するカウントがゼロでなく、また正しい結果を得る
ために第二の実行ユニット内のそのインストラクション
に先行するインストラクションがそのインストラクショ
ンの前に実行されなければならないときにのみ遅延し、
(2)第二の実行ユニット内のインストラクションの実
行を第一の実行ユニット内のインストラクションと関連
するカウントが第二の実行ユニット内のこのインストラ
クションに先行する第二の実行ユニット内のインストラ
クションの数以下或はこれに等しく、また第一の実行ユ
ニット内のインストラクションが正しい結果を得るため
に第二の実行ユニット内のインストラクションの前に実
行されなければならないときにのみ遅延するための回路
が含まれる。
【0012】
【実施例】本発明の特質であると信じられる新規の特徴
は特許請求の範囲に示される通りである。但し、本発明
自体、及び本発明のその他の特徴及び長所は、好ましい
実施例の以下の説明を図面を参照にしながら読むことで
一層理解できるものである。
は特許請求の範囲に示される通りである。但し、本発明
自体、及び本発明のその他の特徴及び長所は、好ましい
実施例の以下の説明を図面を参照にしながら読むことで
一層理解できるものである。
【0013】本発明においては、浮動小数点ユニット
(floating point unit )内の別個の実行ユニット(ex
ecution unit)内でインストラクションを独立して実行
できる能力を持つデータ処理システムが提供される。結
果として、インストラクションをシーケンスに従わずに
実行することができる。これら複数の別個の実行ユニッ
トは、互いに、異なる実行ユニット内の二つのインスト
ラクションが片方のインストラクションの正しい結果が
他方のインストラクションの実行の完了に依存するため
にシーケンスに従って実行されなければならないような
ケースにおいてのみ待つ。
(floating point unit )内の別個の実行ユニット(ex
ecution unit)内でインストラクションを独立して実行
できる能力を持つデータ処理システムが提供される。結
果として、インストラクションをシーケンスに従わずに
実行することができる。これら複数の別個の実行ユニッ
トは、互いに、異なる実行ユニット内の二つのインスト
ラクションが片方のインストラクションの正しい結果が
他方のインストラクションの実行の完了に依存するため
にシーケンスに従って実行されなければならないような
ケースにおいてのみ待つ。
【0014】図1は好ましい実施例によるデータ処理シ
ステムのブロック図である。このシステムは、メインメ
モリ(10)、インストラクションユニット(12)、
固定小数点ユニット(14)、浮動小数点ユニット(1
6)、及びデータキャッシュ(18)を含む。メインメ
モリはインストラクションユニットにメモリバス(2
0)によって接続される。インストラクションユニット
は固定小数点ユニット及び浮動小数点ユニットにインス
トラクションバス(22)によって接続される。浮動小
数点ユニットと固定小数点ユニットはデータバス(2
4)によって相互接続され、またデータキャッシュにデ
ータバス(24)によって接続される。固定小数点ユニ
ットは、メインメモリ及びデータキャッシュにデータア
ドレスバス(26)によって接続される。データキャッ
シュはバス(28)によってメインメモリに接続され
る。
ステムのブロック図である。このシステムは、メインメ
モリ(10)、インストラクションユニット(12)、
固定小数点ユニット(14)、浮動小数点ユニット(1
6)、及びデータキャッシュ(18)を含む。メインメ
モリはインストラクションユニットにメモリバス(2
0)によって接続される。インストラクションユニット
は固定小数点ユニット及び浮動小数点ユニットにインス
トラクションバス(22)によって接続される。浮動小
数点ユニットと固定小数点ユニットはデータバス(2
4)によって相互接続され、またデータキャッシュにデ
ータバス(24)によって接続される。固定小数点ユニ
ットは、メインメモリ及びデータキャッシュにデータア
ドレスバス(26)によって接続される。データキャッ
シュはバス(28)によってメインメモリに接続され
る。
【0015】この好ましい実施例においては、インスト
ラクションユニットは、インストラクションのためのロ
ーカル高速メモリとして機能する。これは、メインメモ
リからインストラクションを取り、これらを固定小数点
ユニット及び浮動小数点ユニットにディスパッチする。
固定小数点ユニット及び浮動小数点ユニットはそれらの
夫々のインストラクションを同期的に実行する。浮動小
数点ユニット内には、先取りバッファ(30)、演算イ
ンストラクション実行ユニット(54)、及び格納イン
ストラクション実行ユニット(56)が存在する。これ
ら要素の個々の機能については図2との関連で説明され
る。データを格納したい場合、或はメモリからロードし
たい場合、固定小数点ユニットはアドレスバス(26)
上にアドレスを置く。データはデータバス(24)上を
転送される。データキャッシュはデータに対するローカ
ル高速メモリとして機能し、バス(28)上のメインメ
モリとインターフェースする。
ラクションユニットは、インストラクションのためのロ
ーカル高速メモリとして機能する。これは、メインメモ
リからインストラクションを取り、これらを固定小数点
ユニット及び浮動小数点ユニットにディスパッチする。
固定小数点ユニット及び浮動小数点ユニットはそれらの
夫々のインストラクションを同期的に実行する。浮動小
数点ユニット内には、先取りバッファ(30)、演算イ
ンストラクション実行ユニット(54)、及び格納イン
ストラクション実行ユニット(56)が存在する。これ
ら要素の個々の機能については図2との関連で説明され
る。データを格納したい場合、或はメモリからロードし
たい場合、固定小数点ユニットはアドレスバス(26)
上にアドレスを置く。データはデータバス(24)上を
転送される。データキャッシュはデータに対するローカ
ル高速メモリとして機能し、バス(28)上のメインメ
モリとインターフェースする。
【0016】図2は図1の浮動小数点ユニット(16)
のブロック図である。インストラクション先取りバッフ
ァ(30)はインストラクションユニット(図1の1
2)によって送られたインストラクションバス(22)
からのインストラクションを逐次的に格納する。インス
トラクション先取りバッファ(Instruction Prefetch B
uffer 、IPB)はインストラクションを一度に4つ格
納するが、シーケンスの第一のインストラクションはI
PB1内に格納され、最後のインストラクションはIP
B4内に格納される。演算インストラクション待ち行列
コントロール(36)及び格納インストラクション待ち
行列コントロール(38)は複数のIPBからインスト
ラクションを選択し、これらを、それぞれ、バス(5
0)及び(52)上の演算インストラクション実行ユニ
ット(54)及び格納インストラクション実行ユニット
(56)に与える。
のブロック図である。インストラクション先取りバッフ
ァ(30)はインストラクションユニット(図1の1
2)によって送られたインストラクションバス(22)
からのインストラクションを逐次的に格納する。インス
トラクション先取りバッファ(Instruction Prefetch B
uffer 、IPB)はインストラクションを一度に4つ格
納するが、シーケンスの第一のインストラクションはI
PB1内に格納され、最後のインストラクションはIP
B4内に格納される。演算インストラクション待ち行列
コントロール(36)及び格納インストラクション待ち
行列コントロール(38)は複数のIPBからインスト
ラクションを選択し、これらを、それぞれ、バス(5
0)及び(52)上の演算インストラクション実行ユニ
ット(54)及び格納インストラクション実行ユニット
(56)に与える。
【0017】演算インストラクションが演算インストラ
クション実行ユニット内に入れられると、格納インスト
ラクションカウントコントロール(40)は格納インス
トラクション実行ユニット内のこれに先行する格納イン
ストラクションの数のカウントを数える。格納インスト
ラクションカウントコントロールは、次に、関連する格
納インストラクションカウントフィールド(24)をセ
ットする。格納インストラクションカウントコントロー
ルによって数えられたカウントは“格納インストラクシ
ョンカウント(store count )”と呼ばれる。格納イン
ストラクションカウントフィールドは演算インストラク
ション実行ユニット内の個々の演算インストラクション
と関連する格納インストラクションカウントを保持する
ための一つの要素を持つ。一つの格納インストラクショ
ンが実行されると、格納インストラクションカウントコ
ントロールは格納インストラクションカウントフィール
ド内の格納インストラクションカウントを1だけ減分す
る。
クション実行ユニット内に入れられると、格納インスト
ラクションカウントコントロール(40)は格納インス
トラクション実行ユニット内のこれに先行する格納イン
ストラクションの数のカウントを数える。格納インスト
ラクションカウントコントロールは、次に、関連する格
納インストラクションカウントフィールド(24)をセ
ットする。格納インストラクションカウントコントロー
ルによって数えられたカウントは“格納インストラクシ
ョンカウント(store count )”と呼ばれる。格納イン
ストラクションカウントフィールドは演算インストラク
ション実行ユニット内の個々の演算インストラクション
と関連する格納インストラクションカウントを保持する
ための一つの要素を持つ。一つの格納インストラクショ
ンが実行されると、格納インストラクションカウントコ
ントロールは格納インストラクションカウントフィール
ド内の格納インストラクションカウントを1だけ減分す
る。
【0018】演算インストラクション実行ユニット(Ar
ithmetic Execution Unit 、ArEU)は、演算インス
トラクション待ち行列(32)、演算インストラクショ
ン実行論理(46)、及び演算インストラクション実行
決定コントロール(42)を含む。同様に、格納インス
トラクション実行ユニット(Store Execution Unit、S
tEU)は、格納インストラクション待ち行列(3
4)、格納インストラクション実行論理(48)、及び
格納インストラクション実行決定コントロール(44)
を含む。演算インストラクション待ち行列(Arithmetic
Instruction Queue、AQ)及び格納インストラクショ
ン待ち行列(Store Instruction Queue 、SQ)は、そ
れぞれ、ArEU及びStEUに供給されたインストラ
クションを格納する。演算インストラクション実行論理
(Arithmetic Execute Logic、ArEL)及び格納イン
ストラクション実行論理(Store Execute Logic 、St
EL)はこれらインストラクションを実行する。演算イ
ンストラクション実行決定コントロール(Arithmetic E
xecute Decision Control 、ArEDC)及び格納イン
ストラクション実行決定コントロール(Store Execute
Decision Control、StEDC)は、AQ及びSQ内の
インストラクションがいつ実行できるかを制御する機能
を持つ。ArEDCはライン(54)上に実行信号を供
給し、StEDCはライン(55)上に実行信号を供給
する。インストラクションは、ArEL及びStEL
に、それぞれ、バス(53)及び(55)を通じて送ら
れる。
ithmetic Execution Unit 、ArEU)は、演算インス
トラクション待ち行列(32)、演算インストラクショ
ン実行論理(46)、及び演算インストラクション実行
決定コントロール(42)を含む。同様に、格納インス
トラクション実行ユニット(Store Execution Unit、S
tEU)は、格納インストラクション待ち行列(3
4)、格納インストラクション実行論理(48)、及び
格納インストラクション実行決定コントロール(44)
を含む。演算インストラクション待ち行列(Arithmetic
Instruction Queue、AQ)及び格納インストラクショ
ン待ち行列(Store Instruction Queue 、SQ)は、そ
れぞれ、ArEU及びStEUに供給されたインストラ
クションを格納する。演算インストラクション実行論理
(Arithmetic Execute Logic、ArEL)及び格納イン
ストラクション実行論理(Store Execute Logic 、St
EL)はこれらインストラクションを実行する。演算イ
ンストラクション実行決定コントロール(Arithmetic E
xecute Decision Control 、ArEDC)及び格納イン
ストラクション実行決定コントロール(Store Execute
Decision Control、StEDC)は、AQ及びSQ内の
インストラクションがいつ実行できるかを制御する機能
を持つ。ArEDCはライン(54)上に実行信号を供
給し、StEDCはライン(55)上に実行信号を供給
する。インストラクションは、ArEL及びStEL
に、それぞれ、バス(53)及び(55)を通じて送ら
れる。
【0019】ArEDC及びStEDCは、各々、格納
インストラクションカウントフィールド及びライン(5
7)及びライン(58)によって示される2つのインス
トラクション待ち行列内のインストラクションを参照し
て夫々の実行ユニット内のインストラクションの実行を
制御する。待ち行列の最も下の位置内のインストラクシ
ョンから開始し、個々の決定コントロールは、待ち行列
の最も下の二つの位置内のインストラクションの一つが
実行できるか否かをチェックする。決定コントロール
は、インストラクションの実行を、これが、このインス
トラクションと他の実行ユニットの待ち行列内のインス
トラクションの一つとの間に食い違いが発見された時に
のみ遅延する。
インストラクションカウントフィールド及びライン(5
7)及びライン(58)によって示される2つのインス
トラクション待ち行列内のインストラクションを参照し
て夫々の実行ユニット内のインストラクションの実行を
制御する。待ち行列の最も下の位置内のインストラクシ
ョンから開始し、個々の決定コントロールは、待ち行列
の最も下の二つの位置内のインストラクションの一つが
実行できるか否かをチェックする。決定コントロール
は、インストラクションの実行を、これが、このインス
トラクションと他の実行ユニットの待ち行列内のインス
トラクションの一つとの間に食い違いが発見された時に
のみ遅延する。
【0020】これら二つの決定コントロールはどちらか
のインストラクションが依存する可能性を持つことを決
定するためにAQ内の個々のインストラクションと関連
する格納インストラクションカウントを使用する。例え
ば、ArEDCは、インストラクションの格納インスト
ラクションカウントがゼロの場合、このインストラクシ
ョンの前に格納インストラクションは存在せず、これが
実行できることを知る。但し、インストラクションの格
納インストラクションカウントがゼロより大きな場合
は、ArEDCはそのインストラクションがそれに先行
する格納インストラクションの一つのターゲットの上に
書き込むか否かをチェックしなければならない。StE
DCは演算インストラクションの格納インストラクショ
ンカウントがゼロでないときは、そのインストラクショ
ンの前に格納インストラクションが存在し、一つの格納
インストラクションが実行できることを知る。他方、演
算インストラクションの格納インストラクションカウン
トがゼロのときは、StEDCはその演算インストラク
ションがそれが実行を望む格納インストラクションのタ
ーゲットに書き込もうとしているか否かをチェックしな
ければならない。そうでない場合は、この格納インスト
ラクションは実行できる。但し、その格納インストラク
ションが演算インストラクションのターゲットを格納し
ようとしているときは、この格納インストラクションは
演算インストラクションが実行されるのを待たなければ
ならない。
のインストラクションが依存する可能性を持つことを決
定するためにAQ内の個々のインストラクションと関連
する格納インストラクションカウントを使用する。例え
ば、ArEDCは、インストラクションの格納インスト
ラクションカウントがゼロの場合、このインストラクシ
ョンの前に格納インストラクションは存在せず、これが
実行できることを知る。但し、インストラクションの格
納インストラクションカウントがゼロより大きな場合
は、ArEDCはそのインストラクションがそれに先行
する格納インストラクションの一つのターゲットの上に
書き込むか否かをチェックしなければならない。StE
DCは演算インストラクションの格納インストラクショ
ンカウントがゼロでないときは、そのインストラクショ
ンの前に格納インストラクションが存在し、一つの格納
インストラクションが実行できることを知る。他方、演
算インストラクションの格納インストラクションカウン
トがゼロのときは、StEDCはその演算インストラク
ションがそれが実行を望む格納インストラクションのタ
ーゲットに書き込もうとしているか否かをチェックしな
ければならない。そうでない場合は、この格納インスト
ラクションは実行できる。但し、その格納インストラク
ションが演算インストラクションのターゲットを格納し
ようとしているときは、この格納インストラクションは
演算インストラクションが実行されるのを待たなければ
ならない。
【0021】図3は格納インストラクション実行決定コ
ントロールがいかにして格納インストラクション待ち行
列内のインストラクションをチェックするかのフローチ
ャートである。この図面はSQ0内の格納インストラク
ションのチェックの最初の数ステップを示す。最初に、
ステップ(100)において、StEDCはAQ0内の
演算インストラクションの格納インストラクションカウ
ントをチェックする。格納インストラクションカウント
がゼロでないときは、この格納インストラクションがシ
ーケンス内の最初となり、StEDCはステップ(10
2)に進み、この格納インストラクションを実行する。
格納インストラクションカウントがゼロのときは、演算
インストラクションが最初となり、StEDCはステッ
プ(104)に進み、AQ0演算インストラクションの
ターゲットレジスタとSQ0格納インストラクションの
ターゲットレジスタを比較する。ターゲットが一致する
ときは、この格納インストラクションはステップ(10
6)において遅延される。ターゲットが一致しないとき
は、StEDCはステップ(108)に進み、AQ1内
のインストラクションの格納インストラクションカウン
トをチェックする。上と同様に、格納インストラクショ
ンカウントがゼロでないときは、この格納インストラク
ションが最初となり、StEDCはステップ(110)
においてこの格納インストラクションを実行することが
できる。AQ1内のインストラクションの格納インスト
ラクションカウントがゼロのときは、格納インストラク
ション決定コントロールは、AQ1内の演算インストラ
クションのターゲットレジスタがSQ0内の格納インス
トラクションのターゲットレジスタと同一であるか否か
チェックしなければならない。これらが同一であるとき
は、StEDCはステップ(114)に進み、実行を遅
延しなければならない。同一でないときは、StEDC
はAQ2内の演算インストラクションを実行する。この
プロセスが演算インストラクション待ち行列内の全ての
インストラクションがチェックされるまで継続される。
格納インストラクションのターゲットレジスタが任意の
AQターゲットレジスタと一致しないときは、格納イン
ストラクションは、元のシーケンス内でそれが演算イン
ストラクションに続く場合でも、実行することができ
る。
ントロールがいかにして格納インストラクション待ち行
列内のインストラクションをチェックするかのフローチ
ャートである。この図面はSQ0内の格納インストラク
ションのチェックの最初の数ステップを示す。最初に、
ステップ(100)において、StEDCはAQ0内の
演算インストラクションの格納インストラクションカウ
ントをチェックする。格納インストラクションカウント
がゼロでないときは、この格納インストラクションがシ
ーケンス内の最初となり、StEDCはステップ(10
2)に進み、この格納インストラクションを実行する。
格納インストラクションカウントがゼロのときは、演算
インストラクションが最初となり、StEDCはステッ
プ(104)に進み、AQ0演算インストラクションの
ターゲットレジスタとSQ0格納インストラクションの
ターゲットレジスタを比較する。ターゲットが一致する
ときは、この格納インストラクションはステップ(10
6)において遅延される。ターゲットが一致しないとき
は、StEDCはステップ(108)に進み、AQ1内
のインストラクションの格納インストラクションカウン
トをチェックする。上と同様に、格納インストラクショ
ンカウントがゼロでないときは、この格納インストラク
ションが最初となり、StEDCはステップ(110)
においてこの格納インストラクションを実行することが
できる。AQ1内のインストラクションの格納インスト
ラクションカウントがゼロのときは、格納インストラク
ション決定コントロールは、AQ1内の演算インストラ
クションのターゲットレジスタがSQ0内の格納インス
トラクションのターゲットレジスタと同一であるか否か
チェックしなければならない。これらが同一であるとき
は、StEDCはステップ(114)に進み、実行を遅
延しなければならない。同一でないときは、StEDC
はAQ2内の演算インストラクションを実行する。この
プロセスが演算インストラクション待ち行列内の全ての
インストラクションがチェックされるまで継続される。
格納インストラクションのターゲットレジスタが任意の
AQターゲットレジスタと一致しないときは、格納イン
ストラクションは、元のシーケンス内でそれが演算イン
ストラクションに続く場合でも、実行することができ
る。
【0022】図4は格納インストラクション待ち行列内
の全てのインストラクションをチェックするための図3
の圧縮されたバージョンを示すフローチャートである。
図4において、変数“x”は演算インストラクション待
ち行列内の位置を表わし、0から7までの値を持つ。変
数“n”は格納インストラクション待ち行列内の位置を
表わし、これも、0から7までの値を持つ。ステップ
(120)の最初の反復において、SQ0に対する
“n”はゼロであり、AQ0に対する“x”はゼロであ
る。ステップ(120)において、StEDCはAQx
内の演算インストラクションの格納インストラクション
カウントをそれが実行のためにチェックしている格納イ
ンストラクションの位置に1を加えた数と比較する。例
えば、StEDCがSQ1内の格納インストラクション
をチェックしている場合は、これはAQ内のインストラ
クションの格納インストラクションカウントを数“2”
と比較する。格納インストラクションカウントがこれに
等しいかこれ以上であるときは、この格納インストラク
ションは演算インストラクションの前に来て、この格納
インストラクションはステップ(122)において実行
することができる。格納インストラクションカウントが
これ以下であるときは、演算インストラクションが最初
に来て、StEDCはステップ(124)に進む。ステ
ップ(124)において、StEDCはこれら二つのイ
ンストラクションのターゲットレジスタを比較する。こ
れら二つのインストラクションが同一のターゲットレジ
スタを持つときは、StEDCはステップ(126)に
進み、格納インストラクションを遅延する。これらター
ゲットレジスタが等しくないときは、StDECはステ
ップ(128)に進み、“x”を増分する。StEDC
は、次にステップ(120)へと進み、演算インストラ
クション待ち行列内の次のインストラクションの処理を
行なう。StEDCはSQ内の最初の二つの格納インス
トラクションに対してこのプロセスを遂行し、実行可能
である最初の格納インストラクションを実行する。
の全てのインストラクションをチェックするための図3
の圧縮されたバージョンを示すフローチャートである。
図4において、変数“x”は演算インストラクション待
ち行列内の位置を表わし、0から7までの値を持つ。変
数“n”は格納インストラクション待ち行列内の位置を
表わし、これも、0から7までの値を持つ。ステップ
(120)の最初の反復において、SQ0に対する
“n”はゼロであり、AQ0に対する“x”はゼロであ
る。ステップ(120)において、StEDCはAQx
内の演算インストラクションの格納インストラクション
カウントをそれが実行のためにチェックしている格納イ
ンストラクションの位置に1を加えた数と比較する。例
えば、StEDCがSQ1内の格納インストラクション
をチェックしている場合は、これはAQ内のインストラ
クションの格納インストラクションカウントを数“2”
と比較する。格納インストラクションカウントがこれに
等しいかこれ以上であるときは、この格納インストラク
ションは演算インストラクションの前に来て、この格納
インストラクションはステップ(122)において実行
することができる。格納インストラクションカウントが
これ以下であるときは、演算インストラクションが最初
に来て、StEDCはステップ(124)に進む。ステ
ップ(124)において、StEDCはこれら二つのイ
ンストラクションのターゲットレジスタを比較する。こ
れら二つのインストラクションが同一のターゲットレジ
スタを持つときは、StEDCはステップ(126)に
進み、格納インストラクションを遅延する。これらター
ゲットレジスタが等しくないときは、StDECはステ
ップ(128)に進み、“x”を増分する。StEDC
は、次にステップ(120)へと進み、演算インストラ
クション待ち行列内の次のインストラクションの処理を
行なう。StEDCはSQ内の最初の二つの格納インス
トラクションに対してこのプロセスを遂行し、実行可能
である最初の格納インストラクションを実行する。
【0023】図5は演算インストラクション実行決定コ
ントロールが演算インストラクション待ち行列内のイン
ストラクションをいかにチェックするかについてのフロ
ーチャートである。この図面は、AQ0内の演算インス
トラクションのチェックの最初の数ステップを示す。ス
テップ(200)において、ArEDCはAQ0内のイ
ンストラクションの格納インストラクションカウントが
ゼロであるか否かチェックする。格納インストラクショ
ンカウントがゼロのときは、ArEDCはステップ(2
02)に進み、この演算インストラクションがこれに先
行する格納インストラクションを持たないため、AQ0
内の演算インストラクションを実行する。格納インスト
ラクションカウントがゼロに等しくないときは、ArE
DCはステップ(204)に進む。この演算インストラ
クションの前に一つの格納インストラクションが先行す
るために、ArEDCはAQ0内の演算インストラクシ
ョンのターゲットとSQ0内の格納インストラクション
のターゲットを比較する。これにターゲットが一致する
場合は、ステップ(206)において、演算インストラ
クションが遅延される。これらターゲットが一致しない
ときは、ArEDCはステップ(208)に進み、AQ
0内のインストラクションの格納インストラクションカ
ウントが1に等しいか否かチェックする。1に等しいと
きは、ArEDCは、この決定コントロールがSQ0内
の一つの先行する格納インストラクションを既にチェッ
ク済であるために、ステップ(210)においてこの演
算インストラクションを実行することができる。格納イ
ンストラクションカウントが1に等しくないときは、A
rEDCはステップ(212)へと進む。ステップ(2
12)において、ArEDCはAQ0内の演算インスト
ラクションのターゲットをSQ1内の格納インストラク
ションのターゲットと比較する。これらターゲットが等
しい場合は、ArEDCは、ステップ(214)に進
み、演算インストラクションを遅延する。これらターゲ
ットが一致しないときは、ArEDCはプロセスを継続
する。演算インストラクションのターゲットレジスタが
SQターゲットレジスタのいずれとも一致しないとき
は、この演算インストラクションは、これが元のシーケ
ンス内において格納インストラクションに続く場合でも
実行することができる。
ントロールが演算インストラクション待ち行列内のイン
ストラクションをいかにチェックするかについてのフロ
ーチャートである。この図面は、AQ0内の演算インス
トラクションのチェックの最初の数ステップを示す。ス
テップ(200)において、ArEDCはAQ0内のイ
ンストラクションの格納インストラクションカウントが
ゼロであるか否かチェックする。格納インストラクショ
ンカウントがゼロのときは、ArEDCはステップ(2
02)に進み、この演算インストラクションがこれに先
行する格納インストラクションを持たないため、AQ0
内の演算インストラクションを実行する。格納インスト
ラクションカウントがゼロに等しくないときは、ArE
DCはステップ(204)に進む。この演算インストラ
クションの前に一つの格納インストラクションが先行す
るために、ArEDCはAQ0内の演算インストラクシ
ョンのターゲットとSQ0内の格納インストラクション
のターゲットを比較する。これにターゲットが一致する
場合は、ステップ(206)において、演算インストラ
クションが遅延される。これらターゲットが一致しない
ときは、ArEDCはステップ(208)に進み、AQ
0内のインストラクションの格納インストラクションカ
ウントが1に等しいか否かチェックする。1に等しいと
きは、ArEDCは、この決定コントロールがSQ0内
の一つの先行する格納インストラクションを既にチェッ
ク済であるために、ステップ(210)においてこの演
算インストラクションを実行することができる。格納イ
ンストラクションカウントが1に等しくないときは、A
rEDCはステップ(212)へと進む。ステップ(2
12)において、ArEDCはAQ0内の演算インスト
ラクションのターゲットをSQ1内の格納インストラク
ションのターゲットと比較する。これらターゲットが等
しい場合は、ArEDCは、ステップ(214)に進
み、演算インストラクションを遅延する。これらターゲ
ットが一致しないときは、ArEDCはプロセスを継続
する。演算インストラクションのターゲットレジスタが
SQターゲットレジスタのいずれとも一致しないとき
は、この演算インストラクションは、これが元のシーケ
ンス内において格納インストラクションに続く場合でも
実行することができる。
【0024】図6は演算インストラクション待ち行列内
の全てのインストラクションをチェックするための図5
の圧縮バージョンのフローチャートを示す。図4に示さ
れるように、変数“x”は演算インストラクション待ち
行列内の位置を表わし、0から7の値を取る。変数
“n”は格納インストラクション待ち行列内の位置を表
わし、これも、0から7の値を取る。ステップ(22
0)の最初の反復において、SQ0に対する“n”はゼ
ロであり、AQ0に対する“x”はゼロである。ステッ
プ(220)において、ArEDCは、AQx内の演算
インストラクションと関連する格納インストラクション
カウントを“n+1”と比較する。格納インストラクシ
ョンカウントが“n+1”に等しいかこれ以上でないと
きは、この格納インストラクションは演算インストラク
ションに続き、この演算インストラクションはステップ
(222)において実行することができる。格納インス
トラクションカウントが“n+1”に等しいかこれ以上
のときは、ArEDCは、この格納インストラクション
が演算インストラクションの前に来るためにステップ
(244)に進む。ステップ(224)において、Ar
EDCは演算インストラクションと格納インストラクシ
ョンのターゲットレジスタを比較する。これら二つのタ
ーゲットが同一であるときは、ArEDCはステップ
(226)に進み、演算インストラクションを格納イン
ストラクションが実行されるまで遅延する。これらター
ゲットが一致しないときは、ArEDCはステップ(2
28)に進み、“n”を増分する。ArEDCはステッ
プ(220)に戻り、次の格納インストラクションに対
してこれら全てのステップを再度実行する。ArEDC
はAQ内の最初の二つの演算インストラクションに対し
てこのプロセスを遂行し、実行可能な最初の演算インス
トラクションを実行する。
の全てのインストラクションをチェックするための図5
の圧縮バージョンのフローチャートを示す。図4に示さ
れるように、変数“x”は演算インストラクション待ち
行列内の位置を表わし、0から7の値を取る。変数
“n”は格納インストラクション待ち行列内の位置を表
わし、これも、0から7の値を取る。ステップ(22
0)の最初の反復において、SQ0に対する“n”はゼ
ロであり、AQ0に対する“x”はゼロである。ステッ
プ(220)において、ArEDCは、AQx内の演算
インストラクションと関連する格納インストラクション
カウントを“n+1”と比較する。格納インストラクシ
ョンカウントが“n+1”に等しいかこれ以上でないと
きは、この格納インストラクションは演算インストラク
ションに続き、この演算インストラクションはステップ
(222)において実行することができる。格納インス
トラクションカウントが“n+1”に等しいかこれ以上
のときは、ArEDCは、この格納インストラクション
が演算インストラクションの前に来るためにステップ
(244)に進む。ステップ(224)において、Ar
EDCは演算インストラクションと格納インストラクシ
ョンのターゲットレジスタを比較する。これら二つのタ
ーゲットが同一であるときは、ArEDCはステップ
(226)に進み、演算インストラクションを格納イン
ストラクションが実行されるまで遅延する。これらター
ゲットが一致しないときは、ArEDCはステップ(2
28)に進み、“n”を増分する。ArEDCはステッ
プ(220)に戻り、次の格納インストラクションに対
してこれら全てのステップを再度実行する。ArEDC
はAQ内の最初の二つの演算インストラクションに対し
てこのプロセスを遂行し、実行可能な最初の演算インス
トラクションを実行する。
【0025】図7は格納インストラクション実行ユニッ
ト内の格納インストラクションを遅延する一例としての
ブロック図を示す。インストラクションの流れは二つの
加算インストラクション及びこれに続く一つの格納イン
ストラクションである。第一の加算インストラクション
そのターゲットとしてレジスタ2を持ち、第二の加算イ
ンストラクションはそのターゲットとしてレジスタ4を
持ち、格納インストラクションはそのターゲット(或は
ソース)としてレジスタ2を持つ。図7に示されるよう
に、第一及び第二の加算インストラクションは演算イン
ストラクション待ち行列内の二つの位置、つまり、位置
(60)及び(62)を占拠する。格納インストラクシ
ョンは格納インストラクション待ち行列(70)内の最
も下の位置を占拠する。演算インストラクションと関連
する格納インストラクションカウントはゼロであり、格
納インストラクションカウントフィールド内の位置(8
0)及び(82)内に示される。加算インストラクショ
ンのゼロの格納インストラクションカウントはこれらの
前に格納インストラクションが先行しないことを意味す
る。インストラクションが逐次的に実行されることを期
待されるときは、両方の加算インストラクションが格納
インストラクションの前に実行される。加算インストラ
クションの前に格納インストラクションが実行されるた
めには、これは、これら二つの加算インストラクション
のいずれかのターゲットと同一のターゲットレジスタを
持ってはならない。AQの最も下の加算インストラクシ
ョンのターゲットはレジスタ2であり、格納インストラ
クションのターゲットはレジスタ2であるため、この格
納インストラクションは最も下の加算インストラクショ
ンが実行されるまで待たなければならない。
ト内の格納インストラクションを遅延する一例としての
ブロック図を示す。インストラクションの流れは二つの
加算インストラクション及びこれに続く一つの格納イン
ストラクションである。第一の加算インストラクション
そのターゲットとしてレジスタ2を持ち、第二の加算イ
ンストラクションはそのターゲットとしてレジスタ4を
持ち、格納インストラクションはそのターゲット(或は
ソース)としてレジスタ2を持つ。図7に示されるよう
に、第一及び第二の加算インストラクションは演算イン
ストラクション待ち行列内の二つの位置、つまり、位置
(60)及び(62)を占拠する。格納インストラクシ
ョンは格納インストラクション待ち行列(70)内の最
も下の位置を占拠する。演算インストラクションと関連
する格納インストラクションカウントはゼロであり、格
納インストラクションカウントフィールド内の位置(8
0)及び(82)内に示される。加算インストラクショ
ンのゼロの格納インストラクションカウントはこれらの
前に格納インストラクションが先行しないことを意味す
る。インストラクションが逐次的に実行されることを期
待されるときは、両方の加算インストラクションが格納
インストラクションの前に実行される。加算インストラ
クションの前に格納インストラクションが実行されるた
めには、これは、これら二つの加算インストラクション
のいずれかのターゲットと同一のターゲットレジスタを
持ってはならない。AQの最も下の加算インストラクシ
ョンのターゲットはレジスタ2であり、格納インストラ
クションのターゲットはレジスタ2であるため、この格
納インストラクションは最も下の加算インストラクショ
ンが実行されるまで待たなければならない。
【0026】図8は格納インストラクション実行ユニッ
ト内の格納インストラクションが演算インストラクショ
ン実行ユニット内のもともとこの前に来るインストラク
ションの前に実行される一例を示す。示されるインスト
ラクションの流れは二つの加算インストラクションに続
く一つの格納インストラクションである。第一の加算イ
ンストラクションはそのターゲットとしてレジスタ2を
持ち、第二の加算インストラクションはそのターゲット
としてレジスタ4を持ち、格納インストラクションはそ
のターゲットとしてレジスタ3を持つ。これら二つの加
算インストラクションは演算インストラクション待ち行
列内の最も下の二つの位置を占拠し、格納インストラク
ションは格納インストラクション待ち行列内の最も下の
位置を占拠する。これは、格納インストラクションが二
つの加算インストラクションの一つ或は両方の前に実行
されるためには、これは、この二つの加算インストラク
ションの一つのターゲットと同一のターゲットレジスタ
を持ってはならないことを意味する。格納インストラク
ションとこの二つの加算インストラクションは同一のタ
ーゲットレジスタを持たないため、格納インストラクシ
ョンは二つの加算インストラクションの前に実行するこ
とができ、これは、元のシーケンスと異なる順番であ
る。
ト内の格納インストラクションが演算インストラクショ
ン実行ユニット内のもともとこの前に来るインストラク
ションの前に実行される一例を示す。示されるインスト
ラクションの流れは二つの加算インストラクションに続
く一つの格納インストラクションである。第一の加算イ
ンストラクションはそのターゲットとしてレジスタ2を
持ち、第二の加算インストラクションはそのターゲット
としてレジスタ4を持ち、格納インストラクションはそ
のターゲットとしてレジスタ3を持つ。これら二つの加
算インストラクションは演算インストラクション待ち行
列内の最も下の二つの位置を占拠し、格納インストラク
ションは格納インストラクション待ち行列内の最も下の
位置を占拠する。これは、格納インストラクションが二
つの加算インストラクションの一つ或は両方の前に実行
されるためには、これは、この二つの加算インストラク
ションの一つのターゲットと同一のターゲットレジスタ
を持ってはならないことを意味する。格納インストラク
ションとこの二つの加算インストラクションは同一のタ
ーゲットレジスタを持たないため、格納インストラクシ
ョンは二つの加算インストラクションの前に実行するこ
とができ、これは、元のシーケンスと異なる順番であ
る。
【0027】図9は演算インストラクション実行ユニッ
ト内で加算インストラクションが先行する格納インスト
ラクションのために遅延される例を示す図である。これ
はまた一つの加算インストラクションが演算インストラ
クション実行ユニット内のもう一つの加算インストラク
ションと順番を変えて実行されるところを示す。図9の
インストラクションのシーケンスは一つの格納インスト
ラクションに続く二つの加算インストラクションであ
る。格納インストラクションはそのターゲットとしてレ
ジスタ2を持ち、第一の加算インストラクションはその
ターゲットとしてレジスタ2を持ち、第二の加算インス
トラクションはそのターゲットとしてレジスタ4を持
つ。これら二つの加算インストラクションは演算インス
トラクション待ち行列内の最も下の位置を占拠し、格納
インストラクションは格納インストラクション待ち行列
内の最も下の地位を占拠する。個々の演算インストラク
ションと関連する格納インストラクションカウントはこ
れらに先行する一つの格納インストラクションが存在す
るために1である。これら加算インストラクションのい
ずれかが実行されるためには、このターゲットを格納イ
ンストラクションのターゲットと比較しなければならな
い。ターゲットレジスタ2への加算インストラクション
は格納インストラクションと同一ターゲットを持つため
に、これは、遅延され、格納インストラクションが実行
されるのを待たなければならない。但し、第二の加算イ
ンストラクションと格納インストラクションとの間には
データの依存関係は存在せず、従って、第二の加算イン
ストラクションは実行することができる。従って、一つ
の加算インストラクションがもう一つの加算インストラ
クションとの順番を越えて実行でき、同様にこれに先行
する格納インストラクションとの順番を越えて実行でき
る。
ト内で加算インストラクションが先行する格納インスト
ラクションのために遅延される例を示す図である。これ
はまた一つの加算インストラクションが演算インストラ
クション実行ユニット内のもう一つの加算インストラク
ションと順番を変えて実行されるところを示す。図9の
インストラクションのシーケンスは一つの格納インスト
ラクションに続く二つの加算インストラクションであ
る。格納インストラクションはそのターゲットとしてレ
ジスタ2を持ち、第一の加算インストラクションはその
ターゲットとしてレジスタ2を持ち、第二の加算インス
トラクションはそのターゲットとしてレジスタ4を持
つ。これら二つの加算インストラクションは演算インス
トラクション待ち行列内の最も下の位置を占拠し、格納
インストラクションは格納インストラクション待ち行列
内の最も下の地位を占拠する。個々の演算インストラク
ションと関連する格納インストラクションカウントはこ
れらに先行する一つの格納インストラクションが存在す
るために1である。これら加算インストラクションのい
ずれかが実行されるためには、このターゲットを格納イ
ンストラクションのターゲットと比較しなければならな
い。ターゲットレジスタ2への加算インストラクション
は格納インストラクションと同一ターゲットを持つため
に、これは、遅延され、格納インストラクションが実行
されるのを待たなければならない。但し、第二の加算イ
ンストラクションと格納インストラクションとの間には
データの依存関係は存在せず、従って、第二の加算イン
ストラクションは実行することができる。従って、一つ
の加算インストラクションがもう一つの加算インストラ
クションとの順番を越えて実行でき、同様にこれに先行
する格納インストラクションとの順番を越えて実行でき
る。
【0028】図10は演算インストラクション実行ユニ
ット内の演算インストラクションがその前に来る格納イ
ンストラクション実行ユニット内の格納インストラクシ
ョンの前に実行される例を示す図である。このインスト
ラクションの流れは一つの格納インストラクションに続
く二つの加算インストラクションである。ターゲットレ
ジスタは、それぞれ、レジスタ2、レジスタ3、及びレ
ジスタ4である。個々の演算インストラクションに対す
る格納インストラクションカウントは、個々がそれに先
行する一つの格納インストラクションを持つために1で
ある。演算インストラクション待ち行列の最も下の加算
インストラクションは、このターゲットレジスタが3で
あり、格納インストラクション待ち行列内の格納インス
トラクションのターゲットレジスタが2であるために、
実行することができる。
ット内の演算インストラクションがその前に来る格納イ
ンストラクション実行ユニット内の格納インストラクシ
ョンの前に実行される例を示す図である。このインスト
ラクションの流れは一つの格納インストラクションに続
く二つの加算インストラクションである。ターゲットレ
ジスタは、それぞれ、レジスタ2、レジスタ3、及びレ
ジスタ4である。個々の演算インストラクションに対す
る格納インストラクションカウントは、個々がそれに先
行する一つの格納インストラクションを持つために1で
ある。演算インストラクション待ち行列の最も下の加算
インストラクションは、このターゲットレジスタが3で
あり、格納インストラクション待ち行列内の格納インス
トラクションのターゲットレジスタが2であるために、
実行することができる。
【0029】図11は一つの格納インストラクションが
それに先行されるもう一つの格納インストラクションの
前に順番を越えて実行される一例のブロック図である。
このインストラクションの流れは、レジスタ2への加算
インストラクション、レジスタ4への加算インストラク
ション、レジスタ2の格納インストラクション、及びレ
ジスタ3の格納インストラクションである。これら二つ
の格納インストラクションは格納インストラクション待
ち行列内の最も下の位置を占拠し、これら二つの加算イ
ンストラクションは演算インストラクション待ち行列内
の最も下の位置を占拠する。元のインストラクションの
流れの中にこの演算インストラクションに先行する格納
インストラクションは存在しないので、個々の演算イン
ストラクションと関連する格納インストラクションカウ
ントはゼロである。格納インストラクション待ち行列の
最も下の所の格納インストラクションは、演算インスト
ラクション待ち行列の最も下の所の演算インストラクシ
ョンもターゲットレジスタ2を持つために実行すること
ができない。従って、格納インストラクションは加算イ
ンストラクションが実行されるまで遅延される。但し、
格納インストラクション待ち行列内の第二の位置の格納
インストラクションはターゲットが一致しないために実
行することができる。レジスタ3の格納インストラクシ
ョンは、レジスタ2への格納インストラクションの前に
実行することができる。こうして、一つの格納インスト
ラクションがもう一つの格納インストラクションの順番
を越えて実行でき、同様にそれに先行する演算インスト
ラクションの順番を越えて実行できる。
それに先行されるもう一つの格納インストラクションの
前に順番を越えて実行される一例のブロック図である。
このインストラクションの流れは、レジスタ2への加算
インストラクション、レジスタ4への加算インストラク
ション、レジスタ2の格納インストラクション、及びレ
ジスタ3の格納インストラクションである。これら二つ
の格納インストラクションは格納インストラクション待
ち行列内の最も下の位置を占拠し、これら二つの加算イ
ンストラクションは演算インストラクション待ち行列内
の最も下の位置を占拠する。元のインストラクションの
流れの中にこの演算インストラクションに先行する格納
インストラクションは存在しないので、個々の演算イン
ストラクションと関連する格納インストラクションカウ
ントはゼロである。格納インストラクション待ち行列の
最も下の所の格納インストラクションは、演算インスト
ラクション待ち行列の最も下の所の演算インストラクシ
ョンもターゲットレジスタ2を持つために実行すること
ができない。従って、格納インストラクションは加算イ
ンストラクションが実行されるまで遅延される。但し、
格納インストラクション待ち行列内の第二の位置の格納
インストラクションはターゲットが一致しないために実
行することができる。レジスタ3の格納インストラクシ
ョンは、レジスタ2への格納インストラクションの前に
実行することができる。こうして、一つの格納インスト
ラクションがもう一つの格納インストラクションの順番
を越えて実行でき、同様にそれに先行する演算インスト
ラクションの順番を越えて実行できる。
【0030】当業者においては、この装置は、実行ユニ
ットがその待ち行列内のインストラクションを任意の順
番で実行でき、またもう一つの実行ユニット内のインス
トラクションの順番を越えてこれらを実行できるように
拡張可能なことが理解できるものである。遅延は、一つ
のユニット内で実行されるべきインストラクションがも
う一つのユニット内のインストラクションの実行を待た
なければならないときにのみ起こる。
ットがその待ち行列内のインストラクションを任意の順
番で実行でき、またもう一つの実行ユニット内のインス
トラクションの順番を越えてこれらを実行できるように
拡張可能なことが理解できるものである。遅延は、一つ
のユニット内で実行されるべきインストラクションがも
う一つのユニット内のインストラクションの実行を待た
なければならないときにのみ起こる。
【0031】本発明が一例としての実施例との関連で説
明されたが、この説明は限定を意図するものではない。
一例として示される実施例の様々な修正、並びに本発明
の他の実施例が当業者においてはこの説明を見ると明ら
かとなるものである。従って、特許請求項は、これら修
正及びその他の実施例も本発明の真の範囲内に入るもの
としてカバーするものと見なされるべきである。
明されたが、この説明は限定を意図するものではない。
一例として示される実施例の様々な修正、並びに本発明
の他の実施例が当業者においてはこの説明を見ると明ら
かとなるものである。従って、特許請求項は、これら修
正及びその他の実施例も本発明の真の範囲内に入るもの
としてカバーするものと見なされるべきである。
【0032】
【発明の効果】以上説明したように本発明のデータ処理
システム及びデータ処理方法によれば、複数の実行ユニ
ット内でインストラクションを独立して実行できる能力
を持つデータ処理システムが提供される。また、インス
トラクションをシーケンスに従わずに実行することが可
能となる。
システム及びデータ処理方法によれば、複数の実行ユニ
ット内でインストラクションを独立して実行できる能力
を持つデータ処理システムが提供される。また、インス
トラクションをシーケンスに従わずに実行することが可
能となる。
【図1】データ処理システムの一例としての要素を示す
ブロック図である。
ブロック図である。
【図2】一例としての浮動小数点ユニット及びその分離
した演算インストラクション及び格納インストラクショ
ン実行ユニットを示すブロック図である。
した演算インストラクション及び格納インストラクショ
ン実行ユニットを示すブロック図である。
【図3】格納インストラクション実行ユニット内の待ち
行列の最も下の位置内のインストラクションの制御を示
すフローチャートである。
行列の最も下の位置内のインストラクションの制御を示
すフローチャートである。
【図4】格納インストラクション実行ユニット内の待ち
行列内の全てのインストラクションの制御を示すフロー
チャートである。
行列内の全てのインストラクションの制御を示すフロー
チャートである。
【図5】演算インストラクション実行ユニット内の待ち
行列の最も下の位置内のインストラクションの制御を示
すフローチャートである。
行列の最も下の位置内のインストラクションの制御を示
すフローチャートである。
【図6】演算インストラクション実行ユニット内の待ち
行列内の全てのインストラクションの制御を示すフロー
チャートである。
行列内の全てのインストラクションの制御を示すフロー
チャートである。
【図7】格納インストラクション実行ユニット内の待ち
行列の最も下の位置内の一つのインストラクションの遅
延例を示すブロック図である。
行列の最も下の位置内の一つのインストラクションの遅
延例を示すブロック図である。
【図8】格納インストラクション実行ユニット内の待ち
行列の最も下の位置内の一つのインストラクションをシ
ーケンスを越えて実行する例を示すブロック図である。
行列の最も下の位置内の一つのインストラクションをシ
ーケンスを越えて実行する例を示すブロック図である。
【図9】演算インストラクション実行ユニット内の待ち
行列の最も下の位置内のインストラクションを遅延し、
演算インストラクション実行ユニット内の待ち行列の第
二の位置内のインストラクションをシーケンスを越えて
実行する例を示すブロック図である。
行列の最も下の位置内のインストラクションを遅延し、
演算インストラクション実行ユニット内の待ち行列の第
二の位置内のインストラクションをシーケンスを越えて
実行する例を示すブロック図である。
【図10】演算インストラクション実行ユニット内の待
ち行列の最も下の位置内の一つのインストラクションを
シーケンスを越えて実行する例を示すブロック図であ
る。
ち行列の最も下の位置内の一つのインストラクションを
シーケンスを越えて実行する例を示すブロック図であ
る。
【図11】格納インストラクション実行ユニット内の待
ち行列の最も下の位置内のインストラクションを遅延
し、格納インストラクション実行ユニット内の待ち行列
の第二の位置内のインストラクションをシーケンスを越
えて実行する例を示すブロック図である。
ち行列の最も下の位置内のインストラクションを遅延
し、格納インストラクション実行ユニット内の待ち行列
の第二の位置内のインストラクションをシーケンスを越
えて実行する例を示すブロック図である。
12 インストラクションユニット 14 固定小数点ユニット 16 浮動小数点ユニット 30 インストラクション先取バッファ 32 演算インストラクション待ち行列 34 格納インストラクション待ち行列 42 演算インストラクション実行決定制御 44 格納インストラクション実行決定制御 46 演算インストラクション実行論理 48 格納インストラクション実行論理
───────────────────────────────────────────────────── フロントページの続き (72)発明者 トロイ、ニール、ヒックス アメリカ合衆国テキサス州、オースチン、 ティンバーサイド、ドライブ、12804
Claims (10)
- 【請求項1】各々が複数のインストラクションを格納及
び実行するための独立した手段を含む複数の実行ユニッ
トと、 複数のインストラクションの各々が前記複数の実行ユニ
ットの一つのみに供給されるシーケンスの複数のインス
トラクションから前記実行ユニットにインストラクショ
ンを供給するための手段と、 前記実行ユニットに接続され、正しい結果を得るため
に、第一の実行ユニット内のあるインストラクションが
第二の実行ユニット内のインストラクションより前に実
行を完了しなければならない場合を検出するための手段
と、 前記検出手段に応答して、前記第二の実行ユニット内の
前記インストラクションの実行を前記第一の実行ユニッ
ト内の前記インストラクションが実行を完了するまで遅
延させるための手段と、 を含むことを特徴とするデータ処理システム。 - 【請求項2】前記インストラクションの各々が演算イン
ストラクション、分岐インストラクション、ロードイン
ストラクション、格納インストラクション、及びシステ
ム制御インストラクションを含むインストラクションの
複数のクラスの一つに属することを特徴とする請求項1
のデータ処理システム。 - 【請求項3】前記実行ユニットの各々が前記インストラ
クションの複数のクラスの一つを実行するために専用化
されることを特徴とする請求項2のデータ処理システ
ム。 - 【請求項4】前記インストラクションを供給するための
手段に接続された前記インストラクションのシーケンス
内の個々のインストラクションのクラスを決定するため
の手段がさらに含まれることを特徴とする請求項3のデ
ータ処理システム。 - 【請求項5】前記インストラクションを供給するための
手段がさらにインストラクションのあるクラスに属する
インストラクションを前記クラスのインストラクション
を実行するための専用の実行ユニットに排他的に供給す
るための手段を含むことを特徴とする請求項4のデータ
処理システム。 - 【請求項6】第一の実行ユニット内の個々のインストラ
クションを第二の実行ユニット内の前記シーケンス内に
おいて前記の個々のインストラクションに先行するイン
ストラクションのカウントと関連付けるための手段がさ
らに含まれることを特徴とする請求項5のデータ処理シ
ステム。 - 【請求項7】前記遅延させるための手段が、 前記第一の実行ユニット内のインストラクションの実行
を前記インストラクションと関連するカウントがゼロで
なく、また前記インストラクションに先行する前記第二
の実行ユニット内のインストラクションが正しい結果を
得るために前記インストラクションの前に実行されなけ
ればならないときにのみ遅延させるための手段と、 前記第二の実行ユニット内のインストラクションの実行
を前記第一の実行ユニット内のインストラクションと関
連するカウントが前記第二の実行ユニット内の前記イン
ストラクションに先行するインストラクションの数に等
しいかこれ以下であり、また正しい結果を得るために前
記第一の実行ユニット内の前記インストラクションが前
記第二の実行ユニット内の前記インストラクションの前
に実行されなければならないときにのみ遅延させるため
の手段と、 を含むことを特徴とする請求項6のデータ処理システ
ム。 - 【請求項8】第一のクラスのインストラクションが浮動
小数点演算インストラクションであり、前記第一の実行
ユニットが前記第一のクラスのインストラクションを実
行するために専用化され、第二のクラスのインストラク
ションが浮動小数点格納インストラクションであり、前
記第二の実行ユニットが前記第二のクラスのインストラ
クションを実行するために専用化されることを特徴とす
る請求項7のデータ処理システム。 - 【請求項9】データ処理システム内で処理を行なうため
の方法において、 シーケンスの複数のインストラクションから複数の実行
ユニットにインストラクションを前記インストラクショ
ンの各々が前記実行ユニットの一つのみに供給されるよ
うな方法にて提供するステップと、 前記複数の実行ユニット内で独立してインストラクショ
ンを格納及び実行するステップと、 第一の実行ユニット内のインストラクションが正しい結
果を得るために第二の実行ユニット内のインストラクシ
ョンの実行より前に実行を完了しなければならない場合
を検出するステップと、 前記第二の実行ユニット内の前記インストラクションの
実行を前記検出ステップに応答して前記第一の実行ユニ
ット内の前記インストラクションの実行が完了するまで
遅延させるステップと、 を含むことを特徴とする処理の方法。 - 【請求項10】複数のインストラクションを格納するた
めのメモリ手段と、 複数の実行ユニットを含むプロセッサ手段と、 前記実行ユニットに含まれてインストラクションの格納
及び実行を行うための独立した手段と、前記実行ユニッ
トに含まれて前記インストラクションの各々が前記実行
ユニットの1つのみに与えられるように、前記複数の実
行ユニットにインストラクションのシークエンスからイ
ンストラクションを与えるための手段と、 前記メモリ手段からインストラクションを取り出し、前
記インストラクションを前記プロセッサ手段に送るため
の手段と、 前記実行ユニットに接続されて正しい結果を得るために
第一の実行ユニット内のインストラクションが第二の実
行ユニット内のインストラクションの実行より前に実行
を完了しなければならない場合を検出するための手段
と、 前記検出手段に応答して、前記第二の実行ユニット内の
前記インストラクションの実行を前記第一の実行ユニッ
ト内の前記インストラクションが実行を完了するまで遅
延させるための手段と、 を含むことを特徴とするデータ処理システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US750132 | 1991-08-26 | ||
US07/750,132 US5363495A (en) | 1991-08-26 | 1991-08-26 | Data processing system with multiple execution units capable of executing instructions out of sequence |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05233286A true JPH05233286A (ja) | 1993-09-10 |
JP2503164B2 JP2503164B2 (ja) | 1996-06-05 |
Family
ID=25016632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4182510A Expired - Lifetime JP2503164B2 (ja) | 1991-08-26 | 1992-07-09 | デ―タ処理システム |
Country Status (3)
Country | Link |
---|---|
US (1) | US5363495A (ja) |
EP (1) | EP0529913A2 (ja) |
JP (1) | JP2503164B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5975967A (en) * | 1997-02-04 | 1999-11-02 | Showa Corporation | Tilt device for marine propulsion device and method for assembling the tilt device |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69130138T2 (de) * | 1990-06-29 | 1999-05-06 | Digital Equipment Corp., Maynard, Mass. | Sprungvorhersageeinheit für hochleistungsfähigen Prozessor |
JP2925818B2 (ja) * | 1991-04-05 | 1999-07-28 | 株式会社東芝 | 並列処理制御装置 |
US5630157A (en) * | 1991-06-13 | 1997-05-13 | International Business Machines Corporation | Computer organization for multiple and out-of-order execution of condition code testing and setting instructions |
US5522052A (en) * | 1991-07-04 | 1996-05-28 | Matsushita Electric Industrial Co. Ltd. | Pipeline processor for processing instructions having a data dependence relationship |
US6073231A (en) * | 1993-10-18 | 2000-06-06 | Via-Cyrix, Inc. | Pipelined processor with microcontrol of register translation hardware |
EP0779577B1 (en) * | 1993-10-18 | 2002-05-22 | VIA-Cyrix, Inc. | Micoprocessor pipe control and register translation |
US5630149A (en) * | 1993-10-18 | 1997-05-13 | Cyrix Corporation | Pipelined processor with register renaming hardware to accommodate multiple size registers |
US6138230A (en) * | 1993-10-18 | 2000-10-24 | Via-Cyrix, Inc. | Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline |
JP2550897B2 (ja) * | 1993-11-29 | 1996-11-06 | 日本電気株式会社 | マルチプロセッサシステムのバリア同期装置 |
US5535358A (en) * | 1993-12-27 | 1996-07-09 | Matsushita Electric Industrial Co., Ltd. | Cache memory control circuit and method for controlling reading and writing requests |
JP3639319B2 (ja) * | 1994-01-25 | 2005-04-20 | 富士通株式会社 | 並列計算機システム,データ転送制御方法および送受信制御装置 |
US5751986A (en) * | 1994-03-01 | 1998-05-12 | Intel Corporation | Computer system with self-consistent ordering mechanism |
SG47981A1 (en) * | 1994-03-01 | 1998-04-17 | Intel Corp | Pipeline process of instructions in a computer system |
JPH07302200A (ja) * | 1994-04-28 | 1995-11-14 | Hewlett Packard Co <Hp> | 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。 |
US5465336A (en) * | 1994-06-30 | 1995-11-07 | International Business Machines Corporation | Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system |
US5666506A (en) * | 1994-10-24 | 1997-09-09 | International Business Machines Corporation | Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle |
US5640526A (en) * | 1994-12-21 | 1997-06-17 | International Business Machines Corporation | Superscaler instruction pipeline having boundary indentification logic for variable length instructions |
US5835753A (en) * | 1995-04-12 | 1998-11-10 | Advanced Micro Devices, Inc. | Microprocessor with dynamically extendable pipeline stages and a classifying circuit |
US5850563A (en) * | 1995-09-11 | 1998-12-15 | International Business Machines Corporation | Processor and method for out-of-order completion of floating-point operations during load/store multiple operations |
US5751983A (en) * | 1995-10-03 | 1998-05-12 | Abramson; Jeffrey M. | Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations |
US5848256A (en) * | 1996-09-30 | 1998-12-08 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for address disambiguation using address component identifiers |
US5870612A (en) * | 1996-10-15 | 1999-02-09 | International Business Machines Corporation | Method and apparatus for condensed history buffer |
US5805906A (en) * | 1996-10-15 | 1998-09-08 | International Business Machines Corporation | Method and apparatus for writing information to registers in a data processing system using a number of registers for processing instructions |
US5860014A (en) * | 1996-10-15 | 1999-01-12 | International Business Machines Corporation | Method and apparatus for improved recovery of processor state using history buffer |
US6070235A (en) * | 1997-07-14 | 2000-05-30 | International Business Machines Corporation | Data processing system and method for capturing history buffer data |
US6163839A (en) * | 1998-09-30 | 2000-12-19 | Intel Corporation | Non-stalling circular counterflow pipeline processor with reorder buffer |
DE19948099A1 (de) | 1999-10-06 | 2001-04-19 | Infineon Technologies Ag | Prozessorsystem, insbesondere ein Prozessorsystem für Kommunikationseinrichtungen |
DE10101949C1 (de) * | 2001-01-17 | 2002-08-08 | Infineon Technologies Ag | Datenverarbeitungsverfahren |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US9720693B2 (en) | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02301830A (ja) * | 1989-05-17 | 1990-12-13 | Mitsubishi Electric Corp | 情報処理方式 |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3447135A (en) * | 1966-08-18 | 1969-05-27 | Ibm | Peripheral data exchange |
US3588829A (en) * | 1968-11-14 | 1971-06-28 | Ibm | Integrated memory system with block transfer to a buffer store |
GB1443777A (en) * | 1973-07-19 | 1976-07-28 | Int Computers Ltd | Data processing apparatus |
US4153932A (en) * | 1974-03-29 | 1979-05-08 | Massachusetts Institute Of Technology | Data processing apparatus for highly parallel execution of stored programs |
US3962706A (en) * | 1974-03-29 | 1976-06-08 | Massachusetts Institute Of Technology | Data processing apparatus for highly parallel execution of stored programs |
US3997896A (en) * | 1975-06-30 | 1976-12-14 | Honeywell Information Systems, Inc. | Data processing system providing split bus cycle operation |
US4128882A (en) * | 1976-08-19 | 1978-12-05 | Massachusetts Institute Of Technology | Packet memory system with hierarchical structure |
US4130885A (en) * | 1976-08-19 | 1978-12-19 | Massachusetts Institute Of Technology | Packet memory system for processing many independent memory transactions concurrently |
US4181934A (en) * | 1976-12-27 | 1980-01-01 | International Business Machines Corporation | Microprocessor architecture with integrated interrupts and cycle steals prioritized channel |
US4232366A (en) * | 1978-10-25 | 1980-11-04 | Digital Equipment Corporation | Bus for a data processing system with overlapped sequences |
US4376976A (en) * | 1980-07-31 | 1983-03-15 | Sperry Corporation | Overlapped macro instruction control system |
US4370710A (en) * | 1980-08-26 | 1983-01-25 | Control Data Corporation | Cache memory organization utilizing miss information holding registers to prevent lockup from cache misses |
JPS57155666A (en) * | 1981-03-20 | 1982-09-25 | Fujitsu Ltd | Instruction controlling system of vector processor |
JPS58151655A (ja) * | 1982-03-03 | 1983-09-08 | Fujitsu Ltd | 情報処理装置 |
JPS5932045A (ja) * | 1982-08-16 | 1984-02-21 | Hitachi Ltd | 情報処理装置 |
US4594655A (en) * | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
JPS6015746A (ja) * | 1983-07-08 | 1985-01-26 | Hitachi Ltd | デ−タ処理装置 |
US4807115A (en) * | 1983-10-07 | 1989-02-21 | Cornell Research Foundation, Inc. | Instruction issuing mechanism for processors with multiple functional units |
JPH0658631B2 (ja) * | 1983-12-19 | 1994-08-03 | 株式会社日立製作所 | デ−タ処理装置 |
US4630195A (en) * | 1984-05-31 | 1986-12-16 | International Business Machines Corporation | Data processing system with CPU register to register data transfers overlapped with data transfer to and from main storage |
JPH0762823B2 (ja) * | 1985-05-22 | 1995-07-05 | 株式会社日立製作所 | デ−タ処理装置 |
US4734852A (en) * | 1985-08-30 | 1988-03-29 | Advanced Micro Devices, Inc. | Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor |
US4763294A (en) * | 1985-12-19 | 1988-08-09 | Wang Laboratories, Inc. | Method and apparatus for floating point operations |
DE3751503T2 (de) * | 1986-03-26 | 1996-05-09 | Hitachi Ltd | Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen. |
US4903196A (en) * | 1986-05-02 | 1990-02-20 | International Business Machines Corporation | Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor |
US4773041A (en) * | 1986-06-02 | 1988-09-20 | Unisys Corporation | System for executing a sequence of operation codes with some codes being executed out of order in a pipeline parallel processor |
JPS63131230A (ja) * | 1986-11-21 | 1988-06-03 | Hitachi Ltd | 情報処理装置 |
JP3137117B2 (ja) * | 1987-03-27 | 2001-02-19 | 将容 曽和 | 高速処理計算機 |
US4855947A (en) * | 1987-05-27 | 1989-08-08 | Amdahl Corporation | Microprogrammable pipeline interlocks based on the validity of pipeline states |
EP0295646B1 (en) * | 1987-06-19 | 1996-09-11 | Hitachi, Ltd. | Arithmetic operation processing apparatus of the parallel processing type and compiler which is used in this apparatus |
US4916652A (en) * | 1987-09-30 | 1990-04-10 | International Business Machines Corporation | Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures |
EP0312764A3 (en) * | 1987-10-19 | 1991-04-10 | International Business Machines Corporation | A data processor having multiple execution units for processing plural classes of instructions in parallel |
US5150469A (en) * | 1988-12-12 | 1992-09-22 | Digital Equipment Corporation | System and method for processor pipeline control by selective signal deassertion |
US5075840A (en) * | 1989-01-13 | 1991-12-24 | International Business Machines Corporation | Tightly coupled multiprocessor instruction synchronization |
US5093908A (en) * | 1989-04-17 | 1992-03-03 | International Business Machines Corporation | Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor |
US5197137A (en) * | 1989-07-28 | 1993-03-23 | International Business Machines Corporation | Computer architecture for the concurrent execution of sequential programs |
US5150470A (en) * | 1989-12-20 | 1992-09-22 | International Business Machines Corporation | Data processing system with instruction queue having tags indicating outstanding data status |
US5214763A (en) * | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
-
1991
- 1991-08-26 US US07/750,132 patent/US5363495A/en not_active Expired - Fee Related
-
1992
- 1992-07-09 JP JP4182510A patent/JP2503164B2/ja not_active Expired - Lifetime
- 1992-08-18 EP EP92307532A patent/EP0529913A2/en not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02301830A (ja) * | 1989-05-17 | 1990-12-13 | Mitsubishi Electric Corp | 情報処理方式 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5975967A (en) * | 1997-02-04 | 1999-11-02 | Showa Corporation | Tilt device for marine propulsion device and method for assembling the tilt device |
Also Published As
Publication number | Publication date |
---|---|
US5363495A (en) | 1994-11-08 |
JP2503164B2 (ja) | 1996-06-05 |
EP0529913A2 (en) | 1993-03-03 |
EP0529913A3 (ja) | 1994-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2503164B2 (ja) | デ―タ処理システム | |
JP2701179B2 (ja) | データ処理システム | |
US6606704B1 (en) | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode | |
EP0087978B1 (en) | Information processing unit | |
JP3531166B2 (ja) | レジスタ・リネーミングのシステム及び方法 | |
US7191321B2 (en) | Microengine for parallel processor architecture | |
US5809325A (en) | Circuit and method for scheduling instructions by predicting future availability of resources required for execution | |
US8316191B2 (en) | Memory controllers for processor having multiple programmable units | |
US7305500B2 (en) | Sram controller for parallel processor architecture including a read queue and an order queue for handling requests | |
US6349382B1 (en) | System for store forwarding assigning load and store instructions to groups and reorder queues to keep track of program order | |
US20090307469A1 (en) | Register set used in multithreaded parallel processor architecture | |
US7895418B1 (en) | Operand queue for use in a floating point unit to reduce read-after-write latency and method operation | |
JPH07160501A (ja) | データ処理システム | |
JPS62156735A (ja) | 浮動小数点演算処理装置 | |
RU2142157C1 (ru) | Способ функционирования системы обработки | |
JPH0776918B2 (ja) | データ処理システム及び方法 | |
US6237066B1 (en) | Supporting multiple outstanding requests to multiple targets in a pipelined memory system | |
US6324640B1 (en) | System and method for dispatching groups of instructions using pipelined register renaming | |
JPH11282678A (ja) | ス―パスカラ・プロセッサでストア命令を処理する方法及び装置 | |
JP3093673B2 (ja) | リネーム・レジスタを割り付ける方法及びプロセッサ | |
AU597117B2 (en) | Cache storage priority | |
JP2620505B2 (ja) | スーパースカラ・プロセッサ・システムの同期化効率を向上させる方法およびシステム | |
EP0306891A2 (en) | Pipelined slave protocol for high performance CPU-FPU cluster | |
HUT75816A (en) | Method of operation of a system for processing information, as well as the processing system | |
JPH10283178A (ja) | 命令を発行するための方法及びシステム |