# Tesla (microarquitectura)

Tesla es el nombre en clave de una microarquitectura GPU desarrollada por Nvidia y lanzada en 2006 como sucesora de la microarquitectura Curie. Lleva el nombre del pionero ingeniero eléctrico Nikola Tesla. Como la primera microarquitectura de Nvidia en implementar sombreadores unificados, se usó con Serie GeForce 8, Serie GeForce 9, Serie GeForce 100, Serie GeForce 200 y Serie GeForce 300 de GPU fabricadas colectivamente en 90 nm, 80 nm, 65 nm, 55 nm y 40 nm. También estuvo en la GeForce 405 y en los módulos de computación Quadro FX, Quadro x000, serie Quadro NVS y Nvidia Tesla.
Tesla reemplazó las antiguas microarquitecturas de tubería fija, representadas en el momento de la presentación por la serie GeForce 7. Compitió directamente con la primera microarquitectura de sombreado unificado de AMD llamada TeraScale, un desarrollo del trabajo de ATI en Xbox 360 que usaba un diseño similar. Tesla fue seguido por Fermi.

## Descripción general

Tesla es la primera microarquitectura de Nvidia que implementa el modelo de sombreado unificado. El controlador es compatible con la arquitectura Direct3D 10 Shader Model 4.0 / OpenGL 2.1 (los controladores posteriores son compatibles con OpenGL 3.3). El diseño es un cambio importante para NVIDIA en la funcionalidad y capacidad de GPU, el cambio más obvio es el cambio de unidades funcionales separadas (sombreadores de píxeles, sombreadores de vértices) dentro de las GPU anteriores a una colección homogénea de procesadores universales de punto flotante (llamados "procesadores de flujo") que pueden realizar un conjunto más universal de tareas.
La arquitectura de sombreado unificado de GeForce 8 consta de varios procesadores de flujo (SP). A diferencia del enfoque de procesamiento vectorial adoptado con las unidades de sombreado más antiguas, cada SP es escalar y, por lo tanto, solo puede operar en un componente a la vez. Esto los hace menos complejos de construir sin dejar de ser bastante flexibles y universales. Las unidades de sombreado escalar también tienen la ventaja de ser más eficientes en varios casos en comparación con las unidades de sombreado de vector de la generación anterior que se basan en una combinación de instrucciones ideal y en el orden para alcanzar el rendimiento máximo. El menor rendimiento máximo de estos procesadores escalares se compensa con la eficiencia y al ejecutarlos a una alta velocidad de reloj (lo que es posible gracias a su simplicidad). GeForce 8 ejecuta las diversas partes de su núcleo a diferentes velocidades de reloj (dominios de reloj), similar al funcionamiento de las GPU de la serie GeForce 7 anteriores. Por ejemplo, los procesadores de flujo de GeForce 8800 GTX funcionan a una frecuencia de reloj de 1,35 GHz mientras el resto del chip funciona a 575 MHz.
GeForce 8 realiza un filtrado de texturas significativamente mejor que sus predecesores que utilizaron varias optimizaciones y trucos visuales para acelerar el renderizado sin afectar la calidad del filtrado. La línea GeForce 8 presenta correctamente un algoritmo de filtrado anisotrópico independiente del ángulo junto con un filtrado de textura trilineal completo. G80, aunque no sus hermanos más pequeños, está equipado con mucha más capacidad aritmética de filtrado de texturas que la serie GeForce 7. Esto permite un filtrado de alta calidad con un rendimiento mucho menor que antes.
NVIDIA también ha introducido nuevos métodos de suavizado de bordes de polígonos, incluida la capacidad de los ROP de la GPU para realizar tanto el suavizado de múltiples muestras (MSAA) como la iluminación HDR al mismo tiempo, corrigiendo varias limitaciones de generaciones anteriores. GeForce 8 puede realizar MSAA con formatos de textura FP16 y FP32. GeForce 8 admite renderizado HDR de 128 bits, un aumento con respecto al soporte de 64 bits de las tarjetas anteriores. La nueva tecnología anti-aliasing del chip, llamada muestreo de cobertura AA (CSAA), utiliza información de Z, color y cobertura para determinar el color final del píxel. Esta técnica de optimización del color permite que 16X CSAA se vea nítido y nítido.

## Rendimiento

La potencia de procesamiento de precisión simple teórica declarada para las tarjetas basadas en Tesla que se proporciona en FLOPS puede ser difícil de alcanzar en las cargas de trabajo del mundo real.
En G80/G90/GT200, cada Streaming Multiprocessor (SM) contiene 8 Shader Processors (SP, Unified Shader o CUDA Core) y 2 Unidades de funciones especiales (SFU). Cada SP puede realizar hasta dos operaciones de precisión simple por reloj: 1 Multiplicar y 1 Sumar, usando una sola instrucción MAD . Cada SFU puede cumplir hasta cuatro operaciones por reloj: cuatro instrucciones MUL (Multiply). Entonces, un SM como un todo puede ejecutar 8 MAD (16 operaciones) y 8 MUL (8 operaciones) por reloj, o 24 operaciones por reloj, que es (hablando en términos relativos) 3 veces la cantidad de SP. Por lo tanto, para calcular el rendimiento teórico de MAD+MUL de doble emisión en operaciones de coma flotante por segundo [FLOPS$_{sp+sfu}$, GFLOPS] de una tarjeta gráfica con recuento de SP [n] y frecuencia de sombreado [f, GHz], la fórmula es: FLOPS$_{sp+sfu}$ = 3 × n × f.
Sin embargo, aprovechar el rendimiento de dos problemas como MAD+MUL es problemático:
* La emisión dual de MUL no está disponible en modo gráfico en G80/G90, aunque se mejoró mucho en GT200.
* No todas las combinaciones de instrucciones como MAD+MUL se pueden ejecutar en paralelo en SP y SFU, porque SFU es bastante especializado ya que solo puede manejar un subconjunto específico de instrucciones: multiplicación de punto flotante de 32 bits, funciones trascendentales, interpolación para parámetro mezcla, recíproco, raíz cuadrada recíproca, seno, coseno, etc.
* La SFU podría estar ocupada durante muchos ciclos al ejecutar estas instrucciones, en cuyo caso no está disponible para instrucciones MUL de emisión dual.
Por estas razones, para estimar el rendimiento de las cargas de trabajo del mundo real, puede ser más útil ignorar la SFU y suponer solo 1 MAD (2 operaciones) por SP por ciclo. En este caso la fórmula para calcular el rendimiento teórico en operaciones de coma flotante por segundo se convierte en: FLOPS$_{sp}$ = 2 × n × f.
La potencia teórica de procesamiento de doble precisión de una GPU Tesla es 1/8 del rendimiento de precisión simple en GT200; no hay soporte de doble precisión en G8x y G9x.

## Descompresión/compresión de video
### NVENC

NVENC solo se introdujo en chips posteriores.

## Chips

* G80
* G84
* G86
* G92
* G92B
* G94
* G94B
* G96
* G96B
* G96C
* G98
* C77
* C78
* C79
* C7A
* C7A-ION
* ION
* GT200
* GT200B
* GT215
* GT216
* GT218
* C87
* C89