view introduction.tex @ 4:30c102343b37

modify gcc. fix references.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Sat, 06 Feb 2010 18:28:43 +0900
parents d2999e94b97d
children dfb89e32eea1
line wrap: on
line source

\chapter{序論}
\label{chp:intro}
\pagenumbering{arabic}

%% 問題提起
%% 解決案の提示
%% 研究目標
%% 本論文の各章の概要


\section{背景と目的}


企業システムの多様化、IT導入の加速により、ソフトウェアは大規模化・複雑
化する傾向にある。また家電製品のデジタル化も進み、組み込みシステムの需
要も増大している。

それにともないハードウェアはムーアの法則よろしく驚異的な進歩を遂げ、近
年はCPUのマルチコア化が進み、また新たな段階を築こうとしている。

ハードウェアの進歩に対し、ソフトウェアの開発に用いられる記述言語は、オ
ブジェクト指向プログラミングの発明・導入やデザインパターンに見られる技
術の集約などが行われ、注目されてきた。
%しかしながら90年代以降、言語その物に対する大きな変化は見られない。
オブジェクト指向を主としたJavaはその有用性が認められ多くのシステム開発
に取り入られている。
しかしその反面、Cなどの低レベルな言語による記述に比べてこれらの技術は
余分な条件判断やメモリアクセスを増やしてしまう。そのため軽量かつ高速な
応答が要求される Real-time処理や組み込み用途には適さない。

またCellに見られるような複雑なアーキテクチャをもつマシンではプログラミ
ング自体も複雑になる。Cで記述されたプログラムからアーキテクチャに直接
関わる命令 (DMAやシグナル)を使用するのでは、高級言語の設計思想と矛盾す
るともみられる。

大規模システムにおけるバグの存在も深刻な問題である。
テストファーストな開発スタイルなどで工学的なアプローチからバグの抑制が
試みられているが、完全な排除は難しい。数学的なアプローチから無矛盾を証
明する技術の研究も進んでいるが、現在のスタックベースのプログラミングは
状態数が膨大になり、実用化された例は少ない。しかしマルチコアの台頭によ
り並列プログラミングの必要性も高まっており、今後より検証の必要性が増す
と考えられる。

ハードウェアの進化や数学的検証にソフトウェアが対応するためにはこれまで
とは違う新たな視点を持ったプログラミング言語が望ましい。
しかし既存のソフトウェアやシステムは膨大な数に上り、これらを新しい言語
に書き換えるのは無理がある。新しい言語は古い言語との互換性が必須である。


我々はこれらの問題に取り組むため、Continuation based Cという言語を提案
している。Continuation based C(以下CbC)はCからサブルーチンやループ構造
を除いたCの下位言語であり、ハードウェアの記述、また記述したプログラム
の検証などを目的としている。

これまでCbCのコンパイルにはmicro-cをベースとしたコンパイラとGNUコンパ
イラコレクション(以下gcc)をベースとしたコンパイラが用いられてきた。
しかしgccにはバグや当初の期待ほど速度がでないという問題があり、研究段
階であるCbC言語自体にも仕様の変更などがあった。

本論文ではGCCベースのCbCコンパイラの問題の洗い出しとその問題の改善を行
い、実用レベルのCbCプログラムの動作を目指す。また、CbCを用いたプログラ
ムの例として現在開発中のCbCベースTaskManager の紹介を行う。
最後に実装したgccベースコンパイラの評価としてmicro-cベースコンパイラと
の速度比較を行い、 同じくTaskManager開発を通してのCbCによるプログラミ
ングの記述性についても評価・考察を行う。






\section{論文構成}
%\ref{chp:cbc}にてContinuation based Cの要求仕様と詳細について説明する。
%\ref{chp:impl}章ではgccへの実装方法を説明する。

% TODO: 整理せい

次章以降、本稿は\ref{chp:cbc}章にてCbCについて説明する。
\ref{chp:impl}章にてgccへの実装について説明、
\ref{chp:task}章ではCbCを用いたプログラムの実例としてTaskManagerを挙げ、
\ref{chp:impl}章,\ref{chp:task}の評価を\ref{chp:eval}章で行う。
最後に\ref{chp:concl}章をもってまとめとする。