コンピュータシステムによる実行のための複数のソースバイナリコードブロックを有するソースバイナリアプリケーションを読み込む段階であって、前記コンピュータシステムは、メモリ及びNt個のターゲットレジスタを有する処理ユニットを有し、前記ソースバイナリアプリケーションはNs個のソースレジスタを有する環境において実行されるよう構成され、NtはNsより小さい、段階;前記ソースバイナリアプリケーションの実行中、前記ソースバイナリアプリケーション内で頻繁に実行されるソースバイナリコードブロックを特定する段階;前記頻繁に実行されるソースバイナリコードブロック及び類似閾値を超える少なくとも一つの近隣ソースバイナリコードブロックを含むリージョンを定義する段階であって、前記頻繁に実行されるソースバイナリコードブロック及び前記少なくとも一つの近隣ソースバイナリコードブロックは少なくとも一のソースレジスタにアクセスするための命令を共に有する、段階;前記リージョン内でアクセスされる各ソースレジスタへのアクセス頻度を決定する段階;及び前記リージョン内で最も頻繁にアクセスされるN個のソースレジスタの各々を、Nt個の前記ターゲットレジスタの各々へそれぞれマッピングする段階であって、NはNtより小さい又は等しい、段階;を有する、方法。前記レジスタマッピングに少なくとも部分的に基づいて前記リージョン内の各ソースバイナリコードブロックと対応する最適化済ターゲットバイナリコードブロックを生成する段階であって、各最適化済ターゲットバイナリコードブロックは、メモリから対応するターゲットレジスタへそれぞれマッピング済ソースレジスタと関連するデータを読み込むよう構成されるプロローグ、前記ソースバイナリコードブロックに対応する変換済ソースバイナリコードブロック及び条件ジャンプを有する本体、及び少なくとも一つのエピローグを有し、前記条件ジャンプ及び前記の少なくとも一つのエピローグは、前記リージョンの第一最適化済ターゲットバイナリコードブロックから第二ターゲットバイナリコードブロックへ、前記第二ターゲットバイナリコードブロックが前記リージョン内にあるかどうかに少なくとも部分的に基づき、フローを制御するよう構成される、段階をさらに有する、請求項1に記載の方法。前記複数のエピローグは、第一エピローグ及び第二エピローグを有し、前記第一エピローグは、前記第二ターゲットバイナリコードブロックがリージョン内の第二最適化済ターゲットバイナリコードであるとき、実行されるよう構成され、前記第一エピローグは、前記第二最適化済ターゲットバイナリコードブロックの本体へジャンプするための第一命令を有し、かつ、前記第二エピローグは、前記第二ターゲットバイナリコードブロックがリージョン内にないとき、実行されるよう構成され、前記第二エピローグは、それぞれマッピング済ソースレジスタに対応する各ターゲットレジスタをメモリへ保存するための第二命令及び前記第二ターゲットバイナリコードブロックの先頭へジャンプするための第三命令を有する、請求項2に記載の方法。前記リージョンにおける各ソースバイナリコードブロックのlive-inレジスタ及びlive-outレジスタを特定する段階を含む、前記リージョンのlive-inレジスタ及びlive-outレジスタを特定する段階をさらに有する、請求項1に記載の方法。前記レジスタマッピングに少なくとも部分的に基づいて、前記リージョン内の各ソースバイナリコードブロックに対応する最適化済ターゲットバイナリコードブロックを生成する段階であって、各最適化済ターゲットバイナリコードブロックは、メモリから対応するターゲットレジスタへ、マッピング済live-inソースレジスタそれぞれと関連するデータを読み込むよう構成されるプロローグ、前記ソースバイナリコードブロックに対応する変換済ソースバイナリコード及び条件ジャンプを有する本体、及び少なくとも一つのエピローグを有し、前記条件ジャンプ及び前記の少なくとも一つのエピローグは、前記リージョンの第一最適化済ターゲットバイナリコードブロックから第二ターゲットバイナリコードブロックへ、前記第二ターゲットバイナリコードブロックが前記リージョン内にあるかどうかに少なくとも部分的に基づき、フローを制御するよう構成される、段階をさらに有する、請求項4に記載の方法。前記リージョン内の第一最適化済ターゲットバイナリコードブロックのプロローグを実行する段階であって、該段階は、前記リージョンの前記N個のマッピング済ソースレジスタの一つにそれぞれ対応するデータを含むN個のそれぞれのターゲットレジスタを読み込む段階を有する、段階;前記第一最適化済ターゲットバイナリコードブロックの本体を実行する段階であって、第一分岐命令を有する前記第一最適化済ターゲットバイナリコードブロックは第二ターゲットバイナリブロックへジャンプするよう構成される、段階;前記第二ターゲットバイナリコードブロックが前記リージョン内にあるかどうか決定する段階;及び前記第二ターゲットコードブロックが前記リージョン内であるとき、前記第二ターゲットバイナリコードブロックに対応する第二最適化済ターゲットコードブロックの本体へジャンプするための第一エピローグを実行する段階、又は、前記第二ターゲットコードブロックが前記リージョン内にないとき、前記第二ターゲットコードブロックの先頭へジャンプするための第二エピローグを実行する段階;をさらに有する、請求項2に記載の方法。前記リージョン内の第一最適化済ターゲットバイナリコードブロックのプロローグを実行する段階であって、該段階は、前記リージョン内の各マッピング済live-inソースレジスタのために、前記マッピング済live-inソースレジスタに対応するメモリからデータを含む一つのターゲットレジスタを読み込む段階を有する、段階;前記第一最適化済ターゲットバイナリコードブロックの本体を実行する段階であって、第一分岐命令を有する前記第一最適化済ターゲットバイナリコードブロックは第二ターゲットバイナリコードブロックへジャンプするよう構成される、段階;前記第二ターゲットバイナリコードブロックが前記リージョン内であるかどうか決定する段階;及び前記第二ターゲットコードブロックが前記リージョン内にあるとき、前記第二ターゲットコードブロックの本体へジャンプするための第一エピローグを実行する段階、又は、メモリ内に前記リージョンの前記マッピング済live-outレジスタを保存するために、及び、前記第二ターゲットコードブロックが前記リージョン内にないとき、前記第二ターゲットコードブロックの先頭へジャンプするために、第二エピローグを実行する段階;をさらに有する、請求項5に記載の方法。類似とは、前記頻繁に実行されるソースバイナリコードブロック及び前記の少なくとも一つの近隣ソースバイナリコードブロックの実行可能性の相互関係に相当する、請求項1に記載の方法。前記頻繁に実行されるソースバイナリコードブロック及び前記の少なくとも一つの近隣ソースバイナリコードブロックは、それぞれ分岐命令によって境界される、請求項1に記載の方法。プロセッサによって実行される以下の処理をもたらす命令を保存する具体的なストレージ媒体を有する物品であって、前記処理は、実行のために複数のソースバイナリコードブロックを有するソースバイナリアプリケーションを読み込む段階であって、前記プロセッサはNt個のターゲットレジスタを有し、前記ソースバイナリアプリケーションはNs個のソースレジスタを有する環境において実行されるよう構成され、NtはNsより小さい、段階;前記ソースバイナリアプリケーションの実行中、前記ソースバイナリアプリケーション内で頻繁に実行されるソースバイナリコードブロックを特定する段階;前記頻繁に実行されるソースバイナリコードブロック及び類似閾値を超える少なくとも一つの隣接ソースバイナリコードブロックを有するリージョンを定義する段階であって、類似とは、前記頻繁に実行されるソースバイナリコードブロック及び前記の少なくとも一つの近隣ソースバイナリコードブロックの実行可能性の相互関係に相当し、前記頻繁に実行されるソースバイナリコードブロック及び前記の少なくとも一つの近隣ソースバイナリコードブロックは、少なくとも一つのソースレジスタにアクセスするための命令を共に有し、かつ、分岐命令によってそれぞれ境界される、段階;前記リージョン内でアクセスされる各ソースレジスタへのアクセス頻度を特定する段階;及び前記リージョン内で最も頻繁にアクセスされるN個のソースレジスタの各々を、前記のNt個のターゲットレジスタの各々へそれぞれマッピングする段階であって、NはNtより小さい又は等しい、段階;を有する、前記処理をもたらす命令を保存する具体的なストレージ媒体を有する物品。前記命令は、さらに前記レジスタマッピングに少なくとも部分的に基づいて前記リージョン内の各ソースバイナリコードブロックと対応する最適化済ターゲットバイナリコードブロックを生成する段階であって、各最適化済ターゲットバイナリコードブロックは、メモリから対応するターゲットレジスタへそれぞれマッピングされたソースレジスタに関連するデータをロードするよう構成されるプロローグ、前記ソースバイナリコードブロックに対応する変換済ソースバイナリコード及び条件ジャンプを有する本体、及び少なくとも一つのエピローグを有し、前記条件ジャンプ及び前記の少なくとも一つのエピローグは、前記リージョンの第一最適化済ターゲットバイナリコードブロックから第二ターゲットバイナリコードブロックへ、前記第二ターゲットバイナリコードブロックが前記リージョン内にあるかどうかに少なくとも部分的に基づき、フローを制御するよう構成される、段階を有する、請求項10に記載の物品。前記複数のエピローグは、第一エピローグ及び第二エピローグを有し、前記第一エピローグは、前記第二ターゲットバイナリコードブロックがリージョン内の第二最適化済ターゲットバイナリコードであるとき、実行されるよう構成され、前記第一エピローグは、前記第二最適化済ターゲットバイナリコードブロックの本体へジャンプするための第一命令を有し、かつ、前記第二エピローグは、前記第二ターゲットバイナリコードブロックがリージョン内にないとき、実行されるよう構成され、前記第二エピローグは、各マッピング済ソースレジスタに対応する各ターゲットレジスタをメモリへ保存するための第二命令及び前記第二ターゲットバイナリコードブロックの先頭へジャンプするための第三命令を有する、請求項11に記載の物品。前記命令は、さらにリージョン内の各ソースバイナリコードブロックのlive-inレジスタ及びlive-outレジスタを特定することを有する、前記リージョンのlive-inレジスタ及びlive-outレジスタを特定する段階を有する、請求項10に記載の物品。前記命令は、さらに前記レジスタマッピングに少なくとも部分的に基づいて前記リージョン内の各ソースバイナリコードブロックと対応する最適化済ターゲットバイナリコードブロックを生成する段階であって、各最適化済ターゲットバイナリコードブロックは、メモリから対応するターゲットレジスタへそれぞれマッピング済のlive-inソースレジスタに関連するデータをロードするよう構成されるプロローグ、前記ソースバイナリコードブロックに対応する変換済ソースバイナリコード及び条件ジャンプを有する本体、及び少なくとも一つのエピローグを有し、前記条件ジャンプ及び前記の少なくとも一つのエピローグは、前記リージョンの第一最適化済ターゲットバイナリコードブロックから第二ターゲットバイナリコードブロックへ、前記第二ターゲットバイナリコードブロックが前記リージョン内にあるかどうかに少なくとも部分的に基づき、フローを制御するよう構成される、段階を有する、請求項13に記載の物品。前記命令は、さらに前記リージョン内の第一最適化済ターゲットバイナリブロックのプロローグを実行するプロローグ実行段階であって、該段階は、前記リージョンの前記N個のマッピング済ソースレジスタの一つにそれぞれ対応するデータを含むN個のそれぞれのターゲットレジスタを読み込む段階を有する、段階;前記第一最適化済ターゲットバイナリコードブロックの本体を実行する段階であって、第一分岐命令を有する前記第一最適化済ターゲットバイナリコードブロックは第二ターゲットバイナリブロックへジャンプするよう構成される、段階;前記第二ターゲットバイナリコードブロックが前記リージョン内にあるかどうか決定する段階;及び前記第二ターゲットコードブロックが前記リージョン内であるとき、前記第二ターゲットバイナリコードブロックに対応する第二最適化済ターゲットコードブロックの本体へジャンプするための第一エピローグを実行する段階、又は、前記第二ターゲットコードブロックが前記リージョン内にないとき、前記第二ターゲットコードブロックの先頭へジャンプするための第二エピローグを実行する段階;を有する、請求項11に記載の物品。前記命令は、さらに前記リージョン内の第一最適化済ターゲットバイナリコードブロックのプロローグを実行する段階であって、該段階は、前記リージョン内の各マッピング済live-inソースレジスタのために、前記マッピング済live-inソースレジスタに対応するメモリからデータを有する一つのターゲットレジスタを読み込む段階を有する、段階;前記第一最適化済ターゲットバイナリコードブロックの本体を実行する段階であって、第一分岐命令を有する前記第一最適化済ターゲットバイナリコードブロックは第二ターゲットバイナリコードブロックへジャンプするよう構成される、段階;前記第二ターゲットバイナリコードブロックが前記リージョン内であるかどうか決定する段階;及び前記第二ターゲットコードブロックが前記リージョン内にあるとき、前記第二ターゲットコードブロックの本体へジャンプするための第一エピローグを実行する段階、又は、メモリ内に前記リージョンの前記マッピング済live-outレジスタを保存するために、及び、前記第二ターゲットコードブロックが前記リージョン内にないとき、前記第二ターゲットコードブロックの先頭へジャンプするために、第二エピローグを実行する段階;を含む、請求項14に記載の物品。Nt個のターゲットレジスタを有するプロセッサ;並びに動的バイナリ変換ソフトウェア、レジスタマッピングモジュールソフトウェア及びNs個のソースレジスタを有する環境において実行されるよう構成されるソースバイナリアプリケーションを保存するよう構成されるメモリを有するシステムであって:ここでNtはNsより小さく、前記プロセッサにおいて実行されるための複数のソースバイナリコードブロックを有する前記ソースバイナリアプリケーションであり、前記動的バイナリ変換ソフトウェア及びレジスタマッピングモジュールソフトウェアが前記プロセッサ上で実行されるとき、前記動的バイナリ変換ソフトウェア及びレジスタマッピングモジュールソフトウェアのうち少なくとも一つが前記プロセッサに:前記ソースバイナリアプリケーションの実行中に、前記ソースバイナリアプリケーション内の頻繁に実行されるソースバイナリコードブロックを特定する処理;前記頻繁に実行されるソースバイナリコードブロック及び類似閾値を超える少なくとも一つの近隣ソースバイナリコードブロックを有するリージョンを定義する処理であって、前記頻繁に実行されるソースバイナリコードブロック及び少なくとも一つの近隣ソースバイナリコードブロックは、少なくとも一つのソースレジスタにアクセスする命令を共に有する、処理;前記リージョン内でアクセスされる各ソースレジスタへのアクセス頻度を特定する処理;及び前記リージョン内で最も頻繁にアクセスされるN個のソースレジスタの各々を、前記のNt個のターゲットレジスタの各々へそれぞれマッピングする処理であって、NはNtより小さい又は等しい、処理;を実行させる、システム。前記レジスタマッピングモジュールソフトウェアは、前記プロセッサに、前記レジスタマッピングに少なくとも部分的に基づいて、前記リージョン内の各ソースバイナリコードブロックに対応する最適化済ターゲットバイナリコードブロックを生成する処理であって、各最適化済ターゲットバイナリコードブロックは、メモリから対応するターゲットレジスタへそれぞれマッピングされたソースレジスタと関連するデータを読み込むよう構成されるプロローグ、前記ソースバイナリコードブロックに対応する変換済ソースバイナリコードブロック及び条件ジャンプを有する本体、及び少なくとも一つのエピローグを有し、前記条件ジャンプ及び前記の少なくとも一つのエピローグは、前記リージョンの第一最適化済ターゲットバイナリコードブロックから第二ターゲットバイナリコードブロックへ、前記第二ターゲットバイナリコードブロックが前記リージョン内にあるかどうかに少なくとも部分的に基づき、フローを制御するよう構成される、処理をさらに実行させる、請求項17に記載のシステム。前記複数のエピローグは、第一エピローグ及び第二エピローグを有し、前記第一エピローグは、前記第二ターゲットバイナリコードブロックがリージョン内の第二最適化済ターゲットバイナリコードであるとき、実行されるよう構成され、前記第一エピローグは、前記第二最適化済ターゲットバイナリコードブロックの本体へジャンプするための第一命令を有し、かつ、前記第二エピローグは、前記第二ターゲットバイナリコードブロックがリージョン内にないとき、実行されるよう構成され、前記第二エピローグは、各マッピング済ソースレジスタに対応する各ターゲットレジスタをメモリへ保存するための第二命令及び前記第二ターゲットバイナリコードブロックの先頭へジャンプするための第三命令を有する、請求項18に記載のシステム。前記レジスタマッピングモジュールソフトウェアは、前記プロセッサに、リージョン内の各ソースバイナリコードブロックのlive-inレジスタ及びlive-outレジスタを特定する処理を有する、前記リージョンのlive-inレジスタ及びlive-outレジスタを特定する処理をさらに実行させる、請求項17に記載のシステム。類似とは、前記頻繁に実行されるソースバイナリコードブロック及び前記の少なくとも一つの近隣ソースバイナリコードブロックの実行可能性の相互関係に相当する、請求項10に記載の物品。前記頻繁に実行されるソースバイナリコードブロック及び前記の少なくとも一つの近隣ソースバイナリコードブロックは、それぞれ分岐命令によって境界される、請求項10に記載の物品。類似とは、前記頻繁に実行されるソースバイナリコードブロック及び前記の少なくとも一つの近隣ソースバイナリコードブロックの実行可能性の相互関係に相当する、請求項17に記載のシステム。前記頻繁に実行されるソースバイナリコードブロック及び前記の少なくとも一つの近隣ソースバイナリコードブロックは、それぞれ分岐命令によって境界される、請求項17に記載のシステム。動的バイナリ変換DBTが直面する課題は、DBTが招くオーバーヘッドである。このオーバーヘッドは、ホストターゲットISAへ簡単にマッピングされないゲストソースISAにおいて、比較的頻繁に用いられる機能に主として由来する。例えば、ソースISAがターゲットISAより大きなレジスタセットを有しているとき、ソースレジスタからターゲットレジスタへの効率的なレジスタマッピングを用いることは、例えばメモリアクセスのようなレジスタのエミュレーションオーバーヘッドを減らすために重要である。このことは、他のISAに比べて比較的少ない数の汎用/整数レジスタ例えば、8及び16を有するx86及びx86-64のようなターゲットISAにとって特に重要である。例えば、PowerPC、ARM及びMIPS他のISAは32個のレジスタを有し、Itaniumは128個のレジスタを有する。レジスタマッピングの問題は、最適なマッピングすなわち、最小のオーバーヘッドとなるマッピングがソースバイナリコードシーケンスに高く依存する事実によってさらに悪化する。それゆえ、最適なマッピングは、コードの部分によって異なる。理想的には、それぞれのコードのリージョンは、コードのリージョンに最適であるレジスタマッピングを用いるべきである。本開示書は、リージョンレベルのレジスタマッピングを提供するよう構成されるシステム及び方法を提供する。前記方法は、一つのリージョンにおけるそれぞれのバイナリコードブロックのため、前記リージョンにおいて最も頻繁にアクセスされるソースのプロセッサのレジスタのうち少なくともいくつかを、ターゲットのプロセッサのレジスタへマッピングすることを含む。最も頻繁にアクセスされるソースのプロセッサのレジスタは、ソースバイナリコードのブロックに対応するターゲットバイナリコードのブロックとともに実装される、カウンタを含むプローブから決定されることができる。最適化済ターゲットバイナリコードのブロックは、最適化のために選択されたリージョンのソースバイナリコードの各ブロックのために生成されることができる。最適化済ターゲットバイナリコードのブロックは、プロローグ、変換されたソースバイナリコードを含む本体、条件ジャンプ及び少なくとも一つのエピローグを含むことができる。プロローグは、リージョンのマッピング済レジスタ又はマッピング済live-inレジスタを読み込むよう構成される。条件ジャンプは、ソースバイナリコードのブロックの境界における分岐が、リージョン内の次のバイナリブロックであるか、リージョン内でない次のバイナリブロックであるかに基づいてフローを制御するよう構成される。エピローグは、次のバイナリブロックがリージョン内にあるときブロック本体へとジャンプし、次のバイナリブロックがリージョン内にないとき次のバイナリブロックの先頭へとジャンプするよう構成される。先頭は、別のリージョンの最適化済ターゲットバイナリコードブロックのプロローグ又は最適化されていないターゲットバイナリコードブロックに一致することができる。もし次のバイナリブロックがリージョン内にないとき、リージョンのlive-outレジスタはメモリ内に保存されることができる。ターゲットバイナリコードの最適化済ブロックが実行されるたび、というよりむしろ、リージョン境界をまたぐとき、リージョンのマッピング済レジスタ又はマッピング済live-inレジスタを読み込むことにより、有利にメモリアクセスは減らされることができる。本開示書に従う方法及び/又はシステムは、リージョンレベルのレジスタマッピングを提供するよう構成される。前記リージョンは、比較的複雑であり得る。当業者には明らかなように、例えば、任意のループのネスト、すなわちループの任意の組み合わせ、例えば親ループの内側の複数の兄弟を含むことができる。別の例では、リージョンは、例えばループへ入る複数の可能性のように、削減できないフローグラフに対応するターゲットバイナリコードブロックを含むことができる。リージョンは、隣接する及び/又は隣接しないターゲットバイナリコードブロックの形状を成すことができる。クレームされる主題の特徴及び利点は、一致する実施態様の詳細な説明により明らかであるだろう。前記説明は、次に添付される図面への言及によって考慮されるべきである。図1は、本開示書に従うシステム100を表す。システム100は、システムメモリ104に接続されたプロセッサCPU102を有する。システム100は、キャッシュメモリ105システムメモリ104に含まれ得る及び/又はキャッシュメモリと同類であるがソフトウェアによって管理されるスクラッチパッドメモリ107を有することができる。CPU102は、複数のプロセッサレジスタ106-1、106-2、、106-m合わせてプロセッサレジスタ106を有することができる。CPU102は、複数のコア処理ユニット以下、コア又は単数でコアとするを含むことができ、各コアは、複数のスレッドを実行するよう構成されることができる。システムメモリ104は、ソースバイナリアプリケーション110、動的バイナリ変換システム115及びホストオペレーティングシステムOS120を提供することができる。動的バイナリ変換システム115は、ターゲットバイナリコードブロック112、レジスタマッピングモジュール116を有する動的変換システムコード114及び/又はソースレジスタストレージ118を有することができる。ソースバイナリアプリケーション110は、ソースISAに対応する複数のソースバイナリコードブロックを含むことができる。ターゲットバイナリコードブロックは、ターゲットISAに対応する。ソースバイナリコードブロックは、例えばendwithのような分岐命令を含む一つ以上の命令のシーケンスである。ターゲットバイナリコードブロックは、対応するソースバイナリコードブロックの機能を有するよう構成される。最適化済ターゲットバイナリコードブロックは、最適化済ターゲットバイナリコードブロックの本体に、ソースバイナリコードブロックに対応する機能を含むことができる。最適化済ターゲットバイナリコードブロックは、ここで説明されるように追加の機能を含むことができる。ターゲットバイナリコードブロック112は、コードキャッシュ111に指定されているシステムメモリ領域に保管されることができる。コードキャッシュ111は、例えば一つ以上の対応するソースバイナリコードブロックから変換されている一つ以上のターゲットバイナリコードブロックのような、ターゲットバイナリコードブロック112のストレージとして理解されることができる。システムメモリ104は、プロセッサレジスタ106へ/から、データを読み込む/保管するよう構成されるソースレジスタストレージ118を提供することができる。いくつかの実施形態において、キャッシュメモリ105及び/又はスクラッチパッドメモリ107は、プロセッサレジスタ106へ/からデータを読み込む/保管するよう構成されている。動的バイナリ変換コード114及びレジスタマッピングモジュール116は、ソースバイナリアプリケーション110上でソースバイナリアプリケーション110のブロックをターゲットバイナリコードブロック112へと変換するために、一つ以上のコアによって実行されることができる。ソースバイナリコードブロックは、動的にターゲットバイナリコードブロックへと変換されることができる。言い換えると、ソースバイナリコードブロックは、静的にというよりはバイナリブロックを実行するための呼び出しに応じて、すなわち実行時に先立って、ターゲットバイナリコードブロックへと変換されることができる。ターゲットバイナリコードブロックは、次に、システムメモリ104の中のコードキャッシュ111の中に保管され、実行のためにCPU102へ提供されることができる。ソースバイナリコード110のブロックをターゲットバイナリコードブロック112へと変換することは、リージョンのレジスタアクセスの頻度に少なくとも部分的に基づいて、一つ以上のソースレジスタを一つ以上のターゲットレジスタ、例えばプロセッサレジスタ106へとマッピングすることを含むことができる。例えば、ソースISAは、Ns個のソースレジスタを有することができ、ターゲットISAはNt個のターゲットレジスタ、例えばレジスタ106を有することができる。ここで、NtはNsより小さい。図2Aは、動的バイナリ変換のフローチャート200を表す。フローチャート200の処理は、動的バイナリ変換コード114によって実行されることができる。プログラムフローは、バイナリコードブロックを実行するための呼び出し202を受けて開始することができる。バイナリコードブロックを実行するための呼び出し202に先立って、ソースバイナリアプリケーション110はシステムメモリ104に読み込まれていることは明らかである。処理204において、一つ以上のターゲットバイナリコードブロックがコードキャッシュ、例えばコードキャッシュ111内にあるかどうかが決定されることができる。各ターゲットバイナリコードブロックは、ソースバイナリアプリケーション110のソースバイナリコードブロックに対応する。ターゲットバイナリコードブロックがコードキャッシュ内にないとき、処理206は、ソースバイナリコードブロックをターゲットバイナリブロックへと変換し、プローブを実装し、ターゲットバイナリブロック及びプローブをコードキャッシュ内に保存することを含むことができる。この変換は、相対的に高速であるよう構成されることができる。例えば、プローブは、バイナリブロックが実行される回数のカウントを保持するよう構成されるカウンタを含むことができる。ソースプロセッサレジスタは、レジスタストレージ、例えばシステムメモリ104、キャッシュメモリ105及び/又はスクラッチパッドメモリ107内のソースレジスタストレージ118へとマッピングされることができる。プログラムフローは、次に、処理211へと進む。処理211において、変換されたコードブロックが実行されることができる。もし処理204において、ターゲットバイナリコードブロックがコードキャッシュ内にあるとき、プログラムフローは、処理208へと進むことができる。処理208において、閾値に達しているかどうかが決定されることができる。閾値に達しているかどうかは、コードブロックを実行するための先の呼び出しに応じ、処理206で実装されたプローブに少なくとも部分的に基づいて決定されることができる。例えば、バイナリブロックが実行されるたびにカウントがインクリメントされることができる。カウントが所定の閾値に達したら、プローブは、プログラムフローすなわち、分岐をさらなる処理のため動的バイナリ変換ソフトウェアに戻すよう構成されることができる。所定の閾値は、最適化により利益を得る、相対的に頻繁に実行されるバイナリブロックを示すよう構成されることができる。閾値に達していないとき、プログラムフローは、処理211へと進み、変換されたコードブロックを実行する。閾値に達しているとき、プログラムフローは処理210へと進むことができ、コードを最適化することができる。コードの最適化210は、ここで述べられたように、リージョン構成及びレジスタマッピングを含むよう構成される。プログラムフローは、次に、処理211へと進むことができ、変換されたコードブロックを実行することができる。図2Bは、本開示書に従ったコード最適化のフローチャート210を表す。プログラムフローは、開始212から開始することができる。フローチャート210の処理は、レジスタマッピングモジュール116を有する動的バイナリ変換コード114によって実行されることができる。処理214において、類似閾値に一致する及び/又は超える、近隣バイナリブロックの探索が実行されることができる。近隣バイナリブロックは、コード最適化が引き起こされるバイナリブロックに関連することができる。例えば、近隣バイナリブロックは、コード最適化が引き起こされるバイナリブロックの直前又は直後に実行されるよう構成されることができる。近隣バイナリブロックは、コード最適化を引き起こしているバイナリブロックに隣接し、かつ/又は分岐もしくはジャンプによってコード最適化を引き起こしているバイナリブロックに関係することができる。バイナリブロック間又はバイナリブロック内の類似とは、バイナリブロックの実行可能性の相互関係として理解されることができる。例えば、前記相互関係は、一つのバイナリブロックから別のバイナリブロックへの分岐に起因することができる。処理216において、類似閾値に一致し、かつ/又は、超える近隣ブロックを含む、リージョンが次に構成されることができる。処理218において、リージョン内でアクセスされた各ソースレジスタのために、アクセス回数が決定されることができる。リージョンにおける命令は、ソースレジスタを用いる、すなわちソースレジスタから読みこむことができ、かつ/又は、ソースレジスタを定義する、すなわちソースレジスタに書きこむことができる。レジスタアクセス、すなわちレジスタの使用とは、レジスタの使用及び/又は定義を含む。レジスタマッピングは、リージョンにおける各ソースレジスタの総アクセス回数に基づくことができる。例えば、処理216において構成されたリージョンは、一つ以上のバイナリコードブロックを含むことができる。バイナリブロックの実行回数のカウントを含むプローブは、各バイナリコードブロックと関連付けられることができる。各バイナリブロックのために、レジスタアクセス回数は、バイナリブロックの実行回数、バイナリブロックの命令及び各命令によってアクセスされるレジスタのカウントに基づいて決定されることができる。リージョンにおいてアクセスされる各レジスタの総アクセス回数は、次に、リージョンにおける各バイナリブロックにおける各レジスタへのアクセス回数の和によって決定されることができる。図3は、例示的なコードのリージョン305を有する例示的な制御フローグラフ300を表す。制御フローグラフは、ブロックA310、ブロックB320、ブロックC330、ブロックD340及びブロックE350の5つのコードのブロックを有する。各ブロックは、例えば処理206図2Aにおいて実装されたプローブに基づいて決定された、ブロックの実行回数に対応する、関連したカウント312、322、332、342及び352を有する。例えば、ブロックA、ブロックC及びブロックEはそれぞれ、10の関連したカウントを有し、ブロックBは1000の関連したカウントを有し、ブロックDは990の関連したカウントを有する。この例において、ブロックBは、図2Aの処理208について説明された所定の閾値を満たしていることができる。すなわち、ブロックBは、頻繁に実行されるソースバイナリコードブロックである。ブロックA、ブロックC及びブロックDは、ブロックBに関して近隣ブロックであることができる。類似閾値と一致/超える近隣ブロックを探索する、図2Bの処理214は、ブロックDを得ることができる。ブロックDは、ブロックBに関して類似閾値と一致又は超える近隣ソースバイナリコードブロックである。類似とは、頻繁に実行されるソースバイナリコードブロック及び近隣ソースバイナリコードブロックの実行可能性の相互関係に対応する。言い換えれば、ブロックBは、相対的に高い実行count=1000可能性を有する。ブロックDもまた、相対的に高い実行count=990可能性を有する。カウント情報が過去に使われたものであり、かつ、将来の実行頻度は変わる可能性があるため、実行可能性の語が用いられている。ブロックDの実行可能性は、例えばブロックBとブロックDとの間の分岐に基づいて、ブロックBの実行可能性に関係している。言い換えると、ブロックDの実行可能性は、ブロックBの実行可能性と相互に関係している。5つのコードのブロックを有するこの例では、それぞれ1000及び990の相対的に高い実行頻度すなわちカウントであり、かつ、類似閾値と一致又は超えるブロックB及びブロックDが、リージョン305に含まれている。ブロックBの命令は、レジスタr1、r2、r3、r4及びr5にアクセスする。レジスタr1及びr4は定義され書き込まれ、レジスタr1、r2、r3、r4及びr5が使用され読み込まれる。言い換えると、ブロックBの各実行のため、r1及びr4は二度アクセスされ、残るレジスタはそれぞれ一度アクセスされる。したがって、1000の実行頻度であるブロックBにおいて、r1及びr4は、それぞれ2000回アクセスされ、残るレジスタはそれぞれ1000回アクセスされる。ブロックDは、レジスタr2に二度アクセス一回の読み込みと一回の書き込みし、かつ、レジスタr5に一度アクセス読み込みする命令を一つ有する。したがって、990の実行頻度であるブロックDにおいて、r2は1980回アクセスされ、r5は990回アクセスされる。それゆえ、ブロックB及びブロックDを含むリージョン305のために、r1は合計2000回、r2は合計2980回、r3は合計1000回、r4は合計2000回、r5は合成1990回アクセスされる。レジスタアクセス回数によって、最も頻繁にアクセスされるものから最も少なくアクセスされるものへとレジスタをソートすると、r2、r1とr4、r5、r3となる。図2Bを再び参照し、処理220において、ソースレジスタはターゲットレジスタにマッピングされることができる。リージョンのもっとも高いアクセス回数、すなわち最も頻繁にアクセスされるものに対応するソースレジスタは、ターゲットレジスタにマッピングされることができる。例えば、ターゲットISAはNt個のターゲットプロセッサレジスタを有することができ、ソースISAはNs個のソースプロセッサレジスタを有することができる。ここで、NtはNsより小さい。Nt個のターゲットプロセッサレジスタのうち、N個はマッピングに使用可能である。ここでNはNtより小さいか、Ntと等しい。図3において説明される例によって続けると、Nが3であるとき、その結果レジスタr1、r2及びr4がリージョンのターゲットプロセッサレジスタへとマッピングされることができる。レジスタr3及びr5は、ターゲットプロセッサレジスタへマッピングされることができず、それゆえ、必要に応じてメモリから検索される。いくつかの実施形態において、マッピングに利用可能なターゲットプロセッサレジスタの数であるNは、ターゲットISAのプロセッサレジスタの数Ntより小さい可能性がある。言い換えると、一つ以上のターゲットプロセッサレジスタは、例えばマッピングされないソースレジスタを使用又は定義する命令のために予約されることができる。例えば、1又は2つのターゲットプロセッサレジスタは、そのような命令のために予約されることができる。表1は、リージョンにおける各ソースレジスタのレジスタアクセスの総数を決定し、N個のソースレジスタをN個のターゲットレジスタにマッピングするための一つの例に対応する擬似コードを有する。したがって、処理220の完了時において、N個のソースレジスタは、N個のターゲットレジスタにマッピングされることができる。ターゲットレジスタにマッピングされないソースレジスタは、システムメモリ内104、キャッシュメモリ105及び/又はスクラッチパッドメモリ107のソースレジスタストレージ118にマッピングされることができる。処理222において、live-in及び/又はlive-outレジスタは、リージョンの各バイナリブロックのために特定されることができる。live-inは、バイナリブロックにおいて初めて定義すなわち、書き込むされることなく、バイナリブロックにおいて使用されるすなわち、読み込むレジスタに相当する。例えば、図3において示されるリージョン305において、レジスタr2、r3及びr5は、ブロックBにおいて初めて定義されることなく使用され、レジスタr2はブロックDにおいて定義される前に使用されている。したがって、レジスタr2、r3及びr5は、リージョン305のlive-inである。live-outは、レジスタの値がバイナリブロック内の命令によって変更されている可能性があるレジスタに相当する。例えば、リージョン305において、レジスタr1及びr4の値は、ブロックBの命令によって変更される可能性があり、r2の値はブロックDの命令によって変更される可能性がある。したがって、r1、r2及びr4がリージョン305のlive-outである。いくつかの実施形態において、処理222表す点線の四角の外形によって示される、処理222が実行されなくても良い。処理224において、例えばリージョン305の、リージョンにおける各バイナリブロックのため、最適化済ターゲットバイナリコードブロックが生成されることができる。例えば、それぞれの最適化済ターゲットバイナリコードブロックは、プロローグ、対応するソースバイナリコードブロックの変換されたソースコード及び条件ジャンプを含むブロック本体及び少なくとも一つのエピローグを含むことができる。図4は、プロローグ410、ブロック本体420及び2つのエピローグ430、440を有するターゲットコードブロック400の例を表す。条件ジャンプは、ブロック本体420に含まれる。プロローグは、例えばソースレジスタストレージ118から、マッピング済ソースレジスタ又はマッピング済live-inソースレジスタに対応するデータとともに、ターゲットレジスタを読み込むよう構成される。マッピング済ソースレジスタ又はマッピング済live-inソースレジスタが読み込まれるかどうかは、オーバーヘッド、すなわちリージョンに入るときに全てのマッピング済ソースレジスタを読み込むことに関連するオーバーヘッドに対する、リージョンにおけるそれぞれのソースバイナリコードブロックのlive-inソースレジスタを特定することに関連するオーバーヘッドに依存することができる。例えば、リージョン305において、図3に示されるように、レジスタr1、r2及びr4はリージョン305のためにターゲットレジスタへとマッピングされている。したがって、この例において、ブロックB及びブロックDに関連する各プロローグは、それぞれ、ソースレジスタr1、r2及びr4をメモリからターゲットレジスタへと読み込むよう構成されることができる。別の例では、レジスタr2は、リージョン305のマッピング済であり、かつ、live-inである。したがって、ブロックB及びブロックDに関連する各プロローグは、それぞれ、レジスタr2を読み込むよう構成され、結果としてマッピング済ソースレジスタの全てすなわち、r1、r2及びr4を読み込むことに比べてより少ないメモリアクセスとなる。少なくとも一つのエピローグは、第一のエピローグ及び第二のエピローグを有することができる。条件ジャンプは、ソースバイナリコードブロックを終了させる分岐が、リージョン内ターゲットバイナリコードブロックか、リージョン内でないターゲットバイナリコードブロックかに基づき、フローが第一のエピローグに進むか第二のエピローグに進むか制御するよう構成される。リージョン内ターゲットバイナリコードブロックは、ここで説明されるように、最適化済ターゲットバイナリコードブロックである。リージョン内でないターゲットバイナリコードは、最適化されていないターゲットバイナリコードブロック又は別のリージョンに関連する最適化済ターゲットバイナリコードブロックである。第一のエピローグは、リージョン内ターゲットバイナリコードブロックへのジャンプを有する。例えば、図3を再度参照して、ブロックBからブロックDへのジャンプは、リージョン内ターゲットバイナリコードブロックに相当する。第二のエピローグは、例えばリージョン305内でない、リージョンの外部にあるターゲットバイナリコードブロックへのジャンプを有する。第二のエピローグは、次のターゲットバイナリコードブロックへジャンプする前にlive-outレジスタを保存するようさらに構成される。ここで説明されるように、live-inレジスタを読み込むのと同様に、第二のエピローグは次のターゲットバイナリコードブロックへジャンプする前にマッピング済レジスタ又はマッピング済live-outレジスタを保存するよう構成されることができる。再度図3を参照して、ブロックBからブロックCへのジャンプは、リージョン外のターゲットバイナリコードブロックへのジャンプに相当する。リージョン内ターゲットバイナリコードへのジャンプは、リージョン内バイナリコードブロックに関連するプロローグをバイパスし、リージョン内バイナリコードブロックの本体へジャンプするよう構成される。リージョン外ターゲットバイナリコードブロックへのジャンプは、リージョン外ターゲットバイナリコードブロックの先頭へジャンプするよう構成される。リージョン外ターゲットバイナリコードブロックが別のリージョンに関連する最適化済ターゲットバイナリコードブロックであるとき、前記ジャンプは前記最適化済ターゲットバイナリコードブロックのプロローグへなされる。当然のことながら、実行時のシステム、すなわちホストオペレーティングシステム120は、例えば割り込み処理のようなターゲットコードにより直接処理されない可能性のある機能を実行するよう構成される。これらの機能を適切に処理するため、ゲストの状態は一致した時点、すなわち、メモリ内の適切なデータ構造において一致するゲストの状態にあることが重要である。ゲストの状態は、ブロックの実行中に一致するのではなく、ブロックの境界において一致すればよい。したがって、動的バイナリ変換は、例えばオープンソースQEMUのように、コードブロックの最後まで割り込み処理を延期するよう構成される。ブロックの最後において一致したゲストの状態を保つため、リージョン内のブロックへジャンプした後、実行時システムへ戻る前に、live-outレジスタ例えばソースレジスタストレージ118内は、保存される。リージョン内でないブロックへのジャンプのため、live-outレジスタは、リージョン内でないブロックへのジャンプの前に保存されることができる。リージョン内でないブロックへのジャンプの後、制御は実行時システムへと戻ることができる。図5は、少なくとも一つの最適化済ターゲットバイナリコードブロックを有する少なくとも一つの最適化されたコードリージョンを有するソースバイナリアプリケーションに対応するターゲットバイナリコードブロックを実行するための例示的な処理のフローチャート500を表す。プログラムフローは、開始502において開始されることができる。開始502は、少なくとも一つの最適化済ターゲットコードブロックを有する最適化済ターゲットバイナリコードの第一のリージョンへの入り口に相当する。処理504において、第一のリージョンにおける第一の最適化済ターゲットバイナリコードブロックのプロローグが実行されることができる。プロローグは、マッピング済レジスタ又はマッピング済live-inレジスタを、ここに説明されるように、メモリから読み込むよう構成される。第一の最適化済ターゲットバイナリコードブロックの本体は、次に、処理506において実行されることができる。第一の最適化済ターゲットバイナリコードブロックに対応するソースバイナリコードブロックの境界において、分岐が、第一のリージョンにおけるターゲットバイナリコードブロックへなされるかどうか処理508において決定されることができる。もし分岐が第一のリージョンでないターゲットバイナリコードブロックへなされるとき、処理510において、マッピング済レジスタ又はマッピング済live-outレジスタは、例えばソースレジスタストレージ118のようなメモリに保存されることができる。第一のリージョンでない、次のターゲットバイナリコードブロックの先頭へのジャンプが、処理512において実行されることができる。次のターゲットバイナリコードブロックは、最適化されている可能性もあり、また、されていない可能性もある。次のターゲットバイナリコードブロックが最適化されていないとき、次のソースバイナリコードブロックに対応する次のターゲットバイナリコードブロックが、処理514において実行されることができる。例えば第二のリージョンにおける次のターゲットバイナリコードブロックが最適化されているとき、第二のリージョンにおける次のターゲットバイナリコードブロックのプロローグが処理504において実行されることができ、続いて処理506において次のターゲットバイナリコードブロックの本体の実行がなされる。処理508において、分岐が第一のリージョンにおけるターゲットバイナリコードブロックになされることが決定されると、次のターゲットバイナリコードブロックの本体へのジャンプが処理516において実行されることができる。いくつかの実施形態において、レジスタは、例えば実行時システムによって割り込み処理を容易にするため、メモリ内に保存されてもよい。これらの実施形態において、実行時システムへ戻る必要があるかどうかは、処理517において決定されることができる。実行時システムへ戻る必要がないとき、プログラムフローは、処理506へ進むことができ、次に、次のターゲットバイナリコードブロックの本体が処理506において実行されることができる。実行時システムへ戻る必要があるとき、処理518においてレジスタはメモリ内に保存されることができ、プログラムフローは、処理520において実行時システムへ進むことができる。実行時システムから戻るとき、プログラムフローは、処理504へ進むことができ、プロローグを実行することができる。このとき、レジスタはメモリから読み込まれることができる。図4及び図5を参照すると、処理508において、分岐がリージョン内の次のたーゲッバイナリコードになされるかどうか決定することは、最適化済ターゲットバイナリコードブロックの本体420の条件ジャンプjCCTに相当する。処理516は、第一のエピローグ430に相当し、リージョン内の本体へジャンプする。処理510及び512は、第二のエピローグ440に相当する。図6は、図3において表される制御フローグラフ300の例に対応する、最適化済の制御フローグラフ600を表す。最適化済の制御フローグラフ600において、ターゲットブロックB620は、図3の制御フローグラフのブロックB320に対応し、ターゲットブロックD640は、制御フローグラフ300のブロックDに対応する。ターゲットブロックB及びターゲットブロックDは、図4のターゲットコードブロックに従って構成される。最適化済の制御フローグラフ600におけるターゲットバイナリコードブロック間の制御フローは、フローが、一つのリージョンにおけるターゲットバイナリコードブロック間であるか、前記リージョンにおけるターゲットバイナリコードブロックと前記リージョンでないターゲットバイナリコードブロックとの間であるかに依存する。前記リージョンでないターゲットバイナリコードブロックとは、別のリージョンに関連する最適化済ターゲットバイナリコードブロックである可能性があり、あるいは、最適化されていないターゲットバイナリコードブロックである可能性がある。例えば、ターゲットブロックBからリージョン605の外であるブロックCへの制御フローは、ターゲットブロックBのマッピング済又はマッピング済live-outを保存するエピローグ2からブロックCへすなわち、ブロックCの先頭へとなり、ブロックCからターゲットブロックDへの制御フローは、ブロックCからターゲットブロックDのプロローグマッピング済又はマッピング済live-inを読み込むへとなる。共にリージョン605内のターゲットブロックBとターゲットブロックD間の制御フローは、それぞれ、パス624及びパス642によって示されるように、ブロックB又はブロックDのエピローグ1からブロックD又はブロックBの本体へとなる。したがって、最適化済の制御フローグラフ600に示されるように、プロローグはリージョンへの入り口においてのみ実行される。リージョン内のターゲットバイナリコードブロック間のジャンプは、プロローグとマッピング済レジスタ又はマッピング済live-inレジスタに関連するメモリアクセスをバイパスし、ターゲットバイナリコードブロックの本体へとジャンプするよう構成される。有利に、このことはパフォーマンスの改善、例えば相対的に頻繁に実行されるコードのリージョンのための速度の向上をもたらすことができる。最適化済ターゲットバイナリコードブロックの複数のリージョンは、ソースアプリケーションのために生成されることができる。有利に、レジスタマッピングは、それぞれのリージョンのために、他のリージョンのために最適化されたレジスタマッピングとは独立して、最適化されることができる。このように、最適化はリージョン特有である。いくつかの実施形態において、マッピング済レジスタ又はマッピング済live-outレジスタを保存することは、さらなるパフォーマンス向上のため、リージョンを抜けるときのみ実行されても良い。図7は、ブロックレベルでのレジスタマッピングを実装した動的バイナリ変換710、720、730、740、750と、本開示書に従うリージョンレベルでのレジスタマッピング715、725、735、745、755とのパフォーマンスベンチマークの比較を示すグラフである。パフォーマンスは、オープンソースのQEMU動的バイナリ変換レジスタをメモリにマップすると相対的に示される。ブロックレベルレジスタマッピングにおいて、マッピング済live-inレジスタは、各ターゲットコードブロックに入るときに読み込まれ、マッピング済live-outレジスタは、各ターゲットコードブロックを出るときに保存される。本開示書に従って示されたリージョンレベルレジスタマッピングに係る実施形態は、リージョンに入るときマッピング済live-inレジスタをメモリから読み込み、リージョンを出るときlive-outレジスタをメモリに保存する。全てのベンチマーク結果で、本開示書に従うリージョンレベルレジスタマッピングは、基準としたQEMU及びブロックレベルレジスタマッピングに比べてパフォーマンスを改善した。平均では、ベンチマークのパフォーマンス改善は、ブロックレベルレジスタマッピングと比較して17程度の、QEMU基準と比較して31程度であった。したがって、ターゲットプロセッサレジスタがソースプロセッサレジスタより少ないとき、本開示書に従う方法及びシステムは、動的バイナリ変換においてソースプロセッサレジスタをターゲットプロセッサレジスタにマッピングすることを含む。ホットであると決定された、すなわち相対的に頻繁に実行されるコードのリージョンについて、各ソースレジスタへのアクセス回数が決定されることができる。最も頻繁にアクセスされるソースレジスタは、次に、利用可能なターゲットレジスタへとマッピングされることができる。リージョン内のソースバイナリコードの各ブロックについて、最適化済ターゲットバイナリコードの対応するブロックは、プロローグ、変換されたソースコード及び条件ジャンプを含む本体、及び少なくとも一つのエピローグを含むよう生成されることができる。条件ジャンプ及び少なくとも一つのエピローグは、第一のターゲットバイナリコードブロックから、リージョン内の次のターゲットバイナリブロックへ分岐するか、リージョン内でない次のターゲットバイナリブロックへ分岐するかに基づいて、フローを制御するよう構成される。次のターゲットバイナリコードブロックがリージョン内であるとき、次に、ジャンプはプロローグをバイパスし、次のターゲットバイナリコードブロックの本体へ向けられる。次のバイナリコードブロックがリージョン内でないとき、次に、ジャンプは次のターゲットバイナリコードブロックの先頭へ向けられる。プロローグは、メモリから、リージョンのマッピング済レジスタ又はマッピング済live-inレジスタを読み込むよう構成される。次のターゲットバイナリコードブロックがリージョン内にないとき、次に、一つのエピローグは、次のターゲットバイナリコードブロックの先頭へジャンプする前に、マッピング済レジスタ又はマッピング済live-outレジスタを保存するよう構成される。このように、リージョンに入るとき、メモリからマッピング済レジスタ又はマッピング済live-inレジスタがメモリから読み込まれ、リージョンを出るときマッピング済レジスタ又はマッピング済live-outレジスタがメモリに保存される。その結果、ブロックレベルレジスタの読み込み/保存に比べてメモリアクセスが減少する。ここで説明するように、最適化は、ターゲットバイナリコードブロックと共に挿入される、カウンタを含むプローブに依存する。したがって、カウンタに基づいて決定される実行頻度は、有限時間を示す。コードのリージョンの実行頻度が時間と共に変化するとき、最適化によって得られた初期のパフォーマンス改善は低下する、すなわち最適でなくなる可能性がある。最適化が繰り返され得るが、ここで述べられた手順を繰り返すかどうかは、前に最適化済ターゲットバイナリコードブロックを実行するための時間に対する最適化を実行するための時間の考慮に依存し得る。もちろん、図2A、2B及び5は、いくつかの実施形態による例示的な処理を表すが、他の実施形態において、図2A、図2B及び/又は図5に表される処理の全ては必要でない可能性があることを理解される。実際に、本開示書の他の実施形態は、図2A、図2B及び/又は図5に表された処理及び/又は追加の処理のサブコンビネーションを含むことができることが完全に予定されている。したがって、一つの図面に厳密に表されない機能及び/又は処理を対称にするクレームは、本開示書の範囲及び内容に含まれるとみなされる。メモリ104、キャッシュメモリ105及び/又はスクラッチパッドメモリ107は、一つ以上の次のメモリの種類を含むことができる:半導体ファームウェアメモリ、プログラマブルメモリ、不揮発性メモリ、リードオンリーメモリ、電気的にプログラム可能なメモリ、ランダムアクセスメモリ、フラッシュメモリ、磁気ディスクメモリ及び/又は光学ディスクメモリ。追加的にか、あるいは代替的に、メモリ104、キャッシュメモリ105及び/又はスクラッチパッドメモリ107は、他の及び/又は後発のコンピュータ読み取り可能なメモリの種類を有することができる。ここで述べられた方法の実施形態は、プロセッサ及び/又は他のプログラム可能なデバイスを用いて実装されることができる。そのために、ここで述べられた方法は、前記方法を実行する一つ以上のプロセッサによって実行されるとき、命令を保管する具体的なコンピュータ読み取り可能な媒体に実装されることができる。ストレージ媒体は、いかなる種類の具体的な媒体を含むことができる。例えば、フロッピー登録商標ディスク、光学ディスク、CD-ROMcompactdiskread-onlymemories、CD-RWcompactdiskrewritables及び光磁気ディスクを含むいかなる種類のディスク、ROMread-onlymemoriesのような半導体デバイス、ダイナミックRAM及びスタティックRAMのようなRAMrandomaccessmemories、EPROMerasableprogrammableread-onlymemories、EEPROMelectricallyerabableprogrammableread-onlymemories、フラッシュメモリ、磁気若しくは光学カード、又は電子的な命令を保存するために適切ないかなる種類の媒体を含む。明確に他で規定される場合を除き、先立つ議論から明らかなように、明細書の議論を通して、動作処理演算計算決定又はそれと同様のような用語の使用は、コンピューティングシステムのレジスタ及び/若しくはメモリ内の電子のような物理的な数値として表現されたデータを、同様にコンピューティングシステムのメモリ、レジスタ若しくは他の情報ストレージ、送信デバイス若しくはディスプレイデバイス内の物理的な数値として同様に表現された他のデータへ操作する並びに/又は変換することに言及する。いかなる本実施形態においても使用される回路とは、配線で接続された回路、プログラム可能な回路、ステートマシン回路及び/又はプログラム可能な回路により実行される命令を保存するファームウェアの、例えば一つずつ又は任意の組み合わせを含むことができる。一つの態様に従って、一つの方法が開示される。前記方法は、コンピュータシステムの実行のための複数のソースバイナリコードブロックを有するソースバイナリアプリケーションを読み込む段階を含むことができる。前記コンピュータシステムは、メモリとNt個のターゲットレジスタを有する処理ユニットを有することができ、ここで、Ntは、対応するソース命令セットアーキテクチャにおけるソースレジスタの数であるNsより小さい。前記方法は、前記ソースバイナリアプリケーションの実行中、前記ソースバイナリアプリケーション内で頻繁に実行されるソースバイナリコードブロックを特定する段階;並びに前記頻繁に実行されるソースバイナリコードブロック及び類似閾値を超える少なくとも一つの近隣ソースバイナリコードブロックを含むリージョンを定義する段階であって、前記頻繁に実行されるソースバイナリコードブロック及び前記少なくとも一つの近隣ソースバイナリコードブロックは少なくとも一のソースレジスタアクセスを有し、かつ、それぞれ分岐命令によって境界される、段階;をさらに含むことができる。前記方法は、前記リージョン内でアクセスされる各ソースレジスタへのアクセス頻度を決定する段階;前記リージョン内で最も頻繁にアクセスされるN個のソースレジスタの各々を、前記のNt個のターゲットレジスタの各々へそれぞれマッピングする段階であって、NはNtより小さい又は等しい、段階;及び前記レジスタマッピングに少なくとも部分的に基づいて前記リージョン内の各ソースバイナリコードブロックと対応する最適化済ターゲットバイナリコードブロックを生成する段階;をさらに含むことができる。別の態様に従って、プロセッサによって実行されるとき、次の処理をもたらす命令を保存する具体的なストレージ媒体を有する物品が開示される。前記処理とは、実行のために複数のソースバイナリコードブロックを有するソースバイナリアプリケーションを読み込む段階であって、前記プロセッサはNt個のターゲットレジスタを有し、ここでNtは、ソース命令セットアーキテクチャに対応するソースレジスタの数であるNs個より小さい、段階;前記ソースバイナリアプリケーションの実行中、前記ソースバイナリアプリケーション内で頻繁に実行されるソースバイナリコードブロックを特定する段階;前記頻繁に実行されるソースバイナリコードブロック及び類似閾値を超える少なくとも一つの隣接ソースバイナリコードブロックを含むリージョンを定義する段階であって、前記頻繁に実行されるソースバイナリコードブロック及び前記少なくとも一つの隣接ソースバイナリコードブロックは少なくとも一のソースレジスタアクセスを有し、かつ、分岐命令によってそれぞれ境界される、段階;前記リージョン内でアクセスされる各ソースレジスタへのアクセス頻度を特定する段階;前記リージョン内で最も頻繁にアクセスされるN個のソースレジスタの各々を、前記のNt個のターゲットレジスタの各々へそれぞれマッピングする段階であって、NはNtより小さい又は等しい、段階;並びに前記レジスタマッピングに少なくとも部分的に基づいて前記リージョン内の各ソースバイナリコードブロックと対応する最適化済ターゲットバイナリコードブロックを生成する段階;である。さらに別の態様により、システムが開示される。前記システムは、Nt個のターゲットレジスタを有するプロセッサであって、ここでNtは、対応するソース命令セットアーキテクチャにおけるソースレジスタの数であるNsより小さい、プロセッサ;並びに動的バイナリ変換ソフトウェア、レジスタマッピングモジュールソフトウェア及び前記プロセッサ上で実行されるべき複数のソースバイナリコードブロックを含むソースバイナリアプリケーションを含むメモリであって、前記動的バイナリ変換ソフトウェア及びレジスタマッピングモジュールソフトウェアが前記プロセッサ上で実行されるとき、少なくとも前記動的バイナリ変換ソフトウェア及びレジスタマッピングモジュールソフトウェアのうち一つがプロセッサに:前記ソースバイナリアプリケーションの実行中に、前記ソースバイナリアプリケーション内の頻繁に実行されるソースバイナリコードブロックを特定する処理;前記頻繁に実行されるソースバイナリコードブロック及び類似閾値を超える少なくとも一つの隣接ソースバイナリコードブロックを有するリージョンを定義する処理であって、前記頻繁に実行されるソースバイナリコードブロック及び前記少なくとも一つの隣接ソースバイナリコードブロックは少なくとも一のソースレジスタアクセスを有し、かつ、分岐命令によってそれぞれ境界される、処理;前記リージョン内でアクセスされる各ソースレジスタへのアクセス頻度を特定する処理;前記リージョン内で最も頻繁にアクセスされるN個のソースレジスタの各々を、前記のNt個のターゲットレジスタの各々へそれぞれマップする処理であって、NはNtより小さい又は等しい、処理;並びに前記レジスタマッピングに少なくとも部分的に基づいて前記リージョン内の各ソースバイナリコードブロックと対応する最適化済ターゲットバイナリコードブロックを生成する処理を行わせることができる。ここで採用されている用語及び表現は、説明の用語として用いられ、制限としては用いられない。そのような用語及び表現の使用に際し、図示されかつ説明される又はそれに関する一部分機能のいかなる均等物を除外する意図はない。様々な変更がクレームの範囲内で可能であることが認識される。したがって、クレームはそのような均等物すべてをカバーするよう意図されている。