JP6474426B2 - マルチスレッディング能力情報取得 - Google Patents

マルチスレッディング能力情報取得 Download PDF

Info

Publication number
JP6474426B2
JP6474426B2 JP2016558621A JP2016558621A JP6474426B2 JP 6474426 B2 JP6474426 B2 JP 6474426B2 JP 2016558621 A JP2016558621 A JP 2016558621A JP 2016558621 A JP2016558621 A JP 2016558621A JP 6474426 B2 JP6474426 B2 JP 6474426B2
Authority
JP
Japan
Prior art keywords
mode
thread
core
configuration
cpu
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.)
Active
Application number
JP2016558621A
Other languages
English (en)
Other versions
JP2017513121A (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 JP2017513121A publication Critical patent/JP2017513121A/ja
Application granted granted Critical
Publication of JP6474426B2 publication Critical patent/JP6474426B2/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/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/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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • 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 or 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/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)

Description

本発明は、一般に多重スレッドをサポートするコンピュータシステムに関し、より詳細には、コンピュータシステムにおけるマルチスレッディング能力情報の取得に関する。
コンピュータシステムのプロセッサ速度は、過去10年間にわたって速くなってきているが、このようなコンピュータシステムのメモリにアクセスすることができる速度はそれに比例して速くなっていない。それゆえ、プロセッサのサイクル時間が速くなるにつれ、メモリからデータをフェッチするための待機の遅延がますます顕著になってきている。このような遅延の影響は、種々のレベルのキャッシングにより軽減されており、最近のプロセッサではマルチスレッディング(MT)により軽減されている。
MTは、プロセッサの種々のコア・リソースを、スレッドとして知られる複数の命令ストリームで共有することを可能にする。コア・リソースは、実行ユニット、キャッシュ、変換ルックアサイド・バッファ(TLB)などを含むことができ、これらを集合的に一般にコアと呼ぶことができる。1つのスレッドにおけるキャッシュ・ミス又はその他の遅延により生じる待ち時間の間、1つ又は複数の他のスレッドがコア・リソースを利用することができ、これによりコア・リソースの使用率が高まる。スーパー・スカラー・プロセッサの同時マルチスレッディング(SMT)実装では、多重スレッドが、1つ又は複数のコアのコア・リソースによるサービスを同時に受けることができる。
現代のハードウェア・プラットフォームにおいて、MTは、典型的には、MTハードウェア上で実行されるオペレーティングシステム(OS)に対して透過的な方式で実装される。この特徴の1つの態様は、OSがMTハードウェアを利用するのに修正を必要としないことである。しかしながら、OSに関して透過的MT動作の結果として、応答時間、容量(capacity)の準備、容量の計画、及びビリングの高い変動性が生じることがある。この変動性は、OSが、そのタスクがコアの排他的制御を有しているのか又はそのタスクがコアを共有するスレッドとして実行されているのか気づかない(unaware)ことにより生じる場合がある。設計により、MT可能ハードウェア上のメモリ集約的作業負荷のための最高容量は、コア使用時に高い平均スレッド密度がある場合に達成可能である。付加的な容量は、MTにより提供されるキャッシュ活用の増大によるものであり得る。OSが、利用されるコアに対して高い平均スレッド密度を一貫して維持しない場合、MTにより提供される付加的な総スループット容量は利用可能にならない。例えば、ハードウェアが、コンピュータ利用率が低いときには1コア当たり単一のMTスレッドを実行し、コンピュータ利用率が高いときには高いスレッド密度で実行する場合、作業負荷に対してどれだけの総MTコンピュート容量が利用可能であるのかを判定することは非常に困難であり得る。このMTスレッド活用におけるハードウェア変動性は、トランザクション応答時間及びビリングの両方において、容量に関して先に説明したのと同様の様式で変動性をもたらす場合がある。
「z/Architecture Principles of Operation」IBM刊行番号SA22−7832−09、2012年8月
本発明の目的は、マルチスレッディング能力情報取得のためのシステム、方法、及びコンピュータ・プログラム製品を提供することである。
実施形態は、マルチスレッディング能力情報取得のためのシステム、方法、及びコンピュータ・プログラム製品を含む。1つの態様によれば、コンピュータシステムは、単一スレッド(ST)モードとマルチスレッディング(MT)モードとの間で構成可能な1つ又は複数のコアを有するコンフィギュレーションを含む。STモードは、第一スレッドをサポートし、MTモードは、各コアの共有リソース上で第一スレッド及び1以上の第二スレッドをサポートする。コンピュータシステムはまた、コンフィギュレーションの利用を制御して、コアにより、マルチスレッディング能力情報取得(retrieve multithreading capability information、RMTCI)命令を実行することを含む方法を行うように構成された、マルチスレッディング・ファシリティを含む。実行は、コンフィギュレーションのマルチスレッディング能力を識別するスレッド識別情報を取得することと、取得したスレッド識別情報を格納することと、を含む。
別の態様によれば、コンフィギュレーションにおけるマルチスレッディング能力情報取得のためのコンピュータ実装の方法が提供される。コンフィギュレーションは、STモードとMTモードとの間で構成可能な1つ又は複数のコアを含み、ここでSTモードは、第一スレッドをサポートし、MTモードは、各コアの共有リソース上で第一スレッド及び1以上の第二スレッドをサポートする。方法は、コアにより、マルチスレッディング能力情報取得命令を実行することを含む。実行は、コンフィギュレーションのマルチスレッディング能力を識別するスレッド識別情報を取得することと、取得したスレッド識別情報を格納することと、を含む。
さらなる態様は、コンフィギュレーションにおけるマルチスレッディング能力情報取得のためのコンピュータ・プログラム製品を含む。コンフィギュレーションは、STモードとMTモードとの間で構成可能な1つ又は複数のコアを含み、ここでSTモードは、第一スレッドをサポートし、MTモードは、各コアの共有リソース上で第一スレッド及び1以上の第二スレッドをサポートする。コンピュータ・プログラム製品は、具体化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含み、ここでコンピュータ可読媒体は、信号ではない。プログラム命令は、処理回路により可読であり、処理回路に方法を実行させる。方法は、コアにより、マルチスレッディング能力情報取得命令を実行することを含む。実行は、コンフィギュレーションのマルチスレッディング能力を識別するスレッド識別情報を取得することと、取得したスレッド識別情報を格納することと、を含む。
実施形態であるとみなされる主題は、本明細書の結論部にある特許請求の範囲において特に指摘され、明確に特許請求される。実施形態の上記及び他の特徴、並びに利点は、添付図面と共に解釈される以下の詳細な説明から明らかである。
実施形態により実装することができるコンピューティング環境を示す。 実施形態により実装することができるコンピューティング環境を示す。 実施形態により実装することができるコアの処理回路を示す。 実施形態により実装することができるコンピューティング環境を示す。 実施形態により実装することができるコンピューティング環境におけるハイパーバイザ・コンテキスト保持の例を示す。 実施形態によるマルチスレッディングの動的イネーブルメントのプロセスフローを示す。 実施形態によるCPUアドレス拡張プロセスの例を示す。 実施形態によるCPUアドレス短縮プロセスの例を示す。 実施形態によるマルチスレッディング設定(set−multithreading)指令のプロセスフローを示す。 実施形態によるマルチスレッディング能力情報の格納の例を示す。 実施形態によるマルチスレッディング能力を判定するためのプロセスフローを示す。 実施形態による種々のスレッド・コンテキスト位置の例を示す。 実施形態によるマルチスレッディング・レジスタ保存の例を示す。 実施形態によるマルチスレッディング・レジスタ保存のためのプロセスフローを示す。 実施形態によるマルチスレッディング・レジスタ復元の例を示す。 実施形態によるマルチスレッディング・レジスタ復元のためのプロセスフローを示す。 実施形態によるコンピュータ可読媒体を示す。
例示的な実施形態は、単一スレッド及びマルチスレッディング動作モードをサポートするコンピュータシステムにおける、マルチスレッディング動作を提供する。本明細書において用いる場合、論理スレッドは、単一命令ストリーム及びそれに関連付けられた状態を指す。すなわち、アーキテクチャ・レベルにおいて、各論理スレッドは、独立した中央処理ユニット(CPU)又はプロセッサを表す。ハードウェア・レベルにおいて、スレッドは、論理スレッドに関連付けられた命令ストリームの実行であり、スレッドがディスパッチされたとき、そのゲスト状態の維持と組み合わされる。したがって、「スレッド」及び「CPU」という用語は、本明細書において互換的に用いることができる。
例示的な実施形態において、CPUは、命令実行、割込み動作、タイミング機能、初期プログラム・ロード、及び他のマシン関連機能のための、順番付け及び処理ファシリティを収容する。CPUは、種々の下層の物理的実装にマップすることができる論理関数を定義する。CPUは、命令を実行する際に、固定長の2進整数及び浮動小数点数(例えば、2進、10進、16進)、可変長の10進整数、並びに固定長又は可変長いずれかの論理情報を処理することができる。処理は、並列又は直列とすることができる。処理要素の幅、シフティング経路の多重度、及び異なる型式の算術を実行する同時性度は、論理的結果に影響を与えることなく、CPUの型式ごとに異なったものであり得る。
CPUが実行する命令は、汎用命令、10進命令、浮動小数点サポート(FPS)命令、2進浮動小数点(BFP)命令、10進浮動小数点(DFP)命令、16進浮動小数点(HFP)命令、制御命令、及びI/O命令などの、多数の命令クラスを含むことができる。汎用命令は、2進整数算術演算、並びに論理演算、分岐演算、及びその他の非算術演算を行う際に用いることができる。10進命令は、10進形式のデータ上で動作する。BFP、DFP、及びHFP命令は、それぞれBFP、DFP、及びHFP形式のデータ上で動作し、一方、FPS命令は、形式に無関係に浮動小数点データ上で動作し、又は1つの形式を別の形式に変換する。特権制御命令及びI/O命令は、CPUがスーパバイザ状態にあるときに実行されることができ、準特権制御命令は、適切な認証機構に従属する、問題状態(problem state)において実行されることができる。
CPUは、レジスタを提供し、これはプログラムに対して利用可能であるが、主ストレージ内でアドレス指定可能な表現を有さない。レジスタは、例えば、現行プログラム・ステータス・ワード(PSW)、汎用レジスタ、浮動小数点レジスタ及び浮動小数点制御レジスタ、ベクトル・レジスタ、制御レジスタ、アクセス・レジスタ、プリフィックス・レジスタ、時刻(TOD)プログラム可能レジスタ、並びに時刻コンパレータ及びCUPタイマ用レジスタを含むことができる。このレジスタの組をCPUのアーキテクチャ化レジスタ・コンテキスト(architected register context)と呼ぶことができる。コンフィギュレーション内の各CPUは、TODクロックへのアクセスを提供することができ、これはコンフィギュレーション内の全てのCPUで共有することができる。命令動作コードは、ある動作にどの型式のレジスタを使用すべきかを決定することができる。
各CPUは、それが機能及びファシリティの完全な一揃い(fullcomplement)を提供するものであるか(例えば汎用CPU)又は特定の型式の作業負荷を処理することを意図したものであるか(例えば、専用CPU)を示す、型式属性を有することができる。一次CPUは、汎用CPU又は最後の初期プログラム・ロード(IPL)動作に続いて始動したCPU(IPL CPU)と同じ型式を有するCPUのいずれかである。二次CPUは、汎用CPU以外の、IPL CPUとは異なるCPU型式を有する任意のCPUである。
マルチスレッディング・ファシリティは、サポーティング・アーキテクチャを実装するコンピュータシステム上で利用可能であり得る。マルチスレッディング・ファシリティは、マルチスレッディングのためのサポートを提供して、コアを共有する、CPUと呼ばれることもある一群のスレッドをイネーブルにする。マルチスレッディング・ファシリティがイネーブルにされている場合、コア内のCPUは、実行ユニット又はキャッシュなどの特定のハードウェアリソースを共有することができる。コア内の1つのCPUがハードウェアリソースを(典型的にはメモリ・アクセスを待機しながら)待機しているとき、コア内の他のCPUは、コア内の共有リソースをアイドルのままにしておくのではなく、むしろ利用することができる。マルチスレッディング・ファシリティがインストールされており、かつイネーブルにされている場合、スレッドは、コアのメンバであるCPUと同義である。マルチスレッディング・ファシリティがインストールされていない場合、又はファシリティはインストールされているがイネーブルにされていない場合、コアは、単一のCPU又はスレッドを含む。
マルチスレッディング・ファシリティがインストールされている場合、これをマルチスレッディング設定(set−multithreading)信号プロセッサ(signal processor、SIGP)指令の実行によりイネーブルにすることができる。例示的な実施形態において、マルチスレッディング・ファシリティがイネーブルにされている場合、コンフィギュレーション内のCPUの数は、倍数で増加し、その値は、プログラム指定最大スレッド識別(program−specified maximum thread identification、PSMTID)により決定される。コア内のCPUの数は、PSMTIDよりも1つだけ多くすることができる。この倍数に対応する数のCPUがグループ化されて1つのコアになる。コンフィギュレーション内の同じCPU型式の各コアは、同数のCPUを有することができる。コア内の各CPUは、同じCPU型式のものであるが、モデル及びCPU型式に基づいて、コア内の幾つかのCPUは、オペレーショナルでなくてもよい。
例示的な実施形態において、制御プログラム、例えばオペレーティングシステム(OS)は、そのOSが管理するコンフィギュレーションがマルチスレッディングを使用できるようにするために、マルチスレッディングを明示的にイネーブルにする。代替的に、ハイパーバイザがマルチスレッディングをイネーブルにすることができ、ハイパーバイザのゲスト及びそれらのアプリケーションは、透過的に利益を得ることできる。アプリケーションプログラムは一般に、マルチスレッディングがイネーブルになっているかどうか気づかない。マルチスレッディングがイネーブルにされるとき、コンフィギュレーション内の全てのCPUのCPUアドレスは、アドレスの左端のビット内にコア識別(又はコアID)を含み、かつアドレスの右端ビット内にスレッド識別(スレッドID、又はTID)を含むように調整される。コアIDは、コア・アドレス値と呼ばれることもあり、TIDは、スレッド・アドレス値と呼ばれることもある。コア内のCPUは、実行ユニット又は下位レベル・キャッシュなどの特定のハードウェア・ファシリティを共有することができ、それゆえコアの1つのCPU内の実行がコア内の他のCPUの性能に影響を与えることがある。
コンフィギュレーションの1つ又は複数のコアを、単一スレッド・モードとマルチスレッディング・モードとの間で動的に切り換えることに関連した変化を管理するために、多数のサポート機能が含められる。マルチスレッディングをサポートしないプログラムとの互換性を維持するために、リセット又は非アクティブ化したときに単一スレッド・モードをデフォルト・モードとすることができる。例示的な実施形態は、マルチスレッディング・モードから単一スレッド・モードへの移行後にスレッド・コンテキストの解析及び/又は復元をサポートするために、マルチスレッディング・モードからのコンテキストを保存し、通信し、及び復元する機能を含む。
例示的な実施形態により実装することができるコンピューティング環境は、例えばニューヨーク州Armonkのインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるz/Architectureに基づくものとすることができる。z/Architectureは、その全体が引用により本明細書に組み入れられる非特許文献1のIBM(登録商標)刊行物に説明されている。一例において、z/Architectureに基づくコンピューティング環境は、ニューヨーク州Armonkのインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供される、eServer、zSeriesを含む。コンピューティング環境は、例えば、1つ又は複数のコア(例えば、プロセッサ・コア)を有する1つ又は複数のパーティション(例えば、論理パーティション)を有するプロセッサ複合体、及び本明細書でさらに説明するような1つ又は複数のレベルのハイパーバイザを含むことができる。
図1は、マルチスレッディング(MT)をサポートするコンピューティング環境の例としてコンピュータシステム100を示す。図1の例において、コンピュータシステム100は、複数のプロセッサ・コア102、入力/出力(I/O)サブシステム104、及びシステムメモリ160を含む。I/Oサブシステム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 150は、スレッド151、152、153及び154をサポートすることができる。いずれの時点でも、各コア102の4つ全てのスレッドがオペレーショナルである必要はないことに留意されたい。例えば、コア3 130において、スレッド131及び132はオペレーショナルであり得るが、一方でスレッド133及び134はオペレーショナルとなることが許容されない(網掛けで示される)。
図1はまた、コンピュータシステム100のシステムメモリ160示し、ここでシステムメモリ160の部分は、論理パーティション1(LPAR1)170、LPAR2 180、及びLPAR3 190に分割されている。LPAR170、180、190は、仮想コンピューティングシステム(コンフィギュレーションとしても知られる)を表し、この中でLinux(商標)又はIBM(登録商標)z/OS(商標)、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のための処理リソースを提供する。LPAR3 190は、OS191並びにプログラム192及び193のための処理リソースを提供する。
LPAR内で実行するオペレーティングシステムの制御下で、プログラムは、コアのスレッド上で実行される。例示的な実施形態において、個々のスレッドは、一度に1つのプログラムのみを実行するが、しかし、再入可能になるように設計されたプログラムは、多重スレッド又はコア上で同時に実行されることができる。例えば、LPAR1 170のOS171のプログラム172を、コア1 110内のスレッド111及び113上並びにコア2 120のスレッド121及び124内で実行することができる。OSの制御に従って、異なるプログラムを、ディスパッチ規則及びサービス品質協定に従って、同じスレッド又は異なるスレッド上にディスパッチすることができる。
また、システムメモリ160内には、例えばミリコード(Millicode)162及びLPARハイパーバイザ163を含む、種々のレベルのファームウェアが存在する。ミリコード162は、下位レベルのシステム機能をサポートするためのファームウェアとして具体化することができる。LPARハイパーバイザ163は、例えば、IBM Processor−Resource/System Manager(商標)(PR/SM(商標))などの、ライセンスされた内部コードとすることができる。LPARハイパーバイザ163は、LPAR170、180、190を確立することができ、コア102上のディスパッチを管理することができる。MTファシリティ103がコンピュータシステム100にインストールされている場合、ミリコード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は、図1と同じコンピュータシステム100を示すが、但し、図2のコンピューティング環境において、コア4 140は、ここではLPAR2 180の代わりにLPAR3 190に割り当てられている。スレッド143及び144がオペレーショナルではなかった図1とは異なり、図2では、LPAR3 190がコア4 140上にディスパッチされたとき、4つ全てのスレッド141−144が現在オペレーショナルであることにもまた留意されたい。コア102上にLPARをディスパッチすること及びアンディスパッチすること(undispatching)は動的であり、他の時点では他の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は、命令を発行ユニット214に提供することができ、これは、一般演算を実行するための1つ又は複数の固定小数点ユニット(FXU)216及び浮動小数点演算を実行するための1つ又は複数の浮動小数点ユニット(FPU)218などの種々の実行ユニットに対する命令の発行を制御することができる。FPU218は、2進浮動小数点ユニット(BFU)220、10進浮動小数点ユニット(DFU)222、又はその他のいずれかの浮動小数点ユニットを含むことができる。発行ユニット214はまた、1つ又は複数のロード/格納ユニット(LSU)218に1つ又は複数のLSUパイプラインを介して結合することができる。多重LSUパイプラインは、ロード及び格納並びに分岐のためのアドレス生成を行うための実行ユニットとして扱われる。LSU228及びIFU210の両方が、変換ルックアサイド・バッファ(TLB)230を利用して、オペランド及び命令アドレスに対するバッファされた変換を提供することができる。
FXU216及びFPU218は、汎用レジスタ(GPR)224及び浮動小数点レジスタ(FPR)226などの種々のリソースに結合される。GPR224及びFPR226は、Dキャッシュ204からLSU228によりロードされて格納されるデータ値のためのデータ値ストレージを提供する。
処理回路200はまた、システム時間ベースの生成及び診断アクションをサポートするためのカウンタ及び/又はタイマ250を含むことができる。例えば、カウンタ及び/又はタイマ250を用いて、時刻、並びに種々の診断及び測定ファシリティをサポートすることができる。
ここで図4を参照すると、図1と類似のコンピューティング環境が示されているが、但し、図4では、第2レベル・ハイパーバイザ300がコンピュータシステム100のLPAR2 180内で実行されている。第2レベル・ハイパーバイザ300は、例えば、IBMのz/VMオペレーティングシステムであり、LPAR(第1レベル)ハイパーバイザ163により提供されるMTサポートコード165と同様のMTサポートコード301を含む。第2レベル・ハイパーバイザ300は、複数の仮想マシン310、320、及び330(コンフィギュレーションとも呼ばれる)のためのサポートを提供し、その中でゲスト・オペレーティングシステム311、321、及び331がそれぞれ動作する。ゲスト・オペレーティングシステム311、321、及び331は、例えば、Linux(商標)又はIBM(登録商標)z/OS(商標)、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、313、322、323、332、333は、それぞれのゲストOS311、321、及び331が利用可能なスレッド131−134、141−144上で実行することができる。ゲストOS311、321、及び331は、第2レベル・ハイパーバイザ300がマルチスレッディングを活用している場合、MTから透過的に利益を得ることができるので、MTサポートコードを含む必要はない。
ここで図5を参照すると、実施形態により実装することができるコンピューティング環境内のハイパーバイザ・コンテキスト保持の例が示される。図5の例において、多数のサポート構造体が、図1及び図2のLPARハイパーバイザ163内に示されている。例えば、構造体410は、図1のLPAR1 170をサポートすることができ、図1に示すような物理スレッド111、112、113、114、121、122、123、124上で現在実行されている論理スレッド411、412、413、414、421、422、423、424のアーキテクチャ化レジスタ・コンテキスト(すなわち、スレッド・コンテキスト)を格納する、状態記述(state description)及びサテライト・ブロックを含む。これらの論理スレッドがディスパッチされている間、物理スレッドは、スレッドの現行アーキテクチャ化レジスタ・コンテキストを保持する。アーキテクチャ化レジスタ・コンテキストは、これらがもはやディスパッチされないときには、状態記述及びサテライト・ブロック内で維持される。構造体430は、図1のLPAR2 180をサポートすることができ、図1に示すように物理スレッド131、132、141、142上で現在実行されている論理スレッド431、432、441、442のアーキテクチャ化レジスタ・コンテキストを格納する状態記述及びサテライト・ブロックを含む。構造体450は、図1のLPAR3 190をサポートすることができ、図1に示すように物理スレッド151上で現在実行されている論理スレッド451のアーキテクチャ化レジスタ・コンテキストを格納する状態記述及びサテライト・ブロックを含む。構造体450はまた、物理プロセッサ上に現在ディスパッチされていない(網掛けで示される)論理スレッド461、462、463及び464のアーキテクチャ化レジスタ・コンテキストを格納する状態記述及びサテライト・ブロックも含む。物理コア上にディスパッチされていないLPARをサポートする他の構造体、例えば、論理スレッド471、472、473及び474の状態記述及びサテライト構造体を含むLPAR A(図1には示されていない)のための構造体470もまた、LPARハイパーバイザ163によって保持することができる。さらなる構造体の例は、論理スレッド481及び482の状態記述及びサテライト構造体を含む非ディスパッチLPAR B(図1には示されていない)をサポートする構造体480、並びに論理スレッド485のための非ディスパッチLPAR C(図1には示されていない)構造体484を含む。
図5には多数の構造体が示されているが、マルチスレッディングを管理するために、付加的な構造体を、LPARハイパーバイザ163及びコンピュータシステム100内のどこか他の場所により、サポートすることができることが理解される。
ここで図6を参照すると、実施形態により、マルチスレッディングの動的イネーブルメントのためのプロセスフロー500が示される。ブロック502において、第一スレッドが単一スレッド(ST)モードで実行される。ブロック504において、マルチスレッディング(MT)モード設定命令がSTモードでフェッチされる。まとめて505で示されるこの命令の実行の際に、ブロック506において、MTモード設定命令により指定された場所から要求されるスレッドの数が得られる。場所は、set−MTモード命令を発行するときにパラメータ・レジスタにより指定することができる。MTモード設定命令は、set−MT指令と、要求されたスレッドの数に関連付けられるプログラム指定最大スレッドid(PSMTID)とを含む、信号プロセッサ(SIGP)命令とすることができる。SIGP命令のset−MT指令に関連付けられたプロセスの例は、図9を参照して本明細書でさらに説明される。
プロセス500の続きで、ブロック508において、要求されたスレッドの数が多重スレッドを示しているか否かの判定が行われる。例えば、多重スレッドは、1より大きい値により示されるものとすることができる。値ゼロが単一スレッドを示す実施形態において、1又は1より大きい値は、多重スレッドを示すことができる。要求されたスレッドの数が多重スレッドを示していないとの判定に基づいて、ブロック510において、コアはSTモードのままであり、set−MTモード命令の実行は完了し、制御はブロック502に戻る。要求されたスレッドの数が多重スレッドを示しているとの判定に基づいて、ブロック512において、MTモードがイネーブルにされ、set−MTモード命令の実行が完了する。ブロック514において、第一スレッド及び1つ又は複数の第二スレッドを含む多重スレッドが実行される。ブロック516において、リセット又は非アクティブ化がない場合には、プロセス500は、ブロック514にループバックし、そうでない場合には、ブロック518において、STモードに復帰するコンフィギュレーションのリセット又は非アクティブ化に基づいて、MTモードがディスエーブルにされる。MTモードをディスエーブルにすることの一部として、スレッドの数(PSMTID)は、非クリアリング・リセット(non-clearing reset)の場合には保持され、クリアリング・リセット(clearingreset)の場合にはゼロにされる。プロセス500は、ブロック502に戻る
CPUは、load−normal、load−with−dump、load−clear、又はload−clear−list−directedキーがアクティブ化されたとき、ロード状態に入ることができる。チャネル・コマンド・ワード(CCW)型初期プログラム・ローディング動作が成功裡に完了した場合、CPUは、ロード状態から動作状態に変化する。
CPUリセットは、破壊される情報量を最小限にして、装置チェック表示及び結果として生じるCPU状態におけるあらゆる不確定要素をクリアするために用いることができる。特に、これは解析又は動作再開のためにCPU状態を保存すべき場合に、チェック条件をクリアするために用いることができる。CPUリセットがload−normal又はload−with−dumpキーのアクティブ化により引き起こされた場合、(a)これはアーキテクチャ・モード(architectural mode)をデフォルト・モードに設定することができ、(b)マルチスレッディング・ファシリティがインストールされており、かつイネーブルにされている場合には、マルチスレッディングがディスエーブルにされる。CPUリセットがデフォルト・モードを設定する場合、PSWを復元することができるように現行PSWを保存することができる。
初期CPUリセットは、CPUリセットの機能を、現行PSW、CPUタイマ、クロック・コンパレータ、及び他のレジスタ、例えば中断イベント・アドレス・レジスタ、キャプチャPSWレジスタ、制御レジスタ、浮動小数点制御レジスタ、プリフィックス・レジスタ、及びTODプラグラム可能レジスタなどの初期化と共に、提供する。初期CPUリセットは、load−normal又はload−with−dumpキーのアクティブ化により引き起こされた場合、アーキテクチャ・モードをデフォルト・モードに設定することができる。初期CPUリセットがload−normal又はload−with−dumpキーのアクティブ化により引き起こされた場合にマルチスレッディングがイネーブルにされた場合、初期CPUリセット機能は、コアの最小番号CPUに対して行われることができ、コア内の他の全てのCPUに対して、CPUリセットが行われる。クリアリング・リセットは、初期CPUリセット及びサブシステム・リセットの実行を引き起こし、加えて、TODクロック以外の、コンフィギュレーション内の全てのCPU内の全てのストレージ位置及びレジスタがクリアされ又は初期化される。クリアリングは、外部ストレージ、例えばアドレス指定できないページの内容を保持するために制御プログラムにより用いられる直接アクセス・ストレージ・デバイスなどには影響を及ぼさない。
CPU電源投入リセットは、初期CPUリセットの実行を引き起こし、有効チェック・ブロックコードにより、汎用レジスタ、アクセス・レジスタ、制御レジスタ、及び浮動小数点レジスタの内容をクリアしてゼロ/デフォルト値にする。状態のクリア又は初期化は必ずしもゼロ値になる必要はなく、クリアされた状態においてデフォルトで非ゼロ値にすることができることが理解される。CPU電源投入リセットがコンフィギュレーションを確立する場合、アーキテクチャ・モードをデフォルト・モードに設定することができる。そうでない場合には、アーキテクチャ・モードを、すでにコンフィギュレーション内にあるCPUのものに設定することができる。CPUリセット、初期CPUリセット、サブシステム・リセット、及びクリア・リセットは、手動で始動することができる。
例示的な実施形態において、各CPUは、そのCPUアドレスと呼ばれる割り当てられた番号を有する。CPUアドレスは、コンフィギュレーション内の1つのCPUを一意に識別する。CPUは、SIGP命令のCPUアドレス・フィールド内でこのアドレスを指定することにより示される。誤動作警報、緊急信号、又は外部コールの信号を送信しているCPUは、このアドレスを、中断を伴うCPUアドレス・フィールド内に格納することにより識別することができる。CPUアドレスは、コンフィギュレーション定義プロセスにより割り当てられ、典型的には再構成による変化の結果として変更されない。プログラムは、CPUアドレス格納(store CPU address)命令を用いて、CPUのアドレスを決定することができる。CPUアドレス格納命令は、また、多重処理コンフィギュレーションにおいてCPUを識別するCPUアドレスを識別するために用いることもできる。
マルチスレッディングがイネーブルにされている場合、CPUアドレスは、コア内のCPUの識別と連結されるコア識別(コアID)含むことができる。コア内のCPU識別は、スレッド識別(スレッドID、又はTID)である。コンフィギュレーション内で、全てのコアは、同数のCPUを提供するが、モデル及びCPU型式に応じて、コア内の幾つかのCPUがオペレーショナルではない場合がある。
信号プロセッサのマルチスレッディング設定指令により用いられるパラメータ・レジスタのPSMTIDに基づいて、固定数のビットがスレッド識別を表す。このビット数は、TID幅と呼ばれる。
コアIDは、マルチスレッディングがイネーブルにされる前のCPUアドレスの右側ビットから形成することができる。コアIDは、TID幅ビットだけ左にシフトされ、マルチスレッディングが利用可能になった後でCPUアドレスの左側ビットをもたらす。スレッドIDは、同じTID幅ビット数を有し、マルチスレッディングがイネーブルにされた後、CPUアドレスの右側ビットを占める。スレッドIDは、数の連続範囲内に割り当てることができる。表1は、PSMTID、TID幅、並びにコア識別及びスレッド識別を含むCPUアドレス・ビットの例示的な関係を示す。
Figure 0006474426

アドレス拡張は、実施形態によるCPUアドレス拡張プロセス600Aの例として図7に示される。ブロック602において、第一スレッドは、CPUアドレス・ビット数としてコア・アドレス値604を用いて、STモードでアクセスすることができる。矢印606は、STモードからMTモードへの切り換えを示す。ブロック608において、第一スレッド又は1つ若しくは複数の第二スレッドは、拡張アドレス値610を用いて、MTモードでアクセスすることができる。拡張アドレス値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アドレスは、コンフィギュレーション定義プロセスにより割り当てられた値から変化せずにそのままである。この場合、スレッド識別は存在しない。
多数の信号プロセッサ指令は、CPUに対して、例えば、始動、停止、再始動、「停止及びステータス格納」(stop and store status)、初期CPUリセット(initial CPU reset)、CPUリセット(CPU reset)、「アドレスにステータス格納」(store status at address)、アーキテクチャ設定(set architecture)、実行ステータス検知(sense running status)、マルチスレッディング設定(set multithreading)、「アドレスに追加ステータス格納」(sore additional status at address)などを含む指令を与えることができる。初期CPUリセット又はCPUリセットは、信号プロセッサ命令により起動することができ、アーキテクチャ・モード又は他のCPUに影響を及ぼさず、マルチスレッディングをディスエーブルにせず、I/Oのリセットを引き起こさない。
アーキテクチャ設定指令は、コンフィギュレーション内の全てのCPUが設定されることになるアーキテクチャ・モードを指定する。アーキテクチャの差異は、異なるアドレス指定モード、レジスタ定義、及びCPUによりサポートされる命令を含むことができる。アーキテクチャ・モードが変更されると、レジスタの選択ビットフィールドをデフォルト状態に設定する(例えばゼロにする)ことができ、コンフィギュレーション内の全てのCPUのアクセス・レジスタ変換ルックアサイド・バッファ(ALB)及び変換ルックアサイド・バッファ(TLB)がクリアされ、コンフィギュレーション内の全てのCPUに対してシリアル化及びチェックポイント同期機能を行うことができる。
実行ステータス検知指令は、アドレス指定されたCPUが実行されているか否かを示すことができる。STモードでは、実行/非実行ステータスとしてインジケータを返すことができる。MTモードでは、アドレス指定されたCPUがそのメンバであるコアのいずれかのCPUが実行しているか否か、又はアドレス指定されたCPUがそのメンバであるコアの全てのCPUが実行していないか否かを、インジケータを用いて識別することができる。
set−MT指令は、マルチスレッディング・ファシリティをイネーブルにする。パラメータ・レジスタのビット位置は、コンフィギュレーション内で提供されるPSMTIDを収容することができる。PSMTIDは、各コア内でアクセス可能にされるCPUの数よりも1だけ少なくなるように定めることができる。例えば、指定されたビット位置における値3は、最大で4スレッドが提供されることを示す。コンフィギュレーション内の全てのCPUはアドレス指定されていると考えることができるので、SIGP命令のCPUアドレス・レジスタの内容は、無視することができる。set−MT指令を受け取った場合、これはSIGP命令の実行中に全てのCPUにより完了される。図9を参照すると、SIGP set−MT指令702のためのプロセス700が示される。図9のプロセス700を参照して本明細書でさらに説明されるように、エラー表示を与えることができ、SIGP set−MT指令702が、無効指令、不正状態、及び無効パラメータのうちの1つ又は複数を伴って発行されたことの判定に基づいて、MTモードのイネーブルメントが防止される。
ブロック704において、マルチスレッディング・ファシリティがインストールされていない場合、又は708でCPUが有効アーキテクチャ・モードでイネーブルにされていない場合、set−MT指令は受け入れられず、それぞれブロック706又は710において無効指令表示を返すことができる。ブロック712において、コンフィギュレーション内の他のCPUが停止されていない又はチェック・ストップ状態にない場合、又はブロック716において、コンフィギュレーションがマルチスレッディングに関して既にイネーブルにされている場合、set−MT指令は受け入れられず、それぞれブロック714又は718において不正状態表示を返すことができる。
ブロック720において、PSMTIDが無効である場合、set−MT指令は受け入れられず、ブロック722において無効パラメータ表示を返すことができる。ブロック724において、PSMTIDがゼロのとき、コンフィギュレーションはマルチスレッディングに関してイネーブルにされず、STモードのままであり、ブロック728において条件コードとしていずれかのステータスを提供する。例示的な実施形態において、PSMTIDが有効かつ非ゼロであるとき、ブロック726において、コンフィギュレーションはマルチスレッディングに関してイネーブルにされ、その結果、CPUアドレス拡張が生じ、コンフィギュレーション内の全てのCPUのALB及びTLBは、その内容がクリアされ、コンフィギュレーション内の全てのCPU上でシリアル化及びチェックポイント同期機能が実行される。ブロック728において、ステータスが条件コードとして提供される。成功裡に完了すると、set−MT指令を実行しているCPU以外の全てのCPUは、停止された状態又はチェック・ストップ状態のままである。しかしながら、マルチスレッディングがイネーブルにされる前にCPUがチェック・ストップ状態にあった場合、同じコア内で非ゼロスレッドIDを有するCPUが停止状態又はチェック・ストップ状態に置かれることが予測できない場合がある。
スレッド・コンテキストは、アーキテクチャ化レジスタ・コンテキストとも呼ばれる。マルチスレッディングがイネーブルにされる前の各CPUのアーキテクチャ化レジスタ・コンテキスト(すなわち、PSW、CPUタイマ、クロック・コンパレータ、汎用レジスタ、浮動小数点レジスタ及び浮動小数点制御レジスタ、ベクトル・レジスタ、制御レジスタ、アクセス・レジスタ、プリフィックス・レジスタ、並びにTODプログラム可能レジスタ、等)は、マルチスレッディングがイネーブルにされた後、各コアそれぞれのTIDゼロを有するCPUのアーキテクチャ化レジスタ・コンテキストになる。同様に、MTイネーブルにされたコンフィギュレーションの各コアのTIDゼロを有するCPUのアーキテクチャ化レジスタ・コンテキストは、load−normal又はload−with−dumpキーのアクティブ化の結果としてマルチスレッディングがディスエーブルにされたとき、各CPUそれぞれのアーキテクチャ化レジスタ・コンテキストになる。
非ゼロスレッド表示を有する全てのCPUのアーキテクチャ化レジスタ・コンテキストを、load−normal又はload−with−dumpキー動作のアクティブ化の結果としてマルチスレッディング・ファシリティがディスエーブルにされるときに保持することができる。マルチスレッディング・ファシリティがその後、介在するクリア・リセットを伴わずに再イネーブルにされた場合、非ゼロ・スレッドを有する全てのCPUのアーキテクチャ化レジスタ・コンテキストは、復元される。
load−normal又はload−with−dumpキーのアクティブ化によりディスエーブルにされた後でマルチスレッディングが再イネーブルされたとき、パラメータ・レジスタ内のビットでのPSMTIDの値が以前のイネーブルメントにおいて用いられた値と違う場合、非ゼロ・スレッドIDを有する全てのCPUのアーキテクチャ化レジスタ・コンテキストは、予測できない場合がある。
システム情報格納(store system information)命令を用いて、コンフィギュレーションのコンポーネントに関する情報をシステム情報ブロック(SYSIB)に格納することができる。SYSIBは、MTインストール・フィールド、MT汎用フィールド、総CPU/コアカウント、構成CPU/コアカウント、スタンバイCPU/コアカウント、リザーブCUP/コアカウント、及びその他のフィールドを含むことができる。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の格納をもたらすことができる。図10の例において、SYSIB802は、コンフィギュレーション805がマルチスレッディングをサポートするか否かを示すMTインストール識別子850を含む。SYSIB802はまた、コア800A/800Bの最大サポートスレッドの最大スレッド識別子を含み、これは、専門コアの場合にはコア当たりの最大TID806として、及び汎用コアの場合には最大TID808として提供されることができる。SYSIB802はまた、現行プログラム指定最大スレッド識別子(PSMTID)809を含むことができる。現行PSMTID809は、プログラムによりコンフィギュレーション850内でイネーブルにされたときのマルチスレッディング・モードを反映する。現行PSMTID809は、STSI命令830がベーシック・マシン・レベルで実行される場合は定義されなくてもよい。
スレッド内、例えばコア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はまた、専門コアの場合にはコア当たりの最大TID814として提供され、汎用コア816の場合には最大TIDとして提供されることができる、コア800Bの最大サポートスレッドの最大スレッド識別子も含む。SCCB810の値812−816は、SYSIB802においてアクセス可能であり得る値804−808と等しい。さらに、SCCB810は、コア800Bの最大サポートスレッドの最終設定(last-set)プログラム指定最大スレッド識別子を含むことができ、これは最終設定プログラム指定最大スレッド識別子(PSMTID)818とも呼ばれる。SCCB810は、set−MT指令上で受け入れ可能なPSMTID値のマスクをPSMTIDサポート・マスク820として含むことができる。PSMTIDサポート・マスク820は、コア当たりの最大TID814により定義される数よりも少ない数が所望されるときに、サポートCPU/スレッドを識別するために用いることができる。
コア800A及び800Bは、この例で示されていない他の態様を含むことが理解される。さらに、SYSIB802及びSCCB810は、図10の例に示された値を超える付加的な値を含むことができる。
図11は、実施形態によるマルチスレッディング能力を判定するためのプロセスフロー900を示す。ブロック902において、コアは、マルチスレッディング能力情報取得(retrieve multithreading capability information、RMTCI)命令を実行し、これはSERVC命令又はSTSI命令のいずれか1つとすることができる。ブロック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がイネーブルにされていたことの判定は、最終設定プログラム指定最大スレッド識別子内の非ゼロ値に基づくことができる(例えば最終設定PSMITD>0)。例示的な実施形態において、コンフィギュレーションは、複数のコア型式をサポートする。
例示的な実施形態において、レジスタ、及びレジスタ内に含めるか又は別個に管理することができるプログラム・カウンタ値などの値は、スレッド・コンテキストとしてキャプチャされる。アドレス拡張がMTモードで生じると、付加的なスレッド・コンテキストがアクセス可能になる。図7及び図8を参照して先に説明したように、CPUアドレスが、コンフィギュレーション内の各コアに対して形成される。CPUアドレスを、CPUアドレス格納命令により検査することができ、これは他の構造体の中に現れ、種々のSIGP指令において用いられる。MTがイネーブルにされていない場合、このアドレス指定スキームは変更されないままである。MTがイネーブルにされた場合、CPUアドレスは、拡張プロセスを受ける。先に説明したように、CPUアドレスの非MTイネーブル部分を、TIDを収容するのに十分なビットだけ左側にシフトさせることができる。例えば、オペレーティングシステムがPSMTID値1でSIGP set−MT指令を発行した場合、CPUアドレスは左に1ビットシフトされ、PSMTIDが2又は3であった場合、CPUアドレスは、左に2ビットシフトされ、PSMTIDが4−7である場合、CPUアドレスは左に3ビットシフトされ、以下同様である。
マルチスレッディングが、その後、(load−normal動作に引き起こされるクリア・リセット又はCPUリセットの結果として)ディスエーブルにされると、CPUアドレス短縮が生じる。MTイネーブルCPUアドレスを、MTをイネーブルにしたSIGP set−MT指令で用いられたPSMTIDビットと同じ数だけ右にシフトさせることができ、アドレスのスレッドID部分が消える。MTモード中にアクセス可能なスレッド・コンテキストは、図12に示す例のように1つ又は複数の場所に存在することができる。図12の例において、コンフィギュレーション1000は、コア1002を含み、他のコア(図示せず)を含むことができる。メモリ1006は、コンフィギュレーション1000の一部としてのコンフィギュレーション・メモリ1005を含むことができ、コンフィギュレーション1000から分離したホスト/ファームウェア・メモリ1007を含むことができる。ホスト/ファームウェア・メモリ1007は、ホストにより維持される状態識別ブロック1008を含むことができ、これはスレッドに関する(例えば図12ではスレッドn)スレッド・コンテキスト1010を格納することができる。サテライト・ブロック1012は、メモリ1006内でホスト/ファームウェア・メモリ1007の一部として状態記述ブロック1008に固定されることができ、ここでサテライト・ブロック1012は、スレッド・コンテキスト1010の代替として又はスレッド・コンテキスト1010との組合せで、スレッド・コンテキスト1014を含むことができる。各スレッドは、対応する状態記述ブロック1008と、随意にサテライト・ブロック1012とを有することができ、ここにスレッド・コンテキスト1010又はスレッド・コンテキスト1014を格納することができる。さらなる代替として、ハードウェア・コンテキスト・レジスタ1016を用いて、スレッド・コンテキスト1018を、例えばコア1002内に格納することができる。スレッド・コンテキスト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 set−MT指令への入力として用いることができる。
図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において、MTモード1114は、コンフィギュレーション1102に対するload−normal動作又は非クリアリング・リセットによりディスエーブルにされることができ、これがコア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において、MTモード1116は、コンフィギュレーション1104に対するクリアリング・リセットによりディスエーブルにされることができ、これがコア1110及び1112の両方をSTモード1124に切り換える。時刻1122におけるクリアリング・リセットは、TID0、TID1、TID2及びTID3のレジスタの全てをクリアすることができる。以前に説明したアドレス短縮により、TID0レジスタはSTモード1124でアクセス可能であるが、MTモード1116でアクセス可能であったTID1、TID2及びTID3レジスタは、クリアされた状態で保持されるがもはやアクセス可能ではない。図13に示すように、動作は、各コンフィギュレーション1102及び1104上で異なる時刻1118及び1122に独立に行うことができ、効果は各コンフィギュレーション1102及び1104にローカライズされる。したがって、コンフィギュレーション1104がMTモード1116である一方で、コンフィギュレーション1102はSTモード1120であることが可能であり、ST/MTモードは、コンピュータシステム1100の全てのコンフィギュレーションに対して揃っている必要はない。
図14は、実施形態によるマルチスレッディング・レジスタ保存のためのプロセスフロー1200を示す。ブロック1202において、MTモードのコアによる、そのコア内でMTがディスエーブルにされるべきであるとの判定に基づいて、MTモードからSTモードへの切換えが行われる。MTモードの第一スレッドは、STモードの唯一のスレッドとして維持されることができる。第二スレッドのプログラム・アクセス可能なレジスタ値及びプログラム・カウンタ値を含む1つ又は複数のスレッド・コンテキストが、アプリケーションプログラムに対してアクセス不能にされる。ブロック1204において、切り換えに基づいて、動作型式(例えば、クリアリング 対 非クリアリング)が決定され、プログラム・アクセス可能レジスタ値をクリアするか又はプログラム・アクセス可能レジスタ値を保持するか、どちらかが行われる。ブロック1206において、非クリアリング動作に基づいて、プログラム・アクセス可能レジスタ値が保持されるべきであると判定される。ブロック1208において、クリアリング動作に基づいて、プログラム・アクセス可能レジスタがクリアされるべきであると判定される。
先に説明したように、スレッド・コンテキストのプログラム・アクセス可能レジスタ値及びプログラム・カウンタ値は、プログラム汎用レジスタ、浮動小数点レジスタ、制御レジスタ、アクセス・レジスタ、プリフィックス・レジスタ、及びTODプログラム可能レジスタを含むことができる。制御レジスタは、浮動小数点制御レジスタ、ランタイム計装制御、CPU測定制御などを含むことができる。スレッド・コンテキスト内に含めることができるレジスタの他の例は、プログラム・ステータス・ワード(例えば、プログラム・カウンタ/命令アドレス、条件コード、並びに命令順番付けを制御するため及びCPU状態を決定するためのその他の情報)、ベクトル・レジスタ、CPUタイマ、クロック・コンパレータ、中断事象アドレス・レジスタ、及び当該分野で知られた他のレジスタを含む。以前に説明したように、PSMTIDは、最後に成功裡に実行された、MTをイネーブルにさせる信号プロセッサ命令に基づいて設定される。MTモードへの切換えに基づいて、プログラム・アクセス可能レジスタ値は、再イネーブルにされた対応する第二スレッドに基づいて、アプリケーションプログラムに対してアクセス可能になる。例えば、図13におけるSTモード1120からMTモード1114へ戻る切り換えは、TID1レジスタへのアクセスを可能にし、TID1は、再イネーブルにされる。スレッド・コンテキストは、図12のスレッド・コンテキスト1010、1014又は1018のように、状態記述ブロック、メモリ内で状態技術ブロックに固定されたサテライト・ブロック、又はコンテキスト・レジスタのいずれかにおいて維持されることができる。
第一スレッド・コンテキストは、第一スレッドのプログラム・アクセス可能レジスタ値及びプログラム・カウンタ値、例えば、図13のコンフィギュレーション1104に対するTID0及びTIDレジスタを含むことができ、ここで第一スレッド・コンテキストは、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において、MTモード1310は、コンフィギュレーション1302のload−normal動作又は非クリアリング・リセットによりディスエーブルにされることができ、これがコア1304−1308をSTモード1314に切り換える。STモード1314において、TID0レジスタは、アクセス可能のままであり、TID1−TID3レジスタは、アクセス不能であるが、コア1304−1308の各々に対して保持されている。時刻1316において、MTは、SIGPset−MT指令の実行により再イネーブルにされ、再開されたMTモード1318に入ることができる。再開されたMTモード1318において、コア1304−1308の各々に対して、TID1−TID3レジスタのスレッド・コンテキストへのアクセスが復元される。これは、ダンププログラム、例えばスタンドアロン型ダンププログラム1320によるTID1−TID3レジスタを含む全てのスレッド・レジスタの検査を可能にして、スレッド・コンテキスト情報を解析のために保存する。
図16は、図15のスタンドアロン型ダンププログラム1320などのスタンドアロン型ダンピング(SADMP)プログラムを使用して、オペレーショナルシステムの故障後にスレッドのアーキテクチャ化レジスタ・コンテキストをキャプチャすることができるような、実施形態によるマルチスレッディング・レジスタ復元のためのプロセスフロー1400を示す。ブロック1405において、SADMPプログラムが非クリアリング・ロード動作(例えば、load−normal又はload−with−dump)を介してロードされる。非クリアリング・ロード動作は、図15のコンフィギュレーション1302の場合のSTモード1314のように、暗黙的にコンフィギュレーションをSTモードに戻させる。SADMPプログラムは、次にブロック1410において、MTファシリティがコンフィギュレーション内で利用可能であるかどうかを、STSI又はSERVC命令を用いることによりクエリする。MTがインストールされている場合、SADMPプログラムは、ブロック1415において、コンフィギュレーションに対して設定された最終設定プログラム指定最大スレッド識別(PSMTID)をクエリする。MTがそのコンフィギュレーションに対して今まで一度も設定されていなかった場合、最終設定PSMTID値はゼロになる。SADMPプログラムは、最終設定PSMTIDが何であっても(ゼロであっても)、次にブロック1420においてマルチスレッディングを再イネーブルにする命令を実行することができる。ブロック1410でのクエリが、MTがインストールされていないことを明らかにした場合、ブロック1415での最終設定PSMTID値のクエリ又はブロック1420でのMTの再イネーブルの試行はいずれも行われない。
SADMPプログラムは、コンフィギュレーション内の他のCPU(スレッド)に信号を送って、そのアーキテクチャ化レジスタ・コンテキストをメモリ内の所定の場所に保存するよう試行する。MTがSADMPをロードする以前にイネーブルにされていなかった場合、CPUアドレスは、ノーマルな非拡張形式である。MTが以前にイネーブルにされていた場合、CPUアドレスは、コアID及びスレッドIDを含む拡張形式である。SADMPは、ブロック1425において、CPUアドレス(N)ゼロから開始して、ブロック1430においてそのCPUアドレスがSADMPを実行しているCPUを表しているか否かを判定する。表している場合、CPU/スレッドはスキップされ、ブロック1450においてNは次の値に増分される。Nが現行CPUアドレスとは異なる場合、ブロック1435において、そのアーキテクチャ化レジスタ・コンテキストを、例えばSIGP「アドレスにステータス格納」(store−status−at−address)指令又はSIGP「停止及びステータス格納」(stop−and−store−status)指令のいずれかを実行することによりメモリに保存するためにCPU/スレッドに信号が送られる。コンフィギュレーションがベクトル・ファシリティを含む場合、SIGP「アドレスにステータス格納」指令はまた、CPU/スレッドのベクトル・レジスタの内容を格納するために実行することもできる。ブロック1435の信号が成功したか否かの判定がブロック1440で行われる。成功した場合、ブロック1445において、SADMPプログラムは、CPU/スレッドのレジスタ・コンテキストをテープ又はディスク上のダンプファイルに保存することができ、ブロック1450においてNを増分することにより処理が続く。ブロック1435の信号が成功しなかった(例えばスレッドがオペレーショナルでない場合)と、ブロック1440で判定された場合、これはスキップされ、ブロック1450でNを増分することにより処理が続く。信号送信で用いられるCPUアドレスの値(N)は、ブロック1450で増分され、ブロック1455において、Nがこのときにコンフィギュレーションに対する最大可能CPUアドレスより大きいか否かの判定が行われる。Nがコンフィギュレーションに対する最大可能CPUアドレスよりも大きくない場合、ブロック1430において、Nが、SADMPプログラムを実行している現行CPU/スレッドを表しているか否かを判定することにより処理は続く。Nがコンフィギュレーションに対する最大可能CPUアドレスよりも大きい場合、ブロック1460において、アーキテクチャ化レジスタ・コンテキスト復元及びダンピングが完了する。
図16はコンフィギュレーションの1つのコアに関して説明しているが、図16のプロセスフローは、多重コアを含むコンフィギュレーションの全てのコアにわたって最大CPUアドレスを通じて実行するように拡張することができる。MTをサポートしないOS又はMTアウェア(MT-aware)であるがMTを活用しないプログラムに対するダンピングをサポートするために、コンフィギュレーション内で付加的な適応を行うことができる。例えば、コンフィギュレーション内でMTをサポートしないOSをロードする前にクリアリング・リセットを行って、MTアウェアのスタンドアロン型ダンププログラムが何らかの第二スレッドをコンフィギュレーションからダンプすることを試行することを防止することができる。別の例として、MTアウェアであるがMTを活用しないプログラムは、コンフィギュレーションに対するスタンドアロン型ダンププログラムの実行の前に、対応する最大スレッドidがゼロのset−MT指令を発行することができる。
技術的効果及び利益は、マルチスレッディング能力情報の取得及びマルチスレッディング能力情報を利用可能にすることを含む。マルチスレッディング能力情報は、制御プログラムがマルチスレッディング制約条件を発見することを可能にして、所望の数のスレッドがサポートされることができることを保証する。マルチスレッディング能力情報はまた、以前にマルチスレッディングが最後にイネーブルにされたときに用いられていたスレッドと同数のスレッドで単一スレッド・モードからマルチスレッディング・モードを再イネーブルにすることを補助するために用いることもできる。
本明細書で説明するシステムは、OSがMTハードウェアを活用すること明示的に「オプトイン」するよう要求することにより、ハードウェアの変動性を軽減するためのソフトウェアをイネーブルにする。OSが実行環境のMTの性質を理解している場合、OSは、コア当たりのスレッド密度を明示的に管理する能力を有する(所与の作業負荷ディスパッチパターンで、その能力の及ぶ限りで)。OSは、コンピュート・リソースの利用が少ないときでも高スレッド密度を維持するオプションを有し、これにより他のMT実装で見られる総コンピュート容量におけるかなりの変動性を軽減する。高スレッド密度を維持することの直接的結果として、トランザクション応答時間及びビリングの態様の両方をより一貫したものにすることができる。
実施形態は、マルチスレッディング能力情報取得のためのシステム、方法、及びコンピュータ・プログラム製品を含む。1つの態様によれば、コンピュータシステムは、単一スレッド(ST)モードとマルチスレッディング(MT)モードとの間で構成可能な1つ又は複数のコアを有するコンフィギュレーションを含む。STモードは、第一スレッドをサポートし、MTモードは、各コアの共有リソース上で第一スレッド及び1以上の第二スレッドをサポートする。コンピュータシステムはまた、コンフィギュレーションの利用を制御して、コアにより、マルチスレッディング能力情報取得(retrieve multithreading capability information、RMTCI)命令を実行することを含む方法を行うように構成された、マルチスレッディング・ファシリティを含む。実行は、コンフィギュレーションのマルチスレッディング能力を識別するスレッド識別情報を取得することと、取得されたスレッド識別情報を格納することと、を含む。
別の態様によれば、コンフィギュレーションにおけるマルチスレッディング能力情報取得のためのコンピュータ実装の方法が提供される。コンフィギュレーションは、STモードとMTモードとの間で構成可能な1つ又は複数のコアを含み、ここでSTモードは、第一スレッドをサポートし、MTモードは、各コアの共有リソース上で第一スレッド及び1以上の第二スレッドをサポートする。方法は、コアにより、マルチスレッディング能力情報取得命令を実行することを含む。実行は、コンフィギュレーションのマルチスレッディング能力を識別するスレッド識別情報を取得することと、取得されたスレッド識別情報を格納することと、を含む。
さらなる態様は、コンフィギュレーションにおけるマルチスレッディング能力情報取得のためのコンピュータ・プログラム製品を含む。コンフィギュレーションは、STモードとMTモードとの間で構成可能な1つ又は複数のコアを含み、ここでSTモードは、第一スレッドをサポートし、MTモードは、各コアの共有リソース上で第一スレッド及び1以上の第二スレッドをサポートする。コンピュータ・プログラム製品は、具体化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含み、ここでコンピュータ可読媒体は、信号ではない。プログラム命令は、処理回路により可読であり、処理回路に方法を実行させる。方法は、コアにより、マルチスレッディング能力情報取得命令を実行することを含む。実行は、コンフィギュレーションのマルチスレッディング能力を識別するスレッド識別情報を取得することと、取得されたスレッド識別情報を格納することと、を含む。
上記の特徴の1つ又は複数に加えて、又は代替的に、さらなる実施形態は、取得したスレッド識別情報に基づいて、コンフィギュレーションは以前MTモードがイネーブルであったか否か判定する場合を含むことができる。
上記の特徴の1つ又は複数に加えて、又は代替的に、さらなる実施形態は、RMTCI命令を実行したコアが、STモードであり、STモードより以前にMTモードがイネーブルであったと判定された場合、当該MTモードをリ・イネーブルにする場合を含むことができる。
上記の特徴の1つ又は複数に加えて、又は代替的に、さらなる実施形態は、MTモードをリ・イネーブルにすると、以前のMTモードにおける第二スレッドの数がコア上にリストアされる場合を含むことができる。
上記の特徴の1つ又は複数に加えて、又は代替的に、さらなる実施形態は、RMTCI命令を実行したコアが、STモードであり、STモードより以前にMTモードがイネーブルであったと判定されなかった場合、当該STモードを保つ場合を含むことができる。
上記の特徴の1つ又は複数に加えて、又は代替的に、さらなる実施形態は、RMTCI命令が、サービス・コール(service call、SERVC)命令又はシステム情報格納(store system information、STSI)命令のいずれか1つであり、SERVC命令は、スレッド識別情報をメモリ内の応答ブロックに格納するように構成され、STSI命令は、スレッド識別情報をメモリ内のシステム情報ブロック(SYSIB)内に格納するように構成される場合を含むことができる。
上記の特徴の1つ又は複数に加えて、又は代替的に、さらなる実施形態は、応答ブロックが、サポートされるプログラム指定最大スレッド識別子値を示すビットのマスクをさらに含む場合を含むことができる。
上記の特徴の1つ又は複数に加えて、又は代替的に、さらなる実施形態は、取得したスレッド識別情報が、コアがマルチスレッディングをサポートするか否かを示すMTインストール識別子を含む場合を含むことができる。
上記の特徴の1つ又は複数に加えて、又は代替的に、さらなる実施形態は、取得したスレッド識別情報が、コアの最大サポートスレッド数を示す最大スレッド識別子を含む場合を含むことができる。
上記の特徴の1つ又は複数に加えて、又は代替的に、さらなる実施形態は、取得したスレッド識別情報が、コンフィギュレーションのコアに直近に設定されたプログラム指定最大スレッド識別子を含む場合を含むことができる。
上記の特徴の1つ又は複数に加えて、又は代替的に、さらなる実施形態は、直近に設定されたプログラム指定最大スレッド識別子が示す非ゼロ値に基づいて、コンフィギュレーションは以前にMTモードがイネーブルであったかを判定することをさらに含むことができる。
上記の特徴の1つ又は複数に加えて、又は代替的に、さらなる実施形態は、コンフィギュレーションが複数のコアタイプをサポートし、コアの最大サポートスレッド数を示す最大スレッド識別子が、コンフィギュレーション内のコアタイプの各々に対して維持される場合を含むことができる。
本明細書において用いられる用語は、特定の例を説明する目的のためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈が明らかにそうでないことを示していない限り、複数形もまた同様に含むことを意図したものである。「備える、含む」及び/又は「備えている、含んでいる」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を指定するが、1つ又は複数のその他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらの群の存在又は付加を排除するものではないことが更に理解されるであろう。
以下の特許請求の範囲における全ての「手段又はステップと機能との組み合わせ(ミーンズ又はステップ・プラス・ファンクション)」要素の対応する構造、材料、動作、及び均等物は、その機能を、明確に特許請求された他の請求要素との組み合わせで実行するためのあらゆる構造、材料、又は動作を含むことが意図されている。本発明の説明は、例証及び説明を目的として提示されたものであるが、網羅的であること又は本発明を開示された形態に限定することを意図したものではない。本発明の範囲及び思想から逸脱しない多くの修正及び変形が当業者には明らかとなるであろう。実施形態は、本発明の原理及び実際の用途を最も良く説明するために、そして、当業者が、企図した特定の用途に適した種々の修正を伴う種々の実施形態に関して本発明を理解できるように、選択及び説明したものである。
本発明の種々の実施形態の説明を例証のために提示したが、これらは網羅的であること又は開示された実施形態に限定することを意図したものではない。当業者には、説明した実施形態の範囲及び思想から逸脱しない多くの修正及び変形が明白となるであろう。本明細書で用いた用語は、実施形態の原理、実際的用途、又は市場で見いだされる技術に対する技術的改良点を最も良く説明するように、又は、当業者が本明細書で開示した実施形態を理解することができるように、選択されたものである。
ここで図17を参照すると、コンピュータ可読媒体1502及びプログラム命令1504を含む、実施形態によるコンピュータ・プログラム製品1500が一般的に示されている。
本発明は、システム、方法、及び/又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有する1つ又は複数のコンピュータ可読ストレージ媒体を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスが使用するための命令を保持し、格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、半導体ストレージ・デバイス、又は上記のものの任意の適切な組合せとすることが出来るがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュメモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクトディスク読み出し専用メモリ(CD−ROM)、デジタル多目的ディスク(DVD)、メモリスティック、フロッピーディスク、パンチカード若しくは記録された命令を有する溝内に隆起した構造のような機械式コード化デバイス、及び上記のものの任意の適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書で用いられる場合、無線波若しくは他の自由に伝搬する電磁波、導波路若しくは他の伝送媒体を通って伝搬する電磁波(例えば光ファイバケーブルを通る光パルス)、又は電線を通って伝送される電気信号のような、それ自体が一時的な信号と解釈されるべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスにダウンロードすることも、又は、例えばインターネット、ローカルエリアネットワーク、広域ネットワーク及び/又は無線ネットワークを経由して、外部コンピュータ若しくは外部ストレージ・デバイスにダウンロードすることもできる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを含むことができる。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カード又はネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令をそれぞれのコンピューティング/処理装置内のコンピュータ可読ストレージ媒体にストレージのために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ(state-setting data)、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語及び「C」プログラミング言語若しくは類似のプログラミング言語のような従来の手続き型プログラミング言語を含む1つ若しくは複数のプログラミング言語の任意の組合せで記述されたソースコード若しくはオブジェクトコードのいずれか、とすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいては、遠隔コンピュータは、ローカルエリアネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続が為される場合もある(例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えばプログラム可能論理回路、フィールドプログラム可能ゲートアレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することにより、コンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)、及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図のブロックの組合せは、コンピュータ可読プログラム命令によって実装することができることが理解されよう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実装するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、プログラム可能データ処理装置、及び/又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、その中に格納された命令を有するコンピュータ可読媒体が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む製品を含むようにすることもできる。
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置又は他のデバイス上で行わせてコンピュータ実装のプロセスを生成し、それにより、コンピュータ、他のプログラム可能装置又は他のデバイス上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するようにすることもできる。
図面内のフローチャート及びブロック図は、本開示の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又は命令の一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図中に記された順序とは異なる順序で行われることがある。例えば、連続して示された2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図中のブロックの組合せは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステムによって実装することもでき、又は専用ハードウェアとコンピュータ命令との組合せを実行することもできることにも留意されたい。
100、1100、1300:コンピュータシステム
200:処理回路
1102、1104、1302:コンフィギュレーション
1114、1116、1310:MTモード
1115:スレッド・コンテキスト
1118、1122、1312、1316:時刻
1120、1124、1314:STモード
1318:再開されたMTモード

Claims (14)

  1. コンピュータシステムであって、
    単一スレッド(ST)モードとマルチスレッディング(MT)モードとの間で構成可能なコと、メモリとを含むコンフィギュレーションであって、前記STモードは、第一スレッドをサポートし、前記MTモードは、前記コアの共有リソース上で前記第一スレッド及び1以上の第二スレッドをサポートする、コンフィギュレーションを備え
    前記コアにより、前記メモリからフェッチしたマルチスレッディング能力情報取得(RMTCI)命令を実行することを含み、前記実行することは、
    前記コンフィギュレーションのマルチスレッディング能力を識別するスレッド識別情報を、前記メモリに格納することと、
    前記格納したスレッド識別情報に基づいて、前記コンフィギュレーションは以前MTモードがイネーブルであったか否か判定することと、
    を含む、コンピュータシステム。
  2. 前記RMTCI命令を実行したコアは、STモードであり、
    前記STモードより以前にMTモードがイネーブルであったと判定された場合、当該MTモードをリ・イネーブルにする、請求項に記載のコンピュータシステム。
  3. 前記MTモードをリ・イネーブルにすると、前記以前のMTモードにおける第二スレッドの数が前記コア上にリストアされる、請求項に記載のコンピュータシステム。
  4. 前記RMTCI命令を実行したコアは、STモードであり、
    前記STモードより以前にMTモードがイネーブルであったと判定されなかった場合、当該STモードを保つ、請求項に記載のコンピュータシステム。
  5. 前記RMTCI命令が、サービス・コール(SERVC)命令又はシステム情報格納(STSI)命令のいずれか1つであり、前記SERVC命令は、前記スレッド識別情報を前記メモリ内の応答ブロックに格納するように構成され、前記STSI命令は、前記スレッド識別情報を前記メモリ内のシステム情報ブロック(SYSIB)内に格納するように構成される、請求項1に記載のコンピュータシステム。
  6. 前記応答ブロックが、サポートされるプログラム指定最大スレッド識別値を示すビットのマスクをさらに含む、請求項に記載のコンピュータシステム。
  7. 前記格納したスレッド識別情報が、前記コアがマルチスレッディングをサポートするか否かを示すMTインストール識別子を含む、請求項1に記載のコンピュータシステム。
  8. 前記格納したスレッド識別情報が、前記コアの最大サポートスレッド数を示す最大スレッド識別子を含む、請求項1に記載のコンピュータシステム。
  9. 前記格納したスレッド識別情報が、前記コンフィギュレーションの前記コアに直近に設定されたプログラム指定最大スレッド識別子を含む、請求項に記載のコンピュータシステム。
  10. 記直近に設定されたプログラム指定最大スレッド識別子が示す非ゼロ値に基づいて、前記コンフィギュレーションは以前MTモードがイネーブルであったかを判定すること、
    をさらに含む、請求項に記載のコンピュータシステム。
  11. 前記コンフィギュレーションが複数のコアタイプをサポートし、コアの最大サポートスレッド数を示す最大スレッド識別子が、前記コンフィギュレーション内の前記コアタイプの各々に対して維持される、請求項1に記載のコンピュータシステム。
  12. 単一スレッド(ST)モードとマルチスレッディング(MT)モードとの間で構成可能なコと、メモリとを含むコンフィギュレーションにおけるマルチスレッディング能力情報取得のためのコンピュータ実装の方法であって、前記STモードは、第一スレッドをサポートし、前記MTモードは、前記コアの共有リソース上で前記第一スレッド及び1以上の第二スレッドをサポートし、前記方法は、
    前記コアにより、前記メモリからフェッチしたマルチスレッディング能力情報取得(RMTCI)命令を実行すること、
    を含み、前記実行は、
    前記コンフィギュレーションのマルチスレッディング能力を識別するスレッド識別情報を、前記メモリに格納することと、
    前記格納したスレッド識別情報に基づいて、前記コンフィギュレーションは以前MTモードがイネーブルであったか否か判定することと、
    を含む、方法。
  13. 請求項1乃至11の何れか一項に記載のコンピュータシステムのコアによりマルチスレッディング能力情報取得(RMTCI)命令の実行をすることを含む方法。
  14. 単一スレッド(ST)モードとマルチスレッディング(MT)モードとの間で構成可能なコと、メモリとを含むコンフィギュレーションにおけるマルチスレッディング能力情報取得のためのコンピュータ・プログラムであって、前記STモードは、第一スレッドをサポートし、前記MTモードは、前記コアの共有リソース上に前記第一スレッド及び1以上の第二スレッドをサポートし、前記コンピュータ・プログラムは、
    前記コアに、前記メモリからフェッチしたマルチスレッディング能力情報取得(RMTCI)命令を実行させるためのものであり、前記実行は、
    前記コンフィギュレーションのマルチスレッディング能力を識別するスレッド識別情報を、前記メモリに格納することと、
    前記格納したスレッド識別情報に基づいて、前記コンフィギュレーションは以前MTモードがイネーブルであったか否か判定することと、
    を含む、コンピュータ・プログラム。
JP2016558621A 2014-03-27 2015-03-17 マルチスレッディング能力情報取得 Active JP6474426B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/226,989 US9218185B2 (en) 2014-03-27 2014-03-27 Multithreading capability information retrieval
US14/226,989 2014-03-27
PCT/EP2015/055516 WO2015144489A1 (en) 2014-03-27 2015-03-17 Multithreading capability information retrieval

Publications (2)

Publication Number Publication Date
JP2017513121A JP2017513121A (ja) 2017-05-25
JP6474426B2 true JP6474426B2 (ja) 2019-02-27

Family

ID=52727107

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016558621A Active JP6474426B2 (ja) 2014-03-27 2015-03-17 マルチスレッディング能力情報取得

Country Status (7)

Country Link
US (1) US9218185B2 (ja)
EP (1) EP3123327B1 (ja)
JP (1) JP6474426B2 (ja)
CN (1) CN106462390B (ja)
BR (1) BR112016022285B1 (ja)
PL (1) PL3123327T3 (ja)
WO (1) WO2015144489A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9223574B2 (en) * 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9213569B2 (en) * 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US9417876B2 (en) * 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system

Family Cites Families (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684993A (en) 1993-01-04 1997-11-04 Microsoft Corporation Segregation of thread-specific information from shared task information
JPH06348584A (ja) * 1993-06-01 1994-12-22 Internatl Business Mach Corp <Ibm> データ処理システム
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
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
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
US7073173B1 (en) 2000-12-04 2006-07-04 Microsoft Corporation Code and thread differential addressing via multiplex page maps
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
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
US20040154010A1 (en) 2003-01-31 2004-08-05 Pedro Marcuello Control-quasi-independent-points guided speculative multithreading
US7472258B2 (en) * 2003-04-21 2008-12-30 International Business Machines Corporation Dynamically shared group completion table between multiple threads
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
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
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
US9189230B2 (en) * 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
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
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
US7519796B1 (en) 2004-06-30 2009-04-14 Sun Microsystems, Inc. Efficient utilization of a store buffer using counters
JP4504132B2 (ja) 2004-07-30 2010-07-14 富士通株式会社 記憶制御装置、中央処理装置、情報処理装置及び記憶制御装置の制御方法
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
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
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 株式会社ソニー・コンピュータエンタテインメント スケジューリング方法およびスケジューリング装置
US8275942B2 (en) 2005-12-22 2012-09-25 Intel Corporation Performance prioritization in multi-threaded processors
US7577826B2 (en) 2006-01-30 2009-08-18 Sony Computer Entertainment Inc. Stall prediction thread management
US8041929B2 (en) 2006-06-16 2011-10-18 Cisco Technology, Inc. Techniques for hardware-assisted multi-threaded processing
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
US7698540B2 (en) 2006-10-31 2010-04-13 Hewlett-Packard Development Company, L.P. Dynamic hardware multithreading and partitioned hardware multithreading
US7584346B1 (en) 2007-01-25 2009-09-01 Sun Microsystems, Inc. Method and apparatus for supporting different modes of multi-threaded speculative execution
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
EP2423808B1 (en) * 2007-06-20 2014-05-14 Fujitsu Limited Arithmetic device
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
US7739434B2 (en) * 2008-01-11 2010-06-15 International Business Machines Corporation Performing a configuration virtual topology change and instruction therefore
US7559061B1 (en) 2008-03-16 2009-07-07 International Business Machines Corporation Simultaneous multi-threading control monitor
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
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
US8402464B2 (en) 2008-12-01 2013-03-19 Oracle America, Inc. System and method for managing contention in transactional memory using global execution data
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
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
EP2587382A4 (en) 2010-06-22 2014-11-26 Fujitsu Ltd MULTIKERNPROCESSORSYSTEM, CONTROL PROGRAM AND CONTROL PROCEDURES
US8656408B2 (en) 2010-09-30 2014-02-18 International Business Machines Corporations Scheduling threads in a processor based on instruction type power consumption
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
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
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
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
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
CN103488684B (zh) 2013-08-23 2016-12-28 国家电网公司 基于缓存数据多线程处理的电力可靠性指标快速计算方法

Also Published As

Publication number Publication date
US20150277913A1 (en) 2015-10-01
BR112016022285A2 (ja) 2017-08-15
EP3123327A1 (en) 2017-02-01
PL3123327T3 (pl) 2019-09-30
CN106462390A (zh) 2017-02-22
JP2017513121A (ja) 2017-05-25
CN106462390B (zh) 2019-05-03
EP3123327B1 (en) 2019-05-15
BR112016022285B1 (pt) 2022-10-04
WO2015144489A1 (en) 2015-10-01
US9218185B2 (en) 2015-12-22

Similar Documents

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

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170224

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

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180925

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181218

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190129

R150 Certificate of patent or registration of utility model

Ref document number: 6474426

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150