Blog Personal.

Conceptos Básicos, PC, PlayStation 5, PS5, Xbox Series X, XSX

El problema fundamental del PC para igualar al SSD en consolas.

Os recomiendo leer para no perderos la entrada titulada: Master Class sobre direccionamiento y acceso a memoria.

Desde el punto de vista de una GPU, ya sea integrada o dedicada, tenemos dos direccionamientos de memoria:

  • Uno es el coherente con la CPU (Memoria del Sistema) y la GPU y el resto de periféricos acceden a través de la IOMMU.
  • El otro no es coherente con la memoria del sistema (Memoria de la GPU) y la GPU accede a ella en exclusiva junto a algunos de sus clientes a través de la GPUMMU

Lo que conceptualmente se traduce en esto:

El problema de tener dos espacios de memoria es que si queremos acceder a datos de un espacio a otro tenemos que realizar una copia de un espacio a otro. Pero en un SoC donde la memoria es unificada a nivel físico existe un truco que se basa en el uso de una cache traductora de direcciones y esto le permite a la GPUMMU acceder de manera directa al espacio de memoria que se accede a través de la IOMMU si tener que hacer copias de datos de un espacio a otro ya que lo que permite esto es tener una coherencia de cache sin tener que pasar por el IOMMU.

Es decir, la GPUMMU pasa a ver la memoria de la misma forma que el resto del sistema y por tanto completamente coherente.

Pero esto solo puedes hacerlo en un SoC donde el sistema de memoria es unificado o si expandimos un poco la definición en cualquier sistema con memoria unificada donde en vez de tener varios pozos de memoria tengamos uno y universal para todos los componentes.

Pero en PC donde la CPU y la GPU tienen memorias físicamente distintas no podemos hacer esta trampa por motivos obvios. Por si fuera poco las tarjetas gráficas de PC no están pensadas para acceder al SSD por lo que el movimiento es mucho más engorroso ya que no es la GPU la que tiene que ir haciendo peticiones al SSD ya que técnicamente la GPU no puede ver al SSD, no sabe que existe por lo que lo que se tiene que hacer es lo siguiente:

  • Las peticiones de datos al SSD los ha de hacer la CPU y por tanto esos datos se quedan en la RAM del sistema.
  • La única forma de trasladar los datos es a través del PCI Express, es decir, la CPU tiene que copiar los datos desde la RAM del sistema a la RAM de la gráfica en el PCI Express.
  • Independientemente del ancho de banda todos estos movimientos de datos de una memoria a otra resultan en una latencia enorme.
  • Necesitamos que los datos lleguen antes de un tiempo determinado, si la latencia es demasiado alta independientemente de lo rápidos que sean los sistemas de comunicación entonces mal.
  • En PC al contrario que las consolas no tenemos compresores/descompresores al vuelo que sobretodo están pensados para reducir latencia más que aumentar el ancho de banda.

En las consolas de siguiente generación es distinto, debido a que la GPU a través del IOMMU y la GPUMMU puede ver el mismo espacio de memoria que la CPU también puede ver el SSD y puede realizar peticiones de datos, pero alto, no accede al SSD de manera directa sino que hay un espacio en la RAM que podemos considerarla una especie de cache para los datos del SSD donde primero se copian esos datos (con descompresión por el medio) y luego es accedida por los procesadores. Que el SSD este en el mismo espacio de memoria no significa que el acceso sea directo, lo que ocurre es que los movimientos de memoria al contrario de lo que ocurre en PC están optimizados y son transparentes, no necesitas especificarlo.

Es decir, el movimiento de datos que ocurre en estos diagramas que hice para ilustrarlo hace unas entradas:

En las consolas de siguiente generación no requiere movimientos de datos explícitos en el código debido a como la GPU ve la RAM en un SoC y los cambios que se han hecho pero en PC si que hay un problema muy grande en ese aspecto, muy pero que muy grande ya que requiere cambiar la concepción del PC.

¿Entonces cual es al futuro? La única manera de conseguir solventar este problema es que en PC se utilice un sistema de memoria unificado, esto significa la eliminación de las tarjetas dedicadas por completo, pero una GPU integrada esta limitada en espacio y potencia. ¿La solución? El primer paso son sistemas multichip con un puente de comunicación coherente entre CPU y GPU de manera directa, pero este primer paso no unifica las memorias sino que hay que hacer un paso más alla y unificar la memoria por completo, pero esto no lo veréis a corto plazo, más bien a medio tirando a largo y no lo veréis ni con GDDRn ni tampoco con DDRn sino con sistemas MCM con CPU y GPU en chips distintos pero en un sustrato/interposer común comunicados a memoria HBM o lo que la sustituya.

La mayoría de empresas han hecho I+D en ese sentido en los últimos años, por ejemplo AMD llego a proponer una configuración con 64 núcleos de CPU comunicados a memoria HBM a través de un interposer.

En realidad no deja de ser un SoC a nivel funcional, pero moviendo el Northbridge/Uncore/Scalable Data Fabric al Interposer que esta a un nivel inferior, en este otro diagrama, también de la propia AMD, se puede ver el concepto:

A muchos esto os puede parece una chorrada y una exageración, pero es la única manera de implementar en el PC las ventajas del SSD en consolas y requiere un cambio radical enorme y si, ya se que muchos ahora mismo, especialmente los de la «PC Master Race» me están mirando esta entrada en modo…

Mientras tanto hay gente que dice que la solución consiste en colocarle un SSD a las gráficas, no majos no, la cosa no funciona así. Colocarle un SSD a la gráfica en PC se traduce en que la CPU no puede ver el contenido de ese SSD debido a no tener la memoria físicamente unificada. No en vano cuando cargáis un juego en PC lo que hace siempre este es copiar los datos del disco a la RAM y los que son necesarios para la gráfica a la RAM de la GPU a través del PCI Express y el mecanismo DMA que tienen todas las GPUs.

Lo que si que vais a ver es en el caso de RDNA 2 (No se en el caso de Ampere) es la vuelta de tarjetas gráficas con SSD para el mercado profesional, es por ese motivo que RDNA 2 tiene 4 canales DMA en vez de 2.

Una cosa que si que podríamos ver es que vendan tarjetas gráficas con SSD integrados y que permitan la capacidad de poder almacenar las texturas de los juegos en ese SSD, el problema es que los juegos están pensados para mover datos del disco del sistema a la GPU. Es más, el DirectStorage de DirectX 12 Ultimate se basa en eso, lo de añadir un SSD a la tarjeta gráfica es una solución que aunque parece lógica necesitaría que los juegos se adaptarán y no se pueden adaptar retro-activamente.

Esto es todo, tenéis los comentarios de esta misma entrada para comentar y no olvideis que tenemos Discord.

5 2 votes
Article Rating
10 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Ger

Vaya, yo pensaba que se podía llegar a enviar en ciertos momentos datos directamente desde el ssd a la gpu sin pasar por la ram, por ejemplo datos que se necesitan de manera puntual o de menor prioridad que en vez de estar ocupando espacio en la ram se solicitaran y enviaran directamente desde el ssd, como si en cierto modo tuvieras más espacio de memoria que solo los 16gb de la ram. Entonces la gpu como máximo tiene el espacio de memoria que le brinda la ram aunque vea almacenamiento más allá de ella, es decir, en el hipotético… Read more »

Snake128

Una de las cosas que dijo Cerny es que a nivel de API tu podras decirle que un objeto/asset está en tal dirección del SSD y la consola/API ya se encarga de hacer como ha dicho Urian la copia a la ram y le pasa esta dirección a la gráfica para que esta recoga dicho objeto/asset.   Vamos que ha nivel de implementación han intentado agilizarlo lo máximo posible, un ejemplo que decia Cerny es por ejemplo un sonido de un enemigo al morir, tu tienes un espacio/cache en Ram para esto y cuando muere, le dices por código que… Read more »

Nitupensis

Excelente entrada Urian como siempre. Lo de que se tengan que programar los juegos para ello es entendible, algunos creen que en pc cambiar de por ejemplo un ssd sata a un nvme ya obtienen mejoras en juegos perse y en muchos casos se llevan un chasco, ya que si el juego no esta pensado para ello poca mejora se obtiene salvo en mejores tiempo de carga y algo de menos popping (y depende de la programación del motor) ya que en muchos casos los juegos sobretodos los que tienen tiempos de carga encubiertos tienen en cuenta por ejemplo que… Read more »

Last edited 3 months ago by Nitupensis
Nicco

Es que ese es el problema, se tiene que programar pensando en ello. Por ejemplo nosotros hemos hecho pruebas con diferentes juegos con diferentes motores usando soluciones del tipo RamDisk, en un equipo con 128GB de RAM para cargar todos los archivos a la ram pero como el motor o el propio juego tenga tiempos accesos prefijados o mínimos, te los vas a comer igual por muy rápida que sea la solución que tengas disponible. Se tiene que realizar cambios en muchos casos bastante profundos en el funcionamiento del motor. Cómo dice Urian no es algo que se pueda sacar… Read more »

Last edited 3 months ago by Nicco
ParnassusDoctor

Gracias urian sabia que hecharias luz sobre el tema

Entonces, pasarán por lo menos 3 años para que veamos buenos juegos multi que utilicen las bondades de la nueva tecnología?

Set

Hasta donde tengo tengo entendido el controlador HBCC que incorporo AMD en Vega servia para ordenar los datos en Vram de manera correcta y para tener comunicación directa con el SSD via Pci-E. NVIDIA estaba desarrollabdo algo similar GPU direct.. no se que se llama. Por otro lado lo que va apasar en PC es simplemente nada, todo dependera de los desarrolladores y sus mundos abiertos sin carga y detalle que tan exigentes sera en uso de memoria, como dice la pregunta, si actualmente los juegos de mundos abiertos usan 4-8gb de ram(sistema) en PC, esos requisitos se aunmentaran a… Read more »

Last edited 3 months ago by Set
Dillitale

No aprendemos… con ps3 el cell iba a estar años por delante de todo pc e iba a ser increiblemente mas potente que 360, con ps4 la memoria unificada y el acceso al metal iban a multiplicar la potencia, con ps5 el ssd que va a volver a revolucionar la arquitectura de un pc… venga hombre.

Isaac

La diferencia es que con el Cell todos los desarrolladores decían lo difícil que era y con el SSD de PS5 todos dicen lo que facilita el trabajo

Lo que también es cierto es que será para exclusivos, no va a cambiar el PC por muchos motivos
Que AMD venda APUs high end no le va a sentar bien a los ensambladores de placas de video, por ejemplo

Charli

Soy escéptico, nadie multiplataforma aprovechará los SSD de consolas, harán un std para todo, solo los first party y se tardarán años en demostrar sus ventajas, hasta entonces solo nimiedades, para entonces ya habrá otras cosas en pc.

Steven

Hola lo veo Difícil nvidia no tiene cpu para hacer soc y Intel no tiene lista la gpu no creo que los estudios lo hagan por amd