(57)【特許請求の範囲】
【請求項１】
データを処理し、アトミック・メモリ・トランザクション用のハードウェア・サポートを含む装置であって、
そのそれぞれが一連のプログラム命令を実行するように構成された複数の処理要素と、
前記複数の処理要素によって共有されるデータ値を記憶するように構成されたメモリと、
を備え、
前記複数の処理要素のうちの少なくとも１つが、前記メモリ内のロック・アドレスへのアクセスを監視するように構成されたコントローラであって、
（１）前記トランザクショナル・メモリをサポートする処理要素が前記ロック・アドレスによって見張られたメモリ・トランザクションを実行しているときは、所定の条件が満たされるまで、排他的なアクセスのための前記ロック・アドレスをリリースすることを遅延させ、
（２）前記トランザクショナル・メモリをサポートする処理要素が前記ロック・アドレスによって見張られたメモリ・トランザクションを実行していないときは、前記所定の条件とは無関係に、排他的なアクセスのための前記ロック・アドレスをリリースする、
ことにより、前記ロック・アドレスへの排他的なアクセスを得るために、前記複数の処理要素のうちの別のものからの受け取られた要求に応答するよう構成されたコントローラを有するトランザクショナル・メモリをサポートする処理要素である、装置。
【請求項２】
前記コントローラが、前記受け取られた要求に対して要求拒否応答を返すことにより、前記ロック・アドレスをリリースすることを遅延させるように構成された、請求項１に記載の装置。
【請求項３】
前記コントローラが、前記受け取られた要求に対するいかなる応答も返すことを遅延させることにより、前記ロック・アドレスをリリースすることを遅延させるように構成された、請求項１に記載の装置。
【請求項４】
前記所定の条件は、少なくとも部分的に、前記トランザクショナル・メモリをサポートする処理要素が前記ロック・アドレスをリリースすることなく前記ロック・アドレスへの所定の回数のアクセス要求を受け取ったことである、請求項１、２及び３のいずれか一項に記載の装置。
【請求項５】
前記所定の条件は、少なくとも部分的に、前記トランザクショナル・メモリをサポートする処理要素が前記ロック・アドレスをリリースすることを所定の時間遅延させたことである、請求項１から４までのいずれか一項に記載の装置。
【請求項６】
前記コントローラは、前記ロック・アドレスが、前記メモリ・トランザクションが完了する前にリリースされる場合、前記ロック・アドレスによって見張られた前記メモリ・トランザクションをアボートするように構成されている、請求項１から５までのいずれか一項に記載の装置。
【請求項７】
前記複数の処理要素が、前記コントローラを有しないトランザクショナル・メモリをサポートしない処理要素を少なくとも１つ含む、請求項１から６までのいずれか一項に記載の装置。
【請求項８】
前記トランザクショナル・メモリをサポートしない処理要素が、前記ロック・アドレスによって見張られたメモリ・トランザクションの実行を開始する前に、一連のロック取得プログラム命令を実行するように構成されている、請求項７に記載の装置。
【請求項９】
前記トランザクショナル・メモリをサポートしない処理要素が、前記トランザクショナル・メモリをサポートする処理要素よりも低い電力消費と低い命令処理性能を有する、請求項７又は８のいずれか一項に記載の装置。
【請求項１０】
前記複数の処理要素が非対称マルチプロセス装置を形成する、請求項１から９までのいずれか一項に記載の装置。
【請求項１１】
トランザクショナル・メモリをサポートする処理要素を複数備える、請求項１から１０までのいずれか一項に記載の装置。
【請求項１２】
前記受け取られた要求が前記複数のトランザクショナル・メモリをサポートする処理要素の１つから受け取られた場合に、前記所定の条件が満たされる、請求項１１に記載の装置。
【請求項１３】
前記複数の処理要素のうちの少なくとも１つが、
前記複数の処理要素のうちの前記少なくとも１つの構成を指定するパラメータを保持するように構成され、前記ロック・アドレスを記憶するように専従されたロック・アドレス・レジスタを含む、１つ又は複数のアーキテクチャ・レジスタと、
メモリ・トランザクションの開始を示すトランザクション開始命令をデコードし、
（１）前記複数の処理要素のうちの前記少なくとも１つが、メモリ・トランザクションを実行していない場合は、前記ロック・アドレス・レジスタからの前記ロック・アドレスの読取りと、少なくとも、前記ロック・アドレスに記憶されたロック値へのアクセスとを制御する１つ又は複数の制御信号を生成し、
（２）前記複数の処理要素のうちの前記少なくとも１つが、メモリ・トランザクションをすでに実行している場合は、前記ロック・アドレスに記憶されたロック値へアクセスすることなしに、さらに処理を前に進める、
ように構成された命令デコーダ回路と、
を備える、請求項１から１２までのいずれか一項に記載の装置。
【請求項１４】
前記装置が、前記複数の処理要素のうちの所与の１つが、所与の期間にわたって前記複数のプログラム処理のうちの所与の１つを実行し、前記複数の処理要素のうちの前記所与の１つの前記ロック・アドレス・レジスタが、前記所与の期間中、前記複数のプログラム処理のうちの前記所与の１つのためのロック・アドレスを記憶した状態で、複数の異なるプログラム処理に対応したプログラム命令を実行するように構成されている、請求項１３に記載の装置。
【請求項１５】
データを処理し、アトミック・メモリ・トランザクション用のハードウェア・サポートを含む装置であって、
そのそれぞれが一連のプログラム命令を実行するための複数の処理手段と、
前記複数の処理手段によって共有されるデータ値を記憶するためのメモリ手段と、
を備え、
前記複数の処理手段のうちの少なくとも１つが、前記メモリ手段内のロック・アドレスへのアクセスを監視し、
（１）前記トランザクショナル・メモリをサポートする処理手段が前記ロック・アドレスによって見張られたメモリ・トランザクションを実行しているときは、所定の条件が満たされるまで、排他的なアクセスのための前記ロック・アドレスをリリースすることを遅延させ、
（２）前記トランザクショナル・メモリをサポートする処理手段が前記ロック・アドレスによって見張られたメモリ・トランザクションを実行していないときは、前記所定の条件とは無関係に、排他的なアクセスのための前記ロック・アドレスをリリースする
ことにより、前記ロック・アドレスへの排他的なアクセスを得るために、前記複数の処理手段のうちの別の処理手段から受け取られた要求に応答するよう構成された制御手段を有するトランザクショナル・メモリをサポートする処理手段である、装置。
【請求項１６】
アトミック・メモリ・トランザクション用のハードウェア・サポートを使用して、データを処理する方法であって、
複数の処理要素を使用して、一連のプログラム命令を実行するステップと、
前記複数の処理要素によって共有されるデータ値をメモリ内に記憶するステップと、
を含み、
前記複数の処理手段のうちの少なくとも１つが、前記メモリ内のロック・アドレスへのアクセスを監視するトランザクショナル・メモリをサポートする処理要素であって、
（１）前記トランザクショナル・メモリをサポートする処理要素が前記ロック・アドレスによって見張られたメモリ・トランザクションを実行しているときは、所定の条件が満たされるまで、排他的なアクセスのための前記ロック・アドレスをリリースすることを遅延させ、
（２）前記トランザクショナル・メモリをサポートする処理要素が前記ロック・アドレスによって見張られたメモリ・トランザクションを実行していないときは、前記所定の条件とは無関係に、排他的なアクセスのための前記ロック・アドレスをリリースする
ことにより、前記ロック・アドレスへの排他的なアクセスを得るために、前記複数の処理要素のうちの別のものからの受け取られた要求に応答するトランザクショナル・メモリをサポートする処理要素である、方法。
【請求項１７】
データを処理し、アトミック・メモリ・トランザクション用のハードウェア・サポートを提供する装置であって、
そのそれぞれが一連のプログラム命令を実行するように構成された複数の処理要素と、
前記複数の処理要素によって共有されるデータ値を記憶するように構成されたメモリと、
を備え、
前記複数の処理要素のうちの少なくとも所与の１つが、
前記複数の処理要素のうちの前記少なくとも１つの構成を指定するパラメータを保持するように構成され、前記メモリの領域への排他的なアクセスを制御する働きをするロック・アドレスを記憶するために専従されたロック・アドレス・レジスタを含む、１つ又は複数のアーキテクチャ・レジスタと、
メモリ・トランザクションの開始を示すトランザクション開始命令をデコードし、
（１）前記複数の処理要素のうちの前記所与の１つが、メモリ・トランザクションを実行していない場合は、前記ロック・アドレス・レジスタからの前記ロック・アドレスの読取りを制御する１つ又は複数の制御信号を生成し、
（２）前記複数の処理要素のうちの前記所与の１つが、メモリ・トランザクションをすでに実行している場合は、前記ロック・アドレス・レジスタから前記ロック・アドレスを読取ることなしに、さらに処理を前に進める、
ように構成された命令デコーダ回路と、
を備える、装置。
【請求項１８】
前記装置が、前記複数の処理要素のうちの所与の１つが、所与の期間にわたって前記複数のプログラム処理のうちの所与の１つを実行し、前記複数の処理要素のうちの前記所与の１つの前記ロック・アドレス・レジスタが、前記所与の期間中、前記複数のプログラム処理のうちの前記所与の１つのためのロック・アドレスを記憶した状態で、複数の異なるプログラム処理に対応したプログラム命令を実行するように構成されている、請求項１７に記載の装置。
【請求項１９】
データを処理し、アトミック・メモリ・トランザクション用のハードウェア・サポートを提供する装置であって、
そのそれぞれが一連のプログラム命令を実行するための複数の処理手段と、
前記複数の処理手段によって共有されるデータ値を記憶するためのメモリと、
を備え、
前記複数の処理手段のうちの少なくとも所与の１つが、
前記複数の処理手段のうちの前記少なくとも１つの構成を指定するパラメータを保持し、前記メモリ手段の領域への排他的なアクセスを制御する働きをするロック・アドレスを記憶するために専従されたロック・アドレス・レジスタ手段を含む、１つ又は複数のアーキテクチャ・レジスタ手段と、
メモリ・トランザクションの開始を示すトランザクション開始命令をデコードし、
（１）前記複数の処理手段のうちの前記所与の１つが、メモリ・トランザクションを実行していない場合は、前記ロック・アドレス・レジスタ手段からの前記ロック・アドレスの読取りを制御する１つ又は複数の制御信号を生成し、
（２）前記複数の処理手段のうちの前記所与の１つが、メモリ・トランザクションをすでに実行している場合は、前記ロック・アドレス・レジスタ手段から前記ロック・アドレスを読み取ることなしに、さらに処理を前に進める、
ための命令デコーダ手段と、
を備える、
装置。
【請求項２０】
アトミック・メモリ・トランザクション用のハードウェア・サポートを使用して、データを処理する方法であって、
複数の処理要素を使用して、一連のプログラム命令を実行するステップと、
前記複数の処理要素によって共有されるデータ値をメモリ内に記憶するステップと、
を含み、
前記複数の処理要素のうちの所与の１つが、
前記複数の処理要素のうちの前記少なくとも１つの構成を指定するパラメータを、前記メモリの領域への排他的なアクセスを制御する働きをするロック・アドレスを記憶するために専従されたロック・アドレス・レジスタを含む１つ又は複数のアーキテクチャ・レジスタ内に保持するステップと、
メモリ・トランザクションの開始を示すトランザクション開始命令をデコードし、
（１）前記複数の処理要素のうちの前記所与の１つが、メモリ・トランザクションを実行していない場合は、前記ロック・アドレス・レジスタからの前記ロック・アドレスの読取りを制御する１つ又は複数の制御信号を生成し、
（２）前記複数の処理要素のうちの前記所与の１つが、メモリ・トランザクションをすでに実行している場合は、前記ロック・アドレス・レジスタから前記ロック・アドレスを読み取ることなしに、さらに処理を前に進める、
ステップと
を実施する、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理システムの分野に関する。より詳細には、本開示は、メモリ内に共有データ値を記憶する複数の処理要素を有するデータ処理システム内のトランザクショナル・メモリに対するサポートに関する。
【背景技術】
【０００２】
メモリ内に記憶されたデータ値を共有する複数の処理要素を有するデータ処理システムを提供することが知られている。処理要素間の一貫性を制御するために、処理要素のうちの１つが、メモリ・アドレス空間の領域にアクセスしたいと望むとき、最初に、その領域に関連したロック値がセットされていないことを確認できるように、それらの領域に関連したロックを施すことが知られている。ロック値がセットされている場合、別の処理要素がすでにその領域内でトランザクションを実施しており、従って、この現在のアクセスはアボートされ、後で再試行されることを示す。検査でロックが現在セットされていないことが明らかになると、アクセス要求を行う処理要素は、ロック値をセットし、そのアクセスを実施し、次いで、そのロック値をリセットすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ロックの使用により、処理要素間でデータ値を共有するための安全な機構が提供される一方で、ロックは、粗い粒度（level of granularity）でセットされ得るため、実際にはロックされた領域内の同一のデータ値に影響を与えないメモリ・アクセスが、実際には問題なく並列で進行し得るときに、並列で実行されることが阻止されるという性能への悪影響が生ずる恐れがある。反対に、ロックが過度に細かい粒度（fine-grained）でなされると、ロックを記憶し、管理することに関連するオーバーヘッドのレベルが煩わしいものとなる。
【課題を解決するための手段】
【０００４】
上記に対処する１つの方法は、省略機構（elision mechanism）を提供することである。こうした機構においては、処理要素はデータ値にアクセスすることが可能であり、それが保持するデータ値のローカル・コピーに投機的にメモリ・トランザクションを実施することができる。こうしたメモリ・トランザクションを実施するとき、処理要素は、システム内の他の処理要素に、メモリ・アドレスの所与の領域にメモリ・アクセスを実施中である旨の通知を行う。他の任意の処理要素が、それ自体の投機的処理の一部として、その領域内のメモリ・アドレスのいずれかに影響するメモリ・トランザクションを現在実施中の場合には、リクエスタが該当するメモリ領域へのアクセスができ、より直近の投機的操作を実施することができるように、この投機的処理（メモリ・トランザクション）をアボートする。
【０００５】
待ち状態にあるメモリ・トランザクションをアボートすることにより、デッドロック状態が発生する可能性をもたらすことを理解されたい。従って、処理の作業負荷の範囲内で処理を実行させ、且つ、前進させるフォール・バック経路を保証する機構が提供される。これは、処理要素間に競合が発生した場合に、上記のロック機構をフォール・バック経路として利用することによって達成され得る。こうしたロック機構の使用は、競合が発生した場合にアボートされる投機的メモリ・トランザクションに基づく管理に比べると、性能を低下させる可能性があるが、デッドロックを克服することを保証する方法を確かに提供する。従って、省略機構が提供されたとしても、処理要素はメモリ・トランザクションを開始する際に、そのメモリ領域自体をロックしようとする意図がたとえ無い場合でも、該当するメモリ領域がロックされているかどうか確認するためにチェックし、代わりに、投機的メモリ・トランザクションに基づいて、通常、先へ進む。処理要素が、領域がロックされていると認識した場合は、メモリ・トランザクションを進めずに、後で再試行することになる。さらに、処理要素は、投機的メモリ・トランザクションが実施されるメモリ領域を保護するロック・アドレスを監視し、このロック・アドレスが、別の処理要素によって競合状態でアクセスされる場合、投機的メモリ・トランザクションをアボートすることになる。このように、ロックを利用する必要がある処理要素は、そうでなければロック値をセットするのを阻止され、その領域への排他的アクセスが得られなくされるような方法で、待ち状態のメモリ・トランザクションが完了するのを何等待つ必要なく、ロック値をセットすることができる。
【０００６】
一態様から見ると、本開示は、データを処理し、アトミック・メモリ・トランザクション用のハードウェア・サポートを含むための装置であって、
それぞれが一連のプログラム命令を実行するように構成された複数の処理要素と、
前記複数の処理要素によって共有されたデータ値を記憶するように構成されたメモリと、を含み、
前記複数の処理要素のうちの少なくとも１つが、前記メモリ内のロック・アドレスへのアクセスを監視するように構成されたコントローラを有するトランザクショナル・メモリをサポートする処理要素であり、
前記コントローラは、前記ロック・アドレスへの排他的アクセスを得るために、
（１）前記トランザクショナル・メモリをサポートする処理要素が、前記ロック・アドレスによって見張られたメモリ・トランザクションを実行するとき、所定の条件が満たされるまで、排他的アクセスのための前記ロック・アドレスをリリースすることを遅延させ、かつ、
（２）前記トランザクショナル・メモリをサポートする処理要素が、前記ロック・アドレスによって見張られたメモリ・トランザクションを実行しないとき、前記所定の条件とは無関係に排他的アクセスのための前記ロック・アドレスをリリースすることにより、
前記複数の処理要素のうちの別の処理要素から受け取られた要求に応答するように構成される、装置を提供する。
【０００７】
本開示は、メモリ・トランザクションが処理要素のうちの１つによって投機的に実行されるのを見張っているロック・アドレスを監視する一方で、リクエスタによる排他的使用のためにそのロック・アドレスを直ちにリリースすることにより、そのロック・アドレスへの排他的なアクセスを得るという要求に、無条件に応答しないことが適切な場合もあることを認めている。リクエスタによる排他的なアクセスのためにロック・アドレスを無条件にリリースするという単純なアプローチは、性能と優先度の点から見て同等である処理要素を含む均質のシステムにおいて適切なこともあるが、他の環境においては、異なるアプローチを取ってもよい。本開示は、処理要素がロック・アドレスによって見張られているメモリ・トランザクションを実行するとき、ロック・アドレスがリクエスタによる排他的なアクセスのためにリリースされる前に、所定の条件が満たされなければならないということを定めている。反対に、そのために要求がなされたロック・アドレスによって見張られたメモリ・トランザクション中で処理要素が実行していないときは、ロック・アドレスは、所定の条件とは無関係に排他的なアクセスのために無条件にリリースされる。
【０００８】
いくつかの実施例において、コントローラは、受け取られた要求に要求拒否（request refuse）応答を返すことにより、ロック・アドレスのリリースを遅延させるように構成され得る。他の実施例において、コントローラは、受け取られた要求に対するいかなる応答の返信をも遅らせることにより、ロック・アドレスのリリースを遅延させるように構成され得る。
【０００９】
ロック・アドレスがリリースされる前に満たされるべき所定の条件の一実例形式は、トランザクション・メモリをサポートする処理要素が、ロック・アドレスをリリースすることなく、ロック・アドレスへの所定の数のアクセス要求を受け取ったこととすることができる。従って、リリースは、いくつかの要求がなされ、且つ、拒否されるまでは、なされることはない。
【００１０】
ロック・アドレスがリリースされる前に満たされなければならない所定の条件の別の実例は、要求が受け取られてから所定の時間が経過した、すなわち、リリースが所定の時間遅延したこととすることができる。
【００１１】
ロック・アドレスをリリースする前に所定の条件が満たされるまで待つことにより、待ち状態のメモリ・トランザクションに、ロック・アドレスがリリースされる前に完了するための追加の時間が与えられることになる。ロック・アドレスがリリースされ、そのロック・アドレスによって見張られているメモリ・トランザクションが完了していないときは、メモリ・トランザクションはアボートされ得る。
【００１２】
本開示は、複数の処理要素が、少なくとも１つの、省略やキャッシュ・スヌーピングなどを伴う、より高度なトランザクション・メモリ技術をサポートするためのコントローラを有しない、トランザクショナル・メモリをサポートしない処理要素を含む実施例において使用可能である。実例として、システムは、１つ又は複数の単純で低出力なプロセッサ・コアと共に、いくつかの複雑で高性能なプロセッサ・コアを含むことができる。高性能なプロセッサ・コアは、より精緻なデータ値共有、及び、トランザクショナル・メモリ・サポートのための機構を含むことができ、一方、単純で低出力のコアは、一貫性を保証するために、暫定的なロック機構に頼り得る。こうしたシステム内において、低出力のプロセッサ・コアが、高性能なプロセッサ・コアによって使用されているメモリ領域にアクセスしようとすると、これは通常、これらの高性能プロセッサ・コア上のメモリ・トランザクションを直ちにアボートさせ、全体的なシステムの性能を低出力のプロセッサ・コアのレベルまで低下させることとなる。しかし、本開示を使用すると、高性能なプロセッサ・コアは、所定の条件が満たされるまで、低出力のプロセッサ・コアにロック・アドレスをリリースする（ロック値をセットさせることを許す）ことを遅らせることができ、これにより、高性能なプロセッサ・コアの性能低下の削減幅を縮小することができる。
【００１３】
このような非対称マルチプロセッシング装置は、エネルギ効率の良い方法で、様々に異なる処理作業負荷に対して対処することができるシステムを提供するのに役に立つ。
【００１４】
いくつかの実施例において、所定の条件は、この形式に一致しない処理要素から受け取られた要求に少なくとも当分は従わないように、要求が、トランザクショナル・メモリをサポートする処理要素（たとえば、高性能コア）である処理要素の１つから受け取られたものとすることができる。
【００１５】
メモリ・トランザクションの開始にあたってロック・アドレス／ロック値へのアクセスを利用する、プログラム命令を実行することに関連するオーバーヘッドは、ロック・アドレスを記憶するために専従させられたロック・アドレス・レジスタが、プロセッサの構成を指定するアーキテクチャ・レジスタ保持パラメータ内に提供されるシステム中で削減され得る。従って、トランザクション開始命令が、その処理要素の命令デコーダによってデコードされると、これは、処理要素がすでにメモリ・トランザクションを実行しているかどうか決定するために使用することができ、処理要素がまだメモリ・トランザクションを実行していない場合、ロック・アドレス・レジスタからロックを読み取り、ロック・アドレスに記憶されたロック値にアクセスするために使用することができる。反対に、処理要素が、すでにメモリ・トランザクションを実行している場合、システムは、ロック・アドレスに記憶されたロック値にアクセスする必要なしに、トランザクション開始命令に続くさらなる処理を進めることができる。
【００１６】
この機能は、関連するメモリ領域のためのロック値が、たとえば、通常のロック機構を使用して処理要素によってセットされているかどうかを少なくとも確認するように、プログラム・コードが、通常、トランザクション開始命令を、任意のメモリ・トランザクションを実施するプログラム命令の前に置くことにより発揮される。ネスト化されたコード内では、このことは冗長となる恐れがあり、プロセッサがすでにメモリ・トランザクションを実行し、すでにロック・アドレスの制御を有し、なお且つ、後続のメモリ・トランザクションが無用にロック・アドレス値を再確認することなど、実行されるこのような確認、及び、アクセスは時間と労力の無駄となる。さらに、ソフトウェア機構を介してロック・アドレスを提供することに関連するオーバーヘッドは、トランザクション開始命令に出会ったとき、ロック・アドレスの探索が、命令指定の位置ではなくアーキテクチャ・レジスタ内のこの固定位置に対してなされるように、ロック・アドレスを処理単位で記憶するアーキテクチャ・レジスタを代わりに提供することによって、削減され得る。
【００１７】
別の態様から見ると、本開示は、データを処理し、アトミック・メモリ・トランザクション用のハードウェア・サポートを含む装置であって、
そのそれぞれが一連のプログラム命令を実行するための複数の処理手段と、
前記複数の処理手段によって共有されるデータ値を記憶するためのメモリ手段と
を備え、
前記複数の処理手段のうちの少なくとも１つが、前記メモリ手段内でロック・アドレスへのアクセスを監視し、
（１）前記トランザクショナル・メモリをサポートする処理手段が前記ロック・アドレスによって見張られたメモリ・トランザクションを実行しているときは、所定の条件が満たされるまで、排他的なアクセスのための前記ロック・アドレスをリリースすることを遅延させ、
（２）前記トランザクショナル・メモリをサポートする処理手段が前記ロック・アドレスによって見張られたメモリ・トランザクションを実行していないときは、前記所定の条件とは無関係に、排他的なアクセスのための前記ロック・アドレスをリリースする
ことにより、前記ロック・アドレスへの排他的なアクセスを得るために、前記複数の処理手段のうちの別の処理手段から受け取られた要求に応答するよう構成された制御手段を有するトランザクショナル・メモリをサポートする処理手段である、装置を提供する。
【００１８】
別の態様から見ると、本開示は、アトミック・メモリ・トランザクション用のハードウェア・サポートを使用して、データを処理する方法であって、
複数の処理要素を使用して、一連のプログラム命令を実行するステップと、
前記複数の処理要素によって共有されるデータ値をメモリ内に記憶するステップと
を含み、
前記複数の処理手段のうちの少なくとも１つが、前記メモリ内のロック・アドレスへのアクセスを監視するトランザクショナル・メモリをサポートする処理要素であって、
（１）前記トランザクショナル・メモリをサポートする処理要素が前記ロック・アドレスによって見張られたメモリ・トランザクションを実行しているときは、所定の条件が満たされるまで、排他的なアクセスのための前記ロック・アドレスをリリースすることを遅延させ、
（２）前記トランザクショナル・メモリをサポートする処理要素が前記ロック・アドレスによって見張られたメモリ・トランザクションを実行していないときは、前記所定の条件とは無関係に、排他的なアクセスのための前記ロック・アドレスをリリースする
ことにより、前記ロック・アドレスへの排他的なアクセスを得るために、前記複数の処理要素のうちの別のものからの受け取られた要求に応答するトランザクショナル・メモリをサポートする処理要素である、方法を提供する。
【００１９】
その目的のために専従されたロック・アドレス・レジスタ内のロック・アドレスを記憶するための場所として働くアーキテクチャ・レジスタを提供することは、ロック・アドレスが、現在進行中のメモリ・トランザクションを見張っている場合に、所定の条件が満たされたときのみ要求に応答して、ロック・アドレスをリリースするのに役立つ機構とは別個に使用され得る。従って、本開示はまた、データを処理し、アトミック・メモリ・トランザクション用のハードウェア・サポートを提供する装置であって、
そのそれぞれが一連のプログラム命令を実行するように構成された複数の処理要素と、
前記複数の処理要素によって共有されるデータ値を記憶するように構成されたメモリと、
を備え、
前記複数の処理要素のうちの少なくとも所与の１つのが、
前記複数の処理要素のうちの前記少なくとも１つの構成を指定するパラメータを保持するように構成され、前記メモリの領域への排他的なアクセスを制御する働きをするロック・アドレスを記憶するために専従されたロック・アドレス・レジスタを含む、１つ又は複数のアーキテクチャ・レジスタと、
メモリ・トランザクションの開始を示すトランザクション開始命令をデコードし、
（１）前記複数の処理要素のうちの前記所与の１つが、メモリ・トランザクションを実行していない場合は、前記ロック・アドレス・レジスタからの前記ロック・アドレスの読取りを制御する１つ又は複数の制御信号を生成し、
（２）前記複数の処理要素のうちの前記所与の１つが、メモリ・トランザクションをすでに実行している場合は、前記ロック・アドレス・レジスタから前記ロック・アドレスを読み取ることなしに、さらに処理を前に進める、
ように構成された命令デコーダ回路と、
を備える、装置を提供する。
【００２０】
別の態様から見ると、本開示は、データを処理し、アトミック・メモリ・トランザクション用のハードウェア・サポートを提供する装置であって、
そのそれぞれが一連のプログラム命令を実行するための複数の処理手段と、
前記複数の処理手段によって共有されるデータ値を記憶するためのメモリと
を備え、
前記複数の処理手段のうちの少なくとも所与の１つが、
前記複数の処理手段のうちの前記少なくとも１つの構成を指定するパラメータを保持し、前記メモリ手段の領域への排他的なアクセスを制御する働きをするロック・アドレスを記憶するために専従されたロック・アドレス・レジスタ手段を含む、１つ又は複数のアーキテクチャ・レジスタ手段と、
メモリ・トランザクションの開始を示すトランザクション開始命令をデコードし、
（１）前記複数の処理手段のうちの前記所与の１つが、メモリ・トランザクションを実行していない場合は、前記ロック・アドレス・レジスタ手段からの前記ロック・アドレスの読取りを制御する１つ又は複数の制御信号を生成し、
（２）前記複数の処理手段のうちの前記所与の１つが、メモリ・トランザクションをすでに実行している場合は、前記ロック・アドレス・レジスタ手段から前記ロック・アドレスを読み取ることなしに、さらに処理を前に進める、
ための命令デコーダ手段と、
を備える、装置を提供する。
前記複数の処理手段のうちの少なくとも所与の１つが、
前記複数の処理手段のうちの前記少なくとも１つの構成を指定するパラメータを保持し、前記メモリ手段の領域への排他的なアクセスを制御する働きをするロック・アドレスを記憶するために専従されたロック・アドレス・レジスタ手段を含む、１つ又は複数のアーキテクチャ・レジスタ手段と、
メモリ・トランザクションの開始を示すトランザクション開始命令をデコードし、
（１）前記複数の処理手段のうちの前記所与の１つが、メモリ・トランザクションを実行していない場合は、前記ロック・アドレス・レジスタ手段からの前記ロック・アドレスの読取りを制御する１つ又は複数の制御信号を生成し、
（２）前記複数の処理手段のうちの前記所与の１つが、メモリ・トランザクションをすでに実行している場合は、前記ロック・アドレス・レジスタ手段から前記ロック・アドレスを読み取ることなしに、さらに処理を前に進める、
ための命令デコーダ手段。
【００２１】
別の態様から見ると、本開示は、アトミック・メモリ・トランザクション用のハードウェア・サポートを使用して、データを処理する方法であって、
複数の処理要素を使用して、一連のプログラム命令を実行するステップと、
前記複数の処理要素によって共有されるデータ値をメモリ内に記憶するステップと、
を含み、
前記複数の処理要素のうちの所与の１つが、
前記複数の処理要素のうちの前記少なくとも１つの構成を指定するパラメータを、前記メモリの領域への排他的なアクセスを制御する働きをするロック・アドレスを記憶するために専従されたロック・アドレス・レジスタを含む１つ又は複数のアーキテクチャ・レジスタ内に保持するステップと、
メモリ・トランザクションの開始を示すトランザクション開始命令をデコードし、
（１）前記複数の処理要素のうちの前記所与の１つが、メモリ・トランザクションを実行していない場合は、前記ロック・アドレス・レジスタからの前記ロック・アドレスの読取りを制御する１つ又は複数の制御信号を生成し、
（２）前記複数の処理要素のうちの前記所与の１つが、メモリ・トランザクションをすでに実行している場合は、前記ロック・アドレス・レジスタから前記ロック・アドレスを読み取ることなしに、さらに処理を前に進める、
ステップと
を実施する、方法を提供する。
【００２２】
次に本発明の実施例を、ほんの一例として、添付の図面を参照して説明する。
【図面の簡単な説明】
【００２３】
【図１】メモリ内でデータ値を共有する複数の処理要素を含むデータ処理装置を概略的に示す図である。
【図２】別の処理要素から受け取られたロック・アドレスへの排他的アクセスを得る要求に応答する、コントローラの振舞いを概略的に示す流れ図である。
【図３】要求が許可される前に満たされるべき所定の条件の第１の形式を示す流れ図である。
【図４】要求が許可される前に満たされるべき所定の条件の第２の実例を示す流れ図である。
【図５】メモリ・トランザクションを開始するトランザクション開始命令によってアクセスされる、アーキテクチャ・レジスタ内にロック・アドレス・レジスタを含むデータ処理システムを概略的に示す図である。
【図６】トランザクション開始命令の処理を概略的に示す流れ図である。
【発明を実施するための形態】
【００２４】
図１は、メモリ１０内に記憶されたデータ値を共有する複数の処理要素４、６、８を含むデータ処理システム２を概略的に示す。処理要素４、６は、プログラム命令を実行するためのプロセッサ・コアの形式のトランザクショナル・メモリをサポートする処理要素であり、それぞれ、関連したキャッシュ・メモリ１０、１２、及び、省略技術に従ってデータ値の共有を制御するためのコントローラ１４、１６を有する。プロセッサ・コア４、６は、エネルギ消費の少ない低性能プロセッサ・コアに比べて、通常、より多くのエネルギを消費するが、より高い命令処理スループットを有する高性能なプロセッサ・コアである。
【００２５】
また、データ処理システム２内には、一連の処理命令を実行するための比較的低出力で遅いプロセッサ・コアの形式のトランザクショナル・メモリをサポートしない処理要素８が含まれる。このトランザクショナル・メモリをサポートしない処理要素８は、キャッシュ・メモリ、又は、コントローラを含んでいない。従って、メモリ１０内に記憶された共有データ値へのアクセスを管理するためには、トランザクショナル・メモリをサポートしない処理要素８は、メモリ１０の領域内に保持されたデータ値への排他的アクセスを得ようとするときはいつも、ロック値の使用に頼らなければならない。
【００２６】
データ処理システム２は、非対称マルチプロセッサシステムと考えることができる。異なるプロセッサ・コア４、６、８は、それぞれ一連のプログラム命令を実行する。こうした命令は、同じプロセス内からのものでも、異なるプロセスからのものでもよい。所与のプロセスは、メモリ１０内のロック・アドレスに記憶されたロック値と関連付けることができる。ロック・アドレスは、プロセッサ・コアの構成を定義し、ロック・アドレスを記憶するために専従するアーキテクチャ・レジスタの１つ（すなわち、ロック・アドレス・レジスタ）に保持されることができる。
【００２７】
プロセッサ・コア４、６の形式のトランザクショナル・メモリをサポートする処理要素は、それぞれのコントローラ１４、１６を利用して、キャッシュ・メモリ１０、１２内に記憶されたデータ値間の一貫性を管理し、相互に不適切に干渉することにより、それぞれのコア４、６によって投機的メモリ・トランザクションが共有データ値上で実施されるのを防ぐ。プロセッサ・コア４、６のうちの１つがメモリ・トランザクションを実施するとき、キャッシュ・メモリ１０、１２内で読み取られ、且つ、書き込まれるデータ値の投機的コピーを保持する。メモリ・トランザクションが完了すると、これらのデータ値は非投機的なものとなり、メモリ１０に書き戻され、又は適宜、別の処理要素に転送される。しかし、メモリ・トランザクション中に、そのメモリ・トランザクションと関連して局所的に保持されている投機的データ値のいずれかにアクセスする要求が受け取られると、メモリ・トランザクションはアボートされ、アクセスのリクエスタは、こうしたデータ値にアクセスする権利を得る。
【００２８】
一般のトランザクショナル・メモリ・サポートについて考察すると、メモリ・アドレス空間の重要な部分は、通常、ロックによって保護されており、これが所与のロック・アドレスにおけるロック値である。トランザクション（トランザクショナル・メモリの種類の）は、障害時にロール・バックできるように、状態（メモリ及びレジスタ）を投機的に維持することから成り立っている。障害は様々な異なる要因で発生する可能性があるが、特に、データへのアクセスが競合することから発生する。競合を検出するために、トランザクションはリード・セット、すなわちトランザクションが実行状態にあるときに処理要素（ＰＥ：processing element）によって読み取られるアドレス、及び、ライト・セット、すなわちトランザクションが実行状態にあるときの対応する書き込みアドレス、を保持する。トランザクション中に書き込まれる値は、他の処理要素には視認不能であり、キャッシュ中に投機的に記憶される。あるＰＥ（たとえば、ＰＥ０）が、別のトランザクション（たとえばＰＥ１に関する）のリード・セット又はライト・セット中のある行に書き込むと、ＰＥ１に関するトランザクションはアボートされる。あるトランザクション（たとえば、ＰＥ０に関する）が、別のトランザクションのライト・セット（たとえば、ＰＥ１に関する）中のある行を読み取ると、ＰＥ１に関するトランザクションはアボートされ、ＰＥ０は、そのアドレスに対するシステム全体にわたる非投機的な値（ＰＥ１のキャッシュ中の投機的値ではない）を受け取ることになる。他の選択が存在するが、このリクエスタが勝つアプローチが、既存のキャッシュ・コヒーレンス・プロトコルと協働するように通常は実装される。
【００２９】
トランザクション（トランザクショナル・メモリ・の種類の）が重要な部分を（ロック省略と呼ばれる概念を介して）保護するために使用されるとき、通常は、ロック・アドレスを読み取るだけであり、すなわち、ロック値をセットすることはない。ロックがすでにセットされている場合は、トランザクションはロックの通常の使用を前提としなければならないため、安全に先に進むことができず、続行しようとすると、ロックのオーナーと競合することになろう。
【００３０】
ロックがまだセットされていない、すなわち、ロック値がロックされていない状態にある場合、ロック・アドレスを読み取る処理は、相互排除を保証するのに十分であろう。別のトランザクション読取りが同一の見張られたメモリ領域に入る場合、ロック・アドレスの２つの読取りは良好で、「真の」データ競合が発生しない限り、両方のトランザクションは並行して進むことができる。マルチ処理要素は、トランザクション（トランザクショナル・メモリ・の種類の）を開始することにより、投機的に重要な部分に入ることができる。処理要素が重要な部分に非トランザクショナリに入る場合、トランザクショナリに前に進んでいなかったため、又は、処理要素がトランザクショナル・メモリをサポートしないためのいずれにせよ、それは、従来の趣旨でロックを取る（セットする）、すなわち、ロックを取り、且つ、セットするまで作動しなければならない。
【００３１】
ロック値をロック・アドレスにおいてロック状態にセットする処理は、他の処理要素からロック・アドレスを排他的に要求することになる。そのロック・アドレスを自身のリード・セット／ライト・セット中に有する任意のトランザクションはアボートする必要がある。
【００３２】
図１の例示の実施例を再び参照すると、トランザクショナル・メモリをサポートする処理要素４、６は、コントローラ１４、１６を利用してメモリ・トランザクションが相互に干渉しないことを保証しているので、それらが動作しているメモリ領域と関連したロック値を自らセットすることはない。しかし、万一、メモリ・トランザクションがアボートされる場合に必要とされ得るフォール・バック実行機構のためのサポートを提供するために、又は、自身のコントローラを有しない処理要素（たとえば、トランザクショナル・メモリをサポートしない処理要素８）をサポートするために、コントローラ１４、１６は、そのためにメモリ・トランザクションを実施し、トランザクションを開始する前にロック値がセットされていないことを確認する、メモリ１０内の領域に対するロック値を記憶するロック・アドレスへのアクセス要求を監視する。このロック値にアクセスする要求が検出された場合、コントローラ１４、１６は、別の処理要素が投機的なメモリ・トランザクションと競合しており、通常、直ちに投機的なメモリ・トランザクションをアボートし、ロック・アドレスへのアクセスをリリースする応答を返すであろうと判断する。しかし、本開示によれば、コントローラ１４、１６は、この通常の振舞いを変更し、その代わり、所定の条件が満たされるまで、受け取られた要求に応答しての排他的アクセスのためのロック・アドレスのリリースを遅延させる。
【００３３】
この遅延により、該当するプロセッサ・コア４、６内の待ち状態の投機的メモリ・トランザクションが完了され、それにより、受け取られた要求の影響を減少させることができる。これは、たとえば、その共有されたデータ値をロック値のみに頼る、低出力で低性能のトランザクショナル・メモリをサポートしない処理要素８が、高性能のトランザクショナル・メモリをサポートする処理要素４、６によって実施される処理により、不当に妨害され、且つ、干渉されるのを防止するのに有用である。トランザクショナル・メモリをサポートしない処理要素８は、さもなければ正式な進展をなすことが望ましくなく阻止されてしまうので、最終的にはそのトランザクションを実施することが可能になるべきである。しかし、本開示は、トランザクショナル・メモリをサポートしない処理要素８が、それと競合するすべての他の処理活動を直ちにアボートすることは適切ではないと認識している。
【００３４】
要求に応答しての排他的アクセスのためのロック・アドレスのリリース前に満たされなければならない所定の条件は、様々な異なる形式を取ることができる。これらの形式は、要求が最終的に許可されるまでに所定の閾値回数にわたって拒否されるということを含むことができる。別の形式としては、要求に対するどのような応答も、所定の閾値期間にわたって遅延されるというものかもしれない。これらの条件の組合せもまた、他の条件、たとえば、トランザクショナル・メモリをサポートする処理要素から受け取られた要求は、その要求の許可によって直ちに応答され、一方、トランザクショナル・メモリをサポートしない別のソースからの要求は、許可されるまでに追加の条件を受けるといった、たとえば、要求のソースの識別に基づく条件などと同様に適用され得る。処理要素が、そのロック・アドレスによって保護されるメモリ・トランザクションを実行していないときは、所定の条件は、ロック・アドレスのゲート・リリースに適用されず、すなわち、この場合、リリースは所定の条件とは無関係となる。
【００３５】
図２は、アクセス要求に応答するコントローラ１４、１６の１つの動作を概略的に示す流れ図である。処理は、ステップ１８でアクセス要求が受け取られるのを待つ。アクセス要求が受け取られると、ステップ２０は、そのアクセス要求はロック・アドレスに対するものかどうか判定する。アクセス要求が、ロック・アドレスに対するものである場合、処理はステップ２２に進み、そこで、要求を受け取ったプロセッサ内で待ち状態の同一のメモリ領域に対する、競合する／重複するメモリ・トランザクションが現在あるかどうかが判定される。待ち状態のトランザクションがない場合、処理は直接ステップ２４に進み、そこで要求はリクエスタに対して許可され、少なくとも図２で処理されるように要求を受け取ったプロセッサにより、ロック・アドレスに対する排他的アクセスを得る許可が与えられる（他のプロセッサは自身の同様なチェックを実施することができる）。
【００３６】
ステップ２２における判定が、要求を受け取ったプロセッサ内に待ち状態のトランザクションがあるということである場合、ステップ２６は、処理がさらに進む前に、所定の条件が満たされているかどうか判定する働きをする。１つの例示の実施例においては、所定の条件が満たされるとき、処理はステップ２８に進み、そこで、処理がステップ２４に進む前に、待ち状態のメモリ・トランザクションがアボートされる。別の例示の実施例においては、図２の破線のボックス内に示すように、所定の条件は、このリクエスタからの要求がすでに一定の回数にわたって拒否されていることというものであり、この条件が満たされないときには、待ち状態のメモリ・トランザクションをアボートすることなく、拒否された要求の応答がステップ３０において返され、望むのであれば、代わりにリクエスタに要求を繰り返すことを頼ることになる。
【００３７】
ステップ２０の判定結果が、アクセス要求はロック・アドレスに対するものではない場合、処理はステップ３０に進み、そこでは、要求を受け取ったプロセッサが、受け取られた要求が関係しているメモリ・アドレスを保持しているかどうかについて判定がなされる。プロセッサがこのメモリ・アドレスを保持していない場合、アクセス要求はステップ２４で許可される。ステップ３０における判定が、プロセッサは関係しているメモリ・アドレスを保持しているという場合、ステップ３２は、メモリ・アドレスは投機的に、すなわち、ローカル・コントローラ１４、１６によって管理されるメモリ・トランザクションの一部として保持されているかどうか判定する。メモリ・アドレスが投機的に保持されている場合、待ち状態のメモリ・トランザクションの全体がステップ３４でアボートされ、アクセス要求はステップ２４で許可される。メモリ・アドレスが投機的に保持されていない場合、ステップ３６は、メモリ・アドレスがダーティかどうか判定し、ステップ２４における許可応答の戻りに続いて、アドレスがリクエスタによって排他的に保持されるように、ステップ４０で要求を受け取ったプロセッサからメモリ・アドレスがクリアされる前に、必要ならばステップ３８で書き戻しを実施する。
【００３８】
図３は、所定の条件が満たされているかどうかについての判定の１つの形式を概略的に示す。ステップ４２において、要求が、トランザクショナル・メモリをサポートする処理要素から受け取られたのかどうかについて判定がなされる。要求が、トランザクショナル・メモリをサポートする処理要素（すなわち、受信機のピア）から受け取られた場合、処理は直接ステップ４４に進み、そこで条件は満たされたものとしてセットされる。要求が、トランザクショナル・メモリをサポートする処理要素から受け取られたものではなかった場合、ステップ４６は遅延タイマを初期化する。次いで、処理は、要求を受け取った処理要素がメモリ・トランザクションを完了するか、遅延時間が、ステップ４６での初期化以降、所定の閾値を超えるかのいずれかまで、ステップ４８とステップ５０とを循環する。これらの条件のいずれかが満たされると、所定の条件はステップ４４で、満たされたものとしてセットされる。
【００３９】
図４は、どのように所定の条件が満たされたとしてセットされ得るかの別の実例を示す。ステップ５２において、要求が、トランザクショナル・メモリをサポートする処理要素から受け取られたのかどうかについて判定がなされる。トランザクションが、こうしたトランザクショナル・メモリをサポートする処理要素から受け取られた場合、それは直ちに許可されるとして印を付けられ、処理は、拒否カウントを０にセットするステップ５４、及び、所定の条件が満たされたとしてセットされるステップ５６を介して、先に進む。要求が、トランザクショナル・メモリをサポートする処理要素以外から受け取られたというステップ５２における判定の場合、ステップ５８は、拒否カウントがすでに閾値カウントに到達したかどうか判定する。拒否カウントが閾値カウントに到達すると、ステップ５４における処理が拒否カウントを０にセットし、ステップ５６が、所定の条件を満たされたものとしてセットする。しかし、拒否カウントがまだ閾値カウントに到達しない場合、処理は、拒否カウントがインクリメントされるステップ６０、及び、要求拒否の生成へと進むステップが取り上げられるステップ６２へと進む。図４の処理は、こうした要求に対して満たしているとして所定の条件をセットし、排他的なアクセスを得ることができるようにするまで、閾値の回数、トランザクショナル・メモリをサポートしない処理要素から受け取られた要求を拒否するのに役に立つ。
【００４０】
図５は、命令パイプライン６６、命令デコーダ６８、命令実行回路７０、汎用レジスタ・バンク７２、及び、１組のアーキテクチャ・レジスタ７４を有するプロセッサを備えるデータ処理システム６４を概略的に示す。データ処理装置６４は、図１のトランザクショナル・メモリをサポートする処理要素４、６のうちの１つであり得る。命令パイプライン６６に取り出された命令は、命令デコーダ６８によってデコードされるまで、命令パイプライン６６を通って進んでいく。命令デコーダ６８は、関係する命令を実行するために、プロセッサ内の命令実行回路７０、及び、他の要素の動作を制御する制御信号を生成する働きをする。実行される命令は、トランザクション開始命令を含む。
【００４１】
こうしたトランザクション開始命令は、実施されるメモリ・トランザクションに対応する、実行される一連のプログラム命令の最初に含まれ得る。このトランザクション開始命令によって、アーキテクチャ・レジスタ７４の１つを形成するロック・アドレス・レジスタ７６内に記憶されたロック・アドレスから、ロック値を読み取られる。この読取りは、プロセッサが、まだメモリ・トランザクションを実施していない場合にのみ発生する必要がある。プロセッサがすでにメモリ・トランザクションを実施している場合は、ロック値がセットされているかどうかを判定するための確認はすでに実施されており、従って、こうした必要が発生した場合には、コントローラ１４、１６が、そのハードウェア機構を使用してメモリ・トランザクションをアボートするので、繰り返される必要がない。しかし、プロセッサがまだメモリ・トランザクションを実施していない場合、デコーダの動作は、ロック・アドレス・レジスタ７６内に保持されたロック・アドレスに記憶されたロック値に少なくともアクセスするために、トランザクション開始命令を実行することである。現在メモリ・トランザクションを実行しているかどうかに関するプロセッサの状態は、メモリ・トランザクションがプロセッサ内で現在アクティブかどうかを示す、別のアーキテクチャ状態レジスタ７８内に記憶され得る。メモリ・トランザクションが開始されると、コントローラ１４、１６は、この状態を示すためにアーキテクチャ状態レジスタ７８の値をセットする。トランザクション開始命令はまた、ロック値がすでにセットされているかどうか判定したり、そのロック値への排他的なアクセスを求める要求を発行するトリガを発したりする他の働きを、適宜、することができる。
【００４２】
トランザクション開始命令が命令デコーダ６８によってデコードされ、アーキテクチャ状態レジスタ７８からの判定が、プロセッサ内に待ち状態のメモリ・トランザクションがすでに存在しているという場合、命令ストリームからの命令処理は、すでに処理待ちとなっているメモリ・トランザクションを開始させるトランザクション開始命令により、これらの確認はすでになされているとの前提が成り立つことから、ロック・アドレスに記憶されたロック値へなされなければならないアクセスなしに、さらに先に進むことが可能となる。
【００４３】
ロック・アドレス・レジスタ７６によって記憶されたロック・アドレスは、その時点でプロセッサにより実行されている所与のプログラム処理に関連付けることができる。この処理が変わると、ロック・アドレス・レジスタ７６内に記憶されたロック・アドレスは、適切に変更され得る。従って、異なるプロセッサによって保持されるロック・アドレスは、それらが同一のプログラム処理を実行するときに一致することとなり、これは、メモリ１０内でデータ値を共有するときにしばしば発生する実情である。
【００４４】
図６は、トランザクション開始命令をデコードする際の命令デコーダ６８の動作を示す流れ図である。ステップ８０で、処理は、トランザクション開始命令がデコードされるまで待つ。ステップ８２で、プロセッサが現在メモリ・トランザクションを実施しているかどうかについての判定がなされる。これは、アーキテクチャ・レジスタ７４内のアーキテクチャ状態レジスタ７８から値を読取ることによって達成され得る。プロセッサが現在メモリ・トランザクションを実施している場合、トランザクション開始命令の実行の少なくともこの態様は、完了していると考えられることができ、処理は終了する。
【００４５】
ステップ８２における判定が、プロセッサは現在メモリ・トランザクションを実施していないということである場合、ステップ８４は、ロック・アドレス・レジスタ７６からロック・アドレスを読取るよう作用する。次いで、ステップ８６は、ロック・アドレス・レジスタ７６から読み取られたアドレスに記憶されたロック値にアクセスする。いくつかの実施例において、ロック値のこのアクセスは、ロック値をセットする、又は、そのロック・アドレスへのアクセスを監視している他のプロセッサに、トランザクション開始命令を実行したプロセッサ動作を少なくとも通知する働きをする。アーキテクチャ・レジスタ内に処理ごとにロック・アドレスを記憶することにより、ロック値のより効率的な探索が達成され得、該当するプロセッサが、探索はすでに実施されているとの前提に基づいてメモリ・トランザクションを実施している場合、こうした探索を実施する際の処理努力を抑制することが可能となる。これは、例えば、プロセッサがトランザクショナル・メモリをサポートする処理要素であって、それが発生した場合にはそのコントローラ１４、１６によってメモリ・トランザクション間の競合が管理されるので、ネスト化されたメモリ・トランザクションが実施され、ロック値へのアクセスの繰り返しが不必要になるというような場合に、当てはまりうる。
【図１】
0006503369.tif 000002
【図２】
0006503369.tif 000003
【図３】
0006503369.tif 000004
【図４】
0006503369.tif 000005
【図５】
0006503369.tif 000006
【図６】
0006503369.tif 000007