comparison slide.tex @ 7:657e392afc09 default tip

*** empty log message ***
author kent
date Tue, 08 Jul 2008 14:48:13 +0900
parents 3436da54f678
children
comparison
equal deleted inserted replaced
6:3436da54f678 7:657e392afc09
1 % File: slide.tex 1 % File: slide.tex
2 % Created: 火 6 24 12:51 PM 2008 J 2 % Created: 火 6 24 12:51 PM 2008 J
3 % Last Change: 火 6 24 12:51 PM 2008 J 3 % Last Change: 火 7 3 11:58 AM 2008 J
4 % 4 %
5 \documentclass[mathserif]{beamer} 5 \documentclass[mathserif]{beamer}
6 \usepackage{graphicx} 6 \usepackage{graphicx}
7 \usepackage{verbatim} 7 \usepackage{verbatim}
8 \usepackage{ulem} 8 \usepackage{ulem}
9 %\usepackage{beamerthemesplit} 9 %\usepackage{beamerthemesplit}
10 %manual% open /usr/local/ptetex/share/texmf-dist/doc/latex/beamer/beameruserguide.pdf 10 %manual% open /usr/local/ptetex/share/texmf-dist/doc/latex/beamer/beameruserguide.pdf
11 11
12 \title[CbC on GCC]{組み込み向け低レベル言語 CbC の GCC による実装} 12 \title[CbC on GCC]{組み込み向け低レベル言語 CbC の GCC による実装}
13 \author{与儀 健人 \and 河野真治} 13 \author{与儀健人 \and 河野真治}
14 \institute[IE Ryukyu Univ]{琉球大学大学院理工学研究科情報工学専攻} 14 \institute[IE Ryukyu Univ]{琉球大学大学院理工学研究科情報工学専攻}
15 \date{\today} 15 \date{\today}
16 16
17 \usetheme{Boadilla} 17 \usetheme{Boadilla}
18 %\usetheme{default} 18 %\usetheme{default}
78 \begin{exampleblock}{Recent works} 78 \begin{exampleblock}{Recent works}
79 \begin{itemize} 79 \begin{itemize}
80 \item Micro-Cによる実装 (i386,PPC,mips,spu,arm) 80 \item Micro-Cによる実装 (i386,PPC,mips,spu,arm)
81 \item タブロー法によるCbCプログラムの検証 81 \item タブロー法によるCbCプログラムの検証
82 %タブロー法を用いたContinuation based Cプログラムの検証, 下地 篤樹, 河野 真治(琉球大学) 日本ソフトウェア科学会第23回大会論文集, Sep, 2006 82 %タブロー法を用いたContinuation based Cプログラムの検証, 下地 篤樹, 河野 真治(琉球大学) 日本ソフトウェア科学会第23回大会論文集, Sep, 2006
83 \item CbCによるハードウェア記述 83 \item CbCによるハードウェア記述の可能性
84 %検証を自身で表現できるハードウェア、ソフトウェア記述言語 Continuation based C と、そのCell への応用 , 河野 真治 (琉球大学), 電子情報通信学会VLSI設計技術研究会, March, 2008 84 %検証を自身で表現できるハードウェア、ソフトウェア記述言語 Continuation based C と、そのCell への応用 , 河野 真治 (琉球大学), 電子情報通信学会VLSI設計技術研究会, March, 2008
85 \item 組み込みソフトウェアへの適用 85 \item 組み込みソフトウェアへの適用法
86 %継続を基本とするプログラム単位を用いた組込みシステム開発 , 河野 真治 (琉球大学), 組み込みソフトウェア工学シンポジウム2003, Oct,2003 86 %継続を基本とするプログラム単位を用いた組込みシステム開発 , 河野 真治 (琉球大学), 組み込みソフトウェア工学シンポジウム2003, Oct,2003
87 \end{itemize} 87 \end{itemize}
88 \end{exampleblock} 88 \end{exampleblock}
89 \end{frame} 89 \end{frame}
90 90
92 \frametitle{GCCによるCbCコンパイラの実装} 92 \frametitle{GCCによるCbCコンパイラの実装}
93 \begin{exampleblock}{Why is it needed?} 93 \begin{exampleblock}{Why is it needed?}
94 \begin{itemize} 94 \begin{itemize}
95 \item 十数種のアーキテクチャへの対応が可能 95 \item 十数種のアーキテクチャへの対応が可能
96 \item 構文木、RTLレベルでの高度な最適化 96 \item 構文木、RTLレベルでの高度な最適化
97 \item 97 \item ポータビリティー
98 \item Tailcallを使った実装方法が示されている 98 \end{itemize}
99 \end{itemize} 99 \end{exampleblock}
100 \end{exampleblock} 100 %Tailcallを使った実装方法が示されている
101 \end{frame} 101 \end{frame}
102 102
103 \begin{comment} 103 \begin{comment}
104 \frametitle{目標} 104 \frametitle{目標}
105 \begin{exampleblock}{Purposes} 105 \begin{exampleblock}{Purposes}
169 } 169 }
170 \end{verbatim} 170 \end{verbatim}
171 \column{.1\textwidth} 171 \column{.1\textwidth}
172 \column{.3\textwidth} 172 \column{.3\textwidth}
173 \flushright 173 \flushright
174 a%\includegraphics[width=\textwidth]{figures/CbC-loop.eps} 174 \includegraphics[width=\textwidth]{figures/CbC-loop.eps}
175 \end{columns} 175 \end{columns}
176 \end{frame} 176 \end{frame}
177 177
178 \begin{frame}[fragile] 178 \begin{frame}[fragile]
179 \frametitle{実装に必要な構文} 179 \frametitle{実装に必要な構文}
199 199
200 \begin{frame} 200 \begin{frame}
201 \frametitle{GCCコンパイルパス} 201 \frametitle{GCCコンパイルパス}
202 \begin{columns} 202 \begin{columns}
203 \column{.5\textwidth} 203 \column{.5\textwidth}
204 a%\includegraphics[width=\textwidth]{figures/GCC-pass-slide.eps} 204 \includegraphics[width=\textwidth]{figures/GCC-pass-slide.eps}
205 \column{.4\textwidth} 205 \column{.4\textwidth}
206 \begin{description} 206 \begin{description}
207 \item[Generic Tree] 構文木 207 \item[Generic Tree] 構文木
208 \item[GIMPLE] SSA 208 \item[GIMPLE] SSA
209 \item[RTL] 中間コード 209 \item[RTL] 中間コード
226 GCCへの実装ではこの最適化を利用して行う 226 GCCへの実装ではこの最適化を利用して行う
227 \end{frame} 227 \end{frame}
228 228
229 \begin{frame} 229 \begin{frame}
230 \frametitle{Tail call elimination} 230 \frametitle{Tail call elimination}
231 a%\includegraphics[width=.9\textwidth]{figures/GCC-TailCall.eps} 231 \includegraphics[width=.9\textwidth]{figures/GCC-TailCall.eps}
232 \end{frame} 232 \end{frame}
233 233
234 \begin{comment}[fragile] 234 \begin{comment}[fragile]
235 \begin{columns}[t] 235 \begin{columns}[t]
236 \column{.5\textwidth} 236 \column{.5\textwidth}
281 \begin{itemize} 281 \begin{itemize}
282 \item \_\_code トークンの追加 282 \item \_\_code トークンの追加
283 \item code segmentのパース \hfill Parser \hspace{5em} 283 \item code segmentのパース \hfill Parser \hspace{5em}
284 \item gotoのパース \hfill Parser \hspace{5em} 284 \item gotoのパース \hfill Parser \hspace{5em}
285 \item code segment/goto を表すGeneric Tree 285 \item code segment/goto を表すGeneric Tree
286 \item \alert<2>{tree/RTL変換 (expand\_call)} \hfill RTL Generator \hspace{5em} 286 \item tree/RTL変換 (expand\_call) \hfill RTL Generator \hspace{5em}
287 \item その他(エラー検出など) 287 \item その他(エラー検出など)
288 \end{itemize} 288 \end{itemize}
289 \end{frame} 289 \end{frame}
290 290
291 \begin{comment} 291 \begin{comment}
313 \end{itemize} 313 \end{itemize}
314 \end{exampleblock} 314 \end{exampleblock}
315 \end{comment} 315 \end{comment}
316 316
317 \section{評価} 317 \section{評価}
318 \begin{frame}[fragile] 318
319 \begin{frame}
319 \frametitle{評価(ベンチマーク)} 320 \frametitle{評価(ベンチマーク)}
321 GCCとMicro-Cの間でベンチマーク測定をする
320 \begin{itemize} 322 \begin{itemize}
321 \item 環境 i386 fedora core 323 \item 環境 i386 fedora core
322 \item 使用したプログラム conv1 324 \item 使用したプログラム conv1
323 \end{itemize} 325 \item 関数コールと演算の交互実行
326 \end{itemize}
327 引数の値によって同じ内容の別のソースを実行する
328 \begin{description}
329 \item[0] Cの関数を用いた演算
330 \item[1] 上を機械的にコードセグメントに変換したもの
331 \item[2] さらに手動で最適化したもの
332 \item[3] 別の手法で最適化したもの
333 \end{description}
334 \end{frame}
335
336 \begin{frame}[fragile]
337 \frametitle{評価(ベンチマーク)}
324 \centering 338 \centering
325 \begin{tabular}{|l|r|r|r|r|} \hline 339 \begin{tabular}{|l|r|r|r|r|} \hline
326 & ./conv1 0 & ./conv1 1 & ./conv1 2 & ./conv1 3 \\ \hline 340 & ./conv1 0 & ./conv1 1 & ./conv1 2 & ./conv1 3 \\ \hline
327 Micro-C & 5.25 & 8.97 & 2.19 & 2.73 \\ \hline \hline 341 Micro-C & 5.25 & 8.97 & 2.19 & 2.73 \\ \hline \hline
328 GCC & 3.69 & 4.87 & 3.08 & 3.65 \\ \hline 342 GCC & 3.69 & 4.87 & 3.08 & 3.65 \\ \hline
334 \item[+omit] -fomit-frame-pointerオプションを付加 348 \item[+omit] -fomit-frame-pointerオプションを付加
335 \item[+fastcall] \verb|__attribute__ ((fastcall))|を付加 349 \item[+fastcall] \verb|__attribute__ ((fastcall))|を付加
336 \end{description} 350 \end{description}
337 \end{frame} 351 \end{frame}
338 352
353 \begin{frame}
354 \frametitle{評価結果}
355 \begin{exampleblock}{Result}
356 \begin{itemize}
357 \item GCCの最適化を使うことで、Micro-Cより早く動作する
358 \item 単にCからCbCに機械的に変換しただけでは若干遅くなる が、
359 \item そのコードを修正することで、C より高速化できる
360 \end{itemize}
361 \end{exampleblock}
362 \end{frame}
363
339 \renewcommand<>{\sout}[1]{\temporal#2{#1}{\beameroriginal{\sout}{#1}}{#1}} 364 \renewcommand<>{\sout}[1]{\temporal#2{#1}{\beameroriginal{\sout}{#1}}{#1}}
340 \section{環境付き継続に関する考察} 365 \section{環境付き継続に関する考察}
341 \begin{frame}[fragile] 366 \begin{frame}[fragile]
342 \frametitle{環境付き継続} 367 \frametitle{環境付き継続}
343 %\sout<2>{未実装の構文}\\ 368 %\sout<2>{未実装の構文}\\
344 未実装の構文 369 未実装の構文
345 %\uncover<2>{新たに実装された構文} 370 %\uncover<2>{新たに実装された構文}
346 \begin{verbatim} 371 \begin{verbatim}
372 env = malloc(STACKSIZE);
347 goto cs( 10 ), env; 373 goto cs( 10 ), env;
348 \end{verbatim} 374 \end{verbatim}
349 %env = malloc(STACKSIZE);
350 \begin{itemize} 375 \begin{itemize}
351 \item envは現在とは別のスタック空間を表す 376 \item envは現在とは別のスタック空間を表す
352 \begin{itemize} 377 \begin{itemize}
353 \item mallocで取得 378 \item mallocで取得
354 \item 中断した別スレッドのスッタクフレーム 379 \item 中断した別スレッドのスッタクフレーム
370 __code cs(void *env, void *ret){ 395 __code cs(void *env, void *ret){
371 /* something */ 396 /* something */
372 goto ret(20), env; 397 goto ret(20), env;
373 } 398 }
374 \end{verbatim} 399 \end{verbatim}
375 このように、\verb|__environment,__return|を使用して、呼び出し元関数の環境へ戻れる。 400 このように、\verb|__environment,__return|を使用して、呼び出し元関数の環境へ戻れる。\\
376 この使用方法に限れば、GCCでも実装完了。 401 この使用方法に限れば、GCCでも実装完了。
377 \end{frame} 402 \end{frame}
378 403
379 \begin{frame} 404 \begin{frame}[fragile]
380 \frametitle{実装方法} 405 \frametitle{実装方法}
381 406 \begin{exampleblock}{``環境''を表すのに必要な物}
407 \begin{itemize}
408 \item スタックフレーム (\%ebp)
409 \item 継続の引数を格納する位置
410 \end{itemize}
411 \end{exampleblock}
412 この二つをメンバに持つ構造体を\verb|__environment|として渡す。
413
414 この構造体のスペースはどこからとる?
415 \begin{itemize}
416 \item malloc? --- freeの問題がある
417 \item static変数でも問題ない? --- スレッド、再帰関数の場合に問題が
418 \item Thread-Local strage?
419 \end{itemize}
420
421 setjmpとの違いは?
382 \end{frame} 422 \end{frame}
383 423
384 \section{まとめ} 424 \section{まとめ}
385 \begin{frame} 425 \begin{frame}
386 \frametitle{まとめ} 426 \frametitle{まとめ}
387 \begin{block}{Conclusion} 427 \begin{exampleblock}{Conclusion}
388 \begin{itemize} 428 \begin{itemize}
389 \item GCCにCbCコンパイラを実装 429 \item GCCにCbCコンパイラを実装
390 \item そのベンチマークによる性能向上の確認 430 \item そのベンチマークによる性能向上の確認
431 \item 環境付き継続を一部実装
391 \item 環境付き継続の実装及び問題点の考察 432 \item 環境付き継続の実装及び問題点の考察
392 \end{itemize} 433 \end{itemize}
393 \end{block} 434 \end{exampleblock}
394 435
395 \begin{block}{TO DO} 436 \begin{exampleblock}{TO DO}
396 \begin{itemize} 437 \begin{itemize}
397 \item environmentの強化 438 \item 環境付き継続を完全にする
398 \item PPCのRTL変換不能 439 \item PPCのindirect tailcall
399 \item オプションの強制 440 \item オプションの強制
400 \item SPU対応とGCCのversion 441 \end{itemize}
401 \end{itemize} 442 \end{exampleblock}
402 \end{block}
403 \end{frame} 443 \end{frame}
404 444
405 445
406 %\begin{thebibliography} 446 %\begin{thebibliography}
407 %\item[CbC]{} 河野真治 , 日本ソフトウェア科学会第17回大会論文集, September, 2000 (in Japanese) 447 %\item[CbC]{} 河野真治 , 日本ソフトウェア科学会第17回大会論文集, September, 2000 (in Japanese)
410 %河野真治 , 日本ソフトウェア科学会第17回大会論文集, September, 2000 (in Japanese) 450 %河野真治 , 日本ソフトウェア科学会第17回大会論文集, September, 2000 (in Japanese)
411 %継続を基本とするプログラム単位を用いた組込みシステム開発 , 河野 真治 (琉球大学), 組み込みソフトウェア工学シンポジウム2003, Oct,2003 451 %継続を基本とするプログラム単位を用いた組込みシステム開発 , 河野 真治 (琉球大学), 組み込みソフトウェア工学シンポジウム2003, Oct,2003
412 452
413 %\appendix 453 %\appendix
414 %\begin{frame} 454 %\begin{frame}
415 %a%\includegraphics[width=.9\textwidth]{figures/stack-tailcall.eps} 455 %\includegraphics[width=.9\textwidth]{figures/stack-tailcall.eps}
416 %\end{frame} 456 %\end{frame}
417 457
418 \end{document} 458 \end{document}
419 459
420 460