comparison presen/index.html @ 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 ce844f6c504d
comparison
equal deleted inserted replaced
54:a967ee5a0b0f 55:06ce8fb8e278
85 <!-- PAGE --> 85 <!-- PAGE -->
86 <div class="slide"> 86 <div class="slide">
87 <h1>目的と背景(1)</h1> 87 <h1>目的と背景(1)</h1>
88 <li>当研究室ではコードセグメント単位で記述するプログラミング言語Continuation based C (以下CbC)という言語を開発している。</li> 88 <li>当研究室ではコードセグメント単位で記述するプログラミング言語Continuation based C (以下CbC)という言語を開発している。</li>
89 <li>コードセグメントは並列実行の単位として使うことができ、プログラムの正しさを示す単位としても使用することができる。</li> 89 <li>コードセグメントは並列実行の単位として使うことができ、プログラムの正しさを示す単位としても使用することができる。</li>
90 <li class="incremental">コードセグメントにより Many Core での並列実行を高い性能と高い信頼性で実現することができると考える。</li>
90 </div> 91 </div>
91 <!-- PAGE --> 92 <!-- PAGE -->
92 <div class="slide"> 93 <div class="slide">
93 <h1>目的と背景(2)</h1> 94 <h1>目的と背景(2)</h1>
94 <li>CbC のコンパイラは2008年に GCC 4.4 をベースとしたコンパイラが開発された。</li> 95 <li>CbC のコンパイラは2008年に GCC 4.4 をベースとしたコンパイラが開発された。</li>
95 <li>GCC をベースとした CbC コンパイラは、GCC のアップデートに合わせ変更する必要がある。</li> 96 <li>GCC をベースとした CbC コンパイラは、修正・追加された最適化の機能を使用する為に、 GCC のアップデートに合わせ変更する必要がある。</li>
96 <li class="incremental">本研究ではCbC コンパイラを GCC-4.6 へとアップデートを行い、Intel64 への対応するとともに CbC の拡張を行う。 </li> 97 <li class="incremental">本研究ではCbC コンパイラを GCC-4.6 へとアップデートを行い、Intel64 への対応するとともに CbC の拡張を行う。 </li>
97 </div> 98 </div>
98 <!-- PAGE --> 99 <!-- PAGE -->
99 <div class="slide"> 100 <div class="slide">
100 <h1>発表内容</h1> 101 <h1>発表内容</h1>
115 <ol> 116 <ol>
116 </div> 117 </div>
117 <!-- PAGE --> 118 <!-- PAGE -->
118 <div class="slide"> 119 <div class="slide">
119 <h1>Continuation based C </h1> 120 <h1>Continuation based C </h1>
120 <li>Cの関数より細かな単位、コードセグメントを記述の基本とする。</li> 121 <h2>コードセグメント単位での記述と継続を基本としたプログラミング言語。</h2>
121 <li>コードセグメントは並列の実行単位であり、プログラムの正しさを示す単位としても使うことができる。</li> 122 <li>プログラムの記述は C の構文と同じだが、ループ制御や関数コールが取り除かれる。</li>
122 <li class="incremental">Many Core での並列実行を高い性能と高い信頼性で実現することができると考える。</li> 123 <li>コードセグメント</li>
123 124 <ul>
125 <li>C の関数よりも細かい単位。</li>
126 <li>コードセグメントの処理は最後に別のコードセグメントへ継続(goto)することで続いていく。</li>
127 </ul>
124 </div> 128 </div>
125 <!-- PAGE --> 129 <!-- PAGE -->
126 <div class="slide"> 130 <div class="slide">
127 <h1>Continuation based C </h1> 131 <h1>Continuation based C </h1>
128 <li>プログラムの記述は C の構文と同じだが、ループ制御や関数コールが取り除かれる。</li>
129 <li>継続(goto)により次のコードセグメントへと処理を移る。</li>
130 <small> 132 <small>
131 <table width=100% > 133 <table width=100% >
132 <tr> 134 <tr>
133 <caption>階乗を求めるCbCのプログラム</caption> 135 <caption>階乗を求めるCbCのプログラム</caption>
134 <td width=50%> 136 <td width=50%>
206 <li></li> 208 <li></li>
207 </div> 209 </div>
208 <!-- PAGE --> 210 <!-- PAGE -->
209 <div class="slide"> 211 <div class="slide">
210 <h1>シンタックスの追加</h1> 212 <h1>シンタックスの追加</h1>
211 <li>__code でコードセグメントの宣言</li> 213 <h2>__code でコードセグメントの宣言</h2>
212 <ul> 214 <ul>
213 <li>__code 用idとkeywordを作成。</li> 215 <li>__code 用idとkeywordを作成。</li>
214 <li>__code で宣言されるコードセグメントは void 型の関数と同じにする。</li> 216 <li>戻り値が無い為、コードセグメントは void 型の関数で作成される木と同じ木が作られる。</li>
215 </ul> 217 </ul>
216 </div> 218 </div>
217 <!-- PAGE --> 219 <!-- PAGE -->
218 <div class="slide"> 220 <div class="slide">
219 <h1>シンタックスの追加</h1> 221 <h1>シンタックスの追加</h1>
220 <li>goto シンタックスの追加</li> 222 <h2>goto シンタックスの追加</h2>
221 <ul> 223 <ul>
222 <li>通常の goto に加え、コードセグメントを呼び出す処理を追加。</li> 224 <li>通常の goto に加え、コードセグメントを呼び出す処理を追加。</li>
223 <li>コードセグメントへのgoto後は、 return の処理を自動で追加。</li> 225 <li>コードセグメントへのgoto後は、 return の処理を自動で追加。</li>
224 </ul> 226 </ul>
225 </div> 227 <table border=1 width=100%>
226 <!-- PAGE --> 228 <tr class="center">
227 <div class="slide"> 229 <small>
228 <h1></h1> 230 <td>実際のコード </td>
229 <li></li> 231 <td>GCC 内で処理されるコード</td>
232 </small>
233 </tr>
234 <tr style="margin-top: auto;">
235 <td>
236 <pre>
237 goto factorial0(1, x);
238 </pre>
239 </td>
240 <td>
241 <pre>
242 goto factorial0(1, x);
243 return;
244 </pre>
245 </td>
246 </tr>
247 </table>
248 </div>
249 <!-- PAGE -->
250 <div class="slide">
251 <h1>fastcall属性の付与</h1>
252 <li>i386 において関数呼び出しの際、引数渡しをできるだけレジスタを用いるGCCの拡張機能。</li>
253 <li>コードセグメントは処理が細かい為、継続の回数が多くなる。引数をレジスタ渡しにすることで速度向上を狙う。</li>
254 <pre>
255 if(!TARGET_64BIT) {
256 attrs = build_tree_list (get_identifier("fastcall"), NULL_TREE);
257 declspecs_add_attrs(specs, attrs);
258 }
259 </pre>
260 <li>Intel64 に対してはfastcallは標準でつくようになっている。</li>
230 </div> 261 </div>
231 <!-- PAGE --> 262 <!-- PAGE -->
232 <div class="slide"> 263 <div class="slide">
233 <h1></h1> 264 <h1></h1>
234 <li></li> 265 <li></li>