Blog Personal.

Uncategorized

Historia y especificaciones del SoC de PlayStation 5 (Feedback)

Comentario#1:

¿Y por compartir ram con la cpu esta se reserva 64 bits del ancho de banda? Entonces la gpu tendría el 75% del total. También tendría sentido los 384 bits de xbox one.

No. no funciona de esta manera y por suerte conocemos lo suficiente de la arquitectura Ryzen como para tener una idea exacta de como va a funcionar la cosa. Todos los SoCs y CPUs basados en cualquiera de las generaciones de la arquitectura Zen hasta ahora se comunican con la memoria a través de una unidad llamada UMC (Unified Memory Controller) que esta conectado al Data Fabric (Northbridge).

Cuando se busca un dato en la RAM por parte de la CPU hasta que se encuentra en cualquiera de las etapas es Cache L1 (privada del núcleo). Cache L2 (privada del núcleo), Cache L3 (privada del CCX), Data Fabric, UMC.

El UMC es el encargado de ir haciendo peticiones a la RAM a través de la interfaz de esta, el Data Fabric se comunica con este a una velocidad de 32B/s y luego el UMC bifurca dicho ancho de banda según el tipo de memoria utilizado o más bien, según los canales que tenga dicha memoria.En el diagrama de arriba lo que se usa es memoria DDR4, los 32 Bytes se subdividen en 2 canales de 16 bytes (128 bits) por lo que en el caso del ejemplo esto nos permitiría colocar dos modulos de memoria en el PC.

Un bus de 128 bits es un bus de 64 bits DDR4. Cada canal tiene su ancho de banda, pero añadir slots adicionales en un canal no aumenta el ancho de banda sino la densidad de la memoria.

¿Pero que ocurre con una consola? La GDDR6 al igual que la DDR4 y al contrario de la GDDR5 soporta dos canales, de 16 bits cada uno.

Vale, tenemos el UMC que tiene un bus de 32B/ciclo y tenemos una memoria de 32B/ciclo al otro lado… ¿Parece fácil no? El problema es que el memclk de la GDDR6 es 1/8 de sus Gbps por lo que con el UMC solo podemos acceder a 1/8 del ancho de banda total desde la CPU.

¿Y que ocurre con el resto del ancho de banda? Desde la perspectiva de la CPU y el resto de clientes del Data Fabric no ocurre nada de nada, no pueden acceder a más ancho de banda que el que les da el UMC. ¿Entonces cual es la solución para acceder a todo el ancho de banda? ¿Colocar unos 8 UMC? Esto haría demasiado grande el Uncore/Data Fabric. ¿Entonces? Lo que se hace es que el acceso desde la GPU no sea a través del UMC sino directo sin pasar por el Northbridge/Data Fabric.

Esto provoca dos cosas:

  • La visión de la memoria de la GPU no es coherente con el que tienen los dispositivos que acceden a la RAM a través del Data Fabric y el UMC
  • Debido a que tenemos dos formas de acceder a una misma memoria se puede producir una contención.

No solo eso, sino que necesitamos comunicar la GPU con la CPU para las listas de comandos y para cuando la CPU utiliza la GPU en modo computación como co-procesador. ¿Lo hacemos a través de la RAM? Demasiada latencia. ¿Como entonces? Pues conectando la GPU al I/O Hub para ello, esto además le da un acceso alternativo a la GPU que le permite ver el espacio de memoria de la CPU, lo cual es ideal para ciertas operaciones.

Estos tres problemas han sido el dolor de cabeza de los ingenieros no solo de AMD sino de Nvidia, Intel… Por lo cual ha sido un problema común. Empezando por el primer problema… ¿Que significa coherencia de memoria?

La coherencia de memoria hace referencia a la necesidad de establecer la lógica necesaria para que los distintos datos replicados a lo largo de la jerarquía de memoria, contengan la misma información si se trata de la misma dirección física. Por ejemplo, un dato que se encuentra en el nivel más alto de la jerarquía, esto es, en la cache de L1, y que ha sido modificado, deberá activar los mecanismos necesarios para que esta modificación se lleve a cabo en el resto de niveles, donde este dato también existe.

AMD para solventar esto a partir del SoC Carrizo en PC añadio el ATC (Access Translation Cache).

El ATC lo que hace es que las Caches de la GPU vean la RAM de la misma manera que la CPU por lo que permite unificar el direccionamiento y hacer que no tengamos que tener el espacio de memoria separado…

Sino completamente unido…

Cuando la memoria no es totalmente coherente tienes que utilizar mecanismos DMA para copiar de un espacio de memoria a otro, cuando esta completamente unificada este proceso no es necesario. Pero esto no soluciona el segundo problema que es la contención de memoria.

Si tenemos dos accesos a la memoria:

  • Acceso desde el Northbridge (Data Fabric)
  • Acceso directo desde la GPU

Entonces el ancho de banda total debería repartirse entre ambos, si antes hemos dicho que el Northbridge/Data Fabric a través del UMC ocupa 1/8 del ancho de banda entonces por lógica cuando este accede los otros 7/8 son para el acceso directo desde la GPU. ¿Cierto? Pues no, por el hecho que se crea una contención en el que el ancho de banda que deja libre para el acceso desde la GPU es mucho menor debido a la contencion.

En PlayStation 4 por ejemplo, el UNB (equivalente al Data Fabric) tenía un bus de 25.6 GB/s con la RAM…

Uno puede pensar que el ancho de banda de 176GB/s pasa a ser de 150.4 GB/s… ¿verdad? Pues no, la contención reduce el ancho de banda a 102.8 GB/s para el acceso directo desde la GPU. El trabajo de AMD durante todo este tiempo ha sido reducir la contención de la memoria.

¿Como? En GCN Pre-Vega todas las operaciones de la mayoría de Shaders pasan por la Cache L2, excepto las realizadas por los Fragment/Pixel Shaders que pasan por los RBE(ROPS) y de ahí directamente a memoria.

Necesitan un ancho de banda brutal como Tricky Galletas.

El problema es que si miramos cual es la parte más intensiva y por tanto la que necesita más memoria del pipeline gráfico en efecto son los Pixel/Fragment Shaders. Durante este periodo se envían los datos varias veces a memoria y se leen varias veces desde memoria de forma continua, dado que el valor de un pixel puede cambiar varias veces antes de tener el valor final de cada pixel.

¿La solución? La primera en implementarlo fue Nvidia con la arquitectura Maxwell, conectando los ROPS a la Cache L2, luego AMD hizo lo mismo con Vega y esto se encuentra en RDNA por lo que los accesos a memoria continuos por parte de los Fragment/Pixel Shaders quedan paliados gracias a esto ya que pueden retomar los pixeles con los que están trabajando en estos momentos desde la Cache L2 y en RDNA desde la Cache L1 (solo lectura).

Y esto es importante dado que cuanto más cerca están los datos del procesador menos latencia a la hora de realizar una instrucción. Esto no solamente soluciona parcialmente el problema de la contención sino que además mejora el rendimiento y para colmo el consumo porque cuanto más alejado esta un dato de la RAM más energía se consume.

Pero todo esto solo es una parte de la historia… A partir de la salida de la arquitectura Zen, AMD decidió que solo habría un acceso a la memoria tanto para CPU como para GPU en los SoC, al menos de PC, la Cache L2 de la GPU en el caso de los SoC Raven Ridge, Picasso y Renoir esta conectada de manera directa al Data Fabric.

El Fabric Transport Layer no es más que el Data Fabric/Northbridge pero esta vez no tenemos dos sino uno, pero claro si miramos la GPU del Raven Ridge y su Cache L2 veremos como:

  • Solo tiene 4 particiones de Cache L2, el sistema que buscamos diseñar tiene unas 16, eso es tener un ancho de banda con el Uncore/Data Fabric unas 4 veces superior.
  • Sumadle lo que hemos dicho antes con el UMC.

En el caso de los SoC para PC la contención queda completamente resuelta, pero aplicar este uncore a una consola de siguiente generación provocaría que el uncore se haría demasiado grande y no tendríamos espacio para el resto de componentes por lo que de cara a las consolas de siguiente generación no nos vale la solución de los SoC de PC basados en Zen. Por lo que lo mejor es mantener el viejo mecanismo por motivos de coste y espacio en el SoC.

Mi hipotesis en el caso de Xbox Series X es que Arden y Sparkman son dos nombres para un mismo chip. Si tuviesemos un mismo acceso como los SoC para PC basados en Zen entonces todo el acceso a la RAM sería coherente, pero Komachi nos dio una pista en uno de sus tweets.

Concretamente en esto:

Esto significa que el SoC de Xbox Series X y el de PS5 han optado por darle un acceso directo a la GPU para no tener que complicar el Uncore/Data Fabric.

Espero que haya quedado clara esta explicación, la comente ya varias veces en el blog anterior y fue para mi el enigma más grande en cuanto a arquitectura, en estos momentos lo considero plenamente resuelto.

Comentario#2:

Por si sirve esta es la relacion de numero OPN Zen2 de AMD que se van conociendo hasta la fecha.

La fila de Ariel es falsa, no dispone de tal cantidad de Cache L3, en realidad ningún SoC monolitico basado en Zen2 dispone de semejante cantidad de Cache L3 por temas de espacio en el SoC.

Comentario#3:

Lo del CPU seria interesante como se va implementar, en las APU de PC generalmente se deshabilita un CCX que es donde va la GPU para tener un CPU monolitica, en un caso asi las consolas tendrian 8 nucleos monolítico con 4-8mb??.

Es un Zen 2, por lo que son 2 CCX de 4 núcleos y su cache L3 por CCX que estarán conectados via un bus Infinity Fabric (32B) cada uno de los dos CCX. Hay que tener en cuenta que la Cache L3 es privada de ese CCX y sabemos por los benchmarks a través de la plataforma «Flute» que la Cache L3 por CCX es de 4MB, luego también sabemos que la Cache L3 en los Zen 2 que son SoC monoliticos (Renoir) es precisamente esa.

¡Blanco y en botella, leche!

El otro caso es Zen2 funciona en base aun i/o, pudiera ser chiplet de 8 nucleos con 2 ccx, pegada al i/o la GPU y en capsulada?? Aunque viendo el chip de la xbox series no parece de esta forma.

Olvidate de un chiplet en el caso de las consolas de siguiente generación, por parte de Microsoft sabemos que es un chip monolitico.

Y de la conferencia de inversores de AMD tenemos la siguiente información:

AMD se refiere a ambos chips como SoC, lo cual marca que es un diseño monolítico.

Sobre La GPU lo estas comentando es que PS5 sera RDNA 1.5??? ,RDNA2 segun la diapositiva que presento AMD es mas que hardware RT y VRS:

– Mejora IPC (no se especifico % de mejora)
– Mejora de eficiencia energética
– Mejoras en frecuencia, frecuencias mas altas(tampoco se específico cuanto)

Vamos a ver, ambas son RDNA2, la cual es una mejora menor sobre RDNA realmente, esos cambios en la «mejora del IPC» y el consumo también los hemos tenido con la arquitectura GCN y los tenemos con los Zen. Son versiones incrementales sobre una arquitectura ya previamente existente.

Si hay mejoras de IPC deben haber cambios dentro de la arquitectura para que RDNA 2 rinda mas a nivel de ciclon o igualdad de frecuencia /shaders que RDNA 1,por cual el chip de la PS5 no puede ser el mismo y una evolución, si es RDNA 2 es un chip diferente. Aparte que no sabemos si sera 7nm+ o no, AMD segun Anandtech quito la coletilla + y con él tiempo AMD ira diciendo que productos se basa en 7nm+ y que no.

La pregunta clave es… ¿Que es el IPC? Es la cantidad de instrucciones por ciclo que se están ejecutando pero lo mejor es mirar su definición exacta.

Las instrucciones por ciclo o IPC (en inglés instructions per cycle) indica la cantidad de instrucciones que un procesador ejecuta en un ciclo de reloj.

Pero no son las instrucciones que resuelve… ¿Que problema hay con el paso de RDNA a RDNA2? Para aumentar el IPC por Compute Unit deberíamos aumentar la cantidad de ALUs por CU… ¿Es ese el caso? No, la medida del IPC en consolas es puro marketing y es falsa. Además hemos de tener en cuenta que no todas las instrucciones tardan los mismos ciclos en resolverse sino varios, más bien la mejora de rendimiento en estos caso debería medirse con el CPI (Ciclos por Instrucción).

En arquitectura de computadores, los ciclos por instrucción o CPI son una medida del rendimiento de un procesador: el número medio de ciclos de reloj por instrucción en un programa o fragmento.1​ Es el inverso multiplicativo de las instrucciones por ciclo.

En el paso de GCN a RDNA para aumentar el rendimiento una cosa de las que se ha hecho es reducir la cantidad de ciclos por instrucción, esto requiere re-diseñar el conjunto de registros e instrucciones de la GPU, la cual desde que no es una CPU y no ejecuta programas no es un problema ir haciendo cambios.

Esto ya lo hacía AMD en las generaciones de la arquitectura GCN, iba añadiendo y quitando instrucciones y rompiendo la compatibilidad en ese caso. Con RDNA han hecho lo mismo, reemplazar instrucciones por otras con un CPI más eficiente, en realidad a nivel de hardware no esta ejecutando más instrucciones por ciclo, pero desde que se puede «obtener» el IPC a través de 1/CPI pues ya os podéis imaginar de donde viene el «aumento» de IPC del que habla AMD.

Mi especulacion se basaria mas en que Oberon, Flute, ariel etc son chips previos para los kits y ue Sony si ha pedido un chip RDNA 2 y que no es un RDNA 1.5, un RDNA 1 con hardware rt y vrs solamente, si no RDNA 2 nativo. Sobre Tflops no lo se.

Una cosa es el conjunto de registros e intrucciones y otra cosa las ALUs, te sorprendería ver como a microscopio si tomas las ALUs de RDNA verás que son las mismas que GCN pero organizadas de otra manera. El hacer un chip nuevo es altamente costoso y de un diseño a otro se utilizan unidades básicas ya previamente utilizadas si no es necesario hacer los cambios en esa parte en concreto y solo se reemplaza lo necesario. Pero alto, que la gente no se confunda, esto no es algo que solo haga AMD, también lo hace Nvidia con los elementos comunes para montar la arquitectura, lo hacen todos los diseñadores de procesadores.

Cuando digo que RDNA 2 a nivel de hardware es RDNA 1 cambiando solo la unidad de rasterizado por una nueva para el VRS y la unidad de texturas por la nueva que tiene la unidad de intersección es porque no hace falta cambiar el resto de la GPU, es una perdida reformarlo todo y más hablando de chips de miles de millones de transistores que requeirian un trabajo humano titánico y un presupuesto enorme.

Los chips son tan complejos que lo que son sus unidades básicas de construcción no han cambiado, se siguen utilizando las mismas. Otra cosa es la organización interna, lo que es su arquitectura. Pero las piezas básicas continúan igual desde hace años para todos los fabricantes.

Mi especulacion se basaria mas en que Oberon, Flute, ariel etc son chips previos para los kits y ue Sony si ha pedido un chip RDNA 2 y que no es un RDNA 1.5, un RDNA 1 con hardware rt y vrs solamente, si no RDNA 2 nativo. Sobre Tflops no lo se.

Flute concretamente no es el nombre de ningún chip sino de la plataforma de testeo de AMD para probar Oberon, el cual es la evolución de Ariel.

Comentario#4:

Hola tendrá complexión de texturas? Me la duda porque rivera bastante la gddr6

Diras compresión de texturas, por supuesto que si, todos los sistemas la tienen desde el momento en que todos los juegos y aplicaciones la utilizan. Tu pregunta no deja de ser una perogrullada.

Comentario#5:

No quiero parecerme al meme lloron pero 16GB es un salto x2 respecto a ps4 es el salto mas pequeño, todas las anteriores gen tuvieron un salto de por lo menos x15 respecto a la memoria de su antecesor

Teniendo ese SSD «magico» tiene sentido descartar el clamshell ¿verdad?

Y la velocidad de la RAM ¿es para alarmarse? Porque si RDNA es más eficiente (que GCN) va a hacer mas pedidos a memoria por segundo, es decir, se va a acercar más al ancho de banda teórico de lo que lo hacia ps4 (que tenía otro cuello de botella además) ¿entendí mal todo?

Mi hipotesis es que Sony ha sacrificado el modo x8/Clamshell para poder colocar el SSD dentro de un coste razonable, de ahí a que tengamos unos 16GB de memoria en un bus de 256 bits en vez de uno de 32GB.

Se ha de tener en cuenta que una de las ventajas de la memoria SSD via PCIe es el enorme ancho de banda que tiene, el salto es espectacular y esto permite volcar de manera muy rápida datos hacía la RAM.

De esto tengo que hacer una entrada, no será urgente pero tenéis que tener en cuenta que la memoria flash es direccionada de la misma manera que la RAM normal, eso si, obviamente es mucho más lenta y esta un nivel por debajo en la jerarquía de memoria pero es lo suficientemente rápido para reemplazar los datos de la RAM principal, obviamente necesita un espacio para realizar dicha operación.

En PlayStation 4 tenemos unos 3GB de RAM para el sistema (Kernel) y unos 5GB para el juego (User), mirando la patente del uso del SSD de Sony queda claro que el vuelco de los datos desde la SSD a la RAM se hace a través del envio de pequeños bloques en el espacio del kernel, donde son comprobados y luego copiados via mecanismo DMA al espacio de la RAM de las aplicaciones.

Para que no os hagais un lio con lo previamente explicado en esta entrada, se ha de aclarar que toda CPU contemporanea divide su propio espacio de memoria en una parte para el sistema operativo (mayor privilegio) y otra parte para las aplicaciones, las aplicaciones no tienen acceso a la parte de mayor privilegió, de la misma manera que ningún periférico tampoco la tiene.

0 0 vote
Article Rating
4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Set

Hay que aclarar que es IPC xD, la definición de IPC es la que pones, las instrucciónes que puede realizar una CPU o GPU por ciclo de reloj. Pero en el mundo de hardware las compañias utilizan este término de forma mas generica, y es para refirerse a mejoras en arquitectura que les pueda propicionar mayor rendimiento a igual de ciclo de reloj, en CPU si se comparan CPU a misma frecuencia y una tiene mas IPC rendira mas, lo que viene siendo que tiene mejoras en la arquitectura sea a nivel de cache, latencias, FPU etc. El IPC es… Read more »

Steven

Hola no sabía si RDNA omitió la compresión por eso la duda perdón la torpeza

Isaac

Buena entrada, y espero por la entrada del SSD
Y Microsoft ¿confirmó la RAM de su consola?¿serán las next gen gemelas en la poca memoria?
Y ya se que cansan los rumores pero habra 2 ps5?
Y Xbox a $300?
Nunca se agota el FUD?

Isaac

Ahora si que me pongo en modo meme lloron: vi una noticia de un smartphone gamer jodancon 16gb de RAM, ya se que no es la misma memoria pero no jodan