changeset 24:86184ba4927b

fix
author ikkun
date Tue, 16 May 2017 09:46:11 +0900
parents 1e7bc71c1abe
children 306ba488bb12
files presen/slide.html presen/slide.md
diffstat 2 files changed, 61 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/presen/slide.html	Tue May 16 09:35:48 2017 +0900
+++ b/presen/slide.html	Tue May 16 09:46:11 2017 +0900
@@ -86,7 +86,7 @@
 <!-- === begin markdown block ===
 
       generated by markdown/1.2.0 on Ruby 2.4.1 (2017-03-22) [x86_64-darwin16]
-                on 2017-05-16 09:27:57 +0900 with Markdown engine kramdown (1.13.2)
+                on 2017-05-16 09:45:10 +0900 with Markdown engine kramdown (1.13.2)
                   using options {}
   -->
 
@@ -191,15 +191,10 @@
   <li>Gears OS は Code Gear、Data Gearの単位を用いて開発されており、CbCで記述される。</li>
   <li>Meta Code Gear は 通常の Code Gear の直後に遷移され、メタ計算を実行する。</li>
   <li>Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。</li>
-</ul>
-
-
-</div>
-<div class='slide '>
-<!-- _S9SLIDE_ -->
-<h1 id="gears-os-">Gears OS の並列性</h1>
-
-<ul>
+  <li>
+    <p>stub
+# Gears OS の並列性</p>
+  </li>
   <li>Code Gear が処理するのに必要な Input Data Gear と処理実行後に出力される Input Data Gear の組を Task と呼ぶ。</li>
   <li>Code Gear は Task 以外とは依存関係がない</li>
   <li>依存関係が明確化されている Code Gear Data Gear で記述することで、並列化し易い。</li>
@@ -213,7 +208,7 @@
 </div>
 <div class='slide '>
 <!-- _S9SLIDE_ -->
-<h1 id="gears-os--1">Gears OS の構成</h1>
+<h1 id="gears-os-">Gears OS の構成</h1>
 
 <ul>
   <li>Gears OS は以下の要素で構成される。
@@ -385,22 +380,47 @@
 <h1 id="task-">Task の設定におけるメタ計算の問題</h1>
 <ul>
   <li>現在のGears OS では並列実行するTask の設定を以下の用に行っている。</li>
-  <li>実行するCode Gear 揃っていない Input Data Gear の数、Input Data Gear/Output Data Gear への参照等をノーマルレベルで記述している。
-- ここに論文で使っていたcode1を入れる</li>
+  <li>実行するCode Gear 揃っていない Input Data Gear の数、Input Data Gear/Output Data Gear への参照等をノーマルレベルで記述している。</li>
 </ul>
 
+<pre lang="c"><code>__code createTask(TaskManager* taskManager, Context* task, Integer *integer1, Integer *integer2, Integer *output) {
+    task-&gt;next = C_add; // set Code Gear                                                                                                                          
+    task-&gt;idgCount = 2; // set Input Data Gear Counter                                                                                                            
+    task-&gt;data[task-&gt;idg] = (union Data*)integer1; // set Input Data Gear reference                                                                               
+    task-&gt;data[task-&gt;idg+1] = (union Data*)integer2;
+    task-&gt;maxIdg = task-&gt;idg + 2;
+    task-&gt;odg = task-&gt;maxIdg; // Output Data Gear index                                                                                                           
+    task-&gt;data[task-&gt;odg] = (union Data*)output; // set Output Data Gear reference                                                                                
+    task-&gt;maxOdg = task-&gt;odg + 1;
+    taskManager-&gt;next = C_createTask1;
+    goto meta(context, taskManager-&gt;taskManager-&gt;TaskManager.spawn); // spawn task                                                                                
+}
+
+// code gear                                                                                                                                                      
+__code add(Integer *integer1, Integer *integer2, Integer *output) {
+    ....
+}
+
+
+</code></pre>
+
 
 </div>
 <div class='slide '>
 <!-- _S9SLIDE_ -->
 <h1 id="task--1">Task の設定におけるメタ計算の問題</h1>
-<ul>
+<ul lang="c">
   <li>この記述方法では Meta Data Gearである Task を直接参照しているためノーマルレベルでの記述は好ましくなく、メタレベルでの記述を行いたい。</li>
   <li>そこで以下のような記述を新たに考案した。</li>
   <li>par goto は先に上げたCode1 に変換される記述であり、これによりノーマルレベルでは直接 Taskを参照せずに par goto の引数で Task の設定を行うことができる。</li>
   <li>この記述を拡張することでCPU GPUでの切り替えを行うことも可能であると考える。
 - ここに論文で使っていたcode2をいれる</li>
 </ul>
+<pre><code>__code createTask(Integer *integer1, Integer *integer2, Integer *output, __code next(...)) {
+    par goto add(integer1, integer2, output, __exit);
+    goto next(...);
+}
+</code></pre>
 
 
 </div>
--- a/presen/slide.md	Tue May 16 09:35:48 2017 +0900
+++ b/presen/slide.md	Tue May 16 09:46:11 2017 +0900
@@ -201,6 +201,27 @@
 - 現在のGears OS では並列実行するTask の設定を以下の用に行っている。
 - 実行するCode Gear 揃っていない Input Data Gear の数、Input Data Gear/Output Data Gear への参照等をノーマルレベルで記述している。
 
+```c
+__code createTask(TaskManager* taskManager, Context* task, Integer *integer1, Integer *integer2, Integer *output) {
+    task->next = C_add; // set Code Gear                                                                                                                          
+    task->idgCount = 2; // set Input Data Gear Counter                                                                                                            
+    task->data[task->idg] = (union Data*)integer1; // set Input Data Gear reference                                                                               
+    task->data[task->idg+1] = (union Data*)integer2;
+    task->maxIdg = task->idg + 2;
+    task->odg = task->maxIdg; // Output Data Gear index                                                                                                           
+    task->data[task->odg] = (union Data*)output; // set Output Data Gear reference                                                                                
+    task->maxOdg = task->odg + 1;
+    taskManager->next = C_createTask1;
+    goto meta(context, taskManager->taskManager->TaskManager.spawn); // spawn task                                                                                
+}
+
+// code gear                                                                                                                                                      
+__code add(Integer *integer1, Integer *integer2, Integer *output) {
+    ....
+}
+
+
+```
 
 # Task の設定におけるメタ計算の問題
 - この記述方法では Meta Data Gearである Task を直接参照しているためノーマルレベルでの記述は好ましくなく、メタレベルでの記述を行いたい。
@@ -208,6 +229,12 @@
 - par goto は先に上げたCode1 に変換される記述であり、これによりノーマルレベルでは直接 Taskを参照せずに par goto の引数で Task の設定を行うことができる。
 - この記述を拡張することでCPU GPUでの切り替えを行うことも可能であると考える。
 - ここに論文で使っていたcode2をいれる
+```c
+__code createTask(Integer *integer1, Integer *integer2, Integer *output, __code next(...)) {
+    par goto add(integer1, integer2, output, __exit);
+    goto next(...);
+}
+```
 
 # 従来のシステムとの比較
 - Microware OS/9 モジュール単位で実装されたりreal-time OS