Mercurial > hg > Papers > 2017 > mitsuki-thesis
comparison presen/slide.html @ 26:8644cade9765
update
author | mir3636 |
---|---|
date | Thu, 16 Feb 2017 09:19:18 +0900 |
parents | 327435666caa |
children | fecc23286565 |
comparison
equal
deleted
inserted
replaced
25:327435666caa | 26:8644cade9765 |
---|---|
85 | 85 |
86 <div class='slide '> | 86 <div class='slide '> |
87 <!-- === begin markdown block === | 87 <!-- === begin markdown block === |
88 | 88 |
89 generated by markdown/1.2.0 on Ruby 2.2.0 (2014-12-25) [x86_64-darwin13] | 89 generated by markdown/1.2.0 on Ruby 2.2.0 (2014-12-25) [x86_64-darwin13] |
90 on 2017-02-16 08:10:32 +0900 with Markdown engine kramdown (1.9.0) | 90 on 2017-02-16 09:18:39 +0900 with Markdown engine kramdown (1.9.0) |
91 using options {} | 91 using options {} |
92 --> | 92 --> |
93 | 93 |
94 <!-- _S9SLIDE_ --> | 94 <!-- _S9SLIDE_ --> |
95 <h1 id="section">メタ計算の重要性</h1> | 95 <h1 id="section">メタ計算の重要性</h1> |
104 </div> | 104 </div> |
105 <div class='slide '> | 105 <div class='slide '> |
106 <!-- _S9SLIDE_ --> | 106 <!-- _S9SLIDE_ --> |
107 <h1 id="code-gear--data-gear">Code Gear と Data Gear</h1> | 107 <h1 id="code-gear--data-gear">Code Gear と Data Gear</h1> |
108 <ul> | 108 <ul> |
109 <li>Code Gear とはプログラムの処理の単位である。</li> | |
109 <li>Code Gear は関数に比べて細かく分割されているので Meta Computation をより柔軟に記述できる。</li> | 110 <li>Code Gear は関数に比べて細かく分割されているので Meta Computation をより柔軟に記述できる。</li> |
110 <li>Data Gear はデータの単位であり、Code Gear は 任意の数の Input Data Gear を参照して処理を行い、Output Data Gear を出力し処理を終える。</li> | 111 <li>Data Gear はデータの単位であり、Code Gear は 任意の数の Input Data Gear を参照して処理を行い、Output Data Gear を出力し処理を終える。</li> |
111 </ul> | 112 </ul> |
112 | 113 |
113 | 114 |
148 </div> | 149 </div> |
149 <div class='slide '> | 150 <div class='slide '> |
150 <!-- _S9SLIDE_ --> | 151 <!-- _S9SLIDE_ --> |
151 <h1 id="context">Context</h1> | 152 <h1 id="context">Context</h1> |
152 <ul> | 153 <ul> |
153 <li>Gears OS では Context と呼ばれる接続可能な Code/Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear がある。</li> | 154 <li>Gears OS には Context と呼ばれる接続可能な Code/Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear がある。</li> |
154 <li>Gears OSは必要なCode/DataGearに参照したい場合、このContext を通す必要がある。</li> | 155 <li>Gears OSは必要なCode/DataGearに参照したい場合、このContext を通す必要がある。</li> |
155 </ul> | 156 </ul> |
156 | 157 |
157 | 158 |
158 </div> | 159 </div> |
211 <!-- _S9SLIDE_ --> | 212 <!-- _S9SLIDE_ --> |
212 <h1 id="interface-">interface の記述</h1> | 213 <h1 id="interface-">interface の記述</h1> |
213 <ul lang="impl"> | 214 <ul lang="impl"> |
214 <li>interface を記述することで Context を通して Code Gear が参照できるようになった。</li> | 215 <li>interface を記述することで Context を通して Code Gear が参照できるようになった。</li> |
215 <li>create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。</li> | 216 <li>create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。</li> |
216 <li>return で interface を返し、その先で指定した Code Gear へ継続できるようになる。</li> | 217 <li>return で interface を返し、その先で inter face の持つ Code Gear へと継続できるようになる。</li> |
217 </ul> | 218 </ul> |
218 <pre><code>Stack* createSingleLinkedStack(struct Context* context) { | 219 <pre><code>Stack* createSingleLinkedStack(struct Context* context) { |
219 struct Stack* stack = new Stack(); | 220 struct Stack* stack = new Stack(); |
220 struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack(); | 221 struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack(); |
221 stack->stack = (union Data*)singleLinkedStack; | 222 stack->stack = (union Data*)singleLinkedStack; |
233 | 234 |
234 | 235 |
235 </div> | 236 </div> |
236 <div class='slide '> | 237 <div class='slide '> |
237 <!-- _S9SLIDE_ --> | 238 <!-- _S9SLIDE_ --> |
238 <h1 id="contextstub-code-segment-">Context、stub Code Segment の自動生成</h1> | 239 <h1 id="contextstub-code-gear-">Context、stub Code Gear の自動生成</h1> |
239 <ul> | 240 <ul> |
240 <li>Gears OS では通常の計算の他に Context や stub などの meta computation を記述する必要がある。</li> | 241 <li>Gears OS では通常の計算の他に Context や stub などの meta computation を記述する必要がある。</li> |
241 <li>現在の CbC で Gears OS を記述すると、この meta computation の記述も行わなくてはならず、これには多くの労力を要する。</li> | 242 <li>現在の CbC で Gears OS を記述すると、この meta computation の記述も行わなくてはならず、これには多くの労力を要する。</li> |
242 <li>この記述を助けるために Context を生成する generate_context と stub Code Gear を生成する generate_stub を perl スクリプトで作成した。</li> | 243 <li>この記述を助けるために Context を生成する generate_context と stub Code Gear を生成する generate_stub を perl スクリプトで作成した。</li> |
243 </ul> | 244 </ul> |
244 | 245 |
245 | 246 |
246 </div> | 247 </div> |
247 <div class='slide '> | 248 <div class='slide '> |
248 <!-- _S9SLIDE_ --> | 249 <!-- _S9SLIDE_ --> |
249 <h1 id="generate-context">generate context</h1> | 250 <h1 id="stub-code-gear-">stub Code Gear の生成</h1> |
250 <ul> | 251 <ul> |
251 <li>generate_stub は指定された cbc ファイルの __code型である Code Gear を取得</li> | 252 <li>stub Code Gear は Code Gear 間の継続に挟まれ、Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。</li> |
252 <li>generate_context は context.h から Data Gear、c ファイルから Code Gear の取得 | 253 <li>stub Code Gear は Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。</li> |
254 <li>generate_stub は指定された cbc ファイルの __code型である Code Gear を取得。</li> | |
255 <li>引数と interface を照らし合わせ、Gearef または GearImpl を決定する。</li> | |
256 <li>cbc ファイルのから、生成した stub Code Gear を加えて、c ファイルを生成する。</li> | |
257 </ul> | |
258 | |
259 | |
260 </div> | |
261 <div class='slide '> | |
262 <!-- _S9SLIDE_ --> | |
263 <h1 id="context-">Context の生成</h1> | |
264 <ul> | |
265 <li>Context は Meta Data Gear に相当し、Code Gear や Data Gear を管理している。</li> | |
266 <li>generate_context は context.h から Data Gear、c ファイルから Code Gear を取得。</li> | |
267 <li>取得した Code/Data Gear の enum の定義は enumCode.h、enumData.h に生成される。</li> | |
268 <li>generate_context は取得した Code/Data Gear から Context の生成を行うコードを生成する。</li> | |
269 <li>これらを自動生成することで Gears OS の記述量を約半分にすることができます。 | |
253 <img src="./fig/generate_context.svg" alt="message" width="800" /></li> | 270 <img src="./fig/generate_context.svg" alt="message" width="800" /></li> |
254 </ul> | 271 </ul> |
255 | 272 |
256 | 273 |
257 </div> | 274 </div> |