JP5961288B2 - プロシージャからの複数のリターンターゲット制限リターン命令、プロセッサ、方法、およびシステム - Google Patents
プロシージャからの複数のリターンターゲット制限リターン命令、プロセッサ、方法、およびシステム Download PDFInfo
- Publication number
- JP5961288B2 JP5961288B2 JP2015005715A JP2015005715A JP5961288B2 JP 5961288 B2 JP5961288 B2 JP 5961288B2 JP 2015005715 A JP2015005715 A JP 2015005715A JP 2015005715 A JP2015005715 A JP 2015005715A JP 5961288 B2 JP5961288 B2 JP 5961288B2
- Authority
- JP
- Japan
- Prior art keywords
- return
- instruction
- rtr
- code
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 130
- 238000004458 analytical method Methods 0.000 claims description 54
- 238000012545 processing Methods 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 14
- 238000012546 transfer Methods 0.000 claims description 12
- 230000000295 complement effect Effects 0.000 claims description 6
- 230000015654 memory Effects 0.000 description 84
- 238000010586 diagram Methods 0.000 description 40
- 230000006870 function Effects 0.000 description 15
- 238000009826 distribution Methods 0.000 description 14
- 230000003068 static effect Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 11
- 238000007667 floating Methods 0.000 description 11
- 238000003860 storage Methods 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000012552 review Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 206010038933 Retinopathy of prematurity Diseases 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 206010016531 fetishism Diseases 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/567—Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Description
複数のプロセッサコアは、複数の異なる様式で、複数の異なる目的のために複数の異なるプロセッサにおいて実装され得る。例えば、そのような複数のコアの複数の実装としては、1)汎用計算のために意図される汎用インオーダコア、2)汎用計算のために意図される高性能の汎用アウトオブオーダコア、3)主としてグラフィックスおよび/またはサイエンティフィック(スループット)計算のために意図される特定用途用コアが挙げられ得る。複数の異なるプロセッサの実装としては、1)汎用計算のために意図される1もしくは複数の汎用インオーダコア、および/または汎用計算のために意図される1もしくは複数の汎用アウトオブオーダコアを含むCPU、および2)主としてグラフィックスおよび/またはサイエンティフィック(スループット)計算のために意図される1または複数の特定用途用コアを含むコプロセッサが挙げられ得る。そのような複数の異なるプロセッサは、複数の異なるコンピュータシステムアーキテクチャをもたらし、複数の異なるコンピュータシステムアーキテクチャとしては、1)CPUとは別個のチップ上のコプロセッサ、2)CPUと同一のパッケージにおける別個のダイ上のコプロセッサ、3)CPUと同一のダイ上のコプロセッサ(この場合、そのようなコプロセッサは、時に、統合グラフィックスおよび/もしくはサイエンティフィック(スループット)ロジック等の特定用途用ロジック、または特定用途用コア等と呼ばれる)、および4)同一のダイ上に、上述のCPU(時に、アプリケーションコアまたはアプリケーションプロセッサと呼ばれる)、上記のコプロセッサ、および更なる機能性を含み得るシステムオンチップが挙げられ得る。次に、複数の例示的なコアアーキテクチャが説明され、その後に、複数の例示的なプロセッサおよびコンピュータアーキテクチャの説明が続く。
インオーダおよびアウトオブオーダコアのブロック図
図9Aは、本発明の複数の実施形態による、例示的なインオーダパイプラインおよび例示的なレジスタリネーム、アウトオブオーダ発行/実行パイプラインの双方を図示するブロック図である。図9Bは、本発明の複数の実施形態による、プロセッサ内に含まれるインオーダアーキテクチャコアの例示的な実施形態、および例示的なレジスタリネーム、アウトオブオーダ発行/実行アーキテクチャコアの双方を図示するブロック図である。図9A〜9Bにおける複数の実線のボックスは、インオーダパイプラインおよびインオーダコアを図示するが、複数の破線ボックスの任意選択の追加は、レジスタリネーム、アウトオブオーダ発行/実行パイプラインおよびコアを図示する。インオーダ態様がアウトオブオーダの態様のサブセットであることを考慮して、アウトオブオーダの態様が説明される。
図10A〜10Bは、コアが、チップにおけるいくつかのロジックブロックのうちの1つ(同一タイプおよび/または複数の異なるタイプの他のコアを含む)である、より具体的な例示的インオーダコアアーキテクチャのブロック図を図示する。複数のロジックブロックは、アプリケーションに応じて、高帯域幅の相互接続ネットワーク(例えば、リングネットワーク)を介していくつかの固定機能ロジック、メモリI/Oインターフェース、および他の必要なI/Oロジックと通信する。
図11は、本発明の複数の実施形態による、2つ以上のコア、統合メモリコントローラ、および統合グラフィックスを有し得る、プロセッサ1100のブロック図である。図11における複数の実線のボックスは、シングルコア1102Aを有するプロセッサ1100、システムエージェント1110、1または複数のバスコントローラユニット1116のセットを図示するが、複数の破線ボックスの選択的追加は、複数のコア1102A〜N、システムエージェントユニット1110における1または複数の統合メモリコントローラユニット1114のセット、および特定用途用ロジック1108を有する代替的なプロセッサ1100を図示する。
図12〜15は、複数の例示的コンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドPC、携帯用情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、エンベデッドプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、携帯式メディアプレーヤ、ハンドヘルドデバイス、および様々な他の電子デバイスのための当技術分野で既知の他の複数のシステム設計および構成も、好適である。一般に、本明細書において開示されるプロセッサおよび/または他の実行ロジックを組み込むことができる多種多様なシステムまたは電子デバイスが、概ね好適である。
いくつかの場合に、命令変換器は、ソース命令セットからターゲット命令セットに、命令を変換するべく使用され得る。例えば、命令変換器は、命令を、コアにより処理される1または複数の他の命令にトランスレート(例えば、静的バイナリトランスレーション、動的コンパイルを含む動的バイナリトランスレーションを用いる)、モーフィング、エミュレートし、そうでなければ変換し得る。命令変換器は、ソフトウェア、ハードウェア、ファームウェア、またはこれらの組み合わせで実装され得る。命令変換器は、プロセッサ上にあってもよく、プロセッサから離れてもよく、または一部がプロセッサ上にあり、一部がプロセッサから離れてもよい。
以下の複数の例は、更なる複数の実施形態に関する。複数の例における具体的事柄は、1または複数の実施形態のいずれの箇所でも使用し得る。
Claims (25)
- プロシージャからのリターンターゲット制限リターン(RTRリターン)命令をデコードするデコードユニットと、
前記デコードユニットに結合され、前記RTRリターン命令に応答して、リターンアドレスにおける命令のタイプの前記RTRリターン命令に対する互換性、および前記RTRリターン命令の第1のリターンターゲット制限情報(RTR情報)の前記リターンアドレスにおける前記命令の第2のRTR情報に対する互換性に基づいて、前記RTRリターン命令による、前記RTRリターン命令に対応する前記リターンアドレスにおける前記命令への制御フロー移動の試みを制限するか否かを決定するリターンターゲット制限ユニットと、
前記リターンターゲット制限ユニットおよび前記デコードユニットと結合され、前記リターンターゲット制限ユニットが前記試みを制限しないことを決定すると、前記RTRリターン命令に応答して、前記リターンアドレスにおける前記命令に制御フローを移動する制御フロー移動ユニットとを備える、プロセッサ。 - 前記リターンターゲット制限ユニットは、前記第1のRTR情報に対応する第1の値が前記第2のRTR情報に対応する第2の値に一致する場合に、前記試みを制限しないことを決定し、前記第1の値が前記第2の値に一致しない場合に、前記試みを制限することを決定する、請求項1に記載のプロセッサ。
- 前記リターンターゲット制限ユニットは、前記第1の値が前記第2の値に等しい場合に、前記試みを制限しないことを決定し、前記第1の値が前記第2の値に等しくない場合に、前記試みを制限することを決定する、請求項2に記載のプロセッサ。
- 前記リターンターゲット制限ユニットは、前記リターンアドレスにおける前記命令のオペコードが、前記RTRリターン命令に対する潜在的に許可し得る複数のリターンターゲットを表示するべく用いられ、前記RTRリターン命令と互換性があるタイプの全ての命令に対応する、5つ以下のオペコードのセットのうちの1つでない場合に、前記試みを制限することを決定する、請求項1に記載のプロセッサ。
- 前記RTRリターン命令は、前記第1のRTR情報を提供する即値を有し、
前記リターンアドレスにおける前記命令は、前記第2のRTR情報を提供する即値を有する、請求項1に記載のプロセッサ。 - 前記リターンターゲット制限ユニットが前記試みを制限しないことを決定する場合に、前記プロセッサは、前記リターンアドレスにおける前記命令をノーオペレーションとして実行する、請求項1から5のいずれか1項に記載のプロセッサ。
- 前記リターンターゲット制限ユニットが前記試みを制限することを決定する場合に、前記リターンターゲット制限ユニットは、例外、フォールト、および割り込みのうち1つを生じさせる、請求項1から5のいずれか1項に記載のプロセッサ。
- 前記デコードユニットは、即値、および前記RTRリターン命令前の命令セットに存在したプロシージャからのレガシーリターン命令と同一のオペコードを有する前記RTRリターン命令をデコードし、
プロシージャからの前記レガシーリターン命令は、元々、前記即値により示されるバイト数をスタックからポップさせるものであり、
前記プロセッサは、前記第1のRTR情報として前記即値を使用する、請求項1に記載のプロセッサ。 - 前記デコードユニットは、即値、および前記RTRリターン命令前の命令セットに存在したプロシージャからのレガシーリターン命令と同一のオペコードを有する前記RTRリターン命令をデコードし、
前記プロセッサは、前記即値が前記第1のRTR情報に対応する第1のモードと、前記即値が無視される第2のモードとを有する、請求項1に記載のプロセッサ。 - プロセッサにおける方法であって、
プロシージャからのリターンターゲット制限リターン(RTRリターン)命令を受信する段階と、
リターンアドレスにおける命令のタイプに前記RTRリターン命令との互換性がないと判断することと、前記RTRリターン命令により示される第1のリターンターゲット制限情報(RTR情報)に前記リターンアドレスにおける前記命令により示される第2のRTR情報との互換性がないと判断することとのうち、少なくとも1つに基づいて、前記RTRリターン命令に応答して、前記RTRリターン命令による、前記RTRリターン命令に対応する前記リターンアドレスにおける前記命令への制御フロー移動の試みを制限する段階とを備える、方法。 - 前記制限する段階は、前記RTRリターン命令の前記RTR情報が、前記リターンアドレスにおける前記命令のRTR情報に等しくないとの判断に基づく、請求項10に記載の方法。
- 前記制限する段階は、前記リターンアドレスにおける前記命令のオペコードが、前記RTRリターン命令と互換性があるタイプの全ての命令に対応する5つ以下のオペコードのセットのうちの1つでないとの判断に基づく、請求項10に記載の方法。
- 前記受信する段階は、前記第1のRTR情報を提供する即値を有する前記RTRリターン命令を受信する段階を備える、請求項10に記載の方法。
- 複数の命令を処理するシステムであって、
相互接続と、
前記相互接続と結合され、プロシージャからのリターンターゲット制限リターン(RTRリターン)命令を受信し、前記RTRリターン命令に応答して、リターンアドレスにおける命令のタイプの前記RTRリターン命令に対する互換性の欠如、および前記RTRリターン命令の第1のリターンターゲット制限情報(RTR情報)の前記リターンアドレスにおける前記命令に対する互換性の欠如のうち1つに基づいて、前記RTRリターン命令による、前記RTRリターン命令に対応する前記リターンアドレスにおける前記命令への制御フロー移動の試みを制限することを決定するプロセッサと、
前記相互接続に結合されたダイナミックランダムアクセスメモリ(DRAM)とを備える、システム。 - 前記プロセッサは、前記RTRリターン命令の即値の値が前記リターンアドレスにおける前記命令の即値の値に等しくないことに基づいて、前記試みを制限することを決定し、
前記プロセッサは、前記試みを制限すると決定することに応答して、フォールトおよび例外のうち1つを生じさせる、請求項14に記載のシステム。 - 第1のタイプのコードを受信するコード受信モジュールと、
前記コード受信モジュールに結合され、前記第1のタイプの前記コードにおける全てのプロシージャからのリターンターゲット制限リターン(RTRリターン)命令が、前記第1のタイプについては許可されるが、1または複数の異なるタイプのコードについては許可されないリターンターゲット制限情報(RTR情報)のみを示すか否かを決定するコード分析モジュールとを備える、コード分析システム。 - 前記第1のタイプは、非特権コードを含み、
前記1または複数の異なるタイプのコードは、特権コードを含む、請求項16に記載のコード分析システム。 - 前記第1のタイプは、ユーザレベルアプリケーションを含み、
前記1または複数の異なるタイプのコードは、複数のユーザレベルのライブラリコード、デバイスドライバコード、システムレベルライブラリコード、およびオペレーティングシステムコードを含む、請求項16に記載のコード分析システム。 - 前記コード分析モジュールは、前記第1のタイプの前記コードにおける全てのRTRリターン命令が第1の範囲にある複数の値のRTR情報のみを示すか否かを判断し、
前記第1の範囲は、前記1または複数の異なるタイプのコードに対応する1または複数の他の範囲と相互排他的である、請求項16に記載のコード分析システム。 - コードを受信するコード受信モジュールと、
前記コード受信モジュールに結合され、プロシージャからの補助リターンターゲット制限リターン(RTRリターン)命令およびリターンターゲット命令の少なくとも1つのペアのリターンターゲット制限情報(RTR情報)を作成することが、依然として相補的である場合に、前記補助RTRリターン命令および前記リターンターゲット命令の前記少なくとも1つのペアについて前記RTR情報を変更するコード分析モジュールとを備える、コード分析システム。 - 前記コード受信モジュールは、前記コードにおける補助RTRリターン命令およびリターンターゲット命令の複数のペアを示すメタデータを更に受信し、
補助RTRリターン命令およびリターンターゲット命令の各ペアについての前記RTR情報を作成することが、依然として相補的である場合に、前記コード分析モジュールは、補助RTRリターン命令およびリターンターゲット命令の各ペアについてRTR情報を変更する、請求項20に記載のコード分析システム。 - コンピュータに、
第1のタイプのコードにおける全てのプロシージャからのリターンターゲット制限リターン(RTRリターン)命令のリターンターゲット制限情報(RTR情報)を調査させる手順と、
前記第1のタイプの前記コードにおける複数の前記RTRリターン命令が前記第1のタイプのコードについては許可されるが、1または複数の異なるタイプのコードについては許可されないRTR情報のみを示すか否かを判断する手順とを行わせる、プログラム。 - 前記第1のタイプの前記コードにおける複数の前記RTR命令が、前記第1のタイプの前記コードについては許可されるが、前記1または複数の異なるタイプの前記コードについては許可されない前記RTR情報のみを示すか否かを判断する前記手順は、前記第1のタイプの前記コードにおける複数の前記RTR命令が、前記第1のタイプの前記コードについては許可されるが、前記1または複数の異なるタイプの前記コードについては許可されない第1の範囲の複数の値のみを示すか否かを判断する手順を有する、請求項22に記載のプログラム。
- 請求項10から13のいずれか1項に記載の方法を実行する手段を備えるプロセッサ。
- 請求項10から13のいずれか1項に記載の方法を行わせるプログラム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/229,822 US9703948B2 (en) | 2014-03-28 | 2014-03-28 | Return-target restrictive return from procedure instructions, processors, methods, and systems |
US14/229,822 | 2014-03-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015191658A JP2015191658A (ja) | 2015-11-02 |
JP5961288B2 true JP5961288B2 (ja) | 2016-08-02 |
Family
ID=52630844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015005715A Expired - Fee Related JP5961288B2 (ja) | 2014-03-28 | 2015-01-15 | プロシージャからの複数のリターンターゲット制限リターン命令、プロセッサ、方法、およびシステム |
Country Status (7)
Country | Link |
---|---|
US (1) | US9703948B2 (ja) |
JP (1) | JP5961288B2 (ja) |
KR (1) | KR101691719B1 (ja) |
CN (1) | CN104951697B (ja) |
DE (1) | DE102015002124A1 (ja) |
GB (1) | GB2524618B (ja) |
TW (1) | TWI590096B (ja) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6690813B2 (ja) | 2014-07-25 | 2020-04-28 | インテル・コーポレーション | 変換ルックアサイドバッファを用いた命令セットアグノスティックランタイムアーキテクチャの実施 |
US10353680B2 (en) * | 2014-07-25 | 2019-07-16 | Intel Corporation | System converter that implements a run ahead run time guest instruction conversion/decoding process and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence |
US11281481B2 (en) | 2014-07-25 | 2022-03-22 | Intel Corporation | Using a plurality of conversion tables to implement an instruction set agnostic runtime architecture |
US9733909B2 (en) | 2014-07-25 | 2017-08-15 | Intel Corporation | System converter that implements a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address |
US9904780B2 (en) * | 2014-07-31 | 2018-02-27 | Nec Corporation | Transparent detection and extraction of return-oriented-programming attacks |
EP3195177A1 (en) * | 2014-09-17 | 2017-07-26 | Irdeto B.V. | Generating and executing protected items of software |
US9501637B2 (en) * | 2014-09-26 | 2016-11-22 | Intel Corporation | Hardware shadow stack support for legacy guests |
JP6435834B2 (ja) * | 2014-12-12 | 2018-12-12 | 富士通株式会社 | 命令実行制御装置、命令実行制御方法 |
US20160381050A1 (en) | 2015-06-26 | 2016-12-29 | Intel Corporation | Processors, methods, systems, and instructions to protect shadow stacks |
US9767292B2 (en) | 2015-10-11 | 2017-09-19 | Unexploitable Holdings Llc | Systems and methods to identify security exploits by generating a type based self-assembling indirect control flow graph |
US10437998B2 (en) * | 2015-10-26 | 2019-10-08 | Mcafee, Llc | Hardware heuristic-driven binary translation-based execution analysis for return-oriented programming malware detection |
US10394556B2 (en) | 2015-12-20 | 2019-08-27 | Intel Corporation | Hardware apparatuses and methods to switch shadow stack pointers |
US10430580B2 (en) | 2016-02-04 | 2019-10-01 | Intel Corporation | Processor extensions to protect stacks during ring transitions |
CN105825086B (zh) * | 2016-03-16 | 2018-07-24 | 西北大学 | 一种基于攻击树的rop防护方法 |
RU2634172C1 (ru) * | 2016-06-02 | 2017-10-24 | Акционерное общество "Лаборатория Касперского" | Способ передачи управления между адресными пространствами |
US9948185B2 (en) * | 2016-06-10 | 2018-04-17 | Dialog Semiconductor (Uk) Limited | Fast-transient switching converter with type III compensation |
US10423792B2 (en) * | 2016-09-23 | 2019-09-24 | Red Hat, Inc. | Identifying exploitable code sequences |
US10395033B2 (en) * | 2016-09-30 | 2019-08-27 | Intel Corporation | System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks |
PL3812900T3 (pl) * | 2016-12-31 | 2024-04-08 | Intel Corporation | Systemy, sposoby i aparaty do obliczania heterogenicznego |
US10607003B2 (en) | 2017-06-29 | 2020-03-31 | International Business Machines Corporation | Mitigation of code reuse attacks by restricted indirect branch instruction |
US11093605B2 (en) * | 2018-06-28 | 2021-08-17 | Cisco Technology, Inc. | Monitoring real-time processor instruction stream execution |
US12013935B2 (en) * | 2019-03-05 | 2024-06-18 | C2A-Sec, Ltd. | Return-oriented programming protection |
CN110378117B (zh) * | 2019-06-21 | 2022-12-30 | 华为技术有限公司 | 控制流完整性检测方法、装置及系统 |
IT202100002642A1 (it) | 2021-02-05 | 2022-08-05 | Sk Hynix Inc | Metodo implementato da un microcontrollore per gestire una istruzione nop e microcontrollore corrispondente |
US20230098640A1 (en) * | 2021-09-26 | 2023-03-30 | Ceremorphic, Inc. | Core Processor and Redundant Branch Processor with Control Flow Attack Detection |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09198258A (ja) | 1996-01-19 | 1997-07-31 | Nec Corp | タスクスタックオーバーフロー検出回路 |
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
JP3552627B2 (ja) | 2000-02-04 | 2004-08-11 | インターナショナル・ビジネス・マシーンズ・コーポレーション | スタック保護システム、コンピュータシステム、コンパイラ、スタック保護方法および記憶媒体 |
WO2002063465A2 (en) | 2001-02-06 | 2002-08-15 | Adelante Technologies B.V. | Method and apparatus for handling interrupts |
US7200740B2 (en) * | 2001-05-04 | 2007-04-03 | Ip-First, Llc | Apparatus and method for speculatively performing a return instruction in a microprocessor |
KR100505106B1 (ko) | 2002-05-29 | 2005-07-29 | 삼성전자주식회사 | 강화된 보안 기능을 갖춘 스마트 카드 |
US7603704B2 (en) * | 2002-12-19 | 2009-10-13 | Massachusetts Institute Of Technology | Secure execution of a computer program using a code cache |
KR100777938B1 (ko) | 2003-09-04 | 2007-11-21 | 싸이언스 파크 가부시키가이샤 | 부정 코드 실행의 방지 방법, 및 부정 코드 실행의 방지용 프로그램의 기록매체 |
US20050138263A1 (en) * | 2003-12-23 | 2005-06-23 | Mckeen Francis X. | Method and apparatus to retain system control when a buffer overflow attack occurs |
US20050154859A1 (en) * | 2004-01-14 | 2005-07-14 | Arm Limited | Branch prediction in a data processing apparatus |
CN1280713C (zh) * | 2004-03-09 | 2006-10-18 | 中国人民解放军国防科学技术大学 | 双栈返回地址预测器设计方法 |
US7552477B1 (en) * | 2005-02-23 | 2009-06-23 | Symantec Corporation | Detecting return-to-LIBC buffer overflows via dynamic disassembly of offsets |
US8141163B2 (en) * | 2007-07-31 | 2012-03-20 | Vmware, Inc. | Malicious code detection |
US8341383B2 (en) | 2007-11-02 | 2012-12-25 | Qualcomm Incorporated | Method and a system for accelerating procedure return sequences |
JP2009230479A (ja) | 2008-03-24 | 2009-10-08 | Toshiba Microelectronics Corp | マイクロプロセッサ |
CN101727312B (zh) * | 2009-01-22 | 2013-01-09 | 杭州中天微系统有限公司 | 一种支持自动纠错功能的返回地址栈实现方法 |
CN101819522B (zh) * | 2009-03-04 | 2012-12-12 | 威盛电子股份有限公司 | 微处理器以及相关指令解析的方法 |
US8689201B2 (en) | 2010-01-27 | 2014-04-01 | Telcordia Technologies, Inc. | Automated diversity using return oriented programming |
CA2704863A1 (en) | 2010-06-10 | 2010-08-16 | Ibm Canada Limited - Ibm Canada Limitee | Injection attack mitigation using context sensitive encoding of injected input |
US20120151184A1 (en) | 2010-12-10 | 2012-06-14 | Daniel Shawcross Wilkerson | Hard object: constraining control flow and providing lightweight kernel crossings |
US8997218B2 (en) | 2010-12-22 | 2015-03-31 | F-Secure Corporation | Detecting a return-oriented programming exploit |
US8776223B2 (en) * | 2012-01-16 | 2014-07-08 | Qualcomm Incorporated | Dynamic execution prevention to inhibit return-oriented programming |
US9122792B2 (en) * | 2013-05-17 | 2015-09-01 | International Business Machines Corporation | Step over operation for machine code function calls |
-
2014
- 2014-03-28 US US14/229,822 patent/US9703948B2/en active Active
-
2015
- 2015-01-15 JP JP2015005715A patent/JP5961288B2/ja not_active Expired - Fee Related
- 2015-01-20 GB GB1500925.1A patent/GB2524618B/en active Active
- 2015-02-13 TW TW104105065A patent/TWI590096B/zh not_active IP Right Cessation
- 2015-02-19 DE DE102015002124.9A patent/DE102015002124A1/de active Pending
- 2015-02-25 KR KR1020150026812A patent/KR101691719B1/ko active IP Right Grant
- 2015-02-28 CN CN201510091513.2A patent/CN104951697B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
GB2524618A (en) | 2015-09-30 |
KR101691719B1 (ko) | 2016-12-30 |
TW201602827A (zh) | 2016-01-16 |
KR20150112773A (ko) | 2015-10-07 |
DE102015002124A1 (de) | 2015-10-01 |
GB201500925D0 (en) | 2015-03-04 |
CN104951697A (zh) | 2015-09-30 |
TWI590096B (zh) | 2017-07-01 |
GB2524618B (en) | 2017-04-05 |
CN104951697B (zh) | 2018-07-03 |
JP2015191658A (ja) | 2015-11-02 |
US20150278516A1 (en) | 2015-10-01 |
US9703948B2 (en) | 2017-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5961288B2 (ja) | プロシージャからの複数のリターンターゲット制限リターン命令、プロセッサ、方法、およびシステム | |
US11656805B2 (en) | Processors, methods, systems, and instructions to protect shadow stacks | |
TWI796031B (zh) | 用於以在環移轉期間保護堆疊的處理器擴展的設備 | |
KR102318740B1 (ko) | 보호 영역에서의 메모리 초기화 | |
JP6507435B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
US11327755B2 (en) | Fine grained control flow enforcement to mitigate malicious call/jump oriented programming | |
TWI556115B (zh) | 有關控制流安全之二進制轉譯機制的處理器、系統、方法和裝置 | |
TW201227394A (en) | Security through opcode randomization | |
US9372988B2 (en) | User controllable platform-level trigger to set policy for protecting platform from malware | |
US9185079B2 (en) | Method and apparatus to tunnel messages to storage devices by overloading read/write commands | |
US11256807B2 (en) | Mitigation of return-oriented programming exploits | |
US20170093578A1 (en) | Methods and apparatus to provide isolated execution environments | |
US20110314303A1 (en) | Computing device configured for operating with instructions in unique code | |
US20220197658A1 (en) | Isa opcode parameterization and opcode space layout randomization | |
JP2021157766A (ja) | シャドウスタックを効率的に管理および処理するための装置および方法 | |
JP2023048100A (ja) | Isaアクセス可能物理的複製不可能関数 | |
TW202416122A (zh) | 用以保護影子堆疊之處理器、方法、系統和指令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20160426 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20160525 |
|
R155 | Notification before disposition of declining of application |
Free format text: JAPANESE INTERMEDIATE CODE: R155 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160624 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5961288 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |