JP5248313B2 - 複数の状態のプロセッサのための命令のキャッシング - Google Patents

複数の状態のプロセッサのための命令のキャッシング Download PDF

Info

Publication number
JP5248313B2
JP5248313B2 JP2008512599A JP2008512599A JP5248313B2 JP 5248313 B2 JP5248313 B2 JP 5248313B2 JP 2008512599 A JP2008512599 A JP 2008512599A JP 2008512599 A JP2008512599 A JP 2008512599A JP 5248313 B2 JP5248313 B2 JP 5248313B2
Authority
JP
Japan
Prior art keywords
processor
state
instruction
cache
predecoded
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
JP2008512599A
Other languages
English (en)
Other versions
JP2008541313A (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 JP2008541313A publication Critical patent/JP2008541313A/ja
Application granted granted Critical
Publication of JP5248313B2 publication Critical patent/JP5248313B2/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/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/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

発明の分野
本開示は、概ね、処理システム、より具体的には、複数の状態のプロセッサ(multiple-state processor)のための命令のキャッシングに関する。
発明の背景
コンピュータは、一般に、メモリによって支援されているプロセッサを使用する。メモリは、プロセッサによってその機能を行うのに必要とされるプログラムおよびデータを保持する記憶媒体である。最近、より強力なソフトウェアプログラムの到来で、メモリに対する要求は、驚異的な速さで高まってきている。その結果、現代のプロセッサは大量のメモリを必要とし、大量のメモリは、より小さいメモリよりも、本質的により低速である。今日のプロセッサを支援することができる速度をもつ大型メモリは、大規模な市販用に応用するには、過度にひどくコスト高である。
コンピュータの設計者は、メモリを幾つかの階層的な構成要素に編成することによって、この問題に対処した。容量の点で最も大きい構成要素は、通常、ハードドライブである。ハードドライブは、大量のコスト安の永久メモリ(permanent memory)を与える。基本入出力システム(basic input/output system, BIOS)およびオペレーティングシステムは、通常ハードドライブ上に記憶されるプログラムのほんの幾つかの例である。コンピュータが動作可能であるとき、これらのプログラムは、ランダム アクセス メモリ(Random Access Memory, RAM)へロードされ得る。ユーザによって起動されるソフトウェアアプリケーションも、ハードドライブからRAMへロードされ得る。RAMは、プロセッサが情報により即座にアクセスすることを可能にする一時記憶装置である。
コンピュータのRAMは、それでもまだプロセッサに遅れずについていくのに十分に速くはない。これは、プログラム命令およびデータがRAMに書き込まれ、そこから読み出されるのを、プロセッサが待つことを必要とし得ることを意味する。キャッシュは、プロセッサによって最も頻繁に使用される情報を即座に使用可能にすることによって、メモリアクセスの速度を高めるのに使用されている。これは、一次またはレベル1(Level 1, L1)のキャッシュとして知られている小量のメモリを、プロセッサへ統合することによって達成される。RAMとL1キャッシュとの間の二次またはレベル2(Level 2, L2)キャッシュも、幾つかのコンピュータの応用において使用され得る。
コンピュータの速度は、命令を、キャッシュに入れる前に部分的にデコードすることによって、さらに改善され得る。このプロセスは、しばしば“プリデコーディング(pre-decoding)”と呼ばれ、命令と共にキャッシュに記憶されることができる幾らかの“プリデコード情報”を生成することを必要とする。プリデコード情報は、命令の幾つかの基本的側面、例えば、命令が、演算(arithmetic)命令であるか、または記憶命令であるか、命令がブランチ命令であるか、命令がメモリを参照するか、あるいはデコード論理の複雑さを低減するためにプロセッサによって使用され得る任意の他の情報を示す。命令をプリデコードすることは、プロセッサの性能を、それが動作する頻度を低減することなく、機械のパイプラインの長さを短くすることによって改善する。
複数の状態において動作することができるプロセッサは、今日出現しつつある技術にとって一般的になってきている。“複数の状態のプロセッサ(multiple state processor)”は、2つ以上の異なる命令セットを支援することができるプロセッサを意味する。アドバンスRISCマシン(Advance RISC Machine, ARM)プロセッサは、単なる一例である。ARMプロセッサは、効率的で低電力のRSICプロセッサであり、移動体の応用、例えば、単に幾つかの名前を挙げると、移動電話、パーソナル ディジタル アシスタント(personal digital assistant, PDA)、ディジタルカメラ、およびゲーム機において今日一般に使用されている。ARMプロセッサは、歴史的に、2つの命令セット、すなわち、全ての命令が32ビット長であるARM命令セットと、最もよく使用されている命令を16ビットのフォーマットに圧縮するサム命令セット(Thumb instruction set)とを支援してきた。幾つかのARMプロセッサに最近加えられた第3の命令セットは、“サム2実行環境”(Thumb-2 Execution Environment, T2EE)である。T2EEは、(サム(Thumb)に似た)命令セットであって、バイトコード言語、例えば、Java(登録商標)およびNETに対する動的な(JIT)コンパイルターゲット(compilation target)として最適化される命令セットである。
これらの複数の状態のプロセッサは、今日のコンピューティングシステムの能力を相当に向上したが、コンピュータの設計者に独特な問題を提起した。例えば、L1命令キャッシュ内の1本のライン(line)のサイズの命令のブロックが、複数の命令セットからの命令を含んでいるとき、全キャッシュラインが1つの状態の命令を含んでいると仮定して計算されたプリデコード情報は、実際は別の状態である命令に使用することができない。この開示に記載されている解決案は、サム(Thumb)またはT2EE、あるいはこの両者の能力をもつARMプロセッサに制限されず、複数の命令セットの命令を、命令のエンコーディングを重複させて、それらをキャッシュに入れる前に、プリデコードする任意のシステムに適用され得る。
発明の概要
本発明の1つの態様は、プロセッサを操作する方法に関する。プロセッサは異なる状態において動作することができ、各状態は異なる命令セットを支援する。方法は、プロセッサが状態の1つにおいて動作している一方で、メモリから命令のブロックを検索することと、前記状態の1つにしたがって命令をプリデコードすること、プリデコードされた命令をキャッシュにロードすることと、キャッシュ内のプリデコードされた命令の1つがプロセッサによって要求されると、プロセッサの現在の状態が、命令をプリデコードするのに使用された前記状態の1つと同じであるかどうかを判断することとを含む。
本発明の別の態様は、処理システムに関する。処理システムは、メモリと、キャッシュと、異なる状態において動作することができるプロセッサであって、状態の各々が異なる命令セットを支援し、状態の1つにおいて動作している一方で、メモリから命令のブロックを検索するようにさらに構成されているプロセッサと、前記状態の1つにしたがって、メモリから検索された命令をプリデコードするように構成されたプリデコーダとを含み、プロセッサは、プリデコードされた命令をキャッシュにロードし、キャッシュ内のプリデコードされた命令の1つがプロセッサによって要求されると、その現在の状態が、命令をプリデコードするのに使用された前記状態の1つと同じであるかどうかを判断するようにさらに構成されている。
本発明の他の実施形態は、本発明の種々の実施形態が例示的に示され、記載されている次の詳細な説明から、当業者には容易に明らかになるであろうと理解される。認識されることになるように、本発明は、他および異なる実施形態が可能であり、その幾つかの細部は、本発明の意図および範囲から全く逸脱しないならば、種々の他の点において変更することができる。したがって、図面および詳細な説明は、本質的に例示的であって、限定的ではないと考えられる。
好ましい実施形態の詳細な説明
本発明の態様は、添付の図面において、制限的にではなく、例示的に示されている。
添付の図面に関連して次に記載される詳細な説明は、本発明の種々の実施形態の説明として意図されており、本発明が実行され得る唯一の実施形態を表わすことを意図されていない。詳細な説明は、本発明を完全に理解させるために、具体的な詳細を含んでいる。しかしながら、当業者には、本発明が、これらの具体的な詳細がなくても実行され得ることが明らかであるだろう。幾つかの例において、本発明の概念を不明瞭にするのを避けるために、周知の構造および構成要素がブロック図の形で示されている。
図1は、情報を処理、検索、および記憶することができるコンピュータ100または他の処理システムの例を示す概念ブロック図である。コンピュータ100は、スタンドアロン型の構成要素であるか、またはその代わりに、デバイス、例えば、移動電話、PDA、ディジタルカメラ、ゲーム機、または任意の他の適切なデバイスに埋め込まれ得る。コンピュータ100は、プロセッサ102、例えば、マイクロプロセッサまたは他の処理エンティティを含み得る。コンピュータ100の1つの実施形態において、プロセッサ102は、業界では一般にARMプロセッサと呼ばれている32ビットの埋め込みRSICマイクロプロセッサである。ARMプロセッサは、無線、消費者、画像化、自動車、産業、およびネットワーキングの応用に対する複雑なオペレーティングシステムを実行するプラットフォームとして、一般に使用されている。多くのARMプロセッサに含まれているのは、よく使用されている32ビットのARM命令を16ビットの形式に圧縮するサム命令セット(Thumb instruction set)である。ARMは、32ビットの命令もサム(Thumb)に加えた。サム命令セットは、コード密度が要求されるときに使用することができる32ビットのARM命令のサブセットの省略表現である。この開示の背景の部分に示されているように、ARMプロセッサは、T2EEも実行し得る。
コンピュータ100はメモリ104も含み得る。メモリ104は、プロセッサ102によってその機能を行うために必要とされるプログラム命令およびデータを保持する。メモリ104は、RAMまたは他の適切なメモリで実施され、コンピュータのメインメモリ、およびオプションでL2キャッシュから構成され得る。命令キャッシュ106は、プロセッサ102とメモリ104との間で使用され得る。命令キャッシュ106は、プロセッサ102によって実行されるメモリ104からのプログラム命令の一時記憶装置に使用される比較的に小さい高速のL1キャッシュである。コンピュータ100の1つの実施形態において、命令キャッシュ106は、メモリ104に使用され得るより低速でよりコスト安のダイナミックRAM(dynamic RAM, DRAM)ではなく、高速のスタティックRAM(static RAM, SRAM)である。大抵のプログラムは同じ命令に繰り返しアクセスするので、命令キャッシュ106は、プロセッサのアクセス速度を高める機構を与える。この情報をできるだけ多く命令キャッシュ106に保持することによって、プロセッサ102は、より低速のメモリ104にアクセスする必要を回避する。コンピュータ100は、命令の実行に使用されるデータの記憶装置としてデータキャッシュ(図示されていない)をさらに含み得る。
命令キャッシュ106は、プロセッサ102によってメモリ104から一番最近アクセスされた命令の記憶装置を与える。プロセッサ102は、メモリ104から命令を要求するとき、先ず、命令キャッシュ106を調べ、命令がそこにあるかどうかを確かめる。プロセッサ102によって要求された命令が、命令キャッシュ106内で見付かったときは、ルックアップは“キャッシュヒット”と呼ばれる。キャッシュヒットのときは、命令は、命令キャッシュ106から直接に検索され、したがって、命令が処理され得る速度を大幅に高め得る。プロセッサ102によって要求された命令が、命令キャッシュ106内で見付からないときは、“キャッシュミス”になる。キャッシュミスのときは、プロセッサ102は、要求した命令をメモリ104からフェッチしなければならず、これは、命令キャッシュ106から命令をフェッチするよりも、相当により長く時間がかかる。通常、プロセッサ102はメモリ104から“キャッシュライン”をフェッチする。メモリ104からのキャッシュラインは、将来のアクセスのために、命令キャッシュ106に記憶され得る。
メモリ104からの命令を命令キャッシュ106に入れる前に、プリデコードすることによって、コンピュータの性能はさらに向上し得る。命令がメモリ104からフェッチされると、プリデコーダ108はそれらを取り込んで、プロセッサ102の動作状態にしたがって、それらをプリデコードし、プリデコード情報を命令キャッシュ106に記憶する。プロセッサ102からのシグナリングは、プリデコーディング動作のためにプロセッサ102の現在の動作状態を示すのに使用され得る。
図2は、プリデコーダの例を示す機能ブロック図である。プリデコーダ108は、メモリ104(図1参照)からキャッシュラインにおいて命令を受信する入力レジスタ202を含んでいる。複数の状態のプロセッサの場合には、2つのプリデコーダが、各プロセッサの状態204a、204bに対して1つずつ使用され得る。入力レジスタ202内の命令は、プリデコーダ204a、204bに与えられ、各命令に対するプリデコード情報を生成し得る。マルチプレクサ206は、プロセッサ102(図1参照)からのシグナリングに基づいて、適切なプリデコーディング情報を選択するのに使用され得る。プリデコーダ108の幾つかの実施形態において、プリデコーダ204a、204bへの入力はゲート制御され、プロセッサ102によって選択されたプリデコーダのみをイネーブルすることによって、電力を節約し得る。レジスタ202からの各命令は、マルチプレクサ206からの対応するプリデコード情報とともに、出力レジスタ208に入れられ得る。出力レジスタの内容は、プロセッサ102および命令キャッシュ106(図1参照)の両者に読み込まれ得る。
図3Aは、1つの命令302がそのプリデコード情報304と共に命令キャッシュ106にどのように記憶されるかを示している。図3Bは、8個の命令を含む全キャッシュラインが命令キャッシュ106にどのように記憶されるかを示している。この例において、各命令302aないし302hは、その末尾に、そのプリデコード情報304aないし304hを付加している。プリデコーディング情報は、特定の応用および全体的な設計の制約に応じて、任意の数のビットであり得る。さらに、8個の命令を使用して、キャッシュラインを説明しているのは、各キャッシュラインがあらゆる数の命令を保持し得るという了解のもとで、単なる一例として与えられている。
命令キャッシュ106は、キャッシュディレクトリ(図示されていない)を維持している。キャッシュディレクトリは、各キャッシュラインに対して、1つのエントリまたは“タグ”を含んでいる。1対1のマッピングが、キャッシュ記憶装置の配列において、キャッシュ ディレクトリ タグと、タグと関連付けられるキャッシュラインとの間に存在する。キャッシュ ディレクトリ タグは、キャッシュライン内の第1の命令のメモリアドレスを含んでいる。プロセッサ102(図1参照)は、キャッシュディレクトリを、そのメモリアドレスをもつタグについてサーチすることによって、命令をフェッチする。整合は、キャッシュヒットを示す。整合したキャッシュ ディレクトリ タグは、何れのキャッシュラインが要求された命令を含んでいるかを決める。次に、プロセッサは、命令およびそのプリデコード情報にアクセスし得る。プロセッサが整合を見付けることができないとき(すなわち、キャッシュミス)、プロセッサは、メモリ104(図1参照)からキャッシュラインを読み出すことを試みる。メモリから検索されたキャッシュラインは、プリデコードされ、命令キャッシュ106に入れられる。さらに、1つ以上の命令が、即時のデコーディングおよび実行のために、プロセッサ102に直接にロードされ得る。キャッシュディレクトリは更新され、プロセッサ102が、将来アクセスするときに、キャッシュ記憶装置の配列内においてキャッシュラインが存在する場所を判断することができる。
図1の処理システムにおいて、複数の状態のプロセッサ102が使用されるとき、複数の命令セットがメモリ104内に存在し得る。これらの複数の状態の処理環境では、メモリ104から検索されたキャッシュラインは、プロセッサの複数の状態に対する命令を含み得る。キャッシュライン内の各命令は、プロセッサ102の現在の状態に基づいてプリデコードされるが、全キャッシュラインは、一度にプリデコードされる。例えば、プロセッサ102が、メモリ104からキャッシュラインを検索するときに、特定の状態で動作している場合、キャッシュラインに含まれている全命令は、命令キャッシュ106に入れられる前に、それらがその状態の命令であるかのように、プリデコードされる。このプリデコーディングのために、プロセッサ102が異なる状態であるとき、命令キャッシュ106へ後でアクセスすると、適切に実行することができない。
命令キャッシュ106から検索された各命令が、プロセッサ102によって正しくないプリデコード情報と共に実行されないことを保証するために、幾つかの技術が処理システム100によって使用され得る。1つの可能な解決案では、“状態情報”をプリデコードされた命令と共に各キャッシュラインに記憶する。“状態情報”は、関連付けられたキャッシュラインがプリデコードされたときに、プロセッサ102がどの状態であったかを示す1つ以上のビットとして定義される。図3Cは、8個のプリデコードされた命令を含む全キャッシュラインが、状態情報と共にどのように記憶されるかを示している。図3Bと同様に、各命令302aないし302hは、その末尾に、そのプリデコーディング情報304aないし304hを付加している。しかしながら、図3Bに示されていることに加えて、2ビットの状態情報306が、キャッシュラインの最初に含まれている。2ビットの状態情報は、4つまでの異なる動作状態を与える。当業者は、他の応用において、必要な数のプロセッサの状態を支援するのに必要なビット数を容易に判断することができるであろう。
図4は、状態情報をプリデコードされた命令と共に使用して、特定の命令に対するプリデコーディング情報が正しいかどうかを判断する複数の状態のプロセッサの動作を示すフローチャートである。ステップ402において、プロセッサは、要求した命令の仮想アドレスをメモリアドレスに変換する。次に、プロセッサは、ステップ402のメモリアドレスに対するキャッシュ ディレクトリ内のタグをサーチする。サーチ結果は、キャッシュヒットまたはキャッシュミスである。キャッシュミスのときは、ステップ406において、プロセッサは、メモリから命令を検索することを試みる。キャッシュヒットのときは、ステップ408において、プロセッサは、命令キャッシュから命令を検索し、ステップ410において、対応する状態情報を、プロセッサの現在の状態と比較する。プロセッサの現在の状態が、命令の状態情報と整合すると、ステップ412において、プロセッサは、プリデコード情報を使用して、命令をデコードし、実行する。そうでなければ、プロセッサは、ステップ412において命令をデコードし、実行する前に、ステップ414において、命令をプリデコードする。
別の可能な解決案では、各キャッシュ ディレクトリ タグ内に状態情報を含む。図5は、状態情報がキャッシュディレクトリ内のタグにどのように追加され得るかを示している。キャッシュディレクトリ502は、複数のタグ504をもっているように示されており、各タグは、キャッシュ記憶装置の配列内のキャッシュラインに対応する。キャッシュ ディレクトリ タグ504は、アドレスフィールド506と状態フィールド508とを含んでいる。アドレスフィールド506は、キャッシュライン内の第1の命令のメモリアドレスを含み、状態フィールド508は、キャッシュラインがプリデコードされたときのプロセッサの状態を識別する状態情報を含んでいる。
図6は、キャッシュ ディレクトリ タグ内の状態情報を使用して、特定の命令のプリデコーディング情報が正しいかどうかを判断する複数の状態のプロセッサの動作を示すフローチャートである。ステップ602において、プロセッサは、要求された計算を行って、キャッシュのルックアップを行うのに使用されるアドレスを生成する。ステップ604において、プロセッサは、プロセッサの現在の状態に対応するメモリアドレスに状態情報を追加する。状態情報と組み合わされたメモリアドレスが、タグを形成する。次に、ステップ606において、プロセッサによって形成されたタグが、キャッシュディレクトリ内のタグと比較される。この場合に、キャッシュヒットは、プロセッサによって要求された命令が、命令キャッシュ内にあるだけでなく、プリデコードされた命令が、プロセッサによってその現在の状態で実行できることも意味する。キャッシュヒットのときは、ステップ608において、プロセッサは命令を検索し、ステップ610において、プリデコーディング情報を使用して、命令をデコードし、実行する。キャッシュミスのときは、ステップ612において、プロセッサは、メモリから、要求した命令をもつキャッシュラインを検索し、ステップ614において、キャッシュラインのプリデコードを開始し、ステップ610において、プリデコード情報を使用して、命令をデコードし、実行する。ステップ616において、プロセッサは、プリデコードされたキャッシュラインを命令キャッシュに記憶し、そのタグを、アドレスおよび状態情報に関して更新する。その結果、メモリのブロックの複数のコピーが、異なるキャッシュラインにおいて命令キャッシュ内に存在することができる。これらのコピーの各々に存在する命令は、異なる状態においてプリデコードされ、キャッシュの1回のルックアップは、複数のキャッシュヒットを返さない。
本明細書に開示されている実施形態に関連して記載された種々の例示的な論理ブロック、モジュール、回路、素子、および/または構成要素は、汎用プロセッサ、ディジタル信号プロセッサ(digital signal processor, DSP)、特定用途向け集積回路(application specific integrated circuit, ASIC)、フィールド プログラマブル ゲート アレイ(field programmable gate array, FPGA)または他のプログラマブル論理構成要素、ディスクリートなゲートまたはトランジスタ論理、ディスクリートなハードウェア構成要素、あるいは本明細書に記載されている機能を実行するように設計された任意の組合せで実施または実行され得る。汎用プロセッサはマイクロプロセッサであってもよいが、その代わりに、プロセッサは任意の従来のプロセッサ、制御装置、マイクロコントローラ、または状態機械であってもよい。プロセッサは、コンピューティング構成要素の組合せ、例えば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPのコアと関連する1つ以上のマイクロプロセッサ、または任意の他のこのような構成としても実施され得る。
本明細書に開示されている実施形態に関連して記載された方法またはアルゴリズムは、ハードウェアにおいて、プロセッサによって実行されるソフトウェアモジュールにおいて、または2つの組合せにおいて直接的に具体化され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、取り外し可能ディスク、CD−ROM、または技術的に知られている記憶媒体の任意の他の形態の中に存在し得る。記憶媒体がプロセッサに接続されると、プロセッサは記憶媒体から情報を読み出し、そこへ情報を書き込むことができる。その代りに、記憶媒体は、プロセッサと一体構成であってもよい。
開示された実施形態のこれまでの記述は、当業者が本発明を作成または使用できるようにするために与えられている。これらの実施形態に対する種々の変更は、当業者には、容易に明らかになり、本明細書に定義されている一般的な原理は、本発明の意図および範囲から逸脱することなく、他の実施形態に適用され得る。したがって、本発明は、本明細書に示されている実施形態に制限されることを意図されず、請求項にしたがう全範囲にしたがい、要素を単数形で記載していることは、“1つおよび1つのみ”であると具体的に記載されていないならば、そのような意味をもつことを意図されていない。当業者に知られている、または知られることになる本開示の全体を通して記載されている種々の実施形態の要素に対して構造的および機能的に同等のものの全ては、請求項に含まれることを意図されている。さらに加えて、本明細書の開示は、そのような開示が請求項に明示的に記載されているかどうかに関わらず、公に供されることを意図されていない。請求項の要素は、その要素が“〜のための手段(means for)”という語句を使用して、または方法の請求項の場合は、“〜のためのステップ(step for)”という語句を使用して明示的に記載されていないならば、米国特許法第112条第6項の条項のもとで解釈されない。
処理システムの例を示す機能ブロック図。 プリデコーダの例を示す機能ブロック図。 キャッシュ内の命令のデータ構造を示す図。 キャッシュラインのデータ構造を示す図。 キャッシュラインのデータ構造を状態情報と共に示す図。 複数の状態のプロセッサの1つの実施形態の動作を示すフローチャート。 キャッシュ ディレクトリ タグのデータ構造を状態情報と共に示す図。 複数の状態のプロセッサの別の実施形態の動作を示すフローチャート。
符号の説明
206・・・マルチプレクサ、208・・・出力レジスタ、302aないし302h・・・命令、304aないし304h・・・プリデコード情報、504・・・タグ、506・・・アドレスフィールド、508・・・状態フィールド。

Claims (14)

  1. 複数の状態において動作することができるプロセッサを操作する方法であって、プロセッサは、同時に1つの状態においてのみ動作し、
    プロセッサが第1の状態において動作している一方で、メモリから命令のブロックの第1のコピーを検索することと、
    プロセッサの前記第1の状態にしたがって、前記命令のブロックの前記第1のコピーを第1のプリデコーダによってプリデコードし、第1のプリデコードされた命令を生成することと、
    前記第1のプリデコードされた命令をキャッシュにロードすることと、
    前記第1のプリデコードされた命令に関連する状態情報をキャッシュにロードすることと、前記状態情報は、前記第1のプリデコードされた命令がプロセッサの前記第1の状態にしたがってプリデコードされたことを示し、
    キャッシュ内の前記第1のプリデコードされた命令の1つのプリデコードされた命令が、プロセッサによって要求されると、プロセッサの現在の状態をキャッシュにロードされた状態情報と比較することにより、プロセッサの現在の状態が、プロセッサの前記第1の状態と同じプロセッサの状態であるかどうかを判断することと、
    キャッシュから前記1つのプリデコードされた命令を検索することと、
    プロセッサの現在の状態が、プロセッサの前記第1の状態と異なるとき、プロセッサの現在の状態にしたがって、前記1つのプリデコードされた命令を第2のプリデコーダによってプリデコードすることと、
    前記1つのプリデコードされた命令を実行することとを含む方法。
  2. プロセッサの現在の状態とキャッシュ内の状態情報との比較が、プロセッサの現在の状態が、プロセッサの前記第1の状態であることを示すとき、前記1つのプリデコードされた命令を実行することをさらに含む請求項1記載の方法。
  3. キャッシュが、前記第1のプリデコードされた命令と関連付けられた第1のタグを含み、前記第1のタグは、プロセッサによって要求された前記1つのプリデコードされた命令がキャッシュ内にあるかどうかを判断するために、プロセッサによって使用され、方法は、状態情報を前記第1のタグに追加することをさらに含む、請求項1記載の方法。
  4. 前記比較が、プロセッサの現在の状態が、前記第1の状態であることを示すとき、前記1つのプリデコードされた命令をキャッシュから検索することをさらに含む請求項1記載の方法。
  5. メモリと、
    キャッシュと、
    同時に複数の状態の1つの状態においてのみ動作するプロセッサであって、前記プロセッサは、第1の状態において動作している一方で、メモリから命令のブロックの第1のコピーを検索するプロセッサと、
    プロセッサの前記第1の状態にしたがって、前記命令のブロックの前記第1のコピーの各命令をプリデコードする第1のプリデコーダとを含み、
    プロセッサが、前記第1のプリデコードされた命令をキャッシュにさらにロードし、
    プロセッサが、前記第1のプリデコードされた命令に関連する状態情報をキャッシュにさらにロードすることと、前記状態情報は、前記第1のプリデコードされた命令の各命令がプロセッサの前記第1の状態にしたがってプリデコードされたことを示し、
    キャッシュ内の前記第1のプリデコードされた命令の1つのプリデコードされた命令が、プロセッサによって要求されると、プロセッサは、プロセッサの状態が、前記第1の状態であるかどうかを判断し、前記判断は、プロセッサの前記状態をキャッシュ内の前記状態情報と比較することにより行われ、
    プロセッサの前記状態が、プロセッサの前記第1の状態と異なるとき、プロセッサはキャッシュから前記1つのプリデコードされた命令を検索し、前記1つのプリデコードされた命令を実行する前に、プロセッサの前記状態にしたがって、前記1つのプリデコードされた命令を第2のプリデコーダによってプリデコードする処理システム。
  6. プロセッサの前記状態とキャッシュ内の状態情報との比較が、プロセッサの前記状態が、プロセッサの前記第1の状態と同じであることを示すとき、プロセッサは、キャッシュから前記1つのプリデコードされた命令を検索し、前記1つのプリデコードされた命令をデコードおよび実行するようにさらに構成されている請求項5記載の処理システム。
  7. メモリと、
    キャッシュと、
    異なる状態において動作することができるプロセッサと、プロセッサは、第1の状態において動作している一方で、メモリから命令のブロックを検索し、前記命令のブロックは少なくとも2つの異なる命令のセットからの命令を含み、プロセッサは、プロセッサがプロセッサの前記第1の状態とは異なる状態で動作しているかどうかをさらに判断し、
    プロセッサが前記第1の状態で動作しているときに前記命令のブロックをプリデコードし、前記プリデコードされた命令のブロックを関連する状態情報と一緒にキャッシュ内に記憶する第1のプリデコーダと、前記状態情報は前記第1のプリデコードされた命令のブロックの各命令がプロセッサの前記第1の状態にしたがってプリデコードされたことを示し、
    プロセッサが前記第1の状態とは異なる状態で動作しているときにキャッシュ内に記憶された前記プリデコードされた命令のブロックからの要求されたプリデコードされた命令をプリデコードする第2のプリデコーダと、前記判断はプロセッサの前記状態をキャッシュ内にロードされた状態情報と比較することにより行われる、
    を含む処理システム。
  8. プロセッサの前記異なる状態は、サム2実行環境(T2EE)状態を含む請求項7の処理システム。
  9. プロセッサが、プロセッサの前記現在の状態が、プロセッサの前記第1の状態と同じであることを判断したとき、プロセッサは、キャッシュ内の前記1つのプリデコードされた命令を実行するようにさらに構成されている請求項5記載の処理システム。
  10. プロセッサの前記動作状態の1つが、サム2実行環境(T2EE)状態である請求項5の処理システム。
  11. プロセッサは前記1つのプリデコードされた命令を実行する前に前記1つの命令をデコードするようにさらに構成されている請求項5の処理システム。
  12. プロセッサの前記状態の1つが、サム2実行環境(T2EE)状態である請求項1の方法
  13. 前記状態情報がキャッシュラインの最初に位置する2つのデータビットに記憶される請求項1の方法。
  14. 前記1つのプリデコードされた命令を実行する前に前記1つのプリデコードされた命令をデコードすることをさらに含む請求項1の方法。
JP2008512599A 2005-05-18 2006-05-18 複数の状態のプロセッサのための命令のキャッシング Expired - Fee Related JP5248313B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/132,748 2005-05-18
US11/132,748 US7769983B2 (en) 2005-05-18 2005-05-18 Caching instructions for a multiple-state processor
PCT/US2006/019788 WO2006125219A2 (en) 2005-05-18 2006-05-18 Caching instructions for a multiple-state processor

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2013000257A Division JP2013117974A (ja) 2005-05-18 2013-01-04 複数の状態のプロセッサのための命令のキャッシング

Publications (2)

Publication Number Publication Date
JP2008541313A JP2008541313A (ja) 2008-11-20
JP5248313B2 true JP5248313B2 (ja) 2013-07-31

Family

ID=37025156

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2008512599A Expired - Fee Related JP5248313B2 (ja) 2005-05-18 2006-05-18 複数の状態のプロセッサのための命令のキャッシング
JP2013000257A Pending JP2013117974A (ja) 2005-05-18 2013-01-04 複数の状態のプロセッサのための命令のキャッシング

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2013000257A Pending JP2013117974A (ja) 2005-05-18 2013-01-04 複数の状態のプロセッサのための命令のキャッシング

Country Status (8)

Country Link
US (1) US7769983B2 (ja)
EP (1) EP1886217B1 (ja)
JP (2) JP5248313B2 (ja)
KR (1) KR101039018B1 (ja)
CN (1) CN101223504B (ja)
IL (1) IL187462A0 (ja)
MX (1) MX2007014522A (ja)
WO (1) WO2006125219A2 (ja)

Families Citing this family (14)

* 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
US9075622B2 (en) * 2008-01-23 2015-07-07 Arm Limited Reducing errors in pre-decode caches
US8347067B2 (en) * 2008-01-23 2013-01-01 Arm Limited Instruction pre-decoding of multiple instruction sets
US7747839B2 (en) * 2008-01-23 2010-06-29 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
US7925867B2 (en) * 2008-01-23 2011-04-12 Arm Limited Pre-decode checking for pre-decoded instructions that cross cache line boundaries
US7925866B2 (en) * 2008-01-23 2011-04-12 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
US7917735B2 (en) * 2008-01-23 2011-03-29 Arm Limited Data processing apparatus and method for pre-decoding instructions
US8037286B2 (en) * 2008-01-23 2011-10-11 Arm Limited Data processing apparatus and method for instruction pre-decoding
GB2460280A (en) 2008-05-23 2009-11-25 Advanced Risc Mach Ltd Using a memory-abort register in the emulation of memory access operations
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
US20140244932A1 (en) * 2013-02-27 2014-08-28 Advanced Micro Devices, Inc. Method and apparatus for caching and indexing victim pre-decode information
CN104765699B (zh) * 2014-01-02 2018-03-27 光宝科技股份有限公司 处理系统及其操作方法
CN109101276B (zh) * 2018-08-14 2020-05-05 阿里巴巴集团控股有限公司 在cpu中执行指令的方法

Family Cites Families (44)

* 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 マイクロコンピュータ
DE69327927T2 (de) * 1992-08-31 2000-10-12 Sun Microsystems Inc Schnelles Vorausholen und Zuteilung von Befehlen mittels vorausschauender Anmerkungen von früher vorausgeholten
GB2307072B (en) * 1994-06-10 1998-05-13 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
EP0833246B1 (en) * 1996-09-27 2014-11-26 Texas Instruments Incorporated A method of producing a computer program
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
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
JP2001142692A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
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
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
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
GB2376097B (en) * 2001-05-31 2005-04-06 Advanced Risc Mach Ltd Configuration control within data processing systems
GB2376100B (en) * 2001-05-31 2005-03-09 Advanced Risc Mach Ltd Data processing using multiple instruction sets
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
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
AU2003282365A1 (en) * 2002-11-26 2004-06-18 Mplicity Ltd. A processor capable of multi-threaded execution of a plurality of instruction-sets
GB2406943B (en) * 2002-12-12 2005-10-05 Advanced Risc Mach Ltd Processing activity masking in a data processing system
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
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
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
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
MX2007014522A (es) 2008-02-07
EP1886217A2 (en) 2008-02-13
JP2008541313A (ja) 2008-11-20
IL187462A0 (en) 2008-03-20
KR20080015016A (ko) 2008-02-15
WO2006125219A2 (en) 2006-11-23
JP2013117974A (ja) 2013-06-13
CN101223504A (zh) 2008-07-16
WO2006125219A3 (en) 2007-03-29
KR101039018B1 (ko) 2011-06-03
US20060265573A1 (en) 2006-11-23
CN101223504B (zh) 2012-11-14
EP1886217B1 (en) 2018-08-01
US7769983B2 (en) 2010-08-03
WO2006125219A9 (en) 2008-01-31

Similar Documents

Publication Publication Date Title
JP5248313B2 (ja) 複数の状態のプロセッサのための命令のキャッシング
JP5313228B2 (ja) 適切なプレデコーディングにより可変長命令セットから命令をプレロードするシステム、方法およびソフトウェア
US6151662A (en) Data transaction typing for improved caching and prefetching characteristics
JP5837126B2 (ja) 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
EP2018609B1 (en) Pre-decoding variable length instructions
US5941980A (en) Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system
US9396117B2 (en) Instruction cache power reduction
US6321326B1 (en) Prefetch instruction specifying destination functional unit and read/write access mode
US7155574B2 (en) Look ahead LRU array update scheme to minimize clobber in sequentially accessed memory
US7721067B2 (en) Translation lookaside buffer manipulation
WO2003040916A1 (en) System and method to reduce execution of instructions involving unreliable data in a speculative processor
JP3837289B2 (ja) 同じ論理的空間を占有する複数のレジスタファイルを含むマイクロプロセッサ
US5926841A (en) Segment descriptor cache for a processor
WO1997034229A9 (en) Segment descriptor cache for a processor
CN116339832A (zh) 数据处理装置、方法及处理器
US7996655B2 (en) Multiport execution target delay queue FIFO array
US11914998B2 (en) Processor circuit and data processing method for load instruction execution
CN111475010B (zh) 管线式处理器及节电方法
US20200409864A1 (en) Speculative address translation requests pertaining to instruction cache misses
CN115686624A (zh) 处理器电路以及数据处理方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101116

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110216

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110223

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120413

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120419

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120703

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121003

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121011

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121101

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121108

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20121203

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20121210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130214

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130410

R150 Certificate of patent or registration of utility model

Ref document number: 5248313

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160419

Year of fee payment: 3

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