view paper/introduciton.tex @ 17:3afb4bfe1100

fix
author Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
date Mon, 15 Feb 2016 07:30:44 +0900
parents 2fd0f505cc68
children
line wrap: on
line source

\chapter{研究目的}
プログラムを記述する際, 本来行いたい処理の他にも記述しなけらばならない処理が存在する. malloc 等によるメモリの管理, スレッドの待ち合わせやネットワークの管理, エラーハンドリング等がこれにあたる.
これらの計算は meta computation と呼ばれる.

meta computation を通常の計算から切り離して記述するためには処理を細かく分割する必要があるが, 関数やクラス等の単位を容易に分割することは出来ない.

そこで当研究室では meta computation を柔軟に記述するためのプログラミング言語の単位として code segment, data segment という単位を提案している. 
code segment, data segment はそれぞれ処理の単位, データの単位である. code segment は関数に比べ細かく分割されているので meta computation をより柔軟に記述することが出来る.
code segment, data segment にはそれぞれメタレベルの単位である meta code segment, meta data segment が存在し, それらを用いて meta computation を実現する.

これらの単位を用いるものには並列プログラミングフレームワーク Cerium\cite{cerium}, 分散ネットワークフレームワーク Alice\cite{akamine:2011a}, 並列フレームワーク Gears OS\cite{gears}等が存在する.

プログラミング言語 Continuation based C (CbC)\cite{kono:2000} は処理の単位に code segment を用いるプログラミング言語であり, Gears OS は CbC で記述されている.

%また, CbC は C の関数と併せて使用することが出来る. ただし code segment と C の関数の間を自由に行き来するためには環境付き継続という機能を用いる必要がある.

CbC のコンパイラは Micro-c をベースにしたものと GCC をベースにしたもの\cite{gcc}に加え, 2014年の研究で LLVM, clang をベースにしたもの\cite{cbclang}が存在する. 本研究では, LLVM clang をベースとした CbC コンパイラのさらなる最適化, 機能の追加, Gears OS の記述をサポートする機能の設計を行った.

また, C の関数と code segment の間を自由に行き来するための機能である環境付き継続の速度を大幅に向上させることにも成功した.

\section{論文の構成}

本論文では, はじめに Continuation based C の概要を CbC のコード例とともに説明する.
第 3 章では LLVM と clang の基本的な構造, 中間表現, 最適化の一つである tail call elimination について説明する.
第 4 章では LLVM と clang 上に CbC コンパイラを実装する方法について述べる.
第 5 章では C の関数と code segment を行き来する環境付き継続の実装について, Micro-C, GCC, LLVM と clang それぞれの方法を紹介する.
第 6 章では Gears OS の記述のための構文について述べる. Gears OS では code segment の他に data segment, meta code segment, meta data segment を用いる.
第 7 章では今回の研究で改良した CbC コンパイラ性能を評価する. 評価は各コンパイラとの環境付き継続の速度の比較と C と Scheme との実行速度の比較にて行う.

\pagenumbering{arabic}