Con la llegada de los SSD como pieza estándar y de serie en las consolas de siguiente generación, PlayStation y Xbox Series X, junto a la aparición de la tecnología RTX IO en las NVIDIA RTX esta claro que el SSD va a acabar reemplazando el disco duro convencional para el almacenamiento, especialmente de cara a los juegos donde estos se aprovecharan de las mejoras de utilizar el SSD.
Los discos sólidos o más conocidos como sus siglas en ingles: SSD, son una de las piezas de hardware más importantes de cara a los juegos para los próximos años y no solo para acelerar los tiempos de carga, sino también de cara al acceso continuo de datos desde el disco por parte del propio juego. ¿Pero en que se traducen dichas mejoras? ¿Cómo beneficia el SSD al streaming de datos?
Streaming de datos en los juegos desde el disco
Existen dos formas de diseñar un juego en lo que a la arquitectura de niveles se refiere
- La primera es hacerla por niveles en el que dividimos el juego en áreas delimitadas no comunicadas entre si, el jugador tiene un objetivo que al cumplirse se abre la siguiente área.
- La segunda es un mundo abierto completamente interconectado entre si, no hay divisiones y podemos tener una transición continua por todo el mundo.
Pues el segundo tipo no se ha dado hasta ahora por el hecho que pese a que a nivel estético nos puede parecer que hay una continuidad siempre hay trampas para ocultar que los niveles se van cargando. Estas pueden ser una cinemática, un pasillo muy grande, un ascensor e incluso una escena de acción en una pantalla muy pequeña mientras se carga el resto del escenario en la trastienda.
Con el SSD no son necesarios todos los datos en memoria para el streaming
Pero sí la velocidad de transferencia es lo suficientemente alta entonces podemos evitar esas trampas por completo y hacer posibles el segundo tipo de escenarios completamente posibles y es aquí donde entra el uso de los discos sólidos como reemplazo de los discos duros.
El truco consiste en que a medida que el jugador se acerca a un área no-cargada utilizar la telemetría interna del juego para que el escenario en el que nos dirigimos cargue más allá del horizonte. Sí esto se hace bien entonces el mundo virtual moverá sus fronteras de acorde a la posición del jugador en el mismo y sí se hace lo suficientemente hábil se podrá prescindir de los tiempos de carga sin tener que volcar todos los datos del nivel a la memoria RAM
Pero para entender cual es la ventaja, primero hemos de entender cuales son los handicaps del disco duro tradicional y las ventajas de utilizar un disco sólido.
El disco duro y sus desventajas para el streaming de datos
Un Disco Duro es ser un medio de almacenamiento circular rotatorio, el cual se organiza en una serie de círculos concéntricos llamados «pistas», donde cada pista tiene una serie de «sectores» cuyo tamaño estándar suele ser de 512 bytes. Dependiendo del sistema de archivos utilizado por el sistema operativo, las pistas son organizadas en grupos de varias idems llamados clusterés, los cuales corresponden al tamaño mínimo que tiene un archivo en ese sistema del sistema de archivos que utiliza dicho el sistema operativo, el tamaño de un archivo jamás no puede ser menor que el de un cluster.
El problema con los discos duros es que dependiendo de la pista en la que se encuentre el dato la velocidad al que se quiera acceder entonces la velocidad de acceso varia. Para las pistas más exteriores la velocidad de acceso a los datos es más rápida, y se va haciendo más lenta para las pistas que están más al interior debido a que el cabezal ha de cambiar de pista por lo que la latencia de acceso de los datos del disco duro dependerá siempre de donde se encuentren estos.
Esto es un problema enorme para el streaming, ya que los datos que necesitamos a corto plazo en el juego pueden encontrarse en uno de las pistas internas del disco, lo que puede llevar a que el escenario no se construya lo suficientemente rápido y fuerza a etapas de transición.
Pero no es el único problema existente, el otro problema es que necesitamos utilizar una tabla de direcciones, un archivo situado en la RAM y/o en el propio disco duro que tiene que ser consultado continuamente por la CPU para saber donde se encuentran los datos. Esto ata al disco duro a un sistema de archivos relacionado con el sistema operativo e impide a cualquier procesador sin una MMU tan compleja como la de una CPU el acceso al disco duro.
Todos estos handicaps hacen que los discos duros no sean el mejor medio de almacenamiento desde el que hacer streaming de datos.
El acceso al SSD y sus ventajas para el streaming de datos
Los discos SSD utilizan RAM no volátil (NVRAM) o más conocida como memoria flash, siendo la más conocida y utilizada la de tipo NAND.
Todo esto significa que la MMU puede acceder al SSD cómo sí fuese memoria RAM y tratarla como una extensión de la misma de cara al direccionamiento, lo que permite prescindir por completo de un sistema de archivos. Esto además es lo que permite que una GPU que tiene una unidad mucho más simple que una GPU pueda tener acceso al SSD dado que no tiene que ejecutar un sistema operativo, esto último permite ampliar la capacidad de almacenamiento de la gráfica.
Por ejemplo, una de las cosas con la que aumenta la eficiencia es con el texturizado virtual, el cual consiste en que solamente tenemos en memoria las texturas que son necesarias para el fotograma y no todo el mapa de memoria al completo. Con el disco duro necesitamos traer páginas de memoria enteras pero con un SSD podemos escoger que datos y en que volumen queremos que se copien desde el disco sólido mismo a la RAM.
La memoria del SSD es NVRAM pero el sistema no accede como sí fuese memoria RAM
Pues la respuesta es no, en realidad a nivel físico no existe un direccionamiento directo con el SSD sino que cuando hablamos de direccionamiento unificado nos referimos a como la MMU ve la memoria del sistema desde el mismo direccionamiento virtual.
Cuando un conjunto de páginas de memoria del direccionamiento virtual no se encuentra disponible en la RAM, lo que hace la MMU es enviar una petición hacía la IOMMU y esta al controlador del SSD. Dicho controlador del SSD lo que va a hacer es traducir la dirección de memoria que le ha llegado en una dirección física del SSD donde se encuentra el dato que queremos obtener o modificar.
El problema es que este proceso de búsqueda de datos es muy tedioso y lento y lo que se hace es aprovechar el enorme ancho de banda de la interfaz PCIe para copiar grandes volúmenes de datos desde el SSD a un espacio de la RAM utilizado como una especie de caché de disco. Es precisamente la velocidad de la interfaz PCIe la que permite eliminar esas transiciones en el diseño de los juegos.
Es posible que en unos años, al menos en algunos juegos, el termino nivel desaparezca por completo y todo será gracias a lo que os acabamos de explicar