JP2020510255A - キャッシュ・ミス・スレッド・バランシング - Google Patents

キャッシュ・ミス・スレッド・バランシング Download PDF

Info

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
Application number
JP2019547090A
Other languages
English (en)
Other versions
JP7046087B2 (ja
Inventor
アレクサンダー、グレゴリー、ウィリアム
ソン、ソミン
バーリック、ブライアン
サポリート、アンソニー
ジャコビ、クリスチャン
ツァイ、アーロン
フォックス、トーマス、ウィンターズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2020510255A publication Critical patent/JP2020510255A/ja
Application granted granted Critical
Publication of JP7046087B2 publication Critical patent/JP7046087B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

【課題】キャッシュ・ミス・スレッドをバランシングする技術を提供する。【解決手段】共有ディスパッチ・パイプラインを有する同時マルチスレッド(SMT)プロセッサは、キャッシュ・ミス・スレッドを検出する第1の回路を含む。第2の回路は、検出されたキャッシュ・ミスが発生した第1のキャッシュ階層レベルを決定する。第3の回路は、スレッドにおける次完了(Next To Complete(NTC))グループおよびスレッドにおける複数の追加グループ(X)を決定する。追加グループ(X)は、検出されたキャッシュ・ミスに基づいて動的に構成される。第4の回路は、スレッドにおける任意のグループが、決定されたNTCグループおよび複数の追加グループ(X)よりも若いかどうかを決定し、キャッシュ・ミス・スレッドからすべての決定されたより若いグループをフラッシュする。【選択図】図8

Description

本発明は、一般に改善したデータ処理システムに関し、より具体的に言えば、マルチスレッド・データ処理システムにおける保留中のキャッシュ・ミスのフラッシングに関する。
従来のデータ処理システムおよびマイクロプロセッサ・システムは、コンピューティング・リソースの利用率およびコンピュータ性能を改善するための同時マルチスレッド技法を組み込む。これらのデータ処理システムは、キャッシュ階層レベル(たとえば、L1、L2、L3、L4、・・・LN)においてキャッシュ・ミスを経験する、すなわち、生じる可能性がある。キャッシュ・ミスは、所与のキャッシュ・ミスに対応するスレッドに、コンピューティング・リソースの大部分を飽和状態にする可能性および過度に消費させる可能性がある。
したがって、当技術分野において、前述の問題に対処する必要がある。
非限定的な実施形態によれば、キャッシュ・ミス・スレッドをバランシングする方法は、キャッシュ・ミス・スレッドのキャッシュ・ミスを検出すること、および、検出されたキャッシュ・ミスが発生した第1のキャッシュ階層レベルを決定することを含む。方法は、キャッシュ・ミス・スレッドにおける次完了(Next To Complete(NTC))グループおよびキャッシュ・ミス・スレッドにおける複数の追加グループ(X)を決定することを、さらに含む。複数の追加グループ(X)は、検出されたキャッシュ・ミスに基づいて動的に構成される。方法は、キャッシュ・ミス・スレッドにおける任意のグループが、決定されたNTCグループおよび複数の追加グループ(X)よりも若いかどうかを決定し、キャッシュ・ミス・スレッドからすべての決定されたより若いグループをフラッシュすることを、さらに含む。
別の非限定的な実施形態によれば、コンピュータ・プログラム製品は、キャッシュ・ミス・スレッド・バランシングを実行する。コンピュータ・プログラム製品は、具体化されたプログラム命令を有するコンピュータ可読ストレージ媒体を含む。プログラム命令は、キャッシュ・ミス・スレッドにおけるキャッシュ・ミスを検出するために、および、検出されたキャッシュ・ミスが発生したキャッシュ階層レベルを決定するために、データベース処理システムを制御するように、電子コンピュータ・プロセッサによって実行可能である。電子コンピュータ・プロセッサは、キャッシュ・ミス・スレッドにおける次完了(Next To Complete(NTC))グループおよびキャッシュ・ミス・スレッドにおける複数の追加グループ(X)を決定するために、データベース処理システムをさらに制御する。複数の追加グループ(X)は、検出されたキャッシュ・ミスに基づいて動的に構成される。電子コンピュータ・プロセッサは、スレッドにおける任意のグループが、決定されたNTCグループおよび複数の追加グループ(X)よりも若いかどうかを決定し、キャッシュ・ミス・スレッドからすべての決定されたより若いグループをフラッシュするために、データベース処理システムをさらに制御する。
さらに別の非限定的な実施形態によれば、共有ディスパッチ・パイプラインを有する同時マルチスレッド(SMT)プロセッサは、キャッシュ・ミス・スレッドを検出する第1の回路を含む。第2の回路は、検出されたキャッシュ・ミスが発生した第1のキャッシュ階層レベルを決定する。第3の回路は、スレッドにおける次完了(Next To Complete(NTC))グループおよびスレッドにおける複数の追加グループ(X)を決定する。追加グループ(X)は、検出されたキャッシュ・ミスに基づいて動的に構成される。第4の回路は、スレッドにおける任意のグループが、決定されたNTCグループおよび複数の追加グループ(X)よりも若いかどうかを決定し、キャッシュ・ミス・スレッドからすべての決定されたより若いグループをフラッシュする。
さらに別の非限定的な実施形態によれば、グローバル完了(global completion)テーブル上でキャッシュ・ミス・スレッド・バランスを実行する方法は、保留中のキャッシュ・ミスを経験している、すなわち、生じている第1のスレッドの第1のグループを検出すること、ならびに、第1のスレッドにおける次完了(Next To Complete(NTC))グループおよび第1のスレッドにおける複数の追加グループ(X)を決定することを含む。方法は、少なくとも1つの空のグローバル完了テーブルのエントリ・フィールドを提供するように、第1のスレッドにおけるNTCグループおよび第1のスレッドにおける複数の追加グループ(X)の後にディスパッチされる、第1のスレッドの少なくとも1つのグループを、グローバル完了テーブルからフラッシュすることを、さらに含む。方法は、少なくとも1つの空のグローバル完了テーブルのエントリ・フィールド内に、第1のスレッドとは異なる第2のスレッドの新規グループを記憶することを、さらに含む。
追加の特徴は本発明の技術を介して実現される。他の実施形態は本明細書で詳細に説明され、請求する本発明の一部と見なされる。特徴と共に本発明をより良く理解するために、説明および図面を参照する。
次に、添付の図面を参照しながら、単なる例として本発明の実施形態を説明する。
非限定的な実施形態による、キャッシュ・ミス・バランシング・システムを実装するように構成された、データ処理システムを示すブロック図である。 非限定的な実施形態による、キャッシュ・ミス・バランシング・システムを実装可能な機能ユニットおよびレジスタを示す、マルチスレッド・プロセッサ設計を示すブロック図である。 非限定的な実施形態による、スレッド優先度を制御するための例示的なプロセッサ・パイプラインを示すブロック図である。 非限定的な実施形態に従った、スレッド・スイッチ制御レジスタ(TSCR)の読み取りおよび書き込みのための、例示的な構成要素を示すブロック図である。 非限定的な実施形態による、キャッシュ・ミス・バランシング動作を受けるグローバル完了テーブルを示す図である。 非限定的な実施形態による、キャッシュ・ミス・バランシング動作を受けるグローバル完了テーブルを示す図である。 非限定的な実施形態による、キャッシュ・ミス・バランシング動作を受けるグローバル完了テーブルを示す図である。 非限定的な実施形態による、キャッシュ・ミス・スレッド・バランシングを実行するための方法を示す流れ図である。 非限定的な実施形態による、キャッシュ・ミス・スレッド・バランシングを実行するための方法を示す流れ図である。 非限定的な実施形態による、決定されたNTC+Xが有効フラッシュ・ポイントであるかどうかを確認するための、有効フラッシュ・ポイント(VFP)サブベクトルおよび探索レンジ(SR)サブベクトルを含む、探索ベクトルを示す図である。
キャッシュ・ミス・スレッド・バランシングは、キャッシュ・ミス保留状態時にスレッドが共有リソースを使い尽くすことを防止する。これにより、コア内のスレッドのバランシングを強化し、したがって、同時マルチスレッドを伴うコアの性能全体を向上させる。同時に、キャッシュ・ミスが保留中の最も古い命令を除き、スレッド全体がフラッシュされる。たとえば、キャッシュ・ミスが保留中の次完了(Next To Complete(NTC))グループが維持され、任意のより若いグループが完全にフラッシュされる。
コンピュータ・プログラムは、順序正しく実行するように見える命令のシーケンスからなる。この順序は、時折、プログラム順と呼ばれる。たとえば、[object Y]が[object X]に対応する命令の後にプログラム順に発生する命令に対応する場合、[object Y]は[object X]よりも若い。したがって、より若いグループは、NTCグループおよびキャッシュ・ミスを経験している複数の追加グループのサブセットの後にディスパッチされるグループと呼ぶことができる。NTC+Xより若いグループを、NTC+Xに対応する命令の後にプログラム順に発生する命令に対応するグループと呼ぶこともできる。これは、このスレッド上で行われてきた作業を無駄にするのみならず、メモリからのデータの到着時に、このスレッドは1つの命令しか完了できない。最も古い命令以外のすべてをフラッシュすることは過剰であり、キャッシュ・ミスが保留中のスレッドの性能に悪影響を与える。たとえば、NTCおよびすべてのより若いグループを完全にフラッシュすることで、その後他のスレッドによる利用が可能なリソースを割り振り解除する一方で、完了には1つの命令/グループのみが使用可能である。
保留中のキャッシュ・ミスに応答してNTC+1をフラッシュする従来のシステムとは異なり、本開示の少なくとも1つの非限定的な実施形態は、スレッドについて「X」の多くの命令/グループを維持する。すなわち、NTCは、少なくとも1つの追加グループ「X」と共に決定される。しかしながら、値「X」は変動し、各「X」は、どのキャッシュ・ミスが検出されたかに基づいて構成可能である。したがって、保留中のキャッシュ・ミスのスレッドに対して以前に割り振られたリソースは、他のスレッドのためのスペースを空けるために解除される。データが戻されると、このスレッドは完了するために少なくとも「X」の命令を有することになり、完了すると、このスレッドはパイプの補充を開始することができる。
次に図1を参照すると、当業者であれば理解されるように、本発明の実施形態は、システム、方法、またはコンピュータ・プログラム製品として具体化され得る。したがって、本発明の実施形態は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または、本明細書ではすべてが概して「回路」、「モジュール」、または「システム」と呼ばれ得るソフトウェアおよびハードウェア態様を組み合わせた実施形態の形を取ることができる。さらに、本発明の実施形態は、媒体内に具体化されるコンピュータ使用可能プログラム・コードを有する表現の任意の有形媒体内に具体化されるコンピュータ・プログラム製品の形を取ることができる。
1つまたは複数のコンピュータ使用可能またはコンピュータ可読媒体の、任意の組み合わせが利用され得る。コンピュータ使用可能またはコンピュータ可読媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体の、システム、装置、デバイス、または伝搬媒体であり得るが、限定されない。コンピュータ可読媒体のより特定の例(網羅的でないリスト)は、1本または複数本のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CDROM)、光記憶デバイス、インターネットまたはイントラネットをサポートするような伝送媒体、あるいは磁気記憶デバイスを、含む。たとえばプログラムは、紙または他の媒体の光学走査を介して、電子的にキャプチャし、その後、コンパイル、解釈、または、他の方法で好適に処理し、その後、必要であればコンピュータ・メモリ内に記憶することが可能であるため、コンピュータ使用可能またはコンピュータ可読媒体は、プログラムが印刷される紙または別の好適な媒体も可能であることに留意されたい。本明細書との関連において、コンピュータ使用可能またはコンピュータ可読媒体は、命令実行システム、装置、またはデバイスによって、あるいはそれらに関連して使用するためのプログラムを、含有、記憶、通信、伝搬、または移送することが可能な、任意の媒体であり得る。コンピュータ使用可能媒体は、コンピュータ使用可能プログラム・コードが、ベースバンド内に、または搬送波の一部として具体化された、伝搬データ信号を含み得る。コンピュータ使用可能プログラム・コードは、ワイヤレス、ワイヤライン、光ファイバ・ケーブル、RFなどを含むが限定されない、任意の適切な媒体を使用して伝送され得る。
本発明の実施形態の動作を実施するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで作成され得る。プログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、あるいは、全体的にリモート・コンピュータまたはサーバ上で、実行可能である。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む、任意のタイプのネットワークを介して、ユーザのコンピュータに接続され得るか、あるいは、外部コンピュータへの接続を(たとえば、インターネット・サービス・プロバイダを使用するインターネットを介して)行うことができる。
下記で、本発明の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャートまたはブロック図あるいはその両方を参照しながら、本発明の実施形態を説明する。フローチャートまたはブロック図あるいはその両方の各ブロック、ならびに、フローチャートまたはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装可能であることを理解されよう。
これらのコンピュータ・プログラム命令は、機械を生成するために、汎用コンピュータ、特定用途向けコンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供され得、命令は、コンピュータのプロセッサまたは他のプログラム可能データ処理装置を介して実行し、フローチャートまたはブロック図あるいはその両方のブロック内に指定された機能/動作を実装するための手段を作成することになる。これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置に特定の様式で機能するように指示することが可能な、コンピュータ可読媒体にも記憶され得、コンピュータ可読媒体に記憶される命令は、フローチャートまたはブロック図あるいはその両方のブロック内に指定された機能/動作を実装する命令手段を含む製品を生成することになる。
コンピュータ・プログラム命令は、コンピュータ実装プロセスを生成するために、コンピュータまたは他のプログラム可能装置上で一連の動作ステップを実行させるように、コンピュータまたは他のプログラム可能データ処理装置上にもロードされ得、コンピュータまたは他のプログラム可能装置上で実行する命令は、フローチャートまたはブロック図あるいはその両方のブロック内に指定された機能/動作を実装するためのプロセスを提供することになる。
図1は、本発明の例示的実施形態に従ったデータ処理システムの図を示す。この例示的な例において、データ処理システム100は、プロセッサ・ユニット104、メモリ106、永続ストレージ108、通信ユニット110、入力/出力(I/O)ユニット112、およびディスプレイ114の間に通信を提供する、通信ファブリック102を含む。
プロセッサ・ユニット104は、メモリ106にロードされるソフトウェアのための命令を実行する働きをする。プロセッサ・ユニット104は、特定の実装形態に依存して、1つまたは複数のプロセッサのセットであり得るか、あるいはマルチプロセッサ・コアであり得る。さらに、プロセッサ・ユニット104は、主プロセッサが単一チップ上に2次プロセッサと共に存在する、1つまたは複数の異種プロセッサ・システムを使用して実装され得る。別の例示的な例として、プロセッサ・ユニット104は、同じタイプの複数のプロセッサを含む対称マルチプロセッサ・システムであり得る。
メモリ106および永続ストレージ108は、ストレージ・デバイスの例である。ストレージ・デバイスは、一時的または永続的のいずれかで情報を記憶することが可能な任意のハードウェアである。メモリ106は、これらの例において、たとえばランダム・アクセス・メモリ、あるいは任意の他の好適な揮発性または不揮発性のストレージ・デバイスであり得る。永続ストレージ108は、特定の実装形態に応じて様々な形を取り得る。たとえば、永続ストレージ108は、1つまたは複数の構成要素またはデバイスを含み得る。たとえば、永続ストレージ108は、ハード・ドライブ、フラッシュ・メモリ、書き換え可能光ディスク、書き換え可能磁気テープ、または上記の何らかの組み合わせであり得る。永続ストレージ108によって使用される媒体は、取り外し可能でもあり得る。たとえば、取り外し可能ハード・ドライブを永続ストレージ108に使用し得る。
これらの例において、通信ユニット110は、他のデータ処理システムまたはデバイスとの通信を提供する。これらの例において、通信ユニット110はネットワーク・インターフェース・カードである。通信ユニット110は、物理およびワイヤレスのいずれかまたは両方の通信リンクの使用を介して、通信を提供し得る。
入力/出力ユニット112は、データ処理システム100に接続され得る他のデバイスとのデータの入力および出力を可能にする。たとえば、入力/出力ユニット112は、キーボードおよびマウスを介するユーザ入力のための接続を提供し得る。さらに、入力/出力ユニット112はプリンタに出力を送信し得る。ディスプレイ114は、ユーザに情報を表示するための機構を提供する。
オペレーティング・システムのための命令およびアプリケーションまたはプログラムが、永続ストレージ108上に配置される。これらの命令は、プロセッサ・ユニット104による実行のためにメモリ106内にロードされ得る。異なる実施形態のプロセスは、メモリ106などのメモリ内に配置され得るコンピュータ実装命令を使用して、プロセッサ・ユニット104によって実行され得る。これらの命令はプログラム・コード、コンピュータ使用可能プログラム・コード、またはコンピュータ可読プログラム・コードと呼ばれ、プロセッサ・ユニット104内でプロセッサによって読み取られおよび実行され得る。異なる実施形態におけるプログラム・コードは、メモリ106または永続ストレージ108などの、異なる物理または有形のコンピュータ可読媒体上で具体化され得る。
プログラム・コード116は、選択的に取り外し可能であり、プロセッサ・ユニット104による実行のために、データ処理システム100上にロードされるかまたは転送され得る、コンピュータ可読媒体118上に、関数形式で配置される。プログラム・コード116およびコンピュータ可読媒体118は、これらの例においてコンピュータ・プログラム製品120を形成する。一例において、コンピュータ可読媒体118は、たとえば、永続ストレージ108の一部であるハード・ドライブなどの記憶デバイス上に転送するために、永続ストレージ108の一部であるドライブまたは他のデバイスに挿入または配置される、光または磁気ディスクなどの、有形の形式であり得る。有形の形式において、コンピュータ可読媒体118は、データ処理システム100に接続されるハード・ドライブ、サム・ドライブ、またはフラッシュ・メモリなどの、永続ストレージの形を取ることもできる。有形の形式のコンピュータ可読媒体118は、コンピュータ記録可能記憶媒体とも呼ばれる。いくつかの場合、コンピュータ可読媒体118は取り外し可能ではない。
代替として、プログラム・コード116は、通信ユニット110への通信リンクを介して、または入力/出力ユニット112への接続を介して、あるいはその両方を介して、コンピュータ可読媒体118からデータ処理システム100に転送され得る。通信リンクまたは接続あるいはその両方は、例示的な例において物理的またはワイヤレスであり得る。コンピュータ可読媒体は、プログラム・コードを含む通信リンクまたはワイヤレス伝送などの非有形媒体の形を取り得る。
データ処理システム100について例示される異なる構成要素は、アーキテクチャ面で異なる実施形態が実装可能な様式に限定されることを意味するものではない。異なる例示的な実施形態は、データ処理システム100について説明された構成要素に加えて、またはそれらの代わりの構成要素を含む、データ処理システムにおいて実装可能である。図1に示される他の構成要素は、図示される例示的な例とは異なる可能性がある。
一例として、データ処理システム100における記憶デバイスは、データを記憶し得る任意のハードウェア装置である。メモリ106、永続ストレージ108、およびコンピュータ可読媒体118は、有形の形式の記憶デバイスの例である。
別の例において、バス・システムは通信ファブリック102を実装するために使用可能であり、システム・バスまたは入力/出力バスなどの、1つまたは複数のバスからなり得る。もちろん、バス・システムは、バス・システムに取り付けられた異なる構成要素またはデバイス間にデータの転送を提供する、任意の好適なタイプのアーキテクチャを使用して実装可能である。追加として、通信ユニットは、モデムまたはネットワーク・アダプタなどの、データの送信および受信に使用される1つまたは複数のデバイスを含み得る。さらに、メモリは、たとえば、メモリ106または、通信ファブリック102内に存在し得るインターフェースおよびメモリ・コントローラ・ハブ内に見られるようなキャッシュであり得る。
図2は、例示的な実施形態を実装するための機能ユニットおよびレジスタを示すマルチスレッド・プロセッサ設計のブロック図である。プロセッサ210は、図1のプロセッサ・ユニット104の一例である。少なくとも1つの実施形態において、プロセッサ210は同時マルチスレッド(SMT)プロセス210である。SMTプロセッサ210は、非限定的な実施形態による、キャッシュ・ミス・スレッド・バランスを実行するための1つまたは複数の回路を含む。たとえば、第1の回路は、機能停止またはリソース消費型あるいはその両方のターゲット・スレッドを含む、キャッシュ・ミスを検出することができる。第2の回路は、キャッシュ・ミスが発生したレベルを決定することができる。第3の回路は、スレッドにおける次完了(Next To Complete(NTC))グループを決定し、検出されたキャッシュ・ミスに基づいてスレッド内に少なくとも1つの追加グループ(X)を動的に設定することができる。第4の回路は、NTCグループおよび少なくとも1つの追加グループ(X)に基づいて、キャッシュ・ミスに含まれる機能停止またはリソース消費型あるいはその両方のターゲット・スレッドをフラッシュすることができる。様々な非限定的実施形態によるキャッシュ・ミス・スレッド・バランシングを、下記でより詳細に考察する。
例示的な実施形態において、プロセッサ210は単一の集積回路スーパースカラ・マイクロプロセッサである。したがって、本明細書において下記でより詳細に考察するように、プロセッサ210は様々なユニット、レジスタ、バッファ、メモリ、および他のセクションを含み、それらはすべて、集積回路によって形成される。加えて、例示的な実施形態において、プロセッサ210は、縮小命令セット・コンピュータ(「RISC」)技法に従って動作する。図2に示されるように、システム・バス211はプロセッサ210のバス・インターフェース・ユニット(「BIU」)212に接続する。BIU 212は、プロセッサ210とシステム・バス211との間での情報の転送を制御する。
BIU 212は、プロセッサ210の命令キャッシュ214およびデータ・キャッシュ216に接続する。命令およびデータ・キャッシュ214および216は、一般に、複数レベルのキャッシュ階層、L1、L2、L3、L4、・・・などとして実装され得る。命令キャッシュ214は、命令をシーケンサ・ユニット218に出力する。命令キャッシュ214からのこうした命令に応答して、シーケンサ・ユニット218は、プロセッサ210の他の実行回路に命令を選択的に出力する。変換索引バッファ(TLB)は、プロセッサが最近アクセスしたメモリ内のページに関する情報を含む、プロセッサのメモリ内のテーブルである。TLBを使用して、ユーザ・レベル・プログラム・コードに内在するアドレス生成機構から導出される仮想アドレスを、シーケンサ・ユニット218およびロード/ストア・ユニット228によって生成された場合、所与のアプリケーション・プログラムに割り振られた実メモリ・アドレス・スペースにマッピングする、実アドレスまたは物理アドレスに変換することができる。
例示的な実施形態では、プロセッサ210の実行回路要素は、シーケンサ・ユニット218に加えて、複数の実行ユニット、すなわち、分岐ユニット220、固定小数点ユニットA(「FXUA」)222、固定小数点ユニットB(「FXUB」)224、複合固定小数点ユニット(「CFXU」)226、ロード/ストア・ユニット(「LSU」)228、および浮動小数点ユニット(「FPU」)230を含む。FXUA 222、FXUB 224、CFXU 226、およびLSU 228は、汎用アーキテクチャ・レジスタ(「GPRs」)232および固定小数点リネーム・バッファ234からそれらのソース・オペランド情報を入力する。さらに、FXUA 222およびFXUB 224は、キャリー・ビット(「CA」)レジスタ239から「キャリー・ビット」を入力する。FXUA 222、FXUB 224、CFXU 226、およびLSU 228は、それらの動作の結果(宛先オペランド情報)を、固定小数点リネーム・バッファ234内の選択されたエントリに記憶するために出力する。加えて、CFXU 226は、ソース・オペランド情報および宛先オペランド情報を、特定用途向けレジスタ処理ユニット(「SPRユニット」)237との間で入力および出力する。
FPU 230は、浮動小数点アーキテクチャ・レジスタ(「FPRs」)236および浮動小数点リネーム・バッファ238からそのソース・オペランド情報を入力する。FPU 230は、その動作の結果(宛先オペランド情報)を、浮動小数点リネーム・バッファ238内の選択されたエントリに記憶するために出力する。ロード命令に応答して、LSU 228はデータ・キャッシュ216から情報を入力し、こうした情報をリネーム・バッファ234および238のうちの選択されたものにコピーする。こうした情報がデータ・キャッシュ216に記憶されない場合、データ・キャッシュ216は、システム・バス211に接続されたシステム・メモリ260からこうした情報を(BIU 212およびシステム・バス211を介して)入力する。さらに、データ・キャッシュ216は、データ・キャッシュ216からシステム・バス211に接続されたシステム・メモリ260へ、(BIU 212およびシステム・バス211を介して)情報を出力することができる。ストア命令に応答して、LSU 228は、GPRs 232およびFPRs 236のうちの選択された1つから情報を入力し、こうした情報をデータ・キャッシュ216にコピーする。
シーケンサ・ユニット218はGPRs 232およびFPRs 236との間で情報を入力および出力する。シーケンサ・ユニット218から、分岐ユニット220は、命令とプロセッサ210の現在の状態を示す信号とを入力する。こうした命令および信号に応答して、分岐ユニット220は、プロセッサ210による実行のための命令シーケンスを記憶する好適なメモリ・アドレスを示す信号を(シーケンサ・ユニット218に)出力する。分岐ユニット220からのこうした信号に応答して、シーケンサ・ユニット218は、命令キャッシュ214から示された命令のシーケンスを命令フェッチ・ユニット240にフェッチさせる。命令のシーケンスのうちの1つまたは複数が命令キャッシュ214に記憶されない場合、命令キャッシュ214は、システム・バス211に接続されたシステム・メモリ260からこうした命令を(BIU 212およびシステム・バス211を介して)入力する。シーケンサ・ユニット218内に、命令復号ユニットおよび命令ディスパッチ・ユニット(図示せず)が埋め込まれる。命令復号ユニットは命令を復号し、復号された命令を命令ディスパッチ・ユニットに渡す。命令ディスパッチ・ユニットは、各スレッドについて命令復号ユニットからの復号された命令を選択的にグループ分けし、各スレッドについて命令のグループを出力する。
命令キャッシュ214から入力された命令に応答して、シーケンサ・ユニット218は、実行ユニット220、222、224、226、228、および230のうちの選択されたものに、命令を選択的にディスパッチする。各実行ユニットは、特定クラスの命令のうちの1つまたは複数の命令を実行する。たとえばFXUA 222およびFXUB 224は、加算、減算、ANDing、ORing、XORingなどの第1のクラスの固定小数点数学演算を、ソース・オペランド上で実行する。CFXU 226は、固定小数点乗算および除算などの第2のクラスの固定小数点演算を、ソース・オペランド上で実行する。FPU 230は、浮動小数点乗算および除算などの浮動小数点演算を、ソース・オペランド上で実行する。
固定小数点リネーム・バッファ234のうちの選択されたものに記憶される情報は、選択されたリネーム・バッファが割り振られる命令によって指定される記憶ロケーション(たとえば、GPRs 232またはキャリー・ビット(CA)レジスタ239のうちの1つ)に関連付けられる。固定小数点リネーム・バッファ234のうちの選択されたものに記憶される情報は、シーケンサ・ユニット218からの信号に応答して、GPRs 232のうちのその関連付けられたもの(またはCAレジスタ239)にコピーされる。シーケンサ・ユニット218は、情報を生成した命令の「完了」に応答して、固定小数点リネーム・バッファ234のうちの選択されたものに記憶される情報のこうしたコピーを指示する。こうしたコピーは「ライトバック」と呼ばれる。
浮動小数点リネーム・バッファ238のうちの選択されたものに情報を記憶する際に、こうした情報はFPRs 236のうちの1つに関連付けられる。浮動小数点リネーム・バッファ238のうちの選択されたものに記憶される情報は、シーケンサ・ユニット218からの信号に応答して、FPRs 236のうちのその関連付けられたものにコピーされる。シーケンサ・ユニット218は、情報を生成した命令の「完了」に応答して、浮動小数点リネーム・バッファ238のうちの選択されたものに記憶された情報のこうしたコピーを指示する。
シーケンサ・ユニット218内で、完了バッファ248は、実行ユニット内で実行されている複数命令の完了を追跡する。命令または命令のグループが、アプリケーションが指定したシーケンス順で正常に完了した旨の指示の際に、完了バッファ248は、関連付けられた汎用レジスタへのそれらの完了した命令の結果の転送を開始するために利用され得る。完了バッファ248は、プロセッサ210内での有効な(ライブ)命令の追跡を維持するエントリ・フィールドを含む、グローバル完了テーブル(GCT)を含む。
追加として、プロセッサ210は割込みユニット250を含む。割込みユニット250は命令キャッシュ214に接続する。追加として、図2には示されていないが、割込みユニット250は、シーケンサ・ユニット218を含むプロセッサ210内の他の機能ユニットに接続する。割込みユニット250は他の機能ユニットから信号を受信し、エラー処理またはトラップ・プロセスの開始などのアクションを開始する。これらの例において、割込みユニット250は、プログラムの実行の間に発生し得る割込みおよび例外を生成する。割込みユニット250はタイマー252を含む。
追加として、プロセッサ210は、図示されていない外部サービス要素に接続するJTAGポート254を含む。ラッチは、プロセッサ210のあらゆる要素を含む。JTAGポート254は、プロセッサ210の要素を含むすべてのラッチに接続する。
図3は、例示的実施形態が実装され得るスレッド優先度を制御するための、例示的プロセッサ・パイプラインのブロック図である。特に図3は、たとえば、IBMコーポレーションのpシリーズ・サーバ・システム(POWER5(TM)ベース・システムおよびそれ以降)において使用可能なものなどの、単一のスーパースカラ同時マルチスレッド(SMT)マイクロプロセッサ・コア(CPU)によって実装される、プロセッサ・パイプラインのフロントエンドを示す。スーパースカラSMTプロセッサの一例が、図2のプロセッサ210である。
プロセッサは、プロセッサ・パイプライン内にいくつかのステージを含む。命令フェッチ・ステージと呼ばれる典型的な第1のステージにおいて、プロセッサは、各ステージが1つまたは複数のパイプラインを含む、メモリまたは連想メモリ構造からの命令をフェッチする。その後、復号ステージにおいて、プロセッサは、一般に、命令によって指定される演算を実行するためのあるタイプの機能ユニット、演算のためのソース・オペランド、および演算の結果のための宛先を指定する、異なる制御ビットに、命令を復号する。ディスパッチ・ステージにおいて、プロセッサは、実行ステージを有するユニットに、または場合によっては、介在する予約ステーション、または、最終的に関連付けられた実行ステージ(さらにまた「実行ユニット」)に命令を発行する問題キューに、制御ビットごとの復号命令をディスパッチする。実行ステージは、命令によって指定される動作を処理する。命令によって指定される動作を実行することは、1つまたは複数のオペランドを受け入れること、および1つまたは複数の結果を生成することを含む。完了ステージは、同時実行から生じるプログラム順序問題に対処し、複数の同時に実行される命令は、結果を単一のレジスタ内に堆積させ得る。完了ステージは、割込み命令に続く命令から生じるリカバリ問題も扱い、結果をそれらの宛先レジスタに堆積させる。このステージは、この時点で、命令の実行の結果がレジスタなどの指定されたロケーションに再書き込みされるため、時にはライトバック・ステージとも呼ばれる。
この例示的な例において、プロセッサ・フロントエンド・パイプライン300は、複数のプログラム(スレッド)を実行させるための命令を保持する、共有命令キャッシュ(ICache)302を含む。プロセッサは、図1のメモリ106などのシステム・メモリから命令を取り出し、この命令を命令キャッシュ302内に記憶する。
フェッチ・ステージの間、命令フェッチ・ユニット(IFU)304は、ICache読み取りポート読み取り(PI to Pr 306)を介して、必要に応じて命令キャッシュ302から命令をフェッチする。命令フェッチ・ユニット304は、命令アドレスに従って命令キャッシュ302からの命令を要求し、一般に、複数のスレッドについて同時に命令キャッシュ302からの命令を要求し得る。命令フェッチ・ユニット304は、プロセッサによって実行される各スレッドにフェッチ・ステージ優先度レベルを割り当てる、スレッド選択および優先度論理308を含む。スレッド選択および優先度論理308は、図2の命令フェッチ・ユニット240内に組み込むことができる。高優先度が割り当てられたスレッドは、より多くの復号ユニット、より多くのディスパッチ・サイクル、および他のプロセッサ・リソースを受け取ることができるが、優先度の低いスレッドにはより少ないリソースが付与される。スレッドに優先度レベルが割り当てられるため、命令フェッチ・ユニット・パイプライン310は、サポートされるスレッドのための命令バッファ(IBUF)312にスレッドを(優先度順に)提供する。
復号およびディスパッチ・ステージの間、命令復号およびディスパッチ・ユニット(IDU)314は、同時スレッドについての命令を復号する。命令復号およびディスパッチ・ユニット314は、プロセッサによって実行される各スレッドに割り当てられるディスパッチ優先度レベルを制御する、関連付けられたスレッド選択および優先度論理316も有する。スレッド選択および優先度論理316は、図2のシーケンサ・ユニット218内に埋め込むことが可能であるか、または、スレッド選択および優先度論理316は、シーケンサ・ユニット218に接続されたスタンドアロン・ユニットであり得る。命令復号およびディスパッチ・ユニット314は、優先度付けされた命令を共有ディスパッチ・バッファ318に渡す。命令復号およびディスパッチ・ユニット314は、その後、必要に応じて、図3に示されたシステム内のディスパッチ・バッファ318からバックエンド実行ユニット(図示せず)に命令をディスパッチする。
図3に示されるアーキテクチャは、本発明の実施形態を単に例示および説明する目的で提供されており、いかなるアーキテクチャ上の制限も示唆することは意図されていない。当業者であれば、多くの変形形態が可能であることを理解されよう。
図4は、例示的実施形態に従った、スレッド・スイッチ制御レジスタ(TSCR)402などの、スレッド・スイッチ制御レジスタへの読み取りおよび書き込みのための例示的構成要素のブロック図である。スレッド・スイッチ制御レジスタ402は、プログラム可能ハードウェア・レジスタを含む。SMTデータ処理システムにおける各実行スレッドは、独自のスレッド・スイッチ制御レジスタを有する。スレッド・スイッチ制御レジスタ402は、複数のスレッド優先度制御設定のうちの1つに関連付けられた、複数のビット(TSCR[0]、TSCR[1]など)を含む。
マルチスレッド・プロセッサは、スレッド・スイッチ制御レジスタ402のビットに関連付けられたスレッド優先度制御設定を使用して、命令フローを制御し、様々な処理リソースをセキュアにするために実行スレッド間の競合を扱う。特に、図3のプロセッサ・パイプラインにおけるスレッド選択および優先度論理308および316は、スレッド・スイッチ制御レジスタから取得した優先度情報を使用して、実行スレッドの優先度レベルを決定および設定する。スレッド・スイッチ制御レジスタ402を構成する実際のビット数はフレキシブルであり、各ビットが何を意味するかの位置セマンティクスは、特定の実装にも依存する。
典型的なSTMデータ処理システムにおいて、ハイパーバイザ404などのソフトウェア・コントローラは、スレッド・スイッチ制御レジスタ内のビット設定を制御および更新する唯一の構成要素である。ハイパーバイザ404は、スレッド・スイッチ制御レジスタ402内にデフォルトのスレッド優先度ビット設定を提供し、ビット設定の有効化を変更することもできる。ハイパーバイザ404は、実行スレッド全体にわたってフェアネスを維持しながら、SMTプロセッサのスループット性能を最大にするようにスレッド優先度ビットを設定する。本発明の実施形態は、オンチップまたはオフチップに常駐し得るハイパーバイザ404またはハードウェア・コントローラ408を介して、スレッド・スイッチ制御レジスタ(TSCR)ビット設定機能の共有制御を可能にするメカニズムを、実行可能にする。ハイパーバイザ404は、スレッド・スイッチ制御レジスタ402内に存在するビット設定を読み取り、更新されたビット設定をマルチプレクサ406に提供する。その後、マルチプレクサ406は、ハイパーバイザ404によって提供される設定に従って、スレッド・スイッチ制御レジスタ402内のビット設定を更新することができる。
スレッド・スイッチ制御レジスタ402内のビットの有効化を動的に変更するために、例示的な実施形態においてオン/オフチップのハードウェア・コントローラ408が提供され、それによって、ハイパーバイザ404によって設定されるデフォルトのスレッド優先度ビット設定をオーバーライドする。ハードウェア・コントローラ408は、スレッド・スイッチ制御レジスタ402内のビット設定を読み取り、更新されたビット設定をマルチプレクサ406に提供する。その後、マルチプレクサ406は、ハードウェア・コントローラ408によって提供される設定に従って、スレッド・スイッチ制御レジスタ402内のビット設定を更新する。ハードウェア・コントローラ408によって発せられるハードウェア・オーバーライド信号410は、ハイパーバイザ404によって提供されるデフォルト・コマンドを介して、マルチプレクサ406がハードウェア・コントローラ408から更新コマンドを選択できるようにする。ハードウェア・コントローラ408は、最終的に、システム・ソフトウェアの制御下にもあり(リンクは図示せず)、通常、最終オーバーライド制御は、ハイパーバイザおよびオペレーティング・システムのようなエンティティを介して提示される(階層)システム・ソフトウェアによって行われる。ハードウェア・コントローラ408は、所与のプロセッサ・チップについてのシステム指定パワー・ターゲットに応答して、各プロセッサ・コア内のパワー・レベルを調節するためにデフォルト/事前TSCR設定を変更するための必要性を認識し得る。たとえば、ハードウェア・コントローラ408は、所与のプロセッサ・コア(のセット)のために事前に指定された「低パワー」モードを呼び出す必要性を認識し得る。この認識は、ハイパーバイザ404によって提示されるデフォルト・ソースからではなくハードウェア・コントローラ408から、更新されたTSCR設定コマンドを選択する機能をマルチプレクサ406に提供するために、ハードウェア・コントローラ408がハードウェア・オーバーライド信号410を設定することにつながり得る。
ハイパーバイザ404とは対照的に、ハードウェア・コントローラ408は、システムの電力消費を制御するためにスレッド・スイッチ制御レジスタ402内のスレッド優先度設定を動的に制御する。たとえばすでに述べたように、より低電力のモードが望ましい場合、ハードウェア・コントローラ408は、結果として低電力消費を適切に生じさせるように優先度ビット設定を更新する。規定された低電力モード・レベル(たとえば、低、中、または高)は、(現在監視されているパワー・レベル、および、システムレベル・ディレクティブによって指定された電力ターゲットとのそれらの関係に応答して)ハードウェア・コントローラ408によって自律的に推測されるか、または、システムレベル制御によって直接通信される。スレッド優先度制御ノブを呼び出すか否か、および、どのような新規のTSCR設定が望ましい電力低下に影響を与えるはずであるかは、(ハードウェアにおいて、またはコントローラ上で実行するプログラミングされたソフトウェア/ファームウェアを介して、実装される)コントローラに組み込まれる論理の一部である決定事項である。パワー性能効率を向上させるために優先度ビット設定を変更することによって、マルチスレッド・プロセッサのスループット性能が低下する可能性があり、また実行スレッドにわたってフェアネスが低下する可能性がある。しかしながら、あるカテゴリのフラッシュを無効化することで、より高性能のスレッドが大部分のリソースをキャプチャできるようにし得るため、所望の電力消費モードを達成するために優先度ビット設定を変更することで、多くの場合、結果として電力効率の向上および正味スループット性能の向上の両方が生じる。したがって、所望の電力消費モードを達成するために優先度ビット設定を変更することで、フェアネス基準を損なうことと引き換えに、スループット性能を高めることができる。
TSCRビット定義は、TSCRテーブル内に組織化することができる。少なくとも1つの実施形態において、図4におけるスレッド・スイッチ制御レジスタ402の2ビット・フィールド<gctdec:2>は、グローバル完了テーブル(GCT)の復号優先度制御を定義する。グローバル完了テーブルは、復号/ディスパッチから完了までマイクロプロセッサ内の有効(ライブ)命令を追跡する、1つまたは複数のエントリ・フィールドを含むハードウェア・エンティティである。物理的には、グローバル完了テーブルは、図2に示される完了バッファ248の機能の一部として実装可能である。グローバル完了テーブル復号優先度制御は、グローバル完了テーブルのいくつのエントリがスレッドによって利用されているかに基づいて、スレッドの優先度レベルを変更するためにスレッド・レベルを指定する。実行しているすべてのスレッドが同じソフトウェア設定優先度レベルを有するとき、スレッドがグローバル完了テーブルの指定されたエントリ数よりも多くのエントリを利用している場合、図3のプロセッサ・パイプラインにおけるスレッド選択および優先度論理308および316は、スレッドの優先度を低下させることになる。たとえば、スレッド・スイッチ制御レジスタ内の<gctdec:2>が「10」に設定されている場合、スレッドがGCT内のエントリの数に関してプログラム可能閾値よりも多くの数を使用している場合、スレッドの優先度は低下することになる。スレッド・スイッチ制御レジスタ内の<gctdec:2>が「00」に設定されている場合、グローバル完了テーブルの復号優先度制御は無効化され、いかなる処置も講じられない。この2ビット・フィールド<gctdec:2>は、電力および性能をトレード・オフするためにも使用される。
図4のスレッド・スイッチ制御レジスタ402の1ビット・フィールド<bf:1>は、キャッシュ・ミス・バランス・フラッシュの有効化/無効化設定を定義することができる。キャッシュ・ミス・バランス・フラッシュは、リソース利用率フェアネスまたはバランスをリストアするために、システムから、保留中キャッシュ・ミスとも呼ばれる機能停止またはリソース消費型あるいはその両方のターゲット・スレッドを、選択的にフラッシュするスレッド制御機構である。キャッシュ・ミス・バランス・フラッシュ動作は、NTC+Xでフラッシュを実行し、キャッシュ・ミスが発生したキャッシュ階層レベル(L1、L2、L3、L4、・・・Ln)に基づいて、「X」は構成可能であり、異なる。キャッシュ・ミス・バランス・フラッシュは、スレッド・スイッチ制御レジスタ内のビット・フィールドを使用して有効化または無効化され得る。
たとえば、図4のスレッド・スイッチ制御レジスタ402の2ビット・フィールド<gctbf−a:2>は、L3キャッシュおよびTLBのミスについて、グローバル完了テーブルのキャッシュ・ミス・バランス・フラッシュ閾値制御を定義することができる。L3キャッシュまたはTLBのミスは、L3キャッシュまたはTLBが所望のタグを伴うデータを含まないときに発生する。L3またはTLBのミスに起因してディスパッチにおいてスレッドが機能停止する場合、スレッドは、キャッシュ・ミス・バランスがフラッシュされ得る。たとえば、スレッド・スイッチ制御レジスタ内のビット・ペア<gctbf−a:2>が「01」に設定されたとき、スレッドが少なくともプログラム可能な最低数のグローバル完了テーブル・エントリを利用している場合、キャッシュ・ミス・バランス・フラッシュがスレッド上で実行されることになる。ビット・ペア<gctbf−a:2>が「10」または「11」に設定されたとき、スレッドがグローバル完了テーブル・エントリの数に関して他の異なるプログラム可能な閾値を利用している場合、マイクロプロセッサは、スレッド上でキャッシュ・ミス・バランス・フラッシュを実行する。スレッド・スイッチ制御レジスタ内の<gctbf−a:2>フィールドを「00」に設定することで、キャッシュ・ミス・バランス・フラッシュ閾値制御を無効化する。
図4のスレッド・スイッチ制御レジスタ402の2ビット・フィールド<gctbf−b:2>510は、L3キャッシュおよびTLBのミスがない状態で、グローバル完了テーブルのキャッシュ・ミス・バランス・フラッシュ閾値制御を定義する。L3キャッシュまたはTLBのミスがないスレッドは、ビット・ペア<gctbf−b:2>に基づいてキャッシュ・ミス・バランスがフラッシュされ得る。前述のように、使用されるGCTエントリの数におけるプログラム可能な事前定義された閾値に依存して、所与のスレッドはキャッシュ・ミス・バランスがフラッシュされ得る。<gctbf−b:2>フィールドを「00」に設定することで、キャッシュ・ミス・バランス・フラッシュ閾値制御を無効化する。
図4のスレッド・スイッチ制御レジスタ402の2ビット・フィールド<bfmc:2>512は、グローバル完了テーブルのキャッシュ・ミス・バランス・フラッシュのカウンタ閾値制御を定義する。スレッドがディスパッチで機能停止し、未処理のL3キャッシュまたはTLBミスを有するとき、キャッシュ・ミス・バランス・フラッシュのミス・サイクル・カウンタが特定のサイクル数よりも少ない場合、スレッドにはキャッシュ・ミス・バランス・フラッシュのみが考慮される。<bfmc:2>における2ビット符号化(たとえば、「01」、「10」、または「11」)は、このクラスのキャッシュ・ミス・バランス・フラッシュをトリガするために、キャッシュ・ミス・バランス・フラッシュのサイクル・カウンタ値におけるプログラム可能閾値を指定する。<bfmc:2>フィールドを符号化パターンのうちの1つ(たとえば、「00」)に設定することで、キャッシュ・ミス・バランス・フラッシュのカウンタ閾値制御機構を無効化する。
図5〜図7に進むと、非限定的な実施形態による、キャッシュ・ミス・バランシング動作を受けるグローバル完了テーブル500が示されている。図5を参照すると、たとえば第1のサイクル(サイクル0)の間に8つのエントリ502a〜502hを有するグローバル完了テーブル500が示されている。8つのエントリは6つの第1のスレッド・エントリ502a(Th0_group0)、502b(Th0_group1)、502c(Th0_group2)、502d(Th0_group3)、502g(Th0_group4)、502h(Th0_group5)と、2つの第2のスレッド・エントリ502e(Th1_group0)および502f(Th1_group1)とを含む。第1のサイクル(たとえば、cycle 0)の間、Next To Completeの第1のスレッド・エントリ502a(たとえば、Th0_group0)は、実線のブロック外形によって示されるような保留中のキャッシュ・ミスを経験している一方で、第2のスレッド・エントリ502eのうちの1つ(たとえば、Th1_group0)は、破線のブロック外形によって示されるように完了する。
図6に進むと、第2のサイクル(たとえば、サイクル1)の間のグローバル完了テーブル500が示されている。502e(Th1_Group0)のためのリソースは、サイクル0における完了に起因して解放されている。この第2のサイクルの間、第1のスレッド・エントリ502a(たとえば、Th0_group0)は、保留中のキャッシュ・ミスを依然として経験する。しかしながら、NTC+Xフラッシュが実行され、「X」はたとえば2に設定される。したがって、エントリ502d(Th0_group3)、502g(Th0_group4)、および502h(Th0_group5)はフラッシュされ、したがって第2のサイクルの間、テーブル500内に示されない。したがって、502d(Th0_group3)、502g(Th0_group4)、および502h(Th0_group5)に事前に割り振られたリソースは、次に、新しくディスパッチされたエントリをホストするためにオープンされる。
NTC+Xフラッシュと共に、別の第2のスレッド・エントリ、たとえば502f(Th1_group1)は完了し、新しい第2のスレッド・エントリ502i(たとえば、Th1_group2)は、点線のブロック外形によって示されるようにディスパッチされる。しかしながら、第1のスレッド・エントリ502a(たとえば、Th0_group0)が依然として保留中のキャッシュ・ミスを経験しているため、新しい第1のスレッド・エントリ(Th0_groupN)のディスパッチはブロックされる。
図7に進むと、第3のサイクル(たとえば、サイクル2)の間のグローバル完了テーブル500が示されている。この次のサイクルの間、第1のスレッド・エントリ502a(たとえば、Th0_group0)は依然として保留中のキャッシュ・ミスを経験している。したがって、新しい第1のスレッド・エントリ(Th0_groupN)のディスパッチは再度ブロックされる。しかしながら、別の新しい第2のスレッド502j(たとえば、Th1_group3)は、点線のブロック外形によって示されるようにディスパッチされる。502f(Th1_group1)のためのリソースは、サイクル1におけるその完了に起因して解放されている。したがって、第1のスレッド(すなわち、Th0)によって保留中のキャッシュ・ミスが経験された、すなわち、生じたにも関わらず、第2のスレッド(すなわち、Th1)は、進行し続けることができる。
次に図8および図9を参照すると、非限定的な実施形態による、キャッシュ・ミス・スレッド・バランシングを実行する方法の流れ図が示されている。方法は、動作600で開始し、動作602でキャッシュ・ミスが検出され、キャッシュ・ミスが発生したレベルが決定される。動作604で、キャッシュ・ミスが発生したレベルに基づいて、データ待ち時間が決定される。動作606で、データ待ち時間に基づいてNTC+Xが決定される。少なくとも1つの実施形態において、キャッシュ・ミスのレベルに基づいて、異なる待ち時間が存在することになる。たとえば、レベル1(L1)キャッシュ・ミスでの待ち時間は、レベル2(L2)キャッシュ・ミスの待ち時間よりも少なく、L2キャッシュ・ミスの待ち時間はレベル3(L3)キャッシュ・ミスでの待ち時間よりも少なく、L3キャッシュ・ミスでの待ち時間はレベル4(L4)キャッシュ・ミスでの待ち時間よりも少ない。したがって、NTC+Xの「X」は、キャッシュ・ミスのレベルに基づいて変動するかまたは構成可能である。たとえば、L2キャッシュ・ミスに対応する「X」は、L3キャッシュ・ミスに対応する「X」よりも大きいが、L3キャッシュ・ミスに対応する「X」はL4キャッシュ・ミスに対応する「X」よりも大きい。
動作608に進むと、現在決定されているNTC+Xが有効フラッシュ・ポイントであるかどうかに関して決定される。たとえば、フラッシュ動作は命令の最中には実行されない。したがって、現在決定されているNTC+Xが有効フラッシュ・ポイントではないとき、有効フラッシュ・ポイントを見つけるために、より若いエントリの探索が実行される。NTC+Xは動作610で増分される。動作612で、NTC+Xの増分の後、任意の有効フラッシュ・ポイントが存在するかどうかに関して決定される。たとえば、現在決定されているNTC+Xが命令の境界において存在しない場合、現在のフラッシュ・ポイントは、有効NTC+Xが見つかるまで増分される。動作612で、有効フラッシュ・ポイントが存在しないとき、動作614でフラッシュ動作は実行されず、方法は動作616へと進み、スレッド(たとえば、次のスレッド)のディスパッチはブロックされる。しかしながら、動作612で1つまたは複数の有効フラッシュ・ポイントが存在するとき、方法は動作608へと戻り、増分されたNTC+Xが有効フラッシュ・ポイントであることを確認する。
動作608を再度参照すると、NTC+Xが有効フラッシュ・ポイントであるとき、方法は動作618へと進み、NTC+Xはフラッシュされる。NTC+Xフラッシングは、保留中のキャッシュ・ミスを伴うスレッドが、コンピューティング・リソースの飽和および消費過多となることを防止する。少なくとも1つの実施形態において、NTC+Xのフラッシング後、対応するスレッドへのデータ・ディスパッチは、(i)ロード・ストア・ユニットが、保留中のキャッシュ・ミスがもはや存在しないことを示すまで、(ii)対応するスレッドからのグループ完了が発生するまで、または(iii)対応するスレッドが再開するまで、ブロックされる。動作620で、フラッシュされたNTC+Xよりも若いグループが存在するかどうかに関して決定される。より若いグループが存在しない場合、方法は動作616で終了する。少なくとも1つの実施形態において、データが戻されたとき、スレッドは完了の準備ができた「X」のグループを有することになる。
しかしながら、1つまたは複数のより若いグループが存在するとき、動作622で、フラッシュされたNTC+Xよりも若いすべてのグループもフラッシュされ、動作616で、方法はスレッド(たとえば、次のスレッド)のディスパッチをブロックする。
動作650に進むと、スレッド・ディスパッチがブロックされる間に、データが戻されるかどうかに関して決定される。データが戻されるとき、動作652でスレッド(たとえば、次のスレッド)のディスパッチが可能であり、動作654で方法は終了する。しかしながら、動作650でデータが戻されないとき、方法は動作651へと進み、キャッシュ・ミスがより高いキャッシュ・レベルであるかどうかを決定する。キャッシュ・ミスがより高いキャッシュ・レベルでないものと決定されたとき、方法は動作650へと戻り、データが戻されるかどうかの分析を続ける。しかしながら、キャッシュ・ミスがより高いレベルであるものと決定されたとき、方法は動作604に戻り、キャッシュ階層レベル(たとえば、キャッシュ・ミスが検出された次の最高キャッシュ・レベル)に基づいて、データ待ち時間を決定する。動作604で、より高いキャッシュ・レベルに起因して新しいデータ待ち時間が決定され得るため、NTCグループに関連付けられた追加グループ(X)が、保留中のキャッシュ・ミスが存在するキャッシュ階層レベルに従って変動するデータ待ち時間に基づくことから、NTC+Xを改訂することができる。次いで、更新されたNTC+Xを使用して、上記の方法を繰り返すことができる。
少なくとも1つの実施形態において、キャッシュ・ミス・バランス動作は、キャッシュ・ミス・バランス・フラッシュの実行前に、有効フラッシュ・ポイントの分析を実行することができる。図10を参照すると、有効フラッシュ・ポイント(VFP)サブベクトルおよび探索レンジ(SR)サブベクトルを含む、探索ベクトル700が生成される。探索ベクトル700は、64のタグ702_0〜702_63を含む。探索ベクトル700は、8つの別個のレンジ、たとえば704a〜704hに分割される。したがって、別個のレンジは各々8つのタグを含む。8つのレンジは、最上位ビット・ストラテジ、すなわち3つの最上位ビットを使用して識別可能である。
次いで、レンジ704a〜704hのうちのいずれかにフラッシュ・ポイントが存在するかどうかを決定するために、分析が実行可能である。少なくとも1つの実施形態において、有効フラッシュ・ポイントとして選択されるべき第1のレンジは、フラッシュ要求タグに基づく。すなわち、フラッシュ要求タグが常駐するレンジは、第1のレンジが本明細書で説明するキャッシュ・ミス・バランス・フラッシュ動作に従ってフラッシュされるべきであることを示す。少なくとも1つの実施形態において、開始探索レンジをシフト(すなわち、増分)することによって、フラッシングのための後続のレンジを選択することができる。たとえば、フラッシングのための第2のレンジは、search_start_rangeを1だけ右回転シフトすることによって選択され、フラッシングのための第3のレンジは、search_start_rangeを2だけ右回転シフトすることなどによって選択される。少なくとも1つの実施形態において、分析は、最も古い有効フラッシュ・グループを識別し、キャッシュ・ミス・バランス・フラッシュを実行するために、識別された最も古い有効フラッシュ・グループを選択する。
有効フラッシュ・ポイント・ベクトルを使用して、有効なNTC+Xフラッシュ・ポイントを探索することができる。有効フラッシュ・ポイント・ベクトルは、探索されるあらゆるグループ番号について有効なフラッシュ・ビットを含む。対応するグルーブ番号が有効フラッシュ・ポイントを表すことを示すために、有効フラッシュ・ビットは1(「1」)に設定される。待ち時間ベースのNTC+Xフラッシュ・ポイントに対応するグループ番号で始まる有効フラッシュ・ビット・ベクトルにおいて、最初の1を見つける動作が実行される。最初の1を見つける動作によって、1つのロケーションが見つかった場合、その1つのロケーションは正しい有効なNTC+Xフラッシュ・ポイントに対応する。最初の1を見つける動作によって「1」が見つからない場合、有効フラッシュ・ポイントは見つからない。最初の1を見つける動作を実行するための回路およびアルゴリズムは周知であり、したがって、それらの実装形態の詳細は省略する。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組み合わせであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有する、コンピュータ可読記憶媒体(または媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および記憶することが可能な、有形デバイスであり得る。コンピュータ可読記憶媒体は、たとえば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または、上記の任意の好適な組み合わせであり得るが、限定されない。コンピュータ可読記憶媒体のより特定の例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピィ・ディスク、パンチカードなどの機械的に符号化されたデバイスまたは命令が記録された溝内の盛り上がった構造、および、上記の任意の好適な組み合わせを含む。本明細書で使用されるようなコンピュータ可読記憶媒体は、電波、または他の自由に伝搬する電磁波、導波路または他の伝送媒体(たとえば、光ファイバ・ケーブルを通過する光パルス)を介して伝搬する電磁波、あるいは、ワイヤを介して伝送される電気信号などの、それ自体が一過性の信号であるものと解釈されるべきではない。
本明細書で説明するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいは、たとえば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、またはワイヤレス・ネットワーク、あるいはそれらの組み合わせなどのネットワークを介して、外部コンピュータまたは外部記憶デバイスに、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイヤウォール、スイッチ、ゲートウェイ・コンピュータ、または、エッジ・サーバ、あるいはそれらの組み合わせを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために、コンピュータ可読プログラム命令を転送する。
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き側プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで作成されたソース・コードまたはオブジェクト・コードのいずれかであり得る。コンピュータ可読プログラム命令は、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、あるいは、全体的にリモート・コンピュータまたはサーバ上で、実行し得る。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む、任意のタイプのネットワークを介して、ユーザのコンピュータに接続され得るか、あるいは、外部コンピュータへの接続を(たとえば、インターネット・サービス・プロバイダを使用するインターネットを介して)行うことができる。いくつかの実施形態において、たとえば、プログラム可能論理回路、フィールド・プログラム可能ゲート・アレイ(FPGA)、またはプログラム可能論理アレイ(PLA)を含む、電子回路は、本発明の態様を実行するために、電子回路を個人化するためにコンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行し得る。
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャートまたはブロック図あるいはその両方を参照しながら説明する。フローチャートまたはブロック図あるいはその両方の各ブロック、ならびに、フローチャートまたはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装可能であることを理解されよう。
これらのコンピュータ可読プログラム命令は、機械を生成するために、汎用コンピュータ、特定用途向けコンピュータ、または他のプログラム可能データ処理装置の、プロセッサに提供され得るため、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令は、フローチャートまたはブロック図あるいはその両方のブロック内に指定された機能/動作を実装するための手段を作成することになる。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはそれらの組み合わせに、特定の様式で機能するように指示可能な、コンピュータ可読記憶媒体内にも記憶され得るため、命令を記憶しているコンピュータ可読記憶媒体は、フローチャートまたはブロック図あるいはその両方のブロック内に指定された機能/動作の態様を実装する命令を含む、製品を含むことになる。
コンピュータ可読プログラム命令は、コンピュータ実装プロセスを生成するために、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させるように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にもロードされ得るため、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令は、フローチャートまたはブロック図あるいはその両方のブロック内に指定された機能/動作を実装することになる。
図面内のフローチャートおよびブロック図は、本発明の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。この点で、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実装するために1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替実装形態において、ブロック内に示された機能は、図内に示された順序以外で実行し得る。たとえば、連続して示された2つのブロックは、実際にはほぼ同時に実行され得るか、または、ブロックは時には、関連する機能に依存して、逆の順序で実行され得る。ブロック図またはフローチャートあるいはその両方の各ブロック、および、ブロック図またはフローチャート内のブロックの組み合わせは、指定された機能または動作を実行するか、あるいは特定用途向けハードウェアおよびコンピュータ命令の組み合わせを実施する、特定用途向けハードウェア・ベース・システムによって、実装可能であることも留意されたい。
本明細書で使用される場合、「モジュール」という用語は、1つまたは複数のソフトウェアまたはファームウェア・プログラム、組み合わせ論理回路、または、説明する機能を提供する他の好適な構成要素、あるいはそれらの組み合わせを実行する、特定用途向け集積回路(ASIC)、電子回路、電子コンピュータ・プロセッサ(共有、専用、またはグループ)、およびメモリを指す。ソフトウェア内で実装される場合、モジュールは、処理回路によって読み取り可能であり、方法を実行するために処理回路によって実行するための命令を記憶する、非一過性の機械可読記憶媒体として、メモリ内に具体化することができる。
本発明の様々な実施形態を例示の目的で説明してきたが、網羅的であること、または開示された実施形態に限定されることは意図されていない。当業者であれば、説明した実施形態の範囲および思想を逸脱することなく、多くの修正および変形が明らかとなろう。本明細書で使用される用語は、実施形態の原理、実際の応用例、または市場で見られる技術を超える技術的改良を、最も良く説明するために、あるいは、本明細書で開示される実施形態を当業者が理解できるようにするために、選択されたものである。

Claims (28)

  1. キャッシュ・ミス・スレッドをバランシングする方法であって、
    前記キャッシュ・ミス・スレッドのキャッシュ・ミスを検出することと、
    前記検出されたキャッシュ・ミスが発生した第1のキャッシュ階層レベルを決定することと、
    前記キャッシュ・ミス・スレッドにおける次完了(Next To Complete(NTC))グループおよび前記キャッシュ・ミス・スレッドにおける複数の追加グループ(X)を決定することであって、前記複数の追加グループ(X)は、前記検出されたキャッシュ・ミスに基づいて動的に構成される、前記決定することと、
    前記キャッシュ・ミス・スレッドにおける任意のグループが、前記決定されたNTCグループおよび前記複数の追加グループ(X)よりも若いかどうかを決定し、前記キャッシュ・ミス・スレッドからすべての前記決定されたより若いグループをフラッシュすることと、
    を含む、キャッシュ・ミス・スレッドをバランシングする方法。
  2. 前記複数の追加グループ(X)はデータ待ち時間に基づく、請求項1に記載の方法。
  3. 前記データ待ち時間は、前記検出されたキャッシュ・ミスが発生した前記第1のキャッシュ階層レベルに基づく、請求項2に記載の方法。
  4. 前記第1のキャッシュ階層レベルよりも高い第2のキャッシュ階層レベルを識別することと、
    前記検出されたキャッシュ・ミスが前記第2のキャッシュ階層レベルからであることを決定することと、
    前記第2のキャッシュ階層レベルに基づいて、前記NTCグループおよび前記複数の追加グループのサブセットを決定することと、
    NTCグループおよび前記複数の追加グループの前記サブセットより若い、前記キャッシュ・ミス・スレッド内の少なくとも1つの追加のフラッシュされたグループをフラッシュすることと、
    をさらに含む、請求項1に記載の方法。
  5. 前記フラッシュは、有効フラッシュ・ポイントを検出した後に発生する、請求項1に記載の方法。
  6. 前記より若いグループを決定する前に、前記有効フラッシュ・ポイントを検出することは、
    前記NTCグループおよび前記複数の追加グループ(X)が有効フラッシュ・ポイントを構成するかどうかを決定することと、
    前記NTCグループおよび前記複数の追加グループ(X)が無効フラッシュ・ポイントを定義する旨の決定に応答して、前記複数の追加グループ(X)を定義するより大きな値を探索することと、
    を含む、請求項5に記載の方法。
  7. キャッシュ・ミス・スレッドを検出することは、保留中のキャッシュ・ミスを経験している第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に記載の方法。
  8. 前記第2のスレッドの前記新規グループは、前記第1のスレッドの前記第1のグループが前記保留中のキャッシュ・ミスを経験している間にディスパッチされる、請求項7に記載の方法。
  9. 前記グローバル完了テーブル内に列挙された前記新規グループは、前記第1のスレッドの前記第1のグループが前記保留中のキャッシュ・ミスを経験している間に実行を完了する、請求項8に記載の方法。
  10. 前記第1のグループの新規グループは、前記第1のスレッドの前記第1のグループが前記保留中のキャッシュ・ミスを経験している間にディスパッチからブロックされる、請求項9に記載の方法。
  11. 前記NTCグループに関連付けられた前記複数の追加グループ(X)は、前記保留中のキャッシュ・ミスが存在するキャッシュ階層レベルに従って変動するデータ待ち時間に基づいており、前記データ待ち時間は、前記キャッシュ階層レベルからデータを戻すためにかかる時間量として定義される、請求項10に記載の方法。
  12. キャッシュ・ミス・スレッド・バランシングを実行するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、具体化されたプログラム命令を有するコンピュータ可読記憶媒体を含み、前記プログラム命令は、
    前記キャッシュ・ミス・スレッドのキャッシュ・ミスを検出することと、
    前記検出されたキャッシュ・ミスが発生した第1のキャッシュ階層レベルを決定することと、
    前記キャッシュ・ミス・スレッドにおける次完了(Next To Complete(NTC))グループおよび前記キャッシュ・ミス・スレッドにおける複数の追加グループ(X)を決定することであって、前記複数の追加グループ(X)は、前記検出されたキャッシュ・ミスに基づいて動的に構成される、前記決定することと、
    前記スレッドにおける任意のグループが、前記決定されたNTCグループおよび前記複数の追加グループ(X)よりも若いかどうかを決定し、前記キャッシュ・ミス・スレッドからすべての前記決定されたより若いグループをフラッシュすることと、
    を実行するように、データベース処理システムを制御するために、電子コンピュータ・プロセッサによって実行可能である、
    コンピュータ・プログラム製品。
  13. 前記複数の追加グループ(X)はデータ待ち時間に基づく、請求項12に記載のコンピュータ・プログラム製品。
  14. 前記データ待ち時間は、前記検出されたキャッシュ・ミスが発生した前記キャッシュ階層レベルに基づく、請求項13に記載のコンピュータ・プログラム製品。
  15. 前記第1のキャッシュ階層レベルよりも高い第2のキャッシュ階層レベルを識別することと、
    前記検出されたキャッシュ・ミスが前記第2のキャッシュ階層レベルからであることを決定することと、
    前記第2のキャッシュ階層レベルに基づいて、前記NTCグループおよび前記複数の追加グループのサブセットを決定することと、
    NTCグループおよび前記複数の追加グループの前記サブセットより若い、前記キャッシュ・ミス・スレッド内の少なくとも1つの追加のフラッシュされたグループをフラッシュすることと、
    をさらに含む、請求項12に記載のコンピュータ・プログラム製品。
  16. 前記フラッシュは、有効フラッシュ・ポイントを検出した後に発生し、前記より若いグループを決定する前に、前記有効フラッシュ・ポイントを検出することは、
    前記NTCグループおよび前記複数の追加グループ(X)が有効フラッシュ・ポイントを構成するかどうかを決定することと、
    前記NTCグループおよび前記複数の追加グループ(X)が無効フラッシュ・ポイントを定義する旨の決定に応答して、前記複数の追加グループ(X)を定義するより大きな値を探索することと、
    を含む、請求項12に記載のコンピュータ・プログラム製品。
  17. 前記無効フラッシュ・ポイントを決定することに応答して、有効フラッシュ・ポイントが見つかるまで、前記NTCグループおよび前記複数の追加グループ(X)を増分することと、
    前記増分されたNTCグループおよび複数の追加グループ(X)が有効フラッシュ・ポイントであることを検出することに応答して、前記増分されたNTCグループおよび複数の追加グループ(X)に基づいて、前記キャッシュ・ミスに含まれる前記キャッシュ・ミス・スレッドからすべての前記決定されたより若いグループをフラッシュすることと、
    をさらに含む、請求項16に記載のコンピュータ・プログラム製品。
  18. キャッシュ・ミス・スレッドを検出する第1の回路と、
    前記検出されたキャッシュ・ミスが発生した第1のキャッシュ階層レベルを決定する、第2の回路と、
    前記スレッドにおける次完了(Next To Complete(NTC))グループおよび前記スレッドにおける複数の追加グループ(X)を決定する、第3の回路であって、前記複数の追加グループ(X)は、前記検出されたキャッシュ・ミスに基づいて動的に構成される、第3の回路と、
    前記スレッドにおける任意のグループが、前記決定されたNTCグループおよび前記複数の追加グループ(X)よりも若いかどうかを決定し、前記キャッシュ・ミス・スレッドからすべての前記決定されたより若いグループをフラッシュする、第4の回路と、
    を含む、共有ディスパッチ・パイプラインを有する同時マルチスレッド(SMT)プロセッサ。
  19. 前記複数の追加グループ(X)のサイズはデータ待ち時間に基づく、請求項18に記載のSMTプロセッサ。
  20. 前記データ待ち時間は、前記検出されたキャッシュ・ミスが発生した前記第1のキャッシュ階層レベルに基づく、請求項19に記載のSMTプロセッサ。
  21. 前記第2の回路は、前記第1のキャッシュ階層レベルよりも高い第2のキャッシュ階層レベルを識別し、前記SMTプロセッサは、
    前記検出されたキャッシュ・ミスが前記第2のキャッシュ階層レベルからであることを決定する、第5の回路と、
    前記第2のキャッシュ階層レベルに基づいて、前記NTCグループおよび前記複数の追加グループのサブセットを識別する、第6の回路と、
    をさらに含み、
    前記第4の回路は、前記NTCグループおよび前記複数の追加グループの前記サブセットより若い、前記キャッシュ・ミス・スレッド内の少なくとも1つの追加のフラッシュされたグループをフラッシュし、
    前記第2のキャッシュ階層レベルは、前記NTCグループが、前記第2のキャッシュ階層レベルからデータが戻されることを示す、より長い時間待機している旨の決定に基づく、
    請求項20に記載のSMTプロセッサ。
  22. 前記第4の回路は、前記NTCグループおよび前記複数の追加グループ(X)が有効フラッシュ・ポイントを構成するかどうかを決定する、請求項18に記載のSMTプロセッサ。
  23. 前記NTCグループおよび前記少なくとも1つの追加グループ(X)の妥当性に基づいて、前記第4の回路は、前記有効フラッシュ・ポイントの検出に応答して、前記NTCグループおよび前記複数の追加グループ(X)に基づいて前記キャッシュ・ミスに含められる機能停止またはリソース消費型あるいはその両方のターゲット・スレッドをフラッシュするか、または、前記NTCグループおよび前記複数の追加グループ(X)が無効フラッシュ・ポイントである場合、前記フラッシュをブロックする、請求項22に記載のSMTプロセッサ。
  24. グローバル完了テーブル上でキャッシュ・ミス・スレッド・バランスを実行する方法であって、
    保留中のキャッシュ・ミスを経験している第1のスレッドの第1のグループを検出することと、
    前記第1のスレッド内の次完了(Next To Complete(NTC))グループおよび前記第1のスレッド内の複数の追加グループ(X)を決定することと、
    少なくとも1つの空のグローバル完了テーブルのエントリ・フィールドを提供するように、前記第1のスレッド内の前記NTCグループおよび前記第1のスレッド内の複数の追加グループ(X)の後にディスパッチされる、前記第1のスレッドの少なくとも1つのグループを、前記グローバル完了テーブルからフラッシュすることと、
    前記少なくとも1つの空のグローバル完了テーブルのエントリ・フィールド内に、前記第1のスレッドとは異なる第2のスレッドの新規グループを記憶することと、
    を含む、キャッシュ・ミス・スレッド・バランスを実行する方法。
  25. 前記第2のスレッドの前記新規グループは、前記第1のスレッドの前記第1のグループが前記保留中のキャッシュ・ミスを経験している間にディスパッチされる、請求項24に記載の方法。
  26. 前記グローバル完了テーブル内に列挙された前記新規グループは、前記第1のスレッドの前記第1のグループが前記保留中のキャッシュ・ミスを経験している間に実行を完了する、請求項25に記載の方法。
  27. 前記第1のグループの新規グループは、前記第1のスレッドの前記第1のグループが前記保留中のキャッシュ・ミスを経験している間にディスパッチからブロックされる、請求項26に記載の方法。
  28. 前記NTCグループに関連付けられた前記複数の追加グループ(X)は、前記保留中のキャッシュ・ミスが存在するキャッシュ階層レベルに従って変動するデータ待ち時間に基づいており、前記データ待ち時間は、前記キャッシュ階層レベルからデータを戻すためにかかる時間量として定義される、請求項27に記載の方法。
JP2019547090A 2017-03-07 2018-02-27 キャッシュ・ミス・スレッド・バランシング Active JP7046087B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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