JP2017516228A - 自己書き換えコードのハードウェアサポートを提供する方法及び装置 - Google Patents

自己書き換えコードのハードウェアサポートを提供する方法及び装置 Download PDF

Info

Publication number
JP2017516228A
JP2017516228A JP2016567579A JP2016567579A JP2017516228A JP 2017516228 A JP2017516228 A JP 2017516228A JP 2016567579 A JP2016567579 A JP 2016567579A JP 2016567579 A JP2016567579 A JP 2016567579A JP 2017516228 A JP2017516228 A JP 2017516228A
Authority
JP
Japan
Prior art keywords
code
guest
cache
hardware buffer
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016567579A
Other languages
English (en)
Other versions
JP2017516228A5 (ja
Inventor
モハマド アブダラ,
モハマド アブダラ,
カーティケヤン アヴダイヤッパン,
カーティケヤン アヴダイヤッパン,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2017516228A publication Critical patent/JP2017516228A/ja
Publication of JP2017516228A5 publication Critical patent/JP2017516228A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/45525Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo

Abstract

自己書き換えゲストコードのサポートを提供する方法及び装置。この装置は、メモリ、ハードウェアバッファ、及びプロセッサを備える。プロセッサは、ゲストコードをネイティブコードに変換するとともに、ゲストコードの変換後のネイティブコードに相当するものをプロセッサのコードキャッシュ部に格納するように構成されている。プロセッサは、コードキャッシュにおける変換後コードの各位置を追跡するように構成されたハードウェアバッファを維持するようにさらに構成されている。ハードウェアバッファは、コードキャッシュにおける変換後コードの各位置と関連付けられたメモリ中の各位置への各アクセスに基づいて更新される。プロセッサは、ハードウェアバッファへのアクセス後、メモリ位置を書き換える要求を実行するようにさらに構成されている。【選択図】 図4A

Description

関連出願の相互参照
[001]本願は、2014年5月12日に出願された代理人整理番号第SMII−207.A号の本願と同一の出願人による米国仮特許出願第61/991,951号「METHOD AND APPARATUS FOR PROVIDING HARDWARE SUPPORT FOR SELF MODIFYING CODE」の優先権及び利益を主張するものであり、そのすべてを本明細書に援用する。
背景
[002]自己書き換えコード(SMC)は、あるソフトウェアコードが実行前にそれ自体の一部を書き換える最適化技術である。SMCは、Java[登録商標]プログラミング言語等を用いた実行時コンパイル(JIT)コンパイルシステムにおいて使用可能である。コード変換を使用するシステムにおいては、ゲストコードの自己書き換えによって、特有の問題が生じる。それは、ゲストコード書き換え(GCM)の検出が必要であるとともに、新たなコードに基づいて、コードキャッシュ中の対応する変換トレースを無効化又は再生する必要があるためである。
[003]GCMの検出は、滅多に発生しないケースが起こり得るため、困難となる可能性がある。滅多に発生しないケースとしては、微細にインターリーブされたコード及び書き込み可能なデータが挙げられ、例えば別個の命令及びデータパスを有するハーバードプロセッサの場合、GCMは、キャッシュ可能なメモリにコードが格納された場合には、ゲストアーキテクチャの特定のコード系列がコード変化を可視化することを必要とすることがある。
[004]滅多に発生しないケースとしては、中央演算処理装置(CPU)と異なるメモリマスタによりコード位置が書き込まれる場合がさらに挙げられる。例えば、ある直接メモリアクセス(DMA)プロセスでは、実行前に外部の周辺機器からコードをダウンロードする。DMAメモリ書き込み操作をCPUから見えるようにし、考慮できるように、入出力メモリ管理ユニット(IOMMU)が存在する場合が多い。
概要
[005]ともにGCMとして知られている自己書き換えゲストコード及びゲストコードのDMA書き換えを取り扱うことが必要とされている。実施形態は、コードキャッシュに格納されたコードのトレースに対応するメモリ領域の変化を識別するように構成されている。実施形態は、コードキャッシュにおける変換後コードの位置を追跡するようにさらに構成されていてもよい。自己書き換えコードが存在し得るデータのフェッチに対応可能である。自己書き換えコードの検出及びコードキャッシュにおけるコードのトレースの置換が行われている間に性能が向上する。
[006]一実施形態は、自己書き換えコードのサポートを提供する装置として実装される。この装置は、メモリ、ハードウェアバッファ、及びプロセッサを備える。プロセッサは、ゲストコードをネイティブコードに変換するとともに、変換後ゲストコードをプロセッサのコードキャッシュ部に格納するように構成されている。プロセッサは、コードキャッシュにおける変換後コードの各位置を追跡するように構成されたハードウェアバッファを維持するようにさらに構成されている。ハードウェアバッファは、コードキャッシュにおける変換後コードの各位置と関連付けられたメモリ中の各位置への各アクセスに基づいて更新される。プロセッサは、ハードウェアバッファへのアクセス後、メモリ位置を書き換える要求を実行するようにさらに構成されている。
[007]上記は、概要であるため、必然的に詳細を簡素化、一般化、及び省略している。したがって、当業者は、概要が例示されているに過ぎず、何ら限定するものでないことを認識されよう。特許請求の範囲によってのみ規定される本発明の他の態様、独創的特徴、及び利点については、以下に示す非限定的な詳細説明において明らかとなるであろう。
[008]本開示の別の態様については、添付の図面を参照することにより、ほんの一例に過ぎない以下の説明から明らかとなるであろう。
[009]図1は、種々の実施形態に係る、ゲスト命令ブロックがネイティブ変換ブロックに変換されるブロックベースのトランスレーションプロセスを示した図である。
[0010]図2は、種々の実施形態に係る、ゲスト命令ブロック及びその対応するネイティブ変換ブロックがキャッシュに格納される様態を示す例示的なハードウェア加速変換システムを示した図である。
[0011]図3は、種々の実施形態に係る、システムのページサイズよりも小さな粒度でゲストコードを追跡するシステムの例示的な構成要素を示した図である。
[0012]図4Aは、種々の実施形態に係る、コードキャッシュにおける変換後コードの位置を追跡する例示的な電子的構成要素制御のプロセスを示したフローチャートである。 [0012]図4Bは、種々の実施形態に係る、コードキャッシュにおける変換後コードの位置を追跡する例示的な電子的構成要素制御のプロセスを示したフローチャートである。
[0013]図5は、種々の実施形態を含む例示的なコンピューティングシステムのブロック図である。
詳細な説明
[0014]以下の詳細な説明においては、具体的な方法の順序、構造、要素、及び接続等、多くの具体的詳細を示している。ただし、本発明の実施形態を実現するためにこれら及び他の具体的詳細を利用する必要はないことが了解されるものとする。他の状況においては、周知の構造、要素、又は接続の省略により、又はより詳細な説明をしないことにより、本明細書が無用に不明瞭化することのないようにする。
[0015]本明細書において、「一実施形態(one embodiment又はan embodiment)」という言及は、当該実施形態と関連して説明する特定の特徴、構造、又は特性が本発明の少なくとも1つの実施形態に含まれることを示すものである。本明細書の種々の箇所において表現「一実施形態において」が登場する場合、これらは必ずしもすべてが同じ実施形態を表しておらず、他の実施形態を相互に除外する別個又は代替の実施形態も表していない。なお、特許請求の範囲に係る如何なる実施形態も、本開示のすべての「目的」又は「実施形態」を必ずしも含んでいない。
[0016]さらに、いくつかの実施形態によって示し得るものの他の実施形態によっては示し得ない種々の特徴を説明する。同様に、いくつかの実施形態の要件となり得るものの他の実施形態の要件とはなり得ない種々の要件を説明する。
[0017]以下の詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットの操作の手順、ステップ、論理ブロック、処理、及び他の記号的表現の観点で示している。これらの説明及び表現は、データ処理技術の当業者が他の当業者に対して自身の仕事の内容を最も効果的に伝えるために使用する手段である。本明細書においても一般的にも、手順、コンピュータ実行ステップ、論理ブロック、処理等は、所望の結果を導く首尾一貫した一連のステップ又は命令と考えられる。各ステップは、物理量の物理的操作を要するステップである。通例、これらの量は、必ずしもそうとは限らないが、コンピュータ可読記憶媒体の電気的又は磁気的な信号の形態を取り、コンピュータシステムにおいて格納、移動、組合せ、比較、或いは操作可能である。これらの信号は、主に一般的に使用されているという理由で、ビット、値、要素、記号、文字、用語、数字等と称するのが好都合な場合もあることが分かっている。
[0018]ただし、これらの用語及び類似する用語はすべて、然るべき物理量と関連付けられることになり、これらの量に適用された便利な標識に過ぎないことに留意する必要がある。以下の記述において特に明確な指定のない限りは、当然のことながら、本発明の全体において、「処理」、「アクセス」、「書き込み」、「格納」、「複製」等の用語を用いた記述は、コンピュータシステムのレジスタ、メモリ、及び他のコンピュータ可読媒体内で物理(電子)量として表されたデータを操作して、コンピュータシステムのメモリ、レジスタ、又はそのような他の情報記憶、伝送、若しくは表示装置内で同様に物理量として表されるその他のデータに変換するコンピュータシステム又は類似の電子演算装置の動作及び処理を表す。
[0019]以下、本開示の種々の実施形態を詳しく参照するが、その例を添付の図面に示している。さらに、以下の本開示の詳細な説明においては、本開示の十分な理解が得られるように、多くの具体的詳細を示している。ただし、本開示は、これらの具体的詳細なく実現可能であることが了解される。他の例では、本開示の態様が無用に不明瞭とならないように、周知の方法、手順、構成要素、及び回路を詳しく説明していない。
[0020]実施形態は、コードキャッシュに格納されたコードのトレースに対応するメモリ領域の変化を識別するように構成されている。実施形態は、コードキャッシュにおける変換後コードの位置を追跡するようにさらに構成されていてもよい。自己書き換えコードの検出及びコードキャッシュにおけるコードのトレースの置換が行われている間に性能が向上する。
[0021]図面は、種々の実施形態において用いられる例示的な構成要素を示している。図面には、具体的な構成要素を開示しているが、当然のことながら、このような構成要素は例示である。すなわち、その他様々な構成要素又は図面に列挙された構成要素の変形例を有するように実施形態が適合している。当然のことながら、図面中の構成要素は、提示した以外の構成要素と協働するようになっていてもよく、実施形態の目標の達成に、図面の構成要素のすべてが必要なわけではない。
[0022]図1は、種々の実施形態に係る、ゲスト命令ブロックがネイティブ変換ブロックに変換されるブロックベースの変換プロセスを示した図である。図1に示すように、複数のゲスト命令ブロック101が、対応する複数のネイティブ変換ブロック102に変換されることが示されている。
[0023]本発明の実施形態は、ゲスト命令ブロックの命令を対応するネイティブ変換ブロックの命令に変換することによって機能する。ブロック101はそれぞれ、ゲスト命令で構成されている。これらのゲスト命令は、多くの異なるゲスト命令アーキテクチャ(例えば、Java、JavaScript[登録商標]、x86、MIPS、SPARC等)に由来し得る。複数のゲスト命令ブロックを1つ又は複数の対応するネイティブ変換ブロックに変換可能である。この変換は、命令ごとに発生する。
[0024]図2は、種々の実施形態に係る、ゲスト命令ブロック及びその対応するネイティブ変換ブロックがキャッシュに格納される様態を示す例示的なハードウェア加速変換システム200を示した図である。図2に示すように、変換ルックアサイドバッファ(CLB)206の使用によって、ゲストブロックとネイティブブロック間のアドレスマッピングをキャッシングする。これにより、プロセッサ208から低遅延で利用できることを通じて、最も頻繁に生じるネイティブ変換ブロックへのアクセスが行われる。
[0025]図2の図は、頻繁に生じるネイティブ変換ブロックが高速低遅延キャッシュである変換ルックアサイドバッファ206内に維持される様態を示している。図2に示す構成要素は、ハードウェア加速変換処理を実装することによって、はるかに高レベルの性能を提供する。
[0026]ゲストフェッチ論理ユニット202は、システムメモリ201からゲスト命令をフェッチするハードウェアベースのゲスト命令フェッチユニットとして機能する。所与のアプリケーションのゲスト命令は、システムメモリ201内に存在する。プログラムの起動に際して、ハードウェアベースのゲストフェッチ論理ユニット202は、ゲストフェッチバッファ203へのゲスト命令のプリフェッチを開始する。ゲストフェッチバッファ207は、ゲスト命令を蓄積し、それらをゲスト命令ブロックとして組み立てる。これらのゲスト命令ブロックは、変換テーブル204の使用により、対応するネイティブ変換ブロックに変換される。変換後ネイティブ命令は、ネイティブ変換ブロックが完了するまで、ネイティブ変換バッファ205に蓄積される。そして、ネイティブ変換ブロックがネイティブキャッシュ207に移され、マッピングが変換ルックアサイドバッファ206に格納される。その後、ネイティブキャッシュ207の使用により、ネイティブ命令がプロセッサ208に供給されて実行される。一実施形態において、ゲストフェッチ論理ユニット202が実行する機能は、ゲストフェッチ論理状態機械により生成される。
[0027]このプロセスが続くと、変換ルックアサイドバッファ206は、ゲストブロックのネイティブブロックへのアドレスマッピングで満たされる。変換ルックアサイドバッファ206は、1つ又は複数のアルゴリズム(例えば、最も長い間使われていない等)を用いて、より頻繁に生じるブロックマッピングがバッファ内に保たれる一方、滅多に生じないブロックマッピングがバッファから追い出し(evict:エビクト)されるようにする。このように、変換ルックアサイドバッファ206には、高出現のネイティブ変換ブロックマッピングが格納される。また、ネイティブブロック内の十分に予測される極端なゲスト分岐は、対象とするブロックが単一のマッピングネイティブブロック内で結合されて、CLB構造について低容量の効率に保っていることから、新たなマッピングをCLBに挿入する必要がないことに留意されたい。さらに、一実施形態において、CLB206は、ネイティブアドレスマッピングに対して終了ゲストのみを格納するように構造化される。この態様によっても、CLBの低容量効率が保たれる。
[0028]ゲストフェッチ論理202は、変換ルックアサイドバッファ206を調べて、ゲスト命令ブロックからのアドレスがネイティブ変換ブロックに変換済みであるか否かを判定する。上述の通り、本発明の実施形態は、変換処理のハードウェア加速を提供する。このため、ゲストフェッチ論理202は、システムメモリ201からゲストアドレスをフェッチして新たな変換を行うのに先立って、既存のネイティブ変換ブロックマッピングを変換ルックアサイドバッファ206で調べることになる。
[0029]一実施形態において、変換ルックアサイドバッファは、ゲストアドレス範囲又は個々のゲストアドレスによって索引付けされる。ゲストアドレス範囲は、ネイティブ変換ブロックに変換済みのゲスト命令ブロックのアドレスの範囲である。変換ルックアサイドバッファにより格納されたネイティブ変換ブロックマッピングは、各自の対応するゲスト命令ブロックの対応するゲストアドレス範囲によって索引付けされている。このため、ゲストフェッチ論理は、マッピングが変換ルックアサイドバッファ206に保持された変換後ブロックのゲストアドレス範囲又は個々のゲストアドレスに対してゲストアドレスを比較することにより、ネイティブキャッシュ207又は図3のコードキャッシュに格納されたものの中に既存のネイティブ変換ブロックが存在するか否かを判定することができる。既存のネイティブ変換ブロックがネイティブキャッシュ又はコードキャッシュのどちらかに存在する場合は、対応するネイティブ変換命令がこれらのキャッシュからプロセッサに直接転送される。
[0030]このように、高出現のゲスト命令ブロック(例えば、頻繁に実行されるゲスト命令ブロック)には、それぞれの対応する高出現のネイティブ変換ブロックマッピングが高速低遅延の変換ルックアサイドバッファ206内に維持されている。ブロックについては、適当な置換ポリシーによって、高出現のブロックマッピングが変換ルックアサイドバッファ内に留まるようにする。このため、ゲストフェッチ論理202は、要求されたゲストアドレスが変換済みであるか否かを即座に識別するとともに、変換済みのネイティブ命令をネイティブキャッシュ207に直接転送して、プロセッサ208により実行することができる。システムメモリへのトリップに40〜50サイクル以上を要する可能性があることから、これらの態様によって、多くのサイクルが節約される。これらの属性(例えば、上記のうちのCLB、ゲスト分岐シーケンス予測、ゲスト及びネイティブ分岐バッファ、ネイティブキャッシング)では、本発明の実施形態のハードウェア加速機能は、相当するネイティブアプリケーションのアプリケーション性能の80%〜100%以内のゲストアプリケーションのアプリケーション性能を実現可能である。
[0031]一実施形態において、ゲストフェッチ論理202は、プロセッサ208からのゲスト命令要求とは無関係に、ゲスト命令を絶えずプリフェッチして変換する。ネイティブ変換ブロックは、これら使用頻度の低いブロックのためのシステムメモリ201の変換バッファ「コードキャッシュ」内に蓄積可能である。また、変換ルックアサイドバッファ206は、使用頻度が最も高いマッピングを保持する。したがって、要求されたゲストアドレスが変換ルックアサイドバッファにおいてゲストアドレスにマッピングされていない場合、ゲストフェッチ論理は、システムメモリ201を確認することにより、システムメモリ201に格納されたネイティブ変換ブロックにそのゲストアドレスが対応しているか否かを判定することができる。
[0032]一実施形態において、変換ルックアサイドバッファ206は、キャッシュとして実装され、キャッシュコヒーレンシプロトコルを利用することにより、より高レベルのキャッシュ及びシステムメモリ201に格納されたはるかに大きな変換バッファとのコヒーレンシを維持する。変換ルックアサイドバッファ206に格納されたネイティブ命令マッピングは、高レベルのキャッシュ及びシステムメモリ201にも書き戻される。システムメモリへの書き戻しによって、コヒーレンシが維持される。このため、キャッシュ管理プロトコルの使用により、高出現のネイティブ変換ブロックマッピングが変換ルックアサイドバッファ206に格納され、低出現のネイティブ変換ブロックマッピングがシステムメモリ201に格納されるようにすることができる。このため、システムメモリ201には、はるかに大きな形態の変換バッファ206が存在する。
[0033]一実施形態において、図2のアーキテクチャは、多くの異なる命令アーキテクチャを入力として受け付け得る柔軟な変換プロセスを使用する仮想命令セットプロセッサ/コンピュータを実装する。このような仮想命令セットプロセッサにおいて、プロセッサのフロントエンドは、ハードウェア加速変換処理を活用してはるかに高いレベルの性能を提供しつつ、ソフトウェア制御が可能なように実装される。このような実装により、様々なゲストアーキテクチャの処理及び変換が可能である一方、それぞれのアーキテクチャがハードウェア加速の恩恵を受けて、はるかに高いレベルの性能を享受する。例示的なゲストアーキテクチャとしては、Java、JavaScript、x86、MIPS、SPARC等が挙げられる。一実施形態において、「ゲストアーキテクチャ」としては(例えば、ネイティブアプリケーション/マクロ動作による)ネイティブ命令が可能であり、変換プロセスは、最適化されたネイティブ命令(例えば、最適化されたネイティブ命令/マイクロ動作)を生成する。ソフトウェア制御されるフロントエンドは、プロセッサ上で実行されるアプリケーションの柔軟性を高くすることができる。上述の通り、ハードウェア加速によれば、ネイティブに近いハードウェア速度でゲストアプリケーションのゲスト命令を実行することができる。
コードキャッシュにおける変換後コードの追跡
[0034]バイナリトランスレーションを採用してゲスト(例えば、ソース)コードを、同一又は別の命令セットアーキテクチャ(ISA)のネイティブ(例えば、ターゲット)コードに変換するアーキテクチャは、自己参照コード、自己書き換えコード、及び入出力装置によるDMAを介した相互コード書き換えの問題に対処する必要がある。実施形態は、ゲストコードの真偽自己書き換え及びゲストコードのDMA書き換えを取り扱うように構成されている。
[0035]ゲストコードのDMA書き換えを伴う状況に対処する場合は、命令の変換及びコードキャッシュへの保持が行われたゲストページの書き込み保護が可能である。ただし、書き込み保護されたページは、IOMMUを採用していないシステムにおいて、コードキャッシュにおけるゲストコードのコピーがDMA装置による書き換えによって古くなることを防止できない。さらに、ゲストページの粒度での書き込み保護は、いずれかのコードが同じページのデータと混じり合った場合、又は大きなページがまばらに変換された場合に、性能上の大きな影響を及ぼす。
[0036]図3は、種々の実施形態に係る、システムのページサイズよりも小さな粒度でゲストコードを追跡するシステムの例示的な構成要素を示している。図3は、コードを実行し、自己書き換えコードを実行し、自己書き換えコードに応答してコードキャッシュを維持するための構成要素を示している。システム300は、プロセッサ302及びメモリ310を具備する。なお、システム300は、他の図面に存在する他の構成要素をさらに具備していてもよい。
[0037]プロセッサ302は、メモリ310に格納されたプログラム及び/又はコードを実行するように構成されている。プロセッサ302は、コードキャッシュ存在バッファ(PCB:Present in Code Cache Buffer)308、PCB関連レジスタ314、キャッシュ320、自己書き換えコード(SMC)検出モジュール330、及び実行機能モジュール350を具備する。メモリ310は、コードキャッシュ存在テーブル(PCT:Present in Code Cache Table)312を含む。実行機能モジュール350は、命令をフェッチする1つ又は複数の処理コア及び機能を含み得る。
[0038]SMC検出モジュール330は、自己書き換えコードによるコードの書き換えを検出及び/又は判定するように構成されている。いくつかの実施形態において、SMC検出モジュール330は、実行機能モジュール350と通信を行うことにより、自己書き換えコードがいつそれ自体を書き換えるかを決定する。
[0039]実行機能モジュール350は、キャッシュ320及び/又はメモリ310からアクセスされたプログラム及び/又はコードをプロセッサ302が実行できるように構成されている。キャッシュ320は、コードキャッシュ322及びデータキャッシュ324を具備する。コードキャッシュ322は、メモリ310からのコードをキャッシングして、プロセッサ302の性能を向上させるように構成されている。データキャッシュ324は、メモリ310からのデータをキャッシングして、プロセッサ302の性能を向上させるように構成されている。
[0040]いくつかの実施形態においては、コードキャッシュ322とデータキャッシュ322が組み合わされることにより、キャッシュ320にコード及びデータがともに格納される。例えば、コード及びデータをキャッシュ320にインターリーブ可能である。
[0041]実施形態は、最小のページサイズよりも小さな粒度でゲストコードを追跡することにより、ゲストコードの追跡及び保護を改善するように構成されている。このより小さな粒度において、例えばMMUのキャッシュラインのサイズは、変換されたゲストコードページの格納に依存不可能であってもよい。実施形態は、コードキャッシュ存在テーブル(PCT)312を使用して、コードキャッシュ322における変換後コードのマッピング及び追跡を行う。格納又はDMA書き込みでは、その格納又はDMA書き込みのグローバルな可視化に先立って、PCT312を参照する。
[0042]いくつかの実施形態においては、メモリ固有の構造であるPCT312へのアクセスと関連付けられたメモリ遅延を隠すため、PCT312をより小さくキャッシングしたバージョンをプロセッサ302に格納するが、これはコードキャッシュ存在バッファ(PCB)308として知られている。所与のページアドレス(PA)に格納又はDMA書き込みが発生した場合は、PCB308においてアクセスが行われる。PCB308におけるアクセスが不首尾に終わった場合は、PCT312においてアクセスが行われる。PCB308及び/又はPCT312の探索に際し、変換済みのキャッシュラインに対して格納が行われる場合は、イーガー法(eager method)として既知の方法で格納を実行したスレッド/コアに関して例外(exception:エクセプション)を発生させる選択肢が与えられる。なお、スレッド/コアの例外対象IDをシステムレジスタに格納することによって、格納を実行するスレッド/コアと異なるスレッド/コアに例外を誘導することができる。
[0043]いくつかの実施形態においては、レイジー法(lazy method)として既知の方法でゲストがPCB308及び/又はPCT312を分岐する場合、例外を後に発生させることができる。また、参照及び書き換えの両者に関して、如何なる例外も抑制可能である。
[0044]変換済みのページ(例えば、4Kページ)でのキャッシュラインに対する格納又はDMA書き込みに際しては、PCB308においてエントリが追加され、当該エントリが書き換え済みとしてマーキングされる。いくつかの実施形態において、未変換のデータ又はゲストコードに対する格納については、格納ごとにPCT312に至ることはない。未変換のデータ又はゲストコードに対する各格納に際してのPCB308へのアクセスは、キャッシュ(例えば、L2キャッシュ)において各ページ(例えば、4Kページ)をマッピングするようにPCB308がサイズ規定されており、PCB308がPCT312のヒット及びミス情報を当該PCB308にキャッシングする場合、回避可能である。
[0045]コードキャッシュ322は、様々なサイズが可能である。例えば、ゲストコードのサイズは、最大64MBが可能である。いくつかの実施形態において、ゲストキャッシュラインは、その変換されたネイティブ命令をコードキャッシュ322に有しておらず、ゲストキャッシュラインが属するゲストページ(例えば、4Kページ)はPCT312にマッピングされていない。言い換えると、ゲストキャッシュラインは、当該ゲストキャッシュラインが属するゲストページがPCT312にマッピングされた状態で、その変換されたキャッシュラインをコードキャッシュ322に有することになる。例えば、コードキャッシュ322における64バイトの各キャッシュラインは、一意のゲストコード4Kページに由来する可能性があり、PCT312は百万個のエントリを有する(例えば、64MB/64B)。PCT312は、コードキャッシュ322をいくつかの異なる形で編成できるようにサイズを規定することができる。表1は、(例えば、トランスレーションテーブルエントリ(TTE)と類似し得る)コードキャッシュ存在テーブルエントリ(PCTE)として知られているPCT312のエントリのビットレイアウトを示している。
Figure 2017516228
[0046]いくつかの実施形態においては、PCT312の複数のPCTEが単一のキャッシュラインとしてグループ化されることにより、キャッシュラインのフェッチに応じた複数のPCTEのキャッシングが可能となる。例えば、4つの連続するPCTEを1つの64Bキャッシュラインとしてグループ化可能であり、当該グループのフェッチに際しては、4つの連続するPCTEが単一のL2キャッシュラインとしてキャッシングされる。PCT312は、ハッシュテーブル又はN−wayセットアソシアティブであるキャッシュとしてメモリ中に編成可能である。
[0047]いくつかの実施形態においては、CLB/CLTへのエントリの挿入によりゲスト分岐に対して変換が可視化される前に、ソフトウェアによってエントリがPCT312に挿入される。PCT312は、PCB308からの書き戻しに際してハードウェアが書き換えビットを1に設定している状態で、ソフトウェアによって維持されるようになっていてもよい。PCT312の更新は、ソフトウェア、ハードウェア、又はこれらの組合せによって取り扱うことができる。PCT312の更新は、ハードウェアベースのキャッシュにキャッシング可能であり、あるスレッド/コアによる更新は、他のスレッド/コアに対して可視化される。いくつかの実施形態においては、PCB308と関連付けられた論理がPCTEの書き換えビットを更新し(例えば、0から1への遷移)、ソフトウェアがPCTEの各ビットを更新可能である。ハードウェア及びソフトウェアの両者による同時更新によるデータ破損を回避するため、PCTEの書き換えビットに対して、7つの高次ビットを予約済みとして保持可能である。これにより、同じキャッシュラインに対するソフトウェア更新との衝突なく、ハードウェアによる書き換えビットへのバイト書き込みが可能となる。
[0048]PCB関連レジスタ314は、PCTタグレジスタ(PCTTR)を含んでいてもよい。いくつかの実施形態において、トランスレータ又はコンバータは、PCT312のタグ及びインデックスビットをハードウェア(例えば、プロセッサ302)に示すようにPCTTRレジスタをプログラムする。表2は、PCTTRの例示的なフィールドを示している。
Figure 2017516228
[0049]いくつかの実施形態において、ページアドレスマスク(PAM)は、不連続な1を有さないように構成されている。PAMフィールドは、PCTEタグに見出されるページアドレス値のマスクとして(例えば、PCTE.Tag[39:12]及びPAM[39:12]として)働く。例えば、PAM[39:12]==0xFFF_FF00の場合は、PAM[19:12]がPCT312へのインデックスとして働く一方、PAM[39:20]がPCT312におけるタグビットである。したがって、PCTEをPCT312に配置する場合、コンバータは、PCTE.Tag[101:82]においてPAM[39:20]ビットをプログラムする。PCTE.Tag[81:74]ビットについては、気に掛けなくてもよい。
[0050]PCB関連レジスタ314は、PCT構成レジスタ(PCTCR)を含んでいてもよい。本明細書において、GCMは、例外を表す。表3は、PCTCRの例示的なフィールドを示している。
Figure 2017516228
[0051]いくつかの実施形態において、SETV及びBETVが1である場合は、SET及びBETフィールドにおいてプログラムされたスレッド/コアに関して(PCTE.Aフィールドに従って)例外を発生させる。それ以外の場合は、格納又は分岐の実行に至ったスレッド/コアに関して(PCTE.Aフィールドに従って)例外を発生させる。いくつかの実施形態において、DETVフィールドは、常に1である。また、DETフィールドにおいてプログラムされたスレッド/コアに関して、(PCTE.Aフィールドに従って)例外を発生させる。SEVがゼロである場合は、格納に関する例外を発生させない。BEVがゼロである場合は、分岐に関する例外を発生させない。DEVがゼロである場合は、DMAアクセス(例えば、DMA格納)に関する例外を発生させない。DMAGCMENがゼロである場合は、PCB308及び/又はPCT312の探索の必要なく、論理によってDMAアクセスを処理可能である。GCMENがゼロである場合、(例えば、アレイ及び論理を含む)PCB308は、電源を落とすことができる。
[0052]いくつかの実施形態において、PCB308は、オンチップ(例えば、プロセッサ302の一部)であり、格納及びゲスト分岐に際してPCT312のPCTEをキャッシングするスレッド/コアに依存しない構造である。PCB308は、拡張されたシステムレジスタを介して与えられる維持動作により、ソフトウェアに対して可視化される。
[0053]格納では、MMUから得られたページアドレスを用いることにより、PCB308におけるエントリを探索する。アクセスがPCB308においてヒットし、1に設定されたC(変換後)ビットを、一致するキャッシュラインが有する場合、格納では、M(Mold)が1となっていなければ、M(Mnew)を1に設定することになる。
[0054]格納がPCB308においてミスである場合は、PCTウォーク(PCTW)の起動によって、PCT312からPCTEをフェッチする。PCTWの完了に際して、一致するPCTEが見つかっている場合は、当該PCTEがPCB308に挿入され、そうでない場合は、C、Mnew、及びMoldビットが0に設定された状態で、新たなエントリがPCB308に作成される。PCTEをPCB308に挿入するプロセスにおいて、置換対象のエントリがMビットを1に設定している場合は、書き戻しが必要となり得る。
[0055]なお、負荷がPCB308と直接相互作用しなくてもよい。ただし、直近に負荷からアクセスを受けたページ(例えば、4Kページ)について、PCTEをPCB308にフェッチすることにより、負荷と格納間の参照の局所性を活用することができる。
[0056]DMA書き込み及び読み出しは、プロセッサ302のプロセッサコアを通して、メインメモリに送ることができる。そのようなDMA書き込みでは、PCB308をスヌープして、Mビットを設定するとともに、任意選択でイーガー例外(eager exception)を生成することができる。
[0057]いくつかの実施形態において、ゲスト分岐では、(例えば、TLB探索により得られるゲスト物理アドレスを用いて)CLB及びPCB308のエントリを並列に探索する。CLB、CLT、PCB308、及びPCT312間では、所与のゲスト物理アドレスが一貫しているものと予想される。例えば、エントリは、CLB/CLTでヒットし且つPCT312でミスになることも、PCT312でヒットするがCビットが1に設定されていないことも不可能である。
[0058]ゲスト分岐がPCB308においてミスである場合は、CLBにおいてミスであったとしてもPCTWが起動される。
[0059]PCTWの完了に際して、PCTEがPCB308に挿入されるようになっていてもよい(そのことにより、例えば、同じ対象に対して、将来的なゲスト分岐の性能を向上可能となる)。PCTEをPCB308に挿入するプロセスにおいて、置換対象のエントリがMビットを1に設定している場合は、書き戻しが必要となり得る。
[0060]いくつかの実施形態において、ゲスト分岐は、PCTE.Aビットと併せて、PCB308のPCTE.M[new]及びPCTE.M[old]に依存するか、又は基づいていない。
[0061]実施形態は、分岐命令に対応するように構成されている。分岐命令は、PCB308及び/又はPCT312の探索によって、変換がゲスト書き換えにより古くなっていることを確認する。分岐命令は、PCB308及び/又はPCT312の探索に続いて、TLB探索を起動する。例えば、探索の結果がPCB308においてミスである場合は、PCTWの起動によって、PCT312からPCTEをフェッチする。
[0062]PCTWの完了に際して、PCTEがPCB308に挿入されるようになっていてもよい(そのことにより、例えば、同じトレースに対して、将来的な分岐命令の性能を向上可能となる)。PCTEをPCB308に挿入するプロセスにおいて、置換対象のエントリがMビットを1に設定している場合は、書き戻しが必要となり得る。
[0063]いくつかの実施形態において、PCB308は、PCTのヒット及びミス情報を格納する。これは、ほとんどの格納は未変換のデータ又はコードに対するものであり、このような格納はPCT312においてミスとなる事実に基づく。PCT312においてミスになるものと予想されるこのようなほとんどの格納に関するPCT探索の実行を回避するため、PCB308の使用により、PCTのヒット及びミス情報をキャッシングする。これにより、同じページ(例えば、4Kページ)に対する格納に応じた将来的なPCT探索を回避可能となる。
[0064]例えば、PCB308は、L2キャッシュに固有の各4Kページ候補をマッピングするように構成されているため、L2キャッシュと同じway数のキャッシュとして構成可能である(例えば、L2キャッシュの各wayには、最大32個の4Kページが存在し得る)。
[0065]いくつかの実施形態において、PCB308は、各wayに32個のエントリを有する8−wayアソシアティブキャッシュである。各エントリは、4Kページについて、PCTのヒット及びミス情報を提供する。PA[16:12]ビットは、集合を選択するためのインデックスビットである。表4は、例示的なPCBエントリ(PCBE)のレイアウトを示している。
Figure 2017516228

yの値は、PCTE.Tagに見出されるものと同じにすることができる。最大40bのアドレスに対応する大規模物理アドレス拡張(LPAE:Large Physical Address Extension)システムにおいて、yは39である。
[0066]いくつかの実施形態において、PCB308は、ソフトウェアによってシステムレジスタで維持可能である。PCBEは、PAに基づいて無効化可能である。例えば、変換が古くなっている場合、又は新たなトレースを作成する場合は、ソフトウェアによってPCBのエントリを無効化可能である。PCBEは、PAに基づいて削除可能である。例えば、Mold及びMnewが設定され、エントリが有効である場合は、PCBEがメモリ310に書き込まれるとともに、PCT312及びPCBEは有効状態を維持し続ける。この動作により、コンバータは、PCT312のPAに対する任意の維持に先立って、PCTE上でPCBEと同期可能である。PCBEは、PAに基づいて削除及び無効化可能である。例えば、Mold及びMnewが設定され、エントリが有効である場合は、PCBEがメモリ310に書き込まれるとともに、PCBEが無効化される。各PCBEエントリは、初期化中又はコンバータによるコードキャッシュ322のクリア時に無効化可能である。なお、書き換えエントリは、メモリ310及びPCT312に書き戻さなくてもよい。各PCBEは、削除及び無効化可能である。例えば、この動作によって、PCB308の各書き換えエントリは、PCT312に書き戻し可能となるため、PCB308の各エントリが無効化される。
[0067]PCB関連レジスタ314は、PCB維持レジスタ(PCBMR)を含んでいてもよい。表5は、PCBMRのフィールドを示している。いくつかの実施形態において、維持がインデックスベースである場合は、WAYビットと併せて、PA[16:12]がインデックスビットとして用いられる。
Figure 2017516228
[0068]PCB関連レジスタ314は、PCTベースアドレスレジスタ(PCTBAR)を含んでいてもよい。表6は、PCTBARのフィールドを示している。
Figure 2017516228
[0069]PCB関連レジスタ314は、GCMシンドローム0レジスタ(GCMS0R)を含んでいてもよい。表7は、GCMS0Rのフィールドを示している。
Figure 2017516228
[0070]PCB関連レジスタ314は、GCMシンドローム1レジスタ(GCMS1R)を含んでいてもよい。表8は、GCMS1Rのフィールドを示している。
Figure 2017516228
[0071]実施形態は、多様な技術を用いて関連ケースを取り扱うように構成されており、そのような技術には、ゲスト命令分岐(GIB)相互作用、PCT維持、及びPCBプリフェッチ等におけるトレースの中断が挙げられるが、これらに限定されない。
[0072]いくつかの実施形態においては、ゲスト分岐の使用により、コードキャッシュにおける古いコードを検出する。コンバータは、ゲスト分岐が生じるとトレースを中断し、単一のトレースを継続する。
[0073]いくつかの実施形態において、PCT312は、負荷及び格納を用いてソフトウェアによって維持される。PCB308の論理は、書き換えPCBEをPCT308に書き戻すことができる。
[0074]いくつかの実施形態において、各PCBEは、4Kページにマッピングされる。より大きなゲストページサイズが採用される場合、PCBの論理は、PCB308においてヒットする負荷又は格納の参照ごとに、後続の4KページのPCTEを順次プリフェッチ可能である。
[0075]図4を参照すると、フローチャート400は、本明細書に記載のようにデータを保護する種々の実施形態により用いられる例示的な機能を示している。フローチャート400には、具体的な機能ブロック(「ブロック」)を開示しているが、このようなステップは例示である。すなわち、その他様々なブロック又はフローチャート400に列挙されたブロックの変形例を実行するように実施形態が適合している。当然のことながら、フローチャート400のブロックは、提示と異なる順序で実行可能であり、また、フローチャート400のブロックをすべて実行する必要はない。
[0076]図4A及び図4Bは、種々の実施形態に係る、コードキャッシュにおける変換後コードの位置を追跡する例示的な電子的構成要素制御のプロセスを示したフローチャートである。図4A及び図4Bは、いくつかの実施形態に関して、本明細書に記載のようにPCB及びPCTを伴って変換後コードがコードキャッシュ中に存在するか否かを追跡するプロセス400を示している。当然のことながら、プロセス400は、PCB及びPCTに関して記述しているが、機能が類似する他のデータ構造及び構成で実行されるようになっていてもよい。
[0077]ブロック402においては、ゲスト命令にアクセスする。いくつかの実施形態においては、本明細書に記載のようにゲスト命令をネイティブ命令に変換するトランスレータによって、ゲスト命令にアクセスする。
[0078]ブロック404においては、ゲスト命令が分岐であるか否かを判定する。ゲスト命令が分岐命令でない場合は、ブロック406を実行する。ゲスト命令が分岐命令である場合は、ブロック450を実行する。
[0079]ブロック406においては、ゲスト命令がゲスト物理アドレスに対する格納であるか否かを判定する。ゲスト命令がゲスト物理アドレスに対する格納である場合は、ブロック408を実行する。ゲスト命令がゲスト物理アドレスに対する格納でない場合は、ブロック440を実行する。
[0080]ブロック408においては、PCBにミスがあるか否かを判定する。PCBのミスは、ゲスト命令のページ又はアドレスに基づいて判定可能である。PCBにミスがある場合は、ブロック410を実行する。PCBにミスがない場合は、ブロック422を実行する。
[0081]ブロック410においては、PCTにミスがあるか否かを判定する。PCTのミスは、ゲスト命令のページ又はアドレスに基づいて判定可能である。PCTにミスがある場合は、ブロック420を実行する。PCTにミスがない場合は、ブロック412を実行する。
[0082]ブロック412においては、エビクトするPCBエントリを選択する。エビクトするPCBエントリは、本明細書に記載のように、最も長い間使われていないか否かに基づいて選択可能である。
[0083]ブロック414においては、選択したPCBエントリのエビクトを実行する。ブロック416においては、PCTからのキャッシュラインサイズの選択をフェッチする。本明細書に記載のように、キャッシュラインサイズの選択は、複数のPCTエントリ(例えば、4つのPCTE)を含み得る。
[0084]ブロック418においては、PCTからのエントリをPCB(例えば、エビクトしたPCBエントリの位置)に格納する。
[0085]ブロック420においては、変換ゲスト命令を実行する。いくつかの実施形態において、コードキャッシュは、ゲスト命令の変換の一部として更新される。その後、次のゲスト命令について、ブロック402を実行するようにしてもよい。
[0086]ブロック422においては、本明細書に記載のように、当該位置が変換後コードを有するか否かを判定する。当該位置が変換後コードを有する場合は、ブロック424を実行する。当該位置が変換後コードを有さない場合は、ブロック420を実行する。
[0087]ブロック424においては、本明細書に記載のように、例外を発生させる。これは、イーガー法として知られている可能性がある。いくつかの実施形態においては、例外を発生させない。いくつかの実施形態において、例外を発生させる場合は、コード変換の停止によって、とりわけコードキャッシュの更新及び/又はメモリのアクセスを可能とする。
[0088]ブロック426においては、ゲスト命令におけるアドレスと関連付けられたコードキャッシュラインを無効化する。例えば、この無効化は、本明細書に記載のように、PCB及び/又はPCTが古くなっていることに基づいて書き換えを示すものとコードキャッシュラインが判定されることに基づくことができる。
[0089]ブロック428においては、PCTにミスがあるか否かを判定する。PCTのミスは、ゲスト命令のページ又はアドレスに基づいて判定可能である。PCTにミスがある場合は、ブロック420を実行する。PCTにミスがない場合は、ブロック430を実行する。
[0090]ブロック430においては、ゲスト命令を変換する。いくつかの実施形態において、コードキャッシュが、ゲスト命令の変換の一部として更新される。
[0091]ブロック432においては、本明細書に記載のように、PCB及び/又はPCTを更新することによって、格納命令の性能をゲスト物理アドレス及びコードキャッシュの関連する位置に反映させる。例えば、PCB及び/又はPCTの更新によって、要求がコードキャッシュラインを書き換えたことを反映させるようにしてもよい。その後、次のゲスト命令について、ブロック402を実行してもよい。
[0092]ブロック440においては、ゲスト命令に基づく変換命令を実行する。その後、次のゲスト命令について、ブロック402を実行してもよい。
[0093]図4Bを参照して、ブロック450においては、分岐命令をゲスト分岐命令で置換する。
[0094]ブロック452においては、本明細書に記載のように、当該位置が変換後コードを有するか否かを判定する。当該位置が変換後コードを有する場合は、ブロック460を実行する。当該位置が変換後コードを有さない場合は、ブロック454を実行する。
[0095]ブロック454においては、ゲスト分岐命令を(例えば、ネイティブ分岐命令に)変換する。ブロック456においては、変換ゲスト分岐命令の位置にあるコードを実行する。
[0096]ブロック460においては、ゲスト分岐命令の位置(例えば、アドレス)が書き換え済みであるか否かを判定する。ゲスト分岐命令の位置の内容が書き換え済みであるか否かは、PCB及び/又はPCTへのアクセスに基づいて判定される。当該位置の内容が書き換え済みである場合は、図4Aのブロック424を実行する。これは、レイジー法として知られている可能性がある。当該位置の内容が書き換え済みでない場合は、ブロック462を実行する。
[0097]ブロック462においては、ゲスト分岐命令の位置にアクセスする。当該位置は、コードキャッシュ又はメモリからアクセス可能である。
[0098]ブロック464においては、ゲスト分岐命令の位置におけるコードを実行する。
[0099]図5は、種々の実施形態を含む例示的なコンピューティングシステム500のブロック図である。コンピューティングシステム500は、コンピュータ可読命令を実行可能な任意のシングル又はマルチプロセッサコンピュータ装置又はシステムを広く表す。コンピューティングシステム500の例としては、ワークステーション、ラップトップ、クライアント側端末、サーバ、スーパーコンピュータ、分散コンピューティングシステム、携帯装置、又はその他任意のコンピューティングシステム若しくは装置等が挙げられるが、これらに限定されない。最も基本的な構成として、コンピューティングシステム500は、少なくとも1つのプロセッサ514及びシステムメモリ516を具備していてもよい。
[00100]プロセッサ514は、データの処理又は命令の解釈及び実行が可能な任意の種類又は形態の処理ユニットを一般的に表す。特定の実施形態において、プロセッサ514は、ソフトウェアアプリケーション又はモジュールから命令を受信するようにしてもよい。これらの命令により、プロセッサ514は、本明細書に記載及び/又は図示する例示的な実施形態の1つ又は複数の機能を実行するようになっていてもよい。例えば、プロセッサ514は、単独で、又は他の要素との組合せにより、本明細書に記載の識別、判定、使用、実装、トランスレーション、追跡、受信、移動、及び提供の1つ又は複数を実行するか、及び/又は実行する手段であってもよい。また、プロセッサ514は、本明細書に記載及び/又は図示するその他任意のステップ、方法、又はプロセスを実行するか、及び/又は実行する手段であってもよい。
[00101]システムメモリ516は、データ及び/又は他のコンピュータ可読命令を格納可能な任意の種類又は形態の揮発性又は不揮発性記憶装置又は媒体を一般的に表す。システムメモリ516の例としては、RAM、ROM、フラッシュメモリ、又はその他任意適当なメモリ装置が挙げられるが、これらに限定されない。必須ではないものの、特定の実施形態において、コンピューティングシステム500は、揮発性メモリユニット(例えば、システムメモリ516等)及び不揮発性記憶装置(例えば、主記憶装置532等の両者を具備していてもよい。
[00102]また、コンピューティングシステム500は、プロセッサ514及びシステムメモリ516の他、1つ又は複数の構成要素又は要素を具備していてもよい。例えば、図5の実施形態において、コンピューティングシステム500は、メモリコントローラ518、入出力コントローラ520、及び通信インターフェース522を具備しており、これらはそれぞれ、通信基盤512を介して相互接続されていてもよい。
[00103]通信基盤512は、コンピュータ装置の1つ又は複数の構成要素間の通信を容易化可能な任意の種類又は形態の基盤を一般的に表す。通信基盤512の例としては、通信バス(ISA、PCI、PCIe、又は類似のバス等)及びネットワークが挙げられるが、これらに限定されない。一実施形態において、システム516は、専用のメモリバスを介して通信を行う。
[00104]メモリコントローラ518は、メモリ若しくはデータの取り扱い又はコンピューティングシステム500の1つ又は複数の構成要素間の通信の制御が可能な任意の種類又は形態の装置を一般的に表す。例えば、メモリコントローラ518は、通信基盤512を介して、プロセッサ514、システムメモリ516、及び入出力コントローラ520間の通信を制御するようにしてもよい。メモリコントローラは、単独で、又は他の要素との組合せにより、本明細書に記載の動作又は特徴の1つ又は複数を実行するか、及び/又は実行する手段であってもよい。
[00105]入出力コントローラ520は、コンピュータ装置の入出力機能の調整及び/又は制御が可能な任意の種類又は形態のモジュールを一般的に表す。例えば、入出力コントローラ520は、プロセッサ514、システムメモリ516、通信インターフェース522、ディスプレイアダプタ526、入力インターフェース530、及び記憶インターフェース534等、コンピューティングシステム500の1つ又は複数の要素間のデータの移動を制御又は容易化するようにしてもよい。入出力コントローラ520は、単独で、又は他の要素との組合せにより、本明細書に記載の動作のうちの1つ又は複数の実行のために使用されるか、及び/又はそれらを実行する手段であってもよい。また、入出力コントローラ520は、本開示に示す他の動作及び特徴の実行のために使用されるか、及び/又はそれらを実行する手段であってもよい。
[00106]通信インターフェース522は、例示的なコンピューティングシステム500と1つ又は複数の付加的な装置との間の通信を容易化可能な任意の種類又は形態の通信装置又はアダプタを広く表す。例えば、通信インターフェース522は、コンピューティングシステム500と付加的なコンピューティングシステムを含むプライベート又はパブリックネットワークとの間の通信を容易化するようにしてもよい。通信インターフェース522の例としては、有線ネットワークインターフェース(ネットワークインターフェースカード等)、無線ネットワークインターフェース(無線ネットワークインターフェースカード等)、モデム、及びその他任意適当なインターフェースが挙げられるが、これらに限定されない。一実施形態において、通信インターフェース522は、インターネット等のネットワークへの直接リンクを介して、リモートサーバへの直接の接続を提供する。また、通信インターフェース522は、例えばローカルエリアネットワーク(イーサネット[登録商標]ネットワーク等)、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、携帯電話接続、衛星データ接続、又はその他任意適当な接続を通して、上記のような接続を間接的に提供するようにしてもよい。
[00107]また、通信インターフェース522は、外部バス又は通信チャネルを介してコンピューティングシステム500と1つ又は複数の付加的なネットワーク又は記憶装置との間の通信を容易化するように構成されたホストアダプタを表していてもよい。ホストアダプタの例としては、SCSIホストアダプタ、USBホストアダプタ、IEEE(電気電子技術者協会)594ホストアダプタ、シリアルアドバンストテクノロジーアタッチメント(SATA)及び外部SATA(eSATA)ホストアダプタ、アドバンストテクノロジーアタッチメント(ATA)及び並列ATA(PATA)ホストアダプタ、ファイバチャネルインターフェースアダプタ、イーサネットアダプタ等が挙げられるが、これらに限定されない。また、通信インターフェース522によって、コンピューティングシステム500は、分散コンピューティング又はリモートコンピューティングに関与可能であってもよい。例えば、通信インターフェース522は、リモート装置からの命令の受信又はリモート装置への命令の送信によって、これを実行するようにしてもよい。通信インターフェース522は、単独又は他の要素との組合せにより、本明細書に開示の動作のうちの1つ又は複数の実行及び/又は実行手段であってもよい。また、通信インターフェース522は、本開示に示す他の動作及び特徴の実行のために使用されるか、及び/又はそれらを実行する手段であってもよい。
[00108]また、図5に示すように、コンピューティングシステム500は、ディスプレイアダプタ526を介して通信基盤512に結合された少なくとも1つの表示装置524を具備していてもよい。表示装置524は、ディスプレイアダプタ526により転送された情報を視覚的に表示可能な任意の種類又は形態の装置を一般的に表す。同様に、ディスプレイアダプタ526は、通信基盤512(又は、当技術分野において既知のフレームバッファ)からグラフィック、テキスト、及び他のデータを転送して表示装置524に表示するように構成された任意の種類又は形態の装置を一般的に表す。
[00109]また、図5に示すように、コンピューティングシステム500は、入力インターフェース530を介して通信基盤512に結合された少なくとも1つの入力装置528を具備していてもよい。入力装置528は、コンピュータ又は人間が生成した入力をコンピューティングシステム500に提供可能な任意の種類又は形態の入力装置を一般的に表す。入力装置528の例としては、キーボード、ポインティングデバイス、音声認識装置、又はその他任意の入力装置が挙げられるが、これらに限定されない。一実施形態において、入力装置528は、単独で、又は他の要素との組合せにより、本明細書に開示の動作のうちの1つ又は複数を実行するか、及び/又はそれらを実行する手段であってもよい。また、入力装置528は、本開示に示す他の動作及び特徴の実行のために使用されるか、及び/又はそれらを実行する手段であってもよい。
[00110]また、図5に示すように、コンピューティングシステム500は、記憶インターフェース534を介して通信基盤512に結合された主記憶装置532及びバックアップ記憶装置533を具備していてもよい。記憶装置532及び533は、データ及び/又は他のコンピュータ可読命令を格納可能な任意の種類又は形態の記憶装置又は媒体を一般的に表す。例えば、記憶装置532及び533は、磁気ディスクドライブ(例えば、いわゆるハードドライブ)、ソリッドステートディスク、フロッピー[登録商標]ディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブ等であってもよい。記憶インターフェース534は、コンピューティングシステム500の記憶装置532及び533と他の構成要素との間でデータを移動させる任意の種類又は形態のインターフェース又は装置を一般的に表す。
[00111]引き続き図5を参照して、記憶装置532及び533は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を格納するように構成されたリムーバブル記憶ユニットに対する読み出し及び/又は書き込みを行うように構成されていてもよい。適当なリムーバブル記憶ユニットの例としては、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリ装置等が挙げられるが、これらに限定されない。また、記憶装置532及び533は、コンピューティングシステム500へのコンピュータソフトウェア、データ、又は他のコンピュータ可読命令のロードを可能とする他の類似構造又は装置を具備していてもよい。例えば、記憶装置532及び533は、ソフトウェア、データ、又は他のコンピュータ可読情報の読み出し及び書き込みを行うように構成されていてもよい。また、記憶装置532及び533は、コンピューティングシステム500の一部であってもよいし、他のインターフェースシステムを通してアクセスされる別個の装置であってもよい。
[00112]記憶装置532及び533は、単独又は他の要素との組合せにより、本明細書に開示の動作のうちの1つ又は複数の実行のために使用されるか、及び/又はそれらを実行する手段であってもよい。また、記憶装置532及び533は、本開示に示す他の動作及び特徴の実行のために使用されるか、及び/又はそれらを実行する手段であってもよい。
[00113]コンピューティングシステム500には、その他多くの装置又はサブシステムが接続されていてもよい。逆に、図5に示す構成要素及び装置は、本明細書に記載の実施形態を実現するためにすべてが存在する必要はない。また、上記言及した装置及びサブシステムは、図5と異なる方法で相互接続されていてもよい。また、コンピューティングシステム500は、任意数のソフトウェア、ファームウェア、及び/又はハードウェア構成を採用していてもよい。例えば、本明細書に開示の例示的な実施形態は、コンピュータ可読媒体上でコンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称する)としてコード化されていてもよい。
[00114]コンピューティングシステム500には、コンピュータプログラムを含むコンピュータ可読媒体がロードされてもよい。そして、コンピュータ可読媒体に格納されたコンピュータプログラムの全体又は一部がシステムメモリ516並びに/又は記憶装置532及び533の様々な部分に格納されてもよい。プロセッサ514により実行された場合、コンピューティングシステム500にロードされたコンピュータプログラムにより、プロセッサ514は、本明細書に記載及び/又は図示する例示的な実施形態の機能を実行するか、及び/又は実行する手段となってもよい。この追加又は代替として、本明細書に記載及び/又は図示する例示的な実施形態は、ファームウェア及び/又はハードウェアとして実装されていてもよい。例えば、コンピューティングシステム500は、本明細書に開示の実施形態のうちの1つ又は複数を実装するように構成されたASICとして構成されていてもよい。
[00115]上記開示内容は、具体的なブロック図、フローチャート、及び例を用いて種々の実施形態を示しているが、本明細書に記載及び/又は図示するブロック図の構成要素、フローチャートのステップ、動作、及び/又は構成要素はそれぞれ、幅広いハードウェア、ソフトウェア、又はファームウェア(又は、これらの任意の組合せ)構成を用いて個別的及び/又は集合的に実装されていてもよい。また、他の構成要素に含まれる構成要素の如何なる開示についても、例示と考えるべきである。それは、その他多くのアーキテクチャの実装によって、同じ機能を実現できるからである。
[00116]説明を目的とする以上の記述は、具体的な実施形態を参照して記載している。ただし、上記の例示的な記述は、包括的なものでもなければ、開示の厳密な形態に開示内容を制限するものでもない。上記の教示内容を考慮して、多くの改良及び変形が可能である。上記実施形態は、開示内容の原理及びその実際の適用を最も良く説明することにより、想定される特定用途に適合可能となるように他の当業者が開示内容及び種々の改良を伴う種々の実施形態を最も良く利用できるように選定及び記載している。
[00117]以上、本開示に係る実施形態を説明した。本開示は、特定の実施形態において説明したが、当然のことながら、このような実施形態によって制限されるのではなく、以下の特許請求の範囲に従って解釈されるものとする。

Claims (20)

  1. メモリと、
    ハードウェアバッファと、
    プロセッサであって、
    ゲストコードをネイティブコードに変換することと、
    変換後ゲストコードを前記プロセッサのコードキャッシュ部に格納することと、
    コードキャッシュにおける変換後コードの各位置を追跡するように構成された前記ハードウェアバッファを維持することであり、前記ハードウェアバッファが、前記コードキャッシュにおける変換後コードの各位置と関連付けられた前記メモリ中の各位置への各アクセスに基づいて更新される、維持することと、
    前記ハードウェアバッファへのアクセス後、メモリ位置を書き換える要求を実行することと、
    を行うように構成されたプロセッサと、
    を備えた、装置。
  2. 前記メモリが、前記コードキャッシュに存在する変換後コードを追跡する前記ハードウェアバッファと関連付けられたテーブルを含む、請求項1に記載の装置。
  3. 前記ハードウェアバッファが、前記ハードウェアバッファと関連付けられた前記テーブルのキャッシュとして働くように構成されており、前記ハードウェアバッファが、前記ハードウェアバッファと関連付けられた前記テーブルのデータの部分集合を含む、請求項2に記載の装置。
  4. 前記プロセッサが、変換後ゲストコードを含む前記コードキャッシュにおける位置と関連付けられたメモリ中の位置を前記要求が書き換えることになる場合、例外を発生させるように構成された、請求項1に記載の装置。
  5. 前記プロセッサが、ゲストコード分岐に応答して例外を発生させるように構成された、請求項1に記載の装置。
  6. 前記要求が、自己書き換えコードによる格納である、請求項1に記載の装置。
  7. 前記要求が、直接メモリアクセス(DMA)書き込みである、請求項1に記載の装置。
  8. 前記プロセッサが、前記ハードウェアバッファを備えた、請求項1に記載の装置。
  9. メモリと、
    ハードウェアバッファ及びコードキャッシュを備えたプロセッサであって、
    ゲストコードをネイティブコードに変換することと、
    変換後ゲストコードを前記プロセッサのコードキャッシュに格納することと、
    コードキャッシュにおける変換後コードの各位置を追跡するように構成された前記ハードウェアバッファを維持することであり、前記ハードウェアバッファが、前記コードキャッシュにおける変換後コードの各位置と関連付けられた前記メモリ中の各位置への各アクセスに基づいて更新される、維持することと、
    前記コードキャッシュに存在する変換後コードを追跡する前記ハードウェアバッファと関連付けられたテーブルを維持することであり、前記メモリが、前記ハードウェアバッファと関連付けられた前記テーブルを含む、維持することと、
    前記ハードウェアバッファへのアクセス後、メモリ位置を書き換える要求を実行することと、
    を行うように構成されたプロセッサと、
    を備えた、システム。
  10. 前記ハードウェアバッファが、前記ハードウェアバッファと関連付けられた前記テーブルのキャッシュとして働くように構成されており、前記ハードウェアバッファが、前記ハードウェアバッファと関連付けられた前記テーブルのデータの部分集合を含む、請求項9に記載のシステム。
  11. 前記プロセッサが、変換後ゲストコードを含む前記コードキャッシュにおける位置と関連付けられたメモリ中の位置を前記要求が書き換えることになる場合、例外を発生させるように構成された、請求項9に記載の装置。
  12. 前記プロセッサが、ゲストコード分岐に応答して例外を発生させるように構成された、請求項9に記載の装置。
  13. 前記要求が、自己書き換えコードによる格納である、請求項9に記載の装置。
  14. 前記要求が、直接メモリアクセス(DMA)書き込みである、請求項9に記載の装置。
  15. ゲストコードを変換するシステムであって、
    メモリと、
    ハードウェアバッファ及びコードキャッシュを備えたプロセッサであって、
    ゲストコードをネイティブコードに変換することと、
    変換後ゲストコードを前記プロセッサのコードキャッシュに格納することと、
    コードキャッシュにおける変換後コードの各位置を追跡するように構成された前記ハードウェアバッファを維持することであり、前記ハードウェアバッファが、前記コードキャッシュにおける変換後コードの各位置と関連付けられた前記メモリ中の各位置への各アクセスに基づいて更新され、前記ハードウェアバッファが、自己書き換えコードに応答して更新される、維持することと、
    前記コードキャッシュに存在する変換後コードを追跡する前記ハードウェアバッファと関連付けられたテーブルを維持することであり、前記メモリが、前記ハードウェアバッファと関連付けられた前記テーブルを含む、維持することと、
    前記ハードウェアバッファへのアクセス後、メモリ位置を書き換える要求を実行することと、
    を行うように構成されたプロセッサと、
    を備えた、システム。
  16. 前記ハードウェアバッファが、前記ハードウェアバッファと関連付けられた前記テーブルのキャッシュとして働くように構成されており、前記ハードウェアバッファが、前記ハードウェアバッファと関連付けられた前記テーブルのデータの部分集合を含む、請求項15に記載のシステム。
  17. 前記プロセッサが、変換後ゲストコードを含む前記コードキャッシュにおける位置と関連付けられたメモリ中の位置を前記要求が書き換えることになる場合、例外を発生させるように構成された、請求項15に記載のシステム。
  18. 前記プロセッサが、ゲストコード分岐に応答して例外を発生させるように構成された、請求項15に記載のシステム。
  19. 前記要求が、格納である、請求項15に記載のシステム。
  20. 前記要求が、直接メモリアクセス(DMA)書き込みである、請求項15に記載のシステム。
JP2016567579A 2014-05-12 2015-05-12 自己書き換えコードのハードウェアサポートを提供する方法及び装置 Pending JP2017516228A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461991951P 2014-05-12 2014-05-12
US61/991,951 2014-05-12
PCT/US2015/030411 WO2015175555A1 (en) 2014-05-12 2015-05-12 Method and apparatus for providing hardware support for self-modifying code

Publications (2)

Publication Number Publication Date
JP2017516228A true JP2017516228A (ja) 2017-06-15
JP2017516228A5 JP2017516228A5 (ja) 2018-06-21

Family

ID=54367921

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016567579A Pending JP2017516228A (ja) 2014-05-12 2015-05-12 自己書き換えコードのハードウェアサポートを提供する方法及び装置

Country Status (6)

Country Link
US (1) US9946538B2 (ja)
EP (1) EP3143496B1 (ja)
JP (1) JP2017516228A (ja)
KR (1) KR101963725B1 (ja)
CN (1) CN106796506B (ja)
WO (1) WO2015175555A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582322B2 (en) 2013-03-15 2017-02-28 Soft Machines Inc. Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
US9627038B2 (en) 2013-03-15 2017-04-18 Intel Corporation Multiport memory cell having improved density area
US20140281116A1 (en) 2013-03-15 2014-09-18 Soft Machines, Inc. Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
CN104679480A (zh) * 2013-11-27 2015-06-03 上海芯豪微电子有限公司 一种指令集转换系统和方法
JP2017516228A (ja) 2014-05-12 2017-06-15 インテル・コーポレーション 自己書き換えコードのハードウェアサポートを提供する方法及び装置
JP6234640B2 (ja) * 2015-05-28 2017-11-22 三菱電機株式会社 シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
CN106919367B (zh) * 2016-04-20 2019-05-07 上海兆芯集成电路有限公司 侦测自修正程序码的处理器与方法
CN106933538B (zh) * 2016-04-20 2019-03-01 上海兆芯集成电路有限公司 侦测自修正程序码的处理器与方法
US9792216B1 (en) * 2016-04-20 2017-10-17 Via Alliance Semiconductor Co., Ltd. System and method of determining memory ownership on cache line basis for detecting self-modifying code including code with instruction that overlaps cache line boundaries
CN106933537B (zh) * 2016-04-20 2019-03-08 上海兆芯集成电路有限公司 侦测自修正程序码的处理器与方法
US11193803B2 (en) * 2018-02-02 2021-12-07 Analog Devices International Unlimited Company Measurement system
CN109890082B (zh) * 2019-03-08 2022-05-24 中国航空工业集团公司洛阳电光设备研究所 一种时间触发的tt帧报文传输方法
CN114416450B (zh) * 2022-01-18 2022-09-27 深圳市百泰实业股份有限公司 一种pcba生产测试管理方法

Family Cites Families (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5053952A (en) 1987-06-05 1991-10-01 Wisc Technologies, Inc. Stack-memory-based writable instruction set computer having a single data bus
US5630157A (en) 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
US5265260A (en) 1991-06-26 1993-11-23 International Business Machines Corporation High performance sort hardware for a database accelerator in a data processing system
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5826055A (en) 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
JP3637920B2 (ja) 1992-05-01 2005-04-13 セイコーエプソン株式会社 スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法
IL110181A (en) 1994-06-30 1998-02-08 Softchip Israel Ltd Install microprocessor and peripherals
US5649136A (en) 1995-02-14 1997-07-15 Hal Computer Systems, Inc. Processor structure and method for maintaining and restoring precise state at any instruction boundary
US5751982A (en) 1995-03-31 1998-05-12 Apple Computer, Inc. Software emulation system with dynamic translation of emulated instructions for increased processing speed
US5870584A (en) 1995-09-20 1999-02-09 Fore Systems, Inc. Method and apparatus for sorting elements
US5826073A (en) * 1995-10-06 1998-10-20 Advanced Micro Devices, Inc. Self-modifying code handling system
US5784638A (en) 1996-02-22 1998-07-21 International Business Machines Corporation Computer system supporting control transfers between two architectures
US5892934A (en) 1996-04-02 1999-04-06 Advanced Micro Devices, Inc. Microprocessor configured to detect a branch to a DSP routine and to direct a DSP to execute said routine
EP0877981B1 (en) 1996-11-04 2004-01-07 Koninklijke Philips Electronics N.V. Processing device, reads instructions in memory
US5905876A (en) 1996-12-16 1999-05-18 Intel Corporation Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system
US6049868A (en) 1997-06-25 2000-04-11 Sun Microsystems, Inc. Apparatus for delivering precise traps and interrupts in an out-of-order processor
US6052777A (en) 1997-06-25 2000-04-18 Sun Microsystems, Inc. Method for delivering precise traps and interrupts in an out-of-order processor
JPH1124929A (ja) 1997-06-30 1999-01-29 Sony Corp 演算処理装置およびその方法
US5870575A (en) 1997-09-22 1999-02-09 International Business Machines Corporation Indirect unconditional branches in data processing system emulation mode
US6061785A (en) 1998-02-17 2000-05-09 International Business Machines Corporation Data processing system having an apparatus for out-of-order register operations and method therefor
US6167508A (en) 1998-06-02 2000-12-26 Compaq Computer Corporation Register scoreboard logic with register read availability signal to reduce instruction issue arbitration latency
US6412067B1 (en) 1998-08-11 2002-06-25 Intel Corporation Backing out of a processor architectural state
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6385676B1 (en) 1999-07-12 2002-05-07 Hewlett-Packard Company Coherent ordering queue for computer system
US6557095B1 (en) 1999-12-27 2003-04-29 Intel Corporation Scheduling operations using a dependency matrix
US6615300B1 (en) 2000-06-19 2003-09-02 Transmeta Corporation Fast look-up of indirect branch destination in a dynamic translation system
US6711672B1 (en) 2000-09-22 2004-03-23 Vmware, Inc. Method and system for implementing subroutine calls and returns in binary translation sub-systems of computers
US6826681B2 (en) 2001-06-18 2004-11-30 Mips Technologies, Inc. Instruction specified register value saving in allocated caller stack or not yet allocated callee stack
US6851011B2 (en) 2001-08-09 2005-02-01 Stmicroelectronics, Inc. Reordering hardware for mass storage command queue
US6964043B2 (en) 2001-10-30 2005-11-08 Intel Corporation Method, apparatus, and system to optimize frequently executed code and to use compiler transformation and hardware support to handle infrequently executed code
US20030115578A1 (en) * 2001-12-18 2003-06-19 Igor Liokumovich PC platform simulation system employing efficient memory access simulation in a direct execution environment
US6813704B1 (en) 2001-12-20 2004-11-02 Lsi Logic Corporation Changing instruction order by reassigning only tags in order tag field in instruction queue
US6898699B2 (en) 2001-12-21 2005-05-24 Intel Corporation Return address stack including speculative return address buffer with back pointers
US7032101B2 (en) 2002-02-26 2006-04-18 International Business Machines Corporation Method and apparatus for prioritized instruction issue queue in a processor
US7113510B2 (en) 2002-03-01 2006-09-26 Xinming Allen Lin Hardware self-sorting scheduling queue
US6779092B2 (en) 2002-05-15 2004-08-17 Hewlett-Packard Development Company, L.P. Reordering requests for access to subdivided resource
US7127592B2 (en) 2003-01-08 2006-10-24 Sun Microsystems, Inc. Method and apparatus for dynamically allocating registers in a windowed architecture
GB0309056D0 (en) 2003-04-22 2003-05-28 Transitive Technologies Ltd Block translation optimizations for program code conversion
US7536682B2 (en) 2003-04-22 2009-05-19 International Business Machines Corporation Method and apparatus for performing interpreter optimizations during program code conversion
JP4186768B2 (ja) 2003-09-16 2008-11-26 沖電気工業株式会社 マルチポート半導体メモリ
US7096345B1 (en) 2003-09-26 2006-08-22 Marvell International Ltd. Data processing system with bypass reorder buffer having non-bypassable locations and combined load/store arithmetic logic unit and processing method thereof
US7290253B1 (en) 2003-09-30 2007-10-30 Vmware, Inc. Prediction mechanism for subroutine returns in binary translation sub-systems of computers
US7373637B2 (en) 2003-09-30 2008-05-13 International Business Machines Corporation Method and apparatus for counting instruction and memory location ranges
US7315935B1 (en) 2003-10-06 2008-01-01 Advanced Micro Devices, Inc. Apparatus and method for port arbitration in a register file on the basis of functional unit issue slots
US7441101B1 (en) 2003-12-10 2008-10-21 Cisco Technology, Inc. Thread-aware instruction fetching in a multithreaded embedded processor
US7434031B1 (en) 2004-04-12 2008-10-07 Sun Microsystems, Inc. Execution displacement read-write alias prediction
US8443171B2 (en) 2004-07-30 2013-05-14 Hewlett-Packard Development Company, L.P. Run-time updating of prediction hint instructions
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
US7461237B2 (en) 2005-04-20 2008-12-02 Sun Microsystems, Inc. Method and apparatus for suppressing duplicative prefetches for branch target cache lines
JP4912016B2 (ja) 2005-05-23 2012-04-04 ルネサスエレクトロニクス株式会社 半導体記憶装置
US20070033385A1 (en) 2005-08-02 2007-02-08 Advanced Micro Devices, Inc. Call return stack way prediction repair
US7483332B2 (en) 2005-08-11 2009-01-27 Texas Instruments Incorporated SRAM cell using separate read and write circuitry
US8024522B1 (en) 2005-09-28 2011-09-20 Oracle America, Inc. Memory ordering queue/versioning cache circuit
US20070186081A1 (en) 2006-02-06 2007-08-09 Shailender Chaudhry Supporting out-of-order issue in an execute-ahead processor
JPWO2007091541A1 (ja) 2006-02-08 2009-07-02 株式会社ルネサステクノロジ 半導体記憶装置
US7478190B2 (en) 2006-02-10 2009-01-13 University Of Utah Technology Commercialization Office Microarchitectural wire management for performance and power in partitioned architectures
US20080126771A1 (en) 2006-07-25 2008-05-29 Lei Chen Branch Target Extension for an Instruction Cache
US7716460B2 (en) 2006-09-29 2010-05-11 Qualcomm Incorporated Effective use of a BHT in processor having variable length instruction set execution modes
EP2122461A4 (en) 2006-11-14 2010-03-24 Soft Machines Inc DEVICE AND METHOD FOR PROCESSING COMMUNICATIONS IN A MULTITHREAD ARCHITECTURE WITH CONTEXT CHANGES
US7721076B2 (en) 2006-12-18 2010-05-18 Intel Corporation Tracking an oldest processor event using information stored in a register and queue entry
US7783869B2 (en) 2006-12-19 2010-08-24 Arm Limited Accessing branch predictions ahead of instruction fetching
TW200833002A (en) 2007-01-31 2008-08-01 Univ Nat Yunlin Sci & Tech Distributed switching circuit having fairness
US7813163B2 (en) 2007-09-05 2010-10-12 International Business Machines Corporation Single-ended read and differential write scheme
TWI346338B (en) 2007-10-23 2011-08-01 Nat Univ Tsing Hua Access unit for a static random accesss memory
US8782384B2 (en) 2007-12-20 2014-07-15 Advanced Micro Devices, Inc. Branch history with polymorphic indirect branch information
US7945764B2 (en) 2008-01-11 2011-05-17 International Business Machines Corporation Processing unit incorporating multirate execution unit
US8015362B2 (en) * 2008-02-15 2011-09-06 International Business Machines Corporation Method and system for handling cache coherency for self-modifying code
TWI368165B (en) 2008-08-13 2012-07-11 Faraday Tech Corp Processor and method for recovering global history shift register and return address stack thereof
GB2463278B (en) 2008-09-05 2012-05-16 Advanced Risc Mach Ltd Scheduling control within a data processing system
US7848131B2 (en) 2008-10-19 2010-12-07 Juhan Kim High speed ferroelectric random access memory
US8074060B2 (en) 2008-11-25 2011-12-06 Via Technologies, Inc. Out-of-order execution microprocessor that selectively initiates instruction retirement early
US8219784B2 (en) 2008-12-09 2012-07-10 International Business Machines Corporation Assigning and pre-decoding group ID and tag ID prior to dispatching instructions in out-of-order processor
US8078854B2 (en) 2008-12-12 2011-12-13 Oracle America, Inc. Using register rename maps to facilitate precise exception semantics
US8332854B2 (en) 2009-05-19 2012-12-11 Microsoft Corporation Virtualized thread scheduling for hardware thread optimization based on hardware resource parameter summaries of instruction blocks in execution groups
US8799879B2 (en) * 2009-06-30 2014-08-05 Oracle America, Inc. Method and apparatus for protecting translated code in a virtual machine
US8281110B2 (en) 2009-07-15 2012-10-02 Via Technologies, Inc. Out-of-order microprocessor with separate branch information circular queue table tagged by branch instructions in reorder buffer to reduce unnecessary space in buffer
US8217813B2 (en) 2010-04-29 2012-07-10 Advanced Micro Devices, Inc. System and method for low-latency data compression/decompression
CN102262590B (zh) 2010-05-31 2014-03-26 国际商业机器公司 一种用于对硬件加速器的请求队列重排的方法和系统
US8959094B2 (en) 2010-05-28 2015-02-17 Oracle International Corporation Early return of partial sort results in a database system
US20110320784A1 (en) 2010-06-24 2011-12-29 International Business Machines Corporation Verification of processor architectures allowing for self modifying code
US20120117335A1 (en) 2010-11-10 2012-05-10 Advanced Micro Devices, Inc. Load ordering queue
KR101612594B1 (ko) * 2011-01-27 2016-04-14 소프트 머신즈, 인크. 프로세서의 변환 룩 어사이드 버퍼를 이용하는 게스트 명령-네이티브 명령 레인지 기반 매핑
WO2012103367A2 (en) * 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
US8516197B2 (en) * 2011-02-11 2013-08-20 International Business Machines Corporation Write-through cache optimized for dependence-free parallel regions
US9842005B2 (en) 2011-03-25 2017-12-12 Intel Corporation Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
US9690583B2 (en) 2011-10-03 2017-06-27 International Business Machines Corporation Exploiting an architected list-use operand indication in a computer system operand resource pool
US8984200B2 (en) * 2012-08-21 2015-03-17 Lenovo (Singapore) Pte. Ltd. Task scheduling in big and little cores
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9582322B2 (en) 2013-03-15 2017-02-28 Soft Machines Inc. Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
CN109358948B (zh) 2013-03-15 2022-03-25 英特尔公司 用于支持推测的访客返回地址栈仿真的方法和装置
US20140281116A1 (en) 2013-03-15 2014-09-18 Soft Machines, Inc. Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits
US9627038B2 (en) 2013-03-15 2017-04-18 Intel Corporation Multiport memory cell having improved density area
JP2017516228A (ja) 2014-05-12 2017-06-15 インテル・コーポレーション 自己書き換えコードのハードウェアサポートを提供する方法及び装置

Also Published As

Publication number Publication date
US20150324213A1 (en) 2015-11-12
KR101963725B1 (ko) 2019-04-01
CN106796506B (zh) 2019-09-27
EP3143496A1 (en) 2017-03-22
US9946538B2 (en) 2018-04-17
WO2015175555A1 (en) 2015-11-19
EP3143496A4 (en) 2018-01-24
CN106796506A (zh) 2017-05-31
KR20160145696A (ko) 2016-12-20
EP3143496B1 (en) 2021-07-14

Similar Documents

Publication Publication Date Title
JP2017516228A (ja) 自己書き換えコードのハードウェアサポートを提供する方法及び装置
US9858192B2 (en) Cross-page prefetching method, apparatus, and system
US10802987B2 (en) Computer processor employing cache memory storing backless cache lines
KR102448124B1 (ko) 가상 주소들을 사용하여 액세스된 캐시
KR101587361B1 (ko) 다수의 순차적 어드레스 변환들을 위한 통합된 tlb 구조
US9645941B2 (en) Collapsed address translation with multiple page sizes
US10884751B2 (en) Method and apparatus for virtualizing the micro-op cache
US9268694B2 (en) Maintenance of cache and tags in a translation lookaside buffer
JP2018504694A5 (ja)
US20150089150A1 (en) Translation Bypass In Multi-Stage Address Translation
JP2020529656A (ja) アドレス変換キャッシュ
JP7443344B2 (ja) 外部メモリベースのトランスレーションルックアサイドバッファ
US11403222B2 (en) Cache structure using a logical directory
CN105446898B (zh) 用于数据处理的装置及方法
US11474953B2 (en) Configuration cache for the ARM SMMUv3

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20170512

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180509

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180509

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190416

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20191112