Mercurial > hg > Papers > 2011 > kaito-master
changeset 24:b806f3a0acfb
improve pipeline not yet.
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 の稼働率}