Przegląd architektury PlayStation 3 1 Your Name Your Title Your Organization (Line #1) Your Organization (Line #2)
Sony PlayStation 3 Konsola siódmej generacji Premiera: listopad 2006 33,5 mln sprzedanych 2
Hardware Procesor: Cell Broadband Engine Sony (SCE), Toshiba, IBM 2001-2005 400 mln dolarów GPU: RSX NVIDIA nic nowego ;) 3
Chipset graficzny: RSX Zmodyfikowany NV47 (GeForce 7800) oryginalny debiutował w połowie 2005 roku modyfikacja = wyrzucenie 8 ROPów! niezunifikowana architektura (dopiero w GeForce 8) 4
5
Przepływ przez RSX (1) 1. Vertex shader transformacja wierzchołków 8 jednostek Shader Model 3.0 wejście: wierzchołki z pamięci Pre T&L cache 4 kb kilkaset wierzchołków, zmniejsza narzut związany odczytem z pamięci wejście: tekstury L1 cache 2 kb L2 cache współdzielony z pixel shaderami wyjście: przetransformowane wierzchołki cache'owane w Post T&L cache - ~24 wierzchołki, niweluje konieczność wielokrotnego przeliczania tego samego wierzchołka (współdzielonego średnio przez 6 trójkątów) 6
Przepływ przez RSX (2) 2. Cull, clip & setup trójkąty fragmenty fixed-operation hardware wejście: przetransformowane wierzchołki z Post T&L cache przygotowywane w Primitive Assembly cache 4 wierzchołki uniknięcie fetchy z Post T&L cache, np. przy triangle stripach 1: A, B, C z Post T&L 2: B, C już w PA cache, D z Post T&L 3: C, D już w PA cache, E z Post T&L 4: D, E już w PA cache, F z Post T&L 7
Doskonały mesh 68 tys. trójkątów, 32 tys. wierzchołków, 1 triangle strip 8
Przepływ przez RSX (3) 2. Cull, clip & setup trójkąty fragmenty realizowana funkcjonalność: backface culling clipping do view volume triangle setup & traversal Z-culling wyjście: fragmenty 2x2 piksele (gradienty dla pixel shadera) 9
Przepływ przez RSX (4) 3. (Quad) Pixel shader 6 jednostek Shader Model 3.0 wejście: fragmenty 2x2 piksele (quady) przetwarzanie 4 pikseli jednocześnie niepoprawne również przetwarzane i wyniki odrzucane wejście: tekstury L1 cache 4 kb L2 cache współdzielony z vertex shaderami budowa: jednostka teksturująca (1 odczyt / cykl) 2 jednostki arytmetyczne (każda: 2 operacje wektorowe [np. add, mul, madd] lub 1 skalarna [np. sin, rsqrt, log, exp] / cykl) jednostka branchingu (1 branch / cykl) 10
Przepływ przez RSX (5) 3. (Quad) Pixel shader uruchamiany batchami (sterowane prez układ Quad Dispatch) ukrycie opóźnienia odczytu tekstury cykl QPS 1... QPS 6 arytm - gotowa od razu 1 quad 1 instrukcja 1 add r1, t1, c1... quad 6 instrukcja 1 add r1, t1, c1 2 quad 7 instrukcja 1 add r1, t1, c1... 3 quad 1 instrukcja 2 texld r2, r1, s1... quad 12 instrukcja 1 add r1, t1, c1 tex... to trochę zajmie... quad 6 instrukcja 2 texld r2, r1, s1 4 quad 7 instrukcja 2 texld r2, r1, s1... quad 1 instrukcja 3 add oc0, r2, c2... 5 quad 12 instrukcja 2 texld r2, r1, s1 quad 6 instrukcja 3 add oc0, r2, c2 ok, w międzyczasie załadowałem 11
Przepływ przez RSX (6) 3. (Quad) Pixel shader batching c.d. stan quadów musi być przechowywany pomiędzy kolejnymi wywołaniami instrukcji (rejestry 16/32 bit) rozmiar batchu ograniczony ilością pamięci na przechowanie stanu - zwykle kilkaset pikseli problemy z dynamic branchingiem utrzymywanie różnych branchy w batchu powoduje znaczne pogorszenie wydajności; rozsądnie używać, jeżeli flow nie zmienia się dla dużych partii ekranu wyjście: kolor, (ew. głębokość) fragmentu 12
Przepływ przez RSX (7) 4. Merging Fragment Crossbar rozdziela prace na mergery Merger zapisuje informacje o kolorze i głębokości testowanie głębokości, stencilu, nieprzezroczystości zapis do buforów ramki (mieszanie kolorów), głębokości wejście: piksele (kolor, nieprzezroczystość, głębokość) z pixel shaderów możliwy 4x multisampling obsługa kompresji bufora głębokości obsługa kafelkowanego (32x32 piksele) bufora głębokości 13
Przepływ przez RSX (8) 4. Merging wyjście? 14
RSX vs. Cell Nie! RSX nie jest next-gen! Topowa karta, ale: okrojona 1,5 roku później Cell Broadband Engine FTW! 15
Krótko o Cell Broadband Engine Budowa PPE PowerPC Processor Element CPU 8x SPE Synergistic Processor Element SPE = {kontroler pamięci, SPU rdzeń obliczeniowy} 8 ale 6 1 wyłączony, 1 dla systemu 16
Krótko o Cell Broadband Engine SPU 128-bitowy SIMD brak rejestrów skalarnych, brak instrukcji skalarnych! 256 kb lokalnej pamięci (szybkiej!) dane z innych obszarów (pamięć główna, pamięć wideo, lokalna pamięć innych SPU) mogą być kopiowane asynchronicznie przez DMA 17
SPU - zastosowanie Systemy cząsteczkowe Vertex skinning / morphing Progresywne siatki Woda Triangle culling Post processing 18