(57)【特許請求の範囲】
【請求項１】
プロセッサ・コアにおいて使用するための実行スライス回路であって、
第１の命令ストリームの命令を受け取るための第１の発行キューを有するマスタ実行スライスと、
スレーブ実行スライスであって、第２の命令ストリームの命令、および、前記マスタ実行スライスと前記スレーブ実行スライスの幅のうち、より小さいほうの幅よりも大きい実行幅を必要とする前記第１の命令ストリームの命令、を受け取るための第２の発行キューを有する前記スレーブ実行スライスと、
前記第１の命令ストリームの第１の命令が前記大きい実行幅を有することを検出したことに応じて、前記マスタ実行スライスおよび前記スレーブ実行スライスにわたって並列に前記第１の命令を発行するための第１の発行サイクルを予約するように前記スレーブ実行スライスを制御する、制御ロジックと、
を備える実行スライス回路。
【請求項２】
前記制御ロジックが、前記スレーブ実行スライスの以前の発行サイクル中に前記第１の発行サイクルを予約し、前記スレーブ実行スライスが、前記制御ロジックが前記第１の発行サイクルを予約してある間に前記第２の命令ストリームの命令を発行し、前記制御ロジックが、後続の発行サイクルにおいて前記マスタ実行スライスおよび前記スレーブ実行スライスにわたって並列に前記第１の命令を発行する、請求項１の実行スライス回路。
【請求項３】
前記制御ロジックは、前記第１の命令ストリームの前記第１の命令が前記大きい実行幅を有することを検出したことに応じて、前記第１の命令が発行を許可されたということを示す前記第１の命令の発行キュー・エントリに対応する許可ビットを設定し、次の発行サイクルにおいて、前記マスタ実行スライスが、前記許可ビットが設定されたことを検出したことに応じて、前記第１の命令の対応する部分を発行する、請求項２の実行スライス回路。
【請求項４】
前記マスタ実行スライスは、前記マスタ実行スライスに対してディスパッチされたがまだ発行されていない前記第１の命令ストリームの命令を含む第１のシーケンスの第１の標示を格納するための第１のエイジ・アレイを含み、前記制御ロジックは、発行についてレディ状態にある前記第１のエイジ・アレイ内に存在する最も古い命令に対応するエントリを前記第１のエイジ・アレイから取得することであって、前記第１の命令ストリームの前記第１の命令が、前記第１のエイジ・アレイ内に存在する最も古い命令である、前記取得することと、前記取得されたエントリを、どのエントリが前記大きい実行幅を有するのかを示すマスクと比較することとを実行することによって、前記制御ロジックは、前記第１の命令ストリームの前記第１の命令が前記大きい実行幅を有することを検出する、請求項３の実行スライス回路。
【請求項５】
前記スレーブ実行スライスは、前記スレーブ実行スライスに対してディスパッチされたがまだ発行されていない前記第２の命令ストリームの命令を含む第２のシーケンスの第２の標示を格納するための第２のエイジ・アレイを含み、発行サイクルにおいて、前記制御ロジックが、前記第１のエイジ・アレイの最も古い許可されたエントリと、前記第２のエイジ・アレイの最も古い許可されたエントリとを取得し、前記取得されたエントリを使用して、前記マスタ実行スライスおよび前記スレーブ実行スライスによる実行用の対応する命令を発行する、請求項４の実行スライス回路。
【請求項６】
前記以前の発行サイクルにおいて、前記制御ロジックは、前記第１の命令ストリームの前記第１の命令が前記大きい実行幅を有することを検出したことに応じて、前記第２のエイジ・アレイ内の許可されたエントリを示すビット・フィールドを、前記次の発行サイクルにおいて前記スレーブ実行スライスによって発行される前記スレーブ実行スライスに対応する前記第１の命令の部分を指定する値に上書きする、請求項５の実行スライス回路。
【請求項７】
前記制御ロジックは、許可ベクトルを、次の発行サイクルにおいて前記スレーブ実行スライスによって発行される前記スレーブ実行スライスに対応する前記第１の命令の部分を指定する値で上書きすることにより、前記第１の発行サイクルを予約する、請求項２の実行スライス回路。
【請求項８】
プロセッサ・コアであって、
複数の命令ストリームの命令を受け取るための複数のディスパッチ・キューと、
前記複数の命令ストリームを並列に実行するための複数の並列する命令実行スライスであって、第１の命令ストリームの命令を受け取るための第１の発行キューを有するマスタ実行スライス、ならびにスレーブ実行スライスであって、第２の命令ストリームの命令、および、前記マスタ実行スライスと前記スレーブ実行スライスの幅のうち、より小さいほうの幅よりも大きい実行幅を必要とする前記第１の命令ストリームの命令、を受け取るための第２の発行キューを有する前記スレーブ実行スライス、を含む、前記複数の並列する命令実行スライスと、
前記ディスパッチ・キューの出力を前記命令実行スライスに経路指定するためのディスパッチ経路指定ネットワークと、
前記ディスパッチ経路指定ネットワークを介して前記複数の命令ストリームの前記命令を前記複数の並列する命令実行スライスの発行キューに対してディスパッチするディスパッチ制御ロジックと、
前記第１の命令ストリームの第１の命令が前記大きい実行幅を有することを検出したことに応じて、前記マスタ実行スライスおよび前記スレーブ実行スライスにわたって並列に前記第１の命令を発行するための第１の発行サイクルを予約するように前記スレーブ実行スライスを制御する、制御ロジックと
を備えるプロセッサ・コア。
【請求項９】
前記制御ロジックが、前記スレーブ実行スライスの以前の発行サイクル中に前記第１の発行サイクルを予約し、前記スレーブ実行スライスが、前記制御ロジックが前記第１の発行サイクルを予約してある間に前記第２の命令ストリームの命令を発行し、前記制御ロジックが、後続の発行サイクルにおいて、前記マスタ実行スライスおよび前記スレーブ実行スライスにわたって並列に前記第１の命令を発行する、請求項８のプロセッサ・コア。
【請求項１０】
前記制御ロジックは、前記第１の命令ストリームの前記第１の命令が前記大きい実行幅を有することを検出したことに応じて、前記第１の命令が発行を許可されたということを示す前記第１の命令の発行キュー・エントリに対応する許可ビットを設定し、次の発行サイクルにおいて、前記マスタ実行スライスが、前記許可ビットが設定されたことを検出したことに応じて、前記第１の命令の対応する部分を発行する、請求項９のプロセッサ・コア。
【請求項１１】
前記マスタ実行スライスは、前記マスタ実行スライスに対してディスパッチされたがまだ発行されていない前記第１の命令ストリームの命令を含む第１のシーケンスの第１の標示を格納するための第１のエイジ・アレイを含み、前記制御ロジックは、発行についてレディ状態にある前記第１のエイジ・アレイ内に存在する最も古い命令に対応するエントリを前記第１のエイジ・アレイから取得することであって、前記第１の命令ストリームの前記第１の命令が、前記第１のエイジ・アレイ内に存在する最も古い命令である、前記取得することと、前記取得されたエントリを、どのエントリが前記大きい実行幅を有するのかを示すマスクと比較することとを実行することによって、前記制御ロジックは、前記第１の命令ストリームの前記第１の命令が前記大きい実行幅を有することを検出する、請求項１０のプロセッサ・コア。
【請求項１２】
前記スレーブ実行スライスは、前記スレーブ実行スライスに対してディスパッチされたがまだ発行されていない前記第２の命令ストリームの命令を含む第２のシーケンスの第２の標示を格納するための第２のエイジ・アレイを含み、発行サイクルにおいて、前記制御ロジックが、前記第１のエイジ・アレイの最も古い許可されたエントリと、前記第２のエイジ・アレイの最も古い許可されたエントリとを取得し、前記取得されたエントリを使用して、前記マスタ実行スライスおよび前記スレーブ実行スライスによる実行用の対応する命令を発行する、請求項１１のプロセッサ・コア。
【請求項１３】
前記以前の発行サイクルにおいて、前記制御ロジックは、前記第１の命令ストリームの前記第１の命令が前記大きい実行幅を有することを検出したことに応じて、前記第２のエイジ・アレイ内の許可されたエントリを示すビット・フィールドを、前記次の発行サイクルにおいて前記スレーブ実行スライスによって発行される前記スレーブ実行スライスに対応する前記第１の命令の部分を指定する値に上書きする、請求項１２のプロセッサ・コア。
【請求項１４】
前記制御ロジックは、許可ベクトルを、次の発行サイクルにおいて前記スレーブ実行スライスによって発行される前記スレーブ実行スライスに対応する前記第１の命令の部分を指定する値で上書きすることにより、前記第１の発行サイクルを予約する、請求項９のプロセッサ・コア。
【請求項１５】
プロセッサ・コアによりプログラム命令を実行する方法であって、
第１の発行キューを有するマスタ実行スライスにおいて第１の命令ストリームの命令を受け取るステップと、
第２の発行キューを有するスレーブ実行スライスにおいて、第２の命令ストリームの命令、および、前記マスタ実行スライスと前記スレーブ実行スライスの幅のうち、より小さいほうの幅よりも大きい実行幅を必要とする前記第１の命令ストリームの命令、を受け取るステップと、
前記第１の命令ストリームの第１の命令が前記大きい実行幅を有することを検出するステップと、
前記第１の命令が前記大きい実行幅を有することを検出したことに応じて、制御ロジックを用いて前記マスタ実行スライスおよび前記スレーブ実行スライスにわたって並列に前記第１の命令を発行するための第１の発行サイクルを予約するように前記スレーブ実行スライスを制御するステップと
を含む方法。
【請求項１６】
前記スレーブ実行スライスの以前の発行サイクル中に前記第１の発行サイクルを予約するステップと、
前記制御ロジックが前記第１の発行サイクルを予約してある間に、前記第２の命令ストリームの命令を前記スレーブ実行スライスから発行するステップと、
後続の発行サイクルにおいて、前記マスタ実行スライスおよび前記スレーブ実行スライスにわたって並列に前記第１の命令を発行するステップと
をさらに含む、請求項１５の方法。
【請求項１７】
前記第１の命令ストリームの前記第１の命令が前記大きい実行幅を有することを検出したことに応じて、前記第１の命令が発行を許可されたということを示す前記第１の命令の発行キュー・エントリに対応する許可ビットを設定するステップと、
次の発行サイクルにおいて、前記許可ビットが設定されたことを検出したことに応じて、前記第１の命令の対応する部分を発行するステップと
をさらに含む、請求項１６に記載の方法。
【請求項１８】
前記マスタ実行スライスは、前記マスタ実行スライスに対してディスパッチされたがまだ発行されていない前記第１の命令ストリームの命令を含む第１のシーケンスの第１の標示を格納するための第１のエイジ・アレイを含み、前記方法は、
発行についてレディ状態にある前記第１のエイジ・アレイ内に存在する最も古い命令に対応するエントリを前記第１のエイジ・アレイから取得するステップであって、前記第１の命令ストリームの前記第１の命令が、前記第１のエイジ・アレイ内に存在する最も古い命令である、前記取得するステップと、
前記取得されたエントリを、どのエントリが前記大きい実行幅を有するのかを示すマスクと比較するステップとをさらに含み、前記制御ロジックは、前記第１の命令ストリームの前記第１の命令が前記大きい実行幅を有することを検出する、請求項１７の方法。
【請求項１９】
前記スレーブ実行スライスは、前記スレーブ実行スライスに対してディスパッチされたがまだ発行されていない前記第２の命令ストリームの命令を含む第２のシーケンスの第２の標示を格納するための第２のエイジ・アレイを含み、前記方法は、
発行サイクルにおいて、前記第１のエイジ・アレイの最も古い許可されたエントリと、前記第２のエイジ・アレイの最も古い許可されたエントリとを取得するステップと、
前記取得されたエントリを使用して、前記マスタ実行スライスおよび前記スレーブ実行スライスによる実行用の対応する命令を発行するステップと
をさらに含む、請求項１８の方法。
【請求項２０】
前記第１の命令ストリームの前記第１の命令が前記大きい実行幅を有することを検出したことに応じて、前記第２のエイジ・アレイ内の許可されたエントリを示すビット・フィールドを、次の発行サイクルにおいて前記スレーブ実行スライスによって発行される前記スレーブ実行スライスに対応する前記第１の命令の部分を指定する値に上書きするステップをさらに含む、請求項１９の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセシング・システムおよびプロセッサに関し、より詳細には、並列実行スライス発行キューが、異なる幅の命令を実行するためにリンクされる、再構成可能なアーキテクチャを用いた、パイプライン化されたプロセッサ・コアに関する。
【背景技術】
【０００２】
今日のプロセッサ・コアでは、パイプラインが使用されて、複数の命令ストリームに対応する複数のハードウェア・スレッドを実行し、その結果、リソース共有によって、さらに、１つまたは複数のハードウェア・スレッドがイベントを待っている間でも実行が進むようにすることによって、プロセッサ・リソースのより効率的な使用を提供することができる。
【０００３】
典型的な実行パイプラインは、固定幅の命令を実行するように、またはベクトル命令の一部を並列に実行するように、セットアップされるが、これは、命令の実行を管理する制御ロジックが、典型的には固定されているからである。かかるアーキテクチャは、その固定された命令実行アーキテクチャに制約され、並列プロセッサが非ベクトル命令を実行しているとき、プロセッサ・リソースは、典型的には使用されていない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、プロセッサ・コア、およびプロセッサ・コア・リソースの改善された使用をもたらすプログラム命令を処理するための方法、を提供することが望ましい。
【課題を解決するための手段】
【０００５】
本発明の好ましい実施形態は、プロセッサ・コアの実行スライス回路、かかる実行スライス回路を備えるプロセッサ・コア、プロセッサ・コアのオペレーションの方法、およびプロセッサにおいて具現化される。
【０００６】
実行スライス回路は、第１の命令ストリームの命令を受け取るためのマスタ実行スライスと、第２の命令ストリームの命令、およびスライス幅より大きい実行幅を必要とする第１の命令ストリームの命令、を受け取るためのスレーブ実行スライスと、を含む複数の命令ストリームを実行するための複数の並列する命令実行スライスを含む。また、実行スライス回路は、制御ロジックを含み、制御ロジックは、第１の命令ストリームの第１の命令が上記大きい実行幅を有することを検出したことに応じて、マスタ実行スライスおよびスレーブ実行スライスにわたって並列に第１の命令を発行するための第１の発行サイクルを予約するようにスレーブ実行スライスを制御する。
【０００７】
本発明の上記および他の目的、特徴、ならびに利点は、添付の図面に示されるように、以下のより詳細な、本発明の好ましい実施形態の説明から、明らかになるであろう。
【０００８】
本発明に特有と考えられる新規の特徴は、添付の請求項において記載される。しかし、本発明自体だけでなく、その使用、さらなる目的、および利点、の好ましいモードも、以下の本発明の詳細な説明を、添付の図面と併せて読み、参照することにより、最良に理解されるであろう。図面において、同様の参照番号は同様の構成要素を表す。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態に係る技術が実施される、プロセシング・システムを示すブロック図である。
【図２】図１のプロセッサ・コア２０Ａ〜２０Ｂを実装するために使用することができるプロセッサ・コア２０の詳細を示すブロック図である。
【図３】特定のオペレーティング・モードのプロセッサ・コア２０の構成を示す絵図である。
【図４】プロセッサ・コア２０の詳細を示すブロック図である。
【図５】プロセッサ・コア２０内に実装されてもよい例示の制御フローを示す制御フロー図である。
【図６】プロセッサ・コア２０のオペレーションの方法を示すフローチャートである。
【図７】図２および図３の命令実行スライスＥＳ０〜ＥＳ７を実装するために使用することができる命令実行スライス４２ＡＡの詳細を例示するブロック図である。
【図８】図７の実行インターロック制御ロジック７９の例示の実施形態の詳細を示すブロック図である。
【図９】図２および図３のロード／ストア・スライスＬＳ０〜ＬＳ７を実装するために使用することができるキャッシュ・スライス４４の詳細を示すブロック図である。
【発明を実施するための形態】
【００１０】
本発明は、シングルスレッド・モード、マルチスレッド・モード、および異なる数の同時に実行されるハードウェア・スレッドから選択し得る１つまたは複数のスレッド・モード制御信号に基づき、リソースのサブセットを効率的に割り当てるために再構成することができる実行スライスに、従来のパイプラインが置き換えられた、プロセッサおよびプロセシング・システムに関する。特に、以下で説明するプロセッサは実行スライスを含み、実行スライスは、制御ロジックを用いて、マスタ／スレーブ・スライスとしてペアにされて、より幅の広い命令が、スライスに対してディスパッチされるときに、２つのスライスを結合することにより、スライスの基本の幅よりも大きい幅を必要とする命令の実行を認可する。
【００１１】
ここで図１を参照すると、本発明の一実施形態に係るプロセシング・システムが示される。図示されるプロセシング・システムは、本発明の一実施形態にそれぞれが適合する、いくつかのプロセッサ１０Ａ〜１０Ｄを含む。図示されるマルチプロセシング・システムは説明のためのものであり、本発明の他の実施形態に係るプロセシング・システムは、マルチスレッド・コアを有するユニプロセッサ・システムを含む。プロセッサ１０Ａ〜１０Ｄは構造が同一であり、コア２０Ａ〜２０Ｂ、およびローカル・ストレージ１２を含み、ローカル・ストレージ１２はキャッシュ・レベルであってもよいし、内部システム・メモリのレベルであってもよい。プロセッサ１０Ａ〜１０Ｄは、メイン・システム・メモリ１４と、ストレージ・サブシステム１６とに接続され、ストレージ・サブシステム１６は、着脱不可ドライブおよび光学式ドライブを含み、このドライブは、ＣＤ−ＲＯＭ１７などのメディアを読むためのものであり、このメディアは、コンピュータ・プログラム製品を形成し、少なくとも１つのオペレーティング・システム、関連するアプリケーション・プログラム、および、任意に、プロセッサ１０Ａ〜１０Ｄによる実行のために複数のオペレーティング・システムのパーティションを制御するハイパーバイザ、を一般には実装するプログラム命令を含むものである。また、図示されるプロセシング・システムは、ユーザ入力を受け取るためのマウスおよびキーボード、ならびに情報を表示するためのグラフィック・ディスプレイなどの入出力（Ｉ／Ｏ）インターフェースおよびデバイス１８を含む。図１のシステムは、本発明のプロセッサ・アーキテクチャが実装されるシステムの説明を提供するために使用されるが、図示されるアーキテクチャは、限定するものではなく、本発明の技術が適用される適切なコンピュータ・システムの一例を提供することが意図されていることが理解される。
【００１２】
ここで図２を参照すると、図１のプロセッサ・コア２０Ａ〜２０Ｂを実装するために使用することができる例示のプロセッサ・コア２０の詳細が示される。プロセッサ・コア２０には、キャッシュまたはシステム・メモリからフェッチされる複数の命令ストリームを格納し、２つのクラスタＣＬＡおよびＣＬＢそれぞれのうちの複数のディスパッチ・キューＤｉｓｐ０〜Ｄｉｓｐ７に対してバス３２を介して命令ストリームを提示する、命令キャッシュ（Ｉキャッシュ）５４および命令バッファ（ＩＢＵＦ）３１が含まれる。プロセッサ・コア２０内の制御ロジックは、ディスパッチ・キューＤｉｓｐ０〜Ｄｉｓｐ７のいずれかからクラスタＣＬＡおよびＣＬＢのどちらかの命令実行スライスＥＳ０〜ＥＳ７のいずれかへの命令を認可するディスパッチ経路指定ネットワーク３６を介した、ディスパッチ・キューＤｉｓｐ０〜Ｄｉｓｐ７から複数の命令実行スライスＥＳ０〜ＥＳ７への命令のディスパッチを制御するが、完全なクロスポイント経路指定、すなわち、任意のディスパッチ・キューから任意のスライスへの経路指定は、本発明の要件ではない。以下で説明されるような特定の構成において、クラスタＣＬＡ内のディスパッチ・キューＤｉｓｐ０〜Ｄｉｓｐ３からの命令のディスパッチは、クラスタＣＬＡ内の実行スライスＥＳ０〜ＥＳ３に制限され、同様に、クラスタＣＬＢ内のディスパッチ・キューＤｉｓｐ４〜Ｄｉｓｐ７からの命令のディスパッチは、実行スライスＥＳ４〜ＥＳ７に制限される。命令実行ｇＥＳ０〜ＥＳ７は、命令ストリーム内の命令の命令サイクルの実行サイクル部分を実行するための、論理的オペレーション、数学的オペレーション、および必要に応じて他のオペレーション、の順序付け（sequencing）および実行を行い、同一の汎用命令実行スライスＥＳ０〜ＥＳ７であってもよく、または、プロセッサ・コア２０は、専用の実行スライスＥＳ０〜ＥＳ７を含んでもよい。暗号プロセッサ３４Ａ〜３４Ｂ、浮動小数点ユニット（ＤＦＵ）３３Ａ〜３３Ｂ、および別個の分岐実行ユニット（ＢＲＵ）３５Ａ〜３５Ｂなどの他の専用ユニットを含んで、他のタスクを実行するために汎用実行スライスＥＳ０〜ＥＳ７を解放することもできる。命令実行スライスＥＳ０〜ＥＳ７は、複数の命令または命令の一部あるいはその両方を実行するための複数の内部パイプラインを含んでもよい。
【００１３】
命令実行サイクルのロード／ストア部分、（すなわち、内部レジスタの読み／書きに対立するものとして、キャッシュ一貫性を維持するために実行されるオペレーション）が、複数のロード／ストア（ＬＳ）スライスＬＳ０〜ＬＳ７により実行され、ＬＳは、命令実行スライスＥＳ０〜ＥＳ７と、最低次のキャッシュ・メモリのパーティションである複数のキャッシュ・スライスＣＳ０〜ＣＳ７によって形成されるキャッシュ・メモリとの間のようなロードおよびストアのオペレーションを管理する。図示される実施形態では、キャッシュ・スライスＣＳ０〜ＣＳ３が、パーティションＣＬＡに対してアサインされ、キャッシュ・スライスＣＳ４〜ＣＳ７が、パーティションＣＬＢに対してアサインされ、ロード／ストア・スライスＬＳ０〜ＬＳ７のそれぞれが、専用のメモリ・バス４０のうちの対応する１つを介して、キャッシュ・スライスＣＳ０〜ＣＳ７のうちの対応する１つへのアクセスを管理する。他の実施形態においては、キャッシュを固定のパーティションに分割しなくてもよく、個々のキャッシュ・スライスＣＳ０〜ＣＳ７またはキャッシュ・スライスの全体のセットのうちのサブグループが、メモリ・バス４０を共有のメモリ・バス（単数または複数）として実装することにより、ロード／ストア・スライスＬＳ０〜ＬＳ７のうちの２つ以上に接続されてもよい。ロード／ストア・スライスＬＳ０〜ＬＳ７は、ロード・オペレーションに応答するなど、対応するキャッシュ・スライスＣＳ０〜ＣＳ７から結果データを戻すためのライトバック（結果）経路指定ネットワーク３７により、命令実行スライスＥＳ０〜ＥＳ７に接続される。また、ライトバック経路指定ネットワーク３７は、命令実行スライスＥＳ０〜ＥＳ７間のライトバック結果の通信も提供する。アドレス生成（ＡＧＥＮ）バス３８およびストア・データ・バス３９は、ロード／ストア・スライスＬＳ０〜ＬＳ７に対して通信されるロードおよびストアのオペレーションのための通信を提供する。例えば、ＡＧＥＮバス３８およびストア・データ・バス３９は、ストア・オペレーションがフラッシュまたは無効化されない場合には、メモリ・バス４０のうちの１つを介して、キャッシュ・スライスＣＳ０〜ＣＳ７のうちの１つに、または、キャッシュ・スライスＣＳ０〜ＣＳ７がＩ／Ｏバス４１を介して接続されるより高次レベルのメモリ階層の場所に、最終的に書き込まれるストア・オペレーションを搬送する。キャッシュ・スライスＣＳ０〜ＣＳ７のうちの１つを失ったロード・オペレーションは、ロード／ストア・スライスＬＳ０〜ＬＳ７のうちの１つによって、特定のキャッシュ・スライスＣＳ０〜ＣＳ７に対して発行された後、Ｉ／Ｏバス４１を介して、要求された値を特定のキャッシュ・スライスＣＳ０〜ＣＳ７にロードすることにより、または、直接キャッシュ・スライスＣＳ０〜ＣＳ７およびメモリ・バス４０を通して要求を発行したロード／ストア・スライスＬＳ０〜ＬＳ７にロードすることにより、満たされる。図示される実施形態では、ロード／ストア・スライスＬＳ０〜ＬＳ７のいずれかを、命令実行スライスＥＳ０〜ＥＳ７のいずれかについての命令のロード／ストア・オペレーション部分を実行するために使用することができるが、これは、本発明の要件ではない。さらに、いくつかの実施形態において、どのキャッシュ・スライスＣＳ０〜ＣＳ７が所与のロード／ストア・オペレーションを実行するのかの判定は、ロード／ストア・オペレーションのオペランド・アドレスに基づくと共に、オペランド幅、およびキャッシュのアドレス可能バイトの各キャッシュ・スライスＣＳ０〜ＣＳ７へのアサインにも基づき、なされてもよい。
【００１４】
命令実行スライスＥＳ０〜ＥＳ７は、内部命令を、複数のパイプラインに一斉に発行してもよく、例えば、命令実行スライスは、実行オペレーションとロード／ストア・オペレーションとを同時に実行してもよいし、または複数の内部パイプラインを使用して、複数の演算オペレーションもしくは論理的オペレーションを実行してもよいし、あるいはその両方でもよい。内部パイプラインは同一であってもよいし、または、浮動小数点、スカラ、ロード／ストアなど離散型であってもよい。さらに、所与の実行スライスは、ライトバック経路指定ネットワーク３７への２つ以上のポート接続を有してもよく、例えば、ポート接続は、ロード／ストア・スライスＬＳ０〜ＬＳ７へのロード／ストア接続に専用のものであってもよいし、あるいは、ＡＧＥＮバス３８もしくはデータバス３９またはその両方の機能を提供してもよく、別のポートが、特殊用途のスライスまたは他の命令実行スライスなどの他のスライスとの間の値の通信に使用されてもよい。ライトバック結果は、命令実行スライスＥＳ０〜ＥＳ７の種々の内部パイプラインから、命令実行スライスＥＳ０〜ＥＳ７をライトバック経路指定ネットワーク３７に接続するライトバック・ポートにスケジュールされる。キャッシュ・スライスＣＳ０〜ＣＳ７は、プロセッサ・コア２０の内部に統合されても、またはプロセッサ・コア２０の外部であってもよいＩ／Ｏバス４１を介して、次に高次レベルのキャッシュまたはシステム・メモリと接続される。図示される例は、一致した数のロード／ストア・スライスＬＳ０〜ＬＳ７と実行スライスＥＳ０〜ＥＳ７とを示すが、実際には、異なる数の各タイプのスライスを、特定の実装についてのリソースの必要性に従って提供することができる。
【００１５】
プロセッサ・コア２０内では、命令シーケンサ・ユニット（ＩＳＵ）３０が、ディスパッチ経路指定ネットワーク３６、ライトバック経路指定ネットワーク３７、ＡＧＥＮバス３８、およびストア・データ・バス３９を制御する命令フローおよびネットワーク制御ブロック５７を含む。また、ネットワーク制御ブロック５７は、実行スライスＥＳ０〜ＥＳ７およびロード／ストア・スライスＬＳ０〜ＬＳ７のオペレーションを、ディスパッチ・キューＤｉｓｐ０〜Ｄｉｓｐ７からの命令のディスパッチと調和させる。特に、命令フローおよびネットワーク制御ブロック５７は、１つまたは複数のモード制御信号に従って、プロセッサ・コア２０内の実行スライスＥＳ０〜ＥＳ７およびロード／ストア・スライスＬＳ０〜ＬＳ７の構成の中から選び出し、制御信号は、実行スライスＥＳ０〜ＥＳ７およびロード／ストア・スライスＬＳ０〜ＬＳ７の使用を、１つまたは複数のシングルスレッド（ＳＴ）モードで単一のスレッドによって、および１つまたは複数のマルチスレッド（ＭＴ）モードで複数のスレッドによって割り当てる。複数のマルチスレッド・モードは、同時のマルチスレッド（ＳＭＴ）モードであってもよい。例えば、図２に示す構成では、クラスタＣＬＡは、ＳＭＴモードで第１のスレッド・セットを形成する１つまたは複数のハードウェア・スレッドに割り当てられて、ディスパッチ・キューＤｉｓｐ０〜Ｄｉｓｐ３が、第１のスレッド・セットについての命令ストリームの命令を受け取るだけであり、実行スライスＥＳ０〜ＥＳ３およびロード／ストア・スライスＬＳ０〜ＬＳ３が、第１のスレッド・セットについてのオペレーションを実行するだけであり、キャッシュ・スライスＣＳ０〜ＣＳ３が、第１のスレッド・セットによってアクセスされる値を含むだけである組み合わせられたキャッシュ・メモリを形成するようにしてもよい。同様に、かかるオペレーティング・モードでは、クラスタＣＬＢが、第２のハードウェア・スレッド・セットに割り当てられ、ディスパッチ・キューＤｉｓｐ４〜Ｄｉｓｐ７が、第２のスレッド・セットについての命令ストリームの命令を受け取るだけであり、実行スライスＥＳ４〜ＥＳ７およびＬＳスライスＬＳ４〜ＬＳ７が、第２のスレッド・セットについてのオペレーションを実行するだけであり、キャッシュ・スライスＣＳ４〜ＣＳ７が、第２のスレッド・セットによってアクセスされる値を含むだけである。通信が、クラスタにわたって必要とされないとき、ライトバック経路指定ネットワーク３７、クラスタＣＬＡ、およびクラスタＣＬＢの一部を接続するトランシーバおよびスイッチｓｗを無効にすることにより、ライトバック経路指定ネットワーク３７をパーティションに分割することができる。ライトバック経路指定ネットワーク３７の一部を分離することで、各クラスタ内により大きなスループットを提供し、ライトバック経路指定ネットワーク３７の一部が、ライトバック経路指定ネットワーク３７内の同じ数の配線について、実行スライスＥＳ０〜ＥＳ７およびＬＳスライスＬＳ０〜ＬＳ７の結果に、別々の同時の経路を提供することができるようになる。したがって、スイッチｓｗが開のとき、分割されたライトバック経路指定ネットワーク３７上で、２倍のトランザクションをサポートすることができる。本発明の他の実施形態は、ディスパッチ・キューＤｉｓｐ０〜Ｄｉｓｐ７、実行スライスＥＳ０〜ＥＳ７、ＬＳスライスＬＳ０〜ＬＳ７、およびキャッシュ・スライスＣＳ０〜ＣＳ７のセットを副次的に分割し、いくつかのクラスタが形成されて、各クラスタが特定のセットのハードウェア・スレッド上でオペレーションを行うようにすることができる。同様に、セット内のスレッドは、サブセットとしてさらにパーティション分割され、ディスパッチ・キューＤｉｓｐ０〜Ｄｉｓｐ７のうちの特定の１つ、実行スライスＥＳ０〜ＥＳ７のうちの特定の１つ、ＬＳスライスＬＳ０〜ＬＳ７のうちの特定の１つ、およびキャッシュ・スライスＣＳ０〜ＣＳ７のうちの特定の１つにアサインされてもよい。しかし、パーティション分割は、上記で列挙したリソースの全てにわたって拡張する必要はない。例えば、クラスタＣＬＡおよびＣＬＢが、２つの異なるハードウェア・スレッド・セットにアサインされ、実行スライスＥＳ０〜ＥＳ２とＬＳスライスＬＳ０〜ＬＳ１が、第１のハードウェア・スレッド・セットの第１のサブセットにアサインされ、実行スライスＥＳ３およびＬＳスライスＬＳ２〜ＬＳ３が、第１のハードウェア・スレッド・セットの第２のサブセットにアサインされ、キャッシュ・スライスＣＳ０〜ＣＳ３が、第１のハードウェア・スレッド・セット内の全てのスレッドによって共有されるとしてもよい。上記の例による特定の実施形態において、スイッチを含んで、実行スライスＥＳ０〜ＥＳ７の間で、ライトバック経路指定ネットワーク３７をさらにパーティションに分割し、異なるスレッド・セットにアサインされる実行スライスＥＳ０〜ＥＳ７のサブグループ間の接続を分離させて、各サブグループ内で処理することができるトランザクションの数を増加させるようにしてもよい。上記は、図２に示されるバス接続されたスライス・アーキテクチャによって提供されるリソースのアサインメントの柔軟性の一例であり、スレッドのセットまたは個々のスレッドを、ディスパッチ・キューＤｉｓｐ０〜Ｄｉｓｐ７、実行スライスＥＳ０〜ＥＳ７、ＬＳスライスＬＳ０〜ＬＳ７、およびキャッシュ・スライスＣＳ０〜ＣＳ７、などのリソースにマッピングするためにサポートされ得るいずれかの特定の構成に関して限定するものではない。
【００１６】
別の構成では、モード制御信号の別の状態に従って、クラスタＣＬＡおよびＣＬＢが、スレッドの共通プール、またはＳＴモードの単一スレッドについての命令を実行するように構成される。かかる構成では、キャッシュ・スライスＣＳ０〜ＣＳ７は結合されて、ロード／ストア・スライスＬＳ０〜ＬＳ７のいずれかを介して、実行スライスＥＳ０〜ＥＳ７のいずれかに対してディスパッチされる命令によってアクセス可能である、より大きなキャッシュを形成してもよい。キャッシュ・スライスＣＳ０〜ＣＳ７は、パーティション分割されたキャッシュに組織化されてもよく、例えば、各キャッシュ・オペレーションのオペランド・アドレスを使用して、どのキャッシュ・スライスＣＳ０〜ＣＳ７、またはキャッシュ・スライスＣＳ０〜ＣＳ７のサブグループが、オペレーションをサポートすべきなのかを判定することにより、組織化される。例えば、キャッシュ・ラインを、キャッシュ・スライスＣＳ０〜ＣＳ３およびＣＳ４〜ＣＳ７のサブグループにわたってスプリットに分割し、オペランド・アドレスの特定のビットが、キャッシュ・スライスＣＳ０〜ＣＳ３およびＣＳ４〜ＣＳ７の２グループのどちらが指定された値を含むのか、を選択して、キャッシュ・ラインのインターリーブを形成するようにしてもよい。例えば、キャッシュ・スライスＣＳ０〜ＣＳ３が、奇数キャッシュ・ラインのアドレスを有するデータ値を格納し、キャッシュ・スライスＣＳ４〜ＣＳ７が、偶数キャッシュ・ラインのアドレスを有するデータ値を格納するようにしてもよい。かかる構成では、キャッシュ内でインデックスされた一意的なキャッシュ・ラインのアドレスの数は、キャッシュ・スライスＣＳ０〜ＣＳ７がスレッドのセットの中でパーティションに分割されるモード、およびキャッシュ・スライスＣＳ０〜ＣＳ７が結合されるモード、から選択するときに、一定に保たれるようにしてもよい。別の例において、オペランド・アドレスの３ビットを使用して、目的のキャッシュ・スライスＣＳ０〜ＣＳ７のうちの１つを判定することにより、データをキャッシュ・スライスＣＳ０〜ＣＳ７にわたって「ストリップ」し、因数８でインターリーブを形成するようにしてもよい。上記に示される例は、包括的なものではなく、データ値をキャッシュ・スライスＣＳ０〜ＣＳ７のうちの特定の１つにアサインする多くの異なる方法がある。例えば、特定のブロックまたはベクトルのオペレーションは、キャッシュ・スライスＣＳ０〜ＣＳ７またはそのサブグループを決定的にスパンすることができ、実行スライスＥＳ０〜ＥＳ７のうちの１つに対する、またはクラスタＣＬＡもしくはＣＬＢの中からのものとして、初期復号（early-decode）に基づくアサインメントを認可する。ディスパッチ・キューＤｉｓｐ０〜Ｄｉｓｐ７または実行スライスＥＳ０〜ＥＳ７あるいはその両方は、オペレーション型、アドレス生成、予測構造、または他の機構に基づき、オペレーションについて、キャッシュ・スライスＣＳ０〜ＣＳ７のうちの適切な目的の１つ（または複数）を判定してもよい。オペレーティング・モードの、そのような１つの例示の実施形態では、奇数のオペランド・アドレスを有するオペレーションが、ロード／ストア・スライスＬＳ０〜ＬＳ３のみに対して処理するために識別され、キャッシュ・スライスＣＳ０〜ＣＳ３は、奇数アドレスを表す値を含むだけのために結合される。同様に、オペレーティング・モードのかかる例示の実施形態では、偶数のオペランド・アドレスを有するオペレーションが、ロード／ストア・スライスＬＳ４〜ＬＳ７のみによって処理するために識別され、キャッシュ・スライスＣＳ４〜ＣＳ７は、偶数アドレスを表す値を含むだけである。上述の構成において、キャッシュ・スライスＣＳ０〜ＣＳ７は、概念的には結合され得るが、ベクトルまたはキャッシュ・ブロック・オペレーションなどの特定の実装が、全てのロード／ストア・スライスＬＳ４〜ＬＳ７、実行スライスＥＳ０〜ＥＳ７、およびキャッシュ・スライスＣＳ０〜ＣＳ７の間の完全なクロスバー経路指定を必要とするわけではない。他のモードに従う他の構成において、または本発明の他の実施形態において、あるいはその両方において、キャッシュ・スライスＣＳ０〜ＣＳ７は、さらにパーティションに分割されて、４個、８個、など、ハードウェア・スレッドのプールが利用可能な独立したパーティションで、ＳＭＴオペレーションをサポートしてもよく、８個の実行スライス、８個のロード／ストア・スライス、および８個のキャッシュ・スライスを有する例示される実施形態は、単に説明のためのものであり、より多くのスライスまたはクラスタが、本発明の他の実施形態において存在してもよい。
【００１７】
ここで図３を参照すると、プロセッサ２０内に実装される別の構成の特徴の一例が示される。図３では、実行スライスＥＳ０およびＥＳ１が、個々に実行スライスＥＳ０およびＥＳ１によって操作される命令の２倍の幅の、オペランド幅または演算子幅あるいはその両方を有する命令を実行するために、「スーパースライス」としてリンクされている。例えば、実行スライスＥＳ０およびＥＳ１は、６４ビット幅を有することができ、また、モード制御信号の状態に従って、１２８ビットスーパースライスで組み合わされてもよい。かかる構成は、例えば、同じ命令によって処理されるベクトル・ペア内にオペランドを有する命令を実行するために使用されてもよい。代替えとして、または組み合わせて、演算子は、より広い演算子であってもよいし、または余剰の幅を必要とする直近のフィールドを含んでもよい。スーパースライス構成は、実行スライスのペアに限定されない。例えば、実行スライスＥＳ０〜ＥＳ７のうちの３つ以上が、さらに広いオペランドまたは演算子あるいはその両方の操作を提供するためにリンク可能であってもよい。より広い１２８ビットワイドのオペレーションについて、Ｄｉｓｐ０およびＤｉｓｐ１などのディスパッチ・キューも結合されてよい。代替えとして、より広いオペレーションが、ディスパッチ経路指定ネットワーク３６上を、ディスパッチ・キューＤｉｓｐ０〜Ｄｉｓｐ７のうちの１つから実行スライスＥＳ０〜ＥＳ７のうちの２つ以上に対してディスパッチ経路指定されてもよい。かかる実施形態において、スーパースライスが、より広いオペレーションの実行に利用可能でない場合、より広いオペレーションは、ディスパッチからブロックされてもよく、かつ、スーパースライスが利用可能になるまで、ディスパッチ・キュー内に保持されてもよい。同じディスパッチ・キューを共有する他のハードウェア・スレッドについてのオペレーションを、継続してディスパッチすることができる。いくつかのワイド・オペレーション、ベクトルの各要素の一斉の実行を必要としないベクトル・オペレーションなどは、単一の実行スライスによって、またはスーパースライスの利用可能性を必要とすることなく、互いに素なセットの実行スライスによって実行されてもよい。ワイド命令を実行するためにスーパースライスの形式を管理する、制御ロジックのさらなる詳細について、図５、図６、および図８を参照して、以下でさらに詳細に説明する。
【００１８】
ここで図４を参照すると、プロセッサ・コア２０のさらなる詳細が示される。プロセッサ・コア２０は、分岐実行ユニット５２と、命令フェッチ・ユニット（Ｉフェッチ）５３と、命令のフェッチおよび順序付けを制御する命令シーケンサ・ユニット（ＩＳＵ）３０とを含む。入力命令バッファ（ＩＢ）５１は、以下で図５、図６、および図８を参照して説明するように、スライスのペアが、マスタ／スレーブ・スライスとしてオペレーションすることを可能にするなど、設定される種々のスレッド、および任意のスーパースライス構成について割り当てられる実行スライス・リソースに従って、命令のグループをマッピングするために、命令をバッファする。別の命令バッファ（Ｉバッファ）３１は、命令ストリームのそれぞれについてディスパッチ・キュー（図２および図３のＤｉｓｐ０〜Ｄｉｓｐ７）を維持するようにパーティションに分割され、ディスパッチ経路指定ネットワーク３２は、ＩＢＵＦ３１を、セグメント化された実行およびロード／ストア・スライス５０に接続させ、スライス５０はキャッシュ・スライス４６に接続される。命令フローおよびネットワーク制御ブロック５７は、セグメント化された実行およびロード／ストア・スライス５０、キャッシュ・スライス４６、およびディスパッチ経路指定ネットワーク３２の制御を行い、モード制御／スレッド制御ロジック５９に従って、図２および図３に示されるようなスライスを構成する。命令完了ユニット５８も設けられて、ＩＳＵ３０により順序付けされた命令の完了をトラッキングし、セグメント化された実行およびロード／ストア・スライス５０内のロード／ストア・スライスによりライトバックオペレーションを制御する。電力管理ユニット５６も、セグメント化された実行およびキャッシュ・スライス５０内のアクティブなスライスの数を減少または増加させることによる省エネルギーのために備えてもよい。命令フローおよびネットワーク制御ブロック５７は、単一のユニットとして示されるが、実行スライスＥＳ０〜ＥＳ７およびロード／ストア・スライスＬＳ０〜ＬＳ７内ならびにその間のセグメント化された実行の制御は、それらスライスの中でパーティションに分割されて、実行スライスＥＳ０〜ＥＳ７およびロード／ストア・スライスＬＳ０〜ＬＳ７のそれぞれが、他のスライスと通信を行いながら自らの実行フローおよび順序付けを制御することができるようにされてもよい。
【００１９】
ここで図５を参照すると、制御フロー図が、実行スライスのマスタ／スレーブ・ペア内のワイド命令または命令のペアの、ディスパッチから発行にかけてのプロセスを示す。上記で触れたように、実行スライスＥＳ０〜ＥＳ７は、ロード／ストア・オペレーション、および、固定小数点（ＦＸ）命令またはベクトル／スカラ（ＶＳ）命令などの別のオペレーションを実行することができる。マスタ実行スライスの制御ロジック・フローが、図５の左部分に示され、スレーブ実行スライスの制御ロジック・フローが、図５の右部分に示される。ロード／ストア・ディスパッチ・サイクル、およびＦＸディスパッチなどの別のオペレーション・サイクルが、マスタ実行スライスにおいて開始され、許可ベクトル（allow vector）ＡｌｌｏｗＭで示されるように、最も古く許可された命令が、許可ベクトルＡｌｌｏｗＭを用いてエイジ・アレイ（age array）９２Ａにアクセスすることにより、アクセスされる。マスタ実行スライスに対してディスパッチされたオペレーションは、マスタ実行スライス発行キューのエイジ・アレイ９２Ａによってインデックス化されたリザベーション・ステーション９４Ａに書き込まれ、スレーブ実行スライスのオペレーションは、スレーブ実行スライス発行キューのエイジ・アレイ９２Ｂによってインデックス化されたリザベーション・ステーション９４Ｂに書き込まれる。エイジ・アレイ９２Ａ、９２Ｂは、オペレーションがディスパッチされた順番で情報を維持し、リザベーション・ステーション９４Ａまたは９４Ｂにおいて、条件がオペレーションについてクリアされると、最も古いそのようなオペレーションを取得して発行することができる。エイジ・アレイ９２Ａは、対応するビットが許可ベクトルＡｌｌｏｗＭ内に設定された最も古いエントリを返し、エントリが、インデックス／アドレスをリザベーション・ステーション９４Ａ内に提供し、これにより、マスタ・スライスＦＸオペランド・ラッチＦＸＭｏｐ内にオペレーションを発行する。最も古いＬＳオペレーションを、エイジ・アレイ９２Ａ内の別個のルックアップを介して、同じサイクルでリザベーション・ステーション９４ＡからＬＳオペランド・ラッチＬＳＭｏｐに発行することもできる。同様に、エイジ・アレイ９２Ｂは、対応するビットが許可ベクトルＡｌｌｏｗＳ内に設定された最も古いエントリを返し、エントリが、インデックス／アドレスをリザベーション・ステーション９４Ｂ内に提供し、これにより、スレーブ・スライスＦＸオペランド・ラッチＦＸＳｏｐ内に、オペレーションを発行する。最も古いＬＳオペレーションを、エイジ・アレイ９２Ｂ内の別個のルックアップを介して、同じサイクルでリザベーション・ステーション９４ＢからＬＳオペランド・ラッチＬＳＳｏｐに発行することもできる。マスタ実行スライスおよびスレーブ実行スライスの両方にわたって、１つのＬＳオペレーションおよび１つのＦＸ／ＶＳオペレーションを、サイクル毎、スライス毎に発行することができ、または、１２８ビット・ワイドＦＸ／ＶＳオペレーションの場合は、サイクル毎に１つの発行を行うことができる。
【００２０】
ワイド・オペレーションがディスパッチされる場合、これは、本明細書では例示の説明のために、６４ビット・実行スライスによって実行される１２８ビット・オペレーションであり、１２８ビット・オペレーションの両半分が、マスタ実行スライスとスレーブ実行スライスとに対してディスパッチされるが、エイジ・アレイ９２Ａ〜９２Ｂからの異なるエントリでインデックス化されていてもよい。スレーブ実行スライスのエイジ・アレイ９２Ｂにおけるエントリによってインデックス化された１２８ビット・オペレーションの半分のトラッキングを維持するために、キュー位置アレイ（Ｑｐｏｓ）９３が、マスタ実行スライス内に提供される。１２８ビット・オペレーションの半分が、スレーブ実行スライス内のエイジ・アレイ９２Ｂに書き込まれるとき、その場所に対するポインタ／インデックスがキュー位置アレイ９３に格納され、キュー位置アレイ９３は、エイジ・アレイ９２Ａから取得されたインデックスでインデックス化される。ワイド（１２８ビット）オペレーションは、オペレーション・コードのそれぞれの半分を、リザベーション・ステーション９４Ａ、９４Ｂに書き込んで、エイジ・アレイ９２Ａ、９２Ｂにおいてエントリを生成することにより、ディスパッチされる。ビットが、エイジ・アレイ９２Ａ内のエントリに対応するラッチ１２８ｂにおいて設定され、エントリが１２８ビット（ワイド）オペレーションの一部であることを示す。各発行サイクルで、各スライスにおいて最も古い許可されたエントリを発行することに加えて、ルックアップが実行されて、最も古いレディ状態のエントリが１２８ビット（ワイド）オペレーションであるかどうかを、最も古いレディ状態のエントリを、論理ＡＮＤ演算子ＡＮＤ１として示されるラッチ１２８ｂ内のビット・マスクと比較することにより、判定する。比較の結果が、マルチプレクサ９１Ａにより示される１２８ビット・レディ・ロジック１２８ｂ  Ｒｅａｄｙの出力と、６４ビット・レディ・ロジック６４ｂ  Ｒｅａｄｙの出力とから選択される。マルチプレクサ９１Ａの出力を使用して、次の発行サイクルの許可ベクトルＡｌｌｏｗＭに、許可ビットを設定する。同時に、次の発行サイクルがスレーブ実行スライスにおいて予約され、１２８ビット・オペレーションの両半分を同じサイクルで発行することができるようにする。
【００２１】
本明細書に示される特定の実施形態において、スレーブ実行スライスにおける発行サイクルの予約は、１２８ビット・オペレーションが、最も古いレディ状態のオペレーションになるときに行われる。上記で触れたように、各発行サイクルにおいて、マスタ実行スライスが、設定されたレディ・フラグを有するエイジ・アレイ９２Ａ内の最も古いエントリを読み込む。エイジ・アレイ９２Ａ内の最も古いエントリが、１２８ビット・オペレーションに相当するかどうかにかかわらず、最も古い許可されたエントリが、６４ビット・オペレーションまたは１２８ビット・オペレーションであり得る、現在の発行サイクル中にマスタ実行スライスおよびスレーブ実行スライスの両方にて発行される。発行される次のオペレーションについて、エイジ・アレイ９２Ａ内の最も古いレディ状態のエントリが、１２８ビットエントリに相当する場合、そのエントリに対応するエイジ・アレイ９２Ａの出力が使用されて、キュー位置アレイ９３を使用してエイジ・アレイ９２Ｂ内のエントリによってインデックス化された１２８ビット・オペレーションの半分を取得し、マルチプレクサ９１Ｂが、スレーブ・レディ・ラッチＲｄｙ内のレディ状態の６４ビット・オペレーションのセットではなく、キュー位置アレイ９３の出力を選択する。選択された値がスレーブ許可ベクトルＡｌｌｏｗＳを更新するため、次の発行サイクルにおいて、１２８ビット・オペレーションの半分は、キュー位置アレイ９３から提供されるインデックス／アドレスを使用して、リザベーション・ステーション９４Ｂから取得されることになる。あるいは、発行される次のオペレーションが１２８ビット・オペレーションではない場合、スレーブ許可ベクトルＡｌｌｏｗＳがスレーブ・レディ・ラッチＲｄｙから更新されて、最も古い６４ビット・オペレーションが、エイジ・アレイ９２Ｂ内の最も古いレディ状態のエントリのインデックス／アドレスを介して、リザベーション・ステーション９４Ｂから取得されることになる。発行サイクルで２つの６４ビットＦＸ／ＶＳオペレーションが発行されるのか、１つの１２８ビットＦＸ／ＶＳオペレーションが発行されるのか、にかかわらず、各発行サイクルにおいて、２つの６４ビットロード／ストア・オペレーションが、リザベーション・ステーション９４Ａおよび９４Ｂから発行される。但し、ロード／ストア・ディスパッチ・エントリが無い、レディ条件が合うオペレーションが無い、など他の条件が満たされない場合を除く。
【００２２】
ここで図６を参照すると、実行スライスのマスタ／スレーブ・ペアを制御してワイド命令を発行する方法が示される。各発行サイクルにおいて、許可ビットが設定された最も古いＦＸ／ＶＳオペレーションが、マスタ実行スライスおよびスレーブ実行スライスの両方からの発行のために選択される（ステップ６０）。最も古く許可されたオペレーションが、マスタ実行スライスおよびスレーブ実行スライスの両方にわたって発行され、これは、スーパースライスとして動作するマスタ実行スライスおよびスレーブ実行スライスにより発行される、２つの別々の６４ビット・オペレーション、または１つの１２８ビット・オペレーションであり得る（ステップ６１）。同時に、最も古いレディ状態のＦＸ／ＶＳオペレーションのエントリが、マスタ・スライス内のエイジ・アレイから取得される（ステップ６２）。エントリが、１２８ビットＦＸ／ＶＳオペレーションに相当する場合（判断６３）、許可ベクトル内の全てのレディ状態の１２８ビット・オペレーションに、許可ビットが設定され（ステップ６４）、１２８ビット・オペレーションに相当するキュー位置アレイのエントリが選択され、スレーブ実行スライスの許可ベクトルの設定に使用されるため、１２８ビット・エントリの他方の半分に対応するビットが、許可ベクトル内に設定される（ステップ６５）。許可ベクトルを設定した後、そのエントリのレディ・ビットがクリアされ（ステップ６７）、次の発行サイクルでの発行用にセットアップ中のエントリが、続いてリロードされるのを防ぎ、システムまたはスキームがシャットダウンされるまで（ステップ６９）、次の発行サイクルは、ステップ６０〜６９を繰り返すことにより開始される。
【００２３】
ここで図７を参照すると、図２および図３の命令実行スライスＥＳ０〜ＥＳ７を実装するために使用することができる実行スライス（ＥＳ）４２ＡＡの一例が示される。ディスパッチ・キューからの入力が、ディスパッチ経路指定ネットワーク３２を介してレジスタ・アレイ７０によって受け取られ、オペランドおよび命令が、発行キュー７５の実行リザベーション・ステーション（ＥＲ）７３のキューに入れられるようにすることができる。レジスタ・アレイ７０は、独立した命令ストリームについて、または、実行スライス４２ＡＡが、ＳＩＭＤ命令の複数の部分を実行するスーパースライスにおいて結合される場合に、独立したレジスタ・セットを有するようにアーキテクトされ、一方、スーパースライスにおいてクローンである依存するレジスタ・セットは、スーパースライスが非ＳＩＭＤ命令を実行しているインスタンスについてアーキテクトされる。エイリアス・マッパ７１は、ライトバック経路指定ネットワーク３７を介して他のスライスと交換されるライトバック値などの任意の外部参照に対して、レジスタ・アレイ７０において値をマッピングする。履歴バッファＨＢ７６は、ＥＳ４２ＡＡによって実行される命令のレジスタ・ターゲットの復元能力を提供する。レジスタを、モード制御信号に応じて、ライトバック経路指定ネットワーク３７を使用してスーパースライス間でコピーまたは移動させて、スレッドのセットへのスライスのアサインメント、または、結合した様式でオペレーションを行って、他の実行スライスと一緒にスーパースライスとして実行するスライスのアサインメントを、再構成できるようにすることができる。実行スライス４２ＡＡは、別の実行スライス４２ＢＢと並んで示され、スーパースライスを形成するために図２および図３の実行スライスＥＳ０〜ＥＳ７内の実行スライスのペア間で提供され得る、実行インターロック制御７９を説明し、実行スライス４２ＡＡは、マスタ実行スライスとして構成可能であり、実行スライス４２ＢＢは、スレーブ実行スライスとして構成可能である。実行スライス４２ＡＡ、実行スライス４２ＢＢ、および実行インターロック制御７９の詳細については、以下で図８を参照して説明する。実行インターロック制御７９は、上記で説明したようなワイド命令／ベクトル命令実行を含む、単一命令ストリームの実行をサポートする実行スライス４２ＡＡと４２ＢＢとの間の調和を提供する。というのはそうでない場合には、実行スライスＥＳ０〜ＥＳ７は、その対応する命令ストリームの実行を単独で管理するからである。
【００２４】
実行スライス４２ＡＡは、実行スライス４２ＡＡに対応する命令ストリームについて、順序が乱れた命令の実行、および同時の命令の実行をサポートする複数の内部実行パイプライン７４Ａ〜７４Ｃおよび７２を含む。実行パイプライン７４Ａ〜７４Ｃおよび７２によって実行される命令は、ディスパッチ経路指定ネットワーク３２を介して受け取られる命令の一部を実装する内部命令であってもよいし、またはディスパッチ経路指定ネットワーク３２を介して直接受け取られる命令であってもよく、すなわち、命令をパイプラインすることが、命令ストリーム自身によってサポートされてもよく、または、命令の復号が、実行スライス４２ＡＡの上流において実行されてもよい。実行パイプライン７２は、別に多重化されて示されて、単一パイプライン、マルチパイプライン、または両方のタイプの実行ユニットが、実行スライス４２ＡＡ内に提供されてもよいことを示す。実行スライス４２ＡＡによって実行される命令のタイプに応じて、パイプラインは、設計および機能において異なっていてもよく、または、いくつかもしくは全てのパイプラインが同一であってもよい。例えば、指定のパイプラインが、アドレス計算、スカラまたはベクトル・オペレーション、浮動小数点オペレーションなどについて提供されてもよい。マルチプレクサ７７Ａ〜７７Ｃは、履歴バッファ７６への実行結果の経路指定／履歴バッファ７６からの実行結果の経路指定、ならびに、ライトバック経路指定ネットワーク３７、Ｉ／Ｏ経路指定ネットワーク３９、およびＡＧＥＮ経路指定ネットワーク３８へのライトバック結果の経路指定、を提供し、これらは、スライスまたはオペレーション間で共有するための指定のデータを経路指定するため、または、ロード／ストア・スライスＬＳ０〜ＬＳ７のうちの１つまたは複数に送られるアドレスまたはデータあるいはその両方のロードおよびストアのため、に提供されてもよい。データ、アドレス、および再循環キュー（ＤＡＲＱ）７８は、次に消費するロード／ストア・スライスＬＳ０〜ＬＳ７または実行スライスＥＳ０〜ＥＳ７によって速やかに受け入れられるようには保証されないロード／ストア・アドレスまたはストア・データなどの、実行結果または部分的結果を保持する。ＤＡＲＱ７８内に格納された結果または部分的結果は、ロード／ストア・スライスＬＳ０〜ＬＳ７のうちの１つ、または、暗号プロセッサ３４Ａ、３４Ｂのうちの１つなどの特別な実行ユニット、などに将来のサイクルで送られる必要があり得る。ＤＡＲＱ７８内に格納されたデータは、次に、それぞれマルチプレクサ７７Ｂまたは７７Ｃによって、ＡＧＥＮバス３８またはストア・データ・バス３９上に多重化されてもよい。
【００２５】
ここで図８を参照すると、概して実行インターロック制御７９に対応する、実行スライス４２ＡＡおよび実行スライス４２ＢＢ内の制御ロジックの詳細が、本発明の一実施形態に従って示される。簡略を期して、ＬＳオペレーションの発行を制御するための制御ロジックは示さないが、実行スライス４２ＡＡおよび実行スライス４２ＢＢが、異なる幅のＬＳオペレーションの発行については、リンクされない／非リンクであるからである。エイジ・アレイ９２Ａは、２つの８ビット入力ポートを有し、それぞれ２つの８ビット出力ポートから８個のエントリのうちの１つにアクセス可能である。ポート毎に、エイジ・アレイ９２Ａは、対応するビットが、対応する入力ポートにて提供されるバイトに設定された、最も古いエントリにインデックスを返す。エイジ・アレイ９２Ａへの一方の入力が、ラッチＬ１Ａ内の許可発行ベクトルから提供され、他方の入力は、ラッチＬ１Ａ内のＦＸ／ＶＳレディ・ベクトルである。各発行サイクルにおいて、許可発行ベクトル内にビット・セットを有する最も古いエントリが、エイジ・アレイ９２Ａから取得され、使用されて、リザベーション・ステーション９４ＡからＦＸ／ＶＳオペレーションが取得され、マスタ・スライスＦＸ／ＶＳオペレーション・ラッチＦＸＭｏｐ内にロードされる。同じ発行サイクルにおいて、ＦＸ／ＶＳレディ・ベクトル内にビット・セットを有する、エイジ・アレイ９２Ａ内の最も古いエントリが、８ビットＡＮＤ−ＯＲ論理９６によって、ラッチＬ１Ａ内の１２８ｂベクトルと比較され、最も古いレディ状態のオペレーションが１２８ビット・オペレーションであるなら、制御信号ｏｖｅｒｗｒｉｔｅがアサートされる。制御信号ｏｖｅｒｗｒｉｔｅに起因して、マルチプレクサ９１Ａが１２８ビットＦＸ／ＶＳレディ・ロジック９０Ａの出力を選択し、これにより、ラッチＬ１Ａ内の許可発行ベクトルが、レディ状態の１２８ビットＦＸ／ＶＳオペレーションのセットを表すビット・フィールドに設定される。また、ＦＸ／ＶＳレディ・ベクトル内にビット・セットを有する、エイジ・アレイ９２Ａ内の最も古いエントリは、８ビット・インバータＩＮＶＭにより逆変換されて、８ウェイ論理ＡＮＤゲートＡＮＤ２に提供されるマスクを形成し、ラッチＬ１Ａ内のＦＸ／ＶＳレディ・ベクトルに設定されている状態から、ラッチＬ１Ａ内の許可発行ベクトルにおいて更新されるエントリをマスク・オフし、エイジ・アレイ９２Ａから取得されたエントリが、後続のサイクルで許可発行ベクトルに設定されることを防ぐ。８ウェイ論理ＯＲゲートＯＲ１は、１２８ビットＦＸ／ＶＳレディ・ロジック９０Ａおよび６４ビットＦＸ／ＶＳレディ・ロジック９０Ｂの出力をマージして、全てのレディ状態のオペレーション（８ウェイ論理ＡＮＤゲートＡＮＤ２によりマスクされるオペレーションを除く）が、次の発行サイクルにおいて、ラッチＬ１Ａ内にＦＸ／ＶＳレディ・ベクトルで表されるようにする。
【００２６】
スレーブ実行スライスとして構成される実行スライス４２ＢＢにおいて、上書き発行サイクルが、アサートされた状態にある制御信号ｏｖｅｒｗｒｉｔｅによってトリガされ、次の発行サイクルを、最も古い１２８ビット・オペレーションの他方の半分の発行用に効果的に予約する。これは、上記で説明したように、実行スライス４２ＡＡからの発行のためにセットアップされているものである。制御信号ｏｖｅｒｗｒｉｔｅに起因して、エイジ・アレイ９２Ａにより出力される最も古いレディ状態のエントリの１ホット・リード・アドレス（1-hot read address）を使用して、キュー位置アレイ９３内の８ビット・エントリのうちの１つを選択するセレクタ９１Ｃの出力を、マルチプレクサ９１Ｂが選択する。キュー位置アレイ９３から選択されたエントリは、ラッチＬ１Ｂ内の次の許可発行ベクトルを上書きし、スレーブ実行スライス４２ＢＢ内の次の発行オペレーションが、次の発行サイクルにおいて１２８ビット・オペレーションを発行するために、ラッチＬ１Ａ内に書き込まれている許可発行ベクトルに対応するマスタ実行スライス４２ＡＡ内の１２８ビット・オペレーションに対応するリザベーション・ステーション９４Ｂ内に格納された１２８ビット・オペレーションの半分となるようにする。上記のオペレーションとは独立して、マスタ実行スライス４２ＡＡは、リザベーション・ステーション９４ＡからＦＸ／ＶＳオペレーション・ラッチＬ２Ａ内への発行のためのエイジ・アレイ９２Ａの出力の際に、ラッチＬ１Ａ内の許可発行ベクトルによって選択される次のオペレーションを発行し、スレーブ実行スライス４２ＢＢは、リザベーション・ステーション９４ＢからＦＸ／ＶＳオペレーション・ラッチＬ２Ｂ内へのエイジ・アレイ９２Ｂの出力の際に、ラッチＬ１Ｂ内の許可発行ベクトルによって選択される次のオペレーションを発行する。上記のオペレーションが、マスタ実行スライス４２ＡＡおよびスレーブ実行スライス４２ＢＢのそれぞれにおいて、最も古い６４ビット・オペレーションを発行するのは、１２８ビット・オペレーションが、エイジ・アレイ９２Ａ内で最も古いレディ状態のオペレーションになる後の次の発行サイクルまでであり、そのとき、許可された１２８ビット・オペレーションを示すマスクは、ラッチＬ１Ａ内にプレロードされており、最も古く許可された１２８ビット・オペレーション１２８−ｂｉｔ  ｏｖｅｒｒｉｄｅに対応するエイジ・アレイ９２Ｂ内のエントリのインデックス／アドレスは、ラッチＬ２Ｂ内にロードされており、そのため、最も古く許可された１２８ビット・オペレーションが、並列したマスタ実行スライス４２ＡＡおよびスレーブ実行スライス４２ＢＢの両方によって発行される。
【００２７】
ここで図９を参照すると、図２および図３のロード／ストア・スライスＬＳ０〜ＬＳ７を実装するために使用することができるロード／ストア（ＬＳ）スライス４４の一例が示される。ロード／ストア・アクセス・キュー（ＬＳＡＱ）８０は、ＡＧＥＮバス３８と接続され、ＡＧＥＮバス３８およびＬＳＡＱ８０への直接接続は、キャッシュ・スライス４６内のデータ・キャッシュ８２のキャッシュ・ディレクトリ８３にメモリ・バス４０を介して入力を提供するマルチプレクサ８１により、選択される。また、マルチプレクサ８１の出力は、ロード・リオーダ・キュー（ＬＲＱ：load reorder queue）８７もしくはストア・リオーダ・キュー（ＳＲＱ：storereorder queue）８８への、ＬＳＡＱ８０から、もしくはＡＧＥＮバス３８からの入力、または、ロード／ストア・スライス４４内の図示されない他の実行設備への入力を提供する。ロード／ストア・スライス４４は、ロード／ストア・オペレーションおよび他の関連するキャッシュ・オペレーションを実行する、ロード／ストア・ユニットの１つまたは複数のインスタンスを含んでもよい。ＬＳスライス４４に対して発行されたキャッシュ・オペレーションの実行をトラッキングするために、ＬＲＱ８７およびＳＲＱ８８は、逐次一貫性またはプロセッサ・アーキテクチャにより必要とされるような他の属性あるいはその両方について、キャッシュ・オペレーションをトラッキングするためのエントリを含む。ＬＳスライス４４は、ＡＧＥＮバス３８を介して実行スライスＥＳ０〜ＥＳ７のうちの１つまたは複数から、サイクル毎に複数のオペレーションを受け取ることができるようにしてもよいが、ＬＳスライス４４の制限により、アクセスの全てが所与の実行サイクルで一斉に実行可能でなくてもよい。かかる条件下で、ＬＳＡＱ８０は、まだ実行されないオペレーションに対応するエントリを格納する。ＳＲＱ８８は、ストア・データ・バス３９からストア・オペレーションのデータを受け取り、これは、計算されたストア・アドレスなどのオペレーション情報とペアにされる。オペレーションが実行されると、ＬＳスライス４４およびキャッシュ・スライス４６によって形成されるロード／ストア・パイプ内で、キャッシュ・ミス、アドレス・トランザクションの失敗、キャッシュ読み／書きコンフリクト、欠損データ、または、そのようなオペレーションを実行することで遅延や再試行を伴う他の失敗、などの危険に遭遇することがある。いくつかの実施形態において、ＬＲＱ８７およびＳＲＱ８８は、オペレーションを、実行用のロード／ストア・パイプライン内に再発行するように構成され、実行スライスＥＳ０〜ＥＳ７の制御およびオペレーションとは無関係にオペレーションを提供する。かかる構成により、ロード／ストア・スライスＬＳ０〜ＬＳ７のうちの１つまたは複数が、リソースの割り当て取り消しが条件づけられたオペレーションまたはデータあるいはその両方を受け取るとすぐに、実行スライスＥＳ０〜ＥＳ７内のリソースが解放される。ＬＳＡＱ８０は、オペレーションが実行されるとすぐに、または、オペレーションのエントリまたはデータあるいはその両方が、一旦ＬＲＱ８７またはＳＲＱ８８内に格納されると、リソースを開放してもよい。ＬＳスライス４４内の制御ロジックは、ロード／ストア・オペレーションを発行する特定の実行スライスＥＳ０〜ＥＳ７内のＤＡＲＱ７８と通信して、オペランド、アドレス、およびデータの受け入れを調和させる。他のロード／ストア・スライスへの接続は、ＡＧＥＮバス３８およびライトバック経路指定ネットワーク３７によって提供され、これらは、キャッシュ・スライス４６のデータ・キャッシュ８２からデータを受け取り、別のスライスのデータ非アライメント・ブロック８４にデータを提供するために接続される。データ・フォーマッティング・ユニット８５は、キャッシュ・スライス４４を、バッファ８６を介してライトバック経路指定ネットワーク３７に接続して、ライトバック結果が、１つの実行スライスから別の実行スライスのリソースにライト・スルーされることを可能にする。キャッシュ・スライス４６のデータ・キャッシュ８２は、より高次のキャッシュ／システム・メモリから値をロードするために、および、データ・キャッシュ８２から値をフラッシュまたはキャスト・アウトするために、Ｉ／Ｏ経路指定ネットワーク４１にも接続される。本開示に与えられた例では、命令実行スライスＥＳ０〜ＥＳ７に対してディスパッチされた命令が、完全な外部命令、または、外部命令の一部、すなわち、復号された「内部命令」であり得ることが理解される。さらに、所与のサイクルで、命令実行スライスＥＳ０〜ＥＳ７のいずれかに対してディスパッチされた内部命令の数が、１より大きいことがあり、また、命令実行スライスＥＳ０〜ＥＳ７の１つ１つが、必ずしも所与のサイクルで内部命令を受け取るわけではない。
【００２８】
本発明が、その好ましい実施形態を参照して特に示され説明されたが、本発明の範囲から逸脱することなく、前述のもの、ならびに形式および詳細における他の変更がなされてよいことは、当業者によって理解されるであろう。
【図１】
0006621476.tif 000002
【図２】
0006621476.tif 000003
【図３】
0006621476.tif 000004
【図４】
0006621476.tif 000005
【図５】
0006621476.tif 000006
【図６】
0006621476.tif 000007
【図７】
0006621476.tif 000008
【図８】
0006621476.tif 000009
【図９】
0006621476.tif 000010