Blog Personal.

Conceptos Básicos, Futuro

Domain Specific Processors

Uno de los problemas con los que se enfrentan tanto Sony como Microsoft es el aumento en el coste del hardware que se ha producido respecto a la generación anterior.

¿El motivo principal? Bueno, el coste de las obleas es mucho más alto ahora con el nodo de 7nm de lo que fue hace unos 7 años bajo el nodo de 28nm.

Por ejemplo, los chips de las Xbox que desde la Xbox One original tienen un tamaño de 192 y por tanto aproximadamente unos 361 mm2 (y si, se que no es la cifra exacta) que en una oblea de 300 mm de diámetro nos dan unos 108 chips buenos por oblea.

Eso se traduce , en cada uno de los chips que salen de la oblea tiene un coste de $87 en total y nos falta además el encapsulado del chip y medir el rendimiento a través de los Yields paramétricos que reducen aún más la cantidad de chips buenos que salen por oblea y pueden ser utilizados en la consola.

Estamos hablando que aproximadamente un 20% del coste final de la consola se va a un solo componente y lo peor de todo es que la cosa ira a peor. ¿Es algo que le pille de nuevas a los arquitectos de hardware? No, más bien no, sino al contrario.

Si retrocedéis a lo que Microsoft dijo en el Hot Chips hay cosas que empiezan a tener mucho más sentido sabiendo como ha subido el coste de las obleas.

¿Que esta ocurriendo? Pues básicamente pese a que la Ley de Moore como ley sobre la densidad de los transistores sigue vigente, el coste por transistor ha subido porque el coste por oblea no ha escalado de la misma manera por lo que ahora de diseñar la nueva generación los ingenieros se han encontrado con que tienen un presupuesto muy limitado.

Este problema ha hecho que muchos de los diseñadores de hardware se estén moviendo desde hace unos años hacía lo que llaman «Domain Specific Processors» con tal de poder aumentar el rendimiento sin tener que consumir una enorme cantidad del presupuesto en transistores.

La idea es localizar partes concretas del pipeline y ver cuales tienen un rendimiento mejorable y acelerarlo a través de pequeños aceleradores que resultan muy simples pero que dan una ganancia de rendimiento muy alta en el global.

La particularidad de estos aceleradores es que no son chips aparte con su propia memoria también aparte, son unidades dentro de un SoC que tienen su propia memoria con la que trabajar que también se encuentra dentro del SoC y directamente conectada a estos aceleradores.

¿Y donde se realiza dicha aceleración? Pues en partes que son repetitivas y reiterativas. En realidad esto nos lleva a la rueda de la reencarnación que postulo Ivan Sutherland ya hace unas décadas. El concepto es que una función realizada por la CPU es migrada a un procesador especializado que va progresando con el tiempo hasta ser tan complejo como una CPU, entonces se hace necesario para el procesador especializado crearle procesadodores especializados para acelerar ciertas tareas.

Os daré un ejemplo claro que es la decodificación de video, hoy en día las GPUs tienen suficiente potencia para decodificar video pero los recursos energéticos y el área que necesitan para hacerlo es enorme en comparación con un simple acelerador realizando esta tarea que es lo que realmente se utiliza. La eficiencia de los Domain Specific Processors esta en que realizan la misma tarea con un rendimiento/area y un rendimiento/consumo que no es que sea 10x veces más alto sino que puede ir a las 100x veces e incluso 1000x. Y no, no estamos hablando de potencia bruta, hablamos de realizar la misma tarea con un coste en área (transistores) y energía que es una fracción minuscula de hacerlo en un procesador altamente avanzado y para colmo pueden trabajar en paralelo.

Pero no son el único ejemplo de los Domain Specific Processors, hay muchos más ejemplos:

  • Las unidades de intersección que están apareciendo con las GPUs para acelerar el trazado de rayos son un ejemplo de ello.
  • Las unidades de filtrado de texturas y las de rasterizado se pueden considerar Domain Specific Processors. El coste en área y energía que habría si estas funciones corriesen en las ALUs de las Compute Units sería enorme si no existiesen estas unidades.
  • Los procesadores de imagen de las cámaras de los smartphones encargados de la captura y codificación de las imagenes hacen una tarea que si dependiese de la CPU o de la GPU del SoC no serían viables en un smartphone.
  • Las unidades de compresión-descompresión de datos.

La idea es que desde el punto de vista del hardware crear un procesador complejo con una versatilidad a la hora de programarlo supone un chip con un alto coste energético y de área. Obviamente no todo lo podemos pasar a un Domain Specific Processor pero estos se han convertido en los protagonistas invisibles y os vais a encontrar con arquitecturas en un futuro con especificaciones que sobre el papel serán las mismas pero con diferente rendimiento y no entenderéis nada, no sabréis porque un sistema con las mismas especificaciones generales tiene mayor rendimiento e intentaréis cuadrar las cosas.

Y esto es porque las empresas no os van a decir si esas unidades están ahí o no, no os van a decir como funcionan sino que os van a decir que el «nuevo procesador» tiene una subida x de rendimiento pero no vais a saber el motivo y todo porque han añadido un acelerador en alguna parte para acelerar una parte concreta del trabajo que antes iba mucho más lenta y su aceleración ha aumentado el rendimiento global.

Esto es todo, tenéis los comentarios de esta misma entrada para comentar y no olvidéis que tenemos Discord.

5 7 votes
Article Rating
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Jose Luis

Muy interesante lo que comentas, gracias por el artículo.

Last edited 1 month ago by Jose Luis
Steven

Hola los soc de móvil tienen npu yo pienso que intel y amd terminandan poniendo una npu también y unidades vecoriales.