(57)【要約】【課題】性能を向上させ、簡単に具現可能であるコンピューティングシステムのメモリ管理方法を提供する。【解決手段】本発明に係るコンピューティングシステムは、メモリバンク及びメモリランクを有するメモリモジュール、及び前記メモリモジュールに連結される制御ユニットを含み、前記制御ユニットは、集合メモリ及びＣＰＵコアの間でコア・メモリ親和性を判別し、前記コア・メモリ親和性に基づいて前記ＣＰＵコアに対するコア親和メモリとして前記集合メモリから前記メモリバンク及び前記メモリランクを指定し、そして前記ＣＰＵコアを有するコア・アプリケーション親和性に基づいて前記コア親和メモリからアプリケーションプログラムにスラブクラス（ｓｌａｂ  ｃｌａｓｓ）を割当てることができる。【選択図】図１
2017076396.tif 000002
【特許請求の範囲】
【請求項１】
メモリバンク及びメモリランクを有するメモリモジュールと、
前記メモリモジュールに連結される制御ユニットと、を含み、
前記制御ユニットは、集合メモリ（ａｇｇｒｅｇａｔｅｄ  ｍｅｍｏｒｙ）及びＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）コアの間でコア・メモリ親和性（ａｆｆｉｎｉｔｙ）を判別し、
前記コア・メモリ親和性に基づいて前記ＣＰＵコアに対するコア親和（ａｆｆｉｌｉａｔｅｄ）メモリとして前記集合メモリから前記メモリバンク及び前記メモリランクを指定し、
前記ＣＰＵコアを有するコア・アプリケーション親和性に基づいて前記コア親和メモリからアプリケーションプログラムにスラブクラス（ｓｌａｂ  ｃｌａｓｓ）を割当てる、ことを特徴とするコンピューティングシステム。
【請求項２】
前記制御ユニットは、前記スラブクラスのスラブチャンク（ｓｌａｂ  ｃｈｕｎｋ）を割当てるように具現され、
前記スラブチャンクは、物理的に連続したメモリを含む、ことを特徴とする請求項１に記載のコンピューティングシステム。
【請求項３】
前記制御ユニットは、前記集合メモリのグローバルキャッシュマップ（ｇｌｏｂａｌ  ｃａｃｈｅ  ｍａｐ）を生成するように具現される、ことを特徴とする請求項１に記載のコンピューティングシステム。
【請求項４】
前記制御ユニットは、前記コア親和メモリのパーコアキャッシュマップ（ｐｅｒ−ｃｏｒｅ  ｃａｃｈｅ  ｍａｐ）を生成するように具現される、ことを特徴とする請求項１に記載のコンピューティングシステム。
【請求項５】
前記制御ユニットは、
前記メモリバンクの前記メモリランク内に前記集合メモリの物理的に連続部分のページを集め、
前記スラブクラスのスラブチャンクを生成するために前記ページから前記集合メモリを割当てるように具現される、ことを特徴とする請求項１に記載のコンピューティングシステム。
【請求項６】
前記制御ユニットは、メモリ親和性スレッド（ｍｅｍｏｒｙ  ａｆｆｉｎｉｔｙ  ｔｈｒｅａｄ）に基づいて前記コア・メモリ親和性を判別するように具現される、ことを特徴とする請求項１に記載のコンピューティングシステム。
【請求項７】
前記制御ユニットは、前記集合メモリを前記スラブクラスの複数のインスタンス（ｉｎｓｔａｎｃｅｓ）に組織するように具現され、前記スラブクラスのサイズは同一である、ことを特徴とする請求項１に記載のコンピューティングシステム。
【請求項８】
前記制御ユニットは、パーコアキャッシュマップを前記アプリケーションプログラムの必要度に基づいて前記スラブクラスの追加的なインスタンスを用いて拡張するように具現される、ことを特徴とする請求項１に記載のコンピューティングシステム。
【請求項９】
前記制御ユニットは、物理的にページの隣接するインスタンスに基づいて前記集合メモリを生成するように具現される、ことを特徴とする請求項１に記載のコンピューティングシステム。
【請求項１０】
前記制御ユニットは、直接メモリアクセス（ＤＭＡ）機能を有する前記集合メモリを生成するように具現される、ことを特徴とする請求項１に記載のコンピューティングシステム。
【請求項１１】
コンピューティングシステムの動作方法において、
集合メモリ及びＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）コアの間でコア・メモリ親和性を判別する段階と、
前記コア・メモリ親和性に基づいて前記ＣＰＵコアのコア親和メモリとして、前記集合メモリからメモリモジュールのメモリバンク及びメモリランクを指定する段階と、
前記ＣＰＵコアを有するコア・アプリケーション親和性に基づいて前記コア親和メモリからアプリケーションプログラムにスラブクラスを割当てる段階と、を含むことを特徴とする方法。
【請求項１２】
前記スラブクラスを割当てる方法は、前記スラブクラスのスラブチャンク（ｓｌａｂ  ｃｈｕｎｋ）を割当てる方法を含み、
前記スラブチャンクは、物理的に連続したメモリを含む、ことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記集合メモリのグローバルキャッシュマップ（ｇｌｏｂａｌ  ｃａｃｈｅ  ｍａｐ）を生成する段階をさらに含む、ことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記コア親和メモリのパーコアキャッシュマップ（ｐｅｒ−ｃｏｒｅ  ｃａｃｈｅ  ｍａｐ）を生成する段階をさらに含む、ことを特徴とする請求項１１に記載の方法。
【請求項１５】
前記メモリバンクの前記メモリランク内の前記集合メモリの物理的に連続した部分からページを生成する段階と、
前記スラブクラスのスラブチャンクを生成するように前記ページから前記集合メモリを割当てる段階と、をさらに含む、ことを特徴とする請求項１１に記載の方法。
【請求項１６】
前記コア・メモリ親和性を判別する段階は、メモリ親和性スレッド（ｍｅｍｏｒｙ  ａｆｆｉｎｉｔｙ  ｔｈｒｅａｄ）に基づいて前記コア・メモリ親和性を判別する段階を含む、ことを特徴とする請求項１１に記載の方法。
【請求項１７】
前記集合メモリを前記スラブクラスの複数のインスタンス（ｉｎｓｔａｎｃｅｓ）に組織する段階をさらに含み、前記スラブクラスのサイズは同一である、ことを特徴とする請求項１１に記載の方法。
【請求項１８】
パーコアキャッシュマップを前記アプリケーションプログラムの必要度に基づいて前記スラブクラスの追加的なインスタンスを用いて拡張する段階をさらに含む、ことを特徴とする請求項１１に記載の方法。
【請求項１９】
物理的にページの隣接するインスタンスに基づいて前記集合メモリを生成する段階をさらに含む、ことを特徴とする請求項１１に記載の方法。
【請求項２０】
直接メモリアクセス（ＤＭＡ）機能を有する前記集合メモリを生成する段階をさらに含む、ことを特徴とする請求項１１に記載の方法。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピューティングシステムとその動作方法に係り、特にそのメモリ管理に関する。
【背景技術】
【０００２】
現代の消費者向け及び産業用電子製品、特にキーバリュー（ｋｅｙ  ｖａｌｕｅ）装置のような装置は、ビックデータ及び実時間ウェブアプリケーションの分析を含め、現代生活を支援する益々高度になる機能を提供している。既存技術における研究開発は、数多くの互いに異なる方向に進められている。
【０００３】
ユーザが情報処理技術の成長に伴い、益々強力な能力を享受するに連れて、新旧の情報処理パラダイムは共に、この新しいユーザ能力空間を活用し始めた。大量の情報処理が枢要となる（ｑｕｉｎｔｅｓｓｅｎｔｉａｌ）電子技術ベースの成長分野の１つは、ビックデータ分析、例えば、  “ＮｏｎＳＱＬ”（ＮｏＳＱＬ、ｎｏｎ−Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）ベースのシステムに関連するビックデータ分析である。しかし、効率的なメモリ管理を伴う高速ＩＯＰＳ（ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｐｅｒ  ｓｅｃｏｎｄ）スループットには依然として、なかなか当業者の手が届かない（ｅｌｕｄｅ）。
【０００４】
従って、メモリ割当のためのメモリ管理メカニズムを有するコンピューティングシステムに対する要求は依然解消されていない。絶え間なく増加する商業的な競争圧力に鑑みると、増大する消費者の期待と市場における意味ある製品差別化の機会の減少を合わせ考慮すると、このような問題に対する回答を発見することが益々重要になっている。その上に、費用を削減し、製品の効率性と性能を向上し、競争圧力を凌ぐという要求が重なるので、このような問題に対する回答の発見は緊急を要する。
【０００５】
このような問題に対する解決策は長い間追求されて来たが、これまでの研求は何らの解決策を教示も提案もしていない。従って、このような問題に対する解決策には依然として、なかなか当業者の手が届かない（ｅｌｕｄｅ）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第８，８３２、４１１号公報
【特許文献２】米国特許第７，０７６，６３２号公報
【特許文献３】米国特許第７，００３，５９７号公報
【特許文献４】米国特許公開第２０１４／０２８１３３３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は性能を向上させ、簡単に具現可能であるコンピューティングシステムのメモリ管理方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の実施形態によるコンピューティングシステムは、メモリバンク及びメモリランクを有するメモリモジュール、及び前記メモリモジュールに連結される制御ユニットを含み、前記制御ユニットは、
（ａ）集合メモリ（ａｇｇｒｅｇａｔｅｄ  ｍｅｍｏｒｙ）及びＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）コアの間でコア・メモリ親和性（ａｆｆｉｎｉｔｙ）を判別し、
（ｂ）前記コア・メモリ親和性（ａｆｆｉｎｉｔｙ）に基づいて前記ＣＰＵコアに対するコア親和（ａｆｆｉｌｉａｔｅｄ）メモリとして、前記集合メモリから前記メモリバンク及び前記メモリランクを指定し、並びに、
（ｃ）前記ＣＰＵコアを有するコア・アプリケーション親和性に基づいて前記コア親和メモリからアプリケーションプログラムにスラブクラス（ｓｌａｂ  ｃｌａｓｓ）を割当てる、ように構成される。
【０００９】
本発明の実施形態によるコンピューティングシステムの動作方法は、
（ａ）集合メモリ及びＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）コアの間でコア・メモリ親和性を判別する段階、
（ｂ）前記コア・メモリ親和性に基づいて前記ＣＰＵコアのコア親和メモリとして、前記集合メモリからメモリモジュールのメモリバンク及びメモリランクを指定する段階、並びに、
（ｃ）前記ＣＰＵコアを有するコア・アプリケーション親和性に基づいて前記コア親和メモリからアプリケーションプログラムにスラブクラスを割当てる段階を含む。
【発明の効果】
【００１０】
本発明の実施形態によるコンピューティングシステムのメモリ管理方法は、ヒュージページをメモリバンクの中の１つのメモリランク内にメモリページの物理的に連続したインスタンスから集めることによって、メモリバンクの各々を並列に動作させることができ、これに従う性能向上を期待することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明に係るメモリ管理方法を有するコンピューティングシステムを示す図面である。
【図２】本発明に係るコンピューティングシステムにおけるグローバルキャッシュマップの実施形態を示す図面である。
【図３】本発明に係るコンピューティングシステムにおけるグローバルキャッシュマップの追加的な実施形態を示す図面である。
【図４】本発明に係るコンピューティングシステムにおけるメモリ割当の実施形態を示す図面である。
【図５】本発明に係るコンピューティングシステムにおけるメモリ管理方法の例示的なフローチャートである。
【図６】本発明に係るコンピューティングシステムにおけるメモリ割当方法の例示的なフローチャートである。
【図７】本発明に係るコンピューティングシステムの動作方法の例示的なフローチャートである。
【発明を実施するための形態】
【００１２】
以下の実施形態は、本発明を使用する当業者に十分に詳細に説明される。その他の実施形態は本明細書を基づいて明白になり、システム、プロセス、又は機械的な変化は本発明の実施形態の範囲を逸脱せずに、具現できることが理解されよう。
【００１３】
以下の説明で、多数の特定細部事項は本発明の完全な理解を提供するために与えられる。しかし、本発明がこのような特定細部事項無しでも実施できるが理解されるべきである。本発明の実施形態を曖昧にすることを避けるために、幾つかの広く公知された回路、システム構成、及びプロセス段階は詳細に記載しない。
【００１４】
システムの実施形態を示す図面は、正確な縮尺ではなく、概略的に図示している。特に、一部の寸法は図面上の表現を明確にするため、誇張されて図示される場合がある。同様に、説明を簡単にするため図面上の視点は一般に類似な方向を示すが、図面表現は大部分の場合、任意的である。一般的に、本発明は任意の方向に動作できる。実施形態は、説明を簡単にするため第１実施形態、第２実施形態等、一連番号を付してあるが、他の意味はなく、また本発明の実施形態を制限する意図はない。
【００１５】
図１は本発明に係るメモリ管理方法を有するコンピューティングシステムを示す図面である。
【００１６】
図１を参照すれば、コンピューティングシステム１００は装置１０２を含む。例えば、装置１０２は、サーバ、スマートフォン、ラップトップコンピュータ、又はデスクトップコンピュータのようなコンピューティング装置である。特定の（ｓｐｅｃｉｆｉｃ）例として、装置１０２は、グリッド−コンピューティングリソース、仮想化コンピュータリソース、クラウドコンピューティングリソース、ピアツーピア分散コンピューティング装置、又はそれらの組合せである。
【００１７】
装置１０２は、キーバリューストア（ｋｅｙ−ｖａｌｕｅ  ｓｔｏｒｅ）又はＮｏＳＱＬデータベースのようなデータベースを支援するか、又は具現でき、そしてビックデータ及び実時間ウェブアプリケーション、又はそれらの組合せを実行できる装置である。例えば、装置１０２はフラッシュメモリのような不揮発性データストレージを有するキーバリューストアの具現を含む。
【００１８】
装置１０２は、制御ユニット１１２、ストレージユニット１１４、通信ユニット１１６、及びユーザインタフェイス１１８などのハードウェア構成要素のようなユニットを含む。装置１０２のユニットは他のユニットから独立的、個別的に、又は従属的に動作できる。又は装置１０２のユニットは複数の他のユニットと協同できる。
【００１９】
制御ユニット１１２は制御インタフェイス１２２を含む。制御ユニット１１２は、ソフトウェア１２６を実行してコンピューティングシステム１００の知能を提供する。
【００２０】
制御ユニット１１２はハードウェア回路の複数の異なる方式により具現できる。例えば、制御ユニット１１２はプロセッサ、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、組込み型プロセッサ、マイクロプロセッサ、ハードウェア制御ロジック、ハードウェアＦＳＭ（ｆｉｎｉｔｅ  ｓｔａｔｅ  ｍａｃｈｉｎｅ）、ＤＳＰ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）、ＰＬＤ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）、又はそれらの組合せである。制御ユニット１１２は１つ以上のＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）コア１４２を有するＣＰＵとして具現される。ここで、ＣＰＵコアはＣＰＵの基本、又は根本的な計算ユニットである。制御ユニット１１２は、メモリ割当動作又は情報フローのために、メモリ制御器、メモリチップ制御器、又はメモリ制御器ユニットなどの専用回路を含む。
【００２１】
制御インタフェイス１２２は制御ユニット１１２と装置１０２内の他のユニットとの間の通信のために使用される。また、制御インタフェイス１２２は装置１０２の外部との通信に使用される。
【００２２】
制御インタフェイス１２２は他のユニット又は外部のソース（）から情報を受信することができるか、又は他のユニット又は外部のデスティネーション（送信先）に情報を伝送する。これら、外部のソース及び外部の送信先は、装置１０２の外部にあるソース及び送信先を指す。
【００２３】
制御インタフェイス１２２は多様な方式のハードウェア回路により具現でき、何れの内部ユニット又は外部ユニットが制御インタフェイス１２２にインタフェイスするかによって互いに異なる具現を含む。例えば、制御インタフェイス１２２は、圧力センサ、慣性センサ（ｉｎｅｒｔｉａｌ  ｓｅｎｓｏｒ）、ＭＥＭＳ（ｍｉｃｒｏｅｌｅｃｔｒｏｍｅｃｈｎａｉｃａｌ  ｓｙｓｔｅｍ）、光学回路、導波路、無線回路、有線回路、又はそれらの組合せで具現される。
【００２４】
ストレージユニット１１４はソフトウェア１２６を格納する。また、ストレージユニット１１４は受信画像を示すデータ、従前の画像を示すデータ、音声ファイルなどの関連データ情報を格納する。
【００２５】
ストレージユニット１１４は揮発性メモリ、不揮発性メモリ、内部メモリ、外部メモリ、又はそれらの組合せを有するハードウェア回路により具現される。例えば、ストレージユニット１１４はＮＶＲＡＭ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））、フラッシュメモリ、ディスクストレージ、ＲｅＲＡＭ（ｒｅｓｉｓｔｉｖｅ  ＲＡＭ）、ＰＲＡＭ（ｐｈａｓｅ  ｃｈａｎｇｅ  ＲＡＭ）などの不揮発性ストレージ、又は、ＳＲＡＭ（ｓｔａｔｉｃ  ＲＡＭ）などの揮発性ストレージである。特定の例として、ストレージユニット１１４は、メモリモジュール１５０の形態として、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＤＲＡＭ（ｄｙｎａｍｉｃ  ＲＡＭ）、ＳＤＲＡＭ（ｓｙｎｃｈｒｏｎｏｕｓ  ｄｙｎａｍｉｃ  ＲＡＭ）、又はそれらの組合せを含む。メモリモジュール１５０は、ＤＩＭＭ（ｄｕａｌ  ｉｎ−ｌｉｎｅ  ｍｅｍｏｒｙ  ｍｏｄｕｌｅｓ）などのハードウェアモジュールである。メモリモジュール１５０はメモリチャンネル１５２、メモリバンク１５４、及びメモリランク１５６に区分される。ストレージユニット１１４のメモリモジュール１５０は物理的にアドレス可能であり、機能的にＤＭＡ（直接メモリアクセス、ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）を含み得る。
【００２６】
ストレージユニット１１４はストレージインタフェイス１２４を含む。ストレージインタフェイス１２４は装置１０２の他の複数のユニットの間の通信に使用される。また、ストレージインタフェイス１２４は装置１０２の外部との通信のために使用される。
【００２７】
ストレージインタフェイス１２４は、他のユニット又は外部ソースから情報を受信でき、若しくは、他のユニット又は外部送信先に情報を送信できる。ここで、外部ソース及び外部送信先は装置１０２の外部にあるソース及び送信先を指す。
【００２８】
ストレージインタフェイス１２４は何れのユニット又は外部ユニットがストレージユニット１１４とインタフェイスされているかによって互いに異なる具現を含む。ストレージインタフェイス１２４は制御インタフェイス１２２と類似の技術又は方法で具現できる。
【００２９】
通信ユニット１１６は装置１０２との外部通信を活性化できる。例えば、通信ユニット１１６は、周辺装置又はデスクトップコンピュータなどの付属装置との通信を装置１０２に対して可能にする。通信ユニット１１６はマイクロエレクトロニクス、フィルタ、モジュレータ、デモジュレータ、検出器、デコーダ、基底帯域モデム、又はアンテナなどの能動構成要素及び受動構成要素を含み得る。
【００３０】
通信ユニット１１６は通信インタフェイス１２８を含む。通信インタフェイス１２８は通信ユニット１１６と装置１０２内の他のユニットとの間の通信に使用される。通信インタフェイス１２８は他のユニットから情報を受信し、又は他のユニットに情報を伝送できる。
【００３１】
通信インタフェイス１２８は、何れのユニットが通信ユニット１１６とインタフェイスするか否かによって互いに異なる形に具現化される。通信インタフェイス１２８は制御インタフェイス１２２の具現化の場合と類似した技術又は方法で具現される。
【００３２】
ユーザインタフェイス１１８はユーザに、装置１０２とのインタフェイス及び相互作用を可能にする。ユーザインタフェイス１１８は入力装置及び出力装置を含む。例えば、ユーザインタフェイス１１８の入力装置は、データ及び通信入力を提供するために、キーパッド、タッチパッド、ソフト−キー、キーボード、マイクロフォン、遠隔信号を受信する赤外線センサ、又はそれらの組合せを含む。
【００３３】
ユーザインタフェイス１１８はディスプレイインタフェイス１３０を含む。ディスプレイインタフェイス１３０はディスプレイ、プロジェクタ、ビデオスクリーン、スピーカ、又はそれらの組合せを含み得る。
【００３４】
制御ユニット１１２はコンピューティングシステム１００によって生成された情報をディスプレイするために、ユーザインタフェイス１１８を動作させる。また、制御ユニット１１２はコンピューティングシステム１００の他の機能のためのソフトウェア１２６を実行できる。更に、制御ユニット１１２は、通信ユニット１１６を介した通信経路との相互作用のためのソフトウェア１２６を実行できる。
【００３５】
図２は本発明に係るコンピューティングシステム１００におけるグローバルキャッシュマップの実施形態を示す図面である。図２を参照すれば、グローバルキャッシュマップ２１０はダイナミックなメモリ割当（ｄｙｎａｍｉｃ＿ｍｅｍｏｒｙ＿ａｌｌｏｃａｔｉｏｎ）のためのメモリプール（ｍｅｍｏｒｙ  ｐｏｏｌ）である。例えば、グローバルキャッシュマップ２１０は（図４を参照）集合メモリ（ａｇｇｒｅｇａｔｅｄ＿ｍｅｍｏｒｙ）２１２のマップである。集合メモリ２１２はコンピューティングシステム１００のＯＳ（ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ、動作システム）によって割当られたメモリである。例えば、集合メモリ２１２は、ＯＳから予約された直接アクセスメモリの全体量である。集合メモリ２１２はメモリページとして区分される。メモリページは最も小さい、即ち基本的な量のメモリである。
【００３６】
グローバルキャッシュマップ２１０は、１つ以上の“ヒュージページ”（ｈｕｇｅ  ｐａｇｅｓ）２１４として集合メモリ２１２をマッピングするように組織化される、即ち、整備される。ヒュージページ２１４は、メモリページの物理的に隣接したインスタンスから生成された物理的に連続したメモリのシングルセクションである。ヒュージページ２１４の生成は以下で説明される。ヒュージページ２１４の各々は、ページメモリアドレス２１６に基づいてグローバルキャッシュマップ２１０上でインデックスされる。
例えば、ヒュージページ２１４の各々のためのページメモリアドレス２１６は論理アドレスとしてインデックスされ、該論理アドレスは、ヒュージページ２１４の第１インスタンスのための［０、Ｎ）から、順次、ヒュージページ２１４の第４インスタンスのための［３Ｎ、４Ｎ）に至る物理的に連続したメモリアドレスの範囲を表示する。
【００３７】
更に、グローバルキャッシュマップ２１０はヒュージページ２１４を集合ページ２１８として組織化できる。集合ページ２１８は物理的に連続したメモリの１つ以上のセグメントのグルーピング又は集合である。例えば、集合ページ２１８はヒュージページ２１４の物理的に隣接するインスタンスのグルーピングである。集合ページ２１８は集合ページ２１８内のヒュージページ２１４の個別的なインスタンスに基づいてグローバルキャッシュマップ２１０上でアドレスできる。
例えば、集合ページ２１８が［０、Ｎ）から［３Ｎ、４Ｎ）までの範囲のページメモリアドレス２１６を有するヒュージページ２１４を含む時、集合ページ２１８のためのページメモリアドレス２１６は［０、４Ｎ）である。説明の便宜上、集合ページ２１８がヒュージページ２１４の４つのインスタンスを含む場合を示したが、集合ページ２１８に含まれたヒュージページ２１４の個数は、４つと異なる場合があると理解されるべきである。
【００３８】
グローバルキャッシュマップ２１０は集合ページ２１８の複数のインスタンスを含む。例えば、集合ページ２１８の各インスタンスは、図１のメモリモジュール１５０の内部において、ヒュージページ２１４の物理的に連続したインスタンスの最大個数を示す。
例えば、図２に示したように、物理的に連続したヒュージページ２１４の隣接するインスタンスの最大個数がヒュージページ２１４の連続した４個である時、集合ページ２１８の最大個数はヒュージページ２１４の４つのインスタンスである。
【００３９】
説明の便宜上、グローバルキャッシュマップ２１０には集合ページ２１８の追加インスタンスが示される。ここで、追加されたインスタンスは第２集合ページ２２０及び第３集合ページ２２２であるが、グローバルキャッシュマップ２１０は、上記の３個と異なる個数の集合ページ２１８を含み得ると理解されるべきである。
ここでは、各々、［１００Ｎ、１０１Ｎ）及び［２００Ｎ、２０１Ｎ）の範囲のページメモリアドレス２１６を有する第２集合ページ２２０及び第３集合ページ２２２には、ヒュージページ２１４の連関されたインスタンスが示されていないが、第２集合ページ２２０及び第３集合ページ２２２は各々、１つ以上のヒュージページ２１４を含み得ると理解されるべきである。
集合ページ２１８はグローバルキャッシュマップ２１０における全体メモリを表示できる。
【００４０】
図３は本発明に係るコンピューティングシステムにおけるグローバルキャッシュマップの追加的な実施形態を示す図面である。図３を参照すれば、グローバルキャッシュマップ２１０の内部の集合メモリ２１２（図２参照）はスラブクラス（ｓｌａｂ＿ｃｌａｓｓ）３３０に分割して組織化される。スラブクラス３３０はメモリセグメントのサイズの分類である。グローバルキャッシュマップ２１０はスラブクラス３３０の複数のインスタンスを含む。
【００４１】
グローバルキャッシュマップ２１０はスラブクラス３３０の複数のインスタンスを同時に維持できる。スラブクラス３３０は静的又は動的なメモリ割当を含み得る。例えば、メモリの利用可能な最大容量、例えば、分配（ｄｉｓｔｒｉｂｕｔｉｏｎ）のために利用可能なメモリモジュール１５０（図１参照）のメモリの全体容量は、スラブクラス３３０の各々に先着順（ｆｉｒｓｔ  ｃｏｍｅ  ｆｉｒｓｔ  ｓｅｒｖｅ  ｂａｓｉｓ）に割当てられる。
続いて、スラブクラス３３０の互いに異なるインスタンスに対して利用可能であるメモリの分配に基づいて、スラブクラス３３０のメモリ割当は互いに類似であるか、又は互いに異なる。特定の例で、スラブクラス３３０の与えられたインスタンスのサイズは、メモリページの追加割当、又は割当キャンセル（ｄｅ−ａｌｌｏｃａｔｉｏｎ）、若しくはヒュージページ２１４のサブ分割によって増加、又は減少される。
【００４２】
他の実施形態において、スラブクラス３３０のサイズはスラブクラス３３０の互いに異なるインスタンスの中で同一である。さらに詳細には、スラブクラス３３０の各々でメモリ容量は類似であるか、又は等価である。例えば、スラブクラス３３０は各々２メガバイト又は１６メガバイトで具現されるが、スラブクラス３３０のサイズが互いに異なる値を取り得ると理解されるべきである。
【００４３】
スラブクラス３３０は複数のスラブチャンク（ｓｌａｂ  ｃｈｕｎｋ）３３２を含む。スラブチャンク３３２は物理的に連続したメモリのセクションである。一般的に、任意のスラブクラス３３０においてスラブチャンク３３２のチャンクサイズ３３４は固定されたサイズであるが、スラブクラス３３０の互いに異なるインスタンスの中でスラブチャンク３３２のサイズは互いに異なり得る。例えば、図３に示したように、同一又は類似のメモリ割当を有するスラブクラス３３０は互いに異なるサイズのスラブチャンク３３２を有し得る。特定の例で、スラブクラス３３０の各々には１０２０バイトのメモリが割当てられる。
続いて、スラブクラス３３０の１つはスラブチャンク３３２の複数のインスタンスを含み、ここでは、各スラブチャンク３３２は９６バイトのチャンクサイズ３３４を有する。一方、スラブクラス３３０のその他の１つはスラブチャンク３３２の単一のインスタンスを含み、ここでは、スラブチャンクのチャンクサイズ３３４は１０２４バイトである。スラブチャンク３３２のチャンクサイズ３３４はデフォルトのサイズに事前に決定されるか，又は設定できる。スラブチャンク３３２の各々内部ではメモリが物理的に連続する。しかし、スラブチャンク３３２の各々間ではメモリが非連続であり得る。スラブチャンク３３２は、以下に説明するようにヒュージページ２１４に対するメモリ割当から生成する。
【００４４】
図４は本発明に係るコンピューティングシステム１００におけるメモリ割当の実施形態を示す図面である。図４を参照すれば、ＣＰＵコア１４２、集合メモリ２１２、及びアプリケーションプログラム４４０の間の関係が図示される。
【００４５】
アプリケーションプログラム４４０はコンピューティングシステム１００で実行されるソフトウェアプログラムである。例えば、アプリケーションプログラム４４０はビックデータ又は実時間ウェブアプリケーションを分析するためのアプリケーションである。アプリケーションプログラム４４０はＣＰＵコア１４２の中の１つのＣＰＵコアと、コア・アプリケーション親和性４４２を有するものとする。
コア・アプリケーション親和性（ａｆｆｉｎｉｔｙ）４４２とは、ＣＰＵコア１４２の１つと、アプリケーションプログラム、例えばアプリケーション４４０との結合である。
例えば、アプリケーションプログラム４４０の結合の結果、ＣＰＵコア１４２の１つにアプリケーションプログラム４４０を指定すると、アプリケーションプログラム４４０がＣＰＵコア１４２の指定されたインスタンスにおいて排他的に実行されるようにできる。
【００４６】
コア・アプリケーション親和性４４２はアプリケーションスレッド４４４に基づいて存在できる。例えば、アプリケーションスレッド４４４は、ＣＰＵコア１４２の１つのキャッシュに残っている、アプリケーションプログラム４４０などのアプリケーション又はプロセスの残存又は残余スレッドである。
【００４７】
ＣＰＵコア１４２の各々にコア親和（ａｆｆｉｌｉａｔｅｄ）メモリ４４８が割当てられる。コア親和メモリ４４８はＣＰＵコアの特定のインスタンスに対して指定されるメモリである。例えば、ＣＰＵコア１４２の中で指定されたインスタンスのみがコア親和メモリ４４８に利用されるように、コア親和メモリ４４８はＣＰＵコア１４２の中の１つに結合される。
特定の例で、コア親和メモリ４４８は、該コア親和メモリ４４８とのコア・メモリ親和性４５０を有するＣＰＵコア１４２のインスタンスによって、コア・アプリケーション親和性４４２を有するアプリケーションプログラム４４０の実行のために排他的に使用される。
【００４８】
コア親和メモリ４４８はコア・メモリ親和性４５０に基づいて指定される。コア・メモリ親和性４５０はメモリ親和性スレッド４５２に基づいて存在できる。メモリ親和性スレッド４５２は、特定のメモリ割当を利用して以前に生起したプロセシングの存在を示す。
例えば、コア・メモリ親和性４５０を有するコア親和メモリ４４８は、メモリチャンネル１５２、図１のメモリバンク１５４、メモリランク１５６、又はそれらの組合せなどのコア親和メモリ４４８の物理アドレスに基づいてＣＰＵコア１４２の１つに結合される。
【００４９】
コア親和メモリ４４８はパーコアキャッシュマップ（ｐｅｒ−ｃｏｒｅ  ｃａｃｈｅ  ｍａｐ）４４６にインデックスされる。パーコアキャッシュマップ４４６はＣＰＵコア１４２の１つに特化されたメモリプール（ｍｅｍｏｒｙ  ｐｏｏｌ）である。例えば、パーコアキャッシュマップ４４６はコア親和メモリ４４８に対するメモリアドレスを含む。ＣＰＵコア１４２の各インスタンスはパーコアキャッシュマップ４４６の対応するインスタンスに対するアクセスを有する。
【００５０】
スラブクラス３３０は、コア・メモリ親和性４５０、アプリケーションプログラム４４０の必要度、又はそれらの組合せに基づいてグローバルキャッシュマップ２１０からパーコアキャッシュマップ４４６に割当てられる。例えば、スラブクラス３３０は、アプリケーションプログラム４４０に対するデータオブジェクト（ｏｂｊｅｃｔｓ）を管理し処理するのに最適なチャンクサイズ３３４に基づいてパーコアキャッシュマップ４４６に割当てられる。
コア親和メモリ４４８のスラブクラス３３０は、メモリチャンネル１５２、図１のメモリバンク１５４、及びメモリランク１５６を有するメモリモジュール１５０から割当てられる。メモリモジュール１５０はＣＰＵコア１４２の１つに特化されたコア・メモリ親和性４５０を有する。コンピューティングシステム１００のためのメモリ割当の機能は以下で説明される。
【００５１】
図５は本発明に係るコンピューティングシステム１００におけるメモリ管理方法の例示的なフローチャートである。図５を参照すれば、コンピューティングシステム１００のメモリ管理方法５００は多様な方法で具現できる。具現の１つの実施形態は、以下のフローチャートによって説明される。
一般的に、メモリ管理方法５００は、図２の集合メモリ２１２から抽出された図４のコア親和メモリ４４８などの、物理的に連続したメモリの割当を表現する。集合メモリ２１２はＤＭＡアドレス可能である。
更に、図４のアプリケーションプログラム４４０によって発行された入力及び出力（Ｉ／Ｏ）がＩ／Ｏコマンドの各々を満たすために物理アドレスを使用できるように、集合メモリ２１２及びコア親和メモリ４４８は物理アドレスに変換される。
本発明に係るメモリ管理方法５００のコア親和メモリ４４８は、アプリケーションプログラム４４０から装置１０２へのメモリコピー動作及びデータ構造変更を不要にする。従って、メモリシステム１００のメモリ効率性を向上できる。
【００５２】
メモリ管理方法５００はメモリギャザプロセス（ｍｅｍｏｒｙ  ｇａｔｈｅｒ  ｐｒｏｃｅｓｓ）５５０でスタートする。メモリギャザプロセス５５０は集合メモリ２１２を生成するためにＯＳから利用可能なメモリを集める。例えば、物理的に連続したメモリはコンピューティングシステム１００のＯＳを通じて予約される。メモリギャザプロセス５５０は集合メモリ２１２を生成するために制御ユニット１１２によって具現される。例えば、制御ユニット１１２はストレージユニット１１４の内部の物理的に連続したメモリを予約するようにストレージユニット１１４とインタフェイスする。
【００５３】
メモリ管理方法５００は続いてページアドレスプロセス（ｐａｇｅ  ａｄｄｒｅｓｓ  ｐｒｏｃｅｓｓ）５５２を進行する。ページアドレスプロセス５５２は図２のヒュージページ２１４を生成する。ヒュージページ２１４の各々はメモリページを組合せて形成される。メモリページの各々はメモリモジュール１５０の内部の、物理的に連続したメモリの最も小さいセグメント、即ち、部分であり、仮想メモリシステムのメモリ管理のために存在する。
さらに詳細に、ヒュージページ２１４は、メモリバンク１５４の１つのメモリランク１５６の１つの内部において、集合メモリ２１２からメモリページの物理的に隣接したインスタンスから生成できる。
【００５４】
ヒュージページ２１４のサイズは、ＣＰＵ又はＲＡＭの構造（アーキテクチャ）、タイプ、動作モード、又は、制御ユニット１１２、ＣＰＵコア１４２、又はそれらの組合せに連関されたプロセッサのアドレッシングモードなどのファクタ又は特性に基づいて生成される。
例えば、ページアドレスプロセス５５２はヒュージページのサイズを選択するためにＯＳによって具現される。ヒュージページは制御ユニット１１２、ＣＰＵコア１４２、又はそれらの組合せに連関されたプロセッサ構造によって支援されることができる。ヒュージページ２１４は、ユーザ空間と反対である、ＯＳのカーネル空間で生成される。ページアドレスプロセス５５２はヒュージページ２１４を生成するように制御ユニット１１２によって具現化される。
【００５５】
メモリ管理方法５００は続いてページ組合せプロセス（ｐａｇｅ  ｃｏｍｂｉｎａｔｉｏｎ  ｐｒｏｃｅｓｓ）５５４を進行する。ページ組合せプロセス５５４は、図２の集合ページ２１８を生成する。例えば、集合ページ２１８は、メモリバンク１５４のインスタンスに属するメモリランク１５６のインスタンスにおけるヒュージページ２１４の２つ以上の物理的に隣接するインスタンスを組合せることによって生成される。
他の実施形態において、集合ページ２１８がメモリランク１５６の１つのインスタンス内のメモリから生成されるように、集合ページ２１８は、図１のメモリランク１５６のレベルで生成される。
他の実施形態において、ページ組合せプロセス５５４は、ユーザ空間装置ドライバを有するユーザ空間で遂行される。
ページ組合せプロセス５５４は上述された何れかの方法により集合ページ２１８を生成するように制御ユニット１１２によって具現化される。
【００５６】
本発明に係るコンピューティングシステム１００は、ユーザ空間装置ドライバを有するユーザ空間で集合ページ２１８を生成することによってメモリ割当の効率性を向上できる。ユーザ空間装置ドライバはカーネル装置ドライバのオーバヘッド及び負荷を低減し、従って、メモリ割当の効率性を向上できる。
【００５７】
メモリ管理方法５００は続いてグローバルマップ生成プロセス（ｇｌｏｂａｌ  ｍａｐ  ｇｅｎｅｒａｔｉｏｎ  ｐｒｏｃｅｓｓ）５５６を進行する。グローバルマップ生成プロセス５５６は、図２のグローバルキャッシュマップ２１０を生成する。
例えば、グローバルキャッシュマップ２１０は、集合ページ２１８の物理的アドレス、及びヒュージページ２１４の連関されたインスタンスを含むマップとして生成される。グローバルマップ生成プロセス５５６は上述されたグローバルキャッシュマップ２１０を生成するように制御ユニット１１２によって具現化される。
【００５８】
メモリ管理方法５００は続いてスラブ生成プロセス（ｓｌａｂ  ｇｅｎｅｒａｔｉｏｎ  ｐｒｏｃｅｓｓ）５５８を進行する。スラブ生成プロセス５５８は、ヒュージページ２１４の１つから図３のスラブクラス３３０及びスラブチャンク３３２の両方に集合メモリ２１２を割当てるか、又は分割する。例えば、スラブアルゴリズムは、グローバルキャッシュマップ２１０をスラブクラス３３０に分割するか、又は組織化するように具現化される。スラブクラス３３０に割当てられたメモリの容量はスラブクラス３３０の互いに異なるインスタンスの中で一致するように設定される。
さらに詳細には、類似、又は同等の容量のメモリがスラブクラス３３０の各々に割当てられ、その場合スラブ３３０の各々はメモリサイズの等化の恩恵をフル又は最適に使用することを可能にする。例えば、スラブクラス３３０は、メモリチャンネル１５２、メモリバンク１５４、メモリランク１５６、又はそれらの組合せの内における利用可能なメモリに基づいて事前に決定されたサイズに統一できる。特定の例として、スラブクラス３３０は２ＭＢ又は１６ＭＢのサイズに具現化される。しかし、スラブクラス３３０のサイズは上記と異なる場合があると理解されなければならない。
【００５９】
スラブクラス３３０の各々は、図３の複数のスラブチャンク３３２に組織化される。スラブクラス３３０のスラブチャンク３３２はメモリの物理的に連続した部分から生成される。例えば、スラブクラス３３０のスラブチャンク３３２はヒュージページ２１４の１つの集合メモリ２１２から割当てられる。特定の例で、スラブ生成プロセス５５８はヒュージページ２１４の１つの集合メモリ２１２から１つ以上の複数のメモリページを割当てることによって、スラブチャンク３３２を生成するように制御ユニット１１２によって具現化される。
【００６０】
スラブクラス３３０の与えられたインスタンスに対するスラブチャンク３３２の各々のチャンクサイズ３３４は、固定されたサイズである。スラブクラス３３０の互いに異なるインスタンスの中で、スラブチャンク３３２はチャンクサイズ３３４の互いに異なる値を有するように生成される。
例えば、スラブ生成プロセス５５８は、カーネルデータオブジェクト又はアプリケーションプログラム４４０のデータオブジェクトのようなオブジェクトに合う適切なチャンクサイズ３３４を生成する。
特定の例で、スラブチャンク３３２のチャンクサイズ３３４は、ヒュージページ２１４内のメモリページの１つ以上の物理的に連続したインスタンスの組合せのようなヒュージページ２１４のサイズ又はその部分に比例する。
例えば、スラブチャンク３３２はオブジェクトのサイズに対応して、“大きいスラブ”（ｌａｒｇｅ  ｓｌａｂｓ）と“小さいスラブ”（ｓｍａｌｌ  ｓｌａｂｓ）に区分される。“大きいスラブ”はオブジェクトがヒュージページ２１４内のページ又はサブディビジョン（ｓｕｂ−ｄｉｖｉｓｉｏｎ）の１／８以上の場合であり、“小さいスラブ”はオブジェクトがヒュージページ２１４内のページ又はサブディビジョンの１／８より小さい場合である。スラブ生成プロセス５５８は、上述されたように集合メモリ２１２をスラブクラス３３０及びスラブチャンク３３２に区分するように制御ユニット１１２によって具現される。
【００６１】
メモリ管理方法５００は続いてメモリ親和性判別プロセス（ｍｅｍｏｒｙ  ａｆｆｉｎｉｔｙ  ｄｅｔｅｒｍｉｎａｔｉｏｎ  ｐｒｏｃｅｓｓ）５６０を進行する。親和性判別プロセス５６０はメモリに対するＣＰＵ親和性を判別する。
図４のコア・メモリ親和性４５０は、図４のメモリ親和性スレッド４５２内のＣＰＵコア１４２（図１参照）の各々に連関するように判別される。
例えば、集合メモリ２１２の特定のサブ集合で動作するＣＰＵコア１４２のインスタンスに連関されたプロセス又はアプリケーションが存在する時、ＣＰＵコア１４２の特定のインスタンスに対するメモリ親和性スレッド４５２があると判別される。親和性判別プロセス５６０は上述されたように、コア・メモリ親和性４５０を判別するように制御ユニット１１２によって具現化される。
【００６２】
メモリ管理方法５００は続いてメモリ親和化プロセス（ｍｅｍｏｒｙ  ａｆｆｉｌｉａｔｉｏｎ  ｐｒｏｃｅｓｓ）５６２を進行する。メモリ親和化プロセス５６２は、メモリ親和性４５２に基づいてＣＰＵコア１４２との親和性を有するメモリを指定する。
例えば、図１のメモリモジュール１５０の１つに対するメモリチャンネル１５２、メモリバンク１５４、メモリランク１５６、又はそれらの組合せは、ＣＰＵコア１４２の特定のインスタンスとコア・メモリ親和性４５０を有すると判別された場合、図４のコア親和メモリ４４８として指定される。
特定の例として、メモリ親和化プロセス５６２は、ＣＰＵコア１４２のインスタンスと共に以前にアプリケーションプログラム４４０の実行に際して一緒に使用されたことがある、メモリランク１５６、メモリバンク１５４、メモリチャンネル１５２、又はそれらの組合せの中の１つに対してスラブクラス３００を指定する。
更に上記の特定の例において、メモリ親和化プロセス５６２は、アプリケーションプログラム４４０のサイズに対して最も適合するチャンクサイズ３４０を有するスラブクラス３３０を指定する。メモリ親和化プロセス５６２は上述されたようにＣＰＵコア１４２と共にメモリを指定する制御ユニット１１２によって具現化される。
【００６３】
メモリ管理方法５００は続いてコアマップ生成プロセス（ｃｏｒｅ  ｍａｐ  ｇｅｎｅｒａｔｉｏｎ  ｐｒｏｃｅｓｓ）５６４を進行する。コアマップ生成プロセス５６４は、図４のパーコアキャッシュマップ４４６を生成する。パーコアキャッシュマップ４４６はコア親和メモリ４４８の物理的メモリアドレスに基づいて生成される。例えば、コアマップ生成プロセス５６４において、パーコアキャッシュマップ４４６はコア親和メモリ４４８のメモリチャンネル１５２、メモリバンク１５４、メモリランク１５６、又はそれらの組合せを示す物理的メモリアドレスのマップとして生成される。特定の例として、パーコアキャッシュマップ４４６は、ＣＰＵコア１４２の特定の１つに対して指定された経験があるメモリチャンネル１５２、メモリバンク１５４、メモリランク１５６、又はそれらの組合せの特定のインスタンスに連関されたヒュージページ２１４に従って生成される。
【００６４】
パーコアキャッシュマップ４４６におけるＣＰＵコア１４２との、メモリチャンネル１５２の互いに異なるインスタンスの親和化は、チャンネルレベル並列化（ｃｈａｎｎｅｌ  ｌｅｖｅｌ  ｐａｒａｌｌｅｌｉｓｍ）を活性化できる。
メモリチャンネル１５２のインスタンスに対してメモリランク１５６に連関されたパーコアキャッシュマップ４４６に割当られたスラブクラス３３０の各々は、ランクレベル並列化（ｒａｎｋ  ｌｅｖｅｌ  ｐａｒａｌｌｅｌｉｓｍ）を活性化できる。
コアマップ生成プロセス５６４は、上述されたようにコア親和メモリ４４８に連関されたパーコアキャッシュマップ４４６を生成するように制御ユニット１１２によって具現化される。
【００６５】
本発明に係るＣＰＵコア１４２に対するコア親和メモリ４４８は、性能向上のためにメモリチャンネル１５２及びメモリランク１５６の利用可能な並列化をフルに利用できる。チャンネルレベル並列化及びランクレベル並列化は、メモリチャンネル１５２のレベル及びメモリランク１５６のレベルを通して同等な負荷を可能にし、その結果、特に、多重キューアプリケーションに対して各キュー（ｑｕｅｕｅ）においてＩ／Ｏコマンドを実行する時、コンピューティングシステム１００の性能を向できる。
【００６６】
ヒュージページ２１４の１つの集合メモリ２１２からスラブクラス３３０のスラブチャンク３３２を生成すると、メモリチャンネル１５２、メモリバンク１５４、メモリランク１５６又はそれらの組合せの間の並列化を活性化して、コンピューティングシステム１００の性能を向上できる。ヒュージページ２１４がメモリバンク１５４の中の１つのメモリランク１５６の１つの内の、メモリページの物理的に連続したインスタンスから集合されるので、メモリバンク１５４の各々はコンピューティングシステム１００の性能を向上するよう並列に動作できる。
【００６７】
図６は本発明に係るコンピューティングシステム１００におけるメモリ割当方法の例示的なフローチャートである。図６を参照すれば、メモリ割当方法６００は、メモリ要請段階６７０において、図４のアプリケーションプログラム４４０が図２の集合メモリ２１２にアクセス要請する時、スタートする。アプリケーションプログラム４４０とのコア・アプリケーション親和性４４２（図４参照）を有するＣＰＵコア１４２（図１参照）のインスタンスは、図４のアプリケーションスレッド４４４に基づいて判別される。
アプリケーションプログラム４４０に親和化されたＣＰＵコア１４２のインスタンスが一旦判別されると、マップ引出し（ｍａｐ  ｒｅｔｒｉｅｖａｌ）段階６７２において、ＣＰＵコア１４２のインスタンスに親和化されたパーコアキャッシュマップ４４６はグローバルキャッシュマップ２１０から引出す。一実施形態において、メモリ要請段階６７０におけるメモリ要請は、図１の制御インタフェイス１２２を通じて制御ユニット１１２によって受信される。
【００６８】
メモリ割当方法６００は続いてＣＰＵアウェア（ａｗａｒｅ）割当プロセス段階６７４を進行する。ＣＰＵアウェア割当プロセスはＣＰＵコアの親和性に基づいてアプリケーションプログラム４４０にメモリを割当てる。パーコアキャッシュマップ４４６がメモリ親和性４５０に基づいて生成されるので、アプリケーションプログラム４４０に対するコア親和メモリ４４８の割当は、コア親和メモリ４４８、ＣＰＵコア１４２、及びアプリケーションプログラム４４０の間に結合を提供する。
【００６９】
スラブクラス３３０はアプリケーションプログラム４４０の必要度に基づいてコア親和メモリ４４８から割当てられる。例えば、アプリケーションプログラム４４０に適合するスラブクラス３３０の１つは、アプリケーションプログラム４４０の必要度を満足するチャンクサイズ３３４を有するスラブクラス３３０として選択される。
【００７０】
特定の例として、コア親和メモリ４４８はＣＰＵコア１４２に連関されたメモリバンク１５４及びメモリランク１５６に従って割当てられる。例えば、ＣＰＵコア１４２の特定インスタンスに連関されたメモリバンク１５４及びメモリバンク１５４に属するメモリランク１５６の場合に、スラブクラス３３０はアプリケーションプログラム４４０に適合するチャンクサイズ３３４を有するように割当てられる。スラブクラス３３０の割当はパーコアキャッシュマップ４４６に記録される。
【００７１】
メモリ充足（ｍｅｍｏｒｙ  ｓｕｆｆｉｃｉｅｎｃｙ）段階６７６において、ＣＰＵコア１４２に親和化されたアプリケーションプログラム４４０からの要求に応じて、パーコアキャッシュマップ４４６は拡張される。メモリ充足プロセスはコア親和メモリ４４８の割当がアプリケーションプログラム４４０にとり十分であるか否かを判別する。
例えば、現在のパーコアキャッシュマップがアプリケーションプログラム４４０に対して十分なスラブクラス３３０の空きインスタンスを有しない時、スラブクラス３３０の追加インスタンスはグローバルキャッシュマップ２１０からパーコアキャッシュマップ４４６に割当てられる。ＣＰＵアウェア割当段階６７４は上述されたようにアプリケーションプログラム４４０にコア親和メモリ４４８を指定するように制御ユニット１１２によって具現化される。
【００７２】
メモリ割当方法６００は続いてメモリリターン（ｍｅｍｏｒｙ  ｒｅｔｕｒｎ）段階６７８を進行する。メモリリターンプロセスでは、コア親和メモリ４４８をグローバルキャッシュマップ２１０に戻す（リターン）。例えば、アプリケーションプログラム４４０がそれ以上コア親和メモリ４４８を必要としないと判別する時、スラブクラス３３０は集合メモリ２１２に戻される。他の実施形態において、ＣＰＵコア１４２がそれ以上パーコアキャッシュマップ４４６を必要としないと判別される時、パーコアキャッシュマップ４４６はグローバルキャッシュマップ２１０に戻される。メモリリターン段階６７８は、上述されたようにコア親和メモリ４４８をリターンするか、又は割当しないように、ストレージユニット１１４とインタフェイスする制御ユニット１１２によって具現化される。
【００７３】
ＣＰＵ使用の側面からは、スラブクラス３３０に対する各々のアクセスがスラブクラス３３０の全体にグローバル（ｇｌｏｂａｌ、全面的）ロック（ｌｏｃｋ、停止）を要求するので、グローバルキャッシュマップ２１０からスラブクラス３３０にアクセスするＣＰＵコア１４２の多重インスタンスの使用は速度と性能を低下させることが判明した。しかし、パーコアキャッシュマップ４４６からのアプリケーションプログラム４４０に対するメモリ割当は、スラブクラス３３０のインスタンスに対する全面的ロックを防止することが分かる。
何故ならば、ＣＰＵコア１４２の各々のためのパーコアキャッシュマップ４４６は、グローバルキャッシュマップ２１０からＣＰＵコア１４２の他のインスタンスに対するメモリ割当に影響を及ぼさないローカル（ｌｏｃａｌ、局所的）ロックのみを含むから、スラブクラス３３０のグローバルロックを防止できるからである。
【００７４】
本出願明細書に説明されたプロセスは、図１の制御ユニット１１２によって実行される非一時的コンピュータ読出し可能媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）に格納された一連のインストラクションとして具現される。非一時的コンピュータ読出し可能媒体は図１のストレージユニット１１４を含み得る。非一時的コンピュータ読出し可能媒体はハードディスク、ＮＶＲＡＭ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ＳＳＤ（ｓｏｌｉｄ  ｓｔａｔｅ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）、ＣＤ（ｃｏｍｐａｃｔ  ｄｉｓｋ）、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｉｄｅｏ  ｄｉｓｋ）、又はＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）フラッシュメモリ装置のような不揮発性メモリを含み得る。非一時的コンピュータ読出し可能媒体はコンピューティングシステム１００の部分として集積化されるか、又はコンピューティングシステム１００の脱着可能である部分として設置される。
【００７５】
図７は本発明に係るコンピューティングシステム１００の動作方法の例示的なフローチャートである。図７を参照すれば、コンピューティングシステム１００の動作方法７００は、集合メモリとＣＰＵコアとの間にコア・メモリ親和性を判別する段階７０２、コア・メモリ親和性に基づいてＣＰＵコアのコア親和メモリとして、集合メモリからメモリモジュールのメモリバンク及びメモリランクを指定する段階７０４、及びＣＰＵコアを有するコア・アプリケーション親和性に基づいてアプリケーションプログラムにコア親和メモリからスラブクラスを割当てる段階７０６を含むことができる。
実施形態において、動作方法７００は、図５及び図６に説明されたように、図１の制御ユニット１１２、ストレージユニット１１４などの、装置１０２の諸ユニットによって具現される。
【００７６】
結論として本発明に係る方法、プロセス、器具、装置、製品、及び／又はシステムは、直截、低廉、複雑でなく、多様性に富み、正確、敏感、且つ効率的であり、その上、即応でき、効率的、且つ経済的な製造、応用、及び活用のために公知の構成要素を適用することによって具現化できる。
本発明の実施形態のもう一つの重要な側面は、費用低減、システム簡単化、性能向上などの歴史的トレンドに対して、貴重な支援とサービスを提供できることである。
【００７７】
本発明の実施形態の上記及び他の重要な側面は、従って技術水準を少なくとも次のレベルに押し上げ得る。
【００７８】
以上、本発明を最良の実施形態に結合して記述して来たが、多くの選択肢、変更、及び変種があることを、上記の記述に照らすならば当業者は理解できるであろう。従って、別途の請求範囲に該当する全てのそのような選択肢、変更、及び変種を包含することが意図されている。本明細書乃至それに伴う図面に提示した全ての事柄は、説明的且つ日制限的意味に解釈されるべきである。
一方、上述された本発明の内容は、発明を実施するための具体的な実施形態に過ぎない。本発明は具体的であり実際に利用できる手段のみならず、将来の技術で活用できる、抽象的且つ概念的なアイディアである技術的思想を含む。
【符号の説明】
【００７９】
１００      コンピューティングシステム
１０２      装置
１１２      制御ユニット
１１４      ストレージユニット
１１６      通信ユニット
１１８      ユーザインタフェイス
１２２      制御インタフェイス
１２４      ストレージインタフェイス
１２６      ソフトウェア
１２８      通信インタフェイス
１３０      ディスプレイインタフェイス
１４２      ＣＰＵコア
１５０      メモリモジュール
１５２      メモリチャンネル
１５４      メモリバンク
１５６      メモリランク
２１０      グローバルキャッシュマップ
２１２      集合メモリ
２１４      ヒュージページ
２１６      ページメモリアドレス
２１８      集合ページ
２２０、２２２      第２、第３集合ページ
３３０      スラブクラス
３３２      スラブチャンク
３３４      チャンクサイズ
４４０      アプリケーションプログラム
４４２      コア・アプリケーション親和性（ａｆｆｉｎｉｔｙ）
４４４      アプリケーションスレッド
４４６      パーコアキャッシュマップ
４４８      コア親和メモリ
４５０      コア・メモリ親和性
４５２      メモリ親和性スレッド
５００      メモリ管理方法
５５０      メモリギャザ
５５２      ページアドレス
５５４      ページ組合せ
５５６      メモリギャザ
５５８      スラブ生成
５６０      親和性判別
５６２      メモリ親和化
５６４      コアマップ生成
【図１】
2017076396.tif 000003
【図２】
2017076396.tif 000004
【図３】
2017076396.tif 000005
【図４】
2017076396.tif 000006
【図５】
2017076396.tif 000007
【図６】
2017076396.tif 000008
【図７】
2017076396.tif 000009