JP2603626B2 - データ処理装置 - Google Patents

データ処理装置

Info

Publication number
JP2603626B2
JP2603626B2 JP62008394A JP839487A JP2603626B2 JP 2603626 B2 JP2603626 B2 JP 2603626B2 JP 62008394 A JP62008394 A JP 62008394A JP 839487 A JP839487 A JP 839487A JP 2603626 B2 JP2603626 B2 JP 2603626B2
Authority
JP
Japan
Prior art keywords
instruction
branch
unit
branch prediction
decoding
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
JP62008394A
Other languages
English (en)
Other versions
JPS63175934A (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP62008394A priority Critical patent/JP2603626B2/ja
Priority to US07/143,547 priority patent/US4858104A/en
Publication of JPS63175934A publication Critical patent/JPS63175934A/ja
Application granted granted Critical
Publication of JP2603626B2 publication Critical patent/JP2603626B2/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, 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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 この発明は、パイプライン処理機能と分岐命令の飛び
先予測部を備えたデータ処理装置に関する。
〔従来の技術〕
第3図は、命令のパイプライン処理機能と分岐命令の
飛び先予測部を備えた従来のデータ処理装置の一部を示
すブロック図である。同図において、1は命令をデータ
バス6を介してプリフェッチ(先取り制御)し、待ち行
列をつくる命令プリフェッチキュー、2は命令プリフェ
ッチキュー1より命令を取り込みデコード(解読)する
命令デコード部、3は命令デコード部2でデコードされ
た結果を実際に実行する命令実行部、4は後に詳述する
分岐予測テーブルに従い、分岐命令の予測を行う分岐予
測部、5は命令デコード部2のデコード結果により分岐
先番地を生成する分岐先番地生成回路、6はデータバス
である。またS1は分岐予測信号、S2は次にデコードされ
る命令の番地信号、S3は現在実行中の命令番地信号であ
る。
このような構成において、命令実行部3で命令を実行
している間に命令デコード部2では次に実行すべき命令
をデコードしており、命令実行部3で実行が終了したら
命令デコード部2でデコードが既に終了している次の命
令が速やかに実行される。また、命令プリフェッチキュ
ー1では図示しない主記憶がアクセスされていない時間
を利用して命令をあらかじめ取込んでおき、命令デコー
ド部2が命令プリフェッチキュー1から次にデコードす
べき命令のデータをフェッチする(取込む)ことにより
命令フェッチにかかる時間を短縮している。
このようにパイプライン機能を有するデータ処理装置
では、各部1〜3が並列に動作することにより実効的な
速度を上げている。しかし、命令の流れが乱れた場合、
例えば分岐命令により分岐が実行された時には、命令デ
コード部2でのデコード結果及び命令プリフェッチキュ
ー1に取込まれている命令データはキャンセルされ、命
令プリフェッチキュー1は分岐命令により指定された飛
び先番地から新たなキューイングを行なう。
すなわち、分岐命令による分岐実行後初めて実行され
る命令は主記憶から直接取り込まなければならず、その
命令がフェッチされデコードされるまで命令実行部は命
令の実行を中断しなければならない。
そのため第3図のデータ処理装置では、この点を改善
するために分岐予測部4を設けている。分岐予測部4
は、第4図で示したような分岐命令番地と、その分岐命
令が過去に実行された時の履歴をもとに、次回実行され
た時に分岐するかどうかを予測した分岐予測ビットとを
組にして記憶した予測テーブルを利用して、分岐予測を
行うものである。この予測テーブル作成の方法によって
はかなり高い確率でプログラムの流れが予測できること
がわかっている。
動作について説明すると、分岐予測部4は次に命令デ
コード部2でデコードされる命令の番地信号S2に基づき
分岐予測信号S1を命令デコード部2に送る。分岐予測信
号S1は第4図で示した分岐予測ビットの値であり、その
命令が最近実行された分岐命令であり過去の履歴により
次回実行された時分岐するかどうかを予測したものであ
る。一方、命令プリフェッチキュー1より命令デコード
部2に命令データが取り込まれると、命令デコード部2
は命令デコートを開始する。命令デコードの結果、デコ
ードした令名が分岐命令であり、かつ分岐予測部4から
の分岐予測信号S1が分岐の発生を予測していると、命令
プリフェッチキュー1に取り込まれている命令データは
クリアされる。さらに、命令デコード部2の解読結果に
基づき分岐先番地生成回路5では飛び先番地が生成さ
れ、この飛び先番地が命令プリフェッチキュー1に渡さ
れる。命令プリフェッチキュー1はその飛び先番地に従
いキューイングを行い、取り込まれた命令データを命令
デコード部2に渡す。
上述した分岐予測が的中した時には、命令実行部3が
次に実行すべき命令がより早期に主記憶より取り込まれ
るため、次の命令実行までの待ち時間を短縮することが
できる。また、分岐予測が外れた時には、現在実行中の
命令の番地S3により第4図で示した分岐予測テーブルに
おける番地,分岐予測ビットの登録(分岐発生と予測し
なかったにもかかわらず分岐したとき)及び抹梢(分岐
発生と予測したにもかかわらず分岐しなかったとき)の
操作を行う。このような分岐予測部4の付加により分岐
命令実行後の分岐によるパイプライン処理の乱れを抑
え、データ処理装置の実効的な計算速度を上げている。
〔発明が解決しようとする問題点〕
従来の命令のパイプライン処理機能を備えたデータ処
理装置は、以上のように、分岐予測部4を備えることに
より分岐命令における分岐の発生の予測をおこなってパ
イプライン処理の乱れを押えている。しかしながら、分
岐発生予測の判定は命令デコード部2で、命令データを
デコードする際に分岐予測信号S1に従って行われるの
で、命令デコード部2である命令データの解読を行う以
前に、その命令に対する分岐予測信号S1が命令デコード
部2に送られていなければならない。
そのため、1つ前の命令データ解読中に、命令デコー
ド部2において次の命令データ(すなわち上記ある命令
データ)の番地信号S2を分岐予測部4に送る必要があ
る。しかしながら、次の命令データの番地計算は、現在
解読中の命令データの命令長を確定し、それにその時の
プログラムカウンタの値を加えることにより得られるた
め時間がかかり、特に可変長命令セットを持つデータ処
理装置ではさらに命令長の確定に時間がかかってしま
う。
その結果、分岐予測部に次の命令データの番地信号S2
を送るのが遅れ、分岐予測部4より分岐予測信号S1が命
令デコード部2に送られる前に、命令デコード部2に次
の命令データが命令プリフェッチキュー1より取込まれ
てしまうという不都合が生じるという問題点があった。
この発明は上記のような問題点を解消するためになさ
れたもので、デコードを行うべき命令の分岐予測信号を
早期に得ることにより、より高速な分岐予測処理のでき
るデータ処理装置を特別な回路を付加することなく提供
することである。
〔問題点を解決するための手段〕
この発明にかかるデータ処理装置は、次に実行すべき
命令をデコードする命令デコード部、この命令デコード
部でデコードされた結果を実行する命令実行部、分岐命
令の直前に実行された1つまたは複数の命令の番地に対
応させて分岐予測情報を記憶するテーブルを有し、該テ
ーブルに基づきデコードする命令の分岐予測情報を上記
命令デコード部に与える分岐予測部、上記デコードする
命令が分岐すると予測される分岐命令であった場合に、
上記デコード部によるデコード結果に基づいて分岐先番
地を生成する分岐先番地生成部を備えて構成される。
〔作用〕
この発明における分岐予測部は、分岐命令の直前に実
行された命令の番地に対応させて分岐予測情報を記憶す
るテーブルを有し、該テーブルに基づきデコードする命
令の分岐予測情報を命令デコード部に与えている。
したがって、分岐予測部は、分岐命令の分岐予測を分
岐命令の直前に実行された命令の番地に基づき行うこと
ができるため、より早期に分岐予測を行うことができ
る。
〔実施例〕
第1図は、この発明の一実施例であるパイプライン処
理機能と分岐命令の飛び先予測部を備えたデータ処理装
置の一部を示すブロック図である。同図において1,5,S1
は従来と同じなので説明は省略する。2,3,4の基本動作
は従来と同じであるが、次の点が各々異なっている。命
令デコード部2は、分岐予測部4に現在解読中の命令デ
ータの番地信号S4を送り、命令実行部3は、分岐予測部
4に現在実行中の命令の直前に実行された命令の番地信
号S5を分岐予測部4に送っている。そして、分岐予測部
4は第2図に示すような命令番地と、分岐予測ビットを
組にした予測テーブルを利用して予測を行うものであ
る。分岐予測ビットは次にデコードする命令が最近実行
された分岐命令であり過去の履歴により次回実行された
時分岐するかどうかを予測したものである。S4,S5は前
述したように各々現在解読中の命令データの番地番号,
現在実行中の命令の直前に実行された命令の番地信号で
ある。
以上のような構成において、分岐予測部4は現在デコ
ード中の命令の番地信号S4により前述した予測テーブル
に従い、次にデコードする命令の分岐予測信号S1を次の
命令を取込む前の命令デコード部2に送る。そして、命
令プリフェッチキュー1より命令デコード部2に次の命
令データが取り込まれると、既に受けとっている分岐予
測信号S1と共に命令デコードを開始する。命令デコード
の結果、デコードした命令が分岐命令であり、かつ分岐
予測信号S1により分岐が起こると予測されると、命令プ
リフェッチキュー1に取り込まれている命令データはク
リアされる。さらに、命令デコード部2の解読結果に基
づき分岐先番地生成回路5より出力される飛び先番地が
命令プリフェッチキュー1に渡される。命令プリフェッ
チキュー1はその飛び先番地に従い、キューイングを行
い、取り込まれた命令データを命令デコード部2に渡
す。
分岐予測が的中した時には命令実行部3が次に実行す
べき命令がより早期に主記憶より取り込まれるため、次
の命令実行までの持ち時間を短縮することができる。ま
た、分岐命令が命令実行部3で実行された際、その命令
が始めて実行された時のように分岐予測部4に登録され
ていなかったり、分岐予測部4による予測が外れていた
場合には命令実行部3から分岐命令予測部4にその命令
の直前に実行された命令番地信号S5を送ることにより第
2図で示した分岐予測テーブルにおける番地,分岐予測
ビットの登録及び抹梢操作を行う。
このように、現在命令デコード部2で解読中の命令の
番地で次にデコードされる命令が分岐するかどうかの予
測を分岐予測部4が行っている。現在解読中の命令の番
地の確定は当然のことながら、デコード部2における解
読の当初で判明しているため、早期に現在解読中の命令
の番地信号S4を分岐予測部4に送ることができる。その
結果、分岐予測部4から次の命令に対する分岐予測信号
S1を命令デーコド部2へ早期に送ることができ、命令デ
コード部2は次の命令デコードの解読を行う以前に確実
に分岐予測信号S1を受取ることができる。このため、よ
り高速な分岐予測処理を行えることになり、データ処理
装置の実効速度が向上する。また履歴に依存する分岐命
令では分岐命令の前に実行された命令番地で分岐予測を
行うことは特に有効である。
なお、この実施例の分岐予測部4では、分岐命令の直
前に実行された1つの命令データの番地で次にデコード
する命令の分岐を予測していたが、分岐命令の直前に実
行された複数の命令データの番地群で次にデコードする
命令の分岐を予測してもよく、この場合、より詳細な処
理シーケンスに基づく予測が可能となり、さらに確率の
高い予測が行える。
〔発明の効果〕
以上説明したように、この発明における分岐予測部
は、分岐命令の分岐予測を分岐命令の直前に実行された
命令の番地に基づき行うことができるため、デコードす
べき命令の分岐予測が早期に得ることができ、より高速
なデータ処理を特別な回路を付加することなく簡単な構
成で行うことができる。
【図面の簡単な説明】
第1図はこの発明の一実施例である命令のパイプライン
処理機能と分岐命令の飛び先予測部を備えたデータ処理
装置の一部を示すブロック図、第2図は第1図の分岐予
測部で用いられる予測テーブルを示す図、第3図は従来
の命令のパイプライン処理機能と分岐命令の飛び先予測
部を備えたデータ処理装置の一部を示すブロック図、第
4図は第3図の分岐予測部で用いられる予測テーブルを
示す図である。 図において、2は命令デコード部、3は命令実行部、4
は分岐予測部である。 なお、各図中同一符号は同一または相当部分を示す。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】パイプライン処理機能を有するデータ処理
    装置において、 次に実行すべき命令をデコードする命令デコード部、 この命令デコード部でデコードされた結果を実行する命
    令実行部、 分岐命令の直前に実行された1つまたは複数の命令の番
    地に対応させて分岐予測情報を記憶するテーブルを有
    し、該テーブルに基づきデコードする命令の分岐予測情
    報を上記命令デコード部に与える分岐予測部、 上記デコードする命令が分岐すると予測される分岐命令
    であった場合に、上記デコード部によるデコード結果に
    基づいて分岐先番地を生成する分岐先番地生成部を、 備えるデータ処理装置。
JP62008394A 1987-01-16 1987-01-16 データ処理装置 Expired - Lifetime JP2603626B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP62008394A JP2603626B2 (ja) 1987-01-16 1987-01-16 データ処理装置
US07/143,547 US4858104A (en) 1987-01-16 1988-01-13 Preceding instruction address based branch prediction in a pipelined processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62008394A JP2603626B2 (ja) 1987-01-16 1987-01-16 データ処理装置

Publications (2)

Publication Number Publication Date
JPS63175934A JPS63175934A (ja) 1988-07-20
JP2603626B2 true JP2603626B2 (ja) 1997-04-23

Family

ID=11691973

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62008394A Expired - Lifetime JP2603626B2 (ja) 1987-01-16 1987-01-16 データ処理装置

Country Status (2)

Country Link
US (1) US4858104A (ja)
JP (1) JP2603626B2 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
JP2723238B2 (ja) * 1988-01-18 1998-03-09 株式会社東芝 情報処理装置
JPH081599B2 (ja) * 1988-02-24 1996-01-10 三菱電機株式会社 データ処理装置
US5228131A (en) * 1988-02-24 1993-07-13 Mitsubishi Denki Kabushiki Kaisha Data processor with selectively enabled and disabled branch prediction operation
GB8817912D0 (en) * 1988-07-27 1988-09-01 Int Computers Ltd Data processing apparatus
JPH0769811B2 (ja) * 1988-12-21 1995-07-31 松下電器産業株式会社 データ処理装置
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US5276882A (en) * 1990-07-27 1994-01-04 International Business Machines Corp. Subroutine return through branch history table
WO1992006426A1 (en) * 1990-10-09 1992-04-16 Nexgen Microsystems Method and apparatus for parallel decoding of instructions with branch prediction look-up
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
US5434986A (en) * 1992-01-09 1995-07-18 Unisys Corporation Interdependency control of pipelined instruction processor using comparing result of two index registers of skip instruction and next sequential instruction
US5313634A (en) * 1992-07-28 1994-05-17 International Business Machines Corporation Computer system branch prediction of subroutine returns
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US5748976A (en) * 1993-10-18 1998-05-05 Amdahl Corporation Mechanism for maintaining data coherency in a branch history instruction cache
GB2285154B (en) * 1993-12-24 1998-04-01 Advanced Risc Mach Ltd Branch cache
JP3599409B2 (ja) * 1994-06-14 2004-12-08 株式会社ルネサステクノロジ 分岐予測装置
JP2636192B2 (ja) * 1994-12-20 1997-07-30 甲府日本電気株式会社 情報処理装置
US5933860A (en) * 1995-02-10 1999-08-03 Digital Equipment Corporation Multiprobe instruction cache with instruction-based probe hint generation and training whereby the cache bank or way to be accessed next is predicted
US5905881A (en) * 1995-11-30 1999-05-18 Unisys Corporation Delayed state writes for an instruction processor
US5742805A (en) * 1996-02-15 1998-04-21 Fujitsu Ltd. Method and apparatus for a single history register based branch predictor in a superscalar microprocessor
US8583895B2 (en) * 1996-05-15 2013-11-12 Nytell Software LLC Compressed instruction format for use in a VLIW processor
US5867699A (en) * 1996-07-25 1999-02-02 Unisys Corporation Instruction flow control for an instruction processor
US5974538A (en) * 1997-02-21 1999-10-26 Wilmot, Ii; Richard Byron Method and apparatus for annotating operands in a computer system with source instruction identifiers
JP3741870B2 (ja) * 1998-08-07 2006-02-01 富士通株式会社 命令及びデータの先読み方法、マイクロコントローラ、疑似命令検出回路
US6421774B1 (en) * 1999-11-05 2002-07-16 Ip First L.L.C. Static branch predictor using opcode of instruction preceding conditional branch
KR20040045467A (ko) * 2001-10-02 2004-06-01 코닌클리케 필립스 일렉트로닉스 엔.브이. 자바 하드웨어 가속기에 대한 추론적 실행
US7725695B2 (en) * 2005-05-31 2010-05-25 Arm Limited Branch prediction apparatus for repurposing a branch to instruction set as a non-predicted branch
US20070294518A1 (en) * 2006-06-14 2007-12-20 Shen-Chang Wang System and method for predicting target address of branch instruction utilizing branch target buffer having entry indexed according to program counter value of previous instruction
US7779241B1 (en) * 2007-04-10 2010-08-17 Dunn David A History based pipelined branch prediction
US9104399B2 (en) * 2009-12-23 2015-08-11 International Business Machines Corporation Dual issuing of complex instruction set instructions
US8082467B2 (en) * 2009-12-23 2011-12-20 International Business Machines Corporation Triggering workaround capabilities based on events active in a processor pipeline
US9135005B2 (en) * 2010-01-28 2015-09-15 International Business Machines Corporation History and alignment based cracking for store multiple instructions for optimizing operand store compare penalties
US8495341B2 (en) * 2010-02-17 2013-07-23 International Business Machines Corporation Instruction length based cracking for instruction of variable length storage operands
US8938605B2 (en) * 2010-03-05 2015-01-20 International Business Machines Corporation Instruction cracking based on machine state
US8464030B2 (en) 2010-04-09 2013-06-11 International Business Machines Corporation Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits
US8645669B2 (en) 2010-05-05 2014-02-04 International Business Machines Corporation Cracking destructively overlapping operands in variable length instructions
US20120311308A1 (en) * 2011-06-01 2012-12-06 Polychronis Xekalakis Branch Predictor with Jump Ahead Logic to Jump Over Portions of Program Code Lacking Branches
US10664280B2 (en) * 2015-11-09 2020-05-26 MIPS Tech, LLC Fetch ahead branch target buffer

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4176394A (en) * 1977-06-13 1979-11-27 Sperry Rand Corporation Apparatus for maintaining a history of the most recently executed instructions in a digital computer
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
JPS56149646A (en) * 1980-04-21 1981-11-19 Toshiba Corp Operation controller
JPS6049340B2 (ja) * 1980-09-29 1985-11-01 日本電気株式会社 分岐命令先取り方式
US4370711A (en) * 1980-10-21 1983-01-25 Control Data Corporation Branch predictor using random access memory
US4477872A (en) * 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
US4764861A (en) * 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction

Also Published As

Publication number Publication date
US4858104A (en) 1989-08-15
JPS63175934A (ja) 1988-07-20

Similar Documents

Publication Publication Date Title
JP2603626B2 (ja) データ処理装置
US5237666A (en) Apparatus using address of a predetermined preceding instruction and target instruction address stored in history table to prefetch target instruction
JPH06110683A (ja) マイクロプロセッサの拡張ブランチターゲット方法及びその装置
JPH1196004A (ja) データプロセッサにおける条件分岐実行を制御するための方法および装置
JPH056894B2 (ja)
JPH02287626A (ja) パイプライン方式の分岐命令制御装置
JPH03129432A (ja) 分岐制御回路
JP2570859B2 (ja) データ処理装置
JP2723238B2 (ja) 情報処理装置
JPH07306785A (ja) 分岐命令実行機能を持つプロセッサおよび分岐命令制御方法
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
JPH11345121A (ja) プログラム制御ユニット用の命令取り出し装置および方法
JP3335735B2 (ja) 演算処理装置
JP2508021B2 (ja) デ−タ処理装置
JPH0331933A (ja) データ処理装置
JPH04213727A (ja) 情報処理装置
JP2503223B2 (ja) 先行制御方式
JP4049490B2 (ja) 情報処理装置
JPS60198640A (ja) パイプライン型情報処理装置
JPH04195630A (ja) データ処理装置
JPH09311787A (ja) データ処理装置
JPH06301538A (ja) 条件分岐命令処理装置
JPS63170740A (ja) デ−タ処理装置
JPH05257686A (ja) 命令キャッシュ回路
JPS6047618B2 (ja) 情報処理装置

Legal Events

Date Code Title Description
S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

EXPY Cancellation because of completion of term