JP2022540972A - 高性能メモリ管理システムにおけるガーベジコレクションの回避 - Google Patents

高性能メモリ管理システムにおけるガーベジコレクションの回避 Download PDF

Info

Publication number
JP2022540972A
JP2022540972A JP2021563430A JP2021563430A JP2022540972A JP 2022540972 A JP2022540972 A JP 2022540972A JP 2021563430 A JP2021563430 A JP 2021563430A JP 2021563430 A JP2021563430 A JP 2021563430A JP 2022540972 A JP2022540972 A JP 2022540972A
Authority
JP
Japan
Prior art keywords
thread
memory area
memory
computing system
response
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021563430A
Other languages
English (en)
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2022540972A publication Critical patent/JP2022540972A/ja
Pending legal-status Critical Current

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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Power Sources (AREA)

Abstract

スレッドの作成を検出し、メモリ領域をスレッドに関連づけられたオブジェクトへの専用にし、スレッドの停止に応答してメモリ領域の再利用を行う技術を提供し得る、システム、装置および方法。一例において、メモリ領域はヒープ領域であり、再利用は、ヒープ領域に関するガーベジコレクションプロセスの少なくとも一時停止相およびコピー相をバイパスする。

Description

実施形態は、概して、アーキテクチャのコンピュータ化におけるメモリ管理に関する。より具体的には、実施形態は、高性能メモリ管理システムにおけるガーベジコレクションの回避に関する。
動作の最中に、コンピュータプログラムは、プログラムの実行に関与する動作を実行すべく、様々なオブジェクトにメモリを割り当て得る。コンピュータプログラムが、もはや使用されていないオブジェクトからのメモリの割り当て解除をしないとき、利用できるメモリは不必要に減少し、性能に悪影響を及ぼし得、システム障害につながり得る(例えば、追加のメモリが全く利用できないとき)。管理された実行時アプリケーションなどのプログラムが、もはや使用されていないメモリを自動的に再利用する「ガーベジコレクション」を使用してもよいが、かなりの改善の余地が残っている。例えば、従来のガーベジコレクションは、プロセッサ使用、ユーザインタフェースにおける予期しない一時停止、追加の電力消費(例えば、バッテリ寿命の減少)などに関して、性能に悪影響を与え得る。
本実施形態の様々な利点は、以下の明細書および添付の特許請求の範囲を読むことによって、および、以下の図面を参照することによって、当業者には明らかになるであろう。
実施形態に係る、スレッドが作成された後の割り当て空間の例を示す。 実施形態に係る、スレッドに関連づけられたオブジェクトのメモリ領域の専用化の例のフロー図である。 実施形態に係る、メモリ再利用後の割り当て空間の例を示す。 実施形態に係る、メモリ再利用の例のフロー図である。 実施形態に係る、メモリを管理する方法の例のフローチャートである。 実施形態に係る、メモリを管理する方法の例のフローチャートである。 実施形態に係る、性能強化コンピューティングシステムの例のブロック図である。 実施形態に係る、半導体パッケージ装置の例を示す。 実施形態に係る、プロセッサの例のブロック図である。 実施形態に係る、マルチプロセッサベースのコンピューティングシステムの例のブロック図である。
ここで図1に戻ると、スレッドが作成された後に、割り当て空間20(20a-20e)が示される。実施形態において、割り当て空間20は、スレッドを作成および停止(例えば、破壊)するコンピュータプログラムのランタイム動作の最中に、動的なメモリ割り当てを行うように使用されるヒープメモリの一部である。ヒープメモリはまた、例えば、大きいオブジェクト領域(例えば、比較的大きいプリミティブ配列および/または文字列配列を格納する)、イメージ領域(例えば、実行可能なファイル、リソースファイルなどを格納する)、共有領域(例えば、複数の処理によって共有されるオブジェクトを格納する)、動かない領域(例えば、長寿命のオブジェクトを格納する)などの他のメモリ領域(示されない)を含み得る。一例において、割り当て空間20は、ガーベジコレクションプロセスの最中に目標とされるかもしれない比較的短寿命のオブジェクトを格納する。更に、スレッドは、豊富な特別な効果を提供し、短寿命のオブジェクトに比較的大量のメモリを消費させる、ユーザインタフェースアクティビティに対応し得る。
図示される例において、割り当て空間20は、第1の領域20a("領域1")、第2の領域20b("領域2")、第3の領域20c("領域3")、第4の領域20d("領域4")、および第5の領域20e("領域5")を含む。示される領域の数は、説明の目的のみであり、状況に応じて変わってもよい。示された割り当て空間20の領域は、特定のスレッドおよび/またはアクティビティに個別で専用のものである。例えば、第2の領域20bおよび第3の領域20cは、第1のスレッド("スレッド1")に専用であってよく、第4の領域20dは第2のスレッド("スレッド2")に専用であってよい、などである。実施形態において、第2の領域20bおよび第3の領域20cにおけるオブジェクトは、余計なコピー動作を行うことなく、第1のスレッドと関連づけられた機能の間で共有され得る。同様に、第4の領域20dにおけるオブジェクトは、余計なコピー動作を行うことなく、第2のスレッドと関連づけられた機能の間で共有され得る。より詳細に説明されるように、示された解決手段は性能を強化することを可能にする。
図2は、メモリ割り当て手段(例えば、フレームワーク層ランタイムマネジャー)が、新たなスレッドを作成する機能24(方法"onCreate()"を呼び戻す)を検出する、フロー図22を示す。図示される例において、メモリ割り当て手段は、第1のコマンド26("StartMemoryRegion()")を発行することによって、スレッドにメモリ領域の専用化をトリガする。アプリケーションが機能24を呼び出すとき、新たなスレッドと関連づけられた全てのオブジェクト(例えば"オブジェクトa"、"オブジェクトb")が、専用メモリ領域に割り当てられる。機能24の呼び出しに加えて、メモリ割り当て手段は、スレッドベースの割り当てをアクティブ化するように、呼び出しスレッドオブジェクトにフラグを設定してもよい。実施形態において、メモリ割り当て手段はまた、専用メモリ領域にスレッドをマッピングする。以下の表1は、そのようなマッピングの例を示す。
表1
Figure 2022540972000002
機能24にオブジェクトの割り当てが行われるとき、示されたメモリ割り当て手段は、問題のメモリ領域への専用のオブジェクトを中断するように、第2のコマンド28("StopMemoryRegion()")を発行する。メモリ割り当て手段は、また、スレッドの停止に応答して、スレッドベースの割り当てを非アクティブ化するように、スレッドオブジェクトを呼び出すフラグをクリアしてもよい。実施形態において、メモリ割り当て手段はまた、適切なスレッドトゥリージョンのテーブルマッピングエントリをクリアする。第1のコマンド26および第2のコマンド28を実装する疑似コードの例を以下に示す。
StartMemoryRegion(){
threadId=GetThreadId();
SetActivityModeAllocate(threadId);
regionId=AllocateNewRegion();
threadIdおよびregionIdをテーブルに記録;
StopMemoryRegion(){
threadId=GetThreadId();
UnsetActivityModeAllocate(threadId);
選択された領域のサイズが不十分な場合、追加の未使用領域が、スレッドに関連づけられたオブジェクトに専用とされてもよい。実施形態において、メモリ割り当て手段は、スレッドがスレッド割り当てモードにあるかどうか確認する。否の場合、メモリ割り当て手段は、通常の割り当てモードに切り替わってもよい。そうでなければ、メモリ割り当て手段は、特定の領域識別子を見つけるようにテーブルを探索し、指定された領域にオブジェクトを割り当てることを試みる。領域が満杯である場合、メモリ割り当て手段は、スレッドに別の領域を割り当てて、対応するテーブルを更新してもよい。追加の領域の選択を実装する疑似コードの例が以下に示される。
AllocateObject(){
threadId=GetThreadId();
checkActivityMode(threadId);
If not true:
//そうでないならオブジェクトに割り当てるオリジンコードパス:
regionid=FindRegionID(threadid);
AllocateObject(regionid);
If not enough space:
newRegionId=AllocateNewRegion();
テーブルへのnewRegionIdを更新する。
AllocateObject(newRegionid);
図1および図3に言及し続けると、スレッドの停止は、スレッドに専用の領域の全ての再利用をトリガし得る。例えば、スレッド1の停止は、再利用されている第2の領域20bおよび第3の領域20cの全てのオブジェクトをもたらす。実施形態において、スレッドの停止は、アプリケーションからの高いレベル(例えば、上方の層)の情報に基づいて検出される。特に留意すべきは、(例えば、GCがルートオブジェクトセットを収集して、どの領域が再利用されるべきか判断することを可能にするように)全ての他のスレッドが一時停止する一時停止相などのガーベジコレクション(GC)動作は、バイパスされてもよいことである。GCがルートセットから始まって全ての生きているオブジェクトをスキャンして、それらのオブジェクトを未使用領域(例えば、デスティネーション領域)にコピーするコピー相などの他のGC動作もまた、示された解決手段においてはバイパスされる。実際に、スレッドが短寿命のオブジェクトのみを生成する場合、GC動作を実行する頻度はゼロに近づいてもよい。従って、プロセッサ使用、ユーザインタフェースにおける予期しない一時停止、追加の電力消費(例えば、バッテリ寿命の減少)などに関する性能が強化される。
図4は、メモリ割り当て手段が、存在するスレッドを終了させる機能32(方法"onDestroy()"を呼び戻す)を検出する、フロー図33を示す。実施形態において、機能32は、バックグラウンドで実行している多すぎるアプリケーションから生じ、アプリケーションを閉じさせてアクティブなアプリケーションリストから取り除く、などである。図示される例において、メモリ割り当て手段は、コマンド34("ReclaimMemoryRegion()")を発行することによって、スレッドに専用の1または複数のメモリ領域の再利用をトリガする。アプリケーションが機能32を呼び出すとき、スレッドに専用の全てのメモリ領域が再利用されるであろう。実施形態において、メモリ割り当て手段は、例えば、適切なスレッド識別子に関する表1などのテーブルを探索することによって、スレッドのための選択された領域を特定する。領域は一度に1つ再利用されてもよい。コマンド34を実装する疑似コードの例が以下に示される。
ReclaimMemoryRegion(){
threadid=GetThreadId();
allRegionIds=FindAllRegionIDs(threadid);
For each id in allRegionIds:
FreeRegion(id);
図5はメモリを管理する方法40を示す。方法40は、概して、例えば上記のメモリ割り当て手段(図1)などのメモリ割り当て手段において実装され得る。より具体的には、方法40は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、プログラマブルROM(PROM)、ファームウェア、フラッシュメモリなどの機械またはコンピュータ可読記憶媒体、例えばプログラマブルロジックアレイ(PLA)、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)などの構成可能なロジック、例えば、などの特定用途向け集積回路(ASIC)、相補型金属酸化物半導体(CMOS)、またはトランジスタ-トランジスタロジック(TTL)技術などの回路技術を使用する機能固定型ハードウェアロジック、またはそれらの任意の組み合わせに格納された論理命令のセットにおける1または複数のモジュールとして実装され得る。
例えば、方法40において示される動作を実行するコンピュータプログラムコードは、Java(登録商標)、SMALLTALK(登録商標)、C++などのオブジェクト指向プログラミング言語、および、"C"プログラミング言語または類似のプログラミング言語などの従来の手続き型プログラミング言語を含む1または複数のプログラミング言語の任意の組み合わせで書かれ得る。さらに、ロジック命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、状態設定データ、集積回路用構成データ、電子回路をパーソナライズする状態情報、および/またはハードウェア固有の他の構造コンポーネント(例えば、ホストプロセッサ、中央演算処理装置(CPU)、マイクロコントローラなど)を含み得る。
示される処理ブロック42は、スレッドの開始を検出し、そこでは第1メモリ領域は、ブロック44においてスレッドに関連づけられたオブジェクトに専用である。実施形態において、ブロック44はスレッドベースの割り当てをアクティブ化し、スレッドを第1メモリ領域にマッピングすることを含む。ブロック46において、スレッドの停止が開始されたかどうかに関する判断が行われてもよい。開始されていない場合、図示される方法40はブロック46を反復する。同一のスレッドに関連づけられたオブジェクトは、類似のライフサイクルを有すると予測されることに、特に留意する。従って、スレッド停止の検出のとき、ブロック48はスレッドの停止に応答して第1メモリ領域の第1再利用を行う。実施形態において、方法40は更に、スレッドの停止に応答してスレッドベースの割り当てを非アクティブ化し、第1メモリ領域からスレッドをアンマッピングすることを含む。一例において、第1メモリ領域はヒープ領域であり、第1再利用はヒープ領域に関するガーベジコレクションプロセスの一時停止相およびコピー相をバイパスする。さらに、スレッドはユーザインタフェース(UI)アクティビティに対応し得る。方法40は、したがって、プロセッサ使用、ユーザインタフェースにおける予期しない一時停止、追加の電力消費(例えば、バッテリ寿命の減少)などに関する性能を強化し得る。
図示される方法40は、例えば、CまたはC++アプリケーションなどのネイティブなアプリケーションのために、ならびに、もはや使用されていないメモリを自動的に再利用する、ガーベジコレクションを有する管理された実行時アプリケーションのために使用されてよい。管理された実行時アプリケーションは、限定されることはないが、例えば、HTML5(Hypertext Markup Language 5、例えば、HTML5.2、W3C Recommendation、2017年12月14日)、JAVASCRIPT(登録商標)、C#(例えば、C#7.3、MICROSOFT(登録商標) Corp.、2018年5月7日)、Ruby(例えば、Ruby2.6.3、Y.Matsumoto、2019年4月17日)、Perl(例えば、Perl5.28.2、Perl.org、2019年4月19日)、Python(登録商標)(例えば、Python(登録商標)3.7.3、Python(登録商標)Software Foundation、2019年3月25日)、Java(登録商標)(例えば、Java(登録商標)10、ORACLE Corp.、2018年3月20日)などを含み得る。
図6はメモリを管理する別の方法50を示す。方法50は、概して、例えば上記のメモリ割り当て手段(図1)などのメモリ割り当て手段において実装され得る。より具体的には、方法50は、RAM、ROM、PROM、ファームウェア、フラッシュメモリなどの機械またはコンピュータ可読記憶媒体に格納されている論理命令のセット、例えば、PLA、FPGA、CPLDなどの構成可能なロジック、例えば、ASIC、CMOS、またはTTL技術などの回路技術を使用する機能固定型ハードウェアロジック、またはそれらの任意の組み合わせの1または複数のモジュールとして実装され得る。
示される処理ブロック52は、第1メモリ領域が満杯であるかどうか判断する。満杯である場合、第2メモリ領域は、ブロック54において、スレッドに関連づけられたオブジェクトに専用となり得る。さらに、スレッドの停止が開始されたか否か、ブロック56において判断が行われ得る。開始されていない場合、図示される方法50はブロック56を反復する。スレッド停止の検出のとき、ブロック58は、スレッドの停止に応答して第2メモリ領域の第2再利用を行う。従って、方法50は更に、比較的大きな数のオブジェクト(例えば、スタックよりもずっと大きく、したがって、スタックオーバーフローに関する不安を解消する)を割り当てるスレッドをサポートすることによって、性能を強化する。
ここで図7に戻ると、性能強化コンピューティングシステム150が示される。システム150は概して、計算機能(例えば、携帯情報端末(PDA)、ノートブックコンピュータ、タブレットコンピュータ、コンバーチブル型タブレット、サーバ)、通信機能(例えば、スマートフォン)、撮像機能(例えば、カメラ、カムコーダ)、メディア再生機能(例えば、スマートテレビ(TV))、ウェアラブル機能(例えば、腕時計、眼鏡、帽子、靴、宝石)、車両機能(例えば、車、トラック、バイク)、ロボット機能(例えば、自律ロボット)など、またはそれらの任意の組み合わせを有する、電子デバイス/プラットフォームの一部であってよい。図示される例において、システム150は、システムメモリ156に結合されている統合メモリコントローラ(IMC)154を有するホストプロセッサ152(例えば、中央演算処理装置/CPU)を含む。
示されるシステム150はまた、システムオンチップ(SoC)として半導体ダイ162上にホストプロセッサ152およびグラフィックスプロセッサ160と共に実装される入力出力(IO)モジュール158を含む。例えば、図示のIOモジュール158は、ディスプレイ164(例えば、タッチスクリーン、液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ)と、ネットワークコントローラ166(例えば、有線および/または無線NIC)と、大容量ストレージ168(例えば、ハードディスクドライブ(HDD)、光ディスク、ソリッドステートドライブ(SSD)、フラッシュメモリ)と通信する。
実施形態において、ホストプロセッサ152および/またはIOモジュール158は、既に説明された方法40(図5)および/または方法50(図6)の1または複数の態様を実行するように、システムメモリ156および/または大容量ストレージ168から回収されたプログラム命令170を実行する。従って、示された命令170の実行は、コンピューティングシステム150に、スレッドの作成を検出させ、システムメモリ156における第1メモリ領域をスレッドに関連づけられたオブジェクトへの専用にさせ、スレッドの停止に応答して第1メモリ領域の第1再利用を行わせてもよい。実施形態において、第1メモリ領域はヒープ領域であり、第1再利用は、ヒープ領域に関するガーベジコレクションプロセスの少なくとも一時停止相およびコピー相をバイパスする。さらに、スレッドは、オブジェクトを短寿命にし、比較的大量のシステムメモリ156を消費させる、(例えば、高性能ゲームアプリケーションの)UIアクティビティに対応してもよい。そのような場合、示されたディスプレイ164は、UIアクティビティに関連づけられた情報を視覚的に表す。
既に留意されるように、(例えば、GCがルートオブジェクトセットを収集すること、およびどの領域が再利用されるべきか判断することを可能するように)全て他のスレッドが一時停止される一時停止相などのGC動作は、バイパスされてもよい。GCがルートセットから始まって全ての生きているオブジェクトをスキャンして、それらのオブジェクトを未使用領域(例えば、デスティネーション領域)にコピーするコピー相などの他のGC動作もまた、示された解決手段においてはバイパスされる。従って、プロセッサ使用、ユーザインタフェースにおける予期しない一時停止、追加の電力消費(例えば、バッテリ寿命の減少)などに関するコンピューティングシステム150の性能が強化される。
図8は、半導体装置172(例えば、チップ、ダイ、パッケージ)を示す。図示の装置172は、1または複数の基板174(例えば、シリコン、サファイヤ、ヒ化ガリウム)と、1または複数の基板174に結合されたロジック176(例えば、トランジスタ配列およびその他集積回路(IC)コンポーネント)とを備える。実施形態において、ロジック176は、既に説明された方法40(図5)および/または方法50(図6)の1または複数の態様を実装する。従って、ロジック176は、スレッドの作成を検出し、第1メモリ領域をスレッドに関連づけられたオブジェクトへの専用にし、スレッドの停止に応答して第1メモリ領域の第1再利用を行ってもよい。実施形態において、第1メモリ領域はヒープ領域であり、第1再利用は、ヒープ領域に関するガーベジコレクションプロセスの少なくとも一時停止相およびコピー相をバイパス(例えば、回避)する。したがって、プロセッサ使用、ユーザインタフェースにおける予期しない一時停止、追加の電力消費(例えば、バッテリ寿命の減少)などに関する装置172の性能が強化される。
ロジック176は、少なくとも部分的に、構成可能なロジックまたは機能固定型ハードウェアロジックにおいて実装され得る。一例において、ロジック176は、基板174内に配置される(例えば、埋め込まれる)トランジスタチャネル領域を含む。従って、ロジック176と基板174との間のインタフェースは、階段接合でないことがあり得る。ロジック176はさらにまた、基板174の初期ウェハ上に成長するエピタキシャル層を備えるとみなされ得る。
図9は、一実施形態によるプロセッサコア200を示す。プロセッサコア200は、マイクロプロセッサ、埋め込み型プロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、または、コードを実行する他のデバイスなどの任意のタイプのプロセッサに対するコアであり得る。1つのプロセッサコア200のみが図9に示されているが、処理要素は、代替的に、図9に示されるプロセッサコア200の1より多くのものを含み得る。プロセッサコア200は、シングルスレッドコアであってもよく、または、少なくとも1つの実施形態について、プロセッサコア200は、それが、コアごとに1つより多くのハードウェアスレッドコンテキスト(若しくは「論理プロセッサ」)を含み得る、という点で、マルチスレッドであってもよい。
図9はまた、プロセッサコア200に結合されるメモリ270を示す。メモリ270は、当業者にとって既知か、そうでなければ当業者に利用できる(メモリ階層の様々な層を含む)多種多様なメモリのいずれかであり得る。既に説明されたように、メモリ270は、プロセッサコア200によって実行される1または複数のコード213命令を含み得、コード213は、方法40(図5)および/または方法50(図6)を実装し得る。プロセッサコア200は、コード213によって示される命令のプログラムシーケンスに従う。各命令は、フロントエンド部210に入り得、1または複数デコーダ220によって処理され得る。デコーダ220は、予め定義されたフォーマットの固定幅マイクロオペレーションなどのマイクロオペレーションをその出力として生成してもよく、または、元のコード命令を反映する他の命令、マイクロ命令、若しくは制御信号を生成してもよい。示されるフロントエンド部210はまた、レジスタリネーミングロジック225と、スケジューリングロジック230とを含み、それらは概して、リソースを割り当てて、変換命令に対応するオペレーションを実行のためにキューに入れる。
実行ユニット255-1から255-Nのセットを有する実行ロジック250を含むプロセッサコア200が示される。いくつかの実施形態は、特定の機能または機能のセット専用の複数の実行ユニットを含み得る。他の実施形態は、1つの実行ユニットのみ、または、特定の機能を実行し得る1つの実行ユニットを含み得る。示される実行ロジック250は、コード命令によって指定されるオペレーションを実行する。
コード命令によって指定された動作の実行の完了の後、バックエンドロジック260は、コード213の命令を回避させる。一実施形態において、プロセッサコア200は、アウトオブオーダ実行を可能にするが、命令のインオーダリタイアメントを必要とする。リタイアメントロジック265は、当業者に既知の様々な形態をとり得る(例えば、リオーダバッファまたは同様のもの)。このようにして、プロセッサコア200は、少なくとも、デコーダによって生成される出力、レジスタリネーミングロジック225によって利用されるハードウェアレジスタおよびテーブル、並びに、実行ロジック250によって修正される任意のレジスタ(不図示)の観点から、コード213の実行中に変換される。
図9に示されないが、処理要素は、プロセッサコア200を有するチップ上に他の要素を含み得る。例えば、処理要素は、プロセッサコア200と共にメモリ制御ロジックを含み得る。処理要素は、I/O制御ロジックを含み得、および/または、メモリ制御ロジックと統合されているI/O制御ロジックを含み得る。処理要素はまた、1または複数のキャッシュを含み得る。
ここで図10を参照すると、実施形態に従うコンピューティングシステム1000の実施形態のブロック図が示される。図10に示されるものは、第1の処理要素1070および第2の処理要素1080を含むマルチプロセッサシステム1000である。2つの処理要素1070および1080が示されているが、システム1000の実施形態はまた、1つのそのような処理要素のみを含み得ることが理解される。
システム1000は、ポイントツーポイントインターコネクトシステムとして示され、第1の処理要素1070および第2の処理要素1080は、ポイントツーポイントインターコネクト1050を介して結合され得る。図10に示される任意または全てのインターコネクトは、ポイントツーポイントインターコネクトではなくむしろマルチドロップバスとして実装され得ることが理解されるべきである。
図10に示されるように、処理要素1070および1080のそれぞれは、第1および第2のプロセッサコア(すなわち、プロセッサコア1074aおよび1074bおよびプロセッサコア1084aおよび1084b)を含むマルチコアプロセッサであり得る。そのようなコア1074a、1074b、1084a、1084bは、図9に関連して上述したものと類似の態様で、命令コードを実行するように構成され得る。
各処理要素1070、1080は、少なくとも1つの共有されるキャッシュ1896a、1896bを含み得る。共有キャッシュ1896a、1896bは、それぞれコア1074a、コア1074bおよびコア1084a、コア1084bなどのプロセッサの1または複数のコンポーネントによって利用されるデータ(例えば、命令)を格納し得る。例えば、共有キャッシュ1896a、1896bは、プロセッサのコンポーネントによるより高速なアクセスのために、メモリ1032、1034に格納されたデータをローカルにキャッシュし得る。1または複数の実施形態において、共有キャッシュ1896a、1896bは、レベル2(L2)、レベル3(L3)、レベル4(L4)若しくは他のレベルのキャッシュなどの1または複数の中間レベルのキャッシュ、ラストレベルキャッシュ(LLC)、および/またはそれらの組み合わせを含み得る。
2つの処理要素1070、1080のみが示されるが、実施形態の範囲はそれに限定されないことが理解されるであろう。他の実施形態において、1または複数の追加の処理要素が所与のプロセッサに存在し得る。代替的に、処理要素1070、1080の1または複数は、アクセラレータまたはフィールドプログラマブルゲートアレイなどのプロセッサ以外の要素であり得る。例えば、追加の処理要素は、第1のプロセッサ1070と同一の追加のプロセッサ、第1のプロセッサ1070と異種または非対称である追加のプロセッサ、アクセラレータ(例えば、グラフィックスアクセラレータまたはデジタル信号処理(DSP)ユニットなど)、フィールドプログラマブルゲートアレイ、または任意の他の処理要素を含み得る。アーキテクチャ特性、マイクロアーキテクチャ特性、熱特性、電力消費特性、および同様のものを含む、多種多様の価値基準の観点から、処理要素1070、1080の間に様々な差異が存在し得る。これらの差異は、処理要素1070、1080の間の非対称性および異種性として、自身を効果的に表し得る。少なくとも1つの実施形態について、様々な処理要素1070、1080は、同一のダイパッケージに存在し得る。
第1の処理要素1070は、メモリコントローラロジック(MC)1072およびポイントツーポイント(P―P)インタフェース1076および1078をさらに含み得る。同様に、第2の処理要素1080は、MC1082、並びに、P-Pインタフェース1086および1088を含み得る。図10に示されるように、MC1072および1082は、プロセッサをそれぞれのメモリ、すなわち、メモリ1032およびメモリ1034に結合する。これらのメモリは、それぞれのプロセッサにローカルに取り付けられたメインメモリの部分であり得る。MC1072および1082が処理要素1070、1080に統合されているものとして示されているが、代替の実施形態について、MCロジックは、それらに統合されているものではなくむしろ、処理要素1070、1080の外部の個別のロジックであり得る。
第1の処理要素1070および第2の処理要素1080は、それぞれ、P-Pインターコネクト1076、1086を介してI/Oサブシステム1090に結合され得る。図10に示されるように、I/Oサブシステム1090は、P-Pインタフェース1094および1098を含む。さらに、I/Oサブシステム1090は、I/Oサブシステム1090を高性能グラフィックスエンジン1038と結合するインタフェース1092を含む。一実施形態において、バス1049は、グラフィックスエンジン1038をI/Oサブシステム1090に結合するために使用され得る。代替的に、ポイントツーポイントインターコネクトは、これらのコンポーネントを結合し得る。
同様に、I/Oサブシステム1090は、インタフェース1096を介して第1のバス1016に結合されてもよい。一実施形態において、第1のバス1016は、ペリフェラルコンポーネントインターコネクト(PCI)バス、または、PCIエクスプレスバス、若しくは他の第3世代のI/Oインターコネクトバスなどのバスであり得るが、実施形態の範囲はそれらに限定されない。
図10に示されるように、様々なI/Oデバイス1014(例えば。バイオメトリックスキャナ、スピーカ、カメラ、センサ)が、第1のバス1016を第2のバス1020に結合し得るバスブリッジ1018と共に、第1のバス1016に結合され得る。一実施形態において、第2のバス1020は、ローピンカウント(LPC)バスであり得る。一実施形態において、様々なデバイスが、例えば、キーボード/マウス1012、通信デバイス1026、および、ディスクドライブまたはコード1030を含み得る他の大容量ストレージデバイスなどのデータストレージユニット1019を含む第2のバス1020に結合され得る。示されたコード1030は、既に説明されたように、方法40(図5)および/または方法50(図6)を実装してもよく、既に説明されたように、コード213(図9)と類似してもよい。さらに、オーディオI/O1024が第2のバス1020に結合され得、バッテリ1010がコンピューティングシステム1000に電力を供給し得る。
他の実施形態が企図されていることに留意されたい。例えば、図10のポイントツーポイントアーキテクチャではなく、システムは、マルチドロップバスまたは他のそのような通信トポロジーを実装し得る。また、図10の要素は、代替的に、図10に示されるものより多いまたは少ない統合チップを使用いて分割され得る。
[追加の注記および例]
例1は、ディスプレイ、上記ディスプレイに結合されたプロセッサ、および上記プロセッサに結合されたメモリを備える性能強化コンピューティングシステムを含み、上記メモリは実行可能プログラム命令のセットを含み、上記実行可能プログラム命令のセットは、上記プロセッサによって実行されたとき、上記コンピューティングシステムに、スレッドの作成を検出させ、第1メモリ領域を上記スレッドに関連づけられたオブジェクトへの専用にさせ、上記スレッドの停止に応答して上記第1メモリ領域の第1再利用を行わせる。
例2は例1に記載のコンピューティングシステムを含み、上記第1メモリ領域はヒープ領域であり、上記第1再利用は、上記ヒープ領域に関するガーベジコレクションプロセスの一時停止相およびコピー相をバイパスするものである。
例3は例1に記載のコンピューティングシステムを含み、上記第1メモリ領域を上記スレッドに関連づけられた上記オブジェクトへの専用にするように、上記実行可能プログラム命令は、実行されたとき、上記コンピューティングシステムに、スレッドベースの割り当てをアクティブ化させ、上記スレッドを上記第1メモリ領域にマッピングさせる。
例4は例3に記載のコンピューティングシステムを含み、上記実行可能プログラム命令は、実行されたとき、上記コンピューティングシステムに、上記スレッドの上記停止に応答して上記スレッドベースの割り当てを非アクティブ化させ、上記第1メモリ領域から上記スレッドをアンマッピングさせる。
例5は例1に記載のコンピューティングシステムを含み、上記実行可能プログラム命令は、実行されたとき、上記コンピューティングシステムに、上記第1メモリ領域が満杯であるとの判断に応答して、第2メモリ領域を上記スレッドに関連づけられた上記オブジェクトに専用とさせ、上記スレッドの上記停止に応答して、上記第2メモリ領域の第2再利用を行わせる。
例6は例1から5のいずれか一項に記載のコンピューティングシステムを含み、上記スレッドはユーザインタフェースアクティビティに対応するものであり、上記ディスプレイは上記ユーザインタフェースアクティビティに関連づけられた情報を視覚的に表すものである。
例7は1または複数の基板と、上記1または複数の基板と結合されたロジックとを備える半導体装置を含み、上記ロジックは、1または複数の構成可能なロジックまたは機能固定型ハードウェアロジックに少なくとも部分的に実装され、上記1または複数の基板に結合された上記ロジックは、スレッドの作成を検出し、第1メモリ領域を上記スレッドに関連づけられたオブジェクトに専用とし、上記スレッドの停止に応答して上記第1メモリ領域の第1再利用を行う。
例8は、例7に記載の装置を含み、上記第1メモリ領域はヒープ領域であり、上記第1再利用は、上記ヒープ領域に関するガーベジコレクションプロセスの一時停止相およびコピー相をバイパスするものである。
例9は、例7に記載の装置を含み、上記第1メモリ領域を上記スレッドに関連づけられた上記オブジェクトへの専用にするように、上記1または複数の基板に結合された上記ロジックは、スレッドベースの割り当てをアクティブ化させ、上記スレッドを上記第1メモリ領域にマッピングさせるものである。
例10は例9に記載の装置を含み、上記1または複数の基板に結合された上記ロジックは、上記スレッドの上記停止に応答して上記スレッドベースの割り当てを非アクティブ化し、上記第1メモリ領域から上記スレッドをアンマッピングする。
例11は例7に記載の装置を含み、上記1または複数の基板に結合された上記ロジックは、上記第1メモリ領域が満杯であるとの判断に応答して、第2メモリ領域を上記スレッドに関連づけられた上記オブジェクトに専用とさせ、上記スレッドの上記停止に応答して、上記第2メモリ領域の第2再利用を行わせる。
例12は例7から11のいずれか一項に記載の装置を含み、上記スレッドはユーザインタフェースアクティビティに対応するものである。
例13は実行可能プログラム命令のセットを備える少なくとも1つのコンピュータ可読記憶媒体を含み、上記実行可能プログラム命令のセットは、コンピューティングシステムによって実行されたとき、上記コンピューティングシステムに、スレッドの作成を検出させ、第1メモリ領域を上記スレッドに関連づけられたオブジェクトへの専用にさせ、上記スレッドの停止に応答して上記第1メモリ領域の第1再利用を行わせる。
例14は例13に記載の少なくとも1つのコンピュータ可読記憶媒体を含み、上記第1メモリ領域はヒープ領域であり、上記第1再利用は、上記ヒープ領域に関するガーベジコレクションプロセスの一時停止相およびコピー相をバイパスするものである。
例15は例13に記載の少なくとも1つのコンピュータ可読記憶媒体を含み、上記第1メモリ領域を上記スレッドに関連づけられた上記オブジェクトへの専用にするように、上記実行可能プログラム命令は、実行されたとき、上記コンピューティングシステムに、スレッドベースの割り当てをアクティブ化させ、上記スレッドを上記第1メモリ領域にマッピングさせる。
例16は例15に記載の少なくとも1つのコンピュータ可読記憶媒体を含み、上記実行可能プログラム命令は、実行されたとき、上記コンピューティングシステムに、上記スレッドの上記停止に応答して上記スレッドベースの割り当てを非アクティブ化させ、上記第1メモリ領域から上記スレッドをアンマッピングさせる。
例17は例13に記載の少なくとも1つのコンピュータ可読記憶媒体を含み、上記実行可能プログラム命令は、実行されたとき、上記コンピューティングシステムに、上記第1メモリ領域が満杯であるとの判断に応答して、第2メモリ領域を上記スレッドに関連づけられた上記オブジェクトに専用とさせ、上記スレッドの上記停止に応答して、上記第2メモリ領域の第2再利用を行わせる。
例18は例13から17のいずれか一項に記載の少なくとも1つのコンピュータ可読記憶媒体を含み、上記スレッドはユーザインタフェースアクティビティに対応するものである。
例19は、スレッドの作成を検出する段階と、第1メモリ領域を上記スレッドに関連づけられたオブジェクトへの専用にする段階と、上記スレッドの停止に応答して上記第1メモリ領域の第1再利用を行う段階と、を備える方法を含む。
例20は例19に記載の方法を含み、上記第1メモリ領域はヒープ領域であり、上記第1再利用は、上記ヒープ領域に関するガーベジコレクションプロセスの一時停止相およびコピー相をバイパスする。
例21は、例19に記載の方法を含み、上記第1メモリ領域を上記スレッドに関連づけられた上記オブジェクトへの専用とする段階は、スレッドベースの割り当てをアクティブ化する段階と、上記スレッドを上記第1メモリ領域にマッピングする段階とを含む。
例22は例21に記載の方法を含み、上記スレッドの上記停止に応答して上記スレッドベースの割り当てを非アクティブ化する段階と、上記第1メモリ領域から上記スレッドをアンマッピングする段階とをさらに含む。
例23は例19に記載の方法を含み、上記第1メモリ領域が満杯であるとの判断に応答して、第2メモリ領域を上記スレッドに関連づけられた上記オブジェクトに専用とする段階と、上記スレッドの上記停止に応答して、上記第2メモリ領域の第2再利用を行わせる段階とをさらに含む。
例24は例19から23のいずれか一項に記載の方法を含み、上記スレッドはユーザインタフェースアクティビティに対応する。
従って、本明細書で説明された技術は、アクティビティおよび当該アクティビティによって作成されたオブジェクトを、単一のオブジェクトの束にパックし、当該オブジェクトによって消費されるメモリを一斉に再利用する(例えば、GCスレッドを呼び出すことなく)。技術は、任意の言語に適用してよく、類似の耐用期間を共有する全てのオブジェクトの再利用に焦点を当ててもよい。更に、技術はアプリケーション開発者(例えば、全ての修正例が管理された実行時フレームワーク層において行われてもよい)にいかなる追加の負荷も負わせなくてよい。技術はまた、ユーザにトランスペアレントであり(例えば、ユーザエクスペリエンスに悪影響がない)、余計なコピー動作なしに機能の間のオブジェクトの共有をサポートする(例えば、スレッド化されたメモリ割り当て手段および/またはリソース割り当て手段においての初期化/RAII解決方法のように)。
実施形態は全てのタイプの半導体集積回路("IC")チップの使用に適する。これらのICチップの例は、プロセッサ、コントローラ、チップセットコンポーネント、プログラマブルロジックアレイ(PLA)、メモリチップ、ネットワークチップ、システムオンチップ(SoC)、SSD/NANDコントローラASIC、および同様のものを含むがこれらに限定されることはない。加えて、いくつかの図において、信号導線が線で表されている。いくつかは、より多くの成分信号パスを示すべく異なっていてよく、複数の成分信号パスを示すべく番号ラベルを有してよく、および/または、主要情報の流れ方向を示すべく1または複数の端部に矢印を有してよい。しかしながら、このことは限定的に解釈されるべきではない。むしろ、そのような追加の詳細は、回路のより容易な理解を促進すべく、1または複数の例示的な実施形態に関連して使用され得る。追加の情報を有しているか否かにかかわらず、表される任意の信号線は、実際には、複数の方向に伝搬され得る1または複数の信号を備え得、任意の適切なタイプの信号方式、例えば、差動ペアで実装されるデジタル線またはアナログ線、光ファイバ線、および/または、シングルエンド線、で実装され得る。
例示的なサイズ/モデル/値/範囲が与えられてきたが、実施形態は、同一のものに限定されることはない。経時的に製造技術(例えば、フォトリソグラフィ)が成熟するにつれて、より小型のデバイスが製造され得ることが予測される。加えて、例示および説明を簡潔にするために、且つ、実施形態の特定の態様を不明瞭にしないために、ICチップおよび他のコンポーネントへの周知の電源/グラウンド接続が、図面内に示されてもよく、図面内に示されていなくてもよい。さらに、実施形態を不明瞭にすることを回避すべく、また、そのようなブロック図構成の実装に関する詳細は、実施形態が実装されるプラットフォームに大きく依存する、すなわち、そのような詳細は十分に当業者の範囲内であるべきという事実を考慮して、構成がブロック図形態で示されてよい。例示的な実施形態を説明すべく、具体的な詳細(例えば、回路)が説明される場合、これらの具体的な詳細なしで、またはこれらの具体的な詳細の変形を用いて、実施形態が実施され得ることが当業者に明らかであるはずである。従って、説明は、限定なものではなく例示的なものとみなされるべきである。
用語「結合され」は、問題になっているコンポーネントの間の直接または間接の、任意のタイプの関係を指すように、本明細書では使用され得、電子的、機械的、流体的、光学的、電磁気的、または他の接続に適用してもよい。加えて、「第1の」、「第2の」などの用語は、説明を容易にするためにのみ本明細書で使用され得、別段の記載がない限り、特定の時間的または経時的な意味を保持しない。
本願および請求項に使用されるとき、用語「1または複数」によってまとめられる項目のリストは、リストに挙げられた用語の任意の組み合わせを意味し得る。例えば、「A、BまたはCの1または複数」という形で列挙されているアイテムは、A、B、C、AおよびB、AおよびC、BおよびC、または、A、BおよびCを意味し得る。
上述の説明から、実施形態の幅広い技術を様々な形態で実装可能なことを当業者は理解するであろう。したがって、図面、明細書、および以下の特許請求の範囲を検討すれば、他の修正例が当業者には明らかになるであろうから、実施形態はそれらの特定の例と関連して説明されてきたが、実施形態の真の範囲はそれに限定されるべきではない。
他の可能な請求項
(項目1)
ディスプレイと、
上記ディスプレイに結合されたプロセッサと、
上記プロセッサに結合されたメモリと、
を備える性能強化コンピューティングシステムであって、
上記メモリは実行可能プログラム命令のセットを含み、上記実行可能プログラム命令のセットは、上記プロセッサによって実行されたとき、上記コンピューティングシステムに、
スレッドの作成を検出させ、
第1メモリ領域を上記スレッドに関連づけられたオブジェクトへの専用にさせ、
上記スレッドの停止に応答して上記第1メモリ領域の第1再利用を行わせる、
性能強化コンピューティングシステム。
(項目2)
上記第1メモリ領域はヒープ領域であり、上記第1再利用は、上記ヒープ領域に関するガーベジコレクションプロセスの一時停止相およびコピー相をバイパスするものである、項目1に記載のコンピューティングシステム。
(項目3)
上記第1メモリ領域を上記スレッドに関連づけられた上記オブジェクトへの専用にするように、上記実行可能プログラム命令は、実行されたとき、上記コンピューティングシステムに、
スレッドベースの割り当てをアクティブ化させ、
上記スレッドを上記第1メモリ領域にマッピングさせる、
項目1に記載のコンピューティングシステム。
(項目4)
上記実行可能プログラム命令は、実行されたとき、上記コンピューティングシステムに、
上記スレッドの上記停止に応答して上記スレッドベースの割り当てを非アクティブ化させ、
上記第1メモリ領域から上記スレッドをアンマッピングさせる、
項目3に記載のコンピューティングシステム。
(項目5)
上記実行可能プログラム命令は、実行されたとき、上記コンピューティングシステムに、
上記第1メモリ領域が満杯であるとの判断に応答して、第2メモリ領域を上記スレッドに関連づけられた上記オブジェクトに専用とさせ、
上記スレッドの上記停止に応答して、上記第2メモリ領域の第2再利用を行わせる、
項目1に記載のコンピューティングシステム。
(項目6)
上記スレッドはユーザインタフェースアクティビティに対応するものであり、上記ディスプレイは上記ユーザインタフェースアクティビティに関連づけられた情報を視覚的に表すものである、項目1から5のいずれか一項に記載のコンピューティングシステム。
(項目7)
1または複数の基板と、
上記1または複数の基板と結合されたロジックとを備える半導体装置であって、上記ロジックは、1または複数の構成可能なロジックまたは機能固定型ハードウェアロジックに少なくとも部分的に実装され、上記1または複数の基板に結合された上記ロジックは、
スレッドの作成を検出し、
第1メモリ領域を上記スレッドに関連づけられたオブジェクトに専用とし、上記スレッドの停止に応答して上記第1メモリ領域の第1再利用を行う、
半導体装置。
(項目8)
上記第1メモリ領域はヒープ領域であり、上記第1再利用は、上記ヒープ領域に関するガーベジコレクションプロセスの一時停止相およびコピー相をバイパスするものである、項目7に記載の装置。
(項目9)
上記第1メモリ領域を上記スレッドに関連づけられた上記オブジェクトへの専用にするように、上記1または複数の基板に結合された上記ロジックは、
スレッドベースの割り当てをアクティブ化させ、上記スレッドを上記第1メモリ領域にマッピングさせるものである、
項目7に記載の装置。
(項目10)
上記1または複数の基板に結合された上記ロジックは、上記スレッドの上記停止に応答して上記スレッドベースの割り当てを非アクティブ化し、上記第1メモリ領域から上記スレッドをアンマッピングする、項目9に記載の装置。
(項目11)
上記1または複数の基板に結合された上記ロジックは、
上記第1メモリ領域が満杯であるとの判断に応答して、第2メモリ領域を上記スレッドに関連づけられた上記オブジェクトに専用とさせ、
上記スレッドの上記停止に応答して、上記第2メモリ領域の第2再利用を行わせる、
項目7に記載の装置。
(項目12)
上記スレッドはユーザインタフェースアクティビティに対応するものである、項目7から11のいずれか一項に記載の装置。
(項目13)
実行可能プログラム命令のセットを備える少なくとも1つのコンピュータ可読記憶媒体であって、上記実行可能プログラム命令のセットは、コンピューティングシステムによって実行されたとき、上記コンピューティングシステムに、
スレッドの作成を検出させ、
第1メモリ領域を上記スレッドに関連づけられたオブジェクトへの専用にさせ、
上記スレッドの停止に応答して上記第1メモリ領域の第1再利用を行わせる、
少なくとも1つのコンピュータ可読記憶媒体。
(項目14)
上記第1メモリ領域はヒープ領域であり、上記第1再利用は、上記ヒープ領域に関するガーベジコレクションプロセスの一時停止相およびコピー相をバイパスするものである、項目13に記載の少なくとも1つのコンピュータ可読記憶媒体。
(項目15)
上記第1メモリ領域を上記スレッドに関連づけられた上記オブジェクトへの専用にするように、上記実行可能プログラム命令は、実行されたとき、上記コンピューティングシステムに、
スレッドベースの割り当てをアクティブ化させ、
上記スレッドを上記第1メモリ領域にマッピングさせる、
項目13に記載の少なくとも1つのコンピュータ可読記憶媒体。
(項目16)
上記実行可能プログラム命令は、実行されたとき、上記コンピューティングシステムに、
上記スレッドの上記停止に応答して上記スレッドベースの割り当てを非アクティブ化させ、
上記第1メモリ領域から上記スレッドをアンマッピングさせる、
項目15に記載の少なくとも1つのコンピュータ可読記憶媒体。
(項目17)
上記実行可能プログラム命令は、実行されたとき、上記コンピューティングシステムに、
上記第1メモリ領域が満杯であるとの判断に応答して、第2メモリ領域を上記スレッドに関連づけられた上記オブジェクトに専用とさせ、
上記スレッドの上記停止に応答して、上記第2メモリ領域の第2再利用を行わせる、
項目13に記載の少なくとも1つのコンピュータ可読記憶媒体。
(項目18)
上記スレッドはユーザインタフェースアクティビティに対応するものである、項目13から17のいずれか一項に記載の少なくとも1つのコンピュータ可読記憶媒体。
(項目19)
スレッドの作成を検出する段階と、
第1メモリ領域を上記スレッドに関連づけられたオブジェクトへの専用にする段階と、
上記スレッドの停止に応答して上記第1メモリ領域の第1再利用を行う段階と、
を備える方法。
(項目20)
上記第1メモリ領域はヒープ領域であり、上記第1再利用は、上記ヒープ領域に関するガーベジコレクションプロセスの一時停止相およびコピー相をバイパスする、項目19に記載の方法。
(項目21)
上記第1メモリ領域を上記スレッドに関連づけられた上記オブジェクトへの専用とする段階は、
スレッドベースの割り当てをアクティブ化する段階と、
上記スレッドを上記第1メモリ領域にマッピングする段階と、
を含む、項目19に記載の方法。
(項目22)
上記スレッドの上記停止に応答して上記スレッドベースの割り当てを非アクティブ化する段階と、
上記第1メモリ領域から上記スレッドをアンマッピングする段階と、
をさらに含む、項目21に記載の方法。
(項目23)
上記第1メモリ領域が満杯であるとの判断に応答して、第2メモリ領域を上記スレッドに関連づけられた上記オブジェクトに専用とする段階と、
上記スレッドの上記停止に応答して、上記第2メモリ領域の第2再利用を行わせる段階と、
をさらに含む、項目19に記載の方法。
(項目24)
上記スレッドはユーザインタフェースアクティビティに対応する、項目19から23のいずれか一項に記載の方法。

Claims (25)

  1. ディスプレイと、
    前記ディスプレイに結合されたプロセッサと、
    前記プロセッサに結合されたメモリと、
    を備える性能強化コンピューティングシステムであって、
    前記メモリは実行可能プログラム命令のセットを含み、前記実行可能プログラム命令のセットは、前記プロセッサによって実行されたとき、前記性能強化コンピューティングシステムに、
    スレッドの作成を検出させ、
    第1メモリ領域を前記スレッドに関連づけられたオブジェクトへの専用にさせ、
    前記スレッドの停止に応答して上記第1メモリ領域の第1再利用を行わせる、
    性能強化コンピューティングシステム。
  2. 前記第1メモリ領域はヒープ領域であり、前記第1再利用は、前記ヒープ領域に関するガーベジコレクションプロセスの一時停止相およびコピー相をバイパスするものである、請求項1に記載の性能強化コンピューティングシステム。
  3. 前記第1メモリ領域を前記スレッドに関連づけられた前記オブジェクトへの専用にするように、前記実行可能プログラム命令は、実行されたとき、前記性能強化コンピューティングシステムに、
    スレッドベースの割り当てをアクティブ化させ、
    前記スレッドを前記第1メモリ領域にマッピングさせる、
    請求項1に記載の性能強化コンピューティングシステム。
  4. 前記実行可能プログラム命令は、実行されたとき、前記性能強化コンピューティングシステムに、
    前記スレッドの前記停止に応答して前記スレッドベースの割り当てを非アクティブ化させ、
    前記第1メモリ領域から前記スレッドをアンマッピングさせる、
    請求項3に記載の性能強化コンピューティングシステム。
  5. 前記実行可能プログラム命令は、実行されたとき、前記性能強化コンピューティングシステムに、
    前記第1メモリ領域が満杯であるとの判断に応答して、第2メモリ領域を前記スレッドに関連づけられた前記オブジェクトに専用とさせ、
    前記スレッドの前記停止に応答して、前記第2メモリ領域の第2再利用を行わせる、
    請求項1から4のいずれか一項に記載の性能強化コンピューティングシステム。
  6. 前記スレッドはユーザインタフェースアクティビティに対応するものであり、前記ディスプレイは前記ユーザインタフェースアクティビティに関連づけられた情報を視覚的に表すものである、請求項1から5のいずれか一項に記載の性能強化コンピューティングシステム。
  7. 1または複数の基板と、
    前記1または複数の基板と結合されたロジックとを備える半導体装置であって、前記ロジックは、1または複数の構成可能なロジックまたは機能固定型ハードウェアロジックに少なくとも部分的に実装され、前記1または複数の基板に結合された前記ロジックは、
    スレッドの作成を検出し、
    第1メモリ領域を前記スレッドに関連づけられたオブジェクトに専用とし、前記スレッドの停止に応答して前記第1メモリ領域の第1再利用を行う、
    半導体装置。
  8. 前記第1メモリ領域はヒープ領域であり、前記第1再利用は、前記ヒープ領域に関するガーベジコレクションプロセスの一時停止相およびコピー相をバイパスするものである、請求項7に記載の半導体装置。
  9. 前記第1メモリ領域を前記スレッドに関連づけられた前記オブジェクトへの専用にするように、前記1または複数の基板に結合された前記ロジックは、
    スレッドベースの割り当てをアクティブ化させ、前記スレッドを前記第1メモリ領域にマッピングさせるものである、
    請求項7に記載の半導体装置。
  10. 前記1または複数の基板に結合された前記ロジックは、前記スレッドの前記停止に応答して前記スレッドベースの割り当てを非アクティブ化し、前記第1メモリ領域から前記スレッドをアンマッピングする、請求項9に記載の半導体装置。
  11. 前記1または複数の基板に結合された前記ロジックは、
    前記第1メモリ領域が満杯であるとの判断に応答して、第2メモリ領域を前記スレッドに関連づけられた前記オブジェクトに専用とさせ、
    前記スレッドの前記停止に応答して、前記第2メモリ領域の第2再利用を行わせる、
    請求項7から10のいずれか一項に記載の半導体装置。
  12. 前記スレッドはユーザインタフェースアクティビティに対応するものである、請求項7から11のいずれか一項に記載の半導体装置。
  13. コンピューティングシステムによって実行されたとき、前記コンピューティングシステムに、
    スレッドの作成を検出させ、
    第1メモリ領域を前記スレッドに関連づけられたオブジェクトへの専用にさせ、
    前記スレッドの停止に応答して前記第1メモリ領域の第1再利用を行わせる、
    コンピュータプログラム。
  14. 前記第1メモリ領域はヒープ領域であり、前記第1再利用は、前記ヒープ領域に関するガーベジコレクションプロセスの一時停止相およびコピー相をバイパスするものである、請求項13に記載のコンピュータプログラム。
  15. 前記第1メモリ領域を前記スレッドに関連づけられた前記オブジェクトへの専用にするように、実行されたとき、前記コンピューティングシステムに、
    スレッドベースの割り当てをアクティブ化させ、
    前記スレッドを前記第1メモリ領域にマッピングさせる、
    請求項13に記載のコンピュータプログラム。
  16. 実行されたとき、前記コンピューティングシステムに、
    前記スレッドの前記停止に応答して前記スレッドベースの割り当てを非アクティブ化させ、
    前記第1メモリ領域から前記スレッドをアンマッピングさせる、
    請求項15に記載のコンピュータプログラム。
  17. 実行されたとき、前記コンピューティングシステムに、
    前記第1メモリ領域が満杯であるとの判断に応答して、第2メモリ領域を前記スレッドに関連づけられた前記オブジェクトに専用とさせ、
    前記スレッドの前記停止に応答して、前記第2メモリ領域の第2再利用を行わせる、
    請求項13から16のいずれか一項に記載のコンピュータプログラム。
  18. 前記スレッドはユーザインタフェースアクティビティに対応するものである、請求項13から17のいずれか一項に記載のコンピュータプログラム。
  19. スレッドの作成を検出する段階と、
    第1メモリ領域を前記スレッドに関連づけられたオブジェクトへの専用にする段階と、
    前記スレッドの停止に応答して前記第1メモリ領域の第1再利用を行う段階と、
    を備える方法。
  20. 前記第1メモリ領域はヒープ領域であり、前記第1再利用は、前記ヒープ領域に関するガーベジコレクションプロセスの一時停止相およびコピー相をバイパスする、請求項19に記載の方法。
  21. 前記第1メモリ領域を前記スレッドに関連づけられた前記オブジェクトへの専用とする段階は、
    スレッドベースの割り当てをアクティブ化する段階と、
    前記スレッドを前記第1メモリ領域にマッピングする段階と、
    を含む、請求項19に記載の方法。
  22. 前記スレッドの前記停止に応答して前記スレッドベースの割り当てを非アクティブ化する段階と、
    前記第1メモリ領域から前記スレッドをアンマッピングする段階と、
    をさらに含む、請求項21に記載の方法。
  23. 前記第1メモリ領域が満杯であるとの判断に応答して、第2メモリ領域を前記スレッドに関連づけられた前記オブジェクトに専用とする段階と、
    前記スレッドの前記停止に応答して、前記第2メモリ領域の第2再利用を行わせる段階と、
    をさらに含む、請求項19から22のいずれか一項に記載の方法。
  24. 前記スレッドはユーザインタフェースアクティビティに対応する、請求項19から23のいずれか一項に記載の方法。
  25. 請求項13から18のいずれか一項に記載のコンピュータプログラムを格納する、コンピュータ可読記憶媒体。
JP2021563430A 2019-05-31 2019-05-31 高性能メモリ管理システムにおけるガーベジコレクションの回避 Pending JP2022540972A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/089503 WO2020237621A1 (en) 2019-05-31 2019-05-31 Avoidance of garbage collection in high performance memory management systems

Publications (1)

Publication Number Publication Date
JP2022540972A true JP2022540972A (ja) 2022-09-21

Family

ID=73552673

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021563430A Pending JP2022540972A (ja) 2019-05-31 2019-05-31 高性能メモリ管理システムにおけるガーベジコレクションの回避

Country Status (5)

Country Link
US (1) US20220171704A1 (ja)
EP (1) EP3977292A4 (ja)
JP (1) JP2022540972A (ja)
CN (1) CN113767370A (ja)
WO (1) WO2020237621A1 (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002259146A (ja) * 2000-05-15 2002-09-13 Matsushita Electric Ind Co Ltd アプリケーション実行装置及び方法
JP2004078636A (ja) * 2002-08-20 2004-03-11 Nippon Telegr & Teleph Corp <Ntt> メモリ管理システムとメモリ配置方法およびそのプログラムと記録媒体
US20040158589A1 (en) * 1998-11-25 2004-08-12 Sun Microsystems, Inc. Method for enabling comprehensive profiling of garbage-collected memory systems
JP2009037546A (ja) * 2007-08-03 2009-02-19 Hitachi Ltd スレッド固有領域を利用するメモリ管理方法およびその方法を用いたコンピュータ
US20090083509A1 (en) * 2007-09-25 2009-03-26 International Business Machines Corporation Memory Management Using Garbage Collection of Scoped Memory
JP2011134202A (ja) * 2009-12-25 2011-07-07 Internatl Business Mach Corp <Ibm> メモリ管理装置、メモリ管理方法、及びメモリ管理プログラム
WO2018152229A1 (en) * 2017-02-20 2018-08-23 Alibaba Group Holding Limited Resource reclamation method and apparatus

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6842853B1 (en) * 1999-01-13 2005-01-11 Sun Microsystems, Inc. Thread suspension system and method
US6823518B1 (en) * 2000-10-17 2004-11-23 Microsoft Corporation Threading and communication architecture for a graphical user interface
ATE479942T1 (de) * 2003-06-30 2010-09-15 Panasonic Corp Speicherbereinigungssystem
US7596569B2 (en) * 2004-09-24 2009-09-29 International Business Machines Corporation Method and program for space-efficient representation of objects in a garbage-collected system
US7945911B1 (en) * 2005-06-03 2011-05-17 Oracle America, Inc. Barrier synchronization method and apparatus for work-stealing threads
EP1783604A3 (en) * 2005-11-07 2007-10-03 Slawomir Adam Janczewski Object-oriented, parallel language, method of programming and multi-processor computer
US8024505B2 (en) * 2006-05-11 2011-09-20 Oracle International Corporation System and method for optimistic creation of thread local objects in a virtual machine environment
US20110252216A1 (en) * 2010-04-12 2011-10-13 Tatu Ylonen Oy Ltd Thread-local hash table based write barrier buffers
GB2533415B (en) * 2014-12-19 2022-01-19 Advanced Risc Mach Ltd Apparatus with at least one resource having thread mode and transaction mode, and method
US20170091117A1 (en) * 2015-09-25 2017-03-30 Qualcomm Incorporated Method and apparatus for cache line deduplication via data matching
CN108073520B (zh) * 2016-11-10 2021-09-14 腾讯科技(深圳)有限公司 一种内存控制方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040158589A1 (en) * 1998-11-25 2004-08-12 Sun Microsystems, Inc. Method for enabling comprehensive profiling of garbage-collected memory systems
JP2002259146A (ja) * 2000-05-15 2002-09-13 Matsushita Electric Ind Co Ltd アプリケーション実行装置及び方法
JP2004078636A (ja) * 2002-08-20 2004-03-11 Nippon Telegr & Teleph Corp <Ntt> メモリ管理システムとメモリ配置方法およびそのプログラムと記録媒体
JP2009037546A (ja) * 2007-08-03 2009-02-19 Hitachi Ltd スレッド固有領域を利用するメモリ管理方法およびその方法を用いたコンピュータ
US20090083509A1 (en) * 2007-09-25 2009-03-26 International Business Machines Corporation Memory Management Using Garbage Collection of Scoped Memory
JP2011134202A (ja) * 2009-12-25 2011-07-07 Internatl Business Mach Corp <Ibm> メモリ管理装置、メモリ管理方法、及びメモリ管理プログラム
WO2018152229A1 (en) * 2017-02-20 2018-08-23 Alibaba Group Holding Limited Resource reclamation method and apparatus

Also Published As

Publication number Publication date
EP3977292A4 (en) 2023-01-04
US20220171704A1 (en) 2022-06-02
WO2020237621A1 (en) 2020-12-03
EP3977292A1 (en) 2022-04-06
CN113767370A (zh) 2021-12-07

Similar Documents

Publication Publication Date Title
US11550627B2 (en) Hardware accelerated dynamic work creation on a graphics processing unit
JP2017182820A (ja) グラフィックス計算プロセススケジューリング
US20140375658A1 (en) Processor Core to Graphics Processor Task Scheduling and Execution
US9817754B2 (en) Flash memory management
TWI428755B (zh) 用於配置直接記憶體存取(dma)頻道識別符之方法、電腦可讀取儲存媒體、及資料處理系統
US20200356406A1 (en) Framework-agnostic agile container launches through lateral reuse of capabilities in standard runtimes
US10459771B2 (en) Lightweight thread synchronization using shared memory state
JP2021099782A (ja) ファンクション・アズ・ア・サービスコンピューティングのための統一プログラミングモデル
EP3866003A1 (en) Deployment of bios to operating system data exchange
KR20210080173A (ko) 이기종 시스템들을 위해 컴퓨터 애플리케이션들을 파티셔닝하기 위한 자동화된 학습 기술
JP2022540972A (ja) 高性能メモリ管理システムにおけるガーベジコレクションの回避
US11249910B2 (en) Initialization and management of class of service attributes in runtime to optimize deep learning training in distributed environments
US7721145B2 (en) System, apparatus and computer program product for performing functional validation testing
US11960422B2 (en) Direct memory access tracking for pass-through devices in virtualized environments
JP7397179B2 (ja) 階層化オブジェクトメモリ配置のためのランタイム装置の管理
US11989129B2 (en) Multiple virtual NUMA domains within a single NUMA domain via operating system interface tables
US11907377B2 (en) Supporting self-modifying graphics workloads in fully virtualized graphics architectures

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220524

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230518

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230620

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230919

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240229

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20240528