Qué ocurre cuando una GPU escribe en memoria

Fuentes: What happens when a GPU writes memory

Este artículo recorre, paso a paso, el recorrido completo de una instrucción de almacenamiento (STG.E) dentro de una GPU NVIDIA, usando como ejemplo el mismo kernel de suma de vectores analizado en una publicación previa. El texto sigue la instrucción desde la salida del warp, en la unidad de almacenamiento (LSU), hasta su llegada a la caché L2, detallando cada parada intermedia: el coalescer, que agrupa los accesos de los 32 hilos en sectores de 32 bytes; la caché L1, que opera como write-through y deja pasar los datos sin retenerlos; la traducción de direcciones virtuales a físicas; y el crossbar, que envía la petición al slice de L2 responsable según la dirección física.

Una vez en el slice de L2 (16 vías, 1024 conjuntos), se explica cómo la línea se aloja en una entrada, se marca como dirty bajo la máscara de bytes correspondiente y se devuelve un acuse de recibo al SM. En este caso concreto, los datos nunca llegan a la DRAM porque el kernel siguiente los lee directamente desde la L2 hacia la memoria del host mediante cudaMemcpyDeviceToHost sobre PCIe.

La última parte aborda la «vida posterior» de la escritura: cómo la L2 decide qué líneas evictar mediante el valor de predicción de re-referencia (RRPV, con tres niveles) y el orden de uso, y cómo las líneas dirty pendientes de escritura se envían al controlador de memoria a través de un búfer FIFO de write-back. El artículo combina análisis de microcódigo SASS con experimentos propios para llenar los huecos que la documentación pública de NVIDIA no cubre.