¿Arquitectura ARM de Apple en una GPU? No, creo que te equivocas ya que ARM es un conjunto de registros e instrucciones estandar que utiizan las CPUs de Apple y otras compañías y nada tiene que ver con la GPU. En realidad no deberíamos utilizar el termino arquitectura x86, arquitectura ARM… Básicamente porque tenemos varias arquitecturas bajo un mismo conjunto de instrucciones.

Por suerte la Wikipedia en temas técnicos (que no políticos) nos da definiciones muy exactas:

Un conjunto de instruccionesrepertorio de instruccionesjuego de instrucciones o ISA (del inglés instruction set architecture, «arquitectura del conjunto de instrucciones») es una especificación que detalla las instrucciones que una unidad central de procesamiento puede entender y ejecutar, o el conjunto de todos los comandos implementados por un diseño particular de una CPU. El término describe los aspectos del procesador generalmente visibles para un programador, incluyendo los tipos de datos nativos, las instrucciones, los registros, la arquitectura de memoria y las interrupciones, entre otros aspectos.

Existen principalmente tres tipos: CISC (Complex Instruction Set Computer), RISC (Reduced Instruction Set Computer) y SISC (Simple Instruction Set Computing).

La arquitectura del conjunto de instrucciones (ISA) se emplea a veces para distinguir este conjunto de características de la microarquitectura, que son los elementos y técnicas que se emplean para implementar el conjunto de instrucciones. Entre estos elementos se encuentran las microinstrucciones y los sistemas de caché.

Procesadores con diferentes diseños internos pueden compartir un conjunto de instrucciones; por ejemplo, el Intel Pentium y AMD Athlon implementan versiones casi idénticas del conjunto de instrucciones x86, aunque tienen diseños diferentes.

En cuanto el tema de la GPU, lo único que le queda de las PowerVR es que es un TBDR (Tile Based Deferred Rendering) pero hemos de tener en cuenta que no es la única GPU de esa naturaleza en GPUs de dispositivos PostPC y hemos de tener en cuenta un tema muy importante.

Apple durante años utilizo su propio sabor de OpenGL (OpenGL+Extensiones propias) donde la GPU era un PowerVR pero podría haber utilizado cualquier otra GPU sin problemas. El motivo de utilizar los PowerVR y no otra familia era que Apple tenía acciones de Imagination Technologies pero una GPU no ejecuta programas y no entiende el concepto de ISA como una CPU, de ahí a que tengamos un controlador basado front-end que es la forma en la que la aplicación se comunica con la GPU que es universal para todas las GPUs y un back-end que traduce dichas instrucciones a las micro-instrucciones de cada GPU en particular.

El problema es que OpenGL tiene una sobrecarga tremenda en el tiempo de la CPU restando milisegundos. Apple cuando lanzo Metal por primera vez fue optimizando el driver a nivel de software porque OpenGL con el tiempo había quedado abotargado pero Metal en aquel tiempo era una API que pese a no ser universal no funciona en las GPUs propietarias de Apple porque aún no existían.

Con el tiempo han desarrollado Metal 2, el cual tiene un rendimiento 2X respecto a Metal a la hora de hacer listas de comando para la GPU y optimizarlas pero esto tiene una trampa, han trasladado dicha función a los procesadores de comandos de la GPU. Gracias a que la GPU de Apple entiende directamente el lenguaje de Metal el Back-End que se utiliza para traducir las instrucciones en micro-instrucciones ya no es necesario o solo es parcialmente necesario.

Por lo demás es una GPU convencional del tipo TBDR por lo que tendrá las mismas piezas que un TBDR y el pipeline gráfico será el mismo:

Pero la principal diferencia respecto a los PowerVR son las olas, una ola en PowerVR y Nvidia esta compuesta por 32 elementos, una ola en AMD y Apple por 64 elementos. Esto es importante porque define a la perfección cual es la organización de las Compute Units de cada GPU y explican noticias como que Apple en MacOS Mojave haya retirado el soporte a las GPUs de Nvidia y coincida con el abandono de OpenGL en dicho sistema operativo.

Dado que las olas son de 64 elementos la organización de las Compute Units es distinta respecto a los PowerVR, el estandar en una GPU es que una ola se ejecute en unos 4 ciclos de reloj de tal manera que para calcular una sola ola necesites n/4 ALUs donde n es la cantidad máxima de elementos en una ola. Pero podemos procesar varias olas en paralelo, por ejemplo AMD tiene Compute Units de 64 ALUs que pueden trabajar con 4 olas al mismo tiempo en paralelo, pues bien, las malas lenguas dicen que la Compute Unit de AMD y la de Apple son casi idénticas en cuanto a configuración y por eso Apple anda colaborando con AMD.

La mejor arquitectura de GPU ahora mismo es la de Apple a nivel de rasterización y alto que digo arquitectura y no en potencia. El motivo de ello es que ni Turing y aun menos Vega pueden alcanzar el rendimiento por consumo que alcanza la GPU de la GPU del A12X, que bien tiene el rendimiento de una Xbox One, dicho rendimiento en tan poco consumo y espacio es realmente impresionante y no creo que Turing y aún menos la actual Vega pueda escalar hacía abajo y alcanzar ese rendimiento en esos parametros de consumo.

No en vano, una de las obsesiones de AMD desde hace tiempo y conociendo las limitaciones de su arquitectura GCN en cuanto a consumo es conseguir que el rendimiento por consumo aumente en dicha arquitectura ya que es el más bajo de todos. Si Apple sacase una GPU dedicada con su arquitectura barreria el suelo con AMD porque su arquitectura alcanzaría el mismo rendimiento con consumos mucho más bajos y alto que uno de los motivos por las cuales Pascal vapulea a Vega es precisamente eso y ese es el motivo por el cual Navi va a tener cambios en ese sentido. ¿Es debido esto a la joint venture entre Apple y AMD? En realidad AMD llevaba tiempo intentando resolver ese problema de consumo con las Compute Units pero la colaboración Apple-AMD les esta sirviendo para pulir su arquitectura en cuanto a rendimiento/consumo y no se limita a que Apple ponga sus GPUs en sus sistemas sino que va más allá.

Pe… pero Urian… ¿Como es que Apple no saca entonces una GPU dedicada de gama alta para sus Macs con su arquitectura?

Lo va a acabar haciendo pero no va a ser el final de AMD porque Apple en Mac casi no tiene mercado y es un volumen nimio para AMD en el fondo, de momento el pacto que tienen de I+D es para beneficiar a ambas en sus mercados correspondientes. Apple no se mete en hacer chips para consolas y GPUs para PCs de sobremesa y AMD no se mete a hacer chips y GPUs para dispositivos Post-PC. Esto no significa que las GPUs de AMD y Apple sean simétricas, simplemente hay piezas concretas de la GPU que serán muy parecidas por la colaboración entre ambas empresas pero no exactamente iguales aunque la rumorologia dice que lo único en común que es resultado de dicha “joint venture” en secreto es la optimización energética de las CUs.

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

Anuncios