JP2000020311A - 情報処理装置 - Google Patents

情報処理装置

Info

Publication number
JP2000020311A
JP2000020311A JP10182001A JP18200198A JP2000020311A JP 2000020311 A JP2000020311 A JP 2000020311A JP 10182001 A JP10182001 A JP 10182001A JP 18200198 A JP18200198 A JP 18200198A JP 2000020311 A JP2000020311 A JP 2000020311A
Authority
JP
Japan
Prior art keywords
instruction
address
operand
operand address
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.)
Granted
Application number
JP10182001A
Other languages
English (en)
Other versions
JP3499135B2 (ja
Inventor
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 JP18200198A priority Critical patent/JP3499135B2/ja
Priority to US09/268,998 priority patent/US6421771B1/en
Priority to EP99302565A priority patent/EP0969358A3/en
Publication of JP2000020311A publication Critical patent/JP2000020311A/ja
Application granted granted Critical
Publication of JP3499135B2 publication Critical patent/JP3499135B2/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/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/3824Operand accessing
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • 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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

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)【要約】 【課題】 先行命令によって更新されるレジスタを、後
続命令が例えばオペランドアドレスの生成に使用するレ
ジスタ干渉状態が生じた場合の処理の遅れを防止する。 【解決手段】 該レジスタ干渉状態が検出されたとき、
後続命令の実行時に生成されたオペランドアドレスを該
後続命令のアドレスと関連づけて記憶する手段2を備
え、さらに後のフェッチ命令のアドレスが手段2内で検
索されたときに対応するオペランドアドレスを予測値と
して該後のフェッチ命令の実行を開始する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は情報処理装置に関
し、更に詳しくはパイプライン処理やアウトオブオーダ
処理などを取り入れて、命令の並列実行処理によって高
性能を実現しようとする情報処理装置に関する。
【0002】
【従来の技術】情報処理装置において命令のオペランド
の干渉関係、すなわち先行する命令によって更新される
資源の内容が後続の命令で参照される関係がある場合に
は、先行する命令の処理が終了するまで後続の命令を実
行できないというように、先行命令が後続命令の実行に
影響を与える状態が発生する。命令のプログラムによっ
て指示される実行順序に従って逐次実行された時と同じ
結果を保証する必要がある場合には、命令の並列実行処
理が不可能となり、高性能を実現するためのハードウェ
アの性能を十分に発揮することができず、情報処理装置
全体としての性能低下の原因となる。
【0003】このようなオペランドの干渉関係のうち
で、先行する命令によって更新されるレジスタの内容を
後続の命令が参照し、例えば主記憶オペランドアドレス
の生成に使用する場合に生じるレジスタ干渉状態がエク
セキュートジェネレートインターロック(EGI)であ
り、情報処理装置の性能を低下させる大きな要因となっ
ている。
【0004】このようにレジスタ干渉が生ずる原因は、
一般的に先行の命令によってレジスタの内容更新が行わ
れる時期は命令処理の完了時であり、一方後続の命令に
おいてオペランドアドレスの生成が行われるのは命令処
理の比較的早い段階であることによる。
【0005】これを緩和するための手段として、従来に
おいてもレジスタ格納前のデータを直接オペランドアド
レス生成のための加算器、すなわちエフェクティブアド
レスジェネレータ(EAG)にバイパスする方法が実施
されている。図10はこのような場合のパイプライン動
作の説明図である。
【0006】図10において上段はレジスタ干渉状態、
すなわちEGIが起こらずに命令処理が行われる場合の
実行動作を示す。このパイプライン動作は、命令のデコ
ードサイクルD、アドレス生成サイクルA、トランスレ
ーションルックアサイドバッファとタグへのアクセスに
よるアドレス変換サイクルT、バッファからのオペラン
ド読出しサイクルB、例えば演算実行とレジスタアップ
デートバッファ(RUB)の更新サイクルU、および演
算結果の汎用レジスタGRへの書込みサイクルWから成
っている。そして演算用のオペランドは、サイクルBに
おいてローカルバッファストレージ(LBS)からロー
ドデータレジスタ(LR)に格納され、サイクルUにお
ける演算実行に使用される。
【0007】図10の下段はレジスタ干渉が起こった場
合のパイプライン動作の説明図である。命令デコードの
結果に対応して、図示しないEGI検出回路によってレ
ジスタ干渉状態としてのEGIが検出され、アドレス計
算は基本的に主記憶オペランドのアドレス計算に必要な
レジスタとしてのベースレジスタ(BR)、インデック
スレジスタ(XR)、およびディスプレイスメントレジ
スタ(DR)の内容が確定する(サイクルA)まで延期
される。そしてアドレス計算のプライオリティサイクル
Paにおいて、BRおよびXRに格納すべきデータがロ
ーカルバッファストレージLBSから、BRおよびXR
をバイパスして、EA1,EA2として与えられ、また
ディスプレイスメントレジスタ(DR)の値がEA3と
して与えられて、アドレス生成サイクルAにおいてEA
Gによってオペランドアドレスの生成が行われる。な
お、ここでは演算実行のサイクルXは更新サイクルUと
は独立してサイクルUの前におかれ、演算結果は一旦リ
ザルトレジスタ(RR)に格納される。
【0008】
【発明が解決しようとする課題】図10で説明したよう
に、アドレス計算に使用されるべきレジスタの内容がレ
ジスタに格納される前にバイパスされてアドレス計算に
用いられるとしても、先行する命令によって更新される
べきレジスタ内容の確定を待つ必要があり、高性能のキ
ャッシュを備える情報処理装置においても、複数サイク
ルの損失が発生し、命令実行の並列度が著しく阻害され
るという問題点があった。高性能を実現しようとして命
令実行の並列度が高められた情報処理装置である程、ま
すますこの損失は顕著となり、設計目的の高性能は発揮
できないという問題点があった。
【0009】本発明は、EGIが生じた場合に後続の命
令によって生成されたオペランドアドレスを過去の実行
結果として記憶しておき、その過去の実行結果に基づい
てオペランドアドレスを予測して、実際のオペランドア
ドレス生成の前に命令実行を開始することによって、性
能の低下を防止することができる情報処理装置を提供す
ることを目的とする。
【0010】
【課題を解決するための手段】図1は本発明の原理構成
ブロック図である。同図は、先行の命令によってその内
容が書き替えられるレジスタが、後続の命令によってオ
ペランドアドレスの生成に使用されるレジスタ干渉状態
(EGI)を検出する回路を備える情報処理装置1の原
理構成ブロック図である。
【0011】図1においてオペランド・アドレス・ヒス
トリー記憶手段2は、レジスタ干渉状態が検出された
時、後続命令の実行時に生成されたオペランドアドレス
をその後続命令のアドレスと関連づけて記憶するもので
あり、例えばオペランド・アドレス・ヒストリー(OA
HIS)である。
【0012】本発明の実施の形態においては、オペラン
ド・アドレス・ヒストリー記憶手段2の記憶内容を用い
て、オペランドアドレスの予測が行われる。例えば主記
憶装置からの命令のフェッチ時に、そのフェッチ命令の
アドレスによってオペランド・アドレス・ヒストリー記
憶手段2からオペランドアドレスが検索された時、その
オペランドアドレスを予測オペランドアドレスとして、
フェッチ命令と共に命令実行ステージにおいて提示する
命令フェッチ手段を更に備えることができる。
【0013】また本発明の実施の形態においては、例え
ば命令フェッチ手段によって予測オペランドアドレスが
提示された時、そのフェッチ命令に対応するオペランド
アドレスが生成される以前に、その予測オペランドアド
レスを用いて主記憶オペランドのフェッチを含む命令実
行を開始する命令実行手段を更に備えることもできる。
【0014】更に本発明の実施の形態においては、例え
ば予測オペランドアドレスを用いて命令実行が開始され
た時、その予測オペランドアドレスを保持して、フェッ
チ命令によってオペランドアドレスの生成に使用される
レジスタが使用可能になった時点で生成されたオペラン
ドアドレスと比較するオペランドアドレス比較手段を更
に備え、2つのオペランドアドレスが一致した時には、
そのフェッチ命令に対応する処理の実行を継続すること
もできる。
【0015】オペランドアドレス比較手段によって2つ
のオペランドアドレスが一致しないことが検出された時
には、予測オペランドアドレスを用いた命令の実行結果
を無効化して、生成されるオペランドアドレスを用いて
再度命令実行を行うこともできる。
【0016】更に本発明の実施の形態においては、前述
の命令フェッチ手段によって提示されたオペランドアド
レスを、命令の実行待ち合わせのスタック処理のため
に、フェッチ命令のアドレスと共に格納するリザベーシ
ョンステーション手段を更に備えることもできる。
【0017】またオペランド・アドレス・ヒストリー記
憶手段2の記憶領域として、前述の後続命令のアドレス
に関連してオペランドアドレスを記憶する領域以外に、
分岐命令の実行時に得られた分岐先アドレスをその分岐
命令のアドレスに関連させて記憶すると共に、領域区別
用のフラグを記憶する領域を更に備えることもできる。
【0018】以上のように本発明によれば、過去の実行
結果としてのオペランドアドレスの予測値を用いて、実
際のオペランドアドレスの生成以前に後続の命令の実行
を開始することが可能となる。
【0019】
【発明の実施の形態】図2は、本発明におけるオペラン
ド・アドレス・ヒストリーを活用した、予測オペランド
アドレスに基づく命令実行が行われる情報処理装置にお
いて、命令制御ユニット(Iユニット)を中心とする構
成ブロック図である。同図において、本発明と関連のあ
る部分を中心に説明する。
【0020】図2においてインストラクション・アドレ
ス・レジスタ(IAR)10、インストラクション・フ
ェッチ・エフェクティブ・アドレス・ジェネレータ(I
FEAG)11、インストラクション・エフェクティブ
・アドレス・レジスタ(IEAR)12、インストラク
ション・フェッチ・トランスレーション・ルックアサイ
ド・バッファ(IFTLB)13、インストラクション
・フェッチ・タグ(IFTAG)14、およびインスト
ラクション・フェッチ・ローカル・バッファ・ストレー
ジ(IFLBS)15は、部分的なパイプラインとして
の命令フェッチのパイプライン動作を行うものである。
【0021】この命令フェッチパイプラインは、命令フ
ェッチのリクエスト発行サイクルI、タグとTLBへの
アクセスサイクルIT、バッファアクセスサイクルI
B、およびフェッチ完了サイクルIRからなり、主記憶
からフェッチされた命令は命令バッファ16に与えられ
る。
【0022】命令バッファ16に与えられた命令は、命
令デコード・演算実行パイプラインの最初の命令プレゼ
ンテーションサイクルE、デコードサイクルDにおい
て、インストラクション・ワード・レジスタ(IWR)
17、デコーダ18によってデコードされる。
【0023】命令のデコード結果に対応して、例えば主
記憶オペランドのアドレス計算が行われる。このアドレ
ス計算のためにレジスタアップデートバッファ(RU
B)36、または汎用レジスタ(GR)37などから、
オペランドアドレスレジスタ(OP ADRS RE
G)25を介してアドレス生成用のデータ、例えばベー
ス、インデックス、およびディスプレイスメントの値な
どが、エフェクティブ・アドレス・ジェネレータ(EA
G)26に与えられ、オペランドアドレスの生成が行わ
れる。生成されたオペランドアドレスは、オペランド・
エフェクティブ・アドレス・レジスタ(OEAR)27
に格納される。オペランドアドレス生成後の図2の各ブ
ロックの動作は本発明の動作と直接には関係がないた
め、その説明を省略する。
【0024】図2において本発明の特徴を成す構成要素
は、オペランド・アドレス・ヒストリー(OAHIS)
19、EGIチェッカ22、およびリザベーション・ス
テーション・フォー・ジェネレート・バイパス(RSG
B)23である。
【0025】まずデコーダ18のデコード結果に対応し
て、その結果はEGIチェッカ22によって、例えば先
行命令のタグ情報の一部としての先行命令における命令
結果の書き込み先となるレジスタ番号などと比較され
る。現在の命令のデコード結果において、アドレス生成
に使用されるレジスタの番号が先行命令の実行結果が書
き込まれるレジスタの番号と一致すれば、レジスタ干渉
状態としてのエクセキュート・ジェネレート・インター
ロック(EGI)が検出される。このEGI検出回路に
ついては、汎用レジスタに対する干渉チェック回路とし
て、発明者の次の先願に説明されている。
【0026】特開平3−212737号、豊西、井上:
アクセスレジスタのインタロック制御方式 EGIが検出されると、RSGB23に現在の命令のア
ドレスを格納するエントリが作成される。そしてこの場
合には、図10で説明したようにオペランドアドレスの
生成は使用すべきレジスタが使用可能となってから行わ
れるが、その結果EAG26によって生成されたアドレ
スは、RSGB23の同じエントリに現在の命令のアド
レスに対応させて格納される。
【0027】RSGB23の格納内容は命令のアドレ
ス、および生成されたオペランドアドレスをペアとし
て、命令処理の終了時にオペランド・アドレス・ヒスト
リー(OAHIS)19に生成されるエントリに同様に
格納される。そして、例えば次の命令のフェッチ時に、
その命令のアドレスが格納されたIEAR12の内容を
用いてOAHIS19の記憶内容が検索され、命令アド
レスが一致するか否か、すなわちOAHISにヒットし
たか否かと、ヒットした場合の対応するオペランドアド
レス、その他の情報が命令フェッチのIBサイクルで、
IBタグ20から命令バッファタグ21にセットされ
る。セットされた情報は、インストラクションワードレ
ジスタ17を介して、命令実行のDサイクルでデコーダ
18にDタグとして与えられる。
【0028】DサイクルにおいてEGIチェッカ22に
よって、前述と同様にEGIの検出が行われ、EGIが
検出された場合には、Dサイクルを抜ける時点でRSG
B23にエントリが作成される。そのエントリには有効
性フラグ、OAHISミスかヒットのどちらであるか、
その他の制御フラグ、および自命令の命令アドレス(I
AR)の登録が行われる。OAHISヒットの場合に
は、OAHIS19に格納されていたオペランドアドレ
ス、すなわち予測オペランドアドレス(OAR)も合わ
せて格納される。
【0029】Dサイクル以降の動作は、フェッチされた
命令に対してOAHISミスとヒットの場合、更にその
予測アドレスが正しい場合と誤っていた場合によって処
理が異なるので、その動作については後述する。
【0030】図3はオペランド・アドレス・ヒストリー
(OAHIS)の構成、およびその動作の説明図であ
る。同図においてOAHIS19は、図2のRSGB2
3から命令のアドレスIAR、その命令に対応するオペ
ランドアドレスOARが格納される領域と、有効性フラ
グを示すVが格納される領域と、制御情報CTLが格納
される領域から構成されている。ここで制御情報CTL
としては、後述するように、予測オペランドアドレスが
誤っていた場合に、その誤りを示すフラグなどが格納さ
れる。
【0031】図3において、図2のインストラクション
・フェッチ・エフェクティブ・アドレス・ジェネレータ
(IFEAG)11から送られる命令フェッチアドレス
が格納されたインストラクション・エフェクティブ・ア
ドレス・レジスタ(IEAR)12の内容によってIA
Rが検索され、一致したIARがあると判定され、かつ
そのエントリの有効性フラグが有効である場合には、対
応するオペランドアドレスOAR、制御情報CTL、お
よび有効性フラグVがIBタグ20に格納される。
【0032】図4は図3のOAHISの各エントリにお
けるデータ格納形式の説明図である。同図に示すよう
に、各エントリには有効性フラグV、制御情報CTL、
命令アドレスIARおよびその命令に対応するオペラン
ドアドレスOARが格納される。IARのビット17〜
27は本発明の実施形態では、例えばRAMの深さ方向
のアドレスとして使用され、またビット28はイーブン
/オッドのバンクの選択に使用される。これはRAMが
2ウェイ・4バンク構成で、各バンク2Kエントリ、合
計8Kエントリとなっており、RAMがセットアソシア
ティブなエントリで構成されているためである。しかし
ながら、このようなRAMの構成は本発明とは直接の関
係はない。
【0033】図5はRSGBの各エントリにおけるデー
タ格納形式の説明図である。同図において各エントリに
は有効性フラグV、例えばエントリの作成時に命令実行
順序に対応して格納される命令識別子IID、OAHI
Sにヒットしたか否かなどの制御情報が格納されるCT
L、命令のアドレスIAR、対応するオペランドアドレ
スOARが格納される。
【0034】このRSGBのエントリのオペランドアド
レスOARには、OAHISにヒットした場合には初め
に予測アドレスがセットされ、その後アドレス生成に使
用すべきレジスタが実際に使用可能となった時点で生成
されたアドレスと比較され、その比較の結果が不一致で
あれば生成アドレスがセットされ、その正しいアドレス
が、命令の完了時にOAHISのOARの書き替えに使
用される。
【0035】続いて本発明の実施形態におけるオペラン
ド・アドレス・ヒストリーを用いた動作について、図6
〜図8のタイムチャートを用いて説明する。図6は命令
フェッチパイプラインにおける動作の説明図である。サ
イクルIにおいて、IFEAG11によって出力された
フェッチ命令のアドレスによってキャッシュの検索が行
われると共に、OAHIS19の検索も行われる。サイ
クルIRにおいて、ローカルバッファストレージ(LB
S)15の内容が命令バッファ16に、またOAHIS
19からの出力、すなわちIBタグ20の内容が命令バ
ッファタグ21に与えられる。
【0036】この命令バッファタグの内容は、命令プレ
ゼンテーションのサイクルEを経て、デコードサイクル
DにおいてDタグとして用いられる。図7は、先行命令
と後続命令との関係の違いによる、オペランド・アドレ
ス・ヒストリーを用いた処理の違いを説明するタイムチ
ャートである。同図において先行命令がロード命令Lで
あるものとして、タイムチャートを説明する。この先行
命令に対応して、バッファサイクルBでローカルバッフ
ァストレージ(LBS)の内容がレジスタアップデート
バッファ(RUB)に格納され、また演算結果としての
書き込みデータが、書き込みサイクルWにおいて汎用レ
ジスタ(GR)に格納される。
【0037】後続命令に対しては、その命令のアドレス
がOAHISにヒットした場合とミスした場合とで、処
理が基本的に異なる。まずミスした場合、すなわち後続
の命令のアドレスがOAHISの内部のIARとして登
録されていない場合には、デコードサイクルDにおいて
EGIチェッカ22によってEGIが検出された時点
で、RSGB23に有効性フラグVとその後続命令のア
ドレスIARが格納される。
【0038】図10におけると同様に先行命令、すなわ
ちロード命令Lに対応して主記憶オペランドのフェッチ
が完了し、そのデータが用意されるまで、後続命令にお
けるオペランドアドレスの生成は遅らされる。ロード命
令に対応するバッファサイクルBにおいてそのデータが
確定されると、そのデータはインデックスレジスタX
R、ベースレジスタBRに直接入力され、それらのデー
タがアドレス生成用のデータEA1,EA2として使用
され、EAG26によって必要な加算が行われ、オペラ
ンドアドレスEAG0/1が生成され、そのオペランド
アドレスはRSGBのエントリにIARに対応してOA
Rとして格納される。
【0039】それ以後の動作は図10におけると同様で
あるが、その後続命令の完了に際してRSGB23内の
情報、すなわち命令のアドレスIAR、対応するオペラ
ンドアドレスOAR、および有効性フラグVがOAHI
S19に送られ、新しいエントリが作成されて、命令実
行結果として記憶される。
【0040】次にOAHISにヒットした場合、すなわ
ち後続命令のアドレスがOAHISに格納されているI
ARの値と一致した場合には、対応するオペランドアド
レスがEAG26にEAG0/1として送られ、またR
SGB23内に新しいエントリが作成されて有効性フラ
グV、命令のアドレスIAR、オペランドアドレスOA
Rが格納される。EAG26に送られたオペランドアド
レスは予測オペランドアドレスとして用いられ、後続命
令の実行、すなわち主記憶オペランドのフェッチを含ん
だ後続命令に対応する処理が開始される。
【0041】これとは別に、先行命令としてのロード命
令における主記憶オペランドのフェッチが完了し、その
データが用意された時点でOAHISミスの場合と同様
に、EAG26によってオペランドアドレスの生成が行
われる。生成されたアドレスEAG2は命令実行順序に
従った正しいアドレスであって、このアドレスはRSG
B23に送られ、そこに登録されているオペランドアド
レス、すなわち予測オペランドアドレスとの比較が行わ
れる。そして比較結果が一致であればOARマッチとし
て、この後続命令に対応する処理はそのまま継続実行さ
れる。
【0042】正しいオペランドアドレスと予測オペラン
ドアドレスの比較結果が不一致であれば、予測アドレス
は誤りであり、予測アドレスを使用して行われた処理の
結果は正しくないことになる。この場合のタイムチャー
トが図7の最下部のタイムチャートである。正しいオペ
ランドアドレスと予測オペランドアドレスとの不一致、
すなわちOARのミスマッチが判定されると、すでに実
行された予測オペランドアドレスを用いた命令実行処理
は中止され、処理のやり直しが必要となる。すなわち命
令実行パイプラインの最終サイクルとしての書き込みサ
イクルWにおいて処理結果が汎用レジスタ(GR)に書
き込まれることはなく、GRの更新は行われない。そし
てOAHIS内で誤った予測アドレスが格納されていた
エントリに、予測オペランドアドレスが誤りであること
を示すGIDDYフラグが書き込まれる。更に再度命令
実行を行うために図8に示すRS1ステートへの状態遷
移が行われる。
【0043】図8は命令再実行のための命令フェッチパ
イプライン動作の説明図である。同図において図7から
の状態遷移によるRS1ステートの次に、RS1Dのス
テートの処理が行われる。このステートはR1のディレ
ーサイクルであり、R1ステート+1サイクルで次のス
テートへの遷移が引き起こされる。次のスタートのステ
ートは、命令実行のためのプロセスステートに入ること
を指示するステートである。そして命令フェッチパイプ
ラインの最初のサイクルIにおいて、プログラム・ステ
ータス・ワード・インストラクション・アドレス・レジ
スタ(PSWIAR)の内容がIFEAG11に与えら
れ、その内容を用いてキャッシュが検索される。以下の
動作は図6におけると同様であるが、OAHISの内容
は使用されない。
【0044】なおこの場合RSGB23に格納されてい
る命令のアドレスIARを使用して再実行のための命令
フェッチを行えば、命令再実行に伴う処理の遅延をある
程度小さくすることは可能である。
【0045】図9は予測オペランドアドレスがミスマッ
チの場合の命令再実行動作のパイプライン処理の更に詳
細な説明図である。同図において、EAG26によって
生成された正しいオペランドアドレスと、RSGB23
に格納された予測オペランドアドレスは比較回路41に
よって比較され、オペランドアドレスのミスマッチが判
定されると、その結果は図2の汎用レジスタGR、また
は浮動小数点レジスタFR37へのデータの書き込み禁
止信号、およびプログラムステータスワードのイントス
トラクション・アドレス・レジスタ、すなわち次のフェ
ッチ命令のアドレスを与えるレジスタに対する更新禁止
信号として用いられる。これらの信号として“L”を与
えることによって、レジスタGR、FR37への命令実
行結果の書き込みと、PSWIARの更新とが禁止され
る。そして図8において説明したようにPSWIARの
値、すなわち実行処理が中止された命令のアドレスの値
が命令パイプラインに与えられ、図示しないが、最終的
に命令実行結果の書き込みサイクルWにおいて命令実行
結果がGR,FR37に格納されると共に、PSWIA
Rの更新も行われる。
【0046】前述のように実際に生成されたオペランド
アドレスと予測オペランドアドレスとの比較の結果が不
一致の場合には、OAHIS19内の対応するエントリ
の予測アドレスの書き替えも行われる。これは同じシー
ケンス、すなわち同じアドレスの命令が再び実行された
場合に、再度予測アドレスの誤りを引き起こすことを防
止するためである。
【0047】またこの予測アドレス誤りが引き起こされ
たエントリを単純にOAHISから消去することもでき
る。しかしそれよりも優れた方法として、本実施形態に
おては、そのエントリに予測アドレスの誤りを示すGI
DDYフラグを制御情報の一部として書き込んで、予測
誤りを記録する方法を採用することもできる。このGI
DDYフラグがオンのエントリが検索された場合には、
命令のアドレスがヒットの場合でもOAHISに格納さ
れているオペランドアドレスを使用することなく、OA
HISミスの場合と同様に、EAG26によってオペラ
ンドアドレスが生成された後に命令処理を行うことがで
きる。
【0048】更に例えば命令のアドレスがあるオフセッ
ト値を用いて順次インクリメントされるような場合に
は、このことを示すフラグとそのオフセット値を制御情
報としてOAHISのエントリに格納し、命令アドレス
の一致によってそのエントリが読出された時、そのフラ
グに従ってそのエントリに格納されているOARの値に
オフセット値を加算して、予測オペランドアドレスの修
正値として使用することもできる。また1回おきに別の
アドレスを命令アドレスとして生成する場合には、その
ことをフラグとして制御情報の中に記録し、そのエント
リが検索された時にはその別のアドレスに対応して予測
オペランドアドレスを生成して使用する方法も考えられ
る。このような方法としては各種の方法が考えられるの
で、本実施形態ではこのような情報を制御情報CTLと
して一括して示してある。
【0049】以上の説明においては、オペランド・アド
レス・ヒストリーOAHISはRAMを用いて構成され
ている。発明の実施形態としては、類似の機構として分
岐命令における分岐先アドレス、すなわち分岐が成立し
た場合のターゲットアドレスを予測する機構としてのブ
ランチヒストリーを備えることもできる。このブランチ
ヒストリーについては、発明者の次の先願に詳細に説明
されている。
【0050】特開平6−89173号、井上:ブランチ
・ヒストリーを持つ命令実行処理装置 ブランチヒストリーのエントリには命令が分岐命令であ
る場合の命令のアドレスと、分岐先としてのターゲット
アドレス、および有効性を示すフラグなどが格納されて
いる。そこでOAHISを構成するRAMを、ブランチ
ヒストリーを構成するRAMと共通にして使用すること
ができる。ブランチヒストリーのエントリとして使用す
る場合には、分岐命令の実行時にEAGによって生成さ
れた分岐先のターゲットアドレスをオペランドアドレス
OARに代わって格納し、そのエントリの用途がブラン
チヒストリーであることをフラグとして登録することに
より、オペランド・アドレス・ヒストリーのエントリと
区別することが可能となる。
【0051】命令フェッチに際して、命令のアドレスを
用いてこのようなRAM内の命令アドレスにアクセスが
行われる。但し検索されたエントリがブランチヒストリ
ーに対応するものである場合には、読出されて命令バッ
ファタグ21にセットされるターゲットアドレスの値は
命令フェッチパイプラインに供給され、分岐先の命令を
分岐命令の実行に先立ってフェッチするために使用され
る。
【0052】
【発明の効果】以上詳細に説明したように、本発明によ
れば過去の実行結果に基づいて、例えば主記憶オペラン
ドのアドレスを予測して、後続命令の実行を開始するこ
とによって、レジスタ干渉としてのEGIが起こっても
命令の並列処理の性能を低下させることを防止すること
ができ、情報処理装置の性能向上に寄与するところが大
きい。
【図面の簡単な説明】
【図1】本発明の原理構成を示すブロック図である。
【図2】本発明のオペランド・アドレス・ヒストリーを
用いた動作が実行される情報処理装置の命令制御ユニッ
トを中心とする構成を示すブロック図である。
【図3】オペランド・アドレス・ヒストリーの構成とそ
の動作を説明する図である。
【図4】オペランド・アドレス・ヒストリーの各エント
リにおけるデータ格納方式を説明する図である。
【図5】リザベーション・ステーション・フォー・ジェ
ネレート・バイパスの各エントリにおけるデータ格納方
式を説明する図である。
【図6】命令フェッチパイプラインにおける本発明の実
施形態としての処理を説明する図である。
【図7】命令実行パイプラインにおける本発明の実施形
態における処理を説明するタイムチャートである。
【図8】命令再実行の場合の本発明の実施形態としての
命令フェッチパイプライン処理のタイムチャートであ
る。
【図9】正しいオペランドアドレスと予測オペランドア
ドレスとが一致しない場合のパイプライン動作の詳細な
説明図である。
【図10】従来におけるEGIによるアドレス生成の遅
れを説明するタイムチャートである。
【符号の説明】
1 情報処理装置 2 オペランド・アドレス・ヒストリー記憶手段 12 イントストラクション・エフェクティブ・アドレ
ス・ジェネレータ(IEAR) 18 デコーダ 19 オペランド・アドレス・ヒストリー(OAHI
S) 21 命令バッファタグ 22 EGIチェッカ 23 リザベーション・ステーション・フォー・ジェネ
レート・バイパス(RSGB) 26 エフェクティブ・アドレス・ジェネレータ(EA
G)

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 先行の命令によって内容が書き替えられ
    るレジスタが後続の命令によってオペランドアドレスの
    生成に使用されるレジスタ干渉の状態を検出する回路を
    備える情報処理装置において、 該レジスタ干渉状態が検出された時、前記後続命令の実
    行時に生成されたオペランドアドレスを該後続命令のア
    ドレスと関連づけて記憶するオペランド・アドレス・ヒ
    ストリー記憶手段を備えることを特徴とする情報処理装
    置。
  2. 【請求項2】 前記オペランド・アドレス・ヒストリー
    記憶手段が、分岐命令の実行時に得られた分岐先アドレ
    スを該分岐命令のアドレスと関連させて記憶すると共
    に、前記後続命令のアドレスに関連してオペランドアド
    レスを記憶する領域と区別するためのフラグを記憶する
    領域を更に備えることを特徴とする請求項1記載の情報
    処理装置。
  3. 【請求項3】 主記憶装置からの命令のフェッチ時に、
    該フェッチ命令のアドレスによって前記オペランド・ア
    ドレス・ヒストリー手段の記憶内容からオペランドアド
    レスが検索された時、該オペランドアドレスを該フェッ
    チ命令と共に命令実行ステージにおいて提示する命令フ
    ェッチ手段を更に備えることを特徴とする請求項1記載
    の情報処理装置。
  4. 【請求項4】 前記命令フェッチ手段によって前記オペ
    ランド・アドレス・ヒストリー記憶手段から検索された
    オペランドアドレスが提示された時、該フェッチ命令に
    対応するオペランドアドレスが生成される以前に、該提
    示されたオペランドアドレスを予測オペランドアドレス
    として主記憶オペランドのフェッチを含む命令実行を開
    始する命令実行手段を更に備えることを特徴とする請求
    項3記載の情報処理装置。
  5. 【請求項5】 前記提示されたオペランドアドレスを予
    測オペランドアドレスとして命令実行が開始された時、
    該予測オペランドアドレスを保持し、前記フェッチ命令
    によってオペランドアドレスの生成に使用されるレジス
    タが使用可能になった時点で生成されたオペランドアド
    レスと比較するオペランドアドレス比較手段を更に備
    え、2つのオペランドアドレスが一致した時、該フェッ
    チ命令に対応する処理をそのまま実行継続することを特
    徴とする請求項4記載の情報処理装置。
  6. 【請求項6】 前記オペランドアドレス比較手段によっ
    て2つのオペランドアドレスが一致しないことが検出さ
    れた時、前記予測オペランドアドレスを用いた命令実行
    の結果を無効化し、前記生成されたオペランドアドレス
    を用いて再度命令実行を行う命令再実行手段を更に備え
    ることを特徴とする請求項5記載の情報処理装置。
  7. 【請求項7】 前記オペランドアドレス比較手段によっ
    て2つのオペランドアドレスが一致しないことが検出さ
    れた時、前記オペランド・アドレス・ヒストリー記憶手
    段が前記後続命令のアドレスと関連づけて該予測オペラ
    ンドアドレスの誤りの原因となった事象に関する情報を
    更に記憶することを特徴とする請求項5記載の情報処理
    装置。
  8. 【請求項8】 前記フェッチ命令より後の命令の主記憶
    装置からのフェッチ時に、該後のフェッチ命令のアドレ
    スによって前記オペランド・アドレス・ヒストリー記憶
    手段の記憶内容から前記予測オペランドアドレスの誤り
    の原因となった事象に関する情報が検索された時、該事
    象に関する情報に基づいて記憶されている予測アドレス
    を修正し、該修正値を新しい予測アドレスとして該後の
    フェッチ命令と共に命令ステージにおいて提示する第2
    の命令フェッチ手段を備えることを特徴とする請求項7
    記載の情報処理装置。
  9. 【請求項9】 前記オペランドアドレス比較手段によっ
    て2つのオペランドアドレスが一致しないことが検出さ
    れた時、前記オペランド・アドレス・ヒストリー記憶手
    段が前記後続命令のアドレスと関連づけて該予測オペラ
    ンドアドレスが誤りであることを更に記憶すると共に、 前記フェッチ命令より後の命令の主記憶装置からのフェ
    ッチ時に、該後のフェッチ命令のアドレスによって前記
    オペランド・アドレス・ヒストリー記憶手段の記憶内容
    から前記予測オペランドアドレスが検索されても、該後
    のフェッチ命令によってオペランドアドレスの生成に使
    用されるレジスタが使用可能になってオペランドアドレ
    スが生成されるまで該後のフェッチ命令の実行を延期す
    る第2の命令実行手段を備えることを特徴とする請求項
    5記載の情報処理装置。
  10. 【請求項10】 前記命令フェッチ手段によって提示さ
    れたオペランドアドレスを、命令の実行待ち合わせのス
    タック処理のために、前記フェッチ命令のアドレスと共
    に格納するリザベーションステーション手段を更に備え
    ることを特徴とする請求項3,4、または5記載の情報
    処理装置。
JP18200198A 1998-06-29 1998-06-29 情報処理装置 Expired - Fee Related JP3499135B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP18200198A JP3499135B2 (ja) 1998-06-29 1998-06-29 情報処理装置
US09/268,998 US6421771B1 (en) 1998-06-29 1999-03-16 Processor performing parallel operations subject to operand register interference using operand history storage
EP99302565A EP0969358A3 (en) 1998-06-29 1999-03-31 Information processing device and method for performing parallel processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP18200198A JP3499135B2 (ja) 1998-06-29 1998-06-29 情報処理装置

Publications (2)

Publication Number Publication Date
JP2000020311A true JP2000020311A (ja) 2000-01-21
JP3499135B2 JP3499135B2 (ja) 2004-02-23

Family

ID=16110595

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18200198A Expired - Fee Related JP3499135B2 (ja) 1998-06-29 1998-06-29 情報処理装置

Country Status (3)

Country Link
US (1) US6421771B1 (ja)
EP (1) EP0969358A3 (ja)
JP (1) JP3499135B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6629234B1 (en) * 2000-03-30 2003-09-30 Ip. First, L.L.C. Speculative generation at address generation stage of previous instruction result stored in forward cache for use by succeeding address dependent instruction
US7107438B2 (en) * 2003-02-04 2006-09-12 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for performing early correction of conditional branch instruction mispredictions
US7185182B2 (en) * 2003-02-04 2007-02-27 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early instruction results
US7100024B2 (en) 2003-02-04 2006-08-29 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early status flags
US20050216713A1 (en) * 2004-03-25 2005-09-29 International Business Machines Corporation Instruction text controlled selectively stated branches for prediction via a branch target buffer
US7694286B2 (en) * 2005-02-10 2010-04-06 International Business Machines Corporation Apparatus and method for detecting base-register usage conflicts in computer code
US8966230B2 (en) * 2009-09-30 2015-02-24 Intel Corporation Dynamic selection of execution stage
US9292292B2 (en) * 2013-06-20 2016-03-22 Advanced Micro Devices, Inc. Stack access tracking
JP6189266B2 (ja) * 2014-08-20 2017-08-30 東芝メモリ株式会社 データ処理装置、データ処理方法及びデータ処理プログラム
CN111049894B (zh) * 2019-12-07 2023-08-29 深圳市万佳安物联科技股份有限公司 云端物联网数据处理方法、装置以及电子设备

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60129839A (ja) 1983-12-19 1985-07-11 Hitachi Ltd 情報処理装置
JPH0760384B2 (ja) 1985-05-07 1995-06-28 株式会社日立製作所 命令実行方法およびデータ処理装置
JPH07103985B2 (ja) * 1987-12-22 1995-11-08 大阪瓦斯株式会社 ターボ式熱風発生装置付ボイラの運転方法
JP2667849B2 (ja) * 1988-01-06 1997-10-27 株式会社日立製作所 情報処理装置
JP2667851B2 (ja) 1988-01-22 1997-10-27 株式会社日立製作所 情報処理装置
JPH03212737A (ja) 1990-01-18 1991-09-18 Fujitsu Ltd アクセスレジスタのインタロック制御方式
JP3335379B2 (ja) 1992-09-09 2002-10-15 富士通株式会社 ブランチ・ヒストリーを持つ命令実行処理装置
JP2621763B2 (ja) * 1993-07-15 1997-06-18 日本電気株式会社 情報処理装置
US5790823A (en) * 1995-07-13 1998-08-04 International Business Machines Corporation Operand prefetch table
JP3435267B2 (ja) * 1995-11-07 2003-08-11 株式会社東芝 マイクロプロセッサ及びそのロードアドレス予想方法
US5813045A (en) * 1996-07-24 1998-09-22 Advanced Micro Devices, Inc. Conditional early data address generation mechanism for a microprocessor

Also Published As

Publication number Publication date
US6421771B1 (en) 2002-07-16
US20020049895A1 (en) 2002-04-25
JP3499135B2 (ja) 2004-02-23
EP0969358A2 (en) 2000-01-05
EP0969358A3 (en) 2003-01-08

Similar Documents

Publication Publication Date Title
US5377336A (en) Improved method to prefetch load instruction data
JP3871884B2 (ja) 記憶からロードへの転送のための機構
EP0381447B1 (en) Method and apparatus for controlling the conversion of virtual to physical memory addresses in a digital computer system
US9131899B2 (en) Efficient handling of misaligned loads and stores
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
US8984264B2 (en) Precise data return handling in speculative processors
JPH07281895A (ja) 分岐キャッシュ
JPH11212788A (ja) プロセッサのデータ供給装置
JP2003519832A (ja) アントレーニングを備えるストア−ロード転送プレディクタ
US8601240B2 (en) Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution
US9804969B2 (en) Speculative addressing using a virtual address-to-physical address page crossing buffer
JP2006520964A5 (ja)
JP3499135B2 (ja) 情報処理装置
JP3848161B2 (ja) アドレス変換履歴テーブルを用いたメモリアクセス装置及び方法
JP2596712B2 (ja) 近接した分岐命令を含む命令の実行を管理するシステム及び方法
JPH02287626A (ja) パイプライン方式の分岐命令制御装置
JPH04213135A (ja) 外部メモリアクセスシステム
JP2001236224A (ja) 分岐予測テーブル汚染の低減方法
JPH03129432A (ja) 分岐制御回路
US10558462B2 (en) Apparatus and method for storing source operands for operations
JPS5991551A (ja) 分岐先アドレス予測を行なう命令先取り装置
JP3497087B2 (ja) 命令制御装置及びその方法
JP3156773B2 (ja) 命令処理装置
JP2894438B2 (ja) パイプライン処理装置
JPH09311787A (ja) データ処理装置

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20031125

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

Free format text: PAYMENT UNTIL: 20071205

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20081205

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20091205

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20091205

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20101205

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20111205

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20111205

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20121205

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20121205

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20131205

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees