view cell.tex @ 12:ae4f04bc66a4

*** empty log message ***
author gongo
date Mon, 14 Jul 2008 22:13:11 +0900
parents a0c222f5fb40
children ece94c67e2b9
line wrap: on
line source

\section{Cell}
Cell Broadband Engine \cite{cell} は、SCEI と IBM によって開発された
CPU である。2 thread の PPE (PowerPC Processor Element) と、
8 個の SPE (Synergetic Processor Element) を持ち、
EIB と呼ばれる高速リングバスで構成されている。
本研究で用いた PS3Linux (Fedora 8) では、
6 個の SPE を使うことができる (\figref{fig-cbe}) 。

\begin{figure}[tb]
  \begin{center}
    \includegraphics[scale=0.41]{figure/cbe.pdf}
    \caption{Cell Architecture}
    \label{fig-cbe}
  \end{center}
\end{figure}

SPE には 256KB の Local Store (LS) と呼ばれる、SPE から唯一直接参照できる
メモリ領域があり、バスに負担をかけることなく並列に計算を進めることが出来る。
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}
    \includegraphics[scale=0.5]{figure/cbe-spe.pdf}
    \caption{Synergetic Processor Element}
    \label{fig-cbe-spe}
  \end{center}
\end{figure}


SPE はグラフィックスに適した、4 つの固定小数点、浮動小数点を
同時に演算する命令などを持ち、PPE に比べて高速な演算が可能である。
そのため、ほとんどの演算を SPE 上で行わせることが推奨されている。

\subsection{SPURS}
%%唐突じゃないだろうか

ここでは、現在発表されている Cell の開発環境である SPURS \cite{spurs} について説明する。

SPURS は、閉じた並列分散と考えることができる Cell の環境で、
いかに効率よく動作させるかということを考えたシステムである (\figref{fig-spurs-pipeline}) (\figref{fig-spurs-task}) 。

\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}

Cell の性能を存分に生かすためには SPE を効率よく使い切ることである。
SPE の動作を止めることなく、同期を最小限に行う必要がある。 
そこで SPURS では SPE を効率よく利用するために、PPE に依存せずに SPE コードを 
選択し、実行することと機能は効率重視で割り切ることを挙げている。
現在 SPURS は一般には公開されていない。