annotate purposes.tex @ 0:e9ecd5b5f29a

first commit.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Fri, 29 Jan 2010 15:45:41 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 \chapter{序論}
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 \label{chp:first}
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 \pagenumbering{arabic}
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 %% 問題提起
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 %% 解決案の提示
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 %% 研究目標
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 %% 本論文の各章の概要
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 \section{背景と目的}
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 企業システムの多様化、IT導入の加速により、ソフトウェアは大規模化・複雑
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 化する傾向にある。また家電製品のデジタル化も進み、組み込みシステムの需
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 要も増大している。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 それにともないハードウェアはムーアの法則よろしく驚異的な進歩を遂げ、近
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 年はCPUのマルチコア化が進み、また新たな段階を築こうとしている。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 ハードウェアの進歩に対し、ソフトウェアの開発に用いられる記述言語は、オ
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 ブジェクト指向プログラミングの発明・導入やデザインパターンに見られる技
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 術の集約などが行われ、注目されてきた。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 %しかしながら90年代以降、言語その物に対する大きな変化は見られない。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 オブジェクト指向を主としたJavaはその有用性が認められ多くのシステム開発
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 に取り入られている。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 しかしその反面、Cなどの低レベルな言語による記述に比べてこれらの技術は
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 余分な条件判断やメモリアクセスを増やしてしまう。そのため軽量かつ高速な
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 応答が要求される Real-time処理や組み込み用途には適さない。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 またCellに見られるような複雑なアーキテクチャをもつマシンではプログラミ
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 ング自体も複雑になる。Cで記述されたプログラムからアーキテクチャに直接
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 関わる命令 (DMAやシグナル)を使用するのでは、高級言語の設計思想と矛盾す
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 るともみられる。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 大規模システムにおけるバグの存在も深刻な問題である。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 テストファーストな開発スタイルなどで工学的なアプローチからバグの抑制が
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 試みられているが、完全な排除は難しい。数学的なアプローチから無矛盾を証
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 明する技術の研究も進んでいるが、現在のスタックベースのプログラミングは
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 状態数が膨大になり、実用化された例は少ない。しかしマルチコアの台頭によ
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 り並列プログラミングの必要性も高まっており、これからより検証の必要性が
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 増すと考えられる。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 ハードウェアの進化、数学的検証にソフトウェアが対応するためにはこれまで
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 とは違う新たな視点を持ったプログラミング言語が望ましい。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 しかし既存のソフトウェアやシステムは膨大な数に上り、これらを新しい言語
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 に書き換えるのは無理がある。新しい言語は古い言語との互換性が必須である。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 我々はこれらの問題に取り組むため、Continuation based Cという言語を提案
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 している。Continuation based C(以下CbC)はCからサブルーチンやループ構造
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 を除いたCの下位言語であり、ハードウェアの記述、また記述したプログラム
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 の検証などを目的としている。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 これまでCbCのコンパイルにはmicro-cをベースとしたコンパイラとGNUコンパ
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 イラコレクション(以下gcc)をベースとしたコンパイラが用いられてきた。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 しかしgccにはバグや当初の期待ほど速度がでないという問題があり、また研
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 究段階であるCbC言語自体にも仕様の変更などがあった。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 %しかしgccは実用的なプログラムを動かすにはまだバグが多く、当初の期待ほ
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 %ど速度もでないという問題がある。また、研究段階であるCbC言語自体にも仕
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 %様の変更などがあった。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 本論文ではGCCベースのCbCコンパイラの問題の洗い出しとその問題の改善を行
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 い、実用レベルのCbCプログラムの動作を目指す。また、CbCを用いたプログラ
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 ムの例として現在開発中のCbCベースTaskManager の紹介を行う。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 最後に実装したgccベースコンパイラの評価としてmicro-cベースコンパイラと
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 の速度比較を行い、 同じくTaskManager開発を通してのCbCによるプログラミ
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 ングの記述性についても評価・考察を行う。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 %また、CbCを用いた応用例として現在開発中のCbCベース TaskManagerを紹介
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 %し、 micro-cとの速度比較による評価を行う。さらにCbC の使用例として現
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 %在開発中のCbCによる TaskManagerを紹介し、CbCによるプログラミングの記
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 %述性についても論じる。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 %我々はこれまで、様々な視点から軽量継続を用いた言語、Continuation based
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 %Cの有用性について研究してきた。このContinuation based C(以下CbC)はCか
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 %らサブルーチンやループ構造を除いたCの下位言語であり、ハードウェアとソ
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 %フトウェアの記述、また記述したプログラムの検証を目的として本研究室が提
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 %案している言語である。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
87
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 %\section{先行研究とCbC開発の動機}
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
89
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 %\subsection{プログラムの検証}
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 %計算機科学の進歩により、ソフトウェアは大規模かつ複雑なものになっている。しかしそれに応じて、設計段階において誤りが生じる可能性も高くなってきており、設計されたシステムに誤りがないことを保証するための論理設計や検証手法及びデバッグ手法の確立が重要な課題となっている。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
92
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 %どんなプログラムでも状態と状態遷移が存在し、その全てを網羅的に探索することでデッドロックなどの望ましくない状態を検出することができる。探索にはさまざまな手法が考えられるが、プログラムを直接状態遷移として記述できればこの探索に有利となる。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 %本研究室の下地らはこの特徴を持つCbCを用いて線形時相論理による検証を提案し、その有用性を示した。\cite{bib:shimoji}
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
96
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
97
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 %\subsection{ゲームプログラミングにおけるデモンストレーション}
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 %我々は家庭用ゲーム機で動作するゲームプログラムのオープンな開発フレームワークに関する研究も行ってきた。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 %家庭用ゲーム機の多くは特殊なアーキテクチャをもち、そのためゲームプログラムには汎用性や冗長性が極めて小さく、移植が困難という問題がある。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
101
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 %その問題の解決に、ゲームプログラム全体を小規模なプログラムの集合である``デモンストレーション''に分割するという手法を本研究室の金城らが提案した。\cite{bib:kinjo},\cite{bib:chiaki}
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
103
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 %このデモンストレーション手法はプログラムを細かく分割するため、ゲーム機や組み込みなどの資源が制約された環境ではサブルーチンによるスタック操作がネックとなる。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 %そのためこの手法ではプログラム分割の実現にCbCを用いており、CからCbCへの機械的な変換方法について述べている。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
106
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
107
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 %\subsection{ハードウェア記述、ソフトウェアプログラミング}
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
109
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 %\subsection{軽量継続を用いたプログラミング}
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 %以上の研究はそれぞれ軽量継続というCbC言語の特徴を利用して進められている。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
112
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
113
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 \section{論文構成}
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 %\ref{chp:cbc}にてContinuation based Cの要求仕様と詳細について説明する。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 %\ref{chp:impl}章ではgccへの実装方法を説明する。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
117
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
118
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 次章以降、本稿は\ref{chp:cbc}章にてCbCについて説明する。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 \ref{chp:impl}章にてgccへの実装について説明、
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 \ref{chp:task}章ではCbCを用いたプログラムの実例としてTaskManagerを挙げ、
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 \ref{chp:impl}章,\ref{chp:task}の評価を\ref{chp:eval}章で行う。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 最後に\ref{chp:concl}章をもってまとめとする。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
124