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}