view manager-cr.tex @ 7:bd8574dedd1b

*** empty log message ***
author gongo
date Tue, 25 Mar 2008 15:51:53 +0900
parents
children b70a62630a57
line wrap: on
line source


\subsection{並列処理}

Cell ではあらゆるレベルで並列に動作させることが求められる。
ダブルバッファがその一例として挙げられる。
前述した通り、Cell ではそれぞれのコアがメインメモリを
直接参照することは出来ず、DMA 転送によりデータをやりとりする。
DMA は CPU を介さず直接データ転送を行う方式である。そのため、
DMA している間は SPE は何らかの処理を行うことが出来る。
また、ダブルバッファリングを行うことで
パイプライン処理が可能となる (\figref{fig-pipeline}) 。

\begin{figure}[tb]
  \begin{center}
    \includegraphics[scale=0.43]{figure/pipeline.pdf}
    \caption{Pipeline}
    \label{fig-pipeline}
  \end{center}
\end{figure}

パイプライン処理を入れた Task Manager の Scheduler を以下に示す。

\begin{verbatim}

    do {
        task3->write();
        task2->exec();
        task1->read();

        taskTmp = task3;
        task3 = task2;
        task2 = task1;
        task1 = task1->next(this, taskTmp);
    } while (task1);

\end{verbatim}

Task Manager を \figref{fig-cerium} に適用させると、
\figref{fig-manager-pipeline} のようにパイプライン的に動作する。

\begin{figure}[tb]
  \begin{center}
    \includegraphics[scale=0.36]{figure/manager-pipeline.pdf}
    \caption{Task Manager が行う Pipeline}
    \label{fig-manager-pipeline}
  \end{center}
\end{figure}

\subsection{SPURS}
この Task Manager に似た研究として SPURS \cite{spurs} が挙げられる。

SPURS は、閉じた並列分散と考えることができる Cell の環境で、
いかに効率よく動作させるかということを考えたシステムである (\figref{fig-spurs-pipeline}) (\figref{fig-spurs-task}) 。
Cell の性能を存分に生かすためには SPE を効率よく使い 
切ることとあらゆるレベルで並列処理を行うことである。SPE を効率よく使い切るには 
SPU の動作を止めることなく、同期を最小限に行う必要がある。 
そこでSPURSではSPUを効率よく利用するために、PPUに依存せずにSPUコードを 
選択し、実行することと機能は効率重視で割り切ることを挙げている。

現在 SPURS は一般には公開されていないため、SPURS の考えを基に
Task Manager を作成した。

\begin{figure}[tb]
  \begin{center}
    \includegraphics[scale=0.36]{figure/spurs-pipeline.pdf}
    \caption{SPURS Pipeline}
    \label{fig-spurs-pipeline}
  \end{center}
\end{figure}

\begin{figure}[tb]
  \begin{center}
    \includegraphics[scale=0.36]{figure/spurs_task.pdf}
    \caption{SPURS Task}
    \label{fig-spurs-task}
  \end{center}
\end{figure}