El Apple A12 Bionic tendría un mejor rendimiento que el Kirin 980 ya que ambos tienen 6,9 mil millones de transistores y iOS estaría mejor optimizado para ejecutarse en el A12 Bionic que Android Oreo o Android Pie en el Kirin 980? Artboard

TL;DR

El Apple A12 Bionic superaría al Kirin 980, y no es por un pequeño margen tampoco. Superará al Kirin 980 en términos de rendimiento de la CPU, rendimiento de la GPU y rendimiento de la NPU también. La única área en la que el A12 se queda corto es en el ancho de banda 4G LTE, que el chip carece de un módem y tiene que utilizar uno diseñado por Intel. Ahora, para cualquiera que vaya a llamarme fanboy de Apple, voy a ser frontal ahora mismo y decirles que esta respuesta será imparcial, y que voy a presentar información objetiva en forma de números de referencia en bruto.

La CPU

Primero, la historia. Desde la llegada del iPhone 4 y su System on a Chip (SoC) A4, Apple ha diseñado su propio silicio. Ojo, con diseño me refiero a que licenciaron diseños off the shelf de ARM, en forma de la CPU ARM Cortex A8 (sí, singular. Sólo tenía un único núcleo), y también diseños off the shelf de GPU de Imagination Technologies en forma de GPU PowerVR SGX535. En 2012, Apple decidió que la concesión de licencias de componentes estándar era un factor que limitaba mucho lo que quería conseguir, así que diseñó su primer núcleo de CPU propio, con el nombre de código Swift. En 2013 se produjo una enorme revolución en el mercado de las CPUs para móviles, cuando Apple lanzó el chip A7 con los primeros núcleos de CPU de 64 bits para móviles, cuyo nombre en clave es "Cyclone". Fue un cambio masivo, no porque fuera de 64 bits, sino porque Apple no estaba bromeando cuando anunciaba una "CPU de clase de escritorio". El diseño del núcleo se parecía más a la arquitectura Haswell de Intel que a cualquier otra arquitectura móvil. Las dos imágenes siguientes muestran el diagrama de bloques del núcleo Swift de Apple y el núcleo Krait de la competencia, que también fue diseñado a medida:

main-qimg-b99bc62748e5034ab87b4c289a159e69 main-qimg-73d84b1555b470296c6396804e9f6c8e

.......Y aquí está Cyclone.......

main-qimg-de7f8d5b5d3af0623c48c642a98268de

No hace falta ser un experto para ver que Cyclone era un diseño de CPU mucho más complejo. Tenía un frontal de 6 anchos (señalado por los bloques decodificadores de la parte superior en azul), frente a los 3 anchos de Swift y Krait. Esto permitía a Cyclone decodificar mucha más información por reloj, lo que se traducía en un aumento de rendimiento del 100% respecto a Swift, manteniendo las mismas velocidades de reloj. Sólo por mierdas y risas, estoy lanzando el diagrama de bloques para Haswell:

main-qimg-02bfa1c9e22718e0babd3b9e894b12ed.webp

Nota algunas de las similitudes: tanto Haswell como Cyclone tenían buffers de reordenación de 192 entradas (ROBs), y también ambos tenían 8 puertos al final. Fue un gran cambio en el diseño tradicional de las CPUs móviles.

Adelante, 6 años, el Apple A12 tiene un par de núcleos de alto rendimiento de 64 bits y 7 de ancho con el nombre en clave de "Vortex" que funciona a 2,5GHz de pico, y cuatro núcleos de eficiencia energética con el nombre en clave de "Tempest", que es un diseño de 3 de ancho con una frecuencia de pico de 1.58GHz, muy posiblemente una reutilización de los núcleos Swift en el A6, pero rediseñados para ser de 64 bits, y combinados con un montón de caché extra.

Mientras tanto, el Kirin 980 utiliza cuatro CPUs ARM Cortex A76, dos a 2,6GHz, y dos a 1,9 GHz. El Cortex A76 es una revisión importante del diseño del Cortex A75, esta vez con un frontal de 4 en lugar de 3 del predecesor. El Kirin 980 también viene con 4 núcleos Cortex A55 con una frecuencia de 1,8 GHz para las tareas de bajo consumo, aunque según las conclusiones de AnandTech, los pequeños núcleos eran tan lentos que resultaban insuficientes para la mayoría de las tareas, y a menudo se utilizaban los núcleos de alto rendimiento en su lugar.

AnandTech ha realizado toda una suite de benchmarks que probaban el rendimiento de los enteros y el punto flotante, así como el rendimiento de la caché y demás. La suite de benchmarks que utilizó fue Spec2006, que no es tan conocida como Geekbench, posiblemente porque no es tan sencillo como descargar una aplicación y ejecutarla en el teléfono. Sin embargo, este conjunto de puntos de referencia es el estándar de la industria para móviles y PC, y se utiliza para probar el rendimiento de los enteros y el punto flotante para muchas tareas, como las simulaciones de física y el procesamiento de imágenes. Estos son los resultados:

main-qimg-f30e843d6916ed46930df6b81b3e57c5

En cuanto al rendimiento de los enteros, el núcleo Vortex supera a la competencia, normalmente con un margen enorme. Al mismo tiempo, en la parte izquierda de la gráfica, consume menos energía realizando los benchmarks. Echemos un vistazo al rendimiento en coma flotante.

main-qimg-5c7e59cc799530f1819d88954d14d58d

Una vez más, el núcleo Vortex de Apple supera con creces a la competencia, perdiendo sólo en el benchmark 447.dealII tanto en rendimiento como en consumo de energía.

main-qimg-fa9f98ae6b10579acabe70624b5f27d4

Por último, este gráfico resume las puntuaciones medias de todos los benchmarks de enteros y FP, así como el consumo de energía de los chips. Los núcleos Vortex son casi el doble de rápidos que su competidor más cercano, los núcleos M3 diseñados a medida del Exynos 9810, y consumen mucha menos energía que cualquiera de la competencia. Los núcleos Cortex A76 no aparecen en esta lista, ya que no han sido sometidos a pruebas de rendimiento en el momento de escribir esta respuesta. Sin embargo, la propia Huawei ha afirmado que el Kirin 980 tendrá un 75% de rendimiento superior al Kirin 970, que todavía utiliza el Cortex A73 de hace dos años, y también tendrá un 37% de rendimiento superior a los núcleos Kryo 385 Gold que se encuentran en el Snapdragon 845, que era una versión semipersonalizada del Cortex A75 del año pasado. Teniendo en cuenta estas métricas, el Kirin 980 debería tener una puntuación media SpecInt2006 de alrededor de 23, que está muy lejos de la puntuación de enteros del A12, que es de 44,92.

main-qimg-b8e8098d3dea7c74cb2bdf8b711154e3

El rendimiento se valida aún más a partir de la información que aparece en el sitio web de ARM. ARM afirma una mejora del 90% en el rendimiento de los enteros con respecto al Cortex A73, pero eso' es cuando el núcleo A76 fue programado a 3GHz. Si miramos el aumento del rendimiento en coma flotante del Cortex A76, vemos un incremento del 150% respecto al A73. Si lo volvemos a poner a la frecuencia de 2,6 GHz del Kirin 980, debería haber un aumento de aproximadamente el 110%, suponiendo que se escalara perfectamente. Eso haría que la supuesta puntuación Specfp2006 fuera de alrededor de 33,8, menos incluso que los núcleos Monsoon del A11, y mucho menos que el Vortex del A12.

Volviendo nuestra atención a los pequeños núcleos, el editor de AnandTech Andrei Frumusanu dijo lo siguiente sobre los pequeños núcleos:

El núcleo Tempest es una microarquitectura de 3 anchos fuera de orden: De entrada, esto significa que tiene muy poco que ver con los propios núcleos "pequeños" de Arm, como el A53 y el A55, ya que estos son diseños más sencillos dentro del orden.

La ejecución fuera del orden (OoO) significa que si una pieza de datos está tardando más de lo normal en el pipeline, la CPU puede procesar otras piezas de datos fuera del orden original, y entonces los datos se introducen en un Reorder Buffer (ROB) para volver a colocarlos en orden. Esto ahorra muchos ciclos de la CPU que de otro modo se desperdiciarían en un diseño dentro del orden.

main-qimg-1803b6a4364d165abb0163b720e65449

Mirando este gráfico, lo que realmente destaca es que los pequeños núcleos del A12, y también el A11 del año pasado, en realidad tenían un rendimiento de enteros similar en comparación con los grandes núcleos del Snapdragon 835 y el Kirin 970, aunque el rendimiento de punto flotante muestra que Tempest y Mistral se quedan ligeramente atrás.

AnandTech también señaló que la ejecución de la suite de pruebas Spec2006 en los Cortex A55 y A53 (los pequeños núcleos propios de ARM) fue penosamente lenta, y los datos que pudieron recopilar fueron incompletos. A partir de los datos pudieron concluir que Tempest y Mistral eran al menos de 2 a 3 veces más rápidos que los núcleos propios de ARM. Aunque Tempest no mejoró realmente el rendimiento de Mistral, sí que consumió menos energía.

La GPU

Con todos los benchmarks que AnandTech ejecutó para estresar la GPU, los resultados fueron muy diferentes a los de las pruebas de la CPU, que debido a su naturaleza mucho más compleja, los resultados dependieron de cómo se optimizaron los benchmarks para el silicio, así como de la potencia bruta del mismo. En algunas de las pruebas, la GPU A12 quedó por detrás del Snapdragon 845, y en otras, sacó una enorme ventaja.

main-qimg-4dc6cd77f3336820d40299846ef52141

Esta primera gráfica es la prueba de física utilizada en 3DMark Sling Shot Extreme. Es una prueba de CPU, pero es un ejemplo de una carga de trabajo mal optimizada en la CPU. Mirando los resultados, simplemente no reflejan las enormes ganancias de la CPU del A12 sobre la competencia. AnandTech detalló un artículo sobre este asunto hace unos años sobre por qué el iPhone 5s con el A7, que era el doble de rápido que el A6, tenía un rendimiento idéntico en 3DMark. El culpable resultó ser el motor Bullet Physics que utilizaba 3DMark, que no utilizaba el ancho de tubería de 6 en el iPhone 5s, sino que favorecía más núcleos y mayores velocidades de reloj. Como el A7 tenía la misma cantidad de núcleos y velocidad de reloj que el A6, su rendimiento fue muy similar. Preveo que es un caso similar con la CPU A12, que tiene 6 núcleos frente a los 8 núcleos de otras CPUs.

main-qimg-703f409448765190daab629fd4b53fcd

Saltando a algunos benchmarks de gráficos, el A12 se desempeña bastante "pobre" en las pruebas de 3DMark. Es difícil predecir dónde aterrizará el Kirin 980 en esta prueba.

main-qimg-44c671117d878de1716a5098d0933c0b

Al pasar a una suite de referencia diferente, GFXBench, notamos enormes ganancias de rendimiento en el A12 sobre los otros SoC. Otra cosa a tener en cuenta es la enorme diferencia de rendimiento entre el rendimiento máximo y el rendimiento sostenido. En el rendimiento máximo, la GPU consume 6,1W de energía, unos 1 o 2 vatios más que la competencia (lo que normalmente no es bueno. Más potencia significa más calor y un consumo más rápido de la batería). Sin embargo, con un rendimiento sostenido, la GPU se ralentiza hasta los 3,9 W, lo que está en el extremo inferior de los estándares actuales, y sigue proporcionando velocidades de fotogramas que coinciden con el rendimiento máximo del A11. Mientras tanto, los chips de Huawei se sitúan cerca del final de la lista.

Soy bastante escéptico sobre los chips de Huawei en lo que respecta a la GPU, y la razón es que recientemente han sido pillados haciendo trampas en aplicaciones de benchmarking como GFXBench y 3DMark. Aquí tienes dos ejecuciones del benchmark T-Rex de GFXBench, con la detección de benchmarks activada y desactivada:

main-qimg-dda11093d8a72c39a13f8b666209bb4a

Cuando se detecta un benchmark, la GPU se dispara hasta unos absurdos 8,57W, consiguiendo el doble de FPS que antes, lo que significa que en los juegos reales, nunca verás este nivel de rendimiento. Por eso me resulta difícil predecir el rendimiento de la GPU del Kirin 980. Todo lo que puedo decir es que afirman que es un 46% más rápida que el año pasado, y un 178% más eficiente.

Aquí es un buen momento para que explique por qué el A12 es mucho más performante que el Kirin 980, cuando ambos tienen aproximadamente el mismo número de transistores. Todo se reduce a cómo está dispuesta la lógica en el silicio, así como a cómo se utilizan los transistores. Tomemos como ejemplo el Snapdragon 845 y el Exynos 9810. Ambos se han fabricado en un proceso de 10nm, por lo que la densidad de transistores es prácticamente equivalente. Si nos fijamos en el rendimiento gráfico, la Adreno 630 del S845 es un diseño de doble núcleo y solo ocupa 10 mm^2 de silicio en la matriz, pero supera a la GPU Mali G72 de 18 núcleos del Exynos, que ocupa 20 mm^2 en la matriz. La Adreno 630 tiene una utilización de transistores mucho mejor, y terminó rindiendo mejor que la Mali G72 de 18 núcleos con muchos más transistores.

Aquí tienes más benchmarks que puedes interpretar por ti mismo:

main-qimg-9e1c6615cfd29aa9cd32ce43053a464d main-qimg-a4bc68a1225149888eefc84c6c65d771

Procesamiento de redes neuronales - probando los procesadores de IA.

Huawei fue bastante conocida por ser la primera compañía en traer un núcleo de aprendizaje profundo dedicado en sus procesadores. Definitivamente no fueron's la primera empresa en utilizar el aprendizaje automático y el reconocimiento de objetos en el dispositivo - que fue pionera en Apple en 2016 cuando lanzaron iOS 10, aunque no tenían hardware dedicado para ejecutar las redes neuronales.

El anuncio del Kirin 970 fue similar a este año cuando Huawei anunció el Kirin 980 - fueron los primeros en anunciar un procesador móvil con un núcleo de aprendizaje profundo, pero el silicio no llegó al mercado hasta después de que el A11 saliera en el iPhone 8 plus. Algunas personas, naturalmente, dijeron que el A11 Bionic fue el primer SoC móvil en incluir hardware de procesamiento neural dedicado por esa misma razón, pero me permito discrepar. El A11 incluía un procesador de aprendizaje profundo de doble núcleo apodado Neural Engine, aunque el silicio de la primera generación estaba construido para tareas muy especializadas como la iluminación de retratos, FaceID, así como la RA frontal. El Neural Engine estaba bloqueado para los desarrolladores, por lo que cualquier trabajo de inferencia de terceros tendría que hacerse en la GPU. Por lo tanto, el Kirin 970 fue técnicamente el primero en salir al mercado con un núcleo de aprendizaje profundo dedicado al que pueden acceder los desarrolladores.

La diferencia de rendimiento fue bastante clara; con el hardware dedicado, el Kirin 970 fue capaz de inferir imágenes a una velocidad de hasta 2000 por minuto, mientras que el A11, utilizando su GPU, solo fue capaz de alcanzar 1200 a través de la misma red neuronal (no estoy muy seguro de cuál utilizaron). Sin embargo, esa victoria duró poco, ya que más tarde el Snapdragon 845 con su combo de DSP y GPU logró 2200 imágenes por minuto. **NOTA** las imágenes por minuto dependen del benchmark. Cada red neuronal tiene un número diferente de capas y, por lo tanto, dará lugar a tiempos y métricas diferentes. Las métricas mostradas arriba fueron evaluadas usando la misma red neuronal.

Actualmente, Huawei ha lanzado el Mate 20 pro con el Kirin 980 con un núcleo extra de aprendizaje profundo, duplicando el rendimiento de la IA de la generación anterior. Este año, Apple dio un gran salto en el procesamiento de la IA, incluyendo el A12 con 8 núcleos de aprendizaje profundo diseñados a medida (los del año pasado en realidad no fueron diseñados a medida, sino que se licenciaron de una empresa llamada CEVA). Esto ha permitido multiplicar por 8 el rendimiento del motor neuronal del año pasado y por 9 el de la GPU. Y lo que es más importante, esta nueva generación de Neural Engine estaba abierta a los desarrolladores y al marco CoreML de Apple.

No hay pruebas de referencia para consumidores en la App store o en Google Play, así que las pruebas de referencia utilizadas fueron el estándar de la industria Inception V3 y ResNet34. Aquí están los resultados.

main-qimg-d4b2e17dbf898d6f1ebdfd368947f9c5 main-qimg-0c1369996cd3af897fe01aceb5297726

Una vez más, nadie ha puesto sus manos en el Kirin 980 para realizar pruebas de rendimiento, pero había una diapositiva en la Keynote del Kirin 980 que detallaba los resultados de las pruebas de rendimiento de Inception V3 y ResNet34:

main-qimg-73d64ba286fbd82cd060537c36303bac

Pido disculpas por la resolución de mierda - esta fue una captura de pantalla recortada en un vídeo de 720p. Por suerte, se pueden ver los resultados. El Kirin 980 obtuvo 117FPS y 61FPS en ResNet34 e Inception V3, respectivamente. El A12 consiguió 147FPS y 84FPS respectivamente. Por lo tanto, la potencia de aprendizaje profundo del A12 es un 25% - 38% mayor que la del Kirin 980.

Conclusiones

En base a los datos empíricos mostrados anteriormente, el A12 Bionic es efectivamente mucho más rápido que el Kirin 980 en términos de CPU, gráficos, y lo más sorprendente, la inferencia de la red neuronal. Esto es sólo mirando el rendimiento del hardware de los chips; el software puede tener un gran impacto en la experiencia del usuario final, y el software mal escrito (iOS 11) puede realmente empantanar incluso el más potente de los chipsets.

Hay mucho más que probar - el ISP, el Secure Enclave, y los controladores de almacenamiento. Pero eso tendrá que esperar, ya que sólo tengo la capacidad de reunir datos de segunda mano. Dicho esto, espero que hayas aprendido algo interesante leyendo esta respuesta tan larga. Son las 2:04 AM aquí en Edmonton, me voy a dormir. Paz.

Todas las imágenes están aquí en cortesía de AnandTech. La última captura de pantalla es de la Keynote del Kirin 980 de Huawei.