FrazPC.pl - Programy - Pogoda - Gry - Hosting


Aktualności Programy Artykuły GSM RTV Board
Intel Pineview | HTC HD2 | Westmere | Profil | Loguj | Stats |


Artykuły



18-01-2010


Technologie: Architektura Fermi

Technologie: Architektura Fermi

Wejście ukrytego smoka


Układ graficzny NVIDII, GF100, znany też pod nazwą Fermi i oznaczany (w wersji przeznaczonej dla kart obliczeniowych Tesla) również symbolem GT300, to chyba jeden z najbardziej oczekiwanych przez użytkowników, a jednocześnie najbardziej opóźnionych procesorów graficznych w historii tej firmy. Na szczęście rynkowa premiera tego układu powoli się zbliża. Otóż, przy okazji odbywających się Las Vegas targów CES 2010 przedstawiciele NVIDII zaprezentowali po raz pierwszy publicznie pierwsze działające, zbudowane na bazie Fermiego, akceleratory 3D.
 
Pierwsze, nieco szerzej przedstawione informacje na temat architektury układów Fermi pojawiły się w połowie zeszłego roku. Zaprezentowane one zostały przy okazji konferencji GPU Technology Conference (patrz: http://www.frazpc.pl/artykuly/760/GT300/i/Fermi/Relacja/z/konferencji/Nvidia/GPU/Technology/Conference). Później, co jakiś czas, pojawiały się w Sieci kolejne, mniej lub bardziej wiarygodne dane, dotyczące tej nowej rodziny najbardziej zaawansowanych układów graficznych NVIDII – niestety internetowe doniesienia dotyczyły w głównej mierze kolejnych przesunięć premiery tego GPU. Obecnie przedstawiciele firmy twierdzą, że karty graficzne pojawią się w na początku marca. Oznaczałoby to, że oficjalnej premiery kości GF100 spodziewać się można na hanowerskich targach CeBIT, które odbywać się będą w dniach 2–6 marca 2010. Czy tak będzie? – wkrótce się przekonamy. Wróćmy jednak do tego, co NVIDIA zaprezentowała na targach CES 2010 i na specjalnie zorganizowanych dla prasy przy okazji CES-u warsztatach GF100 Architecture Deep Dive.
 
Targowa premiera
 
Goście odwiedzający targi CES 2010 na targowym stoisku NVIDII mogli zobaczyć, pierwszy publicznie zaprezentowany szerokiemu gronu komputer wyposażony w karty graficzne z układami GF100. Piszę w karty, ponieważ był to system wyposażony w trzy akceleratory 3D pracujące w konfiguracji Tri-SLI.


Fot.01 – Stoisko targowe NVIDII z komputerem wyposażonym w trzy karty GF100
© Marcin Bieńkowski




Fot.02, 03, 04 - Karty GF100 w prezentacyjnym komputerze. Niestety, nie można było zrobić zdjęć przy otwartej obudowie.
© Marcin Bieńkowski

Na stoisku targowym zobaczyć można było technologiczne demo Supersonic Sled. Jest to demo zgodne z bibliotekami graficznymi DirectX 11, w którym wykorzystano teselację, displacement mapping czyli mapowanie przemieszczeń, geometry shading oraz efekty cząsteczkowe. Nie zapomniano o efektach fizycznych wykorzystujących technologię PhysX. Dzięki efektom fizycznym ciało pilota zachowuje się w sposób naturalnie bezwładny, Budynek stacji i most w sposób realistyczny są burzone, a pył i dym są w realistyczny sposób symulowane. Jak można się domyślić, płynne działanie tego demonstracyjnego programu wymaga sporej mocy obliczeniowej (stad prawdopodobnie konfiguracja Tri-SLI), zwłaszcza przy ustawieniu na scenie sporej liczby obiektów fizycznych. Most, po którym przejeżdżają odrzutowe sanie może np. rozpaść się na milion kawałków.



Fot.05, 06 - Demonstracja Supersonic Sled – siatka obiektów
© Marcin Bieńkowski


Fot.07 - Supersonic Sled – teselacja krajobrazu i postaci. Automatycznie realizowana przez kartę teselacja obiektów jest właściwością wprowadzoną do bibliotek graficznych DX 11. Jednym z wymaganych elementów w sprzętowym potoku graficznym DX11 jest teselator
© Marcin Bieńkowski

GF100 Architecture Deep Dive
 
Jak już wspomniałem, bardziej premiera architektury GF100 miała miejsce przy okazji odbywającej się równolegle do CES-u technicznej konferencji dla dziennikarzy GF100 Architecture Deep Dive. Na niej pokazane też zostały same karty – choć jeszcze nie w wersji finalnej i, jak zastrzegli sobie przedstawiciele NVIDII, wersja handlowa może się jeszcze dość znacznie różnić – które zobaczyć można było w poszczególnych maszynach demonstracyjny.


Fot. 08, 09 - Karta z układem NVIDIA GF100 zamontowana w maszynie demonstracyjnej
© Marcin Bieńkowski


Fot. 10 - Program konferencji
© Marcin Bieńkowski

Pierwsza sesja dotyczyła architektury. Lecz zanim prowadzący przeszli do jej omawiania zaprezentowana została działająca na karcie GF100 gra Dark Void. Korzysta ona bardzo intensywnie z efektów fizycznych za pośrednictwem silnika fizyki PhysX, zwłaszcza z efektów cząsteczkowych.


Fot. 11 - Pokaz gry Dark Void
© Marcin Bieńkowski

Następnie prowadzący przeszli już do omawiania podstaw architektury Fermi. Zdecydowanych rewelacji nie ujawniono, a wiele z przedstawianych informacji była już wcześniej znana – choćby z konferencji GPU Technology Conference.


Fot. 12 - Cechy architektury Fermi
© Marcin Bieńkowski

GF100 składa się z 512 procesorów strumieniowych o nazwie CUDA, które pogrupowane zostały w 16 bloków Streaming Multiprocessor (SM) – każdy z nich zawiera po 32 jednostki CUDA. Każdy rdzeń CUDA jest tak naprawdę stosunkowo prostym procesorem RISC wykonującym operacje SIMD. Procesor strumieniowy CUDA składa się z potokowej 32-bitowej jednostki arytmetyczno-logicznej ALU oraz 64-bitowej jednostki zmiennoprzecinkowej FPU działającej z pojedynczą i podwójną precyzją. Z kolei 16 bloków SM skupiono zaś w cztery moduły GPC (Graphics Processing Cluster). Architektura GF100 jest skalowalna z dokładnością do modułu GPC – moduł ten zawiera wszystkie kluczowe graficzne jednostki niezbędne do generowania grafiki (werteksowe, geometryczne, rastrujące, teksturujące i pikselowe jednostki przetwarzające scenę 3D z wyjątkiem renderujących, a więc bezpośrednio przygotowujących do wyświetlenia obrazu na ekranie monitora modułów ROP – Raster OPeration). Oznacza to, że do układu Fermi można zarówno dodawać jednostki GPC, jak i je odejmować. Innymi słowy, obecnie najwydajniejsza karta z rodziny GF100 będzie miała cztery moduły GPC, zaś najsłabsza jeden GPC.


Fot. 13 - Architektura GF100 Fermi
Źródło: NVIDIA


Fot. 14 - Zdjęcie krzemowej struktury układu GF100
Źródło: NVIDIA

Na jeden klaster GPC przypada jeden skalowalny silnik rastrujący (Raster Engine) odpowiedzialny za ustawianie trójkątów, rasteryzację i Z-culling czyli eliminację w głąb sceny 3D niewidocznych dla obserwatora punktów – Z-culling często nazywany jest też eliminacją wymiaru. Z kolei na każdy pojedynczy blok procesorów SM przydzielono jeden silnik polimorficzny (Polymorph Engine). Silnik ten, który, podobnie jak Raster Engine, jest nowością w architekturze NVIDII, odpowiada m.in. za teselację, transformację płaszczyzny rzutu sceny 3D oraz ustawianie jej atrybutów np. oświetlenia. Co ciekawe, obliczenia realizowane przez silnik polimorficzny realizowane są etapowo w taki sposób, że SM przesyła do jednostki polimorficznej dane, silnik polimorficzny po ich przetworzeniu odsyła rezultaty, które są wykorzystywane przez shadery, rezultaty z shaderów trafiają znowu do silnika polimorficznego na następny etap obliczeń itd. Po skończeniu kalkulacji silnik polimorficzny przesyła wyniki do silnika rastrującego.
 
Każdy z 16 silników polimorficznych ma do swojej dyspozycji werteksową jednostkę odpowiedzialną za ładowanie danych werteksowych z wyprzedzeniem oraz własny teselator. Takie rozwiązanie w znaczący sposób przyspiesza operacje geometryczne. Z kolei każdy z czterech równolegle pracujących silników rastrujących może w jednym cyklu zegara ustawić do czterech trójkątów, co daje możliwość ustawienia łącznie 16 trójkątów w jednym takcie.


Fot. 15 - Schemat jednostki rastrującej i silnika polimorficznego
Źródło: NVIDIA

Każdy SM ma do swojej dyspozycji cztery jednostki teksturujące Texture Unit (TU) – na schemacie architektury Fot. 13 są to cztery ciemnoniebieskie prostokąty znajdujące się nad silnikiem polimorficznym, a na poniższym schemacie oznaczono je symbolem Tex. Każda jednostka teksturująca jest w stanie w każdym cyklu nałożyć cztery tekstury. Mogą one być zarówno filtrowane, jak i niefiltrowane. Dostępne filtrowania to filtrowanie dwuliniowe, trójliniowe i anizotropowe. Przyspieszenie działania jednostek teksturujących osiągnięto dzięki przeniesieniu jednostek teksturujących do modułu SM, zwiększeniu wydajności pamięci cache dla tekstur oraz zwiększeniu szybkości zegara.
 
W każdym module SM znajduje się 16 jednostek LD/ST (Load/Store). Dzięki temu możliwa jest bezproblemowa obsługa w jednym cyklu zegarowym adresów źródłowych i docelowych należących zarówno do przestrzeni adresowej pamięci cache i DRAM dla maksymalnie 16 wątków przetwarzanych jednocześnie przez każdy SM – warto tu zauważyć, że każdy SM może fizycznie w danej chwili jednocześnie przetwarzać 32 wątki, po jednym na każdy procesor strumieniowy CUDA, niemniej liczba symultanicznie wykonywanych wątków dla całego GF100, między którymi przełączają się procesory CUDA dochodzić może do kilku tysięcy.
 
Ciekawym elementem w architekturze Fermi są cztery jednostki specjalne SFU (Special Function Units) przypadające na każdy blok strumieniowy SM – znajdowały się one również w układach poprzedniej generacji, niemniej w GF100 zostały usprawnione. Służą one do obliczania wartości takich funkcji jak sinus, cosinus, pierwiastek kwadratowy oraz odwrotności. Co ważne, każda z tych funkcji realizowana jest dla jednego wątku w jednym cyklu zegarowym – w wypadku bloku 32 powiązanych, równoległych wątków (tzw. bloku warp) w ośmiu cyklach – a jednostki SFU wykonują swoje zadania niezależnie od modułu zlecającego co zwiększa elastyczność wykonywania obliczeń jako całości. W modułach SM znajdują się też dwie jednostki rozplanowujące zadania i przydzielające je do odpowiednich procesorów strumieniowych CUDA.


Fot. 16 - Szczegółowa budowa procesorów strumieniowych SM i procesorów CUDA
Źródło: NVIDIA

Równie interesująco rozwiązano strukturę pamięci. Na pamięć w Fermim składają się rejestry (umożliwiają one zapamiętanie 32768 32-bitowych wartości – korzystają z nich wspólnie wszystkie 32 procesory CUDA przypadające na jeden blok SM), pamięć cache dla instrukcji (16 KB), 64 KB pamięci współdzielonej, która jest jednocześnie pamięcią podręczną L1, uniform cache (16 KB) oraz pamięć podręczna dla tekstur (12 KB). Jak widać na schemacie architektury, wymienione wyżej typy pamięci są pamięciami dostępnymi dla każdego pojedynczego bloku SM. Bardzo ciekawa jest organizacja pamięci współdzielonej, która jednocześnie jest pamięcią cache L1. Pamięć ta może być bowiem dzielona w zależności od potrzeb na 48 KB blok Shared memory z 16 KB pamięcią cache lub 16 KB pamięci Shared z 48 KB cache’m. Przez obecne na rynku aplikacje pamięć Shared może być wykorzystywana jako software’owo zarządzana pamięć cache.
 
Jak już wspomniałem w układzie Fermi zastosowano dwupoziomową hierarchiczną pamięć cache. Wprowadzono też korekcję błędów ECC, które mogą pojawić się w pamięci zarówno DRAM, jak i cache oraz w rejestrach – innymi słowy algorytmem ECC chroniona jest cała pamięć. Współdzielona przez wszystkie GPC pamięć podręczna drugiego poziomu ma 768 KB. Za obsługę pamięci DRAM GDDR5 (maksymalnie 6 GB) odpowiada sześć 64-bitowych kontrolerów pamięci co daje łączną szerokość szyny danych wynoszącą 384 bity.


Fot. 17 - Hierarchia pamięci cache w GF100
Źródło: NVIDIA

Wróćmy jednak do schematu z Fot. 13 i pozostałych nie omówionych elementów. Instrukcje od CPU trafiają do układu GPU poprzez Host Interface. Głównym modułem zarządzającym przydzielaniem danych jest zaś GigaThread Engine. Silnik ten przydziela bloki wątków poszczególnym modułom SM, a także redystrybuuje zadania do dalszej obróbki po ich wykonaniu lub przy zwiększającym się obciążeniu zadaniami w strumieniu graficznym – np. po teselacji lub rasteryzacji.
 
Ciemnoniebieskie małe bloki na schemacie Fot. 13 zgromadzone dookoła pamięci cache L2 to jednostki renderujące ROP, których zadaniem jest przekształcające wygenerowany obraz 3D do postaci, którą jest w stanie wyświetlić na swoim ekranie monitor. Moduły ROP wykonują także m.in. takie zadania jak antyaliasing, pixel blending, operacje zapisu do bufora ramki itp. Jednostek tych w układ GF100 wbudowano 48. Podzielone zostały one na sześć grup – po 8 modułów ROP. Każda z tych sześciu grup współpracuje bezpośrednio z jednym 64-bitowym kontrolerem pamięci DRAM. Kontrolery pamięci, pamięć cache L2 oraz grupy jednostek renderujących ROP są ze sobą bardzo blisko powiązane w krzemowej strukturze układu GF100.
 
Na końcu omawiania architektury warto dodać, że Fermi składa się z 3 miliardów tranzystorów i jest kompatybilny z bibliotekami DirectX 11, OpenGL 3.x i OpenCL 1.x. Ciekawostką jest to, że można go programować również przy wykorzystaniu standardowego języka programowania C++. Układy GF100 produkowane są procesie technologicznym 40 nm w tajwańskiej fabryce TSMC. Niestety, uprzedzając pytania, NVIDIA nie podała innych szczegółów technicznych takich jak np. częstotliwości taktowania rdzenia graficznego czy pamięci.
 
Możliwości i wydajność
 
No dobrze, ale jak nowa architektura sprawdza się w praktyce oraz jakie ma możliwości. Tym zagadnieniom poświęcono resztę konferencji.


Fot. 18 - GF100 pozwala na geometryczny realizm
© Marcin Bieńkowski


Fot. 19, 20, 21 - Zalety teselacji
© Marcin Bieńkowski


Fot. 22, 23, 24, 25 - Bardziej realistyczna woda uzyskana dzięki teselacji
© Marcin Bieńkowski


Fot. 26 - Emulacja zachowania włosów
© Marcin Bieńkowski


Fot. 27 - Porównanie szybkości teselacji przy wykorzystaniu bibliotek DX11 dla kart ATI i NVIDII
© Marcin Bieńkowski


Fot. 28 - Szybkość pracy shaderów geometrycznych dla kart ATI i NVIDII
© Marcin Bieńkowski


Fot. 29 - Przyspieszenie jednostek ROP
© Marcin Bieńkowski


Fot. 30, 31 - Akceleracja Jitter samplingu
© Marcin Bieńkowski


Fot. 32 - Alpha to Coverage
© Marcin Bieńkowski


Fot. 33, 34 - Rendering z wykorzystaniem ray-tracingu. Na drugim rysunku białe kropki i niezbyt dokładny obraz wynikają z malej liczby przeprowadzonych iteracji. Z każdą sekunda jakość obrazu się poprawia, aż osiągnie on założoną dokładność odwzorowania.
© Marcin Bieńkowski

Wydajność w grach
 
I teraz przechodzimy do części, która zawsze bardzo interesuje naszych czytelników - a mianowicie wydajności w grach. W ramach drugiej sesji NVIDIA Developer Program, na żywo mogliśmy zobaczyć m.in. maszynę z nowym i starym GeForcem w grze FarCry 2 (1920x1200 pikseli).


Fot. 35 - Pojedynek GeForców – Po lewej komputer z układem GF100 po prawej z GTX 285. Konfiguracja obu komputerów, z wyjątkiem karty graficznej jest identyczna (Windows 7 64-bit, chipset Intel X58, Intel Core i7 960, 6 GB RAM).
© Marcin Bieńkowski


Fot. 36, 37 - Benchmark FarCry 2 w trakcie testów (u góry GF100)...
© Marcin Bieńkowski


Fot. 38, 39 - ... i wyniki końcowe (u góry GF100)
© Marcin Bieńkowski


Fot. 40, 41 - Kolejny test tym razem związany z typowym renderingiem (u góry GF100)
© Marcin Bieńkowski


Fot. 42, 43 - Teraz przyszła kolej na ray-tracing i renderowanie Bugatti Veyrona (u góry GF100)
© Marcin Bieńkowski

Niemal na samym końcu zaprezentowano dziennikarzom, w ramach ostatniej sesji NVIDIA Developer Tools, możliwości wykorzystania technologii PhysX w programach graficznych. Zobaczyliśmy m.in. zaimplementowanie PhysX-a do realistycznego odwzorowania zachowania się ubrań w programie 3ds max,, a następnie metody sprawdzania poprawności generowanej grafiki przy wykorzystaniu technologii wirtualizacji przy wykorzystaniu oprogramowania Intela VTd. Maszyną śledząca był system operacyjny pełniący funkcję hosta, a oprogramowanie graficzne wykonywane było na systemie guest.


Fot. 44 - Symulacja zachowania się ubrań w 3ds max
© Marcin Bieńkowski


Fot. 45 - Wirtualne techniki śledzenia poprawności generowania obrazów
© Marcin Bieńkowski

Na końcu pokazano nam demo Supersonic Sled, historię jego przygotowania, możliwości techniczne oraz różnego typu funkcje. Cały pokaz odbył się w technologii 3D i niestety nie mam z niego zdjęć.
 
I to wszystkie najważniejsze informacje jaki na konferencji GF100 Deep Dive przekazała dziennikarzom NVIDIA. Teraz pozostaje już nam czekać na premierę akceleratora 3D GF100 i na możliwość przeprowadzenia w naszej redakcji własnych testów wydajności na pierwszych próbnych kartach graficznych z układem Fermi – mamy nadzieję, że już niedługo karty te pojawią się na rynku.

Autor: Marcin Bieńkowski

Komentarze (29)





Podobne Artykuły/Recenzje

09-02-2010 - Technologie: NVIDIA Fermi GF100 (23%)
04-01-2010 - Technologie: 32 nanometrowe procesory Intela (8%)
01-10-2009 - GT300 i Fermi - Relacja z konferencji Nvidia GPU Technology Conference (8%)
15-05-2009 - Technologia: Obliczenia prowadzone za pomocą kart graficznych (5%)
23-09-2009 - ATI Radeon 5870 / 5850 - Technologia (5%)
31-10-2008 - Architektura procesorów: Intel Core i7 (Nehalem) (5%)
12-03-2010 - Technologia druku komputerowego (5%)
11-03-2009 - RFID - miniaturowy szpieg (3%)
06-07-2009 - INTEL: Czas 32 nanometrów (3%)
24-04-2006 - PureVideo - technologia przyszłości (3%)
18-09-2009 - Produkcja procesorów i półprzewodników - od piasku do procesora (3%)
22-12-2009 - Intel Single-chip Cloud Computer (3%)
12-01-2009 - Technologia vPro - zarządzanie na odległość (3%)
29-05-2009 - Przydatne serwisy i usługi online - Wszystko na chmurce (3%)
01-12-2002 - NVIDIA nForce2 (3%)
10-01-2003 - 3X NVIDIA Geforce4 Ti4200 8X (3%)
02-06-2003 - NVIDIA Sound Storm od A do Z (3%)
13-12-2006 - KONFERENCJA: Action,Galaxy i NVIDIA (3%)
20-03-2009 - NVIDIA ION - idealne połączenie (3%)
08-07-2005 - GeForce 7800 GTX - NVIDIA na tronie (3%)

___________________________
Więcej artykułów



Redakcja serwisu FrazPC.pl nie ponosi odpowiedzialności za ewentualne szkody powstałe
w wyniku użytkowania jakichkolwiek materiałów ukazujących się na łamach FrazPC.pl.
Copyright © FrazPC.pl 1997-2010
| Online: 5064 | Online w dziale: 180 | Odsłony: 609,399,649 | Czas generacji strony: 0.0124 s |