JP2001060153A - 情報処理装置 - Google Patents

情報処理装置

Info

Publication number
JP2001060153A
JP2001060153A JP11236811A JP23681199A JP2001060153A JP 2001060153 A JP2001060153 A JP 2001060153A JP 11236811 A JP11236811 A JP 11236811A JP 23681199 A JP23681199 A JP 23681199A JP 2001060153 A JP2001060153 A JP 2001060153A
Authority
JP
Japan
Prior art keywords
instruction
output
possibility
fetch
store
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.)
Granted
Application number
JP11236811A
Other languages
English (en)
Other versions
JP3739607B2 (ja
Inventor
Masaki Ukai
昌樹 鵜飼
Aiichiro Inoue
愛一郎 井上
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP23681199A priority Critical patent/JP3739607B2/ja
Priority to US09/532,832 priority patent/US6571329B1/en
Publication of JP2001060153A publication Critical patent/JP2001060153A/ja
Application granted granted Critical
Publication of JP3739607B2 publication Critical patent/JP3739607B2/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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3812Instruction prefetching with instruction modification, e.g. store into instruction stream

Landscapes

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

Abstract

(57)【要約】 【課題】 例えばストア命令の実行結果の格納によって
後続命令の内容が書き換えられる、命令上書きの可能性
を正確に判定する。 【解決手段】 1つの命令フェッチポートからフェッチ
され、最後にフェッチされた命令に連続する全ての命令
列の長さを検出する手段2と、その全ての命令列内の特
定位置に対応する命令のアドレスと、完了したストア命
令の実行結果が格納されるストア対象アドレスとを検出
する手段3と、手段2と3との出力を用いて、ストア命
令の実行結果が格納されることによって前述の全ての命
令列内の命令の内容が書き換えられる可能性を検出する
手段4とを備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はパイプライン処理方
式を採用した情報処理装置に係り、更に詳しくは主記憶
装置に対して命令実行結果を書き込む処理を含む命令、
例えばストア命令によって、その後続命令の内容が書き
換えられる命令の上書きの可能性を検出する情報処理装
置に関する。
【0002】
【従来の技術と発明が解決しようとする課題】パイプラ
イン処理方式、スーパスカラ処理方式、あるいはアウト
オブオーダ処理方式などを採用した情報処理装置におい
ては、1つの命令の実行の終了を待たずに、後続の命令
列が次々と(プリ)フェッチされてパイプラインに投入
され、次々と命令の実行が開始されることによって、性
能の向上が図られている。
【0003】しかしながら、先行して実行されている命
令であって、その実行結果が主記憶装置に書き込まれる
場合に、その書き込まれる内容がすでにプリフェッチさ
れて例えば命令バッファに格納されてしまっている命令
の内容を書き換えるものである場合には、当然書き換え
られる前の命令を実行すべきものではなく、書き換えら
れた後の命令を実行する必要がある。このようにすでに
フェッチされている命令の内容が先行のストア命令の完
了によって書き換えられる可能性は常に存在する。その
ため、この命令上書きの可能性を考慮して命令実行の制
御を行う必要がある。
【0004】この命令内容書き換え可能性の判断は、そ
の内容書き換えを結果的に実行するストア命令の実行完
了までに行われる必要がある。そうでない場合には、特
にそのストア命令がその直後にある命令を書き換えるよ
うな場合に、書き換えられる前の誤った命令が実行され
ることになる可能性が高い。従って、この命令上書きの
可能性を素早く判断するための方法として、簡単な上書
き判定回路を用いて判定時間を短くするか、または主記
憶装置に命令実行結果を書き込むストア命令が存在する
時には命令パイプラインの流れを制限することにより、
上書き可能性の判定時間を確保するか、どちらかの方法
を取る必要があった。
【0005】従来においてはそのようなストア命令が存
在する場合には、そのストア命令の実行結果が確定する
まで命令フェッチ動作を制限して、命令パイプライン上
に存在する命令列の長さが一定以下になるように制御し
て判定回路を簡易化し、上書き可能性を判定する時間を
短くするような方法が取られていた。しかしながら、ス
トア命令はしばしば用いられているため、命令列の中に
ストア命令が現われるたびに命令パイプラインが一旦停
止することになり、処理性能が著しく落ちるという問題
点があった。
【0006】本発明の課題は、上述の問題点に鑑み、命
令実行に先立ってフェッチされる命令の格納用の命令バ
ッファにすでに格納されている命令列、および既に実行
中または実行完了した命令のうちで判定対象となる命令
列の長さを正確に検出し、1つの命令ポートからフェッ
チされた命令の内容が書き換えられる命令上書き可能性
を正確に判定することによって、情報処理装置の処理性
能を向上させることである。
【0007】
【課題を解決するための手段】図1は本発明の原理構成
ブロック図である。同図は命令をフェッチするための命
令フェッチポートを1つ以上備え、その命令フェッチポ
ートからフェッチされた命令の上書き可能性を検出する
情報処理装置の原理構成ブロック図である。
【0008】図1において、命令長検出手段2は例えば
命令フェッチカウンタであって、1つの命令フェッチポ
ートからフェッチされ、最後にフェッチされた命令を含
み、該命令に連続する全ての命令列の長さを検出するも
のであり、本発明の1つの実施形態において1回のフェ
ッチでフェッチされる命令列長が一定である時にはフェ
ッチの回数をカウントして命令列の長さを検出し、また
異なる実施形態においては1回毎のフェッチでフェッチ
される命令列のそれぞれの長さを加算して、命令列の長
さを検出することができる。
【0009】アドレス検出手段3は長さが検出された命
令列内の特定位置に対応する命令のアドレス、例えば最
後にフェッチされて命令バッファに格納されている命
令、またはその次の命令のアドレスIARと、完了した
ストア命令の実行結果が格納されるストア対象アドレス
OARとを検出するものである。
【0010】命令上書き可能性判定手段4は命令列長検
出手段2、アドレス検出手段3の出力を用いて、ストア
命令の実行結果が主記憶装置に格納されることによっ
て、命令バッファにすでに格納されている命令やすでに
実行開始されている命令等の内容が書き換えられてしま
う命令上書き可能性を検出するものである。
【0011】本発明の実施形態においては、命令上書き
可能性判定手段4は前述のストア対象アドレスに格納さ
れるストア命令の実行結果としてのストアデータのデー
タ長を更に用いて、命令上書き可能性を検出することも
できる。
【0012】また本発明の実施形態においては、命令上
書き可能性判定手段4が命令上書きの可能性があると判
定した時、その判定の時点からストア命令の完了時点ま
で、命令の実行完了を一命令のみずつ行わせる命令実行
完了制御手段を情報処理装置が備えることもできる。
【0013】このような命令上書きの判定と、その後の
制御手段を持つことによって、従来のように、ストア命
令が現われるたびに命令フェッチ動作を制限するような
ことは不必要となり、特に実際にはストア命令による命
令の上書きが起こらないような多くの命令列においては
格段の処理性能向上が期待できる。また回路規模につい
ても、命令のステージ数や命令バッファの大きさには無
関係に、命令フェッチポートの数にのみ依存する制御回
路を設けるだけで済み、回路構造も簡単になる。
【0014】本発明においては、例えば後述する判定用
不等式の判定を基本的に多入力加算器を用いて実行する
ことにより、原理的に命令上書きの判定のミスを防ぐこ
とができる。そのような情報処理装置においては、1つ
の命令フェッチポートからフェッチされ、最後にフェッ
チされた命令を含み、該命令に連続する全ての命令列の
長さをカウントする命令フェッチカウンタ手段、例えば
命令フェッチカウンタと、その全ての命令列内の特定位
置に対応する命令のアドレスと、完了したストア命令の
実行結果が格納されるストア対象アドレスと、命令フェ
ッチカウンタの出力値とを用いて、ストア対象アドレス
の範囲の少なくとも一部が、前述の全ての命令列内の命
令のアドレスと重なり、その命令列の少なくとも一部が
書き換えられる命令上書きの可能性を検出する命令上書
き可能性判定手段、例えば多入力加算器とが備えられ
る。
【0015】この命令上書き可能性判定手段、例えば多
入力加算器は、更にストア対象アドレスに格納されるス
トア命令の実行結果としてのストアデータのデータ長を
用いて、命令上書き可能性を検出することもできる。
【0016】このように多入力加算器を用いれば原理的
に判定ミスを防ぐことが可能となるが、特にアウトオブ
オーダ方式を採用する場合には、問題となるストア命令
が非常に早く完了する場合も想定されるため、多入力加
算器を用いて正確な計算を行う時間が確保できないこと
も予想される。このような場合には、信号の遅延を抑制
するために、ある程度簡単な回路を用いる必要がある。
そこで本発明の実施形態においては、多入力加算器の代
わりに2入力の加算器や、セレクタ回路、および簡易な
演算回路を組み合わせて使用することにより、判定の正
確さを保ちつつ、高速な演算を行うことができる。
【0017】本発明の実施の形態においては、命令上書
き可能性判定手段が減算結果の絶対値が小さい時にのみ
正確な演算結果を出力する減算回路を備えることもでき
る。この減算回路は、上位ビット側と下位ビット側とで
それぞれ独立に減算を行う上位側減算回路と下位側減算
回路とを備え、上位側減算回路の出力が0,−1、また
は−2である時、下位側減算回路の出力するキャリー出
力、および減算結果の符号に応じて、減算結果の絶対値
が小さいことを示す信号と共に下位側減算回路の出力を
減算結果として出力するものである。
【0018】このような減算回路を用いる理由は信号の
遅延を抑え、規定の時間内に命令上書きの判定を行うた
めである。すなわち命令の上書きが行われる可能性が高
い場合は、ストア対象アドレスと前述の特定位置に対応
する命令のアドレスとの差の絶対値が小さい場合であ
り、その場合には正確な計算結果が必要になるが、その
差の絶対値が大きい場合には上書きされる可能性は存在
せず、その差が大きくなるということだけが判断できれ
ば上書き可能性が存在しないということが判定できると
いう事実を利用したものである。その事実はフェッチさ
れる命令列の長さも、ストア対象のデータのデータ長
も、値が小さいことに起因している。
【0019】また本発明の実施の形態においては、命令
上書き可能性判定手段が、演算対象となる2つの数に桁
違いの差がある時に加算または減算を行う演算回路を備
えることもできる。この演算回路は、下位ビット側では
絶対値の小さい数のデータ幅以上の加算、または減算を
行って演算結果を出力し、上位ビット側では下位ビット
側での演算の結果キャリー出力がある時には絶対値の大
きい数の上位ビットを1だけインクリメント、またはデ
クリメントして上位側の演算結果とし、キャリー出力が
ない時は絶対値の大きい数の上位ビットをそのまま演算
結果として出力するものである。
【0020】以上説明したように本発明によれば、スト
ア命令による実行結果が格納されるストア対象アドレス
が判明した時点を起点として、先行してフェッチ、ある
いは実行されている後続命令の上書きの可能性を高速に
判断することが可能となり、ストア命令の存在のために
命令パイプラインの流れを制限する必要がなくなる。
【0021】
【発明の実施の形態】図2は本発明の命令上書き可能性
を検出する情報処理装置の全体構成ブロック図である。
この情報処理装置はスーパスカラ方式、およびアウトオ
ブオーダ処理方式を採用しているものとして、まず全体
の動作を説明する。
【0022】命令フェッチ部31においては、セレクタ
10によって選択され、命令アドレスレジスタ11に格
納された内容を用いて、命令アドレス生成回路12によ
って命令アドレスが生成され、キャッシュ13からフェ
ッチされる命令の内容が読み出されて、2つの命令バッ
ファ14aまたは14bのいずれかに格納される。この
ような動作は命令フェッチのパイプライン、すなわち命
令アドレス生成のIAサイクル、キャッシュ13におい
てアドレス変換を行うITサイクル、フェッチされた命
令を命令バッファにセットするIBサイクル、フェッチ
された命令が正しいことを保証するIRサイクルの4ス
テージ構成のパイプラインで実行される。
【0023】命令バッファ14a,14bのいずれかか
ら出力された命令は、セレクタ15を介して命令デコー
ダ16によって解読され、その命令がストア命令である
場合にはストア命令実行処理部19に与えられ、他の種
類の命令である場合にはその他の命令実行ユニットに与
えられる。ストア命令の場合には、ストア命令実行処理
部19からの指示に応じて、オペランドアドレス生成回
路17によってストア命令の実行結果が格納されるべき
オペランドアドレスが計算され、キャッシュ18に与え
られる。またストア命令実行処理部19の処理が完了す
ると、その後命令実行完了処理部20による処理が実行
される。
【0024】命令実行パイプラインは命令をデコードす
るDサイクル、オペランドアドレスを計算するAサイク
ル、例えばストア命令実行処理部19などの命令実行ユ
ニットにおいて命令を実行するXサイクル、レジスタや
メモリの更新を行うUサイクル、命令実行結果の書き込
みなどの実行完了処理を行うWサイクルなどで構成され
ている。命令フェッチ部、命令デコーダ、オペランドア
ドレス生成回路、命令実行ユニット、および実行完了処
理部はそれぞれ連携して動作を行うが、基本的にアウト
オブオーダ方式が採用されているため、命令フェッチの
順序に無関係に、処理可能と判断された命令から次々と
実行される。
【0025】命令フェッチ部31には2つの系統の命令
フェッチポートが設けられており、それぞれの命令フェ
ッチポートA,Bは、1回の命令のフェッチで例えば1
6バイトの命令列を読み込み、48バイト(3回分)の
命令バッファ14a、または14bにその命令列が格納
される。1回の命令フェッチでフェッチされる命令長が
16バイト一定とすれば、命令フェッチ要求が出された
時点で、その要求を出した命令フェッチポートに対応す
る命令フェッチカウンタ25、または26の値がインク
リメントされる。またITサイクルでの命令アドレス
が、命令フェッチポートA,Bにそれぞれ対応する命令
アドレスレジスタ23、または24に格納される。
【0026】命令上書きの可能性を判定するための判定
回路部32の内部で主要な役割を果たすものが、ストア
命令による後続命令の上書き可能性判定回路27,28
である。これらの判定回路27、または28は、2つの
命令フェッチポートA,Bのそれぞれに対応して上書き
可能性があることを示す信号を、オアゲート29を介し
て命令実行完了処理部20に出力する。上書き可能性の
判定のために、それぞれの命令フェッチポートに対応す
る命令アドレスレジスタ23,24、命令フェッチカウ
ンタ25,26の格納内容、およびストア命令の命令実
行結果が格納されるオペランドアドレス、すなわちオペ
ランドアドレス生成回路17の出力が格納されるオペラ
ンドアドレスレジスタ30の格納内容が用いられる。
【0027】命令制御の上では、2つの命令フェッチポ
ートA,Bのうちの1つがカレントポートであり、カレ
ントポート側の命令バッファ14a、または14bから
順次命令がデコードされ、命令実行パイプラインに流さ
れる。カレントポートでないもう一つの命令フェッチポ
ートは、分岐命令の分岐の有無を予測する分岐予測機構
を用いて分岐予測先の命令列を読み込むためのものであ
り、その命令フェッチポートの動作は対応する命令バッ
ファ14a、または14bが一杯になった時点で一時中
断され、分岐予測が成立した場合には、そのポートがカ
レントポートに切り替わって命令実行が続けられ、命令
フェッチ動作が再開される。
【0028】この場合、それまでカレントポートであっ
た側の命令フェッチポートは使用されなくなり、そのポ
ートは開放されると共に、そのポートに対応する命令フ
ェッチカウンタ25、または26がリセットされる。ま
た分岐予測の失敗や割り込み処理の発生など様々な理由
で再命令フェッチ、すなわち命令処理のリトライが行わ
れる場合には、全ての命令フェッチポートが開放される
と共に、全ての命令フェッチカウンタ25,26がリセ
ットされる。
【0029】図2の情報処理装置の動作について、信号
の流れを中心にして更に説明する。(1)は分岐予測が
成立した場合、または再命令フェッチを行う場合の命令
アドレスであり、セレクタ10に選択制御信号として分
岐予測成立、あるいは再命令フェッチなどを指示する信
号(8)が与えられた場合に、信号(1)が選択され
る。
【0030】次に割り込み処理制御部21から出力され
るプロセスステート信号(7)がオンになった時点で、
命令アドレスレジスタ22の内容がセレクタ10によっ
て選択される。このプロセスステート信号は割り込みが
起きていない通常の実行状態であることを示す信号であ
り、上書き可能性のあるストア命令が実行完了された時
点でこのプロセスステート信号を一旦オフとし、その後
再びオンとすることによって、命令実行完了処理部20
から出力される、次に実行完了すべき命令の命令アドレ
スが格納された命令アドレスレジスタ22の内容を用い
て命令フェッチを行うことによって、上書きされる可能
性のある後続命令が再度フェッチし直して実行されるこ
とになり、正しい命令を実行することが可能となる。
【0031】更にこれらの選択制御信号(7),(8)
が与えられていない時には、セレクタ10は命令アドレ
ス生成回路12の出力する、フェッチされる命令のアド
レス(2)を選択し、それを命令アドレスレジスタ11
に与えることによって、次の命令のアドレスが命令アド
レス生成回路12によって生成されることになる。
【0032】判定回路部32に対しては、外部から命令
フェッチポートA,Bに対するクリア信号(4),
(5)がそれぞれ命令フェッチカウンタ25,26に与
えられる。また命令の上書きの可能性がある場合には、
オアゲート29から後続命令の上書き可能性を示す信号
(14)が命令実行完了処理部20に出力される。
【0033】ストア命令実行処理部19からはキャッシ
ュ18に対してストアデータ(12)が与えられると共
に、判定回路部32の内部の上書き可能性の判定回路2
7,28に対してストア命令の実行結果としてのストア
されるデータの長さ(13)が与えられ、更に命令実行
完了処理部20に対して命令完了報告信号(10)が出
力される。なお、ここでは例えばストア命令実行処理部
19内の図示しないレジスタに格納されている実行結果
を(キャッシュ)メモリに書き込むものとして実施形態
を説明するが、メモリからメモリに書込みを行う場合に
も本発明を適用できることは当然である。
【0034】命令実行完了処理部20に対しては、キャ
ッシュ18から主記憶部からのストアデータ受領信号
(15)が与えられ、命令実行完了処理部20から命令
アドレスレジスタ22に対しては前述のように次に実行
完了すべき命令の命令アドレス(11)が与えられ、割
り込み処理制御部21に対しては命令の上書き可能性が
あると判定された場合に後続の命令の中止、破棄を指示
する信号(3)が出力され、また判定回路部32の内部
の命令フェッチカウンタ25,26に対して、前述のよ
うにそれぞれの命令フェッチポートに対応するクリア信
号(4),(5)が出力される。
【0035】割り込み処理制御部21からは、命令実行
完了処理部20からの後続命令の中止、破棄を指示する
信号(3)の入力の時点で、CPU全体に命令実行の中
止を指示する(後述するリストア_ステート信号と同
じ)割り込み発生信号(9)が出力されると共に、後続
命令の中止、破棄が行われた後に、前述のプロセスステ
ート信号(7)がセレクタ10に対して選択制御信号と
して出力される。
【0036】図3は本発明による命令上書き可能性検出
方法の説明図である。同図において図2の命令バッファ
には例えば5回分のフェッチされた命令列が格納されて
いるものとし、最も右側、すなわち最初にフェッチされ
た命令列がデコードされて命令処理に用いられるものと
する。そして例えば最後にフェッチされた1回分(F)
の命令のアドレスが、前述のITサイクルにおいて2つ
の命令アドレスレジスタのいずれかに与えられるIAR
を示すものとする。
【0037】図3においてストア対象アドレスOAR、
すなわち前述のストア命令の実行結果が格納されるオペ
ランドアドレスがどの位置にあり、ストア対象範囲S、
すなわちストアされるデータのデータ長がどの位である
かによって、ストア対象範囲(のデータ)Sがn回分フ
ェッチされた命令列を書き換える命令上書きについて
は、次の不等式が成立する時にその可能性があるものと
判定される。
【0038】 −F<IAR−OAR<F×(n−1)+S (1) ここで右側の不等式はIAR−OARが正である場合に
対応し、OARが図3の右側または中央に示されるよう
な位置にあれば命令上書き可能性があると判定される。
左側の不等式はIAR−OARが負の場合に対応し、O
ARが図3の左側にあるような場合に上書き可能性があ
ると判定される。
【0039】図3では5回分フェッチされた命令列のう
ち最初にフェッチされた1回分の命令列がデコードされ
て命令処理に用いられるものとしたが、これは本発明の
実施形態としてはむしろ特殊な場合であり、デコードさ
れて命令処理に用いられる命令列は、例えば右から3番
目の、3回目にフェッチされた命令列であっても全く差
し支えない。
【0040】図3で説明した場合は前述のように5回分
のフェッチされた命令が全て図2の命令バッファ14
a、または14bに格納されている場合であり、命令上
書きの可能性の判定対象となる命令列は全て命令バッフ
ァに格納されていることになるが、例えば3回目にフェ
ッチされた命令列がデコードされて命令処理に用いられ
る場合は、その前の2回分のフェッチされた命令列に対
する命令実行はすでに開始されており、一部の命令実行
は完了している場合もあり得ることになる。
【0041】すなわち本発明の実施形態においては、例
えば分岐命令で分岐が成立した場合を起点として、1つ
の命令フェッチポートでフェッチされ、最後にフェッチ
された命令を含み、その命令に連続する全ての命令列が
命令上書きの判定対象となる。そこで判定対象となる命
令列の命令は、一般に命令バッファに格納されている命
令だけでなく、すでに命令の実行が開始され、または命
令実行が完了した命令をも含むことになる。
【0042】この後続命令の上書き可能性の判定対象と
なる命令列の長さは、前述のように命令フェッチカウン
タによってカウントされるが、そのカウントの起点は例
えば分岐が成立した分岐命令によって命令シーケンスが
代わる点、すなわち前述のようにフェッチポートの切り
替えが行われる点であり、分岐命令による分岐先の命令
が起点とされてカウントが行われる場合と、例えば分岐
予測に失敗した時などに再命令フェッチが行われ、パイ
プラインがクリアされる時点が起点となってカウントが
行われる場合とがある。そこで例えば分岐が成立する分
岐命令がなかなか出て来ないような場合には、判定対象
となる命令列の長さはかなり長くなることもあるが、そ
のような場合にもその長い連続する命令列全体が命令上
書きの判定対象として、上書き可能性の判定が行われ
る。
【0043】命令フェッチポートが切り替わる場合に
は、分岐成立前の命令列に対する上書き可能性の判定は
以前のカレントポート側で行われ、また再命令フェッチ
が行われる場合にそれより以前の命令に対する処理は完
了しており、判定対象として考える必要はなく、命令フ
ェッチカウンタのクリアが行われた以後のストア命令の
影響が及ぶ範囲は判定対象として全てカバーされること
になる。
【0044】後述するように、命令フェッチカウンタの
クリアを含むフェッチポートの解放は次の2つの条件の
いずれかが成立した時に実行される。第1の条件は、分
岐予測が成立したことが確認され、カレントフェッチポ
ートが分岐予測先の側に切り替えられ、それまでカレン
トポートであった命令フェッチポートのクリアが必要と
なることである。第2の条件は、例えば分岐予測失敗や
その他の原因によって、後続の正しい命令列の処理を命
令のフェッチからやり直す再命令フェッチや、割り込み
などに伴い、全ての命令フェッチポートと実行パイプラ
イン全体のクリアが必要になることである。このいずれ
かの条件が成立した時に、後述する命令フェッチカウン
タのクリアなどが行われる。
【0045】図4は命令フェッチカウンタの構成例を示
すブロック図である。同図において命令フェッチカウン
タはインクリメンタ41と、データフリップフロップ
(D−FF)42から構成されている。インクリメンタ
41の片方の入力には、現在のカウンタ値としてのプリ
フェッチオーダ_カウンタ_X(PFO_CTR_X,
nビット)が入力される。ここでXには命令フェッチポ
ートに対応してA、またはBのいずれかが用いられる。
インクリメンタ41のもう一方の入力には、対応するポ
ートA、またはBへのフェッチリクエスト要求(FCH
_リクエスト_ポート_X)が入力され、フェッチリク
エスト要求がある毎に、カウンタ値としてのPFO_C
TR_Xの値はインクリメントされ、D_FF42に入
力される。なお図2の命令バッファ14a、または14
bが一杯となり、空きが無い場合にはFCH_リクエス
ト_ポート信号は出力されず、カウンタ値PFO_CT
R_Xの値はインクリメントされない。
【0046】D_FF42の出力Qがカウンタ値として
のPFO_CTR_Xであり、クロックの入力時点でD
入力端子に与えられている値がカウンタ値として出力さ
れ、命令フェッチポートを解放する信号クリア_ポート
_Xの入力時点でカウンタ値はリセットされる。
【0047】図5は命令フェッチカウンタの異なる構成
例のブロック図である。図4の命令フェッチカウンタ
が、1回でフェッチされる命令列の長さが一定の場合
に、フェッチされる回数をカウントするのに対して、図
5のカウンタはフェッチされた命令のバイト数を積算す
るものである。
【0048】図5において、分岐命令における分岐先の
命令のフェッチや再命令フェッチが行われる場合におい
て、最初の1回のフェッチは必ずしも16バイトではな
く、フェッチされる命令の先頭アドレスの下位3ビット
(=x)に応じて(16−x)バイトフェッチされ、一
般に次々と後続命令のフェッチを行う場合には8バイト
アラインされているために、16バイトずつのフェッチ
が可能である場合を想定した構成となっている。
【0049】減算器43によって16からフェッチされ
る命令の先頭アドレスの下位3ビットが減算され、16
−xバイトがフェッチ(FCH)_バイト(4ビット)
として求められ、その結果が現在のカウンタ値としての
ポート_X_フェッチ_バイト(kビット)と加算器4
4によって加算され、その加算結果はD−FF45のD
入力端子に与えられる。なお最初のフェッチから16バ
イトフェッチされる場合は減算器43は不要である。
【0050】D−FF45では、フェッチ_リクエスト
_ポート_X信号がLである場合には、D−FFの動作
は抑制(インヒビット)されるが、そうでなければクロ
ック入力時点で入力端子Dへの入力信号がカウンタ値
(ポート_X_フェッチ_バイトの値)として出力され
る。そしてリセット端子にクリア_ポート_X信号が入
力された時点で、カウンタ値はリセットされる。
【0051】図6は命令フェッチカウンタの出力を利用
した命令上書き可能性判定回路の構成例である。この回
路は、前述の命令上書きの可能性を示す不等式の右側が
成立することを示す信号として、IAR_マイナス(M
N)_OAR_ビット_1_X_オール_0を出力する
ものである。
【0052】図6において、n+1個のアンドゲート4
1 〜47n+1 には、IARとOARとの差(Nビッ
ト)のビット反転信号のそれぞれ上位ビットが与えられ
る。mは1回の命令フェッチでフェッチされる命令列長
(命令の数)である。前述のように1回のフェッチで1
6バイトの命令列がフェッチされるものとすると、mは
4となる。従って一番下のアンドゲート47n+1 の入力
としては、IARとOARとの差のビット反転結果のう
ちで下位4ビットを除く上位N−m=N−4ビットが与
えられることになる。
【0053】例えば図4において、命令フェッチカウン
タのカウント値(プリフェッチオーダ_カウンタ_X)
が0の場合、その命令フェッチポートが有効であれば1
回の命令フェッチが行われていることになり、(1)式
の右側の不等式、すなわちIARとOARとの差が正の
範囲を判定する場合にはこの差が16(=F×0+S)
より小さいことを判定できれば、命令上書き可能性があ
ると判定できることになる。但しここではストア命令の
実行結果としての主記憶への書き込みデータ長Sは最大
16バイトであるとし、それが実際に16バイトより小
さくても16バイトの書き込みがあるものとして扱う。
従って実際の書き込みデータ長が小さい場合には、誤判
定の危険性が残っている。
【0054】IARとOARとの差が16より小さいと
いうことは、15以下であり、2進数に直した時には下
位m=4ビット以外は全て0となる。従ってその反転結
果において上位N−4ビットは全て1となり、アンドゲ
ート47n+1 の出力、従ってアンドゲート48n+1 およ
びオアゲート49の出力はHとなり、右側の不等式が成
立したことを示す信号がオアゲート49から出力され
る。
【0055】命令フェッチカウンタのカウント値が1、
すなわちその最下位ビット(nビット目)が1の場合に
は、2回以下の命令フェッチが行われていることにな
り、IARとOARとの差が32(=F×1+S)より
小さいことを判定できればよい。すなわち2進数で下位
m+1=5ビット以外は0である。このためアンドゲー
ト47nの出力、48nの出力、オアゲート49の出力
が1となり、右側の不等式が成立したことを示す信号が
出力される。
【0056】命令フェッチカウンタのカウント値が2、
または3の時には、4回以下の命令フェッチが行われて
いるため、IARとOARとの差が64(F×3+S)
より小さいことを判定できればよい。すなわち2進数で
は下位m+2=6ビット以外が0であることになり、図
示しないアンドゲート47n-1 、すなわちIARとOA
Rとの差の反転結果のうち上位N−m−2=N−6ビッ
トが入力されるアンドゲートの出力が1となり、その出
力がこれも図示しない、カウンタ値nビットのうちで
(n−1)ビットの値が入力されるアンドゲート48
n-1 の出力と、オアゲート49の出力が1となり、右側
の不等式が成立することを示す信号が出力される。
【0057】命令フェッチカウンタの値が4以上、7以
下の時には、8回以下の命令フェッチが行われているこ
とになり、IARとOARとの差が128(=F×7+
S)より小さいことを判定できればよい。すなわち2進
数で下位m+3=7ビット以外が0であり、図示しない
下位7ビット以外のビット反転結果が入力されるアンド
ゲートの出力が1となり、この出力がカウンタ値の(n
−2)ビット目の値(=1)によって選択されることに
より、オアゲート49から右側の不等式の成立を示す信
号が出力される。以下同様である。
【0058】図7は図6の判定回路の変形例である。同
図においてはIARとOARの減算結果をビット反転し
た値のうち、例えば上位N−n−4ビットは分離されて
アンドゲート51のみに与えられ、それより下位ビット
がアンドゲート481 〜48 n+1 とオアゲート49によ
って構成されるアンド−オアセレクタの前段に位置する
アンドゲートに出力される。
【0059】例えばアンドゲート50n+1 に対しては、
IARとOARとの差のビット反転結果のうち、上位か
らN−n−3ビット目からN−4ビット目までが入力さ
れ、これらの値が全て1であれば、アンドゲート48
n+1 、オアゲート49の出力が1となり、このとき更に
上位のビットが全て1であってアンドゲート51の出力
が1となればアンドゲート52の出力、すなわち右側の
不等式の成立を示す信号がアンドゲート52から出力さ
れる。
【0060】同様にアンドゲート50nとアンドゲート
51とによって、実質的に図6のアンドゲート47nと
同様の動作が行われ、アンドゲート52から右側の不等
式の成立を示す信号が出力される。一般にゲートへの入
力数に比例して遅延が増大すること、および(IAR−
OAR)の演算においても上位ビットの計算が遅れるこ
とから、図7の構成をとることによって図6の回路に比
較して信号遅延を抑えることができる。
【0061】図8は図6、または図7の判定回路の出力
を利用して前述の不等式全体の成立を示すストアインス
トラクションストリーム(STIS)インレンジ信号を
出力する回路の構成図である。
【0062】図8において図6、または図7の回路の出
力、すなわち右側の不等式の成立を示す信号がオアゲー
ト54の一方の入力に入力される。オアゲート54への
もう一方の入力はアンドゲート53の出力である。アン
ドゲート53に対してはIARとOARとの差そのもの
の、上位(N−4)ビットの値が与えられる。アンドゲ
ート53は前述の不等式のうち左側の不等式の成立を判
定するものであり、IARとOARとの差が−F、すな
わち−16より大きいこと、言いかえるとIARとOA
Rとの差が負であり、しかもその絶対値が15以下であ
ることを判定するために、下位4ビットを除く全ての上
位ビットの値が1であることを検出するものである。
【0063】オアゲート54の出力が1、すなわち前述
の不等式のうち左側の不等式、または右側の不等式のい
ずれかが成立し、その出力がフェッチポートが有効であ
ることを示すフェッチ_ポート_バリッド信号と共にア
ンドゲート55に入力されることにより、アンドゲート
55から命令上書き可能性を示すストアインストラクシ
ョンストリーム(STIS)_イン_レンジ信号が出力
される。
【0064】図9は、2つの命令フェッチポートA,B
に対応するSTIS_イン_レンジ信号から、全体とし
て命令上書きの可能性があることを示す信号(STI
S)を出力する全体判定回路であり、オアゲート56は
ポートA、またはBに対応して命令上書き可能性を示す
信号が入力された時点で、全体としての命令上書き可能
性を示す信号STISを出力する。
【0065】図10は図6で示した右側の不等式の成立
を示す判定回路の更に異なる変形例の構成図である。前
述のように、図6ではストア命令の実行結果として主記
憶装置に書き込まれるデータのデータ長は16バイト一
定であるものとして扱ったが、図10はこれが16バイ
ト以下、あるいは256バイトのいずれかである場合の
判定回路の構成例である。16バイト以下の場合には、
図6におけると同様に命令フェッチカウンタの出力nビ
ットがセレクタ59によってそのまま用いられ、図6に
おけると全く同様の動作が行われる。
【0066】これに対して256バイトのストアが行わ
れる場合には、256バイト_ストア_バリッド信号が
Hとなり、加算器58の出力がセレクタ59によって選
択されて、アンド−オアセレクタの選択制御に使用され
る。加算回路58は命令フェッチカウンタの値nビット
に15を加算するものである。主記憶装置に書き込まれ
るデータのデータ長がS=256バイトであり、1回の
フェッチバイト数がF=16バイトの場合には前述の
(1)式は −F<IAR−OAR<16×(n+15) となり、命令フェッチカウンタの値に15を加算したも
のをアンド−オアセレクタの選択制御信号として用いる
ことができる。ストアされるデータのデータ長が256
バイト以外の値を取る時にも、同様にして命令フェッチ
カウンタの値に対応する値を加算することによって、命
令上書き可能性を判定することが可能となる。
【0067】次にストア命令による後続命令列の上書き
可能性が検出された場合の、後続命令に対する制御につ
いて説明する。図11は、図9のオアゲート56から後
続命令の上書き可能性を示すSTIS信号が出力されて
から、該当するストア命令が完了したことを示すコミッ
ト_ストア信号(図2の命令完了報告信号(10)と同
じ)が入力されるまでの間、複数の命令を同時に完了さ
せないようにする、すなわち命令を1つずつしか完了さ
せないようにすると共に、コミット_ストア信号が入力
した時点で、実行が開始されているにもかかわらず、完
了していない命令に関する処理を中断させ、すでに命令
バッファにフェッチされている命令列を破棄するため
の、後続命令制御回路の構成ブロック図である。この回
路は図2の命令実行完了処理部20内に設けられる。
【0068】図11においてセットリセットフリップフ
ロップ63は、STIS信号の入力時点でセットされ、
その出力Qとして複数命令を同時に完了させないように
するために使用される信号、STIS_再命令フェッチ
(REIFCH)_ペンディング信号が出力される。そ
してコミット_ストア信号がリセット端子に入力された
時点で出力Qがリセットされると共に、アンドゲート6
4から、実行完了していない命令の中断処理やすでにフ
ェッチされている命令列を破棄するために使用される信
号としての、コミット_STIS_REIFCHが出力
される。
【0069】ここでストア命令による上書き可能性が検
出された時点から該当するストア命令が完了するまでの
間、命令を1つずつしか完了させないようにする理由に
ついて説明する。前述のように、本発明の実施形態にお
いてはスーパスカラ方式が用いられており、例えば3つ
の命令を同時に完了させることが可能である。しかしな
がらアウトオブオーダ方式においても、命令の実行開始
は実行開始が可能となったものから命令の実行順序に無
関係に開始することができるが、命令の完了はインオー
ダで行われなければならず、命令はその実行順序に従っ
て完了させる必要がある。
【0070】このために、例えば待ち合わせ制御のため
のリザベーションステーションとしての、コミットスタ
ックエントリ(CSE)が使用される。CSEには命令
1つ1つに対応してエントリが設けられ、そのエントリ
それぞれに対応して命令の開始と完了が制御される。
【0071】このように命令は実行が完了することによ
って初めて実行されたことになり、実行完了されていな
い命令は論理的には実行されてないものと等しい。そし
て後続命令を上書きする可能性のあるストア命令が実行
完了するためには、そのストア命令の前の命令列は全て
実行完了している必要がある。あるいはそのストア命令
と同じサイクルにおいて実行完了する必要がある。
【0072】ストア命令のWサイクルの終了前に後続命
令の上書き可能性の判定を終える必要がある。その理由
は、ストア命令のWサイクルと同じタイミングで後続命
令も完了してしまう可能性が存在するためである。
【0073】問題は、該当するストア命令と同時に後続
する命令が1つ、または2つ同時に完了する場合であ
り、もしもそのストア命令によって同時に完了する命令
が上書きされる可能性がある場合には、同時に完了する
命令は誤ったまま実行完了してしまう可能性があること
になる。このため本発明の実施形態においては、後続命
令を上書きする可能性のあるストア命令が検出された時
には、そのストア命令が完了するまでは1つずつしか命
令を完了させないことによって、そのストア命令の後続
命令が1つでもそのストア命令と同時に完了することを
避けるための制御が行われる。
【0074】スーパスカラ方式では、本来完了可能な命
令はシステムにおいて可能な限り最大限多数完了させる
仕組みが用いられている。従って完了可能な命令が複数
あるにもかかわらず、いくつかを選択的に完了させる仕
組みは一般的には用いられていない。そこで図11では
複数の命令を同時に完了させるのでなく、命令は1つず
つしか完了させないようにすることによって比較的制御
回路を簡単にして、後続命令を書き換える可能性のある
ストア命令が完了するまでの制御が行われる。
【0075】図12は図11と共に命令を1つずつしか
完了させないための制御回路の構成図である。この回路
も命令実行完了処理部20内に設けられる。前述のよう
に、本発明の実施形態においては3つの命令を同時に完
了させることが可能となっているが、その3つの命令は
前述のコミットスタックエントリ(CSE)の3つのエ
ントリ、すなわちトップ、セカンド、サードのエントリ
に対応している。ここでトップのエントリは最も実行順
序の古い(最初に完了させるべき)命令に対応し、サー
ドのエントリは最も実行順序の新しい(最後に実行完了
させるべき)命令に対応するエントリである。
【0076】これらの3つのエントリに対応して、命令
を完了させるべきことを示す信号が、CSEからコンプ
リート信号として、トップのエントリに対してはバッフ
ァ65に、セカンドおよびサードのエントリに対して
は、アンドゲート66,67の一方の入力端子に入力さ
れる。
【0077】バッファ65、アンドゲート66,67か
らはそれぞれのエントリに対応する命令に関する完了処
理、すなわち実行結果のレジスタへの書き込みや、メモ
リへの書き込み動作などを指示するための、レジスタの
管理部やメモリ、キャッシュなどに与えられるコミット
信号が出力されると共に、これらの出力はCSEの該当
するエントリを無効にして、CSEに対するポインタ
(トップエントリを指し示すポインタ)を、次に実行完
了すべき命令に対応するエントリに移動させるために使
用される。
【0078】図11のSR−FF63の出力、すなわち
STIS_REIFCH_ペンディング信号は、インバ
ータ68によって反転されて2つのアンドゲート66,
67のそれぞれ一方の入力端子に与えられる。従ってS
R−FF63の出力QがHである間は、アンドゲート6
6,67からはCSEのセカンドエントリ、およびサー
ドエントリに対応するコミット信号が出力されず、対応
するエントリに関連する命令の完了動作は実行されず、
その命令は完了待ちとなる。
【0079】図13,図14はストア命令による後続命
令の上書き可能性が検出された時点から、そのストア命
令の実行が完了するまで、図11,図12とやや異なる
制御を後続命令に対して行う制御回路の構成図である。
これらの回路も命令実行完了処理部20内の回路であ
る。図13,図14においては、上書き可能性が検出さ
れた時点からそのストア命令の実行が完了するまでの間
は、同時に実行完了するものの中にストア命令がなけれ
ば複数の命令を同時に完了させ、あればそのストア命令
までを同時に完了させる制御を行うものである。
【0080】図13においてSR−FF70は、図11
におけるFF63と同様にSTIS信号の入力時点でセ
ットされ、その出力QはHとなる。そしてオアゲート7
2の出力としてのコミット_ストア信号の入力時点でリ
セット待ち(次のクロックでリセット)にされると同時
に、アンドゲート71から図11のアンドゲート64の
出力と同じコミット_STIS_REIFCH信号が出
力される。
【0081】オアゲート72に対しては、3つのエント
リに対応して実行完了可能な信号がストアポートを使用
することを示す信号、すなわち対応する命令がストア命
令であることを示す信号が入力される。そして3つのエ
ントリに対応する命令の1つでもストア命令であれば、
オアゲート72からコミット_ストア信号が出力される
ことになる。一方バッファ73に対してはトップエント
リに対応するコミット_ユーズ_ストアポート(SP)
信号が与えられ、バッファ73の出力としてはトップエ
ントリに対応する命令のみが実行完了可能であることを
示すコミット_オンリ−信号が出力される。この出力
は、図14で説明するようにトップエントリに対応する
命令だけに関して実行完了処理を行わせるために使用さ
れる。
【0082】これに対してアンドゲート74の出力は、
トップとセカンドの2つのエントリだけに対応して命令
を実行完了させるために用いられるコミット_オンリー
信号であり、この出力はトップエントリに対応するコミ
ット_ユーズ_ストアポート信号がLで、インバータ7
5の出力がHとなり、かつセカンドエントリに対応する
コミット_ユーズ_ストアポート信号がHの時に、Hと
なる。すなわちセカンドエントリに対応する命令が該当
するストア命令であり、この場合にはトップエントリと
セカンドエントリに対応する2つの命令を同時に完了さ
せることができることになる。
【0083】これに対して3つのエントリに対応するコ
ミット_ユーズ_ストアポート信号のいずれもがLであ
る場合には、オアゲート72の出力およびアンドゲート
71の出力はいずれもLであり、特に後続命令の完了に
対する特別の制御が行われることはなく、一般的に3つ
の命令を同時に完了させることが可能となる。
【0084】図14は図13の出力を用いて実際に命令
の実行完了を制御するための制御回路を示す。バッファ
76、アンドゲート77,78は、図12におけるバッ
ファ65、アンドゲート66,67と同様の動作を行う
ものである。アンドゲート77はインバータ79の出力
がH、すなわち図13のバッファ73の出力がLであ
り、トップエントリに対応するコミット_ユーズ_スト
アポート信号がLである場合に、セカンドエントリに対
応する命令を実際に実行完了させるためのコミット信号
を出力する。
【0085】またアンドゲート78は、更にインバータ
80の出力がH、すなわち図13のアンドゲート74の
出力がLである場合に、サードエントリに対応する命令
の実行を実際に完了させるためのコミット信号を出力す
る。
【0086】これによって3つのエントリのうちでトッ
プエントリに対応する命令がストア命令である場合には
そのストア命令が、またセカンドエントリに対応する命
令がストア命令であばトップとセカンドの2つのエント
リに対応する命令が実行完了となり、またサードエント
リに対応する命令がストア命令である場合には通常の場
合と同様に3つの命令の実行完了が同時に行われると共
に、いずれの場合にも図13のオアゲート72の出力と
してのコミット_ストア信号がHとなる。
【0087】図15,図16は実行が完了していない後
続命令の処理を中断させると共に、すでにフェッチされ
ている後続命令列を破棄するための処理中断および命令
破棄制御回路の構成を示す。図15の回路は図2の割込
み処理制御部21の中に、また図16の回路は例えば命
令フェッチ部31の内部に設けられる。
【0088】図15において、例えば図11のアンドゲ
ート64の出力がオアゲート82の一方の入力に与えら
れると、SR−FF83がセットされ、その出力Q、す
なわちリストア_ステート信号(9)がHとなる。この
リストア_ステート信号は、現在実行が完了した命令よ
りも後の命令に関する処理を中断させるために、一般の
割り込み処理と同様の制御を行うものである。
【0089】このリストア_ステート信号は、図16の
2つのオアゲート86,87のそれぞれ一方の入力端子
に与えられ、他方の入力端子に与えられるクリア_ポー
ト_ノーマル信号がHである場合と同様に、2つの命令
フェッチポートA,Bに対応するクリア_ポート信号を
出力する。このクリア_ポート信号は、それぞれの命令
フェッチポートに対応して、すでにフェッチされている
後続命令を破棄させるものである。
【0090】ここで2つのオアゲート86,87の一方
の入力端子に与えられるクリア_ポート_ノーマル信号
は、例えば図2に図示されていない分岐命令処理部にお
いて分岐予測が成立したことが確認され、それまでフェ
ッチされていた命令が不必要となった場合に出力される
ものである。あるいは分岐予測に失敗した場合には、再
命令フェッチを行うため、全ての命令フェッチポートに
対応してフェッチされていた命令をクリアするために使
用される。
【0091】またオアゲート86,87の出力としての
クリア_ポート信号は、すでにフェッチされている命令
の破棄および命令フェッチカウンタのクリアのみに使わ
れるものであり、ここでは命令フェッチ部に設けられて
いるものとしたが、命令実行完了処理部の内部に設ける
ことも可能である。
【0092】図15において、前述のように図11のア
ンドゲート64の出力がHとなった時点でSR−FF8
3がセットされるものとしたが、この時点で一般的な割
り込み発生信号が出力されていないものとすると、もう
1つのSR−FF84の反転出力 外1 はHとなって
おり、SR−FF83のセット端子とリセット端子に
【0093】
【外1】
【0094】は同時にHが入力されていることになる。
SR−FF83はセット端子とリセット端子に同時にH
が入力された場合にはセットが優先されるものであり、
その結果リストア_ステート信号が出力されることにな
るが、図11のアンドゲート64の出力は、SR−FF
63がコミット_ストア信号の入力直後のクロックでリ
セットされることになるため、短期間だけHとなり、そ
の期間だけSR−FF83からリストア_ステート信号
が出力されることになる。
【0095】また図15において、一般的な割り込み処
理として割り込み発生信号がオアゲート82に入力され
た場合にも、SR−FF83はセットされ、リストアス
テート信号が出力されるが、この割り込み発生信号はS
R−FF84のセットにも使用され、割り込み処理中で
あることを示すインターラプト(RUPT)_ラッチ信
号が出力される。そしてSR−FF84は割り込み処理
終了信号の入力時点でリセットされる。
【0096】続いて本発明の異なる実施形態についてさ
らに説明する。以上に述べた実施形態においては、スト
ア命令による後続命令の上書き可能性を判定する不等
式、すなわち(1)式の判定を行うにあたって、この不
等式を右側の不等式と左側の不等式、すなわちIAR−
OARが正の場合と負の場合とを別々に判定する回路を
使用したが、これから述べる実施形態では基本的には1
つの不等式の成立を判定するために多入力の加算器を用
いるものとする。
【0097】まず図3において、IARの位置として5
回分フェッチされた命令のアドレスの中で最後にフェッ
チされた命令のアドレスを記憶するのではなく、IAス
テージにおいてフェッチ要求が出される最新のアドレス
としての、n回分のフェッチ命令の次の命令のアドレス
が記憶されるものとする。また、本実施形態において
は、各フェッチ要求でフェッチされる命令列の長さは必
ずしも一定でなくても良い。本実施形態では、図5のカ
ウンタを用いて、各命令フェッチ要求による命令バイト
数を積算することができる。このカウンタによって積算
されたフェッチバイト数をLとすれば、判定用の不等式
は次式となる。
【0098】0<IAR−OAR<L+S あるいは、図4のカウンタを用い場合には、判定用の不
等式は次式となる。 0<IAR−OAR<(F×n)+S 図3を見ても明らかなように、IARがこのような位置
として記憶されるとき、上の不等式を次のように変形し
て、命令上書きの可能性の判定に使用できる。
【0099】 0<IAR−OAR かつ 0<OAR−IAR+L+S (2) あるいは、 0<IAR−OAR かつ 0<OAR−IAR+(F×n)+S (3) なお。前述のようにIARがn回分フェッチされた命令
のアドレスの最後のものであり、またフェッチ毎の命令
列の長さが一定でない場合には、フェッチ毎の命令列長
の最大値をMとし、積算されたフェツチバイト数をLと
すれば判定用の不等式は次式となる。
【0100】−M<IAR−OAR<L+S 図17は(2)あるいは(3)式を評価する上書き可能
性判定回路の構成ブロック図である。同図においては、
(2)あるいは(3)式の後側の不等式を評価するため
に4入力加算器90が使用される。この4入力加算器に
対する入力は、n回分フェッチされた命令の次の命令の
アドレスのビット反転結果−IAR、ストア命令によっ
て命令実行結果としてのデータが格納されるオペランド
アドレスOAR、すでにフェッチされている命令のバイ
ト数(フェッチ_バイト,F×n)、およびストア命令
の実行結果として格納されるデータのデータ長(ストア
_バイト、S)である。
【0101】4入力加算器90の演算結果は、例えば位
相が反転されているため(2)式が成立する場合には負
となり、その符号はインバータ91によって反転され、
アンドゲート92の片方の入力端子に入力される。一方
アンドゲート92のもう一方の入力端子には、比較器9
3の出力が入力される。この比較器93は(2)あるい
は(3)式の前側の不等式を評価、すなわちIARとO
ARを比較するものであり、IARがOARより大きい
時に比較結果としてHを出力し、その結果アンドゲート
92の出力はHとなり、アンドゲート94に入力され
る。アンドゲート94にはフェッチポートが有効である
フェッチ_ポート_バリッド信号が入力されており、有
効である場合にはアンドゲート94から、図8のアンド
ゲート55の出力と同様に、そのフェッチポートに対応
して上書き可能性があることを示すSTIS_イン_レ
ンジ信号が出力される。
【0102】このような実施形態においては、例えば4
入力の加算器を用いることによって原理的に誤判定をな
くすことができ、命令上書きの可能性を正しく判定する
ことができる。しかしながら、特にアウトオブオーダ方
式が採用されている場合には、該当するストア命令が非
常に早く完了される場合も想定され、多入力加算器を用
いて正確に計算を行う時間が確保できないことも考えら
れる。
【0103】アウトオブオーダ方式ではストア命令よる
書き込み動作は書き込むべきデータがそろった時点で実
行できる。そこでアドレス計算用のAサイクルとストア
用のデータがそろったことを確認するXサイクルとの間
が空かず、上書き可能性の判定は最短の場合2クロック
で終了しなければならない。最近のクロックサイクル短
縮の要求に伴う1クロック内処理の限界を考慮すると演
算回路の高速化がさらに必要となる。
【0104】このような場合には、信号遅延を抑えるた
めに、ある程度簡単な回路を使用する必要がある。そこ
で、多入力加算器の代わりに2入力の加算器や、簡単な
演算回路を組み合わせて用いることによって、判定の正
確さを保ちつつ、高速な計算を実行することができる。
このような簡単な演算回路を使用できる理由としては、
例えば前述の(2)または(3)式において命令フェッ
チカウンタの出力としての、フェッチされている命令列
長(L)もしくは(F×n)や、ストア命令によって格
納されるデータのデータ長(S)が、最大でも命令アド
レスIARやストア対象アドレスOARの取り得る範
囲、すなわちアドレス空間に比べてかなり小さい(桁数
で半分以下)ことがあげられる。
【0105】通常多数ビットの加減算回路では、桁上げ
先見回路と桁上げ伝搬回路が併用される。このような桁
上げ伝搬回路ではキャリーチェーンが存在し、繰り上が
りが生じると上位ビットの計算に時間がかかる。しかし
ながら図18に示すように、演算対象となる数値のうち
片方が小さい場合には、上位ビットで繰り上げが生じる
ケースは極めて少なく、図18(a) に示すように下位ビ
ットの演算の結果として繰り上がり(桁借り)が発生す
る時のみであり、その時上位ビットは1加算(減算)さ
れる。これに対して、(b) に示すように下位ビットの演
算の結果としての繰り上がり(桁借り)が発生しない時
には、基本的には上位ビットの演算は不必要となる。
【0106】図19は、このように演算対象としての2
つの数に桁違いの差がある場合の加算回路の構成例を示
す。ここでデータ1はデータ2に比べて桁違いに大きい
ものとし、基本的にはデータ1の下位側とデータ2との
加算が必要とされるものとする。
【0107】図19において加算器96はデータ1の下
位側とデータ2とを加算し、その加算結果を出力すると
共に、キャリー出力をセレクタ97に対する選択制御信
号として出力する。セレクタ97は、キャリー出力がな
い場合にはデータ1の上位信号をそのまま出力し、キャ
リー出力がある場合にはデータ1の上位側にインクリメ
ンタ98によって1が加算された結果を出力する。セレ
クタ97の出力としての上位側と、加算器96の出力と
しての下位側とが合成されて、データ1とデータ2との
加算結果が得られる。
【0108】図20は、図19におけると同様に、2つ
の数に桁違いの差がある場合の減算回路の構成例であ
る。同図において減算器100はデータ1の下位側とデ
ータ2との差を計算し、その結果を出力すると共に、桁
借りがある場合にはキャリー出力を選択制御信号として
セレクタ101に与える。セレクタ101はキャリー出
力がない場合にはデータ1の上位側をそのまま出力し、
キャリー出力がある場合にはデクリメンタ102の出
力、すなわちデータ1の上位側から1を減算した結果を
出力する。
【0109】図21は、データ1とデータ2との差が小
さい場合に、その差が小さいことと、その差自体を出力
する減算回路の構成例である。例えば図3において命令
アドレスIARとストア対象アドレスOARとの差が正
であり、その差が十分に大きい時には、後続の命令が書
き換えられる上書き可能性は存在しないことになり、デ
ータ1をIAR、データ2をOARとする時、命令上書
きの可能性の判定が必要となるのはデータ1とデータ2
との差が小さい場合に限られ、そのような場合に図21
の減算回路が使用される。
【0110】図21において、加算器104はデータ1
の下位側ビットとデータ2の下位側ビットのビット反転
結果とを加算して、データ1とデータ2の減算結果の下
位側と、その符号、およびキャリー出力を出力する。減
算結果の符号はセレクタ112に対する選択制御信号と
して、またキャリー出力はセレクタ110および111
に対する選択制御信号として与えられる。
【0111】データ1の上位側ビットとデータ2の上位
側ビットのビット反転結果とが加算器105によって加
算される。データ1からデータ2を減算した結果、その
差が小さいと判定されるのは、1つは結果の上位側ビッ
トが全て0、すなわち0であり、下位側ビットの演算結
果としてのキャリーが存在しない場合である。この場合
データ1とデータ2の減算結果、すなわち加算器105
の出力はインバータ106によって全て反転され、上位
側ビットは全て1となり、アンドゲート107の出力は
1となる。加算器104からのキャリー出力が存在しな
い場合にはセレクタ110によってアンドゲート107
の出力が選択され、加算器104の出力する減算結果の
符号が正であることにより、セレクタ112によりセレ
クタ110の出力が選択されて、データ1とデータ2の
減算結果が小さいことを示す信号DATA1−DATA
2_SMALLがセレクタ112から出力される。
【0112】データ1とデータ2との減算結果が正であ
り、しかもその差が小さいと判定されるもう1つの場合
は、上位側ビットの減算結果としての加算機器105の
出力がオール1、すなわち−1であり、下位側の演算結
果としてのキャリー出力が1となる場合である。この場
合は上位側ビットのデータ部分は全て0となり、結果と
してデータ1とデータ2との差は小さいことになる。こ
の時アンドゲート108の出力が1となり、加算器10
4のキャリー出力が存在するため、セレクタ110によ
ってアンドゲート108の出力が選択され、またセレク
タ112によって、加算器104の出力する符号が正で
あるためセレクタ110の出力が選択されて、セレクタ
112からデータ1とデータ2との差が小さいことを示
す信号が出力される。
【0113】次にデータ1からデータ2を減算した結果
が負であり、しかもその絶対値が小さい場合について説
明する。その第1の場合は加算器105の出力が−1、
すなわち上位ビットが全て1であり、下位側からのキャ
リー出力が存在しない場合である。この場合は前述と同
様にアンドゲート108の出力が1となり、加算器10
4のキャリー出力が存在しないため、セレクタ111へ
のアンドゲート108の出力が選択され、セレクタ11
2に与えられる。セレクタ112では、加算器104の
出力する下位ビット側の演算結果の符号が負であるため
に、セレクタ111の出力が選択され、セレクタ112
からデータ1とデータ2との差が小さいことを示す信号
が出力される。
【0114】第2の場合は、下位側からのキャリー出力
が存在し、加算器105の出力する上位ビットのうちで
最下位のみが0であり、他の全てのビットが1である場
合(すなわち−2)に対応する。アンドゲート109に
対しては、最下位ビットとしてインバータ106の出力
する最下位ビットの反転値が与えられており、この結果
アンドゲート109の出力は1となり、加算器104の
出力するキャリー出力が存在するため、セレクタ111
によってアンドゲート109の出力が選択され、セレク
タ112に与えられる。セレクタ112では、加算器1
04の出力する符号が負であるために、セレクタ111
からの出力が選択され、セレクタ112からデータ1と
データ2との差が小さいことを示す信号が出力される。
【0115】図17のように4入力加算器を用いる場合
に比べて、演算を高速化するために図19〜図21で説
明したような簡易な演算回路を組み合わせて用いる場合
の回路例について、図22〜図24を用いて説明する。
図22は図19,図20の回路を用いて、図17におけ
る4入力加算器と同様の動作を行う回路の構成例であ
る。同図において図19の加算回路は、データ1として
のOARと、データ2としてのストア_バイト(S)と
の加算を行うために用いられ、また図20の減算回路は
データ1としてのIARと、データ2としてのフェッチ
_バイト(F×n)との減算を行うために用いられてい
る。そして減算器114によって、図19の回路の出力
としてのOAR+Sから、図20の回路の出力としての
IAR−(F×n)を減算することによって、図17に
おける減算器90と同じ出力を得ることができる。
【0116】図23は、OARとIARとの差を上位側
と下位側とで分けて演算し、上位側では図19と同様の
インクリメンタを使用して、下位側からのキャリー出力
を処理する回路の構成例である。このような構成を用い
ることによって、上位側と下位側との演算を独立して実
行することが可能となり、演算のビット数を減少させる
ことによって、結果的に全体としての演算を高速化する
ことができる。
【0117】図23において4入力加算器115は、図
17の加算器90と同様の演算を行うものである。但し
IARとOARに対しては下位側ビットだけの演算が行
われる。加算器116はOARの上位側ビットと、IA
Rの上位側ビットのビット反転結果とを加算するもので
あり、加算器115からのキャリー出力が存在しない場
合に加算器116の加算結果がセレクタ118によって
選択され、加算器115の出力する下位側ビットの演算
結果と合成されて、全体の演算結果として出力される。
これに対して加算器115からのキャリー出力が存在す
る場合には、加算器116の出力がインクリメンタ11
7によって1だけインクリメントされ、その結果がセレ
クタ118により選択され、加算器115の出力する下
位側と合成されて出力される。
【0118】図24は図21の回路を使用した上書き可
能性判定回路の構成例である。同図においては、図6や
図7と同様にIARとOARとの差が正である場合に、
(1)式の右側の不等式の成立を判定するアンドオアセ
レクタも用いられている。
【0119】図24において、図21の回路に対しては
IARがデータ1として、またOARのインバータ11
9によるビット反転結果がデータ2として与えられる。
IARとOARとの差が小さい時には、その差が小さい
ことを示す信号が2つのアンドゲート121、122の
一方の入力端子に与えられる。この時IARとOARと
差の演算結果のうちで下位のmビットを除き(N−m−
n)ビットから(N−m)ビットまでがアンドゲート1
20に与えられる。この差が負であり、かつその絶対値
が小さい、すなわち例えばm=4であり、下位4ビット
以外の値が全て1である場合には、アンドゲート120
の出力はHとなり、アンドゲート121、オアゲート1
23の出力はHとなり、アンドゲート124に与えられ
る。この時フェッチポートが有効であることを示すフェ
ッチ_ポート_バリッド信号がHであれば、アンドゲー
ト124の出力する、そのポートに対応して命令上書き
の可能性があることを示すSTIS_イン_レンジ信号
はHとなる。
【0120】一方IARとOARとの差の演算結果は、
その結果が正である場合に対応してインバータ125に
よってビット反転され、図7の下側の回路と同様の回
路、すなわちアンドゲート1261 〜126n+1 と、そ
れらの出力とプリフェッチカウンタの値が入力されるア
ンドオアセレクタ、すなわちアンドゲート1271 〜1
27n+1 とオアゲート128とによって構成されるセレ
クタに与えられる。ここでIARとOARとの差は、そ
の最上位ビットが(N−m−n)ビットであり、最下位
ビットがNビットであるため、プリフェッチカウンタの
カウント値の最上位ビットが入力されるアンドゲート1
271 に対しては、図7と異なってアンドゲート126
1 の出力、すなわち(N−m−n)ビットのビット反転
結果が入力される。
【0121】またアンドゲート1272 に対しては、プ
リフェッチカウンタのカウンタ値の最上位から2番目の
ビットと共にアンドゲート1262 の出力、すなわち
(N−m−n)ビットと(N−m−n+1)ビットとの
反転結果の論理積が与えられる。
【0122】以上において本発明の実施形態について詳
細に説明したが、特に図18〜図21で説明したよう
な、演算対象となる2つの数に桁違いの差がある場合の
加減算はIARとOARとの差の計算に用いられるだけ
でなく、一般的に桁が大きくなるIAR−OARと、桁
が小さいF×nやSとの間の演算に用いたり、構成方法
によっては命令フェッチ側で用いる情報としてのIAR
とF×nとの間、命令実行およびオペランドアクセス側
で用いる情報としてのIARとSとの間の演算に使用し
て、その結果を通常の演算器で結びつけるような方法も
当然考えられる。
【0123】以上の説明により本発明はさらに以下の特
徴を有する。命令フェッチカウンタ手段が、1回のフェ
ッチでフェッチされる命令列が一定長(F)である時、
該フェッチの回数(n)をカウントして前記命令列の長
さ(F×n)を検出し、命令上書き可能性判定手段が、
該F×n、前記特定位置に対応する命令のアドレス(I
AR)、前記ストア対象アドレス(OAR)、および前
記ストアデータのデータ長(S)を用いて次の不等式 −F<IAR−OAR<F×(n−1)+S が成立する時、命令上書きの可能性があると判定する。
【0124】命令上書き可能性判定手段が、特定位置に
対応する命令のアドレスとストア対象アドレスとの差を
取る減算手段と、該減算手段の出力のビット反転結果の
複数のビットの複数の論理積の1つを、前記命令フェッ
チカウンタ手段の出力の各ビットの値を選択制御信号と
して、選択する選択手段とを備える。
【0125】命令をフェッチするための命令フェッチポ
ートを1つ以上備える情報処理装置において、1つの命
令フェッチポートからフェッチされ、最後にフェッチさ
れた命令を含み、該命令に連続するすべての命令列の長
さを、該フェッチの回数をカウントするか、または各回
のフェッチでフェッチされたバイト数を積算して検出す
る命令列長検出手段を備える。
【0126】前記命令列長検出手段が、前記連続する命
令列の長さ(L)を検出し、前記アドレス検出手段が、
前記特定位置に対応する命令のアドレス(IAR)と前
記ストア対象アドレス(OAR)とを検出し、前記命令
上書き可能性判定手段が、該L,IAR,OAR、およ
び前記ストアデータのデータ長(S)、1回の命令フェ
ッチでフェッチされる命令列の最大長(M)を用いて次
の不等式 −M<IAR−OAR<L+S が成立するとき、命令上書きの可能性があると判定す
る。
【0127】前記命令長検出手段が、前記連続する命令
列の長さ(L)を検出し、前記アドレス検出手段が、前
記特定位置に対応する命令のアドレス(IAR)と前記
ストア対象アドレス(OAR)とを検出し、前記命令上
書き可能性判定手段が、該L,IAR,OAR,および
前記ストアデータのデータ長(S)を用いて次の不等式 −0<IAR−OAR<L+S が成立する時、命令上書きの可能性があると判定する。
【0128】前記情報処理装置において、前記すべての
命令列内の命令が不要となった時、前記命令長検出手段
によって検出されている命令列の長さをリセットする命
令長リセット手段を更に備える。
【0129】前記情報処理装置において、前記命令上書
き可能性判定手段が命令上書きの可能性を検出した時、
前記ストア命令の実行完了直後に前記ストア対象アドレ
スに続くフェッチ済みの後続命令の実行を中止させ、該
ストア対象アドレスに続く正しい後続命令の命令フェッ
チ以後の動作を実行させる命令再実行制御手段を更に備
える。
【0130】前記情報処理装置において、前記命令上書
き可能性手段が命令上書きの可能性があると判定した
時、該判定の時点から前記ストア命令の完了時点まで、
同時に実行完了できる複数の命令の中に該ストア命令が
なければ該複数の命令を同時に完了させ、ストア命令が
あれば命令実行順序において該ストア命令までの命令を
同時に完了させる命令実行完了制御手段を更に備える。
【0131】前記命令上書き可能性判定手段が、前記特
定位置に対応する命令のアドレスのビット反転結果と、
前記ストア対象アドレスと、前記命令フェッチカウンタ
手段の出力とを加算する多入力加算手段を備える。
【0132】前記多入力加算手段が、更に前記ストア対
象アドレスに格納される実行結果としてのストアデータ
のデータ長をも加算する。
【0133】
【発明の効果】以上詳細に説明したように、本発明によ
ればストア命令の実行結果としてのデータ(命令)の書
き込みによる後続命令の書き換え、すなわち命令上書き
の可能性の判定を、命令実行効率を損なうことなく、正
しく行うことができ、かつストア命令によって後続の命
令が実際に上書きされる場合にも、上書きされた後の正
しい命令列を実行することが可能となり、情報処理装置
の処理効率向上に寄与するところが大きい。
【図面の簡単な説明】
【図1】本発明の原理構成ブロック図である。
【図2】本発明の命令上書き可能性を検出する情報処理
装置の全体構成ブロック図である。
【図3】命令上書き可能性検出方法を説明する図であ
る。
【図4】命令フェッチカウンタの構成例を示すブロック
図である。
【図5】命令フェッチカウンタの異なる構成例のブロッ
ク図である。
【図6】命令フェッチカウンタの出力を利用した命令上
書き可能性判定回路の構成例を示すブロック図である。
【図7】図6の命令上書き可能性判定回路の変形例を示
す図である。
【図8】図6または図7の判定回路の出力を利用して命
令上書きの可能性を示す不等式全体の成立を判定する判
定回路の構成例である。
【図9】2つの命令フェッチポートA,Bに対応する命
令上書きの全体判定回路を示す図である。
【図10】図6の判定回路の更に異なる変形例を示す図
である。
【図11】命令上書き可能性が検出された時、後続命令
に対して必要な制御を行う後続命令制御回路の構成を示
すブロック図である。
【図12】命令を1つずつしか完了させないための命令
完了制御回路の構成を示すブロック図である。
【図13】後続命令制御回路の異なる構成例を示すブロ
ック図(その1)である。
【図14】後続命令制御回路の異なる構成例を示すブロ
ック図(その2)である。
【図15】処理中断および命令破棄制御回路の構成を示
すブロック図(その1)である。
【図16】処理中断および命令破棄制御回路の構成を示
すブロック図(その2)である。
【図17】上書き可能性判定回路の更に異なる構成例を
示すブロック図である。
【図18】演算対象となる2つの数のうち片方の絶対値
が小さい場合の演算の例を示す図である。
【図19】演算対象としての2つの数に桁違いの差があ
る場合の加算回路の構成例を示す図である。
【図20】2つの数に桁違いの差がある場合の減算回路
の構成例を示す図である。
【図21】2つの数の差が小さい場合にその差が小さい
こととその差自体を出力する減算回路の構成例を示す図
である。
【図22】図19,図20の回路を用いて図17の4入
力加算器と同様の動作を行う回路の構成例を示す図であ
る。
【図23】命令アドレスとオペランドアドレスとの差を
上位側と下位側とで分けて演算し、上位側ではインクリ
メンタを使用して下位側からのキャリー出力を処理する
回路の構成例を示す図である。
【図24】図21の減算回路を利用した命令上書き可能
性判定回路の構成例を示す図である。
【符号の説明】
1 情報処理装置 2 命令長検出手段 3 アドレス検出手段 4 命令上書き可能性判定手段 14a,14b 命令バッファ 17 オペランドアドレス生成回路 18 キャッシュ 19 ストア命令実行処理部 20 命令実行完了処理部 21 割り込み処理制御部 22 次に実行が完了する命令の命令アドレスを格納す
るレジスタ 23,24 命令アドレスレジスタ 25,26 命令フェッチカウンタ 27,28 命令上書き可能性判定回路 30 オペランドアドレスレジスタ
───────────────────────────────────────────────────── フロントページの続き Fターム(参考) 5B013 AA02 AA15 CC01 EE00 5B022 AA01 BA00 CA04 CA09 DA06 EA02 EA09 FA00

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 命令をフェッチするための命令フェッチ
    ポートを1つ以上備え、該命令フェッチポートからフェ
    ッチされた命令の上書き可能性を検出する情報処理装置
    において、 1つの命令フェッチポートからフェッチされ、最後にフ
    ェッチされた命令を含み、該命令に連続するすべての命
    令列の長さをカウントする命令フェッチカウンタ手段
    と、 該すべての命令列内の特定位置に対応する命令のアドレ
    スと、完了したストア命令の実行結果が格納されるスト
    ア対象アドレスと、該命令フェッチカウンタ手段の出力
    値とを用いて、該ストア対象アドレスの範囲の少なくと
    も一部が前記すべての命令列内の命令のアドレスと重な
    り、該命令列の少なくとも一部が書き換えられる命令上
    書きの可能性を検出する命令上書き可能性判定手段とを
    備えることを特徴とする情報処理装置。
  2. 【請求項2】 前記命令上書き可能性判定手段が、更に
    前記ストア対象アドレスに格納される実行結果としての
    ストアデータのデータ長を用いて、前記命令上書き可能
    性を検出することを特徴とする請求項1記載の情報処理
    装置。
  3. 【請求項3】 命令をフェッチするための命令フェッチ
    ポートを1つ以上備え、該命令フェッチポートからフェ
    ッチされた命令の上書き可能性を検出する情報処理装置
    において、 1つの命令フェッチポートからフェッチされ、最後にフ
    ェッチされた命令を含み、該命令に連続するすべての命
    令列の長さを検出する命令列長検出手段と、 すべての命令列内の特定位置に対応する命令のアドレス
    と、完了したストア命令の実行結果が格納されるストア
    対象アドレスとを検出するアドレス検出手段と、 該命令列長検出手段、アドレス検出手段の出力を用い
    て、該ストア命令の実行結果が格納されることによって
    前記すべての命令列内の命令の内容が書き換えられる命
    令上書き可能性を検出する命令上書き可能性判定手段と
    を備えることを特徴とする情報処理装置。
  4. 【請求項4】 前記命令上書き可能性判定手段が、更に
    前記ストア対象アドレスに格納されるストア命令実行結
    果としてのストアデータのデータ長を用いて前記命令上
    書き可能性を検出することを特徴とする請求項3記載の
    情報処理装置。
  5. 【請求項5】 前記命令長検出手段が、1回のフェッチ
    でフェッチされる命令列が一定長である時該フェッチの
    回数をカウントして前記命令列の長さを検出することを
    特徴とする請求項3記載の情報処理装置。
  6. 【請求項6】 前記命令長検出手段が、前記フェッチの
    1回毎にフェッチされた命令列のそれぞれの長さを加算
    して前記命令列の長さを検出することを特徴とする請求
    項3記載の情報処理装置。
  7. 【請求項7】 前記情報処理装置において、 前記命令上書き可能性判定手段が命令上書きの可能性が
    あると判定した時、該判定の時点から前記ストア命令の
    完了時点まで、命令の実行完了を一命令のみずつ行わせ
    る命令実行完了制御手段を更に備えることを特徴とする
    請求項3記載の情報処理装置。
  8. 【請求項8】 前記命令上書き可能性判定手段が、減算
    結果の絶対値が小さい時にのみ正確な減算結果を出力す
    る減算回路であって、上位ビット側と下位ビット側とで
    それぞれ独立に減算を行う上位側減算回路と下位側減算
    回路とを備え、上位側減算回路の出力が0、−1、また
    は−2である時、下位ビット減算回路の出力するキャリ
    −出力および減算結果の符号に応じて減算結果の絶対値
    が小さいことを示す信号と共に下位側減算回路の出力を
    減算結果として出力する減算回路を備えることを特徴と
    する請求項1、または3記載の情報処理装置。
  9. 【請求項9】 前記命令上書き可能性判定手段が、演算
    対象となる2つの数に桁違いの差がある時に加算、また
    は減算を行う演算回路であって、下位ビット側では絶対
    値の小さい数のデータ幅以上の加算、または減算を行っ
    て演算結果を出力し、上位ビット側では下位ビット側で
    の演算の結果キャリー出力がある時は絶対値の大きい数
    の上位ビットに1をインクリメント、または1だけデク
    リメントして上位側の演算結果とし、該キャリー出力が
    ない時は絶対値の大きい側の上位ビットをそのまま上位
    側の加算、または減算結果として出力する演算回路を備
    えることを特徴とする請求項1、または3記載の情報処
    理装置。
JP23681199A 1999-08-24 1999-08-24 情報処理装置 Expired - Fee Related JP3739607B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP23681199A JP3739607B2 (ja) 1999-08-24 1999-08-24 情報処理装置
US09/532,832 US6571329B1 (en) 1999-08-24 2000-03-21 Detection of overwrite modification by preceding instruction possibility of fetched instruction code using fetched instructions counter and store target address

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP23681199A JP3739607B2 (ja) 1999-08-24 1999-08-24 情報処理装置

Publications (2)

Publication Number Publication Date
JP2001060153A true JP2001060153A (ja) 2001-03-06
JP3739607B2 JP3739607B2 (ja) 2006-01-25

Family

ID=17006142

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23681199A Expired - Fee Related JP3739607B2 (ja) 1999-08-24 1999-08-24 情報処理装置

Country Status (2)

Country Link
US (1) US6571329B1 (ja)
JP (1) JP3739607B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006040174A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd 命令リトライ検証機能付き情報処理装置および命令リトライ検証方法

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4327008B2 (ja) * 2004-04-21 2009-09-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2008162084A (ja) * 2006-12-27 2008-07-17 Fuji Xerox Co Ltd 画像処理装置、画像処理システム、画像形成装置、画像形成システム、情報処理装置、情報処理システムおよび制御プログラム
JP5163220B2 (ja) * 2008-03-26 2013-03-13 富士通株式会社 キャッシュ制御装置、情報処理装置
US10782979B2 (en) 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
US10552164B2 (en) 2017-04-18 2020-02-04 International Business Machines Corporation Sharing snapshots between restoration and recovery
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
US10572265B2 (en) 2017-04-18 2020-02-25 International Business Machines Corporation Selecting register restoration or register reloading
US10545766B2 (en) 2017-04-18 2020-01-28 International Business Machines Corporation Register restoration using transactional memory register snapshots
US10963261B2 (en) 2017-04-18 2021-03-30 International Business Machines Corporation Sharing snapshots across save requests
US10649785B2 (en) 2017-04-18 2020-05-12 International Business Machines Corporation Tracking changes to memory via check and recovery
US11010192B2 (en) 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
US10838733B2 (en) 2017-04-18 2020-11-17 International Business Machines Corporation Register context restoration based on rename register recovery
US10540184B2 (en) * 2017-04-18 2020-01-21 International Business Machines Corporation Coalescing store instructions for restoration
US10564977B2 (en) 2017-04-18 2020-02-18 International Business Machines Corporation Selective register allocation
US10489382B2 (en) 2017-04-18 2019-11-26 International Business Machines Corporation Register restoration invalidation based on a context switch

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63311438A (ja) 1987-06-12 1988-12-20 Fujitsu Ltd ストア命令不一致制御回路
JPH04246728A (ja) 1991-02-01 1992-09-02 Toshiba Corp 情報処理装置
US5835949A (en) * 1994-12-27 1998-11-10 National Semiconductor Corporation Method of identifying and self-modifying code
JP3548616B2 (ja) 1995-01-20 2004-07-28 株式会社日立製作所 情報処理装置
US5826073A (en) * 1995-10-06 1998-10-20 Advanced Micro Devices, Inc. Self-modifying code handling system
US5742791A (en) * 1996-02-14 1998-04-21 Advanced Micro Devices, Inc. Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor
US6009516A (en) * 1996-10-21 1999-12-28 Texas Instruments Incorporated Pipelined microprocessor with efficient self-modifying code detection and handling
US6405307B1 (en) * 1998-06-02 2002-06-11 Intel Corporation Apparatus and method for detecting and handling self-modifying code conflicts in an instruction fetch pipeline
US6237088B1 (en) * 1998-06-03 2001-05-22 Intel Corporation System and method for tracking in-flight instructions in a pipeline
US6415360B1 (en) * 1999-05-18 2002-07-02 Advanced Micro Devices, Inc. Minimizing self-modifying code checks for uncacheable memory types

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006040174A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd 命令リトライ検証機能付き情報処理装置および命令リトライ検証方法
JP4486434B2 (ja) * 2004-07-29 2010-06-23 富士通株式会社 命令リトライ検証機能付き情報処理装置および命令リトライ検証方法

Also Published As

Publication number Publication date
JP3739607B2 (ja) 2006-01-25
US6571329B1 (en) 2003-05-27

Similar Documents

Publication Publication Date Title
US7117347B2 (en) Processor including fallback branch prediction mechanism for far jump and far call instructions
JP3565504B2 (ja) プロセッサにおける分岐予測方法及びプロセッサ
CA1323938C (en) Control of multiple function units with parallel operation in a microcoded execution unit
US6170054B1 (en) Method and apparatus for predicting target addresses for return from subroutine instructions utilizing a return address cache
US4858104A (en) Preceding instruction address based branch prediction in a pipelined processor
JP3739607B2 (ja) 情報処理装置
EP1662377B1 (en) Branch predicting apparatus and branch predicting method using return address stacks
US6981131B2 (en) Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction
US20050198480A1 (en) Apparatus and method of controlling instruction fetch
EP2084602B1 (en) A system and method for using a working global history register
WO2000041072A1 (en) A method and apparatus for improved predicate prediction
US6289437B1 (en) Data processing system and method for implementing an efficient out-of-order issue mechanism
JP2001243069A (ja) 分岐予測装置及び分岐予測方法
US20090240914A1 (en) Recycling long multi-operand instructions
WO2004072848A2 (en) Method and apparatus for hazard detection and management in a pipelined digital processor
JP3723020B2 (ja) 分岐履歴情報の書き込み制御装置及びその方法
JP3800533B2 (ja) プログラムカウンタ制御方法及びプロセッサ
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法
US20050144427A1 (en) Processor including branch prediction mechanism for far jump and far call instructions
JP2001166934A (ja) 命令フェッチ制御装置
JPH07262006A (ja) 分岐ターゲットアドレスキャッシュを備えたデータプロセッサ
JPWO2012132214A1 (ja) プロセッサ及びその命令処理方法
JP3161711B2 (ja) 情報処理装置
JP3809178B2 (ja) 分岐履歴情報の書き込み制御装置及びその方法
JP2002182906A (ja) 命令実行方法及びその装置並びに分岐予測方法及びその装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050815

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051101

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051102

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20081111

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20091111

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101111

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101111

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111111

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111111

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20121111

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121111

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20131111

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees