JP5871589B2 - 情報処理装置、配列の初期サイズ調整プログラム及び方法 - Google Patents
情報処理装置、配列の初期サイズ調整プログラム及び方法 Download PDFInfo
- Publication number
- JP5871589B2 JP5871589B2 JP2011261775A JP2011261775A JP5871589B2 JP 5871589 B2 JP5871589 B2 JP 5871589B2 JP 2011261775 A JP2011261775 A JP 2011261775A JP 2011261775 A JP2011261775 A JP 2011261775A JP 5871589 B2 JP5871589 B2 JP 5871589B2
- Authority
- JP
- Japan
- Prior art keywords
- array
- size
- profile information
- allocation
- storage area
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
特許文献2の技術は、プログラム中で割り付ける配列のサイズを、実行するマシンが持つメモリの大きさに応じて調整するものであり、可変長オブジェクトの中のどの要素が実際に実行中にアクセスされたかに応じて調整するものではなく、従って、特許文献2の技術は配列拡張パターンを最適化することはできない。
該エントリの第2フィールドの頻度値を1増やす(ステップ925)。一方、対応するエントリが存在しないと判定した場合(ステップ920:NO)、メモリ管理部125は、ステップ915で取得したポインタが指す表にエントリを1つ追加し、該エントリの第1フィールドに、破棄する配列に対応する配列毎のプロファイル情報構造体の第2フィールドに格納されるインデックス値を、該エントリの第2フィールドに、頻度値1をそれぞれ設定する(ステップ930)。
1.実装
動作周波数最大4.7GHzのRISCプロセッサ(クアッドコア、2スレッドのSMTエンジン搭載のPOWER6(商標))と利用した各ベンチマークが必要とする最低のヒープメモリ量の2倍のヒープメモリ量をハードウエアとして備え、オペレーティング・システムとしてLinux(商標)2.6.18を用いるIBM社のJava(登録商標)仮想マシンに、本発明の実施形態に係る調整プログラムを実装した。なお、実装した調整プログラムでは、8MB割り付ける毎に1つの配列をサンプリングするサンプリング頻度を用いた。また、ベンチマークDaCapoの中からオブジェクトを多く割り付ける8つのベンチマークプログラム(fop、jython、lusearch、pmd、sunflow、tomcat、xalan、Geo.mean)を選択した。また、Java(登録商標)標準ライブラリのjava.lang.StringBuilder、java.io、BufferedReader、lusearchベンチマークの2つのクラス、xalaベンチマークの3つのクラスの各々におけるは配列の割付を、本発明で新たに導入したAPIを用いて行うように書き換えた。
図12は、速度向上率についての実験結果を示す。図12に示されるように、ベンチマークによっては最大300%以上(4倍以上)の性能向上が見られた。なお、性能低下は、最大でも2.2%であり、これはアクセスプロファイラのオーバーヘッドによるものである。
Claims (14)
- 配列の初期サイズを動的に調整する調整プログラムであって、該プログラムはコンピュータに、
(a)実行対象プログラムからの配列の割り付け要求に応答して、所定サイズの配列を割り付けると共に、該配列のプロファイル情報格納領域に、前記配列の割付呼び出しコンテキスト情報を格納するステップと、
(b)前記実行対象プログラムからの割り付けた前記配列のサイズ拡張の要求に応答して、より大きなサイズの配列を拡張配列として新たに割り付けると共に、前記拡張配列のプロファイル情報格納領域に拡張前の元の前記配列の割付呼び出しコンテキスト情報を格納するステップと、
(c)前記実行対象プログラムの実行中におけるプロファイル対象の配列へのアクセスに応答して、該配列のプロファイル情報格納領域にアクセス情報を格納するステップと、 (d)各配列のプロファイル情報格納領域に格納されるアクセス情報を、配列の割付呼び出しコンテキスト毎に収集するステップと、
(e)前記実行対象プログラムの次に実行するコード部分の動的コンパイルに応答して、前記コード部分に含まれる配列の割付呼び出しコンテキストをインライン展開し、該コンテキストに対して収集されたアクセス情報に基づき決定される配列のサイズを前記配列の割付初期サイズとしてインライン展開したコードに埋め込むステップと、
を実行させる前記調整プログラム。 - 各配列のプロファイル情報格納領域に格納されるアクセス情報は、アクセスされた前記配列の要素中で最後に位置する要素のインデックス値であり、ステップ(e)は、収集されたアクセス情報である複数のインデックス値の中で最大のインデックス値を前記配列の割付初期サイズとするステップを含む、請求項1に記載の調整プログラム。
- 各配列のプロファイル情報格納領域に格納されるアクセス情報は、アクセスされた前記配列の要素中で最後に位置する要素のインデックス値であり、ステップ(e)は、収集されたアクセス情報である複数のインデックス値の中で頻度が最大のインデックスの値を前記配列の割付初期サイズとするステップを含む、請求項1に記載の調整プログラム。
- 配列毎のプロファイル情報格納領域は、該配列の先頭を指すポインタに関連付けられており、ステップ(b)は、前記配列のサイズ拡張の要求とともに該配列の先頭を指すポインタを受取り、受け取った前記ポインタを用いて前記元の配列のプロファイル情報格納領域に格納される前記元の配列の割付呼び出しコンテキスト情報を取得するステップを含む、請求項1に記載の調整プログラム。
- ステップ(d)の収集は、ガーベジコレクション処理において破棄されるプロファイル対象の配列について行われる、請求項1に記載の調整プログラム。
- 情報処理装置おいて配列の初期サイズを動的に調整する調整方法であって、
(a)前記情報処理装置が、実行対象プログラムからの配列の割り付け要求に応答して、所定のサイズの配列を割り付けると共に、該配列のプロファイル情報格納領域に、前記配列の割付呼び出しコンテキスト情報を格納するステップと、
(b)前記情報処理装置が、前記実行対象プログラムからの割り付けた前記配列のサイズ拡張の要求に応答して、より大きなサイズの配列を拡張配列として新たに割り付けると共に、前記拡張配列のプロファイル情報格納領域に元の前記配列の割付呼び出しコンテキスト情報を格納するステップと、
(c)前記情報処理装置が、前記実行対象プログラムの実行中におけるプロファイル対象の配列へのアクセスに応答して、該配列のプロファイル情報格納領域にアクセス情報を格納するステップと、
(d)前記情報処理装置が、各配列のプロファイル情報格納領域に格納されるアクセス情報を、配列の割付呼び出しコンテキスト毎に収集するステップと、
(e)前記情報処理装置が、前記実行対象プログラムの次に実行するコード部分の動的コンパイルに応答して、前記コード部分に含まれる配列の割付呼び出しコンテキストをインライン展開し、該コンテキストに対して収集されたアクセス情報に基づき決定される配列のサイズを前記配列の割付初期サイズとしてインライン展開したコードに埋め込むステップと、
を含む調整方法。 - 各配列のプロファイル情報格納領域に格納されるアクセス情報は、アクセスされた前記配列の要素中で最後に位置する要素のインデックス値であり、ステップ(e)は、前記情報処理装置が、収集されたアクセス情報である複数のインデックス値の中で最大のインデックス値を前記配列の割付初期サイズとするステップを含む、請求項6に記載の調整方法。
- 各配列のプロファイル情報格納領域に格納されるアクセス情報は、アクセスされた前記配列の要素中で最後に位置する要素のインデックス値であり、ステップ(e)は、前記情報処理装置が、収集されたアクセス情報である複数のインデックス値の中で頻度が最大のインデックス値を前記配列の割付初期サイズとするステップを含む、請求項6に記載の調整方法。
- 配列の初期サイズを動的に調整する情報処理装置であって、
記憶装置と、
前記記憶装置に格納された実行対象プログラムと、
前記実行対象プログラムを解釈して、APIの記述を検出することに応答して、対応するAPIの機能を呼び出して実行する実行手段と、
前記実行手段によって呼び出され得る、所定のサイズの配列を割り付ける第1のAPIと、引数として拡張すべき配列の情報を受け取り、該配列よりもサイズの大きい配列を割り付ける第2のAPIであって、前記第1及び第2のAPIは、実行時に、それぞれ割り付けた配列をサンプリング頻度に基づきプロファイル対象とすると共に、割り付けた配列のプロファイル情報格納領域に、拡張前の配列の割付呼び出しコンテキストを格納するコードに変換される、前記第1及び第2のAPIと、
プロファイル対象の配列へのアクセスの検出に応答して前記実行手段によって呼び出され得る、アクセスを検出された前記配列に対応するプロファイル情報格納領域に前記配列へのアクセス情報を格納するプロファイラと、
次に実行すべき実行対象プログラムのコード部分を動的にコンパイルする動的コンパイラであって、前記コード部分に含まれる配列の割付呼び出しコンテキストをインライン展開し、該コンテキストに関連づけられた全アクセス情報に基づき決定される配列のサイズを前記配列の割り付け初期サイズとして前記コード部分に埋め込む前記動的コンパイラと、
を含む情報処理装置。 - 各配列のプロファイル情報格納領域に格納されるアクセス情報は、アクセスされた前記配列の要素中で最後に位置する要素のインデックス値であり、前記動的コンパイラは、インライン展開された前記コンテキストに関連づけられた全アクセス情報である複数のインデックス値の中で最大のインデックス値を前記配列の割付初期サイズとする、請求項9に記載の情報処理装置。
- 各配列のプロファイル情報格納領域に格納されるアクセス情報は、アクセスされた前記配列の要素中で最後に位置する要素のインデックス値であり、前記動的コンパイラは、インライン展開された前記コンテキストに関連づけられた全アクセス情報である複数のインデックス値の中で頻度が最大のインデックスの値を前記配列の割付初期サイズとする、請求項9に記載の情報処理装置。
- 前記第2のAPIは、引数として受け取った拡張すべき配列の情報を用いて、該配列に対応するプロファイル情報格納領域から前記拡張前の配列の割付呼び出しコンテキスト情報を取得する、請求項9に記載の情報処理装置。
- 前記第1及び第2のAPIは、プリミティブ型の配列ごとに用意される、請求項9に記載の情報処理装置。
- 前記第1及び第2のAPIは、標準ライブラリの一部としてかつstaticメソッドとして用意される、請求項9に記載の情報処理装置。
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2011261775A JP5871589B2 (ja) | 2011-11-30 | 2011-11-30 | 情報処理装置、配列の初期サイズ調整プログラム及び方法 |
| US13/688,996 US9218191B2 (en) | 2011-11-30 | 2012-11-29 | Information processing apparatus and program and method for adjusting initial array size |
| US13/748,674 US20130138914A1 (en) | 2011-11-30 | 2013-01-24 | Information processing apparatus and program and method for adjusting initial array size |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2011261775A JP5871589B2 (ja) | 2011-11-30 | 2011-11-30 | 情報処理装置、配列の初期サイズ調整プログラム及び方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2013114552A JP2013114552A (ja) | 2013-06-10 |
| JP5871589B2 true JP5871589B2 (ja) | 2016-03-01 |
Family
ID=48467892
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2011261775A Expired - Fee Related JP5871589B2 (ja) | 2011-11-30 | 2011-11-30 | 情報処理装置、配列の初期サイズ調整プログラム及び方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (2) | US9218191B2 (ja) |
| JP (1) | JP5871589B2 (ja) |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9672141B1 (en) * | 2015-11-25 | 2017-06-06 | International Business Machines Corporation | Generic language application programming interface interpreter |
| US11113190B2 (en) * | 2016-11-11 | 2021-09-07 | Microsoft Technology Licensing, Llc | Mutable type builder |
| JP7335591B2 (ja) * | 2019-07-22 | 2023-08-30 | コネクトフリー株式会社 | コンピューティングシステムおよび情報処理方法 |
| US11947568B1 (en) * | 2021-09-30 | 2024-04-02 | Amazon Technologies, Inc. | Working set ratio estimations of data items in a sliding time window for dynamically allocating computing resources for the data items |
| CN116578352B (zh) * | 2023-07-11 | 2023-09-22 | 沐曦集成电路(上海)有限公司 | 芯片初始化系统 |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH05204616A (ja) * | 1992-01-27 | 1993-08-13 | Nec Ic Microcomput Syst Ltd | 配列領域確保装置 |
| JP2000066900A (ja) | 1998-08-21 | 2000-03-03 | Okayama Nippon Denki Software Kk | C++言語における配列の領域の動的確保・解放方法および記録媒体 |
| US7127559B2 (en) | 2001-07-10 | 2006-10-24 | Micron Technology, Inc. | Caching of dynamic arrays |
| JP2003271393A (ja) | 2002-03-19 | 2003-09-26 | Hitachi Ltd | インライン割付による最適化方法およびそのコンパイラ |
| JP3919680B2 (ja) * | 2003-02-26 | 2007-05-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ装置、コンパイラプログラム、及び記録媒体 |
| JP2010160622A (ja) | 2009-01-07 | 2010-07-22 | Toshiba Corp | シミュレータ |
-
2011
- 2011-11-30 JP JP2011261775A patent/JP5871589B2/ja not_active Expired - Fee Related
-
2012
- 2012-11-29 US US13/688,996 patent/US9218191B2/en not_active Expired - Fee Related
-
2013
- 2013-01-24 US US13/748,674 patent/US20130138914A1/en not_active Abandoned
Also Published As
| Publication number | Publication date |
|---|---|
| JP2013114552A (ja) | 2013-06-10 |
| US20130138914A1 (en) | 2013-05-30 |
| US20130139133A1 (en) | 2013-05-30 |
| US9218191B2 (en) | 2015-12-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5473768B2 (ja) | マルチパス動的プロファイリングのためのコンピュータに実行させる方法、システム及びコンピュータ・プログラム | |
| JP5506721B2 (ja) | サブクラステスト関数の実行結果を再利用してプログラムを最適化する最適化装置、最適化方法及び最適化プログラム | |
| US8522222B2 (en) | Tracing just-in-time compilation with pointers to local variables | |
| US8453128B2 (en) | Method and system for implementing a just-in-time compiler | |
| Kotzmann et al. | Escape analysis in the context of dynamic compilation and deoptimization | |
| US9213531B2 (en) | Methods to eliminate extra memory loads while accessing global variables in position independent code | |
| CN110291508B (zh) | 垃圾收集器 | |
| CN109154908B (zh) | 具有精确垃圾收集报告的动态大小的局部 | |
| JP5871589B2 (ja) | 情報処理装置、配列の初期サイズ調整プログラム及び方法 | |
| US9424004B2 (en) | Execution guards in dynamic programming | |
| Prokopec et al. | Making collection operations optimal with aggressive JIT compilation | |
| JP5719278B2 (ja) | 情報処理装置、プロファイル対象決定プログラム及び方法 | |
| US20040015925A1 (en) | Method, article of manufacture and apparatus for performing automatic intemodule call linkage optimization | |
| US10733095B2 (en) | Performing garbage collection on an object array using array chunk references | |
| US8245206B2 (en) | System and method for efficient string concatenation in a virtual machine environment | |
| US8056061B2 (en) | Data processing device and method using predesignated register | |
| JP2012014312A (ja) | 命令実行装置、命令実行方法、及び命令実行プログラム | |
| JP2003241967A (ja) | プログラム実行装置およびその方法、並びにそこで実行されるプログラム | |
| KR102130016B1 (ko) | 자동 캐싱을 위한 컴파일링 방법 및 장치, 이를 위한 기록매체 | |
| US8181177B1 (en) | Reducing the number of heap handles in a program | |
| CN112860279A (zh) | 生成应用安装包的方法、装置、设备和介质 | |
| US11789863B2 (en) | On-the-fly remembered set data structure adaptation | |
| Sima et al. | Runtime memory allocation in a heterogeneous reconfigurable platform | |
| Fänge | A Tracing JIT Compiler for Erlang Using LLVM |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140611 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150615 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150714 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20151006 |
|
| 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: 20151217 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160112 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 5871589 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |