¿Qué es Microsoft DirectStorage y por qué necesita un SSD para usarlo?
Una de las novedades que traen consigo las consolas Xbox Series S|X es el haber dejado atrás el uso del disco duro como dispositivo de almacenamiento para centrarse en el uso de los SSD. No olvidemos que dichas consolas y la API DirectX para Windows están estrechamente relacionadas y es por ello que Microsoft no ha dudado en portar DirectStorage a Windows 11. Es por ello que os vamos a enseñar cómo funciona.
A día de hoy, casi todos los ordenadores que se venden en el mercado traen consigo un SSD conectado al puerto PCI Express como unidad de almacenamiento principal. Sin embargo, los juegos se siguen desarrollando teniendo en cuenta las limitaciones del disco duro. Claro está, que usar bien una unidad de estado sólido no se limita a mover los datos más rápidamente, pero para ello es necesaria una API que nos permita mover la información.
¿Qué es Microsoft DirectStorage?
Bajo el nombre de DirectStorage no hablamos de ninguna pieza de hardware, sino de una API dentro de DirectX 12 Ultimate para Windows 11, aunque también funciona en Windows 10. Su función es la de liberar a la CPU de la carga de tener que copiar los datos desde un SSD NVMe conectado al puerto PCI Express hacia la memoria de la tarjeta gráfica, haciendo que esta última sea la encargada de realizar dicha tarea.
¿Cómo funciona?
Lo que hace DirectStorage en cuanto a hardware es aprovecharse de las unidades DMA situadas como procesadores de apoyo dentro de la GPU. El trabajo principal de estas unidades es el de poder acceder a la RAM del sistema para poder leer o escribir datos en ella; sin embargo, se pueden usar unidades de este tipo para comunicarse con otro componente que se encuentre conectado al puerto PCI Express, como, por ejemplo, otra tarjeta gráfica, o cómo es el caso, un SSD NVMe.
Su funcionamiento es sencillo. DirectStorage se encarga de lo siguiente: hacer que los comandos para mover datos desde el SSD en el PCIe hacia la tarjeta gráfica, y viceversa, no sean llevados a cabo por la CPU, ya que antes han de pasar por la memoria RAM del sistema. Se trata de una característica heredada de Xbox Series S/X. Estas son consolas que no tienen una memoria física separada para RAM y VRAM. En cambio, en PC sí que existe dicha separación, pero al contrario que en los sistemas dedicados, los datos tendrán que pasar por la RAM del sistema.
Requisitos técnicos
Claro está que se trata de una función nueva que forma parte de DirectX 12 Ultimate y, por tanto, solo las tarjetas gráficas de NVIDIA a partir de la RTX 20, por lo que se encuentra soportada también en las RTX 30 y las nuevas RTX 40. En cambio, si eres usuario de AMD debes saber que necesitas una RX 6000 en adelante, las RX 5000 por desgracia no lo soportan.
Ya para terminar, si eres de los pocos usuarios de una Intel ARC, entonces, no tienes que preocuparte por si hay soporte o no. Cabe señalar de nuevo que estará disponible tanto para Windows 10 como para Windows 11, pero Microsoft asegura que DirectStorage funcionará mejor en este último.
Workload Decomposition, el secreto de DirectStorage
En realidad, la capacidad para comunicarse con el SSD NVMe por parte de la tarjeta gráfica sin intervención de la CPU recibe el nombre de Workload Decomposition. Se trata de un proceso que divide los trabajos que hace la CPU y algunos de ellos los asigna a un hardware más adecuado para ello. En el caso que nos ocupa es hacia la GPU.
Por lo que el trabajo realmente lo lleva a cabo el driver de la tarjeta gráfica a la hora de crear las listas de comandos que se envían en cada fotograma. Aunque en este caso esto funcionaría con la computación asíncrona que introdujeron en DirectX 12, lo cual son Compute Shaders funcionando de forma completamente independiente a la generación de gráficos haciendo empleo de las unidades DMA de la GPU.
Sin embargo, hemos de aclarar, que el funcionamiento es distinto en consolas y en PC. El motivo de ello es que en Xbox Series S|X estas contienen unidades especializadas bautizadas como Velocity Engine en su chip principal para realizar dicha tarea de forma automatizada, en cambio, en PC requiere algo de control manual por parte de los desarrolladores. Esto puede ser uno de los motivos por los cuales, excepto en Forspoken, no se le ha visto aplicado en otros juegos.
¿Qué beneficios aporta en los juegos para PC?
Aquí podríamos entrar en el error de repetir las ventajas que pueden otorgar los SSD de cara al diseño de los juegos. Sin embargo, dichas ventajas no vienen por el uso de DirectStorage y hemos de partir del hecho de que en consolas solo tenemos un pozo de RAM para todo. La ventaja del PC es que podemos usar la RAM del sistema como un búfer temporal desde el que cargar datos desde el disco duro o el SSD para recuperarlos más tarde.
Para que lo entendáis mejor, en consolas de nueva generación, la ventaja de utilizar un SSD NVMe es poder ir reemplazando la información de la RAM a mucha velocidad aprovechando, nunca mejor dicho, la velocidad de transferencia que da el puerto PCI Express. En cambio, en el PC los desarrolladores prefieren emplear la RAM del sistema como respaldo para ir haciendo streaming de los datos, siendo esta mucho más rápida.
Por lo que la ventaja principal no deja de ser la de liberar a la CPU del sistema, de tener que manejar la información que se mueve desde el SSD a la memoria de la tarjeta, y, no solo eso. Desde el momento en que los datos han de pasar por la RAM del sistema, también se puede usar para copiar la información que requiera la CPU y sus periféricos.
Atlas de texturas y geometría
Esto es algo que lleva tiempo siendo aplicado en los juegos, pero básicamente consiste en que todas las texturas del entorno en el que nos encontramos se encuentran almacenadas en una megatextura que suele funcionar como atlas. A medida que estas dejan de tener uso, se van reemplazando por otras que provienen de la unidad de almacenamiento donde está instalado el juego. Lo mismo se puede decir de los modelados del juego, pero en este caso el uso de un atlas de modelados es algo que es totalmente inédito.
DirectStorage va a facilitar la carga de elementos de un escenario de forma rápida, por ejemplo, en juegos muy lineales con cinemáticas no tendremos que tragarnos un aburrido y tedioso vídeo para que cargue el siguiente nivel. En un mundo abierto, en cambio, cuando nos acerquemos a otro bioma o zona con una estética distinta, entonces veremos como la transición será más suave. Aunque lo importante, es una menor latencia de cara a obtener las texturas para poder operar con ellas. No en vano, este es el mayor cuello de botella en toda GPU.
GDeflate en DirectStorage 1.1
El uso de GDeflate os puede parecer extraño en el contexto desde el que os hablamos. Dado que se trata de una variante del algoritmo de compresión DEFLATE. Pues bien, en la versión más nueva de DirectStorage es posible comprimir los datos de los juegos bajo dicho formato que la GPU contiene la capacidad de poderlos descomprimir desde el SSD a la RAM a gran velocidad.
Las ventajas de esto son poder transmitir una mayor cantidad de datos en menos tiempo e instalaciones más pequeñas. Sin embargo, llevar a cabo una descompresión de este tipo a varios GB/s puede llegar a saturar incluso al procesador más potente. De ahí a trasladarlo a la GPU, lo que consigue no solo liberar a la CPU, sino también, llegar a reducir a un tercio los tiempos de carga desde el SSD. Lo cual permite que colecciones enteras de assets se puedan volcar muy rápidamente en la RAM.
Todo ello, debería permitir juegos con un diseño de niveles menos limitado respecto a lo que ha existido hasta el momento. Aunque pasaran varios años para verlo en los juegos comerciales desde que DirectStorage llego hace relativamente poco a manos de los desarrolladores de juegos para PC.