(57)【特許請求の範囲】
【請求項１】
ハードウェアトランザクションメモリ（ＨＴＭ）トランザクションを実行するデータ処理システムであって、
データを持続的に格納するためのバイトアドレス指定可能な不揮発性メモリと、
前記ＨＴＭトランザクションのコミット成功を示すインジケータを前記不揮発性メモリに書き込むことによって、前記ＨＴＭトランザクションのコミットに関するアトミックなＨＴＭの書き込みオペレーションを実行するプロセッサと、
を備え、
前記データ処理システムは、さらに、前記ＨＴＭトランザクションの前記コミット成功の後で、前記ＨＴＭのオペレーションによって書き込まれたデータを、キャッシュメモリから前記不揮発性メモリにフラッシュする、データ処理システム。
【請求項２】
ハードウェアトランザクションメモリ（ＨＴＭ）トランザクションを実行するデータ処理システムであって、
データを持続的に格納するためのバイトアドレス指定可能な不揮発性メモリと、
前記ＨＴＭトランザクションのコミット成功を示すインジケータを前記不揮発性メモリに書き込むことによって、前記ＨＴＭトランザクションのコミットに関するアトミックなＨＴＭの書き込みオペレーションを実行するプロセッサと、
を備え、
前記データ処理システムは、さらに、ＨＴＭトランザクションをアボートすることなく、前記ＨＴＭのオペレーションによって書き込まれたデータを、キャッシュメモリから前記不揮発性メモリにトランスペアレントにフラッシュする、データ処理システム。
【請求項３】
前記プロセッサは、複数のキャッシュラインによってキャッシュメモリに連結され、前記キャッシュメモリは、キャッシュコヒーレンスなプロトコルを用いてデータをキャッシュするために、前記プロセッサによって用いられる、請求項１または２に記載のデータ処理システム。
【請求項４】
前記データ処理システムは、さらに、前記ＨＴＭトランザクションの前記コミット成功の後で、前記ＨＴＭトランザクションを非ロギング状態に設定し、詳細には、前記インジケータを設定解除する、請求項１から３のいずれか１項に記載のデータ処理システム。
【請求項５】
前記ＨＴＭトランザクションの前記コミット成功を示すインジケータは、ＨＴＭトランザクション識別子、詳細には、コミット記録を含む、請求項１から４のいずれか１項に記載のデータ処理システム。
【請求項６】
ハードウェアトランザクションメモリ（ＨＴＭ）トランザクションを実行するためのデータ処理方法であって、
前記ＨＴＭトランザクションのコミット成功を示すインジケータを不揮発性メモリに書き込むことによって、前記ＨＴＭトランザクションのコミットに関するアトミックなＨＴＭの書き込みオペレーションを実行する段階と、
前記ＨＴＭトランザクションの前記コミット成功の後で、前記ＨＴＭのオペレーションによって書き込まれたデータを、キャッシュメモリから前記不揮発性メモリにフラッシュする段階と、
を備えるデータ処理方法。
【請求項７】
ハードウェアトランザクションメモリ（ＨＴＭ）トランザクションを実行するためのデータ処理方法であって、
前記ＨＴＭトランザクションのコミット成功を示すインジケータを不揮発性メモリに書き込むことによって、前記ＨＴＭトランザクションのコミットに関するアトミックなＨＴＭの書き込みオペレーションを実行する段階と、
ＨＴＭトランザクションをアボートすることなく、前記ＨＴＭのオペレーションによって書き込まれたデータを、キャッシュメモリから前記不揮発性メモリにトランスペアレントにフラッシュする段階と、
を備えるデータ処理方法。
【請求項８】
前記ＨＴＭトランザクションの前記コミット成功の後で、前記ＨＴＭトランザクションを非ロギング状態に設定し、詳細には、前記インジケータを設定解除する段階を備える、請求項６または７に記載のデータ処理方法。
【請求項９】
請求項６から８のいずれか１項に記載のデータ処理方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システム及び方法に関し、詳細には、データ処理システムの共有メモリへのストレージアクセスに関する。
【背景技術】
【０００２】
並列プログラミングコンピューティング環境において、並列プロセッサコア又はプログラムが同じメモリ位置へのアクセスを共有する場合、このアクセスは、適切に管理及び同期されなければならない。いくつかのこのような環境において、トランザクションメモリパラダイムが、スレッドによる同期されたメモリアクセスを管理するために用いられることがある。トランザクションメモリアプローチによれば、スレッドは、その後トランザクションがコミットするまで、共有メモリ位置の内容を変更することなく、トランザクションを投機的に実行することができる。２つのトランザクションの間にコンフリクトが検出された場合、トランザクションの１つはアボートされてよい。これにより、他のトランザクションはコミットすることができ、その時点で、コミットされたトランザクションは、共有メモリ位置の内容を変更してよい。
【０００３】
より具体的には、従来のマルチプロセッサコンピュータシステムは、複数の処理ユニット、ならびに１つ又は複数のアドレス、データ及び制御バスを含む。システムメモリが、複数の処理ユニットに連結される。これは、マルチプロセッサコンピュータシステムにおける揮発性メモリの最下位レベルを表し、概して、読み出し及び書き込みアクセスのために、全ての処理ユニットによってアクセス可能である。システムメモリに存在する命令及びデータへのアクセスレイテンシ低減のために、各処理ユニットは、典型的には、それぞれのマルチレベルキャッシュ階層によってさらにサポートされる。その下位レベルは、１つ又は複数のプロセッサコアによって共有されることがある。
【０００４】
キャッシュメモリは、一般的に、必要なデータ及び命令をシステムメモリからロードしなければならないことにより生じるアクセスレイテンシを低減することによって処理を高速化するために、プロセッサによってアクセスされ得るメモリブロックを、一時的にバッファするために用いられる。いくつかのマルチプロセッサシステムにおいて、キャッシュ階層は、少なくとも２つのレベルを含む。レベル１（Ｌ１）又は上位レベルのキャッシュは、通常、特定のプロセッサコアに関連付けられたプライベートキャッシュであり、マルチプロセッサシステムにおける他のコアによってはアクセス不可能である。典型的には、ロード又はストア命令のようなメモリアクセス命令に応答して、プロセッサコアは、最初に、上位レベルのキャッシュのディレクトリにアクセスする。要求されたメモリブロックが上位レベルのキャッシュにおいて見つからない場合、プロセッサコアは、次に、要求されたメモリブロックのために、下位レベルのキャッシュ（例えば、レベル２（Ｌ２）又はレベル３（Ｌ３）キャッシュ）又はシステムメモリにアクセスする。最下位レベルのキャッシュ（例えば、Ｌ３キャッシュ）は、しばしば、いくつかのプロセッサコアで共有される。
【０００５】
このようなシステムにおいて、マルチプロセッサソフトウェアは、複数のソフトウェアスレッドから、共有データ構造に同時にアクセスする。共有データに同時にアクセスする場合、典型的には、いわゆる「制約のない競争」又は「コンフリクト」を防止する必要がある。２つのメモリアクセスが同じメモリ位置に対して発生し、これらの少なくとも１つが書き込みであり、これらのアクセス発生の秩序化を確保する手段がない場合に、これらの間でコンフリクトが発生する。
【０００６】
マルチプロセッサソフトウェアは、典型的には、メモリにおける位置の同時の読み出し及び修正を、秩序立った、コンフリクトのない態様で調整するために、ロック変数を用いる。ロック変数は、読み出されるメモリにおける位置であり、次に、おそらくは読み出された値に基づいて、アトミックな態様で特定値に設定される。ロック変数に対する読み出し修正書き込みオペレーションは、しばしば、アトミックな読み出し修正書き込み命令を用いて、又は、ロック変数の読み出し及び修正をアトミックに実行する単一の命令と同じ効果を提供する一連の命令によって、実現される。
【０００７】
このように、アトミックな読み出し修正書き込み命令を介して最初の「アンロック」値を読み出したソフトウェアスレッドは、ロックを「取得」し、ロックを解放するまで、ロックを保持する唯一のソフトウェアスレッドとなるとされている。ロックを保持するスレッドは、現在のスレッドがロックを解放するまで他のスレッドがロックを取得できないので、ロックによって保護される共有メモリ位置を、他のスレッドとコンフリクトすることなく安全に更新することができる。共有位置が適切に読み出し及び／又は修正された場合、ロックを保持するスレッドは、（例えば、ロック変数を書き込み、「アンロック」値にすることによって）ロックを解放し、他のスレッドがストレージにおける共有位置にアクセスすることを可能とする。
【０００８】
ロックが競合するスレッドの共有データへのアクセスを調整する一方で、ロックは、多数の周知の欠点を抱える。これらは、とりわけ、第１に、所与のスレッドが１つより多くのロックを保持し、他のスレッドの前進を防止する場合に、デッドロックを引き起こす可能性、第２に、共有データへのコンフリクトアクセスが発生しなかったであろうことから、ロックが厳密には必要でなかった可能性がある場合のロック取得のパフォーマンスのコストを含む。
【０００９】
これらの制限を克服すべく、トランザクションメモリの概念が利用可能である。トランザクションメモリにおいて、ロード及び／又はストア命令のセットは、「トランザクション」として処理される。構成要素であるロード及びストアオペレーションが他のスレッドとコンフリクトすることなくアトミックに行われる場合、トランザクションは成功する。他のスレッドとのコンフリクトが存在する場合、トランザクションは失敗し、次に、再試行可能となる。トランザクションが失敗し続ける場合、ソフトウェアは、共有データの秩序立ったアクセスを確保すべく、ロックの利用に戻ってよい。
【００１０】
トランザクションメモリをサポートすべく、トランザクションを実行するとコンフリクトが発生する場合のために、基礎となるハードウェアは、トランザクションに関与するストレージ位置、すなわち、トランザクションフットプリントを追跡する。コンフリクトがトランザクションフットプリントにおいて発生した場合、トランザクションはアボートされ、おそらくはリスタートされる。典型的な場合、ロックは保持されない（コンフリクトが発生する場合、トランザクションは、単に１つ又は複数のストレージアクセスを試行し、リスタートする）ので、トランザクションメモリの利用は、複数のロックを保持するスレッドに起因するデッドロックの可能性を低減する。さらに、ロックを取得するオーバヘッドの処理が、概して回避される。
【００１１】
トランザクションメモリは、ハードウェアトランザクションメモリ（ＨＴＭ）及びソフトウェアトランザクションメモリ（ＳＴＭ）の形式で知られている。ハードウェアトランザクションメモリ（ＨＴＭ）システムは、トランザクションをサポートすべく、プロセッサ、キャッシュ及びバスプロトコルにおける修正を含んでよい。ソフトウェアトランザクションメモリ（ＳＴＭ）は、ソフトウェアランタイムライブラリ又はプログラミング言語において、トランザクションメモリのセマンティックを提供する。いくつかの将来的なマルチコアプロセッサ世代は、「インテル（登録商標）アーキテクチャ命令セット拡張プログラミングリファレンス」という文献から認識可能であるように、ハードウェアトランザクションメモリ（ＨＴＭ）の形式を実装する。
【発明の概要】
【００１２】
本発明の目的は、改良されたデータ処理システム及び方法を提供することである。
【００１３】
この目的は、独立請求項の主題によって実現される。さらなる実装形式が、従属請求項、発明の詳細な説明及び図面において提供される。
【００１４】
本発明は、ハードウェアトランザクションメモリ（ＨＴＭ）が、システム障害の間であっても、不揮発性メモリにおいて一貫性及び持続性を維持することを可能とすべく、ＨＴＭコミット内に持続的な指示をアトミックに追加し、各ＨＴＭの書き込みをロギングし、コミット後に各ＨＴＭの書き込みをフラッシュするという一般的概念に基づく。
【００１５】
本発明の第１の態様によれば、データ処理システムは、ハードウェアトランザクションメモリ（ＨＴＭ）トランザクションを実行するように構成される。データ処理システムは、
データを持続的に格納するためのバイトアドレス指定可能な不揮発性メモリと、
ＨＴＭトランザクションのコミット成功を示すインジケータを不揮発性メモリに書き込むことによって、ＨＴＭトランザクションのコミットに関するアトミックなＨＴＭの書き込みオペレーションを実行するように構成されるプロセッサと、
を備える。
【００１６】
第１の態様の第１の実装形式によれば、プロセッサは、複数のキャッシュラインによってキャッシュメモリに連結され、キャッシュメモリは、キャッシュコヒーレンスなプロトコルを用いてデータをキャッシュするために、プロセッサによって用いられるように構成される。
【００１７】
第１の態様の第２の実装形式によれば、データ処理システムは、ＨＴＭトランザクションのコミット成功より前に、ＨＴＭトランザクションに関連する書き込みオペレーションを不揮発性メモリにロギングするようにさらに構成される。
【００１８】
第１の態様の第３の実装形式によれば、データ処理システムは、ＨＴＭトランザクションのコミット成功より前に、ＨＴＭトランザクションに関連する書き込みオペレーションのログを不揮発性メモリにトランスペアレントにフラッシュすることによって、ＨＴＭトランザクションに関連する書き込みオペレーションを、不揮発性メモリにロギングするように構成される。
【００１９】
第１の態様の第４の実装形式によれば、データ処理システムは、ＨＴＭトランザクションに関連する書き込みオペレーションのログが不揮発性メモリに存在し、ＨＴＭトランザクションがロギング状態にある場合には、データ処理システムのリスタートの際に、ロギングを再実行し、詳細には、インジケータを設定し、トランザクションの再実行が完了した場合には、ＨＴＭトランザクションを非ロギング状態に設定し、詳細には、インジケータを設定解除する。
ように構成されるリカバリユニットをさらに備える。
【００２０】
第１の態様の第５の実装によれば、データ処理システムは、ＨＴＭトランザクションのコミット成功の後で、ＨＴＭのオペレーションによって書き込まれたデータを、キャッシュメモリから不揮発性メモリにフラッシュするようにさらに構成される。
【００２１】
第１の態様の第６の実装形式によれば、データ処理システムは、ＨＴＭトランザクションのコミット成功の後で、ＨＴＭトランザクションを非ロギング状態に設定し、詳細には、インジケータを設定解除するようにさらに構成される。
【００２２】
第１の態様の第７の実装によれば、データ処理システムは、ＨＴＭトランザクションをアボートすることなく、ＨＴＭのオペレーションによって書き込まれたデータを、キャッシュメモリから不揮発性メモリにトランスペアレントにフラッシュするようにさらに構成される。
【００２３】
第１の態様の第８の実装形式によれば、ＨＴＭトランザクションのコミット成功を示すインジケータは、ＨＴＭトランザクション識別子、詳細には、コミット記録を含む。
【００２４】
第２の態様によれば、ハードウェアトランザクションメモリ（ＨＴＭ）トランザクションを実行するためのデータ処理方法は、ＨＴＭトランザクションのコミット成功を示すインジケータを不揮発性メモリに書き込むことによって、ＨＴＭトランザクションのコミットに関するアトミックなＨＴＭの書き込みオペレーションを実行する段階を備える。
【００２５】
第２の態様の第１の実装形式は、ＨＴＭトランザクションのコミット成功より前に、ＨＴＭトランザクションに関連する書き込みオペレーションのログを不揮発性メモリにトランスペアレントにフラッシュすることによって、ＨＴＭトランザクションに関連する書き込みオペレーションを不揮発性メモリにおいて実行する段階を備える。
【００２６】
第２の態様の第２の実装形式は、ＨＴＭトランザクションに関連する書き込みオペレーションのログが不揮発性メモリに存在し、ＨＴＭトランザクションがロギング状態である場合には、データ処理システムのリスタートの際に、ロギングを再実行し、詳細には、インジケータを設定し、トランザクションの再実行が完了した場合には、ＨＴＭトランザクションを非ロギング状態に設定し、詳細には、インジケータを設定解除する段階を備える。
【００２７】
第２の態様の第３の実装形式は、ＨＴＭトランザクションのコミット成功の後で、ＨＴＭのオペレーションによって書き込まれたデータを、キャッシュメモリから不揮発性メモリにフラッシュする段階を備える。
【００２８】
第２の態様の第４の実装形式は、ＨＴＭトランザクションのコミット成功の後で、ＨＴＭトランザクションを非ロギング状態に設定し、詳細には、インジケータを設定解除する段階を備える。
【００２９】
第２の態様の第５の実装形式は、ＨＴＭトランザクションをアボートすることなく、ＨＴＭのオペレーションによって書き込まれたデータを、キャッシュメモリから不揮発性メモリにトランスペアレントにフラッシュする段階を備える。
【００３０】
本発明の第３の態様によれば、コンピュータプログラムコードは、コンピュータ上で実行された場合に、第２の態様又はその実装形式のデータ処理方法を実行する。
【図面の簡単な説明】
【００３１】
本発明のさらなる実施形態が、以下の図に関連して説明される。
【図１】実施形態に係るデータ処理システムの模式図を示す。
【図２】実施形態に係るデータ処理方法の模式図を示す。
【図３】実施形態に係るデータ処理システムの状態図を示す。
【図４】実施形態に係るデータ処理システムの異なる態様を示し、各段階の実装に関する詳細を提供する模式図を示す。
【発明を実施するための形態】
【００３２】
以下の詳細な説明において、開示の一部を形成し、例示により、本開示が実施可能な具体的態様が示される添付図面が参照される。他の態様が利用されてよく、構造的又は論理的変更が、本開示の範囲から逸脱することなく実行可能であることを理解されたい。以下の詳細な説明は、従って、限定する意味でとらえられるべきものではなく、本開示の範囲は、添付の特許請求の範囲によって規定される。
【００３３】
説明される方法に関する開示は、方法を実行するように構成される対応デバイス又はシステムにも適用されてよく、逆もまた同様であることを理解されたい。例えば、具体的な方法の段階が説明される場合、対応デバイス又はシステムは、このようなユニットが明示的に説明又は図示されていないとしても、説明される方法の段階を実行するユニットを含んでよい。さらに、本明細書で説明される様々な例示的態様の特徴は、具体的にそうでないことが示されない限り、互いに組み合わせられてよいことを理解されたい。
【００３４】
図１は、実施形態に係るデータ処理システム１００の模式図を示す。データ処理システム１００は、ハードウェアトランザクションメモリ（ＨＴＭ）トランザクションを実行するように構成される。データ処理システム１００は、データを持続的に格納するためのバイトアドレス指定可能な不揮発性メモリ１０１と、プロセッサ１０３と、を含む。プロセッサ１０３は、ＨＴＭトランザクションのコミット成功を示すインジケータを不揮発性メモリに書き込むことによって、ＨＴＭトランザクションのコミットに関するアトミックなＨＴＭの書き込みオペレーションを実行するように構成される。実施形態において、インジケータは、ＨＴＭトランザクションのコミットにおける不揮発性ビットであってよい。
【００３５】
不揮発性メモリ（ＮＶＭ又はＮＶＲＡＭ）は、バイトアドレス指定可能なメモリである。これは、耐久性が高い、すなわち、メモリのデータは、電力障害の間、持続的である。実施形態によれば、ログ記録（コミット成功インジケータを含む）及びアプリケーションデータは、ＮＶＭにおいて維持される。
【００３６】
実施形態によれば、ＨＴＭトランザクションは、それ自体又は他の進行中のトランザクションをアボートすることなく、ＮＶＭにおいて、ログ記録を書き込み、ログ記録及びアプリケーションデータの両方をフラッシュする必要がある。これは、ＨＴＭシステムにトランスペアレントな、特別なタイプのフラッシュ命令を必要とし、我々は、これをトランスペアレントフラッシュ（ＴＦ）と命名した。主要ベンダの現在のアーキテクチャは、キャッシュからフラッシュされたアドレスを排除しないフラッシュ命令を用い、これらにＴＦメカニズムを実装できる可能性がある。例えば、Ｘ８６マイクロアーキテクチャにおいて、ＴＳＸブロックを伴うＨＴＭトランザクションを動作させるスレッドは、ログ記録をキャッシュに書き込み、次に、ログ記録をＮＶＭにおけるログ記録エリアにフラッシュするＣＬＷＢ命令を用いる。
【００３７】
リカバリプロセスは、マシンがリスタートした後で、ＮＶＭからコミットインジケータを読み出す。トランザクションが成功したものの、なおロギング状態であることを意味する真に、コミットインジケータが設定されている場合、リカバリプロセスは、適宜、ログ記録を読み出し、アプリケーションデータエリアに書き込む。
【００３８】
実施形態によれば、インジケータは、図４におけるコミット記録によって実装されてよい。コミット成功は、トランザクション書き込みが、システムにおける全ての処理ユニットに対してアトミックに可視化されているポイントである。
【００３９】
実施形態において、プロセッサ１０３は、複数のキャッシュライン１０６によってキャッシュメモリ１０５に連結され、キャッシュメモリ１０５は、キャッシュコヒーレンスなプロトコルを用いてデータをキャッシュするために、プロセッサ１０３によって用いられるように構成される。
【００４０】
実施形態において、データ処理システム１００は、ログ記録を不揮発性メモリ１０１のログ記録エリアに形成し、ＨＴＭトランザクションに関連するキャッシュデータの書き込みオペレーションを、ログ記録エリアにロギングするようにさらに構成される。ログ記録のデータ構造は、図４を参照可能であり、例えば、Ｃｏｍｍｉｔ  Ｒｅｃｏｒｄ、Ｓｅｌｆ＿ｉｄ、Ｓｉｚｅ及び＜ＤＡＴＡ，ＡＤＤＲ＞タプルを含む。Ｃｏｍｍｉｔ  Ｒｅｃｏｒｄは、持続的なコミット成功のインジケータである。Ｓｅｌｆ  ＩＤは、トランザクション固有の識別子である。＜ＤＡＴＡ，ＡＤＤＲ＞タプル：トランザクションによって書き込まれた、単一のキャッシュラインのデータ及びアドレスのログ記録である。Ｓｉｚｅは、１つのトランザクションにおけるログ記録の数である。
【００４１】
実施形態において、データ処理システム１００は、ＨＴＭトランザクションのコミットより前に、ＨＴＭトランザクションに関連するキャッシュデータの書き込みオペレーションのログを、不揮発性メモリ１０１にトランスペアレントにフラッシュすることによって、ＨＴＭトランザクションに関連するキャッシュデータの書き込みオペレーションを、ログ記録エリアにロギングするように構成される。トランスペアレントフラッシュは、キャッシュメモリ１０５及びＨＴＭシステムには不可視である。
【００４２】
実施形態において、データ処理システム１００は、Ｃｏｍｍｉｔ  Ｒｅｃｏｒｄが真に設定され、ＨＴＭのオペレーションに関連するログ記録のデータが不揮発性メモリ１０１に存在する場合には、データ処理システム１００のリスタートの際に、ロギングを再実行するように構成されるリカバリユニット１０７をさらに含む。ロギングの再実行は、システム障害、例えば、電力障害より前に、なおロギング状態にあり、不揮発性メモリ１０１にフラッシュされていない可能性のあるアプリケーションデータエリアを、ログ記録エリアから再書き込みすることを意味する。
【００４３】
実施形態において、データ処理システム１００は、ＨＴＭトランザクションのコミットの後で、ＨＴＭのオペレーションに関連する修正されたアプリケーションデータを、キャッシュから不揮発性メモリ１０１におけるアプリケーションデータエリアにフラッシュするようにさらに構成される。
【００４４】
実施形態において、データ処理システム１００は、ＨＴＭトランザクションのコミットより前に、キャッシュから図４に示される不揮発性メモリ１０１におけるログ記録エリアに、ＨＴＭのオペレーションに関連する修正されたアプリケーションデータをトランスペアレントにフラッシュし、ＨＴＭトランザクションのコミットの後で、ＨＴＭトランザクションをアボートすることなく、キャッシュから図４に示される不揮発性メモリ１０１におけるアプリケーションデータエリアに、ＨＴＭのオペレーションに関連する修正されたアプリケーションデータをトランスペアレントにフラッシュするようにさらに構成される。
【００４５】
実施形態において、ＨＴＭトランザクションのコミット成功を示すインジケータは、ＨＴＭトランザクションのコミット記録を含む。コミット記録は、ブーリアン変数であってよい。ここで、真の値は、トランザクションが成功裏にコミットされたことを意味する。コミット記録が設定される限り、トランザクションの書き込みは、ロギング状態にあり、リスタートにおいてリカバーされる。
【００４６】
図２は、実施形態に係る持続的なＨＴＭトランザクションの主な段階のフローチャートである。
【００４７】
これは、成功した持続的なＨＴＭトランザクションの全ての段階を示す。
１．ＨＴＭトランザクションを開始する。
２．アプリケーションデータをキャッシュに書き込み、これをＮＶＭのログ記録エリアにおけるログ記録にロギングする。
３．トランザクションを成功裏にコミットし、同時に、ＮＶＭのログ記録エリアにおけるコミット記録において、インジケータを真に設定する。
４．障害が発生しなかった場合、修正されたアプリケーションデータを、キャッシュからＮＶＭにおけるアプリケーションデータエリアにフラッシュする。
５．障害が発生した場合であって、インジケータが真である場合、リスタートにおいて、修正されたアプリケーションデータを、ＮＶＭのログ記録エリアからＮＶＭのアプリケーションデータエリアにおけるアプリケーションデータにコピーする。あるいは、インジケータが偽である場合、トランザクションを無視する。
６．ＮＶＭのログ記録エリアにおけるコミット記録において、インジケータを偽に設定する。
【００４８】
以下、データ処理システム１００及びデータ処理方法２００のさらなる実施形態及び実装形式が、以下の表記及び定義を用いて、より詳細に説明される。
【００４９】
例えば、プロセッサ１０３によって実行されるＨＴＭトランザクションは、Ｔｋと示される。データ処理システム１００のリスタートにより、データは整合性を有する状態となり、コミットされていないトランザクションの効果を除去し、コミットされたものの喪失した効果を適用する（Ｒｅｓｔａｒｔ）。トランザクションは、成功裏にコミットされた場合にファイナライズ（Ｆｉｎａｌｉｚａｔｉｏｎ）され、キャッシュにおけるその全ての書き込みが、ＮＶＭ１０１におけるアプリケーションデータエリアにフラッシュされ、コミット記録は、偽に設定される。従って、トランザクションは、その後リスタートが発生した場合には、無視される。αがキャッシュ１０５におけるメモリアドレスである場合、トランスペアレントフラッシュと称されるＴＦ（α）は、αを不揮発性メモリのアプリケーションデータエリア又はログ記録エリアのいずれかに書き込むが、これを無効化せず、キャッシュコヒーレンシには何ら影響を及ぼさない。
【００５０】
実施形態において、ＨＴＭトランザクションＴによって書き込まれた、ＮＶＭ１０１におけるデータ項目ｘ（アドレス指定可能ワード）の状態は、図３に示される以下の３つのキャラクタリスティックによって定義される。
（１）「Ｐｒｉｖａｔｅ」／「Ｓｈａｒｅｄ」：「Ｐｒｉｖａｔｅ」は、ｘが１つのスレッドのＬ１キャッシュにのみ存在し、他のスレッドには不可視であることを意味する。ｘが「Ｓｈａｒｅｄ」である場合、キャッシュコヒーレンスにより、その新たな値は可視となる。
（２）「Ｐｅｒｓｉｓｔｅｎｔ」／「Ｖｏｌａｔｉｌｅ」：「Ｐｅｒｓｉｓｔｅｎｔ」は、ｘの最後の書き込みがＮＶＭ１０１に存在することを意味する。あるいは、ｘの新たな値がキャッシュ１０５における「Ｖｏｌａｔｉｌｅ」であり、電力障害において消失することを意味する。
（３）「Ｌｏｇｇｅｄ」／「Ｃｌｅａｒ」：ｘが「Ｌｏｇｇｅｄ」である場合、リスタートにより、ｘは、不揮発性ログからリカバーされる。ｘが「Ｃｌｅａｒ」である場合、そのログ記録がファイナライズされている、又はそのトランザクションが成功裏にコミットされていないので、リスタートは、ｘに関与しない。
【００５１】
図３は、本願に係るデータ処理システム、例えば、図１に示されるデータ処理システム１００によって実行可能なＨＴＭトランザクションにおける、単一の書き込みのステートマシンを示す。実施形態によれば、メカニズムは、＜「Ｐｒｉｖａｔｅ」，「Ｃｌｅａｒ」＞の＜「Ｓｈａｒｅｄ」，「Ｌｏｇｇｅｄ」＞への移行をアトミックにし、＜「Ｖｏｌａｔｉｌｅ」＞の＜「Ｐｅｒｓｉｓｔｅｎｔ」＞への移行が、その項目を読み出す同時ＨＴＭトランザクションをアボートしないことを可能とする。概して、「Ｌｏｇｇｅｄ」キャラクタリスティックは、ＨＴＭトランザクション全体に適用される。単一のトランザクションの全ての書き込みを、「Ｃｌｅａｒ」から「Ｌｏｇｇｅｄ」に移行させることは、単一の持続的な書き込みを必要とする。本願の実施形態に係るＨＴＭコミットにおいて、全ての書き込みがＨＴＭによって顕在化され、同時にロギングされる。実施形態において、各書き込みは、持続的なログ記録を生成するが、コミット成功まで、書き込みがリスタートプロセスによって再生されないという意味では、書き込みは、ロギングされていない。図４は、異なる段階におけるアクションの詳細なフローチャートである。
【００５２】
ＨＴＭトランザクションＴｋが変数ｘに書き込む場合、ｘは、Ｌ１キャッシュ、例えば、プロセッサ１０３の図１に示されるキャッシュ１０５において、トランザクション進行中としてマークされ、「ｐｒｉｖａｔｅ」、すなわち、プロセッサ１０３のＬ１キャッシュ１０５において排他的である。それがキャッシュ１０５にのみ存在すると、「ｖｏｌａｔｉｌｅ」であり、トランザクションがまだコミットされていないと、「ｃｌｅａｒ」である、すなわち、「ｌｏｇｇｅｄ」ではない。ｌｏｇｇｅｄではないということは、ｘがリスタートプロセスによって書き込まれないことを暗示する。データ処理システム１００のアボート又は電力障害の際、ｘの「ｖｏｌａｔｉｌｅ」及び「ｐｒｉｖａｔｅ」値は破棄され、以前のその「ｓｈａｒｅｄ」及び「ｐｅｒｓｉｓｔｅｎｔ」値に戻る。
【００５３】
実施形態において、ＨＴＭコミットにおいて、ｘの状態は、２回変化する。これは、「ｓｈａｒｅｄ」になる、すなわち、可視となり、同時に、「ｌｏｇｇｅｄ」でもある。実施形態において、両方の変化は、コミット成功の際に、アトミックに発生する。コミット成功の後で、ＨＴＭは、ｘの新たな値をＮＶＭ１０１にトランスペアレントにフラッシュし、ｘをクリアする。クリアすることは、第１に、コミット記録（インジケータ）を偽に設定し、第２の段階において、ログマークを設定解除することである。ログマークの役割は、アドレスがシステムにおける１つのトランザクションのみによってロギングされ、リスタートプロセスが、ＨＴＭトランザクションによってアドレスに書き込まれた最後の値によって、最大で一度、アドレスを書き込んだことを検証することである。ログマークは、実施形態であり、本特許における特許請求の範囲の一部ではない。ｘが「ｌｏｇｇｅｄ」である場合にシステム１００に障害が発生し、そのリスタートを実行する場合、プロセッサ１０３は、ｘのコミットされた値を、ＮＶＭのアプリケーションデータエリアにおけるｘのログ記録に書き込み、次に、ｘをクリアするように構成される。
【００５４】
実施形態において、ＮＶＭ１０１におけるログ記録は、典型的な連続ログではない。代わりに、これは、インフライトのトランザクション、又はＨＴＭによってコミットされたが、そのログ記録がまだリサイクルされていないトランザクションのうち、いずれかのみのログ記録を保持してよい。
【００５５】
当業者であれば理解するように、Ｌ１キャッシュ１０５が不揮発性であった場合、ＨＴＭは、何らさらなる修正がない場合にそうであるように、持続的であろう。リスタートイベントは、インフライトのトランザクションをアボートすることがあり、コミットされたＨＴＭトランザクションは、キャッシュ１０５にある間、直ちに持続的となり、何らロギングを必要としないであろう。しかしながら、ハードウェアの制限、例えば、ＮＶＭ１０１の高速消耗及び低速書き込みに起因して、キャッシュ階層は、予見可能な将来のために、揮発性ＳＲＡＭに留まる。
【００５６】
図３に示されるように、実施形態において、トランザクションＴｋのコミット成功は、図４に示されるように、自動的に、インジケータ、すなわち、Ｔｋのコミット記録を真に設定する。実施形態において、これは、「ｔｘ＿ｅｎｄ＿ｌｏｇ（Ｔｋ）」命令を用いて、プロセッサ１０３によって実装されてよい。この命令は、ＨＴＭコミットを実行し、Ｔｋのコミット記録を設定する。図４は、実施形態に係るＮＶＭ１０１におけるトランザクションＴｋの持続的なフットプリントのレイアウトを模式的に示す。ここには、Ｔｋのコミット記録として機能し得る「ｌｏｇｇｅｄ」が示される。命令「ｔｘ＿ｅｎｄ＿ｌｏｇ（Ｔｋ）」は、コミット記録をＮＶＭ１０１に書き込み、さらに、Ｔｋの書き込みステータスを「ｌｏｇｇｅｄ」に設定する。
【００５７】
実施形態において、プロセッサ１０３は、進行中のトランザクションをアボートすることなく、これらのトランザクションによって、修正されたデータをキャッシュ１０５からＮＶＭ１０３にフラッシュするように構成される。トランザクションＴのファイナライズ中、例えば、命令「ｔｘ＿ｅｎｄ＿ｌｏｇ（Ｔ）」の後、すなわち、ＨＴＭのコミットの後で、Ｔによってキャッシュ１０５からＮＶＭ１０３におけるアプリケーションデータエリアに書き込まれたアプリケーションデータをフラッシュすることは、この値を読み出す同時進行中のトランザクションをアボートしない。実施形態において、これらのフラッシュは、何らコヒーレンシ要求を生成せず、キャッシュ１０５のデータを無効化しない。このようなオペレーションは、キャッシュ階層及びＨＴＭサブシステムに影響を及ぼさないので、本明細書において、トランスペアレントフラッシュ（ＴＦ）と称される。
【００５８】
実施形態において、プロセッサ１０３は、ＨＴＭトランザクションを開始及びコミットする「ｔｘ＿ｓｔａｒｔ（）」及び「ｔｘ＿ｅｎｄ（）」関数を含むＡＰＩを、ＨＴＭトランザクションに提供してよい。非持続的なＨＴＭの実現は、このような関数を含む。持続的なＨＴＭにおいて、「ｔｘ＿ｓｔａｒｔ（）」は、揮発性における場合のように、ＨＴＭトランザクションを開始し、一方で、「ｔｘ＿ｅｎｄ（）」は、拡張され、トランザクションのログ記録をキャッシュからＮＶＭにおけるログ記録エリアにフラッシュする。続いて、「ｔｘ＿ｅｎｄ＿ｌｏｇ（Ｔ）」命令のようなＡＰＩから呼び出された同時ＨＴＭコミット及びインジケータ設定が実行される。続いて、アプリケーションデータ自体がキャッシュからＮＶＭにおけるアプリケーションデータエリアにフラッシュされる。実施形態において、マシンストア命令は、プリプロセッサによって、「ｔｘ＿ｗｒｉｔｅ（ａｄｄｒｅｓｓ，ｄａｔａ，ｓｉｚｅ）」関数のような関数と置換されてよい。ｔｘ＿ｗｒｉｔｅ関数は、ＮＶＭのログ記録エリアにおいて、例えば、非一時的書き込みによって、ログ記録を形成し、アプリケーションデータをアプリケーションデータのキャッシュに書き込む。実施形態において、図４に示されるＨＴＭトランザクションに出現するログ記録及びｓｉｚｅフィールドは、コミット命令の一部としてではなく、トランザクションの一部としてフラッシュされる。しかしながら、同じキャッシュラインに対する複数の書き込みは、同じログ記録への書き込みが可能である。従って、実施形態において、ログ記録は、同じデータの複数のフラッシュを防止すべく、コミット前に一度のみフラッシュされる。
【００５９】
実施形態において、プロセッサ１０３は、プロセッサ１０３が進行保証を付与しないという意味で、ベストエフォートポリシに従うように構成される。結果として、従来の揮発性ＨＴＭにおける特定数のアボートの後で、トランザクションは、グローバルロック及びコミットを実行しなければならない。しかしながら、ＮＶＭについて、一時的な書き込みが既にメモリを損なっていることがあるので、グローバルロックでは十分ではない。従って、実施形態において、揮発性ＨＴＭの書き込み毎に、実行取り消しログエントリが形成される。代替的な実施形態において、全ての再実行ログが、最初の値がＮＶＭ１０１に書き込まれる前に形成される。第１の実施形態は、書き込み後読み出しのオーバヘッドを低減する。
【００６０】
既に上述されたように、図１に示されるキャッシュ１０５のような揮発性キャッシュ、及びキャッシュにおけるその書き込みの全てに対応するコミットされたＨＴＭトランザクションによれば、実施形態において、プロセッサ１０３は、書き込みがなお揮発性であった場合に、リスタートがＨＴＭのコミット後に発生した場合のリカバリを可能するために、書き込みをロギングするように構成される。実施形態において、プロセッサ１０３は、ログへの全ての書き込みがＨＴＭのコミットより前にＮＶＭ１０１に到達する一方で、全てのトランザクションの書き込みが、キャッシュ１０５に留まるように構成される。実施形態において、プロセッサ１０３は、既に上述されたように、トランザクションの実行をアボートすることなく、すなわち、トランスペアレントに、ログをＮＶＭ１０１にフラッシュするように構成される。
【００６１】
実施形態において、プロセッサ１０３は、ロギングが、ロギングされた各変数ｘに対して最後にコミットされた値によるリスタートプロセスを提供可能であるように構成される。実施形態において、プロセッサ１０３は、バージョンをｘに付加するように構成される。実施形態において、プロセッサ１０３は、ｘがシステム１００において一度だけロギングされたことを検証するように構成される。複数のログにおけるｘの出現が許容される場合、ｘのログの最新バージョンが保持されなければならない。
【００６２】
実施形態において、各アドレスは、最大で１つのログにおける出現が許容される。複数のログに同じアドレスという例を回避すべく、実施形態において、各メモリアドレスが１つのマークにマッピングされる、ログマークの揮発性アレイが追加される。実施形態において、トランザクションがｘを書き込もうとする場合、これは、さらに、ｘをロギングされたものとしてマークする。実施形態において、ｘがフラッシュされるまで、いずれの他のトランザクションも、これに書き込むことを許容されない。実施形態において、マーク又はインジケータが用いられる理由は、既に他のトランザクションに書き込まれたものの、まだフラッシュされておらず、従って、なおロギングされている変数への書き込みを防止するためである。全ての他のコンフリクトは、ＨＴＭによって直接処理されてよい。実施形態において、リスタートの場合のように、ロギングされたアドレスは固有であり、リスタート及びリカバリプロセスは新たなログ記録を形成しないことが知られているので、マーク又はインジケータのアレイは、揮発性であってよい。実施形態によれば、リスタートの後で、マーク又はインジケータの新たな空のアレイが、割り当てられてよい。
【００６３】
実施形態において、マーク又はインジケータの書き込みは、トランザクションの一部である。すなわち、トランザクションＴｋがｘを書き込む場合、これは、さらにｘをマークする。コミットにおいて、書き込み及びマーキングは、これらが両方ともトランザクションの書き込みである場合は、同時に有効とされ、一方で、アボートにおいては、両方ともキャンセルされる。実施形態において、マークが設定される限り、Ｔｋのログに出現するｘの値は、変更不可能である。従って、ｘがキャッシュからＮＶＭ１０１におけるアプリケーションデータエリアにフラッシュされ、コミット記録が偽に設定された後で、マークは、設定解除されてよい。トランザクションのロード命令は、マークを無視してフルスピードで実行してよく、このことは、読み出されたトランザクションがハードウェアのスピードで処理されるので、本願に係るＨＴＭの主な利点であることを強調することが重要である。
【００６４】
図４は、実施形態に係るトランザクションＴのログ記録の持続的な構造を示す。実施形態において、Ｔは、図４に示されるように、ｔｘ＿ｅｎｄ＿ｌｏｇで設定されるブーリアン型のコミット記録を有する。実施形態において、コミット記録は、ＨＴＭコミットマイクロコードによって書き込まれ、そのため、利用可能な最速の不揮発性メモリに存在するはずである。実施形態において、トランザクションは、ｓｅｌｆ＿ｉｄに格納される固有ＩＤをさらに有する。実施形態において、トランザクションは、ログ記録のセットを有する。実施形態において、各ログ記録は、図４に示されるように、修正されたキャッシュラインにおけるデータ、及びシステムメモリにおける当該ラインのアドレスから構成される。実施形態において、データの最大合計サイズは、書き込まれたデータ、従って、ロギングされたデータの最大サイズであるＬ１キャッシュ１０５のサイズに等しい。実施形態において、ｓｉｚｅフィールドは、トランザクションのログにおけるログ記録の数である。実施形態において、ｓｉｚｅがゼロの場合はトランザクションがｌｏｇｇｅｄではないと仮定すると、ｌｏｇｇｅｄ及びｓｉｚｅはまとめられてよい。ただし、ここでは明確性のために、これらは別個に処理される。実施形態において、Ｔの、図４におけるログ記録エリアの全ては、一度だけＮＶＭ１０１にフラッシュされる。そのため、キャッシュラインが同じトランザクションにおいて複数回書き込まれた場合、このラインのデータは、Ｔのコミット前に、一度だけログにフラッシュされる。
【００６５】
実施形態において、ＮＶＭにおけるアプリケーションデータのアドレス及び対応データである、ログ記録におけるＤＡＴＡ．ＡＤＤＲフィールドは、リスタートプロセス又はファイナライズが、どのアドレス及びアプリケーションデータを書き込み又はフラッシュするかを認識することを可能とする。実施形態において、アドレスは、キャッシュのフラグメンテーションを回避すべく、別個のアレイに存在し、データには付随しない。実施形態において、アドレス自体のマッピングは、書き込みのインストルメンテーション及びファイナライズにおけるマークを占有及び解放するために用いられる。
【００６６】
開示の具体的な機能又は態様が、いくつかの実装又は実施形態の１つのみに関連して開示されたであろう一方で、このような機能又は態様は、あらゆる所与の又は具体的な用途にとって望ましく有利となり得るように、他の実装又は実施形態の１つ又は複数の他の機能又は態様と組み合わせられてよい。さらに、用語「含む」、「有する」、「伴う」、又はこれらの他の変形が詳細な説明又は特許請求の範囲のいずれかにおいて用いられる程度において、このような用語は、用語「備える」と類似した態様に含まれることが意図される。また、用語「例示的な」、「例えば（ｆｏｒ  ｅｘａｍｐｌｅ）」及び「例えば（ｅ．ｇ．）」は、最良又は最適であることを意味するのではなく、単に例であることを意味する。用語「連結」及び「接続」は、これらの派生語と共に用いられていてよい。これらの用語は、２つの要素が、直接物理的又は電気的な接触にあるか、又はこれらが互いに接触していないかに関わらず、これらが直接互いに協働又は相互作用することを示すために用いられたであろうことを理解されたい。
【００６７】
具体的態様が本明細書において図示及び説明されたが、当業者であれば、様々な変更及び／又は均等な実装が、本開示の範囲から逸脱することなく、図示及び説明された具体的態様の代わりに用いられ得ることが理解されよう。本願は、本明細書において説明された具体的態様のあらゆる応用形態又はバリエーションを包含することを意図するものである。
【００６８】
以下の特許請求の範囲の要素は、対応する符号と共に、特定の順序で記載されているが、特許請求の範囲の記載が、これらの要素のいくつか又は全てを実装するための特定の順序を暗示しない限り、これらの要素が当該特定の順序で実装されるように限定することを必ずしも意図するものではない。
【００６９】
多数の代替形態、修正形態、及びバリエーションが、上述の教示に鑑れば、当業者には明らかであろう。勿論、当業者であれば、本発明の多数の応用形態が本明細書において説明されたものを越えて存在することを容易に認識する。本発明は、１つ又は複数の具体的実施形態に関連して説明されたが、当業者であれば、多数の変更が、本発明の範囲から逸脱することなくなされ得ることを認識する。従って、添付の特許請求の範囲及びこれらの均等物の範囲内において、本発明は、本明細書において具体的に説明された以外の態様で実施され得ることを理解されたい。
【図１】
0006491348.tif 000002
【図２】
0006491348.tif 000003
【図３】
0006491348.tif 000004
【図４】
0006491348.tif 000005