JP2023524642A - プロセッサ内のマイクロオペレーションキャッシュのためのマイクロオペレーションのフィルタリング - Google Patents
プロセッサ内のマイクロオペレーションキャッシュのためのマイクロオペレーションのフィルタリング Download PDFInfo
- Publication number
- JP2023524642A JP2023524642A JP2022563093A JP2022563093A JP2023524642A JP 2023524642 A JP2023524642 A JP 2023524642A JP 2022563093 A JP2022563093 A JP 2022563093A JP 2022563093 A JP2022563093 A JP 2022563093A JP 2023524642 A JP2023524642 A JP 2023524642A
- Authority
- JP
- Japan
- Prior art keywords
- micro
- cache
- filter
- identifier
- instruction group
- 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.)
- Pending
Links
- 238000001914 filtration Methods 0.000 title description 2
- 230000015654 memory Effects 0.000 claims description 60
- 238000000034 method Methods 0.000 claims description 39
- 238000012545 processing Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 description 18
- 230000009471 action Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 230000006399 behavior Effects 0.000 description 11
- 238000003860 storage Methods 0.000 description 10
- 238000012546 transfer Methods 0.000 description 8
- 239000004065 semiconductor Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
- G06F9/262—Arrangements for next microinstruction selection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/26—Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
- G06F9/262—Arrangements for next microinstruction selection
- G06F9/264—Microinstruction selection based on results of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
プロセッサは、命令グループから復号されたマイクロオペレーションを格納するための複数のマイクロオペレーションキャッシュエントリを有するマイクロオペレーションキャッシュと、マイクロオペレーションがマイクロオペレーションキャッシュに格納された場合に単回使用であると予測される命令グループの識別子を格納するための複数のマイクロオペレーションフィルタテーブルエントリを有するマイクロオペレーションフィルタと、を含む。マイクロオペレーションフィルタは、命令グループの識別子を受信する。次に、マイクロオペレーションフィルタは、マイクロオペレーションフィルタテーブルエントリが第1の識別子と一致する識別子を含む場合に、第1の命令グループからのマイクロオペレーションのコピーがマイクロオペレーションキャッシュに格納されるのを防止する。【選択図】図7
Description
(関連技術)
いくつかの電子デバイスでは、プロセッサは、プログラムコード命令を実行するか、又は、より単純には命令を実行し、対応する動作をプロセッサに実行させる。例えば、中央処理ユニット(central processing unit、CPU)等のプロセッサは、ソフトウェアアプリケーション、オペレーティングシステム、ファームウェア等からの命令を実行し得る。いくつかのプロセッサは、プロセッサによって1つ以上のマイクロオペレーションに復号されるいくつかの異なる命令、すなわち「マクロ命令」を実行することができる。各マイクロオペレーションは、より単純な低レベルのプロセッサ命令であり、プロセッサによって実行されると、マイクロオペレーションが復号された命令の全体的な動作のそれぞれの部分をプロセッサに実行させる。例えば、単一命令複数データ(single-instruction,multiple-data、SIMD)命令は、プロセッサによって、複数のデータに対してSIMD命令の動作を実行するためのいくつかの個別のマイクロオペレーションに復号され得る。
いくつかの電子デバイスでは、プロセッサは、プログラムコード命令を実行するか、又は、より単純には命令を実行し、対応する動作をプロセッサに実行させる。例えば、中央処理ユニット(central processing unit、CPU)等のプロセッサは、ソフトウェアアプリケーション、オペレーティングシステム、ファームウェア等からの命令を実行し得る。いくつかのプロセッサは、プロセッサによって1つ以上のマイクロオペレーションに復号されるいくつかの異なる命令、すなわち「マクロ命令」を実行することができる。各マイクロオペレーションは、より単純な低レベルのプロセッサ命令であり、プロセッサによって実行されると、マイクロオペレーションが復号された命令の全体的な動作のそれぞれの部分をプロセッサに実行させる。例えば、単一命令複数データ(single-instruction,multiple-data、SIMD)命令は、プロセッサによって、複数のデータに対してSIMD命令の動作を実行するためのいくつかの個別のマイクロオペレーションに復号され得る。
プロセッサにおいて命令を実行する場合、実行される命令を命令キャッシュ(又はメモリサブシステム内の他の場所)からフェッチし、フェッチされた命令を実行のためにマイクロオペレーションに復号する動作は、比較的長い時間を要し、かなりのエネルギーを消費する。したがって、設計者は、命令からマイクロオペレーションの取得を高速化するための技術を提案してきた。このような技術には、命令から復号されるマイクロオペレーションのコピーを保存するために、マイクロオペレーションキャッシュと呼ばれるキャッシュメモリを使用するものがある。この技術では、命令から復号されたマイクロオペレーションを実行のためにプロセッサ内の実行ユニットに転送するとともに、プロセッサは、マイクロオペレーションのコピーをマイクロオペレーションキャッシュに保存する。マイクロオペレーションのコピーをマイクロオペレーションキャッシュに格納する命令に再度遭遇すると、プロセッサは、命令を再フェッチし、再復号する代わりに、マイクロオペレーションをマイクロオペレーションキャッシュから取得することができる。マイクロオペレーションキャッシュ内の回路構成のタイプ及びマイクロオペレーションキャッシュの物理的位置(実行ユニットにより近い)に起因して、マイクロオペレーションキャッシュからマイクロオペレーションを取得することは、命令を再フェッチ及び再復号するよりも著しく速い。
マイクロオペレーションキャッシュを使用して利益を獲得し得るが、マイクロオペレーションキャッシュは非効率的に使用され得る。一般に、マイクロオペレーションキャッシュは、より低容量のキャッシュメモリであり、命令から以前に復号された全てのマイクロオペレーションのうち小さいサブセットのみを任意の所定の時間に保持することができる(命令が復号されるマイクロオペレーションは、命令自体よりもバイト単位でより多くの記憶容量を必要とし得ることに留意されたい)。したがって、マイクロオペレーションキャッシュは、マイクロオペレーションで一杯になることが一般的である。マイクロオペレーションキャッシュが一杯になると、マイクロオペレーションキャッシュに格納される任意の後続の復号されたマイクロオペレーションのために、既存のマイクロオペレーションは、後続の復号されたマイクロオペレーションを格納するためのスペースを解放するために、マイクロオペレーションキャッシュから追い出され(エビクトされ)なければならない。マイクロオペレーションキャッシュの使用における非効率性は、アクセスされることのないマイクロオペレーション、すなわち、「単回使用(dead on fill)」のマイクロオペレーションがマイクロオペレーションキャッシュに格納された場合に起こり得る。単回使用のマイクロオペレーションを格納するためのマイクロオペレーションキャッシュ内のスペースを解放するために、有用なマイクロオペレーションがマイクロオペレーションキャッシュから追い出され得るため、非効率性が生じる。それぞれの命令が再び実行される場合、それぞれの命令が再フェッチされなければならず、有用なマイクロオペレーションが再復号されなければならず、これは比較的長い時間を要し、追加のエネルギーを消費する。加えて、それぞれの命令を再フェッチ及び再復号することは、メモリシステム帯域幅及び復号リソースの不必要な消費、並びに、電力の不必要な消費を引き起こす。
以下の記載は、任意の当業者が記載された実施形態を生成及び使用することを可能にするために提示されており、特定の用途及びその要件の文脈において提供される。記載の実施形態に対する様々な修正は、当業者には容易に明らかであり、本明細書に記載の一般原理は、他の実施形態及び用途に適用され得る。これにより、記載された実施形態は、示された実施形態に限定されず、本明細書に記載の原理及び特徴と一致する最も広い範囲が与えられるべきである。
(用語)
以下の記載では、実施形態を説明するために様々な用語が使用される。以下は、これらの用語のいくつかの簡略化された一般的な記載である。これらの用語は、明確さ及び簡潔にするために本明細書に列挙されていない重要な追加の態様を有してもよく、したがって、記載は、これらの用語を限定することを意図するものではないことに留意されたい。
以下の記載では、実施形態を説明するために様々な用語が使用される。以下は、これらの用語のいくつかの簡略化された一般的な記載である。これらの用語は、明確さ及び簡潔にするために本明細書に列挙されていない重要な追加の態様を有してもよく、したがって、記載は、これらの用語を限定することを意図するものではないことに留意されたい。
機能ブロック:機能ブロックは、集積回路構成、ディスクリート回路構成等の一組の相互に関連する回路構成を指す。回路構成は、回路構成内の回路要素が少なくとも1つの特性を共有することに「相互に関連している」。例えば、回路構成は、特定の集積回路チップ、基板、回路基板若しくはその一部に含まれ、その上に加工され、又は、別の方法で結合されてもよく、特定の機能(例えば、計算又は処理機能、メモリ機能等)の実行に関与してもよく、共通制御要素及び/又は共通クロックによって制御される等してもよい。機能ブロックの回路構成は、単一の回路要素(例えば、単一の集積回路論理ゲート又はディスクリート回路要素)から数百万又は数十億個の回路要素(例えば、集積回路メモリ)までの任意の数の回路要素を有することができる。
命令グループ:命令は、プロセッサによって、命令キャッシュメモリ又はメモリサブシステム内の他の場所から、(例えば、復号及び実行のために)プロセッサ内で処理される1つ以上の命令を含む命令グループ内にフェッチすることができる。言い換えれば、プロセッサは、メモリサブシステムからサイズがNバイト以下の命令グループをフェッチすることができ、Nは、例えば、20バイト、64バイト、100バイト等の任意のサイズである。例えば、プロセッサは、命令グループとして、命令キャッシュメモリ内のキャッシュライン内の命令の半分をフェッチすることができる。いくつかの場合では、各命令グループ、したがってその中の1つ以上の命令は、命令グループを識別するためにプロセッサによって使用される識別子と関連付けられる。例えば、命令グループのうち第1の命令のメモリアドレスの一部又は全部は、命令グループの識別子として使用することができる。
(概要)
記載された実施形態では、電子デバイスは、プロセッサ(例えば、中央処理ユニット、グラフィック処理ユニット等)を含み、プロセッサは、プログラムコードに基づいて命令を実行するための処理回路構成を有する。また、プロセッサは、プロセッサ内の命令キャッシュ(又はメモリサブシステム内の他の場所)から命令グループをフェッチするための回路構成を含むフェッチユニットと、フェッチされた命令グループ内の命令を、処理回路構成による実行のためにマイクロオペレーションに復号するための回路構成を含む復号ユニットと、を有する。プロセッサは、追加的に、それぞれの命令グループを再フェッチ及び再復号することなく、それぞれの命令グループを後で再実行するために使用されるマイクロオペレーションのコピーを格納するための回路構成を含むマイクロオペレーションキャッシュを有する。さらに、プロセッサは、何れのマイクロオペレーションがマイクロオペレーションキャッシュに格納されるかを制御するための回路構成を含むマイクロオペレーションフィルタを有し、それによって、マイクロオペレーションキャッシュに格納されるマイクロオペレーションを「フィルタリング」する。
記載された実施形態では、電子デバイスは、プロセッサ(例えば、中央処理ユニット、グラフィック処理ユニット等)を含み、プロセッサは、プログラムコードに基づいて命令を実行するための処理回路構成を有する。また、プロセッサは、プロセッサ内の命令キャッシュ(又はメモリサブシステム内の他の場所)から命令グループをフェッチするための回路構成を含むフェッチユニットと、フェッチされた命令グループ内の命令を、処理回路構成による実行のためにマイクロオペレーションに復号するための回路構成を含む復号ユニットと、を有する。プロセッサは、追加的に、それぞれの命令グループを再フェッチ及び再復号することなく、それぞれの命令グループを後で再実行するために使用されるマイクロオペレーションのコピーを格納するための回路構成を含むマイクロオペレーションキャッシュを有する。さらに、プロセッサは、何れのマイクロオペレーションがマイクロオペレーションキャッシュに格納されるかを制御するための回路構成を含むマイクロオペレーションフィルタを有し、それによって、マイクロオペレーションキャッシュに格納されるマイクロオペレーションを「フィルタリング」する。
いくつかの実施形態では、マイクロオペレーションフィルタは、マイクロオペレーションがマイクロオペレーションキャッシュに格納された場合にアクセスされないと予測される命令グループを識別するレコードを保持する(又はアクセスする)。そのようなマイクロオペレーションは、マイクロオペレーションキャッシュ内に格納される(又は「充填される」)場合に、マイクロオペレーションが「不能(dead)」であると予測され、したがって、アクセスされないため、「単回使用」であると予測されると見なすことができる。レコード内の情報に基づいて、マイクロオペレーションフィルタは、予測された単回使用マイクロオペレーションをバイパスする。マイクロオペレーションをバイパスすることは、マイクロオペレーションがレコードにおいて単回使用と予測されるものとして識別されるため、マイクロオペレーションのコピーは、マイクロオペレーションキャッシュに格納されないことを意味する。これに対して、レコードにおいて単回使用と予測されるものとして識別されないマイクロオペレーションでは、マイクロオペレーションフィルタは、マイクロオペレーションのコピーをマイクロオペレーションキャッシュに格納する。したがって、マイクロオペレーションフィルタは、予測された単回使用マイクロオペレーションがマイクロオペレーションキャッシュに格納されることを防止することによって、マイクロオペレーションキャッシュに格納されるマイクロオペレーションをフィルタリングする。
いくつかの実施形態では、マイクロオペレーションが単回使用と予測される命令グループを識別する上記のレコードは、マイクロオペレーションフィルタテーブル内に保持される。マイクロオペレーションフィルタテーブルは、いくつかのエントリのための回路構成を含み、各エントリは、マイクロオペレーションが単回使用と予測される命令グループの識別子を格納するように構成されている。プロセッサの動作中に、命令グループの識別子が(例えば、プロセッサ内の次のプログラムカウンタ機能ブロックによって)生成される場合、マイクロオペレーションフィルタは、マイクロオペレーションフィルタテーブル内のエントリのうち何れが、生成された識別子と一致する識別子を含むかどうかを判定する。そうである場合、したがって、それぞれの命令グループからのマイクロオペレーションが単回使用と予測される場合、マイクロオペレーションフィルタは、上記のようにマイクロオペレーションをバイパスする。
いくつかの実施形態では、マイクロオペレーションが単回使用と予測される命令グループの識別子は、3ステッププロセスでマイクロオペレーションフィルタテーブルに追加される。プロセスの第1のステップでは、マイクロオペレーションキャッシュは、マイクロオペレーションキャッシュエントリに格納されたマイクロオペレーションがマイクロオペレーションキャッシュに格納されている間にアクセスされるかどうかを追跡する。例えば、マイクロオペレーションキャッシュは、そのマイクロオペレーションキャッシュエントリに格納されたマイクロオペレーションがアクセスされたかどうかのレコードを保持するために、各マイクロオペレーションキャッシュエントリについて個別のアクセスインジケータを使用し得る。
いくつかの実施形態では、命令グループの識別子をマイクロオペレーションフィルタテーブルに追加するプロセスにおける第2のステップは、追い出し履歴テーブルを伴う。追い出し履歴テーブルは、いくつかのエントリのための回路構成を含み、各エントリは、マイクロオペレーションがマイクロオペレーションキャッシュにおいて単回使用であった命令グループの識別子を格納するように構成されている。プロセスの第2のステップでは、アクセスされていないものとしてレコードされるマイクロオペレーションがマイクロオペレーションキャッシュエントリから追い出されると、マイクロオペレーションキャッシュは、マイクロオペレーションフィルタに、マイクロオペレーションが単回使用であったことを通知する。次いで、マイクロオペレーションフィルタは、単回使用マイクロオペレーションが復号された命令グループの識別子で追い出し履歴テーブルエントリを更新する。追い出し履歴テーブルエントリを更新するために、命令グループの識別子が追い出し履歴テーブルエントリに未だ格納されていない場合、マイクロオペレーションフィルタは、利用可能なエントリを見つけ(これは、エントリから既存の情報を追い出すことを意味し得る)、利用可能なエントリを命令グループの識別子で更新し、利用可能なエントリの信頼カウンタを初期値に設定する。一方、追い出し履歴テーブルが、命令グループの識別子を有する追い出し履歴テーブルエントリを既に含む場合、マイクロオペレーションフィルタは、そのエントリの信頼カウンタを増加させる。このようにして、マイクロオペレーションフィルタは、信頼カウンタにおいて、命令グループからのマイクロオペレーションがマイクロオペレーションキャッシュにおいて単回使用であることが何回見つかったかを示すカウントを保持する。
いくつかの実施形態では、命令グループの識別子をマイクロオペレーションフィルタテーブルに追加するプロセスにおける第3のステップでは、マイクロオペレーションフィルタは、追い出し履歴テーブルからの信頼カウンタを使用して、マイクロオペレーションキャッシュにおいて単回使用と予測されるマイクロオペレーションを判定し、それに応じて、それぞれの命令グループの識別子をマイクロオペレーションフィルタテーブルに追加する。この動作について、追い出し履歴テーブルエントリの信頼カウンタを増加させることが信頼カウンタに閾値を超えさせ、これにより、識別子が追い出し履歴テーブルエントリに格納される命令グループのマイクロオペレーションが、指定された回数を超えてマイクロオペレーションキャッシュにおいて単回使用であることが見つかると、マイクロオペレーションフィルタは、マイクロオペレーションがマイクロオペレーションキャッシュにおいて単回使用であることを継続することになると予測する。したがって、マイクロオペレーションフィルタは、利用可能なマイクロオペレーションフィルタテーブルエントリに命令グループの識別子を格納する(これは、マイクロオペレーションフィルタテーブルエントリから既存の情報を追い出すことを意味し得る)。命令グループの識別子をマイクロオペレーションフィルタテーブルエントリに格納することによって、マイクロオペレーションフィルタは、マイクロオペレーションがマイクロオペレーションキャッシュにおいて単回使用と予測されることをレコードする。
いくつかの実施形態では、マイクロオペレーションフィルタは、マイクロオペレーションフィルタテーブル内の情報が古くならず、これにより、正しいままである可能性がより高いことを保証するためのメカニズムを含む。メカニズムは、各マイクロオペレーションフィルタテーブルエントリ内にローカルカウンタを含むか、又は、各マイクロオペレーションフィルタテーブルエントリと関連付けられたローカルカウンタを含む。マイクロオペレーションフィルタは、命令グループの識別子がマイクロオペレーションフィルタテーブルエントリに格納される場合、ローカルカウンタを指定されたローカルカウンタ値に設定する。次に、マイクロオペレーションフィルタは、マイクロオペレーションフィルタテーブルエントリ内の識別子を見つけたことに基づいて命令グループからのマイクロオペレーションがバイパスされる毎に、ローカルカウンタを減少させる。次いで、マイクロオペレーションフィルタは、ローカルカウンタがゼロに達すると、マイクロオペレーションフィルタテーブルエントリを無効にする。したがって、マイクロオペレーションフィルタは、そのマイクロオペレーションフィルタテーブルエントリから情報を破棄する前に、個々のマイクロオペレーションフィルタテーブルエントリの情報を指定された回数だけ使用する。
いくつかの実施形態では、マイクロオペレーションフィルタテーブル内の情報が古くならないことを保証するためのメカニズムは、マイクロオペレーションフィルタテーブル内のグローバルカウンタを含むか、又は、マイクロオペレーションフィルタテーブルと関連付けられたグローバルカウンタを含む。グローバルカウンタを使用するために、マイクロオペレーションフィルタは、命令グループの識別子をマイクロオペレーションフィルタテーブルエントリに格納する前に、全てのマイクロオペレーションフィルタテーブルエントリが無効である場合、グローバルカウンタをゼロに設定する。例えば、マイクロオペレーションフィルタは、起動時に、又は、マイクロオペレーションフィルタテーブルエントリが無効にされるか若しくはリセットされた後に、グローバルカウンタをゼロに設定することができる。次に、マイクロオペレーションフィルタは、任意の命令グループからのマイクロオペレーションが、それぞれのマイクロオペレーションフィルタテーブルエントリにおいて見つかった識別子に基づいてバイパスされる毎に、グローバルカウンタを増加させる。次いで、マイクロオペレーションフィルタは、グローバルカウンタの値がリセット閾値を超えると、マイクロオペレーションフィルタテーブルエントリの全てを無効にする。したがって、マイクロオペレーションフィルタは、指定された回数だけ、マイクロオペレーションフィルタテーブルエントリの全てにおける情報をグループとして使用してから、マイクロオペレーションフィルタテーブルエントリの全てにおける情報をグループとして破棄する。
上記のようにマイクロオペレーションをバイパスすることによって、記載された実施形態は、マイクロオペレーションキャッシュにおいて単回使用であると予測されるマイクロオペレーションを格納することを回避する。単回使用マイクロオペレーションをマイクロオペレーションキャッシュに格納することを回避することにより、単回使用マイクロオペレーションを格納するためのスペースを解放するために、マイクロオペレーションキャッシュから有用なマイクロオペレーションを追い出することを引き起こさないことによって、マイクロオペレーションキャッシュの動作を改善することができる。有用なマイクロオペレーションがマイクロオペレーションキャッシュ内に留まるため、プロセッサは、(それぞれの命令グループからの命令を再フェッチ及び再復号することとは対照的に)再実行のために有用なマイクロオペレーションをより迅速に取得することができる。また、有用なマイクロオペレーションがマイクロオペレーションキャッシュ内に留まるため、追い出された有用なマイクロオペレーションのための命令グループを再フェッチ及び再復号することに関連付けられた電力消費及びリソース消費を低減することができる。加えて、有用なマイクロオペレーションがマイクロオペレーションキャッシュ内に留まり、命令グループの再フェッチを低減するため、プロセッサ内のメモリサブシステムは、より効率的に動作することができる。マイクロオペレーションキャッシュ、メモリサブシステム、並びに、フェッチユニット及び復号ユニットの動作の改善は、プロセッサ及び電子デバイスの動作の改善に寄与することができ、ユーザ満足度の向上につながる。
(電子デバイス)
図1は、いくつかの実施形態による、電子デバイス100を示すブロック図である。図1から分かるように、電子デバイス100は、プロセッサ102及びメモリ104を含む。一般に、プロセッサ102及びメモリ104は、ハードウェア、すなわち回路構成を使用して実装される。例えば、プロセッサ102及びメモリ104のための回路構成は、1つ以上の個別の半導体チップを含む1つ以上の半導体チップ上に全体的に加工され得るか、ディスクリート回路要素と組み合わせて1つ以上の半導体チップから加工され得るか、又は、ディスクリート回路要素のみから加工され得る。本明細書に記載のように、プロセッサ102及びメモリ104は、マイクロオペレーションキャッシュに対して、予測される単回使用マイクロオペレーションをバイパスするための動作を実行する。
図1は、いくつかの実施形態による、電子デバイス100を示すブロック図である。図1から分かるように、電子デバイス100は、プロセッサ102及びメモリ104を含む。一般に、プロセッサ102及びメモリ104は、ハードウェア、すなわち回路構成を使用して実装される。例えば、プロセッサ102及びメモリ104のための回路構成は、1つ以上の個別の半導体チップを含む1つ以上の半導体チップ上に全体的に加工され得るか、ディスクリート回路要素と組み合わせて1つ以上の半導体チップから加工され得るか、又は、ディスクリート回路要素のみから加工され得る。本明細書に記載のように、プロセッサ102及びメモリ104は、マイクロオペレーションキャッシュに対して、予測される単回使用マイクロオペレーションをバイパスするための動作を実行する。
プロセッサ102は、ソフトウェアアプリケーション、ファームウェア、オペレーティングシステム、スクリプト等からの命令等のようなプログラムコードからの命令を実行することに関連する動作、並びに、他の動作(例えば、制御、メモリアクセス、入出力等)を実行する機能ブロックである。プロセッサ102は、1つ以上の中央処理ユニット(CPU)コア、グラフィック処理ユニット(graphics processing unit、GPU)コア、埋め込みプロセッサ、特定用途向け集積回路(application specific integrated circuit、ASIC)及び/若しくはプログラムコードからの命令を実行する、並びに/又は、他の動作を実行する他の機能ブロックを含む。
メモリ104は、電子デバイス100内のメモリ(例えば、「メイン」メモリ)の動作を実行する機能ブロックである。メモリ104は、電子デバイス100内の機能ブロックによるアクセスのための命令、情報及びデータを格納するためのメモリ回路と、にメモリ回路内のデータのアクセスを処理するための制御回路と、を含む。メモリ104内のメモリ回路は、ダブルデータレートシンクロナイズドダイナミックランダムアクセスメモリ(double data rate synchronous dynamic random access memory、DDR SDRAM)、スタティックランダムアクセスメモリ(static random access memory、SRAM)、及び/又は、他のタイプのメモリ回路等の揮発性メモリ回路を含む。いくつかの実施形態では、メモリ104は、命令及び/又はデータの長期記憶装置として機能する不揮発性大容量記憶デバイス(例えば、ディスクドライブ又はソリッドステートドライブ)(図示省略)に結合される。
電子デバイス100は、説明のために、特定の数及び構成の要素(すなわち、プロセッサ102及びメモリ104)を含むものとして示されている。しかしながら、いくつかの実施形態では、異なる数又は構成の要素が電子デバイス100に存在する。例えば、電子デバイス100は、電力サブシステム、ネットワーキングサブシステム、ヒューマンインターフェースシステム等を含むことができる。一般に、電子デバイス100は、本明細書に記載された動作を実行するのに十分な要素を含む。
電子デバイス100は、本明細書に記載された命令を実行するための動作を実行する任意の電子デバイスであってもよいし、それに含まれてもよい。例えば、電子デバイス100は、デスクトップコンピュータ、ラップトップコンピュータ、ウェアラブル電子デバイス、タブレットコンピュータ、スマートフォン、サーバ、人工知能装置、仮想若しくは拡張現実機器、ネットワーク装置、玩具、視聴覚機器、家電、コントローラ、車両等、及び/又は、それらの組み合わせ等の電子デバイスであってもよいし、それに含まれてもよい。
(プロセッサ)
上記のように、電子デバイス100は、プロセッサ102を含む。図2は、いくつかの実施形態による、プロセッサ102を示すブロック図である。図2に示すように、プロセッサ102内の機能ブロックは、フロントエンドサブシステム200、バックエンドサブシステム202、又は、メモリサブシステム204の一部と見なすことができる。一般に、フロントエンドサブシステム200は、メモリサブシステム204から命令を取得し、実行のためにバックエンドサブシステム202内の実行ユニットに送信される命令からマイクロオペレーションを生成するための動作を実行する機能ブロックを含む。
上記のように、電子デバイス100は、プロセッサ102を含む。図2は、いくつかの実施形態による、プロセッサ102を示すブロック図である。図2に示すように、プロセッサ102内の機能ブロックは、フロントエンドサブシステム200、バックエンドサブシステム202、又は、メモリサブシステム204の一部と見なすことができる。一般に、フロントエンドサブシステム200は、メモリサブシステム204から命令を取得し、実行のためにバックエンドサブシステム202内の実行ユニットに送信される命令からマイクロオペレーションを生成するための動作を実行する機能ブロックを含む。
フロントエンドサブシステム200は、命令フェッチ/復号206を含み、これは、マイクロオペレーションの実行に備えて、命令をフェッチし、フェッチされた命令をマイクロオペレーションに復号することに関連付けられた動作を実行する回路構成を含む機能ブロックである。命令フェッチ/復号206は、必要に応じて、L1命令キャッシュ208、L2キャッシュ210又はメモリ104から命令の命令グループをフェッチする(すなわち、要求及び受信する)。次いで、命令フェッチ/復号206は、フェッチされた命令グループ内の命令をそれぞれのマイクロオペレーションに復号する。命令フェッチ/復号206は、マイクロオペレーションをマイクロオペレーション(micro-operation、UOP)キュー212に転送するが、これは、マイクロオペレーションがフロントエンドサブシステム200からバックエンドサブシステム202に、いつ、どのように供給されるかを制御するための回路構成を含む機能ブロックである。マイクロオペレーションキュー212から、マイクロオペレーションは、最終的にディスパッチ214に供給されるが、これは、マイクロオペレーションを、実行のためにバックエンドサブシステム202内の適切な実行ユニットに操向又は方向付けるための回路構成を含む機能ブロックである。
また、フロントエンドサブシステム200は、次のPC(next PC、NPC)216を含み、これは、実行のためにL1命令キャッシュ208からフェッチされる次の命令グループのためのメモリ内のアドレス、すなわち、「プログラムカウンタ」を判定するための動作を実行する回路構成を含む機能ブロックである。次のPC216は、プログラムカウンタの初期又は現在の値に基づいて、プログラムカウンタの次の連続値を計算する。例えば、32バイトの命令グループが与えられると、次のPC216は、次のアドレス=現在のアドレス+32バイトを計算し得る。プログラム/命令フローが制御伝達命令(例えば、分岐命令等)によって変更されない場合、フロントエンドサブシステム200は、メモリ内の対応する連続アドレスから命令グループをフェッチするために次のPC216によって計算されるプログラムカウンタの連続値を使用する。
フロントエンドサブシステム200は、分岐予測ユニット(BPU)218を追加的に含み、これは、命令グループ内の制御伝達命令(例えば、分岐等)の解決を予測し、プログラムカウンタ、したがって、後続の命令グループがフェッチされるメモリ内のアドレスを修正するための動作を実行する回路構成を含む機能ブロックである。言い換えれば、分岐予測ユニット218は、制御伝達命令挙動の1つ以上のレコードを使用して、制御伝達命令の「選ばれる」又は「選ばれない」解決を予測し、選ばれる制御転送命令の予測されるターゲットアドレスを提供する。制御伝達命令が分岐予測ユニット218によって選ばれると予測される場合、分岐予測ユニット218は、次のPC216によって提供される次の又は後続のプログラムカウンタを、制御転送命令のためのターゲットアドレスで置き換え得る。
フロントエンドサブシステム200は、マイクロオペレーション(UOP)キャッシュ220を更に含み、これは、それぞれの命令グループを再びフェッチ及び復号することなく、それぞれの命令グループを後で再ディスパッチ及び実行するために使用される、以前に復号されたマイクロオペレーションのコピーを格納するために使用される回路構成を含む機能ブロックである。命令グループ内の命令が命令フェッチ/復号206によってマイクロオペレーションに復号されると、マイクロオペレーションのコピーは、マイクロオペレーションキャッシュ220に格納することができる。マイクロオペレーションキャッシュ220に格納されたマイクロオペレーションのコピーは、次いで、命令グループの後続の再実行中にマイクロオペレーションを迅速に取得するために使用することができる。より詳細には、フェッチされ、実行される次の命令グループに次のPC216がアドレスを提供すると、マイクロオペレーションキャッシュ220は、アドレスを受信し、命令グループのマイクロオペレーションのコピーがマイクロオペレーションキャッシュ220に格納されているかどうかを判定する。そうであれば、マイクロオペレーションキャッシュ220は、マイクロオペレーションのコピーをマイクロオペレーションキュー212に転送し、そこから、マイクロオペレーションは、実行のためにディスパッチ214及びバックエンドサブシステム202に供給される。また、マイクロオペレーションキャッシュ220は、マイクロオペレーションがマイクロオペレーションキャッシュ220から提供されたという指標を命令フェッチ/復号206に送信することができ、したがって、命令フェッチ/復号206は、命令グループ内の命令をフェッチし、復号する必要がない。したがって、命令フェッチ/復号206は、命令グループのフェッチ及び/又は復号を終了することができる。
フロントエンドサブシステム200は、マイクロオペレーションフィルタ222を更に含み、これは、何れのマイクロオペレーションがマイクロオペレーションキャッシュ220に格納されるかを制御するための動作を実行する回路構成を含む機能ブロックである。マイクロオペレーションフィルタ222は、バイパスされる(したがって、マイクロオペレーションキャッシュ220に格納されない)マイクロオペレーションを判定するために、マイクロオペレーションキャッシュ220に格納される場合にアクセスされないと予測される命令グループを識別するレコードを使用する。マイクロオペレーションフィルタ222及びそれによって使用されるレコードは、以下により詳細に説明する。
バックエンドサブシステム202は、整数実行ユニット224及び浮動小数点実行ユニット226を含み、これらは、整数マイクロオペレーション及び浮動小数点マイクロオペレーションをそれぞれ実行するための動作を実行する回路構成を含む機能ブロックである。整数実行ユニット224及び浮動小数点実行ユニット226は、リネーミングハードウェア、実行スケジューラ、算術論理ユニット(arithmetic logic unit、ALU)、(浮動小数点実行ユニット226内の)浮遊小数点乗算及び加算ユニット、レジスタファイル等のように、マイクロオペレーションを実行するため又は他の動作を実行するために使用される要素を含む。マイクロオペレーションは、マイクロオペレーションのデータタイプ、マイクロオペレーションを実行するために使用される実行ユニットリソース等に基づいて、ディスパッチ214から整数実行ユニット224又は浮動小数点実行ユニット226に操向又は方向付けられる。
メモリサブシステム204は、キャッシュメモリの階層を含み、これは、(メモリ104よりも)命令及び/又はデータを使用する機能ブロックにより近い命令及び/又はデータのコピーを格納するための動作を実行する回路構成、並びに、命令及び/又はデータのアクセスを処理するための制御回路を含む。階層は、2つのレベルを含み、レベル1(L1)命令キャッシュ208及びL1データキャッシュ228が第1のレベルにあり、L2キャッシュ210が第2のレベルにある。メモリサブシステム204は、メモリ104に通信可能に結合されており、また、外部L3キャッシュ(図示省略)に結合されてもよい。
特定の構成、接続性及び数の要素が図2のプロセッサ102に示されているが、いくつかの実施形態では、異なる構成、接続性及び/又は数の要素がプロセッサ102に存在する。一般に、プロセッサ102は、本明細書に記載された動作を実行するのに十分な要素を含む。
(マイクロオペレーションフィルタ及びマイクロオペレーションキャッシュ)
記載された実施形態では、マイクロオペレーションフィルタは、マイクロオペレーションのコピーがバイパスされるか、又は、マイクロオペレーションキャッシュに格納されるかを制御するための動作を実行する。図3は、いくつかの実施形態による、マイクロオペレーションフィルタ222及びマイクロオペレーションキャッシュ220を示すブロック図である。機能ブロックの特定の構成が図3に示され、動作が対応する機能ブロックによって実行されるものとして記載されているが、いくつかの実施形態は、機能ブロックの異なる構成を使用し、及び/又は、動作の一部又は全部が異なる機能ブロックによって実行されることに留意されたい。一般に、記載された実施形態は、本明細書に記載の動作を実行するのに十分な機能ブロックを含む。
記載された実施形態では、マイクロオペレーションフィルタは、マイクロオペレーションのコピーがバイパスされるか、又は、マイクロオペレーションキャッシュに格納されるかを制御するための動作を実行する。図3は、いくつかの実施形態による、マイクロオペレーションフィルタ222及びマイクロオペレーションキャッシュ220を示すブロック図である。機能ブロックの特定の構成が図3に示され、動作が対応する機能ブロックによって実行されるものとして記載されているが、いくつかの実施形態は、機能ブロックの異なる構成を使用し、及び/又は、動作の一部又は全部が異なる機能ブロックによって実行されることに留意されたい。一般に、記載された実施形態は、本明細書に記載の動作を実行するのに十分な機能ブロックを含む。
図3~図6に示す機能ブロックを記載する際及びこの記載の他の場所では、マイクロオペレーションは「単回使用」として記載されている。一般に、単回使用マイクロオペレーションは、マイクロオペレーションキャッシュに格納又は「充填」されるが、マイクロオペレーションキャッシュから追い出される前にアクセスされないマイクロオペレーションであり、したがって、マイクロオペレーションキャッシュに格納されている間にそれらの有用性に関して「不能」と見なされる。言い換えれば、単回使用マイクロオペレーションがマイクロオペレーションキャッシュに常駐している間、単回使用マイクロオペレーションが復号された命令グループは、再実行されず、したがって、単回使用マイクロオペレーションを取得するための要求は、マイクロオペレーションキャッシュに対して行われない。命令グループの再実行の欠如は、例えば、命令グループが連続して実行される場合、プログラムコード内のサブルーチンが1回のみ実行される場合等に起こり得る。
ここで図3を参照すると、上記のように、命令フェッチ/復号206は、命令をフェッチし、フェッチされた命令を復号することに関連付けられた動作を実行する。より詳細には、命令フェッチ/復号206は、命令グループ内の命令(マクロ命令、複合命令等と呼ばれ得る)をフェッチし、各命令を1つ以上のマイクロオペレーションに復号する。各マイクロオペレーションは、低レベルプロセッサ命令であり、これは、実行ユニットによって実行されると、そのマイクロオペレーションが復号された命令の動作全体のそれぞれの部分を実行ユニットに実行させる。例えば、単一のRepMov命令は、命令フェッチ/復号206によって、個々のデータ要素に対してRepMov命令によって指示された移動動作を実行するための複数の個別のマイクロオペレーションに復号され得る。
動作中、命令フェッチ/復号206は、プロセッサ102において別の機能ブロック(例えば、次のPC216)から命令グループ識別子300を受信する。次いで、命令フェッチ/復号206は、必要に応じて、L1命令キャッシュ208、L2キャッシュ210又はメモリ104から対応する命令グループをフェッチする。次に、命令フェッチ/復号206は、命令グループ内の命令を1つ以上のマイクロオペレーション302に復号し、マイクロオペレーション302をマイクロオペレーションキュー212に提供する。マイクロオペレーションキュー212から、マイクロオペレーション302は、ディスパッチ214を介して、実行のためにバックエンドサブシステム202に供給される。
マイクロオペレーションキャッシュ220は、上記のように、マイクロオペレーションのコピーを格納する。マイクロオペレーションキャッシュ220は、いくつかのマイクロオペレーションキャッシュエントリ304(明確にするために、そのうちのいくつかのみがラベル付けされている)を含み、それらの各々は、マイクロオペレーションのコピー及びそれに関連付けられたメタデータを格納するための回路構成を含む。図4は、いくつかの実施形態による、マイクロオペレーションキャッシュエントリ304を示すブロック図である。マイクロオペレーションキャッシュエントリ304が特定の値を含むものとして図4に示されているが、いくつかの実施形態では、マイクロオペレーションキャッシュエントリ304は、異なる値を含むことに留意されたい。例えば、いくつかの実施形態では、各マイクロオペレーションキャッシュエントリ304は、マイクロオペレーション402のみを含み、識別子400、アクセスビット(accessed bit、AB)404及びメタデータ(metadata、MD)406は、他の場所(例えば、マイクロオペレーションキャッシュ220内の個別のタグアレイ内)に格納される。一般に、マイクロオペレーションキャッシュ220は、本明細書に記載された動作を実行するのに十分な値を含む。
図4から分かるように、マイクロオペレーションキャッシュエントリ304は、識別子400、マイクロオペレーション402、アクセスビット404及びメタデータ406を含む。識別子400は、マイクロオペレーションがマイクロオペレーションキャッシュエントリ304に格納される命令グループの識別子、又は、命令グループと関連付けられた識別子を格納するために使用される。例えば、いくつかの実施形態では、識別子400は、命令グループのメモリ内のアドレス又はそれに基づいて生成された値の一部又は全部を含む。マイクロオペレーション402は、命令グループから復号されたマイクロオペレーションを格納するために使用される。命令グループが復号され得るマイクロオペレーションの数が可変であるため、マイクロオペレーション402は、Mまでのマイクロオペレーションを格納するための容量を有する。アクセスビット404は、マイクロオペレーション402がアクセスされたかどうかを示すインジケータを格納するために使用される。いくつかの実施形態では、アクセスビット404は、マイクロオペレーション402がマイクロオペレーションキャッシュエントリ304に格納されるとクリアされ(例えば、0に設定され)、マイクロオペレーション402がその後にアクセスされると(例えば、1に)設定される単一ビットである。メタデータ406は、有効性情報、スレッド識別子等のマイクロオペレーションキャッシュエントリ304のメタデータを格納するために使用される。
いくつかの実施形態では、マイクロオペレーションキャッシュ220は、例えば、セットアソシアティビティ又は別の形態のアソシアティビティを使用して、アソシアティブとして構成される。マイクロオペレーションキャッシュ220はアソシアティブとして構成されるため、各マイクロオペレーションキャッシュエントリ304は、異なる命令グループ(例えば、2つ以上のメモリアドレスに位置する命令グループ等)の範囲又は部分の中からの命令グループから復号されたマイクロオペレーションを格納するために使用することができる。言い換えれば、所定のマイクロオペレーションキャッシュエントリ304は、単一の命令グループのマイクロオペレーションを格納することに限定されない。マイクロオペレーションキャッシュ220における置換中、所定のマイクロオペレーションキャッシュエントリ304に格納された全てのマイクロオペレーションは、所定のマイクロオペレーションキャッシュエントリ304を解放して別の命令グループから復号されたマイクロオペレーションを格納するために追い出することができる。いくつかの実施形態では、マイクロオペレーションキャッシュエントリ304は、最低使用頻度の(least-recently-used、LRU)、最も使用されていない等のルール又はポリシーに従って追い出され、さもなければ処理される。
ここで図3に戻ると、マイクロオペレーションキャッシュ220は、制御部306を含み、制御部306は、マイクロオペレーションキャッシュ220の動作を制御するための回路構成を含む。例えば、制御部306は、マイクロオペレーション及び関連付けられたメタデータをそれぞれのマイクロオペレーションキャッシュエントリ304に格納すること、マイクロオペレーションキャッシュエントリ304を選択して、入ってくるマイクロオペレーションを格納するためのスペースを解放すること、マイクロオペレーションキャッシュエントリ304を検索して、所定の命令グループから復号されたマイクロオペレーションが現在マイクロオペレーションキャッシュエントリ304内に格納されているかどうかを判定すること、マイクロオペレーションキャッシュエントリ304からマイクロオペレーションを取得して(例えば、マイクロオペレーションキュー212に)提供すること等のための動作を実行することができる。
上記のように、マイクロオペレーション及び関連付けられたメタデータをマイクロオペレーションキャッシュエントリ304に格納するための動作を実行する場合、制御部306は、マイクロオペレーションフィルタ222から、マイクロオペレーションが復号された命令グループの識別子(例えば、メモリアドレスの一部又は全部)、スレッド識別子等のマイクロオペレーション及びメタデータを含むマイクロオペレーション情報308を受信する。次いで、制御部306は、利用可能なマイクロオペレーションキャッシュエントリ304を見つけ又は解放し、マイクロオペレーション及びメタデータを、利用可能なマイクロオペレーションキャッシュエントリ304に格納する。一方、マイクロオペレーションキャッシュエントリ304からマイクロオペレーションを取得し、提供するための動作を実行する場合、制御部306は、プロセッサ102内の別の機能ブロック(例えば、次のPC216)から命令グループ識別子300を受信し、一致する識別子を求めてマイクロオペレーションキャッシュエントリ304を検索し、一致する識別子を格納するマイクロオペレーションキャッシュエントリ304が見つかると、マイクロオペレーション310をマイクロオペレーションキュー212に提供する。マイクロオペレーションキュー212から、マイクロオペレーション310は、ディスパッチ214を介して、実行のためにバックエンドサブシステム202に供給される。
いくつかの実施形態では、命令グループのためのマイクロオペレーション310を取得して、マイクロオペレーションキュー212に提供するための動作の一部として、制御部306(又は別の機能ブロック)は、命令グループのためのマイクロオペレーションがマイクロオペレーションキャッシュエントリ304内で見つかった(したがって、マイクロオペレーションキャッシュ220内に「ヒット」がある)ことを、例えば、ヒット/ミス326を介して、命令フェッチ/復号206に通知する。次いで、命令フェッチ/復号206は、命令グループをフェッチ及び/又は復号するための動作を終了する。例えば、命令フェッチ/復号206は、制御部306が一致する識別子を求めてマイクロオペレーションキャッシュエントリ304を検索する間、命令グループのフェッチ要求をストール又はホールドすることができ、制御部306が一致を見つけると、ストール又はホールドされたフェッチ要求を破棄する。別の例として、命令フェッチ/復号206は、制御部306が、一致する識別子を求めてマイクロオペレーションキャッシュエントリ304を検索する間、命令グループのフェッチ要求を送信することができるが、制御部306が一致を見つけると、フェッチされた命令グループを無視又は破棄し、したがって、復号しない。これに対し、命令グループのためのマイクロオペレーションがマイクロオペレーションキャッシュエントリ304内で見つからない(したがって、マイクロオペレーションキャッシュ220内に「ミス」がある)場合、制御部306は、マイクロオペレーションがマイクロオペレーションキャッシュ220に格納されていないことを、例えば、ヒット/ミス326を介して命令フェッチ/復号206に通知し、命令フェッチ/復号206は、命令グループのフェッチ及び復号を継続する。
また、制御部306は、マイクロオペレーションキャッシュに格納されている間にアクセスされなかったマイクロオペレーションがマイクロオペレーションキャッシュエントリ304から追い出されると、マイクロオペレーションフィルタ222に通知するための動作を実行する。言い換えれば、マイクロオペレーションキャッシュエントリ304からの単回使用マイクロオペレーションを追い出すと、制御部306は、追い出されたマイクロオペレーションが復号された命令グループの識別子を少なくとも含む単回使用情報312をマイクロオペレーションフィルタ222に通信する。マイクロオペレーションフィルタ222は、次いで、以下に説明するように、受信した単回使用情報312を処理する。
マイクロオペレーションフィルタ222は、上記のように、何れのマイクロオペレーションがマイクロオペレーションキャッシュ220に格納されるかを制御する。マイクロオペレーションフィルタ222は、何れのマイクロオペレーションがマイクロオペレーションキャッシュ220に格納されるかを制御するために使用される情報を格納するためのマイクロオペレーションフィルタテーブル314を含む。マイクロオペレーションフィルタテーブル314は、いくつかのマイクロオペレーションフィルタテーブルエントリ316(明確にするために、そのうちのいくつかのみがラベル付けされている)を含み、その各々は、単回使用と予測される命令グループについての情報を格納するための回路構成を含み、情報は、対応するマイクロオペレーションをバイパスする(すなわち、対応するマイクロオペレーションがマイクロオペレーションキャッシュ220に格納されるのを防止する)ために使用される。図5は、いくつかの実施形態による、マイクロオペレーションフィルタテーブルエントリ316を示すブロック図である。マイクロオペレーションフィルタテーブルエントリ316は、特定の値の構成を含むものとして図5に示されているが、いくつかの実施形態では、マイクロオペレーションフィルタテーブルエントリ316は、異なる値を含むことに留意されたい。一般に、各マイクロオペレーションフィルタテーブルエントリ316は、本明細書に記載された動作を実行するのに十分な値を含む。
図5から分かるように、マイクロオペレーションフィルタテーブルエントリ316は、識別子500、ローカルカウンタ(local counter、LC)502及びメタデータ(MD)504を含む。識別子500は、マイクロオペレーションがマイクロオペレーションキャッシュ220において単回使用であると予測される命令グループのための識別子、又は、命令グループに関連付けられた識別子を格納するために使用される。例えば、いくつかの実施形態では、識別子500は、命令グループのメモリ内のアドレスの一部又は全部を含む。ローカルカウンタ502は、マイクロオペレーションフィルタテーブルエントリ316のカウンタを格納するために使用される。ローカルカウンタ502は、マイクロオペレーションフィルタテーブルエントリ316からの情報が、陳腐なものとして、したがって、正しい可能性が低いものとして破棄される前に、マイクロオペレーションをバイパスするために何回使用されるかを制御するために使用される。メタデータ504は、有効性情報、スレッド識別子及び他の情報等のような、マイクロオペレーションフィルタテーブルエントリ316のメタデータを格納するために使用される。
ここで図3に戻ると、マイクロオペレーションフィルタテーブル314は、グローバルカウンタ318を含む。グローバルカウンタ318は、マイクロオペレーションフィルタテーブルエントリ316に関連付けられたグローバルカウンタを格納するために使用される。グローバルカウンタ318は、グループとしてのマイクロオペレーションフィルタテーブルエントリ316の全てからの情報が、グループとしてのマイクロオペレーションフィルタテーブルエントリ316の全てからの情報が陳腐なものとして、したがって、正しい可能性が低いものとして破棄される前に何回使用されるかを制御するために使用される。
また、マイクロオペレーションフィルタ222は、どの命令グループがマイクロオペレーションフィルタテーブル314に追加されるかを判定するために使用される情報を格納するための追い出し履歴テーブル320を含む。追い出し履歴テーブル320は、追い出し履歴テーブルエントリ322(明確にするために、いくつかのみにラベル付けされている)を含み、その各々は、マイクロオペレーションがマイクロオペレーションキャッシュ220において単回使用であった命令グループの識別子を格納し、及び、何れの命令グループがマイクロオペレーションフィルタテーブル314に追加されるかを判定するために使用されるカウンタを格納するための回路構成を含む。図6は、いくつかの実施形態による、追い出し履歴テーブルエントリ322を示すブロック図である。追い出し履歴テーブルエントリ322は、特定の値の構成を含むものとして図6に示されているが、いくつかの実施形態では、追い出し履歴テーブルエントリ322は、異なる値を含むことに留意されたい。一般に、各追い出し履歴テーブルエントリ322は、本明細書に記載された動作を実行するのに十分な値を含む。
図6から分かるように、追い出し履歴テーブルエントリ322は、識別子600、信頼カウンタ(confidence counter、CC)602及びメタデータ(MD)604を含む。識別子600は、マイクロオペレーションがマイクロオペレーションキャッシュ220において単回使用であった命令グループのための識別子又は命令グループと関連付けられた識別子を格納するために使用される。例えば、いくつかの実施形態では、識別子500は、命令グループのメモリ内のアドレスの一部又は全部から生成されるか、それに基づいて生成されるタグ又は他の値を含む。信頼カウンタ602は、識別子600によって識別された命令グループから復号されたマイクロオペレーションがマイクロオペレーションキャッシュ220において単回使用であった回数のカウントが保持されるカウンタを格納するために使用される。メタデータ604は、有効性情報、スレッド識別子及び他の情報等のような、追い出し履歴テーブルエントリ322のメタデータを格納するために使用される。
いくつかの実施形態では、追い出し履歴テーブル320は、例えば、セットアソシアティビティ又は別の形態のアソシアティビティを使用して、アソシアティブとして構成される。追い出し履歴テーブル320がアソシアティブとして構成されるため、各追い出し履歴テーブルエントリ322は、異なる命令グループ(例えば、2つ以上の異なるメモリアドレスに位置する命令グループ等)の範囲又は部分の中から、単回使用命令グループの識別子を格納するために使用され得る。言い換えれば、所定の追い出し履歴テーブルエントリ322は、単一の命令グループの識別子を格納することに限定されない。追い出し履歴テーブル320における置換中、所定の追い出し履歴テーブルエントリ322に格納された単回使用命令グループの既存の識別子は、所定の追い出し履歴テーブルエントリ322を解放して別の単回使用命令グループの識別子を格納するために追い出すことができる。いくつかの実施形態では、追い出し履歴テーブルエントリ322は、最低使用頻度の(LRU)、最も使用されていない等のルール又はポリシーに従って追い出され、さもなければ処理される。いくつかの実施形態では、追い出し履歴テーブル320のためのアソシアティビティ、例えば、配置の仕方及びセット等は、マイクロオペレーションキャッシュ220のために使用されるものと同様であり、これは、マイクロオペレーションキャッシュ220からの単回使用情報312を追い出し履歴テーブル320内に格納する場合に役立つことができる。
図3に戻ると、マイクロオペレーションフィルタ222は、制御部324を含み、制御部324は、マイクロオペレーションフィルタ222の動作を制御/管理するための回路構成を含む。例えば、制御部324は、マイクロオペレーションキャッシュ220から、単回使用情報312を受信することと、単回使用情報312に基づいて追い出し履歴テーブル320を更新することと、追い出し履歴テーブル320からの情報に基づいて、それを使用してマイクロオペレーションフィルタテーブル314を更新することと、マイクロオペレーションフィルタテーブル314内の情報に基づいて命令グループのマイクロオペレーションをバイパスすることと、マイクロオペレーションフィルタテーブルエントリ316内のローカルカウンタ502を更新し、ローカルカウンタ502を使用して対応するマイクロオペレーションフィルタテーブルエントリ316内の情報を無効にことと、グローバルカウンタ318を更新し、グローバルカウンタ318を使用してマイクロオペレーションフィルタテーブルエントリ316内の情報を無効にすることと、のための動作を実行することができる。
いくつかの実施形態では、上記のように、追い出し履歴テーブル320からの情報に基づいて、それを使用してマイクロオペレーションフィルタテーブル314を更新すると、制御部324は、いくつかの動作を実行する。言い換えれば、マイクロオペレーションが単回使用と予測される命令グループの識別子をマイクロオペレーションフィルタテーブル314に追加する制御部324のプロセスは、マルチステッププロセスである。第1のステップでは、マイクロオペレーションキャッシュ220は、制御部324に、マイクロオペレーションがマイクロオペレーションキャッシュ220において単回使用であると分かった所定の命令グループに関する単回使用情報312を提供する。第2のステップでは、制御部324は、受信した単回使用情報312を使用して、所定の命令グループの識別子で追い出し履歴テーブルエントリ322を更新する。追い出し履歴テーブルエントリ322を更新することは、既存の追い出し履歴テーブルエントリ322を更新すること、又は、利用可能な追い出し履歴テーブルエントリ322に情報を新たに追加することを意味し得る。何れの場合も、更新することは、命令グループから復号されたマイクロオペレーションがマイクロオペレーションキャッシュ220において単回使用であることが分かった回数を示すために、追い出し履歴テーブルエントリ322の信頼カウンタ602を更新することを含む。第3のステップでは、追い出し履歴テーブルエントリ322の信頼カウンタ602を更新することによって信頼カウンタ602が閾値を超える場合、制御部324は、命令グループに関する情報をマイクロオペレーションフィルタテーブルエントリ316に追加する。以下により詳細に説明するように、マイクロオペレーションフィルタテーブルエントリ316内の情報は、マイクロオペレーションをバイパスするために使用される。したがって、情報をマイクロオペレーションフィルタテーブルエントリ316に追加することによって、制御部324は、命令グループから復号されたマイクロオペレーションの将来のインスタンスをバイパスするようにそれ自体を構成する。本質的に、マイクロオペレーションが、以前に、マイクロオペレーションキャッシュ220において指定された回数(追い出し履歴テーブルエントリ322においてカウントされる)単回使用であったことに基づいて、制御部324は、マイクロオペレーションが、命令グループの将来のインスタンスに対してマイクロオペレーションキャッシュ220において単回使用であり続けることになると予測を行う。
いくつかの実施形態では、マイクロオペレーションフィルタテーブル314内の情報に基づいて命令グループのマイクロオペレーションをバイパスすると、制御部324は、命令フェッチ/復号206から、所定の命令グループのマイクロオペレーション情報308を受信する。制御部324は、次いで、マイクロオペレーション情報308に基づいて、マイクロオペレーションフィルタテーブルエントリ316内の識別子500と所定の命令グループの識別子との間の一致を求めてマイクロオペレーションフィルタテーブル314を検索する。一致が見つかると、制御部324は、マイクロオペレーションのコピーがマイクロオペレーションキャッシュエントリ304に格納されるのを防止することによって、すなわち、命令フェッチ/復号206から受信したマイクロオペレーションを破棄又は無視することによって、マイクロオペレーションをバイパスする。一方、一致が見つからない場合、制御部324は、マイクロオペレーションをバイパスしない。この場合、制御部324は、マイクロオペレーション情報308をマイクロオペレーションキャッシュ220に提供し、マイクロオペレーションキャッシュ220は、マイクロオペレーションのコピー、命令グループの識別子及び場合によってはマイクロオペレーション情報308からのメタデータを、利用可能なマイクロオペレーションキャッシュエントリ304に格納する(これは、マイクロオペレーションキャッシュエントリ304から既存の情報を追い出すこと意味し得る)。制御部324の探索及びバイパス動作の結果に関係なく、命令フェッチ/復号206は、マイクロオペレーション302を、実行のためにバックエンドサブシステム202にディスパッチする準備のために、マイクロオペレーションキュー212に転送することに留意されたい。
いくつかの実施形態では、対応するマイクロオペレーションフィルタテーブルエントリ316内の情報を無効にするためにローカルカウンタ502を使用するために、制御部324が最初に命令グループの識別子(及び場合によっては他の情報)を所定のマイクロオペレーションフィルタテーブルエントリ316に格納する場合、制御部324は、所定のマイクロオペレーションフィルタテーブルエントリ316のローカルカウンタ502を指定されたローカルカウンタ値(例えば、5、10又は別の値)に設定する。制御部324は、次いで、命令グループの識別子が所定のマイクロオペレーションフィルタテーブルエントリ316内で見つかったため、マイクロオペレーションがバイパスされる毎に、所定のマイクロオペレーションフィルタテーブルエントリ316のローカルカウンタ502を減少させる。制御部324は、次に、ローカルカウンタがゼロに達すると、所定のマイクロオペレーションフィルタテーブルエントリ316を無効にし、そこに格納された情報を使用不能にする。例えば、所定のマイクロオペレーションフィルタテーブルエントリ316を無効にするために、制御部324は、所定のマイクロオペレーションフィルタテーブルエントリ316が現在有効ではないことを示すために、所定のマイクロオペレーションフィルタテーブルエントリ316のメタデータ504内に有効ビットを設定することができる。所定のマイクロオペレーションフィルタテーブルエントリ316のローカルカウンタ502を設定し、減少させ、最終的に、ローカルカウンタ502の値に基づいて所定のマイクロオペレーションフィルタテーブルエントリ316を無効にすることによって、制御部324は、所定のマイクロオペレーションフィルタテーブルエントリ316からの情報がマイクロオペレーションをバイパスするために使用される回数を制限し、これは、陳腐な情報がマイクロオペレーションを(場合によっては不正確に)バイパスするために使用されることを回避することに役立つことができる。
いくつかの実施形態では、マイクロオペレーションフィルタテーブルエントリ316内の情報を無効するためにグローバルカウンタ318を使用するために、制御部324は、最初にグローバルカウンタ318をゼロに設定する。例えば、制御部324は、マイクロオペレーションフィルタテーブルエントリ316の全てが無効にされた後等の起動時にグローバルカウンタ318をゼロに設定することができる。制御部324は、次いで、命令グループの識別子が任意のマイクロオペレーションフィルタテーブルエントリ316で見つかったためにマイクロオペレーションがバイパスされる毎に、グローバルカウンタ318を増加させる。制御部324は、次に、グローバルカウンタがリセット閾値(例えば、40、55又は別の値)を超えると、マイクロオペレーションフィルタテーブルエントリ316の全てを無効にする。例えば、マイクロオペレーションフィルタテーブルエントリ316の全てを無効にするために、制御部324は、マイクロオペレーションフィルタテーブルエントリ316の各々のメタデータ504内に有効ビットを設定して、マイクロオペレーションフィルタテーブルエントリ316が現在有効ではないことを示すことができる。グローバルカウンタ318を設定し増加させ、最終的に、グローバルカウンタ318の値に基づいてマイクロオペレーションフィルタテーブルエントリ316の全てを無効にすることによって、制御部324は、マイクロオペレーションフィルタテーブル314全体からの情報がマイクロオペレーションをバイパスするために使用される回数を制限し、これは、陳腐な情報がマイクロオペレーションをバイパスするために使用されることを回避することに役立つことができる。
(予測及び誤予測)
記載された実施形態では、マイクロオペレーションフィルタ(例えば、マイクロオペレーションフィルタ222)は、マイクロオペレーションキャッシュ(例えば、マイクロオペレーションキャッシュ220)において単回使用である命令グループのマイクロオペレーションに関する情報に基づいて、命令グループのマイクロオペレーションの後続のインスタンスがマイクロオペレーションキャッシュにおいて単回使用であるかどうかを予測する。マイクロオペレーションフィルタは、命令グループの識別子をマイクロオペレーションフィルタテーブルに追加することによって「予測」を行い、そこから、識別子は、命令グループから復号された後続のマイクロオペレーションをバイパスするために使用される。マイクロオペレーションフィルタによって行われる予測は、以前のマイクロオペレーションアクセス挙動に基づく将来のマイクロオペレーションアクセス挙動に関する仮定/推定である。予測が不正確である可能性があり、したがって、単回使用と予測されるマイクロオペレーションがマイクロオペレーションキャッシュにおいてアクセスされてしまう。ただし、実際の行動が予測された行動と異なる場合、バイパスされた(したがって、マイクロオペレーションキャッシュにおいて格納されず、利用可能ではない)マイクロオペレーションを再フェッチし、再復号するためにパフォーマンスペナルティが発生するが、マイクロオペレーションキャッシュ及びプロセッサの動作は正しい。
記載された実施形態では、マイクロオペレーションフィルタ(例えば、マイクロオペレーションフィルタ222)は、マイクロオペレーションキャッシュ(例えば、マイクロオペレーションキャッシュ220)において単回使用である命令グループのマイクロオペレーションに関する情報に基づいて、命令グループのマイクロオペレーションの後続のインスタンスがマイクロオペレーションキャッシュにおいて単回使用であるかどうかを予測する。マイクロオペレーションフィルタは、命令グループの識別子をマイクロオペレーションフィルタテーブルに追加することによって「予測」を行い、そこから、識別子は、命令グループから復号された後続のマイクロオペレーションをバイパスするために使用される。マイクロオペレーションフィルタによって行われる予測は、以前のマイクロオペレーションアクセス挙動に基づく将来のマイクロオペレーションアクセス挙動に関する仮定/推定である。予測が不正確である可能性があり、したがって、単回使用と予測されるマイクロオペレーションがマイクロオペレーションキャッシュにおいてアクセスされてしまう。ただし、実際の行動が予測された行動と異なる場合、バイパスされた(したがって、マイクロオペレーションキャッシュにおいて格納されず、利用可能ではない)マイクロオペレーションを再フェッチし、再復号するためにパフォーマンスペナルティが発生するが、マイクロオペレーションキャッシュ及びプロセッサの動作は正しい。
いくつかの実施形態では、信頼カウンタ、ローカルカウンタ、及び/又は、グローバルカウンタの閾値及び値は、単回使用マイクロオペレーションの誤予測も回避しながら、単回使用マイクロオペレーションを有用にバイパスするのを支援する値に設定される。例えば、ローカルカウンタ及びグローバルカウンタ、並びに/又は、ローカルカウンタ及び/若しくはグローバルカウンタのための閾値は、有用なエントリが妥当な時間量の間マイクロオペレーションフィルタテーブルに保持されるが、誤予測の可能性が許容できないほど高くなる前に、より古い/陳腐なエントリがマイクロオペレーションフィルタテーブルから削除されるように、それぞれの値に設定することができる。信頼カウンタ、ローカルカウンタ及び/又はグローバルカウンタのそれぞれの値は、実験的に判定され、計算され、推定され又は他の方法で生成され得る。
(マイクロオペレーションを処理するためのプロセス)
記載された実施形態では、マイクロオペレーションフィルタ(例えば、マイクロオペレーションフィルタ222)は、命令フェッチ/復号ユニット(例えば、命令フェッチ/復号206)から受信したマイクロオペレーションをバイパスするための動作を実行し、したがってマイクロオペレーションのコピーをマイクロオペレーションキャッシュ(例えば、マイクロオペレーションキャッシュ220)に格納しない。図7は、いくつかの実施形態による、マイクロオペレーションをバイパスするためのプロセスを示すフローチャートである。図7に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として提示されることに留意されたい。他の実施形態によって実行される動作は、異なる動作、異なる順序で実行される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実行される動作を含む。
記載された実施形態では、マイクロオペレーションフィルタ(例えば、マイクロオペレーションフィルタ222)は、命令フェッチ/復号ユニット(例えば、命令フェッチ/復号206)から受信したマイクロオペレーションをバイパスするための動作を実行し、したがってマイクロオペレーションのコピーをマイクロオペレーションキャッシュ(例えば、マイクロオペレーションキャッシュ220)に格納しない。図7は、いくつかの実施形態による、マイクロオペレーションをバイパスするためのプロセスを示すフローチャートである。図7に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として提示されることに留意されたい。他の実施形態によって実行される動作は、異なる動作、異なる順序で実行される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実行される動作を含む。
図7の動作は、マイクロオペレーションフィルタが、命令フェッチ/復号ユニットから、命令グループから復号されたマイクロオペレーションを受信する場合に始まる(ステップ700)。この動作のために、命令フェッチ/復号ユニットは、次のプログラムカウンタ機能ブロック(例えば、次のPC216)又は別のエンティティから受信した命令グループ識別子に基づいて、L1命令キャッシュ(例えば、L1命令キャッシュ208)又はメモリサブシステム(例えば、メモリサブシステム204)内の他の場所から命令グループをフェッチする。命令フェッチ/復号ユニットは、次いで、命令グループ内の命令をマイクロオペレーションに復号する。実行のためにマイクロオペレーションをバックエンドサブシステム(例えば、バックエンドサブシステム202)に転送するとともに、命令フェッチ/復号ユニットは、マイクロオペレーション情報(例えば、マイクロオペレーション情報308)をマイクロオペレーションフィルタに送信する。
マイクロオペレーションフィルタは、次いで、マイクロオペレーションフィルタテーブルエントリ(例えば、マイクロオペレーションフィルタテーブルエントリ316のうち1つ)が一致する識別子を含むかどうかを判定する(ステップ702)。この動作のために、マイクロオペレーションフィルタは、受信したマイクロオペレーション情報から命令グループの識別子を取得する。次いで、マイクロオペレーションフィルタは、命令グループからの識別子を、任意の有効なマイクロオペレーションフィルタテーブルエントリ内の識別子と比較して、一致する識別子を含むマイクロオペレーションフィルタテーブルエントリがあるかどうかを判定する。
マイクロオペレーションフィルタテーブルエントリが一致する識別子を含む場合(ステップ702)、マイクロオペレーションフィルタは、命令グループからのマイクロオペレーションをバイパスする(ステップ704)。この動作のために、マイクロオペレーションフィルタは、マイクロオペレーションフィルタテーブルエントリ内の一致する識別子の存在に基づいて、マイクロオペレーションが単回使用と予測されると判定する。マイクロオペレーションフィルタは、次いで、マイクロオペレーション情報を破棄(例えば、削除、無視等)し、マイクロオペレーション情報のコピーをマイクロオペレーションキャッシュに格納しない。これに対し、マイクロオペレーションフィルタテーブルが一致する識別子を含まない場合(ステップ702)、マイクロオペレーションフィルタは、命令グループからマイクロオペレーションのコピーをマイクロオペレーションキャッシュに格納する(ステップ706)。この動作のために、マイクロオペレーションフィルタは、一致する識別子を有するマイクロオペレーションフィルタテーブルエントリがマイクロオペレーションフィルタテーブル内に見つからないため、マイクロオペレーションが単回使用と予測されないと判定する。マイクロオペレーションフィルタは、次いで、マイクロオペレーションキャッシュに、マイクロオペレーション情報のコピーをマイクロオペレーションキャッシュエントリに格納させる。
(マイクロオペレーションフィルタテーブル内のエントリを更新するためのプロセス)
記載された実施形態では、マイクロオペレーションフィルタ(例えば、マイクロオペレーションフィルタ222)は、マイクロオペレーションをバイパスするために使用されるマイクロオペレーションフィルタテーブル(例えば、マイクロオペレーションフィルタテーブル314)内のエントリを更新するための動作を実行する。図8は、いくつかの実施形態による、マイクロオペレーションフィルタテーブル内のエントリを更新するためのプロセスを示すフローチャートである。図8に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として提示されることに留意されたい。他の実施形態によって実行される動作は、異なる動作、異なる順序で実行される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実行される動作を含む。
記載された実施形態では、マイクロオペレーションフィルタ(例えば、マイクロオペレーションフィルタ222)は、マイクロオペレーションをバイパスするために使用されるマイクロオペレーションフィルタテーブル(例えば、マイクロオペレーションフィルタテーブル314)内のエントリを更新するための動作を実行する。図8は、いくつかの実施形態による、マイクロオペレーションフィルタテーブル内のエントリを更新するためのプロセスを示すフローチャートである。図8に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として提示されることに留意されたい。他の実施形態によって実行される動作は、異なる動作、異なる順序で実行される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実行される動作を含む。
図8の動作は、命令グループから復号されたマイクロオペレーションがマイクロオペレーションキャッシュ内のマイクロオペレーションキャッシュエントリに格納される場合に開始する(ステップ800)。この動作のために、マイクロオペレーション情報(例えば、マイクロオペレーション情報308)は、マイクロオペレーションキャッシュ(例えば、マイクロオペレーションキャッシュ220)によってマイクロオペレーションフィルタから受信される。マイクロオペレーションキャッシュは、次いで、マイクロオペレーションを、利用可能なマイクロオペレーションキャッシュエントリ(例えば、マイクロオペレーションキャッシュエントリ304)に格納する。いくつかの実施形態では、これは、利用可能なマイクロオペレーションキャッシュエントリを解放するために、マイクロオペレーションキャッシュエントリから既存のマイクロオペレーションを追い出すことを意味し得る。ステップ800は、ステップ702~704について上述したように、マイクロオペレーションフィルタによってバイパスされず、代わりに、ステップ702及び706について上述したように、マイクロオペレーションキャッシュに格納されるマイクロオペレーションの例であることに留意されたい。
マイクロオペレーションは、次いで、マイクロオペレーションキャッシュエントリから追い出される(ステップ802)。この動作のために、マイクロオペレーションキャッシュは、別の命令グループからのマイクロオペレーションを格納するため又は別の理由でマイクロオペレーションキャッシュエントリを解放するために、マイクロオペレーションを追い出すことができる。マイクロオペレーションキャッシュエントリからマイクロオペレーションを追い出すと、マイクロオペレーションキャッシュは、例えば、アクセスビット(例えば、アクセスビット404)を使用して、マイクロオペレーションが、マイクロオペレーションキャッシュエントリに格納されている間にアクセスされなかった、したがって、単回使用であったと判定する。マイクロオペレーションキャッシュは、したがって、単回使用情報(例えば、単回使用情報312)をマイクロオペレーションフィルタに通信して、マイクロオペレーションが単回使用であることをマイクロオペレーションフィルタに通知する。
マイクロオペレーションフィルタは、次に、マイクロオペレーションキャッシュから受信した単回使用情報に基づいて、マイクロオペレーションが、マイクロオペレーションキャッシュエントリに格納されている間にアクセスされなかったと判定する(ステップ804)。マイクロオペレーションフィルタは、マイクロオペレーションが単回使用であったと判定すると、命令グループの識別子で追い出し履歴テーブルエントリ(例えば、追い出し履歴テーブルエントリ322)を更新し、及び/又は、命令グループの識別子を格納する追い出し履歴テーブルエントリの信頼カウンタを更新する(ステップ806)。この動作のために、追い出し履歴テーブルエントリが命令グループの識別子を既に含む、したがって、命令グループのマイクロオペレーションが、マイクロオペレーションキャッシュにおいて少なくとも1回、単回使用であることがより早く分かっていた場合、マイクロオペレーションフィルタは、その追い出し履歴テーブルエントリの信頼カウンタを単に更新する(例えば、増加させる、増大させる等)。一方、命令グループの識別子を含む追い出し履歴テーブルエントリがない場合、マイクロオペレーションフィルタは、利用可能な追い出し履歴テーブルエントリを見つけ、識別子を利用可能な追い出し履歴テーブルエントリに追加し、追い出し履歴テーブルの信頼性カウンタを初期値(例えば、1)に設定する。いくつかの実施形態では、利用可能な追い出し履歴テーブルエントリを見つけることは、利用可能な追い出し履歴テーブルエントリを解放するために、既存の情報を追い出し履歴テーブルエントリか追い出すことを意味する。
追い出し履歴テーブルエントリの信頼性カウンタを更新しても追い出し履歴テーブルエントリが閾値を超えない(ステップ808)場合、マイクロオペレーションフィルタは、マイクロオペレーションフィルタテーブルに変更を加えることなく動作を継続する。これに対し、追い出し履歴テーブルエントリの信頼性カウンタを更新することによって追い出し履歴テーブルエントリが閾値を超える(ステップ808)場合、マイクロオペレーションフィルタは、命令グループの識別子を利用可能なマイクロオペレーションフィルタテーブルエントリに格納する(ステップ810)。この動作のために、マイクロオペレーションフィルタは、マイクロオペレーションの十分な数のインスタンスがマイクロオペレーションキャッシュにおいて単回使用であることが判明し、したがって、ステップ806におけるように、マイクロオペレーションフィルタに追い出し履歴テーブルエントリの信頼性カウンタを更新させると、マイクロオペレーションフィルタテーブル内のエントリを更新する。上記のように、マイクロオペレーションフィルタテーブルエントリは、命令グループのマイクロオペレーションをバイパスするために使用されるため、この動作は、マイクロオペレーションの将来のインスタンスがマイクロオペレーションキャッシュにおいて単回使用であることを予測する。
(マイクロオペレーションフィルタテーブルエントリを無効にするためのプロセス)
記載された実施形態では、マイクロオペレーションフィルタ(例えば、マイクロオペレーションフィルタ222)は、マイクロオペレーションフィルタテーブルから陳腐な情報を削除するために、マイクロオペレーションフィルタテーブルエントリ(例えば、マイクロオペレーションフィルタテーブルエントリ316)内の情報を無効にするための動作を実行する。図9は、いくつかの実施形態による、マイクロオペレーションフィルタテーブル内のエントリ内の情報を無効にするためのプロセスを示すフローチャートである。図9に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として提示されることに留意されたい。他の実施形態によって実行される動作は、異なる動作、異なる順序で実行される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実行される動作を含む。
記載された実施形態では、マイクロオペレーションフィルタ(例えば、マイクロオペレーションフィルタ222)は、マイクロオペレーションフィルタテーブルから陳腐な情報を削除するために、マイクロオペレーションフィルタテーブルエントリ(例えば、マイクロオペレーションフィルタテーブルエントリ316)内の情報を無効にするための動作を実行する。図9は、いくつかの実施形態による、マイクロオペレーションフィルタテーブル内のエントリ内の情報を無効にするためのプロセスを示すフローチャートである。図9に示す動作は、いくつかの実施形態によって実行される動作の一般的な例として提示されることに留意されたい。他の実施形態によって実行される動作は、異なる動作、異なる順序で実行される動作、及び/又は、異なるエンティティ若しくは機能ブロックによって実行される動作を含む。
図9の動作では、マイクロオペレーションフィルタテーブル内のエントリが、その中に格納された命令グループの情報(例えば、識別子500及びメタデータ504)を有していると仮定する。例えば、ステップ810を含む図8の動作は、過去のある時点で実行されていてもよい。また、マイクロオペレーションフィルタテーブルエントリのローカルカウンタ(例えば、ローカルカウンタ502)は、命令グループの情報がその中に格納された場合に初期値に設定されている。加えて、グローバルカウンタは、起動時又は全てのマイクロオペレーションフィルタテーブルエントリが以前に無効にされた後等のように、マイクロオペレーションフィルタテーブル内のエントリの全てが無効であった場合に、以前にゼロにリセット/設定されている。
図9の動作は、マイクロオペレーションフィルタテーブルエントリ内の情報に基づいて、マイクロオペレーションフィルタが、命令グループからマイクロオペレーションをバイパスすると開始する(ステップ900)。この動作のために、マイクロオペレーションフィルタは、図7のステップ700~704に示される動作と同様の動作を実行し、したがって、マイクロオペレーションは、マイクロオペレーションキャッシュ(例えば、マイクロオペレーションキャッシュ220)内のエントリに格納されないが、代わりに、マイクロオペレーションフィルタによって無視又は破棄される。
マイクロオペレーションフィルタテーブルエントリ内の情報がマイクロオペレーションをバイパスするために使用されたため、マイクロオペレーションフィルタは、マイクロオペレーションフィルタテーブルエントリのローカルカウンタ(例えば、ローカルカウンタ502)を減少させる(ステップ902)。この動作のために、マイクロオペレーションフィルタは、エントリがマイクロオペレーションをバイパスするために何回使用されたかを追跡するエントリのローカルカウンタを低減させる。マイクロオペレーションフィルタテーブルエントリ内の情報がマイクロオペレーションをバイパスするために使用されたため、マイクロオペレーションフィルタは、マイクロオペレーションフィルタテーブルのグローバルカウンタ(例えば、グローバルカウンタ318)を増加させる(ステップ904)。この動作のために、マイクロオペレーションフィルタは、マイクロオペレーションをバイパスするために任意のマイクロオペレーションフィルタテーブルエントリが何回使用されたかを追跡するマイクロオペレーションフィルタテーブルのグローバルカウンタを増大させる。
いくつかの実施形態を説明する際に減少及び増加がステップ902及び904において使用されるが、いくつかの実施形態では、マイクロオペレーションフィルタは、ローカルカウンタ及び/又はグローバルカウンタの異なる値を使用し、ローカルカウンタ及び/又はグローバルカウンタに対応する異なる調整(例えば、増大、低下等)を行う。一般に、記載された実施形態では、マイクロオペレーションフィルタは、個々のマイクロオペレーションフィルタテーブルエントリの使用、及び、マイクロオペレーションフィルタテーブルエントリのグループ/全体としての使用を追跡するためのメカニズム含む。
ローカルカウンタを減少させることによってローカルカウンタがゼロに達する(ステップ906)場合、マイクロオペレーションフィルタは、マイクロオペレーションフィルタテーブルエントリを無効にする(ステップ908)。この動作のために、マイクロオペレーションフィルタは、マイクロ動作フィルタテーブルエントリが無効であることを示すために、マイクロオペレーションフィルタテーブルエントリのメタデータ(例えば、メタデータ504)内に有効ビットを設定し、マイクロオペレーションフィルタテーブルエントリから全ての情報をクリア/削除し、及び/又は、別の方法でマイクロオペレーションフィルタテーブルエントリ内の情報を後にマイクロオペレーションをバイパスするために使用不能にする。そうでなく、ローカルカウンタがゼロに達していない(ステップ906)場合、マイクロオペレーションフィルタは、(すなわち、マイクロオペレーションフィルタテーブルエントリを無効にすることなく)ステップ910に進む。
グローバルカウンタを増加させることにより、グローバルカウンタがリセット閾値を超える(ステップ910)場合、マイクロオペレーションフィルタテーブルは、マイクロオペレーションフィルタテーブルエントリの全てをグループとして無効にする(ステップ912)。この動作のために、マイクロオペレーションフィルタは、マイクロオペレーションフィルタテーブルエントリが無効であることを示すために、各マイクロオペレーションフィルタテーブルエントリのメタデータ(例えば、メタデータ504)内に有効ビットを設定し、マイクロオペレーションフィルタテーブルエントリの全てから全ての情報をクリア/削除し、及び/又は、別の方法でマイクロオペレーションフィルタテーブル内の全ての情報を後にマイクロオペレーションをバイパスするために使用不能にする。そうではなく、グローバルカウンタがリセット閾値を超えていない(ステップ910)場合、マイクロオペレーションフィルタは、(すなわち、マイクロオペレーションフィルタテーブルエントリの全てを無効にすることなく)後続の動作に進む。
(スレッド)
いくつかの実施形態では、プロセッサは、2つ以上の(場合によっては更に多くの)実行スレッドをサポートするための回路構成、すなわち「コンテキスト」を含む。プロセッサは、したがって、2つ以上の実行スレッドの各々を使用して、プログラムコード命令の状態を維持し、実行することができる。いくつかの実施形態では、プロセッサは、各スレッドについての単回使用マイクロオペレーションをバイパスするために、上述したものと同様の動作を実行する。これらの実施形態のいくつかでは、複数のスレッドは、マイクロオペレーションフィルタテーブル及び追い出し履歴テーブルを共有することができる。これらの実施形態では、したがって、マイクロオペレーションキャッシュに格納されたマイクロオペレーションにアクセスしないことを予測し、及び、それに基づいてマイクロオペレーションをバイパスすることは、別のスレッドの過去の挙動に全体的に又は部分的に基づいて所定のスレッドに対して行われ得る。これらの実施形態のうち他の実施形態では、各スレッドは、それ自体のマイクロオペレーションフィルタテーブル及び/若しくは追い出し履歴テーブルを有することができ、又は、共有マイクロオペレーションフィルタテーブル及び追い出し履歴テーブルのいくつかの部分への排他的なアクセスを有することができる。これらの実施形態では、マイクロオペレーションキャッシュに格納されたマイクロオペレーションにアクセスしないと予測し、及び、それに基づいてマイクロオペレーションをバイパスすることは、所定のスレッドの過去の挙動に完全に基づいて所定のスレッドに対して行われ得る。
いくつかの実施形態では、プロセッサは、2つ以上の(場合によっては更に多くの)実行スレッドをサポートするための回路構成、すなわち「コンテキスト」を含む。プロセッサは、したがって、2つ以上の実行スレッドの各々を使用して、プログラムコード命令の状態を維持し、実行することができる。いくつかの実施形態では、プロセッサは、各スレッドについての単回使用マイクロオペレーションをバイパスするために、上述したものと同様の動作を実行する。これらの実施形態のいくつかでは、複数のスレッドは、マイクロオペレーションフィルタテーブル及び追い出し履歴テーブルを共有することができる。これらの実施形態では、したがって、マイクロオペレーションキャッシュに格納されたマイクロオペレーションにアクセスしないことを予測し、及び、それに基づいてマイクロオペレーションをバイパスすることは、別のスレッドの過去の挙動に全体的に又は部分的に基づいて所定のスレッドに対して行われ得る。これらの実施形態のうち他の実施形態では、各スレッドは、それ自体のマイクロオペレーションフィルタテーブル及び/若しくは追い出し履歴テーブルを有することができ、又は、共有マイクロオペレーションフィルタテーブル及び追い出し履歴テーブルのいくつかの部分への排他的なアクセスを有することができる。これらの実施形態では、マイクロオペレーションキャッシュに格納されたマイクロオペレーションにアクセスしないと予測し、及び、それに基づいてマイクロオペレーションをバイパスすることは、所定のスレッドの過去の挙動に完全に基づいて所定のスレッドに対して行われ得る。
いくつかの実施形態では、少なくとも1つの電子デバイス(例えば、電子デバイス100)は、非一時的なコンピュータ可読記憶媒体に格納されたコード及び/又はデータを使用して、本明細書に記載された動作の一部又は全部を実行する。より詳細には、少なくとも1つの電子デバイスは、コンピュータ可読記憶媒体からコード及び/又はデータを読み取り、記載された動作を実行する場合にコードを実行し及び/又はデータを使用する。コンピュータ可読記憶媒体は、電子デバイスによって使用されるコード及び/又はデータを格納する任意のデバイス、媒体又はそれらの組み合わせであり得る。例えば、コンピュータ可読記憶媒体は、フラッシュメモリ、ランダムアクセスメモリ(例えば、eDRAM、RAM、SRAM、DRAM、DDR4 SDRAM等)、不揮発性RAM(例えば、位相変化メモリ、強誘電性ランダムアクセスメモリ、スピントランスファーランダムアクセスメモリ、磁気抵抗ランダムアクセスメモリ等)、読み取り専用メモリ(read-only memory、ROM)、及び/又は、磁気若しくは光学格納媒体(例えば、ディスクドライブ、磁気テープ、CD、DVD等)を含むことができるが、これらに限定されない。
いくつかの実施形態では、1つ以上のハードウェアモジュールが、本明細書に記載された動作を実行する。例えば、ハードウェアモジュールは、1つ以上の中央処理ユニット(CPU)/CPUコア、グラフィック処理ユニット(GPU)/GPUコア、特定用途向け集積回路(ASIC)チップ、フィールドプログラマブルゲートアレイ(field-programmable gate array、FPGA)、コンプレッサ又はエンコーダ、計算ユニット、埋め込みプロセッサ、加速処理ユニット(accelerated processing unit、APU)、コントローラ、及び/又は、他の機能ブロックを含むことができるが、これらに限定されない。そのようなハードウェアモジュール内の回路構成(例えば、集積回路素子、ディスクリート回路素子等)がアクティブ化されると、回路構成は、動作の一部又は全部を実行する。いくつかの実施形態では、ハードウェアモジュールは、命令(プログラムコード、ファームウェア等)を実行すると、動作を実行する実行パイプライン、計算又は処理ユニット等の汎用回路構成を含む。いくつかの実施形態では、ハードウェアモジュールは、動作を実行する特定用途向け又は専用の回路構成を含み、場合によっては、命令を実行することなく「ハードウェア内の」動作の一部又は全部を実行する回路構成を含む。
いくつかの実施形態では、本明細書に記載の機能ブロック及び回路要素(例えば、電子デバイス100又はそのいくつかの部分)の一部又は全部を表すデータ構造は、電子デバイスによって読み取られ、機能ブロック及び回路要素を含むハードウェアを製造するための直接的又は間接的に使用され得るデータベース又は他のデータ構造を含む非一時的なコンピュータ可読記憶媒体に格納される。例えば、データ構造は、Verilog又はVHDL等の高レベル設計言語(high-level design language、HDL)におけるハードウェア機能の動作レベルの記述又はレジスタ転送レベル(register-transfer level、RTL)の記述であってもよい。記述は、記述を合成して、上記の機能ブロック及び回路要素を含むハードウェアの機能を表す合成ライブラリからのトランジスタ/回路素子のリストを含むネットリストを生成することができる合成ツールによって読み取られ得る。ネットリストは、次いで、マスクに適用される幾何学的形状を記述するデータセットを生成するために配置され、ルーティングされ得る。マスクは、次いで、上記の機能ブロック及び回路要素に対応する半導体回路又は回路(例えば、集積回路)を製造するために、様々な半導体製造ステップで使用され得る。代替的に、コンピュータアクセス可能記憶媒体上のデータベースは、所望に応じて、ネットリスト(合成ライブラリの有無にかかわらず)若しくはデータセット、又は、グラフィックデータシステム(Graphic Data System、GDS)IIデータであってもよい。
この記載では、変数又は不特定の値(すなわち、値の特定の例を含まない値の一般的な説明)は、N、M、X等の文字によって表される。本明細書で使用されるように、この記載において異なる場所で類似の文字を使用する可能性があるにもかかわらず、各場合における変数及び不特定の値は、必ずしも同じではなく、すなわち、一般的な変数及び不特定値のいくつか又は全てに対して意図される変数及び値が存在し得る。言い換えれば、Nの特定の値の例、並びに、この記載における変数及び指定されていない値を表すために使用される任意の他の文字は、必ずしも互いに関連しない。
本明細書で使用される場合、「その他」又は「等」という表現は、1つの及び/又は場合、すなわち、その他が関連付けられるリスト内の要素「のうち少なくとも1つ」の等価物を示することが意図される。例えば、「電子デバイスが第1の動作、第2の動作等を実行する」という記述では、電子デバイスは、第1の動作、第2の動作及び他の動作のうち少なくとも1つを実行する。加えて、1つ等に関連付けられたリスト内の要素は、一組の例の中からの例に過ぎず、実施例の少なくともいくつかは、いくつかの実施形態では現れない場合がある。
実施形態の上記の説明は、例示及び説明の目的でのみ提示されている。それらは、網羅的であること、又は、実施形態を開示された形態に限定することを意図するものではない。したがって、多くの修正及び変形が当業者には明らかであろう。更に、上記の開示は、実施形態を限定することを意図するものではない。実施形態の範囲は、添付の特許請求の範囲によって定義される。
Claims (20)
- 電子デバイスであって、
プロセッサと、
前記プロセッサ内のマイクロオペレーションキャッシュであって、前記マイクロオペレーションキャッシュは、複数のマイクロオペレーションキャッシュエントリを含み、各マイクロオペレーションキャッシュエントリは、1つ以上の命令の命令グループから復号されたマイクロオペレーションを格納するように構成されている、マイクロオペレーションキャッシュと、
前記プロセッサ内のマイクロオペレーションフィルタであって、前記マイクロオペレーションフィルタは、複数のマイクロオペレーションフィルタテーブルエントリを含み、各マイクロオペレーションフィルタテーブルエントリは、前記マイクロオペレーションが前記マイクロオペレーションキャッシュに格納された場合にアクセスされないと予測される命令グループの識別子を格納するように構成されている、マイクロオペレーションフィルタと、を備え、
前記マイクロオペレーションフィルタは、
第1の命令グループの第1の識別子を受信することと、
マイクロオペレーションフィルタテーブルエントリが前記第1の識別子と一致する識別子を含む場合に、前記第1の命令グループからの前記マイクロオペレーションのコピーが前記マイクロオペレーションキャッシュに格納されるのを防止することと、
を行うように構成されている、
電子デバイス。 - 前記マイクロオペレーションフィルタは、
第2の命令グループの第2の識別子を受信することと、
前記マイクロオペレーションフィルタテーブルエントリが、前記第2の識別子と一致する識別子を含まない場合に、前記第2の命令グループからのマイクロオペレーションを前記マイクロオペレーションキャッシュにキャッシュすることと、
を行うように構成されている、
請求項1の電子デバイス。 - 前記プロセッサ内の追い出し履歴テーブルであって、前記追い出し履歴テーブルは、複数の追い出し履歴テーブルエントリを含み、各追い出し履歴テーブルエントリは、前記マイクロオペレーションが前記マイクロオペレーションキャッシュに格納された後にアクセスされなかった命令グループの識別子を格納するように構成されている、追い出し履歴テーブルを備え、
前記マイクロオペレーションフィルタは、
所定の命令グループからの所定のマイクロオペレーションがマイクロオペレーションキャッシュエントリから追い出されると、前記所定のマイクロオペレーションが前記マイクロオペレーションキャッシュに格納されている間にアクセスされなかったと判定することと、
前記所定の命令グループの識別子を有する追い出し履歴テーブルエントリと、前記所定の命令グループの識別子を格納する追い出し履歴テーブルエントリの信頼カウンタと、のうち少なくとも1つを更新することと、
前記所定の命令グループの識別子を格納する前記追い出し履歴テーブルエントリの前記信頼カウンタが信頼カウンタ閾値を超えると、前記所定の命令グループの識別子を、利用可能なマイクロオペレーションフィルタテーブルエントリに格納することと、
を行うように構成されている、
請求項1の電子デバイス。 - 前記所定の命令グループの識別子を有する前記追い出し履歴テーブルエントリと、前記所定の命令グループの識別子を格納する前記追い出し履歴テーブルエントリの前記信頼カウンタと、のうち少なくとも1つを更新する場合に、
前記マイクロオペレーションフィルタは、
前記追い出し履歴テーブルが前記所定の命令グループの識別子を有する追い出し履歴テーブルエントリを未だ含まない場合に、
前記所定の命令グループの識別子を用いて利用可能な追い出し履歴テーブルエントリを更新することと、
前記所定の命令グループの識別子を格納する前記追い出し履歴テーブルエントリの信頼カウンタを初期値に設定することと、
前記追い出し履歴テーブルが前記所定の命令グループの識別子を有する追い出し履歴テーブルエントリを既に含む場合に、
前記所定の命令グループの識別子を格納する前記追い出し履歴テーブルエントリの信頼カウンタを増加させることと、
を行うように構成されている、
請求項3の電子デバイス。 - 各マイクロオペレーションキャッシュエントリのためのアクセスインジケータを備え、
前記マイクロオペレーションキャッシュは、
所定のマイクロオペレーションキャッシュエントリに格納されたマイクロオペレーションがアクセスされた場合に、アクセスインジケータを前記所定のマイクロオペレーションキャッシュエントリに設定することと、
前記マイクロオペレーションが前記所定のマイクロオペレーションキャッシュエントリに格納されている間にアクセスされたかどうかを判定するために、それぞれのアクセスインジケータを使用することと、
を行うように構成されている、
請求項3の電子デバイス。 - 利用可能な追い出し履歴テーブルエントリを更新することは、前記所定の命令グループの識別子に基づいて、対応するセット内で追い出し履歴テーブルエントリを見つけ、場合によっては、前記追い出し履歴テーブルエントリから既存の識別子を追い出すことを含む、
請求項3の電子デバイス。 - 各マイクロオペレーションフィルタテーブルエントリのためのローカルカウンタを備え、
前記マイクロオペレーションフィルタは、
命令グループの識別子が所定のマイクロオペレーションフィルタテーブルエントリに格納されると、前記ローカルカウンタをローカルカウンタ値に設定することと、
前記命令グループからのマイクロオペレーションが、前記所定のマイクロオペレーションフィルタテーブルエントリ内の識別子に基づいて前記マイクロオペレーションキャッシュに格納されるのを防止する毎に、前記ローカルカウンタを減少させることと、
前記ローカルカウンタがゼロに達した場合に、前記所定のマイクロオペレーションフィルタテーブルエントリを無効にすることと、
を行うように構成されている、
請求項3の電子デバイス。 - 前記マイクロオペレーションフィルタのグローバルカウンタを備え、
前記マイクロオペレーションフィルタは、
命令グループの識別子を前記マイクロオペレーションフィルタテーブルエントリに格納する前に全てのマイクロオペレーションフィルタテーブルエントリが無効である間に前記グローバルカウンタをゼロに設定することと、
任意の命令グループからのマイクロオペレーションが、それぞれのマイクロオペレーションフィルタテーブルエントリ内の識別子に基づいて前記マイクロオペレーションキャッシュに格納されるのを防止する毎に、前記グローバルカウンタを増加させることと、
前記グローバルカウンタの値がリセット閾値を超えると、全てのマイクロオペレーションフィルタテーブルエントリを無効にすることと、
を行うように構成されている、
請求項3の電子デバイス。 - 前記プロセッサ内の1つ以上のスレッドコンテキストを備え、
各スレッドコンテキストは、
前記マイクロオペレーションフィルタテーブルエントリの個別の部分及び前記追い出し履歴テーブルエントリの個別の部分のうち少なくとも1つを使用すること、又は、
個別のスレッド固有マイクロオペレーションフィルタ及び個別のスレッド固有追い出し履歴テーブルのうち少なくとも1つを使用すること、
を行うように構成されている、
請求項3の電子デバイス。 - 命令グループが格納されるメモリを備え、
命令グループの識別子は、前記命令グループに関連付けられたメモリ内のアドレスの一部若しくは全部を含むタグ、又は、前記メモリ内のアドレスに基づいて計算された値である、
請求項1の電子デバイス。 - 電子デバイス内のマイクロオペレーションを処理するための方法であって、
前記電子デバイスは、
プロセッサと、
複数のマイクロオペレーションキャッシュエントリを含む前記プロセッサ内のマイクロオペレーションキャッシュであって、各マイクロオペレーションキャッシュエントリは、1つ以上の命令の命令グループから復号されたマイクロオペレーションを格納するように構成されている、マイクロオペレーションキャッシュと、
複数のマイクロオペレーションフィルタテーブルエントリを含む前記プロセッサ内のマイクロオペレーションフィルタであって、各マイクロオペレーションフィルタテーブルエントリは、前記マイクロオペレーションが前記マイクロオペレーションキャッシュに格納された場合にアクセスされないと予測される命令グループの識別子を格納するように構成されている、マイクロオペレーションフィルタと、を備え、
前記方法は、
前記マイクロオペレーションフィルタが、第1の命令グループの第1の識別子を受信することと、
マイクロオペレーションフィルタテーブルエントリが前記第1の識別子と一致する識別子を含む場合に、前記マイクロオペレーションフィルタが、前記第1の命令グループからの前記マイクロオペレーションのコピーが前記マイクロオペレーションキャッシュに格納されるのを防止することと、を含む、
方法。 - 前記方法は、
前記マイクロオペレーションフィルタが、第2の命令グループの第2の識別子を受信することと、
前記マイクロオペレーションフィルタテーブルエントリが、前記第2の識別子と一致する識別子を含まない場合に、前記マイクロオペレーションフィルタが、前記第2の命令グループからのマイクロオペレーションを前記マイクロオペレーションキャッシュにキャッシュすることと、を含む、
請求項11の方法。 - 前記プロセッサは、複数の追い出し履歴テーブルエントリを含む追い出し履歴テーブルを含み、各追い出し履歴テーブルエントリは、前記マイクロオペレーションが前記マイクロオペレーションキャッシュに格納された後にアクセスされなかった命令グループの識別子を格納するように構成されており、
前記方法は、
所定の命令グループからの所定のマイクロオペレーションがマイクロオペレーションキャッシュエントリから追い出されると、前記マイクロオペレーションフィルタが、前記所定のマイクロオペレーションが前記マイクロオペレーションキャッシュに格納されている間にアクセスされなかったと判定することと、
前記マイクロオペレーションフィルタが、前記所定の命令グループの識別子を有する追い出し履歴テーブルエントリと、前記所定の命令グループの識別子を格納する追い出し履歴テーブルエントリの信頼カウンタと、のうち少なくとも1つを更新することと、
前記所定の命令グループの識別子を格納する前記追い出し履歴テーブルエントリの前記信頼カウンタが信頼カウンタ閾値を超えると、前記マイクロオペレーションフィルタが、前記所定の命令グループの前記識別子を、利用可能なマイクロオペレーションフィルタテーブルエントリに格納することと、を含む、
請求項11の方法。 - 前記所定の命令グループの識別子を有する前記追い出し履歴テーブルエントリと、前記所定の命令グループの識別子を格納する前記追い出し履歴テーブルエントリの前記信頼カウンタと、のうち少なくとも1つを更新することは、
前記追い出し履歴テーブルが前記所定の命令グループの識別子を有する追い出し履歴テーブルエントリを未だ含まない場合に、
前記マイクロオペレーションフィルタが、前記所定の命令グループの識別子を用いて利用可能な追い出し履歴テーブルエントリを更新することと、
前記マイクロオペレーションフィルタが、前記所定の命令グループの識別子を格納する前記追い出し履歴テーブルエントリの信頼カウンタを初期値に設定することと、
前記追い出し履歴テーブルが前記所定の命令グループの識別子を有する追い出し履歴テーブルエントリを既に含む場合に、
前記マイクロオペレーションフィルタが、前記所定の命令グループの識別子を格納する前記追い出し履歴テーブルエントリの信頼カウンタを増加させることと、を含む、
請求項13の方法。 - 各マイクロオペレーションキャッシュエントリはアクセスインジケータを含み、
前記方法は、
前記マイクロオペレーションキャッシュが、所定のマイクロオペレーションキャッシュエントリに格納されたマイクロオペレーションがアクセスされると、アクセスインジケータを前記所定のマイクロオペレーションキャッシュエントリに設定することと、
前記マイクロオペレーションキャッシュが、前記マイクロオペレーションが前記所定のマイクロオペレーションキャッシュエントリに格納されている間にアクセスされたかどうかを判定するために、それぞれのアクセスインジケータを使用することと、を含む、
請求項13の方法。 - 利用可能な追い出し履歴テーブルエントリを更新することは、前記所定の命令グループの識別子に基づいて、対応するセット内で追い出し履歴テーブルエントリを見つけ、場合によっては、前記追い出し履歴テーブルエントリから既存の識別子を追い出すことを含む、
請求項13の方法。 - 各マイクロオペレーションフィルタテーブルエントリはローカルカウンタを含み、
前記方法は、
前記マイクロオペレーションフィルタが、命令グループの識別子が所定のマイクロオペレーションフィルタテーブルエントリに格納されると、前記ローカルカウンタをローカルカウンタ値に設定することと、
前記命令グループからのマイクロオペレーションが、前記所定のマイクロオペレーションフィルタテーブルエントリ内の識別子に基づいて前記マイクロオペレーションキャッシュに格納されるのを防止する毎に、前記マイクロオペレーションフィルタが、前記ローカルカウンタを減少させることと、
前記ローカルカウンタがゼロに達した場合に、前記マイクロオペレーションフィルタが、前記所定のマイクロオペレーションフィルタテーブルエントリを無効にすることと、を含む、
請求項13の方法。 - 前記マイクロオペレーションフィルタはグローバルカウンタを含み、
前記方法は、
命令グループの識別子を前記マイクロオペレーションフィルタテーブルエントリに格納する前に全てのマイクロオペレーションフィルタテーブルエントリが無効である間に、前記マイクロオペレーションフィルタが、前記グローバルカウンタをゼロに設定することと、
任意の命令グループからのマイクロオペレーションが、それぞれのマイクロオペレーションフィルタテーブルエントリ内の識別子に基づいて前記マイクロオペレーションキャッシュに格納されるのを防止する毎に、前記マイクロオペレーションフィルタが、前記グローバルカウンタを増加させることと、
前記グローバルカウンタの値がリセット閾値を超えると、前記マイクロオペレーションフィルタが、全てのマイクロオペレーションフィルタテーブルエントリを無効にすることと、を含む、
請求項13の方法。 - 前記プロセッサは複数のスレッドコンテキストを備え、
各スレッドコンテキストは1つの実行スレッドのサポートを提供し、
前記方法は、
各スレッドコンテキストが、前記マイクロオペレーションフィルタテーブルエントリの個別の部分及び前記追い出し履歴テーブルエントリの個別の部分のうち少なくとも1つを使用すること、又は、
各スレッドコンテキストが、個別のスレッド固有マイクロオペレーションフィルタ及び個別のスレッド固有追い出し履歴テーブルのうち少なくとも1つを使用すること、を含む、
請求項13の方法。 - 前記電子デバイスは、命令グループが格納されるメモリを備え、
命令グループの識別子は、前記命令グループに関連付けられたメモリ内のアドレスの一部若しくは全部を含むタグ、又は、前記メモリ内のアドレスに基づいて計算された値である、
請求項11の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/856,832 | 2020-04-23 | ||
US16/856,832 US11726783B2 (en) | 2020-04-23 | 2020-04-23 | Filtering micro-operations for a micro-operation cache in a processor |
PCT/US2021/028178 WO2021216564A1 (en) | 2020-04-23 | 2021-04-20 | Filtering micro-operations for a micro-operation cache in a processor |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023524642A true JP2023524642A (ja) | 2023-06-13 |
Family
ID=78222308
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022563093A Pending JP2023524642A (ja) | 2020-04-23 | 2021-04-20 | プロセッサ内のマイクロオペレーションキャッシュのためのマイクロオペレーションのフィルタリング |
Country Status (6)
Country | Link |
---|---|
US (1) | US11726783B2 (ja) |
EP (1) | EP4139792A4 (ja) |
JP (1) | JP2023524642A (ja) |
KR (1) | KR20230002470A (ja) |
CN (1) | CN115427932A (ja) |
WO (1) | WO2021216564A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230305992A1 (en) * | 2022-03-25 | 2023-09-28 | Nokia Solutions And Networks Oy | Processor using target instructions |
US20230367600A1 (en) * | 2022-05-12 | 2023-11-16 | Nokia Solutions And Networks Oy | Affinity groups in a micro-operations cache of a processor |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149883B1 (en) * | 2000-03-30 | 2006-12-12 | Intel Corporation | Method and apparatus selectively to advance a write pointer for a queue based on the indicated validity or invalidity of an instruction stored within the queue |
US7260684B2 (en) * | 2001-01-16 | 2007-08-21 | Intel Corporation | Trace cache filtering |
US6950903B2 (en) * | 2001-06-28 | 2005-09-27 | Intel Corporation | Power reduction for processor front-end by caching decoded instructions |
US7062607B2 (en) * | 2001-09-24 | 2006-06-13 | Intel Corporation | Filtering basic instruction segments in a processor front-end for power conservation |
US20030208665A1 (en) * | 2002-05-01 | 2003-11-06 | Jih-Kwon Peir | Reducing data speculation penalty with early cache hit/miss prediction |
US7694110B1 (en) * | 2003-07-08 | 2010-04-06 | Globalfoundries Inc. | System and method of implementing microcode operations as subroutines |
US8706979B2 (en) * | 2007-12-30 | 2014-04-22 | Intel Corporation | Code reuse and locality hinting |
US8181005B2 (en) * | 2008-09-05 | 2012-05-15 | Advanced Micro Devices, Inc. | Hybrid branch prediction device with sparse and dense prediction caches |
US8612952B2 (en) * | 2010-04-07 | 2013-12-17 | International Business Machines Corporation | Performance optimization based on data accesses during critical sections |
US8819342B2 (en) * | 2012-09-26 | 2014-08-26 | Qualcomm Incorporated | Methods and apparatus for managing page crossing instructions with different cacheability |
GB2519103B (en) * | 2013-10-09 | 2020-05-06 | Advanced Risc Mach Ltd | Decoding a complex program instruction corresponding to multiple micro-operations |
US9817466B2 (en) * | 2014-04-17 | 2017-11-14 | Arm Limited | Power saving by reusing results of identical micro-operations |
US10223278B2 (en) * | 2016-04-08 | 2019-03-05 | Qualcomm Incorporated | Selective bypassing of allocation in a cache |
US11138121B2 (en) * | 2017-11-20 | 2021-10-05 | Samsung Electronics Co., Ltd. | Systems and methods for efficient cacheline handling based on predictions |
-
2020
- 2020-04-23 US US16/856,832 patent/US11726783B2/en active Active
-
2021
- 2021-04-20 JP JP2022563093A patent/JP2023524642A/ja active Pending
- 2021-04-20 WO PCT/US2021/028178 patent/WO2021216564A1/en unknown
- 2021-04-20 CN CN202180030055.5A patent/CN115427932A/zh active Pending
- 2021-04-20 KR KR1020227036808A patent/KR20230002470A/ko active Search and Examination
- 2021-04-20 EP EP21792494.3A patent/EP4139792A4/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4139792A1 (en) | 2023-03-01 |
CN115427932A (zh) | 2022-12-02 |
KR20230002470A (ko) | 2023-01-05 |
US20210334098A1 (en) | 2021-10-28 |
US11726783B2 (en) | 2023-08-15 |
EP4139792A4 (en) | 2024-04-24 |
WO2021216564A1 (en) | 2021-10-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5615927B2 (ja) | データストリームのためのストアアウェアプリフェッチ | |
KR20180124712A (ko) | 공간적 메모리 스트리밍 신뢰 메커니즘 | |
JP7397858B2 (ja) | フェッチグループのシーケンスのための分岐予測ユニットへのアクセスの制御 | |
US10831675B2 (en) | Adaptive tablewalk translation storage buffer predictor | |
US10853075B2 (en) | Controlling accesses to a branch prediction unit for sequences of fetch groups | |
US20160055083A1 (en) | Processors and methods for cache sparing stores | |
US10209991B2 (en) | Instruction set and micro-architecture supporting asynchronous memory access | |
JP2023524642A (ja) | プロセッサ内のマイクロオペレーションキャッシュのためのマイクロオペレーションのフィルタリング | |
US10719441B1 (en) | Using predictions of outcomes of cache memory access requests for controlling whether a request generator sends memory access requests to a memory in parallel with cache memory access requests | |
US9223714B2 (en) | Instruction boundary prediction for variable length instruction set | |
US10013352B2 (en) | Partner-aware virtual microsectoring for sectored cache architectures | |
US20220261350A1 (en) | Promoting Prefetched Data from a Cache Memory to Registers in a Processor | |
US11379372B1 (en) | Managing prefetch lookahead distance based on memory access latency | |
JP2023550231A (ja) | 局所性を欠くデータを対象とするメモリ要求のプリフェッチ無効化 | |
JP2023508869A (ja) | フェッチグループのシーケンスについての分岐予測ユニットへのアクセスの制御 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240401 |