JP2019537163A - オペレーションキャッシュ - Google Patents

オペレーションキャッシュ Download PDF

Info

Publication number
JP2019537163A
JP2019537163A JP2019530397A JP2019530397A JP2019537163A JP 2019537163 A JP2019537163 A JP 2019537163A JP 2019530397 A JP2019530397 A JP 2019530397A JP 2019530397 A JP2019530397 A JP 2019530397A JP 2019537163 A JP2019537163 A JP 2019537163A
Authority
JP
Japan
Prior art keywords
cache
entry
immediate
displacement
capacity
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
JP2019530397A
Other languages
English (en)
Other versions
JP7097361B2 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2019537163A publication Critical patent/JP2019537163A/ja
Application granted granted Critical
Publication of JP7097361B2 publication Critical patent/JP7097361B2/ja
Active 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • 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
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution

Abstract

オペレーション(op)キャッシュを使用するためのシステム及び方法が開示される。システム及び方法は、以前にデコードされた命令をキャッシュするためのopキャッシュを含む。opキャッシュは、スレッド間での命令の共有を可能にする複数の物理的にインデックスされ、タグ付けされた命令を含む。opキャッシュは、キャッシュライン内の複数の命令の供給を可能にする複数のウェイを介してチェイニングされる。opキャッシュは、容量を最大にするために、共有されるオペレーションストレージとイミディエイト/ディスプレイスメントストレージとの間に記憶される。【選択図】図3

Description

(関連出願の相互参照)
本願は、2016年12月9日出願の米国特許出願第15/374,727号及び2016年12月13日出願の欧州特許出願第16203863.2号の利益を主張するものであり、これらは、言及することによって本明細書に完全に記載されているものとして援用される。
従来、命令は、命令キャッシュフェッチステージ及び命令デコードステージを有するパイプラインを介してディスパッチされる。例えばx86プロセッサで使用されるような可変幅命令は、固定長命令と比較して、高帯域幅のサイクル当たり複数の命令をデコードするために、かなり余分なハードウェア複雑性を負うことになる。このことは、命令ストリームの構文解析及びデコーディングのために余分なパイプラインステージを必要とし、例えば命令フェッチをリダイレクトする実行された分岐又は予測を誤った分岐等においてパイプラインを再始動させる必要がある場合、このような余分なステージが余分な電力を消費し、レイテンシを増加させる。これにより、サイクル当たりの全体的な命令帯域幅が制限され、性能に影響を与える。また、リダイレクトからの命令がパイプラインに伝播するまで有効な作業を行わずに電力を消費する、アイドル状態のパイプラインステージが多く発生する。このような余分なデコードステージをバイパスし、オペレーション(op)キャッシュ(OC)内の命令の供給を簡素化する必要がある。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができるであろう。
特定の実施形態による、プロセッサのコア処理ユニットを示す図である。 図1のコア処理ユニットのopキャッシュ内のopキャッシュ(OC)エントリを示す図である。 命令キャッシュラインに亘って分割された命令の基本ブロックと、opキャッシュ内の複数の対応付けられたOCエントリと、を示す図である。 命令キャッシュ、分岐予測及びOCパイプラインの処理のフロー図である。 opフェッチパイプラインの処理のフロー図である。 OCビルドパイプラインの処理のフロー図である。 図4の命令キャッシュ、分岐予測及びOCパイプラインを実施する方法を示す図である。 図5のOCフェッチパイプラインを実施する方法を示す図である。 1つ以上の開示された実施形態を実施することができる例示的なデバイスのブロック図である。
opキャッシュ(OC)は、以前にデコードされた命令、具体的には元の可変長フォーマットから固定長の正規フォーマットにデコードされた命令のキャッシュである。OCは、従来の命令キャッシュフェッチ及び命令デコードパイプラインステージを使用する代わりに、ディスパッチのための命令を供給することができる。命令を供給するOCは、リダイレクトパイプラインのレイテンシを短縮し、より広範囲の並列命令ディスパッチを単純化し、サイクル当たりの全体的な命令帯域幅を増加させることによって、サイクル当たりの命令(IPC)の数を改善する。命令を供給するOCは、命令を再フェッチしたり再デコードしたりする必要性を回避し、パイプラインステージがリダイレクトでアイドル状態になる時間を短縮することによって、電力使用量を改善する。OCは、多数のチェイニング(chaining)を一セットで提供して、任意の数の命令をキャッシュラインに供給する。OCは、物理的にインデックスしてタグを付けることによって、スレッド間でコンテンツを共有することが可能である。OCは、opストレージをイミディエイト/ディスプレイスメント(immediate/displacement)ストレージと共有することによって、容量を最大にする。
OCは、固定幅フォーマットでデコードされた命令を含む。したがって、OCは、命令境界を決める必要がなく、バイトストリームから個々の命令を取り出す必要もない。OCを使用する場合、命令を構成部分(例えば、プレフィックス、オペレーションコード(opcode)、ModRM(モード(Mod)、レジスタ(R)及びメモリ(M)変数に基づいてアドレス計算を指定するopcodeに続くバイト)、SIB(スケール(S)、インデックス(I)及びベース(B)に基づいてアドレス計算を指定するopcodeに続くバイト)、及び、イミディエイト/ディスプレイスメントフィールド等)に分解する必要はない。
OCを使用するためのシステム及び方法が開示される。システム及び方法は、以前にデコードされた命令の基本ブロックをキャッシュするOCを含み、命令の基本ブロックは、分岐のターゲットで始まり、分岐命令で終わり、さらに、このようなブロックがキャッシュライン境界に跨る場合、このような境界においてターゲット基本ブロックと、1つ以上の連続する基本ブロックとに分割され、追加の連続するブロックは、交差する連続キャッシュライン境界の各々で形成される。OCは、複数の物理的にインデックスされタグ付けされたエントリを含み、これらのエントリのスレッド間での共有を可能にする。OCは、複数のウェイを介してチェイニングされ、複数のOCエントリがキャッシュライン内の様々な複数の命令を供給することを可能にする。OCの一部は、容量を最大限にするために、op情報又はイミディエイト/ディスプレイスメント値の何れかを記憶することが可能である。
システム及び方法は、OCを使用してキャッシュラインの最後まで又は実行された分岐まで命令フェッチを実行することを含む。これは、複数のマイクロタグに対する入力として使用される基本ブロックの予測フェッチアドレスを受信することと、受信した予測フェッチアドレスをデカップリングキューに書き込むことと、受信したフェッチアドレスが複数のマイクロタグのうち1つのマイクロタグにヒットするかどうかを判別することと、を含む。フェッチアドレスが複数のマイクロタグのうち1つのマイクロタグにヒットした場合、動作モードは、OCモードに切り替えられる。次に、フェッチアドレスは、opキャッシュに転送される。
システム及び方法は、OCフェッチを実行することを含む。これは、OCキューからフェッチアドレスを読み出すことと、OCヒットのためにアクセスされたOCタグをチェックするために、フェッチアドレスを使用してOCタグアレイにアクセスすることと、を含む。比較がヒットを返さなかった場合、フェッチは、従来のフェッチ処理のために命令キャッシュにリダイレクトされる。比較がヒットを返した場合、OCデータアレイが読み出されてデコードされ、イミディエイト/ディスプレイスメント値と、opと、マイクロコードエントリアドレスと、が出力される。イミディエイト/ディスプレイスメント情報が存在する場合、イミディエイト/ディスプレイスメントキューに入れられる。opエントリは、オペレーションキューに入れられる。存在する場合、マイクロコードエントリポイントアドレスは、エントリアドレスキューに入れられる。
図1は、特定の実施形態による、プロセッサ100のコア処理ユニット105のハイレベルブロック図及びフロー図である。処理ユニット105は、スケジューラ及び/又は実行ユニット115にオペレーション(op)を提供するデコーダユニット110を含むが、これに限定されない。デコーダユニット110は、命令キャッシュ122及びOC124に接続された分岐予測器120を含むが、これに限定されない。また、命令キャッシュ122は、デコーダ126に接続されている。デコーダ126及びOC124は、opキュー128に接続されている。
スケジューラ及び/又は実行ユニット115は、整数スケジューラ及び/又は実行ユニット130と、浮動小数点スケジューラ及び/又は実行ユニット132と、を含み、これらの両方がキャッシュ134に接続されているが、これに限定されない。また、キャッシュ134は、L2キャッシュ136と、ロードキュー138と、ストアキュー140と、に接続されている。ロードキュー138、ストアキュー140及びキャッシュ134は、まとめてロードストア(LS)ユニット139と呼ばれる。
整数スケジューラ及び/又は実行ユニット130は、スケジューラ151に接続された整数リネーマ150を含み、スケジューラ151は、算術論理ユニット(ALU)スケジューラ(ALSQ)152と、アドレス生成ユニット(AGU)スケジューラ(AGSQ)154と、を含むが、これに限定されない。また、スケジューラ151(特にALSQ152及びAGSQ154)は、ALU156と、AGU158と、に接続されている。さらに、整数スケジューラ及び/又は実行ユニット130は、整数物理レジスタファイル160を含む。
浮動小数点スケジューラ及び/又は実行ユニット132は、スケジューラ172に接続された浮動小数点リネーマ170を含むが、これに限定されない。また、スケジューラ172は、乗算器174及び加算器176に接続されている。さらに、浮動小数点スケジューラ及び/又は実行ユニット132は、浮動小数点物理レジスタファイル178を含む。
パイプラインプロセッサは、パイプラインに供給される命令の規則的なストリームを必要とする。分岐予測器120は、何れの命令セットをパイプラインプロセッサでフェッチして実行すべきかを予測する。これらの命令は、フェッチされ、命令キャッシュ122に記憶され、命令キャッシュ122から読み出されるとデコーダ126によってopにデコードされる。OC124は、デコーダ126がこれらを生成する場合にopをキャッシュする。opキュー128は、opを実行のためにディスパッチするために、デコーダ126及びOC124からのopを記憶してキューに入れる。
従来のパイプライン処理では、opキューは、ロードop又はストアopである特定のopを、ペイロード(例えば、opからデコードされた制御情報、opに関連するメモリアドレス等)を保持するロードキュー及び/又はストアキューに直接ディスパッチする。例示の目的で、ストアキューは、opキューから複数のopを受け入れ、ディスパッチ時にペイロードをストアキューに書き込んでもよい。アドレス生成時に、ストアキューは、スケジューラからキューインデックスを受信し、何れのストアエントリが処理されているかを特定する。スケジューラは、ディスパッチペイロードを読み出し、それをセグメンテーションチェックのためにセグメンテーションロジックに送り、opパイプライン上の可能な選択のためにロードキューに送る。すなわち、従来のパイプライン処理は、ストアキュー及びロードキューに対する2パス書き込み処理(すなわち、ペイロードのディスパッチ時に1回、メモリ内にアドレスを生成するためのアドレス生成時に1回)である。
一実施形態によれば、opは、従来のパイプライン処理に従ってロードキュー138及びストアキュー140に直接書き込むのではなく、単に、整数スケジューラ及び/又は実行ユニット130と、浮動小数点スケジューラ及び/又は実行ユニット132と、にディスパッチされる。具体的には、opは、(1)整数リネーマ150を介してスケジューラ151に向けられ、(2)浮動小数点リネーマ170を介してスケジューラ172に向けられる。スケジューラ151は、opに関するディスパッチペイロード(例えば、ストアopに関するディスパッチペイロード)の全てをAGSQ154に保持する。すなわち、AGSQ154は、適切なロードキュー138及び/又はストアキュー140のキューエントリが使用可能になるまで、op(例えば、ロードop及びストアop)を保持する。キューエントリが使用可能になり、レジスタ160のソースの準備が整うと、AGSQ154は、アドレスを生成し、ディスパッチペイロードを読み出し、ディスパッチペイロードをロードキュー138及び/又はストアキュー140に送る。
エイジオーダ(age-ordered)オペレーション又はインオーダ(in-order)キューを維持するために、全てのストアopは、特定のキューエントリ又はキュー識別子に関連付けられる。具体的には、スケジューラ151は、AGSQ154がアドレス生成をいつ実行することができるか、及び、スケジューラ151が記憶データ(すなわち、ディスパッチペイロード)をストアキュー140にいつ送ることができるかを知る必要がある。したがって、特定のキューは、使用可能になった場合に、ストアキュー140によってAGSQ154に伝えられる。
ロードキュー138及びストアキュー140は、コミット割り当て解除信号をスケジューラ151(AGSQ154及びALSQ152)に送ることによって、スケジューラ151(AGSQ154及びALSQ152)は、最も古いストアopストアキューインデックスを更新して、アドレス生成を可能にするか、このような古いストアopが各々のストアキューエントリの割り当てを解除して解放するので、若いストアopに関するストアデータを送ることができる。これは、例えば、ロードキュー138及びストアキュー140からの出力(図示省略)をスケジューラ151(AGSQ154及びALSQ152)の入力に加えることによって実施することができる。
ロードopは必ずしもエイジオーダである必要はなく、命令の実行順序を制御するために当業者に知られている他の技術を使用することができる。一実施形態では、ロードopは、ストアopと同様に動作することができる。
AGSQ154によってアドレス生成が実行され、データ/ディスパッチペイロードが必要に応じてロードキュー138及びストアキュー140に記憶されると、コア処理ユニット105はopを実行する。ロードキュー138及びストアキュー140の各々は、ロードopのデータを返し、ストアopの書き込みを実行する。他のタイプのオペレーションでは、スケジューラ151及びスケジューラ172は、各々のソースの準備が整うと、整数スケジューラ及び/又は実行ユニット130、並びに、浮動小数点スケジューラ及び/又は実行ユニット132にopを発行する。
図2は、OC124内のエントリ200を示す図である。エントリ200は、1クロックサイクルで同時にディスパッチするためにエントリ当たり最大8つのオペレーションを保持するように設計されている。動作上、一実施形態では、エントリ200は、以下のように、各々のバイト位置において、バイト情報250に示すように割り当てられた74バイト(合計592ビット)である。エントリ200は、エントリ情報210を含む。エントリ200は、図2においてオペレーション0〜7として特定される8つのオペレーション220のためのストレージを含む。最大4つのマイクロコード命令に対応する4つのマイクロコードエントリポイント(UcodeEP)230用のストレージが使用される。図2に示すように、これらのマイクロコードEP230は、オペレーション220(4)と同じ位置に、その代替として記憶される。一実施形態では、オペレーション220は、バイト250の表現で示されるように、7バイト長である。イミディエイト/ディスプレイスメント(Imm/Disp)情報240が、エントリ200に含まれる。一実施形態では、Imm/Disp情報240は、オペレーション220のこの部分が頻繁に使用されないので、エントリ200の終わり付近で開始するようにフォーマットされ、オペレーション220用のストレージと部分的に重複する。オペレーション位置5,6,7は、必要に応じてオペレーション又はイミディエイト/ディスプレイスメント値を記憶してもよい。一実施形態では、Imm/Disp情報240は、8つの4バイトエントリを含む。
OCマイクロタグのコンテンツは、エントリ200に関連付けられる。マイクロタグアレイは、エントリアレイ(キャッシュのデータ部分)及びフルタグアレイ(OCタグ)と同じインデックス及びウェイを有する別個の物理構造である。マイクロタグアレイは、論理的には同じアレイの一部とみなされるが、物理的には別のものであり、パイプラインの異なる場所で使用されるため、まとめて1つの統合アレイとみなすことができない。マイクロタグアレイは、所望のエントリがOC内に存在してもよいし、しなくてもよいというクイックヒントを提供するのに対して、メインOCタグアレイは、ヒント又はミスの真の指示を提供する。OCマイクロタグコンテンツは、表1に示されている。
Figure 2019537163
OCタグコンテンツは、エントリ200に関連付けられている。タグアレイは、別の物理構造である。タグアレイは、エントリアレイ(キャッシュのデータ部分)及びマイクロタグアレイ(OCマイクロタグ)と同じインデックス及びウェイを含む。タグアレイは、論理的には同じアレイの一部とみなされるが、物理的には別のものであり、パイプラインの異なるステージで使用されるため、これらをまとめて1つの統合アレイとみなすことはできない。OCタグコンテンツは、表2に示されている。
Figure 2019537163
エントリ情報210は、オペレーション220毎又はImm/Disp情報240毎ではなく、エントリ200毎の多岐に亘るビットを含む。このエントリ情報210は、表3に示す情報を含む。
Figure 2019537163
各エントリは、0から7まで数字が付された最大8つのオペレーション220用のストレージを有する。opは、56ビットとしてエンコードされる。
各エントリ200は、最大4つの32ビットImm/Disp値240のための専用ストレージを有する。追加のImm/Disp値240(最大8つまで)は、最も大きな数字が付されたオペレーション220(7)から開始してオペレーション220(5)まで下向きにオペレーション220を置き換えることによって、ビットストレージをオペレーション220と共有する。Imm/Dispストレージが必要とされる場合、使用可能なオペレーション220の数を減らす。オペレーション220が56ビットであり、Imm/Disp情報240が32ビットであるため、8つのImm/Disp情報240を有するエントリは、最大で5つのオペレーション220を含むことができる。64ビットであるImm/Disp情報240は、表4に示すように2つの32ビット位置を取る。
Figure 2019537163
マイクロコードEP230は、エントリが任意のマイクロコード命令を含む場合、オペレーション220(0〜3)のみが有効なオペレーションを含むことができるように設計されている。オペレーション220(4)は、1〜4つのマイクロコードEP230を記憶するのに使用される。オペレーション220(5〜7)は、この場合には有効なオペレーションを含むことができないが、Imm/Disp情報240のストレージのために依然として使用することができる。このことは、最大で4つのオペレーション220を、任意のマイクロコード命令を含むエントリに記憶することができることを意味している。マイクロコード命令は、そのエントリポイントストレージに加えて、通常のオペレーション220位置を依然として消費する。マイクロコードEP230は、14ビットである。
図3は、OCエントリが、命令キャッシュラインにおける基本ブロックとどのように概念的に並ぶかの一例を示している。図3は、2つの命令キャッシュラインに跨る2つの基本ブロック300と、複数の関連するOCエントリ200と、を示している。ここで、基本ブロック300は、4つのOCエントリ310a,310b,310c,310dを含む。OCエントリ310a,310b,310c,310dは、2つのキャッシュライン350a,350bの範囲内に整列される。第1OCエントリ310aは、分岐ターゲット330で開始する基本ブロックの始まりに対応している。それは、その基本ブロックの8つのデコードされた命令を含む。第1OCエントリ310aが完了すると(第1キャッシュライン350a内に完全に含まれるように示されている)、第2OCエントリ310bが記憶される。OCエントリ310bに対する命令も第1キャッシュライン350a内に含まれる。この場合、キャッシュラインには2つの命令しか残っていないので、OCエントリ310b内の2つのopだけを使用し、残りのopストレージは空のままである。OCエントリ310bが完了すると(第1キャッシュライン350a内に完全に含まれるように示されている)、第3OCエントリ310cが記憶される。第3OCエントリ310cは、キャッシュライン350aにおける最後の命令で開始し、この命令は、64B境界を越えてキャッシュライン350bに入る。この命令は、OCエントリ310c内の第1op位置を取り、キャッシュライン350b内の後続の(最大7つの)命令が、OCエントリ310c内の残りのopを埋める。第1OCエントリ310a及び第2OCエントリ310bの完了と同様の方法で第3OCエントリ310cが完了すると(第1キャッシュライン350a及び第2キャッシュライン350bの両方に存在するように示されている)、第4OCエントリ310dが記憶される。図示するように、第4OCエントリ310dは、第2キャッシュライン350bに含まれている。それは、実行された分岐、又は、キャッシュライン350b内に完全に含まれている最後の命令で終了してもよいし、例示の目的で実行された分岐で単に終了してもよい。
2つの基本ブロック300は、第1基本ブロック300aと、第2基本ブロック300bと(まとめて基本ブロック300と呼ばれる)を含む。基本ブロック300は、2つの隣接するキャッシュライン350内に完全に含まれる。何れの基本ブロック300も、特定の最大サイズ及びアライメントであってもよい。本実施形態で図示及び説明したように、このようなサイズ及びアライメントは、64Bのキャッシュラインに対応する。基本ブロック300の一方は、(キャッシュラインへのシーケンシャルウォークの場合には)キャッシュラインの始まり又は実行された分岐ターゲットにおいて開始する。基本ブロック300の一方は、(シーケンシャルウォークアウトの場合)キャッシュラインの終わりにおいて、又は、実行された分岐命令の最後のバイトにおいて終了する。一実施形態では、キャッシュライン350は、64Bのアライメントされたメモリ領域である。
最初の2つのOCエントリ310a,310bは、第1基本ブロック300a内にある。2番目の2つのOCエントリ310c,310dは、第2基本ブロック300b内にある。3番目のOCエントリ310cの最初の命令360のように基本ブロックに跨る命令の場合(すなわち、命令が複数のバイトである)、命令がどのエントリ及び基本ブロックに関連しているかに関して若干のずれがある。一実施形態において、キャッシュラインに跨る命令は、命令の最後のバイトを含むキャッシュライン(基本ブロック)に関連付けられる(図3では、OCエントリ310cは、基本ブロック300bに関連付けられる)。それは、キャッシュラインに跨る命令を含むエントリが、常に、当該命令をエントリの最初の命令として有することを意味する。
一実施形態において、基本ブロック300の一方は、任意の数のOCエントリ310に跨る。一実施形態では、基本ブロックがOCエントリ310を跨ることは、タグのシーケンシャルオフセットフィールドを用いて、実行されると予測された分岐でのチェイニングの終点とチェイニングすることによって行われる。また、シーケンシャルオフセットフィールド及びシーケンシャル基本ブロックフィールドは、基本ブロックにおける最後のOCエントリと、連続する基本ブロックにおける最初のOCエントリとのチェイニングをサポートする。このようにして、OCエントリのチェイニングは、複数の基本ブロックに跨ることができる。
また、図3には、融合された命令が示されている。この融合された命令については後述する。
図4は、OCパイプラインの処理400のフロー図を示している。処理400は、命令キャッシュ(IC)モードからopキャッシュモードへのパイプラインの遷移を行う。リセット時、パイプラインは、ICモードである。すなわち、フェッチは、命令キャッシュを介して行われる。ICモードでは、全てのフェッチが、従来の命令キャッシュフェッチ及びデコードパイプラインを介して配信される。一実施形態によれば、処理400は、マイクロタグがヒットであるかどうかを判別するのに使用され、OCモードでフェッチがOCパイプラインを介して供給されることを可能にする。
処理400は、OCマイクロタグに対してチェックを行うために使用されるフェッチアドレスの取得又は受信を開始する。OCマイクロタグ420は、フェッチアドレスを使用して、OCキャッシュにヒットが存在するかどうかを予測する。フェッチアドレスは、デカップリングキュー(DQ)430に提供され、DQバイパスマルチプレクサ(MUX)440に入力される。DQ430は、分岐予測(BP)パイプラインを命令キャッシュ(IC)パイプライン(図示省略)及びOCパイプラインから切り離し、アクティブなパイプラインがストールした場合にフェッチ要求をキューに入れることを可能にする。DQ430は、フェッチアドレスを受信し、OCフェッチリダイレクト490が与えられ、DQバイパスMUX440に出力する。物理フェッチアドレスがマイクロタグ内でヒットした場合、モードは、opキャッシュモードに切り替えられる。このマッチングは、分岐ターゲットフェッチ及びリダイレクトターゲットフェッチに対してのみ行われる。これは、このようなことが、命令開始位置がフェッチパイプラインにおいて判明している場合に限られるためである。
OCマイクロタグ420及びDQ430からの情報がMUX440において受信され、ヒットが判別されると、命令キャッシュからopキャッシュへの遷移が行われる。opキャッシュは、従来のフェッチ及びデコードパイプラインが空になるまでストールしたままである。従来のフェッチ及びデコードパイプラインが空になると、opキャッシュはストールを解除し、最後のオペレーションがデコードパイプラインから送られた後のサイクルより後に、オペレーションをオペレーションキュー(OPQ)に送ることを開始する。
opキャッシュモードへの遷移を前提とすると、opキャッシュキュー(OCQ)460及びMUX470は、MUX440から物理フェッチアドレスを受信する。OCQ460は、OCパイプラインがストールしたときにフェッチ要求をキューに入れることを可能にし、出力された、キューに入れられたフェッチアドレスをOCQバイパスマルチプレクサ(MUX)470に提供する。
次に、フェッチアドレスがOCQ460から読み出されるか、OCQ460が空である場合、新たなアドレスが到着するとOCQ460をバイパスし、タグ読み出し480におけるOCタグアレイ検索に使用される。物理アドレスビット10:6から構成されたインデックスのセットを使用してタグアレイの1つのセットが読み出され、当該セット内の8つのウェイの各々のタグアドレスがフェッチアドレスと比較される。8ウェイのうち1つのウェイのアドレスがフェッチアドレスと一致した場合(表2において上述したものに含まれる他の条件に加えて)、OCがヒットとなり、フェッチはOCパイプラインでの処理を続ける。アドレスが一致しなかった場合、OCはミスとなり、OCフェッチリダイレクト490が伝えられる(これは、図5に関連して、特にタグ比較520に関連してより詳細に説明する)。
図5は、OCフェッチパイプラインの処理500のフロー図を示している。処理500は、フェッチアドレス505を受信し、当該アドレスを、図4に関して上述したようにOCQ460及びOCQバイパスMUX470への入力として提供することによって始まる。OCQ460は、OCパイプラインがストールしたときに受信したフェッチアドレス用のストレージを提供し、OCパイプラインをフェッチ生成ロジックから切り離す。MUX470は、OCQ460内で保留中のフェッチアドレスがない場合にフェッチアドレス505を選択し、そうでなければOCQ460内の次の保留中のアドレスを選択し、それをタグ読み出し480に出力する。タグ読み出しは、選択されたタグをフェッチアドレスと共にOCタグ比較520に出力する。シーケンシャルオフセット575は、シーケンシャルなOCエントリのチェイニングを提供するために、タグ読み出し480と共に1つのループに構成される。
opキャッシュモードでは、ICは、ICマイクロタグを読み出さなくなる一方でopキャッシュマイクロタグを読み出すが、これは、有効なウェイを決定するためのものであり、全体的なヒット/ミスを判別するためや、OCパイプラインとICパイプラインとの間の操作のためではない。ICフェッチ生成ロジックは、OCパイプラインからリダイレクトを受信するまで、シーケンシャルフェッチ及び分岐ターゲットフェッチをOCパイプラインに送る。ICモードに入った時点で、フェッチは、従来の命令キャッシュ及びデコードパイプラインに送られる。これにより、OCパイプラインがいつICモードにスイッチバックするかを制御することができ、また、新たなICモードのデコードパイプの書き込み後にOPQ550に書き込まれる可能性があるモード切り替え後のOCパイプライン内に行われていない(uncommitted)opが存在しないことを保証する。
選択されたタグは、タグ比較(cmp)520においてフェッチアドレスと比較される。ヒットしない場合、OCは、OCフェッチリダイレクト490を介してフェッチをICにリダイレクトし、モードは、ICモードにスイッチバックされる。タグ比較520において行われた比較によって判別されたヒットが存在する場合、タグ比較520は、OCデータアレイアドレスをデータアレイ読み出し530に出力する。データアレイ読み出し530は、最大8つのopを含むアクセスされたOCエントリを、デコード540に出力する。デコード540は、OCエントリ内のop及び他の情報の何らかの単純なデコードを実行し、出力を、オペレーションキュー(OPQ)550、イミディエイト/ディスプレイスメントキュー(IDQ)560及びエントリアドレスキュー(EAQ)570に提供する。OPQ550は、ディスパッチされるopをキューに入れる。IDQ560は、イミディエイト/ディスプレイスメントキューであり、EAQ570は、マイクロコードエントリポイントキューであり、これについては上述した。
OPQ550は、ディスパッチをマシンパイプラインのレジスタリネーミング部150,170に供給するキューである。一般に、このようなキューは、パイプラインのセクションを切り離す。OPQ550は、(動作モードに応じて)opキャッシュパイプライン又は従来のデコードパイプラインのステージをディスパッチパイプラインステージから切り離す。この切り離しは、opキャッシュ又は従来のデコードパイプラインは、下流のパイプラインステージ(この場合、ディスパッチステージ)が先に進むことができるかどうかに関わらず、opを生成し、生成されたop用のストレージを有することを可能にする。
図5に関しては、リダイレクト及び再同期は、通常のモードの遷移よりも優先される。リダイレクトターゲットフェッチは、上述したようにOCマイクロタグに対してマッチングされ、このマッチングは、opキャッシュモードへの遷移を引き起こすが、ミスマッチは、リダイレクトアドレスにおいてICモードへの遷移を引き起こす。ターゲットフェッチの再同期によって、ICモードに強制的に遷移する場合がある。これは、OC内で融合された命令(下記参照)が、適切な例外処理のための個別の命令としてデコードされディスパッチされることを保証する。
一実施形態では、特定の隣接する命令、例えば、比較命令とこれに続く分岐命令は、効率を上げるために単一の工程に組み合わされ又は融合されてもよい。このような場合、OCビルドロジックは、融合された命令として図3に示されているように、両方の命令をカバーする単一のOCエントリを形成する。
図6は、従来のデコードパイプラインの拡張であるOCビルドパイプラインの処理600のフロー図を示している。処理600は、デコードされた命令のシーケンスをOCにインストールする。ビルド中、デコードされた命令は、(1)8番目のオペレーションが取得される、(2)8番目のImm/Dispが取得される、(3)スペースを共有するオペレーションとImm/Dispとの間に衝突が生じる、(4)マイクロコード命令が存在する場合の4番目のオペレーション、(5)キャッシュラインの終わりを超えて拡張する命令、(6)実行されると予測された分岐命令に遭遇する、(7)関連する分岐予測を伴う3つ以上の命令に遭遇したとき、のうち最も早いものが発生するまで蓄積される。
OCに提供されるフェッチアドレスは、分岐ターゲットアドレス又はシーケンシャルフェッチアドレスの何れかであり、後者は、連続する64Bブロックを指す。フェッチウィンドウが、実行されると予測された分岐命令を含む場合、フェッチアドレスは、キャッシュライン内でこの命令の最後のバイトを位置決めするフェッチウィンドウ終端オフセットを伴う。OCエントリビルドプロセス中、このフェッチウィンドウ終端オフセットは、ビルドを停止する場所を示す。OCフェッチプロセス中、これは、OPQに送られる最後のopを示す。分岐が実行されると予測されなかった場合にOCエントリがビルドされた場合、これは、そうでなければEntryInfo210NumOpsフィールドによって示されるよりも早いop位置でopディスパッチを終わらせる中間イグジットポイントを生じさせる。
条件付き且つ実行されると予測された最初の分岐を使用してOCエントリがビルドされた場合、当該エントリがOCからフェッチされたときに、条件分岐が実行されていないと予測されると、ミスが発生する可能性がある。これは、分岐後のシーケンシャル命令が必要であるが、OCエントリには存在しないためである。この場合、フォールスルーパスに対するopを生成するために、従来の処理のためにフェッチがICにリダイレクトされ、分岐後の最初の命令の開始点を用いてこのパスに対する新たなOCエントリが開始される。
処理600は、opキャッシュエントリのビルドを示している。処理600において、デコーダ610(ICフェッチパイプライン内の従来のデコーダ)は、1サイクル当たり最大4つのデコードされた命令(op)及び(存在する場合)関連するimm/disp値並びに/又はマイクロコードエントリポイントを、OCエントリアキュムレータ620に出力する。OCエントリアキュムレータ620は、アセンブルされたOCエントリコンテンツ及び関連するフェッチアドレスをOCビルドキュー(OCBQ)630に出力する。OCBQ630は、OCマイクロタグアレイ、OCタグアレイ及びOCデータアレイにそれぞれ書き込むために、エントリ及びタグをOCマイクロタグライタ640、OCタグライタ650及び/又はOCデータライタ660に出力する。OCBQ630は、これらが各々のOC記憶位置に書き込むことができるまで、いくつかのOCエントリ及びタグのバッファリングを提供する。
一実施形態では、電力を節約しヒット率を向上させるために、OCは、頻繁に使用されるキャッシュラインのみをビルドする。命令キャッシュアクセスカウントが、ビルド修飾子として使用される。
命令キャッシュより上のメモリ階層から満たされた要求又はプリフェッチ要求(すなわち、命令キャッシュでミスした要求)に対応するフェッチに関して、アクセスカウントはゼロである。アクセスカウントは、命令キャッシュでヒットした後続のフェッチ毎に1つである。アクセスカウントのこの実装(1で飽和)は、命令キャッシュタグ内のストレージを必要とせず、代わりにフェッチが命令キャッシュでヒットしたかミスしたかの認識に依存する。
さらなる単純化として、一実施形態では、命令キャッシュタグヒットが、アクセスカウントのプロキシとして使用される(タグミスはアクセスカウント0に対応し、タグヒットはアクセスカウント1に対応する)。この技術の精度は、タグ情報のサブセットを使用するため、命令キャッシュタグエイリアシングの場合を除いて高い。
一実施形態において、各命令キャッシュラインに関連する1つ以上のカウントビットを実際に実装するスキームが使用され、これはタグビットを要する。
フェッチがICモードの場合、OCパイプラインは、ビルドモードに入ることができる。ビルドモードは、上記のように、デコードパイプラインから送られるオペレーションに基づいて開始及び停止される。
一実施形態において、opのビルドは、命令がICモードでフェッチされ、それが分岐ターゲット、デコードリダイレクトターゲット(再同期を含まない)又はOCリダイレクトターゲットであり、対応するキャッシュラインが命令キャッシュアクセスカウントビルド条件を満たす場合に開始する。
一実施形態において、opのビルドは、フェッチがOCモードに切り替わった場合、命令の対応するキャッシュラインが命令キャッシュアクセスカウントビルド条件を満たさない場合、命令が再同期ターゲットである場合、プロセッサの動作モードが、命令デコードに影響を与えるように変化した場合、違法若しくは不完全な命令が検出された場合、又は、無効プローブがビルドパイプライン内で進行中の命令にヒットした場合に停止する。
図7は、OCを使用してキャッシュラインの最後まで又は実行された分岐まで命令フェッチを実行する方法700を示す図である。方法700は、ステップ710において、マイクロタグへの入力として使用される予測されたフェッチターゲットアドレスを受信する。ステップ720において、予測されたフェッチアドレスがDQに書き込まれる。ステップ730において、予測されたフェッチアドレスがマイクロタグにヒットするかどうかが判別される(ICモードではオプション)。ステップ740において、ステップ730の判別に基づいて、モードを切り替える(IC/OC)必要があるかどうかの決定が行われる。ステップ750において、OCモードに切り替わるかOCモードに留まる場合には、フェッチアドレスがopキャッシュキューに書き込まれる。ステップ760において、タグがOCタグアレイから読み出される。
図8は、図5のOCフェッチパイプラインを実行する方法800を示す図である。方法800は、ステップ810において、OCタグアレイからタグを読み出すことを含む。ステップ820において、フェッチアドレスがタグアレイ(8ウェイ)内のタグと比較される。ステップ830において、ステップ820の比較においてヒットが存在する場合、データアレイが読み出される。ステップ820においてヒットが存在しない場合、ステップ840において、OCフェッチリダイレクトが発生し、方法800は、方法700のステップ710に戻る。
ステップ830においてデータアレイが読み出された後、ステップ850において、比較的単純なデコーディングがデータアレイ出力(アクセスされたOCエントリ)に対して行われる。ステップ860において、OPQ、IDQ及びEAQへの出力が行われる。ステップ870において、opがOPQにエンキューされる。ステップ880において、イミディエイト/ディスプレイスメント値がIDQにエンキューされる。ステップ890において、マイクロコードアレイがEAQにエンキューされる。
図9は、1つ以上の開示される実施形態を実施することができる例示的なデバイス900のブロック図である。デバイス900は、例えば、コンピュータ、ゲーム機、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータ等を含むことができる。デバイス900は、プロセッサ902と、メモリ904と、ストレージ906と、1つ以上の入力デバイス908と、1つ以上の出力デバイス910と、を含む。また、デバイス900は、オプションで、入力ドライバ912と、出力ドライバ914と、を含む。デバイス900は、図9に示されていない追加のコンポーネントを含むことができることを理解されたい。
プロセッサ902は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであってもよい。メモリ904は、プロセッサ902と同じダイ上に配置されてもよいし、プロセッサ902とは別に配置されてもよい。メモリ904は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、キャッシュ等)を含むことができる。
ストレージ906は、固定又は着脱可能なストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、光学ディスク若しくはフラッシュドライブ等)を含むことができる。入力デバイス908は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリクススキャナ又はネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含むことができる。出力デバイス910は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ又はネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含むことができる。
入力ドライバ912は、プロセッサ902及び入力デバイス908と通信し、プロセッサ902が入力デバイス908から力を受信するのを可能にする。出力ドライバ914は、プロセッサ902及び出力デバイス910と通信し、プロセッサ902が出力デバイス910に出力を送信するのを可能にする。入力ドライバ912及び出力ドライバ914は、オプションのコンポーネントであること、及び、入力ドライバ912及び出力ドライバ914が存在しない場合には、デバイス900が同様に動作することに留意されたい。
本明細書の開示に基づいて多くの変形が可能であることを理解されたい。機能及び要素は、特定の組み合わせで上記で説明されているが、各機能又は要素は、他の機能や要素無しに単独で使用されてもよいし、他の機能や要素を伴って若しくは伴わずに様々な組み合わせで使用されてもよい。
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令、及び、ネットリストを含む他の中間データ(このような命令はコンピュータ可読媒体に記憶され得る)の結果を使用して製造プロセスを構成することによって製造されてもよい。このような処理の結果は、本実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
本明細書で提供される方法又はフローチャートは、汎用コンピュータ若しくはプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、ファームウェアにおいて実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、光学媒体(CD−ROMディスク等)、デジタル多用途ディスク(DVD)等が含まれる。

Claims (20)

  1. オペレーションキャッシュ(OC)を用いてキャッシュラインの最後又は実行された分岐まで命令フェッチを実行する方法であって、
    複数のマイクロタグへの入力として使用される前記OCの予測されたフェッチアドレスを受信することと、
    受信した予測されたフェッチアドレスをデカップリングキューに書き込むことと、
    書き込まれたフェッチアドレスが前記複数のマイクロタグのうち1つのマイクロタグにヒットした場合に、前記フェッチアドレスをopキャッシュキューに書き込むことと、
    前記フェッチアドレスに関連するタグを読み出すことと、を含む、
    方法。
  2. 前記OCは、キャッシュライン内の複数の命令の供給を可能にする複数のウェイを介してチェイニングされる、
    請求項1の方法。
  3. 前記OCは、オペレーションキャッシュと、イミディエイト/ディスプレイスメントキャッシュと、を含む単一の記憶装置に記憶されたデータを含む、
    請求項1の方法。
  4. 前記OCは、個別のオペレーションキャッシュ及びイミディエイト/ディスプレイスメントキャッシュに記憶されたデータを含む、
    請求項1の方法。
  5. 前記OCは、オペレーションデータ及びイミディエイト/ディスプレイスメントデータを含む単一の記憶装置に記憶されたデータを含む、
    請求項1の方法。
  6. 記憶することは、オペレーション容量と、イミディエイト/ディスプレイスメント容量とのトレードオフによって容量を最大にする、
    請求項5の方法。
  7. 記憶することは、オペレーション容量と、マイクロエントリポイント容量とのトレードオフによって容量を最大にする、
    請求項5の方法。
  8. オペレーションキャッシュ(OC)フェッチを実行する方法であって、
    タグを読み出すことと、
    読み出したタグのフェッチアドレスを、タグアレイ内のタグと比較することと、
    前記比較によって前記タグアレイにおいてヒットしなかった場合に、フェッチを命令キャッシュにリダイレクトすることと、
    前記比較によって前記タグアレイにおいてヒットした場合に、前記タグアレイ内でヒットしたタグに関連するデータアレイを読み出すことであって、前記データアレイは、イミディエイト/ディスプレイスメントエントリ、オペレーションエントリ及びマイクロコードエントリを含む、ことと、
    読み出したデータアレイをデコードすることと、
    読み出したデータアレイからデコードされたイミディエイト/ディスプレイスメントエントリ、オペレーションエントリ及びマイクロコードエントリを出力することと、
    前記イミディエイト/ディスプレイスメントエントリをイミディエイト/ディスプレイスメントキューにエンキューすることと、
    前記オペレーションエントリをオペレーションキューにエンキューすることと、
    前記マイクロコードエントリをエントリアドレスキューにエンキューすることと、を含む、
    方法。
  9. 前記OCは、キャッシュライン内の複数の命令の供給を可能にする複数のウェイを介してチェイニングされる、
    請求項8の方法。
  10. 前記OCは、オペレーションキャッシュと、イミディエイト/ディスプレイスメントキャッシュと、を含む単一の記憶装置に記憶されたデータを含む、
    請求項8の方法。
  11. 前記OCは、個別のオペレーションキャッシュ及びイミディエイト/ディスプレイスメントキャッシュに記憶されたデータを含む、
    請求項8の方法。
  12. 前記OCは、オペレーションデータ及びイミディエイト/ディスプレイスメントデータを含む単一の記憶装置に記憶されたデータを含む、
    請求項8の方法。
  13. 記憶することは、オペレーション容量と、イミディエイト/ディスプレイスメント容量とのトレードオフによって容量を最大にする、
    請求項12の方法。
  14. 記憶することは、オペレーション容量と、マイクロエントリポイント容量とのトレードオフによって容量を最大にする、
    請求項12の方法。
  15. 以前にデコードされた命令をキャッシュするオペレーションキャッシュ(OC)であって、
    スレッド間での命令の共有を可能にする複数の物理的にインデックスされ、タグ付けされ、デコードされた命令を含む、
    OC。
  16. 前記OCは、キャッシュライン内の複数の命令の供給を可能にする複数のウェイを介してチェイニングされる、
    請求項15のOC。
  17. 前記OCは、個別のオペレーションキャッシュ及びイミディエイト/ディスプレイスメントキャッシュに記憶されたデータを含む、
    請求項15のOC。
  18. 前記OCは、オペレーションデータ及びイミディエイト/ディスプレイスメントデータを含む単一の記憶装置に記憶されたデータを含む、
    請求項15のOC。
  19. 記憶することは、オペレーション容量と、イミディエイト/ディスプレイスメント容量とのトレードオフによって容量を最大にする、
    請求項18のOC。
  20. 記憶することは、オペレーション容量と、マイクロエントリポイント容量とのトレードオフによって容量を最大にする、
    請求項18のOC。
JP2019530397A 2016-12-09 2017-12-05 オペレーションキャッシュ Active JP7097361B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US15/374,727 US10606599B2 (en) 2016-12-09 2016-12-09 Operation cache
US15/374,727 2016-12-09
EP16203863.2A EP3333700A1 (en) 2016-12-09 2016-12-13 Operation cache
EP16203863.2 2016-12-13
PCT/US2017/064782 WO2018106736A1 (en) 2016-12-09 2017-12-05 Operation cache

Publications (2)

Publication Number Publication Date
JP2019537163A true JP2019537163A (ja) 2019-12-19
JP7097361B2 JP7097361B2 (ja) 2022-07-07

Family

ID=57754941

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019530397A Active JP7097361B2 (ja) 2016-12-09 2017-12-05 オペレーションキャッシュ

Country Status (6)

Country Link
US (2) US10606599B2 (ja)
EP (1) EP3333700A1 (ja)
JP (1) JP7097361B2 (ja)
KR (1) KR102604192B1 (ja)
CN (1) CN110050263A (ja)
WO (1) WO2018106736A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10846095B2 (en) * 2017-11-28 2020-11-24 Advanced Micro Devices, Inc. System and method for processing a load micro-operation by allocating an address generation scheduler queue entry without allocating a load queue entry
GB2577738B (en) * 2018-10-05 2021-02-24 Advanced Risc Mach Ltd An apparatus and method for providing decoded instructions
US11169810B2 (en) * 2018-12-28 2021-11-09 Samsung Electronics Co., Ltd. Micro-operation cache using predictive allocation
CN112612519B (zh) * 2020-12-11 2022-06-21 成都海光微电子技术有限公司 一种取指方法、装置、电子设备及存储介质
US20230305847A1 (en) * 2022-03-25 2023-09-28 Nokia Solutions And Networks Oy Multi-indexed micro-operations cache for a processor
US20240118896A1 (en) * 2022-10-05 2024-04-11 Nokia Solutions And Networks Oy Dynamic branch capable micro-operations cache

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59206947A (ja) * 1983-05-10 1984-11-22 Nec Corp マイクロプログラム制御装置
US6012125A (en) * 1997-06-20 2000-01-04 Advanced Micro Devices, Inc. Superscalar microprocessor including a decoded instruction cache configured to receive partially decoded instructions
JP2003509733A (ja) * 1997-10-23 2003-03-11 インテル・コーポレーション トレースに基づく命令キャッシング
JP2009217827A (ja) * 2008-03-12 2009-09-24 Arm Ltd マイクロタグを使用するキャッシュ・アクセッシング
US7856633B1 (en) * 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US20150100763A1 (en) * 2013-10-09 2015-04-09 Arm Limited Decoding a complex program instruction corresponding to multiple micro-operations
US20160299849A1 (en) * 2015-04-07 2016-10-13 Intel Corporation Cache allocation with code and data prioritization
JP2016534429A (ja) * 2013-10-25 2016-11-04 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 分岐予測ユニット及びレベル1命令キャッシュにおける帯域幅の増加

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1991004536A1 (en) * 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
US5689672A (en) 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
US6079003A (en) 1997-11-20 2000-06-20 Advanced Micro Devices, Inc. Reverse TLB for providing branch target address in a microprocessor having a physically-tagged cache
US6122709A (en) * 1997-12-19 2000-09-19 Sun Microsystems, Inc. Cache with reduced tag information storage
US6247097B1 (en) * 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US20020144101A1 (en) * 2001-03-30 2002-10-03 Hong Wang Caching DAG traces
JP3784766B2 (ja) * 2002-11-01 2006-06-14 株式会社半導体理工学研究センター 多ポート統合キャッシュ
US20040181626A1 (en) * 2003-03-13 2004-09-16 Pickett James K. Partial linearly tagged cache memory system
US7783871B2 (en) 2003-06-30 2010-08-24 Intel Corporation Method to remove stale branch predictions for an instruction prior to execution within a microprocessor
US7519799B2 (en) * 2003-11-18 2009-04-14 Intel Corporation Apparatus having a micro-instruction queue, a micro-instruction pointer programmable logic array and a micro-operation read only memory and method for use thereof
US8069336B2 (en) * 2003-12-03 2011-11-29 Globalfoundries Inc. Transitioning from instruction cache to trace cache on label boundaries
GB2411973B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd Constant generation in SMD processing
US20160098279A1 (en) 2005-08-29 2016-04-07 Searete Llc Method and apparatus for segmented sequential storage
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US7685410B2 (en) * 2007-02-13 2010-03-23 Global Foundries Inc. Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects
US7925866B2 (en) 2008-01-23 2011-04-12 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
US8103831B2 (en) 2008-03-31 2012-01-24 Intel Corporation Efficient method and apparatus for employing a micro-op cache in a processor
US8782374B2 (en) * 2008-12-02 2014-07-15 Intel Corporation Method and apparatus for inclusion of TLB entries in a micro-op cache of a processor
JP2011150684A (ja) * 2009-12-21 2011-08-04 Sony Corp キャッシュメモリおよびキャッシュメモリ制御装置
WO2011077549A1 (ja) * 2009-12-25 2011-06-30 富士通株式会社 演算処理装置
WO2013084314A1 (ja) * 2011-12-07 2013-06-13 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN102541761B (zh) * 2012-01-17 2014-10-22 苏州国芯科技有限公司 应用于嵌入式芯片的只读高速缓冲存储器
US20140025894A1 (en) 2012-07-18 2014-01-23 Electronics And Telecommunications Research Institute Processor using branch instruction execution cache and method of operating the same
US9672161B2 (en) * 2012-12-09 2017-06-06 Advanced Micro Devices, Inc. Configuring a cache management mechanism based on future accesses in a cache
CN103984637A (zh) * 2013-02-07 2014-08-13 上海芯豪微电子有限公司 一种指令处理系统及方法
US9734080B2 (en) * 2013-08-08 2017-08-15 Nxp Usa, Inc. Cache organization and method
TWI514145B (zh) * 2013-10-21 2015-12-21 Univ Nat Sun Yat Sen 可儲存除錯資料的處理器、其快取及控制方法
US9804666B2 (en) * 2015-05-26 2017-10-31 Samsung Electronics Co., Ltd. Warp clustering
US10296463B2 (en) * 2016-01-07 2019-05-21 Samsung Electronics Co., Ltd. Instruction prefetcher dynamically controlled by readily available prefetcher accuracy

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59206947A (ja) * 1983-05-10 1984-11-22 Nec Corp マイクロプログラム制御装置
US6012125A (en) * 1997-06-20 2000-01-04 Advanced Micro Devices, Inc. Superscalar microprocessor including a decoded instruction cache configured to receive partially decoded instructions
JP2003509733A (ja) * 1997-10-23 2003-03-11 インテル・コーポレーション トレースに基づく命令キャッシング
US7856633B1 (en) * 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
JP2009217827A (ja) * 2008-03-12 2009-09-24 Arm Ltd マイクロタグを使用するキャッシュ・アクセッシング
US20150100763A1 (en) * 2013-10-09 2015-04-09 Arm Limited Decoding a complex program instruction corresponding to multiple micro-operations
JP2016534429A (ja) * 2013-10-25 2016-11-04 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 分岐予測ユニット及びレベル1命令キャッシュにおける帯域幅の増加
US20160299849A1 (en) * 2015-04-07 2016-10-13 Intel Corporation Cache allocation with code and data prioritization

Also Published As

Publication number Publication date
JP7097361B2 (ja) 2022-07-07
WO2018106736A1 (en) 2018-06-14
US20180165096A1 (en) 2018-06-14
US10606599B2 (en) 2020-03-31
EP3333700A1 (en) 2018-06-13
CN110050263A (zh) 2019-07-23
KR20190085555A (ko) 2019-07-18
KR102604192B1 (ko) 2023-11-20
US20200225956A1 (en) 2020-07-16

Similar Documents

Publication Publication Date Title
JP7097361B2 (ja) オペレーションキャッシュ
JP6523274B2 (ja) 分岐予測ユニット及びレベル1命令キャッシュにおける帯域幅の増加
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
US5845323A (en) Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US7685410B2 (en) Redirect recovery cache that receives branch misprediction redirects and caches instructions to be dispatched in response to the redirects
JP5850532B2 (ja) アウトオブオーダー型マイクロプロセッサにおけるオペランド・ストア比較ハザードの予測及び回避
US7464255B1 (en) Using a shuffle unit to implement shift operations in a processor
US6260134B1 (en) Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte
JP2019526873A (ja) 分岐ターゲットバッファの圧縮
KR20200083479A (ko) 저장 융합 시스템 및 방법
Curran et al. The IBM z13 multithreaded microprocessor
JP5335440B2 (ja) オペランドの早期の条件付き選択
JP2009524167A5 (ja)
US11175916B2 (en) System and method for a lightweight fencing operation
US7908463B2 (en) Immediate and displacement extraction and decode mechanism
US6347369B1 (en) Method and circuit for single cycle multiple branch history table access
WO2019245677A1 (en) Low latency synchronization for operation cache and instruction cache fetching and decoding instructions
JP6911102B2 (ja) アドレス生成時のロード及びストアキューの割り当てのためのシステム及び方法
US7519794B2 (en) High performance architecture for a writeback stage
US6219784B1 (en) Processor with N adders for parallel target addresses calculation
US20230305847A1 (en) Multi-indexed micro-operations cache for a processor
US20240118896A1 (en) Dynamic branch capable micro-operations cache
CN115858022A (zh) 集群化解码管线的可缩放切换点控制电路系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210908

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210928

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20211228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220225

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220627

R150 Certificate of patent or registration of utility model

Ref document number: 7097361

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150