Mercurial > hg > Papers > 2008 > gongo-sigos
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}