説明

ハードウエアトランザクショナルメモリにおける自動サスペンド及び再開

【解決手段】
複数の処理コアによって共有されるメモリ(140)にアクセスすると共に複数のメモリアクセス動作をトランザクショナルモードで単一のアトミックトランザクションとして実行するように構成され且つプログラム制御転送等の暗黙サスペンド条件を決定することに応答してトランザクショナルモードをサスペンドするように構成されるコンピュータプロセッサ(102)のための装置及び方法が開示される。トランザクションを実行することの一部として、プロセッサは、投機的メモリアクセス動作によってアクセスされるデータを投機的データ(220)であるとしてマークする。サスペンド条件を決定すること(実行中のスレッドにおける制御転送を検出することによるものを含む)(230)に応答して、プロセッサはトランザクショナルモードの実行をサスペンドし、このことはサスペンドフラグ(240)をセットすることと投機的データ(250)のマーキングをサスペンドすることとを含む。後でプロセッサが再開条件(例えば制御転送からのリターンに対応するリターン制御転送)を検出した場合には、プロセッサは、投機的データのマーキングを再開するように構成される。

【発明の詳細な説明】
【背景技術】
【0001】
ハードウエアトランザクショナルメモリ(Hardware Transactional Memory)(HTM)は、並列プログラミングをサポートするためのコンピュータアーキテクチャにおけるメカニズムである。HTMによると、プログラマは一連の命令をトランザクションとして単に宣言すればよく、そしてHTMシステムは、トランザクションにおける命令がアトミックで且つ隔離された方法で実行されることを保証する。アトミック性(atomicity)は、トランザクションの全ての命令が他の全ての同時スレッドの実行に対して単一のアトミックブロックとして実行されることを意味する。隔離は、トランザクションが完了するまではトランザクションの中間結果が残りのシステムにさらされないことを意味する。HTMシステムは、トランザクションが対立しない限りはそれらが並列に動作することを可能にし得る。2つのトランザクションは、それら両方が同じメモリ区域にアクセスする場合に対立することがあり、この場合2つのトランザクションのいずれか一方が当該メモリ区域に書き込む。
【0002】
既存の多くのHTM設計は、プログラム制御転送の存在下、例えばシステムコール、例外、割り込み、信号送信、又は他のイベントに応答するオペレーティングシステムへの転送の存在下で、正確性及び/又はセキュリティの問題を提示する。伝統的に、そのようなプログラム制御転送は、HTMシステムに対して透過的に生じるであろう。そのような転送がトランザクションの実行中に生じると、オペレーティングシステムコードはトランザクションの一部として実行されるであろう。これにより正確性及び/又はセキュリティの問題が生じ得る。幾つかの従来のシステムにおいては、トランザクションがオペレーティングシステムにおける実行中に停止される(aborted)と、予期しない副次的影響が生じることがある。
【0003】
1つの例において、TCP/IPネットワークデバイスドライバを考える。ネットワークからパケットを受け取ると、割り込みがトリガーされてデバイスドライバコードを実行する。プロセッサはアプリケーショントランザクションを実行中に割り込みを受けたものと仮定する。プログラム制御はデバイスドライバへと転送されるであろうし、また従来のHTMシステムにおいては、従来のHTM設計は単純にトランザクションの開始及び終了の間の全ての命令がトランザクションの一部であるとみなすので、ドライバはトランザクションの一部として動作するであろう。
【発明の概要】
【発明が解決しようとする課題】
【0004】
この挙動は少なくとも2つの問題を生じさせる可能性がある。第一に、デバイスドライバコード実行中にトランザクションが停止されると、システム障害が発生することがある。例えば、デバイスドライバが、ネットワークインタフェースハードウエアを管理するために、メモリマッピングされたレジスタに書き込むように構成されており、且つレジスタ値を変更している途中に停止されると、インタフェースハードウエアは矛盾したままの状態になり得るので、ネットワークシステムの完全性を壊してしまう。また、上述した例では、デバイスドライバがトランザクションの一部として実行されている間に又はその後でトランザクションを停止することは、ネットワーク接続がパケットを失うことにつながる。例えば、ドライバコードがパケットを処理した後、ドライバは受信確認メッセージ(acknowledge message)をパケット送信機へ送る。このとき送信機は、再送信の必要性はないものとして、パケットを削除するであろう。しかし、トランザクションが後で停止されると、パケットを受信機で記憶するために使用されたメモリ書き込み動作に戻されるであろうし、そしてパケットは恒久的に失われているであろうから、TCP/IPシステムの信頼性のある通信保証を阻害することになる。
【0005】
第二に、セキュリティ問題は、トランザクションの一部としてオペレーティングシステムコードに透過的にジャンプする別の副次的影響である。多くの最新のプロセッサは、オペレーティングシステムとアプリケーションコード実行を分離するために、セキュリティ特徴をサポートする。例えばx86アーキテクチャは、システムコールの境界(boundary of system calls)でコードセグメントセレクタを切り換えることによって、オペレーティングシステム及びアプリケーションが異なるコードセグメント及び特権レベル(例えばユーザレベル特権対カーネルレベル特権(kernel-level privilege))を使用することを可能にしている。しかし、従来のHTMシステムは、多くの場合、コードセグメントセレクタ等のプロセッサ状態の何らかの部分をチェックポイントにしないし管理しない。ユーザレベルコードに由来するトランザクションがオペレーティングシステムへのシステムコールを実行すると、特権レベルが高くなる。トランザクションが停止すると、従来のHTMは、特権レベルを低いレベルに戻すようには構成されないであろう。従って、結果としてセキュリティリークがもたらされることになる。悪意のあるプログラムは、トランザクションの停止の後にこのセキュリティホールをついてオペレーティングシステム特権レベルを得ることが可能になり得る。
【課題を解決するための手段】
【0006】
多重処理コアによって共有されるメモリにアクセスすると共にメモリアクセス動作をトランザクショナルモードで単一のアトミックトランザクションとして実行するように構成されるコンピュータプロセッサのための装置及び方法が開示される。装置は、暗黙サスペンド条件(implicit suspend condition)を決定することに応答してトランザクショナルモードをサスペンドするように構成される。トランザクションを実行することの一部として、プロセッサは、投機的メモリアクセス動作(speculative memory access operations)によってアクセスされるデータを投機的データであるとしてマークする。暗黙サスペンド条件を決定すること(実行中のスレッドにおける例えばオペレーティングシステムへの制御転送を検出することによるものを含む)に応答して、プロセッサはトランザクショナルモードの実行をサスペンドし、このことはサスペンドフラグをセットすることと投機的データのマーキングをサスペンドすることとを含む。後で、プロセッサが再開条件(resumption condition)を検出した場合(例えば制御転送からのリターンに対応するリターン制御転送を検出することによる)には、プロセッサは、投機的データのマーキングを再開すること(resuming)によって、トランザクショナルモードの実行を再開する。
【0007】
幾つかの実施形態においては、プロセッサは、トランザクションがサスペンドされている間にアトミックトランザクションが失敗したことを検出するように更に構成されてよい。幾つかの実施形態においては、プロセッサは、停止フラグをセットすると共にトランザクションを再開する試みがなされるときに停止フラグをチェックすることによって、サスペンドされたトランザクションが失敗したのを検出することに応答してよい。停止フラグがセットされているとチェックが決定した場合には、プロセッサはトランザクションを停止する。幾つかの実施形態においては、プロセッサは、停止フラグ及び/又はサスペンドフラグの値を実行コンテクストの一部としてセーブ/リストアするように構成されてよい。
【図面の簡単な説明】
【0008】
【図1】図1は幾つかの実施形態に従いサスペンド/再開能力を伴うHTMメカニズムを実装するように構成されるコンピュータシステムを示すブロック図である。
【0009】
【図2】図2は幾つかの実施形態に従いメモリトランザクションを実行しながらトランザクショナルモードの実行をサスペンドするための方法を示すフロー図である。
【0010】
【図3】図3はトランザクションの間にトランザクショナルモードの実行をサスペンドすることによるものを含めHTMを用いたアトミックトランザクションを実行するための方法を示すフロー図である。
【0011】
【図4】図4は幾つかの実施形態に従いサスペンドされたトランザクショナルモードの間に検出される停止条件を処理するための方法を示すフロー図である。
【0012】
【図5】図5は幾つかの実施形態に従い自動サスペンド/再開能力を伴うHTMを実装するための特定の方法を示す図である。
【0013】
【図6】図6は幾つかの実施形態に従いサスペンションが実行され得る種々の制御転送をリストアップした表である。
【0014】
【図7】図7は幾つかの実施形態に従いここに説明される自動サスペンド/再開機能を伴うハードウエアトランザクショナルメモリシステムを実装するように構成されるコンピュータシステムを示す図である。
【0015】
ここで用いられる任意の表題は、組織化の目的だけのものであり、明細書の範囲又は特許請求の範囲を限定することを意図されるものではない。ここで用いられる「〜してよい、〜あってよい、〜し得る、〜することができる、〜場合がある、〜ことがある(may)」の語は、必須の意味(即ち「〜なければならない」を意味する)ではなく許容の意味(即ち可能性があることを意味する)で用いられている。同様に、「含む(include, includes)」及び「含んでいる(including)」の語は、含んでいることを意味するが、これには限定されない。
【発明を実施するための形態】
【0016】
従来のHTM設計は、プログラム制御転送の存在下で正確性及び/又はセキュリティの問題を提示する。ここで用いられる「制御転送」の用語は、プログラムフロー、例えば何らかの実行中ソフトウエアプログラムから何らかの監視プログラム又はエラー若しくは割り込みのハンドラーへのプログラムフロー及び逆のフロー、における変化を信号として送り、生じさせ又は表示する命令又はイベントを参照する。幾つかの実施形態においては、監視プログラムはオペレーティングシステムであってよい。種々の実施形態において、異なるオペレーティングシステムが用いられてよく(例えばLinux(登録商標)、Windows(登録商標)等、各オペレーティングシステムは、スケジューリングタスク、実行アプリケーション及び周辺機器制御、等のコンピュータの基本機能をサポートするソフトウエアとして実装されてよい。幾つかの実施形態においては、オペレーティングシステムは、基本機能を実装するためのカーネル(kernel)を含み得る。種々の実施形態において、オペレーティングシステムのカーネルはモノリシックであってよく、あるいはマイクロカーネルであってよい。
【0017】
幾つかの実施形態においては、1つ以上のオペレーティングシステムは仮想であってよい(例えばオペレーティングシステムは仮想マシン内の「ゲスト」OSであってよい)。そのような実施形態においては、仮想オペレーティングシステムを展開するために用いられるハイパーバイザ(hypervisor)又は別のランタイムシステムへの制御転送は、プログラムと仮想オペレーティングシステムの間でプログラム制御を転送してよい。ここに説明される実施形態は、オペレーティングシステムからの/への転送制御を参照するが、実施形態は、仮想オペレーティングシステム、ハイパーバイザ、及び/又は任意の他のランタイムシステムからの/への転送を含むように適合させられ得ることが理解されるべきである。従って、特に断りのないかぎり、「制御転送」は、何らかの実行中コードとそれが実行中のオペレーティングシステムとの間でのプログラムフローの変化には限定されない。
【0018】
種々の実施形態において、制御転送は、種々のイベント、例えばオペレーティングシステムへのシステムコールを実行中のプログラム、ソフトウエア及び/若しくはハードウエアの例外、ハードウエア割り込み、ソフトウエア信号、又は他のイベント、を検出することに応答して行われてよい。アプリケーションからオペレーティングシステムへの各制御転送は、対応するリターン制御転送を有していてよく、リターン制御転送は、元の(サスペンド中の)制御転送が生じたプログラムへ制御をリターンする。例えば、プログラムがシステムコールを起動して(invokes)オペレーティングシステムへの転送を制御する場合、オペレーティングシステムは、何らかの機能を実行し次いでシステムコール起動直後に起動中のプログラム内の点へ制御をリターンすることによって、応答してよい。
【0019】
種々の実施形態において、ハードウエアトランザクショナルメモリシステム(HTM)は、複数のメモリアクセス動作を単一のアトミックトランザクションとして実行するための機能を提供してよい。幾つかの実施形態においては、プログラムは、トランザクショナルモードの実行を開始するための開始命令及びトランザクショナルモードの実行を終了するためのそれに続く終了命令を実行してよい。HTMは、トランザクショナルモード(即ち開始命令及び終了命令の間)においてアプリケーションによって実行される幾つかの又は全てのメモリ動作が、システムにおける他のスレッド/プロセッサの実行に対してアトミックに(atomically)行われるのを確実にするように構成されてよい。
【0020】
アトミックな実行を確実にするために、HTMは、トランザクションのメモリアクセス動作を、トランザクションが成功裏にコミットされるまで投機的な(speculative)ものとして取り扱うと共に停止条件をモニタリングするように構成されてよい。例えばHTMは、トランザクショナルモードの実行の間に投機的命令によって投機的なものとして書き込まれた又は読み出されたデータをマークしてよく、またトランザクションが成功裏に終了した場合(即ち停止条件が検出されなかった場合)には、HTMは、当該データを非投機的なものとしてマークしてよく且つ/又はそれを共有メモリ内へ組み込んでよい。一方、停止条件が検出された場合には、HTMは、投機的データをドロップ/無効化し且つ/又は投機的データ書き込みの影響を共有メモリへ後退させるように構成されてよい。
【0021】
種々の実施形態に従うと、ハードウエアメカニズム(例えばプロセッサ上の)は、アクティブトランザクション内でプログラム制御転送を検出することによるものを含めサスペンション条件(suspension condition)を自動的に検出すると共にトランザクショナル実行モードをサスペンドすることによって応答するように構成されてよい。幾つかの実施形態においては、HTMは、次いで対応するリターン制御転送を検出して、必要であればトランザクショナルモードの実行を再開するように構成されてよい。
【0022】
幾つかの実施形態においては、トランザクショナル実行モードがサスペンドされている間に、プロセッサは、メモリ動作によってアクセスされるデータを投機的であるとはマークしない。従ってそのような実施形態において、トランザクションが停止された場合、トランザクショナルモードがサスペンドされていた間に実行されたメモリアクセス動作は、後退させられないであろう。
【0023】
幾つかの実施形態において、トランザクショナル実行がサスペンドされている間に停止条件が検出された場合、HTMは、トランザクショナルモードが再開した後までトランザクションを停止するのを遅らせるように構成されてよい。例えば、停止条件(例えばデータ衝突によって生じる)を検出することに応答して、HTMは、停止フラグをセットし、そしてサスペンドされたトランザクショナルモードで実行を継続してよい。トランザクショナル実行モードを再開する場合、HTMは、停止フラグをチェックし、フラグがセットされている場合には停止を行ってよい。
【0024】
種々の実施形態において、トランザクショナル実行モードのサスペンション/再開は、ソフトウエア実行に対して透過的な(transparent)方法でHTMによって行われてよい。即ち、HTMは、サスペンド/再開条件を自動的に検出すると共にトランザクショナル実行モードをサスペンド/再開するように構成されているので、ソフトウエア(例えばプログラム及び/又はオペレーティングシステム)は、トランザクショナル実行モードを適切なタイミングでサスペンドし又は再開することをHTMに指示する特別な命令を実行するように修正される必要はない。
【0025】
図1は幾つかの実施形態に従いサスペンド/再開能力を伴うHTMメカニズムを実装するように構成されるコンピュータシステムを示すブロック図である。図1において、システム100(幾つかの実施形態においてはトランザクションメモリシステムと称されることがある)は、コンピュータプロセッサ102、共有メモリ140及び他のプロセッサ150を備える。これらの要素はバス160によって接続されていてよく、バス160は、ブロードキャスト及び/又は点対点を含む種々の相互接続であってよい。種々の実施形態において、他のプロセッサ150は、共有メモリ140をコンピュータプロセッサ102と共有する1つ以上のプロセッサを含んでいてよい。幾つかの実施形態においては、プロセッサ150の各々は、コンピュータプロセッサ102として構成され得る。
【0026】
図示される実施形態に従うと、コンピュータプロセッサ102は、上述したようにサスペンド/再開能力を伴うハードウエアトランザクショナルメモリ機能を実装するためのHTM110を含む。種々の実施形態において、HTM110は種々の方法で投機的データをマークしてよい。例えばHTM110は、データキャッシュ130等のデータキャッシュ内に投機的データを記憶すると共にマークすることによるものを含めキャッシュベースの投機的データバッファを用いてよい。他の実施形態においては、投機的データバッファは、他の構造において、例えばロードキュー、ストアキュー、又はロード/ストアキューにおいて実装されてよい。種々の実施形態において、各プロセッサは、多重の協働する投機的データバッファを実装してよい(例えばデータキャッシュ130内に及びロード/ストアキュー内に)。
【0027】
システム100において、HTM110は、制御転送検出ユニット112、トランザクションサスペンションユニット114、衝突検出ユニット116及びオーバフロー検出ユニット118を含む種々のハードウエアユニットを含む。種々の実施形態において、これらの要素のうちの種々の要素が全部又は一部において組み合わされてよく、あるいは更なる下位要素へと分解されてよい。
【0028】
幾つかの実施形態においては、制御転送検出ユニット112はサスペンド条件を決定するように構成されてよい。特定の実施形態においては、このサスペンド条件は「暗黙的な(implicit)」サスペンド条件であってよく、暗黙サスペンド条件は、明示的な命令(例えば「ポーズ(pause)」又は「サスペンド」)の存在以外の基準の幾つかのセットに基づいてサスペンド条件が決定されることを意味する。幾つかの実施形態においては、ユニット112は、プロセッサ102によって実行中のスレッドにおける制御転送を検出することに部分的に基づいて、サスペンド条件が存在することを決定するように構成されてよい。例えば、制御転送検出ユニットは、システムコール起動によって又はハードウエア割り込み(例えばI/O割り込み)によって生じる制御転送を検出してよい。
【0029】
種々の実施形態において、サスペンド状態を決定することはまた、プロセッサ102が現在トランザクショナル実行モードにあること、及び/又はプロセッサがより高い特権レベル(例えばカーネルレベル)でよりもむしろより低い特権レベル(例えばアプリケーションレベル)で実行中であること、を確認することを含んでいてよい。例えば幾つかのシステムにおいては、現在の特権レベル(current privilege level)(CPL)はレジスタ(例えばレジスタ120)内に記憶され、そして種々の特権レベルを表示する値を保持することができる。そのようなシステムにおいては、システムは、より高い特権レベルで、種々のメモリ領域、I/Oポート、及び/又は特殊命令、等の保護された資源への実行スレッドアクセスを許可する。例えばx86アーキテクチャにおいては、最高の特権を有するレベル0から最低の特権を有するレベル3までの4つの特権レベルがある。そのようなシステムにおいては、レベル0はカーネル/エグゼクティブのために用いられ、レベル3はアプリケーションプログラムのために用いられる。幾つかの実施形態においては、高められた特権レベルでソフトウエアが命令を実行する必要がある場合(例えばオペレーティングシステムコードを実行する場合)には、ソフトウエアは、1つ以上の命令を実行して特権のレベルを上げてよく(例えばレベル3からレベル0へ)、また高められた特権がもはや必要なくなった場合には、1つ以上の命令を実行して特権レベルを下げてよい(例えばレベル0からレベル3へ)。幾つかのシステムにおいては、オペレーティングシステムコードが、それぞれエントリ及びエグジットに際して特権レベルを上げること及び下げることが可能である。
【0030】
幾つかの実施形態においては、制御転送検出ユニット112は、a)オペレーティングシステムへの制御転送、b)プロセッサがトランザクショナルモードで実行中であること、及びc)現在の特権レベルが上げられていないこと(例えばレベル3であること)、を検出することに応答してサスペンション条件を検出するように構成されてよい。サスペンド条件を検出することに応答して、制御転送検出ユニット112は、トランザクションサスペンションユニット114にサスペンド条件を通知してよい。それに応答して、トランザクションサスペンションユニット114は、トランザクショナルモードの実行をサスペンドすることによって、例えばレジスタ120内にサスペンドフラグ122をセットすることによって、応答するように構成されてよい。上述したように、トランザクショナルモードがサスペンドされている間、幾つかの実施形態においては、プロセッサは、メモリ動作によってアクセスされるデータの投機的なものとしてのマーキングをサスペンドするように構成される。しかし、トランザクショナルモードがサスペンドされるよりも前に投機的なものとしてマークされたデータは、投機的マークを伴って保持される。従って、特定の実施形態においては、停止が生じると、サスペンションの間に生じたメモリ値への修正は後退させられないであろう一方で、トランザクショナルモードがサスペンドされるよりも前に又はサスペンドされたよりも後に生じた修正は後退させられることになる。
【0031】
幾つかの実施形態においては、制御転送検出ユニット112は、再開条件を決定するように更に構成されてよく、サスペンド条件を決定するために検出された制御転送に対応するリターン制御転送を検出することによるものがこれに含まれる。例えば、サスペンド条件を決定するために検出された制御転送がオペレーティングシステムに対するシステムコールであったとすると、リターン転送コールはシステムコールからのリターンであってよい。
【0032】
幾つかの状況においては、サスペンド条件を最初に生じさせる制御転送(ここでは「サスペンディング」転送と称される)は、サスペンディング制御転送からのリターンが実行されるよりも前に、1つ以上の後続の制御転送によって追従されてよい。この場合、多重リターン制御転送が実行され得るが、トランザクショナルモードは、サスペンディング制御転送に対応するリターン制御転送が実行されるまでに再開されることはないであろう。
【0033】
幾つかの実施形態においては、制御転送検出ユニット112は、トランザクショナルモードの実行を再開することをトランザクションサスペンションユニットに通知することによって、再開条件を検出することに応答するように構成されてよい。幾つかの実施形態においては、トランザクショナルモードを再開することは、サスペンドフラグ122をアンセットすること(unsetting)及び/又は上述したように停止フラグ124をチェックすることを含み得る。
【0034】
図示される実施形態に従うと、HTM110は、他のメカニズム及び/又はユニット、例えば衝突検出ユニット116、を含み得る。種々の実施形態において、衝突検出ユニット116は、種々の停止条件を検出するように構成されてよい。例えば、衝突検出ユニットは、MESI又はMOESI等のキャッシュコヒーレンシプロトコルの一部として他のプロセッサ150から受け取られるキャッシュコヒーレンシメッセージ(プローブ)をモニタリングするように構成されてよい。1つ以上のそのようなプローブがデータ衝突を示す場合には、衝突検出ユニット116は、停止条件が存在すること及びトランザクション試行が停止され得ることを決定する。
【0035】
上述したように、幾つかの実施形態においては、HTMは、サスペンドされたトランザクショナルモードで実行中のトランザクション試行を停止することを、トランザクショナル実行モードが再開されるまで遅らせるように構成されてよい。そのような実施形態においては、サスペンドされたトランザクショナルモードの間に停止条件を検出することに応答して、衝突検出ユニットは、トランザクションをすぐに停止させ且つ/又は後退させるよりもむしろ、停止フラグ124等の停止フラグをセットする(即ち予め定められた値を適切な記憶ロケーションに記憶させる)ように構成されてよい。トランザクショナルモードの実行が再開されると(例えばオペレーティングシステムカーネルから復帰すると)、HTMは、停止フラグ124がセットされていることを検出することができ、またトランザクション試行を停止することによって応答してよい。
【0036】
種々の他のハードウエアが他の停止条件を検出してよい。例えばオーバフロー検出ユニット118は、投機的バッファオーバフロー条件の形態にある停止条件を検出するように構成されてよい。バッファオーバフロー条件は、新たな投機的データをバッファリングするのに容量が十分でない投機的バッファ(例えばデータキャッシュ130内に実装されるもの)内にデータの所与の部分がバッファリングされることが、トランザクションを実行するために必要な場合に、検出され得る。ここで用いられる「投機的バッファオーバフロー」は、検出されている最中のオーバフロー条件を参照し、投機的データが実際にはバッファから退去させられている状況は参照しない。
【0037】
データ衝突と同様に、サスペンドされたトランザクショナルモードでプロセッサが実行中にオーバフロー検出ユニット118がオーバフロー条件を検出した場合には、停止フラグ124がセットされてよく、これにより、HTM110は、トランザクショナル実行モードが再開されるときにトランザクション試行を停止する/後退させることができる。
【0038】
図2は幾つかの実施形態に従いメモリトランザクションを実行しながらトランザクショナルモードの実行をサスペンドするための方法を示すフロー図である。方法200は、メモリトランザクションを利用するように構成されるコンピュータプログラムを実行する過程においてHTM(例えば図1のHTM110)によって実行されてよい。
【0039】
図示される実施形態に従うと、方法200は、210に示されるようにプロセッサがトランザクショナルモードでの実行を開始するときに始まる。幾つかの実施形態においては、このことは、トランザクショナル実行を開始するように設計された1つ以上の命令を実行しているソフトウエアプログラムに応答して行われてよい。210に示されるようにトランザクショナル実行モードを開始することは、例えばシステム100のレジスタ120内にあるような1つ以上のフラグをセットすることを含み得る。
【0040】
一旦プロセッサがトランザクショナルモードで実行中になると、220に示されるように、プロセッサは、投機的メモリアクセス動作によってアクセスされるデータを投機的なものとしてマークするように構成されてよい。幾つかの実施形態においては、トランザクショナルモードで実行される全てのメモリアクセス動作は投機的であると考えられてよく、従って各そのようなメモリアクセス動作によってアクセスされるデータは投機的であるとしてマークされてよい。他の実施形態においては、トランザクション内のメモリアクセス動作の一部が、投機的であるとして明示的に指定されてよい。幾つかのそのような実施形態においては、これらの明示的に投機的な命令の各々によってアクセスされるデータのみが、220に示されるように投機的であるとしてマークされてよい。
【0041】
種々の実施形態において、データを投機的であるとしてマークする処理は、HTMによって使用されている投機的バッファの種類に依存するであろう。例えば、投機的データをデータキャッシュ内にバッファリングするHTMに対しては、データを投機的であるとしてマークすることは、当該データのコピーをデータキャッシュ内に記憶することと、1つ以上の投機的ビットを用いて投機的データを含むキャッシュのキャッシュブロックをマークすることと、を含んでいてよい。投機的ビットをマークすることはまた、ロード/ストアキュー等の他の構造によって実装されるバッファ内で投機的データをマークするために用いられてもよい。
【0042】
図示される実施形態に従うと、トランザクショナル実行の間におけるどこかの時点で、230に示されるように、HTM(又はその何らかの要素、例えば制御転送検出ユニット112)が、制御転送を検出することによるのを含めサスペンド条件を決定する。幾つかの実施形態においては、サスペンド条件は、プログラム制御がまさにオペレーティングシステムカーネルへ転送されようとしていることを示すものであってよい。例えば幾つかの実施形態においては、サスペンド条件は、作成されているシステムコールと、何らかの所与のアプリケーションレベルに対応するプロセッサの現在の特権レベル(例えば幾つかの実施形態においてこの所与の特権レベルは3(ユーザ又はアプリケーションレベル)であってよい)と、に応答して検出され得る。別の例においては、サスペンド条件は、ハードウエア割り込みと、CPLがレベル3等のアプリケーションレベル特権を示していることと、を検出することに応答して検出され得る。従ってそのような実施形態においては、制御転送がトランザクショナル実行の間に検出されると、HTMはCPLをチェックして制御転送がアプリケーションからオペレーティングシステムカーネルへのものであるかどうかを決定してよい。そうである場合には、サスペンド条件が存在すると決定され得る。
【0043】
方法200においては、サスペンド条件を検出することに応答して、HTMは、240に示されるようにトランザクショナル実行をサスペンドしてよい。トランザクショナル実行をサスペンドすることは、サスペンドフラグ(例えば何らかの記憶ロケーション内に記憶される値を参照するサスペンドフラグ122)をセットすることを含んでいてよく、サスペンドフラグは、トランザクショナル実行モードがサスペンドされる旨の信号をHTMへ送ってよい。
【0044】
一旦トランザクショナル実行モードがサスペンドされると、プロセッサは、250に示されるように、アクセスされたデータを投機的であるとしてマークすることなしにメモリ動作を実行してよい。即ち、制御が一旦オペレーティングシステムへ転送されると、トランザクショナル実行モードはサスペンドされ、そしてオペレーティングシステムによって実行されるメモリ動作は、投機的であるとして取り扱われることはなく、それにより停止の場合に後退させられることはない。上述したように、幾つかの実施形態においては、停止条件が検出されたとしても、プロセッサはサスペンドされたモードにある間はトランザクション試行を停止しなくてよい。そのような実施形態においては、プロセッサは、停止フラグ(何らかの記憶ロケーションに記憶された値)をセットすること、及び一旦トランザクショナル実行モードが再開されたならばトランザクションを停止すること(後退させることを含む)、によって停止条件を検出することに応答してよい。
【0045】
図3はトランザクションの間にトランザクショナルモードの実行をサスペンドすることによるものを含めHTMを用いたアトミックトランザクションを実行するための方法を示すフロー図である。方法は、305に示されるように、トランザクショナル実行モードを開始することによって始まる。前述と同様に、プロセッサはトランザクション開始命令を実行することに応答してこのステップを行ってよい。
【0046】
方法300において、HTMがサスペンド条件を検出した場合(310からの肯定の出口によって示される)には、HTMは、例えば315に示されるようにサスペンドフラグをセットすることによって、トランザクショナルモードをサスペンドしてよい。310においてサスペンド条件を検出することは、図2の230においてサスペンド条件を検出することに類似していてよく、またアクティブな(サスペンドされていない)トランザクショナルモードの間におけるオペレーティングシステムへの制御転送を検出することを含んでいてよい。オペレーティングシステムへの制御転送を検出することに応答して、HTMはまた、適切なリターン制御転送が後で識別され得るように、用いられる制御転送の種類を記録してもよい。サスペンド条件が検出されない場合には、310からの否定の出口で示されるように、トランザクションはサスペンドされない。
【0047】
方法300に従うと、プロセッサは次いで320に示されるように次のメモリアクセス命令を実行する。トランザクショナルモードの実行がサスペンドされていない場合(325からの否定の出口によって示される)には、HTMは、330に示されるように、メモリ動作によってアクセスされる任意の投機的データを投機的であるとしてマークする。例えば、動作が読み出し動作である場合には、HTMは、値が読み出されたメモリロケーションがトランザクションの読み出しセットの一部であることを記録してよい。従って、投機的メモリロケーションに記憶された値を別のプロセッサが修正したことを示す無効化プローブが受信されると、プロセッサは停止条件を検出する。
【0048】
上述したように、幾つかの実施形態においてはアクティブトランザクションにおける全てのメモリ動作が投機的であると考えられてよいが、他の実施形態においては、幾つかのデータ及び/又はメモリ動作は投機的であるとして明示的に識別されてよい一方で他は投機的であるとして明示的に識別されなくてよい。そのような実施形態においては、非投機的データにのみアクセスするメモリ動作は、いかなるデータをも投機的であるとしてマークすることはないであろう。例えば1つのそのような実施形態においては、方法300は、325からの否定的な出口が、既に投機的であるとして明示的にマークされたメモリ動作によってアクセスされるメモリ動作及び/又はデータを更に条件とするように増強されてよい。
【0049】
投機的データバッファを実装するためにキャッシュが用いられる実施形態においては、読み出しデータに対応するキャッシュブロックは、それがトランザクショナル実行モードで読み出されたことを示す「投機的フラグ」を用いてマークされてよい。幾つかの実施形態においては、各キャッシュブロックは、「読み出し投機的フラグ」及び「書き込み投機的フラグ」を備えていてよく、あるいはこれらに関連付けられていてよく、これらはメモリ区域(もしあれば)上で実行された投機的メモリアクセス動作の種類を示す。種々の実施形態において、これらのフラグは組み合わされてよく又は別々であってよく、またデータキャッシュ、ロード/ストアキュー、及び/又は他のものによって実装されるような種々の投機的バッファにおいて用いられてよい。
【0050】
図示される実施形態に従うと、トランザクションがサスペンドされた場合(325からの肯定的な出口によって示される)、投機的データのマーキング(330におけるような)はHTMによって行われない。その代わりにHTMは、335にあるように、再開条件が存在するかどうかを決定してよい。幾つかの実施形態においては、再開条件は、オペレーティングシステムからアプリケーションへのリターン制御転送を検出することに応答して検出され得る。幾つかの実施形態においては、そのようなリターン制御転送を検出することは、実行中の(又はまさに実行されようとしている)制御転送が、オペレーティングシステムへの元の(サスペンディング)制御転送に対応するリターンであることを決定することを含んでいてよい。加えて、再開条件を検出することは、プロセッサがレベル0等の特権モード(例えばカーネルレベル)で実行中であることを示すCPLに更に依存していてよい。
【0051】
方法300において、335からの肯定の出口によって示されるように再開条件が検出されると、340に示されるようにトランザクショナルモードの実行が再開されてよい。トランザクショナルモードの実行を再開することは、サスペンドフラグをアンセットすることにより、投機的データのマーキングが必要に応じて再開すべきであることをHTMに示すことを含んでいてよい。図4を参照して後で論じられるように、トランザクショナルモードを再開することはまた、サスペンションの間に停止条件が検出されたかどうかを決定すること(例えば停止フラグをチェックすることによって)を含み得る。
【0052】
図3に図示される実施形態において、トランザクションが更なる命令を含む場合(345からの肯定の出口によって示される)には、プロセッサは方法300を繰り返してよい(345から310までのフィードバックループによって示されるように)。そうでない場合には、345からの否定の出口によって示されるように、トランザクションは350に示されるようにコミットされて(committed)よい。種々の実施形態において、トランザクションをコミットすることは種々のステップを含み得る。例えば、トランザクションをコミットすることの一部として、マークされた投機的データが非投機的であるとしてマークされてよい。幾つかの実施形態においては、トランザクションをコミットすることは、投機的に書き込まれたデータを共有メモリへ書き込むことを含んでいてよく、あるいは投機的に書き込まれたデータをシステム内の他のプロセッサと共有することを含んでいてよい。尚、方法300は、310でサスペンド条件を検出することと335で再開条件を検出することとの間に少なくとも1つのメモリアクセスを実行することを含むが、当業者であればこれが必ずしもサスペンドされたトランザクションの全ての場合ではないことを理解するであろう。
【0053】
図4は幾つかの実施形態に従いサスペンドされたトランザクショナルモードの間に検出される停止条件を処理するための方法を示すフロー図である。前述したのと同様に、方法は、405に示されるようにトランザクショナル実行モードを開始することと、410に示されるようにサスペンド条件を検出することに応答してトランザクショナル実行モードをサスペンドすることと、によって開始する。一旦トランザクショナル実行モードがサスペンドされると、プロセッサは、オペレーティングシステムコードを非トランザクショナルモードで(即ちアクセスされたデータを投機的であるとしてマークすることなしに)実行することを開始してよい。
【0054】
方法400に従うと、HTMは、415に示されるように、トランザクション試行が失敗したことを示す停止条件を検出してよい。種々の実施形態において、種々の状況が停止条件を引き起こすであろうし、これには、上述したように、別のプロセッサとのデータ衝突、又は投機的バッファオーバフロー条件が検出されること、が含まれる。例えばデータ衝突は、当該プロセッサによって投機的であるとしてマークされたメモリ区域に別のプロセッサがアクセスし且つそのメモリ区域に記憶されたデータをいずれかのプロセッサが修正した場合に生じ得る。停止条件の別の例は、トランザクションの間にアクセスされる全ての投機的データをバッファリングするのに十分な容量を投機的データバッファ(例えばデータキャッシュ)が有していない場合等の投機的バッファオーバフロー条件が検出されることに応答して検出されてよい。過剰な投機的データ及び/又は非投機的データが同時にバッファリングされることに起因して、バッファが十分な容量を有することができない場合がある。
【0055】
従来のシステムにおいては、HTMは、停止条件を検出した場合、即座にトランザクションを停止するはずである。しかし、これにより、オペレーティングシステムソフトウエアの種々の構造が矛盾した状態のままになり得る。対照的に、種々の実施形態におけるHTMは、サスペンドされたトランザクションを、それが再開するまでは停止することを遅らせることができる。例えば図4の方法400においては、415で停止条件を検出することに応答して、HTMは420に示されるように停止フラグをセットし、そして425に示されるようにサスペンドされたトランザクショナルモードで実行を継続する。
【0056】
実行はサスペンドされたトランザクショナルモードでオペレーティングシステムにおいて継続するが、種々の追加的な制御転送が行われてよい。後の時点で、HTMは、サスペンディング制御転送に整合するリターン制御転送を検出すること及び制御をアプリケーションコードへリターンすることに応答して、再開条件を検出してよい(430に示されるように)。
【0057】
図示される実施形態に従うと、アプリケーションコードへリターンし且つトランザクショナル実行を再開した後に、HTMは停止フラグがセットされているかどうかを435で決定してよい。停止フラグがセットされていない場合には、サスペンドされた実行モードの間にトランザクションは失敗しなかったことになり、従ってHTMは、サスペンドされたフラグをクリアしてよく、またトランザクショナルモードで実行を継続してよい。一方、方法400において420で停止フラグがセットされた場合には、HTMは停止フラグがセットされていると435で決定することになり、これに応答して440でトランザクションを停止することになる。
【0058】
上述したように、440でトランザクションを停止することは、投機的データを無効であるとしてマークすることを含んでいてよい。このことは、ここでは投機的データを「ドロップすること(dropping)」と称されることがある。投機的データが一旦ドロップされると、その投機的データは他のプロセッサによるアクセスのための共有メモリには記憶されない。例えば、投機的バッファ内の投機的データが無効であるとしてマークされると、プロセッサは、その後の命令実行に対してこのデータに頼らず、またこれを共有メモリへ転送しない。更に、無効化されたデータをシステム内の他のプロセッサと連携させるようなその後のトランザクショナル停止又はキャッシュコヒーレンシアクションは必要ない。
【0059】
図5は幾つかの実施形態に従い自動サスペンド/再開能力を伴うHTMを実装するための特定の方法を示している。方法502は、500に示されるようにトランザクショナル実行モードを開始することによって始まる。実行の間、HTMは、505に示されるようにオペレーティングシステムカーネルへの制御転送を検出する。プロセッサが510からの肯定的な出口によって示されるようにサスペンドされたトランザクショナルモードで実行中の場合、トランザクショナル実行モードをサスペンドすることに関して追加的なアクションがとられる必要はない。一方、プロセッサが現在サスペンドされた状態にあるモードの実行中でない場合、HTMは515に示されるように現在の特権レベルをチェックしてよい。特権レベルが515からの否定的な出口によって示されるように上げられている場合(例えばカーネルレベル0又は幾つかの実施形態においては非アプリケーションレベル)には、トランザクショナルモードの実行をサスペンドすることに関して更なるアクションがとられる必要はない。
【0060】
図示される実施形態に従うと、プロセッサがサスペンドされたトランザクショナルモードになく(510からの否定的な出口)且つ現在の特権レベル(CPL)が515からの肯定的な出口によって示されるようにより低い特権レベル(例えばアプリケーションレベル3)である場合には、HTMは、制御転送イベントの表示を記録してよく(520に示される)、またトランザクショナル実行モードをサスペンドしてよい(525に示される)。
【0061】
方法502においては、525でトランザクショナル実行モードがサスペンドされた後に、HTMは530で別の制御転送を検出してよい。530で検出されたこの後続の制御転送が505のサスペンディング制御転送に対応するリターン制御転送である場合(535からの肯定の出口で示される)には、プロセッサは実行をアプリケーションモードにリターンしてよく、またHTMは540に示されるようにトランザクショナル実行モードを再開(即ちアンサスペンド)してよい。一方、制御転送が505のサスペンディング制御転送に対応するリターン制御転送でない場合には、HTMは、535から530のフィードバックループによって示されるように、対応するリターン制御転送が発見されるまでトランザクショナル実行モードを継続してよい。場合によっては、最終的にコミットされるまで所与のトランザクションは多重回数サスペンドし及び/又は再開してよい(例えば540から505の随意的なフィードバックループによって示されるように)。
【0062】
種々の実施形態において、任意の数の制御転送がサスペンディング転送とその対応するリターン制御転送の間に実行されてよい。しかし、幾つかの実施形態においては、サスペンディング転送に対応するリターン制御転送が検出されるとき(535からの肯定的な出口)だけがHTM再開トランザクショナルモードであってよい。
【0063】
図6は幾つかの実施形態に従いサスペンションが実行され得る種々の制御転送をリストアップした表である。リストアップされた制御転送の種類は、遠い制御転送(far control transfers)、システムコール、及び例外/割り込みを含む。各々に対して転送の種類はそれぞれリストアップされたサスペンションイベントによって検出されてよく、また転送からのリターンはそれぞれリストされた再開イベントによって検出されてよい。例えば、オペレーティングシステムへのシステムコールは、SYSENTER命令を検出することによって検出されてよく、またマッチングリターン制御転送はSYSEXIT命令によって示されることになる。
【0064】
図7は幾つかの実施形態に従いここに説明される自動サスペンド/再開機能を伴うハードウエアトランザクショナルメモリシステムを実装するように構成されるコンピュータシステムを示している。コンピュータシステム700は種々のデバイスの任意のものであってよく、限定はされないが例えば、パーソナルコンピュータシステム、デスクトップコンピュータシステム、ラップトップ若しくはノートブック型のコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、コンシューマデバイス、アプリケーションサーバ、記憶デバイス、周辺機器デバイス(スイッチ、モデム、ルータ等)、又は一般的に任意の種類のコンピューティングデバイスが含まれる。
【0065】
コンピュータシステム700は1つ以上のプロセッサ750を含んでいてよく、1つ以上のプロセッサ750の各々は多重コアを含んでいてよく、多重コアの任意のものは単一スレッド又は多重スレッドにされていてよい。図1に関しても説明されるように、各プロセッサは、種々のフラグ及びオペランドを記憶するために用いられ得るレジスタ752を備えていてよい。プロセッサ750は、アクセスされたデータをキャッシュし且つ/又は投機的データバッファを実装するように構成されるデータキャッシュ754を更に備えていてよい。例えばデータキャッシュ754は、各キャッシュブロックに関連付けられ且つデータを投機的に読み出すこと及び/又は書き込むことのために使用可能な1つ以上のビットを含み得る。プロセッサ750は、制御転送を検出することによるものを含めサスペンド/再開条件を検出するための制御転送検出ユニット756を更に含み得る。図7に従うと、プロセッサ750はまた、ここに説明されるようにトランザクショナル実行モードをサスペンド/再開するためのトランザクションサスペンションユニット758を含み得る。
【0066】
図示される実施形態においては、コンピュータシステム700はまた、オフチップL2又はL3キャッシュ等の1つ以上のオフチップキャッシュ760を含み得る。幾つかの実施形態においては、L2及び/又はL3キャッシュはオンチップで実装されてよい。コンピュータシステム700はまた、永続的記憶デバイス770(例えば光学的記憶装置、磁気的記憶装置、ハードドライブ、テープドライブ、ソリッドステートメモリ等)を含んでいてよく、永続的記憶デバイス770は、772で示されるようなファイルシステムによって組織化されるデータを記憶してよい。コンピュータシステム700はまた、任意の数のネットワークを介してデータを送信し且つ受信するための780で示されるような1つ以上のネットワークインタフェースを含んでいてよい。コンピュータシステム700はまた、1つ以上のメモリ710(例えば1つ以上のキャッシュ、SRAM、DRAM、RDRAM、EDO_RAM、DDR_7_RAM、SDRAM、ラムバスRAM、EEPROM等)を含んでいてよい。種々の実施形態は、より少ない要素又は図7には図示されない付加的な要素(例えばビデオカード、オーディオカード、追加的なネットワークインタフェース、周辺デバイス、ネットワークインタフェース(ATMインタフェース、イーサネット(登録商標)インタフェース、フレームリレーインタフェース等))を含んでいてよい。
【0067】
1つ以上のプロセッサ750、単一又は複数の記憶装置740、オフチップキャッシュ760、永続的記憶デバイス770、ネットワークインタフェース780、及びシステムメモリ710は、システム相互接続740を介して結合されてよい。システムメモリ710の1つ以上は、プログラム命令720並びに種々のデータ構造及び変数730を含んでいてよい。プログラム命令720は、プラットフォームネイティブバイナリの任意のインタープリタ型言語、例えばJava(登録商標)バイトコード、若しくは任意の他の言語、例えばC/C++、フォートラン等、又はそれらの任意の組み合わせにおいてエンコードされてよい。
【0068】
プログラム命令720は、単一及び/又は多重スレッドの1つ以上のプログラム722を実装するように実行可能なプログラム命令を含んでいてよく、単一及び/又は多重スレッドの1つ以上のプログラム722は、ここに説明されるように命令の開始及びコミットを実行することによるようなアトミックメモリトランザクションを利用してよい。
【0069】
図示される実施形態に従うと、メモリ710は、Windows(登録商標)及び/又はLinux(登録商標)等のオペレーティングシステム724を実装するように実行可能なプログラム命令を備えていてよい。幾つかの実施形態においては、オペレーティングシステム724は、上げられた特権レベルで種々の機能を実行するように構成されるカーネルを含んでいてよい。例えばオペレーティングシステム724は、アプリケーション722が起動し得るシステムコールを定義するアプリケーションプログラミングインタフェース(API)を露出してよい。そのようなシステムコールを起動することに応答して、プロセッサ750は、アプリケーション722によって実行中のアクティブトランザクションを、ここに説明されるようにアプリケーション722及びオペレーティングシステム724に対して実質的に透過的な方法でサスペンドしてよい。
【0070】
アプリケーション722等のソフトウエアプログラムは、コンピュータプログラム製品又はソフトウエアとして提供されてよく、これらは命令が記憶されたコンピュータ可読記憶媒体を含んでいてよく、命令は種々の実施形態に従う処理を行うようにコンピュータシステム(又は他の電子デバイス)をプログラムするために用いられてよい。コンピュータ可読記憶媒体は、機械(例えばコンピュータ)によって可読な形態(例えばソフトウエア、処理アプリケーション)で情報を記憶するための任意のメカニズムを含み得る。機械可読記憶媒体(持続的機械可読記憶媒体)は、限定はされないが、磁気記憶媒体(例えばフロッピー(登録商標)ディスク);リードオンリメモリ(ROM);ランダムアクセスメモリ(RAM);消去可能プログラム可能メモリ(例えばEPROM及びEEPROM);フラッシュメモリ;プログラム命令を記憶するのに適する電気的な又は他の種類の媒体を含み得る。加えて、プログラム命令は、光学的な、音響的な、又は他の形態の伝搬信号(例えば搬送波、赤外線信号、デジタル信号等)を用いて通信されてよい。
【0071】
上述したコンピュータ可読記憶媒体は、プログラムによって読み出される命令を記憶するための1つの実施形態において用いられてよく、またシステムプロセッサ750を備えるハードウエアを製造するために直接的に又は間接的に用いられてよい。例えば命令は、ベリログ(Verilog)又はVHDL等の高レベル設計言語(HDL)におけるハードウエア機能の行動レベル又はレジスタ転送レベル(RTL)の記述を記述する1つ以上のデータ構造を記述してよい。記述は合成ツールによって読み出されてよく、合成ツールは記述を合成してネットリスト(netlist)を作成することができる。ネットリストは一連のゲート(例えば合成ライブラリにおいて定義される)を備えていてよく、一連のゲートはプロセッサ750の機能を表す。ネットリストは次いで、マスクに適用されるべき幾何学的形状を記述するデータセットを作成するために配置されると共に経路付けられてよい。マスクは次いで、プロセッサ750に対応する単一又は複数の半導体回路を製造するために種々の半導体製造ステップにおいて使用されてよい。代替的には、キャリア媒体300上のデータベースが必要に応じてネットリスト(合成ライブラリを伴う又は伴わない)又はデータセットであってよい。
【0072】
本開示の範囲は、ここで取り上げられている問題の一部又は全部を軽減するしないにかかわらず、ここに開示される(明示的に又は暗黙的に)任意の特徴又は特徴の組み合わせ、あるいはその任意の一般化を含む。従って、本出願(又はそれに対して優先権を主張する出願)の手続きの間に任意のそのような特徴の組み合わせに関して新たな特許請求の範囲が編成されることがある。特に、添付の特許請求の範囲を参照して、従属請求項からの特徴が独立請求項の特徴と組み合わされることがあり、またそれぞれの独立請求項からの特徴は、添付の特許請求の範囲に列挙される特定の組み合わせにおけるだけでなく任意の適切な方法において組み合わされることがある。
【0073】
上記実施形態はかなり詳細に説明されてきたが、上記開示が一旦完全に理解されたならば、種々の変形及び修正が当業者にとって明らかなはずである。以下の特許請求の範囲は、全てのそのような変形及び修正を包含することが意図されている。

【特許請求の範囲】
【請求項1】
コンピュータプロセッサを備える装置であって、
前記コンピュータプロセッサは、複数の投機的メモリアクセス動作をトランザクショナルモードで単一のアトミックトランザクションとして実行するように構成され、前記単一のアトミックトランザクションは、前記投機的メモリアクセス動作によってアクセスされるデータを投機的データであるとしてマークすることを含み、前記プロセッサは、
暗黙サスペンド条件を決定するように構成される検出ユニットと、
サスペンド条件の表示を受信することに応答して前記トランザクショナルモードの実行をサスペンドするように構成されるトランザクションサスペンションユニットと、を備え、
前記トランザクショナルモードのサスペンションに応答して前記プロセッサは投機的データをマークすることをサスペンドするように構成される装置。
【請求項2】
前記検出ユニットは、前記プロセッサによって実行中のスレッドにおける制御転送を検出することと、前記プロセッサがトランザクショナルモードで実行中であることを検出することと、前記プロセッサが所与の特権レベルで実行中であることを検出することと、によって前記暗黙サスペンド条件を決定するように構成される請求項1の装置。
【請求項3】
当該検出された制御転送はオペレーティングシステムへの転送である請求項2の装置。
【請求項4】
前記プロセッサは当該トランザクションがサスペンドされている間に前記アトミックトランザクションが失敗したことを検出するように構成され、前記プロセッサは前記投機的データを廃棄することによるのを含めて当該失敗したトランザクションを停止するように構成される請求項2の装置。
【請求項5】
前記プロセッサは前記トランザクションに対する前記トランザクショナルモードの実行のための再開条件を検出した後にのみ前記失敗したトランザクションを停止するように構成される請求項4の装置。
【請求項6】
前記トランザクショナルモードのサスペンションは前記プロセッサがサスペンドフラグをセットすることを含み、前記プロセッサは前記トランザクションが失敗したことを検出することに応答して停止フラグをセットするように更に構成される請求項5の装置。
【請求項7】
前記プロセッサは前記サスペンドフラグ及び前記停止フラグを実行コンテクストの一部として保存するように構成され、当該保存された実行コンテクストは前記プロセッサによって行われるコンテクストスイッチに際して前記プロセッサの状態をリストアするために使用可能である請求項6の装置。
【請求項8】
前記検出ユニットは前記制御転送からのリターンに対応するリターン制御転送を検出することによるのを含めて再開条件を決定するように構成され、前記プロセッサは前記再開条件を決定した後にデータを投機的であるとしてマークすることを再開するように構成される請求項2の装置。
【請求項9】
前記トランザクションサスペンションユニットは前記トランザクショナルモードがサスペンドされていた間に当該トランザクションが失敗したことを検出することに応答して前記トランザクションを停止することによって前記再開条件の決定に応答するように構成され、前記停止することは前記投機的データを廃棄することを含む請求項8の装置。
【請求項10】
前記トランザクションが再開される場合に前記プロセッサは前記トランザクションのサスペンションの前及び後の両方にマークされた投機的データを非投機的であるとしてマークすることによるのを含めて前記トランザクションをコミットするように構成される請求項9の装置。
【請求項11】
トランザクショナルメモリシステム内のコンピュータプロセッサが複数の投機的メモリアクセス動作をトランザクショナルモードで単一のアトミックトランザクションとして実行することを備える方法であって、
前記実行することは、
前記投機的メモリアクセス動作によってアクセスされるデータを投機的データであるとしてマークすることと、
暗黙サスペンド条件が存在することを決定することと、
前記暗黙サスペンド条件が存在することを決定することに応答して前記トランザクショナルモードの実行をサスペンドすると共に投機的データのマーキングをサスペンドすることと、を備える方法。
【請求項12】
前記暗黙サスペンド条件を決定することは、前記プロセッサによって実行中のスレッドにおける制御転送を検出することと、前記プロセッサがトランザクショナルモードで実行中であることを検出することと、前記プロセッサが所与の特権レベルで実行中であることを検出することと、を含む請求項11の方法。
【請求項13】
前記トランザクショナルモードの実行がサスペンドされている間に前記制御転送からのリターンに対応するリターン制御転送を検出することによるのを含めて再開条件を決定することと、
前記再開条件を検出することに応答して投機的データのマーキングを再開することと、を更に備える請求項12の方法。
【請求項14】
当該トランザクションのサスペンションの前及び後の両方にマークされた投機的データを非投機的であるとしてマークすることによるのを含めて前記トランザクションをコミットすることを更に備える請求項13の方法。
【請求項15】
前記再開条件を検出した後に、前記トランザクショナルモードがサスペンドされていた間に当該トランザクションが失敗したことを検出することに応答して当該トランザクション試行を停止することを更に備え、前記停止することは投機的データであるとしてマークされたデータを廃棄することを含む請求項13の方法。
【請求項16】
前記トランザクショナルモードの実行がサスペンドされている間に、当該トランザクション試行が失敗したことを決定することと、それに応答して停止フラグをセットすると共に当該トランザクションを当該サスペンドされたモードで実行するのを継続することと、を更に備える請求項11の方法。
【請求項17】
プロセッサと、前記プロセッサ上の少なくとも1つを含む複数の処理コアによって共有されるメモリと、を備えるシステムであって、
前記プロセッサは複数の投機的メモリアクセス動作をトランザクショナルモードで単一のアトミックトランザクションとして実行するように構成され、この実行は、
前記投機的メモリアクセス動作によってアクセスされるデータを投機的データであるとしてマークすることと、
暗黙サスペンド条件が存在することを決定することと、
前記暗黙サスペンド条件が存在することを決定することに応答して前記トランザクショナルモードの実行をサスペンドすると共に投機的データのマーキングをサスペンドすることと、によるものを含むシステム。
【請求項18】
前記暗黙サスペンド条件を決定することは、前記プロセッサによって実行中のスレッドにおける制御転送を検出することと、前記プロセッサがトランザクショナルモードで実行中であることを検出することと、前記プロセッサが所与の特権レベルで実行中であることを検出することと、にも部分的に基づく請求項17のシステム。
【請求項19】
前記プロセッサは前記トランザクショナルモードの実行がサスペンドされている間に前記制御転送からのリターンに対応するリターン制御転送を検出することによるのを含めて再開条件を決定するように更に構成され、
前記プロセッサは、少なくとも、投機的メモリアクセス動作によってアクセスされるデータを投機的データであるとしてマーキングすることを再開することにより、前記再開条件を検出することに応答するように構成される請求項18のシステム。
【請求項20】
前記プロセッサは当該トランザクションのサスペンションの前及び後の両方にマークされた投機的データを非投機的であるとしてマークすることによるのを含めて前記トランザクションをコミットするように更に構成される請求項19のシステム。
【請求項21】
コンピュータシステム上で実行可能なプログラムによって動作させられるデータ構造を備えるコンピュータ可読記憶媒体であって、前記プログラムは前記データ構造上で動作して前記データ構造によって記述される回路を含む集積回路を製造するための処理の一部を行い、前記データ構造において記述される前記回路は、
複数の投機的メモリアクセス動作をトランザクショナルモードで単一のアトミックトランザクションとして実行するように構成されるコンピュータプロセッサを含み、前記単一のアトミックトランザクションは、前記投機的メモリアクセス動作によってアクセスされるデータを投機的データであるとしてマークすることを含み、前記プロセッサは、
暗黙サスペンド条件を決定するように構成される検出ユニットと、
サスペンド条件の表示を受信することに応答して前記トランザクショナルモードの実行をサスペンドするように構成されるトランザクションサスペンションユニットと、を備え、前記トランザクショナルモードのサスペンションに応答して前記プロセッサは投機的データをマークすることをサスペンドするように構成されるコンピュータ可読記憶媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公表番号】特表2013−520753(P2013−520753A)
【公表日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願番号】特願2012−555083(P2012−555083)
【出願日】平成23年2月22日(2011.2.22)
【国際出願番号】PCT/US2011/025778
【国際公開番号】WO2011/106333
【国際公開日】平成23年9月1日(2011.9.1)
【出願人】(591016172)アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド (439)
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
【Fターム(参考)】