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