JP6218833B2 - 処理リソース割り当て - Google Patents
処理リソース割り当て Download PDFInfo
- Publication number
- JP6218833B2 JP6218833B2 JP2015528554A JP2015528554A JP6218833B2 JP 6218833 B2 JP6218833 B2 JP 6218833B2 JP 2015528554 A JP2015528554 A JP 2015528554A JP 2015528554 A JP2015528554 A JP 2015528554A JP 6218833 B2 JP6218833 B2 JP 6218833B2
- Authority
- JP
- Japan
- Prior art keywords
- call
- data
- code
- identifying
- resource allocation
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims description 248
- 238000013468 resource allocation Methods 0.000 title claims description 108
- 238000000034 method Methods 0.000 claims description 348
- 230000006870 function Effects 0.000 claims description 146
- 238000012546 transfer Methods 0.000 claims description 112
- 230000006399 behavior Effects 0.000 claims description 104
- 230000008569 process Effects 0.000 claims description 77
- 238000004458 analytical method Methods 0.000 claims description 34
- 230000003068 static effect Effects 0.000 claims description 32
- 238000011068 loading method Methods 0.000 claims description 29
- 230000004048 modification Effects 0.000 claims description 25
- 238000012986 modification Methods 0.000 claims description 24
- 238000005259 measurement Methods 0.000 claims description 19
- 238000013507 mapping Methods 0.000 claims description 12
- 238000000638 solvent extraction Methods 0.000 claims description 12
- 238000013519 translation Methods 0.000 claims description 9
- 230000003213 activating effect Effects 0.000 claims description 7
- 238000004366 reverse phase liquid chromatography Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 5
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 37
- 238000013459 approach Methods 0.000 description 33
- 238000004891 communication Methods 0.000 description 32
- 230000007246 mechanism Effects 0.000 description 28
- 238000002347 injection Methods 0.000 description 10
- 239000007924 injection Substances 0.000 description 10
- 238000004088 simulation Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 8
- 238000013500 data storage Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 6
- 230000001427 coherent effect Effects 0.000 description 5
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 229910052710 silicon Inorganic materials 0.000 description 4
- 239000010703 silicon Substances 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 239000000853 adhesive Substances 0.000 description 1
- 230000001070 adhesive effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 235000013599 spices Nutrition 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/78—Architectures of resource allocation
- H04L47/788—Autonomous allocation of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
- G06F9/24—Loading of the microprogram
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5033—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Devices For Executing Special Programs (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
例示的なシナリオによれば、処理アーキテクチャ内のプロセッサはメモリ(例えば、ランダム・アクセス・メモリ(RAM)又はレベル2(L2)キャッシュ)を共有し、各プロセッサはメモリのそれ自身のビューを備えたそれ自身のキャッシュを有する。各プロセッサは単一のプロセッサとしてプログラムされ、よって、マルチプロセッサ・アーキテクチャは、実質的に単一プロセッサ・アプローチを利用する。更に、プロセッサ間で存在する実現された通信機構は共有メモリ経由である。前述のアプローチでは、いくつかの課題が生じ得る。例えば、プロセッサ間の通信をどのようにして行うかを優先順位付けすることは困難であり得、プロセッサ間での小量の情報の転送の試行は効率的でないことがあり得、キャッシュ・コヒーレンシ問題に直面し得る。
本願の手法の種々の例示的な実施例について次に述べる。しかし、本願の手法は前述の例示的な実施例に制限されず、本願の手法は更に、本明細書及び特許請求の範囲記載の例示的な実施例及び実現形態の自明な変形を含む。更に、本明細書及び特許請求の範囲記載の種々の原理を不必要にわかりにくくすることのないように、種々の周知の構成部分を概して、添付図面に示していない一方、前述の周知の構成部分は、本願手法の種々の実施例を実施するために当業者によって実現し得る。
次に、いくつかの例示的な処理アーキテクチャについて掘り下げてみる。しかし、本願の手法は前述の例示的な処理アーキテクチャ手法に制限されず、他の処理アーキテクチャ手法を実現し得る。
次に、いくつかの例示的な処理割り当て手法について掘り下げてみる。しかし、本願の手法は前述の例示的な処理リソース割り当て手法に制限されず、他の処理リソース割り当て手法を実現し得る。
次に、いくつかの例示的なメモリ割り当て手法について掘り下げてみる。しかし、本願の手法は前述の例示的なメモリ割り当て手法に制限されず、他のメモリ割り当て手法を実現し得る。
次に、いくつかの例示的な転送決定手法について掘り下げてみる。しかし、本願の手法は前述の例示的な転送決定手法に制限されず、他の転送決定手法を実現し得る。
次に、いくつかの例示的なハードウェア・サポート手法について掘り下げてみる。しかし、本願の手法は前述の例示的なハードウェア・サポート手法に制限されず、他のハードウェア・サポート手法を実現し得る。
実施例では、「シャドー・レジスタ」は、制御の直接の転送(direct transfer)、及び、転送についてのサポート・ソフトウェアの(例えば、ユーザ・レベルの)意思決定を行うために使用される。例証するに、かつ、例示的な実現形態に応じれば、PUはデータ・パス又は「パイプライン」を有する。更に、PUは、通信するよう、PUによって要求されたメモリへのアクセスを管理するよう構成されたMMU(例えば、図8に示すMMU840を参照)と関連付けられ、又は結合される。特に、PUは、コールを受信すると、MMUに、対応するメモリ・アドレスについての情報を要求する。アドレスがパイプライン上で充填されるので、MMUは、PU内の余分なレジスタ(例えば、シャドー・レジスタ)を充填して、それにより、それがどの種類のアドレス(例えば。局所、共有、リダイレクト可能)であるかを識別する。PUが、前述のアドレスの1つにマッピングされたコードをコールすると、PUは、コールを転送すべきか否かの判定を助けるためにそのシャドー・レジスタにアクセスすることが可能である。
コンパイルされたコードの本体を前提として、別の実現形態を指し示すように、リンク又はロード中に、ルーチン・コールをリダイレクトすることが可能である。このルーチン・コールをリダイレクトすると判定された場合、前述のコールは例えば、「リダイレクト・コール」として表し得る。
よって、実施例では、PUは、コールを転送するか否かを、当該コールに関するデータが別のPUの局所メモリ(例えば、DRAM)に既に記憶されているか否かに基づいて判定するよう構成される。あるいは、又は上記に加えて、一実施例では、共有メモリの特定のセクタ(例えば大域アドレス範囲1000乃至2000)に命令が記憶されているか否かを判定することにより、コールを転送するかをPUが判定することができる。
上記に鑑みて、実施例では、PUが、通信するようにMMUと関連付けられ、又はMMUと結合される(MMUを含む)。MMUは、どのPUがメモリを有しているか、及びデータがどこにあるかを追跡する。データがそれ自身の局所メモリにマッピングされているか、又は別のプロセッサの局所メモリにマッピングされているか否かを判定するために、特定のデータがメモリにマッピングされた場所をそのMMUに尋ねる。よって、コールが潜在的なリダイレクト・コールとして識別されると、データが現在、リダイレクト可能な場所に現在記憶されているか否かが判定され、その時点で、潜在的なリダイレクト・コールが実際のリダイレクト・コールとして識別され、コールは転送される。これはハードウェア・レベルで行い得るが、ソフトウェアはこの手法をサポートするよう実現し得る。特に、ソフトウェア・サポートは、例えば、ランタイム・コードへの、又はランタイム・コード近くでのサポート・コードのインジェクションなどにより、より高度な決定をPUが行うことを助けるために追加し得る。実際に、PUの処理速度は比較的高速であるが、それとの間の情報の移動は比較的遅いことがあり得る。したがって、賢明な決定を行うことにより、かなりの量の時間及びエネルギを節減することが可能である。そういうものとして、種々の実施例には、PU間の制御のトランスペアレントな転送をサポートするためのロード前後のソフトウェア修正が関係する。
ワンダリング・スレッドの場合、(本明細書において更に掘り下げるように、RPCを起動させることなどにより、)別のプロセッサ上で、又は局所で、コールを実行するかを判定するために、意図されたコールの引数を検査するコードにルーチンを再誘導し得る。例えば、例示的なC言語コールは、「fprintf」:
int fprintf(FILE*stream,const char*format,...);
である。
リダイレクト・コードは、コ―ル「fprintf」がリダイレクトされていることを記し、局所メモリを指し示しているかを確認するためにポインタ・ストリームを検査する。否定の場合であり、かつ、そのメモリのPUを識別することが可能な場合、リダイレクト・コードは、そのPUへの転送を実行し、その完了を待ち、それにより、スレッドの局所サスペンションをもたらす。リダイレクト・コードが、ポインタが局所であることを判定するか、又は保持しているPUを識別することが可能でない場合、局所で実際の「fprintf」コールを行う。このことの利点は、「printf」を処理しているPUのみが、ストリーム・ポインタ及びその関連付けられたバッファを参照解除するということである。リダイレクト・コードは、処理を行っているPUが、発信側のPUのキャッシュ/メモリに戻らないように、特定のコールによって利用される関連するコンテキストをフォワードするようチューニングすることが可能である。実際に、一実施例では、ソフトウェア修正可能な命令キャッシュは、ロード後、コードのPU毎チューニングについて実現される。ターゲット関数が引数として与えられた場合(例えば、第1の引数がポインタであり、そのメモリのPUに転送されている)場合、引数プロファイルを共有する複数のターゲット・ルーチンについて、同じリダイレクト・コードを使用することが可能である。例証の目的で、「fprintf」リダイレクト・コードがCプログラミング言語で実現されていた場合、以下と同様なものであり得る。
int pu;
if(local_address(p1)||!(pu=pu_for_address(pi))){
return asm_redirect_var(fn,p1);//(Comment 1 :Perform call)
}
return wt_transfer_wait_var(pu,fn,p1);//(Comment 2:Transfer and wait)
}
更に例証するに、かつ、次に、図15を参照するに、実施例による例示的な大域コード・ライブラリ・パラダイム1500を示す。特に、大域コード・ライブラリ・パラダイム1500を示す。特に、大域コード・ライブラリ1320は、リダイレクト・セクタ1111及び非リダイレクト・セクタ1112を含み、関数fprintf1510が非リダイレクト・セクタ1112に記憶され、(関数fprintfwt1520として表される)この関数のワンダリング・スレッド・バージョンが、リダイレクト・セクタ1111に記憶される。メモリ・ポインタ1530が関数fprintfwt1520に関係付けられ、メモリ・ポインタ1530は、この関数に関するデータが現在記憶されているアドレスを識別する。よって、第1のPU540が、関数fprintf1510のコール1540を受け取ると、この関数のワンダリング・スレッド・バージョンがリダイレクト・セクタ1111に現在、記憶されていることが判定される。よって、第1のPU540はこの関数をリロケータブル・コールとして識別し、第1のPU540に関連付けられたMMU840は、(PUの1つによって制御された特定の入出力(I/O)バッファに関連付けられた)メモリ・ポインタ1530を解析して、識別されたアドレスが第1のPU540の局所メモリ内に配置されているかを判定する。肯定の場合、第1のPU540は、関数fprintf1510をコールし、局所に記憶されたデータにアクセスすることにより、この関数を行う。否定の場合、MMU840は、このアドレスが配置された場所を求める(。更に、この場所に関連付けられたPUを識別する)。例示的な一実施例に従えば、前述の解析に関するコードは、以下に似る場合がある。
if(my_memory(p)){
fprintf(p,...)
}
else{
PU2=find_PU(p);
transfer_context(PU2)
}
};
ここで、「p」は精査されるメモリ・ポインタである。
種々の実施例が、プロセッサ装置の複製及び選択を駆動させるためのプロセッサ装置の動作の監視の実現形態に関係する。実際に、一実施例では、リダイレクト・コールは、特定のPUに、当該PUの現在の処理機能に基づいて転送され、適用可能な処理機能解析は、例えば、実現された(例えば、インジェクトされた)サポート・コードによって行い得る。例えば、コールが、潜在的なリダイレクト・コールとして識別されると、このコールを処理するために2つ以上のPUが利用可能な場合(2つ以上のPUが現在、関連したデータを局所に記憶している場合などに生じ得る)、対象のルーチンをどのPUが最も効率的に処理することが可能であるかに関する十分な情報に基づいた決定を行うために前述の種々のPUの現在の処理機能を解析し得る。第2の例として、ルーチンは、(ターゲット・コード自体とともに)別のPUにそれぞれを関連付け得るいくつかの別々の引数を有し得、その場合、インジェクトされたコードは、どの因子が最も重要であるかを決定する。
上記に係わらず、実施例では、特定のリソース(例えば、イーサネット(登録商標)又はシリアル・アドバンスド・テクノロジ・アタッチメント(SAT−A))に対するアクセスを有するそのPUに基づいて特定のPUにリダイレクト・コールが転送される。特に、リダイレクトは、前述のリソースに対する隣接性及びアクセスを実現するために起動される。例えば、コールがリダイレクト・コールとして識別されると、2つ以上のPUが、このコールの処理に利用可能な場合(2つ以上のPUが現在、関連するデータを局所で記憶している場合などに生じ得る)、対象のルーチンの効率的な処理を助け得る特定のリソースが識別され、利用可能なPUのうちの1つが、この識別されたリソースに対するアクセスを有する前述のPUに基づいて選択される。このことは、例えば、同時性の問題を避けるために特定のPUがハードウェアの唯一のコントロールを有する場合に有用であり得る。
例示的な実現形態によれば、特定のマシン命令がマルチスレッドのSMPマシンにおいて使用され、種々の実行可能なルーチンが前述の命令に基づいて構築される。特に、前述の実行可能なルーチンは、識別可能な共有メモリ・コヒーレンス・マシン命令を使用するものを含み、特定の例は、テストアンドセット(例えば、mutex)コード及びセマフォを利用するルーチンを含む。ポータブル・オペレーティング・システム・インタフェース(POSIX)スレッド(又は「Pthreads」)の場合、実施例では、Pthreadルーチン実現形態は、スレッド間通信を扱うための低位レベルのマシン機構の使用を示唆している。したがって、一実施例に従えば、共有メモリ・コヒーレンス・マシン命令は、この同じプロセッサが前述の特定のマシン命令を効率的に実行することができるようにどのルーチンを同じプロセッサに移動させるかの判定を助ける。前述の命令は、例えば、ロード中に識別し、次いで、実行可能なルーチンを含む、又は実行可能なルーチンにマッピングされたものが適切なリダイレクト・セクタに入れられるように指示し得る。別々のリダイレクト・セクタを、別々のコール・タイプを示すために使用し得る。Pthreads mutexコールは、関心のアドレスを第1の引数として有し、他のルーチンの場合、場合によっては、第2の引数又は第3の引数が、RPCの決定の最も適切なデータのアドレスである。セクタの選択は、コール・タイプを反映するためにシャドー・レジスタがどのようにして充填されるか、及び実現されたハードウェアRPC機構をどのようにして使用するかを指示し得る。
上述の通り、一実施例では、コード・インジェクション手法は、コールを転送するか否かの判定において重要な役割を果たし得る。例えば、かつ、次に図19を参照するに、実施例による例示的なコール・インジェクション・パラダイム1900を示す。特に、第1のPU540に関連付けられた(例えば、第1のPU540に割り当てられ、又は第1のPU540内に含まれた)キャッシュ・メモリ装置910が、キャッシュ・メモリ選択910によって表すように選択され、命令510がキャッシュ・メモリ装置910にロードされる。更に、余分なコードの組1920が、キャッシュ・メモリ装置910に、命令510に関連付けられた境界(例えば、メモリ位置の隣接のセット又は近傍のアドレス・シーケンス)においてインジェクトされ、命令510はターゲット命令である。この境界の識別は、例えば、キャッシュ・メモリ選択1910中に行い得る。更に、余分なコードの組1920は、第2のPU580などの特定のPUにコール570を転送するか否かを第1のPU540が判定することを可能にするよう構成される。このようにして、更なるソフトウェアは、そのリダイレクト意思決定プロセスによるハードウェアのサポートを支援し、それにより、より高度な解析を(本明細書及び特許請求の範囲記載のやり方などで)行うことを可能にするために実現し得る。動的共有ライブラリを使用するシステムにおいてコードをインジェクトするための例示的な方法は、デフォールトで使用され、適切なエントリ・ポイントを含むものの前に、別の共有ライブラリをロードすることである。これは、例えば、「LD_PRELOAD」などの環境変数の使用により、リナックス(Linux(登録商標))システム上で行うことが可能であり、ランタイム・システムは次いで、選好により、予めロードされたルーチンを使用し、今度は、元のターゲット又は他のコ―ドをコールすることが可能である。リナックス・コマンド「strace」は前述の機構を使用し、Linuxは「オープン・ソース」オペレーティング・システムである。
例示的な実現形態によれば、特定のタイプのルーチン・コールは、効率の目的で、複製データよりもむしろ引数としてポインタを使用し、前述のポインタは、値渡しコールに変換し得る。例えば、その「man」ページに記述されたようなオペレーティング・システム・コール「stat」について考えてみる。すなわち、
int stat(const char*path,struct stat*buf)である。
このコールにおいて転送されるデータは、ファイルの場所「path」、及びそれについての情報を返す場所である。このためにRPCを起動させ得る。コードを実行するPUがファイルを管理しないからである。前述のコールは、コピーイン/コピーアウト・コールにリマッピングすることが可能であり、それにより、データは、参照渡しされるよりも値渡しされる。例えば、
struct stat_i rpc_stat(const char path[MAX_PATH]);
などである)。ここで、stat_iは、statデータによる、通常のstatコール・リターンを含む。
C++などの言語などによる、ランタイムでのコードの修正に関し、(C言語におけるように)通常のコール・サイトにおけるコードのインジェクションに対する代替的なオプションが存在している。特に、例示的な実現形態では、サブクラスのカスタマイズのためにC++が「仮想関数テーブル」(VFT)を使用する限り、仮想関数を有するクラスに属するインスタンス化されたデータ項目はそれぞれ、1つ又は複数のVFTポインタを有する。VFTポインタの設定又は初期化はC++コンストラクタのジョブの一部であるので、「ラッパ」がコンストラクタの周りに追加された場合、対象のメソッドをコールする前にRPCリダイレクション・コードを使用するVFTの他のバージョンを指し示すようVFTポインタを修正することが可能である。よって、コードがロードされると、特定のクラス・コンストラクタは、コンストラクタをコールする一方で、元のコーラにデータ・アドレスを返す前に、割り当てられたデータを修正する、他のコードに対するコールで置き換えられ、コンストラクタ・コールは、データ場所が正しいことの保証を助けるために(場合によっては、低位レベルであるが)既に修正されている。
実施例では、ランタイム・メトリックが、最適な挙動のためにVFTを更にチューニングするために使用される。例えば、ランタイムにおけるコード実行の加速化の大部分は、プロセッサ・ハードウェアにおける分岐予測が首尾良く行われることに依存し得る。実際に、これに特化したハードウェアは、単なるプロセッサ自体よりも多くのものを含み得る。データ・サブクラス特有のメソッドを使用するC++及び同様の言語は、サブクラスにおける特定のケースを呈することにより、意思決定を減らすことが可能である。よって、ランタイム分岐決定がコンパイル時間決定と交換され、オーバヘッドは、一定の仮想関数コール・リダイレクトになる。これは、予測可能でない分岐ミスと対照的である。仮想関数コールのランタイム挙動を観測することができることにより、ランタイム・システムは、1つの分岐挙動の組を別のものよりも呈する可能性が高いルーチンの実現形態間でランタイム・システムが選ぶことを可能にする。例えば、ルーチンが、2つの分岐を有する場合、コードの4つのバージョンを作成することが可能であり、前述の4つのバージョンは種々のケースを適切に扱う一方、それらのコードは、分岐についての別々の真偽の可能性を仮定して生成される。
次に、いくつかの例示的なコール転送手法について掘り下げてみる。しかし、本願の手法は前述の例示的なコール転送手法に制限されず、他のコール転送手法を実現し得る。
上記に鑑みて、実施例では、コールにアクセスするPU(例えば、第1のPU540)は、そのコールをRPCなどにより、別のPUにリダイレクトすべきか否かを判定する。上述の通り、この決定は、ハードウェア及び/又はソフトウェア・サポート機構によって行い得る。しかし、一実施例では、制御のスレッドはまず、(他の当該PUはシステムのメモリ全てに対するアクセスを有している訳でないので、後続のRPC決定プロセスが行われる前に、制御のスレッドが別のPUから第1のPU540に自動的に転送されるように、前述の高位レベルの決定が行われる前に自動的に転送し得る。
一実施例に従えば、メモリ割り当てがデータ・タイプ毎に行われる。特に、例示的な実現形態では、前述のメモリ割り当てが、C言語で実現することが多少困難である一方、C++及び他のオブジェクト指向の言語は、余分なコードをインジェクトすることができるタイプ特有のコンストラクタを使用する。例えば、C++ライブラリをロードすると、メモリ割り当てコールが、コンストラクタ内で識別され、次いで、データが特定のPUに存在するようにメモリの特定の領域を使用するよう修正される。
上述のように、例示的な実現形態では、特定のタイプのルーチン・コールは、効率の目的で、複製データよりもむしろ引数としてポインタを使用し、前述のポインタは、値渡しコールに変換し得る。上記にかかわらず、一実施例では、転送ライブラリは、実現されたPU間でデータを転送するよう実現され、オペレーティング・システム・コードは、この転送ライブラリを生成するために前述の転送に先立って予め処理され、この予めの処理には、値渡しサポート・コードに、参照渡しソース・コードを変換することが関係する。
上述したように、実施例では、RPC機構をコール転送プロセスについて使用し得る。例えば、かつ、次に図31を参照するに、実施例による例示的なRPC転送パラダイム3100を示す。特に、RPC3110を起動させて、それにより、第1のPU540から第2のPU580にコール570を転送する。この点で、例示的な実現形態に従えば、RPC3110は、コンピュータ・プログラムが、(コール570にマッピングされたものなどの)サブルーチン又はプロシージャに、種々のリソース(例えば、複数のPU)の共有ネットワーク内の(例えば、別のPU内の)別のアドレス空間において実行させることを可能にするプロセス間通信である。実際に、RPC3110は更に、このコール転送プロセス中に第1のプロセッサ540のコンテキストを第2のプロセッサ580に転送するよう構成し得る。コール先のプロシージャが、コール側のプロシージャと同じアドレス空間にあってもなくてもよいという点以外は、RPC3110は局所プロシージャ・コールと同様である。むしろ、別々の2つのプロセスが、同じコンピュータ・システム上で実行していることがあり得、又は、別々のコンピュータ・システムが互いに通信し合うことをネットワークが可能にして前述のシステム上それぞれで実行していることがあり得る。そういうものとして、RPC3110は、比較的効率的であり、かつ真に分散化されたアプリケーションを実現するよう実施し得る。
int pthread_mutex_lock(pthread_mutex_t *mutex)
の通り、定義し得る。
RPC手法の場合に転送されるデータには、(1)mutexアドレス、(2)コール・アドレス、(3)リターンのための識別子(例えば、アドレス)、及び(4)ヘッダ(例えば、最小4ワードに集約し得る)がある。Mutexを直接読み出そうとすることには、少なくとも4ワードになり、場合によっては、8ワード以上になる少なくとも1つのキャッシュ・ラインの更新/フラッシングが関係する。しかし、キャッシュ・ラインが複数のプロセッサ間で共有される一方、RPCコールは、例えば、ポイントツーポイントのマルチプロセッサ相互接続プロトコル(例えば、インテル社クイックパス(QuickPath(登録商標))又はAMD社ハイパートランスポート・テクノロジ(HyperTransport Technology(登録商標))を実現することなどにより、)関係しているPUに対して排他的であり、メモリ・システムと別個であり得る。よって、コールを比較的効率的な態様で転送することが可能であるようにRPC機構を実現し得る。
void push (local address, data_size, target_pu, option_flags)
のようになり得る。データが実際に局所キャッシュ又は他の局所メモリにない場合、データを取り出し、又は移動するための動作は行われず、その場合、命令は事実上、プロセッサが単に、次のシーケンシャル命令に移動するように、比較的小量のメモリ空間を利用するがオペレーションを規定しないコンピュータ命令として規定し得る「no−op」である。更に、ターゲットのPUのキャッシング・ポリシーも、オペレーションをスキップし得るように考慮に入れることができる。ユーザは更に、局所キャッシュ内にデータを保持するか否かについて「プッシュ」により、余分な情報を供給し得る。
本願手法の種々の構成は、本明細書及び特許請求の範囲記載の種々の動作及びオペレーションを行うために配線し、又は構成し得る。しかし、一実施例に従えば、本願の手法の種々のオペレーションを行うためにコンピュータ・システムを実現し得る。よって、次に、例示的なコンピュータ・システム及び構成を深く掘り下げてみる。しかし、本願の手法は前述の例示的なシステム及び構成に制限されない。実際に、他のシステム及び構成を実現し得る。
上記に鑑みて、本願の手法の種々の実施例には以下の少なくとも1つが関係する。
上記記載は、少なくとも以下の概念を提示している。
予め選択されたデータ場所を有するデータにマッピングされた命令を識別する工程と、
前記予め選択されたデータ場所に基づいて第1の処理装置(PU)から第2のPUに前記命令のコールを転送するか否かを判定する工程と
を含むコンピュータ読み取り可能な媒体。
前記第1のPUに関連付けられたキャッシュ・メモリ装置を選択する工程と、
前記命令を前記キャッシュ・メモリ装置にロードする工程と、
前記命令に関連付けられた境界において、前記キャッシュ・メモリ装置に、余分なコードの組をインジェクトする工程であって、前記命令がターゲット命令であり、前記余分なコードの組は、前記コールを特定のPUに転送するか否かを前記第1のPUが判定することを可能にするよう構成された工程と
を含むコンピュータ読み取り可能な媒体。
予め選択された1つ又は複数の実行可能なルーチンそれぞれに対応する1つ又は複数の実行可能なルーチン名を識別する工程と、
前記1つ又は複数の実行可能なルーチン名に基づいて、前記余分なコードの組を選択して、参照渡しコールから値渡しコールに前記コールを変換する工程と
を含むコンピュータ読み取り可能な媒体。
前記第1のPU及び前記第2のPUそれぞれに関連付けられた第1のキャッシュ・メモリ装置及び第2のキャッシュ・メモリ装置を識別する工程と、
第1のデータの組及び第2のデータの組それぞれに関連付けられた第1のデータ場所及び第2のデータ場所を識別する工程であって、前記第1のデータ場所及び前記第2のデータ場所は前記第1のキャッシュ・メモリ装置内及び前記第2のキャッシュ・メモリ装置内それぞれに配置される工程と、
前記第1のデータ場所及び前記第2のデータ場所に基づいて前記第1のデータの組及び前記第2のデータの組それぞれに対する前記第1のキャッシュ・メモリ装置及び前記第2のキャッシュ・メモリ装置の割り当てを行う工程と
を含むコンピュータ読み取り可能な媒体。
前記命令にマッピングされたデータの組を識別する工程と、
前記第1のキャッシュ・メモリ装置でなく前記第2のキャッシュ・メモリ装置に前記データの組が現在記憶されていることを判定して、それにより、前記第1のPUから前記第2のPUに前記コールを転送することを決定する工程と
を含むコンピュータ読み取り可能な媒体。
前記第1のPU及び前記第2のPUそれぞれに関連付けられた第1のキャッシュ・メモリ装置及び第2のキャッシュ・メモリ装置を識別する工程と、
前記第1のPUにより、前記コールにアクセスする工程であって、前記コールは、前記予め選択されたデータ場所に前記命令がマッピングされている旨を示す引数を含む工程と、
前記第1のPUによって前記引数を解析して、前記予め選択されたデータ場所が前記第1のキャッシュ・メモリ装置内に配置されていない旨の判定を行う工程と、
前記判定に基づいて潜在的なリダイレクト・コールとして前記コールを識別する工程とを含むコンピュータ読み取り可能な媒体。
前記予め選択されたデータ場所が前記第2のキャッシュ・メモリ装置に配置されていない旨を判定し、それにより、前記第1のPUにより、前記潜在的なリダイレクト・コールに関連付けられたターゲット・コードを実行することの決定を行う工程と、
前記決定に基づいて前記第1のPUにより、前記ターゲット・コードを実行する工程と
を含むコンピュータ読み取り可能な媒体。
前記予め選択されたデータ場所が前記第2のキャッシュ・メモリ装置内に配置されていることを判定して、それにより、前記潜在的なリダイレクト・コールを実際のリダイレクト・コールとして識別する工程と、
前記第1のPUから前記第2のPUに前記実際のリダイレクト・コールを転送する工程と
を含むコンピュータ読み取り可能な媒体。
前記命令に関連付けられたコード又はデータ・メモリ場所を識別する工程と、
前記第2のPUに関連付けられた前記コード又はデータ・メモリ場所に基づいて前記第1のPUから前記第2のPUに前記コールを転送する工程と
を含むコンピュータ読み取り可能な媒体。
前記コード又はデータ・メモリ場所が前記第2のPU及び複数の他のPUに関連付けられていることを判定する工程と、
前記第2のPUに対応する現在利用可能な処理機能を反映する数値測定を定義する工程と、
複数の他の現在利用可能な処理機能それぞれを反映する複数の他の数値測定を定義する工程であって、前記複数の他の現在利用可能な処理機能は前記複数の他のPUそれぞれに対応する工程と、
前記数値測定が前記他の数値測定それぞれよりも大きいことに基づいて前記第1のPUから前記第2のPUに前記コールを転送する工程と
を含むコンピュータ読み取り可能な媒体。
特定のリソースを選択する工程と、
前記第2のPUに割り当てられている前記特定のリソースの制御の度合いに基づき、前記特定のリソースへのアクセスを前記第1のPUが欠いていることに基づき、かつ、前記特定のリソースへのアクセスを1つ又は複数の他のPUが欠いていることに基づいて前記第1のPUから前記第2のPUに前記コールを転送する工程と
を含むコンピュータ読み取り可能な媒体。
前記命令を記憶させた共有ランダム・メモリ(RAM)装置を選択する工程と、
前記共有RAM装置のセクタをリダイレクト・セクタとして識別する工程と、
前記命令が前記リダイレクト・セクタに記憶されているか否かを判定して、それにより、前記第1のPUから前記第2のPUに前記コールを転送するか否かを判定する工程と
を含むコンピュータ読み取り可能な媒体。
共有RAM装置を選択する工程と、
前記共有RAM装置の1つ又は複数のセクタを1つ又は複数のリダイレクト・セクタそれぞれとして識別する工程と、
前記命令を含むプログラムを識別する工程と、
前記プログラムに対応するスタティック・コードにアクセスする工程と、
前記スタティック・コードのサイズに基づいて前記1つ又は複数のリダイレクト・セクタの全体としてのサイズを定義することにより、前記共有RAM装置をパーティショニングする工程と、
前記パーティショニング及びPU仕様に基づいて前記1つ又は複数のリダイレクト・セクタのうちの1つ又は複数のリダイレクト・セクタに前記スタティック・コードの量をロードする工程と
を含むコンピュータ読み取り可能な媒体。
前記共有RAM装置の1つ又は複数の別々のセクタを1つ又は複数の非リダイレクト・セクタそれぞれとして識別する工程と、
前記プログラムに対応する少なくとも1つの共有ライブラリの1つ又は複数の部分にアクセスする工程と、
前記少なくとも1つの共有ライブラリの1つ又は複数の部分及び前記スタティック・コードの全体としてのサイズに基づいて前記1つ又は複数のリダイレクト・セクタの前記全体としてのサイズを定義することにより、前記共有RAM装置をプロポーショニングする工程と、
前記プロポーショニング及び前記PU仕様に基づいて前記1つ又は複数の非リダイレクト・セクタのうちの1つ又は複数の選択された非リダイレクト・セクタに、又は前記1つ又は複数のリダイレクト・セクタのうちの1つ又は複数の選択されたリダイレクト・セクタに前記スタティック・コードの1つ又は複数の部分をロードする工程、及び/又は、
前記プロポーショニング及び前記PU仕様に基づいて前記1つ又は複数の非リダイレクト・セクタのうちの1つ又は複数の選択された非リダイレクト・セクタに、又は1つ又は複数のリダイレクト・セクタのうちの1つ又は複数の選択されたリダイレクト・セクタに前記少なくとも1つの共有ライブラリの前記1つ又は複数の部分をロードする工程と
を含むコンピュータ読み取り可能な媒体。
前記第1のPUに関連付けられたキャッシュ・メモリ装置を選択する工程と、
前記命令に関連付けられたコード又はデータを前記キャッシュ・メモリ装置にフェッチする工程と、
前記第1のPUに関連付けられたPUデータ・パスを識別する工程と、
前記PUデータ・パス内のシャドー・レジスタ値を、前記コード又はデータに関連付けられた少なくとも1つのPUを示すPU識別子を前記シャドー・レジスタ値が反映するように規定する工程と
を含むコンピュータ読み取り可能な媒体。
前記命令に関連付けられたコードを識別する工程と、
少なくとも1つの共有メモリ・コヒーレンス・マシン命令を含む実行可能なルーチンを識別する工程と、
前記実行可能なルーチンが前記第2のPUに関連付けられていることに基づき、かつ、前記コードが、前記少なくとも1つの共有メモリ・コヒーレンス・マシン命令にマッピングされていることに基づき、前記第1のPUから前記第2のPUに前記コールを転送する工程と
を含むコンピュータ読み取り可能な媒体。
前記命令に関連付けられた大域メモリ場所を識別する工程と、
第3のPUから前記第1のPUへ前記コールを自動的に、前記第3のPUが前記大域メモリ場所へのアクセスを欠いていること、及び前記第1のPUが前記大域メモリ場所へのアクセスを有していることの結果として転送する工程と
を含むコンピュータ読み取り可能な媒体。
特定のPUに関連付けられたキャッシュ・メモリ装置を識別する工程と、
前記予め選択されたデータ場所が前記キャッシュ・メモリ装置内に配置されていることに基づいて前記データに関連付けられた特定のデータ・タイプに対する前記キャッシュ・メモリ装置の割り当てを行う工程と、
前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程と、
前記プログラミング言語に対応するライブラリにアクセスする工程であって、前記ライブラリは、メモリ割り当てコールを含むコンストラクタを規定し、前記メモリ割り当てコールは前記特定のデータ・タイプを有する情報にマッピングされる工程と、
前記割り当てに基づいて、前記メモリ割り当てコールに対する修正を実現して、それにより、前記プログラムの修正バージョン及び修正メモリ割り当てコールを作成する工程と、前記修正の結果として前記情報が前記キャッシュ・メモリ装置にロードされるように、前記修正されたメモリ割り当てコールを行う工程と
を含むコンピュータ読み取り可能な媒体。
前記コールを行って、それにより、前記割り当ての結果として前記特定のPUにより、前記プログラムの前記修正バージョンを実行する工程と
を含むコンピュータ読み取り可能な媒体。
1つ又は複数のコード・ライブラリを識別する工程と、
前記1つ又は複数のコード・ライブラリに関連付けられた参照渡しソース・コードにアクセスする工程と、前記参照渡しソース・コードを値渡しサポート・コードに変換して、それにより、転送ライブラリを生成する工程と、前記転送ライブラリを利用して、前記データの参照渡しでなく、値渡しを行う工程と
を含むコンピュータ読み取り可能な媒体。
前記コール内の1つ又は複数のポインタを識別する工程と、
前記1つ又は複数のポインタを変換して、それにより、前記データの参照渡しでなく値渡しを行うよう前記コールを構成する工程と、
前記第1のPUから前記第2のPUへの前記コールの転送を実行する工程と、
前記転送中に前記データの値渡しを行って、それにより、前記データの局所の複製を第1のキャッシュ・メモリ装置に記憶する工程であって、前記第2のPUが前記第1のキャッシュ・メモリ装置を含む工程と、
前記1つ又は複数のプリンタを前記局所の複製にリマッピングして、それにより、第2のキャッシュ・メモリ装置にアクセスすることなく、前記コールを実行することを可能にする工程であって、前記第1のPUが、前記第2のキャッシュ・メモリ装置を含む工程と
を含むコンピュータ読み取り可能な媒体。
遠隔プロシージャ・コール(RPC)を起動させて、それにより、前記第1のPUから前記第2のPUに前記コールを転送する工程を含むコンピュータ読み取り可能な媒体。
前記第1のPU及び前記第2のPUそれぞれに関連付けられた第1の局所メモリ・マップ及び第2の局所メモリ・マップを識別する工程と、
前記第1の局所メモリ・マップと前記第2の局所メモリ・マップとの間の区別を識別する工程と、
前記区別に基づいてメモリ・アドレス変換を生成する工程と、
前記メモリ・アドレス変換を利用して前記RPCを構成する工程と
を含むコンピュータ読み取り可能な媒体。
前記第1のPU及び前記第2のPUそれぞれに関連付けられた第1のキャッシュ・メモリ装置及び第2のキャッシュ・メモリ装置を識別する工程と、
前記第1のキャッシュ・メモリに記憶され、前記命令に関連付けられたデータ値を識別する工程と、
前記RPCの結果として前記第2のキャッシュ・メモリ装置に前記データ値を記憶する工程とを含むコンピュータ読み取り可能な媒体。
前記第2のキャッシュ・メモリに前記データ値が記憶されるまで前記第2のPUによる前記コールの実行を遅延させる工程とを含むコンピュータ読み取り可能な媒体。
制御の第1のスレッドに関連付けられた実行可能なルーチン及び前記命令を含むプログラムにアクセスする工程と、
前記コール内の1つ又は複数のポインタを識別する工程と、
前記1つ又は複数のポインタを変換して、前記データの参照渡しでなく値渡しを行うよう前記コールを構成して、それにより、制御の第2のスレッドを作成する工程と、
前記第2のPUに関連付けられたキャッシュ・メモリ装置を識別する工程と、
前記RPCの結果として前記データの値渡しを行って、それにより、前記データの局所の複製を前記キャッシュ・メモリ装置に記憶し、前記第2のPUに前記制御の第2のスレッドを供給する工程と、
前記制御の第1のスレッドが前記制御の第2のスレッドと無関係であることの結果として、前記第2のPUが前記命令の実行を前記制御の第2のスレッドに基づいて行う一方で、前記制御の第1のスレッドに基づいて前記第1のPUにより、前記実行可能なルーチンを行う工程であって、前記実行可能なルーチンが、前記実行中に生成されたデータ値に対するリターン要求を欠いている工程と
を含むコンピュータ読み取り可能な媒体。
前記データにマッピングされた第1の実行可能なルーチンを行う第1のプロセッシング・コアを識別する工程であって、前記第1の実行可能なルーチンは共有メモリ・コヒーレンス・マシン命令を含む工程と、
第2のプロセッシング・コアにおいて第2の実行可能なルーチンにアクセスする工程と、
プロシージャ・コールを起動して、それにより、前記第2の実行可能なルーチンが前記データにマッピングされていることに基づき、かつ、前記共有メモリ・コヒーレンス・マシン命令を含む前記第2の実行可能なルーチンに基づき、前記第2のプロセッシング・コアから前記第1のプロセッシング・コアに前記第2の実行可能なルーチンを転送する工程と
を含むコンピュータ読み取り可能な媒体。
前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程であって、1つ又は複数の仮想関数を有するクラスに属するデータ項目が、前記VFTにマッピングされた1つ又は複数のVFTポインタを含むように仮想関数テーブル(VFT)を実現するよう前記プログラミング言語が構成される工程と、
前記プログラミング言語に関連付けられたコンストラクタを識別する工程であって、前記コンストラクタは前記1つ又は複数のVFTポインタを規定するよう構成される工程と、
前記プログラムのロード中に前記コンストラクタ周りにラッパ・コールをインジェクトして、それにより、前記1つ又は複数の仮想関数に対する1つ又は複数のRPC決定ラッパを含む、VFTへのポインタで、前記1つ又は複数のVFTポインタを置き換える工程と
を含むコンピュータ読み取り可能な媒体。
前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程であって、1つ又は複数の仮想関数を有するクラスに属するデータ項目が、前記VFTにマッピングされた1つ又は複数のVFTポインタを含むようにVFTを実現するよう前記プログラミング言語が構成される工程と、
RPC決定コードがコールされることなく、前記1つ又は複数の仮想関数が1つ又は複数のRPCそれぞれに自動的に誘導されるように複数のRPCの実現の結果として前記VFTを修正する工程とを含むコンピュータ読み取り可能な媒体。
前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程であって、1つ又は複数の仮想関数を有するクラスに属するデータ項目が、前記VFTにマッピングされた1つ又は複数のVFTポインタを含むようにVFTを実現するよう前記プログラミング言語が構成される工程と、
RPC決定コードがコールされることなく、前記1つ又は複数の仮想関数が前記プログラムに関連付けられた局所コードに自動的に誘導されるように1つ又は複数のRPCの実現がないことの結果として前記VFTを修正する工程とを含むコンピュータ読み取り可能な媒体。
複数の条件分岐にマッピングされたコードを含む前記命令の予め定義されたバージョンにアクセスする工程と、
前記命令の複数の修正バージョンを生成する工程であって、前記修正バージョンはそれぞれ、前記複数の条件分岐のうちの別の条件分岐をたどるよう修正されたコードを含む工程と、
前記複数の修正バージョンそれぞれに関連付けられた複数の挙動を予測する工程と、
前記命令に関連付けられた実行可能なルーチンにアクセスする工程と、
前記実行可能なルーチンに関連付けられたランタイム挙動を識別する工程と、
前記ランタイム挙動に対応する前記修正バージョンの予測された挙動に基づいて前記実行可能なルーチンの動作中の実行のために前記複数の修正バージョンのうちの修正バージョンを選択する工程と
を含むコンピュータ読み取り可能な媒体。
前記命令に関連付けられた実行可能なルーチンにアクセスする工程と、
仮想関数の第1の実現形態及び第2の実現形態を識別する工程であって、前記仮想関数は前記第1の実現形態を指し示すVFTエントリを含み、前記仮想関数は更に、複数のVFTのうちの第1のVFTにマッピングされたVFTポインタを含む工程と、
前記第1の実現形態により、前記実行可能なルーチンの一部分の動作を起動させる工程と、
前記動作中の前記第1の実現形態によって表される分岐挙動を識別する工程と、
前記分岐挙動の動作解析を行って、それにより、前記第2の実現形態が前記分岐挙動に対応する度合いが、前記第1の実現形態が前記分岐挙動に対応する度合いよりも大きいことを判定する工程と、
前記動作解析に基づいて前記複数のVFTのうちの第2のVFTに前記VFTポインタをリマッピングする工程であって、前記第2のVFTが、前記第2の実現形態にマッピングされたポインタを含む工程、又は、
前記動作解析に基づいて前記第2の実現形態を指し示すよう前記VFTエントリを更新する工程と
を含むコンピュータ読み取り可能な媒体。
前記命令に関連付けられたプログラムにアクセスする工程であって、前記プログラムは、予め定義されたコール・サイトにマッピングされた予め定義された関数を含む工程と、
前記予め定義されたコール・サイトにより、前記予め定義された関数のコールを行う工程と、
前記コールの結果として、前記予め定義された関数によって表される分岐挙動を識別する工程と、
前記分岐挙動に基づいて、前記予め定義されたコール・サイトを修正する工程と
を含むコンピュータ読み取り可能な媒体。
前記命令に関連付けられた実行可能なルーチンにアクセスする工程と、
仮想関数の第1の実現形態及び第2の実現形態を識別する工程であって、前記仮想関数は前記第1の実現形態を指し示すVFTエントリを含み、前記仮想関数は更に、複数のVFTのうちの第1のVFTにマッピングされたVFTポインタを更に含む工程と、
前記第1の実現形態により、前記実行可能なルーチンの一部分の動作を起動させる工程と、
前記動作中の前記第1の実現形態によって表される分岐挙動を識別する工程と、
前記分岐挙動に基づいて前記仮想関数の考えられる将来の挙動を予測する工程と、
前記考えられる将来の挙動の動作解析を行って、それにより、前記第2の実現形態が前記考えられる将来の挙動に対応する度合いが、前記第1の実現形態が前記考えられる将来の挙動に対応する度合いよりも大きいことを判定する工程と、
前記動作解析に基づいて前記複数のVFTのうちの第2のVFTに前記VFTポインタをリマッピングする工程であって、前記第2のVFTが、前記第2の実現形態にマッピングされたポインタを含む工程、又は、
前記動作解析に基づいて前記第2の実現形態を指し示すよう前記VFTエントリを更新する工程とを含むコンピュータ読み取り可能な媒体。
予め選択されたデータ場所を有するデータにマッピングされた命令を識別する工程と、
前記予め選択されたデータ場所に基づいて第1の処理装置(PU)から第2のPUに前記命令のコールを転送するか否かを判定する工程と
を含む処理リソース割り当て方法。
前記第1のPUに関連付けられたキャッシュ・メモリ装置を選択する工程と、
前記命令を前記キャッシュ・メモリ装置にロードする工程と、
前記命令に関連付けられた境界において、前記キャッシュ・メモリ装置に、余分なコードの組をインジェクトする工程であって、前記命令がターゲット命令であり、前記余分なコードの組は、前記コールを特定のPUに転送するか否かを前記第1のPUが判定することを可能にするよう構成された工程と
を含む処理リソース割り当て方法。
予め選択された1つ又は複数の実行可能なルーチンそれぞれに対応する1つ又は複数の実行可能なルーチン名を識別する工程と、
前記1つ又は複数の実行可能なルーチン名に基づいて、前記余分なコードの組を選択して、参照渡しコールから値渡しコールに前記コールを変換する工程と
を含む処理リソース割り当て方法。
前記第1のPU及び前記第2のPUそれぞれに関連付けられた第1のキャッシュ・メモリ装置及び第2のキャッシュ・メモリ装置を識別する工程と、
第1のデータの組及び第2のデータの組それぞれに関連付けられた第1のデータ場所及び第2のデータ場所を識別する工程であって、前記第1のデータ場所及び前記第2のデータ場所は前記第1のキャッシュ・メモリ装置内及び前記第2のキャッシュ・メモリ装置内それぞれに配置される工程と、
前記第1のデータ場所及び前記第2のデータ場所に基づいて前記第1のデータの組及び前記第2のデータの組それぞれに対する前記第1のキャッシュ・メモリ装置及び前記第2のキャッシュ・メモリ装置の割り当てを行う工程と
を含む処理リソース割り当て方法。
前記命令にマッピングされたデータの組を識別する工程と、
前記第1のキャッシュ・メモリ装置でなく前記第2のキャッシュ・メモリ装置に前記データの組が現在記憶されていることを判定して、それにより、前記第1のPUから前記第2のPUに前記コールを転送することを決定する工程と
を含む処理リソース割り当て方法。
前記第1のPU及び前記第2のPUそれぞれに関連付けられた第1のキャッシュ・メモリ装置及び第2のキャッシュ・メモリ装置を識別する工程と、
前記第1のPUにより、前記コールにアクセスする工程であって、前記コールは、前記予め選択されたデータ場所に前記命令がマッピングされている旨を示す引数を含む工程と、
前記第1のPUによって前記引数を解析して、前記予め選択されたデータ場所が前記第1のキャッシュ・メモリ装置内に配置されていない旨の判定を行う工程と、
前記判定に基づいて潜在的なリダイレクト・コールとして前記コールを識別する工程とを含む処理リソース割り当て方法。
前記予め選択されたデータ場所が前記第2のキャッシュ・メモリ装置に配置されていない旨を判定し、それにより、前記第1のPUにより、前記潜在的なリダイレクト・コールに関連付けられたターゲット・コードを実行することの決定を行う工程と、
前記決定に基づいて前記第1のPUにより、前記ターゲット・コードを実行する工程と
を含む処理リソース割り当て方法。
前記予め選択されたデータ場所が前記第2のキャッシュ・メモリ装置内に配置されていることを判定して、それにより、前記潜在的なリダイレクト・コールを実際のリダイレクト・コールとして識別する工程と、
前記第1のPUから前記第2のPUに前記実際のリダイレクト・コールを転送する工程と
を含む処理リソース割り当て方法。
前記命令に関連付けられたコード又はデータ・メモリ場所を識別する工程と、
前記第2のPUに関連付けられた前記コード又はデータ・メモリ場所に基づいて前記第1のPUから前記第2のPUに前記コールを転送する工程と
を含む処理リソース割り当て方法。
前記コード又はデータ・メモリ場所が前記第2のPU及び複数の他のPUに関連付けられていることを判定する工程と、
前記第2のPUに対応する現在利用可能な処理機能を反映する数値測定を定義する工程と、
複数の他の現在利用可能な処理機能それぞれを反映する複数の他の数値測定を定義する工程であって、前記複数の他の現在利用可能な処理機能は前記複数の他のPUそれぞれに対応する工程と、
前記数値測定が前記他の数値測定それぞれよりも大きいことに基づいて前記第1のPUから前記第2のPUに前記コールを転送する工程と
を含む処理リソース割り当て方法。
特定のリソースを選択する工程と、
前記第2のPUに割り当てられている前記特定のリソースの制御の度合いに基づき、前記特定のリソースへのアクセスを前記第1のPUが欠いていることに基づき、かつ、前記特定のリソースへのアクセスを1つ又は複数の他のPUが欠いていることに基づいて前記第1のPUから前記第2のPUに前記コールを転送する工程と
を含む処理リソース割り当て方法。
前記命令を記憶させた共有ランダム・メモリ(RAM)装置を選択する工程と、
前記共有RAM装置のセクタをリダイレクト・セクタとして識別する工程と、
前記命令が前記リダイレクト・セクタに記憶されているか否かを判定して、それにより、前記第1のPUから前記第2のPUに前記コールを転送するか否かを判定する工程と
を含む処理リソース割り当て方法。
共有RAM装置を選択する工程と、
前記共有RAM装置の1つ又は複数のセクタを1つ又は複数のリダイレクト・セクタそれぞれとして識別する工程と、
前記命令を含むプログラムを識別する工程と、
前記プログラムに対応するスタティック・コードにアクセスする工程と、
前記スタティック・コードのサイズに基づいて前記1つ又は複数のリダイレクト・セクタの全体としてのサイズを定義することにより、前記共有RAM装置をパーティショニングする工程と、
前記パーティショニング及びPU仕様に基づいて前記1つ又は複数のリダイレクト・セクタのうちの1つ又は複数のリダイレクト・セクタに前記スタティック・コードの量をロードする工程と
を含む処理リソース割り当て方法。
前記共有RAM装置の1つ又は複数の別々のセクタを1つ又は複数の非リダイレクト・セクタそれぞれとして識別する工程と、
前記プログラムに対応する少なくとも1つの共有ライブラリの1つ又は複数の部分にアクセスする工程と、
前記少なくとも1つの共有ライブラリの1つ又は複数の部分及び前記スタティック・コードの全体としてのサイズに基づいて前記1つ又は複数のリダイレクト・セクタの前記全体としてのサイズを定義することにより、前記共有RAM装置をプロポーショニングする工程と、
前記プロポーショニング及び前記PU仕様に基づいて前記1つ又は複数の非リダイレクト・セクタのうちの1つ又は複数の選択された非リダイレクト・セクタに、又は前記1つ又は複数のリダイレクト・セクタのうちの1つ又は複数の選択されたリダイレクト・セクタに前記スタティック・コードの1つ又は複数の部分をロードする工程、及び/又は、
前記プロポーショニング及び前記PU仕様に基づいて前記1つ又は複数の非リダイレクト・セクタのうちの1つ又は複数の選択された非リダイレクト・セクタに、又は1つ又は複数のリダイレクト・セクタのうちの1つ又は複数の選択されたリダイレクト・セクタに前記少なくとも1つの共有ライブラリの前記1つ又は複数の部分をロードする工程と
を含む処理リソース割り当て方法。
前記第1のPUに関連付けられたキャッシュ・メモリ装置を選択する工程と、
前記命令に関連付けられたコード又はデータを前記キャッシュ・メモリ装置にフェッチする工程と、
前記第1のPUに関連付けられたPUデータ・パスを識別する工程と、
前記PUデータ・パス内のシャドー・レジスタ値を、前記コード又はデータに関連付けられた少なくとも1つのPUを示すPU識別子を前記シャドー・レジスタ値が反映するように規定する工程と
を含む処理リソース割り当て方法。
前記命令に関連付けられたコードを識別する工程と、
少なくとも1つの共有メモリ・コヒーレンス・マシン命令を含む実行可能なルーチンを識別する工程と、
前記実行可能なルーチンが前記第2のPUに関連付けられていることに基づき、かつ、前記コードが、前記少なくとも1つの共有メモリ・コヒーレンス・マシン命令にマッピングされていることに基づき、前記第1のPUから前記第2のPUに前記コールを転送する工程と
を含む処理リソース割り当て方法。
前記命令に関連付けられた大域メモリ場所を識別する工程と、
第3のPUから前記第1のPUへ前記コールを自動的に、前記第3のPUが前記大域メモリ場所へのアクセスを欠いていること、及び前記第1のPUが前記大域メモリ場所へのアクセスを有していることの結果として転送する工程と
を含む処理リソース割り当て方法。
特定のPUに関連付けられたキャッシュ・メモリ装置を識別する工程と、
前記予め選択されたデータ場所が前記キャッシュ・メモリ装置内に配置されていることに基づいて前記データに関連付けられた特定のデータ・タイプに対する前記キャッシュ・メモリ装置の割り当てを行う工程と、
前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程と、
前記プログラミング言語に対応するライブラリにアクセスする工程であって、前記ライブラリは、メモリ割り当てコールを含むコンストラクタを規定し、前記メモリ割り当てコールは前記特定のデータ・タイプを有する情報にマッピングされる工程と、
前記割り当てに基づいて、前記メモリ割り当てコールに対する修正を実現して、それにより、前記プログラムの修正バージョン及び修正メモリ割り当てコールを作成する工程と、前記修正の結果として前記情報が前記キャッシュ・メモリ装置にロードされるように、前記修正されたメモリ割り当てコールを行う工程と
を含む処理リソース割り当て方法。
前記コールを行って、それにより、前記割り当ての結果として前記特定のPUにより、前記プログラムの前記修正バージョンを実行する工程と
を含む処理リソース割り当て方法。
1つ又は複数のコード・ライブラリを識別する工程と、
前記1つ又は複数のコード・ライブラリに関連付けられた参照渡しソース・コードにアクセスする工程と、前記参照渡しソース・コードを値渡しサポート・コードに変換して、それにより、転送ライブラリを生成する工程と、前記転送ライブラリを利用して、前記データの参照渡しでなく、値渡しを行う工程と
を含む処理リソース割り当て方法。
前記コール内の1つ又は複数のポインタを識別する工程と、
前記1つ又は複数のポインタを変換して、それにより、前記データの参照渡しでなく値渡しを行うよう前記コールを構成する工程と、
前記第1のPUから前記第2のPUへの前記コールの転送を実行する工程と、
前記転送中に前記データの値渡しを行って、それにより、前記データの局所の複製を第1のキャッシュ・メモリ装置に記憶する工程であって、前記第2のPUが前記第1のキャッシュ・メモリ装置を含む工程と、
前記1つ又は複数のプリンタを前記局所の複製にリマッピングして、それにより、第2のキャッシュ・メモリ装置にアクセスすることなく、前記コールを実行することを可能にする工程であって、前記第1のPUが、前記第2のキャッシュ・メモリ装置を含む工程と
を含む処理リソース割り当て方法。
遠隔プロシージャ・コール(RPC)を起動させて、それにより、前記第1のPUから前記第2のPUに前記コールを転送する工程を含む処理リソース割り当て方法。
前記第1のPU及び前記第2のPUそれぞれに関連付けられた第1の局所メモリ・マップ及び第2の局所メモリ・マップを識別する工程と、
前記第1の局所メモリ・マップと前記第2の局所メモリ・マップとの間の区別を識別する工程と、
前記区別に基づいてメモリ・アドレス変換を生成する工程と、
前記メモリ・アドレス変換を利用して前記RPCを構成する工程と
を含む処理リソース割り当て方法。
前記第1のPU及び前記第2のPUそれぞれに関連付けられた第1のキャッシュ・メモリ装置及び第2のキャッシュ・メモリ装置を識別する工程と、
前記第1のキャッシュ・メモリに記憶され、前記命令に関連付けられたデータ値を識別する工程と、
前記RPCの結果として前記第2のキャッシュ・メモリ装置に前記データ値を記憶する工程とを含む処理リソース割り当て方法。
前記第2のキャッシュ・メモリに前記データ値が記憶されるまで前記第2のPUによる前記コールの実行を遅延させる工程とを含む処理リソース割り当て方法。
制御の第1のスレッドに関連付けられた実行可能なルーチン及び前記命令を含むプログラムにアクセスする工程と、
前記コール内の1つ又は複数のポインタを識別する工程と、
前記1つ又は複数のポインタを変換して、前記データの参照渡しでなく値渡しを行うよう前記コールを構成して、それにより、制御の第2のスレッドを作成する工程と、
前記第2のPUに関連付けられたキャッシュ・メモリ装置を識別する工程と、
前記RPCの結果として前記データの値渡しを行って、それにより、前記データの局所の複製を前記キャッシュ・メモリ装置に記憶し、前記第2のPUに前記制御の第2のスレッドを供給する工程と、
前記制御の第1のスレッドが前記制御の第2のスレッドと無関係であることの結果として、前記第2のPUが前記命令の実行を前記制御の第2のスレッドに基づいて行う一方で、前記制御の第1のスレッドに基づいて前記第1のPUにより、前記実行可能なルーチンを行う工程であって、前記実行可能なルーチンが、前記実行中に生成されたデータ値に対するリターン要求を欠いている工程と
を含む処理リソース割り当て方法。
前記データにマッピングされた第1の実行可能なルーチンを行う第1のプロセッシング・コアを識別する工程であって、前記第1の実行可能なルーチンは共有メモリ・コヒーレンス・マシン命令を含む工程と、
第2のプロセッシング・コアにおいて第2の実行可能なルーチンにアクセスする工程と、
プロシージャ・コールを起動して、それにより、前記第2の実行可能なルーチンが前記データにマッピングされていることに基づき、かつ、前記共有メモリ・コヒーレンス・マシン命令を含む前記第2の実行可能なルーチンに基づき、前記第2のプロセッシング・コアから前記第1のプロセッシング・コアに前記第2の実行可能なルーチンを転送する工程と
を含む処理リソース割り当て方法。
前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程であって、1つ又は複数の仮想関数を有するクラスに属するデータ項目が、前記VFTにマッピングされた1つ又は複数のVFTポインタを含むように仮想関数テーブル(VFT)を実現するよう前記プログラミング言語が構成される工程と、
前記プログラミング言語に関連付けられたコンストラクタを識別する工程であって、前記コンストラクタは前記1つ又は複数のVFTポインタを規定するよう構成される工程と、
前記プログラムのロード中に前記コンストラクタ周りにラッパ・コールをインジェクトして、それにより、前記1つ又は複数の仮想関数に対する1つ又は複数のRPC決定ラッパを含む、VFTへのポインタで、前記1つ又は複数のVFTポインタを置き換える工程と
を含む処理リソース割り当て方法。
前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程であって、1つ又は複数の仮想関数を有するクラスに属するデータ項目が、前記VFTにマッピングされた1つ又は複数のVFTポインタを含むようにVFTを実現するよう前記プログラミング言語が構成される工程と、
RPC決定コードがコールされることなく、前記1つ又は複数の仮想関数が1つ又は複数のRPCそれぞれに自動的に誘導されるように複数のRPCの実現の結果として前記VFTを修正する工程とを含む処理リソース割り当て方法。
前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程であって、1つ又は複数の仮想関数を有するクラスに属するデータ項目が、前記VFTにマッピングされた1つ又は複数のVFTポインタを含むようにVFTを実現するよう前記プログラミング言語が構成される工程と、
RPC決定コードがコールされることなく、前記1つ又は複数の仮想関数が前記プログラムに関連付けられた局所コードに自動的に誘導されるように1つ又は複数のRPCの実現がないことの結果として前記VFTを修正する工程とを含む処理リソース割り当て方法。
複数の条件分岐にマッピングされたコードを含む前記命令の予め定義されたバージョンにアクセスする工程と、
前記命令の複数の修正バージョンを生成する工程であって、前記修正バージョンはそれぞれ、前記複数の条件分岐のうちの別の条件分岐をたどるよう修正されたコードを含む工程と、
前記複数の修正バージョンそれぞれに関連付けられた複数の挙動を予測する工程と、
前記命令に関連付けられた実行可能なルーチンにアクセスする工程と、
前記実行可能なルーチンに関連付けられたランタイム挙動を識別する工程と、
前記ランタイム挙動に対応する前記修正バージョンの予測された挙動に基づいて前記実行可能なルーチンの動作中の実行のために前記複数の修正バージョンのうちの修正バージョンを選択する工程と
を含む処理リソース割り当て方法。
前記命令に関連付けられた実行可能なルーチンにアクセスする工程と、
仮想関数の第1の実現形態及び第2の実現形態を識別する工程であって、前記仮想関数は前記第1の実現形態を指し示すVFTエントリを含み、前記仮想関数は更に、複数のVFTのうちの第1のVFTにマッピングされたVFTポインタを含む工程と、
前記第1の実現形態により、前記実行可能なルーチンの一部分の動作を起動させる工程と、
前記動作中の前記第1の実現形態によって表される分岐挙動を識別する工程と、
前記分岐挙動の動作解析を行って、それにより、前記第2の実現形態が前記分岐挙動に対応する度合いが、前記第1の実現形態が前記分岐挙動に対応する度合いよりも大きいことを判定する工程と、
前記動作解析に基づいて前記複数のVFTのうちの第2のVFTに前記VFTポインタをリマッピングする工程であって、前記第2のVFTが、前記第2の実現形態にマッピングされたポインタを含む工程、又は、
前記動作解析に基づいて前記第2の実現形態を指し示すよう前記VFTエントリを更新する工程と
を含む処理リソース割り当て方法。
前記命令に関連付けられたプログラムにアクセスする工程であって、前記プログラムは、予め定義されたコール・サイトにマッピングされた予め定義された関数を含む工程と、
前記予め定義されたコール・サイトにより、前記予め定義された関数のコールを行う工程と、
前記コールの結果として、前記予め定義された関数によって表される分岐挙動を識別する工程と、
前記分岐挙動に基づいて、前記予め定義されたコール・サイトを修正する工程と
を含む処理リソース割り当て方法。
前記命令に関連付けられた実行可能なルーチンにアクセスする工程と、
仮想関数の第1の実現形態及び第2の実現形態を識別する工程であって、前記仮想関数は前記第1の実現形態を指し示すVFTエントリを含み、前記仮想関数は更に、複数のVFTのうちの第1のVFTにマッピングされたVFTポインタを更に含む工程と、
前記第1の実現形態により、前記実行可能なルーチンの一部分の動作を起動させる工程と、
前記動作中の前記第1の実現形態によって表される分岐挙動を識別する工程と、
前記分岐挙動に基づいて前記仮想関数の考えられる将来の挙動を予測する工程と、
前記考えられる将来の挙動の動作解析を行って、それにより、前記第2の実現形態が前記考えられる将来の挙動に対応する度合いが、前記第1の実現形態が前記考えられる将来の挙動に対応する度合いよりも大きいことを判定する工程と、
前記動作解析に基づいて前記複数のVFTのうちの第2のVFTに前記VFTポインタをリマッピングする工程であって、前記第2のVFTが、前記第2の実現形態にマッピングされたポインタを含む工程、又は、
前記動作解析に基づいて前記第2の実現形態を指し示すよう前記VFTエントリを更新する工程とを含む処理リソース割り当て方法。
Claims (38)
- 処理リソース割り当て方法であって、
予め選択されたデータ場所を有するデータにマッピングされた命令を識別する工程と、
処理リソース割り当て装置により、前記予め選択されたデータ場所に基づいて第1の処理装置(PU)から第2のPUに前記命令のコールを転送するか否かを判定する工程と、
を含む処理リソース割り当て方法。 - 前記第1のPUに関連付けられたキャッシュ・メモリ装置を選択する工程と、
前記命令を前記キャッシュ・メモリ装置にロードする工程と、
前記命令に関連付けられた境界において、前記キャッシュ・メモリ装置に、余分なコードの組をインジェクトする工程であって、前記命令がターゲット命令であり、前記余分なコードの組は、前記コールを特定のPUに転送するか否かを前記第1のPUが判定することを可能にするよう構成される、工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 予め選択された1つ又は複数の実行可能なルーチンそれぞれに対応する1つ又は複数の実行可能なルーチン名を識別する工程と、
前記1つ又は複数の実行可能なルーチン名に基づいて、前記余分なコードの組を選択して、参照渡しコールから値渡しコールに前記コールを変換する工程と、
を更に含む請求項2記載の処理リソース割り当て方法。 - 前記第1のPU及び前記第2のPUそれぞれに関連付けられた第1のキャッシュ・メモリ装置及び第2のキャッシュ・メモリ装置を識別する工程と、
第1のデータの組及び第2のデータの組それぞれに関連付けられた第1のデータ場所及び第2のデータ場所を識別する工程であって、前記第1のデータ場所及び前記第2のデータ場所は前記第1のキャッシュ・メモリ装置内及び前記第2のキャッシュ・メモリ装置内それぞれに配置される、工程と、
前記第1のデータ場所及び前記第2のデータ場所に基づいて前記第1のデータの組及び前記第2のデータの組それぞれに対する前記第1のキャッシュ・メモリ装置及び前記第2のキャッシュ・メモリ装置の割り当てを行う工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 前記命令にマッピングされたデータの組を識別する工程と、
前記第1のキャッシュ・メモリ装置でなく前記第2のキャッシュ・メモリ装置に前記データの組が現在記憶されていることを判定して、それにより、前記第1のPUから前記第2のPUに前記コールを転送することを決定する工程と、
を更に含む請求項4記載の処理リソース割り当て方法。 - 前記第1のPU及び前記第2のPUそれぞれに関連付けられた第1のキャッシュ・メモリ装置及び第2のキャッシュ・メモリ装置を識別する工程と、
前記第1のPUにより、前記コールにアクセスする工程であって、前記コールは、前記予め選択されたデータ場所に前記命令がマッピングされている旨を示す引数を含む、工程と、
前記第1のPUによって前記引数を解析する工程であって、前記予め選択されたデータ場所が前記第1のキャッシュ・メモリ装置内に配置されていない旨の判定を行う、工程と、
前記判定に基づいて潜在的なリダイレクト・コールとして前記コールを識別する工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 前記予め選択されたデータ場所が前記第2のキャッシュ・メモリ装置に配置されていない旨を判定する工程であって、それにより、前記第1のPUにより、前記潜在的なリダイレクト・コールに関連付けられたターゲット・コードを実行することの決定を行う、工程と、
前記決定に基づいて前記第1のPUにより、前記ターゲット・コードを実行する工程と、
を更に含む請求項6記載の処理リソース割り当て方法。 - 前記予め選択されたデータ場所が前記第2のキャッシュ・メモリ装置内に配置されていることを判定する工程であって、それにより、前記潜在的なリダイレクト・コールを実際のリダイレクト・コールとして識別する、工程と、
前記第1のPUから前記第2のPUに前記実際のリダイレクト・コールを転送する工程と、
を更に含む請求項6記載の処理リソース割り当て方法。 - 前記命令に関連付けられたコード又はデータ・メモリ場所を識別する工程と、
前記第2のPUに関連付けられた前記コード又はデータ・メモリ場所に基づいて前記第1のPUから前記第2のPUに前記コールを転送する工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 前記コード又はデータ・メモリ場所が前記第2のPU及び複数の他のPUに関連付けられていることを判定する工程と、
前記第2のPUに対応する現在利用可能な処理機能を反映する数値測定を定義する工程と、
複数の他の現在利用可能な処理機能それぞれを反映する複数の他の数値測定を定義する工程であって、前記複数の他の現在利用可能な処理機能は前記複数の他のPUそれぞれに対応する、工程と、
前記数値測定が前記他の数値測定それぞれよりも大きいことに基づいて前記第1のPUから前記第2のPUに前記コールを転送する工程と、
を更に含む請求項9記載の処理リソース割り当て方法。 - 特定のリソースを選択する工程と、
前記第2のPUに割り当てられている前記特定のリソースの制御の度合いに基づき、前記特定のリソースへのアクセスを前記第1のPUが欠いていることに基づき、かつ、前記特定のリソースへのアクセスを1つ又は複数の他のPUが欠いていることに基づいて前記第1のPUから前記第2のPUに前記コールを転送する工程と、
を更に含む請求項9記載の処理リソース割り当て方法。 - 前記命令を記憶させた共有ランダム・アクセス・メモリ(RAM)装置を選択する工程と、
前記共有RAM装置のセクタをリダイレクト・セクタとして識別する工程と、
前記命令が前記リダイレクト・セクタに記憶されているか否かを判定する工程であって、それにより、前記第1のPUから前記第2のPUに前記コールを転送するか否かを判定する、工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 共有RAM装置を選択する工程と、
前記共有RAM装置の1つ又は複数のセクタを1つ又は複数のリダイレクト・セクタそれぞれとして識別する工程と、
前記命令を含むプログラムを識別する工程と、
前記プログラムに対応するスタティック・コードにアクセスする工程と、
前記スタティック・コードのサイズに基づいて前記1つ又は複数のリダイレクト・セクタの全体としてのサイズを定義することにより、前記共有RAM装置をパーティショニングする工程と、
前記パーティショニング及びPU仕様に基づいて前記1つ又は複数のリダイレクト・セクタのうちの1つ又は複数の選択されたリダイレクト・セクタに前記スタティック・コードの量をロードする工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 前記共有RAM装置の1つ又は複数の別々のセクタを1つ又は複数の非リダイレクト・セクタそれぞれとして識別する工程と、
前記プログラムに対応する少なくとも1つの共有ライブラリの1つ又は複数の部分にアクセスする工程と、
前記少なくとも1つの共有ライブラリの1つ又は複数の部分及び前記スタティック・コードの全体としてのサイズに基づいて前記1つ又は複数のリダイレクト・セクタの前記全体としてのサイズを定義することにより、前記共有RAM装置をプロポーショニングする工程と、
前記プロポーショニング及び前記PU仕様に基づいて前記1つ又は複数の非リダイレクト・セクタのうちの1つ又は複数の選択された非リダイレクト・セクタに、又は前記1つ又は複数のリダイレクト・セクタのうちの1つ又は複数の選択されたリダイレクト・セクタに前記スタティック・コードの1つ又は複数の部分をロードする工程、及び/又は、
前記プロポーショニング及び前記PU仕様に基づいて前記1つ又は複数の非リダイレクト・セクタのうちの1つ又は複数の選択された非リダイレクト・セクタに、又は1つ又は複数のリダイレクト・セクタのうちの1つ又は複数の選択されたリダイレクト・セクタに前記少なくとも1つの共有ライブラリの前記1つ又は複数の部分をロードする工程と、
を更に含む請求項13記載の処理リソース割り当て方法。 - 前記第1のPUに関連付けられたキャッシュ・メモリ装置を選択する工程と、
前記命令に関連付けられたコード又はデータを前記キャッシュ・メモリ装置にフェッチする工程と、
前記第1のPUに関連付けられたPUデータ・パスを識別する工程と、
前記PUデータ・パス内のシャドー・レジスタ値を、前記コード又はデータに関連付けられた少なくとも1つのPUを示すPU識別子を前記シャドー・レジスタ値が反映するように規定する工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 前記命令に関連付けられたコードを識別する工程と、
少なくとも1つの共有メモリ・コヒーレンス・マシン命令を含む実行可能なルーチンを識別する工程と、
前記実行可能なルーチンが前記第2のPUに関連付けられていることに基づき、かつ、前記コードが、前記少なくとも1つの共有メモリ・コヒーレンス・マシン命令にマッピングされていることに基づき、前記第1のPUから前記第2のPUに前記コールを転送する工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 前記命令に関連付けられた大域メモリ場所を識別する工程と、
第3のPUが前記大域メモリ場所へのアクセスを欠いていること、及び前記第1のPUが前記大域メモリ場所へのアクセスを有していることの結果として、前記第3のPUから前記第1のPUへ前記コールを自動的に転送する工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 特定のPUに関連付けられたキャッシュ・メモリ装置を識別する工程と、
前記予め選択されたデータ場所が前記キャッシュ・メモリ装置内に配置されていることに基づいて前記データに関連付けられた特定のデータ・タイプに対する前記キャッシュ・メモリ装置の割り当てを行う工程と、
前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程と、
前記プログラミング言語に対応するライブラリにアクセスする工程であって、前記ライブラリは、メモリ割り当てコールを含むコンストラクタを規定し、前記メモリ割り当てコールは前記特定のデータ・タイプを有する情報にマッピングされる、工程と、
前記割り当てに基づいて、前記メモリ割り当てコールに対する修正を実現する工程であって、それにより、前記プログラムの修正バージョン及び修正メモリ割り当てコールを作成する、工程と、
前記修正の結果として前記情報が前記キャッシュ・メモリ装置にロードされるように、前記修正されたメモリ割り当てコールを行う工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 前記コールを行う工程であって、それにより、前記割り当ての結果として前記特定のPUにより、前記プログラムの前記修正バージョンを実行する、工程と、
を更に含む請求項18記載の処理リソース割り当て方法。 - 1つ又は複数のコード・ライブラリを識別する工程と、
前記1つ又は複数のコード・ライブラリに関連付けられた参照渡しソース・コードにアクセスする工程と、
前記参照渡しソース・コードを値渡しサポート・コードに変換する工程であって、それにより、転送ライブラリを生成する、工程と、
前記転送ライブラリを利用して、前記データの参照渡しでなく、値渡しを行う工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 前記コール内の1つ又は複数のポインタを識別する工程と、
前記1つ又は複数のポインタを変換する工程であって、それにより、前記データの参照渡しでなく値渡しを行うよう前記コールを構成する、工程と、
前記第1のPUから前記第2のPUへの前記コールの転送を実行する工程と、
前記転送中に前記データの値渡しを行う工程であって、それにより、前記データの局所の複製を第1のキャッシュ・メモリ装置に記憶し、前記第2のPUが前記第1のキャッシュ・メモリ装置を含む、工程と、
前記1つ又は複数のポインタを前記局所の複製にリマッピングする工程であって、それにより、第2のキャッシュ・メモリ装置にアクセスすることなく、前記コールを実行することを可能にし、前記第1のPUが、前記第2のキャッシュ・メモリ装置を含む、工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 遠隔プロシージャ・コール(RPC)を起動させる工程であって、それにより、前記第1のPUから前記第2のPUに前記コールを転送する、工程、
を更に含む請求項1記載の処理リソース割り当て方法。 - 前記第1のPU及び前記第2のPUそれぞれに関連付けられた第1の局所メモリ・マップ及び第2の局所メモリ・マップを識別する工程と、
前記第1の局所メモリ・マップと前記第2の局所メモリ・マップとの間の区別を識別する工程と、
前記区別に基づいてメモリ・アドレス変換を生成する工程と、
前記メモリ・アドレス変換を利用して前記RPCを構成する工程と、
を更に含む請求項22記載の処理リソース割り当て方法。 - 前記第1のPU及び前記第2のPUそれぞれに関連付けられた第1のキャッシュ・メモリ装置及び第2のキャッシュ・メモリ装置を識別する工程と、
前記第1のキャッシュ・メモリ装置に記憶され、前記命令に関連付けられたデータ値を識別する工程と、
前記RPCの結果として前記第2のキャッシュ・メモリ装置に前記データ値を記憶する工程と、
を更に含む請求項22記載の処理リソース割り当て方法。 - 前記第2のキャッシュ・メモリ装置に前記データ値が記憶されるまで前記第2のPUによる前記コールの実行を遅延させる工程と、
を更に含む請求項24記載の処理リソース割り当て方法。 - 制御の第1のスレッドに関連付けられた実行可能なルーチン及び前記命令を含むプログラムにアクセスする工程と、
前記コール内の1つ又は複数のポインタを識別する工程と、
前記1つ又は複数のポインタを変換する工程であって、前記データの参照渡しでなく値渡しを行うよう前記コールを構成して、それにより、制御の第2のスレッドを作成する、工程と、
前記第2のPUに関連付けられたキャッシュ・メモリ装置を識別する工程と、
前記RPCの結果として前記データの値渡しを行う工程であって、それにより、前記データの局所の複製を前記キャッシュ・メモリ装置に記憶し、前記第2のPUに前記制御の第2のスレッドを供給する、工程と、
前記制御の第1のスレッドが前記制御の第2のスレッドと無関係であることの結果として、前記第2のPUが前記命令の実行を前記制御の第2のスレッドに基づいて行う一方で、前記制御の第1のスレッドに基づいて前記第1のPUにより、前記実行可能なルーチンを行う工程であって、前記実行可能なルーチンが、前記実行中に生成されたデータ値に対するリターン要求を欠いている、工程と、
を更に含む請求項22記載の処理リソース割り当て方法。 - 前記データにマッピングされた第1の実行可能なルーチンを行う第1のプロセッシング・コアを識別する工程であって、前記第1の実行可能なルーチンは共有メモリ・コヒーレンス・マシン命令を含む、工程と、
第2のプロセッシング・コアにおいて第2の実行可能なルーチンにアクセスする工程と、
プロシージャ・コールを起動する工程であって、それにより、前記第2の実行可能なルーチンが前記データにマッピングされていることに基づき、かつ、前記共有メモリ・コヒーレンス・マシン命令を含む前記第2の実行可能なルーチンに基づき、前記第2のプロセッシング・コアから前記第1のプロセッシング・コアに前記第2の実行可能なルーチンを転送する、工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 別々のPUは、前記第1のプロセッシング・コア及び前記第2のプロセッシング・コアそれぞれを含み、前記プロシージャ・コールがRPCである、
請求項27記載の処理リソース割り当て方法。 - 単一のPUは、前記第1のプロセッシング・コア及び前記第2のプロセッシング・コアを何れも含み、前記プロシージャ・コールがRPCである、
請求項27記載の処理リソース割り当て方法。 - 前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程であって、1つ又は複数の仮想関数を有するクラスに属するデータ項目が、仮想関数テーブル(VFT)にマッピングされた1つ又は複数のVFTポインタを含むように前記VFTを実現するよう前記プログラミング言語が構成される、工程と、
前記プログラミング言語に関連付けられたコンストラクタを識別する工程であって、前記コンストラクタは前記1つ又は複数のVFTポインタを規定するよう構成される、工程と、
前記プログラムのロード中に前記コンストラクタ周りにラッパ・コールをインジェクトする工程であって、それにより、前記1つ又は複数の仮想関数に対する1つ又は複数のRPC決定ラッパを含む、VFTへのポインタで、前記1つ又は複数のVFTポインタを置き換える、工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程であって、1つ又は複数の仮想関数を有するクラスに属するデータ項目が、VFTにマッピングされた1つ又は複数のVFTポインタを含むように前記VFTを実現するよう前記プログラミング言語が構成される、工程と、
RPC決定コードがコールされることなく、前記1つ又は複数の仮想関数が1つ又は複数のRPCそれぞれに自動的に誘導されるように複数のRPCの実現の結果として前記VFTを修正する工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 前記命令を含むプログラムにアクセスする工程と、
前記プログラムに対応するプログラミング言語を識別する工程であって、1つ又は複数の仮想関数を有するクラスに属するデータ項目が、VFTにマッピングされた1つ又は複数のVFTポインタを含むように前記VFTを実現するよう前記プログラミング言語が構成される、工程と、
RPC決定コードがコールされることなく、前記1つ又は複数の仮想関数が前記プログラムに関連付けられた局所コードに自動的に誘導されるように1つ又は複数のRPCの実現がないことの結果として前記VFTを修正する工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 複数の条件分岐にマッピングされたコードを含む前記命令の予め定義されたバージョンにアクセスする工程と、
前記命令の複数の修正バージョンを生成する工程であって、前記修正バージョンはそれぞれ、前記複数の条件分岐のうちの別の条件分岐をたどるよう修正されたコードを含む工程と、
前記複数の修正バージョンそれぞれに関連付けられた複数の挙動を予測する工程と、
前記命令に関連付けられた実行可能なルーチンにアクセスする工程と、
前記実行可能なルーチンに関連付けられたランタイム挙動を識別する工程と、
前記ランタイム挙動に対応する前記修正バージョンの予測された挙動に基づいて前記実行可能なルーチンの動作中の実行のために前記複数の修正バージョンのうちの修正バージョンを選択する工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 前記命令に関連付けられた実行可能なルーチンにアクセスする工程と、
仮想関数の第1の実現形態及び第2の実現形態を識別する工程であって、前記仮想関数は前記第1の実現形態を指し示すVFTエントリを含み、前記仮想関数は更に、複数のVFTのうちの第1のVFTにマッピングされたVFTポインタを含む、工程と、
前記第1の実現形態により、前記実行可能なルーチンの一部分の動作を起動させる工程と、
前記動作中の前記第1の実現形態によって表される分岐挙動を識別する工程と、
前記分岐挙動の動作解析を行う工程であって、それにより、前記第2の実現形態が前記分岐挙動に対応する度合いが、前記第1の実現形態が前記分岐挙動に対応する度合いよりも大きいことを判定する、工程と、
前記動作解析に基づいて前記複数のVFTのうちの第2のVFTに前記VFTポインタをリマッピングする工程であって、前記第2のVFTが、前記第2の実現形態にマッピングされたポインタを含む、工程、又は、
前記動作解析に基づいて前記第2の実現形態を指し示すよう前記VFTエントリを更新する工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 前記命令に関連付けられたプログラムにアクセスする工程であって、前記プログラムは、予め定義されたコール・サイトにマッピングされた予め定義された関数を含む、工程と、
前記予め定義されたコール・サイトにより、前記予め定義された関数のコールを行う工程と、
前記コールの結果として、前記予め定義された関数によって表される分岐挙動を識別する工程と、
前記分岐挙動に基づいて、前記予め定義されたコール・サイトを修正する工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - 前記命令に関連付けられた実行可能なルーチンにアクセスする工程と、
仮想関数の第1の実現形態及び第2の実現形態を識別する工程であって、前記仮想関数は前記第1の実現形態を指し示すVFTエントリを含み、前記仮想関数は更に、複数のVFTのうちの第1のVFTにマッピングされたVFTポインタを更に含む、工程と、
前記第1の実現形態により、前記実行可能なルーチンの一部分の動作を起動させる工程と、
前記動作中の前記第1の実現形態によって表される分岐挙動を識別する工程と、
前記分岐挙動に基づいて前記仮想関数の考えられる将来の挙動を予測する工程と、
前記考えられる将来の挙動の動作解析を行う工程であって、それにより、前記第2の実現形態が前記考えられる将来の挙動に対応する度合いが、前記第1の実現形態が前記考えられる将来の挙動に対応する度合いよりも大きいことを判定する、工程と、
前記動作解析に基づいて前記複数のVFTのうちの第2のVFTに前記VFTポインタをリマッピングする工程であって、前記第2のVFTが、前記第2の実現形態にマッピングされたポインタを含む、工程、又は、
前記動作解析に基づいて前記第2の実現形態を指し示すよう前記VFTエントリを更新する工程と、
を更に含む請求項1記載の処理リソース割り当て方法。 - コンピュータ・システムに、請求項1乃至36のいずれか一項に記載の方法を実行させるコンピュータ・プログラム。
- 請求項37に記載のコンピュータ・プログラムを記録したコンピュータ可読記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261684813P | 2012-08-20 | 2012-08-20 | |
US61/684,813 | 2012-08-20 | ||
PCT/US2013/055588 WO2014031540A1 (en) | 2012-08-20 | 2013-08-19 | Processing resource allocation |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2015526821A JP2015526821A (ja) | 2015-09-10 |
JP2015526821A5 JP2015526821A5 (ja) | 2016-10-06 |
JP6218833B2 true JP6218833B2 (ja) | 2017-10-25 |
Family
ID=50150328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015528554A Active JP6218833B2 (ja) | 2012-08-20 | 2013-08-19 | 処理リソース割り当て |
Country Status (5)
Country | Link |
---|---|
US (2) | US9923840B2 (ja) |
EP (1) | EP2885708A4 (ja) |
JP (1) | JP6218833B2 (ja) |
CN (1) | CN104756078B (ja) |
WO (1) | WO2014031540A1 (ja) |
Families Citing this family (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9626261B2 (en) * | 2013-11-27 | 2017-04-18 | Futurewei Technologies, Inc. | Failure recovery resolution in transplanting high performance data intensive algorithms from cluster to cloud |
US10366102B2 (en) | 2014-02-19 | 2019-07-30 | Snowflake Inc. | Resource management systems and methods |
US9384019B2 (en) | 2014-03-25 | 2016-07-05 | International Business Machines Corporation | Dynamic code injection |
US9286085B2 (en) * | 2014-06-27 | 2016-03-15 | International Business Machines Corporation | Correlating class loader objects across execution environments |
US9990305B2 (en) * | 2014-09-19 | 2018-06-05 | Nxp Usa, Inc. | Memory management component having multiple memory management modules and method therefor |
US10516733B2 (en) * | 2014-11-25 | 2019-12-24 | Auth0, Inc. | Multi-tenancy via code encapsulated in server requests |
CN104375963B (zh) * | 2014-11-28 | 2019-03-15 | 上海兆芯集成电路有限公司 | 基于缓存一致性的控制系统和方法 |
EP3062142B1 (en) | 2015-02-26 | 2018-10-03 | Nokia Technologies OY | Apparatus for a near-eye display |
US10571993B2 (en) * | 2015-03-20 | 2020-02-25 | Sanken Electric Co., Ltd. | Micro controller unit |
US10121220B2 (en) * | 2015-04-28 | 2018-11-06 | Nvidia Corporation | System and method for creating aliased mappings to minimize impact of cache invalidation |
US10148592B1 (en) * | 2015-06-29 | 2018-12-04 | Amazon Technologies, Inc. | Prioritization-based scaling of computing resources |
US10021008B1 (en) | 2015-06-29 | 2018-07-10 | Amazon Technologies, Inc. | Policy-based scaling of computing resource groups |
US10181030B2 (en) | 2015-07-24 | 2019-01-15 | Citrix Systems, Inc. | Blocking routine redirection |
CN106201438A (zh) * | 2016-07-05 | 2016-12-07 | 河北建筑工程学院 | 基于Intel平台服务器CPU对个人计算机的移植方法和系统 |
US10650552B2 (en) | 2016-12-29 | 2020-05-12 | Magic Leap, Inc. | Systems and methods for augmented reality |
EP3343267B1 (en) | 2016-12-30 | 2024-01-24 | Magic Leap, Inc. | Polychromatic light out-coupling apparatus, near-eye displays comprising the same, and method of out-coupling polychromatic light |
US10592451B2 (en) | 2017-04-26 | 2020-03-17 | International Business Machines Corporation | Memory access optimization for an I/O adapter in a processor complex |
US10572286B2 (en) | 2017-04-26 | 2020-02-25 | International Business Machines Corporation | Memory access optimization in a processor complex |
US10578870B2 (en) | 2017-07-26 | 2020-03-03 | Magic Leap, Inc. | Exit pupil expander |
NZ765113A (en) | 2017-12-10 | 2024-07-05 | Magic Leap Inc | Anti-reflective coatings on optical waveguides |
WO2019126331A1 (en) | 2017-12-20 | 2019-06-27 | Magic Leap, Inc. | Insert for augmented reality viewing device |
US11436143B2 (en) * | 2017-12-22 | 2022-09-06 | Alibaba Group Holding Limited | Unified memory organization for neural network processors |
CN112136152A (zh) | 2018-03-15 | 2020-12-25 | 奇跃公司 | 由观看设备的部件变形导致的图像校正 |
JP7398117B2 (ja) | 2018-05-03 | 2023-12-14 | デ,ロシェモント,エル.,ピエール | 高速/低速電力サーバファームおよびサーバネットワーク |
EP3803488A4 (en) | 2018-05-30 | 2021-07-28 | Magic Leap, Inc. | COMPACT VARIABLE FOCUS CONFIGURATIONS |
EP3803450A4 (en) | 2018-05-31 | 2021-08-18 | Magic Leap, Inc. | POSITIONING A RADAR HEAD |
JP7369147B2 (ja) | 2018-06-05 | 2023-10-25 | マジック リープ, インコーポレイテッド | 視認システムのホモグラフィ変換行列ベースの温度較正 |
US11239922B2 (en) | 2018-06-05 | 2022-02-01 | L. Pierre de Rochemont | Module with high peak bandwidth I/O channels |
CN112513785B (zh) | 2018-06-08 | 2024-11-05 | 奇跃公司 | 具有自动表面选择放置和内容取向放置的增强现实观看器 |
US11579441B2 (en) | 2018-07-02 | 2023-02-14 | Magic Leap, Inc. | Pixel intensity modulation using modifying gain values |
US11856479B2 (en) | 2018-07-03 | 2023-12-26 | Magic Leap, Inc. | Systems and methods for virtual and augmented reality along a route with markers |
WO2020010226A1 (en) | 2018-07-03 | 2020-01-09 | Magic Leap, Inc. | Systems and methods for virtual and augmented reality |
CN112585581B (zh) * | 2018-07-10 | 2024-10-18 | 奇跃公司 | 用于跨指令集架构过程调用的线程编织 |
CN112689741B (zh) | 2018-07-24 | 2024-10-11 | 奇跃公司 | 移动检测设备的依赖于温度的校准 |
US11624929B2 (en) | 2018-07-24 | 2023-04-11 | Magic Leap, Inc. | Viewing device with dust seal integration |
CN112740665A (zh) | 2018-08-02 | 2021-04-30 | 奇跃公司 | 基于头部运动的瞳孔间距离补偿的观察系统 |
US10795458B2 (en) | 2018-08-03 | 2020-10-06 | Magic Leap, Inc. | Unfused pose-based drift correction of a fused pose of a totem in a user interaction system |
JP7487176B2 (ja) | 2018-08-22 | 2024-05-20 | マジック リープ, インコーポレイテッド | 患者視認システム |
JP7472127B2 (ja) | 2018-11-16 | 2024-04-22 | マジック リープ, インコーポレイテッド | 画像鮮明度を維持するための画像サイズによってトリガされる明確化 |
CN113454507B (zh) | 2018-12-21 | 2024-05-07 | 奇跃公司 | 用于促进波导内的全内反射的气穴结构 |
JP7515489B2 (ja) | 2019-02-06 | 2024-07-12 | マジック リープ, インコーポレイテッド | 複数のプロセッサによって発生される総熱を限定するための標的意図ベースのクロック速度の決定および調節 |
KR20200107101A (ko) * | 2019-03-06 | 2020-09-16 | 에스케이하이닉스 주식회사 | 주소 변환 기능을 갖는 메모리 관리 유닛, 이를 포함하는 데이터 처리 구조 및 주소 변환 정보 생성 방법 |
CN113544766A (zh) | 2019-03-12 | 2021-10-22 | 奇跃公司 | 在第一和第二增强现实观看器之间配准本地内容 |
EP3963565A4 (en) | 2019-05-01 | 2022-10-12 | Magic Leap, Inc. | CONTENT DELIVERY SYSTEM AND PROCEDURES |
US10908924B2 (en) * | 2019-05-01 | 2021-02-02 | Intuit Inc. | System and methods for loading objects from hash chains |
WO2021021670A1 (en) | 2019-07-26 | 2021-02-04 | Magic Leap, Inc. | Systems and methods for augmented reality |
EP4058936A4 (en) | 2019-11-14 | 2023-05-03 | Magic Leap, Inc. | SYSTEMS AND METHODS FOR VIRTUAL AND AUGMENTED REALITY |
US11737832B2 (en) | 2019-11-15 | 2023-08-29 | Magic Leap, Inc. | Viewing system for use in a surgical environment |
US11256522B2 (en) | 2019-11-22 | 2022-02-22 | Advanced Micro Devices, Inc. | Loader and runtime operations for heterogeneous code objects |
US11467812B2 (en) * | 2019-11-22 | 2022-10-11 | Advanced Micro Devices, Inc. | Compiler operations for heterogeneous code objects |
CN116578397A (zh) * | 2020-04-20 | 2023-08-11 | 支付宝(杭州)信息技术有限公司 | 数据资源处理方法、装置、设备和存储介质 |
EP3916568B1 (en) * | 2020-05-29 | 2024-07-17 | ARM Limited | Tag checking apparatus and method |
CN111966607A (zh) * | 2020-09-07 | 2020-11-20 | 湖南国科微电子股份有限公司 | 双倍速率存储器的访问方法及系统 |
CN114371814B (zh) * | 2021-12-08 | 2024-05-10 | 浙江华忆芯科技有限公司 | 数据处理的方法、装置及固态硬盘 |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2517859B2 (ja) * | 1991-10-22 | 1996-07-24 | 工業技術院長 | 並列プロセス管理方法 |
US6108715A (en) * | 1994-12-13 | 2000-08-22 | Microsoft Corporation | Method and system for invoking remote procedure calls |
JP3639366B2 (ja) * | 1995-11-29 | 2005-04-20 | 富士通株式会社 | アドレス空間共有システム |
US6269390B1 (en) | 1996-12-17 | 2001-07-31 | Ncr Corporation | Affinity scheduling of data within multi-processor computer systems |
US7350028B2 (en) * | 1999-05-21 | 2008-03-25 | Intel Corporation | Use of a translation cacheable flag for physical address translation and memory protection in a host |
US6772416B1 (en) | 1999-11-19 | 2004-08-03 | General Dynamics Decision Systems, Inc. | Separation kernel with memory allocation, remote procedure call and exception handling mechanisms |
US7661107B1 (en) | 2000-01-18 | 2010-02-09 | Advanced Micro Devices, Inc. | Method and apparatus for dynamic allocation of processing resources |
US20040034794A1 (en) * | 2000-05-28 | 2004-02-19 | Yaron Mayer | System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages |
US9213836B2 (en) * | 2000-05-28 | 2015-12-15 | Barhon Mayer, Batya | System and method for comprehensive general electric protection for computers against malicious programs that may steal information and/or cause damages |
US20030159070A1 (en) * | 2001-05-28 | 2003-08-21 | Yaron Mayer | System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages |
JP4001727B2 (ja) * | 2001-06-15 | 2007-10-31 | 富士通株式会社 | ファイルアクセス制御プログラム、ファイルアクセス制御装置およびファイルアクセス制御方法 |
US7093004B2 (en) | 2002-02-04 | 2006-08-15 | Datasynapse, Inc. | Using execution statistics to select tasks for redundant assignment in a distributed computing platform |
US7155708B2 (en) * | 2002-10-31 | 2006-12-26 | Src Computers, Inc. | Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation |
US7509644B2 (en) * | 2003-03-04 | 2009-03-24 | Secure 64 Software Corp. | Operating system capable of supporting a customized execution environment |
US20050071608A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus for selectively counting instructions and data accesses |
GB2406663B (en) * | 2003-10-01 | 2006-03-22 | Toshiba Res Europ Ltd | Flexible protocol stack |
JP4652680B2 (ja) * | 2003-12-22 | 2011-03-16 | パナソニック株式会社 | コンパイル方法および装置、ならびにコンパイラ |
US7380039B2 (en) * | 2003-12-30 | 2008-05-27 | 3Tera, Inc. | Apparatus, method and system for aggregrating computing resources |
US7594234B1 (en) * | 2004-06-04 | 2009-09-22 | Sun Microsystems, Inc. | Adaptive spin-then-block mutual exclusion in multi-threaded processing |
US20070106986A1 (en) * | 2005-10-25 | 2007-05-10 | Worley William S Jr | Secure virtual-machine monitor |
US8245236B2 (en) * | 2008-02-27 | 2012-08-14 | International Business Machines Corporation | Lock based moving of threads in a shared processor partitioning environment |
US7979844B2 (en) * | 2008-10-14 | 2011-07-12 | Edss, Inc. | TICC-paradigm to build formally verified parallel software for multi-core chips |
JP5245722B2 (ja) * | 2008-10-29 | 2013-07-24 | 富士通株式会社 | スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム |
US9672019B2 (en) * | 2008-11-24 | 2017-06-06 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
US20100274972A1 (en) * | 2008-11-24 | 2010-10-28 | Boris Babayan | Systems, methods, and apparatuses for parallel computing |
US20110066830A1 (en) * | 2009-09-11 | 2011-03-17 | Andrew Wolfe | Cache prefill on thread migration |
US9569270B2 (en) * | 2009-04-21 | 2017-02-14 | Empire Technology Development Llc | Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts |
CA2680601C (en) * | 2009-10-16 | 2010-11-02 | Ibm Canada Limited - Ibm Canada Limitee | Managing multiple speculative assist threads at differing cache levels |
JP5810918B2 (ja) * | 2009-12-24 | 2015-11-11 | 日本電気株式会社 | スケジューリング装置、スケジューリング方法及びプログラム |
WO2012136766A1 (en) * | 2011-04-06 | 2012-10-11 | Telefonaktiebolaget L M Ericsson (Publ) | Multi-core processors |
US9830158B2 (en) * | 2011-11-04 | 2017-11-28 | Nvidia Corporation | Speculative execution and rollback |
US9128786B2 (en) * | 2011-11-22 | 2015-09-08 | Futurewei Technologies, Inc. | System and method for implementing shared locks between kernel and user space for synchronize access without using a system call to the kernel |
US9280347B2 (en) * | 2012-03-15 | 2016-03-08 | International Business Machines Corporation | Transforming non-contiguous instruction specifiers to contiguous instruction specifiers |
US8966494B2 (en) * | 2012-03-16 | 2015-02-24 | Arm Limited | Apparatus and method for processing threads requiring resources |
US20140181830A1 (en) * | 2012-12-26 | 2014-06-26 | Mishali Naik | Thread migration support for architectually different cores |
-
2013
- 2013-08-19 CN CN201380051671.4A patent/CN104756078B/zh active Active
- 2013-08-19 WO PCT/US2013/055588 patent/WO2014031540A1/en active Application Filing
- 2013-08-19 EP EP13831178.2A patent/EP2885708A4/en not_active Withdrawn
- 2013-08-19 JP JP2015528554A patent/JP6218833B2/ja active Active
- 2013-08-19 US US14/412,672 patent/US9923840B2/en active Active
-
2018
- 2018-03-19 US US15/925,741 patent/US10999214B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2015526821A (ja) | 2015-09-10 |
CN104756078B (zh) | 2018-07-13 |
EP2885708A4 (en) | 2016-11-09 |
US9923840B2 (en) | 2018-03-20 |
US20180219795A1 (en) | 2018-08-02 |
CN104756078A (zh) | 2015-07-01 |
US10999214B2 (en) | 2021-05-04 |
US20150256484A1 (en) | 2015-09-10 |
WO2014031540A1 (en) | 2014-02-27 |
EP2885708A1 (en) | 2015-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6218833B2 (ja) | 処理リソース割り当て | |
KR101778479B1 (ko) | 동적 타입 객체들에 액세스함에 있어서의 동시 인라인 캐시 최적화 | |
CN110865968B (zh) | 多核处理装置及其内核之间数据传输方法 | |
US9513904B2 (en) | Computer processor employing cache memory with per-byte valid bits | |
US8776034B2 (en) | Dynamically maintaining coherency within live ranges of direct buffers | |
KR101626533B1 (ko) | 가비지 콜렉션을 위한 gpu 서포트 | |
US10949200B2 (en) | Methods and apparatus for executing data-dependent threads in parallel | |
US8146064B2 (en) | Dynamically controlling a prefetching range of a software controlled cache | |
US9513886B2 (en) | Heap data management for limited local memory(LLM) multi-core processors | |
Orr et al. | Synchronization using remote-scope promotion | |
Manivannan et al. | Efficient forwarding of producer-consumer data in task-based programs | |
Ungar et al. | Hosting an object heap on manycore hardware: An exploration | |
Fang et al. | On the design of global object space for efficient multi-threading Java computing on clusters | |
Dalmia et al. | CPElide: Efficient Multi-Chiplet GPU Implicit Synchronization | |
Mittal et al. | Memory map: a multiprocessor cache simulator | |
Flores et al. | Memory hierarchies for future hpc architectures | |
Pinto et al. | A highly efficient, thread-safe software cache implementation for tightly-coupled multicore clusters | |
Kim et al. | Static function prefetching for efficient code management on scratchpad memory | |
Lüdtke et al. | Cache-Related Performance Analysis Using Rogue Wave Software’s ThreadSpotter | |
Habermaier | The model of computation of CUDA and its formal semantics | |
Gindraud | Distributed runtime system with global address space and software cache coherence for a data-flow task model | |
Khan | Optimization study for multicores | |
Choi | HW-SW co-design techniques for modern programming languages | |
Weidendorfer | Cache Performance Analysis with Callgrind and KCachegrind | |
Song | An accurate prefetching policy for object oriented systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160817 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160817 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170626 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170711 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170821 |
|
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: 20170905 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170926 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6218833 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |