本発明は、コンピュータ技術の分野に関し、特に分岐予測回路及び分岐予測回路の制御方法に関する。
現代のマイクロプロセッサ設計にプロセッサの性能を向上するための分岐予測技術を用いるのは一般的である。具体的に、プロセッサの命令パイプラインでは、分岐命令の結果によってその後の命令の命令フェッチが決定される。分岐予測技術を用いることによって分岐命令によって引き起こされるパイプラインのブロックが回避でき、できるだけ多くの命令を命令パイプラインにフェッチして実行し、これにより、命令パイプラインのスループットが向上する。
具体的な実現において、高性能のマイクロプロセッサに、高い精度を取得するために、動的分岐予測技術を用いて分岐命令を推測するのが一般的である。そのうち、動的分岐予測は、分岐命令によって実行された履歴に基づいて予測し、分岐命令の履歴データを保存するには複雑な分岐予測構造を使用する必要がある。分岐予測構造は主に分岐命令の分岐履歴に基づいて当該分岐命令の将来のスキップ方向とターゲットを予測する。例えば、分岐予測器を使用して予測する場合、現在予測した分岐命令のプログラムカウンター(Program Counter、PC)の値を分岐ターゲットバッファ(Branch Target Buffer、BTB)テーブルにおける検索対象アイテムのPCの値と比較することができる。現在予測した分岐命令のPCの値が検索対象アイテムのPCの値に等しくする場合、当該検索対象アイテムの飽和カウンターの値に基づいてスキップが発生するかどうかを予測し、当該分岐命令のスキップターゲットを予測し、例えば、分岐命令のスキップ方向を予測したと同時に、分岐命令のスキップターゲットアドレスを読み取る。しかしながら、従来の技術において、分岐予測器が異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の予測動作を間接的に操ることができるようになる。
上記問題を鑑みして、上記問題を克服するか、または、上記問題の少なくとも一部を解決する分岐予測回路、対応する分岐予測回路の制御方法及び前記分岐予測回路を持つプロセッサを提供するために、本発明の実施例を提案する。
上記問題を解決するために、本発明の実施例は、分岐命令を実行する能力を持つプロセッサに適用する分岐予測回路を開示し、前記分岐予測回路は、少なくとも1つの分岐予測器を含み、前記分岐予測器は予測情報決定モジュール、読み出し回路及び分岐予測テーブルを含む。そのうち、前記予測情報決定モジュールは予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する。前記読み出し回路は前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成する。
選択的に、前記分岐予測器は、更新回路をさらに含む。前記更新回路は前記プロセッサによって実行されている分岐命令及びこれに対応するプログラム識別情報に基づき、前記分岐予測テーブルにおける記録情報を更新し、そのうち、前記記録情報は前記実行されている分岐命令に対応する分岐予測情報を含み、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも1項を含む。
選択的に、前記予測情報決定モジュールは、第1の探索回路と第2の探索回路を含む。前記第1の探索回路は、前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索する。前記第2の探索回路は、前記分岐予測テーブルで、前記第1の探索回路によって探索された分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
選択的に、前記予測情報決定モジュールは、第3の探索回路を含む。前記第3の探索回路は前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
選択的に、前記予測情報決定モジュールは、演算回路と第4の探索回路を含む。前記演算回路は前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定し、また、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得る。前記第4の探索回路は前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索する。
選択的に、前記第4の探索回路は、比較サブ回路と適応サブ回路を含む。前記比較サブ回路は前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較する。前記適応サブ回路は、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出し、また、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
本発明の実施例はまた、上記の分岐予測回路が含まれるプロセッサを開示する。
本発明の実施例はさらに、分岐予測回路の制御方法を開示し、前記方法は、
予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定するステップと、
前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成するステップと、を含む。
選択的に、現在実行されている分岐命令及びこれに対応するプログラム識別情報に基づき、前記分岐予測テーブルにおける記録情報を更新し、そのうち、前記記録情報は、前記実行されている分岐命令に対応する分岐予測情報を含み、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも1項を含む。
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、
前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索するステップと、
前記分岐予測テーブルで、前記分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、
前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索するステップと、
探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出するステップと、
探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定するステップと、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得るステップと、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索するステップと、を含む。
選択的に、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索する前記ステップは、
前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較するステップと、
前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出するステップと、
前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
本発明の実施例は以下の利点がある。
本発明の実施例における分岐予測回路は、予測対象分岐命令に対応するプログラム識別情報及び分岐予測テーブルに基づき、予測対象分岐命令に対応するターゲット予測情報を決定し、当該ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行うことができる。これにより、異なるプログラム間の分岐予測は互いに干渉しないようになり、分岐予測器における異なるプログラムの分岐予測情報を隔離させることが実現され、従来の技術において、分岐予測器が異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の予測動作を間接的に操ることができるようになるという問題が解決される。
本発明の分岐予測器の構造概略図である。
本発明の分岐予測回路の制御方法の実施例のステップフローチャートである。
本発明の1つの例におけるプロセッサの構造概略図である。
本発明の1つの例におけるいくつかの飽和カウンター情報が1つのプログラム識別情報を共有する場合の概略図である。
1つの例示的な実施例に基づいて示した分岐予測器の制御に適用される電子機器の構造ブロック図である。
本発明の上記目的、特徴及び利点をさらに明瞭し、理解しやすくするために、以下は図面と具体的な実施形態を合わせて本発明についてさらに詳細に説明する。
現代コンピュータは通常、プログラムにおける命令をデータとしてメモリに保存することを1つの中核としている「フォン・ノイマン」アーキテクチャに遵う。プロセッサは命令に従って実行することができ、実行する前に、通常、命令をメモリからプロセッサ内部にフェッチする必要があり、この操作は「命令フェッチ」と呼ばれている。命令フェッチは、PCの値をアドレスとし、当該アドレスに基づいてメモリからデータを読み取る。プロセッサ実行中、分岐命令に基づいて次の命令のPCを算出することができる。これにより、分岐命令の結果によってその後の命令の命令フェッチは決定されることができることがわかる。
例えば、プロセッサが最もシンプルな分岐履歴テーブルを使用して分岐予測を行う場合、PCのロービットインデックスを用いて予測することができる。そのうち、当該分岐履歴テーブルにおける各アイテムは2ビットの飽和カウンターであり、当該アイテムに対応する分岐命令のスキップ方向履歴情報を記録するために使用されており、例えば、分岐が成功した場合、飽和カウンターに記録された飽和値に1を加算し、分岐が成功しなかった場合、飽和カウンターに記録された飽和値に1を減算する。このような分岐履歴テーブルはまた、分岐パターン履歴テーブル(Pattern History Table、PHT)とも呼ばれている。しかしながら、PHTテーブルを使用して予測することは、分岐命令のスキップ方向のみを予測でき、分岐命令のスキップターゲットを予測できない。間接分岐命令のスキップターゲットは命令から直接に取得することができないので、間接分岐命令のスキップターゲットを予測するためのメカニズムが必要とされている。なお、PHTテーブルは通常、デコード段階のみで使用することができ、そうではない場合、命令フェッチ段階でPCロービットインデックスのPHTテーブルを使用すると、通常命令も分岐命令として予測される恐れがある。
従来のプロセッサは分岐ターゲット緩衝器を使用して分岐予測を行うことができ、これにより、上記PHTテーブルを使用して予測することに存在する問題が解決される。そのうち、分岐ターゲット緩衝器はまた、分岐予測器とも呼ばれている。具体的に、分岐予測器の分岐予測テーブルがBTBテーブルである場合、分岐予測器は、分岐予測する時、現在のPCをBTBテーブルにおける検索対象アイテムのPCと比較し、BTBテーブルに完全連続構造が用いられている場合、現在のPCを完全連続構造におけるすべてのアイテムの分岐命令PCと比較する。BTBテーブルにおけるとあるアイテムの分岐命令PCの値が現在のPCの値に等しくする場合、当該アイテムを等しいアイテムとして決定することができ、及び、等しいアイテムの飽和カウンター値に基づいてスキップが発生するかどうかを予測してスキップアドレスを読み出すことができる。当該スキップアドレスは分岐命令のターゲットアドレスであってもよい。説明すべきものとして、BTBテーブルには、完全連続又はマルチグループ接続構造が用いられることができ、BTBテーブルの各アイテムに分岐命令のPC、分岐命令のターゲットアドレス、及び分岐命令のスキップが発生するかどうかを予測する2ビットの飽和カウンター値を保存することができる。この2ビットの飽和カウンター値は、スキップ方向、例えば、スキップとスキップしないという2つの方向をキャラクタリゼーションするために使用することができる。
そのうち、分岐予測は、分岐命令の命令フェッチ又はデコード段階でそのスキップ方向とスキップターゲットアドレスを予測し、予測結果に基づいて継続的に命令フェッチをする。分岐命令を実行した後、決定した分岐スキップ方向又は分岐ターゲットアドレスに基づいて予測結果を修正することができる。分岐予測が正しいである場合、通常通りに終了することができる。そうではない場合、誤予測された後に実行されるすべての命令を取り消すことができる。
要約すると、分岐予測器は、プロセッサの微細構造設計の時に、性能を向上させるために導入されたものであり、ソフトウェアは直接にアクセスできないため、通常、セキュリティには関係ないと見なされている。具体的に、現代プロセッサには、性能を向上させるために、キャッシュ、分岐予測、順不同実行などの技術のいずれも実現されており、これらの技術を実現する内部一時バッファにはソフトウェアが直接にアクセスできないため、分岐予測器がセキュリティには関係なく、異なるプログラム間に物理的又は論理的な分離もないと見なされている。これにより、1つのプロセスAによる分岐予測テーブルの変更は、もう1つのプロセスBによって観察又は使用される可能性があり、即ち、異なるプログラムは互いに影響しあい、互いの分岐予測の動作を制御することができるようになる。攻撃者は、従来の分岐予測器設計のこの特徴を用いて、攻撃プロセスに分岐予測器をトレーニングし、これにより、攻撃されたプロセスの指定されたプログラムセグメントの予測実行の動作を制御し、さらに、最終的に攻撃目的を達成する。
説明すべきものとして、順不同実行と分岐予測は、命令を予測的に実行することによって性能を向上させるが、順不同実行のすべての命令は順序付けに終了する。順不同実行の一時結果は、名前変更レジスタ又はキャッシュに保存されることができる。順序付けに終了する場合、誤予測を発見した場合、上記一時結果を破棄する。予測が正しいである場合、一時結果をメモリとソフトウェアがアクセスできるレジスタに書き戻す。
現在、分岐予測器を用いて実行する攻撃、例えば、Spectre攻撃は、主に中央処理装置(Central Processing Unit 、CPU)の順不同実行と予測実行メカニズムを用いて、命令の順不同実行と取り消されることとの間のごく小さな「ギャップ」に、オペレーティングシステムスペースにオーバーランアクセスし、それから、サイドチャネル攻撃技術を用いてシステム情報を不法的に取得する。例えば、分岐予測器を用いて実行する攻撃は、通常、予測の実行と順序付けに終了の短い「隙間」に、メモリにおけるデータを上記微細構造の一時バッファに不法的に保存し、遠回しのような間接アクセスを介して本来ならばユーザが知るべきではなかった内容を予測する。
本発明の実施例の核となる構想の1つは、微細構造設計の角度から分岐予測器を用いて実行する攻撃を防御する。具体的に、本発明の実施例は、プログラム識別情報を使用して分岐予測器を制御し、これにより、分岐予測器による異なるプログラムの分岐予測が互いに影響しあわなく、即ち、プログラム識別情報に基づいて異なるプログラム間の予測情報の隔離を実現し、これにより、分岐予測器を用いて実行する攻撃の必須リンクを切断し、従来の技術において、分岐予測器が異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の予測動作を間接的に操ることができるようになるという問題を解決することができる。
説明すべきものとして、現代コンピュータに通常、カーネルモードとユーザモードが含まれている。オペレーティングシステムはカーネルモードで実行されており、ユーザプログラムはユーザモードで実行されている。ユーザモードのプログラムはカーネルモードの任意の内容にもアクセスできず、一旦オーバーランアクセスが発生した場合、CPUはプログラムの実行を中止し、オペレーティングシステムに例外信号を送信し、オペレーティングシステムは、例外信号を受信した後オーバーランアクセスのユーザプロセスを強制終了させ、これにより、セキュリティを確保する。そのうち、ユーザプログラムとシステムプログラムは異なるアドレスセグメントに配置されることができる。
分岐予測器を用いて実行する攻撃を防御することの1つの特別なところは、オーバーランアクセスを実行する命令が、探られるデータが位置するプログラムからのものであり、即ち、予測実行経路上のオーバーランアクセス命令が実行される時のコンテキストが、アクセスされるアドレスにアクセスする権限があり、プロセッサ内部では、不法アクセス例外によってこのアクセス命令の異常動作を察知することができない。したがって、分岐予測器を用いて実行する攻撃の防御は、アクセス場所でオーバーランアドレスのアクセス権限異常を監視することから手掛けることができず、別の方法を考える必要がある。
本発明の実施例は、分岐予測器を用いて実行する攻撃におけるもう1つの必須リンクから防御の考えを求めることができる。具体的に、Aプログラムで分岐予測器をトレーニングすることによってBプログラムの特定分岐命令の予測動作を制御できることに対し、本発明の実施例は、分岐予測器にパーティションプログラムのプログラム識別情報を追加し、これにより、Aプログラムで分岐予測器をトレーニングして得られる結果はAプログラムのみで使用することができ、Bプログラムの分岐命令はそれに影響されなくなり、即ち、Spectre攻撃の必須リンクを切断し、これにより、攻撃の実施が破壊され、分岐予測器を用いて実行する攻撃の成功率を低下させる。
具体的に、本発明の実施例は、分岐予測回路を提供し、当該分岐予測回路は、少なくとも1つの分岐予測器を含んでもよく、これにより、当該分岐予測器を用いて分岐予測を行う。図1に示すように、分岐予測器110は、予測情報決定モジュール120、読み出し回路130及び分岐予測テーブル140を含んでもよい。そのうち、前記予測情報決定モジュール120は、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測テーブル140に基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定することができる。前記読み出し回路130は、前記ターゲット予測情報を分岐命令実行及び制御ユニット200に送信してもよく、これにより、前記分岐命令実行及び制御ユニット200が、前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成する。
図2を参照すると、図2は、本発明の分岐予測回路の制御方法の実施例のステップフローチャートを示し、具体的に、以下のステップを含んでよい。
ステップ201において、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する。
具体的な実現において、分岐予測回路は、1つ又は複数の分岐予測器を含んでよい。プログラム実行中、分岐予測回路は、分岐予測器における予測情報決定モジュールを介して当該プログラムにおける予測対象分岐命令に対応するターゲット予測情報を決定することができる。当該予測情報決定モジュールは、導入された予測対象分岐命令に対応するプログラム識別情報及び当該分岐予測回路における分岐予測テーブル、例えば、PHTテーブル、BTBテーブルなどに基づき、当該予測対象分岐命令に対応するターゲット予測情報を決定することができ、これにより、読み出し回路は、分岐予測テーブルから予測対象分岐命令に対応するターゲット予測情報を読み取ることができるようになる。
ステップ202において、前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成する。
本発明の実施例において、読み出し回路がターゲット予測情報を読み取った後、読み取られたターゲット予測情報を分岐命令実行及び制御ユニットに送信することができ、これにより、分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行うようにトリガーされる。具体的に、分岐命令実行及び制御ユニットがターゲット予測情報を受信した後、当該ターゲット予測情報を用いて予測対象分岐命令に対して予測処理を行い、対応する予測結果を生成することができ、その後、当該予測結果をプロセッサの内部に保存し、これにより、分岐命令によって引き起こされるパイプラインのブロックを回避でき、命令パイプラインのスループットを向上させる。
具体的な実現において、分岐予測回路は、分岐命令を実行するプロセッサに適用される。図3に示すように、CPUは、分岐予測回路100、分岐実行及び制御ユニット200、プログラムカウンター300、命令記憶ユニット400及び他の機能部材500を含んでもよい。そのうち、分岐予測回路100は、1つ又は複数の分岐予測器110を含んでもよい。命令記憶ユニット400は、1つ又は複数の命令を記憶することができ、例えば、命令1、命令2、命令3……命令nなどがあってもよく、nが整数である。分岐予測回路100は、プログラムカウンター300を介して命令記憶ユニット400に記憶されている命令の命令アドレス情報、例えば、分岐命令のPC値を取得することができる。かつ、分岐予測器110を介し、導入されたプログラム識別情報150、予測対象分岐命令の命令アドレス情報及び分岐予測テーブルに基づき、当該予測対象分岐命令に対応するターゲット予測情報を決定することができる。また、ターゲット予測情報を分岐実行及び制御ユニット200に送信することにより、分岐実行及び制御ユニット200は、ターゲット予測情報に基づいて予測処理を行うことができる。
本発明の1つの例として、プロセッサ実行中、システムソフトウェアを介して予測対象分岐命令に対応するプログラムを識別し、これにより、当該予測対象分岐命令に対応するプログラム識別情報を識別することができる。具体的に、プロセッサによって実行されるようにプログラムが当該プロセッサにはスケジュールされた場合、システムソフトウェアは当該プログラムのプログラム識別情報を感知することができ、かつ、感知したプログラム識別情報をプロセッサに伝達し、例えば、レジスタを設定するなどの方式でプログラム識別情報をプロセッサハードウェアに伝達することができ、これにより、プロセッサは実行されている命令に対応するプログラム識別情報を識別することができ、また当該プログラム識別情報を当該プログラムにおける予測対象分岐命令に対応するプログラム識別情報として決定することができるようになり、これにより、当該プログラム識別情報によって異なるプロセス中のプログラムの分岐予測を隔離させることができる。
説明すべきものとして、プログラム識別情報は異なるプログラム間の差別特徴、例えば、仮想マシン番号、プロセス番号、アドレスセグメント情報、仮想アドレス又は物理アドレスの一部のビット情報などを区別するために使用されてもよい。そのうち、仮想マシン番号は異なる仮想マシン中のプログラムを区別するために使用されてもよい。プロセス番号は異なるプロセス中のプログラムを区別するために使用されてもよい。アドレスセグメント情報はユーザプログラムとシステムプログラムを区別するために使用されてもよい。当然ながら、プログラム識別情報はまた、例えば、オペレーティングシステムなどのシステムソフトウェアによってプログラムに付加された他の識別(Identity、ID)情報であってもよく、本発明の実施例はこれを限定しない。
例えば、オペレーティングシステムは、プロセススケジュールを行う場合、プロセス番号をプロセッサ内部の1つのハードウェアに存在するレジスタ中に書き込むことができ、これにより、プロセッサは当該レジスタからプロセス番号を読み出すことができ、かつ、当該プロセス番号を予測対象分岐命令に対応するプログラム識別情報とすることができるようになる。また、例えば、アドレス空間の切り替えの場合、オペレーティングシステムはプロセッサ内部のセグメントレジスタの内容を変更し、即ち、当該セグメントレジスタによって記録されたセグメントアドレス情報を変更することができ、これにより、プロセッサは変更したセグメントアドレス情報を予測対象分岐命令に対応するプログラム識別情報として識別することができるようになる。そのうち、セグメントレジスタは、プロセッサ内部の1つのハードウェアに存在するレジスタであってもよい。
本例において、プログラム識別マーク情報を用いて、分岐予測器の分岐予測テーブルにおける異なるプログラムに属する予測情報を隔離させてもよい。例えば、プログラム識別情報を分岐予測器のアクセスアドレスの計算過程に導入し、例えば、ハッシュ(Hash)などの方式でプログラム識別情報と予測対象分岐命令の命令アドレス情報を計算し、これにより、当該分岐命令に対応するターゲット予測情報を得ることができる。当該ターゲット予測情報は分岐命令に対応して予測されたスキップ方向、スキップターゲットなどをキャラクタリゼーションするために使用されることができる。
また、例えば、分岐予測テーブルの各エントリに「プログラム識別情報」ドメインを追加することができ、これにより、プログラム識別情報は分岐予測器を制御する操作に参与することができ、これにより、異なるプログラム中の分岐命令は異なる分岐予測器のエントリにアクセスすることができるようになり、分岐予測器中の異なるプログラムに属するエントリを隔離させることが実現される。そのうち、分岐予測テーブルのエントリに記録された情報は分岐命令に対応する分岐予測情報、例えば、スキップターゲット情報、スキップ方向情報などを含んでもよい。スキップターゲット情報は分岐命令に対応して予測されたスキップターゲット、例えば、スキップターゲットアドレスなどを決定するために使用されてもよい。スキップ方向情報は、予測対象分岐命令に対応して予測されたスキップ方向を決定するために使用されてもよく、例えば、スキップターゲット情報が「1」である場合、予測対象分岐命令に対応して予測されたスキップ方向が「スキップ」であると決定することができる。スキップターゲット情報が「0」である場合、予測対象分岐命令に対応して予測されたスキップ方向が「スキップしない」であると決定することができる。
予測対象分岐命令に対応するターゲット予測情報を決定した後、分岐予測器は当該ターゲット予測情報を分岐実行及び制御ユニットに送信することができ、これにより、分岐実行及び制御ユニットは当該ターゲット予測情報を用いて当該予測対象分岐命令に対して予測処理を行い、対応する予測結果を得ることができ、その後、当該予測結果をプロセッサの内部に保存することができ、例えば、予測結果を、キャッシュ(Cache)、分岐予測テーブル、名前変更レジスタなどの内部一時バッファに保存することができ、これにより、分岐命令によって引き起こされるパイプラインのブロックを回避でき、命令パイプラインのスループットを向上させるとともに、プロセッサの性能を向上させる。
要約すると、本発明の実施例は、予測対象分岐命令に対応するプログラム識別情報を識別した後、当該プログラム識別情報に基づいて予測対象分岐命令に対応するターゲット予測情報を決定することができ、これにより、異なるプログラム間の分岐予測は互いに干渉しないようになり、分岐予測器における異なるプログラムの分岐予測情報を隔離させることが実現され、これにより、分岐予測器を用いて実行する攻撃中の必須リンクを確立し難くようになり、分岐予測器を用いて実行する攻撃の成功率を大幅に低下させ得る。
具体的な実現において、ハードウェア分岐予測の核となる構想は、分岐実行の過去の履歴情報基づいて分岐の動作を予測することであってもよい。これらの予測のための履歴情報は分岐予測器の分岐予測テーブルに格納されることができる。したがって、任意の分岐命令の実行情報は分岐予測判定に参与することができる。分岐予測器の分岐予測テーブルは、BTBテーブル、PHTテーブル、リターンアドレススタック(Return Addresses Stack、RAS)テーブルなどを含むが、それらに限定されず、本発明の実施例はこれを限定しない。
具体的に、分岐命令を実行完了した後、分岐命令のスキップ方向とスキップターゲットを決定することができ、その後、この分岐命令の関連情報を分岐予測器の分岐予測テーブルのエントリに入力することができる。関連情報は、分岐予測に関連する情報を含むことができ、具体的に、分岐命令に対応するプログラム識別情報、分岐予測情報、命令アドレス情報などを含むことができる。そのうち、命令アドレス情報は分岐命令のアドレスを特定するために使用されることができ、例えば、分岐予測のPCのために使用されることができる。分岐予測情報はスキップターゲット情報及び/又はスキップ方向情報を含むことができる。スキップターゲット情報によって分岐命令に対応する予測スキップターゲット、例えば、予測したスキップターゲットアドレスを特定することができる。スキップ方向情報は、分岐命令に対応する予測方向、例えば、分岐命令に対して予測されたスキップ方向などを決定するために使用されることができる。
本発明の1つの選択的な実施例において、分岐予測回路はプロセッサに適用され、当該分岐予測回路の分岐予測器は、更新回路をさらに含んでもよい。当該更新回路は前記プロセッサによって実行されている分岐命令の命令アドレス情報に基づき、前記分岐予測テーブルにおける記録情報を更新することができる。そのうち、前記記録情報は、前記命令アドレス情報に対応するプログラム識別情報と分岐予測情報を含む。
選択的に、本発明の実施例に係る分岐予測回路の制御方法は、プロセッサによって実行されている分岐命令の命令アドレス情報に基づき、前記分岐予測テーブルにおける記録情報を更新するステップであって、そのうち、前記記録情報は前記命令アドレス情報に対応するプログラム識別情報と分岐予測情報を含むステップをさらに含んでもよい。具体的に、プロセッサ実行中、前記プロセッサによって実行されているプログラム中の分岐命令に対し、命令アドレス情報を取得し、取得された命令アドレス情報に基づいて前記分岐命令に対応する分岐予測情報を確立することができる。そのうち、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも1項を含む。その後、同一分岐命令の場合、分岐予測テーブルで前記分岐予測情報と前記プログラム識別情報を関連させて記憶することができ、分岐命令に対応する分岐予測情報及びプログラム識別情報を分岐予測テーブルに記録することを実現する。例えば、分岐予測器には、分岐予測テーブルではじめてとある分岐命令のエントリを確立する場合、分岐予測のためのPC、分岐履歴予測方向、予測スキップターゲットなどの情報を確立されたエントリに入力すると同時に、当該分岐命令に対応するプログラム識別情報を当該エントリに入力することができ、これにより、プログラム識別情報とPCに基づいてあとで分岐予測を行うことができる。
これからわかるように、本発明の実施例における分岐予測器の分岐予測テーブルの記録情報は、従来の分岐予測器によって記録された分岐予測のためのPC、分岐履歴予測方向、予測スキップターゲットだけではなく、新たに追加されたプログラム識別情報をも含んでおり、分岐予測器の分岐予測テーブル構造が変えられ、これにより、分岐予測器はプログラム識別情報に基づいて分岐予測を行うことができる。
本発明の1つの選択的な実施形態において、前記予測情報決定モジュールは、第1の探索回路と第2の探索回路を含んでもよい。前記第1の探索回路は前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索することができる。前記第2の探索回路は前記分岐予測テーブルで、前記第1の探索回路によって探索された分岐予測情報に対応するプログラム識別情報を探索することができる。探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することができる。
本発明の実施例において、選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する上記ステップは、前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索するステップと、前記分岐予測テーブルで、前記分岐予測情報に対応するプログラム識別情報を探索するステップと、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含んでもよい。
具体的な実現において、第1の探索回路は前記分岐予測器の分岐予測テーブルで、予測対象分岐命令に対応してプリセットされた分岐予測情報を探索することができる。第1の探索回路が分岐予測情報を探索した後、第2の探索回路は分岐予測テーブルで、前記分岐予測情報に対応するプログラム識別情報を探索し、探索された分岐予測情報に対応するプログラム識別情報が前記分岐命令に対応するプログラム識別情報にマッチするかどうかを判定することができる。マッチする場合、前記探索された分岐予測情報から前記ターゲット予測情報を抽出することができる。マッチしない場合、前記分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することができる。
本発明の1つの選択的な実施例において、前記分岐予測情報に対応するプログラム識別情報を探索する前記ステップの後、前記探索されたプログラム識別情報を前記予測対象分岐命令に対応する現在のプログラム識別情報と比較するステップをさらに含んでもよい。具体的に、第2の探索回路は、探索されたプログラム識別情報を前記予測対象分岐命令に対応する現在のプログラム識別情報と比較し、探索されたプログラム識別情報と予測対象分岐命令に対応する現在のプログラム識別情報が同じであるかどうかを判定してもよい。
1つの選択的な実施形態において、第2の探索回路は、比較サブ回路と適応サブ回路を含んでもよい。前記比較サブ回路は前記探索されたプログラム識別情報を前記予測対象分岐命令に対応する現在のプログラム識別情報と比較する。前記適応サブ回路は、前記探索されたプログラム識別情報と前記現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、前記探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
具体的に、第1の探索回路は前記分岐予測器の分岐予測テーブルで、予測対象分岐命令に対応する分岐予測情報を探索することができ、例えば、分岐予測テーブルでとあるエントリに記録された分岐命令PCと現在予測対象分岐命令のPCが同じである場合、当該エントリに記録された分岐予測情報を探索された分岐予測情報として決定することができる。第2の探索回路における比較サブ回路は、分岐予測テーブルから、探索された分岐予測情報に対応するプログラム識別情報を取得し、取得されたプログラム識別情報を予測対象分岐命令に対応する現在のプログラム識別情報と比較し、取得されたプログラム識別情報と予測対象分岐命令に対応するプログラム情報が同じであるかどうかを判定することができる。取得されたプログラム識別情報と予測対象分岐命令に対応するプログラム情報が同じである場合、探索された分岐予測情報をターゲット予測情報として決定することができる。そうではない場合、探索された分岐予測情報を破棄し、継続的に当該予測対象分岐命令に対して分岐予測テーブルで対応する分岐予測情報を探索することができる。
例えば、分岐予測器を使用して分岐予測を行う場合、第1の探索回路は伝統的な探索方式を用いて分岐予測器の分岐予測テーブルで探索し、予測対象分岐命令の分岐予測情報を得ることができる。予測対象分岐命令の分岐予測情報を得ることに基づき、第2の探索回路における比較サブ回路は予測対象分岐命令に対応するプログラム識別情報を探索し得られた分岐予測情報の位置するエントリ中のプログラム識別情報と比較することができる。予測対象分岐命令に対応するプログラム識別情報と探索し得られた分岐予測情報の位置するエントリ中のプログラム識別情報が同じであり、即ち、予測対象分岐命令のPCと探索されたエントリ中の分岐命令PCが同じであり、かつ、予測対象分岐命令に対応するプログラム識別情報と当該エントリ中のプログラム識別情報が同じである場合、当該エントリ中の分岐予測情報をターゲット予測情報として決定することができ、かつ、当該エントリからターゲット予測情報を抽出することができ、これにより、当該ターゲット予測情報を使用して予測処理を行い、当該予測対象分岐命令に対応する予測結果を得る。予測対象分岐命令に対応するプログラム識別情報と探索し得られた分岐予測情報の位置するエントリ中のプログラム識別情報が同じではなく、例えば、予測対象分岐命令のPCと探索されたエントリ中の分岐命令PCが同じであるが、分岐命令に対応するプログラム識別情報と当該エントリ中のプログラム識別情報が同じではない場合、探索された分岐予測情報を破棄し、1つのランダム予測情報を生成することができ、かつ、当該ランダム予測情報をターゲット予測情報として、プロセッサに使用されるように返すことができ、これにより、プロセッサは当該ランダム予測情報に基づいて予測処理を行うようになり、これにより、攻撃の成功率を低下させる。当然ながら、また、予測対象分岐命令に対応するプログラム識別情報と当該エントリ中のプログラム識別情報が同じであり、予測対象分岐命令のPCと探索されたエントリ中の分岐命令PCが同じではない場合、1つのランダム予測情報を生成してプロセッサに返してもよく、本発明の実施例はこれを限定しない。
説明すべきものとして、ランダム予測情報は分岐予測情報の数値範囲と一致する1つのランダム値であってもよい。例えば、通常通りに返された分岐予測情報が0と1である場合、返されたランダム予測情報は0と1のランダムのいずれか1つであってもよい。また、例えば、通常の分岐予測情報が64ビットのアドレスデータである場合、返されたランダム予測情報は1つの64ビットのランダム数などであってもよい。
当然ながら、本発明の実施例はまた、予測対象分岐命令に対応する現在の対応するプログラム識別情報に基づいて分岐予測テーブルで対応する分岐予測情報を探索し、探索された分岐予測情報に対応してプリセットされた命令アドレス情報を当該予測対象分岐命令の命令アドレス情報と比較することができ、これにより、プリセットされたプリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じである場合、探索された分岐予測情報を用いてターゲット予測情報を決定し、本発明の実施例はこれを具体的に限定しない。
本発明の別の選択的な実施形態において、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する上記ステップは、前記予測対象分岐命令に対応する現在のプログラム識別情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索するステップと、探索された分岐予測情報に対応してプリセットされた命令アドレス情報を前記予測対象分岐命令の命令アドレス情報と比較するステップと、プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じである場合、前記探索された分岐予測情報から前記ターゲット予測情報を抽出するステップと、プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含んでもよい。
具体的な実現において、前記予測情報決定モジュールは第5の探索回路と第6の探索回路を含んでもよい。前記第5の探索回路は前記予測対象分岐命令に対応する現在のプログラム識別情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索する。前記第6の探索回路は、探索された分岐予測情報に対応してプリセットされた命令アドレス情報を前記予測対象分岐命令の命令アドレス情報と比較する。プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じである場合、前記探索された分岐予測情報から前記ターゲット予測情報を抽出し、また、プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
本発明の実施例において、選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定するステップは、
前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索するステップと、
探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出するステップと、
探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
具体的な実現において、前記予測情報決定モジュールは、第3の探索回路を含む。
前記第3の探索回路は、前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索する。探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
本発明の実施例において、選択的に、分岐予測回路の制御方法は、分岐命令の分岐結果に基づいて前記分岐予測テーブルにおける修正対象である分岐予測情報を決定するステップであって、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも1項を含むステップと、前記修正対象である分岐予測情報に対応するプログラム識別情報を前記分岐命令のプログラム識別情報と比較するステップと、前記修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じである場合、前記分岐結果に基づいて前記修正対象である分岐予測情報を修正するステップと、をさらに含む。
具体的な実現において、更新回路は分岐命令の分岐結果に基づいて前記分岐予測テーブルにおける修正対象である分岐予測情報を決定することができ、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも1項を含む。前記第2の探索回路は前記修正対象である分岐予測情報に対応するプログラム識別情報を前記分岐命令のプログラム識別情報と比較し、これにより、修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じであるかどうかを決定する。前記修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じである場合、前記更新回路は前記分岐結果に基づいて前記修正対象である分岐予測情報を修正する。
本発明の1つの選択的な例において、分岐実行及び制御ユニットは、分岐命令を実行した後、当該分岐命令の分岐結果を生成することができ、かつ、当該分岐結果を分岐予測器に送信することができ、これにより、分岐予測器が当該分岐結果に基づいて分岐予測テーブルにおける記録情報を更新するようにトリガーし、分岐予測テーブルの精度を決定する。具体的に、分岐予測器における更新回路は分岐命令の分岐結果に基づいて修正対象である分岐予測情報を決定することができる。その後、第2の探索回路における比較サブ回路を介して前記修正対象である分岐予測情報に対応するプログラム識別情報を前記分岐命令のプログラム識別情報と比較することができ、これにより、修正対象である分岐予測情報に対応するプログラム識別情報と分岐命令のプログラム識別情報が同じであるかどうかを判定する。前記修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じである場合、更新回路は前記分岐結果に基づいて修正対象である分岐予測情報を修正することができる。
例えば、分岐結果に基づいて分岐予測器の分岐予測テーブルの既存のエントリを修正する場合、分岐予測器は分岐命令に対応するプログラム識別情報を分岐予測テーブルにおける修正されたエントリ中のプログラム識別情報と比較することができる。分岐命令に対応するプログラム識別情報と修正されたエントリ中のプログラム識別情報が同じであり、かつ、分岐命令のPCと探索した当該エントリ中の分岐命令PCが同じであり、即ち、プログラム識別情報とPCの両者が同じである場合、当該分岐結果中の実際のスキップ方向に基づいて修正されたエントリ中の予測方向を修正することができ、及び/又は、当該分岐結果中の実際のスキップターゲットアドレスに基づいて修正されたエントリ中の予測スキップターゲットを修正することができる。分岐命令に対応するプログラム識別情報と修正されたエントリ中のプログラム識別情報が同じではない場合、当該分岐命令の分岐結果に基づいて修正されたエントリを修正しなくてもよい。
説明すべきものとして、分岐予測器のエントリに保存されたプログラム識別情報は、システムソフトウェアによって設定された完全なプログラム識別情報であってもよく、完全なプログラム識別情報が圧縮又はマッピング変換された後の情報などであってもよく、本発明の実施例はこれを限定しない。
本発明の実施例に係る制御方法は様々なタイプの分岐予測器に適用されることができる。以下は具体的な分岐予測器を合わせて本発明についてさらに例を挙げて説明する。
具体的に、分岐予測器の分岐予測テーブルは様々な分岐予測構造を用いることができ、例えば、スタック構造を用いたRASテーブルであってもよく、マルチグループ接続又は完全連続構造を用いたBTBテーブルであってもよく、または、PHTテーブルなどであってもよく、本発明の実施例はこれを限定しない。
本発明の1つの例として、プロセッサ中の分岐予測器がBTBテーブルを用いて分岐予測を行う場合、当該BTBテーブルのエントリにプログラム識別情報ドメインが添加されてもよく、これにより、プロセッサは当該BTBテーブルのエントリに含まれているプログラム識別情報と分岐命令PCに基づいて分岐予測器の分岐予測動作を制御することができる。そのうち、BTBテーブルは、1つの探索テーブルであってもよく、マルチグループ接続又は完全連続構造を用いてもよい。例えば、BTBテーブルに使用されたのは完全連続構造であってもよく、かつ、当該BTBテーブルの各エントリ中の情報は分岐命令PC、分岐ターゲットアドレス、分岐履歴テーブル(Branch History Table、BHT)情報及びプログラム識別情報などを含んでもよい。
そのうち、BHT情報は飽和カウンター値、例えば、2ビットの飽和カウンター値であってもよい。分岐予測を行う場合、予測対象分岐命令のPCをBTBテーブルにおける各エントリに保存されている分岐命令PCと比較することができると同時に、予測対象分岐命令に対応するプログラム識別情報をBTBテーブルにおける各エントリのプログラム識別情報と比較することができる。また、プログラム識別情報とPCの2つの比較が同じである場合、BTBテーブルで当該分岐命令の的中エントリを探索したと見なされることができ、これにより、的中エントリの分岐ターゲットアドレスに基づいてスキップターゲットを予測することができ、また、的中エントリのBHT情報に基づいてスキップが発生するかどうかを予測することができる。
例えば、予測対象分岐命令のPCとBTBテーブルにおけるとあるエントリに保存されている分岐命令PCが同じであり、かつ、当該エントリ中のプログラム識別情報と当該予測対象分岐命令に対応するプログラム識別情報が同じである場合、当該エントリを的中エントリとして決定することができ、その後、BHT情報に基づいてスキップが発生するかどうかを予測することができる。1つの選択的な例において、BHT情報が2ビットの飽和カウンター値である場合、2ビットの飽和カウンター値が2より大きい又は2に等しいである場合、分岐命令のスキップ方向が「スキップ」であると予測することができる。2ビットの飽和カウンター値が2より小さいである場合、分岐命令のスキップ方向が「スキップしない」であると予測することができる。
分岐命令を実行し完了した場合、当該分岐命令の実行結果(即ち、分岐結果)に基づいて分岐予測器のBTBテーブルを更新することができる。具体的に、分岐命令に対応するプログラム識別情報とBTBテーブルのとあるエントリに記録されたプログラム識別情報がマッチし、かつ、分岐命令のPCと当該エントリ中の分岐命令PCがマッチし、即ち、両者が同時にマッチする場合、分岐結果に基づいてこのエントリの分岐ターゲットアドレス、予測方向などの情報を修正することができる。プログラム識別情報とPCの両者が同時にマッチできない場合、BTBテーブルには、当該分岐命令の既存のエントリがないと見なされることができ、例えば、分岐命令のPCとBTBテーブルにおけるエントリに記録された分岐命令PCがマッチするが、分岐命令に対応するプログラム識別情報と当該エントリのプログラム識別情報がマッチしない場合、当該分岐命令の分岐結果に対してBTBテーブルで1つの新たなエントリを再確立することができる。新たなエントリを確立する場合、当該分岐命令のプログラム識別情報を新たなエントリのプログラム識別情報ドメインに入力することができ、これにより、プログラム識別情報に基づいて予測対象分岐命令に対応するターゲット予測情報をあとで決定することができる。
また、関数リターン命令は、特別な間接分岐命令であり、上記BTBテーブル方式を用いて予測することができるだけではなく、リターンアドレススタック(Return Addresses Stack, RAS)予測構造を介して予測してもよい。説明すべきものとして、関数呼び出し命令を実行する場合、リターンアドレス(即ち、関数呼び出し命令に次ぐ1番目の命令)を、RASスタックにプッシュすることができる。関数がリターンする場合、RASスタックトップからリターンアドレスとしてポップすることができる。
本発明の実施例を適用すると、RASにプログラム識別情報ドメインを追加することができ、これにより、RASにプッシュされたプログラム識別情報に基づいてスタックトップから読み取ったリターンアドレスが使用できるかどうかを決定することができる。具体的に、RASはスタック構造を用いることができる。関数呼び出し命令はリターンアドレスをスタックにプッシュすることができる。関数リターン命令がRASを用いて予測する場合、スタックトップアイテムのリターンアドレスを予測されたスキップターゲットとして読み出すことができ、さらに、当該スタックトップアイテムのプログラム識別情報に基づいて当該リターンアドレスを使用して予測処理を行うかどうかを判定することができる。例えば、関数呼び出し命令が実行される場合、当該命令に次ぐPC値(即ち、関数リターンアドレス)をスタックトップからプッシュすると同時に、当該関数のプログラム識別情報をスタックにプッシュすることもできる。関数リターン命令がRASを用いて予測する場合、スタックトップからプログラム識別情報とリターンアドレスを同時に取り出すことができ、かつ、現在のプログラム識別情報を取り出したプログラム識別情報と比較し、また、両者が同じである場合、RASに的中したと見なされ、取り出されたリターンアドレスを予測されたスキップターゲットとし、そうではない場合、1つのランダム予測値をリターンすることができる。
本発明の別の例として、分岐予測器がPHTテーブルを用いて予測する場合、本発明の実施例はPHTテーブルのエントリにプログラム識別情報を添加することができ、これにより、当該プログラム識別情報を使用してエントリ中の飽和カウンターの有効性を制御する。説明すべきものとして、PHTテーブルはPCロービット直接インデックスの方式を用いて予測することができ、かつ、当該PHTテーブルの各エントリは1つの2ビットの飽和カウンターを用いて分岐スキップ方向履歴情報を記録することができる。
本発明の1つの選択的な実施形態において、同一プログラムに対し、異なる分岐命令に対応する飽和カウンター情報と当該プログラムのプログラム識別情報をPHTテーブルの同一エントリに保存することができる。例えば、図4に示すように、いくつかの飽和カウンター情報と1つのプログラムマーク情報を1セットの401に合わせ、PHTテーブルの同一エントリに入力することができ、これにより、当該エントリ中のすべての飽和カウンター情報が1つのプログラム識別情報402を共有するようになり、これにより、PHTテーブルの各エントリにプログラム識別情報を追加することによるオーバーヘッドが削減される。
分岐予測を行う場合、所定のインデックス方式に基づいて指定された位置のエントリに格納されている飽和カウンター情報とプログラム識別情報を読み取ることができる。例えば、図4に示すように、予測対象分岐命令のPCロービットに基づき、当該PHTテーブルで当該PCロービットの位置するエントリを探索することができ、当該エントリは当該PCロービットに対応する飽和カウンター情報とプログラム識別情報を含むことができ、その後、探索されたエントリから飽和カウンター情報とプログラム識別情報を読み取ることができ、さらに、読み出されたプログラム識別情報を現在のプログラム識別情報と比較することができる。読み出されたプログラム識別情報と現在のプログラム識別情報が同じである場合、探索されたエントリが有効であると見なされることができ、即ち、読み出された飽和カウンター情報が有効であると決定することができ、これにより、飽和カウンター情報の内容に基づいて分岐方向を予測し、即ち、スキップが発生するかどうかを予測することができる。読み出されたプログラム識別情報と現在のプログラム識別情報が同じではない場合、読み取った飽和カウンター情報を破棄することができ、さらに、ランダム方式で分岐方向を予測することができる。分岐命令を実行し完了した場合、実行される分岐の結果に基づいてPHTテーブルを更新することができる。PHTテーブルを更新する場合、所定規則に遵って指定されたエントリ飽和カウンター情報を更新することができると同時に、現在のプログラム識別情報を当該指定されたエントリに書き込むことができる。
具体的な実現において、PHTテーブルのエントリが限られているため、PHTテーブルにおける異なる分岐命令の競合を回避するために、全体分岐履歴などの分岐命令間の関連関係の情報を用いて異なる分岐命令を異なるエントリにハッシュ(Hash)することができる。本発明の実施例はさらに、プログラム識別情報を使用してPHTテーブルのエントリインデックス位置を制御することができ、即ち、プログラム識別情報を用いて分岐予測器を制御することができ、これにより、異なるプログラム中の分岐命令が分岐予測テーブルで互いに隔離されるようになり、例えば、ハッシュの方式を用いて隔離効果を達成することができる。
具体的に、PHTテーブルを探索して予測する場合、分岐命令のインデックスアドレスの計算は分岐命令PC又は分岐履歴情報を含むことができるだけではなく、現在のプログラム識別情報を含んでもよい。そのうち、プログラム識別情報をPHTテーブルインデックスアドレスに含めて計算する方式は排他的論理和の方式であってもよく、スプライシング形式、インターウィービング形式、一部がスプライシングであるとともに一部が排他的論理和の変換形式であるなどの他の変換形式であってもよく、本発明の実施例はこれを限定しない。
これらの変換形式に基づき、2つの異なるプログラム識別情報値により、伝統的な方式で算出した同一インデックスアドレスを2つの異なるアドレス情報に変換することができる。同一プログラム識別情報値に基づき、伝統的な方式で算出した2つの異なるインデックスアドレスを2つの異なるアドレス情報に変換することができる。
本発明の1つの選択的な実施例において、前記予測情報決定モジュールは、演算回路と第4の探索回路を含んでもよい。前記演算回路は前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定し、さらに、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得ることができる。前記第4の探索回路は前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索することができる。
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する上記ステップは、前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定するステップと、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得るステップと、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索するステップと、を含んでもよい。
具体的に、分岐予測器における演算回路は、分岐予測を行う場合、予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定することができ、また、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得ることができる。その後、第4の探索回路は当該演算回路によって得られたターゲットインデックスアドレス情報に基づき、分岐予測テーブルで分岐命令に対応するターゲット予測情報を探索することができる。そのうち、分岐命令の命令アドレス情報は分岐命令のアドレス、例えば、分岐命令PC、分岐命令PCのロービット情報などをキャラクタリゼーションするために使用されることができる。
1つの選択的な実施形態において、予測対象分岐命令に対して分岐予測を行う場合、演算回路は当該予測対象分岐命令の命令アドレス情報と分岐予測テーブルに記録された分岐履歴情報に基づいて計算し、インデックスアドレス情報を得ることができ、その後、プログラム識別情報を用いてインデックスアドレス情報に対してハッシュ処理を行い、ターゲットインデックスアドレス情報を得ることができ、これにより、第4の探索回路は当該ターゲットインデックスアドレス情報に基づいて分岐予測テーブルで当該予測対象分岐命令に対応するターゲット予測情報を探索することができる。そのうち、分岐履歴情報は分岐予測器の全体分岐履歴情報をキャラクタリゼーションするために使用されることができる。
本発明の1つの選択的な実施例において、前記第4の探索回路は、比較サブ回路と適応サブ回路を含んでもよい。前記比較サブ回路は前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較することができる。前記適応サブ回路は、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出し、また、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することができる。
選択的に、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索する上記ステップは、前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較するステップと、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出するステップと、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含んでもよい。
本発明の1つの選択的な例として、予測対象分岐命令PCのロービット情報と分岐履歴情報に基づいて排他的論理和計算を行うことができ、例えば、予測対象分岐命令PCのロービットと全体分岐履歴情報に対して逐次排他的論理和を行い、当該予測対象分岐命令のインデックスアドレス情報を得ることができる。その後、インデックスアドレス情報と現在のプログラム識別情報に対してハッシュ処理を行うことができ、例えば、インデックスアドレス情報と現在のプログラム識別情報に対して排他的論理和を行い、これにより、異なるプログラムの分岐命令は異なるエントリにアクセスすることができるようになり、分岐予測器における異なるプログラムに属するエントリを隔離させることが実現される。
要約すると、本発明の実施例は、プログラム識別情報を用いて分岐予測器における異なるプログラムに属するエントリを隔離させ、これにより、異なるプログラム間の分岐予測は互いに干渉しあうことなく、従来の技術において、分岐予測器のトレーニング、予測過程では、異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の動作を間接的に操ることができるようになるという問題が解決される。
また、本発明の実施例は、プログラム識別情報によって異なるプログラム間の分岐予測を隔離させ、方法が単純明快で、プログラム自動動作に頼らず、プログラム実行時に性能に対する負の影響を回避でき、簡潔で実用であり、回路が実現されるのに必要とする面積、遅延オーバーヘッドを減少できる。
説明すべきものとして、方法の実施例は、シンプルに説明するために、一連のアクションの組み合わせとして表されているが、当業者であれば、本発明の実施例は、一部のステップが本発明の実施例に基づいて他の順序で、又は同時に行われることができるため、記載のアクションの順序に限定されないと了解すべきである。次に、当業者であれば、明細書に記載の実施例が、いずれも好ましい実施例であり、それに関わるアクションが必ずしも本発明の実施例で必須なものではなくてもよいと了解すべきでもある。
図5は、1つの例示的実施例に基づいて示された分岐予測回路の制御に適用された電子機器500の構造ブロック図である。例えば、電子機器500は、携帯電話、コンピュータ、デジタルブロードキャスト端末、メッセージング機器、ゲームコンソール、タブレット機器、医療機器、フィットネス機器、パーソナルデジタルアシスタントなどであってもよい。
図5を参照すると、電子機器500は、処理素子502、メモリ504、電源素子506、マルチメディア素子508、オーディオ素子510、入力/出力(I/O)インタフェース512、センサー素子514、及び通信素子516の1つ又は複数を含んでもよい。
処理素子502は、一般に、ディスプレイ、電話呼び出し、データ通信、カメラ操作、及び記録操作に関連する操作など、電子機器500の全体的な操作を制御する。処理素子502は、上記の方法のステップのすべて又は一部を完了するための命令を実行するための1つ又は複数のプロセッサ520を含んでもよい。また、処理素子502は、処理素子502と他の素子との間の相互作用を容易にするための1つ又は複数のモジュールを含んでもよい。例えば、処理素子502は、マルチメディア素子508と処理素子502との間の相互作用を容易にするためのマルチメディアモジュールを含んでもよい。選択的に、プロセッサ520に分岐予測器が含まれてもよい。
メモリ504は、機器500での操作ができるようにするための様々なタイプのデータを記憶するように構成されている。これらのデータの例は、電子機器500で操作されるための任意のアプリケーションプログラム又は方法の命令、連絡先データ、電話帳データ、メッセージ、写真、ビデオなどを含む。メモリ504は、スタティックランダムアクセスメモリ(SRAM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)、消去可能プログラマブル読み取り専用メモリ(EPROM)、プログラマブル読み取り専用メモリ(PROM)、読み取り専用メモリ(ROM)、磁気メモリ、フラッシュメモリ、磁気ディスク又はコンパクトディスクなどの任意のタイプの揮発性又は非揮発性記憶機器又はそれらの組み合わせによって実現されることができる。
電源素子506は電子機器500の様々な素子に電力を提供する。電源素子506は、電源管理システム、1つ又は複数の電源、及び、電子機器500のために電力を生成し、管理して分配することに関連する他の素子を含んでもよい。
マルチメディア素子508は、前記電子機器500とユーザの間の1つの出力インタフェースを提供するスクリーンを含む。いくつかの実施例において、スクリーンは、液晶ディスプレイ(LCD)とタッチパネル(TP)を含んでもよい。スクリーンがタッチパネルを含む場合、スクリーンは、ユーザからの入力信号を受信するために、タッチスクリーンとして実現されることができる。タッチパネルは、タッチ、スライド及びタッチパネルでのジェスチャーを感知するための1つ又は複数のタッチセンサーを含む。前記タッチセンサーは、タッチ又はスライドアクションのボーダーを感知するだけではなく、前記タッチ又はスライド操作に関連する持続時間と圧力を測定することができる。いくつかの実施例において、マルチメディア素子508は、1つのフロントカメラ及び/又はリアカメラを含む。電子機器500が撮影モード又はビデオモードなどの操作モードにある場合、フロントカメラ及び/又はリアカメラが外部のマルチメディアデータを受信できる。各フロントカメラとリアカメラは、1つの固定された光学レンズシステムであってもよく、または、焦点距離と光学ズーム機能を備えていてもよい。
オーディオ素子510は、オーディオ信号を出力及び/又は入力するように構成されている。例えば、オーディオ素子510は1つのマイク(MIC)を含み、電子機器500が呼び出しモード、記録モード及び音声識別モードなどの操作モードにある場合、マイクが外部オーディオ信号を受信するように構成されている。受信されたオーディオ信号はさらに、メモリ504に記憶され、または、通信素子516を介して送信されることができる。いくつかの実施例において、オーディオ素子510は、オーディオ信号を出力するための1つのスピーカーをさらに含む。
I/Oインタフェース512は、処理素子502と周辺インタフェースモジュールの間にインタフェースを提供し、上記周辺インタフェースモジュールは、キーボード、クイックホイール、ボタンなどであってもよい。これらのボタンは、ホームページボタン、音量ボタン、スタートボタン及びロックボタンを含むが、それらに限定されない。
センサー素子514は、電子機器500に各態様の状態評価を提供するための1つ又は複数のセンサーを含む。例えば、センサー素子514は、機器500のオン/オフ状態、素子の相対的なポジションを測定することができ、例えば、前記素子は電子機器500のディスプレイ及びキーパッドであり、センサー素子514はまた、電子機器500又は電子機器500の1つの素子の位置変更、ユーザと電子機器500との接触があるかどうか、電子機器500の方位又は加速/減速及び電子機器500の温度変化を測定してもよい。センサー素子514は、近接センサーを含んでもよく、任意の物理的接触がない場合の付近物体の存在を測定するためのものであるように構成されている。センサー素子514はまた、撮像用途で適用するための、CMOS又はCCD画像センサーなどの光センサーを含んでもよい。いくつかの実施例において、当該センサー素子514はまた、加速度センサー、ジャイロスコープセンサー、磁気センサー、圧力センサー又は温度センサーを含んでもよい。
通信素子516は、電子機器500と他の機器との有線又は無線方式の通信を容易にするためのものであるように構成されている。電子機器500は、WiFi、2G又は3G、または、それらの組み合わせなどの通信規格に基づいた無線ネットワークにアクセスすることができる。1つの例示的実施例において、通信素子516は、ブロードキャストチャネルを介して外部ブロードキャスト管理システムからのブロードキャスト信号又はブロードキャスト関連情報を受信する。1つの例示的実施例において、前記通信素子516は、短距離通信を促進するための近距離無線通信(NFC)モジュールをさらに含む。例えば、NFCモジュールでは、無線周波数識別(RFID)技術、赤外線データ協会(IrDA)技術、超広帯域(UWB)技術、ブルートゥース(登録商標)(BT)技術及び他の技術に基づいて実現することができる。
例示的実施例において、電子機器500は、上記方法を実行するための1つ又は複数の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理デバイス(DSPD)、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、コントローラ、マイクロコントローラ、マイクロプロセッサ、または、他の電子部品によって実現されることができる。
例示的な実施例において、命令を含む非一時的なコンピュータ可読記憶媒体、例えば、命令を含むメモリ504をさらに提供し、上記の方法を完了するために、上記命令は電子機器500のプロセッサ520によって実行されることができる。例えば、前記非一時的なコンピュータ可読記憶媒体は、ROM、ランダムアクセスメモリ(RAM)、CD−ROM、磁気テープ、フロッピーディスク、及び光学データ記憶機器などであってもよい。
本明細書における各実施例はいずれも段階的に説明されており、各実施例は他の実施例との相違点に重点を置いて説明しており、各実施例の同様と類似の部分は互いに参考しあうことができる。
当業者は、本発明の実施例の実施例が、方法、装置、又はコンピュータプログラム製品として提供されることができると理解すべきである。したがって、本発明の実施例は、完全にハードウェアの実施例、完全にソフトウェアの実施例、または、ソフトウェアとハードウェアを組み合わせた実施例の形をとることができる。さらに、本発明の実施例は、コンピュータ使用可能なプログラムコードを含む1つ又は複数のコンピュータ使用可能な記憶媒体(ディスク記憶装置、CD−ROM、光学メモリなどを含むが、それらに限定されない)上に実施されるコンピュータプログラム製品の形をとることができる。
本発明の実施例は、本発明の実施例による方法、端末装置(システム)、及びコンピュータプログラム製品のフローチャート及び/又はブロック図を参照して説明される。フローチャート及び/又はブロック図の各プロセス及び/又はブロック、及び、フローチャート及び/又はブロック図のプロセス及び/又はブロックの組み合わせは、コンピュータプログラム命令によって実現されることができると理解すべきである。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ、または、他のプログラマブルデータ処理端末機器のプロセッサに提供されて1つの機械を生成させ、これにより、コンピュータ又は他のプログラマブルデータ処理端末機器のプロセッサによって実行される命令を介してフローチャートの1つのプロセス又は複数のプロセス及び/又はブロック図の1つのブロック又は複数のブロックで指定された機能を実現するための装置を生成することができる。
これらのコンピュータプログラム命令はまた、コンピュータ又は他のプログラマブルデータ処理端末機器が予測通りに動作するように導くことができるコンピュータ可読メモリに記憶されてもよく、これにより、当該コンピュータ可読メモリに記憶された命令は、命令装置を含む製品を生成し、当該指示装置は、フローチャートの1つのプロセス又は複数のプロセス及び/又はブロック図の1つのブロック又は複数のブロックで指定された機能を実現する。
これらのコンピュータプログラム命令は、コンピュータ又は他のプログラマブルデータ処理端末機器にロードされてもよく、これにより、一連の操作ステップがコンピュータ又は他のプログラマブル端末機器で実行され、コンピュータによって実現される処理を生成し、これにより、コンピュータ又は他のプログラマブルデータ処理端末機器で実行された命令は、フローチャートの1つのプロセス又は複数のプロセス及び/又はブロック図の1つのブロック又は複数のブロックで指定された機能を実現するためのステップを提供する。
本発明の実施例の好ましい実施例を説明したが、当業者は、基本的なクリエイティブコンセプトを習得すると、これらの実施例に追加の変更及び修正を加えることができる。したがって、添付の特許請求の範囲は、好ましい実施例及び本発明の実施例の範囲内にあるすべての変更及び修正を含むものとして解釈されることを意図している。
最後に、さらに説明すべきものとして、本明細書では、第1や第2などの関係用語は、1つのエンティティ又は操作を別のエンティティ又は操作と区別するためにのみ使用され、必ずしもこれらのエンティティ又は操作間にそのような実際の関係又は順序があることを要求又は示唆していない。さらに、「含む」、「備える」という用語又はその任意の他の変形は、非排他的な包含をカバーすることを目的としており、これにより、一連の要素を含むプロセス、方法、物品、又は端末機器は、それらの要素だけでなく、明示的にリストされていない他の要素をも含み、または、そのようなプロセス、方法、物品、又は端末機器に固有の要素をも含む。より多くの制限がない場合、「1つの・・・を含む」という文で限定された要素は、前記要素を含むプロセス、方法、物品、又は端末機器に別の同じ要素があることを除外しない。
以上、本発明が提供する分岐予測器の制御方法、装置、電子機器、及び記憶媒体について詳細に説明したが、本明細書に具体的な例を適用することによって本発明の原理及び実施形態について説明し、以上の実施例の説明は、本発明の方法及びその核となるアイデアを理解するのを助けるためにのみ使用されると同時に、当業者にとって、本発明のアイデアに基づき、具体的な実施形態及び適用範囲に変更が生じ、要約すると、本明細書の内容は、本発明を限定するものとして理解されるべきではない。
本発明は、コンピュータ技術の分野に関し、特に分岐予測回路及び分岐予測回路の制御方法に関する。
現代のマイクロプロセッサ設計にプロセッサの性能を向上するための分岐予測技術を用いるのは一般的である。具体的に、プロセッサの命令パイプラインでは、分岐命令の結果によってその後の命令の命令フェッチが決定される。分岐予測技術を用いることによって分岐命令によって引き起こされるパイプラインのブロックが回避でき、できるだけ多くの命令を命令パイプラインにフェッチして実行し、これにより、命令パイプラインのスループットが向上する。
具体的な実現において、高性能のマイクロプロセッサに、高い精度を取得するために、動的分岐予測技術を用いて分岐命令を予測するのが一般的である。そのうち、動的分岐予測は、分岐命令によって実行された履歴に基づいて予測し、分岐命令の履歴データを保存するには複雑な分岐予測構造を使用する必要がある。分岐予測構造は主に分岐命令の分岐履歴に基づいて当該分岐命令の将来のスキップ方向とターゲットを予測する。例えば、分岐予測器を使用して予測する場合、現在予測した分岐命令のプログラムカウンター(Program Counter、PC)の値を分岐ターゲットバッファ(Branch Target Buffer、BTB)テーブルにおける検索対象アイテムのPCの値と比較することができる。現在予測した分岐命令のPCの値が検索対象アイテムのPCの値に等しくする場合、当該検索対象アイテムの飽和カウンターの値に基づいてスキップが発生するかどうかを予測し、当該分岐命令のスキップターゲットを予測し、例えば、分岐命令のスキップ方向を予測したと同時に、分岐命令のスキップターゲットアドレスを読み取る。しかしながら、従来の技術において、分岐予測器が異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の予測動作を間接的に操ることができるようになる。
上記問題を鑑みして、上記問題を克服するか、または、上記問題の少なくとも一部を解決する分岐予測回路、対応する分岐予測回路の制御方法及び前記分岐予測回路を持つプロセッサを提供するために、本発明の実施例を提案する。
上記問題を解決するために、本発明の実施例は、分岐命令を実行する能力を持つプロセッサに適用する分岐予測回路を開示し、前記分岐予測回路は、少なくとも1つの分岐予測器を含み、前記分岐予測器は予測情報決定モジュール、読み出し回路及び分岐予測テーブルを含む。そのうち、前記予測情報決定モジュールは予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する。前記読み出し回路は前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成する。
選択的に、前記分岐予測器は、更新回路をさらに含む。前記更新回路は前記プロセッサによって実行されている分岐命令及びこれに対応するプログラム識別情報に基づき、前記分岐予測テーブルにおける記録情報を更新し、そのうち、前記記録情報は前記実行されている分岐命令に対応する分岐予測情報を含み、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも1項を含む。
選択的に、前記予測情報決定モジュールは、第1の探索回路と第2の探索回路を含む。前記第1の探索回路は、前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索する。前記第2の探索回路は、前記分岐予測テーブルで、前記第1の探索回路によって探索された分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
選択的に、前記予測情報決定モジュールは、第3の探索回路を含む。前記第3の探索回路は前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
選択的に、前記予測情報決定モジュールは、演算回路と第4の探索回路を含む。前記演算回路は前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定し、また、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得る。前記第4の探索回路は前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索する。
選択的に、前記第4の探索回路は、比較サブ回路と適応サブ回路を含む。前記比較サブ回路は前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較する。前記適応サブ回路は、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出し、また、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
本発明の実施例はまた、上記の分岐予測回路が含まれるプロセッサを開示する。
本発明の実施例はさらに、分岐予測回路の制御方法を開示し、前記方法は、
予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定するステップと、
前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成するステップと、を含む。
選択的に、現在実行されている分岐命令及びこれに対応するプログラム識別情報に基づき、前記分岐予測テーブルにおける記録情報を更新し、そのうち、前記記録情報は、前記実行されている分岐命令に対応する分岐予測情報を含み、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも1項を含む。
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、
前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索するステップと、
前記分岐予測テーブルで、前記分岐予測情報に対応するプログラム識別情報を探索し、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、
前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索するステップと、
探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出するステップと、
探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する前記ステップは、前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定するステップと、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得るステップと、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索するステップと、を含む。
選択的に、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索する前記ステップは、
前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較するステップと、
前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出するステップと、
前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
本発明の実施例は以下の利点がある。
本発明の実施例における分岐予測回路は、予測対象分岐命令に対応するプログラム識別情報及び分岐予測テーブルに基づき、予測対象分岐命令に対応するターゲット予測情報を決定し、当該ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行うことができる。これにより、異なるプログラム間の分岐予測は互いに干渉しないようになり、分岐予測器における異なるプログラムの分岐予測情報を隔離させることが実現され、従来の技術において、分岐予測器が異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の予測動作を間接的に操ることができるようになるという問題が解決される。
本発明の分岐予測器の構造概略図である。
本発明の分岐予測回路の制御方法の実施例のステップフローチャートである。
本発明の1つの例におけるプロセッサの構造概略図である。
本発明の1つの例におけるいくつかの飽和カウンター情報が1つのプログラム識別情報を共有する場合の概略図である。
1つの例示的な実施例に基づいて示した分岐予測器の制御に適用される電子機器の構造ブロック図である。
本発明の上記目的、特徴及び利点をさらに明瞭し、理解しやすくするために、以下は図面と具体的な実施形態を合わせて本発明についてさらに詳細に説明する。
現代コンピュータは通常、プログラムにおける命令をデータとしてメモリに保存することを1つの中核としている「フォン・ノイマン」アーキテクチャに遵う。プロセッサは命令に従って実行することができ、実行する前に、通常、命令をメモリからプロセッサ内部にフェッチする必要があり、この操作は「命令フェッチ」と呼ばれている。命令フェッチは、PCの値をアドレスとし、当該アドレスに基づいてメモリからデータを読み取る。プロセッサ実行中、分岐命令に基づいて次の命令のPCを算出することができる。これにより、分岐命令の結果によってその後の命令の命令フェッチは決定されることができることがわかる。
例えば、プロセッサが最もシンプルな分岐履歴テーブルを使用して分岐予測を行う場合、PCのロービットインデックスを用いて予測することができる。そのうち、当該分岐履歴テーブルにおける各アイテムは2ビットの飽和カウンターであり、当該アイテムに対応する分岐命令のスキップ方向履歴情報を記録するために使用されており、例えば、分岐が成功した場合、飽和カウンターに記録された飽和値に1を加算し、分岐が成功しなかった場合、飽和カウンターに記録された飽和値に1を減算する。このような分岐履歴テーブルはまた、分岐パターン履歴テーブル(Pattern History Table、PHT)とも呼ばれている。しかしながら、PHTを使用して予測することは、分岐命令のスキップ方向のみを予測でき、分岐命令のスキップターゲットを予測できない。間接分岐命令のスキップターゲットは命令から直接に取得することができないので、間接分岐命令のスキップターゲットを予測するためのメカニズムが必要とされている。なお、PHTは通常、デコード段階のみで使用することができ、そうではない場合、命令フェッチ段階でPCロービットインデックスのPHTを使用すると、通常命令も分岐命令として予測される恐れがある。
従来のプロセッサは分岐ターゲット緩衝器を使用して分岐予測を行うことができ、これにより、上記PHTを使用して予測することに存在する問題が解決される。そのうち、分岐ターゲット緩衝器はまた、分岐予測器とも呼ばれている。具体的に、分岐予測器の分岐予測テーブルがBTBテーブルである場合、分岐予測器は、分岐予測する時、現在のPCをBTBテーブルにおける検索対象アイテムのPCと比較し、BTBテーブルに完全連続構造が用いられている場合、現在のPCを完全連続構造におけるすべてのアイテムの分岐命令PCと比較する。BTBテーブルにおけるとあるアイテムの分岐命令PCの値が現在のPCの値に等しくする場合、当該アイテムを等しいアイテムとして決定することができ、及び、等しいアイテムの飽和カウンター値に基づいてスキップが発生するかどうかを予測してスキップアドレスを読み出すことができる。当該スキップアドレスは分岐命令のターゲットアドレスであってもよい。説明すべきものとして、BTBテーブルには、完全連続又はマルチグループ接続構造が用いられることができ、BTBテーブルの各アイテムに分岐命令のPC、分岐命令のターゲットアドレス、及び分岐命令のスキップが発生するかどうかを予測する2ビットの飽和カウンター値を保存することができる。この2ビットの飽和カウンター値は、スキップ方向、例えば、スキップとスキップしないという2つの方向をキャラクタリゼーションするために使用することができる。
そのうち、分岐予測は、分岐命令の命令フェッチ又はデコード段階でそのスキップ方向とスキップターゲットアドレスを予測し、予測結果に基づいて継続的に命令フェッチをする。分岐命令を実行した後、決定した分岐スキップ方向又は分岐ターゲットアドレスに基づいて予測結果を修正することができる。分岐予測が正しいである場合、通常通りに終了することができる。そうではない場合、誤予測された後に実行されるすべての命令を取り消すことができる。
要約すると、分岐予測器は、プロセッサの微細構造設計の時に、性能を向上させるために導入されたものであり、ソフトウェアは直接にアクセスできないため、通常、セキュリティには関係ないと見なされている。具体的に、現代プロセッサには、性能を向上させるために、キャッシュ、分岐予測、順不同実行などの技術のいずれも実現されており、これらの技術を実現する内部一時バッファにはソフトウェアが直接にアクセスできないため、分岐予測器がセキュリティには関係なく、異なるプログラム間に物理的又は論理的な分離もないと見なされている。これにより、1つのプロセスAによる分岐予測テーブルの変更は、もう1つのプロセスBによって観察又は使用される可能性があり、即ち、異なるプログラムは互いに影響しあい、互いの分岐予測の動作を制御することができるようになる。攻撃者は、従来の分岐予測器設計のこの特徴を用いて、攻撃プロセスに分岐予測器をトレーニングし、これにより、攻撃されたプロセスの指定されたプログラムセグメントの予測実行の動作を制御し、さらに、最終的に攻撃目的を達成する。
説明すべきものとして、順不同実行と分岐予測は、命令を予測的に実行することによって性能を向上させるが、順不同実行のすべての命令は順序付けに終了する。順不同実行の一時結果は、名前変更レジスタ又はキャッシュに保存されることができる。順序付けに終了する場合、誤予測を発見した場合、上記一時結果を破棄する。予測が正しいである場合、一時結果をメモリとソフトウェアがアクセスできるレジスタに書き戻す。
現在、分岐予測器を用いて実行する攻撃、例えば、Spectre攻撃は、主に中央処理装置(Central Processing Unit、CPU)の順不同実行と予測実行メカニズムを用いて、命令の順不同実行と取り消されることとの間のごく小さな「ギャップ」に、オペレーティングシステムスペースにオーバーランアクセスし、それから、サイドチャネル攻撃技術を用いてシステム情報を不法的に取得する。例えば、分岐予測器を用いて実行する攻撃は、通常、予測の実行と順序付けに終了の短い「隙間」に、メモリにおけるデータを上記微細構造の一時バッファに不法的に保存し、遠回しのような間接アクセスを介して本来ならばユーザが知るべきではなかった内容を予測する。
本発明の実施例の核となる構想の1つは、微細構造設計の角度から分岐予測器を用いて実行する攻撃を防御する。具体的に、本発明の実施例は、プログラム識別情報を使用して分岐予測器を制御し、これにより、分岐予測器による異なるプログラムの分岐予測が互いに影響しあわなく、即ち、プログラム識別情報に基づいて異なるプログラム間の予測情報の隔離を実現し、これにより、分岐予測器を用いて実行する攻撃の必須リンクを切断し、従来の技術において、分岐予測器が異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の予測動作を間接的に操ることができるようになるという問題を解決することができる。
説明すべきものとして、現代コンピュータに通常、カーネルモードとユーザモードが含まれている。オペレーティングシステムはカーネルモードで実行されており、ユーザプログラムはユーザモードで実行されている。ユーザモードのプログラムはカーネルモードの任意の内容にもアクセスできず、一旦オーバーランアクセスが発生した場合、CPUはプログラムの実行を中止し、オペレーティングシステムに例外信号を送信し、オペレーティングシステムは、例外信号を受信した後オーバーランアクセスのユーザプロセスを強制終了させ、これにより、セキュリティを確保する。そのうち、ユーザプログラムとシステムプログラムは異なるアドレスセグメントに配置されることができる。
分岐予測器を用いて実行する攻撃を防御することの1つの特別なところは、オーバーランアクセスを実行する命令が、探られるデータが位置するプログラムからのものであり、即ち、予測実行経路上のオーバーランアクセス命令が実行される時のコンテキストが、アクセスされるアドレスにアクセスする権限があり、プロセッサ内部では、不法アクセス例外によってこのアクセス命令の異常動作を察知することができない。したがって、分岐予測器を用いて実行する攻撃の防御は、アクセス場所でオーバーランアドレスのアクセス権限異常を監視することから手掛けることができず、別の方法を考える必要がある。
本発明の実施例は、分岐予測器を用いて実行する攻撃におけるもう1つの必須リンクから防御の考えを求めることができる。具体的に、Aプログラムで分岐予測器をトレーニングすることによってBプログラムの特定分岐命令の予測動作を制御できることに対し、本発明の実施例は、分岐予測器にパーティションプログラムのプログラム識別情報を追加し、これにより、Aプログラムで分岐予測器をトレーニングして得られる結果はAプログラムのみで使用することができ、Bプログラムの分岐命令はそれに影響されなくなり、即ち、Spectre攻撃の必須リンクを切断し、これにより、攻撃の実施が破壊され、分岐予測器を用いて実行する攻撃の成功率を低下させる。
具体的に、本発明の実施例は、分岐予測回路を提供し、当該分岐予測回路は、少なくとも1つの分岐予測器を含んでもよく、これにより、当該分岐予測器を用いて分岐予測を行う。図1に示すように、分岐予測器110は、予測情報決定モジュール120、読み出し回路130及び分岐予測テーブル140を含んでもよい。そのうち、前記予測情報決定モジュール120は、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測テーブル140に基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定することができる。前記読み出し回路130は、前記ターゲット予測情報を分岐命令実行及び制御ユニット200に送信してもよく、これにより、前記分岐命令実行及び制御ユニット200が、前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成する。
図2を参照すると、図2は、本発明の分岐予測回路の制御方法の実施例のステップフローチャートを示し、具体的に、以下のステップを含んでよい。
ステップ101において、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する。
具体的な実現において、分岐予測回路は、1つ又は複数の分岐予測器を含んでよい。プログラム実行中、分岐予測回路は、分岐予測器における予測情報決定モジュールを介して当該プログラムにおける予測対象分岐命令に対応するターゲット予測情報を決定することができる。当該予測情報決定モジュールは、導入された予測対象分岐命令に対応するプログラム識別情報及び当該分岐予測回路における分岐予測テーブル、例えば、PHT、BTBテーブルなどに基づき、当該予測対象分岐命令に対応するターゲット予測情報を決定することができ、これにより、読み出し回路は、分岐予測テーブルから予測対象分岐命令に対応するターゲット予測情報を読み取ることができるようになる。
ステップ102において、前記ターゲット予測情報を分岐命令実行及び制御ユニットに送信することにより、前記分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行い、前記予測対象分岐命令に対応する予測結果を生成する。
本発明の実施例において、読み出し回路がターゲット予測情報を読み取った後、読み取られたターゲット予測情報を分岐命令実行及び制御ユニットに送信することができ、これにより、分岐命令実行及び制御ユニットが前記ターゲット予測情報に基づいて予測処理を行うようにトリガーされる。具体的に、分岐命令実行及び制御ユニットがターゲット予測情報を受信した後、当該ターゲット予測情報を用いて予測対象分岐命令に対して予測処理を行い、対応する予測結果を生成することができ、その後、当該予測結果をプロセッサの内部に保存し、これにより、分岐命令によって引き起こされるパイプラインのブロックを回避でき、命令パイプラインのスループットを向上させる。
具体的な実現において、分岐予測回路は、分岐命令を実行するプロセッサに適用される。図3に示すように、CPUは、分岐予測回路100、分岐命令実行及び制御ユニット200、プログラムカウンター300、命令記憶ユニット400及び他の機能部材500を含んでもよい。そのうち、分岐予測回路100は、1つ又は複数の分岐予測器110を含んでもよい。命令記憶ユニット400は、1つ又は複数の命令を記憶することができ、例えば、命令1、命令2、命令3……命令nなどがあってもよく、nが整数である。分岐予測回路100は、プログラムカウンター300を介して命令記憶ユニット400に記憶されている命令の命令アドレス情報、例えば、分岐命令のPC値を取得することができる。かつ、分岐予測器110を介し、導入されたプログラム識別情報150、予測対象分岐命令の命令アドレス情報及び分岐予測テーブルに基づき、当該予測対象分岐命令に対応するターゲット予測情報を決定することができる。また、ターゲット予測情報を分岐命令実行及び制御ユニット200に送信することにより、分岐命令実行及び制御ユニット200は、ターゲット予測情報に基づいて予測処理を行うことができる。
本発明の1つの例として、プロセッサ実行中、システムソフトウェアを介して予測対象分岐命令に対応するプログラムを識別し、これにより、当該予測対象分岐命令に対応するプログラム識別情報を識別することができる。具体的に、プロセッサによって実行されるようにプログラムが当該プロセッサにはスケジュールされた場合、システムソフトウェアは当該プログラムのプログラム識別情報を感知することができ、かつ、感知したプログラム識別情報をプロセッサに伝達し、例えば、レジスタを設定するなどの方式でプログラム識別情報をプロセッサハードウェアに伝達することができ、これにより、プロセッサは実行されている命令に対応するプログラム識別情報を識別することができ、また当該プログラム識別情報を当該プログラムにおける予測対象分岐命令に対応するプログラム識別情報として決定することができるようになり、これにより、当該プログラム識別情報によって異なるプロセス中のプログラムの分岐予測を隔離させることができる。
説明すべきものとして、プログラム識別情報は異なるプログラム間の差別特徴、例えば、仮想マシン番号、プロセス番号、アドレスセグメント情報、仮想アドレス又は物理アドレスの一部のビット情報などを区別するために使用されてもよい。そのうち、仮想マシン番号は異なる仮想マシン中のプログラムを区別するために使用されてもよい。プロセス番号は異なるプロセス中のプログラムを区別するために使用されてもよい。アドレスセグメント情報はユーザプログラムとシステムプログラムを区別するために使用されてもよい。当然ながら、プログラム識別情報はまた、例えば、オペレーティングシステムなどのシステムソフトウェアによってプログラムに付加された他の識別(Identity、ID)情報であってもよく、本発明の実施例はこれを限定しない。
例えば、オペレーティングシステムは、プロセススケジュールを行う場合、プロセス番号をプロセッサ内部の1つのハードウェアに存在するレジスタ中に書き込むことができ、これにより、プロセッサは当該レジスタからプロセス番号を読み出すことができ、かつ、当該プロセス番号を予測対象分岐命令に対応するプログラム識別情報とすることができるようになる。また、例えば、アドレス空間の切り替えの場合、オペレーティングシステムはプロセッサ内部のセグメントレジスタの内容を変更し、即ち、当該セグメントレジスタによって記録されたセグメントアドレス情報を変更することができ、これにより、プロセッサは変更したセグメントアドレス情報を予測対象分岐命令に対応するプログラム識別情報として識別することができるようになる。そのうち、セグメントレジスタは、プロセッサ内部の1つのハードウェアに存在するレジスタであってもよい。
本例において、プログラム識別情報を用いて、分岐予測器の分岐予測テーブルにおける異なるプログラムに属する予測情報を隔離させてもよい。例えば、プログラム識別情報を分岐予測器のアクセスアドレスの計算過程に導入し、例えば、ハッシュ(Hash)などの方式でプログラム識別情報と予測対象分岐命令の命令アドレス情報を計算し、これにより、当該分岐命令に対応するターゲット予測情報を得ることができる。当該ターゲット予測情報は分岐命令に対応して予測されたスキップ方向、スキップターゲットなどをキャラクタリゼーションするために使用されることができる。
また、例えば、分岐予測テーブルの各エントリに「プログラム識別情報」ドメインを追加することができ、これにより、プログラム識別情報は分岐予測器を制御する操作に参与することができ、これにより、異なるプログラム中の分岐命令は異なる分岐予測器のエントリにアクセスすることができるようになり、分岐予測器中の異なるプログラムに属するエントリを隔離させることが実現される。そのうち、分岐予測テーブルのエントリに記録された情報は分岐命令に対応する分岐予測情報、例えば、スキップターゲット情報、スキップ方向情報などを含んでもよい。スキップターゲット情報は分岐命令に対応して予測されたスキップターゲット、例えば、スキップターゲットアドレスなどを決定するために使用されてもよい。スキップ方向情報は、予測対象分岐命令に対応して予測されたスキップ方向を決定するために使用されてもよく、例えば、スキップターゲット情報が「1」である場合、予測対象分岐命令に対応して予測されたスキップ方向が「スキップ」であると決定することができる。スキップターゲット情報が「0」である場合、予測対象分岐命令に対応して予測されたスキップ方向が「スキップしない」であると決定することができる。
予測対象分岐命令に対応するターゲット予測情報を決定した後、分岐予測器は当該ターゲット予測情報を分岐命令実行及び制御ユニットに送信することができ、これにより、分岐命令実行及び制御ユニットは当該ターゲット予測情報を用いて当該予測対象分岐命令に対して予測処理を行い、対応する予測結果を得ることができ、その後、当該予測結果をプロセッサの内部に保存することができ、例えば、予測結果を、キャッシュ(Cache)、分岐予測テーブル、名前変更レジスタなどの内部一時バッファに保存することができ、これにより、分岐命令によって引き起こされるパイプラインのブロックを回避でき、命令パイプラインのスループットを向上させるとともに、プロセッサの性能を向上させる。
要約すると、本発明の実施例は、予測対象分岐命令に対応するプログラム識別情報を識別した後、当該プログラム識別情報に基づいて予測対象分岐命令に対応するターゲット予測情報を決定することができ、これにより、異なるプログラム間の分岐予測は互いに干渉しないようになり、分岐予測器における異なるプログラムの分岐予測情報を隔離させることが実現され、これにより、分岐予測器を用いて実行する攻撃中の必須リンクを確立し難くようになり、分岐予測器を用いて実行する攻撃の成功率を大幅に低下させ得る。
具体的な実現において、ハードウェア分岐予測の核となる構想は、分岐実行の過去の履歴情報基づいて分岐の動作を予測することであってもよい。これらの予測のための履歴情報は分岐予測器の分岐予測テーブルに格納されることができる。したがって、任意の分岐命令の実行情報は分岐予測判定に参与することができる。分岐予測器の分岐予測テーブルは、BTBテーブル、PHT、リターンアドレススタック(Return Addresses Stack、RAS)テーブルなどを含むが、それらに限定されず、本発明の実施例はこれを限定しない。
具体的に、分岐命令を実行完了した後、分岐命令のスキップ方向とスキップターゲットを決定することができ、その後、この分岐命令の関連情報を分岐予測器の分岐予測テーブルのエントリに入力することができる。関連情報は、分岐予測に関連する情報を含むことができ、具体的に、分岐命令に対応するプログラム識別情報、分岐予測情報、命令アドレス情報などを含むことができる。そのうち、命令アドレス情報は分岐命令のアドレスを特定するために使用されることができ、例えば、分岐予測のPCのために使用されることができる。分岐予測情報はスキップターゲット情報及び/又はスキップ方向情報を含むことができる。スキップターゲット情報によって分岐命令に対応する予測スキップターゲット、例えば、予測したスキップターゲットアドレスを特定することができる。スキップ方向情報は、分岐命令に対応する予測方向、例えば、分岐命令に対して予測されたスキップ方向などを決定するために使用されることができる。
本発明の1つの選択的な実施例において、分岐予測回路はプロセッサに適用され、当該分岐予測回路の分岐予測器は、更新回路をさらに含んでもよい。当該更新回路は前記プロセッサによって実行されている分岐命令の命令アドレス情報に基づき、前記分岐予測テーブルにおける記録情報を更新することができる。そのうち、前記記録情報は、前記命令アドレス情報に対応するプログラム識別情報と分岐予測情報を含む。
選択的に、本発明の実施例に係る分岐予測回路の制御方法は、プロセッサによって実行されている分岐命令の命令アドレス情報に基づき、前記分岐予測テーブルにおける記録情報を更新するステップであって、そのうち、前記記録情報は前記命令アドレス情報に対応するプログラム識別情報と分岐予測情報を含むステップをさらに含んでもよい。具体的に、プロセッサ実行中、前記プロセッサによって実行されているプログラム中の分岐命令に対し、命令アドレス情報を取得し、取得された命令アドレス情報に基づいて前記分岐命令に対応する分岐予測情報を確立することができる。そのうち、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも1項を含む。その後、同一分岐命令の場合、分岐予測テーブルで前記分岐予測情報と前記プログラム識別情報を関連させて記憶することができ、分岐命令に対応する分岐予測情報及びプログラム識別情報を分岐予測テーブルに記録することを実現する。例えば、分岐予測器には、分岐予測テーブルではじめてとある分岐命令のエントリを確立する場合、分岐予測のためのPC、分岐履歴予測方向、予測スキップターゲットなどの情報を確立されたエントリに入力すると同時に、当該分岐命令に対応するプログラム識別情報を当該エントリに入力することができ、これにより、プログラム識別情報とPCに基づいてあとで分岐予測を行うことができる。
これからわかるように、本発明の実施例における分岐予測器の分岐予測テーブルの記録情報は、従来の分岐予測器によって記録された分岐予測のためのPC、分岐履歴予測方向、予測スキップターゲットだけではなく、新たに追加されたプログラム識別情報をも含んでおり、分岐予測器の分岐予測テーブル構造が変えられ、これにより、分岐予測器はプログラム識別情報に基づいて分岐予測を行うことができる。
本発明の1つの選択的な実施形態において、前記予測情報決定モジュールは、第1の探索回路と第2の探索回路を含んでもよい。前記第1の探索回路は前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索することができる。前記第2の探索回路は前記分岐予測テーブルで、前記第1の探索回路によって探索された分岐予測情報に対応するプログラム識別情報を探索することができる。探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することができる。
本発明の実施例において、選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する上記ステップは、前記分岐予測テーブルで、前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索するステップと、前記分岐予測テーブルで、前記分岐予測情報に対応するプログラム識別情報を探索するステップと、探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含んでもよい。
具体的な実現において、第1の探索回路は前記分岐予測器の分岐予測テーブルで、予測対象分岐命令に対応してプリセットされた分岐予測情報を探索することができる。第1の探索回路が分岐予測情報を探索した後、第2の探索回路は分岐予測テーブルで、前記分岐予測情報に対応するプログラム識別情報を探索し、探索された分岐予測情報に対応するプログラム識別情報が前記分岐命令に対応するプログラム識別情報にマッチするかどうかを判定することができる。マッチする場合、前記探索された分岐予測情報から前記ターゲット予測情報を抽出することができる。マッチしない場合、前記分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することができる。
本発明の1つの選択的な実施例において、前記分岐予測情報に対応するプログラム識別情報を探索する前記ステップの後、前記探索されたプログラム識別情報を前記予測対象分岐命令に対応する現在のプログラム識別情報と比較するステップをさらに含んでもよい。具体的に、第2の探索回路は、探索されたプログラム識別情報を前記予測対象分岐命令に対応する現在のプログラム識別情報と比較し、探索されたプログラム識別情報と予測対象分岐命令に対応する現在のプログラム識別情報が同じであるかどうかを判定してもよい。
1つの選択的な実施形態において、第2の探索回路は、比較サブ回路と適応サブ回路を含んでもよい。前記比較サブ回路は前記探索されたプログラム識別情報を前記予測対象分岐命令に対応する現在のプログラム識別情報と比較する。前記適応サブ回路は、前記探索されたプログラム識別情報と前記現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、前記探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
具体的に、第1の探索回路は前記分岐予測器の分岐予測テーブルで、予測対象分岐命令に対応する分岐予測情報を探索することができ、例えば、分岐予測テーブルでとあるエントリに記録された分岐命令PCと現在予測対象分岐命令のPCが同じである場合、当該エントリに記録された分岐予測情報を探索された分岐予測情報として決定することができる。第2の探索回路における比較サブ回路は、分岐予測テーブルから、探索された分岐予測情報に対応するプログラム識別情報を取得し、取得されたプログラム識別情報を予測対象分岐命令に対応する現在のプログラム識別情報と比較し、取得されたプログラム識別情報と予測対象分岐命令に対応するプログラム情報が同じであるかどうかを判定することができる。取得されたプログラム識別情報と予測対象分岐命令に対応するプログラム情報が同じである場合、探索された分岐予測情報をターゲット予測情報として決定することができる。そうではない場合、探索された分岐予測情報を破棄し、継続的に当該予測対象分岐命令に対して分岐予測テーブルで対応する分岐予測情報を探索することができる。
例えば、分岐予測器を使用して分岐予測を行う場合、第1の探索回路は伝統的な探索方式を用いて分岐予測器の分岐予測テーブルで探索し、予測対象分岐命令の分岐予測情報を得ることができる。予測対象分岐命令の分岐予測情報を得ることに基づき、第2の探索回路における比較サブ回路は予測対象分岐命令に対応するプログラム識別情報を探索し得られた分岐予測情報の位置するエントリ中のプログラム識別情報と比較することができる。予測対象分岐命令に対応するプログラム識別情報と探索し得られた分岐予測情報の位置するエントリ中のプログラム識別情報が同じであり、即ち、予測対象分岐命令のPCと探索されたエントリ中の分岐命令PCが同じであり、かつ、予測対象分岐命令に対応するプログラム識別情報と当該エントリ中のプログラム識別情報が同じである場合、当該エントリ中の分岐予測情報をターゲット予測情報として決定することができ、かつ、当該エントリからターゲット予測情報を抽出することができ、これにより、当該ターゲット予測情報を使用して予測処理を行い、当該予測対象分岐命令に対応する予測結果を得る。予測対象分岐命令に対応するプログラム識別情報と探索し得られた分岐予測情報の位置するエントリ中のプログラム識別情報が同じではなく、例えば、予測対象分岐命令のPCと探索されたエントリ中の分岐命令PCが同じであるが、分岐命令に対応するプログラム識別情報と当該エントリ中のプログラム識別情報が同じではない場合、探索された分岐予測情報を破棄し、1つのランダム予測情報を生成することができ、かつ、当該ランダム予測情報をターゲット予測情報として、プロセッサに使用されるように返すことができ、これにより、プロセッサは当該ランダム予測情報に基づいて予測処理を行うようになり、これにより、攻撃の成功率を低下させる。当然ながら、また、予測対象分岐命令に対応するプログラム識別情報と当該エントリ中のプログラム識別情報が同じであり、予測対象分岐命令のPCと探索されたエントリ中の分岐命令PCが同じではない場合、1つのランダム予測情報を生成してプロセッサに返してもよく、本発明の実施例はこれを限定しない。
説明すべきものとして、ランダム予測情報は分岐予測情報の数値範囲と一致する1つのランダム値であってもよい。例えば、通常通りに返された分岐予測情報が0と1である場合、返されたランダム予測情報は0と1のランダムのいずれか1つであってもよい。また、例えば、通常の分岐予測情報が64ビットのアドレスデータである場合、返されたランダム予測情報は1つの64ビットのランダム数などであってもよい。
当然ながら、本発明の実施例はまた、予測対象分岐命令に対応する現在の対応するプログラム識別情報に基づいて分岐予測テーブルで対応する分岐予測情報を探索し、探索された分岐予測情報に対応してプリセットされた命令アドレス情報を当該予測対象分岐命令の命令アドレス情報と比較することができ、これにより、プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じである場合、探索された分岐予測情報を用いてターゲット予測情報を決定し、本発明の実施例はこれを具体的に限定しない。
本発明の別の選択的な実施形態において、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する上記ステップは、前記予測対象分岐命令に対応する現在のプログラム識別情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索するステップと、探索された分岐予測情報に対応してプリセットされた命令アドレス情報を前記予測対象分岐命令の命令アドレス情報と比較するステップと、プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じである場合、前記探索された分岐予測情報から前記ターゲット予測情報を抽出するステップと、プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含んでもよい。
具体的な実現において、前記予測情報決定モジュールは第5の探索回路と第6の探索回路を含んでもよい。前記第5の探索回路は前記予測対象分岐命令に対応する現在のプログラム識別情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応してプリセットされた分岐予測情報を探索する。前記第6の探索回路は、探索された分岐予測情報に対応してプリセットされた命令アドレス情報を前記予測対象分岐命令の命令アドレス情報と比較する。プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じである場合、前記探索された分岐予測情報から前記ターゲット予測情報を抽出し、また、プリセットされた命令アドレス情報と前記予測対象分岐命令の命令アドレス情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
本発明の実施例において、選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定するステップは、
前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索するステップと、
探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出するステップと、
探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含む。
具体的な実現において、前記予測情報決定モジュールは、第3の探索回路を含む。
前記第3の探索回路は、前記予測対象分岐命令に対応する現在のプログラム識別情報に基づいて前記分岐予測テーブルにおける分岐予測情報に対応するプログラム識別情報を探索する。探索されたプログラム識別情報と前記予測対象分岐命令に対応する現在のプログラム識別情報が同じである場合、前記分岐予測情報からターゲット予測情報を抽出し、また、探索されたプログラム識別情報と前記現在のプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定する。
本発明の実施例において、選択的に、分岐予測回路の制御方法は、分岐命令の分岐結果に基づいて前記分岐予測テーブルにおける修正対象である分岐予測情報を決定するステップであって、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも1項を含むステップと、前記修正対象である分岐予測情報に対応するプログラム識別情報を前記分岐命令のプログラム識別情報と比較するステップと、前記修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じである場合、前記分岐結果に基づいて前記修正対象である分岐予測情報を修正するステップと、をさらに含む。
具体的な実現において、更新回路は分岐命令の分岐結果に基づいて前記分岐予測テーブルにおける修正対象である分岐予測情報を決定することができ、前記分岐予測情報は、スキップターゲット情報とスキップ方向情報の少なくとも1項を含む。前記第2の探索回路は前記修正対象である分岐予測情報に対応するプログラム識別情報を前記分岐命令のプログラム識別情報と比較し、これにより、修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じであるかどうかを決定する。前記修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じである場合、前記更新回路は前記分岐結果に基づいて前記修正対象である分岐予測情報を修正する。
本発明の1つの選択的な例において、分岐命令実行及び制御ユニットは、分岐命令を実行した後、当該分岐命令の分岐結果を生成することができ、かつ、当該分岐結果を分岐予測器に送信することができ、これにより、分岐予測器が当該分岐結果に基づいて分岐予測テーブルにおける記録情報を更新するようにトリガーし、分岐予測テーブルの精度を決定する。具体的に、分岐予測器における更新回路は分岐命令の分岐結果に基づいて修正対象である分岐予測情報を決定することができる。その後、第2の探索回路における比較サブ回路を介して前記修正対象である分岐予測情報に対応するプログラム識別情報を前記分岐命令のプログラム識別情報と比較することができ、これにより、修正対象である分岐予測情報に対応するプログラム識別情報と分岐命令のプログラム識別情報が同じであるかどうかを判定する。前記修正対象である分岐予測情報に対応するプログラム識別情報と前記分岐命令のプログラム識別情報が同じである場合、更新回路は前記分岐結果に基づいて修正対象である分岐予測情報を修正することができる。
例えば、分岐結果に基づいて分岐予測器の分岐予測テーブルの既存のエントリを修正する場合、分岐予測器は分岐命令に対応するプログラム識別情報を分岐予測テーブルにおける修正対象であるエントリ中のプログラム識別情報と比較することができる。分岐命令に対応するプログラム識別情報と修正対象であるエントリ中のプログラム識別情報が同じであり、かつ、分岐命令のPCと探索した当該エントリ中の分岐命令PCが同じであり、即ち、プログラム識別情報とPCの両者が同じである場合、当該分岐結果中の実際のスキップ方向に基づいて修正対象であるエントリ中の予測方向を修正することができ、及び/又は、当該分岐結果中の実際のスキップターゲットアドレスに基づいて修正対象であるエントリ中の予測スキップターゲットを修正することができる。分岐命令に対応するプログラム識別情報と修正対象であるエントリ中のプログラム識別情報が同じではない場合、当該分岐命令の分岐結果に基づいて修正対象であるエントリを修正しなくてもよい。
説明すべきものとして、分岐予測器のエントリに保存されたプログラム識別情報は、システムソフトウェアによって設定された完全なプログラム識別情報であってもよく、完全なプログラム識別情報が圧縮又はマッピング変換された後の情報などであってもよく、本発明の実施例はこれを限定しない。
本発明の実施例に係る制御方法は様々なタイプの分岐予測器に適用されることができる。以下は具体的な分岐予測器を合わせて本発明についてさらに例を挙げて説明する。
具体的に、分岐予測器の分岐予測テーブルは様々な分岐予測構造を用いることができ、例えば、スタック構造を用いたRASテーブルであってもよく、マルチグループ接続又は完全連続構造を用いたBTBテーブルであってもよく、または、PHTなどであってもよく、本発明の実施例はこれを限定しない。
本発明の1つの例として、プロセッサ中の分岐予測器がBTBテーブルを用いて分岐予測を行う場合、当該BTBテーブルのエントリにプログラム識別情報ドメインが添加されてもよく、これにより、プロセッサは当該BTBテーブルのエントリに含まれているプログラム識別情報と分岐命令PCに基づいて分岐予測器の分岐予測動作を制御することができる。そのうち、BTBテーブルは、1つの探索テーブルであってもよく、マルチグループ接続又は完全連続構造を用いてもよい。例えば、BTBテーブルに使用されたのは完全連続構造であってもよく、かつ、当該BTBテーブルの各エントリ中の情報は分岐命令PC、分岐ターゲットアドレス、分岐履歴テーブル(Branch History Table、BHT)情報及びプログラム識別情報などを含んでもよい。
そのうち、BHT情報は飽和カウンター値、例えば、2ビットの飽和カウンター値であってもよい。分岐予測を行う場合、予測対象分岐命令のPCをBTBテーブルにおける各エントリに保存されている分岐命令PCと比較することができると同時に、予測対象分岐命令に対応するプログラム識別情報をBTBテーブルにおける各エントリのプログラム識別情報と比較することができる。また、プログラム識別情報とPCの2つの比較が同じである場合、BTBテーブルで当該分岐命令の的中エントリを探索したと見なされることができ、これにより、的中エントリの分岐ターゲットアドレスに基づいてスキップターゲットを予測することができ、また、的中エントリのBHT情報に基づいてスキップが発生するかどうかを予測することができる。
例えば、予測対象分岐命令のPCとBTBテーブルにおけるとあるエントリに保存されている分岐命令PCが同じであり、かつ、当該エントリ中のプログラム識別情報と当該予測対象分岐命令に対応するプログラム識別情報が同じである場合、当該エントリを的中エントリとして決定することができ、その後、BHT情報に基づいてスキップが発生するかどうかを予測することができる。1つの選択的な例において、BHT情報が2ビットの飽和カウンター値である場合、2ビットの飽和カウンター値が2より大きい又は2に等しいである場合、分岐命令のスキップ方向が「スキップ」であると予測することができる。2ビットの飽和カウンター値が2より小さいである場合、分岐命令のスキップ方向が「スキップしない」であると予測することができる。
分岐命令を実行し完了した場合、当該分岐命令の実行結果(即ち、分岐結果)に基づいて分岐予測器のBTBテーブルを更新することができる。具体的に、分岐命令に対応するプログラム識別情報とBTBテーブルのとあるエントリに記録されたプログラム識別情報がマッチし、かつ、分岐命令のPCと当該エントリ中の分岐命令PCがマッチし、即ち、両者が同時にマッチする場合、分岐結果に基づいてこのエントリの分岐ターゲットアドレス、予測方向などの情報を修正することができる。プログラム識別情報とPCの両者が同時にマッチできない場合、BTBテーブルには、当該分岐命令の既存のエントリがないと見なされることができ、例えば、分岐命令のPCとBTBテーブルにおけるエントリに記録された分岐命令PCがマッチするが、分岐命令に対応するプログラム識別情報と当該エントリのプログラム識別情報がマッチしない場合、当該分岐命令の分岐結果に対してBTBテーブルで1つの新たなエントリを再確立することができる。新たなエントリを確立する場合、当該分岐命令のプログラム識別情報を新たなエントリのプログラム識別情報ドメインに入力することができ、これにより、プログラム識別情報に基づいて予測対象分岐命令に対応するターゲット予測情報をあとで決定することができる。
また、関数リターン命令は、特別な間接分岐命令であり、上記BTBテーブル方式を用いて予測することができるだけではなく、リターンアドレススタック(Return Addresses Stack、RAS)予測構造を介して予測してもよい。説明すべきものとして、関数呼び出し命令を実行する場合、リターンアドレス(即ち、関数呼び出し命令に次ぐ1番目の命令)を、RASスタックにプッシュすることができる。関数がリターンする場合、RASスタックトップからリターンアドレスとしてポップすることができる。
本発明の実施例を適用すると、RASにプログラム識別情報ドメインを追加することができ、これにより、RASにプッシュされたプログラム識別情報に基づいてスタックトップから読み取ったリターンアドレスが使用できるかどうかを決定することができる。具体的に、RASはスタック構造を用いることができる。関数呼び出し命令はリターンアドレスをスタックにプッシュすることができる。関数リターン命令がRASを用いて予測する場合、スタックトップアイテムのリターンアドレスを予測されたスキップターゲットとして読み出すことができ、さらに、当該スタックトップアイテムのプログラム識別情報に基づいて当該リターンアドレスを使用して予測処理を行うかどうかを判定することができる。例えば、関数呼び出し命令が実行される場合、当該命令に次ぐPC値(即ち、関数リターンアドレス)をスタックトップからプッシュすると同時に、当該関数のプログラム識別情報をスタックにプッシュすることもできる。関数リターン命令がRASを用いて予測する場合、スタックトップからプログラム識別情報とリターンアドレスを同時に取り出すことができ、かつ、現在のプログラム識別情報を取り出したプログラム識別情報と比較し、また、両者が同じである場合、RASに的中したと見なされ、取り出されたリターンアドレスを予測されたスキップターゲットとし、そうではない場合、1つのランダム予測値をリターンすることができる。
本発明の別の例として、分岐予測器がPHTを用いて予測する場合、本発明の実施例はPHTのエントリにプログラム識別情報を添加することができ、これにより、当該プログラム識別情報を使用してエントリ中の飽和カウンターの有効性を制御する。説明すべきものとして、PHTはPCロービット直接インデックスの方式を用いて予測することができ、かつ、当該PHTの各エントリは1つの2ビットの飽和カウンターを用いて分岐スキップ方向履歴情報を記録することができる。
本発明の1つの選択的な実施形態において、同一プログラムに対し、異なる分岐命令に対応する飽和カウンター情報と当該プログラムのプログラム識別情報をPHTの同一エントリに保存することができる。例えば、図4に示すように、いくつかの飽和カウンター情報と1つのプログラム識別情報を1セットの201に合わせ、PHTの同一エントリに入力することができ、これにより、当該エントリ中のすべての飽和カウンター情報が1つのプログラム識別情報202を共有するようになり、これにより、PHTの各エントリにプログラム識別情報を追加することによるオーバーヘッドが削減される。
分岐予測を行う場合、所定のインデックス方式に基づいて指定された位置のエントリに格納されている飽和カウンター情報とプログラム識別情報を読み取ることができる。例えば、図4に示すように、予測対象分岐命令のPCロービットに基づき、当該PHTで当該PCロービットの位置するエントリを探索することができ、当該エントリは当該PCロービットに対応する飽和カウンター情報とプログラム識別情報を含むことができ、その後、探索されたエントリから飽和カウンター情報とプログラム識別情報を読み取ることができ、さらに、読み出されたプログラム識別情報を現在のプログラム識別情報と比較することができる。読み出されたプログラム識別情報と現在のプログラム識別情報が同じである場合、探索されたエントリが有効であると見なされることができ、即ち、読み出された飽和カウンター情報が有効であると決定することができ、これにより、飽和カウンター情報の内容に基づいて分岐方向を予測し、即ち、スキップが発生するかどうかを予測することができる。読み出されたプログラム識別情報と現在のプログラム識別情報が同じではない場合、読み取った飽和カウンター情報を破棄することができ、さらに、ランダム方式で分岐方向を予測することができる。分岐命令を実行し完了した場合、実行される分岐の結果に基づいてPHTを更新することができる。PHTを更新する場合、所定規則に遵って指定されたエントリ飽和カウンター情報を更新することができると同時に、現在のプログラム識別情報を当該指定されたエントリに書き込むことができる。
具体的な実現において、PHTのエントリが限られているため、PHTにおける異なる分岐命令の競合を回避するために、全体分岐履歴などの分岐命令間の関連関係の情報を用いて異なる分岐命令を異なるエントリにハッシュ(Hash)することができる。本発明の実施例はさらに、プログラム識別情報を使用してPHTのエントリインデックス位置を制御することができ、即ち、プログラム識別情報を用いて分岐予測器を制御することができ、これにより、異なるプログラム中の分岐命令が分岐予測テーブルで互いに隔離されるようになり、例えば、ハッシュの方式を用いて隔離効果を達成することができる。
具体的に、PHTを探索して予測する場合、分岐命令のインデックスアドレスの計算は分岐命令PC又は分岐履歴情報を含むことができるだけではなく、現在のプログラム識別情報を含んでもよい。そのうち、プログラム識別情報をPHTインデックスアドレスに含めて計算する方式は排他的論理和の方式であってもよく、スプライシング形式、インターウィービング形式、一部がスプライシングであるとともに一部が排他的論理和の変換形式であるなどの他の変換形式であってもよく、本発明の実施例はこれを限定しない。
これらの変換形式に基づき、2つの異なるプログラム識別情報値により、伝統的な方式で算出した同一インデックスアドレスを2つの異なるアドレス情報に変換することができる。同一プログラム識別情報値に基づき、伝統的な方式で算出した2つの異なるインデックスアドレスを2つの異なるアドレス情報に変換することができる。
本発明の1つの選択的な実施例において、前記予測情報決定モジュールは、演算回路と第4の探索回路を含んでもよい。前記演算回路は前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定し、さらに、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得ることができる。前記第4の探索回路は前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索することができる。
選択的に、予測対象分岐命令に対応するプログラム識別情報及び前記分岐予測回路の分岐予測テーブルに基づき、前記予測対象分岐命令に対応するターゲット予測情報を決定する上記ステップは、前記予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定するステップと、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得るステップと、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索するステップと、を含んでもよい。
具体的に、分岐予測器における演算回路は、分岐予測を行う場合、予測対象分岐命令の命令アドレス情報に基づき、インデックスアドレス情報を決定することができ、また、前記プログラム識別情報と前記インデックスアドレス情報に基づいてハッシュ処理を行い、ターゲットインデックスアドレス情報を得ることができる。その後、第4の探索回路は当該演算回路によって得られたターゲットインデックスアドレス情報に基づき、分岐予測テーブルで分岐命令に対応するターゲット予測情報を探索することができる。そのうち、分岐命令の命令アドレス情報は分岐命令のアドレス、例えば、分岐命令PC、分岐命令PCのロービット情報などをキャラクタリゼーションするために使用されることができる。
1つの選択的な実施形態において、予測対象分岐命令に対して分岐予測を行う場合、演算回路は当該予測対象分岐命令の命令アドレス情報と分岐予測テーブルに記録された分岐履歴情報に基づいて計算し、インデックスアドレス情報を得ることができ、その後、プログラム識別情報を用いてインデックスアドレス情報に対してハッシュ処理を行い、ターゲットインデックスアドレス情報を得ることができ、これにより、第4の探索回路は当該ターゲットインデックスアドレス情報に基づいて分岐予測テーブルで当該予測対象分岐命令に対応するターゲット予測情報を探索することができる。そのうち、分岐履歴情報は分岐予測器の全体分岐履歴情報をキャラクタリゼーションするために使用されることができる。
本発明の1つの選択的な実施例において、前記第4の探索回路は、比較サブ回路と適応サブ回路を含んでもよい。前記比較サブ回路は前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較することができる。前記適応サブ回路は、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出し、また、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定することができる。
選択的に、前記ターゲットインデックスアドレス情報に基づき、前記分岐予測テーブルで前記予測対象分岐命令に対応するターゲット予測情報を探索する上記ステップは、前記分岐予測テーブルで、前記ターゲットインデックスアドレス情報に対応する分岐予測情報を探索し、前記分岐予測情報に対応してプリセットされたプログラム識別情報を前記予測対象分岐命令に対応するプログラム識別情報と比較するステップと、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じである場合、前記分岐予測情報から前記ターゲット予測情報を抽出するステップと、前記プリセットされたプログラム識別情報と前記予測対象分岐命令に対応するプログラム識別情報が同じではない場合、前記予測対象分岐命令に対してランダム予測情報を生成し、前記ランダム予測情報を前記ターゲット予測情報として決定するステップと、を含んでもよい。
本発明の1つの選択的な例として、予測対象分岐命令PCのロービット情報と分岐履歴情報に基づいて排他的論理和計算を行うことができ、例えば、予測対象分岐命令PCのロービットと全体分岐履歴情報に対して逐次排他的論理和を行い、当該予測対象分岐命令のインデックスアドレス情報を得ることができる。その後、インデックスアドレス情報と現在のプログラム識別情報に対してハッシュ処理を行うことができ、例えば、インデックスアドレス情報と現在のプログラム識別情報に対して排他的論理和を行い、これにより、異なるプログラムの分岐命令は異なるエントリにアクセスすることができるようになり、分岐予測器における異なるプログラムに属するエントリを隔離させることが実現される。
要約すると、本発明の実施例は、プログラム識別情報を用いて分岐予測器における異なるプログラムに属するエントリを隔離させ、これにより、異なるプログラム間の分岐予測は互いに干渉しあうことなく、従来の技術において、分岐予測器のトレーニング、予測過程では、異なるプログラムを区別できないため、悪意の攻撃プログラムは攻撃されたプログラムが実行される時の分岐予測器の動作を間接的に操ることができるようになるという問題が解決される。
また、本発明の実施例は、プログラム識別情報によって異なるプログラム間の分岐予測を隔離させ、方法が単純明快で、プログラム自動動作に頼らず、プログラム実行時に性能に対する負の影響を回避でき、簡潔で実用であり、回路が実現されるのに必要とする面積、遅延オーバーヘッドを減少できる。
説明すべきものとして、方法の実施例は、シンプルに説明するために、一連のアクションの組み合わせとして表されているが、当業者であれば、本発明の実施例は、一部のステップが本発明の実施例に基づいて他の順序で、又は同時に行われることができるため、記載のアクションの順序に限定されないと了解すべきである。次に、当業者であれば、明細書に記載の実施例が、いずれも好ましい実施例であり、それに関わるアクションが必ずしも本発明の実施例で必須なものではなくてもよいと了解すべきでもある。
図5は、1つの例示的実施例に基づいて示された分岐予測回路の制御に適用された電子機器500の構造ブロック図である。例えば、電子機器500は、携帯電話、コンピュータ、デジタルブロードキャスト端末、メッセージング機器、ゲームコンソール、タブレット機器、医療機器、フィットネス機器、パーソナルデジタルアシスタントなどであってもよい。
図5を参照すると、電子機器500は、処理素子502、メモリ504、電源素子506、マルチメディア素子508、オーディオ素子510、入力/出力(I/O)インタフェース512、センサー素子514、及び通信素子516の1つ又は複数を含んでもよい。
処理素子502は、一般に、ディスプレイ、電話呼び出し、データ通信、カメラ操作、及び記録操作に関連する操作など、電子機器500の全体的な操作を制御する。処理素子502は、上記の方法のステップのすべて又は一部を完了するための命令を実行するための1つ又は複数のプロセッサ520を含んでもよい。また、処理素子502は、処理素子502と他の素子との間の相互作用を容易にするための1つ又は複数のモジュールを含んでもよい。例えば、処理素子502は、マルチメディア素子508と処理素子502との間の相互作用を容易にするためのマルチメディアモジュールを含んでもよい。選択的に、プロセッサ520に分岐予測器が含まれてもよい。
メモリ504は、機器500での操作ができるようにするための様々なタイプのデータを記憶するように構成されている。これらのデータの例は、電子機器500で操作されるための任意のアプリケーションプログラム又は方法の命令、連絡先データ、電話帳データ、メッセージ、写真、ビデオなどを含む。メモリ504は、スタティックランダムアクセスメモリ(SRAM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)、消去可能プログラマブル読み取り専用メモリ(EPROM)、プログラマブル読み取り専用メモリ(PROM)、読み取り専用メモリ(ROM)、磁気メモリ、フラッシュメモリ、磁気ディスク又はコンパクトディスクなどの任意のタイプの揮発性又は非揮発性記憶機器又はそれらの組み合わせによって実現されることができる。
電源素子506は電子機器500の様々な素子に電力を提供する。電源素子506は、電源管理システム、1つ又は複数の電源、及び、電子機器500のために電力を生成し、管理して分配することに関連する他の素子を含んでもよい。
マルチメディア素子508は、前記電子機器500とユーザの間の1つの出力インタフェースを提供するスクリーンを含む。いくつかの実施例において、スクリーンは、液晶ディスプレイ(LCD)とタッチパネル(TP)を含んでもよい。スクリーンがタッチパネルを含む場合、スクリーンは、ユーザからの入力信号を受信するために、タッチスクリーンとして実現されることができる。タッチパネルは、タッチ、スライド及びタッチパネルでのジェスチャーを感知するための1つ又は複数のタッチセンサーを含む。前記タッチセンサーは、タッチ又はスライドアクションのボーダーを感知するだけではなく、前記タッチ又はスライド操作に関連する持続時間と圧力を測定することができる。いくつかの実施例において、マルチメディア素子508は、1つのフロントカメラ及び/又はリアカメラを含む。電子機器500が撮影モード又はビデオモードなどの操作モードにある場合、フロントカメラ及び/又はリアカメラが外部のマルチメディアデータを受信できる。各フロントカメラとリアカメラは、1つの固定された光学レンズシステムであってもよく、または、焦点距離と光学ズーム機能を備えていてもよい。
オーディオ素子510は、オーディオ信号を出力及び/又は入力するように構成されている。例えば、オーディオ素子510は1つのマイク(MIC)を含み、電子機器500が呼び出しモード、記録モード及び音声識別モードなどの操作モードにある場合、マイクが外部オーディオ信号を受信するように構成されている。受信されたオーディオ信号はさらに、メモリ504に記憶され、または、通信素子516を介して送信されることができる。いくつかの実施例において、オーディオ素子510は、オーディオ信号を出力するための1つのスピーカーをさらに含む。
I/Oインタフェース512は、処理素子502と周辺インタフェースモジュールの間にインタフェースを提供し、上記周辺インタフェースモジュールは、キーボード、クイックホイール、ボタンなどであってもよい。これらのボタンは、ホームページボタン、音量ボタン、スタートボタン及びロックボタンを含むが、それらに限定されない。
センサー素子514は、電子機器500に各態様の状態評価を提供するための1つ又は複数のセンサーを含む。例えば、センサー素子514は、機器500のオン/オフ状態、素子の相対的なポジションを測定することができ、例えば、前記素子は電子機器500のディスプレイ及びキーパッドであり、センサー素子514はまた、電子機器500又は電子機器500の1つの素子の位置変更、ユーザと電子機器500との接触があるかどうか、電子機器500の方位又は加速/減速及び電子機器500の温度変化を測定してもよい。センサー素子514は、近接センサーを含んでもよく、任意の物理的接触がない場合の付近物体の存在を測定するためのものであるように構成されている。センサー素子514はまた、撮像用途で適用するための、CMOS又はCCD画像センサーなどの光センサーを含んでもよい。いくつかの実施例において、当該センサー素子514はまた、加速度センサー、ジャイロスコープセンサー、磁気センサー、圧力センサー又は温度センサーを含んでもよい。
通信素子516は、電子機器500と他の機器との有線又は無線方式の通信を容易にするためのものであるように構成されている。電子機器500は、WiFi、2G又は3G、または、それらの組み合わせなどの通信規格に基づいた無線ネットワークにアクセスすることができる。1つの例示的実施例において、通信素子516は、ブロードキャストチャネルを介して外部ブロードキャスト管理システムからのブロードキャスト信号又はブロードキャスト関連情報を受信する。1つの例示的実施例において、前記通信素子516は、短距離通信を促進するための近距離無線通信(NFC)モジュールをさらに含む。例えば、NFCモジュールでは、無線周波数識別(RFID)技術、赤外線データ協会(IrDA)技術、超広帯域(UWB)技術、ブルートゥース(登録商標)(BT)技術及び他の技術に基づいて実現することができる。
例示的実施例において、電子機器500は、上記方法を実行するための1つ又は複数の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理デバイス(DSPD)、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、コントローラ、マイクロコントローラ、マイクロプロセッサ、または、他の電子部品によって実現されることができる。
例示的な実施例において、命令を含む非一時的なコンピュータ可読記憶媒体、例えば、命令を含むメモリ504をさらに提供し、上記の方法を完了するために、上記命令は電子機器500のプロセッサ520によって実行されることができる。例えば、前記非一時的なコンピュータ可読記憶媒体は、ROM、ランダムアクセスメモリ(RAM)、CD−ROM、磁気テープ、フロッピーディスク、及び光学データ記憶機器などであってもよい。
本明細書における各実施例はいずれも段階的に説明されており、各実施例は他の実施例との相違点に重点を置いて説明しており、各実施例の同様と類似の部分は互いに参考しあうことができる。
当業者は、本発明の実施例が、方法、装置、又はコンピュータプログラム製品として提供されることができると理解すべきである。したがって、本発明の実施例は、完全にハードウェアの実施例、完全にソフトウェアの実施例、または、ソフトウェアとハードウェアを組み合わせた実施例の形をとることができる。さらに、本発明の実施例は、コンピュータ使用可能なプログラムコードを含む1つ又は複数のコンピュータ使用可能な記憶媒体(ディスク記憶装置、CD−ROM、光学メモリなどを含むが、それらに限定されない)上に実施されるコンピュータプログラム製品の形をとることができる。
本発明の実施例は、本発明の実施例による方法、端末装置(システム)、及びコンピュータプログラム製品のフローチャート及び/又はブロック図を参照して説明される。フローチャート及び/又はブロック図の各プロセス及び/又はブロック、及び、フローチャート及び/又はブロック図のプロセス及び/又はブロックの組み合わせは、コンピュータプログラム命令によって実現されることができると理解すべきである。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、組み込みプロセッサ、または、他のプログラマブルデータ処理端末機器のプロセッサに提供されて1つの機械を生成させ、これにより、コンピュータ又は他のプログラマブルデータ処理端末機器のプロセッサによって実行される命令を介してフローチャートの1つのプロセス又は複数のプロセス及び/又はブロック図の1つのブロック又は複数のブロックで指定された機能を実現するための装置を生成することができる。
これらのコンピュータプログラム命令はまた、コンピュータ又は他のプログラマブルデータ処理端末機器が予測通りに動作するように導くことができるコンピュータ可読メモリに記憶されてもよく、これにより、当該コンピュータ可読メモリに記憶された命令は、命令装置を含む製品を生成し、当該指示装置は、フローチャートの1つのプロセス又は複数のプロセス及び/又はブロック図の1つのブロック又は複数のブロックで指定された機能を実現する。
これらのコンピュータプログラム命令は、コンピュータ又は他のプログラマブルデータ処理端末機器にロードされてもよく、これにより、一連の操作ステップがコンピュータ又は他のプログラマブル端末機器で実行され、コンピュータによって実現される処理を生成し、これにより、コンピュータ又は他のプログラマブルデータ処理端末機器で実行された命令は、フローチャートの1つのプロセス又は複数のプロセス及び/又はブロック図の1つのブロック又は複数のブロックで指定された機能を実現するためのステップを提供する。
本発明の実施例の好ましい実施例を説明したが、当業者は、基本的なクリエイティブコンセプトを習得すると、これらの実施例に追加の変更及び修正を加えることができる。したがって、添付の特許請求の範囲は、好ましい実施例及び本発明の実施例の範囲内にあるすべての変更及び修正を含むものとして解釈されることを意図している。
最後に、さらに説明すべきものとして、本明細書では、第1や第2などの関係用語は、1つのエンティティ又は操作を別のエンティティ又は操作と区別するためにのみ使用され、必ずしもこれらのエンティティ又は操作間にそのような実際の関係又は順序があることを要求又は示唆していない。さらに、「含む」、「備える」という用語又はその任意の他の変形は、非排他的な包含をカバーすることを目的としており、これにより、一連の要素を含むプロセス、方法、物品、又は端末機器は、それらの要素だけでなく、明示的にリストされていない他の要素をも含み、または、そのようなプロセス、方法、物品、又は端末機器に固有の要素をも含む。より多くの制限がない場合、「1つの・・・を含む」という文で限定された要素は、前記要素を含むプロセス、方法、物品、又は端末機器に別の同じ要素があることを除外しない。
以上、本発明が提供する分岐予測器の制御方法、装置、電子機器、及び記憶媒体について詳細に説明したが、本明細書に具体的な例を適用することによって本発明の原理及び実施形態について説明し、以上の実施例の説明は、本発明の方法及びその核となるアイデアを理解するのを助けるためにのみ使用されると同時に、当業者にとって、本発明のアイデアに基づき、具体的な実施形態及び適用範囲に変更が生じ、要約すると、本明細書の内容は、本発明を限定するものとして理解されるべきではない。