JP3494489B2 - 命令処理装置 - Google Patents

命令処理装置

Info

Publication number
JP3494489B2
JP3494489B2 JP29669594A JP29669594A JP3494489B2 JP 3494489 B2 JP3494489 B2 JP 3494489B2 JP 29669594 A JP29669594 A JP 29669594A JP 29669594 A JP29669594 A JP 29669594A JP 3494489 B2 JP3494489 B2 JP 3494489B2
Authority
JP
Japan
Prior art keywords
instruction
nth
entry
true
branch
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP29669594A
Other languages
English (en)
Other versions
JPH08153000A (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.)
Renesas Technology Corp
Original Assignee
Renesas Technology 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 Renesas Technology Corp filed Critical Renesas Technology Corp
Priority to JP29669594A priority Critical patent/JP3494489B2/ja
Priority to US08/548,374 priority patent/US5771377A/en
Priority to DE19549468A priority patent/DE19549468C2/de
Priority to DE1995143880 priority patent/DE19543880B4/de
Publication of JPH08153000A publication Critical patent/JPH08153000A/ja
Priority to US09/078,489 priority patent/US6035122A/en
Application granted granted Critical
Publication of JP3494489B2 publication Critical patent/JP3494489B2/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • 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/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; 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明はコミット条件を有する
命令の処理装置に関し、さらに詳しくは、分岐条件の真
偽を判定して命令が有効であると判断して実行する際に
コミット条件で構成される条件により最終的に処理する
ようにした命令処理装置に関するものである。
【0002】
【従来の技術】図18は、従来の命令処理装置であるマ
イクロプロセッサの構成を示すブロック図である。
【0003】図18におけるマイクロプロセッサは、複
数のレジスタからなるレジスタファイル1と、このレジ
スタファイル1に保持されたデータについて演算処理す
る演算論理装置(以下、ALUと称す)2と、命令コー
ドとして命令を保持するメモリ3と、実行されるべき命
令のアドレスを保持し、かつそのアドレスをメモリ3へ
与えるプログラムカウンタ4と、プログラムカウンタ4
をインクリメントする回路5とを備える。
【0004】このマイクロプロセッサはさらに、メモリ
3からフェッチされた命令コードを保持する命令レジス
タ6と、その命令コードを解読し、レジスタファイル1
の読出/書込を制御するための制御信号およびALU2
を制御するための制御信号を生成する命令デコーダ7
と、レジスタファイル1から読出されたデータに従って
分岐条件を判定するテスト回路8と、テスト回路8から
の制御信号に応答して分岐先アドレスを計算する回路9
とを備える。
【0005】次にこのマイクロプロセッサの動作につい
て説明する。まずプログラムカウンタ4によってメモリ
3に保持されている命令の中から実行すべき命令のアド
レスが指定される。その指定された命令はメモリ3から
フェッチされ、命令レジスタ6に保持される。命令レジ
スタ6によって保持された命令は命令デコーダ7によっ
て解読され、その命令の内容に応答してレジスタファイ
ル1の読出/書込が制御されるとともに、ALU2が制
御される。
【0006】命令レジスタ6にフェッチされた命令が演
算命令の場合、レジスタファイル1の中の2つのレジス
タからデータがそれぞれ読出される。それら読出された
データはALU2によって演算され、その結果データは
再びレジスタファイル1の中のレジスタに書込まれる。
【0007】一方、命令レジスタ6にフェッチされた命
令が分岐命令の場合、レジスタファイル1から読出され
た2つのデータはテスト回路8に与えられる。それらデ
ータに従ってテスト回路8はその分岐条件は満たされて
いるか否かを判定する。すなわち、テスト回路8によっ
てその条件が真であるか偽であるかが判断される。そし
て、その条件が真であれば、分岐先アドレス計算回路9
によってその分岐先アドレスが計算され、プログラムカ
ウンタ4に与えられる。その条件が偽であれば、プログ
ラムカウンタ4はインクリメントされる。
【0008】
【発明が解決しようとする課題】図5は、プログラムの
一例を示すフローチャートである。このフローチャート
によれば、基本ブロックAにおいて、命令a1:r2=
r0+r1(すなわち、レジスタファイル1内のレジス
タr0およびr1の値を加算して、レジスタファイル1
内のレジスタr2に格納する)を実行する。そして、条
件a2:if(r2<r3)が判定された後、基本ブロ
ックBおよびEのいずれかが開始される。すなわち、r
2<r3が偽と判定された場合、基本ブロックBにおけ
る命令b1:r4=r12+r13が実行され、r2<
r3が真と判定された場合、基本ブロックEにおける命
令e1(図示せず)が実行されるべきものである。
【0009】上記従来のマイクロプロセッサによれば、
ブロックA内の条件a2が判定された後でなければ、ブ
ロックB内の命令b1およびブロックE内の命令e1の
いずれも実行され得ない。たとえば、命令b1が実行さ
れた結果データがレジスタファイル1におけるレジスタ
r4に書込まれるのは、ブロックAの条件a2が偽であ
るときだけである。もし条件a2が真であるのに命令b
1が実行された結果データがレジスタr4に書込まれた
場合、レジスタr4が持っていた前のデータが破壊され
るからである。
【0010】このように、従来のマイクロプロセッサ
は、図5に示すブロックA内の条件a2、ブロックB内
の条件b2、およびブロックC内の条件c2の下で実行
すべき命令b1、c1およびd1を、それぞれ条件a
2、b2およびc2を判定する前に実行することはでき
なかった。近年、複数のALUを持つマイクロプロセッ
サが提供されているが、このようなマイクロプロセッサ
であっても1または2以上の条件下で実行すべき命令
を、それら条件を判定する前に実行することはできな
い。そのため、それら複数のALUのうちいくつかは全
く演算を行なわないため、効率よくALUを使用でき
ず、演算処理の十分な高速化は実現され得ないという問
題点があった。
【0011】この発明は上記の問題点を解決するために
なされたもので条件判定後に実行すべき命令を、条件判
定前に実行することができるようにし、より高速に命令
を処理することができる命令処理装置を得ることを目的
とする。
【0012】また、その際ハードウェアの構成を大幅に
縮小できる命令処理装置を得ることを目的とする。
【0013】
【課題を解決するための手段】この発明による命令処理
装置は、第1の分岐条件ないし第nの分岐条件(nは自
然数)の真偽により第nの命令の実行結果が有効である
と判断して命令を処理することを、コミット条件コード
を有した命令コードにより行なうようにした命令処理装
置において、第1ないし第nの分岐条件の真偽を判定す
ること、および第nの命令を実行する演算手段、この演
算手段により第nの命令を実行して生成されたデータを
確定的もしくは暫定的に保持するデータ保持手段、第n
の命令を実行させるための第nの命令コードをデコード
する命令デコーダ、複数のエントリを有し、第mの分岐
条件(m=1〜n)の真偽の一方を示す第maの値と他
方を示す第mbの値、第mの分岐条件の真偽が未定であ
ることを示す条件値のいづれか1つを第mのエントリに
記憶して保持する真偽判定保持手段を備えた命令処理装
置であって、上述の第nの命令コードは第nのエントリ
を指定する第nのコミット条件コードを有し、この第n
のコミット条件コードにより、(a)真偽判定保持手段
が、第1aの値ないし第naの値をそれぞれ保持した第1
ないし第nのエントリからなる真偽エントリ群を構成し
た場合、この第nの命令コードにより実行される第nの
命令の生成するデータをデータ保持手段に確定的に保持
するように制御し、(b)第1ないし第nのエントリの
うち、少なくとも1つのエントリが未定を保持し、それ
以外のエントリは真偽エントリ群と同一の値を保持する
場合、第nの命令コードにより実行される第nの命令の
生成するデータをデータ保持手段に暫定的に保持するよ
うに制御する制御手段、データが上記データ保持手段に
暫定的に保持された場合、第1ないし第nのエントリが
真偽エントリ群を構成したときにデータ保持手段は暫定
的に保持されたデータを確定的に保持するように制御す
るコミット制御手段を備えたものである。
【0014】また、第nの命令コードは第nのエントリ
を指定する第nのコミット条件コードを有し、この第n
のコミット条件コードをデコードして、第1aの値ない
し第naの値をそれぞれ保持した第1のエントリないし
第nのエントリからなる第1のデコードエントリ群を生
成するコミット条件デコーダ、この第1のデコードエン
トリ群のエントリと真偽判定保持手段の対応するエント
リとを各々比較し、(a)第1のデコードエントリ群が
真偽判定保持手段の対応するエントリの保持する真偽と
すべて一致した場合、上記の第nの命令コードにより実
行される第nの命令の生成するデータをデータ保持手段
に確定的に保持するよう制御し、(b)第1のデコード
エントリ群の各エントリと一致しない真偽判定保持手段
の対応するエントリがすべて未定を保持する場合、上記
の第nの命令コードにより実行される第nの命令の生成
するデータをデータ保持手段に暫定的に保持するよう制
御する実行制御手段、第nの命令を実行して生成された
データがデータ保持手段に暫定的に保持された場合、真
偽判定保持手段のエントリが第1のデコードエントリ群
と一致したときにデータ保持手段は暫定的に保持された
データを確定的に保持するように制御するコミット制御
手段を備えたものである。
【0015】また、第1の分岐条件ないし第nの分岐条
件(nは自然数)の真偽により第nの命令もしくは第n
の分岐命令のいずれか一方が有効であると判断して命令
を処理することを、コミット条件コードを有した命令コ
ードにより行なうようにした命令処理装置において、第
nの命令を実行するための第nの命令コード、および第
nの分岐命令を実行するための第nの分岐命令コードは
第nのエントリを指定する第nのコミット条件コードを
有し、第nのコミット条件コードにより、(a)真偽判
定保持手段が、第1aの値ないし第naの値を保持する第
1ないし第nのエントリからなる真偽エントリ群を構成
した場合、第nの命令コードにより実行される第nの命
令の生成するデータをデータ保持手段に確定的に保持す
るように制御し、(b)第1ないし第nのエントリのう
ち、少なくとも1つのエントリが未定を保持し、それ以
外のエントリは真偽エントリ群と同一の値を保持する場
合、第nの命令コードにより実行される第nの命令の生
成するデータをデータ保持手段に暫定的に保持するよう
に制御し、(c)第1ないし第nのエントリのうち、第
kのエントリが第kbの値を保持する場合(kは1ない
しnの少なくともいづれか1つ)、第nの分岐命令を実
行するよう制御する制御手段、データが暫定的に保持さ
れた場合、第1ないし第nのエントリが真偽エントリ群
を構成したときにデータ保持手段は暫定的に保持された
データを確定的に保持するように制御するコミット制御
手段を備えたものである。
【0016】また、第nの命令コードは第nのエントリ
を指定する第nのコミット条件コードを有し、第nの分
岐命令コードは上記の第nのコミット条件コードととも
に分岐識別コードを有し、第1aの値ないし第naの値を
それぞれ保持した第1のエントリないし第nのエントリ
からなる第1のデコードエントリ群を生成するととも
に、第nのコミット条件コードとともに分岐識別コード
をデコードした場合は、第nbの値を示す第nのエント
リと第1のデコードエントリ群と同一の値を示す第1な
いし第nー1のエントリからなる第2のデコードエント
リ群を生成するコミット条件デコーダ、このコミット条
件デコーダの生成するデコードエントリ群のエントリ
と、真偽判定保持手段の対応するエントリを各々比較
し、(a)第1のデコードエントリ群が真偽判定保持手
段の対応するエントリの保持する値とすべて一致した場
合、第nの命令コードにより実行される第nの命令の生
成するデータをデータ保持手段に確定的に保持するよう
制御し、(b)第1のデコードエントリ群の各エントリ
と一致しない真偽判定保持手段の対応するエントリがす
べて未定を保持する場合、第nの命令コードにより実行
される第nの命令の生成するデータをデータ保持手段に
暫定的に保持するよう制御し(c)第2のデコードエン
トリ群が真偽判定保持手段の対応するエントリの保持す
る値とすべて一致した場合、第nの分岐命令を実行する
ように制御する実行制御手段、データが暫定的に保持さ
れた場合、真偽判定保持手段のエントリが第1のデコー
ドエントリ群と一致したときにデータ保持手段は暫定的
に保持されたデータを確定的に保持するように制御する
コミット制御手段を備えたものである。
【0017】また、上述のコミット制御手段は、デ−タ
をデータ保持手段に暫定的に保持する制御がされた第n
のコミット条件コードがデコードされて生成されたデコ
ードエントリ群を保持するコミット条件保持手段、この
コミット条件保持部により保持されたエントリ群の第1
ないし第nエントリが真偽判定保持手段の対応するエン
トリに保持された内容と一致したときデータ保持手段は
暫定的に保持されたデータを確定的に保持するように制
御するデータ保持制御手段を備えたものである。
【0018】また、上述のコミット制御手段は、真偽判
定保持手段の第1ないし第nのエントリのうち、未定が
保持されていた第jのエントリに第jbの値を保持する
場合(jは1ないしnの少なくともいずれか1つ)、デ
ータ保持手段は暫定的に保持された上記データを無効に
するように制御するようにしたものである。
【0019】また、コミット条件コードは、log
2(n+1)より大きいものであって、最小の自然数の
ビット数で構成されたものである。
【0020】また、第1aの値ないし第naの値は,すべ
て真もしくは偽を示すものである。
【0021】
【作用】この発明の命令処理装置によると、第nの命令
コードに付す第nのコミット条件コードに基づいて、真
偽判定保持手段が第1aの値ないし第naの値をそれぞれ
保持した第1ないし第nのエントリからなる真偽エント
リ群を構成した場合、この第nの命令コードにより実行
される第nの命令の生成するデータをデータ保持手段に
確定的に保持する。一方、第1ないし第nのエントリの
うち、少なくとも1つのエントリが未定を保持し、それ
以外のエントリは真偽エントリ群と同一の値を保持する
場合、第nの命令コードにより実行される第nの命令の
生成するデータをデータ保持手段に暫定的に保持する。
この暫定的に保持されたデータは第1ないし第nのエン
トリが真偽エントリ群を構成したときに確定的に保持す
る。従って、分岐条件の真偽が判断される前に第nの命
令は実行され、分岐条件の判定の結果、第nの命令が有
効であると判定されたときにこの第nの命令の実行デー
タを有効データとして保持し、次の命令処理に用いられ
る。
【0022】また、第nのコミット条件コードは、第1
aの値ないし第naの値をそれぞれ示す第1のエントリな
いし第nのエントリ第nのエントリからなる第1のデコ
ードエントリ群を生成するようにデコードされる。第1
のデコードエントリ群が真偽判定保持手段の対応するエ
ントリの保持する真偽とすべて一致した場合、第nの命
令の生成するデータをデータ保持手段に確定的に保持す
るする。一方、第1のデコードエントリ群の各エントリ
と一致しない真偽判定保持手段の対応するエントリがす
べて未定を保持する場合、そのデータを暫定的に保持す
る真偽判定保持手段のエントリが上記第1のデコードエ
ントリ群と一致したときに暫定的に保持されたデータを
確定的に保持するようにする。従って、分岐条件の真偽
が判断される前に第nの命令は実行され、分岐条件の判
定の結果、第nの命令が有効であると判定されたときに
この第nの命令の実行データを有効データとして保持
し、次の命令処理に用いられる。
【0023】また、第nのコミット条件コードにより、
真偽判定保持手段が第1aの値ないし第naの値をそれぞ
れ保持した第1ないし第nのエントリからなる真偽エン
トリ群を構成した場合、第nの命令コードにより実行さ
れる第nの命令の生成するデータをデータ保持手段に確
定的に保持する。一方、第1ないし第nのエントリのう
ち、少なくとも1つのエントリが未定を保持し、それ以
外のエントリは真偽エントリ群と同一の値を保持する場
合、データを暫定的に保持する。さらに、第1ないし第
nのエントリのうち、第kのエントリが第kbの値を保
持する場合、nの分岐命令を実行する。データが暫定的
に保持された場合、第1ないし第nのエントリが真偽エ
ントリ群を構成したときに確定的に保持するようにす
る。分岐条件の真偽が判断される前に第nの命令は実行
され、第nの分岐命令が実行される場合、第nの命令は
暫定的に実行されても、その実行データは有効な値とし
て用いられない。また、第nの命令が有効であると判定
されたときにこの第nの命令の実行データを有効データ
として保持し、次の命令処理に用いられる。
【0024】また、第1aの値ないし第naの値をそれぞ
れ保持した第1のエントリないし第nのエントリからな
る第1のデコードエントリ群を生成するとともに、第n
のコミット条件コードとともに分岐識別コードをデコー
ドした場合は、第nbの値を示す第nのエントリと第1
のデコードエントリ群と同一の値を示す第1ないし第n
ー1のエントリからなる第2のデコードエントリ群を生
成する。第1のデコードエントリ群が真偽判定保持手段
の対応するエントリの保持する値とすべて一致した場
合、第nの命令コードにより実行される第nの命令の生
成するデータをデータ保持手段に確定的に保持する。第
1のデコードエントリ群の各エントリと一致しない真偽
判定保持手段の対応するエントリがすべて未定を保持す
る場合、データを暫定的に保持する。第2のデコードエ
ントリ群が真偽判定保持手段の対応するエントリの保持
する値とすべて一致した場合、第nの分岐命令を実行す
る。データが暫定的に保持された場合、第1ないし第n
のエントリが真偽エントリ群を構成したときに確定的に
保持するようにする。分岐条件の真偽が判断される前に
第nの命令は実行され、第nの分岐命令が実行される場
合、第nの命令は暫定的に実行されても、その実行デー
タは有効な値として用いられない。また、第nの命令が
有効であると判定されたときにこの第nの命令の実行デ
ータを有効データとして保持し、次の命令処理に用いら
れる。
【0025】また、コミット制御手段は、データ保持手
段に暫定的に保持する制御がされたデコードエントリ群
を保持する。このデコードエントリ群の内容が真偽判定
保持手段と比較され、一致したとき暫定的に保持された
データを確定的に保持する。データ有効であると判定さ
れたときにこの第nの命令の実行データを有効データと
して保持し、次の命令処理に用いられる。
【0026】また、暫定的に保持されたデータは有効で
ないと判断された場合、そのデータは無効にするように
したので、次の命令処理に用いられることは起こらな
い。
【0027】また、コミット条件コードは、n個の分岐
条件に対して、log2(n+1)より大きいもので、
最小の自然数のビット数で構成されるので、コミット条
件コードは分岐条件数に対して少ない情報量で構成され
る。従って装置のハードウェアの構成、特にコミット条
件コードを記憶する記憶素子の記憶量は縮小される。
【0028】
【実施例】
実施例1.以下、本発明の一実施例を示す。図1は本実
施例による命令装置であるマイクロプロセッサの構成を
示すブロック図である。なお、図中同一符号で示される
部分は同一または相当部分を示す。
【0029】図1におけるマイクロプロセッサは、4つ
のALU2Aないし2Dと、メモリ3と、実行すべき命
令のアドレスをメモリ3に与えるプログラムカウンタ4
と、プログラムカウンタ4をインクリメントする回路5
と、メモリ3からフェッチされた命令を保持する命令レ
ジスタ6と、命令レジスタ6に保持された命令を解読
し、ALU2Aないし2Dなどを制御するための制御信
号、ALU2Aないし2Dにより生成されたデータをレ
ジスタに保持する制御をするための制御信号を生成する
命令デコーダ7と、分岐先アドレスを計算する回路9と
を備える。
【0030】このマイクロプロセッサはさらに、図18
に示した従来のマイクロプロセッサと異なり、真偽レジ
スタ(TFレジスタ)10、実行制御回路11、シーケ
ンシャルレジスタファイル12、シャドウレジスタファ
イル13、コミット制御回路14およびコミット条件デ
コーダ50を備える。
【0031】図2は、上記TFレジスタ10の構成を示
す。図2を参照して、このTFレジスタ10は、m個の
エントリを備える。ALU2Aないし2Dで分岐すべき
かどうかを決定する分岐条件の真偽が判断され、その判
断結果はm個のエントリのいづれかに記憶・保持され
る。各エントリは有効性ビットTvおよび値ビットTd
の2ビットから構成され、ある1つの条件は真であると
いう第1の条件情報、その条件は偽であるという第2の
条件情報、およびその条件の真偽は未定であるという第
3の条件情報のうちいずれかを保持する。
【0032】
【表1】
【0033】上記の表1を参照して、TFレジスタ10
の条件情報を説明する。有効性ビットTvが「1」で、
かつ値ビットTdが「1」の場合、その条件は真である
ことを意味する。また、有効性ビットTvが「1」で、
値ビットTdが「0」の場合、その条件は偽であること
を意味する。さらに、有効性ビットTvが「0」の場
合、値ビットTdがいかなる値であってもその条件の真
偽は未定であることを意味する。
【0034】図3は、実際にメモリ3よりフェッチさ
れ、このマイクロプロセッサによって処理される命令コ
ードの構成図である。図3を参照して、この命令コード
は、命令操作部15およびコミット条件部16から構成
される。命令操作部15は、従来のマイクロプロセッサ
によって処理され得る命令コードに相当する部分であ
り、図1の命令デコード部7はこの命令操作部15をデ
コードし、r6=r14+r15を実行する制御信号を
ALU2A〜2Bのいづれかに出力する。
【0035】一方、コミット条件部16は、命令操作部
15に示された命令が実行されるために必要な条件を特
定する部分である。すなわち、r6=r14+r15の
実行が有効かどうかはこのコミット条件部16の内容で
判断される。このコミット条件部16は上記の真偽レジ
スタ10の各エントリのいづれかを指定するコードで構
成されている。図3に示すTF[1]&TF[2]は真偽レ
ジスタ10の第1エントリおよび第2エントリを指定す
ることを表す。
【0036】また、図4は命令が分岐命令を表す場合の
分岐命令コードの構成図である。この分岐命令コードは
図3と同一構成のコミット条件部16と、分岐命令を示
すオペコード15b、ジャンプ先のアドレスを指定する
分岐アドレス15c(例えば図5のブロックFに分岐す
るための命令の場合、Fのアドレスが指定される)の通
常の命令操作部15、そして後述するコミット条件デコ
ーダ50で異なる動作を行なう分岐命令を識別するため
の分岐識別コード15aにより構成される。
【0037】命令レジスタ6より出力される図3、4に
示した命令コードは、コミット条件デコーダ50により
コミット条件部15および分岐識別コード15aがデコ
ードされる。一方、分岐識別コード15aを除く命令操
作部15は命令デコーダ7でデコードされる。
【0038】次に、本実施例のマイクロプロセッサを動
作させるためのプログラムについて説明する。なお、こ
こでは図5のフローチャートの動作をマイクロプロセッ
サに実行させる場合を考える。
【0039】図5を参照して、例えばブロックAにおい
て命令a1:r2=r0+r1を実行し、分岐命令a
2:r2<r3を判断する。もしr2<r3が真ならば
ブロックEに分岐し、偽ならばブロックBに分岐する。
ブロックB、Cも同様に分岐命令b2、c2を判断し、
他のブロックへ分岐する。
【0040】一般にいくつかの分岐条件を有する命令を
実行する場合、複雑な経路をたどった制御フローが存在
する。図5の制御フローを実行する場合でも取りうる制
御フローはA→E、A→F、A→G、A→Hの4つあ
る。しかし実際に実行されたとき、その実行経路はこの
4つの中のうちいづれか1つの制御フローに偏る場合が
多い。S.McFalligの文献によると個々の分岐の分岐方向
の偏りはおよそ85%であることがわかっている。これ
については、「 S.McFalling, ■Reducing the Cost of
Branches■, 13th Annual International Synposium o
n Computer Archtecture, pp.396-403, June 1986 」に
詳細に記載されている。このような制御フローの偏りを
利用することによって図5のフローチャートを実行する
ためのプログラムを生成する。
【0041】公知技術によると、図1に図示しない他の
ソフトウェアまたはハードウェアにより、例題を与えて
実行プログラムのプロファイルをとることによりこの分
岐可能性の高い制御フローを予測する予測情報を得るこ
とができる。この予測された制御フローのことを「トレ
ース」と呼ぶ。さらに、予測した方向に実際に分岐した
とき「分岐予測がヒットした」と呼び、予測した方向に
分岐しなかっとき「分岐予測がミスした」と呼ぶ。
【0042】このプロファイリングにより図5のフロー
チャートでは経路「A→B→C→D→H」が分岐可能性
の高い制御フローとして予測されたとする。
【0043】図6は、制御フロー偏りの予測情報にもと
づいてコンパイルして生成されたプログラムリストの一
例を示すプログラム図であり、図5のフローチャートを
実行する。図において、各行は複数の命令コードから構
成される。また、各命令コードは命令操作部15および
コミット条件部16から構成される。同一行を構成する
命令コードの命令操作部15に示される命令は同時に実
行される。なお、命令コードは互いに「;」によって分
離されている。また、命令操作部15およびコミット条
件部16は「?」によって分離されている。
【0044】図における各命令コードのコミット条件部
16について説明する。 (1)コミット条件「always」はTFレジスタ10にお
ける真偽にかかわらず命令操作部15に示される命令が
有効であることを表す。 (2)コミット条件「TF[1]」はTFレジスタ10の
第1エントリを指定することを表す。 (3)コミット条件「TF[1]&TF[2]」はTFレジ
スタ10の第1エントリおよび第2エントリを指定する
ことを表す。 (4)コミット条件「TF[1]&TF[2]&TF[3]」
はTFレジスタ10の第1エントリ、第2エントリおよ
び第3エントリを指定することを表す。
【0045】条件操作部15について説明する。 (1)命令(I1、I2、I3、I4) 例えば、I1:r2=r0+r1はシーケンシャルレジ
スタファイル12またはシャドウレジスタファイル13
のいづれかに格納されたレジスタr0の値とレジスタr
1の値を加算して実行制御回路11により指定されるフ
ァイルのレジスタr2に格納することを示す。 (2)命令(C1、C2、C3) 例えば、C1:if (r2≧r3) TF[1] = true ; else
TF[1] = falseはシーケンシャルレジスタファイル1
2またはシャドウレジスタファイル13のいづれかに格
納されたレジスタr2の値がレジスタr3の値以上のと
きはTFレジスタ10の第1エントリに「真」を記憶さ
せ、そうでないときは「偽」を記憶させることを示す。
すなわち、この命令C1、C2、C3は分岐条件として
ALU2A〜2Dで判断され、命令C1は第1の分岐条
件としてその判定結果の真偽をTFレジスタ10の第1
エントリに書き込む。さらに命令C2、C3は第2、第
3の分岐条件としてTFレジスタ10の第2、第3エン
トリにその判定結果の真偽を書き込み、TFレジスタ1
0がその内容を保持する。 (3)分岐命令(J1、J2、J3、J4) 例えば、J1:go to EはブロックEにジャンプするこ
とを示す。また、J1、J2、J3はtype 2のジャン
プ、J4はtype 1のジャンプであることを示す(type
1、2については後述する)。この分岐命令が実行され
ると、分岐先アドレス計算部9により計算された分岐先
の命令を実行するための命令コードのアドレスをプログ
ラムカウンタ4に与え、メモリ3のこの計算されたアド
レスにある命令コードをフェッチして命令レジスタ6に
送る。
【0046】図6のプログラムリストは、制御フローの
偏り予測情報に従って次のように生成された。
【0047】(1)分岐条件を評価してTFレジスタ1
0に評価結果を書き込む命令C1〜C3において、その
分岐条件がトレース内への分岐である場合はその分岐条
件に対応するTFレジスタのエントリに「真」を書き込
み、一方トレース外への分岐である場合は「偽」を書き
込むようにする。例えば図5でブロックAの分岐条件a
1:r2<r3が「偽」の場合はトレース内の分岐であ
り、分岐条件a1が「真」の場合はトレース外の分岐で
ある。しかしr2≧r3であるときはAからBへのトレ
ース内の分岐であるので、図6の命令C1のように、r
2≧r3ならばTF[1]に「真」を、そうでないならば
「偽」をそれぞれ書き込むように生成する。すなわち、
分岐がトレース内のものであるならば(分岐予測がヒッ
トした場合)、TFレジスタ10の第1エントリから番
号順に「真」が連続し、トレース内から初めてトレース
外に分岐すると判断されたとき(分岐予測がミスした場
合)、その判断した分岐条件に対応するTFレジスタの
エントリに「偽」が記憶保持される。
【0048】(2)分岐命令であるJ1〜J4のうち、
トレース内に分岐する分岐命令をタイプ1、トレース外
に分岐するジャンプ命令をタイプ2としてそれぞれ区別
する。図4における命令操作部15の分岐識別コード1
5aはこの分岐のタイプを区別するためのもので、タイ
プ1ならば「0」、タイプ2ならば「1」が書き込まれ
る。図4は分岐命令コード「TF[1]&TF[2] ? J
2」を示したものである。命令C1、C2、C3の分岐
条件がそれぞれ「偽」であると判断した結果、その分岐
先であるブロックE、F、Gはトレース外への分岐とな
る。
【0049】コミット条件部15は、上述のようにTF
レジスタ10のエントリ番号を指定するようにコード化
されている。図7はコード化されたコミット条件部15
のコード表図である。 (1)コミット条件:always は分岐条件なしに命令が
実行されるので[X3,X2,X1]=[0,0,0]とコ
ード化する。(2)TFレジスタ10の第1エントリを
指定するコミット条件:TF[1]は[0,0,1]とコー
ド化する。(3)TFレジスタ10の第1および第2エ
ントリを指定するコミット条件:TF[1]&TF[2]は
[0,1,1]とコード化する。(4)TFレジスタ10
の第1、第2および第3エントリを指定するコミット条
件:TF[1]&TF[2]&TF[3]は[1,1,1]とコ
ード化する。すなわち、このコミット条件部15は、ト
レース内の命令であることを指定することを意味し、そ
の他のコード(例えば、[1,0,1]等)が生成される
場合は起こらず、X1から「1」が連なるようにコード
化される。
【0050】図8は、コミット条件部15のコードをデ
コードするコミット条件デコーダ50の出力する形式を
示した図である。TFレジスタ10と同様に第1エント
リから第mエントリからなる。さらに各エントリも、T
Fレジスタ10と同様に有効性ビットCvおよび値ビッ
トCdの2ビットから構成される。
【0051】表2を参照してコミット条件デコーダ50
の出力形式について説明する。
【0052】
【表2】
【0053】(1)有効性ビットCvが「1」で、かつ
値ビットCdが「1」の場合は、そのエントリは「真」
であることを示す。(2)有効性ビットCvが「1」
で、かつ値ビットCdが「0」の場合は、そのエントリ
は「偽」であることを示す。(3)値ビットCdに関係
なく有効性ビットCvが「0」の場合は「Don■t Car
e」であることを示す。すなわち、各エントリには>
「真」、「偽」、「Don■t Care」のいづれかの状態を
有することになる。
【0054】図9はこのコミット条件部16のコードの
入力に対するコミット条件デコーダ50の出力を示す真
理値図である。 (1)[X3,X2,X1]=[0,0,0]のとき、すべ
てのエントリの有効性Cvが「0」となるようにデコー
ドする(すべてのエントリを「Don■t Care」にす
る)。 (2)[X3,X2,X1]=[0,0,1]のとき、第1
エントリの有効性Cv1が「1」、かつ値Cd1が
「1」となるようにデコードする。その他のエントリの
Cvを「0」にする(第1エントリが「真」、第2およ
び第3以降のエントリは「Don■t Care」)。 (3)[X3,X2,X1]=[0,1,1]のとき、第1
エントリおよび第2エントリの有効性Cv1、Cv2が
ともに「1」、かつ値Cd1、Cd2がともに「1」と
なるようにデコードする。その他のエントリのCvを
「0」にする(第1および第2エントリが「真」、第3
以降のエントリは「Don■t Care」)。 (4)[X3,X2,X1]=[1,1,1]のとき、第1
エントリ、第2エントリおよび第3エントリの有効性C
v1、Cv2、Cv3がともに「1」、かつ値Cd1、
Cd2、Cd3がともに「1」となるようにデコードす
る(第1〜第3エントリが「真」)。その他のエントリ
のCvを「0」にする。すなわち、入力コードの「1」
に対応するエントリの[Cv、Cd]が[1、1]とな
るようにし、入力コードの「0」に対応するエントリの
Cvが「0」となるようにデコードすればよい。
【0055】以上、図9の真理値表の論理式は次のよう
に設定される。 (式1):Cvi=Xi、 Cdi=1(但し、iはエントリの番号に対応する)。
【0056】分岐命令コードの有するコミット条件コー
ドをデコードする場合は、分岐命令のタイプ1、2によ
りデコード内容が異なる。タイプ1のジャンプの場合
(すなわち分岐識別コード15aが「0」のとき)は図
9と同一である。タイプ2のジャンプの場合(すなわち
分岐識別コード15aが「1」のとき)は図9に代わっ
て図10に示す真理値図に従ってデコードする。 (1)[X3,X2,X1]=[0,0,0]のときは、図
9と同じである。 (2)[X3,X2,X1]=[0,0,1]のときは、C
d1を「0」にする。その他は図9と同じである。 (3)[X3,X2,X1]=[0,1,1]のときは、C
d2を「0」にする。その他は図9と同じである。 (4)[X3,X2,X1]=[1,1,1]のときは、C
d3を「0」にする。その他は図9と同じである。すな
わち、入力コード[X3,X2,X1]の値「1」が連な
る最後のビットに対応するエントリの値Cdを「0」に
して「偽」を表すようにデコードする。
【0057】以上、図10の真理値表の論理式は例えば
次のように設定される。 (式2):Cvi=Xi、 Cdi=Xi+1 但し、Cd3=0である。
【0058】実行制御回路11は、コミット条件デコー
ダ50が出力するエントリとTFレジスタ10のエント
リとを同一番号ごとに対応的に比較し、その結果に応じ
てALU2Aないし2Dが確定的に命令を実行するよう
に制御するか、または暫定的に命令を実行するように制
御する。
【0059】図11は、この実行制御回路11の機能を
さらに詳しく説明するための概念図である。図におい
て、(A)〜(D)はTFレジスタ10の各エントリに
保持される条件情報の一例を表す。例えば(A)では第
1エントリ、第2エントリに「真」、第3エントリ以降
は任意の条件情報が保持されている。
【0060】一方、(1)は命令コード「TF[1]&T
F[2] ? I3」のコミット条件部16:TF[1]&T
F[2]をデコードした結果であり、第1エントリおよび
第2エントリが共に「真」を、第3エントリ以降が「 D
on■t Care 」となる。TFレジスタ10に(A)が保
持されている場合、すなわち対応するエントリに保持さ
れる真偽が一致している場合、実行制御回路11はAL
U2Aないし2Dが命令I3を確定的に実行するように
制御する。この場合における命令I3を特に「逐次的命
令」という。
【0061】TFレジスタ10に(B)が保持されてい
る場合、すなわちコミット条件デコーダ50の真偽が確
定している第1および第2エントリに対応するTFレジ
スタ10の第1、第2エントリが「未定」を保持してい
る場合、実行制御回路11はALU2Aないし2Dが暫
定的に命令I3を実行するように制御する。この場合に
おける命令I3を特に「投機的命令」という。
【0062】TFレジスタ10に(C)が保持されてい
る場合、すなわちコミット条件デコーダ50の真偽が確
定している第1および第2エントリに対応するTFレジ
スタ10の第1および第2エントリのうち一方が「真」
で、その他のエントリが「未定」である場合、実行制御
回路11はALU2Aないし2Dが命令I3を暫定的に
実行するように制御する。この場合における命令I3も
「投機的命令」という。
【0063】TFレジスタ10に(D)が保持されてい
る場合、すなわちコミット条件デコーダ50の真偽が確
定している第1および第2エントリに対応するTFレジ
スタ10の第1および第2エントリの真偽が一致しない
場合、命令I3は実行されない、もしくは実行されても
結果データが無効化される。
【0064】なお、図11には図示しないが、コミット
条件部16のデコード内容のエントリがすべて「Don■t
Care 」を示した場合(コミット条件部16が「 alway
s 」の場合)はTFレジスタ10のエントリの内容にか
かわらず、実行制御回路11はALU2Aないし2Dが
命令(例えばI1)を確定的に実行するように制御す
る。この場合における命令I1も上記と同様に「逐次的
命令」という。
【0065】また、(2)は図6の命令コード「TF
[1]&TF[2] ? J2」のコミット条件部16:T
F[1]&TF[2]をデコードした結果であり、第1エン
トリが「真」、第2エントリが「偽」を、第3エントリ
以降が「 Don■t Care 」となる。この分岐命令J2は
TFレジスタ10が(D)のように、対応するTFレジ
スタのエントリの真偽が一致したときのみ実行される。
(A)、(B)、(C)の場合はJ2は実行されない。
【0066】シーケンシャルレジスタファイル12およ
びシャドウレジスタファイル13は、それぞれ32個の
レジスタ30および31から構成される。シーケンシャ
ルレジスタファイル12は、従来のマイクロプロセッサ
におけるレジスタファイル1に相当するものである。た
だし、このシーケンシャルレジスタファイル12は、A
LU2Aないし2Dが逐次的命令を実行して生成した結
果データを確定的に保持する。シャドウレジスタファイ
ル13は、ALU2Aないし2Dが投機的命令を実行し
て生成した結果データを暫定的に保持する。
【0067】コミット制御回路14は、シャドウレジス
タファイル13に格納された結果データに対応する命令
のコミット条件デコーダ50の出力を保持する。コミッ
ト制御回路14は同時に、TFレジスタ10を常に監視
していて、保持したコミット条件デコーダ50の出力内
容におけるエントリとTFレジスタ10におけるエント
リとを比較して、それらが対応的に一致した場合、シャ
ドウレジスタファイル13に格納された結果データをシ
ーケンシャルレジスタファイル12へ転送する。
【0068】たとえば図11において、ある投機的命令
Iが実行され、その結果データが暫定的にシャドウレジ
スタファイル13に格納された場合、命令Iのコミット
条件デコーダ50のデコード内容である第1のエントリ
「真」、第2のエントリ「真」、・・・はコミット制御
回路14の中に格納される。そしてTFレジスタ10の
保持内容を監視しつつ、TFレジスタ10における第1
および第2のエントリが共に「真」を保持した時点、す
なわち、コミット条件デコーダ50の出力エントリの内
容がそれに対応するTFレジスタ10のエントリの真偽
が一致した時点でコミット制御回路14はシャドウレジ
スタファイル13に格納された結果データをシーケンシ
ャルレジスタファイル12へ転送するようにする。
【0069】また、コミット制御回路14は、保持した
コミット条件デコーダ50の出力内容におけるエントリ
とTFレジスタ10におけるエントリとを比較し、それ
らが対応的に一致しなかった場合、シャドウレジスタフ
ァイル13に格納された結果データは無効であると判断
され、キャンセルされる。
【0070】以下、実行制御回路11、シーケンシャレ
ジスタファイル12、シャドウレジスタファイル13お
よびコミット制御回路14について説明する。
【0071】図12は、実行制御回路11の構成を示す
ブロック図である。図12を参照して、実効制御回路1
1は、コミット条件計算回路17と、インバータ18
と、ANDゲート19Aと、ORゲート19Bとを備
え、インバータ18からシャドウレジスタ書込指定ビッ
トSDとして出力し、ORゲート19Bから命令有効性
ビットIVとして出力する。
【0072】この実行制御回路11の動作について説明
する。コミット条件デコーダ50によりデコーダされた
内容と、TFレジスタの内容とはコミット条件計算回路
17に入力され、このコミット条件計算回路17は有効
性ビットVおよび値ビットDを出力する。
【0073】図13は、コミット条件計算回路17の構
成を示すブロック図である。図13を参照して、コミッ
ト条件計算回路17は、比較回路20および21と、A
NDゲート22および23とを備える。なお、m個のエ
ントリがある場合は、m個のエントリに対応してm個の
比較回路を備え、比較回路の出力Vi(i=1〜m)の
論理積をとったもの、および出力Di(i=1〜m)の
論理積をとったもので構成されるが、図13では説明を
簡単に行うためコミット条件部16のデコード内容およ
びTFレジスタ10がそれぞれ2つのエントリを備える
場合に対応するコミット条件計算回路を示す。
【0074】比較回路20または21は、コミット条件
デコーダ50の生成するi番目(i=1または2)のエ
ントリとそれに対応するTFレジスタ10におけるi番
目のエントリとを比較し、その結果に応じて有効性ビッ
トVi および値ビットDi を生成する。
【0075】表3は、比較回路20または21の動作を
示す真理値表である。
【0076】
【表3】
【0077】表3を参照して、コミット条件デコーダ5
0における1つのエントリの有効性ビットCvが「0」
の場合、それに対応するTFレジスタ10における1つ
のエントリの有効性ビットTvおよび値ビットTdがい
かなる値であっても、比較回路20または21は「1」
の有効性ビットVi と、「1」の値ビットDi とを生成
する。
【0078】また、コミット条件デコーダ50における
1つのエントリの有効性ビットCvが「1」であり、か
つそれに対応するTFレジスタ10における1つのエン
トリの有効性ビットTvが「0」の場合、それらエント
リの値ビットCdおよびTdがいかなる値であっても、
比較回路20または21は「0」の有効性ビットViを
生成する。
【0079】さらに、コミット条件デコーダ50におけ
る1つのエントリの有効性ビットCvと、それに対応す
るTFレジスタ10における1つのエントリの有効性ビ
ットTvとがそれぞれ「1」であり、それらの値ビット
CdおよびTdが互いに等しい場合、比較回路20また
は21は「1」の有効性ビットVi と、「1」の値ビッ
トDi とを生成する。それらエントリの値ビットCdお
よびTdが異なる場合、比較回路20または21は、
「1」の有効性ビットVi と、「0」の値ビットDi と
を生成する。
【0080】比較回路20と21のそれぞれ有効性ビッ
トViの論理積をとることによりコミット条件計算回路
17の有効性ビットVを生成し、またそれぞれ値ビット
Diの論理積をとることにより値ビットDを生成する。
従って、有効性ビットV、値ビットDがともに「1」の
場合とは、(a)コミット条件デコーダ50のすべての
エントリが「Don■t Care」のとき、または(b)コミ
ット条件デコーダ50のエントリに記録された真偽が、
対応するTFレジスタ10のエントリの真偽とすべて一
致したときである。また、V=1、D=0の場合とは、
コミット条件デコーダ50のエントリに記録された真偽
が、対応するTFレジスタ10のエントリの少なくとも
いづれか1つの真偽と一致しないときである。
【0081】図12のように実行制御回路11を構成す
ることにより、コミット条件計算回路17の有効性ビッ
トVが「0」の場合、「1」のシャドウレジスタ書込指
定ビットSDが生成される。また、コミット条件計算回
路17の有効性ビットVおよび値ビットDがともに
「1」の場合か、または有効性ビットVが「0」の場
合、「1」の命令有効性ビットIVが生成される。
【0082】以上詳述したところから明らかなように、
コミット条件デコーダ50におけるすべてのエントリが
「Don■t Care」を保持している場合(それに対応する
命令操作部における命令は無条件下で実行されるべきも
のである場合)、実行制御回路11は「0」のシャドウ
レジスタ書込指定ビットSDを生成するとともに、
「1」の命令有効性ビットIVを生成する。
【0083】また、コミット条件デコーダ50における
いくつかのエントリが「真」または「偽」を保持してい
て、それらに対応するTFレジスタにおけるエントリの
うち少なくとも1つが「未定」を保持している場合、実
行制御回路11は「1」のシャドウレジスタ書込指定ビ
ットSDを生成するとともに、「1」の命令有効性ビッ
トIVを生成する。
【0084】さらに、コミット条件デコーダ50におけ
るいくつかのエントリが「真」または「偽」を保持して
いて、かつそれらに対応するTFレジスタ10における
エントリも「真」または「偽」を保持していて、かつそ
れらコミット条件部16における真偽とTFレジスタ1
0における真偽とが対応的に一致している場合は、実行
制御回路11は「0」のシャドウレジスタ書込指定ビッ
トSDを生成するとともに、「1」の命令有効性ビット
IVを生成する。
【0085】シーケンシャルレジスタファイル12、シ
ャドウレジスタファイル13へのデータ格納は、このシ
ャドウレジスタ書込指定ビットSDと命令有効性ビット
IVとに従って次のように制御される。 (a)(SD、IV)=(0、1)のとき、ALU等で
生成された結果データはシーケンシャルレジスタファイ
ル12に格納される。すなわち確定的にデータ保持がな
される。 (b)(SD、IV)=(0、0)のとき、命令は実行
されないか、または命令が実行されることによって生成
された結果データはシーケンシャルレジスタファイル1
2およびシャドウレジスタ13のいずれにも格納されな
いで無効化される。 (c)(SD、IV)=(1、1)のとき、ALU等で
生成された結果データはシャドウレジスタファイル12
に格納される。すなわち、暫定的にデータ保持がなされ
る。
【0086】図14は、シーケンシャルレジスタファイ
ル12、シャドウレジスタファイル13およびコミット
制御回路14の構成を示すブロック図である。
【0087】図14を参照して、シーケンシャルレジス
タファイル12は、上述のとおり32個のシーケンシャ
ルレジスタから構成される。シャドウレジスタファイル
13は、32個のシャドウレジスタから構成される。特
に、30はシーケンシャルレジスタファイル12の第3
シーケンシャルレジスタ、31はシャドウレジスタファ
イル13の第3シャドウレジスタである。さらに37は
シャドウレジスタファイル13の各レジスタに備えられ
た有効フラグである。
【0088】コミット制御回路14は、32個のシーケ
ンシャルレジスタ30およびシャドウレジスタ31に対
応して32個のエントリから構成される。各エントリ
は、コミット条件記憶部32と、コミット条件計算回路
17と、ANDゲート33、36と、インバータ35と
を備える。
【0089】コミット条件記憶部32は、投機的命令が
実行され、その結果データがシャドウレジスタファイル
13におけるシャドウレジスタ31に暫定的に格納され
た場合、その命令に対応するコミット条件部16がコミ
ット条件デコーダ50によりデコードされた内容を保持
する。
【0090】コミット条件計算回路17は、前述した実
行制御回路11におけるコミット条件計算回路17と同
一で、コミット条件記憶部32に保持されたコミット条
件部16のデコード内容とTFレジスタ10とを比較
し、その結果に応じて有効性ビットVと値ビットDとを
生成する。ANDゲート33はコミット条件計算回路1
7の有効性ビットVと値ビットDとの論理積をシーケン
シャルレジスタ30とシャドウレジスタ31との間に接
続されたトランスファーゲート34のゲートに与える。
【0091】コミット条件計算回路17はTFレジスタ
10を常に監視していて、コミット条件記憶部32が保
持するコミット条件部16における真偽と、TFレジス
タ10における真偽とが対応的に一致したとき、「1」
の有効性ビットVと、「1」の値ビットDとを生成す
る。これによりトランスファーゲート34はオンにな
り、シャドウレジスタ31における結果データがシーケ
ンシャルレジスタ30に転送される。
【0092】また、有効性ビットVと、インバータ35
を介した値ビットDがANDゲート36に入力される。
このANDゲート36は、V=1、D=0、すなわちコ
ミット条件デコーダ50のエントリに保持された真偽と
TFレジスタ10の対応するエントリに保持された真偽
とが一致しないときのみ、「H」を出力する。このAN
Dゲート36は有効フラグ37のリセット端子に接続さ
れる。このリセット端子に「H」が入力された場合、無
効であることを示すフラグを生成する。このフラグが生
成されたとき、シャドウレジスタ31からシーケンシャ
ルレジスタ30へのデータ転送を禁止する。また、この
有効フラグ37の他に、ANDゲート36からの「H」
入力に対してシャドウレジスタ31に保持されたデータ
を消去するようにハードウェア構成してもよい。
【0093】次に、図6のプログラムを実行する場合の
本実施例のマイクロプロセッサの動作を説明する。
【0094】図6において、各行は複数の命令コードか
ら構成され、同一行を構成する命令コードの命令操作部
15に示される命令は同時に実行される。まず第1サイ
クルにおいて、第1行目の4つの命令I1、I2、C2
およびI3が同時に実行される。なお、TFレジスタ1
0の各エントリの条件情報はすべて「未定」(有効ビッ
トTvがすべて「0」)状態であるとする。また、図
中、r0、r1、r12、r13、r14、r15は実
行前にシーケンシャルレジスタファイル12の各番号の
レジスタに格納されたデータである。
【0095】命令コード「always ?I1」によれば、
命令I1は無条件で実行される。コミット条件デコーダ
50はコミット条件部16のコード[0,0,0]をデコ
ードして、すべてのエントリのCvを「0」、すなわち
すべてのエントリを「Don■tCare」にする。したがっ
て、実行制御回路11は命令I1を確定的に実行するよ
う制御する。このとき、シーケンシャルレジスタファイ
ル12におけるレジスタr0およびr1のデータがAL
U2A〜2Dのいづれかにより加算され、その結果デー
タはシーケンシャルレジスタファイル12におけるレジ
スタr2に確定的に格納される。
【0096】命令コード「TF[1] ? I2」によれ
ば、コミット条件部16のコード[0,0,1]は図9の
ように第1エントリのCv1、Cd1だけがともに
「1」となるようにデコードされる。一方、このときT
Fレジスタ10のすべてのエントリは「未定」なので、
実行制御回路11は命令I2を暫定的に実行するよう制
御する。すなわち、シーケンシャルレジスタファイル1
2におけるレジスタr12およびr13のデータがAL
U2A〜2Dのいづれかにより加算され、その結果デー
タはシャドウレジスタファイル13におけるレジスタr
4に暫定的に格納される。同時にこのコミット条件部1
6のデコード内容である「Cv1=「1」、Cd1=
「1」、Cv2=「0」、・・・」をコミット制御回路
14のコミット条件記憶部32で、レジスタr4に対応
した第4エントリのコミット条件記憶部に記憶させる。
【0097】命令コード「always ? C2」によれば、
「always ?I1」と同じく、命令C2を無条件で実行
する。すなわち、ALU2A〜2Dのいづれかがシーケ
ンシャルレジスタファイル12のレジスタr12に格納
されたデータが0かどうかを判断し、等しいならばTF
レジスタ10の第2エントリに「真(true)」(Tv2
=「1」、Td2=「1」)を書き込む。そして等しく
ないならば「偽(false)」(Tv2=「1」、Td2
=「0」)を書き込む。
【0098】命令コード「TF[1]&TF[2] ? I
3」によれば、コミット条件部16のコード[0,1,
1]は図9のように第1エントリのCv1、Cd1そし
て第2エントリのCv2、Cd2がともに「1」となる
ようにデコードされる。この第1サイクル実行時では第
1エントリは「未定」のままであるので、実行制御回路
11は命令I3を暫定的に実行するよう制御する。すな
わち、シーケンシャルレジスタファイル12のレジスタ
r14およびレジスタr15に格納されたデータはAL
U2A〜2Dのいづれかにより加算され、その結果デー
タはシャドウファイルレジスタ13のレジスタr6に格
納される。同時にこのレジスタr6に対応させてコミッ
ト条件部16のデコード内容である「Cv1=「1」、
Cvd=「1」、Cv2=「1」、Cd2=「1」・・
・」をコミット条件記憶部32に記憶させる。
【0099】次いで、第2サイクルで図6の第2行の命
令が同時に実行される。命令コード「always ? C1」
によると、無条件に、シャドウレジスタファイル13の
レジスタr2の値データがシーケンシャルレジスタファ
イル12のレジスタr3に格納されたデータを比較し、
r2≧r3ならばTFレジスタ10の第1レジスタに
「真」を、そうでないならば「偽」を書き込む。また命
令コード「always ? C3」についても同様に、分岐条
件C3の真偽をTFレジスタ10の第3レジスタに書き
込む。
【0100】命令コード「TF[1]&TF[2]&TF
[3] ? I4」によれば、コミット条件部16のコード
[1,1,1]は、第1エントリのCv1、Cd1、第2
エントリのCv2、Cd2そして第3エントリのCv
3、Cd3に「1」となるようにデコードされる。この
時点でTFレジスタ10の第2エントリ以外のエントリ
は「未定」であるので、実行制御回路11は命令I4を
暫定的に実行するよう制御する。すなわちシャドウレジ
スタファイル13のレジスタr6に格納されたデータは
ALU2A〜2Dのいづれかにより1だけ加算され、そ
の結果データはシャドウファイルレジスタ13のレジス
タr7に格納される。同時にこのレジスタr7に対応さ
せてコミット条件部16のデコード内容をコミット制御
回路14に記憶させる。
【0101】次いで、第3サイクルで図6の第3行の命
令が同時に実行される。命令コード「TF[1] ? J
1」において、J1はタイプ2の分岐命令であることが
命令コード中の分岐識別コード15aに付されており
(図4)、この分岐識別コードによりコミット条件デコ
ーダ50は図10の真理値図に従ってコミット条件の入
力コードをデコードする。この場合、入力[0,0,1]
に対して第1エントリ(Cv1,Cd1)=(1,0)、
その他のCvは「0」である。
【0102】この第2サイクル終了時点で命令C1の実
行によりTFレジスタ10の第1エントリの真偽が決定
されている。もし第1エントリが「真」((Tv1,T
d1)=(1,1))ならば、実行制御回路11は(T
v1,Td1)=(1,1)と(Cv1,Cd1)=(1,
0)とが一致していないことを判断し、このジャンプ命
令J1は実行されないようにプログラムカウンタ4を制
御する。一方、もし第1エントリが「偽」((Tv1,
Td1)=(1,0))ならば、(Cv1,Cd1)=
(1,0)と一致するので、このジャンプ命令J1を実
行するようにする。ブロックEを指定するアドレスが分
岐先アドレス計算回路9により計算され、プログラムカ
ウンタ4に格納される。
【0103】命令コード「TF[1]&TF[2] ? J
2」、「TF[1]&TF[2]&TF[3] ? J3」にお
いて、J2、J3のタイプ2のジャンプ命令であり、上
記と同様にコミット条件は図10に従ってデコードされ
る。また、命令コード「TF[1]&TF[2]&TF[3]
? J4」において、J4はタイプ1のジャンプ命令で
あり、コミット条件は図9の真理値図に従って、(Cv
1,Cd1)=(1,1)、(Cv2,Cd2)=(1,
1)、(Cv3,Cd3)=(1,0)とデコードされ
る。
【0104】このように、命令C1〜C3による分岐条
件がトレース(A→B→C→D→H)内か外かをTFレ
ジスタ10に記録する。詳細に述べると(1)A→H分
岐(トレース内分岐)のとき(TF[1],TF[2],TF
[3])=(真,真,真)、(2)A→G分岐(トレース外
分岐)のとき(TF[1],TF[2],TF[3])=(真,
真,偽)、(3)A→F分岐(トレース外分岐)のとき
(TF[1],TF[2],TF[3])=(真,偽,・)、
(4)A→E分岐(トレース外分岐)のとき(TF
[1],TF[2],TF[3])=(偽,・,・)のいづれか1
つがTFレジスタ10に記録される(ただし「・」は任
意の値)。すなわち、各TF[i]は制御フローの経路を
示し、TF[1]からエントリ番号順に「真」が連続する
限りトレース内であることを示し、トレースから外れる
箇所に対応するエントリを「偽」とすることによりトレ
ース外への分岐であることを示す。
【0105】TFレジスタ10に条件情報が記録される
ことによって、J1〜J4のうち実際に実行される制御
フローに対応する分岐命令が実行される。例えば、TF
レジスタ10に(TF[1],TF[2],TF[3])=
(真,真,真)が記憶されているならば、コミット条件部
16とジャンプ識別コード15bによりJ4のみが実行
されることになる。また、(TF[1],TF[2],TF
[3])=(真,真,偽)が記録されている場合はJ3のみ
が実行されることになる。
【0106】また、第2サイクル終了時点で、分岐条件
C1、C、C3の真偽が判定された結果がTFレジスタ
120に保持されているので、第1、第2サイクルで暫
定的に実行されてシャドウレジスタファイル13に格納
されたデータはコミット動作が起こる。コミット制御回
路14のコミット条件記憶部32に記憶されたコミット
条件は、コミット条件計算回路17によってTFレジス
タ10の値と一致した場合、シャドウレジスタファイル
13にあるデータはシーケンシャルレジスタファイル1
2に転送される。一方、TFレジスタ10の値と一致し
ない場合は有効フラグ37によりシャドウレジスタファ
イル13にあるデータは無効化される。例えば、(TF
[1],TF[2],TF[3])=(真,真,偽)が記録されて
いる場合は、シャドウレジスタファイル13に格納され
た命令I2、I3の実行結果データはシーケンシャルレ
ジスタファイル12に転送され、命令I4の実行データ
は無効化される。
【0107】データが有効でないと判断された結果デー
タがシャドウレジスタファイル13にそのまま保持され
た状態で残しておくと、次のプログラム実行時に誤って
シーケンシャルファイルに転送されて誤動作をまねくこ
とを防ぐためにこのデータを無効化しておく必要があ
る。なお、このように無効化されたシャドウレジスタフ
ァイル13のデータは、次のプログラム実行によって実
行されたデータが上書されることによって消去される。
【0108】以上、この第1実施例によれば、本質的に
1または2以上の条件下で実行されるべき命令が、その
条件の真偽が判明する前にその命令が実行される。たと
えば図6に示したプログラムによれば、命令I2は条件
C1の下で実行されるべきにもかかわらず、その条件C
1の真偽が判明する前の第1サイクルにおいて投機的に
実行される。また、命令I3も条件C1の下で実行され
るべきにもかかわらず、その条件C1の真偽が判明する
前の第1サイクルにおいて投機的に実行される。さら
に、命令I4は、条件C1およびC2の下で実行される
べきにもかかわらず、それら条件C1およびC2の真偽
が判明する前の第1サイクルにおいて投機的に実行され
る。
【0109】したがって、従来のマイクロプロセッサで
あれば第1サイクルにおいて実行することができない投
機的命令I2ないしI4が実行され、ALU2Aないし
2Dが有効に活用される。このため、命令の処理速度は
向上する。
【0110】また、命令コードに付するコミット条件コ
ードは、トレースに対応したTFレジスタのエントリを
指定するだけでよいので、コミット条件コードを構成す
るビット数は、n個の分岐条件に対してnビットでよ
い。コミット条件デコーダ50はTFレジスタ10の各
エントリと比較するための2nビットからなるエントリ
を生成することになる。このコミット条件デコーダ50
の出力エントリをそのままコミット条件コードに用いて
もよいが、2nビットを要することになり、メモリ3に
記憶すべきコミット条件コードのビット数は本実施例に
比べ単純に2倍となる。従って、上述のコミット条件デ
コーダ50を備えることによりコミット条件コードのビ
ット数を減らすことができ、メモリ3の記憶素子の容量
を節約することができる。
【0111】なお、トレース内への分岐を示すTFレジ
スタ10のエントリは「真、真、真、・・・」という具
合に「真」が連続したするように実行プログラムのコン
パイルを行なったが、これに限らず、トレース内分岐は
「偽、偽、偽、・・・」、「真、偽、真、偽、・・・」
のように任意に設定してもよい。コミット条件コードの
付された命令がトレース内の実行命令であるならば、そ
の任意に設定されたトレース内分岐を示すTFレジスタ
10に保持されるべき各エントリ(これを、真偽エント
リ群と称す)と一致するようにコミット条件デコーダ5
0のデコード動作を構成しておけばよい。
【0112】実施例2.図15は、実施例1の図7とは
別のコミット条件部16のコード化を示したコード図で
ある。コミット条件部16は、その付随する命令操作部
15の命令がトレース内の分岐か外の分岐かを判断する
ように構成されるので、この命令操作部15の命令が有
効かどうかを判断する分岐条件の判定結果の書き込まれ
るTFレジスタのエントリを指定するようにコード化す
ることができる。図において、TF[1]に対してはTF
レジスタ10の第1エントリを指定するように[Y2,
Y1]=[0,1]とコード化する。TF[1]&TF
[2]に対しては第2エントリを指定するように[1,
0]とコード化し、同様にTF[1]&TF[2]&TF
[3]は第3エントリを指定するように[0,1]とコー
ド化する。なお、 always は[0,0]とコード化す
る。
【0113】コミット条件デコーダ50は、図15の
[Y2,Y1]から図7の[X3,X2,X1]にデコー
ドし、さらにこの[X3,X2,X1]を介して図9また
は図10によりデコードすればよい。[Y2,Y1]か
ら[X3,X2,X1]へのデコードは次式の論理式によ
り得られる。 (式3):X1=Y1+Y2 X2=Y2 X3=Y1*Y2 但し、「+」は論理和、「*」は論理積を表す。
【0114】従って、コミット条件部16のコード[Y
2,Y1]から図9および図10の(Cv,Cd)値への
デコードは次の論理式で与えられる。図9のデコード
(Cv,Cd)に対して、 (式4):(Cv1,Cd1)=(Y1+Y2,1) (Cv2,Cd2)=(Y2,1) (Cv3,Cd3)=(Y1*Y2,1) 図10に示したタイプ2の分岐命令に対して、 (式5):(Cv1,Cd1)=(Y1+Y2,Y2) (Cv2,Cd2)=(Y2,Y1*Y2) (Cv3,Cd3)=(Y1*Y2,0)
【0115】図16はこれらの式によりコミット条件デ
コーダ50の構成の一例を示す論理回路構成図である。
図において40は、命令操作部15を入力して、命令操
作部15の命令が通常の命令である場合は「0」を出力
し、分岐識別コード15aの付された分岐命令である場
合、分岐識別コード15a(タイプ1のジャンプ命令の
場合「0」、タイプ2の場合「1」である)をそのまま
出力するようにした命令デコーダである。
【0116】命令デコーダ40から「0」が出力された
場合、インバータを介してCd1ないしCd3は「1」
を示し、(式4)が得られる。一方命令デコーダ40か
ら「1」が出力された場合、インバータを介してCd1
=Y2、Cd2=Y1*Y2、Cd3=0となり、(式
5)が得られる。
【0117】図15のように、命令の有効性を判断する
分岐条件に対応したTFレジスタ10のエントリ番号の
みを指定するようにコミット条件部15のコードを構成
するので、n個の分岐条件に対して少なくとも log2(n+
1) より大きい自然数であって最小の自然数のビット数
でコード化をすることができる。従って、コミット条件
コードのビット数をさらに減らすことができ、メモリ3
の容量をさらに節約することができる。
【0118】実施例3.実施例1のコミット制御回路1
4は、図14のようにコミット条件記憶部32およびコ
ミット条件計算回路17を含んでおり、コミット条件記
憶部32は投機的命令が実行され、その結果データがシ
ャドウレジスタファイル13におけるシャドウレジスタ
31に暫定的に格納された場合、その命令に対応するコ
ミット条件部16のデコード内容を保持するように構成
されている。ジャンプ命令を実行する命令コードの有す
るコミット条件部のデコード内容は保持されない。この
投機的命令が実行されたコミット条件部16のデコード
内容は実施例1の(式1)から明らかなように、Cdi
は常に「1」である。従ってコミット条件記憶部32に
記録される情報は、Cviのみでよく、実施例1のよう
にCviおよびCdiを記憶する構成に比べ、半分の記
憶情報量で済む。
【0119】図17は、本実施例におけるコミット制御
回路14内のコミット条件計算回路17に備えられた比
較回路20、21の構成の一例を示す回路構成図であ
る。図の回路図の論理式は次のとおりである。 (式6):Vi=/Cvi+Tvi Di=(Tdi*Tvi)+/Cvi 但し、「/」は論理否定、「+」は論理和、「*」は論
理積を表す。
【0120】(1)Cvi=0のとき、Vi、Diとも
に1となる。(2)Cvi=1、Tvi=0のときはV
i=0となる。(3)Cvi=1、Tvi=1のとき、
Vi=1、Di=Tdiとなる。実際、Cdiは入力さ
れないが常にCdi=1であるとみなすと、実施例1で
示した(表3)の真理値表と実質同一の動作を行なう。
【0121】本実施例のコミット制御回路14は、図1
7に示す比較回路の回路構成を用いた図13のコミット
条件計算回路と、コミット条件デコーダ50の出力のう
ち、Cviのみを記憶保持するコミット条件記憶部とに
より構成される。
【0122】
【発明の効果】以上説明したように、この発明によると
第nの命令を有効であるかを判断して実行処理する場
合、第nの命令コードに付されたコミット条件コードに
基づき、分岐条件の真偽が未定であっても第nの命令は
実行されてデータを暫定的に保持し、この分岐条件の真
偽が判定されたときに、その判定結果により暫定的に保
持され、有効であると判断されたデータを確定的に保持
するようにしたので、複数の演算手段を同時に動作させ
ることが可能となり、命令の処理速度が向上するという
効果を奏する。
【0123】また、分岐条件を判定して、第nの命令も
しくは第nの分岐命令のいづれか一方が有効であると判
断して実行処理する場合、第nの命令を実行するための
第nの命令コードおよび第nの分岐命令を実行するため
の第nの分岐命令コードに付されたコミット条件コード
に基づき、分岐条件の真偽が未定であっても第nの命令
は実行されてデータを暫定的に保持し、この分岐条件の
真偽が判定されたときに、その判定結果により暫定的に
保持され、有効であると判断されたデータを確定的に保
持するようにし、第nの分岐命令が有効であると判断さ
れたときはこの第nの分岐命令を実行するようにしたの
で、このような分岐命令が有効であると判断される前
に、命令実行のための複数の演算手段を同時に動作させ
ることが可能となり、命令の処理速度が向上するという
効果を奏する。
【0124】また、暫定的に保持されたデータが有効で
ない場合、この暫定的に保持されたデータを無効にする
ので、暫定的に保持されたデータが他の処理に用いられ
ることにより生じる誤動作を防ぐという効果を奏する。
【0125】また、n個の分岐条件に対してコミット条
件コードはlog2(n+1)程度のビット数で構成さ
れるので、コミット条件コードの情報量を大幅に縮小で
き、コミット条件コードを記憶しておく記憶素子の容量
を節約できるという効果を奏する。
【図面の簡単な説明】
【図1】 この発明の実施例1に示す命令処理装置の構
成のブロック図である。
【図2】 図1の命令処理装置における真偽レジスタの
構成を示す説明図である。
【図3】 図1の命令処理装置において、命令を実行す
るための命令コードの構成を示すための説明図である。
【図4】 図1の命令処理装置において、分岐命令を実
行するための分岐命令コードの構成を示すための説明図
である。
【図5】 命令の実行フローの一例を示すフローチャー
ト図である。
【図6】 図5のフローチャートを実施例1の命令処理
装置で処理するためのプログラムの一例を示すプログラ
ムリスト図である。
【図7】 図3および図4の命令コードにおけるコミッ
ト条件部のコードを示すための説明図である。
【図8】 図1の命令処理装置におけるコミット条件デ
コーダのデコード内容を示すための説明図である。
【図9】 図1のコミット条件デコーダの動作を示す真
理値表図である。
【図10】 図1のコミット条件デコーダの動作を示す
真理値表図である。
【図11】 図1の命令処理装置における実行制御回路
の機能を説明するための概念図である。
【図12】 図11の実行制御回路の構成を示す回路構
成図である。
【図13】 図12に示したコミット条件計算回路にお
ける比較回路の構成を示す回路構成図である。
【図14】 図1の命令処理装置におけるシーケンシャ
ルレジスタファイル、シャドウレジスタファイルおよび
コミット制御回路の構成を示す回路構成図である。
【図15】 実施例2における命令を実行するための命
令コードの構成を示すための説明図である。
【図16】 実施例2におけるコミット条件デコーダの
構成を示す回路構成図である。
【図17】 実施例3において、コミット制御回路内の
コミット条件計算回路における比較回路の構成を示す回
路構成図である。
【図18】 従来技術による命令処理装置の構成を示す
ブロック図である。
【符号の説明】
2A〜2D…演算論理装置(ALU)、3…メモリ、4
…プログラムカウンタ、5…インクリメント回路、6…
命令レジスタ、7…命令デコーダ、9…分岐先アドレス
計算回路、10…真偽レジスタ、11…実行制御回路、
12…シーケンシャルレジスタファイル、13…シャド
ウレジスタファイル、14…コミット制御回路、15…
命令操作部、15a…分岐識別コード、16…コミット
条件部、17…コミット条件計算回路、20、21…比
較回路、30…シーケンシャルレジスタ、31…シャド
ウレジスタ、32…コミット条件記憶部、50…コミッ
ト条件デコーダ
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平3−218524(JP,A) 特開 平5−224927(JP,A) 特開 平7−281894(JP,A) 安藤秀樹、外4名,”投機的実行のた めのアーキテクチャー上の支援”,情報 処理学会研究報告(94−ARC−105 94−HPC−50),日本,情報処理学 会,1994年 3月11日,第94巻,第22 号,p.33−40 (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (8)

    (57)【特許請求の範囲】
  1. 【請求項1】 第1の分岐条件ないし第nの分岐条件
    (nは自然数)の真偽により第nの命令の実行結果が有
    効であると判断して命令を処理することを、コミット条
    件コードを有した命令コードにより行なうようにした命
    令処理装置において、 上記第1ないし第nの分岐条件の真偽を判定すること、
    および上記第nの命令を実行する演算手段、 上記演算手段により上記第nの命令を実行して生成され
    たデータを確定的もしくは暫定的に保持するデータ保持
    手段、 上記演算手段に上記第nの命令を実行させるための第n
    の命令コードをデコードする命令デコーダ、 複数のエントリを有し、上記演算手段により判定された
    第mの分岐条件(m=1〜n)の真偽の一方を示す第m
    aの値と他方を示す第mbの値(但し、ma=1a〜na
    b=1b〜nb)、および上記第mの分岐条件の真偽が
    未定であることを示す条件値のいずれか1つを第mのエ
    ントリに記憶して保持する真偽判定保持手段を備えた命
    令処理装置であって、 上記第nの命令コードは上記第nのエントリを指定する
    第nのコミット条件コードを有し、 上記第nのコミット条件コードにより、(a)上記真偽
    判定保持手段が、上記第1aの値ないし第naの値をそれ
    ぞれ保持した上記第1ないし第nのエントリからなる真
    偽エントリ群を構成した場合、上記第nの命令コードに
    より実行される第nの命令の生成するデータを上記デー
    タ保持手段に確定的に保持するように制御し、(b)上
    記第1ないし第nのエントリのうち、少なくとも1つの
    エントリが未定を保持し、それ以外のエントリは上記真
    偽エントリ群と同一の値を保持する場合、上記第nの命
    令コードにより実行される第nの命令の生成するデータ
    を上記データ保持手段に暫定的に保持するように制御す
    る制御手段、 上記第nの命令を実行して生成されたデータが上記デー
    タ保持手段に暫定的に保持された場合、上記第1ないし
    第nのエントリが上記真偽エントリ群を構成したときに
    上記データ保持手段は暫定的に保持された上記データを
    確定的に保持するように制御するコミット制御手段を備
    えたことを特徴とする命令処理装置。
  2. 【請求項2】 第1の分岐条件ないし第nの分岐条件
    (nは自然数)の真偽により第nの命令の実行結果が有
    効であると判断して命令を処理することを、コミット条
    件コードを有した命令コードにより行なうようにした命
    令処理装置において、 上記第1ないし第nの分岐条件の真偽を判定すること、
    および上記第nの命令を実行する演算手段、 上記演算手段により上記第nの命令を実行して生成され
    たデータを確定的もしくは暫定的に保持するデータ保持
    手段、 上記演算手段に上記第nの命令を実行させるための第n
    の命令コードをデコードする命令デコーダ、 複数のエントリを有し、上記演算手段により判定された
    第mの分岐条件(m=1〜n)の真偽の一方を示す第m
    aの値と他方を示す第mbの値(但し、ma=1a〜na
    b=1b〜nb)、および上記第mの分岐条件の真偽が
    未定であることを示す条件値のいずれか1つを第mのエ
    ントリに記憶して保持する真偽判定保持手段を備えた命
    令処理装置であって、 上記第nの命令コードは上記第nのエントリを指定する
    第nのコミット条件コードを有し、 上記第nのコミット条件コードをデコードして、上記第
    aの値ないし第naの値をそれぞれ保持した第1のエン
    トリないし第nのエントリからなる第1のデコードエン
    トリ群を生成するコミット条件デコーダ、 上記第1のデコードエントリ群のエントリと、上記真偽
    判定保持手段の対応するエントリを各々比較し、(a)
    上記第1のデコードエントリ群が上記真偽判定保持手段
    の対応するエントリの保持する真偽とすべて一致した場
    合、上記第nの命令コードにより実行される第nの命令
    の生成するデータを上記データ保持手段に確定的に保持
    するよう制御し、(b)上記第1のデコードエントリ群
    の各エントリと一致しない上記真偽判定保持手段の対応
    するエントリがすべて未定を保持する場合、上記第nの
    命令コードにより実行される第nの命令の生成するデー
    タを上記データ保持手段に暫定的に保持するよう制御す
    る実行制御手段、 上記第nの命令を実行して生成されたデータが上記デー
    タ保持手段に暫定的に保持された場合、上記真偽判定保
    持手段のエントリが上記第1のデコードエントリ群と一
    致したときに上記データ保持手段は暫定的に保持された
    上記データを確定的に保持するように制御するコミット
    制御手段を備えたことを特徴とする命令処理装置。
  3. 【請求項3】 第1の分岐条件ないし第nの分岐条件
    (nは自然数)の真偽により第nの命令もしくは第nの
    分岐命令のいずれか一方が有効であると判断して命令を
    処理することを、コミット条件コードを有した命令コー
    ドにより行なうようにした命令処理装置において、 上記第1ないし第nの分岐条件の真偽を判定すること、
    および上記第nの命令を実行する演算手段、 上記演算手段により上記第nの命令を実行して生成され
    たデータを確定的もしくは暫定的に保持するデータ保持
    手段、 上記演算手段に上記第nの命令を実行させるための第n
    の命令コード、および上記第nの分岐命令を実行するた
    めの第nの分岐命令コードをデコードする命令デコー
    ダ、 複数のエントリを有し、上記演算手段により判定された
    第mの分岐条件(m=1〜n)の真偽の一方を示す第m
    aの値と他方を示す第mbの値(但し、ma=1a〜na
    b=1b〜nb)、および上記第mの分岐条件の真偽が
    未定であることを示す条件値のいずれか1つを第mのエ
    ントリに記憶して保持する真偽判定保持手段を備えた命
    令処理装置であって、 上記第nの命令コードは上記第nのエントリを指定する
    第nのコミット条件コードを有し、 上記第nのコミット条件コードにより、(a)上記真偽
    判定保持手段が、上記第1aの値ないし第naの値をそれ
    ぞれ保持した上記第1ないし第nのエントリからなる真
    偽エントリ群を構成した場合、上記第nの命令コードに
    より実行される第nの命令の生成するデータを上記デー
    タ保持手段に確定的に保持するように制御し、(b)上
    記第1ないし第nのエントリのうち、少なくとも1つの
    エントリが未定を保持し、それ以外のエントリは上記真
    偽エントリ群と同一の値を保持する場合、上記第nの命
    令コードにより実行される第nの命令の生成するデータ
    を上記データ保持手段に暫定的に保持するように制御
    し、(c)上記第1ないし第nのエントリのうち、第k
    のエントリ(但しkは1ないしnの少なくともいずれか
    1つ)が第kbの値を保持する場合、上記第nの分岐命
    令を実行するよう制御する制御手段、 上記第nの命令を実行して生成されたデータが上記デー
    タ保持手段に暫定的に保持された場合、上記第1ないし
    第nのエントリが上記真偽エントリ群を構成したときに
    上記データ保持手段は暫定的に保持された上記データを
    確定的に保持するように制御するコミット制御手段を備
    えたことを特徴とする命令処理装置。
  4. 【請求項4】 第1の分岐条件ないし第nの分岐条件
    (nは自然数)の真偽により第nの命令もしくは第nの
    分岐命令のいずれか一方が有効であると判断して命令を
    処理することを、コミット条件コードを有した命令コー
    ドにより行なうようにした命令処理装置において、 上記第1ないし第nの分岐条件の真偽を判定すること、
    および上記第nの命令を実行する演算手段、 上記演算手段により上記第nの命令を実行して生成され
    たデータを確定的もしくは暫定的に保持するデータ保持
    手段、 上記演算手段に上記第nの命令を実行させるための第n
    の命令コード、および上記第nの分岐命令を実行するた
    めの第nの分岐命令コードをデコードする命令デコー
    ダ、 複数のエントリを有し、上記演算手段により判定された
    第mの分岐条件(m=1〜n)の真偽の一方を示す第m
    aの値と他方を示す第mbの値(但し、ma=1a〜na
    b=1b〜nb)、および上記第mの分岐条件の真偽が
    未定であることを示す条件値のいずれか1つを第mのエ
    ントリに記憶して保持する真偽判定保持手段を備えた命
    令処理装置であって、 上記第nの命令コードは上記第nのエントリを指定する
    第nのコミット条件コードを有し、上記第nの分岐命令
    コードは上記第nのコミット条件コードとともに分岐を
    示す分岐識別コードを有し、 上記第nのコミット条件コードをデコードして、上記第
    aの値ないし第naの値をそれぞれ保持した第1のエン
    トリないし第nのエントリからなる第1のデコードエン
    トリ群を生成するとともに、上記第nのコミット条件コ
    ードとともに上記分岐識別コードをデコードした場合
    は、上記第nbの値を示す第nのエントリと上記第1の
    デコードエントリ群と同一の値を示す第1ないし第nー
    1のエントリからなる第2のデコードエントリ群を生成
    するコミット条件デコーダ、 上記コミット条件デコーダの生成するデコードエントリ
    群のエントリと、上記真偽判定保持手段の対応するエン
    トリを各々比較し、(a)上記第1のデコードエントリ
    群が上記真偽判定保持手段の対応するエントリの保持す
    る値とすべて一致した場合、上記第nの命令コードによ
    り実行される第nの命令の生成するデータを上記データ
    保持手段に確定的に保持するよう制御し、(b)上記第
    1のデコードエントリ群の各エントリと一致しない上記
    真偽判定保持手段の対応するエントリがすべて未定を保
    持する場合、上記第nの命令コードにより実行される第
    nの命令の生成するデータを上記データ保持手段に暫定
    的に保持するよう制御し、(c)上記第2のデコードエ
    ントリ群が上記真偽判定保持手段の対応するエントリの
    保持する値とすべて一致した場合、上記第nの分岐命令
    を実行するように制御する実行制御手段、 上記第nの命令を実行して生成されたデータが上記デー
    タ保持手段に暫定的に保持された場合、上記真偽判定保
    持手段のエントリが上記第1のデコードエントリ群と一
    致したときに上記データ保持手段は暫定的に保持された
    上記データを確定的に保持するように制御するコミット
    制御手段を備えたことを特徴とする命令処理装置。
  5. 【請求項5】 コミット制御手段は、デ−タをデータ保
    持手段に暫定的に保持する制御がされた第nの命令コー
    ドの有する第nのコミット条件コードが、コミット条件
    デコーダにより上記第nのコミット条件コードがデコー
    ドされて生成されたデコードエントリ群を保持するコミ
    ット条件保持手段、上記コミット条件保持部により保持
    されたエントリ群の第1ないし第nエントリが真偽判定
    保持手段の対応するエントリに保持された内容と一致し
    たとき上記データ保持手段は暫定的に保持された上記デ
    ータを確定的に保持するように制御するデータ保持制御
    手段を備えたことを特徴とする請求項2もしくは請求項
    4記載の命令処理装置。
  6. 【請求項6】 コミット制御手段は、真偽判定保持手段
    の第1ないし第nのエントリのうち、未定が保持されて
    いた第jのエントリに第jbの値を保持する場合(但
    し、jは1ないしnの少なくともいずれか1つ)、上記
    データ保持手段は暫定的に保持された上記データを確定
    的に保持されないように無効にするよう制御することを
    特徴とする請求項1ないし請求項5のいずれか一項記載
    の命令処理装置。
  7. 【請求項7】 コミット条コードは、log(n+
    1)より大きいものであって、最小の自然数のビット数
    で構成されたことを特徴とする請求項1ないし請求項
    のいずれか一項記載の命令処理装置。
  8. 【請求項8】 第1aの値ないし第naの値は,すべて真
    もしくは偽を示すことを特徴とする請求項1ないし請求
    項7のいずれか一項記載の命令処理装置。
JP29669594A 1994-11-30 1994-11-30 命令処理装置 Expired - Fee Related JP3494489B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP29669594A JP3494489B2 (ja) 1994-11-30 1994-11-30 命令処理装置
US08/548,374 US5771377A (en) 1994-11-30 1995-11-01 System for speculatively executing instructions using multiple commit condition code storages with instructions selecting a particular storage
DE19549468A DE19549468C2 (de) 1994-11-30 1995-11-24 Compiler
DE1995143880 DE19543880B4 (de) 1994-11-30 1995-11-24 Verarbeitungseinrichtung, die in der Lage ist eine Anweisung spekulativ auszuführen
US09/078,489 US6035122A (en) 1994-11-30 1998-05-14 Compiler for converting source program into object program having instruction with commit condition

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP29669594A JP3494489B2 (ja) 1994-11-30 1994-11-30 命令処理装置

Publications (2)

Publication Number Publication Date
JPH08153000A JPH08153000A (ja) 1996-06-11
JP3494489B2 true JP3494489B2 (ja) 2004-02-09

Family

ID=17836894

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29669594A Expired - Fee Related JP3494489B2 (ja) 1994-11-30 1994-11-30 命令処理装置

Country Status (2)

Country Link
US (2) US5771377A (ja)
JP (1) JP3494489B2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1049368A (ja) * 1996-07-30 1998-02-20 Mitsubishi Electric Corp 条件実行命令を有するマイクロプロセッサ
JPH1115773A (ja) * 1997-06-24 1999-01-22 Matsushita Electron Corp 半導体集積回路、コンピュータシステム、データ処理装置及びデータ処理方法
US6738389B1 (en) * 1997-10-01 2004-05-18 Globespanvirata, Inc. Circuit and method for performing partial parallel data transfer in a communications system
US6412105B1 (en) * 1997-12-31 2002-06-25 Elbrus International Limited Computer method and apparatus for compilation of multi-way decisions
US6360315B1 (en) * 1999-02-09 2002-03-19 Intrinsity, Inc. Method and apparatus that supports multiple assignment code
JP2001092657A (ja) * 1999-09-22 2001-04-06 Toshiba Corp 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体
JP3532835B2 (ja) * 2000-07-04 2004-05-31 松下電器産業株式会社 データ処理装置およびプログラム変換装置
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
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US7784039B2 (en) * 2004-09-22 2010-08-24 Panasonic Corporation Compiler, compilation method, and compilation program
US7496735B2 (en) * 2004-11-22 2009-02-24 Strandera Corporation Method and apparatus for incremental commitment to architectural state in a microprocessor
JP4884297B2 (ja) * 2006-05-26 2012-02-29 パナソニック株式会社 コンパイラ装置、コンパイル方法およびコンパイラプログラム
US8028277B2 (en) * 2007-05-21 2011-09-27 International Business Machines Corporation Self-healing system and method for code optimization in a computing environment
JP2008305185A (ja) * 2007-06-07 2008-12-18 Nec Electronics Corp プロセッサ装置及び複合条件処理方法
JP5082716B2 (ja) * 2007-09-20 2012-11-28 富士通セミコンダクター株式会社 プログラム変換装置、プログラム変換方法およびプログラム変換プログラム
US8990543B2 (en) * 2008-03-11 2015-03-24 Qualcomm Incorporated System and method for generating and using predicates within a single instruction packet
JP2012252670A (ja) * 2011-06-07 2012-12-20 Toshiba Corp 演算装置およびプログラム
US20140156976A1 (en) * 2011-12-22 2014-06-05 Enric Gibert Codina Method, apparatus and system for selective execution of a commit instruction

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
JPH0795271B2 (ja) * 1989-06-20 1995-10-11 富士通株式会社 分岐命令実行装置
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5450585A (en) * 1991-05-15 1995-09-12 International Business Machines Corporation Compiler with delayed conditional branching
JP2531897B2 (ja) * 1991-05-15 1996-09-04 インターナショナル・ビジネス・マシーンズ・コーポレイション 平面変圧器
JP2875909B2 (ja) * 1991-07-12 1999-03-31 三菱電機株式会社 並列演算処理装置
US5421020A (en) * 1993-01-08 1995-05-30 International Business Machines Corporation Counter register implementation for speculative execution of branch on count instructions
JPH06314203A (ja) * 1993-04-28 1994-11-08 Fujitsu Ltd コンパイラの最適化方法および装置
US5941986A (en) * 1993-04-30 1999-08-24 Intel Corporation Micro-code sequencer with branch-taken and branch-not-taken micro-code vectors sharing common address to eliminate taken branch penalties
US5761467A (en) * 1993-09-28 1998-06-02 Mitsubishi Denki Kabushiki Kaisha System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field
US5627985A (en) * 1994-01-04 1997-05-06 Intel Corporation Speculative and committed resource files in an out-of-order processor
US5649225A (en) * 1994-06-01 1997-07-15 Advanced Micro Devices, Inc. Resynchronization of a superscalar processor
US5732253A (en) * 1994-10-18 1998-03-24 Cyrix Corporation Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches
US5768574A (en) * 1995-06-07 1998-06-16 Advanced Micro Devices, Inc. Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor
JP2738365B2 (ja) * 1995-10-18 1998-04-08 日本電気株式会社 マイクロコンピュータ用プログラム変換方法及びそのプログラムを用いたマイクロコンピュータ

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
安藤秀樹、外4名,"投機的実行のためのアーキテクチャー上の支援",情報処理学会研究報告(94−ARC−105 94−HPC−50),日本,情報処理学会,1994年 3月11日,第94巻,第22号,p.33−40

Also Published As

Publication number Publication date
US6035122A (en) 2000-03-07
JPH08153000A (ja) 1996-06-11
US5771377A (en) 1998-06-23

Similar Documents

Publication Publication Date Title
JP3494489B2 (ja) 命令処理装置
US5333280A (en) Parallel pipelined instruction processing system for very long instruction word
JP3098071B2 (ja) 条件付き分岐を有するプログラムの効率的実行をするためのコンピュータシステム
US5475853A (en) Cache store of instruction pairs with tags to indicate parallel execution
US5465377A (en) Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
JP3594506B2 (ja) マイクロプロセッサの分岐命令予測方法
JP2875909B2 (ja) 並列演算処理装置
JP2818249B2 (ja) 電子計算機
KR100440805B1 (ko) 소규모의 하드웨어로 높은 적중률의 분기 예측을 하는 정보 처리 장치
JPH02153428A (ja) キャッシュ装置と命令読出し装置
JP3338051B2 (ja) 非同期パイプラインにおける条件検出
US5761467A (en) System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field
US5615375A (en) Interrupt control circuit
JP3762816B2 (ja) マイクロプロセッサにおける早期例外を追跡するシステム及び方法
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
CA2060137C (en) Circuit for executing conditional branch instructions in pipeline process
US20050027921A1 (en) Information processing apparatus capable of prefetching instructions
US7681016B2 (en) Microprocessor instruction execution method for exploiting parallelism by time ordering operations in a single thread at compile time
US6360316B1 (en) Method for fast detection of mutually exclusive predicated instructions
JP2581565B2 (ja) ガード付命令を実行するデータ処理装置
JP2904624B2 (ja) 並列演算処理装置
JPH07182165A (ja) コミット条件付き命令の処理方法およびその装置
KR100515039B1 (ko) 조건부 명령어를 고려한 파이프라인 상태 표시 회로
JPH1115659A (ja) 分岐予測方式
JP3428253B2 (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: 20031104

LAPS Cancellation because of no payment of annual fees