JP2020510255A - キャッシュ・ミス・スレッド・バランシング - Google Patents
キャッシュ・ミス・スレッド・バランシング Download PDFInfo
- Publication number
- JP2020510255A JP2020510255A JP2019547090A JP2019547090A JP2020510255A JP 2020510255 A JP2020510255 A JP 2020510255A JP 2019547090 A JP2019547090 A JP 2019547090A JP 2019547090 A JP2019547090 A JP 2019547090A JP 2020510255 A JP2020510255 A JP 2020510255A
- Authority
- JP
- Japan
- Prior art keywords
- thread
- group
- cache miss
- cache
- ntc
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 54
- 238000012545 processing Methods 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 24
- 238000011010 flushing procedure Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 14
- 230000000903 blocking effect Effects 0.000 claims 1
- 238000001514 detection method Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 abstract description 26
- 230000015654 memory Effects 0.000 description 38
- 239000000872 buffer Substances 0.000 description 21
- 238000004891 communication Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 14
- 230000002085 persistent effect Effects 0.000 description 13
- 230000003287 optical effect Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 239000000835 fiber Substances 0.000 description 4
- 239000004744 fabric Substances 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000009738 saturating Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000032258 transport Effects 0.000 description 1
Classifications
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0859—Overlapped cache accessing, e.g. pipeline with reload from main memory
-
- 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/0875—Addressing 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
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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, look ahead
- G06F9/3824—Operand accessing
-
- 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, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4818—Priority circuits therefor
-
- 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
-
- 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/60—Details of cache memory
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
Claims (28)
- キャッシュ・ミス・スレッドをバランシングする方法であって、
前記キャッシュ・ミス・スレッドのキャッシュ・ミスを検出することと、
前記検出されたキャッシュ・ミスが発生した第1のキャッシュ階層レベルを決定することと、
前記キャッシュ・ミス・スレッドにおける次完了(Next To Complete(NTC))グループおよび前記キャッシュ・ミス・スレッドにおける複数の追加グループ(X)を決定することであって、前記複数の追加グループ(X)は、前記検出されたキャッシュ・ミスに基づいて動的に構成される、前記決定することと、
前記キャッシュ・ミス・スレッドにおける任意のグループが、前記決定されたNTCグループおよび前記複数の追加グループ(X)よりも若いかどうかを決定し、前記キャッシュ・ミス・スレッドからすべての前記決定されたより若いグループをフラッシュすることと、
を含む、キャッシュ・ミス・スレッドをバランシングする方法。 - 前記複数の追加グループ(X)はデータ待ち時間に基づく、請求項1に記載の方法。
- 前記データ待ち時間は、前記検出されたキャッシュ・ミスが発生した前記第1のキャッシュ階層レベルに基づく、請求項2に記載の方法。
- 前記第1のキャッシュ階層レベルよりも高い第2のキャッシュ階層レベルを識別することと、
前記検出されたキャッシュ・ミスが前記第2のキャッシュ階層レベルからであることを決定することと、
前記第2のキャッシュ階層レベルに基づいて、前記NTCグループおよび前記複数の追加グループのサブセットを決定することと、
NTCグループおよび前記複数の追加グループの前記サブセットより若い、前記キャッシュ・ミス・スレッド内の少なくとも1つの追加のフラッシュされたグループをフラッシュすることと、
をさらに含む、請求項1に記載の方法。 - 前記フラッシュは、有効フラッシュ・ポイントを検出した後に発生する、請求項1に記載の方法。
- 前記より若いグループを決定する前に、前記有効フラッシュ・ポイントを検出することは、
前記NTCグループおよび前記複数の追加グループ(X)が有効フラッシュ・ポイントを構成するかどうかを決定することと、
前記NTCグループおよび前記複数の追加グループ(X)が無効フラッシュ・ポイントを定義する旨の決定に応答して、前記複数の追加グループ(X)を定義するより大きな値を探索することと、
を含む、請求項5に記載の方法。 - キャッシュ・ミス・スレッドを検出することは、保留中のキャッシュ・ミスを経験している第1のスレッドの第1のグループを検出することを含み、前記キャッシュ・ミス・スレッド内の次完了(Next To Complete(NTC))グループおよび複数の追加グループ(X)を決定することは、前記第1のスレッド内の次完了(Next To Complete(NTC))グループおよび前記第1のスレッド内の複数の追加グループ(X)を決定することを含み、前記キャッシュ・ミス・スレッドからすべての決定されたより若いグループをフラッシュすることは、少なくとも1つの空のグローバル完了テーブルのエントリ・フィールドを提供するように、前記第1のスレッド内の前記NTCグループおよび前記第1のスレッド内の複数の追加グループ(X)の後にディスパッチされる、前記第1のスレッドの少なくとも1つのグループを、前記グローバル完了テーブルからフラッシュすることを含む、グローバル完了テーブル上でキャッシュ・ミス・スレッド・バランスを実行するように動作可能な方法であって、前記方法は、前記少なくとも1つの空のグローバル完了テーブルのエントリ・フィールド内に、前記第1のスレッドとは異なる第2のスレッドの新規グループを記憶することをさらに含む、請求項1に記載の方法。
- 前記第2のスレッドの前記新規グループは、前記第1のスレッドの前記第1のグループが前記保留中のキャッシュ・ミスを経験している間にディスパッチされる、請求項7に記載の方法。
- 前記グローバル完了テーブル内に列挙された前記新規グループは、前記第1のスレッドの前記第1のグループが前記保留中のキャッシュ・ミスを経験している間に実行を完了する、請求項8に記載の方法。
- 前記第1のグループの新規グループは、前記第1のスレッドの前記第1のグループが前記保留中のキャッシュ・ミスを経験している間にディスパッチからブロックされる、請求項9に記載の方法。
- 前記NTCグループに関連付けられた前記複数の追加グループ(X)は、前記保留中のキャッシュ・ミスが存在するキャッシュ階層レベルに従って変動するデータ待ち時間に基づいており、前記データ待ち時間は、前記キャッシュ階層レベルからデータを戻すためにかかる時間量として定義される、請求項10に記載の方法。
- キャッシュ・ミス・スレッド・バランシングを実行するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、具体化されたプログラム命令を有するコンピュータ可読記憶媒体を含み、前記プログラム命令は、
前記キャッシュ・ミス・スレッドのキャッシュ・ミスを検出することと、
前記検出されたキャッシュ・ミスが発生した第1のキャッシュ階層レベルを決定することと、
前記キャッシュ・ミス・スレッドにおける次完了(Next To Complete(NTC))グループおよび前記キャッシュ・ミス・スレッドにおける複数の追加グループ(X)を決定することであって、前記複数の追加グループ(X)は、前記検出されたキャッシュ・ミスに基づいて動的に構成される、前記決定することと、
前記スレッドにおける任意のグループが、前記決定されたNTCグループおよび前記複数の追加グループ(X)よりも若いかどうかを決定し、前記キャッシュ・ミス・スレッドからすべての前記決定されたより若いグループをフラッシュすることと、
を実行するように、データベース処理システムを制御するために、電子コンピュータ・プロセッサによって実行可能である、
コンピュータ・プログラム製品。 - 前記複数の追加グループ(X)はデータ待ち時間に基づく、請求項12に記載のコンピュータ・プログラム製品。
- 前記データ待ち時間は、前記検出されたキャッシュ・ミスが発生した前記キャッシュ階層レベルに基づく、請求項13に記載のコンピュータ・プログラム製品。
- 前記第1のキャッシュ階層レベルよりも高い第2のキャッシュ階層レベルを識別することと、
前記検出されたキャッシュ・ミスが前記第2のキャッシュ階層レベルからであることを決定することと、
前記第2のキャッシュ階層レベルに基づいて、前記NTCグループおよび前記複数の追加グループのサブセットを決定することと、
NTCグループおよび前記複数の追加グループの前記サブセットより若い、前記キャッシュ・ミス・スレッド内の少なくとも1つの追加のフラッシュされたグループをフラッシュすることと、
をさらに含む、請求項12に記載のコンピュータ・プログラム製品。 - 前記フラッシュは、有効フラッシュ・ポイントを検出した後に発生し、前記より若いグループを決定する前に、前記有効フラッシュ・ポイントを検出することは、
前記NTCグループおよび前記複数の追加グループ(X)が有効フラッシュ・ポイントを構成するかどうかを決定することと、
前記NTCグループおよび前記複数の追加グループ(X)が無効フラッシュ・ポイントを定義する旨の決定に応答して、前記複数の追加グループ(X)を定義するより大きな値を探索することと、
を含む、請求項12に記載のコンピュータ・プログラム製品。 - 前記無効フラッシュ・ポイントを決定することに応答して、有効フラッシュ・ポイントが見つかるまで、前記NTCグループおよび前記複数の追加グループ(X)を増分することと、
前記増分されたNTCグループおよび複数の追加グループ(X)が有効フラッシュ・ポイントであることを検出することに応答して、前記増分されたNTCグループおよび複数の追加グループ(X)に基づいて、前記キャッシュ・ミスに含まれる前記キャッシュ・ミス・スレッドからすべての前記決定されたより若いグループをフラッシュすることと、
をさらに含む、請求項16に記載のコンピュータ・プログラム製品。 - キャッシュ・ミス・スレッドを検出する第1の回路と、
前記検出されたキャッシュ・ミスが発生した第1のキャッシュ階層レベルを決定する、第2の回路と、
前記スレッドにおける次完了(Next To Complete(NTC))グループおよび前記スレッドにおける複数の追加グループ(X)を決定する、第3の回路であって、前記複数の追加グループ(X)は、前記検出されたキャッシュ・ミスに基づいて動的に構成される、第3の回路と、
前記スレッドにおける任意のグループが、前記決定されたNTCグループおよび前記複数の追加グループ(X)よりも若いかどうかを決定し、前記キャッシュ・ミス・スレッドからすべての前記決定されたより若いグループをフラッシュする、第4の回路と、
を含む、共有ディスパッチ・パイプラインを有する同時マルチスレッド(SMT)プロセッサ。 - 前記複数の追加グループ(X)のサイズはデータ待ち時間に基づく、請求項18に記載のSMTプロセッサ。
- 前記データ待ち時間は、前記検出されたキャッシュ・ミスが発生した前記第1のキャッシュ階層レベルに基づく、請求項19に記載のSMTプロセッサ。
- 前記第2の回路は、前記第1のキャッシュ階層レベルよりも高い第2のキャッシュ階層レベルを識別し、前記SMTプロセッサは、
前記検出されたキャッシュ・ミスが前記第2のキャッシュ階層レベルからであることを決定する、第5の回路と、
前記第2のキャッシュ階層レベルに基づいて、前記NTCグループおよび前記複数の追加グループのサブセットを識別する、第6の回路と、
をさらに含み、
前記第4の回路は、前記NTCグループおよび前記複数の追加グループの前記サブセットより若い、前記キャッシュ・ミス・スレッド内の少なくとも1つの追加のフラッシュされたグループをフラッシュし、
前記第2のキャッシュ階層レベルは、前記NTCグループが、前記第2のキャッシュ階層レベルからデータが戻されることを示す、より長い時間待機している旨の決定に基づく、
請求項20に記載のSMTプロセッサ。 - 前記第4の回路は、前記NTCグループおよび前記複数の追加グループ(X)が有効フラッシュ・ポイントを構成するかどうかを決定する、請求項18に記載のSMTプロセッサ。
- 前記NTCグループおよび前記少なくとも1つの追加グループ(X)の妥当性に基づいて、前記第4の回路は、前記有効フラッシュ・ポイントの検出に応答して、前記NTCグループおよび前記複数の追加グループ(X)に基づいて前記キャッシュ・ミスに含められる機能停止またはリソース消費型あるいはその両方のターゲット・スレッドをフラッシュするか、または、前記NTCグループおよび前記複数の追加グループ(X)が無効フラッシュ・ポイントである場合、前記フラッシュをブロックする、請求項22に記載のSMTプロセッサ。
- グローバル完了テーブル上でキャッシュ・ミス・スレッド・バランスを実行する方法であって、
保留中のキャッシュ・ミスを経験している第1のスレッドの第1のグループを検出することと、
前記第1のスレッド内の次完了(Next To Complete(NTC))グループおよび前記第1のスレッド内の複数の追加グループ(X)を決定することと、
少なくとも1つの空のグローバル完了テーブルのエントリ・フィールドを提供するように、前記第1のスレッド内の前記NTCグループおよび前記第1のスレッド内の複数の追加グループ(X)の後にディスパッチされる、前記第1のスレッドの少なくとも1つのグループを、前記グローバル完了テーブルからフラッシュすることと、
前記少なくとも1つの空のグローバル完了テーブルのエントリ・フィールド内に、前記第1のスレッドとは異なる第2のスレッドの新規グループを記憶することと、
を含む、キャッシュ・ミス・スレッド・バランスを実行する方法。 - 前記第2のスレッドの前記新規グループは、前記第1のスレッドの前記第1のグループが前記保留中のキャッシュ・ミスを経験している間にディスパッチされる、請求項24に記載の方法。
- 前記グローバル完了テーブル内に列挙された前記新規グループは、前記第1のスレッドの前記第1のグループが前記保留中のキャッシュ・ミスを経験している間に実行を完了する、請求項25に記載の方法。
- 前記第1のグループの新規グループは、前記第1のスレッドの前記第1のグループが前記保留中のキャッシュ・ミスを経験している間にディスパッチからブロックされる、請求項26に記載の方法。
- 前記NTCグループに関連付けられた前記複数の追加グループ(X)は、前記保留中のキャッシュ・ミスが存在するキャッシュ階層レベルに従って変動するデータ待ち時間に基づいており、前記データ待ち時間は、前記キャッシュ階層レベルからデータを戻すためにかかる時間量として定義される、請求項27に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/451,858 | 2017-03-07 | ||
US15/451,858 US10353817B2 (en) | 2017-03-07 | 2017-03-07 | Cache miss thread balancing |
PCT/IB2018/051213 WO2018163014A1 (en) | 2017-03-07 | 2018-02-27 | Cache miss thread balancing |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020510255A true JP2020510255A (ja) | 2020-04-02 |
JP7046087B2 JP7046087B2 (ja) | 2022-04-01 |
Family
ID=63445371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019547090A Active JP7046087B2 (ja) | 2017-03-07 | 2018-02-27 | キャッシュ・ミス・スレッド・バランシング |
Country Status (6)
Country | Link |
---|---|
US (2) | US10353817B2 (ja) |
JP (1) | JP7046087B2 (ja) |
CN (1) | CN110402434B (ja) |
DE (1) | DE112018001206T5 (ja) |
GB (1) | GB2574171B (ja) |
WO (1) | WO2018163014A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10353817B2 (en) * | 2017-03-07 | 2019-07-16 | International Business Machines Corporation | Cache miss thread balancing |
US11520591B2 (en) * | 2020-03-27 | 2022-12-06 | International Business Machines Corporation | Flushing of instructions based upon a finish ratio and/or moving a flush point in a processor |
US20240111684A1 (en) * | 2022-09-30 | 2024-04-04 | Advanced Micro Devices, Inc. | Multi-level starvation widget |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090249349A1 (en) * | 2008-03-31 | 2009-10-01 | International Business Machines Corporation | Power-Efficient Thread Priority Enablement |
JP2010026583A (ja) * | 2008-07-15 | 2010-02-04 | Hiroshima Ichi | プロセッサ |
US20120137077A1 (en) * | 2010-11-30 | 2012-05-31 | Shah Manish K | Miss buffer for a multi-threaded processor |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06180670A (ja) * | 1992-12-14 | 1994-06-28 | Hitachi Ltd | キャッシュ記憶装置 |
US5566324A (en) * | 1992-12-24 | 1996-10-15 | Ncr Corporation | Computer apparatus including a main memory prefetch cache and method of operation thereof |
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US20030126416A1 (en) * | 2001-12-31 | 2003-07-03 | Marr Deborah T. | Suspending execution of a thread in a multi-threaded processor |
US7363474B2 (en) * | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
US6912623B2 (en) * | 2002-06-04 | 2005-06-28 | Sandbridge Technologies, Inc. | Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy |
US7469407B2 (en) | 2003-04-24 | 2008-12-23 | International Business Machines Corporation | Method for resource balancing using dispatch flush in a simultaneous multithread processor |
US7853777B2 (en) | 2005-02-04 | 2010-12-14 | Mips Technologies, Inc. | Instruction/skid buffers in a multithreading microprocessor that store dispatched instructions to avoid re-fetching flushed instructions |
US20070113055A1 (en) * | 2005-11-15 | 2007-05-17 | Dale Jason N | Apparatus and method for improving single thread performance through speculative processing |
WO2008029450A1 (fr) * | 2006-09-05 | 2008-03-13 | Fujitsu Limited | Dispositif de traitement d'informations comprenant un mécanisme de correction d'erreur de prédiction d'embranchement |
US10554505B2 (en) | 2012-09-28 | 2020-02-04 | Intel Corporation | Managing data center resources to achieve a quality of service |
US9021207B2 (en) | 2012-12-20 | 2015-04-28 | Advanced Micro Devices, Inc. | Management of cache size |
US9823931B2 (en) * | 2012-12-28 | 2017-11-21 | Nvidia Corporation | Queued instruction re-dispatch after runahead |
US10073784B2 (en) | 2014-06-27 | 2018-09-11 | International Business Machines Corporation | Memory performance when speculation control is enabled, and instruction therefor |
US10007525B2 (en) * | 2014-10-24 | 2018-06-26 | International Business Machines Corporation | Freelist based global completion table having both thread-specific and global completion table identifiers |
GB2538985B (en) | 2015-06-02 | 2017-09-06 | Advanced Risc Mach Ltd | Flushing control within a multi-threaded processor |
US10353817B2 (en) * | 2017-03-07 | 2019-07-16 | International Business Machines Corporation | Cache miss thread balancing |
-
2017
- 2017-03-07 US US15/451,858 patent/US10353817B2/en active Active
-
2018
- 2018-02-27 JP JP2019547090A patent/JP7046087B2/ja active Active
- 2018-02-27 DE DE112018001206.9T patent/DE112018001206T5/de active Pending
- 2018-02-27 GB GB1914312.2A patent/GB2574171B/en active Active
- 2018-02-27 CN CN201880015792.6A patent/CN110402434B/zh active Active
- 2018-02-27 WO PCT/IB2018/051213 patent/WO2018163014A1/en active Application Filing
-
2019
- 2019-04-02 US US16/372,997 patent/US10963380B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090249349A1 (en) * | 2008-03-31 | 2009-10-01 | International Business Machines Corporation | Power-Efficient Thread Priority Enablement |
JP2010026583A (ja) * | 2008-07-15 | 2010-02-04 | Hiroshima Ichi | プロセッサ |
US20120137077A1 (en) * | 2010-11-30 | 2012-05-31 | Shah Manish K | Miss buffer for a multi-threaded processor |
Also Published As
Publication number | Publication date |
---|---|
DE112018001206T5 (de) | 2019-12-05 |
GB2574171A8 (en) | 2019-12-04 |
GB201914312D0 (en) | 2019-11-20 |
GB2574171B (en) | 2020-04-22 |
GB2574171A (en) | 2019-11-27 |
US20180260326A1 (en) | 2018-09-13 |
US20190227932A1 (en) | 2019-07-25 |
JP7046087B2 (ja) | 2022-04-01 |
CN110402434B (zh) | 2023-02-24 |
US10963380B2 (en) | 2021-03-30 |
WO2018163014A1 (en) | 2018-09-13 |
CN110402434A (zh) | 2019-11-01 |
US10353817B2 (en) | 2019-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5894120B2 (ja) | ゼロサイクルロード | |
US7958317B2 (en) | Cache directed sequential prefetch | |
US8862861B2 (en) | Suppressing branch prediction information update by branch instructions in incorrect speculative execution path | |
US9690625B2 (en) | System and method for out-of-order resource allocation and deallocation in a threaded machine | |
US6907520B2 (en) | Threshold-based load address prediction and new thread identification in a multithreaded microprocessor | |
KR101804908B1 (ko) | 캐시 점유도 결정 및 명령어 스케줄링을 위한 방법 및 장치 | |
US8335912B2 (en) | Logical map table for detecting dependency conditions between instructions having varying width operand values | |
US20100274961A1 (en) | Physically-indexed logical map table | |
US8261276B2 (en) | Power-efficient thread priority enablement | |
EP1296229A2 (en) | Scoreboarding mechanism in a pipeline that includes replays and redirects | |
US20110276760A1 (en) | Non-committing store instructions | |
JPH096633A (ja) | データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム | |
US20180349144A1 (en) | Method and apparatus for branch prediction utilizing primary and secondary branch predictors | |
US20080072024A1 (en) | Predicting instruction branches with bimodal, little global, big global, and loop (BgGL) branch predictors | |
US10963380B2 (en) | Cache miss thread balancing | |
US8635408B2 (en) | Controlling power of a cache based on predicting the instruction cache way for high power applications | |
US10545765B2 (en) | Multi-level history buffer for transaction memory in a microprocessor | |
US20220035633A1 (en) | Method and Apparatus for Back End Gather/Scatter Memory Coalescing | |
KR20010077997A (ko) | 단일 사이클 파이프라인 기능 정지를 발생하기 위한파이프라인 프로세서 시스템 및 방법 | |
US9552169B2 (en) | Apparatus and method for efficient memory renaming prediction using virtual registers | |
US9304767B2 (en) | Single cycle data movement between general purpose and floating-point registers | |
US11693780B2 (en) | System, method, and apparatus for enhanced pointer identification and prefetching | |
US20230099989A1 (en) | Scalable toggle point control circuitry for a clustered decode pipeline | |
US20200019405A1 (en) | Multiple Level History Buffer for Transaction Memory Support |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200826 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210810 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210913 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211209 |
|
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: 20220315 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220322 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7046087 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |