Mercurial > hg > Papers > 2011 > nobu-prosym
changeset 55:06ce8fb8e278
modify presen/index.html
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 24 Dec 2011 20:57:34 +0900 |
parents | a967ee5a0b0f |
children | 46cc88d1051c |
files | presen/index.html |
diffstat | 1 files changed, 43 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/presen/index.html Sat Dec 24 18:53:34 2011 +0900 +++ b/presen/index.html Sat Dec 24 20:57:34 2011 +0900 @@ -87,12 +87,13 @@ <h1>目的と背景(1)</h1> <li>当研究室ではコードセグメント単位で記述するプログラミング言語Continuation based C (以下CbC)という言語を開発している。</li> <li>コードセグメントは並列実行の単位として使うことができ、プログラムの正しさを示す単位としても使用することができる。</li> + <li class="incremental">コードセグメントにより Many Core での並列実行を高い性能と高い信頼性で実現することができると考える。</li> </div> <!-- PAGE --> <div class="slide"> <h1>目的と背景(2)</h1> <li>CbC のコンパイラは2008年に GCC 4.4 をベースとしたコンパイラが開発された。</li> - <li>GCC をベースとした CbC コンパイラは、GCC のアップデートに合わせ変更する必要がある。</li> + <li>GCC をベースとした CbC コンパイラは、修正・追加された最適化の機能を使用する為に、 GCC のアップデートに合わせ変更する必要がある。</li> <li class="incremental">本研究ではCbC コンパイラを GCC-4.6 へとアップデートを行い、Intel64 への対応するとともに CbC の拡張を行う。 </li> </div> <!-- PAGE --> @@ -117,16 +118,17 @@ <!-- PAGE --> <div class="slide"> <h1>Continuation based C </h1> - <li>Cの関数より細かな単位、コードセグメントを記述の基本とする。</li> - <li>コードセグメントは並列の実行単位であり、プログラムの正しさを示す単位としても使うことができる。</li> - <li class="incremental">Many Core での並列実行を高い性能と高い信頼性で実現することができると考える。</li> - + <h2>コードセグメント単位での記述と継続を基本としたプログラミング言語。</h2> + <li>プログラムの記述は C の構文と同じだが、ループ制御や関数コールが取り除かれる。</li> + <li>コードセグメント</li> + <ul> + <li>C の関数よりも細かい単位。</li> + <li>コードセグメントの処理は最後に別のコードセグメントへ継続(goto)することで続いていく。</li> + </ul> </div> <!-- PAGE --> <div class="slide"> <h1>Continuation based C </h1> - <li>プログラムの記述は C の構文と同じだが、ループ制御や関数コールが取り除かれる。</li> - <li>継続(goto)により次のコードセグメントへと処理を移る。</li> <small> <table width=100% > <tr> @@ -208,25 +210,54 @@ <!-- PAGE --> <div class="slide"> <h1>シンタックスの追加</h1> - <li>__code でコードセグメントの宣言</li> + <h2>__code でコードセグメントの宣言</h2> <ul> <li>__code 用idとkeywordを作成。</li> - <li>__code で宣言されるコードセグメントは void 型の関数と同じにする。</li> + <li>戻り値が無い為、コードセグメントは void 型の関数で作成される木と同じ木が作られる。</li> </ul> </div> <!-- PAGE --> <div class="slide"> <h1>シンタックスの追加</h1> - <li>goto シンタックスの追加</li> + <h2>goto シンタックスの追加</h2> <ul> <li>通常の goto に加え、コードセグメントを呼び出す処理を追加。</li> <li>コードセグメントへのgoto後は、 return の処理を自動で追加。</li> </ul> + <table border=1 width=100%> + <tr class="center"> + <small> + <td>実際のコード </td> + <td>GCC 内で処理されるコード</td> + </small> + </tr> + <tr style="margin-top: auto;"> + <td> + <pre> +goto factorial0(1, x); + </pre> + </td> + <td> + <pre> +goto factorial0(1, x); +return; + </pre> + </td> + </tr> + </table> </div> <!-- PAGE --> <div class="slide"> - <h1></h1> - <li></li> + <h1>fastcall属性の付与</h1> + <li>i386 において関数呼び出しの際、引数渡しをできるだけレジスタを用いるGCCの拡張機能。</li> + <li>コードセグメントは処理が細かい為、継続の回数が多くなる。引数をレジスタ渡しにすることで速度向上を狙う。</li> + <pre> +if(!TARGET_64BIT) { + attrs = build_tree_list (get_identifier("fastcall"), NULL_TREE); + declspecs_add_attrs(specs, attrs); + } + </pre> + <li>Intel64 に対してはfastcallは標準でつくようになっている。</li> </div> <!-- PAGE --> <div class="slide">