【手続補正書】
【提出日】平成16年11月12日(2004.11.12)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンパイラであって、
（Ａ）分岐インストラクションの分岐統計データを分析して分岐インストラクションのための分岐予測関数を構築する分岐統計データ・アナライザと、
（Ｂ）分岐統計データ・アナライザに接続されて、分岐予測関数を実現するための予測インストラクションを少なくとも１つ生成する分岐予測インストラクション・ジェネレータと、
（Ｃ）分岐予測インストラクション・ジェネレータに接続されて、分岐インストラクションの前に予測インストラクションを挿入するための主コンパイル・エンジンと、
を備えるコンパイラ。
【請求項２】
前記分岐統計データは分岐プロファイル情報とレジスタ・ダンプ情報を含む、請求項１に記載のコンパイラ。
【請求項３】
前記分岐統計データ・アナライザは、分岐プロファイル情報とレジスタ・ダンプ情報を分析して、分岐方向とレジスタ内容との相関を識別することによって、分岐予測関数を構築する、請求項２に記載のコンパイラ。
【請求項４】
前記分岐予測関数は、少なくとも１つのレジスタ内容と分岐インストラクションの分岐方向とを関連付ける、請求項３に記載のコンパイラ。
【請求項５】
前記分岐予測インストラクション・ジェネレータは、分岐インストラクションの分岐行先アドレスを指定するプリペア・トゥ・ブランチ・インストラクションと、レジスタ内容を分岐予測関数によって指定された閾値と比較するコンペア・インストラクションを発生する、請求項４に記載のコンパイラ。
【請求項６】
前記主コンパイラ・エンジンは、分岐統計データ・アナライザに接続されて、分岐インストラクションをコンパイルする前に、分岐統計データ・アナライザ内で分岐統計データが使用可能かどうかを判断し、分岐統計データ・アナライザにとって分岐統計データは使用可能でないと主コンパイラ・エンジンが判断したときには、前記主コンパイラ・エンジンは、分岐インストラクションを含むソース・コードをコンパイルするときにはいかなるインストラクションも挿入しない、請求項１に記載のコンパイラ。
【請求項７】
挿入される前記予測インストラクションは、前記分岐インストラクションよりも１から６４サイクルだけ手前に置かれる、請求項１に記載のコンパイラ。
【請求項８】
プログラム中の分岐インストラクションを動的に予測する方法であって、
（Ａ）分岐インストラクションについての分岐予測関数を構築するために、分岐インストラクションの分岐統計データを分析するステップ、
（Ｂ）分岐予測関数を実現するための予測インストラクションを少なくとも１つ生成するステップ、
（Ｃ）分岐インストラクションの前に予測インストラクションを挿入する挿入するステップ、
を含む方法。
【請求項９】
前記分岐統計データは、分岐プロファイル情報と、レジスタ・ダンプ情報を含む、請求項８記載の方法。
【請求項１０】
（ｉ）分岐インストラクションについての分岐プロファイル情報とレジスタ・ダンプ情報を分析して、分岐方向とレジスタ内容との相関を識別するステップと、
（ｉｉ）分岐方向とレジスタ内容との相関に基づいた分岐予測関数を発生するステップと、
をさらに含む請求項９に記載の方法。
【請求項１１】
ステップ（ｉ）は、さらに、
（ａ）各分岐インストラクションの実行よりも数回手前における各レジスタの内容を判別するステップと、
（ｂ）各分岐インストラクションの実行における分岐方向を判別するステップと、
（ｃ）どのレジスタがどういう内容の値のときに分岐インストラクションが分岐するかを判別することによって、分岐方向とレジスタ内容の間の相関を確立するステップと、
を含む請求項１０に記載の方法。
【請求項１２】
前記生成するステップは、分岐予測関数を実現するコンペア・インストラクションと、分岐予測関数を受け取ったことに応答して分岐インストラクションの行先アドレスを指定するプリペア・トゥ・ブランチ・インストラクションを生成する、請求項８に記載の方法。
【請求項１３】
（Ｄ）分岐統計データが分岐統計データ・アナライザ内で使用可能かどうかをステップ（Ｃ）よりも前に判別するステップと、
（Ｅ）分岐統計データが分岐統計データ・アナライザにとって使用可能でないならば、分岐インストラクションを含んだソース・コードをコンパイルするときには、ステップ（Ｃ）を実行しないステップと、
をさらに含む請求項８に記載の方法。
【請求項１４】
（Ａ）記憶媒体と、
（Ｂ）該記憶媒体に格納された、コンピュータ上で実行可能なコンパイラ・プログラムと、を備え、該コンピュータ上で実行可能なコンパイラ・プログラムは、さらに、
（ａ）分岐インストラクションについての分岐統計データを分析して、分岐インストラクションについての分岐予測関数を得る第１のインストラクション・セットと、
（ｂ）分岐予測関数を実現するための予測インストラクションを少なくとも１つ生成する第２のインストラクション・セットと、
（ｃ）分岐インストラクションを含んだソース・コードを機械コードにコンパイルするときには、分岐インストラクションの前に予測インストラクションを挿入する第３のインストラクション・セットと、
を備える装置。
【請求項１５】
前記分岐統計データは、分岐プロファイル情報と、レジスタ・ダンプ情報を含む、請求項１４に記載の装置。
【請求項１６】
前記第１のインストラクション・セットは、さらに、
（ｉ）分岐インストラクションについての分岐プロファイル情報とレジスタ・ダンプ情報を分析して、分岐方向とレジスタ内容との相関を識別する第１のインストラクション・サブセットと、
（ｉｉ）分岐方向とレジスタ内容との相関に基づいて、分岐予測関数を生成する第２のインストラクション・サブセットと、
を備える請求項１５に記載の装置。
【請求項１７】
前記第１のインストラクション・サブセットは、
（ａ）各分岐インストラクションの実行よりも数回手前における各レジスタの内容を判別し、
（ｂ）各分岐インストラクションの実行における分岐方向を判別し、
（ｃ）どのレジスタがどのような内容の値をとるときに分岐インストラクションが分岐するかを判別することによって、分岐方向とレジスタ内容の間の相関を確立する、
ことにより、分岐インストラクションについての分岐プロファイル情報とレジスタ・ダンプ情報を分析する、請求項１６に記載の装置。
【請求項１８】
前記第２のインストラクション・セットは、分岐予測関数を実現するコンペア・インストラクションと、分岐予測関数を受け取ったことに応答して分岐インストラクションの分岐行先アドレスを指定するプリペア・トゥ・ブランチ・インストラクションを生成する、請求項１４に記載の装置。
【請求項１９】
（Ｄ）分岐インストラクションを含んだソース・コードをコンパイルする前に、分岐統計データ・アナライザ内で分岐統計データが使用可能かどうかを判別する第４のインストラクション・セットと、
（Ｅ）分岐統計データが使用可能でないときには、第３のインストラクション・セットが予測インストラクションを挿入しないようにする第５のインストラクション・セットと、
をさらに備える請求項１５に記載の装置。
【請求項２０】
挿入される前記予測インストラクションは、前記分岐インストラクションよりも１から６４サイクルだけ手前に置かれる請求項１４に記載の装置。
【請求項２１】
実行時間分岐予測シンセサイザであって、
（Ａ）分岐インストラクションの分岐統計データを分析して、分岐インストラクションについての分岐予測関数を構築する分岐統計データ・アナライザと、
（Ｂ）分岐統計データ・アナライザに接続されて、分岐予測関数を実現するための予測インストラクションを少なくとも１つ生成する分岐予測インストラクション・ジェネレータと、
（Ｃ）分岐予測インストラクション・ジェネレータに接続されて、予測インストラクションを分岐インストラクションの前に挿入する実行時間コード・マネージャと、
を備える実行時間分岐予測シンセサイザ。
【請求項２２】
前記分岐統計データは分岐プロファイル情報とレジスタ・ダンプ情報を含み、前記分岐統計データ・アナライザは、前記分岐プロファイル情報と前記レジスタ・ダンプ情報を分析して、分岐方向とレジスタ内容との相関を識別することによって、分岐予測関数を構築する、請求項２１記載の実行時間分岐予測シンセサイザ。
【請求項２３】
前記分岐予測関数は少なくとも１つのレジスタ内容を前記分岐インストラクションの分岐方向と関連付け、前記分岐予測インストラクション・ジェネレータは、前記分岐インストラクションの分岐行先アドレスを指定するプリペア・トゥ・ブランチ・インストラクションと、レジスタ内容を分岐予測関数によって指定された閾値と比較するコンペア・インストラクションとを生成する、請求項２２に記載の実行時間分岐予測シンセサイザ。