JP3683968B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP3683968B2
JP3683968B2 JP02425596A JP2425596A JP3683968B2 JP 3683968 B2 JP3683968 B2 JP 3683968B2 JP 02425596 A JP02425596 A JP 02425596A JP 2425596 A JP2425596 A JP 2425596A JP 3683968 B2 JP3683968 B2 JP 3683968B2
Authority
JP
Japan
Prior art keywords
instruction
branch
address
history
branch destination
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
JP02425596A
Other languages
English (en)
Other versions
JPH09218786A (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 JP02425596A priority Critical patent/JP3683968B2/ja
Priority to US08/783,039 priority patent/US5732254A/en
Priority to GB9701350A priority patent/GB2310057B/en
Publication of JPH09218786A publication Critical patent/JPH09218786A/ja
Application granted granted Critical
Publication of JP3683968B2 publication Critical patent/JP3683968B2/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/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling

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】
(目次)
発明の属する技術分野
従来の技術
発明が解決しようとする課題(図9,図10)
課題を解決するための手段(図1)
発明の実施の形態(図2〜図9)
発明の効果
【0002】
【発明の属する技術分野】
本発明は、パイプライン処理方式を採用した情報処理装置に関し、特に、ブランチ・ヒストリを用いて分岐命令を高速で実行できるようにした情報処理装置に関する。
【0003】
【従来の技術】
一般に、パイプライン処理方式を採用した情報処理装置(パイプライン・プロセッサ)においては、一つの命令の実行の終了を待つことなく、実行ステージが空けば次々と後続の命令列をパイプラインに投入してその実行を開始することにより、性能の向上(処理の高速化)をはかっている。
【0004】
しかしながら、先行する命令の実行結果が後続の命令の実行に影響を与える場合には、先行する命令の実行の終了を待たなければ、後続の命令の実行を開始することができない。このように先行する命令の実行の終了を待つことにより、パイプライン処理に乱れが生じて、情報処理装置の性能低下を引き起こすことになる。
【0005】
後続の命令に影響を与える命令の代表的な例として分岐命令が挙げられる。分岐命令は、その実行が終了するまで、分岐が成立するか否かと分岐のターゲットの命令のアドレスとが分からないために、パイプライン処理に乱れが生じる。
そこで、ブランチ・ヒストリを採用することにより、分岐命令の処理の高速化をはかることが一般的に行なわれている。情報処理装置により処理を行なっている際にある分岐命令を実行した結果、その分岐が成立することが判明した場合、ブランチ・ヒストリに、その分岐命令自身のアドレス(以下、分岐命令アドレスという)と分岐先命令のアドレス(以下、分岐先アドレスという)とを対で登録する。このようにして、ブランチ・ヒストリには、分岐の成立した分岐命令についての上記対データを蓄積してゆく。
【0006】
そして、ある分岐命令を主記憶装置から取り出して実行する際には、その実行に先立ってブランチ・ヒストリを索引し、ブランチ・ヒストリにその分岐命令のアドレスが登録されている場合には、その分岐命令アドレスと対になっている分岐先アドレスをブランチ・ヒストリから読み出して、先行する命令の実行の終了を待つことなく、その分岐先アドレスに対応する命令を主記憶装置から取り出して実行させるのである。なお、その分岐先アドレスに対応する命令の写しがキャッシュメモリに保持されている場合には、その命令は、キャッシュメモリから取り出されて実行される。
【0007】
つまり、分岐命令の実行以前に、ブランチ・ヒストリに蓄積された過去の分岐命令実行結果に基づき分岐先アドレスを予測し、分岐成立が予想される場合(分岐命令アドレスに対応する分岐先アドレスがブランチ・ヒストリに登録されている場合)、予測された分岐先アドレスを用いて命令フェッチ(命令読出と同義;以下、読出のことをフェッチとして説明する場合がある)を行ない、分岐命令に続いて、読み出された分岐先命令を命令実行ステージに投入する。
【0008】
このようにして、分岐命令を実行する場合に、その分岐の成立/不成立が判明する以前に、後続の命令または分岐のターゲット側の命令を実行させることで、分岐命令の処理を高速化している。
【0009】
【発明が解決しようとする課題】
ところで、一般に、命令列は、サブルーチンをもって実行されるケースが多数見受けられる。今、メインルーチンからサブルーチンを呼び出して実行した後にそのサブルーチンからメインルーチンに戻る時のことを考えてみる。要するに、これは分岐命令を実行していることに他ならない。ここで、特にサブルーチンからメインルーチンに戻るケースに注目してみると、分岐先アドレスはその都度変更されている。
【0010】
例えば図9を参照しながら説明すると、メインルーチンの命令2a(分岐命令)からサブルーチンの命令1dに分岐した後にサブルーチンの命令4d(分岐命令)からメインルーチンの命令3aに分岐し、さらに、メインルーチンの命令2b(分岐命令)からサブルーチンの命令1dに分岐した後にサブルーチンの命令4d(分岐命令)からメインルーチンの命令3bに分岐し、さらに、メインルーチンの命令3c(分岐命令)からサブルーチンの命令1dに分岐した後にサブルーチンの命令4d(分岐命令)からメインルーチンの命令4cに分岐するような場合、サブルーチンの命令4dの分岐先は、その都度、メインルーチンの命令3a,3b,4cと変化している。
【0011】
ここで、前述した通り、現在のブランチ・ヒストリには、以前に分岐命令の分岐が成立して、その分岐命令アドレスと分岐先アドレスとが対になって登録されている。そして、分岐命令の実行にあたってその分岐命令を主記憶装置(またはキャッシュメモリ)から取り出す際に、その実行に先立ちブランチ・ヒストリを索引した結果求められた分岐先アドレスで命令フェッチを実行しても、何らかの要因で分岐先アドレスが変更された場合には、当然、ブランチ・ヒストリを索引した結果の分岐先アドレスは無効になるので、今現在実行しているリクエストはキャンセルされ、再度、正しい分岐先アドレスで命令フェッチを実行しなおすことになる。その際、実際に実行された分岐命令アドレスと分岐先アドレスとを対にしてブランチ・ヒストリに再度登録する。
【0012】
以上のような現象が繰り返されると、同一の分岐命令を実行している一方で分岐先アドレスが変化するがために、ブランチ・ヒストリを索引して求められた分岐先アドレスで命令フェッチを実行しても、その分岐先アドレスは無効になるので、今実行されているリクエストはキャンセルされ、再度、正しい分岐先アドレスで命令フェッチを実行しなおさなければならない。
【0013】
図9にて前述した例について、ブランチ・ヒストリを用いて実行される具体的なパイプライン処理動作(タイムチャート)を図10に示す。この図10に示すように、命令フェッチパイプラインは4つのサイクル(I,IT,IB,IR)から構成されるとともに、命令実行パイプライン(メインパイプライン)は7つのサイクル(D,A,T,B,E,C,W)から構成されている。
【0014】
ここで、命令フェッチパイプラインにおいて、Iは命令フェッチアドレスの計算サイクル、ITはアドレス変換サイクル、IBは命令をバッファ(キャッシュメモリまたは主記憶装置)から読み出すサイクル、IRは命令の命令実行パイプラインへの投入サイクルである。
また、命令実行パイプラインにおいて、Dは命令の解読サイクル、Aは主記憶オペランドのアドレス計算サイクル、Tはアドレス変換サイクル、Bはオペランドをバッファ(キャッシュメモリまたは主記憶装置)から読み出すサイクル、Eはオペランドに基づいての演算を実行するサイクル、Cはチェックサイクル、Wは演算結果の格納サイクルである。
【0015】
なお、図10中、命令フェッチパイプラインの先頭に付されたRS1サイクルおよびRS1Dサイクルは、ブランチ・ヒストリによる分岐先予測が外れその分岐先命令の実行を途中でキャンセルする際に、クリアパイプラインによって実行されるリセット処理のサイクルである。また、「サイクル」を「ステージ」として記述する場合もある。
【0016】
最初にサブルーチンの命令4d(分岐命令)がメインルーチンの命令3aに分岐する際には、命令列上に命令4dは初めて現れたのであるから、ブランチ・ヒストリに命令4dのアドレス(500CHEX 番地)と分岐先の命令3aのアドレス(1008HEX 番地)とが対で登録される。
従って、次に命令列上に命令4dが出現した際には、ブランチ・ヒストリを索引することにより、命令3aのアドレス(1008HEX 番地)が得られてブランチ・ヒストリ(BRHIS)からのターゲットフェッチが行なわれる。これによりロス・タイムを生じさせることなく命令3aを命令フェッチパイプラインに流すことができるはずである。
【0017】
しかし、実際には、2回目の命令4d実行に伴う分岐先は命令3bであるため、Cサイクルに到達した時点で初めて命令3aは間違いであることが判明し、その命令3aの実行は途中でキャンセルされ、再度、正しい命令3bのアドレス(2008HEX 番地)で命令フェッチをやりなおすことになる。結果として、命令4dの実行から命令3bの実行までに12τ(1τは1サイクルの処理時間)のロス・タイムが生じることになる。
【0018】
このとき、ブランチ・ヒストリには、命令4dのアドレス(500CHEX 番地)と分岐先の命令3bのアドレス(2008HEX 番地)とが対で登録されるため、次に命令列上に命令4dが出現した際には、ブランチ・ヒストリを索引することにより、今度は命令3bのアドレス(2008HEX 番地)が得られてブランチ・ヒストリ(BRHIS)からのターゲットフェッチが行なわれる。
【0019】
しかし、実際には、3回目の命令4dの実行に伴う分岐先は命令3であるため、Cサイクルに到達した時点で初めて命令3bは間違いであることが判明し、その命令3bの実行も途中でキャンセルされて、再度、正しい命令4cのアドレス(300CHEX 番地)で命令フェッチをやりなおすことになる。従って、この場合も、結果として、命令4dの実行から命令4cの実行までに12τのロス・タイムが生じてしまうことになる。
【0020】
つまり、本来のブランチ・ヒストリの機能によれば、分岐命令の分岐が一度成立してブランチ・ヒストリに登録された時、次にその同一の分岐命令が命令列に現れた時に分岐が成立していれば、ブランチ・ヒストリに登録されているのであるから、その分岐の成立/不成立が判明する以前に、後続の命令または分岐のターゲット側の命令を予測して実行することができ、分岐命令をロスなく実行することができる。
【0021】
しかし、図9に示すように分岐命令が出現する度にその分岐先命令のアドレスが変化する場合、ブランチ・ヒストリを索引して求められた分岐先アドレスで命令フェッチを実行すると、図10に示すごとく、その分岐先命令のアドレスは無効になってしまうため、クリアパイプラインによるキャンセルのための処理を行なってから命令フェッチパイプラインによる処理を行ない、再度、正しいアドレスで命令フェッチを実行しなくてはならない。
【0022】
また、同一の分岐命令についてブランチ・ヒストリに登録される情報は、常に最新の分岐先命令のアドレスとその分岐命令のアドレスとの対情報になってしまい、再度、最初の分岐命令アドレスと分岐先アドレスとにより分岐を実行する際には、その情報は消えてしまっている。その結果として、ブランチ・ヒストリを索引するために、却って、ロス・タイムが増えてしまうことになり、ブランチ・ヒストリを有効に活用することができないという課題があった。
【0023】
本発明は、このような課題に鑑み創案されたもので、同一の分岐命令が出現する度にその分岐先命令のアドレスが変更されたとしても、無駄なく分岐命令を実行でき且つブランチ・ヒストリを有効に活用できるようにして、分岐命令の処理の高速化つまりは情報処理性能の向上をはかった情報処理装置を提供することを目的とする。
【0024】
【課題を解決するための手段】
図1は本発明の原理ブロック図で、この図1に示すように、本発明の情報処理装置は、分岐命令のアドレスIA(Instruction Address)とこの分岐命令の分岐成立時における分岐先命令のアドレスTIA(Target Instruction Address)とを対にして登録されるブランチ・ヒストリ1を有している。
【0025】
また、本発明の情報処理装置は、パイプライン処理方式を採用するとともに、分岐命令の実行に先立ってその分岐命令のアドレスIAに基づきブランチ・ヒストリ1を索引し、そのアドレスIAと対になる分岐先命令のアドレスTIAがブランチ・ヒストリ1に登録されている場合には、そのアドレスTIAに対応する命令を予測分岐先命令として読み出し命令実行パイプラインに投入するように構成されている。
【0026】
そして、本発明の情報処理装置では、ブランチ・ヒストリ1に登録されたアドレス対IA&TIA毎に、そのアドレス対IA&TIAによる予測分岐先命令の命令読出を抑止する場合にオン状態に設定される命令読出抑止ビットGIDDYがそなえられるとともに、下記のような命令読出抑止ビット設定手段2がそなえられている。
【0027】
この命令読出抑止ビット設定手段2は、分岐命令の実行にあたりブランチ・ヒストリ1に既に登録済のアドレス対IA&TIAに従って予測分岐先命令を実行した際に、その予測分岐先命令と実際の分岐先命令とが異なっている場合にはその予測分岐先命令の実行をキャンセルして実際の分岐先命令を再度読み出すべく、その予測分岐先命令と実際の分岐先命令とを比較して生成された一の信号に基づいて、ブランチ・ヒストリ1におけるそのアドレス対IA&TIAの命令読出抑止ビットGIDDYをオン状態に設定する手段である(請求項1)。
【0028】
なお、上述のような本発明の情報処理装置には、下記のような命令読出抑止手段や保持手段をそなえてもよい。
ここで、命令読出抑止手段は、分岐命令の実行にあたりブランチ・ヒストリ1を索引して得られた登録済のアドレス対IA&TIAの命令読出抑止ビットGIDDYがオン状態である場合、そのアドレス対IA&TIAによる予測分岐先命令の読出を抑止するものである(請求項2)。
【0029】
また、保持手段は、分岐命令の実行にあたりブランチ・ヒストリ1を索引して得られた登録済のアドレス対IA&TIAの命令読出抑止ビットGIDDYがオン状態である場合、その分岐命令のアドレスIAと新たな分岐先命令のアドレスとのアドレス対がブランチ・ヒストリ1に登録されるのを抑止することによって、既に登録済のそのアドレス対IA&TIAをそのまま保持するものである(請求項1)。
さらに、命令読出抑止ビット設定手段2が命令読出抑止ビットGIDDYをオン状態に切り換える際には、ブランチ・ヒストリ1に、命令読出抑止ビット設定手段2がGIDDYビットをオン状態に切り換える時点の実際の分岐先命令のアドレスが保持される(請求項)。
図1により上述した本発明の情報処理装置では、分岐命令の実行にあたってその分岐命令が成立した場合には、従来通り、その分岐命令のアドレスIAと分岐先命令のアドレスTIAとの対がブランチ・ヒストリ1に登録される。
【0030】
そして、分岐命令の実行にあたりブランチ・ヒストリ1を検索しその分岐命令のアドレスIAに対応する分岐先命令のアドレスTIAが既に登録されていた場合(ヒットした場合)には、そのアドレスTIAの分岐先命令が予測分岐先命令として読み出されて実行される。
しかし、分岐先の変更等のために予測分岐先命令と実際の分岐先命令とが異なっており、その予測分岐先命令を実行できず、再度、実際の分岐先命令を読み出さなければならない場合、本発明の情報処理装置では、その情報が、命令読出抑止ビット設定手段2により、対応するアドレス対IA&TIAの命令読出抑止ビットGIDDYをオン状態に設定することで、ブランチ・ヒストリ1に登録される(請求項1)。
【0031】
また、本発明の情報処理装置では、分岐命令の実行に先立ってブランチ・ヒストリ1を索引しヒットした場合、ヒットしたアドレス対IA&TIAについての命令読出抑止ビットGIDDYが読み出される。そして、その命令読出抑止ビットGIDDYがオン状態である場合には、命令読出抑止手段により、アドレスTIAの命令を予測分岐先命令として読み出すことが抑止され、ブランチ・ヒストリ1を用いない通常の手順で、正しい分岐先命令についてのアドレスによる命令読出が実行される。つまり、オペランドアドレスから生成される正しい分岐先の命令アドレスで命令読出が実行される。従って、同一の分岐命令が出現する度にその分岐先命令のアドレスが変更されたとしても、無駄なく分岐命令を実行することができる(請求項2)。
【0032】
さらに、本発明の情報処理装置では、分岐命令の実行に先立ってブランチ・ヒストリ1を索引しヒットして読み出された命令読出抑止ビットGIDDYがオン状態である場合、保持手段により、ヒットしたアドレス対IA&TIAがそのまま保持され、ブランチ・ヒストリ1に、その分岐命令のアドレスと新たな分岐先命令のアドレスとを登録することが抑止される。
【0033】
従って、命令読出抑止ビットGIDDYをオン状態からオフ状態に切り換えることで、再度、ブランチ・ヒストリ1を索引した時には、このブランチ・ヒストリ1に命令読出抑止ビットGIDDYをオン状態に設定した時点で登録した情報(アドレス対IA&TIA)を利用できるので、同一の分岐命令が出現する度にその分岐先命令のアドレスが変更されるような場合においても、ブランチ・ヒストリ1をより有効に活用することができる(請求項)。
【0034】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
図2は本発明の一実施形態としての情報処理装置の構成を示すブロック図であり、この図2に示すように、パイプライン処理方式を採用した本実施形態の情報処理装置(パイプライン・プロセッサ)10は、前述したIサイクル,ITサイクル,IBサイクルおよびIRサイクルの4サイクルからなる命令フェッチパイプライン処理系統と、前述したDサイクル,Aサイクル,Tサイクル,Bサイクル,Eサイクル,CサイクルおよびWサイクルの6サイクルからなる命令実行パイプライン(メインパイプライン)処理系統とを有している。
【0035】
命令フェッチパイプライン処理系統は、選択回路11,命令アドレス生成回路12,選択回路13,命令フェッチパイプライン用キャッシュメモリ14,選択回路15,ブランチ・ヒストリ用アドレスレジスタ16,ブランチ・ヒストリ17,比較回路18,ANDゲート19および分岐先アドレス保持回路20を有している。
【0036】
また、命令実行パイプライン処理系統は、オペランドアドレス生成回路21,命令実行パイプライン用キャッシュメモリ22およびGIDDYビット設定回路23を有している。
なお、図2中では、情報処理装置10の全ての構成要素は図示されておらず、本発明に直接的に係わる部分のみが抽出されて図示されている。
【0037】
ここで、まず、命令実行パイプライン処理系統を構成する各部について説明する。
オペランドアドレス生成回路21は、Aサイクル(主記憶オペランドのアドレス計算サイクル)で、命令フェッチパイプラインから投入された命令のデコード結果に基づきオペランドアドレス(OP EAG)を生成し、後段の命令実行パイプライン用キャッシュメモリ22や選択回路11,13,15へ出力するものである。
【0038】
命令実行パイプライン用キャッシュメモリ22は、命令実行パイプラインで索引されるもので、図示しない主記憶装置に接続されている。このキャッシュメモリ22にオペランドアドレス生成回路21からのオペランドアドレスが入力されると、そのオペランドアドレスに対応するオペランドが検索されて出力される。そのオペランドアドレスに対応するオペランドを検索できなかった場合(ヒットしなかった場合つまりミスヒットの場合)には、そのオペランドアドレスに対応するオペランドが主記憶装置から読み出される。
【0039】
GIDDYビット設定回路23は、本発明の特徴的な部分であり、分岐命令の実行にあたりブランチ・ヒストリ17の検索結果に従って予測分岐先命令を読み出して実行した際に、その予測分岐先命令と実際の分岐先命令とが異なっているためにその予測分岐先命令の実行をキャンセルして実際の分岐先命令を再度読み出す場合、ブランチ・ヒストリ17においてその検索結果の検索アドレスのGIDDYビット(命令読出抑止ビット)17dをオン状態に設定する(つまりGIDDYビット17dに“1”を登録する)ものである。
【0040】
このGIDDYビット設定回路23は、図5に示すように、ANDゲート23aにより構成されている。このANDゲート23aは、Cサイクル(チェックサイクル)で得られた3つの信号“C REIFCH TIAR”,“C BR TKN”,“C VALID”の論理積を出力するものである。
ここで、“C REIFCH TIAR”は、ブランチ・ヒストリ17を検索して得られた分岐先アドレスと実際に実行すべき命令のアドレスとが異なっているために、命令フェッチを再度実行する場合に“1”となる信号である。また、“C BR TKN”は、分岐命令が分岐を実行する場合(分岐が成立する場合)に“1”となる信号であり、“C VALID”は現在Cサイクルの命令を実行中である場合に“1”となる信号である。
【0041】
次に、命令フェッチパイプライン処理系統を構成する各部について説明する。選択回路11は、選択回路13により選択されて出力された命令アドレスと、オペランドアドレス生成回路21により生成された分岐先アドレスOP EAGとのいずれか一方を選択して命令アドレス生成回路12へ出力するものである。命令アドレス生成回路(IF EAG)12は、選択回路11から入力されたアドレスに基づいて命令アドレスを生成するためのもので、図3に示すように、3つの命令列(A系列,B系列,C系列)用の命令アドレス生成部12A,12B,12Cと、これらの命令アドレス生成部12A〜12Cからの命令アドレスのうちの一つを選択して選択回路13へ出力する選択回路12aとから構成されている。なお、これらのA系列〜C系列は、それぞれ2ビットのID(識別子)“00”,“01”,“10”により識別される。
【0042】
これらの命令アドレス生成部12A,12B,12Cは、それぞれ、命令アドレスレジスタ(IAR)12A−1,12B−1,12C−1と、加算器12A−2,12B−2,12C−2と、選択回路12A−3,12B−3,12C−3とから構成されている。
A系列の命令アドレスレジスタ12A−1には、パイプラインが作動状態になるとプログラム・ステータス・ワード(PSW)により指示されるアドレスがレジスタPSWIAR(Program Status Word Instruction Register)から入力され、パイプライン処理動作中は選択回路11から命令アドレスが入力される。
【0043】
B系列の命令アドレスレジスタ12B−1には、例えば、A系列の命令列中に分岐命令J1が存在しその分岐命令J1の分岐成立時における分岐先アドレスの命令から連続する命令列中にさらに分岐命令J2が存在した場合に、その分岐命令J2のアドレスが、選択回路11から入力される。
C系列の命令アドレスレジスタ12C−1は、予備のためのもので、オペランドアドレス生成回路21により生成されたアドレスについて命令フェッチを行なう場合にそなえて、通常、空き(未使用)状態になっている。
【0044】
また、加算器12A−2,12B−2,12C−2は、それぞれ、選択回路12aおよび選択回路13によってフィードバックされたアドレスに、読出命令長(例えば8バイト)を加算して、各系列の次の命令フェッチのための新たな命令アドレスを生成するものである。
さらに、選択回路12A−3,12B−3,12C−3は、それぞれ、命令アドレスレジスタ12A−1,12B−1,12C−1に保持されているアドレスと、加算器12A−2,12B−2,12C−2により生成されたアドレスとのいずれか一方を選択して選択回路12aへ出力するものである。
【0045】
一方、選択回路13は、命令アドレス生成回路12により生成された命令アドレスと、オペランドアドレス生成回路21により生成された分岐先アドレスOP EAGと、分岐先アドレス保持回路20からの分岐先アドレスTIAとのいずれか一つを選択して、命令フェッチパイプライン用キャッシュメモリ14,選択回路11および選択回路15へ出力するものである。
【0046】
この選択回路13により命令アドレス生成回路12からの命令アドレスがキャッシュメモリ14へ送出されることで、命令フェッチが実行される。また、選択回路13により命令アドレス生成回路12からの命令アドレスが選択回路11を経由して命令アドレス生成回路12にフィードバックされることで、命令フェッチのためのアドレスが次々生成されることになる。
【0047】
命令フェッチパイプライン用キャッシュメモリ14は、命令フェッチパイプラインで索引されるもので、図示しない主記憶装置に接続されている。このキャッシュメモリ14に選択回路13からの命令アドレスが入力されると、その命令アドレスに対応する命令語が検索されて出力される。その命令アドレスに対応する命令語を検索できなかった場合(ヒットしなかった場合つまりミスヒットの場合)には、その命令アドレスに対応する命令語が主記憶装置から読み出される。
【0048】
選択回路15は、選択回路13からの命令アドレスと、オペランドアドレス生成回路21により生成された分岐先アドレスOP EAGとのいずれか一方を選択してブランチ・ヒストリ用アドレスレジスタ16へ出力するものである。選択回路13からの命令アドレスが分岐命令についてのものである場合には、選択回路15により選択回路13からの命令アドレスが選択され、その命令アドレスがアドレスレジスタ16に格納される一方、オペランドアドレス生成回路21からの分岐先アドレスOP EAGがさらに分岐命令についてのものである場合には、選択回路15によりオペランドアドレス生成回路21からの分岐先アドレスOP EAGが選択され、その分岐先アドレスOP EAGがアドレスレジスタ16に格納される。
【0049】
ブランチ・ヒストリ17は、分岐命令のアドレス(WIAR)の上位ビットと、その分岐命令の分岐成立時における分岐先命令のアドレス(WOAR,TIAR)と、分岐成立の可否(VALID)と、予測分岐先命令の読出を抑止するか否かの情報(GIDDY)とを管理するものである。
このようなブランチ・ヒストリ17は、命令アドレス保持部(IAR)17a,分岐先アドレス保持部(TIAR)17b,VALIDビット17cおよびGIDDYビット(命令読出抑止ビット)17dを有して構成され、アドレスレジスタ16に格納された分岐命令自身の命令アドレス(WIAR)の下位ビットを索引アドレスとして用いる。
【0050】
ここで、命令アドレス保持部17aおよび分岐先アドレス保持部17bには、それぞれ、分岐命令のアドレス(WIAR)の上位ビットとその分岐命令の分岐成立時における分岐先命令のアドレス(WOAR,TIAR)とが対で登録される。また、VALIDビット17cには、そのビット17cを付されたアドレス対についての分岐が成立した場合に“1”が設定・登録される。さらに、GIDDYビット17dには、そのビット17dを付されたアドレス対による予測分岐先命令の読出を抑止する場合に、“1”(オン状態)が、前述のごとくGIDDYビット設定回路23により設定・登録される。
【0051】
なお、図2では、ブランチ・ヒストリ17に登録される分岐命令のアドレスの上位ビットをIAR、ブランチ・ヒストリ17に登録されるWOARをTIARとして示している。また、このブランチ・ヒストリ17への各データの登録は、命令実行パイプラインのWサイクルで実行される。
そして、選択回路15からの命令アドレスがブランチ・ヒストリ17の索引アドレスとしてアドレスレジスタ16にセットされると、そのセットを受けてブランチ・ヒストリ17の検索が行なわれる。対応するアドレスに分岐先アドレスが登録されていれば(ヒット)、ブランチ・ヒストリ17は、その索引アドレスに登録されている、分岐命令アドレス(IAR)の上位ビット,分岐先アドレス(TIAR),VALIDビット,GIDDYビットを出力する。
【0052】
比較回路18は、ブランチ・ヒストリ17から上述のごとく出力された分岐命令アドレス(IAR)の上位ビットと、アドレスレジスタ16にセットされている分岐命令アドレスの上位ビットとを比較し、一致する場合に“1”を出力するものである。
また、ANDゲート19は、ブランチ・ヒストリ17から上述のごとく出力されたVALIDビットと比較回路18からの信号との論理積を出力するものである。従って、VALIDビットと比較回路18からの信号とがいずれも“1”の場合、つまり、比較回路18による比較結果が一致し且つ検索アドレスに登録されているアドレス対による分岐が成立している場合に、ブランチ・ヒストリ17の検索結果がヒットした旨を示すHIT信号(“1”)がANDゲート19から出力される。
【0053】
分岐先アドレス保持回路20は、図4に示すように、A系列(ID=00),B系列(ID=01),C系列(ID=10)の3つの命令列用の分岐先アドレスレジスタ20A,20B,20Cと、これらの分岐先アドレスレジスタ20A〜20Cからの分岐先アドレス(TIAR)およびブランチ・ヒストリ17からの分岐先アドレス(TIAR)のうちの一つを選択して選択回路13へ出力する選択回路20aとから構成されている。
【0054】
ところで、上述のごとくブランチ・ヒストリ17から出力された分岐先アドレス(TIAR)は、IBサイクルで直ちに命令フェッチに使用される場合と、分岐先アドレス保持回路20の分岐先アドレスレジスタ20A〜20Cのいずれかに保持されてから命令フェッチに使用される場合がある。なお、前者の場合、選択回路20aによりブランチ・ヒストリ17からの分岐先アドレスが選択され、その分岐先アドレスがブランチ・ヒストリ17から直接的に選択回路13へ送出される。
【0055】
本実施形態では、命令フェッチを3系列で行なっているが、これらの3系列のうちの1系列は、命令実行パイプラインで実行される命令をフェッチするために占有されている。また、ブランチ・ヒストリ17で検索結果の得られなかった分岐命令が命令実行パイプラインにおいて実行されオペランドアドレス生成回路21からの分岐先の命令フェッチが行なわれる場合にそなえて、1系列が空けておかれる。そのため、ブランチ・ヒストリ17からの検索結果(分岐先アドレス)に基づく分岐先命令読出は、3系列のうちの1系列のみで実行されるようになっている。
【0056】
従って、その分岐先命令読出用の1系列で、既に、ブランチ・ヒストリ17からの分岐先アドレスに基づく分岐先命令読出(ブランチ・ヒストリ17からのターゲットフェッチ)が行なわれている場合や、ブランチ・ヒストリ17からの命令フェッチ要求が出ているが先行する何らかの命令フェッチがキャッシュメモリ14でヒットしなかっ場合などの様々な要因により、ブランチ・ヒストリ17でヒットして分岐先アドレスが得られた場合でも、その分岐先アドレスをIBサイクルで直ちに命令読出に使用できないことがある。
【0057】
そこで、分岐先アドレス保持回路20の分岐先アドレスレジスタ20A〜20Cに、ブランチ・ヒストリ17から出力された分岐先アドレス(TIAR;検索結果)を、それぞれ、図6(a)〜図6(c)にて後述する回路により生成されるペンディング信号“IF REQ BRHIS PEND A/B/C”がオン状態(“1”)にセットされている間、その分岐先アドレスを削除することなく保持する。これにより、前述した要因の発生時には、その分岐先アドレスをIBサイクルで直ちに命令読出に使用することが抑止されるようになっている。
【0058】
このとき、分岐先アドレスの格納先のアドレスレジスタ20A〜20Cは、ブランチ・ヒストリ17でヒットした命令フェッチのIDに応じて決定される。つまり、分岐先アドレスは、ID=00の場合、アドレスレジスタ20Aに格納され、ID=01の場合、アドレスレジスタ20Bに格納され、ID=10の場合、アドレスレジスタ20Cに格納される。なお、分岐先アドレス保持回路20の詳細な動作等については、特開平7−152562号公報に開示されている。
【0059】
次に、図6(a)〜図6(c)により、前述したペンディング信号“IF REQ BRHIS PEND A/B/C”を生成する論理回路について説明する。なお、図6(a)〜図6(c)は、それぞれ、A系列,B系列,C系列のための回路を示している。A系列用の論理回路は、ANDゲート31A,34AとNANDゲート32A,33AとORゲート35Aとラッチ36Aとから構成され、B系列用の論理回路は、ANDゲート31B,34BとNANDゲート32B,33BとORゲート35Bとラッチ36Bとから構成され、C系列用の論理回路は、ANDゲート31C,34CとNANDゲート32C,33CとORゲート35Cとラッチ36Cとから構成されている。これらの回路は全て同一構成であるので、ここでは、図6(a)を参照しながら、A系列用の論理回路についてのみ説明する。
【0060】
ANDゲート31Aは、“+BRHIS TARGET FCH REQ IR”と“+IR ID EQ 00”との論理積を出力するものであり、NANDゲート32Aは、“+IF REQ BRHIS IR GO”と“+IF REQ VAL”との否定積を出力するものであり、NANDゲート33Aは、ANDゲート31Aからの出力とNANDゲート32Aからの出力と“−IR BRHIS GIDDY”との否定積を出力するものである。
【0061】
また、ANDゲート34Aは、“+IF REQ BRHIS PEND GO”と“+IF REQ VAL”との論理積を出力するものであり、ORゲート35Aは、ANDゲート34Aからの出力と“+CANCEL FCH”と“+RESET A”との論理和を出力するものである。
ラッチ36Aは、NAND33Aからの出力をセット端子SETに入力されるととともに、ORゲート35Aからの出力をリセット端子RSTに入力され、NAND33Aからの出力が“1”になった場合に“+IF REQ BRHIS PEND A”をセットする一方、ORゲート35Aからの出力が“1”になった場合に“+IF REQ BRHIS PEND A”をリセットするものである。
【0062】
上述した論理回路に入力される各信号を▲1▼〜▲8▼として以下に説明する。
▲1▼“+BRHIS TARGET FCH REQ IR”は、ブランチ・ヒストリ17からのターゲットフェッチのリクエストがIRサイクルに存在している場合に“1”(オン)となる信号である。
▲2▼“+IR ID EQ 00”は、IRサイクルのIDが“00”である、つまり、A系列が選択されている場合に“1”(オン)となる信号である。
【0063】
▲3▼“+IF REQ BRHIS IR GO”は、ブランチ・ヒストリ17の索引結果で命令フェッチリクエストを行なう場合に“1”(オン)となる信号である。
▲4▼“+IF REQ VAL”は、命令フェッチリクエストが有効である場合に“1”(オン)となる信号である。
【0064】
▲5▼“−IR BRHIS GIDDY”は、ブランチ・ヒストリ17で検索されて得られた分岐先アドレスのGIDDYビット17dがオフ状態(“0”)の場合に“1”(オン)となる信号である。
▲6▼“+IF REQ BRHIS PEND GO”は、図7(a)にて後述する回路により生成されるもので、ペンディング中のブランチ・ヒストリ17からのリクエストを実行する場合に“1”(オン)となる信号である。
【0065】
▲7▼“+CANCEL FCH”および▲8▼“+RESET A”は、共に命令フェッチをキャンセルする場合に“1”(オン)となる信号で、これらの信号▲7▼,▲8▼は、分岐先アドレスによる命令フェッチを直ちに行なえなかった要因が解消される以前に、その命令フェッチの系列が先行する分岐の確定によってキャンセルされた場合等に用いられる。
【0066】
図6(a)に示す論理回路により、(▲1▼AND▲2▼)AND(▲3▼NAND▲4▼)AND▲5▼が“1”になる場合に、“+IF REQ BRHIS PEND A”がセットされる。つまり、IRサイクルにA系列についてのブランチ・ヒストリ17からのターゲットフェッチのリクエストが存在し、ブランチ・ヒストリ17の検索結果による命令フェッチリクエストが有効ではなく、且つ、その検索結果のGIDDYビット17dがオフ(“0”)である場合に、“+IF REQ BRHIS PEND A”がラッチ36Aにセットされることになる。
【0067】
そして、(▲6▼AND▲4▼)OR▲7▼OR▲8▼が“1”になる場合に、“+IF REQ BRHIS PEND A”がリセットされる。つまり、ペンディング中のブランチ・ヒストリ17からのリクエストを実行することになった場合、もしくは、命令フェッチをキャンセルすることになった場合に、ラッチ36Aがリセットされて“+IF REQ BRHIS PEND A”がオフ(“0”)になる。
【0068】
さらに、図7(a)により、前述した信号▲6▼“IF REQ BRHIS PEND GO”を生成する論理回路について説明する。なお、図7(a)〜図7(c)は、それぞれA系列,B系列,C系列のための回路を示している。A系列用の論理回路は、ANDゲート37A,38AとORゲート39Aとから構成され、B系列用の論理回路は、ANDゲート37B,38BとORゲート39Bとから構成され、C系列用の論理回路は、ANDゲート37C,38CとORゲート39Cとから構成されている。これらの回路は全て同一構成であるので、ここでは、図7(a)を参照しながらA系列用の論理回路についてのみ説明する。
【0069】
ANDゲート37Aは、信号▲1▼“+BRHIS TARGET FCH REQ IR”と信号▲5▼“−IR BRHIS GIDDY”との論理積を出力するものであり、ANDゲート38Aは、“+IF REQ BRHIS PEND A”と信号▲9▼“+CURRENT ID A”との論理積を出力するものである。信号▲9▼“+CURRENT ID A”は、現命令フェッチでA系列が選択される場合に“1”(オン)となる信号である。
【0070】
また、ORゲート39は、ANDゲート37Aからの出力とANDゲート38Aからの出力との論理積を、信号▲6▼“IF REQ BRHIS PEND
GO”として出力するものである。
図7(a)に示す論理回路により、ブランチ・ヒストリ17からのターゲットフェッチのリクエストがIRサイクルに存在し且つそのリクエストのGIDDYビット17dがオフ(“0”)である場合、もしくは、“+IF REQ BRHIS PEND A”がオンで且つ現命令フェッチでは系列が選択されるようになった場合に、信号▲6▼“IF REQ BRHIS PEND GO”がセットされ、ペンディング中であったブランチ・ヒストリ17からの命令フェッチ要求が実行されるようになっている。
【0071】
なお、図6(b),図7(b)および図6(c),図7(c)にそれぞれ示すB系列用およびC系列用の論理回路も、図6(a),図7(a)に示したA系列用の論理回路と全く同様に構成されており上述と全く同様の動作を行なう。
ここで、本実施形態では、ブランチ・ヒストリ17の検索時に同時に読み出されたGIDDYビット17dの状態が、図6(a)〜図6(c)に示すNANDゲート33A〜33Cや図7(a)〜図7(c)に示すANDゲート37A〜37Cに、信号▲5▼“−IR BRHIS GIDDY”として入力されている。これにより、図1にて前述した命令読出抑止手段が実現されている。
【0072】
つまり、本実施形態では、信号▲5▼“−IR BRHIS GIDDY”がオフとなるため、図6(a)〜図6(c)に示す論理回路では“IF REQ BRHIS PEND A/B/C”のセットが抑止され、ブランチ・ヒストリ17からの分岐先アドレスを分岐先アドレス保持回路20の各分岐アドレスレジスタ20A〜20Cに保持することが抑止される。このとき、選択回路20aは選択動作を行なわず、ブランチ・ヒストリ17からの分岐先アドレスが選択回路13へ直接的に送出されることも抑止される。
【0073】
また、既にブランチ・ヒストリ17からのターゲットフェッチ要求が出ており各分岐アドレスレジスタ20A〜20Cに保持されている場合でも、GIDDYビット17dがオンであると信号▲5▼“−IR BRHIS GIDDY”がオフとなるため、図7(a)〜図7(c)に示す論理回路では信号▲6▼“IF REQ BRHIS PEND GO”のセット(つまりブランチ・ヒストリ17からの命令フェッチ要求を出すこと)が抑止される。
【0074】
従って、ブランチ・ヒストリ17からの命令フェッチ要求が抑止され、オペランドアドレスから生成されるアドレスでの命令フェッチ要求が実行されることになる。
なお、本実施形態の情報処理装置10には、ブランチ・ヒストリ17を検索して得られた分岐先アドレスのGIDDYビット17dがオン状態である場合、既に登録済のアドレス対(IAR&TIAR)をそのまま保持する手段がそなえられており、この保持手段により、ブランチ・ヒストリ17に、その分岐命令アドレスと新たな分岐先アドレスとを登録することが抑止されている。
【0075】
上述の構成により、本実施形態の情報処理装置10では、実行すべき命令が分岐命令である場合には、その分岐命令の実行に先立って、命令アドレス生成回路12やオペランドアドレス生成回路21や分岐先アドレス保持回路20からの命令アドレスは、選択回路13,15を介してブランチ・ヒストリ用アドレスレジスタ16に格納される。
【0076】
このアドレスレジスタ16に分岐命令アドレスが格納されると、前述した通り、ブランチ・ヒストリ17の検索が行なわれその分岐命令アドレスと対になる分岐先アドレスが登録されている場合(ヒットした場合)には、その分岐先アドレスに対応する命令が、予測分岐先命令として読み出され、元の分岐命令の実行が終了する前にIRサイクルで命令実行パイプラインに投入される。
【0077】
今、上述のごとく、分岐命令の実行にあたってブランチ・ヒストリ17に登録済のアドレス対(分岐命令アドレス&分岐先アドレス)にヒットしてその分岐先アドレスについて命令フェッチを行ない、読み出された命令を命令実行パイプラインに投入して実行したが、その時点でその分岐命令についての分岐先命令のアドレスが変更されていたものとする。
【0078】
このような場合、ブランチ・ヒストリ17から読み出された分岐先アドレスで命令フェッチを実行しても、その分岐先アドレスは誤りであるため、図9で前述した例と同様、Cサイクルで誤りが判明して予測分岐先命令の実行はキャンセルされた後、再度、正しい命令をキャッシュメモリ14(または主記憶装置)から読み出さなければならなくなる。
【0079】
本実施形態では、上述のような状況が発生した場合、その情報が、対応するアドレス対に付されたGIDDYビット17dをオン状態に設定することで、ブランチ・ヒストリ17に登録される。
そして、分岐命令の実行に先立ってブランチ・ヒストリ17を索引しヒットした場合、ヒットしたアドレス対に付されたGIDDYビットが読み出されてタグとして命令フェッチパイプラインに通知される。
【0080】
このとき、GIDDYビットがオン状態(“1”)であれば、図6(a)〜図6(c)および図7(a)〜図7(c)に示した論理回路で生成される信号によって、分岐先アドレスの命令をフェッチすることが抑止され、ブランチ・ヒストリ17を用いない通常の手順で、正しい分岐先命令についてのアドレスによる命令読出が実行される。つまり、オペランドアドレスから生成される正しい分岐先の命令アドレスで命令読出が実行される。従って、同一の分岐命令が出現する度にその分岐先命令のアドレスが変更されたとしても、無駄なく分岐命令を実行することができる。
【0081】
また、その際には、前述した保持手段により、ブランチ・ヒストリ17にその分岐命令のアドレスと新たな分岐先命令のアドレスとを登録することが抑止される。従って、GIDDYビットをオン状態からオフ状態に切り換えることで、再度、ブランチ・ヒストリ17を索引した時には、このブランチ・ヒストリ17にGIDDYビットをオン状態に設定した時点で登録した情報(アドレス対)を利用できるので、同一の分岐命令が出現する度にその分岐先命令のアドレスが変更されるような場合においても、ブランチ・ヒストリ17をより有効に活用することができる。
【0082】
次に、図9で前述したような命令列を本実施形態の情報処理装置10で実行する際の処理について、図8を参照しながら以下に説明する。
[1]最初にサブルーチンの分岐命令(命令4d)を実行して分岐が成立すると、その命令4dのアドレス(500CHEX 番地)と分岐先命令(命令3a)のアドレス(1008HEX 番地)と、VALIDビットとがブランチ・ヒストリ17に登録される。
【0083】
[2]続いて命令列を実行していき、再度、命令4dを実行し分岐が成立した時には、ブランチ・ヒストリ17を索引することにより、命令3aのアドレス(1008HEX 番地)が得られてブランチ・ヒストリ17からのターゲットフェッチが行なわれる。これによりロス・タイムを生じさせることなく命令3aを命令フェッチパイプラインに流すことができるはずである。
【0084】
しかし、実際には、2回目の命令4dに実行に伴う分岐先は命令3aから命令3bに変更されているため、Cサイクルに到達した時点で初めて命令3aは間違いであることが判明する。従って、ヒットにより読み出された分岐先アドレス(1008HEX 番地)は無効となり、命令3aの実行は途中でキャンセルされ、再度、正しい命令3bのアドレス(2008HEX 番地)で命令フェッチを実行しなおす。
【0085】
このとき、本実施形態では、GIDDYビット設定回路23により、命令4dについてのGIDDYビット17dがオン状態に設定されるとともに、今回の命令実行で得られたアドレス対〔分岐命令4dのアドレス(500CHEX 番地)と分岐先命令3bのアドレス(2008HEX 番地)との対〕が、ブランチ・ヒストリ17の分岐命令アドレス保持部17aおよび分岐先アドレス保持部17bに登録される。
【0086】
[3]この後、命令列を実行していき、再度、命令4dが出現した際には、ブランチ・ヒストリ17を索引しこのブランチ・ヒストリ17に登録されている命令4dについてのGIDDYビット17dを読み出すと、そのGIDDYビットがオン状態に設定されているので、ブランチ・ヒストリ17を索引して得られた分岐先アドレスで命令フェッチを実行することが抑止される。
【0087】
従って、命令実行パイプラインでは、Aサイクルでオペランドアドレス生成回路21により生成される、正しい分岐先命令(命令4c)の命令アドレス(300CHEX 番地)で命令フェッチを実行する。その際には、ブランチ・ヒストリ17の分岐命令アドレス保持部17aおよび分岐先アドレス保持部17bには、GIDDYビット17dをオン状態に設定した時点のアドレス対を保持したままとし、分岐命令4dのアドレス(500CHEX 番地)と分岐先命令4cのアドレス(300CHEX 番地)とを対にして登録することが抑止される。
【0088】
本実施形態の機能を取り扱っていない情報処理装置では、分岐命令の分岐先アドレスが変更される度に、ブランチ・ヒストリ17に新たな分岐命令アドレスと分岐先アドレスとの対を再登録し、その分岐命令が出現する度に、図9に示すごとく、キャンセル処理を行なって12τのロス・タイムが生じさせながら、正しい分岐先アドレスによる命令フェッチを行なっていた。
【0089】
これに対して、本実施形態の情報処理装置10では、同一の分岐命令が出現する度にその分岐先命令のアドレスが変更されるような場合、その分岐命令が2回目に出現した時点でGIDDYビットがオン状態に設定され、その分岐命令の出現回数が3回目以上になると、通常のオペランドアドレス生成回路21からのターゲットフェッチが実行され、ロス・タイムは4τで済むことになる。
【0090】
このように、本発明の一実施形態によれば、同一の分岐命令が出現する度にその分岐先命令のアドレスが変更されたとしても、無駄なく分岐命令を実行でき且つブランチ・ヒストリ17を有効に活用することができるので、分岐命令の処理が高速化され、つまりは情報処理装置10の性能を大幅に向上させることができる。
【0091】
なお、上述した実施形態では、3系統の命令列を処理できる構成の装置について説明したが、本発明はこれに限定されるものではない。
【0092】
【発明の効果】
以上詳述したように、本発明の情報処理装置(請求項1〜3)によれば、予測分岐先命令と実際の分岐先命令とが異なっているために、その予測分岐先命令を実行できず、再度、実際の分岐先命令を読み出す必要がある場合には、その旨がブランチ・ヒストリの命令読出抑止ビットに設定・登録されるので、同一の分岐命令が出現する度にその分岐先命令のアドレスが変更されたとしても、無駄なく分岐命令を実行でき、且つ、ブランチ・ヒストリを有効に活用することができ、分岐命令の処理が大幅に高速化され、引いては、情報処理性能を大幅に向上できるという効果がある。
【図面の簡単な説明】
【図1】本発明の原理ブロック図である。
【図2】本発明の一実施形態としての情報処理装置の構成を示すブロック図である。
【図3】本実施形態における命令アドレス生成回路の構成を示すブロック図である。
【図4】本実施形態における分岐先アドレス保持回路の構成を示すブロック図である。
【図5】本実施形態におけるGIDDYビット設定回路の構成を示す図である。
【図6】(a)〜(c)はいずれも本実施形態において予測分岐先命令の読出を抑止(ペンディング)するための信号を生成する論理回路を示す図である。
【図7】(a)〜(c)はいずれも本実施形態における抑止(ペンディング)中の予測分岐先命令の読出を実行させるための信号を生成する論理回路を示す図である。
【図8】本実施形態の情報処理装置によるパイプライン処理動作を説明するためのタイムチャートである。
【図9】同一分岐命令でありながら出現する度にその分岐先命令のアドレスが変更される命令列の例を示す図である。
【図10】図9に示す命令例について、ブランチ・ヒストリを用いて実行される一般的なパイプライン処理動作を説明するためのタイムチャートである。
【符号の説明】
1 ブランチ・ヒストリ
2 命令読出抑止ビット設定手段
10 情報処理装置(パイプライン・プロセッサ)
11,13,15 選択回路
12 命令アドレス生成回路
12A,12B,12C 命令アドレス生成部
12A−1,12B−1,12C−1 命令アドレスレジスタ
12A−2,12B−2,12C−2 加算器
12A−3,12B−3,12C−3 選択回路
12a 選択回路
14 命令フェッチパイプライン用キャッシュメモリ
16 ブランチ・ヒストリ用アドレスレジスタ
17 ブランチ・ヒストリ
17a 分岐命令アドレス保持部(WIAR,IAR)
17b 分岐先アドレス保持部(WOAR,TIAR)
17c VALIDビット
17d GIDDYビット(命令読出抑止ビット)
18 比較回路
19 ANDゲート
20 分岐先アドレス保持回路
20A,20B,20C 分岐先アドレスレジスタ
20a 選択回路
21 オペランドアドレス生成回路
22 命令実行パイプライン用キャッシュメモリ
23 GIDDYビット設定回路(命令読出抑止ビット設定手段)
31A〜31C,34A〜34C,37A〜37C,38A〜38C ANDゲート
32A〜32C,33A〜33C NANDゲート
35A〜35C,39A〜39C ORゲート
36A〜36C ラッチ

Claims (2)

  1. 分岐命令のアドレスと該分岐命令の分岐成立時における分岐先命令のアドレスとを対にして登録されるブランチ・ヒストリを有し、分岐命令の実行に先立ってその分岐命令のアドレスに基づき該ブランチ・ヒストリを索引し、当該分岐命令のアドレスと対になる分岐先命令のアドレスが該ブランチ・ヒストリに登録されている場合には、その分岐先命令のアドレスに対応する命令を予測分岐先命令として読み出し命令実行パイプラインに投入する、パイプライン処理方式の情報処理装置において、
    該ブランチ・ヒストリに登録された前記アドレス対毎に、当該アドレス対による予測分岐先命令の命令読出を抑止する場合にオン状態に設定される命令読出抑止ビットがそなえられるとともに、
    分岐命令の実行にあたり該ブランチ・ヒストリに既に登録済の前記アドレス対に従って予測分岐先命令を実行した際に、当該予測分岐先命令と実際の分岐先命令とが異なっている場合には当該予測分岐先命令の実行をキャンセルして前記実際の分岐先命令を再度読み出すべく、当該予測分岐先命令と前記実際の分岐先命令とを比較して生成された一の信号に基づいて、該ブランチ・ヒストリにおける当該アドレス対の該命令読出抑止ビットをオン状態に設定する命令読出抑止ビット設定手段と、
    分岐命令の実行にあたり該ブランチ・ヒストリを索引して得られた登録済の前記アドレス対の該命令読出抑止ビットがオン状態である場合、当該分岐命令のアドレスと新たな分岐先命令のアドレスとのアドレス対が該ブランチ・ヒストリに登録されるのを抑止することによって、既に登録済の当該アドレス対をそのまま保持する保持手段とがそなえられるとともに、
    該命令読出抑止ビット設定手段が該命令読出抑止ビットをオン状態に切り換える際には、該ブランチ・ヒストリに、該命令読出抑止ビット設定手段が該命令読出抑止ビットをオン状態に切り換える時点の前記実際の分岐先命令のアドレスが保持されることを特徴とする、情報処理装置。
  2. 分岐命令の実行にあたり該ブランチ・ヒストリを索引して得られた登録済の前記アドレス対の該命令読出抑止ビットがオン状態である場合、当該アドレス対による予測分岐先命令の読出を抑止する命令読出抑止手段がそなえられたことを特徴とする、請求項1記載の情報処理装置。
JP02425596A 1996-02-09 1996-02-09 情報処理装置 Expired - Fee Related JP3683968B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP02425596A JP3683968B2 (ja) 1996-02-09 1996-02-09 情報処理装置
US08/783,039 US5732254A (en) 1996-02-09 1997-01-14 Pipeline system branch history table storing branch instruction addresses and target addresses with inhibit bits
GB9701350A GB2310057B (en) 1996-02-09 1997-01-23 Information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP02425596A JP3683968B2 (ja) 1996-02-09 1996-02-09 情報処理装置

Publications (2)

Publication Number Publication Date
JPH09218786A JPH09218786A (ja) 1997-08-19
JP3683968B2 true JP3683968B2 (ja) 2005-08-17

Family

ID=12133145

Family Applications (1)

Application Number Title Priority Date Filing Date
JP02425596A Expired - Fee Related JP3683968B2 (ja) 1996-02-09 1996-02-09 情報処理装置

Country Status (3)

Country Link
US (1) US5732254A (ja)
JP (1) JP3683968B2 (ja)
GB (1) GB2310057B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008155834A1 (ja) 2007-06-20 2008-12-24 Fujitsu Limited 処理装置

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3798998B2 (ja) * 2002-06-28 2006-07-19 富士通株式会社 分岐予測装置および分岐予測方法
US7636837B2 (en) 2003-05-28 2009-12-22 Fujitsu Limited Apparatus and method for controlling instructions at time of failure of branch prediction
EP2169540A4 (en) * 2007-06-20 2010-09-15 Fujitsu Ltd PROCESSING DEVICE
US20110047357A1 (en) * 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
US9569613B2 (en) * 2014-12-23 2017-02-14 Intel Corporation Techniques for enforcing control flow integrity using binary translation
US9438412B2 (en) * 2014-12-23 2016-09-06 Palo Alto Research Center Incorporated Computer-implemented system and method for multi-party data function computing using discriminative dimensionality-reducing mappings
US9654483B1 (en) * 2014-12-23 2017-05-16 Amazon Technologies, Inc. Network communication rate limiter

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4334268A (en) * 1979-05-01 1982-06-08 Motorola, Inc. Microcomputer with branch on bit set/clear instructions
JPS5991551A (ja) * 1982-11-17 1984-05-26 Nec Corp 分岐先アドレス予測を行なう命令先取り装置
DE69130138T2 (de) * 1990-06-29 1999-05-06 Digital Equipment Corp Sprungvorhersageeinheit für hochleistungsfähigen Prozessor
AU665368B2 (en) * 1992-02-27 1996-01-04 Samsung Electronics Co., Ltd. CPU having pipelined instruction unit and effective address calculation unit with retained virtual address capability
JP2812613B2 (ja) * 1992-07-16 1998-10-22 富士通株式会社 命令実行処理装置
US5564118A (en) * 1992-11-12 1996-10-08 Digital Equipment Corporation Past-history filtered branch prediction
US5519841A (en) * 1992-11-12 1996-05-21 Digital Equipment Corporation Multi instruction register mapper
JP2801135B2 (ja) * 1993-11-26 1998-09-21 富士通株式会社 パイプラインプロセッサの命令読み出し方法及び命令読み出し装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008155834A1 (ja) 2007-06-20 2008-12-24 Fujitsu Limited 処理装置
EP2453350A2 (en) 2007-06-20 2012-05-16 Fujitsu Limited Processing device

Also Published As

Publication number Publication date
JPH09218786A (ja) 1997-08-19
US5732254A (en) 1998-03-24
GB2310057B (en) 2000-02-23
GB2310057A8 (en) 1997-10-01
GB2310057A (en) 1997-08-13
GB9701350D0 (en) 1997-03-12

Similar Documents

Publication Publication Date Title
JP6796468B2 (ja) 分岐予測器
US6438673B1 (en) Correlated address prediction
US9069715B2 (en) Reducing microprocessor performance loss due to translation table coherency in a multi-processor system
JP3020212B2 (ja) ディジタル・データ処理システム及び命令シーケンス処理方法
EP0227892A2 (en) Updates to branch history table in a pipeline processing system
JPH03147022A (ja) 分岐命令処理装置および処理方法
JPH11504458A (ja) スーパースカラマイクロプロセッサにおける分岐予測正確度向上のための装置および方法
KR20000062468A (ko) 다수의 예측 분기 명령을 통한 명령 페치의 정렬 명령캐시 제어
JPS6341093B2 (ja)
US10740105B2 (en) Processor subroutine cache
JP2009048633A (ja) 分岐先アドレス・キャッシュを備えたプロセッサおよびデータを処理する方法
JPH08249181A (ja) ブランチ予測式データ処理装置および動作方法
US11442727B2 (en) Controlling prediction functional blocks used by a branch predictor in a processor
US8473727B2 (en) History based pipelined branch prediction
JP3683968B2 (ja) 情報処理装置
JPH07152562A (ja) パイプラインプロセッサの命令読み出し方法及び命令読み出し装置
US20220365787A1 (en) Event handling in pipeline execute stages
US6851033B2 (en) Memory access prediction in a data processing apparatus
JP2004038323A (ja) 分岐予測装置および分岐予測方法
JP3335379B2 (ja) ブランチ・ヒストリーを持つ命令実行処理装置
US7234046B2 (en) Branch prediction using precedent instruction address of relative offset determined based on branch type and enabling skipping
US7836277B2 (en) Pre-tracing instructions for CGA coupled processor in inactive mode for execution upon switch to active mode and continuing pre-fetching cache miss instructions
TWI231450B (en) Processor including fallback branch prediction mechanism for far jump and far call instructions
US4212058A (en) Computer store mechanism
JPS5991551A (ja) 分岐先アドレス予測を行なう命令先取り装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040126

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040413

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20040420

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20040514

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050527

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: 20090603

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100603

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110603

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120603

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120603

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130603

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20140603

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees