(57)【要約】  有限トランザクションメモリシステムを提供する方法及び装置が記載される。一実施例では、ソフトウェアトランザクションメモリ（ＳＴＭ）アクセスに対応する処理は、先行するハードウェアトランザクションメモリ（ＨＴＭ）アクセス処理が失敗する場合に実行される。
2009521767.tif 000002
【特許請求の範囲】
【請求項１】
スレッドに対応するソフトウェアトランザクションメモリアクセスを、前記スレッドに対応する先行するハードウェアトランザクションメモリアクセスが実行された後に実行させるロジックを有するプロセッサ。
【請求項２】
前記ロジックは、前記ソフトウェアトランザクションメモリアクセスと前記ハードウェアトランザクションメモリアクセスの少なくとも１つを投機的に実行させる、請求項１記載のプロセッサ。
【請求項３】
当該プロセッサは、異なる命令とのコンフリクトが発生すると、前記ハードウェアトランザクションメモリアクセスを中断する、請求項１記載のプロセッサ。
【請求項４】
前記異なる命令は、前記ソフトウェアトランザクションメモリアクセスに対応する命令である、請求項３記載のプロセッサ。
【請求項５】
前記異なる命令を実行する少なくとも１つのプロセッサコアをさらに有する、請求項３記載のプロセッサ。
【請求項６】
前記ハードウェアトランザクションメモリアクセスに対応する第１命令と、前記ソフトウェアトランザクションメモリアクセスに対応する第２命令との少なくとも１つに対応する情報を格納するメモリをさらに有し、
当該プロセッサは、前記第１及び第２命令の少なくとも１つがコミットすると、前記格納されている情報を更新する、請求項１記載のプロセッサ。
【請求項７】
データを格納するメモリをさらに有し、
前記ハードウェアトランザクションメモリアクセスと前記ソフトウェアトランザクションメモリアクセスとは、前記メモリに格納されているデータに対して同一の処理を実行する、請求項１記載のプロセッサ。
【請求項８】
前記ハードウェアトランザクションメモリアクセスと前記ソフトウェアトランザクションメモリアクセスとの少なくとも１つに対応する情報を格納するメモリをさらに有し、
前記格納されている情報は、バーチャルアドレス、物理アドレス、オーナーシップフラグ及びスペキュレーションフラグの１以上を有する、請求項１記載のプロセッサ。
【請求項９】
前記メモリは、コンテンツアドレッサブルメモリから構成される、請求項８記載のプロセッサ。
【請求項１０】
前記メモリは、データ変換ルックアサイドバッファから構成される、請求項８記載のプロセッサ。
【請求項１１】
ページテーブルを格納するメモリをさらに有し、
前記ページテーブルは、バーチャルアドレスタグ、物理アドレスタグ及び物理アドレスデータの１以上を有するデータを格納する、請求項１記載のプロセッサ。
【請求項１２】
前記ページテーブルの最後のエントリを指定するページテーブルリミットポインタを格納するレジスタをさらに有する、請求項１１記載のプロセッサ。
【請求項１３】
前記ソフトウェアトランザクションメモリアクセスに対応するディスクリプタを格納するレジスタをさらに有する、請求項１記載のプロセッサ。
【請求項１４】
複数のコアをさらに有する、請求項１記載のプロセッサ。
【請求項１５】
前記ハードウェアトランザクションメモリアクセスは、ハードウェアオーバフローにより実行が失敗する、請求項１記載のプロセッサ。
【請求項１６】
ハードウェアトランザクションメモリアクセスに対応するスレッドの第１命令を実行するステップと、
前記第１命令のコミットが失敗すると、ソフトウェアトランザクションメモリアクセスに対応する前記スレッドの第２命令を実行するステップと、
を有する方法。
【請求項１７】
前記第１命令と前記第２命令との少なくとも１つを投機的に実行するステップをさらに有する、請求項１６記載の方法。
【請求項１８】
前記第１命令と前記第２命令とは、メモリに格納されているデータに対して同一の処理を実行する、請求項１６記載の方法。
【請求項１９】
異なる命令とのコンフリクトが発生すると、前記第１命令を中断するステップをさらに有する、請求項１６記載の方法。
【請求項２０】
前記第２命令に対応するオーナーシップ情報をデータ変換ルックアサイドバッファに格納するステップをさらに有する、請求項１６記載の方法。
【請求項２１】
前記第１命令は、ハードウェアオーバフローによりコミットに失敗する、請求項１６記載の方法。
【請求項２２】
ハードウェアトランザクションメモリアクセスに対応する第１命令と、ソフトウェアトランザクションメモリアクセスに対応する第２命令とを格納するメモリと、
前記ハードウェアトランザクションメモリアクセスの実行がキャッシュメモリ内にオーバフロー状態を生じさせる場合、前記第２命令をフェッチするプロセッサと、
を有するシステム。
【請求項２３】
前記メモリは、バーチャルアドレスと物理アドレスとの間のマッピングに対応する情報を格納するページテーブルを有する、請求項２２記載のシステム。
【請求項２４】
前記ページテーブルは、バーチャルアドレスタグ、物理アドレスタグ及び物理アドレスデータの１以上を有するデータを格納する、請求項２３記載のシステム。
【請求項２５】
前記ページテーブルの一部を格納するコンテンツアドレッサブルメモリをさらに有する、請求項２３記載のシステム。
【請求項２６】
オーディオ装置をさらに有する、請求項２２記載のシステム。
【請求項２７】
プロセッサ上で実行されると、
ハードウェアトランザクションメモリアクセスに対応するスレッドの第１命令を実行するステップと、
前記第１命令のコミットが失敗すると、ソフトウェアトランザクションメモリアクセスに対応する前記スレッドの第２命令を実行するステップと、
を前記プロセッサに実行させる１以上の命令を有するコンピュータ可読媒体。
【請求項２８】
前記プロセッサに前記第１命令と前記第２命令との少なくとも１つを投機的に実行させる１以上の命令をさらに有する、請求項２７記載のコンピュータ可読媒体。
【請求項２９】
前記プロセッサに、オーナーシップ情報が有効なオーナーシップフラグを有する場合、前記第１命令を中断させる１以上の命令をさらに有する、請求項２７記載のコンピュータ可読媒体。
【請求項３０】
前記プロセッサに、前記第１命令がハードウェアオーバフローによりコミットに失敗した場合、前記第２命令をフェッチさせる１以上の命令をさらに有する、請求項２７記載のコンピュータ可読媒体。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［背景］
本開示は、一般に電子分野に関する。より詳細には、本発明の実施例は、有限トランザクションメモリシステム（ｕｎｂｏｕｎｄｅｄ  ｔｒａｎｓａｃｔｉｏｎａｌ  ｍｅｍｏｒｙ  ｓｙｓｔｅｍ）に関する。
【０００２】
パフォーマンスを向上させるため、一部のコンピュータシステムは複数のスレッドを同時に実行するかもしれない。一般に、スレッドが共有リソースにアクセスする前、それは共有リソースのロックを取得するかもしれない。共有リソースがメモリに格納されているデータ構造である状況では、同じリソースにアクセスしようとするすべてのスレッドが、ロック機構により提供される相互排他性の観点から、各自の処理の実行順序を決めるかもしれない。これは、システムパフォーマンスに悪影響を及ぼす可能性があり、デッドロックバグなどによるプログラムの失敗を生じさせるかもしれない。
【０００３】
ロック機構の利用から生じるパフォーマンスヒットを低減するため、一部のコンピュータシステムはトランザクションメモリを利用するかもしれない。トランザクションメモリは、一般に複数のスレッドが共有リソース（メモリに格納されているデータ構造など）に同時にアクセスすることを、例えば、当該アクセスが共有リソースの異なる部分に関するものであるなど、アクセスがコンフリクトしない限り、ロックを取得することなく許可する同期モデルを表す。
【０００４】
トランザクションメモリは、テーブルルックアップ機構により実現可能である。特に、共有リソースにアクセスするため、スレッドはまず、他のスレッドが共有リソースの同じ部分にアクセスしているか判断するため、メモリに格納されているテーブルをチェックするかもしれない。メモリに格納されているテーブルへのアクセスは、パフォーマンスを低下させるオーバヘッドを生じさせるかもしれない。
【０００５】
［詳細な説明］
以下の説明では、各種実施例の完全な理解を提供するため、多数の具体的な詳細が提供される。しかしながら、いくつかの実施例は、具体的な詳細なしに実現可能である。他の例では、実施例を不明りょうにしないように、周知の方法、手順、コンポーネント及び回路は詳細には説明されていない。
【０００６】
ここに記載される実施例の一部は、図１〜７の計算システムを参照して説明される実施例など、ハードウェアトランザクションメモリ（ＨＴＭ）とソフトウェアトランザクションメモリ（ＳＴＭ）技術の組み合わせを利用した有限トランザクションメモリシステムのための効率的な機構を提供するかもしれない。より詳細には、図１は、本発明の実施例による計算システム１００のブロック図を示す。システム１００は、１以上のプロセッサ１０２−１〜１０２−Ｎ（ここでは“プロセッサ１０２”又はより一般に“プロセッサ１０２”と呼ばれる）を有する。プロセッサ１０２は、相互接続又はバス１０４を介し通信する。各プロセッサは、簡単化のためプロセッサ１０２−１のみを参照して説明される各種コンポーネントを有する。このため、残りの各プロセッサ１０２−２〜１０２−Ｎは、プロセッサ１０２−１を参照して説明される同一の又は同様のコンポーネントを有するかもしれない。さらに、ここに記載される実施例は、マルチプロセッサ計算システムに限定されず、シングルプロセッサ計算システムに適用可能である。
【０００７】
一実施例では、プロセッサ１０２−１は、１以上のプロセッサコア１０６−１〜１０６−Ｍ（ここでは“コア１０６”又はより一般に“コア１０６”と呼ばれる）、キャッシュ１０８及び／又はルータ１１０を有する。プロセッサコア１０６は、単一の集積回路（ＩＣ）チップ上に実現可能である。さらに、チップは、１以上の共有及び／若しくはプライベートキャッシュ（キャッシュ１０８など）、バス若しくは相互接続（バス１１２など）、メモリコントローラ（図６及び７を参照して記載されるものなど）又は他のコンポーネントを有する。
【０００８】
一実施例では、ルータ１１０は、プロセッサ１０２−１及び／又はシステム１００の各種コンポーネントの間の通信に利用可能である。さらに、プロセッサ１０２−１は、複数のルータ１１０を有するかもしれない。さらに、複数のルータ１１０が、プロセッサ１０２−１の内部又は外部の各種コンポーネントの間のデータルーティングを可能にするため通信するかもしれない。
【０００９】
さらに、キャッシュ１０８は、プロセッサ１０２−１の１以上のコンポーネントにより利用されるデータ（命令などを含む）を格納する。例えば、キャッシュ１０８は、プロセッサ１０２−１のコンポーネントによるより高速なアクセスのため、メモリ１１４に格納されているデータをローカルにキャッシュする。図１に示されるように、メモリ１１４は、相互接続１０４を介しプロセッサ１０２−１と通信する。一実施例では、キャッシュ１０８（共有可能な）は、レベル２（Ｌ２）キャッシュ、ラストレベルキャッシュ（ＬＬＣ）又は他のタイプのキャッシュの１以上を有するかもしれない。また、コア１０６又はプロセッサ１０２のそれぞれは、レベル１（Ｌ１）キャッシュを有するかもしれない。プロセッサ１０２−１の各種コンポーネントは、バス（バス１１２など）を介し直接に及び／又はメモリコントローラ若しくはハブを介しキャッシュ１０８と通信するかもしれない。また、プロセッサ１０２−１は複数のキャッシュを有するかもしれない。図２を参照してさらに説明されるように、メモリ１１４はまた、バーチャルアドレスと物理アドレスとの間のマッピングに関する情報を格納するページテーブル１１６を有するかもしれない。
【００１０】
図２は、本発明の一実施例によるプロセッサコア１０６の各部分のブロック図を示す。１以上のプロセッサコア（プロセッサコア１０６など）は、図１を参照して説明されたものなど単一の集積回路チップ（又はダイ）上に実現可能である。さらに、チップは、１以上の共有及び／若しくはプライベートキャッシュ（図１のキャッシュ１０８など）、相互接続（図１の相互接続１０４及び／若しくは１１２など）、メモリコントローラ又は他のコンポーネントを有するかもしれない。
【００１１】
図２に示されるように、プロセッサコア１０６は、コア１０６により実行される命令をフェッチするフェッチユニット２０２を有する。これらの命令は、図６及び７を参照して説明されるメモリ１１４及び／又はメモリ装置などの何れかの記憶装置からフェッチされるかもしれない。コア１０６はまた、フェッチされた命令を復号化する復号化ユニット２０４を有する。例えば、復号化ユニット２０４は、フェッチされた命令を複数のｕｏｐ（マイクロオペレーション）に復号化するかもしれない。
【００１２】
さらに、コア１０６は、スケジュールユニット２０６を有する。スケジュールユニット２０６は、例えば、復号化された命令のすべてのソース値が利用可能になるまでなど、命令が送出準備ができるまで、復号化された命令（復号化ユニット２０４などから受け付けた）を格納することに係る各種処理を実行する。一実施例では、スケジュールユニット２０６は、実行のため、復号化された命令を実行ユニット２０８にスケジューリング及び／又は発行（又は送出）するかもしれない。実行ユニット２０８は、復号化（復号化ユニット２０４などによる）及び送出（スケジュールユニット２０６などによる）の後、送出された命令を実行する。一実施例では、実行ユニット２０８は、メモリ実行ユニット、整数実行ユニット、浮動小数実行ユニット又は他の実行ユニットなどの複数の実行ユニットを有するかもしれない。さらに、実行ユニット２０８は、アウト・オブ・オーダに命令を実行するかもしれない。このため、プロセッサコア１０６は、一実施例では、アウト・オブ・オーダプロセッサコアであるかもしれない。コア１０６はまた、リタイアメントユニット２１０を有する。リタイアメントユニット２１０は、コミットされた後、実行される命令をリタイアする。一実施例では、実行される命令のリタイアメントは、プロセッサ状態を命令の実行からコミットさせ、当該命令により使用される物理レジスタを割当て解除などするかもしれない。
【００１３】
図２に示されるように、コア１０６はさらに、フェッチされた（フェッチユニット２０２などにより）命令のトレース及び／又はマイクロコードを格納するトレースキャッシュ又はマイクロコードＲＯＭ（ｕＲＯＭ）２１２を有する。ｕＲＯＭ２１２に格納されているマイクロコードは、コア１０６の各種ハードウェアコンポーネントを構成するのに利用可能である。一実施例では、ｕＲＯＭ２１２に格納されているマイクロコードは、図６及び７を参照して説明されるコンピュータ可読媒体又は他の記憶装置など、プロセッサコア１０６と通信する他のコンポーネントからロードされるかもしれない。
【００１４】
プロセッサコア１０６はまた、ページテーブル１１６の各部分を格納（又はキャッシュ）するデータ変換ルックアサイドバッファ（ＤＴＬＢ）２１４を有する。一実施例では、ＤＴＬＢ２１４は、コンテンツアドレッサブルメモリ（ＣＡＭ）であってもよい。さらに、プロセッサコア１０６は、１以上のバス（バス１０４及び／又は１１２など）を介しプロセッサコア１０６の各コンポーネントと他のコンポーネント（図１を参照して説明されたコンポーネントなど）との間の通信を可能にするバスユニット２１６を有する。ページテーブル１１６とＤＴＬＢ２１４は、１以上のエントリを有する。一実施例では、各エントリについて、ＤＴＬＢ２１４はバーチャルアドレス２１８（例えば、メモリアドレスをバーチャルに特定する）、物理アドレス２２０（例えば、バーチャルアドレス２１８に対応するメモリ１１４又は他のメモリにおける物理アドレスを特定する）、オーナーシップフラグ２２２（ＤＴＬＢ２１４内のページ又は対応するエントリのオーナー、オーナーシップ状態及び／又はオーナーアクセスタイプ（リード又はライトアクセスなど）を特定する１以上のビットを含む）及び／又はスペキュレーションフラグ２２４（例えば、対応するエントリ（又はページ）が投機的にアクセスされていることを示すため、スレッド又はメモリトランザクションにより利用される）などの情報を格納する。一実施例では、ページテーブル１１６はまた、各エントリのフィールド２１８〜２２４を有するかもしれない。
【００１５】
一実施例では、各エントリについて、ページテーブル１１６は、バーチャルアドレスタグ２２６、物理アドレスタグ２２８及び／又は物理アドレスデータ２３０などの情報を格納する。タグ２２６と２２８は、図３〜５を参照してさらに説明されるように、ページテーブル１１６をサーチするのに利用されるかもしれない（例えば、物理アドレスデータ２３０を取得するため）。
【００１６】
一実施例では、ページテーブルベースポインタ２３２は、ページテーブル１１６のベースを指定する。さらに、ページテーブルリミットポインタ２３４は、ページテーブル１１６の先頭（又は最後のエントリ）を指定するかもしれない。ポインタ２３２及び２３４は、ハードウェアレジスタに格納されるか、又はメモリ（メモリ１１４など）に変数として格納される。コア１０６はまた、トランザクションメモリリクエストの１以上の命令に対応するディスクリプタを格納するためなど、トランザクションディスクリプタレジスタ２３６を有する。図１〜２を参照して説明された各コンポーネントに関する処理のさらなる詳細は、図３〜５により示される方法を参照して説明される。
【００１７】
より詳細には、図３は、ＨＴＭ及び／又はＳＴＭトランザクションに対応する１以上の命令を実行する方法３００の実施例のブロック図を示す。一実施例では、図１〜２及び図６〜７を参照して説明される各種コンポーネントは、図３を参照して説明される処理の１以上を実行するのに利用可能である。
【００１８】
図１〜３を参照するに、処理３０２において、コア１０６により実行されているスレッドがＨＴＭトランザクションをスタートする。スレッドは、コア１０６により実行される（３０４）１以上の命令を有する。スレッドは、ＨＴＭアクセスリクエストに対応する１以上の命令（１以上のロード又はストア処理など）を有する。処理３０６において、他の命令（異なるプロセッサコア上などで実行される同一の又は他のスレッドに対応する命令であるかもしれない）とのコンフリクトがある場合、処理３０８において、ハードウェアトランザクションが中断される。例えば、競合する命令は、処理３０２のＨＴＭトランザクションがアクセスしている（又はスペキュレーションフラグ２２４に格納される値により示されるような、アクセスされているとマークした）ＤＴＬＢ２１４のエントリについてスヌープを送信するかもしれない。
【００１９】
処理３０６においてコンフリクトが生じていない場合、処理３１２において、コア１０６は、処理３０２のＨＴＭに対応するハードウェアトランザクションが処理３１０においてコミットされた（リタイアメントユニット２１０などにより）か判断する。ハードウェアトランザクションがコミットされている場合、コア１０６は、メモリ１１４、ページテーブル１１６及び／又はＤＴＬＢ２１４における対応するデータを更新する。そうでない場合、ハードウェアトランザクション（又はそれの命令の１つ）が処理３１０においてコミットしていない場合、コア１０６は、コミットの失敗が、キャッシュオーバフロー、例外条件、割り込み、例外処理、ページフォルト、入出力命令、又は他のハードウェアオーバフロー状態などのハードウェアオーバフロー（３１４）によるものであるか判断する。ハードウェアオーバフローが生じていない場合（３１４）、コア１０６は、処理３０２のＨＴＭトランザクションに対応する残りの命令を実行するためなど、処理３０４を継続する。ハードウェアオーバフロー（３１４）の場合、コア１０６は処理３２０においてＳＴＭトランザクションをスタートする。一実施例では、処理３０２のＨＴＭと処理３２０のＳＴＭは、メモリ１１４への同一アクセスに関するものであるかもしれない（例えば、１以上のリード又はライト処理など）。従って、一実施例では、処理３０２のＨＴＭが処理４２２においてハードウェアオーバフローによりコミットに失敗すると、同じメモリ処理が処理３２０のＳＴＭにより実行される。処理３２２において、コア１０６は、ＳＴＭに対応する１以上の命令を実行する。ここで、スレッドは、ＳＴＭアクセスリクエストに対応する１以上の命令（１以上のロード又はストア処理など）を有する。処理３２４において、コア１０６は、ＳＴＭトランザクションのコミットに成功したか判断する。ＳＴＭトランザクションがコミットされているままである場合（３２４）、コア１０６は、処理３２０のＳＴＭトランザクションに対応する残りの命令を実行し続ける。ソフトウェアトランザクションがコミットされる場合（３２４）、処理３１２において、コア１０６は、メモリ１１４、ページテーブル１１６及び／又はＤＴＬＢ２１４において対応するデータを更新するかもしれない。一実施例では、処理３１２は、例えば、コミット後（処理３１０及び／又は３２４において）、投機的な更新がアトミックに可視化されるように、アトミックに実行されてもよい。
【００２０】
一実施例では、コア１０６は、図４及び５を参照してさらに説明されるように、方法３００を参照して説明された命令を投機的に実行する。例えば、処理３０２及び／又は３２０において、コア１０６は、ＤＴＬＢ２１４及び／又はページテーブル１１６の対応するエントリが投機的にアクセスされることを示すため、スペキュレーションフラグ２２４に値を格納する。ＨＴＭが（処理３０８において）中断されると、又はＨＴＭ若しくはＳＴＭトランザクションが処理３１２においてコミットに成功すると、コア１０６は、対応するエントリがもはや投機的にアクセスされていないことを示すため、スペキュレーションフラグ２２４を更新する。一実施例では、処理３０６のコンフリクトは、処理３０２のＨＴＭトランザクションによって投機的にアクセスされた（スペキュレーションフラグ２２４などを介し）とマーク付けされているエントリへのスヌープアクセスにより引き起こされるかもしれない。少なくとも１つの命令セットアーキテクチャによると、このスヌープはオーナーシップ（又はＲＦＯ）命令に対するリクエストにより生成される。このため、プロセッサコア１０６は、例えば、他のプロセッサコアの他のＤＴＬＢにおける対応するエントリを無効にするためなど、ＤＴＬＢエントリ２１４の排他的なオーナーシップを取得するかもしれない。
【００２１】
さらに、一実施例では、ＤＴＬＢシュートダウンが、マルチコアプロセッサ（プロセッサ１０２−１など）のＤＴＬＢ２１４Ａのコヒーレンスを維持するのに利用可能である。ＤＴＬＢシュートダウンは、一般に１つのスレッドがページテーブル１１６について変更を行い、この結果、各自のＤＴＬＢ２１４から対応するエントリを削除するための信号が他のコア１０６に送信される状況を表す。一実施例では、ページテーブル１１６のフィールド２２６〜２３０は、キャッシュコヒーレンスプロトコルに加えて利用可能である。例えば、ＤＴＬＢ２１４（及びページテーブル１１６）は、ポインタ２３２及び２３４の識別可能部分など、物理メモリ（メモリ１１４など）の識別可能部分に格納されるかもしれない。コア１０６（又はコア１０６に設けられるスヌープフィルタ）がバス１０４／１１２上でスヌープを検出すると、当該スヌープがページテーブル１１６の各フィールド２２６〜２３０を参照することによって、コアはＤＴＬＢ２１４又はキャッシュに対するものであるかわかる。一実施例では、プロセッサコア１０６がＤＴＬＢ２１４のエントリのオーナーシップを取得することを所望するとき、それは物理アドレスタグ２２６を使用することによって、ページテーブル１１６において検索される対応する物理アドレスに対するスヌープを送信し、物理アドレスデータフィールド２３０に格納されているデータが、任意的に設けられるかもしれない。
【００２２】
図４は、ＨＴＭトランザクションに対応する１以上の命令を実行する方法４００の一実施例のブロック図を示す。一実施例では、図４は、図３の方法３００を参照して説明された処理の一部に関するさらなる詳細を示す。さらに、図１〜２及び図６〜７を参照して説明される各種コンポーネントが、図４を参照して説明された処理の１以上を実行するのに利用可能である。
【００２３】
図１〜４を参照するに、処理４０２〜４０４において、コア１０６はＨＴＭトランザクションをスタートし、処理３０２〜３０４を参照してそれぞれ説明されたようなＨＴＭトランザクションに対応する１以上の命令を実行する。処理４０６において、コア１０６は、処理３０６を参照して説明されたように、他の命令などによって投機的にアクセスされているＤＴＬＢエントリに対するオーナーシップリクエスト４０６が存在するか判断する。オーナーシップリクエスト４０６が存在する場合、処理４０２のＨＴＭトランザクションが中断される。一実施例では、ＨＴＭトランザクションの中断後、同一のＨＴＭトランザクションをリトライするか、又は他のアクションを実行するか判断するため、ユーザレベル中断ハンドラに制御が移転される。
【００２４】
コア１０６は、処理４０６においてオーナーシップリクエストが受け付けされていない場合、処理４１０においてＨＴＭトランザクションに対応する１以上の命令の実行を継続する。処理４１２において、ＤＴＬＢミスがある場合（ＨＴＭトランザクションの命令によりアクセスされるバーチャル又は物理アドレスに対応するエントリが、当該エントリの以前のイビクトなどによってＤＴＬＢ２１４にないときなど）、対応するデータ（ページテーブル１１６の一部など）が、処理４１４においてページテーブル１１６からＤＴＬＢ２１４にコピーされる。コピーされた情報は、対応するバーチャルアドレス２１８、物理アドレス２２０、オーナーシップフラグ２２２及び／又はスペキュレーションフラグ２２４を有するかもしれない。
【００２５】
処理４１６において、コア１０６は、処理４１４においてページテーブル１１６からコピーされたエントリのオーナーシップフラグ２２２が、対応するエントリの有効なオーナーシップを示しているか判断する。オーナーシップフラグ２２２が有効な値（一実施例では非ヌル値など）を示す場合、コア１０６は、処理４０８においてハードウェアトランザクションを中断する。図２を参照して説明されるように、オーナーシップフラグ２２２はまた、オーナーアクセスタイプ情報（リード又はライトアクセスなど）を含むかもしれない。一実施例では、オーナーシップフラグ２２２の１以上のビットが、オーナーがリードアクセスを実行していることを示す場合、方法４００は処理４０２において継続される（部分的には、ＤＴＬＢ２１４の同一エントリから読み込む２つの命令がコンフリクトを生じさせないため）。さらに、オーナーシップフラグ２２２が無効な値（一実施例ではヌル値など）を示す場合、コア１０６は、処理４０２のＨＴＭトランザクションに対応する残りの命令を実行し続ける。
【００２６】
処理４１８において、コア１０６は、処理４０２のＨＴＭに対応するハードウェアトランザクションがコミットされたか判断する（リタイアメントユニット２１０などによって）。ハードウェアトランザクションがコミットされている場合、コア１０６は、メモリ１１４、ページテーブル１１６及び／又はＤＴＬＢ２１４における対応するデータを更新する（４２０）。そうでない場合、ハードウェアトランザクション（又はそれの命令の１つ）が処理４１８においてコミットするのに失敗した場合、コア１０６は、コミットの失敗が、キャッシュオーバフロー、例外条件、割り込み、例外処理、ページフォルト、入出力命令又は他のハードウェアオーバフロー状態などのハードウェアオーバフローによるものであるか判断する（４２２）。ハードウェアオーバフローが生じていない場合（４２２）、コア１０６は、処理４０２のＨＴＭトランザクションに対応する残りの命令を実行するなど、処理４０４から続けられる。ハードウェアオーバフローの場合（４２２）、コア１０６は、図５を参照してさらに説明されるようなＳＴＭトランザクションをスタートする。
【００２７】
図５は、ＳＴＭトランザクションに対応する１以上の命令を実行する方法５００の実施例のブロック図を示す。一実施例では、図４は、図３の方法を参照して説明された処理の一部に関するさらなる詳細を示す。さらに、図１〜２及び図６〜７を参照して説明される各種コンポーネントは、図５を参照して説明される処理の１以上を実行するのに利用されるかもしれない。
【００２８】
図１〜５を参照するに、処理５０２〜５０４において、コア１０６は、ＳＴＭトランザクションをスタートし、処理３２０〜３２２を参照してそれぞれ説明されたように、ＳＴＭトランザクションに対応する１以上の命令を実行する。処理５０６において、コア１０６は、ＤＴＬＢ２１４のアクセスされた何れかのエントリのオーナーシップフラグ２２２を更新する（処理５０４における命令の実行などのため）。図２を参照して説明されるように、オーナーシップフラグ２２２は、対応するエントリのオーナー又はオーナーシップ状態を特定するための１以上のビットを含む。一実施例では、処理５０２において、コア１０６は、ＳＴＭトランザクションに対応する値（トランザクション識別子など）をトランザクションディスクリプタレジスタ２３６に格納する。その後、処理５０６において、コア１０６は、トランザクションディスクリプタレジスタ２３６に格納されている値を対応するエントリのオーナーシップフラグ２２２にコピーする。
【００２９】
処理５０８において、コア１０６は、ＳＴＭトランザクションのコミットが成功したか判断する。ＳＴＭトランザクションがコミットされたままである場合、コア１０６は、処理５０２のＳＴＭトランザクションに対応する残りの命令を実行し続ける。ソフトウェアトランザクションがコミットされる場合（５０８）、処理５１０において、コア１０６は、メモリ１１４、ページテーブル１１６及び／又はＤＴＬＢ２１４における対応するデータを更新する。一実施例では、処理５１０は、例えば、コミット後（処理５０８において）、投機的な更新がアトミックに可視化されるように、アトミックに実行されるかもしれない。
【００３０】
図３を参照して説明されるように、ＨＴＭ（処理３０２又は４０２などの）及びＳＴＭ（処理３２０又は５０２などの）が、メモリ１１４への同じアクセスに関するものであるかもしれない（１以上のリード又はライト処理など）。さらに一実施例では、図３〜５を参照して説明された処理を実現するため、コンパイラは、以下の同期擬似コードブロックの２つのコピーを生成する。
【００３１】
【表１】
2009521767.tif 000003
この擬似コードの２つのコンパイルされたコピーは、以下のようになる。
【００３２】
【表２】
2009521767.tif 000004
上記擬似コードと図１〜５を参照するに、コピー＃１がＨＴＭとしての実行に失敗した場合、第２の擬似コード（コピー＃２）がＳＴＭとして実行されてもよい（図３〜５を参照して説明されたように）。このため、ＨＴＭコードは、ＨＴＭトランザクションとしてアトミック領域を実行する。一実施例では、ＨＴＭコードは、トランザクションコンシスタンシを保証するためキャッシュコヒーレンス機構に依拠し、図３〜５を参照して説明されるように、ページテーブル１１６のエントリのオーナーシップを取得しないかもしれない。ＨＴＭトランザクションがハードウェアオーバフローによりコミットに失敗した場合（４２２）、ＳＴＭコード（コピー＃２）がＳＴＭトランザクションとして実行される。
【００３３】
上記サンプルＳＴＭコード（コピー＃２）に示されるように、プログラムはまずＳＴＭトランザクション（５０２）に対応するディスクリプタ（又は識別子）をレジスタ２３６にロードする。少なくとも１つの命令セットアーキテクチャに従って、プログラム（コピー＃２）は、ロード及びストア命令のため、それぞれ“ＤＬｏａｄ”と“ＤＳｔｏｒｅ”命令を利用する。一実施例では、“ＤＬｏａｄ”命令は、例えば、レジスタ２３６の値を対応するオーナーシップフラグ２２２の一部にコピーすることによって、対応するＤＴＬＢ（２１４）エントリの排他的なオーナーシップを取得する。一実施例では、“ＤＳｔｏｒｅ”命令は、例えば、レジスタ２３６の値を対応するオーナーシップフラグ２２２の一部をコピーすることによって、対応するＤＴＬＢ（２１４）エントリの排他的なオーナーシップを取得する。“ＳＴＭ＿ｃｏｍｍｉｔ（）”命令は、ＳＴＭコードのコミットの成功をテストする（５０８）。
【００３４】
少なくとも１つの命令セットアーキテクチャによると、“ＤＲｅｌｅａｓｅ”命令が、例えば、対応するオーナーシップフラグ２２２を更新することによって（例えば、フラグをヌルにセットすることによって）、ＤＴＬＢ２１４の１以上のエントリ（又はページ）のオーナーシップを放棄するのに利用される。一実施例では、ＳＴＭトランザクションに対応する１以上の命令が実行されている間（３２２）、スレッドプライベートメモリ位置（キャッシュ１０８内など）へのすべてのストア（ＳＴＭコードを参照して説明されたものなど）が実行される。コードがＳＴＭトランザクションのエンドに到達し、コミットに成功可能であるとき（３２４）、更新が、処理３１２、４２０及び／又は５１０を参照して説明されたような対応する位置にコピーされる。このため、これらの処理は、“ＤＲｅｌｅａｓｅ”命令を利用して、スレッドがアクセスされたすべてのページのオーナーシップを解放する。
【００３５】
図６は、計算システム６００の実施例のブロック図を示す。計算システム６００は、相互接続（又はバス）６０４と通信する１以上の中央処理ユニット（ＣＰＵ）又はプロセッサ６０２を有する。一実施例では、プロセッサ６０２は、図１のプロセッサと同一又は同様のものであってもよい。また、相互接続６０４は、図１〜２を参照して説明される相互接続１０４及び／又は１１２と同一又は同様のものであってもよい。プロセッサ６０２は、汎用プロセッサ、ネットワークプロセッサ（コンピュータネットワークを介し通信されるデータを処理するプロセッサなど）、ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）プロセッサ又はＣＩＳＣ（Ｃｏｍｐｌｅｘ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ）プロセッサを含む他のプロセッサなどの任意のタイプのプロセッサを含むかもしれない。さらに、プロセッサ６０２は、図１を参照して説明される１以上のプロセッサ１０６などを含む、シングル又はマルチコアデザインを有するかもしれない。マルチコアデザインによるプロセッサ６０２は、同一の集積回路（ＩＣ）ダイ上に異なるタイプのプロセッサコアデザインを統合するかもしれない。または、マルチコアデザインによるプロセッサ６０２は、シンメトリカル又は非シンメトリカルなマルチプロセッサとして実現可能である。
【００３６】
図６に示されるように、チップセット６０６は相互接続６０４と通信する。チップセット６０６は、ＭＣＨ（Ｍｅｍｏｒｙ  Ｃｏｎｔｒｏｌ  Ｈｕｂ）６０８を有する。ＭＣＨ６０８は、メモリ１１４と通信するメモリコントローラ６１０を有する。メモリ１１４は、プロセッサ６０２又は計算システム６００と通信する他の何れかの装置によって実行される命令シーケンスなどを含むデータを格納する。図６に示されるように、メモリ１１４は、図１〜５を参照して説明されるように、ページテーブル１１６を有する。本発明の一実施例では、メモリ１１４は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）又は他の揮発性メモリ装置などの１以上の揮発性記憶（またなメモリ）装置を有する。ハードディスクなどの不揮発性メモリもまた利用可能である。複数のプロセッサ及び／又は複数のシステムメモリなどさらなる装置が、相互接続６０４を介し通信可能である。
【００３７】
ＭＣＨ６０８はさらに、グラフィックアクセラレータ６１６と通信するグラフィックインタフェース６１４を有する。一実施例では、グラフィックインタフェースは、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）を介しグラフィックアクセラレータ６１６と通信する。本発明の一実施例では、ディスプレイ（フラットパネルディスプレイなど）は、例えば、ビデオメモリやシステムメモリなどの記憶装置に格納されている画像のデジタル表現を、ディスプレイにより解釈及び表示される表示信号に変換する信号コンバータなどを介しグラフィックインタフェース６１４と通信する。各種実施例では、表示装置により生成される表示信号は、ディスプレイに解釈され、その後に表示される前に、各種制御装置を通過する。
【００３８】
さらに、ハブインタフェース６１８は、ＭＣＨ６０８と入出力（Ｉ／Ｏ）コントロールハブ（ＩＣＨ）６２０との間の通信を可能にする。ＩＣＨ６２０は、計算システム６００と通信するＩ／Ｏ装置とのインタフェースを提供する。ＩＣＨ６２０は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）ブリッジ又はＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）コントローラなどの周辺ブリッジ（又はコントローラ）６２４を介しバス６２２と通信する。ブリッジ６２４は、プロセッサ６０２と周辺装置との間のデータパスを提供する。他のタイプのトポロジーが利用可能である。また、複数のバスが、複数のブリッジ又はコントローラなどを介しＩＣＨ６２０と通信可能である。さらに、ＩＣＨ６２０と通信する他の周辺装置は、本発明の各種実施例において、ＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）若しくはＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）ハードドライブ、ＵＳＢポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピー（登録商標）ディスクドライブ、又はデジタルデータサポートインタフェース（ＤＶＩ（Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｉｎｔｅｒｆａｃｅ）など）を含むかもしれない。
【００３９】
バス６２２は、オーディオ装置６２６、１以上のディスクドライブ６２８及びネットワークアダプタ６３０と通信する。ネットワークアダプタ６３０は、システム６００の各種コンポーネントがネットワーク６３１を介しデータを送受信することを可能にするなど、コンピュータネットワーク６３１と通信する。他の装置は、バス６２２を介し通信する。また、各種コンポーネント（ネットワークアダプタ６３０など）は、本発明の一部の実施例において、ＭＣＨ６０８と通信する。さらに、プロセッサ６０２とＭＣＨ６０８は、１つのチップを構成するよう組み合わされる。さらに、グラフィックアクセラレータ６１６は、本発明の他の実施例において、ＭＣＨ６０８に内蔵されてもよい。
【００４０】
一実施例では、計算システム６００は、揮発性及び／又は不揮発性メモリ（又はストレージ）を有する。例えば、不揮発性メモリは、ＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  ＥＰＲＯＭ）、ディスクドライブ（６２８など）、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、フラッシュメモリ、光磁気ディスク、又は他のタイプの電子データ（命令などを含む）を格納する不揮発性マシーン可読媒体の１以上を有するかもしれない。
【００４１】
図７は、本発明の一実施例によるポイント・ツー・ポイント（ＰｔＰ）コンフィギュレーションに構成される計算システム７００を示す。特に、図７は、プロセッサ、メモリ及び入出力装置が複数のポイント・ツー・ポイントインタフェースにより相互接続されるシステムを示す。図１〜６を参照して説明される処理は、システム７００の１以上のコンポーネントにより実行可能である。
【００４２】
図７に示されるように、システム７００は、簡単化のためプロセッサ７０２と７０４の２つしか示されていないが、複数のプロセッサを有する。プロセッサ７０２と７０４はそれぞれ、メモリ７１０と７１２との通信を可能にするため、ローカルなＭＣＨ７０６と７０８を有する。メモリ７１０及び／又は７１２は、図１、２及び６のメモリ１１４を参照して説明されるものなどの各種データを格納するかもしれない。
【００４３】
一実施例では、プロセッサ７０２と７０４は、図６を参照して説明されるプロセッサ６０２の１つであるかもしれない。プロセッサ７０２と７０４は、それぞれＰｔＰインタフェース回路７１６と７１８を利用してＰｔＰインタフェース７１４を介しデータをやりとりする。また、プロセッサ７０２と７０４はそれぞれ、ＰｔＰインタフェース回路７２６，７２８，７３０及び７３２を利用して、各ＰｔＰインタフェース７２２と７２４を介しチップセット７２０とデータをやりとりする。チップセット７２０はさらに、ＰｔＰインタフェース回路７３７などを利用して、ハイパフォーマンスグラフィックインタフェース７３６を介しハイパフォーマンスグラフィック回路７３４とデータをやりとりする。
【００４４】
本発明の少なくとも１つの実施例は、プロセッサ７０２と７０４の内部に設けられるかもしれない。例えば、図１又は２のコア１０６の１以上が、プロセッサ７０２と７０４の内部に設けられるかもしれない。しかしながら、本発明の他の実施例は、図７のシステム内の他の回路、ロジックユニット又は装置に存在するかもしれない。さらに、本発明の他の実施例は、図７に示される複数の回路、ロジックユニット又は装置に分散化されるかもしれない。
【００４５】
チップセット７２０は、ＰｔＰインタフェース回路７４１を利用してバス７４０と通信可能である。バス７４０は、バスブリッジ７４２とＩ／Ｏ装置７４３など、それと通信する１以上の装置を有する。バス７４４を介して、バスブリッジ７４３は、キーボード／マウス７４５、通信装置７４６（モデム、ネットワークインタフェース装置（図６のネットワークアダプタ６３０など）又はコンピュータネットワーク６３１と通信可能な他の通信装置など）、オーディオＩ／Ｏ装置、及び／又はデータ記憶装置７４８などの他の装置と通信可能である。データ記憶装置７４８は、プロセッサ７０２及び／又は７０４により実行可能なコード７４９を格納する。
【００４６】
本発明の各種実施例では、図１〜７などを参照してここに記載された各処理は、ハードウェア（ロジック回路など）、ソフトウェア、ファームウェア又はこれらの組み合わせとして実現可能であり、ここに記載されたプロセスを実行するようコンピュータをプログラムするのに使用される命令（又はソフトウェア手順）を格納したマシーン可読又はコンピュータ可読媒体を含むコンピュータプログラムプロダクトとして提供されるかもしれない。マシーン可読媒体は、図１〜７に関して説明されたものなど記憶装置を含むかもしれない。
【００４７】
さらに、このようなコンピュータ可読媒体は、プログラムがリモートコンピュータ（サーバなど）から要求元コンピュータ（クライアントなど）に通信リンク（バス、モデム、ネットワーク接続など）を介し搬送波又は他の伝搬媒体に実現されるデータ信号により伝送されるコンピュータプログラムプロダクトとしてダウンロード可能である。このため、ここでの搬送波は、マシーン可読媒体を構成するものとしてみなされるであろう。
【００４８】
明細書における“一実施例”又は“実施例”という表現は、実施例に関して説明された特定の機能、構成又は特徴が少なくとも実現形態に含まれることを意味する。明細書の各所における“一実施例では”という表現の出現は、すべてが同一の実施例を参照するとは限らない。
【００４９】
また、明細書及び請求項において、“結合される（ｃｏｕｐｌｅｄ）”及び“接続される（ｃｏｎｎｅｃｔｅｄ）”という用語とその派生語が利用されるかもしれない。本発明のいくつかの実施例では、“接続される”とは、２以上の要素が互いに直接的な物理的又は電気的接触をしていることを示すのに利用されるかもしれない。“結合される”とは、２以上の要素が直接的な物理的又は電気的接触をしていることを意味するかもしれない。しかしながら、“結合される”とはまた、２以上の要素が直接的には互いに接触していないが、依然として互いに協働又は相互作用することを意味するかもしれない。
【００５０】
本発明の実施例が構成的な特徴及び／又は方法的なステップに固有の言語により説明されたが、請求された主題は期さされた特定の特徴又はステップに限定されるものでないことが理解されるべきである。むしろ、これら特定の特徴及びステップは、請求される主題を実現するサンプルの構成として開示されている。
【図面の簡単な説明】
【００５１】
【図１】図１は、ここに記載された各種実施例を実現するのに利用可能な計算システムの実施例のブロック図を示す。
【図２】図２は、本発明の実施例によるプロセッサコアの各部分のブロック図を示す。
【図３】図３は、本発明の各種実施例による方法のブロック図を示す。
【図４】図４は、本発明の各種実施例による方法のブロック図を示す。
【図５】図５は、本発明の各種実施例による方法のブロック図を示す。
【図６】図６は、ここに記載された各種実施例を実現するのに利用可能な計算システムの実施例のブロック図を示す。
【図７】図７は、ここに記載された各種実施例を実現するのに利用可能な計算システムの実施例のブロック図を示す。
【図１】
2009521767.tif 000005
【図２】
2009521767.tif 000006
【図３】
2009521767.tif 000007
【図４】
2009521767.tif 000008
【図５】
2009521767.tif 000009
【図６】
2009521767.tif 000010
【図７】
2009521767.tif 000011
【国際調査報告】
2009521767.tif 000012
2009521767.tif 000013