Mercurial > hg > Papers > 2010 > kent-master
diff 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 |
line wrap: on
line diff
--- a/introduction.tex Mon Feb 08 03:50:27 2010 +0900 +++ b/introduction.tex Fri Feb 12 13:10:57 2010 +0900 @@ -15,8 +15,8 @@ 化する傾向にある。また家電製品のデジタル化も進み、組み込みシステムの需 要も増大している。 -それにともないハードウェアはムーアの法則よろしく驚異的な進歩を遂げ、近 -年はCPUのマルチコア化が進み、また新たな段階を築こうとしている。 +それにともないハードウェアは驚異的な進歩を遂げ、近年はCPUのマルチコア +化が進み、また新たな段階を築こうとしている。 ハードウェアの進歩に対し、ソフトウェアの開発に用いられる記述言語は、オ ブジェクト指向プログラミングの発明・導入やデザインパターンに見られる技 @@ -24,54 +24,74 @@ %しかしながら90年代以降、言語その物に対する大きな変化は見られない。 オブジェクト指向を主としたJavaはその有用性が認められ多くのシステム開発 に取り入られている。 -しかしその反面、Cなどの低レベルな言語による記述に比べてこれらの技術は -余分な条件判断やメモリアクセスを増やしてしまう。そのため軽量かつ高速な -応答が要求される Real-time処理や組み込み用途には適さない。 +しかしその反面、Javaではガベージコレクタや実行時コンパイルにより、余分 +な処理が必要となる。そのため軽量かつ高速な応答が要求される Real-time処 +理や組込み用途には適さない。 +%しかしその反面、Cなどの低レベルな言語による記述に比べてこれらの技術は +%余分な条件判断やメモリアクセスを増やしてしまう。そのため軽量かつ高速な +%応答が要求される Real-time処理や組み込み用途には適さない。 -またCellに見られるような複雑なアーキテクチャをもつマシンではプログラミ -ング自体も複雑になる。Cで記述されたプログラムからアーキテクチャに直接 -関わる命令 (DMAやシグナル)を使用するのでは、高級言語の設計思想と矛盾す -るともみられる。 +%またCellに見られるような複雑なアーキテクチャをもつマシンではプログラ +%ミング自体も複雑になる。Cで記述されたプログラムからアーキテクチャに直 +%接関わる命令 (DMAやシグナル)を使用するのでは、高級言語の設計思想と +%矛盾するともみられる。 +またPlayStation3にはCell Broadband Engineという特殊なCPUが採用され注目 +されている。しかしこの様な複雑なアーキテクチャを持つマシンではプログラ +ミング自体も複雑になる。Cで記述されたプログラムからアーキテクチャに直 +接関わる命令 (DMAやシグナル)を使用するのでは、高級言語の設計思想と矛 +盾するともみられる。 + 大規模システムにおけるバグの存在も深刻な問題である。 テストファーストな開発スタイルなどで工学的なアプローチからバグの抑制が 試みられているが、完全な排除は難しい。数学的なアプローチから無矛盾を証 明する技術の研究も進んでいるが、現在のスタックベースのプログラミングは 状態数が膨大になり、実用化された例は少ない。しかしマルチコアの台頭によ -り並列プログラミングの必要性も高まっており、今後より検証の必要性が増す -と考えられる。 +り並列プログラミングの必要性も高まっており、今後はより検証の必要性が増 +すと考えられる。 -ハードウェアの進化や数学的検証にソフトウェアが対応するためにはこれまで -とは違う新たな視点を持ったプログラミング言語が望ましい。 +ハードウェアの進化や数学的検証にソフトウェアが対応するためには、これま +でとは違う新たな視点を持ったプログラミング言語が望ましい。 しかし既存のソフトウェアやシステムは膨大な数に上り、これらを新しい言語 に書き換えるのは無理がある。新しい言語は古い言語との互換性が必須である。 -我々はこれらの問題に取り組むため、Continuation based Cという言語を提案 -している。Continuation based C(以下CbC)はCからサブルーチンやループ構造 -を除いたCの下位言語であり、ハードウェアの記述、また記述したプログラム -の検証などを目的としている。 +我々はこれらの問題に取り組むため、Continuation based C(以下CbC)とい +う言語を提案している。Continuationとはプログラムの次の実行処理を表現す +る制御構造で、継続とも呼ばれている\cite{;}。CbCではCからサブルーチンや +ループ制御を除き、代わりに継続をベースとした実行制御を行う。この特徴か +ら、CbCはCの下位言語と考ることができ、ハードウェアの記述や記述したプロ +グラムの検証などを目的として設計されている。 +%我々はこれらの問題に取り組むため、Continuation based Cという言語を提案 +%している。Continuation based C(以下CbC)はCからサブルーチンやループ構 +%造を除いたCの下位言語であり、ハードウェアの記述、また記述したプログラ +%ムの検証などを目的としている。 -これまでCbCのコンパイルにはmicro-cをベースとしたコンパイラとGNUコンパ -イラコレクション(以下gcc)をベースとしたコンパイラが用いられてきた。 -しかしgccにはバグや当初の期待ほど速度がでないという問題があり、研究段 -階であるCbC言語自体にも仕様の変更などがあった。 +%これまでCbCのコンパイルには、micro-cをベースとしたコンパイラとGNUコン +%パイラコレクション(以下GCC)をベースとしたコンパイラが用いられてきた。 +%しかしGCCにはバグや当初の期待ほど速度がでないという問題があり、研究段 +%階であるCbC言語自体にも仕様の変更などがあった。 +これまでCbCのコンパイルには、micro-cをベースとしたコンパイラが用いられ +てきた。加えて2008年の研究においてGCCをベースとしたCbCコンパイラが開発 +され、継続処理の実装が行われた。 -本論文ではGCCベースのCbCコンパイラの問題の洗い出しとその問題の改善を行 -い、実用レベルのCbCプログラムの動作を目指す。また、CbCを用いたプログラ -ムの例として現在開発中のCbCベースTaskManager の紹介を行う。 -最後に実装したgccベースコンパイラの評価としてmicro-cベースコンパイラと -の速度比較を行い、 同じくTaskManager開発を通してのCbCによるプログラミ -ングの記述性についても評価・考察を行う。 +%TODO: taskmanager +本論文ではGCCベースのコンパイラに残るCbCの機能の実装を行い、実用的な +CbCプログラムの動作を目指す。 +%本論文ではGCCベースのCbCコンパイラの問題の洗い出しとその問題の改善を行 +%い、実用レベルのCbCプログラムの動作を目指す。 +%また、CbCを用いたプログラムの例として現在開発中のCbCベースTaskManager +%の紹介を行う。 +また、実装したGCCベースコンパイラの評価としてmicro-cベースコンパイラと +の速度比較を行い、GCCの開発リリースに合わせるためのメンテナンス手法に +ついても考察する。 \section{論文構成} -%\ref{chp:cbc}にてContinuation based Cの要求仕様と詳細について説明する。 -%\ref{chp:impl}章ではgccへの実装方法を説明する。 次章以降、本論文では本研究での成果を報告する。