# HG changeset patch # User gongo # Date 1206406118 -32400 # Node ID 30bf38a518e8502d023dce605d025b2f4d367983 # Parent 869c475cc108b5bdac7bf6cb895ef4189a694d99 *** empty log message *** diff -r 869c475cc108 -r 30bf38a518e8 cerium-manager.tex --- a/cerium-manager.tex Mon Mar 24 23:10:27 2008 +0900 +++ b/cerium-manager.tex Tue Mar 25 09:48:38 2008 +0900 @@ -1,4 +1,4 @@ -\subsection{Task Manager} +\section{Task Manager} Task Manager は、Task と呼ばれる分割された各プログラムを 管理するライブラリである。Task 同士の依存関係を考慮しながら メモリ上にマッピングし、SPE 上ではそのプログラムを @@ -64,7 +64,7 @@ \end{verbatim} } -\subsubsection{並列処理} +\subsection{並列処理} Cell ではあらゆるレベルで並列に動作させることが求められる。 ダブルバッファがその一例として挙げられる。 @@ -83,6 +83,23 @@ \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} のようにパイプライン的に動作する。 diff -r 869c475cc108 -r 30bf38a518e8 cerium-rendering.tex --- a/cerium-rendering.tex Mon Mar 24 23:10:27 2008 +0900 +++ b/cerium-rendering.tex Tue Mar 25 09:48:38 2008 +0900 @@ -1,4 +1,4 @@ -\subsection{Rendering Engine} \label{sec-rendering-engine} +\section{Rendering Engine} \label{sec-rendering-engine} Rendering Engine は Polygon から Span を生成する部分と Span に RGB を マッピングし描画する部分と二つに分けることが出来る。 Span とは、Polygon に対するある特定の Y 座標に関するデータを抜き出した @@ -21,7 +21,7 @@ 先に述べたように、SPE が扱えるメモリ領域は 256KB と非常に小さい。 本研究の画面環境が 1920x1080 であるため、Span の情報は元より、 描画に使う Z Buffer のサイズも、 -1 line だけで 1920 * 4byte(RGBA) = 7 KB となる。 +1 line だけで 1920 * 4byte(RGB$\alpha$) = 7 KB となる。 そこで、SPE に DMA 転送する前に、Y 座標を 8 line 毎に Span のリストを生成する。これを SpanPack とする。 8 line 毎にとっている理由は、SPE が持てる Z Buffer が 8 line 分 (60KB) diff -r 869c475cc108 -r 30bf38a518e8 cerium-scene_graph.tex --- a/cerium-scene_graph.tex Mon Mar 24 23:10:27 2008 +0900 +++ b/cerium-scene_graph.tex Tue Mar 25 09:48:38 2008 +0900 @@ -1,6 +1,7 @@ -\subsection{Scene Graph} +\section{Scene Graph} 本研究では、ゲーム中の一つの場面 (Scene) を構成するオブジェクトやその振る舞い、 -ゲームのルールの集合を Scene Graph とする。Scene Graph のノードは +ゲームのルールの集合を Scene Graph とする \cite{chiaki} 。 +Scene Graph のノードは 親子関係を持つ木構造で構成される (\figref{fig-scene_graph}) 。 \begin{figure}[tb] diff -r 869c475cc108 -r 30bf38a518e8 compare.tex --- a/compare.tex Mon Mar 24 23:10:27 2008 +0900 +++ b/compare.tex Tue Mar 25 09:48:38 2008 +0900 @@ -1,5 +1,7 @@ \section{評価と考察} -Cerium Rendering Engine を用いて、OSMesa と同様に立方体を回転させる。 + +Cerium Rendering Engine を用いて、 +OSMesa と同様に立方体を回転させる処理を評価する。 今回、\figref{fig-cerium} で示した Task に対する CPU の割り振りは \tabref{tab:hyoka1} とする。 @@ -8,26 +10,52 @@ \hbox to\hsize{\hfil \begin{tabular}{c|l} \hline \hline Task & CPU \\ \hline - SceneGraph to PolygonPack & PPE \\ \hline - Polygonpack to SpanPack & PPE \\ \hline + SceneGraph to PolygonPack & PPE \\ + Polygonpack to SpanPack & PPE \\ Rendering & SPE \\ \hline \end{tabular}\hfil} \end{table} -PPE/SPE に対するコンパイルの最適化及びその時の実行 FPS を -\tabref{tab:hyoka2} に示す。描画領域は 640x88 である。 +PPE/SPE に対するコンパイルの最適化レベル及びその時の実行 FPS を +\tabref{tab:hyoka2} に示す。描画領域は 640x80 である。 \begin{table}[b] - \caption{Cerium 実行速度 640x88} \label{tab:hyoka2} + \caption{Cerium 実行速度 (640x80)} \label{tab:hyoka2} \hbox to\hsize{\hfil \begin{tabular}{cc|l} \hline \hline PPE & SPE & FPS \\ \hline 最適化なし & 最適化なし & 263 FPS \\ - -O9 & 最適化なし & 317 FPS \\ - 最適化なし & -O9 & 812 FPS \\ - -O9 & -O9 & 1610 FPS \\ \hline + -O2 & 最適化なし & 317 FPS \\ + 最適化なし & -O2 & 812 FPS \\ + -O2 & -O2 & 1355 FPS \\ \hline \end{tabular}\hfil} \end{table} \tabref{tab:hyoka2} より、SPE に対する最適化が非常に有効であるといえる。 -(続き有ります) +また、描画領域の大きさと実行速度は反比例すると考えると、 +1920x1080の時、OSMesa も合わせると \tabref{tab:hyoka3} のようになる。 + +\begin{table}[b] + \caption{実行速度 (1920x1080)} \label{tab:hyoka3} + \hbox to\hsize{\hfil + \begin{tabular}{r|l|l} \hline \hline + & 実行環境 & 実行速度\\ \hline + 1 & SDL(1.2)+OSMesa(6.5.2) & 18 FPS \\ + 2 & SDL(1.2)+OSMesa(6.5.2) with SPE & 24 FPS \\ + 3 & SDL(1.2.13)+OSMesa(7.0.2) with SPE & 43 FPS \\ + 4 & Cerium & 33 FPS \\ \hline + \end{tabular}\hfil} +\end{table} + +Cerium は 環境 3 の速度を下回っている。 +この理由としては、SPE 上で動かしていない Task があるのが挙げられる。 +現在、DMA で SPE 上にプログラムをロードする機能を実装していないため、 +必要なプログラムを入れ替えることができない。 +そのため、現在は Renderer の Task だけを SPE 上にマッピングしてある。 +オーバーレイ機能を導入するという手法もあるが、 +ロード中は SPE が止まってしまうため好ましくない。 + +また、パイプラインが正常に動いているかなど、 +アルゴリズムの検証を行う必要もある。 +この場合、C の下位言語である Continuation based C (CbC) を用いて、 +開発過程の各段階で検証する手法がある \cite{kono} 。 diff -r 869c475cc108 -r 30bf38a518e8 introduction.tex --- a/introduction.tex Mon Mar 24 23:10:27 2008 +0900 +++ b/introduction.tex Tue Mar 25 09:48:38 2008 +0900 @@ -1,3 +1,5 @@ \section{はじめに} %% シーケンシャルな実装ではマルチコアの力は引き出せないとか -%% Cell の並列ほげほげは簡単じゃないとか(簡単って書いたらアウトだが) +%% OSMesa はあれだから自分たちで作ったとか + +(続きます) diff -r 869c475cc108 -r 30bf38a518e8 sigos.bib --- a/sigos.bib Mon Mar 24 23:10:27 2008 +0900 +++ b/sigos.bib Tue Mar 25 09:48:38 2008 +0900 @@ -6,4 +6,32 @@ @misc{blender, author = "{Satoshi Yamasaki.}", title = "Blender.jp - Blender Japanese Website", -howpublished = "\url{http://blender.jp/}"} \ No newline at end of file +howpublished = "\url{http://blender.jp/}"} + +@article{kono, +author = "{Shinji KONO.}", +title = "検証を自身で表現できるハードウェア、ソフトウェア記述言語 Continuation ba sed C と、その Cell への応用", +journal = "電子情報通信学会VLSI設計技術研究会", +year = 2008} + +@misc{osmesa, +author = "", +title = "The Mesa 3D Graphics Library", +howpublished = "\url{http://www.mesa3d.org/}"} + +@misc{sdl, +author = "", +title = "Simple DirectMedia Layer", +howpublished = "\url{http://www.libsdl.org/}"} + +@article{akira, +author = "{Akira KAMIZATO.}", +title = "Cell を用いたゲームフレームワークの提案", +journal = "琉球大学工学部情報工学科平成19年度学位論文", +year = 2008} + +@article{chiaki, +author = "{Chiaki SUGIYAMA.}", +title = "SceneGraph と StatePattern を用いたゲームフレームワークの設計と実装", +journal = "琉球大学工学部情報工学科平成19年度学位論文", +year = 2008} \ No newline at end of file diff -r 869c475cc108 -r 30bf38a518e8 sigos.tex --- a/sigos.tex Mon Mar 24 23:10:27 2008 +0900 +++ b/sigos.tex Tue Mar 25 09:48:38 2008 +0900 @@ -68,13 +68,12 @@ % 本文はここから始まる -\input{introduction} % はじめに -\input{cell} % Cell -\input{cerium} % Cerium -\input{cerium_dev} % 開発過程 -\input{compare} % 評価と考察 - -%\input{conclusion.tex} +\input{introduction} % はじめに +\input{cell} % Cell +\input{cerium} % Cerium +\input{cerium_dev} % 開発過程 +\input{compare} % 評価と考察 +\input{conclusion.tex} % まとめ \bibliographystyle{ipsjunsrt} \bibliography{sigos}