Blog Personal.

Uncategorized

¿ARM como Co-CPU en Xbox Series X?

Hace unas horas ha aparecido el rumor de que Xbox Series X utiliza núcleos ARM aparte de los x86-64 (Zen 2).

La fuente es:

El problema es que la fuente es el MisterXMierda de los cojones que mintió y mintió sobre el hardware de la Xbox One y se gano la posición de profeta de muchos «expertillos» que se dedicaron a multiplicar la ignorancia y el ego de este tipo.

Pero caeriamos en una falacia si no analizaramos la situación. ¿Es posible tener dos CPUs con un conjunto de registros e instrucciones dispar en el mismo SoC? Posible es pero… ¿Es posible tener dos familias de CPU dispares accediendo a la misma memoria? Si, si ambas CPUs acceden a espacios de memoria distintos. ¿El motivo? Bueno, es sencillo de explicar y para ello hemos de tener en cuenta como se codifican las instrucciones en todos los procesadores.

Una instrucción se compone de 3 partes:

  • El Opcode de la instrucción, que nos indica la instrucción a realiar.
  • El Modo, el cual indica que versión de la instrucción se ejecuta.
  • El Dato, que indica la información a procesar. Según la instrucción puede ser directamente el dato o la dirección de memoria donde se encuentra el dato.

Los Opcodes son lo que llamamos el conjunto de instrucciones, la familia x86 tiene el suyo propio y la familia ARM el suyo por lo que uno no puede ejecutar el programa del otro, esto significa que aunque uno tenga acceso al código del otro no puede entenderlo. Otra cosa distinta es el direccionamiento, puede ser que dos núcleos tengan opcodes diferentes pero un mismo direccionamiento y recorran la memoria de la misma manera. Esto AMD ya lo hizo en sus GPUs a partir de la serie GCN donde el direccionamiento (pero no el conjunto de instrucciones) es el mismo que en x86-64 y le permite recorrer la memoria de la misma manera e incluso ver el mismo espacio de memoria.

Pero el problema del conjunto de registros e instrucciones ARM es que tiene un direccionamiento distinto, no puedes colocarlo en el mismo espacio de memoria con un direccionamiento concreto porque entonces va dar un sinfín de conflictos e incompatibilidades, simplemente no se puede.

Urian… ¿Se puede ejecutar el Sistema bajo ARM y el juego bajo x86-64?

¿Estáis leyendo lo que os digo? Precisamente eso es imposible porque en el caso de las Xbox hablamos de dos SO ejecutándose en un Hypervisor, no podemos tener dos conjuntos de instrucciones dispares ejecutando nada al mismo tiempo, es una auténtica pesadilla que no aporta nada de nada excepto dolores de cabeza.

¿Que aporta que tengamos que tener dos Hypervisores/Host OS funcionando al mismo tiempo? Es de un masoquismo increíble y unas ganas de complicarse la vida de mala manera, no tiene sentido alguno tener dicha disparidad en cuanto a la CPU.

Pe… pero Urian, PS4 tiene un núcleo ARM para el modo Stand-By

PS4 tiene un núcleo ARM que:

  • Tiene su propia memoria RAM separada de la GDDR5
  • Corre su propio sistema operativo, solo cuando la consola esta en modo Stand-By y por tanto el SoC principal no esta encendido.

En Xbox One el modo Stand-By se hace apagando buena parte del SoC y reduciendo la velocidad de reloj de los núcleos activos. Tened en cuenta que con Xbox Series X va a ocurrir exactamente lo mismo desde que heredará el Software del Sistema de Xbox One.

Ahora bien, existe un núcleo ARM dentro de los chips de AMD, el llamado Platform Security Processor.

En PC no se utiliza, pero en Xbox One es el chip encargado del arranque de la consola, no es el x86-64 el que arranca el sistema sino dicho núcleo ARM que además tiene el privilegio más alto de todos en el sistema. No ejecuta el sistema principal ni los juegos y la CPU puede hacer bypass al mismo a la hora de acceder a memoria.

En Zen2 el PSP se ha mantenido en su funcionalidad…

Cuando instalamos un juego en una consola lo que hace este núcleo es codificar el binario a partir de la clave única de la consola. Las consolas actuales tienen 3 claves asociadas para codificar los juegos:

  • La clave general que tienen todos los juegos, esta solo se encuentra en los juegos en formato fisico.
  • La clave de la propia consola.
  • La clave asociada a la cuenta online.

Tanto Sony como Microsoft tienen guardados en sus servidores de manera muy secreta la clave de vuestra consola asociada a vuestra clave de usuario del PSN o el Xbox Live. Cuando os compráis un juego en digital lo que hace el Secure Processor es utilizar esas dos claves para encriptar.

Si un binario de Xbox One lo copiamos en una consola distinta, aunque sea nuestra consola y lo decidimos ejecutar el Secure Processor verá que la clave de desincriptación que tiene la nueva consola no es válida para desencriptar los datos y le dira… ¡STOP! por lo que no lo dejará ejecutar.

Lo que muchos no sabéis es que tanto Microsoft como Sony tienen contabilizados los juegos de segunda mano y quien los ha tenido, por que manos han pasado y si quisieran podrian implementar una medida que al colocar un juego de segunda mano en una segunda consola este no se pudiese ejecutar. Los mecanismos están ahi, pero no se ejecutaron por la polémica con la segunda mano que hubo en el E3 de 2013 que dejo la imagen de Microsoft por los suelos y porque la profecía del fin del formato físico en videojuegos no se ha cumplido incluso después de todos estos años.

Volviendo al tema de la útilidad del núcleo ARM en Xbox One y PS4, cuando la CPU quiere acceder a la RAM no lo hace utilizando el núcleo ARM porque añadiria mucha latencia, solo lo hace durante las instalaciones. Durante el juego solo lo hacecuando tiene que volcar del Disco Duro a la RAM y a la inversa. Es decir, a lo que esta conectado el núcleo ARM realmente es a la IOMMU.

Todas las CPU modernas de propósito general disponen de una unidad de gestión de la memoria principal (MMU), pero no solo la RAM es direccionable, también a los periféricos se les asigna un direccionamiento de memoria que es manejado por la IOMMU. Por ejemplo cuando la CPU envía la lista de comandos gráficos a la GPU lo hace a través de la IOMMU, cuando espera conseguir un dato del Disco Duro es la IOMMU que actua.

Si el núcleo ARM tiene acceso al Disco Duro entonces ha de pasar por la IOMMU… ¿Pero que utilidad adicional puede tener respecto a la actual generación?

Bueno, esto lo teniamos en la patente de Sony sobre el SSD, la llamada Sub-CPU que es la que se encargaba de ir a pedir el dato al SSD según la patente.

La Sub-CPU no ejecuta ningún programa sino que se encarga de tomar las peticiones a la memoria flash que hace la CPU. La petición de memoria llega al controlador de la memoria flash que copia los datos a través de una unidad DMA a la RAM pero pasando por la Sub-CPU (núcleo ARM) para realizar la comprobación de los datos que os he comentado antes, es decir, si la encriptación es la correcta.

Es decir, el sistema de acceso a la SSD sería el mismo en Xbox Series X y PlayStation 5. ¿Para que desarrollar dos distintos y complicarse la vida? Obviamente para las partes fuera del SoC de AMD cada fabricante tendria su método exclusivo, pero en el dominio del SoC principal no.

¿Y no puede ser que los núcleos ARM se utilicen para otras funcionalidades?

No, mirando las funcionalidades del SoC es la única que se me ocurre y que tiene sentido. ¿Puede que no sea así? Puede, pero es lo que tiene más sentido que los núcleos ARM se utilicen para monitorizar el acceso de datos a la SSD, pero no como CPU principal en conjunto con el Zen 2.

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

0 0 vote
Article Rating
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Isaac

Hay nueva info de la series X, la leí en the verge. No se postear links 🙁
En resumen:
Tarjetas de expansión de 1TB
Ram 16GB; 10 rápida (560gb/s), para GPU; el resto standar (336gb/s)
Y lo d siempre 4K 60/120fps
Espero que Microsoft y Sony saquen una versión 4K y una HD, mi bolsillo no da para mucho. Hubo rumores de Xbox SS a 300 (parece exagerado)
También hay info del joy d Xbox SX pero no me fijé
Edit: encontré la velocidad y la agregué