L-Closureの呼び出しコストの削減
スポンサーリンク
概要
- 論文の詳細を見る
本論文ではL-closureという言語機構に関して2つの実装を提案する.1つは複数回同じL-closureが呼び出された場合などの呼び出しコストの削減,もう1つはGNU Cコンパイラ(GCC)4系列への元々呼び出しコストの低いclosureの実装である.L-closureは入れ子関数定義を評価すると生成される軽量レキシカルクロージャで,これを持つ拡張C言語を,高水準言語コンパイラの中間言語として採用することで,ごみ集めなどの高水準サービスを効率良く実装できる.現在L-closureの実装として,GCC 3系列の拡張によるコンパイラ実装と標準C言語への翻訳による実装があり,これらはL-closureの初期化処理を遅延したり,低い維持コスト(アクセスされる変数のレジスタ割当て)を実現しているが,呼び出しコストは高い.翻訳による実装では,Cのスタックとは別のスタック(明示的スタック)を用意し,L-closure呼び出し時にCのスタックの内容を明示的スタックへ一時的に移すことで,入れ子関数を持つ関数の局所変数へのアクセスを実現していた.本研究では,L-closureからのリターンの後,Cスタック全体を再構築するのではなく,フレームごとに再構築することで,再度L-closureが呼び出されたときのスタック間の値の移動を減らし,呼び出しコストを削減する.L-closureの研究の一環として,生成/維持コストはかかるものの呼び出しコストが低いclosureも提案してきた.本研究ではまた,高度な最適化のために内部構造が刷新されたGCC 4系列において,これを実装したので報告する.
- 2013-08-29
著者
-
八杉 昌宏
京都大学大学院情報学研究科
-
馬谷 誠二
京都大学大学院情報学研究科
-
平石 拓
京都大学学術情報メディアセンター
-
Masahiro Yasugi
Graduate School Of Informatics Kyoto University
-
田附 正充
京都大学大学院情報学研究科|現在,楽天株式会社情報技術部
-
八杉 昌宏
九州工業大学大学院情報工学研究院
関連論文
- L-Closure:安全な計算状態操作機構(平成21年度論文賞の受賞論文紹介)
- L-Closure : 高性能・高信頼プログラミング言語の実装向け言語機構
- シームレスな高生産並列スクリプト言語の実現に向けて(並列プログラミング/スケジューリング,「ハイパフォーマンスコンピューティングとアーキテクチャの評価」に関する北海道ワークショップ(HOKKE-2009))
- シームレスな高生産並列スクリプト言語の実現に向けて (計算機アーキテクチャ・ハイパフォーマンスコンピューティング・「ハイパフォーマンスコンピューティングとアーキテクチャの評価」に関する北海道ワークショップ(HOKKE-2009))
- 階層的グループ化に基づくコピー型ごみ集めによる局所性改善
- 共有メモリプログラミングのための拡張C言語
- 動的名前解決による通信先・移動先の柔軟な指定が可能な分散アンビエントシステムの設計
- スレッドベース実行における積極的データ転送のためのPlan-Do型コンパイル技法とその評価
- ABCL/EM-4 : データ駆動並列計算機上の並列オブジェクト指向言語処理系の実装と評価
- スレッドベース実行における積極的データ転送のためのPlan-Do型コンパイル技法
- 構成的理論に基づいたプログラミング言語Zとその実装
- L-Closureを用いた真に末尾再帰的なSchemeインタプリタ
- シームレスな高生産並列スクリプト言語の実現に向けて(並列プログラミング/スケジューリング,「ハイパフォーマンスコンピューティングとアーキテクチャの評価」に関する北海道ワークショップ(HOKKE-2009))
- リターンバリア型実時間ごみ集めの抽象モデル検査
- Cache-conscious階層的グループ化データ配置法:Cache-oblivious配置法との実験的比較
- タプル空間によるブラウザ間通信を備えたScheme処理系の開発
- リージョン変数の動的なエイリアス判定によるメモリ効率向上
- 遅延分割型負荷分散フレームワークの試験実装
- スタックベースのML処理系における効率的な一級継続の実装
- S式ベースC言語における変形規則による言語拡張機構
- 実時間処理に適したメモリ管理を行うLisp処理系の設計と実装
- 入れ子関数を利用する動的負荷分散と高水準記述(言語処理系)
- 細粒度マルチスレッド言語における例外処理の効率良い実装
- 組み込みシステムにおける複数のフリーリストに割り振るメモリ量の最適化
- S式ベースC言語およびその拡張言語の変形に基づく実装(研究会推薦博士論文速報)
- 並行オブジェクトのための型システムとコンパイル技法
- バックトラックに基づく負荷分散のT2K並列環境における評価
- バックトラックに基づく負荷分散の高並列環境における評価
- オブジェクト指向並列言語OPAのための遅延正規化手法
- 遅延タスク生成の反復計算向け拡張(並列処理)
- オブジェクト指向並列言語OPAのためのコード生成手法
- マルチコンテキスト管理をサポートする実装用言語
- 3Z-7 並列言語OPAにおける一貫性制御に対応した差分プログラミング
- Scheme処理系におけるC言語拡張コードへのライトバリア自動挿入
- Scheme処理系におけるC言語拡張コードへのライトバリア自動挿入
- Highly Reliable Embedded Software Development Using Advanced Software Technologies(Software Engineering for Embedded Systems)
- バックトラックに基づく負荷分散の高並列環境における評価
- 2ZP-2 バックトラックに基づく負荷分散の広域分散環境における評価(情報爆発時代における分散処理と運用技術,学生セッション,「情報爆発」時代に向けた新IT基盤技術,情報処理学会創立50周年記念(第72回)全国大会)
- 共有メモリ向けプリミティブとそのGCCを使った実現
- 入れ子関数を利用した動的負荷分散
- Java上のScheme処理系「ぶぶ」における単一のクラスローダを用いたオブジェクトシステムの実装
- 3Z-6 並列Schemeにおける即時タスク生成法と遅延タスク生成法の融合
- リターン・バリア
- 既存Cヘッダファイルの構文の異なる言語での有効利用(サイバー増大ページ論文概要,新しいソフトウェアの実現,サイバー増大号)
- 継続の生成におけるスタックコピーの遅延
- SchemeにおけるEvaluation Strategyの設計と実装
- 4L-6 ISLISPコンパイラの実装
- ワークスティーリングフレームワークにおけるブロードキャスト機能
- 分散制約充足問題のジョブ並列による求解
- A Transformation-Based Implementation of Lightweight Nested Functions
- Efficient and Portable Implementation of Java-style Exception Handling in C
- 適応的オブジェクトによる排他制御の実行時緩和 (並列処理)
- 入れ子関数を利用したマルチスレッドの実現
- Javaと相互呼び出し可能なScheme処理系「ぶぶ」における継続機能と例外処理機能の実装
- 並列処理と例外処理を統一的に扱う構造化言語
- 並列オブジェクト指向言語ABCL/STにおける共有メモリ型並列計算機上の自動負荷分散方式
- 適応的オブジェクトのための局面解析手法
- オブジェクト指向並列言語によるN体問題の並列化とその評価
- Safe AmbientsのためのJavaフレームワーク
- 動的スコープの利用による並列言語の同期・例外処理の階層的構造化
- Parallel Graph Traversals using Work-Stealing Frameworks for Many-core Platforms
- 共有メモリ関連命令を生成可能な実装用言語の設計
- 並列オブジェクト指向言語のためのガーベジコレクタ(並列処理)
- 実行時メソッド置換を行なう並列言語の実装
- 並列処理のためのオブジェクト指向言語OPAの設計とその実装
- 分散共有メモリ型並列計算機KSR上の細粒度並列処理用実行方式の評価
- 「情報処理学会論文誌 : プログラミング」の編集について
- L-Closureの呼び出しコストの削減