stringtranslate.com

Reducción de operación para baja potencia

La reducción de operaciones para bajo consumo es una técnica de transformación de programas ASIC que se utiliza para reducir el consumo de energía de una aplicación específica. Una transformación de programa es cualquier operación que cambie la estructura computacional, como la naturaleza y el tipo de modelos computacionales, sus interconexiones y la secuencia de operaciones, manteniendo intacto el comportamiento de entrada y salida. Básicamente, utilizamos la reducción de operaciones para reducir la cantidad de operaciones que se deben realizar para realizar una tarea, lo que reduce el hardware requerido y, a su vez, el consumo de energía. Por ejemplo, en un CI específico de una aplicación determinada , al reducir la cantidad de adiciones independientes requeridas, se reducen automáticamente los sumadores necesarios y también la energía consumida.

Operación sustitución

La sustitución de operaciones es una de las técnicas de reducción de operaciones en la que se sustituyen determinadas operaciones costosas por operaciones relativamente más baratas que reducen el consumo de energía. A continuación se ofrecen algunos ejemplos típicos de técnicas de sustitución de operaciones:

  1. Multiplicación por sumas/resta : la multiplicación de dos números es costosa en comparación con la suma de dos números, por lo tanto, sustituirla por una suma es rentable. Por ejemplo, para calcular y = x2 + Ax + B podemos calcular x2 , Ax y sumar ambos a B, que tiene 2 multiplicaciones, 3 adiciones o podemos convertirlo en y = x(x+A) + B donde podemos calcular x+A multiplicarlo por x y sumar B donde tenemos 1 multiplicación y 2 adiciones, ambos enfoques tienen la misma longitud de ruta crítica pero el segundo tiene menos multiplicaciones, lo que ahorra energía.
  2. Cálculo de seno/coseno/tan : Calcular funciones trigonométricas también puede resultar bastante costoso, ya que sustituirlas con una expansión de Taylor de orden menor hace que consuman menos energía, pero podemos perder en términos de aproximación, lo cual es una compensación que se debe tener en cuenta.
  3. Multiplicación-suma por MAC : la operación de multiplicación-acumulación es un paso común que calcula el producto de dos números y suma ese producto a un acumulador. El hardware utilizado para este propósito se llama multiplicador-acumulador (MAC). El uso de MAC también reduce el consumo de energía. Básicamente, un MAC realiza la multiplicación y la suma en una unidad.
  4. Reducir el acceso a la memoria : cambiar la estructura del programa reemplazando las operaciones que requieren un acceso frecuente a la memoria por aquellas que necesitan menos acceso a la memoria también es rentable, ya que el acceso a la memoria es una operación costosa.

Ejemplo de mariposa

Un ejemplo popular de la operación de sustitución es el ejemplo de la mariposa. En este ejemplo, necesitamos calcular dos valores y r = a r * x r - a i * x i , y i = a i * x r + a r * x i que se pueden hacer calculando secuencialmente los términos como se muestra en las expresiones. Pero usando la operación de sustitución podemos calcularlos usando expresiones, y r = a r * (x i +x r ) - x i * (a i + a r ), y i = a r * (x i +x r ) + x r * (a i -a r ) donde el término (x i +x r ) una vez calculado puede ser usado por ambos cálculos a partir de esto podemos deducir fácilmente que las operaciones cambiaron de número de operaciones cambió de 4 multiplicaciones a 3 y 2 suma/suma a 3. La ruta crítica en el primer método era de longitud 2 mientras que en el último es 3. Entonces, nuevamente, esto es un equilibrio entre demora y potencia.

Reducción de la actividad de conmutación

En función de la frecuencia de cambio de entrada, podemos modelar el programa de modo que se produzcan menos cambios de actividad, es decir, si ciertas entradas cambian con menos frecuencia, se las debe hacer funcionar en un solo módulo para que el módulo en particular sea relativamente pasivo en comparación con otros. A+B+C+D se puede calcular como (A+B)+C+D o (A+B)+(C+D). El primero alimenta C,D a dos sumadores separados, pero si cambian con relativa lentitud, entonces alimentarlos al mismo sumador es más rentable.

Programación y vinculación conscientes del consumo de energía

Toda síntesis consta de tres partes: asignación (número y tipo de recursos), programación (programación de operaciones) y vinculación (construcción del circuito). Podemos programar las operaciones en un orden determinado en función de qué valor del programa activa cuántos módulos. Siempre queremos que las operaciones que requieren que se completen más operaciones antes se programen más tarde.

Explotación de la exclusión mutua

Considere el siguiente fragmento de código:

si (C > 0) { :A = A * C}

Supongamos que el perfil ha demostrado que lo más probable es que el valor de C sea 2. Por lo tanto, como C y C son independientes y mutuamente excluyentes, podemos modificar el código para que sea

si (c == 2) { A = A << 1}de lo contrario si (C > 0) { :A = A * C;}

Aquí la multiplicación se sustituye por una operación de desplazamiento, que se activa en la mayoría de los casos y es mucho más barata que la multiplicación.

Referencias

  1. Chandrakasan, AP et al., Optimización de potencia mediante transformaciones, IEEE TCAD Vol 14, enero de 1995, págs. 12-31
  2. Diseño de bajo consumo Lec-4 (https://www.youtube.com/watch?v=J56ExZ9uGkg)