annotate 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
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{序論}
1
aa09c34b90d3 add quicksort_for_pcc
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
2 \label{chp:intro}
0
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
7
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
18 それにともないハードウェアは驚異的な進歩を遂げ、近年はCPUのマルチコア
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
19 化が進み、また新たな段階を築こうとしている。
0
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 に取り入られている。
7
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
27 しかしその反面、Javaではガベージコレクタや実行時コンパイルにより、余分
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
28 な処理が必要となる。そのため軽量かつ高速な応答が要求される Real-time処
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
29 理や組込み用途には適さない。
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
30 %しかしその反面、Cなどの低レベルな言語による記述に比べてこれらの技術は
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
31 %余分な条件判断やメモリアクセスを増やしてしまう。そのため軽量かつ高速な
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
32 %応答が要求される Real-time処理や組み込み用途には適さない。
0
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
7
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
34 %またCellに見られるような複雑なアーキテクチャをもつマシンではプログラ
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
35 %ミング自体も複雑になる。Cで記述されたプログラムからアーキテクチャに直
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
36 %接関わる命令 (DMAやシグナル)を使用するのでは、高級言語の設計思想と
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
37 %矛盾するともみられる。
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
38 またPlayStation3にはCell Broadband Engineという特殊なCPUが採用され注目
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
39 されている。しかしこの様な複雑なアーキテクチャを持つマシンではプログラ
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
40 ミング自体も複雑になる。Cで記述されたプログラムからアーキテクチャに直
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
41 接関わる命令 (DMAやシグナル)を使用するのでは、高級言語の設計思想と矛
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
42 盾するともみられる。
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
43
0
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 状態数が膨大になり、実用化された例は少ない。しかしマルチコアの台頭によ
7
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
50 り並列プログラミングの必要性も高まっており、今後はより検証の必要性が増
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
51 すと考えられる。
0
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
7
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
53 ハードウェアの進化や数学的検証にソフトウェアが対応するためには、これま
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
54 でとは違う新たな視点を持ったプログラミング言語が望ましい。
0
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 しかし既存のソフトウェアやシステムは膨大な数に上り、これらを新しい言語
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 に書き換えるのは無理がある。新しい言語は古い言語との互換性が必須である。
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58
7
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
59 我々はこれらの問題に取り組むため、Continuation based C(以下CbC)とい
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
60 う言語を提案している。Continuationとはプログラムの次の実行処理を表現す
8
4b2af58b0302 the version for probation.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
61 る制御構造で、継続とも呼ばれている。CbCではCからサブルーチンや
7
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
62 ループ制御を除き、代わりに継続をベースとした実行制御を行う。この特徴か
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
63 ら、CbCはCの下位言語と考ることができ、ハードウェアの記述や記述したプロ
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
64 グラムの検証などを目的として設計されている。
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
65 %我々はこれらの問題に取り組むため、Continuation based Cという言語を提案
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
66 %している。Continuation based C(以下CbC)はCからサブルーチンやループ構
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
67 %造を除いたCの下位言語であり、ハードウェアの記述、また記述したプログラ
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
68 %ムの検証などを目的としている。
0
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69
7
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
70 %これまでCbCのコンパイルには、micro-cをベースとしたコンパイラとGNUコン
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
71 %パイラコレクション(以下GCC)をベースとしたコンパイラが用いられてきた。
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
72 %しかしGCCにはバグや当初の期待ほど速度がでないという問題があり、研究段
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
73 %階であるCbC言語自体にも仕様の変更などがあった。
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
74 これまでCbCのコンパイルには、micro-cをベースとしたコンパイラが用いられ
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
75 てきた。加えて2008年の研究においてGCCをベースとしたCbCコンパイラが開発
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
76 され、継続処理の実装が行われた。
0
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77
7
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
78 %TODO: taskmanager
8
4b2af58b0302 the version for probation.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
79 本論文ではGCCベースのコンパイラにおいて残るCbCの機能の実装を行い、実
4b2af58b0302 the version for probation.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
80 用的な CbCプログラムの動作を目指す。
7
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
81 %本論文ではGCCベースのCbCコンパイラの問題の洗い出しとその問題の改善を行
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
82 %い、実用レベルのCbCプログラムの動作を目指す。
0
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83
7
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
84 %また、CbCを用いたプログラムの例として現在開発中のCbCベースTaskManager
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
85 %の紹介を行う。
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
86 また、実装したGCCベースコンパイラの評価としてmicro-cベースコンパイラと
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
87 の速度比較を行い、GCCの開発リリースに合わせるためのメンテナンス手法に
8ef81ff8cb52 emended.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 5
diff changeset
88 ついても考察する。
0
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
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 \section{論文構成}
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
95
5
dfb89e32eea1 added gcc.tex, conclusion.tex
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
96 次章以降、本論文では本研究での成果を報告する。
dfb89e32eea1 added gcc.tex, conclusion.tex
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
97
dfb89e32eea1 added gcc.tex, conclusion.tex
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
98 \ref{chp:cbc}章ではまずCbCについてその言語仕様から説明し、また現時点で
dfb89e32eea1 added gcc.tex, conclusion.tex
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
99 のCbCコンパイラの問題点を挙げる。
0
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
100
5
dfb89e32eea1 added gcc.tex, conclusion.tex
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
101 \ref{chp:gcc}章では本研究での移植対象であるGNU コンパイラコレクション
dfb89e32eea1 added gcc.tex, conclusion.tex
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
102 の構造について、簡単に説明する。
0
e9ecd5b5f29a first commit.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
103
5
dfb89e32eea1 added gcc.tex, conclusion.tex
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
104 \ref{chp:impl}章は実際の実装方法、改善の手法を説明し、これらの結果の評
8
4b2af58b0302 the version for probation.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
105 価を\ref{chp:eval}章で行う。
5
dfb89e32eea1 added gcc.tex, conclusion.tex
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
106
8
4b2af58b0302 the version for probation.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
107 最後に、本研究での成果と今後の課題を\ref{chp:conc}章で述べ、本論文のま
4b2af58b0302 the version for probation.
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 7
diff changeset
108 とめとする。
5
dfb89e32eea1 added gcc.tex, conclusion.tex
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents: 4
diff changeset
109