JP6189866B2 - プロセッサモードを切り替えるための、呼び出される関数のアドレスの最下位ビットの使用 - Google Patents

プロセッサモードを切り替えるための、呼び出される関数のアドレスの最下位ビットの使用 Download PDF

Info

Publication number
JP6189866B2
JP6189866B2 JP2014555869A JP2014555869A JP6189866B2 JP 6189866 B2 JP6189866 B2 JP 6189866B2 JP 2014555869 A JP2014555869 A JP 2014555869A JP 2014555869 A JP2014555869 A JP 2014555869A JP 6189866 B2 JP6189866 B2 JP 6189866B2
Authority
JP
Japan
Prior art keywords
execution mode
mode
instruction
processor
bit
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
Application number
JP2014555869A
Other languages
English (en)
Other versions
JP2015511358A (ja
JP2015511358A5 (ja
Inventor
チャールズ・ジョセフ・タボニー
エーリヒ・ジェームズ・プロンドケ
ルシアン・コドレスク
スレッシュ・ケー・ヴェンクマハンティ
エバンドロ・カルロス・メネセス
Original Assignee
クアルコム,インコーポレイテッド
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 クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2015511358A publication Critical patent/JP2015511358A/ja
Publication of JP2015511358A5 publication Critical patent/JP2015511358A5/ja
Application granted granted Critical
Publication of JP6189866B2 publication Critical patent/JP6189866B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/30181Instruction operation extension or modification
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Description

米国特許法第119条に基づく優先権の主張
本特許出願は、本出願の譲受人に譲渡され、参照により明白に本明細書に組み込まれる、2012年2月7日に出願された「USING THE LEAST SIGNIFICANT BITS OF A CALLED FUNCTION'S ADDRESS TO SWITCH PROCESSOR MODES」という名称の仮出願第61/595,773号の優先権を主張する。
開示する実施形態は、処理システムにおける実行モードの切替えに関する。より詳細には、例示的な実施形態は、少なくとも2つの命令モードを備える処理システムと、呼び出される関数のアドレスの1つまたは複数の最下位ビットを使って少なくとも2つの命令モードを切り替えるための技法とを対象とする。
プロセッサはしばしば、複数の実行モードをサポートするように構成される。たとえば、第1の実行モードは固定幅の命令を備えることができ、第2の実行モードは可変幅命令をサポートすることができる。同じアドレスまたはプログラムカウンタ(PC)値が、プロセッサが第1の実行モードにある場合は第1の命令を、またはプロセッサが第2の実行モードにある場合は第2の命令をポイントし得るように、共通アドレス空間は、各モードにおける命令の間で共有することができる。プロセッサは、2つのモードを切り替えることが可能であり得るので、2つの命令のうちどの1つが現在のPC値によってアドレス指定されるかを確かめ、したがって命令が正しく実行中であることを保証するために、実行モードを追跡することが必要になる。
知られているARMプロセッサを参照すると、ARMモードは、固定幅(32ビット)命令をサポートし、THUMBモードは、可変幅(16ビットおよび32ビット)命令をサポートする。バイトアドレス指定可能メモリ中の共通アドレス空間は、ARMモードとTHUMBモードの両方での命令を備え得る。ただし、これらの2つのモードでの命令の整列は異なり得る。たとえば、ARMモード命令は、ARMモード命令についての2つの最下位アドレスビットが常に「00」になるように、32ビット境界において整列され得る。一方、THUMBモード命令は、THUMBモード命令についての2つの最下位アドレスビットが「10」または「00」になり得るように、16ビットまたは32ビット境界のいずれかにおいて整列され得る。したがって、アドレスを知るだけでは、2つのモード、すなわちARMまたはTHUMBのうちどの1つが現在実行されているかを最終的に判断するのには不十分である。
どのモードが実行中であるかを追跡するために、ARMプロセッサは、モードビットをPCの最下位ビット(LSB)に記憶することを含む手法を採用している。THUMBモードでのPCのLSBは、上記のように、2つの最下位アドレスビットが「10」または「00」のいずれかであるので、予約ビットであってよく、したがってLSB(両方の場合において「0」である)が、モードビットを記憶するのに使われ得る。実行は、ジャンプ命令などの関数呼出しにおいてARMモードとTHUMBモードとの間で切り替わり得る。したがって、ジャンプ命令が、実行を、THUMBモードでの命令を含む関数に転送した場合、ARMプロセッサは、関数のアドレス+1にジャンプすることによって、THUMBモードへの、このモード変更を実施する。このようにして、THUMBモードにおける2つの最下位ビットの値は「11」または「01」のいずれかになり、そうすることによって、これらのビットを、ARMモードにおける2つの最下位ビットの「00」値とは区別する。
ARMプロセッサによって採用されている上記手法は、実行モードを追跡する目的は達成するが、付随する制限を受ける。たとえば、上記のように、THUMBモードへのジャンプごとに、「1」の加算が求められる。これにより、ソフトウェア、特にリンカが複雑になる。リンカは、各関数のモードを判断し、次いで、各関数のすべての呼出しに対して、正常呼出しとモード切替え呼出しとの間の選択をしなければならない。さらに、デバッガは、デバッガ内から呼び出される関数の追跡を続けて、それぞれ、関数のPC値にジャンプするか、それとも関数のPC値+1にジャンプするか判断するために、これらの関数がARM関数であるかそれともTHUMB関数であるか判断する必要があるので、デバッガも影響を受ける。
上記手法に関連したさらに別の欠点は、モードビットを記憶するためのPCのLSBの使用から生じる。LSBは、モードを表すのに使われるので、LSBは、もはや実際のアドレスの一部ではない。したがって、ARMプロセッサが、THUMBモードへの8ビットおよび24ビット命令を含むべきである場合、THUMBモードにおけるあらゆる関数の開始点は依然として、モード追跡を容易にするために、16ビット整列されることが求められる。このことは、関数すべてのうち約半分が、関数内の第1の命令を16ビット境界に整列するために、関数の開始の前に8ビットの無動作命令(nop)を採り入れるよう要求することを伴う。
MIPSおよびPowerPCなど、他の知られているプロセッサアーキテクチャも、実行モードの切替えに関連した同様の課題に直面し、これらの課題を扱うために、同様に欠点のある方法を採用している。それに応じて、既存のアーキテクチャは、実行モードを追跡し、切り替えるための手法において欠点を呈している。たとえば、いくつかの手法は、メモリ管理ユニット(MMU)中のどのページも、いずれかのモードに属し得るので、関連付けられたMMUに記憶された命令のPC値を使って、命令用の実行モードを判断することを伴う。ページ属性を使ってモードを判断するハードウェアコストの増大に関する欠点は、モードビットが、MMUのページテーブルエントリ中の追加余地を占め、従来のページテーブルエントリが、サイズの制約を受けることである。ページ属性を使ってモードを判断するソフトウェアコストに関する欠点は、ローダを複雑にすることを含み、ローダは、ページがどのモードにあると想定されるか判断し、次いで、そのページ用のページテーブルエントリを適切なビットで満たさなければならなくなる。さらに、デバッガは、特定のページ用のページテーブル中でエントリをルックアップしなければならなくなり、その後、そのページ中で命令を逆アセンブルする場合がある。同様に、予約動作コード(オペコード)ビットを使って、アドレスに関連付けられたモードを判断するための特定のプログラムコードを含む、他の知られている手法も不完全である。
したがって、当該分野において、実行モードを追跡し、切り替えるための上述した手法の欠点を克服する必要が、それに付随してある。
本発明の例示的な実施形態は、処理システムにおいて実行モードを切り替えるためのシステムおよび方法を対象とする。より詳細には、例示的な実施形態は、少なくとも2つの命令モード、すなわち古典/整列モードおよび圧縮/非整列モードを備え、呼び出される関数のアドレスの1つまたは複数の最下位ビットを使って、これらの少なくとも2つの命令モードを切り替える処理システムを対象とする。
たとえば、例示的な実施形態は、プロセッサ内で実行モードを切り替える方法を対象とし、この方法は、プロセッサが第1の実行モードで動作中であるとき、第1の命令を検出するステップと、第1の命令のターゲットアドレスの1つまたは複数のビットを分析するステップと、1つまたは複数のビットに基づいて、プロセッサの動作を、第1の実行モードから第2の実行モードに切り替えるかどうか判断するステップとを含む。
別の例示的な実施形態は、第1の実行モードおよび第2の実行モードを含む少なくとも2つの実行モードで命令を実行するように構成されたプロセッサと、第1の実行モードでの実行中に第1の命令を検出するように構成された論理と、第1の命令のターゲットアドレスの1つまたは複数のビットを分析するように構成された論理と、1つまたは複数のビットに基づいて、プロセッサの動作を第1の実行モードから第2の実行モードに切り替えるかどうか判断するように構成された論理とを備える装置を対象とする。
さらに別の例示的な実施形態は、第1の実行モードおよび第2の実行モードを含む少なくとも2つの実行モードで命令を実行するための手段と、第1の実行モードでの実行中に第1の命令を検出するための手段と、第1の命令のターゲットアドレスの1つまたは複数のビットを分析するための手段と、1つまたは複数のビットに基づいて、プロセッサの動作を、第1の実行モードから第2の実行モードに切り替えるかどうか判断するための手段とを備える処理システムを対象とする。
別の例示的な実施形態は、コードを備える非一時的コンピュータ可読記憶媒体を対象とし、コードは、プロセッサによって実行されると、プロセッサに、プロセッサの実行モードを切り替えるための動作を実施させ、非一時的コンピュータ可読記憶媒体は、プロセッサが第1の実行モードで動作中であるとき、第1の命令を検出するためのコードと、第1の命令のターゲットアドレスの1つまたは複数のビットを分析するためのコードと、1つまたは複数のビットに基づいて、プロセッサの動作を、第1の実行モードから第2の実行モードに切り替えるかどうか判断するためのコードとを備える。
添付の図面は、本発明の実施形態の説明を助けるために提示され、実施形態の限定ではなく、実施形態の例示のためのみに提供される。
例示的な実施形態に従って構成された処理システムの簡略図である。 例示的な実施形態による、実行モードを切り替えるように構成されたプロセッサによって実行される例示的なコードシーケンスを示す図である。 例示的な実施形態による、実行モードを切り替えるための方法の動作フローを示す図である。 例示的な実施形態による、実行モードを追跡し、切り替えるための方式を示す図である。 例示的な実施形態による、実行モードを追跡し、切り替えるための方式を示す図である。 本開示の一実施形態が有利に使用され得る例示的なワイヤレス通信システム500を示す図である。
本発明の特定の実施形態を対象とする以下の説明および関連する図面で、本発明の態様が開示される。本発明の範囲から逸脱することなく、代替の実施形態が考案され得る。さらに、本発明の関連する詳細を不明瞭にしないように、本発明のよく知られている要素は詳細に説明されず、または省略される。
「例示的な」という言葉は、「例、実例、または例示として機能すること」を意味するために本明細書で使用される。「例示的な」として本明細書で説明される任意の実施形態は、必ずしも他の実施形態よりも好ましいか、または有利であると解釈されるべきではない。同様に、「本発明の実施形態」という用語は、本発明のすべての実施形態が、論じられた特徴、利点または動作モードを含むことを必要としない。
本明細書で使用される用語は、特定の実施形態を記載することのみを目的とし、本発明の実施形態を限定するものではない。本明細書で使用する単数形「a」、「an」、および「the」は、文脈が別段に明確に示すのでなければ、複数形をも含むものとする。さらに、本明細書で使用される「備える(comprises)」、「備えている(comprising)」、「含む(includes)」、および/または「含んでいる(including)」という用語は、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことを理解されたい。
さらに、多くの実施形態が、たとえばコンピューティングデバイスの要素によって実施すべき、一連のアクションに関して説明される。本明細書で説明する様々なアクションは、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つまたは複数のプロセッサによって実行されるプログラム命令によって、または両方の組合せによって実施できることを認識されよう。さらに、本明細書で説明するこれらの一連のアクションは、実行時に、関連するプロセッサに本明細書で説明する機能性を実施させるコンピュータ命令の対応するセットを記憶した、任意の形式のコンピュータ可読記憶媒体内で全体として具現化されるものと見なすことができる。したがって、本発明の様々な態様は、特許請求される主題の範囲内にすべて入ることが企図されているいくつかの異なる形式で具現化され得る。さらに、本明細書で説明する実施形態ごとに、そのような任意の実施形態の対応する形式を、たとえば、記載の動作を実施する「ように構成された論理」として本明細書で説明することがある。
例示的な実施形態は、既存の手法に関連した欠点を回避しながら、実行モードを追跡し、切り替えるための技法を含む。一実施形態は、少なくとも2つの実行モードを含むことができ、実行モードは、モードにおける命令のそれぞれの整列に関して定義され得る。命令の整列に対する言及は概して、32ビット(または4バイト)のメモリアドレス空間に関して行われるが、これは限定であると企図されるべきでない。開示する技法は、本開示の範囲から逸脱することなく、他のメモリアドレス境界に容易に拡張することができる。
したがって、第1の実行モードにおいて、命令は、非整列/不整列にされ、または制限なく任意に整列されることが認められてよい。この第1の実行モードは、本明細書では「圧縮」モードと呼ばれる。第2の実行モードにおいて、命令の整列は、32ビット境界など、対応するメモリアドレス空間内の指定された境界に制限され得る。この第2の実行モードは、本明細書では「古典」モードと呼ばれる。
ここで図1を参照すると、例示的な処理システム100の簡略図が示されている。処理システム100は、メモリ104に結合されたプロセッサ102を備えるように示されている。図示していないが、処理システム100は、たとえば、当該分野においてよく知られている、1つまたは複数の命令および/またはデータキャッシュ、I/Oデバイス、コプロセッサなど、他の様々な構成要素を備え得る。メモリ104は、バイトアドレス指定可能であり、非整列にされ、または32ビット境界で整列されてよい命令(すなわち、それぞれ圧縮モードおよび古典モードにある両方の命令)を備え得る。プロセッサ102は、古典モードならびに圧縮モードで命令を実行するように構成され得る。
非限定的な例示的実施形態において、古典モードでの命令は、メモリ104中の32ビット境界に対して整列されてよく、したがって、古典モードでのあらゆる命令のアドレスの2つの最下位ビットが値「00」を有すると規定する。さらに、本実施形態では、圧縮モードでの選択された命令は、選択された命令のアドレスの2つの最下位ビットが非ゼロ値、すなわち、「00」以外の任意の値を有する(たとえば、選択された命令のアドレスの2つの最下位ビットが、値「01」、「10」、または「11」であることを強制され得る)ように、強制的に不整列にされ得る。したがって、アドレスのこれらの最下位ビットは、整列を示すことができ、本明細書では「整列ビット」と呼ばれ得る。
強制的に不整列にされる、圧縮モードでの選択された命令は、入口点に対応し得る。たとえば、入口点は、圧縮モードでの命令を備える関数の冒頭をマーキングすることができ、入口点は、圧縮モードからの呼出しに続く命令であってよく、または入口点は、例外/割込みハンドラの冒頭をマーキングすることができる。入口点の精密性にかかわらず、古典モードでの実行から圧縮モードでの実行への切替えをトリガし得る選択された命令は、強制的に不整列にされ得る。圧縮モードへの関数呼出しに続く圧縮モード命令など、すべての残りの命令の整列は、乱されないままであってよい(すなわち、選択された命令を除くすべての命令のアドレスの整列ビットは、「00」を含む任意の値であってよい)。この構成を用いて、例示的な実施形態は、従来の手法での、実行モードを追跡し、切り替える欠点を回避しながら、古典モードでの実行を圧縮モードでの実行に切り替えることができる。
ここで図2を参照すると、プロセッサ102によって実行される例示的なコードシーケンスが示されている。コードシーケンス210および214は、古典(整列)モードでの命令を備え、コードシーケンス212は、圧縮(非整列または不整列)モードでの命令を備える。図示のように、コードシーケンス210は、命令a1で始まるとともに命令a1〜a7を含む関数1を備える。関数1および対応する命令a1〜a7、ならびに呼出し、すなわち呼出し1についてのアドレスの整列ビットは、「00」と示されている。いくつかの実施形態は、任意選択のユーザステータスレジスタ(または、明示的には図示しないが「USR」)を含むことができ、USRは、整列ビットのステータスを示すように構成され得る。したがって、コードシーケンス210の実行中に整列ビットが「00」である間、USRは、その実行が古典モードであることを示すように任意選択でアップデートされ得る。命令a4の後、関数2の呼出し、すなわち呼出し1に遭遇したとき、実行は、関数2へのパス202に従えばよい。
関数2に関して、この関数は、命令b1で始まり、圧縮モードにある命令b1〜b6を含み得る。プロセッサ102が、誤り実行モードでの誤った実行を避けるために、パス202をとることによって引き起こされる、実行モードの切替えを認識することが必要である。したがって、関数2は、例示的な実施形態において、圧縮モードへの入口点として認識され得る。この切替えの認識は、関数2のアドレスの2つの最下位ビット(または整列ビット)、すなわち「AB」を、「00」以外の任意の値になるよう強制することによって遂行することができる。たとえば、関数2のアドレスは、「AB」が「01」、「10」、または「11」となるように、メモリ104中で強制的に不整列にされ得る。この強制的不整列は、たとえば、処理システム100内のコンパイラ、ソフトウェア、または専用の論理(明示的には図示せず)において遂行することができる。一例では、関数2の強制的な不整列は、パス202に沿って関数2の前にnopを加えるようにアセンブラを構成することによって遂行され得る。nopのサイズは、整列ビット「AB」が「00」以外の値を確実に有するように調整されてよい。たとえば、整列ビット「AB」がすでに「00」以外の値である場合、アセンブラはnopを挿入しなくてよい。一方、「AB」の値が「00」に等しい場合、アセンブラは、単一の1バイトnopを挿入してよく、こうすることにより、「AB」が「01」に等しくなるように関数2の開始アドレスが調整される。
プロセッサ102は、命令の実行中に遭遇するあらゆる入口点についての整列ビットを調査するように構成され得る。したがって、入口点関数2が非ゼロ値としての整列ビット「AB」を有することをプロセッサ102が認識すると、USRは随意に、実行が現時点で圧縮モードにあることを示すようにアップデートされ得る。命令b1〜b3の整列は、乱されないままにされてよく、それらの命令の対応するアドレスの整列ビットは、「00」を含む任意の値を有してよい。
その後、命令b3の後で、関数3の呼出し、すなわち呼出し2に遭遇すると、実行は、関数3へのパス206に従えばよい。繰り返しになるが、プロセッサ102は、関数3が入口点なので、関数3の整列アドレスビットを調査するように構成され得る。ただし、今回は、関数3は整列古典モードにあるので、入口点、すなわち関数3の整列ビットが「00」であることが認識され得る。したがって、プロセッサ102は、実行が、命令c1で始まるとともに命令c1〜c5を含む関数3用の古典モードへの復帰であることを認識することができる。プロセッサ102は随意に、USRを、復帰から古典モードへの指示をするようにアップデートすることもできる。
ここで復帰、すなわち、パス204に沿った、圧縮モードでのコードシーケンス212から、古典モードでのコードシーケンス210への復帰1に移ると、プロセッサ102は、入口点の整列ビットを調査することができる。この場合、入口点は命令a5であり、したがって、命令a5の整列ビットが「00」であることが認識され得る。したがって、実行が古典モードに復帰したと結論づけることができる。それに応じて、USRは、実行が古典モードにあることを示すようにアップデートされ得る。
復帰、すなわち、パス208に沿った命令b4への復帰2のために、入口点は命令b4である。正しい動作を確実にするために、プロセッサ102は、命令b4が圧縮モードにあることを認識できなければならない。これを遂行するために、命令b4は、命令b4の整列ビットが「00」にならないように、強制的に不整列にされ得る。一例では、命令b4の強制的な不整列は、呼出し、すなわちパス206に沿った関数3への呼出し2の前にnopを加えるようにアセンブラを構成することによって遂行され得る。nopのサイズは、最下位ビット「CD」が「00」以外の値を確実に有するように調整されてよい。別の例では、呼出し命令、すなわちパス206に沿った関数3への呼出し2のサイズが、命令b4の最下位ビット「CD」が値「01」、「10」、または「11」に強制されるように増大されてよい。命令b5およびb6の整列は無制限であり、乱されない。したがって、命令b5およびb6のアドレスの整列ビットは、「00」を含む任意の値でよい。
ここで図4Aを参照すると、呼出し/復帰のために古典モード(整列)および圧縮モード(非整列)を追跡し、それらを切り替えるための一般化された方式が示されている。図示のように、整列アドレスへの呼出し/復帰は、ループ406によって示されているように、古典モード402に留まり得る。古典モード402から非整列アドレスへの呼出し/復帰は、パス408に沿って圧縮モード404に遷移し得る。非整列アドレスへの呼出し/復帰は、ループ412によって示されているように、圧縮モード404に留まり得る。最後に、圧縮モード404から整列アドレスへの呼出し/復帰は、パス410に沿って古典モード402に遷移し得る。
上記実施形態は、呼出し/復帰に関して記載したが、例示的な技法は、他のそのような命令にも拡張することができる。たとえば、いくつかの実施形態は、たとえばjump、jumpr、callr、dealloc_returnなどの命令についてモード切替えを監視するように拡張することができるが、これについては、図4Bを参照して手短に記載する。これらの命令は、モード切替えについて監視されてよく、したがって、実行は、呼出し/復帰について上述したように、同様の技法に従うことによって、正しいモードになるよう保証され得る。
ジャンプ命令に関して、ジャンプ命令は、例示的な実施形態に関する2つの異なるやり方のうち1つで使用することができる。一例では、ジャンプ命令は、関数内で遭遇すると、その関数内の命令にジャンプするのに使うことができる。別の例では、ジャンプ命令は、末尾呼出し(または「tailcall」)として振る舞うことができ、末尾呼出しは、当業者には認識されるように、呼出しタイプ挙動を実施するのに使うことができる。関数の呼出しは、呼出しスタックに保存され得る、呼出しの場所に復帰するための復帰命令を要求し得るが、tailcallは、呼出しの場所が、スタックに記憶または保存されることを必要としなくてよい。一方、tailcallは、元の呼出し側に直接復帰することができる。ジャンプなどの命令は、後でさらに説明するように、追加考慮事項を必要とする場合がある。
古典モードでの関数内でジャンプ命令に遭遇し、ジャンプ命令の挙動が、その関数内の命令にジャンプすることである場合、モード変更があってはならない。ただし、ジャンプ命令が、tailcall命令などのタイプの挙動を有する場合、ジャンプ命令を実行することにより、制御フローが、関数の外でよい入口点に移り得る。入口点は、古典モードまたは圧縮モードのいずれかにあり得る。したがって、入口点の最下位ビットを調査することによって、モード切替えが起こる必要があるかどうかの判断が行われ得る。したがって、古典モードにおいて遭遇するジャンプ命令の挙動は、上述した呼出し命令の挙動と同様であり得る。
ただし、圧縮モードにある関数内でジャンプ命令に遭遇した場合、特殊な考慮事項が生じ得る。前述のように、圧縮モードでは、強制的に不整列にされるいくつかの入口点を除いて、残りの命令は、整列されてもされなくてもよい。言い換えると、関数内の残りの命令のアドレスの最下位ビットは、「00」を含む任意の値でよい。したがって、ジャンプ命令が、関数内のターゲット命令へのジャンプを引き起こしたとき、ターゲット命令のアドレスは、強制的に不整列にされない可能性があるので、任意の値でよい。したがって、ターゲット命令のアドレスの最下位ビットが「00」である場合、このことは、古典モードへの切替えが起きたことを示さないので、ターゲット命令のアドレスの最下位ビットを調査することは、モード切替えが起きたかどうか判断するのには不十分な場合がある。そのような状況を扱うために、実施形態は、特殊な命令または特殊な挙動をもつ命令を含み得る。
1つのそのような特殊な挙動は、圧縮モードにおいて、ジャンプ命令の挙動を、ジャンプ命令と同じ関数内のターゲット命令など、モード切替えを引き起こさない命令へのジャンプにのみ制限すること、および同じ関数の外にあるとともに可能性としては異なるモードでよいターゲット命令へのジャンプなど、モード変更を引き起こし得る状況のための別個のtailcall命令を定義することを含み得る。したがって、tailcall関数の最下位ビットを調査することにより、モード変更が起きたかどうかを明らかにすることができ、プロセッサは、それに従ってこのモード変更を扱うことができる。
したがって、ジャンプ命令などの命令に対して、命令の実行がモード変更を引き起こすかどうかの判断は、命令に遭遇するときのモードに基づき得る。古典モード内でジャンプ命令に遭遇した場合、ターゲットアドレスの最下位ビットは、モード変更が起きたかどうか判断するのに使うことができる。一方、圧縮モード内でジャンプ命令に遭遇した場合、ターゲットアドレスの最下位ビットによって与えられる指示にかかわらず、モード変更は起こらず、またはモード変更は抑止され得る。そうではなく、特殊なtailcall命令が、モード変更を要求し得るジャンプタイプ挙動を実現するために圧縮モードにおいて使われてよく、そのようなモード変更は、tailcall命令の最下位ビットに基づいて判断され得る。同様に、いくつかの実施形態では、復帰命令も、圧縮モードに制限され、古典モードでは使われなくてよい。
他の命令は、jumprおよびtailcallrを含み得る。jumpおよびtailcallは、ターゲット命令のアドレスを指定することができ、jumprおよびtailcallr命令は、ターゲット命令のアドレスを保持することができるレジスタを指定することができる。同様に、callr命令は、呼び出されるべき関数のアドレスを保持することができるレジスタを指定することができる。レジスタを割振り解除するのに使うことができるdealloc_return命令は、dealloc_return命令の実行に関連したモード変更が、dealloc_return命令のターゲットアドレスの最下位ビットの調査に基づくように構成されてもよい。
ここで図4Bを参照すると、モード切替え挙動および上記特殊命令を含む例示的な命令の追跡が示されている。呼び出される関数のターゲット命令/入口点のアドレスの最下位ビットに基づいて、call、callr、jump、jumpr、およびdealloc_returnなどの命令は、ループ456により、モード切替えを引き起こすことなく、古典モード452に留まってよい。あるいは、モード切替えが起こってもよく、これらの命令、すなわちcall、callr、jump、jumpr、およびdealloc_returnは、パス458に沿って圧縮モード454に遷移し得る。圧縮モード454から、jumpおよびjumprなどの命令は、前述のように、モード切替えについて追跡されない。そうではなく、tailcall、tailcallr、および復帰が追跡され得る。したがって、呼び出される関数のターゲット命令/入口点のアドレスの最下位ビットに基づいて、call、callr、tailcall、tailcallr、return、およびdealloc_returnなどの命令は、ループ462に従って圧縮モード454に留まり得る。あるいは、モード切替えが起こってもよく、これらの命令、すなわちcall、callr、tailcall、tailcallr、return、およびdealloc_returnは、パス460に沿って古典モード452に遷移し得る。
いくつかの例示的な実施形態では、圧縮モードでの関数への入口点など、選択された命令のみが強制的に不整列にされてよく、圧縮モードにある残りの命令のアドレスは、乱されないままにされてよい。したがって、THUMBモードでのARMプロセッサなど、既存の手法とは対照的に、モードの指示を保持するのに、または呼び出される関数のPC値+1にジャンプするのにLSBを使う必要はなくなる。上述したように、例示的な実施形態では、USRは、実行モードの指示を効率的に与えるように構成され得る。さらに、これらのタイプの命令、すなわちパス202に沿った関数2の呼出し1およびパス208に沿った命令b4への復帰2のみが、nopが挿入されることを要求すればよく、204に沿った命令a5への復帰1およびパス206に沿った関数3の呼出し2などの命令は、そのようなnopを要求しない。したがって、これらの4つのタイプの呼出し/復帰命令のうち2つだけが、nopの導入による不整列を要求すればよく、このことは、nopの導入によるコード空間の浪費が削減されることを意味する。
さらに、例示的な実施形態では、命令のアドレスは、それ自体が、いかなる複合コードもコストがかかる追跡機構も要求することなく、関数呼出しおよび復帰のための実行モードを認識するのに、好都合に使われ得る。すべての他の命令に対しても、USRは、実行モードの指示を効率的に与えるように構成され得る。例示的な実施形態は、予約ビットが実行モードを示す必要性を避け、実施形態は、それに応じて、関数への入口点に続く命令のアドレスの制限に関連した欠点を回避する。さらに、アドレスの値を使って実行モードを判断することは、呼出しまたは復帰についてのみアドレスビットの調査を要求する。したがって、ターゲット命令に関連付けられたモードが何であるかを前もって知る必要はない。さらに、例示的な実施形態では、MMUページテーブルエントリは、命令の実行モードに関する情報を保持する必要はない。したがって、実行が圧縮モードと古典モードとの間で、またはその逆で切り替わるとき、処理システム100内のMMU(図示せず)が、動作を切り替えることも、特殊な関数を実施することも要求されない。
実施形態は、本明細書で開示されるプロセス、機能および/またはアルゴリズムを実施するための、様々な方法を含むことが理解されよう。たとえば、図3に示すように、実施形態は、プロセッサが第1の実行モード(たとえば、古典モード)で動作中であるとき、第1の命令(たとえば、それぞれ図2の関数2/命令a5など、ターゲット命令/入口点をもつ呼出し/復帰命令)を検出するステップ、すなわちブロック302と、第1の命令のターゲットアドレスの1つまたは複数のビット(たとえば、それぞれ図2の関数2/命令a5についての2つの最下位ビットまたは整列ビット「AB」/「00」)を分析するステップ、すなわちブロック304と、1つまたは複数のビットに基づいて、プロセッサの動作を第1の実行モードから第2の実行モード(たとえば、圧縮モード)に切り替えるかどうか判断するステップ、すなわちブロック306とを含む、プロセッサ(たとえば、プロセッサ102)内で実行モードを切り替える方法を含み得る。
情報および信号は、多種多様な技術および技法のいずれかを使用して表され得ることを当業者は諒解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表すことができ得る。
さらに、本明細書で開示された実施形態に関連して説明された様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能性に関して説明した。そのような機能性をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能性を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
本明細書で開示された実施形態と関連して説明された方法、シーケンス、および/またはアルゴリズムは、ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはその2つの組合せで直接具現化され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、かつ記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。
図5を参照すると、例示的な実施形態に従って構成されたマルチコアプロセッサを含むワイヤレスデバイスの特定の例示的な実施形態のブロック図が示され、全体的に500と表される。デバイス500は、図示のようにメモリ532に結合された図1のプロセッサ102を含むことができる、デジタル信号プロセッサ(DSP)564を含む。図5は、DSP564およびディスプレイ528に結合された、ディスプレイコントローラ526も示している。コーダ/デコーダ(コーデック)534(たとえば、オーディオおよび/または音声コーデック)は、DSP564に結合され得る。(モデムを含むことができる)ワイヤレスコントローラ540などの他の構成要素も示されている。スピーカー536およびマイクロフォン538が、コーデック534に結合され得る。図5は、ワイヤレスコントローラ540が、ワイヤレスアンテナ542に結合され得ることも示している。ある特定の実施形態では、DSP564、ディスプレイコントローラ526、メモリ532、コーデック534、およびワイヤレスコントローラ540は、システムインパッケージデバイスまたはシステムオンチップデバイス522に含まれる。
ある特定の実施形態では、入力デバイス530および電源544が、システムオンチップデバイス522に結合される。さらに、ある特定の実施形態では、図5に示すように、ディスプレイ528、入力デバイス530、スピーカー536、マイクロフォン538、ワイヤレスアンテナ542、および電源544は、システムオンチップデバイス522の外部にある。ただし、ディスプレイ528、入力デバイス530、スピーカー536、マイクロフォン538、ワイヤレスアンテナ542、および電源544の各々は、インターフェースまたはコントローラのような、システムオンチップデバイス522の構成要素に結合され得る。
図5はワイヤレス通信デバイスを示しているが、DSP564およびメモリ532がセットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、またはコンピュータに統合されてもよいことに留意されたい。プロセッサ(たとえば、DSP564)がそのようなデバイスに統合されてもよい。
したがって、本発明の実施形態は、プロセッサ内で実行モードを切り替えるための方法を実施するコンピュータ可読媒体を含み得る。したがって、本発明は、示された例に限定されず、本明細書に説明された機能性を実施するための任意の手段は、本発明の実施形態に含まれる。
上記の開示は本発明の例示的な実施形態を示すが、添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく、本明細書において様々な変更および修正を行うことができることに留意されたい。本明細書で説明した本発明の実施形態による方法クレームの機能、ステップおよび/またはアクションは、特定の順序で実施されなくてもよい。さらに、本発明の要素は、単数形で説明または請求されていることがあるが、単数形に限定することが明示的に述べられていない限り、複数形が企図される。
100 処理システム
102 プロセッサ
104 メモリ
210 コードシーケンス
212 コードシーケンス
214 コードシーケンス
500 デバイス
522 システムインパッケージデバイス、システムオンチップデバイス
526 ディスプレイコントローラ
528 ディスプレイ
530 入力デバイス
532 メモリ
534 コーダ/デコーダ(コーデック)
536 スピーカー
538 マイクロフォン
540 ワイヤレスコントローラ
542 ワイヤレスアンテナ
544 電源
564 デジタル信号プロセッサ(DSP)

Claims (6)

  1. プロセッサにおいて実行モードを切り替える方法であって、
    前記プロセッサが第1の実行モードで動作中であるとき、ターゲットアドレスへのフローの変化を起こす第1の呼出しまたは復帰命令を検出するステップと、
    前記ターゲットアドレスの整列ビットの両方を分析するステップであって、前記整列ビットが、前記ターゲットアドレスのビット列における、最下位側の2つのビットであり、前記整列ビットが所定の値を示す場合、前記ターゲットアドレスは32ビット境界に対して整列していることになる、ステップと、
    前記第1の実行モードに対応する全ての命令が前記境界に対して整列されるように強制されている場合、少なくとも1つの整列ビットが非ゼロ値を有するときに前記プロセッサの動作を、前記第1の実行モードから第2の実行モードに切り替えることを判断するステップと、
    前記第1の実行モードに対応するそれぞれの命令が前記境界に対して非整列にされることが許容されている場合、整列ビットの両方がゼロ値を有するときに前記プロセッサの動作を、前記第1の実行モードから前記第2の実行モードに切り替えるステップ
    を含む方法。
  2. 前記整列ビットが「00」である場合に、全ての命令が前記境界に対して整列されるように強制されている実行モードに切り替えるものであり、前記整列ビットが「01」、「10」、または「11」のうちの1つである場合に、それぞれの命令が前記境界に対して非整列にされることが許容されている実行モードに切り替えるものである、請求項1に記載の方法。
  3. 前記ターゲットアドレスを備えるレジスタが指定される、請求項1に記載の方法。
  4. ユーザステータスレジスタにおいて、前記整列ビットに基づいて、前記プロセッサが動作している前記実行モードの指示を与えるステップをさらに含む、請求項1に記載の方法。
  5. 第1の実行モードおよび第2の実行モードを含む少なくとも2つの実行モードで命令を実行するための手段と、
    前記第1の実行モードでの実行中に、第1の呼出しまたは復帰命令を検出するための手段であって、第1の呼出しまたは復帰命令は、プロセッサが第1の実行モードで動作しているときに、ターゲットアドレスへのフローの変化を起こす、手段と、
    前記第1の呼出しまたは復帰命令の前記ターゲットアドレスの整列ビットの両方を分析するための手段であって、前記整列ビットが、前記ターゲットアドレスのビット列における、最下位側の2つのビットであり、前記整列ビットが所定の値を示す場合、前記ターゲットアドレスは32ビット境界に対して整列していることになる、手段と、
    前記第1の実行モードに対応する全ての命令が、前記境界に整列されるように強制されている場合、少なくとも1つの整列ビットが非ゼロ値を有するときに前記プロセッサの動作を、前記第1の実行モードから前記第2の実行モードに切り替えることを判断するための手段と、
    前記第1の実行モードに対応するそれぞれの命令が前記境界に対して非整列にされることが許容されている場合、整列ビットの両方がゼロ値を有するときに前記プロセッサの動作を、前記第1の実行モードから前記第2の実行モードに切り替える手段と
    を備える処理システム。
  6. プロセッサによって実行されると、前記プロセッサに、請求項1に記載の方法を実施させるコードを備える非一時的コンピュータ可読記憶媒体。
JP2014555869A 2012-02-07 2013-02-07 プロセッサモードを切り替えるための、呼び出される関数のアドレスの最下位ビットの使用 Expired - Fee Related JP6189866B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261595773P 2012-02-07 2012-02-07
US61/595,773 2012-02-07
US13/655,499 US10055227B2 (en) 2012-02-07 2012-10-19 Using the least significant bits of a called function's address to switch processor modes
US13/655,499 2012-10-19
PCT/US2013/025187 WO2013119842A1 (en) 2012-02-07 2013-02-07 Using the least significant bits of a called function's address to switch processor modes

Publications (3)

Publication Number Publication Date
JP2015511358A JP2015511358A (ja) 2015-04-16
JP2015511358A5 JP2015511358A5 (ja) 2016-03-03
JP6189866B2 true JP6189866B2 (ja) 2017-08-30

Family

ID=48903962

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014555869A Expired - Fee Related JP6189866B2 (ja) 2012-02-07 2013-02-07 プロセッサモードを切り替えるための、呼び出される関数のアドレスの最下位ビットの使用

Country Status (6)

Country Link
US (1) US10055227B2 (ja)
EP (1) EP2812792B1 (ja)
JP (1) JP6189866B2 (ja)
KR (1) KR101847889B1 (ja)
CN (1) CN104106044B (ja)
WO (1) WO2013119842A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160117961A (ko) 2015-04-01 2016-10-11 에스케이케미칼주식회사 이차 전지용 전해액 조성물 및 이를 포함하는 이차 전지
US10152338B2 (en) * 2016-12-14 2018-12-11 International Business Machines Corporation Marking external sibling caller routines
FR3097345B1 (fr) * 2019-06-13 2021-06-25 Stmicroelectronics Grand Ouest Sas Procede de gestion du fonctionnement d’une unite de calcul capable de fonctionner avec des instructions de tailles differentes et circuit integre correspondant
US10802854B2 (en) * 2019-08-30 2020-10-13 Alibaba Group Holding Limited Method and apparatus for interpreting bytecode instruction stream
CN114020330B (zh) * 2021-11-04 2023-11-03 苏州睿芯集成电路科技有限公司 Risc-v处理器验证中模式切换的方法、电子设备以及存储介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4309532C2 (de) 1992-03-25 1996-10-31 Intel Corp Verfahren zum Sichern einer Systemabbildung eines Computersystems auf einer permanenten Speichereinrichtung sowie ein Computersystem
US6496922B1 (en) 1994-10-31 2002-12-17 Sun Microsystems, Inc. Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation
US5867681A (en) 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
JP3658101B2 (ja) 1996-09-13 2005-06-08 株式会社ルネサステクノロジ データ処理装置
US6189090B1 (en) * 1997-09-17 2001-02-13 Sony Corporation Digital signal processor with variable width instructions
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
KR100308211B1 (ko) * 1999-03-27 2001-10-29 윤종용 압축 명령을 갖는 마이크로 컴퓨터 시스템
JP3616556B2 (ja) * 1999-06-29 2005-02-02 株式会社東芝 拡張命令を処理する並列プロセッサ
US6449712B1 (en) * 1999-10-01 2002-09-10 Hitachi, Ltd. Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions
JP2001142692A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
US7093108B2 (en) * 2001-02-01 2006-08-15 Arm Limited Apparatus and method for efficiently incorporating instruction set information with instruction addresses
US20050144427A1 (en) * 2001-10-23 2005-06-30 Ip-First Llc Processor including branch prediction mechanism for far jump and far call instructions
US7376812B1 (en) 2002-05-13 2008-05-20 Tensilica, Inc. Vector co-processor for configurable and extensible processor architecture
US7340588B2 (en) 2003-11-24 2008-03-04 International Business Machines Corporation Extending the number of instruction bits in processors with fixed length instructions, in a manner compatible with existing code
US20060174089A1 (en) 2005-02-01 2006-08-03 International Business Machines Corporation Method and apparatus for embedding wide instruction words in a fixed-length instruction set architecture
US7421568B2 (en) 2005-03-04 2008-09-02 Qualcomm Incorporated Power saving methods and apparatus to selectively enable cache bits based on known processor state
GB2435116B (en) * 2006-02-10 2010-04-07 Imagination Tech Ltd Selecting between instruction sets in a microprocessors
ATE466331T1 (de) 2006-09-06 2010-05-15 Silicon Hive Bv Datenverarbeitungsschaltung mit mehreren anweisungsarten, verfahren zum betrieb einer solchen datenschaltung und scheduling-verfahren für eine solche datenschaltung
US7711927B2 (en) * 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
US20100312991A1 (en) * 2008-05-08 2010-12-09 Mips Technologies, Inc. Microprocessor with Compact Instruction Set Architecture
CN102077195A (zh) 2008-05-08 2011-05-25 Mips技术公司 具有紧凑指令集架构的微处理器

Also Published As

Publication number Publication date
WO2013119842A1 (en) 2013-08-15
CN104106044A (zh) 2014-10-15
EP2812792A1 (en) 2014-12-17
KR101847889B1 (ko) 2018-04-11
US10055227B2 (en) 2018-08-21
KR20140123576A (ko) 2014-10-22
EP2812792B1 (en) 2017-10-18
US20130205115A1 (en) 2013-08-08
JP2015511358A (ja) 2015-04-16
CN104106044B (zh) 2017-10-31

Similar Documents

Publication Publication Date Title
US10445494B2 (en) Attack protection for valid gadget control transfers
JP6189866B2 (ja) プロセッサモードを切り替えるための、呼び出される関数のアドレスの最下位ビットの使用
US9164754B1 (en) Runtime patching of native-code programs
RU2417407C2 (ru) Способы и устройство для моделирования поведения предсказания переходов явного вызова подпрограммы
US20140258696A1 (en) Strided target address predictor (stap) for indirect branches
US7620802B2 (en) Instruction execution device, debugging method, debugging device, and debugging program
TWI506544B (zh) 來自多指令集的指令解碼
US20110154299A1 (en) Apparatus and method for executing instrumentation code
GB2526646A (en) Decoding base instructions modified by a prefix instruction using modifier bits
US8843730B2 (en) Executing instruction packet with multiple instructions with same destination by performing logical operation on results of instructions and storing the result to the destination
EP3198400B1 (en) Dependency-prediction of instructions
CN112596792B (zh) 分支预测方法、装置、介质及设备
CN110741345A (zh) 对固定方向分支指令的分支预测
KR20150035161A (ko) 그래픽 처리 장치 및 이의 동작 방법
JP6943890B2 (ja) 命令パケットのためのパリティ
US9182990B1 (en) Method and apparatus for detecting execution of unsupported instructions while testing multiversioned code
US6990569B2 (en) Handling problematic events in a data processing apparatus
US10990405B2 (en) Call/return stack branch target predictor to multiple next sequential instruction addresses
US11847035B2 (en) Functional test of processor code modification operations
KR20090104849A (ko) 브랜치 어라운드 없이 짧은 희소 코드 시퀀스들을 핫 코드에 임베드 시키는 방법
JP5263497B2 (ja) 信号処理プロセッサ及び半導体装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160108

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170424

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: 20170710

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170803

R150 Certificate of patent or registration of utility model

Ref document number: 6189866

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees