JP3899114B2 - プロセッサ - Google Patents
プロセッサ Download PDFInfo
- Publication number
- JP3899114B2 JP3899114B2 JP2006126330A JP2006126330A JP3899114B2 JP 3899114 B2 JP3899114 B2 JP 3899114B2 JP 2006126330 A JP2006126330 A JP 2006126330A JP 2006126330 A JP2006126330 A JP 2006126330A JP 3899114 B2 JP3899114 B2 JP 3899114B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- condition
- comparison
- condition flag
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Advance Control (AREA)
Description
また、VLIW(Very Long Instruction Word)方式やスーパースカラ方式を用いることにより、実行時間の短縮を図っているプロセッサもある。この種のプロセッサは、個々のステージを処理する複数の並列動作可能な回路を備え、一のステージにおいて複数命令を同時並列に処理する。
分岐命令によって実行時間の短縮が阻害される問題を解消するために、従来のある種のプロセッサは、条件実行命令を処理する機能を備えている。条件実行命令とは、その命令が処理される際に本来の実質的な効果を生じるための条件を示す実行条件情報を付与された命令を言う。
図32は、そのようなプロセッサの代表的な構成例を示すブロック図である。プロセッサ90は、クロック信号に同期して動作し、当該クロック信号の各サイクルにおいて、命令の供給、解読、及び実行それぞれのステージを並列処理可能な命令供給部20、解読部30、及び実行部40からなる。各部は単一のクロックサイクルにおいて最大3個の命令を並列処理する。
命令供給部20は、命令フェッチ部21、及び命令レジスタ群22からなり、命令レジスタ群は第1レジスタ221、第2レジスタ222、及び第3レジスタ223を備えている。
実行部40は、実行制御部41、PC(Program Counter:プログラムカウンタ)部42、レジスタファイル43、第1演算部441、第2演算部442、第3演算部443、第1ゲート451、第2ゲート452、第3ゲート453、条件フラグレジスタ46、オペランドアクセス部47、データバス48、及びデータバス49を備えている。
実行部40において、実行制御部41は、命令デコーダ321乃至323から指示された制御信号に基づいて、実行部40の各構成要素を動作させる。PC部42は、次に処理すべき命令のアドレスを命令フェッチ部21へ出力する。
演算部441乃至443は、それぞれ、図示しない算術論理演算を行うALU(Arithmetic Logical Unit:数値演算ユニット)、乗算器、及びシフト演算を行うバレルシフタ等を内部に備え、入力されたデータに対して、実行制御部41からの制御に応じた演算を行うか、又は単に通過させる。当該演算の結果、又は通過した入力データは、ゲート451乃至453へ出力されるとともに、特に、比較命令に応じて行われた比較演算の結果値は、条件フラグレジスタ46へ出力される。
ゲート451乃至453は、条件フラグレジスタ46から与えられた値が真値である場合に、それぞれ演算部441乃至443から与えられた演算の結果をデータバス49を介してレジスタファイル43へ出力し、偽値である場合に当該結果を破棄する。
条件実行命令を用いることにより、例えば、図33のフローチャートに示した条件処理を、図34に示した分岐命令を含まない様式のプログラムに従って実行することができる。
当該実行条件情報は、実行条件となるべき条件フラグレジスタを表し、条件フラグレジスタが示されていない場合、当該命令は無条件実行命令であることを表す。
当該並列実行境界情報は、具体的には各命令に付与される並列実行境界フラグ値であり、0が次の命令と並列実行可能であることを示し、1が次の命令と並列実行不可能であることを示す。
命令1は汎用レジスタR0の内容とR1の内容とを比較し、R0<R1の場合に条件フラグレジスタC0及びC1にそれぞれ真値及び偽値を記憶させ、その他の場合にそれぞれ偽値及び真値を記憶させるための命令である。
プロセッサ90は、このように、条件実行命令を用いることにより、分岐命令を含まない様式のプログラムに従って条件処理を実行できるので、分岐命令により実行時間の短縮が阻害される問題を解消する。
また、プロセッサ90を対象とする従来のコンパイラは、複数の比較判断を複合して行う複合条件処理について、個々の比較判断に応じて制御を分岐させる様式のプログラムを生成する。具体例を挙げれば、図36のフローチャートに示した複合条件処理を実行させるために、図37に示したプログラムを生成する。
上記の問題に鑑み、本発明は、複合条件処理を従来よりも小規模なプログラムにより短時間で実行可能とするプロセッサの提供、並びに、当該プロセッサにおいて条件処理を行うための、従来よりも小規模、かつ短時間で実行可能なプログラムを生成するコンパイラの提供を目的とする。
また本発明の第1の特徴を有するプロセッサにおいて、前記解読部における前記第2の比較命令の解読の結果に応じて、前記演算部において前記第1の論理演算によって前記第2条件フラグ値を算出すると共に、前記真偽値と前記第1条件フラグ値を少なくとも2つの入力とし、前記第1の論理演算と異なる第2の論理演算によって第3条件フラグ値を算出し、前記第3条件フラグ値を前記第2の比較命令の命令コード中で指定される第3の条件フラグレジスタに格納し、前記命令記憶部で同時に記憶されている前記複数の命令の中に前記第1の比較命令、第2の比較命令および前記第1の条件実行命令の他に、さらに前記条件実行命令群に属する第2の条件実行命令を含んでいた場合に、前記第3条件フラグ値に応じて前記第2の条件実行命令の演算の結果が有効となるか無効となるかが決定されるものであっても良い。
この構成によれば、前記第1条件フラグ値を算出し、条件フラグレジスタに記憶させるための第1の比較命令と、当該第2条件フラグ値を算出するための第2の比較命令とを、命令セットに設け、当該プロセッサはこれらの比較命令を実行することによって、複数の比較条件各々の成否を示す真偽値を直接に演算して当該第2条件フラグ値を算出できる。即ち当該プロセッサは、複数の比較条件を複合して定まる複合比較条件の成否を示す条件フラグ値を、当該第1及び第2の比較命令に応じて算出することができる。
前記第2条件フラグ値を、前記第1条件フラグ値に代えて、又は前記1条件フラグ値と共に条件フラグレジスタに記憶し、さらに、前記第2条件フラグ値を用いて新たな条件フラグ値を算出することにより、当該プロセッサは、3以上の比較条件を複合して定まる複合比較条件に基づく複合比較条件の成否を示す条件フラグ値を算出できる。
この構成によれば、前記第2条件フラグ値と当該第3条件フラグ値との双方を算出するための第3の比較命令を命令セットに設け、当該プロセッサはこの比較命令を実行することによって、比較条件の成立、不成立それぞれを示す2つの条件フラグ値を算出できる。
これにより、当該プロセッサは、分岐命令を用いない従来よりも小規模なプログラムによって、if-then-else型の複合条件処理を従来よりも短時間で実行する。
この構成によれば、前記第2条件フラグ値と当該第4条件フラグ値との双方を算出するための第4の比較命令を命令セットに設け、当該プロセッサはこの比較命令を実行することによって、前記第1条件フラグ値に応じて、比較条件の成立、不成立それぞれを示すか、若しくは、共に不成立を示す2つの条件フラグ値を算出できる。
これにより、当該プロセッサは、当該2つの条件フラグ値のそれぞれを実行条件とする条件実行命令を用い、かつ分岐命令を用いないプログラムによって、入れ子構造になっているif-then-else型の複合条件処理を実行できる。
(4)本発明のプロセッサは、単一のクロックサイクルにおいて、第1比較条件の成否を示す第1条件フラグ値を算出するとともに、第2比較条件の成否を示す真偽値を算出し、当該真偽値と前記第1条件フラグ値とを論理演算することにより第2条件フラグ値を算出する演算手段を備える。
前記第2条件フラグ値を、前記第1条件フラグ値に代えて、又は前記1条件フラグ値と共に条件フラグレジスタに記憶し、さらに、前記(1)のプロセッサと組み合わせることにより、前記第2条件フラグ値を用いて新たな条件フラグ値を算出すれば、当該プロセッサは、複数のクロックサイクルに渡って3以上の比較条件を複合して定まる複合比較条件に基づく複合比較条件の成否を示す条件フラグ値を算出できる。
この構成によれば、前記第2条件フラグ値と当該第3条件フラグ値との双方を算出するための第3の比較命令を命令セットに設け、当該プロセッサはこの比較命令を実行することによって、比較判断結果の成立、不成立それぞれを示す2つの条件フラグ値を算出できる。当該プロセッサは、前記第1及び第3の比較命令を、単一のクロックサイクルにおいて並列処理することができる。
(6)また、前記(4)のプロセッサにおいて、前記演算手段は、前記クロックサイクルにおいて、さらに、前記比較演算の結果値の論理否定値を算出してもよい。
(7)本発明のプロセッサは、単一のクロックサイクルにおいて、第1比較条件の成否を示す真偽値を算出し、当該真偽値に基づいて第1条件フラグ値を算出するとともに、条件実行命令に応じた演算を行う演算手段と、前記クロックサイクルにおいて、当該第1条件フラグ値に応じて当該条件実行命令に応じて行われた演算の結果を無効化する無効化手段とを備える。
これにより、当該プロセッサは、当該比較命令と当該条件実行命令とを含む条件処理プログラムを実行する場合、両命令を単一のクロックサイクルにおいて並列処理することによって実行並列度を高めるので、従来よりも短時間で実行することができる。
この構成によれば、当該第2条件フラグ値を算出して条件フラグレジスタに記憶させるための第1の比較命令と、当該第1条件フラグ値を算出するための第2の比較命令とを、命令セットに設け、当該プロセッサはこれらの比較命令を実行することによって、複数の比較条件各々の成否を示す真偽値を直接に演算して当該第1条件フラグ値を算出できる。
この場合、当該プロセッサは、当該プログラムを実行する場合、当該第2の比較命令と前記条件実行命令とを単一のクロックサイクルにおいて並列処理することによって実行並列度を高めるので、従来よりも短時間で実行する。
即ち当該プロセッサは、前記第1及び第3の比較命令と、前記第1条件フラグ値を実行条件とする第1の条件実行命令と、前記第3条件フラグ値を実行条件とする第2の条件実行命令とを用い、かつ分岐命令を用いないプログラムによって、if-then-else型の複合条件処理を実行できる。
(10)また、前記(8)のプロセッサにおいて、前記演算手段は、前記クロックサイクルにおいて、さらに、前記真偽値の論理否定値を算出し、当該論理否定値と前記第2条件フラグ値とを論理演算することにより第4条件フラグ値を算出し、前記無効化手段は、前記クロックサイクルにおいて、前記第1条件フラグ値又は当該第4条件フラグ値の何れかに応じて前記条件実行命令に応じて行われた演算の結果を無効化してもよい。
即ち当該プロセッサは、前記第1及び第4の比較命令と、前記第1条件フラグ値を実行条件とする第1の条件実行命令と、前記第4条件フラグ値を実行条件とする第2の条件実行命令とを含み、かつ分岐命令を含まないプログラムによって、入れ子構造になっているif-then-else型の複合条件処理を実行できる。
(11)また、前記(7)のプロセッサにおいて、前記演算手段は、前記クロックサイクルにおいて、第2比較条件の成否を示す第2条件フラグ値を算出するとともに、前記真偽値と当該第2条件フラグ値とを論理演算することにより前記第1条件フラグ値を算出してもよい。
これにより、当該プロセッサは、前記(8)の効果を有し、さらに、当該第1及び第2の比較命令、並びに前記条件実行命令を、単一のクロックサイクルにおいて並列処理することによって実行並列度を高めるので、複合条件処理を前記(8)のプロセッサよりも短時間で実行する。
即ち当該プロセッサは、前記第1及び第3の比較命令と、前記第1条件フラグ値を実行条件とする第1の条件実行命令と、前記第3条件フラグ値を実行条件とする第2の条件実行命令とを含み、かつ分岐命令を含まないプログラムによって、if-then-else型の複合条件処理を実行できる。
(13)また、前記(11)のプロセッサにおいて、前記演算手段は、前記クロックサイクルにおいて、さらに、前記真偽値の論理否定値を算出し、当該論理否定値と前記第2条件フラグ値とを論理演算することにより第4条件フラグ値を算出し、前記無効化手段は、前記クロックサイクルにおいて、前記第1条件フラグ値又は当該第4条件フラグ値の何れかに応じて前記条件実行命令に応じて行われた演算の結果を無効化してもよい。
即ち当該プロセッサは、前記第1及び第4の比較命令と、前記第1条件フラグ値を実行条件とする第1の条件実行命令と、前記第4条件フラグ値を実行条件とする第2の条件実行命令とを含み、かつ分岐命令を含まないプログラムによって、入れ子構造になっているif-then-else型の複合条件処理を実行できる。
(14)本発明のプログラム変換方法は、対象プログラムコードから、第1比較条件の成否を評価する処理を記述している第1部分と、当該第1比較条件が成否何れかの場合に実行されるべき処理を記述している第2部分とを識別する識別ステップと、当該第1部分を、当該第1比較条件の成否を表す第1条件フラグ値を算出するための第1命令列に変換する第1変換ステップと、当該第2部分を、当該第1条件フラグ値に応じて無効化される条件実行命令からなる第2命令列に変換する第2変換ステップとを含み、当該第1命令列及び当該第2命令列は何れも分岐命令を含まないことを特徴とする。
(15)また、前記(14)のプログラム変換方法において、前記識別ステップは、さらに、当該対象プログラムコードから、前記第1比較条件の成否が、前記第2部分が実行されるべき場合と逆の場合に実行されるべき処理を記述している第3部分を識別し、前記第1変換ステップは、前記第1部分を、前記第1条件フラグ値、及びその論理否定値である第2条件フラグ値を算出するための第3命令列に変換し、前記プログラム変換方法は、さらに、当該第3部分を、当該第2条件フラグ値に応じて無効化される条件実行命令からなる第4命令列に変換する第3変換ステップを含み、当該第3命令列及び当該第4命令列は何れも分岐命令を含まないとしてもよい。
(16)また、前記(14)のプログラム変換方法において、前記第1比較条件の成否は、複数の個別比較条件の成否に応じて定まり、前記第1変換ステップは、前記第1部分を、当該個別条件の成否を表す条件フラグ値を算出し、当該条件フラグ値を論理演算することにより前記第1条件フラグ値を算出するための前記第1命令列に変換してもよい。
(17)また、前記(14)のプログラム変換方法において、前記識別ステップは、さらに、前記第2部分から、第2比較条件の成否を評価する処理を記述している第3部分と、当該第2比較条件が成否何れかの場合に実行されるべき処理を記述している第4部分とを識別し、前記第1変換ステップは、当該第3部分を、当該第2比較条件の成否を表す第2条件フラグ値を算出し、当該第2条件フラグ値と前記第1条件フラグ値とを論理演算することにより第3条件フラグ値を算出するための第3命令列に変換し、前記第2変換ステップは、当該第4部分を、当該第3条件フラグ値に応じて無効化される条件実行命令からなる第4命令列に変換し、当該第3命令列及び当該第4命令列は、何れも分岐命令を含まないとしてもよい。
(18)また、前記(17)のプログラム変換方法において、前記識別ステップは、さらに、前記第2部分から、前記第2比較条件の成否が、前記第4部分が実行されるべき場合と逆の場合に実行されるべき処理を記述している第5部分を識別し、前記第1変換ステップは、前記第3部分を、前記第2条件フラグ値及びその論理否定値を算出し、その各々を前記第1条件フラグ値と論理演算することにより、それぞれ前記第3条件フラグ値及び第4条件フラグ値を算出するための第5命令列に変換し、前記第2変換ステップは、さらに、当該第5部分を、当該第4条件フラグ値に応じて無効化される条件実行命令からなる第6命令列に変換し、当該第5命令列及び当該第6命令列は、何れも分岐命令を含まないとしてもよい。
(19)本発明のプログラム変換方法は、第1比較命令に応じて行われる条件フラグ値の算出処理と、第2命令に応じて当該条件フラグ値を参照して行われる所定処理とを並列実行可能なプロセッサを対象としたプログラム変換方法であって、対象プログラムにおいて、当該第1比較命令と、当該第1比較命令の実行完了後に実行されるべき第3命令と、当該第3命令よりも後に記述されている当該第2命令とを識別する識別ステップと、当該識別された第3命令と第2命令とを並べ替える再配置ステップとを含む。
(20)また、前記(19)のプログラム変換方法は、さらに、前記並べ替え後の第1比較命令と第2命令とが並列実行可能であることを示す並列実行境界情報を生成する並列実行境界情報生成ステップを含んでもよい。
(21)また、前記(19)のプログラム変換方法において、比較条件の成否を示す真偽値を算出し、当該真偽値と前記条件フラグ値とを論理演算することにより、新たな条件フラグ値を算出する処理であるとしてもよい。
これらの方法によれば、前記(19)と同様効果を有するプログラムが生成される。
(23)本発明のプログラム変換装置は、対象プログラムコードから、第1比較条件の成否を評価する処理を記述している第1部分と、当該第1比較条件が成否何れかの場合に実行されるべき処理を記述している第2部分とを識別する識別手段と、当該第1部分を、当該第1比較条件の成否を表す第1条件フラグ値を算出するための第1命令列に変換する第1変換手段と、当該第2部分を、当該第1条件フラグ値に応じて無効化される条件実行命令からなる第2命令列に変換する第2変換手段とを備え、当該第1命令列及び当該第2命令列は何れも分岐命令を含まないことを特徴とする。
(24)本発明のプログラム変換装置は、第1比較命令に応じて行われる条件フラグ値の算出処理と、第2命令に応じて当該条件フラグ値を参照して行われる所定処理とを並列実行可能なプロセッサを対象としたプログラム変換装置であって、対象プログラムにおいて、当該第1比較命令と、当該第1比較命令の実行完了後に実行されるべき第3命令と、当該第3命令よりも後に記述されている当該第2命令とを識別する識別手段と、当該識別された第3命令と第2命令とを並べ替える再配置手段とを備える。
(25)また、前記(24)に記載のプログラム変換装置は、さらに、前記並べ替え後の第1比較命令と第2命令とが並列実行可能であることを示す並列実行境界情報を生成する並列実行境界情報生成手段を備えてもよい。
(26)本発明のプログラム変換プログラムは、第1比較命令に応じて行われる条件フラグ値の算出処理と、第2命令に応じて当該条件フラグ値を参照して行われる所定処理とを並列実行可能なプロセッサを対象としたプログラム変換装置を、コンピュータを用いて実現するためのコンピュータ実行可能なプログラムであって、変換対象プログラムコードから、第1比較条件の成否を評価する処理を記述している第1部分と、当該第1比較条件が成否何れかの場合に実行されるべき処理を記述している第2部分とを識別する識別ステップと、当該第1部分を、当該第1比較条件の成否を表す第1条件フラグ値を算出するための第1命令列に変換する第1変換ステップと、当該第2部分を、当該第1条件フラグ値に応じて無効化される条件実行命令からなる第2命令列に変換する第2変換ステップとを前記コンピュータに実行させ、当該第1命令列及び当該第2命令列は何れも分岐命令を含まないことを特徴とする。
(27)本発明のプログラム変換プログラムは、第1比較命令に応じて行われる条件フラグ値の算出処理と、第2命令に応じて当該条件フラグ値を参照して行われる所定処理とを並列実行可能なプロセッサを対象としたプログラム変換装置を、コンピュータを用いて実現するためのコンピュータ実行可能なプログラムであって、変換対象プログラムにおいて、当該第1比較命令と、当該第1比較命令の実行完了後に実行されるべき第3命令と、当該第3命令よりも後に記述されている当該第2命令とを識別する識別ステップと、当該識別された第3命令と第2命令とを並べ替える再配置ステップとを前記コンピュータに実行させることを特徴とする。
(28)また、前記(27)のプログラムは、さらに、前記並べ替え後の第1比較命令と第2命令とが並列実行可能であることを示す並列実行境界情報を生成する並列実行境界情報生成ステップを前記コンピュータに実行させてもよい。
(29)本発明のプログラム記録媒体は、コンピュータ読み取り可能な記録媒体であって、前記(26)乃至(28)の何れかのプログラムを記録していることを特徴とする。
本実施の形態におけるプロセッサは、第1条件フラグ値と、比較命令に応じた比較演算の結果値とを論理演算することにより第2条件フラグ値を算出する機能を有する。当該第1条件フラグ値は、当該第2条件フラグ値の算出が行われるクロックサイクルにおいて条件フラグレジスタから読み出される値であってもよく、当該クロックサイクルにおいて並列実行される他の比較命令に応じて算出される値であってもよい。
以下、本実施の形態におけるプロセッサについて、図面を参照しながら詳細に説明する。
<1.1 全体構成>
図1は、本実施の形態におけるプロセッサの全体構成を示すブロック図である。プロセッサ10は、命令供給部20、解読部30、及び実行部50から構成される。
<1.2 実行部50の構成>
図2は、実行部50の構成を示すブロック図である。実行部50は、実行部40が備えている各構成要素に加えて、条件フラグ演算部51を備えている。実行部40の構成要素と同一の構成要素には同一の符号を付し、詳細な説明を省略する。
条件フラグ演算部51は、実行制御部52から与えられる制御信号に応じて、条件フラグレジスタ46から読み出した値又は演算部441乃至443から与えられた比較演算の結果値を単に通過させ、若しくは、条件フラグレジスタ46から読み出した値と当該比較演算の結果値とを論理演算し、又は当該比較演算の結果値どうしを論理演算することにより、条件フラグレジスタ46に記憶させるべき条件フラグ値を算出する。
前記クロックサイクルの後半期間において、条件フラグ演算部51から条件フラグ値を与えられたゲートは、当該条件フラグ値が真値である場合に、対応する演算部から与えられた演算結果をデータバス49を介してレジスタファイル43へ出力し、偽値である場合に当該結果を破棄する。
<1.3 条件フラグ演算部51の構成>
図3は、条件フラグ演算部51の構成を示すブロック図である。条件フラグ演算部51は、論理演算回路501乃至503と、セレクタ510乃至553とから構成される。
C0in乃至C6inには、それぞれ条件フラグレジスタC0乃至C6に記憶されている値が読み出されて入力される。E1乃至E3には、それぞれ演算部441乃至443によって行われた比較演算の結果値が入力される。
以下、演算部441及びゲート451に対応するデータを処理する論理演算回路501とセレクタ510乃至516、541、及び551について、代表して説明する。
論理演算回路501は、演算部441による比較演算の結果値E1とセレクタ541により選択された値C1とに対して、制御信号SE1に応じた論理演算を行うことにより1つ又は2つの値を、前記所定時期までに算出し、当該算出された値をA1にのみ、又はA1及びB1に出力する。当該論理演算回路の構成と、当該論理演算回路が行う論理演算については、後に詳述する。
セレクタ551は、セレクタ510乃至516を介して選択され、条件フラグレジスタC0乃至C6の何れかに記憶されることとなる値を、制御信号SG1に応じて選択して出力する。
この構成によって、条件フラグ演算部51における論理演算回路501乃至503は、クロックサイクルの前半期間において、第1条件フラグ値と、比較命令に応じて演算部441乃至443によって行われた比較演算の結果値とを論理演算して第2条件フラグ値を算出する。
当該第2条件フラグ値は、当該クロックサイクルの後半期間において、ゲート451乃至453を制御することによって条件実行命令に応じて行われた演算結果を無効化するとともに、条件フラグレジスタ46に記憶される。
<1.4 論理演算回路501の構成>
図4は、論理演算回路501の構成を示すブロック図である。論理演算回路501は、論理積演算器601、論理否定演算器602、論理和演算器603、論理否定演算器604及び605、論理積演算器606、並びにセレクタ607及び608から構成される。
C1には、セレクタ541の出力値が与えられる。当該出力値は、条件フラグレジスタC0乃至C6の何れかに保持されている値か、又は論理演算回路502又は503によって算出された値である。
A1及びB1には、それぞれセレクタ607及び608によって選択された値が出力される。
論理積演算器601は(E1&C1)を算出し、論理否定演算器602は〜(E1&C1)を算出する。
論理和演算器603は(E1|C1)を算出し、論理否定演算器604は〜(E1|C1)を算出する。
セレクタ607及び608は、制御信号SE1に応じて、これらの算出値を選択し、次の(1)乃至(4)の何れかに従ってA1及びB1に出力する。
(1)A1: E1、 B1: 〜E1
(2)A1:(E1&C1)、B1:〜(E1&C1)
(3)A1:(E1|C1)、B1:〜(E1|C1)
(4)A1:(E1&C1)、B1:(〜E1&C1)
なお、論理演算回路502及び503の構成は、論理演算回路501と同一である。
<1.5 命令セットと制御信号の詳細>
図5は、プロセッサ10が実行する比較命令の一覧である。命令欄は各命令のニーモニック及びオペランドを表し、意味欄は各命令に応じてプロセッサ10が行う処理を表す。
以下、文脈に応じて、条件フラグレジスタCmを単にCmと表記し、汎用レジスタRaを単にRaと表記する。
<1.5.1 cmpCC命令>
cmpCC命令は、CCの部分に図6に示した比較演算の何れかを指定する文字が表記された命令の総称である。各命令は、条件フラグレジスタCm及びCn、並びに汎用レジスタRa及びRbをオペランドとし、Cnは省略できる。ここで、m及びnは、それぞれ条件フラグレジスタを指定する0乃至7の何れかの数字であり、a及びbは、それぞれ汎用レジスタを指定する0乃至63の何れかの数字である。
この命令は、実行部50において実行制御部52が具体的に次のような制御信号を発することによって処理される。
ここで、演算部441が当該比較演算を実行し、その結果を論理演算回路501へ出力した場合について、代表して説明する。
また、セレクタ51m、52m、及び53mに対し、A1を選択するための制御信号S1m、S2m、及びS3mを与え、セレクタ51n、52n、及び53nに対し、B1を選択するための制御信号S1n、S2n、及びS3nを与える(ここで、m及びnは、当該比較命令により指定された具体的な数値である)。
同一クロックサイクルにおいて、演算部442又は演算部443が条件フラグ値Cm又はCnを実行条件とする条件実行命令を並列処理している場合、当該クロックサイクルの後半期間において、セレクタ552又は553は前記出力値を選択し、ゲート452又はゲート453を制御することによって、当該条件実行命令の実行結果を無効化する。
cmpCC Cm,Ra,Rb命令に対する制御信号は、前述した制御信号から、論理演算回路501の出力B1及び条件フラグレジスタCnに関する制御信号を省いたものである。
cmpCC命令を演算部442又は演算部443が処理する場合について、同様制御信号にて制御できるため説明を省略する。
<1.5.2 cmpCCa命令>
cmpCCa命令は、CCの部分に図6に示した比較演算の何れかを指定する文字が表記された命令の総称である。各命令は、条件フラグレジスタCm、Cn、及びCk、並びに汎用レジスタRa及びRbをオペランドとし、Cnは省略できる。ここで、m、n及びkは、それぞれ条件フラグレジスタを指定する0乃至7の何れかの数字であり、a及びbは、それぞれ汎用レジスタを指定する0乃至63の何れかの数字である。
ここで、Ckの値とは、過去のクロックサイクルにおいて比較命令に応じて算出されCkに既に記憶されている値か、又は、同一クロックサイクルにおいて並列処理される他の比較命令に応じて当該クロックサイクルの前半期間の所定時期までに算出される値である。
実行制御部52は、クロックサイクルが開始すると、当該比較命令を処理すべき演算部441乃至443の一つに、データバス48を介して汎用レジスタRa及びRbに保持されている値を供給し、当該演算部は、CCにより指定される比較演算を実行する。当該演算部は、その結果値を対応する論理演算回路へ出力する。
実行制御部52は、論理演算回路501に対し、論理積演算器601及び論理否定演算器602の出力を、それぞれA1及びB1として選択するための制御信号SE1を与える。
このように与えられた制御信号に応じて、セレクタ53m及びセレクタ53nの出力値は、それぞれ(result&Ck)及び〜(result&Ck)に確定する。実行部50の各構成要素を所定の伝播遅延時間を満たす素子で構成することにより、当該出力値はクロックサイクルの前半期間の所定時期までに確定する。
Cm及びCnは、当該クロックサイクルの終了時に前記出力値を記憶する。
cmpCCa命令を演算部442又は演算部443が処理する場合について、同様の制御信号にて制御できるため説明を省略する。
<1.5.3 cmpCCo命令>
cmpCCo命令は、CCの部分に図6に示した比較演算の何れかを指定する文字が表記された命令の総称である。各命令は、条件フラグレジスタCm、Cn、及びCk、並びに汎用レジスタRa及びRbをオペランドとし、Cnは省略できる。ここで、m、n及びkは、それぞれ条件フラグレジスタを指定する0乃至7の何れかの数字であり、a及びbは、それぞれ汎用レジスタを指定する0乃至63の何れかの数字である。
ここで、Ckの値とは、過去のクロックサイクルにおいて比較命令に応じて算出されCkに既に記憶されている値か、又は、同一クロックサイクルにおいて並列処理される他の比較命令に応じて当該クロックサイクルの前半期間の所定時期までに算出される値である。
セレクタ53m及びセレクタ53nの出力値は、クロックサイクルの前半期間の所定時期までに、それぞれ(result|Ck)及び〜(result|Ck)に確定する。
Cm及びCnは、当該クロックサイクルの終了時に前記出力値を記憶する。
cmpCCo命令を演算部442又は演算部443が処理する場合について、同様の制御信号にて制御できるため説明を省略する。
<1.5.4 cmpCCn命令>
cmpCCn命令は、CCの部分に図6に示した比較演算の何れかを指定する文字が表記された命令の総称である。各命令は、条件フラグレジスタCm、Cn、及びCk、並びに汎用レジスタRa及びRbをオペランドとし、Cnは省略できる。ここで、m、n及びkは、それぞれ条件フラグレジスタを指定する0乃至7の何れかの数字であり、a及びbは、それぞれ汎用レジスタを指定する0乃至63の何れかの数字である。
この命令に応じて、実行制御部52が発する制御信号は、論理演算回路に対し、論理積演算器601及び論理否定演算器602の出力を、それぞれA1及びB1として選択するための制御信号SE1を与える点を除いて、cmpCCa命令に対する制御信号と同様である。
当該クロックサイクルにおいて、演算部442又は演算部443が条件フラグ値Cm又はCnを実行条件とする条件実行命令を並列処理している場合、当該クロックサイクルの後半期間において、セレクタ552又は553は前記出力値を選択し、ゲート452又はゲート453を制御することによって、当該条件実行命令の実行結果を無効化する。
cmpCCn Cm,Ra,Rb,Ck命令に対する制御信号は、前述した制御信号から、論理演算回路501の出力B1及び条件フラグレジスタCnに関する制御信号を省いたものである。
cmpCCn命令を演算部442又は演算部443が処理する場合について、同様の制御信号にて制御できるため説明を省略する。
<1.5.4 命令フォーマット>
図7は、前記の各比較命令を、コンピュータ資源上において表す場合のフォーマットの一例である。
この例では、1つの比較命令を32ビット長とし、当該32ビットを分割してできる各フィールドにおいて、命令コード、オペランド、実行条件情報、並列実行境界情報を表すものとした。OPは命令コード、Cm、Cn、Ra、Rb及びCkは、上記説明に用いた記号に対応するオペランド、Pは実行条件情報、Eは並列実行境界情報を表すフィールドである。このうち特に、実行条件情報及び並列実行境界情報を表すフィールドは、比較命令を含む全ての命令に共通に設けられる。
<1.6 動作タイミングの具体例>
プロセッサ10によれば、例えば図36のフローチャートに示した複合条件処理を、図8に示した条件分岐命令を用いない様式のプログラムによって実行させることができる。同図に含まれる命令うち、命令1乃至3のそれぞれの実行ステージが、単一のクロックサイクルにおいて並列処理される場合の、当該クロックサイクル内での詳細な動作タイミングを説明する。
当該実行ステージが開始されると、実行制御部52からの制御信号に応じて、R1バスにレジスタR2の内容が出力され、L1バスに命令1に含まれる即値オペランド値0が出力され、第1演算部441は比較演算(R2≠0)を実行する。
R3バスにレジスタR0の内容、L3バスに命令3に含まれる即値オペランド値1が出力され、第3演算部443は加算演算(R0+1)を実行する。
これらの各演算は、それぞれの演算器において同時並行して実行され、条件フラグ演算期間における所定時期までに、比較演算(R2≠0)の結果値E1、及び比較演算(R0<R1)の結果値E2が確定する。
論理演算回路502は、(E2|C2out)及び〜(E2|C2out)をそれぞれA2及びB2に出力する。セレクタ520及び530はA2を選択し、セレクタ521及び531はB2を選択し、それぞれ条件フラグ演算期間の終了時までに、C0out及びC1outに出力する。
実行ステージの終了時に、条件フラグレジスタC0、C1及びC2は、それぞれC0out、C1out及びC2outの値を記憶し、R0レジスタはD1バスに出力された値(R0+1)を記憶する。
<1.7 まとめ>
以上説明したように、プロセッサ10は、第1条件フラグ値と、比較命令に応じた比較演算の結果値とを論理演算することにより第2条件フラグ値を算出する。当該第1条件フラグ値は、当該第2条件フラグ値の算出が行われるクロックサイクルにおいて条件フラグレジスタから読み出される値であってもよく、当該クロックサイクルにおいて並列実行される他の比較命令に応じて算出される値であってもよい。
<2.コンパイラ装置>
本実施の形態におけるコンパイラ装置は、上述したプロセッサ10を対象プロセッサとし、所定の条件処理を記述したプログラムを、分岐命令を含まない命令列に変換する。さらに、当該命令列おいて、実行結果の同一性が保証される限り、当該対象プロセッサによって並列実行可能な命令が一連配置されるように命令を並べ替えるとともに、当該並列実行可能な命令を示す実行境界情報を生成する。
<2.1 全体構成>
図10は、本実施の形態におけるコンパイラ装置100の全体構成を示すブロック図である。
本実施の形態では、当該ソースプログラムは、一例としてC言語で記述されているものとし、また、当該機械語命令列は、さらに連結編集処理を受けることによって実行可能な形式に変換されるオブジェクトコードであるとして説明する。
アセンブラコード生成部120は、条件処理変換部121を含み、命令スケジューリング部131は、依存関係解析部131及び命令再配置部136を含み、依存関係解析部131は、データ依存判定部132、逆依存判定部133、出力依存判定部134、及び条件フラグ依存判定部135を含む。
アセンブラコード生成部120は、コンパイラ上流部110により生成された中間コードから、アセンブラコード及び当該アセンブラコードに含まれる基本ブロックを表す基本ブロック情報を生成する。
アセンブラコード生成部120は、まず、従来のコンパイラと同様の処理を行うことにより、従来様式のアセンブラコードを生成する。このアセンブラコードは、条件処理を表す中間コードに対して分岐命令を用いて生成される。次に、条件処理変換部121は、当該従来様式のアセンブラコードを、条件分岐命令を用いない等価なアセンブラコードに変換する。条件処理変換部121における処理の詳細については後述する。
以下、従来の一般的な技術に属する事項については説明を省略し、本コンパイラにおける特徴的な処理について詳しく説明する。
<2.2 アセンブラコード生成部120の詳細>
アセンブラコード生成部120において、条件処理変換部121は、分岐命令を用いて条件処理を表した従来様式のアセンブラコードと、当該アセンブラコード中の基本ブロックを示す基本ブロック情報とを入力され、当該基本ブロック情報に基づいて、当該アセンブラコードにおいて条件処理を記述している部分を識別し、識別された部分を分岐命令を用いずに記述したアセンブラコードに変換するとともに、前記基本ブロック情報を変換後のアセンブラコード中の基本ブロックを示すように変更する。
<2.2.1 データ構造>
図11(A)は、条件処理変換部121へ入力されるアセンブラコード情報のデータ構造及び内容の一例であり、図11(B)のソースプログラムから中間コードを介して、アセンブラコード生成部120により生成される。
図12は、条件処理変換部121へ入力される基本ブロック情報のデータ構造及び内容の一例であり、図11(A)のアセンブラコード情報に対してアセンブラコード生成部120により生成される。
なお、図11(A)の命令を区分する区切り線は、便宜上、図12の基本ブロック情報により示される各命令範囲を明示するために記入したものであり、アセンブラコード情報は当該区切り線を示す情報を含まない。
<2.2.2 識別対象>
条件処理変換部121は、前記基本ブロック情報において、所定の先行ブロック及び後続ブロックを有する一連の基本ブロックを検出し、当該一連の基本ブロックに対応する前記アセンブラコード情報の部分を、条件処理を記述している部分であると識別する。条件処理変換部121は、6種類のそのような一連の基本ブロックを検出する。
図13(A)乃至(F)は、当該6種類のパターンを示している。同図に示したソースプログラム中、A、B及びCはそれぞれ一つの比較演算式を表し、一例としてx=y等と表記される式であり、B1、B2及びB3は文の並びを表す。
cmpeq C6,R0,R1
及び、
cmpne C6,R0,R1
であり、変数x及びyをそれぞれレジスタR0及びR1に移送する命令
mov R0,x
mov R1,y
に後続して配置される。
図15(A)乃至(F)は、図14(A)乃至(F)の各アセンブラコード情報に対応する基本ブロック情報であり、アセンブラコード生成部120により生成され、条件処理変換部121へ供給される。なお、同図中、先行ブロック欄及び後続ブロック欄の記号・は、図外の基本ブロック番号を表す。
図14(A)及び図15(A)において、基本ブロックb0が所定条件の成否を評価する処理を記述している部分であり、基本ブロックb1が当該条件の成立時に実行されるべき処理を記述している部分である。
図14(C)及び図15(C)、並びに図14(E)及び図15(E)では、基本ブロックb0乃至bn−1が所定条件の成否を評価する処理を記述している部分であり、基本ブロックbnが当該条件の成立時に実行されるべき処理を記述している部分である。
<2.2.3 条件処理変換部121の詳細>
条件処理変換部121は、基本ブロック情報において先行ブロック及び後続ブロックが図15(A)乃至(F)のように示されている一連の基本ブロックを検出し、アセンブラコード情報において当該検出された基本ブロックに対応する命令列を、分岐命令を用いない等価な命令列に変換する。
図17は、条件処理変換部121が行う照合変更処理の詳細を示すフローチャートである。
以下、図17のフローチャートを参照しながら、当該照合変更処理について説明する。
(ステップS100)基本ブロック情報の先頭基本ブロックから末尾の基本ブロックまでの各基本ブロックを順次照合起点基本ブロックとして、ステップS170までを繰り返す。
(ステップS110)照合情報(A)と当該照合起点基本ブロック以降の基本ブロック情報とを照合する。
(ステップS111)パターン全体で一致したか否か判断する。
(ステップS112)パターン全体で一致した場合、変更処理(A)を行い、再び基本ブロック情報の先頭基本ブロックから照合処理を繰り返す。
(ステップS120)照合情報(A)が一致しない場合、照合情報(B)と当該照合起点基本ブロック以降の基本ブロック情報とを照合する。
(ステップS121)パターン全体で一致したか否か判断する。
(ステップS122)パターン全体で一致した場合、変更処理(B)を行い、再び、基本ブロック情報の先頭基本ブロックから照合処理を繰り返す。
(ステップS130)照合情報(B)が一致しない場合、照合情報(C)と当該照合起点基本ブロック以降の基本ブロック情報とを照合する。
(ステップS131)パターン全体で一致したか否か判断する。
(ステップS132)パターン全体で一致した場合、変更処理(C)を行い、再び、基本ブロック情報の先頭基本ブロックから照合処理を繰り返す。
(ステップS140)照合情報(C)が一致しない場合、照合情報(D)と当該照合起点基本ブロック以降の基本ブロック情報とを照合する。
(ステップS141)パターン全体で一致したか否か判断する。
(ステップS142)パターン全体で一致した場合、変更処理(D)を行い、再び、基本ブロック情報の先頭基本ブロックから照合処理を繰り返す。
(ステップS150)照合情報(D)が一致しない場合、照合情報(E)と当該照合起点基本ブロック以降の基本ブロック情報とを照合する。
(ステップS151)パターン全体で一致したか否か判断する。
(ステップS152)パターン全体で一致した場合、変更処理(E)を行い、再び、基本ブロック情報の先頭基本ブロックから照合処理を繰り返す。
(ステップS160)照合情報(E)が一致しない場合、照合情報(F)と当該照合起点基本ブロック以降の基本ブロック情報とを照合する。
(ステップS161)パターン全体で一致したか否か判断する。
(ステップS162)パターン全体で一致した場合、変更処理(F)を行い、再び、基本ブロック情報の先頭基本ブロックから照合処理を繰り返す。
(ステップS170)ステップS100から繰り返す。基本ブロック情報の全ての基本ブロックを照合起点基本ブロックとして、何れの照合情報とも合致しなかった場合に処理を終了する。
以下、図18のフローチャートを参照しながら、当該照合処理について説明する。
(ステップS200)変数Bを照合起点基本ブロック番号とする。
(ステップS201)指定された照合情報の各行を順次対象行としてステップS230までを繰り返す。
(ステップS202)変数rを当該対象行の対照相対番号欄の値とする。対照相対番号欄の値がnの式で示されている場合は、初回のループにおけるステップS213で求めたnの値を用いてrの値を具体的に算出する。
(ステップS203)r=kならステップS220以降を実行し、k以外であればステップS210以降を実行する。
(ステップS210)照合情報の当該対象行と、基本ブロック番号欄が(B+r)である基本ブロック情報とを照合する。
(ステップS211)一致しない場合、ステップS241へ進む。
(ステップS212)一致した場合、r=0であり、かつ処理中の照合情報がC乃至Fの何れかであれば、ステップS213を実行する。
(ステップS213)nを算出する。nの算出は、一致した後続ブロック番号のうち(B+1)でない番号をTとすれば、処理中の照合情報がC又はDの場合は(T−B−1)により行い、E又はFの場合は(T−B)により行う。
(ステップS220)一方r=kならば、rを順次1からn−2として、ステップS223までを繰り返す。なお、ステップS213で求めたnについて1>(n−2)である場合、この繰り返し処理の本体は実行されない。
(ステップS221)照合情報の当該対象行と、基本ブロック番号欄が(B+r)である基本ブロック情報とを照合する。
(ステップS222)一致しない場合、ステップS241へ進む。
(ステップS223)ステップS220から繰り返す。
(ステップS230)ステップS201から繰り返す。
(ステップS240)パターン全体で一致したと判定する。このステップは、指定された照合情報の全ての行について一致したと判定された場合に実行される。
(ステップS241)パターン全体で一致しないと判定する。
以下、図19のフローチャートを参照しながら、当該基本ブロック照合処理について説明する。
(ステップS250)変数iを、順次対象行の照合先行ブロック欄の各要素としてステップS253までを繰り返す。
(ステップS251)iが*でなければ、ステップS252を実行する。
(ステップS252)基本ブロック番号欄が(B+r)である基本ブロック情報の先行ブロック欄を参照し、要素(B+i)がなければ、ステップS271へ進む。
(ステップS253)ステップS250から繰り返す。
(ステップS254)基本ブロック番号欄が(B+r)である基本ブロック情報の先行ブロック欄に未照合の要素があれば、ステップS255へ進む。
(ステップS255)対象行の照合先行ブロック欄に要素*がなければ、ステップS271へ進む。
(ステップS260)変数jを、順次対象行の照合後続ブロック欄の各要素としてステップS263までを繰り返す。
(ステップS261)jが*でなければ、ステップS262を実行する。
(ステップS262)基本ブロック番号欄が(B+r)である基本ブロック情報の後続ブロック欄を参照し、要素(B+j)がなければ、ステップS271へ進む。
(ステップS263)ステップS260から繰り返す。
(ステップS264)基本ブロック番号欄が(B+r)である基本ブロック情報の後続ブロック欄に未照合の要素があれば、ステップS265へ進む。
(ステップS265)対象行の照合後続ブロック欄に要素*がなければ、ステップS271へ進む。
(ステップS270)一致したと判定する。
(ステップS271)一致しないと判定する。
以下、図20のフローチャートを参照しながら、当該変更処理について説明する。
(ステップS300)変数Bを照合起点基本ブロック番号とする。
(ステップS301)指定された照合情報の各行を順次対象行としてステップS330までを繰り返す。
(ステップS302)変数rを当該対象行の対照相対番号欄の値とする。対照相対番号欄の値がnの式で示されている場合は、ステップS213で求めたnの値を用いてrの値を具体的に算出する。
(ステップS303)r=kならステップS320以降を実行し、k以外であればステップS310以降を実行する。
(ステップS310)基本ブロック(B+r)について基本ブロック変更処理を行う。
(ステップS320)一方r=kならば、rを順次1からn−2として、ステップS322までを繰り返す。なお、ステップS213で求めたnについて1>(n−2)である場合、この繰り返し処理は実行されない。
(ステップS321)基本ブロック(B+r)について基本ブロック変更処理を行う。
(ステップS322)ステップS320から繰り返す。
(ステップS330)ステップS301から繰り返す。
以下、図21のフローチャートを参照しながら、当該基本ブロック変更処理について説明する。
(ステップS400)アセンブラコード情報において基本ブロック(B+r)に含まれる命令を変更対象とし、変数iを順次対象行の変更処理欄の各要素として繰り返す。
(ステップS410)i=1ならば、ステップS411を実行する。
(ステップS411)変更対象に含まれる比較命令を、逆条件を評価する比較命令に変更する。
(ステップS420)i=2ならば、ステップS421を実行する。
(ステップS421)変更対象に含まれる比較命令を、当該比較命令に応じて算出される条件フラグ値と、直前の比較命令に応じて算出される条件フラグ値とを論理積演算した値を条件フラグ値として算出するための新たな比較命令に変更する。当該新たな比較命令は、対象プロセッサにおけるcmpCCa命令である。
(ステップS430)i=3ならば、ステップS431を実行する。
(ステップS431)変更対象に含まれる比較命令を、当該比較命令に応じて算出される条件フラグ値と、直前の比較命令に応じて算出される条件フラグ値とを論理和演算した値を条件フラグ値として算出するための新たな比較命令に変更する。当該新たな比較命令は、対象プロセッサにおけるcmpCCo命令である。
(ステップS440)i=4ならば、ステップS441を実行する。
(ステップS441)変更対象に含まれる比較命令を、当該比較命令に応じて算出される条件フラグ値を肯定条件フラグ値として算出すると共に、その論理否定値を否定条件フラグ値として算出するための新たな比較命令に変更する。当該新たな比較命令は、対象プロセッサにおける、条件フラグレジスタ対をオペランドとするcmpCC命令、cmpCCa命令、又はcmpCCo命令である。
(ステップS450)i=5ならば、ステップS451以降を実行する。
(ステップS451)変更対象に含まれる、比較命令を除く無条件実行命令を、直前の比較命令に応じて算出される条件フラグ値を実行条件とする条件実行命令に変更する。当該直前の比較命令に応じて2つの条件フラグ値が算出される場合、肯定条件フラグ値を実行条件とする条件実行命令に変更する。
(ステップS452)変更対象に、比較命令と、当該比較命令に応じて算出される条件フラグ値を実行条件とする条件実行命令とが含まれていれば、当該比較命令を、本来算出される条件フラグ値と、直前の比較命令に応じて算出される条件フラグ値とを論理積演算した値を条件フラグ値として算出するための新たな比較命令に変更する。
なお、このステップは上記で述べた処理の一実施形態であり、当該変更対象が、所定条件の成立時に実行されるべき処理を記述している部分であり、当該比較命令が、当該部分の中で別の所定条件の成否を評価する処理を記述している部分であり、当該比較命令に応じて算出される条件フラグ値を実行条件とする条件実行命令が、当該別の条件の成立時に実行されるべき処理を記述している部分に対応する。
(ステップS453)変更対象にラベルが含まれていれば除去する。
(ステップS460)i=6ならば、ステップS461以降を実行する。
(ステップS461)変更対象に含まれる、比較命令を除く無条件実行命令を、直前の比較命令に応じて算出される否定条件フラグ値を実行条件とする条件実行命令に変更する。
(ステップS462)変更対象に比較命令と、当該比較命令に応じて算出される条件フラグ値を実行条件とする条件実行命令とが含まれていれば、当該比較命令を、本来算出される条件フラグ値と、直前の比較命令に応じて算出される否定条件フラグ値とを論理積演算した値を条件フラグ値として算出するための新たな比較命令に変更する。
当該新たな比較命令は、対象プロセッサにおけるcmpCCn命令である。
(ステップS463)変更対象にラベルが含まれていれば除去する。
(ステップS470)i=7ならば、ステップS471を実行する。
(ステップS471)変更対象に含まれる分岐命令を除去する。
(ステップS480)i=8ならば、ステップS481以降を実行する。
(ステップS481)基本ブロック照合処理において最後に照合された基本ブロック情報の先行ブロック欄に未照合の要素がなかった場合、変更対象に含まれるラベルを除去する。
(ステップS482)前記未照合の要素がなかった場合には、基本ブロック情報において、基本ブロック番号がBである行について命令範囲を基本ブロック番号がBから(B+r)までの全ての行の命令範囲を含むように変更すると共に、後続ブロックを基本ブロック番号が(B+r)である行の後続ブロックに変更し、(B+r)を先行ブロックに含む行について先行ブロックの(B+r)をBに変更し、基本ブロック番号が(B+1)から(B+r)までの行を削除する。
<2.2.4 具体例>
前記照合変更処理を、図11(A)のアセンブラコード情報及び図12の基本ブロック情報に適用した場合に、条件処理変換部121が行う具体的な処理について説明する。この具体例では、パターン全体での一致が2回検出される。
ステップS100〜ステップS170の1回目のループでは、図12の基本ブロック情報における基本ブロック番号が10である行を起点行として、照合処理を行う。
ステップS110から呼び出される照合処理(A)では、図16(A)の照合情報の各行と前記起点行以降の基本ブロック情報とを照合する。ステップS200で変数Bを10とする。
先行ブロックを照合するステップS250〜ステップS253のループでは、当該対象行の対照先行ブロックが*のみであり、前記基本ブロック情報の先行ブロックの9は未照合となり、ステップS254で未照合要素があると判断する。ステップS255では当該対象行の対照先行ブロックが*を含んでいるのでステップS260へ進む。
ステップS201〜ステップS230の2回目のループでは、照合情報(A)の第2行を対象行とし、変数rを当該対象行の対照相対番号1とする。ステップS210から呼び出される基本ブロック照合処理で、当該対象行と基本ブロック番号が11である基本ブロック情報とを照合する。
ステップS260〜ステップS263のループでは、当該対象行の対照後続ブロックの要素2にBを加えた12と前記基本ブロック情報の先行プロックの12とを照合する。前記基本ブロック情報の先行プロックの15は未照合となり、ステップS264で未照合要素があると判断する。ステップS265では当該対象行の対照後続ブロックが*を含んでいないのでステップS271へ進み、合致しないと判定する。
ステップS120から呼び出される照合処理(B)では、図16(B)の照合情報の各行と前記起点行以降の基本ブロック情報とを照合する。この処理は前述した照合処理(A)と同様に実行されるので、詳細な説明を省略する。
ステップS100〜ステップS170の2回目のループでは、図10の基本ブロック情報における基本ブロック番号が11である行を起点として、照合処理を行い、照合処理(A)乃至(F)は何れも全体合致しないと判断する。
変換処理(A)では、ステップS300で変数Bを10とする。
ステップS400〜ステップS490の2回目のループでは、変数iを7とし、ステップS471で分岐命令107を除去する。
ステップS400〜ステップS490の1回目のループでは、変数iを5とする。ステップS451で、該当する無条件実行命令は命令108であり、当該命令を直前の比較命令106の肯定結果c6を実行条件とする条件実行命令に変更する。ステップS452の比較命令の変更処理は、該当する比較命令がないため行われない。ステップS453のラベルの除去は、該当するラベルがないため行われない。
ステップS400〜ステップS490の1回目のループでは、変数iを8とする。ステップS481では、基本ブロック番号が14である基本ブロック情報の先行ブロックに未照合の要素がないので、命令109に付されたラベルL3を除去する。ステップS482では、基本ブロック番号が13及び14の基本ブロック情報を削除し、基本ブロック番号12の命令範囲を105−109、後続ブロックを16とするとともに、14を先行ブロックに含む基本ブロック番号が16の基本ブロック情報について、先行ブロックの14を12に変更する。
ステップS482では、図23(A)の基本ブロック情報を、さらに基本ブロック番号を連続番号に変更し、当該変更に応じて先行ブロック及び後続ブロックを変更することにより、図23(B)の基本ブロック情報に更新する。
前記変換処理を実行した後、処理はステップS100へ戻り、図23(B)の基本ブロック情報における先頭行から末尾行までを順次起点行として、ステップS100〜ステップS170のループを繰り返す。
ステップS100〜ステップS170の1回目のループにおいて、図23(B)の基本ブロック情報における基本ブロック番号が10である行を起点行として、図16(F)の照合情報との全体合致が検出される。この動作について、前述した動作と異なる事項を説明する。
ステップS201〜ステップS230の1回目のループでは、照合情報(F)の第1行を対象行とし、変数rを当該対象行の対照相対番号0とする。ステップS210から呼び出される基本ブロック照合処理は、当該対象行と基本ブロック番号が10である基本ブロック情報とを照合し、合致したと判断する。
ステップS201〜ステップS230の2回目のループでは、照合情報(F)の第2行を対象行とし、変数rを当該対象行の対照相対番号kとする。r=kなので、ステップS203からステップS220〜ステップS223の繰り返し処理へ進むが、1>(n−2)なので、この繰り返し処理の本体は実行されない。
ステップS201〜ステップS230の4回目及び5回目のループにおいて、ステップS210から呼び出される基本ブロック照合処理は合致と判定し、ステップS240で全体合致と判定する。
変換処理(F)では、ステップS300で変数Bを10とする。変換処理における繰り返し処理について前述した事項は省略して、主として、アセンブラコード情報の変更処理を説明する。
照合情報(F)の第2行に対応する繰り返し処理の本体は実行されない。
照合情報(F)の第3行は、命令範囲103−104のアセンブラコード情報に適用され、変更処理1、3、4及び7にそれぞれ対応して、ステップS411では、比較命令103の評価条件を逆転することによりcmpne c6,r0,2をcmpeq c6,r0,2に変更し、ステップS413では、さらに直前の比較命令101の算出結果c6との論理和を算出する比較命令cmpeqo
c6,r0,2,c6に変更し、ステップS441では、さらに元の算出結果とその論理否定値とを算出する比較命令cmpeqo c0:c1,r0,2,c6に変更し、ステップS471では分岐命令104を除去する。
照合情報(F)の第5行は、命令範囲110のアセンブラコード情報に適用される。変更処理6に対応して、ステップS461では、無条件実行命令110を、直前の変更後の比較命令103の否定結果c1を実行条件とする条件実行命令に変更する。ステップS462の比較命令の変更処理は、該当する比較命令がないため行われない。ステップS463では、命令110に付されたラベルL2を削除する。
図24及び図25は、ここまでの処理により、図22のアセンブラコード情報及び図23(B)の基本ブロック情報がそれぞれ変更された結果である。
<2.3 命令スケジューリング部130の詳細>
命令スケジューリング部130は、条件処理変換部121により変換されたアセンブラコード情報と基本ブロック情報とを入力され、依存関係解析部131は、入力されたアセンブラコード情報における各基本ブロックを対象とし、対象基本ブロックに含まれる命令の実行順序に関する依存関係を表す依存グラフを生成し、命令再配置部136は、生成された依存グラフに基づいて、同一の実行結果が得られる範囲で、前記アセンブラコード情報において並列実行可能な命令が一連配置されるように命令を並べ替えると共に、当該一連配置された命令を示す並列実行境界情報を生成する。
(ステップS500)基本ブロック情報に示された各基本ブロックを対象基本ブロックとして、ステップS503までを繰り返す。
(ステップS501)依存関係解析部131は、アセンブラコード情報における当該対象基本ブロックの命令について、依存グラフを生成する。
(ステップS502)命令再配置部136は、生成された依存グラフに基づいて命令を並べ替えると共に、並列実行境界情報を生成する。
(ステップS503)ステップS500から繰り返す。
<2.3.1 依存関係>
第1命令と、後続配置された第2命令との間に実行順序に関する依存関係があるとは、第2命令を第1命令よりも先に実行した場合に、本来の順序で実行した場合と同一の実行結果が保証されないことを言う。依存関係にある先行命令をプレデセッサと言う。
(1)データ依存関係にある命令対:条件フラグレジスタを除くハードウェア資源(例えば汎用レジスタ)を定義する命令と、当該ハードウェア資源を参照する命令
(2)逆依存関係にある命令対:条件フラグレジスタを含むハードウェア資源を定義する命令と、当該ハードウェア資源を定義する命令
(3)出力依存関係にある命令対:条件フラグレジスタを含むハードウェア資源を定義する命令と、当該ハードウェア資源を定義する命令
(4)条件フラグ依存関係にある命令対:条件フラグレジスタを定義する命令と、当該条件フラグレジスタを参照する命令
を判定し、当該判定結果を示す依存グラフを生成する。
依存関係にある第1命令と、後続配置された第2命令との実行順序を逆転させない限りにおいて、両者が並列実行可能である場合には、当該第2命令の実行時期を当該第1命令と同一クロックサイクルまで繰り上げることが可能である。対象プロセッサにおいて、前記依存関係(2)(3)及び(4)にある命令対が、この関係に該当する。
図27は、依存グラフの一例を模式的に表している。依存グラフは有向グラフであり、ノードが命令を表し、実線エッジが並列実行不可能な依存関係を表し、点線エッジが並列実行可能な依存関係を表す。
<2.3.2 依存関係解析部131の詳細>
図28は、依存関係解析部131が行う依存関係解析処理の詳細を示すフローチャートである。
(ステップS600)対象基本ブロックに含まれる個々の命令に対応したノードを生成する。
(ステップS610)各命令対を対象として、ステップS660までを繰り返す。
(ステップS620)対象命令対がデータ依存関係にあるか否かを判断する。
(ステップS621)データ依存関係にあると判断された場合、対象命令対に対応するノード間に、データ依存関係を示す実線エッジを生成する。
(ステップS630)対象命令対が逆依存関係にあるか否かを判断する。
(ステップS631)逆依存関係にあると判断された場合、対象命令対に対応するノード間に、逆依存関係を示す点線エッジを生成する。
(ステップS640)対象命令対が出力依存関係にあるか否かを判断する。
(ステップS641)出力依存関係にあると判断された場合、対象命令対に対応するノード間に、出力依存関係を示す点線エッジを生成する。
(ステップS650)対象命令対が条件フラグ依存関係にあるか否かを判断する。
(ステップS651)条件フラグ依存関係にあると判断された場合、対象命令対に対応するノード間に、条件フラグ依存関係を示す点線エッジを生成する。
(ステップS660)ステップS610から繰り返す。
<2.3.3 命令再配置部136の詳細>
命令再配置部136は、依存関係にある命令の順序が逆転しない限りにおいて、前記アセンブラコード情報における並列実行可能な命令が一連配置されるように命令を並べ替えると共に、当該一連配置された命令を示す並列実行境界情報を生成する。
(ステップS700)未配置リストを、対象基本ブロックに含まれる各命令の命令番号からなるリストに初期化する。
(ステップS710)未配置リストに要素がある間、ステップS732までを繰り返す。
(ステップS711)データ依存関係にある先行命令がある場合に、何れの先行命令も未配置リストに含まれない命令を配置候補命令として判定し、配置候補リストを当該命令の命令番号からなるリストに初期化する。
(ステップS712)仮配置リストを空にする。
(ステップS720)配置候補リストに要素がある間、ステップS725までを繰り返す。
(ステップS721)配置候補リストに示された命令から、次に配置した場合に、未配置リストに示された命令の実行時間が最短になると予想される命令を、最良命令として判定する。
当該最良命令の命令番号を配置候補リストから削除する。
(ステップS722)当該最良命令が、仮配置リストに示された各命令と同一クロックサイクルにおいて並列実行可能か否かを判定する。
(1)並列実行可能な命令数は最大で3個(命令デコーダの制約)、
(2)並列実行される命令に応じて、実際に実行部で動作可能なハードウェア資源は最大で3個の演算部441乃至443、1個のオペランドアクセス部47、1個のPC部(分岐ユニット)42(実行部の制約)
である。当該最良命令と、仮配置リストに示された各命令とが、この制約を満たす場合のみ並列実行可能と判定する。
(ステップS723)当該最良命令の命令番号を、仮配置リストに追加する。
(ステップS724)仮配置リストに示された命令と逆依存関係、出力依存関係、又は条件フラグ依存関係にあり、かつ未配置リストに示された命令とデータ依存関係にない命令の命令番号を、配置候補リストに追加する。
(ステップS725)ステップS720から繰り返す。
(ステップS730)仮配置リストに示された各命令を順次出力する。このとき、最後に出力する命令の並列実行境界フラグを1、それ以外の命令の並列実行境界フラグを0として出力する。
(ステップS731)仮配置リストの要素を、未配置リストから削除する。
(ステップS732)ステップS710から繰り返す。
<2.3.4 具体例>
前記命令スケジューリング処理を、図24のアセンブラコード情報、及び図25の基本ブロック情報に適用した場合の具体例について説明する。
依存関係解析処理では、ステップS600で、命令100、101、103、105、106、108、110、及び111に対応して8つのノードを生成する。ステップS610〜ステップS660のループでは、当該8つの命令のうち2つからなる全ての命令対について、データ依存関係、逆依存関係、出力依存関係、及び条件フラグ依存関係があるか否かを判定し、依存関係があると判定された命令対に対応するノード間に判定された依存関係を示すエッジを生成する。この結果、図30に示した依存グラフが生成される。
ステップS710〜ステップS732の1回目のループでは、ステップS711で、データ依存関係にある先行命令を持たない命令100が配置候補命令と判定され、配置候補リストが{100}に初期化される。ステップS712で、仮配置リストが空{}とされる。
配置候補リストが空{}となる結果、ステップS730へ進み、命令100が並列実行境界フラグを1として確定配置され、ステップS731で、未配置リストが{101,103,105,106,108,110}となる。
ステップS720〜ステップS725の1回目のループでは、ステップS721で命令101が最良命令と判定され、配置候補リストは空{}となり、ステップS723で、仮配置リストに命令101が追加されて{101}となり、ステップS724で、配置候補リストに命令103が追加されて{103}となる。
ステップS720〜ステップS725の3回目のループでは、ステップS721で命令103が最良命令と判定され、配置候補リストは空{}となり、ステップS723で、仮配置リストに命令103が追加されて{101,103}となり、ステップS724で、配置候補リストに命令105及び命令110が追加されて{105,110}となる。
ステップS720〜ステップS725の5回目のループでは、ステップS721で命令110が最良命令と判定され、配置候補リストは空{}となり、ステップS722で、命令デコーダの個数の制限から命令110は仮配置リストに示された3個の命令との並列実行は不可能と判定される。
ステップS710〜ステップS732の3回目のループでは、既配置の命令100、命令101、命令103、及び命令105をプレデセッサとする命令106及び命令110が配置候補命令と判定され、配置候補リストが{106,110}に初期化され、ステップS712で、仮配置リストが空{}とされる。
ステップS720〜ステップS725の2回目のループでは、ステップS721で命令108が最良命令と判定され、配置候補リストは{110}となり、ステップS723で、仮配置リストに命令108が追加されて{106,108}となり、ステップS724で、命令の追加は行われず配置候補リストは{110}に維持される。
配置候補リストが空{}となる結果、ステップS730へ進み、命令106及び命令108が並列実行境界フラグを0として確定配置され、さらに命令110が並列実行境界フラグを1として確定配置され、ステップS731で、未配置リストが空{}となる。
<その他の変形例>
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)本発明は、実施の形態で説明したステップを含む方法であるとしてもよい。また、これらの方法を、コンピュータシステムを用いて実現するためのコンピュータプログラムであるとしてもよいし、前記プログラムを表すデジタル信号であるとしてもよい。
また、本発明は、電気通信回線、無線又は有線通信回線、若しくはインターネットに代表されるネットワーク等を経由して伝送される前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
また、前記プログラム又は前記デジタル信号は、前記記録媒体に記録されて移送され、若しくは、前記ネットワーク等を経由して移送され、独立した他のコンピュータシステムにおいて実施されるとしてもよい。
(2)本実施の形態において、プロセッサ10は、任意の条件フラグレジスタ対Cm:Cnに対してそれぞれ肯定条件フラグ値及び否定条件フラグ値を格納できるとしたが、肯定条件フラグ値及び否定条件フラグ値を格納できるレジスタ対を例えば、Cm:Cm+1(m=0、2、4の何れか)と限定してもよい。
(3)本実施の形態において、プロセッサ10により実行される比較命令の一例として、汎用レジスタ間の比較条件を評価する比較命令を挙げたが、オペランドのアドレシング種別は本願発明の主要部ではない。例えば、汎用レジスタと即値オペランドとを比較する比較命令を実装してもよい。
(4)本実施の形態において、コンパイラ装置100における条件処理変換部121が検出対象とするアセンブラコード情報を、一例として図14(A)乃至(F)に示すと共に、アセンブラコード生成部120が、これらのアセンブラコード情報を、それぞれ図13(A)乃至(F)のif文のパターンに対応して生成すると説明したが、これは、検出対象をif文に対応して生成されたアセンブラコード情報に限定する趣旨ではない。
(5)本実施の形態において、コンパイラ装置100における条件処理変換部121は、ソースプログラムにおいて条件処理を記述した部分に対応する中間コードから、アセンブラコード生成部120が一旦生成した従来様式のアセンブラコード情報を、当該アセンブラコード情報に対応する基本ブロック情報に基づいて検出し、分岐命令を含まないアセンブラコード情報に変換するものとして説明したが、アセンブラコード生成部120は、当該従来様式のアセンブラコード情報を生成せず、前記中間コードから直接、分岐命令を含まないアセンブラコード情報を生成してもよい。
(6)コンパイラ装置100において、命令スケジューリング部130は、アセンブラコード生成部120が一旦生成した従来様式のアセンブラコード情報における変換対象部分について、条件処理変換部121による変換前の実行所要サイクル数と、変換後の実行所要サイクル数とを比較し、前者が後者よりも小さいか等しい場合、アセンブラコード情報を変換前の状態に戻してもよい。
20 命令供給部
21 命令フェッチ部
22 命令レジスタ群
30 解読部
31 命令発行制御部
32 命令デコーダ群
40 実行部
41 実行制御部
42 PC部
43 レジスタファイル
46 条件フラグレジスタ
47 オペランドアクセス部
48 データバス
49 データバス
50 実行部
51 条件フラグ演算部
52 実行制御部
90 プロセッサ
100 コンパイラ装置
110 コンパイラ上流部
120 アセンブラコード生成部
121 条件処理変換部
130 命令スケジューリング部
131 依存関係解析部
131 命令スケジューリング部
132 データ依存判定部
133 逆依存判定部
134 出力依存判定部
135 条件フラグ依存判定部
136 命令再配置部
140 オブジェクトコード生成部
180 ソースファイル
190 オブジェクトファイル
221〜223 命令レジスタ
321〜323 命令デコーダ
441〜443 演算部
451〜453 ゲート
501〜503 論理演算回路
510〜553 セレクタ
601 論理積演算器
602 論理否定演算器
603 論理和演算器
604 論理否定演算器
605 論理否定演算器
606 論理積演算器
607〜608 セレクタ
Claims (7)
- 並列実行が可能な複数の命令を記憶する命令記憶部と、
前記命令記憶部で同時に記憶されている複数の命令の各々を解読する解読部と、
前記解読部における各々の解読の結果に応じて、複数の演算を並列に実行する演算部と、
各々が真または偽を示す値を保持する複数の条件フラグレジスタとを備えたプロセッサであって、
当該プロセッサが実行が可能な命令セット中には、
各々の命令コードにおいて、少なくとも2つのオペランドの指定、前記少なくとも2つのオペランドの値に対して実行する比較の条件の指定、及び前記複数の条件フラグレジスタの少なくとも1つの指定を行う複数の比較命令からなる比較命令群、および、
各々の命令コードにおいて、当該命令が解読された場合に実行される演算の指定および前記複数の条件フラグレジスタの少なくとも1つの指定を行い、当該指定された少なくとも1つの条件フラグレジスタに保持された値に応じて決まるフラグ値が真を示す場合に前記指定された演算の結果が有効となり、前記フラグ値が偽を示す場合に前記指定された演算の結果が無効となる複数の条件実行命令からなる条件実行命令群が含まれ、
前記演算部は、
前記命令記憶部で同時に記憶されている複数の命令の中に前記比較命令群に属する第1比較命令、第2比較命令、および前記条件実行命令群に属する第1条件実行命令が含まれていた場合、
前記第1比較命令の解読の結果に応じて、前記第1比較命令の命令コード中で指定される前記少なくとも2つのオペランドの値が前記第1比較命令の命令コード中で指定される比較の条件を満たすものであるか否かを示す第1条件フラグ値の算出、および当該第1条件フラグ値の前記第1比較命令の命令コード中で指定される第1条件フラグレジスタへの格納を実行し、
前記第2比較命令の解読の結果に応じて、前記第2比較命令の命令コード中で指定される前記少なくとも2つのオペランドの値が前記第2比較命令の命令コード中で指定される比較の条件を満たすものであるか否かを示す真偽値の算出、当該真偽値と前記第2比較命令の命令コード中で指定される前記第1条件フラグレジスタに保持される前の前記第1条件フラグ値とを少なくとも2つの入力とする第1論理演算による第2条件フラグ値の算出、および前記第2条件フラグ値の前記第2比較命令の命令コード中で指定される第2条件フラグレジスタへの格納を実行し、
前記第2条件フラグ値に応じて前記第1条件実行命令の演算の結果が有効となるか無効となるかが決定する
ことを特徴とするプロセッサ。 - 前記演算部は、
前記第2比較命令の解読の結果に応じて、さらに、前記真偽値と前記第1条件フラグ値とを少なくとも2つの入力とし、前記第1論理演算と異なる第2論理演算によって第3条件フラグ値を算出し、当該第3条件フラグ値を前記第2比較命令の命令コード中で指定される第3条件フラグレジスタに格納し、
前記命令記憶部で同時に記憶されている前記複数の命令の中に前記第1比較命令、第2比較命令および前記第1条件実行命令の他に、さらに前記条件実行命令群に属する第2条件実行命令が含まれていた場合に、前記第3条件フラグ値に応じて前記第2条件実行命令の演算の結果が有効となるか無効となるかを決定する
ことを特徴とする請求項1に記載のプロセッサ。 - 前記第2条件フラグ値は、前記真偽値と前記第1条件フラグ値とを2つの入力とする論理積によって算出され、
前記第3条件フラグ値は、前記論理積の論理否定によって算出される
ことを特徴とする請求項2に記載のプロセッサ。 - 前記第2条件フラグ値は、前記真偽値と前記第1条件フラグ値とを2つの入力とする論理和によって算出され、
前記第3条件フラグ値は、前記論理和の論理否定によって算出される
ことを特徴とする請求項2に記載のプロセッサ。 - 前記第2条件フラグ値は、前記真偽値と前記第1条件フラグ値とを2つの入力とする論理積によって算出され、
前記第3条件フラグ値は、前記真偽値を論理否定した値と前記第1条件フラグ値とを2つの入力とする論理積によって算出される
ことを特徴とする請求項2に記載のプロセッサ。 - 並列実行が可能な複数の命令を記憶する命令記憶部と、
前記命令記憶部で同時に記憶されている複数の命令の各々を解読する解読部と、
前記解読部における各々の解読の結果に応じて、複数の演算を並列に実行する演算部と、
各々が真または偽を示す値を保持する複数の条件フラグレジスタとを備えたプロセッサであって、
当該プロセッサが実行が可能な命令セット中には、
命令コードにおいて、少なくとも2つのオペランドの指定、前記少なくとも2つのオペランドの値に対して実行する比較の条件の指定、及び前記複数の条件フラグレジスタの少なくとも2つの指定を行う比較命令、および、
各々の命令コードにおいて、当該命令が解読された場合に実行される演算の指定および前記複数の条件フラグレジスタの少なくとも1つの指定を行い、当該指定された少なくとも1つの条件フラグレジスタに保持された値に応じて決まるフラグ値が真を示す場合に前記指定された演算の結果が有効となり、前記フラグ値が偽を示す場合に前記指定された演算の結果が無効となる複数の条件実行命令からなる条件実行命令群が含まれ、
前記演算部は、
前記命令記憶部で同時に記憶されている複数の命令の中に前記比較命令および前記条件実行命令群に属する第1条件実行命令が含まれていた場合、
前記比較命令の解読の結果に応じて、前記比較命令の命令コード中で指定される少なくとも2つのオペランドの値が前記比較命令の命令コード中で指定される比較の条件を満たすものであるか否かを示す第1条件フラグ値の算出、前記第1条件フラグ値を論理否定した第2条件フラグ値の算出、前記第1条件フラグ値の前記比較命令の命令コード中で指定される第1条件フラグレジスタへの格納、および前記第2条件フラグ値の前記比較命令の命令コード中で指定される第2条件フラグレジスタへの格納を実行し、
前記第1条件フラグ値または前記第2条件フラグ値のいずれか一方に応じて前記第1の条件実行命令の演算の結果が有効となるか無効となるかを決定する
ことを特徴とするプロセッサ。 - 前記演算部は、
前記命令記憶部で同時に記憶されている前記複数の命令の中に前記比較命令および前記第1条件実行命令の他に、さらに前記条件実行命令群に属する第2条件実行命令が含まれていた場合に、前記第1条件フラグ値に応じて前記第1条件実行命令の演算の結果が有効となるか無効となるかを決定し、前記第2条件フラグ値に応じて前記第2条件実行命令の演算の結果が有効となるか無効となるかを決定する
ことを特徴とする請求項6に記載のプロセッサ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006126330A JP3899114B2 (ja) | 2006-04-28 | 2006-04-28 | プロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006126330A JP3899114B2 (ja) | 2006-04-28 | 2006-04-28 | プロセッサ |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002174927A Division JP3851228B2 (ja) | 2002-06-14 | 2002-06-14 | プロセッサ、プログラム変換装置及びプログラム変換方法、並びにコンピュータプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006209805A JP2006209805A (ja) | 2006-08-10 |
JP3899114B2 true JP3899114B2 (ja) | 2007-03-28 |
Family
ID=36966496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006126330A Expired - Fee Related JP3899114B2 (ja) | 2006-04-28 | 2006-04-28 | プロセッサ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3899114B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4228241B2 (ja) | 2006-12-13 | 2009-02-25 | ソニー株式会社 | 演算処理装置 |
GB2480285A (en) * | 2010-05-11 | 2011-11-16 | Advanced Risc Mach Ltd | Conditional compare instruction which sets a condition code when it is not executed |
JP5813484B2 (ja) * | 2011-11-30 | 2015-11-17 | ルネサスエレクトロニクス株式会社 | Vliwプロセッサと命令構造と命令実行方法 |
-
2006
- 2006-04-28 JP JP2006126330A patent/JP3899114B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2006209805A (ja) | 2006-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3851228B2 (ja) | プロセッサ、プログラム変換装置及びプログラム変換方法、並びにコンピュータプログラム | |
JP5512803B2 (ja) | ベクトル命令を取り扱うためのデータ処理装置および方法 | |
EP2569694B1 (en) | Conditional compare instruction | |
KR102413832B1 (ko) | 벡터 곱셈 덧셈 명령 | |
JP3599409B2 (ja) | 分岐予測装置 | |
US9329866B2 (en) | Methods and apparatus for adapting pipeline stage latency based on instruction type | |
KR100900364B1 (ko) | 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체 | |
CN108780395B (zh) | 矢量预测指令 | |
JP2019511056A (ja) | 複素数乗算命令 | |
JP4973101B2 (ja) | 自動合成装置 | |
US6035122A (en) | Compiler for converting source program into object program having instruction with commit condition | |
KR100316078B1 (ko) | 파이프라인방식프로세서 | |
JPH1165844A (ja) | パイプラインバイパス機能を有するデータ処理装置 | |
JP5326314B2 (ja) | プロセサおよび情報処理装置 | |
JP3899114B2 (ja) | プロセッサ | |
JPH0769795B2 (ja) | コンピュータ | |
JPH07219769A (ja) | マイクロプロセッサ | |
US5991874A (en) | Conditional move using a compare instruction generating a condition field | |
JP2001243070A (ja) | プロセッサ及び分岐予測方法並びにコンパイル方法 | |
JP3915019B2 (ja) | Vliwプロセッサ、プログラム生成装置、および記録媒体 | |
JP3727324B2 (ja) | プロセッサ及びコンパイル装置 | |
JP2503223B2 (ja) | 先行制御方式 | |
JP3838360B2 (ja) | マイクロプロセッサ | |
JP2007515718A (ja) | 実行フローシノニムのための方法及び装置 | |
JPH08292887A (ja) | 命令の分岐方法およびプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061130 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20061212 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20061222 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110105 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120105 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130105 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |