(57)【要約】  本発明の一実施例によれば、キャッシュと通信してマルチスレッド・プロセッサによって処理するために高優先度ハードウェア・スレッドとして識別されたハードウェア・スレッドを記憶するためにキャッシュ内の第１の複数のキャッシュ・ウェイの第１の部分集合を選択し、高優先度ハードウェア・スレッドを、選択された第１の部分集合に割り当て、複数のキャッシュ・ウェイの選択された第１の部分集合に割り当てられた高優先度ハードウェア・スレッドのキャッシュ使用度を監視し、高優先度ハードウェア・スレッドのキャッシュ使用度が、監視に基づいて所定のイナクティブ・キャッシュ使用度閾値を超えた場合、割り当てられた高優先度ハードウェア・スレッドが、複数のキャッシュ・ウェイのうちの何れかのキャッシュ・ウェイに再割り当てする方法が開示されている。
2009518754.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
キャッシュと通信してマルチスレッド・プロセッサによって処理するために高優先度ハードウェア・スレッドとして識別されたハードウェア・スレッドを記憶するためにキャッシュ内の複数のキャッシュ・ウェイの第１の部分集合を選択する工程と、
高優先度ハードウェア・スレッドを、前記選択された第１の部分集合に割り当てる工程と、
複数のキャッシュ・ウェイの前記選択された第１の部分集合に割り当てられた高優先度ハードウェア・スレッドのキャッシュ使用度を監視する工程と、
前記高優先度ハードウェア・スレッドの前記キャッシュ使用度が、前記監視に基づいた所定のイナクティブ・キャッシュ使用度閾値を超えた場合、前記割り当てられた高優先度ハードウェア・スレッドが、前記複数のキャッシュ・ウェイの何れかのキャッシュ・ウェイに再割り当てされる工程とを含む方法。
【請求項２】
請求項１記載の方法であって、
前記複数のキャッシュ・ウェイにおける少なくとも１つのキャッシュ・ウェイがハードウェア・スレッドのホストとしての働きをしないかを判定する工程と、
前記ハードウェア・スレッドのホストの働きをしない、前記複数のキャッシュ・ウェイにおける前記少なくとも１つのキャッシュ・ウェイに高優先度ハードウェア・スレッドを割り当てる工程とを更に含む請求項１記載の方法。
【請求項３】
請求項１記載の方法であって、前記キャッシュ使用度を監視する工程は、
前記割り当てられた高優先度ハードウェア・スレッドがイナクティブ・キャッシュ使用度状態にあるかを判定する工程と、
前記高優先度ハードウェア・スレッドが前記イナクティブ・キャッシュ使用度状態を維持する間にイナクティブ・キャッシュ使用度状態期間を測定する工程と、
前記測定された期間を前記所定のイナクティブ・キャッシュ使用度閾値と比較する工程と、
前記期間が前記所定のイナクティブ・キャッシュ使用度閾値を超えるかを判定する工程とを更に含む方法。
【請求項４】
請求項３記載の方法であって、イナクティブ・キャッシュ使用度状態期間を測定する工程は、
前記イナクティブ・キャッシュ使用度状態期間をクロックのサイクルに基づいて測定する工程を更に含む方法。
【請求項５】
請求項１記載の方法であって、前記複数のキャッシュ・ウェイの前記第１の部分集合を選択する工程は、ハードウェア・スレッド単位に行われる方法。
【請求項６】
請求項１記載の方法であって、前記複数のキャッシュ・ウェイの前記第１の部分集合におけるキャッシュ・ウェイの数は、前記複数のキャッシュ・ウェイを構成するキャッシュ・ウェイの５０％を超える方法。
【請求項７】
請求項１記載の方法であって、前記第１の部分集合に選択されるキャッシュ・ウェイの数はプログラム可能である方法。
【請求項８】
請求項１記載の方法であって、
前記キャッシュと通信して前記マルチスレッド・プロセッサによって低優先度ハードウェア・スレッドとして識別されたハードウェア・スレッドを処理するために前記複数のキャッシュ・ウェイの第２の部分集合を選択する工程を更に含む方法。
【請求項９】
請求項８記載の方法であって、前記複数のキャッシュ・ウェイの前記第１の部分集合の選択は第１の所定のマスクに基づいて行われ、前記複数のキャッシュ・ウェイの前記第２の部分集合の選択は第２の所定のマスクに基づいて行われる方法。
【請求項１０】
請求項９記載の方法であって、前記割り当てられた高優先度ハ―ドウェア・スレッドの再割り当ては、前記第１の所定のマスク及び前記第２の所定のマスクのディセーブルを備える方法。
【請求項１１】
請求項８記載の方法であって、前記第１の部分集合及び前記第２の部分集合は、低優先度ハードウェア・スレッド及び高優先度ハードウェア・スレッドを記憶することが可能な少なくとも１つのキャッシュ・ウェイを共有する方法。
【請求項１２】
システムであって、
マルチスレッド・プロセッサ・サブシステムであって、プロセッサを備え、前記プロセッサと通信する少なくとも１つのキャッシュ・サブシステムを有し、ハードウェア・スレッドを記憶するための複数のキャッシュ・ウェイを備えるマルチスレッド・プロセッサ・サブシステムと、
前記キャッシュ・システムと通信し、複数のキャッシュ・ウェイの第１の部分集合を選択して、前記プロセッサによって処理するために高優先度ハードウェア・スレッドとして識別されたハードウェア・スレッドを記憶するためのキャッシュ・ウェイ選択ロジック・サブシステムと、
前記キャッシュ・ウェイ選択ロジック・サブシステムと通信し、高優先度ハードウェア・スレッドを、前記複数のキャッシュ・ウェイの前記選択された第１の部分集合に割り当てるためのハードウェア・スレッド割り当てサブシステムと、前記キャッシュ・サブシステムと通信し、前記複数のキャッシュ・ウェイの前記選択された第１の部分集合に割り当てられた高優先度ハードウェア・スレッドを監視し、前記高優先度ハードウェア・スレッドの監視されたキャッシュ使用度を所定のキャッシュ使用度閾値と比較するためのキャッシュ使用度監視サブシステムとを備え、
前記ハードウェア・スレッド割り当てサブシステムは、前記高優先度ハードウェア・スレッドの前記キャッシュ使用度が、前記監視に基づいて前記所定のイナクティブ・キャッシュ使用度閾値を超えた場合、前記割り当てられた高優先度ハードウェア・スレッドを前記複数のキャッシュ・ウェイにおけるキャッシュ・ウェイに再割り当てするシステム。
【請求項１３】
請求項１２記載のシステムであって、前記キャッシュ使用度監視サブシステムは、
前記割り当てられた高優先度ハードウェア・スレッドがイナクティブ・キャッシュ使用度状態にあるかを判定するためのハードウェア・スレッド・アクティビティ状態サブシステムと、
前記高優先度ハードウェア・スレッドが前記イナクティブ・キャッシュ使用度状態を維持するイナクティブ・キャッシュ使用度状態期間をクロックのサイクルに基づいて測定し、前記測定された期間を前記所定のイナクティブ・キャッシュ使用度閾値と比較し、前記測定された期間が、前記所定のイナクティブ・キャッシュ使用度閾値を超えているかを判定するためのハードウェア・スレッド・アクティビティ・ロジック・サブシステムとを更に備えるシステム。
【請求項１４】
請求項１３記載のシステムであって、前記ハードウェア・スレッド・アクティビティ・ロジック・サブシステムは、
前記クロックの前記測定されたサイクルに基づいてカウントを増やすためのカウンタ・サブシステムを更に備え、前記カウントは、前記高優先度ハードウェア・スレッドが前記イナクティブ・キャッシュ使用度状態を維持する期間に対応し、前記測定された期間は前記カウントを備えるシステム。
【請求項１５】
請求項１２記載のシステムであって、前記キャッシュ・ウェイ選択ロジック・サブシステムは、受け取られた命令に基づいて前記第１の部分集合に選択されたキャッシュ・ウェイの数を選択するシステム。
【請求項１６】
請求項１２記載のシステムであって、前記キャッシュ・ウェイ選択ロジック・サブシステムは、前記キャッシュと通信する前記マルチスレッド・プロセッサにより、低優先度ハードウェア・スレッドと識別されたハードウェア・スレッドを処理するために前記複数のキャッシュ・ウェイの第２の部分集合を選択するシステム。
【請求項１７】
請求項１６記載のシステムであって、前記複数のキャッシュ・ウェイの第１の部分集合は少なくとも１つの第１のマスク・レジスタを備える第１の所定のマスクに基づいて選択され、前記複数のキャッシュ・ウェイの第２の部分集合は、少なくとも１つの第２のマスク・レジスタを備える第２の所定のマスクに基づいて選択されるシステム。
【請求項１８】
マルチスレッド・プロセッサ・システムのプロセッサによって実行されると、
キャッシュと通信するマルチスレッド・プロセッサによって処理されるために高優先度ハードウェア・スレッドとして識別されたハードウェア・スレッドを記憶するためにキャッシュ内の複数のキャッシュ・ウェイの第１の部分集合を選択する動作と、
高優先度ハードウェア・スレッドを、前記選択された第１の部分集合に割り当てる動作と、
前記複数のキャッシュ・ウェイの選択された第１の部分集合に割り当てられた高優先度ハードウェア・スレッドのキャッシュ使用度を監視する動作と、
前記高優先度ハードウェア・スレッドの前記キャッシュ使用度が、前記監視に基づいて所定のイナクティブ・キャッシュ使用度閾値を超えた場合、前記割り当てられた高優先度ハードウェア・スレッドが、前記複数のキャッシュ・ウェイのキャッシュ・ウェイに再割り当てされる動作とを前記プロセッサに行わせるソフトウェアを備える記憶媒体。
【請求項１９】
請求項１８の記憶媒体であって、前記ソフトウェアの実行によって生じるキャッシュ使用度の監視は、
前記割り当てられた高優先度ハードウェア・スレッドがイナクティブ・キャッシュ使用度状態にあるかを判定する動作と、
前記高優先度ハードウェア・スレッドが前記イナクティブ・キャッシュ使用度状態を維持するイナクティブ・キャッシュ使用度状態期間を測定する動作と、
前記測定された期間を前記所定のキャッシュ使用度閾値と比較する動作と、
前記期間が前記所定のイナクティブ・キャッシュ使用度閾値を超えるかを判定する動作とを更に含む方法。
【請求項２０】
請求項１８記載の記憶媒体であって、前記計算装置の処理装置内で実現される記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、マルチスレッド・プロセッサに関し、特に、マルチスレッド・プロセッサにおけるスレッドの処理に関する。
【背景技術】
【０００２】
アプリケーション・プログラムは、コンピュータの中央処理装置（ＣＰＵ）上で実行される命令シーケンス（実行可能なユニットなど）であるスレッドに分割することが可能である。一般に、プログラムはまず、オペレーティング・システムにより、ソフトウェア・スレッドに分割され、次いで、各ソフトウェア・スレッドは、ＣＰＵ内の対応するハードウェア・スレッド（通常、ＣＰＵ内のレジスタの組である）にマッピング又はスケジューリングされる。スレッドをより高速に処理するために、特定の時点で複数のスレッドを同時に受け取り、処理することが可能なマルチスレッド・プロセッサを使用することが可能である。
【０００３】
ソフトウェア・スレッド作成中、特定のスレッドは、他よりも高い優先度が関連付けられているとみなし得る。オペレーティング・システムはよって、所望の性能特性に基づいてソフトウェア・スレッドを優先順位付けする。オペレーティング・システムによるスレッド優先順位付けの一手法は、現在、マルチプロセッシング・システムによって使用されるタイム・スライス手法である。この手法では、より高い優先度を有するソフトウェア・スレッドは、より低い優先度を有するソフトウェア・スレッドよりもタイム・スライスを頻繁に受け取り、マルチプロセッシング・システムによってより多く処理され、よって、多くの場合、より好適な性能を達成する。
【０００４】
マルチプロセッシング・システムで使用されている間、前述の優先順位付けの手法は、資源が、同時に実行されるスレッド間で同様に競合するマルチスレッド環境では効果的でない。優先順位付けされたソフトウェア・スレッドがマルチスレッド・プロセッサによる処理のためにハードウェア・スレッドにマッピングされる場合に問題が生じる。現在、マルチスレッド・プロセッサは、割り当てられたソフトウェア・レベル優先度にかかわらず、各ハードウェア・スレッドを同様に処理し、よって、スレッドの当初のオペレーティング・システムの優先度の効果性が低下する。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来技術における前述の欠点の一理由は、マルチスレッド・プロセッサのキャッシュ・システムにある。伝統的には、キャッシュ・システムを動作させるために使用されるキャッシュ置換アルゴリズムは、スレッド全てに対して対称的に処理するよう企図されている。しかし、対称マルチプロセッシング・システムでは、ハードウェア・スレッドの種々のタスクを同時に（すなわち、優先順位付けなしで）実行することにより、通常、性能が損なわれ、特に、ソフトウェアにより、高い優先付けが付与されることが多いリアルタイム・スレッドの性能が損なわれる。このことは、ディスク断片化やウィ―ルス・スキャンなどの多くの定常的な保守タスクが、マルチメディア復号化などのリアルタイム・タスクと同時に実行するワークステーション及びホーム・オフィスにおいて支障になり得る。
【課題を解決するための手段】
【０００６】
本発明の実施例は一般に、マルチスレッド・プロセッサにおいて性能を優先順位付けるシステム及び方法に関する。ここでは、本発明の実施例は、固定型電子装置又は携帯型電子装置と一般にみなされる種々の計算装置に使用されるマルチスレッド・プロセッサに適用可能であり得る。計算装置の例は、コンピュータ、ワークステーションに限定又は制限されないが、それらを含む。例えば、計算装置は一般に、セットトップ・ボックス、携帯電話機、ディジタル・ビデオ・レコーダ（ＤＶＲ）、ネットワーキング機器（例えば、ルータ、サーバ等）、及び同様なものなどの何れかのタイプの固定型又は携帯型の電子装置とみなすことができる。
【発明を実施するための最良の形態】
【０００７】
特定の詳細を以下に示して本発明の種々の実施例が徹底的に分かるようにしているが、本発明の実施例は、例証する実施例以外の多くの実施例によって実施することができる。周知のロジック及び動作は、不必要に本明細書を分かりにくくすることを避けるために詳細に記載していない。
【０００８】
以下の説明では、本発明の種々の実施例の構成を表すために特定の用語を用いている。例えば、「マルチスレッド・プロセッサ」の語は、２つ以上のデータ・スレッドを同時に処理するための何れかの装置を含む。前述の命令シーケンスへのソフトウェア・プログラムの分割によって生じ、次いで、計算装置のプロセッサ上（中央処理装置（ＣＰＵ）上など）で実行することが可能な命令シーケンス（実行可能なユニットなど）を表す。「ハードウェア・スレッド」の語は、ソフトウェア・スレッドがマッピング又はスケジューリングされる、プロセッサ内のレジスタや他の記憶媒体の組を表す。
【０００９】
「ソフトウェア」の語は一般に、オペレーティング・システム、アプリケーション、アプレット、ルーティンを表し、１つ又は複数の命令をも表す。ソフトウェアは、何れかのタイプのメモリ、すなわち、プログラム可能な電子回路、半導体メモリ・デバイス、揮発性メモリ（例えば、ランダムアクセス・メモリ等）、不揮発性メモリ（例えば、リードオンリ・メモリ、フラッシュ・メモリ等）、フロッピー（登録商標）・ディスケット、光ディスク（例えば、コンパクト・ディスク又はディジタル多用途ディスク「ＤＶＤ」）、ハード・ドライブ・ディスク、テープ、又は何れかの種類の相互接続（以下に規定する）などの適切な記憶媒体に記憶することができる。
【実施例】
【００１０】
図１を参照すれば、本発明の例示的な実施例を実施することができるマルチスレッド・プロセッサ環境１（コンピュータ又はワークステーションの環境など）を示す。図１に示すように、マルチスレッド・プロセッサ環境１は、ソフトウェア１０１及び関連ハードウェア１０２を備える。ソフトウェア１０１は、１つ又は複数のアプリケーション・プログラム１０３、及びペレーティング・システム１０４を備える。ハードウェア１０２は、プロセッサ・コアなどのプロセッサ１０６と通信するキャッシュ・サブシステムを有するマルチスレッド・プロセッサ・サブシステム１０７を備える。前述の通り、アプリケーション・プログラム１０３の実行中に、オペレーティング・システムは、実行可能なユニットなどの命令シーケンスである、ＳＴ＿１乃至ＳＴ＿Ｎ（Ｎ＞１）などのソフトウェア・スレッド１０に、アプリケーション・プログラム１０３によって行われる対象のタスクを分割する。図１に示すように、各ソフトウェア・スレッド１０は次いで、通常、レジスタの組である対応するハードウェア・スレッド１１（ＨＴ＿１乃至ＨＴ＿Ｎ（Ｎ＞１）など）にマッピング又はスケジューリングされる。図１に示すように、ハードウェア・スレッド１１の処理に関するプロセッサ１０６とキャッシュ・サブシステム１０６との間の相互作用は、図２乃至図２Ｂに関して以下に更に詳細に説明するハードウェア・スレッド割り当てサブシステム２００及びキャッシュ使用監視サブシステム２１０によって制御される。
【００１１】
図２Ａ乃至図２Ｂは、本発明の例示的な実施例を示す図である。例証を単純にするために、プロセッサ１０６は、デュアルスレッド・プロセッサであるが、何れの数のスレッドを処理することができる他のプロセッサも、本発明の例示的な実施例の範囲内に収まることが想定される。図２Ａに占め宇章に、キャッシュ・サブシステム１０５は、キャッシュ・サブシステム１０５との間のデータを読み出し、書込むために信号２０３などにより、かつ、ハードウェア・スレッド１１の処理のために信号２０５、２０６及び２０１によってプロセッサ１０６と通信する。キャッシュ・サブシステム１０５は、ハードウェア・スレッド１１からデータを記憶する複数のキャッシュ・ウェイ２５１（ｗａｙ＿０乃至ｗａｙ＿ｎ（ｎ＞１）を含む。マルチスレッド・プロセッサ・サブシステム１０７は、図５に関して更に詳細に説明するように、キャッシュ・ウェイ選択ロジック・サブシステム（ＣＳＬ）を使用して、プロセッサ１０６による処理のために、高優先度ハードウェア・スレッド１１として識別されるハードウェア・スレッド１１からのデータを記憶するためのキャッシュ・ワイ２５１を選択するハードウェア・スレッド割り当てサブシステム２００を更に備える。キャッシュ・ウェイ選択ロジック・サブシステム２０２の選択に基づいて、ハードウェア・スレッド割り当てサブシステム２００は、高優先度ハ―ドウェア・スレッド１１を記憶するために選択されたキャッシュ・ウェイ２５１の部分集合に高優先度ハードウェア・スレッド１１を割り当てる。
【００１２】
図２Ａに更に示すように、マルチスレッド・プロセッサ・サブシステム１０１は、キャッシュ・サブシステム１０５と通信し、高優先度ハードウェア・スレッド１１からのデータを記憶するために選択されたキャッシュ・ウェイ２５１の部分集合に割り当てられた、ＨＴ＿１などの高優先度ハードウェア・スレッド１１を監視し、高優先度ハードウェア・スレッドＨＴ＿１の監視されたキャッシュ使用度を所定のキャッシュ使用閾値と比較する（図３及び図５に関して更に詳細に説明するように）ためのキャッシュ使用度監視サブシステム２１０を更に備える。高優先度ハードウェア・スレッドＨＴ＿１のキャッシュ使用度が、所定のキャッシュ使用度イナクティビティ閾値を超えた場合、ハードウェア・スレッド割り当てサブシステム２００は、割り当てられた高優先度ハードウェア・スレッドＨＴ＿１をキャッシュ・ウェイ２５１の１つに割り当てることが可能である。この再割り当て後、ハードウェア・スレッド割り当てサブシステム２００は、高優先度ハードウェア・スレッド１１からのデータを記憶するためのキャッシュ・ウェイ２５１の部分集合の選択を無視し、データ・アレイ２５０内のキャッシュ・ウェイ２５１の何れかにハードウェア・スレッドＨＴ＿１を再割り当てすることができる。ハードウェア・スレッドＨＴ＿１は、アクティブなキャッシュ使用を再割り当て後に再開する場合、再割り当てが停止され、上記スレッド・ベースの選択は自動的に再起動されることになる。
【００１３】
図３は、本発明の例示的な実施例による処理を示す、図２Ａ乃至図２Ｂに関するフローチャートである。図３に示すように、処理はブロック３００で始まり、少なくとも１つのキャッシュ・ウェイ２５１が、ハードウェア・スレッド１１をホストとして働かない（例えば、適切なデータが中に記憶されない）かが判定される。図２Ａに示すように、データ・アレイ２５０内のキャッシュ・ウェイ２５１に値２７１それぞれが対応する値２７１の組（ｖａｌｕｅ＿０乃至ｖａｌｕｅ＿ｎ（ｎ＞１）など）を保持する状態アレイ２７０を含む。各値２７１（ｖａｌｕｅ＿０など）は、対応するキャッシュ・ウェイ２５１（ｗａｙ＿０など）がハードウェア・スレッド１１のホストとして働くかを示す。適切には、値２７１は、対応するキャッシュ・ウェイ２５１が「有効である」（例えば、ハーｏｄウェア・スレッド１１のホストとして働く旨を示す、１などの一値、及びキャッシュ・ウェイ２５１が「無効である」（例えば、ハードウェア・スレッド１１のホストとして働かない）旨を示す、ゼロなどの別の値を有する二値を含む。
【００１４】
ブロック３１０で、キャッシュ・ウェイ２５１全てがハードウェア・スレッド１１のホストとして働くと判定された場合、フローはブロック３２０に進む。ブロック３２０では、プロセッサ１０６として処理するために高優先度ハードウェア・スレッドにして（オペレーティング・システム１０４などによって）識別されたハードウェア・スレッド１１を記憶するために選択される。
【００１５】
図２Ａに示すように、キャッシュ・サブシステム１０５は、特定のハードウェア・スレッド１１を割り当てることができるキャッシュ・ウェイ２５２を判定する置換ポリシー・アレイ（ＲＰＡ）２４０を含む。本発明の例示的な実施例では、高優先度スレッド・マスク２３０を使用して、高優先度ハードウェア・スレッドのみに使用するためにキャッシュ・ウェイ２５１の部分集合を取っておくようにＲＰＡ２４０の選択を改変する。適切には、高優先度ハードウェア・スレッド１１にのみ使用されるために取っておくキャッシュ・ウェイ２５１の数は、状態アレイ２５０内のキャッシュ・ウェイ２５１の合計数の半分を上回る。適切には、高優先度スレッド・マスク２３０は、高優先度マスキング・ビットを記憶するための１つ又は複数のレジスタ（図示せず）を備える。
【００１６】
図２Ｂは、ＲＰＡ２４０の判定信号２４１に高優先度スレッド２３０をこのように施す例を示す。例証を単純にするために、偽ＬＲＵアルゴリズム（ＰＬＲＵ）が、８ウェイ・キャッシュ（ｗａｙ＿０乃至ｗａｙ＿７）についての、かつ、７ビット（Ｂ０乃至Ｂ７）高優先度スレッド・マスク２３０が施されるＲＰＡ２４０によって使用される。この例では、高優先度スレッド・マスク２３０がイネーブルされ、高優先度ハードウェア・スレッド１１により、キャッシュ・ウェイ２５０を埋める旨の要求２０６（図２Ａに示す）が存在している時にはいつでも、記号でデシジョン・ツリー２によって示すように、高優先度スレッド・マスク２３０がＰＬＲＵビットに施される。（当該技術分野において周知である原理に基づいて）所定の高優先度スレッド・マスク２３０をこのように施すことにより、ＰＬＲＵのビット１（ツリー２に示す）が０にバイアスされ、最終的に、高優先度ハードウェア・スレッド１１のみにｗａｙ＿２乃至ｗａｙ＿７が利用可能にされる。よって、ＰＬＲＵビットに基づいて高優先度スレッド・マスク２３０のビットを予め判定して上記結果を実現することにより、ｗａｙ＿２乃至ｗａｙ＿７を備えたキャッシュ・ウェイの部分集合２８０が、高優先度ハードウェア・スレッド１１にのみ使用されるよう取っておく。図３におけるブロック３２０の処理はよって、高優先度スレッド１１を優先して、ＰＲＡ２４０の判定におけるバイアスを実現し、よって、高優先度ハードウェア・スレッド１１に対するキャッシュ・サブシステム１０５の資源の利用可能性を高める。
【００１７】
キャッシュ・ウェイ２５１の部分集合を、低優先度ハードウェア・スレッド１１のみに使用されるよう取っておくように低優先度マスク２２０を同様に、図２Ａ乃至図２Ｂに示す低優先度スレッド１１に施すことが可能である。適切には、ＲＰＡ２４０の判定信号２４１のビットに施すと、ＲＰＡ２４０はキャッシュ・ウェイ２５１の部分集合のみを指し示す。適切には、低優先度スレッド・マスク２３０は、低優先度マスキング・ビットを記憶するための１つ又は複数のレジスタ（図示せず）を備える。所定の低優先度スレッド・マスク２２０を図２Ｂの例に前述のやり方で施すと、ｗａｙ＿０及びｗａｙ＿１が、低優先度ハードウェア・スレッド１１にのみ利用可能になる。このようにして、ｗａｙ＿０及びｗａｙ＿１を備えるキャッシュ・ウェイの部分集合２８１を、低優先度ハードウェア・スレッド１１にのみ使用されるよう取っておく。適切には、同時に、高優先度ハードウェア・スレッド１１に対してキャッシュ・ウェイ２５１全てが偶発的に選択されることが理由で低優先度ハードウェア・スレッド１１が完全にしめ出されないことを確実にする一方で、低優先度ハードウェア・スレッド１１がキャッシュ・サブシステム１０５を高優先度ハードウェア・スレッド１１と同様に共有する可能性を、選択された２つの部分集合を用いることによって低減させるように低優先度スレッド・マスク２２０及び高優先度スレッド２３０が使用される。適切には、低優先度スレッド・マスク２２０及び高優先度スレッド・マスク２３０の少なくとも一方が、人間のユーザから受け取られた命令などによってプログラム可能である。低優先度スレッド・マスク２２０及び高優先度スレッド・マスク２３０は、ＲＰＡ２４０によって使用される特定の置換アルゴリズムに依存する。
【００１８】
別の例示的な実施例では、それぞれの低優先度部分集合及び高優先度部分集合が、低優先度ハードウェア・スレッド１１及び高優先度ハードウェア・スレッド１１をともに記憶するために使用することが可能な少なくとも１つのキャッシュ・ウェイ２５１を共有するようにプログラムすることが可能である。例えば、図２Ｂの例では、ｗａｙ＿０及びｗａｙ＿１が低優先度ハードウェア・スレッド１１及び高優先度ハードウェア・スレッド１１によって共有され、ｗａｙ＿２及びｗａｙ＿３が低優先度ハードウェア・スレッド１１にのみ予約され、ｗａｙ＿４乃至ｗａｙ＿７が高優先度ハードウェア・スレッド１１にのみ予約される。適切には、キャッシュ・ウェイ２５１の低優先度部分集合及び高優先度部分集合それぞれの選択は、プログラム可能であり、受け取られたスレッドＩＤ２０５に基づいてハードウェア毎スレッド１１ベースで行われる。適切には、低優先度部分集合及び高優先度部分集合それぞれに対して選択されるキャッシュ・ウェイ２５１の数もプログラム可能である。
【００１９】
図３に戻れば、高優先度ハードウェア１１に使用されるためにブロック３２０において選択されたキャッシュ・ウェイ２５１の部分集合に割り当てられる。次に、ブロック３４０で、ブロック３２０において選択されたキャッシュ・ウェイ２５１の部分集合に割り当てられた、ＨＴ＿１などの高優先度ハードウェア・スレッド１１のキャッシュ使用度が、図２Ａに示し、図４に関して以下に詳細に説明するキャッシュ利用度監視サブシステム２１０などによって監視される。
【００２０】
図４は、図３のブロック３４０に示す監視処理を図２Ａとともに更に示す例示的なフローチャートである。図４に示すように、処理はブロック４００に始まり、割り当てられた高優先度ハードウェア・スレッドＨＴ＿１が、イナクティブなキャッシュ使用度状態にあるかをキャッシュ使用度監視サブシステム２１０が判定する判定ブロック４１０に進む。適切には、図２Ａに示すハードウェア・スレッド・アクティビティ状態サブシステム２１２を備えるキャッシュ使用度監視サブシステム２１０は、プロセッサ１０６から受け取られたスレッドＩＤ２０５に基づいて高優先度ハードウェア・スレッド１１のアクティビティを監視する。高優先度ハードウェア・スレッドＨＴ＿１がイナクティブ状態にないと判定された場合（判定ブロック４１０）、フローは判定ブロック４１０に戻り、高優先度ハードウェア・スレッドＨＴ＿１がプロセッサ１０６によって処理されるまで前述のようにループし続ける。
【００２１】
判定ブロック４１０において高優先度ハードウェア・スレッドＨＴ＿１がイナクティブ状態にあると判定された場合、フォローは次いでブロック４２０に進む。ブロック４２０では、イナクティブ・キャッシュ使用度状態期間が測定される。この期間は、高優先度ハードウェア・スレッドＨＴ＿１が、イナクティブ・キャッシュ使用度状態を維持する時間である。フローは次いで、ブロック４３０に進む。ブロック４３０では、測定期間が、所定のイナクティブ・キャッシュ使用度閾値値と比較される。次に、判定ブロック４４０では、測定期間が所定のイナクティブ・キャッシュ使用度閾値値を超えない旨が判定された場合、フローは判定ブロック４１０に戻る。測定期間が所定キャッシュ使用度閾値を超えている判定された場合（判定ブロック４４０）、処理は図３のブロック３４０に戻る。適切には、ブロック４２０において、イナクティブ・キャッシュ使用度状態期間の測定は、図２Ａに示すハードウェア・スレッド・アクティビティ・ロジック・サブシステム２１１により、クロック（図示せず）のサイクルに基づいて行われる。ハードウェア・スレッド・アクティビティ・ロジック・サブシステム２１１は適切には、測定期間はカウントを含む。ハードウェア・スレッド・アクティビティ・ロジック・サブシステム２１１は次いで、測定期間を、所定のイナクティブ・キャッシュ使用度閾値値と比較し、測定期間が、所定のイナクティブ・キャッシュ使用度閾値を超えているかを判定する。適切には、ハードウェア・スレッド・アクティビティ・ロジック・システム２１１は、種々のソフトウェア実現形態又はハードウェア実現形態で実現することができる。
【００２２】
図３に戻れば、図４の判定ブロック４４０の結果に基づいて、高優先度ハードウェア・スレッドＨＴ＿１のキャッシュ使用度が、監視に基づいて所定のイナクティブ・キャッシュ使用度閾値を超えていると判定された場合（例えば、ＨＴ＿１のイナクティビティ期間が、許容可能な期間を超えていると判定された場合）、高優先度ハードウェア・スレッドＨＴ＿１が別のキャッシュ・ウェイ２５１に再割り当てされるブロック３５０にフローは進む。割り当てられた高優先度ハードウェア・スレッドＨＤ＿１の再割り当ては、図２Ａに示すようにそれぞれのイネーブル・ビット２２１及び２３１の値の変更などによる、低優先度スレッド・マスク２２０及び高優先度スレッド・マスク２３０のディセーブルを含む。ディセーブルは、低優先度スレッド・マスク２２０及び高優先度スレッド・マスク２３０を施すことによって課される、部分集合の制限なしでＨＴ＿１を再割り当てすることを可能にする。図２Ａに示すように、ＨＴ＿１のホストの働きをするｗａｙ＿０などのキャッシュ・ウェイ２５１が次いで、ハードウェア・スレッド割り当てサブシステム２００により、ビクティム・ウェイとして選択され、別のハードウェア・スレッド１１に利用可能にされる。適切には、ハードウェア・スレッド割り当てサブシステム２００は、ビクティム・ウェイ信号２０１をデータ・アレイ２５０及びタグ・アレイ２６０に送信して、ｗａｙ＿０を別のハードウェア・スレッド１１に利用可能にする。適切には、タグ・アレイ２６０は、データ・アレイ２５０内のキャッシュ・ウェイ２５１にインデックス２６１それぞれが対応する、ｉｎｄｅｘ＿０乃至ｉｎｄｅｘ＿０などのインデックスの組２６１を保持する。ＨＴ＿１は次いで、ハードウェア・スレッド割り当てサブシステム２００により、キャッシュ・ウェイ２５１に再割り当てされる。フローは次いで、処理全体が終了するブロック３７０に進む。
【００２３】
判定ブロック３１０に戻れば、１つ又は複数のキャッシュ・ウェイ２５１がハードウェア・スレッド１１のホストの働きをしない場合、フローはブロック３６０に進む。ブロック３６０では、高優先度ハードウェア・スレッド１１が、ハードウェア・スレッド１１のホストの働きをしないキャッシュ・ウェイ２５１に割り当てられる。適切には、判定ブロック３１０で、状態アレイ２７０は、１つ又は複数のキャッシュ・ウェイ２５１がハードウェア・スレッド１１のホストの働きをしないかを信号２７２などにより、ハードウェア・スレッド割り当てサブシステム２００に通知する。その結果、フローはブロック３６０に進むことが可能である。次に、ブロック３６０で、状態アレイ２７０は、ハードウェア・スレッド１１のホストの働きをしないキャッシュ・ウェイ２５１に関する情報を、信号２７３などによるハードウェア・スレッド割り当てサブシステム２００に供給し、それに基づいて、ハードウェア・スレッド割り当てサブシステム２００は、高優先度ハードウェア・スレッド１１を、ハードウェア・スレッド１１のホストの働きをしないキャッシュ・ウェイ２５１に割り当てる。ブロック３１０及び３６０における動作は、所望のソフトウェア実現考慮点又はハードウェア実現考慮点に応じてブロック３２０乃至３５０に後続又は先行して行うことが可能である。適切には、マルチスレッド・プロセッサ環境１は、マルチプロセッサ・サブシステム１０７によって実行された場合、図３及び図４の前述の動作をマルチプロセッサ・サブシステム１０７に行わせるソフトウェアを備える記憶媒体（図示せず）を含む。適切には、記憶媒体は、マルチプロセッサ・サブシステム１０７内で実現される。
【００２４】
図５は、図２に示すハードウェア・スレッド割り当てサブシステム２００の回路図である。ハードウェア・サブシステム２００の回路の動作全体を次いで、図３及び図４の前述の動作を参照して説明する。図２Ａ、及び図３のブロック３２０に関して前述したように、マルチスレッド・プロセッサ・サブシステム１０７は、にキャッシュ・ウェイ２５１の部分集合を選択して、プロセッサ１０６によって処理するために高優先度ハードウェア・スレッド１０として識別されたハードウェア・スレッド１１を記憶するためのキャッシュ・ウェイ選択ロジック・サブシステム２０２を備える。図５に示すように、キャッシュ・ウェイ選択ロジック・サブシステム２０２は、信号２３２を生成する高優先度スレッド（ＨＰＭ）マスク２３０のビットの列、及び信号２２２を生成する低優先度スレッド（ＬＰＭ）マスク２２０のビットの列を入力として受け取ることが可能である。信号２２２及び２３２が次いで、高優先度スレッド・マスク２３０又は低優先度スレッド・マスク２２０を選択するマルチプレクサ５００において受け取られる。適切には、マルチプレクサ５００による選択は、ハードウェア・スレッド１１からの要求の低優先度又は高優先度の特性を表す受信スレッドＩＤ信号に基づく。選択された信号５０４を次いで、ＲＰＡ２４０の判定信号２４１のビットにＡＮＤゲート５１０を介して施し、これにより、ＲＰＡ２４０は、キャッシュ・ウェイ２５１の部分集合のみを指し示す。
【００２５】
結果として生じる信号５１１が次いで、キャッシュ・ウェイ選択ロジック・サブシステム２０２からマルチプレクサ５２０に出力され、マルチプレクサ５２０は、次いで、信号２４１によって表すように、ＲＰＡ２４０によるキャッシュ・ウェイ２５１の元の選択、又は信号５１１に表すように、選択された高優先度スレッド・マスク２３０又は低優先度スレッド・マスク２２０に一方を施すことによるキャッシュ・ウェイ２５１のバイアスされた選択から選択する。選択は、高優先度スレッド・マスク２３０がイネーブルされているか、又は低優先度スレッド・マスク２２０がイネーブルされているかを示す受信イネーブル（ＥＮ）信号５２１に基づいて行われる。図３のブロック３５０に関して前述したように、高優先度スレッド・マスク２３０又は低優先度スレッド・マスク２２０をディセーブルする旨の判定は、ＨＴ＿１１などの割り当てられた高優先度ハードウェア・スレッド１１について再割り当て判定に依存する。次に、マルチプレクサ５２０の出力をビクティム・ウェイ判定ロジック・ブロック５３０に供給して、キャッシュ・ウェイ２５１の何れを使用して入力ハードウェア・スレッド１１のホストの働きをするかを判定する。適切には、ビクティム・ウェイ判定ロジック・ブロック５３０は、種々のソフトウェア実現形態又はハードウェア実現形態において実現することができる。キャッシュ・ウェイ２５１の判定は、ＲＰＡ２４０によるキャッシュ・ウェイ２５１の元の選択、又はイネーブル信号５２１に基づいてマルチプレクサ５２０によって選択されるキャッシュ・ウェイ２５１のバイアスされた選択に基づいて選択を行うか否かに依存する。ビクティム・ウェイ判定ロジック・ブロック５３０の出力は次いで、マルチプレクサ５４０に入力される。
【００２６】
マルチプレクサ５４０は次いで、図３において判定ブロック３１０に関して前述したように、図３のブロック３２０乃至３５０に対応する上記処理によって判定されたビクティム・ウェイ５１１と、キャッシュ・ウェイ２５１がハードウェア・スレッド１１のホストの働きをしないか否かに基づいて判定されたビクティム・ウェイ２７３との間で選択する。図３のブロック３１０及び３６０に関して前述したように、キャッシュ・ウェイ２５１がハードウェア・スレッド１１を有しない場合、そのキャッシュ・ウェイ２５１が選択され、よって、マルチプレクサ５４０は、状態アレイからの入力２７３をその出力として選択する。さもなければ、入力５３１が選択される、前述の通り、所望のソフトウェア実現形態考慮点又はハードウェア実現形態考慮点に応じて、キャッシュ・ウェイ選択ロジック・サブシステム５５０の時点に先行して、又は、キャッシュ・ウェイ選択ロジック・サブシステム５５０の時点に後続する何れかの時点で行うことができる。
【００２７】
上記実施例の種々の特徴は、説明を明瞭にするために別個に説明しており、前述の特徴の全部又は一部を有する本発明の単一の実施例に全部又は一部組み入れることが可能である。
【図面の簡単な説明】
【００２８】
【図１】本発明の例示的な実施例を実施することができるマルチスレッド・プロセッサ環境を示す図である。
【図２Ａ】本発明の例示的な実施例を示す図である。
【図２Ｂ】本発明の例示的な実施例を示す図である。
【図３】本発明の例示的な実施例による処理を示すフローチャートである。
【図４】図３に示す例示的な処理を更に示すフローチャートである。
【図５】図２Ａ乃至図２Ｂに示す本発明の例示的な実施例を示す回路図である。
【図１】
2009518754.tif 000003
【図２Ａ】
2009518754.tif 000004
【図２Ｂ】
2009518754.tif 000005
【図３】
2009518754.tif 000006
【図４】
2009518754.tif 000007
【図５】
2009518754.tif 000008
【国際調査報告】
2009518754.tif 000009
2009518754.tif 000010