JP2021502637A - コンピューティング環境内の処理を促進するためのコンピュータ・プログラム、コンピュータ・システムおよび方法 - Google Patents

コンピューティング環境内の処理を促進するためのコンピュータ・プログラム、コンピュータ・システムおよび方法 Download PDF

Info

Publication number
JP2021502637A
JP2021502637A JP2020524789A JP2020524789A JP2021502637A JP 2021502637 A JP2021502637 A JP 2021502637A JP 2020524789 A JP2020524789 A JP 2020524789A JP 2020524789 A JP2020524789 A JP 2020524789A JP 2021502637 A JP2021502637 A JP 2021502637A
Authority
JP
Japan
Prior art keywords
memory
locality
computing environment
processing
domain
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.)
Granted
Application number
JP2020524789A
Other languages
English (en)
Other versions
JP7486419B2 (ja
Inventor
グシュヴィンド、マイケル、カール
ブラッドベリー、ジョナサン
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2021502637A publication Critical patent/JP2021502637A/ja
Application granted granted Critical
Publication of JP7486419B2 publication Critical patent/JP7486419B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/25Using a specific main memory architecture
    • G06F2212/254Distributed memory
    • G06F2212/2542Non-uniform memory access [NUMA] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • 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/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • G06F2212/702Conservative garbage collection

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

Abstract

【課題】コンピューティング環境内の処理機能に対するメモリのユニットのローカリティ・ドメイン情報を突きとめることによってコンピューティング環境内の処理を促進する。【解決手段】いったん突きとめられると、メモリのユニットのローカリティ・ドメイン情報をデータ構造にキャッシュすることができ、コンピューティング環境の処理機能に対するメモリのユニットの1つまたは複数の親和性評価に関連付けられるローカリティ・ドメイン情報の1つまたは複数の後続のルックアップを促進する。【選択図】図29

Description

本発明は、メモリのローカリティ・ドメイン情報へのアクセスを促進することに関する。
non−uniform memory access(NUMA)システムにおいては、プロセッサは典型的にはブック(ボード、またはドロワーなど)にわたって分散され、それぞれのブックは、そのブックにローカルな1つまたは複数のプロセッサ接続メモリを含む。あるブックのプロセッサが他のブックのメモリにもアクセスすることができるように、ブックはネットワークによって相互接続される。
"z/Architecture Principles of Operation," IBM Publication No. SA22-7832-10, March 2015 "Power ISA(TM) Version 2.07B," International Business Machines Corporation, April 9, 2015
NUMAシステムのプロセッサは、素早くかつ効率的にローカル・メモリにアクセスすることができる。しかしながら、プロセッサが異なるブックのリモートのメモリにアクセスする必要がある場合、遅延があり、レイテンシとして知られている。また、ブックを相互接続するネットワーク上での帯域幅の問題もある。
コンピューティング環境内の処理を促進するためのコンピュータ・プログラム製品の提供を通じて、先行技術の欠点が対処され、さらなる利点が提供される。コンピュータ・プログラム製品は、処理回路によって読み取り可能であり、実行されると方法を実施する命令を記憶するコンピュータ可読記憶媒体を含む。方法は、例えば、コンピューティング環境内の処理機能に対するメモリのユニットのローカリティ・ドメイン情報を突きとめることと、メモリのユニットのローカリティ・ドメイン情報をデータ構造にキャッシュして、コンピューティング環境の処理機能に対するメモリのユニットの1つまたは複数の親和性評価に関連付けられるローカリティ・ドメイン情報の1つまたは複数の後続のルックアップを促進することとを含む。有利には、突きとめられたメモリのユニットのローカリティ・ドメイン情報をデータ構造にキャッシュすることは、続いてローカリティ・ドメイン情報を検索するための処理オーバヘッドを削減することによりコンピューティング環境内の処理を促進し、結果としてシステム・パフォーマンスが向上する。
1つまたは複数の実施形態において、メモリのユニットは、仮想メモリ・ユニットであり、突きとめることは、仮想メモリ・ユニットを実メモリ・ユニットに変換することと、実メモリ・ユニットを使用してローカリティ・ドメイン情報を、コンピューティング環境の物理的なコンポーネントに関するシステム位置情報を含む設定配列からフェッチすることとを含む。
1つまたは複数の実施形態において、キャッシュすることは、メモリのユニットのローカリティ・ドメイン情報を、コンピューティング環境のオペレーティング・システムまたはアプリケーションに関連付けられる設定配列キャッシュに、キャッシュすることを含むことができる。1つまたは複数のさらなる実装形態において、キャッシュすることは、メモリのユニットのローカリティ・ドメイン情報を、コンピューティング環境のトランスレーション・ルックアサイド・バッファにキャッシュすることを含むことができる。
1つまたは複数の実施形態において、コンピューティング環境はnon−uniform memory access(NUMA)コンピューティング環境であり、処理機能に対するメモリのユニットのローカリティ・ドメイン情報は、メモリのユニットがローカリティベースの親和性を有するNUMAコンピューティング環境の特定の処理ドメインを特定する情報を含む。
1つまたは複数の実装形態において、方法は、メモリのユニットが、コンピューティング環境の複数の処理ドメインの処理ドメインに対するローカリティ親和性を有するかどうかを判断することをさらに含む。判断することは、コンピューティング環境内の処理ドメインのローカリティとの比較のためにメモリのユニットのローカリティ・ドメイン情報をデータ構造から検索することを含むことができる。1つまたは複数の例において、データ構造はコンピューティング環境のオペレーティング・システムまたはアプリケーションに関連付けられる設定配列キャッシュのうちの1つ、またはコンピューティング環境の配列トランスレーション・ルックアサイド・バッファである。さらには、1つまたは複数の例において、方法は、メモリのユニットのローカリティ・ドメイン情報が処理ドメインのローカリティに一致する場合、ローカル親和性を指定する指標を設定することを含むことができる。1つまたは複数の追加的な実施形態において、方法は、メモリのユニットが処理ドメインへのローカリティ親和性を有することに基づいて、処理ドメインによってメモリのユニットにガーベッジ・コレクション処理を実施することを含むことができる。
1つまたは複数の態様に関連するコンピュータ・システムおよびコンピュータ実装方法はまた、本明細書において説明され、特許請求される。さらには、1つまたは複数の態様に関連するサービスがやはり説明され、本明細書において特許請求され得る。
追加的な特徴および利点は、本発明の技法を通じて実現される。本発明の他の実施形態および態様は、本明細書において詳細に説明され、特許請求される発明の一部と見なされる。
本発明の1つまたは複数の態様は、本明細書の結びにおける請求項で例として特に示され明確に特許請求される。本発明の、前述、ならびに他の目的、特徴および利点は、以下の詳細な説明と併せて添付の図面から明らかとなる。
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例の図である。 本発明の1つまたは複数の態様による、図1のブック(ドロワー、ボード、サーバなど)のさらなる詳細の図である。 本発明の1つまたは複数の態様による、図1のブックのメモリ階層構造の一例の図である。 本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境のさらなる詳細の図である。 本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境のシステム・アーキテクチャの様々なレベルに対するメモリのローカリティの図である。 本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境のシステム・アーキテクチャの様々なレベルに対するメモリのローカリティの図である。 本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境のシステム・アーキテクチャの様々なレベルに対するメモリのローカリティの図である。 本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境におけるガーベッジ・コレクションのワーク・キューの代替の実装形態の図である。 本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境におけるガーベッジ・コレクションのワーク・キューの代替の実装形態の図である。 本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例の図である。 アドレス変換の一例の図である。 アドレス変換の別の例の図である。 本発明の1つまたは複数の態様による、メモリのユニットのローカリティ・ドメイン情報をキャッシュするトランスレーション・ルックアサイド・バッファ(TLB)の一例の図である。 本発明の1つまたは複数の態様を組み込んで使用するためのアドレス変換機構の一実施形態の図である。 本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例の、簡略化された概略図である。 本発明の1つまたは複数の態様による、load_domain命令の一実施形態の図である。 本発明の1つまたは複数の態様による、load_domain命令にしたがう処理の一実施形態の図である。 本発明の1つまたは複数の態様による、コンピューティング環境内のメモリのユニットのローカリティ・ドメイン情報を取得するための処理の代替的な実施形態の図である。 本発明の1つまたは複数の態様による、メモリのユニットのローカリティ・ドメイン情報を取得するための処理の別の実施形態の図である。 本発明の1つまたは複数の態様による、トランスレーション・ルックアサイド・バッファ(TLB)内のローカリティ・ドメイン情報をキャッシュすることと組合せたメモリ・アクセス処理の一実施形態の図である。 本発明の1つまたは複数の態様による、TLBミスがあり、現在ドメイン情報がトランスレーション・ルックアサイド・バッファにない場合の、メモリにアクセスするため、およびローカリティ・ドメイン情報を管理するための、図20の処理のさらなる実施形態の図である。 本発明の1つまたは複数の態様による、is_local_domain命令の一実施形態の図である。 本発明の1つまたは複数の態様による、メモリのユニット(例えば、ガーベッジ・コレクションが行われる)が現在の処理ドメインにローカルかどうかを判断する、is_local_domain命令にしたがう処理の一実施形態の図である。 本発明の1つまたは複数の態様による、メモリ・マネージャ初期化処理の一実施形態の図である。 本発明の1つまたは複数の態様による、メモリ・マネージャ初期化処理の代替の実施形態の図である。 本発明の1つまたは複数の態様による、メモリ割り当てリクエスト処理の一実施形態の図である。 本発明の1つまたは複数の態様による、例えばガーベッジ・コレクション処理に関連付けられるメモリ圧縮関連の処理の一実施形態の図である。 本発明の1つまたは複数の態様による、メモリ解放関連の処理の一実施形態の図である。 本発明の1つまたは複数の態様による、コンピューティング環境内で処理を促進する一実施形態の図である。 本発明の1つまたは複数の態様による、コンピューティング環境内で処理を促進する一実施形態の図である。 本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例の図である。 図31のメモリのさらなる詳細の図である。 クラウド・コンピューティング環境の一実施形態の図である。 抽象モデル・レイヤの一例の図である。
本発明の態様、ならびにその一定の特徴、利点および詳細が、添付の図面において図示される非限定的な例を参照して以下でより詳しく説明される。詳細において本発明を不必要に不明瞭にしないように、良く知られているコンピューティング・システム、デバイス、処理技法などの説明は省略する。しかしながら、詳細な説明および具体的な例は、本発明の態様を示している一方で、限定としてではなく単に説明のために与えられることが理解されるべきである。当業者にとっては、基礎的な発明の概念の思想または範囲あるいはその両方において、様々な置き換え、修正、追加または再構成あるいはその組合せが、本開示から明らかとなろう。さらに、多くの発明的な態様および特徴が本明細書において開示され、矛盾しない限り、それぞれ開示される態様または特徴は、所望であれば、例えばコンピューティング環境内の親和性ドメインベースの処理を促進するなど、コンピューティング環境で処理を促進するための特定のアプリケーションによって、あらゆる他の開示される態様または特徴と組合せ可能であることに留意されたい。
例示的な実施形態は、具体的なコード、設計、アーキテクチャ、プロトコル、レイアウト、概略図またはツールを使用して、限定ではなく単なる例として、説明することができる。さらには、例示的な実施形態は、いくつかの事例において、特定のソフトウェア、ツール、およびデータ処理環境を使用して、単なる明瞭な説明のための例として説明される。例示的な実施形態は、他の比較可能なまたは同様な目的の、構造、システム、アプリケーションまたはアーキテクチャと併せて使用することができる。例示的な実施形態は、ハードウェア、ソフトウェア、またはその組合せに実装することができる。
本開示の例は、単に説明の明瞭さのために使用され、例示的な実施形態に限定しない。追加的なデータ、動作、アクション、タスク、アクティビティ、および操作は、本開示から着想可能であり、それら同一物が例示的な実施形態の範囲内で企図される。
本明細書において列挙されるあらゆる利点は単なる例であり、例示的な実施形態に限定されるよう意図されていない。追加的、または様々な利点を、具体的で例示的な実施形態によって実現することができる。さらには、特定の例示的な実施形態は、本明細書において列挙される利点のいくつか、もしくはすべてを有することができるか、または有していなくてもよい。
ガーベッジ・コレクションは、メモリ内部においてもはや参照されないオブジェクトなどのデータ・ユニットを特定し、それらのオブジェクトを解放する、自動的なメモリ管理処理である。使用されていないメモリを検出するために、ガーベッジ・コレクション処理は典型的には動的に割り当てられるデータ項目のセット、またはヒープをスキャンして、それぞれのメモリ場所について、その場所のあらゆる使用がアプリケーションのメモリ内のあらゆる場所で検出可能であるかどうかを特定する。ガーベッジ・コレクションはプログラム内で合計処理時間のうちかなりの割合を占めることがあり、結果として、パフォーマンスに大きな影響を及ぼすことがある。さらには、ガーベッジ・コレクションのメモリ・スキャンは実際のアプリケーション・プログラムの望ましくない長期の休止をもたらすことがある(「ミューテータ」)。これは、メモリ場所のサブセットが、プロセッサのあるセットについてはプロセッサの別のセットよりも速い、こんにちのサーバ設計で一般的なnon−uniform memory accessアーキテクチャなど一定のシステム・アーキテクチャ内でよりさらに増幅され得る。
したがって、1つまたは複数の態様によると、親和性ドメインベースのガーベッジ・コレクションを促進するための機能が提供される。1つまたは複数の実装形態において、アドレス由来の親和性に基づいて、親和的になされたガーベッジ・コレクション処理が本明細書で開示される。
まず、本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の一例が、図1を参照して説明される。一例において、コンピューティング環境100は、インターナショナル・ビジネス・マシーンズ・コーポレーション(アメリカ合衆国ニューヨーク州アーモンク)によって提供されるz/Architecture(R)に基づいている。z/Architecture(R)の一実施形態は、その全体が参照により本明細書に組み込まれる"z/Architecture Principles of Operation," IBM Publication No. SA22-7832-10, March 2015に記載されている。Z/ARCHITECTURE(R)は、インターナショナル・ビジネス・マシーンズ・コーポレーション(アメリカ合衆国ニューヨーク州アーモンク)の登録商標であることに留意されたい。
別の一例において、コンピューティング環境は、インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)によって提供されるPower Architecture(R)に基づいていてもよい。Power Architecture(R)の一実施形態はその全体が参照により本明細書に組み込まれる"Power ISA(TM) Version 2.07B," International Business Machines Corporation, April 9, 2015に記載されている。POWER ARCHITECTURE(R)は、インターナショナル・ビジネス・マシーンズ・コーポレーション(アメリカ合衆国ニューヨーク州アーモンク)の登録商標であることに、さらに留意されたい。
コンピューティング環境はまた、Intel(R)のx86アーキテクチャを含むがそれに限定されない、他のアーキテクチャに基づくことができる。他の例もまた存在する。
一例において、コンピューティング環境100は複数のブック(すなわちドロワー、ボードなど)102を含む。ブックは、1つまたは複数の中央処理(CP)クラスタ104(ノードとも称する)およびシステム・コントローラ(SC)106(例えばSCチップ)を含む。システム・コントローラはブック102を相互接続しており、CPクラスタの1つもしくは複数とは別個であってもよいか、またはCPクラスタの1つもしくは複数の一部であってよいか、あるいはその両方である。ブック102に関連するさらなる詳細が図2を参照して説明される。
示されるように、一例において、ブック102は複数(例えば2つ)の中央処理クラスタ104を含む。中央処理クラスタ104は複数の中央プロセッサ・チップ110を含み、そのそれぞれはシステム・コントローラ106に結合されている。中央プロセッサ・チップ110は、例えば1チップ当たり8つのコアなど、1つまたは複数のコア(プロセッサまたは中央処理装置(CPU)とも称する)120を含んでいる。さらに、一例において中央プロセッサ・チップ110は、CPクラスタ104による使用のためのメモリを提供する、例えば1つまたは複数のデュアル・インライン・メモリ・モジュール(DIMM)122に結合されている。
CPクラスタ104は、処理を促進するために主メモリならびにメモリ・キャッシュを使用する。CPクラスタ104によって採用されるメモリ階層構造の一例が、図3を参照して説明される。一例において、メモリ階層構造200は、主メモリ202、共有されるL4キャッシュ204、1つまたは複数の共有されるL3キャッシュ206、1つまたは複数のプライベートなL2キャッシュ208、および1つまたは複数のプライベートなL1キャッシュ210を、プロセッサ120内に含む。この例の実装形態において、L4キャッシュ204はシステム・コントローラ106の一部であり、他のブックへの接続性を与える。例のメモリ階層構造が本明細書において説明されるが、他の例が可能である。
CPクラスタ104の一例に関連するさらなる詳細が図4を参照して説明される。一例において、汎用コンピューティング・デバイスの形態で、CPクラスタ104が示されている。CPクラスタ104は、1つまたは複数のプロセッサまたは処理ユニット304(例えば、コア120)、メモリ306(例として主メモリまたは記憶装置と称される;例えばメモリ202)、および1つまたは複数の入力/出力(I/O)インターフェース308を含むことができ、1つまたは複数のバスまたは他の接続310あるいはその両方を介して互いに結合されるが、それに限定されない。
バス310は、バス構造のいくつかのタイプのうちの任意の1つまたは複数を表しており、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、およびプロセッサまたは様々なバス・アーキテクチャの任意のものを使用するローカル・バスを含む。限定ではなく例として、そのようなアーキテクチャはインダストリ・スタンダード・アーキテクチャ(ISA)、マイクロ・チャネル・アーキテクチャ(MCA)、エンハンストISA(EISA)、Video Electronics Standards Association(VESA)ローカル・バス、およびPeripheral Component Interconnect(PCI)を含む。
メモリ306は例えば、マルチブック・システムにおいてプロセッサ、チップ、CPクラスタおよび1つまたは複数のメモリ・コントローラを相互接続するバスの複合的なシステムを含むキャッシュ階層構造の一部としてプロセッサ304のローカル・キャッシュ322(例えば、L2キャッシュ208またはL1キャッシュ210あるいはその両方)に結合することができる共有キャッシュ(例えば、L4キャッシュ204またはL3キャッシュ206あるいはその両方)などのキャッシュ320を含むことができるか、またはそれらに結合することができるか、あるいはその両方である。さらには、メモリ306は、1つまたは複数のプログラムまたはアプリケーション330、オペレーティング・システム332、および1つまたは複数のコンピュータ可読プログラム命令334、ならびにガーベッジ・コレクション・ロジック336または命令を含むことができる。1つまたは複数の実施形態において、コンピュータ可読プログラム命令334は、本発明の態様の実施形態の機能を実行するように構成することができる。
CPクラスタ104はまた、例えばI/Oインターフェース308を介して1つもしくは複数の外部デバイス340、1つもしくは複数のネットワーク・インターフェース342、または1つもしくは複数のデータ記憶デバイス344あるいはその組合せと通信することができる。外部デバイスの例としては、ユーザ端末、テープ・ドライブ、ポインティング・デバイス、ディスプレイなどが挙げられる。ネットワーク・インターフェース342により、CPクラスタ104は、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(例えば、インターネット)あるいはその組合せなどの、1つまたは複数のネットワークと通信することができ、他のコンピューティング・デバイスまたはシステムとの通信を提供している。
データ記憶デバイス344は、1つもしくは複数のプログラム346、1つもしくは複数のコンピュータ可読プログラム命令348、またはデータあるいはその組合せなどを記憶することができる。コンピュータ可読プログラム命令は、本発明の態様の実施形態の機能を実行するように構成することができる。
CPクラスタ104は、リムーバブル/非リムーバブルの、揮発性/非揮発性のコンピュータ・システム記憶媒体を含むことができるか、またはそれらに結合することができるか、あるいはその両方である。例えば、非リムーバブルの、非揮発性の磁気媒体(典型的には「ハードドライブ」と呼ばれる)、リムーバブルの、非揮発性の磁気ディスク(例えば、「フロッピー(R)・ディスク」)からの読み取りおよびそれへの書き込みのための磁気ディスク・ドライブ、またはCD−ROM、DVD−ROMもしくは他の光学媒体などのリムーバブルの、非揮発性の光学ディスクからの読み取りまたはそれへの書き込みのための光学ディスク・ドライブ、あるいはその組合せを含むことができるか、またはそれに結合することができるか、あるいはその組合せである。他のハードウェアまたはソフトウェアあるいはその両方のコンポーネントが、CPクラスタ104と併せて使用することができることが理解されるべきである。例として、マイクロコード、デバイス・ドライバ、冗長化処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ記憶装置システムなどが挙げられるが、それに限定されない。
CPクラスタ104は、多くの他の汎用または特殊目的の、コンピューティング・システム環境または構成で動作可能であり得る。CPクラスタ104の使用に適切であり得る良く知られているコンピューティング・システム、環境、または構成あるいはそれらの組合せの例は、パーソナル・コンピュータ(PC)システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップのデバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラム可能家庭用電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスなどの任意のものを含む分散クラウド・コンピューティング環境などを含むがそれに限定しない。
図1〜図4に関連して上述されたコンピューティング環境は、non−uniform memory access(NUMA)コンピューティング環境またはシステムの一例である。non−uniform memory access(NUMA)は、メモリ・アクセス時間がプロセッサに対するメモリ場所に依存する、マルチプロセッシングで使用されるコンピュータ・メモリ設計である。NUMAのもとでプロセッサは、プロセッサ自身のローカル・メモリには、非ローカル・メモリ(すなわち、別のプロセッサにとってローカルなメモリ、またはプロセッサ間で共有されるメモリ)に対するよりも速くアクセスすることができる。そのようなコンピューティング環境においては、メモリが特定のプロセッサに対してローカル・メモリか、または非ローカル・メモリかどうかに関わらず、すべてのNUMAメモリはシステム内でプロセッサによって単一の共通のグローバル・アドレス空間でアクセスされる。上で説明したように、NUMAコンピューティング環境において、プロセッサはブック(例えば、ドロワー、またはボード)にわたって分散され、それぞれのブックは、そのブックにローカルな1つまたは複数のプロセッサ接続メモリを含むことができる。図1および図2で図示されるように、あるブックのプロセッサが他のブックのメモリにアクセスすることができるように、ブックはネットワークによって相互接続される。述べたように、そのようなコンピューティング環境内のガーベッジ・コレクションは時間がかかることがあり、システムのパフォーマンスに大きな影響を及ぼすことがある。やはり述べたように、ガーベッジ・コレクション処理の一部としてのメモリ・スキャンは計算コストが高くつく可能性があり、実際のアプリケーション・プログラムの潜在的に望ましくない長期の休止につながる(「ミューテータ」)。これは、メモリ場所のサブセットが、プロセッサのあるセットについてはプロセッサの他のセットよりも速い、こんにちのサーバ設計で一般的なnon−uniform memory accessシステムなどのコンピューティング環境内で増幅され得る。したがって、本明細書において開示されるように、可能であればこれらのメモリ場所へ最も速いアクセスを有するプロセッサのメモリ場所のそれぞれのセットについてアプリケーション・ヒープのメモリ・スキャンを実施することが望ましい。
そのような親和的になされたガーベッジ・コレクションへの一手法は、それぞれのソフトウェア実行スレッドについて、特定のプロセッサ・コアに密に接続され、ソフトウェア・スレッドを同一のコア上のハードウェア実行スレッドに結合していることが既知であるメモリ・プールからヒープ・メモリを割り当てることである。不利なこととして、そのような編成はソフトウェア・スタックにおいて著しい侵襲的な変更を必要とする。例えば、特定のプロセッサに取り付けられたメモリ内でメモリ割り当てをリクエストする能力を必要とする場合があり、アプリケーションからオペレーティング・システムへ、さらにはオペレーティング・システムからハイパーバイザへの適当なリクエストを含む。やはり、そのように割り当てられたメモリのプロセッサ・ノードへの結合が必要となる場合があり、すなわち、プロセッサがメモリをページ・アウトして、後でメモリにページ・インする場合、ページ・インは元々リクエストされたのと同一のプロセッサに割り当てられたメモリに発生する。さらには、プロセッサに取り付けられるメモリがいったん割り当てられてしまうと、実行がそのコア上に常駐し続け、オペレーティング・システムおよびハイパーバイザ両方についてのスケジューリングの自由度を限定するように、ソフトウェア・スレッドのハードウェア・プロセッサへの結合が必要となることがある。そのようなアーキテクチャでは、スレッドの数T(N)ごとに、割り当てられるヒープH(T(n))が存在し、それぞれのスレッドT(n)のアプリケーションはヒープ・メモリをH(T(n))から割り当て、ガーベッジ・コレクションが実施される時、T(n)に割り当てられるガーベッジ・コレクション・ワーカ・スレッドが、ヒープのスキャンを実施する。残念ながら、そのような手法は実行スレッドを自由に割り当てるためにメモリを自由に割り当てる能力において不必要に制限的であり、システム・インターフェースへの変更を必要とする観点から過剰に侵襲的であり、結果としてシステム効率を低下させること、ならびにそのように親和的になされたガーベッジ・コレクション処理をレガシ・システムに適用することができなくなることの両方をもたらす。したがって、レガシ・システムなどにおいて、より効率的なガーベッジ・コレクションを実施する一方で、効率的なリソース割り当て決定を行うためのオペレーティング・システムおよびハイパーバイザにとっての自由度も維持するために、異なる手法が望まれる。
有利には、アドレス由来の親和性に基づいて、親和的になされたガーベッジ・コレクション処理が本明細書において開示される。1つまたは複数の態様によると、ガーベッジ・コレクション動作を、ガーベッジ・コレクション動作が割り当てられるメモリ領域(本明細書においてプロセッサの親和性ドメインとも称する)に最も密に結合されているプロセッサに割り当てることを促進するための方法、システム、およびコンピュータ・プログラム製品が提供される。本明細書で与えられる説明において、ローカリティ・ドメイン、親和性ドメイン、またはドメインは互換的に使用され得ることに留意されたい。1つまたは複数の実施形態において、ローカリティ・ドメインは複数のメモリの場所、ユニットなどを有することができ、また例えば共通したアクセス特徴、例えば1つまたは複数のプロセッサに対するアクセス・パフォーマンスまたはレイテンシに関する特徴、を有するドメインであってもよい。1つまたは複数の実装形態において、ローカリティ・ドメインは数値または記述によって特定することができる。議論によっては、ローカリティ・ドメインはまた、特定のプロセッサまたはプロセッサのセットに最もローカルである特定のメモリを意味することがある。
例として、また本明細書においてさらなる説明として、親和的になされたガーベッジ・コレクション処理は、メモリ領域が割り当てられるのはどの親和性またはローカリティ・ドメインかを決定すること含むことができ、決定されたローカリティ・ドメインに基づいて、ローカリティ・ドメインが検討中の特定の(例えば、現在の)プロセッサのローカリティ・ドメインに対応するかどうかを判断するための試験を実施することができる。ローカリティ・ドメインの一致に基づいて、その特定のプロセッサでガーベッジ・コレクション動作が(直ちに、またはその特定のプロセッサについてのワーク・キュー(例えば、ガーベッジ・コレクションのワーク・キュー)内にガーベッジ・コレクション動作をキューイングすることにより)開始される(または開始するよう指示される)。そうでなければ、メモリ領域を、特定の(例えば現在の)プロセッサによってスキャンするのではなく、一致するローカリティ・ドメインを有する別のプロセッサによってスキャンすることができる。
様々な実施形態を本明細書において議論する。一実施形態において、レガシのガーベッジ・コレクションのワーク・キューを反映する統合されたワーク・キューを議論する。特定のプロセッサによってある要素が取得されると、判断を行うことができ、特定のプロセッサのワーク・ドメインに対応しない場合はワークがスキップされる。別の実施形態においては、動作にエンキューする時に判断を行うことがある。メモリ領域のローカリティ・ドメインのベースとなる、様々なハードウェア実施形態がやはり使用され得る。一実施形態において、ハードウェア実施形態は試験「この領域(または場所、またはページなど)は現在のプロセッサ上にあるか?」を与える。さらなる実施形態において、ハードウェアはある領域の特定のローカリティ・ドメインにリターンする命令を与えることができる。本明細書において、ガーベッジ・コレクションのサービス・ステアリングによるガーベッジ・コレクション・スレッドのローカライゼーションの実施形態も説明する。
述べたように、ガーベッジ・コレクションは再利用可能なメモリについてメモリをスキャンするために膨大な量のデータにアクセスする。例として、IBMのシステムz/architecture(R)において、システム・アーキテクチャの少なくとも1つのレベル(すなわちブックのレベル)についてのレイテンシは、著しく不均一であり得、ガーベッジ・コレクションのスキャンを実施してブックにローカルなプロセッサ上で圧縮することが望ましい。現在、システムz/architecture(R)において、特定のブックのメモリにメモリの割り当てをリクエストするメカニズムはなく、メモリを特定のブックに関連付けることが困難である。したがって、本明細書において、ハイパーバイザおよびオペレーティング・システムが複数のブロックを選択されたローカリティ・ドメインに割り当てるためのアプリケーションへのインターフェースを提供しないシステムにおいて、利用可能なローカルなガーベッジ・コレクションのスキャンおよび圧縮の利点を可能にする方法、システム、およびコンピュータ・プログラム製品が開示される。
ガーベッジ・コレクションのアルゴリズムであるマーク・アンド・スイープは、ガーベッジ・コレクションの一手法を具体化している。このアルゴリズムでは、プログラムの変数から開始してポインタが探索され、遭遇するすべてのレコードにマークがつけられる。次いでヒープ内のすべてのレコードを通してスイープが行われ、マークのつけられていないあらゆるレコードは回収され、マークのつけられたすべてのレコードは、マークが取り消される。この手法での仮定は、それぞれのレコードのサイズが既知であり、ポインタであるフィールドが既知であり、また回収されたレコードがフリーリストに維持されることである。
単に具体的な例としては、Boehm−Demers−Weiser(BDW)のマーク・アンド・スイープのガーベッジ・コレクタが、そのポータビリティおよび言語非依存性によりポピュラーなガーベッジ・コレクタである。これは、あいまいなルートのガーベッジ・コレクタとして既知のガーベッジ・コレクタのクラスを最適化する。そのようなガーベッジ・コレクタは、あらゆるワードサイズの値が潜在的にアプリケーションのメモリ・ヒープ参照であると仮定することにより、ルートについての精密な情報および、オブジェクトのレイアウトの知識なしで済ませるために利用可能である。アプリケーションのメモリ・ヒープを参照するようにあいまいに見えるが、恐らくは単にアプリケーションのメモリ・ヒープ参照に見える値を有しているだけのあらゆる値は、メモリ参照として扱われ、それが参照するオブジェクトは「生きている」、すなわちガーベッジ・コレクションの候補ではないと見なされる。あいまいに参照されるオブジェクトは移動することができないが、それはそのあいまいなルートがオブジェクトの新しいアドレスで上書きすることができないからであり、すなわちあいまいな値が実際にはメモリ参照ではなく単にメモリ参照に見えている場合、これはやはり改変されるべきではない。BDWガーベッジ・コレクタはレジスタ、スタティックなエリア、およびスレッドのアクティベーション・スタックをあいまいに扱う。アプリケーション・プログラマまたはコンパイラからなどの、オブジェクトのレイアウト情報が利用可能である場合、BDWガーベッジ・コレクタはそれを利用することができるが、そうではない場合、オブジェクト内に含まれる値はやはりあいまいに扱われる。
あいまいなルートのガーベッジ・コレクタの利点は、アプリケーション・プログラミング言語およびコンパイラにおける独立性にある。BDWガーベッジ・コレクタはC言語およびC++でコードされたアプリケーション用のガーベッジ・コレクションをサポートしており、精度の高いガーベッジ・コレクションを避けているが、それはC言語およびC++はデータの型安全性がないからである。BDWはまたしばしば、コンパイラが精度の高いガーベッジ・コレクションをサポートするために必要な精密な情報を与えないようなデータの型安全性のある言語で使用される。最低限の要件は、ソース・プログラムがガーベッジ・コレクションからメモリ参照を隠さないこと、およびコンパイラがそのガーベッジ・コレクションからメモリ参照を隠す変形をしないことである。したがって、BDWガーベッジ・コレクションは、あらゆる他のガーベッジ・コレクタよりも恐らく多様な設定において使用される。結果的に、BDWガーベッジ・コレクタは基本的なパフォーマンスと、あいまいなルートのマイナスの影響を最小化するためと、の両方のために、高度にチューニングされてきた。
上で議論したBDWのマーク・アンド・スイープのガーベッジ・コレクタは、非限定的な例として提示されていることに留意されたい。他のマーク・アンド・スイープのコレクタを含む様々なガーベッジ・コレクタ、ならびにコピーベースのコレクタまたは世代別コレクタなどの他のガーベッジ・コレクションの手法を、本明細書において開示される実施形態と併せて実践することができる。一般的に言うと、ローカルでワークを実施することを決定すること、および例えばプロセッサ親和性によって、コレクタによって実施されるワーク・ユニットをアクセスすること、または維持することのいずれかを含む処理が、本明細書において1つまたは複数の態様で開示される。
BDWのガーベッジ・コレクタによって実装されるようなマーク・アンド・スイープのガーベッジ・コレクションの基本構造は、アプリケーションのメモリ・ヒープのすべての到達可能なポインタを深さ優先探索する。この目的のために、アプリケーションのメモリ・ヒープへのメモリ参照を見つけるために、アプリケーションのレジスタ・ファイル、アプリケーション・スタック、およびデータ・セグメント内の既知のルートから、ルート・ポインタの初期のセットが使用される。これは、これらの既知のルートでマーク・スタックを初期化することによって達成される。
マーク・フェーズはアプリケーションのメモリ・ヒープ・アドレスをマーク・スタックから除去し、発見されたポインタに向けられたオブジェクトについての情報と併せてメモリ参照を使用し、このオブジェクトに記憶されたあらゆるポインタを提供する。オブジェクトについての必要な最小限の情報は、メモリ・アロケータから取得することができる、オブジェクトの開始アドレスおよび長さの中にある。そのようなオブジェクトについて、あらゆる適切にアラインされたデータ・ワードはリーガルなポインタであり得る。この方法で見つけられた、あらゆる新しく発見されたリーガルなアプリケーションのメモリ・ヒープ・アドレスは、マーク・スタックにプッシュされ、到達可能なオブジェクトはマーク・アレイ内でマークされる。アルゴリズムはアプリケーションのメモリ・ヒープが空になるまで繰り返される。次のコード断片はマーク・アンド・スイープのアルゴリズムの例である。
アルゴリズムがすべての到達可能なアプリケーションのメモリ・ヒープのオブジェクトをトラバースすると、マーク・ビットはすべての到達可能なオブジェクトのビットマップを表現する。マークされていないオブジェクトはアプリケーションのメモリ・ヒープ上で線形なスイープを使用して解放される。次のコード断片は、マーク・アンド・スイープのアルゴリズムの一実施形態をコンパイルするスイープとフリーリストの例である。
述べたように、マーク・アンド・スイープのアルゴリズムを用いて上で概説したような再帰的な手法は、機能を実施するために多すぎるリソースを要求することによりパフォーマンスに影響することがある。上で議論した一般的なマーク・アンド・スイープのアルゴリズムに代替的な手法は、再帰的な手法ではなく、ガーベッジ・コレクションのワーク・キューを含むループを実装することである。この手法を使用して、単に例として、マーク・アンド・スイープのアルゴリズムのマーク部分を次のように改変することができる。
上述の処理は、有利には、基本的なマーク・アンド・スイープのアルゴリズムをエンキューイング・ベースのアルゴリズムに変換し、キューは本明細書において開示されるローカリティ・ドメインベースのガーベッジ・コレクション処理に望ましいローカリティ関係性を確立するために管理される。
本明細書において開示されるようなローカリティ・ドメインベースのガーベッジ・コレクション処理は、様々なシステム・アーキテクチャのレベルに実装することができる。図5〜図7は、これらの概念を利用することができる異なるシステム・レベルの例を描写している。図5において、NUMAコンピューティング環境のブック0(B0)およびブック1(B1)102が図示されており、図1〜図4に関連して上述したようなブック(またはドロワーまたはボード)のレベルの相互接続をやはり含む。それぞれのブック102は(この例では)、それぞれがチップのローカリティ・ドメインを有する複数のCPUチップ120、およびそれぞれが同一のチップ120のプロセッサに対して異なるローカリティ特徴を備える複数のメモリ・チャネル400を含んでいる。図6で描写するように、アプリケーション・イメージ410は、複数のローカリティ・ドメインの階層構造レベルにわたって複数のローカリティ・ドメイン内のメモリ・チャネル上のプロセッサとメモリとにまたがっていてもよい。図7は図5のコンピューティング環境を描写しており、示されているシステム・コントローラ・チップ106は、描かれているアーキテクチャに別の階層構造レベルを追加している。この実装形態において、複数のメモリ・チャネル400が同一のCPUチップ120上のプロセッサに対して異なるローカリティ特徴を備えて示されている。例示されるアーキテクチャにおいて、CPUチップのローカリティ・ドメインおよびシステム・チップのローカリティ・ドメインの両方がある。説明したように、アプリケーションまたはアプリケーション・イメージは、異なるCPUチップ内にあり、異なるローカル・メモリまたは異なるメモリ・チャネルを有する、それに割り振られた異なるプロセッサを有することができ、また異なるブック(または、ドロワー、ボードなど)にまたがっていることができる。すなわち、単一のアプリケーションは複数のブックで実行中のプロセッサを利用することができる。
さらなる説明として、また述べたように、一実施形態において、図8で描かれるような統合された(またはグローバルな)ワーク・キューは本明細書において開示されるような親和的になされたガーベッジ・コレクション処理で使用することができる。単一の統合されたまたはグローバルなワーク・キューの実装形態は、有利には、ガーベッジ・コレクションのワーク・キューが提供される一定のレガシ・システムで使用することができる。ガーベッジ・コレクション処理の一実施形態は、1つまたは複数の態様によると、図8で描写されるような統合されたまたはグローバルなガーベッジ・コレクションのワーク・キューを使用して、次のようなアルゴリズムを採用することができる(単に例として)。
この処理では、候補アドレス(またはメモリ領域)のローカリティ・ドメインが取得され、現在のプロセッサのローカリティ・ドメインと比較される。一致していると仮定すると、ガーベッジ・コレクション処理がそのプロセッサに割り当てられる。この手法を使用して、プロセッサはローカル・ドメインが一致した時だけガーベッジ・コレクション処理を実施する。別の実施形態において、ワーク・キュー内にプロセッサにとって利用可能なローカルのエントリがない場合、ガーベッジ・コレクションのワーカ(すなわち、プロセッサ)は非ローカルなGCメモリ領域スキャンを実施することができる。この処理の例示的な一実装形態は次のようになる。
この手法では、もしプロセッサがガーベッジ・コレクションを実施するのにローカルのメモリで足りなくなると、全体的なガーベッジ・コレクションのワークがより早く完了されるように、他のプロセッサのガーベッジ・コレクションのワークロードを共有することができる。
上で述べたように、別の実装形態において、ワーク・キューは、コンピューティング環境の1つまたは複数のアーキテクチャ的なレベルで、それぞれのローカリティ・ドメインに割り当てることができる。図9の例において、それぞれのブック102(図1〜図7)にワーク・キューが割り振られる。この実装形態は、マッピングが正しいドメイン・キュー内にエンキューイングするために十分に安定であり、さらにワーク・キューから項目が検索されると正確な割り振りを可能にすると仮定している。1つまたは複数の実施形態において、ローカリティ・ドメインに対応するそれぞれのワーク・キューは、そのローカリティ・ドメインに対応するメモリ内に割り当てることができる。
アーキテクチャ内の所望の数のローカリティ・ドメインに応じて、あらゆる数のワーク・キューを利用することができる。例えば、CPUチップ・レベルまたはシステム・チップ・レベルあるいはその両方におけるローカリティ・ドメインを利用することができる。この手法において、プロセッサが関連付けられた(すなわちローカライズされた)ワーク・キュー構造内のメモリ上だけで動作するという点で、GC処理は単純化されている。単に例として、そのような手法を利用するガーベッジ・コレクション処理を実装するための一実施形態は次のようになる。
この複数のワーク・キューの実装形態において、負荷の共有は、プロセッサがガーベッジ・コレクションするようなローカルのメモリを有していない場合に、やはりプロセッサによって実装することができる。そのような処理の例は次のようになる。
複数のキューがある環境において、ワーク項目を置く場所(すなわちガーベッジ・コレクションが行われるメモリ領域)の決定は最初になされる必要があることに留意されたい。このコードの例は次を含むことができる。
また、1つまたは複数の実施形態において、プロセッサは親和的であるかまたはローカリティ意識的であり得、また(例えば)スキャンするべきさらなるローカル・ドメイン・メモリを有していない場合は次に最も近いメモリ・ポートを優先することに留意されたい。この処理の例は次のようであってよい。
1つまたは複数のさらなる態様によると、メモリについてのドメイン情報を取得することを促進するための、および親和性ドメインベースのガーベッジ・コレクションを促進するためにコンピューティング環境(上で議論したNUMAコンピューティング環境など)の現在の処理ドメインに対するメモリのユニットのローカリティを決定するための、機能が提供される。
本発明の1つまたは複数の態様を組み込んで使用するためのコンピューティング環境の別の例が、図10を参照して以下で説明される。図10を参照すると、一例において、コンピューティング環境600はやはりインターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)によって提供されるz/architecture(R)に基づくものであり得る。別の一例において、コンピューティング環境は、インターナショナル・ビジネス・マシーンズ・コーポレーション(アメリカ合衆国ニューヨーク州アーモンク)によって提供されるPOWER architecture(R)に基づいていてもよい。
コンピューティング環境600は、仮想マシンのサポートを提供する中央プロセッサ複合体(CPC)602を含む。CPC602は、1つまたは複数の制御ユニット608を介して、1つまたは複数の入力/出力(I/O)デバイス606に結合される。中央プロセッサ複合体602は、1つまたは複数の中央プロセッサ(中央処理装置(CPU)としても知られる)610に結合される例えばプロセッサ・メモリ604(主メモリ、主記憶装置、中央記憶装置としても知られる)、および入力/出力サブシステム611を含み、これらのそれぞれを以下で説明する。
プロセッサ・メモリ604は、例えば1つまたは複数の仮想マシン612、仮想マシンを管理するハイパーバイザ614などの仮想マシン・マネージャ、およびプロセッサ・ファームウェア615を含む。ハイパーバイザ614の一例は、インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)によって提供されるz/VM(R)である。ハイパーバイザは時にホストと称される。さらには、本明細書で使用される場合、ファームウェアは例えばプロセッサのマイクロコードまたはミリコードあるいはその両方を含む。例えば、より高次のマシン・コードの実装形態で使用されるハードウェアレベルの命令またはデータ構造あるいはその両方を含む。一実施形態において、例えば、典型的には信頼されたソフトウェアを含むマイクロコードとして提供されるプロプライエタリなコード、または基礎となるハードウェアに特有のマイクロコードを含み、オペレーティング・システムのシステム・ハードウェアへのアクセスを制御する。
CPCの仮想マシンのサポートは大量の仮想マシン612を動作させる能力を提供し、それぞれが異なるプログラム620で動作すること、およびLinuxなどのゲストのオペレーティング・システム622を実行させることができる。それぞれの仮想マシン612は、別個のシステムとして機能することができる。すなわち、それぞれの仮想マシンは、独立的にリセットされ、ゲストのオペレーティング・システムを実行し、異なるプログラムで動作することができる。仮想マシン上で実行中のオペレーティング・システムまたはアプリケーション・プログラムは、全面的または完全なシステムにアクセスを有しているように見えるが、実際にはその一部のみが利用可能である。
プロセッサ・メモリ604は、仮想マシンに割り当て可能な物理的なプロセッサ・リソースである中央プロセッサ(CPU)610に結合される。例えば、仮想マシン612は1つまたは複数の論理プロセッサを含み、そのそれぞれは仮想マシンに動的に割り当てることができる物理的なプロセッサ・リソース610のすべてまたは共有を表している。1つまたは複数の実施形態において、中央プロセッサ610は本明細書において説明されるようなアドレス変換機構630を含むことができる。
さらには、一実施形態において、それぞれのCPU610は、プロセッシング・コア(コアとしても知られる)632内部で実行するハードウェア・スレッドである。コアは、1つまたは複数のスレッドを含み、この例ではコア632は4つのハードウェア・スレッドを含んでいる。他の例では、コンピューティング環境は1つまたは複数のコアを含むことができ、それぞれのコアは1つまたは複数のハードウェア・スレッドを含むことができる。
図1〜図4に関連して上述したように、1つまたは複数の実装形態において、コンピューティング環境600はnon−uniform memory access(NUMA)コンピューティング環境またはシステムである。説明したように、そのようなコンピューティング環境では、プロセッサ・メモリ604は例えば1つまたは複数のコア、プロセッサ、または中央処理装置610などの中央処理装置にわたって分散することができる。さらには、上で説明したように、NUMAコンピューティング環境内でCPUレベルを含む様々なレベルのローカリティ・ドメインを定義することができる。1つまたは複数の実装形態において、特定のCPU610に接続されるプロセッサ・メモリ604は、そのプロセッサにローカルであると考えることができる。
さらには、プロセッサ・メモリ604はI/Oサブシステム611に結合される。入力/出力サブシステム611は入力/出力制御ユニット608とデバイス606と主記憶装置604との間で情報のフローを方向付ける。入力/出力サブシステム611は、中央処理複合体の一部であり得る、またはそれとは別個であり得るという点で、これは中央処理複合体に結合される。
一例において、仮想マシンのモデルはV=Vモデルであり、仮想マシンの実メモリまたは絶対メモリは、実メモリまたは絶対メモリの代わりにホストの仮想メモリにバッキングされる。それぞれの仮想マシンは隣接する仮想メモリ空間を有する。物理的なリソースはホスト614によって管理することができ、共有される物理的なリソースはホストによって必要に応じてその処理需要を満たすためにゲストのオペレーティング・システムにディスパッチすることができる。このV=V仮想マシン(すなわち、ページング可能なゲスト)モデルは、ゲストのオペレーティング・システムと物理的に共有されるマシン・リソースとの相互作用がホストによって制御されることを仮定しているが、それは大量のゲストは典型的にはホストがハードウェア・リソースを単純にパーテーショニングして、設定されたゲストに割り振ることを妨げるからである。
一実施形態において、ゲストのオペレーティング・システムおよびホストからの/への制御の移送を必要とせずにゲストのオペレーティング・システムの動作を処理するために、ホスト(例えば、z/VM(R))およびプロセッサ(例えば、System z(R))のハードウェア/ファームウェアは互いに制御された協調的なやり方で相互作用する。ゲストの動作は、命令がページング可能なストレージ・モードのゲストを含むゲストのために解釈的に実行できるような機構を介してホストの介入なしに直接的に実行することができる。この機構によって、命令Start Interpretive Execution(SIE)が提供され、ホストが発行することができるSIEは、ゲスト(仮想マシン)状態ならびに実行制御およびモード制御などの制御を保持する状態記述と呼ばれる制御ブロックを指定する。命令はマシンを、ホスト・アテンションを必要とする条件が発生するまでゲストの命令および割り込みが直接的に処理される解釈的実行モードに置く。そのような条件が生じると、解釈的な実行は終了し、ホストの割り込みが提示されるか、またはSIE命令が遭遇した条件の詳細を記憶することを完了する。後者のアクションはインターセプションと呼ばれる。
本明細書において説明されるコンピューティング環境は、動的アドレス変換(DAT)などの、アーキテクチャ的な機能をサポートする。オペレーティング・システムによる適当なサポートによって、動的アドレス変換機構を使用して、ストレージがその構成において利用可能な主記憶装置(主メモリとしても知られる)よりも大きく見えるシステムをユーザに提供することができる。この見かけの主記憶装置を仮想ストレージと称し、仮想ストレージ内で場所を指定するために使用されるアドレスを仮想アドレスと称する。ユーザの仮想ストレージは、その構成で利用可能な主記憶装置のサイズをはるかに上回ることができ、通常は補助的なストレージ(例えば、直接的にアドレッシングできないストレージ)内で維持される。仮想ストレージはページと呼ばれるアドレスのブロックから構成されると考える。仮想ストレージの最も最近参照されたページだけが、物理的な主記憶装置(例えば、ランダム・アクセス・メモリ(RAM))のブロックを占有するために割り振られる。ユーザは主記憶装置には見られない仮想ストレージのページを参照するため、仮想ストレージのページはあまり必要とされそうにない主記憶装置のページを置換するよう導入される。ストレージのページのスワッピングは、ユーザが知らないうちにオペレーティング・システムによって実施され得る。
さらには、仮想のコンピューティング環境において、解釈的な実行アーキテクチャはページング可能なストレージ・モードと称される絶対ストレージ用のストレージ・モードを提供する。ページング可能なストレージ・モードでは、ゲストの主記憶装置をマッピングするために、ホスト・レベルで動的アドレス変換が使用される。ホストはページング可能なストレージ・モードのゲストの実ストレージを、ホストのDATを使用することによりホストの実ストレージ内のどこででも使用可能なフレームに散乱させ、ゲストのデータを補助ストレージにページ・アウトさせるための能力を有している。この技法は現実のマシン・リソースを割り当てる際、ゲスト用の絶対ストレージの隣接する範囲について期待される見え方を維持しながらも柔軟性を与える。
仮想マシンの環境は、複数回DATの適用を要求することがある:最初はゲストのレベルで、ゲスト管理の変換テーブルを通じてゲストの仮想アドレスをゲストの非仮想アドレスに変換するため、次にページング可能なゲストについて、ホストのレベルで、対応するホストの仮想アドレス(すなわち、ゲストの非仮想アドレス)を、ホストの実アドレスまたは絶対アドレスなどのホストの非仮想アドレスに変換するため。
仮想ストレージに関連付けられる仮想アドレスのシーケンスは、アドレス空間と呼ばれ、複数のアドレス空間を提供するために動的アドレス変換機構を使用することができる。これらのアドレス空間を使用してユーザ間の分離の程度を与えることができる。そのようなサポートは、それぞれのユーザ用に完全に異なるアドレス空間を含むことができ、それにより完全な分離を与えることができるか、またはそれぞれのアドレス空間の一部を単一の共通ストレージ・エリアにマッピングすることにより共有エリアをもうけることができる。準特権を与えられたプログラムが2つ以上のそのようなアドレス空間にアクセスできるようにする命令も提供される。動的アドレス変換は、例えば制御レジスタ内の変換パラメータを変更することを必要とせずに、複数の異なるアドレス空間から仮想アドレスの変換を与える。
動的アドレス変換は、ストレージ参照の間に仮想アドレスを対応する実アドレスまたは絶対アドレスに変換する処理である。動的アドレス変換は、命令およびCPUによって生成されたデータ・アドレスについて指定することができる。動的アドレス変換によって形成される実アドレスまたは絶対アドレス、およびプリフィクシングによって次いで形成される絶対アドレスは、一実施形態において、64ビット長である。仮想アドレスは一次仮想アドレス、二次仮想アドレス、アクセス・レジスタ(AR)指定の仮想アドレス、またはホームの仮想アドレスであってもよい。アドレスは、それぞれ一次、二次、AR指定の、またはホームのアドレス空間制御要素(ASCE)によって変換される。適当なアドレス空間制御要素の選択の後、変換プロセスは4つのタイプの仮想アドレスのすべてに対して同一である。アドレス空間制御要素はセグメント・テーブル指定または領域テーブル指定であってもよい。セグメント・テーブル指定または領域テーブル指定は、実ストレージまたは絶対ストレージにおいてオペレーティング・システムによって確立されたテーブルにより変換を実施させる。
セグメント・テーブル指定または領域テーブル指定を使用する場合の変換プロセスでは、3つのタイプ−領域、セグメント、およびページの情報のユニットが認識される。それにより、仮想アドレスは4つのフィールドに分割される。一例において、ビット0〜32は領域インデックス(RX)と呼ばれ、ビット33〜43はセグメント・インデックス(SX)と呼ばれ、ビット44〜51はページ・インデックス(PX)と呼ばれ、ビット52〜63はバイト・インデックス(BX)と呼ばれる。仮想アドレスのRX部分は、それ自身が3つのフィールドに分割される。一実施形態において、ビット0〜10は領域第1インデックス(RFX)と呼ばれ、ビット11〜21は領域第2インデックス(RSX)と呼ばれ、ビット22〜32は領域第3インデックス(RTX)と呼ばれる。
図11を参照して、仮想アドレスを実アドレスに変換する一例を説明する。この処理は、本明細書においてDATウォーク(またはページ・ウォーク)と称し、あるアドレス(例えば、仮想アドレス)を別のアドレス(例えば、実アドレス)に変換するためにアドレス変換テーブルをウォークする。この例では、アドレス空間制御要素(ASCE)700は、テーブル・オリジン702、ならびに変換の開始レベルを示す(すなわち、階層構造内のどのレベルでアドレス変換を開始するかの指標)指定タイプ(DT)制御704を含む。テーブル・オリジン702およびDT704を使用して、特定のテーブルのオリジンが位置決めされる。次にテーブルに基づいて、次のレベルのテーブルのオリジンを取得するために、特定のテーブルへのインデックス付けに仮想アドレスのビットが使用される。例えば、領域第1テーブル(RFT)706が選択される場合、領域第1テーブルへのインデックス付けに仮想アドレスのビット0〜10(RFX)708が使用され、領域第2テーブル(RST)710のオリジンを取得する。次に、領域第2テーブル310へのインデックス付けに仮想アドレスのビット11〜21(RSX)712が使用され、領域第3テーブル(RTT)714のオリジンを取得する。同様に、領域第3テーブル714へのインデックス付けに仮想アドレスのビット22〜32(RTX)716が使用され、セグメント・テーブル718のオリジンを取得する。次に、セグメント・テーブル718へのインデックス付けに仮想アドレスのビット33〜43(SX)720を使用してページ・テーブル722のオリジンを取得し、ページ・テーブル722へのインデックス付けに仮想アドレスのビット44〜51(PX)724を使用してページ・フレーム実アドレス(PFRA)726を有するページ・テーブル・エントリ(PTE)725を取得する。ページ・フレーム実アドレスは、次いで実アドレスを取得するために、オフセット728(ビット52〜63)と結合される(例えば、連結される)。次に、対応する絶対アドレスを取得するためにプリフィクシングを適用することができる。
アドレス変換の別の例を図12を参照して説明する。この例では、最初のゲスト仮想アドレスを最終的なホストの実アドレスに変換するためにDATウォークが実施される。この例では、アドレス空間制御要素(ASCE)700は、ゲストのアドレス空間制御要素であり、ASCE700のDT704は、ゲストのアドレス変換構造760によって決定されるゲストの変換がテーブル・オリジン702によって指示される領域第1テーブル706から開始することを示している。したがって、領域第1テーブル706へのインデックス付けに最初のゲストの仮想アドレス(例えば、RFX708)の適当なビットを使用して領域第1テーブルのエントリのポインタを取得する。領域第1テーブル・エントリ(RFTE)のアドレスは、ゲストの実アドレスまたは絶対アドレスである。主記憶装置のオリジンおよびリミット(limit)が適用された、このゲストの実アドレスまたは絶対アドレスは、ホストの仮想アドレスに対応している。この中間的なホストの仮想アドレスは、次いでホストのアドレス変換構造770を使用して変換される。特に、アドレス空間制御要素(ASCE)750は、ホストのアドレス変換構造772内の変換用の開始レベルを示すために使用されるホストのアドレス空間制御要素である。ASCE750のDT754によって示される開始レベル(例えば、領域第1テーブル)に基づいて、図11を参照して説明したように、ホストのアドレス変換構造772を使用する変換用に使用されるよう、示されたテーブルへテーブル・オリジン752でインデックスを付けるために、ホストの仮想アドレスの特定のビットが使用される。ゲストのRFTEに対応するホストの仮想アドレスの変換は、ホストのページ・フレーム実アドレス(PFRA)774aが取得されるまで続く。
中間的なホストのページ・フレーム実アドレスにおけるデータは、ゲストのアドレス変換構造(例えばこの特定の例においては、ゲストの領域第2テーブル710)の次のレベルへのポインタであり、上述のように変換が続く。具体的に、ホストのアドレス変換構造776、778、780、および782を使用して、ゲストの領域第2テーブル710、領域第3テーブル714、セグメント・テーブル718およびページ・テーブル722にそれぞれ関連付けられる中間的なホストの仮想アドレスを変換し、結果的にホストのPFRAにおいてそれぞれ774b、774c、774d、および774eとなる。ホストのページ・フレーム実アドレス774eはゲストのページ・テーブル・エントリ725のアドレスを含む。ゲストのページ・テーブル・エントリ725はゲストのページ・フレーム実アドレス726を含み、これは最初のゲストの仮想アドレスからのオフセットと連結されて対応するゲストの絶対アドレスを取得する。次に主記憶装置のオリジンおよびリミットが、対応するホストの仮想アドレスを計算するために適用され、次いで上述のようにアドレス変換構造784を使用して変換され、ホストのページ・フレーム実アドレス774fを取得する。ホストのページ・フレーム実アドレスは、次いでホストの仮想アドレスのオフセット(例えば、ビット52〜63)と結合(例えば、連結)され、最終的なホストの実アドレスを取得する。これで、ゲストの仮想アドレスの、ホストの実アドレスへの変換が完了する。
上の例では変換は領域第1テーブルで開始するが、これは単に一例に過ぎない。変換は、ゲストまたはホストいずれかの、あらゆるレベルで開始することができる。
さらには、一実施形態において、アドレス変換を改善するために、仮想アドレスから実アドレスまたは絶対アドレスへの変換のマッピングを、トランスレーション・ルックアサイド・バッファ(TLB)などのアドレス変換に関連付けられる構造のエントリに記憶することができる。TLBは仮想アドレス変換の速度を向上するためにメモリ管理ハードウェアによって使用されるキャッシュである。次に仮想アドレスの変換がリクエストされる時、TLBがチェックされ、もしそれがTLBにあれば、TLBヒットがあり、実アドレスまたは絶対アドレスはそこから検索される。そうでなければ、上述のようなページ・ウォークが実施される。
図13で描写されるような一例において、トランスレーション・ルックアサイド・バッファ790は、1つまたは複数のエントリ792を含むことができる。エントリは、コンピューティング環境のホスト用であってもよく、またはゲスト用であってもよく、また指標または値でそのようにマークしてもよい。さらには、本明細書において以下で説明するような使用のために、DOM指標794が提供されてもよい。(例えば、本発明の1つまたは複数の態様によると、DOM指標はローカリティ・ドメインまたは代替的にローカリティ・ドメイン指標(例えば、ドメインはローカルである、ドメインはローカルではない)を記憶することができる)。さらには、エントリは、アドレス変換テーブルのページ・テーブル・エントリ、領域テーブル・エントリ、またはセグメント・テーブル・エントリに関連付けることができる。トランスレーション・ルックアサイド・バッファの多くの実装形態が可能である。
示されるように、ゲストの変換はTLBに含まれてもよい。これらのエントリは、非明示的に1つまたは複数のホストの変換を含む複合のゲスト/ホストのエントリであってもよい。例えば、ゲストの仮想TLBエントリは、最初のゲストの仮想アドレスから最後のホストの実アドレスまたは絶対アドレスまでの変換全体をバッファリングすることができる。このケースでは、上の図12で説明したように、ゲストのTLBエントリは非明示的にすべての中間的なホストの変換772、776、778、780および782、ならびに最終的なホストの変換784を含む。別の例では、階層構造的なTLBは、最初のゲストの仮想アドレスからゲストのページ・テーブル722の関連付けられたオリジンまでの変換をバッファリングするTLBの第1のレベルにエントリを含んでいる。この第1のレベルのエントリは、例えば、結合された領域およびセグメント・テーブル・エントリ(CRSTE)を表現しており、TLBのCRSTE部分として参照することができる。さらには、階層構造的なTLBは、ゲストのページ・テーブル・エントリ・アドレスから最終的なホストの実アドレスまたは絶対アドレスまでの変換をバッファリングするTLBの第2のレベルからの、別個のエントリを含むことができる。この例では、図12で説明したように、TLBの第1のレベル内のゲスト・エントリは、ゲストの領域およびセグメント・テーブルをバッキングするホストの変換に対応する中間的なホストの変換772、776、778、および780を非明示的に含み、第2のレベル内のゲスト・エントリは、ゲストのページ・テーブルおよび最終的なホストの変換784をバッキングする中間的なホストの変換782を非明示的に含む。トランスレーション・ルックアサイド・バッファの多くの実装形態が可能である。
図14は、本発明の1つまたは複数の態様にしたがって使用することができる、アドレス変換機構800の一実施形態を描写している。図示されるように、アドレス変換機構800は、例えばTLB801へのロード・ストア・ユニット(LSU)ルックアップ・リクエスト、TLB802(テーブル・キャッシュがデータ・キャッシュ内に実装される)へのデータ・キャッシュ(DC)ルックアップ・リクエストを含む変換リクエストを多重化する入力マルチプレクサ810を含むことができる。選択されたTLBルックアップ・リクエスト803はトランスレーション・ルックアサイド・バッファ(TLB)820、ならびに変換エンジン830に転送される。TLBリクエストは、TLBミスがあるとTLBルックアップ・リクエスト803に基づいて変換エンジン830を開始またはスタートさせる。TLBヒットがあると、TLBルックアップ結果805が、例えばデータ・キャッシュ内に存在し得るテーブル・キャッシュ840に書き込まれることに留意されたい。TLBミスがあると仮定すると、変換830はルックアップ・リクエストを処理し、そのようにしながら、テーブル・フェッチ・リクエスト806を、フェッチ結果をリターンする807テーブル・キャッシュ840に送信することができる。TLBルックアップ・リクエストを開始する次の選択の際、変換結果がTLB820内にありリクエスト・ヒットとなるよう、変換エンジン830は変換結果808をTLB820に書き込む。
初めに述べたように、プロセッサの設計は益々非対称かつ非均一になり続けており、処理タスクを、所与のメモリのユニット(例えば、場所、アドレス、エリア、ページなど)にとって最小のまたは最適なレイテンシおよび最良の帯域幅特徴を有するプロセッサに(より一般的には処理ドメインに)配置することが益々有利になっている。上述のように、NUMAコンピューティング環境では、実メモリは共有される単一の対称的なスイッチによって均一にアクセスされるのではなく、特定のプロセッサ・コア、プロセッサ・チップ、プロセッサ・モジュール、プロセッサ・ブック、および他の物理的な構造物などの特定の処理ドメインに取り付けられるか、または関連付けられる。したがって、メモリに最も接近して配置される要素がそのメモリに対して良好なアクセス特徴を有する。
別の態様において、物理的なローカリティ・ドメインの発見、およびメモリに対するパフォーマンスの親和性は、全面的に仮想化されるシステムと関連して、またはレガシ・ソフトウェア・スタックと併せて、あるいはその両方で、本明細書において説明されるように有利に使用される。これらのコンテキストにおいて、特定の処理ドメインに対するメモリのユニットの親和性またはローカリティを特定するメカニズムを提供することが望ましい。
PHYPなどの準仮想化されたシステム、およびそれが実装するPAPR仕様において、特定のプロセッサまたはプロセッサ・ノードに取り付けられたメモリにリクエストするメカニズムが提供される。しかしながら、これらのシステムは、オペレーティング・システムまたはアプリケーション内で直接的ではなく、ハイパーバイザのコールを介してメモリ管理が実施されることを要求する。
本明細書において議論されるように、アプリケーションがプロセッサ上の処理をメモリ近くに配置できるようにするためには、メモリのユニット上の処理タスクが適当な処理ドメイン(例えば、プロセッサ)上に配置され得るか、またはそのようなドメインによって実行され得るように、処理機能に対するメモリの親和性を決定することが必要である。したがって、本明細書において開示される1つまたは複数の態様にしたがって、例えばドメインベースのガーベッジ・コレクション処理を促進するなどコンピューティング環境内の処理を促進するために、メモリのユニットの親和性またはローカリティを、クエリするインターフェースが提供される。
一実施形態によると、メモリのユニットを使って、そのメモリについての物理的なローカリティ・ドメイン情報を与える命令(load_domain)が提供される。一実施形態において、ドメイン情報は、メモリの1つまたは複数のローカリティ関連(または親和性関連)の属性を一意に特定する数字であることができる(例えば、関連するプロセッサ・コア、ノード、ブックなどを特定する)。一態様によると、クエリ応答は、最も近い処理ドメインまたは機能を一意に特定することができ、そして例えばシステム構造を記録もしくは組み込むテーブルへのルックアップによって、またはそのようなテーブルなどを提供するシステム・コールによってのいずれかで、物理的なシステム情報を取得することにより次に近い処理機能などを導出するために使用することができる。別の実施形態において、ポインタがリターンされることがあり、ポインタはメモリ領域が対応する階層構造のレベルおよびノード、またはコンピューティング環境内でのそれぞれの処理ドメイン要素までの距離についてなどの情報を提供する。
1つまたは複数の態様によると、システム・コールまたは命令の少なくとも1つは、メモリのユニット用のプロセッサ識別情報(ID)または対応するロケール識別子(例えばブック番号、プロセッサ番号などのロケール番号)を特定するトークンを取得するために与えられることがある。別の実施形態において、ポインタがリターンされることがあり、ポインタはそのメモリが対応する階層構造のレベルおよびノード、またはそれぞれの処理要素までの距離についてのいずれかについての情報を提供する。なおさらなる実施形態において、メモリ・アドレスおよびプロセッサ識別子を使って、メモリ場所から特定されたプロセッサまでの距離をリターンする命令が提供され得る。所望であれば、距離は正規化して抽象化することができる。
1つまたは複数の実装形態において、本明細書において開示される機能性は、アプリケーションがシステムの詳細を明らかにすることを妨げるために、例えば署名された(signed)、uidセットされた(set-uid)信頼されるアプリケーション、または管理者によって実行されるプログラムあるいはその両方に制限することができる。
図15は、上述のNUMAコンピューティング環境などのコンピューティング環境の一実施形態を描写しており、ブック102、ならびに例えば設定(config)配列900、1つまたは複数のホスト901、および1つまたは複数のゲストのシステムまたは仮想マシン902を含む簡略化された例示的な変換構造として描いている。1つまたは複数の他の実装形態において、上で議論したz/architecture(R)コンピューティング環境などのブック102は、チップ、コアに取り付けられたメモリ・ポートなどの他のドメイン・レベルの処理で置換することができる。設定配列900は、例えば特定のメモリがコンピューティング環境内のどこに配置されているかを指定する(または、示す)物理的なシステム情報を含むことができる。例えば、設定配列900は、システム内の物理的なメモリについてのローカリティ・ドメイン情報905を含むことができる。この情報は、本明細書において開示される1つまたは複数の態様によると、例えばアドレス変換処理を介して、またはアドレス変換処理の一部としてアクセスすることができる。特に、ホストの実アドレスまたは絶対アドレスが取得されると、そのアドレスを使用して設定配列、および特にコンピューティング環境の特定のメモリ領域についてのドメイン情報を取得するための配列内のローカリティ・ドメイン情報を参照することができる。
図16は本発明の1つまたは複数の態様による、load_domain(またはget domain)命令の一実施形態を描写している。図示されるように、load_domain命令は、例えば、load_domain演算を示すオペコードを含む1つまたは複数の演算コード・フィールド1000、ならびに描写される例におけるように、アドレス変換処理の一部として指定されたアドレスのドメイン決定するためのアドレス・オペランド1001、およびload domain演算のためのターゲット・リターン値を示すターゲット・リターン(RT)フィールド1002を含むことができる。load_domain命令を処理することは、例えば本明細書において一般的にメモリのユニット(またはメモリ・ユニット)と称する所与のメモリ・アドレス、場所、エリアなどについてのNUMAコンピューティング環境のブック・レベルなどの所望の処理構造レベルに対するローカリティ・ドメイン情報を決定することを含むことができる。ドメイン情報は、例えば、単一の数字またはパックされた記述構造(packed describing structure)へのアドレスとしてリターンされ得る。処理は、ページ・テーブルの複数のレベルをウォーキングすること、およびコンピューティング環境の設定配列(config array)内の情報、すなわちドメイン情報にアクセスすることを伴うことがある。次に、以下で説明するように、この次にアドレスのルックアップが要求された時、情報を検索するための処理のオーバヘッドを削減することができるように、ローカリティ・ドメイン情報は設定配列キャッシュなどのデータ構造内に、またはトランスレーション・ルックアサイド・バッファ内にキャッシュされる。
図17はload_domain命令に関連付けられる処理の一実施形態を描写している。図17において図示されるように、load domain処理1001は、ホストの実アドレス(または絶対アドレス)を取得するためにアドレス変換1010を実施すること、および次に設定配列のルックアップ1020を実施するためにそのホストの実アドレスを使用して、例えばその実アドレスについてのドメイン情報を取得することを含み、ドメイン情報1030をリターンすることができ、ドメイン情報1030は例えば設定配列キャッシュ(CAC)またはトランスレーション・ルックアサイド・バッファ(TLB)1040にキャッシュされ得、load domain処理1003を完了する。
本明細書において開示される処理はコンピューティング環境についていくつかの仮定を立てていることに留意されたい。例えば、メモリはサブページの粒度においてドメインをまたいでストライピングされていないと仮定している。しかしながらメモリがストライピングされている場合、ストライピングをセット・ドメインで始めて次にパターンを続けることにより、またはすべてのページが同一のパターンを続けることのいずれかによってストライピングを解決することが可能である。したがって、これらのパターンベースのストライピングは、やはり本明細書において説明される処理によって扱うことができる。さらには、到達可能であるには、それぞれのページがハードウェア内にTLB変換エントリを有するとの仮定が立てられる。
コンピューティング環境内の処理効率は、効率的にデータを提供することによって向上することができる。ローカリティ・ドメイン情報にアクセスするために、アーキテクトされた変換の後、上述のような設定配列内でルックアップを行うことができる。設定配列をアクセス可能にすることにより、または設定配列を効率的にアクセス可能にすることにより、あるいはその両方で、処理を向上することができる。さらには、データ構造内のローカリティ・ドメインのルックアップの結果をキャプチャし、この情報を探すかまたは参照する方法を提供することにより、効率を向上することができる。そのようなデータ構造のキャッシュへの、複数の手法が可能である。例えばオペレーティング・システムまたはアプリケーションは、設定配列キャッシュに関連付けられることがあり、1つまたは複数の実施形態において、設定配列キャッシュは仮想アドレスによって直接アクセスすることができ、それにより、所望のローカリティ・ドメイン情報が以前に取得されている場合アドレス変換を行う必要性を回避している。1つまたは複数の実施形態において、そのような設定配列キャッシュはアプリケーション維持であり得る。あらゆるアプリケーション維持のストレージ構造が、この目的のために使用され得ることに留意されたい。図18は関与し得る処理の一実施形態を描写している。図示されるように、アドレス変換1100を実施することの一部として、所望のローカリティ・ドメイン情報が設定配列キャッシュ1110内のローカルで利用可能かどうかの判断がなされ得る。「いいえ」の場合、設定配列のルックアップが実施され1120、関連する設定配列情報が設定配列キャッシュ1130にフェッチされる。設定配列キャッシュ内のドメイン情報とともに、ローカリティ・ドメイン情報をリターンすることができる1140。
図13に関連して上で図示したように、別の実施形態において、(いったん検索された)ローカリティ・ドメイン情報を例えばトランスレーション・ルックアサイド・バッファ内にキャッシュすることができる。この一実施形態がアドレス変換1200を実施することに関連して図19に描写されており、所望のローカリティ・ドメイン情報をそれぞれのTLBエントリ1210から取得し(例えば図13のDOMフィールドとして示されるように)、リターンすることができる1220。この点に関して、検索されたローカリティ・ドメイン情報を管理するためのTLB構造の使用は、ドメイン情報が数ビットなどと小さい場合に有利であり得ることに留意されたい。この手法は、配列処理のオーバヘッドをもたらす別個の設定配列キャッシュより効率的であり得る。
図20および図21は、TLB構造内の特定のメモリ・ユニットのローカリティ・ドメイン情報を提供すること、または更新することについての例示的な実施形態を描写している。図20において、メモリ・アクセス処理が示されており、例えば上述のようなアドレス変換を実施すること1330、およびTLBヒットがあるかどうかを判断すること1310を含む。「いいえ」の場合、上述のようにTLB「ウォーク」を実施することができる1320。TLBヒットがあると仮定すると、メモリには例えば設定配列を使用してアクセスすることができ1330、データおよび設定配列の情報をTLBに送信し戻すことができる1340。特定のページ・テーブル・エントリについてのTLB内にローカリティ・ドメイン情報がやはりない場合1350、TLBをローカリティ・ドメイン情報で更新することができ1360、データをリターンすることができる1370。
図21は、要求される情報が現在TLB構造にない場合の、ローカリティ・ドメイン情報のリクエストの一実施形態を描写している。アドレス変換が実施され1300、TLBヒットがあるかどうかの問い合わせが行われる1310。「はい」の場合、所望のローカリティ・ドメイン情報がリターンされる1395。そうでなければ、上述のようにTLBウォーク1320が行われ、リクエストされたローカリティ・ドメイン情報がシステム設定配列から取得される1380。ローカリティ・ドメイン情報は所望であればダミー・ロードとして偽装することができることに留意されたい。(図13で示されるような)TLB構造はローカリティ・ドメイン情報で更新され1390、情報をリターンすることができる1395。
当業者であれば、本明細書において議論される処理に対して様々な改善を採用することができることに留意されたい。例えば、1つまたは複数の追加的なヘルパ機能を使用して、メモリ範囲などのローカリティの範囲を特定することができる。関連付けられるローカリティ・ドメインの開始を取得することができ、同一のローカリティ・ドメイン内に入るすべてのメモリ場所を特定することができる。すなわち、例えば特定のメモリ・チップに関連付けられるメモリ・アドレスを見つけるよう所望される場合、メモリのローカル範囲を見出すことができる。1つまたは複数の実施形態において、一度に多数のアドレスについてローカリティ・ドメイン情報を取得すること、または指定することができるように、1メガバイトまたは1ギガバイトのページなどの大きなメモリ領域が特定されることがある。この方法では、処理は次の、例えば数百万のメモリ・アドレスについてのローカリティをテストすることを回避することができる。
図22は本発明の1つまたは複数の態様による、is_local_domain命令の一実施形態を描写している。図示されるように、is_local_domain命令は、例えばis_local_domain演算を示すオペコードを含む1つまたは複数の演算コード・フィールド1400、ならびに例えばメモリがローカルであるかどうかを判断するための処理のためのアドレス場所またはメモリ・ユニット1402、ならびに結果識別子であり得る任意選択の結果指標1404を含むことができる。1つまたは複数の実装形態において、結果識別子は指定されたメモリ・ユニットまたはアドレスが、プロセッサなどの処理ドメインに対してローカルか、ローカルでないかを示すことができる。例えば、is_local_domain命令は、指定されたアドレスがローカルのプロセッサなどに、またはリモートに取り付けられたメモリ・チャネル上のローカル・ドメイン内にあるかどうかに応じて、フラグをtrueまたはfalseにセットすることができる。この命令には変動があり得、命令の一部として、またはオペランドとしてのいずれかで、ローカリティ・レベルすなわちメモリがローカルのプロセッサに取り付けられているか、または同一のローカルのボードなどのプロセッサのうちの1つに取り付けられたメモリであるかどうかを指定することがあることに留意されたい。さらには、ローカリティは、システム・チップ、ボードなどに対してなど、別の構造に対して指定することができる。したがって1つまたは複数の実装形態において、近接性のレベルは例えばプロセッサへのローカル親和性があるかどうかを判断する際に考慮され得る。
図23はis_local_domain命令に関連付けられる処理の一実施形態を描写している。図23に図示されるように、is_local_domain処理1401はメモリ・ユニットまたはアドレスを取得すること1410、ならびに例えば現在のプロセッサについてのローカリティ・ドメインを取得すること1420、を含むことができる。処理はメモリ・ユニットがローカルかどうかを判断する1430。「はい」の場合、結果指標をローカリティ親和性を指定するようセットすることができ1440、is_local_domain処理を完了する1445。そうでなければ、メモリ・ユニット(またはアドレス)はローカルではなく1430、結果指標はローカリティ親和性を指定するようセットされ得1435、処理を完了する。
1つまたは複数の実施形態において、結果指標は、指定されたメモリ・ユニットがローカルかどうかについての情報を与える条件コードまたはフラグなど他の指標であり得ることに留意されたい。
1つまたは複数の実装形態において、任意選択のサービス機能が提供され得る。例えば、ローカリティ・ドメインのサイズを与えるために、domain_rangeまたはlocal_domain_range命令が提供されてもよく、例えば自然にアラインされ、かつ与えられたアドレスと併せて使用することができるサイズをエンコードする。また、domain_start、domain_endまたはlocal_domain_start、local_domain_endが、それぞれ拡張され指定されたメモリ範囲の開始および終了を定義することを促進するために提供されてもよい。1つまたは複数の実施形態において、最小の周囲サイズまたは同一のローカリティを有する最大の既知の広がりいずれかの観点で、ローカリティを定義することができる。
1つまたは複数のさらなる態様によると、ハードウェア・プロセッサ(またはプロセッサ・スレッド)などの処理ドメインによる使用のためのメモリ・プールを作成し管理するための機能が提供され、上述の親和性ドメインベースのガーベッジ・コレクション処理などのローカリティ・ドメインベースの処理を促進する。機能は、上で議論したNUMAコンピューティング環境などのコンピューティング環境において特に有利である。
本明細書において述べたように、特定のプロセッサ、またはより一般的には特定の処理ドメインにローカルなメモリ上で演算を実施することは、コンピューティング環境内の処理を有利に促進する。しかしながら全面的に仮想化された環境においては、特定の処理ドメインに関連付けられるメモリにリクエストするためのインターフェースがないことがある。したがって、プロセッサ(または処理ドメイン)がオペレーティング・システムまたはハイパーバイザなどのスーパバイザからそのようなローカライズされたメモリにリクエストすることができなくてもローカルの速度および帯域幅の有利性を得るべく、異なる物理的な処理ドメインに関連付けられるメモリ・プールを作成することについての手法が、本明細書において開示される。
従来、メモリの割り当ては例えばアプリケーションに割り振られたメモリ・ヒープから生じ、メモリの割り当ての間、特定の処理ドメインに対して自由なメモリのローカリティを考慮はしない。メモリ・ヒープは、あらゆるリクエストを行う処理ドメイン(例えばプロセッサ)に割り当てられる自由なメモリのリストであり得、次のリクエストを行うもの(例えばプロセッサ)は例えば次の自由なメモリ・アドレスをヒープから取得することができる。これは、自由なメモリがコンピューティング環境内の複数の異なるローカリティ・ドメインに関連付けられ得、次の自由なメモリが、メモリをリクエストしている現在のハードウェア・スレッド(またはプロセッサ・スレッド)から離れたローカリティ・ドメインに関連付けられることがある、NUMAコンピューティング環境内では問題となることがある。これは、複数のローカリティ・ドメインにわたっていくつかのプロセッサで実行しているマルチスレッドのアプリケーションで特に問題になることがある。
有利には、メモリ・プールまたはローカリティ・ドメインによって編成されるフリーリストが本明細書において開示され、メモリをリクエストするアプリケーション・スレッドに、そのスレッドにローカルなメモリを割り当てられるようにする。この点において、上で説明したように、コンピューティング環境のローカリティは様々なレベルで定義され得ることに留意されたい。また、ローカリティ・ドメインは、ボード・ローカル、プロセッサ・ローカル、スレッド・ローカルなどの、NUMAコンピューティング環境の複数のローカリティ・レベルの1つまたは複数において定義され得ることに留意されたい。本明細書において開示される1つまたは複数の実装形態において、単に例としてプロセッサ・ローカルの割り当てを議論する。
有利には、1つまたは複数の態様において、ローカリティ・ドメインベースのフリーリストと称される、ローカリティ・ドメインベースのメモリ・プールの作成および使用が本明細書において開示される。1つまたは複数の実装形態において、メモリ・ヒープ用のメモリが取得され、対応するローカリティ・ドメインベースのフリーリストにメモリの異なる部分を割り振ることにより分類される。メモリの部分がローカリティ・ドメインによって異なるフリーリストに分類されると、次にメモリが割り当てられた時、メモリはリクエストしているもの(例えば、リクエストを行うプロセッサ)のローカル・ドメインに対応するローカリティ・ドメインのフリーリストから取得することができる。以下で説明するように、メモリ割り当ての際、次の自由なメモリが任意選択でローカリティ親和性がなお存在するかどうかを確認するために再評価される。例えば仮想化された環境内で実行中のアプリケーションのスレッドの再割り振りによってなど、ローカリティ・ドメインが変わっていると、再評価されたメモリを別のローカリティ・ドメインベースのフリーリストに再割り当てすることができる。やはり、ガーベッジ・コレクションの圧縮の際、処理される次のメモリについてのローカリティ情報を、ローカリティベースの親和性が継続されることを確認するために任意選択で再評価することができる。
図24は、本発明の1つまたは複数の態様による、メモリ・マネージャ初期化処理の一実施形態を描写している。(本明細書において開示される処理は、アプリケーションのリクエストにおいて、プロセッサ、またはメモリの割り当ておよび解放(また、可能であればメモリをガーベッジ・コレクションすること)について責任のあるプロセッサに結合されたコンポーネントによって実施することができることに留意されたい。)図示されるように、アプリケーションのメモリ・ヒープのためのメモリの範囲がリクエストされて処理が始まる1502。メモリ範囲は、ページ、オブジェクト、アドレスなどのメモリ・ユニットに分割され、次の未処理のメモリ・ユニットが取得される1504。例えば上で議論したload_domain命令を使用して、現在のメモリ・ユニットについてのローカリティ・ドメイン(LD)が取得される1506。ローカリティ・ドメイン0からn(LD0・・・LDn)が定義されている場合、処理は現在のメモリ・ユニットについて取得されたローカリティ・ドメインが、ローカリティ・ドメイン0(LD0)にあるかどうかを判断し1508、「はい」の場合、メモリ・ユニットをローカリティ・ドメイン0(LD0)についてフリーリストに追加する1510。そうでなければ、処理は現在のメモリ・ユニットに関連付けられるローカリティ・ドメインが、ローカリティ・ドメイン1(LD1)にあるかどうかを判断し1512、そうであれば、メモリ・ユニットをローカリティ・ドメイン1についてフリーリストに追加する1514。そうでなければ、処理はローカリティ・ドメインn(LDn)まで続けられ1516、そこで処理はローカリティ・ドメインがローカリティ・ドメインnと一致すると仮定し、メモリ・ユニットをローカリティ・ドメインnについてフリーリストに追加する1518。ローカリティ・ドメインに追加される現在のメモリ・ユニットに基づいて、処理はさらなる未処理のメモリ・ユニットがあるかどうかを判断し1520、「はい」の場合、メモリ範囲から次の未処理のメモリ・ユニットを選択する。さらなる未処理のメモリ・ユニットがなくなってしまうと、この開始の処理は完了である1521。
1つまたは複数の実装形態において、単一の大きな隣接するメモリ範囲がオペレーティング・システムによってリターンされることがあり、コンピューティング環境の異なるローカリティ・ドメインに対応して様々なサブ領域(すなわち様々なサブメモリ領域)を取得することができる。この一実施形態が、図25で描写されている。図示されるように、メモリ・ヒープ1532ためのメモリの範囲がリクエストされて処理が始まる1530。これは範囲の開始のアドレスをリターンすることを含むことができる1534。命令domain_end、またはdomain_rangeを利用して、同一のローカリティ・ドメイン内にあるリターンされた範囲の領域のサイズを取得することができる1536。例えば上で議論したload_domain命令を使用して、この特定の領域についてのローカリティ・ドメインが特定される1538。領域およびローカリティ・ドメインが取得されると、処理は現在のメモリ領域が、ローカリティ・ドメイン0にあるかどうかを判断し1540、そうであれば領域(ADDRESS,END)をローカリティ・ドメイン0についてフリーリストに追加する1542。そうでなければ、処理は特定された領域がローカリティ・ドメイン1にあるかどうかを判断し1544、そうであれば、領域(ADDRESS,END)をローカリティ・ドメイン1についてフリーリストに追加する1546。この処理は、ローカリティ・ドメインn(LDn)まで続き1548、そこで領域(ADDRESS,END)がローカリティ・ドメインnについてフリーリストに追加される1550。領域が特定のフリーリストに追加されると、アドレスはちょうど処理されたメモリの領域の終了+1までインクリメントされ1552、処理はさらなる未処理のメモリ領域があるかどうかを判断する1554。そうであれば、処理は次のメモリ領域の終了を決定することにより、次の領域の広がりを決定するためにリターンする1536。そうでなければ、未処理のメモリが残っていないことに基づいて、処理は完了される1556。1つまたは複数の実施形態において、いくつかの大きな隣接する範囲がリターンされることがあり、その場合例えば図25の処理がメモリのそれぞれリターンされる範囲で実施されることに留意されたい。
1つまたは複数の他の実施形態において、例えば図24および図25に関連して上述したような処理を実施するのではなく、フリーリスト内に提示されるリクエストを満たすのに十分なメモリを作成するためにメモリ割り当ての間にこれらの方法の一部を実施することができる。
さらなる例として、図26は、メモリ・ユニットが上述のようなそれぞれのローカリティ・ドメインベースのフリーリストにいったん割り振られている、メモリ割り当てのリクエスト処理の一実施形態を描写している。図示されるように、メモリ割り当て1601はメモリ・ユニット(例えば、オブジェクト、ページなど)をリクエストすること1602、現在のプロセッサのスレッドのローカリティ・ドメインについてフリーリストにアクセスすること1604を含むことができる。任意選択で、リターンされたメモリ・ユニットを、現在のプロセッサ・スレッドのローカリティ・ドメイン内にまだあるのかどうかを判断するために、評価することができる1606。例えば、上述のload_domain命令を、フリーリストから取得されたメモリ・ユニットのために利用することができ、結果はローカルのスレッドのローカリティ・ドメインと比較される。別の実施形態において、これは上述のようなis_local_domain命令を使用して実施してもよい。メモリ・ユニットがもはや現在のプロセッサのローカリティ・ドメイン内にない場合、メモリ・ユニットをメモリ・ユニットが現在対応している別のローカリティ・ドメインのフリーリストに再割り当てすることができる1608。再割り当てされると、処理は現在のプロセッサ・スレッドの関連付けられるフリーリストから次のメモリ・ユニットを取得することができる。現在のローカリティ・ドメイン内のメモリ・ユニットが取得されると、メモリ・オブジェクトはコーラに割り当てられ、割り当てられたオブジェクトへのポインタをそのコーラにリターンすることができ1610、これで割り当て処理を完了する1612。この処理によると、既存のメモリ割り当てインターフェースにしたがってメモリの割り当てをリクエストしているプロセスまたはタスクのローカリティ・ドメインに、メモリのリクエストを割り当てることができ、それにより既存のソース・コードとの互換性を保証していることに留意されたい。別の実施形態において、ローカリティ・ドメインは本発明の割り当てインターフェースにしたがって割り当てリクエスト内で指定することができ、メモリ・ユニットは対応するローカリティ・ドメインベースのフリーリストから選択される。
1つまたは複数のさらなる態様によると、例えばガーベッジ・コレクション処理の間、特にメモリ・マネージャによるメモリ圧縮に関連して、メモリ・ユニットのローカリティを再評価または再確立することができる。図27はそのような再評価処理の一実施形態を描写している。メモリ圧縮はメモリ・ユニットの再割り当て1702で開始し1701、メモリ・ユニットが元々割り当てられていた仮想環境のローカリティ・ドメイン(例えば、元々割り振られたローカリティ・ドメインベースのフリーリスト)を特定する1704。(選択されたローカリティ・ドメイン内のページに対応する)メモリ・ユニット用のターゲット・ページが選択され1706、処理は、ターゲット・ページがこのローカリティ・ドメイン内にまだあるかどうかを判断する1708。「いいえ」の場合、ターゲット・ページを別のローカリティ・ドメイン、すなわちページが関連付けられる別のローカリティ・ドメインのフリーリストに再割り当てすることができる1710。この点で、load_domain命令をフリーリストから取得されたメモリ領域用に使用し、それをローカルのプロセッサの(またはスレッドの)ローカリティ・ドメインと比較することができることに留意されたい。別の実施形態において、これは上で議論したis_local_domain命令を使用して実施してもよい。ローカリティ・ドメインが確認されると、メモリ・ユニットをターゲット・ページに複製することができ1712、これで再配置されるメモリ・ユニットの処理を完了する1714。この処理は再配置されるメモリ・ユニット(例えば、オブジェクト)ごとに実施することができることに留意されたい。
1つまたは複数の他の実装形態において、メモリの圧縮処理の一部として、またはそれに関連付けて、メモリ領域の親和性は必ずしも元々のローカリティベースの割り当てに基づいている必要はない。むしろ、ローカリティ親和性はこのコンテキストにおいては例えばメモリ・ユニットへの繰り返されるアクセスに基づいていることができる。例えば、メモリ・ユニットが特定のローカリティ・ドメイン内で特定のプロセッサによって繰り返しアクセスされる場合、元々の割り当てが異なる処理ドメインに対するものだったとしても、繰り返されるアクセスを発生させる特定の処理ドメインにメモリ・ユニットを割り当てることが望ましいことがある。したがって、メモリ・ユニット(オブジェクト、バッファなど)を、範囲に繰り返しアクセスするそのプロセッサ(または処理ドメイン)のローカリティ・ドメイン内にあるページに移動させてもよい。この方法において、「ローカリティ」は実際の処理に基づく最も望ましいローカリティ親和性であり得る。したがって、何が元々ローカリティ割り振りだったかに関して問い合わせを行うよりも、特定のアプリケーションに関して異なる処理ドメインに対するメモリの親和性を最適化するために何が最良のローカリティかに関しての決定を行うことができる。また、上で述べたように、ローカリティは階層構造的であり得、メモリの割り振りは階層構造レベルのあらゆるレベル、またはいくつかのレベルにおいて実施することができることに留意されたい。したがって、一実施形態において、メモリの圧縮は、個々のプロセッサに関係なくブック・レベルに対してローカルにオブジェクトを配置することを選ぶことができる。
図28は本発明の1つまたは複数の態様による、メモリ解放に関連して実施され得る処理の一実施形態を描写している。この処理はそれぞれ解放されるページ、オブジェクト、アドレス範囲などのメモリ部分(またはエンティティ)ごとに実施することができる。メモリ解放は、直接メモリ解放リクエスト(例えばPOSIX標準仕様によるfree()コール)に応答して、またはメモリがガーベッジ・コレクションにより解放されることに応答して、のいずれかで実施することができる。解放されたメモリ部分が取得され1800、例えば上述のload_domain命令を使用して現在のメモリ部分についてのローカリティ・ドメインが突きとめられる1802。解放されるメモリ部分についてローカリティ・ドメインが取得されると、処理はメモリがローカリティ・ドメイン0内にあるかどうかを判断し1804、そうであれば、メモリをローカリティ・ドメイン0について対応するドメインのフリーリストに追加する1806。そうでなければ、処理はメモリがローカリティ・ドメイン1にあるかどうかを判断し1808、そうであれば、メモリをローカリティ・ドメイン1についてフリーリストに追加する1810。この処理は、メモリがローカリティ・ドメインn内にあると考えられるローカリティ・ドメインnまで続き1812、メモリはローカリティ・ドメインnについてフリーリストに追加され1814、これで解放されるメモリの処理が完了する1807。
本発明の1つまたは複数の態様はコンピュータ技術に密接に結びついており、コンピュータ内の処理を促進し、そのパフォーマンスを改善する。本発明の1つまたは複数の態様に関し、コンピューティング環境内で処理を促進するための一実施形態のさらなる詳細を、図29〜図30を参照して説明する。
コンピューティング環境内の処理機能に対するメモリのユニットのローカリティ・ドメイン情報を突きとめること(1902)と、メモリのユニットのローカリティ・ドメイン情報をデータ構造にキャッシュして、コンピューティング環境の処理機能に対するメモリのユニットの1つまたは複数の親和性評価に関連付けられるローカリティ・ドメイン情報の1つまたは複数の後続のルックアップを促進すること(1904)と、により、コンピューティング環境内の処理が促進される(1900)。
1つまたは複数の実施形態において、メモリのユニットは、仮想メモリ・ユニットであり、突きとめることは、仮想メモリ・ユニットを実メモリ・ユニットに変換することと、実メモリ・ユニットを使用してローカリティ・ドメイン情報を、コンピューティング環境の物理的なコンポーネントに関するシステム位置情報を含む設定配列からフェッチすることとを含む(1906)。一例において、キャッシュすることは、メモリのユニットのローカリティ・ドメイン情報を、コンピューティング環境のオペレーティング・システムまたはアプリケーションに関連付けられる設定配列キャッシュに、キャッシュすることを含む(1908)。別の例において、キャッシュすることは、メモリのユニットのローカリティ・ドメイン情報を、コンピューティング環境のトランスレーション・ルックアサイド・バッファにキャッシュすることを含む(1910)。
図30で図示されるように、1つまたは複数の実施形態において、コンピューティング環境はnon−uniform memory access(NUMA)コンピューティング環境であり、処理機能に対するメモリのユニットのローカリティ・ドメイン情報は、メモリのユニットがローカリティベースの親和性を有するNUMAコンピューティング環境の特定のドメインを特定する情報を含む(1912)。
1つまたは複数の実装形態において、処理は、メモリのユニットが、コンピューティング環境の複数の処理ドメインの処理ドメインに対するローカリティ親和性を有するかどうかを判断することをさらに含み、判断することは、コンピューティング環境内の処理ドメインのローカリティとの比較のためにメモリのユニットのローカリティ・ドメイン情報をデータ構造から検索することを含む(1914)。1つまたは複数の実施形態において、データ構造はコンピューティング環境のオペレーティング・システムまたはアプリケーションに関連付けられる設定配列キャッシュであるか、またはコンピューティング環境のトランスレーション・ルックアサイド・バッファである(1916)。1つまたは複数の例において処理することは、メモリのユニットのローカリティ・ドメイン情報が処理ドメインのローカリティに一致する場合、ローカル親和性を指定する指標を設定することをさらに含む(1918)。処理ドメインへのローカリティ親和性を有するメモリのユニットに基づいて、方法は処理ドメインによって、メモリのユニットに対してガーベッジ・コレクション処理を実施することをさらに含むことができる(1920)。
本発明の態様の思想から逸脱することなく、多くの変形形態が可能である。
エミュレーション環境を含むが、それに限定されない、コンピューティング環境の他のタイプもまた本発明の1つまたは複数の態様を組み入れ使用することができ、その例を、図31を参照して説明する。この例において、コンピューティング環境20は、例えば、ネイティブな中央処理装置(CPU)22、メモリ24、および1つもしくは複数の入力/出力デバイス、または例えば1つもしくは複数のバス28または他の接続あるいはその両方を介して互いに結合されるインターフェース26、あるいはその組合せを含む。例として、コンピューティング環境20は、インターナショナル・ビジネス・マシーンズ・コーポレーション(ニューヨーク州アーモンク)によって提供されるPowerPC(R)プロセッサもしくはpSeriesサーバ、またはインターナショナル・ビジネス・マシーンズ・コーポレーション、Intel、もしくは他の企業によって提供されるアーキテクチャに基づく他のマシンあるいはその組合せを含むことができる。
ネイティブな中央処理装置22は、その環境内で処理の間に使用される、1つもしくは複数の汎用レジスタ、または1つもしくは複数の特殊目的レジスタあるいはその両方などの、1つまたは複数のネイティブなレジスタ30を含む。これらのレジスタは、あらゆる特定の時点における環境の状態を表す情報を含む。
また、ネイティブな中央処理装置22はメモリ24に記憶される命令およびコードを実行する。特定の一例において、中央処理装置はメモリ24に記憶されるエミュレータ・コード32を実行する。このコードにより、あるアーキテクチャにおいて構成されたコンピューティング環境が、別のアーキテクチャをエミュレートすることができる。例えば、エミュレータ・コード32によって、PowerPC(R)プロセッサ、pSeriesサーバ、または他のサーバもしくはプロセッサなどの、z/Architecture(R)以外のアーキテクチャに基づくマシンが、z/Architecture(R)をエミュレートすること、およびz/Architecture(R)に基づいて開発されたソフトウェアおよび命令を実行することができる。
エミュレータ・コード32に関連するさらなる詳細を、図32Bを参照して説明する。メモリ24に記憶されるゲスト命令40は、ネイティブなCPU22のアーキテクチャ以外のアーキテクチャで実行されるよう開発されたソフトウェア命令(例えば機械命令に相関する)を含む。例えば、ゲスト命令40は、z/Architecture(R)のプロセッサで実行するように設計することができるが、その代わりに例えばIntel(R)プロセッサであり得るネイティブなCPU22上でエミュレートされる。一例において、エミュレータ・コード32は、メモリ24から1つまたは複数のゲスト命令40を取得するための命令フェッチ・ルーチン42を含み、任意選択で、取得された命令についてローカルのバッファリングを与える。また、取得されているゲスト命令のタイプを決定するため、およびゲスト命令を1つまたは複数の対応するネイティブな命令46に変換するための命令変換ルーチン44を含む。この変換は、例えばゲスト命令によって実施される関数を特定すること、およびその関数を実施するネイティブな命令を選ぶこと、を含む。
さらには、エミュレータ・コード32は、ネイティブな命令を実行させる、エミュレーション制御ルーチン48を含む。エミュレーション制御ルーチン48はネイティブなCPU22に、1つまたは複数の以前に取得されたゲスト命令をエミュレートするネイティブな命令のルーチンを実行させることができ、そのような実行の最後に、制御をその命令フェッチ・ルーチンに戻して、次のゲスト命令またはゲスト命令のグループを取得することをエミュレートする。ネイティブな命令46の実行は、データをメモリ24からのレジスタにロードすること、データをレジスタからメモリに格納し戻すこと、または変換ルーチンによって決定されるようにいくつかのタイプの算術もしくは論理演算を実施すること、を含むことができる。
それぞれのルーチンは、例えば、メモリに記憶されるソフトウェアに実装され、ネイティブな中央処理装置22によって実行される。他の例において、ルーチンまたは演算の1つまたは複数は、ファームウェア、ハードウェア、ソフトウェアまたはそのいくつかの組合せに実装される。エミュレートされたプロセッサのレジスタは、ネイティブなCPUのレジスタ30を使用して、またはメモリ24内の場所を使用して、エミュレートすることができる。一実施形態において、ゲスト命令40、ネイティブな命令46およびエミュレータ・コード32は、同一のメモリに存在することができるか、または異なるメモリ・デバイス間に分配されていてもよい。
本明細書で使用される場合、ファームウェアは例えばマイクロコードまたはプロセッサのミリコードを含む。例えば、より高次のマシン・コードの実装形態で使用されるハードウェアレベルの命令またはデータ構造あるいはその両方を含む。一実施形態において、例えば、典型的には信頼されたソフトウェアを含むマイクロコードとして提供されるプロプライエタリなコード、または基礎となるハードウェアに特有のマイクロコードを含み、オペレーティング・システムのシステム・ハードウェアへのアクセスを制御する。
取得され、変換され、実行されるゲスト命令40は、例えば、本明細書で説明される命令の1つであることができる。あるアーキテクチャ(例えば、z/Architecture(R))の1つのものである、命令は、メモリからフェッチされ、変換され、別のアーキテクチャ(例えば、PowerPC(R)、pSeries、Intel(R)など)のネイティブな命令46のシーケンスとして表現される。そして、これらのネイティブな命令は実行される。
1つまたは複数の態様は、クラウド・コンピューティングに関連することができる。
本開示はクラウド・コンピューティングについての詳細な説明を含むが、本明細書で具陳される教示の実装形態はクラウド・コンピューティング環境に限定されないことを、前もって理解されたい。むしろ本発明の実施形態は、現在既知のまたは後に開発されるあらゆる他のタイプのコンピューティング環境と併せて実装することができる。
クラウド・コンピューティングは、最小限の管理努力またはサービスのプロバイダとの対話で迅速にプロビジョニングおよびリリースされ得る、便利でオン・デマンドの構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、記憶装置、アプリケーション、仮想マシン、およびサービス)の共有されるプールへのネットワーク・アクセスを可能とするためのサービス提供のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含むことができる。
特徴は以下のとおりである:
オン・デマンド・セルフサービス:クラウド消費者は、サービスのプロバイダとの人間対話を要求することなく必要に応じて自動的に、サーバ時間およびネットワーク記憶装置などのコンピュータ機能を一方的にプロビジョニングすることができる。
幅広いネットワーク・アクセス:機能はネットワーク上で利用可能であり、異質なシンまたはシックなクライアントのプラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的なメカニズムを通じてアクセスされる。
リソース・プール:プロバイダのコンピューティング・リソースは、マルチテナントのモデルを使用する複数の消費者にサービス提供するためにプールされ、異なる物理的および仮想的なリソースが要求にしたがって動的に割り当ておよび再割り当てされる。消費者が提供されるリソースの正確な場所についての制御または情報を一般的に持たない点で、場所の独立性の意味があるが、より高次の抽象化(例えば、国、州、またはデータセンタ)において場所を特定できることもある。
迅速な拡張性:機能は迅速かつ拡張可能にプロビジョニングすることができ、いくつかの場合において、自動的に、素早くスケール・アウトされ、迅速にリリースされて素早くスケール・インされる。消費者にとって、プロビジョニングのために利用可能な機能は、しばしば無制限なようで、いつでもいくらでも購入することができる。
サービスが計測される:クラウド・システムは、サービスのタイプ(例えば、記憶装置、処理、帯域幅、およびアクティブなユーザ・アカウント)に適当な抽象化のいくつかのレベルにおいて計測機能を活用することによりリソースの使用を自動的に制御し、かつ最適化する。リソースの使用は監視され、制御され、かつ報告され得、利用されるサービスのプロバイダおよび消費者の両方にとって透明性を与えている。
サービス・モデルは以下のとおりである:
ソフトウェアを提供するサービス(Software as a Service(SaaS)):消費者に提供される機能は、クラウド・インフラストラクチャで実行するプロバイダのアプリケーションを使用する。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インターフェース(例えば、ウェブ・ベースの電子メール)を通じて様々なクライアント・デバイスからアクセス可能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、記憶装置、またはさらには個々のアプリケーション機能を含む基礎となるクラウド・インフラストラクチャを管理または制御することはなく、あり得る例外として限定されたユーザ固有アプリケーションの構成設定が可能である。
プラットフォームを提供するサービス(Platform as a Service (PaaS)):消費者に提供される機能は、プロバイダによってサポートされるプログラミング言語およびツールを使用した消費者作成の、または取得されたアプリケーション作成のクラウド・インフラストラクチャに展開する。消費者は、ネットワーク、サーバ、オペレーティング・システム、または記憶装置を含む基礎となるクラウド・インフラストラクチャの管理または制御をしないが、展開されたアプリケーション、および場合によっては環境構成をホストするアプリケーションについての制御を有する。
インフラストラクチャを提供するサービス(Infrastructure as a Service(IaaS)):消費者に提供される機能は、消費者がオペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを展開および実行することができる処理、記憶装置、ネットワーク、および他の基本的なコンピューティング・リソースをプロビジョニングする。消費者は、基礎となるクラウド・インフラストラクチャの管理または制御をしないが、オペレーティング・システム、記憶装置、展開されたアプリケーション、および場合によっては選択ネットワーク・コンポーネント(例えば、ホスト・ファイヤウォール)の限定された制御についての制御を有する。
展開モデルは以下のとおりである:
プライベート・クラウド:クラウド・インフラストラクチャはある組織のためだけに運用される。その組織またはサード・パーティによって管理され得、オンプレミスまたはオフプレミスで存在することができる。
コミュニティ・クラウド:クラウド・インフラストラクチャは、いくつかの組織によって共有され、共有される事案(例えば、ミッション、セキュリティ要件、ポリシ、およびコンプライアンス懸案事項)を有する特定のコミュニティをサポートする。その組織またはサード・パーティによって管理され得、オンプレミスまたはオフプレミスで存在することができる。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆または大規模な業界団体に対して利用可能とされ、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、一意なエンティティのままである2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)を組合せたものであるが、データおよびアプリケーションのポータビリティを可能にする標準化された、またはプロプライエタリな技術(例えば、クラウド間でロードバランシングを行うためのクラウド・バースト)によって結合される。
クラウド・コンピューティング環境は、無国籍、低い結合性、モジュール性、および意味論的な相互運用性に集中するサービス指向である。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
次に図33を参照すると、例示的なクラウド・コンピューティング環境50が描写されている。示されるように、クラウド・コンピューティング環境50は、例えば、携帯情報端末(PDA)または携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車コンピュータ・システム54Nあるいはその組合せなどのクラウドの消費者によって使用されるローカルのコンピューティング・デバイスと通信することができる1つまたは複数のクラウド・コンピューティング・ノード10を備える。ノード10は互いに通信することができる。本明細書において上述のようなプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウドまたはその組合せなどの1つまたは複数のネットワークにおいて、それらは物理的または仮想的にグループ化することができる(図示せず)。これにより、クラウド・コンピューティング環境50は、クラウドの消費者がローカルのコンピューティング・デバイスでリソースを維持する必要のない、インフラストラクチャ、プラットフォーム、またはソフトウェアあるいはその組合せをサービスとして与えることができる。図33に示されるコンピューティング・デバイス54A〜Nのタイプは、図示のみを意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、あらゆるタイプのネットワーク上またはネットワーク・アドレス可能接続で(例えば、ウェブ・ブラウザを使用して)あるいはその両方であらゆるタイプのコンピュータ化されたデバイスと通信することができることが理解されよう。
図34を参照すると、クラウド・コンピューティング環境50(図33)によって提供される機能的な抽象化レイヤのセットが示されている。図34に示されるコンポーネント、レイヤ、および機能は、図示のみを意図されており、本発明の実施形態はそれに限定されないことがまず理解されるべきである。描写されるように、以下のレイヤおよび対応する機能が提供される。
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、以下が挙げられる:メインフレーム61、縮小命令セット・コンピュータ(Reduced Instruction Set Computer(RISC))アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク・コンポーネント66。いくつかの実施形態において、ソフトウェア・コンポーネントはネットワーク・アプリケーション・サーバ・ソフトウェア67、およびデータベース・ソフトウェア68を含む。
仮想化レイヤ70は、仮想エンティティの以下の例を提供することができる抽象化レイヤを与える:仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、および仮想クライアント75。
一例において、管理レイヤ80は以下で説明される機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実施するために利用されるコンピューティング・リソースおよび他のリソースの動的な調達を提供する。計測および課金82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡、およびこれらのリソースの消費についての課金または請求書発行を提供する。一例において、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド消費者およびタスクについての識別情報の検証、ならびにデータおよび他のリソースについての保護を提供する。ユーザ・ポータル83はクラウド・コンピューティング環境へのアクセスを消費者およびシステム管理者に提供する。サービス水準管理84は、要求されるサービス水準が満たされるように、クラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス水準合意(SLA)計画および遂行85は、将来的な要求がSLAにしたがって予期されるクラウド・コンピューティング・リソースについての事前申し合わせ、およびクラウド・コンピューティング・リソースの調達を提供する。
ワークロード・レイヤ90はクラウド・コンピューティング環境が利用され得る機能性の例を提供する。このレイヤからもたらされ得るワークロードおよび機能の例として以下が挙げられる:マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想授業教育配信93、データ分析処理94、トランザクション処理95、およびメモリ親和性またはガーベッジ・コレクション処理あるいはその両方96。
本発明は、統合のあらゆる可能な技術的詳細レベルにおける、システム、方法、またはコンピュータ・プログラム製品あるいはその組合せであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含むことができる。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および記憶することができる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶装置デバイス、磁気記憶装置デバイス、光学記憶装置デバイス、電磁気記憶装置デバイス、半導体記憶装置デバイスまたは前述のあらゆる適切な組合せであってもよいが、それに限定はしない。コンピュータ可読記憶媒体のより具体的な例の非網羅的な列挙としては、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD−ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、命令を記録されて有するパンチカードまたは溝に刻まれた構造などの機械的にエンコードされたデバイス、および前述のあらゆる適切な組合せ、を含む。本明細書において使用される場合、コンピュータ可読記憶媒体は、電波または他の自由に伝搬する電磁波、導波路もしくは他の送信媒体を介して伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を介して送信される電気的信号など、一過性の信号そのものであると解釈されてはならない。
本明細書において説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、個別のコンピューティング/処理デバイスに、あるいは、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはその組合せなどのネットワークを介して、外部のコンピュータもしくは外部の記憶装置デバイスに、ダウンロードすることができる。ネットワークは、銅の送信ケーブル、光学送信ファイバ、無線送信、ルータ、ファイヤウォール、スイッチ、ゲートウェイ・コンピュータまたはエッジ・サーバあるいはその組合せを備えることができる。それぞれのコンピューティング/処理デバイスのネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、個別のコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいはスモールトーク(R)、C++などのオブジェクト指向プログラミング言語、および“C”プログラミング言語などの手続き型プログラミング言語もしくは類似するプログラミング言語、を含む1つまたは複数のプログラミング言語のあらゆる組合せで記述された、ソース・コードまたはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、すべてユーザのコンピュータ上で、一部はユーザのコンピュータ上でスタンドアロンのソフトウェア・パッケージとして、一部はユーザのコンピュータ上かつ一部は遠隔のコンピュータ上で、またはすべて遠隔のコンピュータ上もしくはサーバ上で、実行することができる。後者のシナリオにおいて、遠隔のコンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含むあらゆるタイプのネットワークを介してユーザのコンピュータに接続することができ、または接続は外部のコンピュータ(例えば、インターネット・サービス・プロバイダを使用するインターネットを介して)に対してなされてもよい。一部の実施形態において、例えば、プログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して電子回路を個別化することができる。
本発明の態様は本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照しながら本明細書において説明される。フローチャート図またはブロック図あるいはその両方のそれぞれのブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装され得ることが理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/作用を実装する手段を作成すべく、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を作るものであってよい。これらのコンピュータ可読プログラム命令はまた、命令を記憶して有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/作用の態様を実装するための命令を含む製造物品を備えるべく、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組合せに特定のやり方で機能するように指示することができるコンピュータ可読記憶媒体に記憶されてもよい。
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル装置、または他のデバイスで実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能/作用を実装するべく、コンピュータ実装処理を作るために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作可能なステップを実施させるものであってもよい。
図面中のフローチャートおよびブロック図は、本発明の様々な実施形態にしたがって、システム、方法、およびコンピュータ・プログラム製品の可能な実装形態の、アーキテクチャ、機能性、および動作を図示している。この点において、フローチャートまたはブロック図のそれぞれのブロックは、指定される論理機能を実装するための1つまたは複数の実行可能な命令を含む、命令のモジュール、セグメント、または部分を表現することができる。一部の代替的な実装形態において、ブロックにおいて示した機能は図面で示した順とは異なって発生してもよい。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行されてもよく、またはブロックは関与する機能性によっては、時に逆の順で実行されてもよい。ブロック図またはフローチャート図あるいはその両方のそれぞれのブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せは、指定される機能もしくは作用を実施する、または特殊目的ハードウェアおよびコンピュータ命令の組合せを実行する、特殊目的ハードウェア・ベースのシステムによって実装され得ることにも留意されたい。
上記に加え、1つまたは複数の態様が、顧客環境の管理を提供するサービス・プロバイダによって提供され得、提案され得、展開され得、管理され得、サービスなどされ得る。例えば、サービス・プロバイダは、1つまたは複数の顧客に1つまたは複数の態様を実施するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方を、作成すること、維持すること、サポートすることなどができる。その見返りに、サービス・プロバイダは、例として購読または料金契約あるいはその両方の下で顧客から支払いを受け取ることができる。追加的に、または代替的に、サービス・プロバイダは、1つまたは複数のサード・パーティへの広告コンテンツの販売から支払いを受け取ることができる。
一態様において、アプリケーションは1つまたは複数の実施形態を実施するために展開することができる。一例として、アプリケーションを展開することは、1つまたは複数の実施形態を実施するよう動作可能なコンピュータ・インフラストラクチャを提供することを含む。
さらなる態様として、コンピューティング・インフラストラクチャを、コンピュータ可読コードをコンピューティング・システムに統合することを含んで展開することができ、そこではコードは、コンピューティング・システムと組合せて1つまたは複数の実施形態を実施することができる。
なおさらなる態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含むコンピューティング・インフラストラクチャを統合するためのプロセスが提供され得る。コンピュータ・システムは、コンピュータ可読媒体を備え、そこではコンピュータ媒体は1つまたは複数の実施形態を含む。コードは、コンピュータ・システムと組合せて1つまたは複数の実施形態を実施することができる。
様々な実施形態を上で説明したが、これらはただの例である。例えば、他のアーキテクチャのコンピューティング環境は、1つまたは複数の実施形態を組み込んで使用するために使用することができる。さらには、様々なメモリまたはキャッシュの階層構造あるいはその両方を使用することができる。多くの変形形態が可能である。
さらには、他のタイプのコンピューティング環境が有益であり得、使用することができる。例として、プログラム・コードを記憶することまたは実行することあるいはその両方に適切なデータ処理システムが使用可能であり、直接的にまたは間接的にシステム・バスを介してメモリ要素に結合される少なくとも2つのプロセッサを含む。メモリ要素は、例えば、プログラム・コードの実際の実行の間に利用されるローカル・メモリ、バルク・ストレージ、および実行中にコードがバルク・ストレージから検索されなければならない回数を減らすために、少なくともいくつかのプログラム・コードの一時的な記憶装置を提供するキャッシュ・メモリを含む。
入力/出力またはI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、および他のメモリ媒体などを含むがそれに限定されない)は、直接的または仲介的なI/Oコントローラを通じてのいずれかで、システムに結合することができる。データ処理システムが仲介的なプライベートまたはパブリックなネットワークを通じて他のデータ処理システムまたはリモートのプリンタもしくは記憶装置デバイスに結合することができるようにするために、ネットワーク・アダプタをシステムに結合することもできる。利用可能なタイプのネットワーク・アダプタとしてはモデム、ケーブル・モデム、およびイーサネット(R)・カードなどがある。
本明細書で使用される用語は、特定の実施形態を説明するためだけのものであり、限定的であることを意図されていない。本明細書で使用される場合、コンテキストが明確にそうではないと指示しない限り、単数形「1つの(a)」、「1つの(an)」および「その(the)」は複数形を同様に含むように意図されている。用語「を含む(comprise)」または「を含む(comprising)」あるいはその両方は、本明細書で使用される場合、述べられた特徴、整数、ステップ、動作、要素、またはコンポーネントあるいはその組合せの存在を特定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネントまたはそのグループあるいはその組合せの、存在または追加を排除しないことが、さらに理解されよう。
以下の特許請求の範囲における、すべての機能付き手段(ミーンズ・プラス・ファンクション)または機能付き工程(ステップ・プラス・ファンクション)の要素の対応する構造、材料、作用、および等価物は、もしあれば、具体的に特許請求されるような他の特許請求される要素と組合せて機能を実施するために、あらゆる構造、材料、または作用を含むことを意図されている。例示および説明を目的として、1つまたは複数の実施形態の説明を提示してきたが、網羅的であること、または開示された形態に限定することは意図されていない。多くの修正形態および変形形態が当業者にとって明らかとなろう。実施形態は、様々な態様および実践的な用途を最良に説明するために選ばれ説明されたものであり、企図される特定の使用に適した様々な修正形態を伴う様々な実施形態を、当業者の他の者に理解させることができる。

Claims (20)

  1. コンピューティング環境内の処理を促進するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は
    処理回路によって可読であり、
    前記コンピューティング環境内の処理機能に対するメモリのユニットのローカリティ・ドメイン情報を突きとめることと、
    前記メモリのユニットの前記ローカリティ・ドメイン情報をデータ構造にキャッシュして、前記コンピューティング環境の前記処理機能に対する前記メモリのユニットの1つまたは複数の親和性評価に関連付けられる前記ローカリティ・ドメイン情報の1つまたは複数の後続のルックアップを促進することと
    を含む方法を実施するための命令を記憶する、
    コンピュータ可読記憶媒体
    を備える、コンピュータ・プログラム製品。
  2. 前記メモリのユニットは、仮想メモリ・ユニットであり、前記突きとめることは、前記仮想メモリ・ユニットを実メモリ・ユニットに変換することと、前記実メモリ・ユニットを使用して前記ローカリティ・ドメイン情報を、前記コンピューティング環境の物理的なコンポーネントに関するシステム位置情報を含む設定配列からフェッチすることとを含む、請求項1に記載のコンピュータ・プログラム製品。
  3. 前記キャッシュすることは、前記メモリのユニットの前記ローカリティ・ドメイン情報を、前記コンピューティング環境のオペレーティング・システムまたはアプリケーションに関連付けられる設定配列キャッシュに、キャッシュすることを含む、請求項1に記載のコンピュータ・プログラム製品。
  4. 前記キャッシュすることは、前記メモリのユニットの前記ローカリティ・ドメイン情報を、前記コンピューティング環境のトランスレーション・ルックアサイド・バッファにキャッシュすることを含む、請求項1に記載のコンピュータ・プログラム製品。
  5. 前記コンピューティング環境はnon−uniform memory access(NUMA)コンピューティング環境であり、前記処理機能に対する前記メモリのユニットの前記ローカリティ・ドメイン情報は、前記メモリのユニットがローカリティベースの親和性を有する前記NUMAコンピューティング環境の特定の処理ドメインを特定する情報を含む、請求項1に記載のコンピュータ・プログラム製品。
  6. 前記メモリのユニットが、前記コンピューティング環境の複数の処理ドメインの処理ドメインに対するローカリティ親和性を有するかどうかを判断することをさらに含み、前記判断することは、前記コンピューティング環境内の前記処理ドメインのローカリティとの比較のために前記メモリのユニットの前記ローカリティ・ドメイン情報を前記データ構造から検索することを含む、請求項1に記載のコンピュータ・プログラム製品。
  7. 前記データ構造は前記コンピューティング環境のオペレーティング・システムまたはアプリケーションに関連付けられる設定配列キャッシュのうちの1つ、または前記コンピューティング環境のトランスレーション・ルックアサイド・バッファである、請求項6に記載のコンピュータ・プログラム製品。
  8. 前記メモリのユニットの前記ローカリティ・ドメイン情報が前記処理ドメインの前記ローカリティに一致する場合、ローカル親和性を指定する指標を設定することをさらに含む、請求項6に記載のコンピュータ・プログラム製品。
  9. 前記メモリのユニットが前記処理ドメインへのローカリティ親和性を有することに基づいて、前記処理ドメインによって前記メモリのユニットにガーベッジ・コレクション処理を実施することをさらに含む、請求項6に記載のコンピュータ・プログラム製品。
  10. コンピューティング環境内の処理を促進するためのコンピュータ・システムであって、前記コンピュータ・システムは
    メモリと、
    メモリと通信しているプロセッサと
    を備え、前記コンピュータ・システムは
    前記コンピューティング環境内の処理機能に対するメモリのユニットのローカリティ・ドメイン情報を突きとめることと、
    前記メモリのユニットの前記ローカリティ・ドメイン情報をデータ構造にキャッシュして、前記コンピューティング環境の前記処理機能に対する前記メモリのユニットの1つまたは複数の親和性評価に関連付けられる前記ローカリティ・ドメイン情報の1つまたは複数の後続のルックアップを促進することと
    を含む方法を実施するように構成される、コンピュータ・システム。
  11. 前記メモリのユニットは、仮想メモリ・ユニットであり、前記突きとめることは、前記仮想メモリ・ユニットを実メモリ・ユニットに変換することと、前記実メモリ・ユニットを使用して前記ローカリティ・ドメイン情報を、前記コンピューティング環境の物理的なコンポーネントに関するシステム位置情報を含む設定配列からフェッチすることとを含む、請求項10に記載のコンピュータ・システム。
  12. 前記キャッシュすることは、前記メモリのユニットの前記ローカリティ・ドメイン情報を、前記コンピューティング環境のオペレーティング・システムまたはアプリケーションに関連付けられる設定配列キャッシュに、キャッシュすることを含む、請求項10に記載のコンピュータ・システム。
  13. 前記キャッシュすることは、前記メモリのユニットの前記ローカリティ・ドメイン情報を、前記コンピューティング環境のトランスレーション・ルックアサイド・バッファにキャッシュすることを含む、請求項10に記載のコンピュータ・システム。
  14. 前記コンピューティング環境はnon−uniform memory access(NUMA)コンピューティング環境であり、前記処理機能に対する前記メモリのユニットの前記ローカリティ・ドメイン情報は、前記メモリのユニットがローカリティベースの親和性を有する前記NUMAコンピューティング環境の特定の処理ドメインを特定する情報を含む、請求項10に記載のコンピュータ・システム。
  15. 前記メモリのユニットが、前記コンピューティング環境の複数の処理ドメインの処理ドメインに対するローカリティ親和性を有するかどうかを判断することをさらに含み、前記判断することは、前記コンピューティング環境内の前記処理ドメインのローカリティとの比較のために前記メモリのユニットの前記ローカリティ・ドメイン情報を前記データ構造から検索することを含む、請求項10に記載のコンピュータ・システム。
  16. 前記メモリのユニットが前記処理ドメインへのローカリティ親和性を有することに基づいて、前記処理ドメインによって前記メモリのユニットにガーベッジ・コレクション処理を実施することをさらに含む、請求項15に記載のコンピュータ・システム。
  17. コンピューティング環境内で処理を促進するためのコンピュータ実装方法であって、前記コンピュータ実装方法は、
    前記コンピューティング環境内の処理機能に対するメモリのユニットのローカリティ・ドメイン情報を突きとめることと、
    前記メモリのユニットの前記ローカリティ・ドメイン情報をデータ構造にキャッシュして、前記コンピューティング環境の前記処理機能に対する前記メモリのユニットの1つまたは複数の親和性評価に関連付けられる前記ローカリティ・ドメイン情報の1つまたは複数の後続のルックアップを促進することと
    を含む、コンピュータ実装方法。
  18. 前記コンピューティング環境はnon−uniform memory access(NUMA)コンピューティング環境であり、前記処理機能に対する前記メモリのユニットの前記ローカリティ・ドメイン情報は、前記メモリのユニットがローカリティベースの親和性を有する前記NUMAコンピューティング環境の特定の処理ドメインを特定する情報を含む、請求項17に記載のコンピュータ実装方法。
  19. 前記メモリのユニットが、前記コンピューティング環境の複数の処理ドメインの処理ドメインに対するローカリティ親和性を有するかどうかを判断することをさらに含み、前記判断することは、前記コンピューティング環境内の前記処理ドメインのローカリティとの比較のために前記メモリのユニットの前記ローカリティ・ドメイン情報を前記データ構造から検索することを含む、請求項17に記載のコンピュータ実装方法。
  20. 前記メモリのユニットが前記処理ドメインへのローカリティ親和性を有することに基づいて、前記処理ドメインによって前記メモリのユニットにガーベッジ・コレクション処理を実施することをさらに含む、請求項19に記載のコンピュータ実装方法。

JP2020524789A 2017-11-09 2018-10-29 コンピュータ・プログラムおよびコンピュータ・システム Active JP7486419B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/807,949 2017-11-09
US15/807,949 US10445249B2 (en) 2017-11-09 2017-11-09 Facilitating access to memory locality domain information
PCT/IB2018/058444 WO2019092548A1 (en) 2017-11-09 2018-10-29 Facilitating access to memory locality domain information

Publications (2)

Publication Number Publication Date
JP2021502637A true JP2021502637A (ja) 2021-01-28
JP7486419B2 JP7486419B2 (ja) 2024-05-17

Family

ID=66328520

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020524789A Active JP7486419B2 (ja) 2017-11-09 2018-10-29 コンピュータ・プログラムおよびコンピュータ・システム

Country Status (6)

Country Link
US (2) US10445249B2 (ja)
JP (1) JP7486419B2 (ja)
CN (1) CN111316248B (ja)
DE (1) DE112018005404T5 (ja)
GB (1) GB2581924B (ja)
WO (1) WO2019092548A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10552309B2 (en) 2017-11-09 2020-02-04 International Business Machines Corporation Locality domain-based memory pools for virtualized computing environment
US10445249B2 (en) 2017-11-09 2019-10-15 International Business Machines Corporation Facilitating access to memory locality domain information
US10997083B2 (en) * 2018-09-04 2021-05-04 Arm Limited Parallel page table entry access when performing address translations
US11544113B2 (en) * 2019-11-20 2023-01-03 Google Llc Task scheduling for machine-learning workloads
US11467937B2 (en) * 2020-06-26 2022-10-11 Advanced Micro Devices, Inc. Configuring cache policies for a cache based on combined cache policy testing
US11687449B2 (en) * 2020-09-10 2023-06-27 International Business Machines Corporation Concurrent marking garbage collection
KR20220049215A (ko) * 2020-10-14 2022-04-21 삼성전자주식회사 메모리 장치, 호스트 장치 및 이들을 포함하는 메모리 시스템
US11995342B2 (en) * 2021-12-22 2024-05-28 Micron Technology, Inc. Host initiated garbage collection

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05233458A (ja) * 1991-09-30 1993-09-10 Apple Computer Inc コンピュータシステムのメモリ管理装置
US20130159638A1 (en) * 2011-12-20 2013-06-20 Fujitsu Limited Information processing apparatus and memory access method
US20150370732A1 (en) * 2014-06-18 2015-12-24 Fujitsu Limited Information processing apparatus, input and output control device, and method of controlling information processing apparatus

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6363410B1 (en) 1994-12-13 2002-03-26 Microsoft Corporation Method and system for threaded resource allocation and reclamation
US5784697A (en) 1996-03-27 1998-07-21 International Business Machines Corporation Process assignment by nodal affinity in a myultiprocessor system having non-uniform memory access storage architecture
US6289424B1 (en) 1997-09-19 2001-09-11 Silicon Graphics, Inc. Method, system and computer program product for managing memory in a non-uniform memory access system
US6546546B1 (en) 1999-05-19 2003-04-08 International Business Machines Corporation Integrating operating systems and run-time systems
US6865585B1 (en) 2000-07-31 2005-03-08 Microsoft Corporation Method and system for multiprocessor garbage collection
US6615322B2 (en) 2001-06-21 2003-09-02 International Business Machines Corporation Two-stage request protocol for accessing remote memory data in a NUMA data processing system
US7389506B1 (en) 2002-07-30 2008-06-17 Unisys Corporation Selecting processor configuration based on thread usage in a multiprocessor system
US7185167B2 (en) 2003-06-06 2007-02-27 Microsoft Corporation Heap allocation
US7380039B2 (en) 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US7149866B2 (en) 2004-06-04 2006-12-12 International Business Machines Corporation Free item distribution among multiple free lists during garbage collection for more efficient object allocation
US7290112B2 (en) * 2004-09-30 2007-10-30 International Business Machines Corporation System and method for virtualization of processor resources
US7383396B2 (en) 2005-05-12 2008-06-03 International Business Machines Corporation Method and apparatus for monitoring processes in a non-uniform memory access (NUMA) computer system
US7962707B2 (en) 2005-07-06 2011-06-14 Honeywell International Inc. Apparatus and method for deterministic garbage collection of a heap memory
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
US7512745B2 (en) 2006-04-28 2009-03-31 International Business Machines Corporation Method for garbage collection in heterogeneous multiprocessor systems
JP5233458B2 (ja) 2008-07-15 2013-07-10 株式会社ニコン 画像編集装置及び画像編集プログラム
US8245008B2 (en) 2009-02-18 2012-08-14 Advanced Micro Devices, Inc. System and method for NUMA-aware heap memory management
US8312219B2 (en) 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
CN102460400B (zh) 2009-06-29 2014-09-24 惠普开发有限公司 基于管理程序的本地和远程虚拟内存页面管理
US8200718B2 (en) 2009-07-02 2012-06-12 Roberts Michael L Parallelized, incremental garbage collector
US8943108B2 (en) 2009-12-23 2015-01-27 International Business Machines Corporation Hardware off-load memory garbage collection acceleration
US8621150B2 (en) 2010-04-09 2013-12-31 International Business Machines Corporation Data placement optimization using data context collected during garbage collection
US8468289B2 (en) 2010-10-22 2013-06-18 International Business Machines Corporation Dynamic memory affinity reallocation after partition migration
US8797332B2 (en) 2010-12-15 2014-08-05 Ati Technologies Ulc Device discovery and topology reporting in a combined CPU/GPU architecture system
US11099982B2 (en) 2011-03-31 2021-08-24 Oracle International Corporation NUMA-aware garbage collection
CN104040500B (zh) 2011-11-15 2018-03-30 英特尔公司 基于线程相似性的调度线程执行
US9418003B2 (en) 2012-10-10 2016-08-16 Salesforce.Com, Inc. System, method and computer program product for conditionally performing garbage collection
US20140115291A1 (en) * 2012-10-19 2014-04-24 Advanced Micro Devices, Inc. Numa optimization for garbage collection of multi-threaded applications
US10061622B2 (en) 2013-02-26 2018-08-28 Red Hat Israel, Ltd. Updating memory topology information for virtual machines
US10114662B2 (en) 2013-02-26 2018-10-30 Red Hat Israel, Ltd. Updating processor topology information for virtual machines
US9342342B2 (en) 2013-03-15 2016-05-17 International Business Machines Corporation Refreshing memory topology in virtual machine operating systems
US10007525B2 (en) 2014-10-24 2018-06-26 International Business Machines Corporation Freelist based global completion table having both thread-specific and global completion table identifiers
US10142231B2 (en) 2016-03-31 2018-11-27 Intel Corporation Technologies for network I/O access
CN106293881B (zh) 2016-08-11 2020-02-07 上海交通大学 一种基于非一致性i/o访问构架的性能监控器及其监控方法
US10223282B2 (en) 2017-05-23 2019-03-05 International Business Machines Corporation Memory affinity management
US10445249B2 (en) 2017-11-09 2019-10-15 International Business Machines Corporation Facilitating access to memory locality domain information
US10552309B2 (en) 2017-11-09 2020-02-04 International Business Machines Corporation Locality domain-based memory pools for virtualized computing environment
US10691590B2 (en) 2017-11-09 2020-06-23 International Business Machines Corporation Affinity domain-based garbage collection

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05233458A (ja) * 1991-09-30 1993-09-10 Apple Computer Inc コンピュータシステムのメモリ管理装置
US5581722A (en) * 1991-09-30 1996-12-03 Apple Computer, Inc. Memory management unit for managing address operations corresponding to domains using environmental control
US20130159638A1 (en) * 2011-12-20 2013-06-20 Fujitsu Limited Information processing apparatus and memory access method
JP2013130976A (ja) * 2011-12-20 2013-07-04 Fujitsu Ltd 情報処理装置およびメモリアクセス方法
US20150370732A1 (en) * 2014-06-18 2015-12-24 Fujitsu Limited Information processing apparatus, input and output control device, and method of controlling information processing apparatus
JP2016004461A (ja) * 2014-06-18 2016-01-12 富士通株式会社 情報処理装置、入出力制御装置および情報処理装置の制御方法

Also Published As

Publication number Publication date
US11119942B2 (en) 2021-09-14
CN111316248B (zh) 2024-04-26
US20190138219A1 (en) 2019-05-09
CN111316248A (zh) 2020-06-19
US20190286572A1 (en) 2019-09-19
WO2019092548A1 (en) 2019-05-16
GB2581924A (en) 2020-09-02
JP7486419B2 (ja) 2024-05-17
US10445249B2 (en) 2019-10-15
GB202007647D0 (en) 2020-07-08
DE112018005404T5 (de) 2020-06-25
GB2581924B (en) 2022-05-04

Similar Documents

Publication Publication Date Title
JP7486419B2 (ja) コンピュータ・プログラムおよびコンピュータ・システム
US10241924B2 (en) Reducing over-purging of structures associated with address translation using an array of tags
US11016907B2 (en) Increasing the scope of local purges of structures associated with address translation
US10445248B2 (en) Host page management using active guest page table indicators
US10180910B2 (en) Host-based resetting of active use of guest page table indicators
US11132290B2 (en) Locality domain-based memory pools for virtualized computing environment
US10515020B2 (en) Marking storage keys to indicate memory used to back address translation structures
US10802986B2 (en) Marking to indicate memory used to back address translation structures
US10169243B2 (en) Reducing over-purging of structures associated with address translation
US10162764B2 (en) Marking page table/page status table entries to indicate memory used to back address translation structures
US20180018283A1 (en) Selective purging of guest entries of structures associated with address translation
US20180018277A1 (en) Managing memory used to back address translation structures
US20190196835A1 (en) Selective suppression of instruction cache-related directory access
US11194580B2 (en) Selective suppression of instruction translation lookaside buffer (ITLB) access
US10691590B2 (en) Affinity domain-based garbage collection
TWI665605B (zh) 用於暫時抑制受約束儲存器運算元請求之處理之電腦程式產品、電腦實施方法及電腦系統

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200612

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20200930

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210323

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220412

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220502

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220829

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20230110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230421

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20230421

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20230509

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20230804

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240311

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20240423

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240507

R150 Certificate of patent or registration of utility model

Ref document number: 7486419

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150