JP3640855B2 - プロセッサ - Google Patents
プロセッサ Download PDFInfo
- Publication number
- JP3640855B2 JP3640855B2 JP2000029398A JP2000029398A JP3640855B2 JP 3640855 B2 JP3640855 B2 JP 3640855B2 JP 2000029398 A JP2000029398 A JP 2000029398A JP 2000029398 A JP2000029398 A JP 2000029398A JP 3640855 B2 JP3640855 B2 JP 3640855B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- pipeline
- operand
- operation instruction
- issued
- 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 - Fee Related
Links
- 230000004044 response Effects 0.000 claims description 12
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 claims description 2
- 238000000034 method Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000009434 installation Methods 0.000 description 5
- 230000000717 retained effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
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/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
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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 Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Description
【発明の属する技術分野】
本発明はプロセッサに関するものであり、特に、スーパースケーラにおいて異なるパイプラインにある演算ユニットを同時に使用する演算命令を有するプロセッサに関するものである。
【0002】
【従来の技術】
近年、マイクロプロセッサの高速化を図る技術として、様々な手法が開発されている。このような高速化を図る技術として、パイプラインという手法がある。このパイプラインとは、命令の実行内容を複数のステージに細分化し、この細分化された各ステージ毎に命令を順次実行していく手法である。
【0003】
例えば、1つの命令を命令フェッチステージ、命令デコードステージ、実行ステージ、ライトバックステージという4つのステージに分解し、これら各ステージを1クロックサイクルで実行していく。この実行に際しては、各ステージをオーバーラップさせて実行する。すなわち、1つの命令の命令フェッチが完了し、その命令デコードを実行している間に次の命令の命令フェッチを実行することができる。このように命令をステージ毎に処理していくことにより、1クロックサイクル毎に命令を終了することが可能になる。
【0004】
さらに、高速化を図る手法としてスーパースケーラという手法がある。このスーパースケーラとは、上述したパイプラインを複数本備えてハードウェアを構成し、複数の命令を並列に実行する手法である。パイプラインを2本備えている場合を2ウェイといい、パイプラインを4本備えている場合を4ウェイという。
【0005】
このスーパースケーラでは、1つの命令で使用する演算ユニットは1つである。例えば、第1パイプラインに第1インテジャーユニットとフローティングユニットとが設けられ、第2パイプラインに第2インテジャーユニットとロードストアユニットとが設けられているプロセッサがあったとする。このプロセッサにおいて、命令フェッチユニットから第1パイプラインに第1インテジャーユニットを使用する命令が発行され、第2パイプラインに第2インテジャーユニットを使用する命令が発行されたとする。すると、当然、第1インテジャーユニットと第2インテジャーユニットとを使用して演算が実行される。
【0006】
【発明が解決しようとする課題】
しかし、従来のプロセッサでは、これら第1インテジャーユニットと第2インテジャーユニットを使用している間は、第1パイプラインにあるフローティングポイントユニットや第2パイプラインにあるロードストアユニットは使うことはできない。このため、プロセッサに設けられている演算ユニットを有効的に使用しているとはいえない。したがって、プロセッサに設けられている各種の演算ユニットを有効的に使用できるようにすることが望まれるとともに、そのための制御方法の実現が望まれる。
【0007】
そこで、本発明は上記課題に鑑みてなされたものであり、各パイプラインに設けられている各種の演算ユニットを有効的に活用できるプロセッサを提供することを目的とする。また、そのために必要となる具体的な制御回路を提供することを目的とする。
【0008】
【課題を解決するための手段】
上記課題を解決するため、本発明に係るプロセッサは、
第1の演算を行う第1演算ユニットを有する、第1パイプラインと、
前記第1の演算と同様の演算を行う第2演算ユニットと、前記第1の演算とは異なる演算を行う第3演算ユニットとを有する、第2パイプラインと、
前記第1パイプライン及び前記第2パイプラインにある前記各演算ユニットのうちの1つを用いて演算を行う第1演算命令と、前記第1パイプラインにある前記第1演算ユニットと前記第2パイプラインにある前記各演算ユニットのうちの1つとを用いて演算を行う第2演算命令とを、前記第1パイプラインへ発行するとともに、前記第1演算命令を前記第2パイプラインへ発行する、命令フェッチユニットと、
前記命令フェッチユニットから前記第1パイプラインへ前記第1演算ユニットと前記第2演算ユニットとを用いて演算を行う第2演算命令が発行されると同時に、記第2パイプラインへ前記第2演算ユニットを用いて演算を行う第1演算命令が発行された際には、
前記第1演算命令が前記第2演算命令よりも先の命令である場合には、前記第2演算命令を待たして前記第1演算命令を優先して実行し、
前記第2演算命令が前記第1演算命令よりも先の命令である場合には、前記第1演算命令を待たして前記第2演算命令を優先して実行するように制御する、制御回路であって、前記第1演算命令及び前記第2演算命令の命令部分を制御をする命令系制御回路を有する、制御回路と、
を備えるとともに、
前記命令系制御回路は、
前記第1パイプラインに発行された前記第1演算命令又は前記第2演算命令を待たす場合に第1インターロック信号を出力し、前記第2パイプラインに発行された前記第1演算命令を待たす場合に第2インターロック信号を出力する、インターロック信号発生回路と、
前記第1インターロック信号に応じて、前記第1パイプラインに発行された前記第1演算命令又は前記第2演算命令を保持し、又は、出力する、第1命令保持出力回路と、
前記第2インターロック信号に応じて、前記第2パイプラインに発行された前記第1演算命令を保持し、又は、出力する、第2命令保持回路と、
を備えることを特徴とする。
【0009】
また、本発明に係るプロセッサは、
第1の演算を行う第1演算ユニットと、第2の演算を行う第2演算ユニットとを有する、第1パイプラインと、
第3の演算を行う第3演算ユニットと、第4の演算を行う第4演算ユニットととを有する、第2パイプラインと、
前記第1パイプライン及び前記第2パイプラインにある前記各演算ユニットのうちの1つを用いて演算を行う第1演算命令と、前記第1パイプラインにある前記各演算ユニットのうちの1つの演算ユニットと前記第2パイプラインにある前記各演算ユニットのうちの1つの演算ユニットとを用いて演算を行う第2演算命令とを、前記第1パイプライン及び前記第2パイプラインの一方へ発行するとともに、前記第1演算命令を前記第1パイプラインと前記第2パイプラインの他方へ発行する、命令フェッチユニットと、
前記命令フェッチユニットから前記第1パイプラインと前記第2パイプラインの一方へ発行された第1演算命令が使用する演算ユニットと、前記第1パイプラインと前記第2パイプラインの他方へ発行された第2演算命令が使用する演算ユニットとが、重複する際には、
前記第1演算命令が前記第2演算命令よりも先の命令である場合には、前記第2演算命令を待たして前記第1演算命令を優先して実行し、
前記第2演算命令が前記第1演算命令よりも先の命令である場合には、前記第1演算命令を待たして前記第2演算命令を優先して実行するように制御する、制御回路であって、前記第1演算命令及び前記第2演算命令の命令部分を制御をする命令系制御回路を有する、制御回路と、
を備えるとともに、
前記命令系制御回路は、
前記第1パイプラインに発行された前記第1演算命令又は前記第2演算命令を待たす場合に第1インターロック信号を出力し、前記第2パイプラインに発行された前記第1演算命令を待たす場合に第2インターロック信号を出力する、インターロック信号発生回路と、
前記第1インターロック信号に応じて、前記第1パイプラインに発行された前記第1演算命令又は前記第2演算命令を保持し、又は、出力する、第1命令保持出力回路と、
前記第2インターロック信号に応じて、前記第2パイプラインに発行された前記第1演算命令を保持し、又は、出力する、第2命令保持回路と、
を備えることを特徴とする。
【0010】
また、本発明に係るプロセッサは、
第1の演算を行う第1演算ユニットを有する、第1パイプラインと、
前記第1の演算と同様の演算を行う第2演算ユニットと、前記第1の演算とは異なる演算を行う第3演算ユニットとを有する、第2パイプラインと、
前記第1パイプライン及び前記第2パイプラインにある前記各演算ユニットのうちの1つを用いて演算を行う第1演算命令と、前記第1パイプラインにある前記第1演算ユニットと前記第2パイプラインにある前記各演算ユニットのうちの1つとを用いて演算を行う第2演算命令とを、前記第1パイプラインへ発行するとともに、前記第1演算命令を前記第2パイプラインへ発行する、命令フェッチユニットと、
前記命令フェッチユニットから前記第1パイプラインへ前記第1演算ユニットと前記第2演算ユニットとを用いて演算を行う第2演算命令が発行されると同時に、記第2パイプラインへ前記第2演算ユニットを用いて演算を行う第1演算命令が発行された際には、前記第1演算命令と前記第2演算命令のうちの一方の演算命令を待たして、他方の演算命令を優先して実行するように制御する、制御回路であって、前記第1演算命令及び前記第2演算命令の命令部分を制御をする命令系制御回路を有する、制御回路と、
を備えるとともに、
前記命令系制御回路は、
前記第1パイプラインに発行された前記第1演算命令又は前記第2演算命令を待たす場合に第1インターロック信号を出力し、前記第2パイプラインに発行された前記第1演算命令を待たす場合に第2インターロック信号を出力する、インターロック信号発生回路と、
前記第1インターロック信号に応じて、前記第1パイプラインに発行された前記第1演算命令又は前記第2演算命令を保持し、又は、出力する、第1命令保持出力回路と、
前記第2インターロック信号に応じて、前記第2パイプラインに発行された前記第1演算命令を保持し、又は、出力する、第2命令保持回路と、
を備えることを特徴とする。
また、本発明に係るプロセッサは、
第1の演算を行う第1演算ユニットを有する、第1パイプラインと、
前記第1の演算と同様の演算を行う第2演算ユニットと、前記第1の演算とは異なる演算を行う第3演算ユニットとを有する、第2パイプラインと、
前記第1パイプライン及び前記第2パイプラインにある前記各演算ユニットのうちの1つを用いて演算を行う第1演算命令と、前記第1パイプラインにある前記第1演算ユニットと前記第2パイプラインにある前記各演算ユニットのうちの1つとを用いて演算を行う第2演算命令とを、前記第1パイプラインへ発行するとともに、前記第1演算命令を前記第2パイプラインへ発行する、命令フェッチユニットと、
前記命令フェッチユニットから前記第1パイプラインへ前記第1演算ユニットと前記第2演算ユニットとを用いて演算を行う第2演算命令が発行されると同時に、記第2パイプラインへ前記第2演算ユニットを用いて演算を行う第1演算命令が発行された際には、
前記第1演算命令が前記第2演算命令よりも先の命令である場合には、前記第2演算命令を待たして前記第1演算命令を優先して実行し、
前記第2演算命令が前記第1演算命令よりも先の命令である場合には、前記第1演算命令を待たして前記第2演算命令を優先して実行するように制御する、制御回路であって、前記第1演算命令及び前記第2演算命令に対するオペランドの制御をするオペランド系制御回路を有する、制御回路と、
を備えるとともに、
前記オペランド系制御回路は、
前記第1パイプラインに発行された前記第1演算命令又は前記第2演算命令に対するオペランドを保持し、又は、前記第1演算ユニットへ出力する、第1オペランド保持出力回路と、
前記第2パイプラインに発行された前記第1演算命令に対するオペランドを保持し、又は、前記第2演算ユニットへ出力する、第2オペランド保持回路と、
前記第1パイプラインに発行された命令が前記第2演算命令である場合に、前記第2演算ユニットで実行される前記第2演算命令に対するオペランドを保持し、又は、前記第2演算ユニットへ出力する、第3オペランド保持出力回路と、
を備えることを特徴とする。
【0011】
【発明の実施の形態】
本発明は、通常のALU演算命令とワイドALU演算命令とを実行し得るプロセッサにおいて、これら通常のALU演算命令が使用する演算ユニットとワイドALU演算命令が使用する演算ユニットとが重複した場合の制御手法を提供するものである。以下、図面に基づいて本発明の一実施形態を説明する。
【0012】
まず、図1及び図2に基づいて、本実施形態に係るプロセッサの全体構成を説明する。図1は本実施形態に係るプロセッサの全体ハードウェア構成を示す図であり、図2は通常のALU演算命令とワイドALU演算命令の内容を説明するための図である。
【0013】
図1に示すように、本実施形態に係るプロセッサは、命令フェッチユニット10と、レジスタファイル11と、オペランドバイパス/セレクトロジック12と、第1パイプライン14と、第2パイプライン16とを、備えて構成されている。つまり、本実施形態に係るプロセッサは、2ウェイのスーパースケーラである。
【0014】
第1パイプライン14は、演算ユニットとして、第1インテジャーユニット20と、フローティングポイントユニット22とを、備えて構成されている。第2パイプライン16は、演算ユニットとして、第2インテジャーユニット24と、ロードストアユニット26と、コプロセッサユニット28とを、備えて構成されている。
【0015】
第1インテジャーユニット20と第2インテジャーユニット24は、整数演算を行う演算ユニットである。フローティングポイントユニット22は、浮動小数点演算を行う演算ユニットである。ロードストアユニット26は、データのロードやストアを行う演算ユニットである。コプロセッサユニット28は、三角関数や指数関数等の数学的関数の演算を行う演算ユニットである。
【0016】
このプロセッサは、通常のALU(ALU:arithmetic logic unit)演算命令と、ワイドALU演算命令とを、有している。図2に示すように、通常のALU演算命令は1つの命令で、例えば、64ビットと64ビットの演算をし、64ビットの演算結果が得られる命令である。したがって、通常のALU演算命令は1つの演算ユニットを用いて演算をする。
【0017】
ワイドALU演算命令は1つの命令で、2つの命令分の演算を行う。すなわち、ワイドALU演算命令は1つの命令で、64ビットと64ビットの演算をし、64ビットの演算結果が得られる演算を2つ同時に実行する命令である。したがって、ワイドALU演算命令は2つの演算ユニットを用いて演算をする。
【0018】
図1に示すように、命令フェッチユニット10からは2つの命令が同時に発行される。この命令フェッチユニット10は命令を発行するにあたり、フェッチされた命令がどの演算ユニットで実行できるかを調べる。
【0019】
すなわち、フローティングポイントユニット22で実行できるのか、第1及び第2インテジャーユニット20、24で実行できるのか、ロードストアユニット26で実行できるのか、コプロセッサユニット28で実行できるのかを、調べる。そして、命令フェッチユニット10は、適切なパイプラインに命令を送る。すなわち、フローティングポイントユニット22で実行できる命令であれば第1パイプライン14へ命令を送る。ロードストアユニット26やコプロセッサユニット28で実行できる命令であれば、第2パイプライン16へ命令を送る。第1インテジャーユニット20や第2インテジャーユニット24で実行できる命令であれば、パイプラインの空き具合いや、ペアとなる他の命令の種類を考慮して、第1パイプライン14又は第2パイプライン16へ命令を送る。
【0020】
但し、本実施形態においては、ワイドALU演算命令は、第1パイプライン14へのみ発行され、第2パイプライン16へは発行されないようになっている。これに対して、通常のALU演算命令は第1パイプライン14と第2パイプライン16のうちのいずれへも発行することができる。また、本実施形態に係るプロセッサは、命令の順番通りに命令を実行していくものとする。さらに、第1パイプライン14と第2パイプライン16とには、2つの命令が同時に発行されるが、元のプログラム(命令列)においては、1つ1つの命令が順番に並んでいる。
【0021】
ここで本実施形態においては、通常のALU演算命令とワイドALU演算命令とを組み合わせることにより、演算ユニットを有効に活用することが可能になる。例えば、図1において、命令フェッチユニット10が、第1インテジャーユニット20と第2インテジャーユニット24とを使用するワイドALU演算命令を第1パイプライン14に発行し、ロードストアユニット26を使用する通常のALU演算命令を第2パイプライン16に発行することにより、これら第1インテジャーユニット20と第2インテジャーユニット24とロードストアユニット26とを同時に使用することができるようになる。つまり、2つのパイプラインしか有しないにも関わらず、3つの演算ユニットを同じサイクルで使用することができるようになる。
【0022】
命令フェッチユニット10から発行された2つの命令を参照して、レジスタファイル11から命令の実行に必要なオペランドが読み出される。そして、2つの命令が第1パイプライン14と第2パイプライン16へ送られると同時に、これら2つの命令に対するそれぞれのオペランドが、第1パイプライン14と第2パイプライン16とへ送られる。
【0023】
具体的には、レジスタファイル11から読み出されたオペランドは、オペランドバイパス/セレクトロジック12を通り、第1ソースバスと第2ソースバスへ送られて、各演算ユニットへ到達する。
【0024】
各演算ユニットで演算された結果は、それぞれ、第1結果バスと第2結果バスへ乗せられて、レジスタファイル11に書き込まれるか、あるいは、オペランドバイパスを経由して、オペランドバイパス/セレクトロジック12へ送られる。
【0025】
以上が本実施形態に係るプロセッサの全体的な構成とその動作である。ここで、プロセッサにおける演算命令の制御は、この演算命令における命令系の制御と、演算命令に対するデータであるオペランド系の制御とに、分けることができる。そこで、まず図3に基づいて、オペランド(データ系)の制御を詳細に説明する。
【0026】
図3は、本実施形態に係る第1インテジャーユニット20と第2インテジャーユニット24にオペランドがどのように送られているかを説明するための図である。この図3においては、第1パイプライン14におけるフローティングポイントユニット22と、第2パイプライン16におけるロードストアユニット26とコプロセッサユニット28とは、省略している。これは、本実施形態においては、ワイドALU演算命令は、第1インテジャーユニット20と第2インテジャーユニット24を使用する命令であるとしているからである。
【0027】
図3に示すように、上述したレジスタファイル11は、第1レジスタファイル11aと、第2レジスタファイル11bとを、備えて構成されている。第1レジスタファイル11aは、通常のALU演算命令で使用されるオペランドを保持するレジスタファイルである。第2レジスタファイル11bは、ワイドALU演算命令で使用されるオペランドを特別に保持するレジスタファイルである。
【0028】
命令フェッチユニット10から第1パイプライン14と第2パイプライン16とに命令が発行されると、命令フェッチユニット10からレジスタファイル11にも命令が送られる。すなわち、命令フェッチユニット10から第1レジスタファイル11aに第1パイプライン用と第2パイプライン用の命令が送られ、第2レジスタファイル11bに第1パイプライン用の命令が送られる。これをもとに、第1レジスタファイル11aと第2レジスタファイル11bに、それぞれの命令に対するオペランドが読み込まれる。
【0029】
第1レジスタファイル11aと第1インテジャーユニット20の間には、ホールドマルチプレクサ30と、バイパスマルチプレクサ32と、第1フリップフロップ34とが、設けられている。第1インテジャーユニット20の出力先には、第2フリップフロップ38が設けられている。
【0030】
第1レジスタファイル11aと第2インテジャーユニット24の間には、ホールドマルチプレクサ40と、バイパスマルチプレクサ42と、第1フリップフロップ44と、ワイドマルチプレクサ46とが、設けられている。第2インテジャーユニット24の出力先には、第2フリップフロップ48が設けられている。
【0031】
第2レジスタファイル11bとワイドマルチプレクサ46との間には、ホールドマルチプレクサ50と、バイパスマルチプレクサ52と、フリップフロップ54とが、設けられている。
【0032】
ホールドマルチプレクサ30、40、50は、パイプラインストールしている場合に、オペランドを保持するために設けられている。オペランドを保持する場合にはフィードバックループ側を選択して出力し、オペランドを保持しない場合にはレジスタファイル11側を選択して出力する。
【0033】
バイパスマルチプレクサ32、42、52は、オペランドバイパスを構成するために設けられている。すなわち、バイパスマルチプレクサ32、42、52は、第1インテジャーユニット20及び第2インテジャーユニット24の演算結果が得られた直後に、レジスタファイル11にこの演算結果が書き込まれなくとも、この演算結果のデータ(バイパスデータ)を使用できるようにするために設けられている。
【0034】
これらホールドマルチプレクサ30、40、50と、バイパスマルチプレクサ32、42、52と、第1フリップフロップ34、44、54と、ワイドマルチプレクサ46とで、本実施形態におけるオペランド系の制御回路であるオペランドバイパス/セレクトロジック12が構成されている。
【0035】
また、ホールドマルチプレクサ30とバイパスマルチプレクサ32と第1フリップフロップ34とで、第1レジスタファイルから出力されたオペランドを出力するか、又は、保持していたオペランドを出力するかを切り替えることができる保持出力回路59aが構成されている。ホールドマルチプレクサ40とバイパスマルチプレクサ42と第1フリップフロップ44とで、第1レジスタファイルから出力されたオペランドを出力するか、又は、保持していたオペランドを出力するかを切り替えることができる保持出力回路59bが構成されている。ホールドマルチプレクサ50とバイパスマルチプレクサ52と第1フリップフロップ54とで、第2レジスタファイルから出力されたオペランドを出力するか、又は、保持していたオペランドを出力するかを切り替えることができる保持出力回路59cが構成されている。
【0036】
これら保持出力回路59a〜59cは、それぞれ、2つのオペランドを保持し、又は、出力する。すなわち、図2の例では、保持出力回路59a〜59cは、それぞれ、64ビットのオペランドを2つ保持したり、出力したりする。図3では簡略化して、2つのオペランドを1つの線、1つのマルチプレクサ、1つのフリップフロップで、あらわしている。
【0037】
次に、この図3に基づいて、オペランドの流れを、(1)通常のALU演算命令が2つ同時に発行されたとき、(2)通常のALU演算命令とワイドALU演算命令とが同時に発行され、ワイドALU演算命令の方が先の命令であるとき、(3)通常のALU演算命令とワイドALU演算命令とが同時に発行され、ワイドALU演算命令の方が後の命令であるときに、分けて説明する。なお、この説明においては、命令フェッチユニット10により発行された命令は、すべて第1インテジャーユニット20又は第2インテジャーユニット24を使用して実行される命令であると仮定する。
【0038】
(1)通常のALU演算命令が2つ同時に発行されたとき
第1パイプライン14と第2パイプライン16に発行される命令に対して、各命令に対するオペランドが第1レジスタファイル11aから読み出される。これら2組のオペランド(都合、4つのオペランド)は、ホールドマルチプレクサ30、40を通り、バイパスマルチプレクサ32、42を通って、第1フリップフロップ34、44に保持される。つまり、ホールドマルチプレクサ30、40は第1レジスタファイル11aからのオペランドを選択して出力し、バイパスマルチプレクサ32、42はホールドマルチプレクサ30、40から出力されたオペランドを選択して出力する。
【0039】
これら保持された2組のオペランドは、それぞれ、後述する命令と同時に、第1インテジャーユニット20と第2インテジャーユニット24に送られ、演算がなされる。つまり、ワイドマルチプレクサ46は第1レジスタファイル11a側のオペランドである、第1フリップフロップ44から出力された1組のオペランドを選択して、第2インテジャーユニットへ出力する。
【0040】
(2)通常のALU演算命令とワイドALU演算命令とが同時に発行され、ワイドALU演算命令の方が先の命令であるとき
第1レジスタファイル11aから第1パイプライン14に向けて、ワイドALU演算命令のうちの一方の演算(第1演算)に対する1組のオペランドが読み出される。また、この第1レジスタファイル11aから第2パイプライン16に向けて、通常のALU演算命令に対する1組のオペランドが読み出される。さらに、第2レジスタファイル11bから第2パイプライン16に向けて、ワイドALU演算命令のうちの他方の演算(第2演算)に対する1組のオペランドが読み出される。したがって、都合6個のオペランドがレジスタファイル11から読み出される。
【0041】
なお、本実施形態においては、ワイドALU演算命令は、第1パイプライン14に対してのみ発行される。このため、第2レジスタファイル11bには、第1パイプラインに発行される命令のみが送られれば足りる。
【0042】
このように第1レジスタファイル11aから読み出された2つの命令に対する2組のオペランドは、ホールドマルチプレクサ30、40と、バイパスマルチプレクサ32、42を通って、第1フリップフロップ34、44に保持される。つまり、ホールドマルチプレクサ30、40は第1レジスタからのオペランドを選択して出力し、バイパスマルチプレクサ32、42はホールドマルチプレクサから出力されたオペランドを選択して出力する。
【0043】
また、第2レジスタファイル11bから読み出された1つの命令に対する1組のオペランドは、ホールドマルチプレクサ50とバイパスマルチプレクサ52を通って、第1フリップフロップ54に保持される。つまり、ホールドマルチプレクサ50は第2レジスタファイル11bからのオペランドを選択して出力し、バイパスマルチプレクサ52はホールドマルチプレクサ50から出力されたオペランドを選択して出力する。
【0044】
第1パイプライン14に発行された命令が、ワイドALU演算命令であり、かつ先の命令であるので、まず、このワイドALU演算命令に対するオペランドが第1インテジャーユニット20と第2インテジャーユニット24に与えられる。より詳しくは、第1インテジャーユニット20には、第1フリップフロップ34から1組のオペランドが与えられる。すなわち、第1インテジャーユニット20には、第1レジスタファイル11aから読み出された1組のオペランドが与えられる。第2インテジャーユニット24には、第1フリップフロップ54から1組のオペランドが与えられる。すなわち、第2インテジャーユニット24には、第2レジスタファイル11bから読み出された1組のオペランドが与えられる。つまり、ワイドマルチプレクサ46は、第1フリップフロップ54から出力されたオペランドを選択して、第2インテジャーユニット24へ出力する。
【0045】
このようにワイドALU演算命令はパイプラインストールせずに、第1インテジャーユニット20と第2インテジャーユニット24に送られるが、通常のALU演算命令はリソースが使えないためパイプラインストールをおこし、待たされることになる。すなわち、通常のALU演算命令は第2パイプライン16へ発行されていることになるが、この第2パイプライン16にある第2インテジャーユニット24は、ワイドALU演算命令の実行に使われているので、通常のALU演算命令はこの第2インテジャーユニットを使用することができない。このため通常のALU演算命令は、ワイドALU演算命令の実行が完了するまで、待つ必要がある。
【0046】
このようにパイプラインストールをおこした通常ALU演算命令に対する1組のオペランドは、第1フリップフロップ44からホールドマルチプレクサ40にフィードバックされることにより、次のサイクルまで保持される。
【0047】
このように保持された通常のALU演算命令に対する1組のオペランドは、次のサイクルで第2インテジャーユニットに与えられて、実行される。すなわち、次のサイクルでは、ホールドマルチプレクサ40は第1フリップフロップ44から出力されたオペランドを選択して、バイパスマルチプレクサ42へ出力する。また、第1パイプライン14へも次の命令が発行され、可能であれば第2パイプライン16と並列に実行される。
【0048】
(3)通常のALU演算命令とワイドALU演算命令とが同時に発行され、ワイドALU演算命令の方が後の命令であるとき
上述した(2)の場合と同様に、第1レジスタファイル11aから読み出されたワイドALU演算命令のうちの一方の演算(第1演算)に対する1組のオペランド(2つのオペランド)は、ホールドマルチプレクサ30とバイパスマルチプレクサ32を通って、第1フリップフロップ34に保持される。第1レジスタファイル11aから読み出された通常のALU演算命令に対する1組のオペランド(2つのオペランド)は、ホールドマルチプレクサ40とバイパスマルチプレクサ42を通って、第1フリップフロップ44に保持される。第2レジスタファイル11bから読み出されたワイドALU演算命令のうちの他方の演算(第2演算)に対する1組のオペランド(2つのオペランド)は、ホールドマルチプレクサ50とバイパスマルチプレクサ52を通って、第1フリップフロップ54に保持される。
【0049】
ここで、第1パイプライン14に発行された命令が、ワイドALU演算命令であるが、後の命令であるので、まず、通常のALU演算命令に対するオペランドが第2インテジャーユニット24に与えられる。すなわち、第2インテジャーユニット24には、第1フリップフロップ44から1組のオペランドが与えられる。すなわち、第2インテジャーユニット24には、第1レジスタファイル11aから読み出されたオペランドが与えられる。このために、ワイドマルチプレクサ46は、第1フリップフロップ44から出力されたオペランドを選択して、第2インテジャーユニット46へ出力する。
【0050】
このように通常のALU演算命令はパイプラインストールせずに、第2インテジャーユニット24に送られるが、ワイドALU演算命令はリソースが使えないためパイプラインストールをおこし、待たされることになる。すなわち、ワイドALU演算命令は第1パイプライン14へ発行されていることになるが、このワイドALU演算命令を実行するには、第1インテジャーユニット20と第2インテジャーユニット24の双方が必要となる。しかし、第2インテジャーユニット24は先に発行された通常のALU演算命令で使用されているので、ワイドALU演算命令はこの第2インテジャーユニット24を使用することができない。このためワイドALU演算命令は、通常のALU演算命令の実行が完了するまで、待つ必要がある。
【0051】
このようにパイプラインストールをおこしたワイドALU演算命令に対する2組のオペランド(4つのオペランド)は、次のサイクルまで保持される。すなわち、第1レジスタファイル11aから読み出された1組のオペランドは、第1フリップフロップ34からホールドマルチプレクサ30にフィードバックされることにより、次のサイクルまで保持される。第2レジスタファイル11bから読み出された1組のオペランドは、第1フリップフロップ54からホールドマルチプレクサ50にフィードバックされることにより、次のサイクルまで保持される。
【0052】
そして、このように保持された2組のオペランドは、次のサイクルで第1インテジャーユニット20と第2インテジャーユニット24にそれぞれ与えられ、実行される。すなわち、次のサイクルでは、ホールドマルチプレクサ30は第1フリップフロップ34から出力されたオペランドを選択して、バイパスマルチプレクサ32へ出力する。また、ホールドマルチプレクサ50は第1フリップフロップ54から出力されたオペランドを選択して、バイパスマルチプレクサ52へ出力する。
【0053】
次に、図4及び図5に基づいて、演算命令における命令系の制御について詳細に説明する。図4は本実施形態に係るプロセッサの命令系の制御を説明するための図である。この図4においても、図3と同様に、第1パイプライン14におけるフローティングポイントユニット22と、第2パイプライン16におけるロードストアユニット26とコプロセッサユニット28とを、省略している。
【0054】
図4に示すように、命令フェッチユニット10からは、ワイドALUビットWABと、ALUビットABと、第1有効ビットVB1と、第2有効ビットVB2と、ファーストビットFBと、第1命令信号IN1と、第2命令IN信号2とが、出力される。
【0055】
ワイドALUビットWABは、命令フェッチユニット10がフェッチした命令がワイドALU演算命令である場合に1となり、それ以外の命令(通常のALU演算命令を含む)である場合に0となるビットである。
【0056】
ALUビットABは、命令フェッチユニット10がフェッチした命令が通常のALU演算命令である場合に1となり、それ以外の命令(ワイドALU演算命令を含む)である場合に0となるビットである。
【0057】
第1有効ビットVB1は、第1パイプライン14へ発行した命令が有効な命令である場合に1となり、有効な命令でない場合に0となるビットである。第2有効ビットVB2は、第2パイプライン16へ発行した命令が有効な命令である場合に1となり、有効な命令でない場合に0となるビットである。
【0058】
これらワイドALUビットWABとALUビットABと第1有効ビットVB1と第2有効ビットVB2とは、命令フェッチユニット10が命令をフェッチした段階で、プレデコードされて生成されるビット情報である。
【0059】
ファーストビットFBは、命令フェッチユニット10が発行した命令の順序を示すビットである。すなわち、第1パイプライン14に発行された命令の方が第2パイプライン16に発行された命令よりも先の命令である場合に1となり、その逆の場合は0となるビットである。
【0060】
第1命令信号IN1は、命令フェッチユニット10が第1パイプライン14に発行する命令の信号である。第2命令信号IN2は、命令フェッチユニット10が第2パイプライン16に発行する命令の信号である。これら第1命令信号IN1と第2命令信号IN2とは、例えば、16ビットや32ビットのバスで伝達される。
【0061】
なお、上述したようにワイドALU演算命令は第1パイプライン14に対してのみ発行される。また、ワイドALU演算命令であっても、通常のALU演算命令であっても、命令のビット長は同じである。
【0062】
上述した第1命令信号IN1と第1有効ビットVB1とワイドALUビットWABと第2有効ビットVB2とALUビットABと第2命令信号IN2とに対しては、それぞれに、ホールドマルチプレクサ60、64、68、72、76、80と、フリップフロップ62、66、70、74、78、82とが設けられており、それぞれ、フィードバックループが設けられている。これら一対のホールドマルチプレクサ60、64、68、72、76、80と、フリップフロップ62、66、70、74、78、82とで、各信号の保持出力回路84a〜84fが構成されている。
【0063】
これら保持出力回路84a〜84fが、保持した信号を出力するか、新しい信号を出力するかは、第1インターロック信号IL1と第2インターロック信号IL2とで決定される。
【0064】
すなわち、第1インターロック信号IL1が1の場合には第1パイプライン14の命令がパイプラインストールし、ホールドマルチプレクサ60、64、68は次のサイクルでフィードバックループ側の信号を選択して出力する。第2インターロック信号IL2が1の場合には第2パイプライン16の命令がパイプラインストールし、ホールドマルチプレクサ72、76、80は次のサイクルでフィードバックループ側の信号を選択して出力する。
【0065】
これら第1インターロック信号IL1と第2インターロック信号IL2は、保持出力回路84a〜84fと、AND回路90、92、94、96、98と、フリップフロップ100、102と、ステートマシン106とで、生成される。つまり、これらで本実施形態に係るインターロック信号発生回路が形成されている。
【0066】
第1インターロック信号IL1はOR回路104を介して、ホールドマルチプレクサ60、64、68と、ステートマシン106とに入力される。第2インターロック信号IL2はOR回路108を介して、ホールドマルチプレクサ72、76、80と、ステートマシン106とに、入力される。OR回路104は、第1インターロック信号IL1と、他の箇所で発生するインターロック条件との間で、ORをとることにより最終的な第1インターロック信号IL1とする回路である。OR回路108は、第2インターロック信号IL2と、他の箇所で発生するインターロック条件との間で、ORをとることにより最終的な第2インターロック信号IL2とする回路である。この他のインターロック条件には、例えば、データハザード等がある。
【0067】
ステートマシン106は、ファーストビットFBからインターロック用ファーストビットIFBを生成する回路である。このインターロック用ファーストビットIFBは、フリップフロップ107へ入力される。ステートマシン106は、例えば、第1パイプライン14がパイプラインストールしていても、第2パイプライン16がパイプラインストールしていない場合は、インターロック用ファーストビットIFBを反転させる。ステートマシン106の動作を表にまとめたものを図5に示す。
【0068】
この図5において、第1インターロック信号IL1及び第2インターロック信号IL2における×印は、0でも1でも問わないことを意味している。ステートマシン106の出力が「新」の場合は、命令フェッチユニット10から与えられたファーストビットFBの値を、そのまま、インターロック用ファーストビットIFBとして出力することを意味している。ステートマシン106の出力が「旧」の場合は、前のサイクルのインターロック用ファーストビットIFBの値を、次のサイクルのインターロック用ファーストビットIFBとして出力することを意味している。ステートマシン106の出力が「反転」の場合は、前のサイクルのインターロック用ファーストビットIFBを反転した値を、次のサイクルのインターロック用ファーストビットIFBとして出力することを意味している。
【0069】
命令フェッチユニット10から2つの通常のALU演算命令が発行された場合には、第1命令信号IN1は第1インテジャーユニット20に与えられ、第2命令信号IN2は第2インテジャーユニット24に与えられる。
【0070】
命令フェッチユニット10から第1パイプライン14へワイドALU演算命令が発行され、第2パイプライン16へ通常のALU演算命令が発行され、かつ、ワイドALU演算命令が通常のALU演算命令よりも先の命令である場合には、第1命令信号IN1は、第1インテジャーユニット20と第2インテジャーユニット24に与えられる。
【0071】
命令フェッチユニット10から第1パイプライン14へワイドALU演算命令が発行され、第2パイプライン16へ通常のALU演算命令が発行され、かつ、ワイドALU演算命令が通常のALU演算命令よりも後の命令である場合には、第2命令信号IN2は、第2インテジャーユニット24に与えられる。
【0072】
このような選択をするため、第2インテジャーユニット24の入力側には、マルチプレクサ110が設けられている。すなわち、マルチプレクサ110は、ワイドALU演算命令を優先して実行する場合には第1命令信号IN1を選択して第2インテジャーユニット24へ出力し、通常のALU演算命令を優先して実行する場合には第2命令信号IN2を選択して第2インテジャーユニット24へ出力する。
【0073】
このような構成においては、第1有効ビットVB1が1であり、かつ、第2有効ビットVB2が1であり、かつ、ワイドALUビットWABが1であり、かつ、ALUビットABが1であり、かつ、インターロック用ファーストビットIFBが0である場合に、第1インターロック信号IL1は1になる。すなわち、ワイドALU演算命令が第1パイプライン14にあり、通常のALU演算命令が第2パイプライン16にあり、通常のALU演算命令が先の命令である場合には、第1インターロック信号IL1が1になり、第1パイプライン14に発行されたワイドALU演算命令はパイプラインストールする。したがって、通常のALU演算命令が優先され、ワイドALU演算命令は待たされる。
【0074】
一方、第1有効ビットVB1が1であり、かつ、第2有効ビットVB2が1であり、かつ、ワイドALUビットWABが1であり、かつ、ALUビットABが1であり、かつ、インターロック用ファーストビットIFBが1である場合に、第2インターロック信号IL2は1になる。すなわち、ワイドALU演算命令が第1パイプライン14にあり、通常のALU演算命令が第2パイプライン16にあり、ワイドALU演算命令が先の命令である場合には、第2インターロック信号IL2が1になり、第2パイプライン16に発行された通常のALU演算命令はパイプラインストールする。したがって、ワイドALU演算命令が優先され、通常のALU演算命令は待たされる。
【0075】
次に、この図4に基づいて、命令がパイプラインストールした場合における次のサイクルの動作について説明する。ここでは、1番目の命令としてワイドALU演算命令があり、2番目の命令として通常のALU演算命令があり、3番目の命令としてワイドALU演算命令があったとする。そして、同じサイクルで、1番目のワイドALU演算命令と2番目の通常のALU演算命令とが、それぞれ、第1パイプライン14と第2パイプライン16へ発行され、次のサイクルで3番目のワイドALU演算命令が第1パイプライン14へ発行されたものとする。そして、第2パイプライン16に発行された通常のALU演算命令がパイプラインストールをおこしたとして説明する。
【0076】
この場合、第2パイプライン16における各信号は保持される。すなわち、第2パイプライン16における第2有効ビットVB2とALUビットABと第2命令信号IN2とは、ホールドマルチプレクサ72、76、80とフリップフロップ74、78、82からなる保持出力回路84d〜84fによって保持される。また、このように保持された第2有効ビットVB2とALUビットABは、次のサイクルの第2インターロック信号IL2を生成するために使用される。
【0077】
最初のサイクルでは、第1パイプライン14に発行された1番目のワイドALU演算命令は優先して実行されるのでパイプラインストールせず、第2パイプラインに発行された2番目の通常のALU演算命令がパイプラインストールする。したがって、次のサイクルでは命令フェッチユニット10から新しい命令が第1パイプライン14へ供給される。すなわち、命令フェッチユニット10から新しい、第1命令信号IN1と第1有効ビットVB1とワイドALUビットWABとが、供給される。ここであげた例では、次のサイクルで3番目のワイドALU演算命令が命令フェッチユニット10から第1パイプライン14に供給される。
【0078】
インターロック用ファーストビットIFBについては、第2パイプライン16のみがパイプラインストールしているので、次のサイクルではこの第2パイプライン16の命令が先の命令になる。このため、図5の真理値表に示したように、インターロック用ファーストビットIFBは反転して、1から0に切り替わる。すなわち、第2パイプライン16が先の命令であるようにインターロック用ファーストビットIFBが変化する。
【0079】
したがって、次のサイクルでは3番目の命令がワイドALU演算命令であったとしても、第2パイプラインにある2番目の通常のALU演算命令が優先して実行される。すなわち、次のサイクルでは、ホールドマルチプレクサ80は、フィードバックループ側を選択して出力して、2番目の命令である通常のALU演算命令をフリップフロップ82へ供給する。マルチプレクサ110は、フリップフロップ82側を選択して、この2番目の命令である通常ALU演算命令を第2インテジャーユニット24へ与える。これにより、次のサイクルで2番目の命令である通常のALU演算命令が、3番目の命令であるワイドALU演算命令よりも優先して実行される。
【0080】
以上のように、本実施形態に係るプロセッサによれば、通常のALU演算命令の他にワイドALU演算命令を設けたので、演算ユニットを有効に活用して、処理の高速化を図ることができる。すなわち、図1に示すように、第1インテジャーユニット20と第2インテジャーユニット24とを使用するワイドALU演算命令が発行された場合、次の命令がロードストアユニット26やコプロセッサユニット28を使用するような通常のALU演算命令である場合には、この通常のALU演算命令をも同じサイクルで実行することができる。
【0081】
しかも、第1インテジャーユニット20と第2インテジャーユニット24との双方を使用するワイドALU演算命令が第1パイプライン14に発行され、第2インテジャーユニット24を使用する通常のALU演算命令が第2パイプライン16に発行された場合には、先の命令を優先して実行するように制御したので、インオーダーに命令を処理することができる。
【0082】
なお、本発明は上記実施形態に限定されず、種々に変形可能である。例えば、上記実施形態では、ワイドALU演算命令は第1パイプライン14にのみ発行されることとしたが、第1パイプライン14と第2パイプライン16の双方に発行され得るようにすることも可能である。
【0083】
また、本実施形態では、ワイドALU演算命令は、同じ種類の演算ユニットである第1インテジャーユニット20と第2インテジャーユニット24の双方を使用する命令であるとしたが、異なる種類の演算ユニットを2つ使用する命令にしてもよい。例えば、ワイドALU演算命令は、第1パイプラインの第1インテジャーユニット20と、第2パイプラインのコプロセッサユニット28との双方を使用する命令であってもよい。
【0084】
さらに、本実施形態では、図4に示すように、命令フェッチユニット10が命令をフェッチした段階で、その命令をプリデコードして第1有効ビットVB1と第2有効ビットVB2とワイドALUビットWABとALUビットABとを生成し、これを命令フェッチユニット10から出力することとした。しかし、図6に示すように、命令フェッチユニット10から出力された第1命令信号IN1と第2命令信号IN2とを、命令デコーダ200、202が取り込んで、これをデコードして、ワイドALUビットWABとALUビットABとを生成するようにしてもよい。但し、図4に示した本実施形態の方が、ワイドALUビットWABとALUビットABとがプレデコードされいるので、第1インターロック信号IL1と第2インターロック信号IL2とが発生するタイミングを早くすることができる。
【0085】
さらに、本実施形態では、演算命令を発行された順番通りに演算するインオーダーのプロセッサを用いて説明したが、演算命令を発行された順番によらないで演算するアウトオブオーダーのプロセッサに適用することもできる。すなわち、演算命令を発行した順番に関わらず、第1パイプライン14と第2パイプライン16のうちの空いている演算ユニットを用いて演算を実行してしまうプロセッサにも適用することができる。
【0086】
【発明の効果】
以上説明したように、本発明によれば、通常のALU演算命令の他にワイドALU演算命令を設けたので、演算ユニットを有効に活用して、処理の高速化を図ることができる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るプロセッサの全体構成をオペランド系を主体として概略的に示す図。
【図2】本実施形態におけるプロセッサで実行される通常のALU演算命令とワイドALU演算命令の内容を説明する図。
【図3】図1に示したプロセッサにおけるオペランド系の制御回路を説明するための図。
【図4】図1に示したプロセッサにおける命令系の制御回路を説明するための図。
【図5】図4に示したステートマシンの動作を真理値表にして示す図。
【図6】本発明における命令系の制御回路の変形例を示す図。
【符号の説明】
10 命令フェッチユニット
11 レジスタファイル
12 オペランドバイパス/セレクトロジック
14 第1パイプライン
16 第2パイプライン
20 第1インテジャーユニット
22 フローティングポイントユニット
24 第2インテジャーユニット
26 ロードストアユニット
28 コプロセッサユニット
Claims (18)
- 第1の演算を行う第1演算ユニットを有する、第1パイプラインと、
前記第1の演算と同様の演算を行う第2演算ユニットと、前記第1の演算とは異なる演算を行う第3演算ユニットとを有する、第2パイプラインと、
前記第1パイプライン及び前記第2パイプラインにある前記各演算ユニットのうちの1つを用いて演算を行う第1演算命令と、前記第1パイプラインにある前記第1演算ユニットと前記第2パイプラインにある前記各演算ユニットのうちの1つとを用いて演算を行う第2演算命令とを、前記第1パイプラインへ発行するとともに、前記第1演算命令を前記第2パイプラインへ発行する、命令フェッチユニットと、
前記命令フェッチユニットから前記第1パイプラインへ前記第1演算ユニットと前記第2演算ユニットとを用いて演算を行う第2演算命令が発行されると同時に、記第2パイプラインへ前記第2演算ユニットを用いて演算を行う第1演算命令が発行された際には、
前記第1演算命令が前記第2演算命令よりも先の命令である場合には、前記第2演算命令を待たして前記第1演算命令を優先して実行し、
前記第2演算命令が前記第1演算命令よりも先の命令である場合には、前記第1演算命令を待たして前記第2演算命令を優先して実行するように制御する、制御回路であって、前記第1演算命令及び前記第2演算命令の命令部分を制御をする命令系制御回路を有する、制御回路と、
を備えるとともに、
前記命令系制御回路は、
前記第1パイプラインに発行された前記第1演算命令又は前記第2演算命令を待たす場合に第1インターロック信号を出力し、前記第2パイプラインに発行された前記第1演算命令を待たす場合に第2インターロック信号を出力する、インターロック信号発生回路と、
前記第1インターロック信号に応じて、前記第1パイプラインに発行された前記第1演算命令又は前記第2演算命令を保持し、又は、出力する、第1命令保持出力回路と、
前記第2インターロック信号に応じて、前記第2パイプラインに発行された前記第1演算命令を保持し、又は、出力する、第2命令保持回路と、
を備えることを特徴とするプロセッサ。 - 前記制御回路は、前記第1演算命令又は前記第2演算命令を待たせた場合には、次のサイクルでこの待たせた前記第1演算命令又は第2演算命令を実行するように制御する、ことを特徴とする請求項1に記載のプロセッサ。
- 前記制御回路は、前記第1演算命令及び前記第2演算命令に対するオペランドの制御をするオペランド系制御回路を、さらに備えることを特徴とする請求項1に記載のプロセッサ。
- 前記インターロック信号発生回路は、
前記第1パイプラインに発行された命令が有効なものであることを示す第1有効信号が入力され、前記第1インターロック信号に応じて、前記第1有効信号を保持し、又は、出力する、第1有効信号保持出力回路と、
前記第1パイプラインに前記第2演算命令が発行されたことを示す第2演算命令発行信号が入力され、前記第1インターロック信号に応じて、前記第2演算命令発行信号を保持し、又は、出力する、第2演算命令発行信号保持出力回路と、前記第2パイプラインに発行された命令が有効なものであることを示す第2有効信号が入力され、前記第2インターロック信号に応じて、前記第2有効信号を保持し、又は、出力する、第2有効信号保持出力回路と、
前記第2パイプラインに前記第1演算命令が発行されたことを示す第1演算命令発行信号が入力され、前記第2インターロック信号に応じて、前記第1演算命令発行信号を保持し、又は、出力する、第1演算命令発行信号保持出力回路と、インターロック用ファースト信号を出力するステート回路であって、第1パイプラインに発行された命令が第2パイプラインに発行された命令よりも先の命令であるか、又は、その逆であるかを示すファースト信号が入力されるとともに、前のサイクルの前記第1インターロック信号と前記第2インターロック信号と前記第1有効信号と前記第2有効信号と前記インターロック用ファースト信号とが入力される、ステート回路と、
前記第1有効信号と前記第2有効信号と前記第1演算命令発行信号と前記第2演算命令発行信号と前記インターロック用ファースト信号とが入力され、前記第1インターロック信号と前記第2インターロック信号とを出力する、組合せ論理回路と、
を備えることを特徴とする請求項1に記載のプロセッサ。 - 前記ステート回路は、
前のサイクルで前記第1有効信号と前記第2有効信号とが有効状態であり、かつ、
前のサイクルで前記第1インターロック信号と前記第2インターロック信号のうちの一方がインターロック状態であったときは、
次のサイクルで前のサイクルにおける前記インターロック用ファースト信号を反転して出力する、
ことを特徴とする請求項4に記載のプロセッサ。 - 前記ステート回路は、
前のサイクルで前記第1有効信号と前記第2有効信号とが有効状態であり、かつ、
前のサイクルで前記第1インターロック信号と前記第2インターロック信号の双方が、インターロック状態でなかったときは、
次のサイクルで前のサイクルと同じ状態の前記インターロック用ファースト信号を出力する、
ことを特徴とする請求項4に記載のプロセッサ。 - 前記オペランド系制御回路は、
前記第1パイプラインに発行された前記第1演算命令又は前記第2演算命令に対するオペランドを保持し、又は、前記第1演算ユニットへ出力する、第1オペランド保持出力回路と、
前記第2パイプラインに発行された前記第1演算命令に対するオペランドを保持し、又は、前記第2演算ユニットへ出力する、第2オペランド保持回路と、
前記第1パイプラインに発行された命令が前記第2演算命令である場合に、前記第2演算ユニットで実行される前記第2演算命令に対するオペランドを保持し、又は、前記第2演算ユニットへ出力する、第3オペランド保持出力回路と、
を備えることを特徴とする請求項3に記載のプロセッサ。 - 前記第1オペランド保持出力回路は、
レジスタファイルからのオペランドとこの第1オペランド保持出力回路の出力からフィードバックしたオペランドとが入力され、前記第1パイプラインに発行された命令を待たす場合には前記第1オペランド保持出力回路の出力からフィードバックしたオペランドを選択して出力し、前記第1パイプラインに発行された命令を実行する場合にはレジスタファイルからのオペランドを選択して出力する、第1マルチプレクサと、
前記第1マルチプレクサから出力されたオペランドを保持して、前記第1演算ユニットへ出力する、第1フリップフロップと、
を備え、
前記第2オペランド保持出力回路は、
レジスタファイルからのオペランドとこの第2オペランド保持出力回路の出力からフィードバックしたオペランドとが入力され、前記第2パイプラインに発行された命令を待たす場合には前記第2オペランド保持出力回路の出力からフィードバックしたオペランドを選択して出力し、前記第2パイプラインに発行された命令を実行する場合にはレジスタファイルからのオペランドを選択して出力する、第2マルチプレクサと、
前記第2マルチプレクサから出力されたオペランドを保持して、出力する、第2フリップフロップと、
前記第2フリップフロップから出力されたオペランドと前記第3オペランド保持出力回路から出力されたオペランドとが入力され、前記第2演算命令を実行する場合には前記第3オペランド保持出力回路から出力されたオペランドを選択して前記第2演算ユニットへ出力し、前記第2パイプラインに発行された命令を実行する場合には前記第2フリップフロップから出力されたオペランドを選択して前記第2演算ユニットへ出力する、第3マルチプレクサと、
を備え、
前記第3オペランド保持出力回路は、
レジスタファイルからのオペランドとこの第3オペランド保持出力回路の出力からフィードバックしたオペランドとが入力され、前記第1パイプラインに発行された前記第2演算命令を待たす場合には前記第3オペランド保持出力回路の出力からフィードバックしたオペランドを選択して出力し、前記第1パイプラインに発行された前記第2演算命令を実行する場合にはレジスタファイルからのオペランドを選択して出力する、第4マルチプレクサと、
前記第4マルチプレクサから出力されたオペランドを保持して、前記第3マルチプレクサへ出力する、第3フリップフロップと、
を備える、
ことを特徴とする請求項7に記載のプロセッサ。 - 前記第1演算ユニットと前記第2演算ユニットはインテジャーユニットであることを特徴とする請求項1に記載のプロセッサ。
- 前記第3演算ユニットはロードストアユニット又はコプロセッサユニット又はフローティングポイントユニットであることを特徴とする請求項1に記載のプロセッサ。
- 第1の演算を行う第1演算ユニットと、第2の演算を行う第2演算ユニットとを有する、第1パイプラインと、
第3の演算を行う第3演算ユニットと、第4の演算を行う第4演算ユニットととを有する、第2パイプラインと、
前記第1パイプライン及び前記第2パイプラインにある前記各演算ユニットのうちの1つを用いて演算を行う第1演算命令と、前記第1パイプラインにある前記各演算ユニットのうちの1つの演算ユニットと前記第2パイプラインにある前記各演算ユニットのうちの1つの演算ユニットとを用いて演算を行う第2演算命令とを、前記第1パイプライン及び前記第2パイプラインの一方へ発行するとともに、前記第1演算命令を前記第1パイプラインと前記第2パイプラインの他方へ発行する、命令フェッチユニットと、
前記命令フェッチユニットから前記第1パイプラインと前記第2パイプラインの一方へ発行された第1演算命令が使用する演算ユニットと、前記第1パイプラインと前記第2パイプラインの他方へ発行された第2演算命令が使用する演算ユニットとが、重複する際には、
前記第1演算命令が前記第2演算命令よりも先の命令である場合には、前記第2演算命令を待たして前記第1演算命令を優先して実行し、
前記第2演算命令が前記第1演算命令よりも先の命令である場合には、前記第1演算命令を待たして前記第2演算命令を優先して実行するように制御する、制御回路であって、前記第1演算命令及び前記第2演算命令の命令部分を制御をする命令系制御回路を有する、制御回路と、
を備えるとともに、
前記命令系制御回路は、
前記第1パイプラインに発行された前記第1演算命令又は前記第2演算命令を待たす場合に第1インターロック信号を出力し、前記第2パイプラインに発行された前記第1演算命令を待たす場合に第2インターロック信号を出力する、インターロック信号発生回路と、
前記第1インターロック信号に応じて、前記第1パイプラインに発行された前記第1演算命令又は前記第2演算命令を保持し、又は、出力する、第1命令保持出力回路と、
前記第2インターロック信号に応じて、前記第2パイプラインに発行された前記第1演算命令を保持し、又は、出力する、第2命令保持回路と、
を備えることを特徴とするプロセッサ。 - 前記制御回路は、前記第1演算命令又は前記第2演算命令を待たせた場合には、次のサイクルでこの待たせた前記第1演算命令又は第2演算命令を実行するように制御する、ことを特徴とする請求項11に記載のプロセッサ。
- 前記制御回路は、前記第1演算命令及び前記第2演算命令に対するオペランドの制御をするオペランド系制御回路を、さらに備えることを特徴とする請求項11に記載のプロセッサ。
- 第1の演算を行う第1演算ユニットを有する、第1パイプラインと、
前記第1の演算と同様の演算を行う第2演算ユニットと、前記第1の演算とは異なる演算を行う第3演算ユニットとを有する、第2パイプラインと、
前記第1パイプライン及び前記第2パイプラインにある前記各演算ユニットのうちの1つを用いて演算を行う第1演算命令と、前記第1パイプラインにある前記第1演算ユニットと前記第2パイプラインにある前記各演算ユニットのうちの1つとを用いて演算を行う第2演算命令とを、前記第1パイプラインへ発行するとともに、前記第1演算命令を前記第2パイプラインへ発行する、命令フェッチユニットと、
前記命令フェッチユニットから前記第1パイプラインへ前記第1演算ユニットと前記第2演算ユニットとを用いて演算を行う第2演算命令が発行されると同時に、記第2パイプラインへ前記第2演算ユニットを用いて演算を行う第1演算命令が発行された際には、前記第1演算命令と前記第2演算命令のうちの一方の演算命令を待たして、他方の演算命令を優先して実行するように制御する、制御回路であって、前記第1演算命令及び前記第2演算命令の命令部分を制御をする命令系制御回路を有する、制御回路と、
を備えるとともに、
前記命令系制御回路は、
前記第1パイプラインに発行された前記第1演算命令又は前記第2演算命令を待たす場合に第1インターロック信号を出力し、前記第2パイプラインに発行された前記第1演算命令を待たす場合に第2インターロック信号を出力する、インターロック信号発生回路と、
前記第1インターロック信号に応じて、前記第1パイプラインに発行された前記第1演算命令又は前記第2演算命令を保持し、又は、出力する、第1命令保持出力回路と、
前記第2インターロック信号に応じて、前記第2パイプラインに発行された前記第1演算命令を保持し、又は、出力する、第2命令保持回路と、
を備えることを特徴とするプロセッサ。 - 前記制御回路は、前記第1演算命令と前記第2演算命令のうちの一方の演算命令を待たせた場合には、次のサイクルでこの待たせた演算命令を実行するように制御する、ことを特徴とする請求項14に記載のプロセッサ。
- 前記制御回路は、前記第1演算命令及び前記第2演算命令に対するオペランドの制御をするオペランド系制御回路を、さらに備えることを特徴とする請求項14に記載のプロセッサ。
- 第1の演算を行う第1演算ユニットを有する、第1パイプラインと、
前記第1の演算と同様の演算を行う第2演算ユニットと、前記第1の演算とは異なる演算を行う第3演算ユニットとを有する、第2パイプラインと、
前記第1パイプライン及び前記第2パイプラインにある前記各演算ユニットのうちの1つを用いて演算を行う第1演算命令と、前記第1パイプラインにある前記第1演算ユニットと前記第2パイプラインにある前記各演算ユニットのうちの1つとを用いて演算を行う第2演算命令とを、前記第1パイプラインへ発行するとともに、前記第1演算命令を前記第2パイプラインへ発行する、命令フェッチユニットと、
前記命令フェッチユニットから前記第1パイプラインへ前記第1演算ユニットと前記第2演算ユニットとを用いて演算を行う第2演算命令が発行されると同時に、記第2パイプラインへ前記第2演算ユニットを用いて演算を行う第1演算命令が発行された際には、
前記第1演算命令が前記第2演算命令よりも先の命令である場合には、前記第2演算命令を待たして前記第1演算命令を優先して実行し、
前記第2演算命令が前記第1演算命令よりも先の命令である場合には、前記第1演算命令を待たして前記第2演算命令を優先して実行するように制御する、制御回路であって、前記第1演算命令及び前記第2演算命令に対するオペランドの制御をするオペランド系制御回路を有する、制御回路と、
を備えるとともに、
前記オペランド系制御回路は、
前記第1パイプラインに発行された前記第1演算命令又は前記第2演算命令に対するオペランドを保持し、又は、前記第1演算ユニットへ出力する、第1オペランド保持出力回路と、
前記第2パイプラインに発行された前記第1演算命令に対するオペランドを保持し、又は、前記第2演算ユニットへ出力する、第2オペランド保持回路と、
前記第1パイプラインに発行された命令が前記第2演算命令である場合に、前記第2演算ユニットで実行される前記第2演算命令に対するオペランドを保持し、又は、前記第2演算ユニットへ出力する、第3オペランド保持出力回路と、
を備えることを特徴とするプロセッサ。 - 前記第1オペランド保持出力回路は、
レジスタファイルからのオペランドとこの第1オペランド保持出力回路の出力からフィードバックしたオペランドとが入力され、前記第1パイプラインに発行された命令を待たす場合には前記第1オペランド保持出力回路の出力からフィードバックしたオペランドを選択して出力し、前記第1パイプラインに発行された命令を実行する場合にはレジスタファイルからのオペランドを選択して出力する、第1マルチプレクサと、
前記第1マルチプレクサから出力されたオペランドを保持して、前記第1演算ユニットへ出力する、第1フリップフロップと、
を備え、
前記第2オペランド保持出力回路は、
レジスタファイルからのオペランドとこの第2オペランド保持出力回路の出力からフィードバックしたオペランドとが入力され、前記第2パイプラインに発行された命令を待たす場合には前記第2オペランド保持出力回路の出力からフィードバックしたオペランドを選択して出力し、前記第2パイプラインに発行された命令を実行する場合にはレジスタファイルからのオペランドを選択して出力する、第2マルチプレクサと、
前記第2マルチプレクサから出力されたオペランドを保持して、出力する、第2フリップフロップと、
前記第2フリップフロップから出力されたオペランドと前記第3オペランド保持出力回路から出力されたオペランドとが入力され、前記第2演算命令を実行する場合には前記第3オペランド保持出力回路から出力されたオペランドを選択して前記第2演算ユニットへ出力し、前記第2パイプラインに発行された命令を実行する場合には前記第2フリップフロップから出力されたオペランドを選択して前記第2演算ユニットへ出力する、第3マルチプレクサと、
を備え、
前記第3オペランド保持出力回路は、
レジスタファイルからのオペランドとこの第3オペランド保持出力回路の出力からフィードバックしたオペランドとが入力され、前記第1パイプラインに発行された前記第2演算命令を待たす場合には前記第3オペランド保持出力回路の出力からフィードバックしたオペランドを選択して出力し、前記第1パイプラインに発行された前記第2演算命令を実行する場合にはレジスタファイルからのオペランドを選択して出力する、第4マルチプレクサと、
前記第4マルチプレクサから出力されたオペランドを保持して、前記第3マルチプレクサへ出力する、第3フリップフロップと、
を備える、
ことを特徴とする請求項17に記載のプロセッサ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US246401 | 1999-02-08 | ||
US09/246,401 US6260133B1 (en) | 1999-02-08 | 1999-02-08 | Processor having operating instruction which uses operation units in different pipelines simultaneously |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2000231488A JP2000231488A (ja) | 2000-08-22 |
JP3640855B2 true JP3640855B2 (ja) | 2005-04-20 |
Family
ID=22930510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000029398A Expired - Fee Related JP3640855B2 (ja) | 1999-02-08 | 2000-02-07 | プロセッサ |
Country Status (2)
Country | Link |
---|---|
US (1) | US6260133B1 (ja) |
JP (1) | JP3640855B2 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3816844B2 (ja) * | 2002-07-05 | 2006-08-30 | 富士通株式会社 | プロセッサ及び命令制御方法 |
US7478225B1 (en) * | 2004-06-30 | 2009-01-13 | Sun Microsystems, Inc. | Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor |
US7380105B2 (en) * | 2006-06-16 | 2008-05-27 | The Regents Of The University Of California | Prediction based instruction steering to wide or narrow integer cluster and narrow address generation |
US9996359B2 (en) | 2016-04-07 | 2018-06-12 | International Business Machines Corporation | Fast multi-width instruction issue in parallel slice processor |
US11269651B2 (en) * | 2019-09-10 | 2022-03-08 | International Business Machines Corporation | Reusing adjacent SIMD unit for fast wide result generation |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5555384A (en) * | 1989-12-01 | 1996-09-10 | Silicon Graphics, Inc. | Rescheduling conflicting issued instructions by delaying one conflicting instruction into the same pipeline stage as a third non-conflicting instruction |
JP2908598B2 (ja) * | 1991-06-06 | 1999-06-21 | 松下電器産業株式会社 | 情報処理装置 |
DE69429061T2 (de) * | 1993-10-29 | 2002-07-18 | Advanced Micro Devices, Inc. | Superskalarmikroprozessoren |
US5598546A (en) * | 1994-08-31 | 1997-01-28 | Exponential Technology, Inc. | Dual-architecture super-scalar pipeline |
DE69717369T2 (de) * | 1996-08-27 | 2003-09-11 | Matsushita Electric Ind Co Ltd | Vielfadenprozessor zur Verarbeitung von mehreren Befehlsströmen unabhängig von einander durch eine flexible Durchsatzsteuerung in jedem Befehlsstrom |
US5913049A (en) * | 1997-07-31 | 1999-06-15 | Texas Instruments Incorporated | Multi-stream complex instruction set microprocessor |
US6076159A (en) * | 1997-09-12 | 2000-06-13 | Siemens Aktiengesellschaft | Execution of a loop instructing in a loop pipeline after detection of a first occurrence of the loop instruction in an integer pipeline |
-
1999
- 1999-02-08 US US09/246,401 patent/US6260133B1/en not_active Expired - Fee Related
-
2000
- 2000-02-07 JP JP2000029398A patent/JP3640855B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2000231488A (ja) | 2000-08-22 |
US6260133B1 (en) | 2001-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100309566B1 (ko) | 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치 | |
JP3555140B2 (ja) | レジスタリネーム回路の半導体フロアプランと方法 | |
JP3906003B2 (ja) | プロセッサおよびその命令処理方法 | |
US20020169942A1 (en) | VLIW processor | |
JPS6217253B2 (ja) | ||
JPH08305568A (ja) | 情報処理装置 | |
WO1996029646A1 (fr) | Processeur | |
JPH09311786A (ja) | データ処理装置 | |
KR102256188B1 (ko) | 데이터 처리장치 및 벡터 오퍼랜드를 처리하는 방법 | |
JP5491071B2 (ja) | 命令融合演算装置および命令融合演算方法 | |
JP3578883B2 (ja) | データ処理装置 | |
US7774582B2 (en) | Result bypassing to override a data hazard within a superscalar processor | |
JPH05150979A (ja) | 即値オペランド拡張方式 | |
JPH03286332A (ja) | デジタルデータ処理装置 | |
JP3640855B2 (ja) | プロセッサ | |
KR960001275B1 (ko) | 병렬프로세서의 명령분배처리장치 | |
JP2005508554A (ja) | データ操作を利用したデータの計算と処理方法、及び、その装置 | |
US7437544B2 (en) | Data processing apparatus and method for executing a sequence of instructions including a multiple iteration instruction | |
KR20040111559A (ko) | 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치 | |
JPH05274143A (ja) | 複合条件処理方式 | |
JP3568737B2 (ja) | 条件実行命令を備えるマイクロプロセッサ | |
EP1050800A1 (en) | A pipelined execution unit | |
US6918028B1 (en) | Pipelined processor including a loosely coupled side pipe | |
US20080301411A1 (en) | Inverting data on result bus to prepare for instruction in the next cycle for high frequency execution units | |
JP3578493B2 (ja) | 長語命令生成方法および命令処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20041215 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050107 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050119 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080128 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090128 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100128 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110128 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120128 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130128 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130128 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140128 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |