小宮 常康

情報・ネットワーク工学専攻准教授
Ⅰ類(情報系)准教授

学位

  • 博士(工学), 豊橋技術科学大学

研究キーワード

  • プログラミング言語,プログラミング言語処理系

研究分野

  • 情報通信, ソフトウェア

経歴

  • 2016年04月01日
    電気通信大学大学院情報理工学研究科, 准教授
  • 2007年04月01日 - 2016年03月31日
    電気通信大学大学院情報システム学研究科, 准教授
  • 2007年01月01日 - 2007年03月31日
    電気通信大学大学院情報システム学研究科, 助教授
  • 2003年12月 - 2006年12月
    豊橋技術科学大学情報工学系, 講師
  • 2005年10月 - 2006年09月
    静岡大学工学部, 非常勤講師(併任)
  • 1998年04月 - 2003年11月
    京都大学大学院情報学研究科通信情報システム専攻, 助手
  • 1996年04月 - 1998年03月
    京都大学大学院工学研究科情報工学専攻, 助手

学歴

  • 1993年04月 - 1996年03月
    豊橋技術科学大学, 工学研究科, システム情報工学専攻

委員歴

  • 2024年04月 - 現在
    編集委員会副編集委員長, 日本ソフトウェア科学会, 学協会
  • 2023年04月 - 現在
    プログラミング論研究会 運営委員, 日本ソフトウェア科学会, 学協会
  • 2020年12月 - 現在
    情報入試委員会, 情報処理学会, 学協会
  • 2012年04月 - 2024年03月
    コンピュータソフトウェア 編集委員, 日本ソフトウェア科学会, 学協会
  • 2019年06月 - 2023年05月
    論文誌ジャーナル/JIP編集委員会, 情報処理学会, 学協会
  • 2022年
    プログラム共同委員長, 日本ソフトウェア科学会 第25回プログラミングおよびプログラミング言語ワークショップ(PPL2023), 学協会
  • 2019年04月 - 2021年03月
    教科科目第一委員会委員及び問題作成部会委員, 独立行政法人大学入試センター
  • 2021年
    プログラム委員, 日本ソフトウェア科学会第38回大会, 学協会
  • 2021年
    プログラム委員, 日本ソフトウェア科学会 第24回プログラミングおよびプログラミング言語ワークショップ(PPL2022), 学協会
  • 2019年04月 - 2020年03月
    JSONデータ交換フォーマットJIS原案作成委員会, 情報処理学会, 学協会
  • 2013年04月 - 2017年03月
    プログラミング研究会幹事, 情報処理学会, 学協会
  • 2017年
    FIT2017プログラム委員会, FIT2017 第16回情報科学技術フォーラム, 学協会
  • 2016年
    プログラム委員, 日本ソフトウェア科学会第33回大会, 学協会
  • 2016年
    FIT2016研究専門委員会担当委員, FIT2016 第15回情報科学技術フォーラム, 学協会
  • 2016年
    プログラム委員, 日本ソフトウェア科学会 第19回プログラミングおよびプログラミング言語ワークショップ(PPL2017), 学協会
  • 2013年
    組織委員, 先進的計算基盤システムシンポジウムSACSIS2013, 学協会
  • 2013年
    プログラム委員, 日本ソフトウェア科学会第30回大会, 学協会
  • 2012年
    プログラム委員, 日本ソフトウェア科学会 第14回プログラミングおよびプログラミング言語ワークショップ(PPL2013), 学協会
  • 2011年
    プログラム委員, 先進的計算基盤システムシンポジウムSACSIS2011, 学協会
  • 2011年
    プログラム委員, 日本ソフトウェア科学会 第14回プログラミングおよびプログラミング言語ワークショップ(PPL2012), 学協会
  • 2010年
    審判, ACM/ICPC東京大会, 学協会
  • 2007年04月 - 2009年03月
    教科科目第一委員会委員, 独立行政法人大学入試センター
  • 2005年04月 - 2009年03月
    情報処理学会論文誌:プログラミング 編集委員, 情報処理学会, 学協会
  • 2009年
    審判, ACM/ICPC東京大会, 学協会
  • 2008年
    プログラム委員, 日本ソフトウェア科学会第25回大会, 学協会
  • 2007年
    プログラム委員, 日本ソフトウェア科学会第24回大会, 学協会
  • 1999年04月 - 2003年03月
    プログラミング研究会 運営委員, 情報処理学会, 学協会
  • 2003年
    プログラム委員, 先進的計算基盤システムシンポジウムSACSIS2003, 学協会
  • 2002年
    プログラム委員, 並列処理シンポジウムJSPP2002, 学協会

受賞

  • 受賞日 1997年05月
    情報処理学会 平成8年度論文賞

論文

  • Evaluating Portable Mechanisms for Legitimate Execution Stack Access with a Scheme Interpreter in an Extended SC Language
    Masahiro Yasugi; Reichi Ikeuchi; Tasuku Hiraishi; Tsuneyasu Komiya
    Journal of Information Processing, Information Processing Society of Japan, 27巻, 掲載ページ 177-189, 出版日 2019年02月15日, 査読付
    研究論文(学術雑誌), 英語
  • L-Closureを用いた真に末尾再帰的なSchemeインタプリタ
    八杉昌宏; 小島啓史; 小宮常康; 平石 拓; 馬谷誠二; 湯淺太一
    情報処理学会論文誌 プログラミング, 情報処理学会, 3巻, 5号, 掲載ページ 1-17, 出版日 2010年12月, 査読付, Scheme処理系は真に末尾再帰的であることが要求されており,アクティブな末尾呼び出しの数に制限がない場合もサポートしなくてはならない.Clingerは真の末尾再帰の形式的定義の1つを空間効率の点から与えており,その定義に従えば,末尾呼び出しの最適化(末尾呼び出しをトランポリンなどによりジャンプに置き換えて実装する方法)だけでなく,BakerのCPS(継続渡しスタイル)変換を用いたC言語におけるSchemeの実装手法も,真に末尾再帰的と分類できる.Bakerの実装手法は,CPS変換された末尾呼び出しにおいて新たな継続を生成せず,C言語の実行スタックに対してもごみ集めを行うため,空間効率が良い.本論文では拡張C言語による真に末尾再帰的なSchemeインタプリタの実装手法を提案する.本手法はCPS変換を用いず,Cの実行スタックがあふれそうになれば,残りの計算に必要な"Frame"オブジェクトのみを含むリストとして表現された空間効率の良い一級継続を生成し,すぐさまその継続を呼び出すというアイディアに基づく.ごみ集めや継続のキャプチャにおいては,実行スタックに合法的にアクセスできる,つまりデータ構造や変数の値としてアクセスできるL-closureという言語機構を用いている.ベースとなるSchemeインタプリタは,Javaアプリケーション組み込み用LispドライバであるJAKLDをもとにC言語で再実装されたものとした.Implementations of Scheme are required to be properly tail-recursive and to support an unbounded number of active tail calls. Clinger proposed a formal definition of proper tail recursion based on space efficiency. The definition covers systematic tail call optimization, where every tail call is converted to a jump (with an optional trampoline), as well as Baker's implementation of Scheme in the C language with CPS (continuation-passing style) conversion. Baker's implementation is space-efficient, since no new continuation is created on a CPS-converted tail call and garbage is collected even on C's execution stack. We propose techniques to implement a properly tail-recursive Scheme interpreter in an extended C language. Our approach does not convert a program into CPS. The key idea is to avoid stack overflow by creating a space-efficient first-class continuation represented as a list containing only the "Frame" objects necessary for the rest of computation and immediately invoking the continuation. We use a language mechanism called "L-closures" to access the contents of the execution stack as values of legal data structures and variables for implementing garbage collection and capturing continuations. This research is based on a Scheme interpreter which is developed in the C language by referring to an existing Lisp driver called JAKLD that is intended to be embedded in Java applications.
    研究論文(学術雑誌), 日本語
  • Managing continuations for proper tail recursion
    Masahiro Yasugi; Tsuneyasu Komiya; Tasuku Hiraishi; Seiji Umatani
    Proceedings of the 2010 International Conference on Lisp, ILC '10, 掲載ページ 65-72, 出版日 2010年, 査読付, Implementations of Scheme are required to be properly tail-recursive and to support an unbounded number of active tail calls. Clinger proposed a formal definition of proper tail recursion based on space efficiency. This definition encompasses systematic tail call optimization, where every tail call is converted to a jump (with an optional trampoline), as well as Baker's implementation of Scheme in the C language with CPS (continuation-passing style) conversion. Baker's implementation is space-efficient, since no new continuation is created on a CPS-converted tail call and garbage is collected even on C's execution stack. In our work, we discovered that an abstract machine that runs CPS-converted programs cannot be considered properly tail-recursive according to Clinger's definition if continuation closures are simply created with the lexical environments for all variables. Furthermore, an abstract machine that employs neither explicit environments nor continuations is also improperly tail-recursive. This paper discusses the above issue and also proposes new techniques to implement a properly tail-recursive Scheme interpreter in an extended C language by following space-efficiency-based definitions of proper tail recursion. In our approach, a program is not converted into CPS. The primary concept is to avoid stack overflow by creating a space-efficient first-class continuation represented as a list containing only the "Frame" objects necessary for the rest of the computation and immediately invoking the continuation. We use a language mechanism called "L-closures" to access the contents of the execution stack as values of legal data structures and variables for implementing garbage collection and capturing continuations. © 2010 ACM.
    研究論文(国際会議プロシーディングス), 英語
  • Real-time GC in JeRTy (TM) VM using the return-barrier method
    H Saiki; Y Konaka; T Komiya; M Yasugi; T Yuasa
    ISORC 2005: Eighth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing, Proceedings, IEEE COMPUTER SOC, 掲載ページ 140-148, 出版日 2005年, Runtime systems for applications written in certain languages such as Java (TM) and Lisp usually have a garbage collection (GC) feature to make efficient use of memory. With this feature, the system, before running out of memory space, automatically reclaims unnecessary fragments of memory at one burst and recycles them for use by applications. In conventional implementations, however the system has to suspend the execution of applications while carrying out GC, which renders GC generally unsuitable for real-time processing systems. As a solution to this problem, Yuasa, et al. of Kyoto University developed the return-barrier method based on snapshot GC. Return-barrier enhances real-time GC processing over the original snapshot GC. Some reports have been published on the evaluation of the return-barrier method in the Lisp environment such as Kyoto Common Lisp (KCL). In this paper we report the implementation of the return-barrier method for JeRTy (TM) VM, which is a real-time environment for embedded Java applications developed by OMRON Corporation, and its performance improvement over the conventional GC in JeRTyVM.
    研究論文(国際会議プロシーディングス), 英語
  • オブジェクト指向並列言語OPAのための遅延正規化手法
    馬谷誠二; 八杉昌宏; 小宮常康; 湯淺太一
    情報処理学会論文誌:プログラミング, 45巻, SIG 5 (PRO 21)号, 掲載ページ 12-25, 出版日 2004年, 査読付
    研究論文(学術雑誌), 日本語
  • 階層的グループ化に基づくコピー型ごみ集めによる局所性改善
    八杉昌宏; 伊藤智一; 小宮常康; 湯淺太一
    情報処理学会論文誌:プログラミング, 一般社団法人情報処理学会, 45巻, SIG 5 (PRO 21)号, 掲載ページ 35-52, 出版日 2004年, 査読付, プロセッサとメモリの性能差は近年拡大しており,仮想記憶の局所性だけでなく,キャッシュの局所性を改善することも重要となっている.ごみ集め(GC)の1つであるコピーGCでは,2つの部分空間の片方から生きているオブジェクトのみを他方の部分空間にコピー(移動)する.Cheneyの非再帰的なコピーGCは,コピー先の部分空間の一部をスキャン待ちオブジェクトのキューとして利用するので追加の作業領域をほとんど必要としないが,オブジェクトが幅優先順にコピーされる.しかし幅優先順のコピーでは,多くの応用プログラムでメモリアクセスの空間的局所性が低下し,キャッシュミスや仮想記憶のミス(ページフォールトやTLBミス)が増加する.本研究では,できるだけ深さ優先順にコピーする方式を提案する.実際にはそれでも局所性の改善は限定的なため,さらに,オブジェクトを階層的にグループ化してコピーする方式を提案する.これらの再帰的なコピーGCではコピーの際に使用するスタックなどの作業領域のサイズが最悪の場合に生きているオブジェクトの個数に比例するという問題がある.そこで,限られた作業領域でできるだけ多くの部分に深さ優先コピーや階層的グループ化を高速に適用する方式を提案する.本論文では提案手法によるミス率低減効果の測定結果も示す.The increasing processor-memory performance gap makes improving cache locality as important as virtual memory locality. Copying garbage collection moves all live objects from one semi-space to another semi-space. Cheney's nonrecursive copying algorithm employs a section of the destination semi-space as a queue of unscanned objects and requires only a negligible working space, but objects are copied in breadth-first order. However, in many applications, the breadth-first copying makes the spatial memory access locality worse and increases cache misses, page faults and TLB misses. In this paper, we propose a mostly depth-first copying algorithm. Since depth-first copying only achieves limited locality improvement, we also propose a new "hierarchical clustering" copying algorithm. Since these recursive copying algorithms require a working space (e.g., a stack) for recording unscanned objects whose worst-case size is proportional to the number of live objects, we also propose an efficient technique which achieves depth-first copying or hierarchical clustering as approximately as possible using bounded workspace. This paper also shows the effect of our approach on miss-rate reduction.
    研究論文(学術雑誌), 日本語
  • 入れ子関数を利用する動的負荷分散と高水準記述
    八杉昌宏; 小宮常康; 湯淺太一
    情報処理学会論文誌:コンピューティングシステム, 一般社団法人情報処理学会, 45巻, SIG 11 (ACS 7)号, 掲載ページ 368-377, 出版日 2004年, 査読付, 本論文では,GNU CコンパイラなどがC言語の拡張機能として提供する入れ子関数を利用して,呼び出し元の変数にアクセスすることで,遅延タスク生成に基づく負荷分散を行うプログラムが書けることを示す.また,バックトラックに相当する動作の記述も可能であることを示す.ただし本記述方式では,オリジナルの遅延タスク生成より低水準な記述が可能であり,タスクは継続を処理するものとは限らず,明示された並列実行可能部分を処理するものとする.このため,クラスタなどの分散環境でも利用できる.一方,低水準な記述が望ましくない場合もあるので,高水準な記述についても考察する.また,GNU Cコンパイラの入れ子関数の生成・維持コストが少なくなるよう実装を改良した.共有メモリ型並列計算機上での予備的性能評価により,理想的な台数効果と低い並列化オーバヘッドが確認できた.In this paper, we show that we can write a program with "Lazy Task Creation"-based load balancing where callers' variables are accessed by using nested functions provided as an extension to C by the GNU C compiler. We also show that we can describe a behavior corresponding to backtracking. Our scheme accepts a lower-level description than the original LTC. A task can be created not only to process a continuation but also to process a specified part for parallel execution. The low-level description can be used for the distributed computing such as cluster computing. Since the low-level description is sometimes undesirable, we also discuss its high-level description. We also enhanced GCC to reduce allocation overhead and maintenance overhead of nested functions. The results of preliminary performance measurements on various shared-memory parallel computers exhibit near-ideal speedups and quite low parallelization overhead.
    研究論文(学術雑誌), 日本語
  • Lazy stack copying and stack copy sharing for the efficient implementation of continuations
    T Ugawa; N Minagawa; T Komiya; M Yasugi; T Yuasa
    PROGRAMMING LANGUAGES AND SYSTEMS, PROCEEDINGS, SPRINGER-VERLAG BERLIN, 2895巻, 掲載ページ 410-426, 出版日 2003年, 査読付, In order to capture first-class continuations, most stack-based implementations copy contents of the stack to the heap. While various implementation strategies for copying have been proposed, many implementations employ the stack strategy. With this strategy, the entire stack contents is copied to the heap whenever a continuation is captured. This simple strategy is easy to implement and can be used for implementations with foreign language interface. However, this strategy requires a lot of time and memory for creation and invocation of continuations. We propose a lazy stack copying technique. The contents of the stack to copy are preserved on the stack until the function returns that has captured the continuation. So we delay stack copying for the continuation until the function returns. We can avoid stack copying if it is detected that the continuation has become garbage before the function returns. In addition, we propose stack copy sharing, which is realized by using lazy stack copying. We present three models for stack copy sharing. We applied these techniques to Scheme systems and found that the proposed techniques improve runtime and memory efficiency of programs that use first-class continuations.
    研究論文(学術雑誌), 英語
  • Pursuing laziness for efficient implementation of modern multithreaded languages
    S Umatani; M Yasugi; T Komiya; T Yuasa
    HIGH PERFORMANCE COMPUTING, SPRINGER-VERLAG BERLIN, 2858巻, 掲載ページ 174-188, 出版日 2003年, 査読付, Modern multithreaded languages axe expected to support advanced features such as thread identification for Java-style locks and dynamically-scoped synchronization coupled with exception handling. However, supporting these features has been considered to degrade the effectiveness of existing efficient implementation techniques for fine-grained fork/join multithreaded languages, e.g., lazy task creation. This paper proposes efficient implementation techniques for an extended Java language OPA with the above advanced features. Our portable implementation in C achieves good performance by pursuing 'laziness' not only for task creation but also stealable continuation creation, thread ID allocation, and synchronizer creation.
    研究論文(学術雑誌), 英語
  • 継続の生成におけるスタックコピーの遅延
    鵜川始陽; 皆川宜久; 小宮常康; 八杉昌宏; 湯淺太一
    情報処理学会論文誌:プログラミング, 一般社団法人情報処理学会, 44巻, SIG 13 (PRO 18)号, 掲載ページ 72-83, 出版日 2003年, 査読付, 実行にスタックを利用している処理系でファーストクラスの継続を生成する場合,スタックの内容をヒープにコピーするのが一般的である.スタックの内容をヒープにコピーする戦略には様々なものが提案されているが,実際の処理系の多くはスタック法を採用している.スタック法では継続の生成のたびに処理系のスタック全体の内容をヒープにコピーする.このように,スタック法は動作が単純なので簡単に実装でき,また他言語呼び出しをサポートした処理系でも利用できるという長所がある.しかし,継続の生成に時間がかかり,また,メモリ効率が悪いという欠点があり,利用の妨げとなる場合もある.本発表では,スタック法による継続の生成に対する効率化手法として,スタックのコピーの遅延を提案する.継続の生成によりコピーされるスタックの内容は,継続を生成した関数からリターンするまでスタック上にも残っている.したがって,スタックのコピーを継続を生成した関数からリターンするまで遅らせてもよい.もし,生成した継続が,スタックをコピーする前にごみになれば,スタックのコピーを省略できる.本発表では,さらに,スタックコピーの遅延により可能となる,継続オブジェクトの部分的共有も提案する.これらの効率化手法をScheme処理系に組み込んで性能を評価したところ,継続を使ったプログラムの実行効率が改善された.In order to capture first-class continuations, most stack-based implementations copy contents of the stack to the heap. While various implementation strategies for copying are proposed, most implementations employ the stack strategy. With this strategy, the entire stack contents are copied to the heap whenever a continuation is captured. This simple strategy is easy to implement and can be used for implementations with foreign language interface. However, continuations with this strategy spend a lot of time and memory for their creations and invocations, and this week point often discourages programmers from using first-class continuations. We propose a lazy stack copying technique. The contents of the stack to copy will be preserved on the stack until returning from the function that is capturing the continuation. So we delay stack copying for a continuation until the function returns. We can avoid stack copying if it is detected that the continuation became a garbage before the function returs. In addition, we propose another technique, partial sharing of the copied stack, which is realized by using the lazy stack copying technique. We applied these techniques to Scheme interpreters and found that the proposed techniques improve runtime and memory efficiency of programs that use continuations.
    研究論文(学術雑誌), 日本語
  • Scheme処理系におけるC言語拡張コードへのライトバリア自動挿入
    花井亮; 小宮常康; 八杉昌宏; 湯淺太一
    情報処理学会論文誌:プログラミング, 情報処理学会, 44巻, SIG 4 (PRO 17)号, 掲載ページ 17-24, 出版日 2003年, 査読付
    研究論文(学術雑誌), 日本語
  • Indefinite One-time Continuations
    T. Komiya; T. Yuasa
    Advanced Lisp Technology, Taylor & Francis, 掲載ページ 155-172, 出版日 2002年
    研究論文(学術雑誌), 英語
  • Extended Continuations for Future-based Parallel Scheme Languages
    T. Komiya; T. Yuasa
    Advanced Lisp Technology, 掲載ページ 119-133, 出版日 2002年
    研究論文(学術雑誌), 英語
  • Automatic Recompilation on Macro Redefinition, by Making Use of Weak Conses
    T. Komiya; T. Yuasa; A. Fushimi
    Advanced Lisp Technology, Taylor & Francis, 掲載ページ 255-267, 出版日 2002年
    研究論文(学術雑誌), 英語
  • 入れ子関数を利用したマルチスレッドの実現
    田畑悠介; 八杉昌宏; 小宮常康; 湯淺太一
    情報処理学会論文誌:プログラミング, 43巻, SIG 3 (PRO 14)号, 掲載ページ 26-40, 出版日 2002年, 査読付
    研究論文(学術雑誌), 日本語
  • 共有メモリ向けプリミティブとそのGCCを使った実現
    八杉昌宏; 高田潤; 田畑悠介; 小宮常康; 湯淺太一
    情報処理学会論文誌:プログラミング, 43巻, SIG 1 (PRO 13)号, 掲載ページ 118-132, 出版日 2002年, 査読付
    研究論文(学術雑誌), 日本語
  • Javaと相互呼び出し可能なScheme処理系「ぶぶ」における継続機能と例外処理機能の実装
    鵜川始陽; 湯淺太一; 小宮常康; 八杉昌宏
    情報処理学会論文誌:プログラミング, 42巻, SIG 11 (PRO 12)号, 掲載ページ 25-36, 出版日 2001年, 査読付
    研究論文(学術雑誌), 日本語
  • Java上のScheme処理系「ぶぶ」における単一のクラスローダを用いたオブジェクトシステムの実装
    窪田貴志; 湯淺太一; 倉林則之; 八杉昌宏; 小宮常康
    情報処理学会論文誌:プログラミング, 42巻, SIG 7 (PRO 11)号, 掲載ページ 57-69, 出版日 2001年, 査読付
    研究論文(学術雑誌), 日本語
  • オブジェクト指向並列言語OPAのためのコード生成手法
    八杉昌宏; 馬谷誠二; 田畑悠介; 伊藤智一; 小宮常康; 湯淺太一
    情報処理学会論文誌:プログラミング, 42巻, SIG 11 (PRO 12)号, 掲載ページ 1-13, 出版日 2001年, 査読付
    研究論文(学術雑誌), 日本語
  • Speculative Computation with Lazy Task Creation(共著)
    T Komiya; T Yuasa; S Fukushima
    Parallel and Distributed Computing for Symbolic and Irregular Applications, World Scientific, WORLD SCIENTIFIC PUBL CO PTE LTD, 掲載ページ 41-55, 出版日 2000年, We propose an extended future construct for speculative computation, that can be used together with lazy task creation (LTC). Our goal is to provide a framework for speculative computation on an LTC system. In order to perform speculative computation on an LTC system, we assign an attribute, either mandatory or speculative, to each task. Every task is initially regarded as speculative. Later, if the computation of the task is determined to be actually required, the attribute becomes mandatory. The decision whether the computation is required or not is made by periodically evaluating a condition, that is given to the extended future construct. In this paper, we also present an implementation of the extended future construct, and show the results of some benchmarks.
    研究論文(国際会議プロシーディングス), 英語
  • リターン・バリア
    湯淺太一; 中川雄一郎; 小宮常康; 八杉昌宏
    情報処理学会論文誌:プログラミング, 一般社団法人情報処理学会, 41巻, SIG 9 (PRO 8)号, 掲載ページ 87-99, 出版日 2000年, 査読付, Lispなどの大多数のリスト処理システムでは,不用セルを回収するためにごみ集め(GC)が行われる.一般的に採用されているGCは,ごみ集めの間プログラムの実行が中断されるので実時間処理には適さない.この問題を解決するために,ごみ集めの一連の処理を小さな部分処理に細分化し,プログラムの実行と並行してごみ集め処理を少しずつ進行させる実時間方式のGCが提案されている.代表的な実時間GCであるスナップショットGCは,スタックなどのルート領域から直接指されているセルをGC開始時にすべてマークしておかなければならない.この間の実行停止時間は,ルート領域の大きさによっては,無視できなくなる.そこで,関数からのリターン時にマーク漏れがないようにチェックすることで,スタックから直接指されているセルを関数フレーム単位でマークする方法を提案する.スタック上のルート領域をフレーム単位でマークしていき,ある関数からリターンする際に次の関数フレームがマークされているかどうかをチェックし,マークされていなければその関数フレームをマークしてからリターンする.これをリターン・バリアと呼ぶことにする.ルート領域のマークが終了したら,従来のスナップショットGCと同様に残りのセルをマークする.本論文では,Common Lisp処理系KCL(Kyoto Common Lisp)上でリターン・バリアを実装し,GCによる実行停止時間について,従来のスナップショットGCと比較評価および検討を行った.Garbage collection (GC) is the most popular method in list processing systems such as Lisp to reclaim discarded cells. GC periodically suspends the execution of the main list processing program. In order to avoid this problem, realtime GC which runs in parallel with the main program so that the time for each list processing primitive is bounded by some small constant has been proposed. The snapshot GC, which is one of the most popular realtime GC methods, has to mark all cells directly pointed to from the root area at the beginning of a GC process. The suspension of the main program by this root marking cannot be ignored when the root area is large. This paper proposes ``return barrier'' in order to divide the process of root marking into small chunks and to reduce the suspension time of the main program. The root area on the stack is marked frame by frame each time a new cell is requierd. When a function returns, the garbage collector checks if cells pointed to from the frame of the caller function have been already marked, and marks them if not. After marking all cells directly pointed to from the root area, other cells are marked as in the original snapshot GC .In this paper, we implemented the snapshot GC equipped with the return barrier in KCL (Kyoto Common Lisp). We compare and discuss the suspension times of this GC and the original snapshot GC.
    研究論文(学術雑誌), 日本語
  • 無制限の寿命を持つ単一呼出継続
    小宮常康; 湯淺太一
    情報処理学会論文誌, 37巻, 1号, 掲載ページ 92-100, 出版日 1996年, 査読付
    研究論文(学術雑誌), 日本語
  • Weak Consを用いたマクロ再定義時の自動再コンパイル
    小宮常康; 伏見明浩; 湯淺太一
    情報処理学会論文誌, 一般社団法人情報処理学会, 36巻, 6号, 掲載ページ 1407-1414, 出版日 1995年, 査読付, Lisp処理系には、インタプリタとコンパイラの両方を備えた処理系が多いが、その両方を併用する場合は、マクロを使用した関数のコンパイルに注意を要する。インタプリタでは、マクロ展開はマクロ式の評価時に行うため、いつでも最新のマクロ定義が使われる。一方、コンパイラでは、コンパイル時に展開を行うため、コンパイル時におけるマクロ定義が使われる。そのため、マクロを使用した関数をコンパイルする場合は、必要なマクロがあらかじめ定義されていなければならない。またコンパイルされた関数では、マクロ式はすでに展開されているので、マクロを再定義してもその変更はコンパイルされた関数には反映されない。このようにコンパイラでは、マクロの定義時期やマクロの再定義によって、動作がインタプリタと変わってしまうことがある。そこで本論文では、関数とマクロの依存関係グラフを保持し、マクロの(再)定義時にそのマクロに依存する関数やマクロを白動再コンパイルまたは白動再定義することにより、コンパイラを使用した場合でもインタプリタと同じように動作させる方法を提案する。提案する方法では、weakc・sを用いることによって、不必要な再パイルを避けることができ、また不要な再コンパイル情報を捨てることができる。本方法は、本文で述べるように、インタプリタと同じ動作をさせることができない場合があるが、それはきわめて特殊な場合であり、実用上は問題ないと考えられる。
    研究論文(学術雑誌), 日本語
  • Futureベースの並列Schemeにおける継続の拡張
    小宮常康; 湯淺太一
    情報処理学会論文誌, 一般社団法人情報処理学会, 35巻, 11号, 掲載ページ 2382-2391, 出版日 1994年, 査読付, 継続とはある時点以降の残りの計算を表したものである。Lispの一方言であるSchemeでは、継続を生成する関数が用意されており、継続をデータとして扱うことができる。これによって、非局所的脱出やコルーチンなどの様々な制御構造を実現することができる。一方、Scheme言語を並列化するためによく使用されるfuture構文は、プロセスの生成とそれらの間の同期を取るメカニズムを提供する。しかし、future構文に墓づく従来の並列Schemeの継続機能では、並列プログラムを記述するのに不十分であった。そこで本論文では、future構文に基づく並列環境に適合するように、Schemeの継続機能を拡張することを提案する。
    研究論文(学術雑誌), 日本語

MISC

  • 大学情報入試の動向:2.国公立大学における情報入試
    小宮常康
    出版日 2024年01月, 情報処理, 65巻, 2号, 掲載ページ e6-e9, 記事・総説・解説・論説等(学術雑誌)
  • 教科「情報」の入学試験問題って?:時間短縮大作戦!
    小宮常康
    出版日 2022年10月, 情報処理, 63巻, 11号, 掲載ページ e34-e52, 記事・総説・解説・論説等(学術雑誌)
  • ぺた語義:全国大会イベント「2025年実施の大学情報入試への展望」の報告
    小宮 常康; 佐藤 喬
    情報処理学会, 出版日 2021年08月15日, 情報処理, 62巻, 9号, 掲載ページ 490-494, 日本語, 記事・総説・解説・論説等(学術雑誌)
  • TUTScheme
    小宮常康; 湯淺太一
    出版日 2011年08月, コンピュータソフトウェア, 28巻, 3号, 掲載ページ 70-75, 日本語, 記事・総説・解説・論説等(その他)
  • メモリ上の配置を意識する並列処理向き高水準機械語の設計と実装
    渡邊 誠也; 横山 大作; 近山 隆; 小宮 常康; 湯淺 太一
    単一計算機内のメモリ階層から計算機間のネットワーク遅延の差異までを統一的に記述できる計算量モデル「計算連続体モデル」を提案している.このモデルでは,計算実体はメモリ上のあらゆる場所に存在し,場所を移動させながら計算を行なう.計算コストは,メモリアクセスに要するコストで表され,計算を行なっている実行場所からアクセス対象データが格納されている場所までの距離に基づいて表現される.これまでに,このモデルの検証に用いる仮想機械を開発しているが,低水準な命令セットであるため,大規模なプログラミングは効率上困難である.そこで,より高水準な記述のできる機械語の設計を行なった.設計した言語は,C言語をベースとし,実行場所を指定する構文とマルチスレッド並列処理の機能を有する.本稿では,この計算連続体モデルに基づく仮想機械用の高水準機械語の設計と実装について述べる., 日本ソフトウェア科学会, 出版日 2003年, 日本ソフトウェア科学会大会講演論文集, 2003巻, 0号, 掲載ページ 84-84, 1349-3515, 130004638831

書籍等出版物

  • ガベージコレクション 自動的メモリ管理を構成する理論と実装
    前田敦司; 鵜川始陽; 小宮常康
    学術書, 日本語, 共訳, 翔泳社, 出版日 2016年03月14日, ISBN 9784798134208

講演・口頭発表等

  • 関数型言語の諸概念を取り入れたシェル
    眞田龍史; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第86回全国大会
    発表日 2024年03月16日
  • 電気通信大学における情報入試体験会の実施結果概要の報告
    小宮常康; 渡辺博芳; 中山泰一; 成見 哲; 山路浩夫
    口頭発表(一般), 日本語, 情報処理学会第86回全国大会
    発表日 2024年03月15日
  • 演算の融合による数値計算ライブラリIFNのメモリ効率の改善
    齊藤百香; 岩崎英哉; 川端英之; 小宮 常康
    ポスター発表, 日本語, 第26回プログラミングおよびプログラミング言語ワークショップ(PPL 2024)
    開催期間 2024年03月05日- 2024年03月07日
  • GCアサーションにおけるメモリリーク要因の提示機能
    楊 光; 小宮常康
    情報処理学会第85回全国大会
    発表日 2023年03月04日
  • インタプリタとコンパイラ生成コードの対比によるコンパイラ実行時環境理解支援ツール
    李 志弘; 小宮常康
    口頭発表(一般), 情報処理学会第85回全国大会
    発表日 2023年03月04日
  • 各教科で使用可能なフローチャートを利用した論理的思考力育成システムの開発
    杉山 尚也; 中山 泰一; 小宮 常康
    口頭発表(一般), 情報処理学会第64回プログラミング・シンポジウム
    発表日 2023年01月07日
  • 前処理による静的解析ツールsolhintの解析性能向上
    橋本 樹; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第84回全国大会講演論文集, 情報処理学会, 愛媛県松山市(ハイブリッド), 国内会議
    発表日 2022年03月03日
  • 値への追跡子付与による動的プログラム解析手法
    西谷幸太郎; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第84回全国大会講演論文集, 情報処理学会, 愛媛県松山市(ハイブリッド), 国内会議
    発表日 2022年03月03日
  • Evaluating Implementations of First-class Continuations for a Scheme Interpreter in an Extended SC Language
    Daiki Bise; Masahiro Yasugi; Tasuku Hiraishi; Tsuneyasu Komiya
    ポスター発表, 英語, The 18th Asian Symposium on Programming Languages and Systems (APLAS)
    発表日 2021年12月01日
  • ごみ集めにおける自動ルート保護と手動ルート保護の併用手法
    半澤順一; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第129回プログラミング研究発表会
    発表日 2020年06月02日
  • アサーションを取り入れた静的解析に基づくデバッグ支援ツール
    関口雄太; 小宮常康
    ポスター発表, 日本語, 第22回プログラミングおよびプログラミング言語ワークショップ(PPL2020), オンライン開催, 国内会議
    発表日 2020年03月09日
  • TypeScriptにおける型定義を切り替え可能な型検査補助ツールの実装
    木戸章紀; 小宮 常康
    ポスター発表, 日本語, 第22回プログラミングおよびプログラミング言語ワークショップ(PPL2020), オンライン開催, 国内会議
    発表日 2020年03月09日
  • FFIをもつSchemeインタプリタのための部分コンパイル方式コンパイラの構成法
    寺澤哉門; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第81回全国大会講演論文集, 情報処理学会, 福岡市, 国内会議
    発表日 2019年03月15日
  • 最近のプログラミング言語の動向
    小宮常康
    公開講演,セミナー,チュートリアル,講習,講義等, 日本技術士会情報工学部会・情報処理学会CPDコラボ・ワークショップ, 招待
    発表日 2018年10月20日
  • 拡張SC言語で記述したSchemeインタプリタによる計算状態操作機構の評価
    八杉昌宏; 池内嶺知; 平石 拓; 小宮常康; 重本孝太
    口頭発表(一般), 日本語, 日本ソフトウェア科学会 第20回プログラミングおよびプログラミング言語ワークショップ(PPL2018), 国内会議
    発表日 2018年03月06日
  • アロケーションサイトに応じてGCアルゴリズムを選択可能なハイブリッドGC
    半澤順一; 小宮常康; 佐藤 喬
    口頭発表(一般), 日本語, 情報処理学会第118回プログラミング研究発表会
    発表日 2018年02月28日
  • LLDBを用いたソース-to-C型トランスレータ用ソースレベルデバッガの実装手法
    柳 震; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第79回全国大会講演論文集, 情報処理学会, 名古屋市, 国内会議
    発表日 2017年03月16日
  • 類似コード検出に向けた中間言語の視覚化
    半澤順一; 佐藤 喬; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第78回全国大会講演論文集, 情報処理学会, 横浜市, 国内会議
    発表日 2016年03月12日
  • 並列分散軽量プログラミング言語に適したブレークポイント手法
    工藤朋哉; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第77回全国大会講演論文集, 国内会議
    発表日 2015年03月19日
  • オフラインWebアプリケーションにおける事前データ取得の半自動化
    磯谷俊明; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第77回全国大会講演論文集, 国内会議
    発表日 2015年03月19日
  • 仮想メソッド呼出しを用いることによるプログラムの難読化のオーバヘッド削減
    石田峰文; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第76回全国大会講演論文集
    発表日 2014年03月13日
  • 実行時情報を活用した第一級継続のオーバーヘッド削減手法
    片桐国建; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第76回全国大会講演論文集
    発表日 2014年03月11日
  • JavaScriptにおける動的情報流解析のソースコード変換による実装
    佐藤寛之; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第75回全国大会講演論文集,情報処理学会第75回全国大会
    発表日 2013年03月
  • プログラム変換器によるメモ化の適用範囲拡張
    康 娜丹; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会,情報処理学会 第74回全国大会
    発表日 2012年03月
  • 遅延スイープ法における局所性の改善
    金野 千顕; 小宮 常康
    口頭発表(一般), 日本語, 日本ソフトウェア科学会,第14回プログラミングおよびプログラミング言語ワークショップ (PPL2012)
    発表日 2012年03月
  • イベント駆動型プログラミングのためのストリームを導入したJavaScript拡張言語の設計
    雪本 修一; 小宮 常康
    口頭発表(一般), 日本語, 日本ソフトウェア科学会,第14回プログラミングおよびプログラミング言語ワークショップ (PPL2012)
    発表日 2012年03月
  • 例外処理を用いた継続導入におけるオーバーヘッドの軽減
    片桐 国建; 小宮 常康
    口頭発表(一般), 日本語, 日本ソフトウェア科学会,第14回プログラミングおよびプログラミング言語ワークショップ(PPL2012)
    発表日 2012年03月
  • Webブラウザのしくみ
    小宮常康
    公開講演,セミナー,チュートリアル,講習,講義等, ちょうふ市内・近隣大学等公開講座
    発表日 2011年09月06日
  • サーバ・クライアント処理の動的分割・再配置機能を備えたWebアプリケーション用言語
    石橋 崇; 小宮常康; 多田好克
    口頭発表(一般), 日本語, 情報処理学会論文誌:プログラミング,情報処理学会第83回プログラミング研究発表会
    発表日 2011年04月
  • データの更新を漸次的に行う動的ソフトウェア更新機構
    荻山温夫; 小宮常康; 佐藤 喬; 多田好克
    口頭発表(一般), 日本語, 情報処理学会第73回全国大会講演論文集,情報処理学会第73回全国大会
    発表日 2011年03月
  • ページ遷移を考慮したWebアプリケーション記述言語の設計と実装
    三島 航; 小宮常康; 佐藤 喬; 多田好克
    口頭発表(一般), 日本語, 情報処理学会創立50周年記念(第72回)全国大会
    発表日 2010年03月
  • Webアプリケーションにおけるサーバ・クライアント処理の分割支援
    石橋 崇; 小宮常康; 佐藤 喬; 多田好克
    口頭発表(一般), 日本語, 第12回プログラミングおよびプログラミング言語ワークショップ(PPL2010)
    発表日 2010年03月
  • L-closureを用いた真に末尾再帰的なSchemeインタプリタの実装
    小島啓史; 八杉昌宏; 小宮常康; 平石 拓; 馬谷誠二; 湯淺太一
    口頭発表(一般), 日本語, 第12回プログラミングおよびプログラミング言語ワークショップ(PPL2010)
    発表日 2010年03月
  • 継続の共有化による継続ベースWebサーバのメモリ使用量削減
    新宮澄夫; 小宮常康; 佐藤 喬; 多田好克
    口頭発表(一般), 日本語, 情報処理学会第71回全国大会講演論文集,情報処理学会第71回全国大会
    発表日 2009年03月
  • Webアプリケーションのための動的適応可能な処理分担機構の設計と実装
    山之井啓泰; 石橋 崇; 佐藤 喬; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第71回全国大会講演論文集,情報処理学会第71回全国大会
    発表日 2009年03月
  • Real-time Stack Garbage Collection
    Tsuneyasu KOMIYA; Takashi ISHINAKA
    シンポジウム・ワークショップパネル(公募), 英語, Workshop on Software Science and Technology in China and Japan (WSST/CJ 2008), 中国桂林
    発表日 2008年09月
  • JavaScript/MC^2の設計と実装
    石橋崇; 小宮常康; 廣津登志夫
    シンポジウム・ワークショップパネル(公募), 日本語, 先進的計算基盤システムシンポジウム(SACSIS 2008), 情報処理学会, 筑波
    発表日 2008年06月
  • Web アプリケーションにおける JavaScript 計算の移送機構
    石橋 崇; 小宮常康; 廣津登志夫
    口頭発表(一般), 日本語, 情報処理学会第70回全国大会講演論文集
    発表日 2008年03月
  • 情報化社会の舞台裏〜プログラムの動く仕組み〜
    小宮常康
    公開講演,セミナー,チュートリアル,講習,講義等, 平成19年度市内・近隣大学等公開講座
    発表日 2007年11月06日
  • CPSを用いた実行方式におけるスタックごみ集めの実時間化手法
    石中 貴; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会,第69回情報処理学会全国大会
    発表日 2007年03月
  • スタックの直接操作を必要としない一級継続の実装
    川田大蔵; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会論文誌:プログラミング
    発表日 2006年03月
  • 細粒度マルチスレッド言語における例外処理の効率良い実装
    庄林宏和; 馬谷誠二; 八杉昌宏; 小宮常康; 湯淺太一
    口頭発表(一般), 日本語, 情報処理学会論文誌:プログラミング
    発表日 2004年
  • 実時間処理に適したメモリ管理を行うLisp処理系の設計と実装
    森住大樹; 小宮常康; 八杉昌宏; 湯淺太一
    口頭発表(一般), 日本語, 情報処理学会論文誌:プログラミング
    発表日 2004年
  • アプリケーションの定常動作に基づく複数フリーリストの初期メモリ量設定方式
    渡邊宣寿; 小宮常康; 八杉昌宏; 湯淺太一
    シンポジウム・ワークショップパネル(公募), 日本語, 第一回ディペンダブルソフトウェアワークショップ(DSW04)
    発表日 2004年
  • 組み込みシステムにおける複数のフリーリストに割り振るメモリ量の最適化
    渡邊宣寿; 小宮常康; 八杉昌宏; 湯淺太一
    口頭発表(一般), 日本語, 情報処理学会論文誌:プログラミング
    発表日 2004年
  • Lazy Stack Copying and Stack Copy Sharing for Efficient Implementation of Continuations
    Ugawa, T; Minagawa, N; Komiya, T; Yasugi, M; Yuasa, T
    シンポジウム・ワークショップパネル(公募), 英語, The First Symposium on Programming Languages and Systems
    発表日 2003年
  • Pursuing Laziness for Efficient Implementation of Modern Multithreaded Languages
    Umatani, S; Yasugi, M; Komiya, T; Yuasa, T
    シンポジウム・ワークショップパネル(公募), 英語, The fifth International Symposium on High Performance Computing
    発表日 2003年
  • 共有メモリプログラミングのための拡張C言語
    高田潤; 八杉昌宏; 小宮常康; 湯淺太一
    口頭発表(一般), 日本語, 情報処理学会論文誌:プログラミング
    発表日 2003年
  • メモリ上の配置を意識する並列処理向き高水準機械語の設計と実装
    渡邊誠也; 横山大作; 近山隆; 小宮常康; 湯淺太一
    口頭発表(一般), 日本語, 日本ソフトウェア科学会第20回記念大会論文集
    発表日 2003年
  • 拡張と変形に適したS式ベースC言語の設計と実装
    平石拓; 八杉昌宏; 小宮常康; 湯淺太一
    口頭発表(一般), 日本語, 日本ソフトウェア科学会第20回記念大会論文集
    発表日 2003年
  • リターンバリアを用いた並列実時間ごみ集めの実装
    Setiadi Rachmat; 小宮常康; 八杉昌宏; 湯淺太一
    口頭発表(一般), 日本語, 日本ソフトウェア科学会第19回大会論文集
    発表日 2002年
  • 局所性を高める階層的コピーGC方式
    伊藤智一; 八杉昌宏; 小宮常康; 湯淺太一
    口頭発表(一般), 日本語, 日本ソフトウェア科学会第19回大会論文集
    発表日 2002年
  • スタックのコピーを遅延させる継続の実装方式
    鵜川始陽; 小宮常康; 八杉昌宏; 湯淺太一
    口頭発表(一般), 日本語, 日本ソフトウェア科学会第19回大会論文集
    発表日 2002年
  • 入れ子関数を利用した動的負荷分散
    八杉昌宏; 田畑悠介; 小宮常康; 湯淺太一
    口頭発表(一般), 日本語, 情報処理学会論文誌:プログラミング
    発表日 2002年
  • 投機的実行用の条件付 future 構文とその実装
    Setiadi Rachmat; 小宮常康; 湯淺太一
    シンポジウム・ワークショップパネル(公募), 日本語, 第3回プログラミングおよびプログラミング言語ワークショップ
    発表日 2001年
  • SchemeにおけるEvaluation Strategy の設計と実装
    西村祥治; 湯淺太一; 八杉昌宏; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会論文誌:プログラミング
    発表日 2001年
  • 共有メモリ関連命令を生成可能な実装用言語の設計
    八杉昌宏; 田畑悠介; 小宮常康; 湯淺太一
    口頭発表(一般), 日本語, 情報処理学会論文誌:プログラミング
    発表日 2001年
  • プログラムの部分移送に基づく遠隔実行機構とその知的インターフェースへの応用
    倉林 則之; 湯淺太一; 小宮常康
    シンポジウム・ワークショップパネル(公募), 日本語, Japan Lisp User Group Meeting
    発表日 2000年
  • プログラムの部分移送に基づく遠隔実行機構とその知的インタフェースへの応用
    倉林則之; 湯淺太一; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会論文誌:プログラミング
    発表日 2000年
  • 少量のスタックで大部分を深さ優先順にコピーするゴミ集め方式
    八杉昌宏; 伊藤智一; 小宮常康; 湯淺太一
    シンポジウム・ワークショップパネル(公募), 日本語, 第3回プログラミングおよび応用のシステムに関するワークショップ(SPA2000)
    発表日 2000年
  • マルチコンテキスト管理をサポートする実装用言語
    八杉昌宏; 馬谷誠二; 小宮常康; 湯淺太一
    口頭発表(一般), 日本語, 情報処理学会論文誌:プログラミング
    発表日 2000年
  • 並列Schemeにおける即時タスク生成法と遅延タスク生成法の融合
    窪田貴志; 湯淺太一; 八杉昌宏; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第59回(平成11年後期)全国大会
    発表日 1999年
  • ISLISPコンパイラの実装
    西村祥治; 湯淺太一; 八杉昌宏; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第59回(平成11年後期)全国大会
    発表日 1999年
  • 並列言語OPAにおける一貫性制御に対応した差分プログラミング
    馬谷誠二; 湯淺太一; 八杉昌宏; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会第59回(平成11年後期)全国大会
    発表日 1999年
  • データ並列C言語NCXの実装
    河内隆仁; 渡邊誠也; 小宮常康; 湯淺太一
    口頭発表(一般), 日本語, 情報処理学会第55回(平成9年度)全国大会
    発表日 1997年
  • Java上のScheme処理系「ぶぶ」の実装
    山中政宣; 小宮常康; 湯淺太一
    口頭発表(一般), 日本語, 情報処理学会第55回(平成9年度)全国大会
    発表日 1997年
  • Javaクラスライブラリに対する言語間インタフェース
    木俣功; 小宮常康; 湯淺太一
    口頭発表(一般), 日本語, 情報処理学会第55回(平成9年度)全国大会
    発表日 1997年
  • call/ccからcall/iocへの自動変換
    大谷友佳子; 湯淺太一; 小宮常康
    口頭発表(一般), 日本語, 情報処理学会研究会報告 96-PRO-9
    発表日 1996年
  • Indefinite One-time Continuation
    小宮常康; 湯淺太一
    口頭発表(一般), 日本語, 情報処理学会研究会報告 95-PRO-4
    発表日 1995年
  • future ベースの並列 Scheme における継続の拡張
    小宮常康; 湯淺太一
    口頭発表(一般), 日本語, 情報処理学会研究会報告 93-SYM-67
    発表日 1993年

担当経験のある科目_授業

  • 基盤ソフトウェア特論
    電気通信大学
  • 情報数理工学実験第二A,第二B
    電気通信大学
  • 基礎プログラミングおよび演習
    電気通信大学
  • 計算機通論
    電気通信大学

所属学協会

  • 情報処理学会
  • 日本ソフトウェア科学会

共同研究・競争的資金等の研究課題

  • 安全な計算状態操作機構の実用化
    八杉 昌宏; 平石 拓; 小宮 常康
    日本学術振興会, 科学研究費助成事業, 基盤研究(B), 安全な計算状態操作機構L-closureにより、平常時の高い実行性能の元で、計算中のソフトウェアの動的再構成・保全の機能を持つ言語処理系が実装可能となる。本研究では、真の末尾再帰の新しい高効率実装において提案機構を応用した。また、提案機構を応用した負荷分散により並列システムにおける資源を有効活用する手法の提案と評価を行った。実装面からは、L-closureの償却呼出しコストを低減した。コンパイラ実装においてはx86-64をサポートし、短時間しか実行されない関数におけるレジスタ割り当ての効果を評価した。, 21300008
    研究期間 2009年04月01日 - 2014年03月31日
  • 計算連続体に基づくソフトウェア実現法
    湯淺 太一; 近山 隆; 上田 和紀; 森 眞一郎; 八杉 昌宏; 小宮 常康; 五島 正裕
    日本学術振興会, 科学研究費助成事業, 京都大学, 特定領域研究, 本研究では,計算機システムが備えている広域性と局所性の両方に対応できる適切な計算量モデルとソフトウェアシステムの構築を可能にするために,計算連続体と呼ぶ概念に基づいて,さまざまな観点から,計算に関する既存概念の再検討,統合,および発展を図ってきた.主要な研究成果は次のとおりである. 1.計算連続体モデルによる計算量解析 本プロジェクトでは,単一計算機内のメモリ階層から計算機間のネットワーク遅延の差異までを,統一的に,かつ簡潔に表現できる計算量モデルとして「計算連続体モデル」を提案し,このモデルに基づいた計算量解析結果が,従来方法よりも現実の計算に近いものであることを示した.また,複雑な並列アルゴリズムに対しても,その振舞いが把握できるように,計算連続体モデルの仮想機械を設計し,実装した. 2.並行言語モデルLMNtalに関する研究 また本プロジェクトでは,階層グラフの書換えに基づくスケーラブルな並列言語モデルとしてLMNtalを設計し,このモデルの改良を進めてきた.このモデル上でプロセス構造の解析技術を確立するとともに,実用に供するプログラミング言語としての実装を行った.階層グラフ書換えは,多重集合書換え計算モデルや自己組織化に基づく計算モデルなどを特別な場合として含んでおり,既存の多くの計算モデルの架け橋となることが期待できる. 3.局所性を重視した処理系実装方式の研究 プログラミング言語の実装において,特に局所性を重視することによって,実行性能が飛躍的に向上することを実証した.その例として,階層的グループ化に基づくコピー型ごみ集めによる局所性改善をあげることができる.これは,スタック溢れに備えたキューを併用することにより,少量のスタックで大部分を深さ優先順にコピーするごみ集め方式のさらなる改良の提案であり,仮想記憶の局所性だけでなく,キャッシュの局所性も考慮した実装となっており,実際の計算機上で極めて効率の良い処理系を実現できる技術である., 13224050
    研究期間 2001年 - 2005年
  • 継続機能の最適化に関する研究
    湯淺 太一; 八杉 昌宏; 小宮 常康
    日本学術振興会, 科学研究費助成事業, 京都大学, 基盤研究(C), Lisp 言語の一方言である Scheme がもつ継続機能は強力な制御機能である反面,その処理が非常に重いという欠点がある.一方,本研究代表者の研究グループでは,これまでにIndefinite One-time Continuation(以下,IOCと略す)と呼ばれる新しい継続機能を提案・実現している.IOCとは呼出しを一回に限るがいつどこからでも呼び出すことができる継続であり,従来の継続より大幅に実行効率がよい. 継続がプログラムの実行中に一回しか呼び出されないことがわかれば,継続を生成する関数call/ccをIOCを生成する関数call/iocで置き換えることによって,プログラムの性能を大幅に向上させることができる.しかし,ある継続が一回しか呼び出されないかどうかを判定することは一般に難しい. 本研究では,一種のアブストラクト・インタプリテーションによってプログラム全体の解析を行い,call/iocで置き換えることができるcall/ccを自動検出するためのアルゴリズムを開発した.また,このアルゴリズムに基づき,置き換え可能なcall/ccを自動的にcall/iocに変換するシステムを実装し,継続を用いたいくつかの実際的なSchemeプログラムを解析した.その結果,このアルゴリズムはプログラム中の静的な情報だけを用いるので,原理的にcall/iocで置き換えることができる call/cc をすべて検出できるとは限らないが,call/ccを用いた実際的なプログラムにおいては,置き換え可能なほとんどの call/cc を検出できることがわかった., 09680333
    研究期間 1997年 - 1998年
  • データ並列モデルに基づいたベクタ・プロセッサの有効利用に関する研究
    湯浅 太一; 小宮 常康; 梅村 恭司; 貴島 寿郎
    日本学術振興会, 科学研究費助成事業, 基盤研究(B), データ並列モデルの実用化およびそのベクタ・プロセッサへの応用に向けて,さまざまな角度から基礎研究を行なった.研究項目は以下の通りである. 1.データ並列モデルに基づいた並列処理システム データ並列モデルに基づいて記述されたプログラムを高速に実行する具体的な超並列計算機システムを研究開発した.ハードウェアとして,1024台のプロセッサを持ったSIMD方式の超並列計算機SM-1を開発した.ソフトウェアとしては,「並C」とよばれる拡張C言語や,TUPLEとよばれる拡張Common Lisp言語を設計し,それらの言語処理系およびデバッグシステムを開発した. 2.データ並列モデルに基づいた応用 データ並列モデルによるプログラムの記述性と応用分野の開拓を目的として,いくつかの高度な計算機応用プログラムに対して,データ並列モデルに基づいた新しいアルゴリズムを提案することによって,実行時間を大幅に改良する研究を行なった.提案したアルゴリズムは,実際に上記「並C」および下記のNCXで記述し,上記SM-1において実行性能を計測し,その有効性を検証した. 3.データ並列モデルに基づいたプログラミング言語NCX データ並列モデルに基づいた並列計算プログラミングをより一般的なものとするために,計算機アーキテクチャに依存しない拡張C言語NCXを新しく設計し,異なる計算機アーキテクチャを持ついくつかの並列計算機に対するコンパイラおよびデバッグシステムを研究開発した.コンパイラの開発コストを低減するための方法として,プリプロセッサによるコンパイラ共通の前処理方式を開発し,この方式をすべてのコンパイラに適用した. 4.データ並列言語のベクトルプロセッサ用コード生成 データ並列モデルに基づくプログラムをベクタ・プロセッサ上で実行するための処理方式を開発した。開発した処理方式は,プロセッサに配置されたデータをベクタとみなすことによって,データ並列プログラムをベクタ・プロセッサ上で高速に実行するものである.この方式に基づいたNCXコンパイラを試験的に開発した.このコンパイラを使用し,具体的ないくつかの応用プログラムをマイクロVP上で試験実行し,開発した処理方式の有効性を検証した.その結果,優秀なプログラマがアセンブラでコーディングしたプログラムに匹敵する性能が得られることがわかった., 07458059
    研究期間 1995年 - 1996年