JPH07182165A - コミット条件付き命令の処理方法およびその装置 - Google Patents

コミット条件付き命令の処理方法およびその装置

Info

Publication number
JPH07182165A
JPH07182165A JP6133106A JP13310694A JPH07182165A JP H07182165 A JPH07182165 A JP H07182165A JP 6133106 A JP6133106 A JP 6133106A JP 13310694 A JP13310694 A JP 13310694A JP H07182165 A JPH07182165 A JP H07182165A
Authority
JP
Japan
Prior art keywords
condition
commit
instruction
register
exception
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.)
Withdrawn
Application number
JP6133106A
Other languages
English (en)
Inventor
Hideki Ando
秀樹 安藤
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to US08/304,441 priority Critical patent/US5761467A/en
Priority to DE4434529A priority patent/DE4434529A1/de
Publication of JPH07182165A publication Critical patent/JPH07182165A/ja
Withdrawn legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 条件命令を実行した後に実行すべき命令をそ
の条件命令を実行する前に実行できるようにする。 【構成】 このマイクロプロセッサは、通常のシーケン
シャルレジスタファイル12と、条件命令を実行した後
に実行すべき命令をその条件命令を実行する前に実行し
た場合の結果データを保持するシャドウレジスタファイ
ル13と、その条件が「真」であるか、「偽」である
か、または「未定」であるかの情報を保持するTFレジ
スタ10と、シャドウレジスタファイル13に格納した
結果データに対応する条件を保持し、その条件の真偽と
TFレジスタ10における真偽とが一致した時点でその
シャドウレジスタファイルに格納されている結果データ
をシーケンシャルレジスタファイル12へ転送するコミ
ット制御回路14とを備える。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明はコミット条件付き命令
の処理方法およびその装置に関し、さらに詳しくは、複
数の条件の下で、各々が対応する1つのコミット条件を
持つ複数の命令を処理する方法およびその装置に関す
る。ここで、コミット条件は対応する命令を最終的に処
理するために必要ないずれかの条件から構成される。
【0002】
【従来の技術】図28は、従来の命令処理装置であるマ
イクロプロセッサの構成を示すブロック図である。
【0003】図28を参照して、このマイクロプロセッ
サは、複数のレジスタからなるレジスタファイル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によっ
てその条件が真であるか偽であるかが判断される。
【0008】そして、その条件が真であれば、分岐先ア
ドレス計算回路9によってその分岐先アドレスが計算さ
れ、プログラムカウンタ4に与えられる。その条件が偽
であれば、プログラムカウンタ4はインクリメントされ
る。
【0009】一般に、マイクロプロセッサは、命令を実
行している最中に例外と呼ばれる処理を行なわなければ
ならない場合がある。たとえば仮想記憶のマイクロプロ
セッサにおいて、メモリ3からレジスタファイル1中の
レジスタへデータをフェッチする命令(ロード命令)が
実行されるとき、そのロードしようとするデータがメモ
リ3上に存在しない場合がある。このような例外は一般
に「ページフォールト」と呼ばれる。この場合、例外ハ
ンドラと呼ばれる特別なルーチンを呼出してディスクか
らメモリ3へデータをロードする必要がある。また、そ
の後、例外を引き起こした命令から再び処理を開始する
必要がある。
【0010】
【発明が解決しようとする課題】図10は、プログラム
の一例を示すフローチャートである。このフローチャー
トによれば、基本ブロックK1における条件C1:if
(R2<R3)が判定された後、基本ブロックL1およ
びL3のいずれかが開始される。すなわち、基本ブロッ
クL1における命令I2:r4=r12+r13および
命令I3:r5=r12−r13は、条件C1の下で実
行されるべきものである。
【0011】上記従来のマイクロプロセッサによれば、
条件C1が判定された後でなければ、命令I2およびI
3のいずれも実行され得ない。たとえば、命令I2が実
行された結果データがレジスタファイル1におけるレジ
スタr4に書込まれるのは、条件C1が真であるときだ
けである。もし条件C1が偽であるのに命令I2が実行
された結果データがレジスタr4に書込まれると、レジ
スタr4が持っていた前のデータが破壊されるからであ
る。
【0012】このように、従来のマイクロプロセッサ
は、条件C1およびC2の下で実行すべき命令I2、I
3およびI4を、条件C1およびC2を判定する前に実
行することはできなかった。
【0013】近年、複数のALUを持つマイクロプロセ
ッサが提供されているが、このようなマイクロプロセッ
サであっても1または2以上の条件下で実行すべき命令
を、それら条件を判定する前に実行することはできな
い。そのため、それら複数のALUのうちいくつかは全
く演算をしていないときがあり、演算処理の十分な高速
化は実現され得ない。
【0014】この発明の目的は、条件判定後に実行すべ
き命令を、条件判定前に実行することができるマイクロ
プロセッサを提供することである。
【0015】この発明の他の目的は、より高速に命令を
処理することができるマイクロプロセッサを提供するこ
とである。
【0016】この発明のさらに他の目的は、例外が発生
したときも高速に命令を処理することができるマイクロ
プロセッサを提供することである。
【0017】
【課題を解決するための手段】請求項1に記載のコミッ
ト条件付き命令の処理方法は、複数の条件の下で、各々
が対応する1つのコミット条件を持つ複数の命令を処理
することを前提とする。ここで、コミット条件は、対応
する命令を最終的に処理するために必要な上記条件のう
ちいずれかからなる。上記処理方法は、上記条件のうち
選択された少なくとも1つの条件を判定するステップ
と、上記命令のうち選択された少なくとも1つの命令に
対応するコミット条件を上記条件と比較するステップ
と、その比較後、その選択された命令を実行して結果デ
ータを生成するステップと、その対応するコミット条件
中のすべての条件の真偽がすでに判定されている条件の
真偽と対応的に一致している第1の場合はその生成した
結果データを確定的に保持し、その対応するコミット条
件中のいずれかの条件の真偽がすでに判定されている条
件の真偽と対応的に一致しかつその対応するコミット条
件中のその他の条件が未だ判定されていない第2の場合
はその生成した結果データを暫定的に保持するステップ
と、上記第2の場合は、その対応するコミット条件中の
すべての条件の真偽がすでに判定されている条件の真偽
と対応的に一致するコミット時に、その暫定的に保持し
た結果データを確定的に保持し直すステップとを含む。
【0018】請求項2に記載のコミット条件付き命令の
処理方法は、上記請求項1に記載の処理方法に加えてさ
らに、その選択された命令が処理される間に例外が発生
した場合であって、上記第1の場合はその例外を直ちに
処理し、上記第2の場合はその例外の発生を記憶するス
テップと、その例外の発生が記憶されている場合は上記
コミット時にその例外を処理するステップとを含む。
【0019】請求項3に記載のコミット条件付き命令の
処理方法は、上記請求項1に記載の処理方法に加えてさ
らに、その選択された命令が処理される間に例外が発生
した場合であって、上記第1の場合はその例外を直ちに
処理し、上記第2の場合はその例外の発生を記憶するス
テップと、上記コミット時にその例外の発生が記憶され
ている場合は上記複数の命令のうち上記コミット時まで
にすでに処理された命令を最初から再処理するステップ
と、その命令が再処理される間にその例外が再び発生し
たとき、その例外を直ちに処理するステップとを含む。
【0020】請求項4に記載のコミット条件付き命令の
処理方法は、複数の条件の下で、各々が対応する1つの
コミット条件を持つ複数の命令を複数の処理ステージを
経てパイプライン制御によって処理することを前提とす
る。ここで、上記コミット条件は、対応する命令を最終
的に処理するために必要な上記条件のうちいずれかから
なる。上記処理方法は、上記条件のうち選択された少な
くとも1つの条件を判定するステップと、上記複数の処
理ステージのうち1つの処理ステージにおいて、上記命
令のうち選択された少なくとも1つの命令に対応するコ
ミット条件を上記条件と比較するステップと、その対応
するコミット条件中のすべての条件の真偽がすでに判定
されている条件の真偽と対応的に一致している第1の場
合はその次の処理ステージへ移行するときにその選択さ
れた命令が実行されて生成されるであろう結果データは
確定的に保持されるべきという第1の処置情報を生成
し、その対応するコミット条件中のいずれかの条件の真
偽がすでに判定されている条件の真偽と対応的に一致し
かつその対応するコミット条件中のその他の条件が未だ
判定されていない第2の場合はその次の処理ステージへ
移行するときにその選択された命令が実行されて生成さ
れるであろう結果データは暫定的に保持されるべきとい
う第2の処置情報を生成するステップと、その比較後、
その選択された命令を実行して結果データを生成するス
テップと、上記第1の場合はその第1の処置情報に従っ
てその生成された結果データを確定的に保持し、上記第
2の場合はその第2の処置情報に従ってその生成された
結果データを暫定的に保持するステップと、上記第2の
場合は、その対応するコミット条件中のすべての条件の
真偽がすでに判定されている条件の真偽と対応的に一致
するコミット時に、その暫定的に保持した結果データを
確定的に保持し直すステップとを含む。
【0021】請求項5に記載のコミット条件付き命令の
処理方法は、上記請求項4に記載の処理方法に加えてさ
らに、第1または第2の処置情報を生成した後、上記1
つの処理ステージ以降のもう1つの処理ステージにおい
て、その対応するコミット条件を上記条件と再び比較す
るステップと、その比較の結果、上記第2の場合から上
記第1の場合へ変化している場合はさらにその次の処理
ステージへ移行するときにその第2の処置情報を第1の
処置情報へ変更するステップを含む。
【0022】請求項6に記載のコミット条件付き命令の
処理装置は、複数の条件の下で、各々が対応する1つの
コミット条件を持つ複数の命令を処理するものを前提と
する。ここで、上記コミット条件は、対応する命令を最
終的に処理するために必要な上記条件のうちいずれかか
らなる。上記処理装置は、演算手段と、データ保持手段
と、真偽レジスタ手段と、実行制御手段と、コミット制
御手段とを備える。上記演算手段は、上記命令のうち選
択された少なくとも1つの命令を実行し、かつ、上記条
件のうち選択された少なくとも1つの条件を判定する。
上記データ保持手段は、上記演算手段がその選択された
命令を実行して生成した結果データを確定的または暫定
的に保持する。上記真偽レジスタ手段は、上記複数の条
件に対応する複数のエントリを含む。上記エントリの各
々は、対応する条件が真であるという第1の条件情報、
対応する条件が偽であるという第2の条件情報、および
対応する条件の真偽が未定であるという第3の条件情報
のうちいずれかを保持する。上記実行制御手段は、その
対応するコミット条件を上記真偽レジスタ手段から得ら
れた条件情報と比較し、(i)その対応するコミット条
件中のすべての条件の真偽がそのすべての条件に対応す
る条件情報と対応的に一致する第1の場合は上記データ
保持手段が結果データを確定的に保持するように制御
し、(ii)その対応するコミット条件中のいずれかの条
件の真偽がそのいずれかの条件に対応する条件情報と対
応的に一致しかつその対応するコミット条件中のその他
の条件に対応する条件情報が第3の条件情報である第2
の場合は上記データ保持手段が結果データを暫定的に保
持するように制御する。上記コミット制御手段は、その
対応するコミット条件を上記真偽レジスタ手段から得ら
れた条件情報と比較し、その対応するコミット条件中の
すべての条件の真偽がそのすべての条件に対応する条件
情報と対応的に一致するコミット時に、上記データ保持
手段が暫定的に保持した結果データを確定的に保持し直
すように制御する。
【0023】請求項7に記載のコミット条件付き命令の
処理装置は、複数の条件の下で、各々が対応する1つの
コミット条件を持つ複数の命令を複数の処理ステージを
経てパイプライン制御によって処理するものを前提とす
る。ここで、上記コミット条件は、対応する命令を最終
的に処理するために必要な上記条件のうちいずれかから
なる。上記処理装置は、演算手段と、データ保持手段
と、真偽レジスタ手段と、情報生成手段と、書込制御手
段と、コミット制御手段とを備える。上記演算手段は、
上記命令のうち選択された少なくとも1つの命令を実行
し、かつ、上記条件のうち選択された少なくとも1つの
条件を判定する。上記データ保持手段は、上記演算手段
がその選択された命令を実行して生成した結果データを
確定的または暫定的に保持する。上記真偽レジスタ手段
は、上記複数の条件に対応する複数のエントリを含む。
上記エントリの各々は、対応する条件が真であるという
第1の条件情報、対応する条件が偽であるという第2の
条件情報、および対応する条件の真偽が未定であるとい
う第3の条件情報のうちいずれかを保持する。上記情報
生成手段は、上記複数の処理ステージのうち1つの処理
ステージにおいて、その対応するコミット条件を上記真
偽レジスタ手段から得られた条件情報と比較し、(i)
その対応するコミット条件中のすべての条件の真偽がそ
のすべての条件に対応する条件情報と対応的に一致する
第1の場合はその次の処理ステージへ移行するときに上
記演算手段がその選択された命令を実行して生成するで
あろう結果データは確定的なものであるという第1の処
置情報を生成し、(ii)その対応するコミット条件中の
いずれかの条件の真偽がそのいずれかの条件に対応する
条件情報と対応的に一致しかつその対応するコミット条
件中のその他の条件に対応する条件情報が第3の条件情
報である第2の場合はその次の処理ステージへ移行する
ときに上記演算手段がその選択された命令を実行して生
成するであろう結果データは暫定的なものであるという
第2の処置情報を生成する。上記書込制御手段は、
(i)上記第1の場合はその第1の処置情報に従って上
記演算手段が生成した結果データを上記データ保持手段
が確定的に保持するように制御し、(ii)上記第2の場
合はその第2の処置情報に従って上記演算手段が生成し
た結果データを上記データ保持手段が暫定的に保持する
ように制御する。上記コミット制御手段は、その対応す
るコミット条件を上記真偽レジスタ手段から得られた条
件情報と比較し、その対応するコミット条件中のすべて
の条件の真偽がそのすべての条件に対応する条件情報と
対応的に一致するコミット時に、上記データ保持手段が
暫定的に保持した結果データを確定的に保持し直すよう
に制御する。
【0024】請求項8に記載のコミット条件付き命令の
処理装置は、上記請求項7に記載の処理装置に加えてさ
らに、上記情報生成手段が第1または第2の処置情報を
生成した上記1つの処理ステージ以降のもう1つの処理
ステージにおいて、上記第2の場合から上記第1の場合
へ変化している場合はさらにその次の処理ステージへ移
行するときにその第2の処置情報を第1の処置情報へ変
更する情報変更手段を備える。
【0025】請求項9に記載のコミット条件付き命令の
処理装置は、上記請求項6〜請求項8に記載の処理装置
において、上記データ保持手段が、第1および第2のレ
ジスタ手段を備えて構成されている。上記第1のレジス
タ手段は、その結果データを確定的に保持する。上記第
2のレジスタ手段と、その結果データを暫定的に保持す
る。
【0026】請求項10に記載のコミット条件付き命令
の処理装置は、上記請求項6〜請求項8に記載の処理装
置において、上記データ保持手段が、その結果データを
確定的に保持しているのかまたは暫定的に保持している
のかを特定するためのフラグを備えて構成されている。
【0027】請求項11に記載のコミット条件付き命令
の処理装置は、請求項6〜請求項10に記載の処理装置
において、上記条件のうち少なくとも1つの条件を判定
するための条件命令もまた、対応する1つのコミット条
件を持つ。上記真偽レジスタ手段の各エントリは、条件
情報を確定的または暫定的に保持する。上記実行制御手
段は、その条件命令に対応するコミット条件を上記真偽
レジスタ手段から得られた条件情報と比較し、(i)そ
の条件命令に対応するコミット条件中のすべての条件の
真偽がそのすべての条件に対応する条件情報と対応的に
一致する第3の場合は上記演算手段がその条件命令に従
ってその選択された条件を判定して生成した第1または
第2の条件情報を上記真偽レジスタ手段が確定的に保持
するように制御し、(ii)その条件命令に対応するコミ
ット条件中のいずれかの条件の真偽がそのいずれかの条
件に対応する条件情報と対応的に一致しかつその条件命
令に対応するコミット条件中のその他の条件に対応する
条件情報が第3の条件情報である第4の場合は上記演算
手段がその条件命令に従ってその選択された条件を判定
して生成した第1または第2の条件情報を上記真偽レジ
スタ手段が暫定的に保持するように制御する。上記処理
装置はさらに、その条件命令に対応するコミット条件を
上記真偽レジスタ手段から得られた条件情報と比較し、
その条件命令に対応するコミット条件中のすべての条件
の真偽がそのすべての条件に対応する条件情報と一致す
るコミット時に、上記真偽レジスタ手段が暫定的に保持
した第1または第2の条件情報を確定的に保持し直すよ
うに制御する第2のコミット制御手段を備える。
【0028】請求項12に記載のコミット条件付き命令
の処理装置は、請求項6〜請求項11に記載の処理装置
に加えてさらに、例外記憶手段と、例外処理手段とを備
える。例外記憶手段は、その選択された命令が処理され
る間に例外が発生しかつ上記第2の場合はその例外の発
生を記憶する。例外処理手段は、上記コミット時に上記
例外記憶手段がその例外の発生を記憶している場合はそ
の例外を処理する。
【0029】請求項13に記載のコミット条件付き命令
の処理装置は、上記例外処理手段がさらに、その例外を
処理する前に、上記複数の命令のうち、少なくともその
例外の発生時から上記コミット時までの間にその結果デ
ータが暫定的に保持されている命令を再処理する再処理
手段を備えて構成されている。
【0030】請求項14に記載のコミット条件付き命令
の処理装置は、上記請求項13に記載の処理装置におい
て、上記再処理手段がその対応する結果データが暫定的
に保持されている命令を逐次的な順序で再処理するよう
に構成されている。
【0031】請求項15に記載のコミット条件付き命令
の処理装置は、上記請求項6〜請求項11に記載の処理
装置に加えてさらに、真偽計算手段と、例外記憶手段
と、将来真偽レジスタ手段と、再処理手段と、例外処理
手段とを備える。上記真偽計算手段は、上記真偽レジス
タ手段から得られた条件情報に上記演算手段がその選択
された条件を判定して生成した条件情報を加える。上記
例外記憶手段は、その選択された命令が処理される間に
例外が発生しかつ上記第2の場合はその例外の発生を記
憶する。上記将来真偽レジスタ手段は、上記真偽計算手
段から得られた条件情報を保持する。上記例外処理手段
は、上記コミット時に上記例外記憶手段がその例外の発
生を記憶している場合は上記複数の命令のうち上記コミ
ット時までにすでに処理された命令を最初から再処理す
る。上記例外処理手段は、上記再処理手段がその命令を
再処理している間にその例外が再び発生したとき、その
例外を引起こした命令に対応するコミット条件を上記将
来真偽レジスタ手段から得られた条件情報と比較し、そ
の対応するコミット条件中のすべての条件の真偽がその
すべての条件に対応する条件情報と対応的に一致する場
合はその例外を処理する。上記真偽レジスタ手段は、上
記再処理手段がその命令を再処理している場合は上記真
偽計算手段から得られた条件情報を受入れず、そうでな
い場合はその条件情報を受入れる。上記真偽レジスタ手
段はまた、上記再処理手段がその命令を再処理し終えた
とき上記将来真偽レジスタ手段から得られた条件情報を
受入れる。
【0032】請求項16に記載のコミット条件付き命令
の処理装置は、上記請求項15に記載の処理装置におい
て、上記再処理手段が、その命令のうち上記第2の場合
における命令を選択的に再処理するように構成されてい
る。
【0033】請求項17に記載のコミット条件付き命令
の処理装置は、上記請求項12〜請求項16に記載の処
理装置において、上記例外記憶手段がその例外の発生を
記憶している間はその記憶されている内容が書換えられ
るのを禁止する禁止手段をさらに備えて構成されてい
る。
【0034】
【作用】請求項1に記載のコミット条件付き命令の処理
方法においては、命令が実行される前に、コミット条件
がすでに成立しているか否かが判断され、たとえそのコ
ミット条件の成否が未だ判明していない場合であっても
その命令は投機的に実行され、その結果データは暫定的
に保持される。そして、そのコミット条件が成立したと
きその暫定的に保持された結果データは改めて確定的に
保持される。このように、コミット条件の成否が判明す
る前に命令を実行できるので、命令の処理速度が向上す
る。
【0035】請求項2に記載のコミット条件付き命令の
処理方法においては、投機的に実行された命令が例外を
引起こした場合はコミット時にその例外処理が行なわれ
る。したがって、無駄な例外処理が行なわれることはな
く、命令の処理速度はさらに向上する。
【0036】請求項3に記載のコミット条件付き命令の
処理方法においては、コミット時までにすでに処理され
た命令が再処理され、そして、再び例外が発生したとき
にその例外処理が行なわれる。したがって、投機的に実
行された命令が例外を引起こした場合であっても常に正
確な結果データが生成される。
【0037】請求項4に記載のコミット条件付き命令の
処理方法においては、命令はパイプライン制御によって
複数の処理ステージを経て処理される。ここで、ある処
理ステージにおいて、ある命令が逐次的かまたは投機的
かという処置情報が生成される。これにより、そのコミ
ット条件の成否が判明する前であってもその命令は投機
的に実行され、その結果データは暫定的に保持される。
暫定的に保持された結果データは、コミット時に改めて
確定的に保持される。このように、命令は投機的に実行
され得るので、命令の処理速度がさらに向上する。
【0038】請求項5に記載のコミット条件付き命令の
処理方法においては、さらに別のある処理ステージにお
いて、たとえばコミット条件の成立が判明した場合はそ
の命令は逐次的であるという処置情報に変更され、その
変更された処置情報に従ってその結果データは確定的に
保持される。
【0039】請求項6に記載のコミット条件付き命令の
処理装置においては、命令が実行される前に、コミット
条件がすでに成立しているか否かが判断され、たとえコ
ミット条件の成否が未だ判明していない場合であって
も、その命令は投機的に実行され、その結果データは暫
定的に保持される。そして、その暫定的に保持された結
果データはコミット時に改めて確定的に保持される。こ
のように、そのコミット条件の成否が未だ判明していな
い命令であっても投機的に実行され得るので、命令の処
理速度は向上する。
【0040】請求項7に記載のコミット条件付き命令の
処理装置においては、命令はパイプライン制御によって
複数の処理ステージを経て処理される。ここで、ある処
理ステージにおいて、その命令は逐次的であるかまたは
投機的であるかという処置情報が生成される。その命令
が投機的に実行されて生成された結果データは、その処
置情報に従って暫定的に保持される。そして、その暫定
的に保持された結果データはコミット時に改めて確定的
に保持される。したがって、コミット条件の成否が未だ
判明していない命令であっても投機的に実行され得るの
で、命令の処理速度はさらに向上する。
【0041】請求項8に記載のコミット条件付き命令の
処理装置においては、さらに別のある処理ステージにお
いて、たとえばその命令が確定的であることが判明した
場合はその処置情報が変更され、その変更された処置情
報に従ってその結果データは確定的に保持される。
【0042】請求項9に記載のコミット条件付き命令の
処理装置においては、命令が逐次的に実行された場合は
その結果データは第1のレジスタ手段に確定的に保持さ
れ、一方、命令が投機的に実行された場合はその結果デ
ータは第2のレジスタ手段に暫定的に保持される。
【0043】請求項10に記載のコミット条件付き命令
の処理装置においては、命令が逐次的に実行された場合
はフラグが第1の状態でその結果データは確定的に保持
される。一方、命令が投機的に実行された場合はフラグ
が第2の状態でその結果データは暫定的に保持される。
【0044】請求項11に記載のコミット条件付き命令
の処理装置においては、条件命令が実行される前に、そ
のコミット条件がすでに成立しているか否かが判断さ
れ、そのコミット条件が未だ判明していない場合であっ
ても、その条件命令は投機的に実行され、その条件情報
が暫定的に保持される。したがって、通常の命令だけで
なく、条件命令も投機的に実行され得る。
【0045】請求項12に記載のコミット条件付き命令
の処理装置においては、命令が投機的に実行されたとき
に例外が発生した場合は、そのコミット時に例外処理が
行なわれる。したがって、無駄な例外処理が行なわれる
ことがなく、命令の処理速度はさらに向上する。
【0046】請求項13に記載のコミット条件付き命令
の処理装置においては、コミット時までの命令が再処理
され、再び例外が発生したときにその例外処理が行なわ
れる。したがって、常に正しい結果データが生成され
る。
【0047】請求項14に記載のコミット条件付き命令
の処理装置においては、コミット時までの命令が逐次的
な順序で処理されるので、命令の処理速度はさらに向上
する。
【0048】請求項15に記載のコミット条件付き命令
の処理装置においては、コミット時までの命令が最初か
ら再処理される。そして、再び例外が発生したときに将
来真偽レジスタ手段が参照され、その例外を引起こした
命令が将来逐次的なものになる場合はその例外処理が行
なわれる。このように、コミット時までの命令が再処理
され、再び例外が発生したとき必要に応じてその例外処
理が行なわれるので、プログラムのバイナリサイズの増
加が抑えられ、しかも正確な結果データが生成される。
【0049】請求項16に記載のコミット条件付き命令
の処理装置においては、命令が再処理される場合は、逐
次的な命令は再処理されずに投機的な命令だけが再処理
されるので、例外処理は正確に行われる。
【0050】請求項17に記載のコミット条件付き命令
の処理装置においては、例外の発生が一旦記憶された場
合はその内容が書換えられることはないので、例外の発
生はコミット時まで確実に記憶され続け、その例外処理
が確実に行なわれる。
【0051】
【実施例】次に、この発明に従った命令処理方法および
その装置の実施例を図面を参照して詳しく説明する。な
お、図中同一符号で示される部分は同一または相当部分
を示す。
【0052】[実施例1]図1は、この発明の第1実施
例によるマイクロプロセッサの構成を示すブロック図で
ある。
【0053】図1を参照して、このマイクロプロセッサ
は、4つのALU2Aないし2Dと、メモリ3と、実行
すべき命令のアドレスをメモリ3に与えるプログラムカ
ウンタ4と、プログラムカウンタ4をインクリメントす
る回路5と、メモリ3からフェッチされた命令を保持す
る命令レジスタ6と、命令レジスタ6に保持された命令
を解読し、ALU2Aないし2Dなどを制御するための
制御信号を生成する命令デコーダ7と、分岐先アドレス
を計算する回路9とを備える。
【0054】このマイクロプロセッサはさらに、図28
に示した従来のマイクロプロセッサと異なり、真偽レジ
スタ(TFレジスタ)10と、実行制御回路11と、シ
ーケンシャルレジスタファイル12と、シャドウレジス
タファイル13と、コミット制御回路14とを備える。
【0055】図2は、このマイクロプロセッサによって
処理され得る命令コードの構成を示す。図2を参照し
て、この命令コードは、命令操作部15およびコミット
条件部16から構成される。命令操作部15は、従来の
マイクロプロセッサによって処理され得る命令コードに
相当する部分である。コミット条件部16は、命令操作
部15に示された命令が実行されるために必要な1また
は2以上の条件を特定する部分である。
【0056】図3は、TFレジスタ10の構成を示す。
図3を参照して、このTFレジスタ10は、m個のエン
トリを備える。各エントリは有効性ビットTvおよび値
ビットTdの2ビットから構成され、ある1つの条件は
真であるという第1の条件情報、その条件は偽であると
いう第2の条件情報、およびその条件の真偽は未定であ
るという第3の条件情報のうちいずれかを保持する。
【0057】表1を参照して、有効性ビットTvが
「1」で、かつ値ビットTdが「1」の場合、その条件
は真であることを意味する。また、有効性ビットTvが
「1」で、値ビットTdが「0」の場合、その条件は偽
であることを意味する。さらに、有効性ビットTvが
「0」の場合、値ビットTdがいかなる値であってもそ
の条件の真偽は未定であることを意味する。
【0058】
【表1】
【0059】たとえば図2に示した命令コードは、TF
レジスタ10における第1エントリが「真」で、かつ第
2エントリも「真」の場合、レジスタr14が保持する
値とレジスタr15が保持する値とを加算し、その結果
データをレジスタr6に格納するという命令が本質的に
実行されるべきであるということをマイクロプロセッサ
に指示することができる。
【0060】図4は、コミット条件部16の構成を示
す。図4を参照して、このコミット条件部16は、TF
レジスタ10におけるエントリに対応してm個のエント
リを備える。各エントリは、TFレジスタ10と同様
に、有効性ビットCvおよび値ビットCdの2ビットか
ら構成される。
【0061】表2を参照して、有効性ビットCvが
「1」で、かつ値ビットCdが「1」の場合は、対応す
るTFレジスタ10におけるエントリが「真」であるこ
とが、その命令操作部15に示された命令が本質的に実
行されるための必要条件の1つであることを意味する。
換言すれば、そのことは、その命令操作部15に示され
た命令が本質的に実行されるための必要条件のすべてで
はないことを意味する。
【0062】
【表2】
【0063】また、有効性ビットCvが「1」で、かつ
値ビットCdが「0」の場合は、対応するTFレジスタ
10におけるエントリが「偽」であるということが、そ
の命令操作部15に示された命令が本質的に実行される
ための必要条件の1つであることを意味する。
【0064】さらに、有効性ビットCvが「0」の場合
は、値ビットCdに関係なく、しかも対応するTFレジ
スタ10におけるエントリが「真」、「偽」および「未
定」のいずれであっても、その命令操作部15に示され
た命令は常に実行されるべきものであるということを意
味する。
【0065】実行制御回路11は、コミット制御部16
のエントリとTFレジスタ10のエントリとを対応的に
比較し、その結果に応じてALU2Aないし2Dが確定
的に命令を実行するように制御するか、または暫定的に
命令を実行するように制御する。
【0066】図5は、この実行制御回路11の機能をさ
らに詳しく説明するための概念図である。
【0067】図5を参照して、この命令Iは3つのある
条件C1ないしC3の下で実行されるべきものである。
たとえば、第1の条件C1が「真」で、第2の条件C2
が「真」で、かつ第3の条件C3が「偽」の場合だけ命
令Iは本質的に実行されるとすると、コミット条件部1
6における第1のエントリは「真」を保持し、第2のエ
ントリは「真」を保持し、第3のエントリは「偽」を保
持している。
【0068】これらの条件C1ないしC3に対応するT
Fレジスタ10における第1ないし第3のエントリが
「真」または「偽」をそれぞれ保持していて、かつその
真偽と、第1ないし第3の条件C1ないしC3の真偽と
が対応的に一致している場合(A)、実行制御回路11
はALU2Aないし2Dが命令Iを確定的に実行するよ
うに制御する。この場合における命令Iを特に「逐次的
命令」という。
【0069】また、第1ないし第3の条件C1ないしC
3に対応するTFレジスタ10における第1ないし第3
のエントリが「未定」をそれぞれ保持している場合
(B)、実行制御回路11はALU2Aないし2Dが暫
定的に命令Iを実行するように制御する。この場合にお
ける命令Iを特に「投機的命令」という。
【0070】また、第1ないし第3の条件C1ないしC
3に対応するTFレジスタ10における第1ないし第3
のエントリのうちいくつかが「真」または「偽」をそれ
ぞれ保持していて、かつその真偽と第1ないし第3の条
件C1ないしC3の真偽とが対応的に一致している場合
(C)、実行制御回路11はALU2Aないし2Dが命
令Iを暫定的に実行するように制御する。この場合にお
ける命令Iも「投機的命令」という。
【0071】シーケンシャルレジスタファイル12およ
びシャドウレジスタファイル13は、それぞれ32個の
レジスタ30および31から構成される。シーケンシャ
ルレジスタファイル12は、従来のマイクロプロセッサ
におけるレジスタファイル1に相当するものである。
【0072】ただし、このシーケンシャルレジスタファ
イル12は、ALU2Aないし2Dが命令を実行して生
成した結果データを確定的に保持する。シャドウレジス
タファイル13は、ALU2Aないし2Dが命令を実行
して生成した結果データを暫定的に保持する。
【0073】コミット制御回路14は、シャドウレジス
タファイル13に格納された結果データに対応する命令
のコミット条件部16を保持する。コミット制御回路1
4はさらに、TFレジスタ10を常に監視していて、コ
ミット条件部16におけるエントリとTFレジスタ10
におけるエントリとを比較し、それらが対応的に一致し
ている場合、シャドウレジスタファイル13に格納され
た結果データをシーケンシャルレジスタファイル12へ
転送する。
【0074】たとえば図5を参照して、投機的命令Iが
実行され、その結果データが暫定的にシャドウレジスタ
ファイル13に格納された場合、命令Iのコミット条件
部16はコミット制御回路14の中に格納される。
【0075】そして、命令Iが実行されるために必要な
第1ないし第3の条件C1ないしC3に対応するTFレ
ジスタ10における第1ないし第3のエントリが「真」
または「偽」を保持した時点で、その真偽と命令Iが実
行されるために必要な第1ないし第3の条件C1ないし
C3の真偽とが対応的に一致している場合、コミット制
御回路14はシャドウレジスタファイル13に格納され
た結果データをシーケンシャルレジスタファイル12へ
転送する。
【0076】ここで、実行制御回路11、シーケンシャ
ルレジスタファイル12、シャドウレジスタファイル1
3およびコミット制御回路14の構成をさらに詳細に説
明する。
【0077】図6は、実行制御回路11の構成を示すブ
ロック図である。図6を参照して、実効制御回路11
は、コミット条件計算回路17と、インバータ18と、
ANDゲート19Aと、ORゲート19Bとを備える。
【0078】図7は、コミット条件計算回路17の構成
を示すブロック図である。図7を参照して、コミット条
件計算回路17は、比較回路20および21と、AND
ゲート22および23とを備える。なお、図7では、コ
ミット条件部16およびTFレジスタ10がそれぞれ2
つのエントリを備える場合に対応する、コミット条件計
算回路が示されている。
【0079】図8は、コミット条件計算回路17におけ
る比較回路20または21の構成を示す回路図である。
図8を参照して、比較回路20または21は、インバー
タ24と、NANDゲート25と、排他的NORゲート
26と、NANDゲート27および28とを備える。
【0080】比較回路20または21は、コミット条件
部16における1つのエントリとそれに対応するTFレ
ジスタ10における1つのエントリとを比較し、その結
果に応じて有効性ビットVi および値ビットDi を生成
する。
【0081】表3は、比較回路20または21の動作を
示す真理値表である。
【0082】
【表3】
【0083】表3を参照して、コミット条件部における
1つのエントリの有効性ビットCvが「0」の場合、そ
れに対応するTFレジスタ10における1つのエントリ
の有効性ビットTvおよび値ビットTdがいかなる値で
あっても、比較回路20または21は「1」の有効性ビ
ットVi と、「1」の値ビットDi とを生成する。
【0084】また、コミット条件部16における1つの
エントリの有効性ビットCvが「1」であり、かつそれ
に対応するTFレジスタ10における1つのエントリの
有効性ビットTvが「0」の場合、それらエントリの値
ビットCdおよびTdがいかなる値であっても、比較回
路20または21は「0」の有効性ビットVi を生成す
る。
【0085】さらに、コミット条件部16における1つ
のエントリの有効性ビットCvと、それに対応するTF
レジスタ10における1つのエントリの有効性ビットT
vとがそれぞれ「1」であり、それらの値ビットCdお
よびTdが互いに等しい場合、比較回路20または21
は「1」の有効性ビットVi と、「1」の値ビットD i
とを生成する。それらエントリの値ビットCdおよびT
dが異なる場合、比較回路20または21は、「1」の
有効性ビットVi と、「0」の値ビットDi とを生成す
る。
【0086】すべての比較回路20および21の有効性
ビットVi が「1」の場合だけ、コミット条件計算回路
17は「1」の有効性ビットVを生成する。また、すべ
ての比較回路20および21の値ビットDi が「1」の
場合だけ、コミット条件計算回路17は「1」の値ビッ
トDを生成する。
【0087】したがって、コミット条件計算回路17の
有効性ビットVが「0」の場合、「1」のシャドウレジ
スタ書込指定ビットSDが生成される。また、コミット
条件計算回路17の有効性ビットVおよび値ビットDが
ともに「1」の場合か、または有効性ビットVが「0」
の場合、「1」の命令有効性ビットIVが生成される。
【0088】以上詳述したところから明らかなように、
コミット条件部16におけるすべてのエントリが「Don
´t Care」を保持している場合(それに対応する命令操
作部における命令は無条件下で実行されるべきものであ
る場合)、実行制御回路11は「0」のシャドウレジス
タ書込指定ビットSDを生成するとともに、「1」の命
令有効性ビットIVを生成する。
【0089】また、コミット条件部16におけるいくつ
かのエントリが「真」または「偽」を保持していて、そ
れらに対応するTFレジスタにおけるエントリがそれぞ
れ「未定」を保持している場合、実行制御回路11は
「1」のシャドウレジスタ書込指定ビットSDを生成す
るとともに、「1」の命令有効性ビットIVを生成す
る。
【0090】さらに、コミット条件部16におけるいく
つかのエントリが「真」または「偽」を保持していて、
かつそれらに対応するTFレジスタ10におけるエント
リのうちいくつかが「真」または「偽」を保持してい
て、かつそれらコミット条件部16における真偽とTF
レジスタ10における真偽とが対応的に一致している場
合は、実行制御回路11は「0」のシャドウレジスタ書
込指定ビットSDを生成するとともに、「1」の命令有
効性ビットIVを生成する。
【0091】命令有効性ビットIVが「1」の場合、生
成された結果データはシーケンシャルレジスタファイル
12に格納される。また、シャドウレジスタ書込指定ビ
ットSDが「0」であり、かつ命令有効性ビットIVが
「0」の場合、命令は実行されないか、または命令が実
行されることによって生成された結果データはシーケン
シャルレジスタファイル12およびシャドウレジスタ1
3のいずれにも格納されない。さらに、シャドウレジス
タ書込指定ビットSDが「1」で、かつ命令有効性ビッ
トIVが「1」の場合、命令が実行されることによって
生成された結果データは暫定的にシャドウレジスタファ
イル13に格納される。
【0092】図9は、シーケンシャルレジスタファイル
12、シャドウレジスタファイル13およびコミット制
御回路14の構成を示すブロック図である。
【0093】図9を参照して、シーケンシャルレジスタ
ファイル12は、32個のシーケンシャルレジスタ30
から構成される。シャドウレジスタファイル13は、3
2個のシャドウレジスタ31から構成される。
【0094】コミット制御回路14は、32個のシーケ
ンシャルレジスタ30およびシャドウレジスタ31に対
応して32個のエントリから構成される。各エントリ
は、コミット条件記憶部32と、コミット条件計算回路
17と、ANDゲート33とを備える。
【0095】コミット条件記憶部32は、投機的命令が
実行され、その結果データがシャドウレジスタファイル
13におけるシャドウレジスタ31に暫定的に格納され
た場合、その命令に対応するコミット条件部16を保持
する。
【0096】コミット条件計算回路17は、前述した実
行制御回路11におけるコミット条件計算回路17と同
一で、コミット条件記憶部32に保持されたコミット条
件部16とTFレジスタ10とを比較し、その結果に応
じて有効性ビットVと値ビットDとを生成する。AND
ゲート33はコミット条件計算回路17の有効性ビット
Vと値ビットDとの論理積をシーケンシャルレジスタ3
0とシャドウレジスタ31との間に接続されたトランス
ファーゲート34のゲートに与える。
【0097】コミット条件計算回路17はTFレジスタ
10を常に監視していて、コミット条件記憶部32が保
持するコミット条件部16における真偽と、TFレジス
タ10における真偽とが対応的に一致したとき、「1」
の有効性ビットVと、「1」の値ビットDとを生成す
る。これによりトランスファーゲート34はオンにな
り、シャドウレジスタ31における結果データがシーケ
ンシャルレジスタ30に転送される。
【0098】次に、この第1実施例によるマイクロプロ
セッサの動作を図10に示したプログラムに従って説明
する。
【0099】図11は、このマイクロプロセッサを図1
0に示したプログラムに従って動作させるためのプログ
ラムリストである。
【0100】図11において、各行は複数の命令コード
から構成される。また、各命令コードは命令操作部15
およびコミット条件部16から構成される。同一行を構
成する命令コードの命令操作部15に示される命令は同
時に実行される。
【0101】なお、命令コードは互いに「;」によって
分離されている。また、命令操作部15およびコミット
条件部16は「?」によって分離されている。
【0102】コミット条件部16に示される「always」
はTFレジスタ10における真偽に関係なく、常にその
命令操作部15に示される命令I1、I2、C1または
C2が無条件で実行されるべきものであることを示す。
【0103】また、TF[i]は、TFレジスタ10に
おける第iエントリが「真」であるときだけその命令操
作部15に示された命令が実行されるべきものであるこ
とを示す。また、/TF[i]は、TFレジスタ10に
おける第iエントリが「偽」であるときだけその命令操
作部15に示される命令が実行されるべきものであるこ
とを示す。
【0104】さらに、たとえばTF[1]&T[2]
は、TFレジスタ10における第1および第2エントリ
がともに「真」であるときだけその命令操作部に示され
る命令が実行されるべきものであることを示す。また、
TF[1]&/TF[2]は、TFレジスタ10におけ
る第1エントリが「真」であり、かつ第2エントリが
「偽」であるときだけその命令操作部15に示される命
令が実行されるべきものであることを示す。
【0105】図11におけるブロックK1,L1〜L3
は、図10における基本ブロックK1、L1ないしL3
に対応する。そして、このブロックK1,L1〜L3か
ら3つの基本ブロックM1ないしM3が分岐している。
【0106】まず第1サイクルにおいて、第1行目の4
つの命令I1ないしI4が同時に実行される。
【0107】命令コード「always?I1」によれば、命
令I1は無条件で実行される。すなわち、この命令コー
ドのコミット条件部16におけるすべてのエントリは
「don´t care」であり、各エントリの有効性ビットC
vは「0」である。
【0108】したがって、コミット条件計算回路17
は、TFレジスタ10における各エントリの有効性ビッ
トTvおよびTdに関係なく、ともに「1」の有効性ビ
ットVおよび値ビットDを生成する。これにより実行制
御回路11は「0」のシャドウレジスタ書込指定ビット
SDと「1」の命令有効性ビットIVとを生成する。
【0109】そのため、シーケンシャルレジスタファイ
ル12におけるレジスタr10およびr11のデータが
加算され、その結果データはシーケンシャルレジスタフ
ァイル12におけるレジスタr2に確定的に格納され
る。
【0110】同時に命令コード「TF[1]?I2」に
よれば、この命令コードのコミット条件部16における
第1エントリは「真」であり、その有効性ビットCvお
よび値ビットCdはともに「1」である。また、コミッ
ト条件部16における第1エントリ以外の有効性ビット
Cvはすべて「0」である。
【0111】この時点で、TFレジスタ10における第
1エントリは「未定」であり、その有効性ビットTvは
「0」であるため、実行制御回路11は「1」のシャド
ウレジスタ書込指定ビットSDを生成し、かつ「0」の
命令有効性ビットIVを生成する。したがって、シーケ
ンシャルレジスタファイル12におけるレジスタr12
およびr13のデータは加算され、その結果データはシ
ャドウレジスタファイル13におけるレジスタr4に暫
定的に格納される。
【0112】このとき、命令レジスタ6に保持されてい
るコミット条件部16のデータは、その結果データが格
納されたシャドウレジスタr4に対応するコミット制御
回路14における第4エントリのコミット条件記憶部3
2に格納される。
【0113】同時に命令コード「/TF[1]?I3」
によれば、この命令コードのコミット条件部16におけ
る第1エントリは「偽」であり、その有効性ビットCv
は「1」である。前述したようにTFレジスタ10にお
ける第1のエントリは「未定」であるので、命令I3に
従ってシーケンシャルレジスタファイル12におけるレ
ジスタr12のデータからレジスタr13のデータが減
算され、その結果データがシャドウレジスタファイル1
3におけるシャドウレジスタr5に暫定的に格納され
る。
【0114】このときもまた、コミット条件部16のデ
ータはその結果データが格納されたシャドウレジスタr
5に対応するコミット制御回路14における第5エント
リのコミット条件記憶部32に格納される。
【0115】同時に命令コード「TF[1]&TF
[2]?I4」によれば、この命令コードのコミット条
件部16の第1および第2エントリはともに「真」であ
る。このとき、前述したようにTFレジスタ10におけ
る第1および第2エントリは「未定」であるので、命令
I4に従ってシーケンシャルレジスタファイル12にお
けるレジスタr14およびr15のデータは加算され、
その結果データはシャドウレジスタファイル13におけ
るレジスタr6に暫定的に格納される。
【0116】このときもまた、コミット条件部16のデ
ータはコミット制御回路14における第6エントリのコ
ミット条件記憶部32に格納される。
【0117】次いで第2サイクルにおいて、命令コード
「always?C1」に従って条件命令C1が常に実行され
る。すなわち、もしレジスタr2のデータがレジスタr
3のデータよりも小さければTFレジスタ10における
第1エントリが「真」にされ、そうでなければ「偽」に
される。
【0118】また同時に、命令コード「always?C2」
に従って、レジスタr4およびr5のデータが互いに等
しければTFレジスタ10における第2エントリが
「真」にされ、そうでなければ「偽」にされる。
【0119】このとき、コミット制御回路14はTFレ
ジスタ10を監視し、コミット条件記憶部32に格納さ
れたコミット条件部16とTFレジスタ10とを比較し
ている。
【0120】もしTFレジスタ10における第1エント
リが「真」であれば、コミット制御回路14における第
4エントリのコミット条件計算回路17はともに「1」
の有効性ビットVおよび値ビットDを生成する。これら
有効性ビットVおよび値ビットDの論理積がANDゲー
ト33によってトランスファーゲート34のゲートに与
えられ、このトランスファーゲート34はオンになる。
これによりシャドウレジスタファイル13におけるレジ
スタr4のデータがトランスファーゲート34を介して
対応するシーケンシャルレジスタファイル12における
レジスタr4へ転送される。
【0121】このとき、シャドウレジスタファイル13
におけるレジスタr5のデータは何らの処理もされな
い。一方、もしTFレジスタ10における第1エントリ
が「偽」であれば、シャドウレジスタファイル13にお
けるレジスタr5のデータがトランスファーゲート34
を介して対応するシーケンシャルレジスタファイル12
におけるレジスタr5へ転送される。
【0122】このとき、シャドウレジスタファイル13
におけるレジスタr4のデータは何らの処理もされな
い。
【0123】また、もしTFレジスタ10における第1
および第2エントリがともに「真」であれば、シャドウ
レジスタファイル13におけるレジスタr6のデータが
トランスファーゲート34を介して対応するシーケンシ
ャルレジスタファイル12におけるレジスタr6へ転送
される。
【0124】しかしながら、もしTFレジスタ10にお
ける第1および第2エントリのうち少なくとも一方が
「偽」であれば、シャドウレジスタファイル13におけ
るレジスタr6のデータは何らの処理もされない。
【0125】次いで第3サイクルにおいて、命令コード
「TF[1]&/TF[2]?J1」に従って、もしT
Fレジスタ10における第1エントリが「真」であり、
かつ第2エントリが「偽」であれば、無条件分岐命令J
1が実行される。すなわち、もし条件C1が「真」であ
り、かつ条件C2が「偽」であれば基本ブロックM2を
指定するアドレスがプログラムカウンタ4に格納され
る。
【0126】もしTFレジスタ10における第1エント
リが「偽」であれば、無条件分岐命令J2が実行され
る。すなわち、もし条件C1が「偽」であれば、基本ブ
ロックM1を指定するアドレスがプログラムカウンタ4
に格納される。
【0127】もしTFレジスタ10における第1および
第2エントリがともに「真」であれば、無条件分岐命令
J3が実行される。すなわち、もし条件C1およびC2
がともに「真」であれば、基本ブロックM3を指定する
アドレスがプログラムカウンタ4に格納される。
【0128】以上、この第1実施例によれば、本質的に
1または2以上の条件下で実行されるべき命令が、その
条件の真偽が判明する前にその命令が実行される。たと
えば図11に示したプログラムによれば、命令I2は条
件C1の下で実行されるべきにもかかわらず、その条件
C1の真偽が判明する前の第1サイクルにおいて投機的
に実行される。また、命令I3も条件C1の下で実行さ
れるべきにもかかわらず、その条件C1の真偽が判明す
る前の第1サイクルにおいて投機的に実行される。さら
に、命令I4は、条件C1およびC2の下で実行される
べきにもかかわらず、それら条件C1およびC2の真偽
が判明する前の第1サイクルにおいて投機的に実行され
る。
【0129】したがって、従来のマイクロプロセッサで
あれば第1サイクルにおいて実行することができない投
機的命令I2ないしI4が実行され、ALU2Aないし
2Dが有効に活用される。このため、命令の処理速度は
向上する。
【0130】なお、この第1実施例において、シーケン
シャルレジスタファイル12およびシャドウレジスタフ
ァイル13は、結果データを確定的または暫定的に保持
するデータ保持手段に相当する。
【0131】[実施例2]図12は、この発明の第2実
施例によるマイクロプロセッサの構成を示すブロック図
である。この第2実施例によるマイクロプロセッサは、
上記第1実施例によるマイクロプロセッサがパイプライ
ン化されたものである。
【0132】図12を参照して、このマイクロプロセッ
サは、本質的に1または2以上の条件下で実行されるべ
き複数の命令を4つの処理ステージS1ないしS4を経
て処理する。
【0133】このマイクロプロセッサは、上記第1実施
例によるマイクロプロセッサと同様に、4つのALU2
Aないし2Dと、メモリ3と、プログラムカウンタ4
と、インクリメント回路5と、命令レジスタ6と、命令
デコーダ7と、分岐先アドレス計算回路9と、TFレジ
スタ10と、実行制御回路11と、シーケンシャルレジ
スタファイル12と、シャドウレジスタファイル13
と、コミット制御回路14とを備える。
【0134】図13は、このマイクロプロセッサによる
動作を示すタイムチャートである。図12および図13
を参照して、第1処理ステージS1では、プログラムカ
ウンタ4によって指定された命令がメモリ3からフェッ
チされ、命令レジスタ6に格納される。
【0135】第2処理ステージS2では、命令レジスタ
6に格納された命令が命令デコーダ7によって解読さ
れ、かつ命令デコーダ7からの制御信号に応答してシー
ケンシャルレジスタファイル12またはシャドウレジス
タファイル13から所定のデータが読出される。
【0136】このマイクロプロセッサはさらに、命令デ
コーダ7によって生成されたALU2Aないし2Dを制
御するための信号を格納するためのレジスタ35と、シ
ーケンシャルレジスタファイル12またはシャドウレジ
スタファイル13から読出されたデータを格納するため
のレジスタ36および37とを備える。
【0137】第3処理ステージS3では、ALU制御信
号レジスタ35に格納された制御信号に従って、レジス
タ36および37に格納されたデータがALU2Aない
し2Dによって演算される。
【0138】第4処理ステージS4では、ALU2Aな
いし2Dによって生成された結果データがシーケンシャ
ルレジスタファイル12またはシャドウレジスタファイ
ル13に書込まれ、またALU2Aないし2Dによって
生成された真または偽の条件情報がTFレジスタ10に
書込まれ、さらにコミット条件部16におけるデータが
コミット制御回路14に書込まれる。
【0139】次に、コミット条件付きの命令をパイプラ
イン制御に従って処理する、このマイクロプロセッサ特
有の構成について説明する。
【0140】図12を参照して、このマイクロプロセッ
サはさらに、実行制御回路11と、コミット条件レジス
タ38と、第1の有効性レジスタ39と、第1の書込指
定レジスタ40とを備える。
【0141】実行制御回路11は上記第1実施例におけ
るものと同一で、コミット条件部16とTFレジスタ1
0とを比較し、その結果に従って命令有効性ビットIV
とシャドウレジスタ書込指定ビットSDとを生成する。
【0142】コミット条件レジスタ38は、ALU2A
ないし2Dにおいて実行中の命令に対応するコミット条
件部16を保持する。第1の有効性レジスタ39は、実
行制御回路11によって生成された、その命令に対応す
る命令有効性ビットIVを保持する。第1の書込指定レ
ジスタ40は、実行制御回路11によって生成された、
その命令に対応するシャドウレジスタ書込指定ビットS
Dを保持する。
【0143】このマイクロプロセッサはさらに、コミッ
ト条件計算回路41と、有効性計算回路42と、書込指
定計算回路43と、第2の有効性レジスタ44と、第2
の書込指定レジスタ45とを備える。
【0144】コミット条件計算回路41は図7に示した
コミット条件計算回路17と同一で、コミット条件レジ
スタ38に格納されたコミット条件部16とTFレジス
タ10とを比較し、その結果に従って有効性ビットVと
値ビットDとを生成する。
【0145】図14は、有効性計算回路42の構成を示
すブロック図である。図14を参照して、この有効性計
算回路42は、コミット条件計算回路41からの有効性
ビットVおよび値ビットDを受けるANDゲート46
と、ANDゲート46の出力を受けるとともに、その有
効性ビットVをインバータ47を介して受けるORゲー
ト48と、ORゲート48の出力と第1の有効性レジス
タ39からの命令有効性ビットIVとを受けるANDゲ
ート49とを備える。
【0146】次の表4は、有効性計算回路42の機能を
示す。
【0147】
【表4】
【0148】表4を参照して、コミット条件計算回路4
1がともに「1」の有効性ビットVおよび値ビットDを
生成した場合、ORゲート48の出力は「1」になるの
で、第1の有効性レジスタ39に格納された命令有効性
ビットIVはANDゲート49を介して第2の有効性レ
ジスタ44へ転送される。
【0149】また、コミット条件計算回路41が「1」
の有効性ビットVと「0」の値ビットDとを生成した場
合、ORゲート48の出力は「0」になるので、「0」
の命令有効性ビットIVが第2の有効性レジスタ44に
格納される。
【0150】さらに、コミット条件計算回路41が
「0」の有効性ビットVを生成した場合、ORゲート4
8の出力は「1」になるので、第1の有効性レジスタ3
9に格納された命令有効性ビットIVはANDゲート4
9を介して第2の有効性レジスタ44へ転送される。
【0151】図15は、書込指定計算回路43の構成を
示すブロック図である。図15を参照して、この書込指
定計算回路43は、コミット条件計算回路41からの有
効性ビットVを受けるインバータ50と、インバータ5
0の出力と第1の書込指定レジスタ40からのシャドウ
レジスタ書込指定ビットSDとを受けるANDゲート5
1とを備える。
【0152】次の表5は、この書込指定計算回路43の
機能を示す。
【0153】
【表5】
【0154】表5を参照して、コミット条件計算回路4
1が「1」の有効性ビットVを生成した場合、インバー
タ50の出力は「0」になるので、「0」のシャドウレ
ジスタ書込指定ビットSDが第2の書込指定レジスタ4
5に格納される。
【0155】また、コミット条件計算回路41が「0」
の有効性ビットVを生成した場合、インバータ50の出
力は「1」になるので、第1の書込指定レジスタ40に
格納されたシャドウレジスタ書込指定ビットSDはAN
Dゲート51を介して第2の書込指定レジスタ45へ転
送される。
【0156】このマイクロプロセッサはさらに、レジス
タファイル書込制御回路52を備える。このレジスタフ
ァイル書込制御回路52は、第2の有効性レジスタ44
に格納された命令有効性ビットIVが「1」で、かつ第
2の書込指定レジスタ45に格納されたシャドウレジス
タ書込指定ビットSDが「0」の場合、その命令に従っ
てALU2Aないし2Dが生成した結果データはシーケ
ンシャルレジスタファイル12に書込まれるように制御
する。
【0157】また、第2の有効性レジスタ44に格納さ
れた命令有効性ビットIVが「1」で、かつ第2の書込
指定レジスタ45に格納されたシャドウレジスタ書込指
定ビットSDが「1」の場合、このレジスタファイル書
込前記回路52は、その命令に従ってALU2Aないし
2Dが生成した結果データはシャドウレジスタファイル
13に書込まれるように制御する。
【0158】さらに、第2の有効性レジスタ44に格納
された命令有効性ビットIVが「0」の場合、このレジ
スタファイル書込制御回路52は、その命令に従ってA
LU2Aないし2Dが生成した結果データはシーケンシ
ャルレジスタファイル12およびシャドウレジスタファ
イル13のいずれにも書込まれないように制御する。
【0159】次に、この第2実施例によるマイクロプロ
セッサの動作について図12および図13を参照して説
明する。
【0160】まず第1クロックで、第1処理ステージS
1におけるメモリ3から最初の命令がフェッチされ、命
令レジスタ6に格納される。
【0161】次いで第2クロックで、第2処理ステージ
S2における命令デコーダ7によって命令レジスタ6に
格納された最初の命令が解読されるとともに、その命令
デコーダ7からの制御信号に従ってシーケンシャルレジ
スタファイル12またはシャドウレジスタファイル13
におけるデータが読出され、レジスタ36または37に
格納される。また、第2処理ステージS2における実行
制御回路11によってその第1の命令に対応する命令有
効性ビットIVおよびシャドウレジスタ書込指定ビット
SDが生成され、第1の有効性レジスタ39および第1
の書込指定レジスタ40にそれぞれ格納される。
【0162】すなわち、コミット条件部16におけるエ
ントリの真偽とTFレジスタ10におけるエントリの真
偽とが対応的に一致している場合、この実行制御回路1
1は、この第1の命令に従って後に生成されることにな
る結果データはシーケンシャルレジスタファイル12に
格納されるべきものであるという処置情報を第3処理ス
テージS3に移行するときに生成する。
【0163】また、コミット条件部16におけるエント
リに対応するTFレジスタ10におけるエントリのうち
少なくとも1つが「未定」で、それ以外のエントリのう
ちコミット条件部16におけるエントリに対応するTF
レジスタ10におけるエントリが「真」または「偽」
で、かつその真偽とコミット条件部16におけるエント
リの真偽とが対応的に一致している場合、実行制御回路
11は、この第1の命令に従って後に生成されることに
なる結果データはシャドウレジスタファイル13に格納
されるべきものであるという処置情報を第3の処理ステ
ージS3に移行するときに生成する。
【0164】さらに、コミット条件部16におけるエン
トリの真偽とTFレジスタ10におけるエントリの真偽
とが対応的に一致していない場合、実行制御回路11
は、この第1の命令に従って後に生成されることになる
結果データはシーケンシャルレジスタファイル12およ
びシャドウレジスタファイル13のいずれにも格納され
るべきものではないという処置情報を第3の処理ステー
ジS3に移行するときに生成する。
【0165】これと同時に、第1の処理ステージS1で
はメモリ3から第2の命令がフェッチされ、命令レジス
タ6に格納される。
【0166】次いで第3クロックで、ALU制御信号レ
ジスタ35に格納された制御信号に従って、第3処理ス
テージS3におけるALU2Aないし2Dは第1の命令
を実行する。また、第3処理ステージS3におけるコミ
ット条件計算回路41は、コミット条件レジスタ38に
格納された第1の命令に対応するコミット条件部16と
TFレジスタ10とを比較し、第1の命令のための有効
性ビットVおよび値ビットDを生成する。
【0167】第3処理ステージS3における有効性計算
回路42はコミット条件計算回路41からの有効性ビッ
トVおよび値ビットDに従って、第1の有効性レジスタ
39に格納された命令有効性ビットIVを第2の有効性
レジスタ44へそのまま転送するか、またはその命令有
効性ビットIVを変更する。
【0168】また、書込指定計算回路43は、コミット
条件計算回路41からの有効性ビットVに従って、第1
の書込指定レジスタ40に格納されたシャドウレジスタ
書込指定ビットSDを第2の書込指定レジスタ45へそ
のまま転送するか、またはそのシャドウレジスタ書込指
定ビットSDを変更する。
【0169】たとえば第1の有効性レジスタ39に
「1」の命令有効性ビットIVが格納され、かつ第1の
書込指定レジスタ40に「0」のシャドウレジスタ書込
指定ビットSDが格納されている場合(第1の命令は有
効で、かつその結果データはシーケンシャルレジスタフ
ァイル12に書込まれるべきということが既に判明して
いる場合)、コミット条件計算回路41はともに「1」
の有効性ビットVおよび値ビットDを常に生成するた
め、「1」の命令有効性ビットIVはそのまま第2の有
効性レジスタ44に格納されるとともに、「0」のシャ
ドウレジスタ書込指定ビットSDは「0」にされる。結
果的に、シャドウレジスタ書込指定ビットSDはそのま
ま第2の書込指定レジスタ45に格納される。
【0170】また、「0」の命令有効性ビットIVが第
1の有効性レジスタ39に格納され、かつ「0」のシャ
ドウレジスタ書込指定ビットSDが第1の書込指定レジ
スタ40に格納されている場合(第1の命令は既に無効
と判明している場合)、コミット条件計算回路41は
「1」の有効性ビットVと「0」の値ビットDとを常に
生成するため、「0」の命令有効性ビットIVおよび
「0」のシャドウレジスタ書込指定ビットSDはともに
「0」にされる。結果的に、命令有効性ビットIVおよ
びシャドウレジスタ書込指定ビットSDはともに、その
まま第2の有効性レジスタ44および第2の書込指定レ
ジスタ45にそれぞれ格納される。
【0171】また、「1」の命令有効性ビットIVが第
1の有効性レジスタ39に格納され、かつ「1」のシャ
ドウレジスタ書込指定ビットDSが第1の書込指定レジ
スタ40に格納されている場合(第1の命令に従って生
成されることになる結果データはシャドウレジスタファ
イル13に格納されるべき場合)は、第3処理ステージ
S3において、その第1の命令に対応するコミット条件
は満たされていることが判明する場合、そのコミット条
件は満たされていないことが判明する場合、およびその
コミット条件が満たされているか否かは未だ判明しない
場合のいずれかが起こり得る。
【0172】コミット条件は満たされていることが判明
した場合(コミット条件計算回路41がともに「1」の
有効性ビットVおよび値ビットDを生成した場合)、
「1」の命令有効性ビットIVはそのまま第2の有効性
レジスタ44に格納され、「1」のシャドウレジスタ書
込指定ビットSDは「0」に変更され、第2の書込指定
レジスタ45に格納される。
【0173】また、コミット条件は満たされていないこ
とが判明した場合(コミット条件計算回路41が「1」
の有効性ビットVと「0」の値ビットDとを生成した場
合)、ともに「1」の命令有効性ビットIVおよびシャ
ドウレジスタ書込指定ビットSDはともに「0」に変更
され、第2の有効性レジスタ44および第2の書込指定
レジスタ45にそれぞれ格納される。
【0174】さらに、コミット条件が満たされているか
否かは未だ判明していない場合(コミット条件計算回路
41が「0」の有効性ビットVを生成した場合)、とも
に「1」の命令有効性ビットIVおよびシャドウレジス
タ書込指定ビットSDはそのまま第2の有効性レジスタ
44および第2の書込指定レジスタ45にそれぞれ格納
される。
【0175】またこれと同時に、命令レジスタ6にフェ
ッチされた第2の命令は命令デコーダ7によって解読さ
れ、その命令デコーダ7からの制御信号に従ってシーケ
ンシャルレジスタファイル12またはシャドウレジスタ
ファイル13におけるデータが読出される。
【0176】さらにこれと同時に、第3の命令がメモリ
3からフェッチされる。次いで第4クロックで、第1の
命令に従ってALU2Aないし2Dが生成した結果デー
タは、レジスタファイル書込制御回路52からの制御信
号に従って、シーケンシャルレジスタファイル12およ
びシャドウレジスタファイル13のいずれかに書込まれ
る。すなわち、命令有効性ビットIVが「1」で、かつ
シャドウレジスタ書込指定ビットSDが「0」の場合、
レジスタファイル書込制御回路52は、結果データがシ
ーケンシャルレジスタファイル12に書込まれるように
制御する。
【0177】また、命令有効性ビットIVが「1」で、
かつシャドウレジスタ書込指定ビットSDが「1」の場
合、レジスタファイル書込制御回路52は、その結果デ
ータがシャドウレジスタファイル13に書込まれるよう
に制御する。
【0178】さらに、命令有効性ビットIVが「0」の
場合、レジスタファイル書込制御回路52は、その結果
データがシーケンシャルレジスタファイル12およびシ
ャドウレジスタファイル13のいずれにも書込まれない
ように制御する。
【0179】なお、結果データがシャドウレジスタファ
イル13に書込まれる場合は、その第1の命令に対応す
るコミット条件部16がコミット制御回路14における
コミット条件記憶部32に格納される。
【0180】またこれと同時に、第2の命令がALU2
Aないし2Dによって実行され、その命令有効性ビット
IVおよびシャドウレジスタ書込指定ビットSDが第2
の有効性レジスタ44および第2の書込指定レジスタ4
5にそれぞれ格納される。
【0181】またこれと同時に、第3の命令が命令デコ
ーダ7によって解読され、その命令デコーダ7からの制
御信号に従ってシーケンシャルレジスタファイル12ま
たはシャドウレジスタファイル13におけるデータが読
出される。
【0182】さらにこれと同時に、第4の命令がメモリ
3からフェッチされる。以下、第2ないし第4の命令は
第1の命令と同様に処理される。
【0183】なお、この第2実施例において、第2処理
ステージS2における実行制御回路11は情報生成手段
に相当する。また、コミット条件計算回路41、有効性
計算回路42および書込指定計算回路43は、情報変更
手段に相当する。さらに、レジスタファイル書込制御回
路52は書込制御手段に相当する。
【0184】[実施例3]上記第1実施例によるマイク
ロプロセッサは、たとえば図10に示したプログラムに
従うと、条件命令C1を実行する前に、条件命令C2を
実行することができる。しかしながら、このプログラム
の意味上は、条件命令C1が実行された後に、条件命令
C2は実行されるべきものである。
【0185】このプログラムの意味にしたがって、条件
命令C1を実行した後でなければ条件命令C2を実行す
ることができないように構成されたマイクロプロセッサ
であってもよい。
【0186】図16は、この第3実施例によるマイクロ
プロセッサのためのプログラムの一例を示すプログラム
リストである。なお、命令I1ないしI4、C1および
C2、J1ないしJ3は、図11に示されるものと同一
である。
【0187】ここで特徴的なところは、条件命令C2が
条件命令C1の実行結果に依存して実行されている点で
ある。すなわち、条件命令C2はTFレジスタ10にお
ける第1エントリが「真」であるときだけ実行される。
このTFレジスタ10における第1エントリの真偽は、
その1つの前のサイクルにおいて条件命令C1が実行さ
れることによって決定される。
【0188】したがって、条件命令C1が実行され、T
Fレジスタ10における第1エントリに「真」が書込ま
れた場合だけ条件命令C2が実行され、これによりTF
レジスタ10における第2エントリに「真」または
「偽」が書込まれる。
【0189】換言すれば、上記第1実施例における第2
エントリは単に条件命令C2の実行結果を含むだけであ
ったのに対し、この第3実施例における第2エントリ
は、条件命令C2の実行結果だけでなく、第1エントリ
が「真」であるということを暗に含んでいる。
【0190】このため、上記第1実施例における「TF
[0]&TF[2]」という条件は単に「TF[2]」
と表わされる。
【0191】図17は、第3実施例によるマイクロプロ
セッサの実行制御回路およびコミット制御回路における
コミット条件計算回路の構成を示すブロック図である。
【0192】図17を参照して、このコミット条件計算
回路53は、比較回路20と、デコーダ54と、2つの
セレクタ55および56とを備える。このコミット条件
計算回路53はコミット制御部58とTFレジスタ10
とを比較し、その結果に応じて有効性ビットVおよび値
ビットDを生成する。
【0193】コミット条件部58は、有効性ビットと、
値ビットと、比較されるべきTFレジスタ10のエント
リ番号を示すビットとから構成される。
【0194】TFレジスタ10は上記第1実施例におけ
るものと同一である。ただし、図16に示したプログラ
ムの場合、最大で2つの条件を超えて命令が実行される
ので、TFレジスタ10は2つのエントリを持っていれ
ば十分である。
【0195】一方、コミット条件計算回路53における
比較回路20は上記第1実施例におけるものと同一であ
る。また、デコーダ54はTFレジスタ10のエントリ
番号を解読し、所定の選択信号を生成する。セレクタ5
5は、デコーダ54からの選択信号に応答してTFレジ
スタ10における第1または第2エントリの有効性ビッ
トを選択し、その選択された有効性ビットTvを比較回
路20に与える。セレクタ56は、デコーダ54からの
選択信号に応答してTFレジスタ10における第1また
は第2エントリの値ビットを選択し、その選択された値
ビットTdを比較回路20に与える。
【0196】たとえば命令コード「TF[1]?I2」
によれば、命令I2はTFレジスタ10における第1エ
ントリが「真」の場合だけ実行されるべきものである。
この場合、コミット条件部58のTFレジスタ10のエ
ントリ番号を示すビットは第1エントリを特定する。こ
れにより、TFレジスタ10における第1エントリの有
効性ビットTvおよび値ビットTdがセレクタ55およ
び56によってそれぞれ選択され、比較回路20に与え
られる。
【0197】また、命令コード「TF[2]?I4」に
よれば、コミット条件部58におけるTFレジスタ10
のエントリ番号を示すビットはTFレジスタ10におけ
る第2エントリを特定する。これにより、TFレジスタ
10における第2エントリの有効性ビットTvおよび値
ビットTdがセレクタ55および56によってそれぞれ
選択され、比較回路20に与えられる。
【0198】この第3実施例によれば、コミット条件部
58、コミット条件計算回路53が上記第1実施例のも
のと比べて簡略化される。
【0199】なお、この第3実施例によるマイクロプロ
セッサを上記第2実施例のようにパイプライン化しても
よい。
【0200】[実施例4]図18は、この発明の第4実
施例によるマイクロプロセッサの構成を示すブロック図
である。
【0201】図18を参照して、このマイクロプロセッ
サは、上記第1実施例と異なり、TFレジスタ10の代
わりに、シーケンシャルTFレジスタ60と、シャドウ
TFレジスタ61と、TFレジスタ用コミット制御回路
62とを備える。
【0202】シーケンシャルTFレジスタ60は上記第
1実施例におけるTFレジスタ10に相当し、ある条件
が「真」であるか、「偽」であるか、またはその真偽は
「未定」であるかの3つの情報のうちいずれかを確定的
に保持する1または2以上のエントリを備える。
【0203】シャドウTFレジスタ61は、ある条件が
「真」であるか、「偽」であるか、またはその真偽は
「未定」であるかの3つの情報のうちいずれかを暫定的
に保持する1または2以上のエントリを備える。
【0204】TFレジスタ用のコミット制御回路62
は、「未定」のコミット条件を持つ条件命令が実行され
た場合、そのコミット条件を保持するとともに、そのコ
ミット条件の真偽と、それに対応するシーケンシャルT
Fレジスタ10の真偽とが一致した時点で、シャドウT
Fレジスタ61に格納された「真」または「偽」をシー
ケンシャルTFレジスタ60へ転送する。
【0205】なお、このTFレジスタ用のコミット制御
回路62は、上記第1実施例におけるコミット制御回路
14とほぼ同じ構成である。
【0206】図19は、このマイクロプロセッサのため
のプログラムの一例を示すプログラムリストである。
【0207】このプログラムに従うと、第2サイクルに
おいて命令コード「TF[1]?C2」が処理される。
この命令コード「TF[1]?C2」によれば、条件命
令C2はシーケンシャルTFレジスタ60における第1
エントリが「真」である場合だけ実行されるべきもので
ある。
【0208】しかしながら、この第1エントリの真偽は
次の第3サイクルにおける命令コード「always?C1」
が処理されたとき初めて決定される。
【0209】したがって、この第2サイクルの時点では
シーケンシャルTFレジスタ60における第1エントリ
は「未定」であるので、条件命令C2は暫定的に実行さ
れ、その真偽はシャドウTFレジスタ61における第2
エントリに格納される。これと同時に、コミット条件
「TF[1]」はTFレジスタ用のコミット制御回路6
2におけるコミット条件記憶部に格納される。
【0210】次いで第3サイクルにおける命令コード
「always?C1」によれば、条件命令C1は常に実行さ
れ、その真偽はシーケンシャルTFレジスタ60におけ
る第1エントリに格納される。
【0211】TFレジスタ用のコミット制御回路62は
常にシーケンシャルTFレジスタ60を監視している。
そのため、このTFレジスタ用のコミット制御回路62
におけるコミット条件記憶部に保持されたコミット条件
の真偽と、シーケンシャルTFレジスタ60における第
1エントリの真偽とが一致している場合は、シャドウT
Fレジスタ61における第2エントリに格納されている
条件命令C2の真偽がシーケンシャルTFレジスタ60
における第2エントリに転送される。
【0212】この第4実施例によれば、コミット条件が
「未定」の単純な演算命令I2ないしI3だけでなく、
コミット条件が「未定」の条件命令C2をも投機的に実
行することができる。
【0213】なお、この第4実施例において、シーケン
シャルTFレジスタ60およびシャドウTFレジスタ6
1は、真偽レジスタ手段に相当する。また、コミット制
御回路14は、第1のコミット制御手段に相当する。ま
た、TFレジスタ用コミット制御回路62は第2のコミ
ット制御手段に相当する。
【0214】[実施例5]図20は、この発明の第5実
施例によるマイクロプロセッサにおけるレジスタファイ
ルの構成を示す図である。
【0215】図20を参照して、このマイクロプロセッ
サは、32個のレジスタRA1ないしRA32から構成
される第1のレジスタファイル65と、32個のレジス
タRB1ないしRB32から構成される第2のレジスタ
ファイル66と、32個のフラグF1ないしF32とを
備える。
【0216】この第5実施例によれば、コミット条件が
「未定」であるため、その命令が投機的に実行されたと
きの結果データは第1のレジスタファイル65における
1つのレジスタRA1〜RA32に暫定的に格納され、
かつそれに対応するフラグF1〜F32が「0」にされ
る。
【0217】そして、そのコミット条件の真偽が判明
し、その真偽とTFレジスタにおける真偽とが対応的に
一致した時点で、そのフラグは「1」にされる。
【0218】上記第1実施例のようにシャドウレジスタ
ファイル13からシーケンシャルレジスタファイル12
へ物理的にデータを転送しなくても、この第5実施例の
ようにフラグを反転することによってレジスタファイル
65および66を投機的状態から逐次的状態に変更する
ようにしてもよい。
【0219】[実施例6]上記第1ないし第5実施例に
よるマイクロプロセッサは、投機的な命令を実行するこ
とができるが、投機的な命令が実行される時点ではその
結果データが有効かどうかは不明であるため、投機的な
命令が実行されたときに例外が発生した場合、その例外
を処理すべきかどうかという問題が生じる。
【0220】最も簡単な方法として、投機的な命令が例
外を引き起こしたときも、逐次的な命令が例外を引き起
こしたときと同様に、その例外を引き起こした時点でそ
の例外を処理するという方法が考えられる。
【0221】この方法は非常に簡単ではあるが、命令の
処理効率を著しく低下させるという問題がある。たとえ
ば前述したページフォールトという例外が引き起こされ
た場合、それに対応する例外処理を行なうには数十万サ
イクルが必要とされる。しかしながら、このページフォ
ールトを引き起こした投機的な命令が実行されて生成さ
れた結果データが不必要な場合、この数十万サイクルは
全く無駄になる。
【0222】図21は、このような問題を解決するため
になされた、この発明の第6実施例によるマイクロプロ
セッサの構成を示すブロック図である。
【0223】図21を参照して、このマイクロプロセッ
サは、上記第1実施例によるマイクロプロセッサと同様
に、4つのALU2Aないし2Dと、メモリ3と、プロ
グラムカウンタ4と、インクリメント回路5と、命令レ
ジスタ6と、命令デコーダ7と、分岐先アドレス計算回
路9と、TFレジスタ10と、実行制御回路11と、シ
ーケンシャルレジスタファイル12と、シャドウレジス
タファイル13と、コミット制御回路14とを備える。
【0224】このマイクロプロセッサはさらに、上記第
1実施例によるマイクロプロセッサと異なり、例外プロ
グラムカウンタ(EPC;Excepted Program Counter)
70と、セレクタ71と、EP(Excepted Pending) 回
路72とを備える。
【0225】EPC70は、メモリ3からフェッチされ
た命令が例外を引き起こしたとき、そのプログラムカウ
ンタ4に格納されているアドレスを記憶する。セレクタ
71は、ALU2Aないし2Dによって生成された結果
データか、またはEPC70に格納されたアドレスを選
択してシーケンシャルレジスタファイル12か、または
シャドウレジスタファイル13へ供給する。なお、EP
C70およびセレクタ71は従来のマイクロプロセッサ
にも備えられている。
【0226】EP回路72は、投機的な命令が例外を引
き起こしたことを示す例外発生信号SEに応答して、そ
の投機的な命令が例外を引き起こしたことを記憶すると
ともに、所定の時点でその例外を処理すべきであること
を示す例外処理信号RSEを生成する。
【0227】この例外発生信号SEは、その例外の種類
に応じて様々な箇所で生成される。たとえば例外がペー
ジフォールトであれば、例外発生信号SEはメモリ3の
周辺回路によって生成される。また、例外がオーバフロ
ーであれば、例外発生信号SEはALU2Aないし2D
によって生成される。また、定義されていない命令がフ
ェッチされた場合であれば、例外発生信号SEは命令デ
コーダ7によって生成される。
【0228】図22は、シーケンシャルレジスタファイ
ル12、シャドウレジスタファイル13、コミット制御
回路14およびEP回路72の構成を示すブロック図で
ある。
【0229】シーケンシャルレジスタファイル12、シ
ャドウレジスタファイル13およびコミット制御回路1
4は上記第1実施例におけるものとほぼ同一構成であ
る。
【0230】EP回路72は、シーケンシャルレジスタ
ファイル12、シャドウレジスタファイル13およびコ
ミット制御回路14と同様に、32個のエントリから構
成される。このEP回路72における各エントリは、ラ
ッチ回路74と、ANDゲート75と、NチャネルMO
Sトランジスタ76とを備える。
【0231】このラッチ回路74は、入力端子IN、イ
ネーブル端子Eおよびリセット端子Rを備え、その入力
端子INへバッファ77を介して与えられた例外発生信
号SEに応答して「1」または「0」を格納する。ラッ
チ回路74の出力信号はそれ自身のイネーブル端子Eへ
与えられる。したがって、Hレベルの例外発生信号SE
がバッファ77を介してラッチ回路74の入力端子IN
へ与えられると、このラッチ回路74に「1」が設定さ
れる。このとき、Hレベルの出力信号が負論理のイネー
ブル端子Eへ与えられるので、新たに例外発生信号SE
が与えられてもこのラッチ回路74が書換えられること
はない。
【0232】ラッチ回路74の出力信号およびコミット
制御回路14におけるANDゲート33の出力信号はA
NDゲート75の入力端子へそれぞれ与えられ、このA
NDゲート75の出力信号はNチャネルMOSトランジ
スタ76のゲートへ与えられる。
【0233】ここで、32個のエントリにおける32個
のNチャネルMOSトランジスタ76、プルアップ抵抗
79およびインバータ80によりORゲート81が構成
される。
【0234】また、コミット条件記憶部32もまた入力
端子INおよびイネーブル端子Eを備え、投機的命令が
実行されたとき、バッファ78を介してその入力端子I
Nへ与えられたそのコミット条件部16を記憶する。ラ
ッチ回路74の出力信号は、コミット条件記憶部32の
イネーブル信号Eへも与えられている。したがって、例
外が発生し、ラッチ回路74に「1」が格納されると、
コミット条件記憶部32も書換えられることができな
い。
【0235】次に、この第6実施例によるマイクロプロ
セッサの動作について説明する。図23は、以上詳述し
た第6実施例によるマイクロプロセッサの動作の概要を
示すタイミングチャートである。
【0236】逐次的命令および投機的命令をともに含む
主プログラムに従って様々な命令が順次処理される。こ
のとき、投機的命令が実行されて例外が発生したとして
もその例外処理はコミット点まで行なわれない。
【0237】また、各コミット点に対応して、ソフトウ
ェアによって作成されたリカバリコードが予め用意され
ている。そして、このコミット点に到達すると、このリ
カバリコードの最初の命令から実行される。
【0238】このリカバリコードは、主プログラムの中
からコミット点以前の投機的命令だけが抽出されて構成
されている。しかもそれらの投機的命令は逐次的に配列
され、逐次的命令に変更されている。そして、以前に例
外を引き起こした投機的命令が実行されると、以前と同
様に再び例外が発生する。しかしながら、今度は直ちに
所定の例外ルーチンに従ってその例外処理が実行され
る。そしてリカバリコードにおける最後の命令が実行さ
れると、主プログラムに戻りそのコミット点の次の命令
から処理が再開される。
【0239】次に、この第6実施例によるマイクロプロ
セッサの動作をより詳細に説明する。
【0240】たとえば図11に示されるプログラムが実
行される場合において、コミット条件付きの命令TF
[1]?I2が例外を引き起こすと仮定する。
【0241】まず第1サイクルにおいて、逐次的命令I
1が実行され、レジスタr10に格納されている値とレ
ジスタr11に格納されている値とが加算され、その結
果データがシーケンシャルレジスタファイル12におけ
る第2エントリのシーケンシャルレジスタr2に格納さ
れる。
【0242】またこれと同時に、投機的命令I2が実行
される。この命令I2のコミット条件TF[1]に対応
するTFレジスタ10における第1エントリは「未定」
であるので、この命令I2は投機的に実行される。これ
により、レジスタr12に格納されている値とレジスタ
r13に格納されている値とが加算され、その結果デー
タがシャドウレジスタファイル13における第4エント
リのシャドウレジスタr4に格納される。
【0243】この命令I2は例外を引き起こすので、H
レベルの例外発生信号SEがバッファ77を介してEP
回路72における第4エントリのラッチ回路74に与え
られる。これにより、第4エントリのラッチ回路74に
は「1」が書込まれる。なお、この命令I2は例外を引
き起こしているので、その結果データは任意の値になっ
ている。
【0244】またこれと同時に、コミット条件付きの命
令I3およびI4が実行される。これらの命令I3およ
びI4はともに投機的であるので、その結果データはシ
ャドウレジスタファイル13における第5および第6エ
ントリのシャドウレジスタ31に格納される。
【0245】しかしながら、これらの命令I3およびI
4は例外を引き起こさないので、Lレベルの例外発生信
号SEがEP回路72における第5および第6エントリ
のラッチ回路74に与えられる。これにより、これらの
ラッチ回路74には「0」が格納される。
【0246】次いで第2サイクルにおいては、逐次的な
条件命令C1およびC2が同時に実行される。ここで、
もし第2エントリのシーケンシャルレジスタr2に格納
されている値が第3エントリのシーケンシャルレジスタ
r3に格納されている値よりも小さければ、TFレジス
タ10における第1エントリに「真」が設定される。こ
れにより、コミット制御回路14における第4エントリ
のコミット条件記憶部32に格納されている内容とTF
レジスタ10に格納されている内容とが一致すると、そ
のANDゲート33の出力信号がHレベルになる。
【0247】そのため、第4エントリにおけるトランス
ファゲート34がオンになり、第4エントリのシャドウ
レジスタ31に格納されている命令I2の結果データが
第4エントリのシーケンシャルレジスタ30へ転送され
る。これと同時に、EP回路72における第4エントリ
のANDゲート75が導通状態になり、そのラッチ回路
74からの出力信号がNチャネルMOSトランジスタ7
6のゲートへ与えられる。
【0248】第1サイクルにおいて命令I2が実行され
たとき例外が発生しているので、EP回路72における
第4エントリのラッチ回路74には「1」が設定されて
いる。したがって、ラッチ回路74の出力信号はHレベ
ルになり、NチャネルMOSトランジスタ76はオンに
なる。そのため、例外処理信号RSEはHレベルにな
る。このHレベルの例外実行信号RSEに応答して、例
外ハンドラの開始アドレスがプログラムカウンタ4に設
定される。これにより例外処理が実行される。
【0249】一方、もし第2エントリのシーケンシャル
レジスタr2に格納されている値が第3エントリのシー
ケンシャルレジスタr3に格納されている値よりも小さ
くなければ、TFレジスタ10における第1エントリに
「偽」が設定される。
【0250】この場合、コミット制御回路14における
第4エントリのANDゲート33の出力信号はHレベル
にならず、Lレベルのまま維持される。そのため、シャ
ドウレジスタファイル13における第4エントリのシャ
ドウレジスタ31に格納されている結果データは対応す
るシーケンシャルレジスタ30へ転送されない。また、
ラッチ回路74からのHレベルの出力信号はNチャネル
MOSトランジスタ76のゲートへ与えられない。その
ため、例外処理信号RSEはHレベルにならず、Lレベ
ルのまま維持される。したがって、例外処理は実行され
ない。
【0251】以上のように、このマイクロプロセッサ
は、投機的な命令I2が実行されたとき例外が発生して
も直ちにその例外処理は実行されず、その投機的な命令
I2のコミット条件が成立するコミット点まで例外処理
が延期され、そのコミット点で初めて例外処理が実行さ
れる。
【0252】すなわち、このマイクロプロセッサは、コ
ミット点で初めて以前に実行された投機的命令I2が例
外を引き起こしたことを知り、例外ハンドラを起動す
る。
【0253】ところで、投機的命令が実行されたとき例
外が発生した場合は、無意味な結果データが生成され
る。プログラムによってはこのような無意味な結果デー
タに基づいて他の投機的命令が実行されているかもしれ
ないので、例外処理を実行した後、その例外を引き起こ
した投機的命令を再び実行するだけでは十分ではなく、
それらの他の投機的命令も再び実行する必要がある。
【0254】また、本質的には例外が発生したときから
コミット点までの投機的命令を再び実行すればよいので
あるが、そのような投機的命令だけを主プログラムから
抽出することは煩雑である。そこで、この第6実施例に
よるマイクロプロセッサは、コミット点以前のすべての
投機的命令を再び実行するように構成されている。
【0255】なお、これらの再び実行されるべき投機的
命令だけで構成されるルーチン(リカバリコード)は、
コミット点ごとにプログラムとして予め設けられてい
る。また、既にコミット条件の真偽は決定されているの
で、これら投機的命令を逐次的に実行することができる
ように、それらの順序は変更されている。
【0256】たとえば図11に示されたプログラムの場
合、第2サイクルのコミット点においては、図24に示
すようなリカバリコードがソフトウェアによって作成さ
れる。図24に示すように、逐次的命令always?I1は
このリカバリコードに含まれていない。また、このリカ
バリコードの中のすべての命令は逐次的になるようにそ
の順番が変更されている。
【0257】これを詳細に説明すると、条件命令C1が
実行されると、TFレジスタ10における第1エントリ
の真偽が決定されるので、この真偽をコミット条件部に
持つ投機的命令I2およびI3は、条件命令C1が実行
された後に実行されるように配列され、逐次的命令にさ
れている。さらに、条件命令C2が実行されると、TF
レジスタ10における第2エントリの真偽が決定される
ので、これら第1および第2エントリの真偽をコミット
条件部に持つ投機的命令I4は、条件命令C1およびC
2が実行された後に実行されるように配列され、逐次的
命令にされている。
【0258】このリカバリコードに従って、命令I2が
再び実行されると、再び例外が発生する。ただし、この
場合における命令I2はTFレジスタ10における第1
エントリの真偽が決定された後に実行される逐次的な命
令であるから、この例外処理は直ちに実行される。
【0259】また、リカバリコードの中のすべての命令
は逐次的命令にされているので、投機的な例外が発生す
ることはない。また、リカバリコードの最後には、コミ
ット点の次のアドレスに復帰するためのジャンプ命令ju
mpが設けられている。
【0260】次に、コミット点からリカバリコードを呼
出す方法としては、たとえばコミット点のアドレスをイ
ンデックスとしてリカバリコードの開始アドレスを参照
することができるジャンプテーブルをプログラムの中に
用意する方法がある。この方法の場合、割込ハンドラの
中に図25に示されるプログラムを実行するコードを格
納しておけばよい。
【0261】このプログラムによれば、第1のステート
メントにおいて特定のコミット点のアドレスに対応する
リカバリコードの開始アドレスがジャンプテーブルから
呼出され、変数「recoveryCodeAddress 」に格納され
る。「jumpTable 」は各コミット点のアドレスに対応す
るリカバリコードの開始アドレスが配列されたテーブル
である。
【0262】次いで第2のステートメントにおいて、プ
ログラムカウンタ4にそのリカバリコードの開始アドレ
スが格納され、そのリカバリコードに従って順次所定の
命令が処理される。
【0263】一般に、EPCは割込を引き起こした命令
のアドレスを保持するレジスタであるが、この第6実施
例におけるEPC70はコミット点のアドレスを保持す
るレジスタである。すなわち、このEPC70は、例外
処理信号RSEがHレベルになって割込みが生じたと
き、そのアドレスを保持する。
【0264】最後に、EP回路72におけるラッチ回路
74に「1」が設定されると、そのラッチ回路74自身
およびそれに対応するコミット条件記憶部32の書換え
が禁止されるように構成した理由について説明する。
【0265】もし書換えを禁止する手段がなければ、図
26に示すようなプログラムを実行する場合に問題が生
じる。
【0266】命令I10が実行され、例外が発生したと
仮定する。命令I10は投機的であるので、直ちに例外
処理は行なわれず、EP回路72における第1エントリ
のラッチ回路74に「1」が設定されるとともに、コミ
ット制御回路14における第1エントリのコミット条件
記憶部32にTF「1」というコミット条件が書込まれ
る。
【0267】このとき、シャドウレジスタファイル13
における第1エントリのシャドウレジスタ31にその投
機的命令が実行されて生成された結果データが書込まれ
るが、その命令は例外を引き起こしているので、その結
果データは正しい値ではない。
【0268】次いで投機的命令I11が実行されたとき
例外が発生しなかった場合、もしラッチ回路74に書込
え禁止の手段がなければ、EP回路72における第1エ
ントリのラッチ回路74に「0」が設定され、これによ
り命令I10が例外を引き起こしたという記憶が消去さ
れてしまう。
【0269】したがって、EP回路72におけるラッチ
回路74に「1」が設定された場合、その内容が他の命
令によって「0」が再設定されることがないようにする
必要がある。
【0270】このことはコミット条件記憶部32につい
ても同様である。なぜならば、コミット条件記憶部32
は投機的命令が例外を引き起こした場合にその例外処理
を行なう条件を記憶しているのであるから、他の命令に
よって書換えられてはならないからである。
【0271】また、図26に示したプログラムの場合、
命令I11は、命令I10の結果データr1に基づいて
実行されている。この命令I10は例外を引き起こして
いるので、その結果データr1は正しい値ではない。
【0272】したがって、例外を引き起こした投機的命
令を再実行するだけでは十分でない。そこで、この第6
実施例によるマイクロプロセッサは、コミット点よりも
前の投機的命令をすべて再実行するように構成されてい
る。
【0273】以上のようにこの第6実施例によれば、投
機的命令が実行されたときに例外が発生しても直ちにそ
の例外処理は実行されず、コミット点において必要なと
きだけ例外処理が実行されるので、無駄な例外処理が実
行されることはない。そのため、より効率的にかつ高速
に命令を処理することができる。
【0274】なお、この第6実施例において、ラッチ回
路74は例外記憶手段に相当する。EPC70およびセ
レクタ71などは例外処理手段に相当する。
【0275】[実施例7]上記第6実施例によれば、無
駄な例外処理が行なわれないので効率的に命令が処理さ
れるが、各コミット点に設けられたリカバリコードと、
そのリカバリコードを呼出すためのジャンプテーブルと
が必要なため、プログラムのバイナリサイズが大きくな
り、それによりディスクの記憶領域が大幅に占有される
という欠点がある。
【0276】ジャンプテーブルの各エントリにはリカバ
リコードの開始アドレスが書込まれているので、たとえ
ば32ビットのマイクロプロセッサであれば、ジャンプ
テーブルの各エントリサイズは4バイトになる。ここ
で、並列に発行される命令の集合を命令ブロックと呼ぶ
こととする。リカバリコードの開始アドレスは各コミッ
ト点に対応して必要なので、ジャンプテーブルのサイズ
上最悪になるのはすべての命令ブロックがコミット点と
なる場合である。
【0277】一方、リカバリコードには主プログラム中
の投機的命令が逐次的に配列されているため、リカバリ
コードのサイズは主プログラムのサイズと同じかそれよ
りも若干大きくなる。ここで、大まかにリカバリコード
のサイズを主プログラムのサイズと同じと仮定すると、
たとえば5バイトの命令を4つ発行するマイクロプロセ
ッサ、すなわち1つの命令ブロックが20バイトのマイ
クロプロセッサであれば、その1つの命令ブロックに対
応するリカバリコードのサイズは20バイトになる。
【0278】したがって、主プログラムだけのバイナリ
サイズに対する全プログラムのバイナリサイズの増加率
は、次の数1で表される。
【0279】
【数1】
【0280】上記数1から明らかなように、ジャンプテ
ーブルおよびリカバリコードを含む全プログラムのバイ
ナリサイズは、主プログラムのみのバイナリサイズの約
2.2倍になる。
【0281】また、上記第6実施例においては、例外が
発生する確率は非常に低いにもかかわらず、ジャンプテ
ーブルの参照とリカバリコードの実行によって余分に2
度のキャッシュミスあるいはページフォールトが発生す
る確率が高く、それにより性能が低下する可能性が高い
という問題もある。
【0282】さらに、リカバリコードでは命令が逐次的
に並べ変えられているので、投機的な実行が可能なハー
ドウエアが有効に活用されていないという問題もある。
【0283】図27は、上記のような問題を解消するた
めになされた、この発明の第7実施例によるマイクロプ
ロセッサの全体構成を示すブロック図である。
【0284】図27を参照して、このマイクロプロセッ
サは、分岐命令の分岐先アドレスを格納するリカバリプ
ログラムカウンタ(RPC)85と、各条件は「真」か
「偽」かまたは「未定」かという条件情報を保持するT
Fレジスタ86と、TFレジスタ86から得られた条件
情報にALU2A〜2Dから得られた条件情報を加えて
出力する真偽計算回路(TF計算回路)87と、TF計
算回路87から得られた条件情報を保持する将来真偽レ
ジスタ(FTFレジスタ)88と、例外処理信号RS
E、割込信号などに応答して割込制御信号を生成する割
込制御回路89と、プログラムカウンタ4の値をEPC
70の値と比較し、それらが一致したときHレベルの比
較信号CMPを生成する比較回路90と、Hレベルの比
較信号CMPに応答してリセットされるリカバリモード
ビット92を持つステータスレジスタ91とを備える。
【0285】ここで、TFレジスタ86は、上述した実
施例中のTFレジスタ10と異なり、例外処理信号RS
EがLレベルの間だけTF計算回路87からの条件情報
を受入れる。すなわち、例外処理信号RSEがHレベル
の間はTFレジスタ10内の条件情報の書換えが禁止さ
れる。TFレジスタ86はまた、Hレベルの比較信号C
MPに応答してFTFレジスタ88からの条件情報を受
入れる。
【0286】TF計算回路87は、TFレジスタ86の
エントリに対応してm個のエントリを含む。TF計算回
路87の各エントリは、ALU2A〜2Dから対応する
条件情報が与えれない場合はTFレジスタ86の対応す
るエントリの条件情報をそのまま出力し、ALU2A〜
2Dから対応する条件情報が与えられた場合はその与え
られた条件情報をそのまま出力する。
【0287】したがって、たとえばTFレジスタ86の
第1および第2エントリが「未定」を保持しかつ第3エ
ントリが「真」を保持しているときに、ALU2A〜2
Dから第1エントリに対応する条件は「真」であるとい
う条件情報が供給された場合は、TF計算回路87は、
その第1エントリから「真」を出力し、その第2エント
リから「未定」を出力し、さらにその第3エントリから
「真」を出力する。また、たとえばTFレジスタ86の
第1エントリが「偽」を保持し、第2エントリが「真」
を保持し、さらに第3エントリが「未定」を保持してい
るときに、ALU2A〜2Dからその第3エントリに対
応する条件は「偽」であるという条件情報が供給された
場合は、TF計算回路87は、その第1エントリから
「偽」を出力し、その第2エントリから「真」を出力
し、さらにその第3エントリから「偽」を出力する。
【0288】FTFレジスタ88はTFレジスタ86と
同様に、m個のエントリを含む。FTFレジスタ88の
各エントリは、対応する条件が将来「真」になるのか、
将来「偽」になるのか、あるいはその条件の真偽は「未
定」であるかのいずれかを保持する。
【0289】割込制御回路89は、従来のマイクロプロ
セッサにおける割込制御回路と同様に、割込信号に応答
して割込制御信号を生成する。割込信号は、オーバフロ
ー、ページフォールトなどの例外が発生したとき、その
例外の発生部分から供給される。EP回路72から割込
制御回路89に供給される例外処理信号RSEもまた、
割込信号の1つである。したがって、割込制御回路89
はまた、この例外処理信号RSEにも応答して割込制御
信号を生成する。
【0290】割込制御信号が生成されると例外ハンドラ
が呼出され、その発生した例外に対応する例外処理が行
なわれる。例外処理信号RSEに応答して割込制御信号
が生成され、それにより例外ハンドラが呼出された場合
は、ステータスレジスタ91のリカバリモードビット9
2が「1」にセットされる。これにより、後述するリカ
バリモードとなる。また、例外処理信号RSEに応答し
て呼出された例外ハンドラは、RPC85の値をプログ
ラムカウンタ4に格納する。
【0291】割込制御回路89はまた、リカバリモード
ビット92が「1」にセットされている間に割込信号が
発生したときは、処理中の命令が持っているコミット条
件をFTFレジスタ88の条件情報と比較し、そのコミ
ット条件が成立している場合は割込制御信号を生成し、
それに応答して呼出された例外ハンドラは対応する例外
処理を行なう。
【0292】次に、この第7実施例によるマイクロプロ
セッサの動作について説明する。上記第6実施例と同様
に、図11に示されるプログラムが実行される場合にお
いて、コミット条件付きの命令I2が例外を引起こすと
仮定する。
【0293】ある分岐命令に従ってこのプログラム中の
第1サイクルのアドレスがプログラムカウンタ4に格納
されると、この基本ブロックK1へ実行が移行される。
このときプログラムカウンタ4に格納されるアドレス
は、RPC85にも格納される。
【0294】まず第1サイクルにおいて、4つの命令I
1〜I4が同時に実行される。ここで、命令I2が投機
的に実行されると、レジスタr12に格納されている値
とレジスタr13に格納されている値とが加算され、そ
の結果データがシャドウレジスタファイル13における
第4エントリのシャドウレジスタr4に格納される。
【0295】この命令I2は例外を引起こすが、投機的
であるので例外処理は直ちには行なわれない。その代わ
りに、EP回路72における第4エントリのラッチ回路
74に「1」がセットされる。また、コミット制御回路
14における第4エントリのコミット条件記憶部32に
はそのコミット条件TF[1]が格納される。
【0296】続いて第2サイクルにおいては、2つの条
件命令C1,C2が逐次的に実行される。ここで、レジ
スタr2の値がレジスタr3の値よりも小さい場合は、
ALU2A〜2Dからの条件情報に従ってTF計算回路
87の第1エントリから「真」という条件情報が出力さ
れる。これにより、コミット制御回路14における第4
エントリのコミット条件記憶部32に格納されているコ
ミット条件TF[1]がTF計算回路87から与えられ
る条件情報と一致するため、EP回路72からの例外処
理信号RSEはHレベルに立上がる。このHレベルの例
外処理信号RSEに応答して割込制御回路89は、その
ときのプログラムカウンタ4の値をEPC70に書込
む。したがって、EPC70には、例外を引起こす命令
I2のアドレスがそのまま書込まれるのではなく、その
命令I2のコミット条件TF[1]を確定するための条
件命令C2のアドレスが書込まれる。
【0297】TF計算回路87からの条件情報はFTF
レジスタ88に書込まれる。レジスタr2の値がレジス
タr3の値よりも小さく、しかもレジスタr4の値がレ
ジスタr5の値と等しい場合は、TF計算回路87の第
1および第2のエントリからともに「真」という条件情
報が出力される。したがって、FTFレジスタ88の第
1および第2エントリにはともに「真」という条件情報
が書込まれる。
【0298】このとき、例外処理信号RSEはHレベル
であるため、TF計算回路87からのこれらの条件情報
はTFレジスタ86には書込まれない。すなわち、上記
実施例6ではこの時点でTFレジスタ10の第1および
第2エントリが「真」となるが、この実施例7ではTF
レジスタ86の第1および第2エントリは「未定」のま
ま維持され、その代わりにFTFレジスタ88の第1お
よび第2エントリが「真」となる。
【0299】また、割込制御回路89からの割込制御信
号に応答して、例外ハンドラが起動される。この例外ハ
ンドラは、ステータスレジスタ91のリカバリモードビ
ット92を「1」にセットし、かつRPC85の値をプ
ログラムカウンタ4にセットする。これにより、このマ
イクロプロセッサは通常モードからリカバリモードにな
る。
【0300】RPC85には第1サイクルにおける命令
I1〜I4のアドレスが格納されているので、この第1
サイクルから命令が再実行される。リカバリモードにお
いては、実行制御回路11がTFレジスタ86を参照し
て投機的命令だけを実行する。したがって、第1サイク
ルにおいては、4つの命令のうち3つの投機的命令I2
〜I4だけが実行され、逐次的命令I1は実行されな
い。
【0301】ここで、命令I2が実行されるため、再び
例外が生じる。このとき、命令I2のコミット条件TF
[1]は将来「真」となるものか「偽」となるものかを
FTFレジスタ88の第1エントリを参照してチェック
される。ここでは、FTFレジスタ88の第1エントリ
は「真」であるので、割込制御回路89によって生成さ
割込制御信号に応答して例外処理が行なわれる。このと
きTFレジスタ86の第1エントリはまだ「未定」であ
るが、この第1エントリは将来必ず「真」となるもので
あるからその例外処理が行なわれるのである。
【0302】ここで、もしも命令I3も例外を引起こし
たとしても、この命令I3のコミット条件はTF[1]
であるのに対し、FTFレジスタ88の第1エントリは
「真」であるので、その例外処理が行なわれることはな
い。ここではFTFレジスタ88の第1エントリは
「真」であるが、「未定」の場合は、通常モードと同様
に、Hレベルの例外発生信号SEに応答してEP回路7
2における第5エントリのラッチ回路74が「1」にセ
ットされる。
【0303】この例外処理は通常の例外処理と同様に、
例外が発生したと同時に行なわれているので、その例外
処理が終了すると、その例外を引起こした命令I2の次
の命令C1,C2のアドレスがプログラムカウンタ4に
格納され、これらの命令C1,C2から実行が再開され
る。このため、プログラムカウンタ4の値がEPC70
の値と等しくなり、これにより比較回路90はHレベル
の比較信号CMPを生成する。Hレベルの比較信号CM
Pに応答して、TFレジスタ86はFTFレジスタ88
からの条件情報を格納し、さらにステータスレジスタ9
1のリカバリモードビット92は「0」にリセットされ
る。これにより、このマイクロプロセッサはリカバリモ
ードから通常モードに戻る。
【0304】この第7実施例によれば、上記第6実施例
に必要なリカバリコードとそのリカバリコードを呼出す
ためのジャンプテーブルとが必要とならないので、例外
処理を行なうためにプログラムのバイナリサイズを特に
大きくする必要はない。また、リカバリのための再実行
は元のプログラムに従って行なわれるので、キャッシュ
ミス、ページフォールトなどの例外が発生する確率は極
めて低くなる。さらに、リカバリのための再実行が行な
われるときにおいても、このマイクロプロセッサは命令
を投機的に実行することができるので、投機的実行が可
能なこのマイクロプロセッサの機能をより有効に活用す
ることができる。
【0305】
【発明の効果】請求項1に記載のコミット条件付き命令
の処理方法によれば、コミット条件の成否を判定する前
にその命令を投機的に実行することができるので、AL
Uなどの演算装置の使用率が高められ、命令の処理速度
が向上するという効果を奏する。
【0306】請求項2に記載のコミット条件付き命令の
処理方法によれば、上記請求項1の効果に加えて、投機
的に実行した命令が例外を引起こした場合はその例外処
理を保留し、コミット時にその例外処理を行なうので、
無駄な例外処理を行なうことがなく、命令の処理速度は
さらに向上するという効果を奏する。
【0307】請求項3に記載のコミット条件付き命令の
処理方法によれば、上記請求項1および請求項2の効果
に加えて、既に処理した命令を再処理するので、例外が
発生した場合でも常に正確な結果データが生成され、す
べての命令を正確に処理することができる。
【0308】請求項4に記載のコミット条件付き命令の
処理方法によれば、パイプライン制御によるある処理ス
テージにおいて、命令を実行して生成した結果データは
確定的に保持されるべきか暫定的に保持されるべきかと
いう処置情報が生成されるため、コミット条件の成否を
判定する前に命令を投機的に実行することができ、AL
Uなどの演算装置の使用率がさらに高められ、命令の処
理速度はさらに向上するという効果を奏する。
【0309】請求項5に記載のコミット条件付き命令の
処理方法によれば、上記請求項4の効果に加えて、ある
処理ステージにおいて上記処置情報が必要に応じて変更
されるため、すべての命令を常に正確に処理することが
できる。
【0310】請求項6に記載のコミット条件付き命令の
処理装置によれば、コミット条件の成否が判明する前に
その命令を投機的に実行することができるので、ALU
などの演算装置の使用率が高められ、命令の処理速度が
向上するという効果を奏する。
【0311】請求項7に記載のコミット条件付き命令の
処理装置によれば、パイプライン制御によるある処理ス
テージにおいて、命令を実行して生成した結果データは
確定的に保持されるべきか暫定的に保持されるべきかを
示す処置情報が生成されるため、コミット条件の成否が
判明する前に命令を投機的に実行でき、ALUなどの演
算装置の使用率がさらに高められ、命令の処理速度はさ
らに向上するという効果を奏する。
【0312】請求項8に記載のコミット条件付き命令の
処理装置によれば、上記請求項7の効果に加えて、その
ある処理ステージにおいてコミット条件が判明した場合
はその処置情報が変更されるので、命令を常に正確に処
理することができる。
【0313】請求項9に記載のコミット条件付き命令の
処理装置によれば、上記請求項6の効果に加えて、確定
的に保持された結果データであっても暫定的に保持され
た結果データであっても、常に読出すことができるとい
う効果を奏する。
【0314】請求項10に記載のコミット条件付き命令
の処理装置によれば、請求項6の効果に加えて、フラグ
によって結果データが確定的に保持されているか暫定的
に保持されているかが示されるので、レジスタファイル
の容量はさほど大きくならない。
【0315】請求項11に記載のコミット条件付き命令
の処理装置によれば、上記請求項6の効果に加えて、真
偽レジスタが条件情報を確定的または暫定的に保持する
ことができるので、条件命令も投機的に実行することが
できる。
【0316】請求項12に記載のコミット条件付き命令
の処理装置によれば、上記請求項6の効果に加えて、命
令を投機的に実行したときに例外が発生した場合はその
コミット時に例外処理を行なうので、無駄な例外処理を
行なうことはなく、命令の処理速度はさらに向上すると
いう効果を奏する。
【0317】請求項13に記載のコミット条件付き命令
の処理装置によれば、そのコミット時までの命令が再処
理されるので、常に正しい結果データが生成される。し
たがって、常に命令を正確に処理することができるとい
う効果を奏する。
【0318】請求項14に記載のコミット条件付き命令
の処理装置によれば、上記請求項6、請求項12および
請求項13の効果に加えて、例外処理を行なう場合はそ
のコミット時までの命令を逐次的な順序で処理するた
め、命令の処理速度はさらに向上するという効果を奏す
る。
【0319】請求項15に記載のコミット条件付き命令
の処理装置によれば、上記請求項6の効果に加えて、将
来真偽レジスタ手段にコミット条件が将来なるであろう
条件情報を保持しておき、そのコミット時までの命令を
再処理して再び例外が発生したときその将来真偽レジス
タ手段を参照して必要に応じて例外処理を行なっている
ので、プログラムのバイナリサイズを大きくすることな
く、常に正確な結果データを生成することができる。
【0320】請求項16に記載のコミット条件付き命令
の処理装置によれば、上記請求項6および請求項15の
効果に加えて、例外が発生した場合は投機的な命令だけ
が再処理されるので、例外を正確に処理できるという効
果を奏する。
【0321】請求項17に記載のコミット条件付き命令
の処理装置によれば、上記請求項14および請求項16
の効果に加えて、例外の発生が一旦記憶されると、その
内容が書換えられることはないので、その例外処理は確
実に行なわれるという効果を奏する。
【図面の簡単な説明】
【図1】 この発明の第1実施例によるマイクロプロセ
ッサの構成を示すブロック図である。
【図2】 図1に示したマイクロプロセッサのための命
令コードの一例を示す説明図である。
【図3】 図1に示したマイクロプロセッサにおけるT
Fレジスタの構成を示す説明図である。
【図4】 図1に示したマイクロプロセッサのための命
令コードにおけるコミット条件部の構成を示す説明図で
ある。
【図5】 図1に示したマイクロプロセッサにおける実
行制御回路の機能を説明するための概念図である。
【図6】 図1に示した実行制御回路の構成を示すブロ
ック図である。
【図7】 図6に示した実行制御回路におけるコミット
条件計算回路の構成を示すブロック図である。
【図8】 図7に示したコミット条件計算回路における
比較回路の構成を示す回路図である。
【図9】 図1に示したマイクロプロセッサにおけるシ
ーケンシャルレジスタファイル、シャドウレジスタファ
イルおよびコミット制御回路の構成を示すブロック図で
ある。
【図10】 プログラムの一例を示すフローチャートで
ある。
【図11】 図10に示したプログラムに従って図1に
示したマイクロプロセッサのためのプログラムを示すプ
ログラムリストである。
【図12】 この発明の第2実施例によるマイクロプロ
セッサの構成を示すブロック図である。
【図13】 図12に示したマイクロプロセッサの動作
を示すタイムチャートである。
【図14】 図12に示したマイクロプロセッサにおけ
る有効性計算回路の構成を示すブロック図である。
【図15】 図12に示したマイクロプロセッサにおけ
る書込指定計算回路の構成を示すブロック図である。
【図16】 この発明の第3実施例によるマイクロプロ
セッサのためのプログラムを示すプログラムリストであ
る。
【図17】 図16に示したプログラムに従って命令を
処理するマイクロプロセッサにおけるコミット条件計算
回路の構成を示すブロック図である。
【図18】 この発明の第4実施例によるマイクロプロ
セッサの構成を示すブロック図である。
【図19】 図18に示したマイクロプロセッサのため
のプログラム示すプログラムリストである。
【図20】 この発明の第5実施例によるマイクロプロ
セッサにおけるレジスタファイルの構成を示す説明図で
ある。
【図21】 この発明の第6実施例によるマイクロプロ
セッサの構成を示すブロック図である。
【図22】 図21に示したマイクロプロセッサにおけ
るシーケンシャルレジスタファイル、シャドウレジスタ
ファイル、コミット制御回路およびEP回路の構成を示
すブロック図である。
【図23】 図21に示したマイクロプロセッサによる
例外処理の動作を示すタイムチャートである。
【図24】 図21に示したマイクロプロセッサによっ
て処理されるリカバリコードを示すプログラムリストで
ある。
【図25】 図21に示したマイクロプロセッサにおい
て、リカバリコードを呼出すためのプログラムリストで
ある。
【図26】 図21に示したマイクロプロセッサにおけ
るEP回路に書換禁止の手段が必要な理由を説明するた
めのプログラムリストである。
【図27】 この発明の第7実施例によるマイクロプロ
セッサの構成を示すブロック図である。
【図28】 従来のマイクロプロセッサの構成を示すブ
ロック図である。
【符号の説明】
2A,2B,2C,2D ALU、10,86 TFレ
ジスタ、11 実行制御回路、12 シーケンシャルレ
ジスタファイル、13 シャドウレジスタファイル、1
4 コミット制御回路、17,41,53 コミット条
件計算回路、20,21 比較回路、38 コミット条
件レジスタ、39 第1の有効性レジスタ、40 第1
の書込指定レジスタ、42 有効性計算回路、43 書
込指定計算回路、44 第2の有効性レジスタ、45
第2の書込指定レジスタ、52レジスタファイル書込制
御回路、60 シーケンシャルTFレジスタ、61 シ
ャドウTFレジスタ、62 TFレジスタ用コミット制
御回路、65 第1のレジスタファイル、66 第2の
レジスタファイル、70 例外プログラムカウンタ(E
PC)、72 EP回路、74 ラッチ回路、81 O
R回路、87 TF計算回路、88 FTFレジスタ、
89 割込み制御回路、F1〜F32 フラグ。

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 複数の条件の下で、各々が対応する1つ
    のコミット条件を持つ複数の命令を処理するコミット条
    件付き命令の処理方法であって、前記コミット条件は対
    応する命令を最終的に処理するために必要な前記条件の
    うちいずれかからなり、 前記条件のうち選択された少なくとも1つの条件を判定
    するステップと、 前記命令のうち選択された少なくとも1つの命令に対応
    するコミット条件を前記条件と比較するステップと、 その比較後、その選択された命令を実行して結果データ
    を生成するステップと、 その対応するコミット条件中のすべての条件の真偽がす
    でに判定されている条件の真偽と対応的に一致している
    第1の場合はその生成した結果データを確定的に保持
    し、その対応するコミット条件中のいずれかの条件の真
    偽がすでに判定されている条件の真偽と対応的に一致し
    かつその対応するコミット条件中のその他の条件が未だ
    判定されていない第2の場合はその生成した結果データ
    を暫定的に保持するステップと、 前記第2の場合は、その対応するコミット条件中のすべ
    ての条件の真偽がすでに判定されている条件の真偽と対
    応的に一致するコミット時に、その暫定的に保持した結
    果データを確定的に保持し直すステップとを含むコミッ
    ト条件付き命令の処理方法。
  2. 【請求項2】 その選択された命令が処理される間に例
    外が発生した場合であって、前記第1の場合はその例外
    を直ちに処理し、前記第2の場合はその例外の発生を記
    憶するステップと、 その例外の発生が記憶されている場合は前記コミット時
    にその例外を処理するステップとをさらに含む請求項1
    に記載のコミット条件付き命令の処理方法。
  3. 【請求項3】 その選択された命令が処理される間に例
    外が発生した場合であって、前記第1の場合はその例外
    を直ちに処理し、前記第2の場合はその例外の発生を記
    憶するステップと、 前記コミット時にその例外の発生が記憶されている場合
    は前記複数の命令のうち前記コミット時までにすでに処
    理された命令を最初から再処理するステップと、 その命令が再処理される間にその例外が再び発生したと
    き、その例外を直ちに処理するステップとをさらに含む
    ことを特徴とする請求項1に記載のコミット条件付き命
    令の処理方法。
  4. 【請求項4】 複数の条件の下で、各々が対応する1つ
    のコミット条件を持つ複数の命令を複数の処理ステージ
    を経てパイプライン制御によって処理するコミット条件
    付き命令の処理方法であって、前記コミット条件は対応
    する命令を最終的に処理するために必要な前記条件のう
    ちいずれかからなり、 前記条件のうち選択された少なくとも1つの条件を判定
    するステップと、 前記複数の処理ステージのうち1つの処理ステージにお
    いて、前記命令のうち選択された少なくとも1つの命令
    に対応するコミット条件を前記条件と比較するステップ
    と、 その対応するコミット条件中のすべての条件の真偽がす
    でに判定されている条件の真偽と対応的に一致している
    第1の場合はその次の処理ステージへ移行するときにそ
    の選択された命令が実行されて生成されるであろう結果
    データは確定的に保持されるべきという第1の処置情報
    を生成し、その対応するコミット条件中のいずれかの条
    件の真偽がすでに判定されている条件の真偽と対応的に
    一致しかつその対応するコミット条件中のその他の条件
    が未だ判定されていない第2の場合はその次の処理ステ
    ージへ移行するときにその選択された命令が実行されて
    生成されるであろう結果データは暫定的に保持されるべ
    きという第2の処置情報を生成するステップと、 その比較後、その選択された命令を実行して結果データ
    を生成するステップと、 前記第1の場合はその第1の処置情報に従ってその生成
    された結果データを確定的に保持し、前記第2の場合は
    その第2の処置情報に従ってその生成された結果データ
    を暫定的に保持するステップと、 前記第2の場合は、その対応するコミット条件中のすべ
    ての条件の真偽がすでに判定されている条件の真偽と対
    応的に一致するコミット時に、その暫定的に保持した結
    果データを確定的に保持し直すステップとを含むコミッ
    ト条件付き命令の処理方法。
  5. 【請求項5】 第1または第2の処置情報を生成した
    後、前記1つの処理ステージ以降のもう1つの処理ステ
    ージにおいて、その対応するコミット条件を前記条件と
    再び比較するステップと、 その比較の結果、前記第2の場合から前記第1の場合へ
    変化している場合はさらにその次の処理ステージへ移行
    するときにその第2の処置情報を第1の処置情報へ変更
    するステップとをさらに含むことを特徴とする請求項4
    に記載のコミット条件付き命令の処理方法。
  6. 【請求項6】 複数の条件の下で、各々が対応する1つ
    のコミット条件を持つ複数の命令を処理するコミット条
    件付き命令の処理装置であって、前記コミット条件は対
    応する命令を最終的に処理するために必要な前記条件の
    うちいずれかからなり、 前記命令のうち選択された少なくとも1つの命令を実行
    し、かつ、前記条件のうち選択された少なくとも1つの
    条件を判定する演算手段と、 前記演算手段がその選択された命令を実行して生成した
    結果データを確定的または暫定的に保持するデータ保持
    手段と、 前記複数の条件に対応する複数のエントリを含み、前記
    エントリの各々は、対応する条件が真であるという第1
    の条件情報、対応する条件が偽であるという第2の条件
    情報、および対応する条件の真偽が未定であるという第
    3の条件情報のうちいずれかを保持するものである、真
    偽レジスタ手段と、 その対応するコミット条件を前記真偽レジスタ手段から
    得られた条件情報と比較し、(i)その対応するコミッ
    ト条件中のすべての条件の真偽がそのすべての条件に対
    応する条件情報と対応的に一致する第1の場合は前記デ
    ータ保持手段が結果データを確定的に保持するように制
    御し、(ii)その対応するコミット条件中のいずれかの
    条件の真偽がそのいずれかの条件に対応する条件情報と
    対応的に一致しかつその対応するコミット条件中のその
    他の条件に対応する条件情報が第3の条件情報である第
    2の場合は前記データ保持手段が結果データを暫定的に
    保持するように制御する実行制御手段と、 その対応するコミット条件を前記真偽レジスタ手段から
    得られた条件情報と比較し、その対応するコミット条件
    中のすべての条件の真偽がそのすべての条件に対応する
    条件情報と対応的に一致するコミット時に、前記データ
    保持手段が暫定的に保持した結果データを確定的に保持
    し直すように制御するコミット制御手段とを備えたコミ
    ット条件付き命令の処理装置。
  7. 【請求項7】 複数の条件の下で、各々が対応する1つ
    のコミット条件を持つ複数の命令を複数の処理ステージ
    を経てパイプライン制御によって処理するコミット条件
    付き命令の処理装置であって、前記コミット条件は対応
    する命令を最終的に処理するために必要な前記条件のう
    ちいずれかからなり、 前記命令のうち選択された少なくとも1つの命令を実行
    し、かつ、前記条件のうち選択された少なくとも1つの
    条件を判定する演算手段と、 前記演算手段がその選択された命令を実行して生成した
    結果データを確定的または暫定的に保持するデータ保持
    手段と、 前記複数の条件に対応する複数のエントリを含み、前記
    エントリの各々は、対応する条件が真であるという第1
    の条件情報、対応する条件が偽であるという第2の条件
    情報、および対応する条件の真偽が未定であるという第
    3の条件情報のうちいずれかを保持するものである、真
    偽レジスタ手段と、 前記複数の処理ステージのうち1つの処理ステージにお
    いて、その対応するコミット条件を前記真偽レジスタ手
    段から得られた条件情報と比較し、(i)その対応する
    コミット条件中のすべての条件の真偽がそのすべての条
    件に対応する条件情報と対応的に一致する第1の場合は
    その次の処理ステージへ移行するときに前記演算手段が
    その選択された命令を実行して生成するであろう結果デ
    ータは確定的なものであるという第1の処置情報を生成
    し、(ii)その対応するコミット条件中のいずれかの条
    件の真偽がそのいずれかの条件に対応する条件情報と対
    応的に一致しかつその対応するコミット条件中のその他
    の条件に対応する条件情報が第3の条件情報である第2
    の場合はその次の処理ステージへ移行するときに前記演
    算手段がその選択された命令を実行して生成するであろ
    う結果データは暫定的なものであるという第2の処置情
    報を生成する情報生成手段と、 (i)前記第1の場合はその第1の処置情報に従って前
    記演算手段が生成した結果データを前記データ保持手段
    が確定的に保持するように制御し、(ii)前記第2の場
    合はその第2の処置情報に従って前記演算手段が生成し
    た結果データを前記データ保持手段が暫定的に保持する
    ように制御する書込制御手段と、 その対応するコミット条件を前記真偽レジスタ手段から
    得られた条件情報と比較し、その対応するコミット条件
    中のすべての条件の真偽がそのすべての条件に対応する
    条件情報と対応的に一致するコミット時に、前記データ
    保持手段が暫定的に保持した結果データを確定的に保持
    し直すように制御するコミット制御手段とを備えたコミ
    ット条件付き命令の処理装置。
  8. 【請求項8】 前記情報生成手段が第1または第2の処
    置情報を生成した前記1つの処理ステージ以降のもう1
    つの処理ステージにおいて、前記第2の場合から前記第
    1の場合へ変化している場合はさらにその次の処理ステ
    ージへ移行するときにその第2の処置情報を第1の処置
    情報へ変更する情報変更手段をさらに備えた請求項7に
    記載のコミット条件付き命令の処理装置。
  9. 【請求項9】 前記データ保持手段は、その結果データ
    を確定的に保持する第1のレジスタ手段と、その結果デ
    ータを暫定的に保持する第2のレジスタ手段とを備えた
    ことを特徴とする請求項6から請求項8までのいずれか
    に記載のコミット条件付き命令の処理装置。
  10. 【請求項10】 前記データ保持手段は、その結果デー
    タを確定的に保持しているのかまたは暫定的に保持して
    いるのかを特定するためのフラグを備えたことを特徴と
    する請求項6から請求項8までのいずれかに記載のコミ
    ット条件付き命令の処理装置。
  11. 【請求項11】 前記条件のうち少なくとも1つの条件
    を判定するための条件命令もまた、対応する1つのコミ
    ット条件を持ち、 前記真偽レジスタ手段の各エントリは、条件情報を確定
    的または暫定的に保持し、 前記実行制御手段は、その条件命令に対応するコミット
    条件を前記真偽レジスタ手段から得られた条件情報と比
    較し、(i)その条件命令に対応するコミット条件中の
    すべての条件の真偽がそのすべての条件に対応する条件
    情報と対応的に一致する第3の場合は前記演算手段がそ
    の条件命令に従ってその選択された条件を判定して生成
    した第1または第2の条件情報を前記真偽レジスタ手段
    が確定的に保持するように制御し、(ii)その条件命令
    に対応するコミット条件中のいずれかの条件の真偽がそ
    のいずれかの条件に対応する条件情報と対応的に一致し
    かつその条件命令に対応するコミット条件中のその他の
    条件に対応する条件情報が第3の条件情報である第4の
    場合は前記演算手段がその条件命令に従ってその選択さ
    れた条件を判定して生成した第1または第2の条件情報
    を前記真偽レジスタ手段が暫定的に保持するように制御
    し、 その条件命令に対応するコミット条件を前記真偽レジス
    タ手段から得られた条件情報と比較し、その条件命令に
    対応するコミット条件中のすべての条件の真偽がそのす
    べての条件に対応する条件情報と一致するコミット時
    に、前記真偽レジスタ手段が暫定的に保持した第1また
    は第2の条件情報を確定的に保持し直すように制御する
    第2のコミット制御手段をさらに備えたことを特徴とす
    る請求項6から請求項10までのいずれかに記載のコミ
    ット条件付き命令の処理装置。
  12. 【請求項12】 その選択された命令が処理される間に
    例外が発生しかつ前記第2の場合はその例外の発生を記
    憶する例外記憶手段と、 前記コミット時に前記例外記憶手段がその例外の発生を
    記憶している場合はその例外を処理する例外処理手段と
    をさらに備えたことを特徴とする請求項6から請求項1
    1までのいずれかに記載のコミット条件付き命令の処理
    装置。
  13. 【請求項13】 前記例外処理手段はさらに、その例外
    を処理する前に、前記複数の命令のうち、少なくともそ
    の例外の発生時から前記コミット時までの間にその結果
    データが暫定的に保持されている命令を再処理する再処
    理手段を備えたことを特徴とする請求項12に記載のコ
    ミット条件付き命令の処理装置。
  14. 【請求項14】 前記再処理手段は、その対応する結果
    データが暫定的に保持されている命令を逐次的な順序で
    再処理することを特徴とする請求項13に記載のコミッ
    ト条件付き命令の処理装置。
  15. 【請求項15】 前記真偽レジスタ手段から得られた条
    件情報に前記演算手段がその選択された条件を判定して
    生成した条件情報を加える真偽計算手段と、 その選択された命令が処理される間に例外が発生しかつ
    前記第2の場合はその例外の発生を記憶する例外記憶手
    段と、 前記真偽計算手段から得られた条件情報を保持する将来
    真偽レジスタ手段と、 前記コミット時に前記例外記憶手段がその例外の発生を
    記憶している場合は前記複数の命令のうち前記コミット
    時までにすでに処理された命令を最初から再処理する再
    処理手段と、 前記再処理手段がその命令を再処理している間にその例
    外が再び発生したとき、その例外を引起こした命令に対
    応するコミット条件を前記将来真偽レジスタ手段から得
    られた条件情報と比較し、その対応するコミット条件中
    のすべての条件の真偽がそのすべての条件に対応する条
    件情報と対応的に一致する場合はその例外を処理する例
    外処理手段とをさらに備え、 前記真偽レジスタ手段は、前記再処理手段がその命令を
    再処理している場合は前記真偽計算手段から得られた条
    件情報を受入れず、そうでない場合はその条件情報を受
    入れ、かつ、前記再処理手段がその命令を再処理し終え
    たとき前記将来真偽レジスタ手段から得られた条件情報
    を受入れることを特徴とする請求項6から請求項11ま
    でのいずれかに記載のコミット条件付き命令の処理装
    置。
  16. 【請求項16】 前記再処理手段は、その命令のうち前
    記第2の場合における命令を選択的に再処理すること特
    徴とする請求項15に記載のコミット条件付き命令の処
    理装置。
  17. 【請求項17】 前記例外記憶手段がその例外の発生を
    記憶している間はその記憶されている内容が書換えられ
    るのを禁止する禁止手段をさらに備えたことを特徴とす
    る請求項12から請求項16までのいずれかに記載のコ
    ミット条件付き命令の処理装置。
JP6133106A 1993-09-28 1994-06-15 コミット条件付き命令の処理方法およびその装置 Withdrawn JPH07182165A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US08/304,441 US5761467A (en) 1993-09-28 1994-09-12 System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field
DE4434529A DE4434529A1 (de) 1993-09-28 1994-09-27 Verfahren zum Verarbeiten eines Befehls mit Einsatzbedingung und Vorrichtung dazu

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP24116293 1993-09-28
JP5-241162 1993-11-12
JP28352193 1993-11-12
JP5-283521 1993-11-12

Publications (1)

Publication Number Publication Date
JPH07182165A true JPH07182165A (ja) 1995-07-21

Family

ID=26535126

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6133106A Withdrawn JPH07182165A (ja) 1993-09-28 1994-06-15 コミット条件付き命令の処理方法およびその装置

Country Status (1)

Country Link
JP (1) JPH07182165A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281893A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システム及び演算方法
JPH07281894A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システムおよび動作の方法
US5996070A (en) * 1996-07-30 1999-11-30 Mitsubishi Denki Kabushiki Kaisha Microprocessor capable of executing condition execution instructions using encoded condition execution field in the instructions
US6889315B2 (en) 1999-12-17 2005-05-03 Fujitsu Limited Processor and method of controlling the same

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07281893A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システム及び演算方法
JPH07281894A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システムおよび動作の方法
US5996070A (en) * 1996-07-30 1999-11-30 Mitsubishi Denki Kabushiki Kaisha Microprocessor capable of executing condition execution instructions using encoded condition execution field in the instructions
US6889315B2 (en) 1999-12-17 2005-05-03 Fujitsu Limited Processor and method of controlling the same

Similar Documents

Publication Publication Date Title
US7010648B2 (en) Method and apparatus for avoiding cache pollution due to speculative memory load operations in a microprocessor
US3728692A (en) Instruction selection in a two-program counter instruction unit
US5701430A (en) Cross-cache-line compounding algorithm for scism processors
JP2937485B2 (ja) スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置
EP0394624B1 (en) Multiple sequence processor system
US5446849A (en) Electronic computer which executes squash branching
US5961633A (en) Execution of data processing instructions
US5761467A (en) System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field
US5778248A (en) Fast microprocessor stage bypass logic enable
JPH07129413A (ja) 割込み処理装置
US7376820B2 (en) Information processing unit, and exception processing method for specific application-purpose operation instruction
US6898693B1 (en) Hardware loops
US6748523B1 (en) Hardware loops
US6070218A (en) Interrupt capture and hold mechanism
US20040148493A1 (en) Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue
JPS623342A (ja) パイプラインプロセツサ
US6766444B1 (en) Hardware loops
JPH07182165A (ja) コミット条件付き命令の処理方法およびその装置
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions
US5421026A (en) Data processor for processing instruction after conditional branch instruction at high speed
EP0374598B1 (en) Control store addressing from multiple sources
US6920547B2 (en) Register adjustment based on adjustment values determined at multiple stages within a pipeline of a processor
KR102379886B1 (ko) 벡터 명령 처리
EP0177712B1 (en) Masked data fetch and modifying device
US7191432B2 (en) High frequency compound instruction mechanism and method for a compare operation in an arithmetic logic unit

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20010904