# Pascal (microarquitectura)

Pascal es el nombre en clave de una microarquitectura GPU desarrollada por Nvidia, como sucesora de la arquitectura Maxwell. La arquitectura se introdujo por primera vez en abril de 2016 con el lanzamiento de Tesla P100 (GP100) el 5 de abril de 2016 y se usa principalmente en la serie GeForce 10, comenzando con GeForce GTX 1080 y GTX 1070 (ambas con GPU GP104), que fueron lanzados el 17 de mayo de 2016 y el 10 de junio de 2016 respectivamente. Pascal se fabricó utilizando el proceso FinFET de 16 nm de TSMC, y luego el proceso FinFET de Samsung de 14 nm.
La arquitectura lleva el nombre del matemático y físico francés del siglo XVII, Blaise Pascal.
En abril de 2019, Nvidia habilitó una implementación de software de DirectX Raytracing en tarjetas basadas en Pascal a partir de la GTX 1060 de 6 GB y en las tarjetas de la serie 16, una característica reservada a la serie RTX basada en Turing hasta ese momento.

## Detalles

En marzo de 2014, Nvidia anunció que la sucesora de Maxwell sería la microarquitectura Pascal; anunciado el 6 de mayo de 2016 y lanzado el 27 de mayo del mismo año. El Tesla P100 (chip GP100) tiene una versión diferente de la arquitectura Pascal en comparación con las GPU GTX (chip GP104). Las unidades de sombreado en GP104 tienen un diseño similar al de Maxwell.
Las mejoras arquitectónicas de la arquitectura GP100 incluyen lo siguiente:
* En Pascal, un SM (multiprocesador de transmisión) consta de entre 64 y 128 núcleos CUDA, dependiendo de si es GP100 o GP104. Maxwell empaquetó 128, Kepler 192, Fermi 32 y Tesla solo 8 núcleos CUDA en un SM; el GP100 SM se divide en dos bloques de procesamiento, cada uno con 32 núcleos CUDA de precisión simple, un búfer de instrucciones, un programador warp, 2 unidades de mapeo de texturas y 2 unidades de despacho.
* Capacidad de cómputo CUDA 6.0.
* Memoria de alto ancho de banda 2: algunas tarjetas cuentan con 16 GiB HBM2 en cuatro pilas con un bus total de 4096 bits con un ancho de banda de memoria de 720 GB/s.
* Memoria unificada: una arquitectura de memoria en la que la CPU y la GPU pueden acceder tanto a la memoria del sistema principal como a la memoria de la tarjeta gráfica con la ayuda de una tecnología llamada "Motor de migración de página".
* NVLink: un bus de gran ancho de banda entre la CPU y la GPU, y entre varias GPU. Permite velocidades de transferencia mucho más altas que las que se pueden lograr con PCI Express; se estima que proporcionará entre 80 y 200 GB/s.
* Las operaciones de punto flotante de 16 bits (FP16) (coloquialmente "media precisión") se pueden ejecutar al doble de la velocidad de las operaciones de punto flotante de 32 bits ("precisión simple") y las operaciones de punto flotante de 64 bits ( coloquialmente "doble precisión") ejecutado a la mitad de la velocidad de las operaciones de coma flotante de 32 bits.
* Más registros: el doble de registros por núcleo CUDA en comparación con Maxwell.
* Más memoria compartida.
* Sistema de programación de equilibrio de carga dinámico. Esto permite que el programador ajuste dinámicamente la cantidad de GPU asignada a varias tareas, lo que garantiza que la GPU permanezca saturada de trabajo, excepto cuando no haya más trabajo que pueda distribuirse de manera segura. Por lo tanto, Nvidia ha habilitado de forma segura la computación asíncrona en el controlador de Pascal.
* Preferencia a nivel de instrucción y de nivel de subproceso.
Las mejoras arquitectónicas de la arquitectura GP104 incluyen lo siguiente:
* Capacidad de cómputo CUDA 6.1.
* GDDR5X: nuevo estándar de memoria compatible con velocidades de datos de 10 Gbit/s, controlador de memoria actualizado.
* Multiproyección simultánea: generación de múltiples proyecciones de un solo flujo de geometría, a medida que ingresa al motor SMP desde las etapas de sombreado ascendentes.
* DisplayPort 1.4, HDMI 2.0b.
* Compresión de color Delta de cuarta generación.
* Interfaz SLI mejorada: interfaz SLI con mayor ancho de banda en comparación con las versiones anteriores.
* PureVideo Feature Set H decodificación de video de hardware HEVC Main10 (10 bits), Main12 (12 bits) y decodificación de hardware VP9.
* Compatibilidad con HDCP 2.2 para reproducción y transmisión de contenido 4K protegido por DRM (Maxwell GM200 y GM204 carecen de compatibilidad con HDCP 2.2, GM206 admite HDCP 2.2).
* Codificación de hardware NVENC HEVC Main10 de 10 bits.
* Impulso de GPU 3.0.
* Preferencia a nivel de instrucción. En las tareas de gráficos, el controlador restringe la prioridad al nivel de píxel, porque las tareas de píxeles generalmente finalizan rápidamente y los costos generales de hacer la prioridad a nivel de píxel son más bajos que la prioridad a nivel de instrucción (que es costosa). Las tareas de cómputo obtienen prioridad a nivel de subproceso o nivel de instrucción, porque pueden tardar más tiempo en finalizar y no hay garantías sobre cuándo finaliza una tarea de cómputo. Por lo tanto, el controlador permite la costosa prioridad de nivel de instrucción para estas tareas.

## Descripción general
### Grupo de procesadores de gráficos

Un chip se divide en clústeres de procesadores de gráficos (GPC). Para los chips GP104, un GPC abarca 5 SM.

### Streaming Multiprocesador "Pascal"

Un "multiprocesador de transmisión" corresponde a la unidad de cómputo de AMD. Un SMP abarca 128 ALU de precisión simple ("núcleos CUDA") en chips GP104 y 64 ALU de precisión simple en chips GP100.
Lo que AMD llama CU (unidad de cómputo) se puede comparar con lo que Nvidia llama SM (multiprocesador de transmisión). Si bien todas las versiones de CU constan de 64 procesadores de sombreado (es decir, 4 unidades vectoriales SIMD (cada una de 16 carriles de ancho) = 64), Nvidia (normalmente llamando a los procesadores de sombreado "núcleos CUDA") experimentó con números muy diferentes:
* En Tesla 1 SM combina 8 procesadores shader de precisión simple (FP32)
* En Fermi 1 SM combina 32 procesadores de sombreado de precisión simple (FP32)
* En Kepler 1 SM combina 192 procesadores shader de precisión simple (FP32) y también 64 unidades de doble precisión (FP64) (al menos las GPU GK110)
* En Maxwell 1 SM combina 128 procesadores de sombreado de precisión simple (FP32)
* De Pascal depende:
** En la GP100, 1 SM combina 64 procesadores de sombreado de precisión simple (FP32) y también 32 de precisión doble (FP64), lo que brinda una proporción de 2:1 de rendimiento de precisión simple a doble. El GP100 utiliza núcleos FP32 más flexibles que pueden procesar un número de precisión simple o dos de precisión media en un vector de dos elementos. Nvidia tiene la intención de abordar el cálculo de algoritmos relacionados con el aprendizaje profundo con esos.
** En el GP104, 1 SM combina 128 ALU de precisión simple, 4 ALU de precisión doble que proporcionan una relación de 32:1 y una ALU de precisión media que contiene un vector de dos flotadores de precisión media que pueden ejecutar la misma instrucción en ambos flotadores proporcionando una proporción de 64:1 si se usa la misma instrucción en ambos elementos.

### Polymorph-Engine 4.0

El Polymorph Engine versión 4.0 es la unidad responsable de Tessellation . Se corresponde funcionalmente con el procesador geométrico de AMD. Se ha movido del módulo de sombreado al TPC para permitir que un motor Polymorph alimente múltiples SM dentro del TPC.

### Chips

* GP100: el acelerador de GPU Nvidia Tesla P100 está dirigido a aplicaciones GPGPU como FP64 de cómputo de doble precisión y capacitación de aprendizaje profundo que utiliza FP16. Utiliza memoria HBM2. Quadro GP100 también utiliza la GPU GP100.
* GP102: esta GPU se utiliza en TITAN Xp, Titan X y GeForce GTX 1080 Ti. También se utiliza en Quadro P6000 y Tesla P40.
* GP104: Esta GPU se utiliza en las GeForce GTX 1070, GTX 1070 Ti y GTX 1080. La GTX 1070 tiene 15/20 y la GTX 1070 Ti tiene habilitados 19/20 de sus SM. Ambos están conectados a la memoria GDDR5, mientras que la GTX 1080 es un chip completo y está conectado a la memoria GDDR5X. También se utiliza en Quadro P5000, Quadro P4000 y Tesla P4.
* GP106: esta GPU se utiliza en la GeForce GTX 1060 con memoria GDDR5/GDDR5X. También se utiliza en la Quadro P2000.
* GP107: esta GPU se usa en GeForce GTX 1050 Ti y GeForce GTX 1050. También se utiliza en Quadro P1000, Quadro P600, Quadro P620 y Quadro P400.
* GP108: esta GPU se utiliza en GeForce GT 1010 y GeForce GT 1030.
En el chip GP104, un SM consta de 128 ALU de precisión simple ("núcleos CUDA"), en el GP100 de 64 ALU de precisión simple. Debido a la diferente organización de los chips, como el número de ALU de doble precisión, el rendimiento teórico de doble precisión de la GP100 es la mitad del rendimiento teórico de precisión simple; la relación es 1/32 para el chip GP104.
Tabla comparativa de algunos chips Kepler, Maxwell y Pascal :
| | GK104 | GK110 | GM204 (GTX 970) | GM204 (GTX 980) | GM200 | GP104 | GP100 |
| Caché de textura dedicado por SM | 48 KiB | N/A | N/A | N/A | N/A | N/A | N/A |
| Caché de textura (gráficos o computación) o datos de solo lectura (solo computación) por SM | N/A | 48 KiB | N/A | N/A | N/A | N/A | N/A |
| Memoria compartida seleccionable por el programador/particiones L1 por SM | 48 KiB de memoria compartida + 16 KiB de caché L1 (predeterminado) | 48 KiB de memoria compartida + 16 KiB de caché L1 (predeterminado) | N/A | N/A | N/A | N/A | N/A |
| Memoria compartida seleccionable por el programador/particiones L1 por SM | Memoria compartida de 32 KiB + caché L1 de 32 KiB | Memoria compartida de 32 KiB + caché L1 de 32 KiB | N/A | N/A | N/A | N/A | N/A |
| Memoria compartida seleccionable por el programador/particiones L1 por SM | 16 KiB de memoria compartida + 48 KiB de caché L1 | 16 KiB de memoria compartida + 48 KiB de caché L1 | N/A | N/A | N/A | N/A | N/A |
| Caché L1 unificado/caché de textura por SM | N/A | N/A | 48 KiB | 48 KiB | 48 KiB | 48 KiB | 24 kilobytes |
| Memoria compartida dedicada por SM | N/A | N/A | 96 KiB | 96 KiB | 96 KiB | 96 KiB | 64 KiB |
| Caché L2 por chip | 512 KiB | 1536 KiB | 1792 KiB | 2048 KiB | 3072 KiB | 2048 KiB | 4096 KiB |

## Rendimiento

La potencia de procesamiento de precisión simple teórica de una GPU Pascal en GFLOPS se calcula como 2 X (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).
La potencia teórica de procesamiento de doble precisión de una GPU Pascal es la mitad del rendimiento de precisión simple en Nvidia GP100 y 1/32 de Nvidia GP102, GP104, GP106, GP107 y GP108.
La potencia de procesamiento de precisión media teórica de una GPU Pascal es 2 veces mayor que el rendimiento de precisión simple en GP100 y 1/64 en GP104, GP106, GP107 y GP108.

## Sucesor

La arquitectura Pascal fue sucedida en 2017 por Volta en los mercados de HPC, computación en la nube y automóviles autónomos, y en 2018 por Turing en el mercado de consumo y empresarial.