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