JP2013037701A - 可変長の命令セット実行モードを有するプロセッサにおけるbhtの有効な利用 - Google Patents

可変長の命令セット実行モードを有するプロセッサにおけるbhtの有効な利用 Download PDF

Info

Publication number
JP2013037701A
JP2013037701A JP2012193259A JP2012193259A JP2013037701A JP 2013037701 A JP2013037701 A JP 2013037701A JP 2012193259 A JP2012193259 A JP 2012193259A JP 2012193259 A JP2012193259 A JP 2012193259A JP 2013037701 A JP2013037701 A JP 2013037701A
Authority
JP
Japan
Prior art keywords
instruction set
execution mode
set execution
bht
instruction
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.)
Granted
Application number
JP2012193259A
Other languages
English (en)
Other versions
JP5497123B2 (ja
Inventor
Wayne Smith Rodney
ロドニー・ウェイン・スミス
Michael Stempel Brian
ブライアン・マイケル・ステムペル
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 JP2013037701A publication Critical patent/JP2013037701A/ja
Application granted granted Critical
Publication of JP5497123B2 publication Critical patent/JP5497123B2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Power Sources (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)

Abstract

【課題】可変長の命令セット実行モードを有するプロセッサにおいて、電力の節約が可能な分岐履歴テーブルの構成を提供する。
【解決手段】少なくとも第1の最小の命令長を有する第1の命令セット実行モード、及び、より小さな、第2の最小の命令長を有する第2の命令セット実行モードで命令を実行するプロセッサにおいて、分岐履歴テーブル(BHT)46のあらゆるカウンタにアクセスし、現在の命令セット実行モードに基づいて多重化されたインデックスアドレスビットの数を削減する、行インデックスアドレス及びカウンタインデックスアドレスが形成される。一実施形態において、BHTの行内のカウンタは、当該BHTの半分が一つの命令セット実行モードにおける各アクセスについて電源を落とすことができるような方法でインデックスを付けられ、配置される。
【選択図】図4

Description

本発明は一般に、プロセッサの分野に関し、特に、可変長の命令セット実行モードを有するプロセッサにおける分岐履歴テーブルの有効な構成に関する。
プロセッサ用の従来の命令セットアーキテクチャは均一な命令の長さを有する。つまり、命令セット中の全ての命令は、同じ数のビット(例えば、16又は32)を備える。可変長の命令セット実行モードを有するプロセッサは、なおプロセッサは異なるビット長の命令を実行し得るが、従来から知られている。例えば、ARMアーキテクチャの最近のバージョンは、32ビットの命令セット実行モード(ARMモード)で実行される従来の32ビットのARM命令のみならず、16ビットの命令セット実行モード(サムモード)(Thumb mode)で実行される16ビットの命令をも有する。
可変長の命令を実行するプロセッサに関する一つの問題は、命令が均一のメモリ境界に属さないということである。従って、命令(又は命令に関連付けられる付随的な構成)を介してインクリメントする、又はランダムにアドレス指定する、回路又は演算は、均一なインクリメント又はアドレス指定スキームを利用できない。むしろ、これらはアドレス指定スキームを、現在実行されている命令の長さ、即ち現在の命令セット実行モードに基づいて、変更しなければならない。
大抵の現代のプロセッサは、パイプラインアーキテクチャを採用しており、各々が複数の実行ステップを有するシーケンシャルな命令が実行時に重複する。最大限のパフォーマンスのためには、命令はパイプラインを介して連続的に流れるべきである。パイプライン中で命令を失速させる如何なる状況もパフォーマンスに不利益な影響を及ぼす。命令がパイプラインからフラッシュされ(flushed)て、続いて再度フェッチされなければならない場合、パフォーマンスと電力消費との双方が損害を受ける。
実質的には、あらゆる実在のプログラムが条件分岐命令を含んでおり、その実際の分岐動作は、命令がパイプラインの深部で評価されるまで分からない。分岐命令の実際の評価を待機することから生じるであろう失速を防止するために、大抵の現代のプロセッサは何らかの形式の分岐予測を採用しており、それによって条件分岐命令の分岐動作は、パイプラインで早期に予測される。予測された分岐評価に基づいて、プロセッサは予測されたアドレス−分岐対象のアドレス(分岐が成立する(taken)と予測された場合)又は分岐命令後に次に続くアドレス(分岐が不成立(not taken)と予測された場合)−からの命令を推論的にフェッチ及び実行する。実際の分岐動作が判定されると、分岐が誤って予測された場合、推論的にフェッチされた命令はパイプラインからフラッシュされなければならず、正確な次のアドレスから新たな命令がフェッチされる。誤った分岐予測に応答して推論的に命令をフェッチすることは、プロセッサのパフォーマンスと電力消費に不利な影響を与える。その結果、分岐予測の正確さを改善することは設計上の重要な目標である。
分岐予測の幾つかの方法は、予測されつつある分岐命令の分岐評価履歴及び/又は同一のコードの他の分岐命令に基づく。実際のコードの広範囲に渡る分析は、ここしばらくの分岐評価パターンが将来の分岐命令の評価の良好なインジケータとなり得ることを示す。
分岐予測の一つの公知の形式は、分岐履歴テーブル(Branch History Table)(BHT)を利用して、最近の分岐評価の表示(indication)を格納する。一例として、BHTは複数の飽和カウンタを備えるが、そのMSBはバイモーダルな(bimodal)分岐予測器として機能する。例えば、各カウンタは4つの状態のうちの1つを呈する2ビットのカウンタを備え得るが、各々には
11−予測が強く成立する
10−予測が弱く成立する
01−予測が弱く不成立する
00−予測が強く不成立する
といった重み付けされた予測値が割り当てられる。
カウンタは、対応する分岐命令が「成立(taken)」と評価される度にインクリメントし、命令が「不成立(not taken)」と評価される度にデクリメントする。カウンタのMSBはバイモーダルな分岐予測器であり、これは分岐が成立するのか、成立しないのかを、内在する予測の重みや強度に関わらず予測するであろう。飽和カウンタは、一方向への単独の分岐評価は他方向へ飽和したカウンタの予測を変化させないので、稀な分岐評価の予測誤りを削減する。
「ローカルな」BHTの場合、その分岐評価が予測されつつある各分岐命令は、単独のBHTカウンタと関連付けられる。従って、BHTは分岐命令アドレス(BIA)の一部でインデックスを付けられる(indexed)。多くの現代のプロセッサは、一度のフェッチ動作で、フェッチグループ又はブロック中の複数の命令をフェッチする。この場合、ブロック又はフェッチグループに関連付けられたアドレスは、本明細書で用いられる用語としては、BIAとしてみなされる。「グローバルな」BHTの場合、最近のグローバル分岐評価履歴は、BHTカウンタをインデックスするのに先立って、BIAと連結される(concatenated)(gselect)か、ハッシュされ(gshare)得る。
異なる命令長を有する命令セットは、BHTの設計を複雑化する。特に、各カウンタは分岐命令に関連付けられ、命令は異なる命令セット実行モードでは異なるメモリ境界に位置するので、BHTは理想的には異なる命令セット実行モードごとに異なってインデックスされる。一つの公知の解決法は、BHTを単に最長の命令長に基づいた大きさにする一方で、最短の命令長に基づいてアドレス指定することである。この解決法は、テーブルの大部分を空にするか、より長い分岐命令に関連付けられた二重のエントリを残す。別の公知の解決法は、BHTインデックスアドレスを多重化し、異なる命令セット実行モードごとに命令アドレスの異なる部分を有効に用いることである。これは多数のマルチプレクサを追加するが、これはシリコン領域と電力消費を増加させる。しかしながら、より批判的には、これはクリティカルパスに遅延を付加するので、サイクル時間を増加させ、プロセッサのパフォーマンスに不利な影響を及ぼす。
一つ又は複数の実施形態によれば、BHTのあらゆるカウンタにアクセスし、現在の命令セット実行モードに基づいて多重化されたアドレスビットの数を削減するBHTの行インデックスアドレス及びカウンタインデックスアドレスが形成される。更に、一実施形態において、BHTの行内のカウンタは、一つの命令セット実行モードにおける各アクセスについてBHTの半分の電源を落とすことができるような方法で配置される。
一実施形態は、少なくとも第1の最小の命令長を有する第1の命令セット実行モード、及び、より小さな、第2の最小の命令長を有する第2の命令セット実行モードで命令を実行する可変長の命令セットプロセッサにおけるBHTのあらゆる行にインデックスを付ける(index)アドレスを形成する方法であって、各命令セット実行モードはBHTの行にアドレスビットの異なるサブセットを用いて論理的にインデックスを付ける方法に関連する。第1及び第2の命令セット実行モードの共通のBHT行インデックスアドレスビット(line index address bits)が識別される。第1の命令セット実行モード専用の(exclusive to)最上位のBHT行インデックスアドレスビットと、第2の命令セット実行モード専用の最下位のBHT行インデックスアドレスビットとは、命令セット実行モードインジケータに基づいて多重化される(multiplexed)。共通の且つ多重化されたアドレスビットは連結され(concatenated)、BHT中の行は連結されたアドレスを用いてインデックスを付けられる。
別の実施形態は、少なくとも第1の最小の命令長を有する第1の命令セット実行モード、及び、より小さな、第2の最小の命令長を有する第2の命令セット実行モードで命令を実行する可変長の命令セットプロセッサのBHTのあらゆるカウンタにアクセスするための行インデックスアドレス及びカウンタインデックスアドレスを形成する方法に関連する。BHT中の行は、第2の命令セット実行モードの行インデックスアドレスビットを用いてインデックスを付けられる。第1の命令セット実行モード専用の最上位のBHT行インデックスアドレスビットと、第2の命令セット実行モード専用の最下位のBHTカウンタインデックスアドレスビットとは、命令セット実行モードインジケータに基づいて多重化される。各BHTの行のカウンタは、第2の命令セット実行モードの最下位のカウンタインデックスアドレスビット以外の全てを用いて、多重化されたビットと連結して、インデックスが付けられる。
また別の実施形態は、少なくとも第1の最小の命令長を有する第1の命令セット実行モード、及び、より小さな、第2の最小の命令長を有する第2の命令セット実行モードで命令を実行する可変長の命令セットプロセッサの複数のカウンタを備えるBHTを動作させる方法に関連する。BHT全体は、BHTアクセス期間に第2の命令セット実行モードで電源が供給される。第1の命令セット実行モードにおけるBHTアクセス期間には、BHTの半分のみに電源が供給される。
更に別の実施形態はプロセッサに関連する。該プロセッサは、フェッチステージを有し、少なくとも第1の最小の命令長を有する第1の命令セット実行モード、及び、より小さな、第2の最小の命令長を有する第2の命令セット実行モードで命令を実行するように動作する、命令実行パイプラインを備える。該プロセッサはまた、第1の命令セット実行モードで、BHTの半分のみに電源が供給されるようにフェッチパイプラインステージの命令アドレスによってインデックスを付けられ、配置された複数のカウンタを含むBHTを備える。
図1は、プロセッサの機能ブロック図である。 図2は、プロセッサのフェッチステージの機能ブロック図である。 図3は、一実施形態に係るBHTの機能ブロック図である。 図4は、1つのプロセッサ命令セット実行モード期間にBHTの半分のみに電源が供給される、異なる実施形態に係るBHTの機能ブロック図である。
図1は、プロセッサ10の機能ブロック図を示す。プロセッサ10は、命令ユニット12と、1つ又は複数の実行ユニット14とを備える。命令ユニット12は実行ユニット14に対して命令フローの集中制御を提供する。命令ユニット12は、命令を命令キャッシュ16からフェッチするが、メモリアドレス変換及び許可は命令側の変換ルックアサイドバッファ(instruction-side Translation Lookaside Buffer)(ITLB)18によって管理される。
実行ユニット14は、命令ユニット12によってディスパッチされる命令を実行する。実行ユニット14は汎用レジスタ(GPR)20に読み出し及び書き込みを行い、データキャッシュ22からのデータにアクセスするが、メモリアドレス変換及び許可はメイン変換ルックアサイドバッファ(Translation Lookaside Buffer)(TLB)24によって管理される。種々の実施形態において、ITLB18は、TLB24の一部のコピーを備え得る。あるいは、ITLB18とTLB24は一体であってもよい。同様に、プロセッサ10の種々の実施形態において、命令キャッシュ16とデータキャッシュ22は一体であっても、統合されてもよい。命令キャッシュ16及び/又はデータキャッシュ22におけるミスは、図1で統合された命令及びデータキャッシュ26として示される、第2のレベル、即ちL2キャッシュ26へのアクセスを引き起こすが、他の実施形態では別個のL2キャッシュを備えてもよい。L2キャッシュ26におけるミスは、メモリインタフェース30の制御の下、メイン(外部の)メモリ28へのアクセスを引き起こす。
命令ユニット12は、プロセッサ10のパイプラインのフェッチステージ32とデコードステージ36を備える。フェッチステージ32は、命令キャッシュ16にアクセスして命令を取り出すが、これは所望の命令が命令キャッシュ16又はL2キャッシュ26に存在しない場合、それぞれL2キャッシュ26及び/又はメモリ28へのアクセスを含み得る。デコードステージ36は、取り出された命令をデコードする。命令ユニット12は更に、デコードステージ36によってデコードされた命令を格納する命令キュー38と、待ち行列に入れられた(queued)命令を適当な実行ユニット14にディスパッチする命令ディスパッチユニット40を備える。
分岐予測ユニット(branch prediction unit)(BPU)42は条件分岐命令の実行動作を予測する。フェッチステージ32の命令アドレスは分岐対象アドレスキャッシュ(BTAC)44と分岐履歴テーブル(BHT)46に対して、命令キャッシュ16からの命令フェッチに並行してアクセスする。BTAC44におけるヒットは、以前に成立すると評価された分岐命令であることを示し、BTAC44は分岐命令の最後の実行の分岐対象アドレス(BTA)を供給する。BHT46は、分析された(resolved)分岐命令に対応する分岐予測レコードを保持するが、当該レコードは、既知の分岐が以前に成立(taken)又は不成立(not taken)を評価されたかどうかを示す。BHT46は、例えば、分岐が成立するか成立しないかの弱い予測から強い予測を、分岐命令の以前の評価に基づいて供給する飽和カウンタを備え得る。BPU42は、BTAC44からのヒット/ミス情報、及びBHT46からの分岐履歴情報を評価して、分岐予測を定式化する(formulate)。BPU42は、グローバル分岐履歴レジスタ、以前の分岐予測の正確さをトラッキングする回路又はテーブルなどといった、分岐予測の正確さを増すための付加的な回路(図示せず)を備えてもよい。
図2は、フェッチステージ32と命令ユニット12の分岐予測回路を、より詳細に示す機能ブロック図である。図2中の点線は、機能的なアクセス関係を示し、必ずしも直接的な接続を示すものではないことに留意されたい。フェッチステージ32は、様々なソースから命令アドレスを選択するキャッシュアクセスステアリングロジック(steering logic)48を備える。本実施形態では、3つのステージ:フェッチ1ステージ50、フェッチ2ステージ52、及びフェッチ3ステージ54を備える、命令フェッチパイプラインに、サイクルごとに1つの命令アドレスが送り出される(launched)。
キャッシュアクセスステアリングロジック48は、フェッチパイプラインに送り出すべき命令アドレスを様々なソースから選択する。1つの命令アドレスソースは、次に続く命令アドレス(これは1つの命令、又は複数の命令を備えるフェッチグループ若しくはブロックに関連付けられてもよい)を生成するフェッチ1パイプラインステージ50の出力で動作するインクリメンタ(incrementor)56の出力である。別の命令アドレスソースはBTAC44であり、BPU42が分岐は成立すると予測する場合、分岐命令の以前の実行の分岐対象アドレスを供給する。他の命令アドレスソースには、例外ハンドラ、割り込みクトルアドレスなどが含まれる。
フェッチ1ステージ50とフェッチ2ステージ52は、同時の、並行した、2段アクセスを命令キャッシュ16とBTAC44に行い、また、最初のサイクルでBHT46に同時にアクセスする。特に、フェッチ1ステージ50の命令アドレスは、命令キャッシュ16、BTAC44、及びBHT46に第1のキャッシュアクセスサイクル期間にアクセスして、アドレスに関連付けられた命令が命令キャッシュ16に存在するかどうか(命令キャッシュ16におけるヒット又はミスを介して)、既知の分岐命令が命令アドレスに関連付けられているかどうかを(BTAC44におけるヒット又はミスを介して)確認し、分岐予測を(BHT46のカウンタの値を介して)取得する。続いて第2のキャッシュアクセスサイクルで、命令アドレスはフェッチ2ステージ52にムーブし、命令アドレスがそれぞれのキャッシュ16、44でヒットする場合、命令は命令キャッシュ16から利用可能であり、及び/又は、分岐対象アドレス(BTA)はBTAC44から利用可能である。
命令アドレスが命令キャッシュ16にない場合、フェッチ3ステージ54に進んでL2キャッシュ26へのアクセスを始める(launch)。当業者は、例えば命令キャッシュ16及びBTAC44のアクセスタイミングによっては、フェッチパイプラインが図2に示される実施形態よりも多数又は少数のレジスタステージを備え得ることを容易に認識するであろう。
本明細書において、「機能命令アドレス(functional instruction address)」という用語は、最下位の使用されないビットを無視した、命令にアクセスするのに実際に用いられるバイトメモリアドレスのビットをいう。機能命令アドレスは、異なる命令長については異なるバイトメモリアドレスビットを用いて形成される。例えば、4096個の16ビットの命令はバイトメモリアドレスビット[12:1]でアドレス指定される(addressed)。ビット0は、個別のバイトがアドレス指定されていないため、16ビットの命令の機能命令アドレスの一部ではない。同様に、4096個の32ビットの命令は、バイトメモリアドレスビット[13:2]でアドレス指定される。バイトメモリアドレスビット[1:0]のどちらも、バイトもハーフワード(halfwords)もアドレス指定されていないので、32ビットの命令の機能命令アドレスの一部ではない。
BHT46の一実施形態の機能ブロック図が、図3に示されている。BHT46は、行ごとに8個のカウンタを有する、512行に配置された、4096個の2ビットのカウンタを備える。従って、行インデックスアドレスは9ビットを備え、カウンタインデックスアドレスは3ビットを備える。しかしながら、異なる最小長の命令を実行する異なる命令セット実行モードでは、行及びカウンタアドレスビットは、機能命令アドレスにおける相違に対応して、異なるであろう。特に、ネイティブな(native)行インデックスアドレスは、32ビットの命令セット実行モードで命令アドレスビット[13:5]を備え、16ビットの命令セット実行モードでビット[12:4]を備えるであろう。同様に、ネイティブなカウンタインデックスアドレスは、32ビットの命令セット実行モードで命令アドレスビット[4:2]を備え、16ビットの命令セット実行モードでビット[3:1]を備えるであろう。
本明細書において、特定の最小の命令長を有する所与の命令セット実行モードの「ネイティブな(native)」行インデックスアドレス及びカウンタインデックスアドレスという用語は、全ての命令が同一の長さである場合に、BHT46にアクセスするために用いられるであろう命令アドレスビットをいう。特に、ネイティブなカウンタインデックスアドレスは、行ごとの全ての2個のカウンタに一意にインデックスを付ける(index)のに必要とされる最下位のn個の機能命令アドレスビットを備える。ネイティブな行インデックスアドレスは、BHT46の全ての2行に一意にインデックスを付けるのに必要とされる機能命令アドレスの次のm個のより高位のビットを備える。
ネイティブな行インデックスアドレス及びカウンタインデックスアドレス間の多重化は、命令セット実行モードをセレクタとして使用して、全ての(m+n)ビット(図3の実施形態では、12ビット)を多重化することを必要とし、容認しがたい電力消費とアクセス遅延をもたらす結果となるであろう。
図3に示される実施形態において、行インデックスアドレスは32ビット及び16ビットの命令セット実行モード、つまり、ビット[12:5]、の双方に共通するネイティブな行インデックスアドレスビットを用い、これらの共通のビットを連結することで形成されるが、ビットは、対応する命令セット実行モード時にはそれぞれのネイティブな行インデックスアドレスに限定される。つまり、ビット13(32ビット命令セット実行モードのネイティブな行インデックスアドレスに限定される)及びビット4(16ビットの命令セット実行モードのネイティブな行インデックスアドレスに限定される)は、現在の命令セット実行モードに基づいて共に多重化され、共通のビット[12:5]に連結されて、9ビットの行インデックスアドレスが形成される。
図3に示されるように、この9ビットの行インデックスアドレスは、BHT46の行にインデックを付けるのに先立って、ハッシュ関数又は他のロジック58などによって、グローバルな分岐履歴情報と随意で結合され得る。本実施形態においては、現在の命令セット実行モードに基づいて、全てのネイティブなカウンタインデックスアドレスが多重化される。特に、32ビットの命令セット実行モードのビット[4:2]、16ビットの命令セット実行モードのビット[3:1]は、各行内のカウンタにインデックを付ける。これはカウンタインデックスアドレスの3つのビットと行インデックスアドレスの1つのビットを多重化し、全てのネイティブな行インデックスアドレスビット及びカウンタインデックスアドレスビットが多重化される場合は12個であるのに対し、BHT46について合計で4個のマルチプレクサを必要とする。
図4は、BHT46の別の実施形態を示すが、32ビット及び16ビットの命令セット実行モードの双方においてBHT46のあらゆるカウンタを充分に利用するのに、シングルビットのマルチプレクサのみが必要とされる。行インデックスアドレスは、より小さな最小の命令長を有する命令セット実行モードについてネイティブな行インデックスアドレスであり、この場合、16ビットの命令セット実行モード、即ち、ビット[12:4]である。ここで繰り返しになるが、行インデックスアドレスは、ロジック58のグローバル分岐履歴によって変更されてもよい。カウンタインデックスアドレスは、32ビット及び16ビットの命令セット実効モード双方に共通のネイティブなカウンタインデックスアドレスビット、つまり、ビット[3:2]を用い、これらの共通のビットを連結することで形成されるが、ビットは連結されたネイティブな行/カウンタインデックスアドレス各々に限定される。つまり、ビット13(32ビットの命令セット実行モードのネイティブな行インデックスアドレスに限定される)とビット1(16ビットの命令セット実行モードのネイティブなカウンタインデックスアドレスに限定される)が、現在の命令セット実行モードに基づいて共に多重化され、共通のビット[3:2]に連結されて、3ビットのカウンタインデックスアドレスを形成する。
また、図4の実施形態において、BHT46は2つの部分に分割されるが、その各々が別個に電源を供給される。更に、カウンタは、偶数のカウンタインデックスアドレス(即ち、0で終わる)を有するカウンタが当該行の一方の半分に、奇数のカウンタインデックスアドレス(即ち、1で終わる)を有するカウンタは当該行の他方の半分に存在するように、各行に配置される。32ビットの命令セット実行モードでは、カウンタインデックスアドレスの最下位ビットは13であるため、当該モードのときは、BHT46の半分のみに電源が供給される必要があり、BHT46のアクティブな半分はビット13によって選択される。これは、プロセッサが32ビットの命令セット実行モードで動作しているときに、有意な電力の節約を意味する。
図2に示されるプロセッサ10のフェッチステージ32の実施形態において、フェッチnステージレジスタ50、52、54は各々、4つのハーフワード(8バイト)を保持する。従って、各フェッチnステージレジスタ50、52、54は、32ビットの命令セット実行モードでは最大で2つの命令を、16ビットの命令セット実行モードでは最大で4つの命令を保持する。それ故に、BHT46アクセスは、32ビットのモードでは最大で2つのカウンタ値を、16ビットのモードでは最大で4つのカウンタ値を取り出し得る。同一のサイクルで8つのカウンタ値全てがアクセスされる場合はない。
図4のBHT46の実施形態で、カウンタは更に、互いに特定のBHT46アクセスに限定されるカウンタ値、つまり、双方に同時にアクセスすることができないカウンタは、直接隣接するように、各行に配置される。これは、図4の出力マルチプレクサの第1の行によって示されるように、カウンタ値がBHT46で多重化されることを可能にし、BHT46の出力における配線の密集(congestion)を低減する。このカウンタの配置に対する制約は、図4の実施形態において、そのカウンタインデックスアドレスがそれらの最上位ビットのみにおいて異なるカウンタを並列することによって達成される。例えば、カウンタインデックスアドレス0x1(001)及び0x5(101)は、ビット3においてのみ異なるが、隣接する。出力マルチプレクサの第1のレベルの各々の選択入力は、関連付けられた命令アドレスのビット3である。
32ビットの命令セット実行モードでは、最大で2つのカウンタ値が単独のBHT46アクセスで取り出され得る。図4に示される第2のレベルのマルチプレクサは、BHT46の偶数側の出力をBHT46の奇数側に導く。ここで繰り返しになるが、これはBHT46の出力における配線の密集を低減し、32ビットの命令セット実行モードにおけるカウンタ値の取り出しを簡略化する。
本願発明は、本明細書において32ビット及び16ビットの命令セット実行モードに関して記載されているが、本願発明は該実施に制限されるものではなく、如何なる可変長の命令セットプロセッサにも有利に適用され得る。また、カウンタ値の多重化と特定の配置は当業者によって変更され、本願発明を任意の特定の実施のために最適化されてもよい。一般に、本願発明は本明細書において特定の特徴、側面及びその実施形態に関して記載されているが、多数のバリエーション、変更、及び他の実施形態が、本願発明の広い範囲内で可能であり、それ故に、あらゆるバリエーション、変更及び実施形態は、本願発明の範囲内にあるものとしてみなされるべきである。従って、本実施形態は、あらゆる側面において例示的なものであって制限的なものではなく、添付の特許請求の範囲の意味及び同等の範囲で生じるあらゆる変更は、該範囲内に包含されることを意図するものと解釈されるべきである。
本願発明は、本明細書において32ビット及び16ビットの命令セット実行モードに関して記載されているが、本願発明は該実施に制限されるものではなく、如何なる可変長の命令セットプロセッサにも有利に適用され得る。また、カウンタ値の多重化と特定の配置は当業者によって変更され、本願発明を任意の特定の実施のために最適化されてもよい。一般に、本願発明は本明細書において特定の特徴、側面及びその実施形態に関して記載されているが、多数のバリエーション、変更、及び他の実施形態が、本願発明の広い範囲内で可能であり、それ故に、あらゆるバリエーション、変更及び実施形態は、本願発明の範囲内にあるものとしてみなされるべきである。従って、本実施形態は、あらゆる側面において例示的なものであって制限的なものではなく、添付の特許請求の範囲の意味及び同等の範囲で生じるあらゆる変更は、該範囲内に包含されることを意図するものと解釈されるべきである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
少なくとも第1の最小の命令長を有する第1の命令セット実行モード、及び、より小さな、第2の最小の命令長を有する第2の命令セット実行モードで命令を実行する可変長の命令セットプロセッサの分岐履歴テーブル(BHT)のあらゆる行にインデックスを付けるためのアドレスを形成する方法であって、各命令セット実行モードは異なるネイティブなインデックスアドレスを有しており、
前記第1及び第2の命令セット実行モードの共通のネイティブな行インデックスアドレスビットを識別し、
前記第1の命令セット実行モード専用の最上位のネイティブな行インデックスアドレスビットと前記第2の命令セット実行モード専用の最下位のネイティブな行インデックスアドレスビットとを、命令セット実行モードインジケータに基づいて多重化し、
前記共通の及び多重化されたアドレスビットを連結し、
前記BHTの行に前記連結されたアドレスを用いてインデックスを付ける
ことを含む、方法。
[C2]
前記BHTの行にインデックスを付けることに先立って、前記連結されたアドレスをグローバルな分岐履歴値でハッシングすることを更に含む、C1記載の方法。
[C3]
前記連結されたアドレスを前記グローバルな分岐履歴値でハッシングすることは、前記連結されたアドレスと前記グローバルな分岐履歴値との間で排他的論理和をとることを含む、C2記載の方法。
[C4]
インデックスを付けられた行のカウンタインデックスアドレスは、前記第1の命令セット実行モードの前記ネイティブなカウンタインデックスアドレスと前記第2の命令セット実行モードの前記ネイティブなカウンタインデックスアドレスとを多重化することによって形成される、C1記載の方法。
[C5]
前記第1の最小の命令長は32ビットであり、前記第2の最小の命令長は16ビットである、C1記載の方法。
[C6]
前記BHTは各行8個のカウンタを有する512行を備え、
前記共通のネイティブな行インデックスアドレスビットはビット[12:5]を備え、 前記第1の命令セット実行モード専用の前記最上位のネイティブな行インデックスアドレスビットはビット13を備え、
前記第2の命令セット実行モード専用の前記最下位のネイティブな行インデックスアドレスビットはビット4を備える、
C4記載の方法。
[C7]
インデックスを付けられた行のカウンタインデックスアドレスは、前記第1の命令セット実行モードのアドレスビット[4:2]と前記第2の命令セット実行モードのアドレスビット[3:1]とを多重化することによって形成される、C5記載の方法。
[C8]
少なくとも第1の最小の命令長を有する第1の命令セット実行モード、及び、より小さな、第2の最小の命令長を有する第2の命令セット実行モードで命令を実行する可変長の命令セットのプロセッサの分岐履歴テーブル(BHT)のあらゆるカウンタにアクセスするための行インデックスアドレス及びカウンタインデックスアドレスを形成する方法であって、
前記BHTの行に前記第2の命令セット実行モードの前記ネイティブな行インデックスアドレスを用いてインデックスを付け、
前記第1の命令セット実行モード専用の最上位のネイティブな行インデックスアドレスビットと前記第2の命令セット実行モード専用の最下位のネイティブなカウンタインデックスアドレスとを多重化し、
前記多重化されたビットと連結された、各BHTの行におけるカウンタを、前記第2の命令セット実行モードの前記最下位のネイティブなカウンタインデックスアドレスビット以外の全てを用いてインデックスを付ける
ことを含む、方法。
[C9]
前記BHTの2つの部分に別個に電源を供給し、
各行の前記カウンタを、奇数のカウンタインデックスアドレスを有するカウンタは一方の部分にグループ化され、偶数のカウンタインデックスアドレスを有するカウンタは他方の部分にグループ化されるように順序付け、
前記第1の命令セット実行モード専用の最上位のネイティブな行インデックスアドレスビットの値に基づいて、前記第1の命令セット実行モードで前記BHTの半分にのみ電源を供給する
ことを更に含む、C8記載の方法。
[C10]
各行の前記カウンタを、前記BHTから同時に読み出すことができないカウンタ値が隣接するように順序付けることを更に備える、C9記載の方法。
[C11]
前記第1の最小の命令長は32ビットであり、前記第2の最小の命令長は16ビットである、C8記載の方法。
[C12]
前記BHTは各行8個のカウンタを有する512行を備え、
前記第2の命令セット実行モードの前記ネイティブな行インデックスアドレスビットはビット[12:4]を備え、
前記第1の命令セット実行モード専用の最上位のネイティブな行インデックスアドレスビットはビット13を備え、前記第2の命令セット実行モード専用の最下位のネイティブなカウンタインデックスアドレスビットはビット1を備え、
前記第2の命令セット実行モードの最下位のネイティブなカウンタインデックスアドレスビット以外は全てビット[3:2]を備える、
C11記載の方法。
[C13]
少なくとも第1の最小の命令長を有する第1の命令セット実行モード、及び、より小さな、第2の最小の命令長を有する第2の命令セット実行モードで命令を実行する可変長の命令セットプロセッサの複数のカウンタを備える分岐履歴テーブル(BHT)を動作させる方法であって、
前記第2の命令セット実行モードでのBHTアクセスの期間に前記BHT全体に電源を供給し、
前記第1の命令セット実行モードでのBHTアクセスの期間に前記BHTの半分のみに電源を供給する
ことを含む、方法。
[C14]
偶数のカウンタインデックスアドレスを有する前記カウンタの全てが前記それらのそれぞれの行の一方の半分にあり、奇数のカウンタインデックスアドレスを有する前記カウンタの全てはそれらのそれぞれの行の他方の半分にあるように、前記複数のカウンタを複数の行に配置し、各行は複数のカウンタを有することを更に含む、C13記載の方法。
[C15]
同時にアクセスされることができないカウンタは、それらのそれぞれの行において互いに隣接して並列される、C14記載の方法。
[C16]
フェッチステージを有し、少なくとも第1の最小の命令長を有する第1の命令セット実行モード、及び、より小さな、第2の最小の命令長を有する第2の命令セット実行モードで命令を実行するように動作する命令実行パイプラインと、
前記第1の命令セット実行モードにおいて、前記BHTの半分のみに電源が供給されるように、前記フェッチパイプラインステージの命令アドレスによって、インデックスを付けられ、配置された、複数のカウンタを備える分岐履歴テーブル(BHT)と
を備える、プロセッサ。
[C17]
偶数のカウンタインデックスアドレスを有する前記カウンタの全てがそれらのそれぞれの行の一方の半分にあり、偶数のカウンタインデックスアドレスを有する前記カウンタの全てがそれらのそれぞれの行の他方の半分にあるように、前記BHTの前記複数のカウンタは複数の行に配置され、各行は複数のカウンタを備える、C16記載のプロセッサ。
[C18]
同時にアクセスすることができない前記BHTのカウンタは、それらのそれぞれの行において互いに隣接するように並列される、C17記載のプロセッサ。

Claims (18)

  1. 少なくとも第1の最小の命令長を有する第1の命令セット実行モード、及び、より小さな、第2の最小の命令長を有する第2の命令セット実行モードで命令を実行する可変長の命令セットプロセッサの分岐履歴テーブル(BHT)のあらゆる行にインデックスを付けるためのアドレスを形成する方法であって、各命令セット実行モードは異なるネイティブなインデックスアドレスを有しており、
    前記第1及び第2の命令セット実行モードの共通のネイティブな行インデックスアドレスビットを識別し、
    前記第1の命令セット実行モード専用の最上位のネイティブな行インデックスアドレスビットと前記第2の命令セット実行モード専用の最下位のネイティブな行インデックスアドレスビットとを、命令セット実行モードインジケータに基づいて多重化し、
    前記共通の及び多重化されたアドレスビットを連結し、
    前記BHTの行に前記連結されたアドレスを用いてインデックスを付ける
    ことを含む、方法。
  2. 前記BHTの行にインデックスを付けることに先立って、前記連結されたアドレスをグローバルな分岐履歴値でハッシングすることを更に含む、請求項1記載の方法。
  3. 前記連結されたアドレスを前記グローバルな分岐履歴値でハッシングすることは、前記連結されたアドレスと前記グローバルな分岐履歴値との間で排他的論理和をとることを含む、請求項2記載の方法。
  4. インデックスを付けられた行のカウンタインデックスアドレスは、前記第1の命令セット実行モードの前記ネイティブなカウンタインデックスアドレスと前記第2の命令セット実行モードの前記ネイティブなカウンタインデックスアドレスとを多重化することによって形成される、請求項1記載の方法。
  5. 前記第1の最小の命令長は32ビットであり、前記第2の最小の命令長は16ビットである、請求項1記載の方法。
  6. 前記BHTは各行8個のカウンタを有する512行を備え、
    前記共通のネイティブな行インデックスアドレスビットはビット[12:5]を備え、
    前記第1の命令セット実行モード専用の前記最上位のネイティブな行インデックスアドレスビットはビット13を備え、
    前記第2の命令セット実行モード専用の前記最下位のネイティブな行インデックスアドレスビットはビット4を備える、
    請求項4記載の方法。
  7. インデックスを付けられた行のカウンタインデックスアドレスは、前記第1の命令セット実行モードのアドレスビット[4:2]と前記第2の命令セット実行モードのアドレスビット[3:1]とを多重化することによって形成される、請求項5記載の方法。
  8. 少なくとも第1の最小の命令長を有する第1の命令セット実行モード、及び、より小さな、第2の最小の命令長を有する第2の命令セット実行モードで命令を実行する可変長の命令セットのプロセッサの分岐履歴テーブル(BHT)のあらゆるカウンタにアクセスするための行インデックスアドレス及びカウンタインデックスアドレスを形成する方法であって、
    前記BHTの行に前記第2の命令セット実行モードの前記ネイティブな行インデックスアドレスを用いてインデックスを付け、
    前記第1の命令セット実行モード専用の最上位のネイティブな行インデックスアドレスビットと前記第2の命令セット実行モード専用の最下位のネイティブなカウンタインデックスアドレスとを多重化し、
    前記多重化されたビットと連結された、各BHTの行におけるカウンタを、前記第2の命令セット実行モードの前記最下位のネイティブなカウンタインデックスアドレスビット以外の全てを用いてインデックスを付ける
    ことを含む、方法。
  9. 前記BHTの2つの部分に別個に電源を供給し、
    各行の前記カウンタを、奇数のカウンタインデックスアドレスを有するカウンタは一方の部分にグループ化され、偶数のカウンタインデックスアドレスを有するカウンタは他方の部分にグループ化されるように順序付け、
    前記第1の命令セット実行モード専用の最上位のネイティブな行インデックスアドレスビットの値に基づいて、前記第1の命令セット実行モードで前記BHTの半分にのみ電源を供給する
    ことを更に含む、請求項8記載の方法。
  10. 各行の前記カウンタを、前記BHTから同時に読み出すことができないカウンタ値が隣接するように順序付けることを更に備える、請求項9記載の方法。
  11. 前記第1の最小の命令長は32ビットであり、前記第2の最小の命令長は16ビットである、請求項8記載の方法。
  12. 前記BHTは各行8個のカウンタを有する512行を備え、
    前記第2の命令セット実行モードの前記ネイティブな行インデックスアドレスビットはビット[12:4]を備え、
    前記第1の命令セット実行モード専用の最上位のネイティブな行インデックスアドレスビットはビット13を備え、前記第2の命令セット実行モード専用の最下位のネイティブなカウンタインデックスアドレスビットはビット1を備え、
    前記第2の命令セット実行モードの最下位のネイティブなカウンタインデックスアドレスビット以外は全てビット[3:2]を備える、
    請求項11記載の方法。
  13. 少なくとも第1の最小の命令長を有する第1の命令セット実行モード、及び、より小さな、第2の最小の命令長を有する第2の命令セット実行モードで命令を実行する可変長の命令セットプロセッサの複数のカウンタを備える分岐履歴テーブル(BHT)を動作させる方法であって、
    前記第2の命令セット実行モードでのBHTアクセスの期間に前記BHT全体に電源を供給し、
    前記第1の命令セット実行モードでのBHTアクセスの期間に前記BHTの半分のみに電源を供給する
    ことを含む、方法。
  14. 偶数のカウンタインデックスアドレスを有する前記カウンタの全てが前記それらのそれぞれの行の一方の半分にあり、奇数のカウンタインデックスアドレスを有する前記カウンタの全てはそれらのそれぞれの行の他方の半分にあるように、前記複数のカウンタを複数の行に配置し、各行は複数のカウンタを有することを更に含む、請求項13記載の方法。
  15. 同時にアクセスされることができないカウンタは、それらのそれぞれの行において互いに隣接して並列される、請求項14記載の方法。
  16. フェッチステージを有し、少なくとも第1の最小の命令長を有する第1の命令セット実行モード、及び、より小さな、第2の最小の命令長を有する第2の命令セット実行モードで命令を実行するように動作する命令実行パイプラインと、
    前記第1の命令セット実行モードにおいて、前記BHTの半分のみに電源が供給されるように、前記フェッチパイプラインステージの命令アドレスによって、インデックスを付けられ、配置された、複数のカウンタを備える分岐履歴テーブル(BHT)と
    を備える、プロセッサ。
  17. 偶数のカウンタインデックスアドレスを有する前記カウンタの全てがそれらのそれぞれの行の一方の半分にあり、偶数のカウンタインデックスアドレスを有する前記カウンタの全てがそれらのそれぞれの行の他方の半分にあるように、前記BHTの前記複数のカウンタは複数の行に配置され、各行は複数のカウンタを備える、請求項16記載のプロセッサ。
  18. 同時にアクセスすることができない前記BHTのカウンタは、それらのそれぞれの行において互いに隣接するように並列される、請求項17記載のプロセッサ。
JP2012193259A 2006-09-29 2012-09-03 可変長の命令セット実行モードを有するプロセッサにおけるbhtの有効な利用 Expired - Fee Related JP5497123B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/536,743 2006-09-29
US11/536,743 US7716460B2 (en) 2006-09-29 2006-09-29 Effective use of a BHT in processor having variable length instruction set execution modes

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009526956A Division JP5384344B2 (ja) 2006-09-29 2007-09-28 可変長の命令セット実行モードを有するプロセッサにおけるbhtの有効な利用

Publications (2)

Publication Number Publication Date
JP2013037701A true JP2013037701A (ja) 2013-02-21
JP5497123B2 JP5497123B2 (ja) 2014-05-21

Family

ID=38814527

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2009526956A Expired - Fee Related JP5384344B2 (ja) 2006-09-29 2007-09-28 可変長の命令セット実行モードを有するプロセッサにおけるbhtの有効な利用
JP2012193259A Expired - Fee Related JP5497123B2 (ja) 2006-09-29 2012-09-03 可変長の命令セット実行モードを有するプロセッサにおけるbhtの有効な利用

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2009526956A Expired - Fee Related JP5384344B2 (ja) 2006-09-29 2007-09-28 可変長の命令セット実行モードを有するプロセッサにおけるbhtの有効な利用

Country Status (6)

Country Link
US (2) US7716460B2 (ja)
EP (1) EP2069916B1 (ja)
JP (2) JP5384344B2 (ja)
KR (1) KR101059335B1 (ja)
CN (1) CN101517534B (ja)
WO (1) WO2008039975A1 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327115B2 (en) 2006-04-12 2012-12-04 Soft Machines, Inc. Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode
EP2527972A3 (en) 2006-11-14 2014-08-06 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
CN101853148B (zh) * 2009-05-19 2014-04-23 威盛电子股份有限公司 适用于微处理器的装置及方法
KR101685247B1 (ko) 2010-09-17 2016-12-09 소프트 머신즈, 인크. 조기 원거리 분기 예측을 위한 섀도우 캐시를 포함하는 단일 사이클 다중 분기 예측
CN108376097B (zh) 2011-03-25 2022-04-15 英特尔公司 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段
CN103547993B (zh) 2011-03-25 2018-06-26 英特尔公司 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
WO2012162189A1 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. An interconnect structure to support the execution of instruction sequences by a plurality of engines
TWI603198B (zh) 2011-05-20 2017-10-21 英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
CN102298815B (zh) * 2011-05-20 2014-03-12 宁波讯强电子科技有限公司 一种高矫顽力偏置片、其制造方法及用其制成的声磁防盗标签
US20130007602A1 (en) 2011-06-29 2013-01-03 Apple Inc. Fixed layout electronic publications
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
EP2783280B1 (en) 2011-11-22 2019-09-11 Intel Corporation An accelerated code optimizer for a multiengine microprocessor
US9378017B2 (en) * 2012-12-29 2016-06-28 Intel Corporation Apparatus and method of efficient vector roll operation
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
CN105247484B (zh) 2013-03-15 2021-02-23 英特尔公司 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US20140281116A1 (en) 2013-03-15 2014-09-18 Soft Machines, Inc. Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits
US9627038B2 (en) 2013-03-15 2017-04-18 Intel Corporation Multiport memory cell having improved density area
US9582322B2 (en) 2013-03-15 2017-02-28 Soft Machines Inc. Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US10140138B2 (en) * 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
JP2017516228A (ja) 2014-05-12 2017-06-15 インテル・コーポレーション 自己書き換えコードのハードウェアサポートを提供する方法及び装置
US9413357B2 (en) 2014-06-11 2016-08-09 Cavium, Inc. Hierarchical statistically multiplexed counters and a method thereof
US10198260B2 (en) * 2016-01-13 2019-02-05 Oracle International Corporation Processing instruction control transfer instructions

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021489A (en) * 1997-06-30 2000-02-01 Intel Corporation Apparatus and method for sharing a branch prediction unit in a microprocessor implementing a two instruction set architecture
JP2003256197A (ja) * 2002-02-20 2003-09-10 Arm Ltd データ処理装置における命令の予測
JP2006053830A (ja) * 2004-08-13 2006-02-23 Toshiba Corp 分岐予測装置および分岐予測方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0778735B2 (ja) 1988-12-05 1995-08-23 松下電器産業株式会社 キャッシュ装置と命令読出し装置
US6157980A (en) * 1998-03-23 2000-12-05 International Business Machines Corporation Cache directory addressing scheme for variable cache sizes
US7134005B2 (en) 2001-05-04 2006-11-07 Ip-First, Llc Microprocessor that detects erroneous speculative prediction of branch instruction opcode byte
US6923502B2 (en) 2003-07-28 2005-08-02 Terry Cassaday Chair with switch controls for chair control directory
US20050273559A1 (en) 2004-05-19 2005-12-08 Aris Aristodemou Microprocessor architecture including unified cache debug unit
KR101076815B1 (ko) 2004-05-29 2011-10-25 삼성전자주식회사 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021489A (en) * 1997-06-30 2000-02-01 Intel Corporation Apparatus and method for sharing a branch prediction unit in a microprocessor implementing a two instruction set architecture
JP2003256197A (ja) * 2002-02-20 2003-09-10 Arm Ltd データ処理装置における命令の予測
JP2006053830A (ja) * 2004-08-13 2006-02-23 Toshiba Corp 分岐予測装置および分岐予測方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6012016243; Dharmesh Parikhy et al.: '"Power Issues Related to Branch Prediction"' Proceedings of the Eighth International Symposium on High-Performance Computer Architecture (HPCA.02 , 20020206, page(s): 233 - 244, IEEE *

Also Published As

Publication number Publication date
JP5497123B2 (ja) 2014-05-21
US7716460B2 (en) 2010-05-11
US20100058032A1 (en) 2010-03-04
KR101059335B1 (ko) 2011-08-24
JP5384344B2 (ja) 2014-01-08
CN101517534A (zh) 2009-08-26
JP2010501964A (ja) 2010-01-21
US8185725B2 (en) 2012-05-22
EP2069916B1 (en) 2017-08-02
EP2069916A1 (en) 2009-06-17
KR20090061075A (ko) 2009-06-15
US20080082807A1 (en) 2008-04-03
WO2008039975A1 (en) 2008-04-03
CN101517534B (zh) 2012-10-17

Similar Documents

Publication Publication Date Title
JP5497123B2 (ja) 可変長の命令セット実行モードを有するプロセッサにおけるbhtの有効な利用
US10209993B2 (en) Branch predictor that uses multiple byte offsets in hash of instruction block fetch address and branch pattern to generate conditional branch predictor indexes
US9367471B2 (en) Fetch width predictor
JP5255701B2 (ja) 疎及び密予測を伴うハイブリッド分岐予測デバイス
US5758142A (en) Trainable apparatus for predicting instruction outcomes in pipelined processors
US20060218385A1 (en) Branch target address cache storing two or more branch target addresses per index
US7032097B2 (en) Zero cycle penalty in selecting instructions in prefetch buffer in the event of a miss in the instruction cache
US20080034187A1 (en) Method and Apparatus for Prefetching Non-Sequential Instruction Addresses
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
WO1998012631A1 (en) A cache line branch prediction scheme that shares among sets of a set associative cache
JP2013080497A (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
US20080040576A1 (en) Associate Cached Branch Information with the Last Granularity of Branch instruction in Variable Length instruction Set
US7877587B2 (en) Branch prediction within a multithreaded processor
KR20090089358A (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
US10776119B2 (en) Combined conditional branch and indirect branch target predictor
US7447885B2 (en) Reading prediction outcomes within a branch prediction mechanism
Xia Using Trace Cache in SMT

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130917

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20131217

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20131220

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140117

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140305

R150 Certificate of patent or registration of utility model

Ref document number: 5497123

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

LAPS Cancellation because of no payment of annual fees