JP3739607B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP3739607B2
JP3739607B2 JP23681199A JP23681199A JP3739607B2 JP 3739607 B2 JP3739607 B2 JP 3739607B2 JP 23681199 A JP23681199 A JP 23681199A JP 23681199 A JP23681199 A JP 23681199A JP 3739607 B2 JP3739607 B2 JP 3739607B2
Authority
JP
Japan
Prior art keywords
instruction
address
possibility
store
fetch
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP23681199A
Other languages
English (en)
Other versions
JP2001060153A (ja
Inventor
昌樹 鵜飼
愛一郎 井上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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

Images

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)

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回の命令のフェッチで例えば16バイトの命令列を読み込み、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の内部の上書き可能性の判定回路27,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が負の場合に対応し、OARが図3の左側にあるような場合に上書き可能性があると判定される。
【0039】
図3では5回分フェッチされた命令列のうち最初にフェッチされた1回分の命令列がデコードされて命令処理に用いられるものとしたが、これは本発明の実施形態としてはむしろ特殊な場合であり、デコードされて命令処理に用いられる命令列は、例えば右から3番目の、3回目にフェッチされた命令列であっても全く差し支えない。
【0040】
図3で説明した場合は前述のように5回分のフェッチされた命令が全て図2の命令バッファ14a、または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_CTR_Xの値はインクリメントされ、D_FF42に入力される。なお図2の命令バッファ14a、または14bが一杯となり、空きが無い場合にはFCH_リクエスト_ポート信号は出力されず、カウンタ値PFO_CTR_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ビット)と加算器44によって加算され、その加算結果はD−FF45のD入力端子に与えられる。なお最初のフェッチから16バイトフェッチされる場合は減算器43は不要である。
【0050】
D−FF45では、フェッチ_リクエスト_ポート_X信号がLである場合には、D−FFの動作は抑制(インヒビット)されるが、そうでなければクロック入力時点で入力端子Dへの入力信号がカウンタ値(ポート_X_フェッチ_バイトの値)として出力される。そしてリセット端子にクリア_ポート_X信号が入力された時点で、カウンタ値はリセットされる。
【0051】
図6は命令フェッチカウンタの出力を利用した命令上書き可能性判定回路の構成例である。この回路は、前述の命令上書きの可能性を示す不等式の右側が成立することを示す信号として、IAR_マイナス(MN)_OAR_ビット_1_X_オール_0を出力するものである。
【0052】
図6において、n+1個のアンドゲート471 〜47n+1 には、IARとOARとの差(Nビット)のビット反転信号のそれぞれ上位ビットが与えられる。mは1回の命令フェッチでフェッチされる命令列長(命令の数)である。前述のように1回のフェッチで16バイトの命令列がフェッチされるものとすると、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とOARとの差の反転結果のうち上位N−m−2=N−6ビットが入力されるアンドゲートの出力が1となり、その出力がこれも図示しない、カウンタ値nビットのうちで(n−1)ビットの値が入力されるアンドゲート48n-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 〜48n+1 とオアゲート49によって構成されるアンド−オアセレクタの前段に位置するアンドゲートに出力される。
【0059】
例えばアンドゲート50n+1 に対しては、IARとOARとの差のビット反転結果のうち、上位からN−n−3ビット目からN−4ビット目までが入力され、これらの値が全て1であれば、アンドゲート48n+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とOARとの差が負であり、しかもその絶対値が15以下であることを判定するために、下位4ビットを除く全ての上位ビットの値が1であることを検出するものである。
【0063】
オアゲート54の出力が1、すなわち前述の不等式のうち左側の不等式、または右側の不等式のいずれかが成立し、その出力がフェッチポートが有効であることを示すフェッチ_ポート_バリッド信号と共にアンドゲート55に入力されることにより、アンドゲート55から命令上書き可能性を示すストアインストラクションストリーム(STIS)_イン_レンジ信号が出力される。
【0064】
図9は、2つの命令フェッチポートA,Bに対応するSTIS_イン_レンジ信号から、全体として命令上書きの可能性があることを示す信号(STIS)を出力する全体判定回路であり、オアゲート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がリセットされると共に、アンドゲート64から、実行完了していない命令の中断処理やすでにフェッチされている命令列を破棄するために使用される信号としての、コミット_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のそれぞれ一方の入力端子に与えられる。従ってSR−FF63の出力QがHである間は、アンドゲート66,67からはCSEのセカンドエントリ、およびサードエントリに対応するコミット信号が出力されず、対応するエントリに関連する命令の完了動作は実行されず、その命令は完了待ちとなる。
【0079】
図13,図14はストア命令による後続命令の上書き可能性が検出された時点から、そのストア命令の実行が完了するまで、図11,図12とやや異なる制御を後続命令に対して行う制御回路の構成図である。これらの回路も命令実行完了処理部20内の回路である。図13,図14においては、上書き可能性が検出された時点からそのストア命令の実行が完了するまでの間は、同時に実行完了するものの中にストア命令がなければ複数の命令を同時に完了させ、あればそのストア命令までを同時に完了させる制御を行うものである。
【0080】
図13においてSR−FF70は、図11におけるFF63と同様にSTIS信号の入力時点でセットされ、その出力QはHとなる。そしてオアゲート72の出力としてのコミット_ストア信号の入力時点でリセット待ち(次のクロックでリセット)にされると同時に、アンドゲート71から図11のアンドゲート64の出力と同じコミット_STIS_REIFCH信号が出力される。
【0081】
オアゲート72に対しては、3つのエントリに対応して実行完了可能な信号がストアポートを使用することを示す信号、すなわち対応する命令がストア命令であることを示す信号が入力される。そして3つのエントリに対応する命令の1つでもストア命令であれば、オアゲート72からコミット_ストア信号が出力されることになる。一方バッファ73に対してはトップエントリに対応するコミット_ユーズ_ストアポート(SP)信号が与えられ、バッファ73の出力としてはトップエントリに対応する命令のみが実行完了可能であることを示すコミット_オンリ−信号が出力される。この出力は、図14で説明するようにトップエントリに対応する命令だけに関して実行完了処理を行わせるために使用される。
【0082】
これに対してアンドゲート74の出力は、トップとセカンドの2つのエントリだけに対応して命令を実行完了させるために用いられるコミット_オンリー信号であり、この出力はトップエントリに対応するコミット_ユーズ_ストアポート信号がLで、インバータ75の出力が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−FF83がセットされるものとしたが、この時点で一般的な割り込み発生信号が出力されていないものとすると、もう1つのSR−FF84の反転出力 外1 はHとなっており、SR−FF83のセット端子とリセット端子に
【0093】
【外1】
Figure 0003739607
【0094】
は同時にHが入力されていることになる。SR−FF83はセット端子とリセット端子に同時にHが入力された場合にはセットが優先されるものであり、その結果リストア_ステート信号が出力されることになるが、図11のアンドゲート64の出力は、SR−FF63がコミット_ストア信号の入力直後のクロックでリセットされることになるため、短期間だけHとなり、その期間だけSR−FF83からリストア_ステート信号が出力されることになる。
【0095】
また図15において、一般的な割り込み処理として割り込み発生信号がオアゲート82に入力された場合にも、SR−FF83はセットされ、リストアステート信号が出力されるが、この割り込み発生信号はSR−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のもう一方の入力端子には、比較器93の出力が入力される。この比較器93は(2)あるいは(3)式の前側の不等式を評価、すなわちIARとOARを比較するものであり、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−DATA2_SMALLがセレクタ112から出力される。
【0112】
データ1とデータ2との減算結果が正であり、しかもその差が小さいと判定されるもう1つの場合は、上位側ビットの減算結果としての加算機器105の出力がオール1、すなわち−1であり、下位側の演算結果としてのキャリー出力が1となる場合である。この場合は上位側ビットのデータ部分は全て0となり、結果としてデータ1とデータ2との差は小さいことになる。この時アンドゲート108の出力が1となり、加算器104のキャリー出力が存在するため、セレクタ110によってアンドゲート108の出力が選択され、またセレクタ112によって、加算器104の出力する符号が正であるためセレクタ110の出力が選択されて、セレクタ112からデータ1とデータ2との差が小さいことを示す信号が出力される。
【0113】
次にデータ1からデータ2を減算した結果が負であり、しかもその絶対値が小さい場合について説明する。その第1の場合は加算器105の出力が−1、すなわち上位ビットが全て1であり、下位側からのキャリー出力が存在しない場合である。この場合は前述と同様にアンドゲート108の出力が1となり、加算器104のキャリー出力が存在しないため、セレクタ111へのアンドゲート108の出力が選択され、セレクタ112に与えられる。セレクタ112では、加算器104の出力する下位ビット側の演算結果の符号が負であるために、セレクタ111の出力が選択され、セレクタ112からデータ1とデータ2との差が小さいことを示す信号が出力される。
【0114】
第2の場合は、下位側からのキャリー出力が存在し、加算器105の出力する上位ビットのうちで最下位のみが0であり、他の全てのビットが1である場合(すなわち−2)に対応する。アンドゲート109に対しては、最下位ビットとしてインバータ106の出力する最下位ビットの反転値が与えられており、この結果アンドゲート109の出力は1となり、加算器104の出力するキャリー出力が存在するため、セレクタ111によってアンドゲート109の出力が選択され、セレクタ112に与えられる。セレクタ112では、加算器104の出力する符号が負であるために、セレクタ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の上位側ビットと、IARの上位側ビットのビット反転結果とを加算するものであり、加算器115からのキャリー出力が存在しない場合に加算器116の加算結果がセレクタ118によって選択され、加算器115の出力する下位側ビットの演算結果と合成されて、全体の演算結果として出力される。これに対して加算器115からのキャリー出力が存在する場合には、加算器116の出力がインクリメンタ117によって1だけインクリメントされ、その結果がセレクタ118により選択され、加算器115の出力する下位側と合成されて出力される。
【0118】
図24は図21の回路を使用した上書き可能性判定回路の構成例である。同図においては、図6や図7と同様にIARとOARとの差が正である場合に、(1)式の右側の不等式の成立を判定するアンドオアセレクタも用いられている。
【0119】
図24において、図21の回路に対してはIARがデータ1として、またOARのインバータ119によるビット反転結果がデータ2として与えられる。IARとOARとの差が小さい時には、その差が小さいことを示す信号が2つのアンドゲート121、122の一方の入力端子に与えられる。この時IARとOARと差の演算結果のうちで下位のmビットを除き(N−m−n)ビットから(N−m)ビットまでがアンドゲート120に与えられる。この差が負であり、かつその絶対値が小さい、すなわち例えばm=4であり、下位4ビット以外の値が全て1である場合には、アンドゲート120の出力はHとなり、アンドゲート121、オアゲート123の出力はHとなり、アンドゲート124に与えられる。この時フェッチポートが有効であることを示すフェッチ_ポート_バリッド信号がHであれば、アンドゲート124の出力する、そのポートに対応して命令上書きの可能性があることを示すSTIS_イン_レンジ信号はHとなる。
【0120】
一方IARとOARとの差の演算結果は、その結果が正である場合に対応してインバータ125によってビット反転され、図7の下側の回路と同様の回路、すなわちアンドゲート1261 〜126n+1 と、それらの出力とプリフェッチカウンタの値が入力されるアンドオアセレクタ、すなわちアンドゲート1271 〜127n+1 とオアゲート128とによって構成されるセレクタに与えられる。ここでIARとOARとの差は、その最上位ビットが(N−m−n)ビットであり、最下位ビットがNビットであるため、プリフェッチカウンタのカウント値の最上位ビットが入力されるアンドゲート1271 に対しては、図7と異なってアンドゲート1261 の出力、すなわち(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、前記特定位置に対応する命令のアドレス(IAR)、前記ストア対象アドレス(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 オペランドアドレスレジスタ

Claims (10)

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

Families Citing this family (16)

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

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

Also Published As

Publication number Publication date
US6571329B1 (en) 2003-05-27
JP2001060153A (ja) 2001-03-06

Similar Documents

Publication Publication Date Title
JP3739607B2 (ja) 情報処理装置
JP3565504B2 (ja) プロセッサにおける分岐予測方法及びプロセッサ
CN101965554B (zh) 选择性地提交已执行指令的结果的系统和方法
US5500943A (en) Data processor with rename buffer and FIFO buffer for in-order instruction completion
US6981131B2 (en) Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction
US20050149698A1 (en) Scoreboarding mechanism in a pipeline that includes replays and redirects
US9594566B1 (en) Accuracy of operand store compare prediction using confidence counter
JPH09223013A (ja) 高性能プロセッサにおける投機ロード命令の実行方法
JPH10133873A (ja) 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を投機的に実行するためのプロセッサおよび方法
KR980010787A (ko) 인스트럭션 루프를 사변적으로 실행하는 프로세서및 그 방법
JP5209633B2 (ja) ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法
JP2001243069A (ja) 分岐予測装置及び分岐予測方法
JP3163045B2 (ja) 分岐解決方法及びプロセッサ
US7962726B2 (en) Recycling long multi-operand instructions
US6883090B2 (en) Method for cancelling conditional delay slot instructions
US7219216B2 (en) Method for identifying basic blocks with conditional delay slot instructions
US20040158694A1 (en) Method and apparatus for hazard detection and management in a pipelined digital processor
JPH08221272A (ja) 命令キャッシュに命令をロードする方法
JP3122420B2 (ja) プロセッサおよび条件コード・ビット計算方法
JP3800533B2 (ja) プログラムカウンタ制御方法及びプロセッサ
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法
JP3699518B2 (ja) パイプライン・プロセッサ内において、誤って予測された実行分岐後にアネックス内のヤング・ビットを回復する方法及び装置
EP1296228A2 (en) Instruction Issue and retirement in processor having mismatched pipeline depths
JP2001166934A (ja) 命令フェッチ制御装置
JP3854200B2 (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