JPH0581016A - プログラム実行制御方式 - Google Patents

プログラム実行制御方式

Info

Publication number
JPH0581016A
JPH0581016A JP4041483A JP4148392A JPH0581016A JP H0581016 A JPH0581016 A JP H0581016A JP 4041483 A JP4041483 A JP 4041483A JP 4148392 A JP4148392 A JP 4148392A JP H0581016 A JPH0581016 A JP H0581016A
Authority
JP
Japan
Prior art keywords
flag
instruction
condition
register
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.)
Pending
Application number
JP4041483A
Other languages
English (en)
Inventor
Shinichiro Suzuki
慎一郎 鈴木
Yoichiro Takeuchi
陽一郎 竹内
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Publication of JPH0581016A publication Critical patent/JPH0581016A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification

Landscapes

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

Abstract

(57)【要約】 【目的】 本発明は、分岐条件の減少及び複合条件の一
括判定等の特徴を有するプログラム実行制御方式を提供
することを目的とする。 【構成】 本発明は主記憶及びレジスタを有する計算機
の演算処理装置のプログラム実行制御方式である。本方
式は、専用レジスタ部100と、前記専用レジスタ部内
の特定の前記フラグ部(の番号)、又は/及び、フラグ
指定フィールド230とを含み、当該命令が条件付きフ
ラグ設定命令である場合、条件指定サブオペコードフィ
ールド220と、フラグビット指定オペランド・フィー
ルド210と、を含む命令語200の記憶部と、設定部
300と、キャンセル部400と、を具備することを特
徴とする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、計算機の演算処理装置
のプログラムの条件判定、条件分岐、及び、条件実行処
理におけるプログラム実行制御方式に関する。
【0002】
【従来の技術】従来、演算処理装置における条件処理
は、次のように行われている。演算処理装置は、比較又
は演算の論理的な結果を零、正又は負等を示す1つのフ
ラグに保管する。前記装置は、前記フラグが特定の条件
を満たしている場合に分岐する条件分岐命令を用いる。
そのため、例えば、図1の2つの例(例はいずれもC言
語による記述である)に示すように、複合条件を持つi
f文を実行する場合、個々の条件を一つ一つ順番に比較
することによって、条件分岐を繰り返さなければならな
い。
【0003】最近、高速処理の手法として定着している
パイプライン処理方式の計算機では、分岐が実行される
と、図2に示すように分岐の直前までに読み込んでおい
た命令が無効となる。更に、前記計算機では、分岐先命
令の読み出しが、分岐先のアドレスが生成されて読み出
し可能になるまで延期される。上記のように、分岐命令
は、一般的なパイプライン処理方式の計算機において、
パイプライン処理の流れを乱す等、処理性能低下の大き
な要因となっている。図2において、F、D、E、W
は、パイプライン処理機構中の各処理ステージを示す。
Fは命令フェッチステージ、Dはデコードステージ、E
は実行ステージ、Wは結果書き戻しステージをそれぞれ
示す。OP1は分岐命令の直前に発行された命令を示
す。Bは分岐命令を示す。OP2及びOP3はそれぞれ
分岐命令の直後に位置する命令であり、フェッチされる
が分岐によって捨てられる命令を示す。OP4は分岐先
の命令を示す。OP5、OP6、OP7はそれぞれOP
4に続いて発行される命令を示す。TDは見かけ上の処
理停止時間を示す。TD’は分岐が認識されてから分岐
先がフェッチ可能となるまでの時間を示す。
【0004】上記の問題を回避する方法として、分岐命
令直後から分岐先命令読み出し直前までのサイクル、す
なわちディレイド・スロット、にも分岐以前に実行すべ
き命令を配置してパイプライン処理を継続する遅延分岐
方式がある。しかし、すべてのディレイドスロットに命
令を配置することは困難である。そのため、分岐命令が
頻発しがちな従来の処理方式では、分岐命令による性能
低下がしばしば問題となっている。
【0005】従来方式では、比較結果等のフラグを一組
しか持たず、条件の判定を分岐命令によって行っている
ことから、条件判定は逐次行わなければならない。その
ため、同時に複数の命令を実行可能な並列処理方式の計
算機において、条件処理の並列化が困難である。上記の
問題を解決するために次の方法がある。
【0006】比較等の結果を任意の汎用レジスタに保存
できるようにし、予め個々の条件の結果を別々のレジス
タに保存する。その後まとめて条件判定を行う。本方法
により、一つの分岐で済ませることが可能となり、条件
処理の並列化の可能性を向上させることができる。しか
し、本方式は、貴重なレジスタを各条件の個数分消費す
る。従って、本方式は、レジスタの使用効率を低下さ
せ、結果として、メモリアクセスを増加させ性能低下に
つながる。結局、本方式では、分岐命令数の低下や並列
処理の可能性の向上の効果は得られるが、そのための副
作用も大きい。
【0007】上述したように、従来のプログラム実行制
御方式では、第1に、複数の条件からなるIF−ELS
E IF−・・・ELSEのような分岐をコンパイルし
て実行する場合に、個々の条件一つ一つを調べて条件分
岐を実行しなければならない。従って、コード生成効率
や実行速度を上げることができない。第2に、分岐が多
くなりがちであるため、パイプライン処理方式の計算機
では、分岐におけるパイプラインの乱れや停止等による
処理速度低下の影響が大きい。第3に、比較命令等の結
果が1箇所のフラグにセットされるため、別の比較を行
った後に、それ以前の比較結果は書きつぶされていて再
利用できない。そのため、複合条件の一括判定や、条件
処理の並列化が不可能である。第4に、レジスタの判定
結果をセーブする計算機では、貴重なレジスタの利用効
率が悪く、それが性能低下の原因になる。
【0008】
【発明が解決しようとする課題】本発明は、次の特徴を
有するプログラム実行制御方式を提供することを目的と
する。 (1)同じプログラムに対して分岐命令の数を減らすこ
と及び複合条件を一度に判定することを可能とするプロ
グラム実行制御方式。 (2)条件に応じた複数の分岐先を持つステートメント
を一度の分岐命令実行で実現するプログラム実行制御方
式。
【0009】(3)計算機の条件実行並行処理におい
て、コード生成効率の向上、分岐命令発行回数の削減、
条件判定の並列実行の可能性向上と、それらに基づく処
理の高速化を図ることができるプログラム実行制御方
式。
【0010】
【課題を解決するための手段】上記目的を達成するため
に、主記憶及びレジスタを有する計算機の演算処理装置
のプログラム実行制御方式において、本プログラム実行
制御方式は、
【0011】プログラム中の各命令の実行をキャンセル
するか否かを決定するフラグとして命令毎に個別に指定
可能であり、個別に真偽を設定可能である複数の1ビッ
トのフラグ手段、で構成され、汎用レジスタと同様に整
数、論理演算及び比較の少なくとも1つのオペランドと
しての機能を有する専用レジスタ手段と、
【0012】前記専用レジスタ手段に格納された値に基
づいて当該命令の実行キャンセルするか否かを決める前
記専用レジスタ手段内の特定の前記フラグ手段を指定
し、又は/及び、前記フラグ手段に格納された値が1又
は0で当該命令の実行をキャンセルするかを指定するフ
ラグ指定フィールドと、当該命令が前記フラグ手段を設
定する命令である場合には、更にオペランドに対する条
件を数値として指定する条件指定サブオペコードフィー
ルドと、その条件の真偽の結果値を格納する前記専用レ
ジスタ手段内の特定の前記フラグ手段を指定するフラグ
ビット指定オペランド・フィールドと、を含む命令語の
記憶手段と、
【0013】前記フラグ手段を設定する命令実行時に、
前記条件指定サブオペコードフィールドに指定された条
件の真偽の結果値を、前記フラグビット指定オペランド
フィールドに指定された前記専用フラグレジスタ手段内
のフラグ手段に設定する設定手段と、
【0014】前記フラグ指定フィールドに指定された前
記専用レジスタ手段内のフラグ手段の値又は/及びその
値が1及び0のいずれかで当該命令をキャンセルするか
を示す前記フラグ指定フィールド内における指定値に従
って、当該命令をキャンセルする手段と、を具備するこ
とを特徴とする。
【0015】
【作用】本発明のプログラム実行制御方式は、条件に従
って特定のフラグを設定し、命令毎に指定したフラグの
値に従ってその命令の実行をキャンセルすることによ
り、条件分岐や各種命令の条件実行を実現する。この結
果、本発明のプログラム実行制御方式は、同じプログラ
ムに対して分岐命令の数を減らすこと及び複合条件を一
度に判定することを可能とする。更に、本発明のプログ
ラム実行制御方式は、条件に応じた複数の分岐先を持つ
ステートメントを一度の分岐命令実行で実現する。加え
て、本発明のプログラム実行制御方式は、演算処理装置
における並行処理の可能性を高めることが可能である。
【0016】以上説明したように、本発明のプログラム
実行制御方式によれば、次のような効果が得られる。第
1に、複合条件を一度に判定できる。第2に、条件に応
じた複数の分岐先を持つステートメントを、1回の分岐
で実行できる。第3に、条件に応じて別々の処理を行う
ことを、従来より少ない分岐命令の発行回数で、或い
は、分岐命令無しで実現できる。従って、一般的なパイ
プライン処理方式の計算機において性能低下の原因とな
るパイプラインの乱れを少なくすることができる。第4
に、比較結果等の条件判定結果を複数別々の場所に保持
できる。その結果、過去の条件判定結果の再利用が可能
となり、条件処理の並列実行の可能性が向上する。その
ため、特に、並列処理方式の計算機において、より効率
の良いコード生成が可能となり、大幅な性能向上が図れ
る。第5に、以上の第1から第4の効果がレジスタの利
用効率に何等影響することなく得られる。
【0017】
【実施例】以下、本発明の実施例について、図面を参照
して詳細に説明する。
【0018】図3は、本発明の1実施例に係るプログラ
ム実行制御方式の概略構成を示すブロック図である。図
3において、本発明のプログラム実行制御方式は、基本
的に、フラグレジスタ(専用レジスタ)100と、フラ
グ指定フィールド230と、フラグを設定する命令の条
件指定サブオペコードフィールド220及びフラグビッ
ト指定オペランドフィールド210とを含む命令語20
0を格納する手段と、フラグビット指定オペランドフィ
ールド210によって指定されたフラグの設定部300
と、フラグ指定フィールド230を含む命令語200の
キャンセル部400と、を具備する。上記の構成によ
り、フラグを設定する命令の条件指定サブオペコードが
示すその命令のソース・オペランドの条件の真偽の結果
値がその命令のデスティネーション・オペランドとして
指定されたフラグレジスタ100内の特定のフラグ部1
10に設定され、前記フラグ指定フィールド230によ
って指定されたフラグ部110に設定された値の真偽に
応じた値に基づいて命令がキャンセルされる。図3に示
された各部の機能の詳細を図4から図8に基づいて説明
する。
【0019】図4にフラグレジスタ100の構成を示
す。フラグレジスタ100は、ビット単位の複数のフラ
グ部C0〜Cn−1からなる。フラグレジスタ100
は、他の汎用レジスタと同様に数値として読み出すこと
ができる専用レジスタであり、比較及び演算命令用等の
ソース・オペランドとして指定可能である。
【0020】図5にフラグを設定する命令すなわち条件
付きフラグ設定命令の内容を示す。前記条件フラグ設定
命令により、指定された条件の真偽に従って指定された
フラグ部の値が1又は0にセットされる。
【0021】図6に、命令語200の構成を示す。命令
語200内のフラグ指定フィールド230はすべての命
令語に含まれていて、命令語200の命令の実行のキャ
ンセルに用いる特定のフラグ部を指定し、又は更にその
フラグの値の意味すなわち前記フラグに設定された値が
1又は0のいずれでキャンセルするかを指定する。以後
に述べる本発明の実施例では、フラグ指定フィールド2
30は前記フラグ部110とその意味の両方を指定す
る。その場合、指定可能なフラグ部110の個数をnと
すると、前記フィールド230のサイズは、(1+↑l
og2 n ↑)ビットである。ここで↑は、切り上げを示
す。
【0022】図7は、フラグ部の数nが16の場合の、
オペランドの比較結果によりフラグレジスタ100内の
特定のフラグ部110をセットする条件付きフラグ設定
命令の実行機能を説明するためのブロック図である。
【0023】図7において、命令語200は、条件付き
フラグ設定命令の命令語である。条件指定サブオペコー
ドフィールド220には、条件付きフラグ設定命令のオ
ペランドに対する条件が数値として指定されている。フ
ラグビット指定オペランドフィールド210には、フラ
グレジスタ100内で設定されるフラグ部110の番号
が指定されている。
【0024】バイナリデコーダ310は、4ビットの入
力値に従って16本の出力のうちいずれか1本に論理値
1を出力する。イネーブル入力EN=0の時に前記デコ
ーダ310の全出力が0になる。オペランド比較器32
0は、命令に指定されたオペランド値を比較し、前記比
較結果が確定した時にValid=1を出力し、前記比
較結果が0の時にZero=1、負の時にNegati
ve=1を出力する。第1データセレクタ330は、3
ビットの入力指定値によっていずれか1つの入力を選択
して出力する。
【0025】フラグ部110は、本実施例においては、
データフリップフロップより構成され、複数のデータフ
リップフロップによりフラグ・レジスタが構成される。
前記データフリップフロップには、クロックCLKの立
ち上がりによりデータD(1又は0)が設定される。
【0026】図7に従い、指定された条件の真偽をフラ
グレジスタ100内の指定されたフラグ部に設定する機
能について説明する。図7において、条件指定フィール
ド220は図5のConditionに、フラグビット
指定フィールド210は図5のCiにそれぞれ相当す
る。
【0027】図7によれば、オペランド比較器320は
命令に指定されたオペランドを調べる。前記比較器32
0は、オペランドの関係が=、≠、<、>、≦、≧(そ
れぞれFORTRAN言語のEQ、NE、LT、GT、
LE、GEに相当)のそれぞれについて真偽を示す論理
信号を得る。前記第1データセレクタ330は、前記論
理信号の1つを条件指定フィールド220によって選択
し、その論理信号の値をフラグレジスタ100に与え
る。更に、前記デコーダ310は、フラグビット指定フ
ィールド210で指定されたフラグ部110に相当する
フリップフロップにのみクロックパルスを与える。上記
の方法により、指定された条件の真偽の値がフラグレジ
スタ100内の指定されたフラグ部110に設定され
る。図8はフラグ部の数nが16の場合の命令のキャン
セル機構を説明するためのブロック図である。
【0028】図8において、フラグレジスタ100は、
各フラグビットの値を出力する。フラグ指定フィールド
230の下位4ビットの値によって対応するフラグ部1
10が、上位1ビットによりフラグの意味が、指定され
る。例えば、前記フィールド230の上位1ビットが0
であり、フラグ部110に格納された値が1である場合
にキャンセルを意味する。第2データセレクタ410
は、4ビットの値に従って入力16ビットのうち1ビッ
トを選択して出力する。Ex−ORゲート420は、キ
ャンセル信号(1でキャンセル)としてフラグ指定フィ
ールド230によって指定されたフラグの意味と、指定
されたフラグ部110に格納された値との排他的論理和
を出力する。
【0029】禁止入力付きメモリポート450は、指定
されたレジスタと主記憶の間でデータ転送を行う。この
ポート450は入力dによって転送を禁止できる。例え
ば、d=1で禁止となる。禁止入力付きライトバック機
構452は、演算命令の結果、すなわちALU456の
出力、を特定のレジスタに書き戻す。前記ライトバック
機構452は、入力dによって書き戻しを禁止する。例
えば、d=1で禁止となる。ソースレジスタ選択機構4
54は、指定されたレジスタの内容をALU456へ出
力する。この場合、フラグレジスタ100も他のレジス
タと同様に、選択機構454により指定できる。
【0030】フリップフロップ460は、CLKに入力
されるパルスの立ち上がりの度に反転する論理値を出力
する。プログラムカウンタ462及び464は、次にフ
ェッチすべき命令のアドレスを出力する。実際のアドレ
スには、2つのプログラムカウンタ462及び464の
うちどちらか一方の出力が選択される。出力が選択され
ていない方のプログラムカウンタ462及び464に
は、分岐命令発行時、直ちに分岐先アドレスがロードさ
れる。データセレクタ466は、2つのプログラムカウ
ンタ462及び464の出力のうちいずれか一方の出力
を選択して次にフェッチすべき命令のアドレスを出力す
る。図8に従い、指定されたフラグ部に設定された値の
真偽に応じて命令をキャンセルする機能を説明する。
【0031】第2データセレクタ410は、フラグ指定
フィールド230の下位4ビットによってフラグレジス
タ100のフラグ部110の1つを選択し、その値を出
力する。その出力すなわち指定されたフラグの値と、フ
ラグ指定フィールド230の上位1ビット、すなわちフ
ラグの意味指定ビット(同ビットが0(又は1)の時フ
ラグの値が1(又は0)でキャンセル)と、指定された
フラグの値と、の排他的論理和、すなわちEx−ORゲ
ート420の出力が、命令のキャンセル指定信号とな
る。本信号が真(1)の時、本キャンセル機構により、
命令の実行がキャンセルされる。
【0032】例えば、演算命令の場合は、禁止入力付き
ライトバック機構452に上記キャンセル信号を与え、
前記キャンセル信号が真の時に演算結果の書き戻しを禁
止することによって命令が実行されなかった時と同じ状
態にする。
【0033】ロード/ストア命令(メモリーレジスタ間
転送命令)の場合は、禁止入力付きライトバック機構4
52に代わって禁止入力付きメモリポート450に上記
キャンセル指定信号を与え、前記キャンセル信号が真の
時メモリーレジスタ間転送を禁止することによってキャ
ンセルする。
【0034】分岐命令の場合は、先ずプログラムカウン
タ462、464のうち現在使用されていない方に分岐
先アドレスを設定し、上記キャンセル指定信号が真の
時、使用するプログラムカウンタ462、464を現在
使用中のものから分岐先アドレスが設定されているもの
へ切り替える動作を禁止することによってキャンセルす
る。
【0035】図8における演算命令、ロード/ストア命
令及び分岐命令の場合のタイミングをそれぞれ図9から
図11に示す。図9から図11において、TsuとTh
oldは、それぞれキャンセルの対象となる動作に対す
るキャンセルビットのセットアップ及びホールド時間を
示す。キャンセルビットは、図8のEx−ORゲート4
20の出力すなわちキャンセル信号である。
【0036】以上のようにして、特定のフラグ部110
を条件に従ってセットする機能及び特定のフラグ部に設
定された値の内容に従う命令のキャンセル機能を実現
し、本機能を用いて条件処理を行う。本方式によって、
従来方式よりも効率の良いコードでより高速に条件処理
を実現でき、並列処理方式(複数の命令を同時に実行し
てゆく方式)の計算機においてその効果が特に大きい。
【0037】図1で扱ったif文に本発明の方式を適用
した例を図12に示す。図12の例はすべてC言語によ
る記述であり、フラグレジスタをFとする。フラグレジ
スタFを構成するフラグ部を最下位ビットからf0、f
1、f2、f3・・・とする。図12に示すように、本
方式によって、図12の(5)のような複合条件の一括
判定が可能となる。図12の例1は分岐命令の発行回数
が1度で済み、例2は分岐命令無しでしかもわずか3つ
の命令で実行できる。例1の「実行文」が「i++:」
等1つの命令で実現できる場合、(6)(7)(8)の
部分を次の1命令に置き換えることによって分岐を無く
すことができる。 ?!f1[実行文]の命令 ;f1=1なら命令実行 (本命令は、(6)(7)(8)に相当する。)
【0038】図12の(5)のフラグ設定では、条件と
して「8」と比較している。この場合、if文が成立す
る条件は、Aが必ず真で、B又はCが真すなわち、f3
=1でf1=1又はf2=1である。従って、レジスタ
R0の値の2進表現すなわち[0〜0 f3 f2 f
1 0]が1000より大きい場合、すなわち10進表
現で8より大きい場合に、if文が成立したことにな
る。そのため、レジスタR0が8より大きい場合は、f
1=1とし、次の分岐命令をキャンセルして(7)を実
行している。
【0039】図13に3命令以上同時に実行する並行処
理方式の計算機に対して本方式を適用した例を示す。図
13において、命令は1行毎に同時に実行される。本方
式では、条件判定や条件実行命令の並列実行の可能性が
高い。そのため、命令が効率的に配置でき、並列処理方
式による高速化の効果を充分発揮させることができる。
例1と例2のソースプログラム文は、図12及び図1の
例と同じである。
【0040】以上説明したように、本方式は条件処理に
おけるコード生成効率の向上と処理の高速化に極めて有
効である。命令の条件実行は条件に従ったフラグの設定
と命令実行時に命令のキャンセルをするか否かを決める
フラグ部を指定することによって行う。常に実行する命
令に対しては、フラグレジスタ中のフラグ部のうちf0
を常に0とし、キャンセルフラグとしてフラグ部f0を
指定すれば良い。
【0041】
【発明の効果】以上説明したように、本発明のプログラ
ム実行制御方式によれば、次のような効果が得られる。
第1に、複合条件を一度に判定できる。第2に、条件に
応じた複数の分岐先を持つステートメントを、1回の分
岐で実行できる。第3に、条件に応じて別々の処理を行
うことを、従来より少ない分岐命令の発行回数で、或い
は、分岐命令無しで実現できる。従って、一般的なパイ
プライン処理方式の計算機において性能低下の原因とな
るパイプラインの乱れを少なくすることができる。第4
に、比較結果等の条件判定結果を複数別々の場所に保持
できる。その結果、過去の条件判定結果の再利用が可能
となり、条件処理の並列実行の可能性が向上する。その
ため、特に、並列処理方式の計算機において、より効率
の良いコード生成が可能となり、大幅な性能向上が図れ
る。第5に、以上の第1から第4の効果がレジスタの利
用効率に何等影響することなく得られる。
【図面の簡単な説明】
【図1】従来における条件処理方式の例を示す図。
【図2】従来のパイプライン処理方式における分岐時の
動作の例を示す図。
【図3】本発明の1実施例に係る全体構成を示す図。
【図4】フラグレジスタ(専用レジスタ)の構成を示す
図。
【図5】条件付きフラグ設定命令の内容を示す図。
【図6】命令語の構成を示す図。
【図7】フラグ数nが16の場合の、オペランドの比較
結果によってフラグレジスタをセットするセット命令の
実行機能を説明するためのブロック図。
【図8】フラグ数nが16の場合の命令のキャンセル機
構を説明するためのブロック図。
【図9】演算命令の場合のタイミングを示すタイムチャ
ートを示す図。
【図10】ロード/ストア命令の場合のタイミングを示
すタイムチャートを示す図。
【図11】分岐命令の場合のタイミングを示すタイムチ
ャートを示す図。
【図12】複合条件を持つif文を実行する場合に本発
明の方式を適用した場合の例を示す図。
【図13】3つ以上の命令を同時に実行する並列処理方
式の計算機に対して本方式を適用した例を示す図。
【符号の説明】
100…フラグレジスタ(専用レジスタ)、200…命
令語、210…条件指定サブオペコードフィールド、2
20…フラグビット指定オペランドフィールド、230
…フラグ指定フィールド、300…設定部、400…キ
ャンセル部。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 主記憶及びレジスタを有する計算機の演
    算処理装置のプログラム実行制御方式において、 プログラム中の各命令の実行をキャンセルするか否かを
    決定するフラグとして命令毎に個別に指定可能であり、
    個別に真偽を設定可能である複数の1ビットのフラグ手
    段、で構成され、汎用レジスタと同様に整数、論理演算
    及び比較の少なくとも1つのオペランドとしての機能を
    有する専用レジスタ手段と、 前記専用レジスタ手段に格納された値に基づいて当該命
    令の実行キャンセルするか否かを決める前記専用レジス
    タ手段内の特定の前記フラグ手段を指定し、又は/及
    び、前記フラグ手段に格納された値が1又は0で当該命
    令の実行をキャンセルするかを指定するフラグ指定フィ
    ールドと、当該命令が前記フラグ手段を設定する命令で
    ある場合には、更にオペランドに対する条件を数値とし
    て指定する条件指定サブオペコードフィールドと、その
    条件の真偽の結果値を格納する前記専用レジスタ手段内
    の特定の前記フラグ手段を指定するフラグビット指定オ
    ペランド・フィールドと、を含む命令語の記憶手段と、 前記フラグ手段を設定する命令実行時に、前記条件指定
    サブオペコードフィールドに指定された条件の真偽の結
    果値を、前記フラグビット指定オペランドフィールドに
    指定された前記専用フラグレジスタ手段内のフラグ手段
    に設定する設定手段と、 前記フラグ指定フィールドに指定された前記専用レジス
    タ手段内のフラグ手段の値又は/及びその値が1及び0
    のいずれかで当該命令をキャンセルするかを示す前記フ
    ラグ指定フィールド内における指定値に従って、当該命
    令をキャンセルする手段と、を具備することを特徴とす
    るプログラム実行制御方式。
JP4041483A 1991-02-27 1992-02-27 プログラム実行制御方式 Pending JPH0581016A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP3-31167 1991-02-27
JP3116791 1991-02-27

Publications (1)

Publication Number Publication Date
JPH0581016A true JPH0581016A (ja) 1993-04-02

Family

ID=12323880

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4041483A Pending JPH0581016A (ja) 1991-02-27 1992-02-27 プログラム実行制御方式

Country Status (2)

Country Link
US (1) US5371862A (ja)
JP (1) JPH0581016A (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6154828A (en) * 1993-06-03 2000-11-28 Compaq Computer Corporation Method and apparatus for employing a cycle bit parallel executing instructions
JPH0756892A (ja) * 1993-08-10 1995-03-03 Fujitsu Ltd マスク付きベクトル演算器を持つ計算機
JPH07200292A (ja) * 1993-12-28 1995-08-04 Mitsubishi Electric Corp パイプライン式プロセッサ
JPH08320795A (ja) * 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
US5974240A (en) * 1995-06-07 1999-10-26 International Business Machines Corporation Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution
JP3512272B2 (ja) * 1995-08-09 2004-03-29 株式会社日立製作所 比較演算装置およびグラフィック演算システム
JPH1049368A (ja) * 1996-07-30 1998-02-20 Mitsubishi Electric Corp 条件実行命令を有するマイクロプロセッサ
US20030061471A1 (en) * 1999-07-23 2003-03-27 Masahito Matsuo Data processor
WO1998033115A1 (en) * 1997-01-24 1998-07-30 Mitsubishi Denki Kabushiki Kaisha A data processor
US6430682B1 (en) * 1998-09-11 2002-08-06 Agere Systems Guardian Corp. Reliable branch predictions for real-time applications
TW530262B (en) 1999-02-08 2003-05-01 Matsushita Electric Industrial Co Ltd Control method for procedure execution
US7505974B2 (en) 1999-02-12 2009-03-17 Gropper Robert L Auto update utility for digital address books
US6883000B1 (en) 1999-02-12 2005-04-19 Robert L. Gropper Business card and contact management system
US20030172189A1 (en) * 2001-07-02 2003-09-11 Globespanvirata Incorporated Communications system using rings architecture
JP3564445B2 (ja) * 2001-09-20 2004-09-08 松下電器産業株式会社 プロセッサ、コンパイル装置及びコンパイル方法
US20040064685A1 (en) * 2002-09-27 2004-04-01 Hung Nguyen System and method for real-time tracing and profiling of a superscalar processor implementing conditional execution
US7020765B2 (en) * 2002-09-27 2006-03-28 Lsi Logic Corporation Marking queue for simultaneous execution of instructions in code block specified by conditional execution instruction
US7140003B2 (en) * 2003-02-14 2006-11-21 International Business Machines Corporation Method and system for specifying sets of instructions for selection by an instruction generator
DE102005050382B4 (de) * 2005-10-20 2012-08-09 Infineon Technologies Ag Prozessor zum Prüfen einer Bedingung für eine bedingte Ausführung eines Programmbefehls
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

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3979725A (en) * 1973-08-06 1976-09-07 Xerox Corporation Multi-way program branching circuits
US4124893A (en) * 1976-10-18 1978-11-07 Honeywell Information Systems Inc. Microword address branching bit arrangement
US4407015A (en) * 1980-11-26 1983-09-27 Burroughs Corporation Multiple event driven micro-sequencer
EP0221577B1 (en) * 1985-11-08 1996-01-17 Nec Corporation Microprogram control unit
US4766531A (en) * 1986-04-14 1988-08-23 Motorola, Inc. Method and apparatus for generating the next microaddress for a micromachine
US5127091A (en) * 1989-01-13 1992-06-30 International Business Machines Corporation System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor

Also Published As

Publication number Publication date
US5371862A (en) 1994-12-06

Similar Documents

Publication Publication Date Title
JPH0581016A (ja) プログラム実行制御方式
US6289433B1 (en) Superscalar RISC instruction scheduling
US5051896A (en) Apparatus and method for nullifying delayed slot instructions in a pipelined computer system
US5710902A (en) Instruction dependency chain indentifier
US5655096A (en) Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
US7424598B2 (en) Data processor
EP1442364B1 (en) System and method to reduce execution of instructions involving unreliable data in a speculative processor
US6948051B2 (en) Method and apparatus for reducing logic activity in a microprocessor using reduced bit width slices that are enabled or disabled depending on operation width
US5694565A (en) Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US7395414B2 (en) Dynamic recalculation of resource vector at issue queue for steering of dependent instructions
US5619664A (en) Processor with architecture for improved pipelining of arithmetic instructions by forwarding redundant intermediate data forms
EP0653703B1 (en) Temporary pipeline register file for a superpipelined superscalar processor
US5778248A (en) Fast microprocessor stage bypass logic enable
US6862676B1 (en) Superscalar processor having content addressable memory structures for determining dependencies
KR19980018874A (ko) 파이프라인 방식 프로세서 (processor with pipelining-structure)
US6871343B1 (en) Central processing apparatus and a compile method
JPH02227730A (ja) データ処理システム
US6263424B1 (en) Execution of data dependent arithmetic instructions in multi-pipeline processors
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
US5850563A (en) Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
CN119556982A (zh) 矢量数据处理器、指令处理方法、片上系统以及计算设备
JP2620505B2 (ja) スーパースカラ・プロセッサ・システムの同期化効率を向上させる方法およびシステム
Matsuo et al. Enhancing GPU Performance Through Complexity-Effective Out-of-Order Execution Using Distance-Based ISA
KR100322150B1 (ko) 부동 소수점 상태 및 제어 레지스터 인스트럭션을 단일 사이클
US6157995A (en) Circuit and method for reducing data dependencies between instructions