(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-08-31
(54)【発明の名称】スライスされたリオーダー・バッファ(SROBS)の並列ウォークを使用したフラッシュ回復の実行
(51)【国際特許分類】
G06F 9/38 20180101AFI20230824BHJP
【FI】
G06F9/38 330K
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023504717
(86)(22)【出願日】2021-05-03
(85)【翻訳文提出日】2023-01-24
(86)【国際出願番号】 US2021030384
(87)【国際公開番号】W WO2022031332
(87)【国際公開日】2022-02-10
(32)【優先日】2020-08-06
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】テクメン,ユスフ カガタイ
(72)【発明者】
【氏名】スミス,ロドニー ウェイン
(72)【発明者】
【氏名】セス,キラン ラヴィ
(72)【発明者】
【氏名】プリヤダルシ,シヴァム
【テーマコード(参考)】
5B013
【Fターム(参考)】
5B013BB18
(57)【要約】
本願ではスライスされたリオーダー・バッファ(SROB)の並列ウォークを使用してフラッシュ回復を実行することが開示される。ある例示的実施形態では、レジスタ・マッピング回路は:論理レジスタ番号(LRN)から物理レジスタ番号(PRN)へのマッピングを表すRMTエントリーを含む名前変更マッピング・テーブル(RMT)を提供する。レジスタ・マッピング回路は、それぞれのLRNにそれぞれ対応する複数のSROBスライスを含むSROBを提供する。各SROBスライスは、そのSROBスライスに対応するLRNに書き込むコミットされていない命令を追跡し、それらの命令を互いに対してプログラム順において維持する。あるLRNに書き込むコミットされていない命令を検出すると、レジスタ・マッピング回路は、そのLRNに対応するSROBスライスにおけるSROBスライス・エントリーを割り当てる。ターゲット命令からのパイプライン・フラッシュが生じると、レジスタ・マッピング回路は、SROBのSROBスライスの並列ウォークに基づいて、RMTのRMTエントリーを以前のマッピング状態に復元する。
【特許請求の範囲】
【請求項1】
プロセッサ装置におけるレジスタ・マッピング回路であって、当該レジスタ・マッピング回路は:
複数のLRNのうちの論理レジスタ番号(LRN)の、複数のPRNのうちの物理レジスタ番号(PRN)へのマッピングをそれぞれ表す複数のRMTエントリーを含む名前変更マップ・テーブル(RMT)と;
複数のSROBスライスに細分されたスライスされたリオーダー・バッファ(SROB)を有しており、前記SROBスライスは、前記複数のLRNのうちそれぞれのLRNにそれぞれ対応し、それぞれ複数のSROBスライス・エントリーを含み、
当該レジスタ・マッピング回路は:
前記プロセッサ装置の実行パイプライン内で、前記複数のLRNのうちの宛先LRNへの書き込み命令を含むコミットされていない命令を検出し;
前記SROBの前記複数のSROBスライスのうち、前記宛先LRNに対応するSROBスライスの前記複数のSROBスライス・エントリーのうちのあるSROBスライス・エントリーを、前記コミットされていない命令に割り当て;
前記実行パイプライン内のターゲット命令からのパイプライン・フラッシュの指示を受け取り;
前記パイプライン・フラッシュの前記指示を受け取ることに応答して、前記複数のRMTエントリーのLRNに対応する前記複数のSROBスライスの並列ウォークに基づいて、前記複数のRMTエントリーを対応する複数の以前のマッピング状態に復元するように構成されている、
レジスタ・マッピング回路。
【請求項2】
前記複数のRMTエントリーは、それぞれの複数のプログラム順識別子を含み;
当該レジスタ・マッピング回路は、前記複数のRMTエントリーの前記複数のプログラム順識別子にさらに基づいて、前記複数のRMTエントリーを前記対応する複数の以前のマッピング状態に復元するように構成されている、
請求項1に記載のレジスタ・マッピング回路。
【請求項3】
当該レジスタ・マッピング回路は、複数のROBエントリーを含むリオーダー・バッファ
(ROB)をさらに有しており;
当該レジスタ・マッピング回路はさらに、前記複数のROBエントリーを前記プロセッサ装置の前記実行パイプライン内の対応する複数のコミットされていない命令に割り当てるように構成されており、前記複数のコミットされていない命令は、前記コミットされていない命令を含む、
請求項1に記載のレジスタ・マッピング回路。
【請求項4】
前記SROBの前記複数のSROBスライスのうちの各SROBスライスの前記複数のSROBスライス・エントリーの数が、前記複数のROBエントリーの数に等しい、請求項3に記載のレジスタ・マッピング回路。
【請求項5】
前記SROBの前記複数のSROBスライスのうち、各SROBスライスの前記複数のSROBスライス・エントリーの数が、前記複数のROBエントリーの数より少なく;
当該レジスタ・マッピング回路がさらに、前記SROBスライス・エントリーを割り当てるように構成されていることが:
前記SROBスライスの前記複数のSROBスライス・エントリーのうち、割り当てのために利用可能なSROBスライス・エントリーがないことを判別し;
前記SROBスライスの前記複数のSROBスライス・エントリーのうち、割り当てのために利用可能なSROBスライス・エントリーがないことを判別することに応答して:
前記プロセッサ装置の前記実行パイプラインのストールを開始し;
前記ストールの解決に応答して前記SROBスライス・エントリーを割り当てる
ように構成されることによってである、
請求項3に記載のレジスタ・マッピング回路。
【請求項6】
前記SROBの前記複数のSROBスライスのうち、各SROBスライスの前記複数のSROBスライス・エントリーの数が、前記複数のROBエントリーの数より少なく;
当該レジスタ・マッピング回路がさらに、前記SROBスライス・エントリーを割り当てるように構成されていることが:
前記SROBスライスの前記複数のSROBスライス・エントリーのうち、割り当てのために利用可能なSROBスライス・エントリーがないことを判別し;
前記SROBスライスの前記複数のSROBスライス・エントリーのうち、割り当てのために利用可能なSROBスライス・エントリーがないことを判別することに応答して:
最も古いSROBスライス・エントリーを割り当てる
ように構成されることによってである、
請求項3に記載のレジスタ・マッピング回路。
【請求項7】
当該レジスタ・マッピング回路が、前記複数のRMTエントリーを前記対応する複数の以前のマッピング状態に復元するように構成されていることが:
前記SROBスライスのウォークを実行している間に、前記最も古いSROBスライス・エントリーの上書きされた内容がフラッシュ回復のために必要であると判断し;
前記最も古いSROBスライス・エントリーの上書きされた内容がフラッシュ回復のために必要であると判断することに応答して、さらに前記ROBのウォークに基づいて、前記複数のRMTエントリーを前記対応する複数の以前のマッピング状態に復元するように構成されていることによってである、
請求項6に記載のレジスタ・マッピング回路。
【請求項8】
当該レジスタ・マッピング回路は、部分シリアルROB(PSROB)をさらに有しており;
前記SROBの前記複数のSROBスライスのうち、各SROBスライスの前記複数のSROBスライス・エントリーの数が、前記複数のROBエントリーの数より少なく;
当該レジスタ・マッピング回路がさらに、前記SROBスライス・エントリーを割り当てるように構成されていることが:
前記SROBスライスの前記複数のSROBスライス・エントリーのうち、割り当てのために利用可能なSROBスライス・エントリーがないことを判別し;
前記SROBスライスの前記複数のSROBスライス・エントリーのうち、割り当てのために利用可能なSROBスライス・エントリーがないことを判別することに応答して:
前記SROBスライスの前記複数のSROBスライス・エントリーのうち最も古いSROBスライス・エントリーを前記PSROBに放逐し;
前記最も古いSROBスライス・エントリーを割り当てる
ように構成されることによってである、
請求項3に記載のレジスタ・マッピング回路。
【請求項9】
当該レジスタ・マッピング回路が、前記複数のRMTエントリーを前記対応する複数の以前のマッピング状態に復元するように構成されていることが:
前記SROBスライスのウォークを実行している間に、前記放逐された最も古いSROBスライス・エントリーの上書きされた内容がフラッシュ回復のために必要であると判断し;
前記放逐された最も古いSROBスライス・エントリーの上書きされた内容がフラッシュ回復のために必要であることを判断することに応答して、さらに前記PSROBのウォークに基づいて、前記複数のRMTエントリーを前記対応する複数の以前のマッピング状態に復元するように構成されていることによってである、
請求項8に記載のレジスタ・マッピング回路。
【請求項10】
スライスされたリオーダー・バッファ(SROB)の並列ウォークを使用してフラッシュ回復を実行する方法であって、当該方法は:
プロセッサ装置のレジスタ・マッピング回路によって、前記プロセッサ装置の実行パイプライン内で、コミットされていない命令を検出する段階であって、前記コミットされていない命令は、複数のLRNのうちの宛先論理レジスタ番号(LRN)への書き込み命令を含む、段階と;
前記プロセッサ装置のSROBの複数のSROBスライスのうち、前記宛先LRNに対応するSROBスライスの複数のSROBスライス・エントリーのうちのあるSROBスライス・エントリーを、前記コミットされていない命令に割り当てる段階であって、前記複数のSROBスライスのそれぞれのSROBスライスは、前記複数のLRNのうちのそれぞれのLRNに対応する、段階と;
前記実行パイプライン内のターゲット命令からのパイプライン・フラッシュの指示を受け取る段階と;
前記パイプライン・フラッシュの前記指示を受け取ることに応答して、前記複数のRMTエントリーのLRNに対応する前記複数のSROBスライスの並列ウォークに基づいて、複数の名前変更マップ・テーブル(RMT)エントリーを対応する複数の以前のマッピング状態に復元する段階とを含む、
方法。
【請求項11】
ROBの複数のリオーダー・バッファ(ROB)エントリーを前記プロセッサ装置の前記実行パイプライン内の対応する複数のコミットされていない命令に割り当てる段階をさらに含み、前記複数のコミットされていない命令は、前記コミットされていない命令を含む、
請求項10に記載の方法。
【請求項12】
前記SROBの前記複数のSROBスライスのうち、各SROBスライスの前記複数のSROBスライス・エントリーの数が、前記複数のROBエントリーの数より少なく;
前記SROBスライス・エントリーを割り当てることが:
前記SROBスライスの前記複数のSROBスライス・エントリーのうち、割り当てのために利用可能なSROBスライス・エントリーがないことを判別し;
前記SROBスライスの前記複数のSROBスライス・エントリーのうち、割り当てのために利用可能なSROBスライス・エントリーがないことを判別することに応答して:
前記プロセッサ装置の前記実行パイプラインのストールを開始し;
前記ストールの解決に応答して前記SROBスライス・エントリーを割り当てる
ことを含む、
請求項11に記載の方法。
【請求項13】
前記SROBの前記複数のSROBスライスのうち、各SROBスライスの前記複数のSROBスライス・エントリーの数が、前記複数のROBエントリーの数より少なく;
前記SROBスライス・エントリーを割り当てることが:
前記SROBスライスの前記複数のSROBスライス・エントリーのうち、割り当てのために利用可能なSROBスライス・エントリーがないことを判別し;
前記SROBスライスの前記複数のSROBスライス・エントリーのうち、割り当てのために利用可能なSROBスライス・エントリーがないことを判別することに応答して:
最も古いSROBスライス・エントリーを割り当てる
ことを含む、
請求項11に記載の方法。
【請求項14】
前記SROBの前記複数のSROBスライスのうち、各SROBスライスの前記複数のSROBスライス・エントリーの数が、前記複数のROBエントリーの数より少なく;
前記SROBスライス・エントリーを割り当てることが:
前記SROBスライスの前記複数のSROBスライス・エントリーのうち、割り当てのために利用可能なSROBスライス・エントリーがないことを判別し;
前記SROBスライスの前記複数のSROBスライス・エントリーのうち、割り当てのために利用可能なSROBスライス・エントリーがないことを判別することに応答して:
前記SROBスライスの前記複数のSROBスライス・エントリーのうち最も古いSROBスライス・エントリーを部分シリアルROB(PSROB)に放逐し;
前記最も古いSROBスライス・エントリーを割り当てる
ことを含む、
請求項11に記載の方法。
【請求項15】
前記複数のRMTエントリーを前記対応する複数の以前のマッピング状態に復元することが:
前記SROBスライスのウォークを実行している間に、前記放逐された最も古いSROBスライス・エントリーの上書きされた内容がフラッシュ回復のために必要であると判断し;
前記放逐された最も古いSROBスライス・エントリーの上書きされた内容がフラッシュ回復のために必要であることを判断することに応答して、さらに前記PSROBのウォークに基づいて、前記複数のRMTエントリーを前記対応する複数の以前のマッピング状態に復元することを含む、
請求項11に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の技術は、プロセッサ・ベースの装置における投機的な命令の実行に、特に投機的な命令の実行中に発生する可能性のあるパイプライン・フラッシュからの回復に関する。
【背景技術】
【0002】
通常の現代のプロセッサ装置の一般的な特徴の1つは分岐予測であり、これは制御フロー命令(条件分岐命令など)から生じる分岐の方向を予測するとともに、予測された実行経路上での命令の投機的実行を可能にする機構を用いる。どうしても一部の分岐予測は正しくないため、そのような分岐予測機構は、誤って予測された分岐から生じる投機的命令実行の影響から回復するためのハードウェアも含んでいる。この回復を達成するために、分岐予測機構は、誤って予測された分岐命令よりも若い投機的に実行された命令を実行パイプラインから「フラッシュ」し、異なるマイクロアーキテクチャー構造において該投機的に実行された命令によって実行されたすべての更新を元に戻し、誤って予測された分岐命令の前に存在していたこれらの構造の元の状態を回復する必要がある。パイプライン・フラッシュは、分岐の誤った予測に加えて、他の制御ハザードに応答しても行われることがある。たとえば、メモリ位置の計算されたアドレスが無効であるか、またはアクセスできないようなロードまたはストア命令を実行しようとする試みの後に、パイプライン・フラッシュが実行される必要があることがある。
【0003】
フラッシュ回復の影響を受けるマイクロアーキテクチャー構造の1つは、名前変更マップ・テーブル(rename map table、RMT)がある。レジスタの名前変更をサポートするプロセッサ装置によって提供されるRMTは、真のデータ依存性を確立するためにプロセッサ装置によって使用される最新の論理レジスタから物理レジスタへのマッピングを格納する。RMTによって格納されているマッピングは投機的に実行される命令によって変更される可能性があるため、フラッシュから回復するには、各RMTマッピングが、フラッシュをトリガーした命令(「ターゲット命令」)がレジスタの名前変更を受けたときに存在していた以前のマッピング状態に復元される必要がある。フラッシュ後にフェッチされる「正しい」実行経路の命令は、RMTがその以前のマッピング状態に復元されるまでプロセッサ装置の実行パイプラインを通じて進むことができないため、RMTの復元は時間に敏感な動作である。RMTの以前のマッピング状態が十分に迅速に回復されない場合、プロセッサ装置は実行パイプラインをストール〔停止〕することを強いられる可能性がある。
【0004】
RMT回復の既存の技法は、一般に、回復プロセスが開始される時点に従って分類されうる。「遅延回復〔レイジー・リカバリー〕(lazy recovery)」として知られるアプローチの1つでは、ターゲット命令がリオーダー・バッファ(ROB)(レジスタの名前変更後にプログラム順でインフライト命令の状態を追跡する待ち行列)内で最も古いコミットされていない命令になるまで、回復プロセスは開始されない。ひとたびターゲット命令がROB内で最も古いコミットされていない命令となったら、コミットされたマッピングテーブル(committed mapping table、CMT)の内容をRMTにコピーするだけで、RMTが回復されうる。ただし、遅延回復は、実装するのは簡単だが、フラッシュが開始された時点で、より古いコミットされていない命令が多数存在する状況では、プロセッサのパフォーマンスが著しく劣化させる結果となりうる。
【0005】
「即時回復(immediate recovery)」として知られる別のアプローチは、フラッシュが開始されるとすぐに回復プロセスを開始することに関わる。一部の即時回復機構は、RMTスナップショットを利用することがある。RMTスナップショットは、ブランチ命令ごとに作成され、対応するブランチ命令が誤って予測されたと判断された場合にRMTを復元するために使用されうる。RMTスナップショットは、単独で使用されても、あるいはROBの「ウォーキング(walking)」との関連で(つまり、ターゲット命令についてのエントリーからRMTのスナップショットがとられた時点までの間のROB内の諸エントリーに順次アクセスし、対応する各命令によってRMTに加えられた変更を元に戻していく)使用されてもよい。他の即時回復技法は、CMTの内容を出発点として使用し、対応する各命令によって行われた変更を元に戻しながら、最も古いコミットされていない命令からターゲット命令に向かってROBをウォーキングすることに関わってもよい。さらに別の即時回復技法は、RMTの内容を出発点として使用し、変更を元に戻しながら、最も若いコミットされていない命令からターゲット命令に向かってROBをウォーキングすることに関わってもよい。一般的に、これらの各アプローチの下では、即時回復機構のパフォーマンスは、必要とされるスナップショットの数および/またはRMTの以前のマッピング状態を復元するためにウォーキングされる必要がある命令の数に依存しうる。
【発明の概要】
【発明が解決しようとする課題】
【0006】
よって、パイプライン・フラッシュ後にRMTをより効率的に復元する機構が望ましい。
【課題を解決するための手段】
【0007】
本願に開示される例示的な実施形態は、スライスされたリオーダー・バッファ(sliced reorder buffer、SROB)の並列ウォークを使用してフラッシュ回復を実行することを含む。これに関して、ある例示的実施形態では、プロセッサ装置は、名前変更マッピング・テーブル(RMT)を提供するレジスタ・マッピング回路を含む。RMTは、複数のRMTエントリーを含み、そのそれぞれが論理レジスタ番号(logical register number、LRN)から物理レジスタ番号(physical register number、PRN)へのマッピングを表す。レジスタ・マッピング回路は、複数のSROBスライスを含むSROBも提供する。各SROBスライスはそれぞれのLRNに対応し、複数のSROBスライス・エントリーを含む。各SROBスライスは、該SROBスライスがそのSROBスライスに対応するLRNに書き込むコミットされていない命令のみを追跡し、それらの命令をそれら互いの間でのみプログラム順に維持する点を除いて、従来のリオーダー・バッファ(ROB)と機能的に同様である。例示的な動作では、レジスタ・マッピング回路は、プロセッサ装置の実行パイプラインにおいてLRNに書き込むコミットされていない命令を検出すると、そのLRNに対応するSROBスライス内の該コミットされていない命令についてSROBスライス・エントリーを割り当てる。その後、レジスタ・マッピング回路が実行パイプライン内のターゲット命令からのパイプライン・フラッシュの指示を受領すると、レジスタ・マッピング回路は、SROBのSROBスライスの並列ウォークに基づいて、RMTの前記複数のRMTエントリーをそれらの以前のマッピング状態に復元する。SROBスライスのウォークは並列に実行され、各SROBスライスは従来のROBよりも少ない命令を含む可能性が高いため、フラッシュ回復は従来のアプローチよりも効率的に達成される可能性がある。
【0008】
いくつかの実施形態では、各SROBスライス内のSROBスライス・エントリーの数は、レジスタ・マッピング回路によって提供されるROB内のROBエントリーの数と同じサイズであってもよく、あるいは、ROB内のROBエントリーの数よりも小さくてもよい。後者の場合、レジスタ・マッピング回路がコミットされていない命令にSROBスライス・エントリーを割り当てる必要があるが、適切なSROBスライス内で利用可能なSROBスライス・エントリーがない場合、いくつかの実施形態のレジスタ・マッピング回路は実行パイプラインのストールを開始し、SROBスライス・エントリーがSROBスライス内で利用可能になるまでストールさせることがある。いくつかの実施形態は、実行パイプラインのストールを開始する代わりに、レジスタ・マッピング回路は、コミットされていない命令について最も古いSROBスライス・エントリーを割り当ててもよい。その後、レジスタ・マッピング回路が、最も古いSROBスライス・エントリーの上書きされた内容がフラッシュ回復のために必要であると判断した場合、レジスタ・マッピング回路はROBのウォークを実行しうる。同様に、いくつかの実施形態は、最も古いSROBスライス・エントリーが、コミットされていない命令のために割り当てられる前に放逐されうる部分シリアルROB(partially serial ROB、PSROB)を提供してもよい。そのような実施形態では、レジスタ・マッピング回路が、放逐された最も古いSROBスライス・エントリーの上書きされた内容がフラッシュ回復のために必要であると判断した場合、レジスタ・マッピング回路はPSROBのウォークを実行しうる。
【0009】
別の例示的実施形態では、プロセッサ装置内のレジスタ・マッピング回路が提供される。レジスタ・マッピング回路は、複数のLRNのうちのあるLRNの、複数のPRNのうちのあるPRNへのマッピングをそれぞれ表す複数のRMTエントリーを含むRMTを含む。レジスタ・マッピング回路は、さらに、複数のSROBスライスに細分されたSROBを含み、各SROBスライスは、前記複数のLRNのうちそれぞれのLRNにそれぞれ対応し、それぞれ複数のSROBスライス・エントリーを含む。レジスタ・マッピング回路は、プロセッサ装置の実行パイプライン内で、前記複数のLRNのうちの宛先LRNへの書き込み命令を含むコミットされていない命令を検出するように構成される。レジスタ・マッピング回路は、さらに、SROBの前記複数のSROBスライスのうち、宛先LRNに対応するSROBスライスの複数のSROBスライス・エントリーのうちのあるSROBスライス・エントリーを、前記コミットされていない命令に割り当てるように構成されている。レジスタ・マッピング回路は、実行パイプライン内のターゲット命令からのパイプライン・フラッシュの指示を受け取るようにも構成されている。レジスタ・マッピング回路は、さらに、パイプライン・フラッシュの前記指示を受け取ることに応答して、前記複数のRMTエントリーのLRNに対応する前記複数のSROBスライスの並列ウォークに基づいて、前記複数のRMTエントリーを対応する複数の以前のマッピング状態に復元するように構成されている。
【0010】
別の例示的実施形態では、SROBの並列ウォークを使用してフラッシュ回復を実行する方法が提供される。この方法は、プロセッサ装置のレジスタ・マッピング回路によって、プロセッサ装置の実行パイプライン内のコミットされていない命令を検出することを含み、該コミットされていない命令は、複数のLRNのうち宛先LRNへの書き込み命令を含む。この方法は、さらに、プロセッサ装置のSROBの複数のSROBスライスのうち、前記宛先LRNに対応するSROBスライスの複数のSROBスライス・エントリーのうちのあるSROBスライス・エントリーを前記コミットされていない命令に割り当てることを含み、前記複数のSROBスライスの各SROBスライスは、前記複数のLRNのうちのそれぞれのLRNに対応する。この方法は、実行パイプライン内のターゲット命令からのパイプライン・フラッシュの指示を受領することも含む。この方法はさらに、パイプライン・フラッシュの前記指示を受領することに応答して、複数のRMTエントリーのLRNに対応する前記複数のSROBスライスの並列ウォークに基づいて、RMTの複数のRMTエントリーを対応する複数の以前のマッピング状態に復元することを含む。
【0011】
別の例示的実施形態では、非一時的なコンピュータ読み取り可能な媒体が提供される。非一時的なコンピュータ読み取り可能な媒体は、プロセッサ装置によって実行されると、プロセッサ装置の実行パイプライン内のコミットされていない命令をプロセッサ装置に検出させるコンピュータ実行可能な命令を記憶している。該コミットされていない命令は、複数のLRNのうちの宛先LRNへの書き込み命令を含む。コンピュータ実行可能な命令はさらに、プロセッサ装置のSROBの複数のSROBスライスのうち、宛先LRNに対応するSROBスライスの複数のSROBスライス・エントリーのうちのあるSROBエントリーを、前記コミットされていない命令に割り当てることを、プロセッサ装置に実行させる。ここで、前記複数のSROBスライスの各SROBスライスは前記複数のLRNのうちのそれぞれのLRNに対応する。また、コンピュータ実行可能命令は、プロセッサ装置に、実行パイプライン内のターゲット命令からのパイプライン・フラッシュの指示を受領させる。コンピュータ実行可能命令は、さらに、プロセッサ装置に、パイプライン・フラッシュの前記指示を受領することに応答して、複数のRMTエントリーのLRNに対応する前記複数のSROBスライスの並列ウォークに基づいて、RMTの複数のRMTエントリーを対応する複数の以前のマッピング状態に復元させる。
【0012】
当業者は、添付の図面との関連で、好ましい実施形態に関する以下の詳細な説明を読んだ後では、本開示の範囲を理解し、その追加的な実施形態を認識するであろう。
【図面の簡単な説明】
【0013】
本明細書に組み込まれ、その一部をなす添付の図面は、本開示のいくつかの実施形態を示しており、記述とともに本開示の原理を説明するはたらきをする。
【0014】
【
図1】スライスされたリオーダー・バッファ(SROB)の並列ウォークを使用してフラッシュ回復を実行するように構成された、例示的なプロセッサ・ベースの装置を示すブロック図である。
【0015】
【
図2】いくつかの実施形態による、
図1のリオーダー・バッファおよびSROBの例示的な内容を示す図である。
【0016】
【
図3】いくつかの実施形態による、
図1のSROBの並列ウォークを使用してフラッシュ回復を実行するための、
図1のレジスタ・マッピング回路の例示的な動作を示すフローチャートである。
【0017】
【
図4】いくつかの実施形態による、新しいSROBスライス・エントリーを割り当てるための、
図1のレジスタ・マッピング回路の例示的な動作を示すフローチャートである。
【0018】
【
図5】いくつかの実施形態による、より古いSROBスライス・エントリーを上書きする諸実施形態における、新しいSROBスライス・エントリーを割り当てるための、
図1のレジスタ・マッピング回路の例示的な動作を示すフローチャートである。
【0019】
【
図6】いくつかの実施形態による、古いエントリーを
図1の部分シリアルリオーダー・バッファ(PSROB)に放逐する実施形態における、新しいSROBスライス・エントリーを割り当てるための、
図1のレジスタ・マッピング回路の例示的な動作を示すフローチャートである。
【0020】
【
図7】いくつかの実施例による、SROBの並列ウォークを使用してフラッシュ回復を実行するように構成された、
図1のプロセッサ・ベースの装置などの、例示的なプロセッサ・ベースの装置のブロック図である。
【発明を実施するための形態】
【0021】
本稿で開示される例示的実施形態は、スライスされたリオーダー・バッファ(SROB)の並列ウォークを使用してフラッシュ回復を実行することを含む。
これに関し、ある例示的実施形態では、プロセッサ装置は、名前変更マッピング・テーブル(RMT)を提供するレジスタ・マッピング回路を含む。RMTは、複数のRMTエントリーを含み、RMTエントリーのそれぞれは論理レジスタ番号(LRN)から物理レジスタ番号(PRN)へのマッピングを表す。レジスタ・マッピング回路は、複数のSROBスライスを含むSROBも提供する。各SROBスライスはそれぞれのLRNに対応し、複数のSROBスライス・エントリーを含む。各SROBスライスは、そのSROBスライスに対応するLRNに書き込むコミットされていない命令のみを追跡し、それらの命令をそれら互いの間でのみプログラム順に維持する点を除いて、従来のリオーダー・バッファ(ROB)と機能的に同様である。例示的な動作では、レジスタ・マッピング回路は、プロセッサ装置の実行パイプラインにおけるLRNに書き込むコミットされていない命令を検出すると、LRNに対応するSROBスライス内のコミットされていない命令のためにSROBスライス・エントリーを割り当てる。その後、レジスタ・マッピング回路が実行パイプライン内のターゲット命令からのパイプライン・フラッシュの指示を受領すると、レジスタ・マッピング回路は、SROBのSROBスライスの並列ウォークに基づいて、RMTの複数のRMTエントリーを以前のマッピング状態に復元する。SROBスライスのウォークは並列に実行され、各SROBスライスは従来のROBよりも少ない命令を含む可能性が高いため、フラッシュ回復は従来のアプローチよりも効率的に達成される可能性がある。
【0022】
いくつかの実施形態では、各SROBスライス内のSROBスライス・エントリーの数は、レジスタ・マッピング回路によって提供されるROB内のROBエントリーの数と同じサイズであってもよく、あるいはROB内のROBエントリーの数よりも小さくてもよい。後者の場合、レジスタ・マッピング回路がコミットされていない命令にSROBスライス・エントリーを割り当てる必要があるが、適切なSROBスライス内で利用可能なSROBスライス・エントリーがない場合、いくつかの実施形態におけるレジスタ・マッピング回路は実行パイプラインのストールを開始し、SROBスライス内でSROBスライス・エントリーが利用可能になるまでストールさせてもよい。いくつかの実施形態は、実行パイプラインのストールを開始する代わりに、レジスタ・マッピング回路が、コミットされていない命令のために、最も古いSROBスライス・エントリーを割り当てうるとしてもよい。その後、レジスタ・マッピング回路が、最も古いSROBスライス・エントリーの上書きされた内容がフラッシュ回復のために必要であると判断した場合、レジスタ・マッピング回路はROBのウォークを実行してもよい。同様に、いくつかの実施形態は、最も古いSROBスライス・エントリーがコミットされていない命令のために割り当てられる前に放逐されうる部分シリアルROB(PSROB)を提供してもよい。そのような実施形態では、レジスタ・マッピング回路が、放逐された最も古いSROBスライス・エントリーの上書きされた内容がフラッシュ回復のために必要であると判断した場合、レジスタ・マッピング回路はPSROBのウォークを実行してもよい。
【0023】
これに関し、
図1は、実行可能命令を処理するためのプロセッサ装置102を提供する、例示的なプロセッサ・ベースの装置100を示している。いくつかの実施形態におけるプロセッサ装置102は、プロセッサ・ベースの装置100の複数のプロセッサ装置のうちの一つであってもよい。
図1のプロセッサ装置102は、コンピュータ実行可能命令を含む命令ストリーム106の実行を実行するように構成された回路を含む実行パイプライン104を含む。
図1の例では、実行パイプライン104は、命令メモリ110から実行可能命令の命令ストリーム106をフェッチするように構成されたフェッチ回路108を含む。命令メモリ110は、非限定的な例として、プロセッサ・ベースの装置100のシステムメモリ(図示せず)内に、またはその一部として提供されてもよい。フェッチ回路108のレイテンシーを低減するために、プロセッサ装置102内に命令キャッシュ112が提供されて、命令メモリ110からフェッチされた命令をキャッシュしてもよい。
図1の例のフェッチ回路108は、命令が実行されるために実行回路(「実行回路」)114に到達する前に前処理されるよう、命令を一つまたは複数の命令パイプラインI
0~I
Nに提供するように構成される。実行回路114におけるフェッチされた命令の実行前に、スループットを向上させるために、命令パイプラインI
0~I
Nは、フェッチされた命令を同時並行して処理する、実行パイプライン104の異なる処理回路(または「ステージ」)を横断して提供される。
【0024】
図1の実行パイプライン104は、さらに、フェッチ回路108によってフェッチされた命令をデコードして、デコードされた命令にし、必要な命令タイプとアクションを決定し、さらに、デコードされた命令がどの命令パイプラインI
0~I
Nに入れられるかを決定するように構成されたデコード回路116を含む。次いで、デコードされた命令は、命令パイプラインI
0~I
Nのうちの一つまたは複数に入れられ、次に名前変更回路118に提供される。名前変更回路118は、命令の並列処理または順序外処理を妨げる可能性のあるレジスタ依存関係を回避するために、デコードされた命令のうちのいずれかのレジスタ名が名前変更されるべきかどうかを決定する。
【0025】
名前変更回路118は、レジスタ・マッピング回路122によって提供される名前変更マップ・テーブル(RMT)120を呼び出して、デコードされた命令の論理ソース・レジスタ・オペランドおよび/または論理宛先レジスタオペランドを、物理レジスタファイル(PRF)126内の複数の物理レジスタ124(0)~124(P)(それぞれ複数の物理レジスタ番号(PRN)PRN0、PRN1、…PRNP)のうちの一つに対応する)のうちの一つに対応するよう名前変更するように構成される。PRF 126内の各物理レジスタ124(0)~124(P)は、デコードされた命令のソース・レジスタ・オペランドおよび/または宛先レジスタオペランドについてのデータを格納するように構成されている。RMT 120は、複数のRMTエントリー128(0)~128(L)を含み、そのそれぞれが複数の論理レジスタ番号(LRN)LRN0~LRNLのそれぞれに対応する。RMTエントリー128(0)~128(L)は、PRF 126内の複数の物理レジスタ124(0)~124(P)の物理レジスタへのアドレスポインタの形で情報を格納するように構成される。いくつかの実施形態では、RMTエントリー128(0)~128(L)は、それぞれのプログラム順識別子130(0)~130(L)にも関連付けられており、それぞれのプログラム順識別子は、RMTエントリー128(0)~128(L)によって表される論理レジスタから物理レジスタへのマッピングが作成される原因となった命令のプログラム順位置の指示を与える。フラッシュが発生した場合、プログラム順識別子130(0)~130(L)は、RMTエントリー128(0)~128(L)のどれが、ターゲット命令よりも古い投機的に実行された命令によって更新されており、よって以前のマッピング状態に復元されるべきかを判断するために使用されうる。
【0026】
図1の実行パイプライン104は、デコードされた命令のソース・レジスタ・オペランドとして示される論理レジスタ番号LRN
0~LRN
Lのうちの一つに対応する、RMTエントリー128(0)~128(L)のマッピングエントリーによって指名された、PRF 126内の物理レジスタ124(0)~124(P)のうちの一つにアクセスするように構成されたレジスタ・アクセス回路(「RACC回路」)132をも含む。RACC回路132は、実行回路114において以前に実行された命令によって生成されたPRF 126内の値を取得する。実行パイプライン104はさらに、デコードされた命令についてのすべてのソース・レジスタ・オペランドが利用可能になるまで、デコードされた命令を予約エントリー(図示せず)に格納するように構成されたスケジューラ回路(「SCHED回路」)134を提供する。さらに、実行パイプライン104には、実行された命令からの生成された値を、PRF 126、データ・キャッシュ・メモリ・システム(図示せず)、またはメイン・メモリ(図示せず)などのメモリに書き戻す(すなわち、コミットする)ための書き込み回路136が提供される。いくつかの実施形態では、実行パイプライン104の要素は、
図1に示されているものとは異なる構成または順序で提供されてもよいことを理解すべきである。たとえば、いくつかの実施形態によれば、レジスタ・アクセス回路132は、
図1に示されているようにスケジューラ回路134の前にあるのではなく、実行パイプライン104内で、スケジューラ回路134の後にあってもよい。
【0027】
図1の実行パイプライン104によって、分岐予測回路138も提供される。分岐予測回路138は、命令ストリーム106の命令制御フロー経路におけるどの経路が実行のために命令パイプラインI0~INにフェッチされるかを制御する、条件分岐命令などのフェッチされた条件付きフロー制御命令(図示せず)の条件の結果を投機的に予測するように構成される。正確な投機的予測方法では、フェッチされた条件付きフロー制御命令の条件は、実行パイプライン104が投機的にフェッチされた命令の処理を続行できる前に、実行回路114による実行において解決される必要はない。
【0028】
ただし、実行回路114において条件付きフロー制御命令が実行されるときに、条件付きフロー制御命令の条件が誤って予測されていると判断された場合、プログラム・フローの方向が予測どおりではなく、投機的にフェッチされた命令の処理を含まないため、実行パイプライン104における誤って予測された条件付きフロー命令(すなわち、ターゲット命令)に続く投機的にフェッチされた命令はフラッシュされる。フラッシュが(たとえば、分岐の誤予測の結果として)発生すると、レジスタ・マッピング回路122は、ターゲット命令の後に実行パイプライン104の命令パイプラインI0~INに入った命令によって変更された可能性のある以前のマッピング状態(すなわち、RMT 120の各RMTエントリー128(0)~128(L)についての論理レジスタから物理レジスタへのマッピング)を復元するように構成される。
【0029】
RMT 120の以前のマッピング状態の復元を容易にするために、レジスタ・マッピング回路122は、実行パイプライン104によって処理されているがまだコミットされていない「インフライト(in-flight)」命令(すなわち、「コミットされていない命令」)に割り当てられる複数のROBエントリー142(0)~142(R)を含むリオーダー・バッファ(ROB)140を提供する。ROBエントリー142(0)~142(R)は、コミットされていない命令にプログラム順で逐次的に割り当てられる。RMT 120による論理レジスタ番号LRN
0~LRN
Lのマッピング(すなわち「レジスタ・マッピング情報」)の、命令による変更に関する情報は、その命令に割り当てられた各ROBエントリー142(0)~142(R)に関連付けて格納される。コミットされていない命令についてRMT 120によって格納されたレジスタ・マッピング情報は、フラッシュに応答して回復を達成するために、従来の技術に従って使用されうる。
図1のレジスタ・マッピング回路122は、複数のマッピングエントリー146(0)~146(L)を提供するコミット・マップ・テーブル(committed map table、CMT)144も含み、コミットされた命令から生じる論理レジスタから物理レジスタへのマッピングが格納される。CMT 144は命令がコミットされるときにのみ更新され、結果として、フラッシュに応答して変更されることはない。
【0030】
前述のように、フラッシュ後にRMT 120を以前のマッピング状態に復元するための従来の技術(遅延回復および即時回復技法を含む)は、フラッシュ時に、より古いコミットされていない命令が多数含まれる状況では非効率的である可能性がある。よって、本願に開示される例示的実施形態は、スライスされたROB(SROB)148を提供する。SROB 148は、複数のSROBスライス(「スライス」)150(0)~150(L)に細分され、それぞれが、SROBスライス・エントリー152(0)~152(X)、154(0)~154(X)などの複数のSROBスライス・エントリーを含む。各SROBスライス150(0)~150(L)は、ROB 140と同様の仕方で機能するが、各SROBスライス150(0)~150(L)が複数のLRN
0~LRN
Lのそれぞれの1つに対応し、そのSROBスライス150(0)~150(L)に対応する宛先LRNに書き込むコミットされていない命令のみを追跡する点が異なる。たとえば、
図1の例におけるSROBスライス150(0)はLRN
0に対応し、よって、宛先LRN LRN
0への書き込み命令を含むコミットされていない命令を追跡する。SROBスライス・エントリー152(0)~152(X)、154(0)~154(X)は、それぞれのコミットされていない命令について、ROBエントリー142(0)~142(R)と同じデータを格納し、同じSROBスライス150(0)~150(L)内の他のSROBスライス・エントリーに関してプログラム順で逐次的に割り当てられる。
【0031】
例示的な動作では、レジスタ・マッピング回路122は、実行パイプライン104において宛先LRNに書き込むコミットされていない命令を検出すると、宛先LRNに対応するSROBスライス150(0)~150(L)において、該コミットされていない命令について、SROBスライス・エントリー152(0)~152(X)、154(0)~154(X)のうちの一つを割り当てる。その後、レジスタ・マッピング回路122が実行パイプライン104内のターゲット命令からパイプライン・フラッシュの指示を受領すると、レジスタ・マッピング回路122は、SROB 148のSROBスライス150(0)~150(L)の並列ウォークに基づいて、RMT 120の複数のRMTエントリー128(0)~128(L)を以前のマッピング状態に復元する。たとえば、レジスタ・マッピング回路122は、各SROBスライス150(0)~150(L)のウォークを並列に実行しうる。これは、フラッシュを引き起こしたターゲット命令よりも若いコミットされていない命令に対応するSROBスライス・エントリー152(0)~152(X)、154(0)~154(X)にアクセスし、各SROBスライス・エントリー152(0)~152(X)、154(0)~154(X)に格納されているデータを使用して、各SROBスライス150(0)~150(L)についてのLRNに対応するRMTエントリー128(0)~128(L)に対して前記コミットされていない命令によって行われた変更を元に戻すことによる。SROBスライス150(0)~150(L)のウォークが並列に実行され、各SROBスライス150(0)~150(L)はROB 140よりも少ない命令を含む可能性が高いため、フラッシュ回復は従来のアプローチよりも効率的に達成されうる。
【0032】
いくつかの実施形態では、各SROBスライス・エントリー152(0)~152(X)、154(0)~154(X)の数は、ROBエントリー142(0)~142(R)の数と同じであってもよい(すなわち、X=R)。そのような実施形態は、SROBスライス150(0)~150(L)が、ROB 140内のすべてのコミットされていない書き込み命令が、複数のLRN LRN0~LRNLのうちの同じ宛先LRNを対象とする状況を扱うのに十分な大きさであるため、向上したパフォーマンスを提供しうる。ただし、パフォーマンスの向上は、SROB 148を実装するために必要なプロセッサ資源の増加という代償を伴う。
【0033】
他の実施形態は、SROBスライス・エントリー152(0)~152(X)、154(0)~154(X)のそれぞれの数が、ROBエントリー142(0)~142(R)の数より少なくてもよいとしうる(すなわち、X<R)。そのような実施形態では、レジスタ・マッピング回路122は、SROBスライス・エントリー152(0)~152(X)、154(0)~154(X)のいずれも、新しいコミットされていない命令への割り当てのために利用可能でない状況について特別な扱いを提供する。いくつかの実施形態によると、SROBスライス・エントリー152(0)~152(X)、154(0)~154(X)のいずれも割り当てのために使用可能でない場合、レジスタ・マッピング回路122は、適切なSROBスライス150(0)~150(L)内のSROBスライス・エントリー152(0)~152(X)、154(0)~154(X)のうちの一つが割り当てのために利用可能になるまで、実行パイプライン104のストールを開始しうる。ひとたびストールが解決されると(つまり、SROBスライス・エントリー152(0)~152(X)、154(0)~154(X)のうちの一つが利用可能になったとき)、レジスタ・マッピング回路122は次に、適切なSROBスライス150(0)~150(L)内のSROBスライス・エントリー152(0)~152(X)、154(0)~154(X)のうちの一つを割り当てる。
【0034】
いくつかの実施形態では、SROBスライス・エントリー152(0)~152(X)、154(0)~154(X)のいずれも割り当てのために利用可能でないと判断することに応答して、レジスタ・マッピング回路122は、新しいコミットされていない命令のために、最も古いSROBスライス・エントリー152(0)~152(X)、154(0)~154(X)を上書きしてもよい。レジスタ・マッピング回路122が、後に、最も古いSROBスライス・エントリー152(0)~152(X)、154(0)~154(X)の上書きされた内容がフラッシュ回復のために必要であると判断した場合、レジスタ・マッピング回路122は、RMT 120のRMTエントリー128(0)~128(L)を以前のマッピング状態に復元するために、従来の仕方でROB 140のウォークを実行してもよい。ROB 140のウォークを実行することは、フラッシュ回復のための従来の機構と同じパフォーマンスペナルティを受ける可能性があるため、いくつかの実施形態におけるレジスタ・マッピング回路122は、複数のPSROBエントリー158(0)~158(P)を含む部分シリアルROB(PSROB)156を提供してもよい。そのような実施形態におけるPSROB 156は、ROB 140と同様の仕方で機能するが、新しいコミットされていない命令のために割り当てる空きSROBスライス・エントリー152(0)~152(X)、154(0)~154(X)がない場合、SROBスライス150(0)~150(L)から放逐されるSROBスライス・エントリー152(0)~152(X)、154(0)~154(X)を格納するためにのみPSROBエントリー158(0)~158(P)を割り当てる。レジスタ・マッピング回路122が、後に、最も古いSROBスライス・エントリー152(0)~152(X)、154(0)~154(X)の上書きされた内容がフラッシュ回復のために必要であると判断した場合、レジスタ・マッピング回路122は、PSROB 156のウォークを実行して、RMT 120のRMTエントリー128(0)~128(L)を以前のマッピング状態に復元することができる。
【0035】
いくつかの実施形態による、
図1のROB 140およびSROB 148の例示的な内容を説明するために、
図2が提供される。
図2では、
図1のレジスタ・マッピング回路122、ROB 140、およびSROB 148が示されている。ROB 140はROBエントリー142(0)~142(6)を含み、そのそれぞれがコミットされていない命令I
0~I
6に対応する。命令I
0~I
6は、宛先LRN LRN
0およびLRN
1に書き込む命令を含み、それは
図2の例では、それぞれ
図1のSROBスライス150(0)および150(1)に対応する。例示的な動作では、レジスタ・マッピング回路122は、コミットされていない命令I
0~I
6(たとえば、
図1の実行パイプライン104)を検出し、それぞれコミットされていない命令I
0~I
6のためにROBエントリー142(0)~142(6)を割り当てる。命令I
0、I
2、I
4、およびI
6について、レジスタ・マッピング回路122は、それぞれSROBスライス・エントリー152(0)、154(0)、152(1)、および154(1)をも割り当てる。
【0036】
命令I
0~I
6の実行中、ターゲット命令I
3は期待されたどおりに実行されない(たとえば、ターゲット命令I
3が誤って予測された分岐命令であると判断されたため、またはターゲット命令I
3が、メモリ位置の計算されたアドレスが無効でありうるか、アクセスできないロードまたはストア命令であるため)。パイプライン・フラッシュがトリガーされ、レジスタ・マッピング回路122はターゲット命令I
3からのパイプライン・フラッシュの指示200を受け取る。パイプライン・フラッシュにより、ターゲット命令I
3よりも若いすべての命令(すなわち、命令I
4~I
6)が実行パイプライン104からフラッシュされ、ターゲット命令I
3の実行が試みられたときのRMT 120の状態に対応する以前のマッピング状態に、
図1のRMT 120が復元されることが必要になる。
【0037】
RMT 120を復元するために従来の仕方でROB 140をウォークする代わりに、レジスタ・マッピング回路122はSROBスライス150(0)および150(1)の並列ウォークを実行して、フラッシュされた命令I
4~I
6のいずれかに対応するSROBスライス・エントリーを識別し、フラッシュされた命令I
4~I
6によってRMT 120に加えられたマッピング変更を元に戻す。
図2の例では、SROBスライス150(0)および150(1)の並列ウォークの結果、レジスタ・マッピング回路122は、ターゲット命令I
3よりも若く、RMT 120内のマッピングを修正したコミットされていない命令である命令I
4およびI
6に対応するものとして、SROBスライス・エントリー152(1)および154(1)を識別する。次に、レジスタ・マッピング回路122は、SROBスライス・エントリー152(1)および154(1)のデータを使用して、RMT 120におけるLRN
0およびLRN
1に対応するRMTエントリー(たとえば、
図1のRMTエントリー128(0)および128(1))を以前のマッピング状態に復元する。
【0038】
いくつかの例では、レジスタ・マッピング回路122は、RMTエントリー128(0)~128(L)のプログラム順識別子130(0)~130(L)を使用して、どのLRN LRN0~LRNLが以前のマッピング状態に復元される必要があるかを判断する。たとえば、レジスタ・マッピング回路122は、プログラム順識別子130(0)~130(L)に基づいて、RMTエントリー128(0)~128(L)のうちの一つのマッピング状態が、ターゲット命令I3よりも古いコミットされていない命令によって修正されたことを判断してもよい。その後、レジスタ・マッピング回路122は、その特定のRMTエントリーのLRNに対応するSROBスライス150(0)~150(L)のウォークを実行しないことによって、RMT 120の復元を最適化してもよい。
【0039】
図3は、いくつかの実施形態による、
図1のSROB 148の並列ウォークを使用してフラッシュ回復を実行するための、
図1のレジスタ・マッピング回路122の例示的な動作を示すフローチャート300を提供する。
図1および
図2の要素は、明確のために、
図3を説明する際に参照される。
図3では、動作は、プロセッサ装置102のレジスタ・マッピング回路122が、プロセッサ装置102の実行パイプライン104内で、
図2の命令I
0のようなコミットされていない命令を検出することで始まる。コミットされていない命令I
0は、複数のLRN LRN
0~LRN
Lのうち、宛先LRN LRN
0への書き込み命令を含む(ブロック302)。レジスタ・マッピング回路122は、プロセッサ装置102のSROB 148の複数のSROBスライス150(0)~150(L)のうち、宛先LRN LRN
0に対応するSROBスライス150(0)の複数のSROBスライス・エントリー152(0)~152(X)のうち、SROBスライス・エントリー152(0)を、コミットされていない命令I
0に割り当てる(ブロック304)。ここで、複数のSROBスライス150(0)~150(L)の各SROBスライスは、複数のLRN LRN
0~LRN
LのうちのそれぞれのLRNに対応する。いくつかの実施形態では、レジスタ・マッピング回路122はまた、ROB 140の複数のROBエントリー142(0)~142(R)をプロセッサ装置102の実行パイプライン104内の対応する複数のコミットされていない命令(
図2の命令I
0~I
6など)に割り当てる。ここで、複数のコミットされていない命令I
0~I
6は、コミットされていない命令I
0を含む(ブロック306)。
【0040】
次に、レジスタ・マッピング回路122は、実行パイプライン104内のターゲット命令I3からのパイプライン・フラッシュの指示200を受領する(ブロック308)。応答して、レジスタ・マッピング回路122は、複数のRMTエントリー128(0)~128(L)のLRNに対応する複数のSROBスライス150(0)~150(L)の並列ウォークに基づいて、RMT 120の複数のRMTエントリー128(0)~128(L)を対応する複数の以前のマッピング状態に復元する(ブロック310)。いくつかの実施形態では、レジスタ・マッピング回路122は、複数のRMTエントリー128(0)~128(L)の複数のプログラム順識別子130(0)~130(L)にさらに基づいて、複数のRMTエントリー128(0)~128(L)を対応する複数の以前のマッピング状態に復元してもよい(ブロック312)。
【0041】
いくつかの実施形態よる、新しいSROBスライス・エントリー152(0)~152(X)、154(0)~154(X)を割り当てるための
図1のレジスタ・マッピング回路122の例示的な動作を示すために、
図4はフローチャート400を提供する。明確のため、
図4を説明する際に
図1の要素が参照される。
図4では、
図1のSROB 148のSROBスライス・エントリー152(0)~152(X)、154(0)~154(X)の数が、
図1のROB 140のROBエントリー142(0)~142(R)の数よりも少ないとしている。
図4では、動作は、レジスタ・マッピング回路122が、SROBスライス(たとえば、SROBスライス150(0))の複数のSROBスライス・エントリー152(0)~152(X)のうち、あるSROBスライス・エントリーが割り当てのために利用可能かどうかを判断することで開始される(ブロック402)。そうであれば、レジスタ・マッピング回路122は、SROBスライス・エントリー152(0)などのSROBスライス・エントリーを割り当てる(ブロック404)。
【0042】
ただし、レジスタ・マッピング回路122が、判断ブロック402において、割り当てのために利用可能なSROBスライス・エントリーがないと判断した場合、レジスタ・マッピング回路122はプロセッサ装置102の実行パイプライン104のストールを開始する(ブロック406)。ひとたびストールが解決されると(つまり、SROBスライス・エントリー152(0)~152(X)のうちの一つが割り当てのために利用可能になることによって)、レジスタ・マッピング回路122はSROBスライス・エントリー152(0)のようなSROBスライス・エントリーを割り当てる(ブロック408)。
【0043】
図5は、古いエントリーを
図1のROB 140に放逐する実施形態において、新しいSROBスライス・エントリー152(0)~152(X)、154(0)~154(X)を割り当てるための、
図1のレジスタ・マッピング回路122の例示的な動作を示すフローチャート500を提供する。
図1の要素は、明確のために
図5を説明する際に参照される。
図5では、
図1のSROB 148のSROBスライス・エントリー152(0)~152(X)、154(0)~154(X)の数が、
図1のROB 140のROBエントリー142(0)~142(R)の数よりも少ないとされている。
図5の動作は、レジスタ・マッピング回路122が、SROBスライス(たとえば、SROBスライス150(0))の複数のSROBスライス・エントリー152(0)~152(X)のうちのあるSROBスライス・エントリーが割り当てのために利用可能かどうかを判断することで始まる(ブロック502)。そうであれば、レジスタ・マッピング回路122は、SROBスライス・エントリー152(0)のようなSROBスライス・エントリーを割り当てる(ブロック504)。
【0044】
ただし、レジスタ・マッピング回路122が、判断ブロック502において、割り当てのために利用可能なSROBスライス・エントリーがないと判断した場合、レジスタ・マッピング回路122は、SROBスライス・エントリー152(0)のような最も古いSROBスライス・エントリーを割り当てる(ブロック506)。その後、レジスタ・マッピング回路122は、フラッシュ回復を実行する過程で、最も古いSROBスライス・エントリー152(0)の上書きされた内容がフラッシュ回復のために必要かどうかを判断する(ブロック508)。たとえば、レジスタ・マッピング回路122は、SROBスライス150(0)の残りのSROBスライス・エントリー152(0)~152(X)のうち最も古いものが、プログラム順でターゲット命令に続く命令に対応すると判断する。最も古いSROBスライス・エントリー152(0)の上書きされた内容がフラッシュ回復のために必要であると判断された場合、レジスタ・マッピング回路は、ROB 140のウォークにさらに基づいて、複数のRMTエントリー128(0)~128(L)を対応する複数の以前のマッピング状態に復元する(ブロック510)。それ以外の場合は、ここに開示されている実施形態に記載されているように処理が続行される(ブロック512)。
【0045】
古いエントリーを
図1のPSROB 156に放逐する実施形態において、新しいSROBスライス・エントリー152(0)~152(X)、154(0)~154(X)を割り当てるための
図1のレジスタ・マッピング回路122の例示的な動作を説明するために、
図6はフローチャート600を示す。明確のため、
図6の説明では
図1の要素が参照される。
図6では、
図1のSROB 148のSROBスライス・エントリー152(0)~152(X)、154(0)~154(X)の数が、
図1のROB 140のROBエントリー142(0)~142(R)の数よりも少ないとしている。
図6では、動作は、レジスタ・マッピング回路122が、SROBスライス(たとえばSROBスライス150(0))の複数のSROBスライス・エントリー152(0)~152(X)のうち、あるSROBスライス・エントリーが割り当てのために利用可能かどうかを判断することで開始される(ブロック602)。そうであれば、レジスタ・マッピング回路122は、SROBスライス・エントリー152(0)のようなSROBスライス・エントリーを割り当てる(ブロック604)。
【0046】
ただし、レジスタ・マッピング回路122が、判断ブロック402において、割り当てのために利用可能なSROBスライス・エントリーがないと判断した場合、レジスタ・マッピング回路122は、SROBスライス150(0)の複数のSROBスライス・エントリー152(0)~152(X)のうち、SROBスライス・エントリー152(0)のような最も古いSROBスライス・エントリーをPSROB 156に放逐する(ブロック606)。次いで、レジスタ・マッピング回路122は、最も古いSROBスライス・エントリー152(0)を割り当てる(ブロック608)。レジスタ・マッピング回路122は、後に、フラッシュ回復を実行する過程で、放逐された最も古いSROBスライス・エントリー152(0)の上書きされた内容がフラッシュ回復のために必要かどうかを判断する(ブロック610)。そうである場合、レジスタ・マッピング回路は、PSROB 156のウォークにさらに基づいて、複数のRMTエントリー128(0)~128(L)を対応する複数の以前のマッピング状態に復元する(ブロック612)。そうでない場合は、ここに開示されている実施形態に記載されているように処理が続行される(ブロック614)。
【0047】
図7は、スタックパニック障害例外を使用して例外スタック管理を提供する、
図1のプロセッサ・ベースの装置100のような、例示的なプロセッサ・ベースの装置700のブロック図である。プロセッサ・ベースの装置700は、プリント回路基板(PCB)、サーバー、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、パーソナルデジタルアシスタント(PDA)、コンピューティングパッド、モバイル装置、またはその他の任意の装置などの電子ボードカードに含まれる回路であってもよく、たとえば、サーバーまたはユーザーのコンピュータを表してもよい。この例では、プロセッサ・ベースの装置700はプロセッサ702を含む。プロセッサ702は、マイクロプロセッサ、中央処理装置などの一つまたは複数の汎用処理回路を表し、
図1のプロセッサ装置102に対応してもよい。プロセッサ702は、ここで説明する動作およびステップを実行するための命令で処理ロジックを実行するように構成されている。この例では、プロセッサ702は、命令の一時的な高速アクセスメモリ記憶のための命令キャッシュ704と、命令処理回路710を含む。システムバス706を介してシステムメモリ708からなど、メモリからフェッチまたはプリフェッチされた命令は、命令キャッシュ704に格納される。命令処理回路710は、命令キャッシュ704にフェッチされた命令を処理し、その命令を実行するために処理するように構成される。
【0048】
プロセッサ702およびシステムメモリ708はシステムバス706に結合され、プロセッサ・ベースの装置700に含まれる周辺装置を相互結合することができる。よく知られているように、プロセッサ702はシステムバス706を介してアドレス、制御、およびデータ情報を交換することによって、これらの他の装置と通信する。たとえば、プロセッサ702は、周辺装置の例として、システムメモリ708内のメモリコントローラ712にバストランザクション要求を通信することができる。
図7には示されていないが、各システムバスが異なるファブリックを構成する複数システムバス706が提供されてもよい。この例では、メモリコントローラ712は、システムメモリ708内のメモリアレイ714にメモリアクセス要求を提供するように構成されている。メモリアレイ714は、データを格納するための記憶ビットセルのアレイから構成される。システムメモリ708は、非限定的な例として、リードオンリーメモリ(ROM)、フラッシュメモリ、同期DRAM(SDRAM)などのダイナミックランダムアクセスメモリ(DRAM)、およびスタティックメモリ(たとえば、フラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)など)であってもよい。
【0049】
他の装置がシステムバス706に接続されることもできる。
図7に示されるように、これらの装置は、システムメモリ708、一つまたは複数の入力装置716、一つまたは複数の出力装置718、モデム724、および一つまたは複数のディスプレイコントローラ720を例として含むことができる。入力装置716には、入力キー、スイッチ、音声プロセッサなどを含むがこれに限定されない任意のタイプの入力装置を含むことができ、出力装置718は、オーディオ、ビデオ、その他の視覚的インジケータなどを含むがこれに限定されない任意のタイプの出力装置を含むことができる。モデム724は、ネットワーク726との間でデータの交換を許容するように構成された任意の装置であることができる。ネットワーク726は、有線または無線ネットワーク、プライベートまたはパブリックネットワーク、ローカルエリアネットワーク(LAN)、無線ローカルエリアネットワーク(WLAN)、ワイドエリアネットワーク(WAN)、BLUETOOTH(商標)ネットワーク、およびインターネットを含むがこれに限定されない任意のタイプのネットワークであることができる。モデム724は、所望される任意のタイプの通信プロトコルをサポートするように構成できる。プロセッサ702は、システムバス706を介してディスプレイコントローラ720にアクセスし、一つまたは複数のディスプレイ722に送信される情報を制御するように構成されてもよい。ディスプレイ722は、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含むが、これらに限定されない任意のタイプのディスプレイを含むことができる。
【0050】
図7のプロセッサ・ベースの装置700は、命令に従って望まれる任意のアプリケーションのためにプロセッサ702によって実行される、リーチ・ベースの(reach-based)明示的なコンシューマ命名モデルでエンコードされうる一組の命令728を含むことができる。命令728は、非一時的なコンピュータ可読媒体730の例として、システムメモリ708、プロセッサ702、および/または命令キャッシュ704に格納されうる。命令728はまた、その実行中に、完全にまたは少なくとも部分的に、システムメモリ708内および/またはプロセッサ702内に存在することもできる。命令728は、ネットワーク726がコンピュータ可読媒体730を含むように、モデム724を介してネットワーク726を介してさらに送信または受信されうる。
【0051】
コンピュータ可読媒体730は、例示的な実施形態において単一の媒体であるように示されているが、「コンピュータ可読媒体」という用語は、前記一つまたは複数の組の命令728を格納する単一の媒体または複数の媒体(たとえば、集中型または分散型データベース、および/または関連するキャッシュとサーバー)を含むものと解釈されるべきである。「コンピュータ可読媒体」という用語は、また、処理装置に、本願に開示された実施形態の方法論のうちのいずれか一つまたは複数を実行させる、処理装置による実行のための一組の命令を格納、エンコード、または担持することができる媒体を含むものと解釈されるべきである。「コンピュータ可読媒体」という用語は、よって、固体メモリ、光学媒体および磁気媒体を含むが、これらに限定されない。
【0052】
ここに開示される実施形態は、さまざまなステップを含む。ここに開示される実施形態のステップは、ハードウェアコンポーネントによって形成されてもよく、あるいは機械実行可能な命令において具現されてもよく、その命令でプログラムされた汎用または特殊用途のプロセッサに前記ステップを実行させるために使用されてもよい。あるいはまた、前記ステップはハードウェアとソフトウェアのプロセスの組み合わせによって実行されてもよい。
【0053】
ここに開示された実施形態は、コンピュータ・プログラム・プロダクト、またはソフトウェアプロセスとして提供されてもよく、これは、命令を記憶している機械可読媒体(またはコンピュータ可読媒体)を含んでいてもよく、ここに開示される実施形態に従ってプロセスを実行するようにコンピュータシステム(または他の電子装置)をプログラムするために使用されてもよい。機械可読媒体は、機械(たとえばコンピュータ)によって可読な形で情報を記憶または伝送するための任意の機構を含む。たとえば、機械可読媒体は:機械可読記憶媒体(たとえば、ROM、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置など)などを含む。
【0054】
特に断りがない限り、前の議論から明らかなように、本稿を通して、「処理」、「コンピューティング」、「判断」、「表示」などの用語を利用した議論は、コンピュータシステムのレジスタ内の物理的(電子的)量として表されるデータおよびメモリを操作または変換して、コンピュータシステムのレジスタまたはメモリまたはその他のそのような情報記憶、伝送、または表示装置内の物理的量として同様に表される他のデータにする、コンピュータシステムまたは類似の電子計算装置の動作およびプロセスを指すことが理解される。
【0055】
本願に提示されたアルゴリズムおよび表示は、本来的にいかなる特定のコンピュータまたは他の装置とも関連していない。さまざまなシステムが、本願の教示によるプログラムとともに使用されてもよく、または必要とされる方法ステップを実行するために、より専門的な装置を構築するのに便利であることが判明する場合がある。多様なこれらのシステムのための必要な構造は、上記の説明から明白となるであろう。さらに、ここで説明する実施形態は、いかなる特定のプログラミング言語を参照しても記述されていない。ここで説明する実施形態の教示を実装するために、多様なプログラミング言語が使用されうることが理解されるであろう。
【0056】
当業者は、ここに開示された実施形態に関連して記述されたさまざまな例示的な論理ブロック、モジュール、回路、およびアルゴリズムが、電子ハードウェア、メモリまたは別のコンピュータ可読媒体に格納され、プロセッサまたは他の処理装置によって実行される命令、またはその両方の組み合わせとして実装されうることをさらに理解するであろう。ここに記載された分散アンテナシステムの構成要素は、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて使用されうる。ここで開示されるメモリは、任意のタイプおよびサイズのメモリでありえ、所望される任意のタイプの情報を格納するように構成されうる。この交換可能性を明確に示すために、さまざまな例示的コンポーネント、ブロック、モジュール、回路、およびステップが、その機能に関して一般的に上記で説明されている。そのような機能がどのように実装されるかは、特定のアプリケーション、設計の選択、および/または全体的なシステムに課される設計上の制約に依存する。当業者は、特定のアプリケーションごとにさまざまな仕方で、記述された機能を実装することができるが、そのような実装の決定は、本願の実施形態の範囲からの逸脱を引き起こすと解釈されるべきではない。
【0057】
ここに開示されている実施形態に関連して説明されているさまざまな例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはその他のプログラマブルロジック装置、離散ゲートまたはトランジスタロジック、離散ハードウェアコンポーネント、またはここに記載されている機能を実行するように設計されたそれらの任意の組み合わせで実装または実行されうる。さらに、コントローラはプロセッサであってもよい。プロセッサはマイクロプロセッサであってもよいが、代替では、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサは、コンピューティング装置(たとえば、DSPとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、DSPコアと組み合わせた一つまたは複数のマイクロプロセッサ、または他の任意のそのような構成)の組み合わせとして実装されてもよい。
【0058】
ここに開示されている実施形態は、ハードウェアおよびハードウェアに格納されている命令において具現されてもよく、たとえば、RAM、フラッシュメモリ、ROM、電気的にプログラム可能なROM(EPROM)、電気的に消去可能なプログラム可能なROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られているその他の任意の形態のコンピュータ可読媒体に存在してもよい。例示的な記憶媒体がプロセッサに結合され、プロセッサは該記憶媒体から情報を読み取り、該記憶媒体に情報を書き込むことができる。代替では、記憶媒体はプロセッサと一体であってもよい。プロセッサと記憶媒体はASICに存在してもよい。ASICはリモートステーションに存在してもよい。代替では、プロセッサと記憶媒体は、リモートステーション、ベースステーション、またはサーバーにおける離散的なコンポーネントとして存在してもよい。
【0059】
ここでの例示的な実施形態のいずれかに記載されている動作ステップは、例と議論を提供するために記述されていることにも留意されたい。記載されている動作は、例示されているシーケンス以外にも多数の異なるシーケンスで実行されうる。さらに、単一の動作ステップで記述されている動作が、実際にはいくつかの異なるステップで実行されてもよい。さらに、例示的実施形態で議論されている一つまたは複数の動作ステップが組み合わされてもよい。当業者は、情報および信号が多様な技術および技法のいずれかを使用して表現されうることも理解するであろう。たとえば、データ、命令、コマンド、情報、信号、ビット、シンボルおよびチップは、上記の説明全体を通して参照されうるが、電圧、電流、電磁波、磁場または粒子、光学場または粒子、またはそれらの任意の組み合わせによって表現されうる。
【0060】
そうでないことが明示的に述べられていない限り、ここに記載されているいかなる方法も、そのステップが特定の順序で実行されることを要求するものとして解釈されることは意図されていない。よって、ある方法請求項が、そのステップが従うべき順序を実際に記載していない場合、または、ステップが特定の順序に限定されることが請求項または説明に別段明示的に述べられていない場合、いかなる特定の順序も推論されることは意図されていない。
【0061】
本発明の精神または範囲から逸脱することなく、さまざまな修正および変更を加えることができることは、当業者には明らかであろう。本発明の精神および実質を組み込んだ開示された実施形態の修正、組み合わせ、サブコンビネーションおよび変形が当業者に思いつくことがありうるので、本発明は、添付の特許請求の範囲およびそれらの同等物の範囲内のすべてを含むと解釈されるべきである。
【国際調査報告】