changeset 2:72e058e7e594

update
author mir3636
date Sun, 12 Feb 2017 19:02:01 +0900
parents f516c12e5232
children 60756523a9fc
files final_main/chapter3.tex final_main/chapter4.tex final_main/chapter5.tex final_main/main.aux final_main/main.dvi final_main/main.lof final_main/main.log final_main/main.pdf final_main/main.toc
diffstat 9 files changed, 71 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/final_main/chapter3.tex	Sat Feb 11 18:23:22 2017 +0900
+++ b/final_main/chapter3.tex	Sun Feb 12 19:02:01 2017 +0900
@@ -34,7 +34,7 @@
 %\end{figure}
 
 \section{CbC による Gears OS の構文サポート}
-Gears OS では Context という 接続可能な Code/Data Gear のリスト、TaskQueue へのポインタ、Persistent Data Tree へのポインタ、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear がある。
+Gears OS では Context という接続可能な Code/Data Gear のリスト、TaskQueue へのポインタ、Persistent Data Tree へのポインタ、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear がある。
 Gears OS は必要な Code/Data Gear に参照したい場合、この Context を通す必要がある。
 %メインとなる Context と Worker 用の Context があり、TaskQueue と Persistent Data Tree は共有される。
 %Temporal Data Gear のためのメモリ空間は Context 毎に異なり、互いに干渉することはできない。
@@ -43,11 +43,37 @@
 しかし、Context を直接扱うのはセキュリティ上好ましくない。
 そこで Context から必要なデータを取り出して Code Gear に接続する Meta Code Gear である stub を定義し、これを介して間接的に必要な Data Gear にアクセスする。
 
-現在 CbC で Gears OS を記述すると通常の Computation に加えて Meta Computation である stub を記述する必要がある。
-Meta Computation
+%現在 CbC で Gears OS を記述すると通常の Computation に加えて Meta Computation である stub を記述する必要がある。
+%Meta Computation
+
 
 
-Context や stub は Meta Computation であるため。
+%Context や stub は Meta Computation であるため。
+
+\section{Meta Code Gear}
+Gears OS では Code Gear 間の遷移に meta レベルの Meta Code Gear を挟む。
+その様子を表したのが図 \ref{fig:metaCS}である。
+通常レベルの Code Gear は一度 Meta Code Gear へと継続し、その後次の Code Gear へと継続する。
+Meta Code Gear は Meta Computation を行う Code Gear で、メモリの確保やネットワーク管理等が Meta Computation にあたる。
+Code Gear にはこれらの処理を書かず、Meta Code Gear に必要に応じて記述する。
+%通常レベルの Code Gear からは Meta Code Gear への継続は見えず、通常レベルの Code Gear に直接継続しているように見えるべきである
+
+\begin{figure}[htpb]
+ \begin{center}
+  \scalebox{0.55}{\includegraphics{fig/metaCS.pdf}}
+ \end{center}
+ \caption{meta computation}
+ \label{fig:metaCS}
+\end{figure}
+
+\section{stub Code Gear}
+Gears OS では Code Gear は Meta Code Gear に継続し、その後 Code Gear に継続すると述べたが、正確には Meta Code Gear から Code Gear に継続する際に stub Code Gear を挟む。
+stub Code Gear では、Code Gear が必要とする Data Gear を context から取り出すという処理を行うものである。
+stub Code Gear は Code Gear 毎に生成される。
+
+%この機能により、CbC は Code Gear のみでなく Data Gear を単位として用いることが可能になった。
+%Meta Code Gear、Meta Data Gear により meta computation を通常の Code Gear 内に記述せずにすむ、Code Gear 間に実行される Meta Code Gear で継続先を変更する、エラーハンドリングを行うといった使い方ができるようになるだろう。
+
 
 %\section{TaskQueue}
 %ActiveTaskQueue と WaitTaskQueue の 2 つの TaskQueue を持つ。
@@ -71,7 +97,6 @@
 %処理後、必要なデータを Persistent Data Tree に書き出して再び Task の取得・実行を行う。
 %
 \section{interface の記述}
-interface は
 
 interface を記述することで
 
--- a/final_main/chapter4.tex	Sat Feb 11 18:23:22 2017 +0900
+++ b/final_main/chapter4.tex	Sun Feb 12 19:02:01 2017 +0900
@@ -19,7 +19,7 @@
   \item[SSA-based Machine Code Optimizations]\mbox{}\\
     SSA-based Machine Code に対する最適化を行う。各最適化はそれぞれ独立した pass になっている。
   \item[Register Allocation]\mbox{}\\
-    仮装レジスタから物理レジスタへの割り当てを行う。ここで PHI 命令が削除され、SSA-based でなくなる.
+    仮装レジスタから物理レジスタへの割り当てを行う。ここで PHI 命令が削除され、SSA-based でなくなる。
   \item[Prolog/Epilog Code Insertion]\mbox{}\\
     Prolog/Epilog Code の挿入を行う、どちらも関数呼び出しに関わるものであり、Prolog は関数を呼び出す際に呼び出す関数
 のためのスタックフレームを準備する処理、Epilog は呼び出し元の関数に戻る際に行う処理である。
--- a/final_main/chapter5.tex	Sat Feb 11 18:23:22 2017 +0900
+++ b/final_main/chapter5.tex	Sun Feb 12 19:02:01 2017 +0900
@@ -1,1 +1,22 @@
 \chapter{Context、stub の自動生成}
+
+Gears OS では 3 章で述べたように通常の Computation の他に Meta Computation を記述する必要がある。
+しかし Meta Computation はユーザーが関知すべきではないので perl スクリプトによる自動生成を行った。
+
+\section{Context の生成}
+Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。
+Data Gear を取得するために perl スクリプトは context.h を読み宣言された Data Gear を取得する。
+
+Code Gear は指定された cbc ファイルから stub を見て取得を行う。
+
+Context で Code Gear の名前とポインタの対応は生成する enum Code によって表現される。
+実際に Code Gear に接続する際は enum Code を指定することで接続を行う。
+
+
+%enum で Code Gear と Data Gear
+%Data Gear の typedef
+%stub の extern
+%Data Gear の init (ALLOCA)
+%target 毎の init context
+
+
--- a/final_main/main.aux	Sat Feb 11 18:23:22 2017 +0900
+++ b/final_main/main.aux	Sun Feb 12 19:02:01 2017 +0900
@@ -24,7 +24,11 @@
 \@writefile{lot}{\addvspace {10\p@ }}
 \@writefile{toc}{\contentsline {section}{\numberline {3.1}Gears OS}{5}}
 \@writefile{toc}{\contentsline {section}{\numberline {3.2}CbC による Gears OS の構文サポート}{5}}
-\@writefile{toc}{\contentsline {section}{\numberline {3.3}interface の記述}{6}}
+\@writefile{toc}{\contentsline {section}{\numberline {3.3}Meta Code Gear}{5}}
+\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces meta computation}}{6}}
+\newlabel{fig:metaCS}{{3.1}{6}}
+\@writefile{toc}{\contentsline {section}{\numberline {3.4}stub Code Gear}{6}}
+\@writefile{toc}{\contentsline {section}{\numberline {3.5}interface の記述}{6}}
 \newlabel{gotoWithTheEnv}{{3.1}{6}}
 \@writefile{lol}{\contentsline {lstlisting}{\numberline {3.1}stack の interface}{6}}
 \@writefile{toc}{\contentsline {chapter}{\numberline {第4章}LLVM/clang による CbC の実装}{7}}
@@ -42,6 +46,7 @@
 \@writefile{toc}{\contentsline {chapter}{\numberline {第5章}Context、stub の自動生成}{10}}
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
+\@writefile{toc}{\contentsline {section}{\numberline {5.1}Context の生成}{10}}
 \@writefile{toc}{\contentsline {chapter}{\numberline {第6章}今後の課題}{11}}
 \@writefile{lof}{\addvspace {10\p@ }}
 \@writefile{lot}{\addvspace {10\p@ }}
Binary file final_main/main.dvi has changed
--- a/final_main/main.lof	Sat Feb 11 18:23:22 2017 +0900
+++ b/final_main/main.lof	Sun Feb 12 19:02:01 2017 +0900
@@ -4,6 +4,7 @@
 \contentsline {figure}{\numberline {2.2}{\ignorespaces code segment の軽量継続}}{3}
 \contentsline {figure}{\numberline {2.3}{\ignorespaces 環境付き継続}}{4}
 \addvspace {10\p@ }
+\contentsline {figure}{\numberline {3.1}{\ignorespaces meta computation}}{6}
 \addvspace {10\p@ }
 \contentsline {figure}{\numberline {4.1}{\ignorespaces LLVM の 処理過程}}{8}
 \addvspace {10\p@ }
--- a/final_main/main.log	Sat Feb 11 18:23:22 2017 +0900
+++ b/final_main/main.log	Sun Feb 12 19:02:01 2017 +0900
@@ -1,4 +1,4 @@
-This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.2.4)  11 FEB 2017 18:04
+This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2017.2.4)  12 FEB 2017 19:01
 entering extended mode
  restricted \write18 enabled.
  %&-line parsing enabled.
@@ -199,7 +199,8 @@
 File: fig/gotowithenv.pdf Graphic file (type pdf)
 <fig/gotowithenv.pdf>) (./chapter3.tex [3] [4]
 第 3 章
-[5
+File: fig/metaCS.pdf Graphic file (type pdf)
+<fig/metaCS.pdf> [5
 
 ]) (./chapter4.tex [6]
 第 4 章
@@ -237,12 +238,12 @@
 
  ) 
 Here is how much of TeX's memory you used:
- 2344 strings out of 493683
- 32210 string characters out of 6149654
- 378243 words of memory out of 5000000
- 5889 multiletter control sequences out of 15000+600000
+ 2348 strings out of 493683
+ 32278 string characters out of 6149654
+ 377243 words of memory out of 5000000
+ 5892 multiletter control sequences out of 15000+600000
  14691 words of font info for 58 fonts, out of 8000000 for 9000
  929 hyphenation exceptions out of 8191
  26i,5n,49p,556b,1689s stack positions out of 5000i,500n,10000p,200000b,80000s
 
-Output written on main.dvi (17 pages, 40364 bytes).
+Output written on main.dvi (17 pages, 44080 bytes).
Binary file final_main/main.pdf has changed
--- a/final_main/main.toc	Sat Feb 11 18:23:22 2017 +0900
+++ b/final_main/main.toc	Sun Feb 12 19:02:01 2017 +0900
@@ -6,10 +6,13 @@
 \contentsline {chapter}{\numberline {第3章}Gears OS}{5}
 \contentsline {section}{\numberline {3.1}Gears OS}{5}
 \contentsline {section}{\numberline {3.2}CbC による Gears OS の構文サポート}{5}
-\contentsline {section}{\numberline {3.3}interface の記述}{6}
+\contentsline {section}{\numberline {3.3}Meta Code Gear}{5}
+\contentsline {section}{\numberline {3.4}stub Code Gear}{6}
+\contentsline {section}{\numberline {3.5}interface の記述}{6}
 \contentsline {chapter}{\numberline {第4章}LLVM/clang による CbC の実装}{7}
 \contentsline {section}{\numberline {4.1}LLVM clang}{7}
 \contentsline {section}{\numberline {4.2}LLVM の基本構造}{7}
 \contentsline {section}{\numberline {4.3}LLVM/clang のデバッグ}{8}
 \contentsline {chapter}{\numberline {第5章}Context、stub の自動生成}{10}
+\contentsline {section}{\numberline {5.1}Context の生成}{10}
 \contentsline {chapter}{\numberline {第6章}今後の課題}{11}