2009-11-08 19 views
28

Czy karty graficzne mają własne zestawy instrukcji? Zakładam, że tak, ale zastanawiam się, czy jest to zastrzeżenie, czy jest jakiś otwarty standard.Czy karty graficzne mają własne zestawy instrukcji?

Czy każda instrukcja GPU jest poprzedzona instrukcją procesora lub czy jest płynna? To robi wywołanie OpenGL lub DirectX na warstwie sterownika za pośrednictwem procesora, który następnie wysyła instrukcje GPU w dół magistrali lub jest bardziej rozbudowany.

Odpowiedz

28

Tak, robią. AMD zapewnia nawet specyfikację do serii HD4000 w tej chwili.

Spójrz tutaj: http://developer.amd.com/wordpress/media/2012/10/R700-Family_Instruction_Set_Architecture.pdf

Istnieje również projekt open source o nazwie Nouveau że robi inżynierii odwrotnej z zestawów instrukcji NV.

Należy zauważyć, że NVIDIA ma nieco inną architekturę niż AMD, ponieważ nie używa VLIW, ale wykonuje skalar (mimo że wiele wątków jest dodatkowo zgrupowanych w tak zwanym Warp lub Wavefront).

Również nie każde wywołanie OpenGL/Direct3D jest odwzorowane na "instrukcję GPU". Na przykład podczas wiązania tekstury sterownik ustawi tylko odpowiednie rejestry sprzętowe, które poinformują GPU, jakiej pamięci tekstur użyć do próbkowania.

Prawdziwe programy są uruchamiane tylko podczas wykonywania modułów cieniujących lub przetwarzania strumienia jądra na GPU.

+2

Plik pdf został przeniesiony tutaj: http://developer.amd.com/wordpress/media/2012/10/R700-Family_Instruction_Set_Architecture.pdf – larsr

+0

Ostatni jest taki: http: //amd-dev.wpengine.netdna-cdn. com/wordpress/media/2013/07/AMD_GCN3_Instruction_Set_Architecture.pdf – Simon

+0

http://developer.amd.com/wordpress/media/2012/12/AMD_Southern_Islands_Instruction_Set_Architecture.pdf –

3

Tak, GPU ma własne zestawy instrukcji proprietrary. Instrukcje GPU są wykonywane niezależnie od instrukcji CPU.

+0

OK, ale w jaki sposób system operacyjny wie o tym? Jeśli system operacyjny jest skompilowany dla x86, rozumiem, jak zna instrukcje x86. Ale jeśli system ma kartę ATI, skąd korzysta z zestawu instrukcji ATI? Czy procesor najpierw wywołuje sterownik, który wykonuje instrukcję OpenGL? Jak przebiega przekazywanie instrukcji do odpowiedniego zasobu? – Matt

+7

@Matt: Sterownik obsługuje je wszystkie; Windows rozmawia z kierowcą w określony sposób, a kierowca rozmawia z GPU w określony sposób. –

5

Obecnie karty NVIDIA używają pewnego rodzaju pośredniego ISA o nazwie PTX. Można o tym przeczytać w tym dokumencie:

PTX ISA 1.1

programy PTX są przeliczane w czasie instalacji do zestawu instrukcji sprzętu docelowego.

+0

Jak uzyskać i zmodyfikować PTX: http://stackoverflow.com/questions/4660974/how-to-create-or-manipulate-gpu-asembler/43304961 # 43304961 –

2

Patrz: Instrukcja programowania CUDA Wersja 3.0

Zdolność obliczeniowa urządzenia jest określony przez główny numer wersji i niewielką liczbą rewizyjnej.

Urządzenia o tym samym ważnym numerze wersji mają taką samą architekturę rdzeniową. Główna liczba wersji urządzeń opartych na architekturze Fermiego wynosi 2. Wszystkie wcześniejsze urządzenia mają zdolność obliczeniową 1.x (ich główna wersja to 1).

Niewielki numer wersji odpowiada stopniowej poprawie architektury rdzeniowej , w miarę możliwości zawierającej nowe funkcje.

Dodatek Lista wszystkich urządzeń obsługujących CUDA wraz z ich możliwościami obliczeniowymi. Dodatek G podaje specyfikacje techniczne poszczególnych możliwości obliczeniowych.

0

AMD rdzeń graficzny Next (GCN)

https://en.wikipedia.org/wiki/Graphics_Core_Next

Pierwsza generacja nazywa się "Wyspy Southern".

Linki strona Wiki AMD specyfikacji dokumentujących Isa np http://developer.amd.com/wordpress/media/2012/12/AMD_Southern_Islands_Instruction_Set_Architecture.pdf

Istnieje nawet otwarta implementacja RTL nazywa miaow https://github.com/VerticalResearchGroup/miaow, choć prawdopodobnie narusza jakieś IP, które AMD jedynie wybrany do tolerowane w milczeniu teraz (source).

SPIR-V

https://en.wikipedia.org/wiki/Standard_Portable_Intermediate_Representation jest standardowym jƒzyku Krhonos.

Jest prawdopodobnie zaprojektowany tak, aby był podobny do istniejących GPU GPU, dzięki czemu będzie bardziej możliwy do zastosowania i lepiej przystosowany, co powinno dać dobre wyobrażenie o aktualnych ISA dla GPU.

A jeśli ten standard się przydaje, tak jak wydaje się, że jest tak w związku z adopcją w Vulkanu i OpenCL 2.1, przyszłe wdrożenia prawdopodobnie zostaną zaprojektowane w celu wdrożenia, a to z kolei zapewnia lepszą wydajność.