JPH0778732B2 - 複数スカラ命令の並列実行支援装置 - Google Patents
複数スカラ命令の並列実行支援装置Info
- Publication number
- JPH0778732B2 JPH0778732B2 JP3096096A JP9609691A JPH0778732B2 JP H0778732 B2 JPH0778732 B2 JP H0778732B2 JP 3096096 A JP3096096 A JP 3096096A JP 9609691 A JP9609691 A JP 9609691A JP H0778732 B2 JPH0778732 B2 JP H0778732B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- result
- logical
- operands
- execution
- 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.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
Description
【0001】
【産業上の利用分野】本発明は、スカラマシンにおける
スカラ命令の実行に係り、特に、命令の1つが、同時に
実行される命令により発生された結果をオペランドとし
て使用するときのスカラ命令の並列実行に関する。
スカラ命令の実行に係り、特に、命令の1つが、同時に
実行される命令により発生された結果をオペランドとし
て使用するときのスカラ命令の並列実行に関する。
【0002】
【従来の技術】パイプライン方式は、コンピュータ設計
者がコンピュータシステムの性能を改善するために使用
する標準的な手法である。このようなパイプライン方式
においては、命令は幾つかのステップまたはステージに
区分され、これらのステップまたはステージには独自の
ハードウェアが割り当てられて、そのステージに割り当
てられた機能を実施している。パイプラインを通る命令
ストリームの速度は、パイプラインの長さよりむしろ、
新しい命令がパイプに入る速度に依存する。最大1命令
が1サイクルあたりパイプラインに供給される理想的な
パイプライン構造においては、単位時間あたりに実行さ
れる命令数の測度であるパイプラインスループットは、
サイクル時間にのみ依存する。nステージパイプライン
実施のサイクルタイムが、mをパイプライン方式を利用
しない対応する実施のサイクルタイムとして、m/nで
与えられるとすると、パイプライン方式による最大の潜
在的改善度はnになる。
者がコンピュータシステムの性能を改善するために使用
する標準的な手法である。このようなパイプライン方式
においては、命令は幾つかのステップまたはステージに
区分され、これらのステップまたはステージには独自の
ハードウェアが割り当てられて、そのステージに割り当
てられた機能を実施している。パイプラインを通る命令
ストリームの速度は、パイプラインの長さよりむしろ、
新しい命令がパイプに入る速度に依存する。最大1命令
が1サイクルあたりパイプラインに供給される理想的な
パイプライン構造においては、単位時間あたりに実行さ
れる命令数の測度であるパイプラインスループットは、
サイクル時間にのみ依存する。nステージパイプライン
実施のサイクルタイムが、mをパイプライン方式を利用
しない対応する実施のサイクルタイムとして、m/nで
与えられるとすると、パイプライン方式による最大の潜
在的改善度はnになる。
【0003】以上は、パイプライン方式がコンピュータ
のシステム性能においてn倍の改良の可能性を与えるこ
とを示しているが、幾つかの実際上の制限により実際の
性能利得は、理想的な場合のものより小さくなる。これ
らの制限は、パイプライン・ハザードがあることによ
る。パイプライン・ハザードは、命令がパイプライン構
造を最大速度で通過することを妨げるパイプライン構造
の何らかの側面であると定義される。パイプライン・ハ
ザードは、データ依存性,構造的(ハードウェアリソー
ス)不一致,制御依存性および他の因子によりもたらさ
れる。
のシステム性能においてn倍の改良の可能性を与えるこ
とを示しているが、幾つかの実際上の制限により実際の
性能利得は、理想的な場合のものより小さくなる。これ
らの制限は、パイプライン・ハザードがあることによ
る。パイプライン・ハザードは、命令がパイプライン構
造を最大速度で通過することを妨げるパイプライン構造
の何らかの側面であると定義される。パイプライン・ハ
ザードは、データ依存性,構造的(ハードウェアリソー
ス)不一致,制御依存性および他の因子によりもたらさ
れる。
【0004】データ依存性ハザードは、第2命令が第1
命令の結果を読出し、続いて使用する前に、第1命令が
その結果を書込まなくてはならないことから、ライト・
リード・インタロックと呼ばれることがある。読出しの
前にこの書込みを行うために、書込みが発生するまでに
読出しの実行はブロックされなければならない。このブ
ロックにより、「バブル(bubble)」または「ス
トール(stall)」と呼ばれる不活性なサイクル
が、ブロックされた命令の実行の中に導入される。この
バブルはストールされた命令の全体にわたる実行時間に
1サイクルを付加し、従ってパイプラインのスループッ
トを減少させるように作用する。構造的バザードおよび
データ依存性ハザードの検出と分解は、ハードウェアで
実施されるときは、ハードウェアの不十分な利用のため
の性能ロスをもたらすだけでなく、マシンのクリティカ
ルパスにもなる。このハードウェアは、マシンの実現可
能なサイクルタイムを拘束することにもなる。従って、
以上のハザードはパイプラインのスループットに作用す
る2つの因子、即ち1サイクルあたり実行される命令の
数およびマシンのサイクルタイムに悪影響を及ぼすこと
になる。
命令の結果を読出し、続いて使用する前に、第1命令が
その結果を書込まなくてはならないことから、ライト・
リード・インタロックと呼ばれることがある。読出しの
前にこの書込みを行うために、書込みが発生するまでに
読出しの実行はブロックされなければならない。このブ
ロックにより、「バブル(bubble)」または「ス
トール(stall)」と呼ばれる不活性なサイクル
が、ブロックされた命令の実行の中に導入される。この
バブルはストールされた命令の全体にわたる実行時間に
1サイクルを付加し、従ってパイプラインのスループッ
トを減少させるように作用する。構造的バザードおよび
データ依存性ハザードの検出と分解は、ハードウェアで
実施されるときは、ハードウェアの不十分な利用のため
の性能ロスをもたらすだけでなく、マシンのクリティカ
ルパスにもなる。このハードウェアは、マシンの実現可
能なサイクルタイムを拘束することにもなる。従って、
以上のハザードはパイプラインのスループットに作用す
る2つの因子、即ち1サイクルあたり実行される命令の
数およびマシンのサイクルタイムに悪影響を及ぼすこと
になる。
【0005】ハザードがあると、パイプラインのハード
ウェアの有効使用を実現させる場合に、パイプライン構
造に命令が入ったときそれらの命令のスケジューリング
または順序がかなり重要になってくる。ハードウェアが
有効に使用されれば、これは性能利得にも反映される。
要するに、パイプライン・スケジューリングは、ハザー
ドの回避を試みることによりパイプラインをその最大能
力まで利用しようとすることである。スケジューリング
は静的,動的に、または両方法の組合わせにより実現す
ることができる。静的スケジューリングは、ハードウェ
アをこのスケジューリングよりさらに完全に利用する等
価な命令ストリームに対する実行前に、命令シーケンス
を再配置することにより実現される。この静的スケジュ
ーリングの例を、表1および表2に示す。ただし、2つ
のLoad命令間のインタロックは回避されている。
ウェアの有効使用を実現させる場合に、パイプライン構
造に命令が入ったときそれらの命令のスケジューリング
または順序がかなり重要になってくる。ハードウェアが
有効に使用されれば、これは性能利得にも反映される。
要するに、パイプライン・スケジューリングは、ハザー
ドの回避を試みることによりパイプラインをその最大能
力まで利用しようとすることである。スケジューリング
は静的,動的に、または両方法の組合わせにより実現す
ることができる。静的スケジューリングは、ハードウェ
アをこのスケジューリングよりさらに完全に利用する等
価な命令ストリームに対する実行前に、命令シーケンス
を再配置することにより実現される。この静的スケジュ
ーリングの例を、表1および表2に示す。ただし、2つ
のLoad命令間のインタロックは回避されている。
【0006】
【表1】
【表2】 スケジューリング方式はいくつかのハザードを解決して
性能の改良をもたらすが、全てのハザードが解決できる
わけではない。スケジューリング方式により解決できな
いデータ依存性に対して、これを解決する方法が提案さ
れている。これらの提案は多重演算を並列に実行するも
のである。1つの提案によれば、命令ストリームはハー
ドウェアを利用して解析され、単一ユニットとしての送
出に対する複合命令にまとめられる。この方法は、一連
の命令が同時的送出に対する先入れ先出しに厳密に基づ
いてまとめられる「スーパスカラマシン」とは異なって
いる。ハードウェアが2つの命令の同時的送出を支援す
るように設計されるとすると、複合命令マシンは次のよ
うに表2の命令シーケンスを対にする。即ち、(−X
1)(X2 LOAD)(ADD LOAD)(ADD
LCMP)(SUBCOMPO)(X3,X4)、こ
れにより、第2LOAD命令と第2ADD命令の間のデ
ータ依存性が回避される。しかしながら、同等のスーパ
スカラマシンは次のような命令対を送出することにな
る。即ち、(X1,X2)(LOAD,ADD)(LO
AD,ADD)(LCMP SUB)(COMP X
3)(X4−)は、LOAD−ADDデータ依存性のペ
ナルティを招くことになる。
性能の改良をもたらすが、全てのハザードが解決できる
わけではない。スケジューリング方式により解決できな
いデータ依存性に対して、これを解決する方法が提案さ
れている。これらの提案は多重演算を並列に実行するも
のである。1つの提案によれば、命令ストリームはハー
ドウェアを利用して解析され、単一ユニットとしての送
出に対する複合命令にまとめられる。この方法は、一連
の命令が同時的送出に対する先入れ先出しに厳密に基づ
いてまとめられる「スーパスカラマシン」とは異なって
いる。ハードウェアが2つの命令の同時的送出を支援す
るように設計されるとすると、複合命令マシンは次のよ
うに表2の命令シーケンスを対にする。即ち、(−X
1)(X2 LOAD)(ADD LOAD)(ADD
LCMP)(SUBCOMPO)(X3,X4)、こ
れにより、第2LOAD命令と第2ADD命令の間のデ
ータ依存性が回避される。しかしながら、同等のスーパ
スカラマシンは次のような命令対を送出することにな
る。即ち、(X1,X2)(LOAD,ADD)(LO
AD,ADD)(LCMP SUB)(COMP X
3)(X4−)は、LOAD−ADDデータ依存性のペ
ナルティを招くことになる。
【0007】データ依存性インタロックを解消する第2
の解決法が、「ComputerArchitectu
re News,March,1988,TWMコンピ
ュータアーキテクチュア」,W.A.Wulfにより提
案されている。このWMコンピュータアーキテクチュア
の提案は次のようなものである。 1.単一命令に1つ以上の演算を埋め込む命令セットを
構成する。 2.構成された命令内ではレジスタインタロックを許容
する。 3.図1に示したように2つのALUを連結して、単一
命令内のインタロックを解消させる。
の解決法が、「ComputerArchitectu
re News,March,1988,TWMコンピ
ュータアーキテクチュア」,W.A.Wulfにより提
案されている。このWMコンピュータアーキテクチュア
の提案は次のようなものである。 1.単一命令に1つ以上の演算を埋め込む命令セットを
構成する。 2.構成された命令内ではレジスタインタロックを許容
する。 3.図1に示したように2つのALUを連結して、単一
命令内のインタロックを解消させる。
【0008】
【発明が解決しようとする課題】上記Wulfの提案に
おいては、新しい命令は、インタロックが解消されるべ
きである全ての命令シーケンス対に対して構成されなけ
ればならないことは明らかである。その結果、法外な数
のオペレーションコードが新しい命令セットに対して定
義されるか、または得られるオペレーションコードの数
により制限される限界がインタロックが解消され得る一
連の演算シーケンス上に配置される。さらに、この方式
はアーキテクチュアの初期の実現とコンパチブルなオブ
ジェクトコードではない。この方式の他の欠点は、連接
が単一命令の実行時間の2倍に近いものを要求する多重
演算命令の実行をもたらし得る2つのALUを必要とす
ることである。このような実行時間の増加は、マシンの
サイクルタイムの増加をもたらすと共に、全ての命令を
不必要に実行し難くする。
おいては、新しい命令は、インタロックが解消されるべ
きである全ての命令シーケンス対に対して構成されなけ
ればならないことは明らかである。その結果、法外な数
のオペレーションコードが新しい命令セットに対して定
義されるか、または得られるオペレーションコードの数
により制限される限界がインタロックが解消され得る一
連の演算シーケンス上に配置される。さらに、この方式
はアーキテクチュアの初期の実現とコンパチブルなオブ
ジェクトコードではない。この方式の他の欠点は、連接
が単一命令の実行時間の2倍に近いものを要求する多重
演算命令の実行をもたらし得る2つのALUを必要とす
ることである。このような実行時間の増加は、マシンの
サイクルタイムの増加をもたらすと共に、全ての命令を
不必要に実行し難くする。
【0009】既存のマシンが所定の命令セットを逐次送
出し、実行するように構成されている場合は、命令の送
出と実行を並列に行うと都合がよいことになる。命令の
送出と実行を並列に行うことにより、マシンのスループ
ットは増加する。さらに、このような並列性の利点は、
命令パイプラインのデータ依存性ハザードから生じる命
令の実行の待ち時間を最小にすることにより最も大きく
なる。このようにして並列性への適合によりハザードに
よるインタロックを解消させて、このような待ち時間の
減少をはかるべきである。ただし、上記のような利点
は、既存マシンに対する構成上の変更から生じるコスト
を負担することなしに、またインタロックを処理する全
ての可能な命令対およびそれらの組合わせを与えるよう
な新しい命令セットを生成することなしに、さらに多量
のハードウェアを付加することなしに、与えられるべき
である。また、上記のような適合化はマシンのサイクル
タイムに対して、インパクトを与えないようなものであ
るべきである。
出し、実行するように構成されている場合は、命令の送
出と実行を並列に行うと都合がよいことになる。命令の
送出と実行を並列に行うことにより、マシンのスループ
ットは増加する。さらに、このような並列性の利点は、
命令パイプラインのデータ依存性ハザードから生じる命
令の実行の待ち時間を最小にすることにより最も大きく
なる。このようにして並列性への適合によりハザードに
よるインタロックを解消させて、このような待ち時間の
減少をはかるべきである。ただし、上記のような利点
は、既存マシンに対する構成上の変更から生じるコスト
を負担することなしに、またインタロックを処理する全
ての可能な命令対およびそれらの組合わせを与えるよう
な新しい命令セットを生成することなしに、さらに多量
のハードウェアを付加することなしに、与えられるべき
である。また、上記のような適合化はマシンのサイクル
タイムに対して、インパクトを与えないようなものであ
るべきである。
【0010】
【課題を解決するための手段】上記目的を達成するため
に、本発明は単一マシンサイクルにおいて複数のスカラ
命令を同時に実行する装置を用いて、スカラ演算のシー
ケンスを逐次実行するために構成されたコンピュータを
提供する。前記装置は同時に実行される命令間のデータ
依存性を解消させるものであり、これは、命令対の一方
が命令対の他方の実行により生成された結果をオペラン
ドとして要求するときでも、命令対が実行可能であるこ
とを意味する。
に、本発明は単一マシンサイクルにおいて複数のスカラ
命令を同時に実行する装置を用いて、スカラ演算のシー
ケンスを逐次実行するために構成されたコンピュータを
提供する。前記装置は同時に実行される命令間のデータ
依存性を解消させるものであり、これは、命令対の一方
が命令対の他方の実行により生成された結果をオペラン
ドとして要求するときでも、命令対が実行可能であるこ
とを意味する。
【0011】本発明においては、データ依存性を解消さ
せながら複数のスカラ命令を同時に実行する装置は、同
時に実行されるべき複数のスカラ命令とこれらの命令の
実行順序に関する情報を受け、前記スカラ命令の第2の
ものがスカラ命令の第1のものの実行により生成される
結果をオペランドとして使用する構成を備えている。さ
らに前記装置は、第1および第2スカラ命令により使用
される3つのオペランドを受ける構成を備えると共に、
この構成に接続され、複数のスカラ命令を実行する演算
を示すと共にそれらの実行順序を示す制御信号を発生す
る命令を受ける制御要素を備えている。多機能ALUが
オペランドおよび制御構成に接続されると共に、第1命
令の実行と並列に、第2命令の実行に対応する単一結果
を生成することにより、制御信号およびオペランドに応
答する。
せながら複数のスカラ命令を同時に実行する装置は、同
時に実行されるべき複数のスカラ命令とこれらの命令の
実行順序に関する情報を受け、前記スカラ命令の第2の
ものがスカラ命令の第1のものの実行により生成される
結果をオペランドとして使用する構成を備えている。さ
らに前記装置は、第1および第2スカラ命令により使用
される3つのオペランドを受ける構成を備えると共に、
この構成に接続され、複数のスカラ命令を実行する演算
を示すと共にそれらの実行順序を示す制御信号を発生す
る命令を受ける制御要素を備えている。多機能ALUが
オペランドおよび制御構成に接続されると共に、第1命
令の実行と並列に、第2命令の実行に対応する単一結果
を生成することにより、制御信号およびオペランドに応
答する。
【0012】本発明は、他の側面において、複数のスカ
ラ命令の同時実行を支援する装置であって、同時に実行
する命令の第1のものにより生成される結果が同時に実
行する命令の第2のもののオペランドとして使用される
装置を提供する。この装置は、第1および第2命令によ
り用いられて第1命令の結果と同時に第2命令の結果を
与える3つのオペランドを受ける構成を備えたデータ依
存性解消ALUの構成により、第1命令の実行と並列に
第2命令を実行するものである。
ラ命令の同時実行を支援する装置であって、同時に実行
する命令の第1のものにより生成される結果が同時に実
行する命令の第2のもののオペランドとして使用される
装置を提供する。この装置は、第1および第2命令によ
り用いられて第1命令の結果と同時に第2命令の結果を
与える3つのオペランドを受ける構成を備えたデータ依
存性解消ALUの構成により、第1命令の実行と並列に
第2命令を実行するものである。
【0013】従って、本発明の主要な目的は、命令の並
列実行を容易にして既存コンピュータの性能を増大させ
る装置を提供することにある。
列実行を容易にして既存コンピュータの性能を増大させ
る装置を提供することにある。
【0014】この装置の重要な利点は、実行された命令
内に存在するデータ依存性ハザードから生じる命令実行
の待ち時間を低減させることにある。
内に存在するデータ依存性ハザードから生じる命令実行
の待ち時間を低減させることにある。
【0015】この装置における目的は、並列に実行され
る命令間に存在するデータ依存性ハザードに起因するイ
ンタロックを解消させることにある。
る命令間に存在するデータ依存性ハザードに起因するイ
ンタロックを解消させることにある。
【0016】これらの目的と利点は、命令の逐次実行用
に設計されたスカラコンピュータとコンパチブルな装置
による、性能と命令実行の付随する改良により実現され
る。
に設計されたスカラコンピュータとコンパチブルな装置
による、性能と命令実行の付随する改良により実現され
る。
【0017】これらの目的と利点およびその他の目的と
利点の実現は、添付図面による以下の詳細な説明から明
らかになろう。
利点の実現は、添付図面による以下の詳細な説明から明
らかになろう。
【0018】
【実施例】以下の説明において、用語「マシンサイク
ル」とは命令の実行に必要なパイプラインステップを意
味する。マシンサイクルはパイプラインステージに対応
する個別のインタバルを含むものである。「スカラ命
令」とはスカラオペランドを用いて実行される命令であ
る。スカラオペランドは一価量を表わすオペランドであ
る。用語「複合化(compounding)」は命令
シーケンスに含まれる命令のグループ化(groupi
ng)を意味し、このグループ化はグループ化された命
令の同時実行すなわち並列実行を目的とするものであ
る。少なくとも、複合化は同時実行のための2つの命令
の「対化(pairing)」により代表される。本発
明においては、複合化された命令は、これらがスカラ実
行のために与えられたときに持つ形態から変更されるこ
とはない。以下に説明するように、複合化された命令は
「タグ」すなわち並列実行のための命令のグループ化を
示すグループ命令に付与されたビットを伴っている。従
って、これらのビットは複合化命令の始めと終りを示す
ものである。
ル」とは命令の実行に必要なパイプラインステップを意
味する。マシンサイクルはパイプラインステージに対応
する個別のインタバルを含むものである。「スカラ命
令」とはスカラオペランドを用いて実行される命令であ
る。スカラオペランドは一価量を表わすオペランドであ
る。用語「複合化(compounding)」は命令
シーケンスに含まれる命令のグループ化(groupi
ng)を意味し、このグループ化はグループ化された命
令の同時実行すなわち並列実行を目的とするものであ
る。少なくとも、複合化は同時実行のための2つの命令
の「対化(pairing)」により代表される。本発
明においては、複合化された命令は、これらがスカラ実
行のために与えられたときに持つ形態から変更されるこ
とはない。以下に説明するように、複合化された命令は
「タグ」すなわち並列実行のための命令のグループ化を
示すグループ命令に付与されたビットを伴っている。従
って、これらのビットは複合化命令の始めと終りを示す
ものである。
【0019】以下においては、従来の方式では解消でき
ない実行ユニット・インタロックを解消する改良された
ハードウェアについて説明する。その目的は、これらの
インタロックを解消し、付加されるハードウェアからの
サイクルタイムに対するペナルティを軽減するか含まな
いようにするのに必要なハードウェアを最小にすること
にある。この方法の実施にはアーキテクチュア上の変更
は何ら必要とされず、従って既存のアーキテクチュアに
対してオブジェクトコードのコンパチビリティは維持さ
れる。
ない実行ユニット・インタロックを解消する改良された
ハードウェアについて説明する。その目的は、これらの
インタロックを解消し、付加されるハードウェアからの
サイクルタイムに対するペナルティを軽減するか含まな
いようにするのに必要なハードウェアを最小にすること
にある。この方法の実施にはアーキテクチュア上の変更
は何ら必要とされず、従って既存のアーキテクチュアに
対してオブジェクトコードのコンパチビリティは維持さ
れる。
【0020】既存のアーキテクチュアとしては、例え
ば、本出願の譲渡人であるInternational
Business Machines Corpor
ationのシステム/370などのシーケンシャル・
スカラマシンが用いられる。このようなシステムには、
前記システム/370,システム/370拡張アーキテ
クチュア(370−XA),およびシステム/370エ
ンタプライズ・システムズ・アーキテクチュア(370
−ESA)が含まれる。以上については、IBMシステ
ム/370の動作原理(出版番号GA22−7000−
10,1987)、およびIBMエンタプライズ・シス
テムズ・アーキテクチュア/370の動作原理(出版番
号SA22−7200−0,1988)に示されてい
る。
ば、本出願の譲渡人であるInternational
Business Machines Corpor
ationのシステム/370などのシーケンシャル・
スカラマシンが用いられる。このようなシステムには、
前記システム/370,システム/370拡張アーキテ
クチュア(370−XA),およびシステム/370エ
ンタプライズ・システムズ・アーキテクチュア(370
−ESA)が含まれる。以上については、IBMシステ
ム/370の動作原理(出版番号GA22−7000−
10,1987)、およびIBMエンタプライズ・シス
テムズ・アーキテクチュア/370の動作原理(出版番
号SA22−7200−0,1988)に示されてい
る。
【0021】これらの既存のシステム/370スカラア
ーキテクチュアに供する命令セットはよく知られてい
る。これらの命令は、これらがスカラオペランドに対し
てなされる演算により実行されるという点でスカラ命令
である。上記マシンにより実行される命令セットの特定
命令に対して以下で与えられる参照は、通常のアセンブ
リレベルの形態で与えられる。
ーキテクチュアに供する命令セットはよく知られてい
る。これらの命令は、これらがスカラオペランドに対し
てなされる演算により実行されるという点でスカラ命令
である。上記マシンにより実行される命令セットの特定
命令に対して以下で与えられる参照は、通常のアセンブ
リレベルの形態で与えられる。
【0022】次の表3のような命令シーケンスは1サイ
クルあたり4つの命令を実行できるスーパスカラマシン
により実行されるものとする。
クルあたり4つの命令を実行できるスーパスカラマシン
により実行されるものとする。
【0023】
【表3】 スーパスカラマシンは、サイクルあたりの多重命令実行
の能力とは拘わりなしに、命令インタロックのために上
記シーケンスを逐次実行する。プログラムトレースの解
析に基づいて、インタロックは時間のほぼ1/3ごとに
発生することが示唆されている。従って、スーパスカラ
マシンのリソースの多くが無駄に使用され、スーパスカ
ラマシンの性能劣化がもたらされる。インタロックされ
たスカラ命令のスーパスカラマシンの性能が、図2の参
照番号8により示したタイミングシーケンスにより説明
される。この図において、表3の命令に対するパイプラ
イン構造は次のように仮定される。 (1)LOAD:ID AG CA PA (2)および(3)ADD and SUBTRAC
T:ID EX PA ただし、IDは命令デコードおよびレジスタアクセスで
あり、AGはオペランドアドレス発生であり、CAはキ
ャッシュアクセスを示し、EXは実行を示し、またPA
(put away)はレジスタへの結果の書込みを表
わす。説明を簡単にするためにここで与えられる全ての
例は、明瞭に示されないときは、バイパスは行われない
ものとする。現在のスーパスカラマシンにおいては、命
令ストリームの実行は、スーパスカラマシンの性能をス
カラマシンのものまで低下させる命令インタロックのた
めに逐次行われる。
の能力とは拘わりなしに、命令インタロックのために上
記シーケンスを逐次実行する。プログラムトレースの解
析に基づいて、インタロックは時間のほぼ1/3ごとに
発生することが示唆されている。従って、スーパスカラ
マシンのリソースの多くが無駄に使用され、スーパスカ
ラマシンの性能劣化がもたらされる。インタロックされ
たスカラ命令のスーパスカラマシンの性能が、図2の参
照番号8により示したタイミングシーケンスにより説明
される。この図において、表3の命令に対するパイプラ
イン構造は次のように仮定される。 (1)LOAD:ID AG CA PA (2)および(3)ADD and SUBTRAC
T:ID EX PA ただし、IDは命令デコードおよびレジスタアクセスで
あり、AGはオペランドアドレス発生であり、CAはキ
ャッシュアクセスを示し、EXは実行を示し、またPA
(put away)はレジスタへの結果の書込みを表
わす。説明を簡単にするためにここで与えられる全ての
例は、明瞭に示されないときは、バイパスは行われない
ものとする。現在のスーパスカラマシンにおいては、命
令ストリームの実行は、スーパスカラマシンの性能をス
カラマシンのものまで低下させる命令インタロックのた
めに逐次行われる。
【0024】図2において、命令(2)および(3)は
アドレス発生(AG)は何も必要としない。ただし、こ
のパイプラインのステージは考慮されなければならな
い。従ってラベルしてないインタバル7と9が与えられ
る。この約束は図2の他の3つのシーケンスに対しても
適用される。
アドレス発生(AG)は何も必要としない。ただし、こ
のパイプラインのステージは考慮されなければならな
い。従ってラベルしてないインタバル7と9が与えられ
る。この約束は図2の他の3つのシーケンスに対しても
適用される。
【0025】上記の例では、命令インタロックが、スー
パスカラマシンによる利用のため命令レベルで得られる
並列性を抑制できることを示している。性能は、1つの
インタロックド命令の結果の他のものへのパイプライン
化とバイパスにより得られるが、インタロックド命令は
逐次行われなければならない。
パスカラマシンによる利用のため命令レベルで得られる
並列性を抑制できることを示している。性能は、1つの
インタロックド命令の結果の他のものへのパイプライン
化とバイパスにより得られるが、インタロックド命令は
逐次行われなければならない。
【0026】複合命令 インタロックに起因する実行サイクルの損失が回避され
るべきときは、インタロックド命令は「並列」に実行さ
れ、独自の命令とみなされなければならない。これは、
複合化されたインタロックド命令の概念、即ちインタロ
ックの発生にも拘わらず、単一の独自命令として処理さ
れるべきである1組のスカラ命令の概念に通じる。複合
化された命令を実行するハードウェアの望ましい特性
は、その実行が上記複合化された命令の1つにより要求
されるもの以上のサイクルを要求しないということにあ
る。命令複合化の結果として、またその望ましい特性と
して、複合命令セットマシンは、オペレーションコード
による記述よりもハードウェアの利用によりスカラ命令
を見なければならない。
るべきときは、インタロックド命令は「並列」に実行さ
れ、独自の命令とみなされなければならない。これは、
複合化されたインタロックド命令の概念、即ちインタロ
ックの発生にも拘わらず、単一の独自命令として処理さ
れるべきである1組のスカラ命令の概念に通じる。複合
化された命令を実行するハードウェアの望ましい特性
は、その実行が上記複合化された命令の1つにより要求
されるもの以上のサイクルを要求しないということにあ
る。命令複合化の結果として、またその望ましい特性と
して、複合命令セットマシンは、オペレーションコード
による記述よりもハードウェアの利用によりスカラ命令
を見なければならない。
【0027】インタロックド命令の実行 複合化されたインタロックド命令の概念は、表3のAD
D命令およびSUB命令を用いて明らかにすることがで
きる。これらの2つの命令は、それらが同じハードウェ
アを利用していることから独自の命令タイプと見なすこ
とができる。従って、それらの命令は1つの命令として
結合され、実行される。並列性を促進するために、それ
らの命令の実行には、実行に1サイクル以上を要求す
る。 R1=R1+R2 R1=R1−R3 のシーケンスの実行よりもむしろ1サイクルにおいて、 R1=R1+R2−R3 の実行が要求される。加算および減算は同じハードウェ
アを利用するのでインタロックは排除することができ
る、さらに、図3に示すようにキャリ保存加算器CSA
およびキャリ・ルックアヘッド加算器CLAを利用する
ALUを用いることにより、もしALUが3対1(th
ree−to−one)の加算・減算機能を実行するよ
うに設計されているときは、結合された命令R1+R2
−R3は1サイクルで実行することができる。
D命令およびSUB命令を用いて明らかにすることがで
きる。これらの2つの命令は、それらが同じハードウェ
アを利用していることから独自の命令タイプと見なすこ
とができる。従って、それらの命令は1つの命令として
結合され、実行される。並列性を促進するために、それ
らの命令の実行には、実行に1サイクル以上を要求す
る。 R1=R1+R2 R1=R1−R3 のシーケンスの実行よりもむしろ1サイクルにおいて、 R1=R1+R2−R3 の実行が要求される。加算および減算は同じハードウェ
アを利用するのでインタロックは排除することができ
る、さらに、図3に示すようにキャリ保存加算器CSA
およびキャリ・ルックアヘッド加算器CLAを利用する
ALUを用いることにより、もしALUが3対1(th
ree−to−one)の加算・減算機能を実行するよ
うに設計されているときは、結合された命令R1+R2
−R3は1サイクルで実行することができる。
【0028】結合された形態(R1+R2−R3)は第
2の命令の2つのオペランドを3つのオペランドを用い
て書き換えたことに対応し、これにより3つのオペラン
ドに応じて第2の命令を実行できる加算器の要件を含ん
でいる。
2の命令の2つのオペランドを3つのオペランドを用い
て書き換えたことに対応し、これにより3つのオペラン
ドに応じて第2の命令を実行できる加算器の要件を含ん
でいる。
【0029】図3において、キャリ保存加算器(CS
A)は参照番号10により示される。このCSA10は
全ての点で従来通りであり、3つのオペランドを受けて
2つの結果、即ち出力12に和(S)および出力14に
キャリ(C)を発生する。上記の例の場合、CSA10
に対する入力は3つのレジスタR1,R2およびR3
(補数をとられた)に収容されたオペランドである。C
SA10の出力は16および17でステージ化され、入
力20によりキャリ値にリーディング“1”または
“0”を付与する。入力20の値は従来通りCSA10
により行われるべき機能に従ってセットされる。
A)は参照番号10により示される。このCSA10は
全ての点で従来通りであり、3つのオペランドを受けて
2つの結果、即ち出力12に和(S)および出力14に
キャリ(C)を発生する。上記の例の場合、CSA10
に対する入力は3つのレジスタR1,R2およびR3
(補数をとられた)に収容されたオペランドである。C
SA10の出力は16および17でステージ化され、入
力20によりキャリ値にリーディング“1”または
“0”を付与する。入力20の値は従来通りCSA10
により行われるべき機能に従ってセットされる。
【0030】CSA10の和およびキャリ(1または0
が付与された)出力は、キャリ・ルックアヘッド加算器
(CLA)22への2つの入力として与えられる。CL
A22はさらに所望の動作に従って入力24に“ホッ
ト”1または0を受け、また26に結果を発生する。図
3において、CLA22により発生された結果は、3つ
のレジスタR1,R2,およびR3(補数をとられた)
の内容の組合わせである。キャリ保存加算器およびキャ
リ・ルックアヘッド加算器は、構造および機能がよく知
られた従来の要素である。Hwangは、そのCOMP
UTER ARITHMETIC:Principle
s,ArchitectureandDesign,1
979の88−93ページで、キャリ・ルックアヘッド
加算器について説明しており、また97−100ページ
でキャリ保存加算器について説明している。
が付与された)出力は、キャリ・ルックアヘッド加算器
(CLA)22への2つの入力として与えられる。CL
A22はさらに所望の動作に従って入力24に“ホッ
ト”1または0を受け、また26に結果を発生する。図
3において、CLA22により発生された結果は、3つ
のレジスタR1,R2,およびR3(補数をとられた)
の内容の組合わせである。キャリ保存加算器およびキャ
リ・ルックアヘッド加算器は、構造および機能がよく知
られた従来の要素である。Hwangは、そのCOMP
UTER ARITHMETIC:Principle
s,ArchitectureandDesign,1
979の88−93ページで、キャリ・ルックアヘッド
加算器について説明しており、また97−100ページ
でキャリ保存加算器について説明している。
【0031】ALUのクリティカルパスにおける余分の
ステージ、すなわち図3のCSAを要求する3対1の付
加とは無関係に、このようなステージは、他のパスの長
さが通常はALUのそれ以上になるので、マシンのサイ
クルタイムに譲歩するべきではない。これらのクリティ
カルパスは、通常はアレイアクセス、3対1ALUおよ
びチップ処理を要求するアドレス発生を持つパス内で見
出され、従って余分のステージ遅延は禁止的ではなく、
また提案された方式は、スカラマシンまたはスーパスカ
ラマシンに比べると性能が改良される。性能の改良は参
照番号26により示されるパイプライン化プロットの組
により図2に示される。これらのプロットは、図3に示
されたように構成された加算器と共にALUを備える複
合命令セットマシンによる問題の命令シーケンスの実行
を示したものである。
ステージ、すなわち図3のCSAを要求する3対1の付
加とは無関係に、このようなステージは、他のパスの長
さが通常はALUのそれ以上になるので、マシンのサイ
クルタイムに譲歩するべきではない。これらのクリティ
カルパスは、通常はアレイアクセス、3対1ALUおよ
びチップ処理を要求するアドレス発生を持つパス内で見
出され、従って余分のステージ遅延は禁止的ではなく、
また提案された方式は、スカラマシンまたはスーパスカ
ラマシンに比べると性能が改良される。性能の改良は参
照番号26により示されるパイプライン化プロットの組
により図2に示される。これらのプロットは、図3に示
されたように構成された加算器と共にALUを備える複
合命令セットマシンによる問題の命令シーケンスの実行
を示したものである。
【0032】図2のタイミングシーケンス8および26
により示されるように、複合命令セットマシンによるシ
ーケンスの実行は、スカラマシンおよびスーパスカラマ
シンにより実現可能な11サイクルまたは2.75CP
I(cyclesperinstruction)に比
べると、8サイクルまたは2CPIを要求するものであ
る。バイパス動作はマシンの全てにおいて支援されると
すると、図2のプロットのセット28および30は、そ
れぞれスカラ・スーパスカラマシンおよび複合命令セッ
トマシンにより実現し得る実行を説明したものである。
これらのセットから、スーパスカラマシンは8サイクル
または2CPIを要求して例としてのコードを実行し、
複合命令セットマシンは6サイクルまたは1.5CPI
を要求する。スーパスカラマシンおよびスカラマシンの
両者にわたる複合マシンの利点は、仮定された命令シー
ケンスに対するスカラにわたるスーパスカラマシンの利
点の欠如と共に注目されるべきである。
により示されるように、複合命令セットマシンによるシ
ーケンスの実行は、スカラマシンおよびスーパスカラマ
シンにより実現可能な11サイクルまたは2.75CP
I(cyclesperinstruction)に比
べると、8サイクルまたは2CPIを要求するものであ
る。バイパス動作はマシンの全てにおいて支援されると
すると、図2のプロットのセット28および30は、そ
れぞれスカラ・スーパスカラマシンおよび複合命令セッ
トマシンにより実現し得る実行を説明したものである。
これらのセットから、スーパスカラマシンは8サイクル
または2CPIを要求して例としてのコードを実行し、
複合命令セットマシンは6サイクルまたは1.5CPI
を要求する。スーパスカラマシンおよびスカラマシンの
両者にわたる複合マシンの利点は、仮定された命令シー
ケンスに対するスカラにわたるスーパスカラマシンの利
点の欠如と共に注目されるべきである。
【0033】ハードウェアによる命令の同時的実行によ
るそれらの命令の複合化は、算術演算に制限されるもの
ではない。例えば、ほとんどの論理演算は算術演算と複
合化可能である。しかしながら、いくつかの命令の複合
化は、複合化された機能を行うために受容できない遅延
を招き、サイクルタイムの延長をもたらす。例えば、A
DD−SHIFT複合命令は、全体にわたる性能利得に
妥協するサイクルタイムを禁止的に延長する。しかし、
これらの命令の間のインタロックの頻度は、シフト命令
の発生頻度が低いために低く、従ってそれらの命令は、
実質的な性能損失なしに逐次実行可能である。
るそれらの命令の複合化は、算術演算に制限されるもの
ではない。例えば、ほとんどの論理演算は算術演算と複
合化可能である。しかしながら、いくつかの命令の複合
化は、複合化された機能を行うために受容できない遅延
を招き、サイクルタイムの延長をもたらす。例えば、A
DD−SHIFT複合命令は、全体にわたる性能利得に
妥協するサイクルタイムを禁止的に延長する。しかし、
これらの命令の間のインタロックの頻度は、シフト命令
の発生頻度が低いために低く、従ってそれらの命令は、
実質的な性能損失なしに逐次実行可能である。
【0034】既に説明したように、データハザードのイ
ンタロックは、レジスタまたはメモリ位置が逐次命令に
より書込まれ、次に読出されるときに発生する。本発明
により提案された装置は、命令セットに固有の機能の実
行を維持しながら、オペランドがデータハザードを与え
る命令の実行を組み合わせることから生じる新しい機能
を導出することにより、上記のインタロックを解消する
ものである。命令とオペランドの幾つかの組合わせが機
能プログラムにおいて生じると予測されなくても、全て
の組合わせが考慮される。一般に、上記解析から導出さ
れる全ての機能および命令セットのスカラ実施から生じ
る機能が実施されることになる。しかしながら、実際に
は、実施が当該装置に対して提案された方式に十分には
適しないある機能が発生する。以下の説明では、2つの
命令の実行を組み合わせることからどのようにして新し
い機能が生じるかを検討することにより、これらの概念
を明らかにしている。本発明により処理される命令シー
ケンスの例が、十分には処理されないいくつかのシーケ
ンスと共に与えられる。本発明の好適な実施例の論理ダ
イヤグラムが示される。
ンタロックは、レジスタまたはメモリ位置が逐次命令に
より書込まれ、次に読出されるときに発生する。本発明
により提案された装置は、命令セットに固有の機能の実
行を維持しながら、オペランドがデータハザードを与え
る命令の実行を組み合わせることから生じる新しい機能
を導出することにより、上記のインタロックを解消する
ものである。命令とオペランドの幾つかの組合わせが機
能プログラムにおいて生じると予測されなくても、全て
の組合わせが考慮される。一般に、上記解析から導出さ
れる全ての機能および命令セットのスカラ実施から生じ
る機能が実施されることになる。しかしながら、実際に
は、実施が当該装置に対して提案された方式に十分には
適しないある機能が発生する。以下の説明では、2つの
命令の実行を組み合わせることからどのようにして新し
い機能が生じるかを検討することにより、これらの概念
を明らかにしている。本発明により処理される命令シー
ケンスの例が、十分には処理されないいくつかのシーケ
ンスと共に与えられる。本発明の好適な実施例の論理ダ
イヤグラムが示される。
【0035】本発明の装置は命令の並列送出と実行を容
易にするために提案されたものである。命令を並列に送
出する例が従来技術のスーパスカラマシンに見出される
が、本発明はインタロックを含む送出された命令の並列
実行を容易にするものである。しかしながら、本発明の
データ依存性解消ハードウェアの使用は、特定の送出お
よび実行アーキテクチュアに制限されるのではなく、サ
イクルあたり多重命令を発する方式に対して一般的な適
用性を有するものである。
易にするために提案されたものである。命令を並列に送
出する例が従来技術のスーパスカラマシンに見出される
が、本発明はインタロックを含む送出された命令の並列
実行を容易にするものである。しかしながら、本発明の
データ依存性解消ハードウェアの使用は、特定の送出お
よび実行アーキテクチュアに制限されるのではなく、サ
イクルあたり多重命令を発する方式に対して一般的な適
用性を有するものである。
【0036】この説明に対してハードウェア・プラット
ホームを与えるために、サイクルあたり2つの命令まで
送出できるシステム/370命令レベルのアーキテクチ
ュアを仮定する。ただし、これらの仮定を用いたとして
も、これらの概念はシステム/370アーキテクチュア
に制限されるものではなく、また双方向並列性に制限さ
れるものでもない。この説明は、ALU演算,メモリア
ドレスの発生,および分岐の決定を扱うセクションに分
類される。
ホームを与えるために、サイクルあたり2つの命令まで
送出できるシステム/370命令レベルのアーキテクチ
ュアを仮定する。ただし、これらの仮定を用いたとして
も、これらの概念はシステム/370アーキテクチュア
に制限されるものではなく、また双方向並列性に制限さ
れるものでもない。この説明は、ALU演算,メモリア
ドレスの発生,および分岐の決定を扱うセクションに分
類される。
【0037】一般に、システム/370命令セットは、
並列に実行される命令のカテゴリに分類することができ
る。これらのカテゴリ内の命令は、組み合わされまたは
複合化されて複合命令を形成する。以下で説明する本発
明の装置は、複合命令の実行を並列に支援し、また複合
命令のメンバ間に存在するインタロックが解消され、命
令が同時に実行されることを保証するものである。例え
ば、システム/370アーキテクチュアは図4および図
5に示したカテゴリに分けることができる。
並列に実行される命令のカテゴリに分類することができ
る。これらのカテゴリ内の命令は、組み合わされまたは
複合化されて複合命令を形成する。以下で説明する本発
明の装置は、複合命令の実行を並列に支援し、また複合
命令のメンバ間に存在するインタロックが解消され、命
令が同時に実行されることを保証するものである。例え
ば、システム/370アーキテクチュアは図4および図
5に示したカテゴリに分けることができる。
【0038】この分類の根拠はシステム/370命令お
よびそれらのハードウェア利用の機能要件に基づいて与
えられた。システム/370命令の残りのものは、本実
施例の実行に対して複合化されるとは考えていない。し
かし、これは、それらの残りの命令が将来の命令実行エ
ンジンに対して複合化されることを排除するものではな
く、また、本明細書で与えられるインタロック“回避”
の結論が使用されるであろう。
よびそれらのハードウェア利用の機能要件に基づいて与
えられた。システム/370命令の残りのものは、本実
施例の実行に対して複合化されるとは考えていない。し
かし、これは、それらの残りの命令が将来の命令実行エ
ンジンに対して複合化されることを排除するものではな
く、また、本明細書で与えられるインタロック“回避”
の結論が使用されるであろう。
【0039】次のような命令シーケンスで例示されるも
のと同じカテゴリからの命令と複合化されるカテゴリ1
に含まれる命令を考えてみる。 AR R1,R2 SR R3,R4 このシーケンスは、データハザード・インタロックは受
けないが、次の結果を生成する。 R1=R1+R2 R3=R3+R4 これらは370命令レベルアーキテクチュアにより規定
される2つの独立な命令から構成されている。このよう
なシーケンスの実行には、命令レベルアーキテクチュア
に対して設計された2つの独立で並行する2対1ALU
が必要とされる。これらの結果は、両命令がALU動作
を規定するデータハザード・インタロックとは無関係な
全ての命令シーケンス対に一般化することができる。各
々の命令は多くて1つのALU動作を規定するので、対
をなして出された命令の実行には2つのALUで十分で
ある。
のと同じカテゴリからの命令と複合化されるカテゴリ1
に含まれる命令を考えてみる。 AR R1,R2 SR R3,R4 このシーケンスは、データハザード・インタロックは受
けないが、次の結果を生成する。 R1=R1+R2 R3=R3+R4 これらは370命令レベルアーキテクチュアにより規定
される2つの独立な命令から構成されている。このよう
なシーケンスの実行には、命令レベルアーキテクチュア
に対して設計された2つの独立で並行する2対1ALU
が必要とされる。これらの結果は、両命令がALU動作
を規定するデータハザード・インタロックとは無関係な
全ての命令シーケンス対に一般化することができる。各
々の命令は多くて1つのALU動作を規定するので、対
をなして出された命令の実行には2つのALUで十分で
ある。
【0040】しかしながら、多くの命令シーケンスはデ
ータハザード・インタロックと無関係ではない。これら
のデータハザード・インタロックは、通常のパイプライ
ン設計の性能を劣化させるパイプラインバブルをもたら
す。プロセッサの性能を増加させる方法は、データハザ
ード・インタロックを処理することができる単一ALU
を設けることにより、パイプラインからこれらのバブル
を排除することにより与えられる。これらのインタロッ
クを排除するには、ALUは命令の対化(pairin
g)とオペランドの対立から生じる新しい機能を実行し
なければならない。生じる機能は、規定されるALU演
算、これら演算のシーケンス、および演算間のオペラン
ド“対立”(用語“オペランド対立”の意味は以下の説
明で明らかにする。)に依存する。このセクションの初
めに与えられた複合化可能リスト内に含まれる命令の対
化(pairing)により生成でき、またALU演算
を規定する全ての命令シーケンスが、全ての可能なオペ
ランド対立に対して解析されなければならない。
ータハザード・インタロックと無関係ではない。これら
のデータハザード・インタロックは、通常のパイプライ
ン設計の性能を劣化させるパイプラインバブルをもたら
す。プロセッサの性能を増加させる方法は、データハザ
ード・インタロックを処理することができる単一ALU
を設けることにより、パイプラインからこれらのバブル
を排除することにより与えられる。これらのインタロッ
クを排除するには、ALUは命令の対化(pairin
g)とオペランドの対立から生じる新しい機能を実行し
なければならない。生じる機能は、規定されるALU演
算、これら演算のシーケンス、および演算間のオペラン
ド“対立”(用語“オペランド対立”の意味は以下の説
明で明らかにする。)に依存する。このセクションの初
めに与えられた複合化可能リスト内に含まれる命令の対
化(pairing)により生成でき、またALU演算
を規定する全ての命令シーケンスが、全ての可能なオペ
ランド対立に対して解析されなければならない。
【0041】インタロック解消ALU 本発明によるインタロックを解消させる一般的な構成が
以上で示された。以下に、インタロック解消ALUの要
件を決定する際に行われるべき解析のより具体的な例を
示す。図3により上記した3対1加算器が与えられるも
のとする。OP1およびOP2は実行されるべき2つの
演算の第1および第2のものとする。例えば、次の命令
シーケンス NR R1,R2 AR R3,R4 に対して、OP1は演算NRに対応し、OP2は演算A
Rに対応する(これらの演算については以下に説明す
る。)。AI0,AI1およびAI2は図3の3対1加
算器のそれぞれ、(R1),(R2),および(R3)
に対応する入力を表わすものとする。命令(NR,O
R,XR,AR,ALR,SLR,SR)のセットおよ
び図4および図5で定めたカテゴリ1のサブセットの複
合化の解析について考える。この命令のセットの演算
は、次の表4により規定される。
以上で示された。以下に、インタロック解消ALUの要
件を決定する際に行われるべき解析のより具体的な例を
示す。図3により上記した3対1加算器が与えられるも
のとする。OP1およびOP2は実行されるべき2つの
演算の第1および第2のものとする。例えば、次の命令
シーケンス NR R1,R2 AR R3,R4 に対して、OP1は演算NRに対応し、OP2は演算A
Rに対応する(これらの演算については以下に説明す
る。)。AI0,AI1およびAI2は図3の3対1加
算器のそれぞれ、(R1),(R2),および(R3)
に対応する入力を表わすものとする。命令(NR,O
R,XR,AR,ALR,SLR,SR)のセットおよ
び図4および図5で定めたカテゴリ1のサブセットの複
合化の解析について考える。この命令のセットの演算
は、次の表4により規定される。
【0042】
【表4】 この命令セットは、さらに考察を進めるために2つのセ
ットに分割することができる。第1のセットは論理命令
NR,OR,およびXRを含み、第2のセットは算術命
令AR,ALR,SR,およびSLRを含む。算術命令
のグループ化は、以下のように説明される。ARおよび
ALRは共に、ARに対しては符号の拡張を、ALRに
対しては0の拡張を使用し、さらに加算器に対してホッ
ト“0”を与えることにより暗黙の33ビットの2の補
数の加算とみることができる。条件コードとオーバフロ
ーの設定は、各々の命令に対して独自のものであるが、
加算器により実施される演算である2進加算は両命令に
対して共通である。同様に、SRとSLRは、SRに対
して符号の拡張を、SLRに対して0の拡張を使用し、
減数を反転し、さらに加算器にホット“1”を与えるこ
とにより暗黙の33ビットの2の補数の加算とみること
ができる。減数の反転は、加算器に対しては外部から与
えられると考えられる。4つの算術演算は本質的には同
じ演算の2進加算を行うので、それらの演算はADD形
命令と呼ばれ、論理演算はLOGICAL形命令と呼ば
れる。
ットに分割することができる。第1のセットは論理命令
NR,OR,およびXRを含み、第2のセットは算術命
令AR,ALR,SR,およびSLRを含む。算術命令
のグループ化は、以下のように説明される。ARおよび
ALRは共に、ARに対しては符号の拡張を、ALRに
対しては0の拡張を使用し、さらに加算器に対してホッ
ト“0”を与えることにより暗黙の33ビットの2の補
数の加算とみることができる。条件コードとオーバフロ
ーの設定は、各々の命令に対して独自のものであるが、
加算器により実施される演算である2進加算は両命令に
対して共通である。同様に、SRとSLRは、SRに対
して符号の拡張を、SLRに対して0の拡張を使用し、
減数を反転し、さらに加算器にホット“1”を与えるこ
とにより暗黙の33ビットの2の補数の加算とみること
ができる。減数の反転は、加算器に対しては外部から与
えられると考えられる。4つの算術演算は本質的には同
じ演算の2進加算を行うので、それらの演算はADD形
命令と呼ばれ、論理演算はLOGICAL形命令と呼ば
れる。
【0043】上記命令セットが2つの演算に減少した結
果として、次のような演算のシーケンスがこの命令セッ
トの複合化を解析するために考慮されなければならな
い。 ADDが続くLOGICAL LOGICALが続くADD LOGICALが続くLOGICAL ADDが続くADD これらのシーケンスの各々に対して、レジスタの全ての
組合わせが考慮されなければならない。これらの組合わ
せは、すべての4つのレジスタ仕様が異なるもの、4つ
の可能なレジスタ仕様のうち、1)2つが同じ、2)3
つが同じ、3)4つが同じのものの組合わせである。従
って組合わせの数は
果として、次のような演算のシーケンスがこの命令セッ
トの複合化を解析するために考慮されなければならな
い。 ADDが続くLOGICAL LOGICALが続くADD LOGICALが続くLOGICAL ADDが続くADD これらのシーケンスの各々に対して、レジスタの全ての
組合わせが考慮されなければならない。これらの組合わ
せは、すべての4つのレジスタ仕様が異なるもの、4つ
の可能なレジスタ仕様のうち、1)2つが同じ、2)3
つが同じ、3)4つが同じのものの組合わせである。従
って組合わせの数は
【数1】 のように表わすことができる。
【0044】これらの式から組合わせの数は、12であ
ることがわかる。これらの12のレジスタの組合わせ
は、次のようになる。 1.R1≠R2≠R3≠R4 2.R1=R2≠R3≠R4 3.R2=R3≠R1≠R4 4.R2=R4≠R1≠R3 5.R3=R4≠R1≠R2 6.R2=R3=R4≠R1 7.R1=R3≠R2≠R4 8.R1=R4≠R2≠R3 9.R1=R2=R3≠R4 10.R1=R2=R4≠R3 11.R1=R3=R4≠R2 12.R1=R2=R3=R4 これらの組合わせのうち7〜12のみが、データ依存性
インタロックをもたらす。既にリストしたLOGICA
L−ADDシーケンスに対する上記インタロックの場合
により生成される機能は、図6に示されるようになる。
図において、LOGICAL形演算はφにより示され、
ADD形演算はζにより示されている。
ることがわかる。これらの12のレジスタの組合わせ
は、次のようになる。 1.R1≠R2≠R3≠R4 2.R1=R2≠R3≠R4 3.R2=R3≠R1≠R4 4.R2=R4≠R1≠R3 5.R3=R4≠R1≠R2 6.R2=R3=R4≠R1 7.R1=R3≠R2≠R4 8.R1=R4≠R2≠R3 9.R1=R2=R3≠R4 10.R1=R2=R4≠R3 11.R1=R3=R4≠R2 12.R1=R2=R3=R4 これらの組合わせのうち7〜12のみが、データ依存性
インタロックをもたらす。既にリストしたLOGICA
L−ADDシーケンスに対する上記インタロックの場合
により生成される機能は、図6に示されるようになる。
図において、LOGICAL形演算はφにより示され、
ADD形演算はζにより示されている。
【0045】図6は、インタロックを解消させるADD
形命令およびLOGICAL形命令のオペランドに対し
て実施されなければならない演算を規定し、図7および
図8は、図4および図5の複合化可能カテゴリに含まれ
る370の命令の全てを支援するALU入力AI0,A
I1,およびAI2に対して実施が要求されるALU演
算を規定している。図7および図8において、単項−は
2の補数を示し、/x/はxの絶対値を示している。こ
れらの図は上で示したものと同じ解析を用いて得られた
が、全ての可能なカテゴリの複合化が考慮された。AL
Uにより実行される図6の演算に対して、実行ユニット
制御装置は所望のレジスタ内容をALUの適当な入力に
ルート指定しなければならない。図9および図10は、
図6の演算を実施する図7および図8におけるように定
められたALUに対して生じる必要があるオペランドの
ルート指定を要約したものである。これらのルート指定
と共に、図7および図8の上記結果のマップを容易にす
るために、LOGICAL形命令およびADD形命令が
与えられている。いくつかのADD−ADD複合化に対
するルート指定は、これらの演算が4つの入力ALUを
要求し(「特異表現」を参照)、そのように注意される
ので、含まれていない。
形命令およびLOGICAL形命令のオペランドに対し
て実施されなければならない演算を規定し、図7および
図8は、図4および図5の複合化可能カテゴリに含まれ
る370の命令の全てを支援するALU入力AI0,A
I1,およびAI2に対して実施が要求されるALU演
算を規定している。図7および図8において、単項−は
2の補数を示し、/x/はxの絶対値を示している。こ
れらの図は上で示したものと同じ解析を用いて得られた
が、全ての可能なカテゴリの複合化が考慮された。AL
Uにより実行される図6の演算に対して、実行ユニット
制御装置は所望のレジスタ内容をALUの適当な入力に
ルート指定しなければならない。図9および図10は、
図6の演算を実施する図7および図8におけるように定
められたALUに対して生じる必要があるオペランドの
ルート指定を要約したものである。これらのルート指定
と共に、図7および図8の上記結果のマップを容易にす
るために、LOGICAL形命令およびADD形命令が
与えられている。いくつかのADD−ADD複合化に対
するルート指定は、これらの演算が4つの入力ALUを
要求し(「特異表現」を参照)、そのように注意される
ので、含まれていない。
【0046】以上の説明は4つの特に列挙したレジスタ
R1,R2,R3,R4に対する複合命令解析の考察に
対してなされたが、本発明の実施はこのような4つの特
定のレジスタに限定されるものではない。上記の特定の
説明は、解析と理解を容易にするために選択されたもの
である。実際、上記の解析は上記の式が示すように一般
化可能なことは明らかである。
R1,R2,R3,R4に対する複合命令解析の考察に
対してなされたが、本発明の実施はこのような4つの特
定のレジスタに限定されるものではない。上記の特定の
説明は、解析と理解を容易にするために選択されたもの
である。実際、上記の解析は上記の式が示すように一般
化可能なことは明らかである。
【0047】図6,図7,図8,図9,および図10で
実質的に示された多機能ALUを実施する装置の示す論
理ブロック図を、図11に示す。図11において、レジ
スタ50は命令52および54を含む複合命令を受け
る。これらの複合命令は、タグ56および58が付加さ
れている。これらの命令とそのタグは、デコード・制御
論理60に与えられ、この論理はそれらの命令およびそ
れらのタグに含まれる情報をデコードして出力62にレ
ジスタ選択信号を与え、出力66に機能選択信号を与え
る。出力62のレジスタ選択信号は、汎用レジスタ63
に接続されたクロスコネクト要素64を構成して、最高
3つのレジスタの内容をデータ依存性解消ALU65の
3つのオペランド入力AI0,AI1,およびAI2に
与える。ALU65は多機能ALUであり、その機能は
デコード・制御論理609の出力66に与えられた機能
選択信号により選択される。クロスコネクト要素64を
通して接続されたレジスタからオペランドが与えられる
と、ALU65は選択信号により示された機能を実施
し、出力67に結果を発生する。
実質的に示された多機能ALUを実施する装置の示す論
理ブロック図を、図11に示す。図11において、レジ
スタ50は命令52および54を含む複合命令を受け
る。これらの複合命令は、タグ56および58が付加さ
れている。これらの命令とそのタグは、デコード・制御
論理60に与えられ、この論理はそれらの命令およびそ
れらのタグに含まれる情報をデコードして出力62にレ
ジスタ選択信号を与え、出力66に機能選択信号を与え
る。出力62のレジスタ選択信号は、汎用レジスタ63
に接続されたクロスコネクト要素64を構成して、最高
3つのレジスタの内容をデータ依存性解消ALU65の
3つのオペランド入力AI0,AI1,およびAI2に
与える。ALU65は多機能ALUであり、その機能は
デコード・制御論理609の出力66に与えられた機能
選択信号により選択される。クロスコネクト要素64を
通して接続されたレジスタからオペランドが与えられる
と、ALU65は選択信号により示された機能を実施
し、出力67に結果を発生する。
【0048】ALU装置と並列にデコード・制御論理8
70を含む第2ALU装置が演算し、デコード・制御論
理870は命令フィールド52の第1命令をデコードし
て汎用レジスタ63に同様に接続された普通のクロスコ
ネクト要素872にレジスタ選択信号を与える。論理8
70はまた、出力874の機能選択信号を普通の2オペ
ランドALU875に与える。このALU装置は命令フ
ィールド52の命令の実行のために与えられるが、命令
フィールド54の第2命令はALU65により実行され
る。以下に示すように、ALU65は第2命令を、その
オペランドの1つが第1命令の実行により発生された結
果データに依存するか否かに拘らず実行することができ
る。従って、両ALUは並列に動作して、複合化された
か否かに拘らず2つの命令の同時的実行を与える。
70を含む第2ALU装置が演算し、デコード・制御論
理870は命令フィールド52の第1命令をデコードし
て汎用レジスタ63に同様に接続された普通のクロスコ
ネクト要素872にレジスタ選択信号を与える。論理8
70はまた、出力874の機能選択信号を普通の2オペ
ランドALU875に与える。このALU装置は命令フ
ィールド52の命令の実行のために与えられるが、命令
フィールド54の第2命令はALU65により実行され
る。以下に示すように、ALU65は第2命令を、その
オペランドの1つが第1命令の実行により発生された結
果データに依存するか否かに拘らず実行することができ
る。従って、両ALUは並列に動作して、複合化された
か否かに拘らず2つの命令の同時的実行を与える。
【0049】ここで、複合化された命令52,54およ
びレジスタ50に戻ると、複合化器の存在が仮定され
る。この複合化器は、これが存在するスカラ計算マシン
に入力されたスカラ命令のシーケンスを含む命令ストリ
ームからの命令を対化(pair)または複合化する。
また、この複合化器は上記説明に従って命令をグループ
分けする。例えば、カテゴリ1の命令(図6)は、表に
従ってlogical/add,add/logica
l,logical/logical,およびadd/
add対にグループ分けされる。複合セットの各々の命
令に対しては、制御情報を含むタグが付加される。この
タグは、複合命令のグループを識別するために特に使用
されるタグの部分を参照する複合化ビットを含んでい
る。好適には、2つの命令を複合化する場合には、複合
化がどこに生じるかを示す次の手順が用いられる。シス
テム/370マシンにおいては、全ての命令はハーフワ
ードバウンダリ上に整列され、それらの長さは2,4,
6バイトのいずれかである。この場合、全てのハーフワ
ードに対して複合化タグが必要とされる。命令が複合化
されたか否かを示すには、1ビットタグで十分である。
好適には、“1”は、問題のバイトで始まる命令が次の
命令と複合化されたことを示し、“0”は複合化されて
いないことを示す。命令の第1バイトを含まないハーフ
ワードに係る複合化ビットは、無視される。従って、複
合命令を識別し適切に実行するには、1ビットの情報が
必要とされるだけである。この様にして、タグビット5
6,58は、レジスタフィールド52,54の命令が複
合化される予定である、即ち並列に実行されることをデ
コード・制御論理60に報知するのに十分である。次
に、デコード・制御論理60は命令52,54を検査
し、これらの命令の実行シーケンスがどのようなもので
あるか、インタロック条件は得られたとしてどのような
ものであるか、どのような機能が要求されるかを決定す
る。この決定が図6のカテゴリ1命令に対して示され
る。デコード・制御論理はまた、図7および図8に示さ
れたさらにデータハザード・インタロックを解消させる
のに必要な機能を決定る。これらの決定は図9および図
10にまとめてある。図9および図10において、デコ
ード・制御論理60は、タグビットから、フィールド5
2および54の命令が複合化されるべきであると決定し
たとすると、論理60は出力66に図9の最も左の欄に
従う所望の演算を示す機能選択信号を送出する。命令の
オペレーションコードはデコードされて、機能選択出力
中に図9および図10のOP1およびOP2の欄に特定
の演算を与える。出力62のレジスタ選択信号は、図9
および図10の欄AI0,AI1,およびAI2で要求
されるようにクロスコネクト64を介して図11のレジ
スタのルート指定を実施する。このようにして、例え
ば、フィールド52の第1命令はADD R1,R2と
仮定し、第2命令はADD R1,R4と仮定する。図
9の18番目の行はデコード・制御回路がOP1=+お
よびOP2=+によりどれを示すかのALU演算を示
し、一方、レジスタR2は入力AI0にルート指定さ
れ、レジスタR4は入力AI1に、さらにレジスタR1
は入力AI2にルート指定される。
びレジスタ50に戻ると、複合化器の存在が仮定され
る。この複合化器は、これが存在するスカラ計算マシン
に入力されたスカラ命令のシーケンスを含む命令ストリ
ームからの命令を対化(pair)または複合化する。
また、この複合化器は上記説明に従って命令をグループ
分けする。例えば、カテゴリ1の命令(図6)は、表に
従ってlogical/add,add/logica
l,logical/logical,およびadd/
add対にグループ分けされる。複合セットの各々の命
令に対しては、制御情報を含むタグが付加される。この
タグは、複合命令のグループを識別するために特に使用
されるタグの部分を参照する複合化ビットを含んでい
る。好適には、2つの命令を複合化する場合には、複合
化がどこに生じるかを示す次の手順が用いられる。シス
テム/370マシンにおいては、全ての命令はハーフワ
ードバウンダリ上に整列され、それらの長さは2,4,
6バイトのいずれかである。この場合、全てのハーフワ
ードに対して複合化タグが必要とされる。命令が複合化
されたか否かを示すには、1ビットタグで十分である。
好適には、“1”は、問題のバイトで始まる命令が次の
命令と複合化されたことを示し、“0”は複合化されて
いないことを示す。命令の第1バイトを含まないハーフ
ワードに係る複合化ビットは、無視される。従って、複
合命令を識別し適切に実行するには、1ビットの情報が
必要とされるだけである。この様にして、タグビット5
6,58は、レジスタフィールド52,54の命令が複
合化される予定である、即ち並列に実行されることをデ
コード・制御論理60に報知するのに十分である。次
に、デコード・制御論理60は命令52,54を検査
し、これらの命令の実行シーケンスがどのようなもので
あるか、インタロック条件は得られたとしてどのような
ものであるか、どのような機能が要求されるかを決定す
る。この決定が図6のカテゴリ1命令に対して示され
る。デコード・制御論理はまた、図7および図8に示さ
れたさらにデータハザード・インタロックを解消させる
のに必要な機能を決定る。これらの決定は図9および図
10にまとめてある。図9および図10において、デコ
ード・制御論理60は、タグビットから、フィールド5
2および54の命令が複合化されるべきであると決定し
たとすると、論理60は出力66に図9の最も左の欄に
従う所望の演算を示す機能選択信号を送出する。命令の
オペレーションコードはデコードされて、機能選択出力
中に図9および図10のOP1およびOP2の欄に特定
の演算を与える。出力62のレジスタ選択信号は、図9
および図10の欄AI0,AI1,およびAI2で要求
されるようにクロスコネクト64を介して図11のレジ
スタのルート指定を実施する。このようにして、例え
ば、フィールド52の第1命令はADD R1,R2と
仮定し、第2命令はADD R1,R4と仮定する。図
9の18番目の行はデコード・制御回路がOP1=+お
よびOP2=+によりどれを示すかのALU演算を示
し、一方、レジスタR2は入力AI0にルート指定さ
れ、レジスタR4は入力AI1に、さらにレジスタR1
は入力AI2にルート指定される。
【0050】ここで、データ依存性解消ALU65の構
造と動作を理解するため、図12を参照する。図には、
図3の加算器に対応する3オペランド単一結果加算器7
0が示されている。この加算器70は、加算器入力とA
LU入力AI0,AI1,およびAI2との間に接続さ
れた回路を通して入力を得ている。入力AI2から、オ
ペランドは、それぞれ、論理AND,論理OR,および
論理EXCLUSIVE−ORに対応する3つの論理機
能要素71,72,および73によりルート指定され
る。このオペランドはこれらの論理要素内でその他のオ
ペランドの1つと結合され、マルチプレクサ80の設定
に従ってAI0またはAI1にルート指定される。マル
チプレクサ75は、AI2に接続された未変更のオペラ
ンドが論理要素71,72,または73の1つの出力の
いずれかを選択する。マルチプレクサ75により選択さ
れた入力はインバータ77に与えられ、またマルチプレ
クサ78はインバータ77の出力かマルチプレクサ75
の未反転出力のいずれかを加算器70の1つの入力に接
続する。加算器70に対する第2入力は、“0”かAL
U入力AI1に接続されたオペランドのいずれかを選択
するマルチプレクサ82を介してALU入力AI1から
得られる。マルチプレクサの出力はインバータ84によ
り反転され、またマルチプレクサ85は、加算器70の
第2オペランド入力としてマルチプレクサ82の非反転
出力か反転出力のいずれかを選択する。加算器70に対
する第3入力は、インバータ87により反転される入力
AI0から得られる。マルチプレクサ88は、AI0に
対するオペランド入力である“0”か加算器70に対し
て第3入力として与えられるその逆のいずれかを選択す
る。ALU出力は、加算器70の出力か論理要素90,
92または93の1つの出力を選択するマルチプレクサ
95を通して得られる。論理要素90,92,および9
3は、示された論理演算により加算器の出力をAI1に
対するオペランド入力と結合する。
造と動作を理解するため、図12を参照する。図には、
図3の加算器に対応する3オペランド単一結果加算器7
0が示されている。この加算器70は、加算器入力とA
LU入力AI0,AI1,およびAI2との間に接続さ
れた回路を通して入力を得ている。入力AI2から、オ
ペランドは、それぞれ、論理AND,論理OR,および
論理EXCLUSIVE−ORに対応する3つの論理機
能要素71,72,および73によりルート指定され
る。このオペランドはこれらの論理要素内でその他のオ
ペランドの1つと結合され、マルチプレクサ80の設定
に従ってAI0またはAI1にルート指定される。マル
チプレクサ75は、AI2に接続された未変更のオペラ
ンドが論理要素71,72,または73の1つの出力の
いずれかを選択する。マルチプレクサ75により選択さ
れた入力はインバータ77に与えられ、またマルチプレ
クサ78はインバータ77の出力かマルチプレクサ75
の未反転出力のいずれかを加算器70の1つの入力に接
続する。加算器70に対する第2入力は、“0”かAL
U入力AI1に接続されたオペランドのいずれかを選択
するマルチプレクサ82を介してALU入力AI1から
得られる。マルチプレクサの出力はインバータ84によ
り反転され、またマルチプレクサ85は、加算器70の
第2オペランド入力としてマルチプレクサ82の非反転
出力か反転出力のいずれかを選択する。加算器70に対
する第3入力は、インバータ87により反転される入力
AI0から得られる。マルチプレクサ88は、AI0に
対するオペランド入力である“0”か加算器70に対し
て第3入力として与えられるその逆のいずれかを選択す
る。ALU出力は、加算器70の出力か論理要素90,
92または93の1つの出力を選択するマルチプレクサ
95を通して得られる。論理要素90,92,および9
3は、示された論理演算により加算器の出力をAI1に
対するオペランド入力と結合する。
【0051】機能選択信号は、実質的にはマルチプレク
サ選択信号ABCDEFGおよび加算器70に入力され
た“ホット”1/0選択から構成される。マルチプレク
サ選択信号は信号A,B,EおよびFに対する単一ビッ
トからC,DおよびGに対する2ビット信号までを範囲
とすることは明らかである。
サ選択信号ABCDEFGおよび加算器70に入力され
た“ホット”1/0選択から構成される。マルチプレク
サ選択信号は信号A,B,EおよびFに対する単一ビッ
トからC,DおよびGに対する2ビット信号までを範囲
とすることは明らかである。
【0052】複雑な制御信号(ABCDEFG 1/0
1/0)の状態は、図9および図10から容易に得ら
れる。例えば、上記のADD R1,R2 ADD R
1,R4の例に従って、OP1信号はマルチプレクサ信
号Cを設定してAI2に存在する信号を選択し、F信号
はマルチプレクサ71の非反転出力を選択し、それによ
り加算器70の最も右の入力にR1のオペランドを与え
る。同様に、マルチプレクサ信号BおよびEが設定され
て未反転形態のAI1で得られるオペランドを加算器7
0の中間入力に与え、一方マルチプレクサ信号Dが設定
されて反転なしにAI0におけるオペランドを加算器7
0の最も左の入力を与える。最後に、2つの“I/O”
入力が、2つの加算演算に対して適切に設定される。こ
れらの入力に対し、加算器70の出力は、単にALUの
所望出力に対応する3つのオペランドの和である。従っ
て、制御信号Gは、マルチプレクサ95が、加算器70
により生成された、レジスタR1,R2,およびR3の
オペランドの和である結果を出力する。命令が論理・加
算シーケンスを複合化するとき、論理機能はマルチプレ
クサ75により選択され、マルチプレクサ78を通して
加算器70に与えられ、一方論理演算に対して付加され
るべきオペランドはマルチプレクサ85または88の1
つを通して加算器70の他方の入力の1つに与えられ、
0が第3入力に与えられる。この場合、マルチプレクサ
95がセットされ、結果として加算器70の出力を選択
する。
1/0)の状態は、図9および図10から容易に得ら
れる。例えば、上記のADD R1,R2 ADD R
1,R4の例に従って、OP1信号はマルチプレクサ信
号Cを設定してAI2に存在する信号を選択し、F信号
はマルチプレクサ71の非反転出力を選択し、それによ
り加算器70の最も右の入力にR1のオペランドを与え
る。同様に、マルチプレクサ信号BおよびEが設定され
て未反転形態のAI1で得られるオペランドを加算器7
0の中間入力に与え、一方マルチプレクサ信号Dが設定
されて反転なしにAI0におけるオペランドを加算器7
0の最も左の入力を与える。最後に、2つの“I/O”
入力が、2つの加算演算に対して適切に設定される。こ
れらの入力に対し、加算器70の出力は、単にALUの
所望出力に対応する3つのオペランドの和である。従っ
て、制御信号Gは、マルチプレクサ95が、加算器70
により生成された、レジスタR1,R2,およびR3の
オペランドの和である結果を出力する。命令が論理・加
算シーケンスを複合化するとき、論理機能はマルチプレ
クサ75により選択され、マルチプレクサ78を通して
加算器70に与えられ、一方論理演算に対して付加され
るべきオペランドはマルチプレクサ85または88の1
つを通して加算器70の他方の入力の1つに与えられ、
0が第3入力に与えられる。この場合、マルチプレクサ
95がセットされ、結果として加算器70の出力を選択
する。
【0053】最後に、加算・論理複合シーケンスにおい
て、最初に加算されるべき2つのオペランドが加算器7
0の入力の2つに与えられ、一方、0が第3入力に与え
られる。加算器の出力は、論理要素90,92,および
93の非選択オペランドと直ちに結合される。制御信号
Gが設定されて、複合セットの第2命令に対するオペラ
ンドを有する要素の出力を選択する。
て、最初に加算されるべき2つのオペランドが加算器7
0の入力の2つに与えられ、一方、0が第3入力に与え
られる。加算器の出力は、論理要素90,92,および
93の非選択オペランドと直ちに結合される。制御信号
Gが設定されて、複合セットの第2命令に対するオペラ
ンドを有する要素の出力を選択する。
【0054】より一般的には、図12はデータ依存性解
消ALU65の論理表示を与える。このデータストリー
ムを導出する際には、第1命令の結果が第2命令の両オ
ペランドとして使用されるインタロックを支援しないと
いう判定がなされる。これについては、「特異表現」の
セクションで更に説明することができる。この表示がL
OGICAL−ADD複合化により要求されるその他の
演算を意味するということは、図6の機能欄とデータス
トリームを比較することにより見出すことができる。こ
の欄においては、2つのオペランドに対するLOGIC
AL形の演算には、LOGICAL結果と第3オペラン
ドとの間のADD形演算が続く。これは、図12のAI
0とAI2に論理的に結合されるべきオペランドをルー
ト指定し、また論理ブロック71,72,または73の
適切なものを通して上記結果を加算器70にルート指定
し、更にAI1を通して加算器に第3オペランドをルー
ト指定することにより実施される。ホット1または0の
反転および準備が、規定される算術演算により要求され
るように、機能選択信号の一部として与えられる。他の
場合には、2つのオペランド間のADD形演算には、A
DD形の結果と第3オペランドの間のLOGICAL形
演算が続く。これは、ADD形演算に対するオペランド
をAI0およびAI2にルート指定することにより、こ
れらの入力を加算器にルート指定することにより、加算
器の出力をポスト加算器論理ブロック90,92,およ
び93にルート指定することにより、さらにAI3を通
して上記ポスト加算器論理ブロックにルート指定するこ
とにより実施される。LOGICAL形演算が続くLO
GICAL形演算は、第1LOGICAL形演算に対す
る2つのオペランドをプレ加算器論理ブロックに入力さ
れるAI0およびAI2にルート指定することにより、
プレ加算器からの結果をポスト加算器論理ブロックへの
0加算による修正なしにALUを通してルート指定する
ことにより、更にAI3を通して第3オペランドをポス
ト加算器論理ブロックにルート指定することにより実施
される。ADD形演算が続くADD形演算に対しては、
3つのオペランドが加算器の入力にルート指定され、ま
た加算器の出力がALUの出力に与えられる。第1およ
び第2命令の間でデータ依存性がないときの命令フィー
ルド54の第2命令を実行するALU65の演算は単純
である。この場合は、2つのオペランドだけがALUに
与えられる。従って、第2命令が加算命令のときは、加
算器70には、第3オペランドの位置の0と共に2つの
オペランドが与えられ、加算器の出力はALUの出力と
してマルチプレクサ95を通して選択される。第2命令
が論理命令のときは、2つのオペランドを論理要素7
1,72,および73にルート指定し、適切な出力を選
択し、さらに0をその他の2つの加算器入力に与えるこ
とにより結果を加算器70を通して流すことによって論
理演算を実施することができる。この場合、加算器の出
力は論理結果に等しくなり、またALUの出力としてマ
ルチプレクサ95により選択されることになる。一方、
2つの0加算により1つのオペランドを加算器を通して
流すことができ、これにより加算器70はこのオペラン
ドを出力として与えることになる。このオペランドは、
論理要素90,92,および93のその他のオペランド
と結合され、適切な論理要素出力がALUの出力として
マルチプレクサ95により選択される。
消ALU65の論理表示を与える。このデータストリー
ムを導出する際には、第1命令の結果が第2命令の両オ
ペランドとして使用されるインタロックを支援しないと
いう判定がなされる。これについては、「特異表現」の
セクションで更に説明することができる。この表示がL
OGICAL−ADD複合化により要求されるその他の
演算を意味するということは、図6の機能欄とデータス
トリームを比較することにより見出すことができる。こ
の欄においては、2つのオペランドに対するLOGIC
AL形の演算には、LOGICAL結果と第3オペラン
ドとの間のADD形演算が続く。これは、図12のAI
0とAI2に論理的に結合されるべきオペランドをルー
ト指定し、また論理ブロック71,72,または73の
適切なものを通して上記結果を加算器70にルート指定
し、更にAI1を通して加算器に第3オペランドをルー
ト指定することにより実施される。ホット1または0の
反転および準備が、規定される算術演算により要求され
るように、機能選択信号の一部として与えられる。他の
場合には、2つのオペランド間のADD形演算には、A
DD形の結果と第3オペランドの間のLOGICAL形
演算が続く。これは、ADD形演算に対するオペランド
をAI0およびAI2にルート指定することにより、こ
れらの入力を加算器にルート指定することにより、加算
器の出力をポスト加算器論理ブロック90,92,およ
び93にルート指定することにより、さらにAI3を通
して上記ポスト加算器論理ブロックにルート指定するこ
とにより実施される。LOGICAL形演算が続くLO
GICAL形演算は、第1LOGICAL形演算に対す
る2つのオペランドをプレ加算器論理ブロックに入力さ
れるAI0およびAI2にルート指定することにより、
プレ加算器からの結果をポスト加算器論理ブロックへの
0加算による修正なしにALUを通してルート指定する
ことにより、更にAI3を通して第3オペランドをポス
ト加算器論理ブロックにルート指定することにより実施
される。ADD形演算が続くADD形演算に対しては、
3つのオペランドが加算器の入力にルート指定され、ま
た加算器の出力がALUの出力に与えられる。第1およ
び第2命令の間でデータ依存性がないときの命令フィー
ルド54の第2命令を実行するALU65の演算は単純
である。この場合は、2つのオペランドだけがALUに
与えられる。従って、第2命令が加算命令のときは、加
算器70には、第3オペランドの位置の0と共に2つの
オペランドが与えられ、加算器の出力はALUの出力と
してマルチプレクサ95を通して選択される。第2命令
が論理命令のときは、2つのオペランドを論理要素7
1,72,および73にルート指定し、適切な出力を選
択し、さらに0をその他の2つの加算器入力に与えるこ
とにより結果を加算器70を通して流すことによって論
理演算を実施することができる。この場合、加算器の出
力は論理結果に等しくなり、またALUの出力としてマ
ルチプレクサ95により選択されることになる。一方、
2つの0加算により1つのオペランドを加算器を通して
流すことができ、これにより加算器70はこのオペラン
ドを出力として与えることになる。このオペランドは、
論理要素90,92,および93のその他のオペランド
と結合され、適切な論理要素出力がALUの出力として
マルチプレクサ95により選択される。
【0055】図11に示したように命令が複合化される
とき、依存性が存在してもしなくても、レジスタ50の
命令フィールド52の命令は、デコード・制御論理87
0,出力874による命令のデコーディング、デコード
・制御論理870,出力871,クロスコネクト要素8
72によるそのオペランドの選択、さらにALU875
における選択されたオペランドに対する選択された演算
の性能により従来通り実行される。ALU875は単一
命令の実行のために与えられるので、2つのオペランド
が入力AI0およびAI1を通して選択されたレジスタ
から与えられ、指示された結果が出力877に与えられ
る。
とき、依存性が存在してもしなくても、レジスタ50の
命令フィールド52の命令は、デコード・制御論理87
0,出力874による命令のデコーディング、デコード
・制御論理870,出力871,クロスコネクト要素8
72によるそのオペランドの選択、さらにALU875
における選択されたオペランドに対する選択された演算
の性能により従来通り実行される。ALU875は単一
命令の実行のために与えられるので、2つのオペランド
が入力AI0およびAI1を通して選択されたレジスタ
から与えられ、指示された結果が出力877に与えられ
る。
【0056】このようにして、図11に示した構成が与
えられると、従来のALU875と組み合わされたデー
タ依存性解消ALU65は、たとえ2つの命令間にデー
タ依存性が存在しても、それらの命令の同時的(また
は、並列)実行を支援する。
えられると、従来のALU875と組み合わされたデー
タ依存性解消ALU65は、たとえ2つの命令間にデー
タ依存性が存在しても、それらの命令の同時的(また
は、並列)実行を支援する。
【0057】AHAZ解消ALU アドレス生成もデータハザードにより影響され、このハ
ザードはアドレスハザードAHAZと呼ばれる。次のシ
ーケンスは、アドレスハザードとは無関係なシステム/
370命令の複合シーケンスを表わす。 AR R1,R2 S R3,D(R4,R5) ただし、Dは3つのニブル変位と表わす。アドレス計算
で用いられるR4およびR5は先行する命令により変更
されなかったので、AHAZは存在しない。次のシーケ
ンスには、アドレスハザードが存在する。 AR R1,R2 S R3,D(R1,R5) AR R1,R2 S R3,D(R4,R1) 上記シーケンスは、AHAZを与えるRX命令(カテゴ
リ9)とのRR命令(図6のカテゴリ1)の複合化を示
している。その他の組合わせとしては、RS命令および
SI命令と複合化されたRR命令がある。
ザードはアドレスハザードAHAZと呼ばれる。次のシ
ーケンスは、アドレスハザードとは無関係なシステム/
370命令の複合シーケンスを表わす。 AR R1,R2 S R3,D(R4,R5) ただし、Dは3つのニブル変位と表わす。アドレス計算
で用いられるR4およびR5は先行する命令により変更
されなかったので、AHAZは存在しない。次のシーケ
ンスには、アドレスハザードが存在する。 AR R1,R2 S R3,D(R1,R5) AR R1,R2 S R3,D(R4,R1) 上記シーケンスは、AHAZを与えるRX命令(カテゴ
リ9)とのRR命令(図6のカテゴリ1)の複合化を示
している。その他の組合わせとしては、RS命令および
SI命令と複合化されたRR命令がある。
【0058】インタロック解消ALUに対しては、命令
シーケンスとアドレスオペランド対立の全ての組合わせ
を解析することにより、AHAZインタロックを解消さ
せることから生じる新しい演算が導出されなければなら
ない。解析によれば、上記命令シーケンスに含まれるも
ののような共通のインタロックは、4対1ALUにより
解消させることができる。
シーケンスとアドレスオペランド対立の全ての組合わせ
を解析することにより、AHAZインタロックを解消さ
せることから生じる新しい演算が導出されなければなら
ない。解析によれば、上記命令シーケンスに含まれるも
ののような共通のインタロックは、4対1ALUにより
解消させることができる。
【0059】システム/370命令レベルアーキテクチ
ュアに対する全てのAHAZインタロックを解消させる
ALUにより支援されなければならない機能を、図13
に示す。4つの入力が特定されない場合は、暗黙の0が
与えられる。図13により定められたAHAZインタロ
ック解消ALUの論理図を図14に示す。図13で規定
された機能の、全てではないが、かなりのサブセットが
図示したALUにより支援される。このサブセットは図
13の行1〜21に与えられた機能から構成される。ど
の機能を含むかに関する判定は、「特異表現」セクショ
ンに従って検討される実現判定である。
ュアに対する全てのAHAZインタロックを解消させる
ALUにより支援されなければならない機能を、図13
に示す。4つの入力が特定されない場合は、暗黙の0が
与えられる。図13により定められたAHAZインタロ
ック解消ALUの論理図を図14に示す。図13で規定
された機能の、全てではないが、かなりのサブセットが
図示したALUにより支援される。このサブセットは図
13の行1〜21に与えられた機能から構成される。ど
の機能を含むかに関する判定は、「特異表現」セクショ
ンに従って検討される実現判定である。
【0060】図14に示したように、ALUは加算器1
00を備え、そこでは2つの3入力2出力キャリ保存加
算器101および102が、2入力単一出力キャリ・ル
ックアヘッド加算器103と、加算器100が有効に図
14のALUの演算に必要な4オペランド単一結果加算
器であるようにカスケード接続される。
00を備え、そこでは2つの3入力2出力キャリ保存加
算器101および102が、2入力単一出力キャリ・ル
ックアヘッド加算器103と、加算器100が有効に図
14のALUの演算に必要な4オペランド単一結果加算
器であるようにカスケード接続される。
【0061】図13の機能を構成するに際して、ALU
構造の複雑性は制御論理を犠牲にして簡単にしてある。
これは例により最良に説明される。次に示す2つのシス
テム/370命令シーケンスを考えてみる。 NR R1,R2 (4) S R3,D(R1,R5) および NR R1,R2 (5) S R3,D(R4,R1)。 このシーケンスの一般的な表示を NR r1,r2 S r3,D(R4,R5) とする。
構造の複雑性は制御論理を犠牲にして簡単にしてある。
これは例により最良に説明される。次に示す2つのシス
テム/370命令シーケンスを考えてみる。 NR R1,R2 (4) S R3,D(R1,R5) および NR R1,R2 (5) S R3,D(R4,R1)。 このシーケンスの一般的な表示を NR r1,r2 S r3,D(R4,R5) とする。
【0062】第1シーケンスに対しては、オペランドの
アドレスは、 OA=D+(R1〓R2)+5 であり、第2シーケンスのものは OA=D+R4+(R1〓R2) で与えられる。
アドレスは、 OA=D+(R1〓R2)+5 であり、第2シーケンスのものは OA=D+R4+(R1〓R2) で与えられる。
【0063】ALUの複雑さを犠牲にして実行制御装置
を簡単にするには、次のような2つの演算がALUによ
り実行される必要がある。 OA=AG10+(AG11〓AG12)+AG13 OA=AG10+AG12+(AG11〓AG13) ここでは、DはAGIOに、r2はAGI1に、r4は
AGI2に、r5はAGI3に供給される。しかし、も
し制御装置が、r4とr5のどれがr1とのハザードを
持つかを検出し、このレジスタを動的にAGI2にルー
ト指定するときには、ALUを簡単化することができ
る。この仮定のために、ALUは演算 OA=AG10+(AG11〓AG12)+AG13 を単に支援しなければならない。
を簡単にするには、次のような2つの演算がALUによ
り実行される必要がある。 OA=AG10+(AG11〓AG12)+AG13 OA=AG10+AG12+(AG11〓AG13) ここでは、DはAGIOに、r2はAGI1に、r4は
AGI2に、r5はAGI3に供給される。しかし、も
し制御装置が、r4とr5のどれがr1とのハザードを
持つかを検出し、このレジスタを動的にAGI2にルー
ト指定するときには、ALUを簡単化することができ
る。この仮定のために、ALUは演算 OA=AG10+(AG11〓AG12)+AG13 を単に支援しなければならない。
【0064】このようなトレードオフは、アドレス発生
ALU並びに実行および分岐決定ALUの複雑さを低減
させるためになされる。
ALU並びに実行および分岐決定ALUの複雑さを低減
させるためになされる。
【0065】図14のALUは、図11のALU65に
置き代えることができる。この場合、デコード・制御論
理60は図13の機能を起動に反映することになる。
置き代えることができる。この場合、デコード・制御論
理60は図13の機能を起動に反映することになる。
【0066】分岐ハザード解消ALU 図15および図16により与えられる分岐決定ALUに
対する複合化の影響を求めるためには、実行およびアド
レス発生のためのインタロック解消ALUに対するもの
に対して同様の解析が行われなければならない。分岐決
定ALUは、レジスタ値を比較する命令により要求され
る機能を有している。これは分岐命令BXLE,BX
H,BCT,およびBCTRを含み、そこではレジスタ
値は第2レジスタ(BXLEおよびBXH)の内容だけ
インクリメントされるか、レジスタ値(BXLEおよび
BXH)または0(BCTおよびBCTR)と比較され
る前に1(BCTおよびBCTR)だけデクリメントさ
れて分岐の結果を決定している。条件付分岐はこのAL
Uによっては実行されない。
対する複合化の影響を求めるためには、実行およびアド
レス発生のためのインタロック解消ALUに対するもの
に対して同様の解析が行われなければならない。分岐決
定ALUは、レジスタ値を比較する命令により要求され
る機能を有している。これは分岐命令BXLE,BX
H,BCT,およびBCTRを含み、そこではレジスタ
値は第2レジスタ(BXLEおよびBXH)の内容だけ
インクリメントされるか、レジスタ値(BXLEおよび
BXH)または0(BCTおよびBCTR)と比較され
る前に1(BCTおよびBCTR)だけデクリメントさ
れて分岐の結果を決定している。条件付分岐はこのAL
Uによっては実行されない。
【0067】図16に示されたALUはマルチステージ
加算器110を備え、そこでは2つのキャリ保存加算器
111および112がカスケード接続され、キャリ保存
加算器112の2つの出力はキャリ・ルックアヘッド加
算器113に対して2つの入力を与える。この組合わせ
は、図16のALUに対して与えられる4入力単一結果
加算器を有効に提供する。
加算器110を備え、そこでは2つのキャリ保存加算器
111および112がカスケード接続され、キャリ保存
加算器112の2つの出力はキャリ・ルックアヘッド加
算器113に対して2つの入力を与える。この組合わせ
は、図16のALUに対して与えられる4入力単一結果
加算器を有効に提供する。
【0068】発生し得るデータハザードの例として、次
のような命令シーケンスを考えてみる。 AL R1,D(R2,R3) BCT R1,D(R2,R3) [X]をメモリ位置Xの内容とする。実行の結果は、 R1=R1+[D+R2+R3]−1 もし(R1+[D+R2+R3])−1=0なら分岐せ
よ。
のような命令シーケンスを考えてみる。 AL R1,D(R2,R3) BCT R1,D(R2,R3) [X]をメモリ位置Xの内容とする。実行の結果は、 R1=R1+[D+R2+R3]−1 もし(R1+[D+R2+R3])−1=0なら分岐せ
よ。
【0069】この比較は、演算 R1+[D+R2+R3]−1−0 を行うことにより実施される。
【0070】分岐決定ALUに対する解析の結果は、こ
れ以上は説明しないが、図15および図16に与えられ
たようになる。データストリームにより支援される機能
には、図15の行1〜25により規定されたものが含ま
れる。
れ以上は説明しないが、図15および図16に与えられ
たようになる。データストリームにより支援される機能
には、図15の行1〜25により規定されたものが含ま
れる。
【0071】図16のALUは、図11のALU65に
置き代えることができる。この場合は、デコード・制御
論理60は図15の機能を適切に反映することになる。
置き代えることができる。この場合は、デコード・制御
論理60は図15の機能を適切に反映することになる。
【0072】特異表現 オペランドの対立から生じる機能のいくつかのものは、
他のものよりも一層複雑になる。例えば、命令シーケン
ス AR R1,R2 AR R1,R1 はその付随する複雑さと共に4対1ALUを要求して、
その実行結果が R1=(R1+R2)+(R1+R2) となるため、データインタロックを解消させる。
他のものよりも一層複雑になる。例えば、命令シーケン
ス AR R1,R2 AR R1,R1 はその付随する複雑さと共に4対1ALUを要求して、
その実行結果が R1=(R1+R2)+(R1+R2) となるため、データインタロックを解消させる。
【0073】他のシーケンスは、インタロックを解消さ
せるために付加的な遅延がALUに取り込まれることを
要求する演算をもたらす。増加した遅延を示すシーケン
スは SR R1,R2 LPR R1,R1 で与えられ、これは演算 R1=/R1−R2/ をもたらす。
せるために付加的な遅延がALUに取り込まれることを
要求する演算をもたらす。増加した遅延を示すシーケン
スは SR R1,R2 LPR R1,R1 で与えられ、これは演算 R1=/R1−R2/ をもたらす。
【0074】この演算は、減算の結果が絶対値の実行を
セットアップするのに必要とされるため、それ自身並列
実行されない。
セットアップするのに必要とされるため、それ自身並列
実行されない。
【0075】ALUの全てのインタロックを解消させる
よりも、上記のようなより複雑な機能に関連する命令シ
ーケンスを検出するように設計された命令送出論理また
はプリプロセッサを設けることができる。プリプロセッ
サ検出は、多くの場合ニア・クリティカル・パスである
送出論理に対する遅延付加を回避させるものである。こ
のようなシーケンスが検出されると、送出論理またはプ
リプロセッサはスカラモードでシーケンスを発する動作
に戻り、インタロックを解消させる必要性を回避する。
どの命令シーケンスがそれらの解消されたインタロック
を持つべきかまたは持つべきでないかに関する判定は、
本発明の範囲を越えた要因に依存する実現判定である。
それにも拘らず、ALU実現の複雑性と送出論理の複雑
性との間のトレードオフは注目されるべきである。
よりも、上記のようなより複雑な機能に関連する命令シ
ーケンスを検出するように設計された命令送出論理また
はプリプロセッサを設けることができる。プリプロセッ
サ検出は、多くの場合ニア・クリティカル・パスである
送出論理に対する遅延付加を回避させるものである。こ
のようなシーケンスが検出されると、送出論理またはプ
リプロセッサはスカラモードでシーケンスを発する動作
に戻り、インタロックを解消させる必要性を回避する。
どの命令シーケンスがそれらの解消されたインタロック
を持つべきかまたは持つべきでないかに関する判定は、
本発明の範囲を越えた要因に依存する実現判定である。
それにも拘らず、ALU実現の複雑性と送出論理の複雑
性との間のトレードオフは注目されるべきである。
【0076】アドレス発生時に存在するハザードも、実
現トレードオフをもたらす。例えば、殆んどのアドレス
発生インタロックは、既に説明したように4対1ALU
を用いて解消させることができる。しかしながら、次の
シーケンス AR R1,R2 S R3,D(R1,R1) はこのカテゴリーには適してない。この場合には、生じ
る演算が OA=D+(R1+R2)+(R1+R2) で与えられることから、AHAZインタロックを解消さ
せるのに5対1ALUが必要とされる。但し、OAは得
られたオペランドアドレスである。既に説明したものと
同様に、ALUのこの機能の内容は、このようなインタ
ロックの発生頻度に依存する実現判定である。分岐決定
ALUに対しても同様の結果が適用される。
現トレードオフをもたらす。例えば、殆んどのアドレス
発生インタロックは、既に説明したように4対1ALU
を用いて解消させることができる。しかしながら、次の
シーケンス AR R1,R2 S R3,D(R1,R1) はこのカテゴリーには適してない。この場合には、生じ
る演算が OA=D+(R1+R2)+(R1+R2) で与えられることから、AHAZインタロックを解消さ
せるのに5対1ALUが必要とされる。但し、OAは得
られたオペランドアドレスである。既に説明したものと
同様に、ALUのこの機能の内容は、このようなインタ
ロックの発生頻度に依存する実現判定である。分岐決定
ALUに対しても同様の結果が適用される。
【0077】加算器の一般化 nインタロックの最も一般的な場合に対してインタロッ
ク解消ハードウェアを得るために、以上と同様の解析を
行うことができる。このため図17を参照する。 AR R1,R2 AR R3,R1 のような単純なデータインタロックを仮定する。ここ
に、第1命令からの変更レジスタが第2命令のオペラン
ドの単なる1つとして使用され、インタロックの解消に
は(n+1)by1ALUが必要になる。例えば、上記
の仮定の下で3つのインタロックを解消させるには、4
対1ALUが要求される。これにはまた、ALU内に他
のCSAステージが必要となる。
ク解消ハードウェアを得るために、以上と同様の解析を
行うことができる。このため図17を参照する。 AR R1,R2 AR R3,R1 のような単純なデータインタロックを仮定する。ここ
に、第1命令からの変更レジスタが第2命令のオペラン
ドの単なる1つとして使用され、インタロックの解消に
は(n+1)by1ALUが必要になる。例えば、上記
の仮定の下で3つのインタロックを解消させるには、4
対1ALUが要求される。これにはまた、ALU内に他
のCSAステージが必要となる。
【0078】しかしながら、ALUで要求されるCSA
ステージの個数の増加は、直線的ではない。単一実行ユ
ニットとして9オペランドを処理するように設計された
ALUは、4つのCSAステージおよび1つのCLAス
テージを取る。これは図17に示してあり、そこでは各
々の垂直ラインは加算器入力を示し、また各々の水平ラ
インは加算器を示している。キャリ保存加算器は水平ラ
イン100〜106により表わされ、キャリ・ルックア
ヘッド加算器はライン109により表わされる。各々の
CSA加算器は、3つの入力から2つの出力を発生す
る。入力ストリームの減少は、最後のCSAがストリー
ムを2に減らすまでステージからステージに継続してな
される。次の加算器は、2つの入力から1つの最終出力
を発生するCLAである。算術演算,1ステージCLA
加算器,および4ステージCSA加算器を仮定すると、
提案された装置を用いた単一ユニットとしての9つのオ
ペランドの実行は、前記のWulfにより提案された解
決法と同等の時間で1次近似で実現することができる。
ステージの個数の増加は、直線的ではない。単一実行ユ
ニットとして9オペランドを処理するように設計された
ALUは、4つのCSAステージおよび1つのCLAス
テージを取る。これは図17に示してあり、そこでは各
々の垂直ラインは加算器入力を示し、また各々の水平ラ
インは加算器を示している。キャリ保存加算器は水平ラ
イン100〜106により表わされ、キャリ・ルックア
ヘッド加算器はライン109により表わされる。各々の
CSA加算器は、3つの入力から2つの出力を発生す
る。入力ストリームの減少は、最後のCSAがストリー
ムを2に減らすまでステージからステージに継続してな
される。次の加算器は、2つの入力から1つの最終出力
を発生するCLAである。算術演算,1ステージCLA
加算器,および4ステージCSA加算器を仮定すると、
提案された装置を用いた単一ユニットとしての9つのオ
ペランドの実行は、前記のWulfにより提案された解
決法と同等の時間で1次近似で実現することができる。
【0079】データハザード・インタロックは、パイプ
ラインにストールを導入することによりパイプライン化
したマシンから得られる性能を劣化させる。これらのイ
ンタロックの幾つかは、コード移動および命令スケジュ
ーリングにより除去することができる。性能の劣化を低
減させる他の提案があり、これはデータインタロックを
処理する命令を定めるようにしている。この提案には、
合理的な命令サイズで処理できるインタロックの数に制
限があるという問題がある。更にこの方法は、370ア
ーキテクチュア・コンパチブルマシンに対しては用いら
れない。
ラインにストールを導入することによりパイプライン化
したマシンから得られる性能を劣化させる。これらのイ
ンタロックの幾つかは、コード移動および命令スケジュ
ーリングにより除去することができる。性能の劣化を低
減させる他の提案があり、これはデータインタロックを
処理する命令を定めるようにしている。この提案には、
合理的な命令サイズで処理できるインタロックの数に制
限があるという問題がある。更にこの方法は、370ア
ーキテクチュア・コンパチブルマシンに対しては用いら
れない。
【0080】本発明においては、命令インタロックを除
去する他の方法が与えられている。本発明は如何なるア
ーキテクチュア上の変更も必要とせず、全ての可能な命
令対およびそれらのインタロックが、命令セット内に構
成されることを必要としないという利点を与え、またマ
シンのサイクルタイムに対して単に最も穏当なインパク
トを与えるかまたはインパクトを全く与えず、さらに図
1の従来の方法で要求され、しかもシステム/370で
構成されたマシンとコンパチブルなハードウェアを必要
とするものである。
去する他の方法が与えられている。本発明は如何なるア
ーキテクチュア上の変更も必要とせず、全ての可能な命
令対およびそれらのインタロックが、命令セット内に構
成されることを必要としないという利点を与え、またマ
シンのサイクルタイムに対して単に最も穏当なインパク
トを与えるかまたはインパクトを全く与えず、さらに図
1の従来の方法で要求され、しかもシステム/370で
構成されたマシンとコンパチブルなハードウェアを必要
とするものである。
【図1】演算を対化する命令を実行する従来のアーキテ
クチュアを示す図である。
クチュアを示す図である。
【図2】スカラ命令のパイプラインによる実行を示す1
組のタイミングシーケンスを示す図である。
組のタイミングシーケンスを示す図である。
【図3】最高3つの演算を行い、単一結果を発生する加
算器を示す図である。
算器を示す図である。
【図4】既存スカラマシンにより実行される命令のカテ
ゴリ化を示す図である。
ゴリ化を示す図である。
【図5】既存スカラマシンにより実行される命令のカテ
ゴリ化を示す図である。
ゴリ化を示す図である。
【図6】図4のカテゴリ1における論理形命令および加
算形命令が組み合わされる場合をインタロックすること
により生成される機能を示す図である。
算形命令が組み合わされる場合をインタロックすること
により生成される機能を示す図である。
【図7】本発明のALUによりオペランドに対してなさ
れて図4および図5の複合可能カテゴリに含まれる命令
を支援することが要求される演算を規定する図である。
れて図4および図5の複合可能カテゴリに含まれる命令
を支援することが要求される演算を規定する図である。
【図8】本発明のALUによりオペランドに対してなさ
れて図4および図5の複合可能カテゴリに含まれる命令
を支援することが要求される演算を規定する図である。
れて図4および図5の複合可能カテゴリに含まれる命令
を支援することが要求される演算を規定する図である。
【図9】図7および図8で定められたALUへのオペラ
ンドのルート指定を要約する図である。
ンドのルート指定を要約する図である。
【図10】図7および図8で定められたALUへのオペ
ランドのルート指定を要約する図である。
ランドのルート指定を要約する図である。
【図11】2つのインタロック命令の並列実行を行うた
めに本発明を使用する方法を示すブロック図である。
めに本発明を使用する方法を示すブロック図である。
【図12】図7,図8,図9,および図10により定め
られた多機能ALUを示す図である。
られた多機能ALUを示す図である。
【図13】アドレス発生時に生じるハザードに固有のイ
ンタロックを解消させる実施を要求する機能を示す図で
ある。
ンタロックを解消させる実施を要求する機能を示す図で
ある。
【図14】図13に従う多機能ALUを示す論理図であ
る。
る。
【図15】ALUにより支援されて、複合化分岐命令に
おけるインタロックを解消させる機能のレイアウト図で
ある。
おけるインタロックを解消させる機能のレイアウト図で
ある。
【図16】図15に従うALUを示す論理図である。
【図17】9つのオペランドを含む命令に対するインタ
ロックを解消させるのに必要な加算器の構成を示す図で
ある。
ロックを解消させるのに必要な加算器の構成を示す図で
ある。
2,3,52,54 命令 10 キャリ保存加算器 22 キャリ・ルックアヘッド加算器 50 レジスタ 52,54 命令フィールド 56,58 タグ 60,70 制御論理 63 汎用レジスタ 64 クロスコネクト要素 65 データ依存性解消ALU 71,72,73 論理機能要素 75,78,80,82,95 マルチプレクサ 77,87 インバータ 90,92,93 論理要素
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェームス・エドワード・フィリップス アメリカ合衆国 ニューヨーク州 ビンガ ムトン クレイリィ アベニュー 138 (72)発明者 バソロメウ・(エヌエムアイ)・ブラナ アメリカ合衆国 ニューヨーク州 ニワー ク バレイ ダントン ドライブ (番地 なし) (56)参考文献 特開 昭63−86033(JP,A) 特開 昭59−66746(JP,A) 第3引用例 中田著「コンピューターサ イエンス・ライブラリ コンパイラ」[第 5刷](昭和58年6月)産業図書、P. 172−174
Claims (24)
- 【請求項1】連続する実行サイクルにおけるスカラ命令
のシーケンスの逐次実行のために構成されたコンピュー
タにおいて、単一の実行サイクルにおける複数のスカラ
命令の並列実行を支援する装置であって、 複数のスカラ命令であり、それらの第1命令が、それら
の第2命令によりオペランドとして使用される結果を生
成する複数のスカラ命令を受ける命令手段と、 複数のオペランドであって、それらの少なくとも2つが
前記第1および第2スカラ命令により使用されるオペラ
ンドをほぼ同時に与えるオペランド手段と、 前記命令手段に接続され、前記複数のスカラ命令を実行
する演算を指示する制御信号を発生する制御手段と、 前記オペランド手段および前記制御手段に接続され、前
記制御信号および前記2つのオペランドを含む複数のオ
ペランドに応じて、単一の実行サイクルにおいて、前記
複数のオペランドに対する前記演算の実行内容に対応す
る単一の結果を生成する実行手段とを備える装置。 - 【請求項2】前記実行手段は、3つのオペランドに応じ
て単一の加算結果を生成する加算器を備える請求項1記
載の装置。 - 【請求項3】前記加算器は、前記3つのオペランドに応
じて2つの出力を発生するキャリ保存加算器と、このキ
ャリ保存加算器に接続され、その2つの出力に応じて1
つの出力を発生するキャリ・ルックアヘッド加算器とを
備える請求項2記載の装置。 - 【請求項4】前記実行手段は、前記オペランド手段およ
び前記加算器に接続されてオペランドに対する論理機能
を行い論理結果を発生する論理手段をさらに備え、前記
加算器は前記論理結果およびオペランドの1つに応じて
前記単一の加算結果を発生する請求項2記載の装置。 - 【請求項5】前記実行手段は、オペランド手段および加
算器に接続されて第1および第2オペランドに対する論
理機能を実施する論理手段をさらに備え、前記実行手段
は論理結果および単一の加算器の結果に応じて単一の結
果を発生する請求項2記載の装置。 - 【請求項6】前記第1スカラ命令は論理命令であり、前
記第2スカラ命令は算術演算命令であり、さらに前記実
行手段は、第1および第2オペランドを結合して前記論
理命令により要求される論理結果を発生する論理手段
と、この論理結果を第3オペランドと結合して前記単一
の結果を発生する算術演算手段とを備え、前記単一の結
果は前記算術演算命令により要求される請求項1記載の
装置。 - 【請求項7】前記第1スカラ命令は算術演算命令であ
り、前記第2スカラ命令は論理命令であり、さらに前記
実行手段は、第1および第2オペランドを結合して前記
算術演算命令により要求される算術演算結果を発生する
算術演算手段と、前記算術演算結果を第3オペランドと
結合して前記単一の結果を発生する論理手段とを備え、
前記単一の結果は前記論理命令により要求される請求項
1記載の装置。 - 【請求項8】前記第1スカラ命令は算術演算命令であ
り、前記第2スカラ命令は算術演算命令であり、さらに
前記実行手段は、3つのオペランドを結合して単一の算
術演算結果を発生する算術演算手段を備え、前記単一の
算術演算結果は前記単一の結果として与えられる請求項
1記載の装置。 - 【請求項9】前記第1スカラ命令は論理命令であり、前
記第2スカラ命令は論理命令であり、さらに前記実行手
段は、第1および第2オペランドを結合して第1論理結
果を発生し、この第1論理結果が前記第1論理命令によ
り要求される第1論理手段と、前記第1論理結果を第3
オペランドに結合して第2論理結果を発生し、この第2
論理結果は前記第2スカラ命令により要求され、また前
記第2論理結果は前記単一の結果として与えられる第2
論理手段とを備える請求項1記載の装置。 - 【請求項10】3つのオペランドを結合して1対の命令
に応じて単一の結果を発生する多機能ALU(算術論理
ユニット)であって、 2つのオペランドを論理的に結合して第1論理結果を発
生する第1の組の論理要素と、 3つのオペランドを算術的に結合して単一の算術結果を
発生する加算器と、 前記オペランドの全て、前記オペランドの2つとゼロ、
前記オペランドの1つと1つのゼロと前記第1論理結
果、または2つのゼロと前記第1論理結果のいずれかを
前記加算器に入力する回路と、 前記オペランドの1つを前記単一の算術演算結果と論理
的に結合して第2論理結果を発生する第2の組の論理要
素と、 前記算術演算結果か前記第2論理結果のいずれかを出力
として与える回路とを備える多機能ALU。 - 【請求項11】前記加算器は、 3つのオペランドに応じて2つの出力を発生するキャリ
保存加算器と、 このキャリ保存加算器に接続され、前記2つの出力に応
じて1つの出力を発生するキャリ・ルックアヘッド加算
器とを備える請求項10記載の多機能ALU。 - 【請求項12】連続する実行周期におけるスカラ命令の
シーケンスの逐次実行のために構成されたコンピュータ
において、複数のスカラ命令の同時並列実行を支援する
インタロック解消装置であって、 複数のスカラ命令であり、前記複数のスカラ命令の第1
命令は前記複数のスカラ命令の第2命令により発生され
た結果をオペランドとして用いる複数のスカラ命令を同
時実行するために受ける命令レジスタ手段と、 前記複数のスカラ命令の実行に際して用いられる複数の
オペランドをほぼ同時に与えるオペランド手段と、 前記命令レジスタ手段に接続され、前記複数のスカラ命
令を実行する演算を指示する制御信号を発生する制御手
段と、 前記オペランド手段および前記制御手段に接続され、前
記制御信号および前記複数のオペランドに応じて、単一
実行周期において、第1および第2命令の同時実行に対
応する単一の結果を発生するインタロック解消実行手段
とを備えるインタロック解消装置。 - 【請求項13】前記インタロック解消実行手段は、3つ
のオペランドに応じて単一の加算結果を発生する加算器
を備える請求項12記載の装置。 - 【請求項14】前記加算器はキャリ保存加算器を備え、
このキャリ保存加算器は、このキャリ保存加算器の2つ
の出力に応じて1つの出力を発生するキャリ保存加算器
に接続されたキャリ・ルックアヘッド加算器の3つのオ
ペランドに応じて2つの出力を発生する請求項13記載
の装置。 - 【請求項15】前記インタロック解消実行手段はさら
に、前記オペランド手段および前記加算器に接続されて
オペランドに対する論理機能を実行して論理結果を発生
する論理手段を備え、前記加算器は前記論理結果および
前記オペランドの1つに応じて単一の加算結果を発生す
る請求項13記載の装置。 - 【請求項16】前記インタロック解消実行手段は、前記
オペランド手段および前記加算器に接続されて第1およ
び第2オペランドに対する論理機能を実行して論理結果
を発生する論理手段をさらに備え、前記インタロック解
消実行手段は前記論理結果および前記単一の加算結果に
応じて単一の結果を発生する請求項13記載の装置。 - 【請求項17】前記第1命令は論理命令であり、前記第
2命令は算術演算命令であり、さらに前記インタロック
解消実行手段は、第1および第2オペランドを結合して
論理命令により要求される論理結果を発生する論理手段
と、前記論理結果を第3オペランドと結合して前記単一
の結果を発生する算術演算手段とを備え、前記単一の結
果は前記算術演算命令の実行を表わす請求項12記載の
装置。 - 【請求項18】前記第1命令は算術演算命令であり、前
記第2命令は論理命令であり、さらに前記インタロック
解消実行手段は、第1および第2オペランドを結合して
前記算術演算命令により要求される算術演算結果を発生
する算術演算手段と、前記算術演算結果を第3オペラン
ドと結合して単一結果を発生する論理手段とを備え、前
記単一結果は論理命令の実行を表わす請求項12記載の
装置。 - 【請求項19】前記第1命令は算術演算命令であり、前
記第2命令は算術演算命令であり、さらに前記インタロ
ック解消実行手段は、3つのオペランドを結合して単一
算術演算結果を発生する算術演算手段を備え、前記3つ
のオペランドは第1および第2命令の実行に際して使用
される2つのオペランドを含む請求項12記載の装置。 - 【請求項20】前記第1命令は第1論理命令であり、前
記第2命令は第2論理命令であり、さらに前記インタロ
ック解消実行手段は、第1および第2オペランドを結合
して第1論理結果を発生し、この第1論理結果が第1論
理命令により要求される第1論理手段と、前記第1論理
結果を第3オペランドと結合して第2論理を発生し、こ
の第2論理結果は第2論理命令の実行を表わし、さらに
単一の結果として与えられる第2論理手段とを備える請
求項12記載の装置。 - 【請求項21】連続する実行サイクルにおけるスカラ命
令のシーケンスの逐次実行のために構成されたコンピュ
ータにおいて、単一の実行サイクルにおける第1スカラ
命令と第2スカラ命令の同時実行を表わす結果を発生
し、前記同時実行においては前記第2スカラ命令は前記
第1スカラ命令の実行により発生された結果を要求する
実行装置であって、 第1および第2スカラ命令を受ける命令レジスタ手段
と、 複数のオペランドであって、これらの複数のオペランド
の少なくとも2つは第1および第2スカラ命令の実行時
に使用される複数のオペランドを受けるオペランド手段
と、 前記命令手段に接続され、第1スカラ命令および第2ス
カラ命令の実行を指示する制御信号を発生する制御手段
と、 この制御手段および前記オペランド手段に接続され、前
記制御信号および2つのオペランドに応じて、ある実行
サイクルにおいて、第1命令の実行に対応する結果を発
生する第1実行手段と、 前記オペランド手段および前記制御手段に接続され、前
記制御信号および前記2つのオペランドを含む複数のオ
ペランドに応じて、前記実行サイクルにおいて、第1お
よび第2命令の実行に対応する単一の結果を発生する第
2実行手段とを備える実行装置。 - 【請求項22】前記第1実行手段は、2つのオペランド
に応じて単一の加算結果を発生する加算器を備える請求
項21記載の装置。 - 【請求項23】前記第2実行手段は、3つのオペランド
に応じて単一の加算結果を発生する加算器を備える請求
項21記載の装置。 - 【請求項24】前記加算器は、3つのオペランドに応じ
て2つの出力を発生するキャリ保存加算器と、このキャ
リ保存加算器に接続され、このキャリ保存加算器の2つ
の出力に応じて1つの出力を発生するキャリ・ルックア
ヘッド加算器とを備える請求項23記載の装置。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US504910 | 1990-04-04 | ||
| US07/504,910 US5051940A (en) | 1990-04-04 | 1990-04-04 | Data dependency collapsing hardware apparatus |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0573309A JPH0573309A (ja) | 1993-03-26 |
| JPH0778732B2 true JPH0778732B2 (ja) | 1995-08-23 |
Family
ID=24008222
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP3096096A Expired - Lifetime JPH0778732B2 (ja) | 1990-04-04 | 1991-04-03 | 複数スカラ命令の並列実行支援装置 |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US5051940A (ja) |
| EP (1) | EP0451562A3 (ja) |
| JP (1) | JPH0778732B2 (ja) |
| BR (1) | BR9101334A (ja) |
| CA (1) | CA2039639C (ja) |
| CZ (1) | CZ279873B6 (ja) |
| HU (1) | HUT57453A (ja) |
| PL (1) | PL165457B1 (ja) |
Families Citing this family (64)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0390978A1 (en) * | 1989-04-03 | 1990-10-10 | Koninklijke Philips Electronics N.V. | Communication system with a two-wire serial backbone bus for connecting bridges to secondary three-wire buses |
| JP2511151B2 (ja) * | 1989-09-11 | 1996-06-26 | 富士通株式会社 | デ―タ処理装置 |
| JPH07122846B2 (ja) * | 1990-04-04 | 1995-12-25 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 3―1alu装置 |
| CA2037708C (en) * | 1990-05-04 | 1998-01-20 | Richard J. Eickemeyer | General purpose compound apparatus for instruction-level parallel processors |
| JP2535252B2 (ja) * | 1990-10-17 | 1996-09-18 | 三菱電機株式会社 | 並列処理装置 |
| JPH04156613A (ja) * | 1990-10-20 | 1992-05-29 | Fujitsu Ltd | 命令バッファ装置 |
| EP0498067A2 (en) * | 1991-02-08 | 1992-08-12 | International Business Machines Corporation | Microcode generation for a scalable compound instruction set machine |
| JP2693651B2 (ja) * | 1991-04-30 | 1997-12-24 | 株式会社東芝 | 並列プロセッサー |
| US5488729A (en) * | 1991-05-15 | 1996-01-30 | Ross Technology, Inc. | Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution |
| JPH04367936A (ja) | 1991-06-17 | 1992-12-21 | Mitsubishi Electric Corp | スーパースカラープロセッサ |
| US5539911A (en) * | 1991-07-08 | 1996-07-23 | Seiko Epson Corporation | High-performance, superscalar-based computer system with out-of-order instruction execution |
| JP2779557B2 (ja) * | 1991-07-09 | 1998-07-23 | 三菱電機株式会社 | 並列演算処理装置 |
| US5787303A (en) * | 1991-10-31 | 1998-07-28 | Kabushiki Kaisha Toshiba | Digital computer system capable of processing a plurality of instructions in parallel based on a VLIW architecture |
| US5590348A (en) * | 1992-07-28 | 1996-12-31 | International Business Machines Corporation | Status predictor for combined shifter-rotate/merge unit |
| US6735685B1 (en) * | 1992-09-29 | 2004-05-11 | Seiko Epson Corporation | System and method for handling load and/or store operations in a superscalar microprocessor |
| JP3644959B2 (ja) * | 1992-09-29 | 2005-05-11 | セイコーエプソン株式会社 | マイクロプロセッサシステム |
| US5467473A (en) * | 1993-01-08 | 1995-11-14 | International Business Machines Corporation | Out of order instruction load and store comparison |
| US5761473A (en) * | 1993-01-08 | 1998-06-02 | International Business Machines Corporation | Method and system for increased instruction synchronization efficiency in a superscalar processsor system utilizing partial data dependency interlocking |
| US5737561A (en) * | 1993-01-22 | 1998-04-07 | Intel Corporation | Method and apparatus for executing an instruction with multiple brancing options in one cycle |
| JPH06242948A (ja) * | 1993-02-16 | 1994-09-02 | Fujitsu Ltd | パイプライン処理計算機 |
| US5717908A (en) * | 1993-02-25 | 1998-02-10 | Intel Corporation | Pattern recognition system using a four address arithmetic logic unit |
| US5825921A (en) * | 1993-03-19 | 1998-10-20 | Intel Corporation | Memory transfer apparatus and method useful within a pattern recognition system |
| US5710912A (en) * | 1993-05-06 | 1998-01-20 | Hewlett-Packard Co. | Method and apparatus for enabling a computer system to adjust for latency assumptions |
| US6154828A (en) * | 1993-06-03 | 2000-11-28 | Compaq Computer Corporation | Method and apparatus for employing a cycle bit parallel executing instructions |
| CA2123442A1 (en) * | 1993-09-20 | 1995-03-21 | David S. Ray | Multiple execution unit dispatch with instruction dependency |
| DE69430018T2 (de) * | 1993-11-05 | 2002-11-21 | Intergraph Corp., Huntsville | Befehlscachespeicher mit assoziativem Kreuzschienenschalter |
| US5596763A (en) * | 1993-11-30 | 1997-01-21 | Texas Instruments Incorporated | Three input arithmetic logic unit forming mixed arithmetic and boolean combinations |
| US5590350A (en) * | 1993-11-30 | 1996-12-31 | Texas Instruments Incorporated | Three input arithmetic logic unit with mask generator |
| US5509129A (en) * | 1993-11-30 | 1996-04-16 | Guttag; Karl M. | Long instruction word controlling plural independent processor operations |
| US5485411A (en) * | 1993-11-30 | 1996-01-16 | Texas Instruments Incorporated | Three input arithmetic logic unit forming the sum of a first input anded with a first boolean combination of a second input and a third input plus a second boolean combination of the second and third inputs |
| US6016538A (en) * | 1993-11-30 | 2000-01-18 | Texas Instruments Incorporated | Method, apparatus and system forming the sum of data in plural equal sections of a single data word |
| US5465224A (en) * | 1993-11-30 | 1995-11-07 | Texas Instruments Incorporated | Three input arithmetic logic unit forming the sum of a first Boolean combination of first, second and third inputs plus a second Boolean combination of first, second and third inputs |
| ATE195596T1 (de) * | 1994-01-10 | 2000-09-15 | Dow Chemical Co | Ein massiv multiplexierter, superskalarer prozessor mit harvard-architektur |
| TW260765B (ja) * | 1994-03-31 | 1995-10-21 | Ibm | |
| US5546599A (en) * | 1994-03-31 | 1996-08-13 | International Business Machines Corporation | Processing system and method of operation for processing dispatched instructions with detected exceptions |
| US5559976A (en) * | 1994-03-31 | 1996-09-24 | International Business Machines Corporation | System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions |
| TW353732B (en) * | 1994-03-31 | 1999-03-01 | Ibm | Processing system and method of operation |
| JPH07281893A (ja) * | 1994-04-15 | 1995-10-27 | Internatl Business Mach Corp <Ibm> | 処理システム及び演算方法 |
| US5644779A (en) * | 1994-04-15 | 1997-07-01 | International Business Machines Corporation | Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction |
| US5659722A (en) * | 1994-04-28 | 1997-08-19 | International Business Machines Corporation | Multiple condition code branching system in a multi-processor environment |
| US5555424A (en) * | 1994-10-06 | 1996-09-10 | The Dow Chemical Company | Extended Harvard architecture computer memory system with programmable variable address increment |
| US5931941A (en) * | 1995-04-28 | 1999-08-03 | Lsi Logic Corporation | Interface for a modularized computational unit to a CPU |
| US5706489A (en) * | 1995-10-18 | 1998-01-06 | International Business Machines Corporation | Method for a CPU to utilize a parallel instruction execution processing facility for assisting in the processing of the accessed data |
| US5778208A (en) * | 1995-12-18 | 1998-07-07 | International Business Machines Corporation | Flexible pipeline for interlock removal |
| US5924128A (en) * | 1996-06-20 | 1999-07-13 | International Business Machines Corporation | Pseudo zero cycle address generator and fast memory access |
| US5838960A (en) * | 1996-09-26 | 1998-11-17 | Bay Networks, Inc. | Apparatus for performing an atomic add instructions |
| US5963723A (en) * | 1997-03-26 | 1999-10-05 | International Business Machines Corporation | System for pairing dependent instructions having non-contiguous addresses during dispatch |
| US6314493B1 (en) | 1998-02-03 | 2001-11-06 | International Business Machines Corporation | Branch history cache |
| US6049860A (en) * | 1998-02-19 | 2000-04-11 | International Business Machines Corporation | Pipelined floating point stores |
| US7143268B2 (en) * | 2000-12-29 | 2006-11-28 | Stmicroelectronics, Inc. | Circuit and method for instruction compression and dispersal in wide-issue processors |
| US7645838B2 (en) | 2001-06-29 | 2010-01-12 | Asahi Kasei Kabushiki Kaisha | Conjugated non-aromatic diene or dienophilic compound-modified polyphenylene ethers |
| US7825935B1 (en) * | 2001-11-30 | 2010-11-02 | Nvidia Corporation | System, method and computer program product for using textures as instructions for graphics processing |
| US20030126414A1 (en) * | 2002-01-02 | 2003-07-03 | Grochowski Edward T. | Processing partial register writes in an out-of order processor |
| US7367045B2 (en) * | 2002-03-16 | 2008-04-29 | Trustedflow Systems, Inc. | Trusted communications system |
| US20040128483A1 (en) * | 2002-12-31 | 2004-07-01 | Intel Corporation | Fuser renamer apparatus, systems, and methods |
| US20040128480A1 (en) * | 2002-12-31 | 2004-07-01 | Intel Corporation | Register file read port to support uop fusion |
| US9483266B2 (en) * | 2013-03-15 | 2016-11-01 | Intel Corporation | Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources |
| US9886277B2 (en) * | 2013-03-15 | 2018-02-06 | Intel Corporation | Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources |
| GB2516864A (en) * | 2013-08-02 | 2015-02-11 | Ibm | Increased instruction issue rate and latency reduction for out-of-order processing by instruction chaining and collision avoidance |
| JP2015072623A (ja) * | 2013-10-03 | 2015-04-16 | 株式会社エルイーテック | 加減算回路 |
| US20160179542A1 (en) * | 2014-12-23 | 2016-06-23 | Patrick P. Lai | Instruction and logic to perform a fused single cycle increment-compare-jump |
| US10157164B2 (en) * | 2016-09-20 | 2018-12-18 | Qualcomm Incorporated | Hierarchical synthesis of computer machine instructions |
| CN109992307B (zh) * | 2017-12-29 | 2020-05-05 | 上海寒武纪信息科技有限公司 | 指令列表调度方法、装置、计算机设备及存储介质 |
| US12405799B2 (en) * | 2020-11-19 | 2025-09-02 | Arm Limited | Register rename stage fusing of instructions |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5966746A (ja) * | 1982-10-08 | 1984-04-16 | 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 |
| US4754412A (en) * | 1985-10-07 | 1988-06-28 | Schlumberger Systems & Services, Inc. | Arithmetic logic system using the output of a first alu to control the operation of a second alu |
| US4775952A (en) * | 1986-05-29 | 1988-10-04 | General Electric Company | Parallel processing system apparatus |
| JPS6386033A (ja) * | 1986-09-30 | 1988-04-16 | Fujitsu Ltd | パイプライン処理方式 |
| EP0281132B1 (en) * | 1987-03-04 | 1995-10-25 | Nec Corporation | Vector calculation circuit capable of rapidly carrying out vector calculation of three input vectors |
| US4819155A (en) * | 1987-06-01 | 1989-04-04 | Wulf William A | Apparatus for reading to and writing from memory streams of data while concurrently executing a plurality of data processing operations |
| US4766416A (en) * | 1987-07-16 | 1988-08-23 | General Electric Company | Circuit for generating the square of a function without multipliers |
-
1990
- 1990-04-04 US US07/504,910 patent/US5051940A/en not_active Ceased
-
1991
- 1991-03-20 EP EP19910104316 patent/EP0451562A3/en not_active Withdrawn
- 1991-04-03 BR BR919101334A patent/BR9101334A/pt unknown
- 1991-04-03 CA CA002039639A patent/CA2039639C/en not_active Expired - Fee Related
- 1991-04-03 JP JP3096096A patent/JPH0778732B2/ja not_active Expired - Lifetime
- 1991-04-03 PL PL91289721A patent/PL165457B1/pl unknown
- 1991-04-04 CZ CS91932A patent/CZ279873B6/cs not_active IP Right Cessation
- 1991-04-04 HU HU911100A patent/HUT57453A/hu unknown
Non-Patent Citations (1)
| Title |
|---|
| 第3引用例中田著「コンピューターサイエンス・ライブラリコンパイラ」[第5刷(昭和58年6月)産業図書、P.172−174 |
Also Published As
| Publication number | Publication date |
|---|---|
| CA2039639C (en) | 1995-02-14 |
| CZ279873B6 (cs) | 1995-07-12 |
| HU911100D0 (en) | 1991-10-28 |
| HUT57453A (en) | 1991-11-28 |
| US5051940A (en) | 1991-09-24 |
| PL165457B1 (pl) | 1994-12-30 |
| PL289721A1 (en) | 1991-10-07 |
| BR9101334A (pt) | 1991-11-26 |
| EP0451562A2 (en) | 1991-10-16 |
| CS93291A3 (en) | 1992-03-18 |
| JPH0573309A (ja) | 1993-03-26 |
| EP0451562A3 (en) | 1993-08-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0778732B2 (ja) | 複数スカラ命令の並列実行支援装置 | |
| KR100309566B1 (ko) | 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치 | |
| US6185668B1 (en) | Method and apparatus for speculative execution of instructions | |
| US6061780A (en) | Execution unit chaining for single cycle extract instruction having one serial shift left and one serial shift right execution units | |
| JP3842474B2 (ja) | データ処理装置 | |
| JP3832623B2 (ja) | マルチスレッドvliwプロセッサにおいて機能単位を割り当てるための方法および装置 | |
| US5619664A (en) | Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms | |
| US7552313B2 (en) | VLIW digital signal processor for achieving improved binary translation | |
| US5299319A (en) | High performance interlock collapsing SCISM ALU apparatus | |
| JP2002333978A (ja) | Vliw型プロセッサ | |
| KR20000076285A (ko) | 기계 판독가능 매체 및 초대형 인스트럭션 워드 프로세서와, 컴퓨터 프로그램의 실행 방법 및 컴파일 방법 | |
| JP2834292B2 (ja) | データ・プロセッサ | |
| USRE35311E (en) | Data dependency collapsing hardware apparatus | |
| JP2006004042A (ja) | データ処理装置 | |
| JP2683488B2 (ja) | 3−1論理演算装置 | |
| US20040230773A1 (en) | Multi-pipe dispatch and execution of complex instructions in a superscalar processor | |
| US5815420A (en) | Microprocessor arithmetic logic unit using multiple number representations | |
| US5941984A (en) | Data processing device | |
| WO2006136764A1 (en) | A data processing apparatus and method for accelerating execution of subgraphs | |
| US8006074B1 (en) | Methods and apparatus for executing extended custom instructions | |
| Eyre et al. | Infineon’s TriCore Tackles DSP | |
| EP1235139B1 (en) | System and method for supporting precise exceptions in a data processor having a clustered architecture | |
| JPH11119998A (ja) | 情報処理装置 | |
| JPH08263289A (ja) | 複数命令流パイプライン計算機 | |
| US7991816B2 (en) | Inverting data on result bus to prepare for instruction in the next cycle for high frequency execution units |