diff presen/presen.html @ 12:e6a78ee8fb13

fix
author Yutaka_Kinjyo
date Tue, 12 Apr 2011 17:13:21 +0900
parents
children 083c7035b2cf
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/presen/presen.html	Tue Apr 12 17:13:21 2011 +0900
@@ -0,0 +1,855 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
+	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<META http-equiv="Content-Type" content="text/html; charset=utf-8">
+
+<head>
+<title>発表資料</title>
+<!-- metadata -->
+<meta name="generator" content="S5" />
+<meta name="version" content="S5 1.1" />
+<meta name="presdate" content="20050728" />
+<meta name="author" content="Eric A. Meyer" />
+<meta name="company" content="Complex Spiral Consulting" />
+<!-- configuration parameters -->
+<meta name="defaultView" content="slideshow" />
+<meta name="controlVis" content="hidden" />
+<!-- style sheet links -->
+<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" />
+<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" />
+<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" />
+<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" />
+<!-- S5 JS -->
+<script src="ui/default/slides.js" type="text/javascript"></script>
+
+<style type="text/css"> 
+body {
+font-size: 100%;
+}
+p.ex10 { font-size: 2.0em; }
+p.ex9 { font-size: 1.9em; }
+p.ex8 { font-size: 1.8em; }
+p.ex7 { font-size: 1.7em; }
+p.ex6 { font-size: 1.6em; }
+p.ex5 { font-size: 1.5em; }
+p.ex4 { font-size: 1.4em; }
+p.ex3 { font-size: 1.3em; }
+p.ex2 { font-size: 1.2em; }
+p.ex1 { font-size: 1.1em; }
+p.ex0 { font-size: 1.0em; }
+p.ex05 { font-size: 0.5em; }
+ 
+span.classifier {
+  font-family: sans-serif ;
+  font-style: oblique }
+ 
+span.classifier-delimiter {
+  font-family: sans-serif ;
+  font-weight: bold }
+ 
+span.interpreted {
+  font-family: sans-serif }
+ 
+span.option {
+  white-space: nowrap }
+ 
+span.pre {
+  white-space: pre }
+ 
+span.problematic {
+  color: red }
+ 
+span.section-subtitle {
+  /* font-size relative to parent (h1..h6 element) */
+  font-size: 80% }
+ 
+</style> 
+</head>
+
+
+<body>
+
+<div class="layout">
+<div id="controls"><!-- DO NOT EDIT --></div>
+<div id="currentSlide"><!-- DO NOT EDIT --></div>
+<div id="header"></div>
+<div id="footer">
+<!--<h1>Cell上のソフトウェアレンダリングの高速化と高機能化</h1>
+<h2>琉球大学工学部情報工学科並列信頼研</h2>-->
+</div>
+
+</div>
+
+<div class="presentation">
+
+<div class="slide">
+
+<h1>ゲームフレームワーク Cerium TaskManager の改良</h1>
+<h3>金城 裕, 河野 真治, <br>多賀野 海人, 小林 佑亮</h3>
+<h4>琉球大学大学院理工学研究科情報工学専攻並列信頼研</h4>
+</div>
+
+<div class="slide">
+<h1>概要</h1>
+
+ゲームフレームワーク Cerium TaskManager を開発しました。
+
+<ul>
+  <li>動作環境:MacOSX, Linux, PS3/Cell</li>
+  <li>主にCellに特化している。</li>
+  <li>SceneGraphを用いて、ゲームを記述する</li>
+
+</ul><br>
+
+琉球大学の学生実験で使用している。
+
+</div>
+
+
+<div class="slide">
+<h1>Cell</h1>
+Cell Broadband Engine
+
+<ul>
+  <li>ソニー・コンピュータエンタテインメント、ソニー、IBM , 東芝によって開発されたマルチコア CPU である</li>
+  <li>1基の制御系プロセッサコアPPE(PowerPC Processor Element)</li>
+  <li>8基の演算系プロセッサコアSPE(Synergistic Processor Element)</li>
+  <li>各コアはEIB(Element Interconnect Bus)とうバスで接続されている</li>
+</ul><br>
+
+</div>
+
+<div class="slide">
+<h1>Cell</h1>
+Cell Broadband Engine
+
+<table height="100%" width="100%" border="0">
+<tr><td align="center" valign="middle">
+<img src="gazo/cell_arch.jpg" style="width: 50%%"></td></tr>
+</table>
+
+
+PPEは直接メインメモリアクセスできるが、SPEはそれぞれのLSにしかアクセスできない<br>
+DMA転送を用いてメインメモリからのデータを明示的に取得する
+
+</div>
+
+<div class="slide">
+<h1>Cell</h1>
+Cell のプログラミングスタイル
+
+<ul>
+  <li>PPEがデータと仕事を分割し、各SPEへ割り当てる</li>
+</ul><br>
+
+Ceriumでは関数をTaskとして定義。Taskを各SPEへ割り当てる。<br>
+一つのTaskにはinput,output,param,等のデータを持たせる<br>
+
+
+</div>
+
+<div class="slide">
+<h1>Ceriumの構成</h1>
+
+Ceriumの構成
+
+<ul>
+  <li>TaskManager</li>
+  <ul>
+    <li>ユーザが定義したTaskを管理し、各コアに割り当てる</li>
+  </ul>
+
+  <li>RenderingEngine</li>
+  <ul>
+    <li>オブジェクトを画面に描画する</li>
+    <li>3種類のTaskから構成される</li>
+  </ul>
+
+  <li>SceneGraph</li>
+  <ul>
+    <li>ゲームのルールを記述してく</li>
+    <li>ゲームのシーンを作成し、それを切り替えながらゲームを進行する</li>
+    <li>OpenSceneGraphのようなもの</li>
+  </ul>
+
+</ul><br>
+
+
+
+</div>
+
+<div class="slide">
+<h1>Ceriumの構成</h1>
+
+<table height="100%" width="100%" border="0">
+<tr><td align="center" valign="middle">
+<img src="gazo/cerium.png" style="width: 50%%"></td></tr>
+</table>
+
+</div>
+
+<div class="slide">
+<h1>TaskManager</h1>
+
+TaskManager
+
+<ul>
+  <li>Taskは関数単位</li>
+  <li>定義されたTaskは依存関係に沿って実行される</li>
+  <li>Taskはある程度の数が揃った上で、TaskListにまとめられSPEに送られる。</li>
+  <li>Taskはread,exec,write それぞれパイプライン化されて動く</li>
+  <li>Taskに必要なデータはDMA転送で送られる。転送時間はパイプライン化によって隠される</li>
+  <li>Taskの中にDMA転送命令を書くと自動ではパイプライン化されない</li>
+</ul>
+
+</div>
+
+<div class="slide">
+<h1>TaskMangerを使った例題</h1>
+
+CeriumのTaskManager を使ったSortの例題<br>
+10万個のランダムな値をクイックソートでソートする<br>
+ソートする関数をTaskにして各SPEで実行<br><br>
+
+<table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center">
+<caption>Sortの例題</caption>
+<tr>
+<th></th>
+<th>PPEのみ</th>
+<th>SPE 1つ</th>
+<th>SPE 6つ</th>
+<!--<th>Mac(Core2Duo)</th>-->
+<th>SPE稼働率</th>
+</tr>
+<tr align="center">
+<td>QuickSort</td>
+<td>5.60s</td>
+<td>6.22s</td>
+<td>1.07s</td>
+<td>97%</td>
+<!--<td>1.76s</td>-->
+</tr>
+</table>
+
+<!-- 2.13GHz -->
+</div>
+
+
+<div class="slide">
+<h1>アムダール則</h1>
+
+プログラムの全体に対する並列化した部分の割合が低いと、マルチコアの性能がでない
+<!--プログラムの8割を並列化すると、6CPUでは3倍の性能向上しか得られない-->
+
+<table height="100%" width="100%" border="0">
+<tr><td align="center" valign="middle">
+<img src="gazo/amdahl.jpg" style="width: 55%%"></td></tr>
+</table>
+
+</div>
+
+<div class="slide">
+<h1>RenderingEngine</h1>
+
+RenderingEngineの例題<br>
+月と
+
+<table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center">
+<tr>
+<th></th>
+<th>FPS</th>
+<th>稼働率</th>
+<!--<th>Mac(Core2Duo)</th>-->
+<th>SPE稼働率</th>
+</tr>
+<tr align="center">
+<td>universe</td>
+<td>17FPS</td>
+<td>25.4%</td>
+<!--<td>1.76s</td>29%-->
+</tr>
+</table>
+
+
+
+
+</div>
+
+
+<div class="slide">
+<h1>RenderingEngine</h1>
+
+SortとRenderingEngineの違い
+
+<ul>
+  <li>三種類のTaskから構成されている</li>
+  <li>三つのTaskはバリア同期を行っている</li>
+  <li>すべてのTaskは一度に作られない</li>
+  <li>PPEにもTaskが割り振られている</li>
+  <li>大量のデータを扱う(ポリゴン、テクスチャ)</li>
+</ul>
+
+</div>
+
+<div class="slide">
+<h1>RenderingEngineの構成</h1>
+RenderingEngineの構成
+<ul>
+  <li>CreatePolygon</li>
+  <ul>
+    <li>モデリングデータからポリゴンを生成する</li>
+  </ul>
+  <li>CreateSpan</li>
+  <ul>
+    <li>ポリゴンをSpanと呼ばれる水平な線に分ける</li>
+    </ul>
+  <li>DrawSpan</li>
+  <ul>
+    <li>Spanを実際にディスプレイに描画する</li>
+  </ul>
+</ul><br>
+
+RenderingEngineは3種類のTaskから構成されている
+
+</div>
+
+
+<div class="slide">
+<h1>RenderingEngine</h1>
+
+RenderingEngienの場合の問題点
+
+<ul>
+  <li>SPEの待ちが入る(SPEの稼働率の低下、処理性能の低下)</li>
+  <ul>
+    <li>MailをPPEが読み込みのを待つ</li>
+    <li>他のSPEを待つ</li>
+    <li>次のTaskListを待つ</li>
+  </ul>
+  <li>PPE側でTaskを生成、各SPEに割り振る</li>
+  <li>Taskはバリア同期している</li>
+</ul>
+
+</div>
+
+<div class="slide">
+<h1>バリア同期</h1>
+<table height="100%" width="100%" border="0">
+<tr><td align="center" valign="middle">
+<img src="gazo/renderingengine1.png" style="width: 35%%"></td></tr>
+</table>
+
+RenderingEngineのTaskは、3つそれぞれバリア同期をしている。
+
+</div>
+
+<div class="slide">
+<h1>バリア同期</h1>
+バリア同期には二つの待ちがある
+<ul>
+  <li>SPEが他のSPEを待つ時間</li>
+  <li>バリア同期が完了し、PPE側で次のTaskが作られる時間</li>
+</ul><br>
+
+
+</div>
+
+<div class="slide">
+<h1>バリア同期</h1>
+<table height="100%" width="100%" border="0">
+<tr><td align="center" valign="middle">
+<img src="gazo/renderingengine2.png" style="width: 45%%"></td></tr>
+</table>
+
+この待ちを解消するためにTaskのパイプライン化を行った。
+
+</div>
+
+
+
+<div class="slide">
+<h1>Ceriumの改良点の概要</h1>
+
+Ceriumの改良点の概要
+
+<ul>
+  <li>TaskManager</li>
+  <ul>
+    <li>Taskの同期にはCellのMail機能を使う</li>
+    <li>Mailの同期するタイミングの改良</li>
+    <ul>
+      <li>MailQueue</li>
+      <li>TaskArray</li>
+    </ul>
+  </ul>
+
+  <li>RenderingEngine</li>
+  <ul>
+    <li>Taskのパイプライン化</li>
+    <li>扱う画像をSPE側でキャッシュする</li>
+  </ul>
+
+</ul>
+
+</div>
+
+<div class="slide">
+<h1>Mailbox機能</h1>
+CellのMailbox機能<br>
+
+<ul>
+  <li>PPEとSPEとの間を双方向で32bitのデータを受け渡す</li>
+  <li>FIFO キュー構造</li>
+</ul>
+Mailboxの種類
+<ul>
+  <li>Inbount Mailbox(PPE->SPE 4つ)</li>
+  <li>Outbount Mailbox(SPE->PPE 一つ)</li>
+  <li>Outbount interrupt Mailbox(SPE->PPE 一つ)</li>
+</ul>
+
+</div>
+
+<div class="slide">
+<h1>Mailbox機能</h1>
+
+<table height="100%" width="100%" border="0">
+<tr><td align="center" valign="middle">
+<img src="gazo/mailbox.png" style="width: 60%%"></td></tr>
+</table>
+
+</div>
+
+<div class="slide">
+<h1>Mailbox機能</h1>
+SPE側からTaskが一つ実行完了する度に、実行完了のMailをOutboxに書きこむ<br>
+
+<ul>
+  <li>Outboxに既にMailが書きこまれている場合に、PPE側から読み込まれるまで、SPEは待つ(Cellの仕様)</li>
+  <li>PPE側のMailチェックが追いつかない場合がある。</li>
+  <li>その間、SPEは何もしないので、処理速度の低下につながる</li>
+</ul><br>
+
+そこで、Outboxに既に読み込まれていないMailがあった場合に、いったん、別のキューに追加する。(MailQueue)
+
+
+</div>
+
+<div class="slide">
+<h1>MailQueue</h1>
+
+<ul>
+  <li>TaskListを消化し、次のTaskListを要求する時に、MailQueueにMailが残っている場合はそれを先に書きだす</li>
+  <li>PPE側はMailのチェックをMailが無くなるまでループする</li>
+  <li>PPEはMailがない場合に、自分の仕事に戻る。</li>
+  <li>今のPPEのMailチェックの仕様には、一度にMailを書きだすのが向いている</li>
+</ul>
+
+</ul>
+
+</div>
+
+<div class="slide">
+<h1>MailQueueの効果</h1>
+
+<table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center">
+<caption>MailQueueの効果</caption>
+<tr>
+<th></th>
+<th>改良前</th>
+<th>改良後</th>
+<th>性能</th>
+</tr>
+<tr align="center">
+<td>universe</td>
+<td>16FPS</td>
+<td>18.5FPS</td>
+<td>12%向上</td>
+</tr>
+</table>
+
+地球と月を表示する例題を使って計測した。
+
+</div>
+
+<div class="slide">
+<h1>Ceriumの改良点の概要</h1>
+
+Ceriumの改良点の概要
+
+<ul>
+  <li>TaskManager</li>
+  <ul>
+    <li>Taskの同期にはCellのMail機能を使う</li>
+    <li>Mailの同期するタイミングの改良</li>
+    <ul>
+      <li><s>MailQueue</s></li>
+      <li>TaskArray</li>
+    </ul>
+  </ul>
+
+  <li>RenderingEngine</li>
+  <ul>
+    <li>Taskのパイプライン化</li>
+    <li>扱う画像をSPE側でキャッシュする</li>
+  </ul>
+
+</ul>
+
+</div>
+
+
+<div class="slide">
+<h1>TaskArray</h1>
+Task毎のMailは、Task同士の依存関係を解決するために用いている。
+
+<ul>
+  <li>依存関係はグループ化できる</li>
+  <li>TaskArrayを用いて複数のTaskのMailを一つに扱う</li>
+</ul>
+
+Mailの数を減らせるので、Mailのための処理が減る。その分処理速度が上がる
+
+</div>
+
+<div class="slide">
+<h1>TaskArray</h1>
+
+<table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center">
+<caption>TaskArrayの効果(universe)</caption>
+<tr>
+<th></th>
+<th>改良前</th>
+<th>改良後</th>
+<th>性能</th>
+</tr>
+<tr align="center">
+<td>universe</td>
+<td>16FPS</td>
+<td>18.5FPS</td>
+<td>12%向上</td>
+</tr>
+</table>
+
+</div>
+
+
+
+<div class="slide">
+<h1>MailQueueとTaskArray</h1>
+
+<table border="1" cellspacing="0" cellspacing="2" cellpadding="8" align="center">
+<caption>MailQueueとTaskArrayの効果(universe)</caption>
+<tr>
+<th>TaskArray</th>
+<th>MailQueue</th>
+<th>FPS</th>
+<th>性能</th>
+</tr>
+<tr align="center">
+<td>あり</td>
+<td>あり</td>
+<td>20FPS</td>
+<td>22%向上</td>
+</tr>
+<tr align="center">
+<td>あり</td>
+<td>なし</td>
+<td>18.5FPS</td>
+<td>12%向上</td>
+</tr>
+<tr align="center">
+<td>なし</td>
+<td>あり</td>
+<td>18.5FPS</td>
+<td>12%向上</td>
+</tr>
+<tr align="center">
+<td>なし</td>
+<td>なし</td>
+<td>16.4FPS</td>
+<td>0%向上</td>
+</tr>
+</table>
+
+</div>
+
+
+<div class="slide">
+<h1>Ceriumの改良点の概要</h1>
+
+Ceriumの改良点の概要
+
+<ul>
+  <li>TaskManager</li>
+  <ul>
+    <li>Taskの同期にはCellのMailbox機能を使う</li>
+    <li>Mailの同期するタイミングの改良</li>
+    <ul>
+      <li><s>MailQueue</s></li>
+      <li><s>TaskArray</s></li>
+    </ul>
+  </ul>
+
+  <li>RenderingEngine</li>
+  <ul>
+    <li>Taskのパイプライン化</li>
+    <li>扱う画像をSPE側でキャッシュする</li>
+  </ul>
+
+</ul>
+
+</div>
+
+
+
+
+<div class="slide">
+<h1>パイプライン化</h1>
+<table height="100%" width="100%" border="0">
+<tr><td align="center" valign="middle">
+<img src="gazo/renderingengine4.png" style="width: 40%%"></td></tr>
+</table>
+
+あまり、多段にするとゲームのキー入力の反映が遅れる。DrawSpanの処理が他の二つに比べて重いので
+DrawSpanとパイプラインを組むことで十分に隠れる
+
+</div>
+
+<div class="slide">
+<h1>パイプライン化の比較</h1>
+
+例題:<br>
+PS3上で学生実験で学生が作成したシューティングゲーム
+SuperDandy を用いる。
+
+
+</div>
+
+
+<div class="slide">
+<h1>パイプライン化の比較</h1>
+
+<table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center">
+<caption>パイプライン化の効果(dandy)</caption>
+<tr>
+<th></th>
+<th>改良前</th>
+<th>改良後</th>
+<th>性能</th>
+</tr>
+<tr align="center">
+<td>dandy</td>
+<td>11.5FPS</td>
+<td>16.6FPS</td>
+<td>44%向上</td>
+</tr>
+</table>
+
+44%の向上がみられた。
+
+</div>
+
+<div class="slide">
+<h1>Ceriumの改良点の概要</h1>
+
+Ceriumの改良点の概要
+
+<ul>
+  <li>TaskManager</li>
+  <ul>
+    <li>Taskの同期にはCellのMailbox機能を使う</li>
+    <li>Mailの同期するタイミングの改良</li>
+    <ul>
+      <li><s>MailQueue</s></li>
+      <li><s>TaskArray</s></li>
+    </ul>
+  </ul>
+
+  <li>RenderingEngine</li>
+  <ul>
+    <li><s>Taskのパイプライン化</s></li>
+    <li>扱う画像をSPE側でキャッシュする</li>
+  </ul>
+
+</ul>
+
+</div>
+
+
+<div class="slide">
+<h1>SPEのキャッシュ効果</h1>
+
+SPE内でのキャッシュ
+
+<ul>
+  <li>DrawSpan内で、描画するためのテクスチャデータを読み込む。</li>
+  <li>テクスチャは分割さていて、必要な時に必要な部分を読み込む</li>
+  <li>そこで、テクスチャをキャッシュするようにした(LRU)</li>
+  <li>テクスチャのデータはハッシュで管理する</li>
+  </ul>
+
+</div>
+
+
+<div class="slide">
+<h1>SPEのキャッシュ効果</h1>
+
+<table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center">
+<caption>SPEのキャッシュの効果(universe)</caption>
+<tr>
+<th></th>
+<th>改良前</th>
+<th>改良後</th>
+<th>性能</th>
+</tr>
+
+<tr align="center">
+<td>ball_bound</td>
+<td>4FPS</td>
+<td>30FPS</td>
+<td>7.5倍</td>
+</tr>
+
+<tr align="center">
+<td>panel</td>
+<td>0.2FPS</td>
+<td>2.6FPS</td>
+<td>13倍</td>
+</tr>
+
+</table>
+
+テクスチャは頻繁に読み込みが行われるので、キャッシュは非常に有効だった。
+Span一つに対して、分割されたテクスチャが複数必要。
+Spanの数は、1920x1080 の解像度で、最低でも8000ほどのテクスチャ読み込みが起こる。
+
+</div>
+
+<div class="slide">
+<h1>SPEのキャッシュ効果</h1>
+
+実は改良前の計測にバグが。キャッシュを無効にした場合にキャッシュがHITしない動作
+
+
+</div>
+
+
+<div class="slide">
+<h1>OpenGLとの比較</h1>
+OpenGL(Open Graphics Library)とは、Silicon Graphics社が開発した、3Dグラフィックス処理の
+ためのプログラミングインターフェース。Taskに分割され、SPEを使用したCeriumと、PPEのみで動作
+するOpenGLとで、処理速度の比較をした。例題は先ほど紹介したSuperDandyを用いた。
+</div>
+
+<div class="slide">
+<h1>OpenGLとの比較</h1>
+
+<table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center">
+<caption>パイプライン化の効果(universe)</caption>
+<tr>
+<th></th>
+<th>OpenGL</th>
+<th>Cerium</th>
+<th>性能差</th>
+</tr>
+<tr align="center">
+<td>dandy</td>
+<td>17.5FPS</td>
+<td>49.5FPS</td>
+<td>2.9倍</td>
+</tr>
+</table>
+
+コア一つを使用するOpenGLに比べ、Cerium では2.9倍の性能向上が見られた。
+SPEを活用、待ち時間の短縮を行い、性能向上がみれた。
+
+</div>
+
+<div class="slide">
+<h1>まとめ</h1>
+
+本研究ではゲームフレームワーク Cerium TaskManager の改良を行った。
+特にCell上において、SPEの稼働率に注意する必要があった。
+
+SPE、PPE間のデータのやり取りにMail通知を用いている。SPEはMailの書き込みの際に待ちが発生する
+
+<ul>
+  <li>MailQueue</li>
+  <li>TaskArray</li>
+</ul>
+
+で待ち時間の削減ができる
+
+</div>
+
+<div class="slide">
+<h1>まとめ</h1>
+
+RenderingEngineにおいて、Taskがバリア同期をしている。バリア同期にも待ちが発生する
+
+<ul>
+  <li>Task実行をパイプライン化</li>
+</ul>
+
+SPEの待ち時間を解消できる。頻繁に扱うデータはSPE内でキャッシュするのがよい
+
+</div>
+
+
+<div class="slide">
+<h1>依存関係の話</h1>
+稼働率を維持するためにパイプライン化がある
+
+<ul>
+  <li>扱うデータの依存性から、Pipelineを自動で生成できるはず</li>
+  <li>TaskArrayもデータから自動でできるはず。</li>
+  <li>データはSegmentとして扱う</li>
+</ui>
+
+</div>
+
+<div class="slide">
+<h1>Codeload</h1>
+
+Taskを事前に全部ロードしてる
+
+<ul>
+  <li>SPEのLSは256KB</li>
+  <li>大量のコードを入れるといっぱいになる</li>
+  <li>必要な時に必要な分を予測してSPEにロードするのがよい</li>
+  </ul>
+
+</div>
+
+<div class="slide">
+<h1>Segment</h1>
+
+データはすべてSegmentという形にして、SPEに必要な分を予測、読み込みするのがよい。<br>
+テクスチャのように頻繁に扱うデータはキャッシュする<br>
+
+</div>
+
+
+
+<div class="slide">
+<h1>END</h1>
+
+/*end*/
+
+</div>
+
+
+</ul>
+
+<div class="handout">
+[any material that should appear in print but not on the slide]
+</div>
+</div>
+
+
+</div>
+
+</body>
+</html>