JP2004013255A - 遅延分岐機能を備えた情報処理装置 - Google Patents
遅延分岐機能を備えた情報処理装置 Download PDFInfo
- Publication number
- JP2004013255A JP2004013255A JP2002162445A JP2002162445A JP2004013255A JP 2004013255 A JP2004013255 A JP 2004013255A JP 2002162445 A JP2002162445 A JP 2002162445A JP 2002162445 A JP2002162445 A JP 2002162445A JP 2004013255 A JP2004013255 A JP 2004013255A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- information
- address
- delay
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims description 20
- 230000010365 information processing Effects 0.000 claims description 19
- 230000006870 function Effects 0.000 claims description 17
- 230000003111 delayed effect Effects 0.000 claims description 13
- 238000012856 packing Methods 0.000 claims description 8
- 230000001934 delay Effects 0.000 claims 1
- 238000012805 post-processing Methods 0.000 claims 1
- 238000000034 method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 102220575373 Ovarian cancer G-protein coupled receptor 1_H20F_mutation Human genes 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction 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)
Abstract
【解決手段】分岐先バッファ241には、分岐命令のアドレスに対応して分岐先アドレスApb、分岐履歴情報としての有効ビットV及び遅延スロット命令の最後の位置に関する遅延スロット情報POSが格納されている。分岐予測回路24は、入力アドレスAoが分岐命令のアドレスに一致したかどうかのヒット情報H/M、分岐予測ビットでもある有効ビット、該情報POS及び分岐先アドレスApbを出力する。アドレス選択回路23は、予測エラー信号ERRが不活性の時、ヒット情報H/M、遅延スロット情報POS及び有効ビットVに基づき、インクリメンタ22の出力又は分岐先アドレスApbを選択的に出力する。
【選択図】 図1
Description
【発明の属する技術分野】
本発明は、遅延分岐機能を備えた各種情報処理装置に係り、特に、遅延分岐機能を備えた可変長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記載の、遅延分岐機能を備えた情報処理装置。 - 該ヒット情報が不一致を示している時に該ヒット情報に対応したアドレスの命令がデコードされて分岐命令であることが分かった場合には、該アドレスに対応して該分岐命令の分岐先アドレス及び該遅延スロット情報を該分岐先バッファに格納させ、該分岐命令の分岐条件判定結果に基づいて該分岐先バッファの対応する該分岐履歴情報を更新する予測後処理回路をさらに有することを特徴とする請求項1又は2記載の、遅延分岐機能を備えた情報処理装置。
- 該予測後処理回路はさらに、該ヒット情報が一致を示し且つ該予測情報が該分岐条件判定結果と異なる場合に、エラー信号を活性にし、該分岐条件判定結果により次に実行すべきアドレスを出力することを特徴とする請求項3記載の、遅延分岐機能を備えた情報処理装置。
- 該アドレス選択回路は、
該エラー信号が不活性のとき、該ヒット情報、該遅延スロット情報及び該予測情報に基づいて、該インクリメンタの出力又は該分岐先アドレスを選択的に出力し、
該エラー信号が活性のとき、該予測後処理回路からの該次に実行すべきアドレスを出力する、
ことを特徴とする請求項4記載の、遅延分岐機能を備えた情報処理装置。 - 該セレクタの出力、該ヒット情報及び分岐履歴情報を遅延させて該予測後処理回路に供給する遅延バッファをさらに有することを特徴とする請求項3乃至5のいずれか1つに記載の、遅延分岐機能を備えた情報処理装置。
- VLIWが供給される命令パイプラインと、
該命令キャッシュから読み出された1つ又は複数の命令ブロックに含まれる各命令コード中のパッキングフラグの値に基づいて、VLIWの区切りを判定し、VLIWの命令幅が最大値より小さい場合にダミー命令を付加して該命令幅を最大値にし、該命令パイプラインに供給する命令バッファ&VLIW調整回路と、
をさらに有することを特徴とする請求項1乃至6のいずれか1つに記載の、遅延分岐機能を備えた情報処理装置。 - 命令セットに、可変長遅延スロットの遅延分岐命令を含み、該遅延分岐命令には該可変長遅延スロットの命令ステップ数の情報が含まれており、
該命令バッファ&VLIW調整回路は、該遅延分岐命令に後続する該ステップ数の命令を遅延スロットと判定して、該分岐命令の分岐条件の成立不成立に拘わらず該命令パイプラインに供給することを特徴とする請求項7記載の、遅延分岐機能を備えた情報処理装置。 - 該命令バッファ&VLIW調整回路は、分岐命令に後続する命令コードのうち最初に該パッキングフラグが該区切りを示している命令コードまでを遅延スロットと判定して、該分岐命令の分岐条件の成立不成立に拘わらず該命令パイプラインにVLIWを供給することを特徴とする請求項7記載の、遅延分岐機能を備えた情報処理装置。
- 該命令バッファ&VLIW調整回路は、該ブロックの区切りを該遅延スロットに含まれるVLIWの区切りと判定することを特徴とする請求項9記載の、遅延分岐機能を備えた情報処理装置。
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 |
EP03253206A EP1369776B1 (en) | 2002-06-04 | 2003-05-22 | Information processor having delayed branch function |
DE60322785T DE60322785D1 (de) | 2002-06-04 | 2003-05-22 | Datenprozessor mit verzögerter Verzweigung |
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 true JP2004013255A (ja) | 2004-01-15 |
JP3738842B2 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) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008071061A (ja) * | 2006-09-13 | 2008-03-27 | Fujitsu Ltd | 情報処理装置 |
US9703559B2 (en) | 2011-11-09 | 2017-07-11 | Nec Corporation | Digital signal processor, program control method, and control program |
JP2017525046A (ja) * | 2014-07-30 | 2017-08-31 | リニア アルジェブラ テクノロジーズ リミテッド | ベクトルプロセッサ |
US10572252B2 (en) | 2013-08-08 | 2020-02-25 | Movidius Limited | Variable-length instruction buffer management |
US11768689B2 (en) | 2013-08-08 | 2023-09-26 | Movidius Limited | Apparatus, systems, and methods for low power computational imaging |
Families Citing this family (7)
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 |
EP2106584A1 (en) | 2006-12-11 | 2009-10-07 | Nxp B.V. | 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 |
US20140180848A1 (en) * | 2012-12-20 | 2014-06-26 | Wal-Mart Stores, Inc. | Estimating Point Of Sale Wait Times |
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 |
Family Cites Families (7)
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 |
-
2002
- 2002-06-04 JP JP2002162445A patent/JP3738842B2/ja not_active Expired - Fee Related
-
2003
- 2003-05-16 US US10/438,986 patent/US7546445B2/en not_active Expired - Fee Related
- 2003-05-22 EP EP03253206A patent/EP1369776B1/en not_active Expired - Lifetime
- 2003-05-22 DE DE60322785T patent/DE60322785D1/de not_active Expired - Lifetime
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008071061A (ja) * | 2006-09-13 | 2008-03-27 | Fujitsu Ltd | 情報処理装置 |
US9703559B2 (en) | 2011-11-09 | 2017-07-11 | Nec Corporation | Digital signal processor, program control method, and control program |
US10572252B2 (en) | 2013-08-08 | 2020-02-25 | Movidius Limited | Variable-length instruction buffer management |
US11579872B2 (en) | 2013-08-08 | 2023-02-14 | Movidius Limited | Variable-length instruction buffer management |
US11768689B2 (en) | 2013-08-08 | 2023-09-26 | Movidius Limited | Apparatus, systems, and methods for low power computational imaging |
JP2017525046A (ja) * | 2014-07-30 | 2017-08-31 | リニア アルジェブラ テクノロジーズ リミテッド | ベクトルプロセッサ |
Also Published As
Publication number | Publication date |
---|---|
US20030226003A1 (en) | 2003-12-04 |
DE60322785D1 (de) | 2008-09-25 |
US7546445B2 (en) | 2009-06-09 |
EP1369776B1 (en) | 2008-08-13 |
EP1369776A2 (en) | 2003-12-10 |
JP3738842B2 (ja) | 2006-01-25 |
EP1369776A3 (en) | 2006-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7159103B2 (en) | Zero-overhead loop operation in microprocessor having instruction buffer | |
JP2744890B2 (ja) | ブランチ予測式データ処理装置および動作方法 | |
JP2746549B2 (ja) | コンピュータシステム及びその動作方法 | |
US6272623B1 (en) | Methods and apparatus for branch prediction using hybrid history with index sharing | |
US10664280B2 (en) | Fetch ahead branch target buffer | |
EP0357188B1 (en) | Pipelined processor | |
JP3738842B2 (ja) | 遅延分岐機能を備えた情報処理装置 | |
JP4134179B2 (ja) | ソフトウエアによる動的予測方法および装置 | |
EP1483675A1 (en) | Methods and apparatus for multi-processing execution of computer instructions | |
US7543135B2 (en) | Processor and method for selectively processing instruction to be read using instruction code already in pipeline or already stored in prefetch buffer | |
JPWO2004068337A1 (ja) | 情報処理装置 | |
US6862680B2 (en) | Microprocessor processing specified instructions as operands | |
US20090070569A1 (en) | Branch prediction device,branch prediction method, and microprocessor | |
JP2002024008A (ja) | データ処理装置およびプログラム変換装置 | |
JP3915019B2 (ja) | Vliwプロセッサ、プログラム生成装置、および記録媒体 | |
US20230205535A1 (en) | Optimization of captured loops in a processor for optimizing loop replay performance | |
US20040019772A1 (en) | Microprocessor | |
JP3100705B2 (ja) | マイクロプロセッサ内の命令準備のための装置 | |
JPH08292887A (ja) | 命令の分岐方法およびプロセッサ | |
JP2005149297A (ja) | プロセッサおよびそのアセンブラ | |
JP2001034474A (ja) | データ処理装置及びデータ処理方法 | |
US7124281B1 (en) | Processing system having sequential address indicator signals | |
JPH02255918A (ja) | 命令取出し制御方式 | |
JPH07191845A (ja) | 即値データ転送装置 | |
JPH06301538A (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 |