(57)【要約】  概して本開示はバイナリ変換ベースのプロセッサとともにロックエリジョンの機会を検出及び利用するシステム、デバイス、方法及びコンピュータ読み取り可能な媒体を提供する。デバイスは、第1命令セットアーキテクチャ(ISA)のうちのコード領域を第2ISAにおける変換されたコードに変換し、コード領域のクリティカルセクションに関連するロックを検出及び除外するダイナミックバイナリ変換(DBT)モジュールを含む。デバイスは、クリティカルセクションにおける変換されたコードを投機的に実行するプロセッサも含む。デバイスは、投機的実行の最中に、ロック及び/又はクリティカルセクションに関連するメモリアクセスのコンフリクトを検出し、その検出に応じて投機的な実行をロールバックし、及び、その検出が無い場合に投機的な実行をコミットするトランザクションサポートプロセッサを更に含む。
2017509083.tif 000002
【特許請求の範囲】
【請求項１】
ロックエリジョンのためのデバイスであって：
第1命令セットアーキテクチャ(ISA)のうちのコード領域を第2ISAにおける変換されたコードに変換し、前記コード領域のクリティカルセクションに関連するロックを検出及び除外するダイナミックバイナリ変換(DBT)モジュールと、
前記クリティカルセクションにおける変換されたコードを投機的に実行するプロセッサと、
トランザクションサポートプロセッサと、
を有し、前記トランザクションサポートプロセッサは：
投機的な実行の最中に、前記クリティカルセクションに関連するメモリアクセスのコンフリクトを検出し；
当該検出に応じて投機的な実行をロールバックし；
当該検出が無い場合に投機的な実行をコミットする；
ことを特徴とするデバイス。
【請求項２】
前記プロセッサは、前記メモリアクセスのコンフリクトが検出されたことに応じてロールバックが実行された後に、前記ロックの下で前記クリティカルセクションにおける前記変換されたコードを再実行する、請求項1に記載のデバイス。
【請求項３】
前記DBTモジュールは前記コード領域の命令を静的にリオーダリングし、前記トランザクションサポートプロセッサは実行の最中に前記リオーダリングを動的に有効化する、請求項1に記載のデバイス。
【請求項４】
前記DBTモジュールは、前記ロックに関連する検出されたメモリアクセスのコンフリクト数を監視し、コンフリクト数が閾値を超える場合、前記ロックエリジョンを含まない新たなDBTを実行する、請求項1に記載のデバイス。
【請求項５】
前記メモリアクセスのコンフリクトは、マルチプロセシングシステムの2つ以上のプロセッサ間のメモリ読み込み又は書き込みのコンフリクトを含む、請求項1に記載のデバイス。
【請求項６】
前記DBTモジュールは、実行パフォーマンスのメジャーメントに基づいて、変換されるコードを動的に最適化する、請求項1に記載のデバイス。
【請求項７】
前記DBTモジュールは変換されたコードに命令を挿入し、当該命令は、除外されるロックに先行するメモリ動作の影響が、マルチプロセシングシステムのプロセッサにとってグローバルに可視的であるようにする、請求項1に記載のデバイス。
【請求項８】
前記デバイスはスマートフォン、ラップトップコンピューティングデバイス、スマートTV又はスマートタブレットである、請求項1に記載のデバイス。
【請求項９】
タッチスクリーンであるユーザーインターフェースを更に有する請求項1に記載のデバイス。
【請求項１０】
ロックエリジョンのための方法であって：
第1命令セットアーキテクチャ(ISA)のうちのコード領域の、第2ISAにおける変換されたコードへのダイナミックバイナリ変換(DBT)を実行するステップ；
前記DBTの間に、前記コード領域のクリティカルセクションに関連するロックを検出するステップ；
前記変換されたコードから前記ロックを除外するステップ；
前記クリティカルセクションにおける変換されたコードを投機的に実行するステップ；
トランザクション障害の検出に応じて投機的な実行をロールバックするステップ；
トランザクション障害が無い場合に投機的な実行をコミットするステップ；
を有する方法。
【請求項１１】
前記トランザクション障害に応じてロールバックを実行した後に、前記ロックの下で前記クリティカルセクションにおける前記変換されたコードを再実行するステップを更に有する請求項10に記載の方法。
【請求項１２】
前記DBTの間に前記コード領域の命令を静的にリオーダリングし、実行の最中に前記リオーダリングを動的に有効化するステップを更に有する請求項10に記載の方法。
【請求項１３】
前記ロックに関連するトランザクション障害数を監視し、トランザクション障害数が閾値を超える場合、前記ロックエリジョンを含まない新たなDBTを実行するステップを更に有する請求項10に記載の方法。
【請求項１４】
前記トランザクション障害は、前記クリティカルセクションに関連するメモリへのアクセスコンフリクトにより生じる、請求項10に記載の方法。
【請求項１５】
前記DBTは、実行パフォーマンスのメジャーメントに基づいて、変換されるコードを動的に最適化することを含む、請求項10に記載の方法。
【請求項１６】
前記DBTは変換されたコードに命令を挿入することを更に含み、当該命令は、除外されるロックに先行するメモリ動作の影響が、マルチプロセシングシステムのプロセッサにとってグローバルに可視的であるようにする、請求項10に記載の方法。
【請求項１７】
請求項10ないし16のうちの何れか1項に記載の方法を、デバイスのコンピュータに実行させるコンピュータプログラム。
【請求項１８】
請求項17に記載のコンピュータプログラムを記録する記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示はロックエリジョン(lock  elision)に関連し、特に、バイナリベースのプロセッサによるロックエリジョンの機会を検出及び活用することに関連する。
【背景技術】
【０００２】
コンピューティングシステムはしばしば複数のプロセッサ又はプロセシングコアを有し、その複数のプロセッサ等にわたって、所与のワークロードが分散され、演算スループットを向上させる。複数のスレッド又はプロセッサは、各々のプロセッサコアで並列的に動作し、共通のメモリ領域を共有してよい。メモリのうちこれらのクリティカルなセクションについての同期及び2つ以上のプロセッサによるアクセス競合からの保護のため、一般に、ロックが使用される。しかしながら、そのようなロックを利用することは、一般に、パフォーマンスの低下を招く結果となってしまうが、その原因は、マルチプロセッサシステムにおけるメモリアクセスのシリアル化及び複数のスレッド検査やロック有効性の待機に関連するコヒーレンストラフィックである。
【０００３】
ロックは、比較的高くつくランタイムコストを招くが、適切なプログラムの実行についてロックはしばしば不要であり、その理由は、複数のスレッドがクリティカルセクションの異なる(分離した)領域のデータにアクセスするからである、或いは、アクセスがリードライトのコンフリクトを含まないからである。あるプロセッサは、ソフトウェア開発者がコード中に注釈を含めることを可能にするトランザクションセマンティクスを利用して、ロック変数がハードウェアにより除外されてよい(elided)ことを指し示す。しかしながら、このアプローチは、その能力をサポートするようにソフトウェアが修正されることを要し、それは高価である又は非現実的であり、そうでない場合、従来のコードにとって利点を提供しない。更に、プログラムは、ロック排除を示すこれらの注釈を意図せずにうっかり使用し、静的には未知のランタイムで動的なコンフリクトを実際に生じてしまう可能性がある。そのように不適切に除外されたロックは、パフォーマンスを更に劣化させてしまう。
【図面の簡単な説明】
【０００４】
対象とされる特定事項の実施例についての特徴及び利点は、図面を参照しながら以下の詳細な説明が進むにつれて更に明らかになるであろう。図中、同様な番号は同様な部分を示す。
【０００５】
【図１】図1は、本開示による一実施例の上位概念的なシステムを示す図である。
【０００６】
【図２】図2は、本開示による一実施例のブロック図を示す。
【０００７】
【図３】図3は、本開示による別の実施例のトランザクション領域を示す図である。
【０００８】
【図４】図4は、本開示による別の実施例のブロック図を示す。
【０００９】
【図５】図5は、本開示による別の実施例のブロック図を示す。
【００１０】
【図６】図6は、本開示の一実施例による動作のフローチャートを示す図である。
【００１１】
【図７】図7は、本開示の別の実施例のプラットフォームについての上位概念的なシステムを示す図である。
【００１２】
以下の詳細な説明は実施例を示すリファレンスとともに進行するが、多くの代替例、修正例及び変形例が当業者にとって明らかになるであろう。
【発明を実施するための形態】
【００１３】
一般に、本開示はバイナリトランザクションに基づくプロセッサによるロックエリジョンの機会(lock  elision  opportunities)を検出及び活用するためのシステム、デバイス、方法、コンピュータ可読媒体を提供する。ロックは、コード、メモリ又はその他のリソースのクリティカルセクションの同期及びマルチスレッドアプリケーションによるアクセスの競合を可能にし、マルチスレッドアプリケーションは複数のプロセッサ又はプロセッサコアにおいて動作している。本開示で説明されるようなロックエリジョンは、従来のハードウェアロックエリジョン(Hardware  Lock  Elision：HLE)システムで必要とされているような、アプリケーションソフトウェアに対するユーザーの目に見えるセマンティックな修正を必要とすることなく、同期のオーバーヘッドを回避する能力を、ハードウェア、ソフトウェア又はそれらの何らかの組み合わせに提供する。この意味において、本開示のロックエリジョンは自動的であると考えられてよい。
【００１４】
以下において詳細に説明されるように、ロックエリジョンプロセスの一部分は、例えばx86アーキテクチャのようなパブリック命令セットアーキテクチャ(instruction  set  architecture：ISA)から、プロセッサ又はコアにより実行されるネイティブISAへの、アプリケーションソフトウェアの動的なバイナリ変換(dynamic  binary  translation：DBT)の間に実行されてよい。命令リオーダリングを含む他の最適化が実行されてもよい場合、ロックはDBTの間に検出され除外されてよい。ロックエリジョンプロセスは、アトミック性(atomicity)によりイネーブルにされてもよいし、或いは、プロセッサにより提供されるトランザクションのサポートであってもよく、変換されたセクションの投機的な実行(speculative  execution)及び競合や不具合の検出を可能にし、競合や不具合は実行されるセクションのロールバック又は取り消し(roll  back)のトリガを与える。一実施例において、ロックを除外することがパフォーマンスを低下させる旨の判定がなされた場合、ロックエリジョンプロセス(又は最適化)は、抑制される(throttle  back)。ここで使用されるような「最適化(optimization)」という用語は、一般に、例えばコード実行の効率における改善のような、絶対的な状態ではなく相対的な改善を指す。
【００１５】
図1は、本開示の一実施例についての上位概念的なシステム100を示す図である。ロックエリジョン104のDBTモジュールは、以下において詳細に説明されるように、トランザクションサポートのマルチコアシステム106とアプリケーションソフトウェア102との間のインターフェースを為すように構成される。アプリケーションソフトウェア102は、コードのうち重要な部分(又はクリティカルセクション)を保護するためにロック又はその他の同期メカニズムを含んでよい。DBTモジュール104は、マイクロプロセッサシステム106により提供されるハードウェアサポートに関するこれらのクリティカルコードセクションに関連付けされるロックエリジョン機会を動的に検出及び利用するように構成される。
【００１６】
図2は、本開示による一実施例のブロック図200を示す。アプリケーションソフトウェア又はコード102は、ベーシック入出力システム(Basic  Input-Output  System：BIOS)、オペレーティングシステム(OS)204、デバイスドライバ及び他の何らかのソフトウェア206を含み、ソフトウェアはシステムで動作する上位レベルアプリケーション又は他のユーザー提供コードを含む。アプリケーションソフトウェア102は、一般に、マルチスレッドコンポーネントを含む。アプリケーションソフトウェア102は、例えばx86アーキテクチャ又はその変形のようなパブリックISAとして提供されてもよいし、それにコンパイルされてもよいし、或いは、それに準拠するように構成されてよい。
【００１７】
DBTモジュール104は、ロックエリジョンモジュール208を含むように示されている。DBTモジュール104は、パブリックISAから、プロセッサ106で実行されるネイティブISAへ、コードを変換するように構成されてよい。ネイティブISAは、一般に、パブリックISAとほとんど又は全く類似性を持っていない。パブリックISAは、既存のソフトウェアの大きな集まりに対するアクセスを可能にするレガシーコードのサポートを提供する一方、ネイティブISAは、例えばプロセッサパフォーマンスの増進又は電力消費の改善などのようなターゲット目標に対して設計される。プロセッサは、新たなテクノロジを活用するために定期的に更新され、及び、既存のソフトウェアを動作させる機能を維持しつつネイティブISAを変更する。DBTプロセスの間に、ロック及び関連するクリティカルセクションが検出され、ロックエリジョンの機会が利用される。
【００１８】
マルチプロセッサシステム106は、ネイティブISAにおいてコードを実行するように構成される任意の数のプロセッサ又はプロセシングコアを含んでよい。マルチプロセッサシステム106は、ネイティブコードにおけるトランザクションセマンティックサポート(例えば、アトミック性)を提供するように構成されるトランザクションサポートプロセッサ210(又は他の適切なハードウェア)を含んでよい。コードのトランザクション又はアトミック領域は、プロセッサの現在のアーキテクチャ状態(キャッシュメモリやレジスタの内容など)が有効化されて内部ハードウェアバッファに保存される「チェックポイント」から始まってもよい。そして、コードのアトミック領域は投機的に実行され、不具合又は競合が生じるならば、プロセッサの状態は前に保存されたチェックポイントまでロールバックされ、投機的な実行の影響が出ないようにする。そうでない場合、投機的な実行はコミット又は確定され(committed)、以後、新たなチェックポイントが、先行するものの代わりに設定され、コード実行の順方向への進行が達成される。
【００１９】
マルチコアシステム106は、コード及び/又はデータを保存するため又は他の何らかの目的のためにメモリ212を含んでよい。メモリは、メインメモリ、キャッシュメモリ、レジスタ、メモリマップI/O、状態コードレジスタ、及び、他の任意の状態情報のためのストレージ等のうちの任意のもの又は全てを含んでよい。何らかの適切なキャッシュメモリコヒーレンシープロトコルを利用して、トランザクションサポートプロセッサ210は、システムの何れかのプロセッサ又はコアにより、読み込み及び書き込みアクセスを含むメモリ212に対するアクセスを監視するように構成されてもよい。
【００２０】
図3は、本開示による別の実施例のトランザクション領域300を示す。例えばDBTモジュール104により生成されるような変換コード領域は、変換境界302により制限される。コードのクリティカルセクション306は、DBTモジュール104により検出されるスピンロック(spin  lock)304により保護される。スピンロックは、比較的簡易なロック手段の具体例であり、或るスレッドがクリティカルセクションに対するロックを取得し、他のスレッドはロックの獲得を待機している間ループ(又はスピン)する。ロックを獲得したスレッドがクリティカルセクションとともに終了した場合、ロックを解放し、スピンアンロック308とする。一実施例に関連してスピンロックがここで議論されているが、本開示の方法及びシステムは、当然に、任意のタイプのロック動作に一般化されてよいことが、理解されるであろう。
【００２１】
以下、スピンロックに関する例示的なDBTを説明する。この例における「オリジナル」又は変換前のコードは、x86アセンブリ言語で示されており、コードのクリティカルセクションは、スピンロック処理及びスピンアンロック処理により制限される。
【００２２】
オリジナルコード：
【００２３】
【数１】
2017509083.tif 000003
この例では、メモリに対してアトミックな読み込み及び書き込み動作を実行する交換命令(xchg)は、今やプロセッサがロックをホールドしていることを示す‘0’を読み込み処理(リード)が返すまで、メモリアドレスLOCKを継続的にポーリングする。ロックのオーナーがspin_unlockコールでLOCKに‘0’を書き込むまで、他の全てのプロセッサはspin_lockをコールする場合に‘1’に設定されたLOCK変数を見ることになるであろう。多くのプロセッサがロック変数に‘1’を書き込む一方、他の多くのプロセッサが変数を読み込むことに起因して、ロック変数が競合する場合に、この手順は、比較的大量のコヒーレンストラフィックを生成する。
【００２４】
DBTモジュールは、以下に示されるように、このコードをプロセッサのネイティブISAに変換する。命令は、ロード(LDs)及びストア(STs)のような基本動作に分解される。FENCE及びCOMMIT動作が、同期及びトランザクションセマンティクスを達成するために加えられる。FENCE動作は、他のプロセッサにとってグローバルに可視的であるように先行するメモリ動作を強制し、及び/又は、プロセッサの実行パイプラインでメモリ動作の投機的なリオーダリングをブロックすることにより、メモリオーダリング特性を提供する。ストアバッファ又は書き込みキューは、FENCE(又はフェンス)動作がリタイヤ(retirement)に達すると排出され、他のプロセッサがFENCEの前に生じた保存動作を観察することを保証する。COMMIT(コミット又は確定)動作は、プロセッサが、現在の(適切であるように有効化された)キャッシュメモリ及びレジスタの状態をチェックポイントとし、次の投機的に最適化されたコードインターバルで実行が進行するようにする。COMMIT動作は、投機的な実行が前方への進行を行わせること(すなわち、任意的な大きなアトミック領域を回避する)、及び、プロセッサにとって利用可能な適切な状態情報が常に存在すること(不具合などの場合には、投機的なコードの実行はロールバックされる)等を保証する。
【００２５】
ネイティブコードへの変換：
オリジナル  −＞  ネイティブ
【００２６】
【数２】
2017509083.tif 000004
しかしながら、変換されるコードにパフォーマンスペナルティが存在し、その理由は、クリティカルセクションにおける動作がまれにしか競合しない場合でさえ、保存命令(ST  rl,  [LOCK]  and  ST  r0,  [LOCK])はプロセッサ間で競合するからである。
【００２７】
従って、DBTは例えば以下に示すようにネイティブコードを最適化するように構成されてよい。
【００２８】
ネイティブコードの最適化：
【００２９】
【数３】
2017509083.tif 000005
第1のロード(LD  r0,  [LOCK])は、プロセッサのトランザクションメモリハードウェア(又はメモリリオーダリングハードウェア)に対して、ロック変数を可視化する。他のプロセッサが[LOCK]に対する書き込みを試みる場合、アトミック領域は中断される。第1ストア(ST  r1,  [LOCK])は、第2ストア(ST  r0,  [LOCK])がメモリの[LOCK]に同じ値を書き込もうとしていることが仮定される場合、除外されてもよい。第2ロード(LD  r2,  [LOCK])は、デッドストア(“dead”  store)が実行されて以来、ロックが変更されていないことが仮定される場合、削除されてもよい。第2ストア(ST  r0,  [LOCK])は、チェック動作(STCHK  [LOCK])により置換され、この動作は、プロセッサのトランザクション又は命令のリオーダリングハードウェアを利用して、クリティカルセクションにおいて他のストア(命令)がロック変数を修正しないことを保証する。
【００３０】
この例では、変換が、変換エグジットブランチに到達すると、プロセッサのハードウェアサポート(例えば、モジュール210)により保証されるように、以下のことが判明する：
1．この変換の実行の最中に、他の何れのプロセッサもロック変数を修正しない。
【００３１】
2．このプロセッサの変換においてロック変数の修正は生じない。
【００３２】
3．このクリティカルセクション中のメモリ動作と他の任意のプロセッサにおけるメモリ動作との間に、読み込み-書き込みの競合は存在せず、プロセッサはロックによって保護されるクリティカルセクション内で動作していてもよいし或いはしていなくてもよい。
【００３３】
これらの条件の下で、ロックは適切に除外される。クリティカルセクションに関してアトミック性の違反が検出された場合、或いは、ストア検査(STCHK)がロック違反に対する修正に起因して失敗した場合、障害又はフォールト(fault)が生成される。その場合、コードの実行は、最後に成功した確定したチェックポイント状態までロールバックされ、DBTは、例えばロックを排除しない、よりいっそう保存形式で、不具合を越えて前進するように、その地点から実行を進めてもよい。
【００３４】
一実施例において、DBTは障害のカウント値を追跡し、及び、その特定のロックに対して閾値に到達した場合、ロックエリジョン無しにコードの一部分を再変換し、静的なロックエリジョンの実施例では不可能な適合化をもたらし、その場合において、類似するメカニズムが公のISAにより明示的に提供される(又はそこに含まれる)。
【００３５】
図4は、本開示による別の実施例のブロック図400を示す。DBTモジュール104の一形態は、多数のサブモジュールを含むように詳細に示されている。モジュールについての或る並び方が示されているが、様々な実施例は適切な任意の順番を使用してよいこと、或るモジュールは選択的であってよいこと、及び、他の追加的なモジュール(図示せず)が使用されてもよいことが、認められるであろう。DBTは、(モジュール412により生成される)ネイティブコードへの変換を実行することにより動作するように構成され、そのネイティブコードは、オリジナルプログラムのパブリックISA命令のうちの或る領域に実質的に対応している。変換される領域は、例えば、モジュール404により検出されるようなロックされたクリティカルセクションであってもよい。変換は、モジュール402でコードを表現した後に、DBTにより生成されてもよい。DBTは、全ての変換されたコードを検査し及びそのコードを最適化するように構成されてよい。
【００３６】
最適化モジュール406は、例えば、発見的及び実行時間的な動作(heuristics  and  runtime  behavior)に基づいて最適化を実行するように構成されてもよい。変換は投機的に実行され、実行の影響は、コミット処理により永続的にされてもよいし、或いは、非投機的イベント、外的なイベント又はDBTにより実行される無効な最適化の発見の際にロールバックされてもよい。各々のコミット動作は、1つ以上のパブリックISA命令により、プロセッサの状態を進行させる。本システムは、DBTにおいて静的にメモリ動作をスケジューリングし直すため(又はリオーダリングするため)(例えば、モジュール408)、及び、パブリックISA命令メモリオーダリングが動的な実行の際に乱されないことを有効化するための手段をサポートするように構成されてよい。
【００３７】
適切なロックとともに実行することが一層効率的である場合が存在するので、ロックエリジョン判定モジュール410は、例えばモジュール414のパフォーマンスモニタリングに基づいて、ロックが除外されるべきか否かを判断するように構成されてもよい。ロックを除外する判断は、以下の条件が充足されることの確認に基づいてもよい。
【００３８】
1．DBTは、1つの変換において、ロック動作及び対応するアンロック動作の双方を発見する。変換は、ロック変数のアドレスが、実行時のロック及びアンロックに関して同じであることを確認する。
【００３９】
2．アンロック動作はクリティカルセクションを事後支配する(post-dominate)。すなわち、変換の中で障害のない全ての制御フローは、アンロック動作を含むブロックに導く。
【００４０】
3．ロック、クリティカルセクション及びアンロックは、すべて、プロセッサのトランザクションハードウェアによりサポートされる単独のアトミック領域に適合させられる。
【００４１】
図5は、本開示による別の実施例のブロック図500を示す。トランザクションサポートプロセッサ210の一実施例が複数のモジュールを含むことが詳細に示されており、それらのモジュールは各自の実行の際に最適化ネイティブISAコード領域と相互運用する。モジュールについての或る並び方が示されているが、様々な実施形態は適切な任意の順番を使用してよいこと、或るモジュールは選択的であってよいこと、及び、他の追加的なモジュール(図示せず)が使用されてもよいことが、認められるであろう。コンフリクト検出モジュール502は、投機的実行の間に生じるコンフリクト(又は競合)を検出するように構成される。例えば、変換におけるメモリの読み込み及び書き込み動作は、投機的実行を行うプロセッサのキャッシュメモリの或るライン(領域)に関連するストアのための投機的属性ビット(speculative  attribute  bit)(又はロードに対するオブザベーションビット(observation  bit))を設定する。その属性ビットは、キャッシュに書き込まれるデータが正しいものであることは未だ不明であること、或いは、データが本来のメモリ順序から逸脱してキャッシュから読み込まれたことを示す。属性ビットは、外部エンティティ(例えば、他のスレッド又は他のプロセッサ)がそのキャッシュラインのオーナーシップを要求すべき場合に、ロールバック(又は取り消し)の出現を強制するように構成されてもよい。投機的実行がコミット動作に到達することに成功した場合、キャッシュに関連付けられていた属性ビットはクリアされる(例えば、モジュール508)。すなわち、キャッシュ内のデータ及びそれらに対するメモリアクセスの順序が有効化される。ただし、キャッシュメモリコヒーレンシープロトコルで規定されるように、唯一のライター(writer)がキャッシュラインに対する排他的アクセス権を獲得することが保証される限り、ロールバック無しに、複数のプロセッサで動作する複数の同時リーダー(reader)が許容される。しかしながら、投機失敗(misspeculation)が生じ、プロセッサが、コミットに成功した最後の状態へのロールバックを実行する場合、データキャッシュは、投機的属性ビットが設定されている全てのキャッシュラインを破棄してよい。これは、自動的に、最新の有効な非投機的状態を復元することになる。
【００４２】
命令リオーダリング確認モジュール504は、実行の最中に、DBTにより静的に実行されてよい命令リオーダリングを動的に有効化するように構成されてよい。無効なリオーダリングのイベントが発生した場合、ロールバックが強制され(モジュール506)、再変換がDBTにより実行され、提示している命令のリオーダリングを変更又は削除する。
【００４３】
図6は、本開示の別の実施例による動作のフローチャート600を示す。この動作はロックエリジョンのための方法を提供する。動作610において、第1命令ISAから第2ISAにおける変換されたコードへ、コード領域に関するDBTが実行される。第1ISAはパブリックISAである一方、第2ISAはプロセッサに対してネイティブである。動作620において、DBTの最中に、コード領域のうちのクリティカルセクションに関連するロックが検出される。動作630において、変換されたコードからロックが除外される。動作640において、クリティカルセクション内の変換されたコードが投機的に実行される。動作650において、トランザクションの障害を検出したことに応じて、投機的実行はロールバックされる。動作660において、トランザクションの障害が無かった場合、投機的実行はコミットされる。
【００４４】
図7は、本開示の一実施例についての上位概念的なシステムを示す図700である。システム700はハードウェアプラットフォーム又はコンピューティングデバイス710であってもよく、例えば、スマートフォン、スマートタブレット、パーソナルディジタルアシスタント(PDA)、モジュールインターネットデバイス(MID)、コンバーチブルタブレット、ノートブックコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、サーバー、スマートテレビジョン、或いは、固定されるか移動可能であるかを問わない他の任意のデバイスであってよい。デバイスは、一般に、ディスプレイ780を介してユーザーに様々なインターフェースを提示し、ディスプレイは、例えばタッチスクリーン、液晶ディスプレイ(LCD)又は適切な他の任意の形式のディスプレイであってよい。
【００４５】
システム700はプロセッサ720を含むように示されている。一実施例において、プロセッサ720は任意の個数のプロセッサコアとして実施されてよい。プロセッサ(又はプロセッサコア)は任意のタイプのプロセッサであってもよく、例えば、マイクロプロセッサ、内蔵プロセッサ、ディジタル信号プロセッサ(DSP)、ネットワークプロセッサ、フィールドプログラマブルゲートアレイ、或いは、コードを実行するように構成される他のデバイス等であってよい。プロセッサ720は、シングルスレッドコア又はマルチスレッドコアであってよく、1つのコアに対して1つより多いハードウェアスレッドコンテキスト(又は「論理プロセッサ」)を含んでよい。システム700はプロセッサ720に結合されたメモリ730を含むように示されている。メモリ730は、既知の又は当業者に利用可能な多種多様なメモリのうちの何れであってもよい(メモリは、様々なメモリ階層及び/又はメモリキャッシュを含んでよい)。システム700は、入力/出力(IO)システム又はコントローラ740を含み、IOシステム又はコントローラ740は、プロセッサ720とシステム700のうちの他の要素との間、又は、プロセッサ720とシステム700にとって外部の他の要素(図示せず)との間でデータ通信を可能にする又は管理するように構成される。システム700は、システム700と任意の外的なエンティティとの間の無線通信を可能にするように構成される無線通信インターフェース750を含んでよい。無線通信は、移動電話の通信規格を含む既存の又は将来発展する何らかの通信規格に従っていてもよいし或いはそれにコンパチブルであってよい。
【００４６】
システム700は、上述したように、アプリケーション102におけるロックエリジョンの機会を検出及び利用しつつ、プロセッサ720のネイティブコードISAへのDBTを実行するように構成される。
【００４７】
一実施例では、システム700の様々なコンポーネントがシステムオンチップ(SoC)アーキテクチャにおいて組み合わせられてよいことが、認められるであろう。一実施例では、コンポーネントは、ハードウェアコンポーネント、ファームウェアコンポーネント、ソフトウェアコンポーネント、或いは、ハードウェア、ファームウェア又はソフトウェアの適切な任意の組み合わせであってよい。
【００４８】
本願で説明される方法の実施例は、個別的に又は集合的に命令を保存する1つ以上の記憶媒体(又は記録媒体)を含むシステムで実現されてもよく、命令は本方法を実行するように1つ以上のプロセッサにより実行される。ここで、プロセッサは例えばシステムCPU(例えば、コアプロセッサ)及び/又はプログラム可能な回路を含んでよい。従って、本願で説明される方法による動作は、例えば複数の異なる物理的ロケーションにおける処理構造のような複数の物理デバイスにわたって分散されてもよいことが、意図されている。また、方法の動作は、当業者に理解されるように、個別的に又はサブコンビネーションで実行されてよいことも、意図されている。従って、各フローチャートの動作の全てが実行されることは必須でなく、本開示は、そのような動作の全てのサブコンビネーションが、当業者に理解されているように動作可能であることを、明示的に意図している。
【００４９】
記憶媒体は、任意のタイプの有形媒体を含み、例えば、フロッピディスク、光ディスク、コンパクトディスクリードオンリメモリ(CD-ROM)、再書き込み可能なコンパクトディスク(CD-RW)、ディジタル多用途ディスク(DVD)及び磁気光ディスクを含む任意のタイプのディスク、リードオンリメモリ(ROM)、ダイナミック及びスタティックRAMのようなランダムアクセスメモリ(RAM)、消去可能なプログラマブルリードオンリメモリ(EPROM)、電気的に消去可能なプログラマブルリードオンリメモリ(EEPROM)、フラッシュメモリ、磁気又は光カード等のような任意のタイプの半導体デバイス、或いは、電子的な命令を保存するのに相応しい任意のタイプの媒体を含んでよい。
【００５０】
本願における何らかの実施例で使用される「回路」は、例えば、有線接続された回路、プログラマブル回路、状態マシン回路及び/又はファームウェアを単独で又は何らかの組み合わせで含んでよく、プログラム可能な回路によって実行可能な命令を保存する。アプリケーションは、ホストプロセッサ又は他のプログラム可能な回路等のようなプログラム可能な回路で実行されるコード又は命令として実現されてよい。本願の何らかの実施例で使用されるモジュールは、回路として実現されてもよい。回路は、集積回路チップ等のような集積回路として実現されてもよい。
【００５１】
本開示は、バイナリ変換ベースのプロセッサとともにロックエリジョンの機会を検出及び利用するシステム、デバイス、方法、コンピュータ読み取り可能な媒体及びコンピュータプログラム等を提供する。以下、更なる形態を例示的に列挙する。
【００５２】
デバイスは、第1命令セットアーキテクチャ(ISA)のうちのコード領域を第2ISAにおける変換されたコードに変換し、コード領域のクリティカルセクションに関連するロックを検出及び除外するダイナミックバイナリ変換(DBT)モジュールを含む。デバイスは、クリティカルセクションにおける変換されたコードを投機的に実行するプロセッサも含む。デバイスは、投機的実行の最中に、ロック及び/又はクリティカルセクションに関連するメモリアクセスのコンフリクトを検出し、その検出に応じて投機的な実行をロールバックし、及び、その検出が無い場合に投機的な実行をコミットするトランザクションサポートプロセッサを更に含む。
【００５３】
他のデバイス例は、上記のコンポーネント(又は構成)を含み、メモリアクセスコンフリクトがロックに関連する。
【００５４】
他のデバイス例は、上記のコンポーネントを含み、前記プロセッサは、前記メモリアクセスのコンフリクトが検出されたことに応じてロールバックが実行された後に、前記ロックの下で前記クリティカルセクションにおける前記変換されたコードを再実行する。
【００５５】
他のデバイス例は、上記のコンポーネントを含み、前記DBTモジュールは前記コード領域の命令を静的にリオーダリングし、前記トランザクションサポートプロセッサは実行の最中に前記リオーダリングを動的に有効化する。
【００５６】
他のデバイス例は、上記のコンポーネントを含み、前記DBTモジュールは、前記ロックに関連する検出されたメモリアクセスのコンフリクト数を監視し、コンフリクト数が閾値を超える場合、前記ロックエリジョンを含まない新たなDBTを実行する。
【００５７】
他のデバイス例は、上記のコンポーネントを含み、前記メモリアクセスのコンフリクトは、マルチプロセシングシステムの2つ以上のプロセッサ間のメモリ読み込み及び/又は書き込みのコンフリクトを含む。
【００５８】
他のデバイス例は、上記のコンポーネントを含み、前記DBTモジュールは、実行パフォーマンスのメジャーメント(又は測定)に基づいて、変換されるコードを動的に最適化する。
【００５９】
他のデバイス例は、上記のコンポーネントを含み、前記DBTモジュールは変換されたコードに命令を挿入し、当該命令は、除外されるロックに先行するメモリ動作の影響が、マルチプロセシングシステムのプロセッサにとってグローバルに可視的であるようにする。
【００６０】
他のデバイス例は、上記のコンポーネントを含み、前記デバイスはスマートフォン、ラップトップコンピューティングデバイス、スマートTV又はスマートタブレットである。
【００６１】
他のデバイス例は、上記のコンポーネントを含み、タッチスクリーンであるユーザーインターフェースを更に有する。
【００６２】
別の実施例によれば方法が提供される。本方法は、第1命令セットアーキテクチャ(ISA)のうちのコード領域の、第2ISAにおける変換されたコードへのダイナミックバイナリ変換(DBT)を実行するステップを含む。本方法例は、前記DBTの間に、前記コード領域のクリティカルセクションに関連するロックを検出するステップを含む。本方法例は、前記変換されたコードから前記ロックを除外するステップを更に含む。本方法例は、前記クリティカルセクションにおける変換されたコードを投機的に実行するステップを更に含む。本方法例は、トランザクション障害の検出に応じて、前記投機的な実行をロールバックするステップを更に含む。本方法例は、トランザクション障害が無い場合に投機的な実行をコミットするステップを更に含む。
【００６３】
別の方法例は、上記の動作を含み、前記トランザクション障害に応じてロールバックを実行した後に、前記ロックの下で前記クリティカルセクションにおける前記変換されたコードを再実行するステップを更に有する。
【００６４】
別の方法例は、上記の動作を含み、前記DBTの間に前記コード領域の命令を静的にリオーダリングし、実行の最中に前記リオーダリングを動的に有効化するステップを更に有する。
【００６５】
別の方法例は、上記の動作を含み、前記ロックに関連するトランザクション障害数を監視し、トランザクション障害数が閾値を超える場合、前記ロックエリジョンを含まない新たなDBTを実行するステップを更に有する。
【００６６】
別の方法例は、上記の動作を含み、前記トランザクション障害は、前記ロック及び/又はクリティカルセクションに関連するメモリへのアクセスコンフリクトにより生じる。
【００６７】
別の方法例は、上記の動作を含み、前記DBTは、実行パフォーマンスのメジャーメントに基づいて、変換されるコードを動的に最適化することを更に含む。
【００６８】
別の方法例は、上記の動作を含み、前記DBTは変換されたコードに命令を挿入することを更に含み、当該命令は、除外されるロックに先行するメモリ動作の影響が、マルチプロセシングシステムのプロセッサにとってグローバルに可視的であるようにする。
【００６９】
別の実施例によればシステムが提供される。本システムは、第1命令セットアーキテクチャ(ISA)のうちのコード領域の、第2ISAにおける変換されたコードへのダイナミックバイナリ変換(DBT)を実行する手段を含む。本システム例は、前記DBTの間に、前記コード領域のクリティカルセクションに関連するロックを検出する手段も含む。本システム例は、前記変換されたコードから前記ロックを除外する手段を更に含む。本システム例は、前記クリティカルセクションにおける変換されたコードを投機的に実行する手段を更に有する。本システム例は、トランザクション障害の検出に応じて投機的な実行をロールバックする手段を更に含む。本システム例は、トランザクション障害が無い場合に投機的な実行をコミットする手段を含む。
【００７０】
別のシステム例は、上記のコンポーネントを含み、前記トランザクション障害に応じてロールバックを実行した後に、前記ロックの下で前記クリティカルセクションにおける前記変換されたコードを再実行する手段を更に含む。
【００７１】
別のシステム例は、上記のコンポーネントを含み、前記DBTの間に前記コード領域の命令を静的にリオーダリングする手段と、実行の最中に前記リオーダリングを動的に有効化するステップを更に有する手段とを更に含む。
【００７２】
別のシステム例は、上記のコンポーネントを含み、前記ロックに関連するトランザクション障害数を監視し、トランザクション障害数が閾値を超える場合、前記ロックエリジョンを含まない新たなDBTを実行する手段を更に含む。
【００７３】
別のシステム例は、上記のコンポーネントを含み、前記トランザクション障害は、前記ロック及び/又はクリティカルセクションに関連するメモリへのアクセスコンフリクトにより生じる。
【００７４】
別のシステム例は、上記のコンポーネントを含み、前記DBTは、実行パフォーマンスのメジャーメントに基づいて、変換されるコードを動的に最適化する手段を更に含む。
【００７５】
別のシステム例は、上記のコンポーネントを含み、前記DBTは変換されたコードに命令を挿入することを更に含み、当該命令は、除外されるロックに先行するメモリ動作の影響が、マルチプロセシングシステムのプロセッサにとってグローバルに可視的であるようにする。
【００７６】
別の実施例によれば、命令を保存した少なくとも1つのコンピュータ読み取り可能な記録媒体が提供され、前記命令は、上記の何れかの例に示される方法の動作をプロセッサに実行させる。
【００７７】
別の実施例によれば、上記の何れかの例に示される方法を実行する手段を含む装置が提供される。
【００７８】
本願で使用されている用語及び表現は、説明の用語として非限定的に使用されており、そのような用語及び表現を使用する場合に、図示及び説明された特徴(又はその一部分)についての何らかの均等物を排除するような意図は無く、様々な変形例が特許請求の範囲に属することが認められる。従って、特許請求の範囲はそのような全ての均等物をカバーするように意図されている。様々な特徴、側面及び形態が本願で説明されている。特徴、側面及び形態は、当業者に理解されるように、互いに組み合わせることに加えて変形及び修正する余地がある。従って本開示はそのような組み合わせ、変形及び修正を包含するように解釈されるべきである。
【図１】
2017509083.tif 000006
【図２】
2017509083.tif 000007
【図３】
2017509083.tif 000008
【図４】
2017509083.tif 000009
【図５】
2017509083.tif 000010
【図６】
2017509083.tif 000011
【図７】
2017509083.tif 000012
【国際調査報告】
2017509083.tif 000013
2017509083.tif 000014
2017509083.tif 000015