Ya no es posible optimizar el sistema examinando el hardware y el software por separado, según un análisis publicado por Brian Bailey, editor especializado en tecnología EDA de Semiconductor Engineering. Las cargas de trabajo de software cambian a un ritmo más rápido que los ciclos de desarrollo de chips, mientras que la energía, el rendimiento y el calor se han convertido en factores interrelacionados que exigen una colaboración temprana entre los equipos de software y hardware, en lugar de transferir el diseño de un equipo a otro una vez finalizada cada etapa.
El análisis examina el renovado interés por lo que se conoce como diseño conjunto de hardware y software, aunque en circunstancias diferentes de las que prevalecían hace unos 30 años. En aquel momento, las tecnologías disponibles no eran capaces de marcar una gran diferencia, por lo que la industria optó por reunir bloques de IP previamente verificados e integrarlos. Todavía existen algunos vestigios del enfoque anterior, como el modelado virtual y los modelos SystemC no temporizados o con temporización aproximada, pero estas herramientas ya no se consideran suficientes por sí solas para representar las cargas de trabajo reales actuales.
De la separación de equipos a los modelos virtuales
Steve Roddy, director de marketing de Quadric, afirma que la época en la que el equipo de hardware realizaba su diseño y después lo entregaba al equipo de software embebido terminó hace más de dos décadas. Durante la última década, el modelado virtual se ha ampliado para incluir entradas físicas e interfaces de sensores, en lo que se conoce como modelado de gemelos virtuales.
Sin embargo, el desafío actual es más complejo: los sistemas son mucho más grandes y se diseñan para cargas de trabajo definidas por el software, mientras que la iteración del software es más rápida que el desarrollo del hardware. Esto convierte el diseño conjunto en un proceso en el que el hardware persigue continuamente al software. Arvind Srinivasan, de Normal Computing, considera que las capas de abstracción que históricamente separaron partes de la pila de software de partes de la pila de hardware ayudaron a gestionar la complejidad y a mejorar la eficiencia y la fiabilidad del desarrollo, pero la necesidad de extraer la máxima optimización de cada parte de la cadena de herramientas, especialmente para cargas de trabajo de inteligencia artificial sensibles al rendimiento, está cambiando este equilibrio.
Abordar el problema exige una comprensión más amplia de la palabra «arquitectura». No se refiere únicamente a la estructura general del sistema ni a la microarquitectura y las instrucciones, sino que también incluye la arquitectura del software y la carga de trabajo que se ejecutará realmente. Andy Meier, de Siemens EDA, afirma que la elección de la arquitectura debe partir de la aplicación o la carga de trabajo, así como de la manera en que esta influye en la estructura del sistema, las instrucciones y los distintos elementos que lo componen.
La ola de especialización regresa impulsada por la energía
El análisis se basa en una observación de Tsugio Makimoto, quien ocupó el cargo de director técnico de Sony durante la década de 1990, sobre el movimiento de la industria en ciclos entre la especialización y la generalización. Tras un periodo en el que los procesadores de propósito general dominaron amplios sectores, las necesidades de computación en el borde y, posteriormente, en los centros de datos comenzaron a impulsar soluciones más especializadas.
En los dispositivos periféricos, el impulso está relacionado con prolongar la duración de la batería dentro de los límites de energía disponibles. En los centros de datos, la densidad energética y el calor han empezado a limitar las opciones disponibles para ejecutar cargas de trabajo de inteligencia artificial. Como resultado, las unidades de procesamiento de propósito general ya no constituyen por sí solas la respuesta: ha surgido la necesidad de centros de datos heterogéneos que incorporen varios tipos de chips, con cargas distribuidas o agrupadas según las características de cada chip.
Patrick Coles, científico jefe de Normal Computing, señala que las unidades de procesamiento gráfico quizá no sean el final de la evolución de la computación, ante el creciente número de indicios sobre la ampliación del papel de los ASIC. Frank Schirrmeister, de Synopsys, también explica que las empresas de computación a hiperescala desarrollan sus propios chips y aceleradores para lograr una optimización conjunta de indicadores clave de rendimiento, como el rendimiento y el consumo energético, en lugar de centrarse únicamente en la velocidad.
Sin embargo, la especialización no es solo una decisión técnica. Es necesario determinar qué grado de personalización merece la pena desde el punto de vista económico y si proporcionará beneficios suficientes en rendimiento y energía. Purna Mohanty, director ejecutivo de SignatureIP, señala que la complejidad de las especificaciones puede hacer que el propio cliente sea incapaz de expresar con precisión lo que desea, lo que exige una alineación continua entre el proveedor de IP y las necesidades de los clientes, equilibrando las ventajas de las soluciones listas para usar con los beneficios de desarrollar nuevas características.
RISC-V como ejemplo de personalización vinculada a la carga de trabajo
RISC-V destaca en el análisis como ejemplo de la tendencia hacia los «chips diseñados para la carga de trabajo». Las empresas desarrollan extensiones personalizadas para los núcleos con el objetivo de mejorar el rendimiento o la energía, pero estas extensiones también requieren partes del ecosistema, como compiladores y herramientas de integración de software.
Andrea Gallo, directora ejecutiva de RISC-V International, explica que el uso de instrucciones personalizadas hace recaer en la empresa el coste total de propiedad, incluida la cadena de herramientas y la integración del software. Este enfoque puede ser una vía rápida hacia la innovación, pero la empresa podría buscar posteriormente convertir la extensión en un estándar, de modo que el coste de su mantenimiento se distribuya entre el ecosistema más amplio. El análisis también señala que conocer de antemano la carga de trabajo del software permite adaptar los elementos de procesamiento a la aplicación, mientras que los motores de computación generales y escalables siguen siendo importantes al ejecutar software desconocido o cambiante.
La energía y el calor amplían el alcance del diseño conjunto
El impacto del diseño conjunto no se limita al rendimiento. Los ingenieros de software pueden comprender la importancia de la energía, pero no siempre disponen de herramientas que les permitan medir con antelación el efecto de sus decisiones. Por ello, los equipos trabajan para proporcionar cifras de consumo energético durante el desarrollo del software en paralelo con el hardware, y para mejorar indicadores como TOPS por vatio, no solo los TOPS brutos.
La dificultad aumenta en las aplicaciones heterogéneas que incluyen varios niveles de memoria caché, además de otras funciones como las pruebas integradas de diseño DFT, ya que la energía y el rendimiento deben analizarse dentro de una carga de trabajo realista que también incluya estas funciones. A medida que el análisis se extiende al calor, la interferencia electromagnética y los aspectos multifísicos, la unión de los equipos de hardware y software se convierte en una nueva unidad a la que se añaden análisis multifísicos.
Algunos participantes en el análisis plantean la posibilidad de utilizar inteligencia artificial para comprender las complejas relaciones entre hardware, software, energía y rendimiento. Sin embargo, esto requiere datos que describan cuánta energía ha consumido el software en distintos niveles, desde el chip y el servidor hasta el bastidor, el vehículo y el centro de datos. Hasta que estén disponibles soluciones maduras impulsadas por inteligencia artificial, podría continuar la dependencia de la integración de IP y de la elección de distintos grados de especialización.
La discusión sobre las extensiones matriciales de RISC-V muestra que una única solución no es adecuada para todos los usos: una extensión pequeña puede reducir la energía, mientras que un conjunto mayor de registros, operaciones y acumuladores ofrece una productividad superior, pero a costa de una mayor superficie de matriz y consumo energético. La elección depende, en última instancia, de cómo se distribuyan los núcleos, los aceleradores y la carga de trabajo objetivo. El análisis concluye que el camino hacia la integración vertical aún está lejos de completarse, pero se ha convertido en una dirección necesaria para armonizar el diseño con el software, la energía y el rendimiento en los sistemas modernos.