JP3845639B2 - マルチスレッド・プロセッサを単一スレッド・モード及び同時マルチスレッド・モードの間で動的に切り替える装置及び方法 - Google Patents

マルチスレッド・プロセッサを単一スレッド・モード及び同時マルチスレッド・モードの間で動的に切り替える装置及び方法 Download PDF

Info

Publication number
JP3845639B2
JP3845639B2 JP2004105481A JP2004105481A JP3845639B2 JP 3845639 B2 JP3845639 B2 JP 3845639B2 JP 2004105481 A JP2004105481 A JP 2004105481A JP 2004105481 A JP2004105481 A JP 2004105481A JP 3845639 B2 JP3845639 B2 JP 3845639B2
Authority
JP
Japan
Prior art keywords
thread
hardware thread
hardware
processor
interrupt
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004105481A
Other languages
English (en)
Other versions
JP2004326749A (ja
Inventor
ウィリアム・ジョセフ・アームストロング
ブルース・ジー・ミーレイ
ナレッシュ・ナヤ−
バララム・シンハロイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2004326749A publication Critical patent/JP2004326749A/ja
Application granted granted Critical
Publication of JP3845639B2 publication Critical patent/JP3845639B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B42BOOKBINDING; ALBUMS; FILES; SPECIAL PRINTED MATTER
    • B42DBOOKS; BOOK COVERS; LOOSE LEAVES; PRINTED MATTER CHARACTERISED BY IDENTIFICATION OR SECURITY FEATURES; PRINTED MATTER OF SPECIAL FORMAT OR STYLE NOT OTHERWISE PROVIDED FOR; DEVICES FOR USE THEREWITH AND NOT OTHERWISE PROVIDED FOR; MOVABLE-STRIP WRITING OR READING APPARATUS
    • B42D15/00Printed matter of special format or style not otherwise provided for
    • B42D15/02Postcards; Greeting, menu, business or like cards; Letter cards or letter-sheets
    • B42D15/027Postcards; Greeting, menu, business or like cards; Letter cards or letter-sheets combined with permanently fastened other articles, e.g. photographs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Description

本発明は、コンピュータ及びコンピュータ・ソフトウェアに関し、詳しく云えば、マルチスレッド・プロセッサ及びそれを単一スレッド操作モード及び同時マルチスレッド操作モードの間で切り替えることに関するものである。
現代社会においてコンピュータに関するの信頼性が絶えず向上する場合、コンピュータ・テクノロジは、増大する要求に遅れないように多くの面で進歩しなければならない。重要な研究及び開発活動の1つの特定な主題は並列処理、即ち、複数のタスクの並列した実行である。
増大した並列処理を促進するために、多くのコンピュータ・ソフトウェア及びハードウェア・テクノロジが開発された。ソフトウェアの観点から、複数のタスクが実質的に同時に遂行されるように、コンピュータ・プログラムを複数の「スレッド」で同時に実行することを可能にするマルチスレッド・オペレーティング・システム及びカーネルが開発された。スレッドは、一般に、プログラムに対する独立した実行パスを表す。例えば、e−commerceコンピュータ・アプリケーションに対しては、各顧客のe−commerceトランザクションが別々のスレッドで処理されるように、種々のスレッドが種々の顧客に割り当てられ得る。
ソフトウェアの観点から、或るコンピュータはロジカル・パーティショニングの概念を実装している。この概念では、単一の物理的コンピュータが実質的に同様の複数の且つ独立した「仮想」コンピュータ(ロジカル・パーティションと呼ばれる)を操作することを可能にされる。これは、その物理的コンピュータにおける種々のリソース(例えば、プロセッサ、メモリ、入出力装置)が種々のロジカル・パーティションに割り振られることによるものである。各ロジカル・パーティションは別々のオペレーティング・システムを実行し、しかも、ユーザの観点及びロジカル・パーティションにおいて実行されるソフトウェア・アプリケーションの観点では、完全に独立したコンピュータとして動作する。
ハードウェアの観点では、コンピュータは、ワークロード容量の増加に備えるためには多数のマイクロプロセッサに益々依存している。更に、多数のスレッドを並列して実行する機能を支援するマイクロプロセッサが開発されており、それは、多数のマイクロプロセッサの使用を通して得られる多くの同等のパフォーマンス・ゲインを効果的に与える。マルチスレッド・プロセッサの1つの形態は、例えば、多数のスレッドの並行又は同時実行をハードウェアで支援する。その機能は、同時マルチスレッド化(simultaneous multithreading – SMT)と呼ばれることが多い。
SMTプロセッサでは、複数のハードウェア・スレッドがそのプロセッサにおいて定義され、各スレッドがそのスレッドに割り当てられた特定のタスクを実行することができる。演算論理ユニット、固定小数点ユニット、ロード・ストア・ユニット、浮動小数点ユニット等のような適当な数の実行ユニットが、複数のスレッドからの命令を並行して実行するように構成される。一般には、汎用レジスタ(GPR)及び設計済みの状態を表す特殊目的レジスタ(SPR)のほとんどがプロセッサにおける各ハードウェア・スレッドの代わりに複製される。しかし、或るSPR、オンチップ・キャッシュ、変換索引緩衝機構(translation look-aside buffer)、及び他の非設計済みリソースのような他のオンチップ・リソースが一般には複数のスレッドによって共用され、1つ又は複数のハードウェア・スレッドが長い待ち時間という事態で(例えば、キャッシュ・ミスに伴って)停止するとき、他のスレッドが発展し続け、チップ・リソースのいくつかを消費し続け得るという期待がある。
多くのワークロードに対して、SMTはコンピュータ・システムの全体的なパフォーマンス(即ち、全体的なスループット)を改善する。しかし、この改善は、SMTプロセッサにおいて実行される各タスクがオンチップ・リソースのいくつかを同じプロセッサ上で同時に走る他のタスクと共用する必要があるので、単一のタスクに対するターンアラウンド・タイムを犠牲にすることが多い。例えば、他のハードウェア・スレッドにおいて実行されるタスクのキャッシュ・アクセス・パターンが特定のタスクのパフォーマンスに悪影響を与えることがあり得るし、その最終的な結果は個々の各タスクに対する長い、しかも、予測し難いことの多いターンアラウンド・タイムを生じることがあり得る。しかし、或るアプリケーション、例えば、或る科学的及び技術的アプリケーションでは、個々のタスクの高速且つ予測可能なターンアラウンド・タイムに対する必要性が高速のシステム全体のスループットに対する必要性を超えることがある。そのような場合、マルチスレッド化がシステム・パフォーマンスを実際に妨げることがあり得る。
或るマルチスレッド化プロセッサ設計は、単一スレッド・モードにおいて実行する能力も支援し、従って、SMTを効果的に使用不可にし、より予測可能なターンアラウンド・タイムでもってタスクが実行されることを可能にする。しかし、そのような機能に対する支援は、単一スレッド・モード及びマルチスレッド・モードの間の切り替えがシステム再起動又は初期プログラム・ロード(IPL)を介して生じる。しかし、多くの高パフォーマンス・コンピュータ・システムに関する可用性の要求を考慮すると、システム再起動は非常に望ましくなく、多くの顧客にとって受け入れ難いことが多い。
更に、SMTモードでプロセッサを操作することが望ましいときでも、プロセッサにおける種々のハードウェア・スレッドによる共用リソースの消費のために依然として非能率なことが生じ得る。例えば、ハードウェア・スレッドがアイドル・ループを実行しつつあるときでも、従って、有用な活動をまったく遂行していないときでも、共用リソースは依然としてハードウェア・スレッドによって消費されており、従って、そのようなリソースを使用し得るかもしれない他の活動状態のスレッドからリソースを取り上げることになる。その結果、システムに代わって有用な作業を遂行し得ないスレッドによるリソースのこのような消費のために、次善のパフォーマンスが生じ得る。
マルチスレッド・プロセッサにおいて実行しているハードウェア・スレッドによって消費されるリソース全体に十分な制御を施す能力を促進すること、特に、マルチスレッド・プロセッサにおける1つ又は複数のそのようなスレッドにリソースを非効率的に割り振ることにより生じ得る非効率性を減じることが非常に望ましい。
本発明は、マルチスレッド・プロセッサを利用する装置、コンピュータ・プログラム、及び方法を提供することによって従来技術に関連したこれらの及び他の問題点を処理する。なお、このマルチスレッド・プロセッサは、制御回路に応答して選択的に活動化及び非活動化され得る複数のハードウェア・スレッドのうちの少なくとも1つのハードウェア・スレッドを有する。更に、制御回路は、非活動状態のスレッドが非活動化された後、一般には、そのスレッドに対する再活動化条件の指定を通して非活動状態のスレッドを活動化し得る方法を制御する機能を提供する。
ハードウェア・スレッドが活動状態であろうと或いは非活動状態であろうと、それを制御し得る制御回路の提供及び非活動状態のスレッドを活動化し得る方法の提供を通して、多くの有用なパフォーマンス向上が実現され得る。例えば、本発明に適合した或る実施例は、スレッドが割り込みに応答して再活動化され得るかどうかを制御することによって非活動状態のスレッドを活動化し得る方法を制御する能力を支援する。非活動状態のスレッドが割り込みに応答して活動化されることを可能にすることは、例えば、わずかなシステム・オーバヘッドでもってスレッドが効果的に「オフライン」と見なされることを可能にし、そのスレッドによって消費されたいずれのプロセッサ・リソースも他のスレッドによって利用されることを可能にするが、依然として、非活動化されたスレッドがオペレーションを再開するために割り込みを通して急速に且つ効率的に再活動化されることを可能にする。このように、例えば、スレッドがアイドル・ループを実行することによって消費される共用リソースが他のスレッドによる使用のために開放されることを可能にすることが可能であり、依然として、比較的急速に且つわずかなシステム・オーバヘッドでもってそのスレッドが再活動化される(そして、共用リソースが再獲得される)ことを可能にする。
それとは逆に、割り込みに応答してスレッドを活動化する機能を使用不可にすることは、マルチスレッド・プロセッサにおいて依然として活動状態であるいずれのスレッドも更なる効率的なオペレーションのために長期間にわたって或る共用リソースを開放する機能を支援し得る。更に、保護が割り込みを介した再活動化に対して差し支えない場合、スレッドは、システム再起動を必要とすることなく活動化又は非活動化されることが多い。このように、ハードウェア・スレッドの長期にわたる非活動化の場合でも、システム・アベイラビリティは滅多に悪影響を受けない。
本発明を特徴付けるこれら及び他の利点及び特徴は、本願の「特許請求の範囲」において示される。しかし、本発明並びにその使用を通して得られる利点及び目的の良好な理解のためには、図面及び発明の実施例で示された説明を参照すべきであろう。
以下で開示される実施例は、マルチスレッド・プロセッサにおける選択されたハードウェア・スレッドの動的活動化及び非活動化、並びに一旦非活動化された非活動状態のハードウェア・スレッドを活動化する方法の選択的制御を支援する。
本発明に適合したマルチスレッド・プロセッサは、典型的には、同時マルチスレッド・プロセッサであるが、その代替えとして、他の形式のマルチスレッド・プロセッサが使用可能である。更に、実際には、本発明に適合したマルチスレッド・プロセッサにおいて、任意の数のハードウェア・スレッドが支援され得るし、任意の数のそのようなハードウェア・スレッドが、本願明細書に示された方法で選択的に活動化され得る。例えば、図示の実施例では、同時マルチスレッド(SMT)プロセッサが2つのハードウェア・スレッドを含むものとして開示されるが、SMTモードと単一スレッド(ST)モードとの間でプロセッサを切り替えるように、1つのそのようなスレッドが選択的に非活動化されることも可能である。
一旦非活動化された非活動状態のハードウェア・スレッドを活動化する方法の選択的制御は、典型的には、特定のスレッド又はプロセッサに対して指定された再活動化条件に基づいており、本発明に適合した多くの方法で変更可能である。例えば、図示の実施例では、再活動化条件は、プロセッサ間割り込み(IPI)、I/O割り込み、タイマ又はデクリメンタ割り込み等のような割り込みに応答するスレッド活動化の選択的な使用可能性(enablement)に基づく。しかし、活動化されるべきスレッドの能力を制限する他の制御がその代替え方法として使用され得ることは明らかであろう。
図面を参照すると、幾つかの図を通して同じ参照番号は同じ部品を示す。図1は、本発明に適合した論理的にパーティション化されたコンピュータ10における主要なハードウェア・コンポーネントを示す。コンピュータ10は、一般的に、例えば、ネットワーク・サーバ、中規模コンピュータ、メインフレーム・コンピュータ等(例えば、IBMeServer (商標)コンピュータ)のような多数のマルチユーザ・コンピュータのいずれかを表す。しかし、本発明は、他のコンピュータ及びデータ処理システムにおいて、例えば、ワークステーション、デスクトップ・コンピュータ、ポータブル・コンピュータ等のような単一ユーザ・コンピュータにおいて、或いは、他のプログラム可能電子装置(例えば、組み込み型コントローラ等を組み込んだ装置)において実装可能である。更に、本発明は、非論理的にパーティション化されたマルチスレッド・コンピュータと関連しても利用可能である。
コンピュータ10は、一般には、バス16を介してメモリ14に結合された1つ又は複数のプロセッサ12を含む。各プロセッサ12は、複数のハードウェア・スレッド18を組み込むものとして示されたシステム・プロセッサ12aのような単一スレッド・プロセッサとして、又はマルチスレッド・プロセッサとして実装可能である。マルチスレッド・プロセッサ12aにおける各ハードウェア・スレッド18は、ほとんどの部分に関して、そのコンピュータに存在するソフトウェアにより独立したプロセッサのように扱われる。この点について、単一スレッド・プロセッサは、本発明の目的のためには、単一のハードウェア・スレッド、即ち、単一の独立した実行ユニットを組み込んだものと見なされるであろう。しかし、コンピュータにおける複数タスクの並列的な実行を更に支援するために単一スレッド・プロセッサ及びマルチスレッド・プロセッサの両方に関連してソフトウェア・ベースのマルチスレッド化又はマルチタスキングが使用され得ることは明らかであろう。
更に、図1に示されるように、1つ又はそれ以上のプロセッサ12(例えば、プロセッサ12b)がサービス・プロセッサとして実装され得る。なお、サービス・プロセッサは、特殊なファームウェア・コードを実行してシステム初期プログラム・ロード(IPL)を管理するために及びシステム・ハードウェアをモニタし、診断し、そして構成するために使用される。一般に、コンピュータ10は、1つのサービス・プロセッサ及び複数のシステム・プロセッサを含むであろう。それらのプロセッサは、コンピュータに存在するオペレーティング・システム及びアプリケーションを実行するために使用されるが、本発明はこの特定なインプリメンテーションに限定されない。或るインプリメンテーションでは、サービス・プロセッサが、バス16を介する以外の方法で、コンピュータにおける種々の他のハードウェア・コンポーネントに結合され得る。
メモリ14は、1つ又はそれ以上のレベルのメモリ装置、例えば、DRAMベースのメイン・ストレージ、及び1つ又はそれ以上のレベルのデータ、命令、及び(又は)コンビネーション・キャッシュを含み得る。或るキャッシュは、当業界では周知のような個々のプロセッサ又は複数のプロセッサをサービスする。更に、メモリ14は、バス20を介して多くのタイプの外部装置、例えば、1つ又はそれ以上のネットワーク・アダプタ22(コンピュータをネットワーク24とインターフェースするためのアダプタ)、1つ又はそれ以上のストレージ・コントローラ(コンピュータを1つ又はそれ以上のストレージ装置28とインターフェースするためのコントローラ)、及び1つ又はそれ以上のワークステーション・コントローラ(複数のワークステーション・アダプタを介して1つ又はそれ以上の端末又はワークステーション32とインターフェースするためのコントローラ)に結合される。
図1は、コンピュータ10における論理的にパーティション化されたコンピューティング環境をインプリメントする場合に利用される一次ソフトウェア・コンポーネント及びリソースを更に詳細に示す。それは、パーティション・マネージャ又はハイパーバイザ36によって管理される複数のロジカル・パーティション34を含む。この業界では周知のように、任意の数のロジカル・パーティションが支援され得るし、コンピュータに常時存在するロジカル・パーティションの数は、パーティションがコンピュータに加えられ又はコンピュータから排除されるとき、動的に変更可能である。
図示されたIBM eServerベースのインプリメンテーションでは、パーティション・マネージャ36は2層のプログラム・コードから成る。本願では非ディスパッチ可能部分38と呼ばれる第1層が、コンピュータ10のファームウェア又はライセンス内部コード(LIC)内に実装される。これは、上位層、例えば、オペレーティング・システムをハードウェア・アクセスの詳細から分離しているけれども、種々のハードウェア・コンポーネントに対する低レベル・インターフェースを提供するために利用される。そのファームウェアは、サービス・プロセッサ12bのようなサービス・プロセッサともコミュニケーションを行い得る。非ディスパッチ可能部分38は、コンピュータ10に対して多くの低レベルのパーティション管理機能、例えば、ページ・テーブル管理等を提供する。更に、非ディスパッチ可能部分38はタスクの概念を持たず、主として上位層のソフトウェアからのファンクション・コールを介してアクセス可能である。
パーティション・マネージャ36におけるプログラム・コードの第2層は、ここでは、ディスパッチ可能部分40と呼ばれる。タスクの概念を持たず、リロケーション・オフでもって実行され、しかも上位層のソフトウェアからのファンクション・コールを介してアクセス可能である非ディスパッチ可能部分38とは対照的に、ディスパッチ可能部分40はタスクの概念(すべてのオペレーティング・システムのような)を有し、リロケーション・オンでもって実行される。ディスパッチ可能部分40は、典型的には、それがユーザから隠蔽されていることを除けば、パーティションとほぼ同様に実行される。ディスパッチ可能部分40は、一般には、パーティションの作成及び削除、同時的I/Oメンテナンス、種々なパーティション34へのプロセッサ、メモリ、及び他のハードウェア・リソースの割り振り等のような高レベル・パーティション管理オペレーションを管理する。
一般に、各ロジカル・パーティション34は、コンピュータ10における使用可能なリソースの一部分を静的に及び(又は)動的に割り振られる。例えば、各ロジカル・パーティションは、1つ又はそれ以上のプロセッサ12、及び(又は)1つ又はそれ以上のハードウェア・スレッド18、並びに、使用可能なメモリ・スペースの一部分を割り振られ得る。ロジカル・パーティションは、1つの所与のプロセッサが複数のロジカル・パーティションによって利用されるように、プロセッサのような特定のハードウェア・リソースを共用することができる。それとは別に、ハードウェア・リソースが一時に1つのロジカル・パーティションにしか割り振られないこともあり得る。
更なるリソース、例えば、大容量記憶装置、バックアップ記憶装置、ユーザ入力、ネットワーク接続、及びそれらに対するI/Oアダプタが、一般には、当業界においては周知の方法で1つ又はそれ以上のロジカル・パーティションに割り振られる。複数のロジカル・パーティションが同じバス上のリソースを共用する場合、リソースは多くの方法で、例えば、バスごとを基準に又はリソースごとを基準に割り振られ得る。或るリソースは、一時に複数のロジカル・パーティションに割り振られることもあり得る。
各ロジカル・パーティション34は、非パーティション・コンピュータのオペレーティング・システムと同じ方法でロジカル・パーティションの主要なオペレーションを制御するオペレーティング・システム42を利用する。例えば、各オペレーティング・システム42は、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なOS/400オペレーティング・システムを使用して実装され得る。
各ロジカル・パーティション34は、別々の又は独立したメモリ・スペースにおいて実行され、従って、各ロジカル・パーティションは、そのような各ロジカル・パーティションにおいて実行される各ユーザ・アプリケーション(user app)44の観点から、独立した非パーティション・コンピュータとほぼ同様に作用する。このように、ユーザ・アプリケーションは、一般には、パーティション化された環境において使用するための如何なる特別な構成も必要としない。
個別の仮想コンピュータとしてロジカル・パーティション34の性質を仮定すると、ロジカル・パーティションが別々の物理的マシン上にあるかのようにそれらロジカル・パーティションが相互にコミュニケーションを行うことを可能にするようパーティション間のコミュニケーションを支援することが望ましい。このように、或るインプリメンテーションでは、ロジカル・パーティション34がイーサネット(登録商標)・プロトコルのようなネットワーキング・プロトコルを介して相互に通信することを可能にするよう非ディスパッチ可能部分38における仮想ローカル・エリア・ネットワーク(LAN)46を支援することが望ましい。パーティション相互間のコミュニケーションを支援する別の方法も本発明に適合して支援され得るであろう。
他の論理的にパーティション化された環境が本発明に適合して利用され得ることは明らかであろう。例えば、いずれのパーティション34からも分離しているディスパッチ可能部分40を利用するよりもむしろ、ディスパッチ可能部分の機能が1つ又はそれ以上のロジカル・パーティションに組み込まれてもよい。
一般に、本発明の実施例を実装するために実行されるルーチンは、それがオペレーティング・システム又は特定のアプリケーション、コンポーネント、プログラム、オブジェクト、命令のモジュール又はシーケンス、或いはそれらのサブセットの一部として実装されようとも、ここでは、「コンピュータ・プログラム・コード」又は単に「プログラム・コード」と呼ばれるであろう。プログラム・コードは、一般に、コンピュータにおける種々のメモリ及び記憶装置にいつも存在する1つ又はそれ以上の命令を含む。それらの命令は、コンピュータにおける1つ又はそれ以上のプロセッサによって読み取られそして実行されるとき、本発明の種々の局面を具体化したステップ又は素子を実行するに必要なステップをそのコンピュータに実行させる。更に、本発明は十分に機能するコンピュータ及びコンピュータ・システムに関連して説明したし、以後も説明するけれども、本発明の種々の実施例が種々な形式におけるプログラム製品として配布され得ること及びその配布を実際に行うために使用される信号保持媒体の特定のタイプに関係なく本発明が等しく適用することは当業者には明らかであろう。信号保持媒体の例は、揮発性及び不揮発性のメモリ装置、フロッピ及び他の取り外し可能ディスク、光ディスク(例えば、CD−ROM、DVD等)、その他、並びに、ディジタル及びアナログ通信リンクのような伝送タイプの媒体のような記録可能タイプの媒体を含むが、それに限定されない。
更に、以下で説明される種々なプログラム・コードが、本発明の特定の実施例ではそれを実装するアプリケーション又はソフトウェア・コンポーネントに基づいて識別可能である。しかし、単に、便宜的に下記のようないくつかの特定のプログラム専門語が使用されており、従って、本発明が、そのような専門語によって識別及び(又は)暗示される特定のアプリケーションのみにおける使用に限定されるべきではないことは明らかである。更に、コンピュータ・プログラムをルーチン、プロシージャ、メソッド、モジュール、オブジェクト等に編成する一般的には無数の方法、並びに、プログラム機能を典型的なコンピュータ(例えば、オペレーティング・システム、ライブラリ、API、アプリケーション、アプレット等)に存在する種々のソフトウェア層に割り振る種々の方法を考慮すると、本発明が、個々に開示されたプログラム機能に関する特定の編成及び割り振りに限定されないことも明らかである。
図1に示された例示的環境が本発明を限定することを意図するものではないことは当業者には明らかであろう。実際に、本発明の範囲から逸脱することなく、他の代替えハードウェア及び(又は)ソフトウェア環境が使用可能であることも当業者には明らかであろう。
上述のように、図示の実施例は、マルチスレッド・プロセッサを利用するシステムにおいて生じ得る多くの問題を処理するために利用可能である。1つのそのような問題は、マルチスレッド環境において実行されるときの個々のタスクに対する遅い且つ不確実なターン・アラウンド・タイムの結果として生じる。単一のタスクに対する信頼性の高い且つ高速のターン・アラウンドが望ましいとき、例えば、単一スレッド(ST)モードにおいてプロセッサを操作することによって、1つ又はそれ以上のスレッドを使用不可にするようにマルチスレッド・プロセッサに対するモードを切り替えることが望ましい。更に、システムをリブートする必要なくそのモード切り替えが生じることが望ましいことが多い。更に、システムをリブートする必要なく単一スレッド・モードからマルチスレッド(例えば、同時マルチスレッド(SMT))モードに切り替えることを同様に可能にすることも望ましいことがわかった。
取り組むべきもう1つの問題は、システムに代わって生産的な作業を行っていないハードウェア・スレッドによってマルチスレッド・プロセッサにおける共用リソースを消費することである。以下で更に明らかになるように、ハードウェア・スレッドは、一般に、オペレーティング・システムにとっては独立のロジカル・プロセッサのように見える。このように、スレッドがオペレーティング・システムのアイドル・ループで動作していて如何なる有用な作業もしていないとき、そのスレッドは、プロセッサの或る共用リソースを消費しつつあり、そのプロセッサにおける他のスレッドのパフォーマンスに影響を与えている。従って、スレッドがアイドル状態にあるときにオペレーティング・システムがプロセッサを単一スレッド・モードに切り替えること、及び作業がロジカル・プロセッサにとって使用可能であるとき又はロジカル・プロセッサが割り込みをサービスする必要があるときにそれがプロセッサをSMTモードに戻すことを可能にすることが望ましい。しかし、プロセッサを単一スレッド・モードにすることは、オペレーティング・システムにとって、あたかもプロセッサがオフラインになろうとしているように見え得ることがわかった。オペレーティング・システムの観点から、ロジカル・プロセッサをオフラインとみなすことは、一般に、費用を要するオペレーションである。更に、ロジカル・プロセッサをオフラインとみなすこと及び作業が必要であるときにそれをオンライン状態に戻すことのオーバヘッドは、スレッドがアイドル・ループに入ったときにそのスレッドを使用不可にすることによって何も得られないようなことになり得る。スレッドが有用な作業を遂行していない短い期間が共用リソースを他のスレッドにより自由に使用させるためにスレッドの非活動化をトリガするよう、わずかなオーバヘッドでもってオペレーティング・システムが単一スレッド・モードとSMTモードとの間を切り替えることを可能にする機構を設けることが望ましい。
従って、図示の実施例では、システム再起動及びコンピュータの可用性に関する他の制限を必要とすることなく単一スレッド・モードとSMTモードとの間でマルチスレッド・プロセッサを切り替える機能を設けることが望ましい。更に、非活動状態のスレッドが残りのオペレーティング・システムにとってオンラインであるかのように見えるような方法で活動状態のスレッドのパフォーマンスを高めるためにプロセッサを単一スレッド・モードにする機能を支援することが望ましい。
これらの懸念を処理するために、図示の実施例は、プロセッサが単一スレッド・モードで実行するのか又はSMTモードで実行するのかを制御する、ここでは「制御」レジスタ又は「CTRL」レジスタと呼ばれるパー・プロセッサ(per-processor)レジスタを支援する。更に、非活動状態のスレッドを、例えば、タイマ割り込み又はデクリメンタ割り込みのような外部割り込み、プロセッサ間割り込み、I/O割り込み等を介して回復させる方法を制御するために、別のパー・プロセッサ・レジスタが設けられる。後者のレジスタは、図示の実施例では、ハードウェア・インプリメンテーション依存(HID)レジスタと呼ばれ、特定のスレッドに対して指定された再活動化条件を記憶するのがこのレジスタである。以下において更に明らかになるように、割り込みが使用不可にされるとき、一般に、スレッドは、そのシステムにおける別の活動状態のスレッドによる明示的アクションによってのみ回復可能である。
前述の機構を使用すると、長期間にわたってプロセッサを単一スレッド・モードで実行させることが望ましいとオペレーティング・システムが見なす場合、そのオペレーティング・システムは、そのプロセッサにおける1つ又はそれ以上のスレッドを非活動状態にするように選択し得る。そこで、オペレーティング・システムはターゲット・スレッドに対応する論理的プロセッサをオフラインとみなし得る。ロジカル・プロセッサをオフラインとみなす部分として、オペレーティング・システムは、例えば、再活動化条件を指定することによって割り込みを使用不可にするために、スレッドが、HIDレジスタの適切な制御を介して外部割り込みソースにより割り込みされないことを保証し得る。そこで、スレッドはデッド・モードに入り、それによって、スレッドは、プロセッサにおける活動状態のスレッドによる明示的オペレーションよってのみ回復可能である。そのようなモードでは、デッド・スレッドに対してはハードウェア又はソフトウェアのいずれにおいても状態は維持されない。そこで、スレッドは、適切なビットをCTRLレジスタに書き込むことによってそれ自体を非活動状態にすることができる。
スレッドに対応するロジカル・プロセッサがアイドル・ループに入るときにいつでも上記の他の問題を処理するために、オペレーティング・システムは、CTRLレジスタに書き込むことによってそのスレッドを非活動状態にし得る。更に、オペレーティング・システムは、スレッド外部割り込み、例えば、I/O割り込み、プロセッサ間割り込み、タイマ割り込み等によって回復されることを再活動化条件が指定するようにHIDレジスタをプログラムし得る。そこで、スレッドは「休止(dormant)」モードに置かれる。このモードでは、状態がソフトウェアによって維持されるが、ハードウェアが休止スレッドからすべてのリソースを取り去り、それらを1つ又はそれ以上の活動状態のスレッドに割り振る。割り込みがトリガされるときにいつでも、スレッドが回復され、対応するロジカル・プロセッサがアイドル・ループに戻され、それが、そのトリガされた割り込みの結果として行うべき何らかの作業を有するかどうかを決定する。例えば、デクリメンタ又はタイマが満了するか又はI/O割り込みが未処理になる場合、スレッドが回復され、割り込みの結果として何らかの作業が必要であるかどうかを対応するロジカル・プロセッサが決定することを可能にする。更に、別のプロセッサがタスクを、非活動状態のスレッドに対応するロジカル・プロセッサにとって使用可能にしたい場合、別のプロセッサが、プロセッサ間割り込みを非活動状態のスレッドに送ることによってその非活動状態のスレッドを回復させ、ロジカル・プロセッサをそれのアイドル・ループに入らせて更なる作業をチェックさせる。更に、望ましい場合に、スレッドは、デッド・スレッドの場合のように、システムにおける他のスレッドによって明確に回復可能である。
次に図2を参照すると、論理的にパーティション化されたプロセッサ10(図1)における本発明の1つの特定なインプリメンテーションが示される。特に、図2は、スレッドT0及びT1として指定された一対のハードウェア・スレッド52を含む例示的なマルチスレッド・プロセッサ50を示す。これらのスレッドは、参照番号54で示された複数の共用リソースを共用するように構成される。各スレッドは、多数の専用リソース、例えば、一組の汎用レジスタ(GPR)56及び特殊目的レジスタ(SPR)58を有する。更に、各スレッドは、例えば、データ・キャッシュ及び(又は)命令キャッシュにようなオンチップ・キャッシュ・メモリ60を含む種々の共用リソース54を共用し得る。更に、種々のSPR62及びストア・キュー64、エフェクティブ・ツー・リアル・アドレス・トランスレーション(ERAT)テーブル66、変換索引緩衝機構(TLB)68等がスレッドT0及びT1によって共用され得る。本願で説明されたように、種々なタイプのリソースがスレッド間で共用され得る。
更に、CTRLレジスタ72及びHIDレジスタ74を含む制御回路70がマルチスレッド・プロセッサ50に配置され、スレッドT0及びT1の一方又は両方を選択的に活動化及び非活動化するために使用される。特に、各スレッドは、
(1)そのスレッドが活動状態であるか又は非活動状態であるか
(2)そのスレッドが割り込みに応答して再活動化され得るかどうか
をそれぞれ指定するために各レジスタ72、74における少なくとも1つのフィールドを割り当てられる。種々のデータ構造がレジスタ72、74に対する代替えとして利用され得ることは明らかであろう。例えば、レジスタ72及び74における種々の情報が結合されて単一のレジスタにすることも可能である。更に、種々の共用リソース54が本発明に適合したスレッドT0及びT1の間で共用され得ることも明らかであろう。更に、所与のマルチスレッド・プロセッサにおいて任意の数のスレッドが支援され得ること、及びそのようなスレッドのすべて又は一部分だけが制御回路70に応答して選択的に活動化及び非活動化され得ることも明らかであろう。
制御回路70は、スレッドT0及びT1の間で共用リソースを割り振るように、及び各ハードウェア・スレッドに維持された或る状態情報を保存又は廃棄するように、又は必要に応じてそのような状態情報の記憶及び検索を開始するようにも構成され得る。更に、制御回路70は、システム再起動を必要とすることなく、スレッドを選択的に活動化又は非活動化するように構成される。本願において開示された特徴を有するマルチスレッド・プロセッサの適当な実装に関する更なる詳細に関しては、「同時マルチスレッド(SMT)プロセッサにおけるスレッド化実行を管理するための方法及び論理的装置(Method and Logical Apparatus for Managing Thread Execution in aSimultaneous Multi-Threaded(SMT) Processor)」と題した米国特許出願番号第10/422,648、「同時マルチスレッド(SMT)プロセッサにおけるリソース再分配を管理するための方法及び論理的装置(Methodand Logical Apparatus for Managing Resource Redistribution in a SimultaneousMulti-Threaded(SMT) Processor)」と題した米国特許出願番号第10/422,649、及び「同時マルチスレッド(SMT)プロセッサにおけるリネーム・レジスタ再割り振りのための方法及び論理的装置(Methodand Logical Apparatus for Rename Register Reallocation in a SimultaneousMulti-Threaded(SMT) Processor)」と題した米国特許出願番号第10/422,651において見ることができる。これらはすべて同日に出願され、本発明と同じ譲受人に譲渡された。
上述したように、コンピュータ10(図1)は、論理的にパーティション化されたコンピュータとして構成される。従って、このコンピュータでは、複数のオペレーティング・システムが複数のロジカル・パーティションにおいて実行される。このように、そのようなコンピュータにおけるパーティション・マネージャは、パーティションがそれのプロセッサをSTモードで走らせるか又はSMTモードで走らせるかを制御するように構成される。コンピュータにおけるパーティション整合性を確実にするためにパーティション・マネージャにおいてそのような制御を維持することが望ましい。このように、コンピュータが、複数のパーティションを実行させることができるモードにあるときはいつでも、上述したCTRL及びHIDレジスタは、一般に、パーティション・マネージャによってのみ書き込み可能である。
本願において開示された機能を支援するために、パーティション・マネージャは、各パーティションが各プロセッサのST/SMTモードを制御することを可能にするために各パーティションにサービスを提供する。パーティションがロジカル・プロセッサをオフラインとみなしたいときにはいつでも、オペレーティング・システムが非活動状態にしようとしているスレッドにおいて、本願ではH_STOP_SELFサービスと呼ばれるサービスがアクセスされ得る。更に、オフラインにされた後のロジカル・プロセッサをオンラインにするために、パーティションは、H_START_LOGICAL_PROCESSORコールをパーティション・マネージャに呼び出し、デッド・スレッドの回復を通してロジカル・プロセッサをオンラインに戻す。
例えば、ロジカル・プロセッサがアイドル・ループに入ったことに応答して、パーティションがスレッド休止を行おうとするとき、パーティション・マネージャはH_CEDEコールを支援する。このコールでは、パーティション・マネージャは、任意の数の割り込みタイプの1つによってスレッドを回復し得る方法でスレッドを非活動状態にするために使用する。パーティションがH_PRODコールを呼び出すことによって休止スレッドを回復させることを可能にすることも望ましい。そのようなコールが共用プロセッサ・パーティション及び専用プロセッサのみに依存するパーティションに対しても利用され得ることは明らかであろう。
図3は、例えば、特定のパーティションと関連したマルチスレッド・プロセッサを単一スレッド・モードに切り替えるために利用可能な「STモードへの切り替え」ルーチン100を示す。ルーチン100は、ブロック102において、オペレーティング・システムの観点から、非活動状態になろうとするスレッドと関連したロジカル・プロセッサを、パーティションがオフラインとみなすことによって開始する。次に、ブロック104において、非活動状態になろうとするスレッドは、例えば、上述したH_STOP_SELFコールを使用して、そのスレッドを停止するためにパーティション・マネージャを呼び出す。次に、ブロック106において、前述の呼び出しの結果として現在パーティション・マネージャにおいて実行されつつある非活動状態になるスレッドは、割り込みを介してそのスレッドが回復しないようにするためにHIDレジスタをセットする。次に、ブロック108において、非活動状態になろうとする且つ依然としてパーティション・マネージャにおいて実行されているスレッドがスレッドを非活動化するようにCTRLレジスタをセットする。このオペレーションによって、マルチスレッド・プロセッサにおける制御回路がそのスレッドを非活動化し、その結果、プロセッサが単一スレッド・モードに切り替わる。
上記のプロセッサをSMTモードに切り替えるために、図4のルーチン120が遂行可能である。ルーチン120は、ブロック122において始まり、同じパーティションにおける活動状態のスレッドが、例えば、前述のSTART_LOGICAL_PROCESSORコールを使用して、以前に非活動状態であったスレッドを起動するためにパーティション・マネージャを呼び出す。次に、ブロック124に示されるように、パーティション・マネージャにおいて実行中のである活動状態のスレッドが非活動状態のスレッドを回復させるようにCTRLレジスタに書き込みを行う。そうすることによって、プロセッサにおける制御回路が非活動状態のスレッドを回復させるであろう。次に、図4における右欄に表されたブロック126に示されるように、以前に非活動状態であったスレッドがパーティション・マネージャにおいて、詳しくは、パーティション・マネージャに存在するリセット・ハンドラ・プログラム・コードにおいてウェイクアップする。次に、ブロック128において、その復元されたスレッドが、そのスレッドを所有するパーティションに制御を戻し、しかる後、ブロック130に示されるように、パーティションはロジカル・プロセッサをオンラインに戻す。しかる後、ルーチン120は終了する。
次に図5を参照すると、パーティションにおいて実行中のロジカル・プロセッサがアイドル状態に入るときにはいつでも、「ロジカル・プロセッサ・アイドル・ループ」ルーチン140が実行され得る。従って、ルーチン140は、そのロジカル・プロセッサが関連するマルチスレッド・プロセッサを単一スレッド・モードに簡単に切り替え、プロセッサにおける他の活動状態のスレッドによる消費のためにいずれの共有リソースも開放する。
ルーチン140はブロック142において始まる。そのブロックでは、非活動状態になろうとする(現在パーティションにおいて実行中の)スレッドがそのスレッドをシード(cede)するためのパーティション・マネージャを呼び出す。次に、ブロック144において、現在、呼び出しの結果としてパーティション・マネージャにおいて実行中の非活動状態になろうとするスレッドがそのパーティション化状態を保存する。次に、ブロック146において、再びパーティション・マネージャにおいて実行中の非活動状態になろうとするスレッドが、割り込みを介したそのスレッドの回復を可能にするようにHIDレジスタをセットする。しかる後、ブロック148において、依然としてパーティション・マネージャにおいて実行中の非活動状態になろうとするスレッドがそのスレッドを非活動化するようにCTRLレジスタをセットする。そのレジスタをセットした結果、マルチスレッド・プロセッサにおける制御回路がプロセッサを単一スレッド・モードに切り替え、それによってそのスレッドを効果的に非活動化する。しかる後、そのスレッドは、他の活動状態のスレッドによるCTRLレジスタへの書き込みを介して(図4に関連して上述した方法と同じ方法で)明示的に再活動化されるまで、或いはそれとは別に、割り込みを受け取ったことに応答して再活動化されるまで、非活動状態のままであろう。
例えば、ブロック150に示されるように、割り込み152を受け取った結果、単一スレッド・モードへの切り替えの結果として非活動化されたスレッドがパーティション・マネージャにおけるリセット・ハンドラ・プログラム・コードでウェイクアップする。次に、ブロック154に示されるように、依然としてパーティション・マネージャにおいて実行中のスレッドがパーティション状態を復活し、制御をパーティションに戻す。次に、ブロック156に示されるように、ロジカル・プロセッサのアイドル・ループがその受け取った割り込みを処理するように回復される。そこで、ルーチン140は終了し、ロジカル・プロセッサによる処理が再開される。
本発明の原理が論理的にパーティション化されたコンピュータ以外のコンピュータにも適用し得ることは明らかであろう。例えば、図6乃至図8は、図4乃至図6に示されたルーチンに対する対応ルーチンであるが、代わりに、論理的にパーティション化されてないコンピュータにおいて利用されるルーチンを示す。図6は、例えば、マルチスレッド・プロセッサをSTモードに切り替えるためにオペレーティング・システムによって実行され得る「STモードへの切り替え」ルーチン160を示す。ルーチン160はブロック162において開始し、非活動状態になろうとするスレッドと関連したロジカル・プロセッサをオフライン状態にする。次に、ブロック164において、非活動状態になるスレッドが、割り込みを介してそのスレッドが回復しないようにするためにHIDレジスタをセットする。次に、ブロック166において、非活動状態になるスレッドがそのスレッドを非活動化するように制御レジスタをセットし、それによって、プロセッサにおける制御回路が上述のようにそのスレッドを非活動化する。そこで、ルーチン160は終了する。
次に、図7に示されるように、「SMTモードへの切り替え」ルーチン180が、コンピュータにおいて実行中の他の活動状態のスレッドによるCTRLレジスタへの書き込みに応答して非活動状態のスレッドを回復させ得る(ブロック182)。CTRLレジスタへの書き込みの結果、図7における右欄によって表されるように、前に非活動化されたスレッドがオペレーティング・システムにおけるリセット・ハンドラ・プログラム・コードでウェイクアップする(ブロック184)。スレッドは、一旦ウェイクアップされると、ロジカル・プロセッサをオンラインに戻す(ブロック186)。一旦、ロジカル・プロセッサがオンラインになると、実行が通常の方法で再開し、ルーチン180は終了する。
図8は、「ロジカル・プロセッサ・アイドル・ループ」ルーチン200を示す。このルーチンは、ブロック202において開始し、非活動状態になろうとするスレッドが割り込みを介したスレッドの回復を可能にするようにHIDをセットする。しかる後、ブロック204に示されるように、非活動状態になろうとするそのスレッドがスレッドを非活動化するようにCTRLレジスタをセットし、それによって、スレッドが非活動化されなければならないことをマルチスレッド・プロセッサにおける制御回路に信号する。
ブロック206に示されるように、将来における或る時点で、割り込み208を受け取ったことに応答して、スレッドが再活動化され得る。一旦、割り込みが受け取られると、そのスレッドは、オペレーティング・システムにおけるリセット・ハンドラ・プログラム・コードでウェイクアップする。しかる後、ブロック210に示されるように、アイドル・ループが回復され、その受け取られた割り込みを処理する。そこで、ロジカル・プロセッサが通常の方法で再開し、ルーチン200は終了する。
このように、本発明に適合した実施例は、マルチスレッド・プロセッサにおいて、システム再起動を必要とすることなく、ハードウェア・スレッドを選択的に且つ動的に活動化及び非活動化する機能を支援することがわかる。本願で開示された実施例に対する種々の修正は、本願の恩恵を受ける当業者には明らかであろう。従って、本発明は、「特許請求の範囲」の記載にある。
まとめとして、本発明の構成に関して以下の事項を開示する。
(1)論理的にパーティション化されたコンピュータにおけるマルチスレッド・プロセッサを制御する方法であって、前記マルチスレッド・プロセッサは複数のハードウェア・スレッドの実行を支援し、前記論理的にパーティション化されたコンピュータは複数のパーティション及び1つのパーティション・マネージャを含み、前記複数のハードウェア・スレッドのうちの第1ハードウェア・スレッドは前記複数のパーティションのうちの第1パーティションにあるロジカル・プロセッサに割り当てられ、前記方法は、
前記第1パーティションにおいて前記ロジカル・プロセッサをオフラインとみなすことに関連して、割り込みの表明に応答した前記第1ハードウェア・スレッドの再活動化を禁止すると共に前記第1ハードウェア・スレッドを非活動化するステップと、
前記ロジカル・プロセッサがアイドル・ループに入ったことに応答して、割り込みの表明に応答した前記第1ハードウェア・スレッドの再活動化を可能にすると共に前記第1ハードウェア・スレッドを非活動化するステップと、
を含む、方法。
(2)複数のハードウェア・スレッドの実行を支援するマルチスレッド・プロセッサと、
前記マルチスレッド・プロセッサによって実行される複数のハードウェア・スレッドのうちの第1ハードウェア・スレッドを選択的に活動化及び非活動化するように構成された制御回路と、
を含み、前記制御回路は、更に、一旦前記第1ハードウェア・スレッドが非活動化された場合に当該第1ハードウェア・スレッドが活動化され得る方法を制御するように構成される、装置。
(3)前記制御回路は少なくとも1つのレジスタを含む、上記(2)に記載の装置。
(4)前記少なくとも1つのレジスタは、前記第1ハードウェア・スレッドが活動状態であるか又は非活動状態であるかを指定する第1レジスタ及び前記第1ハードウェア・スレッドが或る選択されたイベントに応答して再活動化され得るかどうかを指定する第2レジスタを含む、上記(2)に記載の装置。
(5)前記制御回路は、前記第1ハードウェア・スレッドが割り込みの表明に応答して活動化され得るかどうかを制御することによって、一旦非活動化された前記第1ハードウェア・スレッドが活動化され得る方法を制御するように構成される、上記(2)に記載の装置。
(6)前記割り込みは、外部割り込み、プロセッサ間割り込み、入出力割り込み、及びタイマ割り込みの少なくとも1つを含む、上記(5)に記載の装置。
(7)更に、複数のパーティション及び前記複数のパーティションを制御するパーティション・マネージャを含み、
前記第1ハードウェア・スレッドは前記複数のパーティションの少なくとも1つに割り振られ、
前記パーティション・マネージャは、前記第1ハードウェア・スレッドを選択的に活動化及び非活動化するよう前記制御回路を指図し、前記第1ハードウェア・スレッドが割り込みの表明に応答して活動化され得るかどうかを制御するように構成される、
上記(5)に記載の装置。
(8)前記ハードウェア・スレッドは前記複数のパーティションの1つにおいて実行中のロジカル・プロセッサと関連付けられ、
前記パーティション・マネージャは、パーティションが前記ロジカル・プロセッサをオフラインとみなすことに関連して、割り込みの表明に応答して前記第1ハードウェア・スレッドを非活動化し且つ前記ハードウェア・スレッドの再活動化を禁止するよう前記制御回路を指図するように構成される、
上記(7)に記載の方法。
(9)前記パーティション・マネージャに対するプログラム・コードを実行する第2ハードウェア・スレッドが、パーティションが前記ロジカル・プロセッサをオンラインに戻すことに関連して前記第ハードウェア・スレッドを再活動化するよう前記制御回路を指図するように構成される、上記(8)に記載の装置。
(10)前記ハードウェア・スレッドは前記複数のパーティションの1つにおいて実行中のロジカル・プロセッサと関連付けられ、
前記パーティション・マネージャは、前記ロジカル・プロセッサがアイドル・ループで実行していることをパーティションが検出したことに関連して、前記第1ハードウェア・スレッドを非活動化するよう前記制御回路を指図し、割り込みの表明に応答して前記第1ハードウェア・スレッドの再活動化を可能にするように構成される、
上記(7)に記載の装置。
(11)前記制御回路は、割り込みの表明に応答して前記第1ハードウェア・スレッドを再活動化するように構成され、
前記ロジカル・プロセッサは受け取った前記割り込みを処理するように構成される、
上記(10)に記載の装置。
(12)前記パーティション・マネージャは、更に、前記ロジカル・プロセッサが関連付けられたパーティションの状態を、前記ロジカル・プロセッサが前記アイドル・ループに入ったことに関連して保存し、前記ロジカル・プロセッサが関連付けられたパーティションの状態を前記割り込みの表明に応答して復活するように構成される、上記(11)に記載の装置。
(13)複数のハードウェア・スレッドの実行を支援するマルチスレッド・プロセッサを制御する方法であって、
前記マルチスレッド・プロセッサによって実行される前記複数のハードウェア・スレッドのうちの第1ハードウェア・スレッドに対して再活動化条件を指定するステップと、
前記第1ハードウェア・スレッドを非活動化するステップと、
前記第1ハードウェア・スレッドに対して指定された前記再活動化条件に基づいて前記第1ハードウェア・スレッドを選択的に再活動化するステップと、
を含み、前記再活動化条件は、一旦前記第1ハードウェア・スレッドが非活動化された場合に当該第1ハードウェア・スレッドを活動化し得る方法を決定する、方法。
(14)前記マルチスレッド・プロセッサは、前記第1ハードウェア・スレッドを選択的に活動化及び非活動化するように構成された制御回路を含み、
前記制御回路は、更に、前記再活動化条件に基づいて前記第1ハードウェア・スレッドを再活動化するように構成される、上記(13)に記載の方法。
(15)前記制御回路は少なくとも1つのレジスタを含む、上記(13)に記載の方法。
(16)前記少なくとも1つのレジスタは、前記第1ハードウェア・スレッドが活動状態であるか又は非活動状態であるかを指定する第1レジスタ及び前記再活動化条件を指定する第2レジスタを含む、上記(13)に記載の方法。
(17)前記再活動化条件は、前記第1ハードウェア・スレッドが割り込みの表明に応答して活動化され得るかどうかを指定する、上記(13)に記載の方法。
(18)前記割り込みは、外部割り込み、プロセッサ間割り込み、入出力割り込み、及びタイマ割り込みの少なくとも1つを含む、上記(17)に記載の方法。
(19)前記マルチスレッド・プロセッサは、複数のパーティション及び前記複数のパーティションを制御するパーティション・マネージャを含むコンピュータに配置され、
前記再活動化条件の指定及び前記第1ハードウェア・スレッドの非活動化が前記パーティション・マネージャによって遂行される、上記(17)に記載の方法。
(20)前記第1ハードウェア・スレッドは、前記複数のパーティションの1つにおいて実行中のロジカル・プロセッサと関連付けられ、
前記パーティション・マネージャは、パーティションが前記ロジカル・プロセッサをオフラインとみなすことに関連して、割り込みの表明に応答して前記第1ハードウェア・スレッドの再活動化を禁止する再活動化条件を指定するように構成される、
上記(19)に記載の方法。
(21)更に、パーティションが前記ロジカル・プロセッサをオンラインに戻すことに関連して、前記パーティション・マネージャに対してプログラム・コードを実行する第2ハードウェア・スレッドを使用して前記第1ハードウェア・スレッドを再活動化するステップを含む、上記(20)に記載の方法。
(22)前記第1ハードウェア・スレッドは、前記複数のパーティションの1つにおいて実行中のロジカル・プロセッサと関連付けられ、
前記ロジカル・プロセッサがアイドル・ループにおいて実行していることをパーティションが検出するステップと、
割り込みの表明に応答して前記第1ハードウェア・スレッドの再活動化を可能にする再活動化条件を指定するステップと、
を更に含む、上記(19)に記載の方法。
(23)前記第1ハードウェア・スレッドに対して指定された前記再活動化条件に基づいて前記第1ハードウェア・スレッドを選択的に再活動化するステップは、割り込みの表明に応答して前記第1ハードウェア・スレッドを再活動化するステップを含み、
前記ロジカル・プロセッサは受け取った前記割り込みを処理するように構成される、上記(22)に記載の方法。
(24)更に、前記ロジカル・プロセッサが関連付けられたパーティションの状態を、前記ロジカル・プロセッサが前記アイドル・ループに入ったことに関連して保存するステップと、
前記ロジカル・プロセッサが関連付けられたパーティションの状態を前記割り込みの表明に応答して復活するステップと、
を更に含む、上記(23)に記載の方法。
(25)前記マルチスレッド・プロセッサはオペレーティング・システムを含むコンピュータに配置され、
前記第1ハードウェア・スレッドは、1つのロジカル・プロセッサと関連付けられ、
前記再活動化条件の指定及び前記第1ハードウェア・スレッドの非活動化は前記オペレーティング・システムによって遂行される、
上記(17)に記載の方法。
(26)前記オペレーティング・システムは、前記ロジカル・プロセッサをオフラインとみなすことに関連して、割り込みの表明に応答して前記第1ハードウェア・スレッドの再活動化を禁止する再活動化条件を指定するように構成される、上記(25)に記載の方法。
(27)前記オペレーティング・システムは、前記ロジカル・プロセッサがアイドル・ループに入ったことに関連して、割り込みの表明に応答して前記第1ハードウェア・スレッドの再活動化を許可する再活動化条件を指定するように構成される、上記(25)に記載の方法。
(28)複数のハードウェア・スレッドの実行を支援するマルチスレッド・プロセッサによって実行された複数のハードウェア・スレッドのうちの第1ハードウェア・スレッドに対して再活動化条件を指定すること、前記第1ハードウェア・スレッドを非活動化すること、及び前記第1ハードウェア・スレッドに対して指定された前記再活動化条件に基づいて前記第1ハードウェア・スレッドを選択的に再活動化することによって前記マルチスレッド・プロセッサを制御するように構成されたプログラム・コードと、
前記プログラム・コードを保持する信号保持媒体と、
を含み、前記再活動化条件は、一旦前記ハードウェア・スレッドが非活動化された場合に当該第1ハードウェア・スレッドを活動化し得る方法を決定する、コンピュータ・プログラム。
(29)前記信号保持媒体は記録可能な媒体及び伝送媒体の少なくとも1つを含む、上記(28)に記載のコンピュータ・プログラム。
本発明に適合する論理的にパーティション化されたコンピュータにおける主要なハードウェア・コンポーネントのブロック図である。 図1に示されたマルチスレッド・プロセッサにおいて利用される共用リソース及び専用リソースのブロック図である。 マルチスレッド・プロセッサを単一スレッド・モードに切り替えるために、図1の論理的にパーティション化されたコンピュータによって実行される単一スレッド・モード・ルーチンへの切り替えのプログラム・フローを示すフローチャートである。 本発明に適合した方法でマルチスレッド・プロセッサを同時マルチスレッド・モードに切り替えるために、図1の論理的にパーティション化されたコンピュータによって実行される同時マルチスレッド・モード・ルーチンへの切り替えのプログラム・フローを示すフローチャートである。 図1の論理的にパーティション化されたコンピュータによって実行されるロジカル・プロセッサ・アイドル・ループ・ルーチンのプログラム・フローを示すフローチャートである。 本発明に適合した方法でマルチスレッド・プロセッサを単一スレッド・モードに切り替えるために、非論理的にパーティション化されたコンピュータによって実行される単一スレッド・モード・ルーチンへの切り替えのプログラム・フローを示すフローチャートである。 本発明に適合した方法でマルチスレッド・プロセッサを同時マルチスレッド・モードに切り替えるために、非論理的にパーティション化されたコンピュータによって実行される同時マルチスレッド・モード・ルーチンへの切り替えのプログラム・フローを示すフローチャートである。 非論理的にパーティション化されたコンピュータによって実行されるロジカル・プロセッサ・アイドル・ループ・ルーチンのプログラム・フローを示すフローチャートである。

Claims (29)

  1. 論理的にパーティション化されたコンピュータにおけるマルチスレッド・プロセッサを制御する方法であって、前記マルチスレッド・プロセッサは複数のハードウェア・スレッドの実行を支援し、前記論理的にパーティション化されたコンピュータは複数のパーティションと前記複数のパーティションを制御するパーティション・マネージャを含み、前記複数のハードウェア・スレッドのうちの第1ハードウェア・スレッドは前記複数のパーティションのうちの第1パーティションにあるロジカル・プロセッサに割り当てられ、前記方法は、
    前記第1パーティションにおいて前記ロジカル・プロセッサをオフラインとみなし、それによって割り込みの表明に応答した前記第1ハードウェア・スレッドの再活動化を禁止すると共に前記第1ハードウェア・スレッドを非活動化するステップと、
    前記ロジカル・プロセッサがアイドル・ループに入ったことに応答して、割り込みの表明に応答した前記第1ハードウェア・スレッドの再活動化を可能にすると共に前記第1ハードウェア・スレッドを非活動化するステップと、
    を含む、方法。
  2. 論理的にパーティション化されたコンピュータにおけるマルチスレッド・プロセッサを制御する装置であって、前記論理的にパーティション化されたコンピュータは複数のパーティションと前記複数のパーティションを制御するパーティション・マネージャを含み、
    前記装置は、
    複数のハードウェア・スレッドの実行を支援するマルチスレッド・プロセッサであって、前記複数のハードウェア・スレッドのうちの第1ハードウェア・スレッドは前記複数のパーティションのうちの第1パーティションにあるロジカル・プロセッサに割り当てられる、前記マルチスレッド・プロセッサと、
    前記マルチスレッド・プロセッサによって実行される複数のハードウェア・スレッドのうちの第1ハードウェア・スレッドを選択的に活動化及び非活動化するように構成された制御回路であって、前記制御回路は、更に、一旦前記第1ハードウェア・スレッドが非活動化された場合に当該第1ハードウェア・スレッドが活動化され得る方法を制御するように構成される、前記制御回路
    を含み、
    前記第1パーティションにおいて前記ロジカル・プロセッサをオフラインとみなし、それによって割り込みの表明に応答した前記第1ハードウェア・スレッドの再活動化を禁止すると共に前記ハードウェア・スレッドを非活動化するよう前記制御回路を指図するように、前記パーティション・マネージャが構成される、装置。
  3. 前記制御回路は少なくとも1つのレジスタを含む、請求項2に記載の装置。
  4. 前記制御回路は、前記第1ハードウェア・スレッドが活動状態であるか又は非活動状態であるかを指定する第1レジスタ及び前記第1ハードウェア・スレッドが或る選択されたイベントに応答して再活動化され得るかどうかを指定する第2レジスタを含む、請求項2に記載の装置。
  5. 前記制御回路は、前記第1ハードウェア・スレッドが割り込みの表明に応答して活動化され得るかどうかを制御することによって、一旦非活動化された前記第1ハードウェア・スレッドが活動化され得る方法を制御するように構成される、請求項2に記載の装置。
  6. 前記割り込みは、外部割り込み、プロセッサ間割り込み、入出力割り込み、及びタイマ割り込みの少なくとも1つを含む、請求項5に記載の装置。
  7. 前記第1ハードウェア・スレッドを選択的に活動化及び非活動化するよう前記制御回路を指図し、前記第1ハードウェア・スレッドが割り込みの表明に応答して活動化され得るかどうかを制御するように、前記パーティション・マネージャが構成される、請求項5に記載の装置。
  8. 前記割り込みがデクリメンタ割り込みである、請求項5に記載の装置。
  9. 前記ロジカル・プロセッサをオンラインに戻し、それによって前記第1ハードウェア・スレッドを再活動化するよう前記制御回路を指図するように、前記パーティション・マネージャに対するプログラム・コードを実行する第2ハードウェア・スレッドが構成される、請求項8に記載の装置。
  10. 前記ロジカル・プロセッサがアイドル・ループに入ったことに応答して、前記第1ハードウェア・スレッドを非活動化するよう前記制御回路を指図し、割り込みの表明に応答した前記第1ハードウェア・スレッドの再活動化を可能にするように、前記パーティション・マネージャが構成される、
    請求項7に記載の装置。
  11. 前記制御回路は、割り込みの表明に応答して前記第1ハードウェア・スレッドを再活動化するように構成され、
    前記ロジカル・プロセッサは受け取った前記割り込みを処理するように構成される、
    請求項10に記載の装置。
  12. 前記ロジカル・プロセッサが関連付けられたパーティションの状態を、前記ロジカル・プロセッサが前記アイドル・ループに入ったことに応答して保存し、前記ロジカル・プロセッサが関連付けられたパーティションの状態を前記割り込みの表明に応答して復活するように、前記パーティション・マネージャが更に構成される、請求項11に記載の装置。
  13. 複数のハードウェア・スレッドの実行を支援するマルチスレッド・プロセッサを制御する方法であって、
    前記マルチスレッド・プロセッサによって実行される前記複数のハードウェア・スレッドのうちの第1ハードウェア・スレッドに対して再活動化条件を指定するステップであって、前記第1ハードウェア・スレッドは、前記複数のパーティションの1つにおいて実行中のロジカル・プロセッサと関連付けられる、前記指定するステップと、
    前記第1ハードウェア・スレッドを非活動化するステップと、
    前記第1ハードウェア・スレッドに対して指定された前記再活動化条件に基づいて前記第1ハードウェア・スレッドを選択的に再活動化するステップであって、前記再活動化条件は、一旦前記第1ハードウェア・スレッドが非活動化された場合に当該第1ハードウェア・スレッドを活動化し得る方法を決定する、前記再活動化するステップと、
    を含み、前記第1パーティションにおいて前記ロジカル・プロセッサをオフラインとみなし、それによって割り込みの表明に応答した前記第1ハードウェア・スレッドの再活動化を禁止する再活動化条件を指定するように、前記パーティション・マネージャが構成される、方法。
  14. 前記マルチスレッド・プロセッサは、前記第1ハードウェア・スレッドを選択的に活動化及び非活動化するように構成された制御回路を含み、
    前記制御回路は、更に、前記再活動化条件に基づいて前記第1ハードウェア・スレッドを再活動化するように構成される、請求項13に記載の方法。
  15. 前記制御回路は少なくとも1つのレジスタを含む、請求項13に記載の方法。
  16. 前記制御回路は、前記第1ハードウェア・スレッドが活動状態であるか又は非活動状態であるかを指定する第1レジスタ及び前記再活動化条件を指定する第2レジスタを含む、請求項13に記載の方法。
  17. 前記再活動化条件は、前記第1ハードウェア・スレッドが割り込みの表明に応答して活動化され得るかどうかを指定する、請求項13に記載の方法。
  18. 前記割り込みは、外部割り込み、プロセッサ間割り込み、入出力割り込み、及びタイマ割り込みの少なくとも1つを含む、請求項17に記載の方法。
  19. 前記マルチスレッド・プロセッサは、複数のパーティション前記複数のパーティションを制御するパーティション・マネージャを含むコンピュータに配置され、
    前記再活動化条件の指定及び前記第1ハードウェア・スレッドの非活動化が前記パーティション・マネージャによって遂行される、請求項17に記載の方法。
  20. 前記ロジカル・プロセッサをオンラインに戻し、前記パーティション・マネージャに対するプログラム・コードを実行する第2ハードウェア・スレッドを使用して前記第1ハードウェア・スレッドを再活動化するステップを更に含む、請求項13に記載の方法。
  21. 前記ロジカル・プロセッサがアイドル・ループにおいて実行していることを検出するステップと、
    割り込みの表明に応答した前記第1ハードウェア・スレッドの再活動化を可能にする再活動化条件を指定するステップと、
    を更に含む、請求項19に記載の方法。
  22. 前記第1ハードウェア・スレッドに対して指定された前記再活動化条件に基づいて前記第1ハードウェア・スレッドを選択的に再活動化するステップは、割り込みの表明に応答して前記第1ハードウェア・スレッドを再活動化するステップを含み、
    前記ロジカル・プロセッサは受け取った前記割り込みを処理するように構成される、請求項21に記載の方法。
  23. 前記ロジカル・プロセッサが関連付けられたパーティションの状態を、前記ロジカル・プロセッサが前記アイドル・ループに入ったことに関連して保存するステップと、
    前記ロジカル・プロセッサが関連付けられたパーティションの状態を前記割り込みの表明に応答して復活するステップと、
    を更に含む、請求項22に記載の方法。
  24. 複数のハードウェア・スレッドの実行を支援するマルチスレッド・プロセッサを制御する方法であって、前記マルチスレッド・プロセッサはオペレーティング・システムを含むコンピュータに配置され、前記コンピュータは論理的にパーティション化されており、
    前記方法は、
    前記マルチスレッド・プロセッサによって実行される前記複数のハードウェア・スレッドのうちの第1ハードウェア・スレッドに対して再活動化条件を指定するステップであって、前記第1ハードウェア・スレッドは、1つのロジカル・プロセッサと関連付けられる、前記指定するステップと、
    前記第1ハードウェア・スレッドを非活動化するステップであって、前記第1ハードウェア・スレッドの非活動化は前記オペレーティング・システムによって遂行される、前記非活動化するステップと、
    前記第1ハードウェア・スレッドに対して指定された前記再活動化条件に基づいて前記第1ハードウェア・スレッドを選択的に再活動化するステップであって、前記再活動化条件の指定及び前記第1ハードウェア・スレッドの非活動化は前記オペレーティング・システムによって遂行される、前記再活動化するステップと、
    を含み、
    前記ロジカル・プロセッサをオフラインとみなし、それによって割り込みの表明に応答した前記第1ハードウェア・スレッドの再活動化を禁止する再活動化条件を指定するように、前記オペレーティング・システムが構成される、方法。
  25. 複数のハードウェア・スレッドの実行を支援するマルチスレッド・プロセッサを制御する方法であって、前記マルチスレッド・プロセッサはオペレーティング・システムを含むコンピュータに配置され、前記コンピュータは論理的にパーティション化されており、
    前記方法は、
    前記マルチスレッド・プロセッサによって実行される前記複数のハードウェア・スレッドのうちの第1ハードウェア・スレッドに対して再活動化条件を指定するステップであって、前記第1ハードウェア・スレッドは、1つのロジカル・プロセッサと関連付けられる、前記指定するステップと、
    前記第1ハードウェア・スレッドを非活動化するステップであって、前記第1ハードウェア・スレッドの非活動化は前記オペレーティング・システムによって遂行される、前記非活動化するステップと、
    前記第1ハードウェア・スレッドに対して指定された前記再活動化条件に基づいて前記第1ハードウェア・スレッドを選択的に再活動化するステップであって、前記再活動化条件の指定及び前記第1ハードウェア・スレッドの非活動化は前記オペレーティング・システムによって遂行される、前記再活動化するステップと、
    を含み、
    前記ロジカル・プロセッサがアイドル・ループに入ったことに応答して、割り込みの表明に応答した前記第1ハードウェア・スレッドの再活動化を許可する再活動化条件を指定するように前記オペレーティング・システムが構成される、方法。
  26. 論理的にパーティション化されたコンピュータにおけるマルチスレッド・プロセッサを制御するコンピュータ・プログラムであって、前記マルチスレッド・プロセッサは複数のハードウェア・スレッドの実行を支援し、前記論理的にパーティション化されたコンピュータは複数のパーティションと前記複数のパーティションを制御するパーティション・マネージャを含み、前記複数のハードウェア・スレッドのうちの第1ハードウェア・スレッドは前記複数のパーティションのうちの第1パーティションにあるロジカル・プロセッサに割り当てられ、コンピュータに、
    前記第1パーティションにおいて前記ロジカル・プロセッサをオフラインとみなし、それによって割り込みの表明に応答した前記第1ハードウェア・スレッドの再活動化を禁止すると共に前記第1ハードウェア・スレッドを非活動化するステップと、
    前記ロジカル・プロセッサがアイドル・ループに入ったことに応答して、割り込みの表明に応答した前記第1ハードウェア・スレッドの再活動化を可能にすると共に前記第1ハードウェア・スレッドを非活動化するステップと、
    を実行させる、コンピュータ・プログラム。
  27. 複数のハードウェア・スレッドの実行を支援するマルチスレッド・プロセッサを制御するコンピュータ・プログラムであって、コンピュータに、
    前記マルチスレッド・プロセッサによって実行される前記複数のハードウェア・スレッドのうちの第1ハードウェア・スレッドに対して再活動化条件を指定するステップであって、前記第1ハードウェア・スレッドは、前記複数のパーティションの1つにおいて実行中のロジカル・プロセッサと関連付けられる、前記指定するステップと、
    前記第1ハードウェア・スレッドを非活動化するステップと、
    前記第1ハードウェア・スレッドに対して指定された前記再活動化条件に基づいて前記第1ハードウェア・スレッドを選択的に再活動化するステップであって、前記再活動化条件は、一旦前記第1ハードウェア・スレッドが非活動化された場合に当該第1ハードウェア・スレッドを活動化し得る方法を決定する、前記再活動化するステップと、
    を実行させ、前記第1パーティションにおいて前記ロジカル・プロセッサをオフラインとみなし、それによって割り込みの表明に応答した前記第1ハードウェア・スレッドの再活動化を禁止する再活動化条件を指定するように、前記パーティション・マネージャが構成される、コンピュータ・プログラム。
  28. 複数のハードウェア・スレッドの実行を支援するマルチスレッド・プロセッサを制御するコンピュータ・プログラムであって、前記マルチスレッド・プロセッサはオペレーティング・システムを含むコンピュータに配置され、前記コンピュータは論理的にパーティション化されており、コンピュータに、
    前記マルチスレッド・プロセッサによって実行される前記複数のハードウェア・スレッドのうちの第1ハードウェア・スレッドに対して再活動化条件を指定するステップであって、前記第1ハードウェア・スレッドは、1つのロジカル・プロセッサと関連付けられる、前記指定するステップと、
    前記第1ハードウェア・スレッドを非活動化するステップであって、前記前記第1ハードウェア・スレッドの非活動化は前記オペレーティング・システムによって遂行される、前記非活動化するステップと、
    前記第1ハードウェア・スレッドに対して指定された前記再活動化条件に基づいて前記第1ハードウェア・スレッドを選択的に再活動化するステップであって、前記再活動化条件の指定及び前記第1ハードウェア・スレッドの非活動化は前記オペレーティング・システムによって遂行される、前記再活動化するステップと、
    を実行させ、前記ロジカル・プロセッサをオフラインとみなし、それによって割り込みの表明に応答した前記第1ハードウェア・スレッドの再活動化を禁止する再活動化条件を指定するように、前記オペレーティング・システムが構成される、コンピュータ・プログラム。
  29. 複数のハードウェア・スレッドの実行を支援するマルチスレッド・プロセッサを制御するコンピュータ・プログラムであって、前記マルチスレッド・プロセッサはオペレーティング・システムを含むコンピュータに配置され、前記コンピュータは論理的にパーティション化されており、コンピュータに、
    前記マルチスレッド・プロセッサによって実行される前記複数のハードウェア・スレッドのうちの第1ハードウェア・スレッドに対して再活動化条件を指定するステップであって、前記第1ハードウェア・スレッドは、1つのロジカル・プロセッサと関連付けられる、前記指定するステップと、
    前記第1ハードウェア・スレッドを非活動化するステップであって、前記第1ハードウェア・スレッドの非活動化は前記オペレーティング・システムによって遂行される、前記非活動化するステップと、
    前記第1ハードウェア・スレッドに対して指定された前記再活動化条件に基づいて前記第1ハードウェア・スレッドを選択的に再活動化するステップであって、前記再活動化条件の指定及び前記第1ハードウェア・スレッドの非活動化は前記オペレーティング・システムによって遂行される、前記再活動化するステップと、
    を実行させ、
    前記ロジカル・プロセッサがアイドル・ループに入ったことに応答して、割り込みの表明に応答した前記第1ハードウェア・スレッドの再活動化を許可する再活動化条件を指定するように前記オペレーティング・システムが構成される、コンピュータ・プログラム。
JP2004105481A 2003-04-24 2004-03-31 マルチスレッド・プロセッサを単一スレッド・モード及び同時マルチスレッド・モードの間で動的に切り替える装置及び方法 Expired - Fee Related JP3845639B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/422,682 US7496915B2 (en) 2003-04-24 2003-04-24 Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes

Publications (2)

Publication Number Publication Date
JP2004326749A JP2004326749A (ja) 2004-11-18
JP3845639B2 true JP3845639B2 (ja) 2006-11-15

Family

ID=33298957

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004105481A Expired - Fee Related JP3845639B2 (ja) 2003-04-24 2004-03-31 マルチスレッド・プロセッサを単一スレッド・モード及び同時マルチスレッド・モードの間で動的に切り替える装置及び方法

Country Status (4)

Country Link
US (2) US7496915B2 (ja)
JP (1) JP3845639B2 (ja)
KR (1) KR100745477B1 (ja)
CN (1) CN1306404C (ja)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7216223B2 (en) * 2004-04-30 2007-05-08 Hewlett-Packard Development Company, L.P. Configuring multi-thread status
JP4287799B2 (ja) * 2004-07-29 2009-07-01 富士通株式会社 プロセッサシステムおよびスレッド切り替え制御方法
US7913206B1 (en) * 2004-09-16 2011-03-22 Cadence Design Systems, Inc. Method and mechanism for performing partitioning of DRC operations
US20060080660A1 (en) * 2004-10-07 2006-04-13 Dell Products L.P. System and method for disabling the use of hyper-threading in the processor of a computer system
US7810083B2 (en) * 2004-12-30 2010-10-05 Intel Corporation Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
US7937616B2 (en) * 2005-06-28 2011-05-03 International Business Machines Corporation Cluster availability management
US7849466B2 (en) * 2005-07-12 2010-12-07 Qualcomm Incorporated Controlling execution mode of program threads by applying a mask to a control register in a multi-threaded processor
US7904852B1 (en) 2005-09-12 2011-03-08 Cadence Design Systems, Inc. Method and system for implementing parallel processing of electronic design automation tools
US7386647B2 (en) * 2005-10-14 2008-06-10 Dell Products L.P. System and method for processing an interrupt in a processor supporting multithread execution
US7624257B2 (en) * 2005-11-30 2009-11-24 International Business Machines Corporation Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads
US8448096B1 (en) 2006-06-30 2013-05-21 Cadence Design Systems, Inc. Method and system for parallel processing of IC design layouts
US7461241B2 (en) * 2006-07-31 2008-12-02 International Business Machines Corporation Concurrent physical processor reassignment method
US8032737B2 (en) 2006-08-14 2011-10-04 Marvell World Trade Ltd. Methods and apparatus for handling switching among threads within a multithread processor
US7698540B2 (en) * 2006-10-31 2010-04-13 Hewlett-Packard Development Company, L.P. Dynamic hardware multithreading and partitioned hardware multithreading
US8020155B2 (en) * 2006-11-28 2011-09-13 Oracle America, Inc. Mechanism for optimizing function execution
US8438370B1 (en) * 2006-12-08 2013-05-07 Nvidia Corporation Processing of loops with internal data dependencies using a parallel processor
US8219789B2 (en) * 2007-03-14 2012-07-10 XMOS Ltd. Interface processor
US8479208B2 (en) * 2007-03-30 2013-07-02 Intel Corporation System partitioning to present software as platform level functionality including mode logic to maintain and enforce partitioning in first and configure partitioning in second mode
US7840826B2 (en) * 2007-05-31 2010-11-23 Vns Portfolio Llc Method and apparatus for using port communications to switch processor modes
EP2423808B1 (en) * 2007-06-20 2014-05-14 Fujitsu Limited Arithmetic device
JP4907487B2 (ja) * 2007-10-24 2012-03-28 株式会社リコー 画像処理装置、画像処理方法及び該方法を実行させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体
US7559061B1 (en) * 2008-03-16 2009-07-07 International Business Machines Corporation Simultaneous multi-threading control monitor
JP5035299B2 (ja) * 2009-06-15 2012-09-26 株式会社日立製作所 マルチコアプロセッサ制御方法、その計算機システム、及び管理計算機のプログラム
US8615644B2 (en) * 2010-02-19 2013-12-24 International Business Machines Corporation Processor with hardware thread control logic indicating disable status when instructions accessing shared resources are completed for safe shared resource condition
US9047079B2 (en) 2010-02-19 2015-06-02 International Business Machines Corporation Indicating disabled thread to other threads when contending instructions complete execution to ensure safe shared resource condition
FR2957433B1 (fr) * 2010-03-11 2016-01-15 Bull Sas Procede de configuration d'un systeme informatique, programme d'ordinateur et systeme informatique correspondants
US8527866B2 (en) * 2010-04-30 2013-09-03 Microsoft Corporation Multi-threaded sort of data items in spreadsheet tables
US8695010B2 (en) 2011-10-03 2014-04-08 International Business Machines Corporation Privilege level aware processor hardware resource management facility
CN103049318B (zh) * 2011-10-11 2017-10-17 北京科银京成技术有限公司 分区操作系统的虚拟中断方法
CN106909444B (zh) * 2011-12-22 2021-01-12 英特尔公司 用于指定应用线程性能状态的指令的指令处理装置及相关方法
KR101867960B1 (ko) * 2012-01-05 2018-06-18 삼성전자주식회사 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법
US9069598B2 (en) 2012-01-06 2015-06-30 International Business Machines Corporation Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core
US8930950B2 (en) * 2012-01-19 2015-01-06 International Business Machines Corporation Management of migrating threads within a computing environment to transform multiple threading mode processors to single thread mode processors
US20130283280A1 (en) * 2012-04-20 2013-10-24 Qualcomm Incorporated Method to reduce multi-threaded processor power consumption
JP5894496B2 (ja) 2012-05-01 2016-03-30 ルネサスエレクトロニクス株式会社 半導体装置
US9003218B2 (en) 2012-05-21 2015-04-07 International Business Machines Corporation Power shifting in multicore platforms by varying SMT levels
US8806504B2 (en) * 2012-05-23 2014-08-12 Red Hat, Inc. Leveraging performance of resource aggressive applications
US9021493B2 (en) 2012-09-14 2015-04-28 International Business Machines Corporation Management of resources within a computing environment
US20150095614A1 (en) * 2013-09-27 2015-04-02 Bret L. Toll Apparatus and method for efficient migration of architectural state between processor cores
US9298516B2 (en) * 2013-10-01 2016-03-29 Globalfoundries Inc. Verification of dynamic logical partitioning
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US9916185B2 (en) * 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9921848B2 (en) * 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9804846B2 (en) * 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US9354883B2 (en) * 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
WO2015145664A1 (ja) * 2014-03-27 2015-10-01 株式会社日立製作所 リソース管理方法およびリソース管理システム
US9195493B2 (en) * 2014-03-27 2015-11-24 International Business Machines Corporation Dispatching multiple threads in a computer
CN105094747B (zh) * 2014-05-07 2018-12-04 阿里巴巴集团控股有限公司 基于smt的中央处理单元以及用于检测指令的数据相关性的装置
US9575802B2 (en) * 2014-10-28 2017-02-21 International Business Machines Corporation Controlling execution of threads in a multi-threaded processor
US11080064B2 (en) 2014-10-28 2021-08-03 International Business Machines Corporation Instructions controlling access to shared registers of a multi-threaded processor
GB2533415B (en) * 2014-12-19 2022-01-19 Advanced Risc Mach Ltd Apparatus with at least one resource having thread mode and transaction mode, and method
US10908909B2 (en) * 2015-06-09 2021-02-02 Optimum Semiconductor Technologies Inc. Processor with mode support
US9778951B2 (en) * 2015-10-16 2017-10-03 Qualcomm Incorporated Task signaling off a critical path of execution
US10108448B2 (en) 2015-10-27 2018-10-23 International Business Machines Corporation Dynamic SMT
US9753776B2 (en) 2015-12-01 2017-09-05 International Business Machines Corporation Simultaneous multithreading resource sharing
US10445133B2 (en) 2016-03-04 2019-10-15 Nxp Usa, Inc. Data processing system having dynamic thread control
JP6867754B2 (ja) * 2016-05-11 2021-05-12 コニカミノルタ株式会社 画像形成装置
CN106992007B (zh) * 2017-03-28 2020-07-28 百度在线网络技术(北京)有限公司 基于语音识别打分系统的数据处理方法和装置
US10713075B2 (en) * 2017-11-30 2020-07-14 International Business Machines Corporation Workload manager control of dynamic thread mode switch
CN108337295B (zh) * 2018-01-12 2022-09-23 青岛海尔智能家电科技有限公司 一种物联网通信方法、服务器及系统
US11579944B2 (en) * 2018-11-14 2023-02-14 Intel Corporation System, apparatus and method for configurable control of asymmetric multi-threading (SMT) on a per core basis

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0472861B1 (en) * 1990-08-31 1995-09-20 International Business Machines Corporation Method and apparatus for cross-partition control in a partitioned process environment
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5944816A (en) * 1996-05-17 1999-08-31 Advanced Micro Devices, Inc. Microprocessor configured to execute multiple threads including interrupt service routines
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US5907702A (en) * 1997-03-28 1999-05-25 International Business Machines Corporation Method and apparatus for decreasing thread switch latency in a multithread processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US6633916B2 (en) * 1998-06-10 2003-10-14 Hewlett-Packard Development Company, L.P. Method and apparatus for virtual resource handling in a multi-processor computer system
JP3546694B2 (ja) * 1998-03-31 2004-07-28 日本電気株式会社 マルチスレッド計算機システム及びマルチスレッド実行制御方法
US6308279B1 (en) * 1998-05-22 2001-10-23 Intel Corporation Method and apparatus for power mode transition in a multi-thread processor
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
US6427161B1 (en) * 1998-06-12 2002-07-30 International Business Machines Corporation Thread scheduling techniques for multithreaded servers
US6389449B1 (en) 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6567840B1 (en) * 1999-05-14 2003-05-20 Honeywell Inc. Task scheduling and message passing
US6691146B1 (en) * 1999-05-19 2004-02-10 International Business Machines Corporation Logical partition manager and method
US6668317B1 (en) * 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
US6546443B1 (en) * 1999-12-15 2003-04-08 Microsoft Corporation Concurrency-safe reader-writer lock with time out support
US6931641B1 (en) * 2000-04-04 2005-08-16 International Business Machines Corporation Controller for multiple instruction thread processors
US6681345B1 (en) 2000-08-15 2004-01-20 International Business Machines Corporation Field protection against thread loss in a multithreaded computer processor
US6711700B2 (en) * 2001-04-23 2004-03-23 International Business Machines Corporation Method and apparatus to monitor the run state of a multi-partitioned computer system
US7752423B2 (en) * 2001-06-28 2010-07-06 Intel Corporation Avoiding execution of instructions in a second processor by committing results obtained from speculative execution of the instructions in a first processor
US6816977B2 (en) * 2001-12-03 2004-11-09 Hewlett-Packard Development Company, L.P. Power reduction in computing devices using micro-sleep intervals
US20030126416A1 (en) 2001-12-31 2003-07-03 Marr Deborah T. Suspending execution of a thread in a multi-threaded processor
US7043729B2 (en) * 2002-08-08 2006-05-09 Phoenix Technologies Ltd. Reducing interrupt latency while polling
US6971103B2 (en) * 2002-10-15 2005-11-29 Sandbridge Technologies, Inc. Inter-thread communications using shared interrupt register
US7152169B2 (en) * 2002-11-29 2006-12-19 Intel Corporation Method for providing power management on multi-threaded processor by using SMM mode to place a physical processor into lower power state
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
US7328438B2 (en) * 2003-03-27 2008-02-05 International Business Machines Corporation Deallocation of computer data in a multithreaded computer

Also Published As

Publication number Publication date
CN1306404C (zh) 2007-03-21
KR100745477B1 (ko) 2007-08-02
JP2004326749A (ja) 2004-11-18
KR20040092399A (ko) 2004-11-03
US7496915B2 (en) 2009-02-24
US20040215939A1 (en) 2004-10-28
US8458709B2 (en) 2013-06-04
US20090144737A1 (en) 2009-06-04
CN1540508A (zh) 2004-10-27

Similar Documents

Publication Publication Date Title
JP3845639B2 (ja) マルチスレッド・プロセッサを単一スレッド・モード及び同時マルチスレッド・モードの間で動的に切り替える装置及び方法
US7426657B2 (en) System and method for predictive processor failure recovery
EP0662652B1 (en) Method and apparatus for reducing power consumption in a computer system
KR100724507B1 (ko) 논리 파티션 데이터 처리 시스템에서 전력 소비를 감소시키는 방법 및 장치
US6467007B1 (en) Processor reset generated via memory access interrupt
EP0794492B1 (en) Distributed execution of mode mismatched commands in multiprocessor computer systems
US7251814B2 (en) Yield on multithreaded processors
US7219241B2 (en) Method for managing virtual and actual performance states of logical processors in a multithreaded processor using system management mode
JP4056471B2 (ja) プロセッサに譲渡するためのシステム
US8495267B2 (en) Managing shared computer memory using multiple interrupts
CN101634884B (zh) 电源管理控制器与方法
US20070162640A1 (en) Method and system for efficient context swapping
JPH0695769A (ja) コンピュータシステムのシステムイメージをセーブする方法及びこの方法を実施するコンピュータシステム
JPH11202988A (ja) システム消費電力制御方法
JPH07311749A (ja) マルチプロセッサシステム及びカーネル置換方法
Humphries et al. A case against (most) context switches
JP5131269B2 (ja) マルチプロセッシングシステム
US20220318053A1 (en) Method of supporting persistence and computing device
US8886917B1 (en) Switching to core executing OS like codes upon system call reading greater than predetermined amount of data
JP5085611B2 (ja) 実環境と仮想環境を遷移させるコンピュータ・プログラム
JP3961669B2 (ja) コンピュータシステムおよびデータ転送制御方法
CN108845969B (zh) 适用于不完全对称多处理微控制器的操作控制方法及操作系统
JPH11102238A (ja) コンピュータシステムおよびそのシステムにおけるサスペンド制御方法
KR20220138324A (ko) 지속성 지원 방법 및 컴퓨팅 장치
JP2003345474A (ja) コンピュータシステムおよびデータ転送制御方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060322

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060616

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060616

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20060616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060619

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060803

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060803

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20060803

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060821

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090825

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100825

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100825

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110825

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120825

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130825

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees