Naughty Dog explica los detalles de la arquitectura de Playstation 4

Durante una conferencia en la Semana Informática de Lisboa Jason Gregory, programador jefe de Naughty Dog ha explicado con detalle la arquitectura de Playstation 4 incluyendo CPU, memoria o la caché de la consola, además de dar algunas pinceladas sobre la optimización de código en la nueva consola de Sony tal y como se han echo eco en DualShockers.

En primer lugar, Jason Gregory explicó que 8 Gb de memoria pueden parecer mucho, pero realmente solo 5 Gb se usan para los juegos y se llenan muy rápido. Por ello, en Naughty Dog son muy cuidadosos para asignar la memoria y usarla de forma eficiente. La fragmentación de la memoria es uno de los mayores enemigos de los programadores ya que puede hacer que la memoria se llene más rápido de lo normal. Naughty Dog lo soluciona con patrones de asignación personalizados.

Naughty-Dog-Arquitectura-PS4-(1)

El equipo también incluye mapas de memoria explícitos, que en un momento dado dicen en qué se está usando la memoria y de que tipo es. Esto es muy importante ya que, en muchos kits de desarrollo, especialmente en los de Playstation 3, se cuenta con el doble de memoria, que usa para depuración. Lógicamente el juego no debe usar esa memoria.

Naughty-Dog-Arquitectura-PS4-(2)

En cuanto al procesador, Jason Gregory describe Playstation 4 como una máquina altamente paralela. Hay 8 núcleos, divididos en 2 grupos, de los cuáles 6 se usan para los juegos y los otros 2 están reservados para el sistema operativo. El sistema también usa la GPU como parte superior de estos 6 núcleos, ya que está capacitada para ejecutar código (GPGPU). Cada núcleo de la CPU ejecuta un subproceso de trabajo , y mientras que el primero se encarga del bucle principal del juego, otras tareas son distribuidos entre los cinco núcleos restantes.

Naughty-Dog-Arquitectura-PS4-(3)

La GPU es más potente de lo necesario para mover gráficos a 1080p y 60 hz ya que la idea era dar a la consola recursos de GPU adicionales para fomentar el procesamiento paralelo por lo que los programadores pueden usarla para el sístema físico, simular ropa o líquidos, por ejemplo, en la GPU.

Naughty-Dog-Arquitectura-PS4-(4)

Otro concepto muy importante es la opmitización y para ello es fundamental la regla “80/20” que dice que un programa gasta el 80% de su tiempo de ejecución en aproximadamente el 20% del código. El resto del código rara vez se ejecuta.

Naughty Dog asegura que trabajó con Sony en un “sistema de trabajo” para Playstation 3 con el fin de hacer un uso eficiente de la CPU multinúcleo y aseguran que han desarrollado otro sistema similar para Playstation 4. Naughty Dog se centra el optimizar este 20% realmente importante ya que optimizar el otro 80% es “perder el tiempo”. Conocer el hardware es muy importante también, ya que hay partes del código que se pueden adaptar a un elemento concreto del mismo.

Naughty-Dog-Arquitectura-PS4-(5)

Parte fundamental de la optimización de código es el almacenamiento en caché. Los procesadores modernos tienen un número bastante elevado de ciclos para acceder a los datos de la memoria RAM principal, que es grande. Luego hay un caché de memoria mucho más pequeño llamado L2 ,que es mucho más rápida. La caché L1 que es incluso más rápida, y luego están los registros en ​​el propio chip que son muy pequeños, pero básicamente instantáneos.

Naughty-Dog-Arquitectura-PS4-(6)

La PS4, en concreto, tiene ocho núcleos dispuestos en dos grupos. La caché L2 en realidad está dividida en dos, una para cada grupo, y la comunicación de cada grupo a su propia caché L2 lleva 26 ciclos. La comunicación entre un clúster y la caché L2 unido al otro grupo es mucho más lenta, tomando 190 ciclos. Además de eso, cuando se lee un solo byte en la memoria RAM principal, también carga en su conjunto 64 bytes de memoria en la memoria caché.

Naughty-Dog-Arquitectura-PS4-(7)

Naughty-Dog-Arquitectura-PS4-(8)

Un último detalle muy interesante es que la PS3 tuvo un terrible hardware de predicción de saltos en la CPU, por lo que si se producen muchos saltos en el código a menudo producían mal rendimiento si no se le sugería antes a la CPU, simplemente porque la CPU no era buena para predecir lo que el código iba a hacer. PS4, por su parte, tiene un hardware de predicción de saltos “realmente bueno”, que “adivina” lo que hará el código, eliminando la necesidad de que todo el trabajo adicional que era necesario en la PS3.

Si os habéis quedado con ganas de saber más. Siempre se puede ver la conferencia completa.

Autor entrada: BigBoss_