2009-11-08 11 views
28

Le schede grafiche dispongono di set di istruzioni personalizzati? Presumo che lo facciano, ma mi sono chiesto se è proprietario o se esiste una sorta di standard aperto.Le schede grafiche dispongono di set di istruzioni personalizzati?

Ogni istruzione GPU è preceduta da un'istruzione CPU o è perfetta? Vale a dire chiamate OpenGL o DirectX sul livello driver tramite la CPU, che quindi invia un'istruzione GPU sul bus o è più elaborata.

risposta

28

Sì, lo fanno. Al momento AMD fornisce anche le specifiche fino alla serie HD4000.

dare uno sguardo qui: http://developer.amd.com/wordpress/media/2012/10/R700-Family_Instruction_Set_Architecture.pdf

C'è anche un progetto open source chiamato Liberty che fa l'ingegneria delle serie di istruzioni NV retromarcia.

Si noti che NVIDIA ha un'architettura leggermente diversa da AMD, perché non utilizzano VLIW ma l'esecuzione scalare (sebbene più thread siano ulteriormente raggruppati in quello che viene chiamato Warp o Wavefront).

Inoltre, non tutte le chiamate OpenGL/Direct3D si associano a "istruzioni GPU". Ad esempio, quando si associa una texture, il driver imposta solo registri hardware appropriati che comunicano alla GPU quale memoria di trama utilizzare per il campionamento.

I programmi reali vengono eseguiti solo quando si eseguono shader o stream processing kernel sulla GPU.

+2

Il pdf è stato spostato qui: http://developer.amd.com/wordpress/media/2012/10/R700-Family_Instruction_Set_Architecture.pdf – larsr

+0

L'ultimo è quello: 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

Sì, la GPU dispone di set di istruzioni propri propri. Le istruzioni GPU vengono eseguite indipendentemente dalle istruzioni della CPU.

+0

OK, ma come fa il sistema operativo a farlo? Se un sistema operativo è compilato per x86, capisco come conosce le istruzioni x86. Ma se un sistema ha una scheda ATI, come fa a sapere di utilizzare un set di istruzioni ATI? La cpu chiama prima il driver che esegue un'istruzione opengl? Che cosa fa il routing delle istruzioni alla risorsa appropriata? – Matt

+7

@Matt: il driver gestisce tutto; Windows parla al guidatore in un certo modo e l'autista parla con la GPU in un certo modo. –

5

Attualmente, le schede NVIDIA utilizzano un tipo di ISA intermedio chiamato PTX. Si può leggere su di esso in questo documento:

PTX ISA 1.1

programmi PTX sono convertite al momento dell'installazione per il set di istruzioni hardware di destinazione.

+0

Come ottenere e modificare PTX: http://stackoverflow.com/questions/4660974/how-to-create-or-manipulate-gpu-assembler/43304961 # 43304961 –

2

See: Guida CUDA Programmazione Versione 3.0

La capacità di calcolo di un dispositivo è definito da un grande numero di revisione e un numero revisione minore.

I dispositivi con lo stesso numero di revisione principale sono della stessa architettura di base. Il numero di revisione principale dei dispositivi basato sull'architettura Fermi è 2. I dispositivi precedenti sono tutti di capacità di calcolo 1.x (Il loro numero di revisione principale è 1).

Il numero di revisione minore corrisponde a un miglioramento incrementale all'architettura core , eventualmente con nuove funzionalità.

Appendice A elenca tutti i dispositivi abilitati CUDA e le relative capacità di calcolo. L'appendice G fornisce le specifiche tecniche di ciascuna capacità di calcolo.

0

AMD Graphics Core Next (GCN)

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

La prima generazione si chiama "Isole del Sud".

I collegamenti della pagina wiki a specifiche AMD che documentano l'ISA, ad esempio: http://developer.amd.com/wordpress/media/2012/12/AMD_Southern_Islands_Instruction_Set_Architecture.pdf

C'è anche un'implementazione RTL aperto chiamato MIAOW https://github.com/VerticalResearchGroup/miaow, anche se probabilmente viola alcuni IP che AMD ha semplicemente scelto di tollerato in silenzio per ora (source).

SPIR-V

https://en.wikipedia.org/wiki/Standard_Portable_Intermediate_Representation è un linguaggio standard intermedio Krhonos.

È probabile che sia progettato per essere simile agli ISA GPU esistenti, in modo che sia più implementabile e abbia una migliore adozione, quindi dovrebbe dare una buona idea degli ISA effettivi della GPU.

E se questo standard prende piede, come sembra essere il caso a causa dell'adozione in Vulkan e OpenCL 2.1, è probabile che le future implementazioni siano progettate per essere implementate per ottenere prestazioni migliori.