(57)【要約】【解決手段】一実施形態では、プロセッサが提供される。そのプロセッサは、少なくとも２つのコアを備えており、各コアは、第１レベルキャッシュメモリを備えている。コアの各々は、マルチスレッド化されている。別の実施形態では、各コアは、４つのスレッドを備える。別の実施形態では、クロスバーが備えられている。クロスバーを介してコアと通信する複数のキャッシュバンクメモリが提供されている。複数のキャッシュバンクメモリの各々は、メインメモリインターフェースと通信する。別の実施形態では、さらに、複数のキャッシュバンクメモリの各々と通信するバッファスイッチコアが備えられている。また、マルチスレッド化プロセッサコアの利用を最適化するためのサーバおよび方法も提供されている。【選択図】図５
2005507115.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサであって、
それぞれ第１レベルキャッシュメモリを有すると共に、それぞれマルチスレッド化された少なくとも２つのコアと、
相互接続構造と、
前記相互接続構造を介して前記少なくとも２つのコアと通信すると共に、それぞれメインメモリインターフェースと通信する複数のキャッシュバンクメモリと、
を備える、プロセッサ。
【請求項２】
請求項１に記載のプロセッサであって、前記相互接続構造は、前記複数のキャッシュバンクメモリおよび前記少なくとも２つのコアの各々と通信するクロスバーと、前記複数のキャッシュバンクメモリの各々と通信するバッファスイッチコアと、を含む、プロセッサ。
【請求項３】
請求項２に記載のプロセッサであって、さらに、
前記クロスバーおよび入出力装置と通信する入出力ブリッジを含み、
前記入出力ブリッジは、前記入出力装置との制御レジスタ転送を可能にする、プロセッサ。
【請求項４】
請求項２に記載のプロセッサであって、前記バッファスイッチコアは、直接メモリアクセスを可能にする、プロセッサ。
【請求項５】
請求項１に記載のプロセッサであって、前記第１レベルキャッシュメモリは、命令キャッシュ部とデータキャッシュ部とを含む、プロセッサ。
【請求項６】
請求項１に記載のプロセッサであって、前記少なくとも２つのコアに関連付けられた各スレッドは、パイプライン上で実行されるよう構成されている、プロセッサ。
【請求項７】
請求項５に記載のプロセッサであって、前記パイプラインは、単一発行パイプラインである、プロセッサ。
【請求項８】
請求項１に記載のプロセッサであって、前記キャッシュバンクメモリは、単一ポート静的ランダムアクセスメモリである、プロセッサ。
【請求項９】
サーバであって、
アプリケーションプロセッサチップを備え、
前記アプリケーションプロセッサチップは、
それぞれ第１レベルキャッシュメモリを有する複数のマルチスレッド化中央処理装置コアと、
相互接続構造と、
前記相互接続構造を介して前記少なくとも２つのコアと通信すると共に、それぞれメインメモリインターフェースと通信する複数のキャッシュバンクメモリと、
を含む、サーバ。
【請求項１０】
請求項９に記載のサーバであって、前記相互接続構造は、前記複数のキャッシュバンクメモリおよび前記複数のマルチスレッド化中央処理装置コアの各々と通信するクロスバーと、前記複数のキャッシュバンクメモリの各々と通信するバッファスイッチコアと、を含む、サーバ。
【請求項１１】
請求項９に記載のサーバであって、前記サーバは、ウェブサーバ、アプリケーションサーバ、およびデータベースサーバの中から選択される、サーバ。
【請求項１２】
請求項１０のサーバであって、
前記アプリケーションプロセッサチップは、前記クロスバーおよび入出力装置と通信する入出力ブリッジを含み、
前記入出力ブリッジは、前記入出力装置との制御レジスタ転送を可能にする、サーバ。
【請求項１３】
請求項９に記載のサーバであって、前記第１レベルキャッシュメモリは、命令キャッシュ部とデータキャッシュ部とを含む、サーバ。
【請求項１４】
請求項９に記載のサーバであって、前記中央処理装置コアの各スレッドは、単一発行パイプライン上で実行されるよう構成されている、サーバ。
【請求項１５】
マルチスレッド化プロセッサコアの利用を最適化するための方法であって、
第１のスレッドの動作によりプロセッサコアにアクセスする工程と、
前記第１のスレッドにより待ち時間の長い動作を発行する工程と、
前記第１のスレッドを中断する工程と、
前記プロセッサコアへのアクセスの準備ができた第２のスレッドの動作を特定する工程と、
第１のスレッドが前記待ち時間の長い動作をバックグラウンドで実行する間に、前記プロセッサコアにより前記第２のスレッドの動作を処理する工程と、を備える、方法。
【請求項１６】
請求項１５に記載の方法であって、
前記プロセッサコアへのアクセスの準備ができた第２のスレッドの動作を特定する工程は、スケジューリングアルゴリズムに従って前記第２のスレッドの動作を選択する工程を含む、方法。
【請求項１７】
請求項１５に記載の方法であって、前記プロセッサコアは４つのスレッドを含む、方法。
【請求項１８】
請求項１５に記載の方法であって、さらに、
８つのプロセッサコアを有する集積回路チップを準備する工程を含み、前記プロセッサコアの各々は４つのスレッドを含む、方法
【請求項１９】
請求項１５に記載の方法であって、前記第１のスレッドを中断する工程は、
前記待ち時間の長い動作から結果を取得する工程と、
前記待ち時間の長い動作から前記結果を取得した後に、前記第１のスレッドが前記プロセッサコア上で実行される準備のできていることを示す工程と、を含む、方法。
【請求項２０】
請求項１５に記載の方法であって、前記マルチスレッド化プロセッサコアの各スレッドは、インオーダー実行を用いる単一発行パイプラインとして構成される、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、サーバに関し、特に、ネットワークを介してデータをクライアントコンピュータに供給するためのプロセッサアーキテクチャおよび方法に関する。
【背景技術】
【０００２】
インターネットの導入によってもたらされた爆発的なネットワーク化の普及に伴い、複数のクライアントにサービスするための複数のスレッドを有するサーバアプリケーションが増えている。電子商取引では、大企業ともなると、潜在的に数百万人の顧客にサービスを提供する必要がある。この多大な要求に対応するため、サービスアプリケーションは、デスクトップアプリケーション用のメモリ特性と異なるメモリ特性を有する。特に、サービスアプリケーションは、多数のクライアントに応じるために、大きなメインメモリ帯域幅を必要とし、比較的貧弱なキャッシュ動作を有する。
【０００３】
さらに、従来のプロセッサは、性能を向上させるために、命令レベルの並列処理に重点を置いている。したがって、それらのプロセッサは、非常に大型になる傾向があり、パイプラインが非常に複雑になる。そのため、インテルプロセッサなどのプロセッサについては、パイプラインが複雑であるために、ダイ上に設けられるコアは１つだけである。それ故、メインメモリへのキャッシュミス、または、ブランチ予測ミスなど、待ち時間の長い他のイベントが生じた場合には、通常、パイプラインをアイドル状態にする停止が生じる。その結果、メモリフットプリントが大きく、キャッシュの局所性とブランチの予測性能が貧弱なサービスアプリケーションは、スレッド当たりの命令レベル並列処理が非常に少なくなる傾向がある。そのため、サーバの作業負荷のアプリケーションを備えた従来のプロセッサの実装の特性から、従来のプロセッサは、命令レベル並列処理に重点を置くため、ハードウェア稼働率が悪くなり、不必要に電力を浪費することになる。
【０００４】
さらに、命令レベル並列処理に基づいたプロセッサの性能は、ダイのサイズ、電力、および複雑さの関数で表され、飽和点に達しつつある。図１は、命令レベル並列処理に基づく従来のプロセッサの性能と電力／サイズとの間の関係を示すグラフである。図１の曲線１００で示すように、従来のプロセッサの電力およびサイズが増大しても、命令レベル並列処理（ＩＬＰ）アーキテクチャの制約のために、性能が線形的に増大することはない。従来のＩＬＰプロセッサとしては、ＰＥＮＴＩＵＭ（登録商標）、ＩＴＡＮＩＵＭ（登録商標）、ＰＯＷＥＲ（登録商標）、ＵＬＴＲＡＳＰＡＲＣ（登録商標）など、よく知られたプロセッサが挙げられる。
【０００５】
以上の点から、サービスアプリケーションにより適したアーキテクチャであって、サービスアプリケーションのマルチスレッドの特性を活用するよう構成されたアーキテクチャを有するプロセッサが求められている。
【発明の開示】
【課題を解決するための手段】
【０００６】
概して、本発明は、これらの要求を満たすために、サーバアプリケーションを効率的に処理するよう構成されたアーキテクチャを有するプロセッサを提供する。本発明は、装置、システム、デバイス、方法を含む数多くの態様で実施可能であることを理解されたい。以下では、本発明のいくつかの実施形態について説明する。
【０００７】
一実施形態では、プロセッサが提供される。そのプロセッサは、少なくとも２つのコアを備えており、各コアは、第１レベルキャッシュメモリを備えている。コアの各々は、マルチスレッド化されている。別の実施形態では、各コアは、４つのスレッドを備える。クロスバーが備えられている。クロスバーを介してコアと通信する複数の第２レベルキャッシュバンクメモリが提供されている。複数のレベル２キャッシュバンクメモリの各々は、メインメモリインターフェースと通信する。さらに、複数のキャッシュバンクメモリの各々と通信するバッファスイッチコアが備えられている。
【０００８】
別の実施形態では、サーバが提供される。そのサーバは、アプリケーションプロセッサチップを備える。アプリケーションプロセッサチップは、複数のマルチスレッド化中央処理装置コアを備える。複数のマルチスレッド化中央処理装置コアの各々は、第１レベルキャッシュメモリを備える。アプリケーションプロセッサチップは、クロスバーと、クロスバーを介してコアと通信する複数のキャッシュバンクメモリとを備える。複数の第２レベルキャッシュバンクメモリの各々は、メインメモリインターフェースと通信する。アプリケーションプロセッサチップは、複数のキャッシュバンクメモリの各々と通信するバッファスイッチコアを備える。
【０００９】
さらに別の実施形態では、マルチスレッド化プロセッサコアの利用を最適化するための方法が提供されている。この方法は、第１のスレッドの動作によってプロセッサコアにアクセスする動作から始まる。次に、プロセッサコアにアクセスする第１のスレッドの動作が完了した後に、待ち時間の長い動作が第１のスレッドによって実行される。次に、第１のスレッドは中断される。次に、プロセッサコアへのアクセスの準備ができた第２のスレッドの動作が、特定および選択される。第１のスレッドが、待ち時間の長い動作をバックグラウンドで実行する間に、第２のスレッドの動作が、プロセッサコアによって処理される。
【００１０】
本発明のその他の態様および利点は、例を用いて本発明の原理を示すために添付の図面に沿って行われる以下の詳細な説明から明らかになる。
【発明を実施するための最良の形態】
【００１１】
商業利用での作業負荷を実行するプロセッサのスループットおよび効率を改善するための装置および方法について説明する。しかしながら、これらの具体的な詳細の一部またはすべてがなくとも、本発明を実現できることは、当業者にとって明らかである。また、本発明を不必要にわかりにくくすることがないよう、周知のプロセス動作の説明は省略してある。本明細書で用いた用語「約」は、対応する値の±１０％の範囲を表す。
【００１２】
ここで説明されている実施形態は、チップ上に複数の簡単なコアを有しており、各コアは、専用の第１レベルキャッシュを有し、それらのコアは、クロスバーを通して第２レベルキャッシュを共有している。さらに、各コアは、２以上のスレッドを有している。メモリロード、キャッシュミス、およびその他の待ち時間の長いイベントによる待ち時間が、マルチスレッド化により隠される。一実施形態では、待ち時間の長い命令が出されると、その命令の結果が準備されるまでスレッドが中断される。次に、コア上の残りの実行可能なスレッドの１つが選択され、（コンテキストスイッチのオーバーヘッドを起こすことなく）次のクロックでの実行のためにパイプラインに送られる。一実施形態では、スケジューリングアルゴリズムが、各コアにおいて実行可能スレッドからの選択を行う。このように、待ち時間の長いイベントは、バックグラウンドで実行され、中央処理装置の利用は、複数のスレッドによって最適化されるため、高スループットのアーキテクチャが実現される。
【００１３】
図２は、本発明の一実施形態に従って、スレッドレベル並列処理（ＴＬＰ）に基づいたアーキテクチャを有するプロセッサを備えたサーバを示す簡単な説明図である。サーバ１１０は、プロセッサ１１２、例えば、中央処理装置（ＣＰＵ）を備える。プロセッサ１１２は、後に詳しく説明するように、チップ上に複数のコアを備え、複数のコアの各々は、２以上のスレッドを有している。サーバ１１０は、インターネット１１４などの分散型ネットワークと通信しており、それにより、サーバ１１０とクライアント１〜ｎ  １１６ａ〜１１６ｎとの通信が可能となる。一実施形態では、サーバ１１０は、アプリケーションサーバでの利用やデータベースでの利用など、商業利用のためのサーバである。
【００１４】
図３は、本発明の一実施形態に従って、複数のスレッドを備えた複数の処理コアを有するプロセッサチップであって、各コアは第１レベルキャッシュを含み、複数のコアは第２レベルキャッシュを共有するプロセッサチップを示す簡単な説明図である。プロセッサチップ１１２は、プロセッサコア０〜ｎ  １１８−１〜１１８−ｎを備える。一実施形態では、プロセッサチップ１１２は、８つのプロセッサコアを備えるが、本発明は、８つのプロセッサコアに限定されないことを理解されたい。プロセッサコア１１８−１〜１１８−ｎは、それぞれ、第１レベルキャッシュ１２４−１〜１２４−ｎを備える。各コアは、クロスバー１２０を介して第２レベルキャッシュ１２２を共有する。クロスバー１２０は、プロセッサコア１１８−１〜１１８−ｎと第２レベルキャッシュ１２２との間の通信を可能とする。一実施形態では、クロスバー１２０は、各クロック周期で処理される多数の独立したアクセスに対応するよう構成されている。
【００１５】
図４は、本発明の一実施形態に従って、８つのマルチスレッド化プロセッサコアを有するプロセッサチップを示す詳細な説明図である。スレッド化コア１１８−１〜１１８−８は、それぞれ、レベル１キャッシュ１２４−１〜１２４−８を備える。レベル１キャッシュ１２４−１は、命令キャッシュ（Ｉ＄）セグメントとデータキャッシュ（Ｄ＄）セグメントとを備える。スレッド化コア１１８−１には、ロード／格納部１２８−１が備えられている。プロセッサコア１１８−１〜１１８−８の各々が、命令キャッシュ、データキャッシュ、およびロード格納部を備えることを理解されたい。別の実施形態では、各プロセッサコアは、本発明の譲受人のＳＰＡＲＣ（登録商標）Ｖ９アーキテクチャに基づいている。各プロセッサコア１１８−１〜１１８−８は、クロスバー１２０と通信している。クロスバー１２０は、極めて短い待ち時間を実現することが望ましい場合には、プロセッサトラフィックに対して最適化される。レベル２（Ｌ２）キャッシュバンク１２２−１〜１２２−４は、プロセッサコア１１８−１〜１１８−８によって共有される。Ｌ２キャッシュバンク１２２−１〜１２２−４を共有することにより、同時に複数のバンクへ同時アクセスを行うことが可能となり、高帯域幅のメモリシステムが実現されることを理解されたい。一実施形態では、Ｌ２キャッシュバンクの各々は、約１メガバイト（ＭＢ）のサイズを有する。４つのＬ２キャッシュバンク１２２−１〜１２２−４が図４に示されているが、本発明は、４つのＬ２キャッシュバンクに限定されないことを理解されたい。すなわち、Ｌ２キャッシュバンクの数は、ほとんど常に、すべてのコアをビジー状態に保つのに十分な帯域幅をＬ２キャッシュから提供できる数であればよい。一実施形態では、各プロセッサコアは、４つのスレッドを備える。したがって、８つのコアを備える１つのプロセッサチップは、この構成では３２のスレッドを有することになる。各Ｌ２キャッシュバンク１２２−１〜１２２−４は、メインメモリインターフェース１２６−１〜１２６−４と通信して、メインメモリへのアクセスを実現する。プロセッサチップ上に８つのコアが示されているが、図４は、例示的なものであって限定を意図しないので、より多数または少数のコアを備えることができることを理解されたい。相互接続構造（すなわち、クロスバー１２０およびバッファスイッチコア１３０）によって提供される機能が、キャッシュバンク１２２−１〜１２２−４、処理コア１１８−１〜１１８−８、および入出力装置１３２−１〜１３２−ｎに適している周知の等価な構造によって提供されてもよいことは、当業者にとって明らかである。
【００１６】
さらに、図４において、バッファスイッチコア（ＢＳＣ）は、入出力直接メモリアクセス（ＤＭＡ）トランザクションのためにメインメモリへの最大帯域幅を提供するよう最適化されたブロックである。一実施形態では、様々な入出力装置および入出力インターフェースがＢＳＣ１３０と通信することから、ＢＳＣ１３０のスイッチ構造は、複数のポートを取り扱うよう構成されたＤＭＡトラフィックスイッチとして機能することができる。別の実施形態では、ＢＳＣ１３０は、メモリ待ちを実行することが可能となっている。ＢＳＣ１３０は、入出力ポートを介して各種の異なる入出力インターフェースと通信し、入出力装置によって生成されるＤＭＡトラフィックをバッファに格納するよう構成された回路を備える。バッファに格納された信号は、待ち行列に入れられ、次いで、Ｌ２キャッシュバンク１２２−１〜１２２−４に伝送される。次に、Ｌ２キャッシュバンク１２２−１〜１２２−４は、Ｌ２キャッシュバンク内のデータと、それに対応するメインメモリ内のデータとの間の一貫性を維持する。
【００１７】
一実施形態では、図４のＢＳＣ１３０、Ｌ２キャッシュバンク１２２−１〜１２２−４、およびメインメモリインターフェース１２６−１〜１２６−４を含むパスを用いて、入出力装置１３２−１〜１３２−ｎとメインメモリとの間の直接メモリアクセス（ＤＭＡ）転送が実行される。入出力装置への制御レジスタアクセスのために、クロスバー１２０のさらなるポートが、入出力ブリッジ１３４と通信し、入出力ブリッジ１３４が、入出力装置１３２−１〜１３２−ｎと通信している。したがって、プロセッサコア１１８−１〜１１８−８は、メモリを通して通信する代わりに、入出力装置１３２−１〜１３２−ｎのいずれかのレジスタにアクセスすることができる。例えば、プロセッサコア１１８−１〜１１８−８の１つが、ロード命令をクロスバー１２０に送ってもよい。クロスバー１２０は、次いで、Ｌ２キャッシュバンク１２２−１〜１２２−４ではなく、入出力ブリッジ１３４に信号を送信する。入出力ブリッジ１３４は、次に、対応する入出力装置１３２−１〜１３２−ｎに対するトランザクションを生成して、必要なデータを取得する。入出力ブリッジ１３４によってデータが受信されると、そのデータは、クロスバー１２０に送信され、次いで、それぞれのプロセッサコア１１８−１〜１１８−８に送信される。したがって、プロセッサコア１１８−１〜１１８−８の内の任意のプロセッサコア、すなわち、プロセッサコアが備える任意のスレッドは、Ｌ２キャッシュバンク１２２−１〜１２２−４を迂回して、ＤＭＡ転送のための入出力装置のプログラミングのために、入出力装置１３２−１〜１３２−ｎにアクセスできる。ＤＭＡ転送を実行する前に、入出力装置１３２−１〜１３２−ｎにおいていくつかのパラメータを設定しなければならないことは、当業者にとって明らかである。入出力装置１３２−１〜１３２−ｎにおいて設定されるパラメータは、例えば、転送長、転送アドレス、転送数などである。一実施形態では、入出力ブリッジ１３４は、制御信号（例えば、制御信号を設定するコマンドや状況を読み込むコマンド）を処理する。このように、入出力装置１３２−１〜１３２−ｎ、入出力ブリッジ１３４、およびクロスバー１２０の間のパスは、制御パスを規定する。クロスバー１２０、キャッシュバンク１２２−１〜１２２−４、ＢＳＣ１３０、およびメインメモリインターフェース１２６−１〜１２６−４の間に規定されたパスは、データパスを規定する。
【００１８】
図５は、本発明の一実施形態に従って、３２のマルチスレッド化プロセッサコアを有するプロセッサチップを示す説明図である。ここでは、４組のプロセッサコア１１８ａ１−１１８ａ８、１１８ｂ１−１１８ｂ８、１１８ｃ１−１１８ｃ８、および１１８ｄ１−１１８ｄ８が、プロセッサチップ１４０に備えられている。４組の各々は、８つのプロセッサコアを備えている。一実施形態では、プロセッサコアの各々は、４つのスレッドを備えており、したがって、本実施形態のプロセッサチップ１４０は、合計１２８のスレッドを備えている。もちろん、プロセッサコア当たりに、より多数または少数のスレッドが備えられてもよいし、プロセッサチップに、より多数または少数のプロセッサコアが備えられてもよい。図４を参照して上述したように、各組のプロセッサコアのためのデータパスは、クロスバー１２０、それぞれのＬ２キャッシュバンク１２２ａ１〜１２２ａ４、１２２ｂ１〜１２２ｂ４、１２２ｃ１〜１２２ｃ４、および１２２ｄ１〜１２２ｄ４、バッファスイッチコア１３０、および、それぞれのメインメモリインターフェース１２６ａ１〜１２６ａ４、１２６ｂ１〜１２６ｂ４、１２６ｃ１〜１２６ｃ４、および１２６ｄ１〜１２６ｄ４によって規定される。ＢＳＣ１３０は、図示の都合上、４つに分けて示されていることを理解されたい。すなわち、単一のＢＳＣ１３０が、入出力装置１３２ａ１〜１３２ａｎ、１３２ｂ１〜１３２ｂｎ、１３２ｃ１〜１３２ｃｎ、および１３２ｄ１〜１３２ｄｎすべてを、第２レベルキャッシュバンク１２２ａ１〜１２２ａ４、１２２ｂ１〜１２２ｂ４、１２２ｃ１〜１２２ｃ４、および１２２ｄ１〜１２２ｄ４の各々に接続している。同様に、各組のプロセッサコアのための制御パスは、クロスバー１２０、入出力ブリッジ１３４、および、それぞれの入出力装置１３２ａ１〜１３２ａｎ、１３２ｂ１〜１３２ｂｎ、１３２ｃ１〜１３２ｃｎ、および１３２ｄ１〜１３２ｄｎによって規定されている。以下で詳細に説明するように、電力およびダイのサイズと、性能とのトレードオフは、インオーダー実行を用いる単一発行パイプラインにより、プロセッサコアごとに最適化される。したがって、複数の簡単なコアに複数のスレッドを提供し、スレッドレベルの並列処理と、簡略なパイプラインと、によって、プロセッサチップが、命令レベル並列処理に基づく従来のプロセッサよりも、電力消費の少ない小型のダイに適合することを可能にすることで、性能が向上する。
【００１９】
図６は、図５のプロセッサチップを示す別の説明図である。この図によると、クロスバー１２０は、データパス１４４ａ〜１４４ｄ、ＢＳＣ１３０、およびキャッシュバンク１２２と通信する。この構成を２次元的に図示する際の制限から、キャッシュバンク１２２は２組のみしか示していないことを理解されたい。さらに２つのキャッシュバンクが準備されるが、図示されていないため、各データパス１４４ａ〜１４４ｄは、１つのキャッシュバンクに関連付けられている。イーサネットインターフェース１４２ａおよび１４２ｂが、分散型ネットワークへのアクセスを提供する。一実施形態では、イーサネットインターフェース１４２ａおよび１４２ｂは、ギガビットイーサネットインターフェースである。データパス１４４ａ〜１４４ｄと関連付けられた各プロセッサコアには、レベル１キャッシュメモリ１４６ａ〜１４６ｄが準備されている。
【００２０】
図７は、本発明の一実施形態に従って、４つのスレッドを有するプロセッサコアのための高スループットアーキテクチャを示すグラフである。スレッド０は、中央処理装置（ＣＰＵ）を利用し、次に、メモリ内でアクティブとなる。例えば、待ち時間の長いイベントにより、そのスレッドは、メモリ内でアクティブとなることがある。スレッド０がメモリ内でアクティブである間に、スレッド１は、スレッド３および４の各々のためにＣＰＵなどにアクセスする。メモリ内でアクティブであるスレッド０の動作は、バックグラウンドで実行されることを理解されたい。さらに、本明細書に記載されたメモリシステムは、並列メモリシステムなので、複数の参照が同時に起こりうる。そのため、ＣＰＵの利用は、時差技術でコアごとに最適化される。パイプラインは、比較的複雑ではなく（すなわち、命令レベル並列処理を用いない単一発行パイプライン）、従来の命令レベル並列処理のパイプラインと同じ領域で何回も複製できる。要するに、パイプラインは、複数のスレッドの実行を重複させ、ＣＰＵのパイプラインの利用を最大化する。
【００２１】
図８は、本発明の一実施形態に従って、スレッド内で実行される単一発行インオーダーパイプラインのパイプライン段階を示す簡単な説明図である。パイプラインの第１の段階は、命令が取得される命令フェッチである。パイプラインの第２の段階は、命令の命令コード、オペランドソース／宛先、および制御信号がデコードされるデコード段階であり、レジスタフェッチ段階とも呼ばれる。第３の段階は、実行段階に送るべきスレッドの選択が、クロック周期ごとに実行されるスイッチ段階である。なお、実行段階は、パイプラインの第４の段階である。上述のように、プロセッサコアが４つのスレッドを有する場合には、ハードウェアの４つのスレッドが、段階１ないし３に対して存在することを理解されたい。一実施形態では、段階４におけるロードおよび格納の命令に対して、有効なアドレスが算出される。２以上の命令が、対応するステージに存在しうる従来のＩＬＰプロセッサと異なり、別の実施形態では、段階１〜６のすべてについて、どの段階においても、処理される命令は１つである（すなわち、パイプラインは、単一発行パイプラインである）。段階５は、レジスタエラーコード訂正段階であり、段階６は、ある特定のスレッドの結果がレジスタファイルに書き込まれる書き込み段階である。
【００２２】
図９は、本発明の一実施形態に従って、マルチスレッド化プロセッサコアの利用を最適化するための方法の動作を示すフローチャートである。この方法は、プロセッサコアが第１のスレッドの動作によってアクセスされる動作１６０から始まる。プロセッサコアは、上述のように、少なくとも２つのスレッドを有するマルチスレッド化コアであることを理解されたい。その方法は、次に、プロセッサコアにアクセスする第１のスレッドの動作が完了した後に、待ち時間の長い動作が実行される動作１６２に進む。例えば、スレッドは、図７を参照して説明したように、メモリ内でアクティブであってよい。待ち時間の長い動作としては、キャッシュミス、ブランチ、および浮動小数点演算が挙げられる。この方法は、次に、第１のスレッドが中断される動作１６４に進む。図７を参照して説明したように、第１のスレッドは、メモリ内でアクティブである状態で、バックグラウンドで実行されている。その方法は、次に、プロセッサコアにアクセスする準備のできた第２のスレッドの動作が特定される動作１６６に進む。図８を参照して説明したように、第２のスレッドの動作は、パイプラインのスイッチ段階で特定および選択される。一実施形態では、スケジューリングアルゴリズムが、第２のスレッドの選択に用いられる。その方法は、次に、第１のスレッドに関連付けられた待ち時間の長い動作がバックグラウンドで実行される（例えば、メモリ内でアクティブである）間に、第２のスレッドの動作がプロセッサコアによって処理される動作１６８に進む。もちろん、第１のスレッドの待ち時間の長い命令が完了するまでに、複数の命令が第２のスレッドから送られてもよい。したがって、複数のスレッドが重複され、パイプラインの利用が最大化される。
【００２３】
要約すると、上述の実施形態は、少なくとも２つのスレッドをそれぞれ有する複数のコアをチップ上に提供する。マルチスレッド化された複数のコアは、複数のクライアントサービスすることができるサーバアプリケーションを効率的にサポートするよう構成された高スループットのアーキテクチャを規定する。さらに、アーキテクチャは、サーバアプリケーションの複数のスレッドを活用する。一実施形態では、プロセッサコアのアーキテクチャは、スレッドレベル並列処理および簡略化されたパイプライン（すなわち、単一発行パイプライン）によって簡略化されている。
【００２４】
さらに、本発明は、携帯型の装置、マイクロプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品、小型コンピュータ、メインフレームコンピュータなど、他のコンピュータシステム構成で実施されてもよい。また、本発明は、ネットワークを介して接続された遠隔処理装置によってタスクが実行される分散型コンピュータ環境で実施されてもよい。
【００２５】
上述の実施形態に関して、本発明は、コンピュータシステムに格納されたデータを含む様々なコンピュータによる動作を用いてよいことを理解されたい。これらの動作は、物理量の物理的な操作を必要とするものである。これらの量は、必ずとは限らないが、格納、転送、結合、比較、およびその他の操作が可能な電気または磁気信号の形態をとるのが通常である。さらに、実行される操作は、生成、特定、決定、または比較などの用語で呼ばれることが多い。
【００２６】
本明細書に記載され、発明の一部を形成する動作は、有用なマシン動作である。本発明は、また、これらの動作を実行するためのデバイスまたは装置に関する。この装置は、必要とされる目的に応じて特別に構築されてもよいし、コンピュータに格納されたコンピュータプログラムによって選択的に起動または構成される汎用コンピュータであってもよい。特に、本明細書の教示に従って書かれたコンピュータプログラムと共に、様々な汎用マシンを使用してもよいし、必要な動作を実行するために、より特殊化された装置を構築する方が好都合な場合もある。
【００２７】
以上では、理解を明確にする目的で本発明を詳細に説明したが、添付した特許請求の範囲の範囲内で、変更および修正が可能であることは明らかである。したがって、上述した実施形態は、例示を目的としたものであって限定的ではなく、本発明は、本明細書で取り上げた詳細に限定されず、添付した請求項の範囲および均等物の範囲内で修正することが可能である。
【図面の簡単な説明】
【００２８】
【図１】命令レベル並列処理に基づく従来のプロセッサの性能と電力／サイズとの間の関係を示すグラフ。
【図２】本発明の一実施形態に従って、スレッドレベル並列処理（ＴＬＰ）に基づいたアーキテクチャを有するプロセッサを備えたサーバを示す簡単な説明図。
【図３】本発明の一実施形態に従って、複数のスレッドを備えた複数の処理コアを有するプロセッサチップであって、各コアは第１レベルキャッシュを含み、複数のコアは第２レベルキャッシュを共有するプロセッサチップを示す簡単な説明図。
【図４】本発明の一実施形態に従って、８つのマルチスレッド化プロセッサコアを有するプロセッサチップを示す詳細な説明図。
【図５】本発明の一実施形態に従って、３２のマルチスレッド化プロセッサコアを有するプロセッサチップを示す説明図。
【図６】図５のプロセッサチップを示す別の説明図。
【図７】本発明の一実施形態に従って、４つのスレッドを有するプロセッサコアのパイプラインの利用を示すグラフ。
【図８】本発明の一実施形態に従って、スレッド内で実行される単一発行インオーダーパイプラインのパイプライン段階を示す簡単な説明図。
【図９】本発明の一実施形態に従って、マルチスレッド化プロセッサコアの利用を最適化するための方法の動作を示すフローチャート。
【図１】
2005507115.tif 000003
【図２】
2005507115.tif 000004
【図３】
2005507115.tif 000005
【図４】
2005507115.tif 000006
【図５】
2005507115.tif 000007
【図６】
2005507115.tif 000008
【図７】
2005507115.tif 000009
【図８】
2005507115.tif 000010
【図９】
2005507115.tif 000011
【国際公開パンフレット】
2005507115.tif 000012
2005507115.tif 000013
2005507115.tif 000014
2005507115.tif 000015
2005507115.tif 000016
2005507115.tif 000017
2005507115.tif 000018
2005507115.tif 000019
2005507115.tif 000020
2005507115.tif 000021
2005507115.tif 000022
2005507115.tif 000023
2005507115.tif 000024
2005507115.tif 000025
2005507115.tif 000026
2005507115.tif 000027
2005507115.tif 000028
2005507115.tif 000029
2005507115.tif 000030
2005507115.tif 000031
2005507115.tif 000032
2005507115.tif 000033
2005507115.tif 000034
【国際公開パンフレット（コレクトバージョン）】
2005507115.tif 000035
【国際調査報告】
2005507115.tif 000036
2005507115.tif 000037
2005507115.tif 000038
2005507115.tif 000039
2005507115.tif 000040