Manejo de Interrupciones, Pilas y Saltos Relativos en Procesadores Digitales de Señal (DSP)

Enviado por Programa Chuletas y clasificado en Electricidad y Electrónica

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

Interrupciones en Procesadores

Una interrupción es una pausa en el programa causada por un evento externo (activación de un terminal, recepción de un dato, etc.). Cuando se provoca una interrupción, el procesador abandona el programa que está ejecutando con una bifurcación hacia un bloque de instrucciones que darán servicio a la interrupción provocada, denominada “rutina de servicio de la interrupción”. Finalizada la rutina de servicio de la interrupción, el procesador retorna al programa interrumpido. Todos los DSP tienen interrupciones y muchos usan las interrupciones como único mecanismo de comunicación con los periféricos. Las interrupciones en los DSP son normalmente “no vectorizadas”, ya que priorizan el tiempo de respuesta de la interrupción frente a la flexibilidad.

Fuentes de las Interrupciones

Las fuentes que pueden generar interrupciones son:

  • Periféricos en el chip: Muchos procesadores incorporan varios periféricos dentro del chip que generan interrupciones internas.
  • Interrupciones software: También llamadas “excepciones” o “trampas”, son provocadas cuando se ejecutan determinadas instrucciones. Por ejemplo, en el C3x, la instrucción Trap genera un proceso de interrupción software.

Vectores de Interrupción

Una de las causas de la interrupción es comenzar la ejecución de un código en una dirección determinada (una bifurcación). Los procesadores asocian cada interrupción con una dirección de memoria de bifurcación y suelen colocar todas estas direcciones en una tabla llamada “tabla de vectores de interrupción”. Cuando el procesador recibe la petición de interrupción e información para determinar el vector de interrupción, entonces se trata de una “interrupción vectorizada”. Si el procesador determina de forma automática el vector de la interrupción, entonces es una “interrupción no vectorizada” o “interrupción con autovector”. Los DSP tienen interrupciones no vectorizadas debido a la rapidez requerida en el servicio.

Habilitación de las Interrupciones

Los DSP tienen mecanismos para deshabilitar globalmente las interrupciones. Se controlan ejecutando instrucciones de control o configurando registros de estado. También es posible habilitar de forma independiente diferentes fuentes de interrupción, permitiendo con esto priorizar las interrupciones.

Prioridades e Interrupciones Anidadas

La mayoría de los DSP no soportan interrupciones en el servicio; esto es, que una interrupción de mayor prioridad pueda interrumpir a otra de menor prioridad. En este caso, se dice que el procesador tiene interrupciones anidadas automáticamente.

Pilas en Arquitectura de Procesadores

Existen diversas formas de implementar una pila:

  • Registros ocultos: Registros dentro del procesador inaccesibles utilizados como pila.
  • Pila hardware: Bloque especial de memoria dentro del chip utilizado como pila.
  • Pila software: Es una pila convencional que utiliza un registro puntero de pila y la memoria principal para almacenar los datos.

Los más utilizados son los registros ocultos (que ofrecen mayor rapidez, pero con almacenamiento limitado) y las pilas software (más lentas, pero más flexibles y con almacenamiento ilimitado).

Saltos Relativos en Programación de Procesadores

Todos los procesadores soportan los saltos relativos como la forma más común en el control de la ejecución. En el salto relativo a PC, la dirección de salto se especifica con un desplazamiento relativo a la posición que ocupa la instrucción de salto.

Los saltos relativos son útiles porque disminuyen la codificación y también porque independizan el código de la posición. Un programa es independiente de la posición cuando se puede ejecutar en cualquier posición de memoria. La desventaja principal del salto relativo es la longitud del salto, pero normalmente no es un problema. Las direcciones absolutas de salto y de variables hacen que el código sea dependiente de la posición.

Entradas relacionadas: