JP3738842B2 - 遅延分岐機能を備えた情報処理装置 - Google Patents

遅延分岐機能を備えた情報処理装置 Download PDF

Info

Publication number
JP3738842B2
JP3738842B2 JP2002162445A JP2002162445A JP3738842B2 JP 3738842 B2 JP3738842 B2 JP 3738842B2 JP 2002162445 A JP2002162445 A JP 2002162445A JP 2002162445 A JP2002162445 A JP 2002162445A JP 3738842 B2 JP3738842 B2 JP 3738842B2
Authority
JP
Japan
Prior art keywords
instruction
branch
information
address
vliw
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
JP2002162445A
Other languages
English (en)
Other versions
JP2004013255A (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 JP2002162445A priority Critical patent/JP3738842B2/ja
Priority to US10/438,986 priority patent/US7546445B2/en
Priority to DE60322785T priority patent/DE60322785D1/de
Priority to EP03253206A priority patent/EP1369776B1/en
Publication of JP2004013255A publication Critical patent/JP2004013255A/ja
Application granted granted Critical
Publication of JP3738842B2 publication Critical patent/JP3738842B2/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/3802Instruction 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

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

Description

【0001】
【発明の属する技術分野】
本発明は、遅延分岐機能を備えた各種情報処理装置に係り、特に、遅延分岐機能を備えた可変長VLIW情報処理装置に関する。
【0002】
【従来の技術】
プロセッサでは、動作周波数が高くなるにつれてパイプライン段数が多くなり、分岐命令によるパイプラインの乱れも大きくなる。分岐ペナルティを低減するために、分岐先バッファ(Branch Target Buffer: BTB)を備えた分岐予測が行なわれ、また、分岐命令に後続する命令(遅延スロット命令)を実行した後に分岐を行なう遅延分岐が採用されている。遅延スロット命令のステップ数SNが可変長である場合、ステップ数SNの情報が分岐命令コードに含まれている。
【0003】
一方、VLIWプロセッサでは、論理的に空間的並列実行可能なVLIWにするために、プログラマ又はコンパイラにより予め、ダミー命令としてのNOP(ノーオペレーション)命令が付加される。しかし、論理的に空間的並列実行可能なVLIWがVLIWプロセッサの特性に応じて異なるのでプログラムの汎用性が低く、また、命令キャッシュに多くのNOP命令が含まれるのでキャッシュヒット率が低下する。
【0004】
そこで、VLIWの各命令コードに、VLIWの区切りを示すパッキングフラグを備えることにより、VLIWを可変長にし、命令キャッシュから可変長VLIW(圧縮VLIW)を読み出した後にパッキングフラグの値でVLIWの区切りを認識し、VLIWの命令長が最大長より短い場合にNOP命令を付加して命令パイプラインに供給する可変長VIWプロセッサが開発されている。
【0005】
【発明が解決しようとする課題】
命令アドレスでBTBと命令キャッシュを同時にアクセスし、BTBの出力が分岐命令であることを示していても、可変長VLIWの場合、命令キャッシュから読み出された一連の命令のどこまでが1つの可変長VLIWであるかを確認し、これをデコードしてどの部分が分岐命令であるかを調べ、さらに、該分岐命令のコード中のステップ数SNを読み取る必要がある。
【0006】
可変長VIWプロセッサによれば、パッキングフラグによりVLIWをブロック化することができるので、該ステップ数SNの情報を分岐命令コード中を含ませずに、該ステップ数を可変長にすることが可能となる。この場合には、ステップ数SNを読み取る必要がない。
【0007】
しかしながら、命令キャッシュから読み出された一連の命令のどこまでが1つの可変長VLIWであるかを確認し、さらに、遅延分岐スロットの区切りを示しているパッキングフラグPF(例えばPF=‘1’)を含む命令コードまでシーケンシャルに命令を命令キャッシュから読み出さないと、遅延スロット命令のステップ数を確認することができない。該ステップ数の確認をせずに該ステップ数が最大値であると仮定して遅延スロット命令の読み出しを行なうと、無駄な命令先読みが行なわれて命令パイプラインへの命令供給が遅れる。
【0008】
このため、分岐命令コードに該ステップ数SNの情報が含まれているかどうかによらず、命令キャッシュから命令パイプラインへの命令供給が遅れる。VLIWプロセッサ以外のプロセッサにおいても同様に命令キャッシュからの命令の読み出しとデコード処理が必要になるので、このような問題は遅延分岐機能を備えた各種プロセッサにおいて生ずる。
【0009】
本発明の目的は、このような問題点に鑑み、分岐命令コード中に遅延スロット命令のステップ数の情報が含まれているかどうかによらず、遅延スロット命令のステップ数を早期に確認し、かつ、無駄な命令先読みを削減して、分岐ペナルティを軽減することが可能な、遅延分岐機能を備えた情報処理装置を提供することにある。
【0010】
【課題を解決するための手段及びその作用効果】
本発明の一態様では、命令キャッシュと、該命令キャッシュをアドレス指定して該命令キャッシュから命令コードを読み出させる命令読出回路とを有し、遅延分岐機能を備えた情報処理装置において、該命令読出回路は、
分岐命令のアドレスに対応して分岐先アドレス、分岐履歴情報、及び、遅延スロットの命令の最後の位置に関する遅延スロット情報が格納される記憶部を備え、入力アドレスが該分岐命令のアドレスに一致したかどうかのヒット情報、一致した時にはさらに、該分岐履歴情報に基づいた分岐有無の予測情報、該遅延スロット情報、及び、該予測情報が分岐有りを示している時には該分岐先アドレスを出力する分岐予測回路と、
シーケンシャルアドレスを出力するインクリメンタと、
該ヒット情報、該遅延スロット情報及び該予測情報に基づいて、該インクリメンタの出力又は該分岐先アドレスを選択的に出力するアドレス選択回路と、を有する。
【0011】
この構成によれば、該分岐予測回路を用いて分岐先命令の先読みを行なう場合、命令コードをデコードして遅延スロット命令のステップ数を確認することなく、該ステップ数を該記憶部から直ちに読み出すことができるので、該ステップ数が最大値であると仮定することによる無駄な命令先読みも行なわれず、命令パイプラインへの命令供給遅延が防止されて分岐ペナルティが軽減されるという効果を奏する。
【0012】
本発明の他の目的、構成及び効果は以下の説明から明らかになる。
【0013】
【発明の実施の形態】
以下、図面を参照して本発明の一実施形態を説明する。
【0014】
[第1実施形態]
図1は、本発明の第1実施形態の、遅延分岐機能を備えたプロセッサの一部を示す概略ブロック図である。
【0015】
情報処理装置としての該プロセッサは、VLIWプロセッサであり、命令パイプライン10は例えば4つの並列処理ユニットを備え、各ユニットのパイプラインで時間的並列処理が可能であるとともに、空間的並列処理が可能となっている。命令パイプライン10は、各並列処理ユニットについて、命令フェッチ、命令デコード、命令実行、メモリアクセス及びレジスタ書き込みのステージを有する。以下、VLIWに含まれる各命令コードが4バイトの固定長であり、命令パイプライン10の並列処理ユニット数が4であるとする。この場合、命令パイプライン10におけるVLIWの命令長は4×4=16バイトである。
【0016】
図5は、不図示の主記憶装置に格納されているプログラムの一部を、4並列の命令パイプライン10に対応し4スロットに分割して概略記載したものである。
【0017】
プログラム上のVLIWは可変長であり、固定長のようにコンパイラでNOP命令が付加されたものではない。各命令コードはパッキングフラグPFを備えており、PF=‘1’のとき、その命令コードが1つの可変長VLIWの最後の命令ステップであることを示している。図5中の○印は、PF=‘1’であることを示す。例えば先頭アドレス&h10C(&hは16進数であることを示す)、&h110及び&h114の命令コードが1つの可変長VLIWである。
【0018】
図1に戻って、命令キャッシュ11は、入力アドレスAoに対し、該アドレスAoを先頭アドレスとする16バイトの命令を出力する。
【0019】
命令バッファ&VLIW調整回路12は、この出力を保持し、PF=‘1’の命令コードを検出して可変長VLIWの区切りを認識し、可変長VLIWが16バイトより短ければNOP命令を付加することにより16バイトの固定長VLIWに伸長し、命令パイプライン10に供給する。例えば図5において、アドレス&h200〜&H20Fの16バイトが読み出され、次にアドレス&h210〜&H21Fの16バイトが読み出されると、命令バッファ&VLIW調整回路12によりアドレス&h208〜&H213の12バイトが可変長VLIWと認識され、1つの4バイトNOP命令が付加される。アドレス&h214〜&H21Fの12バイトは、次の16バイトを読み出したときに同様に用いられる。
【0020】
命令キャッシュ11に対する読み出しアドレスは、命令読出回路20により生成される。
【0021】
分岐命令は、遅延分岐命令であり、本第1実施形態では、遅延スロット命令のステップ数SNが命令コードに含まれている。例えば、
JZ R1,R2,2
は、レジスタR1の内容が0であるとき、レジスタR2の内容(R2)のアドレスに分岐し、SN=2であることを示している。図5の場合、該遅延分岐命令の後のVLIWの先頭アドレスが&h118、&h124及び&h134の順の命令であるので、アドレス&h118〜&h123のVLIWと、アドレス&h124〜&h133のVIWとが遅延スロット命令である。遅延スロット命令は、分岐命令における分岐の有無にかかわらず実行される。分岐する場合、遅延スロット命令が実行された後に、R2の内容(R2)、例えばアドレス&h208へ進み、分岐しない場合、遅延スロット命令の次のアドレス&h134へ進む。分岐命令と遅延スロット命令とは、命令パイプライン10により時間並列処理されるので、分岐ペナルティが軽減される。
【0022】
16バイト単位で命令キャッシュから命令が読み出されるので、アドレスAoの下位4ビットは0である。したがって、例えばアドレス&h208へ進む場合、この下位4ビットが0にされてAo=&h200となる。
【0023】
図1に戻って、次に命令読出回路20を説明する。命令読出回路20の各構成要素21〜25はいずれも、クロックに同期して動作する。
【0024】
命令アドレスが例えば32ビットである場合、インクリメンタ21の内容は、0である下位4ビットを省略した28ビットである。命令読出回路20で用いられる他のアドレスも同様である。インクリメンタ21は、シケンシャルアドレス出力用であり、その内容は、ロード入力端Lが低レベルのとき、クロックの立ち上がりで所定値、本実施形態では16だけ増加(下位4ビットを省略した値は1だけ増加)する。ロード入力端Lが高レベルのときには、並列入力端Pの値がインクリメンタ21にロードされる。インクリメンタ21の内容は、出力端QからアドレスAiとして出力される。
【0025】
アドレス選択回路22は、インクリメンタ21、分岐予測回路23及び予測後処理回路25からそれぞれ供給されるアドレスAi、Apb及びAabのいずれか1つを選択し、アドレスAoとして出力し、命令キャッシュ11、分岐予測回路23及び遅延バッファ24に供給する。
【0026】
分岐予測回路23は、分岐先バッファ(BTB)241を備えている。BTB241は、RAMであり、図3に示すようなテーブルが格納されている。このテーブルのレコードは、タグ、分岐命令の分岐先アドレス、分岐履歴情報としての有効フラグV、及び、遅延スロット命令のステップ数に関する情報である遅延スロット情報POSのフィールドからなる。
【0027】
有効フラグVは、‘1’/‘0’のときそれぞれ前回の分岐命令で分岐した/しなかったことを示す。入力アドレスAoの下位ビットであるインデックスアドレスAxによりBTB241がアドレス指定される。この指定により読み出されたレコードのうち、タグアドレスAtがアドレスAoの上位ビットと比較され、一致(ヒット)の場合にはヒット信号H/Mが高レベルになり、不一致(ミス)の場合にはヒット信号H/Mが低レベルになる。ヒットは、レコードがBTB241に登録され、かつ、命令キャッシュ11から読み出された後命令バッファ&VLIW調整回路12により認識される次の可変長VLIWに、遅延分岐命令が含まれていることを示す。分岐予測回路23は、ヒット信号H/M、分岐先アドレスApb、有効フラグV及び遅延スロット情報POSを出力し、アドレス選択回路22に供給する。
【0028】
例えば図5において、Ao=&h110のとき、アドレス&h10C〜&h117のVLIWに上記分岐命令が含まれているので、これに対応したレコードがBTBに登録されていれば、ヒット信号H/Mが高レベルになる。この場合、インデックスアドレスAx及びタグアドレスAtはそれぞれAo=&h110の下位ビット及び上位ビット、Apb=(R2)=&h208→&h200、POS=‘010’である。命令ステップ数SNと遅延スロット情報POSの関係は、SN=1、2、3のときそれぞれPOS=‘001’、‘010’、‘100’である。すなわち、命令ステップ数SNは遅延スロット情報POS中の‘1’のビット位置を示している。
【0029】
図2は、図1中のアドレス選択回路22の構成例を示す。
【0030】
アドレス選択回路22は、2つのセレクタ231及び232と、これらの選択制御入力端に制御信号SL1及びSL2を供給する制御回路233とを備えている。セレクタ231は、アドレスAabとApbの一方を選択して出力する。セレクタ232は、アドレスAiとセレクタ231の出力との一方を選択しアドレスAoとして出力する。制御回路233には、ヒット信号H/M、有効フラグV、遅延スロット情報POS及び予測エラー信号ERが供給され、制御回路233は、これらに基づいて選択制御信号SL1及びSL2並びにロード信号LDを生成し出力する。
【0031】
図4は、予測エラー信号ERが低レベルであるときの制御回路233の動作を示すフローチャートである。
【0032】
(S1)ヒット信号H/Mが高レベルであればステップS2へ進み、そうでなければステップS3へ進む。
【0033】
(S2)制御回路233はセレクタ232に対し、クロックに同期してアドレスAiを選択させ、ステップS1へ戻る。これにより、Ao=Aiとなる。
【0034】
但し、例えば図5のアドレス&h140〜&h14Fの命令が命令キャッシュ11から前回読み出されていれば、次のVLIWがアドレス&h14C〜&h14Fであるので、命令バッファ&VLIW調整回路12からの制御信号STOPにより、インクリメンタ21へのクロック供給が1サイクル分停止されると共に、命令キャッシュ11での読み出し動作が停止される。
【0035】
(S3)遅延スロット情報POSをPOSXに代入して保持する。POSXは制御回路233内のシフトレジスタである。
【0036】
(S4)シフトレジスタPOSXが0でなければステップS5へ進み、0であればステップS7へ進む。
【0037】
(S5)制御回路233はセレクタ232に対し、クロックに同期して、遅延スロット命令のアドレスであるアドレスAiを選択させる。これにより、Ao=Aiとなる。
【0038】
但し、次に読み出すべきVLIWが前回読み出されていれば、上記同様の停止が行われる。
【0039】
(S6)シフトレジスタPOSXを1ビット右にシフトさせてステップS4へ戻る。例えばPOSX=‘010’の場合、このシフトにより‘001’となる。
【0040】
このようなステップS4〜S6のループにより、遅延スロットのVLIW命令アドレスが順次読み出される。
【0041】
(S7)有効フラグVが高レベルであればステップS8へ進み、そうでなければステップS1へ戻る。
【0042】
(S8)制御回路233はクロックに同期して、セレクタ231及び232に対しそれぞれアドレスApb及びセレクタ231の出力を選択させる。これにより、Ao=Apbとなる。また、ロード信号LDのパルスをインクリメンタ21のロード入力端Lに供給して、分岐先アドレスApbをインクリメンタ21にロードさせる。
【0043】
例えば図5において、Ao=&h110が分岐予測回路23に供給されてヒット信号H/Mが高レベルになり、ステップS1、S3、S4及びS5へ進んでAi=&h120が選択され、これがアドレスAoとして命令キャッシュ11に供給されて、アドレス&h120〜&h12Fの内容が命令キャッシュ11から読み出される。次にステップS6でシフトレジスタPOSXが1ビット右シフトされて‘001’となる。ステップS4、S5を通り、Ai=&h130が選択され、これがアドレスAoとして命令キャッシュ11に供給されて、アドレス&h130〜&h13Fの内容が命令キャッシュ11から読み出される。次にステップS6でシフトレジスタPOSXが1ビット右シフトされて‘000’となる。ステップS7、S8へ進み、Apb=&h208→&h200が選択され、Ao=&h200が命令キャッシュ11に供給されてアドレス&h200〜&h20Fの内容が読み出されると共に、インクリメンタ21に&h200がロードされる。アドレス&h200〜&h20Fの内容には、PF=‘1’の命令コードが1つしか含まれていないが、次にステップS1からS2へ進んだ時にアドレス&h210〜&h21Fの内容が命令キャッシュ11から読み出され、命令バッファ&VLIW調整回路12によりアドレス&h208〜&h213のVLIWが認識される。
【0044】
本第1実施形態によれば、分岐予測回路23を用いて分岐先命令の先読みを行なう場合、命令コードをデコードして遅延スロット命令のステップ数SNを確認することなく、該ステップ数SNの情報POSをBTB241から直ちに読み出すことができるので、該ステップ数SNが最大値であると仮定することによる無駄な命令先読みも行なわれず、命令パイプライン10への命令供給遅延が防止されて分岐ペナルティが軽減されるという効果を奏する。
【0045】
図1に戻って、アドレスAo、ヒット信号H/M及び有効フラグVは、FIFOの遅延バッファ24に保持される。他方、命令パイプライン10のデコードステージが分岐命令を示している場合、その分岐先アドレスAb及び上記命令ステップ数SNが予測後処理回路25に供給され、さらに、命令パイプライン10の実行ステージで分岐有無の結果、すなわち分岐条件の成立又は不成立を示す分岐判定結果を示すフラグVrが、予測後処理回路25に供給される。Vr=‘1’は分岐有りを示し、Vr=0は分岐無しを示す。予測後処理回路25は、この分岐命令に対応したアドレスAo、ヒット信号H/M及び有効フラグV(有効フラグVは、ヒット信号H/Mが高レベルのときのみ意味を有する)を遅延バッファ24から読み出す。以下、予測後処理回路25でのこれらSN、Ao、H/M及びVをそれぞれ[]付きの[SN]、[Ao]、[H/M]及び[V]で表す。
【0046】
予測後処理回路25は、ヒット信号[H/M]が低レベルである場合には、この分岐命令の上記レコードが分岐先バッファ241に存在していないので、これを分岐先バッファ241に書き込む。この場合、分岐先バッファ241の有効フラグVには、フラグVrの値が書き込まれる。予測後処理回路25は、この動作と並行して、予測エラー信号ERを高レベルにし、分岐先アドレスAbをアドレスAabとしてセレクタ231に供給する。
【0047】
予測後処理回路25は、ヒット信号[H/M]が高レベルで[V]≠Vrである場合、分岐先バッファ241中の対応する有効フラグVをフラグVrの値に書き換え、この動作と並行して、予測エラー信号ERを高レベルにし、アドレスAabをセレクタ231に供給する。予測後処理回路25はこの際、[V]=‘0’であれば分岐アドレスAbをアドレスAabとし、[V]=‘1’であれば[Ao]と[SN]とに基づいて遅延スロットの次のアドレスを求め、これをアドレスAabとする。
【0048】
図2において、制御回路233は、予測エラー信号ERが高レベルのとき、セレクタ231及び232に対しそれぞれアドレスAab及びセレクタ231の出力を選択させ、また、ロード信号LDを正パルスにしてアドレスAo=Aabを図1のインクリメンタ21にロードさせる。
【0049】
例えば図5において、アドレス&h10C〜&h114のVLIWに含まれるアドレス&h114の分岐命令が分岐すると予測され、実際には分岐しなかった場合には、図1の予測後処理回路25により遅延スロットの次のアドレス&h134→&h130が求められ、これがアドレスAabとしてアドレス選択回路22により選択され、アドレスAoとして出力される。このアドレスAo=&h130は、インクリメンタ21にロードされる。従って、アドレスAoは、&h130、&h140、・・・と順次変化していく。
【0050】
アドレス&h10C〜&h114のVLIWに含まれるアドレス&h114の分岐命令が分岐しないとBTBにより予測され、実際には分岐した場合には、Ab=&h208→&h200がアドレスAabとしてアドレス選択回路22により選択され、アドレスAoとして出力される。このアドレスAo=&h200は、インクリメンタ21にロードされる。従って、アドレスAoは、&h200、&h210、・・・と順次変化していく。
【0051】
[第2実施形態]
次に、遅延スロット命令のステップ数SNの情報が分岐命令コードに含まれていない場合を本発明の第2実施形態として説明する。
【0052】
図6は、第2実施形態のプログラムの一部を、図1中の4並列の命令パイプライン10に対応し4スロットに分割して概略記載したものである。
【0053】
先頭アドレス&h114の分岐命令
JZ R1,R2
自体は、該ステップ数SNが含まれていない他は、図5中の上記分岐命令と同一である。該ステップ数SNの替わりに、パッキングフラグPFが、遅延スロット命令の最終ステップを示すものとして用いられる。図6では、分岐命令が含まれたアドレス&h10C〜&h117のVLIWの次から最初にPF=1となる命令コードまで、すなわちアドレス&h118〜&h133が遅延スロット命令である。
【0054】
上記第1実施形態と同様に、アドレス&h10C〜&h117のVLIWは、アドレス&h120〜&h12Fの内容を命令キャッシュから読み出した時に認識される。これからアドレスAoがインクリメンタ21で「2回」インクリメントされて命令キャッシュ11から読み出されたアドレス&h130〜&h13FにPF=‘1’が存在するので、図1の予測後処理回路25によりこの「2」が‘010’に変換されて図3のBTB241の遅延スロット情報POSに登録される。上記第1実施形態のステップ数SNと遅延スロット情報POSの関係と同様に、「2」は遅延スロット情報POS中の‘1’のビット位置を示している。
【0055】
予測エラー信号ERが低レベルであるときの図2中の制御回路233の動作は、図4のフローチャートと同一である。ステップS5によりアドレス&h130〜&h13Fの内容が読み出された時(上記「2回」に対応)、命令バッファ&VLIW調整回路12により、PF=‘1’の命令コードが遅延スロット命令の最終ステップであると判定される。
【0056】
遅延スロット命令中のVLIWの区切りは、該最終ステップ以外は、アドレスの下位4ビットが&hFである。図6の場合、命令バッファ&VLIW調整回路12により、
アドレス&h118〜&h11F
アドレス&h120〜&h12F
アドレス&h130〜&h133
の3つの命令ブロックがそれぞれVLIWであると認識される。
【0057】
他の点は、上記第1実施形態と同一である。
【0058】
本第2実施形態によれば、遅延スロット命令のステップ数SNの情報が分岐命令コードに含まれていないので、命令コードが簡単になり、これに伴って命令パイプライン10の構成が第1実施形態よりも簡単になる。
【0059】
なお、本発明には外にも種々の変形例が含まれる。
【0060】
例えば、上記実施形態では遅延分岐機能を備えたプロセッサが可変長VLIWプロセッサである場合を説明したが、本発明はBTBに遅延スロット情報POSを格納してこれを利用することに特徴があり、固定長VLIWプロセッサや、VLIWプロセッサ以外であって各種遅延分岐機能を備えたプロセッサに適用可能である。
【0061】
また、分岐予測回路23は、BTB中の分岐の履歴(上記実施形態では有効フラグV)を複数ビットとし、分岐有無が交互に繰り返されるのを認識して分岐を予測したり、過去の分岐有無の統計結果に基づいて分岐を予測する構成であってもよい。
【図面の簡単な説明】
【図1】本発明の一実施形態の、遅延分岐機能を備えたプロセッサの一部を示す概略ブロック図である。
【図2】図1中のアドレス選択回路22の構成例を示す図である。
【図3】分岐先バッファ(BTB)に格納されるテーブルの構成を示す説明図である。
【図4】予測エラー信号ERが低レベルであるときの図2中の制御回路233の動作を示すフローチャートである。
【図5】プログラムの一部を、図1中の4並列の命令パイプライン10に対応し4スロットに分割して概略記載した説明図である。
【図6】本発明の第2実施形態のプログラムの一部を、図1中の4並列の命令パイプライン10に対応し4スロットに分割して概略記載した説明図である。
【符号の説明】
10 命令パイプライン
11 命令キャッシュ
12 命令バッファ&VLIW調整回路
20 命令読出回路
27 増分メモリ
21 インクリメンタ
22 アドレス選択回路
23 分岐予測回路
25 予測後処理回路
24 遅延バッファ
241 分岐先バッファ
231、232 セレクタ
233 制御回路
V 有効フラグ
H/M ヒット信号
POS 遅延スロット情報
Ai、Ao、Aab、Apb アドレス
LD ロード信号
ER エラー信号
SN 命令ステップ数
Vr フラグ
Ax インデックスアドレス
At タグアドレス

Claims (10)

  1. 命令キャッシュと、該命令キャッシュをアドレス指定して該命令キャッシュから命令コードを読み出させる命令読出回路とを有し、遅延分岐機能を備えた情報処理装置において、該命令読出回路は、
    分岐命令のアドレスに対応して分岐先アドレス、分岐履歴情報、及び、遅延スロットの命令の最後の位置に関する遅延スロット情報が格納される記憶部を備え、入力アドレスが該分岐命令のアドレスに一致したかどうかのヒット情報、一致した時にはさらに、該分岐履歴情報に基づいた分岐有無の予測情報、該遅延スロット情報、及び、該予測情報が分岐有りを示している時には該分岐先アドレスを出力する分岐予測回路と、
    シーケンシャルアドレスを出力するインクリメンタと、
    該ヒット情報、該遅延スロット情報及び該予測情報に基づいて、該インクリメンタの出力又は該分岐先アドレスを選択的に出力するアドレス選択回路と、
    を有することを特徴とする、遅延分岐機能を備えた情報処理装置。
  2. 該アドレス選択回路は、
    該インクリメンタの出力と該分岐先アドレスとを選択的に出力して該分岐予測回路に供給するセレクタと、
    該セレクタに対しクロックに同期して、該ヒット情報が不一致を示している場合には該インクリメンタの出力を選択させ、該ヒット情報が一致を示している場合には、該遅延スロット情報に基づいて所定回数該インクリメンタの出力を選択させ、該予測情報が分岐有りを示している時にはさらに、該分岐先アドレスを選択させ且つ該インクリメンタに該分岐先アドレスをロードさせる選択制御回路と、
    を有することを特徴とする請求項1記載の、遅延分岐機能を備えた情報処理装置。
  3. 該ヒット情報が不一致を示している時に該ヒット情報に対応したアドレスの命令がデコードされて分岐命令であることが分かった場合には、該アドレスに対応して該分岐命令の分岐先アドレス及び該遅延スロット情報を該分岐先バッファに格納させ、該分岐命令の分岐条件判定結果に基づいて該分岐先バッファの対応する該分岐履歴情報を更新する予測後処理回路をさらに有することを特徴とする請求項1又は2記載の、遅延分岐機能を備えた情報処理装置。
  4. 該予測後処理回路はさらに、該ヒット情報が一致を示し且つ該予測情報が該分岐条件判定結果と異なる場合に、エラー信号を活性にし、該分岐条件判定結果により次に実行すべきアドレスを出力することを特徴とする請求項3記載の、遅延分岐機能を備えた情報処理装置。
  5. 該アドレス選択回路は、
    該エラー信号が不活性のとき、該ヒット情報、該遅延スロット情報及び該予測情報に基づいて、該インクリメンタの出力又は該分岐先アドレスを選択的に出力し、
    該エラー信号が活性のとき、該予測後処理回路からの該次に実行すべきアドレスを出力する、
    ことを特徴とする請求項4記載の、遅延分岐機能を備えた情報処理装置。
  6. 該セレクタの出力、該ヒット情報及び分岐履歴情報を遅延させて該予測後処理回路に供給する遅延バッファをさらに有することを特徴とする請求項3乃至5のいずれか1つに記載の、遅延分岐機能を備えた情報処理装置。
  7. VLIWが供給される命令パイプラインと、
    該命令キャッシュから読み出された1つ又は複数の命令ブロックに含まれる各命令コード中のパッキングフラグの値に基づいて、VLIWの区切りを判定し、VLIWの命令幅が最大値より小さい場合にダミー命令を付加して該命令幅を最大値にし、該命令パイプラインに供給する命令バッファ&VLIW調整回路と、をさらに有することを特徴とする請求項1乃至6のいずれか1つに記載の、遅延分岐機能を備えた情報処理装置。
  8. 命令セットに、可変長遅延スロットの遅延分岐命令を含み、該遅延分岐命令には該可変長遅延スロットの命令ステップ数の情報が含まれており、
    該命令バッファ&VLIW調整回路は、該遅延分岐命令に後続する該ステップ数の命令を遅延スロットと判定して、該分岐命令の分岐条件の成立不成立に拘わらず該命令パイプラインに供給することを特徴とする請求項7記載の、遅延分岐機能を備えた情報処理装置。
  9. 該命令バッファ&VLIW調整回路は、分岐命令に後続する命令コードのうち最初に該パッキングフラグが該区切りを示している命令コードまでを遅延スロットと判定して、該分岐命令の分岐条件の成立不成立に拘わらず該命令パイプラインにVLIWを供給することを特徴とする請求項7記載の、遅延分岐機能を備えた情報処理装置。
  10. 該命令バッファ&VLIW調整回路は、該ブロックの区切りを該遅延スロットに含まれるVLIWの区切りと判定することを特徴とする請求項9記載の、遅延分岐機能を備えた情報処理装置。
JP2002162445A 2002-06-04 2002-06-04 遅延分岐機能を備えた情報処理装置 Expired - Fee Related JP3738842B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2002162445A JP3738842B2 (ja) 2002-06-04 2002-06-04 遅延分岐機能を備えた情報処理装置
US10/438,986 US7546445B2 (en) 2002-06-04 2003-05-16 Information processor having delayed branch function with storing delay slot information together with branch history information
DE60322785T DE60322785D1 (de) 2002-06-04 2003-05-22 Datenprozessor mit verzögerter Verzweigung
EP03253206A EP1369776B1 (en) 2002-06-04 2003-05-22 Information processor having delayed branch function

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002162445A JP3738842B2 (ja) 2002-06-04 2002-06-04 遅延分岐機能を備えた情報処理装置

Publications (2)

Publication Number Publication Date
JP2004013255A JP2004013255A (ja) 2004-01-15
JP3738842B2 true JP3738842B2 (ja) 2006-01-25

Family

ID=29545680

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002162445A Expired - Fee Related JP3738842B2 (ja) 2002-06-04 2002-06-04 遅延分岐機能を備えた情報処理装置

Country Status (4)

Country Link
US (1) US7546445B2 (ja)
EP (1) EP1369776B1 (ja)
JP (1) JP3738842B2 (ja)
DE (1) DE60322785D1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1378824A1 (en) * 2002-07-02 2004-01-07 STMicroelectronics S.r.l. A method for executing programs on multiple processors and corresponding processor system
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
JP2008071061A (ja) * 2006-09-13 2008-03-27 Fujitsu Ltd 情報処理装置
US8959500B2 (en) 2006-12-11 2015-02-17 Nytell Software LLC Pipelined processor and compiler/scheduler for variable number branch delay slots
US8495341B2 (en) * 2010-02-17 2013-07-23 International Business Machines Corporation Instruction length based cracking for instruction of variable length storage operands
WO2013069551A1 (ja) 2011-11-09 2013-05-16 日本電気株式会社 デジタル信号プロセッサ、プログラム制御方法、および制御プログラム
US20140180848A1 (en) * 2012-12-20 2014-06-26 Wal-Mart Stores, Inc. Estimating Point Of Sale Wait Times
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
US9535701B2 (en) * 2014-01-29 2017-01-03 Telefonaktiebolaget Lm Ericsson (Publ) Efficient use of branch delay slots and branch prediction in pipelined computer architectures
US9430245B2 (en) 2014-03-28 2016-08-30 Telefonaktiebolaget Lm Ericsson (Publ) Efficient branch predictor history recovery in pipelined computer architectures employing branch prediction and branch delay slots of variable size
EP3175355B1 (en) * 2014-07-30 2018-07-18 Linear Algebra Technologies Limited Method and apparatus for instruction prefetch

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367703A (en) * 1993-01-08 1994-11-22 International Business Machines Corporation Method and system for enhanced branch history prediction accuracy in a superscalar processor system
US5706459A (en) 1994-01-06 1998-01-06 Fujitsu Limited Processor having a variable number of stages in a pipeline
US5774737A (en) * 1995-10-13 1998-06-30 Matsushita Electric Industrial Co., Ltd. Variable word length very long instruction word instruction processor with word length register or instruction number register
JP3439033B2 (ja) * 1996-07-08 2003-08-25 株式会社日立製作所 割り込み制御装置及びプロセッサ
EP1050811A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Branching in a computer system
US6275929B1 (en) * 1999-05-26 2001-08-14 Infineon Technologies Ag L. Gr. Delay-slot control mechanism for microprocessors
US6415376B1 (en) * 2000-06-16 2002-07-02 Conexant Sytems, Inc. Apparatus and method for issue grouping of instructions in a VLIW processor

Also Published As

Publication number Publication date
EP1369776A2 (en) 2003-12-10
US20030226003A1 (en) 2003-12-04
EP1369776B1 (en) 2008-08-13
US7546445B2 (en) 2009-06-09
DE60322785D1 (de) 2008-09-25
JP2004013255A (ja) 2004-01-15
EP1369776A3 (en) 2006-05-31

Similar Documents

Publication Publication Date Title
US5706459A (en) Processor having a variable number of stages in a pipeline
EP1157329B1 (en) Methods and apparatus for branch prediction using hybrid history with index sharing
JP3738842B2 (ja) 遅延分岐機能を備えた情報処理装置
EP1745367B1 (en) Pipelined asynchronous instruction processor circuit
EP4152146A1 (en) Data processing method and device, and storage medium
US4992932A (en) Data processing device with data buffer control
EP1483675B1 (en) Methods and apparatus for multi-processing execution of computer instructions
JP2002041284A (ja) 拡張命令語縮約装置
JPH0769824B2 (ja) 複数命令同時処理方式
US7543135B2 (en) Processor and method for selectively processing instruction to be read using instruction code already in pipeline or already stored in prefetch buffer
US20040111592A1 (en) Microprocessor performing pipeline processing of a plurality of stages
US20080065870A1 (en) Information processing apparatus
US6862680B2 (en) Microprocessor processing specified instructions as operands
US6266764B1 (en) Program controller for switching between first program and second program
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
EP1069499A2 (en) Data processing apparatus and method for simultaneously executing plural instructions
US20060259752A1 (en) Stateless Branch Prediction Scheme for VLIW Processor
US7124281B1 (en) Processing system having sequential address indicator signals
JP2002351658A (ja) 演算処理装置
JPH05307483A (ja) レジスタ書き込み制御方法および回路
JPH07200294A (ja) 遅延分岐実行機能を備えたプロセッサ装置
JPH07191845A (ja) 即値データ転送装置
JPH02255918A (ja) 命令取出し制御方式
JPH07219772A (ja) データキャッシュ機構
JP2007102596A (ja) 中央処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041124

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051025

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051025

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20081111

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20091111

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101111

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101111

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111111

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111111

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20121111

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121111

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20131111

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees