changeset 14:003a659c528e draft

modify
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Thu, 23 Feb 2012 20:30:03 +0900
parents b3ebb4a6ae75
children 6a667be77762
files paper/figure/conv1_linux.pdf paper/graffle/conv1_linux.graffle paper/resume.tex
diffstat 3 files changed, 21 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
Binary file paper/figure/conv1_linux.pdf has changed
--- a/paper/graffle/conv1_linux.graffle	Wed Feb 22 21:11:09 2012 +0900
+++ b/paper/graffle/conv1_linux.graffle	Thu Feb 23 20:30:03 2012 +0900
@@ -44,7 +44,7 @@
 	<key>Creator</key>
 	<string>Nobuyasu Oshiro</string>
 	<key>DisplayScale</key>
-	<string>1 0/72 in = 1 0/72 in</string>
+	<string>1 0/72 in = 1.0000 in</string>
 	<key>GraphDocumentVersion</key>
 	<integer>8</integer>
 	<key>GraphicsList</key>
@@ -93,7 +93,7 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
 
-\f0\fs24 \cf0 1.07}</string>
+\f0\fs24 \cf0 1.08}</string>
 				<key>VerticalPad</key>
 				<integer>0</integer>
 			</dict>
@@ -142,7 +142,7 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
 
-\f0\fs24 \cf0 1.17}</string>
+\f0\fs24 \cf0 1.10}</string>
 				<key>VerticalPad</key>
 				<integer>0</integer>
 			</dict>
@@ -191,7 +191,7 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
 
-\f0\fs24 \cf0 1.58}</string>
+\f0\fs24 \cf0 1.66}</string>
 				<key>VerticalPad</key>
 				<integer>0</integer>
 			</dict>
@@ -240,7 +240,7 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
 
-\f0\fs24 \cf0 1.07}</string>
+\f0\fs24 \cf0 1.11}</string>
 				<key>VerticalPad</key>
 				<integer>0</integer>
 			</dict>
@@ -289,7 +289,7 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
 
-\f0\fs24 \cf0 1.85}</string>
+\f0\fs24 \cf0 1.88}</string>
 				<key>VerticalPad</key>
 				<integer>0</integer>
 			</dict>
@@ -338,7 +338,7 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
 
-\f0\fs24 \cf0 1.91}</string>
+\f0\fs24 \cf0 1.87}</string>
 				<key>VerticalPad</key>
 				<integer>0</integer>
 			</dict>
@@ -537,7 +537,7 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
 
-\f0\fs24 \cf0 1.13}</string>
+\f0\fs24 \cf0 1.09}</string>
 				<key>VerticalPad</key>
 				<integer>0</integer>
 			</dict>
@@ -586,7 +586,7 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
 
-\f0\fs24 \cf0 1.15}</string>
+\f0\fs24 \cf0 1.10}</string>
 				<key>VerticalPad</key>
 				<integer>0</integer>
 			</dict>
@@ -635,7 +635,7 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
 
-\f0\fs24 \cf0 2.64}</string>
+\f0\fs24 \cf0 2.59}</string>
 				<key>VerticalPad</key>
 				<integer>0</integer>
 			</dict>
@@ -733,7 +733,7 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
 
-\f0\fs24 \cf0 3.677}</string>
+\f0\fs24 \cf0 3.56}</string>
 				<key>VerticalPad</key>
 				<integer>0</integer>
 			</dict>
@@ -782,7 +782,7 @@
 {\colortbl;\red255\green255\blue255;}
 \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
 
-\f0\fs24 \cf0 4.66}</string>
+\f0\fs24 \cf0 4.68}</string>
 				<key>VerticalPad</key>
 				<integer>0</integer>
 			</dict>
@@ -1384,7 +1384,7 @@
 	<key>MasterSheets</key>
 	<array/>
 	<key>ModificationDate</key>
-	<string>2012-02-20 18:22:12 +0000</string>
+	<string>2012-02-23 09:24:34 +0000</string>
 	<key>Modifier</key>
 	<string>Nobuyasu Oshiro</string>
 	<key>NotesVisible</key>
@@ -1465,7 +1465,7 @@
 			</dict>
 		</array>
 		<key>Frame</key>
-		<string>{{974, 113}, {693, 938}}</string>
+		<string>{{452, 42}, {693, 938}}</string>
 		<key>ListView</key>
 		<true/>
 		<key>OutlineWidth</key>
--- a/paper/resume.tex	Wed Feb 22 21:11:09 2012 +0900
+++ b/paper/resume.tex	Thu Feb 23 20:30:03 2012 +0900
@@ -85,7 +85,7 @@
 CbC には通常の C の関数からコードセグメントに継続する際,
  その関数から値を戻す処理への継続を得ることができる.
 これを環境付き継続という.
-環境付き継続は, \verb+__environment+ と \verb+__return+ キーワードを
+環境付き継続は, \verb+_CbC_environment+ と \verb+_CbC_return+ キーワードを
 引数に渡しコードセグメントとして扱うことで使用できる.
 %\verb+environment+ は 環境を表す情報を持つ.
 %\verb+__return+ は環境付き継続の行き先であり, 関数の戻り値と\verb+__environment+ の二つの引数を
@@ -93,7 +93,7 @@
 %GCC内部では, \verb+__return+ は, 関数内で定義された \verb+_cbc_internal_return+関数へのポインタを返す.
 %戻値は, \verb+cbc_internal_return+ 関数内で定義された変数\verb+retval+を通して返される(Listing\ref{code:retval}) .
 %実際には \verb+__return+ キーワードにより GCC 内部でlisting\ref{code:retval}のコードが生成されている.
-実際には \verb+__return+ キーワードにより GCC 内部で次の様なコードが生成されている.
+実際には \verb+_CbC_return+ キーワードにより GCC 内部で次の様なコードが生成されている.
 \begin{figure}[h]
   \begin{minipage}[b]{.45\textwidth}
 %    \begin{lstlisting}[caption=環境付き継続を行うコード,label=code:retval]
@@ -119,7 +119,7 @@
 
 \subsubsection{環境付き継続の問題と改良}
 環境付き継続で特に重要になってくるのが retval 変数の値をどこに確保するかである.
-元々の実装ではListing\ref{code:retval}の様に static で値の確保を行なっていた.
+元々の実装では static で値の確保を行なっていた.
 しかしこれではスレッドセーフではない.
 そこで retval 変数の値を static thread local で確保することでこの問題の解決を行った.
 
@@ -149,6 +149,7 @@
 今回実装を行った GCC-4.6 ベース と安定版である GCC-4.4 ベース,
  それと Micro-C の CbC コンパイラでベンチマークを行った.
 プログラムは Micro-C のベンチマークにも使用されるものである.
+このプログラムは演算と継続を交互に行う.
 引数 1 は C で書かれたプログラムをただ CbC へと変換したプログラムになる.
 引数 2 と 3 は Micro-C 用に手動で最適化を行ったプログラムである.
 また評価は \verb+x86_64+ 上の CentOS 5.7 で行った.
@@ -168,7 +169,9 @@
 次に GCC-4.5 と GCC-4.6 を比較してみる.
 手動で最適化を行なっている引数 2 と 3 の時は余り差は無い.
 だが, 引数 1 の時は GCC-4.6 版が GCC-4.5 に比べて 1.67 倍程早い.
-この結果から GCC-4.5 に比べ GCC-4.6 の最適化が修正されよりよくなっているのが確認できる.
+アセンブラの比較も行なってみると, GCC-4.6 版の方では演算の結果が求められていて
+必要最小限の継続だけを行なっていた.
+アセンブラとこの結果から GCC-4.5 に比べ GCC-4.6 の最適化が修正されよりよくなっているのが確認できた.
 
 \section{今後の課題}
 今回, CbC コンパイラを GCC-4.6 へとアップデートを行った.