Respondiendo a shaderyt (II)

Me habéis pedido que utilice como referencia un documento de la propia Microsoft que es este, desde el momento en que no es una paja mental y si una fuente primaria no tengo problemas en utilizarlo para obtener información. En la entrada anterior acabe diciendo que no sabía como complementar las cosas por falta de información en ciertos elementos, hoy puedo responder mucho mejor a las preguntas que hizo shaderyt.

Hagamos memoria de las preguntas que hizo shaderyt en su comentario:

Buenas urian, unas preguntas, porque he escuchado cosas sobre el pdf ese y tengo dudas.

  1. ¿supone una desventaja que el proce de ps4 tenga menos ancho de banda?
  2. ¿cuanto ancho consume el chip de sonido de one?
  3. ¿la one puede tener mas ancho de banda sumando ddr3 y esram?

Sobre la primera pregunta más tarde matizo:

Vaya no me esperaba que dedicaras una articulo a responderme xD, y sobre lo primero sí claro me refiero a lo dedicado a la CPU. Un argumento que siempre he escuchado a los que defienden la arquitectura de la ONE es el tema de que la ONE dedica mas ancho de banda a la CPU como si supusiera una ventaja significativa, algo que no me cuadra nada y mas viendo que eso deja a la GPU mas coja que antes. Seguire esperando la respuesta definitiva, no tengo los conocimientos que tu como para sacar la respuesta.

Saludos.

Vamos a ir por faena, en primer lugar el motivo por el cual mucha gente dice que la CPU tiene un mayor ancho de banda que la CPU de PS4 viene por el famoso diagrama del Hotchips:

xbox_one_soc_diagramaanotado

En dicho diagrama conocemos el ancho de banda de la parte nombrada como CPU-Cache-Coherence-Memory Access con el controlador de memoria DDR3, pero desconocemos por completo cual es el ancho de banda entre el CCCMA y la CPU por un lado y el del CCCMA y la GPU por otro. El CCCMA pese a que en el diagrama tenga un nombre tan rimbombante no es más que un Crossbar Switch (lo que se traduce en interruptor en matriz) y su trabajo no es otro que controlar el tráfico de datos de los diferentes elementos conectados a este entre si por un lado y por el otro controlar el acceso a la memoria.

El mejor simil para entender su función es hacer la comparación con el tráfico de una ciudad:

night-traffic-new-york-city

Obviamente si no hubiesen mecanismos de control a la hora de acceder a cada una de la vías (señales de trafico, semáforos, direccionamiento obligatorio de las vías…) entonces no se podría circular. Ahora bien, al igual que ocurre con una ciudad hay zonas donde se puede ir a más o menos velocidad, el hecho de que el acceso desde el CCCMA en Xbox One al controlador de memoria DDR3 sea de 30GB/seg, no significa que todos los componentes tengan ese ancho de banda. Mirando el documento que he mencionado a principio el artículo me encuentro con el siguiente diagrama:

Captura de pantalla 2014-12-04 a la(s) 17.05.45

¿Con que nos encontramos? Hay una “carretera” que va una velocidad de 10GB/seg por modulo Jaguar que comunica la CPU con el CCCMA pero no es el único bus existente que comunica la CPU con otros elementos. ¿Entonces a que se refiere Microsoft? En la entrevista a los arquitectos de la consola dejan muy claro a lo que se refieren:

… nos hemos dado cuenta que es muy importante el ancho de banda para las cargas de trabajo de la GPGPU y este uno de los motivos por el cual hemos realizado una gran apuesta en el ancho de banda coherente para lectura que tenemos en nuestro sistema.

Para procesamientos del tipo GPGPU (hechos en conjunto entre CPU y GPU) es necesario que ambos sistemas tengan coherencia de cache. ¿Pero cual es el ancho de banda que tiene la GPU de Xbox One en este tema? En este diagrama se ve perfectamente:

Captura de pantalla 2014-12-10 a la(s) 12.57.11

El bus coherente de la GPU con la CPU es de 32GB/seg para lectura, este bus es común en todas las APUs de AMD y es el Fusion Compute Link aka Onion:

Captura de pantalla 2014-12-10 a la(s) 12.59.28

Microsoft a simple vista ha decidido coger el FCL y aumentar sus capacidad. En cambio la solución de Sony no es 100% igual, en la entrevista que concedió Mark Cerny a Gamasutra respecto al hardware de PS4 se comento esta problema común en todos los sistemas y la forma en que lo han solucionado en PS4:

“Una GPU típica de PC tiene dos buses” dice Cerny. “Existe el bus que utiliza la GPU para acceder a la memoria de video y existe otro bus que va a través del PCI Express que la GPU utiliza para acceder a la memoria del sistema. Pero independientemente del bus que se utilice, las caches internas de la GPU son una barrera para la comunicación CPU/GPU en cualquier momento en que la GPU quiere leer la información que ha escrito la CPU, o la GPU escribe información de tal manera que la CPU puede verla se pierda tiempo limpiando las caches internas de la GPU.”

¿Cual es la solución? Pues unificar el espacio de direccionamiento y hacer que la GPU pueda leer el contenido de la cache de nivel 2. En el caso de PS4 lo hacen a través de un bus especial:

Hemos añadido otro bus a la GPU que le permite leer o escribir directamente a la memoria del sistema, haciendo bypass a las caches L1 y L2 de la propia GPU. Como resultado, sí un dato se pasa entre la CPU y la GPU es pequeño ya no tienes problemas con la sincronización. Y por pequeño me refiero a pequeño en términos de siguiente generación. Podemos pasar casi 20 GB/seg por ese bus. ¡No es poco en términos de hoy en día, es mayor que el PCIe de muchos PCs!

Este bus adicional también lo tiene el AMD Kaveri, es el llamado Onion+, fijaos en el No en la columna HSA CU L2? de la siguiente diapositiva:

Kaveri Onion +

 

La diferencia entre el FCL/Onion y el Onion+ es que el último permite la comunicación entre CPU y GPU prescindiendo por completo de las caches de la propia GPU y por tanto elimina la necesidad de hacer coherente la cache de la GPU con la de la CPU al hacerla complementa prescindible en la ecuación. En realidad son dos planteamientos distintos para un mismo problema y en ningún momento estoy haciendo un juicio de valor acerca de cual es mejor de ambos. La solución de Microsoft apuesta por el ancho de banda pero desde el momento en que no han definido el bus de la misma manera que el Onion+ por lo que podemos deducir que la solución que han tomado es aumentar el ancho de banda del Onion.

Veamos ahora la segunda pregunta:

¿cuanto ancho consume el chip de sonido de one?

istockphoto_4894377-don-t-know

No lo sabemos, Microsoft no ha dado el dato.

Y en cuanto a la tercera pregunta:

¿la one puede tener mas ancho de banda sumando ddr3 y esram?

Esta pregunta tiene miga ya que si miramos el diagrama del sistema veremos que la interconexión con la ESRAM no es la misma que la interconexión con la DDR3. Perdonad de paso por poner otra vez el diagrama de un poco más arriba:

Captura de pantalla 2014-12-10 a la(s) 12.57.11

Como se puede ver desde el GPU MMU la ESRAM esta conectada directamente a este y no al Northbridge de la GPU, al ser caminos distintos uno puede pensar que se suman pero hay un detalle que la gente no tiene en cuenta. Si yo estoy operando con los datos m en el espacio de memoria a no tiene sentido acceder al espacio de memoria b donde los datos m no se encuentran. Es más, el motivo por el cual existen los Move Engines ala Swizzle Copy Engines es para copiar datos de un tipo de memoria a otra.

Por cierto, perdón por el retraso al responder.

Anuncios