stringtranslate.com

Kepler (microarquitectura)

Retrato de Johannes Kepler, epónimo de la arquitectura

Kepler es el nombre en código de una microarquitectura de GPU desarrollada por Nvidia , presentada por primera vez en el comercio minorista 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 de la serie GeForce 700 y algunas de la serie GeForce 800M se basaron en Kepler, todas fabricadas en 28 nm. Kepler se utilizó en el GK20A, el componente de GPU del SoC Tegra K1 , y en la serie Quadro Kxxx, la Quadro NVS 510 y los módulos informáticos Tesla .

A Kepler le siguió la microarquitectura Maxwell y se utilizó junto con Maxwell en las series GeForce 700 y GeForce 800M .

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

Imagen de una GPU GK110 A1, encontrada dentro de tarjetas GeForce GTX Titan

El objetivo de la arquitectura anterior de Nvidia era un diseño centrado en aumentar el rendimiento en computación y teselación. Con la arquitectura Kepler, Nvidia centró su atención 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 estática simplificada de instrucciones y un mayor énfasis en el rendimiento por vatio. [4] Al abandonar el reloj de sombreado que se encontraba en sus diseños de GPU anteriores, se 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 las cifras de Nvidia), sino también a que 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 programabilidad se logró con Hyper-Q, Dynamic Parallelism y múltiples funciones nuevas de Compute Capabilities 3.x de Kepler. Con esto, se logró una mayor utilización de la GPU y una gestión de código simplificada con las GPU GK, lo que permitió una mayor flexibilidad en la programación para las GPU Kepler. [6]

Finalmente, con el objetivo de rendimiento, recursos de ejecución adicionales (más núcleos CUDA, registros y caché) y con la capacidad de Kepler de 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

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

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

PCB y matriz GTX 780: una revisión posterior de Kepler con más similitudes con la GK110 que la 680 inicial.

Kepler emplea una nueva arquitectura de multiprocesador de transmisión en tiempo real llamada SMX. El número de núcleos de ejecución CUDA se incrementó de 32 por cada uno de los 16 SM a 192 por cada uno de los 8 SMX; el archivo de registros solo se duplicó por SMX a 65.536 x 32 bits para una relación general más baja; entre esto y otros compromisos, a pesar del aumento general de 3x en los núcleos CUDA y el aumento del reloj (en el 680 frente al Fermi 580), las ganancias de rendimiento reales en la mayoría de las operaciones fueron muy inferiores a 3x. Se utilizan núcleos CUDA FP64 dedicados en lugar de tratar dos núcleos FP32 como una sola unidad como se hacía anteriormente, y se incluyeron muy pocos en los modelos de consumo, lo que resultó en un cálculo FP64 de velocidad de 1/24 en comparación con FP32. [9]

En los modelos HPC, el GK110/210, el recuento de SMX se elevó a 13-15 según el producto, y se incluyeron más núcleos FP64 para llevar la relación de cómputo hasta 1/3 de FP32. En el GK110, el límite de registros por hilo se cuadriplicó sobre Fermi a 255, pero esto todavía solo permite que un hilo que usa la mitad de los registros se paralelice a 1/4 de cada SMX. El GK210 (lanzado al mismo tiempo) aumentó el límite de registros a 512 para mejorar el rendimiento en situaciones de alta presión de registros como esta. El caché de texturas, que los programadores ya habían estado usando para el cómputo como un búfer de solo lectura en generaciones anteriores, aumentó de tamaño y la ruta de datos se optimizó para un rendimiento más rápido cuando se usa este método. Todos los niveles de memoria, incluido el archivo de registros, también son ECC de un solo bit.

Otra característica notable es que mientras que a las GPU Fermi solo se podía acceder con un hilo de CPU a la vez, las GPU HPC Kepler agregaron soporte multihilo para que los procesadores con un alto número de núcleos pudieran abrir 32 conexiones y saturar más fácilmente la capacidad de cómputo. [10]

Programador de instrucciones simplificado

Se logró una reducción adicional del espacio de la matriz y un ahorro de energía al eliminar un bloque de hardware complejo que manejaba la prevención de riesgos de datos. [3] [5] [11] [12]

Mejora de GPU

GPU Boost es una nueva función que es análoga al turbo boosting 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 de TDP , incluso con cargas máximas. [3] Sin embargo, cuando las cargas son menores, hay margen para aumentar la velocidad de reloj sin superar el TDP. En estos escenarios, GPU Boost aumentará gradualmente la velocidad de reloj en pasos, hasta que la GPU alcance un objetivo de potencia predefinido de 170 W por defecto (en la tarjeta 680). [5] Al adoptar este enfoque, la GPU aumentará o disminuirá su reloj de forma dinámica, de modo que proporcione la máxima cantidad de velocidad posible sin exceder las especificaciones de TDP.

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

Compatibilidad con Microsoft Direct3D

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 es totalmente compatible con DirectX 11.1, lo que incluye la ruta Direct3D 11.1. [13] Sin embargo, las siguientes funciones de Direct3D 11.1 de la "Interfaz de usuario moderna" no son compatibles: [14] [15]

Según la definición de Microsoft, el nivel de característica Direct3D 11_1 debe estar completo, de lo contrario no se puede ejecutar la ruta Direct3D 11.1. [16] Las características Direct3D integradas de la arquitectura Kepler son las mismas que las de la arquitectura Fermi de la serie GeForce 400. [15]

Próxima compatibilidad con Microsoft Direct3D

Las GPU Nvidia Kepler de la serie GeForce 600/700 admiten el nivel de función 11_0 de Direct3D 12. [17]

Soporte de TXAA

Exclusivo de las GPU Kepler, TXAA es un nuevo método de 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 aliasing temporal . TXAA lo resuelve suavizando la escena en movimiento, asegurándose de que cualquier escena del juego se limpie de cualquier aliasing y shimmering. [3]

Instrucciones de reproducción aleatoria

El GK110 tenía una pequeña cantidad de instrucciones añadidas para mejorar aún más el rendimiento. Las nuevas instrucciones de mezcla permiten que los hilos dentro de un warp compartan datos entre ellos con una instrucción que completa las operaciones normales de almacenamiento y carga que antes requerían dos accesos a la memoria local dentro de una instrucción, haciendo que el proceso fuera alrededor de un 6% más rápido que usando el almacenamiento de datos local. Las operaciones atómicas también se mejoraron, con aumentos de 9x en la velocidad para algunas instrucciones y la adición de más operaciones atómicas de 64 bits, a saber, min, max, and, or y xor. [11]

Hiper-Q

Hyper-Q expande 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 subocupado en ocasiones, 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 refuerza aún más 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 múltiples CPU que se vieron obstaculizados por falsas dependencias ahora tienen una solución. Al aumentar la cantidad de trabajos MPI, es posible utilizar Hyper-Q en estos algoritmos para mejorar la eficiencia, todo sin cambiar el código en sí. [11]

Paralelismo dinámico

La capacidad de paralelismo dinámico permite que los núcleos puedan enviar a otros núcleos. Con Fermi, solo la CPU podía enviar a un núcleo, lo que implicaba una cierta cantidad de sobrecarga al tener que comunicarse con la CPU. Al darle a los núcleos la capacidad de enviar a 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 que trabaje en otras tareas. [11]

Unidad de Gestión de Red

Para habilitar el paralelismo dinámico se necesita un nuevo sistema de control de despacho y administración de la red. La nueva unidad de administración de la red (GMU) administra y prioriza las redes que se van a ejecutar. La GMU puede pausar el despacho de nuevas redes y poner en cola las redes pendientes y suspendidas hasta que estén listas para ejecutarse, lo que proporciona la flexibilidad necesaria para habilitar tiempos de ejecución potentes, como el paralelismo dinámico. El distribuidor de trabajo CUDA en Kepler contiene redes que están listas para ser despachadas y puede despachar 32 redes activas, lo que duplica la capacidad del CWD de Fermi. El CWD de Kepler se comunica con la GMU a través de un enlace bidireccional que permite a la GMU pausar el despacho de nuevas redes y mantener las redes pendientes y suspendidas hasta que sean necesarias. La GMU también tiene una conexión directa con las unidades SMX de Kepler 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 vuelta a la GMU para que se priorice y despache. Si el núcleo que envió la carga de trabajo adicional se pausa, la GMU lo mantendrá inactivo hasta que se complete el trabajo dependiente. [12]

GPU Direct de Nvidia

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

Descompresión/compresión de vídeo

NVDEC

NVENC

NVENC es el codificador de función fija de bajo consumo de energía 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 aún así, NVENC, a través de su formato limitado, puede admitir una codificación de hasta 4096x4096. [19]

Al igual que QuickSync de Intel, NVENC está actualmente expuesto a través de una API propietaria, aunque Nvidia tiene planes de proporcionar el uso de NVENC a través de CUDA. [19]

Actuación

La potencia de procesamiento teórica 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 de procesamiento de doble precisión teórica 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 tarjetas GeForce profesionales Quadro , Tesla y de gama alta Titan , mientras que los controladores para tarjetas GeForce de consumo limitan el rendimiento a 1/24 del rendimiento de precisión simple. [20] Las matrices GK10x de menor rendimiento están limitadas de manera similar a 1/24 del rendimiento de precisión simple. [21]

Muere Kepler

Kepler

Kepler 2.0

Véase también

Referencias

  1. ^ Mujtaba, Hassan (18 de febrero de 2012). "Se espera que Nvidia lance ocho nuevas GPU Kepler de 28 nm en abril de 2012".
  2. ^ "Dentro de Kepler" (PDF) . Consultado el 19 de septiembre de 2015 .
  3. ^ abcde "Presentación de la GPU GeForce GTX 680". Nvidia . 22 de marzo de 2012 . Consultado el 19 de septiembre de 2015 .
  4. ^ "Arquitectura informática CUDA de próxima generación de Nvidia: Kepler TM GK110" (PDF) . Nvidia .
  5. ^ abcd Smith, Ryan (22 de marzo de 2012). "Revisión de la Nvidia GeForce GTX 680: recuperando la corona del rendimiento". AnandTech . Consultado el 25 de noviembre de 2012 .
  6. ^ "Eficiencia a través de Hyper-Q, paralelismo dinámico y más". Nvidia . 12 de noviembre de 2012 . Consultado el 19 de septiembre de 2015 .
  7. ^ "GeForce GTX 770 | Especificaciones | GeForce". Nvidia . Consultado el 7 de junio de 2022 .
  8. ^ "Información del dispositivo decodificador de GPU NVIDIA".
  9. ^ "Informe técnico sobre GeForce 680 (Kepler)" (PDF) . Nvidia . Consultado el 22 de marzo de 2024 .
  10. ^ "Informe técnico sobre la arquitectura Nvidia Kepler GK210/110" (PDF) . Nvidia . Consultado el 22 de marzo de 2024 .
  11. ^ abcd Smith, Ryan (12 de noviembre de 2012). "Nvidia lanza Tesla K20 y K20X: llega por fin la GK110". AnandTech . Consultado el 19 de septiembre de 2015 .
  12. ^ ab "Informe técnico sobre la arquitectura Nvidia Kepler GK110" (PDF) . Nvidia . Consultado el 19 de septiembre de 2015 .
  13. ^ "Nvidia lanza las primeras GPU GeForce basadas en la arquitectura Kepler de próxima generación". Nvidia . 22 de marzo de 2012. Archivado desde el original el 14 de junio de 2013.
  14. ^ Edward, James (22 de noviembre de 2012). «Nvidia afirma que es compatible parcialmente con DirectX 11.1». TechNews . Archivado desde el original el 28 de junio de 2015. Consultado el 19 de septiembre de 2015 .
  15. ^ ab "Nvidia no es totalmente compatible con DirectX 11.1 con GPU Kepler, pero… (enlace al archivo web)". BSN. Archivado desde el original el 29 de diciembre de 2012.
  16. ^ "Enumeración D3D_FEATURE_LEVEL (Windows)". MSDN . Consultado el 19 de septiembre de 2015 .
  17. ^ Moreton, Henry (20 de marzo de 2014). "DirectX 12: un gran paso adelante para los juegos". Nvidia . Consultado el 19 de septiembre de 2015 .
  18. ^ "Nvidia GPUDirect". Nvidia Developer . 6 de octubre de 2015 . Consultado el 5 de febrero de 2019 .
  19. ^ ab Angelini, Chris (22 de marzo de 2012). "Resultados de evaluación comparativa: NVEnc y MediaEspresso 6.5". Tom's Hardware . Consultado el 19 de septiembre de 2015 .
  20. ^ Angelini, Chris (7 de noviembre de 2013). "Revisión de la Nvidia GeForce GTX 780 Ti: GK110, totalmente desbloqueada". Tom's Hardware . p. 1 . Consultado el 6 de diciembre de 2015 . El controlador de la tarjeta opera deliberadamente las unidades FP64 de la GK110 a 1/8 de la velocidad de reloj de la GPU. Cuando multiplicas eso por la relación 3:1 de núcleos CUDA de precisión simple a doble, obtienes una velocidad de 1/24
  21. ^ Smith, Ryan (13 de septiembre de 2012). "Revisión de la Nvidia GeForce GTX 660: la GK106 completa la familia Kepler". AnandTech . p. 1 . Consultado el 6 de diciembre de 2015 .