Mercurial > hg > Papers > 2012 > nobu-thesis
changeset 6:b6584cc0f737 draft
modify resume.tex
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 21 Feb 2012 17:54:52 +0900 |
parents | df67dc9e807d |
children | 1f5bfcd8b685 |
files | paper/resume.tex |
diffstat | 1 files changed, 4 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/resume.tex Tue Feb 21 17:41:02 2012 +0900 +++ b/paper/resume.tex Tue Feb 21 17:54:52 2012 +0900 @@ -30,28 +30,17 @@ \thispagestyle{fancy} \section{研究背景と目的} -当研究室ではプログラムをコードセグメント (Code Segment) 単位で記述するプログラミング言語 Continuation based C (以下CbC) を開発している. +当研究室ではプログラムをコードセグメント (Code Segment) 単位で記述するプログラミング言語 Continuation based C (以下 CbC) を提案している. コードセグメントは並列実行の単位として使うことができ, プログラムの正しさを示す単位としても使用することができる.これにより, Many Core での並列実行を高い性能と高い信頼性で実現することができると考えている. GCC をベースとした CbC のコンパイラ (以下 CbC-GCC)は, GCC のアップデートに合わせて変更する必要がある. 本研究では, GCC-4.5 をベースとしていた CbC-GCC を GCC-4.6 へのアップデートを行い, Intel64 に対応するとともに, CbC の拡張を行う. -%\subsection{研究内容} -%今回 GCC-4.5 をベースとしていた CbC-GCC を GCC-4.6 へとアップデートを行った. - -%現在の GCC ベースの CbC (以下CbC-GCC) コンパイラには幾つかのバグが見られる. -%特に Code Segmtne への処理移動が jmp でなく call で行われる部分あげられる. -%現在 CbC を実装した GCC コンパイラのバージョンは,初めに実装が行われた GCC-4.2 よりバージョンを上げた GCC-4.5 となる. -%本研究では,CbC-GCC を GCC-4.6 へのバージョンアップすると共に実装を突き詰めることを目的とする. -%また,GCC に変わるコンパイラとして注目されてきている LLVM への CbC の実装の考察も行う. \section{Continuation basede C (CbC)} -CbC のプログラムはコードセグメント毎に記述され, コード間をgoto(軽量継続)により処理を移る. -構文は C と同じであるが, ループ制御や関数コールが取り除かれる. - -\subsection{コードセグメント} -コードセグメントの記述は C の関数の構文と同じで, 型に``\_\_code'' を使うことで宣言できる. -コードセグメントへの移動は``goto'' の後にコードセグメント名と引数を並べて記述することで行える. +Continuation based C (以下 CbC) は状態遷移記述をベースとしたプログラミング言語である. +構文は C と同じであるが, 継続(goto) やコードセグメントの導入によりループ制御や関数コールが取り除かれる. +CbC のプログラムはコードセグメントから次のコードセグメントへ jmp 命令(goto)により処理を移っていく. 図\ref{fig:cs}はコードセグメント間の処理の流れを表している. \begin{figure}[htpb] @@ -62,14 +51,6 @@ \label{fig:cs} \end{figure} -\subsection{軽量継続(light-weight continuation)} -コードセグメントは C の関数と違って返り値を持たず, 処理が終われば次のコードセグメントへと処理を移る. -C において関数呼び出しを繰り返し行う場合, 呼び出された関数の引数の数だけスタックに値が積まれていく. -だが, 返り値を持たないコードセグメントではスタックに値を積んでいく必要な無く, スタックは変更されない. -この継続は軽量継続と呼ばれ CbC における重要な機能になる. -%軽量継続により並列化, ループ制御, 関数コールとスタックの操作を意識した最適化がソースコードレベルで行えるようになる. - - \section{GCC-4.6 への実装} GCCでの軽量継続を Tail Call Ellimination (末尾除去)を強制することで実装する.