(57)【要約】      （修正有）【課題】マルチスレッド誤り投機を解消する。【解決手段】多数のスレッドユニットが同時にスレッドを実行する。それらはチェックポイント・マスク命令を実行して、レジスタ・コンテンツを含むアクティブなチェックポイントデータと、レジスタ・コンテンツの妥当性を示すチェックポイント・マスクとを格納するようメモリを初期化する。レジスタ・コンテンツが変化すると、スレッドはチェックポイント・ライト命令を実行して、レジスタ・コンテンツを記憶し、チェックポイント・マスクをアップデートする。また、スレッドは回復機能命令を実行して、チェックポイント回復機能へのポインタを格納し、誤り投機に応答して、チェックポイント回復機能へブランチする。次いで、スレッドは、１又はそれ以上のチェックポイント・リード命令を実行して、有効なアーキテクチャ状態を回復するために必要なレジスタにデータを有効チェックポイント記憶領域からコピーする。【選択図】図１
2010244544.tif 000002
【特許請求の範囲】
【請求項１】
夫々がチェックポイント・ライト命令を実行可能であり、複数のスレッドを同時に実行する複数のスレッドユニットと、
前記複数のスレッドのうちの１つのスレッドの実行中に受けるチェックポイント・ライト命令について、該チェックポイント・ライト命令によって書き込まれるコンテンツデータに対応する第１のデータを格納するメモリ記憶領域と
を有し、
前記メモリ記憶領域は、また、前記チェックポイント・ライト命令について、該チェックポイント・ライト命令の実行に応答して該チェックポイント・ライト命令の実行ステータスを示す状態を有する第２のデータを格納する、装置。
【請求項２】
前記複数のスレッドユニットの夫々は、更に、前記第２のデータの前記状態を初期化するようチェックポイント・マスク命令を実行可能である、請求項１記載の装置。
【請求項３】
前記チェックポイント・マスク命令の実行は、アクティブなチェックポイントについて前記第２のデータの前記状態を初期化する、請求項２記載の装置。
【請求項４】
前記チェックポイント・マスク命令の実行は、コミットされた有効なチェックポイントを前記アクティブなチェックポイントにコピーする、請求項３記載の装置。
【請求項５】
前記複数のスレッドユニットの夫々は、更に、前記第１のデータを前記メモリ記憶領域からレジスタにコピーするようチェックポイント・リード命令を実行可能である、請求項１記載の装置。
【請求項６】
前記メモリ記憶領域は、また、チェックポイント回復機能のために第３のデータを格納する、請求項１記載の装置。
【請求項７】
前記第３のデータは、前記複数のスレッドのうちの前記１つのスレッドの実行中に受ける回復機能命令に応答して前記チェックポイント回復機能のための命令ポインタを記憶する、請求項６記載の装置。
【請求項８】
前記複数のスレッドを同時に実行し、夫々がチェックポイント・ライト命令を実行可能であり、更にはチェックポイント・マスク命令を実行可能である複数のスレッドユニットと、
前記複数のスレッドユニットの１つのスレッドユニットにつき１つであり、前記チェックポイント・マスク命令に応答して、少なくとも第１のデータ及び第２のデータを格納するようメモリ記憶領域を初期化する実行ユニットと
を有し、
前記実行ユニットは、前記チェックポイント・ライト命令に応答して、該チェックポイント・ライト命令によって書き込まれるレジスタ・コンテンツデータに対応する前記第１のデータを格納し、前記チェックポイント・ライト命令についての前記レジスタ・コンテンツデータの実行ステータスを示す状態を有する前記第２データを格納する、マルチスレッドプロセッサ。
【請求項９】
前記複数のスレッドユニットの夫々は、更に、前記第１のデータを前記メモリ記憶領域からレジスタにコピーするようチェックポイント・リード命令を実行可能である、請求項８記載のマルチスレッドプロセッサ。
【請求項１０】
前記複数のスレッドユニットの夫々は、更に、チェックポイント回復機能のための命令ポインタを有する第３のデータを前記メモリ記憶領域に格納するよう回復機能命令を実行可能である、請求項９記載のマルチスレッドプロセッサ。
【請求項１１】
複数のスレッドを投機的に実行する、機械により実施される方法であって、
少なくとも第１のデータ及び第２のデータを格納するようメモリ記憶領域を初期化するようにチェックポイント・マスク命令を実行するステップと、
チェックポイント・ライト命令によって書き込まれるレジスタ・コンテンツデータに対応する前記第１のデータを格納し、前記チェックポイント・ライト命令についての前記レジスタ・コンテンツデータのステータスを示す状態を有する前記第２のデータを格納するように前記チェックポイント・ライト命令を実行するステップと
を有する方法。
【請求項１２】
チェックポイント回復機能のための命令ポインタを有する第３のデータを前記メモリ記憶領域に格納するように回復機能命令を実行するステップを更に有する、請求項１１記載の方法。
【請求項１３】
前記第１のデータを前記メモリ記憶領域からレジスタにコピーするようにチェックポイント・リード命令を実行するステップを更に有する、請求項１２記載の方法。
【請求項１４】
前記チェックポイント・リード命令の実行は、前記複数のスレッドの中の誤り投機に応答して前記チェックポイント回復機能のための前記命令ポインタにより特定される場所へブランチングする結果である、請求項１２記載の方法。
【請求項１５】
複数のスレッドの中の誤り投機回復のための、機械により実施される方法であって、
チェックポイント回復機能のための命令ポインタを有する第１のデータをメモリ記憶領域に格納するように回復機能命令を実行するステップと、
前記複数のスレッドの中の誤り投機に応答して前記チェックポイント回復機能のための前記命令ポインタによって特定される場所へブランチングするステップと、
第２のデータを前記メモリ記憶領域からレジスタにコピーするようにチェックポイント・リード命令を実行するステップと
を有する方法。
【請求項１６】
少なくとも前記第１のデータ、前記第２のデータ、及び第３のデータを格納するよう新しいチェックポイントについて前記メモリ記憶領域を初期化するようにチェックポイント・マスク命令を実行するステップと、
チェックポイント・ライト命令によって書き込まれるレジスタ・コンテンツデータに対応する前記第２のデータを格納し、前記チェックポイント・ライト命令についての前記レジスタ・コンテンツのステータスを示す状態を有する前記第３のデータを格納するように前記チェックポイント・ライト命令を実行するステップと
を更に有する、請求項１５記載の方法。
【請求項１７】
前記チェックポイント・マスク命令の実行は、コミットされた有効なチェックポイントをアクティブなチェックポイントにコピーする、請求項１６記載の方法。
【請求項１８】
マルチスレッド処理システムであって、
複数のスレッドの中の誤り投機回復のためのデータを格納するメモリ記憶領域を有するメモリと、
前記複数のスレッドを同時に実行し、夫々がチェックポイント・ライト命令を実行可能であり、更にはチェックポイント・マスク命令を実行可能である複数のスレッドユニットと、
前記複数のスレッドユニットの１つのスレッドユニットにつき１つであり、前記チェックポイント・マスク命令に応答して、少なくとも第１のデータ及び第２のデータを格納するようメモリ記憶領域を初期化する実行ユニットと
を有し、
前記実行ユニットは、前記チェックポイント・ライト命令に応答して、該チェックポイント・ライト命令によって書き込まれるレジスタ・コンテンツデータに対応する前記第１のデータを格納し、前記チェックポイント・ライト命令についての前記レジスタ・コンテンツデータの実行ステータスを示す状態を有する前記第２データを格納する、マルチスレッド処理システム。
【請求項１９】
前記複数のスレッドユニットの夫々は、更に、前記第１のデータを前記メモリ記憶領域からレジスタにコピーするようチェックポイント・リード命令を実行可能である、請求項１８記載のマルチスレッド処理システム。
【請求項２０】
前記複数のスレッドユニットの夫々は、更に、チェックポイント回復機能のための命令ポインタを有する第３のデータを前記メモリ記憶領域に格納するよう回復機能命令を実行可能である、請求項１９記載のマルチスレッド処理システム。
【請求項２１】
マルチスレッド処理システムであって、
複数のスレッドの中の誤り投機回復のためのデータを格納するメモリ記憶領域を有するメモリと、
前記複数のスレッドを同時に実行し、夫々が回復機能命令を実行可能であり、更にはチェックポイント・リード命令を実行可能である複数のスレッドユニットと、
前記複数のスレッドユニットの１つのスレッドユニットにつき１つであり、前記回復機能命令に応答して、チェックポイント回復機能のための命令ポインタを有する第１のデータをメモリ記憶領域に格納する実行ユニットと
を有し、
前記複数のスレッドユニットの１つのスレッドユニットは、前記複数のスレッドユニットの中の誤り投機に応答して、前記チェックポイント回復機能について前記命令ポインタによって特定される場所へブランチし、
前記実行ユニットは、前記チェックポイント・リード命令に応答して、第２のデータを前記メモリ記憶領域からレジスタにコピーする、マルチスレッド処理システム。
【請求項２２】
チェックポイント・マスク命令に応答して、前記複数のスレッドユニットの前記１つのスレッドユニットは、少なくとも第１のデータ、第２のデータ、及び第３のデータを格納するよう新しいチェックポイントについて前記メモリ記憶領域を初期化し、
チェックポイント・ライト命令に応答して、前記複数のスレッドユニットの前記１つのスレッドユニットは、前記チェックポイント・ライト命令によって書き込まれるレジスタ・コンテンツデータに対応する前記第２のデータを格納し、前記チェックポイント・ライト命令についての前記レジスタ・コンテンツデータのステータスを示す状態を有する前記第３のデータを格納する、請求項２１記載のマルチスレッド処理システム。
【請求項２３】
前記チェックポイント・マスク命令の実行は、コミットされた有効なチェックポイントをアクティブなチェックポイントにコピーする、請求項２２記載のマルチスレッド処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、情報処理システムの分野に関する。具体的に、開示は、投機的マルチスレッドのためのレジスタチェックポイントメカニズムに関する。
【背景技術】
【０００２】
例えばマイクロプロセッサを含む情報処理システムの性能を高めるために、ハードウェア技術及びソフトウェア技術の両方が用いられている。プロセッサ性能を改善すべく用いられている１つのアプローチは「マルチスレッディング（multithreading）」として知られている。マルチスレッディングで、命令ストリームは、並行して実行され得る複数の命令ストリームに分割される。例えば時分割マルチスレッディング又はスイッチオンイベント（switch-on-event）・マルチスレッディングのような、ソフトウェアのみのマルチスレッディング・アプローチで、かかる複数の命令ストリームは、二者択一的に、同じ共有プロセッサで実行される。
【０００３】
ますます、マルチスレッディングはハードウェアで支援される。例えば、１つのアプローチで、例えばチップ・マルチプロセッサ（ＣＭＰ）システムのようなマルチプロセッサシステムにおけるプロセッサは夫々、同時に複数のスレッドの１つに作用することができる。同時マルチスレッディング（ＳＭＴ）と呼ばれる他のアプローチで、単一の物理プロセッサは、オペレーティングシステム及びユーザプログラムに対して複数の論理プロセッサとして現れるよう作られる。すなわち、各論理プロセッサはアーキテクチャ状態の完全なセットを保つが、例えばキャッシュ、実行ユニット、ブランチ予測器制御ロジック及びバス等の、物理プロセッサのほぼ全ての他のリソースは共有される。スレッドは、同時に実行し、時分割マルチスレッディング又はスイッチオンイベント・マルチスレッディングに比べて共有リソースをより適切に使用する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えばＣＭＰ及びＳＭＴマルチスレッディングシステム等の、複数のスレッドのためのハードウェア支援を提供するシステムについて、１又はそれ以上のスレッドは、単一スレッドアプリケーションの実行中にアイドリング状態にある。別にアイドリング状態のスレッドを利用して投機的に単一スレッドアプリケーションを並列処理することにより実行速度を速めることが可能であるが、多くの場合、単一スレッドアプリケーションのどのセクションが別にアイドル状態のスレッドによって投機的に実行されるべきかを決定することは難しい。スレッド間依存は、誤り投機（mis-speculations）を生じさせながらランタイムに現れ、簡単に投機を失敗させうる。誤り投機の解消には、正確なアーキテクチャ状態が回復される必要がある。
【０００５】
今日まで、投機的マルチスレッディングシステムでかかる誤り投機を解消するための有効なメカニズムは十分に検討されていない。
【課題を解決するための手段】
【０００６】
本発明の実施形態は、夫々がチェックポイント・ライト命令を実行可能であり、複数のスレッドを同時に実行する複数のスレッドユニットと、前記複数のスレッドのうちの１つのスレッドの実行中に受けるチェックポイント・ライト命令について、該チェックポイント・ライト命令によって書き込まれるコンテンツデータに対応する第１のデータを格納するメモリ記憶領域とを有し、前記メモリ記憶領域は、また、前記チェックポイント・ライト命令について、該チェックポイント・ライト命令の実行に応答して該チェックポイント・ライト命令の実行ステータスを示す状態を有する第２のデータを格納する、装置を提供する。
【０００７】
本発明の実施形態は、前記複数のスレッドを同時に実行し、夫々がチェックポイント・ライト命令を実行可能であり、更にはチェックポイント・マスク命令を実行可能である複数のスレッドユニットと、前記複数のスレッドユニットの１つのスレッドユニットにつき１つであり、前記チェックポイント・マスク命令に応答して、少なくとも第１のデータ及び第２のデータを格納するようメモリ記憶領域を初期化する実行ユニットとを有し、前記実行ユニットは、前記チェックポイント・ライト命令に応答して、該チェックポイント・ライト命令によって書き込まれるレジスタ・コンテンツデータに対応する前記第１のデータを格納し、前記チェックポイント・ライト命令についての前記レジスタ・コンテンツデータの実行ステータスを示す状態を有する前記第２データを格納する、マルチスレッドプロセッサを提供する。
【０００８】
本発明の実施形態は、複数のスレッドを投機的に実行する、機械により実施される方法であって、少なくとも第１のデータ及び第２のデータを格納するようメモリ記憶領域を初期化するようにチェックポイント・マスク命令を実行するステップと、チェックポイント・ライト命令によって書き込まれるレジスタ・コンテンツデータに対応する前記第１のデータを格納し、前記チェックポイント・ライト命令についての前記レジスタ・コンテンツデータのステータスを示す状態を有する前記第２のデータを格納するように前記チェックポイント・ライト命令を実行するステップとを有する方法を提供する。
【０００９】
本発明の実施形態は、複数のスレッドの中の誤り投機回復のための、機械により実施される方法であって、チェックポイント回復機能のための命令ポインタを有する第１のデータをメモリ記憶領域に格納するように回復機能命令を実行するステップと、前記複数のスレッドの中の誤り投機に応答して前記チェックポイント回復機能のための前記命令ポインタによって特定される場所へブランチングするステップと、第２のデータを前記メモリ記憶領域からレジスタにコピーするようにチェックポイント・リード命令を実行するステップとを有する方法を提供する。
【００１０】
本発明の実施形態は、マルチスレッド処理システムであって、複数のスレッドの中の誤り投機回復のためのデータを格納するメモリ記憶領域を有するメモリと、前記複数のスレッドを同時に実行し、夫々がチェックポイント・ライト命令を実行可能であり、更にはチェックポイント・マスク命令を実行可能である複数のスレッドユニットと、前記複数のスレッドユニットの１つのスレッドユニットにつき１つであり、前記チェックポイント・マスク命令に応答して、少なくとも第１のデータ及び第２のデータを格納するようメモリ記憶領域を初期化する実行ユニットとを有し、前記実行ユニットは、前記チェックポイント・ライト命令に応答して、該チェックポイント・ライト命令によって書き込まれるレジスタ・コンテンツデータに対応する前記第１のデータを格納し、前記チェックポイント・ライト命令についての前記レジスタ・コンテンツデータの実行ステータスを示す状態を有する前記第２データを格納する、マルチスレッド処理システムを提供する。
【００１１】
本発明の実施形態は、マルチスレッド処理システムであって、複数のスレッドの中の誤り投機回復のためのデータを格納するメモリ記憶領域を有するメモリと、前記複数のスレッドを同時に実行し、夫々が回復機能命令を実行可能であり、更にはチェックポイント・リード命令を実行可能である複数のスレッドユニットと、前記複数のスレッドユニットの１つのスレッドユニットにつき１つであり、前記回復機能命令に応答して、チェックポイント回復機能のための命令ポインタを有する第１のデータをメモリ記憶領域に格納する実行ユニットとを有し、前記複数のスレッドユニットの１つのスレッドユニットは、前記複数のスレッドユニットの中の誤り投機に応答して、前記チェックポイント回復機能について前記命令ポインタによって特定される場所へブランチし、前記実行ユニットは、前記チェックポイント・リード命令に応答して、第２のデータを前記メモリ記憶領域からレジスタにコピーする、マルチスレッド処理システムを提供する。
【発明の効果】
【００１２】
本発明の実施形態によれば、投機的マルチスレッディングにおける誤り投機を解消することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】投機的マルチスレッディングのためにレジスタチェックポイントメカニズムを用いるマルチスレッド処理システムの一実施形態を表す。
【図２】投機的マルチスレッディングのためにレジスタチェックポイントメカニズムを用いる処理の一実施形態に係るフロー図を表す。
【図３】投機的マルチスレッディングのためにレジスタチェックポイントメカニズムを用いる処理の代替の実施形態に係るフロー図を表す。
【発明を実施するための形態】
【００１４】
本発明は、一例としてであって限定ではなく、添付の図面の図に表されている。
【００１５】
投機的マルチスレッディングを支援するようレジスタチェックポイントメカニズムを用いる、マルチスレッド処理システムにおける方法及び装置が開示される。スレッド間依存がランタイムに起こる場合は、それらは誤り投機を生じさせることがある。誤り投機の解消は、正確なアーキテクチャ状態が回復され且つ実行が安全な点へロールバックされることを必要とする。本発明の幾つかの実施形態には、複数のスレッドの間の誤り投機回復のためのチェックポイントデータを格納する記憶領域を有するメモリが含まれる。複数のスレッドユニットが同時にスレッドを実行する。それらのスレッドユニットはチェックポイント・マスク命令を実行して、レジスタ・コンテンツを含むアクティブなチェックポイントデータと、記憶されるレジスタ・コンテンツの妥当性を示すチェックポイント・マスクとを格納するようメモリを初期化する。レジスタ・コンテンツが変化すると、スレッドユニットはチェックポイント・ライト命令を実行して、レジスタ・コンテンツを記憶し、チェックポイント・マスクをアップデートする。また、スレッドユニットは回復機能命令を実行して、アクティブなチェックポイントについてチェックポイント回復機能のための命令ポインタを格納し、スレッド間の誤り投機に応答して、チェックポイント回復機能へブランチする。次いで、スレッドユニットは、１又はそれ以上のチェックポイント・リード命令を実行して、正確なアーキテクチャ状態を回復するためにデータを有効なチェックポイント記憶領域から必要なレジスタにコピーする。これにより、実行はレジュームすることができる。
【００１６】
このようにして、かかるレジスタチェックポイントメカニズムは、スレッド間同期を必要とすることなく、回復可能な有効なアーキテクチャ状態を提供することができる。スレッドユニットは非同期的にスレッドを実行し、それによって、共にシームレスに動作して、アーキテクチャ状態をマージして構成する。当然に、本発明の実施形態は、非常に細かい投機的マルチスレッディングを可能にする。下記記載での明瞭さのために、我々は、誤り投機との関連で回復可能な有効なアーキテクチャ状態を保つことに取り組むが、当然に、回復は、例えばインタラプト（interrupt）、エクセプション（exception）、コンテキストスイッチ（context  switch）等の任意数の予期せぬ途絶の場合に実質的に同じように進められ得る。また、下記記載での明瞭さのために、我々は、命令が順次的にコミットし又は全体的に可視的になると仮定する。
【００１７】
本発明のこれらの及び他の実施形態は、下記の教示に従って実現され得、当然に、様々な変形及び変更が、本発明のより広い技術的範囲から逸脱することなく、下記の教示において行われてよい。然るに、明細書及び図面は、限定的観念というよりむしろ例示として考えられるべきであり、本発明は特許請求の範囲及びその均等に関してのみ評価される。
【００１８】
以上のように、投機的スレッドは独立していることを常に保証されているわけではない。多数の技術が、静的に又はランタイムでスレッド間依存を検出し且つ解消するために、使用されてよい。かかる技術は、ソフトウェア若しくはハードウェア又はそれらの組合せに基づいてよい。例えば、ハードウェアに基づくキャッシュ・コヒーレンス・インフラストラクチャは、名称依存（name  dependency）のための名称変更及び／又はランタイムでの真依存の（true  dependency）ためのフォワーディング（forwarding）によりスレッド間依存を検出し及び／又は解消するために、使用されてよい。
【００１９】
ソフトウェアでは、静的にデータを私的なものとする（privatize）ようコンプライアズ・アビリティ（compliers  ability）に依存する名称依存レゾリューションが実行されてよい。そのとき、他の依存がランタイムで検出されることがあり、簡単に投機を失敗させうる。動的なリネーミング（renaming）がまた、名称依存を解消するために使用されてよいが、投機的実行の後に回復フェーズを必要とする。真データ依存は、共有データのアドレスを送信して、関連するオーバーヘッドを伴ってこれらのアドレスにおけるスレッド間を同期させることを通じて解消され得る。レイジー・フォワーディング（lazy  forwarding）が、また、同期オーバーヘッドを低減するために真データ依存に使用されてよい。投機的なロード及び記憶は、また、誤り投機を検出するようコード及びデータ構造をチェックすることに伴って、ソフトウェアにおいて増加しうる。
【００２０】
スレッド間依存がランタイムで生じるときは、それらは誤り投機をもたらしうる。誤り投機を検出するメカニズムに関わらず、その解消には、正確なアーキテクチャ状態が回復され且つ実行が安全な点へロールバックされることを要する。ここで開示される技術は、アーキテクチャ状態チェックポイントを保持するとともに、依存解消及び誤り投機検出に使用されうる他のメカニズムとは無関係なそれらチェックポイントに対応する安全な実行点へ実行をロールバックすることに向けられている。
【００２１】
図１は、投機的マルチスレッディングのためにレジスタチェックポイントメカニズムを用いるマルチスレッド処理システム１０１の一実施形態を表す。システム１０１の実施形態は、複数の投機的スレッドの間の誤り投機回復のためにチェックポイント１４１データ及びチェックポイント１４５データを記憶する記憶領域を具えるメモリ１１４を有してよい。複数のスレッドユニット１１１〜１３１は、バス又は他の何らかのインターコネクト１１７を介してメモリ１１４と結合されており、また、それらは、それらの各自のスレッドを同時に実行する。システム１０１の幾つかの実施形態は、例えばプロセッサ１０２のようなプロセッサを有してよい。プロセッサ１０２は複数のスレッドユニット１１１及び１２１を有する。当然に、チェックポイント１４１データ及びチェックポイント１４５データを記憶する記憶領域は、コンプライアによって若しくはオペレーティングシステムによってメモリ１１４に割り当てられてよく、あるいは、メモリ１１４はハードウェアにおいて隠された又はエイリアスされた状態であってよい。
【００２２】
スレッドユニット１１１〜１３１は、それらの各自の実行ユニット１１２〜１３２によりチェックポイント・マスク命令を実行して、レジスタ１１３〜１３３のコンテンツを記憶する複数の記憶場所１４３〜１４４を含むアクティブなチェックポイント１４１データと、記憶されるレジスタ１１３〜１３３のコンテンツの妥当性を示すチェックポイント・マスクとを記憶するよう記憶領域を初期化することができる。当然、幾つかの実施形態で、実行ユニット１１２〜１３２のうちの１又はそれ以上は、スレッドユニット１１１〜１３１の一部によって物理的に共有されてよい。幾つかの実施形態で２つの記憶領域が管理され、１つはアクティブなチェックポイント１４１データを記憶し、もう１つは最新の有効なチェックポイント１４５データを記憶する。レジスタ１１３〜１３３のコンテンツが変化すると、スレッドユニット１１１〜１３１は、アクティブなチェックポイント１４１についてそれらの各自のレジスタ１１３〜１３３のコンテンツを記憶するとともに、記憶された対応するレジスタについてのチェックポイント・マスクをアップデートするよう、各々の実行ユニット１１２〜１３２によりチェックポイント・ライト命令を実行することができる。幾つかの実施形態について、チェックポイント・マスクは、関心のある全てのレジスタ・コンテンツが記憶されるまではアップデートされる。その時点で、アクティブなチェックポイントは最新の有効なチェックポイントとなり、新しいアクティブなチェックポイントが、他のチェックポイント・マスク命令を実行することによって、初期化され得る。幾つかの実施形態について、アクティブなチェックポイントは、アクティブチェックポイント・マスクが完全に有効である場合に、第１の成功したチェックポイント・マスク命令に応答してチェックポイントデータをコピーすることによって、最新の有効なチェックポイントとなりうる。代替の実施形態について、ポインタ１１５及び１１６は交換されてよい。
【００２３】
スレッドユニット１１１〜１３１は、また、各々の実行ユニット１１２〜１３２により回復機能命令を実行して、アクティブなチェックポイント１４１データのための記憶場所１４２にチェックポイント回復機能のための命令ポインタを格納することができる。幾つかの実施形態で、夫々の投機的スレッドは、アクティブなチェックポイント１４１データのための記憶場所１４２に異なったチェックポイント回復機能のための異なった命令ポインタを格納してよい。スレッドユニット１１１〜１３１のいずれかの投機的スレッドの間の誤り投機に応答して、それらのスレッドユニット１１１〜１３１はチェックポイント回復機能へブランチしてよい。次いで、スレッドユニット１１１〜１３１は、各々の実行ユニット１１２〜１３２により１又はそれ以上のチェックポイント・リード命令を実行して、正確なアーキテクチャ状態を回復するようデータを有効なチェックポイント１４５の記憶領域から必要な各々のレジスタ１１３〜１３３にコピーすることができる。これにより、実行はレジュームすることができる。
【００２４】
投機的マルチスレッディングのためのレジスタチェックポイントメカニズムを支援する命令の一実施例について、表１を参照されたし。
【００２５】
【表１】
2010244544.tif 000003
当然、表１に示されるチェックポイント命令の様々な代替の実施例は、本発明の原理を逸脱することなく実施又は使用をされてよい。例えば、チェックポイント・マスクは、チェックポイント・マスク命令によって明示的に設定される必要はなく、むしろ、レジスタカウンタが引数として与えられうる。
【００２６】
図２は、投機的マルチスレッディングのためのレジスタチェックポイントメカニズムを使用する処理２１０の一実施形態に係るフロー図を表す。処理２０１及びここで開示される他の処理は、汎用のマシンによって若しくは特別の目的のマシンによって又はそれらの組合せによって実行可能な専用のハードウェア又はソフトウェア又はファームウェア・オペレーションコードを有しうる処理ブロックによって実行される。処理２０１及びここで開示される他の処理の処理ブロックは、また、１又はそれ以上のスレッドユニットによって同時に又は並行して又は順次に又はばらばらの順序で実行されてよい。
【００２７】
処理ブロック２１１で、チェックポイント・マスク命令が実行され、少なくとも第１のデータ１４３及び第２のデータ１４４を記憶するようアクティブなチェックポイント１４１のためのメモリ記憶領域が初期化される。処理ブロック２１２で中央演算処理装置（ＣＰＵ）書き込みが起こる場合に、すなわち、決定的に重要な意味を持つレジスタのコンテンツが変化した場合に、処理は処理ブロック２１３へ進む。処理ブロック２１３で、チェックポイント・ライト命令が実行され、変化したレジスタのコンテンツに対応する第１のデータ１４３が記憶されるとともに、チェックポイント・ライト命令についてその変化したレジスタのコンテンツの妥当性ステータスを示す状態を有する第２のデータ１４４が記憶される。ＣＰＵ書き込みが起こらない場合は、処理は処理ブロック２１４へ進む。処理ブロック２１４で、誤り投機又はロールバックを必要とする他のイベントが検出される場合は、処理は処理ブロック２１５へ進み、実行は最新の有効なチェックポイント１４５へロールバックされる。誤り投機又は他のこのようなイベントが検出されない場合は、処理は順当に処理ブロック２１４から処理ブロック２１１へ進み、新しいアクティブなチェックポイントが初期化される。
【００２８】
処理２０１の幾つかの実施形態について、チェックポイント・マスク命令、チェックポイント・ライト命令及び実行を最新の有効なチェックポイントへロールバックする回復コードは全て、コンピュータによって静的にスレッドに挿入される。処理の幾つかの代替の実施形態について、チェックポイント・マスク命令、チェックポイント・ライト命令及び実行を最新の有効なチェックポイントへロールバックする回復コードは、動的オプティマイザによって又はマイクロコードを通して又は動的なハードウェアメカニズムによって動的にスレッドに挿入されてよい。
【００２９】
図３は、投機的マルチスレッディングのためのレジスタチェックポイントメカニズムを使用する処理３０１の代替の実施形態に係るフロー図を表す。
【００３０】
処理ブロック３１１で、回復機能命令が実行されて、チェックポイント回復機能のための命令ポインタを有する第１のデータ１４２がアクティブなチェックポイント１４１のためのメモリ記憶領域に格納される。処理ブロック３１２でＣＰＵ書き込みが起こる場合に、例えば、決定的に重要な意味を持つレジスタのコンテンツが変化した場合に、処理は処理ブロック３１３へ進む。処理ブロック３１３で、チェックポイント・ライト命令が実行されて、変化したレジスタのコンテンツに対応する第２のデータ１４３が記憶されるとともに、チェックポイント・ライト命令について変化したレジスタのコンテンツの妥当性ステータスを示す状態を有する第３のデータ１４４が記憶される。ＣＰＵ書き込みが起こらない場合は、処理は処理ブロック３１４へ進む。処理ブロック３１４で、誤り投機又は他のこのようなイベントが検出される場合は、処理は処理ブロック３１５へ進み、前述のチェックポイント回復機能のための命令ポインタによって特定される場所へのブランチが誤り投機に応答して行われる。次いで、処理ブロック３１６で、１又はそれ以上のチェックポイント・リード命令が実行されて、記憶データ１４７が最新の有効なチェックポイント１４５のためのメモリ記憶領域から必要な各自のレジスタにコピーされる。処理ブロック３１４で誤り投機又は他のこのようなイベントが検出されない場合は、処理は順当に処理ブロック３１１へ進んでよく、新しいアクティブなチェックポイントが形成される。
【００３１】
当然、処理３０１の幾つかの実施形態で、回復機能命令、チェックポイント・ライト命令及び１又はそれ以上のチェックポイント・リード命令は、コンプライアによって静的にスレッドに挿入されても、あるいは、動的オプティマイザによって又はいずれかの他の適切な方法によって動的にスレッドに挿入されてもよい。
【００３２】
以上の記載は、本発明の好ましい実施形態を表すことを目的とする。上記から、当然に、特に、成長が早く、更には進歩が容易には予測されないような技術分野で、本発明は、添付の特許請求の範囲の技術的範囲及びその均等の範囲内にある本発明の原理から逸脱することなく、当業者によって、配置及び細部において変更されてよい。
【符号の説明】
【００３３】
１０１  マルチスレッド処理システム
１０２  プロセッサ
１１１，１２１，１３１  スレッドユニット
１１２，１２１，１３２  実行ユニット
１１３，１２３，１３３  レジスタ
１１４  メモリ
１１５，１１６  ポインタ
１４１，１４５  チェックポイント
１４３，１４４，１４７，１４８  データ
【図１】
2010244544.tif 000004
【図２】
2010244544.tif 000005
【図３】
2010244544.tif 000006