Mercurial > hg > Papers > 2008 > kent-dsw
diff slide.tex @ 7:657e392afc09 default tip
*** empty log message ***
author | kent |
---|---|
date | Tue, 08 Jul 2008 14:48:13 +0900 |
parents | 3436da54f678 |
children |
line wrap: on
line diff
--- a/slide.tex Wed Jul 02 11:02:49 2008 +0900 +++ b/slide.tex Tue Jul 08 14:48:13 2008 +0900 @@ -1,6 +1,6 @@ % File: slide.tex % Created: 火 6 24 12:51 PM 2008 J -% Last Change: 火 6 24 12:51 PM 2008 J +% Last Change: 火 7 3 11:58 AM 2008 J % \documentclass[mathserif]{beamer} \usepackage{graphicx} @@ -10,7 +10,7 @@ %manual% open /usr/local/ptetex/share/texmf-dist/doc/latex/beamer/beameruserguide.pdf \title[CbC on GCC]{組み込み向け低レベル言語 CbC の GCC による実装} -\author{与儀 健人 \and 河野真治} +\author{与儀健人 \and 河野真治} \institute[IE Ryukyu Univ]{琉球大学大学院理工学研究科情報工学専攻} \date{\today} @@ -80,9 +80,9 @@ \item Micro-Cによる実装 (i386,PPC,mips,spu,arm) \item タブロー法によるCbCプログラムの検証 %タブロー法を用いたContinuation based Cプログラムの検証, 下地 篤樹, 河野 真治(琉球大学) 日本ソフトウェア科学会第23回大会論文集, Sep, 2006 - \item CbCによるハードウェア記述 + \item CbCによるハードウェア記述の可能性 %検証を自身で表現できるハードウェア、ソフトウェア記述言語 Continuation based C と、そのCell への応用 , 河野 真治 (琉球大学), 電子情報通信学会VLSI設計技術研究会, March, 2008 - \item 組み込みソフトウェアへの適用 + \item 組み込みソフトウェアへの適用法 %継続を基本とするプログラム単位を用いた組込みシステム開発 , 河野 真治 (琉球大学), 組み込みソフトウェア工学シンポジウム2003, Oct,2003 \end{itemize} \end{exampleblock} @@ -94,10 +94,10 @@ \begin{itemize} \item 十数種のアーキテクチャへの対応が可能 \item 構文木、RTLレベルでの高度な最適化 - \item - \item Tailcallを使った実装方法が示されている + \item ポータビリティー \end{itemize} \end{exampleblock} + %Tailcallを使った実装方法が示されている \end{frame} \begin{comment} @@ -171,7 +171,7 @@ \column{.1\textwidth} \column{.3\textwidth} \flushright - a%\includegraphics[width=\textwidth]{figures/CbC-loop.eps} + \includegraphics[width=\textwidth]{figures/CbC-loop.eps} \end{columns} \end{frame} @@ -201,7 +201,7 @@ \frametitle{GCCコンパイルパス} \begin{columns} \column{.5\textwidth} - a%\includegraphics[width=\textwidth]{figures/GCC-pass-slide.eps} + \includegraphics[width=\textwidth]{figures/GCC-pass-slide.eps} \column{.4\textwidth} \begin{description} \item[Generic Tree] 構文木 @@ -228,7 +228,7 @@ \begin{frame} \frametitle{Tail call elimination} - a%\includegraphics[width=.9\textwidth]{figures/GCC-TailCall.eps} + \includegraphics[width=.9\textwidth]{figures/GCC-TailCall.eps} \end{frame} \begin{comment}[fragile] @@ -283,7 +283,7 @@ \item code segmentのパース \hfill Parser \hspace{5em} \item gotoのパース \hfill Parser \hspace{5em} \item code segment/goto を表すGeneric Tree - \item \alert<2>{tree/RTL変換 (expand\_call)} \hfill RTL Generator \hspace{5em} + \item tree/RTL変換 (expand\_call) \hfill RTL Generator \hspace{5em} \item その他(エラー検出など) \end{itemize} \end{frame} @@ -315,12 +315,26 @@ \end{comment} \section{評価} -\begin{frame}[fragile] + +\begin{frame} \frametitle{評価(ベンチマーク)} + GCCとMicro-Cの間でベンチマーク測定をする \begin{itemize} \item 環境 i386 fedora core \item 使用したプログラム conv1 + \item 関数コールと演算の交互実行 \end{itemize} + 引数の値によって同じ内容の別のソースを実行する + \begin{description} + \item[0] Cの関数を用いた演算 + \item[1] 上を機械的にコードセグメントに変換したもの + \item[2] さらに手動で最適化したもの + \item[3] 別の手法で最適化したもの + \end{description} +\end{frame} + +\begin{frame}[fragile] + \frametitle{評価(ベンチマーク)} \centering \begin{tabular}{|l|r|r|r|r|} \hline & ./conv1 0 & ./conv1 1 & ./conv1 2 & ./conv1 3 \\ \hline @@ -336,6 +350,17 @@ \end{description} \end{frame} +\begin{frame} + \frametitle{評価結果} + \begin{exampleblock}{Result} + \begin{itemize} + \item GCCの最適化を使うことで、Micro-Cより早く動作する + \item 単にCからCbCに機械的に変換しただけでは若干遅くなる が、 + \item そのコードを修正することで、C より高速化できる + \end{itemize} + \end{exampleblock} +\end{frame} + \renewcommand<>{\sout}[1]{\temporal#2{#1}{\beameroriginal{\sout}{#1}}{#1}} \section{環境付き継続に関する考察} \begin{frame}[fragile] @@ -344,9 +369,9 @@ 未実装の構文 %\uncover<2>{新たに実装された構文} \begin{verbatim} + env = malloc(STACKSIZE); goto cs( 10 ), env; \end{verbatim} - %env = malloc(STACKSIZE); \begin{itemize} \item envは現在とは別のスタック空間を表す \begin{itemize} @@ -372,34 +397,49 @@ goto ret(20), env; } \end{verbatim} - このように、\verb|__environment,__return|を使用して、呼び出し元関数の環境へ戻れる。 + このように、\verb|__environment,__return|を使用して、呼び出し元関数の環境へ戻れる。\\ この使用方法に限れば、GCCでも実装完了。 \end{frame} -\begin{frame} +\begin{frame}[fragile] \frametitle{実装方法} + \begin{exampleblock}{``環境''を表すのに必要な物} + \begin{itemize} + \item スタックフレーム (\%ebp) + \item 継続の引数を格納する位置 + \end{itemize} + \end{exampleblock} + この二つをメンバに持つ構造体を\verb|__environment|として渡す。 + この構造体のスペースはどこからとる? + \begin{itemize} + \item malloc? --- freeの問題がある + \item static変数でも問題ない? --- スレッド、再帰関数の場合に問題が + \item Thread-Local strage? + \end{itemize} + + setjmpとの違いは? \end{frame} \section{まとめ} \begin{frame} \frametitle{まとめ} - \begin{block}{Conclusion} + \begin{exampleblock}{Conclusion} \begin{itemize} \item GCCにCbCコンパイラを実装 \item そのベンチマークによる性能向上の確認 + \item 環境付き継続を一部実装 \item 環境付き継続の実装及び問題点の考察 \end{itemize} - \end{block} + \end{exampleblock} - \begin{block}{TO DO} + \begin{exampleblock}{TO DO} \begin{itemize} - \item environmentの強化 - \item PPCのRTL変換不能 + \item 環境付き継続を完全にする + \item PPCのindirect tailcall \item オプションの強制 - \item SPU対応とGCCのversion \end{itemize} - \end{block} + \end{exampleblock} \end{frame} @@ -412,7 +452,7 @@ %\appendix %\begin{frame} - %a%\includegraphics[width=.9\textwidth]{figures/stack-tailcall.eps} + %\includegraphics[width=.9\textwidth]{figures/stack-tailcall.eps} %\end{frame} \end{document}