view paper/introduciton.tex @ 5:434ddc4a3970

introduction done.
author tkaito
date Sun, 09 Jan 2011 23:41:20 +0900
parents 8ac265ecf3b2
children 4d67bd445a1d
line wrap: on
line source

\chapter{序論}
\pagenumbering{arabic}

\section{研究背景と目的}
これまで、コンピュータの CPU はクロック周波数を上昇させることで処理能力を高めてきた。
しかし、消費電力の増加や発生する熱の問題により、Core を複数持つことによって処理能力を
上昇させる方向に方針が変更されてきた。近年は様々なコンピュータにマルチコア CPU が
使われるようになっており、それに伴ってプログラミング手法も新たな曲面を見せている。

現在、学生実験にて家庭用ゲーム機 PlayStation 3 (以後 PS3 ) を用いたゲーム開発を行っている。
その PS3 には Cell Broadband Engine (以後 Cell )というマルチコア CPU が採用されている。
Cell Broadband Engine は1つの制御系プロセッサ PowerPC Processor Erement (PPE) と、
8つのデータ処理演算プロセッサ Synergistic Processor Element (SPE) から構成される 。
Cell は 複数の SPE を使用する並列プログラミングが求められている。並列プログラミング
の経験が浅い学生にとって、このような Cell アーキテクチャを理解した上でゲーム開発を
行うことは困難である。

このような問題を、限られた学生実験の中で解決するために、我々は Cell のような 
Many Core Architecture を用いた、並列プログラムの開発をサポートするフレームワークと
して Cell 用の Fine Grain Task Manager Cerium \cite{gongo} を開発した。
現在 Cerium では、 Task という処理の単位を用いて並列処理を実現している。
しかし、その並列度を保つことは難しく、並列プログラムの開発において
プログラムの並列度が保証されているわけではない。これはCerium内部の処理に
関しても言えることである。並列プログラムはその全体の処理で高い並列度を保たなければ
全体の並列度は著しく下がってしまう (Amdahlの法則 \cite{amdahl} )

そこで我々は、Task 単位で並列処理を監視し、プログラムの並列度を検証する手法を
提案する。

検証手法としては以下のものを提案する。

\begin{enumerate}
\item Task の依存関係を用いた検証手法 \label{path1}
\item Task 実行時間時系列を用いた検証手法 \label{path2}
\end{enumerate}

これらの手法を用いて検証を行い、ボトルネックや稼働率の少ない
箇所を見つけることで、性能向上のための改善点を発見することができる。\\

本研究での Task の単位は、サブルーチンまたは関数とする。

検証手法 \ref{path1} では、 Task に設定されている依存関係を調べ、
特定の Task への依存度の高さから検証を行う。
検証手法 \ref{path2} では、実際に動作してる Task の実行時間を時系列順に
取り出し、稼働率の点から検証を行う。

\section{論文構成}

第2章では Cell の詳細な仕様と、使用できる基本的な機能の説明を述べる。

第3章では Cerium を構成する機能の紹介と実装を述べる。

第4章では Task を用いたパイプラインの実装方法を述べる。

第5章では Task を用いたパイプラインの検証手法をのべる。また、
そこからどのように改善点を見つけるのかを紹介する。

第6章では PS3上での並列プログラミングと Cerium を用いたプログラミングの比較
を行う。また、実際に学生に製作してもらったゲームを紹介する。

第7章において、まとめと今後の課題とする。