方法であって、実行中に、通常発生する条件が満たされることに応答して、トランザクショナルメモリシステムによって実行可能な少なくとも1つの第1の命令を含むコンピューター命令のシーケンスを解析することと、前記通常発生する条件が満たされるか否かを判断するとともに、前記通常発生する条件が満たされないことに応答して前記トランザクショナルメモリシステムの例外ハンドリング特徴部とインターフェースするように構成された少なくとも1つの無分岐命令を前記コンピューター命令のシーケンスに挿入することと、を含む、方法。前記コンピューター命令のシーケンス内において少なくとも1つの第2の命令を識別することであって、該少なくとも1つの第2の命令は、前記通常発生する条件が満たされないことに応答して実行可能であることと、前記少なくとも1つの第2の命令を、前記通常発生する条件が満たされないことに応答して前記トランザクショナルメモリシステムの前記例外ハンドリング特徴部を起動するように構成された少なくとも1つの例外発生命令に関連付けることとを含む、請求項1に記載の方法。少なくとも1つの第2の命令を前記コンピューター命令のシーケンスから除去することを含む、請求項1に記載の方法。前記少なくとも1つの第1の命令を前記通常発生する条件について最適化することを含む、請求項1に記載の方法。前記少なくとも1つの無分岐命令を比較命令及び分岐命令の代わりに前記コンピューター命令のシーケンスに挿入することを含む、請求項1に記載の方法。前記少なくとも1つの無分岐命令において、メモリレジスタが特定の値を保持するか否かを判断することを含む、請求項1に記載の方法。前記特定の値が符号付きであるか否かを判断することと、前記特定の値が符号付きである場合に、前記特定の値に関連付けられた符号ビットをマスクすることとを含む、請求項6に記載の方法。前記少なくとも1つの無分岐命令において、ポインターが特定のメモリアドレスに関連付けられているか否かを判断することを含む、請求項1に記載の方法。前記少なくとも1つの無分岐命令において、データの一部が特定の値を有するか否かを判断することを含む、請求項1に記載の方法。前記少なくとも1つの無分岐命令において、トリップカウントが特定の値を有するか否かを判断することを含む、請求項1に記載の方法。前記少なくとも1つの無分岐命令において、少なくとも1つの例外ハンドリング命令を起動することであって、前記コンピューター命令のシーケンスの実行をチェックポイントにロールバックするか又は前記コンピューター命令のシーケンスの前記実行をアボートすることを含む、請求項1に記載の方法。前記通常発生する条件が満たされないことに応答して少なくとも1つの例外ハンドリング命令を起動することと、前記少なくとも1つの例外ハンドリング命令の前記起動することに応答して最適化されていない命令を実行することとを含む、請求項1に記載の方法。前記少なくとも1つの第1の命令の前に、前記少なくとも1つの無分岐命令を前記コンピューター命令のシーケンスに挿入することを含む、請求項1に記載の方法。チェックポイント命令及びコミット命令を前記コンピューター命令のシーケンス内に挿入することによって、前記コンピューター命令のシーケンスの少なくとも1つの命令を、前記トランザクショナルメモリシステムによって実行するように構成されたトランザクションとして定義することを含む、請求項1に記載の方法。前記通常発生する条件が満たされないことに応答して、ハードウェアベースのトランザクショナルメモリシステム及びソフトウェアベースのトランザクショナルメモリシステムのうちの少なくとも一方とインターフェースすることを含む、請求項1に記載の方法。コンピューティングデバイスであって、少なくとも1つのプロセッサと、該少なくとも1つのプロセッサに結合されたコンピューター回路部であって、前記少なくとも1つのプロセッサに請求項1~15のいずれか1項に記載の方法を実行させるように構成されている、コンピューター回路部と、を備える、コンピューティングデバイス。少なくとも1つのコンピューターアクセス可能媒体であって、実行されたことに応答して、コンピューティングデバイスが請求項1~15のいずれか1項に記載の方法を実行することをもたらす複数の命令を含む、少なくとも1つのコンピューターアクセス可能媒体。方法であって、コンピューター命令のシーケンスを、コンピューティングデバイスのトランザクショナルメモリシステムによって実行するように構成されたトランザクションとして識別することであって、該トランザクションは、チェックポイント命令及びコミット命令によって定義され、該トランザクションは、通常発生する条件が満たされることに応答して実行可能な少なくとも1つの第1の命令と、前記通常発生する条件が満たされないことに応答して実行可能な少なくとも1つの第2の命令とを含むことと、少なくとも1つの例外発生命令を前記コンピューター命令のシーケンスに挿入することであって、該少なくとも1つの例外発生命令は、前記少なくとも1つの第1の命令が分岐することなく実行されることを可能にするように構成されるとともに、前記通常発生する条件が満たされないことに応答して前記トランザクショナルメモリシステムの例外ハンドリング特徴部を起動するように構成されていることと、前記少なくとも1つの第2の命令を前記トランザクションから除去することと、を含む、方法。前記通常発生する条件が満たされることに応答して少なくとも1つの最適化された命令を実行し、前記通常発生する条件が満たされないことに応答して前記トランザクションの実行を前記チェックポイントにロールバックして、少なくとも1つの最適化されていない命令を実行するように構成される、請求項18に記載の方法。コンピューティングデバイスであって、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサに結合されたコンピューター回路部であって、前記少なくとも1つのプロセッサに請求項18又は19に記載の方法を実行させるように構成されている、コンピューター回路部と、を備える、コンピューティングデバイス。少なくとも1つのコンピューターアクセス可能媒体であって、実行されたことに応答して、コンピューティングデバイスが請求項18又は19に記載の方法を実行することをもたらす複数の命令を含む、少なくとも1つのコンピューターアクセス可能媒体。方法であって、コンピューター命令のシーケンスを解析することと、前記コンピューター命令のシーケンスの少なくとも1つのコード領域を識別するように構成されたコード特殊化ルーチンを実行することであって、前記少なくとも1つのコード領域は、前記コンピューティングデバイスのトランザクショナルメモリシステムによってトランザクションとして実行可能であることと、前記コード領域のうちの1つ又は複数について、該コード領域に、通常発生する条件が満たされたか否かを判断するように構成された少なくとも1つの無分岐命令を挿入することと、該コード領域に、前記通常発生する条件が満たされないことに応答して例外を生成するように構成された少なくとも1つの例外発生命令を挿入することと、を含む、方法。前記少なくとも1つの無分岐命令は、ビット単位論理オペレーション及び算術オペレーションを含む、請求項22に記載の方法。前記ビット単位論理オペレーションは、排他的ORXOR命令であり、前記少なくとも1つの例外発生命令は、オーバーフローフラグをセットすることを含む、請求項23に記載の方法。コンピューティングデバイスであって、少なくとも1つのプロセッサと、前記少なくとも1つのプロセッサに結合されたコンピューター回路部であって、前記少なくとも1つのプロセッサに請求項22~24のいずれか1項に記載の方法を実行させるように構成されている、コンピューター回路部と、を備える、コンピューティングデバイス。少なくとも1つのコンピューターアクセス可能媒体であって、実行されたことに応答して、コンピューティングデバイスが請求項22~24のいずれか1項に記載の方法を実行することをもたらす複数の命令を含む、少なくとも1つのコンピューターアクセス可能媒体。本開示の概念は、様々な変更及び代替の形態を受ける入れることができるが、それらの概念の特定の例示的な実施形態が図面に例として示され、本明細書において詳細に説明される。しかしながら、本開示の概念を開示された特定の形態に限定する意図はなく、それとは逆に、意図するものは、添付の特許請求の範囲によって画定される本発明の趣旨及び範囲内に含まれる全ての変更、均等物、及び代替形態を包含することであることが理解されるべきである。以下の説明では、本開示のより十分な理解を提供するために、ロジックの実施態様、オペコード、オペランドを指定する手段、リソース分割/共有/複製の実施態様、システム構成要素のタイプ及び相互関係、並びにロジック分割/統合の選択肢等の多数の具体的な詳細が述べられている。しかしながら、本開示の実施形態は、そのような具体的な詳細がなくても実施することができることが当業者によって理解されるであろう。それ以外の場合には、制御構造、ゲートレベル回路、及び完全なソフトウェア命令シーケンスは、本発明を分かりにくくしないために詳細に示されていない。当業者であれば、含まれた説明を用いると、必要以上の実験を行うことなく、適切な機能を実施することができるであろう。本明細書において1つの実施形態、一実施形態、一例の実施形態等と言うとき、これは、説明される実施形態が特定の特徴、構造、又は特性を含むことができるが、あらゆる実施形態がその特定の特徴、構造、又は特性を必ずしも含んでいるとは限らない場合があることを示す。その上、そのような語句は、必ずしも同じ実施形態を指しているとは限らない。さらに、特定の特徴、構造、又は特性が一実施形態に関して説明されるとき、明示的に説明されているか否かを問わず、そのような特徴、構造、又は特性を他の実施形態に関して実施することが当業者の知識の範囲内にあることを述べておく。本発明の実施形態は、ハードウェア、ファームウェア、ソフトウェア、又はそれらの任意の組み合わせで実施することができる。コンピューターシステムにおいて実施される本発明の実施形態は、構成要素間の1つ又は複数のバスベースの相互接続部及び/又は構成要素間の1つ又は複数のポイントツーポイント相互接続部を備えることができる。本発明の実施形態は、一時的又は非一時的な機械可読媒体によって担持されるか又はこの機械可読媒体上にストアされる命令として実施することもできる。これらの命令は、1つ又は複数のプロセッサが読み出して実行することができる。機械可読媒体は、機械例えば、コンピューティングデバイスによって可読な形態で情報をストア又は送信するための任意のデバイス、メカニズム、又は物理構造体として具現化することができる。例えば、機械可読媒体は、読み出し専用メモリROM、ランダムアクセスメモリRAM、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、ミニSDカード又はマイクロSDカード、メモリスティック、電気信号等として具現化することができる。図面において、デバイス、モジュール、命令ブロック、及びデータ要素を表す要素等の図的要素の特定の配列又は順序付けは、説明を容易にするために示されている場合がある。しかしながら、図面におけるこれらの図的要素の特定の順序付け又は配列は、プロセスの特定の順序又はシーケンスが必要とされていることも、プロセスの分離が必要とされていることも暗に意味するように意図しているものではないことが当業者によって理解されるべきである。さらに、図的要素が図面に含まれているということは、そのような要素が全ての実施形態において必要とされることを暗に意味するように意図しているものでもなければ、そのような要素によって表される特徴部をいくつかの実施形態における他の要素に含めることができないか又は他の要素と組み合わせることができないことを暗に意味するように意図しているものでもない。一般に、命令ブロックを表すのに用いられる図的要素は、任意の好適な形態の機械可読命令を用いて実施することができる。この任意の好適な形態の機械可読命令は、ソフトウェアアプリケーション又はファームウェアアプリケーション、プログラム、関数、モジュール、ルーチン、プロセス、プロシージャ、プラグイン、アプレット、ウィジェット、コードフラグメント等である。そのような各命令は、任意の好適なプログラム言語、ライブラリー、アプリケーションプログラミングインターフェースAPI、及び/又は他のソフトウェア開発ツールを用いて実施することができる。例えば、いくつかの実施形態は、Java、C、及び/又は他のプログラム言語を用いて実施することができる。同様に、データ又は情報を表すのに用いられる図的要素は、レジスタ、データストア、テーブル、レコード、アレイ、インデックス、ハッシュ、マップ、ツリー、リスト、グラフ、ファイル任意のファイルタイプ、フォルダー、ディレクトリー、データベース等の任意の好適な電子的配列体又は電子的構造体を用いて実施することができる。さらに、図面において、実線若しくは破線又は矢印等の接続要素が、2つ以上の他の図的要素間の接続、関係、又は関連付けを示すのに用いられている場合、そのような接続のいかなる要素がないことも、接続、関係、又は関連付けが存在する可能性がないことを暗に意味するように意図するものではない。換言すれば、要素間のいくつかの接続、関係、又は関連付けは、本開示を分かりにくくしないように図面に示されていない場合がある。また、図示を容易にするために、要素間の複数の接続、関係、又は関連付けを表すのに、単一の接続要素が用いられる場合がある。例えば、接続要素が、信号、データ、又は命令の通信を表す場合、そのような要素は、通信を実施するために必要に応じて、1つ又は複数の信号パス例えば、バスを表すことができることが当業者によって理解されるべきである。次に図1を参照すると、一例示のコンピューティングデバイス100が、少なくとも1つのプロセッサ110、メモリ120、入力/出力I/Oサブシステム122、記憶デバイス124、及び1つ又は複数の周辺デバイス140を備える。プロセッサ110は、図2に示すようなトランザクショナルメモリシステム222をサポートする。以下でより詳細に説明するように、コンピュータープログラムコードが実行中に解析される。スペシャライザー228は、トランザクショナルメモリシステム222とインターフェースして、1つ又は複数の通常発生する条件についてのコード領域又はトランザクションを特殊化する。スペシャライザー228は、従来のコード特殊化技法が用いられるときにしばしば行われるように分岐命令をプログラムコードに追加するのではなく、トランザクショナルメモリシステム222の例外ハンドリング特徴部を利用するように構成された1つ又は複数の無分岐命令branchlessinstructionsをコード領域又はトランザクションに挿入する。より具体的には、スペシャライザー228によって挿入された命令複数の場合もあるは、通常発生する条件が満たされない場合に例外を生成するように構成されている。このようにして、通常のプログラムの流れが、通常発生する条件が満たされることに応答して割り込まれることなく、また分岐することなく継続することが可能になる。コンピューティングデバイス100は、特定のアプリケーションに応じて、例えば、デスクトップコンピューターシステム、ラップトップコンピューターシステム若しくはタブレットコンピューターシステム、サーバー、エンタープライズコンピューターシステム、コンピューターのネットワーク、ハンドヘルドコンピューティングデバイス、又は他の電子デバイス等の任意のタイプのコンピューティングデバイス内に又は任意のタイプのコンピューティングデバイスとして具現化することができる。例示のプロセッサ110は、単一のコア112、114、116から構成される複数のプロセッサコア又は論理セクションを備える。これらのプロセッサコア又は論理セクションは、本明細書では、説明を容易にするために単にコアと呼ばれる。コア112、114、116のうちの1つ又は複数は、マルチスレッドコンピュータープログラムを処理するように構成することができる。コア112、114、116は、1つ又は複数のキャッシュメモリ118を備えるか又はそれらのキャッシュメモリに通信結合される。キャッシュメモリ118は、スペシャライザー228及び/又はコンピューティングデバイス100の他の構成要素の演算中にデータ及び/又は命令を一時的にストアするのに利用することができる。キャッシュメモリ118に加えて、プロセッサ110及び/又はそのコア112、114、116は、メモリ120を備えるか、又はそうでない場合にはメモリ120に通信結合される。メモリ120のいくつかの部分は、ダイナミックランダムアクセスメモリデバイスDRAM、同期ダイナミックランダムアクセスメモリデバイスSDRAM、ダブルデータレートダイナミックランダムアクセスメモリデバイスDDRSDRAM、及び/又は他の揮発性メモリデバイス等の任意のタイプの好適なメモリデバイスとして具現化することができる。プロセッサ110は、I/Oサブシステム122にも通信結合されている。具体的には図示していないが、I/Oサブシステム122は、通常、メモリコントローラー例えば、メモリコントローラーハブMCH又はノースブリッジと、入力/出力コントローラー例えば、入力/出力コントローラーハブICH又はサウスブリッジと、ファームウェアデバイスとを備える。もちろん、他の実施形態では、他の構成を有するI/Oサブシステムを用いることができる。例えば、いくつかの実施形態では、I/Oサブシステム122は、システムオンチップSoCの一部分を成すことができ、プロセッサ110及びコンピューティングデバイス100の他の構成要素とともに、単一の集積回路チップ上に組み込むことができる。したがって、I/Oサブシステム122の各構成要素は、いくつかの実施形態では、共通の集積回路チップ上に位置することができることが理解されるであろう。I/Oサブシステム122は、1つ又は複数の記憶デバイス124に通信結合されている。記憶デバイス124のいくつかの部分は、ディスク記憶デバイス例えば、ハードディスク、メモリカード、メモリスティック等の、データ及び/又は命令をストアするための任意の好適なデバイスとして具現化することができる。いくつかの実施形態では、オペレーティングシステムO/S126、プログラムコード例えば、アプリケーションコード128の1つ又は複数のシーケンス、プログラムコンパイラー130、及び/又はデータベース管理システムDBMS132を記憶デバイス124において具現化することができる。実行中に、O/S126、コード128、コンパイラー130、及び/又はDBMS132のいくつかの部分を、より高速な処理又は他の理由のためにメモリ120及び/又はキャッシュ118内にロードすることができる。I/Oサブシステム122は、1つ又は複数の周辺デバイス140に通信結合することができる。周辺デバイス複数の場合もある140は、例えば、コンピューティングデバイス100の使用目的に応じて、1つ又は複数のネットワークインターフェース、グラフィックスアダプター及び/又はビデオアダプター、キーボード、タッチスクリーン、ディスプレイ、プリンター、データ記憶デバイス、及び/又は他の周辺デバイスを含むことができる。さらに、コンピューティングデバイス100は、説明を明瞭にするために図1に図示していない他の構成要素、部分構成要素、及びデバイスを備えることができることが理解されるべきである。一般に、コンピューティングデバイス100の構成要素は、1つ又は複数の信号パスによって図1に示すように通信結合される。これらの信号パスは、双方向矢印として図的に表されている。そのような信号パスは、それぞれのデバイス間の通信を容易にすることが可能な任意のタイプの有線又は無線の信号パスとして具現化することができる。例えば、信号パスは、任意の数のワイヤー、プリント回路基板トレース、ビア、バス、ポイントツーポイント相互接続、介在デバイス等として具現化することができる。次に図2を参照すると、例示のプロセッサコア112は、フェッチユニット210、論理ユニット212、1つ又は複数のレジスタ214、実行ユニット216、及びリタイアメントユニット218を備える。具体的に図示していないが、コア114、116のうちの1つ又は複数は、コア112と同じ又は類似の構成を有することができることが理解されるべきである。フェッチユニット210、論理ユニット212、レジスタ214、実行ユニット216、及びリタイアメントユニット218のそれぞれは、コンピューター回路部として、例えば、コア112の中央処理ユニットの電子構成要素として具現化することができる。コンピューティングデバイス100の動作中、フェッチユニット210は、コア112によって実行される命令を、キャッシュ118、メモリ120、及び/又は記憶デバイス124から取得する。論理ユニット212は、命令を処理し、実行ユニット216が実行することができる形態例えば、機械レベルの命令に変換する。トランザクショナルメモリシステム222の設計によれば、実行ユニット216が命令の実行に成功した後、リタイアメントユニット218は、それらの命令をコミットし、次いで、例えば、レジスタをデアロケートすること又はプロセッサ状態を更新することによってそれらの命令をリタイアさせることができる。レジスタ214は、データ値、ポインターアドレス、及び/又はトリップカウント等の、命令の処理及び/又は実行に関与する値をストアするのに用いることができる。一般に、トランスレーター220は、プログラマーがアクセス可能なコンピューター命令を、プロセッサアーキテクチャと適合した実行可能形態にトランスレートするように構成されている。例示の実施形態では、トランスレーター220は、プログラムコードを、トランザクショナルメモリシステム222をサポートするコンピューターアーキテクチャ上で実行されるように適応させる。例えば、ソフトウェアトランザクショナルメモリシステムを備えることができる他の実施形態では、トランスレーター220は、特定の実施態様に応じて、コンパイラー、アプリケーションプログラミングインターフェースAPI、データベース管理システム等として具現化することができる。トランスレーター220は、オプティマイザー226を備える。一般的に言えば、オプティマイザー226は、コンピュータープログラムの1つ又は複数の属性を、そのプログラムの実行中に最小又は最大にするように構成されている。当業者が理解すべきであるように、特定のアプリケーション又はシステム設計の要件に応じて、用いることができる多くのタイプの最適化が存在する。例えば、いくつかのオプティマイザーは、プログラムコードを検査して、実行頻度の高い特定のシーケンスにおいて、コンピューター命令のいずれかのシーケンスがより少ないコードと置き換えることができるか否かを確かめる。例示の実施形態では、オプティマイザー226は、共有メモリへのアクセスを必要とするコードの領域例えば、ロード命令又はストア命令を含むコード領域を識別し、それらのコードの領域をトランザクションと定義する。オプティマイザー226は、トランザクションを定義するために必要に応じてチェックポイント及びコミット命令をコード領域内に挿入する。いくつかの実施形態では、バイナリートランスレーションダイナミックオプティマイザー、又は命令のシーケンスに遭遇すると、それらを最適化し、次いで、最適化した命令をキャッシュするように構成された類似のデバイスを用いることができる。他の実施形態では、スタティックオプティマイザーを用いることができる。オプティマイザー226は、スペシャライザー228を部分構成要素として備えることもできるし、スペシャライザー228は、図示するように、トランスレーター220の別個の構成要素として具現化することもできる。スペシャライザー228は、通常発生する条件について、コンピューター命令のシーケンスを最適化するように構成されている。特定の条件が通常発生するものであるとみなされるか否かは、例えば、プログラマーが事前に決定することもできるし、例えば、コンピューター命令の以前の実行の結果としてオンザフライで決定することもできる。コンピューター命令を特殊化することが望ましいとすることができる通常発生する条件のいくつかの例には、ランタイム曖昧性除去チェックruntimedisambiguationchecks例えば、コードは、特定のエイリアスが発生する場合又はエイリアスがない場合に特殊化される、値特殊化例えば、コードは、NULL等の変数の高頻度で生じる値が発生する場合に特殊化される、及びループマルチバージョニングloopmultiversioning例えば、コードは、特定のループトリップカウントが発生する場合に特殊化されるが含まれる。図3~図6に関して以下で説明するように、例示のスペシャライザー228は、新たな分岐命令を何ら導入することなく、トランザクショナルメモリシステム222の特徴部を用いて、通常発生する条件についてコンピューター命令のシーケンスを最適化するように構成されている。例示のトランザクショナルメモリシステム222は、制限付きトランザクショナルメモリRTMシステム等の、トランザクションをサポートするハードウェアシステムとして具現化される。ただし、他の実施形態では、ソフトウェアトランザクショナルメモリシステムSTM又は例外に対する制御を暗黙的に転送する他のシステムを用いることができることが理解されるべきである。トランザクショナルメモリシステム222は、チェックポイントロジック230、トランザクション実行セマンティクス232、オーバーフローロジック234、及び例外ハンドラー236を備える。チェックポイントロジック230は、オプティマイザー226とインターフェースして、チェックポイントを確立するとともにコンピューター命令のシーケンス内にコード領域又はトランザクションを定義するように構成されたコンピューター命令を備える。加えて、チェックポイントロジック230は、チェックポイント命令に応答して行われる動作複数の場合もあるを指定することができる。例えば、チェックポイントロジック222は、チェックポイント命令に応答して、コア112又はコンピューティングデバイス100の他の構成要素の特定の状態に関係したデータのストアを開始することができる。トランザクション実行セマンティクス232は、プログラムコードにおいてトランザクショナルメモリシステム222の特徴部を起動して利用するのに用いることができるセマンティクス例えば、命令又はコードライブラリーを備える。例えば、トランザクション実行セマンティクス232は、例外に対する制御の例えば、システム設計に応じて、インタープリター又はネイティブ実行への暗黙的な転送を可能にする。例示の実施形態では、トランザクション実行セマンティクス232は、チェックポイントセマンティクス、ロールバックセマンティクス、及びコミットセマンティクス、並びにブール又はビット単位の論理のためのセマンティクス、算術のためのセマンティクス、及び例外ハンドラー236を起動するためのセマンティクスを備える。オーバーフローロジック234は、オーバーフローが発生した例えば、或る値が、キャッシュ118又はメモリ120にストアすることができる最大サイズを超えた場合に行われる動作複数の場合もあるを指定するように構成されたロジックを備える。例えば、オーバーフローロジック234は、オーバーフローイベントに応答して、コンピューティングデバイス100又はその構成要素の状態に関係したデータをストアすることができる。例外ハンドラー236は、フェッチユニット210によって取得された命令によって例外が生成された場合に行われる動作複数の場合もあるを決定するように構成されたロジックを備える。例えば、例外ハンドラー236は、プログラム実行を命令のシーケンス内の以前のチェックポイントにロールバックし、そのチェックポイントから実行を続けるか、又はトランザクションをアボートするように構成されたロジックを備えることができる。算術論理ユニットALU224は、算術ユニット240及び論理ユニット242を備える。算術ユニット240は、加算、減算、除算、乗算等の算術演算をハンドリングするように構成されている。論理ユニット242は、アンド演算、オア演算、及び排他的オア演算等のブール及び/又はビット単位の論理演算をハンドリングするように構成されている。次に図3を参照すると、動作中、コンピューター命令322のシーケンスが、トランスレーター220に入力される。命令322は、オプティマイザー226及び/又はスペシャライザー228によってまだ処理されていないので、特殊化されていないコードと呼ばれる。本明細書において説明したようなトランスレーター220オプティマイザー226及びスペシャライザー228を備えるによる処理後、命令322の最適化及び/又は特殊化バージョン330が生成される。これらの最適化及び/又は特殊化命令330は、実行ユニット216による実行までキャッシュ118にストアすることができる。次に図4を参照すると、コードスペシャライザー228によって実行可能な例示の方法400が示されている。ブロック410において、方法400は、オプティマイザー226によってコード領域又はトランザクションと定義された1つ又は複数の命令を例えば、キャッシュ118又はメモリ120から取得する。この開示において、コード領域は、トランスレーター220例えば、オプティマイザー226によって、少なくとも1つのトランザクションを含むものと判断されたコンピューター命令のシーケンスを含むことができる。換言すれば、いくつかの実施形態では、コード領域は、1つ又は複数のトランザクションを含むことができる一方、他の実施形態では、コード領域は、単一のトランザクションを含むことができる。例示の実施形態では、トランザクションは、チェックポイント命令及びその後に続くコミット命令によって定義される。ブロック412において、方法400は、コード領域内の各トランザクションを解析して、トランザクション内の1つ又は複数の命令のうちのいずれが、通常発生する条件に応答して実行可能であるように所望されているのかを決定する。この決定を行うために、方法400は、通常発生する条件が満たされた場合にのみ実行される或る特定の命令が存在するか否かを検討することができる。代替的に又は追加的に、方法400は、通常発生する条件に応答して、トランザクション内の命令の全て又は複数を実行することができるが、通常発生する条件に応答して、それらの命令のうちのいくつかのみを実行することが望ましい場合があると判断することができる。これは、例えば、コードのいくつかの部分が異なる条件について最適化されているときに当てはまる場合がある。ブロック414において、方法400は、1つ又は複数の無分岐命令をコード領域内に挿入する。これらの無分岐命令は、通常発生する条件についての通常のプログラムの流れ例えば、分岐を有しないを保存するように構成されている。例示の実施形態では、無分岐命令複数の場合もあるは、通常発生する条件が満たされないことに応答して、例外を生成するそれによって、例外ハンドラー236を起動するように構成された少なくとも1つの命令を含む。無分岐命令は、ALU224がサポートすることができる任意の形態の非分岐nonbranchingの論理演算及び/又は算術演算を含むことができる。換言すれば、ブロック414の結果として、比較命令及び分岐命令はコード領域内に挿入されない。ブロック416において、方法400は、特定のアプリケーション又は設計に適切な場合があるように、通常発生する条件に応答して実行可能であるように所望されていないいずれかの命令をコード領域内に識別し、例外ハンドラー236とインターフェースして、それらの命令を例外ハンドリングメカニズム例えば、ロールバック命令又はアボート命令に関連付ける。トランザクショナルメモリシステム及び例外に対する制御を暗黙的に転送する他のシステムでは、通常発生する条件に応答して実行可能でない命令の制御及び実行の転送は、例外ハンドラー236によって暗黙的にハンドリングされる。ブロック418において、方法400は、通常発生する条件に応答して実行可能であるように所望されていない命令例えば、ブロック416において例外に関連付けられた命令をコード領域から除去する。これは、例えば、命令の周囲にコメント括弧を挿入することによって行うことができる。命令は、例えば、通常発生しない条件uncommonlyoccurringcondition:まれに発生する条件が生じた場合に、プログラムがアボートするように完全に除去することもできるし、プログラムコードのシーケンシャルリスト内の別のロケーションに移動させることもできる。このようにして、コード領域又はトランザクションは、通常発生する条件を対象にするコードのみを含むように特殊化することができる。その上、通常発生する条件に応答して実行可能であるように所望されているコードが最適化された場合、コード領域は、最適化されたコードのみを含むことができる。通常発生しない条件のハンドリングを対象にするか、又は通常発生する条件に応答して実行可能であるように所望されていないいずれのコードも、最適化されないまま残すこともできるし、オプティマイザー226によって別個に処理することもできる。次に図5を参照すると、従来のコード特殊化技法を用いて特殊化されたコンピューター命令522のシーケンスの一例が示されている。命令522は、コード領域532を含む。図示していないが、コード522は、他のコンピューター命令及び/又はコード領域も同様に含むことができることが理解されるべきである。従来のコード特殊化技法を用いて処理した後、コード領域532が、その後にコミット命令550がシーケンシャルに続くチェックポイント命令540によって定義される。チェックポイント命令540とコミット命令550との間において、比較命令及び分岐命令542がコード領域532に追加されている。比較命令及び分岐命令542は、2つのレジスタr1及びr2にストアされたデータを比較する。r1及びr2にストアされた値が等しい場合、プログラム実行は、Unoptimizedversion最適化されていないバージョンというラベルによって示されているように、通常発生する条件が満たされない場合に実行されるように構成された命令544をスキップする。プログラムフローは、Optimizedversion最適化されたバージョンラベルにジャンプし、それから、通常発生する条件が満たされた場合に実行されるように構成された命令546の実行を継続する。命令546が実行を終了すると、プログラムフローは、コミット命令550に進む。比較命令及び分岐命令542の結果が、r1及びr2にストアされたデータが等しくないことを示す場合、プログラムフローは、命令544の実行に進む。命令544が実行を終了すると、プログラムフローは、Fallthroughラベル548にジャンプする。上記例から見て取ることができるように、分岐は、通常発生する条件例えば、r1がr2に等しいが満たされるときと、通常発生しない条件例えば、r1がr2に等しくないが満たされるときとの双方のときに行われる。次に図6を参照すると、本明細書において開示したようなスペシャライザー228によって処理された後のコード領域632を含むコンピューター命令622のシーケンスが示されている。この命令のシーケンスの残りの部分例えば、命令622のシーケンスのうち、コード領域632の外部にある部分は、コード領域632の処理による影響を受けないまま維持される場合もあるし、コード領域632の処理によって変更される場合もある。例えば、通常発生しない条件の発生に応答して実行されるように構成された命令は、コード領域632から除去して命令622のシーケンス内の他の箇所に配置することができる。特殊化されたコード領域632は、比較命令及び分岐命令を含まない。特殊化されたコード領域632は、チェックポイント命令640及びコミット命令650によって定義される。チェックポイント命令640とコミット命令650との間において、例外発生命令642、644、646のシーケンスがコード領域632内に挿入される。図示した例では、例外発生命令642、644、646は、ブール又はビット単位の論理命令642、算術関数644、及び例外生成命令646を含む。より具体的には、図示した例では、排他的ORXOR関数が、レジスタr1及びr2にストアされたデータを比較するのに用いられる。r1及びr2にストアされたデータが等しい場合、XOR関数の結果は0であり、この値0はr1にストアされる。加算関数例えば、ADDが、r1の値を最大許容整数例えば、INT_MAXに加算する。r1の値が0以外である場合、r1及びINT_MAXの和が最大許容整数よりも大きいので、オーバーフローフラグがセットされる。オーバーフローフラグがセットされている場合、例外生成命令例えば、INTOが、例外ハンドラー236を起動する例外を生成する。オーバーフローフラグがセットされていない場合、レジスタr1及びr2にストアされたデータは等しく、プログラムフローは、割り込みを受けることも分岐することもなく、通常発生する条件この例では、r1及びr2が等しいという条件について最適化された命令のシーケンスを継続する。例えば、いくつかの実施形態では、オーバーフローフラグがセットされていない場合、NOP演算が実行されない命令を発行することができる。通常発生する条件についての命令の実行に続いて、プログラムフローはコミット命令650に進む。オーバーフローフラグがセットされ、それによって、通常発生しない条件が満たされていることが示されている場合、例外ハンドラー236は、トランザクションをロールバックし及び/又はプログラムフローを、通常発生しない条件の場合に実行される命令のロケーションにリダイレクトするように構成することもできるし、トランザクションをアボートすることもできる。本開示を図面及び上記説明に詳細に図示及び説明してきたが、そのような図示及び説明は、その性質上、限定ではなく例示であるとみなされるべきである。単に例示の実施形態が図示及び説明されていること、並びに、本開示の趣旨に含まれる全ての改変及び変更は保護されるように所望されていることが理解される。さらに、本開示の態様は、ハードウェアベースのトランザクショナルメモリシステムとの関連で説明されているが、様々な態様は、他の用途、例えば、トランザクションメモリシステム又は例外に対する制御を暗黙的に転送する他のシステムの特徴部が利用可能である、1つ又は複数の通常発生する条件についてプログラムコードを特殊化することが所望されている任意の用途例えば、ハードウェアベースのトランザクショナルシステム及び/又はソフトウェアベースのトランザクショナルシステムを有することが理解されるであろう。そのような用途は、例えば、コンパイラー、システムソフトウェア若しくはアプリケーションソフトウェア、及び/又はデータベースシステムを含むことができる。