Kepler (microarquitectura)

microarquitectura GPU diseñada por Nvidia

Kepler es el nombre en clave de una microarquitectura de GPU desarrollada por Nvidia, presentada por primera vez en tiendas minoristas en abril de 2012,[1]​ como sucesora de la microarquitectura Fermi . Kepler fue la primera microarquitectura de Nvidia que se centró en la eficiencia energética. La mayoría de las GPU de la serie GeForce 600, la mayoría de las series GeForce 700 y algunas GeForce 800M se basaron en Kepler, todas fabricadas en 28 nm. Kepler también encontró uso en el GK20A, el componente GPU del Tegra K1 SoC, así como en la serie Quadro Kxxx, el Quadro NVS 510 y los módulos informáticos Nvidia Tesla. A Kepler le siguió la microarquitectura Maxwell y se utilizó junto con Maxwell en las series GeForce 700 y GeForce 800M.

Kepler
Información
Tipo Microarquitectura
Desarrollador Nvidia
Fabricante TSMC 28 nm
Fecha de lanzamiento Abril de 2012 (12 años)
Retrato de Johannes Kepler, epónimo de arquitectura

La arquitectura lleva el nombre de Johannes Kepler, matemático alemán y figura clave en la revolución científica del siglo XVII.

Descripción general editar

 
Fotografía de una GPU GK110 A1, encontrada dentro de las tarjetas GeForce GTX Titan

Mientras que el objetivo de la arquitectura anterior de Nvidia era un diseño centrado en aumentar el rendimiento en el cálculo y la teselación, con la arquitectura Kepler, Nvidia se centró en la eficiencia, la programabilidad y el rendimiento.[2][3]​ El objetivo de eficiencia se logró mediante el uso de un reloj de GPU unificado, una programación de instrucción estática simplificada y un mayor énfasis en el rendimiento por vatio.[4]​ Al abandonar el reloj de sombreado que se encuentra en sus diseños de GPU anteriores, aumenta la eficiencia, aunque requiere núcleos adicionales para lograr niveles más altos de rendimiento. Esto no solo se debe a que los núcleos son más amigables con la energía (dos núcleos Kepler usan el 90 % de la energía de un núcleo Fermi, según los números de Nvidia), sino que también el cambio a un esquema de reloj de GPU unificado ofrece una reducción del 50 % en el consumo de energía en esa área.[5]

El objetivo de la programabilidad se logró con Hyper-Q de Kepler, el paralelismo dinámico y varias funciones nuevas de Compute Capabilities 3.x. Con él, se logró una mayor utilización de la GPU y una administración de código simplificada con las GPU GK, lo que permitió una mayor flexibilidad en la programación de las GPU Kepler.[6]

Finalmente, con el objetivo de rendimiento, los recursos de ejecución adicionales (más núcleos CUDA, registros y caché) y con la capacidad de Kepler para lograr una velocidad de reloj de memoria de 7 GHz, aumenta el rendimiento de Kepler en comparación con las GPU Nvidia anteriores.[5][7]

Características editar

La GPU de la serie GK contiene funciones tanto de la generación anterior de Fermi como de la nueva generación de Kepler. Los miembros basados en Kepler agregan las siguientes características estándar:

  • Interfaz PCI Express 3.0
  • DisplayPort 1.2
  • Salida de vídeo HDMI 1.4a 4K x 2K
  • Aceleración de video de hardware Purevideo VP5 (descodificación H.264 de hasta 4K x 2K)
  • Bloque de aceleración de codificación de hardware H.264 (NVENC)
  • Admite hasta 4 pantallas 2D independientes o 3 pantallas estereoscópicas/3D (NV Surround)
  • Multiprocesador de transmisión de próxima generación (SMX)
  • Polymorph-Engine 2.0
  • Programador de instrucciones simplificado
  • Texturas sin encuadernación
  • Capacidad de cómputo CUDA 3.0 a 3.5
  • GPU Boost (Actualizado a 2.0 en GK110)
  • Soporte TXAA
  • Fabricado por TSMC en un proceso de 28 nm
  • Nuevas instrucciones aleatorias
  • Paralelismo Dinámico
  • Hyper-Q (reserva de funcionalidad MPI de Hyper-Q solo para Tesla)
  • Unidad de Gestión de Red
  • NVIDIA GPUDirect (Reserva de funcionalidad RDMA de GPU Direct solo para Tesla)

Multiprocesador de transmisión de próxima generación (SMX) editar

La arquitectura Kepler emplea una nueva arquitectura de multiprocesador de transmisión denominada "SMX". Los SMX son la razón de la eficiencia energética de Kepler, ya que toda la GPU utiliza una única velocidad de reloj unificada.[5]​ Aunque el uso de SMX de un único reloj unificado aumenta la eficiencia energética debido al hecho de que varios núcleos Kepler CUDA de reloj inferior consumen un 90 % menos de energía que varios núcleos Fermi CUDA de reloj superior, se necesitan unidades de procesamiento adicionales para ejecutar un warp completo por ciclo. La duplicación de 16 a 32 por matriz CUDA resuelve el problema de ejecución warp, el front-end SMX también se duplica con los programadores warp, la unidad de despacho y el archivo de registro se duplicó a 64 000 entradas para alimentar las unidades de ejecución adicionales. Con el riesgo de inflar el área del troquel, los motores SMX PolyMorph se han mejorado a 2.0 en lugar de duplicarse junto con las unidades de ejecución, lo que le permite estimular el polígono. en ciclos más cortos. Hay 192 sombreadores por SMX.[8]​ También se utilizan núcleos FP64 CUDA dedicados, ya que todos los núcleos Kepler CUDA no son compatibles con FP64 para ahorrar espacio en el troquel. Con la mejora que hizo Nvidia en el SMX, los resultados incluyen un aumento en el rendimiento y la eficiencia de la GPU. Con GK110, la caché de texturas de 48 KB está desbloqueada para cargas de trabajo informáticas. En la carga de trabajo informática, la caché de texturas se convierte en una caché de datos de solo lectura, que se especializa en cargas de trabajo de acceso a la memoria no alineadas. Además, se agregaron capacidades de detección de errores para que sea más seguro para las cargas de trabajo que dependen de ECC. El número de registros por subproceso también se duplica en GK110 con 255 registros por subproceso.

Programador de instrucciones simplificado editar

Se logró una reducción adicional del espacio en el troquel y un ahorro de energía mediante la eliminación de un bloque de hardware complejo que manejaba la prevención de riesgos de datos.[3][5][9][10]

GPU Boost editar

GPU Boost es una nueva función que es más o menos análoga a la aceleración turbo de una CPU. Siempre se garantiza que la GPU funcione a una velocidad de reloj mínima, denominada "reloj base". Esta velocidad de reloj se establece en el nivel que garantizará que la GPU se mantenga dentro de las especificaciones TDP, incluso con cargas máximas.[3]​ Sin embargo, cuando las cargas son más bajas, hay espacio para aumentar la velocidad del reloj sin exceder el TDP. En estos escenarios, GPU Boost aumentará gradualmente la velocidad del reloj en pasos, hasta que la GPU alcance un objetivo de potencia predefinido (que es 170 W por defecto).[5]​ Al adoptar este enfoque, la GPU aumentará o disminuirá su reloj dinámicamente, de modo que proporcione la máxima cantidad de velocidad posible mientras se mantiene dentro de las especificaciones de TDP.

El objetivo de potencia, así como el tamaño de los pasos de aumento del reloj que tomará la GPU, se pueden ajustar a través de utilidades de terceros y proporcionan un medio para hacer overclocking de las tarjetas basadas en Kepler.[3]

Soporte de Microsoft Direct3D editar

Las GPU Nvidia Fermi y Kepler de la serie GeForce 600 son compatibles con la especificación Direct3D 11.0. Nvidia declaró originalmente que la arquitectura Kepler tiene compatibilidad total con DirectX 11.1, que incluye la ruta Direct3D 11.1.[11]​ Sin embargo, las siguientes funciones de Direct3D 11.1 de "interfaz de usuario moderna" no son compatibles:[12][13]

  • Rasterización independiente del destino (solo representación 2D).
  • Rasterización 16xMSAA (solo representación 2D).
  • Modo de representación de línea ortogonal.
  • UAV (Vista de acceso desordenado) en etapas sin sombreador de píxeles.

De acuerdo con la definición de Microsoft, el nivel de función 11_1 de Direct3D debe estar completo; de lo contrario, la ruta Direct3D 11.1 no se puede ejecutar.[14]​ Las funciones Direct3D integradas de la arquitectura Kepler son las mismas que las de la arquitectura Fermi de la serie GeForce 400.[13]

Siguiente Soporte de Microsoft Direct3D editar

Las GPU NVIDIA Kepler de la serie GeForce 600/700 son compatibles con el nivel de función 11_0 de Direct3D 12.[15]

Soporte TXAA editar

Exclusivo de las GPU Kepler, TXAA es un nuevo método anti-aliasing de Nvidia que está diseñado para su implementación directa en motores de juegos. TXAA se basa en la técnica MSAA y filtros de resolución personalizados. Está diseñado para abordar un problema clave en los juegos conocido como shimmering o temporal aliasing. TXAA resuelve eso suavizando la escena en movimiento, asegurándose de que cualquier escena del juego se elimine de cualquier alias y brillo.[3]

Instrucciones aleatorias editar

En un nivel bajo, GK110 ve instrucciones y operaciones adicionales para mejorar aún más el rendimiento. Las nuevas instrucciones de reproducción aleatoria permiten que los subprocesos dentro de un warp compartan datos sin volver a la memoria, lo que hace que el proceso sea mucho más rápido que el método anterior de cargar/compartir/almacenar. Las operaciones atómicas también se revisan, acelerando la velocidad de ejecución de las operaciones atómicas y agregando algunas operaciones FP64 que anteriormente solo estaban disponibles para datos FP32.[9]

Hiper-Q editar

Hyper-Q amplía las colas de trabajo del hardware GK110 de 1 a 32. La importancia de esto es que tener una sola cola de trabajo significaba que Fermi podía estar infraocupado a veces, ya que no había suficiente trabajo en esa cola para llenar cada SM. Al tener 32 colas de trabajo, GK110 puede, en muchos escenarios, lograr una mayor utilización al poder poner diferentes flujos de tareas en lo que de otro modo sería un SMX inactivo. La naturaleza simple de Hyper-Q se ve reforzada por el hecho de que se asigna fácilmente a MPI, una interfaz de paso de mensajes común que se usa con frecuencia en HPC. Como los algoritmos heredados basados en MPI que se diseñaron originalmente para sistemas de CPU múltiples que se vieron obstaculizados por dependencias falsas, ahora tienen una solución. Al aumentar la cantidad de trabajos de MPI, es posible utilizar Hyper-Q en estos algoritmos para mejorar la eficiencia sin cambiar el código en sí.[9]

Paralelismo Dinámico editar

La capacidad de paralelismo dinámico es para que los núcleos puedan enviar otros núcleos. Con Fermi, solo la CPU podía enviar un kernel, lo que genera cierta sobrecarga al tener que comunicarse con la CPU. Al dar a los núcleos la capacidad de enviar sus propios núcleos secundarios, GK110 puede ahorrar tiempo al no tener que volver a la CPU y, en el proceso, liberar la CPU para trabajar en otras tareas.[9]

Unidad de Gestión de Red editar

Habilitar el paralelismo dinámico requiere un nuevo sistema de gestión de red y control de despacho. La nueva Unidad de Gestión de Redes (GMU) gestiona y prioriza las redes a ejecutar. La GMU puede pausar el envío de nuevos grids y poner en cola los grids suspendidos y pendientes hasta que estén listos para ejecutarse, lo que brinda la flexibilidad para habilitar tiempos de ejecución potentes, como el paralelismo dinámico. El distribuidor de trabajo CUDA en Kepler tiene redes que están listas para despachar y puede despachar 32 redes activas, que es el doble de la capacidad del Fermi CWD. El Kepler CWD se comunica con la GMU a través de un enlace bidireccional que permite que la GMU pause el envío de nuevas redes y retenga las redes pendientes y suspendidas hasta que se necesiten. La GMU también tiene una conexión directa con las unidades Kepler SMX para permitir que las redes que lanzan trabajo adicional en la GPU a través del paralelismo dinámico envíen el nuevo trabajo de regreso a la GMU para que sea priorizado y enviado. Si el kernel que envió la carga de trabajo adicional se detiene, la GMU lo mantendrá inactivo hasta que se complete el trabajo dependiente.[10]

NVIDIA GPUDirect editar

NVIDIA GPUDirect es una capacidad que permite que las GPU dentro de una sola computadora, o las GPU en diferentes servidores ubicados en una red, intercambien datos directamente sin necesidad de ir a la CPU o la memoria del sistema. La función RDMA en GPUDirect permite que dispositivos de terceros, como SSD, NIC y adaptadores IB, accedan directamente a la memoria en varias GPU dentro del mismo sistema, lo que reduce significativamente la latencia del envío y recepción de mensajes MPI hacia/desde la memoria GPU.[16]​ También reduce las demandas de ancho de banda de la memoria del sistema y libera los motores GPU DMA para que los utilicen otras tareas de CUDA. Kepler GK110 también es compatible con otras funciones de GPUDirect, incluidas Peer-to-Peer y GPUDirect for Video.

Descompresión/compresión de video editar

NVDEC editar

NVENC editar

NVENC es la codificación de función fija de eficiencia energética de Nvidia que puede tomar códecs, decodificar, preprocesar y codificar contenido basado en H.264. Los formatos de entrada de la especificación NVENC están limitados a la salida H.264. Pero aun así, NVENC, a través de su formato limitado, puede admitir una codificación de hasta 4096x4096.[17]

Al igual que Quick Sync de Intel, NVENC actualmente está expuesto a través de una API patentada, aunque Nvidia tiene planes para proporcionar el uso de NVENC a través de CUDA.[17]

Rendimiento editar

La potencia teórica de procesamiento de precisión simple de una GPU Kepler en GFLOPS se calcula como 2 (operaciones por instrucción FMA por núcleo CUDA por ciclo) × número de núcleos CUDA × velocidad de reloj del núcleo (en GHz). Tenga en cuenta que, al igual que la generación anterior de Fermi, Kepler no puede beneficiarse de una mayor potencia de procesamiento mediante la emisión dual de MAD+MUL como lo hizo Tesla.

La potencia teórica de procesamiento de doble precisión de una GPU Kepler GK110/210 es 1/3 de su rendimiento de precisión simple. Sin embargo, esta potencia de procesamiento de doble precisión solo está disponible en las tarjetas profesionales Quadro, Tesla y GeForce de la marca TITAN de gama alta, mientras que los controladores para las tarjetas GeForce de consumo limitan el rendimiento a 1/24 del rendimiento de precisión simple.[18]​ Los chips GK10x de menor rendimiento tienen un límite similar de 1/24 del rendimiento de precisión simple.[19]

Chips Kepler editar

  • GK104
  • GK106
  • GK107
  • GK110
  • GK208
  • GK210
  • GK20A (Tegra K1)

Véase también editar

Referencias editar

  1. Mujtaba, Hassan (18 de febrero de 2012). «NVIDIA Expected to launch Eight New 28nm Kepler GPU's in April 2012». 
  2. «Inside Kepler». Consultado el 19 de septiembre de 2015. 
  3. a b c d e «Introducing The GeForce GTX 680 GPU». Nvidia. 22 de marzo de 2012. Consultado el 19 de septiembre de 2015. 
  4. Nividia. «NVIDIA's Next Generation CUDATM Compute Architecture: Kepler TM GK110». www.nvidia.com. 
  5. a b c d e Smith, Ryan (22 de marzo de 2012). «NVIDIA GeForce GTX 680 Review: Retaking The Performance Crown». AnandTech. Consultado el 25 de noviembre de 2012. 
  6. «Efficiency Through Hyper-Q, Dynamic Parallelism, & More». Nvidia. 12 de noviembre de 2012. Consultado el 19 de septiembre de 2015. 
  7. «GeForce GTX 770 | Specifications | GeForce». www.nvidia.com. Consultado el 7 de junio de 2022. 
  8. «GeForce GTX 680 2 GB Review: Kepler Sends Tahiti On Vacation». Tom;s Hardware. 22 de marzo de 2012. Consultado el 19 de septiembre de 2015. 
  9. a b c d «NVIDIA Launches Tesla K20 & K20X: GK110 Arrives At Last». AnandTech. 12 de noviembre de 2012. Consultado el 19 de septiembre de 2015. 
  10. a b «NVIDIA Kepler GK110 Architecture Whitepaper». Consultado el 19 de septiembre de 2015. 
  11. «NVIDIA Launches First GeForce GPUs Based on Next-Generation Kepler Architecture». Nvidia. 22 de marzo de 2012. Archivado desde el original el 14 de junio de 2013. 
  12. Edward, James (22 de noviembre de 2012). «NVIDIA claims partially support DirectX 11.1». TechNews. Archivado desde el original el 28 de junio de 2015. Consultado el 19 de septiembre de 2015. 
  13. a b «Nvidia Doesn't Fully Support DirectX 11.1 with Kepler GPUs, But… (Web Archive Link)». BSN. Archivado desde el original el 29 de diciembre de 2012. 
  14. «D3D_FEATURE_LEVEL enumeration (Windows)». MSDN. Consultado el 19 de septiembre de 2015. 
  15. Henry Moreton (20 de marzo de 2014). «DirectX 12: A Major Stride for Gaming». Consultado el 19 de septiembre de 2015. 
  16. «NVIDIA GPUDirect». NVIDIA Developer (en inglés). 6 de octubre de 2015. Consultado el 5 de febrero de 2019. 
  17. a b Chris Angelini (22 de marzo de 2012). «Benchmark Results: NVEnc And MediaEspresso 6.5». Tom’s Hardware. Consultado el 19 de septiembre de 2015. 
  18. Angelini, Chris (7 de noviembre de 2013). «Nvidia GeForce GTX 780 Ti Review: GK110, Fully Unlocked». Tom's Hardware. p. 1. Consultado el 6 de diciembre de 2015. «El controlador de la tarjeta opera deliberadamente las unidades FP64 de GK110 a 1/8 de la frecuencia de reloj de la GPU. Cuando multiplica eso por la relación 3:1 de los núcleos CUDA de precisión simple a doble, obtiene una tasa de 1/24». 
  19. Smith, Ryan (13 de septiembre de 2012). «The NVIDIA GeForce GTX 660 Review: GK106 Fills Out The Kepler Family». AnandTech. p. 1. Consultado el 6 de diciembre de 2015.