Organizacja pamięci w procesorach graficznych

Podobne dokumenty
43 Pamięci półprzewodnikowe w technice mikroprocesorowej - rodzaje, charakterystyka, zastosowania

Programowanie aplikacji równoległych i rozproszonych

Moc płynąca z kart graficznych

Programowanie procesorów graficznych GPGPU

Komputerowa pamięć. System dziesiątkowego (decymalny)

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Karta graficzna karta rozszerzeo odpowiedzialna generowanie sygnału graficznego dla ekranu monitora. Podstawowym zadaniem karty graficznej jest

PAMIĘCI SYNCHRONICZNE

Podstawy Informatyki DMA - Układ bezpośredniego dostępu do pamięci

Architektura komputerów

Podsystem graficzny. W skład podsystemu graficznego wchodzą: karta graficzna monitor

Architektura komputerów

Przegląd architektury PlayStation 3

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Budowa Mikrokomputera

i3: internet - infrastruktury - innowacje

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Programowanie Procesorów Graficznych

Zarządzanie pamięcią w systemie operacyjnym

Architektura systemów informatycznych

Budowa pamięci RAM Parametry: tcl, trcd, trp, tras, tcr występują w specyfikacjach poszczególnych pamięci DRAM. Czym mniejsze są wartości tych

Programowanie Współbieżne

Algorytmy dla maszyny PRAM

LEKCJA TEMAT: Zasada działania komputera.

Architektura systemu komputerowego

Dr inż. hab. Siergiej Fialko, IF-PK,

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Architektura komputera Składamy komputer

Architektura systemów informatycznych

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Architektura Systemów Komputerowych. Bezpośredni dostęp do pamięci Realizacja zależności czasowych

Magistrala systemowa (System Bus)

Programowanie współbieżne Wykład 2. Iwona Kochańska

Budowa komputera Komputer computer computare

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

RODZAJE PAMIĘCI RAM. Cz. 1

Systemy operacyjne III

System pamięci. Pamięć wirtualna

Nowinki technologiczne procesorów

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Test dysku Intel SSD DC S GB. Wpisany przez Mateusz Ponikowski Wtorek, 22 Październik :22

Nowinkach technologicznych procesorów

Temat: Pamięć operacyjna.

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

Architektura systemów komputerowych. dr Artur Bartoszewski

Komputer IBM PC niezależnie od modelu składa się z: Jednostki centralnej czyli właściwego komputera Monitora Klawiatury

Architektura komputerów

Architektura komputerów

Tesla. Architektura Fermi

System pamięci. Pamięć podręczna

Architektura komputerów

Wykład 6. Mikrokontrolery z rdzeniem ARM

Załącznik nr 6 do SIWZ nr postępowania II MJ Zaoferowany. sprzęt L P. Parametry techniczne

Wysokowydajna implementacja kodów nadmiarowych typu "erasure codes" z wykorzystaniem architektur wielordzeniowych

Architektura komputerów

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Pamięci. Pamięci DDR DIMM SDR SDRAM

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

LEKCJA. TEMAT: Pamięć operacyjna.

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

Zarządzanie zasobami pamięci

Architektura systemów komputerowych. dr Artur Bartoszewski

Zaleta duża pojemność, niska cena

Programowanie mikroprocesorów jednoukładowych

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Pamięci masowe. ATA (Advanced Technology Attachments)

System komputerowy. System komputerowy

Architektura mikroprocesorów TEO 2009/2010

Programowanie kart graficznych

Plan wykładu. Architektura systemów komputerowych. Strategie zapisu. Cezary Bolek

Tablet MODECOM FreeTAB 7001 HD IC

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

Zasada działania pamięci RAM Pamięć operacyjna (robocza) komputera - zwana pamięcią RAM (ang. Random Access Memory - pamięć o swobodnym dostępie)

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

Podzespoły Systemu Komputerowego:

Karta graficzna. Karta graficzna przyjmuje. rozszerzeń montowanej w magistrali wejścia/wyjścia na płycie głównej. Opcjonalnie układ graficzny

Wykład 8. Pamięć wirtualna. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Ograniczenia efektywności systemu pamięci

Karty graficzne: budowa, zasada działania, standardy, parametry, dodatkowe funkcje

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

dr inż. Jarosław Forenc

Wykład 7. Zarządzanie pamięcią

Nowinki technologiczne procesorów

System pamięci. Pamięć podręczna

Bitmapy - format i zastosowanie. Podstawowy format plików bitmapowych, dogodność zastosowania bitmap w prostych animacjach 2D.

Sprawdzian test egzaminacyjny GRUPA I

Procesory. Schemat budowy procesora

Pamięć RAM. Pudełko UTK

Architektura komputera

Architektura systemów komputerowych. dr Artur Bartoszewski

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Architektura komputerów

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

WOJEWÓDZKI KONKURS INFORMATYCZNY DLA UCZNIÓW DOTYCHCZASOWYCH GIMNAZJÓW ETAP SZKOLNY BIAŁYSTOK, 22 LISTOPADA 2017 R.

Transkrypt:

Organizacja pamięci w procesorach graficznych Pamięć w GPU przechowuje dane dla procesora graficznego, służące do wyświetlaniu obrazu na ekran. Pamięć przechowuje m.in. dane wektorów, pikseli, tekstury czy bufor ramki. Pamięć GDDR Pamięć GDDR jest specjalnym rodzajem pamięci przeznaczonym do kart graficznych, opracowana przez firmę ATI. Głównymi zaletami takich pamięci nad standardowymi pamięciami typu DDR są: Wyższe częstotliwości taktowania Niższe napięcia, powodujące zmniejszenie poboru mocy i wydzielania ciepła Dwa razy większa przepustowośc, kontroler GDDR może w jednym cyklu zegara przeprowadzić zapis i odczyt, podczas gdy pamięć DDR może wykonać tylko jedną z tych rzeczy w jednym cyklu. Krótka charakterystyka poszczególnych typów pamięci w GPU:

A. Pamięć Globalna Pamięć globalna jest dostępna przez wszystkie wątki aplikacji, jest to globalny zasób karty graficznej. Jest to pamięć stałą trwająca do czasu zakończenia aplikacji. Zarówno CPU jak i GPU mogą zapisywać/odczytywać z tej pamięci, jednak komunikacja między hostem a GPU jest wiele wolniejsza od komunikacji GPU-Pamięć globalna. Korzystanie z tej pamięci ma jednak kilka wad: jest wolna stanowi wąskie gardło w wydajności dostęp do niej nie jest synchronizowany należy zapewnić brak konfliktów przy dostępie do tej pamięci przez wątki B. Pamięć Stała Jest to niewielki cache trzymany w pamięci globalnej, używany przy danych, które nie zmienią się przez czas wykonywania się programu. Jest znacząco szybsza od pamięci globalnej, jednak ma niewielki rozmiar i jest tylko do odczytu. C. Pamięć Współdzielona Jest to pamięć znajdująca się bezpośrednio w chipie GPU, stąd jest bardzo szybka. Dostęp do niej mają wszystkie wątki w obrębie danego bloku, jest niedostępna z poziomu CPU. Umożliwia to wątkom szybkie komunikowanie się i wymienianie między sobą danych. Każdy ma swoją własną tablicę z tą pamięcią. Trwa do czasu wykonania się danego bloku. Głównym ograniczeniem tej pamięci jest jej mały rozmiar, przez co gdy chcemy wykonać jakieś większe operacje w pamięci współdzielonej musimy podzielić dane na bloki. Przykładem może być przetwarzanie obrazu, gdzie obrazek należy podzielić na bloki i umieścić w tej pamięci w celu przetworzenia D. Rejestry Znajdują się w chipie GPU, służą do przechowywania zmiennych lokalnych i innych rzeczy, do których potrzeba mieć szybki i częsty dostęp. Dostęp do rejestru ma tylko wątek z niego korzystający, pamięć ta trwa do momentu wykonania się tego wątku. Ich ograniczeniem jest ich ilość (zwykle kilka tysięcy rejestrów po 32bity)

E. Pamięć Lokalna Znajduje się w przestrzeni pamięci urządzenia(pamięć globalna)jest to wolną pamięcią, prędkością porównywalna do pamięci globalnej. Jest używana głównie do przechowywania zmiennych, gdy nie ma dla nich dostępnych rejestrów. F. Pamięć podręczna Jest to mała pamięć, do której GPU ma szybszy dostęp niż do pamięci GDRAM. Procesor graficzny przetwarzając dane najpierw sprawdza czy są one w cache, i jeśli tam znajdzie te dane to nie będzie musiał wykonywać kosztowniejszej operacji odczytu z większych pamięci. Pamięć z punktu widzenia wydajności Z perspektywy szybkości dostępu lista pamięci wygląda następująco(od najkrótszego czasu dostępu): 1. Cache 2. Rejestry 3. Pamięć współdzielona 4. Pamięć stała 5. Pamięć globalna i lokalna Patrząc na tą listę wydaje się, że najlepszą wydajność uzyskamy używając tylko cache, rejestrów, pamięci współdzielonej i stałej. Pozostałymi istotnymi czynnikami jest ich położenie w karcie graficznej,dostęp, zasięg i żywotność Pamięć Położenie na chipie Dostęp Zasięg Żywotność Rejestry Tak Zapis/Odczyt 1 wątek Wątek P. współdzielona Tak Zapis/Odczyt Wszystkie wątku w bloku Blok P. stała Nie Odczyt Wszystkie wątki + host P. globalna Nie Zapis/Odczyt Wszystkie wątki + host Aplikacja Aplikacja P. lokalna Nie Zapis/Odczyt 1 wątek Wątek

Najlepszym ogólnym zastosowaniem będzie podzielenie operacji na bloki i użycie pamięci współdzielonej, ponieważ wątki w obrębie tego samego bloku mogą się ze sobą komunikować, a sama pamięć jest bardzo szybka. Problemem przy tym rozwiązaniu będzie dostęp do całej pamięci dla wszystkich wątków, będzie wiele wątków korzystając z danych jednocześnie. Aby powstrzymać to wąskie gardło pamięć współdzielona jest podzielona na 32banki pamięci. Kolejne sekcje pamięci zostają przydzielonych do kolejnyech banków. Dwa fakty o pamięci współdzielonej: Cały rozmiar pamięci może być ustawiony na 16KB, 23KB lub 48KB(z pozostałą ilością automatycznie użytą na cache L1) Z architekturą Keplera, każdy bank ma przepustowość 64bitów na cykl zegara. Starsza architektura Fermiego była taktowana inaczej, efektywnie oferując połowę tej przepustowości Pamięć z perspektywy aplikacji Dane aplikacji są przechowywane w pamięci GPU lub CPU w zależności od tego gdzie są optymalniej wykorzystywane. Po stronie GPU wykonywane są głównie specjalistyczne operacje takie jak rasteryzacja, blending, filtrowanie tekstur i operacje współbieżne wymagające dużej przepustowości(shadery). Obliczenia związane z macierzami(tworzenie, przekształcenia, rotacje, skalowanie) są wykonywane po stronie CPU. Jeśli chcemy uzyskać dostęp dotakiej macierzy należy przekazać ją do GPU przez zmienną uniform. Dane GPU przechowywane są w 3 objektach: Vertex Buffer, Frame Buffer, Texture. Każdy z typów pamięci wspiera zestaw określonych operacji interfejsu GPU i CPU. Operacje interfejsu CPU: Alokacja, zwolnienie pamięci Kopiowanie CPU GPU Kopiowanie GPU CPU Kopiowanie GPU GPU Bind for read-only vertex stream access //DO PRZETŁUMACZENIA Bind for read-only random acces Bind for write-only framebuffer access

Operacje interfejsu GPU(shader/kernel): Odczyt z dostępu swobodnego Odczyt strumieniowy Vertex Buffer to pamięć GPU przechowująca dane o wierzchołkach. Wspierane operacje: Interfejs CPU: Alokacja, zwolnienie pamięci Kopiowanie CPU GPU Kopiowanie GPU GPU (Render-to-vertex-array) Bind for read-only vertex stream access Interfejs GPU: Odczyt strumieniowy (tylko program wierzchołka) Ograniczenia: CPU Nie można kopiować GPU CPU No bind for read-only random access No bind for write-only framebuffer access GPU Brak odczytu o dostępie swobodnym Brak dostępu z programów fragmentów Texture Memory pamięć o dostępie swobodnym. Wspierane operacje: CPU Alokacja, zwolnienie pamięci Kopiowanie CPU GPU Kopiowanie GPU CPU Kopiowanie GPU GPU (render-to-texture) Bind for read-only random acces Bind for write-only framebuffer access GPU Odczyt o dostępie swobodnym Ograniczenia:

No bind for vertex stream access Framebuffer pamięć zapisywana przez procesor fragmentów. Jest to pamięć tylko do zapisu. Jest to struktura trzymająca wskaźniki do obiektów pamięci przechowujących informacje o pikselu (kolor, alpha, głębia, stencil). Mogą to być obiektu Texture lub Renderbuffer.