(57)【要約】【課題】分岐命令をデコードせずに遅延スロット命令のステップ数を早期に確認し、かつ、無駄な命令先読みを削減して、分岐ペナルティを軽減する。【解決手段】分岐先バッファ２４１には、分岐命令のアドレスに対応して分岐先アドレスＡｐｂ、分岐履歴情報としての有効ビットＶ及び遅延スロット命令の最後の位置に関する遅延スロット情報ＰＯＳが格納されている。分岐予測回路２４は、入力アドレスＡｏが分岐命令のアドレスに一致したかどうかのヒット情報Ｈ／Ｍ、分岐予測ビットでもある有効ビット、該情報ＰＯＳ及び分岐先アドレスＡｐｂを出力する。アドレス選択回路２３は、予測エラー信号ＥＲＲが不活性の時、ヒット情報Ｈ／Ｍ、遅延スロット情報ＰＯＳ及び有効ビットＶに基づき、インクリメンタ２２の出力又は分岐先アドレスＡｐｂを選択的に出力する。【選択図】　　　　　図１
2004013255.tif 000002
【特許請求の範囲】
【請求項１】
命令キャッシュと、該命令キャッシュをアドレス指定して該命令キャッシュから命令コードを読み出させる命令読出回路とを有し、遅延分岐機能を備えた情報処理装置において、該命令読出回路は、
分岐命令のアドレスに対応して分岐先アドレス、分岐履歴情報、及び、遅延スロットの命令の最後の位置に関する遅延スロット情報が格納される記憶部を備え、入力アドレスが該分岐命令のアドレスに一致したかどうかのヒット情報、一致した時にはさらに、該分岐履歴情報に基づいた分岐有無の予測情報、該遅延スロット情報、及び、該予測情報が分岐有りを示している時には該分岐先アドレスを出力する分岐予測回路と、
シーケンシャルアドレスを出力するインクリメンタと、
該ヒット情報、該遅延スロット情報及び該予測情報に基づいて、該インクリメンタの出力又は該分岐先アドレスを選択的に出力するアドレス選択回路と、
を有することを特徴とする、遅延分岐機能を備えた情報処理装置。
【請求項２】
該アドレス選択回路は、
該インクリメンタの出力と該分岐先アドレスとを選択的に出力して該分岐予測回路に供給するセレクタと、
該セレクタに対しクロックに同期して、該ヒット情報が不一致を示している場合には該インクリメンタの出力を選択させ、該ヒット情報が一致を示している場合には、該遅延スロット情報に基づいて所定回数該インクリメンタの出力を選択させ、該予測情報が分岐有りを示している時にはさらに、該分岐先アドレスを選択させ且つ該インクリメンタに該分岐先アドレスをロードさせる選択制御回路と、
を有することを特徴とする請求項１記載の、遅延分岐機能を備えた情報処理装置。
【請求項３】
該ヒット情報が不一致を示している時に該ヒット情報に対応したアドレスの命令がデコードされて分岐命令であることが分かった場合には、該アドレスに対応して該分岐命令の分岐先アドレス及び該遅延スロット情報を該分岐先バッファに格納させ、該分岐命令の分岐条件判定結果に基づいて該分岐先バッファの対応する該分岐履歴情報を更新する予測後処理回路をさらに有することを特徴とする請求項１又は２記載の、遅延分岐機能を備えた情報処理装置。
【請求項４】
該予測後処理回路はさらに、該ヒット情報が一致を示し且つ該予測情報が該分岐条件判定結果と異なる場合に、エラー信号を活性にし、該分岐条件判定結果により次に実行すべきアドレスを出力することを特徴とする請求項３記載の、遅延分岐機能を備えた情報処理装置。
【請求項５】
該アドレス選択回路は、
該エラー信号が不活性のとき、該ヒット情報、該遅延スロット情報及び該予測情報に基づいて、該インクリメンタの出力又は該分岐先アドレスを選択的に出力し、
該エラー信号が活性のとき、該予測後処理回路からの該次に実行すべきアドレスを出力する、
ことを特徴とする請求項４記載の、遅延分岐機能を備えた情報処理装置。
【請求項６】
該セレクタの出力、該ヒット情報及び分岐履歴情報を遅延させて該予測後処理回路に供給する遅延バッファをさらに有することを特徴とする請求項３乃至５のいずれか１つに記載の、遅延分岐機能を備えた情報処理装置。
【請求項７】
ＶＬＩＷが供給される命令パイプラインと、
該命令キャッシュから読み出された１つ又は複数の命令ブロックに含まれる各命令コード中のパッキングフラグの値に基づいて、ＶＬＩＷの区切りを判定し、ＶＬＩＷの命令幅が最大値より小さい場合にダミー命令を付加して該命令幅を最大値にし、該命令パイプラインに供給する命令バッファ＆ＶＬＩＷ調整回路と、
をさらに有することを特徴とする請求項１乃至６のいずれか１つに記載の、遅延分岐機能を備えた情報処理装置。
【請求項８】
命令セットに、可変長遅延スロットの遅延分岐命令を含み、該遅延分岐命令には該可変長遅延スロットの命令ステップ数の情報が含まれており、
該命令バッファ＆ＶＬＩＷ調整回路は、該遅延分岐命令に後続する該ステップ数の命令を遅延スロットと判定して、該分岐命令の分岐条件の成立不成立に拘わらず該命令パイプラインに供給することを特徴とする請求項７記載の、遅延分岐機能を備えた情報処理装置。
【請求項９】
該命令バッファ＆ＶＬＩＷ調整回路は、分岐命令に後続する命令コードのうち最初に該パッキングフラグが該区切りを示している命令コードまでを遅延スロットと判定して、該分岐命令の分岐条件の成立不成立に拘わらず該命令パイプラインにＶＬＩＷを供給することを特徴とする請求項７記載の、遅延分岐機能を備えた情報処理装置。
【請求項１０】
該命令バッファ＆ＶＬＩＷ調整回路は、該ブロックの区切りを該遅延スロットに含まれるＶＬＩＷの区切りと判定することを特徴とする請求項９記載の、遅延分岐機能を備えた情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、遅延分岐機能を備えた各種情報処理装置に係り、特に、遅延分岐機能を備えた可変長ＶＬＩＷ情報処理装置に関する。
【０００２】
【従来の技術】
プロセッサでは、動作周波数が高くなるにつれてパイプライン段数が多くなり、分岐命令によるパイプラインの乱れも大きくなる。分岐ペナルティを低減するために、分岐先バッファ（Ｂｒａｎｃｈ　Ｔａｒｇｅｔ　Ｂｕｆｆｅｒ：ＢＴＢ）を備えた分岐予測が行なわれ、また、分岐命令に後続する命令（遅延スロット命令）を実行した後に分岐を行なう遅延分岐が採用されている。遅延スロット命令のステップ数ＳＮが可変長である場合、ステップ数ＳＮの情報が分岐命令コードに含まれている。
【０００３】
一方、ＶＬＩＷプロセッサでは、論理的に空間的並列実行可能なＶＬＩＷにするために、プログラマ又はコンパイラにより予め、ダミー命令としてのＮＯＰ（ノーオペレーション）命令が付加される。しかし、論理的に空間的並列実行可能なＶＬＩＷがＶＬＩＷプロセッサの特性に応じて異なるのでプログラムの汎用性が低く、また、命令キャッシュに多くのＮＯＰ命令が含まれるのでキャッシュヒット率が低下する。
【０００４】
そこで、ＶＬＩＷの各命令コードに、ＶＬＩＷの区切りを示すパッキングフラグを備えることにより、ＶＬＩＷを可変長にし、命令キャッシュから可変長ＶＬＩＷ（圧縮ＶＬＩＷ）を読み出した後にパッキングフラグの値でＶＬＩＷの区切りを認識し、ＶＬＩＷの命令長が最大長より短い場合にＮＯＰ命令を付加して命令パイプラインに供給する可変長ＶＩＷプロセッサが開発されている。
【０００５】
【発明が解決しようとする課題】
命令アドレスでＢＴＢと命令キャッシュを同時にアクセスし、ＢＴＢの出力が分岐命令であることを示していても、可変長ＶＬＩＷの場合、命令キャッシュから読み出された一連の命令のどこまでが１つの可変長ＶＬＩＷであるかを確認し、これをデコードしてどの部分が分岐命令であるかを調べ、さらに、該分岐命令のコード中のステップ数ＳＮを読み取る必要がある。
【０００６】
可変長ＶＩＷプロセッサによれば、パッキングフラグによりＶＬＩＷをブロック化することができるので、該ステップ数ＳＮの情報を分岐命令コード中を含ませずに、該ステップ数を可変長にすることが可能となる。この場合には、ステップ数ＳＮを読み取る必要がない。
【０００７】
しかしながら、命令キャッシュから読み出された一連の命令のどこまでが１つの可変長ＶＬＩＷであるかを確認し、さらに、遅延分岐スロットの区切りを示しているパッキングフラグＰＦ（例えばＰＦ＝‘１’）を含む命令コードまでシーケンシャルに命令を命令キャッシュから読み出さないと、遅延スロット命令のステップ数を確認することができない。該ステップ数の確認をせずに該ステップ数が最大値であると仮定して遅延スロット命令の読み出しを行なうと、無駄な命令先読みが行なわれて命令パイプラインへの命令供給が遅れる。
【０００８】
このため、分岐命令コードに該ステップ数ＳＮの情報が含まれているかどうかによらず、命令キャッシュから命令パイプラインへの命令供給が遅れる。ＶＬＩＷプロセッサ以外のプロセッサにおいても同様に命令キャッシュからの命令の読み出しとデコード処理が必要になるので、このような問題は遅延分岐機能を備えた各種プロセッサにおいて生ずる。
【０００９】
本発明の目的は、このような問題点に鑑み、分岐命令コード中に遅延スロット命令のステップ数の情報が含まれているかどうかによらず、遅延スロット命令のステップ数を早期に確認し、かつ、無駄な命令先読みを削減して、分岐ペナルティを軽減することが可能な、遅延分岐機能を備えた情報処理装置を提供することにある。
【００１０】
【課題を解決するための手段及びその作用効果】
本発明の一態様では、命令キャッシュと、該命令キャッシュをアドレス指定して該命令キャッシュから命令コードを読み出させる命令読出回路とを有し、遅延分岐機能を備えた情報処理装置において、該命令読出回路は、
分岐命令のアドレスに対応して分岐先アドレス、分岐履歴情報、及び、遅延スロットの命令の最後の位置に関する遅延スロット情報が格納される記憶部を備え、入力アドレスが該分岐命令のアドレスに一致したかどうかのヒット情報、一致した時にはさらに、該分岐履歴情報に基づいた分岐有無の予測情報、該遅延スロット情報、及び、該予測情報が分岐有りを示している時には該分岐先アドレスを出力する分岐予測回路と、
シーケンシャルアドレスを出力するインクリメンタと、
該ヒット情報、該遅延スロット情報及び該予測情報に基づいて、該インクリメンタの出力又は該分岐先アドレスを選択的に出力するアドレス選択回路と、を有する。
【００１１】
この構成によれば、該分岐予測回路を用いて分岐先命令の先読みを行なう場合、命令コードをデコードして遅延スロット命令のステップ数を確認することなく、該ステップ数を該記憶部から直ちに読み出すことができるので、該ステップ数が最大値であると仮定することによる無駄な命令先読みも行なわれず、命令パイプラインへの命令供給遅延が防止されて分岐ペナルティが軽減されるという効果を奏する。
【００１２】
本発明の他の目的、構成及び効果は以下の説明から明らかになる。
【００１３】
【発明の実施の形態】
以下、図面を参照して本発明の一実施形態を説明する。
【００１４】
［第１実施形態］
図１は、本発明の第１実施形態の、遅延分岐機能を備えたプロセッサの一部を示す概略ブロック図である。
【００１５】
情報処理装置としての該プロセッサは、ＶＬＩＷプロセッサであり、命令パイプライン１０は例えば４つの並列処理ユニットを備え、各ユニットのパイプラインで時間的並列処理が可能であるとともに、空間的並列処理が可能となっている。命令パイプライン１０は、各並列処理ユニットについて、命令フェッチ、命令デコード、命令実行、メモリアクセス及びレジスタ書き込みのステージを有する。以下、ＶＬＩＷに含まれる各命令コードが４バイトの固定長であり、命令パイプライン１０の並列処理ユニット数が４であるとする。この場合、命令パイプライン１０におけるＶＬＩＷの命令長は４×４＝１６バイトである。
【００１６】
図５は、不図示の主記憶装置に格納されているプログラムの一部を、４並列の命令パイプライン１０に対応し４スロットに分割して概略記載したものである。
【００１７】
プログラム上のＶＬＩＷは可変長であり、固定長のようにコンパイラでＮＯＰ命令が付加されたものではない。各命令コードはパッキングフラグＰＦを備えており、ＰＦ＝‘１’のとき、その命令コードが１つの可変長ＶＬＩＷの最後の命令ステップであることを示している。図５中の○印は、ＰＦ＝‘１’であることを示す。例えば先頭アドレス＆ｈ１０Ｃ（＆ｈは１６進数であることを示す）、＆ｈ１１０及び＆ｈ１１４の命令コードが１つの可変長ＶＬＩＷである。
【００１８】
図１に戻って、命令キャッシュ１１は、入力アドレスＡｏに対し、該アドレスＡｏを先頭アドレスとする１６バイトの命令を出力する。
【００１９】
命令バッファ＆ＶＬＩＷ調整回路１２は、この出力を保持し、ＰＦ＝‘１’の命令コードを検出して可変長ＶＬＩＷの区切りを認識し、可変長ＶＬＩＷが１６バイトより短ければＮＯＰ命令を付加することにより１６バイトの固定長ＶＬＩＷに伸長し、命令パイプライン１０に供給する。例えば図５において、アドレス＆ｈ２００〜＆Ｈ２０Ｆの１６バイトが読み出され、次にアドレス＆ｈ２１０〜＆Ｈ２１Ｆの１６バイトが読み出されると、命令バッファ＆ＶＬＩＷ調整回路１２によりアドレス＆ｈ２０８〜＆Ｈ２１３の１２バイトが可変長ＶＬＩＷと認識され、１つの４バイトＮＯＰ命令が付加される。アドレス＆ｈ２１４〜＆Ｈ２１Ｆの１２バイトは、次の１６バイトを読み出したときに同様に用いられる。
【００２０】
命令キャッシュ１１に対する読み出しアドレスは、命令読出回路２０により生成される。
【００２１】
分岐命令は、遅延分岐命令であり、本第１実施形態では、遅延スロット命令のステップ数ＳＮが命令コードに含まれている。例えば、
ＪＺ　Ｒ１，Ｒ２，２
は、レジスタＲ１の内容が０であるとき、レジスタＲ２の内容（Ｒ２）のアドレスに分岐し、ＳＮ＝２であることを示している。図５の場合、該遅延分岐命令の後のＶＬＩＷの先頭アドレスが＆ｈ１１８、＆ｈ１２４及び＆ｈ１３４の順の命令であるので、アドレス＆ｈ１１８〜＆ｈ１２３のＶＬＩＷと、アドレス＆ｈ１２４〜＆ｈ１３３のＶＩＷとが遅延スロット命令である。遅延スロット命令は、分岐命令における分岐の有無にかかわらず実行される。分岐する場合、遅延スロット命令が実行された後に、Ｒ２の内容（Ｒ２）、例えばアドレス＆ｈ２０８へ進み、分岐しない場合、遅延スロット命令の次のアドレス＆ｈ１３４へ進む。分岐命令と遅延スロット命令とは、命令パイプライン１０により時間並列処理されるので、分岐ペナルティが軽減される。
【００２２】
１６バイト単位で命令キャッシュから命令が読み出されるので、アドレスＡｏの下位４ビットは０である。したがって、例えばアドレス＆ｈ２０８へ進む場合、この下位４ビットが０にされてＡｏ＝＆ｈ２００となる。
【００２３】
図１に戻って、次に命令読出回路２０を説明する。命令読出回路２０の各構成要素２１〜２５はいずれも、クロックに同期して動作する。
【００２４】
命令アドレスが例えば３２ビットである場合、インクリメンタ２１の内容は、０である下位４ビットを省略した２８ビットである。命令読出回路２０で用いられる他のアドレスも同様である。インクリメンタ２１は、シケンシャルアドレス出力用であり、その内容は、ロード入力端Ｌが低レベルのとき、クロックの立ち上がりで所定値、本実施形態では１６だけ増加（下位４ビットを省略した値は１だけ増加）する。ロード入力端Ｌが高レベルのときには、並列入力端Ｐの値がインクリメンタ２１にロードされる。インクリメンタ２１の内容は、出力端ＱからアドレスＡｉとして出力される。
【００２５】
アドレス選択回路２２は、インクリメンタ２１、分岐予測回路２３及び予測後処理回路２５からそれぞれ供給されるアドレスＡｉ、Ａｐｂ及びＡａｂのいずれか１つを選択し、アドレスＡｏとして出力し、命令キャッシュ１１、分岐予測回路２３及び遅延バッファ２４に供給する。
【００２６】
分岐予測回路２３は、分岐先バッファ（ＢＴＢ）２４１を備えている。ＢＴＢ２４１は、ＲＡＭであり、図３に示すようなテーブルが格納されている。このテーブルのレコードは、タグ、分岐命令の分岐先アドレス、分岐履歴情報としての有効フラグＶ、及び、遅延スロット命令のステップ数に関する情報である遅延スロット情報ＰＯＳのフィールドからなる。
【００２７】
有効フラグＶは、‘１’／‘０’のときそれぞれ前回の分岐命令で分岐した／しなかったことを示す。入力アドレスＡｏの下位ビットであるインデックスアドレスＡｘによりＢＴＢ２４１がアドレス指定される。この指定により読み出されたレコードのうち、タグアドレスＡｔがアドレスＡｏの上位ビットと比較され、一致（ヒット）の場合にはヒット信号Ｈ／Ｍが高レベルになり、不一致（ミス）の場合にはヒット信号Ｈ／Ｍが低レベルになる。ヒットは、レコードがＢＴＢ２４１に登録され、かつ、命令キャッシュ１１から読み出された後命令バッファ＆ＶＬＩＷ調整回路１２により認識される次の可変長ＶＬＩＷに、遅延分岐命令が含まれていることを示す。分岐予測回路２３は、ヒット信号Ｈ／Ｍ、分岐先アドレスＡｐｂ、有効フラグＶ及び遅延スロット情報ＰＯＳを出力し、アドレス選択回路２２に供給する。
【００２８】
例えば図５において、Ａｏ＝＆ｈ１１０のとき、アドレス＆ｈ１０Ｃ〜＆ｈ１１７のＶＬＩＷに上記分岐命令が含まれているので、これに対応したレコードがＢＴＢに登録されていれば、ヒット信号Ｈ／Ｍが高レベルになる。この場合、インデックスアドレスＡｘ及びタグアドレスＡｔはそれぞれＡｏ＝＆ｈ１１０の下位ビット及び上位ビット、Ａｐｂ＝（Ｒ２）＝＆ｈ２０８→＆ｈ２００、ＰＯＳ＝‘０１０’である。命令ステップ数ＳＮと遅延スロット情報ＰＯＳの関係は、ＳＮ＝１、２、３のときそれぞれＰＯＳ＝‘００１’、‘０１０’、‘１００’である。すなわち、命令ステップ数ＳＮは遅延スロット情報ＰＯＳ中の‘１’のビット位置を示している。
【００２９】
図２は、図１中のアドレス選択回路２２の構成例を示す。
【００３０】
アドレス選択回路２２は、２つのセレクタ２３１及び２３２と、これらの選択制御入力端に制御信号ＳＬ１及びＳＬ２を供給する制御回路２３３とを備えている。セレクタ２３１は、アドレスＡａｂとＡｐｂの一方を選択して出力する。セレクタ２３２は、アドレスＡｉとセレクタ２３１の出力との一方を選択しアドレスＡｏとして出力する。制御回路２３３には、ヒット信号Ｈ／Ｍ、有効フラグＶ、遅延スロット情報ＰＯＳ及び予測エラー信号ＥＲが供給され、制御回路２３３は、これらに基づいて選択制御信号ＳＬ１及びＳＬ２並びにロード信号ＬＤを生成し出力する。
【００３１】
図４は、予測エラー信号ＥＲが低レベルであるときの制御回路２３３の動作を示すフローチャートである。
【００３２】
（Ｓ１）ヒット信号Ｈ／Ｍが高レベルであればステップＳ２へ進み、そうでなければステップＳ３へ進む。
【００３３】
（Ｓ２）制御回路２３３はセレクタ２３２に対し、クロックに同期してアドレスＡｉを選択させ、ステップＳ１へ戻る。これにより、Ａｏ＝Ａｉとなる。
【００３４】
但し、例えば図５のアドレス＆ｈ１４０〜＆ｈ１４Ｆの命令が命令キャッシュ１１から前回読み出されていれば、次のＶＬＩＷがアドレス＆ｈ１４Ｃ〜＆ｈ１４Ｆであるので、命令バッファ＆ＶＬＩＷ調整回路１２からの制御信号ＳＴＯＰにより、インクリメンタ２１へのクロック供給が１サイクル分停止されると共に、命令キャッシュ１１での読み出し動作が停止される。
【００３５】
（Ｓ３）遅延スロット情報ＰＯＳをＰＯＳＸに代入して保持する。ＰＯＳＸは制御回路２３３内のシフトレジスタである。
【００３６】
（Ｓ４）シフトレジスタＰＯＳＸが０でなければステップＳ５へ進み、０であればステップＳ７へ進む。
【００３７】
（Ｓ５）制御回路２３３はセレクタ２３２に対し、クロックに同期して、遅延スロット命令のアドレスであるアドレスＡｉを選択させる。これにより、Ａｏ＝Ａｉとなる。
【００３８】
但し、次に読み出すべきＶＬＩＷが前回読み出されていれば、上記同様の停止が行われる。
【００３９】
（Ｓ６）シフトレジスタＰＯＳＸを１ビット右にシフトさせてステップＳ４へ戻る。例えばＰＯＳＸ＝‘０１０’の場合、このシフトにより‘００１’となる。
【００４０】
このようなステップＳ４〜Ｓ６のループにより、遅延スロットのＶＬＩＷ命令アドレスが順次読み出される。
【００４１】
（Ｓ７）有効フラグＶが高レベルであればステップＳ８へ進み、そうでなければステップＳ１へ戻る。
【００４２】
（Ｓ８）制御回路２３３はクロックに同期して、セレクタ２３１及び２３２に対しそれぞれアドレスＡｐｂ及びセレクタ２３１の出力を選択させる。これにより、Ａｏ＝Ａｐｂとなる。また、ロード信号ＬＤのパルスをインクリメンタ２１のロード入力端Ｌに供給して、分岐先アドレスＡｐｂをインクリメンタ２１にロードさせる。
【００４３】
例えば図５において、Ａｏ＝＆ｈ１１０が分岐予測回路２３に供給されてヒット信号Ｈ／Ｍが高レベルになり、ステップＳ１、Ｓ３、Ｓ４及びＳ５へ進んでＡｉ＝＆ｈ１２０が選択され、これがアドレスＡｏとして命令キャッシュ１１に供給されて、アドレス＆ｈ１２０〜＆ｈ１２Ｆの内容が命令キャッシュ１１から読み出される。次にステップＳ６でシフトレジスタＰＯＳＸが１ビット右シフトされて‘００１’となる。ステップＳ４、Ｓ５を通り、Ａｉ＝＆ｈ１３０が選択され、これがアドレスＡｏとして命令キャッシュ１１に供給されて、アドレス＆ｈ１３０〜＆ｈ１３Ｆの内容が命令キャッシュ１１から読み出される。次にステップＳ６でシフトレジスタＰＯＳＸが１ビット右シフトされて‘０００’となる。ステップＳ７、Ｓ８へ進み、Ａｐｂ＝＆ｈ２０８→＆ｈ２００が選択され、Ａｏ＝＆ｈ２００が命令キャッシュ１１に供給されてアドレス＆ｈ２００〜＆ｈ２０Ｆの内容が読み出されると共に、インクリメンタ２１に＆ｈ２００がロードされる。アドレス＆ｈ２００〜＆ｈ２０Ｆの内容には、ＰＦ＝‘１’の命令コードが１つしか含まれていないが、次にステップＳ１からＳ２へ進んだ時にアドレス＆ｈ２１０〜＆ｈ２１Ｆの内容が命令キャッシュ１１から読み出され、命令バッファ＆ＶＬＩＷ調整回路１２によりアドレス＆ｈ２０８〜＆ｈ２１３のＶＬＩＷが認識される。
【００４４】
本第１実施形態によれば、分岐予測回路２３を用いて分岐先命令の先読みを行なう場合、命令コードをデコードして遅延スロット命令のステップ数ＳＮを確認することなく、該ステップ数ＳＮの情報ＰＯＳをＢＴＢ２４１から直ちに読み出すことができるので、該ステップ数ＳＮが最大値であると仮定することによる無駄な命令先読みも行なわれず、命令パイプライン１０への命令供給遅延が防止されて分岐ペナルティが軽減されるという効果を奏する。
【００４５】
図１に戻って、アドレスＡｏ、ヒット信号Ｈ／Ｍ及び有効フラグＶは、ＦＩＦＯの遅延バッファ２４に保持される。他方、命令パイプライン１０のデコードステージが分岐命令を示している場合、その分岐先アドレスＡｂ及び上記命令ステップ数ＳＮが予測後処理回路２５に供給され、さらに、命令パイプライン１０の実行ステージで分岐有無の結果、すなわち分岐条件の成立又は不成立を示す分岐判定結果を示すフラグＶｒが、予測後処理回路２５に供給される。Ｖｒ＝‘１’は分岐有りを示し、Ｖｒ＝０は分岐無しを示す。予測後処理回路２５は、この分岐命令に対応したアドレスＡｏ、ヒット信号Ｈ／Ｍ及び有効フラグＶ（有効フラグＶは、ヒット信号Ｈ／Ｍが高レベルのときのみ意味を有する）を遅延バッファ２４から読み出す。以下、予測後処理回路２５でのこれらＳＮ、Ａｏ、Ｈ／Ｍ及びＶをそれぞれ［］付きの［ＳＮ］、［Ａｏ］、［Ｈ／Ｍ］及び［Ｖ］で表す。
【００４６】
予測後処理回路２５は、ヒット信号［Ｈ／Ｍ］が低レベルである場合には、この分岐命令の上記レコードが分岐先バッファ２４１に存在していないので、これを分岐先バッファ２４１に書き込む。この場合、分岐先バッファ２４１の有効フラグＶには、フラグＶｒの値が書き込まれる。予測後処理回路２５は、この動作と並行して、予測エラー信号ＥＲを高レベルにし、分岐先アドレスＡｂをアドレスＡａｂとしてセレクタ２３１に供給する。
【００４７】
予測後処理回路２５は、ヒット信号［Ｈ／Ｍ］が高レベルで［Ｖ］≠Ｖｒである場合、分岐先バッファ２４１中の対応する有効フラグＶをフラグＶｒの値に書き換え、この動作と並行して、予測エラー信号ＥＲを高レベルにし、アドレスＡａｂをセレクタ２３１に供給する。予測後処理回路２５はこの際、［Ｖ］＝‘０’であれば分岐アドレスＡｂをアドレスＡａｂとし、［Ｖ］＝‘１’であれば［Ａｏ］と［ＳＮ］とに基づいて遅延スロットの次のアドレスを求め、これをアドレスＡａｂとする。
【００４８】
図２において、制御回路２３３は、予測エラー信号ＥＲが高レベルのとき、セレクタ２３１及び２３２に対しそれぞれアドレスＡａｂ及びセレクタ２３１の出力を選択させ、また、ロード信号ＬＤを正パルスにしてアドレスＡｏ＝Ａａｂを図１のインクリメンタ２１にロードさせる。
【００４９】
例えば図５において、アドレス＆ｈ１０Ｃ〜＆ｈ１１４のＶＬＩＷに含まれるアドレス＆ｈ１１４の分岐命令が分岐すると予測され、実際には分岐しなかった場合には、図１の予測後処理回路２５により遅延スロットの次のアドレス＆ｈ１３４→＆ｈ１３０が求められ、これがアドレスＡａｂとしてアドレス選択回路２２により選択され、アドレスＡｏとして出力される。このアドレスＡｏ＝＆ｈ１３０は、インクリメンタ２１にロードされる。従って、アドレスＡｏは、＆ｈ１３０、＆ｈ１４０、・・・と順次変化していく。
【００５０】
アドレス＆ｈ１０Ｃ〜＆ｈ１１４のＶＬＩＷに含まれるアドレス＆ｈ１１４の分岐命令が分岐しないとＢＴＢにより予測され、実際には分岐した場合には、Ａｂ＝＆ｈ２０８→＆ｈ２００がアドレスＡａｂとしてアドレス選択回路２２により選択され、アドレスＡｏとして出力される。このアドレスＡｏ＝＆ｈ２００は、インクリメンタ２１にロードされる。従って、アドレスＡｏは、＆ｈ２００、＆ｈ２１０、・・・と順次変化していく。
【００５１】
［第２実施形態］
次に、遅延スロット命令のステップ数ＳＮの情報が分岐命令コードに含まれていない場合を本発明の第２実施形態として説明する。
【００５２】
図６は、第２実施形態のプログラムの一部を、図１中の４並列の命令パイプライン１０に対応し４スロットに分割して概略記載したものである。
【００５３】
先頭アドレス＆ｈ１１４の分岐命令
ＪＺ　Ｒ１，Ｒ２
自体は、該ステップ数ＳＮが含まれていない他は、図５中の上記分岐命令と同一である。該ステップ数ＳＮの替わりに、パッキングフラグＰＦが、遅延スロット命令の最終ステップを示すものとして用いられる。図６では、分岐命令が含まれたアドレス＆ｈ１０Ｃ〜＆ｈ１１７のＶＬＩＷの次から最初にＰＦ＝１となる命令コードまで、すなわちアドレス＆ｈ１１８〜＆ｈ１３３が遅延スロット命令である。
【００５４】
上記第１実施形態と同様に、アドレス＆ｈ１０Ｃ〜＆ｈ１１７のＶＬＩＷは、アドレス＆ｈ１２０〜＆ｈ１２Ｆの内容を命令キャッシュから読み出した時に認識される。これからアドレスＡｏがインクリメンタ２１で「２回」インクリメントされて命令キャッシュ１１から読み出されたアドレス＆ｈ１３０〜＆ｈ１３ＦにＰＦ＝‘１’が存在するので、図１の予測後処理回路２５によりこの「２」が‘０１０’に変換されて図３のＢＴＢ２４１の遅延スロット情報ＰＯＳに登録される。上記第１実施形態のステップ数ＳＮと遅延スロット情報ＰＯＳの関係と同様に、「２」は遅延スロット情報ＰＯＳ中の‘１’のビット位置を示している。
【００５５】
予測エラー信号ＥＲが低レベルであるときの図２中の制御回路２３３の動作は、図４のフローチャートと同一である。ステップＳ５によりアドレス＆ｈ１３０〜＆ｈ１３Ｆの内容が読み出された時（上記「２回」に対応）、命令バッファ＆ＶＬＩＷ調整回路１２により、ＰＦ＝‘１’の命令コードが遅延スロット命令の最終ステップであると判定される。
【００５６】
遅延スロット命令中のＶＬＩＷの区切りは、該最終ステップ以外は、アドレスの下位４ビットが＆ｈＦである。図６の場合、命令バッファ＆ＶＬＩＷ調整回路１２により、
アドレス＆ｈ１１８〜＆ｈ１１Ｆ
アドレス＆ｈ１２０〜＆ｈ１２Ｆ
アドレス＆ｈ１３０〜＆ｈ１３３
の３つの命令ブロックがそれぞれＶＬＩＷであると認識される。
【００５７】
他の点は、上記第１実施形態と同一である。
【００５８】
本第２実施形態によれば、遅延スロット命令のステップ数ＳＮの情報が分岐命令コードに含まれていないので、命令コードが簡単になり、これに伴って命令パイプライン１０の構成が第１実施形態よりも簡単になる。
【００５９】
なお、本発明には外にも種々の変形例が含まれる。
【００６０】
例えば、上記実施形態では遅延分岐機能を備えたプロセッサが可変長ＶＬＩＷプロセッサである場合を説明したが、本発明はＢＴＢに遅延スロット情報ＰＯＳを格納してこれを利用することに特徴があり、固定長ＶＬＩＷプロセッサや、ＶＬＩＷプロセッサ以外であって各種遅延分岐機能を備えたプロセッサに適用可能である。
【００６１】
また、分岐予測回路２３は、ＢＴＢ中の分岐の履歴（上記実施形態では有効フラグＶ）を複数ビットとし、分岐有無が交互に繰り返されるのを認識して分岐を予測したり、過去の分岐有無の統計結果に基づいて分岐を予測する構成であってもよい。
【図面の簡単な説明】
【図１】本発明の一実施形態の、遅延分岐機能を備えたプロセッサの一部を示す概略ブロック図である。
【図２】図１中のアドレス選択回路２２の構成例を示す図である。
【図３】分岐先バッファ（ＢＴＢ）に格納されるテーブルの構成を示す説明図である。
【図４】予測エラー信号ＥＲが低レベルであるときの図２中の制御回路２３３の動作を示すフローチャートである。
【図５】プログラムの一部を、図１中の４並列の命令パイプライン１０に対応し４スロットに分割して概略記載した説明図である。
【図６】本発明の第２実施形態のプログラムの一部を、図１中の４並列の命令パイプライン１０に対応し４スロットに分割して概略記載した説明図である。
【符号の説明】
１０　命令パイプライン
１１　命令キャッシュ
１２　命令バッファ＆ＶＬＩＷ調整回路
２０　命令読出回路
２７　増分メモリ
２１　インクリメンタ
２２　アドレス選択回路
２３　分岐予測回路
２５　予測後処理回路
２４　遅延バッファ
２４１　分岐先バッファ
２３１、２３２　セレクタ
２３３　制御回路
Ｖ　有効フラグ
Ｈ／Ｍ　ヒット信号
ＰＯＳ　遅延スロット情報
Ａｉ、Ａｏ、Ａａｂ、Ａｐｂ　アドレス
ＬＤ　ロード信号
ＥＲ　エラー信号
ＳＮ　命令ステップ数
Ｖｒ　フラグ
Ａｘ　インデックスアドレス
Ａｔ　タグアドレス
【図１】
2004013255.tif 000003
【図２】
2004013255.tif 000004
【図３】
2004013255.tif 000005
【図４】
2004013255.tif 000006
【図５】
2004013255.tif 000007
【図６】
2004013255.tif 000008