JP5323936B2 - 推論的割込みベクトルプリフェッチのための装置および方法 - Google Patents

推論的割込みベクトルプリフェッチのための装置および方法 Download PDF

Info

Publication number
JP5323936B2
JP5323936B2 JP2011522121A JP2011522121A JP5323936B2 JP 5323936 B2 JP5323936 B2 JP 5323936B2 JP 2011522121 A JP2011522121 A JP 2011522121A JP 2011522121 A JP2011522121 A JP 2011522121A JP 5323936 B2 JP5323936 B2 JP 5323936B2
Authority
JP
Japan
Prior art keywords
instruction
interrupt
address
cache
exception
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
JP2011522121A
Other languages
English (en)
Other versions
JP2011530741A (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 JP2011530741A publication Critical patent/JP2011530741A/ja
Application granted granted Critical
Publication of JP5323936B2 publication Critical patent/JP5323936B2/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
    • 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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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, look ahead
    • 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
    • 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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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, 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本開示は、一般に、プロセッサ命令をプリフェッチするための技法に関し、詳細には、例外状態に基づく推論的(speculative)割込みベクトルプリフェッチに関する。
セルフォン、ラップトップコンピュータ、個人情報端末(PDA)などの多くのポータブル製品は、通信プログラムおよびマルチメディアプログラムなどのプログラムを実行するプロセッサを利用する。そのような製品のための処理システムは、命令とデータとを記憶するためのプロセッサおよびメモリ複合体を含む。大容量メインメモリは、通常、プロセッササイクル時間に比較してアクセス時間が遅い。結果として、メモリ複合体は、従来、キャッシュメモリの容量とパフォーマンスとに基づいて階層中に編成され、最高パフォーマンスおよび最低容量のキャッシュがプロセッサの最も近くに配置される。データキャッシュおよび命令キャッシュは、セパレートまたはユニファイドとするか、あるいはセパレートとユニファイドの組合せとすることができ得る。たとえば、レベル1命令キャッシュおよびレベル1データキャッシュは一般にプロセッサに直接結合されるであろう。一方、レベル2ユニファイドキャッシュはレベル1(L1)命令キャッシュとレベル1(L1)データキャッシュとに結合される。さらに、システムメモリは一般にレベル2(L2)ユニファイドキャッシュに結合される。また、フラッシュメモリ、ハードディスクドライブ、オプティカルドライブなどの外部ストレージへの結合が可能である。
レベル1命令キャッシュは、通常、プロセッサ速度で動作し、レベル2ユニファイドキャッシュは、レベル1キャッシュよりも動作が遅いが、システムメモリよりもアクセス時間が速い。代替メモリ編成には、たとえば、L1キャッシュとL2キャッシュとに加えてレベル3キャッシュを有するメモリ階層が多い。別のメモリ編成は、レベル1キャッシュおよびシステムメモリのみを使用する。
命令キャッシュのメモリ階層が使用できる理由の背後にある原理のうちの1つは、命令はメモリ中の連続的なロケーションからアクセスされる傾向がある、ということである。コードの最も最近使用されたセクションをキャッシュに保持させることによって、プロセッサはより高いパフォーマンスレベルで実行することができ得る。また、プログラムは、ブランチ型命令、呼出し型命令、および復帰型命令を含んでおり、割込みなどの他の非逐次動作をサポートするので、逐次的局所性の原理をコードの比較的短いセクションのためにのみ維持することができ得る。そのような非逐次動作により、命令キャッシュへの命令フェッチがミスし、メモリ容量がより高くアクセス時間がより遅い状態で動作する次に高いメモリレベルに、命令フェッチが適用されることがある。ミスにより、プロセッサは、命令を待つことをストールすることがある。プロセッサパフォーマンスを高く保つために、キャッシュミス率を低くしなければならない。
割込みが生じたとき、割込みイベントが検出される時間と、関連付けられた割込みハンドラのロケーションにおける命令がフェッチされ、実行を開始することができる時間との間には待ち時間がある。待ち時間は、割込みハンドラが命令キャッシュに常駐しないので、割込みハンドラが実行する前に命令を取り出すために冗長なミスおよびフェッチ動作が生じ、それによりプロセッサパフォーマンスが低下することに部分的に起因することがある。待ち時間を低減するための1つのアプローチは、命令キャッシュ中に割込みハンドラをロックすることを含むが、このアプローチは、キャッシュのサイズを効果的に低減し、プロセッサパフォーマンスをさらに低減することがある。
本開示は、関連付けられた割込みハンドラがキャッシュされない場合に、割込みイベントが検出される時間と、関連付けられた割込みハンドラ命令が実行のために利用可能である時間との間のメモリアクセス待ち時間をなくすまたは低減することにより、プロセッサパフォーマンスを改善することができることを認識する。そのような目的で、本発明の一実施形態は、割込み処理のための方法を対象とする。以下でより詳細に説明するように、プロセッサ中の命令パイプラインの1つまたは複数のステージにおいて命令の実行の失敗に起因する例外状態を検出する。プロセッサが検出された例外状態に応答して割込みを受け付ける前に、検出された例外状態に応答して割込みハンドラの開始アドレスにおける命令の存在について命令キャッシュを検査する。命令を命令キャッシュにロードするために、命令が命令キャッシュ中に存在しないとき、命令キャッシュより上のストレージから割込みハンドラの開始アドレスにおける命令をプリフェッチし、それにより、プロセッサが検出された例外状態に応答して割込みを受け付ける時間までに、命令が命令キャッシュ中で利用可能になる。
本発明の別の実施形態は、割込みベクトルテーブルを利用する割込み処理のための方法を対象とする。プロセッサ中の命令パイプラインの1つまたは複数のステージにおいて例外状態を検出する。プロセッサが検出された例外状態に応答して割込みを受け付ける前に、検出された例外状態に応答して割込みベクトルテーブル中に保持された命令の存在について命令キャッシュを検査する。命令とベクトルテーブルとを命令キャッシュにロードするために、命令が命令キャッシュ中に存在しないとき、命令キャッシュより上のストレージから命令をプリフェッチする。命令がプログラムカウンタ相対ブランチ命令であると判断すると、検出された例外状態に関連付けられた割込みハンドラのブランチターゲットアドレスを計算する。ブランチターゲットアドレスにおける割込みハンドラ命令の存在について命令キャッシュを検査する。割込みハンドラ命令を命令キャッシュにロードするために、割込みハンドラ命令が命令キャッシュ中に存在しないとき、命令キャッシュより上のストレージからブランチターゲットアドレスにおける割込みハンドラ命令をプリフェッチし、それにより、プロセッサが検出された例外状態に応答して割込みを受け付ける時間までに、命令が命令キャッシュ中で利用可能になる。
本発明の別の実施形態は、割込み処理論理をもつプロセッサを対象とする。プロセッサパイプラインの様々なステージにおいて1つまたは複数の例外状態を検出するために例外検出論理回路が利用される。1つまたは複数の検出された例外状態から選択された最高優先順位の検出された例外状態に関する所定の優先順位に基づいて例外アドレスを発生するために、優先順位付け論理回路が利用される。プロセッサが検出された例外状態に応答して割込みを受け付ける前に、選択された例外状態に応答して例外ベクトルアドレスにおける命令の存在について命令キャッシュを検査するために、第1の論理回路が利用される。命令を命令キャッシュにロードするために、命令が命令キャッシュ中に存在しないとき、命令キャッシュより上のストレージに例外ベクトルアドレスにおける命令をプリフェッチし、それにより、プロセッサが検出された例外状態に応答して割込みを受け付ける時間までに、命令が命令キャッシュ中で利用可能になるために、第2の論理回路が利用される。
本発明の様々な実施形態を例として図示および説明する以下の詳細な説明から、本発明の他の実施形態が当業者には容易に明らかになろう。了解されるように、すべて本発明から逸脱することなく、本発明は他の様々な実施形態が可能であり、そのいくつかの詳細は様々な他の点で変更が可能である。したがって、図面および詳細な説明は、本質的に例示的なものと見なされるべきであり、限定的なものと見なされるべきではない。
ワイヤレス通信システムを示す図。 独立した割込みベクトルアドレスを利用する推論的割込みアドレスプリフェッチをサポートする例示的な第1のプロセッサおよびメモリ複合体の第1の機能ブロック図。 図2の第1の機能ブロック図に基づく推論的割込みプリフェッチのための第1のプロセスを示す第1の流れ図。 割込みベクトルテーブルから展開された割込みアドレスを利用する推論的割込みアドレスプリフェッチをサポートする例示的な第2のプロセッサおよびメモリ複合体の第2の機能ブロック図。 図4の第2の機能ブロック図に基づく推論的割込みプリフェッチのための第2のプロセスを示す第2の流れ図。 例外状態の所定の優先順位に基づいて割込みベクトルアドレスを発生するために好適に使用される例示的な優先順位例外論理回路を示す図。
添付の図面とともに以下に示す詳細な説明は、本発明の様々な例示的な実施形態を説明するものであり、本発明を実施でき得る唯一の実施形態を表すものではない。詳細な説明は、本発明の完全な理解を与えるための具体的な詳細を含む。ただし、本発明はこれらの具体的な詳細なしに実施でき得ることが当業者には明らかであろう。いくつかの例では、本発明の概念を不明瞭にしないように、よく知られている構造および構成要素をブロック図の形式で示す。
本発明の教示による動作に基づいて動作させるための、または本発明の教示による動作を実行するためのコンピュータプログラムコードまたは「プログラムコード」は、C、C++、JAVA(登録商標)、Smalltalk、JavaScript(登録商標)、Visual Basic(登録商標)、TSQL、Perlなどの高水準プログラミング言語で、または様々な他のプログラミング言語で書くことができ得る。また、ターゲットプロセッサアーキテクチャ用のプログラムはネイティブアセンブラ言語で直接書くことができ得る。ネイティブアセンブラプログラムは機械レベルバイナリ命令の命令ニーモニック表現を使用する。本明細書で使用するプログラムコードまたはコンピュータ可読媒体は、フォーマットがプロセッサによって理解可能であるオブジェクトコードなどの機械言語コードを指す。
図1に、本発明の一実施形態が有利に採用される例示的なワイヤレス通信システム100を示す。説明のために、図1には、3つのリモートユニット120、130、および150と、2つの基地局140とを示してある。一般的なワイヤレス通信システムは、より多くのリモートユニットと基地局とを有することができ得ることが認識されよう。リモートユニット120、130、および150は、以下でさらに説明するように本発明を実施するように適合された構成要素125A、125B、および125Cで表されるようなハードウェア構成要素、ソフトウェア構成要素、またはその両方を含む。図1は、基地局140ならびにリモートユニット120、130、および150からの順方向リンク信号180と、リモートユニット120、130、および150から基地局140への逆方向リンク信号190を示す。
図1では、リモートユニット120は携帯電話として示され、リモートユニット130はポータブルコンピュータとして示され、リモートユニット150はワイヤレスローカルループシステム中の固定ロケーションリモートユニットとして示される。例として、リモートユニットは、代替的に、セルフォン、ページャ、ウォーキトーキー、ハンドヘルドパーソナル通信システム(PCS)ユニット、個人情報端末などのポータブルデータユニット、またはメータ読取り機器などの固定ロケーションデータユニットとすることができ得る。図1は、本開示の教示によるリモートユニットを示すが、本開示は、これらの例示的な図示のユニットに限定されない。本発明の実施形態は、以下でさらに詳細に説明するレベル1キャッシュおよびレベル2キャッシュなど、メモリ階層の少なくとも2つのレベルをもつプロセッサを有する任意のデバイスにおいて好適に採用でき得る。
キャッシュは、ランダムアクセスメモリ(RAM)に結合された連想メモリ(content addressable memory)(CAM)を備える。キャッシュは、メモリアドレスをCAMに記憶されたアドレスと比較することによってアクセスされる。メモリアドレスがCAMアドレスに一致する場合、キャッシュは、「ヒット」を示し、さらに、一致したCAMアドレスに対応するRAM中のロケーションからデータまたは命令のラインを与えることができ得る。メモリアドレスが、CAMに記憶されたいずれのアドレスとも一致しない場合、キャッシュは「ミス」を示す。ミスは、命令またはデータユニットアクセス上で、キャッシュライン中のどこにでも生じることがある。ミスが生じたとき、キャッシュ中のラインは、一般に、ミスされた命令またはデータを含んでいる新規ラインと置換される。第1のレベルキャッシュ中のミスは、一般に、第1のレベルキャッシュアクセスよりも多い数の処理サイクルを必要とするL2キャッシュアクセスをトリガする。L2キャッシュ中のミスは、さらにより大きい遅延を招くシステムメモリへのアクセスをトリガする。
アドレスがキャッシュ中でヒットするか否かをCAMアドレス比較を使用して判断するためのプロセスは、比較的電力効率が良い。しかしながら、ヒットの場合にキャッシュRAMから命令またはデータを取り出すことは、比較的電力効率が悪い。したがって、プロセッサは、命令キャッシュにおけるプリフェッチ動作を利用して、キャッシュアクセス時に命令を実際に取り出すという電力ペナルティを招くことなしに、所望の命令がキャッシュに記憶されるか否かを確認することができ得る。本明細書で使用する「プリフェッチ」または「プリフェッチ動作」という用語は、キャッシュから命令またはデータを取り出すことなしにヒットまたはミスをもたらす限定されたキャッシュアクセスを指す。プリフェッチ動作は、一般に、キャッシュのCAMのコンテンツにアクセスするが、キャッシュのRAMのコンテンツにはアクセスしない。本明細書で使用する「フェッチ」または「フェッチ動作」という用語は、ヒットまたはミスをもたらし、ヒット時にキャッシュから命令またはデータを取り出すキャッシュアクセスを含むメモリ動作を指す。フェッチ動作はキャッシュのCAMとキャッシュのRAMとにアクセスし、アクセスされた命令は実行の対象となる。
命令プリフェッチは、命令ストリーム処理に基づいて命令キャッシュCAMアドレス比較を実行することを含む。たとえば、キャッシュライン中のどこかに位置する命令にミスが生じたとき、キャッシュラインをフェッチし、次の逐次キャッシュラインをプリフェッチすることができ得る。次のキャッシュラインを常にプリフェッチするこの技法は、次のキャッシュラインが、すぐに必要とされる命令を含んでいるという仮定に基づく。しかしながら、命令の逐次アクセスの局所性原理は、当然、プログラム中のある時点において、たとえば、ブランチ、呼出し、復帰、割込みなどのために機能しない。一例として、例外状態または外部イベントによる割込みは、通常の命令ストリーム処理を停止させ、割込みを引き起こしたイベントに対応する割込みハンドラへのリダイレクションを起こさせる。割込みベクトルテーブルは、割込みイベントと割込みハンドラとの対応を確立するために使用でき得る1つの技法である。キャッシュから割込みベクトルテーブルをフェッチするとき、次のキャッシュラインを常にプリフェッチする従来の技法では、使用されない命令がフェッチされ、したがって、メモリアクセス帯域幅の不要な損失が生じ、電力使用が増加し、プロセッサパフォーマンスが低下する。
フェッチ動作およびプリフェッチ動作に加えて、「推論的割込みプリフェッチ」動作および「実行なし推論的割込みフェッチ」動作を、本発明による命令キャッシュ動作に関して定義する。推論的割込みプリフェッチは、「ヒット」指示時に命令キャッシュから命令を取り出すことなしにヒットまたはミスをもたらす限定されたキャッシュアクセスである。命令の実行の失敗に起因する検出された例外状態に基づいて、命令を推論的にプリフェッチする。命令が関連付けられた割込みを取ることを確認する前に、命令を推論的にプリフェッチする。多くの場合、命令キャッシュライン中に常駐する命令などの複数の命令を推論的にプリフェッチすることができ得ることに留意されたい。本発明による推論的割込みプリフェッチ動作をいつ利用すべきかを判断するためのプロセスについて、以下でさらに詳細に説明する。
実行なし推論的割込みフェッチ動作は、ヒットまたはミスをもたらし、ヒット時に命令キャッシュから命令を取り出し、あるいはミス時に高位レベルメモリから命令を取り出す命令キャッシュアクセスを含むメモリ動作である。推論的フェッチアドレスにおける命令のタイプを判断するために、検出された例外状態に基づいて命令を推論的にフェッチし、命令がPC相対ブランチであると判断された場合、プログラムカウンタからの指定されたオフセットをブランチターゲットアドレスとして計算する。推論的にフェッチされた命令は実行されない。本発明による実行なし推論的割込みフェッチ動作をいつ利用すべきかを判断するためのプロセスについて、以下でさらに詳細に説明する。多くの場合、命令キャッシュライン中に常駐する命令などの複数の命令を実行なしに推論的にフェッチすることができ得ることに留意されたい。
図2は、独立した割込みベクトルアドレスを利用する推論的割込みアドレスプリフェッチをサポートする例示的な第1のプロセッサおよびメモリ複合体200の第1の機能ブロック図である。第1のプロセッサおよびメモリ複合体200は、割込み論理回路202と、プリフェッチ論理回路204と、フェッチ論理回路206と、レベル1(L1)命令キャッシュ(Iキャッシュ)208と、レベル2キャッシュ(L2キャッシュ)210と、復号論理回路212と、命令キュー(IQ)214と、実行パイプラインステージ論理回路216とを含む。
プリフェッチ論理回路204は、マルチプレクサ218とプリフェッチアドレスレジスタ220とを含む。フェッチ論理回路206は、フェッチ1ステージ222、フェッチ2ステージ223、フェッチ3ステージ224などのいくつかのフェッチステージと、例外フェッチアドレスレジスタ225などの関連する論理回路と、マルチプレクサ226と、逐次アドレスを計算するために使用されるインクリメンタ(Incr)227とを含む。L1 Iキャッシュ208は、連想メモリ(CAM)ユニット207と、ランダムアクセスメモリ(RAM)ユニット209と、CAMユニット207へのフェッチアクセスインターフェース228と、ヒットまたはミス(H/M)信号229を発生するためのCAMユニット207内部のH/M論理回路と、RAMユニット209に結合され、ヒット時にフェッチされた1つまたは複数の命令を与える命令バス230とを含む。フェッチ3ステージ224は、プリフェッチアボート信号などの第1の例外状態(ExCond)A231を生成することができ得る。命令キュー(IQ)214は、命令をキューイングし、それらを実行パイプラインに配信するために利用され、それぞれ、未定義命令検出信号およびデータアボート信号などの例外状態(ExCond)B233およびC235を発生することができ得る。
フェッチ1ステージ222は、命令フェッチ動作の第1のステップとして、フェッチアクセスインターフェース228を介してL1 Iキャッシュ208のCAMユニット207にアクセスするために利用される。フェッチ2ステージ223は、命令フェッチ動作の第2のステップとして、L1 Iキャッシュ208のRAMユニット209にアクセスするために利用される。フェッチ3ステージ224は、「ヒット」時にL1 Iキャッシュ208から復帰された命令のラインとして、データを分析し、データを個々の命令に分割するために利用される。フェッチ3ステージ224はまた、命令フェッチ動作がミスしたかどうかを処理する。ミスおよびミスのタイプが検出されると、フェッチ3ステージ224は、L2キャッシュ210など、L1 Iキャッシュ208より上のストレージの高位レベルに要求を送信する。
命令は、復号論理回路212において復号され、適切な実行パイプラインに配信するためにキュー論理回路214においてキューイングされる。実行パイプラインステージ論理回路216は、たとえば、算術動作および関連する命令動作などのパイプラインA動作と、メモリアクセス動作および関連する命令動作などのパイプラインB動作とから構成される。具体的には、ランダムアクセスメモリ(RAM)パイプラインAステージ234は、A動作による汎用レジスタ(GPR)ファイルアクセスを指す。実行Aステージ236は、パイプラインAにディスパッチされた命令を実行し、それぞれスーパバイザコール信号およびモニタコール信号など、それぞれ例外状態(ExCond)E237およびF239を生成することができ得る。RAMパイプラインBステージ238は、B動作によるGPRファイルアクセスを指す。実行Bステージ240は、パイプラインBにディスパッチされた命令を実行し、データアラインメントアボート信号などの例外状態(ExCond)D241を生成することができ得る。命令は、プロセッサパイプライン中のそれらの相対位置によって例外状態が検出された時間に比較され、したがって、パイプライン中で第1の命令が第2の命令よりも深い場合、第1の命令は第2の命令よりも古いと一般に見なされることに留意されたい。たとえば、そのような比較に影響を及ぼすことがあるパイプラインホールド状況は、割込み論理回路202によって考慮される。
割込み論理回路202は、様々なパイプラインステージから受け取った例外状態(ExCond)A〜F243を含む前の命令のステータスを追跡して、前の命令がフォールト(fault)なしに完了することができたかどうかを判断する。たとえば、パイプラインステージに含まれている命令が例外を有することをそのパイプラインステージが報告すると、そのパイプラインステージは、パイプラインフラッシュが発生するまで動作をホールドすることができ得る。割込み論理回路202は、例外を報告しているパイプラインステージを調査する。パイプラインイベントの行列内で、より古いコミットされていない命令が現在行列中に存在しないことによって、例外を検出したパイプラインステージが最も古いコミットされていない命令を含んでいるかどうかを判断する。基本的に、割込み論理回路202は、図6に関して以下でより詳細に説明するように、存在する例外状態の優先順位付けに基づいて推論的プリフェッチ例外アドレス242を与える。割込み論理202はまた、パイプライン情報と、存在する例外状態の優先順位付けとの組合せに基づいて、例外フェッチアドレスレジスタ225に割込みアドレス245を与える。
説明を明快にするために、一般に第1のプロセッサおよびメモリ複合体200に接続でき得る周辺デバイスおよびシステムメモリは図示していない。第1のプロセッサおよびメモリ複合体200は、たとえば、命令キャッシュ208および210に記憶されたプログラムコードを実行するための構成要素125A〜Cなど、本発明の様々な実施形態において適切に採用でき得る。
プログラムコードを実行するとき、第1のプロセッサおよびメモリ複合体200は、例外状態231、233、235、237、239、または241など、1つまたは複数の例外状態に遭遇することがある。例外状態が検出されると、それに優先順位を付け、図3に関して以下でさらに詳細に説明するように、推論的プリフェッチ例外アドレス242を発生し、プリフェッチ動作の実行において使用する。以下のブロック306に示すように、割込みが処理されないという判断が行われる時点に達するまで、例外フェッチアドレスレジスタ225のコンテンツは有効でない。一般に、プリフェッチ動作を利用することができ得る第1のプロセッサおよびメモリ複合体200内には他の状況がある。図2には、そのような状況に対処するために、ソフトウェアベースまたはハードウェアベースとすることができ得る他のプリフェッチタイプのための入力244が与えられている。
図3は、図2のシステムのようなシステムを利用する推論的割込みプリフェッチのための第1のプロセス300を示す第1の流れ図である。第1のプロセス300はブロック302において開始し、第1のプロセッサおよびメモリ複合体200において例外状態を検出する。決定ブロック304において、前の命令がフォールトなしに完了することができたかどうかについて判断を行う。パイプラインの長さおよびパイプライン中の命令のタイプにより、そのような判断は、決定ブロック304の「いいえ」レグに従ういくつかのサイクルを必要とすることがある。たとえば、パイプライン中にロード命令があることがあり、指定されたロードに関するデータをフェッチするための動作は、レベル1データキャッシュ中のミス、L2キャッシュ210中のミスを経験することがあり、指定されたデータを取り出すためにシステムメモリにアクセスしなければならないことがある。動作のそのようなシーケンスは、完了するために数百ものサイクルを必要とすることがある。
ロード命令は、上記のようにフォールトなしに実行を完了するか、またはそれ自体が別の例外を生じさせることがある。パイプライン論理回路は、この例のロード命令が、ブロック302において最初の例外状態検出を引き起こした命令よりも古い命令であるかどうかを判断する。ロード命令がより古い命令である場合、より古いロード命令は、最初の例外を引き起こした命令を含む、パイプライン中のより新しい命令をフラッシングさせるであろう。決定ブロック305において、パイプラインフラッシュ状況が検出されない場合、第1のプロセス300は決定ブロック304に戻る。決定ブロック305において、パイプラインフラッシュが検出された場合、第1のプロセス300はブロック307に進む。ブロック307において、パイプラインをフラッシングし、第1のプロセス300はプログラムフローに戻る。
決定ブロック304における状態の肯定的判断が行われた後、ブロック306において、プロセッサ状態を変更し、割込みハンドラのアドレスをフェッチする処理のために割込みを受け付ける。ブロック308において、割込みに関連付けられた割込みハンドラを実行し、割込みハンドラが完了すると、第1のプロセス300は通常のプログラムフローに戻る。
決定ブロック304の判断が行われるのを待つのではなく、ブロック310において動作の並列セットが有利には開始することができ得る。ブロック310において、検出された例外状態に優先順位を付けることによって割込みハンドラの推論的プリフェッチが開始する。ブロック312において、例外状態231、233、235、237、239、または241のうちの1つのタイプなど、例外状態のタイプに基づいて、割込みベクトルアドレスをマルチプレクサ218によって選択し、プリフェッチアドレスレジスタ220にロードし、推論的プリフェッチ動作を要求する。ブロック314において、要求された推論的プリフェッチ動作をマルチプレクサ226によって選択し、L1 Iキャッシュ208のCAM部分のみにアクセスすることによって、命令をフェッチすることなしにヒットまたはミス指示を戻すフェッチ1ステージ222の動作を開始する。決定ブロック316において、「ヒット」を有するフェッチ1ステージ222の動作に基づいて、割込みベクトルアドレスにおける命令がL1 Iキャッシュ208中に存在することを示す決定ブロック316の「はい」レグは、ブロック318に進む。フェッチ1ステージ222におけるプリフェッチ動作がミスを戻す場合、決定ブロック316はブロック320に進んで、L2キャッシュまたはシステムメモリなど、高位レベルメモリに割込みベクトルアドレスにおける命令を要求する。戻された後、要求された命令を含んでいるキャッシュラインをL1 Iキャッシュ208中に書き込む。様々な例外状態に関する割込みベクトルアドレスは、アーキテクチャ定義に基づく、またはソフトウェアによってプログラム可能な一意のアドレスであることに留意されたい。割込みベクトルアドレスにおける命令をプリフェッチし、L1 Iキャッシュ208にロードした後、一般に第1のプロセッサおよびメモリ複合体200が検出された例外状態に応答して割込みを受け付ける前に、第1のプロセス300はブロック318に進む。ブロック318において、割込みハンドラの推論的プリフェッチを終了し、第1のプロセッサおよびメモリ複合体200は通常のプログラムフローに戻る。
図4は、推論的割込みアドレスプリフェッチをサポートする例示的な第2のプロセッサおよびメモリ複合体400の第2の機能ブロック図である。このアプローチは、割込みベクトルテーブルに記憶された割込みアドレスを利用する。第2のプロセッサおよびメモリ複合体400は、割込み論理回路402と、プリフェッチ論理回路404と、フェッチ論理回路406と、命令キャッシュ(Iキャッシュ)408と、レベル2キャッシュ(L2キャッシュ)410と、復号論理回路412と、命令キュー(IQ)414と、実行パイプラインステージ論理回路416とを含む。
プリフェッチ論理回路404は、加算器417と、マルチプレクサ418と、ブランチ検出およびオフセット発生論理回路419と、プリフェッチアドレスレジスタ420とを含む。フェッチ論理回路406は、フェッチ1ステージ422、フェッチ2ステージ423、フェッチ3ステージ424などのいくつかのフェッチステージと、例外フェッチアドレスレジスタ425などの関連する論理回路と、マルチプレクサ426と、インクリメンタ(Incr)427とを含む。Iキャッシュ408は、フェッチアクセスインターフェース428と、ヒットまたはミス(H/M)信号429を発生するためのIキャッシュ内部のH/M論理回路と、Iキャッシュバス430上で「ヒット」時にフェッチされた1つまたは複数の命令を与える、Iキャッシュ内部の命令フェッチ関数とを含む。フェッチ3ステージ424は、プリフェッチアボート信号などの例外状態(ExCondA)出力431を生成することができ得る。命令キュー(IQ)414は、命令をキューイングし、それらを実行パイプラインに配信するために利用され、それぞれ、未定義命令検出信号およびデータアボート信号などの例外状態(ExCond)B出力433およびC出力435を発生することができ得る。
実行パイプラインステージ論理回路416は、たとえば、算術動作および関連する命令動作などのパイプラインA動作と、メモリアクセス動作および関連する命令動作などのパイプラインB動作とから構成される。具体的には、ランダムアクセスメモリ(RAM)パイプラインAステージ434は、A動作による汎用レジスタ(GPR)ファイルアクセスを指す。実行Aステージ436は、パイプラインAにディスパッチされた命令を実行し、それぞれ、スーパバイザコール信号およびモニタコール信号など、それぞれ例外状態(ExCond)E出力437およびF出力439を生成することができ得る。RAMパイプラインBステージ438は、B動作によるGPRファイルアクセスを指す。実行Bステージ440は、パイプラインBにディスパッチされた命令を実行し、データアライメントアボート信号などの例外状態(ExCond)D出力441を生成することができ得る。割込み論理回路402は、割込み論理回路202と同様の様式で、前の命令がフォールトなしに完了することができたかどうかを判断するために前の命令のステータスを追跡する。
例示および説明を明快にするために、第2のプロセッサおよびメモリ複合体400に接続でき得る周辺デバイスおよびシステムメモリは図示していない。第2のプロセッサおよびメモリ複合体400は、たとえば、キャッシュ408および410に記憶でき得るようなプログラムコードを実行するための構成要素125A〜Cにおける本発明の様々な実施形態において適切に採用でき得る。
プログラムコードを実行するとき、プロセッサおよびメモリ複合体400は、例外状態431、433、435、437、439、または441など、1つまたは複数の例外状態に遭遇することがある。例外状態が検出されると、それに優先順位を付け、本発明によれば、図5に関して以下でさらに詳細に説明するように、推論的プリフェッチ例外アドレス442を発生し、プリフェッチ動作の実行において使用する。一般に、パフォーマンスを改善するために予想されるキャッシュラインのプリフェッチをトリガするソフトウェアによってなど、プリフェッチ動作を利用することができ得る第2のプロセッサおよびメモリ複合体400内には他の状況がある。これらの他の状況を他のプリフェッチタイプ444によって示す。
図5は、図4の第2の機能ブロック図に基づく推論的割込みプリフェッチのための第2のプロセス500を示す第2の流れ図である。第2のプロセス500はブロック502において開始し、第2のプロセッサおよびメモリ複合体400において例外状態を検出する。決定ブロック504において、前の命令がフォールトなしに完了することができたかどうかについて判断を行う。パイプラインの長さおよびパイプライン中の命令のタイプにより、そのような判断は、決定ブロック504の「いいえ」レグに従ういくつかのサイクルを必要とすることがある。たとえば、パイプライン中にロード命令があることがあり、指定されたロードに関するデータをフェッチするための動作は、レベル1データキャッシュ(図示せず)中のミス、L2キャッシュ410中のミスを経験することがあり、指定されたデータを取り出すためにシステムメモリにアクセスしなければならないことがある。動作のそのようなシーケンスは、完了するために数百ものサイクルを必要とすることがある。決定ブロック504の判断が行われた後、ブロック506において、プロセッサ状態を変更することと、割込みハンドラのアドレスをフェッチすることとを含む処理のために割込みを受け付ける。ブロック508において、割込みに関連付けられた割込みハンドラを実行し、割込みハンドラを完了すると、第2のプロセス500は通常のプログラムフローに戻る。
決定ブロック504の判断が行われるのを待つのではなく、ブロック510において動作の並列セットが有利に開始する。ブロック510において、ベクトルテーブルの推論的プリフェッチおよび例外状態の優先順位付けによって割込みハンドラの推論的プリフェッチが開始する。ブロック512において、例外状態431、433、435、437、439、または441など、例外状態のタイプに基づいて、割込みベクトルテーブルアドレスをマルチプレクサ418によって選択し、プリフェッチアドレスレジスタ420中にロードし、実行なしフェッチ動作を要求する。たとえば、フェッチ命令動作は、1つまたは複数の命令をIキャッシュ408のRAMから読み取らせるためのフェッチ1ステージ422の動作とフェッチ2ステージ423の動作とを備える。次いで、特定のフェッチされた命令を復号ステージ412にパスして、実行動作を開始するであろう。実行なしフェッチ動作は、Iキャッシュ408のRAMから1つまたは複数の命令を読み取るためのフェッチ1ステージ422の動作と、フェッチ2ステージ423の動作とを備える。しかしながら、この実行なしフェッチの場合、復号ステージ412に特定のフェッチされた命令をパスしないであろう。そうではなく、特定のフェッチされた命令を調査して、それがPC相対ブランチ命令であるかどうかを判断するであろう。そのようなパイプライン動作は、たとえば、フェッチ動作属性、プリフェッチ動作属性、または実行なしフェッチ動作属性を示す、フェッチ動作の属性を追跡することによって制御でき得る。
ブロック514において、要求された実行なしフェッチ動作をマルチプレクサ426によって選択し、「ヒット」または「ミス」指示を戻すフェッチ1ステージ422の動作を開始する。決定ブロック516において、「ヒット」を有するフェッチ1ステージ422の動作に基づいて、割込みベクトルテーブルがIキャッシュ408中にあることを示し、例外状態に関連付けられたアドレスにおける命令を戻す決定ブロック516の「はい」レグに従い、決定ブロック518に到る。ブロック514において実行されたフェッチ動作は、フェッチされた命令のタイプを判断するために使用される有利な実行なしフェッチ動作である。フェッチス1テージ422における実行なしフェッチ動作がミスを戻す場合、決定ブロック516はブロック520に進み、高位レベルメモリに、たとえばL2キャッシュ410に割込みベクトルテーブルのコンテンツを要求する。また、割込みベクトルテーブルのアクセス中に、例外状態に関連付けられたベクトルアドレスにおける命令を含むテーブル内の命令を取得する。特定の例外タイプに関連付けられた割込みベクトルテーブル内のアドレスにおける命令は、一般にPC相対ブランチ命令である。PC相対ブランチ命令を使用すると、プロセッサアーキテクチャによって指定された限界内で、第2のプロセッサおよびメモリ複合体400のメモリ空間内のどこにでも、例外状態に関連付けられた割込みハンドラを配置することが可能になる。ベクトルアドレスにおける指示を実行なしに推論的にフェッチし、Iキャッシュ408にロードした後、第2のプロセス500は決定ブロック518に進む。
決定ブロック518において、例外状態に関連付けられたアドレスにおける命令を検査して、それがプログラムカウンタ(PC)相対ブランチ命令であるかどうかを判断する。そのような判断は、ブランチ検出およびオフセット発生ブロック419において行うことができ得る。命令がPC相対ブランチ命令でない場合、第2のプロセス500はブロック532に進む。ブロック532において、割込みハンドラの推論的プリフェッチを終了し、第2のプロセッサおよびメモリ複合体400は通常のプログラムフローに戻る。
決定ブロック518に戻ると、命令がPC相対ブランチ命令であった場合、第2のプロセス500はブロック522に進む。ブロック522において、加算器417内で推論的プリフェッチ例外アドレス442にアドレスオフセット値421を加算することにより、ブランチターゲットアドレスを計算し、マルチプレクサ418のためのブランチターゲットアドレスを発生する。加算器417は、この追加の目的のために使用でき得る既存の加算器とすることができ、それにより本発明を実装するためのハードウェア要件を最小限に抑えることができることに留意されたい。ブロック524において、マルチプレクサ418は、プリフェッチアドレスレジスタ420にロードされるべき加算器出力を選択する。ブロック526において、ブランチターゲットアドレスにおける命令の推論的プリフェッチをフェッチ1動作422において選択する。決定ブロック528において、ブランチターゲットアドレスにおける命令がIキャッシュ408中に存在するかどうかについて判断を行う。推論的プリフェッチ動作がヒット指示を戻し、命令がフェッチされない場合、例外状態に関連付けられた割込みハンドラの少なくとも第1の命令がIキャッシュ408中に存在することを示す命令が、ブランチターゲットアドレスに存在するという判断が肯定的である。次いで第2のプロセス500は、ブロック532に進み、通常、第2のプロセッサおよびメモリ複合体400が検出された例外状態に応答して割込みを受け付ける前に、割込みのハンドラの推論的プリフェッチを終了する。
決定ブロック528に戻ると、推論的プリフェッチ動作がミス指示を戻す場合、判断は、ブランチターゲットアドレスにおける命令がIキャッシュ408中に存在しないことを示す。ブロック530において、L2キャッシュまたはシステムメモリなどの高位メモリにブランチターゲットアドレスにおける命令を要求する。ブランチターゲットアドレスにおける命令を含むキャッシュラインがIキャッシュ408にロードされると、第2のプロセス500はブロック532に進み、割込みハンドラの推論的プリフェッチを終了する。
図6に、例外状態の所定の優先順位に基づいて割込みベクトルアドレスを発生するために好適に使用される例示的な優先順位例外論理回路600を示す。たとえば、例外状態Fが最高優先順位となり、F、E、D、C、Bの優先順位で、例外状態Aが最低優先順位となるように、例外状態A〜Fに優先順位を付けることができ得る。優先順位例外論理回路600は、選択指示612〜616にそれぞれ応答するマルチプレクサ602〜606によって示されるセレクタのセットを含む。各例外状態に関連付けられたアドレスは、一般に、プロセッサアーキテクチャによりあらかじめ決定され、それぞれ第1のプロセッサおよびメモリ複合体200または第2のプロセッサおよびメモリ複合体400などのプロセッサおよびメモリ複合体により与えられる。例外状態A〜Fに関連付けられたアドレスは、たとえば、プロセッサアーキテクチャによって識別される特殊目的レジスタとすることができ得るストレージセル620〜625にそれぞれ記憶される。例外状態の所定の優先順位に基づく割込みベクトルアドレスは、ストレージセル630に記憶される。
選択指示612〜616は、プロセッサおよびメモリ複合体内の検出論理回路によって設定される。たとえば、例外状態Fが検出されたとき、選択指示612が有効化される。また、例外状態Fが存在する場合、例外状態EまたはF存在選択指示613が有効化され、ストレージセル625からの例外状態Fに関連付けられたアドレスをマルチプレクサ602および603を介して例外アドレスストレージセル630にパスする。例外状態Fが存在しない場合、マルチプレクサ602によってストレージセル624からの例外状態Eに関連付けられたアドレスが選択される。例外状態Eが検出された場合、例外状態EまたはF存在指示613が有効化され、ストレージセル624からの例外状態Eに関連付けられたアドレスをマルチプレクサ602および603を介して例外アドレスストレージセル630にパスする。
例外状態EまたはFのいずれも検出されない場合、次の優先順位例外状態を判断することができ得る。たとえば、例外状態AおよびCは検出されるが、例外状態B、D、EまたはFは検出されない場合、選択指示C存在614および選択指示BまたはC存在615が有効化され、マルチプレクサ604、605、606および603を介して、ストレージセル622からの例外状態Cのアドレスを例外アドレスストレージセル630にパスすることが可能になる。例外割込みにより例外状態を処理すると、その例外状態のための選択信号は無効化されることに留意されたい。待機中とすることができ得る下位の優先順位例外状態は、例外割込みに関連付けられたパイプラインフラッシュにより消去される。それらの例外状態に関連付けられた命令がパイプラインを通って戻る場合、再び例外状態を検出することができ得る。このような状況では、例外検出は新しい検出状況として扱われるであろう。
本明細書に開示する実施形態に関連して説明する様々な例示的な論理ブロック、モジュール、回路、要素、および/または構成要素は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブルロジック構成要素、個別ゲートもしくはトランジスタロジック、個別ハードウェア構成要素、あるいは本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実施または実行でき得る。汎用プロセッサはマイクロプロセッサとすることができ得るが、代替として、プロセッサは従来のプロセッサ、コントローラ、マイクロコントローラ、または状態マシンとすることができ得る。プロセッサは、コンピューティング構成要素の組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは所望のアプリケーションに適した任意の他のそのような構成として実装することもでき得る。
本明細書で開示した実施形態に関して説明した方法は、直接ハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはその2つの組合せで実施でき得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、または当技術分野で知られている他の形態の記憶媒体に存在してよい。記憶媒体は、プロセッサが記憶媒体から情報を読むことができ、記憶媒体に情報を書き込むことができるようにプロセッサに結合され得る。代替として、記憶媒体はプロセッサと一体とすることができ得る。
階層メモリ環境における命令キャッシュのための例示的な実施形態の文脈において本発明を開示するが、上記の説明および以下の特許請求の範囲に合致する当技術分野の通常の技能を有する者によって多種多様な実装形態が採用でき得ることが認識されよう。
なお、以下に、出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
プロセッサ中の命令パイプラインの1つまたは複数のステージにおける命令の実行の失敗に起因する例外状態を検出することと、
前記プロセッサが前記検出された例外状態に応答して割込みを受け付ける前に、前記検出された例外状態に応答して割込みハンドラの開始アドレスにおける命令の存在について命令キャッシュを検査することと、
前記命令を前記命令キャッシュにロードするために、前記命令が前記命令キャッシュ中に存在しないとき、前記命令キャッシュ以外のストレージから前記割込みハンドラの前記開始アドレスにおける前記命令をプリフェッチすることであって、それにより、前記プロセッサが前記検出された例外状態に応答して前記割込みを受け付ける時間までに、前記命令が前記命令キャッシュ中で利用可能になる、プリフェッチすることと
を備える、割込み処理のための方法。
[C2]
前記命令パイプライン中で処理されている他の命令がフォールト指示なしに完了することができるかどうかを判断するために、前記他の命令を並列に評価することであって、前記他の命令が、前記例外状態が検出された前記命令よりも古い命令である、評価すること
をさらに備える、C1に記載の方法。
[C3]
前記より古い命令がフォールト指示なしに完了することができると判断されると、前記例外状態に応答して前記割込みを処理することであって、それにより、前記割込みハンドラが実行され、前記プロセッサが通常のプログラムフローに戻る、処理すること
をさらに備える、C2に記載の方法。
[C4]
前記より古い命令がフォールト指示なしに完了することができないと判断されると、前記検査ステップおよび前記プリフェッチステップを終了すること
をさらに備える、C2に記載の方法。
[C5]
複数の検出された例外状態の中で前記例外状態に優先順位を付けることと、
前記優先順位を付けられた例外状態に関連付けられた前記割込みハンドラの前記開始アドレスである割込みベクトルアドレスを保持する特殊目的レジスタを選択することと
をさらに備える、C1に記載の方法。
[C6]
前記選択された特殊目的レジスタからの前記割込みベクトルアドレスをプリフェッチアドレスレジスタに記憶することと、
前記プリフェッチアドレスレジスタに記憶された前記アドレスにおける前記命令をプリフェッチすることと
をさらに備える、C5に記載の方法。
[C7]
命令キャッシュ中の割込みハンドラの開始アドレスにおける命令の前記存在について検査することが、
前記開始アドレスにおける前記命令キャッシュの連想メモリ部分を読み取ることと、
前記命令キャッシュのランダムアクセスメモリ部分を読み取ることなしに、前記命令が前記命令キャッシュ中に存在するかまたは存在しないかの指示を発生することと
を備える、C1に記載の方法。
[C8]
割込みベクトルテーブルを利用する割込み処理のための方法であって、前記方法が、
プロセッサ中の命令パイプラインの1つまたは複数のステージにおける例外状態を検出することと、
前記プロセッサが前記検出された例外状態に応答して割込みを受け付ける前に、前記検出された例外状態に応答して割込みベクトルテーブル中に保持された命令の存在について命令キャッシュを検査することと、
前記命令と前記ベクトルテーブルとを前記命令キャッシュにロードするために、前記命令が前記命令キャッシュ中に存在しないとき、前記命令キャッシュ以外のストレージから前記命令をプリフェッチすること
を備える方法。
[C9]
前記命令がプログラムカウンタ相対ブランチ命令であると判断すると、前記検出された例外状態に関連付けられた割込みハンドラのブランチターゲットアドレスを計算することと、
前記ブランチターゲットアドレスにおける割込みハンドラ命令の存在について前記命令キャッシュを検査することと、
前記割込みハンドラ命令を前記命令キャッシュにロードするために、前記割込みハンドラ命令が前記命令キャッシュ中に存在しないとき、前記命令キャッシュより上のストレージから前記ブランチターゲットアドレスにおける割込みハンドラ命令をプリフェッチすることであって、それにより、前記プロセッサが前記検出された例外状態に応答して前記割込みを受け付ける時間までに、前記命令が前記命令キャッシュ中で利用可能になる、プリフェッチすることと
をさらに備える、C8に記載の方法。
[C10]
前記命令パイプライン中で処理されている他の命令がフォールト指示なしに完了することができるかどうかを判断するために、前記他の命令を並列に評価することであって、前記他の命令が、前記例外状態が検出された前記命令よりも古い命令である、評価すること
をさらに備える、C8に記載の方法。
[C11]
前記より古い命令がフォールト指示なしに完了することができると判断されると、前記例外状態に応答して前記割込みを処理することであって、それにより、前記割込みハンドラが実行され、前記プロセッサが通常のプログラムフローに戻る、処理すること
をさらに備える、C10に記載の方法。
[C12]
前記より古い命令がフォールト指示なしに完了することができないという前記判断時に、前記割込みハンドラ命令が前記命令キャッシュ中に存在することを保証するために前記ステップを終了すること
をさらに備える、C10に記載の方法。
[C13]
複数の検出された例外状態の中で前記例外状態に優先順位を付けることと、
前記優先順位を付けられた例外状態に関連付けられたプログラムカウンタ相対ブランチ命令のアドレスである割込みベクトルテーブルアドレスを保持する特殊目的レジスタを選択すること
をさらに備える、C8に記載の方法。
[C14]
前記命令がプログラムカウンタ(PC)相対ブランチ命令である、C13に記載の方法。
[C15]
前記命令キャッシュ中に前記命令が存在するとき、前記命令を実行することなしに前記命令キャッシュ中の前記命令をフェッチすること
をさらに備える、C8に記載の方法。
[C16]
割込み処理論理をもつプロセッサであって、
プロセッサパイプラインの様々なステージにおいて1つまたは複数の例外状態を検出するように動作可能な例外検出論理回路と、
1つまたは複数の検出された例外状態から選択された最高優先順位の検出された例外状態に関する所定の優先順位に基づいて例外ベクトルアドレスを発生するように動作可能な優先順位付け論理回路と、
前記プロセッサが前記検出された例外状態に応答して割込みを受け付ける前に、前記選択された例外状態に応答して前記例外ベクトルアドレスにおける命令の存在について命令キャッシュを検査するように動作可能な第1の論理回路と、
前記命令を前記命令キャッシュ中にロードするために、前記命令が前記命令キャッシュ中に存在しないとき、前記命令キャッシュより上のストレージに前記例外ベクトルアドレスにおける前記命令をプリフェッチするように動作可能な第2の論理回路であって、それにより、前記プロセッサが前記検出された例外状態に応答して前記割込みを受け付ける時間までに、前記命令が前記命令キャッシュ中で利用可能になる、第2の論理回路と
を備えるプロセッサ。
[C17]
前記例外アドレスにおける前記命令が、前記最高優先順位の検出された例外状態に関連付けられた割込みハンドラの開始アドレスである、C16に記載のプロセッサ。
[C18]
前記例外アドレスにおける前記命令が、前記最高優先順位の検出された例外状態に関連付けられた割込みベクトルテーブル中に保持された命令である、C16に記載のプロセッサ。
[C19]
前記命令がプログラムカウンタ(PC)相対ブランチ命令であると判断すると、前記最高優先順位の検出された例外状態に関連付けられた割込みハンドラのブランチターゲットアドレスを計算するための第3の論理回路と、
前記ブランチターゲットアドレスにおける割込みハンドラ命令の存在について前記命令キャッシュを検査するための第4の論理回路と、
前記割込みハンドラ命令を前記命令キャッシュにロードするために、前記割込みハンドラ命令が前記命令キャッシュ中に存在しないとき、前記命令キャッシュより上のストレージに前記ブランチターゲットアドレスにおける前記割込みハンドラ命令をプリフェッチするための第5の論理回路と
をさらに備える、C18に記載のプロセッサ。
[C20]
前記第3の論理回路が、
前記命令がPC相対ブランチ命令であると判断し、アドレスオフセットを発生するための論理回路を有するブランチ検出およびオフセット発生器と、
前記アドレスオフセットを利用してブランチターゲットアドレスを発生するための加算器と
を備える、C19に記載のプロセッサ。
[C21]
命令キャッシュをさらに備え、前記命令キャッシュが、
複数のプログラム命令を保持するためのランダムアクセスメモリ(RAM)部分と、
前記プログラム命令に関連付けられたアドレスを保持するための連想メモリ(CAM)部分であって、前記命令キャッシュの前記RAM部分を読み取ることなしに、前記アドレスに関連付けられた命令が前記命令キャッシュの前記RAM部分中に存在するかまたは存在しないかの指示を発生するためのアドレスを用いてアクセスできる、CAM部分と
を備える、C16に記載のプロセッサ。
[C22]
前記命令パイプライン中で処理されている他の命令がフォールト指示なしに完了することができるかどうかを判断するために、前記他の命令を並列に評価するための割込み論理回路であって、前記他の命令が、前記例外状態が検出された前記命令よりも古い命令である、割込み論理回路
をさらに備える、C16に記載のプロセッサ。

Claims (22)

  1. プロセッサ中の命令パイプラインの1つまたは複数のステージにおける第1の命令の実行の失敗に起因する例外状態を検出することと、
    前記プロセッサが前記検出された例外状態に応答して発生した割込みを受け付けるように判断することと並列して、前記検出された例外状態に応答して割込みハンドラの開始アドレスにおける第2の命令の存在について命令キャッシュを検査することと、
    前記第2の命令を前記命令キャッシュにロードするために、前記第2の命令が前記命令キャッシュ中に存在しないとき、前記命令キャッシュ以外のストレージから前記割込みハンドラの前記開始アドレスにおける前記第2の命令をプリフェッチすることであって、それにより、前記プロセッサが前記検出された例外状態に応答して発生した前記割込みを受け付ける時間までに、前記第2の命令が前記命令キャッシュ中で利用可能になる、プリフェッチすることと
    を備える、割込み処理のための方法。
  2. 前記命令パイプライン中で処理されている第3の命令がフォールト指示なしに完了することができるかどうかを判断するために、前記第3の命令を並列に評価することであって、前記第3の命令が、前記例外状態が検出された前記第1の命令よりも古い命令である、評価すること
    をさらに備える、請求項1に記載の方法。
  3. 前記より古い命令がフォールト指示なしに完了することができると判断されると、前記例外状態に応答して前記割込みを処理することであって、それにより、前記割込みハンドラが実行され、前記プロセッサが通常のプログラムフローに戻る、処理すること
    をさらに備える、請求項2に記載の方法。
  4. 前記より古い命令がフォールト指示なしに完了することができないと判断されると、前記検査することおよび前記プリフェッチすることを終了すること
    をさらに備える、請求項2に記載の方法。
  5. 複数の検出された例外状態の中で前記例外状態に優先順位を付けることと、
    前記優先順位を付けられた例外状態に関連付けられた前記割込みハンドラの前記開始アドレスである割込みベクトルアドレスを保持する特殊目的レジスタを選択することと
    をさらに備える、請求項1に記載の方法。
  6. 前記選択された特殊目的レジスタからの前記割込みベクトルアドレスをプリフェッチアドレスレジスタに記憶することと、
    前記プリフェッチアドレスレジスタに記憶された前記アドレスにおける前記第2の命令をプリフェッチすることと
    をさらに備える、請求項5に記載の方法。
  7. 前記命令キャッシュ中の前記割込みハンドラの前記開始アドレスにおける前記第2の命令の前記存在について検査することが、
    前記割込みハンドラの前記開始アドレスと一致するアドレスが、前記命令キャッシュの連想メモリ部に記憶されているか否かを調べることと、 前記命令キャッシュのランダムアクセスメモリ部分を読み取ることなしに、前記第2の命令が前記命令キャッシュ中に存在するかまたは存在しないかの指示を発生することとを備える、請求項1に記載の方法。
  8. 割込みベクトルテーブルを利用する割込み処理のための方法であって、前記方法が、
    プロセッサ中の命令パイプラインの1つまたは複数のステージにおける例外状態を検出することと、
    前記検出された例外状態に応答して割込みベクトルテーブル中に保持されたベクトルアドレスにおける命令の存在について命令キャッシュを検査することと、
    前記プロセッサが前記検出された例外状態に応答して割込みを受け付ける前に、前記命令が前記命令キャッシュ中に存在するとき、前記ベクトルアドレスにおける前記命令をフェッチすることと、
    前記命令と前記割込みベクトルテーブルとを前記命令キャッシュにロードするために、前記命令が前記命令キャッシュ中に存在しないとき、前記命令キャッシュ以外のストレージから前記命令をプリフェッチすることであって、前記命令が、割込みハンドラのアドレスが判断されるプログラムカウンタ相対ブランチ命令である、プリフェッチすることと
    を備える方法。
  9. 前記プログラムカウンタ相対ブランチ命令に従って前記検出された例外状態に関連付けられた前記割込みハンドラを示すブランチターゲットアドレスを計算することと、
    前記ブランチターゲットアドレスにおける割込みハンドラ命令の存在について前記命令キャッシュを検査することと、
    前記割込みハンドラ命令を前記命令キャッシュにロードするために、前記割込みハンドラ命令が前記命令キャッシュ中に存在しないとき、前記命令キャッシュより上のストレージから前記ブランチターゲットアドレスにおける前記割込みハンドラ命令をプリフェッチすることであって、それにより、前記プロセッサが前記検出された例外状態に応答して前記割込みを受け付ける時間までに、前記割込みハンドラ命令が前記命令キャッシュ中で利用可能になる、プリフェッチすることと
    をさらに備える、請求項8に記載の方法。
  10. 前記命令パイプライン中で処理されている他の命令がフォールト指示なしに完了することができるかどうかを判断するために、前記命令パイプライン中の前記他の命令を並列に評価することであって、前記他の命令が、前記例外状態が検出された前記命令パイプライン中の前の命令よりも古い命令である、評価すること
    をさらに備える、請求項8に記載の方法。
  11. 前記より古い命令がフォールト指示なしに完了することができると判断されると、前記例外状態に応答して前記割込みを処理することであって、それにより、前記割込みハンドラが実行され、前記プロセッサが通常のプログラムフローに戻る、処理すること
    をさらに備える、請求項10に記載の方法。
  12. より古い命令がフォールト指示なしに完了することができないという判断時に、前記割込みハンドラ命令が前記命令キャッシュ中に存在することを保証するための、前記検査することおよび前記プリフェッチすることを終了すること
    をさらに備える、請求項10に記載の方法。
  13. 複数の検出された例外状態の中で前記例外状態に優先順位を付けることと、
    前記優先順位を付けられた例外状態に関連付けられたプログラムカウンタ相対ブランチ命令のアドレスである割込みベクトルテーブルアドレスを保持する特殊目的レジスタを選択すること
    をさらに備える、請求項8に記載の方法。
  14. 前記命令がプログラムカウンタ(PC)相対ブランチ命令である、請求項13に記載の方法。
  15. 前記命令キャッシュ中に前記命令が存在するとき、前記命令を実行することなしに前記命令キャッシュから前記命令をフェッチすること
    をさらに備える、請求項8に記載の方法。
  16. 割込み処理論理をもつプロセッサであって、
    プロセッサパイプラインの様々なステージにおいて1つまたは複数の例外状態を検出するように動作可能な例外検出論理回路と、
    1つまたは複数の検出された例外状態から選択された最高優先順位の検出された例外状態に関する所定の優先順位に基づいて例外ベクトルアドレスを発生するように動作可能な優先順位付け論理回路と、
    前記プロセッサが前記検出された例外状態に応答して発生した割込みを受け付けるように判断することと並列して、前記選択された例外状態に応答して前記例外ベクトルアドレスにおける命令の存在について命令キャッシュを検査するように動作可能な第1の論理回路と、
    前記命令を前記命令キャッシュ中にロードするために、前記命令が前記命令キャッシュ中に存在しないとき、前記命令キャッシュより上のストレージから前記例外ベクトルアドレスにおける前記命令をプリフェッチするように動作可能な第2の論理回路であって、それにより、前記プロセッサが前記検出された例外状態に応答して発生した前記割込みを受け付ける時間までに、前記命令が前記命令キャッシュ中で利用可能になる、第2の論理回路と
    を備えるプロセッサ。
  17. 前記例外ベクトルアドレスにおける前記命令が、前記最高優先順位の検出された例外状態に関連付けられた割込みハンドラの開始アドレスである、請求項16に記載のプロセッサ。
  18. 前記例外ベクトルアドレスにおける前記命令が、前記最高優先順位の検出された例外状態に関連付けられた割込みベクトルテーブル中に保持された命令であって、前記命令が、割込みハンドラのアドレスが判断されるプログラムカウンタ(PC)相対ブランチ命令である、請求項16に記載のプロセッサ。
  19. 前記プログラムカウンタ(PC)相対ブランチ命令に従って前記最高優先順位の検出された例外状態に関連付けられた前記割込みハンドラを示すブランチターゲットアドレスを計算するための第3の論理回路と、
    前記ブランチターゲットアドレスにおける割込みハンドラ命令の存在について前記命令キャッシュを検査するための第4の論理回路と、
    前記割込みハンドラ命令を前記命令キャッシュにロードするために、前記割込みハンドラ命令が前記命令キャッシュ中に存在しないとき、前記命令キャッシュより上のストレージから前記ブランチターゲットアドレスにおける前記割込みハンドラ命令をプリフェッチするための第5の論理回路と
    をさらに備える、請求項18に記載のプロセッサ。
  20. 前記第3の論理回路が、
    前記命令がPC相対ブランチ命令であると判断し、アドレスオフセットを発生するための論理回路を有するブランチ検出およびオフセット発生器と、
    前記アドレスオフセットを利用してブランチターゲットアドレスを発生するための加算器と
    を備える、請求項19に記載のプロセッサ。
  21. 命令キャッシュをさらに備え、前記命令キャッシュが、
    複数のプログラム命令を保持するためのランダムアクセスメモリ(RAM)部分と、 前記プログラム命令に関連付けられたアドレスを保持するための連想メモリ(CAM)部分であって、前記命令キャッシュの前記RAM部分を読み取ることなしに、前記アドレスに関連付けられた命令が前記命令キャッシュの前記RAM部分中に存在するかまたは存在しないかの指示を発生するためのアドレスを用いてアクセスできる、CAM部分と
    を備える、請求項16に記載のプロセッサ。
  22. 前記プロセッサパイプライン中で処理されている他の命令がフォールト指示なしに完了することができるかどうかを判断するために、前記他の命令を並列に評価するための割込み論理回路であって、前記他の命令が、前記例外状態が検出された命令よりも古い命令である、割込み論理回路
    をさらに備える、請求項16に記載のプロセッサ。
JP2011522121A 2008-08-08 2009-07-29 推論的割込みベクトルプリフェッチのための装置および方法 Expired - Fee Related JP5323936B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/188,626 US8291202B2 (en) 2008-08-08 2008-08-08 Apparatus and methods for speculative interrupt vector prefetching
US12/188,626 2008-08-08
PCT/US2009/052118 WO2010017077A2 (en) 2008-08-08 2009-07-29 Apparatus and methods for speculative interrupt vector prefetching

Publications (2)

Publication Number Publication Date
JP2011530741A JP2011530741A (ja) 2011-12-22
JP5323936B2 true JP5323936B2 (ja) 2013-10-23

Family

ID=41653950

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011522121A Expired - Fee Related JP5323936B2 (ja) 2008-08-08 2009-07-29 推論的割込みベクトルプリフェッチのための装置および方法

Country Status (7)

Country Link
US (1) US8291202B2 (ja)
EP (1) EP2327013A2 (ja)
JP (1) JP5323936B2 (ja)
KR (1) KR101284097B1 (ja)
CN (1) CN102112966B (ja)
TW (1) TW201017531A (ja)
WO (1) WO2010017077A2 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9569363B2 (en) 2009-03-30 2017-02-14 Via Technologies, Inc. Selective prefetching of physically sequential cache line to cache line that includes loaded page table entry
US8161246B2 (en) 2009-03-30 2012-04-17 Via Technologies, Inc. Prefetching of next physically sequential cache line after cache line that includes loaded page table entry
US8392644B2 (en) * 2010-07-30 2013-03-05 Mips Technologies, Inc. System and method for automatic hardware interrupt handling
US20130166805A1 (en) * 2010-12-14 2013-06-27 Mitsubishi Electric Corporation Interrupt cause management device and interrupt processing system
US8972642B2 (en) * 2011-10-04 2015-03-03 Qualcomm Incorporated Low latency two-level interrupt controller interface to multi-threaded processor
WO2013095532A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Interrupt return instruction with embedded interrupt service functionality
US9268626B2 (en) 2011-12-23 2016-02-23 Intel Corporation Apparatus and method for vectorization with speculation support
US10019390B2 (en) * 2012-03-30 2018-07-10 Intel Corporation Using memory cache for a race free interrupt scheme without the use of “read clear” registers
GB2503471B (en) * 2012-06-27 2015-05-06 Nordic Semiconductor Asa Integrated-circuit radio
GB2513043B (en) * 2013-01-15 2015-09-30 Imagination Tech Ltd Improved control of pre-fetch traffic
US9330011B2 (en) * 2013-09-20 2016-05-03 Via Alliance Semiconductor Co., Ltd. Microprocessor with integrated NOP slide detector
GB2519108A (en) * 2013-10-09 2015-04-15 Advanced Risc Mach Ltd A data processing apparatus and method for controlling performance of speculative vector operations
GB2522477B (en) 2014-01-28 2020-06-17 Advanced Risc Mach Ltd Speculative interrupt signalling
GB2535514B (en) 2015-02-19 2021-09-22 Advanced Risc Mach Ltd Processor exception handling
DE102015211458A1 (de) * 2015-06-22 2016-12-22 Robert Bosch Gmbh Verfahren und Vorrichtung zum Absichern einer Programmzählerstruktur eines Prozessorsystems und zum Überwachen der Behandlung einer Unterbrechungsanfrage
CN105183541B (zh) * 2015-08-10 2019-07-12 上海斐讯数据通信技术有限公司 一种中断响应方法及系统
GB2543302B (en) * 2015-10-14 2018-03-21 Advanced Risc Mach Ltd Vector load instruction
US11188336B2 (en) * 2015-12-28 2021-11-30 Qualcomm Incorporated Replay of partially executed instruction blocks in a processor-based system employing a block-atomic execution model
CN105893165B (zh) * 2016-03-29 2020-01-14 杭州和利时自动化有限公司 一种指令cache的故障诊断方法及系统
US9570134B1 (en) 2016-03-31 2017-02-14 Altera Corporation Reducing transactional latency in address decoding
US10095637B2 (en) * 2016-09-15 2018-10-09 Advanced Micro Devices, Inc. Speculative retirement of post-lock instructions
US10120819B2 (en) 2017-03-20 2018-11-06 Nxp Usa, Inc. System and method for cache memory line fill using interrupt indication
US10360374B2 (en) * 2017-05-25 2019-07-23 Intel Corporation Techniques for control flow protection
CN113568349B (zh) * 2021-07-27 2023-05-02 深圳市轱辘车联数据技术有限公司 数据处理方法、装置、终端设备及可读存储介质
US11640270B2 (en) * 2021-07-27 2023-05-02 Beijing Tenafe Electronic Technology Co., Ltd. Firmware-controlled and table-based conditioning for flexible storage controller

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09101892A (ja) * 1995-10-06 1997-04-15 Denso Corp 情報処理装置及び例外処理用シーケンサ
JP2929980B2 (ja) * 1995-10-06 1999-08-03 株式会社デンソー 情報処理装置
US5938762A (en) * 1995-10-06 1999-08-17 Denso Corporation Method and apparatus for performing exception processing routine in pipeline processing
US6192466B1 (en) * 1999-01-21 2001-02-20 International Business Machines Corporation Pipeline control for high-frequency pipelined designs
JP2000242507A (ja) * 1999-02-23 2000-09-08 Matsushita Electric Ind Co Ltd プロセッサ
JP2000347931A (ja) * 1999-06-03 2000-12-15 Matsushita Electric Ind Co Ltd キャッシュメモリおよびキャッシュメモリ制御方法
JP2001056781A (ja) * 1999-08-19 2001-02-27 Sharp Corp 情報処理装置
US6487653B1 (en) * 1999-08-25 2002-11-26 Advanced Micro Devices, Inc. Method and apparatus for denormal load handling
US6651163B1 (en) * 2000-03-08 2003-11-18 Advanced Micro Devices, Inc. Exception handling with reduced overhead in a multithreaded multiprocessing system
JP2001306335A (ja) * 2000-04-27 2001-11-02 Sony Corp コンピュータ
JP4423757B2 (ja) * 2000-06-27 2010-03-03 ソニー株式会社 例外処理システム及び方法、並びに、プロセッサ
US20040111593A1 (en) * 2002-12-05 2004-06-10 International Business Machines Corporation Interrupt handler prediction method and system
EP1562116A1 (en) * 2003-01-24 2005-08-10 Fujitsu Limited Interrupt control method and interrupt control device
US20050182920A1 (en) * 2004-02-13 2005-08-18 Alexandre Palus Apparatus and method for expedited exception handling using a dedicated port
US7613911B2 (en) * 2004-03-12 2009-11-03 Arm Limited Prefetching exception vectors by early lookup exception vectors within a cache memory

Also Published As

Publication number Publication date
WO2010017077A2 (en) 2010-02-11
US8291202B2 (en) 2012-10-16
CN102112966B (zh) 2015-07-01
WO2010017077A3 (en) 2011-04-28
US20100036987A1 (en) 2010-02-11
KR20110051233A (ko) 2011-05-17
EP2327013A2 (en) 2011-06-01
KR101284097B1 (ko) 2013-07-15
JP2011530741A (ja) 2011-12-22
TW201017531A (en) 2010-05-01
CN102112966A (zh) 2011-06-29

Similar Documents

Publication Publication Date Title
JP5323936B2 (ja) 推論的割込みベクトルプリフェッチのための装置および方法
JP2889955B2 (ja) 分岐予測の方法とそのための装置
KR101081662B1 (ko) 비순차적 명령 어드레스들을 프리패치하기 위한 방법 및 장치
KR101788683B1 (ko) 루프에 대한 데이터 프리페치 요청들을 취소하기 위한 방법들 및 장치
JP2009540411A (ja) 高速で安価なストア−ロード競合スケジューリング及び転送機構
US20080140996A1 (en) Apparatus and methods for low-complexity instruction prefetch system
US20080140934A1 (en) Store-Through L2 Cache Mode
US20080022080A1 (en) Data access handling in a data processing system
US20050177819A1 (en) Program tracing in a multithreaded processor
KR20090042303A (ko) 가변 길이 명령 세트의 브랜치 명령의 최종 입도와 캐싱된 브랜치 정보의 관련
US20080141002A1 (en) Instruction pipeline monitoring device and method thereof
US20040225866A1 (en) Branch prediction in a data processing system
US6983359B2 (en) Processor and method for pre-fetching out-of-order instructions
JPH09330221A (ja) マイクロプロセッサにおける早期例外を追跡するシステム及び方法
CN112395000B (zh) 一种数据预加载方法和指令处理装置
US20080140993A1 (en) Fetch engine monitoring device and method thereof
JP5485129B2 (ja) コンピュータシステムにおいて割込みを処理するシステムおよび方法
US7343481B2 (en) Branch prediction in a data processing system utilizing a cache of previous static predictions
US20080141008A1 (en) Execution engine monitoring device and method thereof
JP3112861B2 (ja) マイクロプロセッサ

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121009

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130107

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130115

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130226

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130527

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130530

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130603

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130717

R150 Certificate of patent or registration of utility model

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

LAPS Cancellation because of no payment of annual fees