Mercurial > hg > Papers > 2012 > yutaka-master
comparison paper/chapter2.tex @ 5:b8d790bccfe7 draft
fix
author | Yutaka_Kinjyo <yutaka@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 09 Feb 2012 04:31:13 +0900 |
parents | 6cf0f731cbde |
children | cb430c965050 |
comparison
equal
deleted
inserted
replaced
4:6cf0f731cbde | 5:b8d790bccfe7 |
---|---|
457 描画 Task が変わるたびに、新しい Tile を転送していては、DMA 転送のコストがかかりすぎる。そこで、 | 457 描画 Task が変わるたびに、新しい Tile を転送していては、DMA 転送のコストがかかりすぎる。そこで、 |
458 すでに SPE 上に転送してある Tile を保存しておく。そして、次に描画する Span が保存してある Tile | 458 すでに SPE 上に転送してある Tile を保存しておく。そして、次に描画する Span が保存してある Tile |
459 を参照する場合、新たに DMA 転送を行わずに保存してある Tile を使用する。新たに Tile を参照し且つ領域に | 459 を参照する場合、新たに DMA 転送を行わずに保存してある Tile を使用する。新たに Tile を参照し且つ領域に |
460 空きが無い場合、 FIFO で Tile の入れ替えを行う。Tile の検索は、テクスチャのアドレスを key とし、 | 460 空きが無い場合、 FIFO で Tile の入れ替えを行う。Tile の検索は、テクスチャのアドレスを key とし、 |
461 Tile を value としてハッシュを用いる。 | 461 Tile を value としてハッシュを用いる。 |
462 \begin{comment} | |
463 SPE 上で保存する Tile の数を変化させることによって、Rendering の実行速度がどのように変化するか | |
464 実験した(\figref{cerium_hash_test})。 | |
465 | |
466 \begin{table}[htb] | |
467 \begin{center} | |
468 \caption{SPE 上での Tile 管理数による実行速度比較} \label{tab:cerium_hash_test} | |
469 \hbox to\hsize{\hfil | |
470 \begin{tabular}{c|l} \hline \hline | |
471 Tile 保存数 & 実行速度 (FPS) & \\ \hline | |
472 \hline | |
473 1 & &\\ \hline | |
474 128 & &\\ \hline | |
475 \end{tabular}\hfil} | |
476 \end{center} | |
477 \end{table} | |
478 | |
479 \figref{cerium_hash_test} より、SPE 上で保存する Tile の数を増やすことによりテクスチャ | |
480 のヒット率が上昇し、DMA 転送回数が減ることで実行速度が向上するがわかる。 | |
481 | |
482 \end{comment} | |
483 | 462 |
484 \subsection{Texture の縮小} \label{sec:cerium_scale} | 463 \subsection{Texture の縮小} \label{sec:cerium_scale} |
485 | 464 |
486 遠くにあるオブジェクトは小さく描画される。この場合、使用されるテクスチャは原寸大である | 465 遠くにあるオブジェクトは小さく描画される。この場合、使用されるテクスチャは原寸大である |
487 必要がない。そこで、オリジナルのテクスチャの他に縮小したテクスチャを用意し、描画される | 466 必要がない。そこで、オリジナルのテクスチャの他に縮小したテクスチャを用意し、描画される |
512 コストを減少させた。さらに Scale によって 描画に用いる Tapestry を変更することで、 | 491 コストを減少させた。さらに Scale によって 描画に用いる Tapestry を変更することで、 |
513 1テクスチャの Tile の数を減少させることができる。必要 Tile のヒット率が上昇し、結果 | 492 1テクスチャの Tile の数を減少させることができる。必要 Tile のヒット率が上昇し、結果 |
514 転送コストの削減に繋がる。 | 493 転送コストの削減に繋がる。 |
515 | 494 |
516 この Texture hash の効果を示す。(\tabref{ball_bound})例題として、ball bound を使用した。 | 495 この Texture hash の効果を示す。(\tabref{ball_bound})例題として、ball bound を使用した。 |
496 解像度は 1980x1080 である。FPSは一秒あたりの RednderingEngine 全体の処理回数(Frame per Scecond)である。 | |
517 | 497 |
518 \begin{table}[!htb] | 498 \begin{table}[!htb] |
519 \begin{center} | 499 \begin{center} |
520 \caption{キャッシュの効果(ball bound)} \label{tab:ball_bound} | 500 \caption{Effect of cache(ball bound)} \label{tab:ball_bound} |
521 \hbox to\hsize{\hfil | 501 \hbox to\hsize{\hfil |
522 \begin{tabular}{|c|c|c|c|c|} \hline | 502 \begin{tabular}{|c|c|c|c|c|} \hline |
523 キャッシュ & FPS & DMA転送待ち時間 & mail待ちの割合 & SPE稼働率\\ \hline | 503 キャッシュ & FPS & DMA転送待ち時間 & mail待ちの割合 & SPE稼働率\\ \hline |
524 なし & 24.6FPS & 5.5\% & 72.4\% & 22.1\% \\ \hline | 504 なし & 24.6 & 5.5\% & 72.4\% & 22.1\% \\ \hline |
525 あり & 27.2FPS & 1.8\% & 76.2\% & 22.0\% \\ \hline | 505 あり & 27.2 & 1.8\% & 76.2\% & 22.0\% \\ \hline |
526 \end{tabular}\hfil} | 506 \end{tabular}\hfil} |
527 \end{center} | 507 \end{center} |
528 \end{table} | 508 \end{table} |
529 | 509 |
510 DMA転送待ち時間が減り、FPSの向上が見られた。 | |
511 | |
512 続いて 解像度1980x1080の画面いっぱいに一枚の画像を描画する例題である panel で効果を測定した。 panel でのキャッシュの効果を示す(\tabref{cache_panel}) | |
513 | |
514 \begin{table}[!htb] | |
515 \begin{center} | |
516 \caption{Effect of cache(panel)} \label{tab:cache_panel} | |
517 \hbox to\hsize{\hfil | |
518 \begin{tabular}{|c|c|c|c|c|} \hline | |
519 キャッシュ & FPS & DMA転送待ち時間 & mail待ちの割合 & SPE稼働率\\ \hline | |
520 なし & 3.9 & 21.1\% & 13.2\% & 65.9\% \\ \hline | |
521 あり & 2.9 & 0.5\% & 9.9\% & 89.5\% \\ \hline | |
522 \end{tabular}\hfil} | |
523 \end{center} | |
524 \end{table} | |
525 | |
526 panel では使用する画像のサイズが大きいために、キャッシュの HIT するまでの時間がかかる。キャッシュの HIT 確認は SPE の稼働率に含まれるため、稼働率が向上している。キャッシュ HIT 時間が、DMA転送待ち時間の削減の効果よりも高いため、FPSが減少した結果になった。このようなケースでは、キャッシュを用いない方が、高いFPSが得られる。ball bound の場合は、小さな画像を用いてるため、キャッシュの効果が見られた。 | |
530 | 527 |
531 \subsection{DrawSpanTask} \label{drawspan} | 528 \subsection{DrawSpanTask} \label{drawspan} |
532 | 529 |
533 現在、PlayStation 3 の GPU にアクセスする API は公開されていないため、Cerium では | 530 現在、PlayStation 3 の GPU にアクセスする API は公開されていないため、Cerium では |
534 Frame Buffer に直接描画する。Frame Buffer のアドレスは mmap() で取得できるため、 Task | 531 Frame Buffer に直接描画する。Frame Buffer のアドレスは mmap() で取得できるため、 Task |
556 \begin{itemize} | 553 \begin{itemize} |
557 \item SPEが他のSPEの処理完了を待つ時間 | 554 \item SPEが他のSPEの処理完了を待つ時間 |
558 \item バリア同期が完了し、PPE 側で次の Task が作られる時間 | 555 \item バリア同期が完了し、PPE 側で次の Task が作られる時間 |
559 \end{itemize} | 556 \end{itemize} |
560 | 557 |
561 この二つの時間の間SPEの処理が止まり、処理性能の低下につながる。この待ち時間を回避するためには、Taskの粒度を下げる、他の SPE の処理完了を待っている SPE に、別の Task を割り当てる、等の方法がある。別の Task を割り当てるには Task の実行をパイプライン化する方法がある。そこで、特に3つの Task の中でも処理の重い DrawSpanTask と、CreatePolygonTask, CreateSpanTask の Task でパイプライン化を行っている。(\figref{rend-dep}) 速度比較の対象として、ball bound を用いる。FPSは一秒あたりの RednderingEngine 全体の処理回数(Frame per Scecond)であり、busy ration はSPEの稼働率である。(\tabref{pipeline_ballbound}) | 558 この二つの時間の間SPEの処理が止まり、処理性能の低下につながる。この待ち時間を回避するためには、Taskの粒度を下げる、他の SPE の処理完了を待っている SPE に、別の Task を割り当てる、等の方法がある。別の Task を割り当てるには Task の実行をパイプライン化する方法がある。そこで、特に3つの Task の中でも処理の重い DrawSpanTask と、CreatePolygonTask, CreateSpanTask の Task でパイプライン化を行っている。(\figref{rend-dep}) 速度比較の対象として、レンダリング例題の ball bound と panel を用いる。(\tabref{pipeline_ballbound})(\tabref{pipeline_panel}) |
562 | 559 |
563 \begin{figure}[htb] | 560 \begin{figure}[htb] |
564 \begin{center} | 561 \begin{center} |
565 \includegraphics[scale=0.90]{./images/rend-dep.pdf} | 562 \includegraphics[scale=0.90]{./images/rend-dep.pdf} |
566 \end{center} | 563 \end{center} |
568 \label{fig:rend-dep} | 565 \label{fig:rend-dep} |
569 \end{figure} | 566 \end{figure} |
570 | 567 |
571 \begin{table}[!htb] | 568 \begin{table}[!htb] |
572 \begin{center} | 569 \begin{center} |
573 \caption{パイプライン化の効果(ball bound)} \label{tab:pipeline_ballbound} | 570 \caption{Effect of use pipeline(ball bound)} \label{tab:pipeline_ballbound} |
574 \hbox to\hsize{\hfil | 571 \hbox to\hsize{\hfil |
575 \begin{tabular}{|c|c|c|c|c|} \hline | 572 \begin{tabular}{|c|c|c|c|c|} \hline |
576 PipeLine & FPS & DMA転送待ち時間 & mail待ちの割合 & SPE稼働率\\ \hline | 573 PipeLine & FPS & DMA転送待ち時間 & mail待ちの割合 & SPE稼働率\\ \hline |
577 なし & 27.2FPS & 1.8\% & 76.2\% & 22.0\% \\ \hline | 574 なし & 27.2 & 1.8\% & 76.2\% & 22.0\% \\ \hline |
578 あり & 30.2FPS & 1.8\% & 74.3\% & 23.7\% \\ \hline | 575 あり & 30.2 & 1.8\% & 74.3\% & 23.7\% \\ \hline |
576 \end{tabular}\hfil} | |
577 \end{center} | |
578 \end{table} | |
579 | |
580 \begin{table}[!htb] | |
581 \begin{center} | |
582 \caption{Effect of use pipeline(panel)} \label{tab:pipeline_panel} | |
583 \hbox to\hsize{\hfil | |
584 \begin{tabular}{|c|c|c|c|c|} \hline | |
585 PipeLine & FPS & DMA転送待ち時間 & mail待ちの割合 & SPE稼働率\\ \hline | |
586 なし & 3.9 & 21.1\% & 13.2\% & 65.9\% \\ \hline | |
587 あり & 4.0 & 21.3\% & 11.1.\% & 67.6\% \\ \hline | |
579 \end{tabular}\hfil} | 588 \end{tabular}\hfil} |
580 \end{center} | 589 \end{center} |
581 \end{table} | 590 \end{table} |
582 | 591 |
583 パイプライン化した結果(\tabref{pipeline_ballbound})、SPEの稼働率が向上し、FPSも向上した。 | 592 パイプライン化した結果(\tabref{pipeline_ballbound})、SPEの稼働率が向上し、FPSも向上した。 |
584 処理性能を維持するには、SPEはなるべく稼働させ続けなければならない。 | 593 処理性能を維持するには、SPEはなるべく稼働させ続けなければならない。 |
585 その為には処理をTaskに分割し、並列実行するだけでなく、バリア同期などで、 | 594 その為には処理をTaskに分割し、並列実行するだけでなく、バリア同期などで、 |
586 SPEの待ち時間が発生することへ対処しないといけない。 | 595 SPEの待ち時間が発生することへ対処しないといけない。 |
587 その対処の一つとしてそれにパイプライン化は有効である。 | 596 その対処の一つとしてそれにパイプライン化は有効である。 |
597 | |
598 |