# HG changeset patch # User gongo@gendarme.cr.ie.u-ryukyu.ac.jp # Date 1234608002 -32400 # Node ID 51c95851ae119a81a0a5295e5702a8ab138cacee # Parent d0a637c1e4cc8f5cf45484ee69e4af86c1fba550 fix presentation diff -r d0a637c1e4cc -r 51c95851ae11 paper/cell.tex --- a/paper/cell.tex Sat Feb 14 13:54:55 2009 +0900 +++ b/paper/cell.tex Sat Feb 14 19:40:02 2009 +0900 @@ -43,7 +43,7 @@ \section{SPE (Synergistic Processor Element)} \label{sec:cell_spe} SPE には 256KB の Local Store (LS) と呼ばれる、SPE から唯一、 -直接参照できるメモリ領域がり、バスに負担をかける事無く +直接参照できるメモリ領域があり、バスに負担をかける事無く 並列に計算を進めることが出来る。SPE からメインメモリへは、 直接アクセスすることは出来ず、SPE を構成する一つである MFC (Memory Flow Controller) へ、チャネルを介して DMA (Direct Memory Access) diff -r d0a637c1e4cc -r 51c95851ae11 presen/images/amdahl.jpg Binary file presen/images/amdahl.jpg has changed diff -r d0a637c1e4cc -r 51c95851ae11 presen/images/cell_arch.graffle Binary file presen/images/cell_arch.graffle has changed diff -r d0a637c1e4cc -r 51c95851ae11 presen/images/cell_arch.jpg Binary file presen/images/cell_arch.jpg has changed diff -r d0a637c1e4cc -r 51c95851ae11 presen/presen.html --- a/presen/presen.html Sat Feb 14 13:54:55 2009 +0900 +++ b/presen/presen.html Sat Feb 14 19:40:02 2009 +0900 @@ -336,6 +336,11 @@ ===================== --> + +
発表者
宮國渡
@@ -347,11 +352,11 @@
-

研究の背景と目的

-

現在、学生実験で PS3Linux を用いてゲーム開発を行っている

-

しかし、学生には困難!

+

研究の背景

+

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

-

実験期間の大半を Cell の勉強に費やし、 +

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

-
- ↓ -

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

研究目的

-
+
+

研究目的 (Con't)

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

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

+
-

作業報告

+

発表の流れ

+ +
+
+

Cell アーキテクチャの概要

+
+

Cell Broadband Engine

+
images/cell_arch.jpg
+ -
-
-

SceneGraph

-

allExecute で一つずつコピーしていく

-
-
-

Camera

-

それっぽい動き

+
+

Cell の基本機能

+
    +
  • DMA (Direct Memory Access)

    +

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

    +

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

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

    +

    SPE の MFC 内にある FIFO キュー

    +

    PPE と SPE 間で 32 ビットメッセージの交換に用いられる

    +

    キューは 3 種類

    +
      +
    • SPU Inbound Mailbox : PPE → SPE
    • +
    • SPU Outbound Mailbox : SPE → PPE
    • +
    • SPU Outbound interrupt Mailbox : SPE → PPE (割り込み)
    • +
    +
  • +
+
+
+

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

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

定常的な並列度の必要性

+
+
Amdahl 則
+
元のプログラムの並列化率が低ければ、その性能を生かすことは出来ない
+
+
images/amdahl.jpg
+
+ 6 CPU を使っても、プログラムの並列化率が 8 割程度では
+ 3倍程度の性能向上しか得られない +

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

diff -r d0a637c1e4cc -r 51c95851ae11 presen/presen.rst --- a/presen/presen.rst Sat Feb 14 13:54:55 2009 +0900 +++ b/presen/presen.rst Sat Feb 14 19:40:02 2009 +0900 @@ -1,4 +1,5 @@ -.. include:: +.. include:: s5defs.txt +.. include:: =========================================== Cell 用の Fine-Grain Task Manager の実装 @@ -14,14 +15,13 @@ **琉球大学 理工学研究科 情報工学専攻 並列信頼研究室** -研究の背景と目的 +研究の背景 =================== -現在、学生実験で PS3Linux を用いてゲーム開発を行っている +現在、学生実験で PS3Linux を用いてゲーム開発を行っているが、 +学生には困難であることがわかってきている -**しかし、学生には困難!** - -+ 問題1:Cell アーキテクチャプログラミング ++ :maroon:`問題1` : :underline:`Cell アーキテクチャプログラミング` + Many Core による並列プログラミング @@ -29,73 +29,137 @@ + Cell の仕様 (DMA、データのアライメント、etc..) -+ 問題2:ゲーム開発用の Framework が無い ++ :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 の勉強に費やし、 -開発されるゲームのレベルが例年一定以上にならない +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 -
- ↓ -
- -Many Core Architecture を用いた並列プログラムの開発を -サポートするフレームワーク「 :red:`Fine Grain Task Manager` 」を提案する - -研究目的 -============== - -+ 学生実験で PS3Linux を用いてゲーム開発を行っている - - + Cell プログラミングが難しい - - + 並列実行のためのデータ、コードの分割 - + Cell 仕様 (DMA、アライメント、etc...) - - + 毎回 Cell の勉強からしないと始めないといけないので - ゲームプログラムのレベルが一定以上にならない - - + ゲーム開発用のフレームワークが無い - -+ 本研究では、Cell のような Many Core Architecture を用いた、 - 並列プログラムの開発をサポートするフレームワークとして、 - Fine Grain Task Manager を設計する -+ Task Manager を用いた開発行程 - - 1. 逐次型プログラム - 2. データやコードを分割したプログラム(シーケンシャルに動く) - 3. 並列実行プログラム +
+ 6 CPU を使っても、プログラムの並列化率が 8 割程度では
+ 3倍程度の性能向上しか得られない +
-+ 各ステップで信頼性を確かめながら開発を行っていく - -+ Task Manager を用いて、PS3 ゲーム開発用フレームワークとして Cerium を開発する - - -作業報告 -====================== - -- 修論事務提出 -- SceneGraph - - - allExecute - -- Camera - - -SceneGraph -================= - -allExecute で一つずつコピーしていく - -- remove flag がついた奴はコピーしない -- 今の実装だと親消すと子も全滅 - - - 選べてもいいし、ユーザが自分で付け替えるのは。。。 - -Camera -================= - -それっぽい動き - - +Amdahl 則より、恒常的に並列プログラムの並列度を維持する必要がある diff -r d0a637c1e4cc -r 51c95851ae11 presen/s5defs.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presen/s5defs.txt Sat Feb 14 19:40:02 2009 +0900 @@ -0,0 +1,86 @@ +.. Definitions of interpreted text roles (classes) for S5/HTML data. +.. This data file has been placed in the public domain. + +.. Colours + ======= + +.. role:: black + :class: text-black +.. role:: gray + :class: text-gray +.. role:: silver + :class: text-silver +.. role:: white + :class: text-white + +.. role:: maroon + :class: text-maroon +.. role:: red + :class: text-red +.. role:: magenta + :class: text-magenta +.. role:: fuchsia + :class: text-fuchsia +.. role:: pink + :class: text-pink +.. role:: orange + :class: text-orange +.. role:: yellow + :class: text-yellow +.. role:: lime + :class: text-lime +.. role:: green + :class: text-green +.. role:: olive + :class: text-olive +.. role:: teal + :class: text-teal +.. role:: cyan + :class: text-cyan +.. role:: aqua + :class: text-aqua +.. role:: blue + :class: text-blue +.. role:: navy + :class: text-navy +.. role:: purple + :class: text-purple + + +.. Text Sizes + ========== + +.. role:: huge +.. role:: big + :class: text-big +.. role:: small +.. role:: tiny + + +.. Display in Slides (Presentation Mode) Only + ========================================== + +.. role:: slide + :class: slide-display + +.. role:: underline + :class: text-underline + + +.. Display in Outline Mode Only + ============================ + +.. role:: outline + + +.. Display in Print Only + ===================== + +.. role:: print + + +.. Incremental Display + =================== + +.. role:: incremental +.. default-role:: incremental diff -r d0a637c1e4cc -r 51c95851ae11 presen/ui/default/gongo.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/presen/ui/default/gongo.css Sat Feb 14 19:40:02 2009 +0900 @@ -0,0 +1,17 @@ +@charset "UTF-8"; + +span.text-red {color: red; } +span.text-silver {color: #E0E0E0; } /* 本当は #C0C0C0 */ +span.text-maroon {color: maroon; } +span.text-orange {color: orange; } +span.text-lime {color: lime; } +span.text-cyan {color: cyan; } +span.text-aqua {color: aqua; } +span.text-blue {color: blue; } +span.text-navy {color: navy; } +span.text-purple {color: purple; } +span.text-teal {color: teal; } +span.text-big {font-size: xx-large; } +span.text-underline {border-bottom: solid 2px black; } + +* {font-family: Osaka, 'MS Pゴシック';} \ No newline at end of file diff -r d0a637c1e4cc -r 51c95851ae11 presen/ui/default/print.css --- a/presen/ui/default/print.css Sat Feb 14 13:54:55 2009 +0900 +++ b/presen/ui/default/print.css Sat Feb 14 19:40:02 2009 +0900 @@ -1,1 +1,1 @@ -/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */ .slide, ul {page-break-inside: avoid; visibility: visible !important;} h1 {page-break-after: avoid;} body {font-size: 12pt; background: white;} * {color: black;} #slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;} #slide0 h3 {margin: 0; padding: 0;} #slide0 h4 {margin: 0 0 0.5em; padding: 0;} #slide0 {margin-bottom: 3em;} h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;} .extra {background: transparent !important;} div.extra, pre.extra, .example {font-size: 10pt; color: #333;} ul.extra a {font-weight: bold;} p.example {display: none;} #header {display: none;} #footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;} #footer h2, #controls {display: none;} /* The following rule keeps the layout stuff out of print. Remove at your own risk! */ .layout, .layout * {display: none !important;} \ No newline at end of file +/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */ .slide, ul {page-break-inside: avoid; visibility: visible !important;} h1 {page-break-after: avoid;} body {font-size: 12pt; background: white;} * {color: black;} #slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;} #slide0 h3 {margin: 0; padding: 0;} #slide0 h4 {margin: 0 0 0.5em; padding: 0;} #slide0 {margin-bottom: 3em;} h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;} .extra {background: transparent !important;} div.extra, pre.extra, .example {font-size: 10pt; color: #333;} ul.extra a {font-weight: bold;} p.example {display: none;} #header {display: none;} #footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;} #footer h2, #controls {display: none;} /* The following rule keeps the layout stuff out of print. Remove at your own risk! */ .layout, .layout * {display: none !important;} \ No newline at end of file diff -r d0a637c1e4cc -r 51c95851ae11 presen/ui/default/slides.css --- a/presen/ui/default/slides.css Sat Feb 14 13:54:55 2009 +0900 +++ b/presen/ui/default/slides.css Sat Feb 14 19:40:02 2009 +0900 @@ -1,3 +1,4 @@ @import url(s5-core.css); /* required to make the slide show run at all */ @import url(framing.css); /* sets basic placement and size of slide components */ -@import url(pretty.css); /* stuff that makes the slides look better than blah */ \ No newline at end of file +@import url(pretty.css); /* stuff that makes the slides look better than blah */ +@import url(gongo.css); /* by gongo */ \ No newline at end of file