¿qué hay dentro de un procesador gráfico?

2

Preámbulo

Debido a la naturaleza súper secreta de la GPU comercial, no encontré nada interesante todavía.
Lo mejor que puedo hacer es preguntarle eso a alguien que tenga más experiencia que yo (todos). Es una gran pregunta, espero que se ajuste a las reglas.
También porque la GPU no está directamente relacionada con esta red, pero hay muchas otras, así que lo intenté.
Debido a que cita procesamiento paralelo y porque las GPU más antiguas (de la consola retro y otras) utilizan arquitecturas muy diferentes de las modernas, esta pregunta es sobre las GPU recientes (las que soportan GPGPU) . Para semplificar la pregunta, piense en NVidia y AMD.

Pregunta

Mi idea de GPU es bastante confusa: sé que es una pieza particular de hardware, cuyos componentes principales son toneladas de núcleos que funcionan en paralelo, que se utilizan para elaborar imágenes o señales en general, y una cantidad bastante alta de RAM utilizada para almacenar búferes. hacer la elaboración más rápida
Demasiada "Wikipedia" para mí

Estas son algunas de mis tesis e información que obtuve (la sección de AYUDA dice compartir su investigación), no dude en comentarlas:

Punto 1: ¿Qué sucede cuando los datos se envían desde la CPU al entrar dentro de la GPU?

  1. No puede escribir programas de GPU en su propio ensamblaje : un programa escrito en, por ejemplo, Cuda es PTX , un lenguaje intermedio que es elaborado (¿compilado? ¿interpretado?) internamente por la GPU . Si hay un lenguaje interno, una especie de ensamblaje (¿tal vez un microcódigo como la arquitectura?), Es súper secreto
  2. No hay controladores oficiales de código abierto. ¿Quieres encontrar algo que invierta los controladores? Buena suerte . Pero hay una buena noticia: alguna GPU tiene un documento bastante bueno .

Punto 2: Canalización y shaders

¿Qué es un shader? Difícil de contestar. Pero alguien lo intentó . Sin embargo, el shader debe ser una pieza de software elaborada por la GPU para representar todas las bellas escenas en 3D. Hay más tipos de sombreadores, cada uno de ellos se elabora en un paso particular de la tubería de GPU.
Pero, ¿qué es esa canalización ? Parece ser una secuencia de pasos que va desde la entrada de entrada desde la CPU hasta el procesamiento en la salida. ¿DirectX y OpenGl deberían dar una gran importancia a esa implementación, pero cada modelo / familia tiene una implementación diferente? ¿Es eso un súper secreto o se comparte libremente con nosotros, la comunidad pobre? (¿O tal vez con NDA?)

Punto 3: Metaphore

Quiero evitar algo como "Esta pregunta es demasiado larga. Te odiamos. Pregunta cerrada"
Probablemente tengas razón, pero todavía intento guardar mi pregunta.

La forma más rápida de responder a esta pregunta es hacer un ejemplo: ¿puede la GPU parecerse a otra pieza de hardware? Tal vez uno no es conceptualmente sofisticado.
En mi opinión, se puede ver parcialmente como un FPGA debido a la ejecución paralela. Muchos núcleos = muchos IP = FPGA? Tal vez. Pero, obviamente, se trata de un hardware completamente diferente, mucho más flexible y adecuado para diferentes escenarios.

¿Puedes hacer otros ejemplos? Cualquier ayuda es realmente apreciada desde el fondo de mi hogar.
Si lo desea, también puede publicar cualquier lectura de libros de recursos que crea que esté relacionada con el tema. Me gusta mucho profundizar

    
pregunta incud

1 respuesta

3

1) No es completamente secreto: enlace

Probablemente no haya una documentación completa de la arquitectura y algunos detalles de la asignación de código de operación mnemotécnica > pueden estar ofuscados, pero tampoco son completamente invisibles. La parte invisible es el procesador de supervisión en la tarjeta que maneja las transferencias dentro y fuera de la memoria y programa los otros procesadores. Eso ejecutará una de las "burbujas binarias" cargadas por los controladores.

Generalmente, el fabricante desea desalentar las aplicaciones de bajo nivel porque se romperán si el fabricante cambia la arquitectura de la tarjeta. La compatibilidad es lo suficientemente mala como para que las personas no apunten a números específicos de modelos de hardware.

Se considera que los procesadores de sombreado son comparables a MMX u otros sistemas porque un flujo de control afecta a una serie de registros.

2) "Pipeline" es un concepto. Sí, está hecho de software como todo lo demás. La división exacta del trabajo entre la CPU del host y la (s) CPU (s) de gráficos varía, pero generalmente se configura para el procesamiento de la transmisión:

  • Representa la escena como un conjunto de triángulos, con varios atributos en el triángulo y el vértice
  • Pase cada vértice a un programa de sombreado de vértice (que se ejecuta en paralelo en las distintas unidades) para producir un vértice modificado
  • Pase los vértices a través de "rasterizar" para producir un flujo de "fragmentos" (ubicación de la pantalla + profundidad + otros atributos como la textura y las coordenadas de la textura)
  • Pase cada fragmento a través de un programa de sombreado, que puede escribir un valor de color y profundidad en el framebuffer
  • Opcionalmente, haz todo de nuevo otra vez con diferentes atributos (por ejemplo, representación de la plantilla de sombra)
  • Finalmente, transfiera todo el framebuffer al hardware de salida (transmite los píxeles desde la RAM). Debido al doble o triple almacenamiento en búfer, esto ocurrirá mientras se renderiza el siguiente fotograma.
respondido por el pjc50

Lea otras preguntas en las etiquetas