view presen/presen.rst @ 23:51c95851ae11

fix presentation
author gongo@gendarme.cr.ie.u-ryukyu.ac.jp
date Sat, 14 Feb 2009 19:40:02 +0900
parents 2c5703c3a36e
children de8ba175cc9b
line wrap: on
line source

.. include:: s5defs.txt
.. include:: <mmlalias.txt>

===========================================
Cell 用の Fine-Grain Task Manager の実装
===========================================

*発表者*
  **宮國渡**

*指導教官*
  **河野真治**

*所属*
  **琉球大学 理工学研究科 情報工学専攻 並列信頼研究室**


研究の背景
===================

現在、学生実験で PS3Linux を用いてゲーム開発を行っているが、
学生には困難であることがわかってきている

+ :maroon:`問題1` : :underline:`Cell アーキテクチャプログラミング`

  + Many Core による並列プログラミング

    (データ、コードの分割の必要性)

  + Cell の仕様 (DMA、データのアライメント、etc..)

+ :maroon:`問題2` : :underline:`ゲーム開発用の Framework が無い`

実験期間の大半を Cell の勉強に費やさねばならず、
開発されるゲームのレベルが例年一定以上にならない

研究目的
============

Many Core Architecture を用いた並列プログラムの開発をサポートするフレームワーク :maroon:`Fine Grain Task Manager` を提案する

- 動作環境

  Mac OS X、Linux、PS3(Cell)

- Fine Grain Task の単位

  サブルーチンまたは関数

- Task Manager を用いた開発行程

  1. 逐次型プログラム
  2. データやコードを分割したプログラム
  3. 並列に動かすプログラム

  各段階で信頼性を確保しながら開発を進める


研究目的 (Con't)
==================

**Cerium**
  Task Manager を用いた、PS3ゲーム開発用フレームワーク

Cerium は 3 つの機能で構成されている

- 独自の :maroon:`Rendering Engine`
- ゲームに登場するオブジェクトやルールなど、ゲームを構成する要素を
  木構造として持つ :maroon:`Scene Graph`
- Rendering Engine や Scene Graph の処理単位を Task とし、複数の Core へ
  割り振りを行うカーネル :maroon:`TaskManager`

発表の流れ
======================

- Cell アーキテクチャの概要
- Many Core プログラミングの特徴
- Task Manager の実装
- Task Manager を用いた並列プログラム
- Cerium
- Cerium を用いたゲーム
- まとめと今後の課題

Cell アーキテクチャの概要
===========================

- :big:`Cell アーキテクチャの概要`
- :silver:`Many Core プログラミングの特徴`
- :silver:`Task Manager の実装`
- :silver:`Task Manager を用いた並列プログラム`
- :silver:`Cerium`
- :silver:`Cerium を用いたゲーム`
- :silver:`まとめと今後の課題`

Cell Broadband Engine
========================

.. image:: images/cell_arch.jpg
   :align: center
   :width: 280px
  
- 1個の PPE と 8 個の SPE がリングバスで構成されている

  - Linux 側から使える SPE は 6 個

- SPE は :maroon:`256KB` の Local Store (LS) を持つ
- SPE からメインメモリへは直接アクセスできない

  - SPE が持つ MFC (Memory Flow Controller) へ
    :maroon:`DMA 命令` を送ることで行う

Cell の基本機能
=======================

- :maroon:`DMA (Direct Memory Access)`

  メインメモリと LS 間でデータが転送される

  DMA 転送を行うにはいくつか条件がある

  - データサイズは 16 バイトの倍数
  - 転送元と転送先のアドレスが 16 バイト境界に揃えられている

- :maroon:`Mailbox`

  SPE の MFC 内にある FIFO キュー
  
  PPE と SPE 間で 32 ビットメッセージの交換に用いられる

  キューは 3 種類

  - SPU Inbound Mailbox : PPE |rightarrow| SPE
  - SPU Outbound Mailbox : SPE |rightarrow| PPE
  - SPU Outbound interrupt Mailbox : SPE |rightarrow| PPE (割り込み)

Many Core プログラミングの特徴
================================

- :silver:`Cell アーキテクチャの概要`
- :big:`Many Core プログラミングの特徴`
- :silver:`Task Manager の実装`
- :silver:`Task Manager を用いた並列プログラム`
- :silver:`Cerium`
- :silver:`Cerium を用いたゲーム`
- :silver:`まとめと今後の課題`


定常的な並列度の必要性
========================

**Amdahl 則**
  元のプログラムの並列化率が低ければ、その性能を生かすことは出来ない

.. image:: images/amdahl.jpg
   :align: center
   :width: 360px

.. raw:: html

  <div align="center" style="font-size: large;">
    6 CPU を使っても、プログラムの並列化率が 8 割程度では<br/>
    3倍程度の性能向上しか得られない
  </div>

Amdahl 則より、恒常的に並列プログラムの並列度を維持する必要がある