JP2020531950A - サービスレベル合意に基づいたキャッシング用の方法及びシステム - Google Patents
サービスレベル合意に基づいたキャッシング用の方法及びシステム Download PDFInfo
- Publication number
- JP2020531950A JP2020531950A JP2020506744A JP2020506744A JP2020531950A JP 2020531950 A JP2020531950 A JP 2020531950A JP 2020506744 A JP2020506744 A JP 2020506744A JP 2020506744 A JP2020506744 A JP 2020506744A JP 2020531950 A JP2020531950 A JP 2020531950A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- ram
- processing unit
- thread
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/224—Disk storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/25—Using a specific main memory architecture
- G06F2212/251—Local memory within processor subsystem
- G06F2212/2515—Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/304—In main memory subsystem
- G06F2212/3042—In main memory subsystem being part of a memory device, e.g. cache DRAM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/314—In storage network, e.g. network attached cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
サービスプロバイダのコンピュータシステムは、ユーザによって発行されたスレッドを実行する処理ユニットと、処理ユニットの外部に配置されたランダムアクセスメモリ(RAM)キャッシュであって、処理ユニットによってアクセスされたか又はアクセスされるデータを格納するために、処理ユニットに動作可能に結合されたランダムアクセスメモリ(RAM)キャッシュと、を含む。処理ユニットは、スレッドが実行されている間のアクセス要求の受信に応じて、スレッドが、サービスプロバイダとユーザとの間に確立されたサービスレベル合意(SLA)レベルに従って、RAMキャッシュにアクセスすることを許可されるかどうかを判定するように、且つスレッドが、RAMキャッシュ可能である場合に、RAMキャッシュにアクセスするように構成された制御回路を含む。
Description
技術分野
[0001] 本開示は、一般にコンピュータアーキテクチャの技術分野に関し、特にサービスレベル合意に基づいたキャッシング用の方法及びシステムに関する。
[0001] 本開示は、一般にコンピュータアーキテクチャの技術分野に関し、特にサービスレベル合意に基づいたキャッシング用の方法及びシステムに関する。
背景
[0002] 今日の商用プロセッサ(例えば中央処理装置(CPU))は、高スレッドレベル並列性とともに高コンピュータ密度を必要とする作業量をサポートするために、単一ダイ上にますます大きなコアを集積している。しかしながら、CPUは、メモリ帯域幅の壁に直面している。成長し続けているCPUコアから生み出されるメモリトラフィックをサポートするために必要とされるメモリ帯域幅の量は、CPUコアが成長しているペースに遅れずについていくことができない。メモリトラフィックを低減する1つの方法は、大きな埋め込みキャッシュをCPUに集積することである。大きなDRAMキャッシュを組み込むことは、一連の実際的な設計問題を引き起こし、従って、大きな埋め込みキャッシュを管理するためにデバイスを高価にする。
[0002] 今日の商用プロセッサ(例えば中央処理装置(CPU))は、高スレッドレベル並列性とともに高コンピュータ密度を必要とする作業量をサポートするために、単一ダイ上にますます大きなコアを集積している。しかしながら、CPUは、メモリ帯域幅の壁に直面している。成長し続けているCPUコアから生み出されるメモリトラフィックをサポートするために必要とされるメモリ帯域幅の量は、CPUコアが成長しているペースに遅れずについていくことができない。メモリトラフィックを低減する1つの方法は、大きな埋め込みキャッシュをCPUに集積することである。大きなDRAMキャッシュを組み込むことは、一連の実際的な設計問題を引き起こし、従って、大きな埋め込みキャッシュを管理するためにデバイスを高価にする。
概要
[0003] 本開示の実施形態は、サービスプロバイダのコンピュータシステムを提供する。コンピュータシステムは、ユーザによって発行されたスレッドを実行する処理ユニットと、処理ユニットの外部に配置されたランダムアクセスメモリ(RAM)キャッシュであって、処理ユニットによってアクセスされたか又はアクセスされるデータを格納するために、処理ユニットに動作可能に結合されたランダムアクセスメモリ(RAM)キャッシュと、を含む。処理ユニットは、スレッドが実行されている間のアクセス要求の受信に応じて、スレッドが、サービスプロバイダとユーザとの間に確立されたサービスレベル合意(SLA)レベルに従って、RAMキャッシュにアクセスすることを許可されるかどうかを判定するように、且つスレッドが、RAMキャッシュ可能である場合に、RAMキャッシュにアクセスするように構成された制御回路を含む。
[0003] 本開示の実施形態は、サービスプロバイダのコンピュータシステムを提供する。コンピュータシステムは、ユーザによって発行されたスレッドを実行する処理ユニットと、処理ユニットの外部に配置されたランダムアクセスメモリ(RAM)キャッシュであって、処理ユニットによってアクセスされたか又はアクセスされるデータを格納するために、処理ユニットに動作可能に結合されたランダムアクセスメモリ(RAM)キャッシュと、を含む。処理ユニットは、スレッドが実行されている間のアクセス要求の受信に応じて、スレッドが、サービスプロバイダとユーザとの間に確立されたサービスレベル合意(SLA)レベルに従って、RAMキャッシュにアクセスすることを許可されるかどうかを判定するように、且つスレッドが、RAMキャッシュ可能である場合に、RAMキャッシュにアクセスするように構成された制御回路を含む。
[0004] 本開示の実施形態はまた、サービスプロバイダのコンピュータシステムにおけるシステムカーネルを操作するための方法を提供する。コンピュータシステムは、処理ユニットと、処理ユニットの外部のランダムアクセスメモリ(RAM)キャッシュであって、処理ユニットに動作可能に結合されたランダムアクセスメモリ(RAM)キャッシュと、を含む。方法は、ユーザによって発行されたスレッドを受信することと、サービスプロバイダとユーザとの間に確立されたサービスレベル合意(SLA)レベルを検索することと、SLAレベルに基づいて、スレッドが、RAMキャッシュを評価することを許可されるかどうかを判定することと、を含む。
[0005] 本開示の実施形態は、サービスプロバイダのコンピュータシステムにおける処理ユニットを操作するための方法を更に提供し、コンピュータシステムは、処理ユニットの外部のランダムアクセスメモリ(RAM)キャッシュであって、処理ユニットに動作可能に結合されたランダムアクセスメモリ(RAM)キャッシュを含む。方法は、ユーザによって発行されたスレッドが実行されている間に、アクセス要求を受信することと、スレッドが、サービスプロバイダとユーザとの間に確立されたサービスレベル合意(SLA)レベルに従って、RAMキャッシュにアクセスすることを許可されるかどうかを判定することと、スレッドが、RAMキャッシュ可能である場合に、RAMキャッシュにアクセスすることと、を含む。
図面の簡単な説明
[0006]CPUチップの例示的な構成を概略的に示す。
[0006]CPUチップの例示的な構成を概略的に示す。
[0007]例示的な処理システムを概略的に示す。
[0008]例示的な処理システムにおけるメモリアクセス用の例示的なプロセスの流れ図である。
[0009]例示的な処理システムを概略的に示す。
[0010]処理システムにおけるメモリアクセス用の例示的なプロセスの流れ図である。
[0011]開示される実施形態と一致する処理システムを概略的に示す。
[0012]サービスプロバイダによってユーザに提供されるSLAの幾つかのレベルを定義する例示的な表を示す。
[0013]開示される実施形態と一致する例示的な処理システムにおけるスレッド割り当て用の例示的なプロセスの流れ図である。
[0014]開示される実施形態と一致する例示的な処理システムにおけるスレッド実行用の例示的なプロセスの流れ図である。
実施形態の説明
[0015] ここで、例示的な実施形態が詳細に参照され、それらの実施形態の例が、添付の図面に示されている。以下の説明は、添付の図面に言及するが、相異なる図面における同じ番号は、別段の表明がない限り、同じ又は同様の要素を表す。例示的な実施形態の以下の説明で明らかにされる実装形態は、本発明と一致する全ての実装形態を表すわけではない。代わりに、それらは、添付の特許請求の範囲で列挙されるような本発明に関係する態様と一致する機器及び方法の単なる例である。
[0015] ここで、例示的な実施形態が詳細に参照され、それらの実施形態の例が、添付の図面に示されている。以下の説明は、添付の図面に言及するが、相異なる図面における同じ番号は、別段の表明がない限り、同じ又は同様の要素を表す。例示的な実施形態の以下の説明で明らかにされる実装形態は、本発明と一致する全ての実装形態を表すわけではない。代わりに、それらは、添付の特許請求の範囲で列挙されるような本発明に関係する態様と一致する機器及び方法の単なる例である。
[0016] 今日の商用プロセッサ(例えば中央処理装置(CPU))は、高スレッドレベル並列性とともに高コンピュータ密度を要求する作業量をサポートするために、単一ダイ上にますます大きなコアを集積している。しかしながら、サーバにおいて提供されるメモリ帯域幅の量は、はるかに低いペースで成長している、サーバにおけるCPUチップ上のピン数によって常に制限されている。全てのコア又はスレッドのスムーズな動作を保つための十分なメモリ帯域幅を提供することは、これらのマルチコアアーキテクチャにおいて依然としてかなりの難問である。
[0017] メモリ帯域幅問題に取り組む1つの方法は、大きな埋め込みランダムアクセスメモリ(RAM)キャッシュをCPUチップ上に集積することである。RAMキャッシュは、ダイナミックランダムアクセスメモリ(DRAM)キャッシュ、磁気抵抗ランダムアクセスメモリ(MRAM)キャッシュ、抵抗変化型メモリ(ReRAM)キャッシュ、相変化ランダムアクセスメモリ(PCRAM)キャッシュ、及び強誘電体ランダムアクセスメモリ(FeRAM)キャッシュの1つとすることができる。以下の説明において、DRAMキャッシュが、例として用いられる。従来のCPUキャッシュが構築されるスタティックランダムアクセスメモリ(SRAM)及びレジスタファイル(RF)と比較して、DRAMは、はるかに高い密度を有し、従って大きな記憶容量を備えたキャッシュを提供することができる。DRAMキャッシュは、それ自体のダイ上に存在し、且つCPUチップを形成するためにCPUダイに接続することができる。
[0018] 本明細書で説明される実施形態は、例えばDRAMキャッシュに関連するハードウェア設計の複雑さを軽減するためのアプローチを開示する。DRAMキャッシュアクセスは、サービスレベル合意(SLA)によって定義されたアプリケーションにのみ与えられ、それらのアプリケーションがDRAMキャッシュの利益を享受できるようにするが、一方で、持続可能なレベルにおいてやはりメモリ帯域幅の使用を制限する。
[0019] 図1(a)は、3次元(3D)スタッキング構成を有する例示的なCPUチップ110を概略的に示す。CPUチップ110において、CPUダイ112は、DRAMダイ114上に垂直に積み重ねられる。CPUダイ112及びDRAMダイ114は、複数のシリコン貫通ビア116を介して互いに結合される。CPUダイ112及びDRAMダイ114のスタックは、外部装置(図示せず)に結合される複数のピン120を有する基板118上に配置される。
[0020] 図1(b)は、マルチチップパッケージング(MCP)構造を有する例示的なCPUチップ130を概略的に示す。CPUチップ130において、CPUダイ132及びDRAMダイ134は、基板138上に並んで配置される。CPUダイ132及びDRAMダイ134は、複数のMCPリンク136を介して互いに結合される。基板138は、外部装置(図示せず)に結合される複数のピン140を有する。
[0021] CPUチップ上にDRAMキャッシュを集積することは、CPU設計に影響する可能性がある。CPUチップ上にDRAMキャッシュを集積することが、CPU設計にどのように影響し得るかを理解するために、CPUチップによってメモリにアクセスするための従来の方法が、第1に説明される。
[0022] 図2は、例示的な処理システム200を概略的に示す。処理システム200は、互いに結合された処理ユニット210及びDRAMキャッシュ250を含む。処理ユニット210及びDRAMキャッシュ250は、CPUチップ(例えばCPUチップ110又は130)に含むことができ、CPUチップにおいて、処理ユニット210は、CPUダイ(例えばCPUダイ112又は132)に配置され、DRAMキャッシュ250は、CPUダイから物理的に分離されたDRAMダイ(例えばDRAMダイ114又は134)に配置される。
[0023] 処理ユニット210は、互いに結合された処理コア220及びキャッシュ230と、処理ユニット210の動作を制御する制御回路240と、を含む。処理ユニット210はまた、処理コア220によってアクセスされるデータを格納できるメインメモリ280に結合される。キャッシュ230及びDRAMキャッシュ250は、メインメモリ280に格納されたデータのサブセットを格納する中間バッファとして用いることができる。データのサブセットは、典型的には、処理コア220によって最も最近アクセスされたデータであり、且つデータ読み出し動作においてメインメモリ280から取得されたデータ、又はデータ書き込み動作においてメインメモリ280に格納されるデータを含むことができる。時間的及び空間的位置ゆえに、かかるデータは、処理コア220によって再びアクセスされる可能性が高い。
[0024] キャッシュ230は、タグアレイ232及びデータアレイ234を含む。データアレイ234は、処理コア220によってアクセスされた(又はアクセスされると思われる)メインメモリ280から取得されたデータをそれぞれ格納する複数のデータエントリ234aを含む。タグアレイ232は、データアレイ234における複数のデータエントリ234aにそれぞれ対応する複数のタグエントリ232aを含む。各タグエントリ232aは、対応するデータエントリ234aにおけるデータのアドレスタグ及び状態情報を格納する。
[0025] 同様に、DRAMキャッシュ250は、DRAMキャッシュタグアレイ252及びDRAMキャッシュデータアレイ254を含む。DRAMキャッシュデータアレイ254は、処理コア220によってアクセスされるデータをそれぞれ格納する複数のデータエントリ254aを含む。DRAMキャッシュタグアレイ252は、DRAMキャッシュデータアレイ254における複数のデータエントリ254aにそれぞれ対応する複数のタグエントリ232aを含む。DRAMキャッシュタグアレイ252における各タグエントリ252aは、対応するデータエントリ234aに格納されたデータのアドレスタグ及び状態情報を格納する。
[0026] 図3は、例示的な処理システム(例えば処理システム200)におけるメモリアクセス用の例示的なプロセス300の流れ図である。プロセス300は、ハードウェア(例えば回路、専用論理、プログラマブル論理、マイクロコード等)、ソフトウェア(例えば機能ユニットによって実行される操作)、ファームウェア、又はそれらの組み合わせを含む処理論理によって実行することができる。幾つかの実施形態において、プロセス300は、処理システムの制御回路(例えば制御回路240)によって実行される。代替として、プロセス300におけるステップの幾つか又は全ては、処理システムにおける他のコンポーネントによって実行されてもよい。
[0027] ステップ310において、制御回路は、処理コア220によって発行されたアクセス要求を受信する。アクセス要求は、アドレスタグに関連するメモリ位置からデータを読み出すための読み出し要求、又はアドレスタグに関連するメモリ位置にデータを書き込むための書き込み要求とすることができる。ステップ312において、制御回路は、アクセス要求に含まれるアドレスタグをキャッシュタグアレイに格納されたアドレスタグと比較することによって、アドレスタグ及び状態情報を格納するキャッシュ(例えばキャッシュ230)におけるキャッシュタグアレイ(例えばタグアレイ232)をチェックする。ステップ314において、制御回路は、アクセス要求が、キャッシュヒットか又はキャッシュミスかどうかを判定する。キャッシュヒットは、キャッシュが、要求されたデータの有効なコピーを格納している場合に発生し、キャッシュミスは、キャッシュが、要求されたデータの有効なコピーを格納していない場合に発生する。要求が、キャッシュヒットである場合に(ステップ314:Yes)、ステップ316において、制御回路は、キャッシュデータアレイ(例えばデータアレイ234)にアクセスする。アクセス要求が、読み出し要求である場合に、制御回路は、要求されたデータをキャッシュデータアレイから読み出す。アクセス要求が、書き込み要求である場合に、制御回路は、キャッシュデータアレイにデータを書き込む。そうではなく、アクセス要求が、キャッシュミスである場合に(ステップ314:No)、ステップ318において、制御回路は、アクセス要求に含まれたアドレスタグをDRAMキャッシュタグアレイに格納されたアドレスタグと比較することによって、DRAMキャッシュタグアレイ(例えばDRAMキャッシュタグアレイ252)をチェックする。ステップ320において、制御回路は、アクセス要求が、DRAMキャッシュヒットか又はDRAMキャッシュミスかどうかを判定する。DRAMキャッシュヒットは、DRAMキャッシュが、要求されたデータの有効なコピーを格納している場合に発生し、DRAMキャッシュミスは、DRAMキャッシュが、要求されたデータの有効なコピーを格納していない場合に発生する。DRAMキャッシュヒットが発生した場合に(ステップ320:Yes)、ステップ322において、制御回路は、DRAMキャッシュデータアレイからデータを読み出すか、又はDRAMキャッシュデータアレイにデータを書き込むために、DRAMキャッシュデータアレイ(例えばDRAMキャッシュデータアレイ254)にアクセスする。そうではなく、DRAMキャッシュミスが発生した場合に(ステップ320:No)、ステップ324において、制御回路は、メインメモリからデータを読み出すか、又はメインメモリにデータを書き込むために、メインメモリ(例えばメインメモリ280)にアクセスする。ステップ316、322、又は324を完了した後で、制御回路は、プロセス300を終了する。
[0028] 3Dスタッキング又はMCP方式で集積されたDRAMキャッシュを用いると、CPUが、DRAMキャッシュダイ上のDRAMキャッシュにアクセスする待ち時間は、わずかではない。これは、シリコン貫通ビア(例えばシリコン貫通ビア116)又はMCPリンク(例えばMCPリンク136)を通るダイ間通信が、含まれるからである。これらの待ち時間は、CPUダイ上に配置されたラストレベルキャッシュ(LLC)にアクセスするより2倍又はそれより更に高くなる可能性がある。DRAMキャッシュミスが発生し、DRAMキャッシュが、要求されたデータを供給できない場合に、CPUは、要求されたデータをCPUチップの外部のメインメモリから引き出す必要があり、従って全データ経路は、著しく長くされ、性能を損なう。
[0029] 上記で説明された問題を軽減するために、DRAMキャッシュタグアレイは、DRAMキャッシュダイ上のDRAMキャッシュデータアレイとは別にCPUダイ上に配置される。図4は、かかる構成を有する例示的な処理システム400を概略的に示す。図4に示されているように、処理システム400は、処理ユニット410と、処理ユニット410に結合されたDRAMキャッシュ450と、処理ユニット410に結合されたメインメモリ480と、を含む。処理ユニット410及びDRAMキャッシュ450は、CPUチップ(例えばCPUチップ110又は130)に含むことができ、その場合に、処理ユニット410は、CPUダイ(例えば、CPUダイ112又は132)に配置され、DRAMキャッシュ450は、CPUダイから物理的に分離されたDRAMダイ(例えば、DRAMダイ114又は134)に配置される。処理ユニット410は、複数の処理コア422と、複数の処理コア422にそれぞれ対応してそれらに結合され、且つネットワークオンチップ(NoC)426に結合された複数のレベル2キャッシュ(L2C)と、を含む。加えて、処理ユニット410は、NoC426に結合されたDRAMキャッシュタグアレイ428及びラストレベルキャッシュ(LLC)430と、制御回路440と、を含む。メインメモリ480は、処理ユニット410によってアクセスされるデータを格納することができる。L2C 424、LLC 430、及びDRAMキャッシュ450は、メインメモリ480に格納されたデータのサブセットを格納する中間バッファとして用いることができる。L2C 424のそれぞれ1つは、処理コア422の対応する1つによってアクセスされるデータのサブセットを格納する。LLC 430は、処理コア422のいずれか1つによってアクセスされるデータのサブセットを格納する。
[0030] DRAMキャッシュ450は、処理コア422によってアクセスされるデータをそれぞれ格納する複数のデータエントリを含むDRAMキャッシュデータアレイ452を含む。処理ユニット410に含まれるDRAMキャッシュタグアレイ428は、DRAMキャッシュデータアレイ452における複数のデータエントリにそれぞれ対応する複数のタグエントリを含む。DRAMキャッシュタグアレイ428における各タグエントリは、DRAMキャッシュデータアレイ452における対応するデータエントリに格納されたデータのアドレスタグ及び状態情報を格納する。図4には示されていないが、L2C 424及びLLC 430のそれぞれ1つは、データを格納するデータアレイと、データアレイに格納されたデータのアドレスタグ及び状態情報を格納するタグアレイと、を含むことができる。
[0031] 図5は、処理システム(例えば処理システム400)におけるメモリアクセス用の例示的なプロセス500の流れ図である。プロセス500は、ハードウェア(例えば回路、専用論理、プログラマブル論理、マイクロコード等)、ソフトウェア(例えば機能ユニットによって実行される操作)、ファームウェア、又はそれらの組み合わせを含む処理論理によって実行することができる。幾つかの実施形態において、プロセス500は、処理システムの制御回路(例えば制御回路440)によって実行される。代替として、プロセス500のステップの幾つか又は全ては、例示的な処理システムの他のコンポーネントによって実行されてもよい。
[0032] ステップ510において、制御回路は、処理コア422の1つからアクセス要求を受信する。アクセス要求は、アドレスタグに関連するメモリ位置からデータを読み出すための読み出し要求、又はアドレスタグに関連するメモリ位置にデータを書き込むための書き込み要求とすることができる。ステップ512において、制御回路は、アクセス要求が、L2Cキャッシュミスであると判定する。例えば、制御回路は、L2C(例えばL2C 424)のそれぞれ1つにおけるタグアレイをチェックし、且つL2Cのどれも、要求されたデータの有効なコピーを格納していないと判定する。ステップ514において、制御回路は、アクセス要求に含まれたアドレスタグをDRAMキャッシュタグアレイに格納されたアドレスタグと比較することによって、DRAMキャッシュタグアレイ(例えばDRAMキャッシュタグアレイ428)をチェックする。同時に、ステップ516において、制御回路は、アクセス要求に含まれたアドレスタグをLLCタグアレイに格納されたアドレスタグと比較することによって、LLC(例えばLLC 430)におけるLLCタグアレイをチェックする。換言すれば、DRAMキャッシュタグアレイは、LLCタグアレイのチェック(ステップ516)と同時にチェックされる(ステップ514)。
[0033] ステップ518において、制御回路は、アクセス要求が、LLCヒットか又はLLCミスかどうかを判定する。LLCヒットは、LLCが、要求されたデータの有効なコピーを格納している場合に発生し、LLCミスは、LLCが、要求されたデータの有効なコピーを格納していない場合に発生する。アクセス要求が、LLCヒットである場合に(ステップ518:Yes)、ステップ526において、制御回路は、LLCからデータを読み出すか又はLLCにデータを書き込むためにLLCにアクセスする。
[0034] アクセス要求が、LLCミスである場合に(ステップ518:No)、ステップ520において、制御回路は、アクセス要求が、DRAMキャッシュヒットか又はDRAMキャッシュミスかどうかを判定する。DRAMキャッシュヒットは、DRAMキャッシュが、要求されたデータの有効なコピーを格納している場合に発生し、DRAMキャッシュミスは、DRAMキャッシュが、要求されたデータの有効なコピーを格納していない場合に発生する。アクセス要求が、DRAMキャッシュヒットである場合に(ステップ520:Yes)、ステップ524において、制御回路は、DRAMキャッシュからデータを読み出すか又はDRAMキャッシュにデータを書き込むためにDRAMキャッシュにアクセスする。アクセス要求が、DRAMキャッシュミスである場合に(ステップ520:No)、ステップ522において、制御回路は、メインメモリからデータを読み出すか又はメインメモリにデータを書き込むために、メインメモリ(例えばメインメモリ480)にアクセスする。ステップ522、524、又は526を完了した後で、制御回路は、プロセス500を終了する。
[0035] プロセス500において、DRAMキャッシュアレイは、LLCタグアレイのチェック(ステップ516)と同時にチェックされる(ステップ514)。従って、LLCミスが検出される時までに、制御回路は、DRAMキャッシュが、要求されたデータのコピーを有するか否かを既に知っており、且つDRAMヒットが検出された場合にDRAMキャッシュダイにおけるDRAMキャッシュにアクセスしさえすればよい。しかしながら、DRAMキャッシュタグアレイをCPUダイ上に配置することは、LLCの貴重なスペースを消費する。通常の64バイトキャッシュラインサイズを用いると、256MBのDRAMキャッシュは、11MBを超えるタグスペースを必要とすることになり、それは、LLCのサイズのおよそ1/4である。キャッシュラインは、キャッシュの粒度、即ちキャッシュにおけるデータの最小単位を指す。タグスペースオーバーヘッドを低減する1つの方法は、キャッシュラインサイズを拡大させることである。キャッシュラインサイズを4KBに増加させることは、256MBのDRAMキャッシュのタグスペースオーバーヘッドをたった100KBに低減することになろう。しかしながら、より大きなキャッシュラインを有することは、次のことを示唆する。即ち、DRAMキャッシュミスが発生した場合に、制御回路が、より大きなキャッシュラインを満たすために、メインメモリからより大きなデータ量をフェッチしなければならないことになり、それが、メモリ帯域幅を容易に一杯にすることになることを示唆する。これらの制限ゆえに、商用CPUベンダーは、ソフトウェアの介入を要求するのみの、CPUと同じダイ上に形成されたDRAMキャッシュだけを用いてきており、ソフトウェア透過性の、ハードウェアに管理されたキャッシュとしてはDRAMキャッシュを用いてこなかった。
[0036] 開示される実施形態において、ソフトウェアハードウェア共同設計アプローチが、DRAMキャッシュが直面する設計問題に取り組むために提供される。キャッシュラインサイズが小さい場合に、貴重なLLCスペースを消費するタグアレイ記憶オーバーヘッドを考慮して、開示される実施形態において、大きなDRAMキャッシュライン(例えば4KB)が、従来の64Bキャッシュラインに取って代わるために用いられる。前に説明したように、より大きなキャッシュラインサイズを用いると、キャッシュミスは、注意深い制御なしではより高価になる。何故なら、メモリ帯域幅が、容易に一杯にされ得るからである。例えば、キャッシュミスは、4KBデータが、メインメモリからフェッチされることを要求し、それは、メインメモリからの64の読み出しと等価である。開示される実施形態において、DRAMを制御なしとするのではなく、データの或る領域だけが、所定のサービスレベル合意(SLA)に従ってDRAMキャッシュに格納され得るようにされる。SLAは、サービスプロバイダが提供し且つ受け入れなければならないサービスのレベルを定義する、サービスプロバイダとエンドユーザとの間で確立された契約である。SLAは、クラウドコンピューティングにおいて用いられる普及した基準である。これは、SLAにおいて定義された重要なアプリケーションが、DRAMキャッシュが提供する性能利益を享受できるようにし、且つより少ないDRAMキャッシュアクセス及び従ってより少ないミスが生成されるので、メモリトラフィックの総数を低減する。
[0037] 図6は、開示される実施形態と一致する処理システム600を概略的に示す。処理システム600は、サービスプロバイダのクラウドベースのサーバに含まれ得る。サーバは、ネットワークを介して、ユーザ装置690によってアクセスすることができる。
[0038] 図6に示されているように、処理システム600は、処理ユニット610と、処理ユニット610に結合されたDRAMキャッシュ650、システムカーネル670、及びメインメモリ680と、を含む。メインメモリ680は、処理ユニット610によってアクセスされるデータを格納することができる。システムカーネル670は、処理システム600の動作を制御することができる。システムカーネル670は、処理システム600上で実行される1つ又は複数のタスク/スレッドの属性を記載するtask_structデータ構造を格納する記憶ユニット672を含む。
[0039] 処理ユニット610及びDRAMキャッシュ650は、CPUチップ(例えばCPUチップ110又は130)に含むことができ、その場合に、処理ユニット610は、CPUダイ(例えばCPUダイ112又は132)に配置され、DRAMキャッシュ650は、CPUダイから物理的に分離されたDRAMダイ(例えばDRAMダイ114又は134)に配置される。処理ユニット610は、複数の処理コア622と、複数の処理コア622にそれぞれ対応してそれらに結合された、且つネットワークオンチップ(NoC)626に結合された複数のレベル2キャッシュ(L2C)624と、を含む。加えて、処理ユニット610は、NoC626に結合されたDRAMキャッシュタグアレイ628、ラストレベルキャッシュ(LLC)630、及びDRAMキャッシングポリシーエンフォーサ632と、制御回路640と、を含む。DRAMキャッシュ650は、DRAMキャッシュデータアレイ652及びQoSポリシーエンフォーサ654を含む。処理コア622、L2C 624、DRAMキャッシュタグアレイ628、LLC 630、制御回路640、DRAMキャッシュ650、及びDRAMキャッシュデータアレイ652は、図4における処理コア422、L2C 424、DRAMキャッシュタグアレイ428、LLC 430、制御回路440、DRAMキャッシュ450、及びDRAMキャッシュデータアレイ452とほぼ同じである。従って、これらのコンポーネントの詳細な説明は、繰り返されない。DRAMキャッシングポリシーエンフォーサ632は、DRAMキャッシュ650へのアクセスを制御し、その詳細な説明は、以下でより詳細に提供される。
[0040] 図7は、サービスプロバイダにタスク/スレッドを送信するユーザにサービスプロバイダによって提供されるSLAの幾つかのレベルを定義する例示的な表700を示す。サービスプロバイダは、処理ユニット(例えば処理ユニット610)に結合されたDRAMキャッシュ(例えばDRAMキャッシュ650)を装備された処理システム(例えば処理システム600)を有する。パブリッククラウド環境において、より高いSLAレベルは、サービスプロバイダによって提供されるより高価なサービスを意味する。同様に、プライベートクラウド又は内部データセンター環境において、最も高いSLAレベルは、重要性の高いタスク及びユーザが直面しているオンラインタスクに通常は与えられる。
[0041] 表700の列710によれば、タスク/スレッドを発行するユーザに関連するSLAレベルは、タスク/スレッドが、DRAMキャッシュにアクセスすることを許可されるかどうかを定義することができる。デフォルトによって、即ちSLAレベル0において、タスクは、自らのデータをDRAMキャッシュに格納することは許可されない。換言すれば、SLAレベル0を備えたユーザによって発行されたタスクは、DRAMキャッシュにアクセスすることができない。より高いSLAレベル(例えばSLAレベル1〜4)において、DRAMキャッシュアクセスが許可される。換言すれば、SLAレベル1〜4のいずれか1つを備えたユーザによって発行されたタスクは、DRAMキャッシュにアクセスすることができる。即ち、DRAMキャッシュ可能である。
[0042] 表700の列720によれば、SLAレベルはまた、DRAMキャッシュにアクセスすることを許可されるタスク/スレッドのメモリ領域の量を定義することができる。即ち、タスク/スレッドを実行する処理コアが、DRAMキャッシュからデータを読み出すか又はDRAMキャッシュにデータを書き込むことができるかどうかを定義することができる。タスクによって消費される仮想メモリ量は、仮想メモリ領域に更に分割することができる。仮想メモリ領域は、仮想メモリの固定サイズ(例えば1MB)として定義することができ、それは、物理スペースにおいて一致しているようにも一致していないようにもできる。SLAレベル2は、タスクのメモリ領域全体が、DRAMキャッシュに格納され得るようにするが、SLAレベル1は、タスクの単一のメモリ領域又は複数のメモリ領域が、DRAMキャッシュに格納され得るようにするだけである。幾つかの実施形態において、DRAMキャッシュ可能であるメモリ領域の量は、より微細な粒度でさえ定義することができ、それにより、より多くのSLAレベルに対応する。
[0043] 表700の列730によれば、可能にされるメモリ領域の量に加えて、SLAレベルは、サービス品質(QoS)が提供されるかどうかを更に定義することができる。QoSが提供される場合に、タスクのDRAMキャッシュ占有量が保証される。例えば、QoSポリシーエンフォーサ(例えばQoSポリシーエンフォーサ645)は、DRAMキャッシュ可能であるメモリ領域が、DRAMキャッシュに実際にアクセスできることを保証するように構成することができる。QoSが提供されない場合に、タスクのDRAMキャッシュ占有量は、保証することができない。これは、今度は、表700におけるSLAレベル3及び4を定義する。SLAレベル1とSLAレベル3との間、又はSLAレベル2とSLAレベル4との間の重要な区別は、タスクのDRAMキャッシュ占有量が保証されるかどうかである。
[0044] SLAベースのDRAMキャッシング制御が、スレッド配置、スレッド実行、及びコンテキストスイッチにそれぞれどのように影響するかが更に説明される。
[0045] 図8は、開示される実施形態と一致する、サービスプロバイダのクラウドベースのサーバの例示的な処理システム(例えば処理システム600)におけるスレッド割り当て用の例示的なプロセス800の流れ図である。サーバは、クラウドコンピューティング環境に配置される。プロセス800は、処理システム600に含まれるハードウェア(例えば回路、専用論理、プログラマブル論理、マイクロコード等)、ソフトウェア(例えば機能ユニットによって実行される操作)、ファームウェア、又はそれらの組み合わせを含む処理論理によって実行することができる。
[0046] ステップ810において、処理システムは、処理システム上で実行されるスレッドを受信する。スレッドは、ユーザ装置(例えばユーザ装置690)によって発行することができる。ステップ812において、クラウドコンピューティング環境におけるタスクスケジューラは、スレッドに関連するDRAMキャッシング関係SLAデータを検索することができる。DRAMキャッシング関係SLAデータは、サービスプロバイダとユーザ装置のユーザとの間に確立されたSLAレベルと関係させることができる。次に、タスクスケジューラは、スレッド、及びスレッドに関連するDRAMキャッシング関係SLAデータをシステムカーネル(例えばシステムカーネル670)に転送する。
[0047] ステップ814において、システムカーネルは、DRAMキャッシング関係SLAデータに基づいてDRAMキャッシング情報を判定する。DRAMキャッシング情報は、スレッドが、DRAMキャッシュにアクセスすることを許可されるかどうか、スレッドのどれだけの仮想メモリ領域が、DRAMキャッシュにアクセスすることを許可されるか、及び/又はスレッドが実行されている間に、QoSが、提供されるかどうか(QoS)を示す情報を含むことができる。
[0048] ステップ816において、システムカーネルは、スレッドの属性を記載するtask_structデータ構造を格納する記憶ユニット(例えば記憶ユニット672)にDRAMキャッシング情報を格納する。例えば、スレッドが、DRAMキャッシュにアクセスすることを許可されるかどうかを示す情報は、スレッドに関連するDRAM_Cacheableビットとして格納することができる。スレッドのどれだけの仮想メモリ領域が、DRAMキャッシュにアクセスすることを許可されるかどうかを示す情報は、スレッドに関連する1つ又は複数のRegionビットとして格納することができる。QoSが提供されるかどうかを示す情報は、スレッドに関連するQoSビットとして格納することができる。
[0049] スレッドによって消費される仮想メモリ領域の一部だけが、DRAMキャッシュにアクセスすることを許可されることをDRAMキャッシング情報が示す場合に、ステップ818において、システムカーネルは、どの仮想メモリ領域又はページが、DRAMキャッシュにアクセスすることを許可されるかを定義する仮想メモリ領域割り当て情報を判定する。幾つかの実施形態において、システムカーネルは、どのページ又は仮想メモリ領域が、DRAMキャッシュにアクセスすることを許可されるかを選択することをスレッド自体に委任することができる。例えば、システムカーネルは、どのページ又は仮想メモリ領域が、DRAMキャッシュにアクセスすることを許可されるかをスレッド自体が判定できるように、mprotectシステムコールをスレッドに発行することができる。スレッドは、DRAMキャッシュアクセス可能である、処理ユニットによってより頻繁にアクセスされるデータエリア(例えばページ、仮想メモリ領域)を選択することができる。
[0050] ステップ820において、システムカーネルは、仮想メモリ領域割り当て情報を記憶ユニットに格納する。例えば、システムカーネルは、DRAMキャッシュにアクセスすることを許可されるページの各1ページに対応するページ表エントリ(PTE)の属性セグメントに、専用のビット(例えばPTE_DRAM_Cacheable)を書き込むことができる。PTEは、システムカーネルの記憶ユニットに格納されるtask_structデータ構造に含むことができる。ステップ820を完了した後で、処理システムは、プロセス800を終了する。
[0051] スレッドによって消費されるメモリ領域の全てが、DRAMキャッシュにアクセスすることを許可される(例えばSLAレベル2又は4)ことをDRAMキャッシング情報が示す場合に、システムカーネルは、DRAMキャッシュにアクセスするための仮想メモリ領域を割り当てる必要がなく、且つどのページをマークするためにもPTE_DRAMビットを用いない。従って、ステップ818及び820は、その特権レベルを有するユーザによって発行されたスレッド用には省略することができる。
[0052] 図9は、開示される実施形態と一致する、例示的な処理システム(例えば処理システム600)におけるスレッド実行用の例示的なプロセス900の流れ図である。プロセス900は、プロセス800を実行した後で実行することができる。プロセス900は、処理システム600に含まれるハードウェア(例えば回路、専用論理、プログラマブル論理、マイクロコード等)、ソフトウェア(例えば機能ユニットによって実行される操作)、ファームウェア、又はそれらの組み合わせを含む処理論理によって実行することができる。
[0053] ステップ910において、スレッドが、処理システムにおける処理コア(例えば処理コア622の1つ)上で実行を開始しようとする前に、処理システムは、スレッドに関連するDRAMキャッシング情報を検索する。例えば、処理システムにおけるカーネルスケジューラは、スレッドに関連し、且つシステムカーネルの記憶ユニットに格納されたtask_structデータ構造から、DRAMキャッシング情報の<DRAM_Cacheable、Region、QoS>を読み出す。カーネルスケジューラは、スレッドを実行しようとする処理コアの制御レジスタ(CR)にDRAM_Cacheable及びRegionビットを書き込み、且つ処理コアのマシン状態レジスタ(MSR)にQoSビットを書き込む。
[0054] ステップ912において、スレッドが、処理コア上で実行され始める場合に、処理ユニットの制御回路(例えば制御回路640)は、処理コアからアクセス要求を受信する。アクセス要求は、アドレスタグに関連するメモリ位置からデータを読み出すための読み出し要求、又はアドレスタグに関連するメモリ位置にデータを書き込むための書き込み要求とすることができる。ステップ914において、制御回路は、アクセス要求が、L2Cキャッシュミスであると判定する。例えば、制御回路は、処理コアに対応するL2C(例えばL2C 624の1つ)におけるタグアレイをチェックし、且つL2Cが、要求されたデータの有効なコピーを格納していないと判定する。
[0055] ステップ916において、制御回路は、現在動作しているスレッドが、DRAMキャッシュ可能かどうか、即ちスレッドが、DRAMキャッシュにアクセスすることを許可されるかどうかをチェックするために、DRAMキャッシングポリシーエンフォーサ(例えばDRAMキャッシングポリシーエンフォーサ632)に問い合わせる。例えば、DRAMキャッシングポリシーエンフォーサは、現在動作しているスレッドに関連するCR.DRAM_Cacheableビットを検査する。同時に、ステップ918において、制御回路は、アクセス要求に含まれるアドレスタグをDRAMキャッシュタグアレイに格納されたアドレスタグと比較することによって、DRAMキャッシュタグアレイ(例えばDRAMキャッシュタグアレイ628)をチェックする。また同時に、ステップ920において、制御回路は、アクセス要求に含まれるアドレスタグをLLCタグアレイに格納されたアドレスタグと比較することによって、LLC(例えばLLC 630)に含まれたLLCタグアレイをチェックする。換言すれば、DRAMキャッシングポリシーエンフォーサは、LLCアクセス(ステップ920)及びDRAMキャッシュタグアレイアクセス(ステップ918)によって同時にアクセスされる(ステップ916)。
[0056] ステップ922において、制御回路は、現在動作しているスレッドが、DRAMキャッシュにアクセスすることを許可されるか、即ちDRAMキャッシュ可能であるかどうかを判定する。制御回路は、現在動作しているスレッドが、現在動作しているスレッドに関連するCR.DRAM_Cacheableビットに基づいてDRAMキャッシュ可能かどうかを判定することができ、それは、ステップ916でDRAMキャッシングポリシーエンフォーサによってチェックされる。
[0057] 現在動作しているスレッドが、DRAMキャッシュにアクセスすることを許可されない場合に(ステップ922:No)、制御回路は、要求されたデータをメインメモリから読み出すか、又は要求されたデータをメインメモリに書き込むために、メインメモリ(例えばメインメモリ680)にアクセスするようにステップ930に進む。現在動作しているスレッドが、DRAMキャッシュにアクセスすることを許可される場合に(ステップ922:Yes)、制御回路は、アクセス要求が、DRAMキャッシュにアクセスすることを許可される仮想メモリ領域と関係するかどうかを判定するためにステップ924に進む。例えば、DRAMキャッシングポリシーエンフォーサは、要求されたデータが、DRAMキャッシュにアクセスすることを許可される仮想メモリ領域にあるかどうかを判定するために、CR.Region|PTE.DRAM_Cacheableの結果を検査する。PTE.DRAM_Cacheableは、PTEのキャッシュされたコピーであり、且つ処理ユニットにおけるトランスレーション・ルックアサイド・バッファ(TLB)から供給される。
[0058] アクセス要求が、DRAMキャッシュにアクセスすることを許可されない仮想メモリ領域と関係する場合に(ステップ924:No)、制御回路は、要求されたデータをメインメモリから読み出すか、又は要求されたデータをメインメモリに書き込むために、メインメモリにアクセスするようにステップ930に進む。アクセス要求が、DRAMキャッシュにアクセスすることを許可される仮想メモリ領域と関係する場合に(ステップ924:Yes)、制御回路は、アクセス要求が、LLCヒットか又はLLCミスかどうか(それは、ステップ920において、LLCに含まれるLLCタグアレイをチェックする結果に基づくことができる)を判定するために、ステップ926に進む。LLCヒットは、LLCが、要求されたデータの有効なコピーを格納している場合に発生し、LLCミスは、LLCが、要求されたデータの有効なコピーを格納していない場合に発生する。
[0059] アクセス要求が、LLCヒットである場合に(ステップ926:Yes)、制御回路は、要求されたデータをLLCから読み出すためか、又は要求されたデータをLLCに書き込むために、LLCにアクセスするようにステップ934に進む。アクセス要求が、LLCミスである場合に(ステップ926:No)、制御回路は、アクセス要求が、DRAMキャッシュヒットかどうか(それは、ステップ918において、DRAMキャッシュタグアレイをチェックする結果に基づくことができる)を判定するために、ステップ928に進む。DRAMキャッシュヒットは、DRAMキャッシュが、要求されたデータの有効なコピーを格納している場合に発生し、DRAMキャッシュミスは、DRAMキャッシュが、要求されたデータの有効なコピーを格納していない場合に発生する。
[0060] アクセス要求が、DRAMキャッシュヒットである場合に(ステップ928:Yes)、制御回路は、要求されたデータをDRAMキャッシュから読み出すか、又は要求されたデータをDRAMキャッシュに書き込むために、DRAMキャッシュにアクセスするようにステップ932に進む。アクセス要求が、DRAMキャッシュミスである場合に(ステップ928:No)、制御回路は、要求されたデータをメインメモリから読み出すか、又は要求されたデータをメインメモリに書き込むために、メインメモリ(例えばメインメモリ480)にアクセスするようにステップ930に進む。ステップ930、932、又は934を完了した後で、制御回路は、プロセス900を終了する。
[0061] 更に、SLAベースのDRAMキャッシング制御はまた、コンテキストスイッチに影響し得る。コンテキストスイッチが発生する場合に、即ち処理システムが、新しいスレッドを実行しようとする場合に、カーネルスケジューラは、古いスレッドの<DRAM_Cacheable、Region、QoS>を記憶ユニットにおけるtask_structデータ構造に書き戻し、且つ新しいスレッドに関連する<<DRAM_Cacheable、Region、QoS>をメモリにおけるtask_structデータ構造からロードする。次に、カーネルスケジューラは、新しいスレッドを実行しようとする処理コアのCR及びMSRにこの情報を書き込む。
[0062] 開示される実施形態で説明されるシステム及び方法を用いれば、DRAMキャッシュの使用が、SLA要件を満たすスレッドに与えられ、SLAによって定義された重要度が高いタスクが、DRAMキャッシュの利益を享受できるようにし、一方で、持続可能なメモリ帯域幅が超過されないことを依然として保証する。
[0063] 現代のCPUは、近くのメモリとして埋め込みDRAMを用い、それは、メインメモリと比較した場合に、より高速なアクセスを提供する。近くのメモリとしてDRAMを用いることは、著しい量のソフトウェア介入を要求する可能性がある。これは、メモリの性質が、連続する物理アドレスを用いるために、メモリに割り当てられるデータを必要とするからである。実際に、CPU上を走行するアプリケーションにとって、大きな連続する物理メモリを割り当てること、又はデータ割り当て/割り当て解除中に、これらの位置からデータにアクセスすることは容易ではない。対照的に、開示される実施形態は、ソフトウェア透過性である、ハードウェアに管理されたキャッシュとしてDRAMメモリを用いる。DRAMキャッシュ設計コストは、DRAMキャッシュの使用を、SLAに定義されたアプリケーションに制限することを通して軽減される。
[0064] 本発明の他の実施形態は、本明細書の検討及び本明細書で開示される本発明の実行から当業者に明らかになろう。本出願は、本発明の一般原理に従う、且つ当該技術分野における周知又は通例の実践内に入るような本開示からの逸脱を含む本発明のどんな変形、使用、又は適用もカバーするように意図されている。本明細書及び例が、例示としてのみ考えられ、本発明の真の範囲及び趣旨が、以下の特許請求の範囲によって示されることが、意図されている。
[0065] 本発明が、上記で説明された、且つ添付の図面に示された構造に正確に制限されるのではないこと、及び様々な修正及び変更が、本発明の範囲から逸脱せずに行われ得ることが認識されよう。本発明の範囲が、添付の特許請求の範囲だけによって制限されるべきであることが意図されている。
Claims (23)
- サービスプロバイダのコンピュータシステムであって、
ユーザによって発行されたスレッドを実行する処理ユニットと、
前記処理ユニットの外部に配置されたランダムアクセスメモリ(RAM)キャッシュであって、前記処理ユニットによってアクセスされたか又はアクセスされるデータを格納するために、前記処理ユニットに動作可能に結合されたランダムアクセスメモリ(RAM)キャッシュと、
を含み、
前記処理ユニットが、
前記スレッドが実行されている間のアクセス要求の受信に応じて:
前記スレッドが、前記サービスプロバイダと前記ユーザとの間に確立されたサービスレベル合意(SLA)レベルに従って、前記RAMキャッシュにアクセスすることを許可されるかどうかを判定するように、且つ
前記スレッドが、RAMキャッシュ可能である場合に、前記RAMキャッシュにアクセスするように構成された制御回路
を含む、コンピュータシステム。 - 前記制御回路が、
前記アクセス要求が、前記RAMキャッシュにアクセスすることを許可される仮想メモリ領域と関係するかどうかを判定するように、且つ
前記アクセス要求が、前記RAMキャッシュにアクセスすることを許可される仮想メモリ領域と関係する場合に、前記RAMキャッシュにアクセスするように更に構成される、請求項1に記載のコンピュータシステム。 - 前記処理ユニットが、前記スレッドに関連するキャッシング情報を格納するように構成されたレジスタを更に含み、
前記キャッシング情報が、
前記スレッドが、前記RAMキャッシュにアクセスすることを許可されるかどうか、
前記スレッドの仮想メモリ領域が、前記RAMキャッシュにアクセスすることを許可されるかどうか、及び
サービス品質(QoS)が、前記スレッドに提供されるかどうかを含む、請求項1又は2に記載のコンピュータシステム。 - 前記処理ユニットに動作可能に結合されたシステムカーネルであって、前記ユーザによって発行された前記スレッドの受信に応じて:
前記サービスプロバイダと前記ユーザとの間に確立された前記SLAレベルを検索し、
前記SLAレベルに基づいてキャッシング情報を判定し、
前記キャッシング情報を記憶ユニットに格納するように構成されたシステムカーネルを更に含む、請求項1〜3のいずれか一項に記載のコンピュータシステム。 - 前記システムカーネルによって判定された前記キャッシング情報が、
前記スレッドが、前記RAMキャッシュにアクセスすることを許可されるかどうか、
前記スレッドの仮想メモリ領域が、前記RAMキャッシュにアクセスすることを許可されるかどうか、及び
サービス品質(QoS)が、前記スレッドが実行されている間に提供されるかどうかを含む、請求項4に記載のコンピュータシステム。 - 前記システムカーネルが、
前記サービスプロバイダと前記ユーザとの間に確立された前記SLAレベルに基づいて、前記RAMキャッシュにアクセスすることを許可されるメモリ領域の数を判定するように、
前記数に基づいて、RAMキャッシュ可能である前記スレッドによって消費される少なくとも1つのメモリ領域を複数のメモリ領域から選択するように、且つ
選択の結果を記憶ユニットに格納するように構成される、請求項4に記載のコンピュータシステム。 - 前記RAMキャッシュが、ダイナミックランダムアクセスメモリ(DRAM)キャッシュである、請求項1〜6のいずれか一項に記載のコンピュータシステム。
- 前記処理ユニットが、前記RAMキャッシュに格納された前記データに関連する1つ又は複数のアドレスタグを格納するように構成されたRAMキャッシュタグアレイを含む、請求項1〜7のいずれか一項に記載のコンピュータシステム。
- 前記制御回路が、前記スレッドがRAMキャッシュ可能であるかどうかを判定することと同時に、
前記アクセス要求が、RAMキャッシュヒットか又はRAMキャッシュミスかどうかを判定するために、前記RAMキャッシュタグアレイをチェックするように、且つ
前記アクセス要求が、LLCヒットか又はLLCミスかどうかを判定するために、前記処理ユニットのラストレベルキャッシュ(LLC)をチェックするように構成される、請求項8に記載のコンピュータシステム。 - 前記処理ユニットが、複数の処理コアを含む、請求項1〜9のいずれか一項に記載のコンピュータシステム。
- サービスプロバイダのコンピュータシステムにおけるシステムカーネルを操作するための方法であって、前記コンピュータシステムが、処理ユニットと、前記処理ユニットの外部のランダムアクセスメモリ(RAM)キャッシュであって、前記処理ユニットに動作可能に結合されたランダムアクセスメモリ(RAM)キャッシュと、を含み、前記方法が、
ユーザによって発行されたスレッドを受信することと、
前記サービスプロバイダと前記ユーザとの間に確立されたサービスレベル合意(SLA)レベルを検索することと、
前記SLAレベルに基づいて、前記スレッドが、前記RAMキャッシュを評価することが許可されるかどうかを判定することと、を含む方法。 - 前記SLAレベルに基づいて、前記RAMキャッシュにアクセスすることが許可されるメモリ領域の数を判定することと、
前記数に基づいて、RAMキャッシュ可能である前記スレッドによって消費される少なくとも1つのメモリ領域を複数のメモリ領域から選択することと、
を更に含む、請求項11に記載の方法。 - 前記サービスプロバイダと前記ユーザとの間に確立された前記SLAレベルに基づいて、前記スレッドが実行されている間にサービス品質(QoS)が提供されるかどうかを判定することを更に含む、請求項11又は12に記載の方法。
- 前記RAMキャッシュが、ダイナミックランダムアクセスメモリ(DRAM)キャッシュである、請求項11〜13のいずれか一項に記載の方法。
- サービスプロバイダのコンピュータシステムにおける処理ユニットを操作するための方法であって、前記コンピュータシステムが、前記処理ユニットの外部のランダムアクセスメモリ(RAM)キャッシュであって、前記処理ユニットに動作可能に結合されたランダムアクセスメモリ(RAM)キャッシュを含み、前記方法が、
ユーザによって発行されたスレッドが実行されている間に、アクセス要求を受信することと、
前記スレッドが、前記サービスプロバイダと前記ユーザとの間に確立されたサービスレベル合意(SLA)レベルに従って、前記RAMキャッシュにアクセスすることを許可されるかどうかを判定することと、
前記スレッドが、RAMキャッシュ可能である場合に、前記RAMキャッシュにアクセスすることと、
を含む方法。 - 前記アクセス要求が、前記RAMキャッシュにアクセスすることを許可される仮想メモリ領域と関係するかどうかを判定することと、
前記アクセス要求が、前記RAMキャッシュにアクセスすることを許可される仮想メモリ領域と関係する場合に、前記RAMキャッシュにアクセスすることと、
を更に含む、請求項15に記載の方法。 - 前記スレッドが、RAMキャッシュ可能であるかどうかを判定することと同時に:
前記アクセス要求が、RAMキャッシュヒットか又はRAMキャッシュミスかどうかを判定するために、前記処理ユニットに含まれるRAMキャッシュタグアレイをチェックすることと、
前記アクセス要求が、LLCヒットか又はLLCミスかどうかを判定するために、前記処理ユニットのラストレベルキャッシュ(LLC)をチェックすることと、
を更に含む、請求項15又は16に記載の方法。 - 前記アクセス要求が、LLCミス及びRAMキャッシュヒットである場合に、前記RAMキャッシュにアクセスすることを更に含む、請求項17に記載の方法。
- 前記アクセス要求が、LLCミス及びRAMキャッシュミスである場合に、前記処理ユニットに結合されたメインメモリにアクセスすることを更に含む、請求項17に記載の方法。
- 前記RAMキャッシュが、ダイナミックランダムアクセスメモリ(DRAM)キャッシュである、請求項15〜19のいずれか一項に記載の方法。
- 処理ユニットと、
前記処理ユニットの外部に配置された、且つ前記処理ユニットに動作可能に結合されたランダムアクセスメモリ(RAM)キャッシュであって、前記処理ユニットによってアクセスされたか又はアクセスされるデータを格納するキャッシュデータユニットを含むランダムアクセスメモリ(RAM)キャッシュと、
を含むコンピューティング装置であって、
前記処理ユニットが、前記RAMキャッシュにおける前記キャッシュデータユニットに格納された前記データに関連するアドレスタグを格納するキャッシュタグユニットを含むコンピューティング装置。 - 処理ユニットによってアクセスされたか又はアクセスされるデータに関連するアドレスタグを格納するキャッシュタグユニットを含む処理ユニットであって、
前記処理ユニットによってアクセスされたか又はアクセスされる前記データが、前記処理ユニットの外部に配置されたランダムアクセスメモリ(RAM)キャッシュに格納される、処理ユニット。 - サービスプロバイダのコンピュータシステムにおける処理ユニットを操作するための方法であって、前記コンピュータシステムが、前記処理ユニットの外部のランダムアクセスメモリ(RAM)キャッシュであって、前記処理ユニットに動作可能に結合されたランダムアクセスメモリ(RAM)キャッシュを含み、前記方法が、
ユーザによって発行されたスレッドが実行されている間に、アクセス要求を受信することと、
前記アクセス要求が、前記処理ユニットに含まれるキャッシュタグユニットをチェックすることによって、RAMキャッシュヒットかどうかを判定することと、
前記アクセス要求がRAMキャッシュヒットである場合に、データにアクセスするために、前記RAMキャッシュにアクセスすることと、
を含む方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/679,088 US20190057045A1 (en) | 2017-08-16 | 2017-08-16 | Methods and systems for caching based on service level agreement |
US15/679,088 | 2017-08-16 | ||
PCT/US2018/000323 WO2019036034A1 (en) | 2017-08-16 | 2018-08-16 | METHODS AND SYSTEMS FOR CACHING CACHE BASED ON SERVICE LEVEL AGREEMENT |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020531950A true JP2020531950A (ja) | 2020-11-05 |
Family
ID=65361421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020506744A Pending JP2020531950A (ja) | 2017-08-16 | 2018-08-16 | サービスレベル合意に基づいたキャッシング用の方法及びシステム |
Country Status (4)
Country | Link |
---|---|
US (1) | US20190057045A1 (ja) |
JP (1) | JP2020531950A (ja) |
CN (1) | CN111183414A (ja) |
WO (1) | WO2019036034A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10983846B2 (en) * | 2018-05-11 | 2021-04-20 | Futurewei Technologies, Inc. | User space pre-emptive real-time scheduler |
US11609879B2 (en) * | 2021-02-26 | 2023-03-21 | Nvidia Corporation | Techniques for configuring parallel processors for different application domains |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6212602B1 (en) * | 1997-12-17 | 2001-04-03 | Sun Microsystems, Inc. | Cache tag caching |
US7047366B1 (en) * | 2003-06-17 | 2006-05-16 | Emc Corporation | QOS feature knobs |
US7398325B2 (en) * | 2003-09-04 | 2008-07-08 | International Business Machines Corporation | Header compression in messages |
US7529903B2 (en) * | 2005-07-05 | 2009-05-05 | International Business Machines Corporation | Systems and methods for memory migration |
US7991956B2 (en) * | 2007-06-27 | 2011-08-02 | Intel Corporation | Providing application-level information for use in cache management |
US8176282B2 (en) * | 2009-03-11 | 2012-05-08 | Applied Micro Circuits Corporation | Multi-domain management of a cache in a processor system |
US9189405B2 (en) * | 2011-08-03 | 2015-11-17 | International Business Machines Corporation | Placement of data in shards on a storage device |
US20130046934A1 (en) * | 2011-08-15 | 2013-02-21 | Robert Nychka | System caching using heterogenous memories |
US8924754B2 (en) * | 2012-02-02 | 2014-12-30 | Empire Technology Development Llc | Quality of service targets in multicore processors |
US20140351151A1 (en) * | 2013-05-23 | 2014-11-27 | International Business Machines Corporation | Providing a lease period determination |
US9239784B1 (en) * | 2013-06-05 | 2016-01-19 | Amazon Technologies, Inc. | Systems and methods for memory management |
CN106462504B (zh) * | 2013-10-21 | 2023-09-01 | Flc环球有限公司 | 最终级高速缓存系统和对应的方法 |
US9558120B2 (en) * | 2014-03-27 | 2017-01-31 | Intel Corporation | Method, apparatus and system to cache sets of tags of an off-die cache memory |
US9491112B1 (en) * | 2014-12-10 | 2016-11-08 | Amazon Technologies, Inc. | Allocating processor resources based on a task identifier |
US10740237B2 (en) * | 2015-09-30 | 2020-08-11 | Nxp Usa, Inc. | Data processing unit having a memory protection unit |
EP3338408B1 (en) * | 2015-11-05 | 2022-08-17 | Hewlett-Packard Development Company, L.P. | Local compute resources and access terms |
GB2547189A (en) * | 2016-02-03 | 2017-08-16 | Swarm64 As | Cache and method |
US10037288B2 (en) * | 2016-04-01 | 2018-07-31 | Intel Corporation | Memory protection at a thread level for a memory protection key architecture |
US10452287B2 (en) * | 2016-06-24 | 2019-10-22 | Futurewei Technologies, Inc. | System and method for shared memory ownership using context |
US10176099B2 (en) * | 2016-07-11 | 2019-01-08 | Intel Corporation | Using data pattern to mark cache lines as invalid |
US10055158B2 (en) * | 2016-09-22 | 2018-08-21 | Qualcomm Incorporated | Providing flexible management of heterogeneous memory systems using spatial quality of service (QoS) tagging in processor-based systems |
US10356197B2 (en) * | 2016-11-21 | 2019-07-16 | Intel Corporation | Data management in an information-centric network |
US10254961B2 (en) * | 2017-02-21 | 2019-04-09 | International Business Machines Corporation | Dynamic load based memory tag management |
US11016894B2 (en) * | 2017-08-07 | 2021-05-25 | Intel Corporation | Techniques to provide cache coherency based on cache type |
-
2017
- 2017-08-16 US US15/679,088 patent/US20190057045A1/en not_active Abandoned
-
2018
- 2018-08-16 WO PCT/US2018/000323 patent/WO2019036034A1/en active Application Filing
- 2018-08-16 CN CN201880053103.0A patent/CN111183414A/zh active Pending
- 2018-08-16 JP JP2020506744A patent/JP2020531950A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US20190057045A1 (en) | 2019-02-21 |
CN111183414A (zh) | 2020-05-19 |
WO2019036034A1 (en) | 2019-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6118285B2 (ja) | キャッシュメモリシステムおよびプロセッサシステム | |
US8990506B2 (en) | Replacing cache lines in a cache memory based at least in part on cache coherency state information | |
US9152569B2 (en) | Non-uniform cache architecture (NUCA) | |
US9158685B2 (en) | System cache with cache hint control | |
US10255190B2 (en) | Hybrid cache | |
US10860244B2 (en) | Method and apparatus for multi-level memory early page demotion | |
US20160034195A1 (en) | Memory network | |
US20140143493A1 (en) | Bypassing a Cache when Handling Memory Requests | |
US20090006756A1 (en) | Cache memory having configurable associativity | |
EP2472412B1 (en) | Explicitly regioned memory organization in a network element | |
US9043570B2 (en) | System cache with quota-based control | |
US20140089600A1 (en) | System cache with data pending state | |
US10169242B2 (en) | Heterogeneous package in DIMM | |
US20180032429A1 (en) | Techniques to allocate regions of a multi-level, multi-technology system memory to appropriate memory access initiators | |
JP6088951B2 (ja) | キャッシュメモリシステムおよびプロセッサシステム | |
US20220245066A1 (en) | Memory system including heterogeneous memories, computer system including the memory system, and data management method thereof | |
US9058283B2 (en) | Cache arrangement | |
EP3839747A1 (en) | Multi-level memory with improved memory side cache implementation | |
JP5976225B2 (ja) | スティッキー抜去エンジンを伴うシステムキャッシュ | |
US20090006777A1 (en) | Apparatus for reducing cache latency while preserving cache bandwidth in a cache subsystem of a processor | |
JP2020531950A (ja) | サービスレベル合意に基づいたキャッシング用の方法及びシステム | |
US20110055482A1 (en) | Shared cache reservation | |
US20180314436A1 (en) | Page migration with varying granularity | |
US20170109074A1 (en) | Memory system | |
EP3506112A1 (en) | Multi-level system memory configurations to operate higher priority users out of a faster memory level |