(57)【特許請求の範囲】
【請求項１】
複数の命令ストリームの命令を受け取るための複数のディスパッチ・キューと、
前記複数の命令ストリームを並列に実行するための複数の並列命令実行スライスと、
前記ディスパッチ・キューの出力を前記並列命令実行スライスにルーティングするためのディスパッチ・ルーティング・ネットワークであって、前記ディスパッチ・キューの各々を前記複数の並列命令実行スライスに接続する前記ディスパッチ・ルーティング・ネットワークと、
命令フロー制御ロジックとを含み、
前記ディスパッチ・ルーティング・ネットワークが前記複数の命令ストリームの実行要件および前記複数の並列命令実行スライス内のリソース利用可能性に従って前記ディスパッチ・キューと前記複数の並列命令実行スライスとの関係を動的に変化させ、
前記命令フロー制御ロジックが、前記複数の命令ストリームの間で前記並列命令実行スライスが共有されるように、前記複数の命令ストリームの命令を前記並列命令実行スライスのうち利用可能なものにルーティングするように前記ディスパッチ・ルーティング・ネットワークを制御する、
プロセッサ・コア。
【請求項２】
前記複数の並列命令実行スライスの各並列命令実行スライスが、
前記各並列命令実行スライスに対応する前記命令ストリームのディスパッチされた命令を前記ディスパッチ・ルーティング・ネットワークから受け取るための複数の内部発行キューと、
前記内部発行キューのうち対応するものから前記命令を受け取り、それによって前記対応する命令ストリームの前記命令の順不同な実行をサポートする、複数の内部パイプラインとを含む、請求項１に記載のプロセッサ・コア。
【請求項３】
前記命令フロー制御ロジックが、前記並列命令実行スライスのうち第１のものが前記命令ストリームのうち第１のものの現在の命令を実行中であると判断したことに応答して、前記命令ストリームのうち前記第１のものの次の命令を前記並列命令実行スライスのうち別のものにルーティングする、請求項１に記載のプロセッサ・コア。
【請求項４】
前記並列命令実行スライスのうち２つ以上が、前記２つ以上の並列命令実行スライスの各並列命令実行スライスの実行単位の幅よりも広い第１の実行単位の幅を必要とする１つまたは複数の命令を実行するために動的に組み合わせ可能であり、前記２つ以上の並列命令実行スライスの各並列命令実行スライスの実行単位の幅と等しい第２の実行単位の幅を必要とする命令を別々に実行するときにも、前記１つまたは複数の命令を実行するために使用される前記並列命令実行スライスのリソースが使用される、請求項１ないし３のいずれかに記載のプロセッサ・コア。
【請求項５】
前記２つ以上の並列命令実行スライスの各パイプラインよりも広い実行単位の幅を必要とする前記１つまたは複数の命令が、前記命令によって操作される複数のデータ値を処理するために、より広い実行単位の幅を必要とする単一命令複数データ（ＳＩＭＤ）命令である、請求項４に記載のプロセッサ・コア。
【請求項６】
前記複数の並列命令実行スライスを結合する結果ルーティング・ネットワークをさらに含み、前記命令ストリームのうち所与の１つの実行結果が前記並列命令実行スライスのうち複数の並列命令実行スライス間で共有される、請求項１ないし５のいずれかに記載のプロセッサ・コア。
【請求項７】
前記結果ルーティング・ネットワークに結合された複数のキャッシュ・スライスをさらに含み、前記キャッシュ・スライスが、前記実行結果に対応する値を含む値をロードおよびストアするためのロード-ストア・ユニットを含む、請求項６に記載のプロセッサ・コア。
【請求項８】
複数の命令ストリームのプログラム命令を実行するための少なくとも１つのプロセッサ・コアと、
前記プログラム命令をストアするために前記プロセッサ・コアに結合されたメモリとを含み、
前記少なくとも１つのプロセッサ・コアが、
前記プログラム命令を受け取るための複数のディスパッチ・キューと、
前記複数の命令ストリームを並列に実行するための複数の並列命令実行スライスと、
前記ディスパッチ・キューの出力を前記並列命令実行スライスにルーティングするためのディスパッチ・ルーティング・ネットワークであって、前記ディスパッチ・キューの各々を前記複数の並列命令実行スライスに接続する前記ディスパッチ・ルーティング・ネットワークと、
命令フロー制御ロジックとを含み、
前記複数の命令ストリームの実行要件および前記複数の並列命令実行スライス内のリソース利用可能性に従って前記ディスパッチ・キューと前記複数の並列命令実行スライスとの関係を動的に変化させるように前記ディスパッチ・ルーティング・ネットワークが制御されるようにし、
前記命令フロー制御ロジックが、前記複数の命令ストリームの間で前記並列命令実行スライスが共有されるように、前記複数の命令ストリームの命令を前記並列命令実行スライスのうち利用可能なものにルーティングするように前記ディスパッチ・ルーティング・ネットワークを制御する、
コンピュータ・システム。
【請求項９】
前記プロセッサ・コア内の前記複数の並列命令実行スライスの各並列命令実行スライスが、
前記各並列命令実行スライスに対応する前記命令ストリームのディスパッチされた命令を前記ディスパッチ・ルーティング・ネットワークから受け取るための複数の内部発行キューと、
前記内部発行キューのうち対応するものから前記命令を受け取り、それによって対応する前記命令ストリームの前記命令の順不同な実行をサポートする、複数の内部パイプラインとを含む、請求項８に記載のコンピュータ・システム。
【請求項１０】
前記命令フロー制御ロジックが、前記並列命令実行スライスのうち第１のものが前記命令ストリームのうち第１のものの現在の命令を実行中であると判断したことに応答して、前記命令ストリームのうち前記第１のものの次の命令を前記並列命令実行スライスのうち別のものにルーティングする、請求項８に記載のコンピュータ・システム。
【請求項１１】
前記並列命令実行スライスのうち２つ以上が、前記２つ以上の並列命令実行スライスの各並列命令実行スライスの実行単位の幅よりも広い第１の実行単位の幅を必要とする１つまたは複数の命令を実行するために動的に組み合わせ可能であり、前記２つ以上の並列命令実行スライスの各並列命令実行スライスの実行単位の幅と等しい第２の実行単位の幅を必要とする命令を別々に実行するときにも、前記１つまたは複数の命令を実行するために使用される前記並列命令実行スライスのリソースが使用される、請求項８ないし１０のいずれかに記載のコンピュータ・システム。
【請求項１２】
前記２つ以上の並列命令実行スライスの各パイプラインよりも広い実行単位の幅を必要とする前記１つまたは複数の命令が、前記命令によって操作される複数のでータ値を処理するために、より広い実行単位の幅を必要とする単一命令複数データ（ＳＩＭＤ）命令である、請求項１１に記載のコンピュータ・システム。
【請求項１３】
前記少なくとも１つのプロセッサ・コアが前記複数の並列命令実行スライスを結合する結果ルーティング・ネットワークをさらに含み、前記命令ストリームのうち所与の１つの実行結果が前記並列命令実行スライスのうち複数の並列命令実行スライス間で共有される、請求項８ないし１２のいずれかに記載のコンピュータ・システム。
【請求項１４】
前記少なくとも１つのプロセッサ・コアが前記結果ルーティング・ネットワークに結合された複数のキャッシュ・スライスをさらに含み、前記キャッシュ・スライスが、前記実行結果に対応する値を含む値をロードおよびストアするためのロード-ストア・ユニットを含む、請求項１３に記載のコンピュータ・システム。
【請求項１５】
プロセッサ・コアによってプログラム命令を実行する方法であって、
前記プロセッサ・コアの複数のディスパッチ・キュー内に複数の命令ストリームの命令をストアするステップと、
前記ディスパッチ・キューの各々を複数の並列命令実行スライスに接続するディスパッチ・ルーティング・ネットワークを使用して前記ディスパッチ・キューの出力を前記並列命令実行スライスにルーティングするステップと、
前記ディスパッチ・キューから前記ディスパッチ・ルーティング・ネットワークを介して命令を受け取ることによって、前記並列命令実行スライスを使用して前記複数の命令ストリームを並列に実行するステップと、
前記複数の命令ストリームの間で前記並列命令実行スライスが共有されるように、前記複数の命令ストリームの命令を前記並列命令実行スライスのうち利用可能なものにルーティングするように前記ディスパッチ・ルーティング・ネットワークを制御するステップとを含み、
前記複数の命令ストリームの実行要件および前記複数の並列命令実行スライス内のリソース利用可能性に従って前記ディスパッチ・キューと前記複数の並列命令実行スライスとの関係を動的に変化させるように前記ディスパッチ・ルーティング・ネットワークが制御されるようにする、方法。
【請求項１６】
前記複数の命令ストリームを前記実行するステップが、
対応する前記並列命令実行スライスで、前記ディスパッチ・ルーティング・ネットワークから前記命令ストリームの前記命令を受け取るステップと、
前記並列命令実行スライス内で、前記受け取られた命令を複数の内部発行キューにストアするステップと、
前記内部発行キューから複数の内部パイプラインのうち対応するものに前記命令を発行することによって、対応する前記命令ストリームの前記命令の順不同な実行を行うステップとを含む、請求項１５に記載の方法。
【請求項１７】
前記並列命令実行スライスのうち第１のものが前記命令ストリームのうち第１のものの現在の命令を実行していてビジー状態であるか否かを判断するステップをさらに含み、前記制御するステップが、前記並列命令実行スライスのうち第１のものがビジー状態であると判断したことに応答して、前記命令ストリームのうち前記第１のものの次の命令を前記並列命令実行スライスのうち別のものにルーティングする、請求項１５に記載の方法。
【請求項１８】
前記制御するステップが、２つ以上の前記並列命令実行スライスの各並列命令実行スライスの実行単位の幅よりも広い第１の実行単位の幅を必要とする１つまたは複数の命令を実行するために前記並列命令実行スライスのうち２つ以上を動的に組み合わせ、前記２つ以上の並列命令実行スライスの各並列命令実行スライスの実行単位の幅と等しい第２の実行単位の幅を必要とする命令を別々に実行するときにも、前記１つまたは複数の命令を実行するために使用される前記並列命令実行スライスのリソースが使用される、請求項１５ないし１７のいずれかに記載の方法。
【請求項１９】
前記２つ以上の並列命令実行スライスの各パイプラインよりも広い実行単位の幅を必要とする前記１つまたは複数の命令が、前記命令によって操作される複数のでータ値を処理するために、より広い実行単位の幅を必要とする単一命令複数でータ（ＳＩＭＤ）命令である、請求項１８に記載の方法。
【請求項２０】
前記複数の並列命令実行スライスを結果ルーティング・ネットワークに結合するステップをさらに含み、前記命令ストリームのうち所与の１つの実行結果が前記並列命令実行スライスのうち複数の並列命令実行スライス間で共有される、請求項１５ないし１９のいずれかに記載の方法。
【請求項２１】
前記結果ルーティング・ネットワークに結合された複数のキャッシュ・スライスを使用して、前記実行結果に対応する値を含む値をロードおよびストアするステップをさらに含む、請求項２０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は処理システムおよびプロセッサに関連し、より詳細には、動的な命令ストリーム・マッピングを使用するパイプライン型プロセッサ・コアに関する。
【背景技術】
【０００２】
現代のプロセッサ・コアでは、パイプラインを使用して、複数の命令ストリームに対応する複数のハードウェア・スレッドを実行し、リソース共有を通して、また、１つまたは複数のハードウェア・スレッドがイベントを待機している間にも実行を進められるようにすることにより、より効率的なプロセッサリソースの使用を可能にする。
【０００３】
既存のシステムでは、通常、複数の異なる命令ストリームの実行のために専用のリソースおよびパイプラインが割り当てられ、複数のパイプラインによって、あるパイプラインがビジー状態になっている状況においてもプログラムの実行を継続することができる。しかし、その間、リソースはビジー状態のパイプラインに結びつけられたままであり、また、ある命令ストリームに割り当てられたすべてのパイプラインがビジー状態のときは、その命令ストリームはストールして、プロセッサ・コアの潜在的なスループットが減少する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、プログラム命令を処理するためのプロセッサ・コアおよび方法が提供され、それらが柔軟性およびスループットを改善することが望ましい。したがって、当技術分野には、前述した問題に対処することの必要性がある。
【課題を解決するための手段】
【０００５】
第１の態様によれば、本発明はプロセッサ・コアを提供し、プロセッサ・コアは、複数の命令ストリームの命令を受け取るための複数のディスパッチ・キューと、複数の命令ストリームを並列に実行するための複数の並列命令実行スライスと、ディスパッチ・キューの出力を命令実行スライスにルーティングするためのディスパッチ・ルーティング・ネットワークとを含み、ルーティング・ネットワークが複数の命令ストリームの実行要件および複数の並列命令実行スライス内のリソース利用可能性に従ってディスパッチ・キューと複数の並列命令実行スライスとの関係を動的に変化させるようにする。
【０００６】
別の態様によれば、本発明はコンピュータ・システムを提供し、コンピュータ・システムは、複数の命令ストリームのプログラム命令を実行するための少なくとも１つのプロセッサ・コアと、プログラム命令をストアするためにプロセッサ・コアに結合されたメモリとを含み、少なくとも１つのプロセッサ・コアが、プログラム命令を受け取るための複数のディスパッチ・キューと、複数の命令ストリームを並列に実行するための複数の並列命令実行スライスと、ディスパッチ・キューの出力を命令実行スライスにルーティングするためのディスパッチ・ルーティング・ネットワークとを含み、複数の命令ストリームの実行要件および複数の並列命令実行スライス内のリソース利用可能性に従ってディスパッチ・キューと複数の並列命令実行スライスとの関係を動的に変化させるようにルーティング・ネットワークが制御されるようにする。
【０００７】
さらに別の態様によれば、本発明はプロセッサ・コアによってプログラム命令を実行する方法を提供し、方法は、プロセッサ・コアの複数のディスパッチ・キュー内に複数の命令ストリームの命令をストアするステップと、ディスパッチ・ルーティング・ネットワークを使用してディスパッチ・キューの出力を複数の並列命令実行スライスにルーティングするステップと、ディスパッチ・キューからディスパッチ・ルーティング・ネットワークを介して命令を受け取ることによって、命令実行スライスを使用して複数の命令ストリームを並列に実行するステップとを含み、複数の命令ストリームの実行要件および複数の並列命令実行スライス内のリソース利用可能性に従ってディスパッチ・キューと複数の並列命令実行スライスとの関係を動的に変化させるようにルーティング・ネットワークが制御されるようにする。
【０００８】
本発明は、プロセッサ・コア、コンピュータ・システム、および方法に具現化される。この方法はプロセッサ・コアの操作の方法であり、コンピュータ・システムは、プロセッサ・コアを含むシステムである。プロセッサ・コアは、複数の命令ストリームを並列に実行するための複数の並列の命令実行スライスおよび、ディスパッチ・ルーティング・ネットワークによって実行スライスに結合された複数のディスパッチ・キューを含む。ディスパッチ・ルーティング・ネットワークは、複数の実行命令ストリームの実行要件および複数の命令実行スライス内のリソース利用可能性に従ってディスパッチ・キューと命令実行スライスとの関係を動的に変化させるように制御される。本発明のいくつかの好ましい実施形態では、命令実行スライスは、単一命令複数データ（ＳＩＭＤ）の命令実行と、１つの命令ごとに行われる通常の命令実行との間で動的に再構成されてもよく、それにより、それらの命令タイプの混合が可能になる。本発明の他の好ましい実施形態では、単一の命令実行スライスの幅よりも広い幅のオペランドをもつ命令が、より広いオペランド幅を必要とするそれらの特定の命令のために協力して動作するように動的に構成される複数の命令実行スライスによって処理されてもよい。本発明の他の好ましい実施形態では、ある命令実行スライスが、ストリームのうち１つについてそれ以前に受け取られた１つまたは複数の命令の処理中でビジー状態にあるときに、そのストリームの次の命令の実行が可能になるように別の命令実行スライスが選択されてもよく、それにより、命令実行スライスのうち１つがストールしている間も命令ストリームが実行を進めることが可能になる。
【０００９】
次に、本発明について、下記の図に示されるとおりの好ましい実施形態を参照しながら、単に例として説明する。
【図面の簡単な説明】
【００１０】
【図１】本発明の好ましい実施形態による、本発明の実施形態による技法が実施される処理システムを示すブロック線図である。
【図２】図１のプロセッサ・コア２０Ａ〜２０Ｂを実装するために使用することができるプロセッサ・コア２０の詳細を示すブロック線図である。
【図３】本発明の好ましい実施形態による、プロセッサ・コア２０による命令ディスパッチを示す絵図である。
【図４】本発明の好ましい実施形態による、プロセッサ・コア２０による別の命令ディスパッチを示す絵図である。
【図５】本発明の好ましい実施形態による、プロセッサ・コア２０の詳細を示すブロック線図である。
【図６】本発明の好ましい実施形態による、図５の分割実行およびＩ／Ｏスライス３０の詳細を示すブロック線図である。
【図７】本発明の好ましい実施形態による、図６の命令実行スライス４２Ａ〜４２Ｄを実装するために使用することができる命令実行スライス４２の詳細を示すブロック線図である。
【図８】本発明の好ましい実施形態による、図６の命令実行スライス４２Ａ〜４２Ｄを実装するために使用することができる、代替の命令実行スライス４２AAの詳細を示すブロック線図である。
【図９】本発明の好ましい実施形態による、図６のロード−ストア・スライス４４Ａ〜４４Ｄを実装するために使用することができる命令実行スライス４４の詳細を示すブロック線図である。
【発明を実施するための形態】
【００１１】
本発明は、プロセッサおよび処理システムに関し、プロセッサおよび処理システムにおいて、従来のパイプラインが実行スライスに置き換えられており、特に、あるストリームの現在の命令を実行しているスライスがビジー状態にあるときに、命令を実行するように実行スライスを任意に割り当てることができ、また、複数のデータを取り扱うために複数のスライスを必要とする幅の広い命令または単一命令複数データ（ＳＩＭＤ）命令を実行するために複数のスライスを実行時に組み合わせることができる。複数の命令ストリームを受け取るために複数のディスパッチ・キューが備えられており、ディスパッチ・キューはディスパッチ・ルーティング・ネットワークを介して命令実行スライスに結合されており、ディスパッチ・ルーティング・ネットワークが命令実行スライスの利用可能性または命令処理の要件あるいはその両方に従って、前述したように、命令実行スライスとディスパッチ・キューとの間の関係を動的に再構成するように制御されることが可能になる。複数のキャッシュ・スライスが結果ルーティング・ネットワークを介して命令実行スライスに結合されており、キャッシュ・スライスもまた、命令実行スライスとの関係を、利用可能性に従って、または他の基準に従って変化させることが可能になる。結果ルーティング・ネットワークは、命令実行スライスまたはキャッシュ・スライスあるいはその両方によるさらなる処理のために必要な、結果およびオペランドの伝達を提供する。
【００１２】
図１を参照すると、本発明の一実施形態による処理システムが示されている。図示される処理システムはある数のプロセッサ１０Ａ〜１０Ｄを含み、それぞれが本発明の一実施形態に従っている。図示されるマルチ処理システムは説明を目的とし、本発明の他の好ましい実施形態による処理システムには、複数スレッド・コアをもつ単一プロセッサ・システムが含まれる。プロセッサ１０Ａ〜１０Ｄは構造的に同一であり、コア２０Ａ〜２０Ｂおよびローカル・ストレージ１２を含み、このストレージはキャッシュ・レベルでもよく、または内部システム・メモリのレベルでもよい。プロセッサ１０Ａ〜１０Ｂは、メイン・システム・メモリ１４、ストレージ・サブシステム１６に結合されており、サブシステム１６は、ＣＤ−ＲＯＭ１７などの媒体を読み出すための取り外し不可能なドライブおよび光ドライブを含む。媒体はコンピュータ・プログラム製品を形成し、一般に少なくとも１つのオペレーティング・システム、関連するアプリケーション・プログラム、および任意選択で、プロセッサ１０Ａ〜１０Ｄによる実行のために複数のオペレーティング・システムのパーティションを管理するためのハイパーバイザを実装するプログラム命令を含む。図示される処理システムは、入力／出力（Ｉ／Ｏ）のインタフェースならびに、ユーザ入力を受け取るためのマウスとキーボードおよび情報を表示するためのグラフィカル・ディスプレイなどの装置１８も含む。図１のシステムは、本発明のプロセッサ・アーキテクチャが実装されるシステムを説明するために使用されるが、図示されるアーキテクチャは限定的ではなく、本発明の技法が適用される適切なコンピュータ・システムの一例を提供することが意図されていることが理解される。
【００１３】
図２を参照すると、図１のプロセッサ・コア２０Ａ〜２０Ｂを実装するために使用することのできる例示的プロセッサ・コア２０の詳細が示されている。プロセッサ・コア２０は命令キャッシュＩＣａｃｈｅを含み、このキャッシュは上位のキャッシュまたはシステム・メモリからフェッチされた複数の命令ストリームをストアして、複数のディスパッチ・キューＤｉｓｐ０〜Ｄｉｓｐ３に命令ストリーム（複数可）を提示する。プロセッサ・コア２０内の制御ロジックは、ディスパッチ・キューＤｉｓｐ０〜Ｄｉｓｐ３からディスパッチ・ルーティング・ネットワーク２２を介した複数の命令実行スライスＥＳ０〜ＥＳ７への命令のディスパッチを制御する。これによって、任意のディスパッチ・キューＤｉｓｐ０〜Ｄｉｓｐ３から任意の命令実行スライスＥＳ０〜ＥＳ７に命令をディスパッチできるようになるが、完全なクロスポイント・ルーティング、すなわち任意のディスパッチ・キューから任意のスライスへのルーティングは本発明の要件ではない。命令実行スライスＥＳ０〜ＥＳ７は、命令ストリーム内の命令のための命令サイクルのうち実行サイクル部分を行う必要性に応じて、論理、算術、およびその他の演算の順序付けおよび実行を行い、そして全く同じ汎用の命令実行スライスＥＳ０〜ＥＳ７であってもよいし、または、プロセッサ・コア２０が専用の実行スライスＥＳ０〜ＥＳ７を含んでもよい。命令実行スライスＥＳ０〜ＥＳ７は、複数の命令または命令の一部もしくはその両方を実行するために複数の内部パイプラインを含んでもよく、したがって、本明細書に記載される「ビジー」の指示は、命令実行スライスＥＳ０〜ＥＳ７のうちの特定の１つが所与の１つの命令ストリームについて複数の命令処理中でビジー状態である状況を含むことがある。命令実行スライスＥＳ０〜ＥＳ７は実行スライス伝達ネットワーク２９によって結合されており、例えば、あるスライス上で、別の実行スライスによって生成された値にさらなる処理を行うときに、このネットワークを通じて命令実行スライスＥＳ０〜ＥＳ７の間で値を交換することができる。完全ルーティングの（またはクロスポイントの）ネットワークを使用して実行スライス伝達ネットワーク２９を実装してもよい。あるいは、いくつかの実装例では、例えば隣接するスライスのみが接続されてもよいなど、命令実行スライスの特定のグループ間でだけ命令実行スライスＥＳ０〜ＥＳ７間の接続が行われてもよい。並列の／調和した実行が必要なＳＩＭＤまたはオペランドが大きい命令は切り離して実行することもできるが、実行スライス伝達ネットワーク２９を使用して、そのような命令をタンデム実行することもできる。
【００１４】
命令実行サイクルのロード−ストア部分（すなわち、内部レジスタのリード／ライトとは対照的に、キャッシュの一貫性を維持するために行われる操作）は、複数のキャッシュ・スライスＬＳ０〜ＬＳ７によって行われ、これらのキャッシュ・スライスはライトバック（結果）ルーティング・ネットワーク２４によって命令実行スライスＥＳ０〜ＥＳ７に結合されている。図示される実施形態では、任意のキャッシュ・スライスＬＳ０〜ＬＳ７を使用して、任意の命令実行スライスＥＳ０〜ＥＳ７に対して、ある命令のロード−ストア操作部分を行うことができるが、それは本発明の要件ではない。命令実行スライスＥＳ０〜ＥＳ７は複数のパイプラインに並列に内部命令を発行してもよく、例えば、ある命令実行スライスが実行操作とロード／ストア操作を同時に実行してもよいし、または、複数の内部パイプラインを使用して複数の算術演算または論理演算を実行してもよいし、その両方でもよい。内部パイプラインは、浮動小数点、スカラー、ロード／ストアなどの、同一タイプでもよいし、または、別々のタイプでもよい。さらに、所与の実行スライスは、例えばライトバック・ルーティング・ネットワーク２４などへの複数のポート接続を有してもよく、あるポート接続がキャッシュ・スライスＬＳ０〜ＬＳ７へのロード−ストア接続の専用で、専用のスライスまたはその他の命令実行スライスなどのその他のスライスとの間で値を伝達するために別のポートが使用されてもよい。ライトバック結果は、命令実行スライスＥＳ０〜ＥＳ７の様々な内部パイプラインから、命令実行スライスＥＳ０〜ＥＳ７をライトバック・ルーティング・ネットワーク２４に接続するライトバック・ポート（複数可）に向けてスケジューリングされる。ロード−ストア・ルーティング・ネットワーク２８はキャッシュ・スライスＬＳ０〜ＬＳ７を結合して、ＳＩＭＤ命令の実行、キャッシュ・スライスＬＳ０〜ＬＳ７の幅よりデータ幅が大きい命令の処理、およびその他の、キャッシュ・スライスＬＳ０〜ＬＳ７間のデータの変換または再整列を必要とする操作のために、変換移行を提供する。Ｉ／Ｏルーティング・ネットワーク２６はキャッシュ・スライスＬＳ０〜ＬＳ７を、次に高いレベルのキャッシュまたはシステム・メモリへのアクセスを提供する中継スライスＸＳ０、ＸＳ１のペアに結合し、それらのキャッシュまたはシステム・メモリはプロセッサ・コア２０内に組み込まれているかプロセッサ・コア２０の外部にあってもよい。図に示される例ではキャッシュ・スライスＬＳ０〜ＬＳ７と命令実行スライスＥＳ０〜ＥＳ７の数は一致しているが、実際には、特定の実装のリソースの必要性に応じて、提供される各タイプのスライスの数は異なってもよい。前述したように、ディスパッチ・ルーティング・ネットワーク２２は単方向ネットワークであるが、図示されるように、ロード−ストア・ルーティング・ネットワーク２８およびＩ／Ｏルーティング・ネットワーク２６として、クロスポイント・ネットワークの形をとることもできる。
【００１５】
図３を参照すると、プロセッサ・コア２０内の命令実行スライスＥＳ０、ＥＳ１およびＥＳ２への命令のルーティングの例が示されている。本開示で与えられる例では、命令実行スライスにディスパッチされる命令は、完全な外部命令でもよいし、または、外部命令の一部、すなわちデコードされた「内部命令」でもよい。さらに、所与のサイクルで、命令実行スライスＥＳ０、ＥＳ１およびＥＳ２のいずれかにディスパッチされる内部命令の数は、１より大きくてもよく、命令実行スライスＥＳ０、ＥＳ１およびＥＳ２のどれもが必ずしも所与のサイクル内で内部命令を受け取らなくてもよい。図３は、命令実行スライスＥＳ０、ＥＳ１およびＥＳ２にそれぞれ送られる命令シーケンスを示す３つの列を示す。行は命令の１つの命令ディスパッチ・シーケンスに対応し、行は説明を簡単にするために整列されているが、実際には、ディスパッチは概して同時には発生しないので、実行スライスがいつ終了するかまたは特定の命令を受け取るかについて、列と列の間に制約はないことが理解される。行１〜２で、命令実行スライスＥＳ０、ＥＳ１およびＥＳ２のそれぞれに別々の命令がディスパッチされる。行３で、命令実行スライスＥＳ１およびＥＳ２を動的に組み合わせることによって、幅の広い実行単位を必要とする命令が実行されるように割り当てられ、命令実行スライスＥＳ０には、命令実行スライスＥＳ０、ＥＳ１およびＥＳ２の幅に一致する幅を有する別の命令が送られる。行４〜５で、命令実行スライスＥＳ０、ＥＳ１およびＥＳ２のそれぞれに再び別々の命令がディスパッチされる。行６〜７で、命令実行スライスＥＳ０、ＥＳ１およびＥＳ２を繋いで並列操作を行うことによって３つのデータ値をもつＳＩＭＤ命令が実行される。行８〜９で、命令実行スライスＥＳ０、ＥＳ１を繋ぐことによって２つのデータ値をもつＳＩＭＤ命令が実行され、命令実行スライスＥＳ２には他の独立した命令が送られる。行１０で、命令実行スライスＥＳ０、ＥＳ１およびＥＳ２は再び独立した命令の実行を開始する。図３に示される例は説明のみを目的とし、プロセッサ・コア２０で提供される動的再構成の柔軟性を示すために提供されている。図に示されるように、構成が変更可能であることにより、すべての命令実行スライスＥＳ０〜ＥＳ７をアクティブな実行状態に維持したままで、ＳＩＭＤまたは様々な幅の命令ストリームの実行などの様々なタイプの操作を行うことが可能になる。
【００１６】
図４を参照すると、プロセッサ・コア２０内の命令処理の別の例が示されている。これは図４に別途に描かれているが、図３の例に提供される命令実行スライス再構成のいずれかまたはすべてと組み合わせられてもよい。図４は、命令実行スライスＥＳ０、ＥＳ１およびＥＳ２にそれぞれ送られる命令シーケンスを示す３つの列を示す。図３と同様に、行は１つの命令シーケンスに対応し、各ブロック内に示される数は、実行中の命令が属する、０〜２の番号が付けられた命令ストリームの番号である。行１〜２で、対応する命令ストリーム０〜２のそれぞれについて、命令実行スライスＥＳ０、ＥＳ１およびＥＳ２のそれぞれに命令がディスパッチされる。行３で、命令実行スライスＥＳ１は命令ストリーム１内の現在の命令をまだ処理しているので、命令実行スライスＥＳ１はビジー状態になる。行４で、ある命令ストリームの命令をその命令ストリームのデフォルトの命令実行スライス以外の命令実行スライスにルーティングできるようにするための優先順位付け、ラウンドロビン、または他の方式により、命令ストリーム１の命令が命令実行スライスＥＳ２にディスパッチされる。行５で、命令実行スライスＥＳ０は、行４から命令を受け取った後にビジー状態になり、命令実行スライスＥＳ１は、さらに別の命令を受け取るために利用可能なので、命令実行スライスＥＳ１が命令ストリーム１の次の命令のディスパッチを受け取る。命令実行スライスＥＳ２もまた、命令ストリーム１の命令を実行中である。行６で、命令実行スライスＥＳ０はまだビジー状態であり、命令実行スライスＥＳ１およびＥＳ２はそれぞれ、命令ストリーム１および２の命令の実行を再開する。行７で、命令実行スライスＥＳ１が選ばれて命令ストリーム０の次の命令を実行するが、命令実行スライスＥＳ０は現在の命令を実行中でビジー状態のままなので、命令実行スライスＥＳ２が命令ストリーム２の別の命令を実行する。行８で、命令実行スライスＥＳ１は命令ストリーム１の命令を実行し、命令実行スライスＥＳ２は命令ストリーム２の別の命令を実行する。図４に示される例は説明のみを目的とし、プロセッサ・コア２０で提供される命令ストリーム・ディスパッチのマッピングの柔軟性を示すために提供されている。図から分かるように、ルーティング可能なディスパッチにより、いくつかの実行スライスでビジー状態に遭遇したときにも、その間、命令ストリームをすべてアクティブ実行状態に維持することが可能になる。
【００１７】
図５を参照すると、プロセッサ・コア２０の詳細がさらに示されている。プロセッサ・コア２０は分岐実行ユニット３２、命令フェッチ・ユニット（ＩＦｅｔｃｈ）３３、および命令シーケンサ・ユニット（ＩＳＵ）３４を含み、これらは命令のフェッチおよび順序付けを制御する。図３に示されるような再構成、すなわち、ディスパッチ・キュー内の命令を編成してＳＩＭＤおよび可変幅の操作の実行を準備することを行うために、自己学習型命令バッファ（ＩＢ）３５が命令をグループ化する。命令バッファ（ＩＢＵＦ）３６は、命令ストリームのそれぞれについてディスパッチ・キュー（図２のＤｉｓｐ０〜Ｄｉｓｐ３）を保持するために分けられており、ディスパッチ・ルーティング・ネットワーク２２がＩＢＵＦ３６を、分割実行とキャッシュ・スライス３０に結合する。命令フローおよびネットワーク制御のブロック３７は、分割実行とキャッシュ・スライス３０およびディスパッチ・ルーティング・ネットワーク２２を制御して、図３および図４に示されるとおりのスライスの動的制御、ならびに下記に詳細をさらに説明する他の操作を行う。命令完了ユニット３８も提供され、ＩＳＵ３４によって順序付けされた命令の完了を追跡して、分割実行とキャッシュ・スライス３０内のキャッシュ・スライスによるライトバック操作を制御する。電力管理ユニット３９が提供され、分割実行とキャッシュ・スライス３０内のアクティブなスライスの数を増減させることによってエネルギーを節約する。
【００１８】
図６を参照すると、プロセッサ・コア２０内の分割実行とキャッシュ・スライス３０の詳細がさらに示されている。命令実行スライス４２Ａ〜４２Ｄは、例えば図２の命令実行スライスＥＳ０、ＥＳ２、ＥＳ４およびＥＳ６を表し、キャッシュ・スライス４４Ａ〜４４Ｄは図２のキャッシュ・スライスＬＳ０、ＬＳ２、ＬＳ４およびＬＳ６を表す。ライトバック・ルーティング・ネットワーク２４は８本のバスからなるクロスポイント・セットの形をとり、それによって命令実行スライスＥＳ０、ＥＳ２、ＥＳ４およびＥＳ６のそれぞれと、キャッシュ・スライスＬＳ０、ＬＳ２、ＬＳ４およびＬＳ６から選択された対応する１つとの間の同時双方向通信が可能になる。双方向通信に関して、ある命令実行スライスのための結果のライトバックに使用されるキャッシュ・スライスはデータのローディングに使用されるキャッシュ・スライスとは異なってもよく、その理由は、図３〜４に示されるように、命令のシーケンスが命令ストリームの間で切り替わることがあり、そのような状況下では概して、ある命令ストリームのシーケンス内で次の命令を実行するために使用される実行スライスを変更するときには、キャッシュ・スライスを異なる命令実行スライスに接続することが望ましいからである。さらに、キャッシュ・スライスと命令実行スライスの関係は、例えば命令が大量のデータを参照するために、任意に変化させることがあるので、複数のキャッシュ・スライスがロードに割り当てられながら、大量の値を修正する命令に対して、複数のキャッシュ・スライスが結果のライトバック操作に割り当てられてもよい。キャッシュ・スライスと命令実行スライスの間の任意な接続をサポートするライトバック・ルーティング・ネットワーク２４を提供することにより、１つまたは複数の生成側スライスから１つまたは複数の受け取り側スライスへの値の移行を可能にすることによって、分割実行が効率的にサポートされる。受け取り側スライスは、生成側スライスと同じスライス・タイプであってもよいし、または専用スライス（複数可）などの別のスライス・タイプであってもよい。クラスタ・フェンス４６は、例えば命令実行スライスＥＳ１、ＥＳ３、ＥＳ５およびＥＳ７ならびにキャッシュ・スライスＬＳ１、ＬＳ３、ＬＳ５およびＬＳ７などの、命令実行スライスおよびキャッシュ・スライスの他のグループ（クラスタ）からなる他のライトバック・ルーティング・ネットワークにライトバック・ルーティング・ネットワークを結合するために提供する。
【００１９】
図７を参照すると、図６の命令実行スライス４２Ａ〜４２Ｄを実装するために使用できる実行スライス（ＥＳ）４２の例が示されている。ディスパッチ・キューからの入力がディスパッチ・ルーティング・ネットワーク２２を介してレジスタ配列５０によって受け取られ、オペランドおよび命令を実行予約ステーション（ＥＲ）５３内にキューイングできるようになる。レジスタ配列５０は独立命令ストリームまたはＳＩＭＤ命令のために独立レジスタのセットを有するように設計されながらも、複数の命令実行スライスが非ＳＩＭＤ命令または同じ命令ストリームのＳＩＭＤ命令の同じセグメントを実行する場合のために、複数の命令実行スライス間のクローンである従属レジスタのセットも設計される。ライトバック値がライトバック・ルーティング・ネットワーク２４を通して他のスライスと交換されるなど、エイリアス・マッパ５１はレジスタ配列内の値を任意の外部リファレンスにマッピングする。履歴バッファＨＢ５２はＥＳ４２によって実行される命令のレジスタ・ターゲットに修復能力を提供する。ライトバック・ルーティング・ネットワーク２４から選択された結果値およびレジスタ配列５０からのオペランド値が、算術論理演算ユニット（ＡＬＵ）入力マルチプレクサ５４によって選択され、ＡＬＵ５５上で、そのＡＬＵによって操作される。結果バッファ５６がＡＬＵ５５から結果を受け取り、マルチプレクサ５７が結果バッファ５６の値を、ライトバック・ルーティング・ネットワーク２４の１つまたは複数のチャネルが利用できるようにし、命令ストリームまたはキャッシュ・スライスの次の命令を処理している次のＥＳがそれを使用して、操作のターゲットに応じて結果をストアすることができる。マルチプレクサ５７は、実行スライス伝達ネットワーク２９を介して他の命令実行スライスへの接続も提供する。ライトバック・ルーティング・ネットワーク２４はＥＲ５３、履歴バッファ５２およびＡＬＵ入力マルチプレクサ５４にも、ライトバック・バッファ５８を介して結合されており、リソース値のライトバック、完了した命令の退却、および結果に対するさらなる計算が、それぞれサポートされる。
【００２０】
図８を参照すると、図６の命令実行スライス４２Ａ〜４２Ｄを実装するために使用できる実行スライス（ＥＳ）４２ＡＡの詳細の別の例が示されている。実行スライス４２ＡＡは図７の実行スライス４２に類似し、両者の間の唯一の相違について、下記に詳細に説明する。実行スライス４２ＡＡは別の実行スライス４２ＢＢと共に示されて、図２の実行スライスＥＳ０〜ＥＳ７の中の実行スライスのペア間または実行スライスの別のグループ分けの間に提供されてもよいインターロック制御を説明する。実行インターロック制御は単一の命令ストリームの実行をサポートする実行スライス間の調整を提供する。その理由は、この調整がなければ、実行スライスＥＳ０〜ＥＳ７は、それぞれの対応する命令ストリームの実行を個別に管理するからである。実行スライス４２ＡＡは複数の内部実行パイプライン７０Ａ〜７０Ｃおよび７２を含み、これらは実行スライス４２ＡＡに対応する命令ストリームの命令の、順不同および同時の実行をサポートする。実行パイプライン７０Ａ〜７０Ｃおよび７２によって実行される命令は、ディスパッチ・ルーティング・ネットワーク２２を通して受け取られた命令を部分的に実装する内部命令であってもよいし、またはディスパッチ・ルーティング・ネットワーク２２を通して直接受け取られた命令であってもよい。すなわち、命令ストリーム自体によって命令のパイプライン処理がサポートされてもよいし、または、実行スライス４２ＡＡの上流で命令のデコードが行われてもよい。実行スライス７２は別途に多重化して描かれ、単一パイプライン、複数パイプライン、またはその両方のタイプの実行ユニットが実行スライス４２ＡＡ内に提供されてもよいことを示す。パイプラインの設計および機能は異なっていてもよく、または、実行スライス４２ＡＡで実行される命令のタイプに応じて一部または全部のパイプラインが同じであってもよい。例えば、アドレス計算、スカラーまたはベクター演算、浮動小数点演算などのために専用のパイプラインが提供されてもよい。マルチプレクサ５７Ａ〜５７Ｃが、結果バッファ５６Ａとの間で実行結果をルーティングするため、ならびに、ライトバック・ルーティング・ネットワーク２４、Ｉ／Ｏルーティング・ネットワーク２６、および、スライス間での共有のための特定のデータまたはキャッシュ・スライスＬＳ０〜ＬＳ７の１つまたは複数に送信されたライトバック操作のルーティングのために提供されてもよい他のルーティング・ネットワーク２８にライトバック結果をルーティングするために提供されてもよい。
【００２１】
図９を参照すると、図６のキャッシュ・スライス４４Ａ〜４４Ｄを実装するために使用できるキャッシュ・スライス（ＬＳ  Ｓｌｉｃｅ）４４の例が示されている。ロード／ストア・アクセス・キュー（ＬＳＡＱ）６０がライトバック・ルーティング・ネットワーク２４に結合され、ライトバック・ルーティング・ネットワーク２４およびＬＳＡＱ６０への直接接続がマルチプレクサ６１によって選択され、それが、ＬＳＡＱ６０またはライトバック・ルーティング・ネットワーク２４のいずれかからデータ・キャッシュ６２のキャッシュ・ディレクトリ６３への入力となる。ロード／ストア・ルーティング・ネットワーク２８によって他のキャッシュ・スライスへの接続が提供され、このネットワークは、データ・キャッシュ６２からデータを受け取るように、および別のスライスのデータ・アンアラインメント・ブロック６４にデータを提供するように結合されている。データ・フォーマッティング・ユニット６５がキャッシュ・スライス４４をライトバック・ルーティング・ネットワークにバッファ６６を介して結合して、１つの実行スライスから別の実行スライスのリソースにライトバック結果を書き込めるようにする。上位のキャッシュ／システム・メモリから値をローディングするためおよび、データ・キャッシュ６２から値をフラッシュまたはキャストアウトするために、データ・キャッシュ６２もまたＩ／Ｏルーティング・ネットワーク２６に結合されている。
【００２２】
本発明について、本発明の好ましい実施形態を参照して具体的に図示および説明してきたが、本発明の範囲を逸脱することなく、それらの形および詳細に、前述またはその他の変更を加えてもよいことが当業者には理解される。
【図１】
0006674384.tif 000002
【図２】
0006674384.tif 000003
【図３】
0006674384.tif 000004
【図４】
0006674384.tif 000005
【図５】
0006674384.tif 000006
【図６】
0006674384.tif 000007
【図７】
0006674384.tif 000008
【図８】
0006674384.tif 000009
【図９】
0006674384.tif 000010