(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6626251
(24)【登録日】2019年12月6日
(45)【発行日】2019年12月25日
(54)【発明の名称】リードアフターライト危険を予測する方法及びそれを内装したプロセッサ
(51)【国際特許分類】
G06F 9/38 20060101AFI20191216BHJP
【FI】
G06F9/38 350A
G06F9/38 310F
【請求項の数】20
【全頁数】17
(21)【出願番号】特願2015-1546(P2015-1546)
(22)【出願日】2015年1月7日
(65)【公開番号】特開2015-130177(P2015-130177A)
(43)【公開日】2015年7月16日
【審査請求日】2017年12月18日
(31)【優先権主張番号】61/924,371
(32)【優先日】2014年1月7日
(33)【優先権主張国】US
(31)【優先権主張番号】14/553,055
(32)【優先日】2014年11月25日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
(74)【代理人】
【識別番号】110000051
【氏名又は名称】特許業務法人共生国際特許事務所
(72)【発明者】
【氏名】ズラスキ, ジェラルド
(72)【発明者】
【氏名】キッチン, ポウル
(72)【発明者】
【氏名】グレイソン, ブライアン
【審査官】
清木 泰
(56)【参考文献】
【文献】
特開2013−239166(JP,A)
【文献】
特表2008−512769(JP,A)
【文献】
米国特許出願公開第2003/0033510(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/38
G06F 9/30− 9/355
(57)【特許請求の範囲】
【請求項1】
実行されるインストラクションのアドレスを受信し、CSRRP(confidence/sampling read−after−write resynchronization predictor)エントリを格納し、コンフィデンススコアに基づいてRPS(resynchronization predicted store:再同期予測されたストア)として前記インストラクションを実行するか否かを判別する前記CSRRP(再同期予測器)を有するプロセッサであって、
前記CSRRPエントリは、前記インストラクションのアドレス及び前記コンフィデンススコアを含み、
前記コンフィデンススコアは、前記RPSとして前記インストラクションを実行することがRAW(read−after−write) RRE(resynchronization exception:再同期の例外)ペナルティーを避けることになるか否かを指し示し、
前記CSRRPは、
前記CSRRPエントリのいずれかに対応する受信されたアドレスに関するストアインストラクションがサンプリングされるか否かを、対応する前記CSRRPエントリに基づいて判別し、
前記サンプリングされるストアインストラクションに応じて、対応する前記CSRRPエントリにおける前記コンフィデンススコアをアップデートするか、又は対応する前記CSRRPエントリを取替え対象とし、
前記CSRRPエントリに対応するストアインストラクションは、前記CSRRPエントリのコンフィデンススコアが高い場合にサンプリングされる頻度数が少なく、前記CSRRPエントリのコンフィデンススコアが低い場合にサンプリングされる頻度数が多くなるように、動的にサンプリングされることを特徴とするプロセッサ。
【請求項2】
前記CSRRPは、
前記コンフィデンススコアをコンフィデンス閾値と比較し、
前記比較した結果に基づいて前記RPSとして前記インストラクションを実行するか否かを判別することによって、前記コンフィデンススコアに基づいて前記RPSとして前記インストラクションを実行するか否かを判別することを特徴とする請求項1に記載のプロセッサ。
【請求項3】
前記CSRRPエントリは、
前記インストラクションがRREを引き起こすか否かを判別するために前記インストラクションをサンプリングするか否かを指し示す前記インストラクションのサンプリング状態を更に含むことを特徴とする請求項2に記載のプロセッサ。
【請求項4】
前記CSRRPは、
前記サンプリング状態に基づいて前記インストラクションをサンプリングするか否かを判別し、
前記サンプリング状態に基づいて前記インストラクションをサンプリングしないとの判別に応答して前記RPSとして前記インストラクションを実行するか否かを判別することによって、前記コンフィデンススコアに基づいて前記RPSとして前記インストラクションを実行するか否かを判別することを特徴とする請求項3に記載のプロセッサ。
【請求項5】
前記CSRRPは、前記インストラクションをサンプリングすることに応答して、前記コンフィデンススコアに基づいて前記サンプリング状態を再設定することを特徴とする請求項4に記載のプロセッサ。
【請求項6】
前記CSRRPは、
前記RPSとして前記インストラクションを実行することが前記RAW RREペナルティーを避けることになることを指し示す前記コンフィデンススコアに基づいて低周波サンプリング状態に前記サンプリング状態を再設定し、
前記RPSとして前記インストラクションを実行することが前記RAW RREペナルティーを避けることにならないことを指し示す前記コンフィデンススコアに基づいて高周波サンプリング状態に前記サンプリング状態を再設定することを特徴とする請求項5に記載のプロセッサ。
【請求項7】
前記CSRRPは、前記コンフィデンススコアに基づいて前記CSRRPエントリを削除するか否かを判別することを特徴とする請求項1に記載のプロセッサ。
【請求項8】
前記CSRRPは、
前記コンフィデンススコアを取替え閾値と比較することによって前記コンフィデンススコアに基づいて前記CSRRPエントリを削除するか否かを判別し、
前記比較した結果に基づいて前記CSRRPエントリを削除することを特徴とする請求項7に記載のプロセッサ。
【請求項9】
前記CSRRPは、取替えのための前記CSRRPエントリをマーキングすることによって、前記CSRRPエントリを削除することを特徴とする請求項8に記載のプロセッサ。
【請求項10】
前記CSRRPは、
前記プロセッサによるストアインストラクションの実行がRREを生じさせることに応答して、前記RPSとして前記ストアインストラクションを実行することがRREペナルティーを避けることになる尤度がより大きいことを指し示すように前記コンフィデンススコアを増加させることによって、前記コンフィデンススコアをアップデートし、
前記プロセッサによるストアインストラクションの実行がRREを生じさせないことに応答して、前記RPSとして前記ストアインストラクションを実行することがRREペナルティーを避けることになる尤度がより小さいことを指し示すように前記コンフィデンススコアを減少させることによって、前記コンフィデンススコアをアップデートすることを特徴とする請求項1に記載のプロセッサ。
【請求項11】
プロセッサによってRPS(resynchronization predicted store:再同期予測されたストア)としてインストラクションを実行することがRAW(read−after−write) RRE(resynchronization exception:再同期の例外)ペナルティーを避けるか否かを予測する方法であって、
実行されるインストラクションのアドレスが入力される段階と、
前記インストラクションのアドレス及び前記RPSとして前記インストラクションを実行することがRREペナルティーを避けるか否かを指し示すコンフィデンススコアを含むCSRRP(confidence/sampling read−after−write resynchronization predictor:再同期予測器)エントリを格納する段階と、
前記コンフィデンススコアに基づいて前記RPSとして前記インストラクションを実行するか否かを判別する段階と、
前記CSRRPエントリのいずれかに対応する入力されたアドレスに関するストアインストラクションがサンプリングされるか否かを、対応する前記CSRRPエントリに基づいて判別する段階と、
前記サンプリングされるストアインストラクションに応じて、対応する前記CSRRPエントリにおける前記コンフィデンススコアをアップデートするか、又は対応する前記CSRRPエントリを取替え対象とする段階と、を有し、
前記CSRRPエントリに対応するストアインストラクションは、前記CSRRPエントリのコンフィデンススコアが高い場合にサンプリングされる頻度数が少なく、前記CSRRPエントリのコンフィデンススコアが低い場合にサンプリングされる頻度数が多くなるように、動的にサンプリングされることを特徴とする方法。
【請求項12】
前記コンフィデンススコアに基づいて前記RPSとして前記インストラクションを実行するか否かを判別する段階は、
前記コンフィデンススコアをコンフィデンス閾値と比較する段階と、
前記比較した結果に基づいて前記RPSとして前記インストラクションを実行するか否かを判別する段階と、を含むことを特徴とする請求項11に記載の方法。
【請求項13】
前記CSRRPエントリは、
前記インストラクションがRREを引き起こすか否かを判別するために前記インストラクションをサンプリングするか否かを指し示す前記インストラクションのサンプリング状態を更に含むことを特徴とする請求項12に記載の方法。
【請求項14】
前記コンフィデンススコアに基づいて前記RPSとして前記インストラクションを実行するか否かを判別する段階は、
前記サンプリング状態に基づいて前記インストラクションをサンプリングするか否かを判別する段階と、
前記サンプリング状態に基づいて前記インストラクションをサンプリングしないとの判別に応答して前記RPSとして前記インストラクションを実行するか否かを判別する段階と、を含むことを特徴とする請求項13に記載の方法。
【請求項15】
前記インストラクションをサンプリングすることに応答して、前記コンフィデンススコアに基づいて前記サンプリング状態を再設定する段階を更に含むことを特徴とする請求項14に記載の方法。
【請求項16】
前記コンフィデンススコアに基づいて前記サンプリング状態を再設定する段階は、
前記RPSとして前記インストラクションを実行することが前記RREペナルティーを避けることになることを指し示す前記コンフィデンススコアに基づいて低周波サンプリング状態に前記サンプリング状態を再設定する段階と、
前記RPSとして前記インストラクションを実行することが前記RREペナルティーを避けることにならないことを指し示す前記コンフィデンススコアに基づいて高周波サンプリング状態に前記サンプリング状態を再設定する段階と、を含むことを特徴とする請求項15に記載の方法。
【請求項17】
前記コンフィデンススコアに基づいて前記CSRRPエントリを削除するか否かを判別する段階を更に含むことを特徴とする請求項11に記載の方法。
【請求項18】
前記コンフィデンススコアに基づいて前記CSRRPエントリを削除するか否かを判別する段階は、
前記コンフィデンススコアを取替え閾値と比較する段階と、
前記比較した結果に基づいて前記CSRRPエントリを削除する段階と、を含むことを特徴とする請求項17に記載の方法。
【請求項19】
前記比較した結果に基づいて前記CSRRPエントリを削除する段階は、
取替えのために前記CSRRPエントリをマーキングする段階を含むことを特徴とする請求項18に記載の方法。
【請求項20】
前記プロセッサによるストアインストラクションの実行がRREを生じさせることに応答して、前記RPSとして前記ストアインストラクションを実行することが前記RREペナルティーを避けることになる尤度がより大きいことを指し示すように前記コンフィデンススコアを増加させることによって、前記コンフィデンススコアをアップデートする段階と、
前記プロセッサによるストアインストラクションの実行がRREを生じさせないことに応答して、前記RPSとして前記ストアインストラクションを実行することが前記RREペナルティーを避けることになる尤度がより小さいことを指し示すように前記コンフィデンススコアを減少させることによって、前記コンフィデンススコアをアップデートする段階と、を更に含むことを特徴とする請求項11に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、RAW(read−after−write)危険を予測する方法及び装置に関し、より詳細には、RAW危険の予測を最適化するようにRAW予測器を動的にサンプリングする方法及びそのためのプロセッサに関する。
【背景技術】
【0002】
プロセッサは高性能に到達するためにロードインストラクション及びストアインストラクションを遂行することに依存する。メモリのアドレスに対する新しいロードインストラクション(load instruction)がメモリの同一アドレスに対する古いストアインストラクション(store instruction)の前に実行されると、格納データはロードに正確に送られない。これをロードインストラクションが悪いロードデータを採用するRAW(read−after−write:リードアフターライト)危険と称する。
【0003】
RAW危険が発生すると、一般的にプロセッサは、ストアインストラクションより遅く発生した全てのインフライトインストラクション(in−flight instructions)をフラッシュ(flush)し、ストアインストラクションの次のインストラクションのためのフェッチリスタート(fetch restarts)が遂行される損失の大きいRAW RRE(resynchronization exception:再同期の除外)を遂行することによって、悪いロードデータを訂正する必要がある。このようなイベントは、動作をフラッシュ(flush)し、インストラクションを再びフェッチするのに必要な追加的なコアクロックのために損失が大きい。これをRREペナルティー(penalty)と称する。
【0004】
損失の大きいRREを避けるために、プロセッサはRAW RRP(resynchronization predictor:再同期予測器)を採用する。RAW RRPは、ストアインストラクションのアドレスに基づいて以前のRREを訓練し、将来のこのようなRREを避ける。RRPが訓練され、RREを引き起こすストアインストラクションアドレスを検出すると、RRPは、RPS(resynchronization predicted store:再同期予測されたストア)インストラクションの前に実行することから、何らかの新しいロードインストラクションを防止するように指示を送る。RPSの前に実行される新しいロードインストラクション無しでRREペナルティーを避けるRREが発生しない。新しいロードインストラクションは、RPSの実行が完了した時のみに除去する。
【0005】
時々、RPSによって中断される複数のロードインストラクションが存在する。このようなロードインストラクションのうち、唯1つがRPSの同一メモリアドレスでなければならない。これはRREペナルティーを避けるために中断される必要があるクリティカルロードインストラクションである。しかし、全ての残りのNCL(non−critical loads)はまたRPSによって中断される。RPSは、NCLを防止する際、実行を待っているNCLのために性能損失がある。これをNCLペナルティーと称する。一般的に、価値あるRRPを生成する場合、RREペナルティーを避ける性能利得は、中断されたNCLの性能損失より大きい。
【0006】
しかし、インストラクションコードがループで繰り返される時、実行動作は各々の繰り返しで僅かに異なる。RRPが採用されない場合、繰り返しコードの第1繰り返しでRRPが発生することがあり、繰り返しコードの全ての連続的なインストラクションでRREが発生しないこともある。従って、RRPがないRREペナルティーは極めて小さく、これはRREが単に1回だけ発生するためである。それにも拘わらず、RRPがこのシナリオに使用されると、RRPは第1RREを訓練して追加的なRREが実際に発生しなくても連続的なRREの全てを避ける。従って、RRPを避けるための重要なRREペナルティーが実際に存在しない時にも、RRPは相変わらずNCLペナルティーを引き起こす。この場合、RRPは性能に悪い影響を及ばす。
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は、上記従来の問題点に鑑みてなされたものであって、本発明の目的は、RREペナルティー及びNCLペナルティーの両方を減らすための方法及びそのためのプロセッサを提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するためになされた本発明の一態様によるプロセッサは、実行されるインストラクションのアドレスを受信し、CSRRP(confidence/sampling read−after−write resynchronization predictor)エントリを格納し、コンフィデンススコアに基づいて前記インストラクションを実行するか否かを判別するCSRRPを有し、前記CSRRPエントリは、前記インストラクションのアドレス及び前記コンフィデンススコアを含み、前記コンフィデンススコアは、RPS(resynchronization predicted store)として前記インストラクションを実行することがRAW(read−after−write)RRE(resynchronization execution)ペナルティーを避けることができるか否かを指し示す。
【0009】
上記目的を達成するためになされた本発明の一態様によるプロセッサによってRPS(resynchronization predicted store)としてインストラクションを実行することがRAW(read−after−write)RRE(resynchronization execution)ペナルティーを避けるか否かを予測する方法は、実行されるインストラクションのアドレスが入力される段階と、前記インストラクションのアドレス及び前記RPSとして前記インストラクションを実行することが前記RREペナルティーを避けるか否かを指し示すコンフィデンススコアを含むCSRRPエントリを格納する段階と、前記コンフィデンススコアに基づいて前記RPSとして前記インストラクションを実行するか否かを判別する段階と、を有する。
【発明の効果】
【0010】
本発明のプロセッサによれば、コンフィデンススコアを通じてRREペナルティーを管理することによって、RREペナルティー及びNCLペナルティーの両方を減らすことができる。
【図面の簡単な説明】
【0011】
【
図1A】本発明の一実施形態によるRAW危険予測を最適化するRAW予測器を動的にサンプリングする方法を示すフローチャートである。
【
図1B】本発明の一実施形態によるRAW危険予測を最適化するRAW予測器を動的にサンプリングする方法を示すフローチャートである。
【
図2A】サンプリング周期に関連し、CSRRPエントリのコンフィデンス状態を説明するテーブルを示す。
【
図2B】サンプリング周期に関連し、CSRRPエントリのコンフィデンス状態を説明する他のテーブルを示す。
【
図3】本発明の一実施形態によるCSRRPを具現するプロセッサのブロックダイヤグラムを示す。
【発明を実施するための形態】
【0012】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。
【0013】
図1A及び
図1Bは、本発明の一実施形態によるRAW(read−after−write)危険予測を最適化するRAW予測器を動的にサンプリングする方法を示すフローチャートである。
【0014】
RAW危険の予測を最適化させるRAW予測器を動的にサンプリングする方法を説明する前に、RAW危険の最適化された予測の観点をRAW危険の最適化された予測の理解を助けるために説明する。
【0015】
本実施形態によると、CSRRP(confidence/sampling read−after−write resynchronization predictor:コンフィデンス/サンプリングリードアフターライト再同期予測器)はインストラクションに対するRRE(resynchronization execution)が発生するか否かを予測するためにRRP訓練を避けるように使用される。特に、インストラクションが実際にRREを発生せずにRPSとして取り扱われない場合、コンフィデンススコア及びRRPエントリのサンプリング技術の利用を組合せることによって、CSRRPは、インストラクションがRREを発生するか否かを予測することを避けることができ、これによってRPSとしてインストラクションを取り扱うことを避けることができる。
【0016】
第1に、コンフィデンススコアに対して、実行されたインストラクションがメモリアドレスに格納されたデータに対してRREを発生すると、CSRRPはRRE及びコンフィデンススコアを発生するインストラクションのメモリアドレスを示すCSRRPエントリを割当てる。例えば、CSRRPエントリは、CSRRPエントリテーブルの使用を通じてメモリに格納される。CSRRPエントリはサンプリング状態又はサンプリングカウンターを示す。ここで、サンプリング状態及びサンプリングカウンターは、下記で説明するサンプリングされるCSRRPエントリによって示されるアドレスを有する周期又は周波数に対応する。
【0017】
コンフィデンススコア(confidence score)は、CSRRPエントリが、インストラクションが実行される時に関連メモリアドレスに格納されたインストラクションがRREを発生するか否かを実際に予測する尤度(likelihood)を指し示す。ここで、CSRRPエントリはRREを発生するインストラクションのメモリアドレスを識別する。
【0018】
例えば、高いコンフィデンススコアを有するCSRRPエントリは、インストラクションが実行される時に関連メモリアドレスに格納されたインストラクションがRREを発生することを正確に予測する高い尤度(high likelihood)を指し示す。従って、RPSとしてインストラクションを設定することは、RREを避けることができる高い尤度を有する。
【0019】
反対に、低いコンフィデンススコアを有するCSRRPエントリは、インストラクションが実行される時に関連メモリアドレスに格納されたインストラクションがRREを発生することを正確に予測する低い尤度を指し示す。従って、RPSとしてインストラクションを設定することは、RREを避けることができる低い尤度を有する。
【0020】
フェッチされたインストラクションのメモリアドレスがCSRRPエントリに一致すると、CSRRPエントリがメモリアドレスのために割当てられた後に一致したCSRRPエントリのコンフィデンススコアはコンフィデンス閾値と比較される。CSRRPのコンフィデンススコアがコンフィデンス閾値を超過すると、CSRRRPはフェッチされたインストラクションがRPSであると判別される。反面、CSRRPエントリのコンフィデンススコアがコンフィデンス閾値を超過しない場合、CSRRPはフェッチされたインストラクションがRPSでないと判別される。
【0021】
上述したように、コンフィデンススコアはフェッチされたインストラクションがRPSとして取り扱うか否かを判別するのに使用される。しかし、RPSの実行が完了するまで新しいインストラクションの実行を防止するためにRPSとして調節されるインストラクションがRREを引き起こさないため、RPSとしてインストラクションを取り扱うことがRREを避けることを助けるか否かが判別される。即ち、言い換えると、上述したように、ループで反復的に取り扱うインストラクションコードの実施形態において、RRPはプロセシング効率性を提供するか、或いは提供しないこともある。
【0022】
従って、CSRRPの第2番目の観点は、コンフィデンススコアと組合せてサンプリングを遂行することにある。サンプリング技法は、甚だしくエントリのコンフィデンススコアがコンフィデンス閾値より低くても、周期的にCSRRPエントリをサンプリングする。これはサンプルされたエントリがインストラクションに対してRRS処理を開始しないことを示す。
【0023】
サンプルされたCSRRPエントリのメモリアドレスに格納されたインストラクションがRREを引き起こすと、CSRRPはサンプルされたCSRRPエントリのコンフィデンススコアを増加させる。反面、サンプルされたCSRRPエントリに格納されたインストラクションがRREを引き起こさない場合、CSRRPはサンプルされたCSRRPエントリのコンフィデンススコアを減少させる。
【0024】
CSRRPの効率性を維持するために、CSRRPは、サンプルされたCSRRPエントリのコンフィデンススコアが取替え値より下にあるか否かを判別する。サンプルされたCSRRPエントリのコンフィデンススコアが取替え値に到達したとCSRRPが判別した場合、CSRRPはサンプルされたCSRRPエントリを削除する。従って、RREを発生するインストラクションのうちの残りのメモリアドレスはCSRRPエントリとして割当てられる。その結果、CSRRPエントリの選択を通じて、RREを発生するインストラクションの低い尤度を有するCSRRPエントリが削除される間に、RREを発生するインストラクションの中で最も高い尤度を有するこのようなCSRRPエントリは維持される。
【0025】
サンプリング技術は各々のCSRRPエントリのコンフィデンススコアに基づいて各CSRRPエントリを動的にサンプリングする。
【0026】
高いコンフィデンススコアを有するCSRRPエントリはサンプリングされる頻度数が少なくなる。これはサンプルされたCSRRPエントリのインストラクションがRREを引き起こす高い尤度のためである。従って、プロセッサは、このようなCSRRPエントリのサンプリングを遂行する時、RREペナルティーを受ける。
【0027】
反面、低いコンフィデンススコアを有するCSRRPエントリは、より頻繁にサンプルされる。これはサンプルされたCSRRPエントリのインストラクションがRREを引き起こす低い尤度のためである。従って、プロセッサは、このようなCSRRPエントリのサンプリングを遂行する時、RREペナルティーを少なく受ける。
【0028】
加えて、インストラクションコードを発生する訪問されない潜在的なRREのためのCSRRPエントリ空間を解消するようにCSRRPエントリができるだけ速やかに削除される可能性が存在するため、低いコンフィデンススコアを有するCSRRPエントリは更に頻繁にサンプルされる。これにより、RREを発生する低い尤度を有するCSRRPエントリが削除される間に、RREを発生する最も高い尤度を有するCSRRPエントリは維持される。
【0029】
図1A及び
図1Bのフローチャートを参照すると、RAWの最適化された予測は、RREを予測して避けることで、対応するRREに関するペナルティーを避けるコンフィデンス及びサンプリングロジックの使用について説明する。
【0030】
S105段階で、プロセッサのフェッチユニットは、ストアインストラクションのメモリアドレスに基づいてメモリからストアインストラクションをフェッチする。フェッチユニットはプロセッサのCSRRPにフェッチされたストアインストラクションを伝送する。
【0031】
S110段階で、CSRRPは、フェッチされたストアインストラクションのメモリアドレスがCSRRPエントリに存在するメモリアドレスに一致するか否かを判別する。フェッチされたストアインストラクションのメモリアドレスがCSRRPエントリのメモリアドレスに一致しない場合(S110段階で「いいえ」)、RRPチェックは完了し、フェッチされたストアインストラクションはS153段階でプロセッサによって実行される。フェッチされたストアインストラクションがCSRRPエントリに一致しないため、フェッチされたストアインストラクションは何らかのRPS指示が無くても実行される。
【0032】
反面、フェッチされたストアインストラクションのメモリアドレスがCSRRPエントリに一致すると(S110段階で「はい」)、CSRRPはS115段階でCSRRPエントリのサンプリング状態をアップデートする。
【0033】
本実施形態によると、サンプリング状態はCSRRPエントリに関連するサンプリングカウンターを減少させることによってアップデートされる。代わりに、サンプリング状態はCSRRPエントリに関連するサンプリングカウンターを増加させることによって、アップデートされることもある。
【0034】
サンプリングカウンターが、サンプリングカウンターを増加させる場合の最大値、又はサンプリングカウンターを減少させる場合の最小値の中のいずれか1つであるサンプリング閾値に到達すると、CSRRPエントリは下記に説明するようにサンプリングされる。説明を簡単にするため、S115段階でサンプリングカウンターは減少されると仮定する。
【0035】
S120段階で、CSRRPエントリのサンプリング状態がアップデートされると、CSRRPはCSRRPエントリのコンフィデンススコアとコンフィデンス閾値とを比較する。
【0036】
CSRRPエントリのコンフィデンススコアがコンフィデンス閾値を超過すると(S120段階で「はい」)、CSRRPは、RREがフェッチされたインストラクションの実行で引き起こされると判別する。従って、フェッチされたインストラクションはRPSになる。反面、CSRRPエントリのコンフィデンススコアがコンフィデンス閾値を超過しない場合(S120段階で「いいえ」)、CSRRPは、RREがフェッチされたインストラクションの実行で引き起こされないと判別する。従って、フェッチされたインストラクションはRPSではない。
【0037】
コンフィデンス判別(S120段階で「いいえ」又は「はい」)に関係なく、CSRRPはサンプリング閾値とサンプリング状態とを比較する。ここで、サンプリング状態は、S125段階及びS140段階で、フェッチされたインストラクションがサンプルされるか否かを判別するために上述したサンプリングカウンターとして具現される。CSRRPは、RREをストアインストラクションが引き起こさないか否かを知るためにフェッチされたストアインストラクションをサンプリングする。特に、サンプルされたインストラクションがRPSとしてマーキングされた場合、CSRRPは、サンプルされたインストラクションが実際にRREを引き起こさないことを判別するためのサンプリングを遂行する。従って、サンプリングは、RPSではないインストラクションとして把握し、RPSとして設定してインストラクションを正確に把握するように遂行される。この点において、周期的なサンプリングは、実行される時にストアインストラクションがRREを発生するか否かをより正確に予測するためにCSRRPを訓練する。
【0038】
S130段階で、インストラクションがサンプルされないと判別された場合(S125段階で「いいえ」)、CSRRPはフェッチされたストアインストラクションをサンプルしない。S130段階で、CSRRPが、ストアインストラクションがRPSとして設定されないと以前に判別したため、ストアインストラクションはRPSとして設定されない。
【0039】
S135段階で、インストラクションがサンプルされると判別された場合(S125段階で「はい」)、CSRRPはフェッチされたストアインストラクションをサンプルする。ここで、インストラクションがサンプルされた場合、CSRRPは、
図2A及び
図2Bに示すようにCSRRPエントリのコンフィデンススコアに基づいてインストラクションに対応するCSRRPエントリのサンプリング状態を再設定する。加えて、S135段階で、CSRRPは、サンプルされたストアインストラクションがRPSとして設定されないと以前に判別したため、サンプルされたストアインストラクションはRPSとして設定されない。
【0040】
S150段階で、インストラクションがサンプルされると判別された場合(S140段階で「はい」)、CSRRPはフェッチされたストアインストラクションをサンプルする。再び、インストラクションがサンプルされた時、CSRRPは、
図2A及び
図2Bに示すようにCSRRPエントリのコンフィデンススコアに基づいてインストラクションに対応するCSRRPエントリのサンプリング状態を再設定する。
【0041】
フェッチされたインストラクションがRRPであり(S120段階で「はい」)、サンプルされなかったと判別された場合(S140段階で「いいえ」)にのみ、フェッチされたインストラクションがRPSとしてマークされる。
【0042】
S135段階及びS150段階で、サンプリング状態がサンプリング閾値に到達し、サンプリングが遂行される時、CSRRPは上述したようにCSRRPエントリのコンフィデンススコアに基づいたCSRRPエントリのサンプリング状態(例えば、サンプリング周期)を再設定する。
【0043】
図2Aは、サンプリング周期に関連し、CSRRPエントリのコンフィデンス状態を説明するテーブルを示す。インストラクションがRREを発生するコンフィデンスが増加することによって(例えば、コンフィデンススコアが増加する)、サンプリングが少なく要求され、サンプル周期は増加する(サンプリング周波数は減少する)。インストラクションがRREを発生しなかったというコンフィデンスが増加することによって(例えば、コンフィデンススコアが減少する)、サンプリング周期は減少する(例えば、サンプリング周波数は増加する)。従って、CSRRPエントリはできるだけ速やかに削除される。
【0044】
図2Aは低いコンフィデンススコア(1、0、−1、…、及び−6)を有するサンプリング状態が短いサンプリング周期に再設定されることを示す。従って、低いコンフィデンススコアを有するCSRRPエントリは取替えのために速やかにマークされる。
【0045】
図2Bは、サンプリング周期に関連し、CSRRPエントリのコンフィデンス状態を説明する他のテーブルを示す。
図2Aが低いコンフィデンススコア(1、0、−1、…、及び−6)を有するサンプルが短いサンプリング周期に再設定されることを示した反面、
図2Bは、サンプリング周期が、インストラクションがRREを発生しないというコンフィデンスが増加することによって(即ち、コンフィデンススコアの増加)少なく再設定される(サンプリング周波数の減少)ことを示す。例えば、(−2、−3、−4、−5、及び−6)のコンフィデンススコアを有するサンプルは、各々4、16、64、256、及び1024のインターバルでサンプリングのために設定される。
【0046】
図1A及び
図1Bを再び参照すると、S153段階で、ストアインストラクションが実行される時、インストラクションのCSRRPエントリは、インストラクションがRPSとして設定されたか否か及びインストラクションがサンプルされたか否かを示す。
【0047】
S155段階で、フェッチされたストアインストラクションが実行されると(S153段階)、CSRRPはRREが発生したか否かをチェックする。
【0048】
S160段階で、RREが発生しないと判別された場合(S155段階で「いいえ」)、CSRRPは、上述したように、対応するCSRRPエントリに基づいてインストラクションがサンプルされたストアインストラクションであるか否かを判別する。
【0049】
S165段階で、インストラクションがサンプルされたストアインストラクションではないと判別された場合、RRPアップデートを必要としない。
【0050】
S170段階で、インストラクションがサンプルされたストアインストラクションであると判別された場合、CSRRPは、上述したようにコンフィデンス状態が取替え値に到達したか否かを判別する。
【0051】
CSRRPが、コンフィデンス状態が取替え値に到達しないと判別した場合(S170段階で「いいえ」)、コンフィデンス状態は本実施形態に従って減少される。
【0052】
上述したように、コンフィデンス状態は、RREを発生するインストラクションのメモリアドレスを識別するCSRRPエントリが、インストラクションが実行される時、関連するメモリアドレスに格納されたインストラクションがRREを発生するか否かを正確に予測できる尤度を指し示す。従って、コンフィデンス状態の方向(増加又は減少)は増加する尤度を指し示すように任意に設定される。他の実施形態で、コンフィデンススコアは減少することもある。コンフィデンス状態の方向に関係なく、CSRRPによってコンフィデンス状態をアップデートすることは、現在実行されるインストラクションがRREを引き起こさないという増加された尤度を指し示す(S170段階で「いいえ」)。
【0053】
S180段階で、CSRRPが、コンフィデンス状態が取替え値に到達したと判別した場合(S170段階で「はい」)、CSRRPエントリは取替えのためにマークされる。従って、CSRRPエントリテーブルが全て有効なCSRRPエントリである場合、新しいCSRRPエントリを割当てることが要求され、取替えのためにマークされた最後のCSRRPエントリ(代案として、何らかのCSRRPエントリ)は新しいCSRRPエントリのための空間を確保するために削除される。代わりに、CSRRPエントリは、コンフィデンス状態が取替え値に到達すると、単純に直ちに削除される。
【0054】
S185段階で、CSRRPが、RREがインストラクション実行によって発生したと判別した場合(S155段階で「はい」)、CSRRPは、対応するCSRRPエントリがインストラクションに存在するか否かを判別する。ここで、対応するCSRRPエントリが存在しない場合(S110段階で「いいえ」、S185段階で「いいえ」)、新しいCSRRPエントリはインストラクションのために割当てられる。
【0055】
S195段階で、CRRRPエントリが、実行されたインストラクションのために存在するとCSRRPが判別した場合(S185段階で「はい」)、CSRRPは実行されたインストラクションのためにCSRRPエントリのコンフィデンススコアをアップデートする。CSRRPによってコンフィデンス状態をアップデートすることは、現在実行されるインストラクションがRREを引き起すという増加された尤度を指し示す。
【0056】
構造的な性能モデリングは、
図1A及び
図1Bに説明したCSRRP技法がNCLペナルティーのため、一般的なRRPによって引き起こされる性能減少を回復させることを示す。一般的なRRPを有する10%以上の性能減少を示す業界標準ワークロードのセットは、平均性能減少が14%である。しかし、このようなワークロードを通じて本発明の実施形態で開示したCSRRP技法は単に2.17%性能減少を示す。
【0057】
同時に、CSRRPはRRP技法から有益なワークロードで同様の性能利得を示す。RRPによって10%以上の長所を有する業界標準ワークロードである場合、平均性能利得が26%である。これは本発明の実施形態で開示したCSRRPによる性能利得と同一である。
【0058】
新しく割当てられたエントリが発生する時、正確なコンフィデンス状態及びコンフィデンス状態が増加するか又は減少する量は、プロセッサの動作特性に基づいて各プロセッサで具現される。
【0059】
同様に、各コンフィデンス状態のためのサンプリング周期は特定のプロセッサの動作特性によって変更されるか又は調節される。
【0060】
図3は、本発明の一実施形態によるCSRRPを具現するプロセッサのブロックダイヤグラムを示す。
【0061】
プロセッサ300は、フェッチユニット310、CSRRP320、デコードユニット330、及び実行ユニット340を含む。実行ユニット340は、追加的にOOLQ(out−of−order load queue)350及びLSS(load−store scheduler)360を含む。
【0062】
フェッチユニット310は、例えばインストラクションのメモリアドレスに基づいてメモリからインストラクションをフェッチする。フェッチユニット310は、フェッチされたインストラクションをCSRRP320及びデコードユニット330に伝送する。
【0063】
CSRRP320は、
図1A及び
図1Bを参照して説明したRAW再同期予測を遂行する。デコードユニット330は、フェッチユニット310によってフェッチされたインストラクションを受信し、実行ユニット340のLSS360によってスケジューリングしてインストラクションをデコードする。デコードユニット330は、デコードされたインストラクションを実行ユニット340に伝送する。
【0064】
実行ユニット340は、デコードユニット340からデコードされたインストラクションを受信してインストラクションを実行する。実行ユニット340のLSS360は、全てのインフライトロード(in−flight load)インストラクション及び以前に実行されなかったストアインストラクションを格納する。
【0065】
LSS360は、選択されるように準備された最も古いロードインストラクション又はストアインストラクションを選択する役割を果たす。インストラクションのメモリアドレスが計算される時、ロードインストラクション又はストアインストラクションは選択されるように準備されるために判別される。それぞれ異なるロードインストラクション又はストアインストラクションのためのメモリアドレスが計算される時には多様な時間を必要とするため、古いロードインストラクション又はストアインストラクションより新しいロードインストラクション又はストアインストラクションが選択されるように準備される。従って、これはプログラム順序によって選択される。
【0066】
実行ユニット340のOOLQ350は、古いストアインストラクションの前に実行される全てのロードインストラクションを格納する。LSS360によって実行することが選択されると、ロードインストラクションはOOLQ350に割当てられ、インストラクションがパイプラインで最も古いインストラクションである時に削除される。
【0067】
LSS360によって、実行するためのストアインストラクションが選択されると、OOLQ350は、OOLQ350の全てのエントリがインストラクションアドレスに一致するか否かを判別するためにチェックする。インストラクションアドレスが一致すると、OOLQ350はインストラクションの年齢をストアインストラクションがロードインストラクションより長くなったか否かを判別するために比較する。ストアインストラクションが一致するアドレスを有する新しいロードインストラクションに対応すると判別された場合、ストアインストラクションはRREを発生することによってマークされる。
【0068】
実行ユニット340は、RREをトリガするストアインストラクションのインストラクションアドレスをCSRRP320に伝送することによって、CSRRP320をアップデートする。従って、上述したように、ストアインストラクションのためのCSRRPエントリはCSRRP320に割当てられる。このストアインストラクションのためのCSRRPエントリは、上述したように、フェッチされたインストラクションアドレスに対して一致させるために後に使用される。
【0069】
RRE−マークされたストアインストラクションがパイプラインで最も古いインストラクションである時、OOLQ350は、パイプラインで全てのインフライトロードインストラクションをフラッシュ(flush)し、プログラム順序に従って次のインストラクションを開始するためのフェッチユニット310を指し示す。
【0070】
その結果、インストラクションアドレスが、CSRRP320のCSRRPエントリでアドレスに一致するフェッチユニット310によって生成されると、インストラクションはRPSにマークされる。RPSにマークされたインストラクションがフェッチユニット310及びデコードユニット330から実行ユニット340のLSS360に伝送されると、RPS指示時期はRPS指示されたインストラクションの前に実行される新しいロードインストラクションを許さないように信号処理される。これは損失が大きいRRE発生可能性を防止する。
【0071】
本発明の実施形態はコンピューター読み取り可能な記録媒体にコンピューター読み取り可能なコードとして具現される。このようなコンピューター読み取り可能な記録媒体はコンピューター読み取り可能なデータが格納される記録媒体の全ての種類を含む。コンピューター読み取り可能な記録媒体の例としては、ROM、RAM、CD−ROM、マグネチックテープ、フロッピー(登録商標)ディスク、及び光学データ格納装置を含む。加えて、コンピューター読み取り可能な記録媒体は、インターネット伝送で利用され搬送波(carrier waves)の形態で具現される。更に、コンピューター読み取り可能な記録媒体は、コンピューター読み取り可能なコードが分散的な方法で格納され実行されるネットワークに接続されるコンピューターシステムに分散される。
【0072】
当業者に公知されるように、本発明の実施形態は、ソフトウェア及び/又はハードウェア構成の組合せ、例えばあらゆる作業を処理するためにFPGA(field programmable gate array)又はASIC(application specific integrated circuit)で具現される。ユニット及びモジュールはアドレッサブル格納媒体に存在するように具現されるか、或いは少なくとも1つのプロセッサ又はマイクロプロセッサで実行されるように具現される。従って、ユニット又はモジュールは、一例として、ソフトウェア構成、オブジェクト指向ソフトウェア構成、クラス構成及びタスク構成、プロセッサ、機能、構成、属性、過程、サブルーチン、プログラムコードのセグメント、ドライバー、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ、及び変数のような構成を含む。構成及びユニットに提供される機能はより小さい構成とユニット又はモジュールに結合されるか、或いは追加的な構成とユニット又はモジュールに分離される。
【0073】
以上、本発明の実施形態について図面を参照しながら詳細に説明したが、本発明は、上述の実施形態に限定されるものではなく、本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【0074】
300 プロセッサ
310 フェッチユニット
320 CSRRP(Confidence/Sampling RRP:コンフィデンス/サンプリングリードアフターライト再同期予測)
330 デコードユニット
340 実行ユニット
350 OOLQ(out−of−order load queue)
360 LSS(load−store scheduler)
RAW Read−After−Write(リードアフターライト)
RPS Resynchronization Predicted Store(再同期予測されたストア)
RRE Resynchronization Exception(再同期除外)
RRP RAW Resynchronization Predictor(リードアフターライト再同期予測器)