(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-14
(45)【発行日】2023-12-22
(54)【発明の名称】アウトオブオーダ・プロセッサ内の1つまたは複数のサマリー・ビットを使用して拡張可能な依存関係行列
(51)【国際特許分類】
G06F 9/38 20180101AFI20231215BHJP
【FI】
G06F9/38 310F
G06F9/38 350A
(21)【出願番号】P 2020527796
(86)(22)【出願日】2018-11-09
(86)【国際出願番号】 IB2018058801
(87)【国際公開番号】W WO2019106462
(87)【国際公開日】2019-06-06
【審査請求日】2021-04-23
【審判番号】
【審判請求日】2023-02-27
(32)【優先日】2017-11-30
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-11-30
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】シルバーマン、ジョエル
(72)【発明者】
【氏名】シンハロイ、バララム
【合議体】
【審判長】吉田 美彦
【審判官】林 毅
【審判官】脇岡 剛
(56)【参考文献】
【文献】国際公開第2017/030692(WO,A1)
【文献】特開2016-224796(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F9/38
(57)【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
発行キュー内の命令間の依存関係を追跡することを含んでおり、前記追跡することは、前記発行キュー内の命令ごとに、
前記命令が、前記命令の前に前記発行キューに追加されたしきい値の数の命令の各々に依存するかどうかを識別することであって、前記命令と前記しきい値の数の命令の各々との間の依存関係が個別に追跡される、前記識別することと、
前記命令が、前記しきい値の数の命令の前記各々に含まれていない、前記命令の前に前記発行キューに追加された1つまたは複数の他の命令に依存するかどうかを識別することと
を含んでおり、
前記命令と前記他の命令の各々との間の依存関係は、前記命令と前記他の命令の
単一のグループ内のまたは複数のグループのうちの1つ内の少なくとも1つの命令との間の依存関係を識別することに基づいて、前記命令と
前記単一のグループまたは前記複数のグループのうちの前記1つとの間に依存関係が存在することを示す
単一のまたは複数のサマリー・ビットによって、前記
単一のグループまたは前記複数のグループとして追跡され、
前記他の命
令は、
そのすべて
が前記単一のグループに含
まれるか、
または、その各々
が前記複数のグループのうちグループの少なくとも1つに割り当てられ、
前記コンピュータ実装方法はさらに、
前記追跡することに少なくとも部分的に基づいて、前記発行キューから命令を発行することを含んでいる、
コンピュータ実装方法。
【請求項2】
前記単一のサマリー・ビットが、前記命令と前記他の命令の
前記単一のグループ内の少なくとも1つの命令との間に依存関係が存在することを示すように設定され、前記単一のサマリー・ビットが設定された後に、前記他の命令の
前記単一のグループ内の前記他の命令のすべてが前記発行キューから発行されたことを検出することに少なくとも部分的に基づいて、前記命令と前記他の命令の
前記単一のグループとの間に前記依存関係が存在しなくなったことを示すように、前記単一のサマリー・ビットがリセットされる、請求項
1に記載のコンピュータ実装方法。
【請求項3】
前記
複数のグループの各々の前記サマリー・ビットが、前記命令と前記
各々のグループ内の少なくとも1つの命令との間に依存関係が存在することを示すように設定され、前記サマリー・ビットが設定された後に、前記
各々のグループに割り当てられた前記命令のすべてが前記発行キューから発行されたことを検出することに少なくとも部分的に基づいて、前記命令と前記
各々のグループとの間に前記依存関係が存在しなくなったことを示すように、前記サマリー・ビットがリセットされる、請求項
1に記載のコンピュータ実装方法。
【請求項4】
前記命令と前記しきい値の数の命令の各々との間の依存関係が、前記しきい値の数の命令の各々に対して別々のビットを使用して追跡される、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記発行キューが先入れ先出し(FIFO)キューであり、前記発行キュー内の前記命令が、前記発行キューに追加された順序に基づいて順序付けられる、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記発行キュー内の前記命令が、アウトオブオーダ・プロセッサによって実行されている単一のスレッドから来る、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記発行キューがN個の命令を保持し、前記しきい値の数の命令がN/2個である、請求項1に記載のコンピュータ実装方法。
【請求項8】
前記しきい値の数の命令の前記各々内の前記命令が、マルチスレッド環境内の単一のスレッドに対応する前記発行キュー内の命令のすべてを含んでいる、請求項1に記載のコンピュータ実装方法。
【請求項9】
前記しきい値の数がプログラム可能である、請求項1に記載のコンピュータ実装方法。
【請求項10】
システムであって、
アウトオブオーダ・プロセッサの発行キュー内の依存関係行列と、
コンピュータ可読命令を格納しているメモリと、
前記コンピュータ可読命令を実行するための1つまたは複数のプロセッサと
を備えており、前記コンピュータ可読命令が、動作を実行するように前記1つまたは複数のプロセッサを制御し、前記動作は、
発行キュー内の命令間の依存関係を追跡することを含んでおり、前記追跡することは、前記発行キュー内の命令ごとに、
前記命令が、前記命令の前に前記発行キューに追加されたしきい値の数の命令の各々に依存するかどうかを識別することであって、前記命令と前記しきい値の数の命令の各々との間の依存関係が個別に追跡される、前記識別することと、
前記命令が、前記しきい値の数の命令の前記各々に含まれていない、前記命令の前に前記発行キューに追加された1つまたは複数の他の命令に依存するかどうかを識別することと
を含んでおり、
前記命令と前記他の命令の各々との間の依存関係は、前記命令と前記他の命令の
単一のグループ内のまたは複数のグループのうちの1つ内の少なくとも1つの命令との間の依存関係を識別することに基づいて、前記命令と
前記単一のグループまたは前記複数のグループのうちの前記1つとの間に依存関係が存在することを示す
単一のまたは複数のサマリー・ビットによって、前記
単一のグループまたは前記複数のグループとして追跡され、
前記他の命
令は、
そのすべて
が前記単一のグループに含
まれるか、
または、その各々
が前記複数のグループのうちグループの少なくとも1つに割り当てられ、
前記動作はさらに、
前記追跡することに少なくとも部分的に基づいて、前記発行キューから命令を発行することを含んでいる、
システム。
【請求項11】
前記単一のサマリー・ビットが、前記命令と前記他の命令の
前記単一のグループ内の少なくとも1つの命令との間に依存関係が存在することを示すように設定され、前記単一のサマリー・ビットが設定された後に、前記他の命令の
前記単一のグループ内の前記他の命令のすべてが前記発行キューから発行されたことを検出することに少なくとも部分的に基づいて、前記命令と前記他の命令の
前記単一のグループとの間に前記依存関係が存在しなくなったことを示すように、前記単一のサマリー・ビットがリセットされる、請求項1
0に記載のシステム。
【請求項12】
前記
複数のグループの各々の前記サマリー・ビットが、前記命令と前記
各々のグループ内の少なくとも1つの命令との間に依存関係が存在することを示すように設定され、前記サマリー・ビットが設定された後に、前記
各々のグループに割り当てられた前記命令のすべてが前記発行キューから発行されたことを検出することに少なくとも部分的に基づいて、前記命令と前記
各々のグループとの間に前記依存関係が存在しなくなったことを示すように、前記サマリー・ビットがリセットされる、請求項1
0に記載のシステム。
【請求項13】
前記命令と前記しきい値の数の命令の各々との間の依存関係が、前記しきい値の数の命令の各々に対して別々のビットを使用して追跡される、請求項1
0に記載のシステム。
【請求項14】
前記発行キューが先入れ先出し(FIFO)キューであり、前記発行キュー内の前記命令が、前記発行キューに追加された順序に基づいて順序付けられる、請求項1
0に記載のシステム。
【請求項15】
前記発行キュー内の前記命令が、アウトオブオーダ・プロセッサによって実行されている単一のスレッドから来る、請求項1
0に記載のシステム。
【請求項16】
前記発行キューがN個の命令を保持し、前記しきい値の数の命令がN/2個である、請求項1
0に記載のシステム。
【請求項17】
前記しきい値の数の命令の前記各々内の前記命令が、マルチスレッド環境内の単一のスレッドに対応する前記発行キュー内の命令のすべてを含んでいる、請求項1
0に記載のシステム。
【請求項18】
前記しきい値の数がプログラム可能である、請求項1
0に記載のシステム。
【請求項19】
プロセッサに動作を実行させるためのコンピュータ・プログラムであって、前記動作は、
発行キュー内の命令間の依存関係を追跡することを含んでおり、前記追跡することは、前記発行キュー内の命令ごとに、
前記命令が、前記命令の前に前記発行キューに追加されたしきい値の数の命令の各々に依存するかどうかを識別することであって、前記命令と前記しきい値の数の命令の各々との間の依存関係が個別に追跡される、前記識別することと、
前記命令が、前記しきい値の数の命令の前記各々に含まれていない、前記命令の前に前記発行キューに追加された1つまたは複数の他の命令に依存するかどうかを識別することと
を含んでおり、
前記命令と前記他の命令の各々との間の依存関係は、前記命令と前記他の命令の
単一のグループ内のまたは複数のグループのうちの1つ内の少なくとも1つの命令との間の依存関係を識別することに基づいて、前記命令と
前記単一のグループまたは前記複数のグループのうちの前記1つとの間に依存関係が存在することを示す
単一のまたは複数のサマリー・ビットによって、前記
単一のグループまたは前記複数のグループとして追跡され、
前記他の命
令は、
そのすべて
が前記単一のグループに含
まれるか、
または、その各々
が前記複数のグループのうちグループの少なくとも1つに割り当てられ、
前記動作はさらに、
前記追跡することに少なくとも部分的に基づいて、前記発行キューから命令を発行することを含んでいる、
コンピュータ・プログラム。
【請求項20】
前記単一のサマリー・ビットが、前記命令と前記他の命令の
前記単一のグループ内の少なくとも1つの命令との間に依存関係が存在することを示すように設定され、
前記単一のサマリー・ビットが設定された後に、前記他の命令の
前記単一のグループ内の前記他の命令のすべてが前記発行キューから発行されたことを検出することに少なくとも部分的に基づいて、前記命令と前記他の命令の
前記単一のグループとの間に前記依存関係が存在しなくなったことを示すように、前記単一のサマリー・ビットがリセットされる、
請求項
19に記載のコンピュータ・プログラム。
【請求項21】
前記
複数のグループの各々の前記サマリー・ビットが、前記命令と前記
各々のグループ内の少なくとも1つの命令との間に依存関係が存在することを示すように設定され、
前記サマリー・ビットが設定された後に、前記
各々のグループに割り当てられた前記命令のすべてが前記発行キューから発行されたことを検出することに少なくとも部分的に基づいて、前記命令と前記
各々のグループとの間に前記依存関係が存在しなくなったことを示すように、前記サマリー・ビットがリセットされる、
請求項
19に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、一般に、アウトオブオーダ(OoO:out-of-order)プロセッサに関し、特に、OoOプロセッサの発行キュー内の1つまたは複数のサマリー・ビットを使用して拡張可能な依存関係行列に関する。
【背景技術】
【0002】
OoOプロセッサでは、命令順序付けユニット(ISU:instructionsequencing unit)が、命令をさまざまな発行キューにディスパッチし、OoO実行のサポートにおいてレジスタ名を変更し、さまざまな発行キューから実行パイプラインに命令を発行し、実行された命令を完了し、例外条件を処理する。レジスタ名の変更は、通常、命令が各発行キューに配置される前に、ISU内のマッパー論理によって実行される。
【0003】
ISUは、命令間の依存関係を追跡するための依存関係行列を含んでいる1つまたは複数の発行キューを含む。依存関係行列は、通常、発行キュー内の命令ごとに1行および1列を含む。発行キュー内の命令の数が増え続けるにつれて、依存関係行列の各々によって消費される空間および電力の量が増大している。
【発明の概要】
【発明が解決しようとする課題】
【0004】
したがって、そのような増大することに対処する必要がある。
【課題を解決するための手段】
【0005】
本発明の実施形態は、アウトオブオーダ(OoO)プロセッサの発行キュー内の1つまたは複数のサマリー・ビットを使用して拡張可能な依存関係行列を実装するための方法、システム、およびコンピュータ・プログラム製品を含む。非限定的な例示的方法は、発行キュー内の命令間の依存関係を追跡することを含む。この追跡することは、発行キュー内の命令ごとに、命令が、この命令の前に発行キューに追加されたしきい値の数の命令の各々に依存するかどうかを識別することを含む。
【0006】
複数のサマリー・ビットを含んでいる1つの実施形態では、この追跡することは、命令が、しきい値の数の命令の各々に含まれていない、この命令の前に発行キューに追加された1つまたは複数の他の命令に依存するかどうかを識別することも含む。命令と他の命令の各々との間の依存関係は、命令と複数のグループのうちの1つ内の少なくとも1つの命令との間の依存関係を識別することに基づいて、命令と複数のグループのうちの1つとの間に依存関係が存在することを示すことによって、複数のグループとして追跡される。他の命令の各々は、複数のグループのうちの少なくとも1つに割り当てられる。命令は、追跡することに少なくとも部分的に基づいて、発行キューから発行される。
【0007】
単一のサマリー・ビットを含んでいるさらに別の実施形態では、命令としきい値の数の命令の各々との間の依存関係が、個別に追跡される。この追跡することは、発行キュー内の命令ごとに、命令が、しきい値の数の命令の各々に含まれていない、この命令の前に発行キューに追加された1つまたは複数の他の命令に依存するかどうかを識別することも含む。命令と他の命令との間の依存関係は、命令と他の命令のうちの少なくとも1つとの間の依存関係を識別することに基づいて、命令と他の命令の単一のグループとの間に依存関係が存在することを示すことによって、単一のグループとして追跡される。単一のグループは、個別に追跡されるしきい値の数の命令に含まれていない、発行キュー内のすべての命令を含む。命令は、追跡することに少なくとも部分的に基づいて、発行キューから発行される。
【0008】
その他の特徴および利点が、本発明の技術によって実現される。本発明のその他の実施形態および態様は、本明細書において詳細に説明され、請求される発明の一部と見なされる。本発明を利点および特徴と共によく理解するために、説明および図面を参照されたい。
【0009】
本明細書に記載された専有権の詳細は、本明細書の最後にある特許請求の範囲において具体的に指摘され、明確に請求される。本発明の各実施形態の前述およびその他の特徴と利点は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【0010】
【
図1】本発明の1つまたは複数の実施形態に従って、発行キュー内のサマリー・ビットを使用して拡張可能な依存関係行列を実装するための、アウトオブオーダ(OoO)プロセッサの命令順序付けユニット(ISU)を含んでいるシステムのブロック図である。
【
図2】本発明の1つまたは複数の実施形態に従う、OoOプロセッサのISU内の発行キューのブロック図である。
【
図3】本発明の1つまたは複数の実施形態に従って、サマリー・ビットを使用して拡張可能な依存関係行列を実装するための、OoOプロセッサのISU内の発行キューのブロック図である。
【
図4】本発明の1つまたは複数の実施形態に従う、拡張可能な依存関係行列の論理ビューのブロック図である。
【
図5】本発明の1つまたは複数の実施形態に従う、台形依存関係行列(trapezoidaldependency matrix)のブロック図である。
【
図6】本発明の1つまたは複数の実施形態に従う、垂直に圧縮された台形依存関係行列のブロック図である。
【
図7】本発明の1つまたは複数の実施形態に従う、水平に圧縮された台形依存関係行列のブロック図である。
【
図8】本発明の1つまたは複数の実施形態に従って実装され得る、拡張可能な依存関係行列のブロック図である。
【
図9】本発明の1つまたは複数の実施形態に従って、シングルスレッド(ST:single-thread)モードおよび同時マルチスレッド(SMT:simultaneous multi-threading)モードで動作する依存関係行列のブロック図である。
【
図10】本発明の1つまたは複数の実施形態に従って、STモードおよびSMTモードで動作する依存関係行列のブロック図である。
【
図11】本発明の1つまたは複数の実施形態に従って、OoOプロセッサ内のサマリー・ビットを使用して拡張可能な依存関係行列の一部または全部の態様を実装するための、コンピュータ・システムのブロック図である。
【発明を実施するための形態】
【0011】
本明細書において示される図は、実例である。本発明の思想から逸脱することなく、本明細書に記載された図または動作の多くの変形が存在することが可能である。例えば、動作は異なる順序で実行されることが可能であり、あるいは動作は追加、削除、または変更されることが可能である。また、「結合される」という用語およびその変形は、2つの要素間に通信経路が存在することを表しており、それらの要素間に要素/接続が介在しない要素間の直接的接続を意味していない。これらのすべての変形は、本明細書の一部であると見なされる。
【0012】
添付の図および開示された実施形態に関する以下の詳細な説明では、図に示されたさまざまな要素が、2桁または3桁の参照番号付きで提供されている。わずかな例外を除いて、各参照番号の左端の数字は、その要素が最初に示された図に対応している。
【0013】
前述したように、現在の発行キューに格納される命令の数は増え続けている。現在の発行キューは、命令の数の二乗に比例して増大する依存関係行列を含み、ある時点で、依存関係行列の拡大し続けるサイズが、タイミングに影響を与える可能性がある。本明細書に記載された本発明の1つまたは複数の実施形態は、アウトオブオーダ(OoO)プロセッサの命令順序付けユニット(ISU)の発行キュー内の縮小されたサイズの依存関係行列を提供する。サイズの縮小は、互いに近接した時間枠内で発行キューに追加されている命令間に依存関係が通常は存在するということの認識に基づく。本発明の1つまたは複数の実施形態に従って、発行キューに追加されている命令の近接した時間枠内にある命令に対する命令の依存関係が、個別に追跡される。本発明の1つまたは複数の実施形態に従って、発行キューに追加されている命令の近接した時間枠外にある命令に対する命令の依存関係が、サマリー・ビットを使用して単一のグループとして追跡される。
【0014】
本発明の1つまたは複数の実施形態に従って、64個の命令(N=64)を保持する発行キューを使用するシングルスレッド(ST)モードで実行されるプロセッサの場合、前の32(N/2)個の命令に対する命令の依存関係が、発行キュー内の特定性を使用して(例えば、正確な命令を識別して)追跡され得る。命令が、N/2個より前のいずれかの命令に依存することを示すために、サマリー・ビットが使用され得る。サマリー・ビットが設定された発行キューの依存関係行列内のエントリ(命令)は、命令が発行される準備ができたことを示す前に、最も古いN/2個のエントリが消去されるまで待つ必要がある。正確な追跡(前のN/2個)および不正確な追跡(N/2個より前のサマリー・ビット)のこの組み合わせは、発行キューを先入れ先出し(FIFO:first-in-first-out)キューとして実装することと併せて、依存関係行列を拡張可能にし、ストレージ空間を節約する方法で物理的に格納され得る台形として論理的に実装できようにする。加えて、発行キューをFIFOキューとして実装し、古さの配列(age array)を発行キューに含める必要をなくすことによって、追加のストレージ空間を節約する。本発明の1つまたは複数の実施形態に従って、プロセッサが同時マルチスレッド(SMT)モードで実行している場合、サマリー・ビットが利用されず、正確な追跡の量は、特定のスレッドに属する前のN/2-1個の命令をすべて追跡する現在の実装と同じままである。
【0015】
本発明の1つまたは複数の実施形態に従って、発行キューに追加されている命令の近接した時間枠外にある命令(すなわち、特定性を使用して追跡されていない命令)のグループが、1つまたは複数のサブグループに分割され、これらの各サブグループが、それ自身のサマリー・ビットを使用して追跡される。これらの実施形態では、命令のグループ内の命令に対する命令の依存関係を追跡するために、複数のサマリー・ビットが利用される。
【0016】
本発明の1つまたは複数の実施形態に従って、特定性を使用して追跡される前の命令の数は、選択可能/プログラム可能であり、前のN/2個の命令に限定されない。
【0017】
ここで
図1を参照すると、本発明の1つまたは複数の実施形態に従って、発行キュー内のサマリー・ビットを使用して拡張可能な依存関係行列を実装するための、アウトオブオーダ(OoO)プロセッサの命令順序付けユニット(ISU)を含んでいるシステムのブロック図が、一般的に示されている。
図1に示されているシステムは、ISUのマッパー110に入力するためのデコードされた命令を準備する設定ブロック108に入力するための命令をフェッチしてデコードする、命令フェッチ・ユニット/命令デコード・ユニット(IFU/IDU:instruction fetch unit/instruction decode unit)106を含んでいる。1つまたは複数の実施形態に従って、IFU/IDU106によって、スレッドから一度に6つの命令がフェッチされ、デコードされ得る。本発明の1つまたは複数の実施形態に従って、設定ブロック108に送信される6つの命令は、6つの非分岐命令、5つの非分岐命令および1つの分岐命令、または4つの非分岐命令および2つの分岐命令を含むことができる。1つまたは複数の実施形態に従って、設定ブロック108は、フェッチされた命令をISU内のそれらのブロックに送信する前に、発行キュー内のエントリ、完了テーブル、マッパー、およびレジスタ・ファイルなどの十分なリソースが存在することをチェックする。
【0018】
図1に示されているマッパー110は、プログラマの命令(例えば、論理レジスタ名)をプロセッサの物理リソース(例えば、物理レジスタ・アドレス)にマッピングする。
図1には、条件レジスタ(CR:condition register)マッパー、リンク/カウント(LNK/CNT:link/count)レジスタ・マッパー、整数例外レジスタ(XER:exception register)マッパー、汎用レジスタ(GPR:generalpurpose registers)およびベクトル-スカラ・レジスタ(VSR:vector-scalarregister)をマッピングするための統合マッパー(Uマッパー:UMapper)、GPRおよびVSRをマッピングするための設計済みマッパー(ARCHマッパー:architected mapper)、ならびに浮動小数点状態および制御レジスタ(FPSCR:floating point status and control register)マッパーを含む、さまざまなマッパー110が示されている。
【0019】
設定ブロック108からの出力が、現在のISU内のすべての命令を追跡するためのグローバル完了テーブル(GCT:global completion table)112にも入力される。設定ブロック108からの出力が、命令を発行キューにディスパッチするためのディスパッチ・ユニット114にも入力される。
図1に示されているISUの実施形態は、CR発行キュー(CR ISQ:CR issue queue)116を含んでおり、CR発行キュー116は、CRマッパーから命令を受信して追跡し、それらの命令を命令フェッチ・ユニット(IFU)124に発行(120)して、CR論理命令および移動命令を実行する。
図1には分岐発行キュー(分岐ISQ:branch issue queue)118も示されており、分岐発行キュー118は、分岐命令およびLNK/CNT物理アドレスをLNK/CNTマッパーから受信して追跡する。分岐ISQ118は、予測された分岐アドレスまたは方向あるいはその両方が正しくなかった場合、命令をIFU124に発行(122)して、命令フェッチをリダイレクトすることができる。
【0020】
ディスパッチ論理およびLNK/CNTマッパーからの名前が変更されたレジスタ、XERマッパー、UMapper(GPR/VSR)、ARCHマッパー(GPR/VSR)、ならびにFPSCRマッパーから出力された命令が、発行キュー102に入力される。
図1に示されているように、発行キュー102は、ディスパッチされた固定小数点命令(Fx:fixed point instructions)、読み込み命令(L:loadinstructions)、格納命令(S:store instructions)、およびベクトルおよびスカラ・ユニット(VSU:vector-and-scaler unit)命令を追跡する。
図1の実施形態に示されているように、発行キュー102は、2つの部分ISQ0 1020およびISQ1 1021に分割されており、各部分がN/2個の命令を保持する。プロセッサがSTモードで実行している場合、発行キュー102が、単一のスレッドのすべての命令(この例では、N個すべての命令)を処理するために、ISQ0 1020およびISQ1 1021の両方を含んでいる単一論理の発行キューとして使用され得る。
【0021】
プロセッサがSMTモードで実行している場合、ISQ0 1020が、第1のスレッドからのN/2個の命令を処理するために使用可能であり、ISQ1 1021が、第2のスレッドISQ1 1021からのN/2個の命令を処理するために使用される。
【0022】
図1に示されているように、発行キュー102は、実行ユニットの2つのグループ(1040、1041)に分割されている実行ユニット104に、命令を発行する。
図1に示されている実行ユニットの両方のグループ(1040、1041)は、完全固定小数点実行ユニット(full fixed point execution unit)(完全FX0、完全FX1)、読み込み実行ユニット(LU0、LU1)、簡易固定小数点(simple fixed point)、格納データ、および格納アドレス実行ユニット(簡易FX0/STD0/STA0、簡易FX1/STD1/STA1)、ならびに浮動小数点、ベクトル・マルチメディア実行、10進浮動小数点、および格納データ実行ユニット(FP/VMX/DFP/STD0、FP/VMX/DFP/STD1)を含んでいる。
図1に示されているように、プロセッサがSTモードで実行している場合、実行ユニットの第1のグループ1040が、ISQ0 1020から発行された命令を実行し、実行ユニットの第2のグループ1041が、ISQ1 1021から発行された命令を実行する。プロセッサがSTモードで実行している場合の代替の実施形態では、発行キュー102内のISQ0 1020およびISQ1 1021の両方から発行された命令が、実行ユニットの第1のグループ1040および実行ユニットの第2のグループ1041内の実行ユニット1040のいずれかに含まれる実行ユニットに発行され得る。
【0023】
1つまたは複数の実施形態に従って、プロセッサがSMTモードで実行している場合、実行ユニットの第1のグループ1040が、ISQ0 1020から発行された第1のスレッドの命令を実行し、実行ユニットの第2のグループ1041が、ISQ1 1021から発行された第2のスレッドの命令を実行する。
【0024】
本発明の実施形態が、さまざまな異なるサイズの発行キューおよびその他の要素に関して実装され得るため、
図1に示されている発行キュー102内のエントリの数およびその他の要素のサイズ(例えば、バス幅、キュー・サイズ)は、実際は例示的であるよう意図されている。本発明の1つまたは複数の実施形態に従って、サイズが選択可能であるか、またはプログラム可能である。
【0025】
ここで
図2を参照すると、本発明の1つまたは複数の実施形態に従って、発行キュー200のブロック図が一般的に示されている。
図2に示されている発行キュー200は、発行されるのを待っている命令を追跡するための行列、テーブル、およびベクトルを含んでいる。行列およびテーブルはそれぞれ、追跡されている命令ごとに対応する行を含んでおり、ベクトルは、追跡されている命令のエントリを含んでいる。発行キュー内の命令の数が増え続けるにつれて、行列、テーブル、およびベクトルの各々によって消費される空間および電力の量が増大している。本明細書に記載された本発明の実施形態は、古い命令に対する依存関係の追跡にサマリー・ビットを使用することによって、発行キュー200内の依存関係行列202のサイズを縮小するために使用され得る。加えて、受信された順序で命令を発行キュー200に格納することによって、古さの配列216を発行キュー200から除去することができる。
【0026】
発行キュー200は、実行ユニットによる実行を待っている命令を追跡する。命令が発行キュー200(例えば、CR ISQ116、分岐ISQ118、発行キュー102)にディスパッチされて割り当てられる。依存関係が満たされたとき、すなわち各命令が発行されて、それらに対応する結果が使用可能になったときに、命令を発行キュー200から発行する準備ができる。発行キュー200は、命令を実行ユニット(例えば、実行ユニット104)に発行する。命令を発行した後に、発行キュー200は、少なくとも命令が棄却点を通過するまで、命令の追跡を続行する。棄却点は、異なる命令では異なっており、命令が再発行される必要がなくなることが知られている点のことを指している(例えば、メモリ読み取り動作では、読み取られるデータに関してキャッシュがアクセスされた後に、棄却点が通過され得る)。命令が棄却点を通過した後に、その命令の割り当てを発行キューから解除することができ、新しい命令による再利用のために、発行キュー内のエントリが消去される。実行ユニットによる命令の実行が完了した後に、命令が終了する。
【0027】
図2に示されている発行キュー200は、発行キュー200内の命令間の依存関係を追跡するための依存関係行列202と、命令の実行が棄却点を通過したこと、および命令の割り当てを発行キュー200から解除できることを示すための完了テーブル204と、発行キューに追加する命令を受信するための命令ディスパッチ・ユニット206(例えば、
図1のディスパッチ・ユニット114)と、命令が依存するすべての命令が発行されたことを示すための結果使用可能ベクトル208と、有効かつ発行可能な命令を示すIVベクトル214と、依存関係行列の出力とIVベクトルの論理積を実行するAND論理210と、命令が依存するすべての命令からの結果が使用可能であり、命令が有効かつ発行可能であることを示すための準備完了ベクトル212と、2つ以上の命令の実行の準備ができたときに、より新しい命令の前により古い命令を選択できるように、命令が発行キューに入れられた順序を追跡するための古さの配列216と、選択された命令の再発行を防ぐため、または棄却後の再発行を許可するために、IV状態を更新するためのIVリセット制御218と、発行のために選択された命令に対応する読み取られるインデックスとして使用されるアドレス220と、命令を実行するために実行ユニットによって使用される命令のテキスト(例えば、オペコード、レジスタ・ファイルのアドレスへのポインタ、即値データ)を含んでいるデータ配列222とを含んでいる。
【0028】
発行キュー内で待っているN個の命令を追跡できる
図2の依存関係行列202に示されているように、位置「u」にある命令は、位置「v」および「w」にある命令に依存している。
図2に示されている依存関係行列202は、N個の行およびN個の列(発行キュー内の命令ごとに1つの行および列)を含んでいる。
図2の古さの配列216に示されているように、位置「j」、「k」、および「l」にある命令は、位置「i」にある命令より古い。
【0029】
ここで
図3を参照すると、本発明の1つまたは複数の実施形態に従って、サマリー・ビット部分360を使用して拡張可能な依存関係行列を実装するためのOoOのISU内の発行キュー300のブロック図が、一般的に示されている。
図3に示されている発行キュー300は、
図2を参照して上で説明された発行キュー200に類似しているが、命令がFIFOの順序で行列、テーブル、およびベクトルに挿入され、命令が受信された順序で行列、テーブル、およびベクトルに挿入されるため、
図2に示されている古さの配列216に関連する論理および回路が不要であるという点が異なる。
図2の古さの配列216の代わりに、
図3に示されている発行キュー300は、発行キュー200内の命令の相対位置に基づいて2つ以上の準備ができた命令から選択するための優先度選択論理324を含んでいる。したがって、依存関係行列302、完了テーブル304、ANDベクトル310、準備完了ベクトル312、アドレス320、およびデータ配列322は、命令ディスパッチ・ユニット206から受信された順序で、対応するエントリを含んでいる。加えて、古い命令に対する依存関係を追跡するために、依存関係行列302内のエントリごとにサマリー・ビット部分360が提供される。サマリー・ビット部分360は、1つまたは複数のサマリー・ビットを含むことができる。
【0030】
ここで
図4を参照すると、本発明の1つまたは複数の実施形態に従って、拡張可能な依存関係行列400の論理ビューのブロック図が一般的に示されている。
図4に示されている拡張可能な依存関係行列400は、N個の命令を保持し、特定性を使用して4つ(この例におけるしきい値)の他の命令に対する命令の依存関係を追跡する、発行キューを表している。拡張可能な依存関係行列400内のエントリは、FIFOの順序で挿入されるため、例えば行5内の命令は、行6内の命令の直前に発行キューに受信されている。
【0031】
本発明の1つまたは複数の実施形態に従って、拡張可能な依存関係行列400は、循環することができるため、例えば行N-1内の命令は、行0内の命令の直前に発行キューに受信されている。循環キューの循環が利用される場合、先頭ポインタおよび末尾ポインタを使用して最も古いエントリおよび最も新しいエントリを追跡することができ、先頭ポインタ(最も古いエントリ)が前進するときにサマリー・ビットが消去される。その結果、エントリの割り当てが解除されるときに先頭ポインタのみが前進するため(前進するには、対応する命令が発行され、それらの棄却点を通過している必要がある)、現在しきい値(例えば、4)より先頭に近いすべてのサマリー・ビットが消去される。
【0032】
1つまたは複数の実施形態では、循環行列を使用する代わりに、キューの位置の割り当てが解除されたときに、上方にシフトするための空間が使用可能になった場合、常に、命令が最上位の行に向かってキュー内でシフトされる。行列の内容は、上および左に同じ量だけシフトすることができる。この場合、行列が台形状であるため、
図4の空いている(斜線のない)ボックスのみが必要である。
【0033】
図4に示されているように、命令と、発行キュー内のこの命令の直前に挿入されている4つの命令との間の依存関係が、特定性を使用して追跡され、依存関係行列400の第1の部分(特定性部分404)で個別に識別され、一方、命令と、発行キュー内の他の命令のいずれかとの間の依存関係が、依存関係行列400のサマリー・ビット部分402を使用して追跡される。
【0034】
図4に示されている依存関係行列400の特定性部分404を使用して、例えば、行6内の命令が行5内の命令に依存しているかどうか、行6内の命令が行4内の命令に依存しているかどうか、行6内の命令が行3内の命令に依存しているかどうか、および行6内の命令が行2内の命令に依存しているかどうかを判定することができる。行6内の命令が行3内の命令に依存しており、行5、4、および2内の命令に依存していない(かつ、サマリー・ビットが設定されていない)場合、行6内の命令が発行される準備ができる前に、行3内の命令のみが発行される必要がある。依存関係行列400のサマリー・ビット部分402を使用して、行6内の命令が行0~1および行7~N-1内の命令のいずれかに依存しているかどうかを判定することができる。単一のサマリー・ビットは、行0~1および行7~N-1のいずれかに対する行6の依存関係を表すことができ、したがって、サマリー・ビットによって依存関係が識別された場合、行6内の命令が発行可能になる前に、行1および行7~N-1内の命令のすべてが発行されなければならない。本明細書において説明されているように、対応する命令の割り当てが解除されるときに、サマリー・ビットまたは特定性ビットが消去される。
【0035】
本発明の1つまたは複数の実施形態に従って、サマリー・ビット部分402またはその他のラッチは、行6内の命令に関して、命令が行0~1および行7~N-1内の命令のいずれかに依存している場合に設定され、命令6がディスパッチされたときに発行キュー内に存在していた行1および行7~N-1内の命令のすべてが発行され、それらの各棄却点を通過し、割り当て解除されている場合にリセットされる。同様に、対応するビットまたはその他のラッチは、特定性部分404内で、特定の前の命令に対する行6内の命令の依存関係を示すように設定され、命令が発行され、その棄却点を通過し、エントリが割り当て解除されている場合にリセットされる。行6内の命令の依存関係のすべてが満たされ(例えば、各命令が発行され)、その命令が必要とするリソースのすべてが使用可能になった後に、行6内の命令が発行される準備ができている。
【0036】
図4に示されているサマリー・ビット部分402は、命令と、この命令の直前に発行キューに挿入されたしきい値を超える数の命令のいずれかとの間の依存関係を追跡するために使用される、単一のサマリー・ビットを含むことができる。
図4に示されている本発明の実施形態では、しきい値が4であり、この命令の直前に発行キューに挿入された4つの命令以外の発行キュー内の命令が、単一のサマリー・ビットを使用して単一のグループとして追跡される。この単一のグループは、この命令およびこの命令の直前に発行キューに挿入された4つの命令(この例では、しきい値が4である)を除く、発行キュー内のすべての命令を含む。したがって、命令が単一のグループ内の命令のうちの1つに依存する場合、この命令は、依存関係が満たされる前に、単一のグループ内のすべての命令が発行される(かつ、棄却点を通過する)まで待たなければならない。その後、他のすべての依存関係満たされている場合に、命令が発行され得る。単一のグループ内のすべての命令が発行キューから発行されている(かつ、それらの命令の棄却点を通過している)場合にのみ、単一のサマリー・ビットがリセットされる。
【0037】
本発明の1つまたは複数の実施形態に従って、
図4に示されているサマリー・ビット部分402は、命令と、この命令の直前に発行キューに挿入されたしきい値を超える数の命令のいずれかとの間の依存関係を追跡するために使用される、複数のサマリー・ビットを含む。本発明の実施形態では、この命令の直前に発行キューに挿入されたしきい値を超える数の命令以外の発行キュー内の命令が、複数のサマリー・ビットを使用して複数のグループとして追跡される。この命令およびこの命令の直前に発行キューに挿入されたしきい値の数の命令以外の発行キュー内の他の命令の各々が、複数のグループのうちの少なくとも1つに含まれる。複数のグループの内容は、相互に排他的であるか、または重複することができる。複数のグループに対して複数のサマリー・ビットを使用することによって、特定性を使用して追跡されないすべての命令に単一のサマリー・ビットを使用することよりも、細かい粒度を実現できる。
【0038】
説明を簡単にするために簡略化された例を挙げると、N=16の場合、しきい値がN/2=8であり、命令が、行0~15を含んでいる発行キュー内の行15に挿入される。行15内の命令の直前に発行キューに挿入された8つの命令(すなわち、行14、13、12、11、10、9、8、および7内の命令)に対する行15内の命令のすべての依存関係が、特定性を使用して追跡される。したがって、行15内の命令が依存している発行キューの行14、13、12、11、10、9、8、および7内の命令のうちの1つまたは複数が、もしあれば、それを正確に決定することができる。行0、1、2、3、4、5、および6にある命令のグループ内の命令に対する依存関係を表す複数のサマリー・ビットが、本発明の実施形態例によって実装され得る。例えば、第1のグループは、発行キュー内の行3、4、5、および6内の命令を含むことができ、第2のグループは、発行キュー内の行0、1、および2内の命令を含むことができる。第1のグループ内の命令に対する行15内の命令の依存関係は、第1のサマリー・ビットを使用して追跡され、第2のグループ内の命令に対する行15内の命令の依存関係は、第2のサマリー・ビットを使用して追跡され得る。代替として、第1のグループは、発行キュー内の行3、4、5内の命令を含むことができ、第2のグループは、発行キュー内の行6および2にある命令を含むことができ、第3のグループは、発行キュー内の行0および1にある命令を含むことができる。第1のグループ内の命令に対する行15内の命令の依存関係は、第1のサマリー・ビットを使用して追跡され、第2のグループ内の命令に対する行15内の命令の依存関係は、第2のサマリー・ビットを使用して追跡され、第3のグループ内の命令に対する行15内の命令の依存関係は、第3のサマリー・ビットを使用して追跡され得る。別の代替では、例えば、発行キュー内の行0、1、2、3、4、5、および6内の命令を含んでいる第1のグループ、ならびに発行キュー内の行0、1、および2内の命令を含んでいる第2のグループなど、各グループは重複することができる。
【0039】
本発明の実施形態例によって命令の任意の数のグループおよび対応するサマリー・ビットが実装され得るため、前述の内容は例にすぎない。一般に、グループおよびサマリー・ビットの数が大きいほど、追跡するためのビット数に関するコストが高くなり、スループットに関するコストが低くなる。本発明の実施形態例は、実装の要件に合わせて、粒度を調整することができる。2つの極端な例としては、最も粗い粒度を提供する単一のサマリー・ビット、および最も細かい粒度を提供する命令ごとのサマリー・ビットが挙げられる。
【0040】
ここで
図5を参照すると、本発明の1つまたは複数の実施形態に従って、台形依存関係行列500のブロック図が一般的に示されている。
図5に示されているように、拡張可能な依存関係行列は、例えば
図4に示されている依存関係行列400の特定性部分404内のように、依存関係行列内に空いている空間をもたらす可能性がある。特定性部分508A、508B、508C、および508Dは、
図5に示されている台形依存関係行列500の不連続な部分に含まれている。
図5には、命令のすべての依存関係が満たされている(例えば、特定の命令のすべてが発行された)かどうかを示すために各命令に対応するエントリを含んでいる、準備完了ベクトルも示されている。
図5に示されている準備完了ベクトルは、準備完了状態ベクトル506Aおよび準備完了状態ベクトル506Bに分割されている。
図5は、命令が依存している前に発行された命令からの結果のすべてがこの命令によって使用可能になっているかどうかを示すために各命令に対応するエントリを含んでいる、使用可能ベクトルも示している。
図5に示されている使用可能ベクトルは、使用可能ベクトル502Aおよび使用可能ベクトル502Bに分割されている。
図5に示されていないビットの追加の列がサマリー・ビットを保持し、サマリー・ビットが設定された場合、追加の論理が、準備完了ベクトルが命令の準備ができたことを示すのを防ぐ。
【0041】
ここで
図6を参照すると、本発明の1つまたは複数の実施形態に従って、垂直に圧縮された台形依存関係行列600のブロック図が一般的に示されている。
図6に示されているように、
図5の台形依存関係行列500が垂直的な方法でマージされ、特定性部分508A、508B、508C、および508Dの間の空いている空間を除去する。垂直に圧縮された台形依存関係行列600は、空間の要求を減らすように、本発明の1つまたは複数の実施形態に従って拡張可能な依存関係行列を物理的に格納する1つの方法である。502Aに含まれた使用可能性情報は、508A内のビットによって特定性を使用して示された依存関係が満たされているかどうかを判定するために使用され、それに応じて、準備完了状態506A1が更新される。同時に、502Aに含まれた使用可能性情報は、508C内のビットによって特定性を使用して示された依存関係が満たされているかどうかを判定するために使用され、それに応じて、準備完了状態506B1が更新される。同様に、502B内の使用可能性情報は、準備完了状態506A2および506B2をそれぞれ更新できるように、508Bおよび508D内のビットによって示された依存関係が満たされているかどうかを判定するために使用される。すべての依存関係が満たされていることを示すには、準備完了状態(506A1および506A2または506B1および506B2)の両方の構成要素の対応する要素が、特定の依存関係が満たされていることを示さなければならない。
【0042】
ここで
図7を参照すると、本発明の1つまたは複数の実施形態に従って、水平に圧縮された台形依存関係行列700のブロック図が一般的に示されている。
図7に示されているように、
図5の台形依存関係行列500が水平的な方法でマージされ、特定性部分508A、508B、508C、および508Dの間の空いている空間を除去する。水平に圧縮された台形依存関係行列700は、空間の要求を減らすように、本発明の1つまたは複数の実施形態に従って拡張可能な依存関係行列を物理的に格納する1つの方法である。502A1に含まれた使用可能性情報は、508D内のビットによって特定性を使用して示された依存関係が満たされているかどうかを判定するために使用され、それと同時に、502B1に含まれた使用可能性情報は、508C内のビットによって特定性を使用して示された依存関係が満たされているかどうかを判定するために使用され、それに応じて、結合された結果を使用して準備完了状態ベクトル506Aが更新される。502A2に含まれた使用可能性情報は、508B内のビットによって特定性を使用して示された依存関係が満たされているかどうかを判定するために使用され、それと同時に、502B2に含まれた使用可能性情報は、508A内のビットによって特定性を使用して示された依存関係が満たされているかどうかを判定するために使用され、それに応じて、結合された結果を使用して準備完了状態ベクトル506Bが更新される。
【0043】
図6に示されている垂直に圧縮された台形依存関係行列600または
図7に示されている水平に圧縮された台形依存関係行列700のいずれかが、例えばシステム・ワークフローの期待される種類に基づく実装に対して、選択され得る。
【0044】
ここで
図8を参照すると、本発明の1つまたは複数の実施形態に従って、依存関係行列800のブロック図が一般的に示されている。
図8に示されているように、プロセッサがSMTモードで実行している場合、第1のスレッドが論理的依存関係行列802の部分8020を使用し、第2のスレッドが論理的依存関係行列802の部分8021を使用する。論理的依存関係行列802は、部分8020の内容を格納するための行列8040および部分8021の内容を格納するための行列8041を含んでいる物理的依存関係行列804として物理的に格納され得る。
【0045】
本明細書において説明されているように、OoOプロセッサがSTモードで実行している場合、発行キュー内の依存関係行列全体が、命令間の依存関係を追跡するために使用される。これは、OoOプロセッサが、通常は依存関係行列の半分のみが利用されるSMTモードで実行している場合とは対照的である。本明細書において説明されているように、本発明の実施形態に従って、発行キュー内の依存関係行列が、論理的に台形になるように再編成される。STモードでは、エントリは、前のN/2個のエントリに対する依存関係を直接追跡することができ、N/2個を超えるエントリに対しては、サマリー・ビットを介して集合的依存関係のみを追跡することができる。サマリー・ビットが設定されたエントリ(命令)は、最も古い(最大)N/2個のエントリが消去されるまで待つ必要がある。同じ概念が、特定性を使用してN/2個未満のエントリを追跡することに使用され得る。本発明の実施形態例は、プロセッサがSMTモードで実行していて、発行キューの各半分内のN/2個のエントリの完全な依存関係を(すなわち、特定性を使用して)追跡する場合にも使用され得る。プロセッサがSTモードで実行している場合、プロセッサはN個のエントリを追跡できるが、可視性が、より古い半分のエントリに制限される。そのような実施形態が
図9に示されており、
図9は、本発明の1つまたは複数の実施形態に従って、STモードおよびSMTモードで動作する依存関係行列900のブロック図を一般的に示している。
【0046】
ここで
図9を参照すると、
図9に示されている依存関係行列900は、前述したように、第1の半分の行列903および第2の半分の行列904を含んでおり、前のN/2個の命令に対するN個の命令の各々の正確な依存関係を追跡する。
図9の本発明の実施形態に示されているように、使用可能性情報のソースは、行0~N/2-1内の命令が発行された後に設定される使用可能ビット・ベクトル901A内、および行N/2~N-1内の命令が発行された後に設定される使用可能ビット・ベクトル901Bによって、維持される。使用可能性情報は、各行列上のN本のワイヤによって依存関係行列903および904に伝達される。行列903Aの示されている下側の三角形領域内で依存関係ビットが設定された第1の半分の行列903内の行に対応する命令が、使用可能性情報をビット・ベクトル901Aから直接受信する。示されている上側の三角形領域903B内で依存関係ビットが設定されたそのような命令が、マルチプレクサ902を介して使用可能性情報を受信する。マルチプレクサ902は、ビット・ベクトル901Aおよび901Bから選択することができ、STモードでは、マルチプレクサ902は、使用可能性情報をビット・ベクトル901Bから領域903Bにルーティングする。
【0047】
同様に、示されている下側の三角形領域904A内で依存関係ビットが設定された第2の半分の行列904の行に対応する命令が、使用可能性情報を使用可能ビット・ベクトル901Bから受信する。示されている上側の三角形領域904B内で依存関係ビットが設定されたそのような命令が、マルチプレクサ902内の第2のマルチプレクサから使用可能性情報を受信する。マルチプレクサ902は、ビット・ベクトル901Aおよび901Bから選択することができ、STモードでは、その情報を使用可能ビット・ベクトル901Aから領域904Bにルーティングする。マルチプレクサ902が前述したように動作して、依存関係行列の各行が、前のN/2個の行内の命令によって生成された結果の使用可能性に対応する情報を受信する。命令がFIFOの順序で発行キューに追加されるため、この情報は、キューに追加された前のN/2個の命令に対応する。
図9の右側は、SMTモードでの拡張可能な依存関係行列の実施形態例の動作を示している。この条件下で、マルチプレクサ902が、使用可能ビット・ベクトル901Aおよび901Bに含まれている使用可能性情報を、右上の三角形部分903Bおよび904Bにそれぞれ伝達する。
図9には、状態ベクトル905Aおよび905Bも示されている。
【0048】
したがって、依存関係情報が依存関係行列の行に含まれている特定のスレッドに対応する命令が、発行キューの同じ半分内の命令によって生成された結果に対応する使用可能性情報を受信し、この情報は、同じスレッドのすべての命令に対応する。したがって、
図9に示されている本発明の実施形態例は、SMTモードでは、特定のスレッドのすべての命令にわたって正確な依存関係の追跡を行い、STモードでは、前のN/2個の命令にわたって正確な依存関係の追跡を行い、さらに古い依存関係の不正確な追跡が、サマリー・ビットによって行われる。
【0049】
本明細書に記載された本発明の1つまたは複数の実施形態は、拡張可能な依存関係行列を提供し、N行×N例を含んでいる依存関係行列を必要とすることの代わりに、N行×M(例えば、M=N/2)列の依存関係行列が提供され、MはN未満である。加えて、命令をFIFOの順序で発行キューに挿入することによって、古さの配列によって使用される領域を省き、発行キューの性能を改善することができる。
【0050】
ここで
図10を参照すると、本発明の1つまたは複数の実施形態に従って、STモードおよびSMTモードで動作する依存関係行列1000のブロック図が一般的に示されている。
図10に示されている依存関係行列1003、1004は、
図9に示されている依存関係行列に類似しているが、行の並べ替えが異なっている。この図は、STモードおよびSMTモードでの望ましい動作を可能にする
図9に示された接続のトポロジであり、マルチプレクサ制御のモード間の単純な切り替えを含んでいる。接続のトポロジを変更しない
図9の行の並べ替えが可能である。接続のトポロジを変更しない
図9の行の多くの例示的な並べ替えのうちの1つが、
図10に示されている。
【0051】
ここで
図11を参照すると、本発明の1つまたは複数の実施形態に従って、OoOプロセッサ内のサマリー・ビットを使用して拡張可能な依存関係行列の一部または全部の態様を実装するためのコンピュータ・システム1100のブロック図が、一般的に示されている。本明細書に記載された処理は、ハードウェア、ソフトウェア(例えば、ファームウェア)、またはハードウェアとソフトウェアの組み合わせにおいて実装されてよい。実施形態例では、記載された方法は、少なくとも一部においてハードウェアに実装されてよく、モバイル・デバイス、パーソナル・コンピュータ、ワークステーション、マイクロコンピュータ、またはメインフレーム・コンピュータなどの、専用または汎用コンピュータ・システム1100のマイクロプロセッサの一部であってよい。
【0052】
実施形態例では、
図11に示されているように、コンピュータ・システム1100は、プロセッサ1105、メモリ・コントローラ1115に結合されたメモリ1112、および1つもしくは複数の入力デバイス1145、またはローカルI/Oコントローラ1135を介して通信によって結合された周辺機器などの出力デバイス1147、あるいはその組み合わせを含む。これらのデバイス1147および1145は、例えば、プリンタ、スキャナ、マイクロホンなどを含んでよい。従来のキーボード1150およびマウス1155は、I/Oコントローラ1135に結合されてよい。I/Oコントローラ1135は、例えば、1つまたは複数のバスあるいは従来技術において知られたその他の有線接続または無線接続であってよい。I/Oコントローラ1135は、簡単にするために省略されている、通信を可能にするためのコントローラ、バッファ(キャッシュ)、ドライバ、リピータ、およびレシーバなどのその他の要素を含んでよい。
【0053】
I/Oデバイス1147、1145は、例えばディスク・ストレージおよびテープ・ストレージ、ネットワーク・インターフェイス・カード(NIC:network interface card)または変調器/復調器(他のファイル、デバイス、システム、またはネットワークにアクセスするため)、無線周波(RF:radio frequency)またはその他のトランシーバ、電話インターフェイス、ブリッジ、ルータなどの、入力および出力の両方と通信するデバイスをさらに含んでよい。
【0054】
プロセッサ1105は、ハードウェア命令またはソフトウェア、具体的には、メモリ1112に格納されたハードウェア命令またはソフトウェアを実行するためのハードウェア・デバイスである。プロセッサ1105は、カスタム・メイドであるか、または市販されたプロセッサ、中央処理装置(CPU:central processing unit)、コンピュータ・システム1100に関連付けられた複数のプロセッサ間の補助プロセッサ、(マイクロチップまたはチップ・セットの形態での)半導体ベースのマイクロプロセッサ、マクロプロセッサ、もしくは命令を実行するためのその他のデバイスであってよい。プロセッサ1105は、実行可能命令のフェッチを高速化するための命令キャッシュ、データのフェッチおよび格納を高速化するためのデータ・キャッシュ、および実行可能命令とデータの両方の仮想アドレスから物理アドレスへの変換を高速化するために使用されるトランスレーション・ルックアサイド・バッファ(TLB:translation look-aside buffer)などのキャッシュを含むことができるが、これらに限定されない。キャッシュは、さらに多くのキャッシュ・レベル(L1、L2など)の階層として構造化されてよい。
【0055】
メモリ1112は、揮発性メモリ素子(例えば、DRAM、SRAM、SDRAMなどのランダム・アクセス・メモリ(RAM:random access memory))および不揮発性メモリ素子(例えば、ROM、消去可能プログラマブル読み取り専用メモリ(EPROM:erasable programmable read only memory)、電子的消去可能プログラマブル読み取り専用メモリ(EEPROM:electronically erasable programmable read only memory)、プログラマブル読み取り専用メモリ(PROM:programmable read only memory)、テープ、コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read only memory)、ディスク、フロッピー(R)・ディスク、カートリッジ、カセットなど)のうちの1つまたは組み合わせを含んでよい。さらに、メモリ1112は電子、磁気、光、またはその他の種類のストレージ媒体を組み込んでよい。メモリ1112が、さまざまなコンポーネントが互いに遠く離れた位置にあるが、プロセッサ1105によってアクセスされてよい、分散アーキテクチャを含むことができるということに注意する。
【0056】
メモリ1112内の命令は、1つまたは複数の別々のプログラムを含んでよく、それらのプログラムの各々は、論理的機能を実装するための実行可能命令の順序付けられたリストを含む。
図11の例では、メモリ1112内の命令は、適切なオペレーティング・システム(OS:operating system)1111を含む。オペレーティング・システム1111は、基本的に他のコンピュータ・プログラムの実行を制御することができ、スケジューリング、入出力制御、ファイルおよびデータの管理、メモリ管理、ならびに通信制御および関連するサービスを提供する。
【0057】
例えば、プロセッサ1105の命令またはその他の取り出し可能な情報を含む追加データが、ストレージ1127に格納されてよく、ストレージ1127はハード・ディスク・ドライブまたは半導体ドライブなどのストレージ・デバイスであってよい。メモリ1112またはストレージ1127に格納される命令は、プロセッサが本開示のディスパッチ・システムおよび方法の1つまたは複数の態様を実行できるようにする命令を含んでよい。
【0058】
コンピュータ・システム1100は、ディスプレイ1130に結合されたディスプレイ・コントローラ1125をさらに含んでよい。実施形態例では、コンピュータ・システム1100は、ネットワーク1165に結合するためのネットワーク・インターフェイス1160をさらに含んでよい。ネットワーク1165は、コンピュータ・システム1100と、外部サーバ、クライアントなどとの間での、ブロードバンド接続を介した通信用のIPベースのネットワークであってよい。ネットワーク1165は、コンピュータ・システム1100と外部システムの間で、データを送受信する。実施形態例では、ネットワーク1165は、サービス・プロバイダによって管理された管理IPネットワークであってよい。ネットワーク1165は、例えば、WiFi、WiMaxなどの無線プロトコルおよび無線技術を使用して、無線方式で実装されてよい。ネットワーク1165は、ローカル・エリア・ネットワーク、広域ネットワーク、メトロポリタン・エリア・ネットワーク、インターネット、またはその他の類似する種類のネットワーク環境などの、パケット交換ネットワークであってもよい。ネットワーク1165は、固定無線ネットワーク、無線ローカル・エリア・ネットワーク(LAN:local area network)、無線広域ネットワーク(WAN:wide areanetwork)、パーソナル・エリア・ネットワーク(PAN:personal area network)、仮想プライベート・ネットワーク(VPN:virtual private network)、インターネット、またはその他の適切なネットワーク・システムであってよく、信号を送受信するための機器を含んでよい。
【0059】
本明細書において説明されているように、拡張可能な依存関係行列を提供するためのシステムおよび方法が、コンピュータ・プログラム製品において、または
図11に示されているようなコンピュータ・システム1100において、全体的または部分的に具現化され得る。
【0060】
本明細書では、関連する図面を参照して、本発明のさまざまな実施形態が説明される。本発明の範囲を逸脱することなく、本発明の代替の実施形態が考案され得る。以下の説明および図面において、要素間のさまざまな接続および位置関係(例えば、上、下、隣接など)が示される。それらの接続または位置関係あるいはその両方は、特に規定されない限り、直接的または間接的であることができ、本発明はこの点において限定するよう意図されていない。したがって、各実体の結合は、直接的結合または間接的結合を指すことができ、各実体間の位置関係は、直接的位置関係または間接的位置関係であることができる。さらに、本明細書に記載されたさまざまな作業および工程段階は、本明細書に詳細に記載されない追加の段階または機能を含んでいるさらに包括的な手順または工程に組み込まれ得る。
【0061】
以下の定義および略称が、特許請求の範囲および本明細書の解釈に使用される。本明細書において使用されているように、「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」、「含有する」、「含有している」という用語、またはこれらの任意のその他の変形は、非排他的包含をカバーするよう意図されている。例えば、要素のリストを含んでいる組成、混合、工程、方法、製品、または装置は、それらの要素のみに必ずしも限定されず、明示されていないか、またはそのような組成、混合、工程、方法、製品、もしくは装置に固有の、その他の要素を含むことができる。
【0062】
さらに、「例示的」という用語は、本明細書では「例、事例、または実例としての役割を果たす」ことを意味するために使用される。「例示的」として本明細書に記載された実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいか、または有利であると解釈されるべきではない。「少なくとも1つ」および「1つまたは複数」という用語は、1以上の任意の整数(すなわち、1、2、3、4など)を含んでいると理解されてよい。「複数」という用語は、2以上の任意の整数(すなわち、2、3、4、5など)を含んでいると理解されてよい。「接続」という用語は、間接的「接続」および直接的「接続」の両方を含んでよい。
【0063】
「約」、「実質的に」、「近似的に」、およびこれらの変形の用語は、本願書の出願時に使用できる機器に基づいて、特定の量の測定に関連付けられた誤差の程度を含むよう意図されている。例えば、「約」は、特定の値の±8%または5%、あるいは2%の範囲を含むことができる。
【0064】
簡潔さの目的で、本発明の態様の作成および使用に関連する従来技術は、本明細書に詳細に記載されることもあれば、記載されないこともある。具体的には、本明細書に記載されたさまざまな技術的特徴を実装するためのコンピューティング・システムおよび特定のコンピュータ・プログラムのさまざまな態様は、よく知られている。したがって、簡略にするために、多くの従来の実装に関する詳細は、本明細書では、既知のシステムまたは工程あるいはその両方の詳細を提供することなく、簡潔にのみ述べられるか、または全体的に省略される。
【0065】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。
【0066】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み取り専用メモリ(ROM:read-onlymemory)、消去可能プログラマブル読み取り専用メモリ(EPROM:erasableprogrammable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【0067】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス/処理デバイスへ、またはネットワーク(例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ)を介して外部コンピュータもしくは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス/処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【0068】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)もしくは広域ネットワーク(WAN:widearea network)を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【0069】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【0070】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【0071】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれ、コンピュータ実装プロセスを生成するために、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で一連の動作可能なステップを実行させるものであってもよい。
【0072】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための1つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された2つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【0073】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に限定されない。説明された実施形態の範囲を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかである。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択された。