(57)【要約】【課題】  高い計算集約性のワークロードを処理するために、複数のコアレットを結合して単一のマイクロプロセッサ・コアにする構成可能なマイクロプロセッサを提供する。【解決手段】  上記単一のマイクロプロセッサを形成する手法では、先ず、複数のコアレットにおける２つまたはそれ以上のコアレットを選択し、２つまたはそれ以上のコアレットの資源を結合して結合された資源を形成する。各結合された資源は、個々の各コアレットが利用可能なものより多くの資源を構成する。次に、結合された資源を単一のマイクロプロセッサ・コアに割り当てることによって２つまたはそれ以上のコアレットから単一のマイクロプロセッサ・コアを形成する。なお、結合された資源は単一のマイクロプロセッサ・コアにその専用のものであり、単一のマイクロプロセッサ・コアは専用の結合された資源を用いて命令を処理する。【選択図】  図７
2008226236.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアレットを結合して単一のマイクロプロセッサ・コアを形成するためにコンピュータを利用する方法であって、
前記複数のコアレットにおける２つまたはそれ以上のコアレットを選択するステップと、
個々の各コアレットが利用可能なより多くのの資源を含む結合された資源を形成するために前記２つまたはそれ以上のコアレットの資源を結合するステップと、
前記結合された資源を前記単一のマイクロプロセッサ・コアに割り当てることによって前記２つまたはそれ以上のコアレットから前記単一のマイクロプロセッサ・コアを形成するステップと、
を含み、前記結合された資源は前記単一のマイクロプロセッサ・コアに専用ものであり、前記単一のマイクロプロセッサ・コアは前記結合された資源を用いて命令を処理する、前記方法。
【請求項２】
前記結合するステップは、マイクロプロセッサ・ソフトウェアが前記２つまたはそれ以上のコアレットを結合するためのビットをセットするときに行われる、請求項１に記載の方法。
【請求項３】
前記２つまたはそれ以上のコアレットは体系化された資源および体系化されてない資源を含む、請求項１に記載の方法。
【請求項４】
前記体系化された資源は、データ・キャッシュ、命令キャッシュ、および命令バッファを含む、請求項３に記載の方法。
【請求項５】
前記体系化されてない資源は、リネーム資源、命令キュー、ロード／ストア・キュー、リンク／カウント・スタック、および完了テーブルを含む、請求項３に記載の方法。
【請求項６】
前記単一のマイクロプロセッサ・コアが前記単一のマイクロプロセッサ・コアに専用の結合された命令キャッシュにおいて命令を受け取ったことに応答して、前記単一のマイクロプロセッサ・コアにおける結合された命令バッファに前記命令を供給するステップと、
前記結合された命令バッファから前記単一のマイクロプロセッサ・コアにおける実行ユニットに前記命令をディスパッチするステップと、
前記命令を実行するステップと、
前記命令を完了するステップと、
を含む、請求項１に記載の方法。
【請求項７】
偶数の命令が前記結合された命令キャッシュにおける第１コアレット・パーティションから前記結合された命令バッファに供給され且つ実行のために前記コアレット・パーティションに専用の実行ユニットに前以ってディスパッチされ、
奇数の命令が前記結合された命令キャッシュにおける第２コアレット・パーティションから前記結合された命令バッファに供給され且つ実行のために前記第２コアレット・パーティションに専用の実行ユニットに前以ってディスパッチされる、
請求項６に記載の方法。
【請求項８】
前記命令は、前記結合された命令キャッシュから前記結合された命令バッファに逐次に供給され、前記単一のマイクロプロセッサ・コアにおけるすべての実行ユニットにディスパッチされる、請求項６に記載の方法。
【請求項９】
前記実行ユニットは、ロード／ストア・ユニット、固定小数点ユニット、浮動小数点ユニット、およびブランチ・ユニットを含む、請求項６に記載の方法。
【請求項１０】
前記ブランチ・ユニットは、ブランチ命令を実行する１つのブランチ・ユニットおよびブランチ予測誤りのペナルティを減らすために前記ブランチ命令の代替ブランチ・パスを処理する第２ブランチ・ユニットを含む、請求項９に記載の方法。
【請求項１１】
前記ロード／ストア・ユニットは、他のコアレットに無関係であるロード／ストア・データを得るために結合データ・キャッシュをアクセスする、請求項９に記載の方法。
【請求項１２】
前記単一のマイクロプロセッサ・コアは、高い計算集約性のワークロードを処理するために２つまたはそれ以上のコアレットから形成される、請求項１に記載の方法。
【請求項１３】
個々の各コアレットにとって利用可能な資源の量は前記資源の当初の量の２倍である、請求項１に記載の方法。
【請求項１４】
単一のマイクロプロセッサ・コアを含む処理ユニットを含む構成可能なマイクロプロセッサであって、前記単一のマイクロプロセッサ・コアは、
複数のコアレットにおける２つまたはそれ以上のコアレットを選択すること、
個々の各コアレットにとって利用可能な大量の資源を含む結合された資源を形成するために前記２つまたはそれ以上のコアレットの資源を結合すること、および
前記結合された資源を前記単一のマイクロプロセッサ・コアに割り当てること、
によって形成され、
前記結合された資源は前記単一のマイクロプロセッサ・コアに専用ものであり、前記単一のマイクロプロセッサ・コアは前記結合された資源を用いて命令を処理する、前記マイクロプロセッサ。
【請求項１５】
前記結合することは、マイクロプロセッサ・ソフトウェアが前記２つまたはそれ以上のコアレットを結合するためのビットをセットするときに行われる、請求項１４に記載の構成可能なマイクロプロセッサ。
【請求項１６】
前記２つまたはそれ以上のコアレットは体系化された資源および体系化されてない資源を含み、
前記体系化された資源は、データ・キャッシュ、命令キャッシュ、および命令バッファを含み、
前記体系化されてない資源は、リネーム資源、命令キュー、ロード／ストア・キュー、リンク／カウント・スタック、および完了テーブルを含む、
請求項１４に記載の構成可能なマイクロプロセッサ。
【請求項１７】
前記前記単一のマイクロプロセッサ・コアは、更に、
前記単一のマイクロプロセッサ・コアが前記単一のマイクロプロセッサ・コアに専用の結合された命令キャッシュにおいて命令を受け取ったことに応答して、前記単一のマイクロプロセッサ・コアにおける結合された命令バッファに前記命令を供給すること、
前記結合された命令バッファから前記単一のマイクロプロセッサ・コアにおける実行ユニットに前記命令をディスパッチすること、
前記命令を実行すること、および
前記命令を完了すること、
によって形成される、請求項１４に記載の構成可能なマイクロプロセッサ。
【請求項１８】
前記単一のマイクロプロセッサ・コアは、高い計算集約性のワークロードを処理するために２つまたはそれ以上のコアレットから形成される、請求項１４に記載の構成可能なマイクロプロセッサ。
【請求項１９】
個々の各コアレットにとって利用可能な資源の量は前記資源の当初の量の２倍である、請求項１４に記載の構成可能なマイクロプロセッサ。
【請求項２０】
マイクロプロセッサ・コアを含む少なくとも１つの処理ユニットを含み、
前記マイクロプロセッサ・コアは２つまたはそれ以上のコアレットの結合された資源を含み、前記結合された資源は前記マイクロプロセッサ・コアに専用のものであり、前記マイクロプロセッサ・コアは前記結合された資源を用いて命令を処理する、情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にはデータ処理システムの改良に関し、特に、データを処理するための方法およびシステムに関するものである。更に詳しく云えば、本発明は、単一のプロセッサ・コアをパーティションして複数の小さいコアレットにすることによって低い計算集約性のワークロードを処理し、複数のコアレットを結合して単一のマイクロプロセッサ・コアにすることによって高い計算集約性のワークロードを処理する構成可能なマイクロプロセッサに関するものである。
【背景技術】
【０００２】
マイクロプロセッサの設計では、パフォーマンスを高めるためにそのマイクロプロセッサの設計により多くの機能が加えられると、電力消費量につれてシリコンの効率的な利用が危うくなる。マイクロプロセッサの性能を高める１つの方法は、同じプロセッサ・チップ上に取り付けられるプロセッサ・コアの数を増加させることである。例えば、単一プロセッサ・チップは１つのプロセッサ・コアしか必要としない。対照的に、デュアル・プロセッサ・コア・チップは、チップ上に複数のプロセッサ・コアを必要とする。通常は、各プロセッサ・コアは、個々に高いパフォーマンスを提供できるようにを設計される。しかし、チップ上の各プロセッサ・コアが高いパフォーマンスのワークロードを処理することを可能にするためには、各プロセッサ・コアは多くのハードウェア資源を必要とする。言い換えれば、各プロセッサ・コアは大量のシリコンを必要とする。従って、パフォーマンスを高めるためにチップに加えられる多数のプロセッサ・コアは、チップ上の各プロセッサ・コアが個々に稼動しているワークロードのタイプ（例えば、高い計算集約性のワークロード、低い計算集約性のワークロード）に関係なく、電力消費量を著しく増大させ得る。チップ上の両方のプロセッサ・コアが低いパフォーマンスのワークロードを実行している場合、高いパフォーマンスで処理するために設けられた余分なシリコンが浪費され、電力を不必要に消費する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、高い計算集約性のワークロードを処理するために、複数のコアレットを結合して単一のマイクロプロセッサ・コアにする構成可能なマイクロプロセッサを提供することにある。
【課題を解決するための手段】
【０００４】
この手法では、先ず、複数のコアレットにおける２つまたはそれ以上のコアレットを選択し、２つまたはそれ以上のコアレットの資源を結合して結合された資源を形成する。各結合された資源は、個々の各コアレットが利用可能なものより多くの資源を構成する。次に、結合された資源を単一のマイクロプロセッサ・コアに割り当てることによって２つまたはそれ以上のコアレットから単一のマイクロプロセッサ・コアを形成する。なお、結合された資源は単一のマイクロプロセッサ・コアにその専用のものであり、単一のマイクロプロセッサ・コアは専用の結合された資源を用いて命令を処理する。
【発明を実施するための最良の形態】
【０００５】
次に、図面、特に、図１を参照すると、実施例を具現化し得るデータ処理システムの概略図が示される。コンピュータ１００は、システム・ユニット１０２、ビデオ・ディスプレイ端末１０４、キーボード１０６、記憶装置１０８（フロッピ・ドライブ、並びに、他のタイプの永続記憶媒体および取外し可能記憶媒体を含み得る）およびマウス１１０を含む。パーソナル・コンピュータでもよいコンピュータ１００は、更なる入力装置を含み得る。更なる入力装置の例は、ジョイスティック、タッチパッド、タッチ・スクリーン、トラックボール、マイクロホン等を含む。
【０００６】
コンピュータ１００は、米国ニューヨーク州アーモンクにあるインターナショナル・ビジネス・マシーンズ・コーポレーション（ＩＢＭ社）の製品である IBM eServer（商標）コンピュータまたは IntelliStation(商標)コンピュータのような任意の適切なコンピュータであってもよい。図示のものはパーソナル・コンピュータであるが、別の実施例は、他のタイプのデータ処理システムにおいて具現化されてもよい。例えば、別の実施例は、ネットワーク・コンピュータにおいて具現化されてもよい。望ましくは、コンピュータ１００は、そのコンピュータ１００におけるオペレーション時にコンピュータ可読媒体に常駐するシステム・ソフトウェアによって具現化され得るグラフィカル・ユーザ・インターフェース（ＧＵＩ）を含む。
【０００７】
次に、図２は、本実施例を具現化し得るデータ処理システムのブロック図を示す。データ処理システム２００は、図１におけるコンピュータ１００のようなコンピュータの一例であり、そこには実施例のプロセスを具現化するコードまたは命令を設けることが可能である。
【０００８】
図示の例では、データ処理システム２００は、ノース・ブリッジおよびメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）２０２と、サウス・ブリッジおよび入出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ）２０４とを含むハブ・アーキテクチャを使用する。処理ユニット２０６、メイン・メモリ２０８、およびグラフィックス・プロセッサ２１０は、ノース・ブリッジおよびメモリ・コントローラ・ハブ２０２に接続される。処理ユニット２０６は１つまたは複数のプロセッサを含み得るし、１つまたは複数の異種のプロセッサ・システムを使用して具現化されてもよい。グラフィックス・プロセッサ２１０は、例えば、アクセラレイテッド・グラフィックス・ポート（ＡＧＰ）を介してＮＢ／ＭＣＨ２０２に接続されてもよい。
【０００９】
図示の例では、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタのようなネットワーク・アダプタ２１２が、サウス・ブリッジおよびＩ／Ｏコントローラ・ハブ（ＳＢ／ＩＣＨ）２０４に接続され、オーディオ・アダプタ２１６、キーボードおよびマウス・アダプタ２２０、モデム２２２、読取り専用メモリ（ＲＯＭ）２２４、ユニバーサル・シリアル・バス（ＵＳＢ）ポートおよび他の通信ポート２３２もＳＢ／ＩＣＨ２０４に接続される。ＰＣＩ／ＰＣＩｅ装置２３４がバス２３８を介してサウス・ブリッジおよびＩ／Ｏのコントローラ・ハブ２０４に接続される。ハードディスク・ドライブ（ＨＤＤ）２２６およびＣＤ−ＲＯＭドライブ２３０がバス２４０を介してサウス・ブリッジおよびＩ／Ｏコントローラ・ハブ２０４に接続される。
【００１０】
ＰＣＩ／ＰＣＩｅ装置２３４は、例えば、イーサネット（登録商標）（商標）・アダプタ、アドイン・カード、および、ノート型コンピュータ用のＰＣカードを含み得る。ＰＣＩはカード・バス・コントローラを使用するが、ＰＣＩｅはそれを使用しない。ＲＯＭ２２４は、例えば、フラッシュ・ベーシック入出力システム（ＢＩＯＳ）であってもよい。ハードディスク・ドライブ２２６およびＣＤ−ＲＯＭドライブ２３０は、例えば、統合ドライブ・エレクトロニクス（ＩＤＥ）またはシリアル・アドバンスト・テクノロジ・アタッチメント（ＳＡＴＡ）インターフェースを使用し得る。スーパーＩ／Ｏ（ＳＩＯ）装置２３６がサウス・ブリッジおよびＩ／Ｏのコントローラ・ハブ２０４に接続されてもよい。
【００１１】
オペレーティング・システムが処理ユニット２０６上で作動する。このオペレーティング・システムは、図２におけるデータ処理システム２００内の種々のコンポーネントを調整および制御する。オペレーティング・システムは、Microsoft Windows(登録商標） XPのような市販のオペレーティング・システムであってもよい(Microsoftおよび Windows(登録商標） XPは、米国のマイクロソフト社の商標である)。Ｊａｖａ（登録商標）（商標）プログラミング・システムのようなオブジェクト指向プログラミング・システムも、オペレーティング・システムと関連して作動し得るし、データ処理システム２００上で実行されるＪａｖａ（登録商標）プログラムまたはアプリケーションからオペレーティング・システムへの呼び出しを行ない得る（Ｊａｖａ（登録商標） およびすべてのＪａｖａ（登録商標） ベースの商標は、米国の Sun Microsystems 社の商標である）。
【００１２】
オペレーティング・システム、オブジェクト指向プログラミング・システム、および、アプリケーションまたはプログラムのための命令は、ハードディスク・ドライブ２２６のような記憶装置に置かれる。これらの命令は、処理ユニット２０６による実行のためにメイン・メモリ２０８にロードされ得る。本実施例のプロセスは、メモリに入れられるコンピュータ用の命令を使用して、処理ユニット２０６によって遂行され得る。メモリの例は、メイン・メモリ２０８、読取り専用メモリ２２４、或いは、１つまたは複数の周辺装置における記憶装置である。
【００１３】
図１および図２に示されたハードウェアは、図示の実施例の具現化方法次第で変わり得る。フラッシュ・メモリ、同等の不揮発性メモリ、または光ディスク・ドライブ等ような他の内部ハードウェアあるいは周辺装置が、図１および図２に示されたハードウェアに加えて或いはそのハードウェアの代わりに使用されてもよい。更に、本実施例のプロセスは、マルチプロセッサ・データ処理システムに適用されてもよい。
【００１４】
図２に示されたシステムおよびコンポーネントは、図示の例から変更されてもよい。或る実施例では、データ処理システム２００は、パーソナル・デジタル・アシスタント（ＰＤＡ）であってもよい。パーソナル・デジタル・アシスタントは、一般に、オペレーティング・システム・ファイルおよび／またはユーザ作成のデータを格納するための不揮発性メモリを提供するフラッシュ・メモリでもって構成される。更に、データ処理システム２００は、タブレット・コンピュータ、ラップトップ・コンピュータ、または電話装置であってもよい。
【００１５】
図２に示される他のコンポーネントが図示の例から変更されてもよい。例えば、バス・システムは、システム・バス、Ｉ／Ｏバス、およびＰＣＩバスのような１つまたは複数のバスから構成されてもよい。もちろん、任意の適切なタイプの通信ファブリックまたはアーキテクチャを使って、その通信ファブリックまたはアーキテクチャに接続された種々のコンポーネントまたは装置の間のデータ転送を行う、バス・システムが具現化されてもよい。更に、通信ユニットは、モデムまたはネットワーク・アダプタのような、データを送信および受信するために使用される１つまたは複数の装置を含み得る。更に、メモリは、例えば、メインメモリ２０８、または、ノース・ブリッジおよびメモリ・コントローラ・ハブ２０２において見られるようなキャッシュであってもよい。更に、処理ユニット２０６は１つまたは複数のプロセッサあるいはＣＰＵを含み得る。
【００１６】
図１および図２における図示の例は、アーキテクチャ上の限定を示唆することを意味するものではない。更に、実施例は、コンピュータを利用した方法、装置、並びに、ソース・コードをコンパイルするためのおよびコードを実行するためのコンピュータ使用可能なプログラム・コードを提供する。本実施例に関して開示される方法は、図１に示されたデータ処理システム１００または図２に示されたデータ処理システム２００のようなデータ処理システムにおいて遂行することが可能である。
【００１７】
本実施例は、単一のプロセッサ・コアをパーティションすることによって低い計算集約性のワークロードを処理する構成可能な単一プロセッサ・コアを提供する。詳しく云えば、本実施例は、構成可能なプロセッサ・コアを、コアレットと呼ばれる２つまたはそれ以上の小さいコアにパーティションし、低いパフォーマンスのワークロードを独立して処理するための２つの専用の小さなコアをプロセッサ・ソフトウェアに与える。マイクロプロセッサが高いパフォーマンスを必要とするとき、そのソフトウェアは個々のコアレットを結合してスーパーコアと呼ばれる単一のコアにすることで高い計算集約性のワークロードを処理することを可能にする。
【００１８】
本実施例における構成可能なマイクロプロセッサは、プロセッサ資源を制御する融通性のある手段を処理ソフトウェアに与える。更に、その構成可能なマイクロプロセッサは、処理ソフトウェアがワークロードをより効率的にスケジュールするのを支援する。例えば、処理ソフトウェアは、幾つもの低い計算集約性のワークロードをコアレット・モードでスケジュールし得る。これとは別の方法では、処理パフォーマンスを著しく高めるために、処理ソフトウェアは、マイクロプロセッサにおけるすべての資源が単一のワークロードにとって利用可能であるスーパーコア・モードで、高い計算集約性のワークロードをスケジュールし得る。
【００１９】
図３は、本実施例に従って、パーティションされたプロセッサ・コア、即ち、コアレットのブロック図である。コアレット３００は、これらの実例例では図２における処理ユニット２０２として具現化され得るし、縮小命令セット・コンピュータ（ＲＩＳＣ）技術に従って作動し得る。
【００２０】
コアレット３００は、種々のユニット、レジスタ、バッファ、メモリ、および他のセクションを含み、それらのすべては集積回路によって形成される。コアレット３００の作成は、そのコアレットが低いパフォーマンスのワークロードを処理することを可能にするために、プロセッサ・ソフトウェアが、単一のマイクロプロセッサ・コアをパーティションして２つまたはそれ以上のコアレットにするためのビットをセットするときに生じる。その２つまたはそれ以上のコアレットは相互に無関係に機能する。作成された各コアレットは、単一のマイクロプロセッサ・コア（例えば、データ・キャッシュ（ＤＣａｃｈｅ）、命令キャッシュ（ＩＣａｃｈｅ）、命令バッファ（ＩＢＵＦ）、リンク／カウント・スタック、完了テーブル等）にとって利用可能であった資源を含むであろうが、各コアレットにおける各資源のサイズは、単一のマイクロプロセッサ・コアにおける資源のサイズの一部分となるであろう。単一のマイクロプロセッサ・コアからコアレットを作成することは、リネーム、命令キュー、およびロード／ストア・キューのようなそのマイクロプロセッサの他のすべての体系化されてない資源をパーティションして少量のものにすることも含む。例えば、単一のマイクロプロセッサ・コアが２つのコアレットに分けられる場合、各資源の半分が一方のコアレットを支援し得るが、各資源の他の半分が他方のコアレットを支援し得る。本実施例は、高い処理パフォーマンスを要求するコアレットが同じマイクロプロセッサにおける他のコアレットよりも多くの資源を備え得るように、資源を不平等にパーティションし得るということに留意されたい。
【００２１】
コアレット３００は、単一のマイクロプロセッサ・コアから作成された複数のコアレットの１つに関する例である。この例では、コアレット３００は命令キャッシュ（ＩＣａｃｈｅ）３０２、命令バッファ（ＩＢＵＦ）３０４、およびデータ・キャッシュ（ＤＣａｃｈｅ）３０６を含む。コアレット３００は、更に、ブランチ・ユニット（ＢＲＵ０  Ｅｘｅｃ）３０８、固定小数点ユニット（ＦＸＵ０  Ｅｘｅｃ）３１０、浮動小数点ユニット（ＦＰＵ０  Ｅｘｅｃ）３１２、およびロード/ストア・ユニット（ＬＳＵ０  Ｅｘｅｃ）３１４を含む多数の実行ユニットを含む。コアレット３００は、更に、汎用レジスタ（ＧＰＲ）３１６および浮動小数点レジスタ（ＦＰＲ）３１８を含む。前述のように、同じマイクロプロセッサにおける各コアレットが相互に独立して機能し得るので、コアレット３００における資源３０２〜３１８はコアレット３００のみに専用のものである。
【００２２】
命令キャッシュ３０２は、実行のための多数のプログラム（スレッド）の命令を保持する。コアレット３００におけるこれらの命令は、同じマイクロプロセッサにおける他のコアレットと無関係に処理され、完了する。命令キャッシュ３０２は命令バッファ３０４に命令を出力する。命令バッファ３０４は、プロセッサが準備できると直ちに次の命令が利用可能になるように、命令を格納する。ディスパッチ・ユニット（図示されてない）はそれぞれの実行ユニットに命令をディスパッチし得る。例えば、コアレット３００は、ＢＲＵ０ラッチ３２０を介してブランチ・ユニット（ＢＲＵ０  Ｅｘｅｃ）３０８に、ＦＸＵ０ラッチ３２２を介して固定小数点ユニット（ＦＸＵ０  Ｅｘｅｃ）３１０に、ＦＰＵ０ラッチ３２４を介して浮動小数点ユニット（ＦＰＵ０  Ｅｘｅｃ）３１２に、およびＬＳＵ０ラッチ３２６を介してロード／ストア・ユニット（ＬＳＵ０  Ｅｘｅｃ）３１４に命令をディスパッチし得る。
【００２３】
実行ユニット３０８〜３１４は、特定クラスの命令のうちの１つまたは複数の命令を実行する。例えば、固定小数点ユニット３１０は、加算、減算、ＡＮＤ、ＯＲ、およびＸＯＲのようなレジスタ・ソース・オペランドに関する固定小数点の数理的演算を実行する。浮動小数点ユニット３１２は、浮動小数点の乗算および除算のようなレジスタ・ソース・オペランドに関する浮動小数点の数理的演算を実行する。ロード／ストア・ユニット３１４は、データを種々のメモリ・ロケーションに移動させるロード命令およびストア命令を実行する。ロード／ストア・ユニット３１４は、ロード／ストア・データを得るためにそれ自身のＤＣａｃｈｅ３０６のパーティションにアクセスし得る。ブランチ・ユニット３０８は、条件次第でプログラムを通した実効の流れを変更させるそれ自身のブランチ命令を実行し、命令バッファ３０４からそれ自身の命令のストリームをフェッチする。
【００２４】
ＧＰＲ３１６およびＦＰＲ３１８は、要求されたタスクを完了するために種々の実行ユニットによって使用されるデータのための記憶領域である。これらのレジスタに格納されたデータは、データ・キャッシュ、メモリ・ユニット、または、プロセッサ・コアにおける他のユニット、のような種々のソースから生じ得る。これらのレジスタは、コアレット３００における種々の実行ユニットのためのデータを迅速且つ効率的に検索する。
【００２５】
図４は、実施例に従ってスーパーコアを形成するために同じマイクロプロセッサにおける２つのコアレットの例示的な結合体のブロック図である。スーパーコア４００は、これらの実例例では図２における処理ユニット２０２として具現化され得るし、縮小命令セット・コンピュータ（ＲＩＳＣ）技術によって作動し得る。
【００２６】
スーパーコアの作成は、高い計算集約性のワークロードの処理を可能にするために、プロセッサ・ソフトウェアが２つまたはそれ以上のコアレットを結合して単一のコアにするためのビットをセットするときに生じ得る。そのプロセスは、マイクロプロセッサにおける利用可能なすべてのコアレットまたはその利用可能なコアレットの一部だけを結合することを含むことがある。コアレットの結合は、個々のコアレットからの命令キャッシュを結合して大きい結合された命令キャッシュを形成すること、個々のコアレットからのデータ・キャッシュを結合して大きい結合データ・キャッシュを形成すること、および、個々のコアレットからの命令バッファを結合して大きい結合された命令バッファを形成することを含む。命令キュー、リネーム資源、ロード／ストア・キュー、リンク／カウント・スタック、および完了テーブルのような他のすべての体系化されてないハードウェア資源も結合して大きい資源になり、スーパーコアを大きなものにする。この実施例は、大量の資源に対するスーパーコアのアクセスを可能にするために、コアレットの命令キャッシュ、命令バッファ、およびデータ・キャッシュを再結合するが、結合された命令キャッシュ、結合された命令バッファ、および結合データ・キャッシュは、依然として、パーティションを含み、命令がスーパーコアにおける他の命令とは無関係に流れることを可能にする。
【００２７】
図４に示された例におけるように２つのコアレットを結合する場合、スーパーコア４００は、２つのコアレットの命令キャッシュ、命令バッファ、およびデータ・キャッシュから形成される結合された命令キャッシュ４０２、結合された命令バッファ４０４、および結合データ・キャッシュ４０６を含む。図３に示されたように、マイクロプロセッサにおけるコアレットは、１つのロード／ストア・ユニット、１つの固定小数点ユニット、１つの浮動小数点ユニット、および１つのブランチ・ユニットを含み得る。この例ではマイクロプロセッサにおける２つのコアレットを結合することにより、その結果生じたスーパーコア４００は、２つのロード／ストア・ユニット０（４０８）およびユニット１（４１０）と、２つの固定小数点ユニット０（４１２）およびユニット１（４１４）と、２つの浮動小数点ユニット０（４１６）およびユニット１（４１８）と、２つのブランチ・ユニット０（４２０）およびユニット１（４２２）とを含み得る。同様の方法で、３つのコアレットを結合して１つのスーパーコアにすることは、このスーパーコアが３つのロード／ストア・ユニット、３つの固定小数点ユニット等を含むことを可能にするであろう。
【００２８】
スーパーコア４００は、２つのロード／ストア・ユニット０（４０８）およびユニット１（４１０）、２つの固定小数点ユニット０（４１２）およびユニット１（４１４）、２つの浮動小数点ユニット０（４１６）およびユニット１（４１８）と、１つのブランチ・ユニット０（４２０）に命令をディスパッチする。ブランチ・ユニット０（４２０）は１つのブランチ命令を実行し得るが、もう１つのブランチ・ユニット１（４２２）は、ペナルティを減らすためにブランチの代替ブランチ・パスを処理していてもよい。例えば、そのもう１つのブランチ・ユニット１（４２２）は、代替ブランチ・パスを計算およびフェッチして命令を準備完了状態に保つことを可能にする。ブランチ予測誤りが生じるとき、フェッチされた命令は、ディスパッチの再開のために結合された命令バッファ４０４に送る準備ができている。
【００２９】
スーパーコア４００における結合された２つのコアレットは、それらの個々のデータフロー特性のほとんどを保持する。本実施例では、スーパーコア４００は、偶数の命令を結合された命令バッファ４０４の「コアレット０」セクションにディスパッチし、奇数の命令を結合された命令バッファ４０４の「コアレット１」セクションにディスパッチする。偶数の命令は、結合された命令キャッシュ４０２からフェッチされる命令０、２、４、８等である。奇数の命令は、結合された命令キャッシュ４０２からフェッチされる命令１、３、５、７等である。スーパーコア４００は、ロード／ストア・ユニット０（ＬＳＵ０  Ｅｘｅｃ）４０８、固定小数点ユニット０（ＦＰＵ０  Ｅｘｅｃ）４１２、浮動小数点ユニット０（ＦＸＵ０  Ｅｘｅｃ）４１６、およびブランチ・ユニット０（ＢＲＵ０  Ｅｘｅｃ）４２０を含む「コアレット０」の実行ユニットに偶数の命令をディスパッチする。スーパーコア４００は、ロード／ストア・ユニット１（ＬＳＵ１  Ｅｘｅｃ）４１０、固定小数点ユニット１（ＦＸＵ１  Ｅｘｅｃ）４１４、浮動小数点ユニット１（ＦＰＵ１  Ｅｘｅｃ）４１８、およびブランチ・ユニット１（ＢＲＵ１  Ｅｘｅｃ）４２２を含む「コアレット１」の実行ユニットに奇数の命令をディスパッチする。
【００３０】
ロード／ストア・ユニット０（４０８）およびユニット１（４１０）は、ロード／ストア・データを得るために結合データ・キャッシュ４０６にアクセスし得る。各固定小数点ユニット０（４１２）およびユニット１（４１４）、並びに各ロード／ストア・ユニット０（４０８）およびユニット１（４１０）からの結果は両方のＧＰＲ４２４および４２６に書き込まれる。各浮動小数点ユニット０（４１６）およびユニット１（４１８）からの結果は両方のＦＰＲ ４２８および４３０に書き込まれる。実行ユニット４０８〜４２２は、スーパーコアの結合完了機構を使用して命令を完了させ得る。
【００３１】
図５は、実施例に従ってスーパーコアを形成する同じマイクロプロセッサ上の２つのコアレットの代替結合を示すブロック図である。スーパーコア５００は、これらの実施例では図２における処理ユニット２０２として具現化され、縮小命令セット・コンピュータ（ＲＩＳＣ）技術に従って作動し得る。
【００３２】
スーパーコア５００の作成は、図４におけるスーパーコア４００と同様に生じ得る。プロセッサ・ソフトウェアは、２つまたはそれ以上のコアレットを結合して１つの単一コアにするためのビットをセットし、個々のコアレットからの命令キャッシュ、データ・キャッシュ、および命令バッファが結合して大きい結合された命令キャッシュ５０２、結合された命令バッファ５０４、および結合データ・キャッシュ５０６をスーパーコア５００に形成する。他の体系化されてないハードウェア資源も、結合して大きい資源となってスーパーコアを大きなものにし得る。しかし、この実施例では、結合された命令キャッシュ、結合された命令バッファ、および結合データ・キャッシュは真に結合され（即ち、命令キャッシュ、命令バッファ、およびデータ・キャッシュは図４におけるようにパーティションを含んでなく）、それは、命令がスーパーコアにおけるすべての実行ユニットに逐次に送られることを可能にする。
【００３３】
本実施例では、プロセッサ・ソフトウェアは、スーパーコア５００を形成するように２つのコアレットを結合する。図４におけるスーパーコア４００のように、スーパーコア５００は、２つのロード／ストア・ユニット０（ＬＳＵ０  Ｅｘｅｃ）５０８およびユニット１（ＬＳＵ１  Ｅｘｅｃ）５１０、２つの固定小数点ユニット０（ＦＸＵ０  Ｅｘｅｃ）５１２およびユニット１（ＦＸＵ１  Ｅｘｅｃ）５１４、２つの浮動小数点ユニット０（ＦＰＵ０  Ｅｘｅｃ）５１６およびユニット１（ＦＰＵ１  Ｅｘｅｃ）５１８、並びに１つのブランチ・ユニット０（ＢＲＵ０  Ｅｘｅｃ）５２０に命令をディスパッチし得る。ブランチ・ユニット０ ５２０は１つのブランチ命令を実行し得るが、更なるブランチ・ユニット１（ＢＲＵ１  Ｅｘｅｃ）５２２は、ブランチ予測誤りのペナルティを減らすためにブランチの予測により得たパスを処理し得る。
【００３４】
このスーパーコアの実施例では、命令は、結合された命令キャッシュ５０２からすべて結合された命令バッファ５０４を通って流れる。結合された命令バッファ５０４は、逐次態様で命令を格納する。命令は、結合された命令バッファ５０４から逐次に読取られ、すべての実行ユニットにディスパッチされる。例えば、スーパーコア５００は、１つのコアレットから実行ユニット５０８、５１２、５１６、および５２０に逐次に命令をディスパッチし、また、ディスパッチ・マクスのセット、即ち、ディスパッチ・マクス（mux）５３２、ＬＳＵ１ディスパッチ・マクス５３４、ＦＰＵ１ディスパッチ・マクス５３６、およびＢＲＵ１ディスパッチ・マクス５３８を介して実行ユニット５１０、５１４、５１８、および５２２に逐次に命令をディスパッチする。ロード／ストア・ユニット０（５０８）およびユニット１（５１０）は、ロード／ストア・データを得るために結合データ・キャッシュ５０６をアクセスし得る。各固定小数点ユニット０（５１２）およびユニット１（５１４）、並びに各ロード／ストア・ユニット０（５０８）およびユニット１（５１０）からの結果は、両方のＧＰＲ５２４および５２６に書き込まれ得る。各浮動小数点ユニット０（５１６）およびユニット１（５１８）からの結果は、両方のＦＰＲ ５２８および５３０に書き込まれ得る。実行ユニット５０８〜５２２はすべてスーパーコアの結合完了機構を使用して命令を完了させ得る。
【００３５】
図６は、実施例に従って、構成可能なマイクロプロセッサをパーティションしてコアレットにするための例示的なプロセスのフローチャートである。そのプロセスが開始すると、先ずプロセッサ・ソフトウェアが、単一のマイクロプロセッサ・コアをパーティションして２つまたはそれ以上のコアレットにするためのビットをセットする（ステップ６０２）。コアレットを形成するために、プロセスは、マイクロプロセッサ・コアの資源（体系化されたものおよび体系化されてないもの）をパーティションして、個々のコアレットにとって有用であるパーティションされた資源を形成する（ステップ６０４）。従って、各コアレットは他のコアレットと無関係に機能し、各コアレットに割り当てられた各パーティションされた資源は単一のマイクロプロセッサ・コアの資源の一部分である。例えば、各コアレットは、単一のマイクロプロセッサのものよりも小さいデータ・キャッシュ、命令キャッシュ、および命令バッファを有する。このパーティションするプロセスは、更に、リネーム資源、命令キュー、ロード／ストア・キュー、リンク／カウント・スタック、および完了テーブルのような体系化されてない資源をパーティションして各コアレットのための小さな資源にする。パーティションされた資源を１つのコアレットに割り当てるプロセスは、それらの資源をその特定のコアレットに専用のものにする。
【００３６】
一旦コアレットが形成されると、各コアレットは、そのコアレットに専用の命令キャッシュ・パーティションにおいて命令を受け取ることによって作動する（ステップ６０６）。命令キャッシュは、そのコアレットに専用の命令バッファ・パーティションにその命令を供給する（ステップ６０８）。そのコアレットに専用の実行ユニットが、その命令を命令バッファに読み込み、その命令を実行する（ステップ６１０）。例えば、各コアレットは、ロード／ストア・ユニット・パーティション、固定小数点ユニット・パーティション、浮動小数点ユニット・パーティション、またはそのコアレットに専用のブランチ・ユニット・パーティションに命令をディスパッチし得る。更に、ブランチ・ユニット・パーティションは、それ自身のブランチ命令を実行し、それ自身の命令ストリームをフェッチし得る。ロード／ストア・ユニット・パーティションは、それのロード／ストア・データのためにそれ自身のデータ・キャッシュ・パーティションにアクセスし得る。命令を実行した後に、コアレットはその命令を完了させ（ステップ６１２）、しかる後、プロセスは終了する。
【００３７】
図７は、実施例に従って、構成可能なマイクロプロセッサにおいてコアレットを結合して１つのスーパーコアにする例示的なプロセスのフローチャートである。そのプロセスが開始すると、先ずプロセッサ・ソフトウェアが２つまたはそれ以上のコアレットを結合して１つのスーパーコアにするためのビットをセットする（ステップ７０２）。スーパーコアを形成するために、そのプロセスは、資源を形成するために選択されたコアレットのパーティションされた資源を結合し、そのスーパーコアにとって有用である結合された（且つ大きい）資源を形成する（ステップ７０４）。例えば、そのプロセスは、各コアレットの命令キャッシュ・パーティションを結合して１つの結合された命令キャッシュを形成し、各コアレットのデータ・キャッシュ・パーティション結合して１つの結合データ・キャッシュを形成し、各コアレットの命令バッファ・パーティションを結合して１つの結合された命令バッファ形成する。その結合プロセスは、更に、そのスーパーコアにとって有用になるように、命令キュー、リネーム資源、ロード／ストア・キュー、およびリンク／カウント・キューのような他のすべての体系化されてないハードウェア資源を結合する。
【００３８】
一旦スーパーコアが形成されると、そのスーパーコアは、結合された命令キャッシュ・パーティションにおいて命令を受け取ることにより作動する（ステップ７０６）。命令キャッシュは、偶数の命令（例えば、０、２、４、６等）を 結合された命令バッファにおける１つのコアレット・パーティション（例えば、「コアレット０」）に供給し、奇数の命令（例えば、１、３、５、８等）を結合された命令バッファにおける１つのコアレット・パーティション（「コアレット１」）に供給する（ステップ７０８）。前以ってコアレット０に割り当てられた実行ユニット（例えば、ＬＳＵ０、ＦＸＵ０、ＦＰＵ０、またはＢＲＵ０）が結合された命令バッファから偶数の命令を読取ってその命令を実行し、前以ってコアレット１に割り当てられた実行ユニット（例えば、ＬＳＵ１、ＦＸＵ１、ＦＰＵ１、またはＢＲＵ１）が結合された命令バッファから奇数の命令を読取る（ステップ７１０）。１つのブランチ・ユニット（例えば、ＢＲＵ０）は１つのブランチ命令を実行し得るが、別のブランチ・ユニット（ＢＲＵ１）は、ブランチ予測誤りのペナルティを減らすようにそのブランチの代替ブランチ・パスを処理するために使用され得る。スーパーコア内では、各ロード／ストア・ユニットは、ロード／ストア・データを得るために結合データ・キャッシュをアクセスし得るし、ロード／ストア・ユニットおよび固定小数点ユニットがそれらの結果を両方のＧＰＲに書き込み得る。各浮動小数点ユニットは両方のＦＰＲに書き込み得る。命令を実行した後、スーパーコアは、結合完了機構を使用してその命令を完了させ（ステップ７１２）、しかる後、プロセスは終了する。
【００３９】
図８は、実施例に従って、構成可能なマイクロプロセッサにおけるコアレットを結合して１つのスーパーコアにするための例示的な代替プロセスのフローチャートである。
【００４０】
プロセスが開始すると、プロセッサ・ソフトウェアが２つまたはそれ以上のコアレットを結合して１つのスーパーコアにするためのビットをセットする（ステップ８０２）。そのスーパーコアを形成するために、プロセスは、選択されたコアレットのパーティションされた資源を結合して、そのスーパーコアにとって有用である結合された資源を形成する（ステップ８０４）。例えば、プロセスは、そのコアレットの各々の命令キャッシュ・パーティションを結合して結合された命令キャッシュを形成し、するそのコアレットの各々のデータ・キャッシュ・パーティションを結合して結合データ・キャッシュを形成し、そのコアレットの各々の命令バッファ・パーティションを結合して結合された命令バッファを形成する。その結合プロセスは、更に、命令キュー、リネーム資源、ロード／ストア・キュー、およびリンク／カウント・スタックのような他のすべての体系化されてないハードウェア資源を結合してそのスーパーコアにとって有用である大きい資源にする。
【００４１】
一旦スーパーコアが形成されると、スーパーコアは、結合された命令キャッシュにおいて命令を受け取ることよって作動する（ステップ８０６）。結合された命令キャッシュは、結合された命令バッファに命令を逐次に供給する（ステップ８０８）。すべての実行ユニット（例えば、ＬＳＵ０、ＬＳＵ１、ＦＸＵ０、ＦＸＵ１、ＦＰＵ０、ＦＰＵ１、ＢＲＵ０、ＢＲＵ１）が結合された命令バッファから命令を逐次に読み出し、その命令を実行する（ステップ８１０）。１つのブランチ・ユニット（例えば、ＢＲＵ０）は１つのブランチ命令を実行し得るが、別のブランチ・ユニット（例えば、ＢＲＵ１）は、ブランチ予測誤りのペナルティを減らすようにブランチの代替ブランチ・パスを処理するために使用され得る。スーパーコア内では、各ロード／ストア・ユニットが、ロード／ストア・データを得るために結合データ・キャッシュをアクセスし得るし、ロード／ストア・ユニットおよび固定小数点ユニットがそれらの結果を両方のＧＰＲに書込み得る。各浮動小数点ユニットも両方のＦＰＲに書込み得る。命令を実行した後、スーパーコアは、結合完了機構を使って命令を完了させ（ステップ８１２）、しかる後プロセスは終了する。
【００４２】
実施例は、全体的にハードウェアの実施例、全体的にソフトウェアの実施例、あるいはハードウェア要素およびソフトウェア要素の両方を含む実施例形式をとることができる。本実施例は、ファームウェア、常駐ソフトウェア、マイクロコード等を含むが、それらに限定されないソフトウェアにおいて具現化される。
【００４３】
更に、実施例は、コンピュータまたは任意の命令実行システムによる使用、またはそれに関する使用のためのプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセスし得るコンピュータ・プログラム製品の形式をとることも可能である。説明の便宜上、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによる使用、あるいはそれらに関する使用のために、プログラムを含むこと、格納すること、通信すること、伝播すること、または搬送することができる任意の現実的な装置であってもよい。
【００４４】
その媒体は、電子的システム、磁気的システム、光学的システム、電磁気的システム、赤外線システム、または半導体システム（または装置、またはデバイス）あるいは伝播媒体であってもよい。コンピュータ可読媒体の例は、半導体メモリまたはソリッド・ステート・メモリ、磁気テープ、取外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、固定磁気ディスク、および光ディスクを含む。光ディスクの現在の例は、コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク・リード／ライト（ＣＤ−Ｒ／Ｗ）、およびＤＶＤを含む。
【００４５】
プログラム・コードを格納および／または実行するに適したデータ処理システムは、システム・バスを介してメモリ素子に直接的あるいは間接的に接続された少なくとも１つのプロセッサを含むであろう。メモリ素子は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量記憶装置、および、プログラム・コードが実行中に大容量記憶装置から検索されるべき回数を減らすために少なくとも幾つかのプログラム・コードの一時的記憶装置を提供するキャッシュ・メモリを含み得る。
【００４６】
入出力装置、即ち、Ｉ／Ｏ装置（キーボード、ディスプレイ、ポインティング装置等を含むが、それに限定されない）は、システムに直接にあるいは介在するＩ／Ｏコントローラに直接にまたはそれを介して、接続することが可能である。
【００４７】
ネットワーク・アダプタは、データ処理システムが介在の専用ネットワークまたは公衆ネットワークを介して他のデータ処理システムあるいは遠隔のプリンターに接続されることを可能にするようにそのシステムに接続されてもよい。モデム、ケーブル・モデム、およびイーサネット（登録商標）（商標）・カードは、わずかな現在利用可能のタイプのネットワーク・アダプタである。
【００４８】
本実施例に関する記述は、図解および説明を目的として示されたものであり、網羅的であること或いは開示された形式における実施例に限定されることを意図するものではない。多くの修正および変更が当業者には明らかであろう。実施例は、本発明の原理および応用例を最もよく説明するために、および、特定の意図した用途に適する種々の修正を伴う種々の具体化に備えて当業者が本実施例を理解することを可能にするために、選択且つ記述された。
【図面の簡単な説明】
【００４９】
【図１】実施例を具現化し得るコンピューティング・システムの概略図である。
【図２】実施例を具現化し得るデータ処理システムのブロック図である。
【図３】実施例に従ってパーティションされたプロセッサ・コアまたはコアレットのブロック図である。
【図４】実施例に従って１つのスーパーコアを形成するように同じマイクロプロセッサ上の２つのコアレットを結合した例を示すブロック図である。
【図５】実施例に従って１つのスーパーコアを形成するように同じマイクロプロセッサ上の２つのコアレットを結合した代替例を示すブロック図である。
【図６】実施例に従って構成可能なマイクロプロセッサをパーティションしてコアレットにするする例示的なプロセスのフローチャートである。
【図７】実施例に従って構成可能なマイクロプロセッサにおけるコアレットを結合してスーパーコアにするための例示的なプロセスのフローチャートである。
【図８】実施例に従って構成可能なマイクロプロセッサにおけるコアレットを結合してスーパーコアにするための例示的な代替プロセスのフローチャートである。
【図１】
2008226236.tif 000003
【図２】
2008226236.tif 000004
【図３】
2008226236.tif 000005
【図４】
2008226236.tif 000006
【図５】
2008226236.tif 000007
【図６】
2008226236.tif 000008
【図７】
2008226236.tif 000009
【図８】
2008226236.tif 000010