JPH08171491A - ディスパッチされた制御転送命令状態に基づきより高速で命令を先取りするための方法及び装置 - Google Patents
ディスパッチされた制御転送命令状態に基づきより高速で命令を先取りするための方法及び装置Info
- Publication number
- JPH08171491A JPH08171491A JP7212989A JP21298995A JPH08171491A JP H08171491 A JPH08171491 A JP H08171491A JP 7212989 A JP7212989 A JP 7212989A JP 21298995 A JP21298995 A JP 21298995A JP H08171491 A JPH08171491 A JP H08171491A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- fetch
- cti
- circuit
- 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.)
- Pending
Links
- 238000012546 transfer Methods 0.000 title claims abstract description 11
- 238000000034 method Methods 0.000 title claims description 11
- 230000003111 delayed effect Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 12
- 239000011159 matrix material Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 206010072968 Neuroendocrine cell hyperplasia of infancy Diseases 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
(57)【要約】
【課題】 パイプライン型、さらにはスーパースカラー
型コンピュータシステムにおいて、従来技術に比して下
流のはるかに先まで見越し、先取りする能力を達成する
ことが可能な命令を先取りできるようにする。 【解決手段】 先取りPC値を生成する際、様々なパイ
プライン・ステージでディスパッチされるCTIの状態
を考慮に入れる先取りプログラムカウンタ(先取りP
C)生成回路をコンピュータシステムの先取り及びディ
スパッチ装置(PDU)に具備する。
型コンピュータシステムにおいて、従来技術に比して下
流のはるかに先まで見越し、先取りする能力を達成する
ことが可能な命令を先取りできるようにする。 【解決手段】 先取りPC値を生成する際、様々なパイ
プライン・ステージでディスパッチされるCTIの状態
を考慮に入れる先取りプログラムカウンタ(先取りP
C)生成回路をコンピュータシステムの先取り及びディ
スパッチ装置(PDU)に具備する。
Description
【0001】
【発明の属する技術分野】本発明は、コンピュータシス
テムの分野に関するものである。より詳しくは、本発明
は、コンピュータシステムの命令先取り及びディスパッ
チ方法及び装置に関する。
テムの分野に関するものである。より詳しくは、本発明
は、コンピュータシステムの命令先取り及びディスパッ
チ方法及び装置に関する。
【0002】
【従来の技術】従来、コンピュータシステムの命令のフ
ェッチ及びディスパッチ装置並びに実行装置は、プログ
ラム順序に従って一時に1つずつ逐次命令をフェッチ
し、デコードし、実行する。言い換えると、命令のフェ
ッチ及びディスパッチ装置は、命令をフェッチし、デコ
ードした後、実行装置がその命令の実行を終了するまで
待ってから、次の命令をフェッチし、デコードする。こ
の逐次型アプローチの下では、先行する条件付き制御転
送命令(CTI)が実行されるかどうか、そして、実行
される場合、その目標アドレスはどこかが、次の命令を
フェッチする時にいずれも既知である。従って、次にフ
ェッチされるのはどの命令か、またその命令はメモリ中
のどこにあるかを知る上において何の問題もない。
ェッチ及びディスパッチ装置並びに実行装置は、プログ
ラム順序に従って一時に1つずつ逐次命令をフェッチ
し、デコードし、実行する。言い換えると、命令のフェ
ッチ及びディスパッチ装置は、命令をフェッチし、デコ
ードした後、実行装置がその命令の実行を終了するまで
待ってから、次の命令をフェッチし、デコードする。こ
の逐次型アプローチの下では、先行する条件付き制御転
送命令(CTI)が実行されるかどうか、そして、実行
される場合、その目標アドレスはどこかが、次の命令を
フェッチする時にいずれも既知である。従って、次にフ
ェッチされるのはどの命令か、またその命令はメモリ中
のどこにあるかを知る上において何の問題もない。
【0003】性能を改善するために、一部のコンピュー
タシステムの命令のフェッチ及びディスパッチ装置並び
に実行装置は、命令のフェッチ、デコード及び実行をパ
イプライン処理によって行う。言い換えると、最初の命
令が実行されている間に、2番目の命令が実行に備えて
デコードされ、かつ3番目の命令がデコードに向けてフ
ェッチされる。命令は、フェッチ、デコード及び実行の
各パイプライン・ステージを順次通過する。一部のコン
ピュータシステムにおいては、これら基本のフェッチ、
デコード及び実行のパイプライン・ステージをさらにサ
ブステージに分けることによって、さらに多くの命令を
同時にパイプラインに通すことができるようになってい
る。このパイプライン型アプローチの下では、先行する
条件付き制御転送命令(CTI)が実行されるかどう
か、そして実行される場合、その目標アドレスはどこか
が、必ずしも次の命令がフェッチされる時に既知である
とはかぎらない。パイプラインを常に満たされた状態に
保つため、大半のパイプライン型コンピュータシステム
は、CTIが現れた時命令のフェッチ及びデコードを一
時中断するのではなく、ある種の予測アルゴリズムを用
いて実行制御がどちらの方向に転送されるかを予測し、
その予測した方向に沿って命令のフェッチ、デコード及
び実行を続けるようになっている。予測が結果的に誤っ
ていた場合は、その実行結果は、パージ(消去)され、
その後命令のフェッチ、デコード及び実行が正しい方向
に合わせて再度繰り返される。
タシステムの命令のフェッチ及びディスパッチ装置並び
に実行装置は、命令のフェッチ、デコード及び実行をパ
イプライン処理によって行う。言い換えると、最初の命
令が実行されている間に、2番目の命令が実行に備えて
デコードされ、かつ3番目の命令がデコードに向けてフ
ェッチされる。命令は、フェッチ、デコード及び実行の
各パイプライン・ステージを順次通過する。一部のコン
ピュータシステムにおいては、これら基本のフェッチ、
デコード及び実行のパイプライン・ステージをさらにサ
ブステージに分けることによって、さらに多くの命令を
同時にパイプラインに通すことができるようになってい
る。このパイプライン型アプローチの下では、先行する
条件付き制御転送命令(CTI)が実行されるかどう
か、そして実行される場合、その目標アドレスはどこか
が、必ずしも次の命令がフェッチされる時に既知である
とはかぎらない。パイプラインを常に満たされた状態に
保つため、大半のパイプライン型コンピュータシステム
は、CTIが現れた時命令のフェッチ及びデコードを一
時中断するのではなく、ある種の予測アルゴリズムを用
いて実行制御がどちらの方向に転送されるかを予測し、
その予測した方向に沿って命令のフェッチ、デコード及
び実行を続けるようになっている。予測が結果的に誤っ
ていた場合は、その実行結果は、パージ(消去)され、
その後命令のフェッチ、デコード及び実行が正しい方向
に合わせて再度繰り返される。
【0004】命令のフェッチは、メモリからの命令の読
込みを伴う。これは実行装置による命令実行と比べると
「遅い」プロセスであるから、パイプライン型コンピュ
ータシステムの大半の命令のフェッチ及びデコード装置
では、命令を先取りして、パイプラインを満たされた状
態に保つのに、常に適切な量の命令供給を確保するよう
になっている。先取りされた命令は、誤った実行制御転
送予測が検出されると、適宜、その全部または一部がパ
ージされる。
込みを伴う。これは実行装置による命令実行と比べると
「遅い」プロセスであるから、パイプライン型コンピュ
ータシステムの大半の命令のフェッチ及びデコード装置
では、命令を先取りして、パイプラインを満たされた状
態に保つのに、常に適切な量の命令供給を確保するよう
になっている。先取りされた命令は、誤った実行制御転
送予測が検出されると、適宜、その全部または一部がパ
ージされる。
【0005】近年、多くのパイプライン型コンピュータ
システムは、「スーパースカラー型」、すなわち、命令
をグループで実行することができるようにもなってお
り、これによって実行スループットが一層改善されてい
る。従って、このようなスーパースカラー型コンピュー
タシステムにおいては、「普通の」パイプライン型コン
ピュータシステムにおける同種の装置に比べて、下流の
はるかに先までインテリジェントに見越し、先取りする
ことによって、「スーパースカラー」型コンピュータシ
ステム上の実行装置のスループットの向上に追随するこ
とができる命令の先取り及びディスパッチ装置を具備す
ることが望ましい。さらに、このように実行スループッ
トが絶えず増大する傾向は、「スーパースカラー」型コ
ンピュータシステムのプロセッサ速度が高速化し続ける
ことによって加速され、そのために、下流のはるかに先
までインテリジェントに見越し、先取りする能力がなお
一層求められるようになって来た。
システムは、「スーパースカラー型」、すなわち、命令
をグループで実行することができるようにもなってお
り、これによって実行スループットが一層改善されてい
る。従って、このようなスーパースカラー型コンピュー
タシステムにおいては、「普通の」パイプライン型コン
ピュータシステムにおける同種の装置に比べて、下流の
はるかに先までインテリジェントに見越し、先取りする
ことによって、「スーパースカラー」型コンピュータシ
ステム上の実行装置のスループットの向上に追随するこ
とができる命令の先取り及びディスパッチ装置を具備す
ることが望ましい。さらに、このように実行スループッ
トが絶えず増大する傾向は、「スーパースカラー」型コ
ンピュータシステムのプロセッサ速度が高速化し続ける
ことによって加速され、そのために、下流のはるかに先
までインテリジェントに見越し、先取りする能力がなお
一層求められるようになって来た。
【0006】
【発明が解決しようとする課題】従って、本発明の目的
は、以下に説明するように、上記及びその他の所期の効
果を達成する、すなわちパイプライン型、さらにはスー
パースカラー型コンピュータシステムにおいて、従来技
術に比して下流のはるかに先まで見越し、先取りする能
力を達成することが可能な命令を先取りするための方法
及び装置を提供することにある。
は、以下に説明するように、上記及びその他の所期の効
果を達成する、すなわちパイプライン型、さらにはスー
パースカラー型コンピュータシステムにおいて、従来技
術に比して下流のはるかに先まで見越し、先取りする能
力を達成することが可能な命令を先取りするための方法
及び装置を提供することにある。
【0007】
【課題を解決するための手段】本発明は、先取りプログ
ラムカウンタ(PC)値を生成する際、様々なパイプラ
イン・ステージでディスパッチされるCTIの状態を考
慮に入れる先取りPC生成回路をコンピュータシステム
の先取り及びディスパッチ装置(PDU)に具備するこ
とによって、上記目的を効果的に達成するものである。
この先取りPC生成回路は、記憶回路、フェッチ制御回
路及びフェッチPC生成回路よりなる。記憶回路は、様
々なパイプライン・ステージでディスパッチされるCT
Iに関する状態制御情報を記憶する。フェッチ制御回路
は、上記記憶回路に記憶された状態制御情報を考慮し
て、フェッチPC生成回路を制御するための制御信号を
発生させる。フェッチPC生成回路は、フェッチ制御回
路の制御下において、フェッチPC値を発生させる。
ラムカウンタ(PC)値を生成する際、様々なパイプラ
イン・ステージでディスパッチされるCTIの状態を考
慮に入れる先取りPC生成回路をコンピュータシステム
の先取り及びディスパッチ装置(PDU)に具備するこ
とによって、上記目的を効果的に達成するものである。
この先取りPC生成回路は、記憶回路、フェッチ制御回
路及びフェッチPC生成回路よりなる。記憶回路は、様
々なパイプライン・ステージでディスパッチされるCT
Iに関する状態制御情報を記憶する。フェッチ制御回路
は、上記記憶回路に記憶された状態制御情報を考慮し
て、フェッチPC生成回路を制御するための制御信号を
発生させる。フェッチPC生成回路は、フェッチ制御回
路の制御下において、フェッチPC値を発生させる。
【0008】本発明の一実施の形態においては、PDU
は、さらに、2つの命令フェッチ待ち行列、1つの命令
ディスパッチ待ち行列、並びに関連の待ち行列制御及び
ディスパッチ回路を具備する。2つの命令待ち行列は、
本発明の先取りPC生成回路により生成される先取りP
C値に基づいて先取り中の命令を格納する。命令ディス
パッチ待ち行列は、関連の待ち行列制御及びディスパッ
チ回路の制御の下で、上記の2つの命令フェッチ待ち行
列のどちらか1つから、あるいはこれら2つの命令フェ
ッチ待ち行列をバイパスする命令キャッシュから、ディ
スパッチ中の命令を選択的に受け取り、格納する。関連
の待ち行列制御及びディスパッチ回路は、ディスパッチ
された待ち行列及び命令を制御し、特に上記2つの命令
フェッチ待ち行列の一方を順次命令フェッチ待ち行列と
して、他方の命令フェッチ待ち行列をターゲット命令フ
ェッチ待ち行列として動的に指定する。
は、さらに、2つの命令フェッチ待ち行列、1つの命令
ディスパッチ待ち行列、並びに関連の待ち行列制御及び
ディスパッチ回路を具備する。2つの命令待ち行列は、
本発明の先取りPC生成回路により生成される先取りP
C値に基づいて先取り中の命令を格納する。命令ディス
パッチ待ち行列は、関連の待ち行列制御及びディスパッ
チ回路の制御の下で、上記の2つの命令フェッチ待ち行
列のどちらか1つから、あるいはこれら2つの命令フェ
ッチ待ち行列をバイパスする命令キャッシュから、ディ
スパッチ中の命令を選択的に受け取り、格納する。関連
の待ち行列制御及びディスパッチ回路は、ディスパッチ
された待ち行列及び命令を制御し、特に上記2つの命令
フェッチ待ち行列の一方を順次命令フェッチ待ち行列と
して、他方の命令フェッチ待ち行列をターゲット命令フ
ェッチ待ち行列として動的に指定する。
【0009】
【発明の実施の形態】以下の説明においては、本発明の
完全な理解を図るため、説明を目的として特定の数、材
料及び構成を記載する。しかしながら、本発明がこれら
特定の詳細事項の記載なしで実施することが可能なこと
は、当業者には明白であろう。他の場合については、不
必要に本発明を不明瞭にしないために、周知のシステム
は模式図またはブロック図形式で示してある。
完全な理解を図るため、説明を目的として特定の数、材
料及び構成を記載する。しかしながら、本発明がこれら
特定の詳細事項の記載なしで実施することが可能なこと
は、当業者には明白であろう。他の場合については、不
必要に本発明を不明瞭にしないために、周知のシステム
は模式図またはブロック図形式で示してある。
【0010】まず、図1には、本発明の開示技術を組み
込んだパイプライン型コンピュータシステムの一例のブ
ロック図が示されている。図示例のコンピュータシステ
ム10は、本発明の開示技術を組み込んだ命令先取り及
びディスパッチ装置(PDU)12を有する。さらに、
図示のコンピュータシステム10は、実行装置及び関連
のレジスタファイル14、命令キャッシュ16、データ
キャッシュ20、メモリ管理装置18並びにバスインタ
フェース22を有する。これらの構成要素12乃至22
は、相互に図示のように接続されている。これらの要素
の協同動作によって、命令は、命令キャッシュ16及び
システムメモリ(図示省略)からフェッチされ、実行の
ために実行装置14にディスパッチされる。実行結果
は、データキャッシュ20に格納され、場合によっては
システムメモリに格納される。PDU12に組み込まれ
た本発明の開示技術を除いて、構成要素14乃至22
は、大方のコンピュータシステムで見られるこれらの要
素が属する広い概念を代表して表すものとする。これら
の要素の構成及び基本的機能は、周知であり、詳細な説
明は省略する。以下、PDU12に組み込まれる本発明
の開示技術について、第2図以降の図面を参照しつつさ
らに詳細に説明する。
込んだパイプライン型コンピュータシステムの一例のブ
ロック図が示されている。図示例のコンピュータシステ
ム10は、本発明の開示技術を組み込んだ命令先取り及
びディスパッチ装置(PDU)12を有する。さらに、
図示のコンピュータシステム10は、実行装置及び関連
のレジスタファイル14、命令キャッシュ16、データ
キャッシュ20、メモリ管理装置18並びにバスインタ
フェース22を有する。これらの構成要素12乃至22
は、相互に図示のように接続されている。これらの要素
の協同動作によって、命令は、命令キャッシュ16及び
システムメモリ(図示省略)からフェッチされ、実行の
ために実行装置14にディスパッチされる。実行結果
は、データキャッシュ20に格納され、場合によっては
システムメモリに格納される。PDU12に組み込まれ
た本発明の開示技術を除いて、構成要素14乃至22
は、大方のコンピュータシステムで見られるこれらの要
素が属する広い概念を代表して表すものとする。これら
の要素の構成及び基本的機能は、周知であり、詳細な説
明は省略する。以下、PDU12に組み込まれる本発明
の開示技術について、第2図以降の図面を参照しつつさ
らに詳細に説明する。
【0011】図2には、図1のコンピュータシステムの
パイプライン・ステージの構成が示されている。図示の
ように、ある任意の時点で複数の命令が「実行」中であ
る。パイプライン・ステージは、命令フェッチ・ステー
ジ13、命令デコード・ステージ15、実行ステージ1
7及びライトバック・ステージ19を含む。命令は、フ
ェッチ・ステージ13及びデコード・ステージ15でそ
れぞれフェッチされ、デコードされる。デコードされた
命令は、実行ステージ17で実行され、実行結果は、ラ
イトバック・ステージ19で記憶装置に書き込まれる。
これらの命令は、プログラム順序に従い順次パイプライ
ン内を移動する。本発明は以下4つのパイプライン・ス
テージの場合について説明するが、本発はパイプライン
・ステージ数が4より少ない場合でも、多い場合でも実
施可能なことは明らかであろう。
パイプライン・ステージの構成が示されている。図示の
ように、ある任意の時点で複数の命令が「実行」中であ
る。パイプライン・ステージは、命令フェッチ・ステー
ジ13、命令デコード・ステージ15、実行ステージ1
7及びライトバック・ステージ19を含む。命令は、フ
ェッチ・ステージ13及びデコード・ステージ15でそ
れぞれフェッチされ、デコードされる。デコードされた
命令は、実行ステージ17で実行され、実行結果は、ラ
イトバック・ステージ19で記憶装置に書き込まれる。
これらの命令は、プログラム順序に従い順次パイプライ
ン内を移動する。本発明は以下4つのパイプライン・ス
テージの場合について説明するが、本発はパイプライン
・ステージ数が4より少ない場合でも、多い場合でも実
施可能なことは明らかであろう。
【0012】次に、図3のブロック図には、図1のPD
U12の一実施の形態の主要部がより詳細に示されてい
る。図示のように、PDU12は、2つの命令フェッチ
待ち行列24a及び24bと、命令ディスパッチ待ち行
列28を有する。また、PDU12は、待ち行列制御回
路26及びディスパッチ制御回路30を有する。さら
に、PDU12は、実行PC生成回路32及び先取りP
C生成回路34を有する。これらの構成要素24a、2
4b及び26乃至34は、図示のように、相互に接続さ
れ、かつ命令キャッシュ16及び実行装置14と接続さ
れている。
U12の一実施の形態の主要部がより詳細に示されてい
る。図示のように、PDU12は、2つの命令フェッチ
待ち行列24a及び24bと、命令ディスパッチ待ち行
列28を有する。また、PDU12は、待ち行列制御回
路26及びディスパッチ制御回路30を有する。さら
に、PDU12は、実行PC生成回路32及び先取りP
C生成回路34を有する。これらの構成要素24a、2
4b及び26乃至34は、図示のように、相互に接続さ
れ、かつ命令キャッシュ16及び実行装置14と接続さ
れている。
【0013】2つの命令フェッチ待ち行列24a、24
bは、命令キャッシュ16からフェッチされた命令を格
納するために使用される。以下にさらに詳細に説明する
ように、任意の時点において、2つの命令フェッチ待ち
行列24a、24bの一方は順次命令フェッチ待ち行列
として使用され、他方の命令フェッチ待ち行列24aま
たは24bはターゲット命令フェッチ待ち行列として使
用される。これら2つの命令待ち行列24a、24bを
どのように使用するかは動的に決定される。
bは、命令キャッシュ16からフェッチされた命令を格
納するために使用される。以下にさらに詳細に説明する
ように、任意の時点において、2つの命令フェッチ待ち
行列24a、24bの一方は順次命令フェッチ待ち行列
として使用され、他方の命令フェッチ待ち行列24aま
たは24bはターゲット命令フェッチ待ち行列として使
用される。これら2つの命令待ち行列24a、24bを
どのように使用するかは動的に決定される。
【0014】命令ディスパッチ待ち行列28は、ディス
パッチ中の命令を格納するために使用される。命令ディ
スパッチ待ち行列28は、順次命令待ち行列として使用
されている命令フェッチ待ち行列24aまたは24bよ
りディスパッチ中の命令を受け取る。好ましくは、命令
ディスパッチ待ち行列28は、命令フェッチ待ち行列2
4a、24bが空の場合に、これらの待ち行列24a、
24bをバイパスして、命令キャッシュ16から直接デ
ィスパッチ中の命令を受け取ることができるようにす
る。
パッチ中の命令を格納するために使用される。命令ディ
スパッチ待ち行列28は、順次命令待ち行列として使用
されている命令フェッチ待ち行列24aまたは24bよ
りディスパッチ中の命令を受け取る。好ましくは、命令
ディスパッチ待ち行列28は、命令フェッチ待ち行列2
4a、24bが空の場合に、これらの待ち行列24a、
24bをバイパスして、命令キャッシュ16から直接デ
ィスパッチ中の命令を受け取ることができるようにす
る。
【0015】待ち行列制御回路26は、2つの命令フェ
ッチ待ち行列24a、24bを制御する。特に、待ち行
列制御回路26は、次にディスパッチする命令をどこか
ら取り出すか、また次にフェッチされる命令をどこに格
納するかを指示する上記2つの待ち行列24a、24b
の待ち行列ヘッドポインタ及び待ち行列テールポインタ
を保持する。
ッチ待ち行列24a、24bを制御する。特に、待ち行
列制御回路26は、次にディスパッチする命令をどこか
ら取り出すか、また次にフェッチされる命令をどこに格
納するかを指示する上記2つの待ち行列24a、24b
の待ち行列ヘッドポインタ及び待ち行列テールポインタ
を保持する。
【0016】ディスパッチ制御回路30は、ディスパッ
チ待ち行列28からの命令のディスパッチを制御する。
また、ディスパッチ制御回路30は、ディスパッチ制御
情報を待ち行列制御回路26、実行PC生成回路32、
及び先取りPC生成回路34に供給する。図示の例にお
いては、ディスパッチ制御回路30は、一時に最大3つ
の命令からなるグループとして命令をディスパッチす
る。ただし、これらのディスパッチされる命令グループ
中には、CTIは多くても1つだけである。
チ待ち行列28からの命令のディスパッチを制御する。
また、ディスパッチ制御回路30は、ディスパッチ制御
情報を待ち行列制御回路26、実行PC生成回路32、
及び先取りPC生成回路34に供給する。図示の例にお
いては、ディスパッチ制御回路30は、一時に最大3つ
の命令からなるグループとして命令をディスパッチす
る。ただし、これらのディスパッチされる命令グループ
中には、CTIは多くても1つだけである。
【0017】さらに、本発明の一実施の形態において
は、無遅延CTIと遅延CTIの2種類のCTIが用い
られる。無遅延制御転送は、CTIが実行された直後に
目標アドレスの命令に制御を切り換えるのに対し、遅延
制御転送は、1命令分の遅延後に目標アドレスの命令に
制御を切り換える。遅延CTIの後の命令は、CTIの
ターゲットが実行される前に実行される。この命令は、
遅延CTIの関連遅延命令(DI)と呼ばれる。
は、無遅延CTIと遅延CTIの2種類のCTIが用い
られる。無遅延制御転送は、CTIが実行された直後に
目標アドレスの命令に制御を切り換えるのに対し、遅延
制御転送は、1命令分の遅延後に目標アドレスの命令に
制御を切り換える。遅延CTIの後の命令は、CTIの
ターゲットが実行される前に実行される。この命令は、
遅延CTIの関連遅延命令(DI)と呼ばれる。
【0018】命令がグループとしてディスパッチされ、
かつCTIが無遅延CTIと共に遅延CTIも含むコン
ピュータシステムの特定例としては、米国カリフォルニ
ア洲マウンテンビューのサン・マイクロシステムズ(S
un Microsystems,Inc.)社の製造
になるスパークステーション20(Sparcstat
ion 20)がある。
かつCTIが無遅延CTIと共に遅延CTIも含むコン
ピュータシステムの特定例としては、米国カリフォルニ
ア洲マウンテンビューのサン・マイクロシステムズ(S
un Microsystems,Inc.)社の製造
になるスパークステーション20(Sparcstat
ion 20)がある。
【0019】実行PC生成回路32及び先取りPC生成
回路34は、それぞれ実行装置14及び命令キャッシュ
16のための実行PC値及び先取りPC値を生成する。
実行PC値は、実行しようとする命令のアドレスを表
し、一方、先取りPC値は、先取りしようとする次の命
令ブロックの開始アドレスを表す。
回路34は、それぞれ実行装置14及び命令キャッシュ
16のための実行PC値及び先取りPC値を生成する。
実行PC値は、実行しようとする命令のアドレスを表
し、一方、先取りPC値は、先取りしようとする次の命
令ブロックの開始アドレスを表す。
【0020】本発明によれば、先取りPC生成回路34
は、様々なパイプライン・ステージにおいてディスパッ
チされるCTIの状態を考慮した先取りPC値を生成す
る。実行PC生成回路32は、また、様々なパイプライ
ン・ステージで制御転送命令が現れたとき、様々なパイ
プライン・ステージにおけるCTIの目標アドレス、す
なわち、デコード・ステージのCTIの目標アドレス
(DEC_TGT_PC)、実行ステージのCTIの目
標アドレス(EX_TGT_PC)、及びライトバック
・ステージのCTIの目標アドレス(WB_TGT_P
C)を供給することによって、上記のような先取りPC
生成回路34の動作を支援する。
は、様々なパイプライン・ステージにおいてディスパッ
チされるCTIの状態を考慮した先取りPC値を生成す
る。実行PC生成回路32は、また、様々なパイプライ
ン・ステージで制御転送命令が現れたとき、様々なパイ
プライン・ステージにおけるCTIの目標アドレス、す
なわち、デコード・ステージのCTIの目標アドレス
(DEC_TGT_PC)、実行ステージのCTIの目
標アドレス(EX_TGT_PC)、及びライトバック
・ステージのCTIの目標アドレス(WB_TGT_P
C)を供給することによって、上記のような先取りPC
生成回路34の動作を支援する。
【0021】命令フェッチ待ち行列24a、24b、命
令ディスパッチ待ち行列28、関連の待ち行列制御回路
26、ディスパッチ制御回路30、及び実行PC生成回
路32は、コンピュータシステムの多くの命令のフェッ
チ及びディスパッチ装置に見られるこれらの構成要素が
属する広い概念を代表して表すことを意図したものであ
り、参照によって全面的に本願にに組み込まれる「パイ
プライン型プロセッサにおいて複数命令をグループ化
し、グループ命令を同時に出し、グループ命令を実行す
る方法及び装置」Methods and Appar
atus ForGrouping Multiple
Instructions, Issuing Gr
ouped Instructions Simult
aneously, And Executing G
rouped Instructions In A
Pipelined Processor)」という名
称の本願の同時係属米国特許出願第07及び875,3
73号に記載されている命令のフェッチ及びディスパッ
チ・エレメントを含むが、これに限定されるものではな
い。次に、先取りPC生成回路34について、図面を参
照しつつさらに詳細に説明する。
令ディスパッチ待ち行列28、関連の待ち行列制御回路
26、ディスパッチ制御回路30、及び実行PC生成回
路32は、コンピュータシステムの多くの命令のフェッ
チ及びディスパッチ装置に見られるこれらの構成要素が
属する広い概念を代表して表すことを意図したものであ
り、参照によって全面的に本願にに組み込まれる「パイ
プライン型プロセッサにおいて複数命令をグループ化
し、グループ命令を同時に出し、グループ命令を実行す
る方法及び装置」Methods and Appar
atus ForGrouping Multiple
Instructions, Issuing Gr
ouped Instructions Simult
aneously, And Executing G
rouped Instructions In A
Pipelined Processor)」という名
称の本願の同時係属米国特許出願第07及び875,3
73号に記載されている命令のフェッチ及びディスパッ
チ・エレメントを含むが、これに限定されるものではな
い。次に、先取りPC生成回路34について、図面を参
照しつつさらに詳細に説明する。
【0022】図4のブロック図には、図3の先取りPC
生成回路34の一実施の形態の主要部がさらに詳細に示
されている。図示のように、先取りPC生成回路34
は、記憶回路36、フェッチ制御回路38及びフェッチ
・アドレス生成回路40を有する。これらの構成要素3
6乃至40は、図示のように相互に接続されている。記
憶回路36は、ディスパッチ制御回路30によって供給
されるディスパッチされたCTIの状態情報を記憶す
る。フェッチ制御回路38は、ディスパッチされたCT
Iの記憶された状態情報に基づいて、フェッチ・アドレ
ス生成回路40に対する制御信号を発生させる。フェッ
チ・アドレス生成回路40は、実行PC生成回路32に
よって様々なパイプライン・ステージにおけるCTIの
目標アドレスが供給された場合、それら目標アドレスを
用いて、フェッチ制御回路38の制御下にフェッチPC
値を生成する。
生成回路34の一実施の形態の主要部がさらに詳細に示
されている。図示のように、先取りPC生成回路34
は、記憶回路36、フェッチ制御回路38及びフェッチ
・アドレス生成回路40を有する。これらの構成要素3
6乃至40は、図示のように相互に接続されている。記
憶回路36は、ディスパッチ制御回路30によって供給
されるディスパッチされたCTIの状態情報を記憶す
る。フェッチ制御回路38は、ディスパッチされたCT
Iの記憶された状態情報に基づいて、フェッチ・アドレ
ス生成回路40に対する制御信号を発生させる。フェッ
チ・アドレス生成回路40は、実行PC生成回路32に
よって様々なパイプライン・ステージにおけるCTIの
目標アドレスが供給された場合、それら目標アドレスを
用いて、フェッチ制御回路38の制御下にフェッチPC
値を生成する。
【0023】以上、本発明の先取りPC生成回路32の
主要回路のアーキテクチャ関連について説明してきた
が、ここで、記憶回路36の内容及びフェッチ・アドレ
ス生成回路40の構成をまず図5及び6によって説明す
る。その後、フェッチ制御回路38の制御論理を図7を
参照しつつ説明し、記憶回路36の内容を使用して如何
にフェッチ・アドレス生成回路40の動作を制御するか
を明らかにする。
主要回路のアーキテクチャ関連について説明してきた
が、ここで、記憶回路36の内容及びフェッチ・アドレ
ス生成回路40の構成をまず図5及び6によって説明す
る。その後、フェッチ制御回路38の制御論理を図7を
参照しつつ説明し、記憶回路36の内容を使用して如何
にフェッチ・アドレス生成回路40の動作を制御するか
を明らかにする。
【0024】図5は、図4の記憶回路36の内容を示す
説明図である。前に述べたように、記憶回路36は、様
々なパイプライン・ステージにおいてディスパッチされ
るCTIの状態情報を格納する。このディスパッチCT
I状態記憶回路36は、周知の多数の実装系を用いて設
計することができるが、好ましくは、SRAMのような
高速実装系を用いて設計する。本発明の一実施の形態に
おいては、記憶回路36は、B0〜B11の12ビット
を有する3×4のマトリックスとして編成された1つの
ディスパッチCTI状態テーブル39に状態情報を記憶
する。B0〜B11の意味を以下説明し、それらの使用
方法については、後程フェッチ制御回路38の制御論理
との関連で説明する。
説明図である。前に述べたように、記憶回路36は、様
々なパイプライン・ステージにおいてディスパッチされ
るCTIの状態情報を格納する。このディスパッチCT
I状態記憶回路36は、周知の多数の実装系を用いて設
計することができるが、好ましくは、SRAMのような
高速実装系を用いて設計する。本発明の一実施の形態に
おいては、記憶回路36は、B0〜B11の12ビット
を有する3×4のマトリックスとして編成された1つの
ディスパッチCTI状態テーブル39に状態情報を記憶
する。B0〜B11の意味を以下説明し、それらの使用
方法については、後程フェッチ制御回路38の制御論理
との関連で説明する。
【0025】B0は、セット状態のとき、CTIがライ
トバック・ステージにあることを示す。B1は、セット
状態のとき、ライトバック・ステージのCTIが遅延C
TIであり、関連DIが有効であることを示す。B2
は、セット状態のとき、ライトバック・ステージのCT
Iが実行されることを示す。B3は、セット状態のと
き、ライトバック・ステージにあるCTIのアドレスの
ターゲット命令が有効であることを示す。
トバック・ステージにあることを示す。B1は、セット
状態のとき、ライトバック・ステージのCTIが遅延C
TIであり、関連DIが有効であることを示す。B2
は、セット状態のとき、ライトバック・ステージのCT
Iが実行されることを示す。B3は、セット状態のと
き、ライトバック・ステージにあるCTIのアドレスの
ターゲット命令が有効であることを示す。
【0026】同様に、B4は、セット状態のとき、CT
Iが実行ステージにあることを示す。B5は、セット状
態のとき、実行ステージにあるCTIが遅延CTIであ
り、関連DIが有効であることを示す。B6は、セット
状態のとき、実行ステージのCTIが実行されることを
示す。B7は、セット状態のとき、実行ステージにある
CTIのアドレスのターゲット命令が有効であることを
示す。
Iが実行ステージにあることを示す。B5は、セット状
態のとき、実行ステージにあるCTIが遅延CTIであ
り、関連DIが有効であることを示す。B6は、セット
状態のとき、実行ステージのCTIが実行されることを
示す。B7は、セット状態のとき、実行ステージにある
CTIのアドレスのターゲット命令が有効であることを
示す。
【0027】同様に、B8は、セット状態のとき、CT
Iがデコード・ステージにあることを示す。B9は、セ
ット状態のとき、デコード・ステージのCTIが遅延C
TIであり、関連DIが有効であることを示す。B10
は、セット状態のとき、デコード・ステージにあるCT
Iの目標アドレスが有効であることを示す。B11は、
セット状態のとき、デコード・ステージにあるCTIの
アドレスのターゲット命令が有効であることを示す。
Iがデコード・ステージにあることを示す。B9は、セ
ット状態のとき、デコード・ステージのCTIが遅延C
TIであり、関連DIが有効であることを示す。B10
は、セット状態のとき、デコード・ステージにあるCT
Iの目標アドレスが有効であることを示す。B11は、
セット状態のとき、デコード・ステージにあるCTIの
アドレスのターゲット命令が有効であることを示す。
【0028】次に、図6には、図4のフェッチ・アドレ
ス生成回路40の一実施の形態の主要部のより詳細なブ
ロック図が示されている。前に述べたように、フェッチ
・アドレス生成回路40は、命令のフェッチのためのフ
ェッチPC値を生成する。フェッチ・アドレス生成回路
40は、インクリメンタ72、2つのマルチプレクサ7
4a、74b及び2つのラッチ76a、76bを有す
る。これらの要素の構成及び相互関係について以下説明
し、これらの要素の使用方法については、後程フェッチ
制御回路38の制御論理との関連で説明する。
ス生成回路40の一実施の形態の主要部のより詳細なブ
ロック図が示されている。前に述べたように、フェッチ
・アドレス生成回路40は、命令のフェッチのためのフ
ェッチPC値を生成する。フェッチ・アドレス生成回路
40は、インクリメンタ72、2つのマルチプレクサ7
4a、74b及び2つのラッチ76a、76bを有す
る。これらの要素の構成及び相互関係について以下説明
し、これらの要素の使用方法については、後程フェッチ
制御回路38の制御論理との関連で説明する。
【0029】第2のラッチ76bは、出されたばかりの
順次フェッチPC値(SavedFetch_PC)を
格納するために用いられる。記憶されたSaved F
etch_PCは、最新のディスパッチされたグループ
に含まれる命令数が種々異なる場合について可能な順次
インクリメントPC値を計算するために使用される。記
憶されたSaved Fetch_PCは、新しいフェ
ッチPCとして出し直すために選択することも可能であ
る。
順次フェッチPC値(SavedFetch_PC)を
格納するために用いられる。記憶されたSaved F
etch_PCは、最新のディスパッチされたグループ
に含まれる命令数が種々異なる場合について可能な順次
インクリメントPC値を計算するために使用される。記
憶されたSaved Fetch_PCは、新しいフェ
ッチPCとして出し直すために選択することも可能であ
る。
【0030】インクリメンタ72は、最新のディスパッ
チされたグループの可能な命令数の各々、すなわち0、
1、2または3の各々の1つを4つの可能な順次インク
リメントPC値をSaved Fetch_PC値から
生成するために用いられる。第1のマルチプレクサ74
aは、フェッチ制御回路38の制御下において、上記4
つの順次インクリメントPC値の1つを第2のマルチプ
レクサ74bのための適切な順次インクリメントPC値
(INCR_PC)として選択するために使用される。
第1のラッチ76aは、セーブされた順次PC(Sav
ed SEQ_PC)として再発出するために、INC
R_PCを格納するのに用いられる。
チされたグループの可能な命令数の各々、すなわち0、
1、2または3の各々の1つを4つの可能な順次インク
リメントPC値をSaved Fetch_PC値から
生成するために用いられる。第1のマルチプレクサ74
aは、フェッチ制御回路38の制御下において、上記4
つの順次インクリメントPC値の1つを第2のマルチプ
レクサ74bのための適切な順次インクリメントPC値
(INCR_PC)として選択するために使用される。
第1のラッチ76aは、セーブされた順次PC(Sav
ed SEQ_PC)として再発出するために、INC
R_PCを格納するのに用いられる。
【0031】最後に、Saved Fetch_PC、
Saved SEQ_PC及びINCR_PCの他、第
2のマルチプレクサ74bは、入力としてDEC_TG
T_PC、EX_TGT_PC及びWB_TGT_PC
を受け取り、好ましくは診断またはリセット・プログラ
ムカウンタ値(DIAG及びReset)を受け取るよ
うにする。前に述べたように、DEC_TGT_PC、
EX_TGT_PC及びWB_TGT_PCは、実行P
C生成回路34によって供給されるデコード・ステー
ジ、実行するステージ及びライトバック・ステージのC
TIの目標アドレスである。第2のマルチプレクサ74
bは、フェッチ制御回路38の制御下で、次を受け取っ
た入力の1つを選択することによってPC値(Fetc
h_PC)をフェッチする。
Saved SEQ_PC及びINCR_PCの他、第
2のマルチプレクサ74bは、入力としてDEC_TG
T_PC、EX_TGT_PC及びWB_TGT_PC
を受け取り、好ましくは診断またはリセット・プログラ
ムカウンタ値(DIAG及びReset)を受け取るよ
うにする。前に述べたように、DEC_TGT_PC、
EX_TGT_PC及びWB_TGT_PCは、実行P
C生成回路34によって供給されるデコード・ステー
ジ、実行するステージ及びライトバック・ステージのC
TIの目標アドレスである。第2のマルチプレクサ74
bは、フェッチ制御回路38の制御下で、次を受け取っ
た入力の1つを選択することによってPC値(Fetc
h_PC)をフェッチする。
【0032】次に、図7は、図4のフェッチ制御回路3
8の動作の流れを示すフローチャートである。以下に説
明するフェッチ制御回路38によって行われる全ての判
断は、フェッチ制御回路38が記憶回路36に格納され
ているディスパッチされたCTI状態情報を調べること
によって行われ、全ての制御信号はフェッチ・アドレス
生成回路40に対して発生する。フェッチ制御回路38
は、当技術分野において周知の任意の数の組合わせ論理
素子を用いて実装することが可能である。
8の動作の流れを示すフローチャートである。以下に説
明するフェッチ制御回路38によって行われる全ての判
断は、フェッチ制御回路38が記憶回路36に格納され
ているディスパッチされたCTI状態情報を調べること
によって行われ、全ての制御信号はフェッチ・アドレス
生成回路40に対して発生する。フェッチ制御回路38
は、当技術分野において周知の任意の数の組合わせ論理
素子を用いて実装することが可能である。
【0033】図示のように、各クロックサイクルにおい
ては、フェッチ制御回路38が、まずB0をチェックす
ることによってCTIがライトバック・ステージにある
かどうかを判断する(ステップ42)。CTIがライト
バック・ステージにあると、フェッチ制御回路38は、
さらに、B1をチェックすることによって、CTIが遅
延CTIであるかどうか、そして関連DIが有効である
かどうかを判断する(ステップ44)。CTIが遅延C
TIで、関連DIが有効でない場合は、フェッチ制御回
路38はフェッチ・アドレス生成回路40に対する制御
信号を発生させ、関連DIをフェッチするべきであるい
うことを指示する(ステップ45)。言い換えると、フ
ェッチ・アドレス生成回路40は、次のフェッチ・アド
レス生成回路40の2つのマルチプレクサ74a、74
bにそれぞれ+4及びINCR_PCを選択させる制御
信号を発生させる。
ては、フェッチ制御回路38が、まずB0をチェックす
ることによってCTIがライトバック・ステージにある
かどうかを判断する(ステップ42)。CTIがライト
バック・ステージにあると、フェッチ制御回路38は、
さらに、B1をチェックすることによって、CTIが遅
延CTIであるかどうか、そして関連DIが有効である
かどうかを判断する(ステップ44)。CTIが遅延C
TIで、関連DIが有効でない場合は、フェッチ制御回
路38はフェッチ・アドレス生成回路40に対する制御
信号を発生させ、関連DIをフェッチするべきであるい
うことを指示する(ステップ45)。言い換えると、フ
ェッチ・アドレス生成回路40は、次のフェッチ・アド
レス生成回路40の2つのマルチプレクサ74a、74
bにそれぞれ+4及びINCR_PCを選択させる制御
信号を発生させる。
【0034】一方、ステップ44で、CTIが遅延CT
Iではないか、または関連DIが有効であれば、フェッ
チ制御回路38は、さらに、B2をチェックすることに
よって、ライトバック・ステージのCTIが実行される
かどうかを判断する(ステップ46)。ライトバック・
ステージのCTIが実行される場合、フェッチ制御回路
38は、さらに、B3を調べることによって、ライトバ
ック・ステージのCTIのターゲット命令がフェッチさ
れたかどうかを判断する(ステップ48)。ライトバッ
ク・ステージのCTIのターゲット命令がフェッチされ
なかった場合は、フェッチ制御回路38は、フェッチ・
アドレス生成回路40に対する制御信号を発生させ、ラ
イトバック・ステージのCTIのターゲット命令をフェ
ッチするべきであるということを指示する(ブロック4
9)。言い換えると、フェッチ・アドレス生成回路40
は、次のフェッチ・アドレス生成回路40の第2のマル
チプレクサ74bにWB_TGT_PCを選択させるた
めの制御信号を発生させる。INCR_PCは選択され
ないから、第1のマルチプレクサ74aの制御信号は無
関係である。
Iではないか、または関連DIが有効であれば、フェッ
チ制御回路38は、さらに、B2をチェックすることに
よって、ライトバック・ステージのCTIが実行される
かどうかを判断する(ステップ46)。ライトバック・
ステージのCTIが実行される場合、フェッチ制御回路
38は、さらに、B3を調べることによって、ライトバ
ック・ステージのCTIのターゲット命令がフェッチさ
れたかどうかを判断する(ステップ48)。ライトバッ
ク・ステージのCTIのターゲット命令がフェッチされ
なかった場合は、フェッチ制御回路38は、フェッチ・
アドレス生成回路40に対する制御信号を発生させ、ラ
イトバック・ステージのCTIのターゲット命令をフェ
ッチするべきであるということを指示する(ブロック4
9)。言い換えると、フェッチ・アドレス生成回路40
は、次のフェッチ・アドレス生成回路40の第2のマル
チプレクサ74bにWB_TGT_PCを選択させるた
めの制御信号を発生させる。INCR_PCは選択され
ないから、第1のマルチプレクサ74aの制御信号は無
関係である。
【0035】ステップ42で、ライトバック・ステージ
にCTIがないと判断されるか、ステップ46で、ライ
トバック・ステージのCTIは実行されないと判断され
るか、あるいはステップ48で、実行ステージのCTI
のターゲット命令がフェッチされると判断された場合
は、フェッチ制御回路38は、B4を調べることによっ
て、ライトバック・ステージにCTIがあるかどうかを
判断する(ステップ52)。CTIが実行ステージにあ
れば、フェッチ制御回路38は、さらに、B5を調べる
ことによって、CTIが遅延CTIであるかどうか、そ
してその関連DIが有効であるかどうかを判断する(ス
テップ54)。実行ステージのCTIが遅延CTIであ
り、かつ関連DIが有効でないと、フェッチ制御回路3
8は、フェッチ・アドレス生成回路40に対する制御信
号を発生させ、関連DIをフェッチするべきであるとい
うことを指示する(ブロック55)。言い換えると、フ
ェッチ・アドレス生成回路40は、次のフェッチ・アド
レス生成回路40の2つのマルチプレクサ74a、74
bに+4及びINCR_PCをそれぞれ選択させる制御
信号を発生させる。
にCTIがないと判断されるか、ステップ46で、ライ
トバック・ステージのCTIは実行されないと判断され
るか、あるいはステップ48で、実行ステージのCTI
のターゲット命令がフェッチされると判断された場合
は、フェッチ制御回路38は、B4を調べることによっ
て、ライトバック・ステージにCTIがあるかどうかを
判断する(ステップ52)。CTIが実行ステージにあ
れば、フェッチ制御回路38は、さらに、B5を調べる
ことによって、CTIが遅延CTIであるかどうか、そ
してその関連DIが有効であるかどうかを判断する(ス
テップ54)。実行ステージのCTIが遅延CTIであ
り、かつ関連DIが有効でないと、フェッチ制御回路3
8は、フェッチ・アドレス生成回路40に対する制御信
号を発生させ、関連DIをフェッチするべきであるとい
うことを指示する(ブロック55)。言い換えると、フ
ェッチ・アドレス生成回路40は、次のフェッチ・アド
レス生成回路40の2つのマルチプレクサ74a、74
bに+4及びINCR_PCをそれぞれ選択させる制御
信号を発生させる。
【0036】他方、ステップ54で、CTIが遅延CT
Iでないか、あるいは関連DIが有効であると、フェッ
チ制御回路38は、さらに、実行ステージのCTIが実
行されるかどうかを判断する(ステップ56)。実行ス
テージのCTIが実行された場合は、フェッチ制御回路
38は、さらに、実行ステージのCTIのターゲット命
令がフェッチされたかどうかを判断する(ステップ
5)。実行ステージのCTIのターゲット命令がフェッ
チされなかった場合は、フェッチ制御回路38は、フェ
ッチ・アドレス生成回路40に対する制御信号を発生さ
せ、実行ステージのCTIのターゲット命令をフェッチ
するべきであるということ指示する(ブロック59)。
言い換えると、フェッチ・アドレス生成回路40は、次
のフェッチ・アドレス生成回路40の第2のマルチプレ
クサ74bにEX_TGT_PCを選択させるための制
御信号を発生させる。
Iでないか、あるいは関連DIが有効であると、フェッ
チ制御回路38は、さらに、実行ステージのCTIが実
行されるかどうかを判断する(ステップ56)。実行ス
テージのCTIが実行された場合は、フェッチ制御回路
38は、さらに、実行ステージのCTIのターゲット命
令がフェッチされたかどうかを判断する(ステップ
5)。実行ステージのCTIのターゲット命令がフェッ
チされなかった場合は、フェッチ制御回路38は、フェ
ッチ・アドレス生成回路40に対する制御信号を発生さ
せ、実行ステージのCTIのターゲット命令をフェッチ
するべきであるということ指示する(ブロック59)。
言い換えると、フェッチ・アドレス生成回路40は、次
のフェッチ・アドレス生成回路40の第2のマルチプレ
クサ74bにEX_TGT_PCを選択させるための制
御信号を発生させる。
【0037】ステップ52で、実行ステージにCTIが
ないと判断されるか、ステップ56で、実行ステージの
CTIが実行されないと判断されるか、あるいは、ステ
ップ58で実行ステージのCTIのターゲット命令がフ
ェッチされると判断された場合、フェッチ制御回路38
は、さらに、デコード・ステージにCTIがあるかどう
かを判断する(ステップ62)。デコード・ステージに
CTIがないならば、フェッチ制御回路38は、フェッ
チ・アドレス生成回路40に対する制御信号を発生さ
せ、命令が順次ストリームに沿ってフェッチするべきで
あるということを指示する(ステップ63)。言い換え
ると、フェッチ・アドレス生成回路40は、次のフェッ
チ・アドレス生成回路40の2つのマルチプレクサ74
a、74bに、それぞれ、前回のフェッチに対してリタ
ーンされた有効な命令の数に応じて+4、+8、+1
2、または+16とINCR_PCを選択させるための
制御信号を発生させる。
ないと判断されるか、ステップ56で、実行ステージの
CTIが実行されないと判断されるか、あるいは、ステ
ップ58で実行ステージのCTIのターゲット命令がフ
ェッチされると判断された場合、フェッチ制御回路38
は、さらに、デコード・ステージにCTIがあるかどう
かを判断する(ステップ62)。デコード・ステージに
CTIがないならば、フェッチ制御回路38は、フェッ
チ・アドレス生成回路40に対する制御信号を発生さ
せ、命令が順次ストリームに沿ってフェッチするべきで
あるということを指示する(ステップ63)。言い換え
ると、フェッチ・アドレス生成回路40は、次のフェッ
チ・アドレス生成回路40の2つのマルチプレクサ74
a、74bに、それぞれ、前回のフェッチに対してリタ
ーンされた有効な命令の数に応じて+4、+8、+1
2、または+16とINCR_PCを選択させるための
制御信号を発生させる。
【0038】ステップ62で、CTIがデコード・ステ
ージにあると、フェッチ制御回路38は、さらに、CT
Iが遅延CTIであるかどうか、そしてその関連DIが
有効であるどうかを判断する(ステップ64)。CTI
が遅延CTIであり、関連DIが有効でない場合は、フ
ェッチ制御回路38は、フェッチ・アドレス生成回路4
0に対する制御信号を発生させ、関連DIをフェッチす
るべきであるということを指示する(ステップ65)。
言い換えると、フェッチ・アドレス生成回路40は、次
のフェッチ・アドレス生成回路40の2つのマルチプレ
クサ74a、74bにそれぞれ+4及びINCR_PC
を選択させるための制御信号を発生させる。
ージにあると、フェッチ制御回路38は、さらに、CT
Iが遅延CTIであるかどうか、そしてその関連DIが
有効であるどうかを判断する(ステップ64)。CTI
が遅延CTIであり、関連DIが有効でない場合は、フ
ェッチ制御回路38は、フェッチ・アドレス生成回路4
0に対する制御信号を発生させ、関連DIをフェッチす
るべきであるということを指示する(ステップ65)。
言い換えると、フェッチ・アドレス生成回路40は、次
のフェッチ・アドレス生成回路40の2つのマルチプレ
クサ74a、74bにそれぞれ+4及びINCR_PC
を選択させるための制御信号を発生させる。
【0039】ステップ64で、CTIが遅延CTIでは
ないか、または関連DIが有効である場合、フェッチ制
御回路38は、さらに、デコード・ステージのCTIの
目標アドレスが有効であるかどうかを判断する(ステッ
プ66)。目標アドレスが有効ではないならば、フェッ
チ制御回路38は、フェッチ・アドレス生成回路40に
対する制御信号を発生させ、命令をフェッチするべきで
はないということを指示する(ステップ67)。言い換
えると、フェッチ・アドレス生成回路40は、次のフェ
ッチ・アドレス生成回路40の第2のマルチプレクサ7
4bにSAVED_SEQ_PCを選択させための制御
信号を発生させる。
ないか、または関連DIが有効である場合、フェッチ制
御回路38は、さらに、デコード・ステージのCTIの
目標アドレスが有効であるかどうかを判断する(ステッ
プ66)。目標アドレスが有効ではないならば、フェッ
チ制御回路38は、フェッチ・アドレス生成回路40に
対する制御信号を発生させ、命令をフェッチするべきで
はないということを指示する(ステップ67)。言い換
えると、フェッチ・アドレス生成回路40は、次のフェ
ッチ・アドレス生成回路40の第2のマルチプレクサ7
4bにSAVED_SEQ_PCを選択させための制御
信号を発生させる。
【0040】ステップ66で、デコード・ステージのC
TIの目標アドレスが有効ならば、フェッチ制御回路3
8は、さらに、デコード・ステージのCTIのターゲッ
ト命令がフェッチされたかどうかを判断する(ステップ
68)。実行ステージのCTIのターゲット命令がフェ
ッチされなかった場合は、フェッチ制御回路38は、フ
ェッチ・アドレス生成回路40に対する制御信号を発生
させ、デコード・ステージのCTIのターゲット命令を
フェッチするべきであるということを指示する(ステッ
プ69a)。言い換えると、フェッチ・アドレス生成回
路40は、次のフェッチ・アドレス生成回路40の第2
のマルチプレクサ74bにDEC_TGT_PCを選択
させるための制御信号を発生させる。
TIの目標アドレスが有効ならば、フェッチ制御回路3
8は、さらに、デコード・ステージのCTIのターゲッ
ト命令がフェッチされたかどうかを判断する(ステップ
68)。実行ステージのCTIのターゲット命令がフェ
ッチされなかった場合は、フェッチ制御回路38は、フ
ェッチ・アドレス生成回路40に対する制御信号を発生
させ、デコード・ステージのCTIのターゲット命令を
フェッチするべきであるということを指示する(ステッ
プ69a)。言い換えると、フェッチ・アドレス生成回
路40は、次のフェッチ・アドレス生成回路40の第2
のマルチプレクサ74bにDEC_TGT_PCを選択
させるための制御信号を発生させる。
【0041】実行ステージのCTIのターゲット命令が
フェッチされた場合、フェッチ制御回路38は、フェッ
チ・アドレス生成回路40に対する制御信号を発生さ
せ、命令をフェッチするべきではないということを指示
する(ステップ69b)。言い換えると、フェッチ・ア
ドレス生成回路40は、次のフェッチ・アドレス生成回
路40の第2のマルチプレクサ74bにSAVED_F
ETCH_PCを選択させるするための制御信号を発生
させる。
フェッチされた場合、フェッチ制御回路38は、フェッ
チ・アドレス生成回路40に対する制御信号を発生さ
せ、命令をフェッチするべきではないということを指示
する(ステップ69b)。言い換えると、フェッチ・ア
ドレス生成回路40は、次のフェッチ・アドレス生成回
路40の第2のマルチプレクサ74bにSAVED_F
ETCH_PCを選択させるするための制御信号を発生
させる。
【0042】以上、本発明を様々な実施の形態によって
説明したが、当業者ならば、本発明が本願で説明したこ
れらの実施の形態に限定されるものではないということ
は理解できよう。特に、本発明は、グループ化規則によ
ってCTIを必ず1グループ当たり(従って1パイプラ
イン・ステージ当たり)最大1つとして実施の形態によ
って説明したが、記憶回路36、フェッチ制御回路38
及びフェッチ・アドレス生成回路40を全ての順列の状
態情報をトラックし、かつこれらの状態情報に対応する
よう相応に調整するならば、本発明は、1グループにつ
き2つ以上のCTIの場合でも実施可能であるというこ
とは理解できよう。従って、本発明の方法及び装置は、
特許請求の範囲に記載する本発明の要旨及び範囲を逸脱
することなく、様々な修正態様及び変更態様によって実
施することが可能である。ゆえに、上記説明は、例示説
明を目的とするものであり、本発明に対して何らかの制
限的な意味を有するものではない。
説明したが、当業者ならば、本発明が本願で説明したこ
れらの実施の形態に限定されるものではないということ
は理解できよう。特に、本発明は、グループ化規則によ
ってCTIを必ず1グループ当たり(従って1パイプラ
イン・ステージ当たり)最大1つとして実施の形態によ
って説明したが、記憶回路36、フェッチ制御回路38
及びフェッチ・アドレス生成回路40を全ての順列の状
態情報をトラックし、かつこれらの状態情報に対応する
よう相応に調整するならば、本発明は、1グループにつ
き2つ以上のCTIの場合でも実施可能であるというこ
とは理解できよう。従って、本発明の方法及び装置は、
特許請求の範囲に記載する本発明の要旨及び範囲を逸脱
することなく、様々な修正態様及び変更態様によって実
施することが可能である。ゆえに、上記説明は、例示説
明を目的とするものであり、本発明に対して何らかの制
限的な意味を有するものではない。
【図1】 本発明の開示技術を組み込んだパイプライン
型コンピュータシステムの一例を示すブロック図であ
る。
型コンピュータシステムの一例を示すブロック図であ
る。
【図2】 図1のコンピュータシステムのパイプライン
・ステージを示す説明図である。
・ステージを示す説明図である。
【図3】 図1のコンピュータシステムで使用する命令
先取り及びディスパッチ装置の一実施の形態の主要部を
詳細に示すブロック図である。
先取り及びディスパッチ装置の一実施の形態の主要部を
詳細に示すブロック図である。
【図4】 本発明の先取りプログラムカウンタ生成回路
の一実施の形態の主要部を示すブロック図である。
の一実施の形態の主要部を示すブロック図である。
【図5】 図4の状態記憶回路の内容を示す説明図であ
る。
る。
【図6】 図4のフェッチPC生成回路の一実施の形態
の主要部をより詳細に示すブロック図である。
の主要部をより詳細に示すブロック図である。
【図7】 図4のフェッチ制御回路の動作の流れを示す
フローチャートである。
フローチャートである。
12 命令先取り及びディスパッチ装置、14 実行装
置及びレジスタファイル、16 命令キャッシュ、18
メモリ管理装置、20 データキャッシュ、22 バ
スインタフェース装置。
置及びレジスタファイル、16 命令キャッシュ、18
メモリ管理装置、20 データキャッシュ、22 バ
スインタフェース装置。
Claims (3)
- 【請求項1】 a)パイプライン型コンピュータシステ
ムのディスパッチ及び実行回路に接続されていて、その
パイプライン型コンピュータシステムの様々なパイプラ
イン・ステージのディスパッチされた制御転送命令の状
態情報を受け取り、記憶するための記憶回路と、 b)上記記憶回路及び上記実行回路に接続されていて、
上記により記憶された状態情報に基づいて命令先取りの
ための新しい先取りプログラムカウンタ値を制御し、生
成する制御及び生成回路と、を具備した装置。 - 【請求項2】 a)パイプライン型コンピュータシステ
ムの様々なパイプライン・ステージのディスパッチされ
た制御転送命令の状態情報を記憶するステップと、 上記により記憶された状態情報に基づいて、命令先取り
のための新しい先取りプログラムカウンタ値を制御し、
生成するステップと、を具備した方法。 - 【請求項3】 a)パイプライン型コンピュータシステ
ムの実行回路に接続されたそのパイプライン型コンピュ
ータシステムの様々なパイプライン・ステージのディス
パッチされた制御転送命令の状態情報を受け取り、記憶
するための記憶回路を設けるステップと、 b)上記記憶回路及び上記実行回路に接続されていて、
上記により記憶された状態情報に基づいて命令先取りの
ための新しい先取りプログラムカウンタ値を制御し、生
成するための制御及び生成回路を設けるステップと、を
具備した命令先取り速度が改善された先取り及びディス
パッチ装置を得るための方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US28309794A | 1994-07-29 | 1994-07-29 | |
US283097 | 1994-07-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH08171491A true JPH08171491A (ja) | 1996-07-02 |
Family
ID=23084504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7212989A Pending JPH08171491A (ja) | 1994-07-29 | 1995-07-31 | ディスパッチされた制御転送命令状態に基づきより高速で命令を先取りするための方法及び装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5799164A (ja) |
JP (1) | JPH08171491A (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6314431B1 (en) * | 1999-09-02 | 2001-11-06 | Hewlett-Packard Company | Method, system, and apparatus to improve instruction pre-fetching on computer systems |
US6973542B1 (en) * | 2000-07-18 | 2005-12-06 | International Business Machines Corporation | Detecting when to prefetch inodes and then prefetching inodes in parallel |
US7634644B2 (en) * | 2006-03-13 | 2009-12-15 | Sun Microsystems, Inc. | Effective elimination of delay slot handling from a front section of a processor pipeline |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4742451A (en) * | 1984-05-21 | 1988-05-03 | Digital Equipment Corporation | Instruction prefetch system for conditional branch instruction for central processor unit |
US5442756A (en) * | 1992-07-31 | 1995-08-15 | Intel Corporation | Branch prediction and resolution apparatus for a superscalar computer processor |
US5454117A (en) * | 1993-08-25 | 1995-09-26 | Nexgen, Inc. | Configurable branch prediction for a processor performing speculative execution |
JPH07281893A (ja) * | 1994-04-15 | 1995-10-27 | Internatl Business Mach Corp <Ibm> | 処理システム及び演算方法 |
US5530825A (en) * | 1994-04-15 | 1996-06-25 | Motorola, Inc. | Data processor with branch target address cache and method of operation |
-
1995
- 1995-07-31 JP JP7212989A patent/JPH08171491A/ja active Pending
-
1997
- 1997-03-20 US US08/821,268 patent/US5799164A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5799164A (en) | 1998-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7827388B2 (en) | Apparatus for adjusting instruction thread priority in a multi-thread processor | |
US8145885B2 (en) | Apparatus for randomizing instruction thread interleaving in a multi-thread processor | |
US7725684B2 (en) | Speculative instruction issue in a simultaneously multithreaded processor | |
JP4829541B2 (ja) | マルチレベル・レジスタ・ファイルを有するディジタル・データ処理装置 | |
EP0689131B1 (en) | A computer system for executing branch instructions | |
US6687812B1 (en) | Parallel processing apparatus | |
JP3242508B2 (ja) | マイクロコンピュータ | |
JP2004171177A (ja) | キャッシュシステムおよびキャッシュメモリ制御装置 | |
JP4086808B2 (ja) | マルチスレッド・プロセッサにおいて処理する命令スレッドを選択するための方法および装置 | |
JPH06208463A (ja) | 命令をその少なくとも1つの実行装置へ迅速にディスパッチする方法および装置 | |
JP2004518183A (ja) | マルチスレッド・システムにおける命令のフェッチとディスパッチ | |
EP2159691B1 (en) | Simultaneous multithreaded instruction completion controller | |
JP3304444B2 (ja) | ベクトル処理装置 | |
JP3779012B2 (ja) | 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法 | |
JP2004145454A (ja) | 情報処理装置及び情報処理方法 | |
JP2004038256A (ja) | プログラムカウンタ制御方法及びプロセッサ | |
JP4613168B2 (ja) | 命令整列の方法および装置 | |
JPH08171491A (ja) | ディスパッチされた制御転送命令状態に基づきより高速で命令を先取りするための方法及び装置 | |
JP3602801B2 (ja) | メモリデータアクセス構造およびその方法 | |
US7472264B2 (en) | Predicting a jump target based on a program counter and state information for a process | |
US5895497A (en) | Microprocessor with pipelining, memory size evaluation, micro-op code and tags | |
JPH08286913A (ja) | パイプライン・プロセッサにおいて次に完了すべき命令のアドレスを生成する方法および装置 | |
KR100376639B1 (ko) | 프로세서에서 사용하기에 적합한 메모리 데이터 액세스구조 및 방법 | |
JP3493110B2 (ja) | 高速分岐処理装置 | |
JPH10283185A (ja) | プロセッサ |