JP2018524696A - 特殊命令を使用しないガベージ・コレクション - Google Patents

特殊命令を使用しないガベージ・コレクション Download PDF

Info

Publication number
JP2018524696A
JP2018524696A JP2017564432A JP2017564432A JP2018524696A JP 2018524696 A JP2018524696 A JP 2018524696A JP 2017564432 A JP2017564432 A JP 2017564432A JP 2017564432 A JP2017564432 A JP 2017564432A JP 2018524696 A JP2018524696 A JP 2018524696A
Authority
JP
Japan
Prior art keywords
pointer
object pointer
memory
handler
address
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
JP2017564432A
Other languages
English (en)
Other versions
JP6697486B2 (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
Priority claimed from US14/755,748 external-priority patent/US10176093B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2018524696A publication Critical patent/JP2018524696A/ja
Application granted granted Critical
Publication of JP6697486B2 publication Critical patent/JP6697486B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】 コンピューティング環境内のガベージ・コレクションを容易にするためのコンピュータ・プログラム、システム、及びコンピュータ実施方法を提供する。
【解決手段】 ガベージ・コレクションの処理が容易にされる。コンピューティング環境のプロセッサ内で実行されるハンドラにより、ロード命令の実行と、ロードされるオブジェクト・ポインタのアドレスがポインタ・ストレージ領域内に位置し、オブジェクト・ポインタは、ガベージ・コレクションが行われるメモリの選択された部分内の位置を示すと判断することとに基づいて、処理の制御を取得する。ハンドラは、ポインタ・ストレージ領域からオブジェクト・ポインタを取得し、オブジェクト・ポインタが修正されるべきかどうかを判断する。オブジェクト・ポインタが修正されるべきである場合、ハンドラは、オブジェクト・ポインタを修正する。次に、修正されたオブジェクト・ポインタを選択された位置に格納することができる。
【選択図】 図8

Description

1つ又は複数の態様は、一般に、コンピューティング環境内の処理に関し、具体的には、コンピューティング環境内のガベージ・コレクション(garbage collection)処理に関する。
ガベージ・コレクションは、もはや参照されないメモリ内のオブジェクトを特定し、それらのオブジェクトを解放する自動メモリ管理プロセスである。種々のサイズのメモリ・オブジェクトが割り当てられ、後で解放されると、それらが格納されるメモリは、ますます断片化されるようになる。メモリの大きな空き領域はほとんどなくなり、メモリ・サイズを増大させることなく、付加的なオブジェクトを格納するのが困難になる。これが起こった場合、コンパクション(compaction)と呼ばれるガベージ・コレクション内のプロセスを用いて、割り当てられたオブジェクトを統合して1つの大きな領域にし、新しいオブジェクトに使用可能な別の大きな領域の空き領域を残す。統合の際、依然として参照されているメモリ・オブジェクトは、1つのメモリ領域から別のメモリ領域へ移動される。
従来、ガベージ・コレクションがオブジェクト・ストレージ領域上で実行されるとき、オブジェクト・ストレージ領域を用いるアプリケーションは、実行を一時停止しなければならない。この理由の1つは、オブジェクトが移動されたため、オブジェクトにアクセスするためにアプリケーションにより用いられるオブジェクトへのポインタが、依然として有効であるかどうかを判断するためである。場合によっては数秒の長さのこれらの一時停止により、アプリケーションは、トランザクション処理、リアルタイム・ゲーム、又は機械的制御のような時間的制約のある(time-sensitive)タスクに使用することができなくなる。従って、最適化されたガベージ・コレクションに対する必要性が存在する。
「Power ISA(商標)Version 2.07B」、インターナショナル・ビジネス・マシーンズ・コーポレーション、2015年4月9日 「z/Architecture Principles of Operation」、IBM(登録商標)発行、No.SA22−7832−10、第11版、2015年3月
コンピューティング環境内のガベージ・コレクションを容易にするためのコンピュータ・プログラム、システム、及びコンピュータ実施方法を提供する。
本発明の1つ又は複数の実施形態によると、ガベージ・コレクション・プロセス中、アプリケーションが、ガベージ・コレクションが行われるメモリの領域内のオブジェクトにアクセスしていないときに(ガベージ・コレクションが原因で一時停止することなく)実行し続けることを可能にし、かつ、ガベージ・コレクションが行われるメモリの領域内のオブジェクトにアクセスしているアプリケーションが、非常に短い遅延後に即時再開することを可能にする、最適化されたガベージ・コレクション・プロセスが提供される。これは、コレクションが行われるオブジェクト・ストレージ領域へのポインタにいつアクセスされるかを識別し、ガベージ・コレクションが行われるメモリの領域内のオブジェクトへのポインタを取得し、ポインタを修正する、効率的な機構を提供することにより可能になる。有利なことに、これは、特殊命令を用いることなく、及び/又は特殊命令を実行するためにプログラムの修正を必要とすることなく、実行される。さらに、アプリケーション性能及び/又はプロセッサ性能を含む、コンピューティング環境内の性能が改善される。
1つの実施形態によると、コンピューティング環境内のガベージ・コレクションを容易にするためのコンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、処理回路より読み取り可能であり、方法を実施するために処理回路により実行される命令を格納するストレージ媒体を含む。方法は、例えば、コンピューティング環境のプロセッサ内で実行されるハンドラにより処理の制御を取得することを含む。処理の制御を取得することは、ロード命令の実行と、ロードされるオブジェクト・ポインタのアドレスがポインタ・ストレージ領域内に位置し、オブジェクト・ポインタは、ガベージ・コレクションが行われるメモリの選択された部分内の位置(記憶位置、location)を示すと判断することとに基づく。ハンドラにより処理の制御を取得することに基づいて、ハンドラにより、ポインタ・ストレージ領域からオブジェクト・ポインタを取得することであって、オブジェクト・ポインタは、オブジェクト・ポインタにより指し示されるオブジェクトの位置を示す。ハンドラにより、オブジェクト・ポインタが修正されるべきかどうかを判断し、オブジェクト・ポインタが修正されるべきとの判断に基づいて、ハンドラにより、オブジェクト・ポインタを修正し、修正されたオブジェクト・ポインタを提供する。オブジェクト・ポインタを修正することに基づいて、修正されたオブジェクト・ポインタを選択された位置に格納する。
有利なことに、これにより、ガベージ・コレクションが行われないメモリの領域内のオブジェクトを使用しているアプリケーションが、ガベージ・コレクション中、中断することなく処理を続行すること、及び、ガベージ・コレクションが行われないメモリの領域内のオブジェクトを使用しているアプリケーションが、非常に短い気付かないほどの遅延後に処理を続行することが可能になり、従って、性能が改善される。さらに、これは、特殊命令の使用又は特殊命令を使用するためのアプリケーションの修正を必要としない。
1つの実施形態において、処理の制御を取得することは、プロセッサ・ハードウェアにより出されたる割り込みを介する。割り込みは、ロード命令の実行と、ロードされるオブジェクト・ポインタのアドレスがポインタ・ストレージ領域内に位置し、オブジェクト・ポインタは、ガベージ・コレクションが行われるメモリの選択された部分内の位置を示すと判断することとに基づく。1つの特定の例において、割り込みは、制御をアプリケーション・レベル・ハンドラに直接与える軽量割り込み(すなわち、オペレーティング・システムを要しない)である。有利なことに、これらの実施形態の1つ又は複数は、ハンドラによる即時処理を可能にし、スーパーバイザ・レベルの割り込みハンドラの遅延を被ることなく、割り込みが処理された直後、ポインタにアクセスしたアプリケーションが処理を続行することを可能にする。
1つの更に別の実施形態において、ガベージ・コレクションが行われるメモリの選択された部分は、ガベージ・コレクションが行われない1つ又は複数の他のオブジェクトも含むオブジェクト領域の部分であり、有利なことに、ガベージ・コレクション中、ガベージ・コレクションが行われないオブジェクト領域にアクセスする1つ又は複数のアプリケーションが、処理を続行する。例えば、それらの1つ又は複数のアプリケーションは、中断することなく、処理を続行する。さらに、ガベージ・コレクションが行われるメモリの選択された部分内のオブジェクトを示す、オブジェクト・ポインタにアクセスしたアプリケーションは、ハンドラ(例えば、軽量のアプリケーション・レベル・ハンドラ)がポインタを処理する非常に短い遅延の後、処理を即時再開する。これは、アプリケーションが、気付くほどの長い時間遅延しないので、時間的制約のある処理のためにアプリケーションを使用することを可能にする。
1つの実施形態において、ロード命令の実行から、オブジェクト・ポインタのアドレス(すなわち、オブジェクト・ポインタの位置を指定するアドレス)を判断し、オブジェクト・ポインタのアドレスを、ポインタ・ストレージ領域に関連するデータと比較して、オブジェクト・ポインタのアドレスがポインタ・ストレージ領域内に位置するかどうかを判断する。オブジェクト・ポインタのアドレスがポインタ・ストレージ領域内に位置するとの判断の比較に基づいて、オブジェクト・ポインタ(すなわち、オブジェクト・ポインタの位置を指定するアドレス)を、メモリの選択された部分に関連する情報と比較して、オブジェクト・ポインタがメモリの選択された部分内の位置を示すことを判断する。オブジェクト・ポインタのアドレスがポインタ・ストレージ領域内に位置し、オブジェクト・ポインタは、メモリの選択された部分内の位置を示すと判断することに基づいて、制御がハンドラに提供される。有利なことに、ポインタ・ストレージ領域からオブジェクト・ポインタを取得することにより、オブジェクト・ポインタを取得するために特殊命令を使用する必要性が排除され、従って、ガベージ・コレクション専用の特殊命令を定め、オブジェクト・ポインタを取得するための命令を使用するために、既存のプログラムを修正する必要性が排除される。
実施形態において、ポインタ・ストレージ領域は、複数のオブジェクト・ポインタを含むメモリの連続領域を含む。一例として、ポインタ・ストレージ領域は、レジスタ又はメモリ内の位置の一方により指し示される。
さらに、実施形態において、メモリの選択された部分は、レジスタ又はメモリ内の位置の一方により指し示され、1つの実施形態において、レジスタは、メモリの選択された部分のベース・アドレス、及びメモリの選択された部分のサイズを含む。
さらに、一例において、修正されたオブジェクト・ポインタが格納される選択された位置は、ポインタ・ストレージ領域内の位置又はロード命令により指定される位置である。
一例として、ロード命令は、ロード操作を指定するための1つ又は複数の操作コード・フィールドと、オブジェクト・ポインタを取得するために用いられる結果フィールドと、ロード操作に用いられる1つ又は複数の他のフィールドとを含む。
更に別の態様において、コンピューティング環境内のガベージ・コレクションを容易にするためのコンピュータ・プログラム製品が提供される。コンピュータ・プログラム製品は、処理回路より読み取り可能であり、方法を実施するために処理回路により実行される命令を格納するストレージ媒体を含む。方法は、例えば、コンピューティング環境のプロセッサ内で実行されるハンドラにより処理の制御を取得することを含む。処理の制御を取得することは、アクセスされるオブジェクト・ポインタが指定されたメモリ領域内の位置を示すとの判断に基づく。ハンドラにより、処理の制御を取得することに基づいて、ハンドラは、アクションを取る。アクションを取ることは、警告を与える、指定されたメモリ領域へのアクセスを防止する、又はオブジェクト・ポインタを修正して、修正されたオブジェクト・ポインタを格納すること、のうちの少なくとも1つを含む。有利なことに、これは、アクセスの理由に関係なく、ポインタが指定されたメモリ領域にアクセスするときはいつでもアクションを取ることを可能にする。
別の態様によると、コンピューティング環境内のガベージ・コレクションを容易にするためのコンピュータ・システムが提供され、このコンピュータ・システムは、メモリと、メモリと通信するプロセッサとを備え、かつ、方法を実施するように構成され、この方法は、コンピューティング環境のプロセッサ内で実行されるハンドラにより処理の制御を取得することであって、処理の制御を取得することは、ロード命令の実行と、ロードされるオブジェクト・ポインタのアドレスがポインタ・ストレージ領域内に位置し、オブジェクト・ポインタは、ガベージ・コレクションが行われるメモリの選択された部分内の位置を示すと判断することとに基づく、取得することと;ハンドラにより処理の制御を取得することに基づいて、ハンドラにより、ポインタ・ストレージ領域からオブジェクト・ポインタを取得することであって、オブジェクト・ポインタは、オブジェクト・ポインタにより指し示されるオブジェクトの位置を示す、取得することと;ハンドラにより、オブジェクト・ポインタが修正されるべきかどうかを判断することと;オブジェクト・ポインタが修正されるべきとの判断に基づいて、ハンドラによりオブジェクト・ポインタを修正し、修正されたオブジェクト・ポインタを提供することと;オブジェクト・ポインタを修正することに基づいて、修正されたオブジェクト・ポインタを選択された位置に格納することとを含む。
別の態様によると、コンピューティング環境内のガベージ・コレクションを容易にするためのコンピュータ実施方法が提供され、このコンピュータ実施方法は、コンピューティング環境のプロセッサ内で実行されるハンドラにより処理の制御を取得することであって、処理の制御を取得することは、ロード命令の実行と、ロードされるオブジェクト・ポインタのアドレスがポインタ・ストレージ領域内に位置し、オブジェクト・ポインタは、ガベージ・コレクションが行われるメモリの選択された部分内の位置を示すと判断することとに基づく、取得することと;ハンドラにより処理の制御を取得することに基づいて、ハンドラによりポインタ・ストレージ領域からオブジェクト・ポインタを取得することであって、オブジェクト・ポインタは、オブジェクト・ポインタにより指し示されるオブジェクトの位置を示す、取得することと;ハンドラにより、オブジェクト・ポインタが修正されるべきかどうかを判断することと;オブジェクト・ポインタが修正されるべきとの判断に基づいて、ハンドラによりオブジェクト・ポインタを修正し、修正されたオブジェクト・ポインタを提供することと;オブジェクト・ポインタを修正することに基づいて、修正されたオブジェクト・ポインタを選択された位置に格納することとを含む。
1つ又は複数の態様に関連するコンピュータ実装方法及びシステムも、本明細書で説明され、特許請求され得る。さらに、1つ又は複数の態様に関連するサービスも説明され、本明細書で特許請求され得る。
本明細書で説明される技術を通じて、付加的な特徴及び利点が実現される。他の実施形態及び態様は、本明細書で詳細に説明され、特許請求の範囲の態様の一部と見なされる。
ここで、本発明の好ましい実施形態が、単なる例として、以下の図面を参照して説明される。
1つ又は複数の実施形態を組み込み、用いるためのコンピューティング環境の一例を示す。 1つ又は複数の実施形態を組み込み、用いるためのコンピューティング環境の別の例を示す。 本発明の実施形態による、図2のメモリのさらなる詳細を示す。 1つ又は複数の実施形態による、load doubleword命令の一例を示す。 1つ又は複数の実施形態による、ガベージ・コレクションが行われるメモリのさらなる詳細を示す。 1つ又は複数の実施形態による、ポインタ・ストレージ領域レジスタの一例を示す。 1つ又は複数の実施形態による、ロード監視領域レジスタの一例を示す。 1つ又は複数の実施形態による、load doubleword命令を用いるガベージ・コレクションを行うための論理の1つの実施形態を示す。 最適化されたガベージ・コレクションを行うための1つの実施形態を示す。 指定された条件に基づいてハンドラによりアクションをとるための論理の1つの実施形態を示す。 1つ又は複数の実施形態による、クラウド・コンピューティング・ノードの1つの実施形態を示す。 1つ又は複数の実施形態による、クラウド・コンピューティング環境の1つの実施形態を示す。 1つ又は複数の実施形態による、抽象化モデル層の一例を示す。
1つ又は複数の実施形態によると、アプリケーション性能、アプリケーションを実行しているプロセッサの性能、及び/又はプロセッサが実行するコンピューティング環境の性能を有利に改善する最適化されたガベージ・コレクション・プロセスのための能力が提供される。
最適化されたガベージ・コレクション・プロセスは、アプリケーション(プログラムとも呼ばれる)が、特殊命令を利用するためにプログラムの修正又は特殊命令を実行するためのハードウェアを必要としないガベージ・コレクションを行うことを可能にする。さらに、1つ又は複数の実施形態において、最適化されたガベージ・コレクション・プロセスは、ガベージ・コレクションが行われないメモリの領域内のオブジェクトにアクセスするアプリケーションが、ガベージ・コレクション中、中断することなく処理を続行すること、及び、ガベージ・コレクションが行われるメモリの領域内のオブジェクトにアクセスするアプリケーションが、非常に短い気付かないほどの遅延後に処理を続行することを可能にし、さらに、オブジェクト・ポインタ(ポインタとも呼ばれる)の処理を改善する。
1つの実施形態において、オブジェクト・ポインタ(例えば、オブジェクトのアドレス)を含むデータをロードするために、load doubleword(ld)命令と呼ばれる命令が用いられる。命令が実行されると、ロードされるデータのアドレス(例えば、オブジェクト・ポインタ)をポインタ・ストレージ領域と比較し、データがポインタ・ストレージ領域内にない場合、ロード命令は、従来通り実行される。しかしながら、ロードされるデータのアドレスがポインタ・ストレージ領域内にある場合、ロードされるデータが、所定のアドレス範囲(例えば、ガベージ・コレクションが行われるメモリ領域)内のオブジェクトを指し示すかどうかを判断するためにチェックを行う。ロードされるデータがアドレス範囲内のオブジェクトを指し示さない場合、ロード命令は、従来通り実行される。しかしながら、ロードされるデータが所定のアドレス範囲を指し示す場合、プロセッサは、非同期分岐(イベント・ベース分岐(Event-Based Branch、EBB)と呼ばれる)を、ポインタ更新ハンドラ(ガベージ・コレクション・ハンドラ、EBBハンドラ、又はハンドラとも呼ばれる)に対して発生させる。これにより、進行中のガベージ・コレクション・プロセス中、指し示されたオブジェクトが移動された場合又はハンドラにより移動される場合、ポインタ更新ハンドラが、ポインタ(例えば、オブジェクトのアドレス)を更新することが可能になる。次に、更新されたポインタは、一例において、ポインタ・ストレージ領域内の位置のような、選択された位置内に格納される。
1つの実施形態において、ポインタのアドレスを判断するために、ポインタ更新ハンドラは、ld命令を調べて、ソース・レジスタを判断し、ソース・レジスタを読み取り、ソース・レジスタのコンテンツに基づいてポインタのアドレスを計算する。更に別の実施形態において、上述のようにポインタ・アドレスを計算するポインタ更新ハンドラの代わりに、ポインタ更新ハンドラが提供されるか、又はポインタ更新ハンドラがポインタ・アドレスに直接アクセスできる。この実施形態において、プロセッサ・ハードウェアは、例えば、命令(例えば、以下に説明されるld命令により示されるEA)から、ポインタのアドレスを取得し、ポインタのアドレス(ポインタ・アドレスとも呼ばれる)を、指定されたメモリ位置、又はポインタ更新ハンドラに直接アクセス可能なレジスタなどの予め定められた位置に格納する。
一例として、ポインタ・アドレスは、ストレージ内の指定された位置に格納することができる。例えば、ポインタ・アドレスが格納されるストレージ・アドレスを、イベント・ベース分岐ハンドラ・レジスタ(Event Based Branch Handler:EBBHR)内に格納されたEBBハンドラ・アドレスの直前に来るように、又はアドレスから幾らかの指定されたオフセットで指定することができる。例示的なオフセットは、ポインタ・アドレスを、ポインタ更新ハンドラ自体の開始の直前に来るストレージ位置に格納するものである。これが行われた場合、ポインタ更新ハンドラは、ポインタ・アドレスを判断するために、単にそのストレージ位置を読み取るだけである。更に別の例として、ポインタ・アドレスは、別の目的で必要とされない既存のレジスタ内に格納される。例えば、レジスタは、性能監視ファシリティのような別のファシリティの部分とすることができる。さらに、アドレスは、ポインタ更新ハンドラのアドレスを格納するために用いられるレジスタ、すなわちEBBHR内に格納することができる。EBBHRは、EBBが発生した直後にハードウェアによりポインタ・アドレスをロードすることができ、次に、ポインタ更新ハンドラは、ポインタ・アドレスが必要とされたときに、そのレジスタを読み取り、制御を再びアプリケーションに戻す前、ポインタ更新ハンドラの開始アドレスを含むようにそのレジスタを復旧する。ポインタ更新ハンドラの実行中、ポインタ・アドレスを示すため以外にレジスタが必要とされなかった場合、及び、アプリケーションに戻る前に、ポインタ更新ハンドラによりレジスタを復旧できる場合、他のいずれかのレジスタを同様に用いることができる。
図1を参照して、1つ又は複数の実施形態を組み込み、用いるためのコンピューティング環境の1つの実施形態が説明される。コンピューティング環境100は、例えば1つ又は複数のバス108及び/又は他の接続を介して互いに結合された、例えば、プロセッサ102(例えば中央処理ユニット)、メモリ104(例えば主メモリ)、及び1つ又は複数の入力/出力(I/O)デバイス及び/又はインターフェース106を含む。
1つ実施形態において、プロセッサ102は、インターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるPower Architectureに基づいている。Power Architectureの1つの実施形態は、その全体が引用により本明細書に組み入れられる非特許文献1に記載される。Power Architecture(登録商標)は、米国ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。本明細書で用いられる他の名称は、インターナショナル・ビジネス・マシーンズ・コーポレーション又は他の企業の登録商標、商標、又は製品名であり得る。
別の例において、プロセッサ102は、インターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるz/Architectureに基づいており、z/Architectureを実装する、System zサーバのようなサーバの部分であり、同じくインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供される。z/Architectureの1つの実施形態は、その全体が引用により本明細書に組み入れられる非特許文献2に記載される。一例において、プロセッサは、同じくインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供される、z/OSのようなオペレーティング・システムを実行する。IBM(登録商標)、z/Architecture(登録商標)、及びz/OS(登録商標)は、インターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。
さらに別の実施形態において、プロセッサ102は、Intel Corporationにより提供されるIntelアーキテクチャに基づいている。Intel(登録商標)は、カリフォルニア州Santa Clara所在のIntel Corporationの登録商標である。さらに、プロセッサ102は、他のアーキテクチャに基づくこともできる。本明細書で述べられるアーキテクチャは、例として提供されるに過ぎない。
図2を参照して、1つ又は複数の実施形態を組み込み、用いるためのコンピューティング環境の別の実施形態が説明される。この例において、コンピューティング環境200は、例えば1つ又は複数のバス208及び/又は他の接続を介して互いに結合された、例えば、ネイティブ中央処理ユニット202、メモリ204、及び1つ又は複数の入力/出力(I/O)デバイス及び/又はインターフェース206を含む。例として、コンピューティング環境200は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるPowerPC(登録商標)プロセッサ、zSeriesサーバ、又はpSeriesサーバ;カリフォルニア州Palo Alto所在のHewlett Packard Co.により提供されるIntel Itanium IIプロセッサを伴うHP Superdome;及び/又はインターナショナル・ビジネス・マシーンズ・コーポレーション、Hewlett Packard、Intel、Oracle、又はその他により提供されるアーキテクチャに基づいた他のマシンを含むことができる。
ネイティブ中央処理ユニット202は、環境内での処理の際に用いられる、1つ又は複数の汎用レジスタ及び/又は1つ又は複数の専用レジスタなどの1つ又は複数のネイティブ・レジスタ210を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
さらに、ネイティブ中央処理ユニット202は、メモリ204内に格納された命令及びコードを実行する。1つの特定の例において、中央処理ユニットは、メモリ204内に格納されたエミュレータ・コード212を実行する。このコードにより、1つのアーキテクチャにおいて構成された処理環境が、別のアーキテクチャをエミュレートすることが可能になる。例えば、エミュレータ・コード212により、zSeriesサーバ、pSeriesサーバ、HP Superdomeサーバ又は他のものなどの、Power(登録商標)Architecure以外のアーキテクチャに基づいたマシンが、Power Architectureをエミュレートし、Power Architectureに基づいて開発されたソフトウェア及び命令を実行することが可能になる。更に別の例において、エミュレータ・コード212は、PowerPCプロセッサ、pSeriesサーバ、HP Superdomeサーバ又は他のものなどの、z/Architecture以外のアーキテクチャに基づいたマシンが、z/Architectureをエミュレートし、z/Architectureに基づいて開発されたソフトウェア及び命令を実行することを可能にする。他のアーキテクチャをエミュレートすることもできる。Power及びPowerPCは、インターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。
図3を参照して、エミュレータ・コード212に関する更なる詳細を説明する。メモリ204内に格納されたゲスト命令250が、ネイティブCPU202のもの以外のアーキテクチャにおいて実行されるように開発されたソフトウェア命令(例えば、マシン命令に相関する)を含む。例えば、ゲスト命令250は、PowerPCプロセッサ又はz/Architectureプロセッサ102上で実行されるように設計されているが、代わりに、例えばIntel Itanium IIプロセッサとすることができるネイティブCPU202上でエミュレートされることもある。一例において、エミュレータ・コード212は、メモリ204から1つ又は複数のゲスト命令250を取得し、取得された命令に対してローカル・バッファリングを随意的に提供するための命令フェッチ・ルーチン252を含む。エミュレータ・コード212また、取得されたゲスト命令のタイプを判断し、ゲスト命令を1つ又は複数の対応するネイティブ命令256に変換するための命令変換ルーチン254も含む。この変換は、例えば、ゲスト命令により実施される機能を識別すること、及びその機能を実施するためのネイティブ命令を選択することを含む。
さらに、エミュレータ・コード212は、ネイティブ命令を実行させるためのエミュレーション制御ルーチン260を含む。エミュレーション制御ルーチン260は、ネイティブCPU202に、1つ又は複数の以前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、こうした実行の最後に、次のゲスト命令又はゲスト命令のグループの取得をエミュレートするように、制御を命令フェッチ・ルーチンに戻させることができる。ネイティブ命令256の実行は、データをメモリ204からレジスタにロードすること、データをレジスタから再びメモリに格納すること、又は変換ルーチンによって定められるような何らかのタイプの算術演算又は論理演算を実施することを含むことができる。
各ルーチンは、例えば、メモリ内に格納され、ネイティブ中央処理ユニット202によって実行される、ソフトウェアで実装される。他の例において、1つ又は複数のルーチン又は演算は、ファームウェア、ハードウェア、ソフトウェア、又はそれらの幾つかの組み合わせで実装される。エミュレートされるプロセッサのレジスタは、ネイティブCPUのレジスタ210又はメモリ204内の位置を用いて、エミュレートすることができる。実施形態において、ゲスト命令250、ネイティブ命令256、及びエミュレータ・コード212は、同一のメモリ内に存在してもよく、又は、異なるメモリ・デバイスの間に分散されてもよい。
本明細書で用いられる場合、ファームウェアは、例えば、プロセッサのマイクロコード、ミリコード、及び/又はマクロコードを含む。ファームウェアは、例えば、より上位レベルのマシン・コードの実装に用いられる、ハードウェア・レベルの命令及び/又はデータ構造体を含む。1つの実施形態において、ファームウェアは、例えば、典型的には、信頼できるソフトウェアを含むマイクロコード又は基礎をなすハードウェアに特有のマイクロコードとして配信される独自のコードを含み、システム・ハードウェアへのオペレーティング・システムのアクセスを制御する。
一例において、取得され、変換され、実行されるゲスト命令250は、本明細書で説明される1つの命令である。1つのアーキテクチャ(例えば、Power Architecture又はz/Architecture)のものであるこの命令が、メモリからフェッチされ、変換され、別のアーキテクチャ(例えば、z/Architecture、Power Architecture、Intel Architectureなど)のネイティブ命令256のシーケンスとして表される。次いで、これらのネイティブ命令が実行される。
1つ又は複数の実施形態に従って用いられる1つの命令は、オブジェクト・ポインタを含むデータをロードするために用いられるload doubleword命令である。図4を参照して、Power Architectureにおけるload doubleword命令の1つの特定の実装が説明される。一例において、load doubleword(ld)命令300は、ロード操作を示す操作コード(オペコード)フィールド302a(例えば、ビット0〜5)、302b(例えば、ビット30);ロード操作の結果を格納するレジスタを示すために用いられる結果フィールド(RT)304(例えば、ビット6〜10);ロード操作により用いられるレジスタを指定するために用いられるレジスタ・フィールド(RA)306(例えば、ビット11〜15);及びロード操作に用いられる別のフィールド(DS)308(例えば、ビット16〜29)を含む。フィールド304〜308の各々は、一例において、別個であり、互いに独立しているが、他の実施形態においては、1つより多いフィールドを組み合わせることができる。フィールドの使用に関する更に別の情報を以下に説明する。
ld命令の動作において、ロードされるデータのアドレス(例えば、オブジェクト・ポインタ)が、ポインタ・ストレージ領域内にあるかどうかについてチェックを行う。ロードされるデータのアドレスがポインタ・ストレージ領域内にある場合、ロードされるデータが、本明細書ではロード監視領域(load monitored region)と呼ばれるメモリの選択された部分内に位置するオブジェクトを指し示すかどうかについて、更なるチェックを行う。ロードされるデータのアドレスがポインタ・ストレージ領域内にないか、又はロードされるデータがメモリの選択された部分内に位置するオブジェクトを指し示さない場合、従来のロードが実施される。例えば、一例において、従来のlaod doublewordが実行される。
従来のld命令の動作において、実効アドレス(EA)は、
Figure 2018524696

とすることができる。EAによりアドレス指定されるストレージ内のダブルワードは、RT内にロードされる。
従来のld命令についての疑似コードの一例は、次の通りである。
Figure 2018524696

ここで、EAはオブジェクト・ポインタのアドレスであり、MEM(EA,8)はオブジェクト・ポインタである。
しかしながら、ロードされるデータのアドレスがポインタ・ストレージ領域内に位置し、オブジェクト・カウンタが、ガベージ・コレクションが行われるメモリの選択された部分内に位置するオブジェクトを指し示さない場合、本明細書で以下にさらに説明されるように、処理が中断され、ポインタを更新することを含む、ガベージ・コレクションに関連する1つ又は複数のタスクを実行するポインタ更新ハンドラ(update pointer handler)へのイベント・ベースの分岐を引き起こす。
1つ又は複数の実施形態による、ld命令についての疑似コードの一例は、次の通りである。
Figure 2018524696

ここで、load_eaはオブジェクト・ポインタであり、EAはオブジェクト・ポインタのアドレスであり、BESCRは、分岐イベント状況−制御レジスタ(branch event status-control register)を指し、GEは全体的なイネーブル(enable)を指し、LME=load monitored enabled(ロード監視イネーブル)である。
本明細書での例において、命令形式は、Power Architectureについてのものであるが、他のアーキテクチャに対しても同様の形式を用いることができる。
さらに、別の例においては、load doubleword indexed(ldx)命令を用いることができ、そこでは、DS308の代わりに、ビット16〜20内に別のレジスタ・フィールド(RB)308があり、ビット21〜30は、オペコード302bの一部を含む。この形式において、EA←b+(RB)である。
1つの実施形態において、以前に示されたように、ガベージ・コレクションが行われるメモリの選択された部分は、本明細書ではロード監視領域と呼ばれる。図5に示されるように、メモリ400は、ロード監視領域402、及び複数のオブジェクト404を含む。オブジェクトの1つであるオブジェクトB 406は、ロード監視領域402内にあり、該オブジェクトは、ガベージ・コレクションが実行されているメモリの部分内にあることを意味する。従って、例えばガベージ・コレクション・プロセスのために、ポインタが指し示すオブジェクトが移動されている場合、現在のポインタを更新する必要があり得る。
さらに、本明細書で用いられる場合、オブジェクト領域は、ロード監視領域と、ガベージ・コレクションが行われないオブジェクトを含むメモリの領域とを含む。
付加的に、1つの実施形態において、メモリ400は、複数のポインタを含むポインタ・ストレージ領域410を含む。
この図において、さらに、アプリケーション・プログラム420が、ld命令422を実行し、この命令は、ポインタ・ストレージ領域内にあるポインタBをロードしようと試みる。ポインタBはロード監視領域内のオブジェクト406を指し示し、従って、割り込みが実行され、制御をEBBハンドラ424(更新ポインタ・ハンドラとしても知られる)に与える。ハンドラ424は、必要に応じてポインタBを修正し、一例では、修正されたポインタを、これを取得した位置426に格納する。次に、処理は命令に戻り、命令が再実行される。
更に別の実施形態において、ハンドラは、ポインタを修正し、修正されたポインタを命令のターゲット・レジスタ内に格納し、処理はld命令の後の命令に続き、それによりポインタのロードがエミュレートされる。1つ又は複数の実施形態において、アプリケーションは、EBB処理を認識しておらず、既に述べたように、単にポインタを受け取るだけである。
上述のように、ロードされるデータ(例えば、オブジェクト・ポインタ)のアドレスがポインタ・ストレージ領域内にあり、かつ、オブジェクト・ポインタがメモリのロード監視領域内にあるオブジェクトを指し示すとき、割り込み処理が実行される。ポインタ・ストレージ領域は、例えば、レジスタ内のそのサイズ及びベース・アドレス又はメモリ内の指定された位置を指定することを含む、多くの方法で識別することができる。例えば、図6に示されるように、ポインタ・ストレージ領域(PSA)レジスタ500は、例えば、ポインタ領域ベース・アドレスを含むフィールド502と、領域のサイズを含むフィールド504とを含む。一例において、ビット0:53は、ポインタ・ストレージ領域の開始アドレスを特定する。この例において、ベース・アドレスは、実装を容易にするために、そのサイズと同じであるアドレス境界上に位置合わせ(align)される。例えば、256Kポインタ・ストレージ領域は、256K境界上に位置合わせされ、2Kポインタ・ストレージ領域は、2K境界上に位置合わせされる。この位置合わせは、ポインタ・アドレス及びそのサイズが、64ビット・レジスタ内に適合することを可能にするように意図され、絶対要件ではない。より大きいレジスタ又は複数のレジスタを用いて、いかなる位置合わせも可能である。
この実施形態において、ビット61:63は、次のようなポインタ・ストレージ領域のサイズを決定する。
Figure 2018524696
ロード監視領域はまた、代替的な方法で特定することもできる。例えば、1つの実装において、そのサイズ及びベース・アドレスが、図7に示されるようなレジスタ内に格納される。示されるように、ロード監視領域レジスタ(LMRR)550は、例えば、監視領域ベース・アドレスを含むフィールド552と、領域のサイズを含むフィールド554とを含む。
一例において、ロード監視領域ベース・アドレスは、ロード監視領域の上位ビットを含む。この実施形態において、ロード監視領域は、そのサイズの粒度上に位置合わせされる。サイズ・フィールドは、各値が指定されたサイズに対応するようにエンコードされる。例えば、16の可能なサイズが必要とされる場合、サイズ・フィールドは4ビットを有する。典型的なサイズは、数十MB(メガバイト)からGB(ギガバイト)を上回るまでのオーダーである。ロード監視領域ベース・アドレス・フィールドにおけるビット数は、最小サポート・サイズから得ることができる。例えば、最小サポート・サイズが16MBである場合、ロード監視領域ベース・アドレス・フィールドは40ビットであり、64−40=24なので、アドレスの24ビットは、16MBアドレス境界上に位置合わせされたあらゆる16MBメモリ領域を識別するのに十分である。サイズ・フィールドがより小さいサイズを示すとき、ベース・アドレスを指定するために、より少ないビットが必要とされ、ロード監視領域ベース・アドレス・フィールド内の下位ビットは0に設定される。
他の例において、ロード監視領域及び/又はポインタ・ストレージ領域についてのサイズ及びベース・アドレスは、メモリ位置又は別の目的に用いられるレジスタ等内に指定することができる。付加的に、他の情報を用いて、ロード監視領域及び/又はポインタ・ストレージ領域のアドレス範囲を指定することもできる。
図8を参照して、本発明の1つの実施形態による、ld命令の実行と関連する論理の1つの実施形態が説明される。1つの実装において、プロセッサのハードウェアは、ld命令を発行するアプリケーションを実行し、プロセッサ・ハードウェアは、ldをデコードする(ステップ600)。ldの実行中、プロセッサ・ハードウェアは、ロードされるデータ(例えば、ポインタ)のアドレスを、例えばPSAレジスタにより示されるポインタ・ストレージ領域と比較する(問い合わせ601)。オブジェクト・ポインタのアドレスがポインタ・ストレージ領域内にある場合、プロセッサ・ハードウェアは、読み取られたデータを、ガベージ・コレクションが行われるメモリの選択された部分を指定するロード監視領域レジスタ(又は、他のレジスタ若しくはメモリ位置)とさらに比較する。読み取られたポインタがロード監視領域内の位置を指し示す場合(問い合わせ602)、ハードウェアは、ポインタ更新ハンドラへの割り込み(例えば、イベント・ベース分岐)を引き起こす(ステップ606)。次に、ポインタ更新ハンドラは、ロード命令レジスタからそのアドレスを計算すること又は所定の位置からそれを読み込むことのいずれかによって、ポインタのアドレスを決定し;ポインタ・ストレージ領域からポインタを読み取り;必要な場合(すなわち、ガベージ・コレクション中に又はハンドラにより、ポインタが指し示すオブジェクトが移動された場合)、ポインタを修正し;必要に応じて及び時間が許すとき、他のガベージ・コレクション・タスクを実行し;修正されたポインタを、元のそれを読み取った位置に格納する(ステップ610)。次に、ハンドラは、制御をld命令におけるアプリケーションに戻し、命令を再実行する(ステップ612)。
更に別の例において、更新ハンドラは、ld命令のターゲット・レジスタを読み取り、更新されたポインタをターゲット・レジスタに格納する。これは、ポインタのロードをエミュレートする効果を有し、従って、次にハンドラは、ld命令後、制御を命令におけるアプリケーションに戻すことができる。
問い合わせ601に戻ると、ポインタがポインタ・ストレージ領域内にないか又はポインタがロード監視領域内の位置を指し示さない場合(問い合わせ602)、プロセッサ・ハードウェアは、イベント・ベースの岐を引き起こさず、代わりに、割り込みなしにld命令を実行する(ステップ614)。その後、処理は次の命令に続く(ステップ616)。
本明細書で説明されるように、ガベージ・コレクションは、ガベージ・コレクション中、ガベージ・コレクションが行われないメモリの領域内のオブジェクトにアクセスするアプリケーションが(一時停止することなく)処理を続行することを可能にし、ガベージ・コレクションが行われるメモリの領域内のオブジェクトにアクセスするアプリケーションが、短い気付かないほどの遅延後に処理を再開することを可能にすることによって、最適化される。これは、ポインタのロード中、オブジェクト・ポインタのアドレスがポインタ・ストレージ領域内に位置し、指し示されるオブジェクトは、ガベージ・コレクションが行われるメモリの選択された部分内に位置すると判断することによって可能になり、割り込みが、ポインタを管理するハンドラに発行される。1つの有利な実装において、ポインタはハンドラに利用可能であり、従って、ハンドラは、ポインタのアドレスを計算する必要がなく、そのため、ポインタを更新するのに必要な命令の数が減少し、コンピュータ処理が改善される。
図9を参照して、1つ又は複数の実施形態による、ガベージ・コレクションを容易にすることに関連する論理の1つの実施形態が説明される。最初に、プロセッサ内で実行されているハンドラ(例えば、アプリケーション・レベル・ハンドラ)が、処理の制御を取得し(ステップ700)、例えばプロセッサ・ハードウェアにより発行された割り込み(例えば、オペレーティング・システムを要しない軽量割り込み)を介して取得する(ステップ702)。処理の制御は、ロード命令(例えば、ld又はldx)の実行と、ロードされるオブジェクト・ポインタのアドレスがポインタ・ストレージ領域内に位置し、オブジェクト・ポインタは、ガベージ・コレクションが行われるメモリの選択された部分内の位置を示すと判断することとに基づいて、ハンドラにより取得される(ステップ704)。一例において、オブジェクト・ポインタのアドレスを、ロード命令により取得し(例えば、EA)、ポインタ・ストレージ領域に関連するデータと比較し、オブジェクト・ポインタがポインタ・ストレージ領域内に位置するかどうかを判断する(ステップ706)。比較が、オブジェクト・ポインタのアドレスがポインタ・ストレージ領域内に位置することを示すことに基づいて、オブジェクト・ポインタを、メモリの選択された部分に関連する情報と比較し、オブジェクト・ポインタがメモリの選択された部分内の位置を示すと判断する(ステップ708)。1つの実施形態において、ポインタ・ストレージ領域は、例として、ベース・アドレス及びサイズを含むことができるレジスタ又はメモリ位置により示される(ステップ710)。さらに、メモリの選択された部分は、例として、ベース・アドレス及びサイズを含むことができるレジスタ又はメモリ位置により示される(ステップ712)。
処理の制御の取得に基づいて、ハンドラは、オブジェクト・ポインタのアドレスを取得する(ステップ720)。一例において、アドレスは、ld命令の実行から判断され(ステップ722)、又は所定の位置から読み取られる(ステップ724)。ハンドラは、アドレスを用いて、例えばレジスタ又はメモリ位置内に示されるポインタ・ストレージ領域からオブジェクト・ポインタを取得する(例えば、読み取る)(ステップ726)。
次に、ハンドラは、オブジェクト・ポインタが修正されるべきかどうかを判断する(問い合わせ730)。例えば、ハンドラは、オブジェクト・ポインタにより指し示されるオブジェクトが移動されているかどうかを判断する。オブジェクトが移動されている場合、オブジェクト・ポインタが修正される(ステップ735)。その後、修正されたオブジェクト・ポインタは、これを読み取った位置(例えば、ポインタ・ストレージ領域内の位置)内に格納される(ステップ740)、処理は、ld命令に進み、ld命令は、再実行されるか、又は例えばロード命令により指定されたターゲット・レジスタなど、ロード命令によって指定された位置内に格納することができ、処理はld命令の後の命令に続く。
問い合わせ730に戻ると、オブジェクト・ポインタが修正されない場合、オブジェクト・ポインタは、例えばロード命令のターゲット・レジスタ内に格納され、ハンドラは、制御を、ldの後の命令におけるアプリケーションに戻す(ステップ732)。
有利なことに、1つ又は複数の実施形態において、メモリの選択された部分内のオブジェクトにアクセスしていないアプリケーションが、ガベージ・コレクション中、処理を続行する(つまり、一時停止する必要がない)ことを可能にすることによって、ガベージ・コレクションが容易にされる(ステップ750)。また、メモリの選択された部分内のオブジェクトにアクセスしているアプリケーションは、短い間だけ遅延される。
本明細書で説明されるとき、1つ又は複数の実施形態は、ハンドラがオブジェクト・ポインタのアドレスを計算するのを必要とすることなく、オブジェクト・ポインタのアドレスを直接ハンドラに提供する。1つ又は複数の実施形態は、ソース及び宛先アドレスを判断するために、ld命令のハンドラによるデコード、ソース汎用レジスタのコンテンツの読み取り、ポインタの実効アドレスの計算を排除し、再び、代わりにハンドラは、所定の位置からアドレスを読み取り、これを計算する必要はない。1つ又は複数の実施形態は、有利なことに、ガベージ・コレクションを必要とするアプリケーションが、高速の取引、リアルタイムの機械的制御、時間的制約のあるゲーム等のような、時間的制約のある環境に入ることを可能にする。1つ又は複数の実施形態は、付加的な命令がアプリケーションに挿入され、いかなるオペレーティング・システムへの修正も要求されないので、アプリケーションのフットプリントを増大させない。さらに、アプリケーションは、修正する必要がない。
1つ又は複数の実施形態によると、オブジェクト・ポインタへの各アクセス時に、ポインタがポインタ・ストレージ領域内に位置し、ガベージ・コレクションが行われるメモリの領域内のオブジェクトを指し示す場合、処理をリアルタイム・ガベージ・コレクション・ハンドラ(例えば、ポインタ更新ハンドラ)に転換(divert)することができる。
本明細書で説明されるように、ガベージ・コレクションが容易にされる。1つの実施形態において、処理の制御は、コンピューティング環境のプロセッサ内で実行されるハンドラによって取得され、処理の制御の取得は、ロード命令の実行と、ロードされるオブジェクト・ポインタのアドレスが、ポインタ・ストレージ領域内に位置し、オブジェクト・ポインタは、ガベージ・コレクションが行われるメモリの選択された部分内の位置を示すと判断することとに基づく。ハンドラにより処理の制御を取得することに基づいて、ハンドラは、ポインタ・ストレージ領域から、オブジェクト・ポインタにより指し示されるオブジェクトの位置を示すオブジェクト・ポインタを取得する。ハンドラは、オブジェクト・ポインタが修正されるべきかどうかを判断し、オブジェクト・ポインタが修正されるべきとの判断に基づいて、オブジェクト・ポインタを修正し、修正されたオブジェクト・ポインタを提供する。オブジェクト・ポインタを修正することに基づいて、修正されたオブジェクト・ポインタは、ポインタ・ストレージ領域内の位置又はロード命令により指定された位置のような選択された位置内に格納される。
有利なことに、このことは、ガベージ・コレクションが行われないメモリの領域内のオブジェクトを用いるアプリケーションが、ガベージ・コレクション中、割り込みなしに処理を続行することを可能にし、ガベージ・コレクションが行われるメモリの領域内のオブジェクトを用いるアプリケーションが、非常に短い気付かないほどの遅延の後、処理を続行することを可能にし、特殊命令の使用又はプログラムの修正を必要とせず、それにより性能が改善される。
1つの更に別の実施形態において、ガベージ・コレクションが行われるメモリの選択された部分は、ガベージ・コレクションが行われない1つ又は複数の他のオブジェクトも含むオブジェクト領域の部分であり、有利なことに、ガベージ・コレクション中、ガベージ・コレクションが行われないオブジェクト領域にアクセスしている1つ又は複数のアプリケーションが、プロセスを続行する。例えば、プロセスは、中断することなく実行し続ける。さらに、1つの実施形態において、ガベージ・コレクションが行われるメモリの選択された部分内のオブジェクトを示すオブジェクト・ポインタにアクセスしたアプリケーションは、ハンドラ(例えば、アプリケーション・レベル・ハンドラ)がポインタを処理する間、非常に短い遅延後に処理を即時再開する。これは、アプリケーションが、気付くほど長い時間遅延しないので、時間的制約のある処理のためにアプリケーションを使用することを可能にする。
付加的に、1つ又は複数の実施形態を、ガベージ・コレクション以外のために用いることができる。例えば、本明細書で説明される1つ又は複数の実施形態は、指定されたストレージ・アドレス範囲へのポインタがいつロードされるかを検知するために用いることができるので、これを、制限されたメモリ空間への差し迫ったアクセスについての事前警告を与えるために使用することができる。この場合、メモリ領域を、制限されたメモリ領域になるように初期化し、ポインタ・ストレージ領域を、メモリ・ポインタの位置を示すように設定する。その後、制限された領域を指し示すポインタ・ストレージ領域内のポインタが読み取られると、EBBが発生する。次に、EBBハンドラは、アクセスを全体的に防止するか、メモリの制限された領域にアクセスがなされようとしているという事前警告信号をセキュリティ・モニタに提供するか、又は何らかの他の選択されたアクションを実行することができる。指定されたメモリ領域になされようとしている予想されるアクセスについての警告が望まれる状況において、他の関連するアプリケーションが可能である。
図10を参照して、特定の条件に基づいてハンドラによりアクションをとるための論理の1つの実施形態が説明される。一例において、ロード命令がデコードされる(ステップ800)。(別の実施形態において、それは別のタイプの命令であってもよい。)ロード命令は、例として、ld命令、ldx命令、又は別のロード命令を含む種々のロード命令の1つとすることができる。ロード命令をデコードし、デコードに基づいて、オブジェクト・ポインタが判断される。オブジェクト・ポインタが指定されたメモリ領域内のオブジェクトを示すかどうかについての判断がなされる(問い合わせ802)。このメモリ領域は、例えば、1つの理由又は他の理由で制限される指定されたストレージ・アドレス範囲である。ポインタが、指定されたメモリ領域内のオブジェクトを示さない場合、ロード(又は、他の命令)は、従来通りに実行される(ステップ804)。次に、処理は次の命令に続く(ステップ806)。
しかしながら、問い合わせ802に戻ると、ポインタが、指定されたメモリ領域内のオブジェクトを示す場合、制御が、ハンドラ(例えば、アプリケーション・レベル・ハンドラ)により取得される(ステップ810)。例えば、プロセッサ・ハードウェアは、ハンドラへの割り込み(例えば、オペレーティング・システムに関与しない軽量割り込み)を実行する。次に、ハンドラは、1つ又は複数のアクションをとる(ステップ812)。例えば、1つの実施形態において、ハンドラは、随意的に、指定されたメモリ領域へのアクセスを防止し、次に、次の命令に処理を続行する(ステップ814)。更に別の例として、ハンドラは、ポインタ・アドレスを取得し(例えば、所定の位置から、又は命令からこれを計算する)、ポインタを読み取り、ポインタを修正し、修正されたポインタを、これが読み取られた元の位置に格納し、制御を命令に戻し、命令を再実行し、その結果、指定されたメモリ領域にアクセスされない(ステップ816)。他の可能性も存在する。
本明細書で用いられる場合、ストレージ、中央ストレージ、主ストレージ、メモリ及び主メモリは、慣例によって暗黙的に又は明示的に、特に断りのない限り、交換可能に用いられる。
1つ又は複数の実施形態は、クラウド・コンピューティングに関連し得る。
本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書で述べられる教示の実装は、クラウド・コンピューティング環境に限定されるものではないことが予め理解される。むしろ、本発明の実施形態は、現在知られている又は後に開発される他のいずれかのタイプのコンピューティング環境と併せて実装することができる。
クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダとの対話で迅速にプロビジョニング及び解放することができる構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの、便利なオンデマンドのネットワーク・アクセスを可能にするサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、及び少なくとも4つの配備モデルを含むことができる。
特徴は、以下の通りである。
オンデマンド・セルフサービス:クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、及びPDA)による使用を促進する標準的な機構を通じてアクセスされる。
リソースのプール化:プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて、異なる物理及び仮想リソースを要求に応じて動的に割り当て及び再割り当てすることにより、複数のコンシューマにサービスを提供するためにプールされる。コンシューマは、一般に、提供されるリソースの正確な位置についての制御又は知識を持たないが、より高レベルの抽象化では位置(例えば、国、州、又はデータセンタ)を特定できる場合があるという点で、位置とは独立しているといえる。
迅速な弾力性:機能は、迅速かつ弾力的に、幾つかの場合自動的に、プロビジョニングして素早くスケール・アウトし、迅速にリリースして素早くスケール・インさせることができる。コンシューマにとって、プロビジョニングに利用可能なこれらの機能は、多くの場合、無制限であり、いつでもどんな量でも購入できるように見える。
サービスの測定:クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント)に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御及び最適化する。リソース使用を監視し、制御し、報告し、利用されるサービスのプロバイダとコンシューマの両方に対して透明性をもたらすことができる。
サービス・モデルは以下の通りである。
Software as a Service(SaaS):クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。これらのアプリケーションは、ウェブ・ブラウザ(例えば、ウェブ・ベースの電子メール)などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定の考え得る例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎をなすクラウド・インフラストラクチャを管理又は制御しない。
Platform as a Service(PaaS):プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上に配備するために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージなどの基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、配備されたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成に対して制御を有する。
Infrastructure as a Service(IaaS):コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアを配備及び動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングするために、コンシューマに提供される機能である。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対する制御、及び場合によってはネットワーク・コンポーネント(例えば、ホストのファイアウォール)選択の限定された制御を有する。
配備モデルは以下の通りである。
プライベート・クラウド:クラウド・インフラストラクチャは、ある組織のためだけに運営される。このクラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
コミュニティ・クラウド:クラウド・インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項(例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
パブリック・クラウド:クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術(例えば、クラウド間の負荷分散のためのクラウド・バースティング)によって結び付けられる2つ又はそれより多いクラウド(プライベート、コミュニティ、又はパブリック)の混成物である。
クラウド・コンピューティング環境は、無国籍性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
ここで図11を参照すると、クラウド・コンピューティング・ノードの一例の概略図が示される。クラウド・コンピューティング・ノード10は、好適なクラウド・コンピューティング・ノードの単なる一例であり、本明細書で説明される本発明の実施形態の使用又は機能の範囲に対するいずれかの制限を示唆することを意図するものではない。上記に関係なく、クラウド・コンピューティング・ノード10は、本明細書で上述された機能のいずれかを実装及び/又は実施することができる。
クラウド・コンピューティング・ノード10には、他の多数の汎用又は専用コンピューティング・システム環境又は構成で動作可能な、コンピュータ・システム/サーバ12が存在する。コンピュータ・システム/サーバ12と共に用いるのに好適な周知のコンピューティング・システム、環境、及び/又は構成の例としては、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ型デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能民生電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び、上述のシステム又はデバイス等のいずれかを含む分散型クラウド・コンピューティング環境が含まれる。
コンピュータ・システム/サーバ12は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム/サーバ12は、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施することができる。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔両方のコンピュータ・システム・ストレージ媒体に配置することができる。
図11に示されるように、クラウド・コンピューティング・ノード10のコンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム/サーバ12のコンポーネントは、これらに限定されるものではないが、1つ又は複数のプロセッサ又は処理ユニット16、システム・メモリ28、及びシステム・メモリ28を含む種々のシステム・コンポーネントをプロセッサ16に結合するバス18を含むことができる。
バス18は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のうちのいずれかの1つ又は複数を表す。限定ではなく例としては、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture、ISA)バス、マイクロ・チャネル・アーキテクチャ(Micro Channel Architecture、MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、及びPeripheral Component Interconnect(PCI)バスを含む。
コンピュータ・システム/サーバ12は、典型的には、種々のコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ12がアクセス可能ないずれかの利用可能媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不能媒体の両方とを含む。
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30及び/又はキャッシュ・メモリ32など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ12は、他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能の不揮発性磁気媒体(図示されておらず、典型的には「ハードドライブ」と呼ばれる)との間の読み出し及び書き込みのために、ストレージ・システム34を設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フレキシブル・ディスク」)との間の読み出し及び書き込みのための磁気ディスク・ドライブと、CD−ROM、DVD−ROM又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出し及び書き込みのための光ディスク・ドライブとを設けることができる。このような例においては、それぞれを、1つ又は複数のデータ媒体インターフェースによってバス18に接続することができる。以下でさらに示され説明されるように、メモリ28は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
限定ではなく例として、メモリ28内に、プログラム・モジュール42のセット(少なくとも1つ)を有するプログラム/ユーティリティ40、並びにオペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを格納することができる。オペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装形態を含むことができる。プログラム・モジュール42は、一般に、本明細書で説明される本発明の実施形態の機能及び/又は方法を実行する。
コンピュータ・システム/サーバ12は、キーボード、ポインティング・デバイス、ディスプレイ24等のような1つ又は複数の外部デバイス14;ユーザがコンピュータ・システム/サーバ12と対話することを可能にする1つ又は複数のデバイス;及び/又はコンピュータ・システム/サーバ12が1つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス(例えば、ネットワーク・カード、モデムなど)と通信することもできる。このような通信は、入力/出力(I/O)インターフェース22を経由して行うことができる。さらにまた、コンピュータ・システム/サーバ12は、ネットワーク・アダプタ20を介して、ローカル・エリア・ネットワーク(LAN)、汎用広域ネットワーク(WAN)、及び/又はパブリック・ネットワーク(例えば、インターネット)などの1つ又は複数のネットワークと通信することもできる。示されるように、ネットワーク・アダプタ20は、バス18を介して、コンピュータ・システム/サーバ12の他のコンポーネントと通信する。図示されないが、コンピュータ・システム/サーバ12と共に他のハードウェア及び/又はソフトウェア・コンポーネントを使用できることを理解されたい。例としては、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部のディスク・ドライブ・アレイ、RAIDシステム、テープドライブ、及びデータ・アーカイブ・ストレージ・システムなどが含まれる。
ここで図12を参照すると、例示的なクラウド・コンピューティング環境50が示される。示されるように、クラウド・コンピューティング環境50は、例えば携帯情報端末(PDA)又は携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、及び/又は自動車コンピュータ・システム54Nなどといった、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスと通信することができる、1つ又は複数のクラウド・コンピューティング・ノード10を含む。ノード10は、互いに通信することができる。これらのノードは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、若しくはハイブリッド・クラウド、又はこれらの組み合わせなど、1つ又は複数のネットワークにおいて物理的又は仮想的にグループ化することができる(図示せず)。これにより、クラウド・コンピューティング環境50は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、及び/又はソフトウェアを提供することが可能になる。図12に示されるコンピューティング・デバイス54A〜Nのタイプは単に例示であることを意図し、コンピューティング・ノード10及びクラウド・コンピューティング環境50は、いずれのタイプのネットワーク及び/又はネットワーク・アドレス指定可能な接続上でも(例えば、ウェブ・ブラウザを用いて)、いずれのタイプのコンピュータ化された装置とも通信できることを理解されたい。
ここで図13を参照すると、クラウド・コンピューティング環境50(図12)によって提供される機能抽象化層の組が示される。図13に示されるコンポーネント、層、及び機能は単に例示であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
ハードウェア及びソフトウェア層60は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、メインフレーム61と、RISC(Reduced Instruction Set Computer(縮小命令セット・コンピュータ))アーキテクチャ・ベースのサーバ62と、サーバ63と、ブレード・サーバ64と、ストレージ・デバイス65と、ネットワーク及びネットワーキング・コンポーネント66とが含まれる。幾つかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67及びデータベース・ソフトウェア68を含む。
仮想化層70は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーション及びオペレーティング・システム74、並びに仮想クライアント75を提供することができる。
一例においては、管理層80は、以下で説明される機能を提供することができる。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定82は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡と、リソースの消費に対する課金又は請求とを提供する。一例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータル83は、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント(Service Level Agreement、SLA)の計画及び履行85は、SLAに従って将来の要件が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
ワークロード層90は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロード及び機能の例には、マッピング及びナビゲーション91、ソフトウェア開発及びライフサイクル管理92、仮想教室教育配信93、データ分析処理94、トランザクション処理95、及び本発明の1つ又は複数の実施形態のガベージ・コレクション処理96が含まれる。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施する命令を含む製品を製造するようにすることもできる。
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で生じることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
上記に加えて、1つ又は複数の態様は、顧客環境の管理を提供するサービス・プロバイダによって供与、提供、配置、管理、サービス等を行うことができる。例えば、サービス・プロバイダは、1又は複数の顧客のために1つ又は複数の態様を実施するコンピュータ・コード及び/又はコンピュータ・インフラストラクチャの作成、保守、サポート等を行うことができる。見返りに、サービス・プロバイダは、例として、予約申し込み及び/又は報酬契約の下で顧客から支払いを受けることができる。付加的に又は代替的に、サービス・プロバイダは、1又は複数の第三者に対する広告内容の販売から支払いを受けることができる。
一態様において、1つ又は複数の実施形態を実施するために、アプリケーションを配備することができる。一例として、アプリケーションの配備は、1つ又は複数の実施形態を実施するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピュータ・インフラストラクチャを配置することができ、そこでは、コードは、コンピューティング・システムと協働して、1つ又は複数の実施形態を実施することができる。
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、プロセスを提供することができる。コンピュータ・システムは、コンピュータ可読媒体を含み、ここで、コンピュータ媒体は、1つ又は複数の実施形態を含む。コードは、コンピュータ・システムと協働して、1つ又は複数の実施形態を実施することができる。
種々の実施形態が上述されたが、これらは例にすぎない。例えば、1つ又は複数の実施形態を組み込み、使用するために、他のアーキテクチャのコンピューティング環境を使用することもできる。さらに、異なる命令、命令形式、命令フィールド、及び/又は命令の値を使用することができる。多くの変形が可能である。
さらに、他のタイプのコンピューティング環境の利益を得、これを使用することができる。一例として、プログラム・コードを格納及び/又は実行するのに適しており、システム・バスを介してメモリ要素に直接又は間接的に結合された少なくとも2つのプロセッサを含む、データ処理システムを使用することができる。メモリ要素は、例えば、プログラム・コードの実際の実行中に用いられるローカル・メモリ、大容量記憶装置、及び実行中に大容量記憶装置からコードを取り出さなければならない回数を減らすために少なくとも幾つかのプログラム・コードの一時的なストレージを提供するキャッシュ・メモリを含む。
入力/出力即ちI/Oデバイス(これらに限定されるものではないが、キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サムドライブ及び他のメモリ媒体等)は、直接システムに結合することもでき、又は介在するI/Oコントローラを介してシステムに結合することができる。ネットワーク・アダプタをシステムに結合させて、データ処理システムが、介在する私的ネットワーク又は公衆ネットワークを通じて他のデータ処理システム又は遠隔プリンタ若しくはストレージ・デバイスに結合できるようにすることもできる。モデム、ケーブル・モデム及びイーサネット・カードは、ネットワーク・アダプタの利用可能なタイプのうちのほんの数例である。
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈が特に明示しない限り、複数形も同様に含むことを意図したものである。「含む(comprise)」及び/又は「含んでいる(comprising)」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を指示するが、1つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらの群の存在又は追加を排除するものではないこともさらに理解されるであろう。
以下の特許請求の範囲に存在する場合、「手段又はステップと機能との組合せ(ミーンズ又はステップ・プラス・ファンクション)」要素の対応する構造、材料、動作及び均等物は、明確に特許請求された他の請求要素と共に機能を実行するための任意の構造、材料、又は行為を含むことを意図したものである。本発明の説明は、例証及び説明のためだけに提示されたものであり、網羅的であること又は本発明を開示した形態に限定することを意図したものではない。当業者には、本発明の範囲から逸脱しない多くの修正物及び変形物が明らかとなるであろう。実施形態は、本発明の原理及び実際の用途を最もよく説明するため、及び、当業者が、企図した特定の用途に適するように種々の修正を有する種々の実施形態に関して本発明を理解することができるように、選択され記述された。
10:クラウド・コンピューティング・ノード
12:コンピュータ・システム/サーバ
16、102:プロセッサ
18、108、208:バス
28、104、204、400:メモリ
50、100、200:コンピューティング環境
60:ハードウェア及びソフトウェア層
70:仮想化層
80:管理層
90:ワークロード層
106、206:インターフェース
202:ネイティブ中央処理ユニット
212:エミュレータ・コード
250:ゲスト命令
254:変換命令
256:ネイティブ命令
260:エミュレーション制御ルーチン
300:load doubleword(ld)命令
302a、302b:操作コード(オペコード)フィールド
302b:操作コード(オペコード)フィールド
304:結果フィールド(RT)
306:レジスタ・フィールド(RA)
308:別のフィールド(DS)
402:ロード監視領域
404、406:オブジェクト
420:アプリケーション・プログラム
422:ld命令
424:イベント・ベース分岐(EBB)ハンドラ
500:ポインタ・ストレージ領域(PSA)レジスタ
550:ロード監視領域レジスタ(LMRR)

Claims (20)

  1. コンピューティング環境内のガベージ・コレクションを容易にするためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、
    方法を実施するために処理回路により実行される命令を含み、前記方法は、
    前記コンピューティング環境のプロセッサ内で実行されるハンドラにより、処理の制御を取得することであって、前記処理の制御を取得することは、ロード命令の実行と、ロードされるオブジェクト・ポインタのアドレスがポインタ・ストレージ領域内に位置し、前記オブジェクト・ポインタは、ガベージ・コレクションが行われるメモリの選択された部分内の位置を示すと判断することとに基づく、取得することと、
    前記ハンドラにより処理の制御を取得することに基づいて、前記ハンドラにより、前記ポインタ・ストレージ領域から前記オブジェクト・ポインタを取得することであって、前記オブジェクト・ポインタは、前記オブジェクト・ポインタにより指し示されるオブジェクトの位置を示す、取得することと、
    前記ハンドラにより、前記オブジェクト・ポインタが修正されるべきかどうかを判断することと、
    前記オブジェクト・ポインタが修正されるべきとの判断に基づいて、前記ハンドラにより、前記オブジェクト・ポインタを修正して、修正されたオブジェクト・ポインタを提供することと、
    前記オブジェクト・ポインタを修正することに基づいて、前記修正されたオブジェクト・ポインタを選択された位置に格納することと、
    を含む、コンピュータ・プログラム。
  2. 前記選択された位置は、前記ポインタ・ストレージ領域内の位置又は前記ロード命令により指定された位置である、請求項1に記載のコンピュータ・プログラム。
  3. 前記処理の制御を取得することは、プロセッサ・ハードウェアにより発行された割り込みを介し、前記発行された割り込みは、前記ロード命令の実行と、ロードされる前記オブジェクト・ポインタの前記アドレスが前記ポインタ・ストレージ領域内に位置し、前記オブジェクト・ポインタは、ガベージ・コレクションが行われる前記メモリの選択された部分内の前記位置を示すと判断することとに基づく、請求項1に記載のコンピュータ・プログラム。
  4. ガベージ・コレクションが行われる前記メモリの選択された部分は、ガベージ・コレクションが行われない1つ又は複数の他のオブジェクトを含むオブジェクト領域の部分であり、ガベージ・コレクション中、ガベージ・コレクションが行われない前記オブジェクト領域にアクセスする1つ又は複数のアプリケーションは、処理を続行する、請求項1に記載のコンピュータ・プログラム。
  5. 前記方法は、
    前記ロード命令の実行から前記オブジェクト・ポインタの前記アドレスを判断することと、
    前記オブジェクト・ポインタの前記アドレスを、前記ポインタ・ストレージ領域に関連するデータと比較して、前記オブジェクト・ポインタの前記アドレスが前記ポインタ・ストレージ領域内に位置するかどうかを判断することと、
    前記比較が、前記オブジェクト・ポインタの前記アドレスが前記ポインタ・ストレージ領域内に位置すると判断することに基づいて、前記オブジェクト・ポインタを、前記メモリの選択された部分に関連する情報と比較して、前記オブジェクト・ポインタが前記メモリの選択された部分内の前記位置を示すと判断することと、
    前記オブジェクト・ポインタの前記アドレスが前記ポインタ・ストレージ領域内に位置し、前記オブジェクト・ポインタは、前記メモリの選択された部分内の前記位置を示すと判断することに基づいて、制御を前記ハンドラに提供することと、
    をさらに含む、請求項1に記載のコンピュータ・プログラム。
  6. 前記ポインタ・ストレージ領域は、複数のオブジェクト・ポインタ・アドレスを含むメモリの連続領域を含む、請求項1に記載のコンピュータ・プログラム。
  7. 前記ポインタ・ストレージ領域は、レジスタ又はメモリ内の位置の一方により指し示される、請求項1に記載のコンピュータ・プログラム。
  8. 前記メモリの選択された部分は、レジスタ又はメモリ内の位置の一方により指し示される、請求項1に記載のコンピュータ・プログラム。
  9. 前記レジスタは、前記メモリの選択された部分のベース・アドレスと、前記メモリの選択された部分のサイズとを含む、請求項8に記載のコンピュータ・プログラム。
  10. 前記ロード命令は、ロード操作を指定するための1つ又は複数の操作コード・フィールドと、前記オブジェクト・ポインタを取得するために用いられる結果フィールドと、前記ロード操作に用いられる1つ又は複数の他のフィールドとを含む、請求項1に記載のコンピュータ・プログラム。
  11. コンピューティング環境内のガベージ・コレクションを容易にするためのコンピュータ・システムであって、前記コンピュータ・システムは、
    メモリと、
    前記メモリと通信するプロセッサと、
    を備え、前記コンピュータ・システムは方法を実施するように構成され、前記方法は、
    前記コンピューティング環境のプロセッサ内で実行されるハンドラにより、処理の制御を取得することであって、前記処理の制御を取得することは、ロード命令の実行と、ロードされるオブジェクト・ポインタのアドレスがポインタ・ストレージ領域内に位置し、前記オブジェクト・ポインタは、ガベージ・コレクションが行われるメモリの選択された部分内の位置を示すと判断することとに基づく、取得することと、
    前記ハンドラにより処理の制御を取得することに基づいて、前記ハンドラにより、前記ポインタ・ストレージ領域から前記オブジェクト・ポインタを取得することであって、前記オブジェクト・ポインタは、前記オブジェクト・ポインタにより指し示されるオブジェクトの位置を示す、取得することと、
    前記ハンドラにより、前記オブジェクト・ポインタが修正されるべきかどうかを判断することと、
    前記オブジェクト・ポインタが修正されるべきとの判断に基づいて、前記ハンドラにより、前記オブジェクト・ポインタを修正して、修正されたオブジェクト・ポインタを提供することと、
    前記オブジェクト・ポインタを修正することに基づいて、前記修正されたオブジェクト・ポインタを選択された位置に格納することと、
    を含む、コンピュータ・システム。
  12. 前記処理の制御を取得することは、プロセッサ・ハードウェアにより発行された割り込みを介し、前記発行された割り込みは、前記ロード命令の実行と、ロードされる前記オブジェクト・ポインタの前記アドレスが前記ポインタ・ストレージ領域内に位置し、前記オブジェクト・ポインタは、ガベージ・コレクションが行われる前記メモリの選択された部分内の前記位置を示すと判断することとに基づく、請求項11に記載のコンピュータ・システム。
  13. ガベージ・コレクションが行われる前記メモリの選択された部分は、ガベージ・コレクションが行われない1つ又は複数の他のオブジェクトを含むオブジェクト領域の部分であり、ガベージ・コレクション中、ガベージ・コレクションが行われない前記オブジェクト領域にアクセスする1つ又は複数のアプリケーションは、処理を続行する、請求項11に記載のコンピュータ・システム。
  14. 前記方法は、
    前記ロード命令の実行から前記オブジェクト・ポインタの前記アドレスを判断することと、
    前記オブジェクト・ポインタの前記アドレスを、前記ポインタ・ストレージ領域に関連するデータと比較して、前記オブジェクト・ポインタの前記アドレスが前記ポインタ・ストレージ領域内に位置するかどうかを判断することと、
    前記比較が、前記オブジェクト・ポインタの前記アドレスが前記ポインタ・ストレージ領域内に位置すると判断することに基づいて、前記オブジェクト・ポインタを、前記メモリの選択された部分に関連する情報と比較して、前記オブジェクト・ポインタが前記メモリの選択された部分内の前記位置を示すと判断することと、
    前記オブジェクト・ポインタの前記アドレスが前記ポインタ・ストレージ領域内に位置し、前記オブジェクト・ポインタが前記メモリの選択された部分内の前記位置を示すと判断することに基づいて、制御を前記ハンドラに提供することと、
    をさらに含む、請求項11に記載のコンピュータ・システム。
  15. 前記選択された位置は、前記ポインタ・ストレージ領域内の位置又は前記ロード命令により指定された位置である、請求項11に記載のコンピュータ・システム。
  16. コンピューティング環境内のガベージ・コレクションを容易にするためのコンピュータ実施方法であって、前記コンピュータ実施方法は、
    前記コンピューティング環境のプロセッサ内で実行されるハンドラにより、処理の制御を取得することであって、前記処理の制御を取得することは、ロード命令の実行と、ロードされるオブジェクト・ポインタのアドレスがポインタ・ストレージ領域内に位置し、前記オブジェクト・ポインタは、ガベージ・コレクションが行われるメモリの選択された部分内の位置を示すと判断することとに基づく、取得することと、
    前記ハンドラにより処理の制御を取得することに基づいて、前記ハンドラにより、前記ポインタ・ストレージ領域から前記オブジェクト・ポインタを取得することであって、前記オブジェクト・ポインタは、前記オブジェクト・ポインタにより指し示されるオブジェクトの位置を示す、取得することと、
    前記ハンドラにより、前記オブジェクト・ポインタが修正されるべきかどうかを判断することと、
    前記オブジェクト・ポインタが修正されるべきとの判断に基づいて、前記ハンドラにより、前記オブジェクト・ポインタを修正して、修正されたオブジェクト・ポインタを提供することと、
    前記オブジェクト・ポインタを修正することに基づいて、前記修正されたオブジェクト・ポインタを選択された位置に格納することと、
    を含む、コンピュータ実施方法。
  17. 前記処理の制御を取得することは、プロセッサ・ハードウェアにより発行された割り込みを介し、前記発行された割り込みは、前記ロード命令の実行と、ロードされる前記オブジェクト・ポインタの前記アドレスが前記ポインタ・ストレージ領域内に位置し、前記オブジェクト・ポインタは、ガベージ・コレクションが行われる前記メモリの選択された部分内の前記位置を示すと判断することとに基づく、請求項16に記載のコンピュータ実施方法。
  18. ガベージ・コレクションが行われる前記メモリの選択された部分は、ガベージ・コレクションが行われない1つ又は複数の他のオブジェクトを含むオブジェクト領域の部分であり、ガベージ・コレクション中、ガベージ・コレクションが行われない前記オブジェクト領域にアクセスする1つ又は複数のアプリケーションは、処理を続行する、請求項16に記載のコンピュータ実施方法。
  19. 前記ロード命令の実行から前記オブジェクト・ポインタの前記アドレスを判断することと、
    前記オブジェクト・ポインタの前記アドレスを、前記ポインタ・ストレージ領域に関連するデータと比較して、前記オブジェクト・ポインタの前記アドレスが前記ポインタ・ストレージ領域内に位置するかどうかを判断することと、
    前記比較が、前記オブジェクト・ポインタの前記アドレスが前記ポインタ・ストレージ領域内に位置すると判断することに基づいて、前記オブジェクト・ポインタを、前記メモリの選択された部分に関連する情報と比較して、前記オブジェクト・ポインタが前記メモリの選択された部分内の前記位置を示すと判断することと、
    前記オブジェクト・ポインタの前記アドレスが前記ポインタ・ストレージ領域内に位置し、前記オブジェクト・ポインタは、前記メモリの選択された部分内の前記位置を示すと判断することに基づいて、制御を前記ハンドラに提供することと、
    をさらに含む、請求項16に記載のコンピュータ実施方法。
  20. コンピューティング環境内のガベージ・コレクションを容易にするためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、
    方法を実施するために処理回路により実行される命令を含み、前記方法は、
    前記コンピューティング環境のプロセッサ内で実行されるハンドラにより、処理の制御を取得することであって、前記処理の制御を取得することは、アクセスされるオブジェクト・ポインタが指定されたメモリ領域内の位置を示すとの判断に基づく、取得することと、
    前記ハンドラにより処理の制御を取得することに基づいて、前記ハンドラにより、アクションを取ることであって、前記アクションを取ることは、警告を与える、前記指定されたメモリ領域へのアクセスを防止する、又は前記オブジェクト・ポインタを修正し、前記修正されたオブジェクト・ポインタを格納することのうちの少なくとも1つを含む、アクションを取ることと、
    を含む、コンピュータ・プログラム。
JP2017564432A 2015-06-30 2016-06-21 特殊命令を使用しないガベージ・コレクション Active JP6697486B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/755,748 US10176093B2 (en) 2015-06-30 2015-06-30 Pauseless location and object handle based garbage collection
US14/755,748 2015-06-30
US14/941,558 2015-11-14
US14/941,558 US10180902B2 (en) 2015-06-30 2015-11-14 Pauseless location and object handle based garbage collection
PCT/IB2016/053675 WO2017001967A1 (en) 2015-06-30 2016-06-21 Garbage collection absent use of special instructions

Publications (2)

Publication Number Publication Date
JP2018524696A true JP2018524696A (ja) 2018-08-30
JP6697486B2 JP6697486B2 (ja) 2020-05-20

Family

ID=57607955

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017564432A Active JP6697486B2 (ja) 2015-06-30 2016-06-21 特殊命令を使用しないガベージ・コレクション

Country Status (6)

Country Link
US (1) US10180902B2 (ja)
JP (1) JP6697486B2 (ja)
CN (1) CN107636624B (ja)
DE (1) DE112016001686B4 (ja)
GB (1) GB2556547B (ja)
WO (1) WO2017001967A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10783073B2 (en) * 2018-02-23 2020-09-22 International Business Machines Corporation Chronologically ordered out-of-place update key-value storage system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0442338A (ja) * 1990-06-07 1992-02-12 Fuji Xerox Co Ltd ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法
JPH06230963A (ja) * 1993-01-29 1994-08-19 Oki Electric Ind Co Ltd メモリアクセス制御装置
JPH09106377A (ja) * 1995-10-11 1997-04-22 Casio Comput Co Ltd メモリ管理装置
JP2007026368A (ja) * 2005-07-21 2007-02-01 Canon Inc システムlsi用マルチタスクos
JP2014044472A (ja) * 2012-08-24 2014-03-13 Fujitsu Ltd ガーベジコレクションのための情報処理方法、プログラム及び装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5088036A (en) 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
US5560003A (en) * 1992-12-21 1996-09-24 Iowa State University Research Foundation, Inc. System and hardware module for incremental real time garbage collection and memory management
US5920876A (en) 1997-04-23 1999-07-06 Sun Microsystems, Inc. Performing exact garbage collection using bitmaps that identify pointer values within objects
US6098089A (en) 1997-04-23 2000-08-01 Sun Microsystems, Inc. Generation isolation system and method for garbage collection
US5873105A (en) * 1997-06-26 1999-02-16 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including write barrier associated with a source instance of a partially relocated object
WO1999045481A1 (en) 1998-03-03 1999-09-10 Geodesic Systems, Inc. Transparent garbage collection of resources
US6308185B1 (en) * 1998-03-06 2001-10-23 Sun Microsystems, Inc. Methods and apparatus for generational dynamic management of computer memory
US6874074B1 (en) 2000-11-13 2005-03-29 Wind River Systems, Inc. System and method for memory reclamation
DE10329680A1 (de) * 2003-07-01 2005-02-10 Universität Stuttgart Prozessorarchitektur für exakte Zeigeridentifizierung
US8108628B2 (en) * 2003-08-04 2012-01-31 Azul Systems, Inc. Processor instruction used to perform a matrix test to generate a memory-related trap
US7469324B2 (en) 2005-01-07 2008-12-23 Azul Systems, Inc. System and method for concurrent compacting self pacing garbage collection using loaded value and access barriers
US8131955B2 (en) 2004-04-15 2012-03-06 Microsoft Corporation Ephemeral garbage collection using a tracking mechanism on a card table to determine marked bundles
US7287049B1 (en) 2004-06-29 2007-10-23 Sun Microsystems, Inc. Tracking minimum mutator utilization (MMU) constraints in a garbage-collection system
US7313566B1 (en) 2004-12-23 2007-12-25 Sun Microsystems, Inc. Method and apparatus for isolating selected heap objects using a faulting address trap
US8452938B1 (en) * 2004-12-30 2013-05-28 Azul Systems, Inc. Garbage collection with memory quick release
US7647458B1 (en) * 2004-12-30 2010-01-12 Azul Systems, Inc. Garbage collection
US20060248130A1 (en) * 2005-04-22 2006-11-02 Steffen Grarup Process and system for real-time relocation of objects during garbage collection
US7512745B2 (en) 2006-04-28 2009-03-31 International Business Machines Corporation Method for garbage collection in heterogeneous multiprocessor systems
US7900011B2 (en) 2007-07-19 2011-03-01 International Business Machines Corporation Apparatus, system, and method for improving system performance in a large memory heap environment
US20090063595A1 (en) 2007-09-05 2009-03-05 Mark Graham Stoodley Method and apparatus for updating references to objects in a garbage collection operation
US8612493B2 (en) * 2008-10-30 2013-12-17 International Business Machines Corporation Allocation cache premarking for snap-shot-at-the-beginning concurrent mark-and-sweep collector
US8402218B2 (en) 2009-12-15 2013-03-19 Microsoft Corporation Efficient garbage collection and exception handling in a hardware accelerated transactional memory system
US8327109B2 (en) 2010-03-02 2012-12-04 Advanced Micro Devices, Inc. GPU support for garbage collection
US8601036B2 (en) 2011-03-23 2013-12-03 International Business Machines Corporation Handling persistent/long-lived objects to reduce garbage collection pause times

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0442338A (ja) * 1990-06-07 1992-02-12 Fuji Xerox Co Ltd ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法
JPH06230963A (ja) * 1993-01-29 1994-08-19 Oki Electric Ind Co Ltd メモリアクセス制御装置
JPH09106377A (ja) * 1995-10-11 1997-04-22 Casio Comput Co Ltd メモリ管理装置
JP2007026368A (ja) * 2005-07-21 2007-02-01 Canon Inc システムlsi用マルチタスクos
JP2014044472A (ja) * 2012-08-24 2014-03-13 Fujitsu Ltd ガーベジコレクションのための情報処理方法、プログラム及び装置

Also Published As

Publication number Publication date
GB2556547A (en) 2018-05-30
GB2556547B (en) 2021-07-14
JP6697486B2 (ja) 2020-05-20
CN107636624A (zh) 2018-01-26
DE112016001686B4 (de) 2023-10-12
DE112016001686T5 (de) 2017-12-28
GB201801041D0 (en) 2018-03-07
WO2017001967A1 (en) 2017-01-05
US10180902B2 (en) 2019-01-15
US20170004076A1 (en) 2017-01-05
CN107636624B (zh) 2021-06-15

Similar Documents

Publication Publication Date Title
US10467135B2 (en) Multi-section garbage collection
US10635603B2 (en) Multi-engine address translation facility
US10515020B2 (en) Marking storage keys to indicate memory used to back address translation structures
US10168902B2 (en) Reducing purging of structures associated with address translation
US9720824B2 (en) Garbage collection handler to update object pointers
US10176093B2 (en) Pauseless location and object handle based garbage collection
US10248573B2 (en) Managing memory used to back address translation structures
US10162764B2 (en) Marking page table/page status table entries to indicate memory used to back address translation structures
JP7413371B2 (ja) 部分的に完了された命令の移行
US11036519B2 (en) Simultaneously capturing status information for multiple operating modes
US10956302B2 (en) Code coverage collection based on limited select debug information
JP6697486B2 (ja) 特殊命令を使用しないガベージ・コレクション
US11029950B2 (en) Reducing latency of common source data movement instructions
JP2022518672A (ja) オーバーフロー例外の命令割込み抑制

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180105

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191001

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191212

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200421

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200424

R150 Certificate of patent or registration of utility model

Ref document number: 6697486

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150