JP2002082800A - プログラム実行装置及び方法 - Google Patents
プログラム実行装置及び方法Info
- Publication number
- JP2002082800A JP2002082800A JP2000270677A JP2000270677A JP2002082800A JP 2002082800 A JP2002082800 A JP 2002082800A JP 2000270677 A JP2000270677 A JP 2000270677A JP 2000270677 A JP2000270677 A JP 2000270677A JP 2002082800 A JP2002082800 A JP 2002082800A
- Authority
- JP
- Japan
- Prior art keywords
- execution
- instruction
- pattern data
- execution pattern
- instructions
- 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)
Abstract
(57)【要約】
【課題】 条件によって異なる命令を実行する際の命令
数を削減する。 【解決手段】 命令フォーマットとしてオペコード、判
定条件の他に真の場合の実行パターン及び偽の場合の実
行パターンを規定する。演算部18で判定条件を判定
し、該当する実行パターンをパターンレジスタ16に格
納する。実行パターンに基づき直後の複数命令の実行、
不実行を決定する。例えば、直後の命令列がA、B、C
と存在し、真の実行パターンが001である場合、判定
条件が真の場合には直後の命令Aを不実行(1)とし、
命令列B、Cを順次実行する(0)。実行/不実行は、
実行パターンのデータに基づきレジスタ20あるいはメ
モリ24への書込を許可/禁止することにより行われ
る。
数を削減する。 【解決手段】 命令フォーマットとしてオペコード、判
定条件の他に真の場合の実行パターン及び偽の場合の実
行パターンを規定する。演算部18で判定条件を判定
し、該当する実行パターンをパターンレジスタ16に格
納する。実行パターンに基づき直後の複数命令の実行、
不実行を決定する。例えば、直後の命令列がA、B、C
と存在し、真の実行パターンが001である場合、判定
条件が真の場合には直後の命令Aを不実行(1)とし、
命令列B、Cを順次実行する(0)。実行/不実行は、
実行パターンのデータに基づきレジスタ20あるいはメ
モリ24への書込を許可/禁止することにより行われ
る。
Description
【0001】
【発明の属する技術分野】本発明はプログラム実行装
置、特に条件により異なる命令を実行する装置及び方法
に関する。
置、特に条件により異なる命令を実行する装置及び方法
に関する。
【0002】
【従来の技術】プロセッサは、予め命令メモリに蓄えら
れた命令列にしたがって順次処理を行うが、ある処理の
結果によって処理の流れを変える必要が生じる場合が少
なくない。処理の流れを変える方法として、以下の3つ
が知られている。
れた命令列にしたがって順次処理を行うが、ある処理の
結果によって処理の流れを変える必要が生じる場合が少
なくない。処理の流れを変える方法として、以下の3つ
が知られている。
【0003】(1)条件実行命令 (2)条件分岐命令 (3)スキップ命令 上記において、(1)の条件実行命令は、各命令ごとに
条件実行ビットを付加し、このビットが条件実行となっ
ていれば、命令実行時に条件を判断して満たされている
命令の処理を行うものである。条件は、直前の命令の演
算結果の正負等である。もし、ビットが条件実行でなけ
れば条件によらずその命令の処理を行う。
条件実行ビットを付加し、このビットが条件実行となっ
ていれば、命令実行時に条件を判断して満たされている
命令の処理を行うものである。条件は、直前の命令の演
算結果の正負等である。もし、ビットが条件実行でなけ
れば条件によらずその命令の処理を行う。
【0004】これにより、条件が満たされている場合と
そうでない場合で異なる命令を実行できる。条件実行ビ
ットは、条件の種類の識別を行うために通常4ビット、
8ビットなど複数ビットが割り当てられる場合が多い。
そうでない場合で異なる命令を実行できる。条件実行ビ
ットは、条件の種類の識別を行うために通常4ビット、
8ビットなど複数ビットが割り当てられる場合が多い。
【0005】また、(2)の条件分岐命令では、各命令
ごとに条件実行ビットは付加されないが、処理の流れを
変える場合に実行する命令列そのものを切り替える。す
なわち、条件分岐命令を使用し、プログラム時に用意し
ておいた条件に応じた複数の命令列のうち、どれを実行
するかを選択する。
ごとに条件実行ビットは付加されないが、処理の流れを
変える場合に実行する命令列そのものを切り替える。す
なわち、条件分岐命令を使用し、プログラム時に用意し
ておいた条件に応じた複数の命令列のうち、どれを実行
するかを選択する。
【0006】さらに、(3)のスキップ命令では、
(2)と同様に条件実行ビットは付加されず、スキップ
命令により直後の命令を実行するあるいは実行しないの
選択を行うことにより処理の流れを変えるものである。
処理の流れを変える場合には対象とする命令の直前にス
キップ命令を配置する。
(2)と同様に条件実行ビットは付加されず、スキップ
命令により直後の命令を実行するあるいは実行しないの
選択を行うことにより処理の流れを変えるものである。
処理の流れを変える場合には対象とする命令の直前にス
キップ命令を配置する。
【0007】
【発明が解決しようとする課題】しかしながら、(1)
の条件実行命令においては、どの条件で実行を制御する
かを決定するための条件実行ビットを各命令ごとに付加
する必要があり、命令長が増大して必要となる命令メモ
リサイズが大きくなる問題がある。
の条件実行命令においては、どの条件で実行を制御する
かを決定するための条件実行ビットを各命令ごとに付加
する必要があり、命令長が増大して必要となる命令メモ
リサイズが大きくなる問題がある。
【0008】また、(2)の条件分岐命令や(3)のス
キップ命令においては、処理の流れを変える箇所毎に分
岐あるいはスキップさせるための命令が必要となり、し
たがって処理が複雑になるほど分岐命令やスキップ命令
が多く挿入され、全体の命令数が増大して命令メモリサ
イズも大きくなる問題がある。
キップ命令においては、処理の流れを変える箇所毎に分
岐あるいはスキップさせるための命令が必要となり、し
たがって処理が複雑になるほど分岐命令やスキップ命令
が多く挿入され、全体の命令数が増大して命令メモリサ
イズも大きくなる問題がある。
【0009】本発明は、上記従来技術の有する課題に鑑
みなされたものであり、その目的は、条件によって異な
る命令を実行するための命令数を削減でき、これにより
必要とする命令メモリサイズを縮小化して効率的にプロ
グラムを実行できる装置を提供することにある。
みなされたものであり、その目的は、条件によって異な
る命令を実行するための命令数を削減でき、これにより
必要とする命令メモリサイズを縮小化して効率的にプロ
グラムを実行できる装置を提供することにある。
【0010】
【課題を解決するための手段】上記目的を達成するため
に、本発明のプログラム実行装置は、連続する複数の命
令の実行あるいは不実行を規定する実行パターンデータ
を記憶する記憶手段と、前記記憶手段から前記実行パタ
ーンデータを順次読み出し、この実行パターンデータに
したがって前記連続する複数の命令を実行しあるいは不
実行とする制御手段とを有する。従来のスキップ命令の
ように、直後の1つの命令を制御対象として条件に応じ
て実行あるいは不実行を選択するのではなく、連続する
複数の命令(命令列)に対してその実行あるいは不実行
を規定する実行パターンデータを用いて異なる処理を実
行する。実行パターンデータは記憶手段に記憶され、あ
る命令を実行するか否かはこの実行パターンデータによ
り決定される。実行パターンデータを決定しておくこと
で、複数の命令に対して一括して実行あるいは不実行を
制御できるので、命令数を削減することができる。
に、本発明のプログラム実行装置は、連続する複数の命
令の実行あるいは不実行を規定する実行パターンデータ
を記憶する記憶手段と、前記記憶手段から前記実行パタ
ーンデータを順次読み出し、この実行パターンデータに
したがって前記連続する複数の命令を実行しあるいは不
実行とする制御手段とを有する。従来のスキップ命令の
ように、直後の1つの命令を制御対象として条件に応じ
て実行あるいは不実行を選択するのではなく、連続する
複数の命令(命令列)に対してその実行あるいは不実行
を規定する実行パターンデータを用いて異なる処理を実
行する。実行パターンデータは記憶手段に記憶され、あ
る命令を実行するか否かはこの実行パターンデータによ
り決定される。実行パターンデータを決定しておくこと
で、複数の命令に対して一括して実行あるいは不実行を
制御できるので、命令数を削減することができる。
【0011】ここで、前記実行パターンデータはビット
列から構成され、前記ビット列の各ビットが前記複数の
命令それぞれの実行あるいは不実行に対応することが好
適である。
列から構成され、前記ビット列の各ビットが前記複数の
命令それぞれの実行あるいは不実行に対応することが好
適である。
【0012】また、前記制御手段は、前記命令を実行し
た結果のデータの書込を許可あるいは禁止することによ
り前記命令の実行あるいは不実行を制御することが好適
である。ある命令をALU等で実行したとしても、その
実行結果をレジスタ等に書き込まない限り、その結果は
反映されず、実質的に命令が実行されないことと等しく
なる。書込を許可することで命令が実行され、書込を禁
止すれば命令を不実行とできる。書き込みの許可/禁止
は、実行パターンデータの0と1で区別することができ
る。
た結果のデータの書込を許可あるいは禁止することによ
り前記命令の実行あるいは不実行を制御することが好適
である。ある命令をALU等で実行したとしても、その
実行結果をレジスタ等に書き込まない限り、その結果は
反映されず、実質的に命令が実行されないことと等しく
なる。書込を許可することで命令が実行され、書込を禁
止すれば命令を不実行とできる。書き込みの許可/禁止
は、実行パターンデータの0と1で区別することができ
る。
【0013】本発明において、前記命令には、オペコー
ド及び前記実行パターンデータが含まれる。実行パター
ンデータを含めることで、次に続く複数の命令に対して
実行あるいは不実行を制御できる。
ド及び前記実行パターンデータが含まれる。実行パター
ンデータを含めることで、次に続く複数の命令に対して
実行あるいは不実行を制御できる。
【0014】条件に応じて処理の流れを変えるには、条
件に応じて実行パターンデータを規定しておけばよい。
例えば、命令に判定条件及び前記判定条件が真の場合の
実行パターンデータと偽の場合の実行パターンデータを
含み、前記判定条件の真偽に応じて真あるいは偽のいず
れかの実行パターンデータを前記記憶手段に記憶すれば
よい。
件に応じて実行パターンデータを規定しておけばよい。
例えば、命令に判定条件及び前記判定条件が真の場合の
実行パターンデータと偽の場合の実行パターンデータを
含み、前記判定条件の真偽に応じて真あるいは偽のいず
れかの実行パターンデータを前記記憶手段に記憶すれば
よい。
【0015】本発明のプログラム実行装置は、マイクロ
プロセッサに適用することができる。
プロセッサに適用することができる。
【0016】また、本発明は、プロセッサで実行される
プログラム実行方法を提供する。この方法は、オペコー
ド及び実行パターンデータを含む命令を読み出し、前記
実行パターンデータに基づき、前記命令の後に続く複数
の命令を実行あるいは不実行とすることを特徴とする。
プログラム実行方法を提供する。この方法は、オペコー
ド及び実行パターンデータを含む命令を読み出し、前記
実行パターンデータに基づき、前記命令の後に続く複数
の命令を実行あるいは不実行とすることを特徴とする。
【0017】ここで、前記命令には、判定条件及び前記
判定条件が真の場合の実行パターンデータ及び偽の場合
の実行パターンデータが含まれ、前記判定条件が成立す
るか否かを判定し、前記判定条件が成立する場合には、
前記真の場合の実行パターンデータに基づき前記命令の
後に続く複数の命令を実行あるいは不実行とし、前記判
定条件が成立しない場合には、前記偽の場合の実行パタ
ーンデータに基づき前記命令の後に続く複数の命令を実
行あるいは不実行とすることが好適である。
判定条件が真の場合の実行パターンデータ及び偽の場合
の実行パターンデータが含まれ、前記判定条件が成立す
るか否かを判定し、前記判定条件が成立する場合には、
前記真の場合の実行パターンデータに基づき前記命令の
後に続く複数の命令を実行あるいは不実行とし、前記判
定条件が成立しない場合には、前記偽の場合の実行パタ
ーンデータに基づき前記命令の後に続く複数の命令を実
行あるいは不実行とすることが好適である。
【0018】また、前記実行パターンデータはビット列
から構成され、前記ビット列の各ビットが前記複数の命
令のそれぞれの実行あるいは不実行を規定することが好
適である。
から構成され、前記ビット列の各ビットが前記複数の命
令のそれぞれの実行あるいは不実行を規定することが好
適である。
【0019】また、前記実行パターンデータはレジスタ
に記憶され、前記レジスタに記憶された前記実行パター
ンデータを最下位ビットから順次読み出し、読み出した
ビットの値に基づき前記複数の命令を順次実行あるいは
不実行とすることができる。レジスタのビット数は任意
であり、実行パターンデータ以上のビット数を有してい
てもよい。実行パターンデータ以上のビット(余分のビ
ット)に対しては、実行を意味する値を書き込むことが
できる。
に記憶され、前記レジスタに記憶された前記実行パター
ンデータを最下位ビットから順次読み出し、読み出した
ビットの値に基づき前記複数の命令を順次実行あるいは
不実行とすることができる。レジスタのビット数は任意
であり、実行パターンデータ以上のビット数を有してい
てもよい。実行パターンデータ以上のビット(余分のビ
ット)に対しては、実行を意味する値を書き込むことが
できる。
【0020】本方法において、前記複数の命令の実行あ
るいは不実行は、前記実行パターンデータの値に基づき
命令実行の結果書込を許可あるいは禁止することにより
行われることが好適である。
るいは不実行は、前記実行パターンデータの値に基づき
命令実行の結果書込を許可あるいは禁止することにより
行われることが好適である。
【0021】
【発明の実施の形態】以下、図面に基づき本発明の実施
形態について説明する。
形態について説明する。
【0022】図1には、本実施形態に係るプログラム実
行装置の構成ブロック図が示されている。プログラム実
行装置は、命令メモリ10、命令実行制御部12、パタ
ーン選択部14、パターンレジスタ16、演算部(AL
U)18、レジスタ20、メモリ制御部22及びデータ
メモリ24を有して構成される。
行装置の構成ブロック図が示されている。プログラム実
行装置は、命令メモリ10、命令実行制御部12、パタ
ーン選択部14、パターンレジスタ16、演算部(AL
U)18、レジスタ20、メモリ制御部22及びデータ
メモリ24を有して構成される。
【0023】命令メモリ10には、命令列が格納されて
おり、命令を順次命令実行制御部12に供給する。本実
施形態では、条件により異なる処理を実行するための命
令列が格納される。命令実行制御部12は、命令フェッ
チ機能及び命令デコード機能を備え、命令メモリ10か
ら読み出した命令をデコードし、命令バスを介して演算
部18やレジスタ20、メモリ制御部22に供給する。
また、命令実行制御部12は、デコードした命令に含ま
れる実行パターン(後述)をパターン選択部14に供給
する。
おり、命令を順次命令実行制御部12に供給する。本実
施形態では、条件により異なる処理を実行するための命
令列が格納される。命令実行制御部12は、命令フェッ
チ機能及び命令デコード機能を備え、命令メモリ10か
ら読み出した命令をデコードし、命令バスを介して演算
部18やレジスタ20、メモリ制御部22に供給する。
また、命令実行制御部12は、デコードした命令に含ま
れる実行パターン(後述)をパターン選択部14に供給
する。
【0024】図2には、本実施形態における命令フォー
マットの一例が示されている。従来のスキップ命令など
においては、オペコードと判定条件ccのみが規定さ
れ、これにより制御対象を直後の一命令として条件cc
が成立すれば直後の命令を実行せず2番目の命令から実
行するようにして処理の流れを変えているが、本実施形
態においてはオペコード、判定条件の他に、さらに実行
パターンを指定する。実行パターンとは、この命令に続
く複数の命令の実行/不実行を規定するパターンであ
り、例えば0と1で規定される。実行パターンは最下位
ビットから最上位っビットに向かってそれぞれ当該命令
に連続する複数の命令の実行/不実行に対応し、例えば
0を実行、1を不実行とし、当該命令の後に命令A、
B、Cがこの順に存在するとすると、実行パターン00
1により命令Aを不実行(1)、命令Bを実行(0)、
命令Cを実行(0)と規定できる。そして、図において
は、実行パターンとして判定条件が真の実行パターンと
偽の実行パターンの2組を規定している。命令実行制御
部12では、このような命令フォーマットから実行パタ
ーンを取り出し、パターン選択部14に供給するのであ
る。図に示された命令フォーマットでは、真の実行パタ
ーンと偽の実行パターンがともにパターン選択部14に
供給されることになる。
マットの一例が示されている。従来のスキップ命令など
においては、オペコードと判定条件ccのみが規定さ
れ、これにより制御対象を直後の一命令として条件cc
が成立すれば直後の命令を実行せず2番目の命令から実
行するようにして処理の流れを変えているが、本実施形
態においてはオペコード、判定条件の他に、さらに実行
パターンを指定する。実行パターンとは、この命令に続
く複数の命令の実行/不実行を規定するパターンであ
り、例えば0と1で規定される。実行パターンは最下位
ビットから最上位っビットに向かってそれぞれ当該命令
に連続する複数の命令の実行/不実行に対応し、例えば
0を実行、1を不実行とし、当該命令の後に命令A、
B、Cがこの順に存在するとすると、実行パターン00
1により命令Aを不実行(1)、命令Bを実行(0)、
命令Cを実行(0)と規定できる。そして、図において
は、実行パターンとして判定条件が真の実行パターンと
偽の実行パターンの2組を規定している。命令実行制御
部12では、このような命令フォーマットから実行パタ
ーンを取り出し、パターン選択部14に供給するのであ
る。図に示された命令フォーマットでは、真の実行パタ
ーンと偽の実行パターンがともにパターン選択部14に
供給されることになる。
【0025】一方、演算部18は、命令実行制御部12
から供給された命令に基づき演算を実行し、その結果を
レジスタ20に書き込む。また、演算部18では、命令
が図2に示されるような命令である場合、判定条件cc
が真であるか偽であるかを判定し、その判定結果をパタ
ーン選択部14に供給する。パターン選択部14は、演
算部18から供給された判定結果に基づき、真あるいは
偽のいずれかの実行パターンを選択してパターンレジス
タ16に供給し書き込む。具体的には、演算部18で判
定した結果、判定条件ccが真である場合には、パター
ン選択部14から真の実行パターンが選択されてパター
ンレジスタ16に書き込まれ、判定条件ccが偽の場合
には、偽の実行パターンが選択されてパターンレジスタ
16に書き込まれる。
から供給された命令に基づき演算を実行し、その結果を
レジスタ20に書き込む。また、演算部18では、命令
が図2に示されるような命令である場合、判定条件cc
が真であるか偽であるかを判定し、その判定結果をパタ
ーン選択部14に供給する。パターン選択部14は、演
算部18から供給された判定結果に基づき、真あるいは
偽のいずれかの実行パターンを選択してパターンレジス
タ16に供給し書き込む。具体的には、演算部18で判
定した結果、判定条件ccが真である場合には、パター
ン選択部14から真の実行パターンが選択されてパター
ンレジスタ16に書き込まれ、判定条件ccが偽の場合
には、偽の実行パターンが選択されてパターンレジスタ
16に書き込まれる。
【0026】パターンレジスタ16は、パターン選択部
14から供給された実行パターンを格納する。実行パタ
ーンが格納されていない上位ビットが存在する場合に
は、その余分のビットに0を書き込む。例えば、パター
ンレジスタ16が8ビットあり、実行パターンとして6
ビット存在する場合には、残りの上位2ビットには0を
書き込む。そして、命令を実行する毎に順次最下位ビッ
トからレジスタ20の書き込み、あるいはデータメモリ
24への書き込みを制御する制御器(図ではバルブとし
て模式的に示されている)に出力し、命令の実行/不実
行を制御する。すなわち、実行パターン0である場合に
はその命令の実行を意味するから、レジスタ20への書
き込みやデータメモリ24への書込を許可する。また、
実行パターンが1である場合にはその命令の不実行を意
味するから、レジスタ20への書き込みやデータメモリ
24への書込を禁止する。例えば、スキップ命令として
真の実行パターンが010で与えられ、このスキップ命
令の後に命令A、B、C、Dが存在する場合、パターン
レジスタ16に010が格納され、まず最下位ビットで
ある0が出力される。この0ビットによりレジスタ20
への書き込みやデータメモリ24への書き込みが許可さ
れるから、次の命令Aは演算部18で実行されるとその
結果はレジスタ20に書き込まれる。パターンレジスタ
16から最下位ビットが読み出されると、ビット列は右
にシフトされ、前回まで2位ビットであったものが最下
位ビットとなり、新たな書き込み制御用ビットとして出
力される。このビットは1であり、1ビットによりレジ
スタ20やメモリ24への書き込みが禁止されるから、
次の命令Bを演算部18で実行し、その演算結果が得ら
れてもレジスタ20へ書き込まれることがないので、実
質的に命令Bが実行されないことと等価となる。次に、
パターンレジスタ16内で再びビット列がシフトされ、
0が出力される。この0により、レジスタ20やメモリ
24への書き込みが許可され、次の命令Cが実行され
る。実行パターンの010以外の余分ビットには0が書
き込まれているから、次の最下位ビットは0となり、レ
ジスタ20やメモリ24への書き込みが許可され、次の
命令Dは無条件に実行されることになる。
14から供給された実行パターンを格納する。実行パタ
ーンが格納されていない上位ビットが存在する場合に
は、その余分のビットに0を書き込む。例えば、パター
ンレジスタ16が8ビットあり、実行パターンとして6
ビット存在する場合には、残りの上位2ビットには0を
書き込む。そして、命令を実行する毎に順次最下位ビッ
トからレジスタ20の書き込み、あるいはデータメモリ
24への書き込みを制御する制御器(図ではバルブとし
て模式的に示されている)に出力し、命令の実行/不実
行を制御する。すなわち、実行パターン0である場合に
はその命令の実行を意味するから、レジスタ20への書
き込みやデータメモリ24への書込を許可する。また、
実行パターンが1である場合にはその命令の不実行を意
味するから、レジスタ20への書き込みやデータメモリ
24への書込を禁止する。例えば、スキップ命令として
真の実行パターンが010で与えられ、このスキップ命
令の後に命令A、B、C、Dが存在する場合、パターン
レジスタ16に010が格納され、まず最下位ビットで
ある0が出力される。この0ビットによりレジスタ20
への書き込みやデータメモリ24への書き込みが許可さ
れるから、次の命令Aは演算部18で実行されるとその
結果はレジスタ20に書き込まれる。パターンレジスタ
16から最下位ビットが読み出されると、ビット列は右
にシフトされ、前回まで2位ビットであったものが最下
位ビットとなり、新たな書き込み制御用ビットとして出
力される。このビットは1であり、1ビットによりレジ
スタ20やメモリ24への書き込みが禁止されるから、
次の命令Bを演算部18で実行し、その演算結果が得ら
れてもレジスタ20へ書き込まれることがないので、実
質的に命令Bが実行されないことと等価となる。次に、
パターンレジスタ16内で再びビット列がシフトされ、
0が出力される。この0により、レジスタ20やメモリ
24への書き込みが許可され、次の命令Cが実行され
る。実行パターンの010以外の余分ビットには0が書
き込まれているから、次の最下位ビットは0となり、レ
ジスタ20やメモリ24への書き込みが許可され、次の
命令Dは無条件に実行されることになる。
【0027】なお、命令が演算命令やロード命令である
場合にはレジスタ20への書き込みを許可/禁止するこ
とにより命令の実行/不実行を制御でき、命令がストア
命令であればデータメモリ24への書き込みを許可/禁
止することにより命令の実行/不実行を制御できる。
場合にはレジスタ20への書き込みを許可/禁止するこ
とにより命令の実行/不実行を制御でき、命令がストア
命令であればデータメモリ24への書き込みを許可/禁
止することにより命令の実行/不実行を制御できる。
【0028】図3には、以上述べたパターンレジスタ1
6の動作が模式的に示されている。なお、この例では、
パターンレジスタ16を8ビットとし、実行パターンと
して110が格納された場合を示している。(a)は実
行パターン110が格納されたときの様子であり、残り
の上位5ビットには0が書き込まれる。最下位ビットで
ある0が読み出され、書込が許可される。これにより、
直後の命令Aが実行される。次に、(b)に示すよう
に、ビット列が右に1つずつシフトされ、最下位ビット
である1が読み出されて書き込みが禁止される。これに
より、命令Aの次の命令Bは不実行となる。次に、
(c)に示すように、ビット列がさらに右に1つずつシ
フトされ、最下位ビットである1が読み出されて書き込
みが禁止される。これにより、命令Bの次の命令Cも不
実行となる。次に、(d)に示すように、ビット列がさ
らに右に1つずつシフトされ、最下位ビットである0が
読み出されて書き込みが許可される。これにより、命令
Cの次の命令Dが実行される。
6の動作が模式的に示されている。なお、この例では、
パターンレジスタ16を8ビットとし、実行パターンと
して110が格納された場合を示している。(a)は実
行パターン110が格納されたときの様子であり、残り
の上位5ビットには0が書き込まれる。最下位ビットで
ある0が読み出され、書込が許可される。これにより、
直後の命令Aが実行される。次に、(b)に示すよう
に、ビット列が右に1つずつシフトされ、最下位ビット
である1が読み出されて書き込みが禁止される。これに
より、命令Aの次の命令Bは不実行となる。次に、
(c)に示すように、ビット列がさらに右に1つずつシ
フトされ、最下位ビットである1が読み出されて書き込
みが禁止される。これにより、命令Bの次の命令Cも不
実行となる。次に、(d)に示すように、ビット列がさ
らに右に1つずつシフトされ、最下位ビットである0が
読み出されて書き込みが許可される。これにより、命令
Cの次の命令Dが実行される。
【0029】このように、本実施形態では、実行パター
ンをパターンレジスタ16に格納し、この実行パターン
により複数の命令の実行/不実行を制御することができ
るので、従来のスキップ命令のように直後の1命令のみ
を条件に応じて実行/不実行とするのではなく、条件に
応じて複数の命令の実行/不実行を決定でき、命令数を
削減することが可能となる。
ンをパターンレジスタ16に格納し、この実行パターン
により複数の命令の実行/不実行を制御することができ
るので、従来のスキップ命令のように直後の1命令のみ
を条件に応じて実行/不実行とするのではなく、条件に
応じて複数の命令の実行/不実行を決定でき、命令数を
削減することが可能となる。
【0030】以下、具体的な処理について本実施形態に
おける実行パターンをより詳細に説明する。今、もし条
件ccが満たされるならばAを実行し、条件ccが満た
されないならばBを実行し、いずれの場合も次はCを実
行するというアルゴリズムを想定する。if〜then
〜elseを用いると、上記のアルゴリズムは、 if cc A; else B; C; となる。仮に、従来技術における(2)の条件分岐命令
を使用する場合には、上記のアルゴリズムは以下のよう
な命令列で実現される。
おける実行パターンをより詳細に説明する。今、もし条
件ccが満たされるならばAを実行し、条件ccが満た
されないならばBを実行し、いずれの場合も次はCを実
行するというアルゴリズムを想定する。if〜then
〜elseを用いると、上記のアルゴリズムは、 if cc A; else B; C; となる。仮に、従来技術における(2)の条件分岐命令
を使用する場合には、上記のアルゴリズムは以下のよう
な命令列で実現される。
【0031】 bc cc,L1 B br L2 L1: A L2: C ここで、「bc cc,L1」は条件ccが満たされれ
ばL1に分岐する命令であり、「br L2」は無条件
にL2に分岐する命令である。このように、条件分岐命
令を用いた場合、合計5個の命令列が必要となる。
ばL1に分岐する命令であり、「br L2」は無条件
にL2に分岐する命令である。このように、条件分岐命
令を用いた場合、合計5個の命令列が必要となる。
【0032】一方、本実施形態におけるプログラム実行
装置を用いた場合、その命令(ここでは拡張スキップ命
令と称する)は以下のようになる。
装置を用いた場合、その命令(ここでは拡張スキップ命
令と称する)は以下のようになる。
【0033】 skip cc,10,01 A B C ここで、10は真の実行パターンであり、01は偽の実
行パターンである(図2の命令フォーマット参照)。真
の実行パターン10は、直後の命令Aを実行し、次の命
令Bを実行しないパターンであり、偽のパターン01
は、直後の命令Aを実行せず、次の命令Bを実行するパ
ターンである。条件ccが満たされる(真)場合には、
パターン10がパターンレジスタ16に格納され、この
パターンにしたがってAが実行された後にCが実行され
る。また、条件ccが満たされない(偽)場合には、パ
ターン01がパターンレジスタ16に格納され、このパ
ターンにしたがって命令Bが実行された後に命令Cが実
行される。従来よりも少ない4個の命令列で上記のアル
ゴリズムを実行することができる。
行パターンである(図2の命令フォーマット参照)。真
の実行パターン10は、直後の命令Aを実行し、次の命
令Bを実行しないパターンであり、偽のパターン01
は、直後の命令Aを実行せず、次の命令Bを実行するパ
ターンである。条件ccが満たされる(真)場合には、
パターン10がパターンレジスタ16に格納され、この
パターンにしたがってAが実行された後にCが実行され
る。また、条件ccが満たされない(偽)場合には、パ
ターン01がパターンレジスタ16に格納され、このパ
ターンにしたがって命令Bが実行された後に命令Cが実
行される。従来よりも少ない4個の命令列で上記のアル
ゴリズムを実行することができる。
【0034】また、もし条件ccが満たされるならば命
令列AXCを実行し、条件ccが満たされないならば命
令列BXDを実行し、どちらの場合もその次はEを実行
するアルゴリズムを想定する。すなわち、条件ccの成
立/不成立によらず共通の命令Xを途中で実行するアル
ゴリズムである。if〜then〜else型では、 if cc{ A; X; C; }else{ B; X; D; } E; となる。このアルゴリズムを(2)の条件分岐命令を用
いて記述すると以下のようになる。
令列AXCを実行し、条件ccが満たされないならば命
令列BXDを実行し、どちらの場合もその次はEを実行
するアルゴリズムを想定する。すなわち、条件ccの成
立/不成立によらず共通の命令Xを途中で実行するアル
ゴリズムである。if〜then〜else型では、 if cc{ A; X; C; }else{ B; X; D; } E; となる。このアルゴリズムを(2)の条件分岐命令を用
いて記述すると以下のようになる。
【0035】 bc cc,L1 B br L2 L1: A L2: X bc cc,L3 D br L4 L3: C L4: E となり、合計10個の命令列となる。
【0036】一方、本実施形態における拡張スキップ命
令を用いて上記のアルゴリズムを記述すると以下のよう
になる。
令を用いて上記のアルゴリズムを記述すると以下のよう
になる。
【0037】 skip cc,10010,01001 A B X C D E ここで、真の実行パターンは10010であり、これは
命令Aを実行(0)、命令Bを不実行(1)、命令X、
Cを順次実行(0)、命令Dを不実行(1)とするパタ
ーンである。一方、偽の実行パターンは01001であ
り、これは命令Aを不実行(1)、命令B、Xを順次実
行(0)、命令Cを不実行(1)、命令Dを実行(0)
とするパターンである。したがって、合計7個の命令列
で記述することができる。
命令Aを実行(0)、命令Bを不実行(1)、命令X、
Cを順次実行(0)、命令Dを不実行(1)とするパタ
ーンである。一方、偽の実行パターンは01001であ
り、これは命令Aを不実行(1)、命令B、Xを順次実
行(0)、命令Cを不実行(1)、命令Dを実行(0)
とするパターンである。したがって、合計7個の命令列
で記述することができる。
【0038】このように、本実施形態においては従来の
ように直後の一命令のみを実行/不実行とするのではな
く、直後の複数の命令に対しその実行パターンを規定す
ることで、複雑な命令の場合にも少ない命令列で実行す
ることができる。
ように直後の一命令のみを実行/不実行とするのではな
く、直後の複数の命令に対しその実行パターンを規定す
ることで、複雑な命令の場合にも少ない命令列で実行す
ることができる。
【0039】なお、本実施形態においては図2に示され
るように真の実行パターンと偽の実行パターンを1つの
命令フォーマット内に格納しているが、真の場合のみ実
行パターンを用いるのであれば偽の実行パターンとして
は全て0の値を格納すればよい。この場合、命令フォー
マットでは偽の実行パターンを規定する必要がない。例
えば、 skip cc, 1101 A B C D E なる命令では、条件ccが成立すれば、命令Aを不実
行、命令Bを実行、命令Cを不実行、命令Dを不実行、
命令Eを実行となる。すなわち、実行パターンは、必ず
しも真偽それぞれを規定する必要はない。
るように真の実行パターンと偽の実行パターンを1つの
命令フォーマット内に格納しているが、真の場合のみ実
行パターンを用いるのであれば偽の実行パターンとして
は全て0の値を格納すればよい。この場合、命令フォー
マットでは偽の実行パターンを規定する必要がない。例
えば、 skip cc, 1101 A B C D E なる命令では、条件ccが成立すれば、命令Aを不実
行、命令Bを実行、命令Cを不実行、命令Dを不実行、
命令Eを実行となる。すなわち、実行パターンは、必ず
しも真偽それぞれを規定する必要はない。
【0040】また、判定条件に応じて実行パターンを切
り替えるのではなく、レジスタの値により実行パターン
を選択することも可能である。この場合には、対応する
実行パターンをそのままパターンレジスタ16に格納す
ればよい。この場合の命令フォーマットは例えば skip reg,001,010,100 A B C D などとなる。この命令フォーマットによれば、レジスタ
regの値が0のときは実行パターン001、レジスタ
regの値が1のとき実行パターンは010、レジスタ
regの値が2のとき実行パターンは100となり、し
たがって命令Aはregの値が0のときだけ不実行とな
り、命令Bはregの値が1のときだけ不実行となり、
命令Cはregが2のときだけ不実行となる。言い換え
れば、regの値が0のときには命令列B、C、Dが順
次実行され、regが1のときは命令列A、C、Dが順
次実行され、regの値が2のときは命令A、B、Dが
順次実行される。レジスタの値により、異なる処理を選
択することができる。
り替えるのではなく、レジスタの値により実行パターン
を選択することも可能である。この場合には、対応する
実行パターンをそのままパターンレジスタ16に格納す
ればよい。この場合の命令フォーマットは例えば skip reg,001,010,100 A B C D などとなる。この命令フォーマットによれば、レジスタ
regの値が0のときは実行パターン001、レジスタ
regの値が1のとき実行パターンは010、レジスタ
regの値が2のとき実行パターンは100となり、し
たがって命令Aはregの値が0のときだけ不実行とな
り、命令Bはregの値が1のときだけ不実行となり、
命令Cはregが2のときだけ不実行となる。言い換え
れば、regの値が0のときには命令列B、C、Dが順
次実行され、regが1のときは命令列A、C、Dが順
次実行され、regの値が2のときは命令A、B、Dが
順次実行される。レジスタの値により、異なる処理を選
択することができる。
【0041】さらに、レジスタの値により実行パターン
を選択するのではなく、レジスタの値をそのまま実行パ
ターンとすることもできる。この場合、命令フォーマッ
トとしては、例えば skip reg A B C D となる。そして、レジスタには例えば001や010な
どの実行パターンを格納しておき、命令を実行する際に
は、レジスタに格納されている実行パターンを読み出し
てパターンレジスタ16に格納する。そして、パターン
の最下位ビットが0ならば命令Aは実行、regの2番
目のビットが1ならば命令Bは不実行、regの3番目
のビットが0ならば命令Cは実行、命令Dは条件によら
ず実行、と処理を変化させることができる。
を選択するのではなく、レジスタの値をそのまま実行パ
ターンとすることもできる。この場合、命令フォーマッ
トとしては、例えば skip reg A B C D となる。そして、レジスタには例えば001や010な
どの実行パターンを格納しておき、命令を実行する際に
は、レジスタに格納されている実行パターンを読み出し
てパターンレジスタ16に格納する。そして、パターン
の最下位ビットが0ならば命令Aは実行、regの2番
目のビットが1ならば命令Bは不実行、regの3番目
のビットが0ならば命令Cは実行、命令Dは条件によら
ず実行、と処理を変化させることができる。
【0042】
【発明の効果】以上説明したように、本発明によれば複
数の命令を対象として条件に応じてその実行/不実行を
制御することができるので、より少ない命令数で条件に
より異なる命令を実行することができる。
数の命令を対象として条件に応じてその実行/不実行を
制御することができるので、より少ない命令数で条件に
より異なる命令を実行することができる。
【図1】 実施形態の構成ブロック図である。
【図2】 実施形態における命令フォーマット説明図で
ある。
ある。
【図3】 実施形態のパターンレジスタの動作説明図で
ある。
ある。
10 命令メモリ、12 命令実行制御部、14 パタ
ーン選択部、16 パターンレジスタ、18 演算部、
20 レジスタ、22 メモリ制御部、24データメモ
リ。
ーン選択部、16 パターンレジスタ、18 演算部、
20 レジスタ、22 メモリ制御部、24データメモ
リ。
Claims (10)
- 【請求項1】 連続する複数の命令の実行あるいは不実
行を規定する実行パターンデータを記憶する記憶手段
と、 前記記憶手段から前記実行パターンデータを順次読み出
し、この実行パターンデータにしたがって前記連続する
複数の命令を実行しあるいは不実行とする制御手段と、 を有することを特徴とするプログラム実行装置。 - 【請求項2】 請求項1記載の装置において、 前記実行パターンデータはビット列から構成され、前記
ビット列の各ビットが前記複数の命令それぞれの実行あ
るいは不実行に対応することを特徴とするプログラム実
行装置。 - 【請求項3】 請求項1、2のいずれかに記載の装置に
おいて、 前記制御手段は、前記命令を実行した結果のデータの書
込を許可あるいは禁止することにより前記命令の実行あ
るいは不実行を制御することを特徴とするプログラム実
行装置。 - 【請求項4】 請求項1〜3のいずれかに記載の装置に
おいて、 前記命令には、オペコード及び前記実行パターンデータ
が含まれることを特徴とするプログラム実行装置。 - 【請求項5】 請求項4記載の装置において、 前記命令には、判定条件及び前記判定条件が真の場合の
実行パターンデータと偽の場合の実行パターンデータが
含まれ、 前記判定条件の真偽に応じて真あるいは偽のいずれかの
実行パターンデータが前記記憶手段に記憶されることを
特徴とするプログラム実行装置。 - 【請求項6】 プロセッサで実行されるプログラム実行
方法であって、 オペコード及び実行パターンデータを含む命令を読み出
し、 前記実行パターンデータに基づき、前記命令の後に続く
複数の命令を実行あるいは不実行とすることを特徴とす
るプログラム実行方法。 - 【請求項7】 請求項6記載の方法において、 前記命令には、判定条件及び前記判定条件が真の場合の
実行パターンデータ及び偽の場合の実行パターンデータ
が含まれ、 前記判定条件が成立するか否かを判定し、 前記判定条件が成立する場合には、前記真の場合の実行
パターンデータに基づき前記命令の後に続く複数の命令
を実行あるいは不実行とし、前記判定条件が成立しない
場合には、前記偽の場合の実行パターンデータに基づき
前記命令の後に続く複数の命令を実行あるいは不実行と
することを特徴とするプログラム実行方法。 - 【請求項8】 請求項6、7のいずれかに記載の方法に
おいて、 前記実行パターンデータはビット列から構成され、 前記ビット列の各ビットが前記複数の命令のそれぞれの
実行あるいは不実行を規定することを特徴とするプログ
ラム実行方法。 - 【請求項9】 請求項8記載の方法において、 前記実行パターンデータはレジスタに記憶され、 前記レジスタに記憶された前記実行パターンデータを最
下位ビットから順次読み出し、読み出したビットの値に
基づき前記複数の命令を順次実行あるいは不実行とする
ことを特徴とするプログラム実行方法。 - 【請求項10】 請求項6〜9のいずれかに記載の方法
において、 前記複数の命令の実行あるいは不実行は、前記実行パタ
ーンデータの値に基づき命令実行の結果書込を許可ある
いは禁止することにより行われることを特徴とするプロ
グラム実行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000270677A JP2002082800A (ja) | 2000-09-06 | 2000-09-06 | プログラム実行装置及び方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000270677A JP2002082800A (ja) | 2000-09-06 | 2000-09-06 | プログラム実行装置及び方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002082800A true JP2002082800A (ja) | 2002-03-22 |
Family
ID=18757080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000270677A Pending JP2002082800A (ja) | 2000-09-06 | 2000-09-06 | プログラム実行装置及び方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2002082800A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006309454A (ja) * | 2005-04-27 | 2006-11-09 | Denso Corp | プログラム制御方法及びプロセッサ |
JP2008299729A (ja) * | 2007-06-01 | 2008-12-11 | Digital Electronics Corp | プロセッサ |
US7725694B2 (en) | 2004-12-21 | 2010-05-25 | Denso Corporation | Processor, microcomputer and method for controlling program of microcomputer |
KR101016257B1 (ko) * | 2008-03-21 | 2011-02-25 | 후지쯔 가부시끼가이샤 | 프로세서 및 정보 처리 장치 |
-
2000
- 2000-09-06 JP JP2000270677A patent/JP2002082800A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7725694B2 (en) | 2004-12-21 | 2010-05-25 | Denso Corporation | Processor, microcomputer and method for controlling program of microcomputer |
JP2006309454A (ja) * | 2005-04-27 | 2006-11-09 | Denso Corp | プログラム制御方法及びプロセッサ |
JP2008299729A (ja) * | 2007-06-01 | 2008-12-11 | Digital Electronics Corp | プロセッサ |
KR101016257B1 (ko) * | 2008-03-21 | 2011-02-25 | 후지쯔 가부시끼가이샤 | 프로세서 및 정보 처리 장치 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7366874B2 (en) | Apparatus and method for dispatching very long instruction word having variable length | |
US7430678B2 (en) | Low power operation control unit and program optimizing method | |
JPH03129433A (ja) | 並列処理装置および並列処理方法 | |
US20010020267A1 (en) | Pipeline processing apparatus with improved efficiency of branch prediction, and method therefor | |
JPH0991136A (ja) | 信号処理装置 | |
JP2009163624A (ja) | プロセッサ装置及び条件分岐処理方法 | |
US4656581A (en) | Vector mask control system | |
JP2002082800A (ja) | プログラム実行装置及び方法 | |
US6931518B1 (en) | Branching around conditional processing if states of all single instruction multiple datapaths are disabled and the computer program is non-deterministic | |
JP4889235B2 (ja) | プログラム制御プロセッサ | |
US7010670B2 (en) | Data processing device that controls an overriding of a subsequent instruction in accordance with a conditional execution status updated by a sequencer | |
JPH031231A (ja) | マイクロプログラム制御装置 | |
JP2006053830A (ja) | 分岐予測装置および分岐予測方法 | |
US6718459B1 (en) | Device and method for arithmetic processing | |
JP3619343B2 (ja) | データ処理装置と方法 | |
EP1026581A2 (en) | System and method for controlling program execution | |
JPH03269728A (ja) | パイプライン計算機における命令実行制御方式 | |
US11397624B2 (en) | Execution of cross-lane operations in data processing systems | |
JP4283226B2 (ja) | アドレス範囲に依存した命令並行処理を行うデータ処理装置 | |
JPS6116334A (ja) | デ−タ処理装置 | |
JPH0954694A (ja) | パイプラインプロセッサおよびその処理方法 | |
JP2772100B2 (ja) | 並列命令フェッチ機構 | |
JP4151497B2 (ja) | パイプライン処理装置 | |
JP3651099B2 (ja) | プログラマブルコントローラ | |
JPH0512107A (ja) | プログラム実行方式 |