Blog Personal.

Uncategorized

PlayStation 5 (II): Coherency Engine

Uno de los problemas para los desarrolladores de softare es tener que lidiar con varios pozos de memoria e irlos sincronizando, para ellos es mucho más fácil tener un pozo universal, pero para conseguirlo el hardware se ha de complicar enormente, lo que hace que los ingenieros de hardware se pongan en modo…

Cuando hablamos de coherencia significa que todos los elementos que acceden a memoria la vean de la misma manera, esto significa que si un elemento hace un cambio en una linea de memoria los otros se enteren. Este mecanismo que para los desarrolladores de software es transparente para los de hardware es un jodido infierno ya que tienen que crear mecanismos para avisar a todos los componentes que acceden al mismo espacio de memoria.

La coherencia se ha ido implementando con el tiempo a diferentes niveles, y es bueno hacer un repaso histórico general para entenderlo.

  • El primer nivel es dentro de los clusters de CPUs, si nos fijamos en lo que es el CCX de los Zen/Zen2 se trata de un cluster donde la Cache L3 es encargada de mantener la coherencia entre los diferentes núcleos. En el caso de Jaguar para PS4 y PS4 Pro y su cache L2 también ocurre lo mismo.
  • El segundo nivel de coherencia es entre los clusters de una CPU pero que están fisicamente separados, Para ello se conectan estos a un uncore/northbridge que es el encargado de informar de los cambios del otro cluster. Para ello mira los cambios en la cache de un cluster para informar al otro.
  • El tercer nivel consiste en conectar el Southbridge (E/S) como cliente del uncore/Northbridge y darle acceso coherente también a los periféricos.

En el segundo y tercer nivel es el Northbridge/Uncore el encargado de mantener la coherencia de la cache con tal de tener un espacio de memoria unificado. Al mismo tiempo todos los accesos a la RAM los hace el Northbridge/Uncore en vez de los diferentes componentes por separado.

Esto es lo que AMD tiene integrado en los SoC basados en Ryzen para PC, la GPU no tiene acceso privado a la memoria sino que lo hace a través de la conexión con el Data Fabric via una interfaz IF de 32 Bytes/ciclo, lo cual es extremadamente limitado.

Para conectar la GPU al Northbridge/Uncore/Data Fabric en el caso del RDNA 2 de PS5 (y el de Xbox Series X) necesitariamos un total de 16 interfaces Infinity Fabric hacia el uncore.

Los uncores de los SoC de AMD no están preparados para ello, si se quisiera entonces el tamaño del mismo aumentaría de mala manera, porque a más clientes para el uncore más complejo es este. Pero el aumento no es lineal sino exponencial en cuanto a complejidad y el tamaño de este aumenta enormemente hasta el punto de no ser viable.

La necesidad de un alto ancho de banda hace que la GPU y no de complicar el uncore hace que la GPU tenga su propio acceso a la memoria que no es coherente en el caso de necesitar un alto ancho de banda, esto rompe la coherencia de cache y hace que la GPU acabe siendo esquizofrénica en cuanto a la memoria, teniendo dos espacios de memoria distintos a manejar, lo cual no es lo que quieren los desarrolladores como he comentado antes.

En los SoC para PC al hacerse el acceso a través del uncore en exclusiva esto permite que las Caches de la GPU en ese caso puedan ser coherentes ya que hay un solo espacio de memoria, pero no se puede hacer con dos espacios de memoria y es aqui donde entra el Coherency Engine colocado en el IO Hub/Complex, el cual esta comunicado con el Data Fabric y le informa a la GPU de los cambios en la memoria consiguiendo con ello la coherencia completa en cuanto al direccionamiento de memoria de tal manera que la GPU ve la memoria igual que la CPU sin tener que acceder a través del Data Fabric cuando necesita acceder a ella.

Esto no significa que el bus de la GPU con el Uncore/Data Fabric haya desaparecido dado que lo necesita para comunicarse con el resto de periféricos pero ya no hace falta tener un uncore enorme para mantener un ancho de banda adecuado un sistema de memoria totalmente coherente para todo el sistema.

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

0 0 vote
Article Rating
6 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Yon

una pregunta leyéndote las entradas sobre PS5 y XBSX, toda esta diferencia que hay, aparte de tener posiblemente una PS5 más barata que la XBSX ¿puede que sea una consola de tamaño bastante más pequeño que la XBSX?

Franer

Al menos yo pienso que si, fácilmente pueden crear un sistema de tamaño comedido y diseño minimalista, si no se les va la olla con la refrigeración. Pero supongo que intentarán reducir el nivel acústico de sus actuales ps4.

Charli

Urian la ps5 utiliza las tarjetas ssd? No he visto que dijeran nada, no sera un handicap cuando tengas el ssd completo?

Isaac

Si, y van a aceptar algunas tarjetas NVMe de terceros

Darko

Te comento. Están ahora con un mixer de DX y acaban de anunciar DX12 Ultimate para tier 12_12

Xbox Series X y PC tendrán la misma API DX.

[…] En cuanto el quinto, es el Coherency Engine del que os he hablado hace unas horas. […]