view cerium-manager.tex @ 3:2ef36d40ee96

*** empty log message ***
author gongo
date Mon, 24 Mar 2008 17:49:30 +0900
parents 9216a2b217e6
children 869c475cc108
line wrap: on
line source

\subsection{Task Manager}
Task Manager は、Task と呼ばれる分割された各プログラムを
管理するライブラリである。Task 同士の依存関係を考慮しながら
メモリ上にマッピングし、SPE 上ではそのプログラムを
DMA 転送によりロードする (\figref{fig-manager-load}) 。
これは SPE の LS が 256 KB しかないため、必要なコードだけを使うように
入れ替える必要がある。

\begin{figure}[tb]
  \begin{center}
    \includegraphics[scale=0.35]{figure/manager-load.pdf}
    \caption{Task Manager}
    \label{fig-manager-load}
  \end{center}
\end{figure}

現在実装されている Task Manager の API を \tabref{tab:manager-api} に示す。

\begin{table}[b]
  \caption{Task Manager API} \label{tab:manager-api}
  \hbox to\hsize{\hfil
  \begin{tabular}{r|l} \hline \hline
    create\_task & Task を生成する \\ \hline
    spawn        & Task を実行 Task Queue に登録する \\ \hline
    set\_depend  & Task の依存関係の考慮 \\\hline
    set\_cpu     & Task を実行する CPU の設定 \\ \hline
    run          & 実行 Task Queue の実行 \\ \hline
  \end{tabular}\hfil}
\end{table}

\subsubsection{並列処理}

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