JP2021086612A - フレキシブルなキャッシュ割り当て技術の優先度ベースのキャッシュラインエビクションアルゴリズム - Google Patents

フレキシブルなキャッシュ割り当て技術の優先度ベースのキャッシュラインエビクションアルゴリズム Download PDF

Info

Publication number
JP2021086612A
JP2021086612A JP2020150869A JP2020150869A JP2021086612A JP 2021086612 A JP2021086612 A JP 2021086612A JP 2020150869 A JP2020150869 A JP 2020150869A JP 2020150869 A JP2020150869 A JP 2020150869A JP 2021086612 A JP2021086612 A JP 2021086612A
Authority
JP
Japan
Prior art keywords
priority
subsequent
llc
cache
ccc
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
Application number
JP2020150869A
Other languages
English (en)
Inventor
ゴルカー ネハ
Gholkar Neha
ゴルカー ネハ
クマー アキレシュ
Kumar Akhilesh
クマー アキレシュ
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2021086612A publication Critical patent/JP2021086612A/ja
Pending legal-status Critical Current

Links

Images

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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/466Transaction processing
    • G06F9/467Transactional 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/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
    • 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
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】キャッシュラインエビクションアルゴリズムを提供する。【解決手段】コンピューティングシステム200は、ラストレベルキャッシュ(LLC)204と、キャッシュ制御回路(CCC)201と、を備える。LLCは、複数の優先度の1つにそれぞれ割り当てられた複数のウェイを有し、各優先度が、占有する最小および最大ウェイ数を指定する。CCCは、無効キャッシュライン(CL)が存在する場合、この無効CLに要求元優先度を有する後続キャッシュラインを格納し、あるいは、要求元優先度が最低優先度で、1または複数である占有数を有する、または占有数が最大である場合、要求元優先度の最も長く使われていない(Least Recently Used:LRU)CLをエビクションし、あるいは、占有数が最小および最大の間である場合、要求元優先度またはそれより低い優先度のLRU CLをエビクションする。【選択図】図2

Description

本発明の技術分野は概してコンピュータプロセッサアーキテクチャに関し、より詳細には、キャッシュ分割のための改良されたフレキシブルなキャッシュ割り当て技術(Flex−CAT)の優先度ベースのエビクションアルゴリズムに関する。
マルチテナンシーは、空間共有により高システム利用率および省コストを実現するソリューションであると確認されている。ユーザアプリケーションを実行する仮想マシン(VM)を各コアがホストする仮想化により、クラウド環境でマルチテナンシーが実現可能である。Function as a Service(FaaS)等の新たなコンピューティングパラダイムは、多数の個別軽量機能をコンテナ内で実行するように、コンテナ型仮想化を利用する。典型的なマルチテナント環境においては、マルチコアプロセッサまたはコアのような同じコンピューティングリソース上に、高い優先度(HP)のジョブが低い優先度(LP)のジョブと共存する。HPジョブがレイテンシに敏感なジョブであり、一方、LPジョブは往々にして期限が緩い。HPジョブの一部には、低レイテンシに加え、パフォーマンスの確定性が求められる。ジョブをサブミットするユーザは、サービス品質(QoS)サービス水準合意(SLA)をクラウドサービスプロバイダ(CSP)と締結し、これらに応じてレイテンシまたはパフォーマンスの確定性の保証についてこれらに準拠する。CSPは、パフォーマンス変動、または同位置の他のLPジョブが引き起こすHPジョブのQoSの低下を抑制することで、SLAを満たす必要がある。
本発明は、添付図面の図において限定ではなく例として示されており、それらの中で、同様の参照符号は同様の要素を示している。
いくつかの実施形態に係る、命令を実行する処理コンポーネントを示すブロック図である。
いくつかの実施形態に係る、仮想マシンを実行するマルチコアシステムを含むシステムを示すブロック図である。
いくつかの実施形態に係る、例示的なキャッシュ分割方式を示す。
いくつかの実施形態に係る、キャッシュラインエビクションを示すブロック図である。
いくつかの実施形態に係る、キャッシュフィル要求に応じてキャッシュ制御回路で実行される処理を示すブロックフロー図である。
いくつかの実施形態に係る、キャッシュフィル要求を処理するキャッシュ制御回路を示すフロー図である。
図7Aおよび図7Bは、本発明のいくつかの実施形態に係る、汎用ベクトル向け命令フォーマットおよびその命令テンプレートを示すブロック図である。
本発明のいくつかの実施形態に係る、汎用ベクトル向け命令フォーマットおよびそのクラスA命令テンプレートを示すブロック図である。
本発明のいくつかの実施形態に係る、汎用ベクトル向け命令フォーマットおよびそのクラスB命令テンプレートを示すブロック図である。
本発明のいくつかの実施形態に係る、例示的な特定ベクトル向け命令フォーマットを示すブロック図である。
一実施形態による、特定ベクトル向け命令フォーマットの、フルオペコードフィールドを構成するフィールドを示すブロック図である。
一実施形態による、特定ベクトル向け命令フォーマットの、レジスタインデックスフィールドを構成するフィールドを示すブロック図である。
一実施形態による、特定ベクトル向け命令フォーマットの、拡張演算フィールドを構成するフィールドを示すブロック図である。
一実施形態による、レジスタアーキテクチャのブロック図である。
いくつかの実施形態に係る、例示的なインオーダパイプラインおよび例示的なレジスタリネーミング、アウトオブオーダ発行/実行パイプラインの両方を示すブロック図である。
いくつかの実施形態に係る、プロセッサに含まれる、インオーダアーキテクチャコアの例示的な実施形態および例示的なレジスタリネーミング、アウトオブオーダ発行/実行アーキテクチャコアの両方を示すブロック図である。
図11Aおよび図11Bは、より具体的で例示的なインオーダコアアーキテクチャのブロック図であり、そのコアはチップ内の(同じタイプおよび/または異なるタイプの他のコアを含む)いくつかの論理ブロックのうちの1つである。
いくつかの実施形態に係る、オンダイ相互接続ネットワークへの接続を備え、かつ、レベル2(L2)キャッシュのローカルサブセットを備えた単一のプロセッサコアのブロック図である。
いくつかの実施形態に係る、図11Aのプロセッサコアの一部の拡大図である。
いくつかの実施形態に係る、プロセッサのブロック図であり、当該プロセッサは、2以上のコアを有してよく、統合メモリコントローラを有してよく、統合グラフィックを有してよい。
図13から16は、例示的なコンピュータアーキテクチャのブロック図である。
いくつかの実施形態に係る、システムのブロック図である。
いくつかの実施形態に係る、第1のより具体的な例示的システムのブロック図である。
いくつかの実施形態に係る、第2のより具体的な例示的システムのブロック図である。
いくつかの実施形態に係る、システムオンチップ(SoC)のブロック図である。
いくつかの実施形態に係る、ソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するためのソフトウェア命令コンバータの使用を対比するブロック図である。
以下の説明では、多数の具体的な詳細が示されている。ただし、いくつかの実施形態はこれら具体的な詳細無しで実施でき得ることが理解されよう。他の例では、本記載の理解を損なわないように、既知の回路、構造、および技術については詳細に示さない。
本明細書での「一実施形態」、「ある実施形態」、「例としての実施形態」等の表現は、記載された実施形態にある特徴、構造、または特性が含まれ得ることを示すが、必ずしもすべての実施形態がこれらの特徴、構造、または特性を含むわけではない。さらに、このような文言は、必ずしも同一の実施形態を指していない。さらに、ある特徴、構造、または特性がある実施形態について記載される場合、明示的に記載されていれば他の実施形態についてもこれらの特徴、構造、または特性に影響を与えることが当業者には自明であることを示す。
上述のように、クラウドサービスプロバイダ(CSP)は、パフォーマンス変動、または同位置の他の低パフォーマンスLPジョブが引き起こす高パフォーマンス(HP)ジョブのサービス品質(QoS)の低下を抑制することで、サービス水準合意(SLA)を満たす必要がある。具体的には、開示の実施形態は、フレキシブルなキャッシュ割り当て技術(Flexible Cache Allocation Technology:Flex−CAT)について説明する。これは、LPジョブによる、HPラストレベルキャッシュ(LLC)エビクションを抑制する構造的ソリューションである。Flex−CAT手法は、各種優先度により、各キャッシュセット内のキャッシュライン(CL)の利用に応じて、各セットに最適なウェイ数を動的に決定するものである。その境界(最小および最大ウェイ数)は、LLCキャッシュフィル時に、エビクション対象を選択する際のヒントを提供するモデル固有レジスタ(MSR)内に指定される。
Flex−CATは、キャッシュパーティションを指定するための、容易に設定可能で、それでいてフレキシブルなインタフェースを提供するという利点がある。Flex−CATは、詳細な粒度でパーティションを管理するため、リアルタイムデータに基づく、優先度式LLCエビクション決定を下す動的キャッシュ分割方式をサポートする。Flex−CATは、パフォーマンスの確定性、ならびに高パフォーマンスジョブおよび低パフォーマンスジョブの分離等の、QoS保証を満たす構造的特徴に対する、クラウドサービスプロバイダの要求を満たすことに寄与する。本明細書において、低パフォーマンスジョブを「ノイジーネイバー(noisy neighbors;うるさい隣人)」とも称する場合がある。
より劣る代替的な手法は、コアにウェイの個別セットを割り当て、HPおよびLPジョブを特定のコアに限定することで、リソースを共有するHPおよびLPジョブ間の不均衡を解消しようとしてきた。しかしそのような手法にはいくつか問題がある。例えば、当該メカニズムには、優先度という概念が存在しない。これら手法の一部は、すべてのキャッシュセットおよびHPコアに固有のウェイセットを割り当てることによりLPジョブからHPジョブを分離するが、このような固有のリソースは、HP作業負荷に利用されていないときには、LP作業負荷に利用することができない。さらに、これら手法の一部によると、特定の限定されたキャッシュセット(例えば、xセット)が他よりも飽和する(例えば、Nをキャッシュセットの総数とすると、N−xセット)。これらxセットの飽和による、HPジョブへの均等ウェイ割り当ては、N−xセット全体での過提供、ならびにこれらN−xの過少利用につながる可能性がある。さらに、コアに最大ウェイよりも少なく割り当てると、結合性の低下が生じ、競合性ミスが多くなり、パフォーマンス低下につながる。固定のキャッシュウェイをコアに割り当てる静的割り当てを利用した方法の場合、キャッシュエビクションおよびフィル時に柔軟性の入る余地がない。
一方で開示の実施形態は、動的に優先度とキャッシュパーティションを指定するため、フレキシブルなインタフェースを提供する。優先度は高くなる順で列挙される。フレキシブルなキャッシュパーティションは、優先度毎の最大および最小ウェイ数について指定可能である。いくつかのその他手法と異なり、Flex−CATは各パーティションに割り当てられるキャッシュウェイを正確に指定するソフトウェアを必要としない。
そのような動的な優先度およびキャッシュ分割仕様は、クラスオブサービス(CLOS)レジスタによりサポートされる。同レジスタは、各CLOSに対して以下の値を保持する。
・CLOS優先度P:Pnビット
・優先度Pが占める最大ウェイ数:mxwnビット
・優先度Pが占める最小ウェイ数:mnwnビット
例えば、優先度最大数を4とすると、Pn=log(4)=2。最大ウェイ数を16とすると、mxwn=mnwn=log(16)=4。
Figure 2021086612
本明細書に開示の実施形態によると、要求元はLLCに埋められる予定のCLのオーナである。要求元の優先度をPFとする。システムにおいて、PLが最低優先度で、PHが最高優先度である。lоcをFlex−CATにより決定される要求元のCLに対する最終格納場所とする。要求元の占有数O[PF]は、インデックスされたキャッシュセット内で、要求元が占めるCLの数である。
Flex−CATは、キャッシュセット粒度で、優先度式キャッシュ分割を実行する、新たなエビクションアルゴリズムである。要求元の占有数が最大ウェイ割り当て(mxw)を超えない限り、優先的にLP CLがエビクションされる。要求元の占有数が最大割り当てに達すると、Flex−CATはその他優先度エビクションよりも自己エビクションを優先し、パーティション境界内に留まるようにする。これら前2段階で対象が発見できない限定的状況では、Flex−CATは後続のキャッシュフィルの場所を作るため、HP CLをエビクションに選択する。このようなFlex−CATの基本的考え方を図4に示す。
詳細なアルゴリズムを図4から図6のフローチャートに示し、以下に説明する。LLCフィル時に、開示の実施形態は、従来のハッシングアルゴリズムにより、要求元の後続キャッシュラインに対するキャッシュセットインデックスを判定する。
適切なキャッシュセットにインデックスした後、Flex−CATは最初に、インデックスされたキャッシュセット内の無効なLLCエントリを探す。キャッシュセットが一杯で、無効格納場所が見つからない場合、Flex−CATはLLCからエビクションされる必要のある対象CLを判定する。これにより、Flex−CATは飽和したキャッシュセットのみでイネーブルされ、コンテンションがなければ無用に作業負荷が課されないことが保証される。Flex−CATはキャッシュセット全体を走査し、システムの各優先度について、LRU CLのインデックス、その経過時間、および占有数を判定する。
要求元の占有数が最小割り当て未満(O[PF]<PF[mnw])であれば、Flex−CATはLP LRU CLを優先してエビクションして、その占有数を上げる。要求元の占有数が最小割り当てに達し、かつ最大割り当て未満(PF[mnw]≦O[PF]<PF[mxw])であれば、Flex−CATは、優先度の中から、LRU対象を探しながら、さらにそのLRU CLを候補リストに加える。要求元の占有数が最大割り当てに達すると、Flex−CATはLP LRU候補を無視して、要求元のLRU(LRUF)を対象CLとして選択し、要求元の占有数が決して上限(PF[mxw])を超えないことを保証する。前段階で対象が発見されなければ(すべてのラインがより高い優先度のオーナに属する場合)、Flex−CATはHPエビクションを実施する。
図5および図6に示し、以下に説明するフローチャートに、適切なキャッシュセットにインデックスした後にFlex−CATが経る段階を示す。
図1は、いくつかの実施形態に係る、命令を実行する処理コンポーネントを示すブロック図である。図示のとおり、ストレージ101は実行される命令(複数可)103を格納する。さらに後述するように、いくつかの実施形態において、システム100(本明細書では「コンピューティングシステム」とも称する)は、行列を含む、パックドデータベクトルの複数要素を同時に処理するSIMDプロセッサである。
動作時、命令(複数可)103はフェッチ回路105によりストレージ101からフェッチされる。命令は、復号回路109により復号される。復号回路109は、フェッチされた命令107を、1または複数の動作に復号する。いくつかの実施形態において、この復号は実行回路(実行回路117等)により実行される複数のマイクロ動作を生成することを含む。復号回路109はさらに、(使用される場合)命令サフィクスとプレフィクスとを復号する。
いくつかの実施形態において、レジスタリネーミング、レジスタ割り当て、および/またはスケジューリング回路113は、以下のうちの1または複数のための機能を提供する。1)論理オペランド値を物理オペランド値にリネーミング(例えば、いくつかの実施形態においてレジスタエイリアステーブル)、2)ステータスビットおよびフラグを復号された命令に割り当て、3)命令プールのうち、復号された命令111を実行回路117上での実行用にスケジューリング(例えば、いくつかの実施形態においてリザベーションステーションを利用)。
レジスタ(レジスタファイル)および/またはメモリ115は、データを実行回路117により実行される命令111のオペランドとして格納する。例示的なレジスタの種類は、少なくとも図9を参照して以下にさらに説明し、示すように、書き込みマスクレジスタ、パックドデータレジスタ、汎用レジスタ、フローティングポイントレジスタを含む。
いくつかの実施形態において、ライトバック回路119は命令実行結果をコミットする。実行回路117およびシステム100は、図2〜図4、図10A、図10B、図11A、図11Bにさらに図示され、それらを参照に説明される。
図2は、いくつかの実施形態に係る、仮想マシンを実行するマルチコアプロセッサを含むシステムを示すブロック図である。図示のとおり、コンピューティングシステム200は、ラストレベルキャッシュLLC204を共有するコア0 206A、コア1 206B、…コアN 206Nまでを含むマルチコアプロセッサ202を含む。これとともに、プロセッサ202のリソースは、1または複数のクライアントにネットワークサービスを提供するように、クラウドサービスプロバイダ(CSP)のコンピューティングプラットフォームの一部として機能できる。例えば、図示のとおり、コア0、1、からNは、VM0 210A、VM1 210B、…VMN 210Nまでをサポートする。VM0 210Aは、VNFアプリケーション0 212A(仮想ネットワーク機能アプリケーション)と、ゲストOS0 214Aとをサポートする。同様に、VM1 210Bは、VNFアプリケーション1 212Bと、ゲストOS1 214Bとをサポートする。同様に、VMN 210N、はVNFアプリケーション 212Nと、ゲストOS N 214Nとをサポートする。動作時、仮想マシンはハイパーバイザ/VMM208を使用して起動および管理される。さらにシステムを管理するため、オペレーティングシステム214を呼び出すことが可能である。
いくつかの実施形態において、キャッシュ制御回路201は、ハイパーバイザ/VMM208と協働して、本明細書に記載のキャッシュ分割方式を実施する。
いくつかの実施形態において、キャッシュ監視回路203は、高優先度キャッシュラインのエビクションを生じる低優先度キャッシュフィル要求の割合等の、キャッシュアクセス要求に係る統計およびヒューリスティクスを維持する。キャッシュ監視回路203は、代替的にプロセッサ202に組み込まれることが可能であれば、破線で囲っていることで示されるように、任意のものである。いくつかの例において、コンピューティングシステム200はスタンドアロンコンピューティングプラットフォームであるが、別の例では、ネットワーク(図示せず)を介して別のコンピューティングプラットフォームに結合される。
いくつかの実施形態において、コンピューティングシステム200はデータセンタ内のノードであって、1または複数のVNFアプリケーションを個別に実行するVMをサポートする。同アプリケーションは、例えば、クラウドサービスプロバイダ、データベースネットワークサービス、ウェブサイトホスティングサービス、ルーティングネットワークサービス、eメールサービス、ファイアウォールサービス、ドメインネームサービス(DNS)、キャッシングサービス、ネットワークアドレストランスレーション(NAT)サービス、またはウイルススキャンネットワークサービスを含む。コンピューティングシステム200におけるVM210A〜210Nは、ハイパーバイザ/VMM208等の、ハイパーバイザまたは仮想マシンマネージャー(VMM)により管理または制御され得る。他の実施形態では、コンピューティングシステム200は、同一の物理的エンクロージャ、シャーシ、またはコンテナに収められた、各種上述のコンピューティングリソースを有する、より従来どおりのサーバとして構成されてよい。
いくつかの実施形態によると、仮想マシンは、物理コンピュータ同様、オペレーティングシステムおよびアプリケーションを実行するソフトウェアコンピュータである。一部の仮想マシンは、構成ファイルセットにより構成され、ホストの物理リソースにより補助される。また、ハイパーバイザまたはVMMは、仮想マシンを生成および管理する、コンピュータソフトウェア、ファームウェア、またはハードウェアである。ハイパーバイザが1または複数の仮想マシンを動作させるコンピュータを、ホストマシンと称し、各仮想マシンをゲストマシンと称する。ハイパーバイザまたはVMMは、仮想オペレーティングプラットフォームによりゲストオペレーティングシステムを提示し、ゲストオペレーティングシステムの実行を管理する。様々なオペレーティングシステムの多数のインスタンスが、仮想化ハードウェアリソースを共有し得る。例えば、Linux(登録商標)、Windows(登録商標)、macOS(登録商標)インスタンスはすべて、マルチコアを有する単一の物理プロセッサ上で動作可能である。
いくつかの例において、図2に示すように、コンピューティングシステム200に対するコンピューティングリソースの少なくとも一部は、共有ラストレベルキャッシュ(LLC)204を有するCPU/コア206A、206B、…206N等の、処理要素を含み得る。
LLC204は、いくつかの例において、プロセッサ202の外部にある。いくつかの例によると、共有LLC204は、アクセスレイテンシを最小限に抑えるため、CPU/コア206Aから206Nに対する共有LLCとして機能するため、比較的高速のアクセスメモリの種類であり得る。共有LLC204に含まれる比較的高速のアクセスメモリの種類は、揮発性または不揮発性メモリを含み得るがこれらに限定されない。揮発性メモリの種類は、スタティックランダムアクセスメモリ(SRAM)もしくはダイナミックランダムアクセスメモリ(DRAM)、サイリスタRAM(TRAM)、またはゼロキャパシタRAM(ZRAM)を含むことができるが、これらに限定されない。不揮発性メモリの種類は、カルコゲナイド相変化材料(例えばカルコゲナイドガラス)を含む3次元(3D)クロスポイントメモリ構造を有する、バイトまたはブロックアドレス指定可能な不揮発性メモリの種類(以下、「3Dクロスポイントメモリ」と呼ぶ)を含むことができるが、これらに限定されない。不揮発性メモリの種類はさらに、バイトまたはブロックアドレス指定可能な不揮発性メモリの他の種類を含み得る。この例として、多閾値NANDフラッシュメモリ、NORフラッシュメモリ、単一または複数相変化メモリ(PCM)、抵抗性メモリ、ナノワイヤメモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、メモリスタ技術を組み込んだ磁気抵抗ランダムアクセスメモリ(MRAM)、スピントランスファトルクMRAM(STT−MRAM)、または上記の任意の組み合わせが挙げられるが、これらに限定されない。
図3は、いくつかの実施形態に係る、例示的なLLCキャッシュ分割方式を示す。図示のように、方式300は、図2に示すようなコンピューティングシステム200の共有LLC204として使用可能な方式の一例である。ここでLLC304は、各キャッシュウェイ302が8つのキャッシュラインを含む、8ウェイセット結合キャッシュとして示されている。LLC304のキャッシュラインは一部が低優先度アプリケーション306に割り当てられ、一部が高優先度アプリケーション310に割り当てられ、一部が無効308である。説明を簡潔にするため、共有LLC354は、各ウェイが1つのキャッシュラインを含む、8ウェイセット結合キャッシュとして示されている。LLC354のキャッシュラインは一部が低優先度アプリケーション356に割り当てられ、一部が高優先度アプリケーション360に割り当てられ、一部が無効358である。図3に図示したものは、開示の実施形態を特定の構成に限定するものではない。別の方式は、より多くのまたはより少ないセット、セット内により多くのまたはより少ないウェイ、各ウェイ内により多くのまたはより少ないキャッシュラインなどを含んでもよい。例えば、LLC204は、各セットがM個のキャッシュラインを含む、Nウェイセット結合キャッシュであり得る。ここで、NおよびMは1以上の正の整数である。
動作時、さらに後述するように、LLC204は、LLCを共有するアプリケーションの必要に応じて、動的に再分割される。開示の実施形態の利点として、低優先度アプリケーションにより、高優先度アプリケーションに割り当てられたキャッシュラインのエビクションを最小限に抑えることを図る。
図4は、Flex−CATアルゴリズムのいくつかの実施形態に係る、キャッシュラインエビクションを示すブロック図である。開示の実施形態によると、Flex−CATはキャッシュセット粒度で優先度式キャッシュ分割を行うエビクションアルゴリズムである。図示のように、方式400は、優先度402の範囲内に入る優先度のアプリケーションを示す。円弧404、406、408は、要求元コアからの後続キャッシュラインで、キャッシュラインを満たす要求のために空きを作るためのキャッシュラインエビクションを示す。エビクション408等の一部のエビクションは、より低い優先度割り当てのエビクションにより、より高い優先度割り当てのための空きを作る。一部のエビクションは自己エビクションで、円弧406で示す(例えば、後続CLのために空きを作るため、最大ウェイ数を既に割り当てた優先度が自己エビクションする)。要求元の占有数が最大割り当てに達すると、Flex−CATはその他優先度エビクションよりも自己エビクションを優先し、パーティション境界内に留まるようにする。これら前2段階で対象が発見できない限定的状況では、Flex−CATは後続のキャッシュフィルの場所を作るため、HP CLをエビクションに選択する。Flex−CATは、エビクション408のようなLP CLのエビクションの最大化を図り、エビクション404のようなHP CLのエビクションの最小化を図る。
図5は、いくつかの実施形態に係る、キャッシュフィル要求に応じてキャッシュ制御回路で実行される処理を示すブロックフロー図である。例えば、図2のキャッシュ制御回路(CCC)201によりフロー500が実行可能である。図示のとおり、501においてフロー500が開始し、CCCは、要求元優先度を有する後続のキャッシュフィル要求を要求元から受信するものとする。例えば、要求元は図2のコア206A、206B、…206Nまでのうちの1つであり得、図1のメモリ115等のメモリから、後続キャッシュラインが取得可能である。要求元優先度は、要求元コア内で動作するアプリケーションに割り当てられた優先度を反映可能である。動作502において、CCCは、LLC内に無効キャッシュライン(CL)が1つでも存在するかを判定するものとする。存在する場合、動作504において、CCCは、無効キャッシュラインの格納場所に後続CLを書き込むものとし、505において格納場所が発見されるとフローが終了する。しかし、動作502において無効CLが存在しないと示されると、506においてCCCは、システム内の各優先度について、優先度(P)と、優先度P(LRUp)を有するLRU CLのインデックスと、LRUpの経過時間と、優先度が占めるウェイ数とを決定するものとする。動作508において、CCCは、要求元優先度(P)が最低優先度であるかを判定するものとする。最低優先度である場合、CCCは動作510において、要求元優先度(O[P])の占有数が0に等しいかを判定するものとする。等しい場合、フローは動作524に進む。ここでは、後続CL(P)のために空きを作るため、より高い優先度CL(P)がエビクションされる。
動作524は、より低い優先度キャッシュラインのために空きを作るため、高優先度キャッシュラインがエビクションされる状況を示す。これは、上述の場合を除き、開示の実施形態が可能な限り避けることを図る状況である。いくつかの実施形態において、図2のキャッシュ監視回路203等のキャッシュ監視回路は、動作524のインスタンスを含む、キャッシュフィル要求へのヒューリスティクス追跡応答を維持する。いくつかの実施形態において、CCCはヒューリスティクスを監視し、必要に応じて、各優先度に割り当てられた最小および最大ウェイ数を動的に調整する。これにより、最終的に動作524につながるような、より低い優先度のアプリケーションのエビクションに対するより高い優先度アプリケーションの積極性を調節する。いくつかの実施形態において、キャッシュ監視回路203はLLCを再分割させる。またはいくつかの実施形態において、動作524の発生等の維持されたヒューリスティクスが所定の閾値を超える場合、キャッシュ監視回路は各種優先度に関連付けられたウェイの境界を調整させる。例えば、高優先度アプリケーションに割り当てられたウェイ数を、動作524の繰り返し実行につながるような、低優先度アプリケーションの繰り返し、積極的、および完全なエビクションを低減するように、低減可能である。CCCが動作510において要求元占有数が0ではないと判定すると、CCCは動作514において、要求元優先度の、最も長く使われていないCLをエビクションするものとする。
動作508に戻ると、CCCは要求元優先度が最低優先度ではないと判定すると、CCCは動作512において、要求元優先度の占有数が最大かを判定するものとする。最大であれば、CCCは動作514において、要求元優先度の、最も長く使われていないCLをエビクションするものとする。動作515において格納場所が発見されるとフローは終了する。
動作512に戻ると、CCCは要求元優先度の占有数が最大でないと判定すると、CCCは動作516において、要求元優先度の占有数が最大未満で、要求元優先度に対する最小以上であるかを判定する。そうであれば、フローは動作518に移行し、そうでなければ、フローは動作520に移行する。動作518において、CCCは要求元優先度(P)またはより低い優先度(P)に等しい優先度を有するLRU CLをエビクションするものとし、519において格納場所が発見されるとフローは終了する。動作520において、CCCは要求元優先度よりも低い優先度のLRU CLのエビクションを試みる。そのようなラインがあれば、522での格納場所はNULL以外と判定され、フローは523に移行し、ここで格納場所が発見されるとフローは終了する。そのようなCLがなければ、522での格納場所はNULLに等しくなり、フローは動作524に移行し、要求元優先度よりも高い優先度を有するLRU CLをエビクションする。そして、525において格納場所が発見されるとフローは終了する。
図6は、いくつかの実施形態に係る、キャッシュフィル要求を処理するキャッシュ制御回路(CCC)により実行される方法を示すフロー図である。例えば、フロー600は図2のキャッシュ制御回路(CCC)201により実行可能である。図示のように、動作605においてCCCは、複数の優先度のうちのある要求元優先度を有する後続キャッシュライン(CL)を、ラストレベルキャッシュ(LLC)に格納する要求を受信するものとする。動作610において、LLCに無効キャッシュライン(CL)が存在すると、後続キャッシュライン(CL)は無効CLに格納される。動作615において、要求元優先度が、複数の優先度のうち最低で、1または複数である占有数を有する、または、要求元優先度に対して占有数が最大である場合、要求元優先度の最も長く使われていない(Least Recently Used:LRU)CLの代わりに、後続CLが格納される。動作620において、占有数が要求元優先度について最大と最小の間である場合、要求元優先度またはそれより低い優先度のLRU CLの代わりに後続CLが格納される。動作625において、占有数が最小未満で、より低い優先度を有するCLが存在する場合、より低い優先度を有するLRU CLの代わりに後続CLが格納される。動作630において、無効CL、または要求元優先度またはそれより低い優先度を有するCLが存在しない場合、より高い優先度のLRU CLの代わりに後続CLが格納される。
[命令セット]
命令セットは、1または複数の命令のフォーマットを含んでよい。所与の命令形式は、とりわけ、行われるべき演算(例えば、オペコード)およびその演算が行われるべきオペランド(複数可)を指定するための様々なフィールド(例えば、ビット数、ビットの位置)および/または他のデータフィールド(複数可)(例えば、マスク)を決定し得る。いくつかの命令フォーマットは、命令テンプレート(またはサブフォーマット)の定義により更に分類される。例えば、特定の命令フォーマットの命令テンプレートは、命令フォーマットのフィールドの異なるサブセットを有するように定義されてよく(含まれるフィールドは通常、同一順序であるが、少なくともいくつかは、含まれるフィールド数がより少ないので、異なるビット位置を有する)、および/または、異なって解釈される特定のフィールドを有するように定義されてよい。故に、ISAの各命令は、特定の命令フォーマット(また、定義されている場合には、その命令フォーマットの命令テンプレートのうちの特定の1つにおいて)を使用して表現され、演算およびオペランドを指定するためのフィールドを含む。例えば、例示的なADD命令は、特定のオペコードならびにそのオペコードを指定するためのオペコードフィールドおよびオペランド(ソース1/デスティネーション/ソース2)を選択するためのオペランドフィールドを含む命令フォーマットを有する。命令ストリーム内にこのADD命令が出現すると、特定のオペランドを選択するオペランドフィールド内に特定の内容を有することになる。アドバンストベクトル拡張(AVX)(AVX1およびAVX2)と称され、ベクトル拡張(VEX)コーディングスキームを使用する一連のSIMD拡張機能がリリースおよび/または公開されている(例えば、2014年9月のインテル(登録商標)64およびIA−32アーキテクチャソフトウェアデベロッパーズマニュアルならびに2014年10月のインテル(登録商標)アドバンストベクトル拡張プログラミングリファレンスを参照)。
[例示的な命令フォーマット]
本明細書で説明される命令の実施形態は、異なるフォーマットで具現化されてよい。 さらに、例示的システム、アーキテクチャ、およびパイプラインが以下に詳述される。命令の複数の実施形態は、このような複数のシステム、複数のアーキテクチャおよび複数のパイプライン上で実行されてよいが、これらの詳細に限定されるものではない。
[汎用ベクトル向け命令フォーマット]
ベクトル向け命令フォーマットとは、ベクトル命令に適した命令フォーマットのことである(例えば、ベクトル演算に特有の特定のフィールドが存在する)。ベクトル演算およびスカラ演算の両方を、ベクトル向け命令フォーマットを介してサポートする実施形態を説明するが、代替として、ベクトル向け命令フォーマットによりベクトル演算のみを用いる実施形態もある。
図7Aおよび図7Bは、本発明のいくつかの実施形態に係る、汎用ベクトル向け命令フォーマットおよびその命令テンプレートを示すブロック図である。図7Aは、本発明のいくつかの実施形態に係る汎用ベクトル向け命令フォーマットおよびそのクラスA命令テンプレートを示すブロック図であり、これに対し、図7Bは、本発明のいくつかの実施形態に係る汎用ベクトル向け命令フォーマットおよびそのクラスB命令テンプレートを示すブロック図である。具体的には、クラスAおよびクラスB命令テンプレートに対して定義される汎用ベクトル向け命令フォーマット700は、どちらのクラスも、非メモリアクセス705の命令テンプレートおよびメモリアクセス720の命令テンプレートを含む。ベクトル向け命令フォーマットの文脈において汎用という用語は、いかなる特定の命令セットにも結び付けられていない命令フォーマットに関連する。
本発明の実施形態が説明されるが、ここでベクトル向け命令フォーマットは以下のものをサポートする。つまり、32ビット(4バイト)または64ビット(8バイト)データ要素幅(またはサイズ)を有する64バイトベクトルオペランド長(またはサイズ)(したがって、64バイトベクトルは、ダブルワードサイズの16個の要素、または代わりにクワッドワードサイズの8個の要素で構成される)と、16ビット(2バイト)または8ビット(1バイト)データ要素幅(またはサイズ)を有する64バイトベクトルオペランド長(またはサイズ)と、32ビット(4バイト)、64ビット(8バイト)、16ビット(2バイト)、または8ビット(1バイト)データ要素幅(またはサイズ)を有する32バイトベクトルオペランド長(またはサイズ)と、32ビット(4バイト)、64ビット(8バイト)、16ビット(2バイト)、または8ビット(1バイト)データ要素幅(またはサイズ)を有する16バイトベクトルオペランド長(またはサイズ)である。代替的な実施形態は、より大きいデータ要素幅、より小さいデータ要素幅、または異なるデータ要素幅(例えば、128ビット(16バイト)データ要素幅)を有する、より大きいベクトルオペランドサイズ、より小さいベクトルオペランドサイズ、および/または異なるベクトルオペランドサイズ(例えば、256バイトベクトルオペランド)をサポートしてよい。
図7A中のクラスA命令テンプレートは、1)非メモリアクセス705命令テンプレート内に示される、非メモリアクセスフルラウンド制御タイプ演算710命令テンプレート、および非メモリアクセスデータ変換タイプ演算715命令テンプレート、ならびに2)メモリアクセス720命令テンプレート内に示されるメモリアクセス一時的725命令テンプレート、およびメモリアクセス非一時的730命令テンプレートを含む。図7B中のクラスB命令テンプレートは、1)非メモリアクセス705命令テンプレート内に示される、非メモリアクセス書き込みマスク制御パーシャルラウンド制御タイプ演算712命令テンプレート、および非メモリアクセス書き込みマスク制御VSIZEタイプ演算717命令テンプレート、ならびに2)メモリアクセス720命令テンプレート内に示される、メモリアクセス書き込みマスク制御727命令テンプレートを含む。
汎用ベクトル向け命令フォーマット700は、以下に示されるフィールドを図7Aおよび図7Bに示される順序で含む。
フォーマットフィールド740−このフィールド内の特定の値(命令フォーマット識別子値)は、ベクトル向け命令フォーマット、したがって命令ストリーム内のベクトル向け命令フォーマット内の命令の出現を一意に識別する。したがって、このフィールドは、汎用ベクトル向け命令フォーマットのみを有する命令セットには必要ないという意味で任意選択的である。
ベース演算フィールド742:その内容により、異なるベース演算を識別する。
レジスタインデックスフィールド744:その内容により、ソースオペランドおよびデスティネーションオペランドがレジスタ内にあるか、メモリ内にあるかに関わらず、それらの位置を直接に、または、アドレス生成を通して指定する。これらは、P×Q(例えば、32×512、16×128、32×1024、64×1024)個のレジスタファイルからN個のレジスタを選択するための十分なビット数を含む。一実施形態において、Nが、最大3個までのソースおよび1つのデスティネーションレジスタであり得るが、代替的な実施形態は、より多くのまたはより少ないソースおよびデスティネーションレジスタをサポートしてよい(例えば、最大2個までのソースをサポートしてよく、その場合、これらのソースの1つがデスティネーションとしても機能し、最大3個までのソースをサポートしてよく、その場合、これらのソースのうちの1つがデスティネーションとしても機能し、最大2個までのソースおよび1つのデスティネーションをサポートしてよい)。
修飾子フィールド746:その内容により、汎用ベクトル命令フォーマットにおけるメモリアクセスを指定する命令の出現を、メモリアクセスを指定しない命令から区別する。すなわち、非メモリアクセス705命令テンプレートと、メモリアクセス720命令テンプレートとの間を区別する。メモリアクセス動作はメモリ階層に対し、読み取りおよび/または書き込みを行う(場合によっては、レジスタ内の値を使用してソースアドレスおよび/またはデスティネーションアドレスを指定する)が、非メモリアクセス動作はそれを行わない(例えば、ソースおよびデスティネーションはレジスタである)。また、一実施形態において、このフィールドは、メモリアドレス計算を実行するために3つの別々の方法から選択をするが、代替的な実施形態によっては、メモリアドレス計算の実行のために、より多い、より少ない、または異なる方法をサポートしてよい。
拡張演算フィールド750:その内容により、ベース演算に加え、様々な異なる演算のうちのいずれが実行されるかを区別する。このフィールドは、コンテキストに特有のものである。いくつかの実施形態において、このフィールドは、クラスフィールド768、アルファフィールド752およびベータフィールド754に分割される。拡張演算フィールド750は、共通の演算グループを、2つ、3つ、または4つの命令ではなく、単一の命令で行うことを可能にする。
スケールフィールド760:その内容により、メモリアドレス生成のために(例えば、2scale*インデックス+ベースを使用するアドレス生成のために)インデックスフィールドの内容のスケーリングを可能にする。
変位フィールド762A:その内容は、メモリアドレス生成(例えば、2scale*インデックス+ベース+変位を用いるアドレス生成のための)の一部として用いられる。
変位係数フィールド762B(変位係数フィールド762Bの直接上に変位フィールド762Aが併置されていることは、一方または他方が用いられることを示すことに留意されたい):その内容は、アドレス生成の一部として用いられ、それは、メモリアクセス(N)のサイズによりスケーリングされるべき変位係数を指定する。ここで、Nは、メモリアクセスにおけるバイト数である(例えば、2scale*インデックス+ベース+スケーリングされた変位を用いるアドレス生成のための)。冗長下位ビットは無視され、したがって、変位係数フィールドの内容は、有効アドレスの計算に使用される最終的な変位を生成すべく、メモリオペランドの合計サイズ(N)によって乗算される。Nの値は、フルオペコードフィールド774(後に本明細書で説明される)およびデータ操作フィールド754Cに基づいて、実行時にプロセッサハードウェアによって決定される。変位フィールド762Aおよび変位係数フィールド762Bは、非メモリアクセス705の命令テンプレートに使用されない、および/または異なる実施形態は、これら2つのうちの1つだけを実装することができる、または全く実装しない場合がある、という意味で任意選択的である。
データ要素幅フィールド764:その内容により、複数のデータ要素幅のいずれが用いられるかを区別する(いくつかの実施形態においては、すべての命令について、他の実施形態においては、命令のうちの一部のみについて)。このフィールドは、ただ1つのデータ要素幅がサポートされるおよび/またはデータ要素幅がオペコードのいくらかの態様を使用してサポートされる場合に、それが必要とされないという意味において任意選択的である。
書き込みマスクフィールド770:その内容により、データ要素位置ベースごとに、デスティネーションベクトルオペランド内のそのデータ要素位置が、ベース演算および拡張演算の結果を反映するか否かを制御する。クラスA命令テンプレートは、マージ書き込みマスクをサポートする一方で、クラスB命令テンプレートは、マージ書き込みマスクおよびゼロ化書き込みマスクの両方をサポートする。マージの場合、ベクトルマスクは、(ベース演算および拡張演算によって指定される)任意の演算の実行中、デスティネーション内のあらゆる要素セットが更新されないように保護されることを可能にする。他の一実施形態においては、対応するマスクビットが0を有する場合、デスティネーションの各要素の古い値が保持される。これと対照的に、ゼロ化の場合、ベクトルマスクは、(ベース演算および拡張演算によって指定される)任意の演算の実行中、デスティネーション内のあらゆる要素セットがゼロ化されることを可能にする。一実施形態においては、対応するマスクビットが0値を有する場合、デスティネーションの要素は0に設定される。この機能のサブセットは、実行される動作のベクトル長(すなわち、最初のものから最後のものまで、要素が変更されるスパン)を制御する能力であるが、変更される要素は連続的であることは必要ではない。故に、書き込みマスクフィールド770は、ロード、格納、算術、論理等を含む部分的なベクトル演算を可能にする。本発明の実施形態は、書き込みマスクフィールド770の内容は、複数の書き込みマスクレジスタのうち使用されるべき書き込みマスクを含むものを選択(故に、書き込みマスクフィールド770の内容により、実行されるべきマスキングを間接的に識別する)するように記載されているものの、代替的な実施形態は、代替的または追加的に、書き込みマスクフィールド770の内容が、実行されるべきマスキングを直接指定することを可能にする。
即値フィールド772:その内容により、即値の指定を可能にする。このフィールドは、即値をサポートしない汎用ベクトル向けフォーマットの実装では存在せず、即値を用いない複数の命令に存在しないという意味で、任意選択的である。
クラスフィールド768:その内容により、異なるクラスの命令間を区別する。図7Aおよび図7Bを参照すると、このフィールドの内容は、クラスA命令およびクラスB命令間を選択する。図7Aおよび図7Bにおいて、角に丸みのある四角は、特定の値がフィールドに存在することを示すために使用される(例えば、図7Aおよび図7Bにおいて、クラスフィールド768について、それぞれ、クラスA 768AおよびクラスB 768B)。
[クラスAの命令テンプレート]
クラスAの非メモリアクセス705命令テンプレートの場合、アルファフィールド752はRSフィールド752Aとして解釈され、その内容により、異なる拡張演算タイプのうちのいずれが実行されるか(例えば、ラウンド752A.1およびデータ変換752A.2が、非メモリアクセスラウンドタイプ演算710および非メモリアクセスデータ変換タイプ演算715命令テンプレートのそれぞれに対し指定される)を区別する一方、ベータフィールド754により、指定されたタイプの演算のうちのいずれが実行されるかを区別する。非メモリアクセス705命令テンプレートには、スケールフィールド760、変位フィールド762Aおよび変位係数フィールド762Bは存在しない。
[非メモリアクセス命令テンプレート−フルラウンド制御タイプ演算]
非メモリアクセスフルラウンド制御タイプ演算710命令テンプレートでは、ベータフィールド754がラウンド制御フィールド754Aとして解釈され、その内容が静的ラウンディングを提供する。本発明に記載の実施形態においては、ラウンド制御フィールド754Aは、すべての浮動小数点の例外を抑制(Suppress All floating−point Exceptions:SAE)フィールド756およびラウンド演算制御フィールド758を含み、一方で、代替的な実施形態は、これら両方の概念を同一フィールドに符号化してよく、または代替的な実施形態はこれらの概念/フィールドのうちの一方または他方のみを有してよい(例えば、ラウンド演算制御フィールド758のみを有してよい)。
SAEフィールド756:その内容により、例外イベント報告を無効にするか否かを区別する。SAEフィールド756の内容が、抑制が有効になっていることを示す場合、特定の命令は、あらゆる種類の浮動小数点例外フラグを報告せず、浮動小数点例外ハンドラを発生させない。
ラウンド演算制御フィールド758:その内容により、一群のラウンド演算(例えば、切り上げ、切り捨て、ゼロへのラウンド、および近似値へのラウンド)のうちのいずれが実行されるかを区別する。故に、ラウンド演算制御フィールド758は、命令単位で、ラウンドモードの変更を可能にする。プロセッサがラウンドモードを指定するための制御レジスタを含む場合のいくつかの実施形態において、ラウンド演算制御フィールド750の内容で、そのレジスタ値を上書きする。
[非メモリアクセス命令テンプレート−データ変換タイプ演算]
非メモリアクセスのデータ変換タイプ演算715命令テンプレートでは、ベータフィールド754はデータ変換フィールド754Bとして解釈され、データ変換フィールド754Bの内容により、複数のデータ変換(例えば、データ変換なし、スウィズル、ブロードキャスト)のうちいずれが実行されるかを区別する。
クラスAのメモリアクセス720命令テンプレートの場合において、アルファフィールド752は、エビクションヒントフィールド752Bとして解釈され、その内容により、エビクションヒントのうちのいずれが用いられるべきかを区別し(図7Aにおいて、一時的752B.1および非一時的752B.2が、それぞれ、メモリアクセス一時的725命令テンプレートおよびメモリアクセス非一時的730命令テンプレートについて指定される)、一方でベータフィールド754は、データ操作フィールド754Cとして解釈され、その内容により、複数のデータ操作の動作(プリミティブとしても知られる)のうちいずれが実行されるか(例えば、操作なし、ブロードキャスト、ソースのアップコンバージョン、およびデスティネーションのダウンコンバージョン)を区別する。メモリアクセス720命令テンプレートは、スケールフィールド760を含み、任意で変位フィールド762Aまたは変位係数フィールド762Bを含む。
ベクトルメモリ命令は、変換サポートにより、メモリからのベクトルロードおよびメモリへのベクトルストアを実行する。通常のベクトル命令の場合と同様、ベクトルメモリ命令は、データ要素全体でデータをメモリから/メモリへ転送し、実際に転送される要素は、書き込みマスクとして選択されるベクトルマスクの内容によって記述されている。
[メモリアクセス命令テンプレート:一時的]
一時的データとは、キャッシングによる恩恵を得るのに十分早く再使用される可能性が高いデータである。しかしながら、これはヒントであり、異なるプロセッサが、ヒントを完全に無視することを含む、異なる方法でそれを実装することができる。
[メモリアクセス命令テンプレート:非一時的]
非一時的データとは、第1レベルキャッシュ内にキャッシュすることによる恩恵を得るのに十分早く再使用される可能性が低いデータであり、これにはエビクションの優先度が与えられるべきである。しかしながら、これはヒントであり、異なるプロセッサが、ヒントを完全に無視することを含む、異なる方法でそれを実装することができる。
[クラスBの命令テンプレート]
クラスBの命令テンプレートの場合、アルファフィールド752は、書き込みマスク制御(Z)フィールド752Cとして解釈され、書き込みマスク制御(Z)フィールド752Cの内容により、書き込みマスクフィールド770により制御される書き込みマスキングが、マージングであるべきかゼロ化であるべきかを区別する。
クラスBの非メモリアクセス705命令テンプレートの場合、ベータフィールド754の一部はRLフィールド757Aとして解釈され、その内容により、異なる拡張演算タイプのうちのいずれが実行されるかを区別する(例えば、ラウンド757A.1およびベクトル長(VSIZE)757A.2が、非メモリアクセス書き込みマスク制御パーシャルラウンド制御タイプ演算712命令テンプレートおよび非メモリアクセス書き込みマスク制御VSIZEタイプ演算717命令テンプレートにそれぞれ指定される)一方、ベータフィールド754の残部により、指定されたタイプの演算のうちいずれが実行されるかを区別する。非メモリアクセス705命令テンプレートには、スケールフィールド760、変位フィールド762Aおよび変位係数フィールド762Bは存在しない。
非メモリアクセス書き込みマスク制御パーシャルラウンド制御タイプ演算712命令テンプレートでは、ベータフィールド754の残部はラウンド演算フィールド759Aとして解釈され、例外イベント報告が無効にされる(特定の命令は、あらゆる種類の浮動小数点例外フラグを報告せず、浮動小数点例外ハンドラを発生させない)。
ラウンド演算制御フィールド759A:ラウンド演算制御フィールド758と同様に、その内容により、一群のラウンド演算のうちのいずれが実行されるかを区別する(例えば、切り上げ、切り捨て、ゼロへのラウンド、および近似値へのラウンド)。故に、ラウンド演算制御フィールド759Aは、命令単位で、ラウンドモードの変更を可能にする。いくつかの実施形態において、プロセッサがラウンドモードを指定するための制御レジスタを含む場合、ラウンド演算制御フィールド750の内容で、そのレジスタ値を上書きする。
非メモリアクセス書き込みマスク制御VSIZEタイプ演算717命令テンプレートでは、ベータフィールド754の残部はベクトル長フィールド759Bとして解釈され、ベクトル長フィールド759Bの内容により、複数のデータベクトル長(例えば、128、256または512バイト)のうちのいずれで実行されるかを区別する。
クラスBのメモリアクセス720命令テンプレートの場合において、ベータフィールド754の一部は、ブロードキャストフィールド757Bとして解釈され、その内容により、ブロードキャストタイプデータ操作の動作が実行されるか否かを区別し、一方でベータフィールド754の残部は、ベクトル長フィールド759Bとして解釈される。メモリアクセス720命令テンプレートは、スケールフィールド760を含み、任意で変位フィールド762Aまたは変位係数フィールド762Bを含む。
汎用ベクトル向け命令フォーマット700に関しては、フルオペコードフィールド774は、フォーマットフィールド740、ベース演算フィールド742およびデータ要素幅フィールド764を含むように示されている。フルオペコードフィールド774がこれらのフィールドのすべてを含む一実施形態が示されるが、該フィールドのすべてをサポートしない実施形態において、フルオペコードフィールド774は、該フィールドのすべてよりも少ないフィールドを含む。フルオペコードフィールド774は、演算コード(オペコード)を提供する。
拡張演算フィールド750、データ要素幅フィールド764、および書き込みマスクフィールド770は、これらの特徴が汎用ベクトル向け命令フォーマットにおいて命令ごとの単位で指定されることを可能とする。
書き込みマスクフィールドとデータ要素幅フィールドの組み合わせは、それらが異なるデータ要素幅に基づいてマスクが適用されることを可能にするという点で、型付き命令を形成する。
クラスAおよびクラスB内で見つかる様々な命令テンプレートは、異なる状況において有益である。本発明のいくつかの実施形態において、あるプロセッサ内の異なる複数のプロセッサまたは異なるコアが、クラスAのみ、クラスBのみ、またはこれら両方のクラスをサポートしてよい。例えば、汎用コンピューティング向け高性能汎用アウトオブオーダコアはクラスBのみをサポートしてよく、主にグラフィックおよび/または科学(スループット)コンピューティング向けのコアはクラスAのみをサポートしてよく、これら両方向けのコアは両方をサポートしてよい(もちろん、両方のクラスのテンプレートおよび命令の何らかの組み合わせを有するものの、両方のクラスのすべてのテンプレートおよび命令を有してはいないコアは、本発明の範囲に属する)。また、単一のプロセッサが複数のコアを含んでよく、それらのすべてが同一クラスをサポートし、またはそれらのうち異なるコアが異なるクラスをサポートする。例えば、別個のグラフィックコアおよび汎用コアを有するプロセッサにおいて、主にグラフィックおよび/または科学コンピューティング用のグラフィックコアのうちの1つは、クラスAのみをサポートし得るが、汎用コアのうちの1または複数は、クラスBのみをサポートする汎用コンピューティング用のアウトオブオーダ実行およびレジスタリネームを用いる高性能汎用コアであり得る。別個のグラフィックコアを持たない別のプロセッサは、クラスAおよびクラスBの両方をサポートする1以上の汎用インオーダまたはアウトオブオーダコアを含んでよい。もちろん、本発明の異なる実施形態において、一方のクラスに属する諸機能が、他方のクラスに実装されてもよい。高水準言語で記述される複数のプログラムは、1)実行のためにターゲットプロセッサによってサポートされるクラスの命令のみを有する形式、または2)全クラスの複数の命令の異なる組み合わせを用いて記述される代替的な複数のルーチンを有し、コードを現在実行しているプロセッサによってサポートされる複数の命令に基づいて実行する、複数のルーチンを選択する制御フローコードを有する形式を含む、様々な異なる実行可能な形式にされる(例えば、ジャストインタイムでコンパイルされ、または静的にコンパイルされる)。
[例示的な特定ベクトル向け命令フォーマット]
図8Aは、本発明のいくつかの実施形態に係る、例示的な特定ベクトル向け命令フォーマットを示すブロック図である。図8Aは、特定ベクトル向け命令フォーマット800を示し、これは位置、サイズ、解釈、およびフィールドの順序、ならびにこれらのフィールドのいくつかに対する値を指定するという点で特定のものである。特定ベクトル向け命令フォーマット800は、x86命令セットを拡張するために使用されてよく、よって、当該フィールドのうちのいくつかは、既存のx86命令セットおよびその拡張(例えば、AVX)で使用されるフィールドと類似または同一である。このフォーマットは、いくつかの拡張を備えた既存のx86命令セットのプレフィクス符号化フィールド、リアルオペコードバイトフィールド、MOD R/Mフィールド、SIBフィールド、変位フィールドおよび即値フィールドと、整合性が維持されている。図8Aからのフィールドがマッピングされる図7Aまたは図7Bからのフィールドが例示される。
本発明の実施形態は、例示目的で、汎用ベクトル向け命令フォーマット700に照らし特定ベクトル向け命令フォーマット800に関し説明されているものの、本発明は特許請求される場合を除き、特定ベクトル向け命令フォーマット800には限定されないことを理解されたい。例えば、特定ベクトル向け命令フォーマット800は特定のサイズのフィールドを有するように示されているものの、汎用ベクトル向け命令フォーマット700は、様々なフィールドについて様々な考え得るサイズを想定している。特定の実施例として、データ要素幅フィールド764は、特定ベクトル向け命令フォーマット800で1ビットフィールドとして示されるが、本発明を限定するものではない(すなわち、汎用ベクトル向け命令フォーマット700は、他のサイズのデータ要素幅フィールド764を想定している)。
特定ベクトル向け命令フォーマット800は、図8Aに示された順序で下記に列挙された以下のフィールドを含む。
EVEXプレフィクス(バイト0−3)802。これは4バイト形式で符号化される。
フォーマットフィールド740(EVEXバイト0、ビット[7:0])。第1のバイト(EVEXバイト0)はフォーマットフィールド740であり、フォーマットフィールド740は0×62を含む(いくつかの実施形態において、ベクトル向け命令フォーマットを区別するために使用される一意の値)。
第2〜第4バイト(EVEXバイト1−3)は、特定の機能を提供する複数のビットフィールドを含む。
REXフィールド805(EVEXバイト1、ビット[7−5]):EVEX.Rビットフィールド(EVEXバイト1、ビット[7]−R)、EVEX.Xビットフィールド(EVEXバイト1、ビット[6]−X)、およびEVEX.Bビットフィールド(EVEXバイト1、ビット[5]−B)で構成される。EVEX.Rビットフィールド、EVEX.XビットフィールドおよびEVEX.Bビットフィールドは、対応するVEXビットフィールドと同一の機能を提供し、それらは1の補数形式を使用して符号化され、すなわちZMM0は1111Bとして符号化され、ZMM15は0000Bとして符号化される。命令の他のフィールドは、当技術分野で知られているように、レジスタインデックスの下位3ビット(rrr、xxx、およびbbb)を符号化するので、EVEX.R、EVEX.X、およびEVEX.Bを追加することによって、Rrrr、Xxxx、およびBbbbを形成することができる。
REX'810A:これはREX'フィールド810の第1の部分であり、拡張32レジスタセットの上位16または下位16のいずれかを符号化するために使用されるEVEX.R'ビットフィールド(EVEXバイト1、ビット[4]−R')である。いくつかの実施形態において、以下に示される他のものと共にこのビットは、ビット反転フォーマットで格納され、BOUND命令から区別(周知のx86の32ビットモードで)される。BOUND命令のリアルオペコードバイトは62であるが、MOD R/Mフィールド(後述)内では、MODフィールドの値11を受け付けない。本発明の代替的な実施形態は、このビットおよび後述される他のビットを反転フォーマットで格納しない。下位16個のレジスタを符号化するのに値1が使用される。換言すると、EVEX.R'、EVEX.Rおよび他のフィールドの他のRRRを組み合わせて、R'Rrrrが形成される。
オペコードマップフィールド815(EVEXバイト1、ビット[3:0]−mmmm):その内容により、示唆される先頭オペコードバイト(0F、0F38、または0F3)を符号化する。
データ要素幅フィールド764(EVEXバイト2、ビット[7]−W)は、EVEX.Wという表記で表される。EVEX.Wはデータタイプ(32ビットデータ要素または64ビットデータ要素)の粒度(サイズ)を規定するために使用される。
EVEX.vvvvフィールド820(EVEXバイト2、ビット[6:3]−vvvv)。EVEX.vvvvの役割は以下を含んでよい。1)EVEX.vvvvは第1のソースレジスタオペランドを指定された反転(1の補数)形式に符号化し、EVEX.vvvvは2またはそれより多いソースオペランドを持つ命令に対し有効である。2)EVEX.vvvvはデスティネーションレジスタオペランドを、特定のベクトルシフト用の指定された1の補数形式に符号化する。または3)EVEX.vvvvはいずれのオペランドも符号化せず、当該フィールドは予約され、1111bを含むべきである。したがって、EVEX.vvvvフィールド820は、反転形式(1の補数)で格納された第1のソースレジスタ指定子の4つの下位ビットを符号化する。命令に応じて、追加の異なるEVEXビットフィールドを使用して、指定子サイズを32個のレジスタに拡張する。
EVEX.U 768クラスフィールド(EVEXバイト2、ビット[2]−U):EVEX.U=0の場合、それはクラスAまたはEVEX.U0を示す。EVEX.U=1の場合、それはクラスBまたはEVEX.U1を示す。
プレフィクス符号化フィールド825(EVEXバイト2、ビット[1:0]−pp):ベース演算フィールドの追加的なビットを提供する。EVEXプレフィクスフォーマットにおけるレガシSSE命令のサポートの提供に加え、これはまた、SIMDプレフィクスのコンパクト化の利点を有する(SIMDプレフィクスを表すために1バイトを要求する代わりに、EVEXプレフィクスは2ビットのみを要求する)。一実施形態において、レガシフォーマットおよびEVEXプレフィクスフォーマットの両方において、SIMDプレフィクス(66H、F2H、F3H)を使用するレガシSSE命令をサポートすべく、これらのレガシSIMDプレフィクスは、SIMDプレフィクス符号化フィールドに符号化される。これらのレガシSIMDプレフィクスは、デコーダのPLAに提供される前に、ランタイムにレガシSIMDプレフィクスに拡張される(よって、PLAは、変更なしで、これらのレガシ命令のレガシフォーマットおよびEVEXフォーマットの両方を実行可能である)。より新しい命令はEVEXプレフィクス符号化フィールドの内容を直接オペコード拡張として使用できるものの、特定の実施形態は、整合性のために同様の方法で拡張させるが、これらのレガシSIMDプレフィクスによって指定される異なる手段を可能にする。代替的な実施形態は、2ビットSIMDプレフィクス符号化をサポートするようにPLAを再設計することができ、したがって、拡張を必要としない。
アルファフィールド752(EVEXバイト3、ビット[7]−EH。EVEX.EH、EVEX.rs、EVEX.RL、EVEX.書き込みマスク制御、およびEVEX.Nとしても知られる。またαと示される):先に記載したように、このフィールドはコンテキストに特有のものである。
ベータフィールド754(EVEXバイト3、ビット[6:4]−SSS。EVEX.S2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLBとしても知られる。またβββと示される):先に記載したように、このフィールドは、コンテキストに特有のものである。
REX'810B。これはREX'フィールド810の残部であり、拡張された32個のレジスタセットの上位16個または下位16個のいずれかを符号化するために使用され得るEVEX.V'ビットフィールド(EVEXバイト3、ビット[3]V')である。このビットは、ビット反転フォーマットで格納される。下位16個のレジスタを符号化するのに値1が使用される。換言すると、EVEX.V'、EVEX.vvvvを組み合わせることにより、V'VVVVが形成される。
書き込みマスクフィールド770(EVEXバイト3、ビット[2:0]−kkk):その内容により、前述のとおり、書き込みマスクレジスタにおけるレジスタのインデックスを指定する。いくつかの実施形態において、特定の値EVEX.kkk=000は、特定の命令について書き込みマスクが使用されないことを暗示する特別な動作を有する(これは、すべて1にハードワイヤードされた書き込みマスクの使用またはマスキングハードウェアを迂回するハードウェアの使用を含む、様々な方法で実装されてよい)。
リアルオペコードフィールド830(バイト4)は、オペコードバイトとしても知られる。オペコードの一部が、このフィールドにおいて指定される。
MOD R/Mフィールド840(バイト5)は、MODフィールド842、Regフィールド844およびR/Mフィールド846を含む。上記のとおり、MODフィールド842の内容により、メモリアクセス動作および非メモリアクセス動作間を区別する。Regフィールド844の役割は、デスティネーションレジスタオペランドもしくはソースレジスタオペランドのいずれかを符号化すること、または、オペコード拡張として扱われ、命令オペランドを符号化するために使用されないこと、という2つの状況に要約できる。R/Mフィールド846の役割としては、メモリアドレスを参照する命令オペランドを符号化すること、またはデスティネーションレジスタオペランドもしくはソースレジスタオペランドのいずれかを符号化することが含まれてよい。
スケール、インデックス、ベース(SIB)バイト850(バイト6)は、スケールに関するSS852を含む。先に記載したように、スケールフィールド760は、メモリアドレス生成に使用される。SIB.xxx854およびSIB.bbb856。これらのフィールドの内容は、レジスタインデックスXxxxおよびBbbbに関して記載済みである。
変位フィールド762A(バイト7−10):MODフィールド842が10を含む場合、バイト7−10は、変位フィールド762Aであり、これはレガシ32ビット変位(disp32)と同じく機能し、バイト粒度で機能する。
変位係数フィールド762B(バイト7):MODフィールド842が01を含む場合、バイト7が変位係数フィールド762Bである。このフィールドの位置は、バイト粒度で機能するレガシx86命令セットの8ビット変位(disp8)のものと同じである。disp8は符号拡張されるので、disp8は−128〜127バイトオフセット間のアドレス指定のみ可能である。64バイトのキャッシュラインに関しては、disp8は4つの実際に有用な値、−128、−64、0および64のみに設定可能な8ビットを使用する。通常、さらに広い範囲が必要であるので、disp32が使用されるが、disp32は4バイトを必要とする。disp8およびdisp32と対照的に、変位係数フィールド762Bはdisp8の再解釈である。変位係数フィールド762Bを使用する場合、実際の変位は、メモリオペランドアクセス(N)のサイズで乗算された変位係数フィールドの内容によって決定される。このタイプの変位は、disp8*Nと称される。これは、平均命令長(変位には単一のバイトが使用されるが、極めて大きい範囲を伴う)を低減させる。このような圧縮された変位は、有効な変位はメモリアクセスの粒度の倍数であり、したがって、アドレスオフセットの冗長下位ビットは符号化の必要がないという前提に基づいている。換言すれば、変位係数フィールド762Bは、レガシx86命令セットの8ビット変位を置換する。したがって、変位係数フィールド762Bは、disp8がdisp8*Nにオーバーロードされることを唯一の例外として、x86命令セットの8ビット変位と同じ方法で符号化される(したがって、ModRM/SIB符号化規則にはいかなる変更もない)。つまり、符号化規則または符号化長には変更がなく、ハードウェアによる変位値の解釈にのみ変更がある(ハードウェアはメモリオペランドのサイズにより変位をスケーリングしてバイト毎のアドレスオフセットを得る必要がある)。即値フィールド772は、上で説明したように演算を行う。
[フルオペコードフィールド]
図8Bは、いくつかの実施形態に係る、特定ベクトル向け命令フォーマット800のフルオペコードフィールド774を構成するフィールドを示すブロック図である。具体的には、フルオペコードフィールド774は、フォーマットフィールド740と、ベース演算フィールド742と、データ要素幅(W)フィールド764とを含む。ベース演算フィールド742は、プレフィクス符号化フィールド825と、オペコードマップフィールド815と、リアルオペコードフィールド830とを含む。
[レジスタインデックスフィールド]
図8Cは、いくつかの実施形態に係る、特定ベクトル向け命令フォーマット800のレジスタインデックスフィールド744を構成するフィールドを示すブロック図である。具体的には、レジスタインデックスフィールド744は、REXフィールド805、REX'フィールド810、MODR/M.regフィールド844、MODR/M.r/mフィールド846、VVVVフィールド820、xxxフィールド854およびbbbフィールド856を含む。
[拡張演算フィールド]
図8Dは、本発明の一実施形態に係る、特定ベクトル向け命令フォーマット800の拡張演算フィールド750を構成するフィールドを示すブロック図である。クラス(U)フィールド768が0を含む場合、それはEVEX.U0(クラスA 768A)を表す。クラス(U)フィールド768が1を含む場合、それはEVEX.U1(クラスB 768B)を表す。U=0でかつMODフィールド842が11を含む場合(非メモリアクセス動作を意味する)、アルファフィールド752(EVEXバイト3、ビット[7]−EH)は、rsフィールド752Aとして解釈される。rsフィールド752Aが1を含む場合(ラウンド752A.1)、ベータフィールド754(EVEXバイト3、ビット[6:4]SSS)はラウンド制御フィールド754Aとして解釈される。ラウンド制御フィールド754Aは、1ビットのSAEフィールド756および2ビットのラウンド演算フィールド758を含む。rsフィールド752Aが0を含む場合(データ変換752A.2)、ベータフィールド754(EVEXバイト3、ビット[6:4]SSS)は3ビットのデータ変換フィールド754Bとして解釈される。U=0でかつMODフィールド842が00、01または10を含む場合(メモリアクセス動作を意味する)、アルファフィールド752(EVEXバイト3、ビット[7]−EH)は、エビクションヒント(EH)フィールド752Bとして解釈され、ベータフィールド754(EVEXバイト3、ビット[6:4]SSS)は3ビットのデータ操作フィールド754Cとして解釈される。
U=1である場合、アルファフィールド752(EVEXバイト3、ビット[7]−EH)は、書き込みマスク制御(Z)フィールド752Cとして解釈される。U=1でかつMODフィールド842が11を含む場合(非メモリアクセス動作を意味する)、ベータフィールド754の一部(EVEXバイト3、ビット[4]S)は、RLフィールド757Aとして解釈される。RLフィールド757Aが1を含む場合(ラウンド757A.1)、ベータフィールド754の残部(EVEXバイト3、ビット[6−5]S2−1)はラウンド演算フィールド759Aとして解釈され、一方で、RLフィールド757Aが0を含む場合(VSIZE 757.A2)、ベータフィールド754の残部(EVEXバイト3、ビット[6−5]S2−1)は、ベクトル長フィールド759B(EVEXバイト3、ビット[6−5]L1−0)として解釈される。U=1でかつMODフィールド842が00、01または10を含む場合(メモリアクセス動作を意味する)、ベータフィールド754(EVEXバイト3、ビット[6:4]SSS)は、ベクトル長フィールド759B(EVEXバイト3、ビット[6−5]L1−0)およびブロードキャストフィールド757B(EVEXバイト3、ビット[4]B)として解釈される。
[例示的レジスタアーキテクチャ]
図9は、いくつかの実施形態に係る、レジスタアーキテクチャ900のブロック図である。図示される実施形態には、512ビット幅の32個のベクトルレジスタ910がある。これらのレジスタは、zmm0からzmm31として参照される。下位16個のzmmレジスタの下位256ビットは、レジスタymm0〜15に重なっている。下位16個のzmmレジスタの下位128ビット(ymmレジスタの下位128ビット)は、レジスタxmm0〜xmm15に重なっている。特定ベクトル向け命令フォーマット800は、これらの重なったレジスタファイルに対し、以下の表に示されるように動作する。
Figure 2021086612
換言すると、ベクトル長フィールド759Bは、最大長と、1または複数の他のより短い長さとの間で選択し、このようなより短い長さの各々は先行する長さの半分の長さであり、ベクトル長フィールド759Bのない命令テンプレートは、最大ベクトル長に対し、演算を行う。さらに、一実施形態において、特定ベクトル向け命令フォーマット800のクラスB命令テンプレートは、パックド単精度/倍精度浮動小数点データまたはスカラ単精度/倍精度浮動小数点データおよびパックド整数データまたはスカラ整数データに対し、演算を行う。スカラ演算は、zmm/ymm/xmmレジスタ内の最下位データ要素位置において実行される演算であり、上位のデータ要素位置は、実施形態に応じて、命令の前と同じ状態のままにされるかまたはゼロ化される。
図示された実施形態中の書き込みマスクレジスタ915には、8個の書き込みマスクレジスタ(k0からk7)が存在し、各々64ビットのサイズである。代替的な実施形態において、書き込みマスクレジスタ915は、16ビットのサイズである。上記のとおり、いくつかの実施形態において、ベクトルマスクレジスタk0は書き込みマスクとして使用不可である。通常k0を示す符号化が書き込みマスクに使用される場合、それは0xffffのハードワイヤードされた書き込みマスクを選択し、有効にその命令に対し書き込みマスキングを無効にする。
図示された実施形態中の汎用レジスタ925には、メモリオペランドをアドレス指定するために既存のx86アドレス指定モードと共に使用される16個の64ビットの汎用レジスタが存在する。これらのレジスタは、RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、およびR8からR15の名前で参照される。
図示された実施形態中、スカラ浮動小数点スタックレジスタファイル(x87スタック)945について、MMXパックド整数フラットレジスタファイル950というエイリアスが示されているが、x87スタックは、x87命令セット拡張を使用して、32/64/80ビットの浮動小数点データにスカラ浮動小数点演算を実行するために使用される8個の要素のスタックである。MMXレジスタは、64ビットのパックド整数データに対し演算を実行するために使用されるが、MMXレジスタおよびXMMレジスタ間で実行されるいくつかの演算のためのオペランドを保持するためにも使用される。
代替的な実施形態では、より広いまたはより狭いレジスタを使用し得る。加えて、代替的な実施形態では、より多い、より少ない、または異なるレジスタファイルおよびレジスタも使用し得る。
[例示的なコアアーキテクチャ、プロセッサ、およびコンピュータアーキテクチャ]
プロセッサコアは、異なる方法で、異なる目的のために、異なるプロセッサにおいて実装されてよい。例えば、そのようなコアの実装には、以下が含まれ得る。1)汎用コンピューティングを目的とした汎用インオーダコア。2)汎用コンピューティングを目的とした高性能汎用アウトオブオーダコア。3)主としてグラフィックおよび/または科学(スループット)コンピューティングを目的とした専用コア。異なるプロセッサの実装には、以下が含まれ得る。1)汎用コンピューティングを目的とした1または複数の汎用インオーダコアおよび/または汎用コンピューティングを目的とした1または複数の汎用アウトオブオーダコアを含むCPU、および2)主にグラフィックおよび/または科学(スループット)を目的とした1または複数の専用コアを含むコプロセッサ。そのような異なるプロセッサは、異なるコンピュータシステムアーキテクチャをもたらし、それらには以下が含まれ得る。1)CPUとは別のチップ上のコプロセッサ。2)CPUと同じパッケージ内の別のダイ上のコプロセッサ。3)CPUと同じダイ上のコプロセッサ(この場合、そのようなコプロセッサは、統合グラフィックおよび/もしくは科学(スループット)ロジック等の専用ロジック、または専用コアと呼ばれることもある)。4)同じダイ上に記載のCPU(アプリケーションコア(複数可)またはアプリケーションプロセッサ(複数可)と呼ばれることもある)、上述したコプロセッサ、および追加の機能を含み得るシステムオンチップ。例示的なコアアーキテクチャが次に説明され、例示的なプロセッサおよびコンピュータアーキテクチャの説明が続く。
[例示的なコアアーキテクチャ]
[インオーダコアおよびアウトオブオーダコアのブロック図]
図10Aは、本発明のいくつかの実施形態に係る、例示的なインオーダパイプラインおよび例示的なレジスタリネーミング、アウトオブオーダ発行/実行パイプラインの両方を示すブロック図である。図10Bは、本発明のいくつかの実施形態に係る、プロセッサに含まれる、インオーダアーキテクチャコアの例示的な実施形態および例示的なレジスタリネーミング、アウトオブオーダ発行/実行アーキテクチャコアの両方を示すブロック図である。図10Aおよび図10Bの実線で示されたボックスは、インオーダパイプラインおよびインオーダコアを図示する。一方、破線で示されたボックスの任意の追加は、レジスタリネーミング、アウトオブオーダ発行/実行パイプラインおよびコアを図示する。インオーダの態様がアウトオブオーダの態様のサブセットであることから、アウトオブオーダの態様を説明する。
図10Aでは、プロセッサパイプライン1000が、フェッチ段1002、長さ復号段1004、復号段1006、割り当て段1008、リネーミング段1010、スケジューリング(配付または発行としても知られる)段1012、レジスタ読み出し/メモリ読み出し段1014、実行段1016、ライトバック/メモリ書き込み段1018、例外処理段1022、およびコミット段1024を含む。
図10Bは、実行エンジンユニット1050に結合されたフロントエンドユニット1030を含むプロセッサコア1090を示し、両方ともメモリユニット1070に結合されている。コア1090は、縮小命令セットコンピューティング(RISC)コア、複合命令セットコンピューティング(CISC)コア、超長命令語(VLIW)コア、あるいはハイブリッドまたは代替的なコアタイプであってよい。さらに別の選択肢として、コア1090は、例えば、ネットワークまたは通信コア、圧縮エンジン、コプロセッサコア、汎用コンピューティンググラフィック処理装置(GPGPU)コア、グラフィックコア等の専用コアであり得る。
フロントエンドユニット1030は、命令キャッシュユニット1034に結合された分岐予測ユニット1032を含み、命令キャッシュユニット1034は命令トランスレーションルックアサイドバッファ(TLB)1036に結合され、命令トランスレーションルックアサイドバッファ(TLB)1036は命令フェッチユニット1038に結合され、命令フェッチユニット1038は復号ユニット1040に結合されている。復号ユニット1040(すなわちデコーダ)は命令を復号してよく、また、1または複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令または他の制御信号を出力として生成してよく、これらは元の命令から復号され、あるいは元の命令を反映し、あるいは元の命令から派生する。復号ユニット1040は、様々な異なるメカニズムを用いて実装され得る。好適なメカニズムの例としては、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ(PLA)、マイクロコードリードオンリメモリ(ROM)等が含まれるが、これらに限定されるものではない。一実施形態において、コア1090は、マイクロコードROM、または特定のマクロ命令用のマイクロコードを格納する他の媒体を(例えば、復号ユニット1040に、またはそうでなければフロントエンドユニット1030の中に)含む。復号ユニット1040は、実行エンジンユニット1050の中のリネーム/アロケータユニット1052に連結される。
実行エンジンユニット1050は、リタイアメントユニット1054と、1または複数のスケジューラユニット1056のセットとに結合されたリネーム/アロケータユニット1052を含む。スケジューラユニット1056は、複数のリザベーションステーション、中央命令ウィンドウ等を含む、任意の数の異なるスケジューラを表す。スケジューラユニット(複数可)1056は、物理レジスタファイルユニット(複数可)1058に結合される。物理レジスタファイルユニット1058の各々は、1または複数の物理レジスタファイルを表し、それらの異なる1つ1つは、1または複数の異なるデータタイプを格納する。そのようなものとしては、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、状態(例えば、実行される次の命令のアドレスである命令ポインタ)等が挙げられる。一実施形態において、物理レジスタファイルユニット1058は、複数のベクトルレジスタユニット、書き込みマスクレジスタユニット、およびスカラレジスタユニットを備える。これらのレジスタユニットは、アーキテクチャのベクトルレジスタ、ベクトルマスクレジスタおよび汎用レジスタを提供してよい。物理レジスタファイルユニット1058は、(例えば、リオーダバッファおよびリタイアメントレジスタファイルを使用して、将来のファイル、履歴バッファ、およびリタイアメントレジスタファイル(以上、複数可)を使用して、複数のレジスタマップおよびレジスタプールを使用してなど)レジスタリネーミングおよびアウトオブオーダ実行が実装され得る様々な方法を示すためにリタイアメントユニット1054とオーバーラップしている。リタイアメントユニット1054および物理レジスタファイルユニット(複数可)1058は、実行クラスタ(複数可)1060に結合される。実行クラスタ1060には、1または複数の実行ユニット1062のセットおよび1または複数のメモリアクセスユニット1064のセットが含まれる。実行ユニット1062は、様々な演算(例えば、シフト、加算、減算、乗算)を様々なタイプのデータ(例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点)に行ってよい。いくつかの実施形態は、特定の機能または機能のセットに専用の複数の実行ユニットを含んでよく、一方で、他の実施形態は、1つのみの実行ユニットまたは、それらすべてが全機能を実行する複数の実行ユニットを含んでよい。スケジューラユニット1056、物理レジスタファイルユニット1058および実行クラスタ1060が複数可として図示されているのは、特定の実施形態が特定のタイプのデータ/演算のために別個のパイプライン(例えば、スカラ整数のパイプライン、スカラ浮動小数点/パックド整数/パックド浮動小数点/ベクトル整数/ベクトル浮動小数点のパイプラインおよび/またはメモリアクセスパイプライン。これらの各々は独自のスケジューラユニット、物理レジスタファイルユニット、および/または実行クラスタを有する。別個のメモリアクセスパイプラインの場合、このパイプラインの実行クラスタのみがメモリアクセスユニット(複数可)1064を有する特定の実施形態が実装される)を形成するからである。別々のパイプラインが使用される場合、これらのパイプラインのうちの1または複数がアウトオブオーダ発行/実行であり、残りがインオーダであり得ることも理解されたい。
複数のメモリアクセスユニット1064のセットがメモリユニット1070に結合され、メモリユニット1070は、レベル2(L2)キャッシュユニット1076に結合されたデータキャッシュユニット1074に結合されたデータTLBユニット1072を含む。1つの例示的な実施形態において、メモリアクセスユニット1064は、ロードユニット、ストアアドレスユニット、およびストアデータユニットを含んでよく、これらはそれぞれ、メモリユニット1070のデータTLBユニット1072に結合されている。命令キャッシュユニット1034は、メモリユニット1070のレベル2(L2)キャッシュユニット1076に更に結合されている。L2キャッシュユニット1076は、1または複数の他のレベルのキャッシュに結合され、最終的にはメインメモリに結合される。
例として、例示的なレジスタリネーミング、アウトオブオーダ発行/実行コアアーキテクチャは、パイプライン1000を次のように実装してよい。1)命令フェッチユニット1038が、フェッチ段1002と、長さ復号段1004とを実行し、2)復号ユニット1040が、復号段1006を実行し、3)リネーム/アロケータユニット1052が、割り当て段1008と、リネーミング段1010とを実行し、4)スケジューラユニット1056が、スケジュール段1012を実行し、5)物理レジスタファイルユニット1058およびメモリユニット1070が、レジスタ読み取り/メモリ読み取り段1014を実行し、実行クラスタ1060が実行段1016を実行し、6)メモリユニット1070および物理レジスタファイルユニット1058が、ライトバック/メモリ書き込み段1018を実行し、7)様々なユニットが、例外処理段1022に関与してよく、かつ8)リタイアメントユニット1054および物理レジスタファイルユニット1058が、コミット段1024を実行する。
コア1090は、本明細書で説明した命令を含む、1または複数の命令セット(例えば、x86命令セット(より新しいバージョンが追加されたいくつかの拡張がなされたもの)、カリフォルニア州サニーベールにあるMIPS TechnologiesのMIPS命令セット、カリフォルニア州サニーベールにあるARM HoldingsのARM命令セット(NEON等の任意の追加拡張機能が追加された))をサポートしてよい。一実施形態において、コア1090は、パックドデータ命令セット拡張(例えば、AVX1、AVX2)をサポートするロジックを含み、これによって、多くのマルチメディアアプリケーションによって用いられる複数の動作がパックドデータを用いて実行されることを可能にする。
コアは、マルチスレッド化(演算またはスレッドの2つ以上の並列セットの実行)をサポートし、タイムスライスマルチスレッド化、(物理コアが同時にマルチスレッド化しているスレッドの各々に単一の物理コアが論理コアを提供する)同時マルチスレッド化、またはそれらの組み合わせ(例えば、インテル(登録商標)ハイパースレッディングテクノロジなどにおけるタイムスライスフェッチおよび復号ならびにその後の同時マルチスレッド化)を含む様々な方法でサポートすることができる。
レジスタリネーミングはアウトオブオーダ実行の文脈で説明されているが、レジスタリネーミングはインオーダアーキテクチャで使用されてよいことを理解されたい。プロセッサの例示された実施形態はまた、別個の命令キャッシュユニット1034およびデータキャッシュユニット1074、ならびに共有L2キャッシュユニット1076を含み得るが、複数の代替的な実施形態が命令およびデータの両方用に、例えば、レベル1(L1)内部キャッシュまたは複数のレベルの内部キャッシュ等の単一の内部キャッシュを有してよい。いくつかの実施形態において、システムは、内部キャッシュと、コアおよび/またはプロセッサの外部にある外部キャッシュの組み合わせを含んでもよい。あるいは、キャッシュのすべてがコアおよび/またはプロセッサの外部にあってよい。
[具体的な例示的インオーダコアアーキテクチャ]
図11Aおよび図11Bは、より具体的な例示のインオーダコアアーキテクチャのブロック図を示し、コアはチップ内のいくつかの論理ブロック(同一タイプおよび/または異なるタイプの他のコアを含む)の1つであろう。論理ブロックは、アプリケーションに応じて、高帯域幅の相互接続ネットワーク(例えば、リングネットワーク)を通して、いくつかの固定機能論理、メモリI/Oインタフェース、および他の必要なI/O論理と通信する。
図11Aは、本発明のいくつかの実施形態に係る、オンダイ相互接続ネットワーク1102への接続を備え、かつ、レベル2(L2)キャッシュのローカルサブセット1104を備えた単一のプロセッサコアのブロック図である。一実施形態において、命令デコーダ1100はパックドデータ命令セット拡張を用いてx86命令セットをサポートする。L1キャッシュ1106によって、キャッシュメモリに対して、スカラおよびベクトルユニット内部に低レイテンシのアクセスが可能になる。一実施形態において、(設計の単純化のために)スカラユニット1108およびベクトルユニット1110は、別個のレジスタセット(それぞれ、複数のスカラレジスタ1112および複数のベクトルレジスタ1114)を用い、これらの間で転送されるデータは、レベル1(L1)キャッシュ1106のメモリに書き込まれてから再読み出しされるが、本発明の複数の代替的な実施形態は、異なるアプローチ(例えば、単一のレジスタセットを用いる、または書き込みおよび再読み出しを行うことなく、2つのレジスタファイル間でのデータ転送を可能にする通信パスを含む)を用いてよい。
L2キャッシュのローカルサブセット1104は、1つのプロセッサコアあたり1つずつ、別個のローカルサブセットに分割されるグローバルL2キャッシュの一部である。各プロセッサコアは、独自のL2キャッシュのローカルサブセット1104に直接アクセスする経路を有する。プロセッサコアによって読み取られたデータは、そのL2キャッシュサブセット1104に格納され、当該データは、他のプロセッサコアが自身のローカルL2キャッシュサブセットにアクセスするのと並列的に、迅速にアクセス可能である。プロセッサコアによって書き込まれたデータは、自身のL2キャッシュサブセット1104に格納され、必要な場合、他のサブセットからはフラッシュされる。リングネットワークは、共有データのためのコヒーレンシを保証する。リングネットワークは双方向であり、プロセッサコア、L2キャッシュおよび他の論理ブロック等のエージェントが、チップ内で互いに通信することを可能にする。各リングデータパスは、方向ごとに1012ビット幅である。
図11Bは、本発明のいくつかの実施形態に係る、図11Aのプロセッサコアの一部の拡大図である。図11Bは、ベクトルユニット1110およびベクトルレジスタ1114に関するより詳細な点だけでなく、L1キャッシュ1106の一部であるL1データキャッシュ1106Aを含む。具体的には、ベクトルユニット1110は、16幅ベクトル処理ユニット(VPU)(16幅ALU1128を参照)であり、整数命令、単精度浮動命令および倍精度浮動命令のうちの1または複数を実行する。VPUは、スウィズルユニット1120を用いるレジスタ入力のスウィズル、数値変換ユニット1122Aおよび1122Bを用いる数値変換およびメモリ入力での複製ユニット1124を用いる複製をサポートする。書き込みマスクレジスタ1126は、結果として生じるベクトル書き込みの予測を可能にする。
図12は、本発明のいくつかの実施形態に係る、プロセッサ1200のブロック図であり、当該プロセッサは、2以上のコアを有してよく、統合メモリコントローラを有してよく、統合グラフィックを有してよい。図12の実線で示す箱はプロセッサ1200を説明しており、単一コア1202A、システムエージェントユニット1210、1または複数のバスコントローラユニット1216のセットを備える。破線で示す箱は任意の追加する別のプロセッサ1200を説明しており、複数のコア1202A〜1202N、システムエージェントユニット1210内の1または複数の統合メモリコントローラユニット1214のセット、および専用ロジック1208を備える。
よって、プロセッサ1200の異なる実装としては、1)専用ロジック1208を統合グラフィックおよび/または科学(スループット)ロジック(これは、1または複数のコアを含んでよい)とし、コア1202A〜1202Nを1または複数の汎用コア(例えば、汎用インオーダコア、汎用アウトオブオーダコア、それら2つの組み合わせ)としたCPU、2)コア1202A〜1202Nをグラフィックおよび/または科学(スループット)を主な用途とする多数の専用コアとしたコプロセッサ、および3)コア1202A〜1202Nを多数の汎用インオーダコアとしたコプロセッサが挙げられてよい。故に、プロセッサ1200は、例えば、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、グラフィックプロセッサ、GPGPU(汎用グラフィック処理ユニット)、高スループット多集積コア(MIC)コプロセッサ(30または30より多いコアを含む)、組み込みプロセッサ等のような汎用プロセッサ、コプロセッサ、または専用プロセッサであってよい。プロセッサは、1または複数のチップ上に実装されてよい。プロセッサ1200は、例えば、BiCMOS、CMOS、またはNMOS等の複数のプロセス技術のいずれかを用いて、1または複数の基板の一部であってよく、および/または当該基板上に実装されてよい。
メモリ階層は、コア内の1または複数のレベルのキャッシュと、1または複数の共有キャッシュユニット1206のセットと、統合メモリコントローラユニット1214のセットに結合された外部メモリ(図示せず)とを含む。共有キャッシュユニット1206のセットは、レベル2(L2)、レベル3(L3)、レベル4(L4)、あるいは他のレベルのキャッシュ等の1または複数の中間レベルキャッシュ、ラストレベルキャッシュ(LLC)、および/またはこれらの組み合わせを含んでよい。一実施形態において、リングベースの相互接続ユニット1212は、統合グラフィックロジック1208(統合グラフィックロジック1208は専用ロジックの一例であり、本明細書で専用ロジックとも呼ばれる)、共有キャッシュユニット1206のセット、およびシステムエージェントユニット1210/統合メモリコントローラユニット1214を相互接続する一方で、代替的な実施形態は、このようなユニットを相互接続するための任意の数の周知技術を使用してよい。一実施形態において、コヒーレンシは、1または複数のキャッシュユニット1206とコア1202A〜1202Nとの間で維持される。
いくつかの実施形態において、コア1202A〜1202Nのうち1または複数は、マルチスレッディングが可能である。システムエージェントユニット1210は、コア1202A〜1202Nを調整し操作するこれらのコンポーネントを含む。システムエージェントユニット1210は、例えば、電力制御ユニット(PCU)およびディスプレイユニットを含んでもよい。PCUは、コア1202A〜1202Nおよび統合グラフィックロジック1208の電力状態を調整するのに必要とされるロジックおよび複数のコンポーネントであってよく、またはこれらを含んでもよい。ディスプレイユニットは、外部接続された1または複数のディスプレイを駆動するためのものである。
コア1202A〜1202Nは、アーキテクチャ命令セットに関して同種または異種であってよい。すなわち、コア1202A〜1202Nのうちの2つ以上は、同じ命令セットの実行が可能であってよく、一方で他のものは、その命令セットのサブセットまたは異なる命令セットのみの実行が可能であってよい。
[例示的なコンピュータアーキテクチャ]
図13〜図16は、例示的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドPC、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワーク装置、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、グラフィック装置、ビデオゲーム装置、セットトップボックス、マイクロコントローラ、携帯電話、携帯型メディアプレーヤ、ハンドヘルド装置、および他の様々な電子装置のための当技術分野において公知の他のシステム設計および構成も適している。一般的に、本明細書に開示されるプロセッサおよび/または他の実行ロジックを組み込むことができる多種多様なシステムまたは電子装置が一般に適している。
ここで図13を参照すると、本発明の1つの実施形態に係るシステム1300のブロック図が示されている。システム1300は、コントローラハブ1320に結合されている1または複数のプロセッサ1310、1315を含んでよい。一実施形態において、コントローラハブ1320は、グラフィックメモリコントローラハブ(GMCH)1390と、入出力ハブ(IOH)1350(これは別のチップ上にあってよい)とを含み、GMCH1390は、メモリ1340およびコプロセッサ1345が結合されているメモリコントローラおよびグラフィックコントローラを含み、IOH1350は、入出力(I/O)デバイス1360をGMCH1390に結合する。代替的に、メモリコントローラおよびグラフィックコントローラの一方または両方は、(本明細書で説明されるように)プロセッサ内に統合され、メモリ1340およびコプロセッサ1345は、プロセッサ1310、およびIOH1350を有する単一のチップの中のコントローラハブ1320に直接結合される。
追加的なプロセッサ1315の任意選択的な性質が、図13において破線で示されている。各プロセッサ1310、1315は、本明細書で説明される複数の処理コアのうちの1または複数を含んでよく、プロセッサ1200の何らかのバージョンであってよい。
メモリ1340は、例えば、ダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)、またはその2つの組み合わせであってよい。少なくとも1つの実施形態については、コントローラハブ1320は、フロントサイドバス(FSB)等のマルチドロップバス、QuickPath相互接続(QPI)等のポイントツーポイントインタフェース、または類似の接続1395を介してプロセッサ1310、1315と通信する。
一実施形態において、コプロセッサ1345は、例えば、高スループットMICプロセッサ、ネットワークまたは通信プロセッサ、圧縮エンジン、グラフィックプロセッサ、GPGPU、組み込みプロセッサ等の専用プロセッサである。一実施形態において、コントローラハブ1320は、統合グラフィックアクセラレータを含み得る。
物理リソース1310、1315の間には、アーキテクチャ上のもの、マイクロアーキテクチャ上のもの、熱的なもの、および電力消費特性のもの等を含む様々な利点の基準に関して、多様な差異があり得る。
一実施形態において、プロセッサ1310は、一般的タイプのデータ処理動作を制御する複数の命令を実行する。この命令内にコプロセッサ命令が組み込まれてよい。プロセッサ1310は、取り付けられたコプロセッサ1345により実行されるべきタイプのものとして、これらのコプロセッサ命令を認識する。したがって、プロセッサ1310は、コプロセッサバスまたは他の相互接続上で、これらのコプロセッサ命令(または複数のコプロセッサ命令を表す複数の制御信号)をコプロセッサ1345に発行する。コプロセッサ(複数可)1345は、受信したコプロセッサ命令を受け付け、実行する。
ここで図14を参照すると、本発明のある実施形態に従って、第1のより具体的な例示的システム1400のブロック図が示されている。図14に示されるように、マルチプロセッサシステム1400は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続1450を介して結合される第1のプロセッサ1470および第2のプロセッサ1480を含む。プロセッサ1470および1480の各々は、いくつかのバージョンのプロセッサ1200であり得る。本発明のいくつかの実施形態において、プロセッサ1470および1480は、それぞれプロセッサ1310および1315である一方で、コプロセッサ1438はコプロセッサ1345である。他の実施形態において、プロセッサ1470および1480は、それぞれ、プロセッサ1310およびコプロセッサ1345である。
プロセッサ1470および1480は、それぞれ、統合メモリコントローラ(IMC)ユニット1472および1482を含むものとして示されている。プロセッサ1470はまた、そのバスコントローラユニットの一部として、ポイントツーポイント(P−P)インタフェース1476および1478を含み、同様に、第2のプロセッサ1480はP−Pインタフェース1486および1488を含む。プロセッサ1470、1480は、ポイントツーポイント(P−P)インタフェース1450を介し、P−Pインタフェース回路1478、1488を用いて情報を交換してよい。図14に図示のとおり、IMC1472および1482は、プロセッサをそれぞれのメモリ、すなわちメモリ1432およびメモリ1434に連結する。メモリ1432およびメモリ1434は、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部であってよい。
プロセッサ1470、1480はそれぞれ、個々のP−Pインタフェース1452、1454を介し、ポイントツーポイントインタフェース回路1476、1494、1486、1498を用いてチップセット1490と情報を交換してよい。チップセット1490は、任意で、高性能インタフェース1492を介してコプロセッサ1438と情報を交換してよい。一実施形態において、コプロセッサ1438は、例えば、高スループットMICプロセッサ、ネットワークプロセッサまたは通信プロセッサ、圧縮エンジン、グラフィックプロセッサ、GPGPUまたは組み込みプロセッサ等の専用プロセッサである。
共有キャッシュ(図示せず)は、プロセッサ、またはP−P相互接続を介してプロセッサとすでに接続されている両方のプロセッサの外部のいずれかに含まれ、その結果、プロセッサが低電力モードに入れられた場合、いずれかまたは両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納されてよい。
チップセット1490は、インタフェース1496を介して第1のバス1416に結合されてよい。一実施形態において、第1のバス1416は、周辺構成要素相互接続(PCI)バス、またはPCI Expressバスまたは別の第3世代I/O相互接続バス等のバスであり得るが、本発明の範囲は、そのようには限定されない。
図14に示されるように、第1のバス1416を第2のバス1420に結合するバスブリッジ1418と共に、様々なI/Oデバイス1414が第1のバス1416に結合されてよい。一実施形態において、コプロセッサ、高スループットMICプロセッサ、GPGPU、アクセラレータ(例えば、グラフィックアクセラレータまたはデジタル信号処理(DSP)ユニット等)、フィールドプログラマブルゲートアレイ、または任意の他のプロセッサ等の1または複数の追加のプロセッサ1415が第1のバス1416に連結される。一実施形態において、第2のバス1420は、低ピン数(Low Pin Count:LPC)バスであってよい。一実施形態において、例えばキーボードおよび/またはマウス1422、通信デバイス1427、ならびに複数の命令/コードおよびデータ1430を含み得るディスクドライブもしくは他の大容量ストレージデバイス等のストレージユニット1428を含む様々なデバイスが第2のバス1420に結合され得る。更に、オーディオI/O1424は、第2のバス1420に結合されてよい。他のアーキテクチャも可能であることに留意されたい。例えば、図14のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバスまたは他のそのようなアーキテクチャを実装することができる。
ここで図15を参照すると、本発明のある実施形態に従って、第2のより具体的な例示的システム1500のブロック図が示されている。図14および図15における同一の要素は、複数の同一の参照符号を有し、図14の特定の態様は、図15の他の態様を不明瞭にするのを避けるべく、図15から省略されている。
図15は、プロセッサ1470、1480が、それぞれ統合メモリならびにI/O制御ロジック(「CL」)1572および1582を含んでもよいことを示す。したがって、CL1572、1582は、統合メモリコントローラユニットを含み、I/O制御ロジックを含む。図15は、メモリ1432、1434のみがCL1572、1582に結合されるのではなく、複数のI/Oデバイス1514もCL1572、1582に結合されることを示す。レガシI/Oデバイス1515は、チップセット1490に結合される。
ここで図16を参照すると、本発明のある実施形態に従って、SoC1600のブロック図が示されている。図12の類似の複数の要素は同じ参照符号を有している。また、破線ボックスは、より高度なSoC上での任意の機能である。図16中、相互接続ユニット1602は、アプリケーションプロセッサ1610と、システムエージェントユニット1210と、バスコントローラユニット1216と、統合メモリコントローラユニット1214と、1または複数のコプロセッサ1620のセットと、スタティックランダムアクセスメモリ(SRAM)ユニット1630と、ダイレクトメモリアクセス(DMA)ユニット1632と、1または複数の外部ディスプレイに連結するためのディスプレイユニット1640とに連結される。アプリケーションプロセッサ1610は、キャッシュユニット1204A〜1204Nを含む、1または複数のコア1202A〜1202Nのセットおよび共有キャッシュユニット1206を含む。コプロセッサ1620のセットは、統合グラフィックロジック、イメージプロセッサ、オーディオプロセッサ、およびビデオプロセッサを含んでよい。一実施形態において、コプロセッサ1620は、例えば、ネットワークまたは通信プロセッサ、圧縮エンジン、GPGPU、高スループットMICプロセッサ、組み込みプロセッサ等の専用プロセッサを含む。
本明細書で開示されたメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェア、またはそのような実装手段の組み合わせに実装されてよい。本発明の実施形態はプログラム可能なシステムで実行するコンピュータプログラムまたはプログラムコードとして実装してよく、このプログラム可能なシステムは、少なくとも1つのプロセッサ、記憶装置システム(例えば揮発性および不揮発性メモリおよび/または記憶素子)、少なくとも1つの入力装置、および少なくとも1つの出力装置を備える。
図14に図示されるコード1430等のプログラムコードが、本明細書に説明される複数の機能を実行して出力情報を生成するための複数の命令を入力するのに適用されてよい。出力情報は、1または複数の出力デバイスに既知の態様で適用されてよい。この適用を目的として、処理システムは、例えばデジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、またはマイクロプロセッサ等のプロセッサを備える任意のシステムを含む。
プログラムコードは、処理システムと通信するために高水準の手続型またはオブジェクト指向型プログラミング言語で実装されてよい。また、必要であれば、プログラムコードは、アセンブリ言語または機械言語で実装されてもよい。実際に、本明細書で記載されたメカニズムはその範囲において、いずれの特定のプログラミング言語にも限定されない。いずれの場合においても、言語はコンパイル型言語またはインタープリタ型言語であってよい。
少なくとも1つの実施形態の1または複数の態様が、機械可読媒体に格納された典型的な命令により実装されてよく、当該命令は、プロセッサ内の様々なロジックを表し、機械によって読み取られると、機械に、本明細書で説明された技術を実行するためのロジックを作成させる。複数の「IPコア」として知られる、そのような複数の記述表現は、有形の機械可読媒体に格納されてよく、様々な顧客または製造施設に対し供給され、実際にロジックまたはプロセッサを作成する複数の製造機械にロードされてよい。
このような機械可読ストレージ媒体は、機械または装置により製造または形成された物品の非一時的有形構成を含んでよく、このようなものとしては、ハードディスク等のストレージ媒体、フロッピーディスク、光ディスク、コンパクトディスクリードオンリメモリ(CD−ROM)、コンパクトディスクリライタブル(CD−RW)および磁気光ディスク等の任意の他のタイプのディスク、リードオンリメモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)等のランダムアクセスメモリ(RAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、相変化メモリ(PCM)等の半導体デバイス、磁気または光カード、または電子命令を格納するのに好適な任意の他のタイプの媒体が含まれるが、これらに限定されない。
したがって、本発明の実施形態は、本明細書に記述している構造、回路、装置、プロセッサおよび/またはシステム特徴を定義する命令を含む、または設計データを含む、ハードウェア記述言語(HDL)等の非一時的な有形機械可読媒体も含む。このような実施形態はプログラム製品と呼んでもよい。 [エミュレーション(バイナリ変換、コードモーフィング等を含む)]
いくつかの場合において、命令コンバータを用いて、ソース命令セットからの命令をターゲット命令セットへ変換してよい。例えば、命令コンバータは、命令をコアによって処理されるべき1または複数の他の命令に、(例えば、スタティックバイナリ変換、ダイナミックコンパイルを含むダイナミックバイナリ変換を用いて)解釈し、モーフィングし、エミュレートし、またはそうでなければ変換してよい。命令コンバータは、ソフトウェア、ハードウェア、ファームウェアまたはこれらの組み合わせで実装されてよい。命令コンバータは、プロセッサ内、プロセッサ外、または部分的にプロセッサ内または部分的にプロセッサ外に存在してよい。
図17は、本発明のいくつかの実施形態に係る、ソース命令セット内のバイナリ命令をターゲット命令セット内のバイナリ命令に変換するためのソフトウェア命令コンバータの使用を対比するブロック図である。図示された実施形態において、命令コンバータはソフトウェア命令コンバータであるものの、代替的に、命令コンバータはソフトウェア、ファームウェア、ハードウェアまたはこれらの様々な組み合わせで実装されてよい。図17は、少なくとも1つのx86命令セットコアを用いるプロセッサ1716によりネイティブに実行され得るx86バイナリコード1706を生成するべくx86コンパイラ1704を用いてコンパイルされ得る高水準言語1702のプログラムを示す。少なくとも1つのx86命令セットコアを用いるプロセッサ1716は、少なくとも1つのx86命令セットコアを用いるインテル(登録商標)プロセッサと実質的に同一の諸機能を実行できる任意のプロセッサを表しており、これは次のように行う。すなわち、少なくとも1つのx86命令セットコアを用いるインテル(登録商標)プロセッサと実質的に同一の結果を得るべく、(1)インテル(登録商標)x86命令セットコアの命令セットの大部分、または(2)少なくとも1つのx86命令セットコアを用いるインテル(登録商標)プロセッサ上での実行を目的とするアプリケーションまたは他のソフトウェアのオブジェクトコードバージョン、を互換性のある状態で実行またはそれ以外の方法で処理することによってである。x86コンパイラ1704は、さらなるリンク処理を用いて、または用いることなく、少なくとも1つのx86命令セットコアを用いるプロセッサ1716上で実行可能なx86バイナリコード1706(例えば、オブジェクトコード)を生成するように動作可能なコンパイラを表す。同様に、図17は、少なくとも1つのx86命令セットコアを用いないプロセッサ1714(例えば、カルフォルニア州サニーベールのMIPS TechnologyのMIPS命令セットを実行し、および/またはカリフォルニア州サニーベールのARM HoldingsのARM命令セットを実行する複数のコアを用いるプロセッサ)によりネイティブに実行され得る代替的な命令セットバイナリコード1710を生成するべく代替的な命令セットのコンパイラ1708を用いてコンパイルされ得る高水準言語1702のプログラムを示す。命令コンバータ1712は、x86命令セットコアを用いないプロセッサ1714がネイティブに実行し得るコードに、x86バイナリコード1706を変換するのに用いられる。この変換済みコードは、代替の命令セットのバイナリコード1710と同じではない可能性がある。なぜなら、このことが可能な命令コンバータは作るのが難しいからである。しかし、変換済みコードは一般的な演算を実現し、代替の命令セットの命令で構成される。故に、命令コンバータ1712は、ソフトウェア、ファームウェア、ハードウェアまたはこれらの組み合わせを表し、それらは、エミュレーション、シミュレーションまたは任意の他の処理を介して、x86命令セットプロセッサまたはコアを有さないプロセッサまたは他の電子デバイスが、x86バイナリコード1706を実行できるようにする。
[さらなる例]
例1は、1または複数のコアを備えるプロセッサと、ラストレベルキャッシュ(LLC)と、キャッシュ制御回路(CCC)と、を備える例示的システムを含む。LLCは、複数の優先度の1つにそれぞれ割り当てられた複数のウェイを有し、各優先度が、占有する最小および最大ウェイ数を指定するクラスオブサービス(CLOS)レジスタに関連付けられている。CCCは、LLC内に無効キャッシュライン(CL)が存在する場合、この無効CLに複数の優先度のうちの要求元優先度を有する後続キャッシュラインを格納し、あるいは、要求元優先度が複数の優先度のうちの最低のもので、1または複数である占有数を有する、または占有数が要求元優先度について最大である場合、後続CLを、要求元優先度の最も長く使われていない(Least Recently Used:LRU)CLの代わりに格納し、あるいは、占有数が要求元優先度について最小および最大の間である場合、要求元優先度またはそれより低い優先度のLRU CLの代わりに後続CLを格納し、あるいは、占有数が最小よりも低く、より低い優先度を有するLRC CLが存在する場合、このLRU CLの代わりに後続CLを格納し、あるいは、要求元優先度またはそれより低い優先度を有するエビクション候補が存在しない場合、要求元優先度より高い優先度のLRU CLの代わりに後続CLを格納する。
例2は、例1の例示的システムの内容を含み、LLCは、複数セットのウェイを含み、複数のウェイは、複数セットの一部で、CCCは、後続CLをどこに格納するかを決定する前に、後続CLの論理アドレスに実行されるハッシングアルゴリズムに基づいて、後続CLが複数セットのいずれに含まれるかを判定するものとする。
例3は、例1の例示的システムの内容を含み、LLCキャッシュエビクションに関するヒューリスティクスを維持するキャッシュ監視回路をさらに備え、より低い優先度を有する後続CLを埋めるために空きを作るため、閾値よりも高い割合の高優先度を有するキャッシュラインがエビクションされる場合、高優先度に対するCLOSレジスタが、占有する最小および最大ウェイを増やすように更新される。
例4は、例1の例示的システムの内容を含み、複数のウェイは、それぞれN個のCLを含み、Nは1以上の正の整数である。
例5は、例1の例示的システムの内容を含み、より低い優先度を有するLRU CLが存在し、その代わりに後続CLを格納する際、CCCは、LRU CLを含むウェイ内にその他CLが存在する場合、その他CLをフラッシュさせるものである。
例6は、例1の例示的システムの内容を含み、1または複数のコアは、それぞれ仮想マシンを実装し、CCCはハイパーバイザを含む。
例7は、例1の例示的システムの内容を含み、プロセッサは、クラウドサービスプロバイダのデータセンタ内の複数のプロセッサの1つである。
例8は、1または複数のコアを備えるプロセッサと、複数の優先度の1つにそれぞれ割り当てられた複数のウェイを有するラストレベルキャッシュ(LLC)であって、各優先度が、占有する最小および最大ウェイ数を指定するクラスオブサービス(CLOS)レジスタに関連付けられたLLCと、を備えるシステムにおけるキャッシュ制御回路(CCC)によって実行される例示的方法を含む。複数の優先度のうちのある要求元優先度を有する後続キャッシュライン(CL)を、LLCに格納する要求を受信する段階と、LLC内に無効CLが存在する場合、この無効CLに後続CLを格納する段階と、あるいは、要求元優先度が複数の優先度のうちの最低のもので、1または複数である占有数を有する、または占有数が要求元優先度について最大である場合、後続CLを、要求元優先度の最も長く使われていない(Least Recently Used:LRU)CLの代わりに格納する段階と、あるいは、占有数が要求元優先度について最小および最大の間である場合、要求元優先度またはそれより低い優先度のLRU CLの代わりに後続CLを格納する段階と、あるいは、占有数が最小よりも低く、より低い優先度を有するLRC CLが存在する場合、このLRU CLの代わりに後続CLを格納し、あるいは、要求元優先度またはそれより低い優先度を有するエビクション候補が存在しない場合、要求元優先度より高い優先度のLRU CLの代わりに後続CLを格納する。
例9は、例8の例示的方法の内容を含み、LLCは、複数セットのウェイを含み、複数のウェイは、複数セットの一部で、CCCは、後続CLをどこに格納するかを決定する前に、後続CLの論理アドレスに実行されるハッシングアルゴリズムに基づいて、後続CLが複数セットのいずれに含まれるかを判定するものとする。
例10は、例8の例示的方法の内容を含み、LLCキャッシュ監視回路を使用して、LLCキャッシュエビクションに関するヒューリスティクスを維持し、より低い優先度を有する後続CLを埋めるために空きを作るため、閾値よりも高い割合の高優先度を有するキャッシュラインがエビクションされる場合、高優先度に対するCLOSレジスタを、占有する最小および最大ウェイを増やすように更新する。
例11は、例8の例示的方法の内容を含み、複数のウェイは、それぞれN個のCLを含み、Nは1以上の正の整数である。
例12は、例8の例示的方法の内容を含み、より低い優先度を有するLRU CLが存在し、その代わりに後続CLを格納する際、CCCは、LRU CLを含むウェイ内にその他CLが存在する場合、その他CLをフラッシュさせるものである。
例13は、例8の例示的方法の内容を含み、1または複数のコアは、それぞれ仮想マシンを実装し、CCCはハイパーバイザを含む。
例14は、例8の例示的方法の内容を含み、プロセッサは、クラウドサービスプロバイダのデータセンタ内の複数のプロセッサの1つである。
例15は、1または複数のコアを備えるプロセッサと、複数の優先度の1つにそれぞれ割り当てられた複数のウェイを有するラストレベルキャッシュ(LLC)であって、各優先度が、占有する最小および最大ウェイ数を指定するクラスオブサービス(CLOS)レジスタに関連付けられたLLCと、を備えるシステムにおけるキャッシュ制御回路(CCC)が応答する命令を含む例示的非一時的コンピュータ読み取り可能な媒体を含む。応答は、LLC内に無効キャッシュライン(CL)が存在する場合、この無効CLに複数の優先度のうちのある要求元優先度を有する後続CLを格納することと、あるいは、要求元優先度が複数の優先度のうちの最低のもので、1または複数である占有数を有する、または占有数が要求元優先度について最大である場合、後続CLを、要求元優先度の最も長く使われていない(Least Recently Used:LRU)CLの代わりに格納することと、あるいは、占有数が要求元優先度について最小および最大の間である場合、要求元優先度またはそれより低い優先度のLRU CLの代わりに後続CLを格納することと、あるいは、占有数が最小よりも低く、より低い優先度を有するLRC CLが存在する場合、このLRU CLの代わりに後続CLを格納することと、あるいは、要求元優先度またはそれより低い優先度を有するエビクション候補が存在しない場合、要求元優先度より高い優先度のLRU CLの代わりに後続CLを格納することと、によって実施される。
例16は、例15の例示的方法の例示的非一時的コンピュータ読み取り可能な媒体の内容を含み、LLCは、複数セットのウェイを含み、複数のウェイは、複数セットの一部で、CCCは、命令にさらに応答して、後続CLをどこに格納するかを決定する前に、後続CLの論理アドレスに実行されるハッシングアルゴリズムに基づいて、後続CLが複数セットのいずれに含まれるかを判定するものとする。
例17は、例15の例示的方法の例示的非一時的コンピュータ読み取り可能な媒体の内容を含み、プロセッサは、クラウドサービスプロバイダのデータセンタ内の複数のプロセッサの1つである。
例18は、例15の例示的方法の例示的非一時的コンピュータ読み取り可能な媒体の内容を含み、複数のウェイは、それぞれN個のCLを含み、Nは1以上の正の整数である。
例19は、例15の例示的方法の例示的非一時的コンピュータ読み取り可能な媒体の内容を含み、より低い優先度を有するLRU CLが存在し、その代わりに後続CLを格納する際、CCCは、LRU CLを含むウェイ内にその他CLが存在する場合、その他CLをフラッシュさせるものである。
例20は、例15の例示的方法の例示的非一時的コンピュータ読み取り可能な媒体の内容を含み、1または複数のコアは、それぞれ仮想マシンを実装し、CCCはハイパーバイザを含む。
[ほかの考えられる項目]
(項目1) 複数の優先度の1つにそれぞれ割り当てられた複数のウェイを有するラストレベルキャッシュ(LLC)であって、各優先度が、占有する最小および最大ウェイ数を指定するクラスオブサービス(CLOS)レジスタに関連付けられたLLCと、キャッシュ制御回路(CCC)であって上記LLC内に無効キャッシュライン(CL)が存在する場合、上記無効CLに、上記複数の優先度の1つである要求元優先度を有する後続キャッシュライン(CL)を格納し、上記要求元優先度が上記複数の優先度のうちの最低のもので、1または複数である占有数を有する、または上記占有数が上記要求元優先度について最大である場合、上記後続CLを、上記要求元優先度の最も長く使われていない(Least Recently Used:LRU)CLの代わりに格納し、上記占有数が上記要求元優先度について最小および上記最大の間である場合、上記要求元優先度またはそれより低い優先度のLRU CLの代わりに上記後続CLを格納し、上記占有数が上記最小よりも低く、上記より低い優先度を有するCLが存在する場合、上記より低い優先度を有するLRU CLの代わりに上記後続CLを格納し、無効CLまたは上記要求元優先度またはそれより低い優先度を有するCLが存在しない場合、より高い優先度のLRU CLの代わりに上記後続CLを格納する、CCCと、を備える、システム。
(項目2) 上記LLCは、複数セットのウェイを含み、上記複数のウェイは、上記複数セットの一部で、上記CCCは、上記後続CLをどこに格納するかを決定する前に、上記後続CLの論理アドレスに実行されるハッシングアルゴリズムに基づいて、上記後続CLが上記複数セットのいずれに含まれるかを判定するものとする、項目1に記載のシステム。
(項目3) LLCキャッシュエビクションに関するヒューリスティクスを維持するキャッシュ監視回路をさらに備え、より低い優先度を有する後続CLを埋めるために空きを作るため、閾値よりも高い割合の高優先度を有するキャッシュラインがエビクションされる場合、上記高優先度に対する上記CLOSレジスタが、上記占有する最小および最大ウェイを増やすように更新される、項目1に記載のシステム。
(項目4) 上記複数のウェイは、それぞれN個のCLを含み、Nは1以上の正の整数である、項目1に記載のシステム。
(項目5) 上記より低い優先度を有する上記LRU CLが存在し、その代わりに上記後続CLを格納する際、上記CCCは、上記LRU CLを含むウェイ内にその他CLが存在する場合、上記その他CLをフラッシュさせるものである、項目1に記載のシステム。
(項目6) 上記LLCおよび上記CCCを内蔵し、それぞれ仮想マシンを実装する1または複数のコアを有するプロセッサをさらに備え、上記CCCはハイパーバイザを含む、項目1に記載のシステム。
(項目7) 上記プロセッサは、クラウドサービスプロバイダのデータセンタ内の複数のプロセッサの1つである、項目6に記載のシステム。
(項目8) 複数の優先度の1つにそれぞれ割り当てられた複数のウェイを有するラストレベルキャッシュ(LLC)であって、各優先度が、占有する最小および最大ウェイ数を指定するクラスオブサービス(CLOS)レジスタに関連付けられた、LLCを備えるシステムにおけるキャッシュ制御回路(CCC)によって実行される方法であって、上記複数の優先度のうちのある要求元優先度を有する後続キャッシュライン(CL)を、上記LLCに格納する要求を受信する段階と、上記LLC内に無効CLが存在する場合、上記無効CLに上記後続CLを格納する段階と、上記要求元優先度が上記複数の優先度のうちの最低のもので、1または複数である占有数を有する、または上記占有数が上記要求元優先度について最大である場合、上記後続CLを、上記要求元優先度の最も長く使われていない(Least Recently Used:LRU)CLの代わりに格納する段階と、上記占有数が上記要求元優先度について最小および上記最大の間である場合、上記要求元優先度またはそれより低い優先度のLRU CLの代わりに上記後続CLを格納する段階と、上記占有数が上記最小よりも低く、上記より低い優先度を有するCLが存在する場合、上記より低い優先度を有するLRU CLの代わりに上記後続CLを格納する段階と、無効CLまたは上記要求元優先度またはそれより低い優先度を有するCLが存在しない場合、より高い優先度のLRU CLの代わりに上記後続CLを格納する段階と、を含む、方法。
(項目9) 上記LLCは、複数セットのウェイを含み、上記複数のウェイは、上記複数セットの一部で、上記CCCは、上記後続CLをどこに格納するかを決定する前に、上記後続CLの論理アドレスに実行されるハッシングアルゴリズムに基づいて、上記後続CLが上記複数セットのいずれに含まれるかを判定するものとする、項目8に記載の方法。
(項目10) LLCキャッシュ監視回路を使用して、LLCキャッシュエビクションに関するヒューリスティクスを維持し、より低い優先度を有する後続CLを埋めるために空きを作るため、閾値よりも高い割合の高優先度を有するキャッシュラインがエビクションされる場合、上記高優先度に対するCLOSレジスタを、上記占有する最小および最大ウェイを増やすように更新する、項目8に記載の方法。
(項目11) 上記複数のウェイは、それぞれN個のCLを含み、Nは1以上の正の整数である、項目8に記載の方法。
(項目12) 上記より低い優先度を有する上記LRU CLが存在し、その代わりに上記後続CLを格納する際、上記CCCは、上記LRU CLを含むウェイ内にその他CLが存在する場合、上記その他CLをフラッシュさせるものである、項目8に記載の方法。
(項目13) 上記システムは、上記LLCおよび上記CCCを内蔵し、それぞれ仮想マシンを実装する1または複数のコアを有するプロセッサをさらに備え、上記CCCはハイパーバイザを含む、項目8に記載の方法。
(項目14) 上記プロセッサは、クラウドサービスプロバイダのデータセンタ内の複数のプロセッサの1つである、項目13に記載の方法。
(項目15) 複数の優先度の1つにそれぞれ割り当てられた複数のウェイを有するラストレベルキャッシュ(LLC)であって、各優先度が、占有する最小および最大ウェイ数を指定するクラスオブサービス(CLOS)レジスタに関連付けられた、LLCを備えるシステムにおけるキャッシュ制御回路(CCC)が応答する命令を含む非一時的なコンピュータ読み取り可能な媒体であって、上記応答は、上記複数の優先度のうちのある要求元優先度を有する後続キャッシュライン(CL)を、上記LLCに格納する要求を受信することと、上記LLC内に無効CLが存在する場合、上記無効CLに上記後続CLを格納することと、上記要求元優先度が上記複数の優先度のうちの最低のもので、1または複数である占有数を有する、または上記占有数が上記要求元優先度について最大である場合、上記後続CLを、上記要求元優先度の最も長く使われていない(Least Recently Used:LRU)CLの代わりに格納することと、上記占有数が上記要求元優先度について最小および上記最大の間である場合、上記要求元優先度またはそれより低い優先度のLRU CLの代わりに上記後続CLを格納することと、上記占有数が上記最小よりも低く、上記より低い優先度を有するCLが存在する場合、上記より低い優先度を有するLRU CLの代わりに上記後続CLを格納することと、無効CLまたは上記要求元優先度またはそれより低い優先度を有するCLが存在しない場合、より高い優先度のLRU CLの代わりに上記後続CLを格納することと、によって実施される、非一時的なコンピュータ読み取り可能な媒体。
(項目16) 上記LLCは、複数セットのウェイを含み、上記複数のウェイは、上記複数セットの一部で、上記CCCは、上記命令にさらに応答して、上記後続CLをどこに格納するかを決定する前に、上記後続CLの論理アドレスに実行されるハッシングアルゴリズムに基づいて、上記後続CLが上記複数セットのいずれに含まれるかを判定するものとする、項目15に記載の非一時的なコンピュータ読み取り可能な媒体。
(項目17) 上記システムは上記LLCおよび上記CCCを内蔵するプロセッサをさらに備え、上記プロセッサは、クラウドサービスプロバイダのデータセンタ内の複数のプロセッサの1つである、項目15に記載の非一時的なコンピュータ読み取り可能な媒体。
(項目18) 上記複数のウェイは、それぞれN個のCLを含み、Nは1以上の正の整数である、項目15に記載の非一時的なコンピュータ読み取り可能な媒体。
(項目19) 上記より低い優先度を有する上記LRU CLが存在し、その代わりに上記後続CLを格納する際、上記CCCは、上記LRU CLを含むウェイ内にその他CLが存在する場合、上記その他CLをフラッシュさせるものである、項目15に記載の非一時的コンピュータ読み取り可能な媒体。
(項目20) 上記システムは、上記LLCおよび上記CCCを内蔵し、それぞれ仮想マシンを実装する1または複数のコアを有するプロセッサをさらに備え、上記CCCはハイパーバイザを含む、項目15に記載の非一時的コンピュータ読み取り可能な媒体。

Claims (21)

  1. 複数の優先度の1つにそれぞれ割り当てられた複数のウェイを有するラストレベルキャッシュ(LLC)であって、各優先度が、占有する最小および最大ウェイ数を指定するクラスオブサービスレジスタ(CLOSレジスタ)に関連付けられた、LLCと、
    キャッシュ制御回路(CCC)であって
    前記LLC内に無効キャッシュライン(無効CL)が存在する場合、前記無効CLに、前記複数の優先度の1つである要求元優先度を有する後続キャッシュライン(後続CL)を格納し、
    前記要求元優先度が前記複数の優先度のうちの最低のもので、1または複数である占有数を有する、または前記占有数が前記要求元優先度について最大である場合、前記後続CLを、前記要求元優先度の最も長く使われていない(Least Recently Used:LRU)CLの代わりに格納し、
    前記占有数が前記要求元優先度について最小および前記最大の間である場合、前記要求元優先度またはそれより低い優先度のLRU CLの代わりに前記後続CLを格納し、
    前記占有数が前記最小よりも低く、前記より低い優先度を有するCLが存在する場合、前記より低い優先度を有するLRU CLの代わりに前記後続CLを格納し、
    無効CLまたは前記要求元優先度またはそれより低い優先度を有するCLが存在しない場合、より高い優先度のLRU CLの代わりに前記後続CLを格納する、CCCと、
    を備える、システム。
  2. 前記LLCは、複数セットのウェイを含み、前記複数のウェイは、前記複数セットの一部で、前記CCCは、前記後続CLをどこに格納するかを決定する前に、前記後続CLの論理アドレスに実行されるハッシングアルゴリズムに基づいて、前記後続CLが前記複数セットのいずれに含まれるかを判定するものとする、請求項1に記載のシステム。
  3. LLCキャッシュエビクションに関するヒューリスティクスを維持するキャッシュ監視回路をさらに備え、
    より低い優先度を有する後続CLを埋めるために空きを作るため、閾値よりも高い割合の高優先度を有するキャッシュラインがエビクションされる場合、前記高優先度に対する前記CLOSレジスタが、前記占有する最小および最大ウェイを増やすように更新される、請求項1に記載のシステム。
  4. 前記複数のウェイは、それぞれN個のCLを含み、Nは1以上の正の整数である、請求項1に記載のシステム。
  5. 前記より低い優先度を有する前記LRU CLが存在し、その代わりに前記後続CLを格納する際、前記CCCは、前記LRU CLを含むウェイ内にその他CLが存在する場合、前記その他CLをフラッシュさせるものである、請求項1に記載のシステム。
  6. 前記LLCおよび前記CCCを内蔵し、それぞれ仮想マシンを実装する1または複数のコアを有するプロセッサをさらに備え、前記CCCはハイパーバイザを含む、請求項1から5のいずれか一項に記載のシステム。
  7. 前記プロセッサは、クラウドサービスプロバイダのデータセンタ内の複数のプロセッサの1つである、請求項6に記載のシステム。
  8. 複数の優先度の1つにそれぞれ割り当てられた複数のウェイを有するラストレベルキャッシュ(LLC)であって、各優先度が、占有する最小および最大ウェイ数を指定するクラスオブサービスレジスタ(CLOSレジスタ)に関連付けられた、LLCを備えるシステムにおけるキャッシュ制御回路(CCC)によって実行される方法であって、
    前記複数の優先度のうちのある要求元優先度を有する後続キャッシュライン(後続CL)を、前記LLCに格納する要求を受信する段階と、
    前記LLC内に無効CLが存在する場合、前記無効CLに前記後続CLを格納する段階と、
    前記要求元優先度が前記複数の優先度のうちの最低のもので、1または複数である占有数を有する、または前記占有数が前記要求元優先度について最大である場合、前記後続CLを、前記要求元優先度の最も長く使われていない(Least Recently Used:LRU)CLの代わりに格納する段階と、
    前記占有数が前記要求元優先度について最小および前記最大の間である場合、前記要求元優先度またはそれより低い優先度のLRU CLの代わりに前記後続CLを格納する段階と、
    前記占有数が前記最小よりも低く、前記より低い優先度を有するCLが存在する場合、前記より低い優先度を有するLRU CLの代わりに前記後続CLを格納する段階と、
    無効CLまたは前記要求元優先度またはそれより低い優先度を有するCLが存在しない場合、より高い優先度のLRU CLの代わりに前記後続CLを格納する段階と、
    を含む、方法。
  9. 前記LLCは、複数セットのウェイを含み、前記複数のウェイは、前記複数セットの一部で、前記CCCは、前記後続CLをどこに格納するかを決定する前に、前記後続CLの論理アドレスに実行されるハッシングアルゴリズムに基づいて、前記後続CLが前記複数セットのいずれに含まれるかを判定するものとする、請求項8に記載の方法。
  10. LLCキャッシュ監視回路を使用して、LLCキャッシュエビクションに関するヒューリスティクスを維持し、
    より低い優先度を有する後続CLを埋めるために空きを作るため、閾値よりも高い割合の高優先度を有するキャッシュラインがエビクションされる場合、前記高優先度に対する前記CLOSレジスタを、前記占有する最小および最大ウェイを増やすように更新する、請求項8に記載の方法。
  11. 前記複数のウェイは、それぞれN個のCLを含み、Nは1以上の正の整数である、請求項8に記載の方法。
  12. 前記より低い優先度を有する前記LRU CLが存在し、その代わりに前記後続CLを格納する際、前記CCCは、前記LRU CLを含むウェイ内にその他CLが存在する場合、前記その他CLをフラッシュさせるものである、請求項8に記載の方法。
  13. 前記システムは、前記LLCおよび前記CCCを内蔵し、それぞれ仮想マシンを実装する1または複数のコアを有するプロセッサをさらに備え、前記CCCはハイパーバイザを含む、請求項8から12のいずれか一項に記載の方法。
  14. 前記プロセッサは、クラウドサービスプロバイダのデータセンタ内の複数のプロセッサの1つである、請求項13に記載の方法。
  15. 複数の優先度の1つにそれぞれ割り当てられた複数のウェイを有するラストレベルキャッシュ(LLC)であって、各優先度が、占有する最小および最大ウェイ数を指定するクラスオブサービス(CLOS)レジスタに関連付けられた、LLCを備えるシステムにおけるキャッシュ制御回路(CCC)が応答する命令を含むコンピュータプログラムであって、前記応答は、
    前記複数の優先度のうちのある要求元優先度を有する後続キャッシュライン(後続CL)を、前記LLCに格納する要求を受信することと、
    前記LLC内に無効CLが存在する場合、前記無効CLに前記後続CLを格納することと、
    前記要求元優先度が前記複数の優先度のうちの最低のもので、1または複数である占有数を有する、または前記占有数が前記要求元優先度について最大である場合、前記後続CLを、前記要求元優先度の最も長く使われていない(Least Recently Used:LRU)CLの代わりに格納することと、
    前記占有数が前記要求元優先度について最小および前記最大の間である場合、前記要求元優先度またはそれより低い優先度のLRU CLの代わりに前記後続CLを格納することと、
    前記占有数が前記最小よりも低く、前記より低い優先度を有するCLが存在する場合、前記より低い優先度を有するLRU CLの代わりに前記後続CLを格納することと、
    無効CLまたは前記要求元優先度またはそれより低い優先度を有するCLが存在しない場合、より高い優先度のLRU CLの代わりに前記後続CLを格納することと、
    によって実施される、コンピュータプログラム。
  16. 前記LLCは、複数セットのウェイを含み、前記複数のウェイは、前記複数セットの一部で、前記CCCは、前記命令にさらに応答して、前記後続CLをどこに格納するかを決定する前に、前記後続CLの論理アドレスに実行されるハッシングアルゴリズムに基づいて、前記後続CLが前記複数セットのいずれに含まれるかを判定するものとする、請求項15に記載のコンピュータプログラム。
  17. 前記システムは前記LLCおよび前記CCCを内蔵するプロセッサをさらに備え、前記プロセッサは、クラウドサービスプロバイダのデータセンタ内の複数のプロセッサの1つである、請求項15に記載のコンピュータプログラム。
  18. 前記複数のウェイは、それぞれN個のCLを含み、Nは1以上の正の整数である、請求項15に記載のコンピュータプログラム。
  19. 前記より低い優先度を有する前記LRU CLが存在し、その代わりに前記後続CLを格納する際、前記CCCは、前記LRU CLを含むウェイ内にその他CLが存在する場合、前記その他CLをフラッシュさせるものである、請求項15に記載のコンピュータプログラム。
  20. 前記システムは、前記LLCおよび前記CCCを内蔵し、それぞれ仮想マシンを実装する1または複数のコアを有するプロセッサをさらに備え、前記CCCはハイパーバイザを含む、請求項15から19のいずれか一項に記載のコンピュータプログラム。
  21. 請求項15から20のいずれか一項に記載のコンピュータプログラムを格納する非一時的なコンピュータ読み取り可能な媒体。
JP2020150869A 2019-11-26 2020-09-08 フレキシブルなキャッシュ割り当て技術の優先度ベースのキャッシュラインエビクションアルゴリズム Pending JP2021086612A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/696,548 2019-11-26
US16/696,548 US11656997B2 (en) 2019-11-26 2019-11-26 Flexible cache allocation technology priority-based cache line eviction algorithm

Publications (1)

Publication Number Publication Date
JP2021086612A true JP2021086612A (ja) 2021-06-03

Family

ID=72659026

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020150869A Pending JP2021086612A (ja) 2019-11-26 2020-09-08 フレキシブルなキャッシュ割り当て技術の優先度ベースのキャッシュラインエビクションアルゴリズム

Country Status (5)

Country Link
US (2) US11656997B2 (ja)
EP (2) EP4307130A3 (ja)
JP (1) JP2021086612A (ja)
CN (2) CN112948285A (ja)
BR (1) BR102020019663A2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113821324B (zh) * 2021-09-17 2022-08-09 海光信息技术股份有限公司 处理器的高速缓存系统、方法、设备和计算机介质
US20230236973A1 (en) * 2022-01-21 2023-07-27 Centaur Technology, Inc. Cat aware loads and software prefetches
US11947462B1 (en) 2022-03-03 2024-04-02 Apple Inc. Cache footprint management

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7725657B2 (en) 2007-03-21 2010-05-25 Intel Corporation Dynamic quality of service (QoS) for a shared cache
US8677071B2 (en) * 2010-03-26 2014-03-18 Virtualmetrix, Inc. Control of processor cache memory occupancy
EP2664993A1 (en) 2011-01-12 2013-11-20 Fujitsu Limited Cache memory device, cache memory control device, information processing device, cache memory control method, and threshold value determination program for cache memory device
US9582430B2 (en) * 2015-03-27 2017-02-28 Intel Corporation Asymmetric set combined cache
US9734070B2 (en) 2015-10-23 2017-08-15 Qualcomm Incorporated System and method for a shared cache with adaptive partitioning

Also Published As

Publication number Publication date
CN117609109A (zh) 2024-02-27
EP4307130A3 (en) 2024-05-01
US20210157739A1 (en) 2021-05-27
BR102020019663A2 (pt) 2021-06-08
CN112948285A (zh) 2021-06-11
EP3828714A1 (en) 2021-06-02
US20230409485A1 (en) 2023-12-21
EP3828714B1 (en) 2024-04-03
US11656997B2 (en) 2023-05-23
EP4307130A2 (en) 2024-01-17

Similar Documents

Publication Publication Date Title
US9606936B2 (en) Generalized control registers
CN111752867A (zh) 共享加速器存储器系统和方法
JP7244046B2 (ja) 遠隔アトミックオペレーションの空間的・時間的マージ
US20210255865A1 (en) Apparatus and method for configuring sets of interrupts
US20220229661A1 (en) Method and apparatus for performing reduction operations on a plurality of associated data element values
US8850436B2 (en) Opcode-specified predicatable warp post-synchronization
US10503550B2 (en) Dynamic performance biasing in a processor
JP2021086612A (ja) フレキシブルなキャッシュ割り当て技術の優先度ベースのキャッシュラインエビクションアルゴリズム
JP2018500660A (ja) ベクトルインデックスロードおよびストアのための方法および装置
CN109416640B (zh) 孔径访问处理器、方法、系统和指令
US11550731B2 (en) Processing method and apparatus for translation lookaside buffer flush instruction
CN111752615A (zh) 用于确保多线程处理器核的服务质量的装置、方法和系统
JP2021051727A (ja) グラフアプリケーション内の圧縮されたリストに効率的にアクセスするための間接参照のロード及びストアへのisaサポートのシステム及び方法
EP3575955A1 (en) Indirect memory fetcher
US10310978B2 (en) Apparatus and method for multi-level cache request tracking
TWI830927B (zh) 用於處理器非回寫能力的設備、方法、及非暫時性機器可讀取媒體
US10956327B2 (en) Systems and methods for mitigating dram cache conflicts through hardware assisted redirection of pages (HARP)
WO2019105566A1 (en) Systems and methods for clustering sub-pages of physical memory pages
EP4124965A1 (en) Scalable access control checking for cross-address-space data movement
US20190213120A1 (en) Reservation architecture for overcommitted memory
JP2022151658A (ja) コアにおけるメモリ帯域幅制御
US11886910B2 (en) Dynamic prioritization of system-on-chip interconnect traffic using information from an operating system and hardware
CN117355816A (zh) 用于设备转译后备缓冲器预转译指令和对输入/输出存储器管理单元协议的扩展的装置、方法和系统
US20220100511A1 (en) Delayed cache writeback instructions for improved data sharing in manycore processors
US20210406055A1 (en) System, apparatus and method for enabling fine-grain quality of service or rate control for work submissions

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230904