Mercurial > hg > Papers > 2011 > yutaka-sigos
comparison presen/presen.html @ 12:e6a78ee8fb13
fix
author | Yutaka_Kinjyo |
---|---|
date | Tue, 12 Apr 2011 17:13:21 +0900 |
parents | |
children | 083c7035b2cf |
comparison
equal
deleted
inserted
replaced
11:6e65cf74c569 | 12:e6a78ee8fb13 |
---|---|
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" | |
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | |
3 | |
4 <html xmlns="http://www.w3.org/1999/xhtml"> | |
5 <META http-equiv="Content-Type" content="text/html; charset=utf-8"> | |
6 | |
7 <head> | |
8 <title>発表資料</title> | |
9 <!-- metadata --> | |
10 <meta name="generator" content="S5" /> | |
11 <meta name="version" content="S5 1.1" /> | |
12 <meta name="presdate" content="20050728" /> | |
13 <meta name="author" content="Eric A. Meyer" /> | |
14 <meta name="company" content="Complex Spiral Consulting" /> | |
15 <!-- configuration parameters --> | |
16 <meta name="defaultView" content="slideshow" /> | |
17 <meta name="controlVis" content="hidden" /> | |
18 <!-- style sheet links --> | |
19 <link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> | |
20 <link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> | |
21 <link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> | |
22 <link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> | |
23 <!-- S5 JS --> | |
24 <script src="ui/default/slides.js" type="text/javascript"></script> | |
25 | |
26 <style type="text/css"> | |
27 body { | |
28 font-size: 100%; | |
29 } | |
30 p.ex10 { font-size: 2.0em; } | |
31 p.ex9 { font-size: 1.9em; } | |
32 p.ex8 { font-size: 1.8em; } | |
33 p.ex7 { font-size: 1.7em; } | |
34 p.ex6 { font-size: 1.6em; } | |
35 p.ex5 { font-size: 1.5em; } | |
36 p.ex4 { font-size: 1.4em; } | |
37 p.ex3 { font-size: 1.3em; } | |
38 p.ex2 { font-size: 1.2em; } | |
39 p.ex1 { font-size: 1.1em; } | |
40 p.ex0 { font-size: 1.0em; } | |
41 p.ex05 { font-size: 0.5em; } | |
42 | |
43 span.classifier { | |
44 font-family: sans-serif ; | |
45 font-style: oblique } | |
46 | |
47 span.classifier-delimiter { | |
48 font-family: sans-serif ; | |
49 font-weight: bold } | |
50 | |
51 span.interpreted { | |
52 font-family: sans-serif } | |
53 | |
54 span.option { | |
55 white-space: nowrap } | |
56 | |
57 span.pre { | |
58 white-space: pre } | |
59 | |
60 span.problematic { | |
61 color: red } | |
62 | |
63 span.section-subtitle { | |
64 /* font-size relative to parent (h1..h6 element) */ | |
65 font-size: 80% } | |
66 | |
67 </style> | |
68 </head> | |
69 | |
70 | |
71 <body> | |
72 | |
73 <div class="layout"> | |
74 <div id="controls"><!-- DO NOT EDIT --></div> | |
75 <div id="currentSlide"><!-- DO NOT EDIT --></div> | |
76 <div id="header"></div> | |
77 <div id="footer"> | |
78 <!--<h1>Cell上のソフトウェアレンダリングの高速化と高機能化</h1> | |
79 <h2>琉球大学工学部情報工学科並列信頼研</h2>--> | |
80 </div> | |
81 | |
82 </div> | |
83 | |
84 <div class="presentation"> | |
85 | |
86 <div class="slide"> | |
87 | |
88 <h1>ゲームフレームワーク Cerium TaskManager の改良</h1> | |
89 <h3>金城 裕, 河野 真治, <br>多賀野 海人, 小林 佑亮</h3> | |
90 <h4>琉球大学大学院理工学研究科情報工学専攻並列信頼研</h4> | |
91 </div> | |
92 | |
93 <div class="slide"> | |
94 <h1>概要</h1> | |
95 | |
96 ゲームフレームワーク Cerium TaskManager を開発しました。 | |
97 | |
98 <ul> | |
99 <li>動作環境:MacOSX, Linux, PS3/Cell</li> | |
100 <li>主にCellに特化している。</li> | |
101 <li>SceneGraphを用いて、ゲームを記述する</li> | |
102 | |
103 </ul><br> | |
104 | |
105 琉球大学の学生実験で使用している。 | |
106 | |
107 </div> | |
108 | |
109 | |
110 <div class="slide"> | |
111 <h1>Cell</h1> | |
112 Cell Broadband Engine | |
113 | |
114 <ul> | |
115 <li>ソニー・コンピュータエンタテインメント、ソニー、IBM , 東芝によって開発されたマルチコア CPU である</li> | |
116 <li>1基の制御系プロセッサコアPPE(PowerPC Processor Element)</li> | |
117 <li>8基の演算系プロセッサコアSPE(Synergistic Processor Element)</li> | |
118 <li>各コアはEIB(Element Interconnect Bus)とうバスで接続されている</li> | |
119 </ul><br> | |
120 | |
121 </div> | |
122 | |
123 <div class="slide"> | |
124 <h1>Cell</h1> | |
125 Cell Broadband Engine | |
126 | |
127 <table height="100%" width="100%" border="0"> | |
128 <tr><td align="center" valign="middle"> | |
129 <img src="gazo/cell_arch.jpg" style="width: 50%%"></td></tr> | |
130 </table> | |
131 | |
132 | |
133 PPEは直接メインメモリアクセスできるが、SPEはそれぞれのLSにしかアクセスできない<br> | |
134 DMA転送を用いてメインメモリからのデータを明示的に取得する | |
135 | |
136 </div> | |
137 | |
138 <div class="slide"> | |
139 <h1>Cell</h1> | |
140 Cell のプログラミングスタイル | |
141 | |
142 <ul> | |
143 <li>PPEがデータと仕事を分割し、各SPEへ割り当てる</li> | |
144 </ul><br> | |
145 | |
146 Ceriumでは関数をTaskとして定義。Taskを各SPEへ割り当てる。<br> | |
147 一つのTaskにはinput,output,param,等のデータを持たせる<br> | |
148 | |
149 | |
150 </div> | |
151 | |
152 <div class="slide"> | |
153 <h1>Ceriumの構成</h1> | |
154 | |
155 Ceriumの構成 | |
156 | |
157 <ul> | |
158 <li>TaskManager</li> | |
159 <ul> | |
160 <li>ユーザが定義したTaskを管理し、各コアに割り当てる</li> | |
161 </ul> | |
162 | |
163 <li>RenderingEngine</li> | |
164 <ul> | |
165 <li>オブジェクトを画面に描画する</li> | |
166 <li>3種類のTaskから構成される</li> | |
167 </ul> | |
168 | |
169 <li>SceneGraph</li> | |
170 <ul> | |
171 <li>ゲームのルールを記述してく</li> | |
172 <li>ゲームのシーンを作成し、それを切り替えながらゲームを進行する</li> | |
173 <li>OpenSceneGraphのようなもの</li> | |
174 </ul> | |
175 | |
176 </ul><br> | |
177 | |
178 | |
179 | |
180 </div> | |
181 | |
182 <div class="slide"> | |
183 <h1>Ceriumの構成</h1> | |
184 | |
185 <table height="100%" width="100%" border="0"> | |
186 <tr><td align="center" valign="middle"> | |
187 <img src="gazo/cerium.png" style="width: 50%%"></td></tr> | |
188 </table> | |
189 | |
190 </div> | |
191 | |
192 <div class="slide"> | |
193 <h1>TaskManager</h1> | |
194 | |
195 TaskManager | |
196 | |
197 <ul> | |
198 <li>Taskは関数単位</li> | |
199 <li>定義されたTaskは依存関係に沿って実行される</li> | |
200 <li>Taskはある程度の数が揃った上で、TaskListにまとめられSPEに送られる。</li> | |
201 <li>Taskはread,exec,write それぞれパイプライン化されて動く</li> | |
202 <li>Taskに必要なデータはDMA転送で送られる。転送時間はパイプライン化によって隠される</li> | |
203 <li>Taskの中にDMA転送命令を書くと自動ではパイプライン化されない</li> | |
204 </ul> | |
205 | |
206 </div> | |
207 | |
208 <div class="slide"> | |
209 <h1>TaskMangerを使った例題</h1> | |
210 | |
211 CeriumのTaskManager を使ったSortの例題<br> | |
212 10万個のランダムな値をクイックソートでソートする<br> | |
213 ソートする関数をTaskにして各SPEで実行<br><br> | |
214 | |
215 <table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center"> | |
216 <caption>Sortの例題</caption> | |
217 <tr> | |
218 <th></th> | |
219 <th>PPEのみ</th> | |
220 <th>SPE 1つ</th> | |
221 <th>SPE 6つ</th> | |
222 <!--<th>Mac(Core2Duo)</th>--> | |
223 <th>SPE稼働率</th> | |
224 </tr> | |
225 <tr align="center"> | |
226 <td>QuickSort</td> | |
227 <td>5.60s</td> | |
228 <td>6.22s</td> | |
229 <td>1.07s</td> | |
230 <td>97%</td> | |
231 <!--<td>1.76s</td>--> | |
232 </tr> | |
233 </table> | |
234 | |
235 <!-- 2.13GHz --> | |
236 </div> | |
237 | |
238 | |
239 <div class="slide"> | |
240 <h1>アムダール則</h1> | |
241 | |
242 プログラムの全体に対する並列化した部分の割合が低いと、マルチコアの性能がでない | |
243 <!--プログラムの8割を並列化すると、6CPUでは3倍の性能向上しか得られない--> | |
244 | |
245 <table height="100%" width="100%" border="0"> | |
246 <tr><td align="center" valign="middle"> | |
247 <img src="gazo/amdahl.jpg" style="width: 55%%"></td></tr> | |
248 </table> | |
249 | |
250 </div> | |
251 | |
252 <div class="slide"> | |
253 <h1>RenderingEngine</h1> | |
254 | |
255 RenderingEngineの例題<br> | |
256 月と | |
257 | |
258 <table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center"> | |
259 <tr> | |
260 <th></th> | |
261 <th>FPS</th> | |
262 <th>稼働率</th> | |
263 <!--<th>Mac(Core2Duo)</th>--> | |
264 <th>SPE稼働率</th> | |
265 </tr> | |
266 <tr align="center"> | |
267 <td>universe</td> | |
268 <td>17FPS</td> | |
269 <td>25.4%</td> | |
270 <!--<td>1.76s</td>29%--> | |
271 </tr> | |
272 </table> | |
273 | |
274 | |
275 | |
276 | |
277 </div> | |
278 | |
279 | |
280 <div class="slide"> | |
281 <h1>RenderingEngine</h1> | |
282 | |
283 SortとRenderingEngineの違い | |
284 | |
285 <ul> | |
286 <li>三種類のTaskから構成されている</li> | |
287 <li>三つのTaskはバリア同期を行っている</li> | |
288 <li>すべてのTaskは一度に作られない</li> | |
289 <li>PPEにもTaskが割り振られている</li> | |
290 <li>大量のデータを扱う(ポリゴン、テクスチャ)</li> | |
291 </ul> | |
292 | |
293 </div> | |
294 | |
295 <div class="slide"> | |
296 <h1>RenderingEngineの構成</h1> | |
297 RenderingEngineの構成 | |
298 <ul> | |
299 <li>CreatePolygon</li> | |
300 <ul> | |
301 <li>モデリングデータからポリゴンを生成する</li> | |
302 </ul> | |
303 <li>CreateSpan</li> | |
304 <ul> | |
305 <li>ポリゴンをSpanと呼ばれる水平な線に分ける</li> | |
306 </ul> | |
307 <li>DrawSpan</li> | |
308 <ul> | |
309 <li>Spanを実際にディスプレイに描画する</li> | |
310 </ul> | |
311 </ul><br> | |
312 | |
313 RenderingEngineは3種類のTaskから構成されている | |
314 | |
315 </div> | |
316 | |
317 | |
318 <div class="slide"> | |
319 <h1>RenderingEngine</h1> | |
320 | |
321 RenderingEngienの場合の問題点 | |
322 | |
323 <ul> | |
324 <li>SPEの待ちが入る(SPEの稼働率の低下、処理性能の低下)</li> | |
325 <ul> | |
326 <li>MailをPPEが読み込みのを待つ</li> | |
327 <li>他のSPEを待つ</li> | |
328 <li>次のTaskListを待つ</li> | |
329 </ul> | |
330 <li>PPE側でTaskを生成、各SPEに割り振る</li> | |
331 <li>Taskはバリア同期している</li> | |
332 </ul> | |
333 | |
334 </div> | |
335 | |
336 <div class="slide"> | |
337 <h1>バリア同期</h1> | |
338 <table height="100%" width="100%" border="0"> | |
339 <tr><td align="center" valign="middle"> | |
340 <img src="gazo/renderingengine1.png" style="width: 35%%"></td></tr> | |
341 </table> | |
342 | |
343 RenderingEngineのTaskは、3つそれぞれバリア同期をしている。 | |
344 | |
345 </div> | |
346 | |
347 <div class="slide"> | |
348 <h1>バリア同期</h1> | |
349 バリア同期には二つの待ちがある | |
350 <ul> | |
351 <li>SPEが他のSPEを待つ時間</li> | |
352 <li>バリア同期が完了し、PPE側で次のTaskが作られる時間</li> | |
353 </ul><br> | |
354 | |
355 | |
356 </div> | |
357 | |
358 <div class="slide"> | |
359 <h1>バリア同期</h1> | |
360 <table height="100%" width="100%" border="0"> | |
361 <tr><td align="center" valign="middle"> | |
362 <img src="gazo/renderingengine2.png" style="width: 45%%"></td></tr> | |
363 </table> | |
364 | |
365 この待ちを解消するためにTaskのパイプライン化を行った。 | |
366 | |
367 </div> | |
368 | |
369 | |
370 | |
371 <div class="slide"> | |
372 <h1>Ceriumの改良点の概要</h1> | |
373 | |
374 Ceriumの改良点の概要 | |
375 | |
376 <ul> | |
377 <li>TaskManager</li> | |
378 <ul> | |
379 <li>Taskの同期にはCellのMail機能を使う</li> | |
380 <li>Mailの同期するタイミングの改良</li> | |
381 <ul> | |
382 <li>MailQueue</li> | |
383 <li>TaskArray</li> | |
384 </ul> | |
385 </ul> | |
386 | |
387 <li>RenderingEngine</li> | |
388 <ul> | |
389 <li>Taskのパイプライン化</li> | |
390 <li>扱う画像をSPE側でキャッシュする</li> | |
391 </ul> | |
392 | |
393 </ul> | |
394 | |
395 </div> | |
396 | |
397 <div class="slide"> | |
398 <h1>Mailbox機能</h1> | |
399 CellのMailbox機能<br> | |
400 | |
401 <ul> | |
402 <li>PPEとSPEとの間を双方向で32bitのデータを受け渡す</li> | |
403 <li>FIFO キュー構造</li> | |
404 </ul> | |
405 Mailboxの種類 | |
406 <ul> | |
407 <li>Inbount Mailbox(PPE->SPE 4つ)</li> | |
408 <li>Outbount Mailbox(SPE->PPE 一つ)</li> | |
409 <li>Outbount interrupt Mailbox(SPE->PPE 一つ)</li> | |
410 </ul> | |
411 | |
412 </div> | |
413 | |
414 <div class="slide"> | |
415 <h1>Mailbox機能</h1> | |
416 | |
417 <table height="100%" width="100%" border="0"> | |
418 <tr><td align="center" valign="middle"> | |
419 <img src="gazo/mailbox.png" style="width: 60%%"></td></tr> | |
420 </table> | |
421 | |
422 </div> | |
423 | |
424 <div class="slide"> | |
425 <h1>Mailbox機能</h1> | |
426 SPE側からTaskが一つ実行完了する度に、実行完了のMailをOutboxに書きこむ<br> | |
427 | |
428 <ul> | |
429 <li>Outboxに既にMailが書きこまれている場合に、PPE側から読み込まれるまで、SPEは待つ(Cellの仕様)</li> | |
430 <li>PPE側のMailチェックが追いつかない場合がある。</li> | |
431 <li>その間、SPEは何もしないので、処理速度の低下につながる</li> | |
432 </ul><br> | |
433 | |
434 そこで、Outboxに既に読み込まれていないMailがあった場合に、いったん、別のキューに追加する。(MailQueue) | |
435 | |
436 | |
437 </div> | |
438 | |
439 <div class="slide"> | |
440 <h1>MailQueue</h1> | |
441 | |
442 <ul> | |
443 <li>TaskListを消化し、次のTaskListを要求する時に、MailQueueにMailが残っている場合はそれを先に書きだす</li> | |
444 <li>PPE側はMailのチェックをMailが無くなるまでループする</li> | |
445 <li>PPEはMailがない場合に、自分の仕事に戻る。</li> | |
446 <li>今のPPEのMailチェックの仕様には、一度にMailを書きだすのが向いている</li> | |
447 </ul> | |
448 | |
449 </ul> | |
450 | |
451 </div> | |
452 | |
453 <div class="slide"> | |
454 <h1>MailQueueの効果</h1> | |
455 | |
456 <table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center"> | |
457 <caption>MailQueueの効果</caption> | |
458 <tr> | |
459 <th></th> | |
460 <th>改良前</th> | |
461 <th>改良後</th> | |
462 <th>性能</th> | |
463 </tr> | |
464 <tr align="center"> | |
465 <td>universe</td> | |
466 <td>16FPS</td> | |
467 <td>18.5FPS</td> | |
468 <td>12%向上</td> | |
469 </tr> | |
470 </table> | |
471 | |
472 地球と月を表示する例題を使って計測した。 | |
473 | |
474 </div> | |
475 | |
476 <div class="slide"> | |
477 <h1>Ceriumの改良点の概要</h1> | |
478 | |
479 Ceriumの改良点の概要 | |
480 | |
481 <ul> | |
482 <li>TaskManager</li> | |
483 <ul> | |
484 <li>Taskの同期にはCellのMail機能を使う</li> | |
485 <li>Mailの同期するタイミングの改良</li> | |
486 <ul> | |
487 <li><s>MailQueue</s></li> | |
488 <li>TaskArray</li> | |
489 </ul> | |
490 </ul> | |
491 | |
492 <li>RenderingEngine</li> | |
493 <ul> | |
494 <li>Taskのパイプライン化</li> | |
495 <li>扱う画像をSPE側でキャッシュする</li> | |
496 </ul> | |
497 | |
498 </ul> | |
499 | |
500 </div> | |
501 | |
502 | |
503 <div class="slide"> | |
504 <h1>TaskArray</h1> | |
505 Task毎のMailは、Task同士の依存関係を解決するために用いている。 | |
506 | |
507 <ul> | |
508 <li>依存関係はグループ化できる</li> | |
509 <li>TaskArrayを用いて複数のTaskのMailを一つに扱う</li> | |
510 </ul> | |
511 | |
512 Mailの数を減らせるので、Mailのための処理が減る。その分処理速度が上がる | |
513 | |
514 </div> | |
515 | |
516 <div class="slide"> | |
517 <h1>TaskArray</h1> | |
518 | |
519 <table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center"> | |
520 <caption>TaskArrayの効果(universe)</caption> | |
521 <tr> | |
522 <th></th> | |
523 <th>改良前</th> | |
524 <th>改良後</th> | |
525 <th>性能</th> | |
526 </tr> | |
527 <tr align="center"> | |
528 <td>universe</td> | |
529 <td>16FPS</td> | |
530 <td>18.5FPS</td> | |
531 <td>12%向上</td> | |
532 </tr> | |
533 </table> | |
534 | |
535 </div> | |
536 | |
537 | |
538 | |
539 <div class="slide"> | |
540 <h1>MailQueueとTaskArray</h1> | |
541 | |
542 <table border="1" cellspacing="0" cellspacing="2" cellpadding="8" align="center"> | |
543 <caption>MailQueueとTaskArrayの効果(universe)</caption> | |
544 <tr> | |
545 <th>TaskArray</th> | |
546 <th>MailQueue</th> | |
547 <th>FPS</th> | |
548 <th>性能</th> | |
549 </tr> | |
550 <tr align="center"> | |
551 <td>あり</td> | |
552 <td>あり</td> | |
553 <td>20FPS</td> | |
554 <td>22%向上</td> | |
555 </tr> | |
556 <tr align="center"> | |
557 <td>あり</td> | |
558 <td>なし</td> | |
559 <td>18.5FPS</td> | |
560 <td>12%向上</td> | |
561 </tr> | |
562 <tr align="center"> | |
563 <td>なし</td> | |
564 <td>あり</td> | |
565 <td>18.5FPS</td> | |
566 <td>12%向上</td> | |
567 </tr> | |
568 <tr align="center"> | |
569 <td>なし</td> | |
570 <td>なし</td> | |
571 <td>16.4FPS</td> | |
572 <td>0%向上</td> | |
573 </tr> | |
574 </table> | |
575 | |
576 </div> | |
577 | |
578 | |
579 <div class="slide"> | |
580 <h1>Ceriumの改良点の概要</h1> | |
581 | |
582 Ceriumの改良点の概要 | |
583 | |
584 <ul> | |
585 <li>TaskManager</li> | |
586 <ul> | |
587 <li>Taskの同期にはCellのMailbox機能を使う</li> | |
588 <li>Mailの同期するタイミングの改良</li> | |
589 <ul> | |
590 <li><s>MailQueue</s></li> | |
591 <li><s>TaskArray</s></li> | |
592 </ul> | |
593 </ul> | |
594 | |
595 <li>RenderingEngine</li> | |
596 <ul> | |
597 <li>Taskのパイプライン化</li> | |
598 <li>扱う画像をSPE側でキャッシュする</li> | |
599 </ul> | |
600 | |
601 </ul> | |
602 | |
603 </div> | |
604 | |
605 | |
606 | |
607 | |
608 <div class="slide"> | |
609 <h1>パイプライン化</h1> | |
610 <table height="100%" width="100%" border="0"> | |
611 <tr><td align="center" valign="middle"> | |
612 <img src="gazo/renderingengine4.png" style="width: 40%%"></td></tr> | |
613 </table> | |
614 | |
615 あまり、多段にするとゲームのキー入力の反映が遅れる。DrawSpanの処理が他の二つに比べて重いので | |
616 DrawSpanとパイプラインを組むことで十分に隠れる | |
617 | |
618 </div> | |
619 | |
620 <div class="slide"> | |
621 <h1>パイプライン化の比較</h1> | |
622 | |
623 例題:<br> | |
624 PS3上で学生実験で学生が作成したシューティングゲーム | |
625 SuperDandy を用いる。 | |
626 | |
627 | |
628 </div> | |
629 | |
630 | |
631 <div class="slide"> | |
632 <h1>パイプライン化の比較</h1> | |
633 | |
634 <table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center"> | |
635 <caption>パイプライン化の効果(dandy)</caption> | |
636 <tr> | |
637 <th></th> | |
638 <th>改良前</th> | |
639 <th>改良後</th> | |
640 <th>性能</th> | |
641 </tr> | |
642 <tr align="center"> | |
643 <td>dandy</td> | |
644 <td>11.5FPS</td> | |
645 <td>16.6FPS</td> | |
646 <td>44%向上</td> | |
647 </tr> | |
648 </table> | |
649 | |
650 44%の向上がみられた。 | |
651 | |
652 </div> | |
653 | |
654 <div class="slide"> | |
655 <h1>Ceriumの改良点の概要</h1> | |
656 | |
657 Ceriumの改良点の概要 | |
658 | |
659 <ul> | |
660 <li>TaskManager</li> | |
661 <ul> | |
662 <li>Taskの同期にはCellのMailbox機能を使う</li> | |
663 <li>Mailの同期するタイミングの改良</li> | |
664 <ul> | |
665 <li><s>MailQueue</s></li> | |
666 <li><s>TaskArray</s></li> | |
667 </ul> | |
668 </ul> | |
669 | |
670 <li>RenderingEngine</li> | |
671 <ul> | |
672 <li><s>Taskのパイプライン化</s></li> | |
673 <li>扱う画像をSPE側でキャッシュする</li> | |
674 </ul> | |
675 | |
676 </ul> | |
677 | |
678 </div> | |
679 | |
680 | |
681 <div class="slide"> | |
682 <h1>SPEのキャッシュ効果</h1> | |
683 | |
684 SPE内でのキャッシュ | |
685 | |
686 <ul> | |
687 <li>DrawSpan内で、描画するためのテクスチャデータを読み込む。</li> | |
688 <li>テクスチャは分割さていて、必要な時に必要な部分を読み込む</li> | |
689 <li>そこで、テクスチャをキャッシュするようにした(LRU)</li> | |
690 <li>テクスチャのデータはハッシュで管理する</li> | |
691 </ul> | |
692 | |
693 </div> | |
694 | |
695 | |
696 <div class="slide"> | |
697 <h1>SPEのキャッシュ効果</h1> | |
698 | |
699 <table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center"> | |
700 <caption>SPEのキャッシュの効果(universe)</caption> | |
701 <tr> | |
702 <th></th> | |
703 <th>改良前</th> | |
704 <th>改良後</th> | |
705 <th>性能</th> | |
706 </tr> | |
707 | |
708 <tr align="center"> | |
709 <td>ball_bound</td> | |
710 <td>4FPS</td> | |
711 <td>30FPS</td> | |
712 <td>7.5倍</td> | |
713 </tr> | |
714 | |
715 <tr align="center"> | |
716 <td>panel</td> | |
717 <td>0.2FPS</td> | |
718 <td>2.6FPS</td> | |
719 <td>13倍</td> | |
720 </tr> | |
721 | |
722 </table> | |
723 | |
724 テクスチャは頻繁に読み込みが行われるので、キャッシュは非常に有効だった。 | |
725 Span一つに対して、分割されたテクスチャが複数必要。 | |
726 Spanの数は、1920x1080 の解像度で、最低でも8000ほどのテクスチャ読み込みが起こる。 | |
727 | |
728 </div> | |
729 | |
730 <div class="slide"> | |
731 <h1>SPEのキャッシュ効果</h1> | |
732 | |
733 実は改良前の計測にバグが。キャッシュを無効にした場合にキャッシュがHITしない動作 | |
734 | |
735 | |
736 </div> | |
737 | |
738 | |
739 <div class="slide"> | |
740 <h1>OpenGLとの比較</h1> | |
741 OpenGL(Open Graphics Library)とは、Silicon Graphics社が開発した、3Dグラフィックス処理の | |
742 ためのプログラミングインターフェース。Taskに分割され、SPEを使用したCeriumと、PPEのみで動作 | |
743 するOpenGLとで、処理速度の比較をした。例題は先ほど紹介したSuperDandyを用いた。 | |
744 </div> | |
745 | |
746 <div class="slide"> | |
747 <h1>OpenGLとの比較</h1> | |
748 | |
749 <table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center"> | |
750 <caption>パイプライン化の効果(universe)</caption> | |
751 <tr> | |
752 <th></th> | |
753 <th>OpenGL</th> | |
754 <th>Cerium</th> | |
755 <th>性能差</th> | |
756 </tr> | |
757 <tr align="center"> | |
758 <td>dandy</td> | |
759 <td>17.5FPS</td> | |
760 <td>49.5FPS</td> | |
761 <td>2.9倍</td> | |
762 </tr> | |
763 </table> | |
764 | |
765 コア一つを使用するOpenGLに比べ、Cerium では2.9倍の性能向上が見られた。 | |
766 SPEを活用、待ち時間の短縮を行い、性能向上がみれた。 | |
767 | |
768 </div> | |
769 | |
770 <div class="slide"> | |
771 <h1>まとめ</h1> | |
772 | |
773 本研究ではゲームフレームワーク Cerium TaskManager の改良を行った。 | |
774 特にCell上において、SPEの稼働率に注意する必要があった。 | |
775 | |
776 SPE、PPE間のデータのやり取りにMail通知を用いている。SPEはMailの書き込みの際に待ちが発生する | |
777 | |
778 <ul> | |
779 <li>MailQueue</li> | |
780 <li>TaskArray</li> | |
781 </ul> | |
782 | |
783 で待ち時間の削減ができる | |
784 | |
785 </div> | |
786 | |
787 <div class="slide"> | |
788 <h1>まとめ</h1> | |
789 | |
790 RenderingEngineにおいて、Taskがバリア同期をしている。バリア同期にも待ちが発生する | |
791 | |
792 <ul> | |
793 <li>Task実行をパイプライン化</li> | |
794 </ul> | |
795 | |
796 SPEの待ち時間を解消できる。頻繁に扱うデータはSPE内でキャッシュするのがよい | |
797 | |
798 </div> | |
799 | |
800 | |
801 <div class="slide"> | |
802 <h1>依存関係の話</h1> | |
803 稼働率を維持するためにパイプライン化がある | |
804 | |
805 <ul> | |
806 <li>扱うデータの依存性から、Pipelineを自動で生成できるはず</li> | |
807 <li>TaskArrayもデータから自動でできるはず。</li> | |
808 <li>データはSegmentとして扱う</li> | |
809 </ui> | |
810 | |
811 </div> | |
812 | |
813 <div class="slide"> | |
814 <h1>Codeload</h1> | |
815 | |
816 Taskを事前に全部ロードしてる | |
817 | |
818 <ul> | |
819 <li>SPEのLSは256KB</li> | |
820 <li>大量のコードを入れるといっぱいになる</li> | |
821 <li>必要な時に必要な分を予測してSPEにロードするのがよい</li> | |
822 </ul> | |
823 | |
824 </div> | |
825 | |
826 <div class="slide"> | |
827 <h1>Segment</h1> | |
828 | |
829 データはすべてSegmentという形にして、SPEに必要な分を予測、読み込みするのがよい。<br> | |
830 テクスチャのように頻繁に扱うデータはキャッシュする<br> | |
831 | |
832 </div> | |
833 | |
834 | |
835 | |
836 <div class="slide"> | |
837 <h1>END</h1> | |
838 | |
839 /*end*/ | |
840 | |
841 </div> | |
842 | |
843 | |
844 </ul> | |
845 | |
846 <div class="handout"> | |
847 [any material that should appear in print but not on the slide] | |
848 </div> | |
849 </div> | |
850 | |
851 | |
852 </div> | |
853 | |
854 </body> | |
855 </html> |