# HG changeset patch # User Nobuyasu Oshiro # Date 1330426888 -32400 # Node ID a6540714dda92fb0f1ff120db696ed6dd30fcebc # Parent bbebd829c4234e31ff210216202e1ed0f592e64b modify presen diff -r bbebd829c423 -r a6540714dda9 paper/chapter2.tex --- 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 の内部表現} diff -r bbebd829c423 -r a6540714dda9 paper/chapter4.tex --- 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 の処理がインライン展開されないのは, 関数ポインタとして扱っていた為だと思われる. + + + diff -r bbebd829c423 -r a6540714dda9 paper/figure/CbC_revision_graph.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/cbc-repo.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/cbc_replace.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/code-id.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/code-parse.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/codesegment.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/continuation.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/conv1_arg0.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/conv1_arg0_2.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/conv1_for_resume.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/conv1_linux.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/conv1_mac.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/cs_prog.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/cs_prog_code.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/cs_stack.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/env_code.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/factorial.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/fastcall.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/gcc-repo.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/graph.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/graph1.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/graph2.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/graph_2.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/graph_gray.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/ir.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/linux_conv.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/mac_conv.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/mercurial_update.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/regi-id.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/regi-node.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/ret_val_code.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/return_factorial.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/rid-goto.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/rid_goto.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/tail_call_flag.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/figure/typedefrec.bb --- 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 diff -r bbebd829c423 -r a6540714dda9 paper/graffle/continuation.graffle --- 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} +f} VerticalPad 0 @@ -532,7 +532,7 @@ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc \f0\fs28 \cf0 func\ -B} +g} VerticalPad 0 @@ -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} +\f0\fs28 \cf0 main} VerticalPad 0 @@ -635,7 +634,7 @@ MasterSheets ModificationDate - 2012-02-27 19:55:32 +0000 + 2012-02-28 10:34:01 +0000 Modifier Nobuyasu Oshiro NotesVisible diff -r bbebd829c423 -r a6540714dda9 paper/graffle/conv1_linux.graffle --- 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} +\f0\fs24 \cf0 4.66} VerticalPad 0 @@ -2240,7 +2240,7 @@ MasterSheets ModificationDate - 2012-02-26 05:46:20 +0000 + 2012-02-28 08:43:20 +0000 Modifier Nobuyasu Oshiro NotesVisible @@ -2321,7 +2321,7 @@ Frame - {{2810, 126}, {693, 938}} + {{513, 70}, {693, 938}} ListView OutlineWidth diff -r bbebd829c423 -r a6540714dda9 paper/resume.tex --- 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] diff -r bbebd829c423 -r a6540714dda9 paper/thesis.tex --- 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} diff -r bbebd829c423 -r a6540714dda9 presen/cbc.md --- 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:
  • 状態遷移記述をベースとしたより細かい単位でのプログラミングを実現する
  • - 組込みソフト、Real-time処理、通信プロトコル記述、どれも状態遷移ベース @@ -275,20 +275,20 @@
    -void func(){
    +void func_b(){
       A;
       B;
     }
     
    -int main() {
    -  func();
    -  func();
    +void func_a() {
    +  func_b();
    +  func_b();
     }
     
    -int main() {
    +void func_a() {
       A;
       B;
       A;
    @@ -298,7 +298,7 @@
     
     
     
    -
  • func の呼び出しがなくなっている。
  • +
  • func_b の呼び出しがなくなっている。
  • --- @@ -337,8 +337,6 @@ - また、既存の最適化の改良だけでなく新たな最適化の追加等も行われていく。 - それらの恩恵を受ける為にも GCC のアップデートに合わせていく事は今後も重要である。 - - --- @@ -347,7 +345,7 @@ ======== - 今回 CbC-GCC を GCC-4.6 へとアップデートを行った。 - アップデートにより、よりよいコードを生成する CbC のコンパイラを用意することができた。 -- また、最適化の強制付与やといった実装の修正も行えた。 +- また、最適化の強制付与といった実装の修正も行えた。 - 細かな実装を除けば, CbC-GCC は今後 GCC のアップデートに合わせていくだけとなる。 @@ -358,6 +356,7 @@ --- + jmp と call ======== @@ -369,6 +368,51 @@ --- +conv1 プログラム +======== +
  • 性能評価で用いた conv1 プログラムの C 版
  • +
    +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;
    +}
    +
  • 性能評価はこのプログラムを CbC へと書き換えて行なっている。
  • + +--- + + +CbC-GCC のアップデート手法 +======== + +
      +
    1. GCC のソースを入れるリポジトリを用意する。
    2. +
    3. GCC のリポジトリの中身を全て消し、新しい GCC を入れて新しいファイルは追加、消えたファイルは削除する。
    4. +
    5. コミット
    6. +
    + + +CbC-GCC のリポジトリ +--------- +
      +
    1. GCC のソースから pull
    2. +
    3. merge を行う
    4. +
    5. 衝突のあったファイルを手動でマージする
    6. +
    7. コミット
    8. +
    + +--- + + + + 構文の追加 ======== diff -r bbebd829c423 -r a6540714dda9 presen/config.cfg --- 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 diff -r bbebd829c423 -r a6540714dda9 presen/pix/continuation.png Binary file presen/pix/continuation.png has changed diff -r bbebd829c423 -r a6540714dda9 presen/pix/conv1_linux.png Binary file presen/pix/conv1_linux.png has changed diff -r bbebd829c423 -r a6540714dda9 presen/presentation.html --- 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 @@ Continuation based C の <br> GCC 4.6による実装 - - - + + - - - - + @@ -52,7 +48,7 @@
    - +
    @@ -70,17 +66,17 @@
    - +
    @@ -88,7 +84,7 @@

    研究目的

    -

    plop

    +

  • 状態遷移記述をベースとしたより細かい単位でのプログラミングを実現する
    • @@ -112,17 +108,17 @@
    - +
    @@ -142,7 +138,7 @@
    - +
    @@ -166,17 +162,17 @@
               
             
           
           
    -      
    +      
           
    @@ -207,7 +203,7 @@
    - + @@ -225,17 +221,17 @@ - +
    @@ -289,17 +285,17 @@
    - +
    @@ -313,7 +309,7 @@
    GCC のアセンブラ言語出力までの流れ
    - +
  • ソースコードはアセンブラに変換される間に 4 つのデータ構造に変換される。
  • @@ -329,17 +325,17 @@
    - +
    @@ -372,7 +368,7 @@ }
    - +
    @@ -387,17 +383,17 @@ - +
    @@ -430,17 +426,17 @@
    - +
    @@ -471,17 +467,17 @@
    - +
    @@ -496,7 +492,7 @@ 各コンパイラにより生成されたプログラムの速度比較 - + @@ -524,17 +520,17 @@
    - +
    @@ -554,20 +550,20 @@
    -void func(){
    +void func_b(){
       A;
       B;
     }
     
    -int main() {
    -  func();
    -  func();
    +void func_a() {
    +  func_b();
    +  func_b();
     }
     
    -int main() {
    +void func_a() {
       A;
       B;
       A;
    @@ -577,7 +573,7 @@
     
     
     
    -
  • func の呼び出しがなくなっている。
  • +
  • func_b の呼び出しがなくなっている。
  • @@ -589,17 +585,17 @@
    - +
    @@ -616,7 +612,7 @@ - + @@ -642,17 +638,17 @@
    - +
    @@ -676,17 +672,17 @@
    - +
    @@ -697,7 +693,7 @@
    • 今回 CbC-GCC を GCC-4.6 へとアップデートを行った。
    • アップデートにより、よりよいコードを生成する CbC のコンパイラを用意することができた。
    • -
    • また、最適化の強制付与やといった実装の修正も行えた。
    • +
    • また、最適化の強制付与といった実装の修正も行えた。
    • 細かな実装を除けば, CbC-GCC は今後 GCC のアップデートに合わせていくだけとなる。

    今後の課題

    @@ -716,17 +712,17 @@
    - +
    @@ -737,7 +733,7 @@

    インライン展開無しの conv1 プログラム実行結果
    - +

    @@ -751,17 +747,103 @@
    - + +
    +
    +
    + +

    conv1 プログラム

    + + +

  • 性能評価で用いた conv1 プログラムの C 版
  • +
    +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;
    +}
    +
  • 性能評価はこのプログラムを CbC へと書き換えて行なっている。
  • + +
    +
    +

    Presenter Notes

    +
    + +
    +
    +
    + + + + +
    +
    +
    + + +
    +
    +
    + +

    CbC-GCC のアップデート手法

    + + +
      +
    1. GCC のソースを入れるリポジトリを用意する。
    2. +
    3. GCC のリポジトリの中身を全て消し、新しい GCC を入れて新しいファイルは追加、消えたファイルは削除する。
    4. +
    5. コミット
    6. +
    + +

    CbC-GCC のリポジトリ

    +

      +
    1. GCC のソースから pull
    2. +
    3. merge を行う
    4. +
    5. 衝突のあったファイルを手動でマージする
    6. +
    7. コミット
    8. +

    + +
    +
    +

    Presenter Notes

    +
    + +
    +
    +
    + + + + +
    +
    +
    + +
    @@ -800,17 +882,17 @@
    - +
    @@ -851,17 +933,17 @@
    - +
    @@ -898,17 +980,17 @@
    - +
    @@ -924,7 +1006,7 @@ - + @@ -946,17 +1028,17 @@
    - +
    @@ -973,7 +1055,7 @@
    - +
    @@ -988,17 +1070,17 @@
    - +
    @@ -1010,7 +1092,7 @@ 各コンパイラにより生成されたコードの速度比較 - + @@ -1032,17 +1114,17 @@
    - +