JPH06309165A - 情報処理装置 - Google Patents
情報処理装置Info
- Publication number
- JPH06309165A JPH06309165A JP5099185A JP9918593A JPH06309165A JP H06309165 A JPH06309165 A JP H06309165A JP 5099185 A JP5099185 A JP 5099185A JP 9918593 A JP9918593 A JP 9918593A JP H06309165 A JPH06309165 A JP H06309165A
- Authority
- JP
- Japan
- Prior art keywords
- condition
- condition code
- instruction
- stored
- branch
- 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
Landscapes
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
(57)【要約】
【目的】 コンディションコードの更新と条件付き分岐
命令の依存関係によるパイプロックを減らし、性能を向
上させる。 【構成】 演算器5と、演算器5が出力するコンディシ
ョンコードを複数セット格納するコンディションコード
レジスタ6と、コンディションコードレジスタ6に最後
に格納されたコンディションコードが分岐命令の条件を
満たすかどうかを判定する条件判定装置7と、条件判定
装置7の判定結果に応じて分岐の処理を行なう分岐処理
装置8とを備え、コンディションコードレジスタ6は、
コンディションコードを格納する場合、すでに格納され
ているコンディションコードをシフトしてコンディショ
ンコードを格納し、判定を行なった後、逆にシフトして
判定に用いたコンディションコードを取り除く。
命令の依存関係によるパイプロックを減らし、性能を向
上させる。 【構成】 演算器5と、演算器5が出力するコンディシ
ョンコードを複数セット格納するコンディションコード
レジスタ6と、コンディションコードレジスタ6に最後
に格納されたコンディションコードが分岐命令の条件を
満たすかどうかを判定する条件判定装置7と、条件判定
装置7の判定結果に応じて分岐の処理を行なう分岐処理
装置8とを備え、コンディションコードレジスタ6は、
コンディションコードを格納する場合、すでに格納され
ているコンディションコードをシフトしてコンディショ
ンコードを格納し、判定を行なった後、逆にシフトして
判定に用いたコンディションコードを取り除く。
Description
【0001】
【産業上の利用分野】本発明はプログラムの命令に従っ
て処理を行なう情報処理装置に関するものである。
て処理を行なう情報処理装置に関するものである。
【0002】
【従来の技術】従来、情報処理装置では、性能を向上す
るため、1つの命令の処理を複数のステージにわけ、1
つのステージの処理が終了する毎にあらたな命令の処理
を開始することによって、複数の命令をオーパーラップ
して処理するパイプライン処理が行なわれいる。
るため、1つの命令の処理を複数のステージにわけ、1
つのステージの処理が終了する毎にあらたな命令の処理
を開始することによって、複数の命令をオーパーラップ
して処理するパイプライン処理が行なわれいる。
【0003】以下、図面を参照しながら、上記した従来
の情報処理装置の一例について説明する。
の情報処理装置の一例について説明する。
【0004】図7は従来の情報処理装置のパイプライン
動作を表すタイミング図である。各命令の処理はIF、
D、L、E、M、Sの6つのステージにわけて実行され
る。IFステージではメモリから命令の読み出しを行な
い、Dステージでは読みだした命令のデコードを行な
い、Lステージでは処理に用いるオペランドデータの読
み出しを行ない、Eステージでは、読みだしたオペラン
ドデータに対して演算を行ない、Mステージでは、命令
がロードあるいはストア命令の場合は、メモリのアクセ
スを行ない、Sステージでは、結果のデータをレジスタ
ファイルまたはメモリへ格納する。1サイクルに1ステ
ージずつ処理し、複数の命令を1ステージずつずらして
実行することによって、この図に示されるように、命令
1、命令2、命令3、命令4が毎サイクル、順次完了す
ることができる。
動作を表すタイミング図である。各命令の処理はIF、
D、L、E、M、Sの6つのステージにわけて実行され
る。IFステージではメモリから命令の読み出しを行な
い、Dステージでは読みだした命令のデコードを行な
い、Lステージでは処理に用いるオペランドデータの読
み出しを行ない、Eステージでは、読みだしたオペラン
ドデータに対して演算を行ない、Mステージでは、命令
がロードあるいはストア命令の場合は、メモリのアクセ
スを行ない、Sステージでは、結果のデータをレジスタ
ファイルまたはメモリへ格納する。1サイクルに1ステ
ージずつ処理し、複数の命令を1ステージずつずらして
実行することによって、この図に示されるように、命令
1、命令2、命令3、命令4が毎サイクル、順次完了す
ることができる。
【0005】ところが、実行される命令間で依存関係が
ある場合、即ち、前の命令の結果を後の命令が必要とす
る場合、前の命令の結果が得られるまで、それを必要と
する命令が待たされてしまう。この状態はパイプロック
と呼ばれる。図8にこのパイプロック状態の一例を示
す。この図において、cmp命令は2つのオペランドデ
ータの比較を行ない、結果に応じてコンディションコー
ド、例えば、N(ネガティブ)フラグ、V(オーバーフ
ロー)フラグ、C(キャリー)フラグ、Z(ゼロ)フラ
グなどを生成する。bicc命令は条件付き分岐命令
で、指定した条件をコンディションコードが満たすかど
うかに応じてプログラムの分岐を行なう。この例では分
岐を行なう場合を示している。次のor命令は2つのオ
ペランドデータに対して論理和の処理を行なう命令であ
るが、分岐命令biccが遅延分岐を行なうので、分岐
先の命令の実行の前に、後続のor命令も実行される。
分岐命令biccはDステージで分岐先の命令のアドレ
スを計算して、通常、次のサイクルで分岐先の命令の読
み出しを行なうが、この図の場合、cmp命令の実行が
まだで、コンディションコードが確定していないため、
分岐条件の判定ができない。したがって、パイプロック
状態となり、分岐先の命令の読み出しが待たされる。c
mp命令のEステージの完了によりコンディションコー
ドが確定すると、パイプロックが解除され、分岐条件の
判定が行なわれる。このようにコンディションコードを
更新する命令と条件付き分岐命令間に依存関係があり、
パイプロックが生じることによって、情報処理装置の性
能が低下する。
ある場合、即ち、前の命令の結果を後の命令が必要とす
る場合、前の命令の結果が得られるまで、それを必要と
する命令が待たされてしまう。この状態はパイプロック
と呼ばれる。図8にこのパイプロック状態の一例を示
す。この図において、cmp命令は2つのオペランドデ
ータの比較を行ない、結果に応じてコンディションコー
ド、例えば、N(ネガティブ)フラグ、V(オーバーフ
ロー)フラグ、C(キャリー)フラグ、Z(ゼロ)フラ
グなどを生成する。bicc命令は条件付き分岐命令
で、指定した条件をコンディションコードが満たすかど
うかに応じてプログラムの分岐を行なう。この例では分
岐を行なう場合を示している。次のor命令は2つのオ
ペランドデータに対して論理和の処理を行なう命令であ
るが、分岐命令biccが遅延分岐を行なうので、分岐
先の命令の実行の前に、後続のor命令も実行される。
分岐命令biccはDステージで分岐先の命令のアドレ
スを計算して、通常、次のサイクルで分岐先の命令の読
み出しを行なうが、この図の場合、cmp命令の実行が
まだで、コンディションコードが確定していないため、
分岐条件の判定ができない。したがって、パイプロック
状態となり、分岐先の命令の読み出しが待たされる。c
mp命令のEステージの完了によりコンディションコー
ドが確定すると、パイプロックが解除され、分岐条件の
判定が行なわれる。このようにコンディションコードを
更新する命令と条件付き分岐命令間に依存関係があり、
パイプロックが生じることによって、情報処理装置の性
能が低下する。
【0006】このパイプロックを少なくするため、コン
パイラはこのような依存関係のある命令をできるだけ離
して配置しようとする。つまり、コンディションコード
を更新する命令と条件付き分岐命令の間に、独立に実行
できる命令があれば挿入する。例えば、同じ処理を指定
した回数繰り返し実行するループ処理の場合、ループの
回数を適当なレジスタに保持し、ループの処理毎にこの
レジスタの値を1ずつ減算し、レジスタの値が0になっ
たときにループから抜け出すようにする。この場合、ル
ープの回数を保持するレジスタがループの処理と関係が
なければ、レジスタの減算をループの最初に実行し、コ
ンディションコードを更新して、その後ループの処理を
行ない、最後に、ループの回数の減算によるコンディシ
ョンコードで分岐条件を判断して、分岐処理を行なうこ
とができる。この場合、コンディションコードの更新と
条件付き分岐命令が離れているために、パイプロックが
生じない。ところが、ループ処理のなかで、何らかの判
定を行なう場合、つまりループの処理の結果に応じて分
岐を行なう場合、ループの回数の減算によるコンディシ
ョンコードがループの処理の結果によるコンディション
コードで更新されてしまう。図9にこの場合のプログラ
ムの例を示す。ループの回数の減算をループの最初に実
行することができないため、ループの最後に行なってい
る。したがって、コンディションコードの更新と条件付
き分岐命令を十分離すことができなくなり、パイプロッ
クを生じることとなる。
パイラはこのような依存関係のある命令をできるだけ離
して配置しようとする。つまり、コンディションコード
を更新する命令と条件付き分岐命令の間に、独立に実行
できる命令があれば挿入する。例えば、同じ処理を指定
した回数繰り返し実行するループ処理の場合、ループの
回数を適当なレジスタに保持し、ループの処理毎にこの
レジスタの値を1ずつ減算し、レジスタの値が0になっ
たときにループから抜け出すようにする。この場合、ル
ープの回数を保持するレジスタがループの処理と関係が
なければ、レジスタの減算をループの最初に実行し、コ
ンディションコードを更新して、その後ループの処理を
行ない、最後に、ループの回数の減算によるコンディシ
ョンコードで分岐条件を判断して、分岐処理を行なうこ
とができる。この場合、コンディションコードの更新と
条件付き分岐命令が離れているために、パイプロックが
生じない。ところが、ループ処理のなかで、何らかの判
定を行なう場合、つまりループの処理の結果に応じて分
岐を行なう場合、ループの回数の減算によるコンディシ
ョンコードがループの処理の結果によるコンディション
コードで更新されてしまう。図9にこの場合のプログラ
ムの例を示す。ループの回数の減算をループの最初に実
行することができないため、ループの最後に行なってい
る。したがって、コンディションコードの更新と条件付
き分岐命令を十分離すことができなくなり、パイプロッ
クを生じることとなる。
【0007】図10に他のプログラムの例を示す。この
図においては、複数の条件を判定して、その結果に応じ
て処理を変える場合の処理を示す。これはCプログラム
言語におけるif文に相当する。この例では、3つの条
件、A=0、B>0、およびC=Dを判定して、その判
定結果に応じて、処理Aまたは処理Bを行なうが、個々
の判定の為の比較命令と条件付き分岐命令を組み合わせ
ることによって実現している。比較命令を実行すると、
以前の比較によるコンディションコードが更新されてし
まうので、1つの比較命令を実行するたびに条件付き分
岐命令が必要となり、コンディションコードの更新と条
件付き分岐命令を十分離すことが困難になる。また、た
くさんの条件付き分岐命令が必要である。
図においては、複数の条件を判定して、その結果に応じ
て処理を変える場合の処理を示す。これはCプログラム
言語におけるif文に相当する。この例では、3つの条
件、A=0、B>0、およびC=Dを判定して、その判
定結果に応じて、処理Aまたは処理Bを行なうが、個々
の判定の為の比較命令と条件付き分岐命令を組み合わせ
ることによって実現している。比較命令を実行すると、
以前の比較によるコンディションコードが更新されてし
まうので、1つの比較命令を実行するたびに条件付き分
岐命令が必要となり、コンディションコードの更新と条
件付き分岐命令を十分離すことが困難になる。また、た
くさんの条件付き分岐命令が必要である。
【0008】また、近年では、情報処理装置の性能をさ
らに向上するため、複数の演算器を備え、複数の命令を
並列に実行するスーパースケーラ技術が使われるように
なり、パイプロックをなくすためには、さらに多くの命
令をコンディションコードの更新と条件付き分岐命令の
間に挿入する必要がある。また、依存がなくても、分岐
命令を実行することによる命令供給効率の低下のために
並列実行の効果が失われるようになる。
らに向上するため、複数の演算器を備え、複数の命令を
並列に実行するスーパースケーラ技術が使われるように
なり、パイプロックをなくすためには、さらに多くの命
令をコンディションコードの更新と条件付き分岐命令の
間に挿入する必要がある。また、依存がなくても、分岐
命令を実行することによる命令供給効率の低下のために
並列実行の効果が失われるようになる。
【0009】
【発明が解決しようとする課題】上記のように、従来の
情報処理装置では、コンディションコードを1つしか保
持できないため、次にコンディションコードを更新する
前に、以前のコンディションコードの判定のための分岐
命令が必要で、したがって、コンディションコードの更
新と条件付き分岐命令の間隔が短く、また、多くの分岐
命令が必要になり、効率的なパイプライン処理を妨げ、
性能の低下をもたらすという問題点を有していた。
情報処理装置では、コンディションコードを1つしか保
持できないため、次にコンディションコードを更新する
前に、以前のコンディションコードの判定のための分岐
命令が必要で、したがって、コンディションコードの更
新と条件付き分岐命令の間隔が短く、また、多くの分岐
命令が必要になり、効率的なパイプライン処理を妨げ、
性能の低下をもたらすという問題点を有していた。
【0010】従って、本発明は上記問題点に鑑み、コン
ディションコードの更新と条件付き分岐命令の依存関係
によるパイプロックを少なくした情報処理装置を提供す
るものである。
ディションコードの更新と条件付き分岐命令の依存関係
によるパイプロックを少なくした情報処理装置を提供す
るものである。
【0011】また本発明は、複数の条件判定に対し、少
ない条件付き分岐命令で処理を行なう情報処理装置を提
供するものである。
ない条件付き分岐命令で処理を行なう情報処理装置を提
供するものである。
【0012】
【課題を解決するための手段】上記問題点を解決するた
めに本発明の情報処理装置は、命令で指定した演算を行
なう演算器と、前記演算器で演算を行なった結果のコン
ディションコードを複数セット格納するコンディション
コードレジスタと、前記コンディションコードレジスタ
に最後に格納されたコンディションコードが分岐命令の
条件を満たすかどうかを判定する条件判定装置と、前記
条件判定装置の判定結果に応じて分岐の処理を行なう分
岐処理装置とを備え、前記コンディションコードレジス
タは、前記演算器のコンディションコードを格納する場
合、すでに格納されているコンディションコードをシフ
トして前記演算器のコンディションコードを格納するも
のである。
めに本発明の情報処理装置は、命令で指定した演算を行
なう演算器と、前記演算器で演算を行なった結果のコン
ディションコードを複数セット格納するコンディション
コードレジスタと、前記コンディションコードレジスタ
に最後に格納されたコンディションコードが分岐命令の
条件を満たすかどうかを判定する条件判定装置と、前記
条件判定装置の判定結果に応じて分岐の処理を行なう分
岐処理装置とを備え、前記コンディションコードレジス
タは、前記演算器のコンディションコードを格納する場
合、すでに格納されているコンディションコードをシフ
トして前記演算器のコンディションコードを格納するも
のである。
【0013】また、本発明の他の情報処理装置は、命令
で指定した演算を行なう演算器と、前記演算器で演算を
行なった結果のコンディションコードを複数セット格納
するコンディションコードレジスタと、前記複数セット
のコンディションコードに対する分岐の条件を格納する
条件設定レジスタと、前記コンディションコードレジス
タに格納された複数セットのコンディションコードが前
記条件設定レジスタに格納された分岐の条件を満たすか
どうかを判定する条件判定装置と、前記条件判定装置の
判定結果に応じて分岐の処理を行なう分岐処理装置とを
備え、前記コンディションコードレジスタは前記演算器
のコンディションコードを格納する場合、すでに格納さ
れているコンディションコードをシフトして、前記演算
器のコンディションコードを格納するものである。
で指定した演算を行なう演算器と、前記演算器で演算を
行なった結果のコンディションコードを複数セット格納
するコンディションコードレジスタと、前記複数セット
のコンディションコードに対する分岐の条件を格納する
条件設定レジスタと、前記コンディションコードレジス
タに格納された複数セットのコンディションコードが前
記条件設定レジスタに格納された分岐の条件を満たすか
どうかを判定する条件判定装置と、前記条件判定装置の
判定結果に応じて分岐の処理を行なう分岐処理装置とを
備え、前記コンディションコードレジスタは前記演算器
のコンディションコードを格納する場合、すでに格納さ
れているコンディションコードをシフトして、前記演算
器のコンディションコードを格納するものである。
【0014】また、本発明の他の情報処理装置は、命令
で指定した演算を行なう演算器と、前記演算器が演算を
実行し、出力するコンディションコードが、命令が示す
条件を満たすかどうかを判定する条件判定装置と、前記
条件判定装置の判定結果を格納する判定保持装置と、前
記判定保持装置に格納されている判定結果に応じて分岐
の処理を行なう分岐処理装置とを備えたものである。
で指定した演算を行なう演算器と、前記演算器が演算を
実行し、出力するコンディションコードが、命令が示す
条件を満たすかどうかを判定する条件判定装置と、前記
条件判定装置の判定結果を格納する判定保持装置と、前
記判定保持装置に格納されている判定結果に応じて分岐
の処理を行なう分岐処理装置とを備えたものである。
【0015】
【作用】本発明は上記した第1の構成によって、複数の
コンディションコードを保持することができ、以前のコ
ンディションコードを保持したまま、最新のコンディシ
ョンコードを用いて分岐条件の判定ができることとな
る。
コンディションコードを保持することができ、以前のコ
ンディションコードを保持したまま、最新のコンディシ
ョンコードを用いて分岐条件の判定ができることとな
る。
【0016】また、本発明は上記した第2の構成によっ
て、複数のコンディションコードを保持することがで
き、複数のコンディションコードに対する分岐条件の判
定を一度の行なうことができることとなる。
て、複数のコンディションコードを保持することがで
き、複数のコンディションコードに対する分岐条件の判
定を一度の行なうことができることとなる。
【0017】また、本発明は上記した第3の構成によっ
て、演算と分岐条件の判定を同時に行ない、その結果を
保持することができ、複数の条件判定の後に結果に応じ
て分岐の処理ができることとなる。
て、演算と分岐条件の判定を同時に行ない、その結果を
保持することができ、複数の条件判定の後に結果に応じ
て分岐の処理ができることとなる。
【0018】
【実施例】以下、本発明の一実施例の情報処理装置につ
いて、図面を参照しながら説明する。
いて、図面を参照しながら説明する。
【0019】(実施例1)図1は本発明の第1の実施例
における情報処理装置のブロック図である。図1におい
て、1はプログラムを格納するプログラム格納装置であ
り、2はプログラム格納装置1から命令の読み出しを行
なう命令読み出し装置であり、3は読みだした命令を解
読し、処理の制御を行なう命令デコーダであり、4は演
算に用いるオペランドデータを保持するレジスタファイ
ルであり、5はレジスタファイル4から読みだしたオペ
ランドデータに対して演算を行なう演算器であり、6は
演算器5の演算の結果のコンディションコードを保持す
るコンディションコードレジスタであり、7は条件付き
分岐命令によって指定された分岐条件をコンディション
コードが満たすかどうかを判定する条件判定装置であ
り、8は条件判定装置7の判定結果に応じて分岐の処理
を行なう分岐処理装置である。コンディションコードレ
ジスタ6は4つのフィールド9、10、11、12を持
ち、4つのセットのコンディションコードを格納するこ
とができる。
における情報処理装置のブロック図である。図1におい
て、1はプログラムを格納するプログラム格納装置であ
り、2はプログラム格納装置1から命令の読み出しを行
なう命令読み出し装置であり、3は読みだした命令を解
読し、処理の制御を行なう命令デコーダであり、4は演
算に用いるオペランドデータを保持するレジスタファイ
ルであり、5はレジスタファイル4から読みだしたオペ
ランドデータに対して演算を行なう演算器であり、6は
演算器5の演算の結果のコンディションコードを保持す
るコンディションコードレジスタであり、7は条件付き
分岐命令によって指定された分岐条件をコンディション
コードが満たすかどうかを判定する条件判定装置であ
り、8は条件判定装置7の判定結果に応じて分岐の処理
を行なう分岐処理装置である。コンディションコードレ
ジスタ6は4つのフィールド9、10、11、12を持
ち、4つのセットのコンディションコードを格納するこ
とができる。
【0020】以上のように構成された情報処理装置につ
いて、その動作を説明する。先ず、コンディションコー
ドを更新する命令、比較命令の処理について説明する。
この比較命令がプログラム格納装置1から読みだされる
と、命令デコーダ2が解読し、レジスタファイル4の読
み出しや演算器5の処理の指示を行なう。比較に用いる
オペランドデータがレジスタファイル4から読みだされ
ると、演算器5は読みだされたオペランドデータに対し
て比較を行ない、結果のデータを必要に応じてレジスタ
ファイル4へ格納する。同時に演算の結果のコンディシ
ョンコード13、即ち、N(ネガティブ)フラグ、Z
(ゼロ)フラグ、C(キャリー)フラグ、およびV(オ
ーバーフロー)フラグを出力する。このコンディション
コード13はコンディションコードレジスタ6に、命令
デコーダ3の指示に応じて、格納される。この時、コン
ディションコードレジスタ6にすでに格納されていたコ
ンディションコードは左へシフトした後、新たなコンデ
ィションコード13がコンディションコードレジスタ6
の最下位フィールド9に格納される。即ち、以前、フィ
ールド11に保持されていたコンディションコードはフ
ィールド12に、フィールド10のコンディションコー
ドはフィールド11に、フィールド9のコンディション
コードはフィールド10にシフトして保持される。次に
条件付き分岐命令がプログラム格納装置1から読みださ
れ、命令デコーダ3によって解読されると、命令デコー
ダ3は分岐条件を条件判定装置7に与える。条件判定装
置7はコンディションコードレジスタ6の最下位フィー
ルド9に格納されているコンディションコード、即ち、
最後に格納されたコンディションコードを参照して、与
えられた分岐条件を満たすかどうか判定する。分岐処理
装置8は条件判定の結果14に応じて、分岐先または次
の命令のアドレスを選択して、命令読みだし装置2に出
力する。条件判定後、コンディションコードレジスタ6
の各フィールドは右にシフトし、条件判定に用いられた
コンディションコードは取り除かれ、以前に格納されて
いたコンディションコードが最下位のフィールド9に格
納され、新たな条件付き分岐命令の条件判定に用いられ
る。このように、コンディションコードレジスタ6は複
数のフィールドを持ち、新たなコンディションコードを
格納するときに、既に格納されていたコンディションコ
ードをシフトすることによって、複数のコンディション
コードを保持することができる。また、条件判定後、格
納時とは逆にシフトすることによって、判定に使われた
コンディションコードを取り除き、まだ判定に使われて
いないコンディションコードに対して、容易に条件判定
を行なうことができる。
いて、その動作を説明する。先ず、コンディションコー
ドを更新する命令、比較命令の処理について説明する。
この比較命令がプログラム格納装置1から読みだされる
と、命令デコーダ2が解読し、レジスタファイル4の読
み出しや演算器5の処理の指示を行なう。比較に用いる
オペランドデータがレジスタファイル4から読みだされ
ると、演算器5は読みだされたオペランドデータに対し
て比較を行ない、結果のデータを必要に応じてレジスタ
ファイル4へ格納する。同時に演算の結果のコンディシ
ョンコード13、即ち、N(ネガティブ)フラグ、Z
(ゼロ)フラグ、C(キャリー)フラグ、およびV(オ
ーバーフロー)フラグを出力する。このコンディション
コード13はコンディションコードレジスタ6に、命令
デコーダ3の指示に応じて、格納される。この時、コン
ディションコードレジスタ6にすでに格納されていたコ
ンディションコードは左へシフトした後、新たなコンデ
ィションコード13がコンディションコードレジスタ6
の最下位フィールド9に格納される。即ち、以前、フィ
ールド11に保持されていたコンディションコードはフ
ィールド12に、フィールド10のコンディションコー
ドはフィールド11に、フィールド9のコンディション
コードはフィールド10にシフトして保持される。次に
条件付き分岐命令がプログラム格納装置1から読みださ
れ、命令デコーダ3によって解読されると、命令デコー
ダ3は分岐条件を条件判定装置7に与える。条件判定装
置7はコンディションコードレジスタ6の最下位フィー
ルド9に格納されているコンディションコード、即ち、
最後に格納されたコンディションコードを参照して、与
えられた分岐条件を満たすかどうか判定する。分岐処理
装置8は条件判定の結果14に応じて、分岐先または次
の命令のアドレスを選択して、命令読みだし装置2に出
力する。条件判定後、コンディションコードレジスタ6
の各フィールドは右にシフトし、条件判定に用いられた
コンディションコードは取り除かれ、以前に格納されて
いたコンディションコードが最下位のフィールド9に格
納され、新たな条件付き分岐命令の条件判定に用いられ
る。このように、コンディションコードレジスタ6は複
数のフィールドを持ち、新たなコンディションコードを
格納するときに、既に格納されていたコンディションコ
ードをシフトすることによって、複数のコンディション
コードを保持することができる。また、条件判定後、格
納時とは逆にシフトすることによって、判定に使われた
コンディションコードを取り除き、まだ判定に使われて
いないコンディションコードに対して、容易に条件判定
を行なうことができる。
【0021】図9に示した従来例について、この実施例
の情報処理装置による処理を説明する。図2にプログラ
ムの例を示す。本実施例の情報処理装置を用いると、ル
ープ回数の減算とコンディションコードの格納をループ
の最初に実行し、ループ処理の結果の判定で新たにコン
ディションコードを格納しても、ループ回数の減算によ
るコンディションコードはシフトしてコンディションコ
ードレジスタに保持されている。従って、ループ処理の
結果の判定による分岐命令を実行した後、ループ回数の
判定を行なう分岐命令を実行することができ、ループ回
数の減算によるコンディションコードの確定とそれを用
いた条件付き分岐命令を十分離して、パイプロックを防
ぐことができる。
の情報処理装置による処理を説明する。図2にプログラ
ムの例を示す。本実施例の情報処理装置を用いると、ル
ープ回数の減算とコンディションコードの格納をループ
の最初に実行し、ループ処理の結果の判定で新たにコン
ディションコードを格納しても、ループ回数の減算によ
るコンディションコードはシフトしてコンディションコ
ードレジスタに保持されている。従って、ループ処理の
結果の判定による分岐命令を実行した後、ループ回数の
判定を行なう分岐命令を実行することができ、ループ回
数の減算によるコンディションコードの確定とそれを用
いた条件付き分岐命令を十分離して、パイプロックを防
ぐことができる。
【0022】なお、図1に示す実施例では、条件付き分
岐命令を実行すると、自動的にコンディションコードレ
ジスタの各フィールドがシフトするとしたが、シフトす
るかどうかを分岐命令で指定するようにしてもよい。こ
れは1つの演算で生じたコンディションコードに対し
て、複数の分岐の判定をしたい場合、コンディションコ
ードを保持しておくのに使われる。例えば、AとBの2
つのデータを比較して、A>Bの場合、A=Bの場合、
およびA<Bの場合で異なる処理を行ないたい場合に、
AとBの比較によりコンディションコードを保持したま
ま、複数の条件付き分岐命令が実行できる。
岐命令を実行すると、自動的にコンディションコードレ
ジスタの各フィールドがシフトするとしたが、シフトす
るかどうかを分岐命令で指定するようにしてもよい。こ
れは1つの演算で生じたコンディションコードに対し
て、複数の分岐の判定をしたい場合、コンディションコ
ードを保持しておくのに使われる。例えば、AとBの2
つのデータを比較して、A>Bの場合、A=Bの場合、
およびA<Bの場合で異なる処理を行ないたい場合に、
AとBの比較によりコンディションコードを保持したま
ま、複数の条件付き分岐命令が実行できる。
【0023】(実施例2)以下、本発明の第2の実施例
について図面を参照しながら説明する。
について図面を参照しながら説明する。
【0024】図3は本発明の第2の実施例を示す情報処
理装置のブロック図である。この図において、図1と同
じ番号を付したものは同様な機能を有するものである。
21は条件判定装置であるが、図1の条件判定装置7と
異なるのは、条件設定レジスタ22を持つ点である。条
件設定レジスタ22は、コンディションコードレジスタ
6の各フィールド9、10、11、12に格納されたコ
ンディションコードに対する条件を保持する。さらに、
それぞれのコンディションコードに対する条件の判定結
果に対する論理式を格納することもできる。例えば、フ
ィールド9とフィールド10に格納されたコンディショ
ンコードに対する条件が共に満たされるか、あるいはフ
ィールド11に格納されたコンディションコードに対す
る条件が満たされる場合に分岐が成立するように論理式
を設定することもできる。
理装置のブロック図である。この図において、図1と同
じ番号を付したものは同様な機能を有するものである。
21は条件判定装置であるが、図1の条件判定装置7と
異なるのは、条件設定レジスタ22を持つ点である。条
件設定レジスタ22は、コンディションコードレジスタ
6の各フィールド9、10、11、12に格納されたコ
ンディションコードに対する条件を保持する。さらに、
それぞれのコンディションコードに対する条件の判定結
果に対する論理式を格納することもできる。例えば、フ
ィールド9とフィールド10に格納されたコンディショ
ンコードに対する条件が共に満たされるか、あるいはフ
ィールド11に格納されたコンディションコードに対す
る条件が満たされる場合に分岐が成立するように論理式
を設定することもできる。
【0025】以上のように構成された情報処理装置の動
作について、図3および図4を用いて説明する。図4は
図10の従来例の処理を本実施例の情報処理装置を用い
て処理した場合のプログラムの例である。図4では複数
の条件の結果に応じて処理Aかあるいは処理Bを実行す
る場合を示している。まず、複数のデータの比較の結果
に対して、処理Aを実行するための条件を条件設定レジ
スタ22に格納する。この条件とは、後に行なう3つの
比較のそれぞれに対する条件、即ち、A>0、B=0、
および、C=Dという条件と、その個別の条件判定結果
に対する論理式、即ち、図4のif文のなかの、&&
(論理積)と||(論理和)に対応する式である。次
に、A、B、C、Dのデータに対して、3つの比較命令
を実行する。比較結果のコンディションコードがコンデ
ィションコードレジスタ6へ格納されるときに、すでに
格納されているコンディションコードをシフトすること
によって、3つのコンディションコードが全て、コンデ
ィションコードレジスタ6へ保持される。条件判定装置
21は常にコンディションコードレジスタ6のそれぞれ
のフィールドに格納されているコンディションコードと
条件設定レジスタ22に設定されている条件を調べて、
条件が成立するかどうかを検出している。ここで、条件
設定レジスタ22に応じて分岐する条件付き分岐命令b
csetが実行されると、条件判定装置21によって判
定された結果14に応じて、分岐処理装置8が分岐先あ
るいは次の命令のアドレスを選択して、命令読みだし装
置2へ出力する。このように、複数のコンディションコ
ードを保持し、複数のコンディションコードに対する条
件を予め設定することによって、分岐命令の数を減らす
ことができる。
作について、図3および図4を用いて説明する。図4は
図10の従来例の処理を本実施例の情報処理装置を用い
て処理した場合のプログラムの例である。図4では複数
の条件の結果に応じて処理Aかあるいは処理Bを実行す
る場合を示している。まず、複数のデータの比較の結果
に対して、処理Aを実行するための条件を条件設定レジ
スタ22に格納する。この条件とは、後に行なう3つの
比較のそれぞれに対する条件、即ち、A>0、B=0、
および、C=Dという条件と、その個別の条件判定結果
に対する論理式、即ち、図4のif文のなかの、&&
(論理積)と||(論理和)に対応する式である。次
に、A、B、C、Dのデータに対して、3つの比較命令
を実行する。比較結果のコンディションコードがコンデ
ィションコードレジスタ6へ格納されるときに、すでに
格納されているコンディションコードをシフトすること
によって、3つのコンディションコードが全て、コンデ
ィションコードレジスタ6へ保持される。条件判定装置
21は常にコンディションコードレジスタ6のそれぞれ
のフィールドに格納されているコンディションコードと
条件設定レジスタ22に設定されている条件を調べて、
条件が成立するかどうかを検出している。ここで、条件
設定レジスタ22に応じて分岐する条件付き分岐命令b
csetが実行されると、条件判定装置21によって判
定された結果14に応じて、分岐処理装置8が分岐先あ
るいは次の命令のアドレスを選択して、命令読みだし装
置2へ出力する。このように、複数のコンディションコ
ードを保持し、複数のコンディションコードに対する条
件を予め設定することによって、分岐命令の数を減らす
ことができる。
【0026】(実施例3)以下、本発明の第3の実施例
について図面を参照しながら説明する。
について図面を参照しながら説明する。
【0027】図5は本発明の第3の実施例を示す情報処
理装置のブロック図である。この図において、図1と同
じ番号を付したものは同様な機能を有するものである。
31は条件判定装置であり、32は条件判定装置31の
判定結果を保持する判定保持装置である。条件判定装置
31は演算器5が出力するコンディションコード13が
命令で指定された条件を満たすかどうかを判定し、その
判定結果と判定保持装置32に保持されている以前の判
定結果34に対して、命令で指定された論理演算を施し
て、その結果を判定結果33として判定保持装置32に
格納する。分岐処理装置8は条件付き分岐命令が実行さ
れると、判定保持装置32に格納されている判定結果3
4に応じて、分岐先かあるいは次の命令のアドレスを選
択して、命令読みだし装置2に出力する。
理装置のブロック図である。この図において、図1と同
じ番号を付したものは同様な機能を有するものである。
31は条件判定装置であり、32は条件判定装置31の
判定結果を保持する判定保持装置である。条件判定装置
31は演算器5が出力するコンディションコード13が
命令で指定された条件を満たすかどうかを判定し、その
判定結果と判定保持装置32に保持されている以前の判
定結果34に対して、命令で指定された論理演算を施し
て、その結果を判定結果33として判定保持装置32に
格納する。分岐処理装置8は条件付き分岐命令が実行さ
れると、判定保持装置32に格納されている判定結果3
4に応じて、分岐先かあるいは次の命令のアドレスを選
択して、命令読みだし装置2に出力する。
【0028】図6にこの情報処理装置を用いて、図10
の従来例で示す処理を実行した場合のプログラムの例を
示す。
の従来例で示す処理を実行した場合のプログラムの例を
示す。
【0029】図5と図6を用いて、この情報処理装置の
動作を説明する。図6において、cmp、cmpa、お
よびcmpo命令の添え字、.eや.gは判定の条件を
表し、それぞれ、比較の結果が等しい、および、第1オ
ペランドデータのほうが大きいという条件を示す。cm
p命令は条件の判定結果をそのまま判定結果保持装置3
2に格納する命令であり、cmpaは判定結果と判定保
持装置32に保持されている値との論理積を取って、そ
れを判定結果として判定保持装置32に格納する命令で
あり、cmpoは判定結果と判定保持装置32に保持さ
れている値との論理和を取って、それを判定結果として
判定保持装置32に格納する命令である。bac命令
は、判定保持装置32に累積された判定結果に応じてプ
ログラムの分岐を行なう命令である。
動作を説明する。図6において、cmp、cmpa、お
よびcmpo命令の添え字、.eや.gは判定の条件を
表し、それぞれ、比較の結果が等しい、および、第1オ
ペランドデータのほうが大きいという条件を示す。cm
p命令は条件の判定結果をそのまま判定結果保持装置3
2に格納する命令であり、cmpaは判定結果と判定保
持装置32に保持されている値との論理積を取って、そ
れを判定結果として判定保持装置32に格納する命令で
あり、cmpoは判定結果と判定保持装置32に保持さ
れている値との論理和を取って、それを判定結果として
判定保持装置32に格納する命令である。bac命令
は、判定保持装置32に累積された判定結果に応じてプ
ログラムの分岐を行なう命令である。
【0030】図6に示すような複数の条件判定に従って
分岐を行なう場合、まず、cmp.e命令でデータAを
評価して、その判定結果を判定結果格納装置32に格納
し、次に、cmpa.g命令でデータBを評価して、そ
の判定結果と判定格納装置32に格納されているAに対
する判定結果の論理積を取って、判定格納装置32に格
納する。次に、cmpo.e命令でデータCとデータD
を比較して、その判定結果と判定格納装置32に格納さ
れている前の比較命令の結果との論理和を取って、判定
格納装置32に格納する。この時点で判定格納装置32
に格納されている値が1であれば、処理Aを実行する条
件が成立していることを示す。ここで分岐命令bacを
実行すれば、判定格納装置32の値に応じて分岐が実行
され、処理Aまたは処理Bが実行される。このように比
較と同時に、判定結果の論理演算を行なって累積するこ
とによって、複数の比較命令に対して1つの分岐命令だ
けで、複数の分岐条件の処理ができる。
分岐を行なう場合、まず、cmp.e命令でデータAを
評価して、その判定結果を判定結果格納装置32に格納
し、次に、cmpa.g命令でデータBを評価して、そ
の判定結果と判定格納装置32に格納されているAに対
する判定結果の論理積を取って、判定格納装置32に格
納する。次に、cmpo.e命令でデータCとデータD
を比較して、その判定結果と判定格納装置32に格納さ
れている前の比較命令の結果との論理和を取って、判定
格納装置32に格納する。この時点で判定格納装置32
に格納されている値が1であれば、処理Aを実行する条
件が成立していることを示す。ここで分岐命令bacを
実行すれば、判定格納装置32の値に応じて分岐が実行
され、処理Aまたは処理Bが実行される。このように比
較と同時に、判定結果の論理演算を行なって累積するこ
とによって、複数の比較命令に対して1つの分岐命令だ
けで、複数の分岐条件の処理ができる。
【0031】なお、第1および第2の実施例において、
シフト機能を実現するために、コンディションコードレ
ジスタの各フィールドは、必ずしも、シフトレジスタで
構成する必要はなく、ラッチ回路と、読みだしフィール
ドおよび書き込みフィールドを制御する回路を用いて同
等の機能を実現してもよい。
シフト機能を実現するために、コンディションコードレ
ジスタの各フィールドは、必ずしも、シフトレジスタで
構成する必要はなく、ラッチ回路と、読みだしフィール
ドおよび書き込みフィールドを制御する回路を用いて同
等の機能を実現してもよい。
【0032】また、第1および第2の実施例において、
コンディションコードレジスタは4つのフィールドを持
つとしたが、本発明はフィールドの数を制限するもので
なく、他の数に対しても容易に適用することができる。
コンディションコードレジスタは4つのフィールドを持
つとしたが、本発明はフィールドの数を制限するもので
なく、他の数に対しても容易に適用することができる。
【0033】
【発明の効果】以上のように本発明は、複数のコンディ
ションコードを格納するフィールドを持つコンディショ
ンコードレジスタを備え、新たなコンディションコード
を格納する時に既に格納されているコンディションコー
ドをシフトすることにより、以前のコンディションコー
ドを保持したまま、新たな分岐条件の判定ができ、コン
ディションコードを更新する命令と条件付き分岐命令を
離して、パイプロックの発生を少なくし、情報処理装置
の性能を向上することができる。
ションコードを格納するフィールドを持つコンディショ
ンコードレジスタを備え、新たなコンディションコード
を格納する時に既に格納されているコンディションコー
ドをシフトすることにより、以前のコンディションコー
ドを保持したまま、新たな分岐条件の判定ができ、コン
ディションコードを更新する命令と条件付き分岐命令を
離して、パイプロックの発生を少なくし、情報処理装置
の性能を向上することができる。
【0034】また、他の本発明は、複数の条件による分
岐の処理を、複数のコンディションコードを保持し、複
数の条件を予め、条件設定レジスタに格納し、複数の条
件を同時に判定することによって、分岐命令を少なくす
ることができ、情報処理装置の性能向上と命令を格納す
るプログラム格納装置の有効利用が可能となる。
岐の処理を、複数のコンディションコードを保持し、複
数の条件を予め、条件設定レジスタに格納し、複数の条
件を同時に判定することによって、分岐命令を少なくす
ることができ、情報処理装置の性能向上と命令を格納す
るプログラム格納装置の有効利用が可能となる。
【0035】また、他の本発明は、複数の条件による分
岐の処理を、データの比較とともに条件の判定を行な
い、判定結果を指定した論理演算で累積することによっ
て、分岐命令を少なくすることができ、情報処理装置の
性能向上と命令を格納するプログラム格納装置の有効利
用が可能となる。
岐の処理を、データの比較とともに条件の判定を行な
い、判定結果を指定した論理演算で累積することによっ
て、分岐命令を少なくすることができ、情報処理装置の
性能向上と命令を格納するプログラム格納装置の有効利
用が可能となる。
【図1】本発明の第1の実施例における情報処理装置の
ブロック図
ブロック図
【図2】同実施例における動作説明のためのプログラム
の例を示した図
の例を示した図
【図3】本発明の第2の実施例における情報処理装置の
ブロック図
ブロック図
【図4】同実施例における動作説明のためのプログラム
の例を示した図
の例を示した図
【図5】本発明の第3の実施例における情報処理装置の
ブロック図
ブロック図
【図6】同実施例における動作説明のためのプログラム
の例を示した図
の例を示した図
【図7】従来例の情報処理装置のパイプライン動作を示
すタイミング図
すタイミング図
【図8】従来例の情報処理装置のパイプロックの状態を
説明するためのタイミング図
説明するためのタイミング図
【図9】従来例の情報処理装置の動作説明のためのプロ
グラムの例を示した図
グラムの例を示した図
【図10】従来例の情報処理装置の動作説明のための他
のプログラムの例を示した図
のプログラムの例を示した図
1 プログラム格納装置 2 命令読み出し装置 3 命令デコーダ 4 レジスタファイル 5 演算器 6 コンディションコードレジスタ 7、21、31 条件判定装置 8 分岐処理装置 22 条件設定レジスタ 32 判定格納装置
Claims (6)
- 【請求項1】命令で指定した演算を行なう演算器と、前
記演算器で演算を行なった結果のコンディションコード
を複数セット格納するコンディションコードレジスタ
と、前記コンディションコードレジスタに最後に格納さ
れたコンディションコードが分岐命令の条件を満たすか
どうかを判定する条件判定装置と、前記条件判定装置の
判定結果に応じて分岐の処理を行なう分岐処理装置とを
備え、前記コンディションコードレジスタは、前記演算
器のコンディションコードを格納する場合、すでに格納
されているコンディションコードをシフトして前記演算
器のコンディションコードを格納することを特徴とする
情報処理装置。 - 【請求項2】請求項1記載のコンディションコードレジ
スタは、前記条件判定装置が判定を行なった後、格納し
ている複数セットのコンディションコードを格納時と逆
方向にシフトして、最後に格納されたコンディションコ
ードを取り除くことを特徴とする情報処理装置。 - 【請求項3】請求項1記載のコンディションコードレジ
スタは、分岐命令が最後に格納されたコンディションコ
ードの除去を指示した場合、前記条件判定装置が判定を
行なった後、格納している複数セットのコンディション
コードを格納時と逆方向にシフトして、最後に格納され
たコンディションコードを取り除くことを特徴とする情
報処理装置。 - 【請求項4】命令で指定した演算を行なう演算器と、前
記演算器で演算を行なった結果のコンディションコード
を複数セット格納するコンディションコードレジスタ
と、前記複数セットのコンディションコードに対する分
岐の条件を格納する条件設定レジスタと、前記コンディ
ションコードレジスタに格納された複数セットのコンデ
ィションコードが前記条件設定レジスタに格納された分
岐の条件を満たすかどうかを判定する条件判定装置と、
前記条件判定装置の判定結果に応じて分岐の処理を行な
う分岐処理装置とを備え、前記コンディションコードレ
ジスタは前記演算器のコンディションコードを格納する
場合、すでに格納されているコンディションコードをシ
フトして、前記演算器のコンディションコードを格納す
ることを特徴とする情報処理装置。 - 【請求項5】命令で指定した演算を行なう演算器と、前
記演算器が演算を実行し、出力するコンディションコー
ドが、命令が示す条件を満たすかどうかを判定する条件
判定装置と、前記条件判定装置の判定結果を格納する判
定保持装置と、前記判定保持装置に格納されている判定
結果に応じて分岐の処理を行なう分岐処理装置とを備え
たことを特徴とする情報処理装置。 - 【請求項6】請求項5記載の判定保持装置は、前記条件
判定装置の判定結果を格納する場合、前記命令の指示に
応じて、すでに格納されている判定結果と前記条件判定
装置の判定結果との論理演算を行なって、その結果を判
定結果として格納することを特徴とする情報処理装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5099185A JPH06309165A (ja) | 1993-04-26 | 1993-04-26 | 情報処理装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5099185A JPH06309165A (ja) | 1993-04-26 | 1993-04-26 | 情報処理装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH06309165A true JPH06309165A (ja) | 1994-11-04 |
Family
ID=14240596
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5099185A Pending JPH06309165A (ja) | 1993-04-26 | 1993-04-26 | 情報処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH06309165A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100322150B1 (ko) * | 1998-02-02 | 2002-02-04 | 포만 제프리 엘 | 부동 소수점 상태 및 제어 레지스터 인스트럭션을 단일 사이클 |
| JP2008305185A (ja) * | 2007-06-07 | 2008-12-18 | Nec Electronics Corp | プロセッサ装置及び複合条件処理方法 |
-
1993
- 1993-04-26 JP JP5099185A patent/JPH06309165A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100322150B1 (ko) * | 1998-02-02 | 2002-02-04 | 포만 제프리 엘 | 부동 소수점 상태 및 제어 레지스터 인스트럭션을 단일 사이클 |
| JP2008305185A (ja) * | 2007-06-07 | 2008-12-18 | Nec Electronics Corp | プロセッサ装置及び複合条件処理方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11340908B2 (en) | Reducing data hazards in pipelined processors to provide high processor utilization | |
| US6889316B2 (en) | Method and apparatus for restoring registers after cancelling a multi-cycle instruction | |
| US20010020267A1 (en) | Pipeline processing apparatus with improved efficiency of branch prediction, and method therefor | |
| JP2925818B2 (ja) | 並列処理制御装置 | |
| JPH052484A (ja) | スーパースカラプロセツサ | |
| US20080215859A1 (en) | Computer with high-speed context switching | |
| JPH06309165A (ja) | 情報処理装置 | |
| US5121474A (en) | Bit string data processor using dynamically addressable bit locations in memory so overlapping strings do not destroy data in memory | |
| JP3532835B2 (ja) | データ処理装置およびプログラム変換装置 | |
| JP2877531B2 (ja) | 並列演算処理装置 | |
| TWI864776B (zh) | 預測分支的方法和系統 | |
| JPH0228723A (ja) | ループ命令実行方式 | |
| JP3647930B2 (ja) | 動的ハイパースカラ・プロセッサ | |
| JP3431503B2 (ja) | 情報処理装置およびプログラム制御方法 | |
| US20050289330A1 (en) | Branch control method and information processor | |
| JPH06162067A (ja) | ベクトル命令制御装置および制御方法 | |
| JP2000187591A (ja) | ループ処理方式 | |
| JPS63240633A (ja) | 中央処理装置 | |
| JP2000305782A (ja) | 演算装置 | |
| JPH08171492A (ja) | 情報処理装置 | |
| JPH0844561A (ja) | ブースティング制御方法及びブースティング制御機構を備えたプロセッサ装置 | |
| JPH05165640A (ja) | マイクロプロセッサ | |
| JPH04125733A (ja) | パイプライン情報処理方式 | |
| JPH11328001A (ja) | 情報処理装置 | |
| JPH0492965A (ja) | ベクトル命令処理方式 |