comparison introduction.tex @ 7:8ef81ff8cb52

emended.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Fri, 12 Feb 2010 13:10:57 +0900
parents dfb89e32eea1
children 4b2af58b0302
comparison
equal deleted inserted replaced
6:b59d31966d7d 7:8ef81ff8cb52
13 13
14 企業システムの多様化、IT導入の加速により、ソフトウェアは大規模化・複雑 14 企業システムの多様化、IT導入の加速により、ソフトウェアは大規模化・複雑
15 化する傾向にある。また家電製品のデジタル化も進み、組み込みシステムの需 15 化する傾向にある。また家電製品のデジタル化も進み、組み込みシステムの需
16 要も増大している。 16 要も増大している。
17 17
18 それにともないハードウェアはムーアの法則よろしく驚異的な進歩を遂げ、近 18 それにともないハードウェアは驚異的な進歩を遂げ、近年はCPUのマルチコア
19 年はCPUのマルチコア化が進み、また新たな段階を築こうとしている。 19 化が進み、また新たな段階を築こうとしている。
20 20
21 ハードウェアの進歩に対し、ソフトウェアの開発に用いられる記述言語は、オ 21 ハードウェアの進歩に対し、ソフトウェアの開発に用いられる記述言語は、オ
22 ブジェクト指向プログラミングの発明・導入やデザインパターンに見られる技 22 ブジェクト指向プログラミングの発明・導入やデザインパターンに見られる技
23 術の集約などが行われ、注目されてきた。 23 術の集約などが行われ、注目されてきた。
24 %しかしながら90年代以降、言語その物に対する大きな変化は見られない。 24 %しかしながら90年代以降、言語その物に対する大きな変化は見られない。
25 オブジェクト指向を主としたJavaはその有用性が認められ多くのシステム開発 25 オブジェクト指向を主としたJavaはその有用性が認められ多くのシステム開発
26 に取り入られている。 26 に取り入られている。
27 しかしその反面、Cなどの低レベルな言語による記述に比べてこれらの技術は 27 しかしその反面、Javaではガベージコレクタや実行時コンパイルにより、余分
28 余分な条件判断やメモリアクセスを増やしてしまう。そのため軽量かつ高速な 28 な処理が必要となる。そのため軽量かつ高速な応答が要求される Real-time処
29 応答が要求される Real-time処理や組み込み用途には適さない。 29 理や組込み用途には適さない。
30 %しかしその反面、Cなどの低レベルな言語による記述に比べてこれらの技術は
31 %余分な条件判断やメモリアクセスを増やしてしまう。そのため軽量かつ高速な
32 %応答が要求される Real-time処理や組み込み用途には適さない。
30 33
31 またCellに見られるような複雑なアーキテクチャをもつマシンではプログラミ 34 %またCellに見られるような複雑なアーキテクチャをもつマシンではプログラ
32 ング自体も複雑になる。Cで記述されたプログラムからアーキテクチャに直接 35 %ミング自体も複雑になる。Cで記述されたプログラムからアーキテクチャに直
33 関わる命令 (DMAやシグナル)を使用するのでは、高級言語の設計思想と矛盾す 36 %接関わる命令 (DMAやシグナル)を使用するのでは、高級言語の設計思想と
34 るともみられる。 37 %矛盾するともみられる。
38 またPlayStation3にはCell Broadband Engineという特殊なCPUが採用され注目
39 されている。しかしこの様な複雑なアーキテクチャを持つマシンではプログラ
40 ミング自体も複雑になる。Cで記述されたプログラムからアーキテクチャに直
41 接関わる命令 (DMAやシグナル)を使用するのでは、高級言語の設計思想と矛
42 盾するともみられる。
43
35 44
36 大規模システムにおけるバグの存在も深刻な問題である。 45 大規模システムにおけるバグの存在も深刻な問題である。
37 テストファーストな開発スタイルなどで工学的なアプローチからバグの抑制が 46 テストファーストな開発スタイルなどで工学的なアプローチからバグの抑制が
38 試みられているが、完全な排除は難しい。数学的なアプローチから無矛盾を証 47 試みられているが、完全な排除は難しい。数学的なアプローチから無矛盾を証
39 明する技術の研究も進んでいるが、現在のスタックベースのプログラミングは 48 明する技術の研究も進んでいるが、現在のスタックベースのプログラミングは
40 状態数が膨大になり、実用化された例は少ない。しかしマルチコアの台頭によ 49 状態数が膨大になり、実用化された例は少ない。しかしマルチコアの台頭によ
41 り並列プログラミングの必要性も高まっており、今後より検証の必要性が増す 50 り並列プログラミングの必要性も高まっており、今後はより検証の必要性が増
42 と考えられる。 51 すと考えられる。
43 52
44 ハードウェアの進化や数学的検証にソフトウェアが対応するためにはこれまで 53 ハードウェアの進化や数学的検証にソフトウェアが対応するためには、これま
45 とは違う新たな視点を持ったプログラミング言語が望ましい。 54 でとは違う新たな視点を持ったプログラミング言語が望ましい。
46 しかし既存のソフトウェアやシステムは膨大な数に上り、これらを新しい言語 55 しかし既存のソフトウェアやシステムは膨大な数に上り、これらを新しい言語
47 に書き換えるのは無理がある。新しい言語は古い言語との互換性が必須である。 56 に書き換えるのは無理がある。新しい言語は古い言語との互換性が必須である。
48 57
49 58
50 我々はこれらの問題に取り組むため、Continuation based Cという言語を提案 59 我々はこれらの問題に取り組むため、Continuation based C(以下CbC)とい
51 している。Continuation based C(以下CbC)はCからサブルーチンやループ構造 60 う言語を提案している。Continuationとはプログラムの次の実行処理を表現す
52 を除いたCの下位言語であり、ハードウェアの記述、また記述したプログラム 61 る制御構造で、継続とも呼ばれている\cite{;}。CbCではCからサブルーチンや
53 の検証などを目的としている。 62 ループ制御を除き、代わりに継続をベースとした実行制御を行う。この特徴か
63 ら、CbCはCの下位言語と考ることができ、ハードウェアの記述や記述したプロ
64 グラムの検証などを目的として設計されている。
65 %我々はこれらの問題に取り組むため、Continuation based Cという言語を提案
66 %している。Continuation based C(以下CbC)はCからサブルーチンやループ構
67 %造を除いたCの下位言語であり、ハードウェアの記述、また記述したプログラ
68 %ムの検証などを目的としている。
54 69
55 これまでCbCのコンパイルにはmicro-cをベースとしたコンパイラとGNUコンパ 70 %これまでCbCのコンパイルには、micro-cをベースとしたコンパイラとGNUコン
56 イラコレクション(以下gcc)をベースとしたコンパイラが用いられてきた。 71 %パイラコレクション(以下GCC)をベースとしたコンパイラが用いられてきた。
57 しかしgccにはバグや当初の期待ほど速度がでないという問題があり、研究段 72 %しかしGCCにはバグや当初の期待ほど速度がでないという問題があり、研究段
58 階であるCbC言語自体にも仕様の変更などがあった。 73 %階であるCbC言語自体にも仕様の変更などがあった。
74 これまでCbCのコンパイルには、micro-cをベースとしたコンパイラが用いられ
75 てきた。加えて2008年の研究においてGCCをベースとしたCbCコンパイラが開発
76 され、継続処理の実装が行われた。
59 77
60 本論文ではGCCベースのCbCコンパイラの問題の洗い出しとその問題の改善を行 78 %TODO: taskmanager
61 い、実用レベルのCbCプログラムの動作を目指す。また、CbCを用いたプログラ 79 本論文ではGCCベースのコンパイラに残るCbCの機能の実装を行い、実用的な
62 ムの例として現在開発中のCbCベースTaskManager の紹介を行う。 80 CbCプログラムの動作を目指す。
63 最後に実装したgccベースコンパイラの評価としてmicro-cベースコンパイラと 81 %本論文ではGCCベースのCbCコンパイラの問題の洗い出しとその問題の改善を行
64 の速度比較を行い、 同じくTaskManager開発を通してのCbCによるプログラミ 82 %い、実用レベルのCbCプログラムの動作を目指す。
65 ングの記述性についても評価・考察を行う。
66 83
84 %また、CbCを用いたプログラムの例として現在開発中のCbCベースTaskManager
85 %の紹介を行う。
86 また、実装したGCCベースコンパイラの評価としてmicro-cベースコンパイラと
87 の速度比較を行い、GCCの開発リリースに合わせるためのメンテナンス手法に
88 ついても考察する。
67 89
68 90
69 91
70 92
71 93
72 \section{論文構成} 94 \section{論文構成}
73 %\ref{chp:cbc}にてContinuation based Cの要求仕様と詳細について説明する。
74 %\ref{chp:impl}章ではgccへの実装方法を説明する。
75 95
76 次章以降、本論文では本研究での成果を報告する。 96 次章以降、本論文では本研究での成果を報告する。
77 97
78 \ref{chp:cbc}章ではまずCbCについてその言語仕様から説明し、また現時点で 98 \ref{chp:cbc}章ではまずCbCについてその言語仕様から説明し、また現時点で
79 のCbCコンパイラの問題点を挙げる。 99 のCbCコンパイラの問題点を挙げる。