(57)【要約】  トランザクションメモリのオブジェクトモデルを提供するための様々な技術や手法が開示されている。トランザクションメモリのオブジェクトモデルによって、トランザクションセマンティックスはプログラムの流れから切り離される。オブジェクトモデルを用いて作られたメモリトランザクションオブジェクトはインスタンス化した実行スコープを超えて存在でき、メモリトランザクションに関する付加的な詳細を提供し、制御できるようになった。トランザクションメモリ構造が直接表れていないプログラミング言語からもトランザクションメモリをサポートできる。これは、一つ以上のベースクラスライブラリにおいてオブジェクトモデルを定義し、直接はトランザクションメモリをサポートしていないプログラミング言語をオブジェクトモデルを通じてトランザクションメモリを使用できるようにしたことによって可能になった。
2010532048.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実行可能命令を有するコンピュータ可読媒体であって、
前記トランザクションメモリにオブジェクトモデルを提供するステップであって、前記オブジェクトモデルがトランザクションシンタックスをプログラムの流れから切り離すステップ（２０６）
をコンピュータに実行させることを特徴とするコンピュータ可読媒体。
【請求項２】
前記オブジェクトモデルは、トランザクションメモリ構造が明確でないプログラミング言語でトランザクションメモリをサポートすることができる（２０８）ことを特徴とする、請求項１に記載のコンピュータ可読媒体。
【請求項３】
前記オブジェクトモデルは、フレームワークの一つ以上のベースクラスライブラリに実装されている（２９２）ことを特徴とする、請求項１に記載のコンピュータ可読媒体。
【請求項４】
前記オブジェクトモデルは、前記オブジェクトモデルから作られたメモリトランザクションオブジェクトがインスタンス化された実行範囲を超えることを可能にするように実行される（２７６）ことを特徴とする、請求項１に記載のコンピュータ可読媒体。
【請求項５】
前記オブジェクトモデルは、トップレベルトランザクションを作成するためのコンストラクタを提供する（３１４）ことを特徴とする、請求項１に記載のコンピュータ可読媒体。
【請求項６】
前記オブジェクトモデルは、ネストされたトランザクションを作成するためのコンストラクタを提供する（３１６）ことを特徴とする、請求項１に記載のコンピュータ可読媒体。
【請求項７】
前記オブジェクトモデルは、トランザクションの読み書きを実行するための方法を提供する（３１８）ことを特徴とする、請求項１に記載のコンピュータ可読媒体。
【請求項８】
前記オブジェクトモデルは、トランザクション制御のための方法を提供する（３２０）ことを特徴とする、請求項１に記載のコンピュータ可読媒体。
【請求項９】
トランザクションメモリのオブジェクトモデルを提供するための方法であって、
トランザクションメモリにオブジェクトモデルを提供するステップであって前記オブジェクトモデルがトランザクションセマンティックスをプログラムの流れから切り離すことができるステップ（２７４）と、
前記オブジェクトモデルを用いて作られたメモリトランザクションオブジェクトがインスタンス化した実行スコープを超えることを可能にし、その結果前記メモリトランザクションの付加的な特性を操作できるようにするステップ（２７６）と
を備えたことを特徴とする方法。
【請求項１０】
前記付加的な特性は、一つ以上の前記トランザクションの最新のステートを含む（２７６）ことを特徴とする、請求項９に記載の方法。
【請求項１１】
前記付加的な特性は、一つ以上の前記トランザクションの使用形態の統計を含む（５０４）ことを特徴とする、請求項９に記載の方法。
【請求項１２】
前記付加的な特性は、一つ以上の前記トランザクションの診断の統計を含む（５０４）ことを特徴とする、請求項９に記載の方法。
【請求項１３】
前記付加的な特性は、一つ以上の前記トランザクションの、前もって記録されたトランザクションステートを含む（５０６）ことを特徴とする、請求項９に記載の方法。
【請求項１４】
前記付加的な特性は、デバッギング作業を補助するためにデバッガに提供される（５０８）ことを特徴とする、請求項９に記載の方法。
【請求項１５】
前記付加的な特性は、一つ以上の前記トランザクションの、前もって記録されたトランザクションステートを含む（５０６）ことを特徴とする、請求項１４に記載の方法。
【請求項１６】
前記付加的な特性は、一つ以上の前記トランザクションの最新のトランザクションステートを含む（５０２）ことを特徴とする、請求項１４に記載の方法。
【請求項１７】
請求項９で述べられているステップ（２００）をコンピュータに実行させるための、コンピュータ実行可能命令を有するコンピュータ可読媒体。
【請求項１８】
トランザクションメモリ構造が直接的に明確でないプログラミング言語でトランザクションメモリにサポートを提供する方法であって、
少なくとも一つのベースクラスライブラリにおいてトランザクションメモリのオブジェクトモデルを定義するステップ（２９２）と、
直接的にトランザクションメモリをサポートしていないプログラミング言語を前記オブジェクトモデルを通じてトランザクションメモリを使用できるようにするステップ（２９４）と
を備えたことを特徴とする方法。
【請求項１９】
前記オブジェクトモデルは、前記プログラミング言語がメモリトランザクションオブジェクトを宣言し使用できるようにする（２９４）ことを特徴とする、請求項１８に記載の方法。
【請求項２０】
請求項１８で述べられているステップ（２００）をコンピュータに実行させるための、コンピュータ実行可能命令を有するコンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
着実に時間とともにコンピュータは、進化した処理を行うための処理能力とメモリの増加とともに、ますます強力になっている。この傾向は最近は、増加の一途をたどるシングルプロセッサクロックレートに集中していたことから離れ、単一のコンピュータ中のプロセッサの数の増加へ転換している。ソフトウェア開発者はコンピュータ処理能力の進化を利用し、新しいハードウェアが導入されるのに合わせてソフトウェアプログラムをより早く実行させることができることを望んでいる。しかしながら、新しいハードウェアの傾向とともに、このことは異なるアプローチを要求している。つまり、開発者は、特定のソフトウェアのプログラムの一つ以上のタスクを「同時に」（時には「並列に」と呼ばれる）実行されるように改良しなければならず、同じ論理の操作が多数のプロセッサを同時に活用でき、より多くのプロセッサがコンピュータに加わるとともにこのようなソフトウェアが実行されより高い能力を生み出すことができる。
【０００２】
トランザクションメモリは、アトミック性とプログラムコードの領域からの独立を提供することで並列プログラムの開発を簡単にするように設計されている。トランザクションメモリ（TM）は、並列コンピュータ中の共有メモリへのアクセスを制御するためのデータベーストランザクションに類似した、同時制御メカニズムである。トランザクションメモリのコンテクストにおけるトランザクションは、共有メモリの読み書きの一連の作業を実行するコードの一部である。TMは従来のロッキングメカニズム代替手段として使用される。TMにより並列プログラムをより単純に書けるようになった。トランザクションは、独立して実行しているかのように実行するようサポートされているコードのシーケンスを特定している。この独立しているという錯覚は、オブジェクトのきめ細かいロッキングと、トランザクションがいくつかのほかのトランザクションと食い違っていることがわかったときトランザクションの結果が元に戻ることができるモードを実行することによって得られる。これらのロッキングとロールバックメカニズムによってアクセスが保護されたとき、データアクセスは「トランザクトされた」と呼ぶ。
【０００３】
存在しているトランザクションメモリシステムは、トランザクションを定義する単純な言語を使用する。これらトランザクションは、以下に示す例のように、コードのアトミックブロックの開始と終了を宣言するスコープベースの言語構造を通じて暗にインスタンスされている。
【０００４】
Atomic
{
…statements to execute in the transaction go here…
}
【０００５】
トランザクションメモリへの現在のアプローチは、トランザクションがプログラムの流れの特定の部分に固定されることを要求していて、明らかなトランザクションセマンティックスと関連する構造を含むようにアップグレードされたプログラミング言語によってのみサポートされている。
【発明の概要】
【０００６】
トランザクションメモリのオブジェクトモデルを提供するための様々な技術や手法が公表されている。トランザクションメモリのオブジェクトモデルによって、トランザクションセマンティックスはプログラミング言語のスコーピングルールから切り離される。オブジェクトモデルを用いて作られたメモリトランザクションオブジェクトは、従来のアトミックブロックに関係している名目上のスコープを超えて存在でき、スコープベースのアトミックブロックに比べて新しい利用モデルと付加的な機能を可能とした。
【０００７】
一実施形態において、トランザクションメモリ構造を直接サポートしていないプログラミング言語からもトランザクションメモリセマンティックスをサポートできる。これは、一つ以上のベースクラスライブラリにおいてオブジェクトモデルを定義し、直接はトランザクションメモリをサポートしていないプログラミング言語をオブジェクトモデルを通じてトランザクションメモリを使用できるようにしたことによって可能になった。
【０００８】
この要約は、以下の発明の詳細な説明の中で詳しく述べられている考え方を選出したものを簡単な形式で紹介するものである。この要約は、クレームされた発明の対象を述べることを意図したものでも、クレームされた発明の対象の範囲を決定することを補助するために使用されることを意図したものでもない。
【図面の簡単な説明】
【０００９】
【図１】一実施形態のコンピュータシステムを示す線図である。
【図２】図１のコンピュータシステムで実行されている、一実施形態のトランザクションメモリフレームワークの応用の線図である。
【図３】一実施形態としてメモリトランザクションのオブジェクトモデルをベースクラスライブラリにおいて実行できることを説明する線図である。
【図４】トランザクションメモリのオブジェクトモデルの提供に関係した段階を説明した、図１のシステムの一実施形態のフローチャート図である。
【図５】トランザクションメモリ構造が顕在化されていない言語でもトランザクションメモリをサポートすることに関係した段階を説明した、図１のシステムの一実施形態のフローチャート図である。
【図６】一実施形態のメモリトランザクションクラスの骨格の定義の一例を説明した図である。
【図７】オブジェクトモデルを通じて、メモリトランザクションを宣言し使用する一実施例のいくつかの典型的なソースコードを示した図である。
【図８】トランザクション内で他のスレッドを開始し実行を助けることに関係した段階を説明した、図１のシステムの一実施例におけるフローチャート図である。
【図９】一つのトランザクションを実行するのに役立つマルチスレッドを含む一つのトランザクションを作成するオブジェクトモデルを使用するためのいくつかの典型的なソースコードを説明した図である。
【図１０】トランザクションを一時停止ししばらくしてから再開することに関係した段階を説明した、図１のシステムの一実施例におけるフローチャート図である。
【図１１】トランザクションを一時停止し、しばらくしてから再開するいくつかの典型的なソースコードを説明した図である。
【図１２】トランザクションメモリをサポートするためのオブジェクトモデルを用いることによって強化されたトランザクションの機能を提供することに関係した段階を説明した、図１のシステムの一実施例におけるフローチャート図である。
【発明を実施するための形態】
【００１０】
発明の本質の理解を深めるために、図で説明されている実施形態について言及し、同様のものを述べるために固有の言語を使用する。とはいうものの、範囲の限定を意図するものではない。記述されている実施形態のいかなる変更と更なる修正、およびここで述べられている本質の更なる応用は当業者が通常実施できる程度に予期される。
【００１１】
システムは、トランザクションメモリのオブジェクトモデルを提供するフレームワークとして通常のコンテキストによって記述してもよいが、システムはこれらに加えて他の目的も果たす。一実施形態において、ここで述べる一つ以上の手法は、MICROSOFT（登録商標）.NET、JavaVirtualMachine、またはトランザクションメモリシステムを使用して実行されているアプリケーションのためのプラットホームを提供するほかのいかなるタイプのプログラムまたはサービスなどのフレームワークまたはプラットホーム中で特徴として実施される。
【００１２】
図１に示すように、システムの一つ以上のパーツを実装した典型的なコンピュータシステムはコンピュータデバイス１００などのコンピュータデバイスを含む。その最も基本的な構成において、コンピュータデバイス１００は一般的に少なくとも一つの処理ユニット１０２とメモリ１０４を含む。正確な構成とコンピュータデバイスのタイプによって、メモリ１０４は（RAMなどのように）揮発性、（ROM、フラッシュメモリなどのように）不揮発性、またはそれらを組み合わせたものとすることができる。この最も基本的な設定は図１の点線１０６で示されている。
【００１３】
加えて、デバイス１００は付加的な特徴／機能を備えることができる。例えば、デバイス１００は、磁気、または光ディスク、またはテープを含むが限定はされない（取り外し可能、かつ／または取り外し不可能な）付加的な記憶装置を備えていることができる。このような付加的な記憶装置は、図１に取り外し可能な記憶装置１０８および取り外し不可能な記憶装置１１０として示されている。コンピュータ記憶媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュールまたは他のデータなどの情報を保存するための、どのような方法または手法によっても実装される、揮発性と不揮発性、取り外し可能と取り外し不可能である媒体を含んでいる。メモリ１０４、取り外し可能な記憶装置１０８および取り外し不可能な記憶装置１１０は全てコンピュータ記憶媒体の例である。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD-ROM、デジタル多用途ディスク（DVD）または他の光記憶媒体、磁気カセット、磁気テープ、磁気ディスク記憶媒体または他の磁気記憶媒体、または目的とする情報を記憶しデバイス１００からアクセスできる、他のいかなる媒体を含むが限定はされない。いかなるこのようなコンピュータ記憶媒体はデバイス１００の一部とすることができる。
【００１４】
コンピュータデバイス１００は、コンピュータデバイス１００がほかのコンピュータ／アプリケーション１１５と通信できるようにするための一つ以上の通信接続１１４を備えている。デバイス１００はキーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス１１２を備えることもできる。ディスプレイ、スピーカー、プリンタなどの出力デバイス１１１も含まれることもある。これらのデバイスは技術的によく知られていて、ここでは詳細に説明する必要はない。一実施形態において、コンピュータデバイス１００はトランザクションメモリフレームワークの応用２００を含む。トランザクションメモリフレームワークの応用２００は図２の中でより詳細に述べる。
【００１５】
図１をもとに、図２に、コンピュータデバイス１００上で作動しているトランザクションメモリフレームワークの応用２００を示す。トランザクションメモリフレームワークの応用２００は、コンピュータデバイス１００に備えられているアプリケーションプログラムのうちの一つである。しかし、トランザクションメモリフレームワークの応用２００を、代替的にまたは付加的に一つ以上のコンピュータ上でコンピュータの実行可能命令化、および／または図1に示した構成と異なる応用により具体化することができる。代替的にまたは付加的に、他のコンピュータ上および／またはアプリケーション１１５、またはコンピュータソフトウエア技術で生じるほかの方法で、トランザクションメモリフレームワークの応用２００の一つ以上のパーツをシステムメモリ１０４の一部にすることができる。
【００１６】
トランザクションメモリフレームワークの応用２００は、ここで述べるいくつかの、または全ての手法を実行するプログラム論理２０４を含んでいる。プログラム論理２０４は、プログラムの流れからトランザクションシンタックスを切り離したトランザクションメモリのオブジェクトモデルを提供する論理２０６；オブジェクトモデルを使用してトランザクションメモリを構成していることが明白でないプログラミング言語でトランザクションメモリをサポートするための論理２０８；オブジェクトモデルを使用してトランザクションメモリシステムにおいてトランザクションの改良されたプログラミングが可能であることをサポートする論理２１０；トランザクションを作成し管理するために、オブジェクトモデルを使用して改良されたトランザクション制御を提供する論理２１２；およびアプリケーションを実行するためのほかの論理２２０を含んでいる。一実施形態において、プログラム論理２０４は、プログラム論理２０４の中の手順を一回呼び出すのに使用するなど、他のプログラムからプログラムで呼び出して実行することができる。
【００１７】
図３はメモリトランザクションのオブジェクトモデルを、仮想マシン２５０で使用される一つ以上のベースクラスライブラリ２４８に実装することができることを示す線図２４０である。多種の言語（２４２、２４４および２４６）が、それぞれが言語内で直接メモリトランザクション構造をサポートしているかどうかに関わらず、オブジェクトモデルにアクセスすることができる。
【００１８】
図１−２をもとに、図４−１２に、トランザクションメモリフレームワークの応用２００の一つ以上の実装を実施するための手順をより詳しく示す。いくつかの実施形態において、図４−１２の処理は、コンピュータデバイス１００の実行論理において少なくとも部分的に実装されている。図４は、トランザクションメモリのオブジェクトモデルを提供することに関係のある手順の一実施形態を示している。処理はトランザクションメモリのオブジェクトモデルを提供しながら開始地点２７０から始まる（段階２７２）。オブジェクトモデルを通じて、トランザクションシンタックスはプログラムの流れから切り離される（段階２７４）。宣言されたスコープの実行の範囲を超えて存在するオブジェクトモデルを用いて、メモリトランザクションオブジェクトを作成できる（段階２７６）。この拡張された存続期間は付加的な特徴を、これ以後詳しく説明するが、提供する。処理は終了地点２７８で終了する。
【００１９】
図５は、トランザクションメモリ構造が明らかでない言語からでもトランザクションメモリのサポートを提供することに関係した段階の一実施形態を示している。処理は一つ以上のベースクラスライブラリにおいてトランザクションメモリのオブジェクトモデルの定義を提供しながら開始地点２９０から始まる（段階２９２）。システムは、トランザクションメモリをサポートする言語、しない言語どちらの言語にも、ベースクラスライブラリにおいてオブジェクトモデルを通じてトランザクションメモリを使用させる（段階２９４）。処理は終了地点２９６で終了する。
【００２０】
図６は一実施形態のメモリトランザクションクラスの骨格の定義の一例を説明した図３１０である。図６のメモリトランザクションクラス３１２はトップレベルのメモリトランザクション３１４、ネストされたメモリトランザクション３１６の定義、トランザクションに読み書きする様々なメソッド３１８、トランザクションを制御するメソッド３２０、現在の環境のトランザクションの階層を戻すプロパティ３２２、およびスレッドローカル値３２４を示している。後の図で詳しく述べるように、オブジェクトモデルを用いたトランザクションメモリを提供することによって、プログラムの流れに縛られないという付加的な特徴と強化を得ることができる。
【００２１】
図７はオブジェクトモデルからメモリトランザクションを宣言し使用する一実施例のいくつかの典型的なソースコードを示した図３４０である。挙げられている例では、新しいメモリトランザクションが宣言され、書き込むメソッドやコミットするメソッドなど、オブジェクト上の様々なメソッドが呼び出されている。
【００２２】
図８は他のスレッドを開始し実行を助けることに関係した段階を説明した一実施例の図である。処理はトランザクションを宣言し開始するためにトランザクションメモリを用いながら開始地点３７０から始まる（段階３７２）。次のスレッドが起動され（段階３７４）トランザクションに加わる（段階３７６）。処理は終了地点３７８で終了する。
【００２３】
図９は一つのトランザクションを実行するのに役立つマルチスレッドを含む一つのトランザクションを作成するオブジェクトモデルを使用するためのいくつかの典型的なソースコードを説明した図４００である。挙げられている例では、メモリトランザクション４０２が作成され、作業する部分の実行を支援することができる新しいスレッド４０４が開始される。
【００２４】
図１０はトランザクションを一時停止ししばらくしてから再開することに関係した段階の一実施例を説明した図である。処理はトランザクションメモリオブジェクトモデルを提供しながら開始地点４３０から始まる（段階４３２）。システムはトランザクションを開始し（段階４３４）、次に同じトランザクションを一時停止する（段階４３６）。システムは、のちに一時停止したトランザクションを再開できるように、そのトランザクションのスナップショットを撮る（段階４３８）。次にシステムは、スナップショットよりも後の時間に、一時停止されていたトランザクションを再開する（段階４４０）。処理は終了地点４４２で終了する。
【００２５】
図１１は図１０の段階をさらに説明するためのいくつかの典型的なソースコードを説明した図４６０である。挙げられている例では、トランザクションは一時停止されていて、トランザクションオブジェクトのスナップショットは撮られ、その後にトランザクションは再開される。
【００２６】
図１２は、トランザクションを作成するためにオブジェクトモデルを使用することによって強化されたトランザクションの詳細を提供することに関係した段階の一実施形態を説明した図である。これらの段階がフローチャートに記述されてはいるが、これらの機能に特別な順番は意図されていない。そのうえ、オブジェクトモデルを使用すると、図１２に記載されているよりも、いくつかの、全ての、および／または付加的な機能をサポートすることができる。処理はオブジェクトモデルのイントロスペクションをサポートして、トランザクションの現在のステートを得られるようにしながら開始地点５００から始まる（段階５０２）。システムは、使用するパターンの統計とトランザクションの診断とを問い合わせる能力をサポートする（段階５０４）。例えば、あるトランザクションへ書かれたデータを計算することができる。システムは、トランザクションが実行したとして獲得された一つ以上の値を解析するなど、前もって獲得したトランザクションステートを処理することをサポートする（５０６）。システムは最新の、および／または前もって保存したトランザクションステートをデバッギングに役立つようにデバッガーに提供することができる（段階５０８）。処理は終了地点５１０で終了する。
【００２７】
発明の対象は構造の特徴および／または方法論的な方法に特定して記述してきたが、添付の特許請求の範囲の中で定義されている発明の対象はここまでに記述された特定の特徴または方法に限定されない。正しくは、ここまでに記述された特定の特徴または方法は特許請求の範囲を実行する例として開示されている。ここで、および／または後に挙げる特許請求の範囲に述べられている実施形態の精神に基づく全ての同等な事柄、変更点、修正点は保護されることを強く希望する。
【００２８】
コンピュータソフトウェアにおいて通常の技術を持つ者であれば、ここで議論されている例は一つ以上のコンピュータで異なる形態で組織化することができると認識できるであろう。
【図１】
2010532048.tif 000003
【図２】
2010532048.tif 000004
【図３】
2010532048.tif 000005
【図４】
2010532048.tif 000006
【図５】
2010532048.tif 000007
【図６】
2010532048.tif 000008
【図７】
2010532048.tif 000009
【図８】
2010532048.tif 000010
【図９】
2010532048.tif 000011
【図１０】
2010532048.tif 000012
【図１１】
2010532048.tif 000013
【図１２】
2010532048.tif 000014
【国際調査報告】
2010532048.tif 000015
2010532048.tif 000016
2010532048.tif 000017
2010532048.tif 000018
2010532048.tif 000019