Optimización de Bucles en Procesadores DSP: Técnicas y Estrategias

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 4,56 KB

  1. Lazos hardware
  2. Interrupciones
  3. Pilas
  4. Saltos relativos

Lazos Hardware

Los algoritmos más frecuentes en el DSP utilizan ejecuciones repetitivas de un reducido número de instrucciones que forman el llamado “interior del lazo” o “núcleo del lazo”. Los DSP tienen recursos evolucionados para eliminar problemas de rendimiento en los bucles. Estos recursos son los “lazos hardware”, también llamados “lazos con sobrecarga 0”.

Los lazos hardware son un control especial de ejecución cuya función es repetir una o un grupo de instrucciones un número determinado de veces sin necesidad de realizar bifurcaciones, ocupar registros y sobrecargar la Unidad Aritmético Lógica (U.A.L.).

Lazos Hardware de una o Varias Instrucciones

La mayor parte de los DSP tienen dos tipos de lazos hardware: lazos de una instrucción y lazos de varias instrucciones.

Los lazos de una instrucción repiten la ejecución de una instrucción un número determinado de veces sin necesidad de leer el código de instrucción cada vez que se ejecuta la instrucción. Como solo se lee una vez el código, es una forma de reducir los accesos a memoria (“buffer de repetición”). Además, no es necesario realizar bifurcaciones, por lo tanto, es un verdadero lazo con sobrecarga 0. El “lazo hardware trampa” se encuentra en la mayoría de los procesadores DSP (DSP5600x) y consiste en producir el número máximo de repeticiones cuando el contador se carga con 0. Esto puede ser un problema cuando el número de repeticiones es calculado.

Las Interrupciones en los Lazos

Los lazos hardware de una instrucción inhabilitan las interrupciones porque en realidad es la ejecución repetitiva de una instrucción. Esto puede repercutir en el tiempo de respuesta de una interrupción. Para disminuir el tiempo de respuesta de las interrupciones podemos:

  • Utilizar lazos de varias instrucciones con una única instrucción.
  • Romper los lazos hardware de una instrucción en varios lazos.

Los lazos de varias instrucciones de los procesadores de AT&T DSP16xx y DSP32c deshabilitan también las interrupciones. El programador debe cuidar todavía más el tiempo de respuesta de las interrupciones.

Los lazos hardware de varias instrucciones no deshabilitan las interrupciones ya que son prácticamente lazos software ayudados por el procesador.

Anidamiento de Lazos Hardware

Existen diferentes formas de anidar lazos hardware:

  • Directamente anidados: Algunos procesadores como los de Motorola, Analog Devices y el Nec uPD7701x, pueden anidar lazos simplemente utilizando de nuevo la instrucción de lazo hardware. Existe limitación en la profundidad de los lazos: 7 lazos anidados en los de Motorola y 3 en el Nec.
  • Parcialmente anidados: Los procesadores con los dos tipos de lazos hardware (una y varias instrucciones), pueden anidar un lazo hardware de una instrucción dentro de un lazo de varias instrucciones. Ejemplo: Los T.I. C5x, C4x.
  • Anidados por software: En este caso los lazos de varias instrucciones se pueden anidar, almacenando previamente el contenido de los registros utilizados (dirección de comienzo y final del núcleo del lazo, etc.). Este es el caso del T.I. C3x.
  • No anidados: Algunos procesadores como el C2x de T.I., el AT&T DSP16xx y el DSP32xx no permiten anidar lazos hardware. En este caso la única solución es utilizar lazos software externos.

Lazos Software Ayudados con Hardware

Una alternativa a los lazos hardware anidados es una anidación de un lazo hardware dentro de un lazo software utilizando instrucciones especiales.

Por ejemplo, el AT&T DSP16xx y el T.I. C3x tienen instrucciones de decremento y salto si no es 0. Estas instrucciones tardan menos que un decremento, comparación y bifurcación condicional en instrucciones separadas. Por ejemplo, el C3x tarda 1 ciclo más la bifurcación en la instrucción “DBcond”.

Entradas relacionadas: