Hace unas horas ha aparecido el siguiente rumor:

Según Resetera y NeoGAF, el tal Benji es una fuente fiable… ¿Que significan esos número? Para empezar dice «Nearly» que significa casi, es decir que se aproxima pero no esta por debajo, teniendo en cuenta los 1.8 Ghz de velocidad pico de la GPU del SoC Ariel.

GhzCUsFLOPS x CUTFLOPS
1,8361288,29
1,8401289,22
1,84412810,14
1,84812811,06
1,85212811,98
1,85612812,90
1,86012813,82
1,86412814,75

Es decir, estaríamos hablando de una configuración de 56 Compute Units en total y si las especificaciones son ciertas estarían por encima de las rumoreadas especificaciones de Navi para PC que he ido comentando estos días. Mi hipotesis siempre ha sido que Ariel es 2x Fenghuang/Fireflight… ¿Significa esto que dicha hipotesis se va a la mierda? No, realmente no y ahora os explicare el motivo:

La realidad es que fisicamente Fenghuang tiene unos 28 CUs, esto lo sabemos por los datos que se filtraron de dicho SoC meses antes de su presentación:

El cambio que hizo AMD en dicho chip fue dejar unas 4 CUs para la redundancia (1 por Shader Engine) y cambiar el controlador HBM2 por un controlador GDDR5, lo cual tiene sentido por el tema de costes. En realidad Fenghuang/Fireflight/15FF no es más que el llamado Vega M GH pero en formato SoC…

… Y esto lo digo porque es la misma GPU que en el Kaby Lake G esta separada por completo pero encima del mismo sustrato/interposer.

Tened en cuenta que tanto CPUs, GPU, como lo SoC en si mismo se componen de pieza interconectadas entre si que se pueden cambiar por unidades más simples o complejas, las especificaciones dicen que hay 24 CUs pero si miráis la litografia de la GPU atentamente podreis ver como hay 4 grupos de 7 CUs…

El tamaño de la GPU entera (no solo la unidad GFX) es de unos 16,10mm x 12,90mm (207,69mm²), por lo que realmente la unidad GFX que es lo que nos interesa como GPU ya que el resto de elementos estarían en el SoC esta por debajo de los 200mm^2… teniendo en cuenta el salto en densidad es 2X pues podemo colocar perfectamente una GPU con 56 CUs a 7nm y además hemos de sumar que hay elementos que no se duplicarían. Obviamente la GPU de PS5 es una AMD Navi que es mucho más avanzada que esta. Es más, la GPU del Fenghuang/Fireflight/15FF ni tan siquiera es una AMD Vega real porque su código es GFX803/GFX804, el cual recibe el nombre de Polaris 22.

¿Y como es eso si un derivado de Raven Ridge y este tiene una GPU Vega? En realidad esto tiene una trampa, ya os comente que es a través del anillo Infinity Fabric que la la GPU del Raven Ridge se puede integrar en el SoC. En el caso de la GPU del Kaby Lake G no es necesario, para que lo entendáis mejor la GPU del Kaby Lake G y la GPU del Fenghuang/Fireflight/15FF tienen la misma unidad GFX pero una carece del anillo Infinity Fabric y esto lleva a que buena parte de sus funciones se vayan a la porra, para entender las consecuencias de esto os remito a una entrada reciente, concretamente en la que divago acerca de las posibles especificaciones de la GPU de PS5.

Ahora bien, hay un tema respecto a PS4 Pro en el que se que muchos van a venirme a…

Yo soy de la teoría que en el hardware de PS4 Pro el famoso Rapid Packed Math, eso de poder subdividir una ALU de 32 bits en 2 de 16 bits no esta realmente aunque Cerny lo promociono. Si tenéis acceso a la documentación del SDK y buscáis bien veréis que hay cosas que Cerny referencio como que la GPU de PS4 Pro es una AMD Polaris e incluso funciones que no están. De este tema hable en su día y de manera muy detallada además.

En realidad AMD tiene dos Compute Units en el catálogo, la CU normal y la NCU de Vega, la NCU es la que tiene la capacidad de subdividirse para operar a menor precisión con un ratio mayor. En realidad dicha Compute Unit no tiene una configuración de SIMD16 en FP32 sino SIMD8 en FP64, y existiendo dos unidades SIMD de ese tipo.

En cambio la clásica Compute Unit (4x SIMD16 FP32):

Es decir, AMD le puede montar a Sony y/o Microsoft cualquiera de las dos tipos de Compute Unit en su catálogo. No digo que no vaya a implementar cosas como el Rapid Packed Math, pero esto lo puede hacer desde ALUs FP32 sin necesidad de integrar una de 64 bits que no aportan nada. Es más, hay un post extremadamente técnico en Beyond3D sobre los cambios en Navi. Del cual lo que me ha llamado poderosamente la atención es lo siguiente:

Unas pocas omsiones o reapariaciones de características que son también interesantes.

GFX10 (Navi) marca el retorno de un flag indicando que no hay SRAM ECC, lo cual se espera en una arquitectura de gaming.

Una reintroducción menor es FeatureMIMG_R128, el cial es utilizado para los formatos de textura que Vega retiro.

Lo del ECC lo tenéis en la diapositiva de la Compute Unit, se basa en que cada byte pasa a ser de 9 bits por aplicar el bit de paridad, provocando que la SRAM ocupe un espacio mayor por eso noveno bit. No se utiliza en Gaming por lo que tiene sentido descartarlo.

Una potencial omisión es la falta del
FeatureGCN3Encoding para GFX10. He visto en varios foros que Navi e una repudación de Vega y que es el retorno a Polaris o algo por el estilo. Sin embargo la falta del GCN3 encoding flag (y he revisado algunos de los opcodes listados en actualizaciones posteriores) parecen indicar que un signicativo número de opcodes han sido cambiado para coincidir con las instrucciones de la generación de consolas (actual), como si estuviesen presentes.

Así que GFX10 parece tener una mezcla del retorno de algunas operaciones de tal manera que se alinea con las consolas, mientras que mantiene las má recientes o las más nuevas carácteristicas de GFX8 y GFX9.

Esto es muy importante, se dice que la ISA GCN es común entre todas las GPUs de AMD.. ¿Cierto? Pues no, porque GCN3 es incompatible con GCN2. Es como si yo vendiese una CPU x86 como tal y la mayoría de instrucciones via ensamblador no funcionasen y los compiladores tampoco. A lo que se refiere el post es que la ISA de Navi deriva de la ISA de Sea Islands (GCN2) por temas de compatibilidad hacía atrás en las consolas de siguiente generación:

Este es en parte uno de los motivos por los cuales Polaris (extensión de GCN3) no es la arquitectura de la GPU de PS4 Pro. Por otro lado, esto es sumamente interesante porque marcaría que AMD tendría una sub-ISA GCN para consolas derivada de Sea Islands que habría sido avanzada en paralelo, siendo la primera GPU en implementar esto la de Xbox One X para su compatibilidad con Xbox One mientras implementa las novedades en Polaris, tened en cuenta que el SoC de Xbox One X es unos meses por no decir un año posterior al de PS4 Pro.

¿Que significa todo esto? Pues que la Compute Unit de Navi no es una evolución de la de Vega y estaría más alineada a la Compute Unit clásica pre-Vega. Esto no significa que funciones de Vega que no tienen nada que ver con las Compute Units desaparezcan sino al contrario pero si lo pensamos detenidamente tiene sentido que las Compute Units en una configuración Pre-Vega y con una ISA derivada de la GCN2 pero extendida para equiparse a la GCN4 (Polaris) y GCN5 (Vega).

No nos podemos olvidar que la única implementación que conocemos en cuanto a modificar una Compute Unit para implementar las Traversal Units/RT Cores que conocemos en una GPU GCN de AMD se basa en la leve modificación de la Compute Unit clásica…

… y aunque repito no tiene porque ser 100% así viendo como la ubicación de las RT Cores en Turing no creo que difiera en su colocación respecto a Turing.

Tened en cuenta que si se acercan a las especificaciones del Paper donde hablan de la implementación de una Traveral Unit en GCN estaríamos hablando de que añadiendo un >10% de complejidad a cada Compute Unit le ahorramos unos 100 Ops/ciclo por cada Compute Unit de cara a calcular la intersección de los rayos y hemos de tener en cuenta que el Raytracing no solo es para gráficos sino también para audio y más cosas.

Por otro lado y para terminar, esto nos responde a la pregunta del principio de esta misma entrada de si AMD puede colocar la «vieja» Compute Unit en Navi en vez de la de Vega, obviamente con una serie de cambios puntuales sobre esta. Y por cierto, sobre el tema de la memoria ya lo comentare en otra entrada, más que nada porque hay un «dato» reciente que merece ser tratado aparte.

Esto es todo, como siempre tenéis el Discord y los comentarios de la misma entrada para comentar el contenido de la misma.