diff paper/introduction.tex @ 10:3d9addf62d0b

organized repository.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Tue, 16 Feb 2010 14:35:36 +0900
parents introduction.tex@4b2af58b0302
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/paper/introduction.tex	Tue Feb 16 14:35:36 2010 +0900
@@ -0,0 +1,109 @@
+\chapter{序論}
+\label{chp:intro}
+\pagenumbering{arabic}
+
+%% 問題提起
+%% 解決案の提示
+%% 研究目標
+%% 本論文の各章の概要
+
+
+\section{背景と目的}
+
+
+企業システムの多様化、IT導入の加速により、ソフトウェアは大規模化・複雑
+化する傾向にある。また家電製品のデジタル化も進み、組み込みシステムの需
+要も増大している。
+
+それにともないハードウェアは驚異的な進歩を遂げ、近年はCPUのマルチコア
+化が進み、また新たな段階を築こうとしている。
+
+ハードウェアの進歩に対し、ソフトウェアの開発に用いられる記述言語は、オ
+ブジェクト指向プログラミングの発明・導入やデザインパターンに見られる技
+術の集約などが行われ、注目されてきた。
+%しかしながら90年代以降、言語その物に対する大きな変化は見られない。
+オブジェクト指向を主としたJavaはその有用性が認められ多くのシステム開発
+に取り入られている。
+しかしその反面、Javaではガベージコレクタや実行時コンパイルにより、余分
+な処理が必要となる。そのため軽量かつ高速な応答が要求される Real-time処
+理や組込み用途には適さない。
+%しかしその反面、Cなどの低レベルな言語による記述に比べてこれらの技術は
+%余分な条件判断やメモリアクセスを増やしてしまう。そのため軽量かつ高速な
+%応答が要求される Real-time処理や組み込み用途には適さない。
+
+%またCellに見られるような複雑なアーキテクチャをもつマシンではプログラ
+%ミング自体も複雑になる。Cで記述されたプログラムからアーキテクチャに直
+%接関わる命令 (DMAやシグナル)を使用するのでは、高級言語の設計思想と
+%矛盾するともみられる。
+またPlayStation3にはCell Broadband Engineという特殊なCPUが採用され注目
+されている。しかしこの様な複雑なアーキテクチャを持つマシンではプログラ
+ミング自体も複雑になる。Cで記述されたプログラムからアーキテクチャに直
+接関わる命令 (DMAやシグナル)を使用するのでは、高級言語の設計思想と矛
+盾するともみられる。
+
+
+大規模システムにおけるバグの存在も深刻な問題である。
+テストファーストな開発スタイルなどで工学的なアプローチからバグの抑制が
+試みられているが、完全な排除は難しい。数学的なアプローチから無矛盾を証
+明する技術の研究も進んでいるが、現在のスタックベースのプログラミングは
+状態数が膨大になり、実用化された例は少ない。しかしマルチコアの台頭によ
+り並列プログラミングの必要性も高まっており、今後はより検証の必要性が増
+すと考えられる。
+
+ハードウェアの進化や数学的検証にソフトウェアが対応するためには、これま
+でとは違う新たな視点を持ったプログラミング言語が望ましい。
+しかし既存のソフトウェアやシステムは膨大な数に上り、これらを新しい言語
+に書き換えるのは無理がある。新しい言語は古い言語との互換性が必須である。
+
+
+我々はこれらの問題に取り組むため、Continuation based C(以下CbC)とい
+う言語を提案している。Continuationとはプログラムの次の実行処理を表現す
+る制御構造で、継続とも呼ばれている。CbCではCからサブルーチンや
+ループ制御を除き、代わりに継続をベースとした実行制御を行う。この特徴か
+ら、CbCはCの下位言語と考ることができ、ハードウェアの記述や記述したプロ
+グラムの検証などを目的として設計されている。
+%我々はこれらの問題に取り組むため、Continuation based Cという言語を提案
+%している。Continuation based C(以下CbC)はCからサブルーチンやループ構
+%造を除いたCの下位言語であり、ハードウェアの記述、また記述したプログラ
+%ムの検証などを目的としている。
+
+%これまでCbCのコンパイルには、micro-cをベースとしたコンパイラとGNUコン
+%パイラコレクション(以下GCC)をベースとしたコンパイラが用いられてきた。
+%しかしGCCにはバグや当初の期待ほど速度がでないという問題があり、研究段
+%階であるCbC言語自体にも仕様の変更などがあった。
+これまでCbCのコンパイルには、micro-cをベースとしたコンパイラが用いられ
+てきた。加えて2008年の研究においてGCCをベースとしたCbCコンパイラが開発
+され、継続処理の実装が行われた。
+
+%TODO: taskmanager
+本論文ではGCCベースのコンパイラにおいて残るCbCの機能の実装を行い、実
+用的な CbCプログラムの動作を目指す。
+%本論文ではGCCベースのCbCコンパイラの問題の洗い出しとその問題の改善を行
+%い、実用レベルのCbCプログラムの動作を目指す。
+
+%また、CbCを用いたプログラムの例として現在開発中のCbCベースTaskManager 
+%の紹介を行う。
+また、実装したGCCベースコンパイラの評価としてmicro-cベースコンパイラと
+の速度比較を行い、GCCの開発リリースに合わせるためのメンテナンス手法に
+ついても考察する。
+
+
+
+
+
+\section{論文構成}
+
+次章以降、本論文では本研究での成果を報告する。
+
+\ref{chp:cbc}章ではまずCbCについてその言語仕様から説明し、また現時点で
+のCbCコンパイラの問題点を挙げる。
+
+\ref{chp:gcc}章では本研究での移植対象であるGNU コンパイラコレクション
+の構造について、簡単に説明する。
+
+\ref{chp:impl}章は実際の実装方法、改善の手法を説明し、これらの結果の評
+価を\ref{chp:eval}章で行う。
+
+最後に、本研究での成果と今後の課題を\ref{chp:conc}章で述べ、本論文のま
+とめとする。
+