JP3515337B2 - プログラム実行装置 - Google Patents

プログラム実行装置

Info

Publication number
JP3515337B2
JP3515337B2 JP25631397A JP25631397A JP3515337B2 JP 3515337 B2 JP3515337 B2 JP 3515337B2 JP 25631397 A JP25631397 A JP 25631397A JP 25631397 A JP25631397 A JP 25631397A JP 3515337 B2 JP3515337 B2 JP 3515337B2
Authority
JP
Japan
Prior art keywords
flag
program
instruction
execution device
arithmetic
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
Application number
JP25631397A
Other languages
English (en)
Other versions
JPH1196001A (ja
Inventor
松本  健志
康人 甲村
宏喜 三浦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sanyo Electric Co Ltd
Original Assignee
Sanyo Electric Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sanyo Electric Co Ltd filed Critical Sanyo Electric Co Ltd
Priority to JP25631397A priority Critical patent/JP3515337B2/ja
Priority to US09/157,811 priority patent/US6324641B1/en
Publication of JPH1196001A publication Critical patent/JPH1196001A/ja
Application granted granted Critical
Publication of JP3515337B2 publication Critical patent/JP3515337B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、処理の制御に用い
られるフラグを有したプログラム実行装置及びその装置
において実行可能な機械語に対応する命令を生成するプ
ログラム変換方法に関する。
【0002】
【従来の技術】本明細書において「プログラム実行装
置」とは、マイクロプロセッサなど、実行可能なデータ
形式に変換されたプログラム(すなわち機械語で表現さ
れた命令など)を実行してデータを処理する装置をい
う。マイクロプロセッサがその代表であるが、この装置
は必ずしも単一の素子である必要はない。
【0003】一方、プログラム変換方法とは、人間にと
って理解が容易な文法を有した「C」、「Fortra
n」といった高級プログラミング言語から、プログラム
実行装置で実行可能なデータ形式に対応した命令列で記
述されたプログラムにプログラムを変換する方法をい
う。以降、変換前の高級プログラミング言語で記述され
たプログラムをソースプログラム、変換後のプログラム
をアセンブラプログラムと呼ぶ。また高級プログラミン
グ言語を記述する命令を高級命令とよぶ。これに対し、
低級命令とは、コンパイラが高級命令を解読して生成す
るもので、一般にはアセンブラ命令を指す。
【0004】図2は、従来のプログラム実行装置の概略
のブロック構成図である。通常、高級命令プログラムは
コンパイラによってアセンブラ言語に翻訳され、アセン
ブラ言語はアセンブラによって機械語に翻訳される。メ
モリ4はこの機械語を格納しうる。アセンブラ命令はニ
ーモニックコードと呼ばれる記号で表記されている。こ
のニーモニックコードは、命令の機能(オペレーショ
ン)を理解しやすいように定められる。例えば、加算命
令には「add」、比較命令には「comp」、ビット
テスト命令には「tst」、分岐命令には「br」とい
う記号が割り当てられる。1命令は、これらオペレーシ
ョンを表す記号に通常1または2個のオペランドが付加
されて構成される。この機械語の命令は基本的にこのア
センブラ命令に一対一に対応して生成される。命令フェ
ッチ部2は、メモリ4に格納されたバイナリ形式の機械
語で表現されたプログラムを構成する命令を順次フェッ
チするフェッチ手段である。
【0005】フェッチされた命令は命令デコード部6に
送られる。命令デコード部6はその命令のバイナリ形式
に応じて、レジスタ群8、算術論理演算部(ALU:Ar
ithmetic Logic Unit)10、データアクセス部12、
フラグ14の動作を制御する。例えば、命令にレジスタ
番号が指定されている場合には、レジスタ群8中の指定
されたレジスタから値が読み出されてALU10に送ら
れたり、逆に指定されたレジスタに値が格納されたりす
る。ALU10は、命令コードに応じた演算を行い、そ
の演算結果は、データアクセス部12を介してレジスタ
群8やメモリ4に格納される。また、ALU10におい
てフラグに値を設定する処理が行われると、その値によ
ってフラグ14の値が更新される。
【0006】上述したようにコンパイラがソースプログ
ラムからアセンブラプログラムへの変換を行う。コンパ
イラは高級言語の各命令を解釈して、それぞれの機能を
通常複数の低級命令に分解する。また、コンパイラは、
このように生成されたアセンブラプログラムを、より高
速な実行が可能なように最適化を行うこともできる。
【0007】この最適化は、具体的にはアセンブラ命令
の順序を入れ替えることにより行われる。このとき、コ
ンパイラは命令順序の交換によってプログラムの処理結
果が変化しないように、命令順序の依存関係の有無を考
慮する。例えば、コンパイラは2つのレジスタ“reg
0”、“reg1”それぞれの内容“R0”、“R1”
を比較し、R1=R0のときプログラム上の所定箇所
“LABEL1”に分岐するという処理を行う命令列と
して以下のようなものを生成する。
【0008】comp/eq reg0,reg1 br LABEL1 ここで“comp/eq”は上述したR1とR0との所
定の大小関係が満たされたときフラグTに1を設定す
る。そして、次の命令 “br”はフラグTが1のとき
指定された分岐先“LABEL1”に分岐する。このよ
うな2つの命令の順序を交換することはできない。ま
た、それらの間に他の命令、または命令列を挿入するこ
とは、その命令列がフラグTの値を変化させる可能性が
あるので避けるべきである。同様に依存関係を有する命
令列の他の例をいくつか示す。
【0009】comp/ge reg0,reg1 br LABEL1 これは、R1≧R0のときLABEL1に分岐するもの
である。また別の例は、 comp/gt reg0,reg1 br LABEL1 という命令列である。これは、R1>R0のときLAB
EL1に分岐するものである。これらは上記例と同様、
R1とR0の所定の大小関係が満たされたときに、フラ
グTに1を設定する。
【0010】もう一つの例は、 tst reg0,reg1 br LABEL1 という命令列である。オペレーション“tst”は、2
つのレジスタ“reg0”、“reg1”それぞれの内
容“R0”、“R1”の論理積を演算し、その結果が0
のとき、フラグTに1を設定する。そして、命令“b
r”は上述したようにフラグTをみてその値が1のとき
指定された分岐先“LABEL1”に分岐する。この場
合も2つの命令の順序に依存関係がある。ちなみに、命
令“tst”は、検査対象数値の所定のビットが0か1
かを判定するビットテストを行うものである。つまり、
R1を検査対象の数値とするとき、R0には判定したい
所定のビット位置が1である数値を指定する。論理和の
結果が0でないならば、R1の上記所定のビットは1で
あり、逆に論理和の結果が0ならばR1の上記所定のビ
ットは0であることが判明する。
【0011】コンパイラは最適化対象のアセンブラプロ
グラム中の命令が、“comp/eq”、“comp/
ge”、“comp/gt”、“tst”といったフラ
グ操作を伴うものであり、命令順序に依存関係を有する
ものであるか否かを逐一判断しながら最適化処理を進め
ていく。
【0012】
【発明が解決しようとする課題】従来のプログラム実行
装置では、演算処理はALUにおいて行われる。ここで
例えば“comp”と“tst”といった異なる種類の
演算処理に対しては、ALUがその種類を区別できる必
要があるため、異なる命令名(命令コード)を割り当て
なければならない。これに応じて、上述のようにフラグ
操作を伴い命令順序に依存関係を生じる命令に多くの種
類が存在する。このため、コンパイラで用いられるプロ
グラム変換方法において、命令順序に依存関係を有する
命令か否かの判断が複雑となる問題点があった。また、
一つのフラグを複数種類の命令で用いるということは、
命令順序の依存関係に対する制約が厳しくなるという問
題や、アセンブラによるプログラミングの生産性の低下
やアセンブラプログラムの可読性の低下という問題を招
いていた。
【0013】本発明は上記問題点を解消するためになさ
れたもので、コンパイラの処理を容易とし、またアセン
ブラによるプログラミングやアセンブラプログラムの読
解を容易とするプログラム実行装置及びプログラム変換
方法を提供することを目的とする。
【0014】
【課題を解決するための手段】請求項1のプログラム実
行装置は、命令を順次フェッチするフェッチ手段と、そ
の命令を解読する解読手段と、解読された命令を実行す
る演算実行手段と、複数種類のフラグを保持するフラグ
保持手段を有する。前記演算実行手段は、互いに共通の
前記被演算データが入力されそれぞれ所定の前記演算処
理を互いに並列して行い、互いに別個の前記フラグに対
し当該演算処理の結果に応じて操作を行う複数の演算回
路を含むことを特徴とする。
【0015】請求項1のプログラム実行装置によれば、
演算実行手段は、複数の演算処理を1つの、つまり1種
類の命令で行うことができる。すなわち演算実行手段
は、1つの命令に従って1つ又は1組の被演算データが
入力されると、フラグを変化させる複数種類の演算処理
が行われる。これら演算処理は、演算実行手段に入力さ
れた1つ又は1組の被演算データを共通に用いて別個に
行われる。また、これら各演算処理は、互いに異なるフ
ラグを用いる。よって、フラグ保持手段には、入力され
た被演算データに対してここで行われるすべての演算処
理のフラグ操作結果が保持される。つまり、演算処理が
実行された後において、実行された任意の演算処理に対
応するフラグ操作結果を知ることができる。
【0016】
【0017】また、請求項1のプログラム実行装置で
、フラグを使用する複数の演算処理に対してそれぞれ
演算回路が設けられ、これらが並列に動作して、入力さ
れた被演算データをそれぞれ演算処理する。そして、こ
れら演算回路はそれぞれ互いに異なるフラグに対し値の
設定を行う。
【0018】請求項2のプログラム実行装置は、請求項
1のプログラム実行装置であって、前記複数の演算回路
として算術論理演算回路と論理積回路とを含むものであ
る。算術論理演算回路は、例えば、入力された2つのデ
ータの大小比較を行うことができる。例えばその大小比
較は2つのデータの差を求め、大小比較結果はその差の
正負又は0か非零に応じてフラグを設定することにより
保持される。一方、論理積回路は入力された2つのデー
タの論理積を求めることができる。そしてその結果は例
えばそれが0か非零かに応じて、算術論理演算回路で用
いるのとは別のフラグを設定することにより保持され
る。
【0019】請求項3のプログラム実行装置は、請求項
1のプログラム実行装置であって、前記演算実行手段
は、前記フラグ保持手段に保持された前記フラグに基づ
いたフラグ依存処理を行うことを特徴とする。
【0020】フラグ依存処理とは、所定のフラグの値に
応じて異なる動作をするものであり、例えば、フラグに
所定の値が設定されている場合にのみ指定分岐先に処理
を移行するといったものである。つまり本発明では、フ
ラグごとにその役割が異なり、プログラム実行装置上で
は、その役割はフラグ依存処理の違いによって容易に区
別される。
【0021】請求項4のプログラム実行装置は、請求項
3のプログラム実行装置であって、前記算術論理演算回
路は、2つの前記被演算データの大小関係を求め、当該
大小関係に応じて前記フラグ保持手段の前記フラグを設
定し、当該フラグの値に応じてプログラムの所定のアド
レスに分岐させることを特徴とする。
【0022】請求項5のプログラム実行装置は、請求項
3のプログラム実行装置であって、前記論理積回路は、
2つの前記被演算データの論理積を求め、当該論理積が
零か非零かに応じて前記フラグ保持手段の前記フラグを
設定し、当該フラグの値に応じてプログラムの所定のア
ドレスに分岐させることを特徴とする。
【0023】
【0024】
【発明の実施の形態】次に、本発明の実施形態について
図面を参照して説明する。図1は、本発明の実施形態で
あるプログラム実行装置の概略のブロック構成図であ
る。命令フェッチ部32は、アセンブラプログラムの各
命令に対応して生成されメモリ34に格納された機械語
命令を順次フェッチするフェッチ手段である。
【0025】フェッチされた命令は命令デコード部36
に送られる。命令デコード部36はその命令のバイナリ
形式に応じて、レジスタ群38、ALU40、論理積演
算部(論理積回路)42、データアクセス部44、フラ
グ群46(フラグ保持手段)の動作を制御する。例え
ば、命令にレジスタ番号が指定されている場合には、レ
ジスタ群38中の指定されたレジスタから値が読み出さ
れてALU40及び論理積演算部42に送られたり、逆
に指定されたレジスタに値が格納されたりする。一方、
命令のオペランドに即値が指定されている場合には、そ
の値を用いてALU40及び論理積演算部42での演算
が行われる。
【0026】さて、本装置の特徴の一つは、演算実行手
段としてALU40と論理積演算部42という2つの異
なる演算回路の並列構成をとる点である。つまり、演算
実行手段に入力されるレジスタからの値、又は即値は、
ALU40と論理積演算部42に並列に入力される。
【0027】ALU40は、加算、減算といった命令コ
ードに応じた演算を行い、その演算結果は、データアク
セス部44を介してレジスタ群38やメモリ34に格納
される。また、ALU40において所定のフラグに値を
設定する処理が行われると、その値によってフラグ群4
6中の当該所定のフラグの値が更新される。
【0028】一方、論理積演算部42は、レジスタ群3
8中の指定されたレジスタから読み出された値や命令語
に指定された即値などの2つのデータを入力され、それ
ら2つのデータの論理積を求める。本装置では論理積演
算部42には2つのデータが入力され、その一つをマス
クデータとして用い、もう一方の入力データである被検
査データがそのマスクデータに合致したビットパターン
を有するか否かを検査するビットテストに用いられる。
なお、マスクデータは検査対象とする所定の1又は複数
のビットだけが“1”であり、このマスクデータの
“1”であるビット位置を「関心ビット」と呼ぶことに
する。論理積演算部42は例えばAND回路を含んで、
被検査データとマスクデータとの論理積を求め、それが
0に等しいときフラグ群46中のフラグTを“1”にセ
ットし、論理積が0とならないとき、フラグTをリセッ
トする、つまり“0”とする。これにより、被検査デー
タの関心ビットのいずれかが“1”である場合には、フ
ラグT=0、一方関心ビットのすべてが“0”である場
合にフラグT=1が設定される。
【0029】また、論理積演算部42としては、関心ビ
ットのすべてが“1”であるかどうかを検査する構成も
可能である。その場合には、例えば、論理積演算部42
は、入力されたマスクデータと被検査データとで対応す
るビット同士の論理積を求めるAND回路と、AND回
路から出力された論理積とマスクデータとで対応するビ
ット同士の排他的論理和を求めるXOR回路とを含んで
構成される。この構成では、まずAND回路は、被検査
データのビットのうち関心ビットのみをそのまま残し、
他のビットを“0”とした値を出力する。この値とマス
クデータとの排他的論理和は、被検査データの関心ビッ
トがすべて“1”である場合にのみ、すべての桁が
“0”となる。そして、例えばXOR回路の出力が0の
場合にフラグT=0、一方、XOR回路の出力が非零の
場合にフラグT=1に設定する。
【0030】フラグ群46には、フラグTのほかに、例
えばZ、N、V、Cといったフラグが含まれるが、論理
積演算部42はフラグTしか操作しない。一方、ALU
40はフラグTを操作することはなく、残りのフラグ
Z、N、V、Cだけを操作する。なお、フラグTは上述
したようにビットテストの結果を表すもので、ここでは
テスト・フラグと呼ぶものである。また、フラグZはゼ
ロ・フラグと称するものであり、ALU40での演算処
理結果が0であれば“1”が設定され、非零の場合、
“0”にリセットされる。フラグNはネガティブ・フラ
グと称するものであり、ALU40での演算処理結果が
負であれば“1”が設定され、正又は0であれば“0”
にリセットされる。フラグVはオーバーフロー・フラグ
と称するものであり、ALU40での演算処理により符
号ビットへのオーバーフローが生じたときに“1”が設
定され、符号ビットへのオーバーフローが生じなければ
“0”にリセットされる。またフラグCはキャリー・フ
ラグと称するものであり、ALU40での演算処理によ
りキャリーが発生したときに“1”が設定され、キャリ
ーが発生しない場合には“0”にリセットされる。
【0031】本装置の構成によれば、あるアセンブラ命
令に対応して生成された機械語に対して、その本来の演
算処理がALU40にて行われるばかりでなく、その命
令に指定される2つのオペランドに対する論理積演算が
論理積演算部42にて並列に行われる。論理積演算部4
2がその結果の保持に用いるフラグTは、ALU40で
用いられるフラグと異なるものであるので、ALU40
の演算結果と論理積演算部42の演算結果とが互いに干
渉しあうことはない。よって、プログラムにおいて、こ
れら2つの演算回路から結果のいずれか又は両方を任意
に選択して利用することができる。
【0032】なお、上述の構成では、演算実行手段とし
て複数の異なる種類の演算回路を設け、各演算処理を並
列に行う構成としたが、ALU40のみで、同一の入力
データに対し複数の異なる演算処理、例えば上述の例に
即して述べれば、フラグTの操作を伴う論理積演算と、
その他のフラグの操作を伴う他の種類の演算とを順次行
う構成とすることもできる。この場合も、それぞれの演
算結果によるフラグの値は異なる演算処理間で干渉する
ことがない。また、上述の構成では、演算回路はALU
40と論理積演算部42との2種類としたが、互いに異
なるフラグを操作する3つ以上の演算回路を設け、それ
らにより演算処理を並列に行う構成とすることも可能で
ある。もちろん、フラグは上述の定義の5つに限られる
必要はない。
【0033】次に、人間にとって理解が容易な文法を有
した「C」、「Fortran」といった高級プログラ
ミング言語を変換して、上記本装置にて実行可能な機械
語に対応するアセンブラ命令を生成するプログラム変換
方法を説明する。以下、本方法を採用した実施形態であ
るコンパイラについて説明する。
【0034】高級プログラミング言語の命令には、演算
結果に応じてフラグを操作し、さらにそのフラグの値に
基づいた処理を行うもの(フラグ利用高級命令)が一般
には複数存在する。例えば、2つの値“A”、“B”と
プログラムの行番号やラベルといった分岐先“LABE
L1”とを指定したフラグ利用高級命令として次のよう
なものがある。
【0035】 (i) 「A>Bならば、LABEL1にジャンプしろ。」 (ii) 「A≧Bならば、LABEL1にジャンプしろ。」 (iii)「A<Bならば、LABEL1にジャンプしろ。」 (iv) 「A≦Bならば、LABEL1にジャンプしろ。」 (v) 「A=Bならば、LABEL1にジャンプしろ。」 (vi) 「A≠Bならば、LABEL1にジャンプしろ。」 (vii)「論理積A・B=0ならば、LABEL1にジ
ャンプしろ。」これらのうち、(i)〜(vi)は、基本
的にはA、Bの大小関係に応じて分岐するか否かを決定
する大小比較分岐命令である。また(vii)は、ビット
テスト結果の合否に応じて分岐するか否かを決定するビ
ットパターン比較分岐命令である。これら(i)〜(vi
i)の高級命令は、アセンブラに変換するとA、Bに基
づいて所定の演算処理を行いその結果に応じてフラグに
値を設定し、そしてそのフラグの値に基づいて分岐する
か否かを決定するという命令列となる。つまり、一般に
演算回路にA、Bについての演算処理を行わせフラグを
設定する演算処理命令と、フラグの値に依存して分岐を
行うフラグ依存命令である分岐命令とを含んだアセンブ
ラの命令列に変換される。
【0036】本コンパイラは、上記(i)〜(vii)の
演算処理命令に対して、同一の命令コード「comp」
を生成する。また、(i)〜(vii)に対して分岐命令
としてそれぞれ「br.gt」、「br.ge」、「b
r.lt」、「br.le」、「br.eq」、「b
r.neq」、「br.t」を生成する。これら分岐命
令は、互いに本発明のプログラム実行装置に設けられた
フラグ群46に設定されるフラグの値の異なるパターン
に対応して分岐を実行する。
【0037】よって、例えば、命令(i)に対して生成
されるアセンブラ命令列は、基本的には次のようなもの
である。
【0038】comp A,B br.gt LABEL1 残りの命令(ii)〜(vii)についても同様に、「co
mp」命令といずれかの「br」命令との並びに変換さ
れる。
【0039】以下、本プログラム実行装置において、上
記フラグ利用高級命令に対し本コンパイラが生成したア
センブラ命令がどのように実行されるかを説明する。
【0040】上述したように(i)〜(vii)の高級命
令に対して生成される共通の「comp」命令は、AL
U40と論理積演算部42とでそれぞれ演算処理を行わ
れる。ALU40は「comp」命令に対して、その2
つのオペランドA、Bの差“A−B”を求める演算処理
を行い、その結果が、A−B<0であればフラグN=1
とし、A−B=0であればフラグZ=1とする。一方、
このALU40での演算処理と並行して、論理積演算部
42は「comp」命令に対してA、Bの論理積を生成
し、それが0であればフラグT=1とする。このよう
に、「comp」命令が実行されることにより、フラグ
N、Z、Tが設定される可能性がある。
【0041】次に(i)〜(vii)の各命令に対して
は、それぞれ異なる分岐命令が生成される。命令(i)
に対して生成される「br.gt」は、フラグN=0か
つフラグZ=0の場合に分岐処理を実行する。ここでフ
ラグTの値は参照されない。
【0042】命令(ii)に対して生成される「br.g
e」は、フラグN=0の場合に分岐処理を実行する。こ
こでフラグZ、Tの値は参照されない。
【0043】命令(iii)に対して生成される「br.
lt」は、フラグN=1かつフラグZ=0の場合に分岐
処理を実行する。ここでフラグTの値は参照されない。
【0044】命令(iv)に対して生成される「br.l
e」は、フラグN=1又はZ=1の場合に分岐処理を実
行する。ここでフラグTの値は参照されない。
【0045】命令(v)に対して生成される「br.e
q」は、フラグZ=1の場合に分岐処理を実行する。こ
こでフラグN、Tの値は参照されない。
【0046】命令(vi)に対して生成される「br.n
eq」は、フラグZ=0の場合に分岐処理を実行する。
ここでフラグN、Tの値は参照されない。
【0047】最後に命令(vii)に対して生成される
「br.t」は、フラグT=1の場合に分岐処理を実行
する。ここでフラグN、Zの値は参照されない。
【0048】このように、各種分岐命令は、それぞれ固
有のフラグパターンを検知して、分岐処理を行う。つま
り、本プログラム実行装置では各演算回路が互いに異な
るフラグを操作する構成としているので、各分岐命令
は、自分が参照するフラグの操作を行うもの以外の演算
回路において行われる「comp」命令の実行内容につ
いては関知する必要がない。
【0049】上述したように、本プログラム実行装置で
は、フラグ操作を伴う大小比較処理とビットテスト処理
といった各種の高級言語命令に対し、演算処理命令を統
合することができる。コンパイラは、アセンブラプログ
ラムの最適化処理を行う場合、フラグ操作を行う演算処
理命令とそのフラグを用いた分岐命令との間において、
当該フラグを操作する他の命令が挿入されないようにす
る。具体的には、コンパイラは、例えばアセンブラプロ
グラム中の各命令がフラグ操作を行う演算処理命令であ
るか否かを逐一判断し、もしフラグ操作を行う演算処理
命令であれば、それとそれに続く分岐命令とはひとかた
まりにして取り扱い最適化処理を行う。本発明によれ
ば、フラグ操作を行う演算処理命令の種類が減少するの
で、コンパイラにおける上記フラグ操作を行う演算処理
命令の判定処理が簡素化される。
【0050】
【発明の効果】本発明のプログラム実行装置によれば、
フラグ操作を行う複数種類の演算処理に対応して複数の
フラグを用意し、演算命令の種類に関係なくフラグ操作
を行う複数種類の演算処理がそれぞれ実行される。つま
り、フラグ操作を行う演算処理に対して共通の演算命令
を用いることができる。これにより、コンパイラが行う
アセンブラプログラムの最適化処理における、フラグ操
作を行う演算命令であるか否かを判断する処理が容易と
なり、コンパイラのサイズの縮小及び処理負荷の軽減が
図られるという効果が得られる。また、異なる演算処理
に対しては異なるフラグが操作され、異なる演算処理間
でフラグ操作の干渉が回避されるので、アセンブラによ
るプログラミングやアセンブラプログラムの読解が容易
となるという効果が得られる。
【0051】本発明のプログラム変換方法によれば、上
記プログラム実行装置に対応して、フラグ操作を行う演
算処理に対し共通の演算命令を用いたアセンブラプログ
ラムが生成される。これにより、コンパイラが行うアセ
ンブラプログラムの最適化処理における、フラグ操作を
行う演算命令であるか否かを判断する処理が容易とな
り、コンパイラのサイズの縮小及び処理負荷の軽減が図
られるという効果が得られる。また、異なる演算処理に
対しては異なるフラグが操作され、異なる演算処理間で
フラグ操作の干渉が回避されるので、アセンブラによる
プログラミングやアセンブラプログラムの読解が容易と
なるという効果が得られる。
【図面の簡単な説明】
【図1】 本発明の実施形態であるプログラム実行装置
の概略のブロック構成図である。
【図2】 従来のプログラム実行装置の概略のブロック
構成図である。
【符号の説明】
32 命令フェッチ部、34 メモリ、36 命令デコ
ード部、38 レジスタ群、40 算術論理演算部(A
LU)、42 論理積演算部、44 データアクセス
部、46 フラグ群。
フロントページの続き (56)参考文献 特開 平5−61669(JP,A) 特開 平4−271431(JP,A) 特開 平3−33930(JP,A) 特開 平2−148140(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/38

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】 命令を順次フェッチするフェッチ手段
    と、 その命令を解読する解読手段と、 解読された命令を実行する演算実行手段と、 複数種類のフラグを保持するフラグ保持手段を有し、 前記演算実行手段は、互いに共通の前記被演算データが
    入力されそれぞれ所定の前記演算処理を互いに並列して
    行い、互いに別個の前記フラグに対し当該演算処理の結
    果に応じて操作を行う複数の演算回路を含むこと、 を特徴とするプログラム実行装置。
  2. 【請求項2】 請求項1記載のプログラム実行装置にお
    いて、 前記複数の演算回路として、 算術論理演算回路と、 論理積回路と、 を含むことを特徴とするプログラム実行装置。
  3. 【請求項3】請求項1記載のプログラム実行装置におい
    て、 前記演算実行手段は、前記フラグ保持手段に保持された
    フラグの値に基づいたフラグ依存処理を行うことを特徴
    とするプログラム実行装置。
  4. 【請求項4】請求項2記載のプログラム実行装置におい
    て、 前記算術論理演算回路は、2つの前記被演算データの大
    小関係を求め、当該大小関係に応じて前記フラグ保持手
    段のフラグを設定し、当該フラグの値に応じてプログラ
    ムの所定のアドレスに分岐させることを特徴としたプロ
    グラム実行装置。
  5. 【請求項5】請求項2記載のプログラム実行装置におい
    て、 前記論理積回路は、2つの前記被演算データの論理積を
    求め、当該論理積が零か非零かに応じて前記フラグ保持
    手段のフラグを設定し、当該フラグの値に応じてプログ
    ラムの所定のアドレスに分岐させることを特徴としたプ
    ログラム実行装置。
JP25631397A 1997-09-22 1997-09-22 プログラム実行装置 Expired - Fee Related JP3515337B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP25631397A JP3515337B2 (ja) 1997-09-22 1997-09-22 プログラム実行装置
US09/157,811 US6324641B1 (en) 1997-09-22 1998-09-18 Program executing apparatus and program converting method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP25631397A JP3515337B2 (ja) 1997-09-22 1997-09-22 プログラム実行装置

Publications (2)

Publication Number Publication Date
JPH1196001A JPH1196001A (ja) 1999-04-09
JP3515337B2 true JP3515337B2 (ja) 2004-04-05

Family

ID=17290938

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25631397A Expired - Fee Related JP3515337B2 (ja) 1997-09-22 1997-09-22 プログラム実行装置

Country Status (2)

Country Link
US (1) US6324641B1 (ja)
JP (1) JP3515337B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7114063B1 (en) * 2000-12-01 2006-09-26 Unisys Corporation Condition indicator for use by a conditional branch instruction
US20080222388A1 (en) * 2007-03-05 2008-09-11 Microsoft Corporation Simulation of processor status flags
US20090172348A1 (en) * 2007-12-26 2009-07-02 Robert Cavin Methods, apparatus, and instructions for processing vector data
US20210255861A1 (en) * 2020-02-07 2021-08-19 Micron Technology, Inc. Arithmetic logic unit

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0199009A3 (en) * 1985-02-28 1989-05-31 Kabushiki Kaisha Toshiba Path coverage measuring system in a programme
US4947315A (en) * 1986-12-03 1990-08-07 Finnigan Corporation System for controlling instrument using a levels data structure and concurrently running compiler task and operator task
JP2786574B2 (ja) * 1992-05-06 1998-08-13 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
EP1229440B1 (en) * 1993-05-27 2007-05-02 Matsushita Electric Industrial Co., Ltd. Program converting unit and processor improved in address management
JP3202497B2 (ja) * 1994-09-09 2001-08-27 日本電気株式会社 情報処理装置
US5896292A (en) * 1995-06-05 1999-04-20 Canon Kabushiki Kaisha Automated system for production facility
US5761524A (en) * 1996-03-15 1998-06-02 Renditon, Inc. Method and apparatus for performing and operation multiple times in response to a single instruction
WO1998006038A1 (en) * 1996-08-07 1998-02-12 Sun Microsystems, Inc. Architectural support for software pipelining of loops
US5943250A (en) * 1996-10-21 1999-08-24 Samsung Electronics Co., Ltd. Parallel multiplier that supports multiple numbers with different bit lengths
US6012836A (en) * 1996-12-05 2000-01-11 Hewlett-Packard Company Method of reducing boolean complements in code generated by a circuit compiler

Also Published As

Publication number Publication date
US6324641B1 (en) 2001-11-27
JPH1196001A (ja) 1999-04-09

Similar Documents

Publication Publication Date Title
EP2569694B1 (en) Conditional compare instruction
EP1267257A2 (en) Conditional execution per data path slice
JP2000029704A (ja) デ―タ型によるコプロセッサの操作コ―ドの分割
GB2355084A (en) Conditional instruction execution
JP2008071130A (ja) Simd型マイクロプロセッサ
CN104011666B (zh) 具有独立进位链的加法指令
EP1267258A2 (en) Setting up predicates in a processor with multiple data paths
US7191317B1 (en) System and method for selectively controlling operations in lanes
US5577256A (en) Data driven type information processor including a combined program memory and memory for queuing operand data
JP2009271598A (ja) プロセッサ
KR101016257B1 (ko) 프로세서 및 정보 처리 장치
EP1267255A2 (en) Conditional branch execution in a processor with multiple data paths
CN101320324A (zh) 处理机装置及复合条件处理方法
JPH05150979A (ja) 即値オペランド拡張方式
JP3515337B2 (ja) プログラム実行装置
KR20000052594A (ko) Vliw 프로세서
GB2352308A (en) Conditional instruction execution
US6606703B2 (en) Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions
US6223275B1 (en) Microprocessor with reduced instruction set limiting the address space to upper 2 Mbytes and executing a long type register branch instruction in three intermediate instructions
JP2000207210A (ja) マイクロプロセッサ
JPH11353305A (ja) ベクトルレジスタのアドレス指定
US20060101240A1 (en) Digital signal processing circuit and digital signal processing method
EP1026581A2 (en) System and method for controlling program execution
JP4645369B2 (ja) Cpu
JP3060917B2 (ja) プロセッサ

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040115

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090123

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090123

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100123

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100123

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110123

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees