Una de las tecnologías que NVIDIA presento junto a la última generación de las tarjetas gráficas GeForce fue RTX IO, que estará disponible para las gamas 20×0 y 30×0 de NVIDIA. Gracias a esta tecnología las tarjetas gráficas de estas gamas de NVIDIA pueden acceder al SSD conectado al PCI Express como si fuese memoria de la propia gráfica sin apenas participación de la CPU. ¿Cómo funciona?
El RTX IO permite el acceso al SSD por parte de la GPU independiente de cuál sea la arquitectura de la CPU que tengamos instalada en el sistema, ya que es la propia GPU la que se encarga de acceder a los datos del SSD, característica que antes no se encontraba implementada. Al menos en las GPU de NVIDIA, ya que una implementación menos avanzada la habíamos visto con el HBCC de AMD integrada en sus gráficas Vega.
El RTX IO es la implementación a nivel de hardware del DirectStorage que Microsoft ha implementado en DirectX 12 Ultimate y que se trata de una API que permite que podamos acceder a un espacio de memoria más allá de lo que es la RAM de vídeo. Y por tanto se puedan pedir datos concretos a un disco SSD conectado a un puerto PCI Express.
¿Por qué con NVIDIA RTX IO no actúa la CPU en el proceso?
Para entender el motivo por el cual la CPU no actúa en el proceso hemos de entender como la GPU accede a la memoria del sistema. Toda GPU independientemente de su arquitectura puede acceder a dos pozos de memoria distintos:
- Su memoria local, que es la memoria incluida en la tarjeta gráfica (VRAM).
- La memoria del sistema (donde la CPU deja de sus datos).
Para acceder a la segunda utiliza una o varias unidades DMA que se comunican con la RAM del sistema a través del bus PCI Express hacía la memoria.
¿Recordáis los sistemas en SLI y Crossfire donde teníamos dos tarjetas en un mismo sistema? Pues el mecanismo para comunicarse con un SSD conectado a un puerto PCI Express sería exactamente el mismo.
El motivo de ello es que pese a que tenemos diferentes entradas PCIe en el PC, a nivel del controlador de E/S (el Southbridge) todas se concentran en el mismo controlador y esto permite que todos los dispositivos conectados a los puertos PCI Express puedan enviarse datos entre sí, lo que entre otras cosas incluyen el SSD (si se encuentra conectado al mismo controlador PCIe).
El SSD como extensión de la memoria de la GPU
La GPU a la hora de acceder al SSD lo trata como si fuese memoria RAM, por lo que en cada instrucción con acceso a RAM hace una petición a la dirección de memoria concreta donde se encuentra el dato de manera directa. A través de una serie de mecanismos completamente transparentes, cuando se pide un dato que está en el SSD y no en la memoria se busca el dato en el SSD y se copia directamente en una parte de la RAM que se utiliza como caché para el SSD.
Esto permite tener virtualmente una gran cantidad de memoria disponible al sistema e ir más allá de los límites de la VRAM para acceder a ciertos datos. Solo se necesita que la GPU los pida de antemano para que sean copiados en la RAM.
Por ejemplo, en un juego de mundo abierto, si nos acercamos a una nueva zona entonces la memoria puede eliminar las texturas y demás datos que ya no son necesarios de la RAM y cargar de nuevo desde el SSD. Por ejemplo, la demo del Unreal Engine presentada hace unos meses tenía un pozo de «solo» 768?MB para copiar datos desde el SSD hacia la RAM de la gráfica.
Descompresión de datos en tiempo real con una CPU modesta
Una de las cosas que trae consigo RTX IO y que se encuentra desde las RTX 20×0 es una unidad de descompresión de datos a tiempo real.
Dicha unidad toma los datos comprimidos como entrada desde el SSD, realiza la descompresión al vuelo y envía los datos ya descomprimidos a la memoria de la gráfica.
La unidad tiene una velocidad de descompresión de los datos que para igualarla utilizando la CPU, que para realizar la misma tarea en concreto a la misma velocidad que el descompresor del RTX IO, requeriría una gran cantidad de núcleos.
Con esto, los de Huang se aseguran un mejor rendimiento gracias a su tecnología NVIDIA RTX IO, que conseguirá paliar el GAP de rendimiento entre CPUs muy potentes y CPUs mucho más modestas.
Fuente: hardzone.es/tutoriales/rendimiento/nvidia-rtx-io/