Una tabla de vectores de interrupciones ( IVT ) es una estructura de datos que asocia una lista de manejadores de interrupciones con una lista de solicitudes de interrupciones en una tabla de vectores de interrupciones. Cada entrada de la tabla de vectores de interrupciones, denominada vector de interrupciones, es la dirección de un manejador de interrupciones. Si bien el concepto es común en todas las arquitecturas de procesadores, los IVT pueden implementarse en modas específicas de la arquitectura. Por ejemplo, una tabla de despacho es un método para implementar una tabla de vectores de interrupción.
Fondo
La mayoría de los procesadores tienen una tabla de vectores de interrupción, incluidos chips de Intel, AMD , Infineon , Microchip [1] Atmel , [2] NXP, ARM [3] [4], etc.
Controladores de interrupciones
Métodos de manipulación
Una tabla de vectores de interrupciones se utiliza en los tres métodos más populares para encontrar la dirección inicial de la rutina del servicio de interrupciones:
"Predefinido"
El método "predefinido" carga el contador de programa (PC) directamente con la dirección de alguna entrada dentro de la tabla de vectores de interrupción. La propia tabla de salto contiene código ejecutable. Si bien, en principio, un manejador de interrupciones extremadamente corto podría almacenarse completamente dentro de la tabla de vectores de interrupciones, en la práctica el código en cada entrada es una única instrucción de salto que salta a la rutina de servicio de interrupción completa (ISR) para esa interrupción. El Intel 8080 , [5] Atmel AVR [6] [7] y todos los microcontroladores 8051 y Microchip [8] utilizan el enfoque predefinido.
"Ha podido recuperar"
El método "buscar" carga la PC indirectamente, usando la dirección de alguna entrada dentro de la tabla de vectores de interrupción para extraer una dirección de esa tabla, y luego cargando la PC con esa dirección. [8] Todas y cada una de las entradas del IVT son la dirección de una rutina de servicio de interrupción. Todos los microcontroladores Motorola / Freescale utilizan el método de recuperación. [8]
"Reconocimiento de interrupción"
Para el método de "reconocimiento de interrupciones", el dispositivo externo le da a la CPU un número de controlador de interrupciones. Intel Pentium y muchos microprocesadores antiguos utilizan el método de reconocimiento de interrupciones. [8]
Cuando la CPU se ve afectada por una interrupción , busca el manejador de interrupciones en la tabla de vectores de interrupciones y le transfiere el control.
Ver también
- Tabla de descriptores de interrupciones (implementación de arquitectura x86)
Referencias
- ^ "Manual de referencia de la familia dsPIC33F" sección 29.1.1 Tabla de vectores de interrupción
- ^ Sección "AVR Libc User Manual" : Introducción al manejo de interrupciones de avr-libc
- ^ "Documentación - Desarrollador de brazo" . developer.arm.com . Consultado el 26 de julio de 2020 .
- ^ "Documentación - Desarrollador de brazo - Tabla de vectores de excepción AArch64" . developer.arm.com . Consultado el 26 de julio de 2020 .
- ^ Del usuario de Sistemas de microcomputadoras Intel 8080 . Corporación Intel. Septiembre de 1975. págs. 2-11 Interrupt Sequences. OCLC 2058546 . OL 24210843M .
- ^ Roger L. Traylor. "Interrupciones: servicio de interrupción del AVR"
- ^ Gary Hill. "Subsistemas de interrupción y temporización de Atmel AVR: tabla de vectores de interrupción ATMEGA328P"
- ^ a b c d Huang, Han-Wat (2005). Pic Microcontroller: Introducción a la interfaz de software y hardware . Aprendizaje Cengage. pag. 247. ISBN 978-1-4018-3967-3. Consultado el 22 de abril de 2013 .
enlaces externos
- Manual del desarrollador de software de la arquitectura Intel®, volumen 3: Guía de programación del sistema
- Manual del desarrollador de software de arquitecturas Intel 64 e IA-32, Volumen 3A: Guía de programación del sistema, Parte 1 (consulte el CAPÍTULO 6, MANEJO DE INTERRUPCIONES Y EXCEPCIONES y EL CAPÍTULO 10, CONTROLADOR DE INTERRUPCIONES PROGRAMABLE AVANZADO)]
- Tabla de vectores y excepciones de Motorola M68000