(57)【要約】      （修正有）【課題】ＲＲＥペナルティー及びＮＣＬペナルティーの両方を減らすための方法及びプロセッサを提供する。【解決手段】プロセッサ３００は、実行されるインストラクションのアドレスを受信し、ＣＳＲＲＰ（ｃｏｎｆｉｄｅｎｃｅ／ｓａｍｐｌｉｎｇ  ｒｅａｄ−ａｆｔｅｒ−ｗｒｉｔｅ  ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｐｒｅｄｉｃｔｏｒ）エントリを格納し、コンフィデンススコアに基づいてインストラクションを実行するか否かを判別するＣＳＲＲＰ３２０を有する。ＣＳＲＲＰエントリは、インストラクションのアドレス及びコンフィデンススコアを含み、コンフィデンススコアは、ＲＰＳ（ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｐｒｅｄｉｃｔｅｄ  ｓｔｏｒｅ）としてのインストラクション実行がＲＡＷ（ｒｅａｄ−ａｆｔｅｒ−ｗｒｉｔｅ）ＲＲＥ（ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｅｘｅｃｕｔｉｏｎ）ペナルティーを避けられるか否かを示す。【選択図】図３
2015130177.tif 000002
【特許請求の範囲】
【請求項１】
実行されるインストラクションのアドレスを受信し、ＣＳＲＲＰ（ｃｏｎｆｉｄｅｎｃｅ／ｓａｍｐｌｉｎｇ  ｒｅａｄ−ａｆｔｅｒ−ｗｒｉｔｅ  ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｐｒｅｄｉｃｔｏｒ）エントリを格納し、コンフィデンススコアに基づいて前記インストラクションを実行するか否かを判別するＣＳＲＲＰを有するプロセッサであって、
前記ＣＳＲＲＰエントリは、前記インストラクションのアドレス及び前記コンフィデンススコアを含み、
前記コンフィデンススコアは、ＲＰＳ（ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｐｒｅｄｉｃｔｅｄ  ｓｔｏｒｅ）として前記インストラクションを実行することがＲＡＷ（ｒｅａｄ−ａｆｔｅｒ−ｗｒｉｔｅ）ＲＲＥ（ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｅｘｅｃｕｔｉｏｎ）ペナルティーを避けることができるか否かを指し示すことを特徴とするプロセッサ。
【請求項２】
前記ＣＳＲＲＰは、
前記コンフィデンススコアをコンフィデンス閾値と比較し、
前記比較した結果に基づいて前記ＲＰＳとして前記インストラクションを実行するか否かを判別することによって、前記コンフィデンススコアに基づいて前記ＲＰＳとして前記インストラクションを実行するか否かを更に判別することを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記ＣＳＲＲＰエントリは、
前記インストラクションがＲＲＥを引き起こすか否かを判別するために前記インストラクションをサンプリングするか否かを指し示す前記インストラクションのサンプリング状態を更に含むことを特徴とする請求項２に記載のプロセッサ。
【請求項４】
前記ＣＳＲＲＰは、
前記サンプリング状態に基づいて前記インストラクションをサンプリングするか否かを判別し、
前記サンプリング状態に基づいて前記インストラクションをサンプリングしないとの判別に応答して前記ＲＰＳとして前記インストラクションを実行するか否かを判別することによって、前記コンフィデンススコアに基づいて前記ＲＰＳとして前記インストラクションを実行するか否かを判別することを特徴とする請求項３に記載のプロセッサ。
【請求項５】
前記ＣＳＲＲＰは、前記インストラクションをサンプリングすることに応答して、前記コンフィデンススコアに基づいて前記サンプリング状態を再設定することを特徴とする請求項４に記載のプロセッサ。
【請求項６】
前記ＣＳＲＲＰは、
前記ＲＰＳとして前記インストラクションを実行することが前記ＲＡＷ  ＲＲＥペナルティーを避けることを指し示す前記コンフィデンススコアに基づいて高周波サンプリング状態に前記サンプリング状態を再設定し、
前記ＲＰＳとして前記インストラクションを実行することが前記ＲＡＷ  ＲＲＥペナルティーを避けられないことを指し示す前記コンフィデンススコアに基づいて低周波サンプリング状態に前記サンプリング状態を再設定することを特徴とする請求項５に記載のプロセッサ。
【請求項７】
前記ＣＳＲＲＰは、前記コンフィデンススコアに基づいてＣＳＲＲＰエントリを削除するか否かを判別することを特徴とする請求項１に記載のプロセッサ。
【請求項８】
前記ＣＳＲＲＰは、
前記コンフィデンススコアを取替え閾値と比較することによって前記コンフィデンススコアに基づいて前記ＣＳＲＲＰエントリを削除するか否かを判別し、
前記比較した結果に基づいて前記ＣＳＲＲＰを削除することを特徴とする請求項７に記載のプロセッサ。
【請求項９】
前記ＣＳＲＲＰは、取替えのための前記ＣＳＲＲＰエントリをマーキングすることによって、前記ＣＳＲＲＰエントリを削除することを特徴とする請求項８に記載のプロセッサ。
【請求項１０】
前記ＣＳＲＲＰは、
前記プロセッサによって前記インストラクションの実行に応答して、前記ＲＰＳとして前記インストラクションを実行することが前記ＲＲＥペナルティーを避ける大きい尤度を指し示すように前記コンフィデンススコアを増加させることによって、前記コンフィデンススコアをアップデートし、
前記ＲＲＥを発生しないように、前記プロセッサによって前記インストラクションの実行に応答して、前記ＲＰＳとして前記インストラクションを実行することが前記ＲＲＥペナルティーを避ける小さい尤度を指し示すように前記コンフィデンススコアを減少させることによって、前記コンフィデンススコアをアップデートすることを特徴とする請求項１に記載のプロセッサ。
【請求項１１】
プロセッサによってＲＰＳ（ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｐｒｅｄｉｃｔｅｄ  ｓｔｏｒｅ）としてインストラクションを実行することがＲＡＷ（ｒｅａｄ−ａｆｔｅｒ−ｗｒｉｔｅ）ＲＲＥ（ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｅｘｅｃｕｔｉｏｎ）ペナルティーを避けるか否かを予測する方法であって、
実行されるインストラクションのアドレスが入力される段階と、
前記インストラクションのアドレス及び前記ＲＰＳとして前記インストラクションを実行することが前記ＲＲＥペナルティーを避けるか否かを指し示すコンフィデンススコアを含むＣＳＲＲＰエントリを格納する段階と、
前記コンフィデンススコアに基づいて前記ＲＰＳとして前記インストラクションを実行するか否かを判別する段階と、を有することを特徴とする方法。
【請求項１２】
前記コンフィデンススコアに基づいて前記ＲＰＳとして前記インストラクションを実行するか否かを判別する段階は、
前記コンフィデンススコアをコンフィデンス閾値と比較する段階と、
前記比較した結果に基づいて前記ＲＰＳとして前記インストラクションを実行するか否かを判別する段階と、を含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記ＣＳＲＲＰエントリは、
前記インストラクションがＲＲＥを引き起こすか否かを判別するために前記インストラクションをサンプリングするか否かを指し示す前記インストラクションのサンプリング状態を更に含むことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記コンフィデンススコアに基づいて前記ＲＰＳとして前記インストラクションを実行するか否かを判別する段階は、
前記サンプリング状態に基づいて前記インストラクションをサンプリングするか否かを判別する段階と、
前記サンプリング状態に基づいて前記インストラクションをサンプリングしないとの判別に応答して前記ＲＰＳとして前記インストラクションを実行するか否かを判別する段階と、を含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記インストラクションをサンプリングすることに応答して、前記コンフィデンススコアに基づいて前記サンプリング状態を再設定する段階を更に含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記コンフィデンススコアに基づいて前記サンプリング状態を再設定する段階は、
前記ＲＰＳとして前記インストラクションを実行することが前記ＲＲＥペナルティーを避けることを指し示す前記コンフィデンススコアに基づいて前記高周波サンプリング状態に前記サンプリング状態を再設定する段階と、
前記ＲＰＳとして前記インストラクションを実行することが前記ＲＲＥペナルティーを避けられないことを指し示す前記コンフィデンススコアに基づいて低周波サンプリング状態に前記サンプリング状態を再設定する段階と、を含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記コンフィデンススコアに基づいて前記ＣＳＲＲＰエントリを削除するか否かを判別する段階を更に含むことを特徴とする請求項１１に記載の方法。
【請求項１８】
前記コンフィデンススコアに基づいて前記ＣＳＲＲＰエントリを削除するか否かを判別する段階は、
前記コンフィデンススコアを取替え閾値と比較する段階と、
前記比較した結果に基づいて前記ＣＳＲＲＰエントリを削除する段階と、を含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記比較した結果に基づいて前記ＣＳＲＲＰエントリを削除する段階は、
取替えのために前記ＣＳＲＲＰエントリをマーキングする段階を含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記プロセッサによって前記インストラクションの実行に応答して、前記ＲＰＳとして前記インストラクションを実行することが前記ＲＲＥペナルティーを避ける大きい尤度を指し示すように前記コンフィデンススコアを増加させることによって、前記コンフィデンススコアをアップデートする段階と、
前記ＲＲＥを発生しないように、前記プロセッサによって前記インストラクションの実行に応答して、前記ＲＰＳとして前記インストラクションを実行することが前記ＲＲＥペナルティーを避ける小さい尤度を指し示すように前記コンフィデンススコアを減少させることによって、前記コンフィデンススコアをアップデートする段階と、を更に含むことを特徴とする請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＲＡＷ（ｒｅａｄ−ａｆｔｅｒ−ｗｒｉｔｅ）危険を予測する方法及び装置に関し、より詳細には、ＲＡＷ危険の予測を最適化するようにＲＡＷ予測器を動的にサンプリングする方法及びそのためのプロセッサに関する。
【背景技術】
【０００２】
プロセッサは高性能に到達するためにロードインストラクション及びストアインストラクションを遂行することに依存する。メモリのアドレスに対する新しいロードインストラクション（ｌｏａｄ  ｉｎｓｔｒｕｃｔｉｏｎ）がメモリの同一アドレスに対する古いストアインストラクション（ｓｔｏｒｅ  ｉｎｓｔｒｕｃｔｉｏｎ）の前に実行されると、格納データはロードに正確に送られない。これをロードインストラクションが悪いロードデータを採用するＲＡＷ（ｒｅａｄ−ａｆｔｅｒ−ｗｒｉｔｅ：リードアフターライト）危険と称する。
【０００３】
ＲＡＷ危険が発生すると、一般的にプロセッサは、ストアインストラクションより遅く発生した全てのインフライトインストラクション（ｉｎ−ｆｌｉｇｈｔ  ｉｎｓｔｒｕｃｔｉｏｎｓ）をフラッシュ（ｆｌｕｓｈ）し、ストアインストラクションの次のインストラクションのためのフェッチリスタート（ｆｅｔｃｈ  ｒｅｓｔａｒｔｓ）が遂行される損失の大きいＲＡＷ  ＲＲＥ（ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｅｘｃｅｐｔｉｏｎ：再同期の除外）を遂行することによって、悪いロードデータを訂正する必要がある。このようなイベントは、動作をフラッシュ（ｆｌｕｓｈ）し、インストラクションを再びフェッチするのに必要な追加的なコアクロックのために損失が大きい。これをＲＲＥペナルティー（ｐｅｎａｌｔｙ）と称する。
【０００４】
損失の大きいＲＲＥを避けるために、プロセッサはＲＡＷ  ＲＲＰ（ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｐｒｅｄｉｃｔｏｒ：再同期予測器）を採用する。ＲＡＷ  ＲＲＰは、ストアインストラクションのアドレスに基づいて以前のＲＲＥを訓練し、将来のこのようなＲＲＥを避ける。ＲＲＰが訓練され、ＲＲＥを引き起こすストアインストラクションアドレスを検出すると、ＲＲＰは、ＲＰＳ（ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｐｒｅｄｉｃｔｅｄ  ｓｔｏｒｅ：再同期予測されたストア）インストラクションの前に実行することから、何らかの新しいロードインストラクションを防止するように指示を送る。ＲＰＳの前に実行される新しいロードインストラクション無しでＲＲＥペナルティーを避けるＲＲＥが発生しない。新しいロードインストラクションは、ＲＰＳの実行が完了した時のみに除去する。
【０００５】
時々、ＲＰＳによって中断される複数のロードインストラクションが存在する。このようなロードインストラクションのうち、唯１つがＲＰＳの同一メモリアドレスでなければならない。これはＲＲＥペナルティーを避けるために中断される必要があるクリティカルロードインストラクションである。しかし、全ての残りのＮＣＬ（ｎｏｎ−ｃｒｉｔｉｃａｌ  ｌｏａｄｓ）はまたＲＰＳによって中断される。ＲＰＳは、ＮＣＬを防止する際、実行を待っているＮＣＬのために性能損失がある。これをＮＣＬペナルティーと称する。一般的に、価値あるＲＲＰを生成する場合、ＲＲＥペナルティーを避ける性能利得は、中断されたＮＣＬの性能損失より大きい。
【０００６】
しかし、インストラクションコードがループで繰り返される時、実行動作は各々の繰り返しで僅かに異なる。ＲＲＰが採用されない場合、繰り返しコードの第１繰り返しでＲＲＰが発生することがあり、繰り返しコードの全ての連続的なインストラクションでＲＲＥが発生しないこともある。従って、ＲＲＰがないＲＲＥペナルティーは極めて小さく、これはＲＲＥが単に１回だけ発生するためである。それにも拘わらず、ＲＲＰがこのシナリオに使用されると、ＲＲＰは第１ＲＲＥを訓練して追加的なＲＲＥが実際に発生しなくても連続的なＲＲＥの全てを避ける。従って、ＲＲＰを避けるための重要なＲＲＥペナルティーが実際に存在しない時にも、ＲＲＰは相変わらずＮＣＬペナルティーを引き起こす。この場合、ＲＲＰは性能に悪い影響を及ばす。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、ＲＲＥペナルティー及びＮＣＬペナルティーの両方を減らすための方法及びそのためのプロセッサを提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するためになされた本発明の一態様によるプロセッサは、実行されるインストラクションのアドレスを受信し、ＣＳＲＲＰ（ｃｏｎｆｉｄｅｎｃｅ／ｓａｍｐｌｉｎｇ  ｒｅａｄ−ａｆｔｅｒ−ｗｒｉｔｅ  ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｐｒｅｄｉｃｔｏｒ）エントリを格納し、コンフィデンススコアに基づいて前記インストラクションを実行するか否かを判別するＣＳＲＲＰを有し、前記ＣＳＲＲＰエントリは、前記インストラクションのアドレス及び前記コンフィデンススコアを含み、前記コンフィデンススコアは、ＲＰＳ（ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｐｒｅｄｉｃｔｅｄ  ｓｔｏｒｅ）として前記インストラクションを実行することがＲＡＷ（ｒｅａｄ−ａｆｔｅｒ−ｗｒｉｔｅ）ＲＲＥ（ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｅｘｅｃｕｔｉｏｎ）ペナルティーを避けることができるか否かを指し示す。
【０００９】
上記目的を達成するためになされた本発明の一態様によるプロセッサによってＲＰＳ（ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｐｒｅｄｉｃｔｅｄ  ｓｔｏｒｅ）としてインストラクションを実行することがＲＡＷ（ｒｅａｄ−ａｆｔｅｒ−ｗｒｉｔｅ）ＲＲＥ（ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｅｘｅｃｕｔｉｏｎ）ペナルティーを避けるか否かを予測する方法は、実行されるインストラクションのアドレスが入力される段階と、前記インストラクションのアドレス及び前記ＲＰＳとして前記インストラクションを実行することが前記ＲＲＥペナルティーを避けるか否かを指し示すコンフィデンススコアを含むＣＳＲＲＰエントリを格納する段階と、前記コンフィデンススコアに基づいて前記ＲＰＳとして前記インストラクションを実行するか否かを判別する段階と、を有する。
【発明の効果】
【００１０】
本発明のプロセッサによれば、コンフィデンススコアを通じてＲＲＥペナルティーを管理することによって、ＲＲＥペナルティー及びＮＣＬペナルティーの両方を減らすことができる。
【図面の簡単な説明】
【００１１】
【図１Ａ】本発明の一実施形態によるＲＡＷ危険予測を最適化するＲＡＷ予測器を動的にサンプリングする方法を示すフローチャートである。
【図１Ｂ】本発明の一実施形態によるＲＡＷ危険予測を最適化するＲＡＷ予測器を動的にサンプリングする方法を示すフローチャートである。
【図２Ａ】サンプリング周期に関連し、ＣＳＲＲＰエントリのコンフィデンス状態を説明するテーブルを示す。
【図２Ｂ】サンプリング周期に関連し、ＣＳＲＲＰエントリのコンフィデンス状態を説明する他のテーブルを示す。
【図３】本発明の一実施形態によるＣＳＲＲＰを具現するプロセッサのブロックダイヤグラムを示す。
【発明を実施するための形態】
【００１２】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。
【００１３】
図１Ａ及び図１Ｂは、本発明の一実施形態によるＲＡＷ（ｒｅａｄ−ａｆｔｅｒ−ｗｒｉｔｅ）危険予測を最適化するＲＡＷ予測器を動的にサンプリングする方法を示すフローチャートである。
【００１４】
ＲＡＷ危険の予測を最適化させるＲＡＷ予測器を動的にサンプリングする方法を説明する前に、ＲＡＷ危険の最適化された予測の観点をＲＡＷ危険の最適化された予測の理解を助けるために説明する。
【００１５】
本実施形態によると、ＣＳＲＲＰ（ｃｏｎｆｉｄｅｎｃｅ／ｓａｍｐｌｉｎｇ  ｒｅａｄ−ａｆｔｅｒ−ｗｒｉｔｅ  ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｐｒｅｄｉｃｔｏｒ：コンフィデンス／サンプリングリードアフターライト再同期予測器）はインストラクションに対するＲＲＥ（ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  ｅｘｅｃｕｔｉｏｎ）が発生するか否かを予測するためにＲＲＰ訓練を避けるように使用される。特に、インストラクションが実際にＲＲＥを発生せずにＲＰＳとして取り扱われない場合、コンフィデンススコア及びＲＲＰエントリのサンプリング技術の利用を組合せることによって、ＣＳＲＲＰは、インストラクションがＲＲＥを発生するか否かを予測することを避けることができ、これによってＲＰＳとしてインストラクションを取り扱うことを避けることができる。
【００１６】
第１に、コンフィデンススコアに対して、実行されたインストラクションがメモリアドレスに格納されたデータに対してＲＲＥを発生すると、ＣＳＲＲＰはＲＲＥ及びコンフィデンススコアを発生するインストラクションのメモリアドレスを示すＣＳＲＲＰエントリを割当てる。例えば、ＣＳＲＲＰエントリは、ＣＳＲＲＰエントリテーブルの使用を通じてメモリに格納される。ＣＳＲＲＰエントリはサンプリング状態又はサンプリングカウンターを示す。ここで、サンプリング状態及びサンプリングカウンターは、下記で説明するサンプリングされるＣＳＲＲＰエントリによって示されるアドレスを有する周期又は周波数に対応する。
【００１７】
コンフィデンススコア（ｃｏｎｆｉｄｅｎｃｅ  ｓｃｏｒｅ）は、ＣＳＲＲＰエントリが、インストラクションが実行される時に関連メモリアドレスに格納されたインストラクションがＲＲＥを発生するか否かを実際に予測する尤度（ｌｉｋｅｌｉｈｏｏｄ）を指し示す。ここで、ＣＳＲＲＰエントリはＲＲＥを発生するインストラクションのメモリアドレスを識別する。
【００１８】
例えば、高いコンフィデンススコアを有するＣＳＲＲＰエントリは、インストラクションが実行される時に関連メモリアドレスに格納されたインストラクションがＲＲＥを発生することを正確に予測する高い尤度（ｈｉｇｈ  ｌｉｋｅｌｉｈｏｏｄ）を指し示す。従って、ＲＰＳとしてインストラクションを設定することは、ＲＲＥを避けることができる高い尤度を有する。
【００１９】
反対に、低いコンフィデンススコアを有するＣＳＲＲＰエントリは、インストラクションが実行される時に関連メモリアドレスに格納されたインストラクションがＲＲＥを発生することを正確に予測する低い尤度を指し示す。従って、ＲＰＳとしてインストラクションを設定することは、ＲＲＥを避けることができる低い尤度を有する。
【００２０】
フェッチされたインストラクションのメモリアドレスがＣＳＲＲＰエントリに一致すると、ＣＳＲＲＰエントリがメモリアドレスのために割当てられた後に一致したＣＳＲＲＰエントリのコンフィデンススコアはコンフィデンス閾値と比較される。ＣＳＲＲＰのコンフィデンススコアがコンフィデンス閾値を超過すると、ＣＳＲＲＲＰはフェッチされたインストラクションがＲＰＳであると判別される。反面、ＣＳＲＲＰエントリのコンフィデンススコアがコンフィデンス閾値を超過しない場合、ＣＳＲＲＰはフェッチされたインストラクションがＲＰＳでないと判別される。
【００２１】
上述したように、コンフィデンススコアはフェッチされたインストラクションがＲＰＳとして取り扱うか否かを判別するのに使用される。しかし、ＲＰＳの実行が完了するまで新しいインストラクションの実行を防止するためにＲＰＳとして調節されるインストラクションがＲＲＥを引き起こさないため、ＲＰＳとしてインストラクションを取り扱うことがＲＲＥを避けることを助けるか否かが判別される。即ち、言い換えると、上述したように、ループで反復的に取り扱うインストラクションコードの実施形態において、ＲＲＰはプロセシング効率性を提供するか、或いは提供しないこともある。
【００２２】
従って、ＣＳＲＲＰの第２番目の観点は、コンフィデンススコアと組合せてサンプリングを遂行することにある。サンプリング技法は、甚だしくエントリのコンフィデンススコアがコンフィデンス閾値より低くても、周期的にＣＳＲＲＰエントリをサンプリングする。これはサンプルされたエントリがインストラクションに対してＲＲＳ処理を開始しないことを示す。
【００２３】
サンプルされたＣＳＲＲＰエントリのメモリアドレスに格納されたインストラクションがＲＲＥを引き起こすと、ＣＳＲＲＰはサンプルされたＣＳＲＲＰエントリのコンフィデンススコアを増加させる。反面、サンプルされたＣＳＲＲＰエントリに格納されたインストラクションがＲＲＥを引き起こさない場合、ＣＳＲＲＰはサンプルされたＣＳＲＲＰエントリのコンフィデンススコアを減少させる。
【００２４】
ＣＳＲＲＰの効率性を維持するために、ＣＳＲＲＰは、サンプルされたＣＳＲＲＰエントリのコンフィデンススコアが取替え値より下にあるか否かを判別する。サンプルされたＣＳＲＲＰエントリのコンフィデンススコアが取替え値に到達したとＣＳＲＲＰが判別した場合、ＣＳＲＲＰはサンプルされたＣＳＲＲＰエントリを削除する。従って、ＲＲＥを発生するインストラクションのうちの残りのメモリアドレスはＣＳＲＲＰエントリとして割当てられる。その結果、ＣＳＲＲＰエントリの選択を通じて、ＲＲＥを発生するインストラクションの低い尤度を有するＣＳＲＲＰエントリが削除される間に、ＲＲＥを発生するインストラクションの中で最も高い尤度を有するこのようなＣＳＲＲＰエントリは維持される。
【００２５】
サンプリング技術は各々のＣＳＲＲＰエントリのコンフィデンススコアに基づいて各ＣＳＲＲＰエントリを動的にサンプリングする。
【００２６】
高いコンフィデンススコアを有するＣＳＲＲＰエントリはサンプリングされる頻度数が少なくなる。これはサンプルされたＣＳＲＲＰエントリのインストラクションがＲＲＥを引き起こす高い尤度のためである。従って、プロセッサは、このようなＣＳＲＲＰエントリのサンプリングを遂行する時、ＲＲＥペナルティーを受ける。
【００２７】
反面、低いコンフィデンススコアを有するＣＳＲＲＰエントリは、より頻繁にサンプルされる。これはサンプルされたＣＳＲＲＰエントリのインストラクションがＲＲＥを引き起こす低い尤度のためである。従って、プロセッサは、このようなＣＳＲＲＰエントリのサンプリングを遂行する時、ＲＲＥペナルティーを少なく受ける。
【００２８】
加えて、インストラクションコードを発生する訪問されない潜在的なＲＲＥのためのＣＳＲＲＰエントリ空間を解消するようにＣＳＲＲＰエントリができるだけ速やかに削除される可能性が存在するため、低いコンフィデンススコアを有するＣＳＲＲＰエントリは更に頻繁にサンプルされる。これにより、ＲＲＥを発生する低い尤度を有するＣＳＲＲＰエントリが削除される間に、ＲＲＥを発生する最も高い尤度を有するＣＳＲＲＰエントリは維持される。
【００２９】
図１Ａ及び図１Ｂのフローチャートを参照すると、ＲＡＷの最適化された予測は、ＲＲＥを予測して避けることで、対応するＲＲＥに関するペナルティーを避けるコンフィデンス及びサンプリングロジックの使用について説明する。
【００３０】
Ｓ１０５段階で、プロセッサのフェッチユニットは、ストアインストラクションのメモリアドレスに基づいてメモリからストアインストラクションをフェッチする。フェッチユニットはプロセッサのＣＳＲＲＰにフェッチされたストアインストラクションを伝送する。
【００３１】
Ｓ１１０段階で、ＣＳＲＲＰは、フェッチされたストアインストラクションのメモリアドレスがＣＳＲＲＰエントリに存在するメモリアドレスに一致するか否かを判別する。フェッチされたストアインストラクションのメモリアドレスがＣＳＲＲＰエントリのメモリアドレスに一致しない場合（Ｓ１１０段階で「いいえ」）、ＲＲＰチェックは完了し、フェッチされたストアインストラクションはＳ１５３段階でプロセッサによって実行される。フェッチされたストアインストラクションがＣＳＲＲＰエントリに一致しないため、フェッチされたストアインストラクションは何らかのＲＰＳ指示が無くても実行される。
【００３２】
反面、フェッチされたストアインストラクションのメモリアドレスがＣＳＲＲＰエントリに一致すると（Ｓ１１０段階で「はい」）、ＣＳＲＲＰはＳ１１５段階でＣＳＲＲＰエントリのサンプリング状態をアップデートする。
【００３３】
本実施形態によると、サンプリング状態はＣＳＲＲＰエントリに関連するサンプリングカウンターを減少させることによってアップデートされる。代わりに、サンプリング状態はＣＳＲＲＰエントリに関連するサンプリングカウンターを増加させることによって、アップデートされることもある。
【００３４】
サンプリングカウンターが、サンプリングカウンターを増加させる場合の最大値、又はサンプリングカウンターを減少させる場合の最小値の中のいずれか１つであるサンプリング閾値に到達すると、ＣＳＲＲＰエントリは下記に説明するようにサンプリングされる。説明を簡単にするため、Ｓ１１５段階でサンプリングカウンターは減少されると仮定する。
【００３５】
Ｓ１２０段階で、ＣＳＲＲＰエントリのサンプリング状態がアップデートされると、ＣＳＲＲＰはＣＳＲＲＰエントリのコンフィデンススコアとコンフィデンス閾値とを比較する。
【００３６】
ＣＳＲＲＰエントリのコンフィデンススコアがコンフィデンス閾値を超過すると（Ｓ１２０段階で「はい」）、ＣＳＲＲＰは、ＲＲＥがフェッチされたインストラクションの実行で引き起こされると判別する。従って、フェッチされたインストラクションはＲＰＳになる。反面、ＣＳＲＲＰエントリのコンフィデンススコアがコンフィデンス閾値を超過しない場合（Ｓ１２０段階で「いいえ」）、ＣＳＲＲＰは、ＲＲＥがフェッチされたインストラクションの実行で引き起こされないと判別する。従って、フェッチされたインストラクションはＲＰＳではない。
【００３７】
コンフィデンス判別（Ｓ１２０段階で「いいえ」又は「はい」）に関係なく、ＣＳＲＲＰはサンプリング閾値とサンプリング状態とを比較する。ここで、サンプリング状態は、Ｓ１２５段階及びＳ１４０段階で、フェッチされたインストラクションがサンプルされるか否かを判別するために上述したサンプリングカウンターとして具現される。ＣＳＲＲＰは、ＲＲＥをストアインストラクションが引き起こさないか否かを知るためにフェッチされたストアインストラクションをサンプリングする。特に、サンプルされたインストラクションがＲＰＳとしてマーキングされた場合、ＣＳＲＲＰは、サンプルされたインストラクションが実際にＲＲＥを引き起こさないことを判別するためのサンプリングを遂行する。従って、サンプリングは、ＲＰＳではないインストラクションとして把握し、ＲＰＳとして設定してインストラクションを正確に把握するように遂行される。この点において、周期的なサンプリングは、実行される時にストアインストラクションがＲＲＥを発生するか否かをより正確に予測するためにＣＳＲＲＰを訓練する。
【００３８】
Ｓ１３０段階で、インストラクションがサンプルされないと判別された場合（Ｓ１２５段階で「いいえ」）、ＣＳＲＲＰはフェッチされたストアインストラクションをサンプルしない。Ｓ１３０段階で、ＣＳＲＲＰが、ストアインストラクションがＲＰＳとして設定されないと以前に判別したため、ストアインストラクションはＲＰＳとして設定されない。
【００３９】
Ｓ１３５段階で、インストラクションがサンプルされると判別された場合（Ｓ１２５段階で「はい」）、ＣＳＲＲＰはフェッチされたストアインストラクションをサンプルする。ここで、インストラクションがサンプルされた場合、ＣＳＲＲＰは、図２Ａ及び図２Ｂに示すようにＣＳＲＲＰエントリのコンフィデンススコアに基づいてインストラクションに対応するＣＳＲＲＰエントリのサンプリング状態を再設定する。加えて、Ｓ１３５段階で、ＣＳＲＲＰは、サンプルされたストアインストラクションがＲＰＳとして設定されないと以前に判別したため、サンプルされたストアインストラクションはＲＰＳとして設定されない。
【００４０】
Ｓ１５０段階で、インストラクションがサンプルされると判別された場合（Ｓ１４０段階で「はい」）、ＣＳＲＲＰはフェッチされたストアインストラクションをサンプルする。再び、インストラクションがサンプルされた時、ＣＳＲＲＰは、図２Ａ及び図２Ｂに示すようにＣＳＲＲＰエントリのコンフィデンススコアに基づいてインストラクションに対応するＣＳＲＲＰエントリのサンプリング状態を再設定する。
【００４１】
フェッチされたインストラクションがＲＲＰであり（Ｓ１２０段階で「はい」）、サンプルされなかったと判別された場合（Ｓ１４０段階で「いいえ」）にのみ、フェッチされたインストラクションがＲＰＳとしてマークされる。
【００４２】
Ｓ１３５段階及びＳ１５０段階で、サンプリング状態がサンプリング閾値に到達し、サンプリングが遂行される時、ＣＳＲＲＰは上述したようにＣＳＲＲＰエントリのコンフィデンススコアに基づいたＣＳＲＲＰエントリのサンプリング状態（例えば、サンプリング周期）を再設定する。
【００４３】
図２Ａは、サンプリング周期に関連し、ＣＳＲＲＰエントリのコンフィデンス状態を説明するテーブルを示す。インストラクションがＲＲＥを発生するコンフィデンスが増加することによって（例えば、コンフィデンススコアが増加する）、サンプリングが少なく要求され、サンプル周期は増加する（サンプリング周波数は減少する）。インストラクションがＲＲＥを発生しなかったというコンフィデンスが増加することによって（例えば、コンフィデンススコアが減少する）、サンプリング周期は減少する（例えば、サンプリング周波数は増加する）。従って、ＣＳＲＲＰエントリはできるだけ速やかに削除される。
【００４４】
図２Ａは低いコンフィデンススコア（１、０、−１、…、及び−６）を有するサンプリング状態が短いサンプリング周期に再設定されることを示す。従って、低いコンフィデンススコアを有するＣＳＲＲＰエントリは取替えのために速やかにマークされる。
【００４５】
図２Ｂは、サンプリング周期に関連し、ＣＳＲＲＰエントリのコンフィデンス状態を説明する他のテーブルを示す。図２Ａが低いコンフィデンススコア（１、０、−１、…、及び−６）を有するサンプルが短いサンプリング周期に再設定されることを示した反面、図２Ｂは、サンプリング周期が、インストラクションがＲＲＥを発生しないというコンフィデンスが増加することによって（即ち、コンフィデンススコアの増加）少なく再設定される（サンプリング周波数の減少）ことを示す。例えば、（−２、−３、−４、−５、及び−６）のコンフィデンススコアを有するサンプルは、各々４、１６、６４、２５６、及び１０２４のインターバルでサンプリングのために設定される。
【００４６】
図１Ａ及び図１Ｂを再び参照すると、Ｓ１５３段階で、ストアインストラクションが実行される時、インストラクションのＣＳＲＲＰエントリは、インストラクションがＲＰＳとして設定されたか否か及びインストラクションがサンプルされたか否かを示す。
【００４７】
Ｓ１５５段階で、フェッチされたストアインストラクションが実行されると（Ｓ１５３段階）、ＣＳＲＲＰはＲＲＥが発生したか否かをチェックする。
【００４８】
Ｓ１６０段階で、ＲＲＥが発生しないと判別された場合（Ｓ１５５段階で「いいえ」）、ＣＳＲＲＰは、上述したように、対応するＣＳＲＲＰエントリに基づいてインストラクションがサンプルされたストアインストラクションであるか否かを判別する。
【００４９】
Ｓ１６５段階で、インストラクションがサンプルされたストアインストラクションではないと判別された場合、ＲＲＰアップデートを必要としない。
【００５０】
Ｓ１７０段階で、インストラクションがサンプルされたストアインストラクションであると判別された場合、ＣＳＲＲＰは、上述したようにコンフィデンス状態が取替え値に到達したか否かを判別する。
【００５１】
ＣＳＲＲＰが、コンフィデンス状態が取替え値に到達しないと判別した場合（Ｓ１７０段階で「いいえ」）、コンフィデンス状態は本実施形態に従って減少される。
【００５２】
上述したように、コンフィデンス状態は、ＲＲＥを発生するインストラクションのメモリアドレスを識別するＣＳＲＲＰエントリが、インストラクションが実行される時、関連するメモリアドレスに格納されたインストラクションがＲＲＥを発生するか否かを正確に予測できる尤度を指し示す。従って、コンフィデンス状態の方向（増加又は減少）は増加する尤度を指し示すように任意に設定される。他の実施形態で、コンフィデンススコアは減少することもある。コンフィデンス状態の方向に関係なく、ＣＳＲＲＰによってコンフィデンス状態をアップデートすることは、現在実行されるインストラクションがＲＲＥを引き起こさないという増加された尤度を指し示す（Ｓ１７０段階で「いいえ」）。
【００５３】
Ｓ１８０段階で、ＣＳＲＲＰが、コンフィデンス状態が取替え値に到達したと判別した場合（Ｓ１７０段階で「はい」）、ＣＳＲＲＰエントリは取替えのためにマークされる。従って、ＣＳＲＲＰエントリテーブルが全て有効なＣＳＲＲＰエントリである場合、新しいＣＳＲＲＰエントリを割当てることが要求され、取替えのためにマークされた最後のＣＳＲＲＰエントリ（代案として、何らかのＣＳＲＲＰエントリ）は新しいＣＳＲＲＰエントリのための空間を確保するために削除される。代わりに、ＣＳＲＲＰエントリは、コンフィデンス状態が取替え値に到達すると、単純に直ちに削除される。
【００５４】
Ｓ１８５段階で、ＣＳＲＲＰが、ＲＲＥがインストラクション実行によって発生したと判別した場合（Ｓ１５５段階で「はい」）、ＣＳＲＲＰは、対応するＣＳＲＲＰエントリがインストラクションに存在するか否かを判別する。ここで、対応するＣＳＲＲＰエントリが存在しない場合（Ｓ１１０段階で「いいえ」、Ｓ１８５段階で「いいえ」）、新しいＣＳＲＲＰエントリはインストラクションのために割当てられる。
【００５５】
Ｓ１９５段階で、ＣＲＲＲＰエントリが、実行されたインストラクションのために存在するとＣＳＲＲＰが判別した場合（Ｓ１８５段階で「はい」）、ＣＳＲＲＰは実行されたインストラクションのためにＣＳＲＲＰエントリのコンフィデンススコアをアップデートする。ＣＳＲＲＰによってコンフィデンス状態をアップデートすることは、現在実行されるインストラクションがＲＲＥを引き起すという増加された尤度を指し示す。
【００５６】
構造的な性能モデリングは、図１Ａ及び図１Ｂに説明したＣＳＲＲＰ技法がＮＣＬペナルティーのため、一般的なＲＲＰによって引き起こされる性能減少を回復させることを示す。一般的なＲＲＰを有する１０％以上の性能減少を示す業界標準ワークロードのセットは、平均性能減少が１４％である。しかし、このようなワークロードを通じて本発明の実施形態で開示したＣＳＲＲＰ技法は単に２．１７％性能減少を示す。
【００５７】
同時に、ＣＳＲＲＰはＲＲＰ技法から有益なワークロードで同様の性能利得を示す。ＲＲＰによって１０％以上の長所を有する業界標準ワークロードである場合、平均性能利得が２６％である。これは本発明の実施形態で開示したＣＳＲＲＰによる性能利得と同一である。
【００５８】
新しく割当てられたエントリが発生する時、正確なコンフィデンス状態及びコンフィデンス状態が増加するか又は減少する量は、プロセッサの動作特性に基づいて各プロセッサで具現される。
【００５９】
同様に、各コンフィデンス状態のためのサンプリング周期は特定のプロセッサの動作特性によって変更されるか又は調節される。
【００６０】
図３は、本発明の一実施形態によるＣＳＲＲＰを具現するプロセッサのブロックダイヤグラムを示す。
【００６１】
プロセッサ３００は、フェッチユニット３１０、ＣＳＲＲＰ３２０、デコードユニット３３０、及び実行ユニット３４０を含む。実行ユニット３４０は、追加的にＯＯＬＱ（ｏｕｔ−ｏｆ−ｏｒｄｅｒ  ｌｏａｄ  ｑｕｅｕｅ）３５０及びＬＳＳ（ｌｏａｄ−ｓｔｏｒｅ  ｓｃｈｅｄｕｌｅｒ）３６０を含む。
【００６２】
フェッチユニット３１０は、例えばインストラクションのメモリアドレスに基づいてメモリからインストラクションをフェッチする。フェッチユニット３１０は、フェッチされたインストラクションをＣＳＲＲＰ３２０及びデコードユニット３３０に伝送する。
【００６３】
ＣＳＲＲＰ３２０は、図１Ａ及び図１Ｂを参照して説明したＲＡＷ再同期予測を遂行する。デコードユニット３３０は、フェッチユニット３１０によってフェッチされたインストラクションを受信し、実行ユニット３４０のＬＳＳ３６０によってスケジューリングしてインストラクションをデコードする。デコードユニット３３０は、デコードされたインストラクションを実行ユニット３４０に伝送する。
【００６４】
実行ユニット３４０は、デコードユニット３４０からデコードされたインストラクションを受信してインストラクションを実行する。実行ユニット３４０のＬＳＳ３６０は、全てのインフライトロード（ｉｎ−ｆｌｉｇｈｔ  ｌｏａｄ）インストラクション及び以前に実行されなかったストアインストラクションを格納する。
【００６５】
ＬＳＳ３６０は、選択されるように準備された最も古いロードインストラクション又はストアインストラクションを選択する役割を果たす。インストラクションのメモリアドレスが計算される時、ロードインストラクション又はストアインストラクションは選択されるように準備されるために判別される。それぞれ異なるロードインストラクション又はストアインストラクションのためのメモリアドレスが計算される時には多様な時間を必要とするため、古いロードインストラクション又はストアインストラクションより新しいロードインストラクション又はストアインストラクションが選択されるように準備される。従って、これはプログラム順序によって選択される。
【００６６】
実行ユニット３４０のＯＯＬＱ３５０は、古いストアインストラクションの前に実行される全てのロードインストラクションを格納する。ＬＳＳ３６０によって実行することが選択されると、ロードインストラクションはＯＯＬＱ３５０に割当てられ、インストラクションがパイプラインで最も古いインストラクションである時に削除される。
【００６７】
ＬＳＳ３６０によって、実行するためのストアインストラクションが選択されると、ＯＯＬＱ３５０は、ＯＯＬＱ３５０の全てのエントリがインストラクションアドレスに一致するか否かを判別するためにチェックする。インストラクションアドレスが一致すると、ＯＯＬＱ３５０はインストラクションの年齢をストアインストラクションがロードインストラクションより長くなったか否かを判別するために比較する。ストアインストラクションが一致するアドレスを有する新しいロードインストラクションに対応すると判別された場合、ストアインストラクションはＲＲＥを発生することによってマークされる。
【００６８】
実行ユニット３４０は、ＲＲＥをトリガするストアインストラクションのインストラクションアドレスをＣＳＲＲＰ３２０に伝送することによって、ＣＳＲＲＰ３２０をアップデートする。従って、上述したように、ストアインストラクションのためのＣＳＲＲＰエントリはＣＳＲＲＰ３２０に割当てられる。このストアインストラクションのためのＣＳＲＲＰエントリは、上述したように、フェッチされたインストラクションアドレスに対して一致させるために後に使用される。
【００６９】
ＲＲＥ−マークされたストアインストラクションがパイプラインで最も古いインストラクションである時、ＯＯＬＱ３５０は、パイプラインで全てのインフライトロードインストラクションをフラッシュ（ｆｌｕｓｈ）し、プログラム順序に従って次のインストラクションを開始するためのフェッチユニット３１０を指し示す。
【００７０】
その結果、インストラクションアドレスが、ＣＳＲＲＰ３２０のＣＳＲＲＰエントリでアドレスに一致するフェッチユニット３１０によって生成されると、インストラクションはＲＰＳにマークされる。ＲＰＳにマークされたインストラクションがフェッチユニット３１０及びデコードユニット３３０から実行ユニット３４０のＬＳＳ３６０に伝送されると、ＲＰＳ指示時期はＲＰＳ指示されたインストラクションの前に実行される新しいロードインストラクションを許さないように信号処理される。これは損失が大きいＲＲＥ発生可能性を防止する。
【００７１】
本発明の実施形態はコンピューター読み取り可能な記録媒体にコンピューター読み取り可能なコードとして具現される。このようなコンピューター読み取り可能な記録媒体はコンピューター読み取り可能なデータが格納される記録媒体の全ての種類を含む。コンピューター読み取り可能な記録媒体の例としては、ＲＯＭ、ＲＡＭ、ＣＤ−ＲＯＭ、マグネチックテープ、フロッピー（登録商標）ディスク、及び光学データ格納装置を含む。加えて、コンピューター読み取り可能な記録媒体は、インターネット伝送で利用され搬送波（ｃａｒｒｉｅｒ  ｗａｖｅｓ）の形態で具現される。更に、コンピューター読み取り可能な記録媒体は、コンピューター読み取り可能なコードが分散的な方法で格納され実行されるネットワークに接続されるコンピューターシステムに分散される。
【００７２】
当業者に公知されるように、本発明の実施形態は、ソフトウェア及び／又はハードウェア構成の組合せ、例えばあらゆる作業を処理するためにＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）又はＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）で具現される。ユニット及びモジュールはアドレッサブル格納媒体に存在するように具現されるか、或いは少なくとも１つのプロセッサ又はマイクロプロセッサで実行されるように具現される。従って、ユニット又はモジュールは、一例として、ソフトウェア構成、オブジェクト指向ソフトウェア構成、クラス構成及びタスク構成、プロセッサ、機能、構成、属性、過程、サブルーチン、プログラムコードのセグメント、ドライバー、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ、及び変数のような構成を含む。構成及びユニットに提供される機能はより小さい構成とユニット又はモジュールに結合されるか、或いは追加的な構成とユニット又はモジュールに分離される。
【００７３】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【００７４】
３００    プロセッサ
３１０    フェッチユニット
３２０    ＣＳＲＲＰ（Ｃｏｎｆｉｄｅｎｃｅ／Ｓａｍｐｌｉｎｇ  ＲＲＰ：コンフィデンス／サンプリングリードアフターライト再同期予測）
３３０    デコードユニット
３４０    実行ユニット
３５０    ＯＯＬＱ（ｏｕｔ−ｏｆ−ｏｒｄｅｒ  ｌｏａｄ  ｑｕｅｕｅ）
３６０    ＬＳＳ（ｌｏａｄ−ｓｔｏｒｅ  ｓｃｈｅｄｕｌｅｒ）
ＲＡＷ    Ｒｅａｄ−Ａｆｔｅｒ−Ｗｒｉｔｅ（リードアフターライト）
ＲＰＳ    Ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  Ｐｒｅｄｉｃｔｅｄ  Ｓｔｏｒｅ（再同期予測されたストア）
ＲＲＥ    Ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  Ｅｘｃｅｐｔｉｏｎ（再同期除外）
ＲＲＰ    ＲＡＷ  Ｒｅｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ  Ｐｒｅｄｉｃｔｏｒ（リードアフターライト再同期予測器）
【図１Ａ】
2015130177.tif 000003
【図１Ｂ】
2015130177.tif 000004
【図２Ａ】
2015130177.tif 000005
【図２Ｂ】
2015130177.tif 000006
【図３】
2015130177.tif 000007