JP2007532990A - ヘルパーサブスレッドを含むスレッドの実行の明示的ソフトウェア制御のための方法及び構造 - Google Patents
ヘルパーサブスレッドを含むスレッドの実行の明示的ソフトウェア制御のための方法及び構造 Download PDFInfo
- Publication number
- JP2007532990A JP2007532990A JP2007506292A JP2007506292A JP2007532990A JP 2007532990 A JP2007532990 A JP 2007532990A JP 2007506292 A JP2007506292 A JP 2007506292A JP 2007506292 A JP2007506292 A JP 2007506292A JP 2007532990 A JP2007532990 A JP 2007532990A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- software control
- available
- long latency
- executing
- 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.)
- Abandoned
Links
- 238000000034 method Methods 0.000 title claims description 74
- 238000004590 computer program Methods 0.000 claims description 11
- 238000005096 rolling process Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
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)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
ヘルパーサブスレッド(140)を伴う単一スレッドコードシーケンスにおけるソフトウェアインストラクションがコンピュータシステム(100)のプロセッサ(170)において実行される。これを実行すると、コンピュータシステム(100)は、例えば、(i)レイテンシの長いインストラクションに関連した情報が入手できるかどうか判断し(310)、そしてデータが入手できないときに、(ii)コンピュータシステムの状態のスナップショットを撮って、そのスナップショットの状態へロールバックするための能力を維持し(321)、(iii)ヘルパーサブスレッドにおけるヘルパーインストラクションを実行し(322)、そして(iv)ヘルパーサブスレッドにおけるヘルパーインストラクションの実行が完了したときにスナップショット状態へロールバックして(323)、実行を継続する(324)ようにさせる。ヘルパーサブスレッドは、例えば、レイテンシの長いインストラクションの完了を待機している間にデータをプリフェッチする。
Description
本発明は、一般に、プロセッサの性能向上に係り、より詳細には、データがロードされるのを待機してプロセッサが費やす全体的な時間を短縮するためにメモリレベル並列性(MLP)を向上させる方法に係る。
関連出願:本出願は、クリストフ・ブラウン、クインA.ジャコブソン、シャイレンダー・コードリー及びマルク・トレンブレーを発明者として2004年3月31日に出願された「Method And Structure For Explicit Software Control Of Execution Of A Thread Including A Helper Subthread」と題する米国プロビジョナル特許出願第60/558,690号の利益を請求するもので、その全体を参考としてここに援用する。
近代的なプロセッサの性能を向上させるために、所与の時間周期中に実行されるインストラクションの数を向上させる種々の技術が使用されている。これらの技術の1つが、プロセッサが将来必要とするデータのプリフェッチである。
データのプリフェッチとは、一般に、近い将来必要とされるであろうデータを予想し、そのデータをできるだけプロセッサの近くへ運ぶためのトランザクションを発生するメカニズムを指す。データをプロセッサの近くへ運ぶことで、データが必要とされるとき及びその場合にそのデータにアクセスするためのレイテンシを短縮する。
メモリレベル並列性(MLP)を高めるために多数の形式のデータプリフェッチが提案されている。一形式のデータプリフェッチは、種々の発見的解決法に基づいてデータをプリフェッチするハードウェアメカニズムを使用する。別の形式のデータプリフェッチは、データプリフェッチを開始するための指令がインストラクションストリームに出される従来のソフトウェアプリフェッチを使用する。
ほとんどのインストラクションセットアーキテクチャーは、ソフトウェアが、近い将来、インストラクションで指定される所与の位置におそらくデータを必要とするであろうことをソフトウェアがハードウェアに通知させるようなプリフェッチインストラクションを有する。ハードウェアは、次いで、これらのプリフェッチインストラクションに応答して、プロセッサ内の近くのキャッシュにデータを潜在的に移動させる。
プリフェッチインストラクションを使用するために、ソフトウェアは、アドレスを計算するためのコードシーケンスも含まねばならない。これらのコードシーケンスは、プログラムの全体的な実行にオーバーヘッドを追加すると共に、レジスタのような幾つかのハードウェアリソースをある時間周期中にプリフェッチワーク専用に割り当てることを必要とする。データを待機してプロセッサが費やす時間を短縮するためのデータプリフェッチの潜在的な利益は、データプリフェッチのオーバーヘッドの補償よりしばしば大きいが、常にそうではない。これは、特に複雑である。というのは、どんなデータがプロセッサの近くに既にあるか及びどんなデータをプリフェッチする必要があるかについてソフトウェアがせいぜい不完全な知識しか事前に有していないからである。
本発明の一実施形態によれば、レイテンシの長いオペレーションの完了を待機する間に明示的ソフトウェア制御を使用してヘルパーオペレーションが実行される。ここで、レイテンシの長いインストラクションとは、それを実行するときに、ローカルキャッシュで入手できない情報のアクセスや、インストラクションの実行準備ができたときに入手できないリソースの使用を必要とするインストラクションである。
例えば、ロードインストラクションの実行の完了を待機する間に、1つ以上のプリフェッチインストラクションが実行されるが、プリフェッチインストラクションのアドレスを計算するために付加的な計算が必要とされる。これは、プリフェッチインストラクションの実行の完了時に、処理が、ロードインストラクションに続いてオリジナルコードセグメントに復帰し、そして実行が通常に続けられるようにして達成される。
従って、プロセッサがアイドルである時間周期が確認され、その後にのみ、データをプリフェッチするためのコードシーケンスが実行される。データをプリフェッチするためのコードシーケンスは、そのコードシーケンスがメインプログラムの状態又はリソース割り当てに影響しないように含まれる。
一実施形態では、コンピュータベースの方法は、明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断する。この判断オペレーションに続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドが実行される。
明示的ソフトウェア制御のもとでヘルパーサブスレッドを実行した結果、状態のチェックポイント処理が行われてスナップショット状態を得る。一実施形態では、この状態がプロセッサ状態である。又、明示的ソフトウェア制御のもとでヘルパーサブスレッドを実行した結果、ヘルパーサブスレッドにおけるインストラクションの実行により補助的なオペレーションが遂行される。補助的なオペレーションが完了すると、状態がスナップショット状態へロールバックされ、そしてアイテムの実際の値を使用してオリジナルコードセグメントが実行される。
或いは又、前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、アイテムの実際の値を使用してオリジナルコードセグメントが実行される。このケースでは、ヘルパーサブスレッドが実行されない。
この実施形態では、構造体は、明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するための手段と、この判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行するための手段とを備えている。
明示的ソフトウェア制御のもとでヘルパーサブスレッドを実行するための手段は、状態をチェックポイント処理してスナップショット状態を得るための手段と、ヘルパーサブスレッドにおけるインストラクションを実行することにより補助的なオペレーションを遂行するための手段と、状態をスナップショット状態へロールバックするための手段とを含む。又、この構造体は、アイテムの実際の値を使用してオリジナルコードセグメントを実行するための手段も備えている。
これらの手段は、例えば、記憶されたコンピュータ実行可能なインストラクションと、これらインストラクションを実行するためのコンピュータシステムのプロセッサとを使用することにより実施できる。コンピュータシステムは、ワークステーション、ポータブルコンピュータ、クライアント−サーバーシステム、或いはネットワーク編成のコンピュータ、記憶媒体等の組合せでよい。
この実施形態では、コンピュータシステムは、プロセッサと、このプロセッサに接続されたメモリとを備えている。メモリには、インストラクションが記憶され、プロセッサにおいてそれらのインストラクションが実行されるときに、方法は、
明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
この判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行するためのステップと、
を備えている。
明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
この判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行するためのステップと、
を備えている。
又、この実施形態では、コンピュータプログラム製品は、
明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
この判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行するためのステップと、
を備えた前記方法のためのコンピュータ読み取り可能なコードを記憶し又は搬送するよう構成された媒体を備えている。
明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
この判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行するためのステップと、
を備えた前記方法のためのコンピュータ読み取り可能なコードを記憶し又は搬送するよう構成された媒体を備えている。
別の実施形態では、コンピュータベースの方法は、
明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
次のうちの1つを遂行するステップであって、
(a)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行し、そして
ヘルパーサブスレッドの実行の完了に続いて前記アイテムの実際の値を使用してオリジナルコードセグメントを実行し、
(b)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、前記アイテムの実際の値を使用してオリジナルコードセグメントを実行する、
のうちの1つを遂行するステップと、
を備えている。
明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
次のうちの1つを遂行するステップであって、
(a)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行し、そして
ヘルパーサブスレッドの実行の完了に続いて前記アイテムの実際の値を使用してオリジナルコードセグメントを実行し、
(b)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、前記アイテムの実際の値を使用してオリジナルコードセグメントを実行する、
のうちの1つを遂行するステップと、
を備えている。
別の実施形態では、構造体は、
明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するための手段と、
次のうちの1つを遂行する手段であって、
(a)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行し、そして
ヘルパーサブスレッドの実行の完了に続いて前記アイテムの実際の値を使用してオリジナルコードセグメントを実行し、
(b)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、前記アイテムの実際の値を使用してオリジナルコードセグメントを実行する、
のうちの1つを遂行する手段と、
を備えている。
明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するための手段と、
次のうちの1つを遂行する手段であって、
(a)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行し、そして
ヘルパーサブスレッドの実行の完了に続いて前記アイテムの実際の値を使用してオリジナルコードセグメントを実行し、
(b)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、前記アイテムの実際の値を使用してオリジナルコードセグメントを実行する、
のうちの1つを遂行する手段と、
を備えている。
これらの手段は、例えば、記憶されたコンピュータ実行可能なインストラクションと、これらインストラクションを実行するためのコンピュータシステムのプロセッサとを使用することにより実施できる。コンピュータシステムは、ワークステーション、ポータブルコンピュータ、クライアント−サーバーシステム、或いはネットワーク編成のコンピュータ、記憶媒体等の組合せでよい。
同様に、コンピュータシステムは、プロセッサと、このプロセッサに接続されたメモリとを備えている。メモリには、インストラクションが記憶され、プロセッサにおいてそれらのインストラクションが実行されるときに、方法は、
明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
次のうちの1つを遂行するステップであって、
(a)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行し、そして
ヘルパーサブスレッドの実行の完了に続いて前記アイテムの実際の値を使用してオリジナルコードセグメントを実行し、
(b)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、前記アイテムの実際の値を使用してオリジナルコードセグメントを実行する、
のうちの1つを遂行するステップと、
を備えている。
明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
次のうちの1つを遂行するステップであって、
(a)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行し、そして
ヘルパーサブスレッドの実行の完了に続いて前記アイテムの実際の値を使用してオリジナルコードセグメントを実行し、
(b)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、前記アイテムの実際の値を使用してオリジナルコードセグメントを実行する、
のうちの1つを遂行するステップと、
を備えている。
又、コンピュータプログラム製品は、
明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
次のうちの1つを遂行するステップであって、
(a)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行し、そして
ヘルパーサブスレッドの実行の完了に続いて前記アイテムの実際の値を使用してオリジナルコードセグメントを実行し、
(b)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、前記アイテムの実際の値を使用してオリジナルコードセグメントを実行する、
のうちの1つを遂行するステップと、
を備えた方法のためのコンピュータ読み取り可能なコードを記憶し又は搬送するように構成された媒体を備えている。
明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
次のうちの1つを遂行するステップであって、
(a)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行し、そして
ヘルパーサブスレッドの実行の完了に続いて前記アイテムの実際の値を使用してオリジナルコードセグメントを実行し、
(b)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、前記アイテムの実際の値を使用してオリジナルコードセグメントを実行する、
のうちの1つを遂行するステップと、
を備えた方法のためのコンピュータ読み取り可能なコードを記憶し又は搬送するように構成された媒体を備えている。
添付図面において、同じ参照番号をもつ要素は、同じ又は同様の要素である。又、参照番号の最初の数字は、その参照番号に関連した要素が最初に現われる図面番号を示す。
本発明の一実施形態によれば、スレッドにおけるレイテンシの長いインストラクションが例えばデータを待機している間に有用な作業を遂行するヘルパーサブスレッドが実行される。以下に詳細に説明するように、ヘルパーサブスレッドの実行は、明示的ソフトウェア制御のもとで遂行される。
ヘルパーサブスレッド140を伴う単一スレッドコードシーケンスにおける一連のソフトウェアインストラクションがコンピュータシステム100のプロセッサ170において実行される。単一スレッドコードシーケンス140における一連のソフトウェアインストラクションを実行すると、コンピュータシステム100は、例えば、(i)レイテンシの長いインストラクションにより与えられるデータが入手できるかどうか判断し、そしてデータが入手できないときに、(ii)コンピュータシステム100の状態のスナップショットを撮って、そのスナップショットの状態へロールバックするための能力を維持し、(iii)ヘルパーサブスレッドにおけるヘルパーインストラクションを実行し、そして(iv)ヘルパーサブスレッドにおけるヘルパーインストラクションの実行が完了したときにスナップショット状態へロールバックして、実行を継続するようにさせる。
一実施形態において、ヘルパーサブスレッドは、レイテンシの長いインストラクションが完了するのを待機しながら、データをプリフェッチする。ヘルパーサブスレッドの実行により検索されるデータは、例えば、プロセッサ170のスナップショット状態に影響を及ぼさない。ヘルパーサブスレッドの実行により検索されるデータは、スナップショット状態から実行が継続するときにインストラクションレベルの並列性を高めることができる。
ユーザは、ソースプログラム130において明示的ソフトウェア制御を使用してヘルパーサブスレッドの実行を制御することができる。或いは又、例えば、コンパイラー又は最適化インタープリターは、ソースプログラム130を処理する際に、レイテンシの長いインストラクションが予想されるポイントにおいてヘルパーサブスレッドにわたって明示的ソフトウェア制御を与えるインストラクションを挿入することができる。
コンパイラー又は最適化インタープリターは、結局のところ、特定のインストラクションが所与の実行に対して長いレイテンシをもつかどうか分からないことがあるので、インストラクションがソフトウェア制御のもとで長いレイテンシを経験するかどうかチェックする能力は、特定のインストラクションが長いレイテンシを経験するときだけヘルパーサブスレッドを実行することを保証する。従って、以下により完全に説明するように、ヘルパーサブスレッドは、長いレイテンシが予想されるポイントに挿入されるが、長いレイテンシに関連したデータ、機能的ユニット、又は他のファクタが入手できる場合には、ヘルパーサブスレッドを実行せずにコードが継続される。
より詳細には、一実施形態において、プロセス200は、選択された位置にヘルパーサブスレッドを挿入するようにプログラムコードを変更するのに使用される。レイテンシの長いインストラクションのチェックオペレーション201において、インストラクションの実行が多数のプロセッササイクルを必要とすることが予想されるかどうかの判断がなされる。インストラクションが多数のプロセッササイクルを必要とすることが予想されない場合には、処理が通常に続けられ、プログラムコードのこのポイントにヘルパーサブスレッドを含むようにコードが変更されない。逆に、インストラクションが多数のプロセッササイクルを必要とすることが予想される場合には、処理がヘルパーサブスレッドの明示的ソフトウェア制御オペレーション202へ移行し、そこで、ヘルパーサブスレッドの実行の明示的ソフトウェア制御のためのインストラクションがソースプログラム130に含まれる。
この実施形態では、実行時にリソース/情報入手性チェックオペレーション210を遂行する命令(1つ又は複数)がソースプログラム130に追加される。以下により完全に説明するように、このインストラクションの実行は、ヘルパーサブスレッドが実行されるかどうかについての明示的制御をプログラムに与える。必要なリソース又は情報が入手できる場合には、処理が通常に続けられる。逆に、必要なリソース又は情報が入手できない場合には、リソース/情報入手性チェックオペレーション210は、ヘルパーサブスレッドオペレーション211へ処理を移行させる。
ヘルパーサブスレッドオペレーション211において、この実施形態では、ヘルパーサブスレッドの実行に応答して上述したオペレーション(ii)から(iv)が遂行されるように、インストラクションが含まれる。より詳細には、ソフトウェアインストラクションは、状態のスナップショットを撮るようにプロセッサ170に指令し、そしてその状態へのその後の全ての変更を管理して、必要に応じて、プロセッサ170がスナップショットの時間にその状態に復帰できるようにする。
撮られるスナップショットは、捕えられる状態に依存する。一実施形態では、状態がシステム状態である。別の実施形態では、状態がマシン状態であり、そして更に別の実施形態では、状態がプロセッサ状態である。各々の場合に、後続オペレーションが同等である。
スナップショットに続いて、ヘルパーコードシーケンスが実行される。ヘルパーコードシーケンスは、長いレイテンシを生じさせたインストラクションの結果を要求しないことに注意されたい。ヘルパーコードシーケンスの実行が完了すると、状態はスナップショット状態へロールバックして、実行が継続される。
ヘルパーコードシーケンスの明示的ソフトウェア制御が有益であるためには、ソフトウェアアプリケーションは、長いレイテンシの後に結果が得られるオペレーションを有するのが理想的である。最も一般的な原因は、キャッシュを頻繁にミスするロードのようなレイテンシの長いオペレーションである。
ソースプログラム130においてヘルパーサブスレッドをどこに挿入すべきか、例えば、その挿入ポイントを判断するための他の実施形態が、クインA.ヤコブソン氏の「METHOD AND STRUCTURE FOR CINVERTING DATA SPECURATION TO CONTROL SPECULATION」と題する共通に譲渡された米国特許出願第10/349,425号に開示されている。この米国特許出願第10/349,425号の発明の概要、図面の簡単な説明、詳細な説明、添付図面、特許請求の範囲、及び要約書の全体を参考としてここに援用する。
図3は、方法200を使用して追加されるインストラクションの一実施形態に対して、ヘルパーサブスレッドの実行の明示的ソフトウェア制御を与える方法300を示すより詳細なプロセスフローチャートである。方法300を更に説明するために、種々の例に対する擬似コードを以下に示す。擬似コードセグメントの一例をテーブル1に示す。
テーブル1
1 Producer_OP A、B −> %rZ
・・・
2 Consumer_OP %rZ、C−> D
・・・
テーブル1
1 Producer_OP A、B −> %rZ
・・・
2 Consumer_OP %rZ、C−> D
・・・
行1(行番号は、擬似コードの部分ではなく、参照として使用されるに過ぎない)は、インストラクションProducer_OPで、これは、アイテムA及びBを使用し、そしてオペレーションの結果をレジスタ%rZに入れる。インストラクションProducer_OPの実行の結果は、長いレイテンシの後まで得られないことがある。
インストラクションProducer_OPは、インストラクションセットでサポートされるいかなるインストラクションでもよい。アイテムA及びBは、この特定のオペレーションが2つの入力を必要とすることを指示するためのプレースホルダーとして単に使用される。
本発明の種々の実施形態は、単一の入力、又は3つ以上の入力を有するオペレーションにも適用できる。レジスタ%rZは、いかなるレジスタでもよい。又、ここでは、インストラクションがアクションをとるか又は情報を使用することを述べるときには、当業者であれば、このようなアクション又は使用は、そのインストラクションの実行の結果であることが理解されよう。
行2は、インストラクションConsumer_OPである。このインストラクションConsumer_OPは、レジスタ%rZに記憶されたインストラクションProducer_OPの実行の結果を使用する。アイテムC及びDは、この特定のオペレーションが2つの入力%RZ及びCを必要とし且つ出力Dを有することを指示するためのプレースホルダーとして単に使用される。
この実施形態では、インストラクションConsumer_OPは、一行の擬似コードで表わされるが、インストラクションConsumer_OPは、インストラクションProducer_OPの結果を使用するコードセグメントを表わす。コードセグメントは、一行以上のソフトウェアコードを含んでもよい。
テーブル1の擬似コードに対して方法200を使用することにより発生される擬似コードが、テーブル2の行Insert_21からInsert_26に表わされている。
テーブル2
1 Producer_OP A、B −> %rZ
・
・
・
Insert_21 %rZ入手不可の場合、予想へ分岐
・・・
Insert_22 オリジナル:
2 Consumer_OP %rZ、C −> D
・
・
・
Insert_23 予想;
Insert_24 チェックポイント、オリジナル
Insert_25 <ヘルパーサブスレッドコード>
Insert_26 フェイル
この場合も、行番号は、擬似コードの部分ではなく、参照として使用されるに過ぎない。
テーブル2
1 Producer_OP A、B −> %rZ
・
・
・
Insert_21 %rZ入手不可の場合、予想へ分岐
・・・
Insert_22 オリジナル:
2 Consumer_OP %rZ、C −> D
・
・
・
Insert_23 予想;
Insert_24 チェックポイント、オリジナル
Insert_25 <ヘルパーサブスレッドコード>
Insert_26 フェイル
この場合も、行番号は、擬似コードの部分ではなく、参照として使用されるに過ぎない。
この例では、行1は、挿入ポイントとして識別され、従って、行Insert_21、Insert_22、Insert_23、Insert_24、Insert_25、及びInsert_26を含むコードセグメントは、方法200を使用して挿入される。このシーケンスのインストラクションの特定の実施は、(i)ソースプログラム130に使用されるコンピュータプログラミング言語、(ii)コンピュータシステム100に使用されるオペレーティングシステム、及び(iii)プロセッサ170のインストラクションセット、の幾つか又は全部を含むファクタに依存する。この開示に鑑み、当業者であれば、いかなる当該システムにおける変換も実施することができよう。
挿入される行について最初に説明し、次いで、方法300について詳細に考える。行Insert_21は、実行時に、インストラクションが長いレイテンシを有するかどうか、例えば、インストラクションProducer_OPの実行の実際の結果が得られるかどうか判断する条件付きフロー制御ステートメントである。
インストラクションProducer_OPが長いレイテンシを有し、例えば、インストラクションProducer_OPの実行の結果が得られない場合には、処理が、行Insert_24であるラベル「予想」へと分岐する。さもなければ、処理は、行Insert_22であるラベル「オリジナル」を経て行2へ継続する。インストラクションProducer_OPの実行が長いレイテンシを有するかどうかの判断はランタイムに行われ、従って、インストラクションProducer_OPの実行の結果を事前に知ることに依存しない。
行Insert_24は、スナップショット状態を撮影し、そして状態をスナップショット状態へロールバックする能力を維持するようにプロセッサ170に指令するインストラクションである。この例では、チェックポイントインストラクションが使用される。
チェックポイントインストラクションに関連した方法及び構造の詳細な説明は、2004年1月23日に出願されたマーク・トレンブレイ、クインA.ヤコブソン、シャイレンダー・チャウドリー、マークS.モイア、及びマウライスP.ハーリー氏の「Selectively Unmarking Load-Marked Cache Lines During Transactional Program Execution」と題する共通に譲渡された米国特許出願第10/764,412号に開示されている。この米国特許出願第10/764,412号の発明の概要、図面の簡単な説明、詳細な説明、添付図面、特許請求の範囲、及び要約書の全体を参考としてここに援用する。
この実施形態では、チェックポイントインストラクションのシンタックスは、次の通りである。
checkpoint、<label>
但し、インストラクション「チェックポイント」の実行は、プロセッサがこのスレッドの状態のスナップショットを撮るようにさせる。ラベル<label>は、チェックポイント処理がフェイルした場合に暗示的に又は明確に処理が移行するところの位置である。
checkpoint、<label>
但し、インストラクション「チェックポイント」の実行は、プロセッサがこのスレッドの状態のスナップショットを撮るようにさせる。ラベル<label>は、チェックポイント処理がフェイルした場合に暗示的に又は明確に処理が移行するところの位置である。
プロセッサが状態のスナップショットを撮った後に、プロセッサは、例えば、スナップ状態における各位置の新たなデータをバッファする。又、プロセッサは、別のスレッドが、状態のロールバックを妨げるオペレーションを実行するかどうか、例えば、チェックポイント処理された状態における位置に書き込みするか、又はチェックポイント処理された状態における位置に値を記憶するかも監視する。このようなオペレーションが検出された場合には、スペキュレーションワークがフラッシュされ、スナップショット状態が回復され、そして処理がラベル<label>へ分岐する。これは、チェックポイントの暗示的フェイルである。
チェックポイント処理の明示的フェイルは、行Insert_26のインストラクションであるステートメント「フェイル」の実行により生じる。ステートメント「フェイル」を実行すると、プロセッサは、状態をスナップショット状態に復帰させ、そしてラベル<label>へ分岐させる。
行Insert_25は、ヘルパーサブスレッド内にヘルパーインストラクションを構成するインストラクション又はコードセグメントである。サブスレッドに対して新たなレジスタセットが使用可能とされ、例えば、サブスレッドが新たなレジスタセットへデータをプリフェッチする。行Insert_25の実行が完了すると、インストラクション「フェイル」が実行され、これは、チェックポイント状態を回復させると共に、処理をラベル「オリジナル」へ移行させる。
テーブル2のコードセグメントがプロセッサ170において実行されるときに、方法300が実行される。データ入手性チェックオペレーション310において、潜在的にレイテンシの長いインストラクションにより必要とされるか又は発生されるデータが入手できるかどうかのチェックが行われる。例えば、このインストラクションの結果が得られる場合には、データを得るのに必要な遅延を伴わずに実行を通常に続けることができる。従って、データを入手できるときには、チェックオペレーション310は、オリジナルコードセグメント324を実行するように処理を移行させる。さもなければ、レイテンシの長いインストラクションの結果が得られないときには、チェックオペレーション310は、ヘルパーサブスレッド320へ処理を移行させる。
ヘルパーサブスレッド320の一実施形態では、状態をチェックポイント処理するようにハードウェアを指令するオペレーション321は、現在状態のスナップショット、即ちスナップショット状態をプロセッサ170により撮影するようにさせる。状態チェックポイント処理オペレーション321が完了すると、処理は、オペレーション321から補助的オペレーションの実行322へ移行する。
補助的オペレーションの実行322は、ヘルパーオペレーションを実行し、例えば、データをプリフェッチするインストラクションのセットを実行する。完了時に、オペレーション322は、状態チェックポイント処理オペレーション323へロールバックするように移行する。
オペレーション323では、チェックポイント処理をフェイルさせたインストラクションが実行される。その結果、スナップショット状態が実際の状態として回復され、処理は、オリジナルコードの実行324へ移行する。オリジナルコードを実行するオペレーション324は、レイテンシの長いインストラクションからの実際の値を使用してオリジナルコードセグメントを実行する。
一実施形態では、チェックオペレーション310は、状態で分岐するインストラクションの実施形態、例えば、レジスタ否レディ状態で分岐するインストラクションを使用して実施される。レジスタ状態で分岐するインストラクションの実行は、このレジスタ状態で分岐するインストラクションがディスパッチされたときにプロセッサ170のスコアボード173をテストする。レジスタの状態がレディである場合には、実行が継続される。レジスタの状態が否レディである場合には、レジスタ状態で分岐するインストラクションで指定されたラベルへ実行が分岐する。レジスタ状態で分岐するインストラクションの一実施形態に対するフォーマットは、次の通りである。
Branch_if_not_ready %reg label
但し、
%regは、この実施形態ではハードウェアインストラクションスコアボードであるスコアボード173におけるレジスタであり、そして
labelは、コードセグメントにおけるラベルである。
Branch_if_not_ready %reg label
但し、
%regは、この実施形態ではハードウェアインストラクションスコアボードであるスコアボード173におけるレジスタであり、そして
labelは、コードセグメントにおけるラベルである。
このインストラクションでは、テーブル2の擬似コードは、次のようになる。
テーブル3
1 Producer_OP A、B −> %rZ
Insert_31 Branch_if_not_ready %rZ 予想
・・・
Insert_22 オリジナル:
2 Consumer_OP %rZ、C −> D
・
・
・
Insert_23 予想;
Insert_24 チェックポイント、オリジナル
Insert_25 <ヘルパーサブスレッドコード>
Insert_26 フェイル
テーブル3
1 Producer_OP A、B −> %rZ
Insert_31 Branch_if_not_ready %rZ 予想
・・・
Insert_22 オリジナル:
2 Consumer_OP %rZ、C −> D
・
・
・
Insert_23 予想;
Insert_24 チェックポイント、オリジナル
Insert_25 <ヘルパーサブスレッドコード>
Insert_26 フェイル
レジスタ状態で分岐するインストラクションを使用するコードは、ディスパッチグループ分けルール及びオペレーションの予想レイテンシを理解するのが重要である。否レディで分岐するインストラクションが、ロードインストラクションの直後に発行された場合には、このインストラクションは、通常、ロードを否レディとして見る。というのは、例えば、ロードは、レベル1のデータキャッシュヒットの場合でも3サイクルの最小レイテンシがあるからである。
状態情報に基づく新規な分岐インストラクションの詳細な説明が、マーク・トレンブレイ、シャイレンダー・チャウドリー、及びクインA.ヤコブソン氏の「METHOD AND STRUCTURE FOR EXPLICIT SOFTWARE CONTROL USING SCOREBOARD STATUS INFORMATION」と題する共通に出願され且つ共通に譲渡された米国特許出願第11/xxx,xxx号(代理人ドケットNo.SUN040062)に開示されている。この米国特許出願の発明の概要、詳細な説明、特許請求の範囲、要約書、それらのセクションで引用される図面、及び図面の簡単な説明を参考としてここに援用する。
当業者であれば、この実施形態において、方法300に関連して上述した個々のオペレーションは、コンピュータシステム100のプロセッサ170でコンピュータプログラムインストラクションを実行することにより遂行されることが容易に理解されよう。一実施形態では、記憶媒体は、方法440(図4)のためのコンピュータ読み取り可能なプログラムコードをインストールしており、ここで、方法440は、方法300の一実施例であり、コンピュータ読み取り可能なプログラムコードを実行すると、プロセッサ170は、上述した個々のオペレーションを遂行する。
一実施形態において、コンピュータシステム100は、パーソナルコンピュータ又はワークステーションのようなハードウェアコンフィギュレーションである。しかしながら、別の実施形態では、コンピュータシステム100は、クライアント−サーバーコンピュータシステム400の一部分である。クライアント−サーバーコンピュータシステム400又はスタンドアローンコンピュータシステム100のいずれについても、メモリ120は、通常、メインメモリ410のような揮発性メモリと、ハードディスクドライブのような不揮発性メモリ411の両方を含む。
メモリ120は、図1には統合構造として示されているが、これは、メモリ120内の全てのメモリが同じ物理的位置にあることを要求するものとして解釈してはならない。メモリ120の全部又は一部分は、プロセッサ170とは異なる物理的位置にあってもよい。例えば、方法440は、プロセッサ170とは異なる位置に物理的に置かれたメモリ、例えば、メモリ584に記憶されてもよい。
プロセッサ170は、方法440を含むメモリに結合されねばならない。これは、クライアント−サーバーシステムにおいて達成することもできるし、或いは又、モデム及びアナログライン、又はデジタルインターフェイス及びデジタルキャリアラインを経て別のコンピュータへ至る接続により達成することもできる。例えば、メモリ120の全部又は一部分がワールドワイドウェブポータルにあり、一方、プロセッサ170が、例えば、パーソナルコンピュータにあってもよい。
より詳細には、コンピュータシステム100は、一実施形態において、ポータブルコンピュータ、ワークステーション、サーバーコンピュータ、又は方法440を実行できる他の装置でよい。同様に、別の実施形態では、コンピュータシステム100は、多数の異なるコンピュータ、ワイヤレス装置、サーバーコンピュータ、或いはここに述べる方法440を遂行するように相互接続されるこれら装置の希望の組合せで構成することもできる。
ここでは、コンピュータプログラム製品は、方法440のためのコンピュータ読み取り可能なコードを記憶又は搬送するように構成されるか、又は方法440のためのコンピュータ読み取り可能なコードが記憶された媒体を備えている。コンピュータプログラム製品の幾つかの例は、CD−ROMディスク、ROMカード、フロッピー(登録商標)ディスク、磁気テープ、コンピュータハードディスク、ネットワーク上のサーバー、及びコンピュータ読み取り可能なプログラムコードを表わすネットワークを経て送信される信号である。
ここでは、コンピュータメモリは、揮発性メモリ、不揮発性メモリ、或いはその2つの組合せを指す。同様に、コンピュータ入力ユニット、例えば、キーボード415及びマウス418、並びにディスプレイユニット416は、上述した装置又は同等の装置のいずれかに、各々、ここに述べる情報を入力し、又、ここに述べる情報を表示するのに必要な機能を与える特徴を指す。
この開示に鑑み、方法440は、ユーザにとって関心のあるオペレーティングシステム及びコンピュータプログラミング言語を使用する種々様々なコンピュータシステムコンフィギュレーションにおいて実施することができる。更に、方法440は、異なる装置のメモリに異なるモジュールとして記憶することができる。例えば、方法440は、最初に、サーバーコンピュータ480に記憶することができ、次いで、必要に応じて、方法440のモジュールをクライアント装置へ転送してクライアント装置で実行することができる。従って、方法440の一部分がサーバープロセッサ482で実行され、そして方法440の別の部分がクライアント装置のプロセッサで実行される。
更に別の実施形態では、方法440は、別のコンピュータシステムのメモリに記憶される。記憶された方法440は、ネットワーク404を経て、システム100のメモリ120へ転送される。
方法440は、一実施形態では、コンピュータソースプログラム130を使用して実施される。コンピュータプログラムは、例えば、フロッピー(登録商標)ディスク又はコンパクトディスク(CD)のような任意の通常のデータキャリア、並びにハードディスクのような任意の通常のコンピュータシステムの記憶ファシリティに記憶されてもよい。それ故、本発明の一実施形態は、本発明の方法を実施するためのコンピュータソースプログラムを記憶するデータキャリアにも係る。又、本発明の別の実施形態は、コンピュータシステムを使用して方法440を実施する方法にも係る。本発明の更に別の実施形態は、方法440を実施するコンピュータプログラムが記憶された記憶媒体をもつコンピュータシステムにも係る。
方法440は、その一実施形態に関連して以上に説明したが、当業者であれば、本発明の精神及び範囲から逸脱せずにこの実施形態に対して変更をなし得ることが容易に理解されよう。
機能的ユニット、即ちレジスタファイル171及びスコアボード173は、例示に過ぎず、本発明を、図1に示す特定のレイアウトに限定するものではない。プロセッサ170は、単一チップ上に複数のプロセッサを含んでもよい。複数のプロセッサの各々は、独立したレジスタファイル及びスコアボードを有してもよいし、或いはレジスタファイル及びスコアボードが、あるやり方で、共有又は結合されてもよい。同様に、レジスタファイル171は、1つ以上のレジスタファイルで作られてもよい。又、スコアボード173の機能は、当業者に知られた種々様々なやり方で実施することができ、例えば、スコアボードに代わって、ハードウェア状態ビットをサンプリングすることができる。それ故、状態情報を得るためのスコアボードの使用は、例示に過ぎず、本発明を、スコアボードのみの使用に限定するものではない。
Claims (25)
- 明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
前記判断に続いて、前記レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行するためのステップと、
を備えたコンピュータベースの方法。 - 明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行するための前記ステップは、状態をチェックポイント処理してスナップショット状態を得る段階を更に含む、請求項1に記載のコンピュータベースの方法。
- 前記状態は、プロセッサ状態を含む、請求項2に記載のコンピュータベースの方法。
- 明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行するための前記ステップは、前記ヘルパーサブスレッドにおけるインストラクションを実行することにより補助的なオペレーションを遂行する段階を含む、請求項2に記載のコンピュータベースの方法。
- 明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行するための前記ステップは、スナップショット状態へ状態をロールバックする段階を更に含む、請求項4に記載のコンピュータベースの方法。
- 前記アイテムの実際の値を使用してオリジナルコードセグメントを実行するステップを更に備えた、請求項5に記載のコンピュータベースの方法。
- 前記判断に続いて、前記レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、前記アイテムの実際の値を使用してオリジナルコードセグメントを実行するステップを更に備えた、請求項1に記載のコンピュータベースの方法。
- 前記判断するステップは、レジスタ状態で分岐するインストラクションを実行する段階を含む、請求項1に記載のコンピュータベースの方法。
- 前記レジスタ状態で分岐するインストラクションは、レディで分岐するインストラクションである、請求項7に記載のコンピュータベースの方法。
- 明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するための手段と、
前記判断に続いて、前記レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行するための手段と、
を備えた構造体。 - 明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行するための前記手段は、状態をチェックポイント処理してスナップショット状態を得る手段を更に含む、請求項10に記載の構造体。
- 前記状態はプロセッサ状態を含む、請求項11に記載の構造体。
- 明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行するための前記手段は、前記ヘルパーサブスレッドにおけるインストラクションを実行することにより補助的なオペレーションを遂行する手段を更に含む、請求項11に記載の構造体。
- 明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行するための前記手段は、スナップショット状態へ状態をロールバックする手段を更に含む、請求項13に記載の構造体。
- 前記アイテムの実際の値を使用してオリジナルコードセグメントを実行する手段を更に備えた、請求項14に記載の構造体。
- 前記判断に続いて、前記レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、前記アイテムの実際の値を使用してオリジナルコードセグメントを実行する手段を更に備えた、請求項10に記載の構造体。
- 前記判断する手段は、レジスタ状態で分岐するインストラクションを実行する手段を含む、請求項16に記載の構造体。
- 前記レジスタ状態で分岐するインストラクションは、レディで分岐するインストラクションである、請求項16に記載の構造体。
- プロセッサと、
前記プロセッサに結合され、インストラクションが記憶されたメモリと、
を備えたコンピュータシステムにおいて、前記プロセッサで前記インストラクションを実行するときに、
明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
前記判断に続いて、前記レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行するためのステップと、
を備えた方法。 - 明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
前記判断に続いて、前記レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行するためのステップと、
を備えた方法のためのコンピュータ読み取り可能なコードを記憶又は搬送するように構成された媒体を備えたコンピュータプログラム製品。 - 前記方法は、前記判断に続いて、前記レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、前記アイテムの実際の値を使用してオリジナルコードセグメントを実行するステップを更に備えた、請求項20に記載のコンピュータプログラム製品。
- 明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
次のうちの1つを遂行するステップであって、
(a)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行し、そして
前記ヘルパーサブスレッドの実行の完了に続いて前記アイテムの実際の値を使用してオリジナルコードセグメントを実行し、
(b)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、前記アイテムの実際の値を使用してオリジナルコードセグメントを実行する、
のうちの1つを遂行するステップと、
を備えたコンピュータベースの方法。 - 明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するための手段と、
次のうちの1つを遂行する手段であって、
(a)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行し、そして
前記ヘルパーサブスレッドの実行の完了に続いて前記アイテムの実際の値を使用してオリジナルコードセグメントを実行し、
(b)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、前記アイテムの実際の値を使用してオリジナルコードセグメントを実行する、
のうちの1つを遂行する手段と、
を備えた構造体。 - プロセッサと、
前記プロセッサに結合され、インストラクションが記憶されたメモリと、
を備えたコンピュータシステムにおいて、前記プロセッサで前記インストラクションを実行するときに、
明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
次のうちの1つを遂行するステップであって、
(a)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行し、そして
前記ヘルパーサブスレッドの実行の完了に続いて前記アイテムの実際の値を使用してオリジナルコードセグメントを実行し、
(b)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、前記アイテムの実際の値を使用してオリジナルコードセグメントを実行する、
のうちの1つを遂行するステップと、
を備えた方法。 - 明示的ソフトウェア制御のもとで、レイテンシの長いインストラクションに関連したアイテムが入手できるかどうか判断するためのステップと、
次のうちの1つを遂行するステップであって、
(a)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できないことが分かると、明示的ソフトウェア制御のもとで、ヘルパーサブスレッドを実行し、そして
前記ヘルパーサブスレッドの実行の完了に続いて前記アイテムの実際の値を使用してオリジナルコードセグメントを実行し、
(b)前記判断に続いて、レイテンシの長いインストラクションに関連したアイテムが入手できることが分かると、前記アイテムの実際の値を使用してオリジナルコードセグメントを実行する、
のうちの1つを遂行するステップと、
を備えた方法のためのコンピュータ読み取り可能なコードを記憶又は搬送するように構成された媒体を備えたコンピュータプログラム製品。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US55869004P | 2004-03-31 | 2004-03-31 | |
US11/083,163 US20050223385A1 (en) | 2004-03-31 | 2005-03-16 | Method and structure for explicit software control of execution of a thread including a helper subthread |
PCT/US2005/010106 WO2005098648A2 (en) | 2004-03-31 | 2005-03-29 | Method and structure for explicit software control of execution of a thread including a helper subthread |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007532990A true JP2007532990A (ja) | 2007-11-15 |
Family
ID=35055853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007506292A Abandoned JP2007532990A (ja) | 2004-03-31 | 2005-03-29 | ヘルパーサブスレッドを含むスレッドの実行の明示的ソフトウェア制御のための方法及び構造 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20050223385A1 (ja) |
EP (1) | EP1735715A4 (ja) |
JP (1) | JP2007532990A (ja) |
WO (1) | WO2005098648A2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8230423B2 (en) * | 2005-04-07 | 2012-07-24 | International Business Machines Corporation | Multithreaded processor architecture with operational latency hiding |
US7539851B2 (en) * | 2006-05-18 | 2009-05-26 | Sun Microsystems, Inc. | Using register readiness to facilitate value prediction |
US9940138B2 (en) * | 2009-04-08 | 2018-04-10 | Intel Corporation | Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations |
US8612730B2 (en) | 2010-06-08 | 2013-12-17 | International Business Machines Corporation | Hardware assist thread for dynamic performance profiling |
JP2012109039A (ja) | 2010-11-15 | 2012-06-07 | Yazaki Corp | 端子接続構造 |
KR20150019349A (ko) * | 2013-08-13 | 2015-02-25 | 삼성전자주식회사 | 다중 쓰레드 실행 프로세서 및 이의 동작 방법 |
JP2020046752A (ja) * | 2018-09-14 | 2020-03-26 | キオクシア株式会社 | 記憶装置及び情報処理システム |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3577189A (en) * | 1969-01-15 | 1971-05-04 | Ibm | Apparatus and method in a digital computer for allowing improved program branching with branch anticipation reduction of the number of branches, and reduction of branch delays |
WO1991004536A1 (en) * | 1989-09-20 | 1991-04-04 | Dolphin Server Technology A/S | Instruction cache architecture for parallel issuing of multiple instructions |
US5682493A (en) * | 1993-10-21 | 1997-10-28 | Sun Microsystems, Inc. | Scoreboard table for a counterflow pipeline processor with instruction packages and result packages |
US5551172A (en) * | 1994-08-23 | 1996-09-03 | Yu; Simon S. C. | Ventilation structure for a shoe |
JP3218932B2 (ja) * | 1995-07-06 | 2001-10-15 | 株式会社日立製作所 | データプリフェッチコード生成方法 |
US5761515A (en) * | 1996-03-14 | 1998-06-02 | International Business Machines Corporation | Branch on cache hit/miss for compiler-assisted miss delay tolerance |
US6128303A (en) * | 1996-05-09 | 2000-10-03 | Maker Communications, Inc. | Asynchronous transfer mode cell processing system with scoreboard scheduling |
US5748631A (en) * | 1996-05-09 | 1998-05-05 | Maker Communications, Inc. | Asynchronous transfer mode cell processing system with multiple cell source multiplexing |
US6016542A (en) * | 1997-12-31 | 2000-01-18 | Intel Corporation | Detecting long latency pipeline stalls for thread switching |
JPH11212788A (ja) * | 1998-01-28 | 1999-08-06 | Toshiba Corp | プロセッサのデータ供給装置 |
US6202204B1 (en) * | 1998-03-11 | 2001-03-13 | Intel Corporation | Comprehensive redundant load elimination for architectures supporting control and data speculation |
US6332214B1 (en) * | 1998-05-08 | 2001-12-18 | Intel Corporation | Accurate invalidation profiling for cost effective data speculation |
US6260190B1 (en) * | 1998-08-11 | 2001-07-10 | Hewlett-Packard Company | Unified compiler framework for control and data speculation with recovery code |
US6219781B1 (en) * | 1998-12-30 | 2001-04-17 | Intel Corporation | Method and apparatus for performing register hazard detection |
US6463579B1 (en) * | 1999-02-17 | 2002-10-08 | Intel Corporation | System and method for generating recovery code |
US6393553B1 (en) * | 1999-06-25 | 2002-05-21 | International Business Machines Corporation | Acknowledgement mechanism for just-in-time delivery of load data |
US6640315B1 (en) * | 1999-06-26 | 2003-10-28 | Board Of Trustees Of The University Of Illinois | Method and apparatus for enhancing instruction level parallelism |
US7100157B2 (en) * | 2002-09-24 | 2006-08-29 | Intel Corporation | Methods and apparatus to avoid dynamic micro-architectural penalties in an in-order processor |
-
2005
- 2005-03-16 US US11/083,163 patent/US20050223385A1/en not_active Abandoned
- 2005-03-29 WO PCT/US2005/010106 patent/WO2005098648A2/en not_active Application Discontinuation
- 2005-03-29 EP EP05730104A patent/EP1735715A4/en not_active Withdrawn
- 2005-03-29 JP JP2007506292A patent/JP2007532990A/ja not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
EP1735715A2 (en) | 2006-12-27 |
WO2005098648A3 (en) | 2008-01-03 |
US20050223385A1 (en) | 2005-10-06 |
EP1735715A4 (en) | 2008-10-15 |
WO2005098648A2 (en) | 2005-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5681473B2 (ja) | プログラムの最適化装置、最適化方法および最適化プログラム | |
JP2007531164A (ja) | データスペキュレーションの明示的ソフトウェア制御のための方法及び構造 | |
US7600221B1 (en) | Methods and apparatus of an architecture supporting execution of instructions in parallel | |
JP5592015B2 (ja) | ハードウェア制限に基づく調整可能なトランザクション・サイズを利用してコードを動的に最適化する装置、方法およびシステム | |
US7133969B2 (en) | System and method for handling exceptional instructions in a trace cache based processor | |
US7574588B2 (en) | Time-multiplexed speculative multi-threading to support single-threaded applications | |
EP2176763B1 (en) | Memory transaction grouping | |
JP2007515715A (ja) | 命令キャッシュからラベル境界上のトレースキャッシュに遷移させる方法 | |
JP2007532990A (ja) | ヘルパーサブスレッドを含むスレッドの実行の明示的ソフトウェア制御のための方法及び構造 | |
JP2006518053A (ja) | ハードウェア・スカウト・スレッディングを通してコードを推測で実行することによるプリフェッチの生成 | |
KR100368166B1 (ko) | 컴퓨터 처리 시스템에서 스택 레퍼런스를 변경하는 방법 | |
US7457923B1 (en) | Method and structure for correlation-based prefetching | |
US7565658B2 (en) | Hidden job start preparation in an instruction-parallel processor system | |
US6460067B1 (en) | Using time stamps to improve efficiency in marking fields within objects | |
JPWO2009004709A1 (ja) | 間接分岐処理プログラムおよび間接分岐処理方法 | |
US8359589B2 (en) | Helper thread for pre-fetching data | |
US6453463B1 (en) | Method and apparatus for providing finer marking granularity for fields within objects | |
JP5278538B2 (ja) | コンパイルシステム、コンパイル方法およびコンパイルプログラム | |
JP3146058B2 (ja) | 並列処理型プロセッサシステムおよび並列処理型プロセッサシステムの制御方法 | |
WO2021036173A1 (zh) | 解释执行字节码指令流的方法及装置 | |
JP3988740B2 (ja) | 並列処理装置、命令再試行方法、およびプログラム | |
US20100077145A1 (en) | Method and system for parallel execution of memory instructions in an in-order processor | |
CN101263452A (zh) | 对执行包括辅助子线程的线程的显式软件控制的方法和结构 | |
JP6107904B2 (ja) | プロセッサ及びストア命令の変換方法 | |
JP2024030940A (ja) | ソースコード変換プログラムおよびソースコード変換方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080306 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20090617 |