特許第6621476号(P6621476)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧
特許6621476プロセッサ・コア内で使用するための実行スライス回路、プロセッサ・コア、およびプロセッサ・コアによりプログラム命令を実行する方法
<>
  • 特許6621476-プロセッサ・コア内で使用するための実行スライス回路、プロセッサ・コア、およびプロセッサ・コアによりプログラム命令を実行する方法 図000002
  • 特許6621476-プロセッサ・コア内で使用するための実行スライス回路、プロセッサ・コア、およびプロセッサ・コアによりプログラム命令を実行する方法 図000003
  • 特許6621476-プロセッサ・コア内で使用するための実行スライス回路、プロセッサ・コア、およびプロセッサ・コアによりプログラム命令を実行する方法 図000004
  • 特許6621476-プロセッサ・コア内で使用するための実行スライス回路、プロセッサ・コア、およびプロセッサ・コアによりプログラム命令を実行する方法 図000005
  • 特許6621476-プロセッサ・コア内で使用するための実行スライス回路、プロセッサ・コア、およびプロセッサ・コアによりプログラム命令を実行する方法 図000006
  • 特許6621476-プロセッサ・コア内で使用するための実行スライス回路、プロセッサ・コア、およびプロセッサ・コアによりプログラム命令を実行する方法 図000007
  • 特許6621476-プロセッサ・コア内で使用するための実行スライス回路、プロセッサ・コア、およびプロセッサ・コアによりプログラム命令を実行する方法 図000008
  • 特許6621476-プロセッサ・コア内で使用するための実行スライス回路、プロセッサ・コア、およびプロセッサ・コアによりプログラム命令を実行する方法 図000009
  • 特許6621476-プロセッサ・コア内で使用するための実行スライス回路、プロセッサ・コア、およびプロセッサ・コアによりプログラム命令を実行する方法 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6621476
(24)【登録日】2019年11月29日
(45)【発行日】2019年12月18日
(54)【発明の名称】プロセッサ・コア内で使用するための実行スライス回路、プロセッサ・コア、およびプロセッサ・コアによりプログラム命令を実行する方法
(51)【国際特許分類】
   G06F 9/38 20060101AFI20191209BHJP
【FI】
   G06F9/38 370X
   G06F9/38 310H
   G06F9/38 310F
【請求項の数】20
【全頁数】21
(21)【出願番号】特願2017-530670(P2017-530670)
(86)(22)【出願日】2015年12月16日
(65)【公表番号】特表2018-501563(P2018-501563A)
(43)【公表日】2018年1月18日
(86)【国際出願番号】IB2015059662
(87)【国際公開番号】WO2016113615
(87)【国際公開日】20160721
【審査請求日】2018年8月17日
(31)【優先権主張番号】14/595,549
(32)【優先日】2015年1月13日
(33)【優先権主張国】US
(31)【優先権主張番号】14/724,073
(32)【優先日】2015年5月28日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ブラウンシェイドル、ジェフリー
(72)【発明者】
【氏名】グエン、ズン、クオック
(72)【発明者】
【氏名】デラニー、モーリーン、アン
(72)【発明者】
【氏名】チャーダ、サンデープ
(72)【発明者】
【氏名】リ、ホン、キ
(72)【発明者】
【氏名】トンプト、ブライアン、ウィリアム
【審査官】 清木 泰
(56)【参考文献】
【文献】 米国特許出願公開第2004/0181652(US,A1)
【文献】 特開平3−74721(JP,A)
【文献】 特表2011−522317(JP,A)
【文献】 特表2017−516215(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/38
G06F 9/30− 9/355
G06F15/80
G06F15/16−15/177
G06F17/10−17/18
(57)【特許請求の範囲】
【請求項1】
プロセッサ・コアにおいて使用するための実行スライス回路であって、
第1の命令ストリームの命令を受け取るための第1の発行キューを有するマスタ実行スライスと、
スレーブ実行スライスであって、第2の命令ストリームの命令、および、前記マスタ実行スライスと前記スレーブ実行スライスの幅のうち、より小さいほうの幅よりも大きい実行幅を必要とする前記第1の命令ストリームの命令、を受け取るための第2の発行キューを有する前記スレーブ実行スライスと、
前記第1の命令ストリームの第1の命令が前記大きい実行幅を有することを検出したことに応じて、前記マスタ実行スライスおよび前記スレーブ実行スライスにわたって並列に前記第1の命令を発行するための第1の発行サイクルを予約するように前記スレーブ実行スライスを制御する、制御ロジックと、
を備える実行スライス回路。
【請求項2】
前記制御ロジックが、前記スレーブ実行スライスの以前の発行サイクル中に前記第1の発行サイクルを予約し、前記スレーブ実行スライスが、前記制御ロジックが前記第1の発行サイクルを予約してある間に前記第2の命令ストリームの命令を発行し、前記制御ロジックが、後続の発行サイクルにおいて前記マスタ実行スライスおよび前記スレーブ実行スライスにわたって並列に前記第1の命令を発行する、請求項1の実行スライス回路。
【請求項3】
前記制御ロジックは、前記第1の命令ストリームの前記第1の命令が前記大きい実行幅を有することを検出したことに応じて、前記第1の命令が発行を許可されたということを示す前記第1の命令の発行キュー・エントリに対応する許可ビットを設定し、次の発行サイクルにおいて、前記マスタ実行スライスが、前記許可ビットが設定されたことを検出したことに応じて、前記第1の命令の対応する部分を発行する、請求項2の実行スライス回路。
【請求項4】
前記マスタ実行スライスは、前記マスタ実行スライスに対してディスパッチされたがまだ発行されていない前記第1の命令ストリームの命令を含む第1のシーケンスの第1の標示を格納するための第1のエイジ・アレイを含み、前記制御ロジックは、発行についてレディ状態にある前記第1のエイジ・アレイ内に存在する最も古い命令に対応するエントリを前記第1のエイジ・アレイから取得することであって、前記第1の命令ストリームの前記第1の命令が、前記第1のエイジ・アレイ内に存在する最も古い命令である、前記取得することと、前記取得されたエントリを、どのエントリが前記大きい実行幅を有するのかを示すマスクと比較することとを実行することによって、前記制御ロジックは、前記第1の命令ストリームの前記第1の命令が前記大きい実行幅を有することを検出する、請求項3の実行スライス回路。
【請求項5】
前記スレーブ実行スライスは、前記スレーブ実行スライスに対してディスパッチされたがまだ発行されていない前記第2の命令ストリームの命令を含む第2のシーケンスの第2の標示を格納するための第2のエイジ・アレイを含み、発行サイクルにおいて、前記制御ロジックが、前記第1のエイジ・アレイの最も古い許可されたエントリと、前記第2のエイジ・アレイの最も古い許可されたエントリとを取得し、前記取得されたエントリを使用して、前記マスタ実行スライスおよび前記スレーブ実行スライスによる実行用の対応する命令を発行する、請求項4の実行スライス回路。
【請求項6】
前記以前の発行サイクルにおいて、前記制御ロジックは、前記第1の命令ストリームの前記第1の命令が前記大きい実行幅を有することを検出したことに応じて、前記第2のエイジ・アレイ内の許可されたエントリを示すビット・フィールドを、前記次の発行サイクルにおいて前記スレーブ実行スライスによって発行される前記スレーブ実行スライスに対応する前記第1の命令の部分を指定する値に上書きする、請求項5の実行スライス回路。
【請求項7】
前記制御ロジックは、許可ベクトルを、次の発行サイクルにおいて前記スレーブ実行スライスによって発行される前記スレーブ実行スライスに対応する前記第1の命令の部分を指定する値で上書きすることにより、前記第1の発行サイクルを予約する、請求項2の実行スライス回路。
【請求項8】
プロセッサ・コアであって、
複数の命令ストリームの命令を受け取るための複数のディスパッチ・キューと、
前記複数の命令ストリームを並列に実行するための複数の並列する命令実行スライスであって、第1の命令ストリームの命令を受け取るための第1の発行キューを有するマスタ実行スライス、ならびにスレーブ実行スライスであって、第2の命令ストリームの命令、および、前記マスタ実行スライスと前記スレーブ実行スライスの幅のうち、より小さいほうの幅よりも大きい実行幅を必要とする前記第1の命令ストリームの命令、を受け取るための第2の発行キューを有する前記スレーブ実行スライス、を含む、前記複数の並列する命令実行スライスと、
前記ディスパッチ・キューの出力を前記命令実行スライスに経路指定するためのディスパッチ経路指定ネットワークと、
前記ディスパッチ経路指定ネットワークを介して前記複数の命令ストリームの前記命令を前記複数の並列する命令実行スライスの発行キューに対してディスパッチするディスパッチ制御ロジックと、
前記第1の命令ストリームの第1の命令が前記大きい実行幅を有することを検出したことに応じて、前記マスタ実行スライスおよび前記スレーブ実行スライスにわたって並列に前記第1の命令を発行するための第1の発行サイクルを予約するように前記スレーブ実行スライスを制御する、制御ロジックと
を備えるプロセッサ・コア。
【請求項9】
前記制御ロジックが、前記スレーブ実行スライスの以前の発行サイクル中に前記第1の発行サイクルを予約し、前記スレーブ実行スライスが、前記制御ロジックが前記第1の発行サイクルを予約してある間に前記第2の命令ストリームの命令を発行し、前記制御ロジックが、後続の発行サイクルにおいて、前記マスタ実行スライスおよび前記スレーブ実行スライスにわたって並列に前記第1の命令を発行する、請求項8のプロセッサ・コア。
【請求項10】
前記制御ロジックは、前記第1の命令ストリームの前記第1の命令が前記大きい実行幅を有することを検出したことに応じて、前記第1の命令が発行を許可されたということを示す前記第1の命令の発行キュー・エントリに対応する許可ビットを設定し、次の発行サイクルにおいて、前記マスタ実行スライスが、前記許可ビットが設定されたことを検出したことに応じて、前記第1の命令の対応する部分を発行する、請求項9のプロセッサ・コア。
【請求項11】
前記マスタ実行スライスは、前記マスタ実行スライスに対してディスパッチされたがまだ発行されていない前記第1の命令ストリームの命令を含む第1のシーケンスの第1の標示を格納するための第1のエイジ・アレイを含み、前記制御ロジックは、発行についてレディ状態にある前記第1のエイジ・アレイ内に存在する最も古い命令に対応するエントリを前記第1のエイジ・アレイから取得することであって、前記第1の命令ストリームの前記第1の命令が、前記第1のエイジ・アレイ内に存在する最も古い命令である、前記取得することと、前記取得されたエントリを、どのエントリが前記大きい実行幅を有するのかを示すマスクと比較することとを実行することによって、前記制御ロジックは、前記第1の命令ストリームの前記第1の命令が前記大きい実行幅を有することを検出する、請求項10のプロセッサ・コア。
【請求項12】
前記スレーブ実行スライスは、前記スレーブ実行スライスに対してディスパッチされたがまだ発行されていない前記第2の命令ストリームの命令を含む第2のシーケンスの第2の標示を格納するための第2のエイジ・アレイを含み、発行サイクルにおいて、前記制御ロジックが、前記第1のエイジ・アレイの最も古い許可されたエントリと、前記第2のエイジ・アレイの最も古い許可されたエントリとを取得し、前記取得されたエントリを使用して、前記マスタ実行スライスおよび前記スレーブ実行スライスによる実行用の対応する命令を発行する、請求項11のプロセッサ・コア。
【請求項13】
前記以前の発行サイクルにおいて、前記制御ロジックは、前記第1の命令ストリームの前記第1の命令が前記大きい実行幅を有することを検出したことに応じて、前記第2のエイジ・アレイ内の許可されたエントリを示すビット・フィールドを、前記次の発行サイクルにおいて前記スレーブ実行スライスによって発行される前記スレーブ実行スライスに対応する前記第1の命令の部分を指定する値に上書きする、請求項12のプロセッサ・コア。
【請求項14】
前記制御ロジックは、許可ベクトルを、次の発行サイクルにおいて前記スレーブ実行スライスによって発行される前記スレーブ実行スライスに対応する前記第1の命令の部分を指定する値で上書きすることにより、前記第1の発行サイクルを予約する、請求項9のプロセッサ・コア。
【請求項15】
プロセッサ・コアによりプログラム命令を実行する方法であって、
第1の発行キューを有するマスタ実行スライスにおいて第1の命令ストリームの命令を受け取るステップと、
第2の発行キューを有するスレーブ実行スライスにおいて、第2の命令ストリームの命令、および、前記マスタ実行スライスと前記スレーブ実行スライスの幅のうち、より小さいほうの幅よりも大きい実行幅を必要とする前記第1の命令ストリームの命令、を受け取るステップと、
前記第1の命令ストリームの第1の命令が前記大きい実行幅を有することを検出するステップと、
前記第1の命令が前記大きい実行幅を有することを検出したことに応じて、制御ロジックを用いて前記マスタ実行スライスおよび前記スレーブ実行スライスにわたって並列に前記第1の命令を発行するための第1の発行サイクルを予約するように前記スレーブ実行スライスを制御するステップと
を含む方法。
【請求項16】
前記スレーブ実行スライスの以前の発行サイクル中に前記第1の発行サイクルを予約するステップと、
前記制御ロジックが前記第1の発行サイクルを予約してある間に、前記第2の命令ストリームの命令を前記スレーブ実行スライスから発行するステップと、
後続の発行サイクルにおいて、前記マスタ実行スライスおよび前記スレーブ実行スライスにわたって並列に前記第1の命令を発行するステップと
をさらに含む、請求項15の方法。
【請求項17】
前記第1の命令ストリームの前記第1の命令が前記大きい実行幅を有することを検出したことに応じて、前記第1の命令が発行を許可されたということを示す前記第1の命令の発行キュー・エントリに対応する許可ビットを設定するステップと、
次の発行サイクルにおいて、前記許可ビットが設定されたことを検出したことに応じて、前記第1の命令の対応する部分を発行するステップと
をさらに含む、請求項16に記載の方法。
【請求項18】
前記マスタ実行スライスは、前記マスタ実行スライスに対してディスパッチされたがまだ発行されていない前記第1の命令ストリームの命令を含む第1のシーケンスの第1の標示を格納するための第1のエイジ・アレイを含み、前記方法は、
発行についてレディ状態にある前記第1のエイジ・アレイ内に存在する最も古い命令に対応するエントリを前記第1のエイジ・アレイから取得するステップであって、前記第1の命令ストリームの前記第1の命令が、前記第1のエイジ・アレイ内に存在する最も古い命令である、前記取得するステップと、
前記取得されたエントリを、どのエントリが前記大きい実行幅を有するのかを示すマスクと比較するステップとをさらに含み、前記制御ロジックは、前記第1の命令ストリームの前記第1の命令が前記大きい実行幅を有することを検出する、請求項17の方法。
【請求項19】
前記スレーブ実行スライスは、前記スレーブ実行スライスに対してディスパッチされたがまだ発行されていない前記第2の命令ストリームの命令を含む第2のシーケンスの第2の標示を格納するための第2のエイジ・アレイを含み、前記方法は、
発行サイクルにおいて、前記第1のエイジ・アレイの最も古い許可されたエントリと、前記第2のエイジ・アレイの最も古い許可されたエントリとを取得するステップと、
前記取得されたエントリを使用して、前記マスタ実行スライスおよび前記スレーブ実行スライスによる実行用の対応する命令を発行するステップと
をさらに含む、請求項18の方法。
【請求項20】
前記第1の命令ストリームの前記第1の命令が前記大きい実行幅を有することを検出したことに応じて、前記第2のエイジ・アレイ内の許可されたエントリを示すビット・フィールドを、次の発行サイクルにおいて前記スレーブ実行スライスによって発行される前記スレーブ実行スライスに対応する前記第1の命令の部分を指定する値に上書きするステップをさらに含む、請求項19の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセシング・システムおよびプロセッサに関し、より詳細には、並列実行スライス発行キューが、異なる幅の命令を実行するためにリンクされる、再構成可能なアーキテクチャを用いた、パイプライン化されたプロセッサ・コアに関する。
【背景技術】
【0002】
今日のプロセッサ・コアでは、パイプラインが使用されて、複数の命令ストリームに対応する複数のハードウェア・スレッドを実行し、その結果、リソース共有によって、さらに、1つまたは複数のハードウェア・スレッドがイベントを待っている間でも実行が進むようにすることによって、プロセッサ・リソースのより効率的な使用を提供することができる。
【0003】
典型的な実行パイプラインは、固定幅の命令を実行するように、またはベクトル命令の一部を並列に実行するように、セットアップされるが、これは、命令の実行を管理する制御ロジックが、典型的には固定されているからである。かかるアーキテクチャは、その固定された命令実行アーキテクチャに制約され、並列プロセッサが非ベクトル命令を実行しているとき、プロセッサ・リソースは、典型的には使用されていない。
【発明の概要】
【発明が解決しようとする課題】
【0004】
したがって、プロセッサ・コア、およびプロセッサ・コア・リソースの改善された使用をもたらすプログラム命令を処理するための方法、を提供することが望ましい。
【課題を解決するための手段】
【0005】
本発明の好ましい実施形態は、プロセッサ・コアの実行スライス回路、かかる実行スライス回路を備えるプロセッサ・コア、プロセッサ・コアのオペレーションの方法、およびプロセッサにおいて具現化される。
【0006】
実行スライス回路は、第1の命令ストリームの命令を受け取るためのマスタ実行スライスと、第2の命令ストリームの命令、およびスライス幅より大きい実行幅を必要とする第1の命令ストリームの命令、を受け取るためのスレーブ実行スライスと、を含む複数の命令ストリームを実行するための複数の並列する命令実行スライスを含む。また、実行スライス回路は、制御ロジックを含み、制御ロジックは、第1の命令ストリームの第1の命令が上記大きい実行幅を有することを検出したことに応じて、マスタ実行スライスおよびスレーブ実行スライスにわたって並列に第1の命令を発行するための第1の発行サイクルを予約するようにスレーブ実行スライスを制御する。
【0007】
本発明の上記および他の目的、特徴、ならびに利点は、添付の図面に示されるように、以下のより詳細な、本発明の好ましい実施形態の説明から、明らかになるであろう。
【0008】
本発明に特有と考えられる新規の特徴は、添付の請求項において記載される。しかし、本発明自体だけでなく、その使用、さらなる目的、および利点、の好ましいモードも、以下の本発明の詳細な説明を、添付の図面と併せて読み、参照することにより、最良に理解されるであろう。図面において、同様の参照番号は同様の構成要素を表す。
【図面の簡単な説明】
【0009】
図1】本発明の一実施形態に係る技術が実施される、プロセシング・システムを示すブロック図である。
図2図1のプロセッサ・コア20A〜20Bを実装するために使用することができるプロセッサ・コア20の詳細を示すブロック図である。
図3】特定のオペレーティング・モードのプロセッサ・コア20の構成を示す絵図である。
図4】プロセッサ・コア20の詳細を示すブロック図である。
図5】プロセッサ・コア20内に実装されてもよい例示の制御フローを示す制御フロー図である。
図6】プロセッサ・コア20のオペレーションの方法を示すフローチャートである。
図7図2および図3の命令実行スライスES0〜ES7を実装するために使用することができる命令実行スライス42AAの詳細を例示するブロック図である。
図8図7の実行インターロック制御ロジック79の例示の実施形態の詳細を示すブロック図である。
図9図2および図3のロード/ストア・スライスLS0〜LS7を実装するために使用することができるキャッシュ・スライス44の詳細を示すブロック図である。
【発明を実施するための形態】
【0010】
本発明は、シングルスレッド・モード、マルチスレッド・モード、および異なる数の同時に実行されるハードウェア・スレッドから選択し得る1つまたは複数のスレッド・モード制御信号に基づき、リソースのサブセットを効率的に割り当てるために再構成することができる実行スライスに、従来のパイプラインが置き換えられた、プロセッサおよびプロセシング・システムに関する。特に、以下で説明するプロセッサは実行スライスを含み、実行スライスは、制御ロジックを用いて、マスタ/スレーブ・スライスとしてペアにされて、より幅の広い命令が、スライスに対してディスパッチされるときに、2つのスライスを結合することにより、スライスの基本の幅よりも大きい幅を必要とする命令の実行を認可する。
【0011】
ここで図1を参照すると、本発明の一実施形態に係るプロセシング・システムが示される。図示されるプロセシング・システムは、本発明の一実施形態にそれぞれが適合する、いくつかのプロセッサ10A〜10Dを含む。図示されるマルチプロセシング・システムは説明のためのものであり、本発明の他の実施形態に係るプロセシング・システムは、マルチスレッド・コアを有するユニプロセッサ・システムを含む。プロセッサ10A〜10Dは構造が同一であり、コア20A〜20B、およびローカル・ストレージ12を含み、ローカル・ストレージ12はキャッシュ・レベルであってもよいし、内部システム・メモリのレベルであってもよい。プロセッサ10A〜10Dは、メイン・システム・メモリ14と、ストレージ・サブシステム16とに接続され、ストレージ・サブシステム16は、着脱不可ドライブおよび光学式ドライブを含み、このドライブは、CD−ROM17などのメディアを読むためのものであり、このメディアは、コンピュータ・プログラム製品を形成し、少なくとも1つのオペレーティング・システム、関連するアプリケーション・プログラム、および、任意に、プロセッサ10A〜10Dによる実行のために複数のオペレーティング・システムのパーティションを制御するハイパーバイザ、を一般には実装するプログラム命令を含むものである。また、図示されるプロセシング・システムは、ユーザ入力を受け取るためのマウスおよびキーボード、ならびに情報を表示するためのグラフィック・ディスプレイなどの入出力(I/O)インターフェースおよびデバイス18を含む。図1のシステムは、本発明のプロセッサ・アーキテクチャが実装されるシステムの説明を提供するために使用されるが、図示されるアーキテクチャは、限定するものではなく、本発明の技術が適用される適切なコンピュータ・システムの一例を提供することが意図されていることが理解される。
【0012】
ここで図2を参照すると、図1のプロセッサ・コア20A〜20Bを実装するために使用することができる例示のプロセッサ・コア20の詳細が示される。プロセッサ・コア20には、キャッシュまたはシステム・メモリからフェッチされる複数の命令ストリームを格納し、2つのクラスタCLAおよびCLBそれぞれのうちの複数のディスパッチ・キューDisp0〜Disp7に対してバス32を介して命令ストリームを提示する、命令キャッシュ(Iキャッシュ)54および命令バッファ(IBUF)31が含まれる。プロセッサ・コア20内の制御ロジックは、ディスパッチ・キューDisp0〜Disp7のいずれかからクラスタCLAおよびCLBのどちらかの命令実行スライスES0〜ES7のいずれかへの命令を認可するディスパッチ経路指定ネットワーク36を介した、ディスパッチ・キューDisp0〜Disp7から複数の命令実行スライスES0〜ES7への命令のディスパッチを制御するが、完全なクロスポイント経路指定、すなわち、任意のディスパッチ・キューから任意のスライスへの経路指定は、本発明の要件ではない。以下で説明されるような特定の構成において、クラスタCLA内のディスパッチ・キューDisp0〜Disp3からの命令のディスパッチは、クラスタCLA内の実行スライスES0〜ES3に制限され、同様に、クラスタCLB内のディスパッチ・キューDisp4〜Disp7からの命令のディスパッチは、実行スライスES4〜ES7に制限される。命令実行gES0〜ES7は、命令ストリーム内の命令の命令サイクルの実行サイクル部分を実行するための、論理的オペレーション、数学的オペレーション、および必要に応じて他のオペレーション、の順序付け(sequencing)および実行を行い、同一の汎用命令実行スライスES0〜ES7であってもよく、または、プロセッサ・コア20は、専用の実行スライスES0〜ES7を含んでもよい。暗号プロセッサ34A〜34B、浮動小数点ユニット(DFU)33A〜33B、および別個の分岐実行ユニット(BRU)35A〜35Bなどの他の専用ユニットを含んで、他のタスクを実行するために汎用実行スライスES0〜ES7を解放することもできる。命令実行スライスES0〜ES7は、複数の命令または命令の一部あるいはその両方を実行するための複数の内部パイプラインを含んでもよい。
【0013】
命令実行サイクルのロード/ストア部分、(すなわち、内部レジスタの読み/書きに対立するものとして、キャッシュ一貫性を維持するために実行されるオペレーション)が、複数のロード/ストア(LS)スライスLS0〜LS7により実行され、LSは、命令実行スライスES0〜ES7と、最低次のキャッシュ・メモリのパーティションである複数のキャッシュ・スライスCS0〜CS7によって形成されるキャッシュ・メモリとの間のようなロードおよびストアのオペレーションを管理する。図示される実施形態では、キャッシュ・スライスCS0〜CS3が、パーティションCLAに対してアサインされ、キャッシュ・スライスCS4〜CS7が、パーティションCLBに対してアサインされ、ロード/ストア・スライスLS0〜LS7のそれぞれが、専用のメモリ・バス40のうちの対応する1つを介して、キャッシュ・スライスCS0〜CS7のうちの対応する1つへのアクセスを管理する。他の実施形態においては、キャッシュを固定のパーティションに分割しなくてもよく、個々のキャッシュ・スライスCS0〜CS7またはキャッシュ・スライスの全体のセットのうちのサブグループが、メモリ・バス40を共有のメモリ・バス(単数または複数)として実装することにより、ロード/ストア・スライスLS0〜LS7のうちの2つ以上に接続されてもよい。ロード/ストア・スライスLS0〜LS7は、ロード・オペレーションに応答するなど、対応するキャッシュ・スライスCS0〜CS7から結果データを戻すためのライトバック(結果)経路指定ネットワーク37により、命令実行スライスES0〜ES7に接続される。また、ライトバック経路指定ネットワーク37は、命令実行スライスES0〜ES7間のライトバック結果の通信も提供する。アドレス生成(AGEN)バス38およびストア・データ・バス39は、ロード/ストア・スライスLS0〜LS7に対して通信されるロードおよびストアのオペレーションのための通信を提供する。例えば、AGENバス38およびストア・データ・バス39は、ストア・オペレーションがフラッシュまたは無効化されない場合には、メモリ・バス40のうちの1つを介して、キャッシュ・スライスCS0〜CS7のうちの1つに、または、キャッシュ・スライスCS0〜CS7がI/Oバス41を介して接続されるより高次レベルのメモリ階層の場所に、最終的に書き込まれるストア・オペレーションを搬送する。キャッシュ・スライスCS0〜CS7のうちの1つを失ったロード・オペレーションは、ロード/ストア・スライスLS0〜LS7のうちの1つによって、特定のキャッシュ・スライスCS0〜CS7に対して発行された後、I/Oバス41を介して、要求された値を特定のキャッシュ・スライスCS0〜CS7にロードすることにより、または、直接キャッシュ・スライスCS0〜CS7およびメモリ・バス40を通して要求を発行したロード/ストア・スライスLS0〜LS7にロードすることにより、満たされる。図示される実施形態では、ロード/ストア・スライスLS0〜LS7のいずれかを、命令実行スライスES0〜ES7のいずれかについての命令のロード/ストア・オペレーション部分を実行するために使用することができるが、これは、本発明の要件ではない。さらに、いくつかの実施形態において、どのキャッシュ・スライスCS0〜CS7が所与のロード/ストア・オペレーションを実行するのかの判定は、ロード/ストア・オペレーションのオペランド・アドレスに基づくと共に、オペランド幅、およびキャッシュのアドレス可能バイトの各キャッシュ・スライスCS0〜CS7へのアサインにも基づき、なされてもよい。
【0014】
命令実行スライスES0〜ES7は、内部命令を、複数のパイプラインに一斉に発行してもよく、例えば、命令実行スライスは、実行オペレーションとロード/ストア・オペレーションとを同時に実行してもよいし、または複数の内部パイプラインを使用して、複数の演算オペレーションもしくは論理的オペレーションを実行してもよいし、あるいはその両方でもよい。内部パイプラインは同一であってもよいし、または、浮動小数点、スカラ、ロード/ストアなど離散型であってもよい。さらに、所与の実行スライスは、ライトバック経路指定ネットワーク37への2つ以上のポート接続を有してもよく、例えば、ポート接続は、ロード/ストア・スライスLS0〜LS7へのロード/ストア接続に専用のものであってもよいし、あるいは、AGENバス38もしくはデータバス39またはその両方の機能を提供してもよく、別のポートが、特殊用途のスライスまたは他の命令実行スライスなどの他のスライスとの間の値の通信に使用されてもよい。ライトバック結果は、命令実行スライスES0〜ES7の種々の内部パイプラインから、命令実行スライスES0〜ES7をライトバック経路指定ネットワーク37に接続するライトバック・ポートにスケジュールされる。キャッシュ・スライスCS0〜CS7は、プロセッサ・コア20の内部に統合されても、またはプロセッサ・コア20の外部であってもよいI/Oバス41を介して、次に高次レベルのキャッシュまたはシステム・メモリと接続される。図示される例は、一致した数のロード/ストア・スライスLS0〜LS7と実行スライスES0〜ES7とを示すが、実際には、異なる数の各タイプのスライスを、特定の実装についてのリソースの必要性に従って提供することができる。
【0015】
プロセッサ・コア20内では、命令シーケンサ・ユニット(ISU)30が、ディスパッチ経路指定ネットワーク36、ライトバック経路指定ネットワーク37、AGENバス38、およびストア・データ・バス39を制御する命令フローおよびネットワーク制御ブロック57を含む。また、ネットワーク制御ブロック57は、実行スライスES0〜ES7およびロード/ストア・スライスLS0〜LS7のオペレーションを、ディスパッチ・キューDisp0〜Disp7からの命令のディスパッチと調和させる。特に、命令フローおよびネットワーク制御ブロック57は、1つまたは複数のモード制御信号に従って、プロセッサ・コア20内の実行スライスES0〜ES7およびロード/ストア・スライスLS0〜LS7の構成の中から選び出し、制御信号は、実行スライスES0〜ES7およびロード/ストア・スライスLS0〜LS7の使用を、1つまたは複数のシングルスレッド(ST)モードで単一のスレッドによって、および1つまたは複数のマルチスレッド(MT)モードで複数のスレッドによって割り当てる。複数のマルチスレッド・モードは、同時のマルチスレッド(SMT)モードであってもよい。例えば、図2に示す構成では、クラスタCLAは、SMTモードで第1のスレッド・セットを形成する1つまたは複数のハードウェア・スレッドに割り当てられて、ディスパッチ・キューDisp0〜Disp3が、第1のスレッド・セットについての命令ストリームの命令を受け取るだけであり、実行スライスES0〜ES3およびロード/ストア・スライスLS0〜LS3が、第1のスレッド・セットについてのオペレーションを実行するだけであり、キャッシュ・スライスCS0〜CS3が、第1のスレッド・セットによってアクセスされる値を含むだけである組み合わせられたキャッシュ・メモリを形成するようにしてもよい。同様に、かかるオペレーティング・モードでは、クラスタCLBが、第2のハードウェア・スレッド・セットに割り当てられ、ディスパッチ・キューDisp4〜Disp7が、第2のスレッド・セットについての命令ストリームの命令を受け取るだけであり、実行スライスES4〜ES7およびLSスライスLS4〜LS7が、第2のスレッド・セットについてのオペレーションを実行するだけであり、キャッシュ・スライスCS4〜CS7が、第2のスレッド・セットによってアクセスされる値を含むだけである。通信が、クラスタにわたって必要とされないとき、ライトバック経路指定ネットワーク37、クラスタCLA、およびクラスタCLBの一部を接続するトランシーバおよびスイッチswを無効にすることにより、ライトバック経路指定ネットワーク37をパーティションに分割することができる。ライトバック経路指定ネットワーク37の一部を分離することで、各クラスタ内により大きなスループットを提供し、ライトバック経路指定ネットワーク37の一部が、ライトバック経路指定ネットワーク37内の同じ数の配線について、実行スライスES0〜ES7およびLSスライスLS0〜LS7の結果に、別々の同時の経路を提供することができるようになる。したがって、スイッチswが開のとき、分割されたライトバック経路指定ネットワーク37上で、2倍のトランザクションをサポートすることができる。本発明の他の実施形態は、ディスパッチ・キューDisp0〜Disp7、実行スライスES0〜ES7、LSスライスLS0〜LS7、およびキャッシュ・スライスCS0〜CS7のセットを副次的に分割し、いくつかのクラスタが形成されて、各クラスタが特定のセットのハードウェア・スレッド上でオペレーションを行うようにすることができる。同様に、セット内のスレッドは、サブセットとしてさらにパーティション分割され、ディスパッチ・キューDisp0〜Disp7のうちの特定の1つ、実行スライスES0〜ES7のうちの特定の1つ、LSスライスLS0〜LS7のうちの特定の1つ、およびキャッシュ・スライスCS0〜CS7のうちの特定の1つにアサインされてもよい。しかし、パーティション分割は、上記で列挙したリソースの全てにわたって拡張する必要はない。例えば、クラスタCLAおよびCLBが、2つの異なるハードウェア・スレッド・セットにアサインされ、実行スライスES0〜ES2とLSスライスLS0〜LS1が、第1のハードウェア・スレッド・セットの第1のサブセットにアサインされ、実行スライスES3およびLSスライスLS2〜LS3が、第1のハードウェア・スレッド・セットの第2のサブセットにアサインされ、キャッシュ・スライスCS0〜CS3が、第1のハードウェア・スレッド・セット内の全てのスレッドによって共有されるとしてもよい。上記の例による特定の実施形態において、スイッチを含んで、実行スライスES0〜ES7の間で、ライトバック経路指定ネットワーク37をさらにパーティションに分割し、異なるスレッド・セットにアサインされる実行スライスES0〜ES7のサブグループ間の接続を分離させて、各サブグループ内で処理することができるトランザクションの数を増加させるようにしてもよい。上記は、図2に示されるバス接続されたスライス・アーキテクチャによって提供されるリソースのアサインメントの柔軟性の一例であり、スレッドのセットまたは個々のスレッドを、ディスパッチ・キューDisp0〜Disp7、実行スライスES0〜ES7、LSスライスLS0〜LS7、およびキャッシュ・スライスCS0〜CS7、などのリソースにマッピングするためにサポートされ得るいずれかの特定の構成に関して限定するものではない。
【0016】
別の構成では、モード制御信号の別の状態に従って、クラスタCLAおよびCLBが、スレッドの共通プール、またはSTモードの単一スレッドについての命令を実行するように構成される。かかる構成では、キャッシュ・スライスCS0〜CS7は結合されて、ロード/ストア・スライスLS0〜LS7のいずれかを介して、実行スライスES0〜ES7のいずれかに対してディスパッチされる命令によってアクセス可能である、より大きなキャッシュを形成してもよい。キャッシュ・スライスCS0〜CS7は、パーティション分割されたキャッシュに組織化されてもよく、例えば、各キャッシュ・オペレーションのオペランド・アドレスを使用して、どのキャッシュ・スライスCS0〜CS7、またはキャッシュ・スライスCS0〜CS7のサブグループが、オペレーションをサポートすべきなのかを判定することにより、組織化される。例えば、キャッシュ・ラインを、キャッシュ・スライスCS0〜CS3およびCS4〜CS7のサブグループにわたってスプリットに分割し、オペランド・アドレスの特定のビットが、キャッシュ・スライスCS0〜CS3およびCS4〜CS7の2グループのどちらが指定された値を含むのか、を選択して、キャッシュ・ラインのインターリーブを形成するようにしてもよい。例えば、キャッシュ・スライスCS0〜CS3が、奇数キャッシュ・ラインのアドレスを有するデータ値を格納し、キャッシュ・スライスCS4〜CS7が、偶数キャッシュ・ラインのアドレスを有するデータ値を格納するようにしてもよい。かかる構成では、キャッシュ内でインデックスされた一意的なキャッシュ・ラインのアドレスの数は、キャッシュ・スライスCS0〜CS7がスレッドのセットの中でパーティションに分割されるモード、およびキャッシュ・スライスCS0〜CS7が結合されるモード、から選択するときに、一定に保たれるようにしてもよい。別の例において、オペランド・アドレスの3ビットを使用して、目的のキャッシュ・スライスCS0〜CS7のうちの1つを判定することにより、データをキャッシュ・スライスCS0〜CS7にわたって「ストリップ」し、因数8でインターリーブを形成するようにしてもよい。上記に示される例は、包括的なものではなく、データ値をキャッシュ・スライスCS0〜CS7のうちの特定の1つにアサインする多くの異なる方法がある。例えば、特定のブロックまたはベクトルのオペレーションは、キャッシュ・スライスCS0〜CS7またはそのサブグループを決定的にスパンすることができ、実行スライスES0〜ES7のうちの1つに対する、またはクラスタCLAもしくはCLBの中からのものとして、初期復号(early-decode)に基づくアサインメントを認可する。ディスパッチ・キューDisp0〜Disp7または実行スライスES0〜ES7あるいはその両方は、オペレーション型、アドレス生成、予測構造、または他の機構に基づき、オペレーションについて、キャッシュ・スライスCS0〜CS7のうちの適切な目的の1つ(または複数)を判定してもよい。オペレーティング・モードの、そのような1つの例示の実施形態では、奇数のオペランド・アドレスを有するオペレーションが、ロード/ストア・スライスLS0〜LS3のみに対して処理するために識別され、キャッシュ・スライスCS0〜CS3は、奇数アドレスを表す値を含むだけのために結合される。同様に、オペレーティング・モードのかかる例示の実施形態では、偶数のオペランド・アドレスを有するオペレーションが、ロード/ストア・スライスLS4〜LS7のみによって処理するために識別され、キャッシュ・スライスCS4〜CS7は、偶数アドレスを表す値を含むだけである。上述の構成において、キャッシュ・スライスCS0〜CS7は、概念的には結合され得るが、ベクトルまたはキャッシュ・ブロック・オペレーションなどの特定の実装が、全てのロード/ストア・スライスLS4〜LS7、実行スライスES0〜ES7、およびキャッシュ・スライスCS0〜CS7の間の完全なクロスバー経路指定を必要とするわけではない。他のモードに従う他の構成において、または本発明の他の実施形態において、あるいはその両方において、キャッシュ・スライスCS0〜CS7は、さらにパーティションに分割されて、4個、8個、など、ハードウェア・スレッドのプールが利用可能な独立したパーティションで、SMTオペレーションをサポートしてもよく、8個の実行スライス、8個のロード/ストア・スライス、および8個のキャッシュ・スライスを有する例示される実施形態は、単に説明のためのものであり、より多くのスライスまたはクラスタが、本発明の他の実施形態において存在してもよい。
【0017】
ここで図3を参照すると、プロセッサ20内に実装される別の構成の特徴の一例が示される。図3では、実行スライスES0およびES1が、個々に実行スライスES0およびES1によって操作される命令の2倍の幅の、オペランド幅または演算子幅あるいはその両方を有する命令を実行するために、「スーパースライス」としてリンクされている。例えば、実行スライスES0およびES1は、64ビット幅を有することができ、また、モード制御信号の状態に従って、128ビットスーパースライスで組み合わされてもよい。かかる構成は、例えば、同じ命令によって処理されるベクトル・ペア内にオペランドを有する命令を実行するために使用されてもよい。代替えとして、または組み合わせて、演算子は、より広い演算子であってもよいし、または余剰の幅を必要とする直近のフィールドを含んでもよい。スーパースライス構成は、実行スライスのペアに限定されない。例えば、実行スライスES0〜ES7のうちの3つ以上が、さらに広いオペランドまたは演算子あるいはその両方の操作を提供するためにリンク可能であってもよい。より広い128ビットワイドのオペレーションについて、Disp0およびDisp1などのディスパッチ・キューも結合されてよい。代替えとして、より広いオペレーションが、ディスパッチ経路指定ネットワーク36上を、ディスパッチ・キューDisp0〜Disp7のうちの1つから実行スライスES0〜ES7のうちの2つ以上に対してディスパッチ経路指定されてもよい。かかる実施形態において、スーパースライスが、より広いオペレーションの実行に利用可能でない場合、より広いオペレーションは、ディスパッチからブロックされてもよく、かつ、スーパースライスが利用可能になるまで、ディスパッチ・キュー内に保持されてもよい。同じディスパッチ・キューを共有する他のハードウェア・スレッドについてのオペレーションを、継続してディスパッチすることができる。いくつかのワイド・オペレーション、ベクトルの各要素の一斉の実行を必要としないベクトル・オペレーションなどは、単一の実行スライスによって、またはスーパースライスの利用可能性を必要とすることなく、互いに素なセットの実行スライスによって実行されてもよい。ワイド命令を実行するためにスーパースライスの形式を管理する、制御ロジックのさらなる詳細について、図5図6、および図8を参照して、以下でさらに詳細に説明する。
【0018】
ここで図4を参照すると、プロセッサ・コア20のさらなる詳細が示される。プロセッサ・コア20は、分岐実行ユニット52と、命令フェッチ・ユニット(Iフェッチ)53と、命令のフェッチおよび順序付けを制御する命令シーケンサ・ユニット(ISU)30とを含む。入力命令バッファ(IB)51は、以下で図5図6、および図8を参照して説明するように、スライスのペアが、マスタ/スレーブ・スライスとしてオペレーションすることを可能にするなど、設定される種々のスレッド、および任意のスーパースライス構成について割り当てられる実行スライス・リソースに従って、命令のグループをマッピングするために、命令をバッファする。別の命令バッファ(Iバッファ)31は、命令ストリームのそれぞれについてディスパッチ・キュー(図2および図3のDisp0〜Disp7)を維持するようにパーティションに分割され、ディスパッチ経路指定ネットワーク32は、IBUF31を、セグメント化された実行およびロード/ストア・スライス50に接続させ、スライス50はキャッシュ・スライス46に接続される。命令フローおよびネットワーク制御ブロック57は、セグメント化された実行およびロード/ストア・スライス50、キャッシュ・スライス46、およびディスパッチ経路指定ネットワーク32の制御を行い、モード制御/スレッド制御ロジック59に従って、図2および図3に示されるようなスライスを構成する。命令完了ユニット58も設けられて、ISU30により順序付けされた命令の完了をトラッキングし、セグメント化された実行およびロード/ストア・スライス50内のロード/ストア・スライスによりライトバックオペレーションを制御する。電力管理ユニット56も、セグメント化された実行およびキャッシュ・スライス50内のアクティブなスライスの数を減少または増加させることによる省エネルギーのために備えてもよい。命令フローおよびネットワーク制御ブロック57は、単一のユニットとして示されるが、実行スライスES0〜ES7およびロード/ストア・スライスLS0〜LS7内ならびにその間のセグメント化された実行の制御は、それらスライスの中でパーティションに分割されて、実行スライスES0〜ES7およびロード/ストア・スライスLS0〜LS7のそれぞれが、他のスライスと通信を行いながら自らの実行フローおよび順序付けを制御することができるようにされてもよい。
【0019】
ここで図5を参照すると、制御フロー図が、実行スライスのマスタ/スレーブ・ペア内のワイド命令または命令のペアの、ディスパッチから発行にかけてのプロセスを示す。上記で触れたように、実行スライスES0〜ES7は、ロード/ストア・オペレーション、および、固定小数点(FX)命令またはベクトル/スカラ(VS)命令などの別のオペレーションを実行することができる。マスタ実行スライスの制御ロジック・フローが、図5の左部分に示され、スレーブ実行スライスの制御ロジック・フローが、図5の右部分に示される。ロード/ストア・ディスパッチ・サイクル、およびFXディスパッチなどの別のオペレーション・サイクルが、マスタ実行スライスにおいて開始され、許可ベクトル(allow vector)AllowMで示されるように、最も古く許可された命令が、許可ベクトルAllowMを用いてエイジ・アレイ(age array)92Aにアクセスすることにより、アクセスされる。マスタ実行スライスに対してディスパッチされたオペレーションは、マスタ実行スライス発行キューのエイジ・アレイ92Aによってインデックス化されたリザベーション・ステーション94Aに書き込まれ、スレーブ実行スライスのオペレーションは、スレーブ実行スライス発行キューのエイジ・アレイ92Bによってインデックス化されたリザベーション・ステーション94Bに書き込まれる。エイジ・アレイ92A、92Bは、オペレーションがディスパッチされた順番で情報を維持し、リザベーション・ステーション94Aまたは94Bにおいて、条件がオペレーションについてクリアされると、最も古いそのようなオペレーションを取得して発行することができる。エイジ・アレイ92Aは、対応するビットが許可ベクトルAllowM内に設定された最も古いエントリを返し、エントリが、インデックス/アドレスをリザベーション・ステーション94A内に提供し、これにより、マスタ・スライスFXオペランド・ラッチFXMop内にオペレーションを発行する。最も古いLSオペレーションを、エイジ・アレイ92A内の別個のルックアップを介して、同じサイクルでリザベーション・ステーション94AからLSオペランド・ラッチLSMopに発行することもできる。同様に、エイジ・アレイ92Bは、対応するビットが許可ベクトルAllowS内に設定された最も古いエントリを返し、エントリが、インデックス/アドレスをリザベーション・ステーション94B内に提供し、これにより、スレーブ・スライスFXオペランド・ラッチFXSop内に、オペレーションを発行する。最も古いLSオペレーションを、エイジ・アレイ92B内の別個のルックアップを介して、同じサイクルでリザベーション・ステーション94BからLSオペランド・ラッチLSSopに発行することもできる。マスタ実行スライスおよびスレーブ実行スライスの両方にわたって、1つのLSオペレーションおよび1つのFX/VSオペレーションを、サイクル毎、スライス毎に発行することができ、または、128ビット・ワイドFX/VSオペレーションの場合は、サイクル毎に1つの発行を行うことができる。
【0020】
ワイド・オペレーションがディスパッチされる場合、これは、本明細書では例示の説明のために、64ビット・実行スライスによって実行される128ビット・オペレーションであり、128ビット・オペレーションの両半分が、マスタ実行スライスとスレーブ実行スライスとに対してディスパッチされるが、エイジ・アレイ92A〜92Bからの異なるエントリでインデックス化されていてもよい。スレーブ実行スライスのエイジ・アレイ92Bにおけるエントリによってインデックス化された128ビット・オペレーションの半分のトラッキングを維持するために、キュー位置アレイ(Qpos)93が、マスタ実行スライス内に提供される。128ビット・オペレーションの半分が、スレーブ実行スライス内のエイジ・アレイ92Bに書き込まれるとき、その場所に対するポインタ/インデックスがキュー位置アレイ93に格納され、キュー位置アレイ93は、エイジ・アレイ92Aから取得されたインデックスでインデックス化される。ワイド(128ビット)オペレーションは、オペレーション・コードのそれぞれの半分を、リザベーション・ステーション94A、94Bに書き込んで、エイジ・アレイ92A、92Bにおいてエントリを生成することにより、ディスパッチされる。ビットが、エイジ・アレイ92A内のエントリに対応するラッチ128bにおいて設定され、エントリが128ビット(ワイド)オペレーションの一部であることを示す。各発行サイクルで、各スライスにおいて最も古い許可されたエントリを発行することに加えて、ルックアップが実行されて、最も古いレディ状態のエントリが128ビット(ワイド)オペレーションであるかどうかを、最も古いレディ状態のエントリを、論理AND演算子AND1として示されるラッチ128b内のビット・マスクと比較することにより、判定する。比較の結果が、マルチプレクサ91Aにより示される128ビット・レディ・ロジック128b Readyの出力と、64ビット・レディ・ロジック64b Readyの出力とから選択される。マルチプレクサ91Aの出力を使用して、次の発行サイクルの許可ベクトルAllowMに、許可ビットを設定する。同時に、次の発行サイクルがスレーブ実行スライスにおいて予約され、128ビット・オペレーションの両半分を同じサイクルで発行することができるようにする。
【0021】
本明細書に示される特定の実施形態において、スレーブ実行スライスにおける発行サイクルの予約は、128ビット・オペレーションが、最も古いレディ状態のオペレーションになるときに行われる。上記で触れたように、各発行サイクルにおいて、マスタ実行スライスが、設定されたレディ・フラグを有するエイジ・アレイ92A内の最も古いエントリを読み込む。エイジ・アレイ92A内の最も古いエントリが、128ビット・オペレーションに相当するかどうかにかかわらず、最も古い許可されたエントリが、64ビット・オペレーションまたは128ビット・オペレーションであり得る、現在の発行サイクル中にマスタ実行スライスおよびスレーブ実行スライスの両方にて発行される。発行される次のオペレーションについて、エイジ・アレイ92A内の最も古いレディ状態のエントリが、128ビットエントリに相当する場合、そのエントリに対応するエイジ・アレイ92Aの出力が使用されて、キュー位置アレイ93を使用してエイジ・アレイ92B内のエントリによってインデックス化された128ビット・オペレーションの半分を取得し、マルチプレクサ91Bが、スレーブ・レディ・ラッチRdy内のレディ状態の64ビット・オペレーションのセットではなく、キュー位置アレイ93の出力を選択する。選択された値がスレーブ許可ベクトルAllowSを更新するため、次の発行サイクルにおいて、128ビット・オペレーションの半分は、キュー位置アレイ93から提供されるインデックス/アドレスを使用して、リザベーション・ステーション94Bから取得されることになる。あるいは、発行される次のオペレーションが128ビット・オペレーションではない場合、スレーブ許可ベクトルAllowSがスレーブ・レディ・ラッチRdyから更新されて、最も古い64ビット・オペレーションが、エイジ・アレイ92B内の最も古いレディ状態のエントリのインデックス/アドレスを介して、リザベーション・ステーション94Bから取得されることになる。発行サイクルで2つの64ビットFX/VSオペレーションが発行されるのか、1つの128ビットFX/VSオペレーションが発行されるのか、にかかわらず、各発行サイクルにおいて、2つの64ビットロード/ストア・オペレーションが、リザベーション・ステーション94Aおよび94Bから発行される。但し、ロード/ストア・ディスパッチ・エントリが無い、レディ条件が合うオペレーションが無い、など他の条件が満たされない場合を除く。
【0022】
ここで図6を参照すると、実行スライスのマスタ/スレーブ・ペアを制御してワイド命令を発行する方法が示される。各発行サイクルにおいて、許可ビットが設定された最も古いFX/VSオペレーションが、マスタ実行スライスおよびスレーブ実行スライスの両方からの発行のために選択される(ステップ60)。最も古く許可されたオペレーションが、マスタ実行スライスおよびスレーブ実行スライスの両方にわたって発行され、これは、スーパースライスとして動作するマスタ実行スライスおよびスレーブ実行スライスにより発行される、2つの別々の64ビット・オペレーション、または1つの128ビット・オペレーションであり得る(ステップ61)。同時に、最も古いレディ状態のFX/VSオペレーションのエントリが、マスタ・スライス内のエイジ・アレイから取得される(ステップ62)。エントリが、128ビットFX/VSオペレーションに相当する場合(判断63)、許可ベクトル内の全てのレディ状態の128ビット・オペレーションに、許可ビットが設定され(ステップ64)、128ビット・オペレーションに相当するキュー位置アレイのエントリが選択され、スレーブ実行スライスの許可ベクトルの設定に使用されるため、128ビット・エントリの他方の半分に対応するビットが、許可ベクトル内に設定される(ステップ65)。許可ベクトルを設定した後、そのエントリのレディ・ビットがクリアされ(ステップ67)、次の発行サイクルでの発行用にセットアップ中のエントリが、続いてリロードされるのを防ぎ、システムまたはスキームがシャットダウンされるまで(ステップ69)、次の発行サイクルは、ステップ60〜69を繰り返すことにより開始される。
【0023】
ここで図7を参照すると、図2および図3の命令実行スライスES0〜ES7を実装するために使用することができる実行スライス(ES)42AAの一例が示される。ディスパッチ・キューからの入力が、ディスパッチ経路指定ネットワーク32を介してレジスタ・アレイ70によって受け取られ、オペランドおよび命令が、発行キュー75の実行リザベーション・ステーション(ER)73のキューに入れられるようにすることができる。レジスタ・アレイ70は、独立した命令ストリームについて、または、実行スライス42AAが、SIMD命令の複数の部分を実行するスーパースライスにおいて結合される場合に、独立したレジスタ・セットを有するようにアーキテクトされ、一方、スーパースライスにおいてクローンである依存するレジスタ・セットは、スーパースライスが非SIMD命令を実行しているインスタンスについてアーキテクトされる。エイリアス・マッパ71は、ライトバック経路指定ネットワーク37を介して他のスライスと交換されるライトバック値などの任意の外部参照に対して、レジスタ・アレイ70において値をマッピングする。履歴バッファHB76は、ES42AAによって実行される命令のレジスタ・ターゲットの復元能力を提供する。レジスタを、モード制御信号に応じて、ライトバック経路指定ネットワーク37を使用してスーパースライス間でコピーまたは移動させて、スレッドのセットへのスライスのアサインメント、または、結合した様式でオペレーションを行って、他の実行スライスと一緒にスーパースライスとして実行するスライスのアサインメントを、再構成できるようにすることができる。実行スライス42AAは、別の実行スライス42BBと並んで示され、スーパースライスを形成するために図2および図3の実行スライスES0〜ES7内の実行スライスのペア間で提供され得る、実行インターロック制御79を説明し、実行スライス42AAは、マスタ実行スライスとして構成可能であり、実行スライス42BBは、スレーブ実行スライスとして構成可能である。実行スライス42AA、実行スライス42BB、および実行インターロック制御79の詳細については、以下で図8を参照して説明する。実行インターロック制御79は、上記で説明したようなワイド命令/ベクトル命令実行を含む、単一命令ストリームの実行をサポートする実行スライス42AAと42BBとの間の調和を提供する。というのはそうでない場合には、実行スライスES0〜ES7は、その対応する命令ストリームの実行を単独で管理するからである。
【0024】
実行スライス42AAは、実行スライス42AAに対応する命令ストリームについて、順序が乱れた命令の実行、および同時の命令の実行をサポートする複数の内部実行パイプライン74A〜74Cおよび72を含む。実行パイプライン74A〜74Cおよび72によって実行される命令は、ディスパッチ経路指定ネットワーク32を介して受け取られる命令の一部を実装する内部命令であってもよいし、またはディスパッチ経路指定ネットワーク32を介して直接受け取られる命令であってもよく、すなわち、命令をパイプラインすることが、命令ストリーム自身によってサポートされてもよく、または、命令の復号が、実行スライス42AAの上流において実行されてもよい。実行パイプライン72は、別に多重化されて示されて、単一パイプライン、マルチパイプライン、または両方のタイプの実行ユニットが、実行スライス42AA内に提供されてもよいことを示す。実行スライス42AAによって実行される命令のタイプに応じて、パイプラインは、設計および機能において異なっていてもよく、または、いくつかもしくは全てのパイプラインが同一であってもよい。例えば、指定のパイプラインが、アドレス計算、スカラまたはベクトル・オペレーション、浮動小数点オペレーションなどについて提供されてもよい。マルチプレクサ77A〜77Cは、履歴バッファ76への実行結果の経路指定/履歴バッファ76からの実行結果の経路指定、ならびに、ライトバック経路指定ネットワーク37、I/O経路指定ネットワーク39、およびAGEN経路指定ネットワーク38へのライトバック結果の経路指定、を提供し、これらは、スライスまたはオペレーション間で共有するための指定のデータを経路指定するため、または、ロード/ストア・スライスLS0〜LS7のうちの1つまたは複数に送られるアドレスまたはデータあるいはその両方のロードおよびストアのため、に提供されてもよい。データ、アドレス、および再循環キュー(DARQ)78は、次に消費するロード/ストア・スライスLS0〜LS7または実行スライスES0〜ES7によって速やかに受け入れられるようには保証されないロード/ストア・アドレスまたはストア・データなどの、実行結果または部分的結果を保持する。DARQ78内に格納された結果または部分的結果は、ロード/ストア・スライスLS0〜LS7のうちの1つ、または、暗号プロセッサ34A、34Bのうちの1つなどの特別な実行ユニット、などに将来のサイクルで送られる必要があり得る。DARQ78内に格納されたデータは、次に、それぞれマルチプレクサ77Bまたは77Cによって、AGENバス38またはストア・データ・バス39上に多重化されてもよい。
【0025】
ここで図8を参照すると、概して実行インターロック制御79に対応する、実行スライス42AAおよび実行スライス42BB内の制御ロジックの詳細が、本発明の一実施形態に従って示される。簡略を期して、LSオペレーションの発行を制御するための制御ロジックは示さないが、実行スライス42AAおよび実行スライス42BBが、異なる幅のLSオペレーションの発行については、リンクされない/非リンクであるからである。エイジ・アレイ92Aは、2つの8ビット入力ポートを有し、それぞれ2つの8ビット出力ポートから8個のエントリのうちの1つにアクセス可能である。ポート毎に、エイジ・アレイ92Aは、対応するビットが、対応する入力ポートにて提供されるバイトに設定された、最も古いエントリにインデックスを返す。エイジ・アレイ92Aへの一方の入力が、ラッチL1A内の許可発行ベクトルから提供され、他方の入力は、ラッチL1A内のFX/VSレディ・ベクトルである。各発行サイクルにおいて、許可発行ベクトル内にビット・セットを有する最も古いエントリが、エイジ・アレイ92Aから取得され、使用されて、リザベーション・ステーション94AからFX/VSオペレーションが取得され、マスタ・スライスFX/VSオペレーション・ラッチFXMop内にロードされる。同じ発行サイクルにおいて、FX/VSレディ・ベクトル内にビット・セットを有する、エイジ・アレイ92A内の最も古いエントリが、8ビットAND−OR論理96によって、ラッチL1A内の128bベクトルと比較され、最も古いレディ状態のオペレーションが128ビット・オペレーションであるなら、制御信号overwriteがアサートされる。制御信号overwriteに起因して、マルチプレクサ91Aが128ビットFX/VSレディ・ロジック90Aの出力を選択し、これにより、ラッチL1A内の許可発行ベクトルが、レディ状態の128ビットFX/VSオペレーションのセットを表すビット・フィールドに設定される。また、FX/VSレディ・ベクトル内にビット・セットを有する、エイジ・アレイ92A内の最も古いエントリは、8ビット・インバータINVMにより逆変換されて、8ウェイ論理ANDゲートAND2に提供されるマスクを形成し、ラッチL1A内のFX/VSレディ・ベクトルに設定されている状態から、ラッチL1A内の許可発行ベクトルにおいて更新されるエントリをマスク・オフし、エイジ・アレイ92Aから取得されたエントリが、後続のサイクルで許可発行ベクトルに設定されることを防ぐ。8ウェイ論理ORゲートOR1は、128ビットFX/VSレディ・ロジック90Aおよび64ビットFX/VSレディ・ロジック90Bの出力をマージして、全てのレディ状態のオペレーション(8ウェイ論理ANDゲートAND2によりマスクされるオペレーションを除く)が、次の発行サイクルにおいて、ラッチL1A内にFX/VSレディ・ベクトルで表されるようにする。
【0026】
スレーブ実行スライスとして構成される実行スライス42BBにおいて、上書き発行サイクルが、アサートされた状態にある制御信号overwriteによってトリガされ、次の発行サイクルを、最も古い128ビット・オペレーションの他方の半分の発行用に効果的に予約する。これは、上記で説明したように、実行スライス42AAからの発行のためにセットアップされているものである。制御信号overwriteに起因して、エイジ・アレイ92Aにより出力される最も古いレディ状態のエントリの1ホット・リード・アドレス(1-hot read address)を使用して、キュー位置アレイ93内の8ビット・エントリのうちの1つを選択するセレクタ91Cの出力を、マルチプレクサ91Bが選択する。キュー位置アレイ93から選択されたエントリは、ラッチL1B内の次の許可発行ベクトルを上書きし、スレーブ実行スライス42BB内の次の発行オペレーションが、次の発行サイクルにおいて128ビット・オペレーションを発行するために、ラッチL1A内に書き込まれている許可発行ベクトルに対応するマスタ実行スライス42AA内の128ビット・オペレーションに対応するリザベーション・ステーション94B内に格納された128ビット・オペレーションの半分となるようにする。上記のオペレーションとは独立して、マスタ実行スライス42AAは、リザベーション・ステーション94AからFX/VSオペレーション・ラッチL2A内への発行のためのエイジ・アレイ92Aの出力の際に、ラッチL1A内の許可発行ベクトルによって選択される次のオペレーションを発行し、スレーブ実行スライス42BBは、リザベーション・ステーション94BからFX/VSオペレーション・ラッチL2B内へのエイジ・アレイ92Bの出力の際に、ラッチL1B内の許可発行ベクトルによって選択される次のオペレーションを発行する。上記のオペレーションが、マスタ実行スライス42AAおよびスレーブ実行スライス42BBのそれぞれにおいて、最も古い64ビット・オペレーションを発行するのは、128ビット・オペレーションが、エイジ・アレイ92A内で最も古いレディ状態のオペレーションになる後の次の発行サイクルまでであり、そのとき、許可された128ビット・オペレーションを示すマスクは、ラッチL1A内にプレロードされており、最も古く許可された128ビット・オペレーション128−bit overrideに対応するエイジ・アレイ92B内のエントリのインデックス/アドレスは、ラッチL2B内にロードされており、そのため、最も古く許可された128ビット・オペレーションが、並列したマスタ実行スライス42AAおよびスレーブ実行スライス42BBの両方によって発行される。
【0027】
ここで図9を参照すると、図2および図3のロード/ストア・スライスLS0〜LS7を実装するために使用することができるロード/ストア(LS)スライス44の一例が示される。ロード/ストア・アクセス・キュー(LSAQ)80は、AGENバス38と接続され、AGENバス38およびLSAQ80への直接接続は、キャッシュ・スライス46内のデータ・キャッシュ82のキャッシュ・ディレクトリ83にメモリ・バス40を介して入力を提供するマルチプレクサ81により、選択される。また、マルチプレクサ81の出力は、ロード・リオーダ・キュー(LRQ:load reorder queue)87もしくはストア・リオーダ・キュー(SRQ:storereorder queue)88への、LSAQ80から、もしくはAGENバス38からの入力、または、ロード/ストア・スライス44内の図示されない他の実行設備への入力を提供する。ロード/ストア・スライス44は、ロード/ストア・オペレーションおよび他の関連するキャッシュ・オペレーションを実行する、ロード/ストア・ユニットの1つまたは複数のインスタンスを含んでもよい。LSスライス44に対して発行されたキャッシュ・オペレーションの実行をトラッキングするために、LRQ87およびSRQ88は、逐次一貫性またはプロセッサ・アーキテクチャにより必要とされるような他の属性あるいはその両方について、キャッシュ・オペレーションをトラッキングするためのエントリを含む。LSスライス44は、AGENバス38を介して実行スライスES0〜ES7のうちの1つまたは複数から、サイクル毎に複数のオペレーションを受け取ることができるようにしてもよいが、LSスライス44の制限により、アクセスの全てが所与の実行サイクルで一斉に実行可能でなくてもよい。かかる条件下で、LSAQ80は、まだ実行されないオペレーションに対応するエントリを格納する。SRQ88は、ストア・データ・バス39からストア・オペレーションのデータを受け取り、これは、計算されたストア・アドレスなどのオペレーション情報とペアにされる。オペレーションが実行されると、LSスライス44およびキャッシュ・スライス46によって形成されるロード/ストア・パイプ内で、キャッシュ・ミス、アドレス・トランザクションの失敗、キャッシュ読み/書きコンフリクト、欠損データ、または、そのようなオペレーションを実行することで遅延や再試行を伴う他の失敗、などの危険に遭遇することがある。いくつかの実施形態において、LRQ87およびSRQ88は、オペレーションを、実行用のロード/ストア・パイプライン内に再発行するように構成され、実行スライスES0〜ES7の制御およびオペレーションとは無関係にオペレーションを提供する。かかる構成により、ロード/ストア・スライスLS0〜LS7のうちの1つまたは複数が、リソースの割り当て取り消しが条件づけられたオペレーションまたはデータあるいはその両方を受け取るとすぐに、実行スライスES0〜ES7内のリソースが解放される。LSAQ80は、オペレーションが実行されるとすぐに、または、オペレーションのエントリまたはデータあるいはその両方が、一旦LRQ87またはSRQ88内に格納されると、リソースを開放してもよい。LSスライス44内の制御ロジックは、ロード/ストア・オペレーションを発行する特定の実行スライスES0〜ES7内のDARQ78と通信して、オペランド、アドレス、およびデータの受け入れを調和させる。他のロード/ストア・スライスへの接続は、AGENバス38およびライトバック経路指定ネットワーク37によって提供され、これらは、キャッシュ・スライス46のデータ・キャッシュ82からデータを受け取り、別のスライスのデータ非アライメント・ブロック84にデータを提供するために接続される。データ・フォーマッティング・ユニット85は、キャッシュ・スライス44を、バッファ86を介してライトバック経路指定ネットワーク37に接続して、ライトバック結果が、1つの実行スライスから別の実行スライスのリソースにライト・スルーされることを可能にする。キャッシュ・スライス46のデータ・キャッシュ82は、より高次のキャッシュ/システム・メモリから値をロードするために、および、データ・キャッシュ82から値をフラッシュまたはキャスト・アウトするために、I/O経路指定ネットワーク41にも接続される。本開示に与えられた例では、命令実行スライスES0〜ES7に対してディスパッチされた命令が、完全な外部命令、または、外部命令の一部、すなわち、復号された「内部命令」であり得ることが理解される。さらに、所与のサイクルで、命令実行スライスES0〜ES7のいずれかに対してディスパッチされた内部命令の数が、1より大きいことがあり、また、命令実行スライスES0〜ES7の1つ1つが、必ずしも所与のサイクルで内部命令を受け取るわけではない。
【0028】
本発明が、その好ましい実施形態を参照して特に示され説明されたが、本発明の範囲から逸脱することなく、前述のもの、ならびに形式および詳細における他の変更がなされてよいことは、当業者によって理解されるであろう。
図1
図2
図3
図4
図5
図6
図7
図8
図9