Mercurial > hg > Papers > 2011 > kaito-master
changeset 21:6b53dcfaab84
Cahpter4, Scheduler done. "pipeline improve" not yet.
line wrap: on
line diff
--- a/paper/Makefile Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/Makefile Thu Feb 03 16:49:35 2011 +0900 @@ -1,6 +1,7 @@ TARGET = master_paper SRC = $(wildcard *.tex) +IMAGE_SRC = $(wildcard images/*.pdf) LATEX = platex BIBTEX = jbibtex @@ -22,6 +23,7 @@ dvi: @echo "----------- make dvi file ($(TARGET).dvi) ----------" + $(EBB) $(IMAGE_SRC) $(LATEX) $(TARGET) $(BIBTEX) $(TARGET) $(LATEX) $(TARGET)
--- a/paper/images/Mailbox.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/Mailbox.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./Mailbox.pdf +%%Title: ./images/Mailbox.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 514 342 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/PPE.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/PPE.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./PPE.pdf +%%Title: ./images/PPE.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 453 454 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/SIMD.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/SIMD.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./SIMD.pdf +%%Title: ./images/SIMD.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 402 266 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/SPE.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/SPE.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./SPE.pdf +%%Title: ./images/SPE.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 380 340 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/aquarium.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/aquarium.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./aquarium.pdf +%%Title: ./images/aquarium.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 349 270 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/cell-main.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/cell-main.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./cell-main.pdf +%%Title: ./images/cell-main.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 423 300 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/cerium-tile.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/cerium-tile.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./cerium-tile.pdf +%%Title: ./images/cerium-tile.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 476 382 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/cerium_rendering_tile.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/cerium_rendering_tile.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./cerium_rendering_tile.pdf +%%Title: ./images/cerium_rendering_tile.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 510 385 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/cerium_tile.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/cerium_tile.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./cerium_tile.pdf +%%Title: ./images/cerium_tile.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 476 382 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/drawspan.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/drawspan.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./drawspan.pdf +%%Title: ./images/drawspan.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 555 301 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/inst-span.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/inst-span.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./inst-span.pdf +%%Title: ./images/inst-span.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 468 279 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/mailtime.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/mailtime.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./mailtime.pdf +%%Title: ./images/mailtime.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 380 309 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/polygonpack.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/polygonpack.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./polygonpack.pdf +%%Title: ./images/polygonpack.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 499 226 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/scenegraph.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/scenegraph.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./scenegraph.pdf +%%Title: ./images/scenegraph.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 425 274 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/scheduler.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/scheduler.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./scheduler.pdf +%%Title: ./images/scheduler.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 505 345 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/sep-polygon.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/sep-polygon.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./sep-polygon.pdf +%%Title: ./images/sep-polygon.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 345 261 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/spanpack-rendering.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/spanpack-rendering.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./spanpack-rendering.pdf +%%Title: ./images/spanpack-rendering.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 541 340 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/spanpack.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/spanpack.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./spanpack.pdf +%%Title: ./images/spanpack.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 534 198 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/spurs_pipeline.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/spurs_pipeline.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./spurs_pipeline.pdf +%%Title: ./images/spurs_pipeline.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 533 187 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/spurs_task.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/spurs_task.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./spurs_task.pdf +%%Title: ./images/spurs_task.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 547 236 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/stb-pipeline1.bb Thu Feb 03 16:49:35 2011 +0900 @@ -0,0 +1,5 @@ +%%Title: ./images/stb-pipeline1.pdf +%%Creator: extractbb 20090506 +%%BoundingBox: 0 0 582 235 +%%CreationDate: Thu Feb 3 16:47:11 2011 +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/stb-state.bb Thu Feb 03 16:49:35 2011 +0900 @@ -0,0 +1,5 @@ +%%Title: ./images/stb-state.pdf +%%Creator: extractbb 20090506 +%%BoundingBox: 0 0 412 426 +%%CreationDate: Thu Feb 3 16:47:11 2011 +
--- a/paper/images/tapestry.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/tapestry.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./tapestry.pdf +%%Title: ./images/tapestry.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 497 266 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/task-dependency1.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/task-dependency1.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./task-dependency1.pdf +%%Title: ./images/task-dependency1.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 429 158 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/task-dependency2.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/task-dependency2.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./task-dependency2.pdf +%%Title: ./images/task-dependency2.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 427 158 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/task-dependency3.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/task-dependency3.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./task-dependency3.pdf +%%Title: ./images/task-dependency3.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 423 158 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/task-dependency4.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/task-dependency4.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./task-dependency4.pdf +%%Title: ./images/task-dependency4.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 421 158 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/universe.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/universe.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./universe.pdf +%%Title: ./images/universe.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 270 167 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/universe2.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/universe2.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./universe2.pdf +%%Title: ./images/universe2.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 641 479 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/images/universe3.bb Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/images/universe3.bb Thu Feb 03 16:49:35 2011 +0900 @@ -1,5 +1,5 @@ -%%Title: ./universe3.pdf +%%Title: ./images/universe3.pdf %%Creator: extractbb 20090506 %%BoundingBox: 0 0 640 480 -%%CreationDate: Wed Feb 2 20:29:43 2011 +%%CreationDate: Thu Feb 3 16:47:11 2011
--- a/paper/implement.tex Thu Feb 03 03:59:24 2011 +0900 +++ b/paper/implement.tex Thu Feb 03 16:49:35 2011 +0900 @@ -5,7 +5,7 @@ 各 CPU では、メインスレッドで生成された Task を受け取り、その情報を元に Task を実行する。ここでは、Task を 扱う Scheduler の実装と、Task の本体となる部分についての説明と改良された点についての説明を行う。 -\subsection{Scheduler} +\subsection{Scheduler} \label{sec:scheduler} 生成された Task に従って実際の Task を実行するのが Scheduler である。Scheduler は、メインスレッドで 生成された Task List を受け取り、その中にある Task をパイプラインに沿って、ステージを遷移 @@ -42,23 +42,7 @@ メインメモリからの DMA 転送待ち時間に exec() を行うことで、 待ち時間を隠蔽することができる。しかし、Task の処理や 各ステージの終了タイミングによっては待ち時間(mail\_wait)が -発生してしまう場合がある(\figref{mail_time}) - -\begin{figure}[htb] - \begin{center} - \includegraphics[scale=0.80]{./images/mailtime.pdf} - \end{center} - \caption{DMA 転送待ち時間の発生} - \label{fig:mail_time} -\end{figure} - -\figref{mail_time} では、task\_a の処理の途中で必要になったデータが SPE 上に -存在しない場合、Task の処理内でメインメモリからデータ(a\_2)を要求している。 -そのデータの転送を待っている間、SPE は止まってしまう様子を示している。 -また、SPE が止まってしまう例として各ステージの終了タイミングのずれがある。 -\figref{mail_time} の Step 2 において、task\_b の read が終了しなければ -Step 3 の task\_b の exec を開始することはできない。すると、task\_a の exec -終了から、task\_b の exec 開始までの間は SPE は止まってしまうことになる。\\ +発生してしまう場合がある(\ref{sec:task_dma})。 \\ TaskList にある Task が全て終了し、メインスレッドから終了のメッセージ を受け取ったら、 task1 は NULL となり、while 文を抜ける。 @@ -71,23 +55,82 @@ \item SchedMail \\ メインスレッドからメッセージ(Mailbox)を取得する + \item SchedTaskList \\ TaskList を取得する -\item SchedTask, SchedTaskArray \\ -TaskList から取得した Task, TaskArray を実行する + +\item SchedTask, SchedTaskArrayLoad\\ +受け取った TaskList の中の Task が 単一 Task か、Task Array なのかを判別する \\ +Task Array の時は Task Array をメインメモリから転送する(SchedTaskArrayLoad) + +\item SchedTaskArray, SchedTaskArrayLoad\\ +TaskList から取得した Task Array を実行する + \item SchedExit \\ SPE の実行を終了する -\item SchedNop, SchedTaskArrayNop \\ -何も行わない。パイプラインの待ち合わせ用 -Task Array を用いた SchedTaskBase クラスのパイプラインの流れを以下に示す(\figref{})。 +\item SchedNop, SchedTaskArrayNop, SchedNop2Ready \\ +何も行わない。パイプラインステージの待ち合わせ用 \end{itemize} +現在 Cerium では、単一 Task も Task Array も Task Array として処理している。 + +Scheduler (\ref{sec:scheduler}) によって上記のクラスは以下のように遷移する +( \figref{stb-state} )。 + +\begin{figure}[htb] + \begin{center} + \includegraphics[scale=0.80]{./images/stb-state.pdf} + \end{center} + \caption{ScheTaskBase クラスの状態遷移} + \label{fig:stb-state} +\end{figure} + +\subsection{DMA 命令} + +Task の入力データや結果の出力データの操作は、TaskManager がパイプラインに沿って + DMA を行って操作している。しかし、Task 内でメインメモリ上の新たなデータが必要に +なる可能性がある。この時、Task 内で明示的に DMA 転送命令を出すことができる。 + +\begin{description} +\item[dma\_load(ls, mm, size, tag) :] メインメモリ上のデータ mm から、SPE の +Local Store 上の領域 ls に size byte の DMA 転送を行う。Cell の DMA 転送ではタグ +を使用することになっており、指定したタグ毎に DMA 転送の完了待ちを行うことができる。 +タグは Cell の仕様では 0 ~ 31 を使用することができる。 + +\item[dma\_store(ls, mm, size, tag) :] SPE から PPE への DMA 転送を行う。 + +\item[dma\_wait(tag) :] tag を元に DMA 転送の完了を待つ。 + +\end{description} + +dma\_load() や dma\_store() は DMA 命令の発行だけなので、DMA 転送を行っている +データを使用する場合は dma\_wait() を用いて、転送完了を待たなければならない。 +転送完了を待っている間は Task が一時ストップしてしまう(\figref{mail_wait})。 + +\begin{figure}[htb] + \begin{center} + \includegraphics[scale=0.80]{./images/mailtime.pdf} + \end{center} + \caption{DMA 転送待ち時間の発生} + \label{fig:mail_time} +\end{figure} + +\figref{mail_time} では、task\_a の処理の途中で必要になったデータが SPE 上に +存在しない場合、Task の処理内でメインメモリからデータ(a\_2)を要求している。 +a\_2 の転送完了を task\_a\_2 が待っているのでこの間、Task が一時ストップしてしまう。 + +また、Task が止まってしまう例として各ステージの終了タイミングのずれがある。 +\figref{mail_time} の Step 2 において、task\_b の 転送が完了しなければ +Step 3 の task\_b の exec を開始することはできない。すると、task\_a の exec +終了から、task\_b の exec 開始までの間は Task が止まってしまうことになる。\\ + + ・queue info ・spu側からmailを送ったときにキューに溜まるようにした -\subsection{Rendering Engine 面からの見直し} +\subsection{Cerium のパイプラインの改良} ・DrawSpan は常に動いているようにしたいー>pipelineの見直しが絶対に必要 ・pipelineに関連して double buffering の見直しも。