Projekt zorientowany na dane

W informatyce projektowanie zorientowane na dane to podejście do optymalizacji programu motywowane efektywnym wykorzystaniem pamięci podręcznej procesora , używanej w tworzeniu gier wideo . Podejście polega na skupieniu się na układzie danych, oddzielaniu i sortowaniu pól według tego, kiedy są potrzebne, oraz przemyśleniu transformacji danych. Zwolennicy to Mike Acton, Scott Meyers i Jonathan Blow .

Tablica równoległa (lub struktura tablic ) jest głównym przykładem projektowania zorientowanego na dane. Kontrastuje to z szeregiem struktur typowych dla projektów zorientowanych obiektowo.

Motywy

Metody te stały się szczególnie popularne w połowie i pod koniec 2000 roku podczas siódmej generacji konsol do gier wideo , która obejmowała konsole PlayStation 3 (PS3) i Xbox 360 oparte na IBM PowerPC . W przeszłości konsole do gier często miały stosunkowo słabe jednostki centralne (CPU) w porównaniu z najlepszymi odpowiednikami komputerów stacjonarnych. Jest to wybór projektowy, aby przeznaczyć więcej mocy i budżetu na tranzystory na procesory graficzne (GPU). Na przykład procesory siódmej generacji nie były produkowane z nowoczesnymi procesorami wykonawczymi poza kolejnością , ale zamiast tego używają procesorów w kolejności z wysokimi częstotliwościami taktowania i głębokimi potokami . Ponadto większość typów systemów komputerowych ma pamięć główną zlokalizowaną setki cykli zegara od elementów przetwarzających . Co więcej, ponieważ procesory stały się szybsze wraz ze znacznym wzrostem pojemności pamięci głównej, istnieje ogromne zużycie danych, które zwiększa prawdopodobieństwo braku pamięci podręcznej we współdzielonej magistrali , znanej również jako wąskie gardło Von Neumanna . W związku z tym lokalność metod referencyjnych została wykorzystana do kontrolowania wydajności, co wymaga poprawy wzorców dostępu do pamięci w celu usunięcia wąskich gardeł. Niektóre problemy z oprogramowaniem były również podobne do tych napotkanych na Itanium i wymagały rozwijania pętli w celu planowania z góry.

Porównaj z orientacją obiektową

Twierdzą, że tradycyjne zasady projektowania programowania obiektowego (OOP) skutkują słabą lokalizacją danych, [ wymagane wyjaśnienie ] tym bardziej, jeśli używany jest polimorfizm w czasie wykonywania ( dynamiczna wysyłka ) (co jest szczególnie problematyczne w przypadku niektórych procesorów). Chociaż wydaje się, że OOP „organizuje kod wokół danych”, w rzeczywistości organizuje kod źródłowy wokół typów danych, zamiast fizycznie grupować poszczególne pola i tablice w wydajnym formacie umożliwiającym dostęp do określonych funkcji. Co więcej, często ukrywa szczegóły układu pod warstwami abstrakcji , podczas gdy programista zorientowany na dane chce to przede wszystkim wziąć pod uwagę.

Zobacz też