Logotipo de Zephyrnet

Optimización de la energía a nivel del sistema

Fecha:

La energía es una preocupación omnipresente y es imposible optimizar el consumo de energía de un sistema sin considerar el sistema como un todo. Se han logrado enormes avances en la optimización de una implementación de hardware, pero eso ya no es suficiente. Es necesario optimizar el sistema completo.

Esto tiene implicaciones de gran alcance, algunas de las cuales están impulsando el camino hacia la informática de dominio específico. El desplazamiento a la izquierda juega un papel, pero lo más importante es que significa que todas las partes que desempeñan un papel en el consumo total de energía para una tarea definida deben trabajar juntas para lograr ese objetivo.

La energía se está convirtiendo rápidamente en una consideración de primera clase. "A medida que la eficiencia energética se convierte en una preocupación crítica en todos los dominios informáticos, a menudo se solicita a los arquitectos que consideren el costo energético de los algoritmos tanto para el diseño de hardware como de software", dice Guillaume Boillet, director senior de gestión de productos y marketing estratégico de arterisa. “El enfoque está pasando de optimizar únicamente la eficiencia computacional (velocidad, rendimiento, latencia) a optimizar también la eficiencia energética (julios por operación). Esto requiere considerar factores como la cantidad de accesos a la memoria, la paralelización del cálculo y la utilización de aceleradores de hardware especializados que pueden ofrecer un cálculo más eficiente energéticamente para ciertas tareas”.

Esto mueve el enfoque de la implementación del hardware al análisis arquitectónico tanto del hardware como del software. "Durante las últimas etapas del flujo de diseño, las oportunidades de optimización disminuyen", dice William Ruby, director de gestión de productos del Grupo de Empresas EDA. Sinopsis. “Es posible que tenga más oportunidades de optimización automática, pero está limitado a un porcentaje de mejora menor. Al considerar la curva de ahorros potenciales (ver figura 1), no es una curva suave desde la arquitectura hasta la aprobación. Hay un punto de inflexión en la síntesis. Antes de que el diseño se asigne a una implementación, tienes muchos más grados de libertad, pero después de este punto de inflexión, las cosas decaen drásticamente”.


Fig.1: Oportunidades de ahorro de energía durante las etapas de diseño. Fuente: Sinopsis

La gran barrera es que antes del punto de inflexión, la potencia depende de la actividad, y eso hace que la optimización automática sea mucho más difícil. "Durante el desarrollo de RTL, se pueden utilizar verificaciones dinámicas impulsadas por vectores para descubrir desperdicios y realizar reestructuraciones lógicas, activación de reloj, activación de operador y otras técnicas para reducirlo", dice Qazi Ahmed, gerente principal de producto de EDA de Siemens. “También es importante comprender que la energía depende de cada caso de uso y debe perfilarse con cargas de trabajo reales impulsadas por software para garantizar que se cubran todos los escenarios posibles. Esto es especialmente cierto en el contexto del SoC completo, donde la envolvente de potencia podría ser completamente diferente de lo que podría mostrar el análisis basado en vectores sintéticos a nivel de IP”.

"Se necesitará más planificación, creación de perfiles y optimización por adelantado", afirma Tim Kogel, ingeniero principal de creación de prototipos virtuales en Synopsys.

Kogel señaló varios niveles que deben abordarse:

  • A nivel de macroarquitectura, para análisis de compensaciones importantes y selección de elementos de procesamiento dedicados;
  • A nivel de microarquitectura, para optimizar el conjunto de instrucciones y las unidades de ejecución para la aplicación de destino;
  • A nivel algorítmico, seleccionar y optimizar algoritmos para la eficiencia computacional y los accesos a la memoria, y
  • A nivel de software, brindar retroalimentación a los desarrolladores sobre cómo optimizar su software en términos de potencia y energía.

"Esto requerirá herramientas que tengan en cuenta la potencia y la energía para la creación de prototipos virtuales y el desarrollo de software para generar los datos, a partir de los cuales se pueda optimizar la implementación de hardware y software", señaló.

mapeo de software
Decidir qué debería incluirse en el software es una tarea temprana. "¿Quiero tener un núcleo DSP para descargar la CPU?" pregunta Ruby de Synopsys. “¿Cómo afecta eso mi consumo de energía? ¿Quiero implementar un acelerador de hardware o quiero realizar todas estas funciones en software? El coste energético del software que se ejecuta en la CPU no es cero”.

A medida que los sistemas se definen cada vez más por su software, ahí es donde debe comenzar la consideración de la energía. "El software es un elemento clave cuando se trata de ahorrar energía y mejorar el rendimiento", afirma Vincent Risson, arquitecto principal de CPU de Brazo. “Las aplicaciones informáticas intensivas a menudo se benefician significativamente de la optimización de las aplicaciones. Esto puede ser tanto estático en términos de bibliotecas altamente optimizadas como marcos dinámicos que permiten que la computación se dirija al motor de procesamiento más óptimo. Por ejemplo, los dispositivos móviles se han estandarizado en una arquitectura de sistema de CPU que proporciona a los procesadores de aplicaciones un rendimiento informático diferente mientras se ajustan a una ISA y una configuración comunes. Esto permite que las aplicaciones se migren dinámicamente a los procesadores que sean óptimos para la eficiencia. Los mecanismos proporcionados para la introspección y la versatilidad, proporcionados por la combinación de software y hardware heterogéneo, brindarán oportunidades para mejorar la eficiencia en el futuro”.

A menudo hay más de una clase de procesador que el software puede ejecutar. "Podemos elegir, según los tipos de cargas de trabajo que estamos viendo, dónde se debe ejecutar una aplicación determinada", dice Jeff Wilcox, miembro y director de tecnología del grupo de ingeniería de diseño para arquitecturas SoC de clientes en Intel. “Si excede las necesidades de un núcleo más pequeño, se pueden activar núcleos más grandes. Hay telemetría y caracterización de la carga de trabajo para intentar determinar dónde se deben ejecutar las cosas para lograr la mayor eficiencia energética. Muchas de las cargas de trabajo que vemos ahora son diferentes. Incluso si se trata de agentes simétricos que trabajan en la misma carga de trabajo, tienen dependencias entre sí. Cada vez más, muchas cargas de trabajo requieren agentes asimétricos, donde tenemos GPU, NPU, IPU disponibles y donde estos tipos de cargas de trabajo cooperan con la CPU. Eso es algo mucho más difícil de optimizar. Hemos llegado al punto en el que tenemos los ganchos para poder comprender los desafíos de rendimiento y potencia, pero aún estamos construyendo las herramientas para comprender realmente cómo digerirlos y optimizarlos por completo”.

La dificultad aquí es que la arquitectura de la carga de trabajo puede depender de la arquitectura del hardware. "Hay muchos avances en el campo de la IA, y no sólo es importante el tamaño del modelo", dice Renxin Xia, vicepresidente de hardware de Untether AI. “Es igualmente importante cómo se construyen los modelos y si se construyen de manera energéticamente eficiente. Eso es más difícil de responder porque depende de la arquitectura. Los costos de energía de un algoritmo que se ejecuta en una GPU pueden ser muy diferentes al costo de energía de ese algoritmo que se ejecuta en una memoria en una arquitectura informática”.

Centrarse en el software
El consenso general es que nada de esto es posible sin una mayor cooperación entre hardware y software. "Es necesario el codesarrollo de hardware y software para lograr esas mejoras en las funciones escalonadas", afirma Sailesh Kottapalli, investigador principal de la unidad de centros de datos de Intel. “El simple hecho de intentar hacerlo de forma transparente en el hardware está llegando a sus límites. Mire lo que está sucediendo en la IA. Si el hardware fuera el único elemento, no veríamos la progresión masiva que estamos viendo. Mucho de eso son mejoras algorítmicas. Con los algoritmos de software, si reduce la longitud de la ruta, puede lograr el mismo resultado con menos instrucciones y menos trabajo de software. A veces, cuando tenemos claridad al respecto, podemos descubrir que para esos algoritmos hay un nuevo conjunto de instrucciones óptimo, una nueva microarquitectura, y luego podemos optimizarla aún más en el hardware”.

Requiere un gran cambio en los flujos de desarrollo de software. "En el pasado, las arquitecturas y los flujos de software se optimizaban para la productividad, es decir, procesadores de uso general programados con lenguajes de alto nivel, utilizando las herramientas de software más rápidas y económicas", dice Kogel de Synopsys. “La dirección general era proporcionar la mayor flexibilidad y productividad posible y optimizar sólo lo absolutamente necesario. Esto debe revertirse para proporcionar sólo la flexibilidad necesaria y, en caso contrario, utilizar implementaciones dedicadas”.

Para muchas funciones de software, el acceso a la memoria es el mayor consumidor de energía. "Una función de software se puede implementar de diferentes maneras, y eso da como resultado diferentes flujos de instrucciones con diferentes perfiles de potencia y energía", dice Ruby de Synopsys. “Es necesario ponderar o asignar costos más elevados a las instrucciones de acceso a la memoria. Debes tener cuidado al modelar las cosas. Aunque se trata solo de la CPU, es necesario modelar los costos de energía en el contexto del sistema”.

En el futuro, la precisión de los resultados también puede ser un factor que pueda ayudar en la optimización. "Se pueden obtener ahorros sustanciales de energía optimizando el software para utilizar mejor los recursos de hardware disponibles", dice Boillet de Arteris. “Esto incluye optimizaciones del compilador, refactorización de código para reducir la complejidad computacional y algoritmos diseñados específicamente para ser energéticamente eficientes. Esto último se puede lograr con computación aproximada para aplicaciones que pueden tolerar cierto nivel de imprecisión, como el procesamiento multimedia, el aprendizaje automático y el análisis de datos de sensores”.

ECONOMÉTRICOS
Todo comienza con el análisis. "Podemos crear un modelo virtual del sistema", dice Ruby. “Entonces podemos definir casos de uso, que en este contexto son en realidad una secuencia de modos de funcionamiento del diseño. Eso todavía no es software. Tienes el sistema descrito como una colección de modelos, tanto de rendimiento, como de potencia. Y le dará un perfil de potencia basado en estos modelos y el caso de uso que haya definido. La siguiente alternativa es un tipo similar de descripción del sistema virtual. Ahora, ejecuta una carga de trabajo de software real contra eso. Si profundiza aún más, si desea más visibilidad, detalles más finos, puede tomar la descripción RTL del diseño, tal vez aún no sea definitiva, tal vez aún sea temprano, pero mientras se mueva principalmente, puede ponérsela. un emulador y ejecutar el trabajo real. Una vez que hagas eso, el emulador generará una base de datos de actividades. Existen capacidades de análisis de energía orientadas a la emulación que pueden tomar una gran cantidad de datos, cientos de millones de ciclos de reloj de datos de carga de trabajo y generar un perfil de energía. Hay un espectro de cosas que se pueden hacer”.

En algunos casos, puede que ese período no sea lo suficientemente largo. "La mayor parte de nuestro análisis térmico se basa en un análisis de circuito cerrado, basado en datos de silicio, no en una simulación previa al silicio debido a las longitudes de traza requeridas y la cantidad de tiempo requerido para el análisis", dice Kottapalli de Intel. “No hay manera de que podamos simular durante tanto tiempo para establecer un perfil térmico realista. Usamos datos de perfil de silicio, usando diferentes tipos de cargas de trabajo y rastreos, y luego analizamos qué soluciones necesitamos construir”.

Es más fácil cuando los plazos son más cortos. "Las decisiones arquitectónicas fundamentales deben considerarse con algún tipo de visión de poder en mente", dice Ruby. “Necesita un modelo de nivel superior y más abstracto de todas las partes de su sistema, incluidos todos los núcleos de procesamiento y el subsistema de memoria, porque la forma en que se organiza es realmente importante. ¿Cuánta memoria se necesita realmente? Estas son decisiones arquitectónicas fundamentales. Necesita tener algunos datos de energía asociados con estos componentes. ¿Cuánta energía consume la CPU bajo esta carga de trabajo en particular o esa carga de trabajo en particular? ¿Qué pasa con el núcleo DSP, el hardware, la memoria, la red en el chip? ¿Cuánto consume cada uno de ellos al realizar cada operación? Son necesarios para tomar decisiones arquitectónicas fundamentales”.

Se necesitan muchas herramientas nuevas relacionadas con la energía. "Si bien existen herramientas EDA para lidiar con transitorios de alta velocidad y alta densidad de potencia, existen muchos otros desafíos", dice Wilcox de Intel. “Algunos de los otros desafíos tienen que ver con dinámicas constantes de mayor duración o cómo gestionar las cosas en todo el SoC. No he visto mucho en el espacio EDA que ayude con eso. Estamos creando más herramientas locales para intentar desarrollar esas capacidades”.

Si bien se han desarrollado herramientas para el lado del hardware de estas compensaciones arquitectónicas, hoy en día existen pocas herramientas para ayudar en el lado del software. "Necesitamos que nuestros ingenieros de software produzcan el código correcto lo más rápido posible", afirma Ruby. “Lo que creo que realmente se necesita es algún tipo de tecnología complementaria para el desarrollador de software. Así como tenemos herramientas de análisis de energía RTL para el hardware, los sistemas de desarrollo de software necesitan algún tipo de perfilador de energía que les diga cuánta energía está consumiendo este código. Dado que ahora vivimos en la era de la IA, sería genial que la tecnología de IA analizara el código. Obtienes una estimación del consumo de energía y alguna tecnología de inteligencia artificial puede decir que si reestructuras tu código, de esta manera puedes ahorrar mucha energía”.

Conclusión
El mundo del hardware está chocando contra muros relacionados con la potencia y la energía. Los límites térmicos y las preocupaciones están creciendo dentro de esa comunidad. Sin tenerlos en cuenta, la funcionalidad del hardware no puede crecer. Pero estas no han alcanzado el nivel de preocupaciones a nivel del sistema. Hasta que todas las partes que contribuyen al consumo de energía se reúnan en la misma sala y diseñen el sistema para que sea energéticamente eficiente, no veremos verdaderas soluciones al problema.

Esto también tiene una segunda cara. Todas las personas que producen las herramientas que utilizan también tienen que entrar en la misma sala y desarrollar flujos que permitan a todos tener éxito. Si bien ha habido algunos avances entre el mundo de los sistemas y la EDA para resolver algunos de los desafíos térmicos, hay menos progreso a nivel arquitectónico y casi ningún progreso entre los mundos del hardware y el software. Los prototipos virtuales que se concentran en la funcionalidad no son suficientes. Es necesario extenderlos a la potencia y la energía del sistema, y ​​eso no se puede hacer sin la participación de los desarrolladores del compilador. Existe una oportunidad dentro de la informática de dominio específico, porque estas personas están tomando una nueva dirección en el hardware como resultado de estos problemas, y puede ser lo suficientemente importante para ellos como para avanzar en los campos adyacentes. Pero todo parece quedar en el futuro.

Lectura relacionada
El creciente precio de la energía en chips
Más datos requieren un procesamiento más rápido, lo que genera una gran cantidad de problemas, no todos los cuales son obvios o incluso solucionables.

punto_img

Información más reciente

punto_img