(57)【特許請求の範囲】
【請求項１】
命令の処理に先立ってもしくは並行してその命令の処理結果の値を予測し、予測された結果を使用して仮に後続の処理を行うことを許可する印をつけられるフィールドと、命令の処理結果の値を予測する方法を指定するフィールドと、命令の処理結果の値を予測し、その結果をその真偽に関わらず常に使用して処理を行うことを許可する印をつけられるフィールドを備える命令を実行する手段を有することを特徴とするプロセッサ。
【請求項２】
請求項１記載のプロセッサにおいて、
命令の処理結果の値を予測した値を使用して実行した結果の真偽に応じてキャッシュメモリに格納された命令毎に用意されたフィールドの値を更新する手段を有することを特徴とするプロセッサ。
【請求項３】
請求項１記載のプロセッサにおいて、
命令毎に、命令の処理結果の値を予測し、その結果をその真偽に関わらず常に使用して処理を行うことを許可する印をつけられるフィールドを備えることを特徴とするプロセッサ。
【請求項４】
命令の処理に先立ってもしくは並行してその命令の処理結果の値を予測し、予測された結果（予測値）を使用して仮に後続の処理を行うことを許可する印をつけられる第１のフィールドと、命令の処理結果の値を予測する方法を指定する第２のフィールドを備える命令が格納されるキャッシュメモリと、
予測値を出力する複数の値予測手段と、
予測値を格納する格納手段と、
命令の処理結果と該命令の処理結果の予測値が一致するか否かを判定する判定手段と、
前記キャッシュメモリから読み出された命令の実行と、前記格納手段に格納された予測値を用いた後続命令の実行を行う演算手段を有し、
前記命令の第１のフィールドに前記許可する印がつけられているとき、該命令の第２のフィールドにより指定された値予測手段の予測値を前記格納手段と前記判定手段に出力し、
該命令に対する該判定手段の判定結果が不一致のとき、前記キャッシュメモリ中の該命令の第１のフィールド及び第２のフィールドのデータを更新することを特徴とするプロセッサ。
【請求項５】
請求項４記載のプロセッサにおいて、
命令の処理結果の値を予測した値を使用して実行した結果の真偽に応じて前記キャッシュメモリに格納された命令毎に用意されたフィールドの値を更新する手段を有することを特徴とするプロセッサ。
【請求項６】
請求項４記載のプロセッサにおいて、
前記キャッシュメモリに格納された命令毎に、命令の処理結果の値を予測し、その結果をその真偽に関わらず常に使用して処理を行うことを許可する印をつけられるフィールドを備えることを特徴とするプロセッサ。
【請求項７】
命令の処理に先立ってもしくは並行してその命令の処理結果の値を予測し予測された結果を使用して仮に後続の処理を行うことを許可する印をつけられる第１のフィールドと、命令の処理結果の値を予測する方法を指定する第２のフィールドと、命令の処理結果の値を予測しその結果をその真偽に関わらず常に使用して処理を行うことを許可する印をつけられる第３のフィールドを備える命令を有するプログラムの該各命令の第１のフィールドの印を許可もしくは不許可に設定し、第２のフィールドに値を予測する方法を設定し、第３のフィールドの印を許可もしくは不許可に設定する設定手段と、該全ての設定の行われた各命令を実行する実行手段を有することを特徴とするプロセッサシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、高性能コンピュータ・システムに係り、特に、命令の処理結果の値を予測し、予測結果を用いて後続命令の処理を行うコンピュータシステムに関する。
【０００２】
【従来の技術】
高性能コンピュータ・システムにおいて、プログラムの実行時間を短縮するために、命令の処理順序を規定する制御依存関係とデータ依存関係をプログラムの結果が正しくなる範囲でできる限り実行時間が短くなるように並び替えることが行われている。
制御依存関係については、分岐命令の結果を予測することで、分岐方向が決定する前に、予測した分岐先の命令の処理を進めることが行われている。
これにより予測が成功すれば、データ依存関係のない命令は分岐命令の処理の終了にかかわらず処理可能となり、処理の高速化がはかられる。
予測が失敗した場合は、予測により実行された処理を取り消し、正しい分岐先の命令を再実行することでプログラムの実行結果を正しく保てる機構をもつ。
一方データ依存関係については、演算結果やデータ転送命令によりロードされるデータの値を予測することで処理性能の向上をはかる方法がある。
値予測の方法としては、前回と同一の値が繰り返されると予測する最終値予測、一定の差分でデータ値が変化していくと予測するストライド値予測、過去の値の振る舞いのパターンに対する相関を利用する２レベル値予測などの方式が知られている。
【０００３】
【発明が解決しようとする課題】
値予測によるデータ依存関係の解消は、値が正しく予想されれば性能向上をはかれるが、間違った値を予測すると、値を予測しなかった場合に比べて性能が低下する可能性がある。
また、値の予測には通常、過去の履歴に基づく方式が利用されるため、命令によって値予測の成功率に大きな差があるのが通常であり、値予測の成功率の高いものにのみ選択的に値予測を行う必要がある。
本発明の目的は、値予測を行った方が処理性能が向上すると思われる命令を指定できるようにすることにある。
本発明の他の目的は、値予測を行う際の予測精度を向上することにある。
【０００４】
【課題を解決するための手段】
上記目的を達成するため、本発明では、命令の一部に値予測を行うべきかどうかを指示するフィールドを設け、もしくは、命令キャッシュメモリに値予測を行うべきかどうかを指示するフィールドおよび値予測方式を指定するフィールドを併設し、値予測を行った方が処理性能が向上すると思われる命令を指定し、この命令をプロセッサで実行することにより、精度の高い予測を行うようにしている。
また、さらに、命令に値予測の結果を常に使用することを指示するフィールドを設け、この命令をプロセッサで実行することにより、処理の高速化をはかるようにしている。
また、上記のフィールドを備える命令からなるプログラムの内容にしたがって、該命令のフィールドの内容を設定するようにしている。
【０００５】
【発明の実施の形態】
本発明による命令フォーマットの１実施例は図１に示す。
命令はオペコード（１）およびディスティネーションレジスタＲＤ（２）、第１ソースレジスタＲＳ１（３）、第２ソースレジスタＲＳ２（４）に加えて、値予測フィールド（５）をもつ。
値予測フィールド（５）は、処理結果を予測する必要のある命令にのみ値予測フィールド（５）があればよく、すべての命令セットに必要であるというものではない。
値予測フィールド（５）は１ビットからなり、このビットが１ならば値予測を行い、０ならば値予測を無効化する。
図２は図１の命令フォーマットに追加して、さらに値予測方式フィールド（６）を備えたものである。
値予測方式フィールドはＮ個（Ｎは１以上の整数）の値予測方式から１つを選択するものである。
値予測方式フィールドも、処理結果を予測する必要のある命令で、さらに値予測器が複数ある場合で、その中の１つがその命令に対してより高い確率で値予測が可能である場合に、命令に付加されものであり、すべての命令セットに必要であるというものでない。
【０００６】
本発明による、値予測フィールド（５）および値予測方式フィールド（６）をそなえた命令をもつコンピュータシステムの構成図を図３に示し、コンピュータシステムの動作をこの図３により説明する。
コンピュータシステムは、それぞれ値予測の方式が異なるＮ個の値予測器（１２）、セレクタ１３、値予測マスクゲート（１４）、演算器（１５）、レジスタ（１６）を備える。
値予測フィールド（５）および値予測方式フィールド（６）を除いた命令の実行は演算器（１５）で行われる。
それぞれ値予測の方式が異なるＮ個の値予測器（１２）によるそれぞれの値予測結果のうち、値予測方式フィールド（６）により指定される値予測器の予測結果がセレクタ（１３）で選択される。
選択された予測値は値予測フィールド（５）と値予測マスクゲート（１４）で論理積がとられ、それが有効もしくは無効にされる。
有効となった予測値はレジスタ（１６）に書き込まれ、後続の命令により演算器（１５）で利用される。
ただし、演算器（１５）による処理結果が予測値と異なった場合は、予測値が書き込まれたレジスタ（１６）は無効化され、その予測値を使って処理された後続命令もキャンセルされる。
また、値予測フィールド（５）および値予測方式フィールド（６）に格納されたデータをオペコード（１）の中に符号化して組み込むこともでき、その場合命令フォーマット中には値予測フィールド（５）や値予測方式フィールド（６）は存在しなくなるが、オペコード（１）に含まれることになる。
【０００７】
本発明の他の実施例は図４に示した命令キャッシュメモリ（２０）である。
この命令キャッシュメモリ（２０）は命令フィールド（７）に加えて、値予測フィールド（８）をもつ。
値予測フィールドは図１の値予測フィールド（５）と同様の意味を持つ。
図５は図４に加えて、命令キャッシュメモリ（２０）の各命令に対して、値予測方式フィールド（９）を追加したものである。
この値予測方式フィールド（９）も図２の値予測方式フィールド（６）と同様の意味を持つ。
【０００８】
図５の命令キャッシュメモリ（２０）をもつコンピュータシステムの構成を図６に示し、このコンピュータシステムにおける命令処理手順をこの図６により説明する。
コンピュータシステムは、それぞれ値予測の方式が異なるＮ個の値予測器（１２）、セレクタ１３、値予測マスクゲート（１４）、演算器（１５）、レジスタ（１６）、値予測結果判定器（１７）、命令キャッシュメモリ（２０）を備える。
値予測フィールド（８）および値予測方式フィールド（９）を除いた命令の実行は演算器（１５）で行われる。
それぞれ値予測の方式が異なるＮ個の値予測器（１２）のそれぞれの値予測結果のうち、命令キャッシュメモリ（２０）から読み出された命令の値予測方式フィールド（９）により指定される値予測器の予測結果がセレクタ（１３）で選択される。
選択された予測値は値予測フィールド（８）と値予測マスクゲート（１４）で論理積がとられ、選択された予測値は有効もしくは無効にされる。
有効となった予測値はレジスタ（１６）に書き込まれ、後続の命令により演算器（１５）で利用される。
ただし、演算器（１５）による処理結果が予測値と異なった場合は、予測値が書き込まれたレジスタ（１６）は無効化され、その予測値を使って処理された後続命令もキャンセルされる。
演算器（１５）と予測値の比較は値予測結果判定器（１７）により判定され、その結果は命令キャッシュメモリ（２０）に通知されて、該予測値に対応する命令キャッシュメモリ（２０）内の命令の値予測フィールド（８）および値予測方式フィールド（９）のデータが更新される。これにより、命令キャッシュメモリ（２０）内の命令が再度実行されるとき、更新された命令が実行されることになる。
【０００９】
本発明が対象とする値予測器の実施例としては、図７、図８、図９が挙げられる。
図７の値予測器は最終値予測方式によるものであり、命令を特定するための値であるプログラムカウンタなどのインデックス値により値予測表のタグ（２１）を引き、該当するインデックスの前回の値（Ｌａｓｔ  Ｖａｌｕｅ：最終値）（２２）を予測値とするものである。
この値予測器では、同じＴａｇに対する予測値が常に同じ値をとる値、即ち、予測値が一定値をとる値、については正しく予測されるが、それ以外の値、即ち、予測値が常に同じ値とは言えない場合では正しく予測されないことがある。ただし、この値予測器では、ハードウェア量が少ないため実装が簡単である。
なお、図において、０ｘ２０２０等における‘ｘ’は１６進数を表す。
【００１０】
図８は図７に示した値予測器における最終値（Ｌａｓｔ  Ｖａｌｕｅ）（２２）にインターバル値（Ｉｎｔｅｒｖａｌ）（２３）を加えたものを予測値とする値予測器である。即ち、Last Valueを L とし、Intervalを I とした場合、L = L ± I により、L の値が変化してゆく。。
この値予測器では、図７の値予測器で正しく予測が可能な定数値の場合に加えて、一定のインターバルで値が増減するものについても正しく値予測できる。
ただし、インターバル値が一定で無い場合には正しく予測されないことがある。
この値予測器では、ハードウェア量は図７の値予測器に比べて増える。
【００１１】
図９は２レベルの予測方式による値予測器であり、インデックス値による値予測表のタグ（２１）を引きオフセット値（Ｏｆｆｓｅｔ  Ｖａｌｕｅ）（２４）と履歴情報（Ｈｉｓｔｏｒｙ）（２５）を取り出す。
次に履歴情報（２５）で履歴タグ（Ｈｉｓｔｏｒｙ  Ｔａｇ）（２６）を引き、リンク値（Ｌｉｎｋ  Ｖａｌｕｅ）（２７）を得る。
予測値はオフセット値（２４）とリンク値（２７）を加えたものとなる。
履歴情報（２５）は、予測結果の正解、不正解により更新されるようにしてもよい。例えば、履歴情報（２５）が‘００００’の場合、正解なら‘００００’とし、不正解なら‘０００１’とする。
また、リンク値（２７）も予測結果の正解、不正解により更新されるようにしてもよい。オフセット値（２４）＝１で、リンク値（２７）＝０なら予測値は‘１’であるが、実際の演算結果が‘２’である場合には、リンク値（２７）を‘１’更新する。
この値予測器では、図７や図８の値予測器で正しく予測が可能な場合には、ほとんどの場合正しく予測でき、さらに通常は定数値であるが、ある間隔で異なった値に変化するケースなどで正しく予測が可能な場合がある。
図７や図８に示した値予測器に比べてハードウェア量は大きいが正しく予測される確率は一般的に高い特徴を持つ。
【００１２】
図７、図８、図９で示した値予測器の実装例は、図３や図６における値予測器１〜Ｎの実装例である。
図３や図６では、これらの値予測器の中から、最終的な値予測を行う値予測器を値予測ごとに選択できる。
【００１３】
図１０、図１１、図１２は値予測が効果的に働く例（プログラムも表示）を示す。
図１０に示した例では、アドレス０ｘ２０２０においてレジスタｒ１の値が０に設定され、アドレス０ｘ２０２４から０ｘ２０３０までのループ処理において、ｒ１の値は常に０となる。
またアドレス０ｘ２０２４においてレジスタｒ２の値は常にレジスタｒ１に４を加えた値となるので、ループ処理中は常に４である。
同様にしてアドレス０ｘ２０２８においてレジスタｒ３の値は常に８、アドレス０ｘ２０２Ｃにおいてレジスタｒ４の値は常に１２である。
よってアドレス０ｘ２０２０、０ｘ２０２４、０ｘ２０２８、０ｘ２０２Ｃのすべての命令の演算結果は常に定数となり、これは図７に示した値予測器によって正しく値予測が行われる。
【００１４】
図１１に示した例では、アドレス０ｘ２０２４においてレジスタｒ１の値がループ処理ごとに１ずつ増える。
アドレス０ｘ２０２８においてレジスタｒ２の値はレジスタｒ１の値に４を加えた値となるので、ループ処理ごとに１ずつ増える。
同様にしてアドレス０ｘ２０２Ｃにおいてレジスタｒ３の値はループ処理ごとに１ずつ増え、アドレス０ｘ２０３０においてレジスタｒ４の値もループ処理ごとに１ずつ増える。
図１１に示した例は、図７に示した値予測器によって正しく予測することはできないが、図８に示した値予測器によって正しく予測することができる。
【００１５】
図１２に示した例では、アドレス０ｘ２０２８においてレジスタｒ１の値がループ処理ごとに−１と＋１を交互にとる。
アドレス０ｘ２０２Ｃにおいてレジスタｒ２の値はレジスタｒ１の値に４を加えた値となるので,ループ処理ごとに３と５を交互にとる。
同様にしてアドレス０ｘ２０３０においてレジスタｒ３の値はループ処理ごとに７と９を交互にとり、アドレス０ｘ２０３４においてレジスタｒ４の値はループ処理ごとに１１と１３を交互にとる。
図１２に示した例は、図７や図８に示した値予測器によって正しく予測することはできないが、図９に示した値予測器によって正しく予測することができる。
【００１６】
図９の値予測器によって図１２のプログラムの値予測を行った場合の、定常状態における値予測器の状態は図１３に示したようになる。
図１３において、Ｔａｇが０ｘ２０２８のとき、オフセット値（２４）＝−１であり、履歴情報（２５）は‘０１０１’で、リンク値（２７）＝２となり、予測値は‘１’となる。
予測値が正になる場合には、履歴情報（２５）の‘０１０１’の末尾に‘０’を追加して左シフトし、履歴情報（２５）を‘１０１０’にする。
この次にＴａｇが０ｘ２０２８になったとき、履歴情報（２５）は‘１０１０’であるため、リンク値（２７）＝０となり、予測値は‘−１’となり、予測値は負になる。
予測値が負になる場合には、履歴情報（２５）の‘１０１０’の末尾に‘１’を追加して左シフトし、履歴情報（２５）を‘０１０１’にする。
そこで、この次にＴａｇが０ｘ２０２８になったとき、履歴情報（２５）は‘０１０１’であるため、リンク値（２７）＝２となり、予測値は‘１’となり、予測値は正になる。
これにより、Ｔａｇが０ｘ２０２８になる度に、予測値は‘１’と‘−１’の間で切り替わる。
【００１７】
図１０、図１１、図１２に示した例では、コンパイラプログラムがプログラムにおけるデータ依存関係を解析することにより、レジスタｒ１、ｒ２、ｒ３、ｒ４の値が決定できるため、値予測器を使用しなくても処理速度を向上させられる。
しかし、図１４、図１５、図１６に示すように図１０、図１１、図１２におけるそれぞれのアドレス０ｘ２０２０、０ｘ２０２０、０ｘ２０２４の命令がロード命令に置き換わった場合には、レジスタｒ１の値がコンパイラプログラムによる静的な解析では決定できないため、コンパイラプログラムによって処理速度を向上させることは困難である。
そこで、本発明による値予測をすべき命令としてのマーク（すなわち、図１または図２の命令フォーマットの値予測フィールドの値としての‘１’）を図１４では０ｘ２０２４〜０ｘ２０２Ｃ、図１５では０ｘ２０２４〜０ｘ２０３０、図１６では０ｘ２０２８〜０ｘ２０３４の命令に対して付けることにより、値予測器によって正しく値予測が行われる可能性が高いことを示し、実際に値予測が正しく行われれば処理速度の向上が達成される。
【００１８】
図１もしくは図２に示した命令をもつプロセッサの実行コードを作成するコード作成用プログラムでは、図１４、図１５、図１６のプログラムを次のように解析して、値予測フィールド（５）、値予測方式（６）に値を設定する。
図１４では、レジスタｒ１の値がプログラム中のループの外側にあるアドレス０ｘ２０２０の命令で設定されており、ループの中では値が変更されないことがコード作成用プログラムによって解析することで分かる。
さらに、０ｘ２０２４、０ｘ２０２８、０ｘ２０２Ｃの各ａｄｄ命令では、それぞれレジスタｒ１の値に定数０ｘ４、０ｘ８、０ｘＣを加算しているため、これらの加算結果が格納されるレジスタｒ２、ｒ３、ｒ４はループ内で不変の値となることが分かる。
よって、前回の値を次回の値予測値とする図７の最終値予測方式の値予測器によって正しく値を予測することができるので、値予測フィールド（５）を値予測を有効とする意味を持つ１に設定し、値予測方式フィールド（６）には図７の最終値予測方式を指定する値をコード作成用プログラムによって設定する。
【００１９】
図１５では、プログラム中のループの内側にあるアドレス０ｘ２０２４の命令でレジスタｒ１の値が毎回１ずつ加算されていることがコード作成用プログラムによって解析することで分かる。
よって、毎回一定値を加算して値予測値とする図８のインターバル値予測方式の値予測器によって正しく値を予測することができるので、アドレス０ｘ２０２４の命令の値予測フィールド（５）を値予測を有効とする意味を持つ１に設定し、値予測方式フィールド（６）には図８のインターバル予測方式を指定する値をコード作成用プログラムによって設定する。
さらに、アドレス０ｘ２０２８、０ｘ２０２Ｃ、０ｘ２０３０の各命令では、毎回一定値が加算されていくレジスタｒ１の値に定数値０ｘ４、０ｘ８、０ｘＣをそれぞれ加算したデータをレジスタｒ２、ｒ３、ｒ４に格納していることがコード作成用プログラムによって解析することで分かる。
よってｒ２、ｒ３、ｒ４のデータも毎回一定値を加算して値予想値とする図８のインターバル値予測方式の値予測器によって正しく値を予測することができるので、アドレス０ｘ２０２８、０ｘ２０２Ｃ、０ｘ２０３０の各命令の値予測フィールド（５）も値予測を有効とする意味を持つ１に設定し、値予測方式フィールド（６）には図８のインターバル値予測方式を指定する値をコード作成用プログラムによって設定する。
【００２０】
図１６では、プログラム中のループの内側にあるアドレス０ｘ２０２８の命令でレジスタｒ１の値が交互に正負の値を繰り返し取ることがコード作成用プログラムによって解析することで分かる。
よって、前回までの値の履歴によって次の予測する値が決定される図９の２レベルの値予測方式の値予測器によって正しく値を予測することができるので、アドレス０ｘ２０２８の命令の値予測フィールド（５）を値予測を有効とする意味を持つ１に設定し、値予測方式フィールド（６）には図９の２レベル値予測方式を指定する値をコード作成用プログラムによって設定する。
さらに、アドレス０ｘ２０２Ｃ、０ｘ２０３０、０ｘ２０３４の各命令では、交互に値の正負が変化するレジスタｒ１の値に定数値０ｘ４、０ｘ８、０ｘＣをそれぞれ加算したデータをレジスタｒ２、ｒ３、ｒ４に格納していることがコード作成用プログラムによって解析することで分かる。
よってｒ２、ｒ３、ｒ４のデータもｒ１のデータと同様にして図９の２レベル値予測方式の値予測器によって正しく値を予測することができるので、アドレス０ｘ２０２Ｃ、０ｘ２０３０、０ｘ２０３４の各命令の値予測フィールド（５）も値予測を有効とする意味を持つ１に設定し、値予測方式フィールド（６）には図９の２レベル値予測方式を指定する値をコード作成用プログラムによって設定する。
【００２１】
メディア処理など、処理の内容によっては、演算結果の真偽において精度が低いことが許される場合がある。
そのような場合には、演算結果を値予測によって決定して後続の処理を進めることで、処理速度の向上を実現することが可能である。
【００２２】
図１７は値予測の結果を常に使用するためのフィールドを備えた命令の実施例である。
図１７で強制値予測（２８）フィールドによって、この命令の処理結果は、値予測ができた場合には常に値予測結果を信用して、これを使用して後続の処理を継続する。
図１８は、これと同様の機能を命令キャッシュに強制値予測（２９）フィールドを備えることで実現した実施例である。
図１９は、本発明による値予測を行うコンピュータシステムの一実施例である。
プログラムコード（３０）は本発明の値予測関係フィールドをもった命令列を出力するコンパイラプログラム（３１）によってコンパイルされ、この実行形式コードが命令キャッシュ（２０）に登録される。
命令キャッシュ（２０）からコードが実行されると、値予測方式フィールド（９）により値予測器が選択（１２）され、さらに値予測フィールド（８）の値に応じてその結果の使用が決定（１４）される。
一方この命令の演算は演算器（１５）において並行して行われ、その結果と値予測の結果が比較（１７）され、この結果に応じて命令中のフィールド値が更新（１８）される。
【００２３】
【発明の効果】
本発明によれば、値予測により性能向上がはかれる命令にのみ値予測を適用するための命令もしくは命令キャッシュメモリを用意することで、不必要な値予測による性能低下を押さえることができる。
また、より精度の高い値予測を行うのに必要な、値予測方式の選択を命令毎に可能とすることで、値予測を利用したコンピュータシステムの性能向上率を高めることができる。
【図面の簡単な説明】
【図１】本発明による値予測フィールドをもつ命令フォーマットを示す図である。
【図２】本発明による値予測フィールドおよび値予測方式フィールドをもつ命令フォーマットを示す図である。
【図３】本発明による図２に示す命令フォーマットをもつコンピュータシステムの構成を示す図である。
【図４】本発明による値予測フィールドをもつ命令キャッシュを示す図である。
【図５】本発明による値予測フィールドおよび値予測方式フィールドをもつ命令キャッシュを示す図である。
【図６】本発明による図５に示す命令キャッシュをもつコンピュータシステムの構成を示す図である。
【図７】本発明による値予測器の実施例を示す図である。
【図８】本発明による値予測器の他の実施例を示す図である。
【図９】本発明による値予測器のさらに他の実施例を示す図である。
【図１０】値予測効果がある１番目のプログラム例を示す図である。
【図１１】値予測効果がある２番目のプログラム例を示す図である。
【図１２】値予測効果がある３番目のプログラム例を示す図である。
【図１３】本発明による値予測器の別の実施例を示す図である。
【図１４】値予測効果がある４番目のプログラム例を示す図である。
【図１５】値予測効果がある５番目のプログラム例を示す図である。
【図１６】値予測効果がある６番目のプログラム例を示す図である。
【図１７】本発明による値予測フィールドおよび値予測方式フィールドおよび強制値予測フィールドをもつ命令フォーマットを示す図である。
【図１８】本発明による値予測フィールドおよび値予測方式フィールドおよび強制値予測フィールドをもつ命令キャッシュを示す図である。
【図１９】本発明によるコンピュータシステムの構成を示す図である。
【符号の説明】
５、８  値予測フィールド
６、９  値予測方式
１０  値予測イネーブル信号線
１１  値予測方式セレクト信号線
１２  値予測器
１３  値予測値セレクタ
１４  値予測マスクゲート
１５  演算器
１６  レジスタ
１７  値予測結果判定器
１８  値予測結果判定信号線
３０  プログラムコードを格納するディスク装置
３１  コンパイラプログラム
３２〜３５  命令コード転送線
【図１】
0004141112.tif 000002
【図２】
0004141112.tif 000003
【図３】
0004141112.tif 000004
【図４】
0004141112.tif 000005
【図５】
0004141112.tif 000006
【図６】
0004141112.tif 000007
【図７】
0004141112.tif 000008
【図８】
0004141112.tif 000009
【図９】
0004141112.tif 000010
【図１０】
0004141112.tif 000011
【図１１】
0004141112.tif 000012
【図１２】
0004141112.tif 000013
【図１３】
0004141112.tif 000014
【図１４】
0004141112.tif 000015
【図１５】
0004141112.tif 000016
【図１６】
0004141112.tif 000017
【図１７】
0004141112.tif 000018
【図１８】
0004141112.tif 000019
【図１９】
0004141112.tif 000020