diff resume/A-6-1-065746.tex @ 0:c01842825453

add mid_papers
author aaa
date Wed, 28 Oct 2009 18:56:03 +0900
parents
children b365717191e4
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/resume/A-6-1-065746.tex	Wed Oct 28 18:56:03 2009 +0900
@@ -0,0 +1,1 @@
+\documentclass[twocolumn,twoside,9.5pt]{jarticle}
% \usepackage[dvips]{graphicx}
\usepackage[dvipdfm]{graphicx}
\usepackage{fancyhdr,picins}
\pagestyle{fancy}
\lhead{\parpic{
\includegraphics[height=1zw,clip,keepaspectratio]{pic/emblem-bitmap.pdf}}
琉球大学主催 工学部情報工学科 卒業研究発表会}
\rhead{}
\cfoot{}

\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}}
\setlength{\headheight}{0mm}
\setlength{\headsep}{5mm}
\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}}
\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}}
\setlength{\textwidth}{181mm}
\setlength{\textheight}{261mm}
\setlength{\footskip}{0mm}
\pagestyle{empty}

\begin{document}
\title{並列プログラミングによる\\ゲームフレームワークの処理速度の向上}
\author{065746J 仲宗根広樹 指導教員 : 河野真治}
\date{\today}
\maketitle
\thispagestyle{fancy}

\section{はじめに}
Cerium の並列度の向上を計り、プレイヤーが満足できるゲームの処理速度を実現させる。
家庭用ゲーム機 PlayStation 3 には Cell というヘテロジニアスマルチコアプロセッサが搭載されている。

当研究室では Cell 上でゲームプログラミングができる Cell Task Manager Cerium を開発した。
Cerium は TaskManager, SceneGraph, Rendering Engine の3つの機能に分けられる。

%Cerium の並列度の向上を計り、プレイヤーが満足できる処理速度を実現させる
%当研究室では家庭用ゲーム機 PlayStation 3 上でゲームプログラミングができる Cell Task Manager Cerium を開発した。
%現在、PlayStation 3 の GPU にアクセスする API は公開されていないため Cerium は独自に Rendering Engine を持っている。
%Cerium は TaskManager, Rendering, SceneGraph の三つで構成されている。



\section{Cell Broadband Engine} \label{sec:cell}
Cell\cite{cell} は1基の PowerPC Processor Element (PPE) と8基の Synergistic Processor Element (SPE) で構成されるヘテロジニアスマルチコアプロセッサである。各プロセッサは高速バスで接続されている。本研究では6基の SPE が使用可能となっている。

\begin{figure}[htb]
  \begin{center}
    \includegraphics[scale=0.5]{image/Cell-main2.pdf}
    \caption{Cell の構成}
    \label{fig:cell-main2}
  \end{center}
\end{figure}

PPE は汎用プロセッサでありオペレーティングシステムやアプリケーションの実行、SPE を制御する役割を持っている。SPE は演算を繰り返すマルチメディア系の処理を得意とする演算系プロセッサである。SPE は 演算処理を行う SPU、256 KByte の Local Store、メインメモリや他の SPE とデータをやり取りする Memory Flow Controller の3つで構成されている。

\section{Cerium}
Cerium は、オブジェクトのデータやその振る舞い、またはゲームのルールなどゲームを構成する場面(Scene) を木構造で持つ SceneGraph、OSMesa に代表される Rendering Engine、そしてそれらの実行単位を Task とし、動的に全てのコアが動作する様な割り振りを行うカーネル TaskManager で構成されている。

ゲーム内で使用するオブジェクトは Cerium 独自の xml 形式で書かれており、xml ファイルを読込んで SceneGraph を生成する。

Rendering に関しては処理を Task 単位に分割して SPE に投入して処理しているが、SceneGraph の処理は PPE 1つで行っている。

\begin{figure}[htb]
  \begin{center}
    \includegraphics[scale=0.5]{image/separate.pdf}
    \caption{SceneGraph と Rendering}
    \label{fig:separate}
  \end{center}
\end{figure}

SceneGraph にはそれぞれに move と collision があり、SceneGraph の List を辿り逐次実行される。
SceneGraph の move, collision の処理は PPE で行っている。しかし PPE に単純な演算の繰り返しをさせるのは好ましくない。

そこで、SceneGraph の処理も Task に分割して SPE に投入し、Rendering と並行に走らせる事で処理速度の向上を計る。図\ref{fig:separate}

\section{SPE を用いた SceneGraph の処理}
SceneGraph にはポリゴンを形成するための点やテクスチャの座標等が含まれている。move, collision にはそれらの情報は必要がないので SceneGraph を丸ごと SPE に送らない。SceneGraph と1対1に対応し、xyz 座標、親子関係、消去、生成等の情報を持つ Property を作成する。Property は例題毎に用意されており適宜要素を加えることが出来るようになっている。

\begin{figure}[htb]
  \begin{center}
    \includegraphics[scale=0.4]{image/SceneGraphTask.pdf}
    \caption{各 SPE に投入する SceneGraphTask}
    \label{fig:SceneGraphTask}
  \end{center}
\end{figure}

SPE には Property の配列を渡して move, collision の処理を行わせ、PPE 側では返されてきた Property の情報を元に SceneGraph 生成し Tree を再構成して Rendering に渡す。図\ref{fig:SceneGraphTask}

\begin{figure}[htb]
  \begin{center}
    \includegraphics[scale=0.4]{image/pipe.pdf}
    \caption{パイプライン}
    \label{fig:pipe}
  \end{center}
\end{figure}

SceneGraph と Rendering を並行に実行するために、Property と SceneGraph のバッファは二つ用意しておき、一方は Rendering に、一方は SceneGraph の処理に使う。
Change では Move Collision と Rendering の処理を待ち合わせて同期をとり、バッファの入れ替えを行っている。図\ref{fig:pipe}


\section{まとめと今後の課題}
\begin{itemize}
\item 現在は SPE 1基で SceneGraph を処理する例題の作成途中なので、複数 SPE に均等に処理を割り振る例題の作成。
\item Property から SceneGraph を生成し tree を構築する部分において、SceneGraph の新規生成と削除を考慮した設計を行う。
\item xml から作成された SceneGraph はオリジナルとして配列に順次格納されている。現在は SceneGraph を create する場合はオリジナルの配列をリニアサーチしてきた物をコピーしている。このオリジナルの配列を Texture を管理している hash テーブルを用いてまとめて管理できるようにする。
\end{itemize}

\thispagestyle{fancy}
\begin{thebibliography}{9}

\bibitem{cell}Sony Corporation.

Cell BroadbandEngine \texttrademark アーキテクチャ, 2006

\bibitem{cerium} SourceForge.JP: Cerium Rendering Engine

\verb|https//sourceforge.jp/projects/cerium/|

\bibitem{wataru} Wataru MIYAGUNI.

Cell 用の Fine-Grain Task Manager の実装, 2009

\end{thebibliography}
\end{document}
\ No newline at end of file