Mercurial > hg > Papers > 2012 > nobu-thesis
changeset 39:a6540714dda9 draft
modify presen
line wrap: on
line diff
--- a/paper/chapter2.tex Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/chapter2.tex Tue Feb 28 20:01:28 2012 +0900 @@ -3,7 +3,7 @@ \subsection{cc1} - +GCC はコンパイルだけではなく, アセンブルとリンクも行う. \section{GCC の内部表現}
--- a/paper/chapter4.tex Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/chapter4.tex Tue Feb 28 20:01:28 2012 +0900 @@ -1,4 +1,4 @@ -\chapter{評価} +\chapter{評価}\label{chap:appraising} 今回実装を行った GCC-4.6 ベース と以前のバージョンある GCC-4.4 と GCC-4.5 ベース, それと Micro-C の CbC コンパイラでベンチマークを行った. プログラムは Micro-C のベンチマークにも使用されるものである. @@ -37,15 +37,52 @@ -\subsection{考察} +\subsection{評価の考察} まず, Micro-C 版より GCC 版コンパイラの方が結果が良いことが確認できる. 次に GCC-4.5 と GCC-4.6 を比較してみる. 手動で最適化を行なっている引数 2 と 3 の時は余り差は無い. -だが, 引数 1 の時は GCC-4.6 版が GCC-4.5 に比べて 1.67 倍程早い. -アセンブラの比較も行なってみると, GCC-4.6 版の方では演算の結果が求められていて -必要最小限の継続だけを行なっていた. -アセンブラとこの結果から GCC-4.5 に比べ GCC-4.6 の最適化が修正されよりよくなっているのが確認できた. +だが, 引数 1 の時は 32bit, 64bit 共に GCC-4.6 版が 1.5 倍以上早い. + + +\subsection{アセンブラコードの比較の結果} +では具体的にはどのようなより良い最適化になっているのかを調べてみる. +結果に差の出た引数 1 の時のアセンブラコードを比較した. +まず, プログラムの大まかな流れを図\ref{fig:conv1_arg0}に示す. + + +\begin{figure}[htpb] + \begin{center} + \includegraphics[width=100mm]{figure/conv1_arg0.pdf} + \end{center} + \caption{conv1プログラムの挙動} + \label{fig:conv1_arg0} +\end{figure} +四角は cs を, 矢印は継続を表している. +また, cs の中の処理は演算の部分は省いて継続に関する部分だけにしてある. +プログラムの処理は cs f から継続が始まり cs g\_h1 まで継続を行いループするという流れになる. +注意点としては, cs f\_g1, cs g\_h1 への継続は cs f\_g0, cs f\_g で自作のスタック(実態は構造体)に +関数ポインタを入れて置き継続している部分である. + +まず, CbC-GCC-4.5 のアセンブラをみてみると main 関数から``call f''により継続が行われていた. +cs f へと継続後は図\ref{fig:conv1_arg0}に示す通りの動作を行った. + +しかし, CbC-GCC-4.6 の方では main 関数からは``call g\_h1''から継続が行われ, loop check 後も +g\_h1 から継続されていた. +この処理を図\ref{fig:conv1_arg0_2}に示す. +\begin{figure}[htpb] + \begin{center} + \includegraphics[width=100mm]{figure/conv1_arg0_2.pdf} + \end{center} + \caption{conv1プログラムの挙動( CbC-GCC-4.6 )} + \label{fig:conv1_arg0_2} +\end{figure} + +cs f から cs h まで継続の処理はインライン展開によりまとめて計算されて定数として出されていた. +cs g\_h1 と cs f\_g1 の処理がインライン展開されないのは, 関数ポインタとして扱っていた為だと思われる. + + +
--- a/paper/figure/CbC_revision_graph.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/CbC_revision_graph.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./CbC_revision_graph.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 595 842 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/cbc-repo.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/cbc-repo.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./cbc-repo.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 567 313 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/cbc_replace.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/cbc_replace.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./cbc_replace.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 665 851 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/code-id.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/code-id.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./code-id.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 593 213 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/code-parse.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/code-parse.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./code-parse.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 593 246 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/codesegment.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/codesegment.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./codesegment.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 611 302 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/continuation.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/continuation.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./continuation.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 422 435 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/conv1_arg0.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/conv1_arg0.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./conv1_arg0.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 735 285 -%%CreationDate: Fri Feb 24 23:30:45 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/conv1_arg0_2.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/conv1_arg0_2.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./conv1_arg0_2.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 560 188 -%%CreationDate: Fri Feb 24 23:25:37 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/conv1_for_resume.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/conv1_for_resume.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./conv1_for_resume.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 468 243 -%%CreationDate: Fri Feb 24 20:29:54 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/conv1_linux.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/conv1_linux.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./conv1_linux.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 468 444 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/conv1_mac.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/conv1_mac.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./conv1_mac.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 473 495 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/cs_prog.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/cs_prog.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./cs_prog.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 417 282 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/cs_prog_code.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/cs_prog_code.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./cs_prog_code.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 557 137 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/cs_stack.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/cs_stack.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./cs_stack.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 515 338 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/env_code.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/env_code.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./env_code.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 557 230 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/factorial.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/factorial.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./factorial.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 557 584 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/fastcall.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/fastcall.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./fastcall.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 656 459 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/gcc-repo.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/gcc-repo.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./gcc-repo.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 488 271 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/graph.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/graph.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./graph.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 726 1152 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/graph1.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/graph1.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./graph1.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 578 2039 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/graph2.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/graph2.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./graph2.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 993 1527 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/graph_2.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/graph_2.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./graph_2.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 782 1194 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/graph_gray.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/graph_gray.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./graph_gray.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 668 1106 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/ir.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/ir.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./ir.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 629 329 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/linux_conv.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/linux_conv.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./linux_conv.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 468 369 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/mac_conv.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/mac_conv.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./mac_conv.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 468 411 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/mercurial_update.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/mercurial_update.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./mercurial_update.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 482 567 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/regi-id.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/regi-id.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./regi-id.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 593 206 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/regi-node.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/regi-node.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./regi-node.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 593 180 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/ret_val_code.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/ret_val_code.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./ret_val_code.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 557 375 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/return_factorial.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/return_factorial.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./return_factorial.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 557 290 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/rid-goto.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/rid-goto.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./rid-goto.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 656 731 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/rid_goto.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/rid_goto.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./rid_goto.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 656 479 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/tail_call_flag.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/tail_call_flag.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./tail_call_flag.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 635 212 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/figure/typedefrec.bb Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/figure/typedefrec.bb Tue Feb 28 20:01:28 2012 +0900 @@ -1,5 +1,5 @@ %%Title: ./typedefrec.pdf %%Creator: extractbb 20110311 %%BoundingBox: 0 0 593 209 -%%CreationDate: Fri Feb 24 14:40:08 2012 +%%CreationDate: Tue Feb 28 17:11:46 2012
--- a/paper/graffle/continuation.graffle Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/graffle/continuation.graffle Tue Feb 28 20:01:28 2012 +0900 @@ -482,7 +482,7 @@ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc \f0\fs28 \cf0 func\ -C}</string> +f}</string> <key>VerticalPad</key> <integer>0</integer> </dict> @@ -532,7 +532,7 @@ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc \f0\fs28 \cf0 func\ -B}</string> +g}</string> <key>VerticalPad</key> <integer>0</integer> </dict> @@ -581,8 +581,7 @@ {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc -\f0\fs28 \cf0 func\ -A}</string> +\f0\fs28 \cf0 main}</string> <key>VerticalPad</key> <integer>0</integer> </dict> @@ -635,7 +634,7 @@ <key>MasterSheets</key> <array/> <key>ModificationDate</key> - <string>2012-02-27 19:55:32 +0000</string> + <string>2012-02-28 10:34:01 +0000</string> <key>Modifier</key> <string>Nobuyasu Oshiro</string> <key>NotesVisible</key>
--- a/paper/graffle/conv1_linux.graffle Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/graffle/conv1_linux.graffle Tue Feb 28 20:01:28 2012 +0900 @@ -1634,7 +1634,7 @@ {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc -\f0\fs24 \cf0 4.68}</string> +\f0\fs24 \cf0 4.66}</string> <key>VerticalPad</key> <integer>0</integer> </dict> @@ -2240,7 +2240,7 @@ <key>MasterSheets</key> <array/> <key>ModificationDate</key> - <string>2012-02-26 05:46:20 +0000</string> + <string>2012-02-28 08:43:20 +0000</string> <key>Modifier</key> <string>Nobuyasu Oshiro</string> <key>NotesVisible</key> @@ -2321,7 +2321,7 @@ </dict> </array> <key>Frame</key> - <string>{{2810, 126}, {693, 938}}</string> + <string>{{513, 70}, {693, 938}}</string> <key>ListView</key> <true/> <key>OutlineWidth</key>
--- a/paper/resume.tex Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/resume.tex Tue Feb 28 20:01:28 2012 +0900 @@ -93,10 +93,10 @@ 結果を図\ref{fig:conv1}に示す. プログラムは Micro-C のベンチマークにも使用されるものである. このプログラムは演算と継続を交互に行う処理をループの回数分繰り返すというものである. -引数 1 は自作のスタックを作り, そこに継続先のコードセグメント(以下 cs)と値を確保して -渡していくプログラムである. -引数 2 は Micro-C 用に手動で最適化を行ったプログラムである. -引数 3 は C で書かれたプログラムをただ CbC へと変換したプログラムになる. +引数 1 は C で書かれたプログラムをただ CbC へと変換したプログラムになる。 +%自作のスタックを作り, そこに継続先のコードセグメント(以下 cs)と値を確保して +%渡していくプログラムである. +引数 2 と 3 のプログラムは Micro-C 用に手動で最適化を行ったプログラムである. また評価は \verb+x86_64+ 上の Linux で行った. \begin{figure}[htpb]
--- a/paper/thesis.tex Tue Feb 28 05:28:59 2012 +0900 +++ b/paper/thesis.tex Tue Feb 28 20:01:28 2012 +0900 @@ -93,6 +93,7 @@ \input{appendix.tex} %付録 +\input{conv1.tex} \printindex \end{document}
--- a/presen/cbc.md Tue Feb 28 05:28:59 2012 +0900 +++ b/presen/cbc.md Tue Feb 28 20:01:28 2012 +0900 @@ -6,7 +6,7 @@ 研究目的 --------- -.notes: plop +.notes: <li><font color=red size=5em>状態遷移記述をベースとしたより細かい単位でのプログラミングを実現する</font></li> - 組込みソフト、Real-time処理、通信プロトコル記述、どれも状態遷移ベース @@ -275,20 +275,20 @@ <tr> <td width=50%> <pre style="margin-left:5%"> -void func(){ +void func_b(){ A; B; } -int main() { - func(); - func(); +void func_a() { + func_b(); + func_b(); } </pre> </td> <td> <pre style="margin-left:5%"> -int main() { +void func_a() { A; B; A; @@ -298,7 +298,7 @@ </td> </tr> </table> -<li>func の呼び出しがなくなっている。</li> +<li>func_b の呼び出しがなくなっている。</li> --- @@ -337,8 +337,6 @@ - また、既存の最適化の改良だけでなく新たな最適化の追加等も行われていく。 - それらの恩恵を受ける為にも GCC のアップデートに合わせていく事は今後も重要である。 - - --- @@ -347,7 +345,7 @@ ======== - 今回 CbC-GCC を GCC-4.6 へとアップデートを行った。 - アップデートにより、よりよいコードを生成する CbC のコンパイラを用意することができた。 -- また、最適化の強制付与やといった実装の修正も行えた。 +- また、最適化の強制付与といった実装の修正も行えた。 - 細かな実装を除けば, CbC-GCC は今後 GCC のアップデートに合わせていくだけとなる。 @@ -358,6 +356,7 @@ --- + jmp と call ======== <table width=100%> @@ -369,6 +368,51 @@ --- +conv1 プログラム +======== +<li>性能評価で用いた conv1 プログラムの C 版</li> +<pre style="width:5%;" border=1> +f0(int i) { + int k,j; + k = 3+i; + j = g0(i+3); + return k+4+j; +} +g0(int i) { + return h0(i+4)+i; +} +h0(int i) { + return i+4; +}</pre> +<li>性能評価はこのプログラムを CbC へと書き換えて行なっている。</li> + +--- + + +CbC-GCC のアップデート手法 +======== + +<ol> +<li>GCC のソースを入れるリポジトリを用意する。</li> +<li>GCC のリポジトリの中身を全て消し、新しい GCC を入れて新しいファイルは追加、消えたファイルは削除する。</li> +<li>コミット</li> +</ol> + + +CbC-GCC のリポジトリ +--------- +<ol> +<li>GCC のソースから pull</li> +<li>merge を行う</li> +<li>衝突のあったファイルを手動でマージする</li> +<li>コミット</li> +</ol> + +--- + + + + 構文の追加 ========
--- a/presen/config.cfg Tue Feb 28 05:28:59 2012 +0900 +++ b/presen/config.cfg Tue Feb 28 20:01:28 2012 +0900 @@ -1,4 +1,3 @@ [landslide] theme = tango source = ./cbc.md -css = ./presen.css
--- a/presen/presentation.html Tue Feb 28 05:28:59 2012 +0900 +++ b/presen/presentation.html Tue Feb 28 20:01:28 2012 +0900 @@ -28,18 +28,14 @@ <title>Continuation based C の <br> GCC 4.6による実装</title> <!-- Styles --> - <link rel="stylesheet" media="print" href="file:///Library/Python/2.7/site-packages/landslide-1.0.1-py2.7.egg/landslide/themes/default/css/print.css"> - <link rel="stylesheet" media="screen, projection" href="file:///Library/Python/2.7/site-packages/landslide-1.0.1-py2.7.egg/landslide/themes/tango/css/screen.css"> - + <link rel="stylesheet" media="print" href="theme/css/print.css"> + <link rel="stylesheet" media="screen, projection" href="theme/css/screen.css"> - - <link rel="stylesheet" href="file:///Users/aotokage/hg/Papers/2012/nobu-thesis/presen/presen.css"> - <!-- /Styles --> <!-- Javascripts --> - <script type="text/javascript" src="file:///Library/Python/2.7/site-packages/landslide-1.0.1-py2.7.egg/landslide/themes/default/js/slides.js"></script> + <script type="text/javascript" src="theme/js/slides.js"></script> <!-- /Javascripts --> @@ -52,7 +48,7 @@ </div> <div class="slides"> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -70,17 +66,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 1/22 + 1/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide has_notes"> <div class="inner"> @@ -88,7 +84,7 @@ <header><h2>研究目的</h2></header> - <section><p class="notes">plop</p> + <section><p class="notes"></p> <li><font color=red size=5em>状態遷移記述をベースとしたより細かい単位でのプログラミングを実現する</font></li> <ul> @@ -112,17 +108,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 2/22 + 2/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -142,7 +138,7 @@ <table width=100% border=1> <tr> <td style="margin-left:auto; margin-right: auto; text-align: center; width:50%" > - <img src="file:///Users/aotokage/hg/Papers/2012/nobu-thesis/presen/./pix/codesegment.png" style="width:100%"> + <img src="./pix/codesegment.png" style="width:100%"> </td> <td> <pre style="margin-left:5%"> @@ -166,17 +162,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 3/22 + 3/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -207,7 +203,7 @@ </tr> <t> <td style="margin-left:auto; margin-right: auto; text-align: center;"> - <img class="scale" src="file:///Users/aotokage/hg/Papers/2012/nobu-thesis/presen/./pix/func_call.png" style="height: 18em;"> + <img class="scale" src="./pix/func_call.png" style="height: 18em;"> </td> <td style="margin-left:auto; margin-right: auto; text-align: center;"> <img class="scale" src="./pix/cs_stack.png" style="height: 18em;"> @@ -225,17 +221,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 4/22 + 4/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -289,17 +285,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 5/22 + 5/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -313,7 +309,7 @@ <table width=100%> <caption>GCC のアセンブラ言語出力までの流れ</caption> <td style="margin:auto; text-align:center;"> - <img src="file:///Users/aotokage/hg/Papers/2012/nobu-thesis/presen/./pix/ir.png" style="height:15em"> + <img src="./pix/ir.png" style="height:15em"> </td> </table> <li>ソースコードはアセンブラに変換される間に 4 つのデータ構造に変換される。</li> @@ -329,17 +325,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 6/22 + 6/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -372,7 +368,7 @@ }</pre> </td> <td> - <img src="file:///Users/aotokage/hg/Papers/2012/nobu-thesis/presen/./pix/continuation.png" style="height:80%;"> + <img src="./pix/continuation.png" style="height:80%;"> </td> </tr> </table></section> @@ -387,17 +383,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 7/22 + 7/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -430,17 +426,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 8/22 + 8/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -471,17 +467,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 9/22 + 9/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -496,7 +492,7 @@ <caption>各コンパイラにより生成されたプログラムの速度比較</caption> <tr> <td style="margin:auto; text-align:center;"> - <img src="file:///Users/aotokage/hg/Papers/2012/nobu-thesis/presen/./pix/conv1_for_resume.png" style="height:15em"> + <img src="./pix/conv1_for_resume.png" style="height:15em"> </td> <td> <img src="./pix/conv1_mac_for_presen.png" style="height:15em"> @@ -524,17 +520,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 10/22 + 10/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -554,20 +550,20 @@ <tr> <td width=50%> <pre style="margin-left:5%"> -void func(){ +void func_b(){ A; B; } -int main() { - func(); - func(); +void func_a() { + func_b(); + func_b(); } </pre> </td> <td> <pre style="margin-left:5%"> -int main() { +void func_a() { A; B; A; @@ -577,7 +573,7 @@ </td> </tr> </table> -<li>func の呼び出しがなくなっている。</li></section> +<li>func_b の呼び出しがなくなっている。</li></section> </div> <div class="presenter_notes"> @@ -589,17 +585,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 11/22 + 11/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -616,7 +612,7 @@ </tr> <tr> <td style="margin:auto; text-align:center;"> - <img src="file:///Users/aotokage/hg/Papers/2012/nobu-thesis/presen/./pix/state_conv1_noopt.png" style="width:65%;"> + <img src="./pix/state_conv1_noopt.png" style="width:65%;"> </td> <td style="margin:auto; text-align:center;"> <img src="./pix/state_conv1_45.png" style="width:65%;"> @@ -642,17 +638,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 12/22 + 12/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -676,17 +672,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 13/22 + 13/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -697,7 +693,7 @@ <section><ul> <li>今回 CbC-GCC を GCC-4.6 へとアップデートを行った。</li> <li>アップデートにより、よりよいコードを生成する CbC のコンパイラを用意することができた。</li> -<li>また、最適化の強制付与やといった実装の修正も行えた。</li> +<li>また、最適化の強制付与といった実装の修正も行えた。</li> <li>細かな実装を除けば, CbC-GCC は今後 GCC のアップデートに合わせていくだけとなる。</li> </ul> <h2>今後の課題</h2> @@ -716,17 +712,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 14/22 + 14/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -737,7 +733,7 @@ <section><p><table width=100%> <caption>インライン展開無しの conv1 プログラム実行結果</caption> <td style="text-align:center;"> -<img src="file:///Users/aotokage/hg/Papers/2012/nobu-thesis/presen/./pix/fno_inline.png"> +<img src="./pix/fno_inline.png"> </td> </table></p></section> @@ -751,17 +747,103 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 15/22 + 15/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> + <div class="slide-wrapper"> + <div class="slide"> + <div class="inner"> + + <header><h1>conv1 プログラム</h1></header> + + + <section><p><li>性能評価で用いた conv1 プログラムの C 版</li> +<pre style="width:5%;" border=1> +f0(int i) { + int k,j; + k = 3+i; + j = g0(i+3); + return k+4+j; +} +g0(int i) { + return h0(i+4)+i; +} +h0(int i) { + return i+4; +}</pre> +<li>性能評価はこのプログラムを CbC へと書き換えて行なっている。</li></p></section> + + </div> + <div class="presenter_notes"> + <header><h1>Presenter Notes</h1></header> + <section> + + </section> + </div> + <footer> + + <aside class="source"> + Source: <a href="cbc.md">cbc.md</a> + </aside> + + <aside class="page_number"> + 16/24 + </aside> + </footer> + </div> + </div> + + <!-- slide source: cbc.md --> + <div class="slide-wrapper"> + <div class="slide"> + <div class="inner"> + + <header><h1>CbC-GCC のアップデート手法</h1></header> + + + <section><ol> +<li>GCC のソースを入れるリポジトリを用意する。</li> +<li>GCC のリポジトリの中身を全て消し、新しい GCC を入れて新しいファイルは追加、消えたファイルは削除する。</li> +<li>コミット</li> +</ol> + +<h2>CbC-GCC のリポジトリ</h2> +<p><ol> +<li>GCC のソースから pull</li> +<li>merge を行う</li> +<li>衝突のあったファイルを手動でマージする</li> +<li>コミット</li> +</ol></p></section> + + </div> + <div class="presenter_notes"> + <header><h1>Presenter Notes</h1></header> + <section> + + </section> + </div> + <footer> + + <aside class="source"> + Source: <a href="cbc.md">cbc.md</a> + </aside> + + <aside class="page_number"> + 17/24 + </aside> + </footer> + </div> + </div> + + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -800,17 +882,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 16/22 + 18/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -851,17 +933,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 17/22 + 19/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -898,17 +980,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 18/22 + 20/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -924,7 +1006,7 @@ </tr> <tr> <td style="margin:auto; text-align:center;"> - <img src="file:///Users/aotokage/hg/Papers/2012/nobu-thesis/presen/./pix/linux_conv_nofastcall.png" style="height:15em;"> + <img src="./pix/linux_conv_nofastcall.png" style="height:15em;"> </td> </tr> <tr> @@ -946,17 +1028,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 19/22 + 21/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -973,7 +1055,7 @@ <table width=100%> <tr> <td style="margin:auto; text-align:center;"> -<img src="file:///Users/aotokage/hg/Papers/2012/nobu-thesis/presen/./pix/cs_prog.png"> +<img src="./pix/cs_prog.png"> </td> </tr> </table></section> @@ -988,17 +1070,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 20/22 + 22/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -1010,7 +1092,7 @@ <caption>各コンパイラにより生成されたコードの速度比較</caption> <tr> <td style="margin:auto; text-align:center;"> - <img src="file:///Users/aotokage/hg/Papers/2012/nobu-thesis/presen/./pix/O3_conv1_linux.png" style="height:15em"> + <img src="./pix/O3_conv1_linux.png" style="height:15em"> </td> <td> <img src="./pix/O3_conv1_mac.png" style="height:15em"> @@ -1032,17 +1114,17 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 21/22 + 23/24 </aside> </footer> </div> </div> - <!-- slide source: ./cbc.md --> + <!-- slide source: cbc.md --> <div class="slide-wrapper"> <div class="slide"> <div class="inner"> @@ -1122,11 +1204,11 @@ <footer> <aside class="source"> - Source: <a href="./cbc.md">./cbc.md</a> + Source: <a href="cbc.md">cbc.md</a> </aside> <aside class="page_number"> - 22/22 + 24/24 </aside> </footer> </div> @@ -1232,47 +1314,59 @@ <tr id="toc-row-16"> - <th><a href="#slide16">構文の追加</a></th> + <th><a href="#slide16">conv1 プログラム</a></th> <td><a href="#slide16">16</a></td> </tr> <tr id="toc-row-17"> - <th><a href="#slide17">conv1 プログラム</a></th> + <th><a href="#slide17">CbC-GCC のアップデート手法</a></th> <td><a href="#slide17">17</a></td> </tr> <tr id="toc-row-18"> - <th><a href="#slide18">CbC の実装: 環境付き継続</a></th> + <th><a href="#slide18">構文の追加</a></th> <td><a href="#slide18">18</a></td> </tr> <tr id="toc-row-19"> - <th><a href="#slide19">CbC 引数渡し</a></th> + <th><a href="#slide19">conv1 プログラム</a></th> <td><a href="#slide19">19</a></td> </tr> <tr id="toc-row-20"> - <th><a href="#slide20">引数の並びに上書きコピー</a></th> + <th><a href="#slide20">CbC の実装: 環境付き継続</a></th> <td><a href="#slide20">20</a></td> </tr> <tr id="toc-row-21"> - <th><a href="#slide21">最適化の比較</a></th> + <th><a href="#slide21">CbC 引数渡し</a></th> <td><a href="#slide21">21</a></td> </tr> <tr id="toc-row-22"> - <th><a href="#slide22">最適化の比較</a></th> + <th><a href="#slide22">引数の並びに上書きコピー</a></th> <td><a href="#slide22">22</a></td> </tr> + <tr id="toc-row-23"> + <th><a href="#slide23">最適化の比較</a></th> + <td><a href="#slide23">23</a></td> + </tr> + + + <tr id="toc-row-24"> + <th><a href="#slide24">最適化の比較</a></th> + <td><a href="#slide24">24</a></td> + </tr> + + </table> </div>