Blog Personal.

Uncategorized

PS5 y XSX: GDDR6 y Acceso a Memoria.

Es increible el nivel de desinformación existente en la red y lo peor es que los medios se dedican a repartir la desinformación creada por listillos cuando una simple lectura de una hoja de especificaciones deja por los suelos las teorías y explicaciones de la basura infecta con ganas de protagonismo por los suelos, porque si, son basura infecta y lo peor es que tenemos que perder el tiempo desmontando el detritus que dejan por ahí que confunde por completo a la gente.

Es todo completamente…

y lo peor es que la gente no tiene la culpa de verse desinformada por estas mierdas con patas y si, voy a ser duro con ellos siempre y que sea necesario.

Porque yo soy capaz de coger, autoreflexionar y decir… ¡Mierda, creo que me equivoque en ese punto! Pero no me dedico a crear explicaciones absurdas sobre temas técnicos que nada tienen que ver con la realidad y que solo sirven para hinchar el ego de este tipo de sujetos.

Bueno, al grano…

¿Que pienso de esto?

¡ESE TIO ES UN PUTO DESINFORMADOR!

¿Mi recomendación? Olvidad lo que dice ese farsante, no voy a perder el tiempo en discutir su enorme mentira punto por punto. Hay gente cuya táctica de desinformación y de ego es la de colocar datos falsos para que pierdas el tiempo respondiendo y desmontando lo que dicen para hincharse el ego, de la misma manera que a él se le hincha su narcisismo cuando la gente da validez asu embuste, y valida su mentira como información, especialmente los medios.

Vamos a ver como funciona la cosa y en que se diferencia la GDDR6 de la GDDR5X y la GDDR5 que aparecieron antes con un simple diagrama.

Por chip de memoria la GDDR6 tiene dos canales de acceso a la misma que funcionan en paralelo, no es que el canal A accede a la mitad de módulos y el canal B a la otra mitad sino que cada chip tiene 2 canales de acceso que funcionan en paralelo, permitiendo que dos procesadores se puedan conectar en paralelo a un chip de memoria GDDR6 y tener acceso al mismo tiempo en paralelo.

En cambio la GDDR5 tiene un solo canal de acceso y por tanto solo puede acceder un procesador al mismo tiempo, lo que crea un efecto que es la contención de memoria que se basa en que solo puede alimentar las peticiones de un procesador, cuando hay un cambio de cliente se produce un tiempo de contención en el que se pierde ancho de banda en el proceso.

El termino canal es confuso, deberían decir que la GDDR6 tiene dos puertos de acceso, por el hecho que el termino canal es utilizado en las DDRn y en este tipo de memoria si que cada canal tiene su grupo de chips de memoria.

Pero el caso de la GDDR6… ¡No es el mismo! La GDDR6 tiene 2 puertos por chip que la JEDEC que es la que hace los estandares (no se en que pensaban) llama canales a cada puerto y cada puerto tiene su propio ancho de banda y puede tener un cliente distinto o a ambos estar asignados al mismo.

Ahora bien, vayamos a lo que nos interesa que son las consolas next gen, las cuales utilizan tecnologia Zen de AMD y todos siguen una arquitectura común que he explicado MILES DE VECES.

Pero lo que haré en esta entrada sera simplificarlo para todo el mundo, como me ha pedido mucha gente.

Este diagrama corresponde a todo SoC con memoria unificada que es lo que habitualmente se utiliza en dispositivos PostPC (Smartphones, Tablets) como en PC. En él toda la comunicación entre componentes se hace a través del Puente Norte, aka Northbridge en Ingles, le pueden dar mil nombres según el fabricante. Intel lo llama uncore, AMD lo llama Data Fabric y a veces Infinity Fabric (creando confusión) pero el termino genérico es Puente Norte. El puente norte es además el único camino de acceso de los diferentes periféricos a la RAM y funciona como un servicio de paquetería que va gestionando el envió y la recepción de datos.

El problema es que según el tipo de memoria externa, la cantidad de paquetes que el Puente Norte puede enviar a esta simultáneamente es limitado. Hay memorias que solo permiten enviar un paquete de datos al mismo tiempo, otras en cambio permiten enviar varios paquetes al mismo tiempo pero subdividiendo el ancho de banda, esto hace que si queremos utilizar un tipo de memoria u otro no baste con reemplazar la interfaz de memoria, tienes que cambiar todo el puente norte del chip para adaptarlo a las especificaciones de ese tipo de memoria.

Por ejemplo, en un SoC convencional donde todo pasa por el puente norte, si nuestra memoria tiene varios canales de acceso simultaneos, pongamos para simplificar que 2 entonces todos los componentes seguirán dependiendo del Puente Norte para acceder y será que el lo gestionará pero este podrá acceder a los dos canales de forma simultanea.

Este escenario es completamente genérico pero lo que nos interesa es ir a lo que tiene AMD para Sony, Microsoft y ella misma. El Puente Norte (Data Fabric para AMD) se conecta a la RAM (DDR4 en modo de dos canales) a través un elemento que es el UMC (Universal Memory Controller).

El UMC que es la parte que comunica el puente norte con la interfaz de memoria, en realidad es parte del puente norte y funciona a la misma velocidad que la velocidad de reloj de la memoria externa (memclk) con un ancho de banda de 32 Bytes/ciclo que puede subdividir entre diferentes canales. En PC dado que la memoria es DDR4 con dos canales entonces subdivide su ancho de banda al comunicarse con esta en 2 interfaces de memoria distintas distintos, uno por cada interfaz de memoria, haciendo un diagrama del funcionamiento la cosa quedaría así:

Pero la GDDR6 es un caso distinto a la DDR4, no hablamos de dos canales diferentes donde cada canal accede a diferentes chips, hablamos de dos canales donde los dos canales pueden acceder al mismo chip, hemos visto como el UMC tiene un bus de 32 Bytes/ciclo (256 bits)… ¿Que ocurre cuando lo conectamos a la GDDR6? Pues que el UMC solo utiliza un canal de lo dos canales de memoria de la GDDR6 y aprovecha solo la «mitad» del ancho de banda.

¿Pero realmente utiliza solo la mitad? Antes he comentado que el envio de datos desde el UMC es siempre la velocidad de reloj de la memoria (memclk)*32 bytes. ¿Pero cual es la velocidad de reloj de la GDDR6? Pues 1/8 de su ancho de su ancho de banda.

Una RX 5700 tiene una interfaz de 256 bits con la memoria, su GDDR6 funciona a unos 448GB/s y la velocidad de la memoria es de 1750 Mhz… ¿Es algo que dependa de dicha GPU? Busquemos otra con una configuración de memoria identica… ¿Que tal una RTX 2070?

Vale, con esto ya sabemos que la GDDR6 tiene una velocidad de memoria de su controlador de 1/8 de su cantidad de Gbps, por lo que la memoria a 14Gbps funciona a 1.75 Ghz. ¿Que ocurre? El UMC se comunica SIEMPRE a la velocidad de reloj de la memoria, en este caso serían 1.75 Ghz y con un ancho de banda de 32 bytes ciclo inmutables.

Esto significa que el UMC y con el ello el Puente Norte se comunicará a unos 56GB/s independientemente de cual sea su comunicación externa y haciendo uso de un solo canal de los dos. ¿Y que ocurre si decidimos hacer lo siguiente…?

Pues que solo tendremos unos 112GB/s del ancho de banda por las limitaciones del ancho de banda del UMC. Pero podemos aprovechar el doble canal de la GDDR6 para conectar la GPU al segundo canal:

Las GPUs como comente tienen dos accesos distintos a la memoria, uno es el que lo conecta al Puente Norte para comunicarse con el resto de elementos y poder acceder a la memoria a través del UMC (IOMMU), el otro es un acceso directo que no pasa por el UMC y por tanto no tiene las limitaciones de este, bajo esta configuración la GPU puede tomar todo el ancho de banda de uno de los dos canales para si que en el caso de Xbox Series X serían unos 280GB/s y en el caso de PlayStation 5 unos 224GB/s.

Pero alto, dichas velocidades de reloj son muy bajas y nos interesa que la GPU pueda tomar los dos canales en determinadas operaciones , es por ello que se necesita una pieza adicional que se encargue de manejar el acceso a los dos canales para la GPU este unidad no tiene nombre oficial pero la vamos a llamar «A».

Lo que permite A es que la GPU si lo necesita pueda tomar los dos canales de memoria. Claro esta que la solución de AMD para Microsoft (y es posible que para Sony) es que del espacio de memoria de 16GB, solo si accedemos al espacio de 10GB asignado al uso de los 2 canales pues «A» permite utilizar ambos canales de la GDDR6 para la GPU, si accedemos al segundo espacio de memoria entonces la GPU solo puede acceder a un canal y todos los periféricos conectados al puente norte acceden al otro canal quedando los anchos de banda de la siguiente manera:

Espacio Ch. A Ch B BW Ch A BW Ch B Total BW
0-6GB UMC GPU 56 GB/s 280 GB/s 336 GB/s
6-16GB (10GB) GPU GPU 280 GB/s 280 GB/s 560 GB/s

No tiene nada que ver con el uso de memorias de diferentes tamaños y con PlayStation 5 podria ocurrir lo mismo ya que AMD habría utilizado el Puente Norte y todo el mecanismo de acceso a memoria en ambas consolas es el mismo. ¿Que significa esto? Pues que cuando se hace una petición de memoria por encima de los 16GB del espacio no accede a la RAM sino al SSD provocando que colocando más de 16GB de GDDR6 independientemente del ancho de banda no sirva y es lo que ha forzado a Microsoft a tomar una configuración de chips GDDR6 de diferentes densidades.

En el caso de PlayStation 5 la configuración de memoria sería la siguiente:

Espacio Ch. A Ch B BW Ch A BW Ch B Total BW
0-6GB UMC GPU 56 GB/s 224 GB/s 280 GB/s
6-16GB (10GB) GPU GPU 224 GB/s 224 GB/s 448 GB/s

Espero que con esta entrada os hayan quedado las cosas absolutamente claras.

Esto es todo, tenéis el Discord y los comentarios de esta entrada para comentarla.

0 0 vote
Article Rating
15 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Snake128

Me tiene confundido esto, porque en teoría Microsoft tiene dos pools de memoria y sony solo uno no?

O al final van a hacer las dos lo mismo?

Entiendo que trabajar con dos pools será mas complicado no?

nolgan

eso entiendo yo, por eso comenta urian que puede que amd le haya hecho lo mismo a sony.. pero segun los datos de sony y micro no deberia ser asi.. es lo qeu se dice que si en xsx se accede a los 2 pool se empieza a tener latencia , lag etc etc perdiendo velociad/potencia etc habria que saber mas y saber si sony aun teniendo 16gb unificados en un solo pool trabajaja como 2 o solo como en teoria a explicado sony de 15gb unificados a 448gb si es como dijo cerny seria asi 1-16GB (16GB) GPU GPU… Read more »

nolgan

como dije urian como afectaria si sony tuviera esto 1-16GB (16GB) GPU GPU 224 GB/s 224 GB/s 448 GB/s segun los datos de cerny, mientras no sepamos mas.. y micro tuviera esto 0-6GB UMC GPU 56 GB/s 280 GB/s 336 GB/s 6-16GB (10GB) GPU GPU 280 GB/s 280 GB/s 560 GB/s como afectaria en la creacion de juegos??? como afectaria al uso del ssd??? podria haber un cuello de botella en xsx? en tema de pasar datos entre pools mientras funcioan el juego.. cuanta latencia podria crear si esto es asi? o no crearia latencia? etc, la velociad del ssd… Read more »

Ger

Hola Urian, valga por delante que mi conocimiento informático es básico por no decir nulo en comparación a tu página pero no quita mi curiosidad. Me pierdo mucho en tecnicismos pero me he encontrado con este blog que también trata sobre desgranar la next-gen y mas en concreto esta sección sobre ram y almacenamiento. Si puedes darle un vistazo y comentar te lo agradecería porque más allá de cpu y gpu en bruto me llama mucho la atención el distinto enfoque de ambas consolas con la ram y ssd y como influirá esto en los juegos, me parece algo de… Read more »

Duoae

Hi Urian, I read your post after seeing the traffic to mine (through Google translate so i may misunderstand something) – very interesting and informative. I’d love to know why you think my understanding is incorrect. From my own perspective, i think you missed out the concept of interleaving memory which is intrinsic to the operation of GDDR. In DDR (as per your first generic example) the interleaving occurs on the controller on the DRAM chip and is transparent to the UMC. Interleaved memory *must* be symmetrical in capacity for it to work (if it did not we would have… Read more »

Ger

Me alegro que el creador del blog que te había pasado entre a debatir contigo, intercambio de conocimientos y puntos de vista. Una charla entre vosotros sería genial

Dani

La verdad que la explicación de Urian me parece la correcta. Andrew Goosen, en la entrevista con Digital Foundry, dijo que la memoria estándar y la óptima ofrecían el mismo rendimiento a la CPU, el archivo I/O (supongo que será la caché disco), ejecutables, scripts………..Vamos que la CPU ve toda la memoria, no sólo 6 GB. En cambio, en el otro blog se menciona que sólo hay 7,5 GB a 560 GB/s porque el SO ocupa 2,5 GB, un error de bulto, pues Microsoft desde el inicio dijo que el SO reside en la memoria estándar, la de 336 GB/s.… Read more »

Duoae

This point is often misunderstood. I did not say this about the 7.5 GB. I said that if the system wanted to put the OS into the 10 GB in order to only access RAM at 560 GB/s, they could do this as long as the game didn’t exceed 7.5GB of RAM. Above this limit, the OS must be moved to the slower RAM and there is a performance penalty because the memory controllers are shared. At no point did MS say that the OS and non-graphics game assets could *only* inhabit the 6 GB of RAM, just that this… Read more »

Dani

Thank you very much for your answer. Your article is known to people as disinformation. Curiously, since I discovered your blog with that link, I liked it. We all shouldn’t judge so early. I’m not clear that I understood you, I just think that the OS resides in standard memory. The other 3.5 GB of standard memory is dedicated to gaming, and the optimal memory is dedicated to the heaviest thing of videogames, the one that needs the most bandwidth (textures?). From Eurogamer (Digital Foundry): «In terms of how the memory is allocated, games get a total of 13.5GB in… Read more »

Duoae

Re: the audio – many people would love to know, myself included! 😀 Thanks for your kind words. I wasn’t attempting to provide any disinformation, just take a look at what was announced and try to make sense of it. I think there’s some ambiguity in the marketing from both companies. One thing that’s interesting though is many people are saying that the other buses within the SX APU will determine memory access but the overall memory controller bus is stated to be 320-bit. If they start carving up the memory access not through a combined UMC/DMA then memory access… Read more »

Dani

Muchas gracias. Tendré que leerlo varias veces más para comprenderlo, gracias por el esfuerzo.

[…] Esta afirmación de Cerny nos confirma algo que yo ya sospechaba, la consola tiene dos espacios en la RAM como ocurre con Xbox Series X. El hecho de que el Tempest Engine utilice el canal de acceso a memoria de la GPU y Cerny nos hable de manera especifica de dicho canal confirma lo que dije hace unos días. […]