Mercurial > hg > Papers > 2011 > yutaka-sigos
changeset 16:6dfe65854e18
fix
author | Yutaka_Kinjyo |
---|---|
date | Thu, 14 Apr 2011 07:14:09 +0900 |
parents | 413e772d6cea |
children | 4f7f36cd3959 |
files | presen/gazo/pipeline.jpg presen/gazo/rend-dep.bmp presen/gazo/renderingengine5.png presen/gazo/result.png presen/presen.html |
diffstat | 5 files changed, 72 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/presen/presen.html Thu Apr 14 05:17:57 2011 +0900 +++ b/presen/presen.html Thu Apr 14 07:14:09 2011 +0900 @@ -284,7 +284,7 @@ </table> <p class="ex08"><u>アムダール則からmail待ちの時間を解消しないと性能は上がらない</u></p> - +<font size="5.0em">SPEの稼働率を向上させる改良点を紹介していく</font><br> <font size="5.0em">・テクスチャをSPE内でキャッシュする</font><br> <font size="5.0em">・Mailの数の削除、タイミングを変更</font><br> <font size="5.0em">・RenderingTaskのパイプライン化</font> @@ -293,9 +293,9 @@ </div> <div class="slide"> -<h1>キャッシュの効果</h1> +<h1>SPEキャッシュの効果</h1> -<u>SPE内のキャッシュ</u> +<u>SPE内キャッシュの目的</u> <ul> <li>SPEで、画面にオブジェクトを描画する場合にテクスチャが必要</li> @@ -447,13 +447,13 @@ <li>依存関係解決のためTaskが完了するとSPEからPPEにMailが通知される</li> <!--<li>依存関係を解決し、TaskListのMailがPPEから返される</li>--> <li>依存関係を解決したのち、次のTaskのListがPPEからMailで通知</li> - <li>Mailが多い、PPEが自分のTaskで忙しい場合に返信が遅れる場合がある</li> + <li>Mailが多い、PPEが自分のTaskで忙しい場合に返信が遅れる場合があると考える</li> <li>SPEのMail待ちの時間が増える</li> </ul> <font size="5.0em">依存関係はグループ化できる</font><br> <font size="5.0em" color="red">複数のTaskのMailを一つにするTaskArrayを実装した.</font><br> -<font size="5.0em">Mailの回数が減り、PPEの応答スピードが向上させる目的</font> + </div> @@ -491,9 +491,8 @@ </tr> </table> - - - +<font size="5.0em">Task毎のリプライMailが減り、PPEの応答スピードが向上させる目的</font> +<font size="5.0em">5FPSの向上がみられ、10%mail待ちが減少した</font> </div> <div class="slide"> @@ -508,7 +507,8 @@ </ul><br> <font color="red">ソフト的に別な書き込みキュー(MailQueue)を実装した。</font> -書き込めるタイミングを見計らって、SPEの待ちを削減する目的 +ハードなキューに書き込めない場合にmailQueueへ書きこむ。書き込みスロットが1から +複数になった </div> @@ -517,26 +517,56 @@ <h1>MailQueueの効果</h1> <table border="1" cellspacing="0" cellspacing="2" cellpadding="1" align="center"> -<caption>MailQueueの効果</caption> +<caption>MailQueueの効果(ball bound)</caption> <tr> -<th></th> -<th>改良前</th> -<th>改良後</th> -<th>性能</th> +<th>MailQueue</th> +<th>FPS</th> +<th>dma待ち</th> +<th>mail待ち</th> +<th>稼働率</th> </tr> <tr align="center"> -<td>ball_bound</td> +<td>あり</td> <td>35.5FPS</td> +<td>3%</tb> +<td>69%</tb> +<td>27%</tb> +</tr> + +<tr align="center"> +<td>なし</td> <td>35.7FPS</td> -<td>0.2</tb> +<td>3%</tb> +<td>69%</tb> +<td>27%</tb> </tr> + </table> -SPE内のTaskがなくなった場合に、MailQueueの中身をすべて精算して、新しいTaskのListを -要求する。 +Mail書き込みのタイミングをずらせる。Taskが足りなくなった時点で溜まった分の精算する<br> +が結果的にあまり効果がないのは、精算する際に同じぐらい待ちは発生すると考える<br> +今後mail待ちの細かい内訳が必要<br> </div> +<div class="slide"> +<h1>パイプライン化の効果</h1> + +RenderingEngineの3つのTaskはバリア同期を行い、逐次的に実行されていた。<br> +<u>そこで、DrawSpanTaskほ他の二つと並列に実行されるように改良した</u> + +<img src="gazo/rend-dep.bmp" style="display:block; width:40%; float: right; margin-top:0%"> + +<ul> + <li>DrawSpanが他の二つのTaskに比べて重い処理なので、他の二つのTaskが十分に隠れる</li> + <li>あまり多段にするとキーの入力が遅延しすぎる</li> +</ul> + + + +</div> + + <div class="slide"> <h1>パイプライン化の比較</h1> @@ -544,20 +574,30 @@ <table border="1" cellspacing="0" cellspacing="2" cellpadding="10" align="center"> <caption>パイプライン化の効果(universe)</caption> <tr> -<th></th> +<th>Pipeline化</th> <th>FPS</th> -</tr> -<tr align="center"> -<td>Pipelineあり</td> -<td>35.7FPS</td> -</tr> -<tr> -<tr align="center"> -<td>Pipelineなし</td> -<td>37.7FPS</td> +<th>dma待ち</th> +<th>mail待ち</th> +<th>稼働率</th> </tr> -向上! +<tr align="center"> +<td>なし</td> +<td>35.7FPS</td> +<td>3%</tb> +<td>69%</tb> +<td>27%</tb> +</tr> + +<tr align="center"> +<td><font color="red">あり</font></td> +<td><font color="red">37.7FPS</font></td> +<td><font color="red">2%</font></tb> +<td><font color="red">66%</font></tb> +<td><font color="red">31%</font></tb> +</tr> + +mail待ちが3%減少、FPSが2向上。若干の効果あり。 </table> </div> @@ -621,10 +661,12 @@ <u>それにはCodeLoadが必要</u> <ul> - <li>SPEで必要なコードはすべて事前にSPEに読み込んでいるので</li> + <li>SPEで必要なコードはすべて事前にSPEに読み込んでいる</li> <li>LSは256KBしかないので、オンデマンドロードで対応</li> </ul> +<u>さらに細かいプロファイリング(ex.mail待ちに細かい内訳)</u> + </div>