2009-11-08 12 views
28

¿Las tarjetas gráficas tienen conjuntos de instrucciones propios? Supongo que sí, pero me he estado preguntando si es propietario o si hay algún tipo de estándar abierto.¿Las tarjetas gráficas tienen conjuntos de instrucciones propios?

¿Cada instrucción de GPU está precedida por una instrucción de CPU o es transparente? Eso hace que OpenGL o DirectX invoquen la capa del controlador a través de la CPU, que luego envía una instrucción GPU al bus o es más elaborada.

Respuesta

28

Sí lo hacen. AMD incluso proporciona la especificación de la serie HD4000 en este momento.

Echa un vistazo aquí: http://developer.amd.com/wordpress/media/2012/10/R700-Family_Instruction_Set_Architecture.pdf

También hay un proyecto de código abierto llamado Nouveau que hace la ingeniería de los conjuntos de instrucciones NV inversa.

Tenga en cuenta que NVIDIA tiene una arquitectura ligeramente diferente que AMD, ya que no utilizan VLIW sino la ejecución escalar (aunque varios subprocesos también se agrupan en lo que se llama Warp o Wavefront).

Además, no todas las llamadas de OpenGL/Direct3D se asignan a una "instrucción de GPU". Por ejemplo, al vincular una textura, el controlador solo configurará los registros de hardware apropiados que indiquen a la GPU qué memoria de textura usar para el muestreo.

Los programas reales solo se ejecutan cuando se ejecutan sombreadores o se procesan núcleos de procesamiento en la GPU.

+2

El pdf se ha movido aquí: http://developer.amd.com/wordpress/media/2012/10/R700-Family_Instruction_Set_Architecture.pdf – larsr

+0

El último es ese: 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 tiene sus propios conjuntos de instrucciones propietarias. Las instrucciones de la GPU se ejecutan independientemente de las instrucciones de la CPU.

+0

Bien, pero ¿cómo sabe el sistema operativo que lo haga? Si se compila un sistema operativo para x86, entiendo cómo se conocen las instrucciones x86. Pero si un sistema tiene una tarjeta ATI, ¿cómo sabe utilizar un conjunto de instrucciones ATI? ¿La CPU primero llama al controlador que ejecuta una instrucción opengl? ¿Qué hace el enrutamiento de instrucciones al recurso apropiado? – Matt

+7

@Matt: el controlador maneja todo; Windows habla con el controlador de cierta manera, y el controlador habla con la GPU de cierta manera. –

5

Actualmente, las tarjetas NVIDIA utilizan algún tipo de ISA intermedia llamada PTX. Usted puede leer sobre él en este documento:

PTX ISA 1.1

programas PTX se convierten al momento de la instalación para el conjunto de instrucciones hardware de destino.

+0

Cómo obtener y modificar PTX: http://stackoverflow.com/questions/4660974/how-to-create-or-manipulate-gpu-assembler/43304961 # 43304961 –

2

Véase: Guía de programación CUDA versión 3.0

La capacidad de cómputo de un dispositivo se define por un número de revisión mayor y un número revisión menor.

Los dispositivos con el mismo número de revisión principal tienen la misma arquitectura central. El número de revisión principal de de dispositivos basado en la arquitectura de Fermi es 2. Los dispositivos anteriores son todos de capacidad informática 1.x (Su número de revisión principal es 1).

El número de revisión menor corresponde a una mejora incremental de la arquitectura del núcleo , que posiblemente incluye nuevas características.

Apéndice A listas de todos los dispositivos compatibles con CUDA junto con su capacidad de cálculo. El Apéndice G proporciona las especificaciones técnicas de cada capacidad de cálculo.

0

AMD Graphics Core Next (GCN)

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

La primera generación se llama "Islas del Sur".

la página wiki enlaces a las especificaciones de AMD que documentan la ISA, por ejemplo: http://developer.amd.com/wordpress/media/2012/12/AMD_Southern_Islands_Instruction_Set_Architecture.pdf

Hay incluso una aplicación RTL abierto llamado MIAOW https://github.com/VerticalResearchGroup/miaow, aunque es probable que infrinja alguna propiedad intelectual, que AMD simplemente ha optado por tolerado en silencio ahora (source).

SPIR-V

https://en.wikipedia.org/wiki/Standard_Portable_Intermediate_Representation es un lenguaje intermedio estándar Krhonos.

Es probable que esté diseñado para ser similar a las actuales ISA de la GPU, por lo que será más implementable y tendrá una mejor adopción, por lo que debería dar una buena idea de las ISA reales de la GPU.

Y si este estándar no funciona, como parece ser el caso debido a la adopción en Vulkan y OpenCL 2.1, es probable que las implementaciones futuras estén diseñadas para implementarse para lograr un mejor rendimiento.

Cuestiones relacionadas