(57)【要約】  装置、データ処理装置を動作させる方法、及びそのシミュレータが開示される。データ処理回路は、命令に応答して、データ処理動作を実行し、いくつかの命令セットは、データ処理回路によって実行される他の動作に対してアトミックに実行されるべきトランザクションとして定義され得る。同期例外がトランザクションの間に発生すると、トランザクションは中止され、例外計数器がインクリメントされる。計数器が閾値に到達すると、トランザクション失敗信号が生成され、適切な場合、トランザクションの中止を実行させる例外のこの数に対する応答を可能にする。
2021520548.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
データ処理命令に応答して、データ処理動作を実行するためのデータ処理回路であって、前記データ処理回路は、トランザクションを定義する命令のシーケンスに応答して、前記命令のシーケンスによって定義されるデータ処理動作のトランザクション・セットを、前記データ処理回路によって実行される他のデータ処理動作に対してアトミックに実行させるトランザクション・サポート回路を備える、データ処理回路と、
前記トランザクションを定義する前記命令のシーケンスの実行の間、同期例外の発生に応答して、データ処理動作の前記トランザクション・セットが実行されないように、前記トランザクション・サポート回路に前記トランザクションを中止させる例外ハンドリング回路と
を備え、
前記例外ハンドリング回路は、前記トランザクションを定義する前記命令のシーケンスの実行の間、前記同期例外の前記発生に応答して、例外計数回路によって保持される計数をインクリメントする前記計数回路を備え、前記例外ハンドリング回路は、前記計数が閾値に到達することに応答して、トランザクション失敗信号を生成する、
装置。
【請求項２】
前記閾値は、前記例外計数回路によって保持されるプログラム可能な値である、請求項１に記載の装置。
【請求項３】
前記例外計数回路は、前記トランザクションを定義する前記命令のシーケンスの実行の間、前記同期例外の前記発生に応答して、前記同期例外のタイプに依存して、前記計数回路によって保持される前記計数をインクリメントする、請求項１又は２に記載の装置。
【請求項４】
前記例外計数回路は、同期例外の発生を表す例外タイプ到着信号によってフィルタリングするように構成される例外タイプのマスクを備える、請求項３に記載の装置。
【請求項５】
前記例外計数回路は、複数の計数器を備え、前記例外計数回路は、前記同期例外の前記タイプに依存して、前記複数の計数器の選択された計数器をインクリメントするように構成される、請求項３又は４に記載の装置。
【請求項６】
前記例外ハンドリング回路は、前記計数が前記閾値に到達することに応答して、前記計数を前記閾値に到達させた前記同期例外の前記タイプを表すトランザクション失敗例外タイプ信号を生成する、請求項３から５までのいずれかに記載の装置。
【請求項７】
前記例外ハンドリング回路は、前記計数が前記閾値に到達することに応答して、
例外の数、
例外タイプの数、及び、
前記計数を前記閾値に到達させた例外タイプのセットの各々の例外の数
のうちの少なくとも１つを表すトランザクション失敗例外プロファイルを出力する、請求項３から６までのいずれかに記載の装置。
【請求項８】
前記例外計数回路は、所定の時間期間を測定するためのタイミング回路を備え、前記計数回路は、前記所定の時間期間の経過を示す前記タイミング回路に応答して、前記計数回路によって保持される前記計数をリセットする、請求項１から７までのいずれかに記載の装置。
【請求項９】
前記例外ハンドリング回路は、前記トランザクションを定義する前記命令のシーケンスの実行の間、前記同期例外の前記発生に関連付けられたプログラム計数値を格納するための例外プログラム計数記憶装置を備え、前記例外ハンドリング回路は、前記計数が前記閾値に到達することに応答して、前記プログラム計数値を出力する、請求項１から８までのいずれかに記載の装置。
【請求項１０】
データ処理装置を動作させる方法であって、
データ処理命令に応答して、データ処理動作を実行するステップと、
トランザクションを定義する命令のシーケンスに応答して、前記命令のシーケンスによって定義されるデータ処理動作のトランザクション・セットを、他のデータ処理動作に対してアトミックに実行させるステップと、
前記トランザクションを定義する前記命令のシーケンスの実行の間、同期例外の発生に応答して、データ処理動作の前記トランザクション・セットが実行されないように、前記トランザクションを中止するステップと、
前記トランザクションを定義する前記命令のシーケンスの実行の間、前記同期例外の前記発生に応答して、計数をインクリメントするステップと、
前記計数が閾値に到達することに応答して、トランザクション失敗信号を生成するステップと、
を含む、方法。
【請求項１１】
ターゲット・プログラム・コードの命令の実行のための命令実行環境を提供する、ホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
データ処理命令に応答して、データ処理動作を実行するためのデータ処理ロジックであって、前記データ処理ロジックは、トランザクションを定義する命令のシーケンスに応答して、前記命令のシーケンスによって定義されるデータ処理動作のトランザクション・セットを、前記データ処理ロジックによって実行される他のデータ処理動作に対してアトミックに実行させるトランザクション・サポート・ロジックを備える、データ処理ロジックと、
前記トランザクションを定義する前記命令のシーケンスの実行の間、同期例外の発生に応答して、データ処理動作の前記トランザクション・セットが実行されないように、前記トランザクション・サポート・ロジックに前記トランザクションを中止させる、例外ハンドリング・ロジックと
を備え、
前記例外ハンドリング・ロジックは、前記トランザクションを定義する前記命令のシーケンスの実行の間、前記同期例外の前記発生に応答して、例外計数ロジックによって保持される計数をインクリメントする前記計数ロジックを備え、前記例外ハンドリング・ロジックは、前記計数が閾値に到達することに応答して、トランザクション失敗信号を生成する、
コンピュータ・プログラム。
【請求項１２】
請求項１１に記載のコンピュータ・プログラムを格納している記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理に関する。より詳細には、本開示は、例外のハンドリングに関する。
【背景技術】
【０００２】
命令に応答してデータ処理動作を実行するデータ処理装置は、１つ又は複数の命令に関連付けられたデータ処理動作を「トランザクション」として実行することが可能なことがあり、それにより、１つ又は複数の命令は、この装置によって実行される他の動作に対してアトミックに実行される。すなわち、それらは、全体として完全に実行され、又は、全く実行されず、その結果、「半分実行された」状態は、システムの残りにとって決して知覚できない。例えば、この種のトランザクションは、トランザクションの命令セットに先行するトランザクション開始命令によって定義され、トランザクション終了命令によって終了し得る。データ処理装置はまた、所定の例外応答を実行することにより、同期例外（すなわち、命令実行から生ずるもの）に応答するように構成されてもよい。上述したトランザクション命令実行をハンドリングすることができる装置の文脈において、例外の発生の１つの結果は、トランザクションが現在進行中のとき、トランザクションが中止されるということであり、これは、典型的にはハードウェア・レベルでハンドリングされるので、オペレーティング・システムは、同期例外によってトランザクションの中止が生じたことを認識しない。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、Ｗｉｎｔｅｒ  １９９０  ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁
【発明の概要】
【課題を解決するための手段】
【０００４】
少なくとも１つの実例の実施例では、装置であって、データ処理命令に応答して、データ処理動作を実行するためのデータ処理回路であって、データ処理回路は、トランザクションを定義する命令のシーケンスに応答して、命令のシーケンスによって定義されるデータ処理動作のトランザクション・セットを、データ処理回路によって実行される他のデータ処理動作に対してアトミックに実行させるトランザクション・サポート回路を備える、データ処理回路と、トランザクションを定義する命令のシーケンスの実行の間、同期例外の発生に応答して、データ処理動作のトランザクション・セットが実行されないように、トランザクション・サポート回路にトランザクションを中止させる例外ハンドリング回路と、を備え、例外ハンドリング回路は、トランザクションを定義する命令のシーケンスの実行の間、同期例外の発生に応答して、例外計数回路によって保持される計数をインクリメントする計数回路を備え、例外ハンドリング回路は、計数が閾値に到達することに応答して、トランザクション失敗信号を生成する、装置が存在する。
【０００５】
少なくとも１つの実例の実施例では、データ処理装置を動作させる方法であって、データ処理命令に応答して、データ処理動作を実行するステップと、トランザクションを定義する命令のシーケンスに応答して、命令のシーケンスによって定義されるデータ処理動作のトランザクション・セットを、他のデータ処理動作に対してアトミックに実行させるステップと、トランザクションを定義する命令のシーケンスの実行の間、同期例外の発生に応答して、データ処理動作のトランザクション・セットが実行されないように、トランザクションを中止するステップと、トランザクションを定義する命令のシーケンスの実行の間、同期例外の発生に応答して、計数をインクリメントするステップと、計数が閾値に到達することに応答して、トランザクション失敗信号を生成するステップと、を含む方法が存在する。
【０００６】
少なくとも１つの実例の実施例では、ターゲット・プログラム・コードの命令の実行のための命令実行環境を提供する、ホスト・データ処理装置を制御するためのコンピュータ・プログラムであって、
データ処理命令に応答して、データ処理動作を実行するためのデータ処理ロジックであって、データ処理ロジックは、トランザクションを定義する命令のシーケンスに応答して、命令のシーケンスによって定義されるデータ処理動作のトランザクション・セットを、データ処理ロジックによって実行される他のデータ処理動作に対してアトミックに実行させるトランザクション・サポート・ロジックを備える、データ処理ロジックと、
トランザクションを定義する命令のシーケンスの実行の間、同期例外の発生に応答して、データ処理動作のトランザクション・セットが実行されないように、トランザクション・サポート・ロジックにトランザクションを中止させる、例外ハンドリング・ロジックと
を備え、
例外ハンドリング・ロジックは、トランザクションを定義する命令のシーケンスの実行の間、同期例外の発生に応答して、例外計数ロジックによって保持される計数をインクリメントする計数ロジックを備え、例外ハンドリング・ロジックは、計数が閾値に到達することに応答して、トランザクション失敗信号を生成する、コンピュータ・プログラムが存在する。
【０００７】
記憶媒体は、上述したコンピュータ・プログラムを格納し得る。記憶媒体は、非一時的記憶媒体でもよい。
【０００８】
本技術は、添付の図面に示すような、その実施例を参照して、あくまでも実例として、さらに記載される。
【図面の簡単な説明】
【０００９】
【図１】１つの実例の実施例における装置を概略的に示す図である。
【図２】１つの実例の実施例における例外ハンドリング回路を概略的に示す図である。
【図３】１つの実例の実施例における例外ハンドリング回路を概略的に示す図である。
【図４】１つの実例の実施例における例外ハンドリング回路を概略的に示す図である。
【図５】１つの実例の実施例における例外ハンドリングの方法を示すフロー図である。
【図６】データ処理ロジック及び例外ハンドリング・ロジックをサポートするシミュレータの１つの実例を示す図である。
【発明を実施するための形態】
【００１０】
少なくともいくつかの実施例は、装置を提供し、装置は、データ処理回路及び例外ハンドリング回路を備え、データ処理回路は、データ処理命令に応答して、データ処理動作を実行し、データ処理回路は、トランザクションを定義する命令のシーケンスに応答するトランザクション・サポート回路を備え、命令のシーケンスによって定義されるデータ処理動作のトランザクション・セットを、データ処理回路によって実行される他のデータ処理動作に対してアトミックに実行させ、例外ハンドリング回路は、トランザクションを定義する命令のシーケンスの実行の間、同期例外の発生に応答して、データ処理動作のトランザクション・セットが実行されないように、トランザクション・サポート回路にトランザクションを中止させ、例外ハンドリング回路は、例外計数回路を備え、例外計数回路は、トランザクションを定義する命令のシーケンスの実行の間、同期例外の発生に応答して、計数回路によって保持される計数をインクリメントし、例外ハンドリング回路は、計数が閾値に到達することに応答して、トランザクション失敗信号を生成する。
【００１１】
データ処理命令に応答して、データ処理動作を実行し、データ処理命令のトランザクション・セットが他のデータ処理動作に対してアトミックに実行される「トランザクション」をサポートする装置において、例外の発生に対する１つの方法は、同期例外が抑制され（すなわち、さもなければ呼ばれたであろう通常の例外ハンドリング・ルーチンが呼ばれず）、トランザクションは、単に失敗し、状態をトランザクションの前状態に回復するということである。その結果、オペレーティング・システムは、例外が発生したこと、及び、トランザクションが失敗したことを知らない。同期例外が発生し、トランザクションが失敗するとき、オペレーティング・システムを妨げるのを回避するので（さもなければ、比較的頻度が高く、それゆえ、比較的破壊的になり得る）、これは、一般的に有益であると見られてきたが、本技術は、同期例外が発生し、トランザクションが失敗したという事実が、結果として何らかの方法で通知されなければならない場合、それが好ましい文脈になり得ると認識する。したがって、本技術は、例外ハンドリング回路が提供される方法を提案し、その方法では同期例外によって中断される場合、トランザクションを中止させるが、それにもかかわらず、この種の発生（すなわちトランザクションの間の同期例外）の計数を保ち、この計数が閾値に到達する場合、トランザクション失敗信号を生成する。このトランザクション失敗信号は、さまざまな方法で用いてもよいが、特に、オペレーティング・システムに閾値数のトランザクションにおける例外が発生したことを通知してもよく、例えば、オペレーティング・システムが、これが（悪意のあるソフトウェアによる）不正なアクティビティを表し得ると決定する場合、そのアクティビティから防御する緩和ステップを導入することができる。例えば、本技術は、オペレーティング・システムが知らないトランザクション内で、ユーザ空間プログラムが不正なメモリ・アクセス・パターンを試み得ることを認識する。本技術は、これに対処する。したがって、特権コードは、（時々）、計数器に設定される閾値の選択に応じて、同期例外活動を観察することができる。データ処理装置内の特権レベルの文脈内では、閾値の定義は、特権レベルによって設定可能であり、同期例外は、この定義された数値の上限まで考慮されず（すなわち抑制され）、その後、これらの例外の発生は、ユーザ・レベルから特権レベルまで上昇する。
【００１２】
閾値は、装置のためにあらかじめ定義されていてもよいし、又は、いくつかの実施例では、例外計数回路によって保持されるプログラム可能な値でもよい。これは、それがデータ処理動作を実行している文脈に応じて、装置の構成の柔軟性を可能にする。安全対策として、プログラム可能な値が装置内の特権レベルによってのみ設定可能であり、その結果、特権のないレベル（例えばユーザ・レベル）はそれを変更することができないということが提案される。
【００１３】
例外計数回路は、すべての例外を計数してもよい、例えば単一の計数器ですべての例外を計数してもよいが、いくつかの実施例では、例外計数回路は、トランザクションを定義する命令のシーケンスの実行の間、同期例外の発生に応答して、同期例外のタイプに依存して、計数回路によって保持される計数をインクリメントする。例えば、特定の１つのタイプ（又は複数のタイプ）の例外がトランザクション失敗を生成するのに値すると決定される場合、例外計数回路は、この１つのタイプ（又は複数のタイプ）の例外のための計数のみをインクリメントする（それゆえ、最後に、トランザクション失敗信号を生成する）ように構成されてもよく、他は、任意の潜在的なトランザクション失敗信号なしで完全に抑制され続ける。
【００１４】
実際、例外計数回路は特定の例外タイプを無視するように構成されてもよく、それゆえ、いくつかの実施例では、例外計数回路は、同期例外の発生を表す例外タイプ到着信号によってフィルタリングするように構成される例外タイプのマスクを備える。この例外タイプのマスクは、それ自身でプログラム可能でもよく、したがって、例外計数回路がトランザクション内で発生する例外のタイプを計数する方法を構成するように用いられることができる。
【００１５】
（上述したように）例外計数回路は、トランザクションの間、発生した１つ又は複数のタイプの例外の発生を計数するのに用いられる単一の計数器のみを備えてもよいが、いくつかの実施例では、例外計数回路は、複数の計数器を備え、例外計数回路は、同期例外のタイプに依存して、複数の計数器の選択された計数器をインクリメントするように構成される。したがって、例外計数回路は、トランザクションの間、発生する同期例外の異なるタイプ（又はタイプのセット）のための個々の計数を維持することができる。
【００１６】
トランザクション失敗信号は、同期例外の結果としてのトランザクション失敗の数が、同期例外のタイプを区別することなく、現在閾値に到達したことを単に示してもよいが、いくつかの実施例では、例外ハンドリング回路は、計数が閾値に到達することに応答して、計数を閾値に到達させた同期例外のタイプを表すトランザクション失敗例外タイプ信号を生成する。したがって、例外ハンドリング回路が異なるタイプの同期例外を差別化し得る場合、次に、それはまた、計数を閾値に到達させた同期例外のタイプに関する情報を受信者に提供するトランザクション失敗例外タイプ信号を生成してもよい。これは、例えば、どんなタイプの不正なアクティビティが進行中であり得るかというより明確な見通しを、オペレーティング・システムに提供することができる。
【００１７】
さらに、追加情報は、トランザクション失敗信号と、いくつかの実施例では、トランザクション失敗例外プロファイルという形をとるトランザクション失敗例外タイプ信号と、に関連付けられて提供されてもよい。この種の実施例では、例外ハンドリング回路は、計数が閾値に到達することに応答して、例外の数、例外タイプの数、及び、計数を閾値に到達させた例外タイプのセットの各々の例外の数の少なくとも１つを表すトランザクション失敗例外プロファイルを出力する。換言すれば、さらなる情報は、例外ハンドリング回路から出力され、計数又は計数器を１つの閾値（又は複数の閾値）に到達させたもののより詳細な理解を受信者に与えてもよい。上述したように例外に応答してトランザクション失敗の通知を抑制する１つの理由は、この情報により受信者に負荷をかけすぎる（例えばあまりに頻繁にオペレーティング・システムに通知する）ことを回避することであり、したがって、いくつかの実施例では、例外計数回路は、所定の時間期間を測定するためのタイミング回路を備え、計数回路は、所定の時間期間の経過を示すタイミング回路に応答して、計数回路によって保持される計数をリセットする。この方法は、その閾値に到達している計数器を越えて、この計数が所定の時間期間内に閾値に到達し、タイミング回路によってこれが起こることを可能にするということを知っていることが受信者に有用になり得ることを認識し、所定の時間間隔でリセットするので、この期間内に閾値に到達している計数のみがトランザクション失敗信号の受信者に通知される。
【００１８】
一般的に、トランザクションの中止は、装置の他の構成要素にとって、何がトランザクション内の失敗を生じさせたのかが正確に分からず、分かっていることは、トランザクションが失敗したということのみであることを意味し得る。なぜなら、トランザクションが失敗するときに、トランザクションが開始する前にそうであった状態に後退することがトランザクションの特徴であるからであり、本技術は、同期例外の結果としてのトランザクション失敗の原因に関するさらなる情報が有益になり得ることを認識する。したがって、いくつかの実施例では、例外ハンドリング回路は、例外プログラム計数記憶装置を備え、例外プログラム計数記憶装置は、トランザクションを定義する命令のシーケンスの実行の間、同期例外の発生に関連付けられたプログラム計数値を格納し、例外ハンドリング回路は、計数が閾値に到達することに応答して、プログラム計数値を出力する。受信者は、次に、プログラム計数値を利用し、同期例外及びそれゆえ、トランザクション失敗の出所をより詳細に識別することができる。
【００１９】
少なくともいくつかの実施例は、データ処理装置を動作させる方法を提供し、方法は、データ処理命令に応答して、データ処理動作を実行するステップと、トランザクションを定義する命令のシーケンスに応答して、命令のシーケンスによって定義されるデータ処理動作のトランザクション・セットを、他のデータ処理動作に対してアトミックに実行させるステップと、トランザクションを定義する命令のシーケンスの実行の間、同期例外の発生に応答して、データ処理動作のトランザクション・セットが実行されないように、トランザクションを中止するステップと、トランザクションを定義する命令のシーケンスの実行の間、同期例外の発生に応答して、計数をインクリメントするステップと、計数が閾値に到達することに応答して、トランザクション失敗信号を生成するステップと、を含む。
【００２０】
少なくともいくつかの実施例は、ターゲット・プログラム・コードの命令の実行のための命令実行環境を提供する、ホスト・データ処理装置を制御するためのコンピュータ・プログラムを提供し、データ処理ロジック及び例外ハンドリング・ロジックを備え、データ処理ロジックは、データ処理命令に応答して、データ処理動作を実行し、データ処理ロジックは、トランザクション・サポート・ロジックを備え、トランザクション・サポート・ロジックは、トランザクションを定義する命令のシーケンスに応答して、命令のシーケンスによって定義されるデータ処理動作のトランザクション・セットを、データ処理ロジックによって実行される他のデータ処理動作に対してアトミックに実行させ、例外ハンドリング・ロジックは、トランザクションを定義する命令のシーケンスの実行の間、同期例外の発生に応答して、データ処理動作のトランザクション・セットが実行されないように、トランザクション・サポート・ロジックにトランザクションを中止させ、例外ハンドリング・ロジックは、例外計数ロジックを備え、例外計数ロジックは、トランザクションを定義する命令のシーケンスの実行の間、同期例外の発生に応答して、計数ロジックによって保持される計数をインクリメントし、例外ハンドリング・ロジックは、計数が閾値に到達することに応答して、トランザクション失敗信号を生成する。
【００２１】
少なくともいくつかの実施例は、上述したコンピュータ・プログラムを格納してもよい記憶媒体を提供する。記憶媒体は、非一時的記憶媒体でもよい。
【００２２】
いくつかの特定の実施例は、以下、図面を参照して記載される。
【００２３】
図１は、１つの実例の実施例における装置１０を概略的に示す。装置１０は、データ処理回路１２を備え、データ処理回路１２は、例えば、パイプラインのステージのシーケンスの形でもよい（図において左から右に至る）。データ処理回路１２は、メモリ１４から取り出され、命令キャッシュ１６内に一時的にキャッシュされる命令に応答してデータ処理動作を実行する。データ処理動作によって、データ・キャッシュ１８内に一時的にキャッシュされるデータ項目をメモリ１４から取り出してもよい。データ処理回路１２が実行するデータ処理動作は、レジスタ２０内に保持される値を参照し、変更してもよい。データ処理回路１２がトランザクション・ハンドリング回路２２を備えることが示され、トランザクション・ハンドリング回路２２によって、データ処理回路は、トランザクション動作をサポートすることができ、トランザクション動作に従って、識別された命令セット（例えば「トランザクション開始」命令で開始し、「トランザクション終了」命令で終了する）によって定義されるトランザクションは、他のデータ処理動作に対してアトミックに実行される。トランザクションがアトミックに実行される場合、失敗するならば、状態はトランザクションの開始に後退する必要があり、レジスタ２０のセット内の関連したレジスタの内容のスナップショットが、この目的に用いられるので、トランザクションが中止される場合、トランザクションの開始時に作成されるレジスタ・スナップショットを用いて、未遂のトランザクション内で実行されるそれらのレジスタに対する任意の変更を「巻き戻す」。装置１０は、例外制御回路２４をさらに備え、例外制御回路２４は、装置１０内で生ずるさまざまな動作に関する信号を受信し、応答して、例外信号を生成することができ、一般に例外信号は、典型的には、所定の例外ハンドリング・ルーチンを実行させる。さらに、例外制御回路２４は、トランザクションがいつ進行中かを示すトランザクション・ハンドリング回路からの信号を受信し、これは、以下の図面を参照し後でより詳しく述べるように例外制御回路２４の挙動を変更するが、特に、例外制御回路２４は、例外に応答して例外ハンドリング・ルーチンを実行させるよりはむしろ、例外がトランザクションの間に発生する場合、その例外を抑制し、トランザクションは中止される。さらに、このことが発生した回数の計数が現在閾値に到達した場合、トランザクション失敗信号が生成される。
【００２４】
図２は、１つの実例の実施例における例外ハンドリング回路３０を概略的に示す。例外ハンドリング回路３０が例外回路３２及び例外計数回路３４を備えることが示される。例外回路３２は、複数の信号を装置のさまざまな構成要素から受信し、それらの信号に応答して、例外を生成してもよく、データ処理装置における例外の生成に関して当業者によく知られている方法で実行するとみなされ得る。しかしながら、本技術によって提案される例外計数回路３４は、一定の状況下では、例外信号が例外計数回路３６から、及びそれゆえ例外ハンドリング回路３０からの影響なしで送信され得るが、その代わりに他の状況下では、トランザクション失敗信号が生成され得るとういう点で、例外信号に関するさまざまなフィルタとみなされ得る。この目的のために、例外計数回路は、例外計数器３６、閾値記憶装置３８、比較回路４０及び回路４２を備え、トランザクションが進行中でないとき、例外がいつ受信されたかを決定する。例外ハンドリング回路３０は、トランザクションがいつ進行中であるかを示す信号を受信する（すなわち、例えば図１の実例に示されるトランザクション・ハンドリング回路２２から）。トランザクションが進行中の間、例外が例外回路３２によって生成される場合、これは、インクリメントのみをするために構成される例外計数器３６によって、特に受信される。例外計数器３６によって示される値は、比較回路４０によって、格納された閾値３８と比較される。閾値は、（適切なレベルの特権を有するシステム内のエージェントによって、例えば特権レベル・コードによって）プログラム可能でもよく、この変形は、図２の破線によって示される。例外計数器が閾値に到達したことを比較回路４０が決定すると、トランザクション失敗信号は生成される。これは、例えば特権レベルのエージェントによって受信されてもよい（例えば、オペレーティングシステム・レベルで、例えば適切であるとみなされる場合防御方法で反応するために）。さもなければ、トランザクションが進行中の間、例外が受信されたが、例外計数器は閾値にまだ到達していない場合、例外は単に抑制され、トランザクションは、トランザクション回路４４の例外によって生成されている信号によって中止される。しかしながら、逆にいえば、トランザクションが進行中でない間、例外が受信される場合、これを識別するように構成される回路４４は、例外信号を生成させる（すなわち、実質的にこの例外信号は、影響されずに例外計数回路３４を通過する）。その結果、この例外のために定義される例外ハンドリング・ルーチンは、実行され得る。
【００２５】
図３は、１つの実例の実施例における例外ハンドリング回路を概略的に示す。例外回路５０は、上述したようにさまざまなシステム構成要素から信号を受信し、それに応答して、例外信号を生成してもよい。しかしながら、さらに、図３の実例に示されているように、例外回路５０は、例外のタイプの表示をさらに生成してもよい。例外信号及び例外のタイプの表示は、例外処理回路５２内の例外処理回路５２によって受信される。例外信号及び例外タイプ信号は、マスク５４によって受信され、マスク５４自身は、プログラム可能でもよく、それゆえ、受信した例外信号におけるフィルタとして作用する。しかしながら、マスク５４からつながる図中の破線が、例外信号がまたマスクされず、マスク５４をバイパスして直接回路５６に渡され、回路５６は、トランザクションが進行中でないときに例外が受信されるときを識別することができ、それゆえ、例外信号を例外処理回路５２により「フィルタリングせずに」渡すことを示すことに留意されたい。例外信号はまた、ＡＮＤロジック５８によって受信され、ＡＮＤロジック５８は、その他方の入力としてトランザクション進行中信号を受信する。その結果、トランザクションが進行中の間、例外が受信されると、中止トランザクション信号が生成される。マスクされた例外信号は、例外信号のタイプに依存して、異なるタイプの例外のためのそれぞれの計数を維持する２つの計数器６０、６２のうちの一方に渡される。これらの計数器は、例外の１つの特定タイプのためだけに計数を維持してもよく、又は、計数器の一方若しくは両方は、２つ以上のタイプの例外のために例外計数を照合してもよい。さらに、他の実例の実施例では、３つ以上の計数器が提供されてもよいが、図３では説明を簡単にするために２つのみが示される。各計数器は、関連付けられた閾値６４、６６を有し、それぞれの計数器がそのそれぞれの閾値に到達したことを関連付けられた比較回路６８、７０が決定するとき、タイプを示すトランザクション失敗信号は生成される。図３の実例では、２つのタイプのトランザクション失敗信号を生成することができる。自然に生成され得るトランザクション失敗信号の数は、提供される計数器の数に依存する。トランザクションが進行中の間、関連したタイプの例外が受信される場合、計数器が実施されるだけであるように、計数器がトランザクション進行中信号を受信することに留意されたい。
【００２６】
図４は、１つの実例の実施例における例外ハンドリング回路を概略的に示す。例外回路８０は、図３の例外回路５０と同じ方法で、装置のさまざまな構成要素からさまざまな信号を受信し、その結果、例外信号及び例外のタイプの表示を生成してもよい。これらは、例外処理回路８２によって及び特にその中に提供されるフィルタ８４によって受信され、フィルタ８４は、図３のマスク５４の方法で、特定の例外又は例外のタイプをフィルタリングするように構成されてもよく、関連したタイプの受信例外信号の表示を計数器８６、８８、９０の１つにさらに渡す。これらのそれぞれの計数器の各々により保持される値は、制御回路９２によって受信され、制御回路９２は、さまざまな制御機能を例外処理回路８２に提供し、計数器の各々のための定義済みの閾値を維持する。計数器の１つがその閾値に到達するとき、制御回路９２は、トランザクション失敗信号を生成することができる。さらに、計数器がその閾値に到達したかどうかにかかわらず、トランザクションが進行中の間、任意の例外が例外回路８０から受信されると、制御回路９２は、トランザクション中止信号を生成する。反対に、トランザクションが進行中でないときに例外が受信されると（制御信号が、装置のトランザクション・ハンドリング回路からトランザクション進行中信号を受信する）、制御信号は、例外信号を生成する（すなわち、効果的に、例外回路８０によって生成される例外信号は、例外処理回路８２によって訂正されずに渡される）。計数器の１つがその閾値に到達するときトランザクション失敗信号を生成することに加えて、制御回路９２はまた、トランザクション失敗に関する追加情報を提供する失敗プロファイル信号を生成する。これは、例えば、計数器８６、８８、９０の各々の現在値のスナップショットでもよく、それは受信された特定のタイプの例外の数を示してもよく、特に、所与の計数器をその閾値に到達させた特定のタイプの例外の数を示してもよい。さらに、制御回路９２は、現在のＰＣ値９４の表示を受信し、その結果、トランザクション失敗信号が生成され、関連付けられた失敗プロファイルが生成されるときの状況において、制御回路９２は、代替的に又は追加的に、現在のＰＣ値９４の表示を出力することができ、その結果、トランザクション失敗信号の受信者は、トランザクション内のどの命令によって、関連した計数器をその閾値に到達させた同期例外が生じたかを知ることができる。さもなければ、トランザクションが単に中止される場合、トランザクション失敗信号の受信者は、トランザクション・セットを定義する命令セット内のどの命令によって、同期例外及びそれゆえトランザクションの中止が生じたのかに関するいかなる兆候も有さないかもしれない。最後に、例外処理回路８２はまた、所定の時間間隔で制御回路９２に信号を送るように構成されるタイマー９６を備える。このタイミング信号の受信に応答して、制御回路９２は、計数器８６、８８、９０の各々にリセットを生じさせ、その結果、トランザクション失敗信号等が生成され得るのは、例外の閾値数がその所定の時間期間内に受信されるときだけである。これは、トランザクションを中止させる例外が、特定の頻度未満で発生するならば受け入れられると決定される場合、トランザクション失敗信号の受信者がトランザクション失敗信号によってあまりに頻繁に妨げられないことを意味する。一般的に、図２、図３及び図４に示される例外ハンドリング回路の実施例のさまざまな下位構成要素が、それらの実施例内で排他的に提供されているとみなすべきではなく、これらの特徴のさまざまな組み合わせが本技術の範囲内の他の実例の実施例において行われ得ることに留意されたい。逆にいえば、図２、図３及び図４の各々に示される構成要素の組み合わせは、個々に、互いに関連付けられて必ず提供されるとみなすべきではなく、例えば、図２は、１つの例外計数器のみを有する実施例を示し、図４は、複数の例外計数器を有し、さらにオプションの特徴、例えばプログラム計数器及びリセット・タイマを有する実例を示すが、プログラム計数器及びリセット・タイマが複数の計数器を有する実施例においてのみ提供され得ると結論すべきではなく、これらの一方又は両方は、単一の計数器のみを有する実施例において提供可能である。基本的方法で相互に相互作用すると別に説明されない限り、図２、図３及び図４の実例の実施例内の任意の下位構成要素も同様である。
【００２７】
図５は、１つの実例の実施例の方法において行われるステップのシーケンスを示す。フローは、データ処理が命令によって定義されて実行されるステップ１００から開始するとみなすことができる。次に、ステップ１０２において、命令実行が、例えば「トランザクション開始」命令によって、トランザクションの命令セットに入ったかどうかが決定される。入っていなかった場合、記載の方法は、トランザクションが進行中のときに発生するプロセスのみに関するので、フローはステップ１００に戻る。トランザクションが進行中の場合、ステップ１０２から、フローは、例外が生成されたかどうかが決定されるステップ１０４に進む。例外が生成されなかった場合、フローは、トランザクションが現在例えば「トランザクション終了」命令によって完了したかどうかが決定されるステップ１１２に進む。トランザクションが現在終了した場合、フローはステップ１００に戻る。しかしながら、トランザクションがまだ進行中の場合、フローはステップ１０４に戻る。さらに、ステップ１０４において、例外が受信されたと決定される場合、ステップ１０６において、例外計数器がインクリメントされ、ステップ１０８において、計数器が現在その閾値にあるかどうかが決定される。計数器が現在その閾値にない場合、フローは、トランザクションが中止されるステップ１１０に進み、フローはステップ１００に戻る。しかしながら、ステップ１０８において、計数器が現在その閾値にあると分かる場合、第１にステップ１１４において、トランザクションは中止され、次にステップ１１６において、トランザクション失敗信号が生成される。最後にステップ１１８において、例外計数器はリセットされ、フローはステップ１００に戻る。
【００２８】
図６は、用いられ得るシミュレータ実施を示す。上述した実施例が、関係する技術をサポートする特定の処理ハードウェアを動作させるための装置及び方法に関して、本発明を実施するが、コンピュータ・プログラムの使用により実施される本明細書において記載されている実施例に従って命令実行環境を提供することもまた可能である。この種のコンピュータ・プログラムは、ハードウェア・アーキテクチャのソフトウェア・ベースの実施を提供する限り、しばしばシミュレータと呼ばれる。シミュレータ・コンピュータ・プログラムの種類は、エミュレータ、仮想マシン、モデル及び動的なバイナリ変換を含むバイナリ変換を含む。典型的には、シミュレータ実施は、ホスト・プロセッサ２３０上で実行してもよく、オプションとしてホスト・オペレーティング・システム２２０を実行し、シミュレータ・プログラム２１０をサポートする。いくつかの構成では、ハードウェアと提供される命令実行環境との間のシミュレーションの複数の層が存在してもよく、及び／又は同じホスト・プロセッサ上に提供される複数の別個の命令実行環境が存在してもよい。歴史的に、強力なプロセッサは、相当な速度で実行するシミュレータ実施を提供することを必要としてきたが、この種の方法は、特定の状況、例えば、互換性のため又は再利用のために別のプロセッサに固有のコードを実行する要求があるとき、正当化され得る。例えば、シミュレータ実施は、命令実行環境に、ホスト・プロセッサ・ハードウェアによりサポートされない追加の機能性を提供してもよく、又は、異なるハードウェア・アーキテクチャに典型的に関連付けられた命令実行環境を提供してもよい。シミュレーションの概要は、「Ｓｏｍｅ  Ｅｆｆｉｃｉｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｉｍｕｌａｔｉｏｎ  Ｔｅｃｈｎｉｑｕｅｓ」、Ｒｏｂｅｒｔ  Ｂｅｄｉｃｈｅｋ、Ｗｉｎｔｅｒ  １９９０  ＵＳＥＮＩＸ  Ｃｏｎｆｅｒｅｎｃｅ、５３〜６３頁において与えられる。
【００２９】
実施例が特定のハードウェア構成又は特徴を参照して以前記載された程度まで、シミュレーションされた実施例では、等価な機能性は、適切なソフトウェア構成又は特徴によって提供され得る。例えば、特定の回路は、シミュレーションされた実施例においてコンピュータ・プログラム・ロジックとして実施されてもよい。同様に、メモリ・ハードウェア、例えばレジスタ又はキャッシュは、シミュレーションされた実施例においてソフトウェア・データ構造として実施されてもよい。上述した実施例において参照されるハードウェア要素の１つ又は複数がホスト・ハードウェア（例えば、ホスト・プロセッサ２３０）上に存在する構成では、いくつかのシミュレーションされた実施例は、適切な場合、ホスト・ハードウェアを利用してもよい。
【００３０】
シミュレータ・プログラム２１０は、（非一時的媒体でもよい）コンピュータ可読記憶媒体２１２上に格納されてもよく、（アプリケーション、オペレーティング・システム及びハイパーバイザを含んでもよい）シミュレータ・プログラム２１０によってモデル化されているハードウェア・アーキテクチャのアプリケーション・プログラム・インタフェースと同じであるターゲット・コード２００に、プログラム・インタフェース（命令実行環境）を提供する。このように、ターゲット・コード２００のプログラム命令は、シミュレータ・プログラム２１０を用いて命令実行環境内から実行されてもよいので、上述した装置６０のハードウェア特徴を実際には有さないホスト・コンピュータ２３０は、これらの特徴をエミュレートすることができる。例えば、シミュレータ・プログラム２１０は、データ処理ロジック２１４及び例外ハンドリング・ロジック２１６を含み、上述したように、データ処理回路及び例外ハンドリング回路のいずれかの挙動をシミュレーションしてもよい。このように、シミュレータ・プログラム２１０はまた、トランザクション・サポート・ロジックを含み、トランザクション・サポート・ロジックは、トランザクションを定義する命令のシーケンスに応答して、命令のシーケンスによって定義されるデータ処理動作のトランザクション・セットを、データ処理ロジックによって実行される他のデータ処理動作に対してアトミックに実行させてもよい。
【００３１】
つまり、要約すると、装置、データ処理装置を動作させる方法、及びそのシミュレータが開示される。データ処理回路は、命令に応答して、データ処理動作を実行し、いくつかの命令セットは、データ処理回路によって実行される他の動作に対してアトミックに実行されるべきトランザクションとして定義され得る。トランザクションの間、同期例外が発生するとき、トランザクションは中止され、例外計数器はインクリメントされる。計数器が閾値に到達すると、トランザクション失敗信号が生成され、適切な場合、トランザクションの中止を実行させる例外のこの数に対する応答を可能にする。
【００３２】
本出願において、「・・・ように構成される」という用語は、装置の要素が定義された動作を実行可能な構成を有することを意味するために用いられる。この文脈において、「構成」は、ハードウェア又はソフトウェアの相互接続の構成又は方法を意味する。例えば、装置は、定義された動作を提供する専用のハードウェアを有してもよく、又は、プロセッサ又は他の処理デバイスは、機能を実行するようにプログラムされてもよい。「ように構成される」とは、装置要素が定義された動作を提供するためにいかなる形であれ変えられる必要があることを示唆しない。
【００３３】
図示の実施例は、添付の図面を参照して本明細書において詳細に記載されているが、本発明がそれらの正確な実施例に限定されるものではなく、さまざまな変化、追加及び変更態様が添付の特許請求の範囲によって定義される本発明の要旨を逸脱せずに当業者によって達成可能であることを理解されたい。例えば、従属請求項の特徴のさまざまな組み合わせは、本発明の要旨を逸脱せずに独立請求項の特徴によってなされ得る。
【図１】
2021520548.tif 000003
【図２】
2021520548.tif 000004
【図３】
2021520548.tif 000005
【図４】
2021520548.tif 000006
【図５】
2021520548.tif 000007
【図６】
2021520548.tif 000008
【国際調査報告】
2021520548.tif 000009
2021520548.tif 000010