JP2017076396A - コンピューティングシステムとその動作方法 - Google Patents

コンピューティングシステムとその動作方法 Download PDF

Info

Publication number
JP2017076396A
JP2017076396A JP2016200590A JP2016200590A JP2017076396A JP 2017076396 A JP2017076396 A JP 2017076396A JP 2016200590 A JP2016200590 A JP 2016200590A JP 2016200590 A JP2016200590 A JP 2016200590A JP 2017076396 A JP2017076396 A JP 2017076396A
Authority
JP
Japan
Prior art keywords
memory
core
affinity
slab
computing system
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
JP2016200590A
Other languages
English (en)
Inventor
リゥ,フェイ
Fei Liu
ソク キ,ヤン
Yang Seok Ki
ソク キ,ヤン
サン,ザイリン
Xiling Sun
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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
Priority claimed from US15/062,855 external-priority patent/US20170109080A1/en
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2017076396A publication Critical patent/JP2017076396A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1647Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the 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
    • 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

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)
  • Memory System (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】性能を向上させ、簡単に具現可能であるコンピューティングシステムのメモリ管理方法を提供する。【解決手段】本発明に係るコンピューティングシステムは、メモリバンク及びメモリランクを有するメモリモジュール、及び前記メモリモジュールに連結される制御ユニットを含み、前記制御ユニットは、集合メモリ及びCPUコアの間でコア・メモリ親和性を判別し、前記コア・メモリ親和性に基づいて前記CPUコアに対するコア親和メモリとして前記集合メモリから前記メモリバンク及び前記メモリランクを指定し、そして前記CPUコアを有するコア・アプリケーション親和性に基づいて前記コア親和メモリからアプリケーションプログラムにスラブクラス(slab class)を割当てることができる。【選択図】図1

Description

本発明はコンピューティングシステムとその動作方法に係り、特にそのメモリ管理に関する。
現代の消費者向け及び産業用電子製品、特にキーバリュー(key value)装置のような装置は、ビックデータ及び実時間ウェブアプリケーションの分析を含め、現代生活を支援する益々高度になる機能を提供している。既存技術における研究開発は、数多くの互いに異なる方向に進められている。
ユーザが情報処理技術の成長に伴い、益々強力な能力を享受するに連れて、新旧の情報処理パラダイムは共に、この新しいユーザ能力空間を活用し始めた。大量の情報処理が枢要となる(quintessential)電子技術ベースの成長分野の1つは、ビックデータ分析、例えば、 “NonSQL”(NoSQL、non−Structured Query Language)ベースのシステムに関連するビックデータ分析である。しかし、効率的なメモリ管理を伴う高速IOPS(input/output per second)スループットには依然として、なかなか当業者の手が届かない(elude)。
従って、メモリ割当のためのメモリ管理メカニズムを有するコンピューティングシステムに対する要求は依然解消されていない。絶え間なく増加する商業的な競争圧力に鑑みると、増大する消費者の期待と市場における意味ある製品差別化の機会の減少を合わせ考慮すると、このような問題に対する回答を発見することが益々重要になっている。その上に、費用を削減し、製品の効率性と性能を向上し、競争圧力を凌ぐという要求が重なるので、このような問題に対する回答の発見は緊急を要する。
このような問題に対する解決策は長い間追求されて来たが、これまでの研求は何らの解決策を教示も提案もしていない。従って、このような問題に対する解決策には依然として、なかなか当業者の手が届かない(elude)。
米国特許第8,832、411号公報 米国特許第7,076,632号公報 米国特許第7,003,597号公報 米国特許公開第2014/0281333号明細書
本発明の目的は性能を向上させ、簡単に具現可能であるコンピューティングシステムのメモリ管理方法を提供することにある。
本発明の実施形態によるコンピューティングシステムは、メモリバンク及びメモリランクを有するメモリモジュール、及び前記メモリモジュールに連結される制御ユニットを含み、前記制御ユニットは、
(a)集合メモリ(aggregated memory)及びCPU(central processing unit)コアの間でコア・メモリ親和性(affinity)を判別し、
(b)前記コア・メモリ親和性(affinity)に基づいて前記CPUコアに対するコア親和(affiliated)メモリとして、前記集合メモリから前記メモリバンク及び前記メモリランクを指定し、並びに、
(c)前記CPUコアを有するコア・アプリケーション親和性に基づいて前記コア親和メモリからアプリケーションプログラムにスラブクラス(slab class)を割当てる、ように構成される。
本発明の実施形態によるコンピューティングシステムの動作方法は、
(a)集合メモリ及びCPU(central processing unit)コアの間でコア・メモリ親和性を判別する段階、
(b)前記コア・メモリ親和性に基づいて前記CPUコアのコア親和メモリとして、前記集合メモリからメモリモジュールのメモリバンク及びメモリランクを指定する段階、並びに、
(c)前記CPUコアを有するコア・アプリケーション親和性に基づいて前記コア親和メモリからアプリケーションプログラムにスラブクラスを割当てる段階を含む。
本発明の実施形態によるコンピューティングシステムのメモリ管理方法は、ヒュージページをメモリバンクの中の1つのメモリランク内にメモリページの物理的に連続したインスタンスから集めることによって、メモリバンクの各々を並列に動作させることができ、これに従う性能向上を期待することができる。
本発明に係るメモリ管理方法を有するコンピューティングシステムを示す図面である。 本発明に係るコンピューティングシステムにおけるグローバルキャッシュマップの実施形態を示す図面である。 本発明に係るコンピューティングシステムにおけるグローバルキャッシュマップの追加的な実施形態を示す図面である。 本発明に係るコンピューティングシステムにおけるメモリ割当の実施形態を示す図面である。 本発明に係るコンピューティングシステムにおけるメモリ管理方法の例示的なフローチャートである。 本発明に係るコンピューティングシステムにおけるメモリ割当方法の例示的なフローチャートである。 本発明に係るコンピューティングシステムの動作方法の例示的なフローチャートである。
以下の実施形態は、本発明を使用する当業者に十分に詳細に説明される。その他の実施形態は本明細書を基づいて明白になり、システム、プロセス、又は機械的な変化は本発明の実施形態の範囲を逸脱せずに、具現できることが理解されよう。
以下の説明で、多数の特定細部事項は本発明の完全な理解を提供するために与えられる。しかし、本発明がこのような特定細部事項無しでも実施できるが理解されるべきである。本発明の実施形態を曖昧にすることを避けるために、幾つかの広く公知された回路、システム構成、及びプロセス段階は詳細に記載しない。
システムの実施形態を示す図面は、正確な縮尺ではなく、概略的に図示している。特に、一部の寸法は図面上の表現を明確にするため、誇張されて図示される場合がある。同様に、説明を簡単にするため図面上の視点は一般に類似な方向を示すが、図面表現は大部分の場合、任意的である。一般的に、本発明は任意の方向に動作できる。実施形態は、説明を簡単にするため第1実施形態、第2実施形態等、一連番号を付してあるが、他の意味はなく、また本発明の実施形態を制限する意図はない。
図1は本発明に係るメモリ管理方法を有するコンピューティングシステムを示す図面である。
図1を参照すれば、コンピューティングシステム100は装置102を含む。例えば、装置102は、サーバ、スマートフォン、ラップトップコンピュータ、又はデスクトップコンピュータのようなコンピューティング装置である。特定の(specific)例として、装置102は、グリッド−コンピューティングリソース、仮想化コンピュータリソース、クラウドコンピューティングリソース、ピアツーピア分散コンピューティング装置、又はそれらの組合せである。
装置102は、キーバリューストア(key−value store)又はNoSQLデータベースのようなデータベースを支援するか、又は具現でき、そしてビックデータ及び実時間ウェブアプリケーション、又はそれらの組合せを実行できる装置である。例えば、装置102はフラッシュメモリのような不揮発性データストレージを有するキーバリューストアの具現を含む。
装置102は、制御ユニット112、ストレージユニット114、通信ユニット116、及びユーザインタフェイス118などのハードウェア構成要素のようなユニットを含む。装置102のユニットは他のユニットから独立的、個別的に、又は従属的に動作できる。又は装置102のユニットは複数の他のユニットと協同できる。
制御ユニット112は制御インタフェイス122を含む。制御ユニット112は、ソフトウェア126を実行してコンピューティングシステム100の知能を提供する。
制御ユニット112はハードウェア回路の複数の異なる方式により具現できる。例えば、制御ユニット112はプロセッサ、ASIC(application specific integrated circuit)、組込み型プロセッサ、マイクロプロセッサ、ハードウェア制御ロジック、ハードウェアFSM(finite state machine)、DSP(digital signal processor)、PLD(programmable logic device)、又はそれらの組合せである。制御ユニット112は1つ以上のCPU(central processing unit)コア142を有するCPUとして具現される。ここで、CPUコアはCPUの基本、又は根本的な計算ユニットである。制御ユニット112は、メモリ割当動作又は情報フローのために、メモリ制御器、メモリチップ制御器、又はメモリ制御器ユニットなどの専用回路を含む。
制御インタフェイス122は制御ユニット112と装置102内の他のユニットとの間の通信のために使用される。また、制御インタフェイス122は装置102の外部との通信に使用される。
制御インタフェイス122は他のユニット又は外部のソース()から情報を受信することができるか、又は他のユニット又は外部のデスティネーション(送信先)に情報を伝送する。これら、外部のソース及び外部の送信先は、装置102の外部にあるソース及び送信先を指す。
制御インタフェイス122は多様な方式のハードウェア回路により具現でき、何れの内部ユニット又は外部ユニットが制御インタフェイス122にインタフェイスするかによって互いに異なる具現を含む。例えば、制御インタフェイス122は、圧力センサ、慣性センサ(inertial sensor)、MEMS(microelectromechnaical system)、光学回路、導波路、無線回路、有線回路、又はそれらの組合せで具現される。
ストレージユニット114はソフトウェア126を格納する。また、ストレージユニット114は受信画像を示すデータ、従前の画像を示すデータ、音声ファイルなどの関連データ情報を格納する。
ストレージユニット114は揮発性メモリ、不揮発性メモリ、内部メモリ、外部メモリ、又はそれらの組合せを有するハードウェア回路により具現される。例えば、ストレージユニット114はNVRAM(non−volatile RAM(random access memory))、フラッシュメモリ、ディスクストレージ、ReRAM(resistive RAM)、PRAM(phase change RAM)などの不揮発性ストレージ、又は、SRAM(static RAM)などの揮発性ストレージである。特定の例として、ストレージユニット114は、メモリモジュール150の形態として、RAM(random access memory)、DRAM(dynamic RAM)、SDRAM(synchronous dynamic RAM)、又はそれらの組合せを含む。メモリモジュール150は、DIMM(dual in−line memory modules)などのハードウェアモジュールである。メモリモジュール150はメモリチャンネル152、メモリバンク154、及びメモリランク156に区分される。ストレージユニット114のメモリモジュール150は物理的にアドレス可能であり、機能的にDMA(直接メモリアクセス、direct memory access)を含み得る。
ストレージユニット114はストレージインタフェイス124を含む。ストレージインタフェイス124は装置102の他の複数のユニットの間の通信に使用される。また、ストレージインタフェイス124は装置102の外部との通信のために使用される。
ストレージインタフェイス124は、他のユニット又は外部ソースから情報を受信でき、若しくは、他のユニット又は外部送信先に情報を送信できる。ここで、外部ソース及び外部送信先は装置102の外部にあるソース及び送信先を指す。
ストレージインタフェイス124は何れのユニット又は外部ユニットがストレージユニット114とインタフェイスされているかによって互いに異なる具現を含む。ストレージインタフェイス124は制御インタフェイス122と類似の技術又は方法で具現できる。
通信ユニット116は装置102との外部通信を活性化できる。例えば、通信ユニット116は、周辺装置又はデスクトップコンピュータなどの付属装置との通信を装置102に対して可能にする。通信ユニット116はマイクロエレクトロニクス、フィルタ、モジュレータ、デモジュレータ、検出器、デコーダ、基底帯域モデム、又はアンテナなどの能動構成要素及び受動構成要素を含み得る。
通信ユニット116は通信インタフェイス128を含む。通信インタフェイス128は通信ユニット116と装置102内の他のユニットとの間の通信に使用される。通信インタフェイス128は他のユニットから情報を受信し、又は他のユニットに情報を伝送できる。
通信インタフェイス128は、何れのユニットが通信ユニット116とインタフェイスするか否かによって互いに異なる形に具現化される。通信インタフェイス128は制御インタフェイス122の具現化の場合と類似した技術又は方法で具現される。
ユーザインタフェイス118はユーザに、装置102とのインタフェイス及び相互作用を可能にする。ユーザインタフェイス118は入力装置及び出力装置を含む。例えば、ユーザインタフェイス118の入力装置は、データ及び通信入力を提供するために、キーパッド、タッチパッド、ソフト−キー、キーボード、マイクロフォン、遠隔信号を受信する赤外線センサ、又はそれらの組合せを含む。
ユーザインタフェイス118はディスプレイインタフェイス130を含む。ディスプレイインタフェイス130はディスプレイ、プロジェクタ、ビデオスクリーン、スピーカ、又はそれらの組合せを含み得る。
制御ユニット112はコンピューティングシステム100によって生成された情報をディスプレイするために、ユーザインタフェイス118を動作させる。また、制御ユニット112はコンピューティングシステム100の他の機能のためのソフトウェア126を実行できる。更に、制御ユニット112は、通信ユニット116を介した通信経路との相互作用のためのソフトウェア126を実行できる。
図2は本発明に係るコンピューティングシステム100におけるグローバルキャッシュマップの実施形態を示す図面である。図2を参照すれば、グローバルキャッシュマップ210はダイナミックなメモリ割当(dynamic_memory_allocation)のためのメモリプール(memory pool)である。例えば、グローバルキャッシュマップ210は(図4を参照)集合メモリ(aggregated_memory)212のマップである。集合メモリ212はコンピューティングシステム100のOS(operating system、動作システム)によって割当られたメモリである。例えば、集合メモリ212は、OSから予約された直接アクセスメモリの全体量である。集合メモリ212はメモリページとして区分される。メモリページは最も小さい、即ち基本的な量のメモリである。
グローバルキャッシュマップ210は、1つ以上の“ヒュージページ”(huge pages)214として集合メモリ212をマッピングするように組織化される、即ち、整備される。ヒュージページ214は、メモリページの物理的に隣接したインスタンスから生成された物理的に連続したメモリのシングルセクションである。ヒュージページ214の生成は以下で説明される。ヒュージページ214の各々は、ページメモリアドレス216に基づいてグローバルキャッシュマップ210上でインデックスされる。
例えば、ヒュージページ214の各々のためのページメモリアドレス216は論理アドレスとしてインデックスされ、該論理アドレスは、ヒュージページ214の第1インスタンスのための[0、N)から、順次、ヒュージページ214の第4インスタンスのための[3N、4N)に至る物理的に連続したメモリアドレスの範囲を表示する。
更に、グローバルキャッシュマップ210はヒュージページ214を集合ページ218として組織化できる。集合ページ218は物理的に連続したメモリの1つ以上のセグメントのグルーピング又は集合である。例えば、集合ページ218はヒュージページ214の物理的に隣接するインスタンスのグルーピングである。集合ページ218は集合ページ218内のヒュージページ214の個別的なインスタンスに基づいてグローバルキャッシュマップ210上でアドレスできる。
例えば、集合ページ218が[0、N)から[3N、4N)までの範囲のページメモリアドレス216を有するヒュージページ214を含む時、集合ページ218のためのページメモリアドレス216は[0、4N)である。説明の便宜上、集合ページ218がヒュージページ214の4つのインスタンスを含む場合を示したが、集合ページ218に含まれたヒュージページ214の個数は、4つと異なる場合があると理解されるべきである。
グローバルキャッシュマップ210は集合ページ218の複数のインスタンスを含む。例えば、集合ページ218の各インスタンスは、図1のメモリモジュール150の内部において、ヒュージページ214の物理的に連続したインスタンスの最大個数を示す。
例えば、図2に示したように、物理的に連続したヒュージページ214の隣接するインスタンスの最大個数がヒュージページ214の連続した4個である時、集合ページ218の最大個数はヒュージページ214の4つのインスタンスである。
説明の便宜上、グローバルキャッシュマップ210には集合ページ218の追加インスタンスが示される。ここで、追加されたインスタンスは第2集合ページ220及び第3集合ページ222であるが、グローバルキャッシュマップ210は、上記の3個と異なる個数の集合ページ218を含み得ると理解されるべきである。
ここでは、各々、[100N、101N)及び[200N、201N)の範囲のページメモリアドレス216を有する第2集合ページ220及び第3集合ページ222には、ヒュージページ214の連関されたインスタンスが示されていないが、第2集合ページ220及び第3集合ページ222は各々、1つ以上のヒュージページ214を含み得ると理解されるべきである。
集合ページ218はグローバルキャッシュマップ210における全体メモリを表示できる。
図3は本発明に係るコンピューティングシステムにおけるグローバルキャッシュマップの追加的な実施形態を示す図面である。図3を参照すれば、グローバルキャッシュマップ210の内部の集合メモリ212(図2参照)はスラブクラス(slab_class)330に分割して組織化される。スラブクラス330はメモリセグメントのサイズの分類である。グローバルキャッシュマップ210はスラブクラス330の複数のインスタンスを含む。
グローバルキャッシュマップ210はスラブクラス330の複数のインスタンスを同時に維持できる。スラブクラス330は静的又は動的なメモリ割当を含み得る。例えば、メモリの利用可能な最大容量、例えば、分配(distribution)のために利用可能なメモリモジュール150(図1参照)のメモリの全体容量は、スラブクラス330の各々に先着順(first come first serve basis)に割当てられる。
続いて、スラブクラス330の互いに異なるインスタンスに対して利用可能であるメモリの分配に基づいて、スラブクラス330のメモリ割当は互いに類似であるか、又は互いに異なる。特定の例で、スラブクラス330の与えられたインスタンスのサイズは、メモリページの追加割当、又は割当キャンセル(de−allocation)、若しくはヒュージページ214のサブ分割によって増加、又は減少される。
他の実施形態において、スラブクラス330のサイズはスラブクラス330の互いに異なるインスタンスの中で同一である。さらに詳細には、スラブクラス330の各々でメモリ容量は類似であるか、又は等価である。例えば、スラブクラス330は各々2メガバイト又は16メガバイトで具現されるが、スラブクラス330のサイズが互いに異なる値を取り得ると理解されるべきである。
スラブクラス330は複数のスラブチャンク(slab chunk)332を含む。スラブチャンク332は物理的に連続したメモリのセクションである。一般的に、任意のスラブクラス330においてスラブチャンク332のチャンクサイズ334は固定されたサイズであるが、スラブクラス330の互いに異なるインスタンスの中でスラブチャンク332のサイズは互いに異なり得る。例えば、図3に示したように、同一又は類似のメモリ割当を有するスラブクラス330は互いに異なるサイズのスラブチャンク332を有し得る。特定の例で、スラブクラス330の各々には1020バイトのメモリが割当てられる。
続いて、スラブクラス330の1つはスラブチャンク332の複数のインスタンスを含み、ここでは、各スラブチャンク332は96バイトのチャンクサイズ334を有する。一方、スラブクラス330のその他の1つはスラブチャンク332の単一のインスタンスを含み、ここでは、スラブチャンクのチャンクサイズ334は1024バイトである。スラブチャンク332のチャンクサイズ334はデフォルトのサイズに事前に決定されるか,又は設定できる。スラブチャンク332の各々内部ではメモリが物理的に連続する。しかし、スラブチャンク332の各々間ではメモリが非連続であり得る。スラブチャンク332は、以下に説明するようにヒュージページ214に対するメモリ割当から生成する。
図4は本発明に係るコンピューティングシステム100におけるメモリ割当の実施形態を示す図面である。図4を参照すれば、CPUコア142、集合メモリ212、及びアプリケーションプログラム440の間の関係が図示される。
アプリケーションプログラム440はコンピューティングシステム100で実行されるソフトウェアプログラムである。例えば、アプリケーションプログラム440はビックデータ又は実時間ウェブアプリケーションを分析するためのアプリケーションである。アプリケーションプログラム440はCPUコア142の中の1つのCPUコアと、コア・アプリケーション親和性442を有するものとする。
コア・アプリケーション親和性(affinity)442とは、CPUコア142の1つと、アプリケーションプログラム、例えばアプリケーション440との結合である。
例えば、アプリケーションプログラム440の結合の結果、CPUコア142の1つにアプリケーションプログラム440を指定すると、アプリケーションプログラム440がCPUコア142の指定されたインスタンスにおいて排他的に実行されるようにできる。
コア・アプリケーション親和性442はアプリケーションスレッド444に基づいて存在できる。例えば、アプリケーションスレッド444は、CPUコア142の1つのキャッシュに残っている、アプリケーションプログラム440などのアプリケーション又はプロセスの残存又は残余スレッドである。
CPUコア142の各々にコア親和(affiliated)メモリ448が割当てられる。コア親和メモリ448はCPUコアの特定のインスタンスに対して指定されるメモリである。例えば、CPUコア142の中で指定されたインスタンスのみがコア親和メモリ448に利用されるように、コア親和メモリ448はCPUコア142の中の1つに結合される。
特定の例で、コア親和メモリ448は、該コア親和メモリ448とのコア・メモリ親和性450を有するCPUコア142のインスタンスによって、コア・アプリケーション親和性442を有するアプリケーションプログラム440の実行のために排他的に使用される。
コア親和メモリ448はコア・メモリ親和性450に基づいて指定される。コア・メモリ親和性450はメモリ親和性スレッド452に基づいて存在できる。メモリ親和性スレッド452は、特定のメモリ割当を利用して以前に生起したプロセシングの存在を示す。
例えば、コア・メモリ親和性450を有するコア親和メモリ448は、メモリチャンネル152、図1のメモリバンク154、メモリランク156、又はそれらの組合せなどのコア親和メモリ448の物理アドレスに基づいてCPUコア142の1つに結合される。
コア親和メモリ448はパーコアキャッシュマップ(per−core cache map)446にインデックスされる。パーコアキャッシュマップ446はCPUコア142の1つに特化されたメモリプール(memory pool)である。例えば、パーコアキャッシュマップ446はコア親和メモリ448に対するメモリアドレスを含む。CPUコア142の各インスタンスはパーコアキャッシュマップ446の対応するインスタンスに対するアクセスを有する。
スラブクラス330は、コア・メモリ親和性450、アプリケーションプログラム440の必要度、又はそれらの組合せに基づいてグローバルキャッシュマップ210からパーコアキャッシュマップ446に割当てられる。例えば、スラブクラス330は、アプリケーションプログラム440に対するデータオブジェクト(objects)を管理し処理するのに最適なチャンクサイズ334に基づいてパーコアキャッシュマップ446に割当てられる。
コア親和メモリ448のスラブクラス330は、メモリチャンネル152、図1のメモリバンク154、及びメモリランク156を有するメモリモジュール150から割当てられる。メモリモジュール150はCPUコア142の1つに特化されたコア・メモリ親和性450を有する。コンピューティングシステム100のためのメモリ割当の機能は以下で説明される。
図5は本発明に係るコンピューティングシステム100におけるメモリ管理方法の例示的なフローチャートである。図5を参照すれば、コンピューティングシステム100のメモリ管理方法500は多様な方法で具現できる。具現の1つの実施形態は、以下のフローチャートによって説明される。
一般的に、メモリ管理方法500は、図2の集合メモリ212から抽出された図4のコア親和メモリ448などの、物理的に連続したメモリの割当を表現する。集合メモリ212はDMAアドレス可能である。
更に、図4のアプリケーションプログラム440によって発行された入力及び出力(I/O)がI/Oコマンドの各々を満たすために物理アドレスを使用できるように、集合メモリ212及びコア親和メモリ448は物理アドレスに変換される。
本発明に係るメモリ管理方法500のコア親和メモリ448は、アプリケーションプログラム440から装置102へのメモリコピー動作及びデータ構造変更を不要にする。従って、メモリシステム100のメモリ効率性を向上できる。
メモリ管理方法500はメモリギャザプロセス(memory gather process)550でスタートする。メモリギャザプロセス550は集合メモリ212を生成するためにOSから利用可能なメモリを集める。例えば、物理的に連続したメモリはコンピューティングシステム100のOSを通じて予約される。メモリギャザプロセス550は集合メモリ212を生成するために制御ユニット112によって具現される。例えば、制御ユニット112はストレージユニット114の内部の物理的に連続したメモリを予約するようにストレージユニット114とインタフェイスする。
メモリ管理方法500は続いてページアドレスプロセス(page address process)552を進行する。ページアドレスプロセス552は図2のヒュージページ214を生成する。ヒュージページ214の各々はメモリページを組合せて形成される。メモリページの各々はメモリモジュール150の内部の、物理的に連続したメモリの最も小さいセグメント、即ち、部分であり、仮想メモリシステムのメモリ管理のために存在する。
さらに詳細に、ヒュージページ214は、メモリバンク154の1つのメモリランク156の1つの内部において、集合メモリ212からメモリページの物理的に隣接したインスタンスから生成できる。
ヒュージページ214のサイズは、CPU又はRAMの構造(アーキテクチャ)、タイプ、動作モード、又は、制御ユニット112、CPUコア142、又はそれらの組合せに連関されたプロセッサのアドレッシングモードなどのファクタ又は特性に基づいて生成される。
例えば、ページアドレスプロセス552はヒュージページのサイズを選択するためにOSによって具現される。ヒュージページは制御ユニット112、CPUコア142、又はそれらの組合せに連関されたプロセッサ構造によって支援されることができる。ヒュージページ214は、ユーザ空間と反対である、OSのカーネル空間で生成される。ページアドレスプロセス552はヒュージページ214を生成するように制御ユニット112によって具現化される。
メモリ管理方法500は続いてページ組合せプロセス(page combination process)554を進行する。ページ組合せプロセス554は、図2の集合ページ218を生成する。例えば、集合ページ218は、メモリバンク154のインスタンスに属するメモリランク156のインスタンスにおけるヒュージページ214の2つ以上の物理的に隣接するインスタンスを組合せることによって生成される。
他の実施形態において、集合ページ218がメモリランク156の1つのインスタンス内のメモリから生成されるように、集合ページ218は、図1のメモリランク156のレベルで生成される。
他の実施形態において、ページ組合せプロセス554は、ユーザ空間装置ドライバを有するユーザ空間で遂行される。
ページ組合せプロセス554は上述された何れかの方法により集合ページ218を生成するように制御ユニット112によって具現化される。
本発明に係るコンピューティングシステム100は、ユーザ空間装置ドライバを有するユーザ空間で集合ページ218を生成することによってメモリ割当の効率性を向上できる。ユーザ空間装置ドライバはカーネル装置ドライバのオーバヘッド及び負荷を低減し、従って、メモリ割当の効率性を向上できる。
メモリ管理方法500は続いてグローバルマップ生成プロセス(global map generation process)556を進行する。グローバルマップ生成プロセス556は、図2のグローバルキャッシュマップ210を生成する。
例えば、グローバルキャッシュマップ210は、集合ページ218の物理的アドレス、及びヒュージページ214の連関されたインスタンスを含むマップとして生成される。グローバルマップ生成プロセス556は上述されたグローバルキャッシュマップ210を生成するように制御ユニット112によって具現化される。
メモリ管理方法500は続いてスラブ生成プロセス(slab generation process)558を進行する。スラブ生成プロセス558は、ヒュージページ214の1つから図3のスラブクラス330及びスラブチャンク332の両方に集合メモリ212を割当てるか、又は分割する。例えば、スラブアルゴリズムは、グローバルキャッシュマップ210をスラブクラス330に分割するか、又は組織化するように具現化される。スラブクラス330に割当てられたメモリの容量はスラブクラス330の互いに異なるインスタンスの中で一致するように設定される。
さらに詳細には、類似、又は同等の容量のメモリがスラブクラス330の各々に割当てられ、その場合スラブ330の各々はメモリサイズの等化の恩恵をフル又は最適に使用することを可能にする。例えば、スラブクラス330は、メモリチャンネル152、メモリバンク154、メモリランク156、又はそれらの組合せの内における利用可能なメモリに基づいて事前に決定されたサイズに統一できる。特定の例として、スラブクラス330は2MB又は16MBのサイズに具現化される。しかし、スラブクラス330のサイズは上記と異なる場合があると理解されなければならない。
スラブクラス330の各々は、図3の複数のスラブチャンク332に組織化される。スラブクラス330のスラブチャンク332はメモリの物理的に連続した部分から生成される。例えば、スラブクラス330のスラブチャンク332はヒュージページ214の1つの集合メモリ212から割当てられる。特定の例で、スラブ生成プロセス558はヒュージページ214の1つの集合メモリ212から1つ以上の複数のメモリページを割当てることによって、スラブチャンク332を生成するように制御ユニット112によって具現化される。
スラブクラス330の与えられたインスタンスに対するスラブチャンク332の各々のチャンクサイズ334は、固定されたサイズである。スラブクラス330の互いに異なるインスタンスの中で、スラブチャンク332はチャンクサイズ334の互いに異なる値を有するように生成される。
例えば、スラブ生成プロセス558は、カーネルデータオブジェクト又はアプリケーションプログラム440のデータオブジェクトのようなオブジェクトに合う適切なチャンクサイズ334を生成する。
特定の例で、スラブチャンク332のチャンクサイズ334は、ヒュージページ214内のメモリページの1つ以上の物理的に連続したインスタンスの組合せのようなヒュージページ214のサイズ又はその部分に比例する。
例えば、スラブチャンク332はオブジェクトのサイズに対応して、“大きいスラブ”(large slabs)と“小さいスラブ”(small slabs)に区分される。“大きいスラブ”はオブジェクトがヒュージページ214内のページ又はサブディビジョン(sub−division)の1/8以上の場合であり、“小さいスラブ”はオブジェクトがヒュージページ214内のページ又はサブディビジョンの1/8より小さい場合である。スラブ生成プロセス558は、上述されたように集合メモリ212をスラブクラス330及びスラブチャンク332に区分するように制御ユニット112によって具現される。
メモリ管理方法500は続いてメモリ親和性判別プロセス(memory affinity determination process)560を進行する。親和性判別プロセス560はメモリに対するCPU親和性を判別する。
図4のコア・メモリ親和性450は、図4のメモリ親和性スレッド452内のCPUコア142(図1参照)の各々に連関するように判別される。
例えば、集合メモリ212の特定のサブ集合で動作するCPUコア142のインスタンスに連関されたプロセス又はアプリケーションが存在する時、CPUコア142の特定のインスタンスに対するメモリ親和性スレッド452があると判別される。親和性判別プロセス560は上述されたように、コア・メモリ親和性450を判別するように制御ユニット112によって具現化される。
メモリ管理方法500は続いてメモリ親和化プロセス(memory affiliation process)562を進行する。メモリ親和化プロセス562は、メモリ親和性452に基づいてCPUコア142との親和性を有するメモリを指定する。
例えば、図1のメモリモジュール150の1つに対するメモリチャンネル152、メモリバンク154、メモリランク156、又はそれらの組合せは、CPUコア142の特定のインスタンスとコア・メモリ親和性450を有すると判別された場合、図4のコア親和メモリ448として指定される。
特定の例として、メモリ親和化プロセス562は、CPUコア142のインスタンスと共に以前にアプリケーションプログラム440の実行に際して一緒に使用されたことがある、メモリランク156、メモリバンク154、メモリチャンネル152、又はそれらの組合せの中の1つに対してスラブクラス300を指定する。
更に上記の特定の例において、メモリ親和化プロセス562は、アプリケーションプログラム440のサイズに対して最も適合するチャンクサイズ340を有するスラブクラス330を指定する。メモリ親和化プロセス562は上述されたようにCPUコア142と共にメモリを指定する制御ユニット112によって具現化される。
メモリ管理方法500は続いてコアマップ生成プロセス(core map generation process)564を進行する。コアマップ生成プロセス564は、図4のパーコアキャッシュマップ446を生成する。パーコアキャッシュマップ446はコア親和メモリ448の物理的メモリアドレスに基づいて生成される。例えば、コアマップ生成プロセス564において、パーコアキャッシュマップ446はコア親和メモリ448のメモリチャンネル152、メモリバンク154、メモリランク156、又はそれらの組合せを示す物理的メモリアドレスのマップとして生成される。特定の例として、パーコアキャッシュマップ446は、CPUコア142の特定の1つに対して指定された経験があるメモリチャンネル152、メモリバンク154、メモリランク156、又はそれらの組合せの特定のインスタンスに連関されたヒュージページ214に従って生成される。
パーコアキャッシュマップ446におけるCPUコア142との、メモリチャンネル152の互いに異なるインスタンスの親和化は、チャンネルレベル並列化(channel level parallelism)を活性化できる。
メモリチャンネル152のインスタンスに対してメモリランク156に連関されたパーコアキャッシュマップ446に割当られたスラブクラス330の各々は、ランクレベル並列化(rank level parallelism)を活性化できる。
コアマップ生成プロセス564は、上述されたようにコア親和メモリ448に連関されたパーコアキャッシュマップ446を生成するように制御ユニット112によって具現化される。
本発明に係るCPUコア142に対するコア親和メモリ448は、性能向上のためにメモリチャンネル152及びメモリランク156の利用可能な並列化をフルに利用できる。チャンネルレベル並列化及びランクレベル並列化は、メモリチャンネル152のレベル及びメモリランク156のレベルを通して同等な負荷を可能にし、その結果、特に、多重キューアプリケーションに対して各キュー(queue)においてI/Oコマンドを実行する時、コンピューティングシステム100の性能を向できる。
ヒュージページ214の1つの集合メモリ212からスラブクラス330のスラブチャンク332を生成すると、メモリチャンネル152、メモリバンク154、メモリランク156又はそれらの組合せの間の並列化を活性化して、コンピューティングシステム100の性能を向上できる。ヒュージページ214がメモリバンク154の中の1つのメモリランク156の1つの内の、メモリページの物理的に連続したインスタンスから集合されるので、メモリバンク154の各々はコンピューティングシステム100の性能を向上するよう並列に動作できる。
図6は本発明に係るコンピューティングシステム100におけるメモリ割当方法の例示的なフローチャートである。図6を参照すれば、メモリ割当方法600は、メモリ要請段階670において、図4のアプリケーションプログラム440が図2の集合メモリ212にアクセス要請する時、スタートする。アプリケーションプログラム440とのコア・アプリケーション親和性442(図4参照)を有するCPUコア142(図1参照)のインスタンスは、図4のアプリケーションスレッド444に基づいて判別される。
アプリケーションプログラム440に親和化されたCPUコア142のインスタンスが一旦判別されると、マップ引出し(map retrieval)段階672において、CPUコア142のインスタンスに親和化されたパーコアキャッシュマップ446はグローバルキャッシュマップ210から引出す。一実施形態において、メモリ要請段階670におけるメモリ要請は、図1の制御インタフェイス122を通じて制御ユニット112によって受信される。
メモリ割当方法600は続いてCPUアウェア(aware)割当プロセス段階674を進行する。CPUアウェア割当プロセスはCPUコアの親和性に基づいてアプリケーションプログラム440にメモリを割当てる。パーコアキャッシュマップ446がメモリ親和性450に基づいて生成されるので、アプリケーションプログラム440に対するコア親和メモリ448の割当は、コア親和メモリ448、CPUコア142、及びアプリケーションプログラム440の間に結合を提供する。
スラブクラス330はアプリケーションプログラム440の必要度に基づいてコア親和メモリ448から割当てられる。例えば、アプリケーションプログラム440に適合するスラブクラス330の1つは、アプリケーションプログラム440の必要度を満足するチャンクサイズ334を有するスラブクラス330として選択される。
特定の例として、コア親和メモリ448はCPUコア142に連関されたメモリバンク154及びメモリランク156に従って割当てられる。例えば、CPUコア142の特定インスタンスに連関されたメモリバンク154及びメモリバンク154に属するメモリランク156の場合に、スラブクラス330はアプリケーションプログラム440に適合するチャンクサイズ334を有するように割当てられる。スラブクラス330の割当はパーコアキャッシュマップ446に記録される。
メモリ充足(memory sufficiency)段階676において、CPUコア142に親和化されたアプリケーションプログラム440からの要求に応じて、パーコアキャッシュマップ446は拡張される。メモリ充足プロセスはコア親和メモリ448の割当がアプリケーションプログラム440にとり十分であるか否かを判別する。
例えば、現在のパーコアキャッシュマップがアプリケーションプログラム440に対して十分なスラブクラス330の空きインスタンスを有しない時、スラブクラス330の追加インスタンスはグローバルキャッシュマップ210からパーコアキャッシュマップ446に割当てられる。CPUアウェア割当段階674は上述されたようにアプリケーションプログラム440にコア親和メモリ448を指定するように制御ユニット112によって具現化される。
メモリ割当方法600は続いてメモリリターン(memory return)段階678を進行する。メモリリターンプロセスでは、コア親和メモリ448をグローバルキャッシュマップ210に戻す(リターン)。例えば、アプリケーションプログラム440がそれ以上コア親和メモリ448を必要としないと判別する時、スラブクラス330は集合メモリ212に戻される。他の実施形態において、CPUコア142がそれ以上パーコアキャッシュマップ446を必要としないと判別される時、パーコアキャッシュマップ446はグローバルキャッシュマップ210に戻される。メモリリターン段階678は、上述されたようにコア親和メモリ448をリターンするか、又は割当しないように、ストレージユニット114とインタフェイスする制御ユニット112によって具現化される。
CPU使用の側面からは、スラブクラス330に対する各々のアクセスがスラブクラス330の全体にグローバル(global、全面的)ロック(lock、停止)を要求するので、グローバルキャッシュマップ210からスラブクラス330にアクセスするCPUコア142の多重インスタンスの使用は速度と性能を低下させることが判明した。しかし、パーコアキャッシュマップ446からのアプリケーションプログラム440に対するメモリ割当は、スラブクラス330のインスタンスに対する全面的ロックを防止することが分かる。
何故ならば、CPUコア142の各々のためのパーコアキャッシュマップ446は、グローバルキャッシュマップ210からCPUコア142の他のインスタンスに対するメモリ割当に影響を及ぼさないローカル(local、局所的)ロックのみを含むから、スラブクラス330のグローバルロックを防止できるからである。
本出願明細書に説明されたプロセスは、図1の制御ユニット112によって実行される非一時的コンピュータ読出し可能媒体(non−transitory computer readable medium)に格納された一連のインストラクションとして具現される。非一時的コンピュータ読出し可能媒体は図1のストレージユニット114を含み得る。非一時的コンピュータ読出し可能媒体はハードディスク、NVRAM(non−volatile random access memory)、SSD(solid state storage device)、CD(compact disk)、DVD(digital video disk)、又はUSB(universal serial bus)フラッシュメモリ装置のような不揮発性メモリを含み得る。非一時的コンピュータ読出し可能媒体はコンピューティングシステム100の部分として集積化されるか、又はコンピューティングシステム100の脱着可能である部分として設置される。
図7は本発明に係るコンピューティングシステム100の動作方法の例示的なフローチャートである。図7を参照すれば、コンピューティングシステム100の動作方法700は、集合メモリとCPUコアとの間にコア・メモリ親和性を判別する段階702、コア・メモリ親和性に基づいてCPUコアのコア親和メモリとして、集合メモリからメモリモジュールのメモリバンク及びメモリランクを指定する段階704、及びCPUコアを有するコア・アプリケーション親和性に基づいてアプリケーションプログラムにコア親和メモリからスラブクラスを割当てる段階706を含むことができる。
実施形態において、動作方法700は、図5及び図6に説明されたように、図1の制御ユニット112、ストレージユニット114などの、装置102の諸ユニットによって具現される。
結論として本発明に係る方法、プロセス、器具、装置、製品、及び/又はシステムは、直截、低廉、複雑でなく、多様性に富み、正確、敏感、且つ効率的であり、その上、即応でき、効率的、且つ経済的な製造、応用、及び活用のために公知の構成要素を適用することによって具現化できる。
本発明の実施形態のもう一つの重要な側面は、費用低減、システム簡単化、性能向上などの歴史的トレンドに対して、貴重な支援とサービスを提供できることである。
本発明の実施形態の上記及び他の重要な側面は、従って技術水準を少なくとも次のレベルに押し上げ得る。
以上、本発明を最良の実施形態に結合して記述して来たが、多くの選択肢、変更、及び変種があることを、上記の記述に照らすならば当業者は理解できるであろう。従って、別途の請求範囲に該当する全てのそのような選択肢、変更、及び変種を包含することが意図されている。本明細書乃至それに伴う図面に提示した全ての事柄は、説明的且つ日制限的意味に解釈されるべきである。
一方、上述された本発明の内容は、発明を実施するための具体的な実施形態に過ぎない。本発明は具体的であり実際に利用できる手段のみならず、将来の技術で活用できる、抽象的且つ概念的なアイディアである技術的思想を含む。
100 コンピューティングシステム
102 装置
112 制御ユニット
114 ストレージユニット
116 通信ユニット
118 ユーザインタフェイス
122 制御インタフェイス
124 ストレージインタフェイス
126 ソフトウェア
128 通信インタフェイス
130 ディスプレイインタフェイス
142 CPUコア
150 メモリモジュール
152 メモリチャンネル
154 メモリバンク
156 メモリランク
210 グローバルキャッシュマップ
212 集合メモリ
214 ヒュージページ
216 ページメモリアドレス
218 集合ページ
220、222 第2、第3集合ページ
330 スラブクラス
332 スラブチャンク
334 チャンクサイズ
440 アプリケーションプログラム
442 コア・アプリケーション親和性(affinity)
444 アプリケーションスレッド
446 パーコアキャッシュマップ
448 コア親和メモリ
450 コア・メモリ親和性
452 メモリ親和性スレッド
500 メモリ管理方法
550 メモリギャザ
552 ページアドレス
554 ページ組合せ
556 メモリギャザ
558 スラブ生成
560 親和性判別
562 メモリ親和化
564 コアマップ生成

Claims (20)

  1. メモリバンク及びメモリランクを有するメモリモジュールと、
    前記メモリモジュールに連結される制御ユニットと、を含み、
    前記制御ユニットは、集合メモリ(aggregated memory)及びCPU(central processing unit)コアの間でコア・メモリ親和性(affinity)を判別し、
    前記コア・メモリ親和性に基づいて前記CPUコアに対するコア親和(affiliated)メモリとして前記集合メモリから前記メモリバンク及び前記メモリランクを指定し、
    前記CPUコアを有するコア・アプリケーション親和性に基づいて前記コア親和メモリからアプリケーションプログラムにスラブクラス(slab class)を割当てる、ことを特徴とするコンピューティングシステム。
  2. 前記制御ユニットは、前記スラブクラスのスラブチャンク(slab chunk)を割当てるように具現され、
    前記スラブチャンクは、物理的に連続したメモリを含む、ことを特徴とする請求項1に記載のコンピューティングシステム。
  3. 前記制御ユニットは、前記集合メモリのグローバルキャッシュマップ(global cache map)を生成するように具現される、ことを特徴とする請求項1に記載のコンピューティングシステム。
  4. 前記制御ユニットは、前記コア親和メモリのパーコアキャッシュマップ(per−core cache map)を生成するように具現される、ことを特徴とする請求項1に記載のコンピューティングシステム。
  5. 前記制御ユニットは、
    前記メモリバンクの前記メモリランク内に前記集合メモリの物理的に連続部分のページを集め、
    前記スラブクラスのスラブチャンクを生成するために前記ページから前記集合メモリを割当てるように具現される、ことを特徴とする請求項1に記載のコンピューティングシステム。
  6. 前記制御ユニットは、メモリ親和性スレッド(memory affinity thread)に基づいて前記コア・メモリ親和性を判別するように具現される、ことを特徴とする請求項1に記載のコンピューティングシステム。
  7. 前記制御ユニットは、前記集合メモリを前記スラブクラスの複数のインスタンス(instances)に組織するように具現され、前記スラブクラスのサイズは同一である、ことを特徴とする請求項1に記載のコンピューティングシステム。
  8. 前記制御ユニットは、パーコアキャッシュマップを前記アプリケーションプログラムの必要度に基づいて前記スラブクラスの追加的なインスタンスを用いて拡張するように具現される、ことを特徴とする請求項1に記載のコンピューティングシステム。
  9. 前記制御ユニットは、物理的にページの隣接するインスタンスに基づいて前記集合メモリを生成するように具現される、ことを特徴とする請求項1に記載のコンピューティングシステム。
  10. 前記制御ユニットは、直接メモリアクセス(DMA)機能を有する前記集合メモリを生成するように具現される、ことを特徴とする請求項1に記載のコンピューティングシステム。
  11. コンピューティングシステムの動作方法において、
    集合メモリ及びCPU(central processing unit)コアの間でコア・メモリ親和性を判別する段階と、
    前記コア・メモリ親和性に基づいて前記CPUコアのコア親和メモリとして、前記集合メモリからメモリモジュールのメモリバンク及びメモリランクを指定する段階と、
    前記CPUコアを有するコア・アプリケーション親和性に基づいて前記コア親和メモリからアプリケーションプログラムにスラブクラスを割当てる段階と、を含むことを特徴とする方法。
  12. 前記スラブクラスを割当てる方法は、前記スラブクラスのスラブチャンク(slab chunk)を割当てる方法を含み、
    前記スラブチャンクは、物理的に連続したメモリを含む、ことを特徴とする請求項11に記載の方法。
  13. 前記集合メモリのグローバルキャッシュマップ(global cache map)を生成する段階をさらに含む、ことを特徴とする請求項11に記載の方法。
  14. 前記コア親和メモリのパーコアキャッシュマップ(per−core cache map)を生成する段階をさらに含む、ことを特徴とする請求項11に記載の方法。
  15. 前記メモリバンクの前記メモリランク内の前記集合メモリの物理的に連続した部分からページを生成する段階と、
    前記スラブクラスのスラブチャンクを生成するように前記ページから前記集合メモリを割当てる段階と、をさらに含む、ことを特徴とする請求項11に記載の方法。
  16. 前記コア・メモリ親和性を判別する段階は、メモリ親和性スレッド(memory affinity thread)に基づいて前記コア・メモリ親和性を判別する段階を含む、ことを特徴とする請求項11に記載の方法。
  17. 前記集合メモリを前記スラブクラスの複数のインスタンス(instances)に組織する段階をさらに含み、前記スラブクラスのサイズは同一である、ことを特徴とする請求項11に記載の方法。
  18. パーコアキャッシュマップを前記アプリケーションプログラムの必要度に基づいて前記スラブクラスの追加的なインスタンスを用いて拡張する段階をさらに含む、ことを特徴とする請求項11に記載の方法。
  19. 物理的にページの隣接するインスタンスに基づいて前記集合メモリを生成する段階をさらに含む、ことを特徴とする請求項11に記載の方法。
  20. 直接メモリアクセス(DMA)機能を有する前記集合メモリを生成する段階をさらに含む、ことを特徴とする請求項11に記載の方法。
JP2016200590A 2015-10-14 2016-10-12 コンピューティングシステムとその動作方法 Pending JP2017076396A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562241544P 2015-10-14 2015-10-14
US62/241,544 2015-10-14
US15/062,855 2016-03-07
US15/062,855 US20170109080A1 (en) 2015-10-14 2016-03-07 Computing system with memory management mechanism and method of operation thereof

Publications (1)

Publication Number Publication Date
JP2017076396A true JP2017076396A (ja) 2017-04-20

Family

ID=58550294

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016200590A Pending JP2017076396A (ja) 2015-10-14 2016-10-12 コンピューティングシステムとその動作方法

Country Status (4)

Country Link
JP (1) JP2017076396A (ja)
KR (1) KR20170043996A (ja)
CN (1) CN106598724B (ja)
TW (1) TWI710899B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017146895A (ja) * 2016-02-19 2017-08-24 イーソル株式会社 オペレーティングシステム、プログラミングシステム及びメモリ割り当て方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108664325B (zh) * 2017-03-30 2019-06-28 视联动力信息技术股份有限公司 处理数据的方法和电子设备
CN107729151A (zh) * 2017-10-19 2018-02-23 济南浪潮高新科技投资发展有限公司 一种集群管理fpga资源的方法
CN110134514B (zh) * 2019-04-18 2021-04-13 华中科技大学 基于异构内存的可扩展内存对象存储系统
KR102547825B1 (ko) * 2021-11-10 2023-06-27 삼성전자주식회사 호스트 메모리 버퍼를 사용하는 메모리 시스템 및 그것의 동작 방법

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6009478A (en) * 1997-11-04 1999-12-28 Adaptec, Inc. File array communications interface for communicating between a host computer and an adapter
US6085296A (en) * 1997-11-12 2000-07-04 Digital Equipment Corporation Sharing memory pages and page tables among computer processes
JP3918145B2 (ja) * 2001-05-21 2007-05-23 株式会社ルネサステクノロジ メモリコントローラ
US7873776B2 (en) * 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
US7577813B2 (en) * 2005-10-11 2009-08-18 Dell Products L.P. System and method for enumerating multi-level processor-memory affinities for non-uniform memory access systems
CN101196816B (zh) * 2007-12-29 2010-12-08 中国科学院计算技术研究所 一种操作系统及操作系统管理方法
US9235531B2 (en) * 2010-03-04 2016-01-12 Microsoft Technology Licensing, Llc Multi-level buffer pool extensions
US8510749B2 (en) * 2010-05-27 2013-08-13 International Business Machines Corporation Framework for scheduling multicore processors
KR101267347B1 (ko) * 2011-07-29 2013-05-27 현대제철 주식회사 몰드 내 마찰력을 이용한 크랙 감시장치 및 그 방법
JP2013127703A (ja) * 2011-12-19 2013-06-27 Renesas Electronics Corp ロードモジュール生成方法及びロードモジュール生成プログラム
US9003223B2 (en) * 2012-09-27 2015-04-07 International Business Machines Corporation Physical memory fault mitigation in a computing environment
US9619251B2 (en) * 2013-05-30 2017-04-11 Intel Corporation Techniques for dynamic system performance tuning
US9070423B2 (en) * 2013-06-11 2015-06-30 Invensas Corporation Single package dual channel memory with co-support
CN103345451B (zh) * 2013-07-18 2015-05-13 四川九成信息技术有限公司 一种在多核处理器中缓冲数据的方法
US20150046259A1 (en) * 2013-08-09 2015-02-12 Yp Intellectual Property Llc Systems and methods for personalized orchestration of business information
CN104199699B (zh) * 2014-08-29 2017-06-16 北京经纬恒润科技有限公司 程序加载方法、芯片启动方法、装置及主控设备
CN104375899B (zh) * 2014-11-21 2016-03-30 北京应用物理与计算数学研究所 高性能计算机numa感知的线程和内存资源优化方法与系统
CN104317734A (zh) * 2014-11-28 2015-01-28 迈普通信技术股份有限公司 一种适用于slab的内存分配方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017146895A (ja) * 2016-02-19 2017-08-24 イーソル株式会社 オペレーティングシステム、プログラミングシステム及びメモリ割り当て方法

Also Published As

Publication number Publication date
CN106598724B (zh) 2022-01-14
TW201717016A (zh) 2017-05-16
KR20170043996A (ko) 2017-04-24
TWI710899B (zh) 2020-11-21
CN106598724A (zh) 2017-04-26

Similar Documents

Publication Publication Date Title
EP3608769B1 (en) Apparatus and method for providing quality of service over a virtual interface for solid-state storage
JP2017076396A (ja) コンピューティングシステムとその動作方法
US10324832B2 (en) Address based multi-stream storage device access
US20230315290A1 (en) Namespaces allocation in non-volatile memory devices
JP5932043B2 (ja) 不揮発性記憶装置セットの揮発メモリ表現
US9766818B2 (en) Electronic system with learning mechanism and method of operation thereof
US11656775B2 (en) Virtualizing isolation areas of solid-state storage media
US9727239B2 (en) Electronic system with partitioning mechanism and method of operation thereof
EP3729251A1 (en) Virtualized ocssds spanning physical ocssd channels
JP6383861B2 (ja) ストレージ管理計算機
US10943183B2 (en) Electronics device performing software training on memory channel and memory channel training method thereof
KR101779994B1 (ko) 멀티클래스 메모리 시스템내 메모리 할당을 위한 시스템 및 방법
JP6412244B2 (ja) 負荷に基づく動的統合
US20170031631A1 (en) Storage device and method of operating the same
JP4801761B2 (ja) データベース管理方法およびシステム並びにその処理プログラム
WO2024078429A1 (zh) 内存管理方法、装置、计算机设备及存储介质
US20170212835A1 (en) Computing system with memory management mechanism and method of operation thereof
US11656778B2 (en) Selection of block size for namespace management in non-volatile memory devices
US20170109080A1 (en) Computing system with memory management mechanism and method of operation thereof
US20150220442A1 (en) Prioritizing shared memory based on quality of service
WO2018113030A1 (en) Technology to implement bifurcated non-volatile memory express driver
CN114911723A (zh) 存储器控制器和存储器控制方法
US20190354623A1 (en) Query optimizer injection for dynamically provisioned database containers
EP4332779A1 (en) Data processing apparatus and method for zswap acceleration
US20220391091A1 (en) Management of Namespace Block Boundary Alignment in Non-Volatile Memory Devices