(57)【要約】  本発明の実施例は、分岐予測回路及びその制御方法を提供し、コンピュータ技術分野に関する。当該分岐予測回路は少なくとも１つの分岐予測器を含み、分岐予測器は予測情報決定モジュール、読み出し回路及び分岐予測テーブルを含む。そのうち、予測情報決定モジュールは、予測対象分岐命令に対応するプログラム識別情報及び分岐予測テーブルに基づき、予測対象分岐命令に対応するターゲット予測情報を決定し、読み出し回路は、ターゲット予測情報を分岐命令実行及び制御ユニットに送信し、これにより、分岐命令実行及び制御ユニットはターゲット予測情報に基づいて予測処理を行い、予測対象分岐命令に対応する予測結果を生成する。本発明の実施例は、従来の技術において、分岐予測器が異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の予測動作を間接的に操ることができるという問題を解決する。【選択図】図１
2021516384.tif 000002
【特許請求の範囲】
【請求項１】
分岐予測回路であって、分岐命令を実行する能力を持つプロセッサに適用され、前記分岐予測回路は少なくとも１つの分岐予測器を含み、前記分岐予測器は予測情報決定モジュール、読み出し回路及び分岐予測テーブルを含み、
前記予測情報決定モジュールは予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定するためのものであり、
前記読み出し回路は前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成するためのものであることを特徴とする分岐予測回路。
【請求項２】
分岐予測器は、更新回路をさらに含み、前記更新回路は前記プロセッサによって実行されている分岐命令及びこれに対応するプログラム識別情報に基づき、前記分岐予測テーブルにおける記録情報を更新し、前記記録情報は、前記実行されている分岐命令に対応する分岐予測情報を含み、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも１項を含むことを特徴とする請求項１に記載の分岐予測回路。
【請求項３】
前記予測情報決定モジュールは、第１の探索回路と第２の探索回路を含み、
前記第１の探索回路は、前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索し、
前記第２の探索回路は、前記分岐予測テーブルで、前記第１の探索回路によって探索された分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することを特徴とする請求項１又は請求項２に記載の分岐予測回路。
【請求項４】
前記予測情報決定モジュールは、第３の探索回路を含み、
前記第３の探索回路は前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することを特徴とする請求項１又は請求項２に記載の分岐予測回路。
【請求項５】
前記予測情報決定モジュールは、演算回路と第４の探索回路を含み、
前記演算回路は前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定し、さらに、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得、
前記第４の探索回路は前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索することを特徴とする請求項２又は請求項３に記載の分岐予測回路。
【請求項６】
前記第４の探索回路は、比較サブ回路と適応サブ回路を含み、
前記比較サブ回路は前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較し、
前記適応サブ回路は、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出し、また、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することを特徴とする請求項５に記載の分岐予測回路。
【請求項７】
プロセッサであって、請求項１〜請求項６のいずれか１項に記載の分岐予測回路を含むことを特徴とするプロセッサ。
【請求項８】
分岐予測回路の制御方法であって、
予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定するステップと、
前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成するステップと、を含むことを特徴とする分岐予測回路の制御方法。
【請求項９】
現在実行されている分岐命令及びこれに対応するプログラム識別情報に基づき、前記分岐予測テーブルにおける記録情報を更新するステップであって、前記記録情報は、前記実行されている分岐命令に対応する分岐予測情報を含み、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも１項を含むステップをさらに含むことを特徴とする請求項８に記載の方法。
【請求項１０】
予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、
前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索するステップと、
前記分岐予測テーブルで、前記分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含むことを特徴とする請求項８又は請求項９に記載の方法。
【請求項１１】
予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、
前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索するステップと、
探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出するステップと、
探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含むことを特徴とする請求項８又は請求項９に記載の方法。
【請求項１２】
予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、
前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定するステップと、
前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得るステップと、
前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索するステップと、を含むことを特徴とする請求項８又は請求項９に記載の方法。
【請求項１３】
前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索する前記ステップは、
前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較するステップと、
前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出するステップと、
前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含むことを特徴とする請求項１２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ技術の分野に関し、特に分岐予測回路及び分岐予測回路の制御方法に関する。
【背景技術】
【０００２】
現代のマイクロプロセッサ設計にプロセッサの性能を向上するための分岐予測技術を用いるのは一般的である。具体的に、プロセッサの命令パイプラインでは、分岐命令の結果によってその後の命令の命令フェッチが決定される。分岐予測技術を用いることによって分岐命令によって引き起こされるパイプラインのブロックが回避でき、できるだけ多くの命令を命令パイプラインにフェッチして実行し、これにより、命令パイプラインのスループットが向上する。
【０００３】
具体的な実現において、高性能のマイクロプロセッサに、高い精度を取得するために、動的分岐予測技術を用いて分岐命令を推測するのが一般的である。そのうち、動的分岐予測は、分岐命令によって実行された履歴に基づいて予測し、分岐命令の履歴データを保存するには複雑な分岐予測構造を使用する必要がある。分岐予測構造は主に分岐命令の分岐履歴に基づいて当該分岐命令の将来のスキップ方向とターゲットを予測する。例えば、分岐予測器を使用して予測する場合、現在予測した分岐命令のプログラムカウンター（Ｐｒｏｇｒａｍ  Ｃｏｕｎｔｅｒ、ＰＣ）の値を分岐ターゲットバッファ（Ｂｒａｎｃｈ  Ｔａｒｇｅｔ  Ｂｕｆｆｅｒ、ＢＴＢ）テーブルにおける検索対象アイテムのＰＣの値と比較することができる。現在予測した分岐命令のＰＣの値が検索対象アイテムのＰＣの値に等しくする場合、当該検索対象アイテムの飽和カウンターの値に基づいてスキップが発生するかどうかを予測し、当該分岐命令のスキップターゲットを予測し、例えば、分岐命令のスキップ方向を予測したと同時に、分岐命令のスキップターゲットアドレスを読み取る。しかしながら、従来の技術において、分岐予測器が異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の予測動作を間接的に操ることができるようになる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記問題を鑑みして、上記問題を克服するか、または、上記問題の少なくとも一部を解決する分岐予測回路、対応する分岐予測回路の制御方法及び前記分岐予測回路を持つプロセッサを提供するために、本発明の実施例を提案する。
【課題を解決するための手段】
【０００５】
上記問題を解決するために、本発明の実施例は、分岐命令を実行する能力を持つプロセッサに適用する分岐予測回路を開示し、前記分岐予測回路は、少なくとも１つの分岐予測器を含み、前記分岐予測器は予測情報決定モジュール、読み出し回路及び分岐予測テーブルを含む。そのうち、前記予測情報決定モジュールは予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する。前記読み出し回路は前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成する。
【０００６】
選択的に、前記分岐予測器は、更新回路をさらに含む。前記更新回路は前記プロセッサによって実行されている分岐命令及びこれに対応するプログラム識別情報に基づき、前記分岐予測テーブルにおける記録情報を更新し、そのうち、前記記録情報は前記実行されている分岐命令に対応する分岐予測情報を含み、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも１項を含む。
【０００７】
選択的に、前記予測情報決定モジュールは、第１の探索回路と第２の探索回路を含む。前記第１の探索回路は、前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索する。前記第２の探索回路は、前記分岐予測テーブルで、前記第１の探索回路によって探索された分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
【０００８】
選択的に、前記予測情報決定モジュールは、第３の探索回路を含む。前記第３の探索回路は前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
【０００９】
選択的に、前記予測情報決定モジュールは、演算回路と第４の探索回路を含む。前記演算回路は前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定し、また、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得る。前記第４の探索回路は前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索する。
【００１０】
選択的に、前記第４の探索回路は、比較サブ回路と適応サブ回路を含む。前記比較サブ回路は前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較する。前記適応サブ回路は、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出し、また、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
【００１１】
本発明の実施例はまた、上記の分岐予測回路が含まれるプロセッサを開示する。
【００１２】
本発明の実施例はさらに、分岐予測回路の制御方法を開示し、前記方法は、
予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定するステップと、
前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成するステップと、を含む。
【００１３】
選択的に、現在実行されている分岐命令及びこれに対応するプログラム識別情報に基づき、前記分岐予測テーブルにおける記録情報を更新し、そのうち、前記記録情報は、前記実行されている分岐命令に対応する分岐予測情報を含み、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも１項を含む。
【００１４】
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、
前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索するステップと、
前記分岐予測テーブルで、前記分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
【００１５】
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、
前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索するステップと、
探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出するステップと、
探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
【００１６】
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定するステップと、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得るステップと、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索するステップと、を含む。
【００１７】
選択的に、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索する前記ステップは、
前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較するステップと、
前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出するステップと、
前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
【発明の効果】
【００１８】
本発明の実施例は以下の利点がある。
【００１９】
本発明の実施例における分岐予測回路は、予測対象分岐命令に対応するプログラム識別情報及び分岐予測テーブルに基づき、予測対象分岐命令に対応するターゲット予測情報を決定し、当該ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行うことができる。これにより、異なるプログラム間の分岐予測は互いに干渉しないようになり、分岐予測器における異なるプログラムの分岐予測情報を隔離させることが実現され、従来の技術において、分岐予測器が異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の予測動作を間接的に操ることができるようになるという問題が解決される。
【図面の簡単な説明】
【００２０】
【図１】本発明の分岐予測器の構造概略図である。
【図２】本発明の分岐予測回路の制御方法の実施例のステップフローチャートである。
【図３】本発明の１つの例におけるプロセッサの構造概略図である。
【図４】本発明の１つの例におけるいくつかの飽和カウンター情報が１つのプログラム識別情報を共有する場合の概略図である。
【図５】１つの例示的な実施例に基づいて示した分岐予測器の制御に適用される電子機器の構造ブロック図である。
【発明を実施するための形態】
【００２１】
本発明の上記目的、特徴及び利点をさらに明瞭し、理解しやすくするために、以下は図面と具体的な実施形態を合わせて本発明についてさらに詳細に説明する。
【００２２】
現代コンピュータは通常、プログラムにおける命令をデータとしてメモリに保存することを１つの中核としている「フォン・ノイマン」アーキテクチャに遵う。プロセッサは命令に従って実行することができ、実行する前に、通常、命令をメモリからプロセッサ内部にフェッチする必要があり、この操作は「命令フェッチ」と呼ばれている。命令フェッチは、ＰＣの値をアドレスとし、当該アドレスに基づいてメモリからデータを読み取る。プロセッサ実行中、分岐命令に基づいて次の命令のＰＣを算出することができる。これにより、分岐命令の結果によってその後の命令の命令フェッチは決定されることができることがわかる。
【００２３】
例えば、プロセッサが最もシンプルな分岐履歴テーブルを使用して分岐予測を行う場合、ＰＣのロービットインデックスを用いて予測することができる。そのうち、当該分岐履歴テーブルにおける各アイテムは２ビットの飽和カウンターであり、当該アイテムに対応する分岐命令のスキップ方向履歴情報を記録するために使用されており、例えば、分岐が成功した場合、飽和カウンターに記録された飽和値に１を加算し、分岐が成功しなかった場合、飽和カウンターに記録された飽和値に１を減算する。このような分岐履歴テーブルはまた、分岐パターン履歴テーブル（Ｐａｔｔｅｒｎ  Ｈｉｓｔｏｒｙ  Ｔａｂｌｅ、ＰＨＴ）とも呼ばれている。しかしながら、ＰＨＴテーブルを使用して予測することは、分岐命令のスキップ方向のみを予測でき、分岐命令のスキップターゲットを予測できない。間接分岐命令のスキップターゲットは命令から直接に取得することができないので、間接分岐命令のスキップターゲットを予測するためのメカニズムが必要とされている。なお、ＰＨＴテーブルは通常、デコード段階のみで使用することができ、そうではない場合、命令フェッチ段階でＰＣロービットインデックスのＰＨＴテーブルを使用すると、通常命令も分岐命令として予測される恐れがある。
【００２４】
従来のプロセッサは分岐ターゲット緩衝器を使用して分岐予測を行うことができ、これにより、上記ＰＨＴテーブルを使用して予測することに存在する問題が解決される。そのうち、分岐ターゲット緩衝器はまた、分岐予測器とも呼ばれている。具体的に、分岐予測器の分岐予測テーブルがＢＴＢテーブルである場合、分岐予測器は、分岐予測する時、現在のＰＣをＢＴＢテーブルにおける検索対象アイテムのＰＣと比較し、ＢＴＢテーブルに完全連続構造が用いられている場合、現在のＰＣを完全連続構造におけるすべてのアイテムの分岐命令ＰＣと比較する。ＢＴＢテーブルにおけるとあるアイテムの分岐命令ＰＣの値が現在のＰＣの値に等しくする場合、当該アイテムを等しいアイテムとして決定することができ、及び、等しいアイテムの飽和カウンター値に基づいてスキップが発生するかどうかを予測してスキップアドレスを読み出すことができる。当該スキップアドレスは分岐命令のターゲットアドレスであってもよい。説明すべきものとして、ＢＴＢテーブルには、完全連続又はマルチグループ接続構造が用いられることができ、ＢＴＢテーブルの各アイテムに分岐命令のＰＣ、分岐命令のターゲットアドレス、及び分岐命令のスキップが発生するかどうかを予測する２ビットの飽和カウンター値を保存することができる。この２ビットの飽和カウンター値は、スキップ方向、例えば、スキップとスキップしないという２つの方向をキャラクタリゼーションするために使用することができる。
【００２５】
そのうち、分岐予測は、分岐命令の命令フェッチ又はデコード段階でそのスキップ方向とスキップターゲットアドレスを予測し、予測結果に基づいて継続的に命令フェッチをする。分岐命令を実行した後、決定した分岐スキップ方向又は分岐ターゲットアドレスに基づいて予測結果を修正することができる。分岐予測が正しいである場合、通常通りに終了することができる。そうではない場合、誤予測された後に実行されるすべての命令を取り消すことができる。
【００２６】
要約すると、分岐予測器は、プロセッサの微細構造設計の時に、性能を向上させるために導入されたものであり、ソフトウェアは直接にアクセスできないため、通常、セキュリティには関係ないと見なされている。具体的に、現代プロセッサには、性能を向上させるために、キャッシュ、分岐予測、順不同実行などの技術のいずれも実現されており、これらの技術を実現する内部一時バッファにはソフトウェアが直接にアクセスできないため、分岐予測器がセキュリティには関係なく、異なるプログラム間に物理的又は論理的な分離もないと見なされている。これにより、１つのプロセスＡによる分岐予測テーブルの変更は、もう１つのプロセスＢによって観察又は使用される可能性があり、即ち、異なるプログラムは互いに影響しあい、互いの分岐予測の動作を制御することができるようになる。攻撃者は、従来の分岐予測器設計のこの特徴を用いて、攻撃プロセスに分岐予測器をトレーニングし、これにより、攻撃されたプロセスの指定されたプログラムセグメントの予測実行の動作を制御し、さらに、最終的に攻撃目的を達成する。
【００２７】
説明すべきものとして、順不同実行と分岐予測は、命令を予測的に実行することによって性能を向上させるが、順不同実行のすべての命令は順序付けに終了する。順不同実行の一時結果は、名前変更レジスタ又はキャッシュに保存されることができる。順序付けに終了する場合、誤予測を発見した場合、上記一時結果を破棄する。予測が正しいである場合、一時結果をメモリとソフトウェアがアクセスできるレジスタに書き戻す。
【００２８】
現在、分岐予測器を用いて実行する攻撃、例えば、Ｓｐｅｃｔｒｅ攻撃は、主に中央処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ  、ＣＰＵ）の順不同実行と予測実行メカニズムを用いて、命令の順不同実行と取り消されることとの間のごく小さな「ギャップ」に、オペレーティングシステムスペースにオーバーランアクセスし、それから、サイドチャネル攻撃技術を用いてシステム情報を不法的に取得する。例えば、分岐予測器を用いて実行する攻撃は、通常、予測の実行と順序付けに終了の短い「隙間」に、メモリにおけるデータを上記微細構造の一時バッファに不法的に保存し、遠回しのような間接アクセスを介して本来ならばユーザが知るべきではなかった内容を予測する。
【００２９】
本発明の実施例の核となる構想の１つは、微細構造設計の角度から分岐予測器を用いて実行する攻撃を防御する。具体的に、本発明の実施例は、プログラム識別情報を使用して分岐予測器を制御し、これにより、分岐予測器による異なるプログラムの分岐予測が互いに影響しあわなく、即ち、プログラム識別情報に基づいて異なるプログラム間の予測情報の隔離を実現し、これにより、分岐予測器を用いて実行する攻撃の必須リンクを切断し、従来の技術において、分岐予測器が異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の予測動作を間接的に操ることができるようになるという問題を解決することができる。
【００３０】
説明すべきものとして、現代コンピュータに通常、カーネルモードとユーザモードが含まれている。オペレーティングシステムはカーネルモードで実行されており、ユーザプログラムはユーザモードで実行されている。ユーザモードのプログラムはカーネルモードの任意の内容にもアクセスできず、一旦オーバーランアクセスが発生した場合、ＣＰＵはプログラムの実行を中止し、オペレーティングシステムに例外信号を送信し、オペレーティングシステムは、例外信号を受信した後オーバーランアクセスのユーザプロセスを強制終了させ、これにより、セキュリティを確保する。そのうち、ユーザプログラムとシステムプログラムは異なるアドレスセグメントに配置されることができる。
【００３１】
分岐予測器を用いて実行する攻撃を防御することの１つの特別なところは、オーバーランアクセスを実行する命令が、探られるデータが位置するプログラムからのものであり、即ち、予測実行経路上のオーバーランアクセス命令が実行される時のコンテキストが、アクセスされるアドレスにアクセスする権限があり、プロセッサ内部では、不法アクセス例外によってこのアクセス命令の異常動作を察知することができない。したがって、分岐予測器を用いて実行する攻撃の防御は、アクセス場所でオーバーランアドレスのアクセス権限異常を監視することから手掛けることができず、別の方法を考える必要がある。
【００３２】
本発明の実施例は、分岐予測器を用いて実行する攻撃におけるもう１つの必須リンクから防御の考えを求めることができる。具体的に、Ａプログラムで分岐予測器をトレーニングすることによってＢプログラムの特定分岐命令の予測動作を制御できることに対し、本発明の実施例は、分岐予測器にパーティションプログラムのプログラム識別情報を追加し、これにより、Ａプログラムで分岐予測器をトレーニングして得られる結果はＡプログラムのみで使用することができ、Ｂプログラムの分岐命令はそれに影響されなくなり、即ち、Ｓｐｅｃｔｒｅ攻撃の必須リンクを切断し、これにより、攻撃の実施が破壊され、分岐予測器を用いて実行する攻撃の成功率を低下させる。
【００３３】
具体的に、本発明の実施例は、分岐予測回路を提供し、当該分岐予測回路は、少なくとも１つの分岐予測器を含んでもよく、これにより、当該分岐予測器を用いて分岐予測を行う。図１に示すように、分岐予測器１１０は、予測情報決定モジュール１２０、読み出し回路１３０及び分岐予測テーブル１４０を含んでもよい。そのうち、前記予測情報決定モジュール１２０は、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測テーブル１４０に基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定することができる。前記読み出し回路１３０は、前記ターゲット予測情報を分岐命令実行及び制御ユニット２００に送信してもよく、これにより、前記分岐命令実行及び制御ユニット２００が、前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成する。
【００３４】
図２を参照すると、図２は、本発明の分岐予測回路の制御方法の実施例のステップフローチャートを示し、具体的に、以下のステップを含んでよい。
【００３５】
ステップ２０１において、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する。
【００３６】
具体的な実現において、分岐予測回路は、１つ又は複数の分岐予測器を含んでよい。プログラム実行中、分岐予測回路は、分岐予測器における予測情報決定モジュールを介して当該プログラムにおける予測対象分岐命令に対応するターゲット予測情報を決定することができる。当該予測情報決定モジュールは、導入された予測対象分岐命令に対応するプログラム識別情報及び当該分岐予測回路における分岐予測テーブル、例えば、ＰＨＴテーブル、ＢＴＢテーブルなどに基づき、当該予測対象分岐命令に対応するターゲット予測情報を決定することができ、これにより、読み出し回路は、分岐予測テーブルから予測対象分岐命令に対応するターゲット予測情報を読み取ることができるようになる。
【００３７】
ステップ２０２において、前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成する。
【００３８】
本発明の実施例において、読み出し回路がターゲット予測情報を読み取った後、読み取られたターゲット予測情報を分岐命令実行及び制御ユニットに送信することができ、これにより、分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行うようにトリガーされる。具体的に、分岐命令実行及び制御ユニットがターゲット予測情報を受信した後、当該ターゲット予測情報を用いて予測対象分岐命令に対して予測処理を行い、対応する予測結果を生成することができ、その後、当該予測結果をプロセッサの内部に保存し、これにより、分岐命令によって引き起こされるパイプラインのブロックを回避でき、命令パイプラインのスループットを向上させる。
【００３９】
具体的な実現において、分岐予測回路は、分岐命令を実行するプロセッサに適用される。図３に示すように、ＣＰＵは、分岐予測回路１００、分岐実行及び制御ユニット２００、プログラムカウンター３００、命令記憶ユニット４００及び他の機能部材５００を含んでもよい。そのうち、分岐予測回路１００は、１つ又は複数の分岐予測器１１０を含んでもよい。命令記憶ユニット４００は、１つ又は複数の命令を記憶することができ、例えば、命令１、命令２、命令３……命令ｎなどがあってもよく、ｎが整数である。分岐予測回路１００は、プログラムカウンター３００を介して命令記憶ユニット４００に記憶されている命令の命令アドレス情報、例えば、分岐命令のＰＣ値を取得することができる。かつ、分岐予測器１１０を介し、導入されたプログラム識別情報１５０、予測対象分岐命令の命令アドレス情報及び分岐予測テーブルに基づき、当該予測対象分岐命令に対応するターゲット予測情報を決定することができる。また、ターゲット予測情報を分岐実行及び制御ユニット２００に送信することにより、分岐実行及び制御ユニット２００は、ターゲット予測情報に基づいて予測処理を行うことができる。
【００４０】
本発明の１つの例として、プロセッサ実行中、システムソフトウェアを介して予測対象分岐命令に対応するプログラムを識別し、これにより、当該予測対象分岐命令に対応するプログラム識別情報を識別することができる。具体的に、プロセッサによって実行されるようにプログラムが当該プロセッサにはスケジュールされた場合、システムソフトウェアは当該プログラムのプログラム識別情報を感知することができ、かつ、感知したプログラム識別情報をプロセッサに伝達し、例えば、レジスタを設定するなどの方式でプログラム識別情報をプロセッサハードウェアに伝達することができ、これにより、プロセッサは実行されている命令に対応するプログラム識別情報を識別することができ、また当該プログラム識別情報を当該プログラムにおける予測対象分岐命令に対応するプログラム識別情報として決定することができるようになり、これにより、当該プログラム識別情報によって異なるプロセス中のプログラムの分岐予測を隔離させることができる。
【００４１】
説明すべきものとして、プログラム識別情報は異なるプログラム間の差別特徴、例えば、仮想マシン番号、プロセス番号、アドレスセグメント情報、仮想アドレス又は物理アドレスの一部のビット情報などを区別するために使用されてもよい。そのうち、仮想マシン番号は異なる仮想マシン中のプログラムを区別するために使用されてもよい。プロセス番号は異なるプロセス中のプログラムを区別するために使用されてもよい。アドレスセグメント情報はユーザプログラムとシステムプログラムを区別するために使用されてもよい。当然ながら、プログラム識別情報はまた、例えば、オペレーティングシステムなどのシステムソフトウェアによってプログラムに付加された他の識別（Ｉｄｅｎｔｉｔｙ、ＩＤ）情報であってもよく、本発明の実施例はこれを限定しない。
【００４２】
例えば、オペレーティングシステムは、プロセススケジュールを行う場合、プロセス番号をプロセッサ内部の１つのハードウェアに存在するレジスタ中に書き込むことができ、これにより、プロセッサは当該レジスタからプロセス番号を読み出すことができ、かつ、当該プロセス番号を予測対象分岐命令に対応するプログラム識別情報とすることができるようになる。また、例えば、アドレス空間の切り替えの場合、オペレーティングシステムはプロセッサ内部のセグメントレジスタの内容を変更し、即ち、当該セグメントレジスタによって記録されたセグメントアドレス情報を変更することができ、これにより、プロセッサは変更したセグメントアドレス情報を予測対象分岐命令に対応するプログラム識別情報として識別することができるようになる。そのうち、セグメントレジスタは、プロセッサ内部の１つのハードウェアに存在するレジスタであってもよい。
【００４３】
本例において、プログラム識別マーク情報を用いて、分岐予測器の分岐予測テーブルにおける異なるプログラムに属する予測情報を隔離させてもよい。例えば、プログラム識別情報を分岐予測器のアクセスアドレスの計算過程に導入し、例えば、ハッシュ（Ｈａｓｈ）などの方式でプログラム識別情報と予測対象分岐命令の命令アドレス情報を計算し、これにより、当該分岐命令に対応するターゲット予測情報を得ることができる。当該ターゲット予測情報は分岐命令に対応して予測されたスキップ方向、スキップターゲットなどをキャラクタリゼーションするために使用されることができる。
【００４４】
また、例えば、分岐予測テーブルの各エントリに「プログラム識別情報」ドメインを追加することができ、これにより、プログラム識別情報は分岐予測器を制御する操作に参与することができ、これにより、異なるプログラム中の分岐命令は異なる分岐予測器のエントリにアクセスすることができるようになり、分岐予測器中の異なるプログラムに属するエントリを隔離させることが実現される。そのうち、分岐予測テーブルのエントリに記録された情報は分岐命令に対応する分岐予測情報、例えば、スキップターゲット情報、スキップ方向情報などを含んでもよい。スキップターゲット情報は分岐命令に対応して予測されたスキップターゲット、例えば、スキップターゲットアドレスなどを決定するために使用されてもよい。スキップ方向情報は、予測対象分岐命令に対応して予測されたスキップ方向を決定するために使用されてもよく、例えば、スキップターゲット情報が「１」である場合、予測対象分岐命令に対応して予測されたスキップ方向が「スキップ」であると決定することができる。スキップターゲット情報が「０」である場合、予測対象分岐命令に対応して予測されたスキップ方向が「スキップしない」であると決定することができる。
【００４５】
予測対象分岐命令に対応するターゲット予測情報を決定した後、分岐予測器は当該ターゲット予測情報を分岐実行及び制御ユニットに送信することができ、これにより、分岐実行及び制御ユニットは当該ターゲット予測情報を用いて当該予測対象分岐命令に対して予測処理を行い、対応する予測結果を得ることができ、その後、当該予測結果をプロセッサの内部に保存することができ、例えば、予測結果を、キャッシュ（Ｃａｃｈｅ）、分岐予測テーブル、名前変更レジスタなどの内部一時バッファに保存することができ、これにより、分岐命令によって引き起こされるパイプラインのブロックを回避でき、命令パイプラインのスループットを向上させるとともに、プロセッサの性能を向上させる。
【００４６】
要約すると、本発明の実施例は、予測対象分岐命令に対応するプログラム識別情報を識別した後、当該プログラム識別情報に基づいて予測対象分岐命令に対応するターゲット予測情報を決定することができ、これにより、異なるプログラム間の分岐予測は互いに干渉しないようになり、分岐予測器における異なるプログラムの分岐予測情報を隔離させることが実現され、これにより、分岐予測器を用いて実行する攻撃中の必須リンクを確立し難くようになり、分岐予測器を用いて実行する攻撃の成功率を大幅に低下させ得る。
【００４７】
具体的な実現において、ハードウェア分岐予測の核となる構想は、分岐実行の過去の履歴情報基づいて分岐の動作を予測することであってもよい。これらの予測のための履歴情報は分岐予測器の分岐予測テーブルに格納されることができる。したがって、任意の分岐命令の実行情報は分岐予測判定に参与することができる。分岐予測器の分岐予測テーブルは、ＢＴＢテーブル、ＰＨＴテーブル、リターンアドレススタック（Ｒｅｔｕｒｎ  Ａｄｄｒｅｓｓｅｓ  Ｓｔａｃｋ、ＲＡＳ）テーブルなどを含むが、それらに限定されず、本発明の実施例はこれを限定しない。
【００４８】
具体的に、分岐命令を実行完了した後、分岐命令のスキップ方向とスキップターゲットを決定することができ、その後、この分岐命令の関連情報を分岐予測器の分岐予測テーブルのエントリに入力することができる。関連情報は、分岐予測に関連する情報を含むことができ、具体的に、分岐命令に対応するプログラム識別情報、分岐予測情報、命令アドレス情報などを含むことができる。そのうち、命令アドレス情報は分岐命令のアドレスを特定するために使用されることができ、例えば、分岐予測のＰＣのために使用されることができる。分岐予測情報はスキップターゲット情報及び／又はスキップ方向情報を含むことができる。スキップターゲット情報によって分岐命令に対応する予測スキップターゲット、例えば、予測したスキップターゲットアドレスを特定することができる。スキップ方向情報は、分岐命令に対応する予測方向、例えば、分岐命令に対して予測されたスキップ方向などを決定するために使用されることができる。
【００４９】
本発明の１つの選択的な実施例において、分岐予測回路はプロセッサに適用され、当該分岐予測回路の分岐予測器は、更新回路をさらに含んでもよい。当該更新回路は前記プロセッサによって実行されている分岐命令の命令アドレス情報に基づき、前記分岐予測テーブルにおける記録情報を更新することができる。そのうち、前記記録情報は、前記命令アドレス情報に対応するプログラム識別情報と分岐予測情報を含む。
【００５０】
選択的に、本発明の実施例に係る分岐予測回路の制御方法は、プロセッサによって実行されている分岐命令の命令アドレス情報に基づき、前記分岐予測テーブルにおける記録情報を更新するステップであって、そのうち、前記記録情報は前記命令アドレス情報に対応するプログラム識別情報と分岐予測情報を含むステップをさらに含んでもよい。具体的に、プロセッサ実行中、前記プロセッサによって実行されているプログラム中の分岐命令に対し、命令アドレス情報を取得し、取得された命令アドレス情報に基づいて前記分岐命令に対応する分岐予測情報を確立することができる。そのうち、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも１項を含む。その後、同一分岐命令の場合、分岐予測テーブルで前記分岐予測情報と前記プログラム識別情報を関連させて記憶することができ、分岐命令に対応する分岐予測情報及びプログラム識別情報を分岐予測テーブルに記録することを実現する。例えば、分岐予測器には、分岐予測テーブルではじめてとある分岐命令のエントリを確立する場合、分岐予測のためのＰＣ、分岐履歴予測方向、予測スキップターゲットなどの情報を確立されたエントリに入力すると同時に、当該分岐命令に対応するプログラム識別情報を当該エントリに入力することができ、これにより、プログラム識別情報とＰＣに基づいてあとで分岐予測を行うことができる。
【００５１】
これからわかるように、本発明の実施例における分岐予測器の分岐予測テーブルの記録情報は、従来の分岐予測器によって記録された分岐予測のためのＰＣ、分岐履歴予測方向、予測スキップターゲットだけではなく、新たに追加されたプログラム識別情報をも含んでおり、分岐予測器の分岐予測テーブル構造が変えられ、これにより、分岐予測器はプログラム識別情報に基づいて分岐予測を行うことができる。
【００５２】
本発明の１つの選択的な実施形態において、前記予測情報決定モジュールは、第１の探索回路と第２の探索回路を含んでもよい。前記第１の探索回路は前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索することができる。前記第２の探索回路は前記分岐予測テーブルで、前記第１の探索回路によって探索された分岐予測情報に対応するプログラム識別情報を探索することができる。探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することができる。
【００５３】
本発明の実施例において、選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する上記ステップは、前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索するステップと、前記分岐予測テーブルで、前記分岐予測情報に対応するプログラム識別情報を探索するステップと、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含んでもよい。
【００５４】
具体的な実現において、第１の探索回路は前記分岐予測器の分岐予測テーブルで、予測対象分岐命令に対応してプリセットされた分岐予測情報を探索することができる。第１の探索回路が分岐予測情報を探索した後、第２の探索回路は分岐予測テーブルで、前記分岐予測情報に対応するプログラム識別情報を探索し、探索された分岐予測情報に対応するプログラム識別情報が前記分岐命令に対応するプログラム識別情報にマッチするかどうかを判定することができる。マッチする場合、前記探索された分岐予測情報から前記ターゲット予測情報を抽出することができる。マッチしない場合、前記分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することができる。
【００５５】
本発明の１つの選択的な実施例において、前記分岐予測情報に対応するプログラム識別情報を探索する前記ステップの後、前記探索されたプログラム識別情報を前記予測対象分岐命令に対応する現在のプログラム識別情報と比較するステップをさらに含んでもよい。具体的に、第２の探索回路は、探索されたプログラム識別情報を前記予測対象分岐命令に対応する現在のプログラム識別情報と比較し、探索されたプログラム識別情報と予測対象分岐命令に対応する現在のプログラム識別情報が同じであるかどうかを判定してもよい。
【００５６】
１つの選択的な実施形態において、第２の探索回路は、比較サブ回路と適応サブ回路を含んでもよい。前記比較サブ回路は前記探索されたプログラム識別情報を前記予測対象分岐命令に対応する現在のプログラム識別情報と比較する。前記適応サブ回路は、前記探索されたプログラム識別情報と前記現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、前記探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
【００５７】
具体的に、第１の探索回路は前記分岐予測器の分岐予測テーブルで、予測対象分岐命令に対応する分岐予測情報を探索することができ、例えば、分岐予測テーブルでとあるエントリに記録された分岐命令ＰＣと現在予測対象分岐命令のＰＣが同じである場合、当該エントリに記録された分岐予測情報を探索された分岐予測情報として決定することができる。第２の探索回路における比較サブ回路は、分岐予測テーブルから、探索された分岐予測情報に対応するプログラム識別情報を取得し、取得されたプログラム識別情報を予測対象分岐命令に対応する現在のプログラム識別情報と比較し、取得されたプログラム識別情報と予測対象分岐命令に対応するプログラム情報が同じであるかどうかを判定することができる。取得されたプログラム識別情報と予測対象分岐命令に対応するプログラム情報が同じである場合、探索された分岐予測情報をターゲット予測情報として決定することができる。そうではない場合、探索された分岐予測情報を破棄し、継続的に当該予測対象分岐命令に対して分岐予測テーブルで対応する分岐予測情報を探索することができる。
【００５８】
例えば、分岐予測器を使用して分岐予測を行う場合、第１の探索回路は伝統的な探索方式を用いて分岐予測器の分岐予測テーブルで探索し、予測対象分岐命令の分岐予測情報を得ることができる。予測対象分岐命令の分岐予測情報を得ることに基づき、第２の探索回路における比較サブ回路は予測対象分岐命令に対応するプログラム識別情報を探索し得られた分岐予測情報の位置するエントリ中のプログラム識別情報と比較することができる。予測対象分岐命令に対応するプログラム識別情報と探索し得られた分岐予測情報の位置するエントリ中のプログラム識別情報が同じであり、即ち、予測対象分岐命令のＰＣと探索されたエントリ中の分岐命令ＰＣが同じであり、かつ、予測対象分岐命令に対応するプログラム識別情報と当該エントリ中のプログラム識別情報が同じである場合、当該エントリ中の分岐予測情報をターゲット予測情報として決定することができ、かつ、当該エントリからターゲット予測情報を抽出することができ、これにより、当該ターゲット予測情報を使用して予測処理を行い、当該予測対象分岐命令に対応する予測結果を得る。予測対象分岐命令に対応するプログラム識別情報と探索し得られた分岐予測情報の位置するエントリ中のプログラム識別情報が同じではなく、例えば、予測対象分岐命令のＰＣと探索されたエントリ中の分岐命令ＰＣが同じであるが、分岐命令に対応するプログラム識別情報と当該エントリ中のプログラム識別情報が同じではない場合、探索された分岐予測情報を破棄し、１つのランダム予測情報を生成することができ、かつ、当該ランダム予測情報をターゲット予測情報として、プロセッサに使用されるように返すことができ、これにより、プロセッサは当該ランダム予測情報に基づいて予測処理を行うようになり、これにより、攻撃の成功率を低下させる。当然ながら、また、予測対象分岐命令に対応するプログラム識別情報と当該エントリ中のプログラム識別情報が同じであり、予測対象分岐命令のＰＣと探索されたエントリ中の分岐命令ＰＣが同じではない場合、１つのランダム予測情報を生成してプロセッサに返してもよく、本発明の実施例はこれを限定しない。
【００５９】
説明すべきものとして、ランダム予測情報は分岐予測情報の数値範囲と一致する１つのランダム値であってもよい。例えば、通常通りに返された分岐予測情報が０と１である場合、返されたランダム予測情報は０と１のランダムのいずれか１つであってもよい。また、例えば、通常の分岐予測情報が６４ビットのアドレスデータである場合、返されたランダム予測情報は１つの６４ビットのランダム数などであってもよい。
【００６０】
当然ながら、本発明の実施例はまた、予測対象分岐命令に対応する現在の対応するプログラム識別情報に基づいて分岐予測テーブルで対応する分岐予測情報を探索し、探索された分岐予測情報に対応してプリセットされた命令アドレス情報を当該予測対象分岐命令の命令アドレス情報と比較することができ、これにより、プリセットされたプリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じである場合、探索された分岐予測情報を用いてターゲット予測情報を決定し、本発明の実施例はこれを具体的に限定しない。
【００６１】
本発明の別の選択的な実施形態において、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する上記ステップは、前記予測対象分岐命令に対応する現在のプログラム識別情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索するステップと、探索された分岐予測情報に対応してプリセットされた命令アドレス情報を前記予測対象分岐命令の命令アドレス情報と比較するステップと、プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じである場合、前記探索された分岐予測情報から前記ターゲット予測情報を抽出するステップと、プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含んでもよい。
【００６２】
具体的な実現において、前記予測情報決定モジュールは第５の探索回路と第６の探索回路を含んでもよい。前記第５の探索回路は前記予測対象分岐命令に対応する現在のプログラム識別情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索する。前記第６の探索回路は、探索された分岐予測情報に対応してプリセットされた命令アドレス情報を前記予測対象分岐命令の命令アドレス情報と比較する。プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じである場合、前記探索された分岐予測情報から前記ターゲット予測情報を抽出し、また、プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
【００６３】
本発明の実施例において、選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定するステップは、
前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索するステップと、
探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出するステップと、
探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
【００６４】
具体的な実現において、前記予測情報決定モジュールは、第３の探索回路を含む。
前記第３の探索回路は、前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索する。探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
【００６５】
本発明の実施例において、選択的に、分岐予測回路の制御方法は、分岐命令の分岐結果に基づいて前記分岐予測テーブルにおける修正対象である分岐予測情報を決定するステップであって、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも１項を含むステップと、前記修正対象である分岐予測情報に対応するプログラム識別情報を前記分岐命令のプログラム識別情報と比較するステップと、前記修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じである場合、前記分岐結果に基づいて前記修正対象である分岐予測情報を修正するステップと、をさらに含む。
【００６６】
具体的な実現において、更新回路は分岐命令の分岐結果に基づいて前記分岐予測テーブルにおける修正対象である分岐予測情報を決定することができ、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも１項を含む。前記第２の探索回路は前記修正対象である分岐予測情報に対応するプログラム識別情報を前記分岐命令のプログラム識別情報と比較し、これにより、修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じであるかどうかを決定する。前記修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じである場合、前記更新回路は前記分岐結果に基づいて前記修正対象である分岐予測情報を修正する。
【００６７】
本発明の１つの選択的な例において、分岐実行及び制御ユニットは、分岐命令を実行した後、当該分岐命令の分岐結果を生成することができ、かつ、当該分岐結果を分岐予測器に送信することができ、これにより、分岐予測器が当該分岐結果に基づいて分岐予測テーブルにおける記録情報を更新するようにトリガーし、分岐予測テーブルの精度を決定する。具体的に、分岐予測器における更新回路は分岐命令の分岐結果に基づいて修正対象である分岐予測情報を決定することができる。その後、第２の探索回路における比較サブ回路を介して前記修正対象である分岐予測情報に対応するプログラム識別情報を前記分岐命令のプログラム識別情報と比較することができ、これにより、修正対象である分岐予測情報に対応するプログラム識別情報と分岐命令のプログラム識別情報が同じであるかどうかを判定する。前記修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じである場合、更新回路は前記分岐結果に基づいて修正対象である分岐予測情報を修正することができる。
【００６８】
例えば、分岐結果に基づいて分岐予測器の分岐予測テーブルの既存のエントリを修正する場合、分岐予測器は分岐命令に対応するプログラム識別情報を分岐予測テーブルにおける修正されたエントリ中のプログラム識別情報と比較することができる。分岐命令に対応するプログラム識別情報と修正されたエントリ中のプログラム識別情報が同じであり、かつ、分岐命令のＰＣと探索した当該エントリ中の分岐命令ＰＣが同じであり、即ち、プログラム識別情報とＰＣの両者が同じである場合、当該分岐結果中の実際のスキップ方向に基づいて修正されたエントリ中の予測方向を修正することができ、及び／又は、当該分岐結果中の実際のスキップターゲットアドレスに基づいて修正されたエントリ中の予測スキップターゲットを修正することができる。分岐命令に対応するプログラム識別情報と修正されたエントリ中のプログラム識別情報が同じではない場合、当該分岐命令の分岐結果に基づいて修正されたエントリを修正しなくてもよい。
【００６９】
説明すべきものとして、分岐予測器のエントリに保存されたプログラム識別情報は、システムソフトウェアによって設定された完全なプログラム識別情報であってもよく、完全なプログラム識別情報が圧縮又はマッピング変換された後の情報などであってもよく、本発明の実施例はこれを限定しない。
【００７０】
本発明の実施例に係る制御方法は様々なタイプの分岐予測器に適用されることができる。以下は具体的な分岐予測器を合わせて本発明についてさらに例を挙げて説明する。
【００７１】
具体的に、分岐予測器の分岐予測テーブルは様々な分岐予測構造を用いることができ、例えば、スタック構造を用いたＲＡＳテーブルであってもよく、マルチグループ接続又は完全連続構造を用いたＢＴＢテーブルであってもよく、または、ＰＨＴテーブルなどであってもよく、本発明の実施例はこれを限定しない。
【００７２】
本発明の１つの例として、プロセッサ中の分岐予測器がＢＴＢテーブルを用いて分岐予測を行う場合、当該ＢＴＢテーブルのエントリにプログラム識別情報ドメインが添加されてもよく、これにより、プロセッサは当該ＢＴＢテーブルのエントリに含まれているプログラム識別情報と分岐命令ＰＣに基づいて分岐予測器の分岐予測動作を制御することができる。そのうち、ＢＴＢテーブルは、１つの探索テーブルであってもよく、マルチグループ接続又は完全連続構造を用いてもよい。例えば、ＢＴＢテーブルに使用されたのは完全連続構造であってもよく、かつ、当該ＢＴＢテーブルの各エントリ中の情報は分岐命令ＰＣ、分岐ターゲットアドレス、分岐履歴テーブル（Ｂｒａｎｃｈ  Ｈｉｓｔｏｒｙ  Ｔａｂｌｅ、ＢＨＴ）情報及びプログラム識別情報などを含んでもよい。
【００７３】
そのうち、ＢＨＴ情報は飽和カウンター値、例えば、２ビットの飽和カウンター値であってもよい。分岐予測を行う場合、予測対象分岐命令のＰＣをＢＴＢテーブルにおける各エントリに保存されている分岐命令ＰＣと比較することができると同時に、予測対象分岐命令に対応するプログラム識別情報をＢＴＢテーブルにおける各エントリのプログラム識別情報と比較することができる。また、プログラム識別情報とＰＣの２つの比較が同じである場合、ＢＴＢテーブルで当該分岐命令の的中エントリを探索したと見なされることができ、これにより、的中エントリの分岐ターゲットアドレスに基づいてスキップターゲットを予測することができ、また、的中エントリのＢＨＴ情報に基づいてスキップが発生するかどうかを予測することができる。
【００７４】
例えば、予測対象分岐命令のＰＣとＢＴＢテーブルにおけるとあるエントリに保存されている分岐命令ＰＣが同じであり、かつ、当該エントリ中のプログラム識別情報と当該予測対象分岐命令に対応するプログラム識別情報が同じである場合、当該エントリを的中エントリとして決定することができ、その後、ＢＨＴ情報に基づいてスキップが発生するかどうかを予測することができる。１つの選択的な例において、ＢＨＴ情報が２ビットの飽和カウンター値である場合、２ビットの飽和カウンター値が２より大きい又は２に等しいである場合、分岐命令のスキップ方向が「スキップ」であると予測することができる。２ビットの飽和カウンター値が２より小さいである場合、分岐命令のスキップ方向が「スキップしない」であると予測することができる。
【００７５】
分岐命令を実行し完了した場合、当該分岐命令の実行結果（即ち、分岐結果）に基づいて分岐予測器のＢＴＢテーブルを更新することができる。具体的に、分岐命令に対応するプログラム識別情報とＢＴＢテーブルのとあるエントリに記録されたプログラム識別情報がマッチし、かつ、分岐命令のＰＣと当該エントリ中の分岐命令ＰＣがマッチし、即ち、両者が同時にマッチする場合、分岐結果に基づいてこのエントリの分岐ターゲットアドレス、予測方向などの情報を修正することができる。プログラム識別情報とＰＣの両者が同時にマッチできない場合、ＢＴＢテーブルには、当該分岐命令の既存のエントリがないと見なされることができ、例えば、分岐命令のＰＣとＢＴＢテーブルにおけるエントリに記録された分岐命令ＰＣがマッチするが、分岐命令に対応するプログラム識別情報と当該エントリのプログラム識別情報がマッチしない場合、当該分岐命令の分岐結果に対してＢＴＢテーブルで１つの新たなエントリを再確立することができる。新たなエントリを確立する場合、当該分岐命令のプログラム識別情報を新たなエントリのプログラム識別情報ドメインに入力することができ、これにより、プログラム識別情報に基づいて予測対象分岐命令に対応するターゲット予測情報をあとで決定することができる。
【００７６】
また、関数リターン命令は、特別な間接分岐命令であり、上記ＢＴＢテーブル方式を用いて予測することができるだけではなく、リターンアドレススタック（Ｒｅｔｕｒｎ  Ａｄｄｒｅｓｓｅｓ  Ｓｔａｃｋ,  ＲＡＳ）予測構造を介して予測してもよい。説明すべきものとして、関数呼び出し命令を実行する場合、リターンアドレス（即ち、関数呼び出し命令に次ぐ１番目の命令）を、ＲＡＳスタックにプッシュすることができる。関数がリターンする場合、ＲＡＳスタックトップからリターンアドレスとしてポップすることができる。
【００７７】
本発明の実施例を適用すると、ＲＡＳにプログラム識別情報ドメインを追加することができ、これにより、ＲＡＳにプッシュされたプログラム識別情報に基づいてスタックトップから読み取ったリターンアドレスが使用できるかどうかを決定することができる。具体的に、ＲＡＳはスタック構造を用いることができる。関数呼び出し命令はリターンアドレスをスタックにプッシュすることができる。関数リターン命令がＲＡＳを用いて予測する場合、スタックトップアイテムのリターンアドレスを予測されたスキップターゲットとして読み出すことができ、さらに、当該スタックトップアイテムのプログラム識別情報に基づいて当該リターンアドレスを使用して予測処理を行うかどうかを判定することができる。例えば、関数呼び出し命令が実行される場合、当該命令に次ぐＰＣ値（即ち、関数リターンアドレス）をスタックトップからプッシュすると同時に、当該関数のプログラム識別情報をスタックにプッシュすることもできる。関数リターン命令がＲＡＳを用いて予測する場合、スタックトップからプログラム識別情報とリターンアドレスを同時に取り出すことができ、かつ、現在のプログラム識別情報を取り出したプログラム識別情報と比較し、また、両者が同じである場合、ＲＡＳに的中したと見なされ、取り出されたリターンアドレスを予測されたスキップターゲットとし、そうではない場合、１つのランダム予測値をリターンすることができる。
【００７８】
本発明の別の例として、分岐予測器がＰＨＴテーブルを用いて予測する場合、本発明の実施例はＰＨＴテーブルのエントリにプログラム識別情報を添加することができ、これにより、当該プログラム識別情報を使用してエントリ中の飽和カウンターの有効性を制御する。説明すべきものとして、ＰＨＴテーブルはＰＣロービット直接インデックスの方式を用いて予測することができ、かつ、当該ＰＨＴテーブルの各エントリは１つの２ビットの飽和カウンターを用いて分岐スキップ方向履歴情報を記録することができる。
【００７９】
本発明の１つの選択的な実施形態において、同一プログラムに対し、異なる分岐命令に対応する飽和カウンター情報と当該プログラムのプログラム識別情報をＰＨＴテーブルの同一エントリに保存することができる。例えば、図４に示すように、いくつかの飽和カウンター情報と１つのプログラムマーク情報を１セットの４０１に合わせ、ＰＨＴテーブルの同一エントリに入力することができ、これにより、当該エントリ中のすべての飽和カウンター情報が１つのプログラム識別情報４０２を共有するようになり、これにより、ＰＨＴテーブルの各エントリにプログラム識別情報を追加することによるオーバーヘッドが削減される。
【００８０】
分岐予測を行う場合、所定のインデックス方式に基づいて指定された位置のエントリに格納されている飽和カウンター情報とプログラム識別情報を読み取ることができる。例えば、図４に示すように、予測対象分岐命令のＰＣロービットに基づき、当該ＰＨＴテーブルで当該ＰＣロービットの位置するエントリを探索することができ、当該エントリは当該ＰＣロービットに対応する飽和カウンター情報とプログラム識別情報を含むことができ、その後、探索されたエントリから飽和カウンター情報とプログラム識別情報を読み取ることができ、さらに、読み出されたプログラム識別情報を現在のプログラム識別情報と比較することができる。読み出されたプログラム識別情報と現在のプログラム識別情報が同じである場合、探索されたエントリが有効であると見なされることができ、即ち、読み出された飽和カウンター情報が有効であると決定することができ、これにより、飽和カウンター情報の内容に基づいて分岐方向を予測し、即ち、スキップが発生するかどうかを予測することができる。読み出されたプログラム識別情報と現在のプログラム識別情報が同じではない場合、読み取った飽和カウンター情報を破棄することができ、さらに、ランダム方式で分岐方向を予測することができる。分岐命令を実行し完了した場合、実行される分岐の結果に基づいてＰＨＴテーブルを更新することができる。ＰＨＴテーブルを更新する場合、所定規則に遵って指定されたエントリ飽和カウンター情報を更新することができると同時に、現在のプログラム識別情報を当該指定されたエントリに書き込むことができる。
【００８１】
具体的な実現において、ＰＨＴテーブルのエントリが限られているため、ＰＨＴテーブルにおける異なる分岐命令の競合を回避するために、全体分岐履歴などの分岐命令間の関連関係の情報を用いて異なる分岐命令を異なるエントリにハッシュ（Ｈａｓｈ）することができる。本発明の実施例はさらに、プログラム識別情報を使用してＰＨＴテーブルのエントリインデックス位置を制御することができ、即ち、プログラム識別情報を用いて分岐予測器を制御することができ、これにより、異なるプログラム中の分岐命令が分岐予測テーブルで互いに隔離されるようになり、例えば、ハッシュの方式を用いて隔離効果を達成することができる。
【００８２】
具体的に、ＰＨＴテーブルを探索して予測する場合、分岐命令のインデックスアドレスの計算は分岐命令ＰＣ又は分岐履歴情報を含むことができるだけではなく、現在のプログラム識別情報を含んでもよい。そのうち、プログラム識別情報をＰＨＴテーブルインデックスアドレスに含めて計算する方式は排他的論理和の方式であってもよく、スプライシング形式、インターウィービング形式、一部がスプライシングであるとともに一部が排他的論理和の変換形式であるなどの他の変換形式であってもよく、本発明の実施例はこれを限定しない。
【００８３】
これらの変換形式に基づき、２つの異なるプログラム識別情報値により、伝統的な方式で算出した同一インデックスアドレスを２つの異なるアドレス情報に変換することができる。同一プログラム識別情報値に基づき、伝統的な方式で算出した２つの異なるインデックスアドレスを２つの異なるアドレス情報に変換することができる。
【００８４】
本発明の１つの選択的な実施例において、前記予測情報決定モジュールは、演算回路と第４の探索回路を含んでもよい。前記演算回路は前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定し、さらに、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得ることができる。前記第４の探索回路は前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索することができる。
【００８５】
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する上記ステップは、前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定するステップと、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得るステップと、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索するステップと、を含んでもよい。
【００８６】
具体的に、分岐予測器における演算回路は、分岐予測を行う場合、予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定することができ、また、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得ることができる。その後、第４の探索回路は当該演算回路によって得られたターゲットインデックスアドレス情報に基づき、分岐予測テーブルで分岐命令に対応するターゲット予測情報を探索することができる。そのうち、分岐命令の命令アドレス情報は分岐命令のアドレス、例えば、分岐命令ＰＣ、分岐命令ＰＣのロービット情報などをキャラクタリゼーションするために使用されることができる。
【００８７】
１つの選択的な実施形態において、予測対象分岐命令に対して分岐予測を行う場合、演算回路は当該予測対象分岐命令の命令アドレス情報と分岐予測テーブルに記録された分岐履歴情報に基づいて計算し、インデックスアドレス情報を得ることができ、その後、プログラム識別情報を用いてインデックスアドレス情報に対してハッシュ処理を行い、ターゲットインデックスアドレス情報を得ることができ、これにより、第４の探索回路は当該ターゲットインデックスアドレス情報に基づいて分岐予測テーブルで当該予測対象分岐命令に対応するターゲット予測情報を探索することができる。そのうち、分岐履歴情報は分岐予測器の全体分岐履歴情報をキャラクタリゼーションするために使用されることができる。
【００８８】
本発明の１つの選択的な実施例において、前記第４の探索回路は、比較サブ回路と適応サブ回路を含んでもよい。前記比較サブ回路は前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較することができる。前記適応サブ回路は、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出し、また、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することができる。
【００８９】
選択的に、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索する上記ステップは、前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較するステップと、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出するステップと、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含んでもよい。
【００９０】
本発明の１つの選択的な例として、予測対象分岐命令ＰＣのロービット情報と分岐履歴情報に基づいて排他的論理和計算を行うことができ、例えば、予測対象分岐命令ＰＣのロービットと全体分岐履歴情報に対して逐次排他的論理和を行い、当該予測対象分岐命令のインデックスアドレス情報を得ることができる。その後、インデックスアドレス情報と現在のプログラム識別情報に対してハッシュ処理を行うことができ、例えば、インデックスアドレス情報と現在のプログラム識別情報に対して排他的論理和を行い、これにより、異なるプログラムの分岐命令は異なるエントリにアクセスすることができるようになり、分岐予測器における異なるプログラムに属するエントリを隔離させることが実現される。
【００９１】
要約すると、本発明の実施例は、プログラム識別情報を用いて分岐予測器における異なるプログラムに属するエントリを隔離させ、これにより、異なるプログラム間の分岐予測は互いに干渉しあうことなく、従来の技術において、分岐予測器のトレーニング、予測過程では、異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の動作を間接的に操ることができるようになるという問題が解決される。
【００９２】
また、本発明の実施例は、プログラム識別情報によって異なるプログラム間の分岐予測を隔離させ、方法が単純明快で、プログラム自動動作に頼らず、プログラム実行時に性能に対する負の影響を回避でき、簡潔で実用であり、回路が実現されるのに必要とする面積、遅延オーバーヘッドを減少できる。
【００９３】
説明すべきものとして、方法の実施例は、シンプルに説明するために、一連のアクションの組み合わせとして表されているが、当業者であれば、本発明の実施例は、一部のステップが本発明の実施例に基づいて他の順序で、又は同時に行われることができるため、記載のアクションの順序に限定されないと了解すべきである。次に、当業者であれば、明細書に記載の実施例が、いずれも好ましい実施例であり、それに関わるアクションが必ずしも本発明の実施例で必須なものではなくてもよいと了解すべきでもある。
【００９４】
図５は、１つの例示的実施例に基づいて示された分岐予測回路の制御に適用された電子機器５００の構造ブロック図である。例えば、電子機器５００は、携帯電話、コンピュータ、デジタルブロードキャスト端末、メッセージング機器、ゲームコンソール、タブレット機器、医療機器、フィットネス機器、パーソナルデジタルアシスタントなどであってもよい。
【００９５】
図５を参照すると、電子機器５００は、処理素子５０２、メモリ５０４、電源素子５０６、マルチメディア素子５０８、オーディオ素子５１０、入力／出力（Ｉ／Ｏ）インタフェース５１２、センサー素子５１４、及び通信素子５１６の１つ又は複数を含んでもよい。
【００９６】
処理素子５０２は、一般に、ディスプレイ、電話呼び出し、データ通信、カメラ操作、及び記録操作に関連する操作など、電子機器５００の全体的な操作を制御する。処理素子５０２は、上記の方法のステップのすべて又は一部を完了するための命令を実行するための１つ又は複数のプロセッサ５２０を含んでもよい。また、処理素子５０２は、処理素子５０２と他の素子との間の相互作用を容易にするための１つ又は複数のモジュールを含んでもよい。例えば、処理素子５０２は、マルチメディア素子５０８と処理素子５０２との間の相互作用を容易にするためのマルチメディアモジュールを含んでもよい。選択的に、プロセッサ５２０に分岐予測器が含まれてもよい。
【００９７】
メモリ５０４は、機器５００での操作ができるようにするための様々なタイプのデータを記憶するように構成されている。これらのデータの例は、電子機器５００で操作されるための任意のアプリケーションプログラム又は方法の命令、連絡先データ、電話帳データ、メッセージ、写真、ビデオなどを含む。メモリ５０４は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ）、プログラマブル読み取り専用メモリ（ＰＲＯＭ）、読み取り専用メモリ（ＲＯＭ）、磁気メモリ、フラッシュメモリ、磁気ディスク又はコンパクトディスクなどの任意のタイプの揮発性又は非揮発性記憶機器又はそれらの組み合わせによって実現されることができる。
【００９８】
電源素子５０６は電子機器５００の様々な素子に電力を提供する。電源素子５０６は、電源管理システム、１つ又は複数の電源、及び、電子機器５００のために電力を生成し、管理して分配することに関連する他の素子を含んでもよい。
【００９９】
マルチメディア素子５０８は、前記電子機器５００とユーザの間の１つの出力インタフェースを提供するスクリーンを含む。いくつかの実施例において、スクリーンは、液晶ディスプレイ（ＬＣＤ）とタッチパネル（ＴＰ）を含んでもよい。スクリーンがタッチパネルを含む場合、スクリーンは、ユーザからの入力信号を受信するために、タッチスクリーンとして実現されることができる。タッチパネルは、タッチ、スライド及びタッチパネルでのジェスチャーを感知するための１つ又は複数のタッチセンサーを含む。前記タッチセンサーは、タッチ又はスライドアクションのボーダーを感知するだけではなく、前記タッチ又はスライド操作に関連する持続時間と圧力を測定することができる。いくつかの実施例において、マルチメディア素子５０８は、１つのフロントカメラ及び／又はリアカメラを含む。電子機器５００が撮影モード又はビデオモードなどの操作モードにある場合、フロントカメラ及び／又はリアカメラが外部のマルチメディアデータを受信できる。各フロントカメラとリアカメラは、１つの固定された光学レンズシステムであってもよく、または、焦点距離と光学ズーム機能を備えていてもよい。
【０１００】
オーディオ素子５１０は、オーディオ信号を出力及び／又は入力するように構成されている。例えば、オーディオ素子５１０は１つのマイク（ＭＩＣ）を含み、電子機器５００が呼び出しモード、記録モード及び音声識別モードなどの操作モードにある場合、マイクが外部オーディオ信号を受信するように構成されている。受信されたオーディオ信号はさらに、メモリ５０４に記憶され、または、通信素子５１６を介して送信されることができる。いくつかの実施例において、オーディオ素子５１０は、オーディオ信号を出力するための１つのスピーカーをさらに含む。
【０１０１】
Ｉ／Ｏインタフェース５１２は、処理素子５０２と周辺インタフェースモジュールの間にインタフェースを提供し、上記周辺インタフェースモジュールは、キーボード、クイックホイール、ボタンなどであってもよい。これらのボタンは、ホームページボタン、音量ボタン、スタートボタン及びロックボタンを含むが、それらに限定されない。
【０１０２】
センサー素子５１４は、電子機器５００に各態様の状態評価を提供するための１つ又は複数のセンサーを含む。例えば、センサー素子５１４は、機器５００のオン／オフ状態、素子の相対的なポジションを測定することができ、例えば、前記素子は電子機器５００のディスプレイ及びキーパッドであり、センサー素子５１４はまた、電子機器５００又は電子機器５００の１つの素子の位置変更、ユーザと電子機器５００との接触があるかどうか、電子機器５００の方位又は加速／減速及び電子機器５００の温度変化を測定してもよい。センサー素子５１４は、近接センサーを含んでもよく、任意の物理的接触がない場合の付近物体の存在を測定するためのものであるように構成されている。センサー素子５１４はまた、撮像用途で適用するための、ＣＭＯＳ又はＣＣＤ画像センサーなどの光センサーを含んでもよい。いくつかの実施例において、当該センサー素子５１４はまた、加速度センサー、ジャイロスコープセンサー、磁気センサー、圧力センサー又は温度センサーを含んでもよい。
【０１０３】
通信素子５１６は、電子機器５００と他の機器との有線又は無線方式の通信を容易にするためのものであるように構成されている。電子機器５００は、ＷｉＦｉ、２Ｇ又は３Ｇ、または、それらの組み合わせなどの通信規格に基づいた無線ネットワークにアクセスすることができる。１つの例示的実施例において、通信素子５１６は、ブロードキャストチャネルを介して外部ブロードキャスト管理システムからのブロードキャスト信号又はブロードキャスト関連情報を受信する。１つの例示的実施例において、前記通信素子５１６は、短距離通信を促進するための近距離無線通信（ＮＦＣ）モジュールをさらに含む。例えば、ＮＦＣモジュールでは、無線周波数識別（ＲＦＩＤ）技術、赤外線データ協会（ＩｒＤＡ）技術、超広帯域（ＵＷＢ）技術、ブルートゥース（登録商標）（ＢＴ）技術及び他の技術に基づいて実現することができる。
【０１０４】
例示的実施例において、電子機器５００は、上記方法を実行するための１つ又は複数の特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、デジタル信号処理デバイス（ＤＳＰＤ）、プログラマブルロジックデバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コントローラ、マイクロコントローラ、マイクロプロセッサ、または、他の電子部品によって実現されることができる。
【０１０５】
例示的な実施例において、命令を含む非一時的なコンピュータ可読記憶媒体、例えば、命令を含むメモリ５０４をさらに提供し、上記の方法を完了するために、上記命令は電子機器５００のプロセッサ５２０によって実行されることができる。例えば、前記非一時的なコンピュータ可読記憶媒体は、ＲＯＭ、ランダムアクセスメモリ（ＲＡＭ）、ＣＤ−ＲＯＭ、磁気テープ、フロッピーディスク、及び光学データ記憶機器などであってもよい。
【０１０６】
本明細書における各実施例はいずれも段階的に説明されており、各実施例は他の実施例との相違点に重点を置いて説明しており、各実施例の同様と類似の部分は互いに参考しあうことができる。
【０１０７】
当業者は、本発明の実施例の実施例が、方法、装置、又はコンピュータプログラム製品として提供されることができると理解すべきである。したがって、本発明の実施例は、完全にハードウェアの実施例、完全にソフトウェアの実施例、または、ソフトウェアとハードウェアを組み合わせた実施例の形をとることができる。さらに、本発明の実施例は、コンピュータ使用可能なプログラムコードを含む１つ又は複数のコンピュータ使用可能な記憶媒体（ディスク記憶装置、ＣＤ−ＲＯＭ、光学メモリなどを含むが、それらに限定されない）上に実施されるコンピュータプログラム製品の形をとることができる。
【０１０８】
本発明の実施例は、本発明の実施例による方法、端末装置（システム）、及びコンピュータプログラム製品のフローチャート及び／又はブロック図を参照して説明される。フローチャート及び／又はブロック図の各プロセス及び／又はブロック、及び、フローチャート及び／又はブロック図のプロセス及び／又はブロックの組み合わせは、コンピュータプログラム命令によって実現されることができると理解すべきである。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ、または、他のプログラマブルデータ処理端末機器のプロセッサに提供されて１つの機械を生成させ、これにより、コンピュータ又は他のプログラマブルデータ処理端末機器のプロセッサによって実行される命令を介してフローチャートの１つのプロセス又は複数のプロセス及び／又はブロック図の１つのブロック又は複数のブロックで指定された機能を実現するための装置を生成することができる。
【０１０９】
これらのコンピュータプログラム命令はまた、コンピュータ又は他のプログラマブルデータ処理端末機器が予測通りに動作するように導くことができるコンピュータ可読メモリに記憶されてもよく、これにより、当該コンピュータ可読メモリに記憶された命令は、命令装置を含む製品を生成し、当該指示装置は、フローチャートの１つのプロセス又は複数のプロセス及び／又はブロック図の１つのブロック又は複数のブロックで指定された機能を実現する。
【０１１０】
これらのコンピュータプログラム命令は、コンピュータ又は他のプログラマブルデータ処理端末機器にロードされてもよく、これにより、一連の操作ステップがコンピュータ又は他のプログラマブル端末機器で実行され、コンピュータによって実現される処理を生成し、これにより、コンピュータ又は他のプログラマブルデータ処理端末機器で実行された命令は、フローチャートの１つのプロセス又は複数のプロセス及び／又はブロック図の１つのブロック又は複数のブロックで指定された機能を実現するためのステップを提供する。
【０１１１】
本発明の実施例の好ましい実施例を説明したが、当業者は、基本的なクリエイティブコンセプトを習得すると、これらの実施例に追加の変更及び修正を加えることができる。したがって、添付の特許請求の範囲は、好ましい実施例及び本発明の実施例の範囲内にあるすべての変更及び修正を含むものとして解釈されることを意図している。
【０１１２】
最後に、さらに説明すべきものとして、本明細書では、第１や第２などの関係用語は、１つのエンティティ又は操作を別のエンティティ又は操作と区別するためにのみ使用され、必ずしもこれらのエンティティ又は操作間にそのような実際の関係又は順序があることを要求又は示唆していない。さらに、「含む」、「備える」という用語又はその任意の他の変形は、非排他的な包含をカバーすることを目的としており、これにより、一連の要素を含むプロセス、方法、物品、又は端末機器は、それらの要素だけでなく、明示的にリストされていない他の要素をも含み、または、そのようなプロセス、方法、物品、又は端末機器に固有の要素をも含む。より多くの制限がない場合、「１つの・・・を含む」という文で限定された要素は、前記要素を含むプロセス、方法、物品、又は端末機器に別の同じ要素があることを除外しない。
【０１１３】
以上、本発明が提供する分岐予測器の制御方法、装置、電子機器、及び記憶媒体について詳細に説明したが、本明細書に具体的な例を適用することによって本発明の原理及び実施形態について説明し、以上の実施例の説明は、本発明の方法及びその核となるアイデアを理解するのを助けるためにのみ使用されると同時に、当業者にとって、本発明のアイデアに基づき、具体的な実施形態及び適用範囲に変更が生じ、要約すると、本明細書の内容は、本発明を限定するものとして理解されるべきではない。
【図１】
2021516384.tif 000003
【図２】
2021516384.tif 000004
【図３】
2021516384.tif 000005
【図４】
2021516384.tif 000006
【図５】
2021516384.tif 000007
【手続補正書】
【提出日】令和2年8月17日(2020.8.17)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ技術の分野に関し、特に分岐予測回路及び分岐予測回路の制御方法に関する。
【背景技術】
【０００２】
現代のマイクロプロセッサ設計にプロセッサの性能を向上するための分岐予測技術を用いるのは一般的である。具体的に、プロセッサの命令パイプラインでは、分岐命令の結果によってその後の命令の命令フェッチが決定される。分岐予測技術を用いることによって分岐命令によって引き起こされるパイプラインのブロックが回避でき、できるだけ多くの命令を命令パイプラインにフェッチして実行し、これにより、命令パイプラインのスループットが向上する。
【０００３】
具体的な実現において、高性能のマイクロプロセッサに、高い精度を取得するために、動的分岐予測技術を用いて分岐命令を予測するのが一般的である。そのうち、動的分岐予測は、分岐命令によって実行された履歴に基づいて予測し、分岐命令の履歴データを保存するには複雑な分岐予測構造を使用する必要がある。分岐予測構造は主に分岐命令の分岐履歴に基づいて当該分岐命令の将来のスキップ方向とターゲットを予測する。例えば、分岐予測器を使用して予測する場合、現在予測した分岐命令のプログラムカウンター（Ｐｒｏｇｒａｍ  Ｃｏｕｎｔｅｒ、ＰＣ）の値を分岐ターゲットバッファ（Ｂｒａｎｃｈ  Ｔａｒｇｅｔ  Ｂｕｆｆｅｒ、ＢＴＢ）テーブルにおける検索対象アイテムのＰＣの値と比較することができる。現在予測した分岐命令のＰＣの値が検索対象アイテムのＰＣの値に等しくする場合、当該検索対象アイテムの飽和カウンターの値に基づいてスキップが発生するかどうかを予測し、当該分岐命令のスキップターゲットを予測し、例えば、分岐命令のスキップ方向を予測したと同時に、分岐命令のスキップターゲットアドレスを読み取る。しかしながら、従来の技術において、分岐予測器が異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の予測動作を間接的に操ることができるようになる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記問題を鑑みして、上記問題を克服するか、または、上記問題の少なくとも一部を解決する分岐予測回路、対応する分岐予測回路の制御方法及び前記分岐予測回路を持つプロセッサを提供するために、本発明の実施例を提案する。
【課題を解決するための手段】
【０００５】
上記問題を解決するために、本発明の実施例は、分岐命令を実行する能力を持つプロセッサに適用する分岐予測回路を開示し、前記分岐予測回路は、少なくとも１つの分岐予測器を含み、前記分岐予測器は予測情報決定モジュール、読み出し回路及び分岐予測テーブルを含む。そのうち、前記予測情報決定モジュールは予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する。前記読み出し回路は前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成する。
【０００６】
選択的に、前記分岐予測器は、更新回路をさらに含む。前記更新回路は前記プロセッサによって実行されている分岐命令及びこれに対応するプログラム識別情報に基づき、前記分岐予測テーブルにおける記録情報を更新し、そのうち、前記記録情報は前記実行されている分岐命令に対応する分岐予測情報を含み、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも１項を含む。
【０００７】
選択的に、前記予測情報決定モジュールは、第１の探索回路と第２の探索回路を含む。前記第１の探索回路は、前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索する。前記第２の探索回路は、前記分岐予測テーブルで、前記第１の探索回路によって探索された分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
【０００８】
選択的に、前記予測情報決定モジュールは、第３の探索回路を含む。前記第３の探索回路は前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
【０００９】
選択的に、前記予測情報決定モジュールは、演算回路と第４の探索回路を含む。前記演算回路は前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定し、また、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得る。前記第４の探索回路は前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索する。
【００１０】
選択的に、前記第４の探索回路は、比較サブ回路と適応サブ回路を含む。前記比較サブ回路は前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較する。前記適応サブ回路は、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出し、また、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
【００１１】
本発明の実施例はまた、上記の分岐予測回路が含まれるプロセッサを開示する。
【００１２】
本発明の実施例はさらに、分岐予測回路の制御方法を開示し、前記方法は、
予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定するステップと、
前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成するステップと、を含む。
【００１３】
選択的に、現在実行されている分岐命令及びこれに対応するプログラム識別情報に基づき、前記分岐予測テーブルにおける記録情報を更新し、そのうち、前記記録情報は、前記実行されている分岐命令に対応する分岐予測情報を含み、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも１項を含む。
【００１４】
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、
前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索するステップと、
前記分岐予測テーブルで、前記分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
【００１５】
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、
前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索するステップと、
探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出するステップと、
探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
【００１６】
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定するステップと、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得るステップと、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索するステップと、を含む。
【００１７】
選択的に、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索する前記ステップは、
前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較するステップと、
前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出するステップと、
前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
【発明の効果】
【００１８】
本発明の実施例は以下の利点がある。
【００１９】
本発明の実施例における分岐予測回路は、予測対象分岐命令に対応するプログラム識別情報及び分岐予測テーブルに基づき、予測対象分岐命令に対応するターゲット予測情報を決定し、当該ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行うことができる。これにより、異なるプログラム間の分岐予測は互いに干渉しないようになり、分岐予測器における異なるプログラムの分岐予測情報を隔離させることが実現され、従来の技術において、分岐予測器が異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の予測動作を間接的に操ることができるようになるという問題が解決される。
【図面の簡単な説明】
【００２０】
【図１】本発明の分岐予測器の構造概略図である。
【図２】本発明の分岐予測回路の制御方法の実施例のステップフローチャートである。
【図３】本発明の１つの例におけるプロセッサの構造概略図である。
【図４】本発明の１つの例におけるいくつかの飽和カウンター情報が１つのプログラム識別情報を共有する場合の概略図である。
【図５】１つの例示的な実施例に基づいて示した分岐予測器の制御に適用される電子機器の構造ブロック図である。
【発明を実施するための形態】
【００２１】
本発明の上記目的、特徴及び利点をさらに明瞭し、理解しやすくするために、以下は図面と具体的な実施形態を合わせて本発明についてさらに詳細に説明する。
【００２２】
現代コンピュータは通常、プログラムにおける命令をデータとしてメモリに保存することを１つの中核としている「フォン・ノイマン」アーキテクチャに遵う。プロセッサは命令に従って実行することができ、実行する前に、通常、命令をメモリからプロセッサ内部にフェッチする必要があり、この操作は「命令フェッチ」と呼ばれている。命令フェッチは、ＰＣの値をアドレスとし、当該アドレスに基づいてメモリからデータを読み取る。プロセッサ実行中、分岐命令に基づいて次の命令のＰＣを算出することができる。これにより、分岐命令の結果によってその後の命令の命令フェッチは決定されることができることがわかる。
【００２３】
例えば、プロセッサが最もシンプルな分岐履歴テーブルを使用して分岐予測を行う場合、ＰＣのロービットインデックスを用いて予測することができる。そのうち、当該分岐履歴テーブルにおける各アイテムは２ビットの飽和カウンターであり、当該アイテムに対応する分岐命令のスキップ方向履歴情報を記録するために使用されており、例えば、分岐が成功した場合、飽和カウンターに記録された飽和値に１を加算し、分岐が成功しなかった場合、飽和カウンターに記録された飽和値に１を減算する。このような分岐履歴テーブルはまた、分岐パターン履歴テーブル（Ｐａｔｔｅｒｎ  Ｈｉｓｔｏｒｙ  Ｔａｂｌｅ、ＰＨＴ）とも呼ばれている。しかしながら、ＰＨＴを使用して予測することは、分岐命令のスキップ方向のみを予測でき、分岐命令のスキップターゲットを予測できない。間接分岐命令のスキップターゲットは命令から直接に取得することができないので、間接分岐命令のスキップターゲットを予測するためのメカニズムが必要とされている。なお、ＰＨＴは通常、デコード段階のみで使用することができ、そうではない場合、命令フェッチ段階でＰＣロービットインデックスのＰＨＴを使用すると、通常命令も分岐命令として予測される恐れがある。
【００２４】
従来のプロセッサは分岐ターゲット緩衝器を使用して分岐予測を行うことができ、これにより、上記ＰＨＴを使用して予測することに存在する問題が解決される。そのうち、分岐ターゲット緩衝器はまた、分岐予測器とも呼ばれている。具体的に、分岐予測器の分岐予測テーブルがＢＴＢテーブルである場合、分岐予測器は、分岐予測する時、現在のＰＣをＢＴＢテーブルにおける検索対象アイテムのＰＣと比較し、ＢＴＢテーブルに完全連続構造が用いられている場合、現在のＰＣを完全連続構造におけるすべてのアイテムの分岐命令ＰＣと比較する。ＢＴＢテーブルにおけるとあるアイテムの分岐命令ＰＣの値が現在のＰＣの値に等しくする場合、当該アイテムを等しいアイテムとして決定することができ、及び、等しいアイテムの飽和カウンター値に基づいてスキップが発生するかどうかを予測してスキップアドレスを読み出すことができる。当該スキップアドレスは分岐命令のターゲットアドレスであってもよい。説明すべきものとして、ＢＴＢテーブルには、完全連続又はマルチグループ接続構造が用いられることができ、ＢＴＢテーブルの各アイテムに分岐命令のＰＣ、分岐命令のターゲットアドレス、及び分岐命令のスキップが発生するかどうかを予測する２ビットの飽和カウンター値を保存することができる。この２ビットの飽和カウンター値は、スキップ方向、例えば、スキップとスキップしないという２つの方向をキャラクタリゼーションするために使用することができる。
【００２５】
そのうち、分岐予測は、分岐命令の命令フェッチ又はデコード段階でそのスキップ方向とスキップターゲットアドレスを予測し、予測結果に基づいて継続的に命令フェッチをする。分岐命令を実行した後、決定した分岐スキップ方向又は分岐ターゲットアドレスに基づいて予測結果を修正することができる。分岐予測が正しいである場合、通常通りに終了することができる。そうではない場合、誤予測された後に実行されるすべての命令を取り消すことができる。
【００２６】
要約すると、分岐予測器は、プロセッサの微細構造設計の時に、性能を向上させるために導入されたものであり、ソフトウェアは直接にアクセスできないため、通常、セキュリティには関係ないと見なされている。具体的に、現代プロセッサには、性能を向上させるために、キャッシュ、分岐予測、順不同実行などの技術のいずれも実現されており、これらの技術を実現する内部一時バッファにはソフトウェアが直接にアクセスできないため、分岐予測器がセキュリティには関係なく、異なるプログラム間に物理的又は論理的な分離もないと見なされている。これにより、１つのプロセスＡによる分岐予測テーブルの変更は、もう１つのプロセスＢによって観察又は使用される可能性があり、即ち、異なるプログラムは互いに影響しあい、互いの分岐予測の動作を制御することができるようになる。攻撃者は、従来の分岐予測器設計のこの特徴を用いて、攻撃プロセスに分岐予測器をトレーニングし、これにより、攻撃されたプロセスの指定されたプログラムセグメントの予測実行の動作を制御し、さらに、最終的に攻撃目的を達成する。
【００２７】
説明すべきものとして、順不同実行と分岐予測は、命令を予測的に実行することによって性能を向上させるが、順不同実行のすべての命令は順序付けに終了する。順不同実行の一時結果は、名前変更レジスタ又はキャッシュに保存されることができる。順序付けに終了する場合、誤予測を発見した場合、上記一時結果を破棄する。予測が正しいである場合、一時結果をメモリとソフトウェアがアクセスできるレジスタに書き戻す。
【００２８】
現在、分岐予測器を用いて実行する攻撃、例えば、Ｓｐｅｃｔｒｅ攻撃は、主に中央処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、ＣＰＵ）の順不同実行と予測実行メカニズムを用いて、命令の順不同実行と取り消されることとの間のごく小さな「ギャップ」に、オペレーティングシステムスペースにオーバーランアクセスし、それから、サイドチャネル攻撃技術を用いてシステム情報を不法的に取得する。例えば、分岐予測器を用いて実行する攻撃は、通常、予測の実行と順序付けに終了の短い「隙間」に、メモリにおけるデータを上記微細構造の一時バッファに不法的に保存し、遠回しのような間接アクセスを介して本来ならばユーザが知るべきではなかった内容を予測する。
【００２９】
本発明の実施例の核となる構想の１つは、微細構造設計の角度から分岐予測器を用いて実行する攻撃を防御する。具体的に、本発明の実施例は、プログラム識別情報を使用して分岐予測器を制御し、これにより、分岐予測器による異なるプログラムの分岐予測が互いに影響しあわなく、即ち、プログラム識別情報に基づいて異なるプログラム間の予測情報の隔離を実現し、これにより、分岐予測器を用いて実行する攻撃の必須リンクを切断し、従来の技術において、分岐予測器が異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の予測動作を間接的に操ることができるようになるという問題を解決することができる。
【００３０】
説明すべきものとして、現代コンピュータに通常、カーネルモードとユーザモードが含まれている。オペレーティングシステムはカーネルモードで実行されており、ユーザプログラムはユーザモードで実行されている。ユーザモードのプログラムはカーネルモードの任意の内容にもアクセスできず、一旦オーバーランアクセスが発生した場合、ＣＰＵはプログラムの実行を中止し、オペレーティングシステムに例外信号を送信し、オペレーティングシステムは、例外信号を受信した後オーバーランアクセスのユーザプロセスを強制終了させ、これにより、セキュリティを確保する。そのうち、ユーザプログラムとシステムプログラムは異なるアドレスセグメントに配置されることができる。
【００３１】
分岐予測器を用いて実行する攻撃を防御することの１つの特別なところは、オーバーランアクセスを実行する命令が、探られるデータが位置するプログラムからのものであり、即ち、予測実行経路上のオーバーランアクセス命令が実行される時のコンテキストが、アクセスされるアドレスにアクセスする権限があり、プロセッサ内部では、不法アクセス例外によってこのアクセス命令の異常動作を察知することができない。したがって、分岐予測器を用いて実行する攻撃の防御は、アクセス場所でオーバーランアドレスのアクセス権限異常を監視することから手掛けることができず、別の方法を考える必要がある。
【００３２】
本発明の実施例は、分岐予測器を用いて実行する攻撃におけるもう１つの必須リンクから防御の考えを求めることができる。具体的に、Ａプログラムで分岐予測器をトレーニングすることによってＢプログラムの特定分岐命令の予測動作を制御できることに対し、本発明の実施例は、分岐予測器にパーティションプログラムのプログラム識別情報を追加し、これにより、Ａプログラムで分岐予測器をトレーニングして得られる結果はＡプログラムのみで使用することができ、Ｂプログラムの分岐命令はそれに影響されなくなり、即ち、Ｓｐｅｃｔｒｅ攻撃の必須リンクを切断し、これにより、攻撃の実施が破壊され、分岐予測器を用いて実行する攻撃の成功率を低下させる。
【００３３】
具体的に、本発明の実施例は、分岐予測回路を提供し、当該分岐予測回路は、少なくとも１つの分岐予測器を含んでもよく、これにより、当該分岐予測器を用いて分岐予測を行う。図１に示すように、分岐予測器１１０は、予測情報決定モジュール１２０、読み出し回路１３０及び分岐予測テーブル１４０を含んでもよい。そのうち、前記予測情報決定モジュール１２０は、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測テーブル１４０に基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定することができる。前記読み出し回路１３０は、前記ターゲット予測情報を分岐命令実行及び制御ユニット２００に送信してもよく、これにより、前記分岐命令実行及び制御ユニット２００が、前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成する。
【００３４】
図２を参照すると、図２は、本発明の分岐予測回路の制御方法の実施例のステップフローチャートを示し、具体的に、以下のステップを含んでよい。
【００３５】
ステップ１０１において、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する。
【００３６】
具体的な実現において、分岐予測回路は、１つ又は複数の分岐予測器を含んでよい。プログラム実行中、分岐予測回路は、分岐予測器における予測情報決定モジュールを介して当該プログラムにおける予測対象分岐命令に対応するターゲット予測情報を決定することができる。当該予測情報決定モジュールは、導入された予測対象分岐命令に対応するプログラム識別情報及び当該分岐予測回路における分岐予測テーブル、例えば、ＰＨＴ、ＢＴＢテーブルなどに基づき、当該予測対象分岐命令に対応するターゲット予測情報を決定することができ、これにより、読み出し回路は、分岐予測テーブルから予測対象分岐命令に対応するターゲット予測情報を読み取ることができるようになる。
【００３７】
ステップ１０２において、前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成する。
【００３８】
本発明の実施例において、読み出し回路がターゲット予測情報を読み取った後、読み取られたターゲット予測情報を分岐命令実行及び制御ユニットに送信することができ、これにより、分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行うようにトリガーされる。具体的に、分岐命令実行及び制御ユニットがターゲット予測情報を受信した後、当該ターゲット予測情報を用いて予測対象分岐命令に対して予測処理を行い、対応する予測結果を生成することができ、その後、当該予測結果をプロセッサの内部に保存し、これにより、分岐命令によって引き起こされるパイプラインのブロックを回避でき、命令パイプラインのスループットを向上させる。
【００３９】
具体的な実現において、分岐予測回路は、分岐命令を実行するプロセッサに適用される。図３に示すように、ＣＰＵは、分岐予測回路１００、分岐命令実行及び制御ユニット２００、プログラムカウンター３００、命令記憶ユニット４００及び他の機能部材５００を含んでもよい。そのうち、分岐予測回路１００は、１つ又は複数の分岐予測器１１０を含んでもよい。命令記憶ユニット４００は、１つ又は複数の命令を記憶することができ、例えば、命令１、命令２、命令３……命令ｎなどがあってもよく、ｎが整数である。分岐予測回路１００は、プログラムカウンター３００を介して命令記憶ユニット４００に記憶されている命令の命令アドレス情報、例えば、分岐命令のＰＣ値を取得することができる。かつ、分岐予測器１１０を介し、導入されたプログラム識別情報１５０、予測対象分岐命令の命令アドレス情報及び分岐予測テーブルに基づき、当該予測対象分岐命令に対応するターゲット予測情報を決定することができる。また、ターゲット予測情報を分岐命令実行及び制御ユニット２００に送信することにより、分岐命令実行及び制御ユニット２００は、ターゲット予測情報に基づいて予測処理を行うことができる。
【００４０】
本発明の１つの例として、プロセッサ実行中、システムソフトウェアを介して予測対象分岐命令に対応するプログラムを識別し、これにより、当該予測対象分岐命令に対応するプログラム識別情報を識別することができる。具体的に、プロセッサによって実行されるようにプログラムが当該プロセッサにはスケジュールされた場合、システムソフトウェアは当該プログラムのプログラム識別情報を感知することができ、かつ、感知したプログラム識別情報をプロセッサに伝達し、例えば、レジスタを設定するなどの方式でプログラム識別情報をプロセッサハードウェアに伝達することができ、これにより、プロセッサは実行されている命令に対応するプログラム識別情報を識別することができ、また当該プログラム識別情報を当該プログラムにおける予測対象分岐命令に対応するプログラム識別情報として決定することができるようになり、これにより、当該プログラム識別情報によって異なるプロセス中のプログラムの分岐予測を隔離させることができる。
【００４１】
説明すべきものとして、プログラム識別情報は異なるプログラム間の差別特徴、例えば、仮想マシン番号、プロセス番号、アドレスセグメント情報、仮想アドレス又は物理アドレスの一部のビット情報などを区別するために使用されてもよい。そのうち、仮想マシン番号は異なる仮想マシン中のプログラムを区別するために使用されてもよい。プロセス番号は異なるプロセス中のプログラムを区別するために使用されてもよい。アドレスセグメント情報はユーザプログラムとシステムプログラムを区別するために使用されてもよい。当然ながら、プログラム識別情報はまた、例えば、オペレーティングシステムなどのシステムソフトウェアによってプログラムに付加された他の識別（Ｉｄｅｎｔｉｔｙ、ＩＤ）情報であってもよく、本発明の実施例はこれを限定しない。
【００４２】
例えば、オペレーティングシステムは、プロセススケジュールを行う場合、プロセス番号をプロセッサ内部の１つのハードウェアに存在するレジスタ中に書き込むことができ、これにより、プロセッサは当該レジスタからプロセス番号を読み出すことができ、かつ、当該プロセス番号を予測対象分岐命令に対応するプログラム識別情報とすることができるようになる。また、例えば、アドレス空間の切り替えの場合、オペレーティングシステムはプロセッサ内部のセグメントレジスタの内容を変更し、即ち、当該セグメントレジスタによって記録されたセグメントアドレス情報を変更することができ、これにより、プロセッサは変更したセグメントアドレス情報を予測対象分岐命令に対応するプログラム識別情報として識別することができるようになる。そのうち、セグメントレジスタは、プロセッサ内部の１つのハードウェアに存在するレジスタであってもよい。
【００４３】
本例において、プログラム識別情報を用いて、分岐予測器の分岐予測テーブルにおける異なるプログラムに属する予測情報を隔離させてもよい。例えば、プログラム識別情報を分岐予測器のアクセスアドレスの計算過程に導入し、例えば、ハッシュ（Ｈａｓｈ）などの方式でプログラム識別情報と予測対象分岐命令の命令アドレス情報を計算し、これにより、当該分岐命令に対応するターゲット予測情報を得ることができる。当該ターゲット予測情報は分岐命令に対応して予測されたスキップ方向、スキップターゲットなどをキャラクタリゼーションするために使用されることができる。
【００４４】
また、例えば、分岐予測テーブルの各エントリに「プログラム識別情報」ドメインを追加することができ、これにより、プログラム識別情報は分岐予測器を制御する操作に参与することができ、これにより、異なるプログラム中の分岐命令は異なる分岐予測器のエントリにアクセスすることができるようになり、分岐予測器中の異なるプログラムに属するエントリを隔離させることが実現される。そのうち、分岐予測テーブルのエントリに記録された情報は分岐命令に対応する分岐予測情報、例えば、スキップターゲット情報、スキップ方向情報などを含んでもよい。スキップターゲット情報は分岐命令に対応して予測されたスキップターゲット、例えば、スキップターゲットアドレスなどを決定するために使用されてもよい。スキップ方向情報は、予測対象分岐命令に対応して予測されたスキップ方向を決定するために使用されてもよく、例えば、スキップターゲット情報が「１」である場合、予測対象分岐命令に対応して予測されたスキップ方向が「スキップ」であると決定することができる。スキップターゲット情報が「０」である場合、予測対象分岐命令に対応して予測されたスキップ方向が「スキップしない」であると決定することができる。
【００４５】
予測対象分岐命令に対応するターゲット予測情報を決定した後、分岐予測器は当該ターゲット予測情報を分岐命令実行及び制御ユニットに送信することができ、これにより、分岐命令実行及び制御ユニットは当該ターゲット予測情報を用いて当該予測対象分岐命令に対して予測処理を行い、対応する予測結果を得ることができ、その後、当該予測結果をプロセッサの内部に保存することができ、例えば、予測結果を、キャッシュ（Ｃａｃｈｅ）、分岐予測テーブル、名前変更レジスタなどの内部一時バッファに保存することができ、これにより、分岐命令によって引き起こされるパイプラインのブロックを回避でき、命令パイプラインのスループットを向上させるとともに、プロセッサの性能を向上させる。
【００４６】
要約すると、本発明の実施例は、予測対象分岐命令に対応するプログラム識別情報を識別した後、当該プログラム識別情報に基づいて予測対象分岐命令に対応するターゲット予測情報を決定することができ、これにより、異なるプログラム間の分岐予測は互いに干渉しないようになり、分岐予測器における異なるプログラムの分岐予測情報を隔離させることが実現され、これにより、分岐予測器を用いて実行する攻撃中の必須リンクを確立し難くようになり、分岐予測器を用いて実行する攻撃の成功率を大幅に低下させ得る。
【００４７】
具体的な実現において、ハードウェア分岐予測の核となる構想は、分岐実行の過去の履歴情報基づいて分岐の動作を予測することであってもよい。これらの予測のための履歴情報は分岐予測器の分岐予測テーブルに格納されることができる。したがって、任意の分岐命令の実行情報は分岐予測判定に参与することができる。分岐予測器の分岐予測テーブルは、ＢＴＢテーブル、ＰＨＴ、リターンアドレススタック（Ｒｅｔｕｒｎ  Ａｄｄｒｅｓｓｅｓ  Ｓｔａｃｋ、ＲＡＳ）テーブルなどを含むが、それらに限定されず、本発明の実施例はこれを限定しない。
【００４８】
具体的に、分岐命令を実行完了した後、分岐命令のスキップ方向とスキップターゲットを決定することができ、その後、この分岐命令の関連情報を分岐予測器の分岐予測テーブルのエントリに入力することができる。関連情報は、分岐予測に関連する情報を含むことができ、具体的に、分岐命令に対応するプログラム識別情報、分岐予測情報、命令アドレス情報などを含むことができる。そのうち、命令アドレス情報は分岐命令のアドレスを特定するために使用されることができ、例えば、分岐予測のＰＣのために使用されることができる。分岐予測情報はスキップターゲット情報及び／又はスキップ方向情報を含むことができる。スキップターゲット情報によって分岐命令に対応する予測スキップターゲット、例えば、予測したスキップターゲットアドレスを特定することができる。スキップ方向情報は、分岐命令に対応する予測方向、例えば、分岐命令に対して予測されたスキップ方向などを決定するために使用されることができる。
【００４９】
本発明の１つの選択的な実施例において、分岐予測回路はプロセッサに適用され、当該分岐予測回路の分岐予測器は、更新回路をさらに含んでもよい。当該更新回路は前記プロセッサによって実行されている分岐命令の命令アドレス情報に基づき、前記分岐予測テーブルにおける記録情報を更新することができる。そのうち、前記記録情報は、前記命令アドレス情報に対応するプログラム識別情報と分岐予測情報を含む。
【００５０】
選択的に、本発明の実施例に係る分岐予測回路の制御方法は、プロセッサによって実行されている分岐命令の命令アドレス情報に基づき、前記分岐予測テーブルにおける記録情報を更新するステップであって、そのうち、前記記録情報は前記命令アドレス情報に対応するプログラム識別情報と分岐予測情報を含むステップをさらに含んでもよい。具体的に、プロセッサ実行中、前記プロセッサによって実行されているプログラム中の分岐命令に対し、命令アドレス情報を取得し、取得された命令アドレス情報に基づいて前記分岐命令に対応する分岐予測情報を確立することができる。そのうち、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも１項を含む。その後、同一分岐命令の場合、分岐予測テーブルで前記分岐予測情報と前記プログラム識別情報を関連させて記憶することができ、分岐命令に対応する分岐予測情報及びプログラム識別情報を分岐予測テーブルに記録することを実現する。例えば、分岐予測器には、分岐予測テーブルではじめてとある分岐命令のエントリを確立する場合、分岐予測のためのＰＣ、分岐履歴予測方向、予測スキップターゲットなどの情報を確立されたエントリに入力すると同時に、当該分岐命令に対応するプログラム識別情報を当該エントリに入力することができ、これにより、プログラム識別情報とＰＣに基づいてあとで分岐予測を行うことができる。
【００５１】
これからわかるように、本発明の実施例における分岐予測器の分岐予測テーブルの記録情報は、従来の分岐予測器によって記録された分岐予測のためのＰＣ、分岐履歴予測方向、予測スキップターゲットだけではなく、新たに追加されたプログラム識別情報をも含んでおり、分岐予測器の分岐予測テーブル構造が変えられ、これにより、分岐予測器はプログラム識別情報に基づいて分岐予測を行うことができる。
【００５２】
本発明の１つの選択的な実施形態において、前記予測情報決定モジュールは、第１の探索回路と第２の探索回路を含んでもよい。前記第１の探索回路は前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索することができる。前記第２の探索回路は前記分岐予測テーブルで、前記第１の探索回路によって探索された分岐予測情報に対応するプログラム識別情報を探索することができる。探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することができる。
【００５３】
本発明の実施例において、選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する上記ステップは、前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索するステップと、前記分岐予測テーブルで、前記分岐予測情報に対応するプログラム識別情報を探索するステップと、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含んでもよい。
【００５４】
具体的な実現において、第１の探索回路は前記分岐予測器の分岐予測テーブルで、予測対象分岐命令に対応してプリセットされた分岐予測情報を探索することができる。第１の探索回路が分岐予測情報を探索した後、第２の探索回路は分岐予測テーブルで、前記分岐予測情報に対応するプログラム識別情報を探索し、探索された分岐予測情報に対応するプログラム識別情報が前記分岐命令に対応するプログラム識別情報にマッチするかどうかを判定することができる。マッチする場合、前記探索された分岐予測情報から前記ターゲット予測情報を抽出することができる。マッチしない場合、前記分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することができる。
【００５５】
本発明の１つの選択的な実施例において、前記分岐予測情報に対応するプログラム識別情報を探索する前記ステップの後、前記探索されたプログラム識別情報を前記予測対象分岐命令に対応する現在のプログラム識別情報と比較するステップをさらに含んでもよい。具体的に、第２の探索回路は、探索されたプログラム識別情報を前記予測対象分岐命令に対応する現在のプログラム識別情報と比較し、探索されたプログラム識別情報と予測対象分岐命令に対応する現在のプログラム識別情報が同じであるかどうかを判定してもよい。
【００５６】
１つの選択的な実施形態において、第２の探索回路は、比較サブ回路と適応サブ回路を含んでもよい。前記比較サブ回路は前記探索されたプログラム識別情報を前記予測対象分岐命令に対応する現在のプログラム識別情報と比較する。前記適応サブ回路は、前記探索されたプログラム識別情報と前記現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、前記探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
【００５７】
具体的に、第１の探索回路は前記分岐予測器の分岐予測テーブルで、予測対象分岐命令に対応する分岐予測情報を探索することができ、例えば、分岐予測テーブルでとあるエントリに記録された分岐命令ＰＣと現在予測対象分岐命令のＰＣが同じである場合、当該エントリに記録された分岐予測情報を探索された分岐予測情報として決定することができる。第２の探索回路における比較サブ回路は、分岐予測テーブルから、探索された分岐予測情報に対応するプログラム識別情報を取得し、取得されたプログラム識別情報を予測対象分岐命令に対応する現在のプログラム識別情報と比較し、取得されたプログラム識別情報と予測対象分岐命令に対応するプログラム情報が同じであるかどうかを判定することができる。取得されたプログラム識別情報と予測対象分岐命令に対応するプログラム情報が同じである場合、探索された分岐予測情報をターゲット予測情報として決定することができる。そうではない場合、探索された分岐予測情報を破棄し、継続的に当該予測対象分岐命令に対して分岐予測テーブルで対応する分岐予測情報を探索することができる。
【００５８】
例えば、分岐予測器を使用して分岐予測を行う場合、第１の探索回路は伝統的な探索方式を用いて分岐予測器の分岐予測テーブルで探索し、予測対象分岐命令の分岐予測情報を得ることができる。予測対象分岐命令の分岐予測情報を得ることに基づき、第２の探索回路における比較サブ回路は予測対象分岐命令に対応するプログラム識別情報を探索し得られた分岐予測情報の位置するエントリ中のプログラム識別情報と比較することができる。予測対象分岐命令に対応するプログラム識別情報と探索し得られた分岐予測情報の位置するエントリ中のプログラム識別情報が同じであり、即ち、予測対象分岐命令のＰＣと探索されたエントリ中の分岐命令ＰＣが同じであり、かつ、予測対象分岐命令に対応するプログラム識別情報と当該エントリ中のプログラム識別情報が同じである場合、当該エントリ中の分岐予測情報をターゲット予測情報として決定することができ、かつ、当該エントリからターゲット予測情報を抽出することができ、これにより、当該ターゲット予測情報を使用して予測処理を行い、当該予測対象分岐命令に対応する予測結果を得る。予測対象分岐命令に対応するプログラム識別情報と探索し得られた分岐予測情報の位置するエントリ中のプログラム識別情報が同じではなく、例えば、予測対象分岐命令のＰＣと探索されたエントリ中の分岐命令ＰＣが同じであるが、分岐命令に対応するプログラム識別情報と当該エントリ中のプログラム識別情報が同じではない場合、探索された分岐予測情報を破棄し、１つのランダム予測情報を生成することができ、かつ、当該ランダム予測情報をターゲット予測情報として、プロセッサに使用されるように返すことができ、これにより、プロセッサは当該ランダム予測情報に基づいて予測処理を行うようになり、これにより、攻撃の成功率を低下させる。当然ながら、また、予測対象分岐命令に対応するプログラム識別情報と当該エントリ中のプログラム識別情報が同じであり、予測対象分岐命令のＰＣと探索されたエントリ中の分岐命令ＰＣが同じではない場合、１つのランダム予測情報を生成してプロセッサに返してもよく、本発明の実施例はこれを限定しない。
【００５９】
説明すべきものとして、ランダム予測情報は分岐予測情報の数値範囲と一致する１つのランダム値であってもよい。例えば、通常通りに返された分岐予測情報が０と１である場合、返されたランダム予測情報は０と１のランダムのいずれか１つであってもよい。また、例えば、通常の分岐予測情報が６４ビットのアドレスデータである場合、返されたランダム予測情報は１つの６４ビットのランダム数などであってもよい。
【００６０】
当然ながら、本発明の実施例はまた、予測対象分岐命令に対応する現在の対応するプログラム識別情報に基づいて分岐予測テーブルで対応する分岐予測情報を探索し、探索された分岐予測情報に対応してプリセットされた命令アドレス情報を当該予測対象分岐命令の命令アドレス情報と比較することができ、これにより、プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じである場合、探索された分岐予測情報を用いてターゲット予測情報を決定し、本発明の実施例はこれを具体的に限定しない。
【００６１】
本発明の別の選択的な実施形態において、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する上記ステップは、前記予測対象分岐命令に対応する現在のプログラム識別情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索するステップと、探索された分岐予測情報に対応してプリセットされた命令アドレス情報を前記予測対象分岐命令の命令アドレス情報と比較するステップと、プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じである場合、前記探索された分岐予測情報から前記ターゲット予測情報を抽出するステップと、プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含んでもよい。
【００６２】
具体的な実現において、前記予測情報決定モジュールは第５の探索回路と第６の探索回路を含んでもよい。前記第５の探索回路は前記予測対象分岐命令に対応する現在のプログラム識別情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索する。前記第６の探索回路は、探索された分岐予測情報に対応してプリセットされた命令アドレス情報を前記予測対象分岐命令の命令アドレス情報と比較する。プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じである場合、前記探索された分岐予測情報から前記ターゲット予測情報を抽出し、また、プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
【００６３】
本発明の実施例において、選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定するステップは、
前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索するステップと、
探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出するステップと、
探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
【００６４】
具体的な実現において、前記予測情報決定モジュールは、第３の探索回路を含む。
前記第３の探索回路は、前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索する。探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
【００６５】
本発明の実施例において、選択的に、分岐予測回路の制御方法は、分岐命令の分岐結果に基づいて前記分岐予測テーブルにおける修正対象である分岐予測情報を決定するステップであって、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも１項を含むステップと、前記修正対象である分岐予測情報に対応するプログラム識別情報を前記分岐命令のプログラム識別情報と比較するステップと、前記修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じである場合、前記分岐結果に基づいて前記修正対象である分岐予測情報を修正するステップと、をさらに含む。
【００６６】
具体的な実現において、更新回路は分岐命令の分岐結果に基づいて前記分岐予測テーブルにおける修正対象である分岐予測情報を決定することができ、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも１項を含む。前記第２の探索回路は前記修正対象である分岐予測情報に対応するプログラム識別情報を前記分岐命令のプログラム識別情報と比較し、これにより、修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じであるかどうかを決定する。前記修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じである場合、前記更新回路は前記分岐結果に基づいて前記修正対象である分岐予測情報を修正する。
【００６７】
本発明の１つの選択的な例において、分岐命令実行及び制御ユニットは、分岐命令を実行した後、当該分岐命令の分岐結果を生成することができ、かつ、当該分岐結果を分岐予測器に送信することができ、これにより、分岐予測器が当該分岐結果に基づいて分岐予測テーブルにおける記録情報を更新するようにトリガーし、分岐予測テーブルの精度を決定する。具体的に、分岐予測器における更新回路は分岐命令の分岐結果に基づいて修正対象である分岐予測情報を決定することができる。その後、第２の探索回路における比較サブ回路を介して前記修正対象である分岐予測情報に対応するプログラム識別情報を前記分岐命令のプログラム識別情報と比較することができ、これにより、修正対象である分岐予測情報に対応するプログラム識別情報と分岐命令のプログラム識別情報が同じであるかどうかを判定する。前記修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じである場合、更新回路は前記分岐結果に基づいて修正対象である分岐予測情報を修正することができる。
【００６８】
例えば、分岐結果に基づいて分岐予測器の分岐予測テーブルの既存のエントリを修正する場合、分岐予測器は分岐命令に対応するプログラム識別情報を分岐予測テーブルにおける修正対象であるエントリ中のプログラム識別情報と比較することができる。分岐命令に対応するプログラム識別情報と修正対象であるエントリ中のプログラム識別情報が同じであり、かつ、分岐命令のＰＣと探索した当該エントリ中の分岐命令ＰＣが同じであり、即ち、プログラム識別情報とＰＣの両者が同じである場合、当該分岐結果中の実際のスキップ方向に基づいて修正対象であるエントリ中の予測方向を修正することができ、及び／又は、当該分岐結果中の実際のスキップターゲットアドレスに基づいて修正対象であるエントリ中の予測スキップターゲットを修正することができる。分岐命令に対応するプログラム識別情報と修正対象であるエントリ中のプログラム識別情報が同じではない場合、当該分岐命令の分岐結果に基づいて修正対象であるエントリを修正しなくてもよい。
【００６９】
説明すべきものとして、分岐予測器のエントリに保存されたプログラム識別情報は、システムソフトウェアによって設定された完全なプログラム識別情報であってもよく、完全なプログラム識別情報が圧縮又はマッピング変換された後の情報などであってもよく、本発明の実施例はこれを限定しない。
【００７０】
本発明の実施例に係る制御方法は様々なタイプの分岐予測器に適用されることができる。以下は具体的な分岐予測器を合わせて本発明についてさらに例を挙げて説明する。
【００７１】
具体的に、分岐予測器の分岐予測テーブルは様々な分岐予測構造を用いることができ、例えば、スタック構造を用いたＲＡＳテーブルであってもよく、マルチグループ接続又は完全連続構造を用いたＢＴＢテーブルであってもよく、または、ＰＨＴなどであってもよく、本発明の実施例はこれを限定しない。
【００７２】
本発明の１つの例として、プロセッサ中の分岐予測器がＢＴＢテーブルを用いて分岐予測を行う場合、当該ＢＴＢテーブルのエントリにプログラム識別情報ドメインが添加されてもよく、これにより、プロセッサは当該ＢＴＢテーブルのエントリに含まれているプログラム識別情報と分岐命令ＰＣに基づいて分岐予測器の分岐予測動作を制御することができる。そのうち、ＢＴＢテーブルは、１つの探索テーブルであってもよく、マルチグループ接続又は完全連続構造を用いてもよい。例えば、ＢＴＢテーブルに使用されたのは完全連続構造であってもよく、かつ、当該ＢＴＢテーブルの各エントリ中の情報は分岐命令ＰＣ、分岐ターゲットアドレス、分岐履歴テーブル（Ｂｒａｎｃｈ  Ｈｉｓｔｏｒｙ  Ｔａｂｌｅ、ＢＨＴ）情報及びプログラム識別情報などを含んでもよい。
【００７３】
そのうち、ＢＨＴ情報は飽和カウンター値、例えば、２ビットの飽和カウンター値であってもよい。分岐予測を行う場合、予測対象分岐命令のＰＣをＢＴＢテーブルにおける各エントリに保存されている分岐命令ＰＣと比較することができると同時に、予測対象分岐命令に対応するプログラム識別情報をＢＴＢテーブルにおける各エントリのプログラム識別情報と比較することができる。また、プログラム識別情報とＰＣの２つの比較が同じである場合、ＢＴＢテーブルで当該分岐命令の的中エントリを探索したと見なされることができ、これにより、的中エントリの分岐ターゲットアドレスに基づいてスキップターゲットを予測することができ、また、的中エントリのＢＨＴ情報に基づいてスキップが発生するかどうかを予測することができる。
【００７４】
例えば、予測対象分岐命令のＰＣとＢＴＢテーブルにおけるとあるエントリに保存されている分岐命令ＰＣが同じであり、かつ、当該エントリ中のプログラム識別情報と当該予測対象分岐命令に対応するプログラム識別情報が同じである場合、当該エントリを的中エントリとして決定することができ、その後、ＢＨＴ情報に基づいてスキップが発生するかどうかを予測することができる。１つの選択的な例において、ＢＨＴ情報が２ビットの飽和カウンター値である場合、２ビットの飽和カウンター値が２より大きい又は２に等しいである場合、分岐命令のスキップ方向が「スキップ」であると予測することができる。２ビットの飽和カウンター値が２より小さいである場合、分岐命令のスキップ方向が「スキップしない」であると予測することができる。
【００７５】
分岐命令を実行し完了した場合、当該分岐命令の実行結果（即ち、分岐結果）に基づいて分岐予測器のＢＴＢテーブルを更新することができる。具体的に、分岐命令に対応するプログラム識別情報とＢＴＢテーブルのとあるエントリに記録されたプログラム識別情報がマッチし、かつ、分岐命令のＰＣと当該エントリ中の分岐命令ＰＣがマッチし、即ち、両者が同時にマッチする場合、分岐結果に基づいてこのエントリの分岐ターゲットアドレス、予測方向などの情報を修正することができる。プログラム識別情報とＰＣの両者が同時にマッチできない場合、ＢＴＢテーブルには、当該分岐命令の既存のエントリがないと見なされることができ、例えば、分岐命令のＰＣとＢＴＢテーブルにおけるエントリに記録された分岐命令ＰＣがマッチするが、分岐命令に対応するプログラム識別情報と当該エントリのプログラム識別情報がマッチしない場合、当該分岐命令の分岐結果に対してＢＴＢテーブルで１つの新たなエントリを再確立することができる。新たなエントリを確立する場合、当該分岐命令のプログラム識別情報を新たなエントリのプログラム識別情報ドメインに入力することができ、これにより、プログラム識別情報に基づいて予測対象分岐命令に対応するターゲット予測情報をあとで決定することができる。
【００７６】
また、関数リターン命令は、特別な間接分岐命令であり、上記ＢＴＢテーブル方式を用いて予測することができるだけではなく、リターンアドレススタック（Ｒｅｔｕｒｎ  Ａｄｄｒｅｓｓｅｓ  Ｓｔａｃｋ、ＲＡＳ）予測構造を介して予測してもよい。説明すべきものとして、関数呼び出し命令を実行する場合、リターンアドレス（即ち、関数呼び出し命令に次ぐ１番目の命令）を、ＲＡＳスタックにプッシュすることができる。関数がリターンする場合、ＲＡＳスタックトップからリターンアドレスとしてポップすることができる。
【００７７】
本発明の実施例を適用すると、ＲＡＳにプログラム識別情報ドメインを追加することができ、これにより、ＲＡＳにプッシュされたプログラム識別情報に基づいてスタックトップから読み取ったリターンアドレスが使用できるかどうかを決定することができる。具体的に、ＲＡＳはスタック構造を用いることができる。関数呼び出し命令はリターンアドレスをスタックにプッシュすることができる。関数リターン命令がＲＡＳを用いて予測する場合、スタックトップアイテムのリターンアドレスを予測されたスキップターゲットとして読み出すことができ、さらに、当該スタックトップアイテムのプログラム識別情報に基づいて当該リターンアドレスを使用して予測処理を行うかどうかを判定することができる。例えば、関数呼び出し命令が実行される場合、当該命令に次ぐＰＣ値（即ち、関数リターンアドレス）をスタックトップからプッシュすると同時に、当該関数のプログラム識別情報をスタックにプッシュすることもできる。関数リターン命令がＲＡＳを用いて予測する場合、スタックトップからプログラム識別情報とリターンアドレスを同時に取り出すことができ、かつ、現在のプログラム識別情報を取り出したプログラム識別情報と比較し、また、両者が同じである場合、ＲＡＳに的中したと見なされ、取り出されたリターンアドレスを予測されたスキップターゲットとし、そうではない場合、１つのランダム予測値をリターンすることができる。
【００７８】
本発明の別の例として、分岐予測器がＰＨＴを用いて予測する場合、本発明の実施例はＰＨＴのエントリにプログラム識別情報を添加することができ、これにより、当該プログラム識別情報を使用してエントリ中の飽和カウンターの有効性を制御する。説明すべきものとして、ＰＨＴはＰＣロービット直接インデックスの方式を用いて予測することができ、かつ、当該ＰＨＴの各エントリは１つの２ビットの飽和カウンターを用いて分岐スキップ方向履歴情報を記録することができる。
【００７９】
本発明の１つの選択的な実施形態において、同一プログラムに対し、異なる分岐命令に対応する飽和カウンター情報と当該プログラムのプログラム識別情報をＰＨＴの同一エントリに保存することができる。例えば、図４に示すように、いくつかの飽和カウンター情報と１つのプログラム識別情報を１セットの２０１に合わせ、ＰＨＴの同一エントリに入力することができ、これにより、当該エントリ中のすべての飽和カウンター情報が１つのプログラム識別情報２０２を共有するようになり、これにより、ＰＨＴの各エントリにプログラム識別情報を追加することによるオーバーヘッドが削減される。
【００８０】
分岐予測を行う場合、所定のインデックス方式に基づいて指定された位置のエントリに格納されている飽和カウンター情報とプログラム識別情報を読み取ることができる。例えば、図４に示すように、予測対象分岐命令のＰＣロービットに基づき、当該ＰＨＴで当該ＰＣロービットの位置するエントリを探索することができ、当該エントリは当該ＰＣロービットに対応する飽和カウンター情報とプログラム識別情報を含むことができ、その後、探索されたエントリから飽和カウンター情報とプログラム識別情報を読み取ることができ、さらに、読み出されたプログラム識別情報を現在のプログラム識別情報と比較することができる。読み出されたプログラム識別情報と現在のプログラム識別情報が同じである場合、探索されたエントリが有効であると見なされることができ、即ち、読み出された飽和カウンター情報が有効であると決定することができ、これにより、飽和カウンター情報の内容に基づいて分岐方向を予測し、即ち、スキップが発生するかどうかを予測することができる。読み出されたプログラム識別情報と現在のプログラム識別情報が同じではない場合、読み取った飽和カウンター情報を破棄することができ、さらに、ランダム方式で分岐方向を予測することができる。分岐命令を実行し完了した場合、実行される分岐の結果に基づいてＰＨＴを更新することができる。ＰＨＴを更新する場合、所定規則に遵って指定されたエントリ飽和カウンター情報を更新することができると同時に、現在のプログラム識別情報を当該指定されたエントリに書き込むことができる。
【００８１】
具体的な実現において、ＰＨＴのエントリが限られているため、ＰＨＴにおける異なる分岐命令の競合を回避するために、全体分岐履歴などの分岐命令間の関連関係の情報を用いて異なる分岐命令を異なるエントリにハッシュ（Ｈａｓｈ）することができる。本発明の実施例はさらに、プログラム識別情報を使用してＰＨＴのエントリインデックス位置を制御することができ、即ち、プログラム識別情報を用いて分岐予測器を制御することができ、これにより、異なるプログラム中の分岐命令が分岐予測テーブルで互いに隔離されるようになり、例えば、ハッシュの方式を用いて隔離効果を達成することができる。
【００８２】
具体的に、ＰＨＴを探索して予測する場合、分岐命令のインデックスアドレスの計算は分岐命令ＰＣ又は分岐履歴情報を含むことができるだけではなく、現在のプログラム識別情報を含んでもよい。そのうち、プログラム識別情報をＰＨＴインデックスアドレスに含めて計算する方式は排他的論理和の方式であってもよく、スプライシング形式、インターウィービング形式、一部がスプライシングであるとともに一部が排他的論理和の変換形式であるなどの他の変換形式であってもよく、本発明の実施例はこれを限定しない。
【００８３】
これらの変換形式に基づき、２つの異なるプログラム識別情報値により、伝統的な方式で算出した同一インデックスアドレスを２つの異なるアドレス情報に変換することができる。同一プログラム識別情報値に基づき、伝統的な方式で算出した２つの異なるインデックスアドレスを２つの異なるアドレス情報に変換することができる。
【００８４】
本発明の１つの選択的な実施例において、前記予測情報決定モジュールは、演算回路と第４の探索回路を含んでもよい。前記演算回路は前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定し、さらに、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得ることができる。前記第４の探索回路は前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索することができる。
【００８５】
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する上記ステップは、前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定するステップと、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得るステップと、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索するステップと、を含んでもよい。
【００８６】
具体的に、分岐予測器における演算回路は、分岐予測を行う場合、予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定することができ、また、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得ることができる。その後、第４の探索回路は当該演算回路によって得られたターゲットインデックスアドレス情報に基づき、分岐予測テーブルで分岐命令に対応するターゲット予測情報を探索することができる。そのうち、分岐命令の命令アドレス情報は分岐命令のアドレス、例えば、分岐命令ＰＣ、分岐命令ＰＣのロービット情報などをキャラクタリゼーションするために使用されることができる。
【００８７】
１つの選択的な実施形態において、予測対象分岐命令に対して分岐予測を行う場合、演算回路は当該予測対象分岐命令の命令アドレス情報と分岐予測テーブルに記録された分岐履歴情報に基づいて計算し、インデックスアドレス情報を得ることができ、その後、プログラム識別情報を用いてインデックスアドレス情報に対してハッシュ処理を行い、ターゲットインデックスアドレス情報を得ることができ、これにより、第４の探索回路は当該ターゲットインデックスアドレス情報に基づいて分岐予測テーブルで当該予測対象分岐命令に対応するターゲット予測情報を探索することができる。そのうち、分岐履歴情報は分岐予測器の全体分岐履歴情報をキャラクタリゼーションするために使用されることができる。
【００８８】
本発明の１つの選択的な実施例において、前記第４の探索回路は、比較サブ回路と適応サブ回路を含んでもよい。前記比較サブ回路は前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較することができる。前記適応サブ回路は、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出し、また、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することができる。
【００８９】
選択的に、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索する上記ステップは、前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較するステップと、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出するステップと、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含んでもよい。
【００９０】
本発明の１つの選択的な例として、予測対象分岐命令ＰＣのロービット情報と分岐履歴情報に基づいて排他的論理和計算を行うことができ、例えば、予測対象分岐命令ＰＣのロービットと全体分岐履歴情報に対して逐次排他的論理和を行い、当該予測対象分岐命令のインデックスアドレス情報を得ることができる。その後、インデックスアドレス情報と現在のプログラム識別情報に対してハッシュ処理を行うことができ、例えば、インデックスアドレス情報と現在のプログラム識別情報に対して排他的論理和を行い、これにより、異なるプログラムの分岐命令は異なるエントリにアクセスすることができるようになり、分岐予測器における異なるプログラムに属するエントリを隔離させることが実現される。
【００９１】
要約すると、本発明の実施例は、プログラム識別情報を用いて分岐予測器における異なるプログラムに属するエントリを隔離させ、これにより、異なるプログラム間の分岐予測は互いに干渉しあうことなく、従来の技術において、分岐予測器のトレーニング、予測過程では、異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の動作を間接的に操ることができるようになるという問題が解決される。
【００９２】
また、本発明の実施例は、プログラム識別情報によって異なるプログラム間の分岐予測を隔離させ、方法が単純明快で、プログラム自動動作に頼らず、プログラム実行時に性能に対する負の影響を回避でき、簡潔で実用であり、回路が実現されるのに必要とする面積、遅延オーバーヘッドを減少できる。
【００９３】
説明すべきものとして、方法の実施例は、シンプルに説明するために、一連のアクションの組み合わせとして表されているが、当業者であれば、本発明の実施例は、一部のステップが本発明の実施例に基づいて他の順序で、又は同時に行われることができるため、記載のアクションの順序に限定されないと了解すべきである。次に、当業者であれば、明細書に記載の実施例が、いずれも好ましい実施例であり、それに関わるアクションが必ずしも本発明の実施例で必須なものではなくてもよいと了解すべきでもある。
【００９４】
図５は、１つの例示的実施例に基づいて示された分岐予測回路の制御に適用された電子機器５００の構造ブロック図である。例えば、電子機器５００は、携帯電話、コンピュータ、デジタルブロードキャスト端末、メッセージング機器、ゲームコンソール、タブレット機器、医療機器、フィットネス機器、パーソナルデジタルアシスタントなどであってもよい。
【００９５】
図５を参照すると、電子機器５００は、処理素子５０２、メモリ５０４、電源素子５０６、マルチメディア素子５０８、オーディオ素子５１０、入力／出力（Ｉ／Ｏ）インタフェース５１２、センサー素子５１４、及び通信素子５１６の１つ又は複数を含んでもよい。
【００９６】
処理素子５０２は、一般に、ディスプレイ、電話呼び出し、データ通信、カメラ操作、及び記録操作に関連する操作など、電子機器５００の全体的な操作を制御する。処理素子５０２は、上記の方法のステップのすべて又は一部を完了するための命令を実行するための１つ又は複数のプロセッサ５２０を含んでもよい。また、処理素子５０２は、処理素子５０２と他の素子との間の相互作用を容易にするための１つ又は複数のモジュールを含んでもよい。例えば、処理素子５０２は、マルチメディア素子５０８と処理素子５０２との間の相互作用を容易にするためのマルチメディアモジュールを含んでもよい。選択的に、プロセッサ５２０に分岐予測器が含まれてもよい。
【００９７】
メモリ５０４は、機器５００での操作ができるようにするための様々なタイプのデータを記憶するように構成されている。これらのデータの例は、電子機器５００で操作されるための任意のアプリケーションプログラム又は方法の命令、連絡先データ、電話帳データ、メッセージ、写真、ビデオなどを含む。メモリ５０４は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ）、プログラマブル読み取り専用メモリ（ＰＲＯＭ）、読み取り専用メモリ（ＲＯＭ）、磁気メモリ、フラッシュメモリ、磁気ディスク又はコンパクトディスクなどの任意のタイプの揮発性又は非揮発性記憶機器又はそれらの組み合わせによって実現されることができる。
【００９８】
電源素子５０６は電子機器５００の様々な素子に電力を提供する。電源素子５０６は、電源管理システム、１つ又は複数の電源、及び、電子機器５００のために電力を生成し、管理して分配することに関連する他の素子を含んでもよい。
【００９９】
マルチメディア素子５０８は、前記電子機器５００とユーザの間の１つの出力インタフェースを提供するスクリーンを含む。いくつかの実施例において、スクリーンは、液晶ディスプレイ（ＬＣＤ）とタッチパネル（ＴＰ）を含んでもよい。スクリーンがタッチパネルを含む場合、スクリーンは、ユーザからの入力信号を受信するために、タッチスクリーンとして実現されることができる。タッチパネルは、タッチ、スライド及びタッチパネルでのジェスチャーを感知するための１つ又は複数のタッチセンサーを含む。前記タッチセンサーは、タッチ又はスライドアクションのボーダーを感知するだけではなく、前記タッチ又はスライド操作に関連する持続時間と圧力を測定することができる。いくつかの実施例において、マルチメディア素子５０８は、１つのフロントカメラ及び／又はリアカメラを含む。電子機器５００が撮影モード又はビデオモードなどの操作モードにある場合、フロントカメラ及び／又はリアカメラが外部のマルチメディアデータを受信できる。各フロントカメラとリアカメラは、１つの固定された光学レンズシステムであってもよく、または、焦点距離と光学ズーム機能を備えていてもよい。
【０１００】
オーディオ素子５１０は、オーディオ信号を出力及び／又は入力するように構成されている。例えば、オーディオ素子５１０は１つのマイク（ＭＩＣ）を含み、電子機器５００が呼び出しモード、記録モード及び音声識別モードなどの操作モードにある場合、マイクが外部オーディオ信号を受信するように構成されている。受信されたオーディオ信号はさらに、メモリ５０４に記憶され、または、通信素子５１６を介して送信されることができる。いくつかの実施例において、オーディオ素子５１０は、オーディオ信号を出力するための１つのスピーカーをさらに含む。
【０１０１】
Ｉ／Ｏインタフェース５１２は、処理素子５０２と周辺インタフェースモジュールの間にインタフェースを提供し、上記周辺インタフェースモジュールは、キーボード、クイックホイール、ボタンなどであってもよい。これらのボタンは、ホームページボタン、音量ボタン、スタートボタン及びロックボタンを含むが、それらに限定されない。
【０１０２】
センサー素子５１４は、電子機器５００に各態様の状態評価を提供するための１つ又は複数のセンサーを含む。例えば、センサー素子５１４は、機器５００のオン／オフ状態、素子の相対的なポジションを測定することができ、例えば、前記素子は電子機器５００のディスプレイ及びキーパッドであり、センサー素子５１４はまた、電子機器５００又は電子機器５００の１つの素子の位置変更、ユーザと電子機器５００との接触があるかどうか、電子機器５００の方位又は加速／減速及び電子機器５００の温度変化を測定してもよい。センサー素子５１４は、近接センサーを含んでもよく、任意の物理的接触がない場合の付近物体の存在を測定するためのものであるように構成されている。センサー素子５１４はまた、撮像用途で適用するための、ＣＭＯＳ又はＣＣＤ画像センサーなどの光センサーを含んでもよい。いくつかの実施例において、当該センサー素子５１４はまた、加速度センサー、ジャイロスコープセンサー、磁気センサー、圧力センサー又は温度センサーを含んでもよい。
【０１０３】
通信素子５１６は、電子機器５００と他の機器との有線又は無線方式の通信を容易にするためのものであるように構成されている。電子機器５００は、ＷｉＦｉ、２Ｇ又は３Ｇ、または、それらの組み合わせなどの通信規格に基づいた無線ネットワークにアクセスすることができる。１つの例示的実施例において、通信素子５１６は、ブロードキャストチャネルを介して外部ブロードキャスト管理システムからのブロードキャスト信号又はブロードキャスト関連情報を受信する。１つの例示的実施例において、前記通信素子５１６は、短距離通信を促進するための近距離無線通信（ＮＦＣ）モジュールをさらに含む。例えば、ＮＦＣモジュールでは、無線周波数識別（ＲＦＩＤ）技術、赤外線データ協会（ＩｒＤＡ）技術、超広帯域（ＵＷＢ）技術、ブルートゥース（登録商標）（ＢＴ）技術及び他の技術に基づいて実現することができる。
【０１０４】
例示的実施例において、電子機器５００は、上記方法を実行するための１つ又は複数の特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、デジタル信号処理デバイス（ＤＳＰＤ）、プログラマブルロジックデバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コントローラ、マイクロコントローラ、マイクロプロセッサ、または、他の電子部品によって実現されることができる。
【０１０５】
例示的な実施例において、命令を含む非一時的なコンピュータ可読記憶媒体、例えば、命令を含むメモリ５０４をさらに提供し、上記の方法を完了するために、上記命令は電子機器５００のプロセッサ５２０によって実行されることができる。例えば、前記非一時的なコンピュータ可読記憶媒体は、ＲＯＭ、ランダムアクセスメモリ（ＲＡＭ）、ＣＤ−ＲＯＭ、磁気テープ、フロッピーディスク、及び光学データ記憶機器などであってもよい。
【０１０６】
本明細書における各実施例はいずれも段階的に説明されており、各実施例は他の実施例との相違点に重点を置いて説明しており、各実施例の同様と類似の部分は互いに参考しあうことができる。
【０１０７】
当業者は、本発明の実施例が、方法、装置、又はコンピュータプログラム製品として提供されることができると理解すべきである。したがって、本発明の実施例は、完全にハードウェアの実施例、完全にソフトウェアの実施例、または、ソフトウェアとハードウェアを組み合わせた実施例の形をとることができる。さらに、本発明の実施例は、コンピュータ使用可能なプログラムコードを含む１つ又は複数のコンピュータ使用可能な記憶媒体（ディスク記憶装置、ＣＤ−ＲＯＭ、光学メモリなどを含むが、それらに限定されない）上に実施されるコンピュータプログラム製品の形をとることができる。
【０１０８】
本発明の実施例は、本発明の実施例による方法、端末装置（システム）、及びコンピュータプログラム製品のフローチャート及び／又はブロック図を参照して説明される。フローチャート及び／又はブロック図の各プロセス及び／又はブロック、及び、フローチャート及び／又はブロック図のプロセス及び／又はブロックの組み合わせは、コンピュータプログラム命令によって実現されることができると理解すべきである。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ、または、他のプログラマブルデータ処理端末機器のプロセッサに提供されて１つの機械を生成させ、これにより、コンピュータ又は他のプログラマブルデータ処理端末機器のプロセッサによって実行される命令を介してフローチャートの１つのプロセス又は複数のプロセス及び／又はブロック図の１つのブロック又は複数のブロックで指定された機能を実現するための装置を生成することができる。
【０１０９】
これらのコンピュータプログラム命令はまた、コンピュータ又は他のプログラマブルデータ処理端末機器が予測通りに動作するように導くことができるコンピュータ可読メモリに記憶されてもよく、これにより、当該コンピュータ可読メモリに記憶された命令は、命令装置を含む製品を生成し、当該指示装置は、フローチャートの１つのプロセス又は複数のプロセス及び／又はブロック図の１つのブロック又は複数のブロックで指定された機能を実現する。
【０１１０】
これらのコンピュータプログラム命令は、コンピュータ又は他のプログラマブルデータ処理端末機器にロードされてもよく、これにより、一連の操作ステップがコンピュータ又は他のプログラマブル端末機器で実行され、コンピュータによって実現される処理を生成し、これにより、コンピュータ又は他のプログラマブルデータ処理端末機器で実行された命令は、フローチャートの１つのプロセス又は複数のプロセス及び／又はブロック図の１つのブロック又は複数のブロックで指定された機能を実現するためのステップを提供する。
【０１１１】
本発明の実施例の好ましい実施例を説明したが、当業者は、基本的なクリエイティブコンセプトを習得すると、これらの実施例に追加の変更及び修正を加えることができる。したがって、添付の特許請求の範囲は、好ましい実施例及び本発明の実施例の範囲内にあるすべての変更及び修正を含むものとして解釈されることを意図している。
【０１１２】
最後に、さらに説明すべきものとして、本明細書では、第１や第２などの関係用語は、１つのエンティティ又は操作を別のエンティティ又は操作と区別するためにのみ使用され、必ずしもこれらのエンティティ又は操作間にそのような実際の関係又は順序があることを要求又は示唆していない。さらに、「含む」、「備える」という用語又はその任意の他の変形は、非排他的な包含をカバーすることを目的としており、これにより、一連の要素を含むプロセス、方法、物品、又は端末機器は、それらの要素だけでなく、明示的にリストされていない他の要素をも含み、または、そのようなプロセス、方法、物品、又は端末機器に固有の要素をも含む。より多くの制限がない場合、「１つの・・・を含む」という文で限定された要素は、前記要素を含むプロセス、方法、物品、又は端末機器に別の同じ要素があることを除外しない。
【０１１３】
以上、本発明が提供する分岐予測器の制御方法、装置、電子機器、及び記憶媒体について詳細に説明したが、本明細書に具体的な例を適用することによって本発明の原理及び実施形態について説明し、以上の実施例の説明は、本発明の方法及びその核となるアイデアを理解するのを助けるためにのみ使用されると同時に、当業者にとって、本発明のアイデアに基づき、具体的な実施形態及び適用範囲に変更が生じ、要約すると、本明細書の内容は、本発明を限定するものとして理解されるべきではない。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
分岐予測回路であって、分岐命令を実行する能力を持つプロセッサに適用され、前記分岐予測回路は少なくとも１つの分岐予測器を含み、前記分岐予測器は予測情報決定モジュール、読み出し回路及び分岐予測テーブルを含み、
前記予測情報決定モジュールは予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定するためのものであり、
前記読み出し回路は前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成するためのものであることを特徴とする分岐予測回路。
【請求項２】
分岐予測器は、更新回路をさらに含み、前記更新回路は前記プロセッサによって実行されている分岐命令及びこれに対応するプログラム識別情報に基づき、前記分岐予測テーブルにおける記録情報を更新し、前記記録情報は、前記実行されている分岐命令に対応する分岐予測情報を含み、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも１項を含むことを特徴とする請求項１に記載の分岐予測回路。
【請求項３】
前記予測情報決定モジュールは、第１の探索回路と第２の探索回路を含み、
前記第１の探索回路は、前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索し、
前記第２の探索回路は、前記分岐予測テーブルで、前記第１の探索回路によって探索された分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することを特徴とする請求項１又は請求項２に記載の分岐予測回路。
【請求項４】
前記予測情報決定モジュールは、第３の探索回路を含み、
前記第３の探索回路は前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することを特徴とする請求項１又は請求項２に記載の分岐予測回路。
【請求項５】
前記予測情報決定モジュールは、演算回路と第４の探索回路を含み、
前記演算回路は前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定し、さらに、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得、
前記第４の探索回路は前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索することを特徴とする請求項１又は請求項２に記載の分岐予測回路。
【請求項６】
前記第４の探索回路は、比較サブ回路と適応サブ回路を含み、
前記比較サブ回路は前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較し、
前記適応サブ回路は、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出し、また、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することを特徴とする請求項５に記載の分岐予測回路。
【請求項７】
プロセッサであって、請求項１〜請求項６のいずれか１項に記載の分岐予測回路を含むことを特徴とするプロセッサ。
【請求項８】
分岐予測回路の制御方法であって、
予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定するステップと、
前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成するステップと、を含むことを特徴とする分岐予測回路の制御方法。
【請求項９】
現在実行されている分岐命令及びこれに対応するプログラム識別情報に基づき、前記分岐予測テーブルにおける記録情報を更新するステップであって、前記記録情報は、前記実行されている分岐命令に対応する分岐予測情報を含み、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも１項を含むステップをさらに含むことを特徴とする請求項８に記載の方法。
【請求項１０】
予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、
前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索するステップと、
前記分岐予測テーブルで、前記分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含むことを特徴とする請求項８又は請求項９に記載の方法。
【請求項１１】
予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、
前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索するステップと、
探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出するステップと、
探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含むことを特徴とする請求項８又は請求項９に記載の方法。
【請求項１２】
予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、
前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定するステップと、
前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得るステップと、
前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索するステップと、を含むことを特徴とする請求項８又は請求項９に記載の方法。
【請求項１３】
前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索する前記ステップは、
前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較するステップと、
前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出するステップと、
前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含むことを特徴とする請求項１２に記載の方法。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図１
【補正方法】変更
【補正の内容】
【図１】
2021516384.tif 000008
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図３
【補正方法】変更
【補正の内容】
【図３】
2021516384.tif 000009
【国際調査報告】
2021516384.tif 000010
2021516384.tif 000011
2021516384.tif 000012
2021516384.tif 000013