{"links":{},"id":16645,"metadata":{"_oai":{"id":"oai:ipsj.ixsq.nii.ac.jp:00016645","sets":["934:935:954:958"]},"path":["958"],"owner":"1","recid":"16645","title":["例外依存関係を越える部分冗長性除去"],"pubdate":{"attribute_name":"公開日","attribute_value":"2005-01-15"},"_buckets":{"deposit":"cdabe775-e467-4928-bb25-9963a1515978"},"_deposit":{"id":"16645","pid":{"type":"depid","value":"16645","revision_id":0},"owners":[1],"status":"published","created_by":1},"item_title":"例外依存関係を越える部分冗長性除去","author_link":["0","0"],"item_titles":{"attribute_name":"タイトル","attribute_value_mlt":[{"subitem_title":"例外依存関係を越える部分冗長性除去"},{"subitem_title":"Partial Redundancy Elimination beyond Exception Dependency","subitem_title_language":"en"}]},"item_keyword":{"attribute_name":"キーワード","attribute_value_mlt":[{"subitem_subject":"通常論文","subitem_subject_scheme":"Other"}]},"item_type_id":"3","publish_date":"2005-01-15","item_3_text_3":{"attribute_name":"著者所属","attribute_value_mlt":[{"subitem_text_value":"東京大学情報理工学系研究科コンピュータ科学専攻"},{"subitem_text_value":"東京大学情報理工学系研究科コンピュータ科学専攻"}]},"item_3_text_4":{"attribute_name":"著者所属(英)","attribute_value_mlt":[{"subitem_text_value":"Department of Computer Science, Graduate School of Information Science and Technology, The University of Tokyo","subitem_text_language":"en"},{"subitem_text_value":"Department of Computer Science, Graduate School of Information Science and Technology, The University of Tokyo","subitem_text_language":"en"}]},"item_language":{"attribute_name":"言語","attribute_value_mlt":[{"subitem_language":"jpn"}]},"item_publisher":{"attribute_name":"出版者","attribute_value_mlt":[{"subitem_publisher":"情報処理学会","subitem_publisher_language":"ja"}]},"publish_status":"0","weko_shared_id":-1,"item_file_price":{"attribute_name":"Billing file","attribute_type":"file","attribute_value_mlt":[{"url":{"url":"https://ipsj.ixsq.nii.ac.jp/record/16645/files/IPSJ-TPRO4601013.pdf"},"date":[{"dateType":"Available","dateValue":"2007-01-15"}],"format":"application/pdf","billing":["billing_file"],"filename":"IPSJ-TPRO4601013.pdf","filesize":[{"value":"753.9 kB"}],"mimetype":"application/pdf","priceinfo":[{"tax":["include_tax"],"price":"660","billingrole":"5"},{"tax":["include_tax"],"price":"330","billingrole":"6"},{"tax":["include_tax"],"price":"0","billingrole":"15"},{"tax":["include_tax"],"price":"0","billingrole":"44"}],"accessrole":"open_date","version_id":"bb64f1bf-23d4-45b7-93e8-b66462e4ad3c","displaytype":"detail","licensetype":"license_note","license_note":"Copyright (c) 2005 by the Information Processing Society of Japan"}]},"item_3_creator_5":{"attribute_name":"著者名","attribute_type":"creator","attribute_value_mlt":[{"creatorNames":[{"creatorName":"大平, 怜"},{"creatorName":"平木, 敬"}],"nameIdentifiers":[{}]}]},"item_3_creator_6":{"attribute_name":"著者名(英)","attribute_type":"creator","attribute_value_mlt":[{"creatorNames":[{"creatorName":"Rei, Odaira","creatorNameLang":"en"},{"creatorName":"Kei, Hiraki","creatorNameLang":"en"}],"nameIdentifiers":[{}]}]},"item_3_source_id_9":{"attribute_name":"書誌レコードID","attribute_value_mlt":[{"subitem_source_identifier":"AA11464814","subitem_source_identifier_type":"NCID"}]},"item_resource_type":{"attribute_name":"資源タイプ","attribute_value_mlt":[{"resourceuri":"http://purl.org/coar/resource_type/c_6501","resourcetype":"journal article"}]},"item_3_source_id_11":{"attribute_name":"ISSN","attribute_value_mlt":[{"subitem_source_identifier":"1882-7802","subitem_source_identifier_type":"ISSN"}]},"item_3_description_7":{"attribute_name":"論文抄録","attribute_value_mlt":[{"subitem_description":"実行時の安全を保証するための例外機構は一方で速度低下の原因となるため,部分冗長性除去(Partial Redundancy Elimination; PRE)で上方移動を用いて不要な例外命令を削除することが有効である.しかし我々はプログラムの意味を保つために例外命令どうしの順序関係である例外依存関係を保つ必要がある.したがって,従来の部分冗長性除去では例外命令の上方移動が阻害されることが多い.本研究で我々はプログラムの意味を保存しつつ例外依存関係を越える部分冗長性除去,Sentinel PRE を提案する.Sentinel PRE は例外依存関係を無視して上方移動を行い,その後で高速な解析により例外順序の入れ替わりを検出する.順序が入れ替わった例外命令で例外が起きた場合,プログラムの意味を保つために上方移動する前の状態に脱最適化でコードを戻す.現実のプログラムで例外が起きることは稀であるため,ほとんどの場合は上方移動により最適化された高速なコードが実行される.Sentinel PRE は特別なハードウェアのサポートには依存せず,動的なコード書き換えにより脱最適化を実現する.我々はSentinel PRE をJava の実行時コンパイラに実装して実験を行い,Java Grande Benchmark 中のheapsort プログラムで8.4%の性能向上を得た.","subitem_description_type":"Other"}]},"item_3_description_8":{"attribute_name":"論文抄録(英)","attribute_value_mlt":[{"subitem_description":"Exception mechanism guarantees runtime robustness, but results in performance degradation. Thus, it is effective to remove redundant excepting instructions by Partial Redundancy Elimination (PRE), which uses hoisting of instructions. However, we must preserve ordering constraints between excepting instructions, which we call exception dependencies, in order to keep the semantics of the program. Therefore, existing PRE algorithms cannot hoist many excepting instructions. In this work, we propose Sentinel PRE, a PRE algorithm which overcomes exception dependencies and at the same time keeps the semantics. Sentinel PRE first hoists excepting instructions without considering exception dependencies, and then detects exception reordering by fast analysis. If exception occurs at a reordered instruction, it deoptimizes the code into the one before hoisting. Since we rarely encounter exception in real programs, the optimized code is executed in almost all cases. Sentinel PRE does not rely on special hardware support, and performs deoptimization by runtime code patching. We implemented Sentinel PRE in a Java just-in-time compiler and conducted experiments. The results show 8.4% performance improvement in “heapsort” program in Java Grande Benchmark.","subitem_description_type":"Other"}]},"item_3_biblio_info_10":{"attribute_name":"書誌情報","attribute_value_mlt":[{"bibliographicPageEnd":"148","bibliographic_titles":[{"bibliographic_title":"情報処理学会論文誌プログラミング(PRO)"}],"bibliographicPageStart":"134","bibliographicIssueDates":{"bibliographicIssueDate":"2005-01-15","bibliographicIssueDateType":"Issued"},"bibliographicIssueNumber":"SIG1(PRO24)","bibliographicVolumeNumber":"46"}]},"relation_version_is_last":true,"weko_creator_id":"1"},"created":"2025-01-18T22:49:51.590158+00:00","updated":"2025-01-22T23:45:40.070370+00:00"}