JP2722523B2 - 命令先取り装置 - Google Patents

命令先取り装置

Info

Publication number
JP2722523B2
JP2722523B2 JP63234903A JP23490388A JP2722523B2 JP 2722523 B2 JP2722523 B2 JP 2722523B2 JP 63234903 A JP63234903 A JP 63234903A JP 23490388 A JP23490388 A JP 23490388A JP 2722523 B2 JP2722523 B2 JP 2722523B2
Authority
JP
Japan
Prior art keywords
instruction
address
page
branch
output
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 - Lifetime
Application number
JP63234903A
Other languages
English (en)
Other versions
JPH0283735A (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.)
NEC Corp
Original Assignee
Nippon Electric Co 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 Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP63234903A priority Critical patent/JP2722523B2/ja
Priority to US07/410,577 priority patent/US5168557A/en
Priority to FR8912407A priority patent/FR2636748B1/fr
Publication of JPH0283735A publication Critical patent/JPH0283735A/ja
Application granted granted Critical
Publication of JP2722523B2 publication Critical patent/JP2722523B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

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)
  • Memory System Of A Hierarchy Structure (AREA)

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明は、命令語を保持し、実アドレスでアクセスさ
れるキャッシュメモリを有する情報処理装置に関し、特
に分岐命令の実アドレスを指定する情報とその分岐先実
アドレスとを対にして複数対記憶する分岐ヒストリテー
ブルを用いて分岐予測を行う命令先取り装置に関する。
[従来の技術] 従来、分岐ヒストリテーブルを用いて分岐予測を行な
うこの種の命令先取り装置としては、特開昭59−91550
号公報に記載されているのが知られている。この公報で
は、実アドレスで命令をチェックするに際して、先取り
すべきアドレスで、命令記憶回路から命令を取出すと同
時に分岐ヒストリテーブルを索引し、もし分岐ヒストリ
テーブルにヒットすれば分岐ヒストリテーブルより供給
される予測された分岐先アドレスを、次に先取りすべき
アドレスとし、もし分岐ヒストリテーブルにヒットしな
ければ、先取りアドレスに命令記憶回路から取り出され
た読出し幅を加算したアドレスを次に先取りすべきアド
レスとする。
[発明が解決しようとする課題] 先取りすべきアドレスが、分岐ヒストリテーブルにヒ
ットしなくて、命令記憶回路の読出し幅を、先取りすべ
きアドレスに加算した結果、先取りすべきアドレスのペ
ージ番号が変更された場合(以下ページ越えと記す)、
先取りすべきアドレスを実アドレスで保持しているた
め、命令の先取りを続けることはできなくなる。この場
合、加算前に先取りされた命令の論理アドレスのページ
番号に“1"を加えたページ番号をもつページの論理アド
レスに対応する実アドレスのページ番号で先取りを行わ
なければならない。上述した、特開昭59−91550号公報
では、この操作を、ページ越えの直前に先取りされた命
令(以下、ページ最後の命令と記す)のオペランドに関
するアドレス変換を終了した後に行っていた。従って、
ページ越えが発生すると、ページ最後の命令のオペラン
ドのアドレス変換の終了を待ち、その後、ページ最後の
命令の論理アドレスに“7"を加算し、加算結果をアドレ
ス変換し、得られた実アドレス(以下、次ページアドレ
スと記す)で命令の先取りを再開するため、命令の先取
りが長時間停止し、性能低下を招くという欠点がある。
[課題を解決するための手段] 本発明の命令先取り装置の1つは分岐ヒストリテーブ
ルに、ページ最後の命令の実アドレスと、そのページ最
後の命令の次の命令の実アドレスとを対にして登録し、
ページ越えが発生した時、登録された情報に基づいて命
令の先取りを続け、同時に、登録されていた情報の確認
を行うために、次ページのアドレス変換を指示する制御
回路を有している。
本発明の命令先取り装置の他の1つは、分岐ヒストリ
テーブルに、ページ最後の命令の実アドレスと、そのペ
ージ最後の命令の次の命令の実アドレスとを対にして登
録し、ページ越えが発生した時、登録された情報に基づ
いて命令の先取りを続け、かつ、ページ最後の命令がア
ドレス変換を行わない命令の時は、その命令の動作と同
時に、次ページのアドレス変換を指示し、アドレス変換
を行う命令の時は、その命令の次に、次ページのアドレ
ス変換を指示する制御回路を有している。
[実施例] 次に本発明について、図面を参照して説明する。
第1図は本発明の第1の実施例による命令先取り装置
の構成を示すブロック図である。
第1の実施例による命令先取り装置は、命令解読回路
403、オペランドアドレス生成回路404、命令アドレス生
成回路431、選択回路435、アドレス変換回路432、オペ
ランド記憶回路を有するオペランド読出し回路406、命
令実行回路407、命令記憶回路408、命令バッファ409、
分岐ヒストリテーブル410、命令アドレスレジスタ411、
命令アドレス加算回路412、分岐情報バッファ413、命令
整列回路414、分岐情報切換回路415、分岐情報レジスタ
416,417,418、および419、予測確認回路433、アドレス
生成回路421、選択回路422、レジスタ423、命令先取り
制御回路424、および分岐ヒストリテーブル更新指示フ
リップフロップ425とから構成される。
命令記憶回路408、およびオペランド読出し回路406内
のオペランド記憶回路は、ともに主記憶装置(図示せ
ず)そのものであってもよく、あるいは主記憶装置の一
部の写しである命令キャッシュメモリ、オペランドキャ
ッシュメモリであってもよい。キャッシュメモリの詳細
は、特開昭56−87282号公報を参照できる。又、本実施
例における命令記憶回路408と、オペランド読出回路406
内の記憶回路が共用となっていても、本発明は適用でき
る。
分岐ヒストリテーブル410は、分岐命令のアドレスを
指定する情報と、該分岐命令の実行の予測としての分岐
成否フラグと、分岐先アドレスとを、第2図(a)に示
すように対にして記憶している。
命令アドレスレジスタ411は、命令読出しのリクエス
トアドレスを保持して、命令の読出し動作を実行する。
さらに、命令アドレスレジスタ411は、信号線101を介し
て、分岐ヒストリテーブル410、および命令アドレス加
算回路412に接続されている。命令アドレスレジスタ411
の内容で分岐ヒストリテーブル410を索引し、読出され
るべき命令のアドレスがそれに登録されているか否かを
示すBHTビット信号が信号線106に出力される。登録され
ていれば、対応する分岐先アドレスが信号線105に読出
される。登録されていなければ、命令アドレス加算回路
412により、後続の命令語の命令先取りのためのアドレ
スが生成され、信号線107に出力される。
分岐ヒストリテーブル410には、前述の分岐情報の他
に、ページ最後の命令アドレスと、次ページアドレスと
を対にしてページ越え情報として登録される。登録され
たページ越え情報は、分岐情報と同じように読出され、
同じように命令アドレスレジスタ411にセットされる。
命令アドレス加算回路412は、後続の命令語のアドレ
スを計算する際にページ越えが発生すると、信号線118
にページ越え信号を出力する。従って、信号線102に命
令記憶回路408から読出された8バイトの命令語がペー
ジ最後の命令語であれば、同時に信号線118にページ越
え信号が出力される。
命令バッファ409は、命令記憶回路408から読出された
8バイトの先取り命令語と、信号線118のページ越え信
号とを対にして蓄え、命令の供給における待行列を形成
する。
命令整列回路414は、命令バッファ409が空であれば信
号線102と118の情報を、又、命令バッファ409が空でな
ければ、命令バッファ409の情報を選択し、命令語を抽
出して信号線104を介して、命令解読回路403に命令を供
給すると同時に、ページ越え信号を信号線140に出力す
る回路である。
分岐情報バッファ413は、命令語バッファ409に格納さ
れる命令語に対して用意されており、その命令語中に、
分岐成功と予測された分岐命令が存在するか、あるいは
その命令語がページ最後の命令語と予測されれば、第2
図(a)に示す分岐情報を保持する回路であり、分岐命
令あるいはページ最後の命令語のアドレスは、信号線10
1を介して、また、分岐情報としての分岐先アドレス又
は次ページアドレス、およびVビットは、分岐ヒストリ
テーブル410から信号線105を介して、それぞれセットさ
れる。
分岐情報切換回路415は、命令バッファ409が空の時、
信号線101および105を介して与えられる分岐情報を、そ
うでない時は、分岐情報バッファ413を介して与えられ
る分岐情報をそれぞれ出力する。
分岐情報レジスタ416は、分岐情報切換回路415の出力
と、命令整列回路414の出力するページ越え信号と第2
図(b)に示す形式で、命令解読ステージに対応して保
持する。
分岐情報レジスタ417,418は、第2図(c)に示す形
式で、分岐情報と、命令解読回路403の出力する命令語
長とを、それぞれオペアンプアドレス生成、アドレス変
換の各ステージに対応して保持する。
分岐情報レジスタ419は、その分岐先アドレス、又は
次ページアドレスを、該分岐命令の実行によって生成さ
れる実際の分岐先アドレス、又はページ越えによって得
られる次ページ論理アドレスから生成された実際の次ペ
ージアドレスに置換えて保持するレジスタである。
選択回路435は、信号線131を介して与えられるページ
越え信号が“1"であれば、信号線130からの命令アドレ
ス生成回路431の出力を、“0"であれば信号線129からの
オペランドアドレス生成回路404の出力を選択する。
予測確認回路433は、分岐命令の実行にあたっては、
生成される実際の分岐命令の実行の状態と、分岐情報レ
ジスタ418に保持される該分岐命令の予測情報の一致を
とり、ページ越えにあたっては、次ページ論理アドレス
より得られる次ページの実際のアドレス(次ページアド
レス)と、分岐情報レジスタ418に保持される該ページ
越えの予測情報の一致をとる回路である。
アドレス生成回路421は、分岐情報レジスタ419に保持
される分岐命令のアドレスと、該分岐命令自身の命令語
長とを加算し、分岐をしない側の命令の命令アドレスを
生成する。
選択回路422は、分岐命令の分岐成否信号線110の状態
に応答して、該信号線の状態が“分岐する”を示す時、
線115を介して与えられる分岐情報レジスタ419の保持す
る分岐先アドレスを選択し、線110の状態が“分岐しな
い”を示す時、線116を介して与えられるアドレス生成
回路421の出力を選択し、選択された信号を信号線113を
介して、レジスタ423に供給する。
分岐成否信号線110は、命令実行回路407が分岐命令を
処理していない時は、常に“分岐をする”相当の状態を
示す。信号分岐情報レジスタ419にページ越え情報が保
持されているときは、選択回路422は、信号線115を介し
て与えられる実際の次ページアドレスを選択し、信号線
113を介してレジスタ423に供給する。
レジスタ423は、分岐命令、又はページ越えの予測が
失敗したとき、分岐ヒストリテーブル410を更新するた
めのものであり、さらに信号線117を介して命令アドレ
スレジスタ411に命令先取りのための新たなアドレスを
供給する。
命令先取り制御回路424は、信号線106を介して分岐ヒ
ストリテーブル410から与えられるBHTヒット信号および
予測確認回路433から信号線112を介して与えられる予測
失敗信号に基づいて、命令アドレスレジスタ411の入力
と分岐ヒストリテーブル410の更新を制御する回路であ
る。
分岐ヒストリテーブル410の詳細については、例え
ば、特開昭59−91550号公報を参照されたい。
第3図を参照すると、命令アドレス加算回路412は、
信号線101を介して与えられる命令アドレスレジスタ411
の保持する命令先取りアドレスに命令記憶回路408から
の命令語の読出し幅である“8"を加算する回路である。
加算結果は、下位3ビットが切り捨てられ、常に8の倍
数として、信号線107に出力される。又、加算の際に、
下位12ビット以下より下位13ビットへのキャリーが生じ
ると、命令先取りアドレスがページサイズである4kバイ
トを越えたことを意味するページ越え信号を、信号線11
8へ出力する。
第4図を参照すると、命令アドレス生成回路431は、
レジスタ1101,1102、およびアドレス加算器1103,1104と
から構成される。レジスタ1101は、命令解読回路403よ
り、信号線139を介して与えられる命令語長を保持し、
レジスタ1102は、命令の論理アドレスを保持する。それ
ぞれオペランドアドレス生成ステージに対応したレジス
タである。なお、本実施例では命令語長は2,4,6,8バイ
トである。レジスタ1101,1102の出力は、アドレス加算
器1103で加算され、次命令の論理アドレスを生成する。
アドレス加算器1103で生成された次命令アドレスは、
レジスタ1102へ供給され、1マシンサイクル後には、次
の命令の命令アドレスとなる。アドレス加算器1103の出
力は、さらにアドレス加算器1104へ供給され、ここで
“7"が加算され、その加算結果の下位3ビットは切捨て
られて、信号線130へ出力される。従って、レジスタ110
2に、ページ最後の命令アドレス、詳しく述べれば、ペ
ージの最後の8バイト内のアドレス(ページサイズが4k
バイトなので、4096n−8以上かつ4096n未満のアドレ
ス)が命令アドレスとして保持されると、レジスタ1101
の命令語長は最大でも8バイトなので、信号線130には
次ページの論理アドレス(この場合、4096n)が出力さ
れる。
第5図を参照すると、命令整列回路414は、それぞれ
8バイトの命令語を保持る命令語レジスタ1201,1202、
整列すべき命令のアドレスの下位3ビットのみを保持す
るワード内アドレスレジスタ1203、ページ越え信号を保
持するページ越えフリップフロップ1204,1205、フリッ
プフロップ1206,1207、ワード内アドレスレジスタ1203
の指示により命令語レジスタ1201,1202より命令を抽出
する命令整列器1208、命令整列器1208の出力する命令よ
り、その命令語長を解読する命令語長デコーダ1209、ワ
ード内アドレスレジスタ1203の出力と、命令語長デコー
ダ1209の出力とを加算し、次命令のワード内アドレスを
算出する加算器1210、オアゲート1211,1212、アンドゲ
ート1213,1214,1215,1216とから構成される。
命令整列回路414は、第5図に示す他に、分岐予測が
働いたときの制御回路も含まれるが、本発明には直接関
係しないので説明の都合上、省略してある。加算器1210
は、加算結果が“8"に等しいか“8"以上であるかを信号
線2001および2002に出力する。
命令語レジスタ1201,1202は、通常連続した16バイト
の命令語を保持し、その内容はレジスタ1202から1201へ
と8バイトづつ左にシフトされつつセットされる。
命令語レジスタ1201は、その保持する命令語が命令整
列器1208で全て抽出され、未抽出の命令語が1バイトも
ない空の時にセットされ、そのセットは、命令バッファ
409が空であれば命令記憶回路408の出力である信号線10
2から、そうでない時は、命令語レジスタ1202からなさ
れる。又、命令語レジスタ1202は、命令バッファ409が
空のとき命令記憶回路408の出力である信号線102から、
そうでないときは、命令バッファ409の出力である信号
線103からセットされる。
ページ越えフリップフロップ1204,1205は、それぞれ
命令語レジスタ1201,1202に対応しており、対応する命
令語レジスタの保持する命令語がページの最後の8バイ
トの命令語である時、“1"を出力して表示する。ページ
越えフリップフロップ1204は、対応する命令語レジスタ
1201が信号線102からセットされる時は、命令アドレス
加算回路412より信号線118を介して与えられるページ越
え信号をセットし、命令語レジスタ1201が命令語レジス
タ1202よりセットされる時は、ページ越えフリップフロ
ップ1205よりセットされる。同様に、ページ越えフリッ
プフロップ1205は、対応する命令語レジスタ1202が信号
線102からセットされる時は信号線118からセットされ、
命令語レジスタ1202が信号線103からセットされる時
は、命令バッファ409の出力であるページ越え信号線123
からセットされる。
命令語レジスタ1201,1202、およびページ越えフリッ
プフロップ1204,1205は、アンド回路1216の出力が“1"
となるとセットされる。
ワード内アドレスレジスタ1203は、オアゲート1212の
NOR出力が“1"となるとセットされる。
命令整列回路414より抽出され整列された命令は、信
号線104に出力されるが、信号線104には、整列された命
令の有効表示としてE信号も含まれる。整列された命令
語は、命令整列器1208より出力され、E信号は、オアゲ
ート1212のNOR出力より与えられる。又、命令整列回路4
14は、ページ越え信号を信号線140に出力する。信号線1
40の該ページ越え信号は、命令整列回路414がページ最
後の命令を信号線104に出力し、供給した直後の1マシ
ンサイクルのみ出力される。
第6図及び第7図は、第5図に示す命令整列回路414
の動作を説明するためのタイムチャートである。以下、
第6図、7図のタイムチャートと、第5図のブロック図
とを参照しつつ、命令整列回路414の動作について詳細
に説明する。
第6図は、ページ最後の8バイトの命令語ワードIが
命令語レジスタ1201に、ワードIに後続する次のページ
の最初の8バイトの命令語ワードIIが命令語レジスタ12
02にセットされ、かつ、ワードIとワードIIに命令が跨
っていない場合の命令整列回路414の動作を示すタイム
チャートである。
マシンサイクル1で命令語レジスタ1201と1202にそれ
ぞれワードIとIIがセットされ、ワードIがページ最後
の8バイトの命令語であるため、対応するページ越えフ
リップフロップ1204には“1"がセットされ、ワードIIは
ページ最後でないため、対応するページ越えフリップフ
ロップ1205には“0"がセットされる。又、ワード内アド
レスレジスタ1203には、これから抽出、整列すべき命令
Zのワード内アドレスが保持されている。
まず、ワード内アドレスレジスタ1203の指示により、
命令Zが命令整列器1208によって抽出され、信号線104
に出力される。それと同時に、該命令Zの命令語長が命
令語デコーダ1209で解読され、該命令Zのワード内アド
レスと、命令語長が加算器1210で加算され、次命令Aの
ワード内アドレスが求められる。同時に、加算結果が
“8"に等しいため、信号線2001に“1"が出力される。ペ
ージ越えフリップフロップ1204を信号線2001により、ア
ンドゲート1214の出力は“1"に、オアゲート1212のOR出
力の信号線140は“0"、NOR出力は“1"、同じくオアゲー
ト1211の出力は“1"となり、アンドゲート1216の出力も
“1"となる。従って、信号線104には命令ZとE信号が
出力され、信号線140のページ越え信号には“0"が出力
される。
次のマシンサイクル2では、マシンサイクル1でのア
ンドゲート1216の出力が“1"であったため、命令語レジ
スタ1201では命令語レジスタ1202に保持されていたワー
ドIIセットされ、ページ越えフリップフロップ1204に
は、ページ越えフリップフロップ1205の保持していた
“0"がセットされる。同時に、ワード内アドレスレジス
タ1203には、マシンサイクル1でオアゲート1212のNOR
出力が“1"であったため、加算器1210の出力する命令A
のワード内アドレス“0"がセットされる。又、フリップ
フロップ1207には、マシンサイクル1でアンドゲート12
14の出力が“1"であったため、“1"がセットされる。ワ
ード内アドレスレジスタ1203と命令整列器1208により、
命令Aが整列され、命令語長デコーダ1209と加算器1210
により、次命令Bのワード内アドレスが計算される。フ
リップフロップ1207が“1"であるため、オアゲート1212
のOR出力信号線140のページ越え信号は“1"となり、NOR
出力は“0"となり、信号線104E信号は“0"となる。又、
アンドゲート1216の出力も“0"となる。
次のマシンサイクル3になると、マシンサイクル2で
オアゲート1212のNOR出力と、アンドゲート1216の出力
がともに“0"であったため、命令語レジスタ1201,120
2、ページ越えフリップフロップ1204,1205、ワード内ア
ドレスレジスタ1203、すべてマシンサイクル2の内容が
保持される。マシンサイクル2の時と同様に、命令Aが
整列され信号線104に出力される。フリップフロップ120
7は“0"にセットされ、オアゲート1212のOR出力は“0"
にNOR出力は“1"になり、アンドゲート1216の出力は
“0"になる。従って、信号線104のE信号は“1"にな
り、命令Aが供給される。
第7図は、第6図と同様、ページ最後の8バイトの命
令語ワードIと、ワードIに後続する次のページの最初
の8バイトの命令語が、それぞれ前記命令語レジスタ12
01,1202にセットされ、かつ、ワードIとワードIIに命
令が跨っている場合の動作を示すタイムチャートであ
る。
マシンサイクル1で、ワード内アドレスレジスタ1203
に、ワードI,IIに跨った命令Aのワード内アドレスがセ
ットされ、命令語レジスタ1201にページ最後のワードI
が保持されているため、対応するページ越えフリップフ
ロップ1204には“1"がセットされている。ワード内アド
レスレジスタ1203と命令整列器1208によって命令Aが整
列され、命令語長デコーダ1209と加算器1210によって、
命令Aの次命令Bのワード内アドレスが求められると同
時に、加算結果が“8"を越えるために、信号線2002に
“1"が出力される。フリップフロップ1204と信号線2002
により、オアゲート1211の出力は“1"に、アンドゲート
1213の出力も“1"になり、フリップフロップ1206の否定
出力は“1"であることから、アンドゲート1215の出力も
“1"に、オアゲート1212のOR出力は“1"、NOR出力は
“0"になり、アンドゲート1216の出力も“0"となる。従
って、信号線104のE信号は“0"となり、信号線140のペ
ージ越え信号は“1"となる。
次のマシンサイクル2では、前のマシンサイクル1で
オアゲート1212のNOR出力およびアンドゲート1216の出
力が“0"であったため、命令語レジスタ1201,1202、ペ
ージ越えフリップフロップ1204,1205、およびワード内
アドレスレジスタ1203は、すべてマシンサイクル1のと
きの内容を保持する。従って、マシンサイクル1と同
様、命令Aが抽出整列され、信号線104に出力され、加
算器1210は命令Aの次命令の命令Bのワード内アドレス
を算出すると同時に信号線2002に“1"を出力する。マシ
ンサイクル1と同様、オアゲート1211とアンドゲート12
13の出力はともに“1"となるが、フリップフロップ1206
が“1"にセットされているため、アンドゲート1215の出
力は“1"とならず、オアゲート1213のOR出力は“0"に、
NOR出力は“1"に、そしてアンドゲート1216の出力も
“1"になる。信号線104のE信号は“1"となり、信号線1
40のページ越え信号は“0"となって命令Aが供給され
る。
次のマシンサイクル3では、ワード内アドレスレジス
タ1203によって、命令Bが供給される。
以上、第6図、第7図の動作をまとめると、命令整列
回路414は、ページ最後のワードを受取ると、ページ最
後のワードにあって、次ページの最初のワードに跨って
いない最後の命令を供給した後、命令の供給を1マシン
サイクルとめて、ページ越えを出力した後、後続の命令
の供給を再開する。
第8図を参照すると、予測確認回路433は、レジスタ1
401,1402、フリップフロップ1403,1404,1405、アドレス
比較器1406、アンドゲート1407,1408、排他的論理和を
求めるイクスクルーシブオアゲート1409、およびオアゲ
ート1410,1411とから構成される。
レジスタ1401には、アドレス変換回路432で変換され
た実際の分岐先アドレス、又は次ページの実アドレス
が、信号線109を介してセットされる。レジスタ1402に
は、分岐情報レジスタ418に保持される予測された分岐
先アドレス、又は次ページの最初のアドレスが、信号線
108を介してセットされる。
フリップフロップ1403には、分岐情報レジスタ418に
保持されるページ越えビットが、信号線134を介してセ
ットされる。フリップフロップ1405には、分岐情報レジ
スタ418の保持するVビットがセットされる。
アドレス比較器1406は、レジスタ1401と1402の内容の
一致をチェックし、不一致の場合“1"を出力する。従っ
て、フリップフロップ1404には、予測がなされたにもか
かわらず、予測アドレスと実際のアドレスが不一致の
時、“1"がセットされる。オアゲート1410とアンドゲー
ト1408によって、ページ越え、又は分岐する分岐命令に
ついて予測されたが、予測されたアドレスが不一致の場
合が検出される。イクスクルーシブオアゲート1409によ
って、ページ越えや、分岐する分岐命令でないのに予測
があった場合と、逆にページ越えや分岐する分岐命令で
あるのに、予測がなかった場合が検出される。アンドゲ
ート1408の出力とイクスクルーシブオアゲート1409の出
力は、合わせて、オアゲート1411より、予測失敗信号と
して、信号線112に出力される。
第9図を参照すると、命令先取り制御回路424は、フ
リップフロップ1501、バッファゲート1502,1503,1504、
およびアンドゲート1505から構成される。
フリップフロップ1501は、信号線112を介して与えら
れる予測失敗信号を1マシンサイクル保持するためのフ
リップフロップである。この命令先取り制御回路424の
出力は、アドレスレジスタ411の前段にあるセレクタの
選択指示信号となる。信号線106を介して与えられるBHT
ヒット信号“1"であれば、信号線105に出力される予測
されたアドレスを選択するよう指示し、信号線112の予
測失敗信号が“1"であれば、まず信号線114に出力され
る分岐命令、又はページ最後の命令のアドレスを選択す
るよう指示し、このアドレスで分岐ヒストリテーブル41
0の更新を行い、1マシンサイクル後には、レジスタ423
の出力である信号線117を選択するよう指示し、上記の
いづれでもない時は、信号線107に出力される+8され
たアドレスを選択するよう指示する。
次に、第10図に示すような命令群を実行した場合の動
作について、第1図および第11図のタイムチャートを参
照しつつ説明する。
第10図は、論理アドレス空間における命令の配列の一
例を示す図であって、ページ境界を跨いで命令Aがあ
り、その前後に命令ZとBがある。命令Aの前半のある
8バイトワードの実アドレスは4096n−8であり、後半
のある8バイトワードの実アドレスは4096mとする。
又、実アドレス4096mに対応する論理アドレスは<A
>′、命令Zの論理アドレスを<Z>する。
第11図を参照すると、まずマシンサイクル0におい
て、命令アドレスレジスタ411に、ページ最後の8バイ
トのアドレス4096n−8がセットされ、このアドレスに
よって分岐ヒストリテーブル410が索引され、ページ越
え予測情報が取出され、信号線106に、BHTビット信号が
出力される。同時に、命令アドレス加算回路412によっ
てアドレス4096n−8に8が加えられ、信号線118にペー
ジ越え信号が出力される。
次のマシンサイクル1では、分岐ヒストリテーブル41
0より取出された予測された次ページアドレス4096mが命
令アドレスレジスタ411にセットされ、命令記憶回路40
8、命令バッファ409、命令整列回路414によって命令Z
の供給(IC)が行われる。
マシンサイクル2では、命令Aの供給は抑止され、か
わりにページ越え信号が信号線140に出力され、命令Z
の解読(ID)が行われる。
マシンサイクル3では、命令Zのオペランドアドレス
生成(OA)が行われ、命令Aは命令整列回路414より供
給される。ページ越え(PO)に関する情報として、ペー
ジ越え信号と、ページ最後の8バイトのアドレス4096n
−8と、予測されたページアドレス4096mが、分岐情報
レジスタ416に保持される。
次のマシンサイクル4では、命令Zのオペランドアド
レスのアドレス変換((AT)が行われ、命令アドレス生
成回路431(IA)では、命令Zの論理アドレス<Z>に
命令Zの命令語長が加算され、命令Aの論理アドレス<
A>が求められ、さらに、“7"が加算され下位3ビット
が切捨てられて、次ページの論理アドレス<A>′が求
められ、信号線130に出力される。又、後続の命令Aの
解読(ID)が行われる。
マシンサイクル5では、命令Zのオペランドの読出し
(OC)が行われ、ページ越えについては、次ページ論理
アドレス<A>′が、アドレス変換回路432で変換さ
れ、実アドレスa′が信号線109に出力される。又、命
令Aのオペランドアドレス生成(OA)が行われる。
次のマシンサイクル6で、予測の確認(PC)が予測確
認回路433で行われ、実際の次ページアドレスa′と、
予測された次ページアドレス4096mとが比較される。一
致していれば、命令Aおよびその後続の命令は、そのま
ま実行される。もし、不一致であれば、予測失敗信号
が、信号線112に出力され、次のマシンサイクル7で命
令A以降の命令はキャンセルされ、無効化され分岐ヒス
トリテーブル410がa′を予測するよう更新(HU)され
た後、アドレスa′で命令語が取出され、正しい命令A
以降の供給が再開される。
ページ最後の命令の次に、ページ越え処理、そしてそ
の次にページ越え予測に従った命令が実行されるので、
ページ越え処理で予測の確認を行い、誤っていた時は、
ページ越え処理の直後以降の命令をキャンセルすること
になり、有効な命令をキャンセルしたり、キャンセルす
べき命令がキャンセルされないというようなことはな
く、常に必要最小限の命令のみがキャンセルされる。
さてこの場合、ページ越え予測が的中して成功すれ
ば、ページ越えの処理に要する時間は1マシンサイクル
であり、予測情報が分岐ヒストリテーブルに登録されて
いない、あるいは登録されていても誤っていた場合に
は、6マシンサイクルを要する。通常の的中率は約90%
であることが経験的に知られているので、ページ越え処
理に要する時間は、平均的に、 1×0.9+6×0.1=1.5 となり、1.5マシンサイクルである。
尚、本発明を適用しない特開昭59−91550号公報で
は、ページ越え処理に(IC),(ID),IA,ATの4マシン
サイクルを要しているので、本発明により2.5マシンサ
イクルの高速化を実現できる。
第12図は本発明の第2の実施例による命令先取り装置
の構成を示すブロック図である。
第2の実施例による命令先取り装置は、第1図に示さ
れた第1の実施例による命令先取り装置の命令解読回路
403、命令整列回路414が、それぞれ命令解読回路438、
命令整列回路437に変形され、さらにページ越え制御回
路436が付加されている点を除いて、第1図に示された
ものと同様の構成を有する。以下、第1の実施例と同一
の機能を有するものは同一参照符号を付し、それらの説
明を省略する。
命令整列回路437は、命令バッファ409が空であれば信
号線102と118の情報を、又、命令バッファ409が空でな
ければ、命令バッファ409の情報を選択し、命令語を抽
出して信号線104を介して命令解読回路438に命令を供給
すると同時に、ページ越え信号を信号線140に出力する
回路である。
分岐情報レジスタ416は、分岐情報切換回路415の出力
を第13図(a)に示す形式で、命令解読ステージに対応
して保持する。
分岐情報レジスタ417,418は、第13図(b)に示す形
式で、分岐情報と、ページ越え制御回路436より信号線1
42を介して出力されるページ越え信号と命令解読回路43
8より信号線139を介して出力される命令語長とを、それ
ぞれオペランドアドレス生成、アドレス変換の各ステー
ジに対応して保持する。
ページ越え制御回路436は、命令整列回路437より信号
線140を介して出力されるページ越え信号を命令解読回
路438より信号線141を介して与えられるアドレス変換命
令信号によって制御し、信号線142にページ越え信号と
して出力する回路である。
第14図を参照すると、命令整列回路437は、それぞれ
8バイトの命令語を保持する命令語レジスタ1601,160
2、整列すべき命令のアドレスの下位3ビットのみを保
持するワード内アドレスレジスタ1603、ページ越え信号
を保持するページ越えフリップフロップ1604,1605、ワ
ード内アドレスレジスタ1603の指示により命令語レジス
タ1601,1602より命令を抽出する命令整列器1606、命令
整列器1606と同様に命令を抽出してその命令コードのみ
を出力する命令コード整列器1607,1608、命令コード整
列器1607,1608の出力する命令コードを解読して、その
命令語長を出力する命令語長デコーダ1609,1610、ワー
ド内アドレスレジスタ1603の出力と命令語長デコーダ16
09の出力とを加算する加算器1611、加算器1611の出力と
命令語長デコーダ1610の出力とを加算する加算器1612、
アンドゲート1613,1614,1615、およびオアゲート1616,1
617とから構成され、整列された命令は、信号線104に、
ページ越え信号は信号線140にそれぞれ出力される。
命令整列回路437は、第14図に示す他に、分岐予測が
働いた時の制御回路も含まれるが、本発明には直接関係
しないので説明の都合上、省略してある。
命令語レジスタ1601,1602は、通常連続した16バイト
の命令語を保持し、その内容はレジスタ1602から1601へ
と8バイトづつシフトされつつセットされる。
命令語レジスタ1601は、その保持する命令語が命令整
列器1606で全て抽出され、未抽出の命令語が1バイトも
ない空の時にセットされ、そのセットは命令バッファ40
9が空であれば命令記憶回路408の出力である信号線102
から、そうでない時は、命令語レジスタ1602からなされ
る。又、命令語レジスタ1602は、命令バッファ409が空
の時、命令記憶回路408の出力である信号線102から、そ
うでない時は、命令バッファ409の出力である信号線103
からセットされる。
ページ越えフリップフロップ1604,1605は、それぞれ
命令語レジスタ1601,1602に対応しており、対応する命
令語レジスタの保持する命令語がページ最後の8バイト
の命令語である時、“1"を出力して表示する。ページ越
えフリップフロップ1604は、対応する命令語レジスタ16
01が信号線102からセットされる時は、命令アドレス加
算回路412より信号線118を介して与えられるページ越え
信号をセットし、命令語レジスタ1601が命令語レジスタ
1602よりセットされる時は、ページ越えフリップフロッ
プ1605よりセットされる。同様に、ページ越えフリップ
フロップ1605は、対応する命令語レジスタ1602が信号線
102からセットされる時は信号線118からセットされ、命
令語レジスタ1602が信号線103からセットされる時は命
令バッファ409の出力であるページ越え信号線123からセ
ットされる。
本実施例の命令先取り装置で扱う命令語長は、2,4,6,
8バイトの4種類であり、命令アドレスは必ず偶数なの
で、8バイトの命令語の中に命令の先頭の存在する可能
性があるのは左から数えてバイト0,2,4,6の4ケ所であ
る。命令コードは1バイトであり、命令の先頭にあるの
で、命令コードを取出すには、命令語レジスタのバイト
0,2,4,6のワード内アドレスレジスタの出力する値の上
位2ビット(命令アドレスは偶数なので下位1ビットは
常に0)の指示で選択することになる。
命令コード整列器1607は、上記動作を行う回路であ
り、その出力は命令整列器1606の出力のバイト0と等し
い。
命令語長デコーダ1609は、命令コード整列器1607の出
力を解読するので、その出力は、現在整列している命令
の命令語長である。従って、命令語長デコーダ1609の出
力とワード内アドレスレジスタ1603の出力を加算する加
算器1611の出力は、次に整列すべき命令のアドレスの下
位ビットとなり、その下位3ビットはワード内アドレス
レジスタ1603へ導かれる。
加算器1611は加算結果が8と等しいか、8より大きい
かを信号線2101および2102にそれぞれ出力する。信号線
2101,2102は、オアゲート1617で論理和がとられ、命令
語レジスタ1601,1602、およびページ越えフリップフロ
ップ1603,1604のセット信号となる。
従って、次に整列すべき命令のワード内アドレスが8
以上となると、命令語レジスタ1601には、命令語レジス
タ1602の内容がセットされる。
加算器1611の出力4ビットは、さらに命令コード整列
器1608と加算器1612へ接続されている。
命令コード整列器1608は、命令語レジスタ1601,1602
を合わせた16バイトの命令語により加算器1611の出力に
よって命令コードを取出す回路であり、その出力は、命
令語長デコーダ1610へ接続される。
従って、命令語長デコーダ1610の出力は、次に整列す
べき命令の命令語長であって、それは加算器1612で加算
器1611の出力と加算され、次の次に整列すべき命令のア
ドレスの下位ビットの算出に使用される。
加算器1612の出力は、信号線2103,2104であって、そ
れぞれ、加算結果が8より大きいか、16より大きいかを
表示する。
第15図は、第14図の命令整列回路437の動作の原理を
説明する図であり、命令語レジスタ1601,1602の16バイ
トの命令語の中に含まれる命令の長さと位置の関係を示
している。縦に長い太線はページ境界を示しており、従
って、縦線のすぐ左の命令語レジスタに対応するページ
越えフリップフロップは“1"である。16バイトの命令語
のうち、ページ最後の命令が、太線で囲まれている。太
線の中の数字はそのページ最後の命令の命令語長であ
り、さらにページ最後の命令の右側にある数字は、ペー
ジ最後の命令の直後の命令の命令語長を示している。
例えば、第15図(a)を参照すると、命令語レジスタ
1602がページ最後の8バイトの命令語であり、16バイト
の命令語のうちバイト6から始まる8バイトの命令は、
その直後の命令が4,6,8バイト長の命令であれば、ペー
ジ最後の命令であることを示している。第6図(g),
(h),(i),(j)については、直後の命令の命令
語長についての条件はない。
第15図を参照すると、これから整列すべき命令がペー
ジ最後の命令である条件は、(a)から(f)について
は、ページ越えフリップフロップ1605(PL)が“1"であ
ってこれから整列すべき命令のワード内アドレス(WA)
整列すべき命令の命令語長fI(WA)の和が8より大きく
て、かつ、整列すべき命令の次の命令の命令語長fI(WA
+fI(WA))と、整列すべき命令のワード内アドレス
(WA)と整列すべき命令の命令語長fI(WA)の和が16よ
り大きい場合であることを示している。ここで、fI
(x)は、16バイトのうち、バイトxにある命令語長を
意味するとする。
同様に、(g)から(i)については、ページ越えフ
リップフロップ1604(PU)が“1"であって、整列すべき
命令のワード内アドレス(WA)と整列すべき命令の命令
語長の和が8に等しい場合であることを示しており、
(k)から(p)については、ページ越えフリップフロ
ップ1604(PU)が“1"であって、整列すべき命令のワー
ド内アドレス(WA)と、整列すべき命令の命令語長fI
(WA)と、次に整列すべき命令の命令語長fI(WA+fI
(WA))との和が8より大きい場合であることを示して
いる。
第14図にもどると、アンドゲート1603,1614,1615とオ
アゲート1616は、上記3つの条件の論理をとっている回
路であり、ページ最後の命令が整列され、信号線104に
出力される時、同時にページ越え信号が信号線140に出
力される。
第16図を参照すると、ページ越え制御回路436は、フ
リップフロップ1701,1702、バッファゲート1703、アン
ドゲート1704,1705、オアゲート1706とから構成され
る。
ページ越え制御回路436は、信号線140を介して命令整
列回路437より与えられるページ越え信号をフリップフ
ロップ1701で1マシンサイクル保持した後、命令解読回
路438より信号線141を介して与えられるアドレス変換命
令信号との論理をとって、信号線142にページ越え信号
を出力する。信号線141のアドレス変換信号は、命令解
読回路438で解読した命令がアドレス変換を行う命令の
時、“1"が出力される。
ここでいうアドレス変換とは、オペランドの読み書き
のためのアドレス変換や、分岐命令の分岐先のアドレス
変換をさし、通常の命令の先取りについてはアドレス変
換を行わないので、含まれない。
さて、バッファゲート1703、アンドゲート1704,170
5、フリップフロップ1702およびオアゲート1706によっ
て、解読した命令がアドレス変換を行う命令である時
は、ページ越え信号を1マシンサイクルおくらせて出力
し、アドレス変換を行わない命令の時は、すぐ出力す
る。
ページ越え信号が1マシンサイクル保留された時は、
信号線142のページ越え信号と同時に、信号線143に命令
供給抑止信号が1マシンサイクル出力される。
命令供給抑止信号は命令解読回路438へ送られ、ペー
ジ最後の命令の次の命令供給を1サイクルおくらせるの
に使用される。
従って、ページ最後の命令がアドレス変換を行わない
命令の時は、ページ最後の命令のオペランドアドレス生
成ステージへの命令の供給と、ページ越え信号の供給は
同時に行われ、アドレス変換を行う命令の時は、ページ
最後の命令を供給した直後に1マシンサイクル命令の供
給を抑止して、ページ越え信号を供給して、その後でペ
ージ最後の命令の次の命令を供給する。
次に第10図に示すような命令群を実行した場合の動作
について、第12図および第17図、第18図のタイムチャー
トを参照しつつ説明する。
第17図を参照すると、まずマシンサイクル0におい
て、命令アドレスレジスタ411に、ページ最後の8バイ
トのアドレス4096n−8がセットさ、このアドレスによ
って分岐ヒストリテーブル410が索引され、ページ越え
予測情報が取出され、信号線106に、BHTヒット信号が出
力される。同時に、命令アドレス加算回路412によって
アドレス4096n−8に8が加えられ、信号線118にページ
越え信号が出力される。
次のマシンサイクル1では、分岐ヒストリテーブル41
0より取出された予測された次ページアドレス4096mが命
令アドレスレジスタ411にセットされ、命令記憶回路40
8、命令バッファ409、命令整列回路437によってアドレ
ス変換を多わない命令Zの供給(IC)が行われる。同時
に、命令Zがページ最後の命令であるため、信号線140
にページ越え信号が出力される。
マシンサイクル2では命令Aの供給(IC)が行われ、
命令Zは命令の解読(ID)が行われる。
命令Zはアドレス変換を行わない命令であるため、信
号線141のアドレス変換信号には“0"が出力され、信号
線142のページ越え信号が出力される。
マシンサイクル3では、命令Zのオペランドアドレス
生成(OA)が行われ、同時に命令アドレス生成回路431
で命令Zの論理アドレス<Z>に命令Zの命令語長が加
算され、命令Aの論理アドレス<A>が求められ、さら
に“7"が加算され、その下位3ビットが切捨てられて次
ページの論理アドレス<A>′が求められ、信号線130
に出力される。又、後続の命令Aの解読(ID)が行われ
る。
次のマシンサイクル4では、命令Zのアドレス変換
(AT)が行われるはずであるが、命令Zはアドレス変換
を行わない命令であるため、実際には何も行われない。
かわりに、ページ越え処理(PO)として、次ページ論理
アドレスがアドレス変換され、実アドレスa′が信号線
109に出力される。又、命令Aのオペランドアドレス生
成(OA)が行われる。
マシンサイクル5では、予測の確認(PC)が予測確認
回路433で行われ、実際の次ページアドレスa′と予測
された左ページアドレス4096mとが比較される。一致し
ていれば、命令Aおよびその後続の命令はそのまま実行
される。もし、不一致であれば、予測失敗信号が信号線
112に出力され、次のマシンサイクル6で命令A以降の
命令はキャンセルされ、無効化され、分岐ヒストリテー
ブル410がa′を正しく予測するよう更新(HU)され、
アドレスa′で命令語が取り出され、正しい命令A以降
の供給が再開される。
この場合、ページ越えの予測が的中して成功すれば、
ページ越え処理に要するマシンサイクルは0であり、予
測情報が分岐ヒストリテーブル登録されていない、ある
いは登録されていても、誤っていた場合は5マシンサイ
クルを要する。
第18図を参照すると、第17図と同様のタイムチャート
が示してある。第17図との違いは、ページ最後の命令Z
がアドレス変換を行う命令であることである。そのた
め、マシンサイクル2で命令Zの解読(ID)が行われる
と、アドレス変換命令信号が命令解読回路438から信号
線141に出力される。このため、命令Zは次のマシンサ
イクル3でオペランドアドレス生成(OA)が行われ、マ
シンサイクル4ではオペランドのアドレス変換(AT)が
行われるが、後続の命令Aは1マシンサイクル抑止さ
れ、マシンサイクル3,4で命令の解読(ID)が行われ、
マシンサイクル6でペランドのアドレス変換(AT)が行
われる。そのかわり、マシンサイクル4では、命令アド
レス生成回路431によって次ページ論理アドレス<A
>′が求められ、信号線130に出力され、次のマシンサ
イクル5でアドレス変換(AT)され、実アドレスa′が
信号線109に出力される。
マシンサイクル6では、命令Zの演算(EX)が行わ
れ、ページ越えの予測の確認が行われる。予測が正しけ
れば、命令Aおよびその後続の命令はそのまま実行さ
れ、正しくなければ、次のマシンサイクル7で命令A以
降の命令はキャンセルされ、分岐ヒストリテーブル410
の更新(HU)が行われたのち、正しいアドレスa′で命
令語が取出され、正しい命令の供給が再開される。この
場合、予測が的中すればページ越え処理は、1マシンサ
イクル、失敗すれば6マシンサイクルを要することにな
る。
ページ最後の命令がアドレス変換をしない第17図の場
合でも、アドレス変換をする第18図の場合でも、ページ
越えの予測に従った命令は、ページ越えの処理の直後に
処理されるので、ページ越え処理で予測の確認を行い、
誤っていた時、ページ越え処理の直後以降の命令をキャ
ンセルすることになり、有効な命令がキャンセルされた
り、キャンセルすべき命令がキャンセルされないという
ようなことはなく、常に必要最小限の命令のみがキャン
セルされる。
予測の的中率、およびアドレス変換を行わない命令の
出現率は、経験的にそれぞれ90%、25%程度であること
が知られている。従って、本実施例によるページ越え処
理に要する時間は、平均的に、 (0×0.9+5×0.1)×0.25+(1×0.9+6×0.1)×
0.75=1.25 となり1.25マシンサイクルである。
本発明を適用しない特開昭59−91550号公報では、ペ
ージ越え処理に(IC),(ID),IA,ATのマシンサイクル
を要しているので、本発明により2.75マシンサイクルの
高速化を実現できる。
[発明の効果] 以上説明したように本発明は、ページ越えについての
情報を分岐ヒストリテーブルに登録し、その情報によっ
て命令の先取りを行うことによって、ページ越え処理の
高速化を実現できるという効果がある。
【図面の簡単な説明】
第1図は本発明の第1の実施例による命令先取り装置の
構成を示すブロック図、第2図は第1図中の分岐ヒスト
リテーブル、分岐情報バッファ、分岐情報レジスタの格
納形式を示す図、第3図は第1図の命令アドレス加算回
路412の詳細な構成を示すブロック図、第4図は第1図
の命令アドレス生成回路431の詳細な構成を示すブロッ
ク図、第5図は第1図の命令整列回路414の詳細な構成
を示すブロック図、第6図及び第7図は命令整列回路41
4の動作を説明するためのタイムチャート、第8図は第
1図の予測確認回路433の詳細な構成を示すブロック
図、第9図は第1図の命令先取り制御回路424の詳細な
構成を示すブロック図、第10図は命令の配列の一例を示
す図、第11図は第10図の命令を実行した時の第1の実施
例の動作を説明するためのタイムチャート、 第12図は本発明の第2の実施例による命令先取り装置の
構成を示すブロック図、第13図は第12図中の分岐ヒスト
リテーブル、分岐情報バッファ、分岐情報レジスタの格
納形式を示す図、第14図は第12図の命令整列回路437の
詳細な構成を示すブロック図、第15図は命令整列回路43
7の動作の原理を説明する図、第16図は第12図のページ
越え制御回路436の詳細な構成を示す図、第17図、第18
図は第10図の命令を実行した時の第2の実施例の動作を
説明するためのタイムチャートである。 403…命令解読回路、404…オペランドアドレス生成回
路、406…オペランド読出し回路、407…命令実行回路、
408…命令記憶回路、409…命令バッファ、410…分岐ヒ
ストリテーブル、411…命令アドレスレジスタ、412…命
令アドレス加算回路、413…分岐情報バッファ、414…命
令整列回路、415…分岐情報切替回路、416,417,418,419
…分岐情報レジスタ、421…アドレス生成回路、422…選
択回路、423…レジスタ、424…命令先取り制御回路、42
5…更新指示フリップフロップ、431…命令アドレス生成
回路、432…アドレス変換回路、433…予測確認回路、43
5…選択回路、436…ページ越え制御回路、437…命令整
列回路、438…命令解読回路、1001…アドレス加算器、1
101,1102…レジスタ、1103,1104…アドレス加算器、120
1,1202…命令語レジスタ、1203…ワード内アドレスレジ
スタ、1204,1205…ページ越え表示フリップフロップ、1
206、1207…フリップフロップ、1208…命令整列器、120
9…命令語長デコーダ、1210…加算器、1211,1212…オア
ゲート、1213,1214,1215,1216…アンドゲート、1401,14
02…レジスタ、1403,1404,1405…フリップフロップ、14
06…アドレス比較器、1407,1408…アンドゲート、1409
…イクスクルーシブオアゲート、1410,1411…オアゲー
ト、1501…フリップフロップ、1502,1503,1504…バッフ
ァゲート、1505…アンドゲート、1601,1602…命令語レ
ジスタ、1603…ワード内アドレスレジスタ、1604,1605
…ページ越えフリップフロップ、1606…命令整列器、16
07,1608…命令コード整列器、1609,1610…命令語長デコ
ーダ、1611,1612…加算器、1613,1614,1615…アンドゲ
ート、1616,1617…オアゲート、1701,1702…フリップフ
ロップ、1703…バッファゲート、1704,1705…アンドゲ
ート、1706…アオゲート。

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】ページングを行い、命令語を保持し、実ア
    ドレスでアクセスされるキャッシュメモリと、分岐命令
    の実アドレスを指定する情報と該分岐命令の分岐先実ア
    ドレスを含む情報とを対にして複数対記憶する分岐ヒス
    トリテーブルとを有し、アドレス変換装置に結合された
    命令先取り装置に於いて、 ページの最後にある命令の実アドレスを指定する情報と
    該命令の次命令の実アドレスを含む情報とを対にして、
    前記分岐ヒストリテーブルに登録する登録手段と、 先取りすべき命令の実アドレスがページ境界を越えた時
    に、該先取りすべき命令の論理アドレスのアドレス変換
    を前記アドレス変換装置に指示する指示手段と、 該アドレス変換の結果を待たずに、前記分岐ヒストリテ
    ーブルで予測された分岐先アドレスとして報告されるペ
    ージ最後の命令の次命令の実アドレスにより命令を供給
    する手段と を備えることを特徴とする命令先取り装置。
  2. 【請求項2】ページンジを行い、命令語を保持し、実ア
    ドレスでアクセスされるキャッシュメモリと、分岐命令
    の実アドレスを指定する情報と該分岐命令の分岐先実ア
    ドレスを含む情報とを対にして複数対記憶する分岐ヒス
    トリテーブルとを有し、アドレス変換装置に結合された
    命令先取り装置に於いて、 ページの最後にある命令の実アドレスを指定する情報と
    該命令の次命令の実アドレスを含む情報とを対にして、
    前記分岐ヒストリテーブルに登録する登録手段と、 先取りすべき命令の実アドレスがページ境界を越えた時
    に、直前に先取りした命令がアドレス変換を行わない命
    令の場合には、該直前に先取りした命令の動作として該
    直前に先取りした命令の次のページの論理アドレスのア
    ドレス変換を前記アドレス変換装置に指示する第1の指
    示手段と、 前記先取りすべき命令の実アドレスがページ境界を越え
    た時に、前記直前に先取りした命令がアドレス変換を行
    う命令の場合には、該直前に先取りした命令の供給の後
    に、該直前に先取りした命令の次のページの論理アドレ
    スのアドレス変換を前記アドレス変換装置に指示する第
    2の指示手段と、 該アドレス変換の結果を待たずに、前記分岐ヒストリテ
    ーブルで予測された分岐先アドレスとして報告されるペ
    ージの最後の命令の次命令の実アドレスにより命令を供
    給する供給手段と を備えることを特徴とする命令先取り装置。
JP63234903A 1988-09-21 1988-09-21 命令先取り装置 Expired - Lifetime JP2722523B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP63234903A JP2722523B2 (ja) 1988-09-21 1988-09-21 命令先取り装置
US07/410,577 US5168557A (en) 1988-09-21 1989-09-21 Instruction prefetching device having a history table for memorizing page last real instruction addresses and page-over all real instruction addresses providing for quicker page-over processing time
FR8912407A FR2636748B1 (fr) 1988-09-21 1989-09-21 Dispositif de prelecture d'instruction capable de traiter les changements de page sans perte de temps

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63234903A JP2722523B2 (ja) 1988-09-21 1988-09-21 命令先取り装置

Publications (2)

Publication Number Publication Date
JPH0283735A JPH0283735A (ja) 1990-03-23
JP2722523B2 true JP2722523B2 (ja) 1998-03-04

Family

ID=16978106

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63234903A Expired - Lifetime JP2722523B2 (ja) 1988-09-21 1988-09-21 命令先取り装置

Country Status (3)

Country Link
US (1) US5168557A (ja)
JP (1) JP2722523B2 (ja)
FR (1) FR2636748B1 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2508280B2 (ja) * 1989-07-28 1996-06-19 日本電気株式会社 分岐ヒストリテ―ブル制御方式
JPH03156542A (ja) * 1989-08-29 1991-07-04 Hitachi Ltd アドレス変換装置及びそのためのアドレス情報の管理方法
JPH04340145A (ja) * 1991-05-17 1992-11-26 Nec Corp キャッシュメモリ装置
JP2682264B2 (ja) * 1991-05-21 1997-11-26 日本電気株式会社 プログラムカウンタ装置
WO1993017384A1 (en) * 1992-02-27 1993-09-02 Wang Laboratories, Inc. Cpu having pipelined instruction unit and effective address calculation unit with retained virtual address capability
US5507028A (en) * 1992-03-30 1996-04-09 International Business Machines Corporation History based branch prediction accessed via a history based earlier instruction address
US5392410A (en) * 1992-04-30 1995-02-21 International Business Machines Corporation History table for prediction of virtual address translation for cache access
US5404471A (en) * 1992-11-20 1995-04-04 International Business Machines Corp. Method and apparatus for switching address generation modes in CPU having plural address generation modes
JP3254019B2 (ja) * 1992-11-30 2002-02-04 富士通株式会社 データ先読み制御装置
US5588128A (en) * 1993-04-02 1996-12-24 Vlsi Technology, Inc. Dynamic direction look ahead read buffer
KR100310581B1 (ko) * 1993-05-14 2001-12-17 피터 엔. 데트킨 분기목표버퍼의추측기록메카니즘
US5388247A (en) * 1993-05-14 1995-02-07 Digital Equipment Corporation History buffer control to reduce unnecessary allocations in a memory stream buffer
WO1994027210A1 (en) * 1993-05-14 1994-11-24 Intel Corporation Speculative history mechanism in a branch target buffer
US5925125A (en) * 1993-06-24 1999-07-20 International Business Machines Corporation Apparatus and method for pre-verifying a computer instruction set to prevent the initiation of the execution of undefined instructions
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
US5887174A (en) * 1996-06-18 1999-03-23 International Business Machines Corporation System, method, and program product for instruction scheduling in the presence of hardware lookahead accomplished by the rescheduling of idle slots
US5813045A (en) * 1996-07-24 1998-09-22 Advanced Micro Devices, Inc. Conditional early data address generation mechanism for a microprocessor
US6044222A (en) * 1997-06-23 2000-03-28 International Business Machines Corporation System, method, and program product for loop instruction scheduling hardware lookahead
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US8065504B2 (en) 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6549959B1 (en) 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
US6651162B1 (en) 1999-11-04 2003-11-18 International Business Machines Corporation Recursively accessing a branch target address cache using a target address previously accessed from the branch target address cache
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US7085915B1 (en) 2000-02-29 2006-08-01 International Business Machines Corporation Programmable prefetching of instructions for a processor executing a non-procedural program
JP2003196156A (ja) * 2001-12-28 2003-07-11 Fujitsu Ltd 情報処理装置および情報処理方法
US6983356B2 (en) * 2002-12-19 2006-01-03 Intel Corporation High performance memory device-state aware chipset prefetcher
US6925928B2 (en) * 2003-09-18 2005-08-09 Anthony Fox Trash compactor for fast food restaurant waste
CN102662690B (zh) * 2012-03-14 2014-06-11 腾讯科技(深圳)有限公司 应用程序启动方法和装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4218743A (en) * 1978-07-17 1980-08-19 International Business Machines Corporation Address translation apparatus
US4498146A (en) * 1982-07-30 1985-02-05 At&T Bell Laboratories Management of defects in storage media
US4594659A (en) * 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Method and apparatus for prefetching instructions for a central execution pipeline unit
US4680700A (en) * 1983-12-07 1987-07-14 International Business Machines Corporation Virtual memory address translation mechanism with combined hash address table and inverted page table
US4757438A (en) * 1984-07-12 1988-07-12 Texas Instruments Incorporated Computer system enabling automatic memory management operations
US4691277A (en) * 1984-10-24 1987-09-01 International Business Machines Corp. Small instruction cache using branch target table to effect instruction prefetch
US4797810A (en) * 1986-06-26 1989-01-10 Texas Instruments Incorporated Incremental, multi-area, generational, copying garbage collector for use in a virtual address space

Also Published As

Publication number Publication date
JPH0283735A (ja) 1990-03-23
FR2636748A1 (fr) 1990-03-23
FR2636748B1 (fr) 1994-04-29
US5168557A (en) 1992-12-01

Similar Documents

Publication Publication Date Title
JP2722523B2 (ja) 命令先取り装置
EP0380859B1 (en) Method of preprocessing multiple instructions
US4991080A (en) Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
US7480783B2 (en) Systems for loading unaligned words and methods of operating the same
EP0381323B1 (en) Method and apparatus for increasing the data storage rate of a computer system
JPH0429093B2 (ja)
JP3203401B2 (ja) データ処理装置
KR910006144B1 (ko) 느슨하게 결합된 파이프라인 프로세서
US5396604A (en) System and method for reducing the penalty associated with data cache misses
JPH08221324A (ja) キャッシュメモリへのアクセス
KR930003124B1 (ko) 파이프라인방식의 분기명령제어장치
US6757809B1 (en) Data processor having 2n bits width data bus for context switching functions
JPH0773104A (ja) キャッシュ・システム
KR19990003937A (ko) 프리페치 장치
US6721867B2 (en) Memory processing in a microprocessor
KR20210074276A (ko) 정확한 인터럽트 그리고/또는 덮어 쓰기 기능을 갖는 벡터 명령어
JPH04245334A (ja) 情報処理装置の命令先読み制御方式
JPH0248733A (ja) 情報処理装置
JPS5940387A (ja) 仮想記憶制御方式
JP2656765B2 (ja) データ処理装置
JPH02157939A (ja) 命令処理方法及び命令処理装置
JPS6410858B2 (ja)
KR19980052331A (ko) 프로세서의 캐시 메모리 제어 방법
JP2559416B2 (ja) 情報処理装置
JPS5940386A (ja) 仮想記憶制御方式

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071128

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20081128

Year of fee payment: 11

EXPY Cancellation because of completion of term