JP2017513111A - マルチスレッディング・コンピュータ・システムにおけるスレッド・コンテキスト保存のためのコンピュータ・システム、コンピュータ実装方法およびコンピュータ・プログラム製品 - Google Patents

マルチスレッディング・コンピュータ・システムにおけるスレッド・コンテキスト保存のためのコンピュータ・システム、コンピュータ実装方法およびコンピュータ・プログラム製品 Download PDF

Info

Publication number
JP2017513111A
JP2017513111A JP2016557108A JP2016557108A JP2017513111A JP 2017513111 A JP2017513111 A JP 2017513111A JP 2016557108 A JP2016557108 A JP 2016557108A JP 2016557108 A JP2016557108 A JP 2016557108A JP 2017513111 A JP2017513111 A JP 2017513111A
Authority
JP
Japan
Prior art keywords
mode
thread
program
register
core
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.)
Granted
Application number
JP2016557108A
Other languages
English (en)
Other versions
JP6509245B2 (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 JP2017513111A publication Critical patent/JP2017513111A/ja
Application granted granted Critical
Publication of JP6509245B2 publication Critical patent/JP6509245B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/463Program control block organisation

Abstract

【課題】マルチスレッディング・コンピュータ・システムにおけるスレッド・コンテキスト保存のためのコンピュータ・システム、コンピュータ実装方法およびコンピュータ・プログラム製品を提供する。【解決手段】一態様によると、コンピュータ・システムが、シングル・スレッド(ST)モードとマルチスレッディング(MT)モードとの間で切換え構成可能なコアを備える構成を含む。STモードは一次スレッドを扱い、MTモードは一次スレッドと1つまたは複数の二次スレッドとを扱う。コンピュータ・システムは、方法を実行するために構成の利用を制御するように構成されたマルチスレッディング機構も含む。MTを無効化するというMTモードのコアによる判断に基づき、MTモードがSTモードに切り替わり、MTモードの一次スレッドがSTモードの一次スレッドとして維持される。1つまたは複数の二次スレッドのスレッド・コンテキストに、プログラムがアクセスできないようにされる。この切換えに基づき、プログラム・アクセス可能レジスタ値をクリアするか、またはプログラム・アクセス可能レジスタ値を保持するかのうちのいずれか一方が実行される。【選択図】図14

Description

本発明は、一般には複数のスレッドをサポートするコンピュータ・システムに関し、より詳細には、マルチスレッディング・コンピュータ・システムにおけるスレッド・コンテキスト保存に関する。
最近数十年でコンピュータ・システムのプロセッサ速度は高速化しているが、このようなコンピュータ・システムのメモリへのアクセス速度はそれに応じて高速化はしていない。したがって、プロセッサのサイクル時間が速いほど、メモリからのデータ・フェッチ待ち遅延が顕著になる。このような遅延の影響は、様々なレベルのキャッシングによって軽減され、さらに最近のプロセッサではマルチスレッディング(MT)によって軽減されてきた。
MTは、プロセッサの様々なコア資源をスレッドと呼ばれる複数の命令ストリームが共用できるようにする。コア資源は、実行ユニット、キャッシュ、トランスレーション・ルックアサイド・バッファ(TLB)などを含むことができ、これらは一般にコアと総称されることがある。1つのスレッドにおけるキャッシュ・ミスまたはその他の遅延によって生じるレイテンシ中に、1つまたは複数の他のスレッドがコア資源を使用することができ、これによりコア資源の利用率が高くなる。スーパースカラー・プロセッサ同時マルチスレッディング(SMT)実装形態では、複数のスレッドに1つまたは複数のコアのコア資源によって同時に対応することができる。
「z/Architecture Principles ofOperation」(IBM Publication No.SA22-7832-09、2012年8月)
現在のハードウェア・プラットフォームでは、MTは、典型的には、MTハードウェア上で稼働するオペレーティング・システム(OS)には透過な方式で実装される。この特徴の1つの側面は、OSがMTハードウェアを利用するための変更を必要としないことである。しかし、OSに関して透過なMT動作によって、応答時間、容量プロビジョニング、容量プランニング、およびビリングの変動性が大きくなることがある。この変動性は、OSのタスクがコアの排他的制御権を持っているか、またはOSのタスクがコアを共用するスレッドとして実行中であるかがOSにはわからないために生じる場合がある。設計上、MT対応ハードウェア上のメモリ多用ワークロードのための最大容量は、コアの使用時に平均スレッド密度が高いときに達成可能である。MTによって生じるキャッシュ利用の増加により、追加容量が生じることがある。OSが、使用コアの高平均スレッド密度を一定して維持しない場合、MTによって生じる追加の処理能力全体を利用することができなくなる。例えば、低演算処理使用率のときにハードウェアが1コアにつき1つのMTスレッドを実行し、高演算処理使用率のときに高いスレッド密度で実行する場合、ワークロードにどれだけの合計MT演算処理容量が利用可能であるかを判断するのはきわめて困難な場合がある。容量に関して前述したのと同様にして、MTスレッド利用におけるこのハードウェアの変動性の結果、トランザクション応答時間とビリングの両方に変動性が生じる可能性がある。
実施形態には、マルチスレッディング・コンピュータ・システムにおけるスレッド・コンテキスト保存のためのシステム、方法、およびコンピュータ・プログラム製品が含まれる。一態様によると、コンピュータ・システムは、シングル・スレッド(ST)モードとマルチスレッディング(MT)モードとを切換え構成可能なコアを備えた構成を含む。STモードは一次スレッドを扱い、MTモードは一次スレッドとコアの共用資源上の1つまたは複数の二次スレッドとを扱う。コンピュータ・システムは、方法を実行するために構成の利用を制御するように構成されたマルチスレッディング機能も含む。MTを無効化するというMTモードのコアによる判断に基づき、MTモードがSTモードに切り替わり、MTモードの一次スレッドがSTモードの一次スレッドとして保持される。1つまたは複数の二次スレッドのプログラム・アクセス可能なレジスタ値およびプログラム・カウンタ値を含むスレッド・コンテキストに、プログラムがアクセスすることができないようにする。この切換えに基づき、プログラム・アクセス可能レジスタ値をクリアするか、またはプログラム・アクセス可能値を保持するかのいずれか一方が実行される。
他の態様によると、STモードとMTモードとの間で切換え構成可能なコアを含む構成におけるスレッド・コンテキスト保存のためのコンピュータ実装方法であって、STモードは一次スレッドを扱い、MTモードは一次スレッドとコアの共用資源上の1つまたは複数の二次スレッドとを扱う。MTを無効化するというMTモードのコアによる判断に基づき、MTモードからSTモードへの切換えが行われ、MTモードの一次スレッドはSTモードの一次スレッドとして保持される。1つまたは複数の二次スレッドのプログラム・アクセス可能レジスタ値およびプログラム・カウンタ値を含むスレッド・コンテキストに、プログラムがアクセスすることができないようにする。この切換えに基づき、プログラム・アクセス可能レジスタ値をクリアするか、またはプログラム・アクセス可能レジスタ値を保持するかのいずれか一方が行われる。
さらに他の態様は、構成におけるスレッド・コンテキスト保存のためのコンピュータ・プログラム製品を含む。この構成は、STモードとMTモードとの間で切換え構成可能なコアを含み、STモードは一次スレッドを扱い、MTモードは一次スレッドとコアの共用資源上の1つまたは複数の二次スレッドとを扱う。このコンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、このコンピュータ可読記憶媒体は信号ではない。プログラム命令は、処理回路に方法を実行させるように処理回路によって読取り可能である。MTを無効化するというMTモードのコアによる判断に基づき、MTモードがSTモードに切り替わり、MTモードの一次スレッドがSTモードの一次スレッドとして保持される。1つまたは複数の二次スレッドのプログラム・アクセス可能レジスタ値およびプログラム・カウンタ値を含むスレッド・コンテキストに、プログラムがアクセスすることができないようにする。この切換えに基づき、プログラム・アクセス可能レジスタ値をクリアするか、またはプログラム・アクセス可能レジスタ値を保持するかのうちのいずれか一方が行われる。
実施形態とみなされる主題は、添付の特許請求の範囲で具体的に示され、明確に請求されている。実施形態の前記およびその他の特徴および利点は、以下の詳細な説明を添付図面と共に読めば明らかになる。
一実施形態により実施可能なコンピューティング環境を示す図である。 一実施形態により実施可能なコンピューティング環境を示す図である。 一実施形態により実施可能なコアの処理回路を示す図である。 一実施形態により実施可能なコンピューティング環境を示す図である。 一実施形態により実施可能なコンピューティング環境におけるハイパーバイザ・コンテキスト保持を示す図である。 一実施形態によるマルチスレッディングの動的有効化処理の流れを示す図である。 一実施形態によるCPUアドレス拡張処理の一例を示す図である。 一実施形態によるCPUアドレス縮小処理の一例を示す図である。 一実施形態によるマルチスレッディング設定命令(order)の処理の流れを示す図である。 一実施形態によるマルチスレッディング機能情報の格納の一例を示す図である。 一実施形態によるマルチスレッディング機能を判断するための処理の流れを示す図である。 一実施形態による様々なスレッド・コンテキスト記憶場所の一例を示す図である。 一実施形態によるマルチスレッディング・レジスタ保存の一例を示す図である。 一実施形態によるマルチスレッディング・レジスタ保存処理の流れを示す図である。 一実施形態によるマルチスレッディング・レジスタ復元の一例を示す図である。 一実施形態によるマルチスレッディング・レジスタ復元処理の流れを示す図である。 一実施形態によるコンピュータ可読媒体を示す図である。
例示の実施形態は、シングル・スレッド動作モードとマルチスレッディング動作モードとをサポートするコンピュータ・システムにおけるマルチスレッディング動作を提供する。本明細書では、論理スレッドとは、単一の命令ストリームとそれに関連づけられた状態とを指す。すなわち、アーキテクチャ・レベルでは、各論理スレッドは、独立した中央演算処理装置(CPU)またはプロセッサを表す。ハードウェア・レベルでは、スレッドは、そのスレッドがディスパッチされる際の、ゲスト状態の維持と組み合わされた論理スレッドに関連づけられた命令ストリームの実行である。したがって、本明細書では「スレッド」という用語と「CPU」という用語は交換可能に使用される場合がある。
例示の一実施形態では、CPUは命令実行、割込み動作、タイミング機能、初期プログラム・ロード、およびその他のマシン関連機能のための、順序付けおよび処理機構を備える。CPUは、基礎となる様々な物理実装形態に対応付け可能な論理機能を定義する。CPUは、命令を実行する際に、固定長の2進整数および浮動小数点数(例えば2進数、10進数および16進数)、可変長の10進整数、および固定長または可変長の論理情報を処理することができる。処理は、並列または順次処理とすることができる。処理要素の幅、シフト・パスの多重度、異なる種類の演算処理における同時度は、CPUのモデルごとに異なる場合があるが、論理的結果には影響を及ぼさない。
CPUが実行する命令は、汎用命令、浮動小数点サポート(FPS)命令、2進浮動小数点(BFP)命令、10進浮動小数点(DFP)命令、16進浮動小数点(HFP)命令、制御命令、およびI/O命令など、複数の命令クラスを含むことができる。汎用命令は、2進整数算術演算および論理演算、分岐演算およびその他の非算術演算の実行に使用することができる。10進命令は10進形式のデータに対して作用する。BFP、DFPおよびHFP命令は、それぞれ、BFP、DFPおよびHFP形式のデータに対して作用し、FPS命令は、形式とは独立した浮動小数点データに対して作用するか、またはある形式から別の形式に変換する。適切な権限付与機構に従い、CPUがスーパバイザ状態のときに、特権制御命令およびI/O命令を実行することができ、問題状態のときに準特権制御命令を実行することができる。
CPUは、プログラムにとって利用可能であるが主記憶装置でアドレス指定可能表現を持たないレジスタを提供する。レジスタは、例えば、現在のプログラム状態ワード(PSW)と、汎用レジスタと、浮動小数点レジスタおよび浮動小数点制御レジスタと、ベクトル・レジスタと、制御レジスタと、アクセス・レジスタと、プレフィックス・レジスタと、時刻(TOD)プログラマブル・レジスタと、クロック比較器およびCPUタイマ用レジスタとを含み得る。このレジスタの集合を、CPUのアーキテクテッド・レジスタ・コンテキストと呼ぶ場合がある。構成内の各CPUは、TODクロックへのアクセスを行わせることができ、TODクロックは構成内のすべてのCPUが共用することができる。命令演算コードにより、ある演算でどの種類のレジスタを使用するかを決定することができる。
各CPUは、CPUが機能および機構の全装備を提供するか(例えば汎用CPU)、または特殊なタイプのワークロードの処理向けであるか(例えば特殊CPU)を示すタイプ属性を有することができる。一次CPUは、汎用CPUまたは、最後の初期プログラム・ロード(IPL)動作の後に起動されるCPU(IPL CPU)と同じタイプを有するCPUである。二次CPUは、IPL CPUとは異なるCPUタイプを有する汎用CPU以外のCPUである。
サポートするアーキテクチャを実装するコンピュータ・システム上では、マルチスレッディング機構が利用可能な場合がある。マルチスレッディング機構はマルチスレッディングのサポートを提供して、CPUとも呼ばれることがあるコアを共用するスレッドのグループを可能にする。マルチスレッディング機構が有効化されている場合、コア内のCPUは、実行ユニットまたはキャッシュなどの特定のハードウェア資源を共用することができる。コア内の1つのCPUが、ハードウェア資源を待っている場合(典型的にはメモリアクセスを待っている間)、共用資源を遊休状態にしておくのではなく、そのコア内の他のCPUが共用資源を利用することができる。マルチスレッディング機構がインストールされ有効化されている場合、スレッドはコアに属するCPUと同義である。マルチスレッディング機構がインストールされていない場合、またはマルチスレッディング機構がインストールされているが有効化されていない場合、コアは単一のCPUまたはスレッドを含む。
マルチスレッディング機構がインストールされている場合、マルチスレッディング設定シグナル・プロセッサ(SIGP)命令(order)の実行により、マルチスレッディング機構を有効化することができる。例示の一実施形態では、マルチスレッディング機構が有効化されている場合、構成内のCPUの数が倍数だけ増加し、倍数の値はプログラム指定最大スレッド識別情報(PSMTID)によって決まる。コア内のCPUの数は、PSMTIDより多い場合もある。この倍数に対応する数のCPUが1つのコアにグループ化される。構成内の同じCPUタイプの各コアは、同じ数のCPUを有することができる。コア内の各CPUは同じCPUタイプである。ただし、モデルおよびCPUタイプによって、コア内のいくつかのCPUが動作状態でない場合がある。
例示の一実施形態では、オペレーティング・システム(OS)が管理する構成がマルチスレッディングを使用することができるようにするために、OSなどの制御プログラムがマルチスレッディングを明示的に有効化する。あるいは、ハイパーバイザが、マルチスレッディングを有効化することができ、ハイパーバイザのゲストおよびそれらゲストのアプリケーションが透過的に恩恵を受けることができる。アプリケーション・プログラムは一般に、マルチスレッディングが有効化されたか否かを認識しない。マルチスレッディングが有効化されると、構成内のすべてのCPUのCPUアドレスが、アドレスの左端ビットにコア識別情報(またはコアID)を含み、アドレスの右端ビットにスレッド識別情報(スレッドIDまたはTID)を含むように調整される。コアIDは、コア・アドレス値とも呼ぶことがあり、TIDはスレッド・アドレス値とも呼ぶことがある。コア内のCPUは、実行ユニットまたは低次キャッシュなどの特定のハードウェア機構を共有することができ、したがって、コアのあるCPU内での実行がそのコア内の他のCPUのパフォーマンスに影響を及ぼすことがある。
構成の1つまたは複数のコアをシングル・スレッド・モードとマルチスレッディング・モードとの間で動的に切り換えることに伴う変更を管理するために、いくつかのサポート機能が備えられる。マルチスレッディングをサポートしないプログラムとの互換性を維持するために、シングル・スレッド・モードを、リセット時または非活動化時のデフォルト・モードとしてもよい。実施形態の例としては、マルチスレッディング・モードからシングル・スレッド・モードへの移行後のスレッド・コンテキストの分析または復元あるいはその両方をサポートするために、マルチスレッディング・モードからのスレッド・コンテキストの保存、伝達、および復元を行う機能がある。
例示の一実施形態によって実装可能なコンピューティング環境は、例えば米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションが提供するz/Architectureに基づくことができる。z/Architectureは、「z/Architecture Principles of Operation」(IBMPublication No.SA22-7832-09、2012年8月)という名称のIBM(R)刊行物に記載されている。一例では、z/Architectureに基づくコンピューティング環境は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションが提供するeServer zSeriesを含む。コンピューティング環境は、例えば1つまたは複数のコア(例えばプロセッサコア)を備える1つまたは複数の区画(例えば論理区画)を備えたプロセッサ複合体と、本明細書で詳述するような1つまたは複数のレベルのハイパーバイザとを含み得る。
図1に、マルチスレッディング(MT)をサポートするコンピューティング環境の一例として、コンピュータ・システム100を示す。図1の例では、コンピュータ・システム100は、複数のプロセッサ・コア102と、入出力(I/O)サブシステム104と、システム・メモリ106とを含む。入出力サブシステム104は、当技術分野で周知のI/O装置へのアクセスを提供することができる。プロセッサ・コア102は、本明細書では単に「コア」とも呼び、サポート要素を備えた処理回路を含み得る。図1の例では、5個のコア102が、コア1 110、コア2 120、コア3 130、コア4 140、コア5 150として図示されている。ただし、これより多いかまたは少ない数のコア102も企図される。MT機構103は、各コア102のそれぞれのハードウェア構成要素であってよい。この例では、コア102のそれぞれは、最大4個のスレッドをサポートすることができる。例えば、コア1 110は、スレッド111、112、113および114をサポートすることができる。コア2 120は、スレッド121、122、123、および124をサポートすることができる。コア3 130は、スレッド131、132、133および134をサポートすることができる。コア4 140は、スレッド141、142、143および144をサポートすることができる。コア5 105は、スレッド151、152、153および154をサポートすることができる。なお、任意の時点において各CPU102の4個のスレッドすべてが動作状態であるとは限らない。例えば、コア3 130では、スレッド131と132が動作状態であってよく、スレッド133と134は動作状態にすることが可能である(陰影付きで図示)。
図1には、コンピュータ・システム100のシステム・メモリ160も図示されており、システム・メモリ160の各部は論理区画1(LPAR1)170、LPAR2 180、およびLPAR3 190に割り当てられている。LPAR 170、180、190は、Linux(TM)またはIBM(R)z/OS(TM)、z/VM、またはzTPFオペレーティング・システムなどのオペレーティング・システムを実行することができる仮想コンピューティングシステム(構成とも呼ばれる)を表す。図1は、LPAR170、180および190へのコア102の割当ても示す。この図では、コア1 110とコア2 120とがLPAR1 170専用とされている。コア3 130はLPAR2 180専用とされ、コア5 150はLPAR3 190専用とされている。コア4 140はLPAR2 180とLPAR3 190との間で共用することができるが、図1ではLPAR2 180に割り当てられているものとして示されている。LPAR3 190は、この区画によって使用されているコア102の2つの異なるタイプの例を示し、コア4 140は、複数のスレッドを動作させることができるが、コア5 150はこの例では複数のスレッドを動作させることはできない。図1の例では、LPAR1 170はOS171と、プログラム172、173、174および175とに処理資源を提供する。LPAR2 180は、OS181と、プログラム182、183および184とに処理資源を提供する。LPAR4 190はOS191と、プログラム192および193とに処理資源を提供する。
LPARで実行されているオペレーティング・システムの制御下で、コアのスレッド上でプログラムが実行される。例示の一実施形態では、個々のスレッドは一度に1つのプログラムのみを実行する。ただし、リエントラントするように設計されているプログラムは、同時に複数のスレッドまたはコア上で実行してよい。例えば、LPAR1 170のOS171のプログラム172は、コア1 110のスレッド111および113上と、コア2 120のスレッド121および124とで実行することができる。OSの制御下で、ディスパッチ規則およびサービス品質契約に従って同一または異なるスレッド上に異なるプログラムをディスパッチすることができる。
システム・メモリ160には、例えばミリコード162およびLPARハイパーバイザ163を含む、様々なレベルのファームウェアが常駐する。ミリコード162は、低レベルのシステム機能をサポートするようにファームウェアとして実施することができる。LPARハイパーバイザ163は、例えば、IBM Processor−Resource/System Manager(TM)(PR/SM(TM))など、ライセンス供与された内部コードであってもよい。LPARハイパーバイザ163は、LPAR 170、180、190を設定することができ、コア102上でのディスパッチを管理してもよい。コンピュータにMT機構103がインストールされている場合、ミリコード162およびLPARハイパーバイザ163は、それぞれ、MT機構サポート・コード164および165も含む。MTをサポートするための論理をミリコード162とLPARハイパーバイザ163とコア102とに分散させることができるため、MT機構サポート・コード164および165は、MT機構103の一部とみなすことができる。図示されていないが、OS171、181、191のそれぞれは、それぞれのLPAR170、180、190においてMTを有効化し利用するために、MT機構サポート・コードも含むことができる。
図2に、図2のコンピューティング環境ではコア4 140に現在、LPAR2 180ではなくLPAR3 190が割り当てられている点を除き、図1と同様のコンピューティング・システムを示す。また、スレッド143および144が動作状態となっていない図1とは異なり、図2では、コア4 140上にLPAR3 190がディスパッチされている場合、4個のスレッド141〜144がすべて現在、動作状態である。コア102上でのLPARのディスパッチとディスパッチ解除とは動的に行われ、またある時点には他のLPAR(図示せず)が同じコア102上で動作していてもよい。
次に図3を参照すると、一実施形態により、図1および図2におけるコア102のうちの1つなどの処理コアを実装するための処理回路200のブロック図が、概略的に示されている。処理回路200は、MT環境で1つまたは複数のスレッドを同時にサポートすることができる処理回路の一例である。図3に示す処理回路200は、処理回路200を他のプロセッサおよび周辺装置に接続することができるシステム・コントローラ・インターフェース・ユニット202を含む。システム・コントローラ・インターフェース・ユニット202は、データ値の読出しと格納を行うDキャッシュ204と、プログラム命令を読み出すIキャッシュ208と、キャッシュ・インターフェース・ユニット206とを外部のメモリ、プロセッサおよびその他の周辺装置に接続することもできる。
Iキャッシュ208は、命令をプリフェッチする命令フェッチ・ユニット(IFU)210と連係して命令ストリームのロードを行うことができ、投機的ロード機能および分岐予測機能を備えてもよい。フェッチされた命令は、命令処理データにデコードするために、命令デコード・ユニット(IDU)212に供給することができる。
IDU212は、汎用演算を実行するための1つまたは複数の固定小数点ユニット(FXU)216、浮動小数点演算を実行するための浮動小数点ユニット(FPU)218などの様々な実行ユニットへの命令の発行を制御することができる発行ユニット214に、命令を供給することができる。FPU218は、2進浮動小数点ユニット(BFU)220、10進浮動小数点ユニット(DFU)222、またはその他の浮動小数点ユニットを含むことができる。発行ユニット214は、1つまたは複数のロード・ストア・ユニット(LSU)パイプラインを介して1つまたは複数のLSU228にも接続することができる。複数のLSUパイプラインは、ロードおよび格納と、分岐のためのアドレス生成とを行うための実行ユニットとして扱われる。LSU228とIFU210は両方とも、オペランドおよび命令アドレスのバッファ変換を行うためにトランスレーション・ルックアサイド・バッファ(TLB)230を利用することができる。
FXU216およびFPU218は、汎用レジスタ(GPR)224および浮動小数点レジスタ(FPR)226などの様々な資源に接続することができる。GPR224およびFPR226は、LSU228によってDキャッシュ204からロードおよび格納されたデータ値のためのデータ値ストレージを提供する。
処理回路200は、システム時間基準生成および診断動作をサポートするために、カウンタまたはタイマ250あるいはその両方も含むことができる。例えば、カウンタまたはタイマ250あるいはその両方は、時刻と、様々な診断機能および測定機能とをサポートするために使用してもよい。
次に、図4を参照すると、図4ではコンピュータ・システム100のLPAR2 180において第2レベル・ハイパーバイザ300が実行されている点を除き図1に類似したコンピューティング環境が図示されている。第2レベル・ハイパーバイザ300、例えばIBM z/VMオペレーティング・システムは、LPAR(第1レベル)ハイパーバイザ163によって提供されるMTサポート・コード165に類似したMTサポート・コード301を含む。第2レベル・ハイパーバイザ300は、ゲスト・オペレーティング・システム311、321および331がそれぞれ動作する複数の仮想マシン310、320および330(構成とも呼ぶ)のサポートを提供する。ゲスト・オペレーティング・システム311、321および331は、例えばLinux(TM)、またはIBM(R)z/OS(TM)、z/VM、またはz/TPF OSを含んでよく、またはIBM会話型モニタ・システム(CMS)などのゲスト開発環境を含んでもよい。各ゲストOS311、321および331は、マルチスレッディングを有効化してもしなくてもよく、その場合、第2レベル・ハイパーバイザ300は、第2レベル・ハイパーバイザ300が動作するLPAR2 180にとって利用可能な物理処理資源(コア130、140およびスレッド131〜134、141〜144)を使用して、ゲストOS311、321、331および付随するプログラム312、313、322、323、332および333のディスパッチを行う役割を果たしてもよい。様々な仮想マシン310、320、330のプログラム312、322、323、332、333は、それぞれのゲストOS311、321および331にとって利用可能なスレッド131〜134、141〜144上で実行することができる。第2レベル・ハイパーバイザ300がマルチスレッディングを利用する場合、ゲストOS311、321および331は、MTから透過的に恩恵を受けることができるため、MTサポート・コードを含む必要がない。
次に図5を参照すると、一実施形態により実装可能なコンピューティング環境におけるハイパーバイザ・コンテキスト保持の一例が図示されている。図5の例では、図1および図2のLPARハイパーバイザ163内にいくつかのサポート構造体が図示されている。例えば、構造体410は、図1に示すように物理スレッド111、112、113、114、121、122、123、124上で現在稼働している論理スレッド411、412、413、414、421、422、423、424のためのアーキテクテッド・レジスタ・コンテキスト(すなわちスレッド・コンテキスト)を格納する状態記述ブロックとサテライト・ブロックとを含む、図1のLPAR1 170をサポートすることができる。これらの論理スレッドがディスパッチされている間、物理スレッドはこれらのスレッドの現在のアーキテクテッド・レジスタ・コンテキストを保持する。ディスパッチされなくなると、このアーキテクテッド・レジスタ・コンテキストは、状態記述ブロックおよびサテライト・ブロックに保持されることになる。構造体430は、図1に示すように物理スレッド131、132、141、142上で現在稼働している論理スレッド431、432、441、442のためのアーキテクテッド・レジスタ・コンテキストを格納する状態記述ブロックおよびサテライト・ブロックを含む、図1のLPAR2 180をサポートすることができる。構造体450は、図1に示すように物理スレッド151上で現在稼働している論理スレッド451のためのアーキテクテッド・レジスタ・コンテキストを格納する状態記述ブロックとサテライト・ブロックとを含む、図1のLPAR3 190をサポートすることができる。また、構造体450は、物理プロセッサ(陰影付きで示す)上に現在ディスパッチされていない論理スレッド461、462、463および464のためのアーキテクテッド・レジスタ・コンテキストを格納する状態記述ブロックおよびサテライト・ブロックも含む。論理スレッド471、472、473および474のための状態記述ブロックおよびサテライト構造体を含むLPAR A(図1には図示せず)のための構造体470など、物理コア上でディスパッチされないLPARをサポートする他の構造体も、LPARハイパーバイザ163によって保持することができる。さらに他の構造体の例としては、論理スレッド481および482のための状態記述ブロックおよびサテライト・ブロックを含むディスパッチされていないLPAR B(図1には図示せず)をサポートする構造体480と、論理スレッド485のためのディスパッチされないLPAR Cのための構造体484とがある。
図5の例ではいくつかの構造体が図示されているが、マルチスレッディングを管理するために追加の構造体もLPARハイパーバイザ163およびコンピュータ・システム100内の他の場所でサポートすることができることがわかるであろう。例えば、図4の仮想マシン310、320、330のマルチスレッディングをサポートするための構造体を、図4の第2レベル・ハイパーバイザ300によって保持することができる。
次に図6を参照すると、一実施形態によるマルチスレッディングの動的有効化のための処理の流れ500が図示されている。ブロック502で、一次スレッドがシングル・スレッド(ST)モードで実行される。ブロック504で、マルチスレッディング(MT)モード設定命令がSTモードでフェッチされる。505にまとめて示すようにこの命令を実行する際、MTモード設定命令によって指定された記憶場所から、要求されるスレッドの数がブロック506で取得される。この記憶場所は、MTモード設定命令を発行するときにパラメータ・レジスタによって指定することができる。MTモード設定命令は、MT設定命令(order)と、要求スレッド数に関連づけられたプログラム指定最大スレッドid(PSMTID)とを含む、シグナル・プロセッサ(SIGP)命令とすることができる。SIGP命令のMT設定命令(order)に付随する処理の一例については、本明細書で図9を参照しながら詳述する。
処理500の説明を続けると、ブロック508で、要求スレッド数が複数スレッドを示しているか否かが判断される。例えば、複数スレッドは1より大きい値によって示すことができる。値ゼロが単一スレッドを示す実施形態では、値1または1より大きい値によって複数スレッドを示すことができる。要求スレッド数が複数スレッドを示していないとの判断に基づいて、ブロック510でコアはSTモードのままとなり、MT設定モード命令の実行は完了し、ブロック502に制御が戻る。要求スレッド数が複数スレッドを示しているとの判断に基づいて、ブロック512でMTモードが有効化され、MT設定モード命令の実行は完了する。ブロック514で、一次スレッドと1つまたは複数の二次スレッドとを含む複数スレッドが実行される。ブロック516で、リセットまたは非活動化が行われない場合、処理500はブロック514にループバックする。それ以外の場合、ブロック518で、STモードに復帰する構成のリセットまたは非活動化に基づき、MTモードが無効化される。MTモードの無効化の一部として、非クリア・リセットの場合はスレッド数(PSMTID)が保持され、クリア・リセットの場合はスレッド数(PSMTID)がゼロにされる。処理500はブロック502に戻る。
通常ロード(load-normal)、ダンプありロード(load-with-dump)、ロード・クリア(load-clear)、またはロード・クリア・リスト指示(load-clear-list-directed)キーが起動されると、CPUはロード状態になる。チャネル・コマンド・ワード(CCW)タイプの初期プログラム・ロード動作が正常に完了した場合、CPUはロード状態から動作状態に移行する。
装置チェック標識とその結果のCPU状態の予測不能要素とを、情報破壊を最小限に抑えてクリアするために、CPUリセットを使用することができる。特に、動作の分析または動作の再開のためにCPU状態を保存する場合、チェック状況をクリアするためにCPUリセットを使用することができる。通常ロード(load-normal)キーまたはダンプありロード(load-with-dump)キーによってCPUリセットが行われた場合、(a)アーキテクチャ・モードをデフォルト・モードに設定することができ、(b)マルチスレッディング機構がインストールされて有効化されている場合にはマルチスレッディングが無効化される。CPUリセットによってデフォルト・モードが設定されると、それによって、PSWを復元することができるように現在のPSWを保存することができる。
初期CPUリセットは、CPUリセットの各機能を、現在のPSW、CPUタイマ、クロック比較器、およびその他のレジスタ、すなわちブレーキング・イベント・アドレス、キャプチャされたPSW、制御、浮動小数点制御、プレフィックスおよびTODプログラマブル・レジスタなどのレジスタの初期化の機能と共に提供する。通常ロード(load-normal)キーまたはダンプありロード(load-with-dump)キーによって行われた場合、初期CPUリセットは、アーキテクチャ・モードをデフォルト・モードに設定することができる。通常ロード(load-normal)キーまたはダンプありロード(load-with-dump)キーの起動により初期CPUリセットが行われるときにマルチスレッディングが有効化されている場合、コアのうちの最小番号が付されたCPUについては初期CPUリセット機能を実行することができ、コア内の他のすべてのCPUについてはCPUリセットが行われる。クリア・リセットによって、初期CPUリセットおよびサブシステム・リセットが行われ、さらに、TODクロック以外の構成内のすべてのCPUにおけるすべての記憶場所およびレジスタがクリアまたは初期化される。クリアは、制御プログラムがアドレス指定不能ページの内容を保持するために使用するダイレクト・アクセス記憶装置などの外部記憶装置には影響を及ぼさない。
CPU電源投入リセットにより、初期CPUリセットが行われ、汎用レジスタ、アクセス・レジスタ、制御レジスタ、および浮動小数点レジスタの内容がクリアされてゼロ/デフォルト値が有効検査ブロック(valid checking-block)コードと共に設定される。なお、状態のクリアまたは初期化は値をゼロにするものである必要はなく、クリアされた状態で非ゼロ値にデフォルト設定することもできる。CPU電源投入リセットによって構成が設定される場合、それによってアーキテクチャ・モードをデフォルト・モードに設定することができる。それ以外の場合、アーキテクチャ・モードをすでに構成内にあるCPUのモードに設定してもよい。CPUリセット、初期CPUリセット、サブシステム・リセットおよびクリア・リセットは手動で開始されてもよい。
例示の実施形態では、各CPUに番号が割り当てられ、CPUアドレスと呼ばれる。CPUアドレスは、1つのCPUを構成内で一意に識別する。SIGP命令のCPUアドレス・フィールドでこのアドレスを指定することによって、CPUが指定される。割込みによりCPUアドレス・フィールドにこのアドレスを格納することによって、誤動作アラート、緊急信号、または外部呼出しを発信しているCPUを識別することができる。CPUアドレスは、構成定義処理によって割り当てられ、典型的には再構成変更の結果として変更されない。プログラムは、CPUアドレス・ストア命令を使用してCPUのアドレスを判断することができる。CPUアドレス・ストア命令は、マルチスレッディング構成内でCPUを識別するCPUアドレスを指定するためにも使用することができる。
マルチスレッディングが有効化されている場合、CPUアドレスは、コア内のCPUの識別情報に連結されたコア識別情報(コアID)を含むことができる。コア内のCPU識別情報は、スレッド識別情報(スレッドIDまたはTID)である。構成内では、すべてのコアが同じ数のCPUを提供する。ただし、モデルおよびCPUタイプによっては、コア内の一部のCPUが動作状態でない場合がある。
シグナル・プロセッサ・マルチスレッディング設定命令(order)によって使用されるパラメータ・レジスタのPSMTIDに基づき、固定数のビットによりスレッド識別情報を表す。このビット数をTID幅と呼ぶ。
コアIDは、マルチスレッディングを有効化する前にCPUアドレスの右端ビットから形成することができる。コアIDは、TID幅ビットだけ左にシフトされ、その結果、マルチスレッディングが利用可能になった後にはCPUアドレスの左端ビットとなる。スレッドIDは同じTID幅ビット数を有し、マルチスレッディングが有効化された後はCPUアドレスの右端ビットを占める。スレッドIDは、連続した一連の数字で割り当てることができる。表1に、PSMTIDと、TID幅と、コア識別情報およびスレッド識別情報を含むCPUアドレス・ビットとの関係を例示する。
Figure 2017513111
図7に、アドレス拡張を、一実施形態によるCPUアドレス拡張処理600Aの一例として示す。ブロック602において、CPUアドレス・ビットのいくつかとしてのコア・アドレス値604を使用して、STモードで一次スレッドにアクセスすることができる。矢印606はSTモードからMTモードへの切換えを示す。ブロック608において、拡張アドレス値610を使用して、MTモードで一次スレッドまたは1つまたは複数の二次スレッドにアクセスすることができる。拡張アドレス値610は、シフト・コア・アドレス値612としてシフトされてスレッド・アドレス値614と連結された、コア・アドレス値604を含む。シフト・コア・アドレス値612はコア識別子(コアID)であり、スレッド・アドレス値614はスレッド識別子(TID)である。シフト・コア・アドレス値612は、要求された最大識別子、例えばPSMTIDに基づく量だけシフトすることができる。スレッド・アドレス値614内の数ビットのTIDビットは、上記の表1に示すようにPSMTIDに基づいて決定することができる。スレッド・アドレス値614をシフト・コア・アドレス値612の下位ビットに連結して、拡張アドレス値610を形成することができる。すべてゼロのスレッド・アドレス値614は一次スレッドを指定し、ゼロより大きい値は二次スレッドを識別し、アドレス指定する。
MTモードとSTモードとを切り換える場合、コア・アドレス値604(STモード)または拡張アドレス値610(MTモード)を選択して、それぞれSTモードまたはMTモードでのCPUアドレスとして使用する。コア・アドレス値604は、STモードで使用される標準形式アドレスの一例であり、コアは、MTモードの無効化に基づいてMTモードからSTモードに復帰する。例示の一実施形態では、MTモードの無効化に基づいて一次スレッドのみがアクセス可能(すなわち二次スレッドはアクセス不能)になる。図8に、一実施形態によるCPUアドレス縮小処理600Bの一例を示す。図8の矢印616は、ブロック608のMTモードからブロック602のSTモードへの切換えを示す。MTモードからSTモードへの復帰は、拡張アドレス値610を右にシフトすることと、スレッド・アドレス値614を削除して、シフト・コア・アドレス値612からコア・アドレス値604(コアID)をCPUアドレスとして含む標準形式アドレスを形成することとを含むことができる。
リセット機能によってマルチスレッディングを無効化する場合、(a)スレッドIDゼロを有するCPUのCPUアドレスが、有効化の際に使用したTID幅ビット数と同じビット数だけ右にシフトされ、(b)アドレスの左側のTID幅ビット数にゼロが挿入され、(c)CPUアドレスが元の非マルチスレッディング形式(すなわち標準形式アドレス)に戻る。マルチスレッディングが無効化されると、マルチスレッディングが有効なときに非ゼロのスレッドIDを有するコア内のすべてのCPUが、動作状態でなくなる。
マルチスレッディングが有効化されていない場合、CPUアドレスは構成定義処理によって割り当てられた値から変化しない。この場合、スレッド識別情報は存在しない。
いくつかのシグナル・プロセッサ命令(order)が、例えば開始、停止、再開、停止および状態ストア、初期CPUリセット、CPUリセット、アドレス指定時状態ストア、アーキテクチャ設定、稼働状態センス、マルチスレッディング設定、アドレス指定時追加状態ストアなどを含む命令(order)をCPUに供給することができる。初期CPUリセットまたはCPUリセットは、シグナル・プロセッサ命令によって開始することができ、アーキテクチャ・モードまたは他のCPUに影響を及ぼさず、マルチスレッディングを無効化せず、I/Oをリセットさせない。
アーキテクチャ設定命令(order)は、構成内のすべてのCPUがそのモードに設定されるアーキテクチャ・モードを指定する。アーキテクチャの相違には、CPUによってサポートされる異なるアドレス指定モード、レジスタ定義、および命令が含まれ得る。アーキテクチャ・モードを変更すると、レジスタのビット選択フィールドをデフォルト状態に設定する(例えばゼロにする)ことができ、構成内のすべてのCPUのアクセス・レジスタ・トランスレーション・ルックアサイド・バッファ(ALB)およびトランスレーション・ルックアサイド・バッファ(TLB)がクリアされ、順序付け機能およびチェックポイント同期機能を構成内のすべてのCPUについて実行することができる。
稼働状態センス命令(order)は、アドレス指定されたCPUが稼働しているか否かを示すことができる。STモードでは、稼働/非稼働状態として標識を返すことができる。MTモードでは、アドレス指定されたCPUが属するコアのいずれかのCPUが稼働中であるか、または、アドレス指定されたCPUが属するコアのすべてのCPUが稼働状態ではないかを識別するための標識を使用することができる。
MTモード設定命令(order)は、マルチスレッディング機構を有効化する。パラメータ・レジスタのビット位置が、構成内で付与されるPSMTIDを含むことができる。PSMTIDは、各コアにおいてアドレス指定可能にされるCPUの数よりも1だけ少なく定義することができる。例えば、指定されたビット位置における値3は、最大4個のスレッドが提供されることを示す。構成内のすべてのCPUがアドレス指定されるとみなされるため、SIGP命令のCPUアドレス・レジスタの内容は無視することができる。MT設定命令(order)が受け付けられた場合、MT設定命令(order)はSIGP命令の実行中にすべてのCPUによって完了される。図9を参照すると、SIGP MT設定命令(order)702の処理700が図示されている。図9の処理700を参照しながら本明細書で詳述するように、無効な命令(order)、不正な状態、および無効なパラメータのうちの1つまたは複数と共にSIGP MT設定命令(order)702が発行されたとの判断に基づき、エラー標識を出力し、MTモードの有効化を防止することができる。
ブロック704でマルチスレッディング機構がインストールされていない場合、または、有効なアーキテクチャ・モードでCPUが有効化されていない場合708、MT設定命令(order)は受け付けられず、それぞれブロック706または710で無効命令(order)標識が返されてもよい。ブロック712で構成内の他のCPUが停止状態またはチェック停止状態でない場合、またはブロック716で構成がマルチスレッディング用にすでに有効化されている場合、MT設定命令(order)は受け付けられず、それぞれブロック714または718で不正状態標識が返されてもよい。
ブロック720でPSMTIDが無効な場合、MT設定命令(order)は受け付けられず、ブロック722で無効パラメータ標識が返されてもよい。ブロック724でPSMTIDがゼロにされると、構成はマルチスレッディング用としては有効化されず、STモードのままとなり、ブロック728で条件コードとしていずれかの状態を出力する。例示の一実施形態では、PSMTIDは有効で、ゼロ以外であり、ブロック726で構成がマルチスレッディング用として有効化され、その結果、CPUアドレス拡張が行われ、構成内のすべてのCPUのALBおよびTLBの内容がクリアされ、構成内のすべてのCPUに対して順序付けおよびチェックポイント同期機能が実行される。ブロック728で、状態を条件コードで出力することができる。正常に完了すると、MT設定命令(order)を実行しているCPU以外のすべてのCPUは停止またはチェック停止状態のままとなる。ただし、マルチスレッディングが有効化される前にCPUがチェック停止状態だった場合、同じコア内で非ゼロのスレッドIDを有するCPUが停止またはチェック停止状態になっているか否かは予測不能な場合がある。
スレッド・コンテキストはアーキテクテッド・レジスタ・コンテキストとも呼ばれる。マルチスレッディングが有効化される前の各CPUのアーキテクテッド・レジスタ・コンテキスト(すなわち、PSW、CPUタイマ、クロック比較器、汎用レジスタ、浮動小数点レジスタおよび浮動小数点制御レジスタ、ベクトル・レジスタ、制御レジスタ、アクセス・レジスタ、プレフィックス・レジスタ、ならびにTODプログラマブル・レジスタなどの内容)は、マルチスレッディングが有効化された後で、それぞれのコアのTIDゼロを有するCPUのアーキテクテッド・レジスタ・コンテキストになる。同様に、MT有効化構成の各コアのTIDゼロを有するCPUのアーキテクテッド・レジスタ・コンテキストは、通常ロード(load-normal)キーまたはダンプありロード(load-with-dump)キーの起動の結果としてマルチスレッディングが無効化されるとそれぞれのCPUのアーキテクテッド・レジスタ・コンテキストとなる。
通常ロード(load-normal)キーまたはダンプありロード(load-with-dump)キー動作の結果としてマルチスレッディング機構が無効化される場合、非ゼロスレッド識別情報を有するすべてのCPUのアーキテクテッド・レジスタ・コンテキストを保持することができる。クリア・リセットの介在なしにマルチスレッディング機構が後で再度有効化される場合、非ゼロのスレッド識別情報を有するすべてのCPUのアーキテクテッド・レジスタ・コンテキストが復元される。
マルチスレッディングが通常ロード(load-normal)キーまたはダンプありロード(load-with-dump)キーの起動により無効化された後で再度有効化される場合に、パラメータ・レジスタのビット内のPSMTIDの値が前回の有効化で使用されたものと異なる場合、非ゼロのスレッドIDを有するすべてのCPUのアーキテクテッド・レジスタ・コンテキストは予測不能な場合がある。
システム情報ストア命令を使用して、構成の構成要素に関する情報をシステム情報ブロック(SYSIB)に格納することができる。SYSIBは、MTインストール済みフィールド、MT汎用フィールド、総CPU/コア数、構成済みCPU/コア数、待機CPU/コア数、予約CPU/コア数、およびその他のフィールドを含むことができる。MTインストール済みフィールドは、マルチスレッディング機構がインストールされているか否かを示すことができ、第1のコア・タイプ、例えば特殊コア・タイプのための最高サポートTIDも示してよい。MT汎用フィールドは、第2のコア・タイプ、例えば汎用コア・タイプのための最高サポートTIDを示すことができる。MT汎用フィールド内の最高サポートTIDは、MTインストール済みフィールド内の最高サポートTID以下に制限されてもよい。総CPU/コア数は、構成済み状態か待機状態か予約状態かを問わず、構成内の汎用CPUまたは汎用CPUを含むコアの総数を示すことができる。構成済みCPU/コア数は、構成済み状態、すなわち、構成内にあり、プログラムを実行する準備が整っている状態の汎用CPUまたは汎用CPUを含むコアの数を示すことができる。待機CPU/コア数は、待機状態、すなわち、構成済み状態になるまではプログラムを実行するための使用に供することができない汎用CPUまたは汎用CPUを含むコアの数を示す。予約CPU/コア数は、予約状態、すなわち、プログラムを実行するための使用に供することができず、構成済み状態にされることができない汎用CPUまたは汎用CPUを含むコアの数を示す。
図10に、一実施形態によるマルチスレッディング機能情報の格納の一例を示す。コア800Aのスレッド1などのスレッドにおいて実行されるプログラムが、LPARなどの構成850のメモリ801からシステム情報ストア(STORE SYSTEM INFORMATION (STSI))命令830をフェッチすることができる。STSI命令の実行の結果、システム情報ブロック(SYSIB)802の格納832が行われる。図10の例では、SYSIB802は、構成850がマルチスレッディングをサポートしているか否かを示すMTインストール済み識別子804を含む。SYSIB802は、特殊コアの1コア当たりの最大TID806および汎用コアの最大TID808として与えることができる、コア800A/800Bの最高サポート・スレッドの最大スレッド識別子も含む。SYSIB802は、現在のプログラム指定最大スレッド識別子(PSMTID)809も含むことができる。現在のPSMTID809は、プログラムによって構成850内で有効化されたときのマルチスレッディング・モードを反映する。STSI命令830が基本マシン・レベルで実行される場合、現在のPSMTID809は定義されない場合がある。
コア800Bのスレッド2などのスレッドで実行されているプログラムは、構成850のメモリ801からサービス呼出し(SERVICE CALL(SERVC))命令834もフェッチすることができ、その場合、この命令はシステム制御プログラム情報読取り(read-system-control-program-information: read-SCP-infoまたはRSCPI)コマンドを指定する。RSCPIコマンドの実行により、サービス呼出し制御ブロック(SCCB)810をメモリ801に格納させる836ことができる。例示の一実施形態では、RSCPIコマンドの実行により格納されたSCCB810は、SYSIB802では利用可能ではない場合がある類似および追加の情報を提供する。図10の例では、SCCB810は、コア800Bがマルチスレッディングをサポートしているか否かを示すMTインストール済み識別子812を含む。SCCB810は、特殊コアの1コア当たり最大TID814および汎用コアの最大TID816として与えることができる、コア800Bの最高サポート・スレッドの最大スレッド識別子も含む。SCCB810の812〜816の値は、SYSIB802でアクセス可能な値804〜808に相当する。さらに、SCCB810は、コア808Bの最高サポート・スレッドの最後に設定されたプログラム指定最大スレッド識別子を含むことができ、これを直前設定プログラム指定最大スレッド識別子(PSMTID)818とも呼ぶ。SCCB810は、PSMTIDサポート・マスク820としてMT設定命令(order)で受付け可能なPSMTID値のマスクも含むことができる。PSMTIDサポート・マスク820は、1コア当たり最大TID814によって定義された数よりも少ない数が望まれる場合に、サポートされるCPU/スレッドを識別するために使用することができる。
なお、コア800Aおよび800Bは、この例で示されていない他の態様も含むことがわかるであろう。また、SYSIB802およびSCCB810は、図10の例に示されていない追加の値も含むことができる。
図11に、一実施形態によるマルチスレッディング機能を判断するための処理の流れ900を示す。ブロック902で、コアがマルチスレッディング機能情報取出し(RMTCI)命令を実行する。この命令は、例えばSERVC命令またはSTSI命令のうちのいずれか一方とすることができる。ブロック904で、構成のマルチスレッディング機能を識別するスレッド識別情報を取得する。ブロック906で、取得したスレッド識別情報を格納する。ブロック908で、取得したスレッド識別情報に基づき、構成が以前にマルチスレッディング有効化されていたか否かを判断する。
前述のように、SERVC命令はスレッド識別情報をメモリ内の応答ブロック(例えば図10のSCCB810)に格納するように構成され、STSI命令はスレッド識別情報をメモリ内のSYSIB(例えば図10のSYSIB802)に格納するように構成されている。取得したスレッド情報は、コアがマルチスレッディングをサポートしているか否かを示すMTインストール済み識別子(例えば図10のMTインストール済み識別子804または812)を含むことができる。取得したスレッド情報は、コアの最高サポート・スレッドの最大スレッド識別子(例えば図10の最大TID値806、808、814または816)も含んでよい。取得したスレッド情報は、現在のプログラム指定最大スレッド識別子(例えば図10の現在のPSMTID809)および最終設定プログラム指定最大スレッド識別子(例えば図10のPSMTID818)を含むことができる。応答ブロックは、個々にサポートされる特定のスレッド識別子(例えば図10のPSMTIDサポート・マスク820)を示すビットのマスクを含むことができる。構成が以前にMT有効化されたか否かの判断は、直前設定プログラム指定最大スレッド識別子がゼロ以外の値(例えば直前設定PSMTID>0)であることに基づくことができる。例示の一実施形態では、構成は複数のコア・タイプをサポートする。
例示の一実施形態では、プログラム・カウンタ値などのレジスタおよび値は、レジスタに含まれるかまたは別個に管理されてよく、スレッド・コンテキストとしてキャプチャされる。MTモードでアドレス拡張が行われると、追加のスレッド・コンテキストがアクセス可能になる。図7、図8を参照して前述したように、構成内のコアごとにCPUアドレスが作成される。CPUアドレスは、CPUアドレス・ストア命令によって調べることができ、他の構造体で示され、様々なSIGP命令(order)で使用される。MTが有効化されない場合、このアドレス方式は変化しない。MTが有効化される場合、CPUアドレスは拡張処理が施される。前述のように、CPUアドレスの非MT有効化部分を、TIDを収容するのに十分なビット数だけ左にシフトすることができる。例えば、オペレーティング・システムがPSMTID値1を指定したSIGP MT設定命令(order)を発行した場合、CPUアドレスは1ビットだけ左にシフトされることになる。PSMTIDが2または3の場合、CPUアドレスは2ビットだけ左にシフトされることになる。PSMTIDが4ないし7の場合、CPUアドレスは3ビットだけ左にシフトされることになる、という具合である。
(通常ロード(load-normal)動作によって行われたクリア・リセットまたはCPUリセットの結果として)マルチスレッディングが後で無効化される場合、CPUアドレス縮小が行われる。MT有効化CPUアドレスを、MTを有効化したSIGP MT設定命令(order)で使用したPSMTIDビット数と同じビット数だけ右にシフトすることができ、アドレスのスレッドID部分が消える。MTモードでアクセス可能なスレッド・コンテキストは、図12に示す例などのように、1つまたは複数の記憶場所に存在することができる。図12の例では、構成1000がコア1002を含み、さらに他のコア(図示せず)を含んでもよい。メモリ1006は、構成1000の一部として構成メモリ1005を含むことができ、構成1000とは別個のホスト/ファームウェア・メモリ1007を含むことができる。ホスト/ファームウェア・メモリ1007は、ホストによって維持される状態記述ブロック1008を含むことができ、状態記述ブロック1008はスレッド(例えば図12のスレッドn)のスレッド・コンテキスト1010を格納することができる。サテライト・ブロック1012が、ホスト/ファームウェア・メモリ1007の一部としてメモリ1006内の状態記述ブロック1008にアンカーされることができ、この場合、サテライト・ブロック1012は、スレッド・コンテキスト1010の代替として、またはスレッド・コンテキスト1010と組み合わせて、スレッド・コンテキスト1014を含むことができる。各スレッドは、対応する状態記述ブロック1008と、さらに任意でサテライト・ブロック1012とを有することができ、これらのブロックにスレッド・コンテキスト1010またはスレッド・コンテキスト1014を格納することができる。さらに他の代替態様として、例えばコア1002にスレッド・コンテキスト1018を格納するためにハードウェア・コンテキスト・レジスタ1016を使用することができる。スレッド・コンテキスト1010、1014および1018のこれらの例は、ストレージ・オプションとして、組み合わせて、または別々に使用することができる。スレッド・コンテキストが維持されるか否かにかかわらず、アドレス縮小が行われるとスレッド・コンテキストは直接アクセスすることができなくなるが、ダンプ・プログラムによるアクセスのために保存することができる。
MTが無効化されると、CPUアドレス縮小処理によって、コアのスレッド1〜nがアドレス指定不能にされる。同様に、アーキテクテッド・レジスタを含むスレッド・コンテキストはプログラムにとって見えなくなる。非クリア・ロード動作によるCPUリセットの結果としてMTが無効化された場合、スレッド1〜nのレジスタ・コンテキストが保持される。これらのデータは、構成がMTモードに戻される場合に後で調べることができる。図12に示すように、ホストによって各ゲスト・スレッドのレジスタ・コンテキストを、そのスレッドの状態記述ブロック1008で(またはベクトル・レジスタの場合のように、状態記述にアンカーされたサテライト・ブロック1012で)維持することができる。
MTの無効化中のスレッド1〜nのコンテキストの保持は、OS障害発生後にスレッドの状態をダンプする診断機能である。OS障害発生後、オペレータは、障害発生時点でのシステムのメモリとスレッド・コンテキストとをキャプチャするために、スタンドアロン・ダンプ(SADMP)プログラムを実行することを選択することができる。ただし、SADMPプログラムをロードすると、構成はSTモードが有効化されたデフォルトのアーキテクチャ・モードに復帰する可能性があり、したがってMTが無効化される。しかし、SADMPは非クリア・ロード動作によってロードされるため、各コアのスレッド1〜nのレジスタ・コンテキストは保持される。SADMPは、SERVC SCP情報読取りコマンドの応答ブロックの結果を調べることによって、ダンプされる構成においてMTが有効化されていたか否かを判断することができる。この数は、続いて、前と同じレベルでMTを再有効化するためにSIGP MT設定命令(order)への入力として使用することができる。
図13に、一実施形態によるマルチスレッディング・レジスタ保存の例を示す。図13のコンピュータ・システム1100などのシステムは、複数の構成1102および1104を含み得る。図13の例では、構成1102はコア1106およびコア1108を含み、構成1104はコア1110および1112を含む。構成1102および1104はそれぞれ独立して別々の時点でSTモードとMTモードとの間で切り換えることができる。コンピュータ・システム1100の構成1102および1104はそれぞれ、構成1102および1104のそれぞれにおいて同時に有効化された異なる数のスレッドをサポートするように、異なる数の最大スレッドIDを使用して構成可能である。図13の例では、構成1102がMTモード1114である間、コア1106および1108はそれぞれ最大2個のスレッドをサポートするのに対して、構成1104がMTモード1116である間、コア1110および1112はそれぞれ最大4個のスレッドをサポートする。
構成1102においてMTモード1114が有効になっている間、TID0とTID1の両方が、スレッド・コンテキスト1115の別々のインスタンスなど別々のスレッド・コンテキストとしてアクセス可能である。時点1118において、構成1102に対する通常ロード(load-normal)動作または非クリア・リセットにより、MTモード1114を無効化することができ、それによって、コア1106および1108の両方がSTモード1120に切り換えられる。前述のようなアドレス縮小のため、TID0レジスタはSTモード1120でアクセス可能である。しかし、MTモード1114でアクセス可能であったTID1レジスタは、保持はされるがアクセス可能ではなくなる。例えば、TID1レジスタは、図12のスレッド・コンテキスト1010、1014または1018として実施してもよく、その場合、アドレス拡張により利用可能であったアドレスはSTモード1120への切換え時のアドレス縮小の後はもはやアクセス可能でなくなる。
構成1104は、MTモード1116が有効化されている間、TID0、TID1、TID2およびTID3レジスタに、図12のスレッド・コンテキストの別個のインスタンス1010、1014または1018などのように別個のスレッド・コンテキストとしてアクセス可能である。この例では、TID0は一次スレッドを表し、TID1〜TID3は、コア1110および1112のそれぞれのために別々に維持される二次スレッドを表す。時点1122において、構成1104に対するクリア・リセットによってMTモード1116を無効化することができ、それによってコア1110および1112の両方がSTモード1124に切り換えられる。時点1122におけるクリア・リセットにより、TID0、TID1、TID2およびTID3のレジスタのすべてをクリアすることができる。前述のようなアドレス縮小により、TID0レジスタはSTモード1124でアクセス可能である。しかし、MTモード1116でアクセス可能であったTID1、TID2およびTID3レジスタは、クリアされた状態で保持されるがアクセス可能ではなくなる。図13に示すように、作用を各構成1102および1104に局在化させた状態で、異なる時点1118および1122において各構成1102および1104上で動作を独立して実行することができる。したがって、構成1102はSTモード1120とすることができると同時に、構成1104はMTモード1116とすることができ、ST/MTモードをコンピュータ・システム1100のすべての構成について一致させる必要はない。
図14に、一実施形態によるマルチスレッディング・レジスタ保存の処理の流れ1200を示す。ブロック1202で、MTを無効化するとのMTモードのコアによる判断に基づき、MTモードからSTモードへの切換えが行われる。MTモードの一次スレッドをSTモードの唯一のスレッドとして維持することができる。二次スレッドのプログラム・アクセス可能レジスタ値およびプログラム・カウンタ値を含む1つまたは複数のスレッド・コンテキストに、プログラムがアクセスすることができないようにする。ブロック1204で、この切換えに基づき、動作タイプ(例えば、クリアか非クリアか)が、プログラム・アクセス可能レジスタ値をクリアすることであるか、またはプログラム・アクセス可能レジスタ値を保持することであると判断される。ブロック1206で、非クリア動作に基づき、プログラム・アクセス可能レジスタ値を保持するとの判断がなされる。ブロック1208で、クリア動作に基づき、プログラム・アクセス可能レジスタをクリアするとの判断がなされる。
前述のように、スレッド・コンテキストのプログラム・アクセス可能レジスタ値およびプログラム・カウンタ値は、プログラム汎用レジスタ、浮動小数点レジスタ、制御レジスタ、アクセス・レジスタ、プレフィックス・レジスタ、およびTODプログラマブル・レジスタを含むことができる。制御レジスタは、浮動小数点制御レジスタ、ランタイム・インストルメンテーション(runtime-instrumentation)制御、CPU測定制御などを含むことができる。スレッド・コンテキストに含まれ得るレジスタの他の例としては、プログラム状態ワード(例えばプログラム・カウンタ/命令アドレスと、条件コードと、命令の順序付けを制御しCPU状態を判断するためのその他の情報とを含む)、ベクトル・レジスタ、CPUタイマ、クロック比較器、ブレーキング・イベント・アドレス・レジスタ、および当技術分野で周知のその他のレジスタがある。前述のように、MTを有効化した最後に正常に実行されたシグナル・プロセッサ命令に基づいて、PSMTIDが設定される。MTモードへの切換えに基づき、プログラム・アクセス可能レジスタ値に、対応する二次スレッドが再有効化されることに基づいてプログラムがアクセスすることができるようにされる。例えば、図13においてSTモード1120からMTモード1114に戻ることにより、TID1レジスタがアクセス可能になり、TID1を再有効化することができる。スレッド・コンテキストは、状態記述ブロック、メモリ内の状態記述ブロックにアンカーされたサテライト・ブロック、または図12のスレッド・コンテキスト1010、1014、または1018などのコンテキスト・レジスタのいずれでも維持することができる。
一次スレッド・コンテキストは、一次スレッドのプログラム・アクセス可能レジスタ値およびプログラム・カウンタ値、例えば図13の構成1104のTID0レジスタおよびTID0レジスタを含むことができ、この場合、一次スレッド・コンテキストにプログラムがSTモード1124とMTモード1116の両方でアクセスすることができる。二次スレッド・コンテキストは、二次スレッドのプログラム・アクセス可能レジスタ値およびプログラム・カウンタ値、例えば図13の構成1104のTID1〜TID3およびTID1〜TID3レジスタを含むことができる。
図15に、一実施形態によるマルチスレッディング・レジスタ復元の一例を示す。図15の例は、単一構成1302を有するコンピュータ・システム1300を含む。構成1302は、コア1304、コア1306、およびコア1308を含む。コア1304〜1308はそれぞれ、この例では最大4個のスレッド(TID0、TID1、TID2およびTID3)を含む。MTモード1310では、コア1304〜1308においてTID0〜TID3のスレッド・コンテキストのすべてが利用可能である。時点1312において、コア1304〜1308をSTモード1314に切り換える構成1302の通常ロード動作または非クリア・リセットにより、MTモード1310を無効化することができる。STモード1314では、コア1304〜1308のそれぞれについて、TID0レジスタがアクセス可能なままであり、TID1〜TID3レジスタはアクセス不能であるが保持される。時点1316において、MTモードに入るためにSIGP MT設定命令(order)の実行によりMTを再有効化することができる。再開されたMTモード1318で、コア1304〜1308のそれぞれのTID1〜TID3レジスタのスレッド・コンテキストへのアクセスが復元される。これにより、分析のためのスレッド・コンテキスト情報をセーブするために、スタンドアロン・ダンプ・プログラム1320などのダンプ・プログラムによるTID1〜TID3レジスタを含むスレッドのレジスタのすべての検査が可能になる。
図16に、オペレーティング・システムの障害発生後にスレッドのアーキテクテッド・レジスタ・コンテキストをキャプチャするために、図15のスタンドアロン・ダンプ(SADMP)プログラム1320などのスタンドアロン・ダンプ・プログラムが用いることができる、一実施形態によるマルチスレッディング・レジスタ復元処理の流れ1400を示す。ブロック1405で、非クリア・ロード動作(例えば通常ロードまたはダンプありロード)によりSADMPプログラムがロードされる。非クリア・ロード動作により、構成が図15の構成1302のSTモード1314などのSTモードに暗黙的に戻される。次に、ブロック1410で、SADMPプログラムはSTSIまたはSERVC命令を使用して、構成でMT機構が利用可能か否かを問い合わせることができる。MTがインストールされている場合、SADMPプログラムは、ブロック1415で、この構成のために設定された直前設定プログラム指定最大スレッド識別情報(PSMTID)を問い合わせる。この構成のためにMTが以前に一度も設定されたことがない場合、直前設定PSMTID値はゼロとなる。次に、ブロック1420で、SADMPプログラムは、直前設定PSMTIDがどのような値であったとしてもマルチスレッディングを再有効化する命令を実行することができる。ブロック1410での問合せにより、MTがインストールされていないと判明した場合、ブロック1415での直前設定PSMTID値の問合せ、またはブロック1420でのMTの再有効化は試みられない。
SADMPプログラムは、構成内の他のそれぞれのCPU(スレッド)のアーキテクテッド・レジスタ・コンテキストをメモリ内の事前定義済みの記憶場所にセーブするために、各CPU(スレッド)に発信を試みる。SADMPをロードする前にMTが事前に有効化されていなかった場合、CPUアドレスは通常の非拡張形式である。MTが事前に有効化されていた場合、CPUアドレスはコアIDとスレッドIDとを含む拡張形式である。ブロック1425で、SADMPがCPUアドレス(N)ゼロから開始し、ブロック1430で、CPUアドレスがSADMPが実行されているCPUを示しているか否かを判断する。SADMP実行中のCPUを示している場合、そのCPU/スレッドがスキップされ、ブロック1450でNが次の値にインクリメントされる。Nが現在のCPUアドレスと異なる場合、ブロック1435で、例えばSIGPアドレス指定時状態ストア(SIGP store-status-at-address)命令(order)またはSIGP停止および状態ストア(SIGP stop-and-store-status)命令(order)の実行により、そのCPU/スレッドに対してそのアーキテクテッド・レジスタ・コンテキストをメモリに格納するように信号が発信される。構成がベクトル機能を備える場合、CPU/スレッドのベクトル・レジスタの内容を格納するためにSIGPアドレス指定時追加状態ストア(SIGP store-additional-status-at-address)命令(order)も実行することができる。ブロック1440で、ブロック1435の信号が成功したか否かが判断される。成功した場合、ブロック1445で、SADMPプログラムはそのCPU/スレッドのレジスタ・コンテキストをテープまたはディスク上のダンプ・ファイルにセーブする。ブロック1440による判断で、ブロック1435の信号が成功しない場合(例えばスレッドが動作状態でない場合)、そのCPU・スレッドはスキップされ、ブロック1450でNをインクリメントして処理が続行する。ブロック1450で、信号発信で使用されるCPUアドレスの値(N)がインクリメントされ、ブロック1455で、Nが構成のとり得る最高CPUアドレスよりも大きいか否かが判断される。Nが構成のとり得る最高CPUアドレスよりも大きくない場合、ブロック1430で、Nが、SADMPプログラムが実行中の現在のCPU/スレッドを示しているか否かを判断して処理を続行する。Nが構成のとり得る最高CPUアドレスより大きい場合、ブロック1460でアーキテクテッド・レジスタ・コンテキスト復元およびダンプが完了している。
図16について構成の1つのコアに関してのみ説明しているが、図16の処理の流れ1400は、複数のコアを含む構成のすべてのコアにわたる最大CPUアドレスに対して実行するように拡大可能であることがわかるであろう。MTをサポートしていないOSまたはMTを認識するがMTを利用しないプログラムのためにダンプをサポートするように、構成において追加の調整を行うことができる。例えば、MT認識スタンドアロン・ダンプ・プログラムが構成から二次スレッドをダンプすることを試みないようにするために、構成にMTをサポートしないOSをロードする前にクリア・リセットを実行することができる。別の例として、構成に対してスタンドアロン・ダンプ・プログラムを実行する前に、MTを認識するがMTを利用しないプログラムが、対応する最大スレッドIDゼロと共にMT設定命令(order)を発行することができる。
技術的効果および利点には、シングル・スレッド動作モードとマルチスレッディング動作モードの両方をサポートするマルチスレッディング・コンピュータ・システムにおけるスレッド・コンテキスト保存が含まれる。マルチスレッディング・モード中に使用されるスレッド・コンテキストは、セーブすることができるが、シングル・スレッド・モードではアクセス不能なままであり、例えばスタンドアロン・ダンプ・プログラムがソフトウェア障害またはハードウェア障害に関する診断情報の収集に使用するために、マルチスレッディング・モードの再開時にそのスレッド・コンテキストを利用できるようになる。
本明細書に記載のシステムは、MTハードウェアを利用することを明示的に「選択」することをOSに要求することによって、ハードウェアの変動性をソフトウェアが軽減することができるようにする。OSが実行環境のMT性を把握する場合、OSはコア当たりのスレッド密度を明示的に管理する能力を(ワークロード・ディスパッチ・パターンがあればその能力の限りで)有する。演算資源の利用が少ない場合でも、OSは高スレッド密度を維持することを選択でき、それによって他のMT実装形態に見られる総演算能力の変動性の多くを軽減することができる。高スレッド密度を維持する直接の結果として、トランザクション応答時間とビリング面の両方のばらつきをより少なくすることができる。
実施形態には、マルチスレッディング・コンピュータ・システムにおけるスレッド・コンテキスト保存のためのシステム、方法およびコンピュータ・プログラム製品が含まれる。一態様によると、コンピュータ・システムは、シングル・スレッド(ST)モードとマルチスレッディング(MT)モードとの間で切換え構成可能なコアを備える構成を含む。STモードは一次スレッドを扱い、MTモードは一次スレッドとコアの共用資源上の1つまたは複数の二次スレッドとを扱う。コンピュータ・システムは、方法を実行するように構成の利用を制御するように構成されたマルチスレッディング機構も備える。MTを無効化するとのMTモードのコアによる判断に基づき、MTモードがSTモードに切り替わり、MTモードの一次スレッドがSTモードの一次スレッドとして維持される。1つまたは複数の二次スレッドのプログラム・アクセス可能なレジスタ値およびプログラム・カウンタ値を含むスレッド・コンテキストに、プログラムがアクセスすることができないようにする。この切換えに基づき、プログラム・アクセス可能レジスタ値をクリアするか、またはプログラム・アクセス可能値を保持するかのいずれか一方が実行される。
他の態様によると、STモードとMTモードとの間で切換え構成可能なコアを含む構成におけるスレッド・コンテキスト保存のためのコンピュータ実装方法であって、STモードは一次スレッドを扱い、MTモードは一次スレッドとコアの共用資源上の1つまたは複数の二次スレッドとを扱う。MTを無効化するというMTモードのコアによる判断に基づき、MTモードからSTモードへの切換えが行われ、MTモードの一次スレッドはSTモードの一次スレッドとして保持される。1つまたは複数の二次スレッドのプログラム・アクセス可能レジスタ値およびプログラム・カウンタ値を含むスレッド・コンテキストに、プログラムがアクセスすることができないようにする。この切換えに基づき、プログラム・アクセス可能レジスタ値をクリアするか、またはプログラム・アクセス可能レジスタ値を保持するかのいずれか一方が行われる。
さらに他の態様は、構成におけるスレッド・コンテキスト保存のためのコンピュータ・プログラム製品を含む。この構成は、STモードとMTモードとの間で切換え構成可能なコアを含み、STモードは一次スレッドを扱い、MTモードは一次スレッドとコアの共用資源上の1つまたは複数の二次スレッドとを扱う。このコンピュータ・プログラム製品は、プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、このコンピュータ可読記憶媒体は信号ではない。プログラム命令は、処理回路に方法を実行させるように処理回路によって読取り可能である。MTを無効化するというMTモードのコアによる判断に基づき、MTモードがSTモードに切り替わり、MTモードの一次スレッドがSTモードの一次スレッドとして保持される。1つまたは複数の二次スレッドのプログラム・アクセス可能レジスタ値およびプログラム・カウンタ値を含むスレッド・コンテキストに、プログラムがアクセスすることができないようにする。この切換えに基づき、プログラム・アクセス可能レジスタ値をクリアするか、またはプログラム・アクセス可能レジスタ値を保持するかのうちのいずれか一方が行われる。
上記の特徴のうちの1つまたは複数の特徴に加えて、またはその代替として、さらに他の実施形態は、MTを無効化するとの決定が、非クリア動作に基づきプログラム・アクセス可能レジスタ値を保持すると判断することと、クリア動作に基づきプログラム・アクセス可能レジスタをクリアすると判断することとをさらに含む形態を含むことができる。
上記の特徴のうちの1つまたは複数の特徴に加えて、またはその代替として、さらに他の実施形態は、スレッド・コンテキストが、プログラム汎用レジスタと、浮動小数点レジスタと、制御レジスタと、アクセス・レジスタと、プレフィックス・レジスタと、時刻(TOD)プログラマブル・レジスタとを含む形態を含むことができる。
上記の特徴のうちの1つまたは複数の特徴に加えて、またはその代替として、さらに他の実施形態は、スレッド・コンテキストが各スレッドのプログラム状態ワードも含む形態を含むことができる。
上記の特徴のうちの1つまたは複数の特徴に加えて、またはその代替として、さらに他の実施形態は、直前設定プログラム指定最大スレッド識別子が、最後に正常に実行されたシグナル・プロセッサ命令に基づいて設定される形態を含むことができる。
上記の特徴のうちの1つまたは複数の特徴に加えて、またはその代替として、さらに他の実施形態は、MTモードへの切換えに基づき、プログラム・アクセス可能レジスタ値に、対応する二次スレッドが再有効化されることに基づきプログラムがアクセスすることができるようにする形態を含むことができる。
上記の特徴のうちの1つまたは複数の特徴に加えて、またはその代替として、さらに他の実施形態は、一次スレッドのプログラム・アクセス可能レジスタ値とプログラム・カウンタ値とを含む一次スレッド・コンテキストに、STモードとMTモードの両方でプログラムがアクセス可能である形態を含むことができる。
上記の特徴のうちの1つまたは複数の特徴に加えて、またはその代替として、さらに他の実施形態は、スレッド・コンテキストが、状態記述ブロック、メモリ内で状態記述ブロックにアンカーされたサテライト・ブロック、またはコンテキスト・レジスタのいずれかで維持される形態を含むことができる。
本明細書で使用されている用語は、特定の実施形態を説明するためのみのものであり、本発明を限定することを意図したものではない。本明細書では、別に明記していない限り、単数形の「a」、「an」、および「the」は複数形も含むことを意図している。また、本明細書で使用されている「comprises(含む)」という用語または「comprising(含む)」という用語あるいはその両方は、記載されている特徴、整数、ステップ、動作、要素、または構成要素あるいはこれらの組合せの存在を明記するものであるが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素またはこれらのグループあるいはこれらの組合せの存在を排除しないものと理解されたい。
添付の特許請求の範囲のすべてのミーンズまたはステップ・プラス・ファンクション要素の対応する構造体、材料、作用、および均等物は、具体的に請求されている他の請求要素と組み合わせて機能を実行するためのあらゆる構造体、材料または作用を含むことを意図している。本発明の説明は、例示および説明を目的として示されており、網羅的であることまたは開示の形態の本発明に限定することを意図したものではない。本発明の範囲および趣旨から逸脱することなく、当業者には多くの変更および変形が明らかとなるであろう。実施形態は、本発明の原理および実際の適用を最もよく説明するためと、企図された特定の用途に適するように様々な変更を加えた様々な実施形態のために当業者が本発明を理解することができるようにするために、選択され、説明されたものである。
本発明の様々な実施形態の説明は、例示を目的として示されたものであり、網羅的であること、または開示されている実施形態に限定されることを意図したものではない。記載されている実施形態の範囲および趣旨から逸脱することなく、多くの変更および変形が当業者には明らかとなるであろう。本明細書で使用されている用語は、本発明の原理、実際の適用、または市場に見られる技術の技術的改良を最もよく説明するため、または当業者が本明細書で開示されている実施形態を理解することができるようにするために選択されたものである。
図17を参照すると、コンピュータ可読記憶媒体1502およびプログラム命令1504を含む一実施形態によるコンピュータ・プログラム製品1500の概要が示されている。
本発明は、システム、方法またはコンピュータ・プログラム製品、あるいはこれらの組合せとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令が格納されたコンピュータ可読記憶媒体(または複数のコンピュータ可読記憶媒体)を含むことができる。
コンピュータ可読記憶媒体は、命令実行装置が使用するための命令を保持または格納することができる有形の装置とすることができる。コンピュータ可読記憶媒体は、例えば電子記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、またはこれらの任意の適切な組合せとすることができるが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、以下のものが含まれる。すなわち、携帯型コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク読取り専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピィ・ディスク、パンチカードまたは命令が記録された溝内の凸状構造体などの機械的に符号化された装置、およびこれらの任意の適切な組合せなどがある。本明細書で使用されているコンピュータ可読記憶媒体とは、電波またはその他の自由に伝播する電磁波、導波路またはその他の伝送媒体を伝播する電磁波(例えば光ファイバ・ケーブルを通る光パルス)、または電線を介して伝送される電気信号など、それ自体が一時的な信号であるものと解釈すべきではない。
本明細書に記載のコンピュータ可読プログラム命令は、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワークあるいはこれらの組合せを介して、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置に、または外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、交換機、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはこれらの組合せを含むことができる。各コンピューティング/処理装置内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受け取り、それらのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理装置内のコンピュータ可読記憶媒体に格納するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語および「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組合せで書かれたソース・コードまたはオブジェクト・コードとすることができる。コンピュータ可読プログラム命令は、全体をユーザのコンピュータ上で、一部をユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、一部をユーザのコンピュータ上で一部をリモート・コンピュータ上で、あるいは全体をリモート・コンピュータまたはリモート・サーバ上で実行することができる。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを介してユーザのコンピュータに接続することができ、あるいは接続は(例えばインターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに対して行ってもよい。ある実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を使用して電子回路をパーソナライズすることにより、コンピュータ可読プログラム命令を実行してもよい。
本明細書では本発明の態様について、本発明の実施形態による方法、装置(システム)およびコンピュータ・プログラム製品を示すフローチャート図またはブロック図あるいはその両方を参照しながら説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組合せは、コンピュータ可読プログラム命令によって実装可能であることがわかるであろう。
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行される命令がフローチャートまたはブロック図あるいはその両方のブロックに明記されている機能/作用を実装する手段を形成するように、汎用コンピュータ、専用コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに供給されて、マシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方のブロックに明記された機能/作用の態様を実装する命令を含む製造品を含むように、コンピュータ可読記憶媒体に格納され、コンピュータ、プログラマブル・データ処理装置、またはその他の装置あるいはこれらの組合せに対して特定の方式で機能するように指示するものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置、またはその他の装置上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに明記されている機能/作用を実装するように、コンピュータ、その他のプログラマブル・データ処理装置、またはその他の装置にロードされ、コンピュータ、その他のプログラマブル装置またはその他の装置上で一連の動作ステップを実行させるものであってもよい。
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。なお、フローチャートまたはブロック図の各ブロックは、明記されている論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部を表す場合がある。ある代替実装形態では、ブロックに記載されている機能は図面に記載されている順序を入れ替えて行われてもよい。例えば、連続して示された2つのブロックは、実際には、必要な機能に応じて、実質的に同時に実行されてもよく、またはそれらのブロックは場合によっては逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、および、ブロック図またはフローチャート図あるいはその両方のブロックの組合せは、明記された機能または作用を実行するかまたは専用ハードウェアとコンピュータ命令との組合せを実施する、専用ハードウェア・ベースのシステムによって実装することができることにも留意されたい。

Claims (20)

  1. コンピュータ・システムであって、
    シングル・スレッド(ST)モードとマルチスレッディング(MT)モードとの間で切換え構成可能なコアを含む構成であって、前記STモードは一次スレッドを扱い、前記MTモードは前記一次スレッドと前記コアの共用資源上の1つまたは複数の二次スレッドとを扱う、前記構成と、
    前記構成の利用を制御して方法を実行するように構成されたマルチスレッディング機構とを含み、
    前記方法は、
    MTを無効化するという前記MTモードの前記コアによる判断に基づいて前記MTモードから前記STモードに切り換えることであって、前記MTモードの前記一次スレッドが前記STモードの前記一次スレッドとして維持され、前記1つまたは複数の二次スレッドのプログラム・アクセス可能レジスタ値とプログラム・カウンタ値とを含むスレッド・コンテキストにプログラムがアクセスできないようにする、前記切り換えることと、
    前記切換えに基づいて、前記プログラム・アクセス可能レジスタ値をクリアするかまたは前記プログラム・アクセス可能レジスタ値を保持するかのいずれか一方を実行することとを含む、コンピュータ・システム。
  2. MTを無効化するという前記判断は、
    非クリア動作に基づいて、前記プログラム・アクセス可能レジスタ値を保持すると判断することと、
    クリア動作に基づいて、前記プログラム・アクセス可能レジスタをクリアすると判断することとをさらに含む、請求項1に記載のコンピュータ・システム。
  3. 前記スレッド・コンテキストが、プログラム汎用レジスタと、浮動小数点レジスタと、制御レジスタと、アクセス・レジスタと、プレフィックス・レジスタと、時刻(TOD)プログラマブル・レジスタとを含む、請求項1に記載のコンピュータ・システム。
  4. 前記スレッド・コンテキストが、各スレッドのためのプログラム状態ワードをさらに含む、請求項3に記載のコンピュータ・システム。
  5. 最後に正常に実行されたシグナル・プロセッサ命令に基づいて、直前設定プログラム指定最大スレッド識別子が設定される、請求項4に記載のコンピュータ・システム。
  6. 前記MTモードへの切換えに基づいて、対応する二次スレッドが再有効化されることに基づき前記プログラム・アクセス可能レジスタ値にプログラムがアクセスすることができるようにする、請求項1に記載のコンピュータ・システム。
  7. 前記一次スレッドのプログラム・アクセス可能レジスタ値とプログラム・カウンタ値とを含む一次スレッド・コンテキストに、前記STモードと前記MTモードの両方でプログラムがアクセス可能である、請求項1に記載のコンピュータ・システム。
  8. 前記スレッド・コンテキストが、状態記述ブロック、メモリ内の前記状態記述ブロックにアンカーされたサテライト・ブロック、またはコンテキスト・レジスタのうちのいずれかで維持される、請求項1に記載のコンピュータ・システム。
  9. シングル・スレッド(ST)モードとマルチスレッディング(MT)モードとの間で切換え構成可能なコアを含む構成におけるスレッド・コンテキスト保存のためのコンピュータ実装方法であって、前記STモードは一次スレッドを扱い、前記MTモードは前記一次スレッドと前記コアの共用資源上の1つまたは複数の二次スレッドとを扱い、前記方法は、
    MTを無効化するという前記MTモードの前記コアによる判断に基づいて、前記MTモードから前記STモードに切り換えることであって、前記MTモードの前記一次スレッドが前記STモードの前記一次スレッドとして維持され、前記1つまたは複数の二次スレッドのプログラム・アクセス可能レジスタ値とプログラム・カウンタ値とを含むスレッド・コンテキストにプログラムがアクセスできないようにする、前記切り換えることと、
    前記切換えに基づいて、前記プログラム・アクセス可能レジスタ値をクリアするかまたは前記プログラム・アクセス可能レジスタ値を保持するかのいずれか一方を実行することとを含む、コンピュータ実装方法。
  10. MTを無効化するという前記判断は、
    非クリア動作に基づいて、前記プログラム・アクセス可能レジスタ値を保持すると判断することと、
    クリア動作に基づいて、前記プログラム・アクセス可能レジスタをクリアすると判断することとをさらに含む、請求項9に記載の方法。
  11. 前記スレッド・コンテキストが、プログラム汎用レジスタと、浮動小数点レジスタと、制御レジスタと、アクセス・レジスタと、プレフィックス・レジスタと、時刻(TOD)プログラマブル・レジスタとを含む、請求項9に記載の方法。
  12. 前記スレッド・コンテキストが、各スレッドのためのプログラム状態ワードをさらに含む、請求項11に記載の方法。
  13. 最後に正常に実行されたシグナル・プロセッサ命令に基づいて、直前設定プログラム指定最大スレッド識別子が設定される、請求項12に記載の方法。
  14. 前記MTモードへの切換えに基づいて、対応する二次スレッドが再有効化されることに基づき前記プログラム・アクセス可能レジスタ値にプログラムがアクセスすることができるようにする、請求項9に記載の方法。
  15. 前記一次スレッドのプログラム・アクセス可能レジスタ値とプログラム・カウンタ値とを含む一次スレッド・コンテキストに、前記STモードと前記MTモードの両方でプログラムがアクセス可能である、請求項9に記載の方法。
  16. シングル・スレッド(ST)モードとマルチスレッディング(MT)モードとの間で切換え構成可能なコアを含む構成におけるスレッド・コンテキスト保存のためのコンピュータ・プログラム製品であって、前記STモードは一次スレッドを扱い、前記MTモードは前記一次スレッドと前記コアの共用資源上の1つまたは複数の二次スレッドとを扱い、前記コンピュータ・プログラム製品は、
    プログラム命令が具現化されたコンピュータ可読記憶媒体を含み、前記コンピュータ可読記憶媒体は信号ではなく、前記プログラム命令は、処理回路による読取りが可能であって、前記処理回路に、
    MTを無効化するという前記MTモードの前記コアによる判断に基づいて、前記MTモードから前記STモードに切り換えることであって、前記MTモードの前記一次スレッドが前記STモードの前記一次スレッドとして維持され、前記1つまたは複数の二次スレッドのプログラム・アクセス可能レジスタ値とプログラム・カウンタ値とを含むスレッド・コンテキストにプログラムがアクセスできないようにする、前記切り換えることと、
    前記切換えに基づいて、前記プログラム・アクセス可能レジスタ値をクリアするかまたは前記プログラム・アクセス可能レジスタ値を保持するかのいずれか一方を実行することとを含む方法を実行させる、コンピュータ・プログラム製品。
  17. MTを無効化するという前記判断は、
    非クリア動作に基づいて、前記プログラム・アクセス可能レジスタ値を保持すると判断することと、
    クリア動作に基づいて、前記プログラム・アクセス可能レジスタをクリアすると判断することとをさらに含む、請求項16に記載のコンピュータ・プログラム製品。
  18. 前記スレッド・コンテキストが、プログラム汎用レジスタと、浮動小数点レジスタと、制御レジスタと、アクセス・レジスタと、プレフィックス・レジスタと、時刻(TOD)プログラマブル・レジスタとを含む、請求項16に記載のコンピュータ・プログラム製品。
  19. 前記スレッド・コンテキストが、各スレッドのためのプログラム状態ワードをさらに含む、請求項18に記載のコンピュータ・プログラム製品。
  20. 最後に正常に実行されたシグナル・プロセッサ命令に基づいて、直前設定プログラム指定最大スレッド識別子が設定される、請求項19に記載のコンピュータ・プログラム製品。
JP2016557108A 2014-03-27 2015-03-19 マルチスレッディング・コンピュータ・システムにおけるスレッド・コンテキスト保存のためのコンピュータ・システム、コンピュータ実装方法およびコンピュータ・プログラム製品 Active JP6509245B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/226,895 2014-03-27
US14/226,895 US9804846B2 (en) 2014-03-27 2014-03-27 Thread context preservation in a multithreading computer system
PCT/EP2015/055744 WO2015144543A1 (en) 2014-03-27 2015-03-19 Thread context preservation in a multithreading computer system

Publications (2)

Publication Number Publication Date
JP2017513111A true JP2017513111A (ja) 2017-05-25
JP6509245B2 JP6509245B2 (ja) 2019-05-08

Family

ID=52727119

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016557108A Active JP6509245B2 (ja) 2014-03-27 2015-03-19 マルチスレッディング・コンピュータ・システムにおけるスレッド・コンテキスト保存のためのコンピュータ・システム、コンピュータ実装方法およびコンピュータ・プログラム製品

Country Status (5)

Country Link
US (2) US9804846B2 (ja)
EP (1) EP3123324A1 (ja)
JP (1) JP6509245B2 (ja)
CN (1) CN106133690B (ja)
WO (1) WO2015144543A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017515202A (ja) * 2014-03-27 2017-06-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コンピュータ内の複数のスレッドをエグジットするための方法、システム、およびコンピュータ・プログラム
JP2017515203A (ja) * 2014-03-27 2017-06-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コンピュータにおいて複数のスレッドをディスパッチするための方法、システム、およびコンピュータ・プログラム

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
GB2539041B (en) * 2015-06-05 2019-10-02 Advanced Risc Mach Ltd Mode switching in dependence upon a number of active threads
US20170031724A1 (en) * 2015-07-31 2017-02-02 Futurewei Technologies, Inc. Apparatus, method, and computer program for utilizing secondary threads to assist primary threads in performing application tasks
US11150943B2 (en) * 2017-04-10 2021-10-19 Intel Corporation Enabling a single context hardware system to operate as a multi-context system
US11119972B2 (en) * 2018-05-07 2021-09-14 Micron Technology, Inc. Multi-threaded, self-scheduling processor
US11119782B2 (en) * 2018-05-07 2021-09-14 Micron Technology, Inc. Thread commencement using a work descriptor packet in a self-scheduling processor
US11126587B2 (en) * 2018-05-07 2021-09-21 Micron Technology, Inc. Event messaging in a system having a self-scheduling processor and a hybrid threading fabric
CN109189477B (zh) * 2018-06-27 2021-09-28 北京中科睿芯科技集团有限公司 一种面向多上下文粗粒度数据流结构的指令发射控制方法
CN112395005B (zh) * 2019-08-19 2022-07-12 无锡江南计算技术研究所 浮点simd上下文切换的性能优化方法
CN113407214B (zh) * 2021-06-24 2023-04-07 广东泰坦智能动力有限公司 一种基于can通信的可重构化多线程并行上位机系统
CN116955044B (zh) * 2023-09-12 2023-12-22 北京开源芯片研究院 处理器的缓存工作机制的测试方法、装置、设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4965720A (en) * 1988-07-18 1990-10-23 International Business Machines Corporation Directed address generation for virtual-address data processors
JPH05173783A (ja) * 1991-04-24 1993-07-13 Internatl Business Mach Corp <Ibm> 命令パイプラインをドレーンさせるためのシステムおよび方法
US20030101365A1 (en) * 1999-06-21 2003-05-29 David Arlen Elko Method, system and program products for generating sequence values that are unique across operating system images
JP2007317171A (ja) * 2006-04-27 2007-12-06 Matsushita Electric Ind Co Ltd マルチスレッド計算機システム、マルチスレッド実行制御方法
US20080114973A1 (en) * 2006-10-31 2008-05-15 Norton Scott J Dynamic hardware multithreading and partitioned hardware multithreading
WO2011104812A1 (ja) * 2010-02-23 2011-09-01 富士通株式会社 マルチコアプロセッサシステム、割込プログラム、および割込方法

Family Cites Families (140)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6086157A (en) * 1991-01-10 2000-07-11 Toso; Victor Ergonomic chair
US5684993A (en) 1993-01-04 1997-11-04 Microsoft Corporation Segregation of thread-specific information from shared task information
US5613114A (en) 1994-04-15 1997-03-18 Apple Computer, Inc System and method for custom context switching
US5799188A (en) 1995-12-15 1998-08-25 International Business Machines Corporation System and method for managing variable weight thread contexts in a multithreaded computer system
US5872963A (en) 1997-02-18 1999-02-16 Silicon Graphics, Inc. Resumption of preempted non-privileged threads with no kernel intervention
US6418460B1 (en) 1997-02-18 2002-07-09 Silicon Graphics, Inc. System and method for finding preempted threads in a multi-threaded application
US6658447B2 (en) 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US6104700A (en) 1997-08-29 2000-08-15 Extreme Networks Policy based quality of service
US6487578B2 (en) 1997-09-29 2002-11-26 Intel Corporation Dynamic feedback costing to enable adaptive control of resource utilization
US6272625B1 (en) 1997-10-08 2001-08-07 Oak Technology, Inc. Apparatus and method for processing events in a digital versatile disc (DVD) system using system threads and separate dormant/awake counter threads and clock driven semaphores
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
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
US6401155B1 (en) 1998-12-22 2002-06-04 Philips Electronics North America Corporation Interrupt/software-controlled thread processing
US6341347B1 (en) 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6542991B1 (en) 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
US6542921B1 (en) 1999-07-08 2003-04-01 Intel Corporation Method and apparatus for controlling the processing priority between multiple threads in a multithreaded processor
US6889319B1 (en) 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
AU2597401A (en) 1999-12-22 2001-07-03 Ubicom, Inc. System and method for instruction level multithreading in an embedded processor using zero-time context switching
US6484254B1 (en) * 1999-12-30 2002-11-19 Intel Corporation Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses
US6542984B1 (en) * 2000-01-03 2003-04-01 Advanced Micro Devices, Inc. Scheduler capable of issuing and reissuing dependency chains
US6981180B1 (en) 2000-03-16 2005-12-27 Akamai Technologies, Inc. Method and apparatus for testing request-response service using live connection traffic
US6757811B1 (en) 2000-04-19 2004-06-29 Hewlett-Packard Development Company, L.P. Slack fetch to improve performance in a simultaneous and redundantly threaded processor
US6792525B2 (en) 2000-04-19 2004-09-14 Hewlett-Packard Development Company, L.P. Input replicator for interrupts in a simultaneous and redundantly threaded processor
US6658654B1 (en) 2000-07-06 2003-12-02 International Business Machines Corporation Method and system for low-overhead measurement of per-thread performance information in a multithreaded environment
US6745323B1 (en) * 2000-08-03 2004-06-01 International Business Machines Corporation Global history vector recovery circuits and methods and systems using the same
US7073173B1 (en) 2000-12-04 2006-07-04 Microsoft Corporation Code and thread differential addressing via multiplex page maps
US7707397B2 (en) 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
EP1256877A1 (en) 2001-05-10 2002-11-13 Hewlett-Packard Company, A Delaware Corporation Manufacture of computer systems
US6954846B2 (en) 2001-08-07 2005-10-11 Sun Microsystems, Inc. Microprocessor and method for giving each thread exclusive access to one register file in a multi-threading mode and for giving an active thread access to multiple register files in a single thread mode
US7363474B2 (en) 2001-12-31 2008-04-22 Intel Corporation Method and apparatus for suspending execution of a thread until a specified memory access occurs
JP3813930B2 (ja) 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
US8024735B2 (en) 2002-06-14 2011-09-20 Intel Corporation Method and apparatus for ensuring fairness and forward progress when executing multiple threads of execution
US7058795B2 (en) * 2002-06-25 2006-06-06 Intel Corporation Method and apparatus of branch prediction
US6904511B2 (en) 2002-10-11 2005-06-07 Sandbridge Technologies, Inc. Method and apparatus for register file port reduction in a multithreaded processor
US7185338B2 (en) 2002-10-15 2007-02-27 Sun Microsystems, Inc. Processor with speculative multithreading and hardware to support multithreading software
US7533012B2 (en) 2002-12-13 2009-05-12 Sun Microsystems, Inc. Multi-user web simulator
US7822950B1 (en) 2003-01-22 2010-10-26 Ubicom, Inc. Thread cancellation and recirculation in a computer processor for avoiding pipeline stalls
US20040154010A1 (en) 2003-01-31 2004-08-05 Pedro Marcuello Control-quasi-independent-points guided speculative multithreading
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US7496915B2 (en) 2003-04-24 2009-02-24 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
US7290261B2 (en) 2003-04-24 2007-10-30 International Business Machines Corporation Method and logical apparatus for rename register reallocation in a simultaneous multi-threaded (SMT) processor
US20040216101A1 (en) 2003-04-24 2004-10-28 International Business Machines Corporation Method and logical apparatus for managing resource redistribution in a simultaneous multi-threaded (SMT) processor
US7360062B2 (en) 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
US7424599B2 (en) * 2003-08-28 2008-09-09 Mips Technologies, Inc. Apparatus, method, and instruction for software management of multiple computational contexts in a multithreaded microprocessor
US7849297B2 (en) 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7836450B2 (en) 2003-08-28 2010-11-16 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US20050071422A1 (en) 2003-09-25 2005-03-31 International Business Machines Corporation Method, system, and computer program product for an automation tool adapter for use with multiple different automation tools
US7493621B2 (en) * 2003-12-18 2009-02-17 International Business Machines Corporation Context switch data prefetching in multithreaded computer
US7210073B1 (en) 2003-12-31 2007-04-24 Precise Software Solutions Ltd. Workflows for performance management methodology
US20050183065A1 (en) 2004-02-13 2005-08-18 Wolczko Mario I. Performance counters in a multi-threaded processor
US7426731B2 (en) 2004-03-22 2008-09-16 Hewlett-Packard Development Company, L.P. Determining processor usage by a thread
US20050251649A1 (en) 2004-04-23 2005-11-10 Sony Computer Entertainment Inc. Methods and apparatus for address map optimization on a multi-scalar extension
US7216223B2 (en) 2004-04-30 2007-05-08 Hewlett-Packard Development Company, L.P. Configuring multi-thread status
US7607141B2 (en) 2004-05-03 2009-10-20 Microsoft Corporation Systems and methods for support of various processing capabilities
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7519796B1 (en) 2004-06-30 2009-04-14 Sun Microsystems, Inc. Efficient utilization of a store buffer using counters
US7565659B2 (en) 2004-07-15 2009-07-21 International Business Machines Corporation Light weight context switching
JP4956891B2 (ja) 2004-07-26 2012-06-20 富士通株式会社 演算処理装置,情報処理装置および演算処理装置の制御方法
JP4504132B2 (ja) 2004-07-30 2010-07-14 富士通株式会社 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法
US7836288B2 (en) * 2004-09-14 2010-11-16 Arm Limited Branch prediction mechanism including a branch prediction memory and a branch prediction cache
JP4487744B2 (ja) * 2004-11-29 2010-06-23 富士通株式会社 マルチスレッド制御装置及び制御方法
US7707578B1 (en) 2004-12-16 2010-04-27 Vmware, Inc. Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system
US8621458B2 (en) 2004-12-21 2013-12-31 Microsoft Corporation Systems and methods for exposing processor topology for virtual machines
US8015566B2 (en) 2005-01-13 2011-09-06 Lenovo (Singapore) Pte. Ltd. Attributing energy consumption to individual code threads in a data processing system
US7317907B2 (en) 2005-01-31 2008-01-08 Research In Motion Limited Synchronizing server and device data using device data schema
US7490230B2 (en) 2005-02-04 2009-02-10 Mips Technologies, Inc. Fetch director employing barrel-incrementer-based round-robin apparatus for use in multithreading microprocessor
US20060242389A1 (en) 2005-04-21 2006-10-26 International Business Machines Corporation Job level control of simultaneous multi-threading functionality in a processor
US8010969B2 (en) 2005-06-13 2011-08-30 Intel Corporation Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers
JP4963018B2 (ja) 2005-08-15 2012-06-27 株式会社ソニー・コンピュータエンタテインメント スケジューリング方法およびスケジューリング装置
US8402224B2 (en) 2005-09-20 2013-03-19 Vmware, Inc. Thread-shared software code caches
US7627735B2 (en) 2005-10-21 2009-12-01 Intel Corporation Implementing vector memory operations
US8275942B2 (en) 2005-12-22 2012-09-25 Intel Corporation Performance prioritization in multi-threaded processors
US9323578B2 (en) 2006-01-19 2016-04-26 International Business Machines Corporation Analyzing wait states in a data processing system
US7577826B2 (en) 2006-01-30 2009-08-18 Sony Computer Entertainment Inc. Stall prediction thread management
US7584332B2 (en) * 2006-02-17 2009-09-01 University Of Notre Dame Du Lac Computer systems with lightweight multi-threaded architectures
CN100571167C (zh) 2006-02-24 2009-12-16 国际商业机器公司 Web服务业务流程的单元测试的方法和设备
US7487340B2 (en) * 2006-06-08 2009-02-03 International Business Machines Corporation Local and global branch prediction information storage
US8041929B2 (en) 2006-06-16 2011-10-18 Cisco Technology, Inc. Techniques for hardware-assisted multi-threaded processing
US8813082B2 (en) * 2006-06-22 2014-08-19 International Business Machines Corporation Thread priority based on object creation rates
US8136111B2 (en) 2006-06-27 2012-03-13 International Business Machines Corporation Managing execution of mixed workloads in a simultaneous multi-threaded (SMT) enabled system
US7634642B2 (en) 2006-07-06 2009-12-15 International Business Machines Corporation Mechanism to save and restore cache and translation trace for fast context switch
US7941643B2 (en) * 2006-08-14 2011-05-10 Marvell World Trade Ltd. Multi-thread processor with multiple program counters
US8839271B2 (en) 2006-10-11 2014-09-16 International Business Machines Corporation Call stack sampling to obtain information for analyzing idle states in a data processing system
US8117478B2 (en) 2006-12-29 2012-02-14 Intel Corporation Optimizing power usage by processor cores based on architectural events
US7584346B1 (en) 2007-01-25 2009-09-01 Sun Microsystems, Inc. Method and apparatus for supporting different modes of multi-threaded speculative execution
US8156496B2 (en) 2007-01-31 2012-04-10 Hewlett-Packard Development Company, L.P. Data processing system and method
US9195462B2 (en) 2007-04-11 2015-11-24 Freescale Semiconductor, Inc. Techniques for tracing processes in a multi-threaded processor
CN101042640A (zh) 2007-04-24 2007-09-26 上海华龙信息技术开发中心 一种带有位扩充和位压缩单元的数字信号处理器
US20080270658A1 (en) 2007-04-27 2008-10-30 Matsushita Electric Industrial Co., Ltd. Processor system, bus controlling method, and semiconductor device
CN101681260B (zh) 2007-06-20 2013-04-17 富士通株式会社 运算装置
WO2009076654A1 (en) 2007-12-12 2009-06-18 University Of Washington Deterministic multiprocessing
US8544006B2 (en) 2007-12-19 2013-09-24 International Business Machines Corporation Resolving conflicts by restarting execution of failed discretely executable subcomponent using register and memory values generated by main component after the occurrence of a conflict
CN101216725B (zh) 2008-01-04 2011-04-27 东南大学 利用堆栈深度进行多线程预测的动态功耗控制方法
US7734900B2 (en) 2008-01-11 2010-06-08 International Business Machines Corporation Computer configuration virtual topology discovery and instruction therefore
US7559061B1 (en) 2008-03-16 2009-07-07 International Business Machines Corporation Simultaneous multi-threading control monitor
US8117602B2 (en) 2008-04-01 2012-02-14 Kaspersky Lab, Zao Method and system for monitoring execution performance of software program product
US8495662B2 (en) 2008-08-11 2013-07-23 Hewlett-Packard Development Company, L.P. System and method for improving run-time performance of applications with multithreaded and single threaded routines
US8209437B2 (en) 2008-09-25 2012-06-26 Rockliffe Systems, Inc. Personal information management data synchronization
US7873816B2 (en) 2008-11-20 2011-01-18 International Business Machines Corporation Pre-loading context states by inactive hardware thread in advance of context switch
US20100135179A1 (en) 2008-11-28 2010-06-03 International Business Machines Corporation Communication device
US8402464B2 (en) 2008-12-01 2013-03-19 Oracle America, Inc. System and method for managing contention in transactional memory using global execution data
US8572581B2 (en) 2009-03-26 2013-10-29 Microsoft Corporation Measurement and reporting of performance event rates
US8346509B2 (en) 2009-04-08 2013-01-01 Intel Corporation Context switch sampling
US8949582B2 (en) 2009-04-27 2015-02-03 Lsi Corporation Changing a flow identifier of a packet in a multi-thread, multi-flow network processor
GB2469822B (en) 2009-04-28 2011-04-20 Imagination Tech Ltd Method and apparatus for scheduling the issue of instructions in a multithreaded microprocessor
US9672132B2 (en) 2009-11-19 2017-06-06 Qualcomm Incorporated Methods and apparatus for measuring performance of a multi-thread processor
US8612978B2 (en) 2009-12-10 2013-12-17 Oracle America, Inc. Code execution utilizing single or multiple threads
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
US8381216B2 (en) 2010-03-05 2013-02-19 Microsoft Corporation Dynamic thread pool management
US20110283286A1 (en) 2010-05-11 2011-11-17 Dell Products L.P. Methods and systems for dynamically adjusting performance states of a processor
CN103109279B (zh) 2010-06-22 2016-08-31 富士通株式会社 多核处理器系统,控制程序以及控制方法
US8392473B2 (en) 2010-09-07 2013-03-05 Microgen Aptitude Limited Fast hierarchical enrichment
US8677361B2 (en) 2010-09-30 2014-03-18 International Business Machines Corporation Scheduling threads based on an actual power consumption and a predicted new power consumption
US8656408B2 (en) 2010-09-30 2014-02-18 International Business Machines Corporations Scheduling threads in a processor based on instruction type power consumption
US8418177B2 (en) 2010-10-01 2013-04-09 Microsoft Corporation Virtual machine and/or multi-level scheduling support on systems with asymmetric processor cores
US8601193B2 (en) 2010-10-08 2013-12-03 International Business Machines Corporation Performance monitor design for instruction profiling using shared counters
US8489787B2 (en) 2010-10-12 2013-07-16 International Business Machines Corporation Sharing sampled instruction address registers for efficient instruction sampling in massively multithreaded processors
US20120137295A1 (en) 2010-11-30 2012-05-31 Alcatel-Lucent Canada Inc. Method for displaying cpu utilization in a multi-processing system
WO2012108058A1 (ja) 2011-02-10 2012-08-16 富士通株式会社 スケジューリング方法、設計支援方法、およびシステム
US9213551B2 (en) 2011-03-11 2015-12-15 Oracle International Corporation Return address prediction in multithreaded processors
US9330430B2 (en) 2011-03-21 2016-05-03 Apple Inc. Fast queries in a multithreaded queue of a graphics system
US9015449B2 (en) 2011-03-27 2015-04-21 International Business Machines Corporation Region-weighted accounting of multi-threaded processor core according to dispatch state
GB2489708B (en) 2011-04-05 2020-04-15 Advanced Risc Mach Ltd Thread selection for multithreaded processing
US8695010B2 (en) 2011-10-03 2014-04-08 International Business Machines Corporation Privilege level aware processor hardware resource management facility
CA2759365A1 (en) 2011-11-24 2013-05-24 Ibm Canada Limited - Ibm Canada Limitee Identification of thread progress information
US9075610B2 (en) 2011-12-15 2015-07-07 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including thread consolidation
US9720744B2 (en) 2011-12-28 2017-08-01 Intel Corporation Performance monitoring of shared processing resources
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
CN102566974B (zh) 2012-01-14 2014-03-26 哈尔滨工程大学 基于同时多线程的取指控制方法
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
US8751830B2 (en) 2012-01-23 2014-06-10 International Business Machines Corporation Memory address translation-based data encryption/compression
US8966232B2 (en) 2012-02-10 2015-02-24 Freescale Semiconductor, Inc. Data processing system operable in single and multi-thread modes and having multiple caches and method of operation
US20130283280A1 (en) 2012-04-20 2013-10-24 Qualcomm Incorporated Method to reduce multi-threaded processor power consumption
US9075735B2 (en) 2012-06-21 2015-07-07 Breakingpoint Systems, Inc. Systems and methods for efficient memory access
US9208044B2 (en) 2012-06-25 2015-12-08 Infosys Limited Methods for simulating message-oriented services and devices thereof
US9529719B2 (en) 2012-08-05 2016-12-27 Advanced Micro Devices, Inc. Dynamic multithreaded cache allocation
US8984313B2 (en) 2012-08-31 2015-03-17 Intel Corporation Configuring power management functionality in a processor including a plurality of cores by utilizing a register to store a power domain indicator
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
CN103488684B (zh) 2013-08-23 2016-12-28 国家电网公司 基于缓存数据多线程处理的电力可靠性指标快速计算方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4965720A (en) * 1988-07-18 1990-10-23 International Business Machines Corporation Directed address generation for virtual-address data processors
JPH05173783A (ja) * 1991-04-24 1993-07-13 Internatl Business Mach Corp <Ibm> 命令パイプラインをドレーンさせるためのシステムおよび方法
US20030101365A1 (en) * 1999-06-21 2003-05-29 David Arlen Elko Method, system and program products for generating sequence values that are unique across operating system images
JP2007317171A (ja) * 2006-04-27 2007-12-06 Matsushita Electric Ind Co Ltd マルチスレッド計算機システム、マルチスレッド実行制御方法
US20080114973A1 (en) * 2006-10-31 2008-05-15 Norton Scott J Dynamic hardware multithreading and partitioned hardware multithreading
WO2011104812A1 (ja) * 2010-02-23 2011-09-01 富士通株式会社 マルチコアプロセッサシステム、割込プログラム、および割込方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017515202A (ja) * 2014-03-27 2017-06-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コンピュータ内の複数のスレッドをエグジットするための方法、システム、およびコンピュータ・プログラム
JP2017515203A (ja) * 2014-03-27 2017-06-08 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コンピュータにおいて複数のスレッドをディスパッチするための方法、システム、およびコンピュータ・プログラム

Also Published As

Publication number Publication date
US20150347132A1 (en) 2015-12-03
EP3123324A1 (en) 2017-02-01
JP6509245B2 (ja) 2019-05-08
US9804847B2 (en) 2017-10-31
US9804846B2 (en) 2017-10-31
CN106133690B (zh) 2019-04-26
US20150277919A1 (en) 2015-10-01
CN106133690A (zh) 2016-11-16
WO2015144543A1 (en) 2015-10-01

Similar Documents

Publication Publication Date Title
JP6501789B2 (ja) マルチスレッディングの動的有効化のためのコンピュータ・システム、コンピュータ実装方法およびコンピュータ・プログラム製品
JP6509245B2 (ja) マルチスレッディング・コンピュータ・システムにおけるスレッド・コンテキスト保存のためのコンピュータ・システム、コンピュータ実装方法およびコンピュータ・プログラム製品
JP6474425B2 (ja) マルチスレッディング・コンピュータシステムにおけるアドレス拡張及び短縮
JP6509246B2 (ja) マルチスレッディング・コンピュータ・システムにおいてスレッド・コンテキストを復元するのためのコンピュータ・システム、コンピュータ実装方法およびコンピュータ・プログラム
JP6440734B2 (ja) マルチスレッディング・コンピュータ・システムにおける利用を追跡するコンピュータ実装方法、システムおよびコンピュータ・プログラム
JP6474426B2 (ja) マルチスレッディング能力情報取得

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180903

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181122

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: 20190312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190402

R150 Certificate of patent or registration of utility model

Ref document number: 6509245

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150