JP2017507411A - 動的言語でのインラインキャッシュのためのハードウェアアクセラレーション - Google Patents
動的言語でのインラインキャッシュのためのハードウェアアクセラレーション Download PDFInfo
- Publication number
- JP2017507411A JP2017507411A JP2016547602A JP2016547602A JP2017507411A JP 2017507411 A JP2017507411 A JP 2017507411A JP 2016547602 A JP2016547602 A JP 2016547602A JP 2016547602 A JP2016547602 A JP 2016547602A JP 2017507411 A JP2017507411 A JP 2017507411A
- Authority
- JP
- Japan
- Prior art keywords
- instance
- dynamic software
- processor
- software operation
- inline cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000001133 acceleration Effects 0.000 title abstract description 27
- 230000015654 memory Effects 0.000 claims abstract description 167
- 238000000034 method Methods 0.000 claims abstract description 45
- 230000004044 response Effects 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 12
- 230000009471 action Effects 0.000 claims description 7
- 230000006870 function Effects 0.000 description 20
- 230000006399 behavior Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 13
- 230000001413 cellular effect Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 6
- 230000000903 blocking effect Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000010979 ruby Substances 0.000 description 2
- 229910001750 ruby Inorganic materials 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 235000017060 Arachis glabrata Nutrition 0.000 description 1
- 241001553178 Arachis glabrata Species 0.000 description 1
- 235000010777 Arachis hypogaea Nutrition 0.000 description 1
- 235000018262 Arachis monticola Nutrition 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 235000020232 peanut Nutrition 0.000 description 1
- 239000004033 plastic Substances 0.000 description 1
- APTZNLHMIGJTEW-UHFFFAOYSA-N pyraflufen-ethyl Chemical compound C1=C(Cl)C(OCC(=O)OCC)=CC(C=2C(=C(OC(F)F)N(C)N=2)Cl)=C1F APTZNLHMIGJTEW-UHFFFAOYSA-N 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
Images
Classifications
-
- 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
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
- G06F9/4491—Optimising based on receiver type
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
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 Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
Description
本出願は、その内容全体が参照によって本明細書に組み込まれる、2014年1月23日に出願された「Hardware Acceleration For Inline Caches In Dynamic Languages」という名称の米国仮出願第61/930,808号の優先権の利益を主張する。
て構成され得る。ある態様では、コプロセッサ30は、標準コプロセッサインターフェースを使ってプロセッサ10と通信するスタンドアロンユニットとして実装され得る。そのような通信は、初期値を転送すること、計算を開始すること、および出力結果を転送することを含み得る。別の態様では、コプロセッサ30は、拡張型インターフェースを使ってプロセッサ10と通信するスタンドアロンユニットとして実装されてよく、プロセッサ10は、コプロセッサ30により多くの情報(たとえば、オブジェクトマップ)を与えることができるようになる。
12 レジスタ、メモリ
14 データキャッシュ
16 インラインキャッシュハードウェアアクセラレータ
18 インラインキャッシュメモリ
20a プロセッサパイプライン
20b プロセッサパイプライン
20c プロセッサパイプライン
22a インラインキャッシュパイプライン
22b インラインキャッシュパイプライン
22c インラインキャッシュパイプライン
30 コプロセッサ
50 機能ユニット
1000 モバイルコンピューティングデバイス、モバイルデバイス
1002 プロセッサ
1004 タッチスクリーンコントローラ
1006 内部メモリ
1008 無線信号トランシーバ、トランシーバ
1010 アンテナ
1012 タッチスクリーンパネル
1014 スピーカー
1016 セルラーネットワークワイヤレスモデムチップ
1018 周辺デバイス接続インターフェース
1020 筐体
1022 電源
1024 物理ボタン
1026 電源ボタン
1100 ラップトップコンピューティングデバイス
1108 アンテナ
1111 プロセッサ
1112 揮発性メモリ
1113 ディスクドライブ
1114 フロッピーディスクドライブ
1115 コンパクトディスク(CD)ドライブ
1116 ワイヤレスデータリンク、セルラー電話トランシーバ
1117 タッチ面、タッチパッド
1118 キーボード
1119 ディスプレイ
1200 サーバ
1201 プロセッサ
1202 揮発性メモリ
1203 ネットワークアクセスポート
1204 ディスクドライブ
1205 ネットワーク
1206 フロッピーディスクドライブ、コンパクトディスク(CD)またはDVDディスクドライブ
Claims (30)
- コンピューティングデバイス上の動的言語ソフトウェアの処理速度を増大させるための方法であって、
動的ソフトウェア動作の第1のインスタンス用の第1のインラインキャッシュをプロセッサによって初期化するステップと、
前記第1のインラインキャッシュの格納および取出しのための高速アクセスを与えるように構成されたメモリ中に、前記第1のインラインキャッシュを格納するステップと、
コプロセッサ中で、前記動的ソフトウェア動作の第2のインスタンスを受信するステップと、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じかどうかを、前記コプロセッサによって判断するステップと、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じであると判断したことに応答して、前記メモリからの前記第1のインラインキャッシュを使って、前記動的ソフトウェア動作の前記第2のインスタンスを前記コプロセッサによって実行するステップと、
前記動的ソフトウェア動作の前記第2のインスタンスを前記コプロセッサによって実行した結果を前記プロセッサに戻すステップとを含む方法。 - 前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じかどうか判断するステップは、
前記動的ソフトウェア動作の前記第1のインスタンスに関連した第1のオブジェクト実装を、前記動的ソフトウェア動作の前記第2のインスタンスに関連した第2のオブジェクト実装と比較するステップと、
前記第1のオブジェクト実装と前記第2のオブジェクト実装が同じであるかどうか判断するステップとを含む、請求項1に記載の方法。 - 前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが異なると判断したことに応答して、前記初期化された第1のインラインキャッシュと置き換わるように構成された、前記第1のインラインキャッシュを含む、前記動的ソフトウェア動作の前記第2のインスタンス用の第2のインラインキャッシュを初期化するステップと、
前記第2のインラインキャッシュの格納および取出しのための高速アクセスを与えるように構成された前記メモリ中に、前記第2のインラインキャッシュを格納するステップと、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが異なると判断したことに応答して、前記メモリからの前記第2のインラインキャッシュを使って、前記コプロセッサによって前記動的ソフトウェア動作の前記第2のインスタンスを実行するステップとをさらに含む、請求項1に記載の方法。 - 前記第1のインラインキャッシュが前記動的ソフトウェア動作の前記第1のインスタンス用に存在するかどうか判断するステップをさらに含み、前記動的ソフトウェア動作の前記第1のインスタンス用の前記第1のインラインキャッシュを前記プロセッサによって初期化するステップは、前記動的ソフトウェア動作の前記第1のインスタンス用の前記第1のインラインキャッシュが存在しないと判断したことに応答して、前記動的ソフトウェア動作の前記第1のインスタンス用の前記第1のインラインキャッシュを前記プロセッサによって初期化するステップを含む、請求項1に記載の方法。
- 前記動的ソフトウェア動作の前記第1のインスタンス用の前記第1のインラインキャッシュを前記プロセッサによって初期化するステップは、
前記動的ソフトウェア動作の前記第1のインスタンスに関する、オブジェクト実装のデータを識別するまで、前記動的ソフトウェア動作のための前記オブジェクト実装を横断するステップと、
前記動的ソフトウェア動作の前記第1のインスタンスの前記動的ソフトウェア動作を実行するステップと、
前記動的ソフトウェア動作の前記第1のインスタンスの結果を戻すステップとを含む、請求項1に記載の方法。 - 前記コプロセッサによって前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を、前記プロセッサに戻すステップは、前記結果を前記プロセッサに直接戻すステップを含む、請求項1に記載の方法。
- 前記コプロセッサによって前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を戻すステップは、前記結果を、前記プロセッサおよび前記コプロセッサによってアクセス可能なデータキャッシュを通して間接的に前記プロセッサに戻すステップを含む、請求項1に記載の方法。
- 前記第1のインラインキャッシュの格納および取出しのための高速アクセスを与えるように構成された前記メモリ中に前記第1のインラインキャッシュを格納するステップは、プロセッサパイプラインに接続されたインラインキャッシュパイプライン上に配設された前記メモリにおいて、前記プロセッサパイプライン上に配設された前記プロセッサから前記第1のインラインキャッシュを受け取るステップを含み、
前記動的ソフトウェア動作の前記第2のインスタンスを前記コプロセッサにおいて受信するステップは、前記プロセッサパイプラインに接続された前記インラインキャッシュパイプライン上に配設された前記コプロセッサにおいて、前記プロセッサパイプライン上に配設された前記プロセッサから前記動的ソフトウェア動作の前記第2のインスタンスを受信するステップを含み、
前記コプロセッサによって前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を戻すステップは、前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を、前記インラインキャッシュパイプライン上に配設された前記コプロセッサから、前記インラインキャッシュパイプラインに接続された前記プロセッサパイプライン上に配設された前記プロセッサに送るステップを含む、請求項1に記載の方法。 - コンパイラによって、前記コプロセッサ用の実行可能動作を生成するステップと、
動作を実施するための前記生成された実行可能動作を前記コプロセッサに実行させるよう、前記プロセッサに命令するステップとをさらに含み、前記動作は、
前記動的ソフトウェア動作の前記第1のインスタンス用の前記第1のインラインキャッシュをプロセッサによって初期化すること、
前記第1のインラインキャッシュの格納および取出しのための高速アクセスを与えるように構成された前記メモリ中に前記第1のインラインキャッシュを格納すること、
前記動的ソフトウェア動作の前記第2のインスタンスを前記コプロセッサ中で受信すること、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じかどうか判断すること、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じであると判断したことに応答して、前記メモリからの前記第1のインラインキャッシュを使って、前記動的ソフトウェア動作の前記第2のインスタンスを前記コプロセッサによって実行すること、および
前記コプロセッサによって前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を戻すことを含む、請求項1に記載の方法。 - プロセッサと、
前記プロセッサに通信可能に接続された少なくとも1つのインラインキャッシュの格納および取出しのための高速アクセスを与えるように構成されたメモリと、
前記プロセッサおよび前記メモリに通信可能に接続されたコプロセッサとを備えるコンピューティングデバイスであって、
前記プロセッサは、
動的ソフトウェア動作の第1のインスタンス用の第1のインラインキャッシュを初期化すること、
前記第1のインラインキャッシュを前記メモリ中に格納することを含む動作を実施するためのプロセッサ実行可能命令を有して構成され、
前記コプロセッサは、
前記動的ソフトウェア動作の第2のインスタンスを受信すること、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じかどうか判断すること、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じであると判断したことに応答して、前記メモリからの前記第1のインラインキャッシュを使って、前記動的ソフトウェア動作の前記第2のインスタンスを実行すること、および
前記動的ソフトウェア動作の前記第2のインスタンスを実行した結果を前記プロセッサに戻すことを含む動作を実施するためのプロセッサ実行可能命令を有して構成される、コンピューティングデバイス。 - 前記コプロセッサは、前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じかどうか判断することが、
前記動的ソフトウェア動作の前記第1のインスタンスに関連した第1のオブジェクト実装を、前記動的ソフトウェア動作の前記第2のインスタンスに関連した第2のオブジェクト実装と比較すること、および
前記第1のオブジェクト実装と前記第2のオブジェクト実装が同じであるかどうか判断することを含むような動作を実施するためのプロセッサ実行可能命令を有してさらに構成される、請求項10に記載のコンピューティングデバイス。 - 前記プロセッサは、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが異なると判断したことに応答して、前記初期化された第1のインラインキャッシュと置き換わるように構成された、前記第1のインラインキャッシュを含む、前記動的ソフトウェア動作の前記第2のインスタンス用の第2のインラインキャッシュを初期化すること、
前記第2のインラインキャッシュを前記メモリ中に格納することを含む動作を実施するためのプロセッサ実行可能命令を有してさらに構成され、
前記コプロセッサは、前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが異なると判断したことに応答して、前記メモリからの前記第2のインラインキャッシュを使って、前記動的ソフトウェア動作の前記第2のインスタンスを実行することを含む動作を実施するためのプロセッサ実行可能命令を有してさらに構成される、請求項10に記載のコンピューティングデバイス。 - 前記コプロセッサは、前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を前記プロセッサに戻すことが、前記結果を前記プロセッサに直接戻すことを含むような動作を実施するためのプロセッサ実行可能命令を有してさらに構成される、請求項10に記載のコンピューティングデバイス。
- 前記プロセッサおよびコプロセッサに通信可能に接続されたデータキャッシュをさらに備え、前記コプロセッサは、前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を前記プロセッサに戻すことが、前記プロセッサおよび前記コプロセッサにとってアクセス可能な前記データキャッシュを通して間接的に、前記プロセッサに前記結果を戻すことを含むような動作を実施するためのプロセッサ実行可能命令を有してさらに構成される、請求項10に記載のコンピューティングデバイス。
- 前記プロセッサに通信可能に接続されたプロセッサパイプラインと、
前記プロセッサパイプライン、前記コプロセッサ、および前記メモリに通信可能に接続されたインラインキャッシュパイプラインとをさらに備え、
前記プロセッサは、前記第1のインラインキャッシュを前記メモリ中に格納することが、前記プロセッサパイプラインおよび前記インラインキャッシュパイプラインを介して、前記第1のインラインキャッシュを前記プロセッサから前記メモリに送ることを含むような動作を実施するためのプロセッサ実行可能命令を有してさらに構成され、
前記コプロセッサは、
前記動的ソフトウェア動作の前記第2のインスタンスを受信することが、前記プロセッサからの前記動的ソフトウェア動作の前記第2のインスタンスを、前記プロセッサパイプラインおよび前記インラインキャッシュパイプラインを介して、配設された前記コプロセッサにおいて受信することを含み、
前記コプロセッサによって前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を戻すことが、前記インラインキャッシュパイプラインおよび前記プロセッサパイプラインを介して、前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を前記コプロセッサから前記プロセッサに送ることを含むような動作を実施するためのプロセッサ実行可能命令を有してさらに構成される、請求項10に記載のコンピューティングデバイス。 - 前記プロセッサは、
コンパイラを使って、前記コプロセッサ用の実行可能動作を生成すること、
動作を実施するための前記生成された実行可能動作を実行するよう前記コプロセッサに命令することを含む動作を実施するためのプロセッサ実行可能命令を有してさらに構成され、前記動作は、
前記動的ソフトウェア動作の前記第1のインスタンス用の前記第1のインラインキャッシュを初期化すること、
前記第1のインラインキャッシュを前記メモリ中に格納すること、
前記動的ソフトウェア動作の前記第2のインスタンスを受信すること、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じかどうか判断すること、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じであると判断したことに応答して、前記メモリからの前記第1のインラインキャッシュを使って、前記動的ソフトウェア動作の前記第2のインスタンスを実行すること、および
前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を前記プロセッサに戻すことを含む、請求項10に記載のコンピューティングデバイス。 - プロセッサおよびコプロセッサに動作を実施させるためのプロセッサ実行可能ソフトウェア命令を記憶した非一時的プロセッサ可読媒体であって、前記動作は、
動的ソフトウェア動作の第1のインスタンス用の第1のインラインキャッシュを前記プロセッサによって初期化すること、
前記第1のインラインキャッシュの格納および取出しのための高速アクセスを与えるように構成されたメモリ中に、前記第1のインラインキャッシュを格納すること、
コプロセッサ中で、前記動的ソフトウェア動作の第2のインスタンスを受信すること、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じかどうかを、前記コプロセッサによって判断すること、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じであると判断したことに応答して、前記メモリからの前記第1のインラインキャッシュを使って、前記動的ソフトウェア動作の前記第2のインスタンスを前記コプロセッサによって実行すること、および
前記動的ソフトウェア動作の前記第2のインスタンスを前記コプロセッサによって実行した結果をプロセッサに戻すことを含む、非一時的プロセッサ可読媒体。 - 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記プロセッサおよびコプロセッサに、前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じかどうか判断することが、
前記動的ソフトウェア動作の前記第1のインスタンスに関連した第1のオブジェクト実装を、前記動的ソフトウェア動作の前記第2のインスタンスに関連した第2のオブジェクト実装と比較すること、および
前記第1のオブジェクト実装と前記第2のオブジェクト実装が同じであるかどうか判断することを含むような動作を実施させるように構成される、請求項17に記載の非一時的プロセッサ可読媒体。 - 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記プロセッサおよびコプロセッサに、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが異なると判断したことに応答して、前記初期化された第1のインラインキャッシュと置き換わるように構成された、前記第1のインラインキャッシュを含む、前記動的ソフトウェア動作の前記第2のインスタンス用の第2のインラインキャッシュを初期化すること、
前記第2のインラインキャッシュの格納および取出しのための高速アクセスを与えるように構成された前記メモリ中に、前記第2のインラインキャッシュを格納すること、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが異なると判断したことに応答して、前記メモリからの前記第2のインラインキャッシュを使って、前記コプロセッサによって前記動的ソフトウェア動作の前記第2のインスタンスを実行することをさらに含む動作を実施させるように構成される、請求項17に記載の非一時的プロセッサ可読媒体。 - 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記プロセッサおよびコプロセッサに、前記コプロセッサによって前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を前記プロセッサに戻すことが、前記結果を前記プロセッサに直接戻すことを含むような動作を実施させるように構成される、請求項17に記載の非一時的プロセッサ可読媒体。
- 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記プロセッサおよびコプロセッサに、前記コプロセッサによって前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を戻すことが、前記プロセッサおよび前記コプロセッサによってアクセス可能なデータキャッシュを通して間接的に、前記プロセッサに前記結果を戻すことを含むような動作を実施させるように構成される、請求項17に記載の非一時的プロセッサ可読媒体。
- 前記記憶されたプロセッサ実行可能ソフトウェア命令は、前記プロセッサおよびコプロセッサに、
前記第1のインラインキャッシュの格納および取出しのための高速アクセスを与えるように構成された前記メモリ中に前記第1のインラインキャッシュを格納することが、プロセッサパイプラインに接続されたインラインキャッシュパイプライン上に配設された前記メモリにおいて、前記プロセッサパイプライン上に配設された前記プロセッサから前記第1のインラインキャッシュを受け取ることを含み、
前記動的ソフトウェア動作の前記第2のインスタンスを前記コプロセッサにおいて受信することが、前記プロセッサパイプラインに接続された前記インラインキャッシュパイプライン上に配設された前記コプロセッサにおいて、前記プロセッサパイプライン上に配設された前記プロセッサから前記動的ソフトウェア動作の前記第2のインスタンスを受信することを含み、
前記コプロセッサによって前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を戻すことが、前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を、前記インラインキャッシュパイプライン上に配設された前記コプロセッサから、前記インラインキャッシュパイプラインに接続された前記プロセッサパイプライン上に配設された前記プロセッサに送ることを含むような動作を実施させるように構成される、請求項17に記載の非一時的プロセッサ可読媒体。 - 前記記憶されたプロセッサ実行可能ソフトウェア命令が、
コンパイラによって、前記コプロセッサ用の実行可能動作を生成すること、および
動作を実施するための前記生成された実行可能動作を前記コプロセッサに実行させるよう前記プロセッサに命令することをさらに含む動作を前記プロセッサおよびコプロセッサに実施させるように構成され、前記動作は、
前記動的ソフトウェア動作の前記第1のインスタンス用の前記第1のインラインキャッシュをプロセッサによって初期化すること、
前記第1のインラインキャッシュの格納および取出しのための高速アクセスを与えるように構成された前記メモリ中に前記第1のインラインキャッシュを格納すること、
前記動的ソフトウェア動作の前記第2のインスタンスを前記コプロセッサ中で受信すること、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じかどうか判断すること、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じであると判断したことに応答して、前記メモリからの前記第1のインラインキャッシュを使って、前記動的ソフトウェア動作の前記第2のインスタンスを前記コプロセッサによって実行すること、および
前記コプロセッサによって、前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を戻すことを含む、請求項17に記載の非一時的プロセッサ可読媒体。 - 動的ソフトウェア動作の第1のインスタンス用の第1のインラインキャッシュを初期化するための手段と、
前記第1のインラインキャッシュの格納および取出しのための高速アクセスを与えるように構成された前記第1のインラインキャッシュを格納するための手段と、
前記動的ソフトウェア動作の第2のインスタンスを受信するための手段と、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じかどうか判断するための手段と、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じであると判断したことに応答して、前記第1のインラインキャッシュを格納するための前記手段からの前記第1のインラインキャッシュを使って、前記動的ソフトウェア動作の前記第2のインスタンスを実行するための手段と、
前記動的ソフトウェア動作の前記第2のインスタンスを実行した結果を戻すための手段とを備えるコンピューティングデバイス。 - 前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じかどうか判断するための手段は、
前記動的ソフトウェア動作の前記第1のインスタンスに関連した第1のオブジェクト実装を、前記動的ソフトウェア動作の前記第2のインスタンスに関連した第2のオブジェクト実装と比較するための手段と、
前記第1のオブジェクト実装と前記第2のオブジェクト実装が同じであるかどうか判断するための手段とを備える、請求項24に記載のコンピューティングデバイス。 - 前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが異なると判断したことに応答して、前記初期化された第1のインラインキャッシュと置き換わるように構成された、前記第1のインラインキャッシュを含む、前記動的ソフトウェア動作の前記第2のインスタンス用の第2のインラインキャッシュを初期化するための手段と、
前記第2のインラインキャッシュの格納および取出しのための高速アクセスを与えるように構成された前記第2のインラインキャッシュを格納するための手段と、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが異なると判断したことに応答して、前記第2のインラインキャッシュを格納するための前記手段からの前記第2のインラインキャッシュを使って、前記動的ソフトウェア動作の前記第2のインスタンスを実行するための手段とをさらに備える、請求項24に記載のコンピューティングデバイス。 - 前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を戻すための手段は、前記結果をプロセッサに直接戻すための手段を備える、請求項24に記載のコンピューティングデバイス。
- 前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を戻すための手段は、プロセッサおよびコプロセッサにアクセス可能なデータキャッシュを通して間接的に、前記プロセッサに前記結果を戻すための手段を備える、請求項24に記載のコンピューティングデバイス。
- 前記第1のインラインキャッシュの格納および取出しのための高速アクセスを与えるように構成された、前記第1のインラインキャッシュを格納するための手段は、プロセッサパイプライン上に配設されたプロセッサからの前記第1のインラインキャッシュを、前記プロセッサパイプラインに接続されたインラインキャッシュパイプライン上の、前記第1のインラインキャッシュを格納するための手段において受信するための手段を備え、
前記動的ソフトウェア動作の前記第2のインスタンスを受信するための手段は、前記プロセッサパイプライン上に配設された前記プロセッサからの、前記動的ソフトウェア動作の前記第2のインスタンスを、前記プロセッサパイプラインに接続された前記インラインキャッシュパイプライン上に配設された、前記動的ソフトウェア動作の前記第2のインスタンスを受信するための手段において受信するための手段を備え、
前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を戻すための手段は、前記インラインキャッシュパイプライン上に配設された、前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を、前記インラインキャッシュパイプラインに接続された前記プロセッサパイプライン上に配設された前記プロセッサに送るための手段を備える、請求項24に記載のコンピューティングデバイス。 - コンパイラによって実行可能動作を生成するための手段と、
前記生成された実行可能動作を実行するための手段に、動作を実施させるよう命令するための手段とをさらに備え、前記動作は、
前記動的ソフトウェア動作の前記第1のインスタンス用の前記第1のインラインキャッシュを初期化すること、
前記第1のインラインキャッシュの格納および取出しのための高速アクセスを与えるための前記第1のインラインキャッシュを格納すること、
前記動的ソフトウェア動作の前記第2のインスタンスを受信すること、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じかどうか判断すること、
前記動的ソフトウェア動作の前記第1のインスタンスと前記動的ソフトウェア動作の前記第2のインスタンスが同じであると判断したことに応答して、前記第1のインラインキャッシュを使って、前記動的ソフトウェア動作の前記第2のインスタンスを実行すること、および
前記動的ソフトウェア動作の前記第2のインスタンスを実行した前記結果を戻すことを含む、請求項24に記載のコンピューティングデバイス。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201461930808P | 2014-01-23 | 2014-01-23 | |
US61/930,808 | 2014-01-23 | ||
US14/262,852 | 2014-04-28 | ||
US14/262,852 US9710388B2 (en) | 2014-01-23 | 2014-04-28 | Hardware acceleration for inline caches in dynamic languages |
PCT/US2015/012527 WO2015112762A1 (en) | 2014-01-23 | 2015-01-22 | Hardware acceleration for inline caches in dynamic languages |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2017507411A true JP2017507411A (ja) | 2017-03-16 |
JP2017507411A5 JP2017507411A5 (ja) | 2017-09-28 |
JP6293910B2 JP6293910B2 (ja) | 2018-03-14 |
Family
ID=53544933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016547602A Expired - Fee Related JP6293910B2 (ja) | 2014-01-23 | 2015-01-22 | 動的言語でのインラインキャッシュのためのハードウェアアクセラレーション |
Country Status (6)
Country | Link |
---|---|
US (1) | US9710388B2 (ja) |
EP (1) | EP3097478A1 (ja) |
JP (1) | JP6293910B2 (ja) |
KR (1) | KR20160113142A (ja) |
CN (1) | CN106415485B (ja) |
WO (1) | WO2015112762A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9740504B2 (en) | 2014-01-23 | 2017-08-22 | Qualcomm Incorporated | Hardware acceleration for inline caches in dynamic languages |
US10031760B1 (en) * | 2016-05-20 | 2018-07-24 | Xilinx, Inc. | Boot and configuration management for accelerators |
CN111966333A (zh) * | 2020-07-28 | 2020-11-20 | 锐达互动科技股份有限公司 | 一种插入动态模板背景的实现方法、装置、设备和介质 |
CN117008810A (zh) * | 2022-04-27 | 2023-11-07 | 华为技术有限公司 | 一种数据处理方法、装置及相关设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012506094A (ja) * | 2008-10-15 | 2012-03-08 | マイクロソフト コーポレーション | ランタイムにおいて生成したコードのキャッシュへの格納 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020087798A1 (en) * | 2000-11-15 | 2002-07-04 | Vijayakumar Perincherry | System and method for adaptive data caching |
US7353364B1 (en) | 2004-06-30 | 2008-04-01 | Sun Microsystems, Inc. | Apparatus and method for sharing a functional unit execution resource among a plurality of functional units |
US7949826B2 (en) | 2007-07-05 | 2011-05-24 | International Business Machines Corporation | Runtime machine supported method level caching |
US9063749B2 (en) * | 2011-05-27 | 2015-06-23 | Qualcomm Incorporated | Hardware support for hashtables in dynamic languages |
US9009686B2 (en) * | 2011-11-07 | 2015-04-14 | Nvidia Corporation | Algorithm for 64-bit address mode optimization |
US9128732B2 (en) | 2012-02-03 | 2015-09-08 | Apple Inc. | Selective randomization for non-deterministically compiled code |
US9251071B2 (en) * | 2013-08-30 | 2016-02-02 | Apple Inc. | Concurrent inline cache optimization in accessing dynamically typed objects |
US9740504B2 (en) | 2014-01-23 | 2017-08-22 | Qualcomm Incorporated | Hardware acceleration for inline caches in dynamic languages |
-
2014
- 2014-04-28 US US14/262,852 patent/US9710388B2/en not_active Expired - Fee Related
-
2015
- 2015-01-22 KR KR1020167021009A patent/KR20160113142A/ko active IP Right Grant
- 2015-01-22 JP JP2016547602A patent/JP6293910B2/ja not_active Expired - Fee Related
- 2015-01-22 EP EP15703378.8A patent/EP3097478A1/en not_active Ceased
- 2015-01-22 WO PCT/US2015/012527 patent/WO2015112762A1/en active Application Filing
- 2015-01-22 CN CN201580005303.5A patent/CN106415485B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012506094A (ja) * | 2008-10-15 | 2012-03-08 | マイクロソフト コーポレーション | ランタイムにおいて生成したコードのキャッシュへの格納 |
Also Published As
Publication number | Publication date |
---|---|
KR20160113142A (ko) | 2016-09-28 |
EP3097478A1 (en) | 2016-11-30 |
US9710388B2 (en) | 2017-07-18 |
WO2015112762A1 (en) | 2015-07-30 |
CN106415485B (zh) | 2019-11-22 |
US20150205726A1 (en) | 2015-07-23 |
JP6293910B2 (ja) | 2018-03-14 |
CN106415485A (zh) | 2017-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9355050B2 (en) | Secure, fast and normal virtual interrupt direct assignment in a virtualized interrupt controller in a mobile system-on-chip | |
US11093647B2 (en) | Method and device for executing system scheduling | |
CN111475262B (zh) | 区块链中事务请求处理方法、装置、设备和介质 | |
JP6293910B2 (ja) | 動的言語でのインラインキャッシュのためのハードウェアアクセラレーション | |
US10168957B2 (en) | Directed placemat of data in memory | |
US11138034B2 (en) | Method and apparatus for collecting information, and method and apparatus for releasing memory | |
US10169105B2 (en) | Method for simplified task-based runtime for efficient parallel computing | |
US20150268993A1 (en) | Method for Exploiting Parallelism in Nested Parallel Patterns in Task-based Systems | |
US9183065B1 (en) | Providing access to an application programming interface through a named pipe | |
JP2017509950A (ja) | 動的言語でのインラインキャッシュのためのハードウェアアクセラレーション | |
CN109791510B (zh) | 在异构计算中管理数据流 | |
US10241838B2 (en) | Domain based resource isolation in multi-core systems | |
US10078611B1 (en) | Smart handling of input/output interrupts | |
US9535713B2 (en) | Manipulating rules for adding new devices | |
US20170364400A1 (en) | Method for debugging static memory corruption | |
CN111857825A (zh) | 指令执行方法、装置、电子设备和计算机可读存储介质 | |
EP2907064B1 (en) | License information access based on developer profiles | |
US10216524B2 (en) | System and method for providing fine-grained memory cacheability during a pre-OS operating environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170821 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170821 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20170821 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20170822 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170904 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20171204 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20171227 |
|
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: 20180115 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180214 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6293910 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |