JPH0844561A - ブースティング制御方法及びブースティング制御機構を備えたプロセッサ装置 - Google Patents
ブースティング制御方法及びブースティング制御機構を備えたプロセッサ装置Info
- Publication number
- JPH0844561A JPH0844561A JP6176261A JP17626194A JPH0844561A JP H0844561 A JPH0844561 A JP H0844561A JP 6176261 A JP6176261 A JP 6176261A JP 17626194 A JP17626194 A JP 17626194A JP H0844561 A JPH0844561 A JP H0844561A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- boosting
- boosted
- executed
- 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.)
- Withdrawn
Links
Classifications
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
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)【要約】
【目的】 パイプラインプロセッサ装置において、通常
の命令コードの種類などに対する制限を最小限に抑えつ
つ、ブースティング制御を可能とすることを目的とす
る。 【構成】 命令列実行手段104は、ブーストされた命
令101とその位置を示すブースティング制御命令10
2が挿入された命令列103を実行する。命令実行状態
制御手段106は、命令列103の実行時に、命令列1
03中の分岐命令105の実行結果に基づいて、分岐命
令105より前に実行されているブースティング制御命
令102によって示され分岐命令105より前に命令列
実行手段104により実行されているブーストされた命
令101の実行状態を制御する。
の命令コードの種類などに対する制限を最小限に抑えつ
つ、ブースティング制御を可能とすることを目的とす
る。 【構成】 命令列実行手段104は、ブーストされた命
令101とその位置を示すブースティング制御命令10
2が挿入された命令列103を実行する。命令実行状態
制御手段106は、命令列103の実行時に、命令列1
03中の分岐命令105の実行結果に基づいて、分岐命
令105より前に実行されているブースティング制御命
令102によって示され分岐命令105より前に命令列
実行手段104により実行されているブーストされた命
令101の実行状態を制御する。
Description
【0001】
【産業上の利用分野】本発明は、パイプラインプロセッ
サ装置におけるブースティング制御技術に関する。
サ装置におけるブースティング制御技術に関する。
【0002】
【従来の技術】コンピュータシステムにおいて命令が高
速に実行されるためには、プロセッサの命令パイプライ
ンにおける命令の空き状態ができる限り少なくなるよう
に、また、命令パイプラインがストールしないように、
制御する必要がある。特に、VLIWやスーパースカラ
プロセッサにおいては、複数の操作を同時に実行できる
ようにハードウエアが用意されている。このため、これ
らのハードウエアが効率良く使用されるように、実行さ
れる操作がプロセッサに供給される必要がある。このよ
うな要求を満足させるために、そのプロセッサのための
実行コードを生成するコンパイラは、対象であるソフト
ウエアにおけるデータの依存性などを解析し、その解析
結果に基づいてそのソフトウエアの意味を変えない範囲
で操作の順序を入れ換えるなどすることにより、実行コ
ードの最適化を行っていた。
速に実行されるためには、プロセッサの命令パイプライ
ンにおける命令の空き状態ができる限り少なくなるよう
に、また、命令パイプラインがストールしないように、
制御する必要がある。特に、VLIWやスーパースカラ
プロセッサにおいては、複数の操作を同時に実行できる
ようにハードウエアが用意されている。このため、これ
らのハードウエアが効率良く使用されるように、実行さ
れる操作がプロセッサに供給される必要がある。このよ
うな要求を満足させるために、そのプロセッサのための
実行コードを生成するコンパイラは、対象であるソフト
ウエアにおけるデータの依存性などを解析し、その解析
結果に基づいてそのソフトウエアの意味を変えない範囲
で操作の順序を入れ換えるなどすることにより、実行コ
ードの最適化を行っていた。
【0003】ここで、ハードウエアの使用効率を更に高
めるための技術として、ブースティングと呼ばれる技術
が用いられている。この技術について、以下に説明す
る。図14は、パイプラインプロセッサが実行する基本
的なパイプライン処理の説明図である。命令サイクル毎
に、命令A〜Dに対応する各実行ステージが、特には図
示しない命令フェッチユニット、レジスタ読出しユニッ
ト、算術論理演算ユニット(ALU)、メモリアクセス
ユニット、及びレジスタ書込みユニットにおいて、並列
に実行される様子が示されている。
めるための技術として、ブースティングと呼ばれる技術
が用いられている。この技術について、以下に説明す
る。図14は、パイプラインプロセッサが実行する基本
的なパイプライン処理の説明図である。命令サイクル毎
に、命令A〜Dに対応する各実行ステージが、特には図
示しない命令フェッチユニット、レジスタ読出しユニッ
ト、算術論理演算ユニット(ALU)、メモリアクセス
ユニット、及びレジスタ書込みユニットにおいて、並列
に実行される様子が示されている。
【0004】命令サイクル1においては、命令Aに対す
る命令フェッチステージ(以下、Fステージと呼ぶ)
が、命令フェッチユニットにおいて実行される。命令サ
イクル2においては、命令Aに対するレジスタ読出しス
テージ(以下、Rステージと呼ぶ)が、レジスタ読出し
ユニットにおいて実行されると共に、命令Aに続く命令
Bに対するFステージが、命令フェッチユニットにおい
て実行される。
る命令フェッチステージ(以下、Fステージと呼ぶ)
が、命令フェッチユニットにおいて実行される。命令サ
イクル2においては、命令Aに対するレジスタ読出しス
テージ(以下、Rステージと呼ぶ)が、レジスタ読出し
ユニットにおいて実行されると共に、命令Aに続く命令
Bに対するFステージが、命令フェッチユニットにおい
て実行される。
【0005】命令サイクル3においては、命令Aに対す
る算術論理演算ステージ(以下、Aステージと呼ぶ)
が、算術論理演算ユニットにおいて実行されると共に、
命令Bに対するRステージがレジスタ読出しユニットに
おいて実行され、命令Bに続く命令Cに対するFステー
ジが、命令フェッチユニットにおいて実行される。
る算術論理演算ステージ(以下、Aステージと呼ぶ)
が、算術論理演算ユニットにおいて実行されると共に、
命令Bに対するRステージがレジスタ読出しユニットに
おいて実行され、命令Bに続く命令Cに対するFステー
ジが、命令フェッチユニットにおいて実行される。
【0006】命令サイクル4においては、命令Aに対す
るメモリアクセスステージ(以下、Mステージと呼ぶ)
が、メモリアクセスユニットにおいて実行されると共
に、命令Bに対するAステージが、算術論理演算ユニッ
トにおいて実行され、命令Cに対するRステージがレジ
スタ読出しユニットにおいて実行され、命令Cに続く命
令Dに対するFステージが、命令フェッチユニットにお
いて実行される。
るメモリアクセスステージ(以下、Mステージと呼ぶ)
が、メモリアクセスユニットにおいて実行されると共
に、命令Bに対するAステージが、算術論理演算ユニッ
トにおいて実行され、命令Cに対するRステージがレジ
スタ読出しユニットにおいて実行され、命令Cに続く命
令Dに対するFステージが、命令フェッチユニットにお
いて実行される。
【0007】命令サイクル5においては、命令Aに対す
るレジスタ書込みステージ(以下、Wステージと呼ぶ)
が、レジスタ書込みユニットにおいて実行されると共
に、命令Bに対するMステージが、メモリアクセスユニ
ットにおいて実行され、命令Cに対するAステージが、
算術論理演算ユニットにおいて実行され、命令Dに対す
るRステージがレジスタ読出しユニットにおいて実行さ
れ、更に、特には図示しないが、命令Dに続く命令Eに
対するFステージが、命令フェッチユニットにおいて実
行される。
るレジスタ書込みステージ(以下、Wステージと呼ぶ)
が、レジスタ書込みユニットにおいて実行されると共
に、命令Bに対するMステージが、メモリアクセスユニ
ットにおいて実行され、命令Cに対するAステージが、
算術論理演算ユニットにおいて実行され、命令Dに対す
るRステージがレジスタ読出しユニットにおいて実行さ
れ、更に、特には図示しないが、命令Dに続く命令Eに
対するFステージが、命令フェッチユニットにおいて実
行される。
【0008】上述の、Fステージ、Rステージ、Aステ
ージ、Mステージ、及びWステージの5ステージからな
るパイプライン処理において、それぞれの命令に対応す
る演算結果は、その命令に対するWステージの終了後に
使用可能になり、また、分岐命令によって指定される分
岐条件は、Rステージで判定されるとする。
ージ、Mステージ、及びWステージの5ステージからな
るパイプライン処理において、それぞれの命令に対応す
る演算結果は、その命令に対するWステージの終了後に
使用可能になり、また、分岐命令によって指定される分
岐条件は、Rステージで判定されるとする。
【0009】ここで、例えば、図15の例1として示さ
れる命令列が実行される場合を考える。この例におい
て、分岐命令 br r2,0,L1 の分岐条件を判定するた
めには、レジスタr2の値を演算する演算命令 add r2,
r3,r4 の演算結果が必要である。このため、図16に示
されるように、分岐命令に対するRステージの実行は上
記演算命令に対するWステージが終了するまで待たさ
れ、この結果、パイプライン処理に空き(命令が実行さ
れないタイミング)が生じる。図16において、無演算
命令 nop は、ハードウエアが備えるインターロック機
構によって実行時に命令列に挿入され、或いは、コンパ
イラによってコンパイル時に命令列に挿入される。
れる命令列が実行される場合を考える。この例におい
て、分岐命令 br r2,0,L1 の分岐条件を判定するた
めには、レジスタr2の値を演算する演算命令 add r2,
r3,r4 の演算結果が必要である。このため、図16に示
されるように、分岐命令に対するRステージの実行は上
記演算命令に対するWステージが終了するまで待たさ
れ、この結果、パイプライン処理に空き(命令が実行さ
れないタイミング)が生じる。図16において、無演算
命令 nop は、ハードウエアが備えるインターロック機
構によって実行時に命令列に挿入され、或いは、コンパ
イラによってコンパイル時に命令列に挿入される。
【0010】図16に示される状態では、nop 命令が挿
入される結果、パイプライン処理全体の実行速度が低下
してしまう。そこで、コンパイラが分岐先の命令を分岐
命令の上に移動させることにより、分岐命令の実行を待
たずにその分岐先の命令が実行されるようにし、分岐命
令の実行の結果判定された分岐条件が成立(taken )し
た場合は先に実行された分岐先の命令の実行結果を有効
とし、その分岐条件が成立しなかった(not taken )場
合は先に実行された分岐先の命令の実行結果をキャンセ
ルするような命令実行方法が知られている。この命令実
行方法は、ブースティングと呼ばれている。このよう
に、本来は実行されるか否かがわからない状態で仮に実
行され、その後の分岐命令の実行の結果判定された分岐
条件によってその仮の実行の有効/無効が決定されるよ
うな命令は、ブーストされた命令と呼ばれる。ブースト
される命令は、コンパイラによって、プログラムに対す
る解析結果や統計情報の収集結果に基づいて検出され、
実行コードに反映される。
入される結果、パイプライン処理全体の実行速度が低下
してしまう。そこで、コンパイラが分岐先の命令を分岐
命令の上に移動させることにより、分岐命令の実行を待
たずにその分岐先の命令が実行されるようにし、分岐命
令の実行の結果判定された分岐条件が成立(taken )し
た場合は先に実行された分岐先の命令の実行結果を有効
とし、その分岐条件が成立しなかった(not taken )場
合は先に実行された分岐先の命令の実行結果をキャンセ
ルするような命令実行方法が知られている。この命令実
行方法は、ブースティングと呼ばれている。このよう
に、本来は実行されるか否かがわからない状態で仮に実
行され、その後の分岐命令の実行の結果判定された分岐
条件によってその仮の実行の有効/無効が決定されるよ
うな命令は、ブーストされた命令と呼ばれる。ブースト
される命令は、コンパイラによって、プログラムに対す
る解析結果や統計情報の収集結果に基づいて検出され、
実行コードに反映される。
【0011】図17に、図16に示される命令列の例1
に対応する、 taken側からブーストされた命令を含む命
令列を示す。演算命令 add r2,r5,r6 は、ブーストさ
れることにより、分岐命令 br r2,0,L1 より先に演
算命令 add.b r2,r5,r6 として実行される。この結
果、実行される命令列に含まれるnop 命令を減らすこと
ができることが理解される。
に対応する、 taken側からブーストされた命令を含む命
令列を示す。演算命令 add r2,r5,r6 は、ブーストさ
れることにより、分岐命令 br r2,0,L1 より先に演
算命令 add.b r2,r5,r6 として実行される。この結
果、実行される命令列に含まれるnop 命令を減らすこと
ができることが理解される。
【0012】なお、分岐命令 br r2,0,L1 より先に
演算命令add.b r2,r5,r6 のAステージが実行された時
点では、その実行の結果得られるレジスタr2に書き込ま
れるべき値は、算術論理演算ユニット内で一時的に保持
され、レジスタr2へはまだ書き込まれない。その値は、
上記演算命令のWステージが実行される時点でレジスタ
r2へ書き込まれる。従って、上記演算命令のWステージ
が実行される前に、分岐命令 br r2,0,L1 のRステ
ージが実行されれば、本来はその分岐命令の後に実行さ
れるべき上記演算命令によってレジスタr2の内容が書き
換えられてしまいことはない。
演算命令add.b r2,r5,r6 のAステージが実行された時
点では、その実行の結果得られるレジスタr2に書き込ま
れるべき値は、算術論理演算ユニット内で一時的に保持
され、レジスタr2へはまだ書き込まれない。その値は、
上記演算命令のWステージが実行される時点でレジスタ
r2へ書き込まれる。従って、上記演算命令のWステージ
が実行される前に、分岐命令 br r2,0,L1 のRステ
ージが実行されれば、本来はその分岐命令の後に実行さ
れるべき上記演算命令によってレジスタr2の内容が書き
換えられてしまいことはない。
【0013】スーパーパイプラインのようにパイプライ
ンのステージ数が多い場合や、VLIW又はスーパース
カラプロセッサのように複数の操作を同時に実行できる
場合は、演算結果が使用可能になってから分岐条件が判
定されるまでに多くの命令が実行可能となる場合がある
ため、ブースティングの手法は一層効果的に働く。
ンのステージ数が多い場合や、VLIW又はスーパース
カラプロセッサのように複数の操作を同時に実行できる
場合は、演算結果が使用可能になってから分岐条件が判
定されるまでに多くの命令が実行可能となる場合がある
ため、ブースティングの手法は一層効果的に働く。
【0014】ブーストされる命令は、コンパイラによっ
て、プログラムに対する解析結果や統計情報の収集結果
に基づいて検出される。この結果、ブーストされる命令
は、分岐条件が成立(taken )した場合に実行されるべ
き分岐先の命令(taken 側の命令)ではなく、その分岐
条件が成立しなかった(not taken )場合に実行される
べき分岐命令に続く命令(not taken 側の命令)である
場合がある。例えば、図18の例2として示される命令
列が実行される場合において、図19に示されるよう
に、not taken 側の演算命令 add r3,r5,r6 は、ブー
ストされることにより、分岐命令 br r2,0,L1 より
先に演算命令 add.bn r3,r5,r6 として実行される。
て、プログラムに対する解析結果や統計情報の収集結果
に基づいて検出される。この結果、ブーストされる命令
は、分岐条件が成立(taken )した場合に実行されるべ
き分岐先の命令(taken 側の命令)ではなく、その分岐
条件が成立しなかった(not taken )場合に実行される
べき分岐命令に続く命令(not taken 側の命令)である
場合がある。例えば、図18の例2として示される命令
列が実行される場合において、図19に示されるよう
に、not taken 側の演算命令 add r3,r5,r6 は、ブー
ストされることにより、分岐命令 br r2,0,L1 より
先に演算命令 add.bn r3,r5,r6 として実行される。
【0015】また、コンパイラの解析結果によっては、
taken 側の命令とnot taken 側の命令のどちらもブース
トされる場合もある。例えば、図20の例3として示さ
れる命令列が実行される場合に、図21に示されるよう
に、not taken 側の演算命令add r3,r5,r6 とtaken
側の演算命令 add r4,r7,r8 は、それぞれブーストさ
れることにより、分岐命令 br r2,0,L1 よりも先に
それぞれ演算命令 add.bn r3,r5,r6 及びadd.b r4,r
7,r8 として実行される。
taken 側の命令とnot taken 側の命令のどちらもブース
トされる場合もある。例えば、図20の例3として示さ
れる命令列が実行される場合に、図21に示されるよう
に、not taken 側の演算命令add r3,r5,r6 とtaken
側の演算命令 add r4,r7,r8 は、それぞれブーストさ
れることにより、分岐命令 br r2,0,L1 よりも先に
それぞれ演算命令 add.bn r3,r5,r6 及びadd.b r4,r
7,r8 として実行される。
【0016】更に、コンパイラの解析結果によっては、
複数の分岐命令を超えて命令がブーストされる場合もあ
る。例えば、図22の例4として示される命令列が実行
される場合に、図23に示されるように、第1番目の分
岐命令br r2,0,L1 に対応するtaken 側の演算命令 a
dd r3,r5,r6 は、ブーストされることにより、第1番
目の分岐命令より先に演算命令 add.b r3,r5,r6 とし
て実行される。また、第2番目の分岐命令 br r3,0,
L2 に対応するtaken 側の演算命令 add r4,r7,r8
は、ブーストされることにより、第2番目と第1番目の
分岐命令を超えて第1番目の分岐命令より先に演算命令
add.b2 r4,r7,r8 として実行される。
複数の分岐命令を超えて命令がブーストされる場合もあ
る。例えば、図22の例4として示される命令列が実行
される場合に、図23に示されるように、第1番目の分
岐命令br r2,0,L1 に対応するtaken 側の演算命令 a
dd r3,r5,r6 は、ブーストされることにより、第1番
目の分岐命令より先に演算命令 add.b r3,r5,r6 とし
て実行される。また、第2番目の分岐命令 br r3,0,
L2 に対応するtaken 側の演算命令 add r4,r7,r8
は、ブーストされることにより、第2番目と第1番目の
分岐命令を超えて第1番目の分岐命令より先に演算命令
add.b2 r4,r7,r8 として実行される。
【0017】
【発明が解決しようとする課題】しかし、図17、図1
9、図21、及び図23として示した従来のブースティ
ング方法においては、ブーストされた命令を実行コード
の中で明示的に示すために、通常の命令コードとは別に
ブーストされた命令を示す命令コードが必要となる。
9、図21、及び図23として示した従来のブースティ
ング方法においては、ブーストされた命令を実行コード
の中で明示的に示すために、通常の命令コードとは別に
ブーストされた命令を示す命令コードが必要となる。
【0018】例えば、図17の例では、命令コード ad
d.b が、通常の命令コード add に対応する、taken
側からブーストされた命令コードである。また、図19
の例では、not taken 側からブーストされたことを示す
命令コードとして、add.bn が使用されている。図21
の例においては、taken 側からブーストされた命令コー
ド add.b と、not taken 側からブーストされたことを
示す命令コード add.bnの両方が使用されている。更
に、図23の例においては、複数の分岐命令を超えてブ
ーストされたことを示す命令コード add.b2 も使用され
ている。
d.b が、通常の命令コード add に対応する、taken
側からブーストされた命令コードである。また、図19
の例では、not taken 側からブーストされたことを示す
命令コードとして、add.bn が使用されている。図21
の例においては、taken 側からブーストされた命令コー
ド add.b と、not taken 側からブーストされたことを
示す命令コード add.bnの両方が使用されている。更
に、図23の例においては、複数の分岐命令を超えてブ
ーストされたことを示す命令コード add.b2 も使用され
ている。
【0019】以上のように、従来は、通常の命令コード
とは別にブーストされた命令を示す命令コードが必要と
なり、しかも、そのような命令コードは、通常の命令コ
ードのそれぞれの種類に対応して必要となる。しかし、
プロセッサにおいて実行可能な命令コードの種類は、そ
のプロセッサにおいて規定されている命令フォーマット
によって制限されている。このため、上述した従来のブ
ースティング方法においては、ブーストされた命令を示
す命令コードを確保できない可能性があるという問題点
を有している。特に、既存の命令コードとの互換性を維
持した状態でブーストされた命令を示す命令コードを確
保するのは、更に困難である。逆に、ブーストされた命
令を示す命令コードの確保を優先させた場合には、既存
の命令コードの種類が制限されしまう。
とは別にブーストされた命令を示す命令コードが必要と
なり、しかも、そのような命令コードは、通常の命令コ
ードのそれぞれの種類に対応して必要となる。しかし、
プロセッサにおいて実行可能な命令コードの種類は、そ
のプロセッサにおいて規定されている命令フォーマット
によって制限されている。このため、上述した従来のブ
ースティング方法においては、ブーストされた命令を示
す命令コードを確保できない可能性があるという問題点
を有している。特に、既存の命令コードとの互換性を維
持した状態でブーストされた命令を示す命令コードを確
保するのは、更に困難である。逆に、ブーストされた命
令を示す命令コードの確保を優先させた場合には、既存
の命令コードの種類が制限されしまう。
【0020】本発明の目的は、通常の命令コードの種類
などに対する制限を最小限に抑えつつ、ブースティング
制御を可能とすることを目的とする。
などに対する制限を最小限に抑えつつ、ブースティング
制御を可能とすることを目的とする。
【0021】
【課題を解決するための手段】図1は、本発明のブロッ
ク図である。本発明は、分岐命令の実行を待たずにその
分岐命令が実行された結果実行されるべき命令の実行タ
イミングがブーストされた命令列を実行するブースティ
ング制御機構を備えたプロセッサ装置を前提とする。
ク図である。本発明は、分岐命令の実行を待たずにその
分岐命令が実行された結果実行されるべき命令の実行タ
イミングがブーストされた命令列を実行するブースティ
ング制御機構を備えたプロセッサ装置を前提とする。
【0022】命令列実行手段104は、ブーストされた
命令101とそのブーストされた命令101の位置を示
すブースティング制御命令102が挿入された命令列1
03を実行する。このブースティング制御命令102
は、例えば、分岐命令の分岐条件が成立した場合に実行
されるべき命令がブーストされた位置を示す第1のブー
スティング命令を含む。また、ブースティング制御命令
102は、例えば、分岐命令の分岐条件が成立しなかっ
た場合に実行されるべき命令がブーストされた位置を示
す第2のブースティング命令を含む。更に、ブースティ
ング制御命令102は、例えば、上述の第1又は第2の
ブースティング命令のほかに、直前に第1のブースティ
ング命令が指定されている場合にその第1のブースティ
ング命令に対応する分岐命令と同じ分岐命令の分岐条件
が成立しなかった場合に実行されるべき命令がブースト
された位置を示し、直前に第2のブースティング命令が
指定されている場合にその第2のブースティング命令に
対応する分岐命令と同じ分岐命令の分岐条件が成立した
場合に実行されるべき命令がブーストされた位置を示す
リバース命令を含む。この場合に、命令列中の1つの基
本ブロックにおいて第1又は第2のブースティング命令
が複数用いられた場合は、その基本ブロック内の第n番
目の第1又は第2のブースティング命令はn個の分岐命
令を超えてブーストされた命令の位置を示すように規定
することができる。また、ブースティング制御命令10
2は、例えば、n個の分岐命令を超えてブーストされた
命令の位置を示す第3のブースティング命令を含むよう
に構成できる。
命令101とそのブーストされた命令101の位置を示
すブースティング制御命令102が挿入された命令列1
03を実行する。このブースティング制御命令102
は、例えば、分岐命令の分岐条件が成立した場合に実行
されるべき命令がブーストされた位置を示す第1のブー
スティング命令を含む。また、ブースティング制御命令
102は、例えば、分岐命令の分岐条件が成立しなかっ
た場合に実行されるべき命令がブーストされた位置を示
す第2のブースティング命令を含む。更に、ブースティ
ング制御命令102は、例えば、上述の第1又は第2の
ブースティング命令のほかに、直前に第1のブースティ
ング命令が指定されている場合にその第1のブースティ
ング命令に対応する分岐命令と同じ分岐命令の分岐条件
が成立しなかった場合に実行されるべき命令がブースト
された位置を示し、直前に第2のブースティング命令が
指定されている場合にその第2のブースティング命令に
対応する分岐命令と同じ分岐命令の分岐条件が成立した
場合に実行されるべき命令がブーストされた位置を示す
リバース命令を含む。この場合に、命令列中の1つの基
本ブロックにおいて第1又は第2のブースティング命令
が複数用いられた場合は、その基本ブロック内の第n番
目の第1又は第2のブースティング命令はn個の分岐命
令を超えてブーストされた命令の位置を示すように規定
することができる。また、ブースティング制御命令10
2は、例えば、n個の分岐命令を超えてブーストされた
命令の位置を示す第3のブースティング命令を含むよう
に構成できる。
【0023】次に、命令実行状態制御手段106は、命
令列実行手段104による命令列103の実行時に、そ
の命令列103中の分岐命令105の実行結果に基づい
て、分岐命令105より前に実行されているブースティ
ング制御命令102によって示され分岐命令105より
前に命令列実行手段104によって実行されているブー
ストされた命令101の実行状態を制御する。この命令
実行状態制御手段106は、例えば、命令列中の分岐命
令の分岐条件が成立した場合に、分岐命令より前に実行
されている第1のブースティング命令によって示され分
岐命令より前に実行されているブーストされた命令の実
行を有効とし、命令列中の分岐命令の分岐条件が成立し
なかった場合に、分岐命令より前に実行されている第1
のブースティング命令によって示され分岐命令より前に
実行されているブーストされた命令の実行をキャンセル
する。また、命令実行状態制御手段106は、例えば、
命令列中の分岐命令の分岐条件が成立しなかった場合
に、分岐命令より前に実行されている第2のブースティ
ング命令によって示され分岐命令より前に実行されてい
るブーストされた命令の実行を有効とし、命令列中の分
岐命令の分岐条件が成立した場合に、分岐命令より前に
実行されている第2のブースティング命令によって示さ
れ分岐命令より前に実行されているブーストされた命令
の実行をキャンセルする。更に、命令実行状態制御手段
106は、例えば、命令列中の分岐命令の分岐条件が成
立した場合であって分岐命令より前に第2のブースティ
ング命令が実行されている場合、又は分岐命令の分岐条
件が成立しなかった場合であって分岐命令より前に第1
のブースティング命令が実行されている場合に、その第
1又は第2のブースティング命令によって示され分岐命
令より前に実行されているブーストされた命令の実行を
キャンセルすると共に、更に分岐命令より前であって第
1又は第2のブースティング命令の直後にリバース命令
が実行されている場合にそのリバース命令により示され
分岐命令より前に実行されているブーストされた命令の
実行を有効とする。逆に、命令実行状態制御手段106
は、例えば、命令列の実行時にその命令列中の分岐命令
の分岐条件が成立した場合であって分岐命令より前に第
1のブースティング命令が実行されている場合、又は分
岐命令の分岐条件が成立しなかった場合であって分岐命
令より前に第2のブースティング命令が実行されている
場合に、その第1又は第2のブースティング命令によっ
て示され分岐命令より前に実行されているブーストされ
た命令の実行を有効にすると共に、更に分岐命令より前
であって第1又は第2のブースティング命令の直後にリ
バース命令が実行されている場合にそのリバース命令に
よって示され分岐命令より前に実行されているブースト
された命令の実行をキャンセルする。加えて、命令実行
状態制御手段106は、例えば、1つの基本ブロック内
の第n番目の第1又は第2のブースティング命令によっ
て示されるブーストされた命令の実行状態を、その第1
又は第2のブースティング命令の実行の後に第n番目に
実行される分岐命令の実行結果に基づいて制御する。更
に、命令実行状態制御手段106は、例えば、第3のブ
ースティング命令によって示されるブーストされた命令
の実行状態を、その第3のブースティング命令の実行の
後に第n番目に実行される分岐命令の実行結果に基づい
て制御する。
令列実行手段104による命令列103の実行時に、そ
の命令列103中の分岐命令105の実行結果に基づい
て、分岐命令105より前に実行されているブースティ
ング制御命令102によって示され分岐命令105より
前に命令列実行手段104によって実行されているブー
ストされた命令101の実行状態を制御する。この命令
実行状態制御手段106は、例えば、命令列中の分岐命
令の分岐条件が成立した場合に、分岐命令より前に実行
されている第1のブースティング命令によって示され分
岐命令より前に実行されているブーストされた命令の実
行を有効とし、命令列中の分岐命令の分岐条件が成立し
なかった場合に、分岐命令より前に実行されている第1
のブースティング命令によって示され分岐命令より前に
実行されているブーストされた命令の実行をキャンセル
する。また、命令実行状態制御手段106は、例えば、
命令列中の分岐命令の分岐条件が成立しなかった場合
に、分岐命令より前に実行されている第2のブースティ
ング命令によって示され分岐命令より前に実行されてい
るブーストされた命令の実行を有効とし、命令列中の分
岐命令の分岐条件が成立した場合に、分岐命令より前に
実行されている第2のブースティング命令によって示さ
れ分岐命令より前に実行されているブーストされた命令
の実行をキャンセルする。更に、命令実行状態制御手段
106は、例えば、命令列中の分岐命令の分岐条件が成
立した場合であって分岐命令より前に第2のブースティ
ング命令が実行されている場合、又は分岐命令の分岐条
件が成立しなかった場合であって分岐命令より前に第1
のブースティング命令が実行されている場合に、その第
1又は第2のブースティング命令によって示され分岐命
令より前に実行されているブーストされた命令の実行を
キャンセルすると共に、更に分岐命令より前であって第
1又は第2のブースティング命令の直後にリバース命令
が実行されている場合にそのリバース命令により示され
分岐命令より前に実行されているブーストされた命令の
実行を有効とする。逆に、命令実行状態制御手段106
は、例えば、命令列の実行時にその命令列中の分岐命令
の分岐条件が成立した場合であって分岐命令より前に第
1のブースティング命令が実行されている場合、又は分
岐命令の分岐条件が成立しなかった場合であって分岐命
令より前に第2のブースティング命令が実行されている
場合に、その第1又は第2のブースティング命令によっ
て示され分岐命令より前に実行されているブーストされ
た命令の実行を有効にすると共に、更に分岐命令より前
であって第1又は第2のブースティング命令の直後にリ
バース命令が実行されている場合にそのリバース命令に
よって示され分岐命令より前に実行されているブースト
された命令の実行をキャンセルする。加えて、命令実行
状態制御手段106は、例えば、1つの基本ブロック内
の第n番目の第1又は第2のブースティング命令によっ
て示されるブーストされた命令の実行状態を、その第1
又は第2のブースティング命令の実行の後に第n番目に
実行される分岐命令の実行結果に基づいて制御する。更
に、命令実行状態制御手段106は、例えば、第3のブ
ースティング命令によって示されるブーストされた命令
の実行状態を、その第3のブースティング命令の実行の
後に第n番目に実行される分岐命令の実行結果に基づい
て制御する。
【0024】本発明は、上述の機能と同様の機能を実行
するブースティング制御方法として実施することもでき
る。また、本発明は、例えばコンパイラなどをターゲッ
トとして、上述のブースティング制御命令を命令列中に
挿入する操作のみを行うブースティング制御方法として
実施することもできる。
するブースティング制御方法として実施することもでき
る。また、本発明は、例えばコンパイラなどをターゲッ
トとして、上述のブースティング制御命令を命令列中に
挿入する操作のみを行うブースティング制御方法として
実施することもできる。
【0025】
【作用】本発明においては、ブーストされた命令が命令
コードとして明示されるのではなく、ブーストされた命
令の位置がブースティング制御命令により明示される。
ブースティング制御命令は、通常の命令のそれぞれの種
類毎に用意されるのではなく、ブースティングの形態に
応じて用意される。このため、ブースティング制御命令
の種類は、従来のブーストされた命令を示す命令コード
の種類より遥かに少なくて済む。より具体的には、ブー
スティング制御命令は、分岐命令の分岐条件が成立した
場合に実行されるべき命令がブーストされた位置を示す
第1のブースティング命令、分岐命令の分岐条件が成立
しなかった場合に実行されるべき命令がブーストされた
位置を示す第2のブースティング命令、直前のブーステ
ィング命令によって示されるブーストされた命令が実行
される分岐条件と逆の分岐条件で実行されるブーストさ
れた命令を示すリバース命令、n個の分岐命令を超えて
ブーストされた命令の位置を示す第3のブースティング
命令などの、高々数種類程度を用意するだけでよい。
コードとして明示されるのではなく、ブーストされた命
令の位置がブースティング制御命令により明示される。
ブースティング制御命令は、通常の命令のそれぞれの種
類毎に用意されるのではなく、ブースティングの形態に
応じて用意される。このため、ブースティング制御命令
の種類は、従来のブーストされた命令を示す命令コード
の種類より遥かに少なくて済む。より具体的には、ブー
スティング制御命令は、分岐命令の分岐条件が成立した
場合に実行されるべき命令がブーストされた位置を示す
第1のブースティング命令、分岐命令の分岐条件が成立
しなかった場合に実行されるべき命令がブーストされた
位置を示す第2のブースティング命令、直前のブーステ
ィング命令によって示されるブーストされた命令が実行
される分岐条件と逆の分岐条件で実行されるブーストさ
れた命令を示すリバース命令、n個の分岐命令を超えて
ブーストされた命令の位置を示す第3のブースティング
命令などの、高々数種類程度を用意するだけでよい。
【0026】
【実施例】以下、図面を参照しながら本発明の実施例に
つき詳細に説明する。 <本実施例におけるブースティング命令の説明>図2〜
図10は、本実施例において使用されるブースティング
命令を示した図である。
つき詳細に説明する。 <本実施例におけるブースティング命令の説明>図2〜
図10は、本実施例において使用されるブースティング
命令を示した図である。
【0027】本実施例においては、ブーストされた命令
が命令コードとして明示されるのではなく、ブーストさ
れた命令の位置がブースティング命令により明示され
る。ブースティング命令は、通常の命令のそれぞれの種
類毎に用意されるのではなく、ブースティングの形態に
応じて用意される。このため、ブースティング命令の種
類は、従来のブーストされた命令を示す命令コードの種
類より遥かに少なくて済む。
が命令コードとして明示されるのではなく、ブーストさ
れた命令の位置がブースティング命令により明示され
る。ブースティング命令は、通常の命令のそれぞれの種
類毎に用意されるのではなく、ブースティングの形態に
応じて用意される。このため、ブースティング命令の種
類は、従来のブーストされた命令を示す命令コードの種
類より遥かに少なくて済む。
【0028】図2に、図16に示される命令列の例1に
対応する、 taken 側からブーストされた命令を含む命
令列を示す。taken 側からブーストされた演算命令 add
r2,r5,r6 の位置が、その直前に挿入された taken側か
らブーストされた命令の位置を示すブースティング命令
boost によって明示されている。
対応する、 taken 側からブーストされた命令を含む命
令列を示す。taken 側からブーストされた演算命令 add
r2,r5,r6 の位置が、その直前に挿入された taken側か
らブーストされた命令の位置を示すブースティング命令
boost によって明示されている。
【0029】図3に、図18に示される命令列の例2に
対応する、 not taken側からブーストされた命令を含む
命令列を示す。not taken 側からブーストされた演算命
令add r3,r5,r6 の位置が、その直前に挿入された not
taken 側からブーストされた命令の位置を示すブース
ティング命令 boost.n により明示されている。
対応する、 not taken側からブーストされた命令を含む
命令列を示す。not taken 側からブーストされた演算命
令add r3,r5,r6 の位置が、その直前に挿入された not
taken 側からブーストされた命令の位置を示すブース
ティング命令 boost.n により明示されている。
【0030】図4に、図20に示される命令列の例3に
対応する、分岐の両側からブーストされた命令を含む命
令列を示す。not taken 側からブーストされた演算命令
addr3,r5,r6 の位置が、その直前に挿入された not ta
ken側からブーストされた命令の位置を示すブースティ
ング命令 boost.n により明示され、かつtaken 側から
ブーストされた演算命令 add r4,r7,r8 の位置が、そ
の直前に挿入されたtaken 側からブーストされた命令
の位置を示すブースティング命令 boost によって明示
されている。
対応する、分岐の両側からブーストされた命令を含む命
令列を示す。not taken 側からブーストされた演算命令
addr3,r5,r6 の位置が、その直前に挿入された not ta
ken側からブーストされた命令の位置を示すブースティ
ング命令 boost.n により明示され、かつtaken 側から
ブーストされた演算命令 add r4,r7,r8 の位置が、そ
の直前に挿入されたtaken 側からブーストされた命令
の位置を示すブースティング命令 boost によって明示
されている。
【0031】図5に、図22に示される命令列の例4に
対応する、複数の分岐命令を超えてブーストされた命令
を含む命令列を示す。この例においては、同一の基本ブ
ロックにおいて同じ種類のブースティング命令が複数用
いられたときには、その基本ブロック内の第n番目のブ
ースティング命令はn個の分岐命令を超えてブーストさ
れた命令の位置を示す、という規則が導入されている。
即ち、図5において、第1番目の分岐命令 br r2,0,
L1 よりも前に挿入された第1番目の分岐命令に対応す
る taken 側の演算命令 add r3,r5,r6 の位置が、そ
の直前に挿入されたtaken 側からブーストされた命令の
位置を示す第1番目のブースティング命令 boost によ
って明示され、かつ第2番目の分岐命令 br r3,0,L2
と第1番目の分岐命令を超えて第1番目の分岐命令よ
りも前に挿入された第2番目の分岐命令に対応するtake
n 側の演算命令 add r4,r7,r8 の位置が、その直前に
挿入された taken側からブーストされた命令の位置を示
す第2番目のブースティング命令 boost によって明示
されている。
対応する、複数の分岐命令を超えてブーストされた命令
を含む命令列を示す。この例においては、同一の基本ブ
ロックにおいて同じ種類のブースティング命令が複数用
いられたときには、その基本ブロック内の第n番目のブ
ースティング命令はn個の分岐命令を超えてブーストさ
れた命令の位置を示す、という規則が導入されている。
即ち、図5において、第1番目の分岐命令 br r2,0,
L1 よりも前に挿入された第1番目の分岐命令に対応す
る taken 側の演算命令 add r3,r5,r6 の位置が、そ
の直前に挿入されたtaken 側からブーストされた命令の
位置を示す第1番目のブースティング命令 boost によ
って明示され、かつ第2番目の分岐命令 br r3,0,L2
と第1番目の分岐命令を超えて第1番目の分岐命令よ
りも前に挿入された第2番目の分岐命令に対応するtake
n 側の演算命令 add r4,r7,r8 の位置が、その直前に
挿入された taken側からブーストされた命令の位置を示
す第2番目のブースティング命令 boost によって明示
されている。
【0032】図7に、図6に示される命令列の例5に対
応する、複数の分岐命令を一挙に超えてブーストされた
命令を含む命令列を示す。この場合には、第2番目の分
岐命令 br r3,0,L2 と第1番目の分岐命令 br r
2,0,L1 を超えて第1番目の分岐命令より前に挿入され
た第2番目の分岐命令に対応するtaken 側の演算命令ad
d r4,r7,r8 の位置が、その直前に挿入された第2番
目の分岐命令の taken側からブーストされた命令の位置
を示すブースティング命令 boost2 によって明示されて
いる。特にこの場合、越される分岐命令の数がパラメー
タ(引数)として与えられるようなブースティング命令
を導入することができる。
応する、複数の分岐命令を一挙に超えてブーストされた
命令を含む命令列を示す。この場合には、第2番目の分
岐命令 br r3,0,L2 と第1番目の分岐命令 br r
2,0,L1 を超えて第1番目の分岐命令より前に挿入され
た第2番目の分岐命令に対応するtaken 側の演算命令ad
d r4,r7,r8 の位置が、その直前に挿入された第2番
目の分岐命令の taken側からブーストされた命令の位置
を示すブースティング命令 boost2 によって明示されて
いる。特にこの場合、越される分岐命令の数がパラメー
タ(引数)として与えられるようなブースティング命令
を導入することができる。
【0033】図9に、図8に示される命令列の例6に対
応する、複数の分岐命令を複雑に超えてブーストされた
命令を含む命令列を示す。この例では、同一の基本ブロ
ックにおいて複数のブースティング命令(これらは同じ
種類でなくてもよい)が用いられたときには、その基本
ブロック内の第n番目のブースティング命令はn個の分
岐命令を超えてブーストされた命令の位置を示す、とい
う規則が導入されている。即ち、図9で、第1番目の分
岐命令 br r2,0,L1 より前に挿入された第1番目の
分岐命令に対応する taken 側の演算命令 add r3,r
5,r6 の位置が、その直前に挿入された taken 側から
ブーストされた命令の位置を示す第1番目のブースティ
ング命令 boost によって明示され、かつ第2番目の分
岐命令 brr3,0,L2 と第1番目の分岐命令を超えて第1
番目の分岐命令より前に挿入された第2番目の分岐命令
に対応するtaken 側の演算命令 add r4,r7,r8 の位置
が、その直前に挿入された taken側からブーストされた
命令の位置を示す第2番目のブースティング命令 boost
によって明示されている。
応する、複数の分岐命令を複雑に超えてブーストされた
命令を含む命令列を示す。この例では、同一の基本ブロ
ックにおいて複数のブースティング命令(これらは同じ
種類でなくてもよい)が用いられたときには、その基本
ブロック内の第n番目のブースティング命令はn個の分
岐命令を超えてブーストされた命令の位置を示す、とい
う規則が導入されている。即ち、図9で、第1番目の分
岐命令 br r2,0,L1 より前に挿入された第1番目の
分岐命令に対応する taken 側の演算命令 add r3,r
5,r6 の位置が、その直前に挿入された taken 側から
ブーストされた命令の位置を示す第1番目のブースティ
ング命令 boost によって明示され、かつ第2番目の分
岐命令 brr3,0,L2 と第1番目の分岐命令を超えて第1
番目の分岐命令より前に挿入された第2番目の分岐命令
に対応するtaken 側の演算命令 add r4,r7,r8 の位置
が、その直前に挿入された taken側からブーストされた
命令の位置を示す第2番目のブースティング命令 boost
によって明示されている。
【0034】最後に、図10に、図20に示される命令
列の例3に対応する、分岐の両側からブーストされた命
令を含む命令列であってリバース命令を用いたものを示
す。図9の例で説明したように、同一の基本ブロックに
おいて互いに同じ種類でなくてもよい複数のブースティ
ング命令が用いられたときには、その基本ブロック内の
第n番目のブースティング命令はn個の分岐命令を超え
てブーストされた命令の位置を示す、という規則が導入
された場合には、図4の例で示した、分岐の両側からブ
ーストされた命令を含む命令列を表現できなくなる。そ
こで、図10の例においては、分岐の両側からブースト
された命令を含む命令列が、新たに導入されたリバース
命令 reverse を用いて示されている。リバース命令 r
everseは、その直前にブースティング命令 boost が指
定されている場合は、そのブースティング命令 boost
命令に対応する分岐命令と同じ分岐命令の note taken
側からブーストされた命令の位置を示し、その直前にブ
ースティング命令 boost.n 命令が指定されている場合
は、そのブースティング命令 boost.n に対応する分岐
命令と同じ分岐命令の taken 側からブーストされた命
令の位置を示す。従って、図10例では、not taken 側
からブーストされた演算命令 add r3,r5,r6の位置が、
その直前に挿入された not taken側からブーストされた
命令の位置を示すブースティング命令 boost.n によっ
て明示され、かつそのブースティング命令 boost.n に
対応する分岐命令と同じ分岐命令のtaken 側からブース
トされた演算命令add r4,r7,r8 の位置が、その直前
に挿入されたリバース命令reverse によって明示されて
いる。
列の例3に対応する、分岐の両側からブーストされた命
令を含む命令列であってリバース命令を用いたものを示
す。図9の例で説明したように、同一の基本ブロックに
おいて互いに同じ種類でなくてもよい複数のブースティ
ング命令が用いられたときには、その基本ブロック内の
第n番目のブースティング命令はn個の分岐命令を超え
てブーストされた命令の位置を示す、という規則が導入
された場合には、図4の例で示した、分岐の両側からブ
ーストされた命令を含む命令列を表現できなくなる。そ
こで、図10の例においては、分岐の両側からブースト
された命令を含む命令列が、新たに導入されたリバース
命令 reverse を用いて示されている。リバース命令 r
everseは、その直前にブースティング命令 boost が指
定されている場合は、そのブースティング命令 boost
命令に対応する分岐命令と同じ分岐命令の note taken
側からブーストされた命令の位置を示し、その直前にブ
ースティング命令 boost.n 命令が指定されている場合
は、そのブースティング命令 boost.n に対応する分岐
命令と同じ分岐命令の taken 側からブーストされた命
令の位置を示す。従って、図10例では、not taken 側
からブーストされた演算命令 add r3,r5,r6の位置が、
その直前に挿入された not taken側からブーストされた
命令の位置を示すブースティング命令 boost.n によっ
て明示され、かつそのブースティング命令 boost.n に
対応する分岐命令と同じ分岐命令のtaken 側からブース
トされた演算命令add r4,r7,r8 の位置が、その直前
に挿入されたリバース命令reverse によって明示されて
いる。
【0035】以上に示したブースティング命令 boost,b
oost.n 及びリバース命令 reverseが示すブーストされ
た命令の範囲は、そのブースティング命令又はリバース
命令の次に始めて現れる分岐命令、他のブースティング
命令又は他のリバース命令までである。 <本実施例の全体構成>図11は、上述したブースティ
ング命令を含む命令列を実行するパイプラインプロセッ
サの全体構成を示した図である。
oost.n 及びリバース命令 reverseが示すブーストされ
た命令の範囲は、そのブースティング命令又はリバース
命令の次に始めて現れる分岐命令、他のブースティング
命令又は他のリバース命令までである。 <本実施例の全体構成>図11は、上述したブースティ
ング命令を含む命令列を実行するパイプラインプロセッ
サの全体構成を示した図である。
【0036】命令フェッチユニット1101は、特には
図示しないメモリから命令をフェッチする。レジスタ読
出しユニット1102は、フェッチされた命令をデコー
ドし、プロセッサ内のレジスタから必要なデータを読み
出す。
図示しないメモリから命令をフェッチする。レジスタ読
出しユニット1102は、フェッチされた命令をデコー
ドし、プロセッサ内のレジスタから必要なデータを読み
出す。
【0037】算術論理演算ユニット(ALU)1103
は、デコードされた命令によって指定されている算術論
理演算命令を実行する。メモリアクセスユニット110
4は、オペランドデータを、メモリから読み出し又はメ
モリに書き込む。
は、デコードされた命令によって指定されている算術論
理演算命令を実行する。メモリアクセスユニット110
4は、オペランドデータを、メモリから読み出し又はメ
モリに書き込む。
【0038】レジスタ書込みユニット110は、演算さ
れたデータをプロセッサ内のレジスタに書き込む。パイ
プライン制御ユニット1106はパイプライン全体の動
作を制御する。
れたデータをプロセッサ内のレジスタに書き込む。パイ
プライン制御ユニット1106はパイプライン全体の動
作を制御する。
【0039】上述の構成において、前述したブースティ
ング命令の解読及びパイプラインに対する必要な制御の
指示は、レジスタ読出しユニット1102又はパイプラ
イン制御ユニット1106が実行する。 <ブースティング命令に対する制御処理>図11に示さ
れるレジスタ読出しユニット1102又はパイプライン
制御ユニット1106により実行されるブースティング
命令に対する制御処理の例を、図12の動作フローチャ
ートに従って説明する。この動作フローチャートは、前
述した2つのブースティング命令 boost,boost.n と、
リバース命令 reverse を用いたブースティング制御処
理の例を示している。また、この制御処理では、同一の
基本ブロックにおいて同じ種類でなくてもよい複数のブ
ースティング命令が用いられたときには、その基本ブロ
ック内の第n番目のブースティング命令はn個の分岐命
令を超えてブーストされた命令の位置を示す、という規
則が採用されている。
ング命令の解読及びパイプラインに対する必要な制御の
指示は、レジスタ読出しユニット1102又はパイプラ
イン制御ユニット1106が実行する。 <ブースティング命令に対する制御処理>図11に示さ
れるレジスタ読出しユニット1102又はパイプライン
制御ユニット1106により実行されるブースティング
命令に対する制御処理の例を、図12の動作フローチャ
ートに従って説明する。この動作フローチャートは、前
述した2つのブースティング命令 boost,boost.n と、
リバース命令 reverse を用いたブースティング制御処
理の例を示している。また、この制御処理では、同一の
基本ブロックにおいて同じ種類でなくてもよい複数のブ
ースティング命令が用いられたときには、その基本ブロ
ック内の第n番目のブースティング命令はn個の分岐命
令を超えてブーストされた命令の位置を示す、という規
則が採用されている。
【0040】図12において、ステップ1201では、
デコードされた命令がブースティング命令 boost,boos
t.n 又はリバース命令 reverse の何れかであるか否
かが判定される。
デコードされた命令がブースティング命令 boost,boos
t.n 又はリバース命令 reverse の何れかであるか否
かが判定される。
【0041】デコードされた命令がブースティング命令
又はリバース命令の何れかであってステップ1201の
判定がYESの場合は、ステップ1202で、そのブー
スティング命令又はリバース命令がスタックにプッシュ
される。そして、図12の動作フローチャートで示され
る処理を終了する。ブースティング命令に対しては、図
12の動作フローチャートで示される処理以外の制御処
理は実行されない。
又はリバース命令の何れかであってステップ1201の
判定がYESの場合は、ステップ1202で、そのブー
スティング命令又はリバース命令がスタックにプッシュ
される。そして、図12の動作フローチャートで示され
る処理を終了する。ブースティング命令に対しては、図
12の動作フローチャートで示される処理以外の制御処
理は実行されない。
【0042】一方、デコードされた命令がブースティン
グ命令又はリバース命令の何れでもなくステップ120
1の判定がNOの場合は、ステップ1203で、デコー
ドされた命令が分岐命令であるか否かが判定される。
グ命令又はリバース命令の何れでもなくステップ120
1の判定がNOの場合は、ステップ1203で、デコー
ドされた命令が分岐命令であるか否かが判定される。
【0043】デコードされた命令が分岐命令ではなくス
テップ1203の判定がNOの場合には、図12の動作
フローチャートで示される処理を終了する。このような
命令に対しては、通常のパイプライン処理が実行され
る。
テップ1203の判定がNOの場合には、図12の動作
フローチャートで示される処理を終了する。このような
命令に対しては、通常のパイプライン処理が実行され
る。
【0044】デコードされた命令が分岐命令であってス
テップ1203の判定がYESの場合には、ステップ1
204で、その分岐命令に対応する分岐条件が成立した
か否かが判定される。
テップ1203の判定がYESの場合には、ステップ1
204で、その分岐命令に対応する分岐条件が成立した
か否かが判定される。
【0045】分岐命令に対応する分岐条件が成立しステ
ップ1204の判定がYESなら、ステップ1205
で、スタックから1つのブースティング命令がポップさ
れる。特には図示しないが、スタックが空である場合
は、図12に示される動作フローチャートの処理を終了
する。次に、ステップ1206においては、ステップ1
205でポップされたブースティング命令が、not take
n 側からブーストされた命令の位置を示すブースティン
グ命令boost.n であるか否かが判定される。
ップ1204の判定がYESなら、ステップ1205
で、スタックから1つのブースティング命令がポップさ
れる。特には図示しないが、スタックが空である場合
は、図12に示される動作フローチャートの処理を終了
する。次に、ステップ1206においては、ステップ1
205でポップされたブースティング命令が、not take
n 側からブーストされた命令の位置を示すブースティン
グ命令boost.n であるか否かが判定される。
【0046】一方、分岐命令に対応する分岐条件が成立
せずステップ1204の判定がNOなら、ステップ12
11で、スタックから1つのブースティング命令がポッ
プされる。この場合にも、特には図示しないが、スタッ
クが空である場合には、図12に示される動作フローチ
ャートの処理を終了する。次に、ステップ1212で
は、ステップ1211でポップされたブースティング命
令が、taken 側からブーストされた命令の位置を示すブ
ースティング命令boost であるか否かが判定される。
せずステップ1204の判定がNOなら、ステップ12
11で、スタックから1つのブースティング命令がポッ
プされる。この場合にも、特には図示しないが、スタッ
クが空である場合には、図12に示される動作フローチ
ャートの処理を終了する。次に、ステップ1212で
は、ステップ1211でポップされたブースティング命
令が、taken 側からブーストされた命令の位置を示すブ
ースティング命令boost であるか否かが判定される。
【0047】上述のスタックによって、同一の基本ブロ
ックにおいて同じ種類でなくてもよい複数のブースティ
ング命令が用いられたときには、その基本ブロック内の
第n番目のブースティング命令はn個の分岐命令を超え
てブーストされた命令の位置を示す、という規則に対応
する制御処理が実現される。
ックにおいて同じ種類でなくてもよい複数のブースティ
ング命令が用いられたときには、その基本ブロック内の
第n番目のブースティング命令はn個の分岐命令を超え
てブーストされた命令の位置を示す、という規則に対応
する制御処理が実現される。
【0048】ステップ1206の判定がYESの場合、
即ち、分岐条件が成立した場合においてポップされたブ
ースティング命令が not taken 側からブーストされた
命令の位置を示すブースティング命令 boost.n である
場合、又は、ステップ1212の判定がYESの場合、
即ち、分岐条件が成立しなかった場合においてポップさ
れたブースティング命令が taken 側からブーストされ
た命令の位置を示すブースティング命令 boost である
場合には、ステップ1207で、上述のポップされたブ
ースティング命令によって示されるブーストされた命令
のパイプライン内での実行が、キャンセルされる。この
制御は、図11において、パイプライン制御ユニット1
106が、ALU1103、メモリアクセスユニット1
104、又はレジスタ書込みユニット1105に対し
て、実行キャンセル信号を出力することによって実現さ
れる。
即ち、分岐条件が成立した場合においてポップされたブ
ースティング命令が not taken 側からブーストされた
命令の位置を示すブースティング命令 boost.n である
場合、又は、ステップ1212の判定がYESの場合、
即ち、分岐条件が成立しなかった場合においてポップさ
れたブースティング命令が taken 側からブーストされ
た命令の位置を示すブースティング命令 boost である
場合には、ステップ1207で、上述のポップされたブ
ースティング命令によって示されるブーストされた命令
のパイプライン内での実行が、キャンセルされる。この
制御は、図11において、パイプライン制御ユニット1
106が、ALU1103、メモリアクセスユニット1
104、又はレジスタ書込みユニット1105に対し
て、実行キャンセル信号を出力することによって実現さ
れる。
【0049】上述の、ステップ1206又は1212の
判定がYESの場合において、ステップ1207のキャ
ンセル処理が実行された後には、そのキャンセル処理の
対象となったブースティング命令の直後にリバース命令
reverse (図10参照)が指定されている場合には、
そのリバース命令 reverse に続くブーストされた命令
は有効とされるべきである。そこで、ステップ1208
でスタックから命令がポップされ、ステップ1209で
そのポップされた命令がリバース命令 reverseであるか
否かが判定される。そして、ポップされた命令がリバー
ス命令 reverseであってステップ1209の判定がYE
Sの場合には、そのポップされたリバース命令 reverse
がそのままスタックから除去されて図12の動作フロ
ーチャートの処理を終了することにより、そのリバース
命令 reverse に続くブーストされた命令のパイプライ
ン内での実行が、そのまま有効に継続される。一方、ポ
ップされた命令がブースティング命令であってステップ
1209の判定がNOの場合には、ステップ1210で
そのポップされたブースティング命令がそのままスタッ
クに戻され(プッシュされ)、その後、図12の動作フ
ローチャートの処理を終了する。
判定がYESの場合において、ステップ1207のキャ
ンセル処理が実行された後には、そのキャンセル処理の
対象となったブースティング命令の直後にリバース命令
reverse (図10参照)が指定されている場合には、
そのリバース命令 reverse に続くブーストされた命令
は有効とされるべきである。そこで、ステップ1208
でスタックから命令がポップされ、ステップ1209で
そのポップされた命令がリバース命令 reverseであるか
否かが判定される。そして、ポップされた命令がリバー
ス命令 reverseであってステップ1209の判定がYE
Sの場合には、そのポップされたリバース命令 reverse
がそのままスタックから除去されて図12の動作フロ
ーチャートの処理を終了することにより、そのリバース
命令 reverse に続くブーストされた命令のパイプライ
ン内での実行が、そのまま有効に継続される。一方、ポ
ップされた命令がブースティング命令であってステップ
1209の判定がNOの場合には、ステップ1210で
そのポップされたブースティング命令がそのままスタッ
クに戻され(プッシュされ)、その後、図12の動作フ
ローチャートの処理を終了する。
【0050】前述したステップ1206の判定がNOの
場合、即ち、分岐条件が成立した場合においてポップさ
れたブースティング命令が taken 側からブーストされ
た命令の位置を示すブースティング命令 boost である
場合、又は、ステップ1212の判定がNOの場合、即
ち、分岐条件が成立しなかった場合においてポップされ
たブースティング命令が not taken 側からブーストさ
れた命令の位置を示すブースティング命令 boost.n で
ある場合には、そのポップされたブースティング命令が
そのままスタックから除去されることにより、そのブー
スティング命令に続くブーストされた命令のパイプライ
ン内での実行が、そのまま有効に継続される。
場合、即ち、分岐条件が成立した場合においてポップさ
れたブースティング命令が taken 側からブーストされ
た命令の位置を示すブースティング命令 boost である
場合、又は、ステップ1212の判定がNOの場合、即
ち、分岐条件が成立しなかった場合においてポップされ
たブースティング命令が not taken 側からブーストさ
れた命令の位置を示すブースティング命令 boost.n で
ある場合には、そのポップされたブースティング命令が
そのままスタックから除去されることにより、そのブー
スティング命令に続くブーストされた命令のパイプライ
ン内での実行が、そのまま有効に継続される。
【0051】上述の、ステップ1206又は1212の
判定がNOの場合には、有効とされたブースティング命
令の直後にリバース命令 reverse が指定されている場
合には、そのリバース命令 reverse に続くブーストさ
れた命令はキャンセルされるべきである。そこで、ステ
ップ1213でスタックから命令がポップされ、ステッ
プ1214でそのポップされた命令がリバース命令 rev
erseであるか否かが判定される。そして、ポップされた
命令がリバース命令 reverseであってステップ1214
の判定がYESの場合には、ステップ1215で、上述
のポップされたリバース命令 reverse によって示され
るブーストされた命令のパイプライン内での実行がキャ
ンセルされ、その後、図12の動作フローチャートの処
理を有する。一方、ポップされた命令がブースティング
命令であってステップ1214の判定がNOの場合に
は、ステップ1216でそのポップされたブースティン
グ命令がそのままスタックに戻され(プッシュされ)、
その後、図12の動作フローチャートの処理を終了す
る。 <命令のスケジューリング方法>本実施例においては、
コンパイラは、図13に示されるようなフローグラフに
従って、分岐命令の近辺の命令の実行位置を変更するス
ケジューリングを行い、上述したブースティング命令及
びリバース命令を適宜挿入してゆく。 <他の実施例>前述の2つのブースティング命令 boos
t,boost.n と、リバース命令 reverseを用いたブース
ティング制御処理の例は、上述の図12の動作フローチ
ャートにより示される。このほか、図7に示される複数
の分岐命令を一挙に超えてブーストされた命令の位置を
示すブースティング命令 boost2 を用いたブースティン
グ制御処理も、図12の動作フローチャートで示される
制御処理と同様の制御処理として実現することができ
る。この場合、例えば、ブースティング命令 boost2が
デコードされた場合には、その命令を例えば連続する2
つのブースティング命令boost に置き換えてスタックす
るような制御処理が実行される。
判定がNOの場合には、有効とされたブースティング命
令の直後にリバース命令 reverse が指定されている場
合には、そのリバース命令 reverse に続くブーストさ
れた命令はキャンセルされるべきである。そこで、ステ
ップ1213でスタックから命令がポップされ、ステッ
プ1214でそのポップされた命令がリバース命令 rev
erseであるか否かが判定される。そして、ポップされた
命令がリバース命令 reverseであってステップ1214
の判定がYESの場合には、ステップ1215で、上述
のポップされたリバース命令 reverse によって示され
るブーストされた命令のパイプライン内での実行がキャ
ンセルされ、その後、図12の動作フローチャートの処
理を有する。一方、ポップされた命令がブースティング
命令であってステップ1214の判定がNOの場合に
は、ステップ1216でそのポップされたブースティン
グ命令がそのままスタックに戻され(プッシュされ)、
その後、図12の動作フローチャートの処理を終了す
る。 <命令のスケジューリング方法>本実施例においては、
コンパイラは、図13に示されるようなフローグラフに
従って、分岐命令の近辺の命令の実行位置を変更するス
ケジューリングを行い、上述したブースティング命令及
びリバース命令を適宜挿入してゆく。 <他の実施例>前述の2つのブースティング命令 boos
t,boost.n と、リバース命令 reverseを用いたブース
ティング制御処理の例は、上述の図12の動作フローチ
ャートにより示される。このほか、図7に示される複数
の分岐命令を一挙に超えてブーストされた命令の位置を
示すブースティング命令 boost2 を用いたブースティン
グ制御処理も、図12の動作フローチャートで示される
制御処理と同様の制御処理として実現することができ
る。この場合、例えば、ブースティング命令 boost2が
デコードされた場合には、その命令を例えば連続する2
つのブースティング命令boost に置き換えてスタックす
るような制御処理が実行される。
【0052】このほか、従来技術と同様の、通常の命令
コードとは別の命令コードによってブーストされた命令
を記述する方式に、本発明によって実現される、その他
のブーストされた命令の位置をブースティング命令によ
って指定する方式を混在させることもできる。
コードとは別の命令コードによってブーストされた命令
を記述する方式に、本発明によって実現される、その他
のブーストされた命令の位置をブースティング命令によ
って指定する方式を混在させることもできる。
【0053】
【発明の効果】本発明によれば、ブーストされた命令が
命令コードとして明示されるのではなく、ブーストされ
た命令の位置がブースティング制御命令により明示さ
れ、ブースティング制御命令は、通常の命令のそれぞれ
の種類毎に用意されるのではなく、ブースティングの形
態に応じて用意される。このため、ブースティング制御
命令の種類は、従来のブーストされた命令を示す命令コ
ードの種類より遥かに少なくて済むという効果を有す
る。
命令コードとして明示されるのではなく、ブーストされ
た命令の位置がブースティング制御命令により明示さ
れ、ブースティング制御命令は、通常の命令のそれぞれ
の種類毎に用意されるのではなく、ブースティングの形
態に応じて用意される。このため、ブースティング制御
命令の種類は、従来のブーストされた命令を示す命令コ
ードの種類より遥かに少なくて済むという効果を有す
る。
【0054】この結果、プロセッサにおいて実行可能な
命令コードの種類がそのプロセッサにおいて規定されて
いる命令フォーマットによって制限されていても、高々
数種類程度のブースティング制御命令を確保するだけ
で、既存の命令コードとの互換性を維持したまま、高度
なブースティング制御を実現することが可能となる。
命令コードの種類がそのプロセッサにおいて規定されて
いる命令フォーマットによって制限されていても、高々
数種類程度のブースティング制御命令を確保するだけ
で、既存の命令コードとの互換性を維持したまま、高度
なブースティング制御を実現することが可能となる。
【図1】本発明のブロック図である。
【図2】本実施例における、命令列の例1に対応する t
aken側からブーストされた命令を含む命令列を示した図
である。
aken側からブーストされた命令を含む命令列を示した図
である。
【図3】本実施例における、命令列の例2に対応する n
ot taken側からブーストされた命令を含む命令列を示し
た図である。
ot taken側からブーストされた命令を含む命令列を示し
た図である。
【図4】本実施例における、命令列の例3に対応する分
岐の両側からブーストされた命令を含む命令列を示した
図である。
岐の両側からブーストされた命令を含む命令列を示した
図である。
【図5】本実施例における、命令列の例4に対応する複
数の分岐命令を超えてブーストされた命令を含む命令列
を示した図である。
数の分岐命令を超えてブーストされた命令を含む命令列
を示した図である。
【図6】命令列の例5を示した図である。
【図7】本実施例における、命令列の例5に対応する複
数の分岐命令を一挙に超えてブーストされた命令を含む
命令列を示した図である。
数の分岐命令を一挙に超えてブーストされた命令を含む
命令列を示した図である。
【図8】命令列の例6を示した図である。
【図9】本実施例における、命令列の例6に対応する複
数の分岐命令を複雑に超えてブーストされた命令を含む
命令列を示した図である。
数の分岐命令を複雑に超えてブーストされた命令を含む
命令列を示した図である。
【図10】本実施例における、命令列の例3に対応する
分岐の両側からブーストされた命令を含む命令列(リバ
ース命令を用いた場合)を示した図である。
分岐の両側からブーストされた命令を含む命令列(リバ
ース命令を用いた場合)を示した図である。
【図11】本発明の実施例の全体構成図である。
【図12】実施例の動作フローチャートである。
【図13】命令のスケジューリング方法を示した図であ
る。
る。
【図14】パイプライン処理の説明図である。
【図15】命令列の例1を示した図である。
【図16】命令列の例1に対応するパイプライン動作を
示した図である。
示した図である。
【図17】従来技術における、命令列の例1に対応する
taken側からブーストされた命令を含む命令列を示した
図である。
taken側からブーストされた命令を含む命令列を示した
図である。
【図18】命令列の例2を示した図である。
【図19】従来技術における、命令列の例2に対応する
not taken側からブーストされた命令を含む命令列を示
した図である。
not taken側からブーストされた命令を含む命令列を示
した図である。
【図20】命令列の例3を示した図である。
【図21】従来技術における、命令列の例3に対応する
分岐の両側からブーストされた命令を含む命令列を示し
た図である。
分岐の両側からブーストされた命令を含む命令列を示し
た図である。
【図22】命令列の例4を示した図である。
【図23】従来技術における、命令列の例4に対応する
複数の分岐命令を超えてブーストされた命令を含む命令
列を示した図である。
複数の分岐命令を超えてブーストされた命令を含む命令
列を示した図である。
101 ブーストされた命令 102 ブースティング制御命令 103 命令列 104 命令列実行手段 105 分岐命令 106 命令実行状態制御手段 1101 命令フェッチユニット 1102 レジスタ読出しユニット 1103 算術論理演算ユニット(ALU) 1104 メモリアクセスユニット 1105 レジスタ書込みユニット 1106 パイプライン制御ユニット
Claims (28)
- 【請求項1】 分岐命令の実行を待たずに該分岐命令が
実行された結果実行されるべき命令の実行タイミングを
ブーストするブースティング制御方法において、 ブーストされた命令が挿入された命令列中に、該ブース
トされた命令の位置を示すブースティング制御命令を挿
入し、 該ブースティング制御命令が挿入された命令列の実行時
に、該命令列中の分岐命令の実行結果に基づいて、前記
分岐命令より前に実行されているブースティング制御命
令によって示され前記分岐命令より前に実行されている
ブーストされた命令の実行状態を制御する、 ことを特徴とするブースティング制御方法。 - 【請求項2】 前記ブースティング制御命令は、分岐命
令の分岐条件が成立した場合に実行されるべき命令がブ
ーストされた位置を示す第1のブースティング命令を含
む、 ことを特徴とする請求項1に記載のブースティング制御
方法。 - 【請求項3】 前記命令列の実行時に該命令列中の分岐
命令の分岐条件が成立した場合に、前記分岐命令より前
に実行されている第1のブースティング命令によって示
され前記分岐命令より前に実行されているブーストされ
た命令の実行を有効とし、 前記命令列の実行時に該命令列中の分岐命令の分岐条件
が成立しなかった場合に、前記分岐命令より前に実行さ
れている第1のブースティング命令によって示され前記
分岐命令より前に実行されているブーストされた命令の
実行をキャンセルする、 ことを特徴とする請求項2に記載のブースティング制御
方法。 - 【請求項4】 前記ブースティング制御命令は、分岐命
令の分岐条件が成立しなかった場合に実行されるべき命
令がブーストされた位置を示す第2のブースティング命
令を含む、 ことを特徴とする請求項1に記載のブースティング制御
方法。 - 【請求項5】 前記命令列の実行時に該命令列中の分岐
命令の分岐条件が成立しなかった場合に、前記分岐命令
より前に実行されている第2のブースティング命令によ
って示され前記分岐命令より前に実行されているブース
トされた命令の実行を有効とし、 前記命令列の実行時に該命令列中の分岐命令の分岐条件
が成立した場合に、前記分岐命令より前に実行されてい
る第2のブースティング命令によって示され前記分岐命
令より前に実行されているブーストされた命令の実行を
キャンセルする、 ことを特徴とする請求項4に記載のブースティング制御
方法。 - 【請求項6】 前記ブースティング制御命令は、分岐命
令の分岐条件が成立した場合に実行されるべき命令がブ
ーストされた位置を示す第1のブースティング命令と、 分岐命令の分岐条件が成立しなかった場合に実行される
べき命令がブーストされた位置を示す第2のブースティ
ング命令と、 直前に前記第1のブースティング命令が指定されている
場合に該第1のブースティング命令に対応する分岐命令
と同じ分岐命令の分岐条件が成立しなかった場合に実行
されるべき命令がブーストされた位置を示し、直前に前
記第2のブースティング命令が指定されている場合に該
第2のブースティング命令に対応する分岐命令と同じ分
岐命令の分岐条件が成立した場合に実行されるべき命令
がブーストされた位置を示すリバース命令と、 を含むことを特徴とする請求項1に記載のブースティン
グ制御方法。 - 【請求項7】 前記命令列の実行時に該命令列中の分岐
命令の分岐条件が成立した場合であって前記分岐命令よ
り前に第2のブースティング命令が実行されている場
合、又は前記分岐命令の分岐条件が成立しなかった場合
であって前記分岐命令より前に第1のブースティング命
令が実行されている場合に、該第1又は第2のブーステ
ィング命令によって示され前記分岐命令より前に実行さ
れているブーストされた命令の実行をキャンセルすると
共に、更に前記分岐命令より前であって前記第1又は第
2のブースティング命令の直後に前記リバース命令が実
行されている場合に該リバース命令によって示され前記
分岐命令より前に実行されているブーストされた命令の
実行を有効とし、 前記命令列の実行時に該命令列中の分岐命令の分岐条件
が成立した場合であって前記分岐命令より前に第1のブ
ースティング命令が実行されている場合、又は前記分岐
命令の分岐条件が成立しなかった場合であって前記分岐
命令より前に第2のブースティング命令が実行されてい
る場合に、該第1又は第2のブースティング命令によっ
て示され前記分岐命令より前に実行されているブースト
された命令の実行を有効にすると共に、更に前記分岐命
令より前であって前記第1又は第2のブースティング命
令の直後に前記リバース命令が実行されている場合に該
リバース命令によって示され前記分岐命令より前に実行
されているブーストされた命令の実行をキャンセルす
る、 ことを特徴とする請求項6に記載のブースティング制御
方法。 - 【請求項8】 nを任意の自然数とした場合に、命令列
中の1つの基本ブロックにおいて前記第1又は第2のブ
ースティング命令が複数用いられた場合は、該基本ブロ
ック内の第n番目の前記第1又は第2のブースティング
命令はn個の分岐命令を超えてブーストされた命令の位
置を示す、 ことを特徴とする請求項2乃至7の何れか1項に記載の
ブースティング制御方法。 - 【請求項9】 前記命令列の実行時に、前記1つの基本
ブロック内の第n番目の前記第1又は第2のブースティ
ング命令によって示されるブーストされた命令の実行状
態を、該第1又は第2のブースティング命令の実行の後
に第n番目に実行される分岐命令の実行結果に基づいて
制御する、 ことを特徴とする請求項8に記載のブースティング制御
方法。 - 【請求項10】 nを任意の自然数とした場合に、前記
ブースティング制御命令は、n個の分岐命令を超えてブ
ーストされた命令の位置を示す第3のブースティング命
令を含む、 ことを特徴とする請求項1に記載のブースティング制御
方法。 - 【請求項11】 前記命令列の実行時に、前記第3のブ
ースティング命令によって示されるブーストされた命令
の実行状態を、該第3のブースティング命令の実行の後
に第n番目に実行される分岐命令の実行結果に基づいて
制御する、 ことを特徴とする請求項10に記載のブースティング制
御方法。 - 【請求項12】 分岐命令の実行を待たずに該分岐命令
が実行された結果実行されるべき命令の実行タイミング
がブーストされた命令列を実行するブースティング制御
機構を備えたプロセッサ装置において、 ブーストされた命令(101)と該ブーストされた命令
(101)の位置を示すブースティング制御命令(10
2)が挿入された命令列(103)を実行する命令列実
行手段(104)と、 該命令列実行手段(104)による前記命令列(10
3)の実行時に、該命令列(103)中の分岐命令(1
05)の実行結果に基づいて、前記分岐命令(105)
より前に実行されているブースティング制御命令(10
2)によって示され前記分岐命令(105)より前に前
記命令列実行手段(104)によって実行されているブ
ーストされた命令(101)の実行状態を制御する命令
実行状態制御手段(106)と、 を有することを特徴とするブースティング制御機構を備
えたプロセッサ装置。 - 【請求項13】 前記ブースティング制御命令(10
2)は、分岐命令の分岐条件が成立した場合に実行され
るべき命令がブーストされた位置を示す第1のブーステ
ィング命令を含む。 ことを特徴とする請求項12に記載のブースティング制
御機構を備えたプロセッサ装置。 - 【請求項14】 前記命令実行状態制御手段(106)
は、 前記命令列中の分岐命令の分岐条件が成立した場合に、
前記分岐命令より前に実行されている第1のブースティ
ング命令によって示され前記分岐命令より前に実行され
ているブーストされた命令の実行を有効とし、 前記命令列中の分岐命令の分岐条件が成立しなかった場
合に、前記分岐命令より前に実行されている第1のブー
スティング命令によって示され前記分岐命令より前に実
行されているブーストされた命令の実行をキャンセルす
る、 ことを特徴とする請求項13に記載のブースティング制
御機構を備えたプロセッサ装置。 - 【請求項15】 前記ブースティング制御命令(10
2)は、分岐命令の分岐条件が成立しなかった場合に実
行されるべき命令がブーストされた位置を示す第2のブ
ースティング命令を含む、 ことを特徴とする請求項12に記載のブースティング制
御機構を備えたプロセッサ装置。 - 【請求項16】 前記命令実行状態制御手段(106)
は、 前記命令列中の分岐命令の分岐条件が成立しなかった場
合に、前記分岐命令より前に実行されている第2のブー
スティング命令によって示され前記分岐命令より前に実
行されているブーストされた命令の実行を有効とし、 前記命令列中の分岐命令の分岐条件が成立した場合に、
前記分岐命令より前に実行されている第2のブースティ
ング命令によって示され前記分岐命令より前に実行され
ているブーストされた命令の実行をキャンセルする、 ことを特徴とする請求項15に記載のブースティング制
御機構を備えたプロセッサ装置。 - 【請求項17】 前記ブースティング制御命令(10
2)は、 分岐命令の分岐条件が成立した場合に実行されるべき命
令がブーストされた位置を示す第1のブースティング命
令と、 分岐命令の分岐条件が成立しなかった場合に実行される
べき命令がブーストされた位置を示す第2のブースティ
ング命令と、 直前に前記第1のブースティング命令が指定されている
場合に該第1のブースティング命令に対応する分岐命令
と同じ分岐命令の分岐条件が成立しなかった場合に実行
されるべき命令がブーストされた位置を示し、直前に前
記第2のブースティング命令が指定されている場合に該
第2のブースティング命令に対応する分岐命令と同じ分
岐命令の分岐条件が成立した場合に実行されるべき命令
がブーストされた位置を示すリバース命令と、 を含むことを特徴とする請求項12に記載のブースティ
ング制御機構を備えたプロセッサ装置。 - 【請求項18】 前記命令実行状態制御手段(106)
は、 前記命令列中の分岐命令の分岐条件が成立した場合であ
って前記分岐命令より前に第2のブースティング命令が
実行されている場合、又は前記分岐命令の分岐条件が成
立しなかった場合であって前記分岐命令より前に第1の
ブースティング命令が実行されている場合に、該第1又
は第2のブースティング命令によって示され前記分岐命
令より前に実行されているブーストされた命令の実行を
キャンセルすると共に、更に前記分岐命令より前であっ
て前記第1又は第2のブースティング命令の直後に前記
リバース命令が実行されている場合に該リバース命令に
よって示され前記分岐命令より前に実行されているブー
ストされた命令の実行を有効とし、 前記命令列の実行時に該命令列中の分岐命令の分岐条件
が成立した場合であって前記分岐命令より前に第1のブ
ースティング命令が実行されている場合、又は前記分岐
命令の分岐条件が成立しなかった場合であって前記分岐
命令より前に第2のブースティング命令が実行されてい
る場合に、該第1又は第2のブースティング命令によっ
て示され前記分岐命令より前に実行されているブースト
された命令の実行を有効にすると共に、更に前記分岐命
令より前であって前記第1又は第2のブースティング命
令の直後に前記リバース命令が実行されている場合に該
リバース命令によって示され前記分岐命令より前に実行
されているブーストされた命令の実行をキャンセルす
る、 ことを特徴とする請求項17に記載のブースティング制
御機構を備えたプロセッサ装置。 - 【請求項19】 nを任意の自然数とした場合に、命令
列中の1つの基本ブロックにおいて前記第1又は第2の
ブースティング命令が複数用いられた場合は、該基本ブ
ロック内の第n番目の前記第1又は第2のブースティン
グ命令はn個の分岐命令を超えてブーストされた命令の
位置を示す、 ことを特徴とする請求項13乃至18の何れか1項に記
載のブースティング制御機構を備えたプロセッサ装置。 - 【請求項20】 前記命令実行状態制御手段(106)
は、 前記1つの基本ブロック内の第n番目の前記第1又は第
2のブースティング命令によって示されるブーストされ
た命令の実行状態を、該第1又は第2のブースティング
命令の実行の後に第n番目に実行される分岐命令の実行
結果に基づいて制御する、 ことを特徴とする請求項19に記載のブースティング制
御機構を備えたプロセッサ装置。 - 【請求項21】 nを任意の自然数とした場合に、前記
ブースティング制御命令(102)は、n個の分岐命令
を超えてブーストされた命令の位置を示す第3のブース
ティング命令を含む、 ことを特徴とする請求項12に記載のブースティング制
御機構を備えたプロセッサ装置。 - 【請求項22】 前記命令実行状態制御手段(106)
は、 前記第3のブースティング命令によって示されるブース
トされた命令の実行状態を、該第3のブースティング命
令の実行の後に第n番目に実行される分岐命令の実行結
果に基づいて制御する、 ことを特徴とする請求項21に記載のブースティング制
御機構を備えたプロセッサ装置。 - 【請求項23】 分岐命令の実行を待たずに該分岐命令
が実行された結果実行されるべき命令の実行タイミング
をブーストするブースティング制御方法において、 ブーストされた命令が挿入された命令列中に、該ブース
トされた命令の位置を示すブースティング制御命令を挿
入する、 ことを特徴とするブースティング制御方法。 - 【請求項24】 前記ブースティング制御命令は、分岐
命令の分岐条件が成立した場合に実行されるべき命令が
ブーストされた位置を示す第1のブースティング命令を
含む、 ことを特徴とする請求項23に記載のブースティング制
御方法。 - 【請求項25】 前記ブースティング制御命令は、分岐
命令の分岐条件が成立しなかった場合に実行されるべき
命令がブーストされた位置を示す第2のブースティング
命令を含む、 ことを特徴とする請求項23に記載のブースティング制
御方法。 - 【請求項26】 前記ブースティング制御命令は、 分岐命令の分岐条件が成立した場合に実行されるべき命
令がブーストされた位置を示す第1のブースティング命
令と、 分岐命令の分岐条件が成立しなかった場合に実行される
べき命令がブーストされた位置を示す第2のブースティ
ング命令と、 直前に前記第1のブースティング命令が指定されている
場合に該第1のブースティング命令に対応する分岐命令
と同じ分岐命令の分岐条件が成立しなかった場合に実行
されるべき命令がブーストされた位置を示し、直前に前
記第2のブースティング命令が指定されている場合に該
第2のブースティング命令に対応する分岐命令と同じ分
岐命令の分岐条件が成立した場合に実行されるべき命令
がブーストされた位置を示すリバース命令と、 を含むことを特徴とする請求項23に記載のブースティ
ング制御方法。 - 【請求項27】 nを任意の自然数とした場合に、命令
列中の1つの基本ブロックにおいて前記第1又は第2の
ブースティング命令が複数用いられた場合は、該基本ブ
ロック内の第n番目の前記第1又は第2のブースティン
グ命令はn個の分岐命令を超えてブーストされた命令の
位置を示す、 ことを特徴とする請求項23乃至26の何れか1項に記
載のブースティング制御方法。 - 【請求項28】 nを任意の自然数とした場合に、前記
ブースティング制御命令は、n個の分岐命令を超えてブ
ーストされた命令の位置を示す第3のブースティング命
令を含む、 ことを特徴とする請求項23に記載のブースティング制
御方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP6176261A JPH0844561A (ja) | 1994-07-28 | 1994-07-28 | ブースティング制御方法及びブースティング制御機構を備えたプロセッサ装置 |
| US08/505,965 US5875317A (en) | 1994-07-28 | 1995-07-24 | Boosting control method and processor apparatus having boosting control portion |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP6176261A JPH0844561A (ja) | 1994-07-28 | 1994-07-28 | ブースティング制御方法及びブースティング制御機構を備えたプロセッサ装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0844561A true JPH0844561A (ja) | 1996-02-16 |
Family
ID=16010481
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP6176261A Withdrawn JPH0844561A (ja) | 1994-07-28 | 1994-07-28 | ブースティング制御方法及びブースティング制御機構を備えたプロセッサ装置 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5875317A (ja) |
| JP (1) | JPH0844561A (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6820256B2 (en) * | 2000-12-13 | 2004-11-16 | Microsoft Corporation | System and method for whole-system program analysis |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CA2010067C (en) * | 1990-02-14 | 1993-10-26 | Steven Murray Hoxey | Reducing pipeline delays in compilers by code hoisting |
| IL98248A0 (en) * | 1991-05-23 | 1992-06-21 | Ibm Israel | Instruction scheduler for a computer |
| JPH0520066A (ja) * | 1991-07-16 | 1993-01-29 | Mitsubishi Electric Corp | 並列計算機 |
| US5504914A (en) * | 1993-06-23 | 1996-04-02 | National Science Council | Multi-level instruction boosting method using plurality of ordinary registers forming plurality of conjugate register pairs that are shadow registers to each other with different only in MSB |
| US5537559A (en) * | 1994-02-08 | 1996-07-16 | Meridian Semiconductor, Inc. | Exception handling circuit and method |
| JPH07281893A (ja) * | 1994-04-15 | 1995-10-27 | Internatl Business Mach Corp <Ibm> | 処理システム及び演算方法 |
-
1994
- 1994-07-28 JP JP6176261A patent/JPH0844561A/ja not_active Withdrawn
-
1995
- 1995-07-24 US US08/505,965 patent/US5875317A/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| US5875317A (en) | 1999-02-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11340908B2 (en) | Reducing data hazards in pipelined processors to provide high processor utilization | |
| JP2550213B2 (ja) | 並列処理装置および並列処理方法 | |
| US6260189B1 (en) | Compiler-controlled dynamic instruction dispatch in pipelined processors | |
| JP5209933B2 (ja) | データ処理装置 | |
| EP1886216B1 (en) | Controlling out of order execution pipelines using skew parameters | |
| KR19980018874A (ko) | 파이프라인 방식 프로세서 (processor with pipelining-structure) | |
| US7454598B2 (en) | Controlling out of order execution pipelines issue tagging | |
| US6629238B1 (en) | Predicate controlled software pipelined loop processing with prediction of predicate writing and value prediction for use in subsequent iteration | |
| US6622238B1 (en) | System and method for providing predicate data | |
| US6055628A (en) | Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks | |
| KR20070108936A (ko) | 조건부 명령어가 실행되지 않을 경우 소스 오퍼랜드를대기하는 것을 중지하는 방법 | |
| EP1770507A2 (en) | Pipeline processing based on RISC architecture | |
| KR100241970B1 (ko) | 파이프라인 처리를 수행하는 데이터 처리 장치 | |
| JPH0844561A (ja) | ブースティング制御方法及びブースティング制御機構を備えたプロセッサ装置 | |
| US6629235B1 (en) | Condition code register architecture for supporting multiple execution units | |
| US7437544B2 (en) | Data processing apparatus and method for executing a sequence of instructions including a multiple iteration instruction | |
| JPH06214785A (ja) | マイクロプロセッサ | |
| JP3915019B2 (ja) | Vliwプロセッサ、プログラム生成装置、および記録媒体 | |
| EP0933696A2 (en) | Single cycle direct execution of serializing instructions | |
| US9135006B1 (en) | Early execution of conditional branch instruction with pc operand at which point target is fetched | |
| JP3568737B2 (ja) | 条件実行命令を備えるマイクロプロセッサ | |
| JP2503223B2 (ja) | 先行制御方式 | |
| US20040128482A1 (en) | Eliminating register reads and writes in a scheduled instruction cache | |
| JP3743155B2 (ja) | パイプライン制御型計算機 | |
| KR100515039B1 (ko) | 조건부 명령어를 고려한 파이프라인 상태 표시 회로 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20011002 |