changeset 5:6458878b4526

*** empty log message ***
author gongo
date Mon, 14 Jul 2008 20:09:16 +0900
parents 9cd21bb81105
children 30b41d745225
files cell.tex figure/scheduler.bb figure/scheduler.graffle figure/scheduler.pdf figure/spurs-pipeline.bb figure/spurs-pipeline.graffle figure/spurs-pipeline.pdf introduction.tex manycore.tex student.tex task_manager.tex
diffstat 11 files changed, 50 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/cell.tex	Mon Jul 14 17:58:53 2008 +0900
+++ b/cell.tex	Mon Jul 14 20:09:16 2008 +0900
@@ -19,6 +19,12 @@
 SPE からメインメモリへは、直接アクセスすることは出来ず、
 SPE を構成する一つである MFC (Memory Flow Controller) へ、チャネルを介して
 DMA (Direct Memory Access) 命令を送ることで行われる (\figref{fig-cbe-spe}) 。
+この時、DMA 転送するデータとアドレスにはいくつか制限がある。
+転送データが16バイト以上の場合、データサイズは16バイトの倍数で、
+転送元と転送先のアドレスが16バイト境界に揃えられている必要がある。
+転送データが16バイト未満の場合、データサイズは 1,2,4,8 バイトで、
+転送サイズに応じた自然なアラインメントである
+(転送サイズのバイト境界に揃えられている) ことが条件となる。
 
 \begin{figure}[tb]
   \begin{center}
@@ -33,7 +39,6 @@
 同時に演算する命令などを持ち、PPE に比べて高速な演算が可能である。
 そのため、ほとんどの演算を SPE 上で行わせることが推奨されている。
 
-
 \subsection{SPURS}
 ここでは、現在発表されている Cell の開発環境である SPURS \cite{spurs} について説明する。
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/figure/scheduler.bb	Mon Jul 14 20:09:16 2008 +0900
@@ -0,0 +1,5 @@
+%%Title: ./scheduler.pdf
+%%Creator: ebb Version 0.5.2 (+ArtBox)
+%%BoundingBox: 0 0 522 492
+%%CreationDate: Mon Jul 14 20:08:17 2008
+
Binary file figure/scheduler.graffle has changed
Binary file figure/scheduler.pdf has changed
--- a/figure/spurs-pipeline.bb	Mon Jul 14 17:58:53 2008 +0900
+++ b/figure/spurs-pipeline.bb	Mon Jul 14 20:09:16 2008 +0900
@@ -1,5 +1,5 @@
 %%Title: ./spurs-pipeline.pdf
 %%Creator: ebb Version 0.5.2 (+ArtBox)
-%%BoundingBox: 0 0 551 205
-%%CreationDate: Tue Mar 25 11:56:24 2008
+%%BoundingBox: 0 0 533 187
+%%CreationDate: Mon Jul 14 18:51:01 2008
 
Binary file figure/spurs-pipeline.graffle has changed
Binary file figure/spurs-pipeline.pdf has changed
--- a/introduction.tex	Mon Jul 14 17:58:53 2008 +0900
+++ b/introduction.tex	Mon Jul 14 20:09:16 2008 +0900
@@ -1,4 +1,13 @@
 \section{研究の目的}
+本研究室では、PS3Linux を用いて学生によるゲーム開発を行っている。
+しかし、Cell のような Many Core プログラミングは非決定的であり、
+デバッグが難しい。
+
+(ここまだ直し中です)
+
+そこで、Many Core プログラミングの手助けになるようなフレームワークを設計する。
+このフレームワークは
+
 本研究では、Many Core Architecture 向けの Fine Grain Task Manager を設計する。
 Fine Grain Task の単位はサブルーチンまたは関数とし、
 全ての Core が絶えず動くようにすることで全体の並列化率を高める。
--- a/manycore.tex	Mon Jul 14 17:58:53 2008 +0900
+++ b/manycore.tex	Mon Jul 14 20:09:16 2008 +0900
@@ -45,4 +45,8 @@
 並列プログラムの特徴として、デバッグが難しいことも挙げられる。
 実行が非決定的(同じ状態で実行しても同じ結果が異なる)場合があり、
 バグの状態を再現することが難しい。
-また、個々の Core 上のデータを調べる必要もある。
+例えば Cell の場合、複数動いている SPE の一つに対して
+gdb で breakpoint を掛けても、他の SPE は動き続けるし、
+全ての SPE を手動で管理するのは非常に厳しい。
+また、PPE と SPE ではメモリ空間が違うため、SPE から直接 PPE のデータを
+見る事ができない。
--- a/student.tex	Mon Jul 14 17:58:53 2008 +0900
+++ b/student.tex	Mon Jul 14 20:09:16 2008 +0900
@@ -57,8 +57,8 @@
   \end{center}
 \end{figure}
 
-このソートプログラムの実行速度を、SPE の個数を変えて出力した
-(\figref{fig:sort})。
+このソートプログラムの実行速度を、
+SPE の個数を変えて出力した (\figref{fig:sort})。
 
 \begin{figure}[tb]
   \begin{center}
@@ -67,3 +67,4 @@
     \label{fig:sort}
   \end{center}
 \end{figure}
+
--- a/task_manager.tex	Mon Jul 14 17:58:53 2008 +0900
+++ b/task_manager.tex	Mon Jul 14 20:09:16 2008 +0900
@@ -23,6 +23,8 @@
 \end{table}
 
 以下に Task Manager を使った記述例を示す。
+このプログラムは、PPE にある文字列データを、SPE が受け取って
+データを改変し、PPEに戻すというプログラムである。
 
 {\small
 \begin{verbatim}
@@ -54,13 +56,8 @@
     task->add_outData(sendStr,length);
     
     task->spawn();
-
-    printf("before: %s\n", sendStr);
-
     manager->run();
 
-    printf("after : %s\n", sendStr);
-
     return 0;
 }
 
@@ -76,8 +73,8 @@
     char *fixStr = (char*)get_input(wbuf, 0);
 
     strcpy(fixStr, recvStr);
-    fixStr[0] = 'D';
-    fixStr[3] = 'E';
+    fixStr[0] = 'D'; // 文字列データを変換
+    fixStr[3] = 'E'; // 
 }
 
 // 実行結果
@@ -88,7 +85,8 @@
 }
 
 \subsection{Task の定義} \label{sec:tm-task}
-タスクの定義を以下に示す。
+以下は、実行されるタスクの情報となるデータ構造である。
+このデータは PPE、SPE の両方で使用される。
 
 {\small
 \begin{verbatim}
@@ -127,7 +125,20 @@
 cpu\_type は実行する CPU の切り替え (sec:\ref{sec:tm-cpu}) に用いる。
 
 \subsection{スケジューラ} \label{sec:tm-scheduler}
-TaskManager のスケジューラを以下に示す。
+生成された Task クラスにしたがって、
+実際のタスクを実行するのがスケジューラである。
+スケジューラは、PPE で生成された TaskList を受け取り、
+その中にある Task をパイプラインに沿って実行していく (\figref{fig:tm-sched})。
+
+\begin{figure}[tb]
+  \begin{center}
+    \includegraphics[scale=0.353]{figure/scheduler.pdf}
+    \caption{スケジューラ}
+    \label{fig:tm-sched}
+  \end{center}
+\end{figure}
+
+以下がパイプラインの記述である。
 
 \begin{verbatim}