JP5837126B2 - 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア - Google Patents

現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア Download PDF

Info

Publication number
JP5837126B2
JP5837126B2 JP2014084571A JP2014084571A JP5837126B2 JP 5837126 B2 JP5837126 B2 JP 5837126B2 JP 2014084571 A JP2014084571 A JP 2014084571A JP 2014084571 A JP2014084571 A JP 2014084571A JP 5837126 B2 JP5837126 B2 JP 5837126B2
Authority
JP
Japan
Prior art keywords
instruction
instruction set
preload
instructions
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
Application number
JP2014084571A
Other languages
English (en)
Other versions
JP2014194783A (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2014194783A publication Critical patent/JP2014194783A/ja
Application granted granted Critical
Publication of JP5837126B2 publication Critical patent/JP5837126B2/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/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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
    • 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/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

本発明は、一般にプロセッサの分野に関し、より詳細には、命令をプリロードし、現在実行している命令セット以外の命令セットに従ってプリロードされる命令をプリデコードするためのシステムおよび方法に関する。
マイクロプロセッサは多種多様なアプリケーションで計算タスクを実行する。ソフトウェアの拡張による動作の高速化および/または機能性の向上を可能にするために、プロセッサパフォーマンスの改善がたいてい望ましい。RISCアーキテクチャなどアーキテクチャの進歩と半導体技術の進歩の両方を利用することによって、多数の現代のプロセッサは、DRAMやSDRAMなどメモリチップよりもはるかに高いクロックスピードで実行する。比較的遅いメモリアクセスの不利益を最小にするために、これらのプロセッサは階層メモリ構造を利用し、高速のオンチップキャッシュメモリが、最近アクセスされた、および/またはプロセッサが(ソフトウェアを介して)近い将来のアクセスを予期する、データおよび命令のローカルコピーを記憶する。
命令キャッシュへのロードを予期することの一例は、プリロード命令(たとえば、ARM命令PLI)である。プリロード命令は、それらの実行に先だって命令を命令キャッシュにロードする。プログラマは、サブルーチン呼出しなど、ターゲットへの既知のまたは予期される分岐より多少前に、プリロード命令をコードに挿入することができる。プリロード命令はターゲットでの命令を命令キャッシュにロードするので、分岐の実行時に、ターゲットでの命令は即時に実行するためにキャッシュ中で利用できる。本明細書では、プリロード命令に応じてキャッシュにロードされる命令をプリロードされる命令と呼ぶ。
たいていの現代のプロセッサはパイプラインアーキテクチャを採用しており、全体的なプロセッサスループットを高めるために、連続命令が実行中に重複する。パイプラインによって円滑な実行を維持することは、高いパフォーマンスを達成するために重要である。当技術分野で知られている1つのパイプライン最適化技法は、命令をプリデコードすることである。命令は、メモリから読み込まれる際に調査され、部分的に復号され、プリデコード情報として知られる、命令に関する何らかの情報が、関連する命令とともに命令キャッシュに記憶される。命令が後でキャッシュからパイプライン中にフェッチされると、プリデコード情報もフェッチされ、命令を完全に復号するのを支援するために使用される。プリデコード情報は、たとえば、分岐および浮動小数点命令を特定し、可変長命令セットアーキテクチャにおける命令の長さ、またはパイプライン中の命令の実行に有用な他の情報を特定することができる。
いくつかの現代のプロセッサは、2つ以上の命令セット符号化に従って命令を実行することが可能である。たとえば、プロセッサは、32ビットネイティブ命令セットを有し、さらに、Java(登録商標)バイトコードを実行する能力を含むことができる。別の例として、ARMプロセッサアーキテクチャのいくつかのバージョンは、ARM命令セット動作モードで32ビットARM命令符号化を実行し、Thumb命令セット動作モードで16ビットまたは32ビットThumb命令符号化を実行する。プログラマは、関係する命令セット符号化に従って命令を実行する前に、ソフトウェアで適切な命令セット動作モードを明示的に設定する。
プリデコーダを有する従来のプロセッサがプリロード命令を実行する場合、プリロードされる命令は現在の命令セット動作モードに従ってプリデコードされる。プログラマは、たとえば異なる命令セットに書き込まれたコードセクションへの分岐を予期して、現在のプロセッサ命令セット動作モードとは異なる命令セット中の命令をプリロードしたい場合、プリロード命令を実行する前に命令セットモードを変更しなければならない。
たとえば、ARMモードでARM命令を実行しているプログラムは、Thumbモードに変更し、Thumb命令のみを実行しているコードセグメントに分岐することができる。Thumb命令をプリロードして正しくプリデコードするために、プログラムは、Thumbコードセクションに分岐する前に、現在のプロセッサ命令セット動作モードをARMからThumbに切り替え、Thumbコードの目的アドレスをもつプリロード命令を実行し、残りのARM命令を実行するためにARMモードに切り替えなければならない。
プリロード命令を実行するためにThumbモードに入ることができない場合、プリデコーダは、間違ってARM命令セット符号化に従って、プリロードされるThumb命令をプリデコードしてしまう。これが起こった場合、命令キャッシュからフェッチされたとき、プリデコード情報は役に立たず、Thumb命令を再フェッチしなければならず、プリロードでなくすはずだった遅延を生じることになる。さらに、タグの一部としてARM/Thumbビットを有する命令キャッシュでは、再フェッチされたThumb命令に別個のキャッシュラインが割り当てられ、ARM命令がキャッシュ中に残るので、Thumb命令が間違ってプリデコードされ、キャッシュ空間を浪費し、したがってキャッシュヒット率およびシステムパフォーマンスが低下する。
多数のプロセッサでは、単一のプリロード命令を実行するために現在のプロセッサ命令セット動作モードを2回切り替えるのに必要なオーバーヘッドが、予期された命令セット中の命令のプリロードの利益を上回ることがある。
本明細書で開示し、請求する1つまたは複数の実施形態によれば、第1のプロセッサ命令セット動作モードで実行されるプリロード命令は、異なる第2の命令セット中の命令をプリロードするように動作可能である。命令は、命令セットプリロードインジケータ(ISPI)に応じて第2の命令セット符号化に従ってプリデコードされる。様々な実施形態では、ISPIは、プリロード命令を実行する前に設定でき、またはプリロード命令もしくはプリロード目的アドレスの一部を備えることができる。
一実施形態は、命令をプリロードする方法に関する。複数の命令セットのうちの1つを示す命令セットプリロードインジケータが設定される。命令を命令キャッシュにプリロードするように動作可能な命令が実行される。プリロードされる命令は、命令セットプリロードインジケータに応じて現在の命令セットモード以外の命令セットに従ってプリデコードされる。
別の実施形態はプロセッサに関する。プロセッサは、メモリインターフェースと、命令を記憶するように動作可能な命令キャッシュとを含む。プロセッサはまた、命令キャッシュから命令およびプリデコード情報を取り出し、プロセッサ命令セット動作モードに従って命令を実行するように動作可能であり、さらに命令セットプリロードインジケータを生成するように動作可能な命令実行ユニットを含む。プロセッサはさらに、命令キャッシュとメモリインターフェースとの間に挿入され、命令を命令キャッシュにプリロードするように動作可能な命令の実行時に、命令セットプリロードインジケータに応じて現在のプロセッサ命令セット動作モード以外の命令セットに従って命令をプリデコードするように動作可能なプリデコーダを含む。
さらに別の実施形態は、プロセッサに命令を命令キャッシュにプリロードさせるように動作可能な、少なくとも第1の命令セット中のプリロード命令を記憶するコンピュータ読取り可能媒体であって、プリロードされる命令が、異なる第2の命令セットに従ってプリデコードされるコンピュータ読取り可能媒体に関する。
図1は、現在のプロセッサ命令セットモード以外の命令セットに従って、プリロードされる命令をプリデコードすることが可能なプロセッサの機能ブロック図である。 図2は、複数の命令セットのうちの1つ中の命令をプリロードする方法の流れ図である。
詳細な説明
図1は、複数の異なる命令セット符号化に従って符号化される命令を実行するプロセッサ110の機能ブロック図を示す。プロセッサ110は、現在のプロセッサ命令セットモード以外の命令セットに従って、プリロードされる命令をプリデコードすることが可能である。
プロセッサ110は、パイプステージに編成された複数のレジスタまたはラッチ116、ならびに論理演算ユニット(ALU)(図示せず)など論理および計算回路を備えるパイプライン114を含む命令実行ユニット11で命令を実行する。パイプラインは制御論理118に従って命令を実行する。パイプライン114は、図示のようにスーパースカラ設計とすることができる。汎用レジスタ(GPR)ファイル120は、メモリ階層の最上部を備えるレジスタを与える。命令実行ユニットはまた、たとえば、命令が復号され、実行される複数の命令セット符号化のうちの1つを定義する、現在のプロセッサ命令セット動作モードを示す状態レジスタ122を含む。命令実行ユニット112はまた、L2キャッシュメモリ136または主メモリ138からフェッチされた命令およびデータのプロパティを追跡するL2処理論理124を含む。
パイプライン114は、命令側トランスレーションルックアサイドバッファ(ITLB)128によって管理されるメモリアドレス指定および許可を用いて、命令キャッシュ126から命令をフェッチする。プリデコーダ130は、L2キャッシュ136(または主メモリ138)からフェッチされた命令をプリデコードし、命令およびプリデコード情報を命令キャッシュ126に入れる。本明細書でより詳細に論じるように、プリデコーダ130は、命令実行ユニット112からの命令セットプリロードインジケータ(ISPI)に応じて現在のプロセッサ命令セット動作モードとは異なる命令セットに従って、プリロードされる命令をプリデコードする。
データは、主トランスレーションルックアサイドバッファ(TLB)134によって管理されるメモリアドレス指定および許可を用いて、データキャッシュ132からアクセスされる。様々な実施形態では、ITLB128はTLB134の一部のコピーを備えることができる。代替として、ITLB128とTLB134を統合することができる。同様に、プロセッサ110の様々な実施形態では、命令キャッシュ126とデータキャッシュ132を統一することができる。
命令キャッシュ126およびデータキャッシュ132でのミスは、図1に示される実施形態では統合されている、レベル2(L2)キャッシュメモリ136へのアクセスを引き起こす。L2キャッシュ136でのミスは、メモリインターフェース142の制御下で、システムバス140を介して主(オフチップ)メモリ138へのアクセスを引き起こす。プロセッサ110は、周辺バス150上の様々な周辺装置146、148へのアクセスを制御する入出力(I/O)インターフェース144を含むことができる。当技術分野でよく知られているように、プロセッサ110は、メモリ136、あるいは周辺機器146、148によって読み取られる磁気または光学媒体など、コンピュータ読取り可能媒体から取り出された命令を実行する。
当業者であれば、プロセッサ110の多数の変形形態が可能であることを認識するであろう。たとえば、プロセッサ110はレベル3(L3)または追加のキャッシュを含むことができ、および/または別個のL2キャッシュ136は命令およびデータキャッシュ126、132の各々に専用とすることができる。さらに、プロセッサ110内に示されている機能ブロックの1つまたは複数は、特定の実施形態から省略できる。
プロセッサ110は、たとえば状態レジスタ122に示されるように、現在のプロセッサ命令セットモードに従って命令を実行する。異なる命令セット中の命令のプリロードを正しいプリデコードとともに可能にするために、命令実行ユニット112は、命令セットプリロードインジケータ(ISPI)を生成し、プリロード命令の実行時にISPIをプリデコーダ130に与える。プロセッサ110が2つの命令セット符号化(たとえば、ARMおよびThumb)をサポートする場合、ISPIは単一のビットを備えることができる。プロセッサ110が3つ以上の命令セット符号化をサポートする場合、当技術分野でよく知られているように、ISPIは、マルチビット値を備え、命令セットごとに別々のフラグを備え、または命令セット指示を二進値で符号化することができる。ISPIは様々な方法で生成できる。
一実施形態では、プリロード命令目的アドレスの1つまたは複数の未使用のアドレスビットは、ISPIとして符号化される。プリロード命令(たとえばPLI)はオペランドとして目的アドレスをとる。命令アドレスは、たとえば、タグ、セット数、およびキャッシュラインオフセットに分解できる。たとえば、32ビット命令仮想アドレスVA[31:0]の場合、命令キャッシュ126のCAM構造中に記憶されるタグと比較されるタグは、VA[31:11]を備えることができる。nウェイセット連想キャッシュ(n-way set associative cache)では、セット数は、タグが一致する場合に戻されるn個の結果の中から選択する。セット数はVA[10:5]を備えることができる。オフセットVA[4:0]は、(プリデコード情報とともに)命令キャッシュ126のRAM構造中に記憶されるキャッシュライン中の個々の命令をアドレス指定する。
プリロード命令は固定サイズのメモリブロックを各キャッシュライン中にロードする。すべての命令が同じ長さである場合、固定数の命令がキャッシュライン中にロードされる。可変長命令セットの場合、またはキャッシュラインが、異なる長さの命令を有する異なる命令セットに従って符号化された命令を含む場合、キャッシュライン中の命令の数は、命令を命令キャッシュにロードした時点では知られていない。しかしながら、いずれの場合も、命令キャッシュライン中にロードされるデータ量は知られており、したがって、プリロード命令はアドレスのキャッシュラインオフセット部分を利用しない。
一実施形態によれば、キャッシュラインオフセット、たとえばVA[4:0]は、命令セットプリロードインジケータ(ISPI)を符号化するために使用される。特に、プロセッサ110が2つの命令セットからの命令を実行する実施形態では、ISPIは最下位ビットVA[0]である。1つの非限定的な例として、VA[0]=0はARM命令を示すことができ、VA[0]=1はThumb命令を示すことができる。もちろん、他のISPI符号化が可能であり、プロセッサ110がサポートする命令セットの数およびタイプに依存する。
アドレスが、関連するプリロード命令の実行に備えて決定され、コンパイラ指定されたGPRに書き込まれるとき、ISPIはプリロード目的アドレスのキャッシュラインオフセット部分に符号化される。プリロード命令は、実行時に、指定されたGPRレジスタから目的アドレスを読み取り、アドレスのタグおよびセット数部分によって決定されるキャッシュライン中に目的アドレスでデータブロックをプリロードする。アドレスが命令キャッシュ中でヒットした場合、プリロード命令実行は完了する。アドレスが命令キャッシュ中でミスした場合、L2処理論理124など、命令実行ユニット112内の論理は、ミス処理を実行して、命令を取り出すためにL2キャッシュ136および必要ならば主メモリ138にアクセスする。
命令を含むデータブロックがプリデコーダ130中にロードされるとき、L2処理論理124はプリデコーダ130にISPIを示す。ISPIに応じて、プリデコーダ130は、プロセッサ110の現在の命令セット動作モードにかかわらず、示された命令セットに従って命令をプリデコードする。次いで、プリデコーダ130は、命令を正しいプリデコード情報とともに命令キャッシュ126に書き込む。一実施形態では、プリデコーダ130は、プリロード命令実行の指示を受け取り、(通常の命令キャッシュラインフェッチ用のISPIを無視して)そのような指示に応答してISPIを調査する。別の実施形態では、L2処理論理24など、命令実行ユニット112中の論理は、ISPIをプリロード命令実行の知識と組み合わせ、現在フェッチされた命令をプリデコードするための命令セットの指示をプリデコーダ130に示すことができる。いずれの場合も、プリデコーダ130は、ISPIに応答して特定の命令セットに従って、プリロードされる命令をプリデコードする。
一実施形態では、下位互換性(backward compatibility)を与えるために、ISPIに従って、プリロードされる命令を上述のようにプリデコードすることが選択的に可能にされる。特に、インターワーキングモードが定義される。インターワーキングモードは、状態レジスタ122中のビットによって示すことができる。インターワーキングモードが有効である場合、上述のように、プリロードされる命令のプリデコードはISPIに依存する。インターワーキングモードが使用不能である場合、命令は、プリロード命令が実行されるときにアクティブになるプロセッサ命令セットモードに従ってプリデコードされる。
一実施形態では、命令セットプリロードインジケータ(ISPI)は、状態レジスタ122などレジスタ中の1つまたは複数のビットを備える。この実施形態では、ISPIビットはプリロード命令の実行より前に明示的に設定される。プリロード命令の実行時に、プリデコーダ130は、状態レジスタ122または他のレジスタ中のISPIビットを検査し、(そのときにアクティブであるプロセッサ命令セットモードにかかわらず)ISPIビットによって示される命令セット符号化に従って、プリロードされる命令をプリデコードする。次いで、命令およびプリデコード情報が命令キャッシュ126に書き込まれる。一実施形態では、上述のように、ISPIに従って、プリロードされる命令をプリデコードすることが、インターワーキングモードによって選択的に可能にされる。一実施形態では、ISPIビットをインターワーキングモードインジケータビットによってゲート制御することができる。
一実施形態では、命令セットプリロードインジケータ(ISPI)は、プリロード命令の演算コード中の1つまたは複数のビットを備える。プリロード命令演算コードのビットフィールドをISPIに対して定義することができ、コンパイラは、プログラマの命令またはコード中の指示(directive)に従ってISPIビットフィールドを設定することができる。プリロード命令の実行時に、ISPIビットフィールドは、たとえばL2処理論理124によってプリデコーダ130に示され、プリデコーダ130は、示された命令セット符号化に従って、プリロードされる命令をプリデコードする。次いで、命令およびプリデコード情報が命令キャッシュ126に書き込まれる。
一実施形態では、異なる命令セット中の命令をプリロードするために、2つ以上の別個のプリロード命令が定義される。非限定的な例として、ARM命令セットは、データを命令キャッシュ126中にプリロードする従来のプリロード命令を含むことができ、プリデコーダ130はプリロードされる命令をARM命令としてプリデコードする。さらに、ARM命令セットは、データを命令キャッシュ126中にプリロードする別個の代替の命令セットプリロード命令(たとえばPLI2)を含むこともでき、プリデコーダ130はプリロードされる命令をThumb命令としてプリデコードする。同様に、Thumb命令セットは、ThumbまたはARM命令セット符号化に従ってプリデコードされるデータをプリロードするための別個のプリロード命令を含むことができる。これにより、プログラマは、コード中の適切なプリロード命令を利用することによって所望の命令セットから命令を明示的にプリロードすることが可能になる。
当業者は、上記の実施形態が相互に排他的なものでないことを認識するであろう。たとえば、演算コード中にISPIビットフィールドを有するプリロード命令または一意のプリロード命令は、特定の実装形態において、ISPIを状態レジスタ122などレジスタにラッチすることによって、またはISPIをプリロード目的アドレス中の1つまたは複数の未使用のアドレスビット中に代入することによって、プリデコーダ130にISPIを示すことができる。一般に、本開示の教示を与えられれば、当業者は、所与のアプリケーション用の異なる命令セット中の命令をプリロードするための最善の解決策を確認することができる。
図2は、命令をプリロードする方法200を示す。本方法は、命令セットプリロードインジケータ(ISPI)を設定することによって開始する(ブロック202)。ISPIは、プロセッサ110によってサポートされる複数の命令セットのうちの1つを一意に特定する。様々な実施形態では、ISPIは、プリロード命令目的アドレスを改変するか、状態レジスタ122などレジスタ中にISPIビットを設定するか、プリロード命令演算コード中にISPIビットフィールドを設定するか、または一意のプリロード命令を選択することによって設定できる。
現在のプロセッサ命令セットモードでプリロード命令を実行する(ブロック204)。プリロード命令は、プリロードされる命令の実行に先だって命令を命令キャッシュ126にロードするように動作可能である。一実施形態では、プリロードされる命令のプリデコードはインターワーキングモードに依存する。インターワーキングモードが有効でない場合(ブロック206)、プリデコーダ130は現在の命令セットモードに従って、プリロードされる命令をプリデコードする(ブロック208)。インターワーキングモードが有効であり(ブロック206)、ISPIが現在の命令セットモード以外の命令セットを示すかまたは特定する場合(ブロック210)、プリデコーダ130は、ISPIによって示された命令セットに従って、プリロードされる命令をプリデコードする(ブロック212)。
本明細書で説明し、請求する1つまたは複数の実施形態によれば、プログラマは、第1の命令セットからの命令を実行しながら命令を命令キャッシュ126中にプリロードし、プリロードされる命令を第2の異なる命令セットに従ってプリデコードすることができる。このようにして、所与の命令セット中の命令を、その命令セットに書き込まれたコードに分岐する前に命令キャッシュ126中で利用可能にすることによって、命令セット間で切り替わるコードの実行を最適化することができる。命令セットプリロードインジケータ(ISPI)のプリデコーダ130への通信は様々な方法で実現できる。
本明細書では本発明についてその特定の特徴、態様および実施形態に関して説明したが、本発明の広い範囲内で多数の変形形態、変更形態、および他の実施形態が可能であり、したがって、すべての変形形態、変更形態および実施形態は本発明の範囲内に入ると見なされるべきであることは明らかであろう。したがって、本実施形態はすべての面で例示的であり限定的ではないと解釈すべきであり、添付の特許請求の範囲の意味および等価範囲内に入るすべての変更はそこに包含されるものとする。
下記に出願時の請求項1−22に対応する記載を付記1−22として表記する。
付記1
命令をプリロードする方法であって、
複数の命令セットのうちの1つを特定する命令セットプリロードインジケータを設定することと、
命令を命令キャッシュにプリロードするように動作可能な命令を現在のプロセッサ命令セットモードに従って実行することと、
前記命令セットプリロードインジケータに応答して前記現在の命令セットモード以外の命令セットに従って前記プリロードされる命令をプリデコードすることと
を備える方法。
付記2
前記命令セットプリロードインジケータは、命令がプリロードされるキャッシュラインのアドレスの1つまたは複数のビットを備える、付記1に記載の方法。
付記3
前記命令セットプリロードインジケータは、前記命令キャッシュラインアドレス中の最下位ビットを備える、付記2に記載の方法。
付記4
前記命令セットプリロードインジケータは、命令を命令キャッシュにプリロードするように動作可能な前記命令の演算コード中の1つまたは複数のビットを備える、付記1に記載の方法。
付記5
命令を命令キャッシュにプリロードするように動作可能な前記命令は、プリロードされる命令が常に第1の命令セットとは異なる第2の命令セットに従ってプリデコードされるようにする前記第1の命令セット中の一意の命令であり、命令セットプリロードインジケータを設定することが前記一意のプリロード命令を選択することを備える、付記1に記載の方法。
付記6
命令セットプリロードインジケータを設定することは、命令を命令キャッシュにプリロードするように動作可能な前記命令を実行する前にレジスタ中の1つまたは複数のビットを設定することを備える、付記1に記載の方法。
付記7
前記プリロードされる命令は、インターワーキングモードで前記現在の命令セットモード以外の命令セットに従ってプリデコードされるか、さもなければ前記現在の命令セットモードに従ってプリデコードされる、付記1に記載の方法。
付記8
メモリインターフェースと、
命令およびプリデコード情報を記憶するように動作可能な命令キャッシュと、
前記命令キャッシュから前記命令および前記プリデコード情報を取り出し、プロセッサ命令セット動作モードに従って前記命令を実行するように動作可能であり、さらに命令セットプリロードインジケータを生成するように動作可能な命令実行ユニットと、
前記命令キャッシュと前記メモリインターフェースとの間に挿入され、命令を前記命令キャッシュにプリロードするように動作可能な命令の実行時に、前記命令セットプリロードインジケータに応じて前記現在のプロセッサ命令セット動作モード以外の命令セットに従って命令をプリデコードするように動作可能なプリデコーダと
を備えるプロセッサ。
付記9
前記命令実行ユニットは、命令がプリロードされるキャッシュラインのアドレスの1つまたは複数のビットを設定することによって前記命令セットプリロードインジケータを生成する、付記8に記載のプロセッサ。
付記10
前記命令プリロードキャッシュラインアドレスは、命令を前記命令キャッシュにプリロードするように動作可能な前記命令のオペランドである、付記9に記載のプロセッサ。
付記11
前記命令プリロードキャッシュラインアドレスは、命令を前記命令キャッシュにプリロードするように動作可能な前記命令によって読み取られる汎用レジスタに書き込まれる、付記10に記載のプロセッサ。
付記12
前記命令実行ユニット命令は、命令を命令キャッシュにプリロードするように動作可能な前記命令の演算コード中の1つまたは複数のビットに応じて前記命令セットプリロードインジケータを生成する、付記8に記載のプロセッサ。
付記13
命令を命令キャッシュにプリロードするように動作可能な前記命令は、プリロードされる命令が所定の命令セットに従ってプリデコードされるようにする一意の命令であり、前記命令実行ユニット命令が、前記一意のプリロード命令を実行することによって前記命令セットプリロードインジケータを生成する、付記8に記載のプロセッサ。
付記14
レジスタをさらに備え、前記命令実行ユニットは、前記レジスタ中の1つまたは複数の所定のビットを設定することによって前記命令セットプリロードインジケータを生成する、付記8に記載のプロセッサ。
付記15
前記命令キャッシュと前記メモリインターフェースとの間に挿入された第2のキャッシュメモリをさらに備え、前記プリデコーダが前記命令キャッシュと前記第2のキャッシュメモリとの間に挿入される、付記8に記載のプロセッサ。
付記16
前記プリデコーダは、インターワーキングモードで前記現在のプロセッサ命令セット動作モード以外の命令セットに従って命令をプリデコードするように動作可能であるか、さもなければ前記現在のプロセッサ命令セット動作モードに従って命令をプリデコードするように動作可能である、付記8に記載のプロセッサ。
付記17
プロセッサに命令を命令キャッシュにプリロードさせるように動作可能な、少なくとも第1の命令セット中のプリロード命令を記憶するコンピュータ読取り可能媒体であって、前記プリロードされる命令が、異なる第2の命令セットに従ってプリデコードされる、コンピュータ読取り可能媒体。
付記18
前記第2の命令セットは命令セットプリロードインジケータによって指定される、付記
17に記載のコンピュータ読取り可能媒体。
付記19
前記命令セットプリロードインジケータは、命令がプリロードされるキャッシュラインのアドレスの1つまたは複数のビットを備える、付記18に記載のコンピュータ読取り可能媒体。
付記20
前記命令演算コードは、命令セットプリロードインジケータビットフィールドを含む、付記17に記載のコンピュータ読取り可能媒体。
付記21
前記プリロードされる命令が常に特定の第2の命令セットに従ってプリデコードされる、付記17に記載のコンピュータ読取り可能媒体。
付記22
前記命令セットプリロードインジケータが前記命令の実行より前に状態レジスタに記憶される、付記17に記載のコンピュータ読取り可能媒体。

Claims (27)

  1. 命令をプリロードする方法であって、
    複数の命令セットのうちの第1の命令セットに関連づけられた第1の命令セット動作モードにおいて実行するプロセッサの命令実行ユニットで、前記複数の命令セットのうちの第2の命令セットを識別する命令セットプリロードインジケータを生成することであって、前記第1の命令セットは、前記第2の命令セット中に含まれない少なくとも1つの命令を含む、生成することと、
    命令キャッシュ中に命令をプリロードするように動作可能な前記第1の命令セット中のプリロード命令を、前記第1の命令セット動作モードに従って、実行することであって、前記プリロード命令は、プリロードされる命令が前記第2の命令セットに従ってプリデコードされるようにする、実行することと、
    前記第1の命令セット動作モードに従って実行している間に、前記識別された第2の命令セットに関連づけられた第2の命令セット動作モードに従って、前記命令キャッシュの中に前記プリロードされる命令をプリデコードすることと
    を備える方法。
  2. 前記プリロードされる命令は前記プロセッサのプリデコーダでプリデコードされる単一の命令であり、前記方法は、前記プロセッサの前記プリデコーダで前記生成された命令セットプリロードインジケータを受け取ることをさらに備える、請求項1に記載の方法。
  3. 前記命令セットプリロードインジケータは、命令がプリロードされるキャッシュライン内のオフセットの1つまたは複数のビットを備える、請求項1に記載の方法。
  4. 前記命令セットプリロードインジケータは、前記キャッシュライン内の前記オフセットの最下位ビットを備える、請求項3に記載の方法。
  5. 前記命令セットプリロードインジケータは、前記プリロード命令の演算コード中の1つまたは複数のビットを備える、請求項1に記載の方法。
  6. 前記プリロード命令は、プリロードされる命令が常に前記第2の命令セットに従ってプリデコードされるようにする前記第1の命令セット中の一意の命令であり、前記命令セットプリロードインジケータを生成することは、前記一意のプリロード命令を選択することを備える、請求項1に記載の方法。
  7. 前記命令セットプリロードインジケータを生成することは、前記プリロード命令を実行する前に状態レジスタ中の1つまたは複数のビットを設定することを備える、請求項1に記載の方法。
  8. 前記プリロードされる命令は、インターワーキングモードにおいて前記第2の命令セット動作モードに従ってプリデコードされる、請求項1に記載の方法。
  9. 前記第1の命令セットがARMタイプの命令セットであり、前記第2の命令セットがThumbタイプの命令セットであるか、または、前記第1の命令セットがThumbタイプの命令セットであり、前記第2の命令セットがARMタイプの命令セットである、請求項1に記載の方法。
  10. 前記第1の命令セットは、第1の命令長に関連づけられ、前記第2の命令セットは、前記第1の命令長とは異なる第2の命令長に関連づけられる、請求項1に記載の方法。
  11. 前記第1の命令長は、32ビット長であり、前記第2の命令長は、16ビット長である、請求項10に記載の方法。
  12. 前記第1の命令セット中の各命令は、第1の命令長を有し、前記第2の命令セットは、前記第1の命令長を有する第1の命令と、前記第1の命令長とは異なる第2の命令長を有する第2の命令とを含む、請求項1に記載の方法。
  13. 前記第1の命令セットは、固定サイズの命令を備え、前記第2の命令セットは、可変サイズの命令を備える、請求項1に記載の方法。
  14. プロセッサであって、
    メモリインターフェースと、
    命令およびプリデコード情報を記憶するように動作可能な命令キャッシュと、
    前記プロセッサが第1の命令セット動作モードにある場合に前記命令を取り出し、命令セットプリロードインジケータを生成するように動作可能な命令実行ユニットと、
    前記命令キャッシュと前記メモリインターフェースとの間に挿入され、前記命令実行ユニットが前記第1の命令セット動作モードにおいて動作している間に、前記命令セットプリロードインジケータに応答して、第2の命令セット動作モードに従って、前記命令キャッシュの中にプリロードされる命令をプリデコードするように動作可能なプリデコーダであって、第2の命令セットのプリロードされる命令は、前記第1の命令セット中のプリロード命令に応答してプリロードされ、前記第1の命令セット動作モードは、前記プロセッサの前記第1の命令セットに関連づけられる、プリデコーダと
    を備え、前記第2の命令セット動作モードは、前記プロセッサの第2の命令セットに関連づけられ、前記第1の命令セットは、前記第2の命令セット中に含まれない少なくとも1つの命令を含む、プロセッサ。
  15. 前記命令実行ユニットは、命令がプリロードされる前記命令キャッシュのキャッシュライン内のオフセットの1つまたは複数のビットを設定することによって前記命令セットプリロードインジケータを生成する、請求項14に記載のプロセッサ。
  16. 前記キャッシュライン内の前記オフセットは、汎用レジスタに書き込まれる、請求項15に記載のプロセッサ。
  17. 状態レジスタをさらに備え、前記命令実行ユニットは、前記状態レジスタ中の1つまたは複数のビットを設定することによって前記命令セットプリロードインジケータを生成する、請求項14に記載のプロセッサ。
  18. 前記命令キャッシュと前記メモリインターフェースとの間に挿入された第2のキャッシュメモリをさらに備え、前記プリデコーダは、前記命令キャッシュと前記第2のキャッシュメモリとの間に挿入される、請求項14に記載のプロセッサ。
  19. 前記プリデコーダは、インターワーキングモードにおいて前記第2の命令セット動作モードに従って命令をプリデコードするように動作可能である、請求項14に記載のプロセッサ。
  20. 複数の命令セットのうちの第1の命令セット中の1つまたは複数の命令を記憶する非一時的なコンピュータ読取り可能媒体であって、前記1つまたは複数の命令は、プロセッサによって実行可能であり、前記プロセッサに、
    前記複数の命令セットのうちの第2の命令セットを識別する命令セットプリロードインジケータを生成させ、前記第1の命令セットは、前記第2の命令セット中に含まれない少なくとも1つの命令を含み、
    命令キャッシュ中に命令をプリロードするように動作可能な前記第1の命令セット中のプリロード命令を、第1の命令セット動作モードに従って、実行させ、前記プリロード命令は、プリロードされる命令が前記第2の命令セットに従ってプリデコードされるようにし、
    前記第1の命令セット動作モードに従って実行している間に、前記識別された第2の命令セットに関連づけられた第2の命令セット動作モードに従って、前記命令キャッシュの中に前記プリロードされる命令をプリデコードさせる、非一時的なコンピュータ読取り可能媒体。
  21. 前記プリロードされる命令の各々は、前記第2の命令セットに従ってプリデコードされる、請求項20に記載の非一時的なコンピュータ読取り可能媒体。
  22. 前記命令セットプリロードインジケータは、前記プリロード命令の実行前に状態レジスタ中に記憶される、請求項20に記載の非一時的なコンピュータ読取り可能媒体。
  23. 前記第1の命令セットがARM命令セットであり、前記第2の命令セットがThumb命令セットであるか、または、前記第1の命令セットがThumb命令セットであり、前記第2の命令セットがARM命令セットである、請求項20に記載のコンピュータ読取り可能媒体。
  24. プロセッサであって、
    メモリインターフェースと、
    命令およびプリデコーディング情報を命令キャッシュ中に記憶するための手段と、
    プロセッサが第1の命令セット動作モードにある場合に前記命令を取り出し、命令セットプリロードインジケータを生成するための命令実行手段と、
    前記命令を記憶するための手段と前記メモリインターフェースとの間に挿入され、前記命令セットプリロードインジケータに応答して、前記命令を記憶するための手段中に、第2の命令セット動作モードに従って命令をプリロードするために、前記命令実行手段が前記第1の命令セット動作モードにおいて動作している間に、第1の命令セット中のプリロード命令に応答してプリロードされる前記第2の命令セット動作モードに従って前記プリロードされる命令をプリデコードするための手段と
    を備え、前記第1の命令セット動作モードは、前記プロセッサの前記第1の命令セットに関連づけられ、前記第2の命令セット動作モードは、前記プロセッサの第2の命令セットに関連づけられ、
    前記第1の命令セットは、前記第2の命令セット中に含まれない少なくとも1つの命令を含む、プロセッサ。
  25. 前記命令実行手段は、命令がプリロードされる前記命令キャッシュのキャッシュライン内のオフセットの1つまたは複数のビットを設定することによって、前記命令セットプリロードインジケータを生成するための手段を備える、請求項24に記載のプロセッサ。
  26. 前記キャッシュライン内の前記オフセットは、汎用レジスタに書き込まれる、請求項25に記載のプロセッサ。
  27. 前記プリデコードするための手段は、インターワーキングモードにおいて前記第2の命令セット動作モードに従って命令をプリデコードするための手段を備える、請求項24に記載のプロセッサ。
JP2014084571A 2007-03-14 2014-04-16 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア Expired - Fee Related JP5837126B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/685,850 2007-03-14
US11/685,850 US7711927B2 (en) 2007-03-14 2007-03-14 System, method and software to preload instructions from an instruction set other than one currently executing

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009553818A Division JP5528819B2 (ja) 2007-03-14 2008-03-14 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア

Publications (2)

Publication Number Publication Date
JP2014194783A JP2014194783A (ja) 2014-10-09
JP5837126B2 true JP5837126B2 (ja) 2015-12-24

Family

ID=39513417

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2009553818A Expired - Fee Related JP5528819B2 (ja) 2007-03-14 2008-03-14 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
JP2014084571A Expired - Fee Related JP5837126B2 (ja) 2007-03-14 2014-04-16 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2009553818A Expired - Fee Related JP5528819B2 (ja) 2007-03-14 2008-03-14 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア

Country Status (6)

Country Link
US (2) US7711927B2 (ja)
EP (1) EP2137611B1 (ja)
JP (2) JP5528819B2 (ja)
KR (1) KR101099302B1 (ja)
CN (1) CN101627366B (ja)
WO (1) WO2008113007A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7769983B2 (en) 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
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
US8037286B2 (en) 2008-01-23 2011-10-11 Arm Limited Data processing apparatus and method for instruction pre-decoding
US7925866B2 (en) 2008-01-23 2011-04-12 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
US7747839B2 (en) 2008-01-23 2010-06-29 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
US9075622B2 (en) * 2008-01-23 2015-07-07 Arm Limited Reducing errors in pre-decode caches
US7917735B2 (en) 2008-01-23 2011-03-29 Arm Limited Data processing apparatus and method for pre-decoding instructions
US8347067B2 (en) * 2008-01-23 2013-01-01 Arm Limited Instruction pre-decoding of multiple instruction sets
US7925867B2 (en) 2008-01-23 2011-04-12 Arm Limited Pre-decode checking for pre-decoded instructions that cross cache line boundaries
GB2460280A (en) 2008-05-23 2009-11-25 Advanced Risc Mach Ltd Using a memory-abort register in the emulation of memory access operations
GB2484489A (en) * 2010-10-12 2012-04-18 Advanced Risc Mach Ltd Instruction decoder using an instruction set identifier to determine the decode rules to use.
JP5598554B2 (ja) * 2011-01-25 2014-10-01 富士通株式会社 システム、およびデータロード方法
US10055227B2 (en) * 2012-02-07 2018-08-21 Qualcomm Incorporated Using the least significant bits of a called function's address to switch processor modes
JP5840525B2 (ja) * 2012-02-16 2016-01-06 シャープ株式会社 情報処理装置
CN103823664B (zh) * 2012-11-19 2017-12-15 中兴通讯股份有限公司 一种二进制合一Boot程序及内核程序的设计方法
US20140244932A1 (en) * 2013-02-27 2014-08-28 Advanced Micro Devices, Inc. Method and apparatus for caching and indexing victim pre-decode information
US9348598B2 (en) 2013-04-23 2016-05-24 Arm Limited Data processing apparatus and method for pre-decoding instructions to be executed by processing circuitry
US10606596B2 (en) * 2013-07-15 2020-03-31 Texas Instruments Incorporated Cache preload operations using streaming engine
US9940242B2 (en) * 2014-11-17 2018-04-10 International Business Machines Corporation Techniques for identifying instructions for decode-time instruction optimization grouping in view of cache boundaries
US10761855B2 (en) 2018-05-02 2020-09-01 Micron Technology, Inc. Securing conditional speculative instruction execution
US11275587B2 (en) * 2018-05-02 2022-03-15 Micron Technology, Inc. Static identifications in object-based memory access

Family Cites Families (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5129067A (en) 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
JPH0476626A (ja) * 1990-07-13 1992-03-11 Toshiba Corp マイクロコンピュータ
EP0586057B1 (en) 1992-08-31 2000-03-01 Sun Microsystems, Inc. Rapid instruction (pre)fetching and dispatching using prior (pre)fetch predictive annotations
EP0950946B1 (en) * 1993-11-05 2001-08-16 Intergraph Corporation Software scheduled superscaler computer architecture
GB2290395B (en) 1994-06-10 1997-05-28 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5819056A (en) * 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
US5822559A (en) * 1996-01-02 1998-10-13 Advanced Micro Devices, Inc. Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions
US6085314A (en) * 1996-03-18 2000-07-04 Advnced Micro Devices, Inc. Central processing unit including APX and DSP cores and including selectable APX and DSP execution modes
JP2806359B2 (ja) * 1996-04-30 1998-09-30 日本電気株式会社 命令処理方法及び命令処理装置
EP0833246B1 (en) * 1996-09-27 2014-11-26 Texas Instruments Incorporated A method of producing a computer program
US6064219A (en) * 1997-02-05 2000-05-16 Tektronix, Inc. Modular test chip for multi chip module
US6081864A (en) * 1997-07-31 2000-06-27 Advanced Micro Devices, Inc. Dynamic configuration of a device under test
US6134650A (en) * 1997-12-12 2000-10-17 Advanced Micro Devices, Inc. Apparatus and method for predicting a first scanned instruction as microcode instruction prior to scanning predecode data
US6081884A (en) 1998-01-05 2000-06-27 Advanced Micro Devices, Inc. Embedding two different instruction sets within a single long instruction word using predecode bits
US6430674B1 (en) * 1998-12-30 2002-08-06 Intel Corporation Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time
JP3867427B2 (ja) * 1999-01-11 2007-01-10 ソニー株式会社 プロセッサ装置および集積回路
US6438700B1 (en) * 1999-05-18 2002-08-20 Koninklijke Philips Electronics N.V. System and method to reduce power consumption in advanced RISC machine (ARM) based systems
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つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
US6324643B1 (en) * 1999-10-01 2001-11-27 Hitachi, Ltd. Branch prediction and target instruction control for processor
US6446197B1 (en) * 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6654871B1 (en) * 1999-11-09 2003-11-25 Motorola, Inc. Device and a method for performing stack operations in a processing system
GB2358261B (en) * 2000-01-17 2004-06-09 Advanced Risc Mach Ltd Data processing with native and interpreted program instruction words
US6564208B1 (en) * 2000-02-24 2003-05-13 Inktomi Corporation Delivering non-default items in association with search results
US20020004897A1 (en) * 2000-07-05 2002-01-10 Min-Cheng Kao Data processing apparatus for executing multiple instruction sets
GB2367651B (en) * 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
GB2367653B (en) * 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
US6564298B2 (en) 2000-12-22 2003-05-13 Intel Corporation Front end system having multiple decoding modes
JP3644892B2 (ja) * 2001-01-22 2005-05-11 智原科技股▲ふん▼有限公司 複数組の命令組を実行するためのデータ処理装置
US7093108B2 (en) * 2001-02-01 2006-08-15 Arm Limited Apparatus and method for efficiently incorporating instruction set information with instruction addresses
US7356673B2 (en) * 2001-04-30 2008-04-08 International Business Machines Corporation System and method including distributed instruction buffers for storing frequently executed instructions in predecoded form
GB2376100B (en) * 2001-05-31 2005-03-09 Advanced Risc Mach Ltd Data processing using multiple instruction sets
GB2376097B (en) * 2001-05-31 2005-04-06 Advanced Risc Mach Ltd Configuration control within data processing systems
US7017030B2 (en) * 2002-02-20 2006-03-21 Arm Limited Prediction of instructions in a data processing apparatus
US6816962B2 (en) * 2002-02-25 2004-11-09 International Business Machines Corporation Re-encoding illegal OP codes into a single illegal OP code to accommodate the extra bits associated with pre-decoded instructions
US6978358B2 (en) * 2002-04-02 2005-12-20 Arm Limited Executing stack-based instructions within a data processing apparatus arranged to apply operations to data items stored in registers
GB2390700B (en) * 2002-04-15 2006-03-15 Alphamosaic Ltd Narrow/wide cache
EP1387250B8 (en) * 2002-07-31 2012-02-29 Texas Instruments Inc. Processor that accomodates multiple instruction sets and multiple decode modes
EP1387252B1 (en) * 2002-07-31 2019-02-13 Texas Instruments Incorporated Instruction prefix to indicate system commands
JP4127495B2 (ja) * 2002-09-05 2008-07-30 株式会社ルネサステクノロジ 情報処理装置
GB2393274B (en) * 2002-09-20 2006-03-15 Advanced Risc Mach Ltd Data processing system having an external instruction set and an internal instruction set
WO2004049152A1 (en) * 2002-11-26 2004-06-10 Mplicity Ltd. A processor capable of multi-threaded execution of a plurality of instruction-sets
GB2406684B (en) * 2002-12-12 2005-08-24 Advanced Risc Mach Ltd Processing activity masking in a data processing system
US7484075B2 (en) * 2002-12-16 2009-01-27 International Business Machines Corporation Method and apparatus for providing fast remote register access in a clustered VLIW processor using partitioned register files
US7080242B2 (en) * 2002-12-19 2006-07-18 Hewlett-Packard Development Company, L.P. Instruction set reconciliation for heterogeneous symmetric-multiprocessor systems
US6952754B2 (en) 2003-01-03 2005-10-04 Intel Corporation Predecode apparatus, systems, and methods
GB2402757B (en) * 2003-06-11 2005-11-02 Advanced Risc Mach Ltd Address offset generation within a data processing system
GB2402764B (en) * 2003-06-13 2006-02-22 Advanced Risc Mach Ltd Instruction encoding within a data processing apparatus having multiple instruction sets
US7707389B2 (en) * 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
US7441329B2 (en) * 2004-06-07 2008-10-28 Subtron Technology Co. Ltd. Fabrication process circuit board with embedded passive component
US7328332B2 (en) * 2004-08-30 2008-02-05 Texas Instruments Incorporated Branch prediction and other processor improvements using FIFO for bypassing certain processor pipeline stages
JP2006160200A (ja) * 2004-12-10 2006-06-22 Tkj Kk 乗員保護装置、乗員保護装置付車両
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
US7234043B2 (en) * 2005-03-07 2007-06-19 Arm Limited Decoding predication instructions within a superscaler data processing system
US7769983B2 (en) * 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
US7589406B2 (en) * 2005-06-27 2009-09-15 Micron Technology, Inc. Stacked semiconductor component
US7622309B2 (en) * 2005-06-28 2009-11-24 Freescale Semiconductor, Inc. Mechanical integrity evaluation of low-k devices with bump shear
US20070051949A1 (en) * 2005-09-06 2007-03-08 Peter Schneider Method and arrangment for testing a stacked die semiconductor device
US20070113055A1 (en) * 2005-11-15 2007-05-17 Dale Jason N Apparatus and method for improving single thread performance through speculative processing
US7353363B2 (en) * 2006-03-03 2008-04-01 Microsystems, Inc. Patchable and/or programmable decode using predecode selection
US7962725B2 (en) * 2006-05-04 2011-06-14 Qualcomm Incorporated Pre-decoding variable length instructions
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
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
US7925866B2 (en) * 2008-01-23 2011-04-12 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry

Also Published As

Publication number Publication date
US7711927B2 (en) 2010-05-04
JP2010521748A (ja) 2010-06-24
US8145883B2 (en) 2012-03-27
JP5528819B2 (ja) 2014-06-25
CN101627366B (zh) 2014-03-12
US20100169615A1 (en) 2010-07-01
CN101627366A (zh) 2010-01-13
JP2014194783A (ja) 2014-10-09
WO2008113007A1 (en) 2008-09-18
EP2137611B1 (en) 2014-03-05
US20080229069A1 (en) 2008-09-18
EP2137611A1 (en) 2009-12-30
KR101099302B1 (ko) 2011-12-26
KR20090122285A (ko) 2009-11-26

Similar Documents

Publication Publication Date Title
JP5837126B2 (ja) 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
CN111124498A (zh) 用于推测执行侧信道缓解的装置和方法
EP2018609B1 (en) Pre-decoding variable length instructions
KR101081623B1 (ko) 적절한 프리-디코딩을 이용하여 가변-길이 명령 세트로부터의 명령들을 프리로딩하기 위한 시스템, 방법 및 소프트웨어
US6119222A (en) Combined branch prediction and cache prefetch in a microprocessor
US7890702B2 (en) Prefetch instruction extensions
US5822778A (en) Microprocessor and method of using a segment override prefix instruction field to expand the register file
JP5027669B2 (ja) マイクロプロセッサ、集積回路、システム及び方法
US5768574A (en) Microprocessor using an instruction field to expand the condition flags and a computer system employing the microprocessor
US6275927B2 (en) Compressing variable-length instruction prefix bytes
US20090006803A1 (en) L2 Cache/Nest Address Translation
US7680985B2 (en) Method and apparatus for accessing a split cache directory
CN104657110B (zh) 具有固定数量的可变长度指令的指令高速缓存器
JPH10177481A (ja) 改善された分岐予測機能を有するマイクロプロセッサ及びその動作方法
US7937530B2 (en) Method and apparatus for accessing a cache with an effective address
US5958045A (en) Start of access instruction configured to indicate an access mode for fetching memory operands in a microprocessor
JP2021174513A (ja) データ依存脆弱分岐の機会主義的再誘導のための命令セットアーキテクチャベース自動負荷追跡
EP0834118B1 (en) Microprocessor using instruction field to specify expanded functionality and corresponding method
WO2009000702A1 (en) Method and apparatus for accessing a cache
CN115858022A (zh) 集群化解码管线的可缩放切换点控制电路系统
CN113568663A (zh) 代码预取指令

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150526

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150826

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151104

R150 Certificate of patent or registration of utility model

Ref document number: 5837126

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