changeset 24:b806f3a0acfb

improve pipeline not yet.
author tkaito
date Fri, 04 Feb 2011 01:52:42 +0900
parents c1b34167d3f1
children a6a10d991e13
files paper/images/Mailbox.bb paper/images/PPE.bb paper/images/SIMD.bb paper/images/SPE.bb paper/images/aquarium.bb paper/images/cell-main.bb paper/images/cerium-tile.bb paper/images/cerium_rendering_tile.bb paper/images/cerium_tile.bb paper/images/drawspan.bb paper/images/inst-span.bb paper/images/mailtime.bb paper/images/polygonpack.bb paper/images/scenegraph.bb paper/images/scheduler.bb paper/images/sep-polygon.bb paper/images/spanpack-rendering.bb paper/images/spanpack.bb paper/images/spurs_pipeline.bb paper/images/spurs_task.bb paper/images/stb-pipeline1.bb paper/images/stb-state.bb paper/images/tapestry.bb paper/images/task-dependency1.bb paper/images/task-dependency2.bb paper/images/task-dependency3.bb paper/images/task-dependency4.bb paper/images/universe.bb paper/images/universe2.bb paper/images/universe3.bb paper/implement.tex
diffstat 31 files changed, 144 insertions(+), 33 deletions(-) [+]
line wrap: on
line diff
--- a/paper/images/Mailbox.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/Mailbox.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/Mailbox.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 514 342
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/PPE.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/PPE.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/PPE.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 453 454
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/SIMD.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/SIMD.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/SIMD.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 402 266
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/SPE.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/SPE.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/SPE.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 380 340
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/aquarium.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/aquarium.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/aquarium.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 349 270
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/cell-main.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/cell-main.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/cell-main.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 423 300
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/cerium-tile.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/cerium-tile.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/cerium-tile.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 476 382
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/cerium_rendering_tile.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/cerium_rendering_tile.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/cerium_rendering_tile.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 510 385
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/cerium_tile.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/cerium_tile.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/cerium_tile.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 476 382
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/drawspan.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/drawspan.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/drawspan.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 555 301
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/inst-span.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/inst-span.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/inst-span.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 468 279
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/mailtime.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/mailtime.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/mailtime.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 380 309
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/polygonpack.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/polygonpack.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/polygonpack.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 499 226
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/scenegraph.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/scenegraph.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/scenegraph.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 425 274
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/scheduler.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/scheduler.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/scheduler.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 505 345
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/sep-polygon.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/sep-polygon.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/sep-polygon.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 345 261
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/spanpack-rendering.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/spanpack-rendering.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/spanpack-rendering.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 541 340
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/spanpack.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/spanpack.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/spanpack.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 534 198
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/spurs_pipeline.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/spurs_pipeline.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/spurs_pipeline.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 533 187
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/spurs_task.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/spurs_task.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/spurs_task.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 547 236
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/stb-pipeline1.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/stb-pipeline1.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/stb-pipeline1.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 582 235
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/stb-state.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/stb-state.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/stb-state.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 412 426
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/tapestry.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/tapestry.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/tapestry.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 497 266
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/task-dependency1.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/task-dependency1.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/task-dependency1.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 429 158
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/task-dependency2.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/task-dependency2.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/task-dependency2.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 427 158
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/task-dependency3.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/task-dependency3.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/task-dependency3.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 423 158
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/task-dependency4.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/task-dependency4.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/task-dependency4.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 421 158
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/universe.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/universe.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/universe.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 270 167
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/universe2.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/universe2.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/universe2.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 641 479
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/images/universe3.bb	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/images/universe3.bb	Fri Feb 04 01:52:42 2011 +0900
@@ -1,5 +1,5 @@
 %%Title: ./images/universe3.pdf
 %%Creator: extractbb 20090506
 %%BoundingBox: 0 0 640 480
-%%CreationDate: Thu Feb  3 22:48:52 2011
+%%CreationDate: Fri Feb  4 01:51:20 2011
 
--- a/paper/implement.tex	Thu Feb 03 22:51:05 2011 +0900
+++ b/paper/implement.tex	Fri Feb 04 01:52:42 2011 +0900
@@ -150,7 +150,7 @@
 Task\_A ー> Task\_B という実行順序になるように依存関係を付けなければならないと
 いうものである。
 
-\subsection{パイプラインの改良を行う上で考慮する点}
+\subsection{パイプラインの改良を行う上で考慮する点} \label{sec:pipeline-point}
 
 Task 化において注意することを踏まえた上で、Cerium のパイプラインの改良を行う際に
 は、以下のことを考慮する必要がある。
@@ -276,11 +276,122 @@
 この旧 Cerium から TASK\_DUMMY を排除し、処理全体を Task で書きなおした
 状態の Rendering Engine を本研究における改良前の Rendering Engine とする。
 
-\subsection{想定している動作と実際の動作の確認}
+\subsection{Rendering Engine の動作の確認}
+
+Cerium のパイプラインの改良をする上で、\ref{sec:pipeline-point} 
+でも述べたとおり SPE が常時稼動が重要である。そこで、改良前の Rendering 
+Engine で SPE が停止している箇所が無いか調べてみた。以下にその
+コードを示す。
+
+\subsubsection{check\_spe\_idle} \label{sec:check_idle}
+\begin{verbatim} 
+void debug_check_spe_idle()
+{
+  // SPE が停止しているときに残っている実行可能な Task の数
+  printf("spu_idle! : activeTaskQueue->length = %d \n"
+         , activeTaskQueue->length());
+  HTaskPtr task = activeTaskQueue->getFirst();  // 残っている Task の先頭を取得
+  int tmp_i = 0;
+  do { // 残っている Task を 順に表示していく
+        printf("task_name = %s ,",ppeManager->get_task_name(task));
+        printf("cpu = [%d], count = %d", task->cpu_type, tmp_i);
+        tmp_i++;
+     } while ((task = activeTaskQueue->getNext(task)) != 0);
+      printf("\n");
+}
+
+/* 出力結果 */
+
+spu_idle!: activeTaskQueue->length = 1 
+task_name = RUN_LOOP_TASK ,cpu = [0]
+spu_idle!: activeTaskQueue->length = 1 
+task_name = (C) ,cpu = [0]
+spu_idle!: activeTaskQueue->length = 1 
+task_name = RENDERING_TASK ,cpu = [0]
+spu_idle!: activeTaskQueue->length = 1 
+task_name = (C) ,cpu = [0]
+spu_idle!: activeTaskQueue->length = 1 
+task_name = RENDERING_TASK ,cpu = [0]
+
+\end{verbatim}
+
+この結果から分かることは、task\_name で表示されている Task の前で SPE の処理が
+止まっているということである。実行開始時の RUN\_LOOP\_TASK は、まだ SPE に仕事を
+何も割り振っていない状態なので、表示されている。しかし、その後に表示されている 
+Task は本来表示されてはいけないものである。(C) Task は common\_rendering 内で
+作られている PPE 上で動作する Task 、RENDERING\_TASK は、run\_draw を行う
+PPE 上で動作する Task である。\\
+
+これらの結果から、Rendering Engine の動作内で、SPE の動作が停止している可能性がある
+ことが分かる。そこで、(C) Task と RENDERING\_TASK を中心に Rendering Engine の動作を
+確認したところ、想定とは違う依存関係を付けている箇所を発見することができた。その
+依存関係を直しつつ、さらにTask を追加した 改良後の Rendering Engine を以下に示す。
+
+\subsubsection{改良後の Rendering Engine の パイプライン}
+
+\begin{verbatim}
 
-Rendering Engine の Task は、\ref{sec:rend-task} 
+/* PPE Task */
+Task run_loop_task {
+  Task rend = rendering_task; // rendering_task を元に rend を生成
+  run_loop(rend);
+}
+
+Task rendering_task {
+  Task draw = draw_task; // draw_task を元に draw を生成
+  rengering(draw);
+}
+
+Task draw_task {
+  Task loop = run_loop_task; // run_loop_task を元に loop を生成
+  run_draw(loop);  
+}
+
+/* Function */
+/* Start */
+void init_loop() {
+  Task loop = run_loop_task; // run_loop_task を元に loop を生成
+  loop->spawn(); // loop タスクを実行する
+}
+
+void run_loop(Task rend) {
+  main_exec {
+    rend->wait_for(A); // A->rend の順に実行する
+    rend->wait_for(B); // B->rend の順に実行する
+  }
+  rendering(rend);
+}
 
+void rendering(Task draw) {
+  common_rendering{
+    draw->wait_for(C); // C->rend の順に実行する
+  }
+  draw->spawn(); // A,B,C の処理が終了したら rend タスクを実行する
+}
 
+void run_draw(loop) {
+  common_draw{
+    D->spawn();
+  }
+  loop->spawn(); // loop タスクを実行する
+}
+\end{verbatim}
+
+改良点は、draw\_task の追加、(D) Task と loop タスクの依存関係の変更である。
+(D) Task では実際に画面上に描画する処理を行なっている。そして、描画に必要な
+データの計算は main\_exec, rendering で行っている。画面の描画のために必要な
+データの格納場所とそのデータを計算して格納する場所は別で用意しておき、描画が
+終了した時点で切り替えるようにする(double buffering)。そうすることで、描画を
+行っている間に次の描画のためのデータを別の Task で計算することができる。
+
+改良前の Rendering Engine では、次の描画のためのデータを計算するための Task が
+前の描画処理が終了するのを待っていた。そのため、(C) Task の前の RUN\_LOOP\_TASK 
+で SPE  が停止してしまい、(C) Task が表示されてしまったと考えられる。
+
+この変更によって (C) Task が \ref{sec:check_idle} の出力結果に表示されることは
+なくなった。
+
+また、draw\_task を追加した理由は、Rendering Engine 
 
 \subsection{SPE の稼働率}