JP7116047B2 - プロセッサベースシステムの異種メモリシステムの柔軟な管理を実現するためのメモリコントローラおよび方法 - Google Patents

プロセッサベースシステムの異種メモリシステムの柔軟な管理を実現するためのメモリコントローラおよび方法 Download PDF

Info

Publication number
JP7116047B2
JP7116047B2 JP2019514121A JP2019514121A JP7116047B2 JP 7116047 B2 JP7116047 B2 JP 7116047B2 JP 2019514121 A JP2019514121 A JP 2019514121A JP 2019514121 A JP2019514121 A JP 2019514121A JP 7116047 B2 JP7116047 B2 JP 7116047B2
Authority
JP
Japan
Prior art keywords
memory
qos policy
cache
master table
memory controller
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.)
Active
Application number
JP2019514121A
Other languages
English (en)
Other versions
JP2019532412A5 (ja
JP2019532412A (ja
Inventor
コリン・ビートン・ヴェリリ
カール・アラン・ウォルドスパージャー
ナタラジャン・ヴァイディアナサン
マテウス・コーネリス・アントニウス・アドリアヌス・ヘッデス
コウスタヴ・バッタチャリヤ
Original Assignee
クアルコム,インコーポレイテッド
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 クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2019532412A publication Critical patent/JP2019532412A/ja
Publication of JP2019532412A5 publication Critical patent/JP2019532412A5/ja
Application granted granted Critical
Publication of JP7116047B2 publication Critical patent/JP7116047B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance 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/20Employing a main memory using a specific memory technology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Logic Circuits (AREA)

Description

優先権主張
本出願は、その内容全体が参照により本明細書に組み込まれる、2016年9月22日に出願された「PROVIDING FLEXIBLE MANAGEMENT OF HETEROGENEOUS MEMORY SYSTEMS USING SPATIAL QUALITY OF SERVICE (QoS) TAGGING IN PROCESSOR-BASED SYSTEMS」と題する米国特許出願第15/272,951号の優先権を主張する。
本開示の技術は、一般に、メモリ管理に関し、詳細には、異種メモリシステムを管理することに関する。
異種メモリシステムは、比較的異なる性能特性(たとえば、容量、帯域幅、アクセスレイテンシ、電力消費など)を有する2つ以上の異なるタイプのメモリを組み込むプロセッサベースシステムのメモリシステムである。非限定的な例として、異種メモリシステムは、通常のサイズの通信レーンを提供するダイナミックランダムアクセスメモリ(DRAM)とともに、非常に広い通信レーンを提供する高帯域幅メモリ(HBM)を含み得る。異種メモリシステムの他の態様は、DRAMおよび相変化メモリ、DRAMおよびプロセッサダイ上のレベル3(L3)キャッシュ、ならびに/または当技術分野で知られている異なるメモリタイプの他の組合せを含み得る。
従来の異種メモリシステムは、メモリ管理に関する限定的なオプションを提示し得る。いくつかの態様では、あるタイプのメモリ(たとえば、HBM)は、異種メモリシステムのメモリアドレス空間全体のためのキャッシュとして働くように構成され得る。そのような態様は、比較的単純で、容易に配置でき、ハードウェアによって透過的に管理され得る。しかしながら、データの配置またはメモリの割振りに関するすべての決定がハードウェアによって行われるので、データ配置またはメモリ割振りに対するソフトウェアの入力または影響が利用されない。
代替的に、異種メモリシステムは、独立したアドレス領域を用いることができ、動的メモリ管理および再割振り動作がハードウェアの代わりにソフトウェアによって実行されることを可能にし得る。メモリ割振りに関係するが、ハードウェアがアクセスできないか、または透過的に推測できないデータ(たとえば、作業負荷、プログラムセマンティクス、および/または相対的優先度)へのアクセスをソフトウェアは有し得るので、この手法は、排他的なハードウェア制御よりも好ましいことが多い。しかしながら、そのような動的メモリ管理は、極めて複雑なデータ移行決定、およびそのような決定を管理することが可能なソフトウェアの他、他の必要なプロセッサおよび時間の面で高くつく動作を必要とすることがあり、開発し維持するのが難しいことがある。したがって、異種メモリシステムの柔軟な管理のためのハードウェアサポートおよびソフトウェア制御を実現するメモリ管理機構が望ましい。
発明を実施するための形態で開示する態様は、プロセッサベースシステムにおける空間サービス品質(QoS)タグ付けを使用する異種メモリシステムの柔軟な管理を実現することを含む。一態様では、プロセッサベースシステムの異種メモリシステムは、第1のメモリ(たとえば、非限定的な例として、高帯域幅メモリ(HBM))および第2のメモリ(たとえば、非限定的な例として、ダイナミックランダムアクセスメモリ(DRAM))を含む。異種メモリシステムは、非限定的な例として、各々が4キロバイトのサイズを有するメモリページなど、複数のメモリ領域に分割される。異種メモリシステムは、本明細書では「空間サービス品質(QoS)タグ付け」と呼ばれるものを用いるように構成され、空間QoSタグ付けでは、複数のメモリ領域の各々がQoS識別子(QoSID)に関連付けられ、QoSIDは、ソフトウェアによって設定され更新され得る。異種メモリシステムのメモリコントローラは、QoSポリシーテーブルを提供し、QoSポリシーテーブルは、各QoSIDを(非限定的な例として、クォータ、優先度、比例配分重み、および/または確率などの)QoSポリシー状態にマッピングするように作用し、またソフトウェア構成可能であり得る。メモリ領域のメモリアドレスを含むメモリアクセス要求を受信すると、メモリコントローラは、メモリアドレスに関連付けられるソフトウェア構成可能なQoSIDを識別し、QoSポリシーテーブルを使用してQoSIDをQoSポリシー状態に関連付ける。メモリコントローラは次いで、メモリアクセス動作を実行するためにQoSポリシー状態を適用する。たとえば、第1のメモリが第2のメモリのための透過的なキャッシュとして構成される態様では、メモリコントローラは、第1のメモリからのキャッシュエビクションまたは第1のメモリのキャッシュフィルを実行する際にQoSポリシー状態を適用し得る。このようにして、ソフトウェアプロセスは、複数のメモリ領域の各々に関するQoSIDを指定することによって、またメモリコントローラによって強制されたQoSポリシー状態にQoSIDを関連付けることによって、メモリ割振りおよびデータ配置に間接的に影響を及ぼし得る。
別の態様では、プロセッサベースシステムの異種メモリシステムの柔軟な管理を実現するためのメモリコントローラが提供される。メモリコントローラは通信可能に、異なる性能特性を有する第1のメモリおよび第2のメモリに結合される。メモリコントローラは、複数のQoSポリシーエントリを提供するソフトウェア構成可能なQoSポリシーテーブルを含む。各QoSポリシーエントリは、QoSポリシー状態を含み、各々が複数のメモリ領域のうちの1つに関連付けられる1つまたは複数のQoSIDのうちのQoSIDに関連付けられる。複数のメモリ領域は、第1のメモリ、第2のメモリ、または両方の中に存在する。メモリコントローラは、複数のメモリ領域のうちのメモリ領域に対応するメモリアドレスを含むメモリアクセス要求を受信するように構成される。メモリコントローラは、メモリアドレスに関連付けられるソフトウェア構成可能なQoSIDを識別するようにさらに構成される。メモリコントローラはまた、QoSポリシーテーブルを使用して、メモリアドレスに関連付けられるQoSIDをQoSポリシー状態に関連付けるように構成される。メモリコントローラは加えて、第1のメモリおよび第2のメモリの一方でメモリアクセス動作を実行するためにQoSポリシー状態を適用するように構成される。
別の態様では、プロセッサベースシステムの異種メモリシステムの柔軟な管理を実現するためのメモリコントローラが提供される。メモリコントローラは、異なる性能特性を有する第1のメモリおよび第2のメモリの一方または両方の複数のメモリ領域のうちのメモリ領域に対応するメモリアドレスを含むメモリアクセス要求を受信するための手段を含む。メモリコントローラは、メモリアドレスに関連付けられるソフトウェア構成可能なQoSIDを識別するための手段をさらに含む。メモリコントローラはまた、ソフトウェア構成可能なQoSポリシーテーブルを使用して、メモリアドレスに関連付けられるQoSIDをQoSポリシー状態に関連付けるための手段を含む。メモリコントローラは、第1のメモリおよび第2のメモリの一方でメモリアクセス動作を実行するためにQoSポリシー状態を適用するための手段をさらに含む。
別の態様では、プロセッサベースシステムの異種メモリシステムの柔軟な管理を実現するための方法が提供される。本方法は、メモリコントローラによって、異なる性能特性を有する第1のメモリおよび第2のメモリの一方または両方の複数のメモリ領域のうちのメモリ領域に対応するメモリアドレスを含むメモリアクセス要求を受信するステップを含む。本方法は、複数のQoSIDのうちのソフトウェア構成可能なQoSIDを識別するステップをさらに含み、QoSIDは、メモリアドレスに関連付けられる。本方法はまた、メモリコントローラのソフトウェア構成可能なQoSポリシーテーブルを使用して、メモリアドレスに関連付けられるQoSIDをQoSポリシー状態に関連付けるステップを含む。本方法は加えて、第1のメモリおよび第2のメモリの一方でメモリアクセス動作を実行するためにQoSポリシー状態を適用するステップを含む。
異種メモリシステムを提供する例示的なプロセッサベースシステムのブロック図である。 空間サービス品質(QoS)タグ付けを使用する異種メモリシステムの柔軟な管理を実現するためのメモリコントローラを含むプロセッサベースシステムのブロック図である。 異種メモリシステムを柔軟に管理するために空間QoSタグ付けを使用するための図2のメモリコントローラの例示的な動作を示すフローチャートである。 異種メモリシステムを柔軟に管理するために空間QoSタグ付けを使用するための図2のメモリコントローラの例示的な動作を示すフローチャートである。 異種メモリシステムを柔軟に管理するために空間QoSタグ付けを使用するための図2のメモリコントローラの例示的な動作を示すフローチャートである。 図2の異種メモリシステムおよびメモリコントローラを含むことができる例示的なプロセッサベースシステムのブロック図である。
ここで図面を参照して、本開示のいくつかの例示的な態様について説明する。「例示的」という語は、本明細書では「例、事例、または例示として機能すること」を意味するために使用される。本明細書で「例示的」と説明するいずれの態様も、必ずしも他の態様よりも好ましいまたは有利であると解釈されるべきではない。
発明を実施するための形態で開示する態様は、プロセッサベースシステムにおける空間サービス品質(QoS)タグ付けを使用する異種メモリシステムの柔軟な管理を実現することを含む。空間QoSタグ付けを使用してメモリを柔軟に管理するように構成されたメモリコントローラについて説明する前に、プロセッサベースシステムの異種メモリシステムの例示的な要素および動作について最初に説明する。
この点について、図1は、異種メモリシステム102を提供する例示的なプロセッサベースシステム100を示す。いくつかの態様では、プロセッサベースシステム100は、要素の中でも、知られているデジタル論理要素、半導体回路、処理コア、および/もしくはメモリ構造のうちのいずれか1つ、またはそれらの組合せを包含し得る。本明細書で説明する態様は、要素の任意の特定の構成に限定されず、開示する技法は、半導体ダイまたはパッケージ上の様々な構造およびレイアウトに容易に拡張され得る。プロセッサベースシステム100は、明快にするために本明細書で説明しない追加の要素を含み得ることを理解されたい。
図1に見られるように、異種メモリシステム102は、第1のメモリ104および第2のメモリ106を含む。いくつかの態様によれば、非限定的な例として、第1のメモリ104は高帯域幅メモリ(HBM)を含むことができ、第2のメモリ106はダイナミックランダムアクセスメモリ(DRAM)を含むことができる。第1のメモリ104および第2のメモリ106へのアクセスは、メモリコントローラ108によって管理され、メモリコントローラ108は、プロセッサベースシステム100によって実行される命令を含むソフトウェアプロセス110からのメモリアクセス要求を受信し得る。ソフトウェアプロセス110は、1つまたは複数の他のソフトウェアプロセスと並行して実行されてよく、非限定的な例として、アプリケーション、ハイパーバイザ、仮想機械、オペレーティングシステム、および/またはコンテナを含み得ることを理解されたい。
いくつかの態様は、メモリコントローラ108が第2のメモリ106の透過的なキャッシュとして第1のメモリ104を動作させるように構成され得ることを規定し得る。そのような態様では、第2のメモリ106は、マスタテーブル112を記憶するために使用され得る。マスタテーブル112は、複数のマスタテーブルエントリ114(0)~114(M)を含み、それらの各々は、第2のメモリ106のメモリ領域118(0)~118(X)のうちの1つまたは複数のメモリアドレス116(0)~116(M)の範囲をキャッシュウェイ識別子(「WAY ID」)120(0)~120(M)に関連付ける。したがって、第1のメモリ104のどのキャッシュウェイに第2のメモリ106の所与のメモリ領域118(0)~118(X)が記憶され得るかを判断するために、メモリコントローラ108は、マスタテーブル112に対してルックアップ演算を実行し得る。マスタテーブル112は、図1において第2のメモリ106の一部として示されているが、マスタテーブル112は、たとえば、第1のメモリ104を含むメモリコントローラ108によってアクセス可能である他のメモリ要素の一部として記憶されてよいことを理解されたい。いくつかの態様では、メモリ領域118(0)~118(X)はそれぞれ、メモリページ(たとえば、4キロバイトのメモリページ)であり得る一方、いくつかの態様は、メモリ領域118(0)~118(X)の各々が第2のメモリ106のより大きいまたはより小さい下位区分であることを規定し得る。いくつかの態様は、メモリ領域118(0)~118(X)が不均一なサイズを有してよいことを規定し得る。
図2は、空間QoSタグ付けを使用する図1の異種メモリシステム102の柔軟な管理を実行するためのメモリコントローラ202を提供するプロセッサベースシステム200を示す。図2の例では、メモリコントローラ202は、複数のQoSポリシーエントリ206(0)~206(Y)を含むQoSポリシーテーブル204を含む。複数のQoSポリシーエントリ206(0)~206(Y)の各々は、QoSID208(0)~208(Y)を対応するQoSポリシー状態210(0)~210(Y)に関連付ける。いくつかの態様では、QoSポリシーテーブル204は、図2に示すようなQoSID208(0)~208(Y)に関する値を明示的に記憶しないことがあり、むしろ、対応するQoSポリシー状態210(0)~210(Y)のQoSポリシーテーブル204における行インデックスとしてQoSID208(0)~208(Y)の各々を暗示的に定義することがある。QoSポリシー状態210(0)~210(Y)はそれぞれ、メモリコントローラ202によって強制され得る(非限定的な例として、クォータ、優先度、比例配分重み、および/または確率などの)該当するQoS属性を表し得る。QoSポリシーテーブル204は、ソフトウェアプロセス110によって更新され得る。したがって、ソフトウェアプロセス110は、各QoSID208(0)~208(Y)に関連付けられる各QoSポリシー状態210(0)~210(Y)に関するQoS属性を指定し得る。
いくつかの態様では、マスタテーブル112は、マスタテーブルエントリ114(0)~114(M)の一部としてQoSID212(0)~212(M)を含むように拡大され得る。このようにして、マスタテーブルエントリ114(0)~114(M)は、メモリアドレス116(0)~116(M)の範囲のうちの1つもしくは複数に、および/または第2のメモリ106のメモリ領域118(0)~118(X)全体に関連付けられるQoSID212(0)~212(M)を識別するために使用され得る。いくつかの態様では、マスタテーブル112は、異なるアドレス指定粒度を有する2つの別個の構造として編成され得る(たとえば、一方は、キャッシュライン粒度をもたらすためにメモリアドレス-ウェイマッピングを提供し得る一方、他方は、より粗いページ粒度をもたらすためにメモリアドレス-QoSIDマッピングを提供し得る)。代替的に、いくつかの態様は、2つの別個の構造の内容が合成またはインターリーブされた単一のマスタテーブル112を提供し得る。いくつかの態様によれば、マスタテーブル112は、明示的にメモリアドレス116を記憶しないことがあり、むしろ、マスタテーブル112へのインデックスとしてメモリアドレス116の最上位ビットを使用することがある。
マスタテーブル112のQoSID212(0)~212(M)は、ソフトウェアプロセス110によって更新されてよく、これによりソフトウェアプロセス110が、メモリ領域118(0)~118(X)に割り当てられたQoSID212(0)~212(M)の値を選択的に設定することが可能になる。いくつかの態様では、QoSID208(0)~208(Y)のうちの1つが、QoSID208(0)~208(Y)に明示的に割り当てられないメモリ領域118(0)~118(X)に適用されるべきQoSポリシー状態210(0)~210(Y)を決定するために使用される「デフォルト」QoSID208(0)~208(Y)を指定するものとして指定され得る。いくつかの態様は、最も明確な粒度に関連付けられるQoSID208(0)~208(Y)が適用されるように、複数の粒度を表す異なるサイズのメモリ領域118(0)~118(X)にQoSID208(0)~208(Y)が関連付けられ得ることを規定し得る。たとえば、第1のQoSID208(0)~208(Y)が、より大きい2メガバイトのメモリ領域118(0)~118(X)に関連付けられ得る一方、第2のQoSID208(0)~208(Y)が、より大きいメモリ領域118(0)~118(X)内のより小さい4キロバイトのメモリ領域118(0)~118(X)に関連付けられ得る。この場合、第1のQoSID208(0)~208(Y)は、第2のQoSID208(0)~208(Y)に該当するより小さい4キロバイトのメモリ領域118(0)~118(X)を除く2メガバイトのメモリ領域118(0)~118(X)全体に適用される。
いくつかの態様は、メモリコントローラ202が、最近読み取られたマスタテーブルエントリ114(0)~114(M)をマスタテーブル112からキャッシュするためのマスタテーブルキャッシュ214も含むことを規定し得る。マスタテーブルキャッシュ214は、キャッシュされたメモリアドレス116'(0)~116'(Z)、キャッシュされたウェイ識別子(「WAY ID」)120'(0)~120'(Z)、およびキャッシュされたQoSID212'(0)~212'(Z)を記憶する複数のマスタテーブルキャッシュエントリ216(0)~216(Z)を提供する。メモリアドレス範囲および/またはメモリ領域118(0)~118(X)のうちのメモリ領域に関連付けられるQoSIDを識別しようとするとき、メモリコントローラ202は、第2のメモリ106中のマスタテーブル112においてルックアップを実行する前に、マスタテーブルキャッシュ214にアクセスし得る。マスタテーブルキャッシュ214がキャッシュヒットを生成する場合、メモリコントローラ202は、キャッシュされたQoSID212'(0)~212'(Z)をマスタテーブルキャッシュ214から読み取ることができ、それにより、マスタテーブル112への不要な読取りを回避することによって、メモリアクセスレイテンシが減り、メモリ帯域幅が節約される。第1のメモリ104が第2のメモリ106のための透過的なキャッシュとして使用されるいくつかの態様によれば、マスタテーブル112へのアクセスは、(たとえば、各キャッシュライン(図示せず)のためのキャッシュタグ(図示せず)とともに)第1のメモリ104内にQoSID218(0)~218(Q)を記憶することによって回避されることもある。そのような態様では、マスタテーブル112からのキャッシュライン粒度データのサブセットが、第1のメモリ104によって提供されたキャッシュに組み込まれ得る。
例示的な動作中、メモリコントローラ202はソフトウェアプロセス110から、メモリアドレス222を含むメモリアクセス要求220を受信し得る。メモリコントローラ202は、(たとえば、メモリアドレス222またはメモリアドレス222の最上位ビットを使用して、マスタテーブル112へのルックアップおよび/またはマスタテーブルキャッシュ214へのルックアップを実行することによって)メモリアドレス222に対応するQoSID(たとえば、QoSID212(0))を識別する。QoSID212(0)が識別されると、メモリコントローラ202は、QoSID212(0)をQoSポリシー状態(たとえば、QoSポリシー状態210(0))に関連付けるためにQoSポリシーテーブル204を使用する。メモリコントローラ202は次いで、メモリアクセス要求220を実行する際にQoSポリシー状態210(0)を適用する。たとえば、第1のメモリ104が第2のメモリ106のための透過的なキャッシュとして動作するように構成される態様では、メモリアクセス要求220は、第2のメモリ106におけるメモリアドレス222に対するメモリ読取り動作またはメモリ書き込み動作を示し得る。メモリアクセス要求220を受信すると、メモリコントローラ202は、メモリアドレス222に対応するQoSID212(0)を識別し、第2のメモリ106のその領域に当てはまるQoSポリシー状態210(0)(たとえば、第1のメモリ104におけるキャッシュのうちのどれだけが占有され得るかなど)を決定する。メモリコントローラ202は、QoSポリシー状態210(0)に従って第1のメモリ104に対するキャッシュエビクション動作またはキャッシュフィル動作を実行し得る。
このようにして、ソフトウェアプロセス110がメモリ割振りおよび再配置に関する決定を下す必要がないので、メモリコントローラ202は透過的なアドレス指定および透過的なキャッシングの利益をもたらす。しかしながら、ソフトウェアプロセス110は依然として、QoSID212(0)~212(M)および/またはQoSポリシーテーブル204を更新することによって、データ配置および割振りに影響を及ぼすことが可能である。この態様は、管理されていないキャッシュとソフトウェア管理された区分の両方に対する柔軟なサポートを提供する。たとえば、キャッシュとして第1のメモリ104を使用するとき、ソフトウェアプロセス110は、クォータベースのメモリ管理方式を実装することができ、それによって、第2のメモリ106のメモリ領域118(0)~118(X)のうちの所与の1つ(たとえば、メモリ領域118(0))が、メモリ領域118(0)~118(X)のサイズよりも大きいクォータを指定するようにQoSポリシー状態210(0)を割り当てることによって、第1のメモリ104においてロックされる。結果として、メモリ領域118(0)のためのデータは、クォータが決して満たされないので、決して第1のメモリ104からエビクトされない。同様に、ソフトウェアプロセス110は、0のクォータを指定するようにQoSポリシー状態210(0)を割り当てることによって、キャッシュバイパスを実装し得る。ソフトウェアプロセス110はまた、第1のメモリ104のサイズよりも小さいクォータを指定するようにQoSポリシー状態210(0)を割り当てることによって、部分的キャッシュ方式を実装し得る。QoSポリシー状態210(0)によって割り当てられたクォータは、対応するQoSID212(0)~212(M)に関連付けられる第2のメモリ106のすべてのメモリ領域118(0)~118(X)の合計サイズに当てはまることに留意されたい。たとえば、QoSID212(0)が第2のメモリ106の4つのメモリ領域118(0)~118(3)に関連付けられ、メモリ領域118(0)~118(3)の各々が4キロバイトのサイズであると仮定する。QoSID212(0)に関連付けられるQoSポリシー状態210(0)によって指定されたクォータが少なくとも16キロバイトである限り、メモリ領域118(0)~118(3)は第1のメモリ104においてロックされたままとなる。
第1のメモリ104が第2のメモリ106のための透過的なキャッシュとして動作するように構成される態様の場合にQoSポリシー状態210(0)~210(Y)を適用するとき、メモリコントローラ202は、第1のメモリ104の割振りのための異なる戦略を採用し得る。たとえば、第1のメモリ104からエビクトすべきキャッシュラインを決定するとき、メモリコントローラ202は、いくつかのキャッシュラインをランダムにサンプリングし、エビクションビクティムとして最大のクォータ超過(over quota)であるQoSIDに関連付けられるキャッシュラインを選択し得る。代替的に、第1のメモリ104に書き込まれるべきキャッシュラインが最大のクォータ超過である場合、メモリコントローラ202は、第1のメモリ104を完全にバイパスすること、または同じQoSIDを有する別のキャッシュラインをエビクトすることを選択し得る。キャッシュフィルを実行するとき、メモリコントローラ202は、キャッシュフィル動作を、新しいデータのQoSIDに関連付けられるQoSポリシー状態によって示されるクォータまたは確率に基づかせ得る。最後に、いくつかの態様では、メモリコントローラ202は、第1のメモリ104の一部のメモリ容量を意図的に未使用のままにすることによって、第1のメモリ104および第2のメモリ106のための合計帯域幅を改善することができる。これは、第1のメモリ104における無効なラインのためのクォータを指定し、指定された数のラインが第1のメモリ104においてアイドル状態にとどまることが可能になることによって、達成され得る。
異種メモリシステム102を柔軟に管理するための図2のメモリコントローラ202の例示的な動作を示すために、図3A~図3Cを提供する。明快にするために、図3A~図3Cについて説明する際に図2の要素が参照される。図3Aでは、動作は、異種メモリシステム102の特定の実装形態に応じて異なる方法で始まり得る。いくつかの態様では、メモリコントローラ202は、第2のメモリ106のための透過的なキャッシュとして第1のメモリ104を動作させることができ、複数のメモリ領域118(0)~118(X)は、第2のメモリ106の複数のメモリ領域118(0)~118(X)を含む(ブロック300)。メモリコントローラ202は、異なる性能特性を有する第1のメモリ104および第2のメモリ106の一方または両方の複数のメモリ領域118(0)~118(X)のうちのメモリ領域118(0)に対応するメモリアドレス222を含むメモリアクセス要求220を受信する(ブロック302)。この点について、メモリコントローラ202は、本明細書では「異なる性能特性を有する第1のメモリおよび第2のメモリの一方または両方の複数のメモリ領域のうちのメモリ領域に対応するメモリアドレスを含むメモリアクセス要求を受信するための手段」と呼ばれ得る。次いで、処理は図3Bのブロック304で再開する。
次に図3Bを参照すると、メモリコントローラ202は次に、複数のQoSID208(0)~208(Y)のうちのソフトウェア構成可能なQoSID208(0)を識別し、QoSID208(0)は、メモリアドレス222に関連付けられる(ブロック304)。したがって、メモリコントローラ202は、本明細書では「メモリアドレスに関連付けられるソフトウェア構成可能なQoSIDを識別するための手段」と呼ばれ得る。第1のメモリ104が第2のメモリ106のための透過的なキャッシュとして動作するように構成される態様などのいくつかの態様は、メモリアドレス222に関連付けられるQoSID208(0)を識別するためのブロック304の動作が、メモリコントローラ202のマスタテーブルキャッシュ214の複数のマスタテーブルキャッシュエントリ216(0)~216(Z)のうちのマスタテーブルキャッシュエントリ216(0)がメモリアドレス222に対応するかどうかを判断すること(ブロック308)を含み得ることを規定し得る。対応する場合、メモリコントローラ202は、マスタテーブルキャッシュエントリ216(0)にアクセスし得る(ブロック310)。一方、複数のマスタテーブルキャッシュエントリ216(0)~216(Z)のうちのマスタテーブルキャッシュエントリ216(0)がメモリアドレス222に対応しない場合、メモリコントローラ202は、第2のメモリ106におけるマスタテーブル112にアクセスすることができ、マスタテーブル112は、各々が複数のQoSID212(0)~212(M)のうちのQoSID212(0)に関連付けられるメモリアドレス222に対応する複数のマスタテーブルエントリ114(0)~114(M)を含む(ブロック312)。メモリアドレス222に関連付けられるQoSID212(0)を識別した後、処理は図3Cのブロック314で再開する。
次に図3Cを参照すると、メモリコントローラ202は、メモリコントローラ202のソフトウェア構成可能なQoSポリシーテーブル204を使用して、メモリアドレス222に関連付けられるQoSID208(0)をQoSポリシー状態210(0)に関連付ける(ブロック314)。したがって、メモリコントローラ202は、本明細書では「ソフトウェア構成可能なQoSポリシーテーブルを使用して、メモリアドレスに関連付けられるQoSIDをQoSポリシー状態に関連付けるための手段」と呼ばれ得る。メモリコントローラ202は次いで、第1のメモリ104および第2のメモリ106の一方でメモリアクセス動作を実行するためにQoSポリシー状態210(0)を適用する(ブロック316)。この点について、メモリコントローラ202は、本明細書では「第1のメモリおよび第2のメモリの一方でメモリアクセス動作を実行するためにQoSポリシー状態を適用するための手段」と呼ばれ得る。第1のメモリ104が第2のメモリ106のための透過的なキャッシュとして動作するように構成される態様などのいくつかの態様では、メモリアクセス動作を実行するためにQoSポリシー状態210(0)を適用するためのブロック316の動作は、QoSポリシー状態210(0)に基づいて第1のメモリ104からのキャッシュエビクションおよび第1のメモリ104のキャッシュフィルの一方を実行すること(ブロック318)を含み得る。いくつかの態様はまた、メモリコントローラ202が、プロセッサベースシステム200上で実行されているソフトウェアプロセス110から、QoSポリシーテーブル204の複数のQoSポリシーエントリ206(0)~206(Y)のうちのQoSポリシーエントリ206(0)に対する更新を受信し得る(ブロック320)ことを規定し得る。
本明細書で開示する態様によるプロセッサベースシステムにおける空間サービス品質(QoS)タグ付けを使用する異種メモリシステムの柔軟な管理を実現することは、任意のプロセッサベースデバイス内で提供され得るか、または任意のプロセッサベースデバイスに統合され得る。例には、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、全地球測位システム(GPS)デバイス、モバイルフォン、セルラーフォン、スマートフォン、セッション開始プロトコル(SIP)フォン、タブレット、ファブレット、サーバ、コンピュータ、ポータブルコンピュータ、モバイルコンピューティングデバイス、装着型コンピューティングデバイス(たとえば、スマートウォッチ、ヘルスまたはフィットネストラッカー、アイウェアなど)、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビ、チューナ、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、ポータブルデジタルビデオプレーヤ、自動車、車両構成要素、アビオニクスシステム、ドローン、およびマルチコプターが含まれる。
この点について、図4は、図2のプロセッサベースシステム200に対応することができ、図2に示すメモリコントローラ202を用いることができる、プロセッサベースシステム400の一例を示す。この例では、プロセッサベースシステム400は、各々が1つまたは複数のプロセッサ404を含む、1つまたは複数の中央処理装置(CPU)402を含む。CPU402は、マスタデバイスであり得る。CPU402は、一時的に記憶されたデータに迅速にアクセスするために、プロセッサ404に結合されたキャッシュメモリ406を有し得る。CPU402は、システムバス408に結合され、プロセッサベースシステム400内に含まれるマスタデバイスとスレーブデバイスとを相互結合することができる。よく知られているように、CPU402は、システムバス408を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU402は、スレーブデバイスの一例として、メモリコントローラ202にバストランザクション要求を通信することができる。
他のマスタデバイスおよびスレーブデバイスがシステムバス408に接続されてよい。図4に示すように、これらのデバイスは、例として、メモリシステム410と、1つまたは複数の入力デバイス412と、1つまたは複数の出力デバイス414と、1つまたは複数のネットワークインターフェースデバイス416と、1つまたは複数のディスプレイコントローラ418とを含むことができる。入力デバイス412は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含むことができる。出力デバイス414は、限定はしないが、オーディオインジケータ、ビデオインジケータ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス416は、ネットワーク420へのデータ、およびネットワーク420からのデータの交換を可能にするように構成された任意のデバイスとすることができる。ネットワーク420は、限定はしないが、ワイヤードまたはワイヤレスネットワーク、プライベートまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WLAN)、およびインターネットを含む、任意のタイプのネットワークとすることができる。ネットワークインターフェースデバイス416は、任意のタイプの所望の通信プロトコルをサポートするように構成され得る。メモリシステム410は、1つまたは複数のメモリユニット422(0)~422(Z)を含むことができ、そのサブセットは異種メモリを含み得る。
CPU402はまた、1つまたは複数のディスプレイ424に送られる情報を制御するために、システムバス408を介してディスプレイコントローラ418にアクセスするように構成され得る。ディスプレイコントローラ418は、1つまたは複数のビデオプロセッサ426を介して表示されるように情報をディスプレイ424に送り、ビデオプロセッサ426は、表示されるべき情報を処理してディスプレイ424に適したフォーマットにする。ディスプレイ424は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含むことができる。
当業者は、本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムが、電子ハードウェア、メモリ内もしくは別のコンピュータ可読媒体内に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令、または両方の組合せとして実装され得ることをさらに諒解されよう。本明細書で説明するメモリコントローラは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて採用される場合がある。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリであってもよく、任意のタイプの所望の情報を記憶するように構成され得る。この互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、概してそれらの機能に関して上記において説明した。そのような機能がどのように実装されるのかは、特定の適用例、設計選択、および/またはシステム全体に課される設計制約によって決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装してもよいが、そのような実装の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
本明細書で開示する態様に関して説明する様々な例示的なメモリコントローラ、論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。プロセッサは、マイクロプロセッサであってよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。
本明細書で開示する態様は、ハードウェアにおいて具現化されてもよく、かつハードウェア内に記憶され、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、動的RAM(DRAM)、同期DRAM(SDRAM)、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形態のコンピュータ可読媒体の中に存在し得る命令において具現化されてもよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読取るとともに記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体は、プロセッサと一体化してよい。プロセッサおよび記憶媒体は、ASICの中に存在する場合がある。ASICは、リモート局の中に存在する場合がある。代替として、プロセッサおよび記憶媒体は、個別構成要素としてリモート局、基地局、またはサーバの中に存在する場合がある。
本明細書の例示的な態様のいずれかで説明した動作ステップが、例示および説明を提供するために記載されていることにも留意されたい。説明した動作は、図示のセット以外の数多くの異なるセットにおいて実行される場合がある。さらに、単一の動作ステップにおいて記載した動作は、実際にはいくつかの異なるステップにおいて実行される場合がある。加えて、例示的な態様において論じられた1つまたは複数の動作ステップは組み合わせられる場合がある。フローチャート図に示した動作ステップは、当業者には容易に明らかであるように、多数の異なる変更を受ける場合があることを理解されたい。当業者は、情報および信号が様々な異なる技術および技法のうちのいずれかを使用して表されてもよいことも理解されよう。たとえば、上記の説明全体にわたって参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁気粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表されてもよい。
本開示の上記の説明は、あらゆる当業者が本開示を作成または使用することを可能にするために提供されている。本開示の様々な変更が当業者に容易に明らかになり、本明細書で定義する一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用されてもよい。したがって、本開示は、本明細書で説明した例および設計に限定されるものでなく、本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
100 プロセッサベースシステム
102 異種メモリシステム
104 第1のメモリ
106 第2のメモリ
108 メモリコントローラ
110 ソフトウェアプロセス
112 マスタテーブル
114(0)~114(M) マスタテーブルエントリ
116(0)~116(M) メモリアドレス
116'(0)~116'(Z) キャッシュされたメモリアドレス
118(0)~118(X) メモリ領域
120(0)~120(M) キャッシュウェイ識別子(「WAY ID」)
120'(0)~120'(Z) キャッシュされたウェイ識別子(「WAY ID」)
200 プロセッサベースシステム
202 メモリコントローラ
204 QoSポリシーテーブル
206(0)~206(Y) QoSポリシーエントリ
208(0)~208(Y) QoSID
210(0)~210(Y) QoSポリシー状態
212(0)~212(M) QoSID
212'(0)~212'(Z) キャッシュされたQoSID
214 マスタテーブルキャッシュ
216(0)~216(Z) マスタテーブルキャッシュエントリ
218(0)~218(Q) QoSID
220 メモリアクセス要求
222 メモリアドレス
400 プロセッサベースシステム
402 中央処理装置(CPU)
404 プロセッサ
406 キャッシュメモリ
408 システムバス
410 メモリシステム
412 入力デバイス
414 出力デバイス
416 ネットワークインターフェースデバイス
418 ディスプレイコントローラ
420 ネットワーク
422(0)~422(Z) メモリユニット
424 ディスプレイ
426 ビデオプロセッサ

Claims (12)

  1. プロセッサベースシステムの異種メモリシステムの柔軟な管理を実現するためのメモリコントローラであって、前記メモリコントローラは、異なる性能特性を有する第1のメモリおよび第2のメモリに通信可能に結合され、
    前記メモリコントローラは、複数のサービス品質(QoS)ポリシーエントリを提供するソフトウェア構成可能なQoSポリシーテーブルを含み、各QoSポリシーエントリは、QoSポリシー状態を含み、1つまたは複数のQoS識別子(QoSID)のうちの1つのQoSIDに関連付けられ、前記QoSIDは、複数のメモリ領域のうちの1つまたは複数に関連付けられ、前記複数のメモリ領域は、前記第2のメモリの中に存在し
    前記メモリコントローラは、前記第2のメモリのための透過的なキャッシュとして前記第1のメモリを動作させるようにさらに構成され、
    前記メモリコントローラは、
    前記複数のメモリ領域のうちの1つのメモリ領域に対応するメモリアドレスを含むメモリアクセス要求を受信することと、
    前記メモリアドレスに関連付けられるソフトウェア構成可能なQoSIDを識別することと、
    前記QoSポリシーテーブルを使用して、前記メモリアドレスに関連付けられる前記QoSIDを、該QoSIDに関連付けられたQoSポリシーエントリに含まれる特定のQoSポリシー状態に関連付けることと、
    前記第1のメモリおよび前記第2のメモリの一方で前記特定のQoSポリシー状態を適用したメモリアクセス動作を実行するために、前記メモリアクセス動作に前記特定のQoSポリシー状態を適用することであって、前記特定のQoSポリシー状態を適用したメモリアクセス動作は、前記第1のメモリからのキャッシュエビクションおよび前記第1のメモリのキャッシュフィルの一方である、ことと
    を行うように構成され、前記QoSポリシー状態が前記メモリコントローラによって強制可能なQoS属性を表す、メモリコントローラ。
  2. 前記第1のメモリの複数のキャッシュラインをランダムにサンプリングすることと、
    前記第1のメモリからのエビクションのために、最大のクォータ超過であるキャッシュラインを選択することと
    を行うように構成されることによって、前記特定のQoSポリシー状態に基づいて前記第1のメモリからの前記キャッシュエビクションを実行するように構成される、請求項1に記載のメモリコントローラ。
  3. 前記第2のメモリにおけるマスタテーブルにアクセスするように構成されることによって、前記メモリアドレスに関連付けられる前記QoSIDを識別するように構成され、前記マスタテーブルは、各々が前記1つまたは複数のQoSIDのうちの1つのQoSIDに関連付けられる1つまたは複数のメモリアドレスの範囲に対応する複数のマスタテーブルエントリを含む、請求項1に記載のメモリコントローラ。
  4. 前記プロセッサベースシステム上で実行されているソフトウェアプロセスから、前記マスタテーブルの前記複数のマスタテーブルエントリのうちの1つのマスタテーブルエントリに対する更新を受信するようにさらに構成される、請求項3に記載のメモリコントローラ。
  5. 各々が前記マスタテーブルのマスタテーブルエントリをキャッシュするように構成された複数のマスタテーブルキャッシュエントリを含むマスタテーブルキャッシュをさらに含み、
    前記メモリコントローラは、前記第2のメモリにおける前記マスタテーブルにアクセスする前に、
    前記マスタテーブルキャッシュの前記複数のマスタテーブルキャッシュエントリのうちの1つのマスタテーブルキャッシュエントリが前記メモリアドレスに対応するかどうかを判断することと、
    前記複数のマスタテーブルキャッシュエントリのうちの1つのマスタテーブルキャッシュエントリが前記メモリアドレスに対応するとの判断に応答して、前記マスタテーブルキャッシュエントリにアクセスすることと
    を行うように構成されることによって、前記メモリアドレスに関連付けられる前記QoSIDを識別するように構成され、
    前記メモリコントローラは、前記複数のマスタテーブルキャッシュエントリのうちの1つのマスタテーブルキャッシュエントリが前記メモリアドレスに対応しないとの判断に応答して、前記第2のメモリにおける前記マスタテーブルにアクセスするように構成される、請求項3に記載のメモリコントローラ。
  6. 前記メモリアドレスに関連して前記第1のメモリによって記憶された前記QoSIDにアクセスするように構成されることによって、前記メモリアドレスに関連付けられる前記QoSIDを識別するように構成される、請求項1に記載のメモリコントローラ。
  7. 前記プロセッサベースシステム上で実行されているソフトウェアプロセスから、前記QoSポリシーテーブルの前記複数のQoSポリシーエントリのうちの1つのQoSポリシーエントリに対する更新を受信するようにさらに構成される、請求項1に記載のメモリコントローラ。
  8. 前記複数のQoSポリシーエントリの各々のQoSポリシー状態は、クォータを示す、請求項1に記載のメモリコントローラ。
  9. 前記第1のメモリとして高帯域幅メモリ(HBM)および前記第2のメモリとしてダイナミックランダムアクセスメモリ(DRAM)に通信可能に結合される、請求項1に記載のメモリコントローラ。
  10. プロセッサベースシステムの異種メモリシステムの柔軟な管理を実現するための方法であって、
    メモリコントローラによって、異なる性能特性を有する第1のメモリおよび第2のメモリのうちの前記第2のメモリの複数のメモリ領域のうちの1つのメモリ領域に対応するメモリアドレスを含むメモリアクセス要求を受信するステップであって、前記メモリコントローラは、前記第2のメモリのための透過的なキャッシュとして前記第1のメモリを動作させるよう構成される、ステップと、
    複数のサービス品質(QoS)識別子(QoSID)のうちのソフトウェア構成可能なQoSIDを識別するステップであって、前記識別されたQoSIDは、前記メモリアドレスに関連付けられる、ステップと、
    前記メモリコントローラのソフトウェア構成可能なQoSポリシーテーブルを使用して、前記メモリアドレスに関連付けられる前記識別されたQoSIDを、該QoSIDに関連付けられたQoSポリシーエントリに含まれる特定のQoSポリシー状態に関連付けるステップと、
    前記第1のメモリおよび前記第2のメモリの一方で前記特定のQoSポリシー状態を適用したメモリアクセス動作を実行するために、前記メモリアクセス動作に前記特定のQoSポリシー状態を適用するステップであって、前記特定のQoSポリシー状態を適用したメモリアクセス動作は、前記第1のメモリからのキャッシュエビクションおよび前記第1のメモリのキャッシュフィルの一方である、ステップと
    を含み、前記QoSポリシー状態が前記メモリコントローラによって強制可能なQoS属性を表す、方法。
  11. 前記複数のメモリ領域は、前記第2のメモリの複数のメモリ領域を含む、請求項10に記載の方法。
  12. 前記QoSポリシー状態に基づいて前記第1のメモリからの前記キャッシュエビクションを実行するステップは、
    前記第1のメモリの複数のキャッシュラインをランダムにサンプリングするステップと、
    前記第1のメモリからのエビクションのために、最大のクォータ超過であるキャッシュラインを選択するステップと
    を含む、請求項10に記載の方法。
JP2019514121A 2016-09-22 2017-08-25 プロセッサベースシステムの異種メモリシステムの柔軟な管理を実現するためのメモリコントローラおよび方法 Active JP7116047B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/272,951 US10055158B2 (en) 2016-09-22 2016-09-22 Providing flexible management of heterogeneous memory systems using spatial quality of service (QoS) tagging in processor-based systems
US15/272,951 2016-09-22
PCT/US2017/048561 WO2018057231A1 (en) 2016-09-22 2017-08-25 Providing flexible management of heterogeneous memory systems using spatial quality of service (qos) tagging in processor-based systems

Publications (3)

Publication Number Publication Date
JP2019532412A JP2019532412A (ja) 2019-11-07
JP2019532412A5 JP2019532412A5 (ja) 2020-09-17
JP7116047B2 true JP7116047B2 (ja) 2022-08-09

Family

ID=59762104

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019514121A Active JP7116047B2 (ja) 2016-09-22 2017-08-25 プロセッサベースシステムの異種メモリシステムの柔軟な管理を実現するためのメモリコントローラおよび方法

Country Status (9)

Country Link
US (1) US10055158B2 (ja)
EP (1) EP3516523B1 (ja)
JP (1) JP7116047B2 (ja)
KR (1) KR102545726B1 (ja)
CN (1) CN109690500B (ja)
BR (1) BR112019005235A2 (ja)
CA (1) CA3034273A1 (ja)
TW (1) TWI655545B (ja)
WO (1) WO2018057231A1 (ja)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11586627B2 (en) 2016-09-26 2023-02-21 Splunk Inc. Partitioning and reducing records at ingest of a worker node
US11281706B2 (en) 2016-09-26 2022-03-22 Splunk Inc. Multi-layer partition allocation for query execution
US11874691B1 (en) 2016-09-26 2024-01-16 Splunk Inc. Managing efficient query execution including mapping of buckets to search nodes
US11243963B2 (en) 2016-09-26 2022-02-08 Splunk Inc. Distributing partial results to worker nodes from an external data system
US11663227B2 (en) 2016-09-26 2023-05-30 Splunk Inc. Generating a subquery for a distinct data intake and query system
US10956415B2 (en) 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US10977260B2 (en) 2016-09-26 2021-04-13 Splunk Inc. Task distribution in an execution node of a distributed execution environment
US11580107B2 (en) 2016-09-26 2023-02-14 Splunk Inc. Bucket data distribution for exporting data to worker nodes
US10353965B2 (en) 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US11567993B1 (en) 2016-09-26 2023-01-31 Splunk Inc. Copying buckets from a remote shared storage system to memory associated with a search node for query execution
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US11232100B2 (en) 2016-09-26 2022-01-25 Splunk Inc. Resource allocation for multiple datasets
US11023463B2 (en) 2016-09-26 2021-06-01 Splunk Inc. Converting and modifying a subquery for an external data system
US11550847B1 (en) 2016-09-26 2023-01-10 Splunk Inc. Hashing bucket identifiers to identify search nodes for efficient query execution
US11321321B2 (en) 2016-09-26 2022-05-03 Splunk Inc. Record expansion and reduction based on a processing task in a data intake and query system
US11416528B2 (en) 2016-09-26 2022-08-16 Splunk Inc. Query acceleration data store
US11314753B2 (en) 2016-09-26 2022-04-26 Splunk Inc. Execution of a query received from a data intake and query system
US11461334B2 (en) 2016-09-26 2022-10-04 Splunk Inc. Data conditioning for dataset destination
US11250056B1 (en) 2016-09-26 2022-02-15 Splunk Inc. Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system
US11294941B1 (en) 2016-09-26 2022-04-05 Splunk Inc. Message-based data ingestion to a data intake and query system
US11126632B2 (en) 2016-09-26 2021-09-21 Splunk Inc. Subquery generation based on search configuration data from an external data system
US20180089324A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US11163758B2 (en) 2016-09-26 2021-11-02 Splunk Inc. External dataset capability compensation
US10984044B1 (en) 2016-09-26 2021-04-20 Splunk Inc. Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system
US11599541B2 (en) 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
US11615104B2 (en) 2016-09-26 2023-03-28 Splunk Inc. Subquery generation based on a data ingest estimate of an external data system
US11222066B1 (en) 2016-09-26 2022-01-11 Splunk Inc. Processing data using containerized state-free indexing nodes in a containerized scalable environment
US11106734B1 (en) 2016-09-26 2021-08-31 Splunk Inc. Query execution using containerized state-free search nodes in a containerized scalable environment
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US11620336B1 (en) * 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US11003714B1 (en) 2016-09-26 2021-05-11 Splunk Inc. Search node and bucket identification using a search node catalog and a data store catalog
US11269939B1 (en) 2016-09-26 2022-03-08 Splunk Inc. Iterative message-based data processing including streaming analytics
US11562023B1 (en) 2016-09-26 2023-01-24 Splunk Inc. Merging buckets in a data intake and query system
US11442935B2 (en) 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US11593377B2 (en) 2016-09-26 2023-02-28 Splunk Inc. Assigning processing tasks in a data intake and query system
KR20180104830A (ko) * 2017-03-14 2018-09-27 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
US11989194B2 (en) 2017-07-31 2024-05-21 Splunk Inc. Addressing memory limits for partition tracking among worker nodes
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
US20190057045A1 (en) * 2017-08-16 2019-02-21 Alibaba Group Holding Limited Methods and systems for caching based on service level agreement
US11151137B2 (en) 2017-09-25 2021-10-19 Splunk Inc. Multi-partition operation in combination operations
US10896182B2 (en) 2017-09-25 2021-01-19 Splunk Inc. Multi-partitioning determination for combination operations
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
WO2020220216A1 (en) 2019-04-29 2020-11-05 Splunk Inc. Search time estimate in data intake and query system
US11715051B1 (en) 2019-04-30 2023-08-01 Splunk Inc. Service provider instance recommendations using machine-learned classifications and reconciliation
US11343176B2 (en) * 2019-06-24 2022-05-24 Amazon Technologies, Inc. Interconnect address based QoS regulation
US11494380B2 (en) 2019-10-18 2022-11-08 Splunk Inc. Management of distributed computing framework components in a data fabric service system
US11237731B2 (en) 2019-10-24 2022-02-01 Micron Technology, Inc. Quality of service for memory devices using suspend and resume of program and erase operations
US11687244B2 (en) * 2019-10-24 2023-06-27 Micron Technology, Inc. Quality of service for memory devices using weighted memory access operation types
US11620053B2 (en) * 2019-10-24 2023-04-04 Micron Technology, Inc. Quality of service for the multiple functions in memory devices
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130159633A1 (en) 2011-12-15 2013-06-20 Brian P. Lilly Qos management in the l2 cache
JP2016503911A (ja) 2012-12-10 2016-02-08 クアルコム,インコーポレイテッド サービス品質を使用して異なるメモリデバイスにメモリを割り振るためのシステムおよび方法
WO2016085641A1 (en) 2014-11-25 2016-06-02 Qualcomm Incorporated Providing shared cache memory allocation control in shared cache memory systems

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6260127B1 (en) 1998-07-13 2001-07-10 Compaq Computer Corporation Method and apparatus for supporting heterogeneous memory in computer systems
US20030135609A1 (en) * 2002-01-16 2003-07-17 Sun Microsystems, Inc. Method, system, and program for determining a modification of a system resource configuration
US8259566B2 (en) * 2005-09-20 2012-09-04 Qualcomm Incorporated Adaptive quality of service policy for dynamic networks
US7646636B2 (en) 2007-02-16 2010-01-12 Mosaid Technologies Incorporated Non-volatile memory with dynamic multi-mode operation
US20080270483A1 (en) * 2007-04-30 2008-10-30 Hewlett-Packard Development Company, L.P. Storage Management System
US20110055495A1 (en) * 2009-08-28 2011-03-03 Qualcomm Incorporated Memory Controller Page Management Devices, Systems, and Methods
US20130046934A1 (en) 2011-08-15 2013-02-21 Robert Nychka System caching using heterogenous memories
US9100321B2 (en) * 2012-11-28 2015-08-04 International Business Machines Corporation Dynamic network traffic management in response to non-network conditions input
US9201777B2 (en) * 2012-12-23 2015-12-01 Advanced Micro Devices, Inc. Quality of service support using stacked memory device with logic die
US9224452B2 (en) * 2013-01-17 2015-12-29 Qualcomm Incorporated Heterogeneous memory systems, and related methods and computer-readable media for supporting heterogeneous memory access requests in processor-based systems
US9880773B2 (en) * 2013-03-27 2018-01-30 Vmware, Inc. Non-homogeneous disk abstraction for data oriented applications
WO2015101827A1 (en) 2013-12-31 2015-07-09 Mosys, Inc. Integrated main memory and coprocessor with low latency
US20150286571A1 (en) * 2014-04-04 2015-10-08 Qualcomm Incorporated Adaptive cache prefetching based on competing dedicated prefetch policies in dedicated cache sets to reduce cache pollution
US10838862B2 (en) * 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods
US10282100B2 (en) * 2014-08-19 2019-05-07 Samsung Electronics Co., Ltd. Data management scheme in virtualized hyperscale environments
US10437479B2 (en) 2014-08-19 2019-10-08 Samsung Electronics Co., Ltd. Unified addressing and hierarchical heterogeneous storage and memory
US9627072B2 (en) * 2014-11-25 2017-04-18 Macronix International Co., Ltd. Variant operation sequences for multibit memory
US9697126B2 (en) * 2014-11-25 2017-07-04 Qualcomm Incorporated Generating approximate usage measurements for shared cache memory systems
US9575881B2 (en) * 2014-12-04 2017-02-21 Qualcomm Incorporated Systems and methods for providing improved latency in a non-uniform memory architecture

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130159633A1 (en) 2011-12-15 2013-06-20 Brian P. Lilly Qos management in the l2 cache
JP2016503911A (ja) 2012-12-10 2016-02-08 クアルコム,インコーポレイテッド サービス品質を使用して異なるメモリデバイスにメモリを割り振るためのシステムおよび方法
WO2016085641A1 (en) 2014-11-25 2016-06-02 Qualcomm Incorporated Providing shared cache memory allocation control in shared cache memory systems

Also Published As

Publication number Publication date
EP3516523A1 (en) 2019-07-31
CN109690500B (zh) 2023-06-20
TWI655545B (zh) 2019-04-01
US10055158B2 (en) 2018-08-21
CN109690500A (zh) 2019-04-26
KR20190049742A (ko) 2019-05-09
US20180081579A1 (en) 2018-03-22
KR102545726B1 (ko) 2023-06-19
TW201814539A (zh) 2018-04-16
EP3516523B1 (en) 2021-09-15
JP2019532412A (ja) 2019-11-07
BR112019005235A2 (pt) 2019-06-04
WO2018057231A1 (en) 2018-03-29
CA3034273A1 (en) 2018-03-29

Similar Documents

Publication Publication Date Title
JP7116047B2 (ja) プロセッサベースシステムの異種メモリシステムの柔軟な管理を実現するためのメモリコントローラおよび方法
US10169246B2 (en) Reducing metadata size in compressed memory systems of processor-based systems
US10678690B2 (en) Providing fine-grained quality of service (QoS) control using interpolation for partitioned resources in processor-based systems
US9678875B2 (en) Providing shared cache memory allocation control in shared cache memory systems
CN107667355B (zh) 一种用于提供分区的转换高速缓存器的方法及其设备
US20170212840A1 (en) Providing scalable dynamic random access memory (dram) cache management using tag directory caches
US10198362B2 (en) Reducing bandwidth consumption when performing free memory list cache maintenance in compressed memory schemes of processor-based systems
US10228991B2 (en) Providing hardware-based translation lookaside buffer (TLB) conflict resolution in processor-based systems
EP3420460B1 (en) Providing scalable dynamic random access memory (dram) cache management using dram cache indicator caches
US12007896B2 (en) Apparatuses, systems, and methods for configuring combined private and shared cache levels in a processor-based system
US20220398196A1 (en) Apparatuses, systems, and methods for configuring combined private and shared cache levels in a processor-based system
US11947454B2 (en) Apparatuses, systems, and methods for controlling cache allocations in a configurable combined private and shared cache in a processor-based system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200805

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210609

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210621

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220615

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220704

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220728

R150 Certificate of patent or registration of utility model

Ref document number: 7116047

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150