82
Procesadores IA-32 e Intel R 64 Gesti ´ on de Interrupciones Alejandro Furfaro Abril 2012 Alejandro Furfaro () Procesadores IA-32 e Intel R 64 Gesti ´ on de Interrupciones Abril 2012 1/1

Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

  • Upload
    dodat

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Procesadores IA-32 e Intel R© 64Gestion de Interrupciones

Alejandro Furfaro

Abril 2012

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 1 / 1

Page 2: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Agenda

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 1 / 1

Page 3: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Sistema de Interrupciones de Procesadores x86

Fuentes de interrupcion

Hardware.Senales electricas enviadas desde los dispositivos de hardware,generalmente concentradas en un controlador externo que las prioriza yenvıa a la CPU secuencialmente de acuerdo a este criterio.Caracterısticas: Asincronicas. No determinısticas.

Software.Se producen cuando el software ejecuta INT n.Caracterıstica: Determinısticas. La instruccion INT se intercala dondese desea generar la interrupcion.

Internas.Se conocen como excepciones y son generadas por la propia CPU aconsecuencia de una situacion que le impide completar la ejecucion dela instruccion en curso. Por ejemplo, una division por cero, un page fault,una violacion de proteccion, entre otras.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 2 / 1

Page 4: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Sistema de Interrupciones de Procesadores x86

Fuentes de interrupcion

Hardware.Senales electricas enviadas desde los dispositivos de hardware,generalmente concentradas en un controlador externo que las prioriza yenvıa a la CPU secuencialmente de acuerdo a este criterio.Caracterısticas: Asincronicas. No determinısticas.

Software.Se producen cuando el software ejecuta INT n.Caracterıstica: Determinısticas. La instruccion INT se intercala dondese desea generar la interrupcion.

Internas.Se conocen como excepciones y son generadas por la propia CPU aconsecuencia de una situacion que le impide completar la ejecucion dela instruccion en curso. Por ejemplo, una division por cero, un page fault,una violacion de proteccion, entre otras.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 2 / 1

Page 5: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Sistema de Interrupciones de Procesadores x86

Fuentes de interrupcion

Hardware.Senales electricas enviadas desde los dispositivos de hardware,generalmente concentradas en un controlador externo que las prioriza yenvıa a la CPU secuencialmente de acuerdo a este criterio.Caracterısticas: Asincronicas. No determinısticas.

Software.Se producen cuando el software ejecuta INT n.Caracterıstica: Determinısticas. La instruccion INT se intercala dondese desea generar la interrupcion.

Internas.Se conocen como excepciones y son generadas por la propia CPU aconsecuencia de una situacion que le impide completar la ejecucion dela instruccion en curso. Por ejemplo, una division por cero, un page fault,una violacion de proteccion, entre otras.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 2 / 1

Page 6: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Sistema de Interrupciones de Procesadores x86

Fuentes de interrupcion

Hardware.Senales electricas enviadas desde los dispositivos de hardware,generalmente concentradas en un controlador externo que las prioriza yenvıa a la CPU secuencialmente de acuerdo a este criterio.Caracterısticas: Asincronicas. No determinısticas.

Software.Se producen cuando el software ejecuta INT n.Caracterıstica: Determinısticas. La instruccion INT se intercala dondese desea generar la interrupcion.

Internas.Se conocen como excepciones y son generadas por la propia CPU aconsecuencia de una situacion que le impide completar la ejecucion dela instruccion en curso. Por ejemplo, una division por cero, un page fault,una violacion de proteccion, entre otras.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 2 / 1

Page 7: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Sistema de Interrupciones de Procesadores x86

Fuentes de interrupcion

Hardware.Senales electricas enviadas desde los dispositivos de hardware,generalmente concentradas en un controlador externo que las prioriza yenvıa a la CPU secuencialmente de acuerdo a este criterio.Caracterısticas: Asincronicas. No determinısticas.

Software.Se producen cuando el software ejecuta INT n.Caracterıstica: Determinısticas. La instruccion INT se intercala dondese desea generar la interrupcion.

Internas.Se conocen como excepciones y son generadas por la propia CPU aconsecuencia de una situacion que le impide completar la ejecucion dela instruccion en curso. Por ejemplo, una division por cero, un page fault,una violacion de proteccion, entre otras.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 2 / 1

Page 8: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Sistema de Interrupciones de Procesadores x86

Fuentes de interrupcion

Hardware.Senales electricas enviadas desde los dispositivos de hardware,generalmente concentradas en un controlador externo que las prioriza yenvıa a la CPU secuencialmente de acuerdo a este criterio.Caracterısticas: Asincronicas. No determinısticas.

Software.Se producen cuando el software ejecuta INT n.Caracterıstica: Determinısticas. La instruccion INT se intercala dondese desea generar la interrupcion.

Internas.Se conocen como excepciones y son generadas por la propia CPU aconsecuencia de una situacion que le impide completar la ejecucion dela instruccion en curso. Por ejemplo, una division por cero, un page fault,una violacion de proteccion, entre otras.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 2 / 1

Page 9: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Sistema de Interrupciones de Procesadores x86

Fuentes de interrupcion

Hardware.Senales electricas enviadas desde los dispositivos de hardware,generalmente concentradas en un controlador externo que las prioriza yenvıa a la CPU secuencialmente de acuerdo a este criterio.Caracterısticas: Asincronicas. No determinısticas.

Software.Se producen cuando el software ejecuta INT n.Caracterıstica: Determinısticas. La instruccion INT se intercala dondese desea generar la interrupcion.

Internas.Se conocen como excepciones y son generadas por la propia CPU aconsecuencia de una situacion que le impide completar la ejecucion dela instruccion en curso. Por ejemplo, una division por cero, un page fault,una violacion de proteccion, entre otras.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 2 / 1

Page 10: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Identificacion de las fuentes de interrupcion

Caracterısiticas principales

El sistema de interrupciones fue disenado para el primerprocesador de la familia x86, el 8086, en 1978, y se mantieneidentico hasta los procesadores actuales de microarquitecturaCore.

Una interrupcion se identifica unıvocamente mediante un valornumerico de 8 bits que se denomina Tipo.

Por lo tanto, un procesador x86 puede manejar 256 tiposdiferentes de interrupcion. La cuestion que necesitamos entenderes como se obtiene el valor del Tipo.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 3 / 1

Page 11: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Identificacion de las fuentes de interrupcion

Identificando una fuente de interrupcion

¿Como se obtiene el tipo?Es provisto por el hardware en interrupciones que ingresan por el pinINTR del procesador.Esta asociado a un pin del procesador, tal el caso de la Interrupcion Noenmascarable NMI que lleva asociado el tipo 2.Acompana al codigo de operacion en la instruccion INT type, para elcaso de las interrupciones por software, por ejemplo INT 80h.Esta asociado a una instruccion (INTO,por ejemplo, genera unainterrupcion de tipo 4).Las excepciones tienen asignado un tipo especıfico cada una.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 4 / 1

Page 12: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Identificacion de las fuentes de interrupcion

Identificando una fuente de interrupcion

¿Como se obtiene el tipo?Es provisto por el hardware en interrupciones que ingresan por el pinINTR del procesador.Esta asociado a un pin del procesador, tal el caso de la Interrupcion Noenmascarable NMI que lleva asociado el tipo 2.Acompana al codigo de operacion en la instruccion INT type, para elcaso de las interrupciones por software, por ejemplo INT 80h.Esta asociado a una instruccion (INTO,por ejemplo, genera unainterrupcion de tipo 4).Las excepciones tienen asignado un tipo especıfico cada una.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 4 / 1

Page 13: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Identificacion de las fuentes de interrupcion

Identificando una fuente de interrupcion

¿Como se obtiene el tipo?Es provisto por el hardware en interrupciones que ingresan por el pinINTR del procesador.Esta asociado a un pin del procesador, tal el caso de la Interrupcion Noenmascarable NMI que lleva asociado el tipo 2.Acompana al codigo de operacion en la instruccion INT type, para elcaso de las interrupciones por software, por ejemplo INT 80h.Esta asociado a una instruccion (INTO,por ejemplo, genera unainterrupcion de tipo 4).Las excepciones tienen asignado un tipo especıfico cada una.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 4 / 1

Page 14: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Identificacion de las fuentes de interrupcion

Identificando una fuente de interrupcion

¿Como se obtiene el tipo?Es provisto por el hardware en interrupciones que ingresan por el pinINTR del procesador.Esta asociado a un pin del procesador, tal el caso de la Interrupcion Noenmascarable NMI que lleva asociado el tipo 2.Acompana al codigo de operacion en la instruccion INT type, para elcaso de las interrupciones por software, por ejemplo INT 80h.Esta asociado a una instruccion (INTO,por ejemplo, genera unainterrupcion de tipo 4).Las excepciones tienen asignado un tipo especıfico cada una.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 4 / 1

Page 15: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Identificacion de las fuentes de interrupcion

Identificando una fuente de interrupcion

¿Como se obtiene el tipo?Es provisto por el hardware en interrupciones que ingresan por el pinINTR del procesador.Esta asociado a un pin del procesador, tal el caso de la Interrupcion Noenmascarable NMI que lleva asociado el tipo 2.Acompana al codigo de operacion en la instruccion INT type, para elcaso de las interrupciones por software, por ejemplo INT 80h.Esta asociado a una instruccion (INTO,por ejemplo, genera unainterrupcion de tipo 4).Las excepciones tienen asignado un tipo especıfico cada una.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 4 / 1

Page 16: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Identificacion de las fuentes de interrupcion

Identificando una fuente de interrupcion

¿Como se obtiene el tipo?Es provisto por el hardware en interrupciones que ingresan por el pinINTR del procesador.Esta asociado a un pin del procesador, tal el caso de la Interrupcion Noenmascarable NMI que lleva asociado el tipo 2.Acompana al codigo de operacion en la instruccion INT type, para elcaso de las interrupciones por software, por ejemplo INT 80h.Esta asociado a una instruccion (INTO,por ejemplo, genera unainterrupcion de tipo 4).Las excepciones tienen asignado un tipo especıfico cada una.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 4 / 1

Page 17: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Identificacion de las fuentes de interrupcion

Tipos predefinidos

Tipo Mnemonico Descripcion Clase Codigo deError

Fuente

0 #DE Error de Division Fault NO Instrucciones DIV e IDIV1 #DB Reservada Fault/Trap NO Solo para uso de Intel2 - NMI Interrupcion NO Interrupcion No enmascarable. Pin

NMI3 #BP BreackPoint Trap NO Opcode 0xCC4 #OF Overflow Trap NO Instruccion INTO5 #BR BOUND Range Ex-

ceededFault NO Instruccion BOUND

6 #UD Invalid Opcode Fault NO Instruccion UD2 u Opcode Reservado7 #NM Coprocesador No

disponibleFault NO Instrucciones de Punto Flotante o

WAIT / FWAIT8 #DF Doble Fault Abort SI (Cero) Cualquier instruccion capaz de gene-

rar una excepcion, una senal en NMI oen INTR

9 Coprocessor Seg-ment Overrun (re-servada)

Fault SI Instrucciones de Punto Flotante

10 #TS TSS Invalido Fault SI Task switch o acceso a un TSS

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 5 / 1

Page 18: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Inroduccion Identificacion de las fuentes de interrupcion

Tipos predefinidos

Tipo Mnemonico Descripcion Clase Codigo deError

Fuente

11 #NP Segmento No Pre-sente

Fault SI Carga o acceso a un registro de seg-mento

12 #SS Falta en el StackSegment

Fault SI Operacioes de Pila y Carga del registroSS

13 #GP General Protection Fault SI Cualquier referencia a memoria y otroschequeos de proteccion

14 #PF Page Fault Fault SI Cualquier referencia a memoria15 - Reservada por In-

tel (no usar)NO

16 #MF X-87 FPU Error dePunto Flotante

Fault NO Instruccion de la FPU o WAI/FWAIT

17 #AC Alignment Check Fault SI (Cero) Cualquier referencia de datos a memo-ria

18 #MC Machine Check abort NO Los Codigos de error si hubiese,ası como su fuente, depende del mo-delo de procesador

19 #XF Excepcion SIMDFloating Point

Fault NO Cualquier instruccion SSEx

20-31

- Reservada por In-tel (no usar)

32-255

- A definir por elusuario

Interrupcion Interrupciones externas o InstruccionINTn

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 6 / 1

Page 19: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Estrucuras de datos asociadas

Interrupt Descriptor Table

Cuando el procesador trabaja en Modo Protegido debe definirse unatabla en memoria, llamada IDT (por Interrupt Descriptor Table), que adiferencia del funcionamiento en Modo Real, no almacena vectores deinterrupcion, sino que como su nombre lo indica almacenaDescriptores.Esta tabla tiene unicamente 256 entradas, ya que esa es la cantidadde tipos de interrupciones diferentes que maneja el microprocesador.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 7 / 1

Page 20: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Estrucuras de datos asociadas

Descriptores de Sistema en la IDT

La IDT puede contener 3 tipos de descriptores solamente:1 Interrupt Gate (de 16, 32, o 64 bits)2 Trap Gate (de 16, 32, o 64 bits)3 Task Gate (solo en el modo protegido de 32 bits!!, en 64 bits no

existen)

En los tres casos se trata de descriptores de Sistema (Bit S=0 enel descriptor)No se debe definir en la IDT un descriptor de segmento de datosni de codigo, ni otro tipo de Descriptor de Sistema (S=0) diferentede los tres enunciados anteriormente en modo protegido de 32bits, o de los dos pirmeros en el modo 64 bits. El procesadorgenerara invariablemente una excepcion de proteccion general alintentar vectorizar esa interrupcion.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 8 / 1

Page 21: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Estrucuras de datos asociadas

Formato de los Descriptores de 32 bits

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 9 / 1

Page 22: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Estrucuras de datos asociadas

¿Como se llega a la IDT?

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 10 / 1

Page 23: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Utilizacion de los descriptores

Una vez conocida la ubicacion de la IDT, vectoriza la interrupcion

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 11 / 1

Page 24: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Utilizacion de los descriptores

Una vez conocida la ubicacion de la IDT, vectoriza la interrupcion

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 12 / 1

Page 25: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Utilizacion de los descriptores

Una vez conocida la ubicacion de la IDT, vectoriza la interrupcion

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 13 / 1

Page 26: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Utilizacion de los descriptores

Una vez conocida la ubicacion de la IDT, vectoriza la interrupcion

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 14 / 1

Page 27: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Utilizacion de los descriptores

Una vez conocida la ubicacion de la IDT, vectoriza la interrupcion

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 15 / 1

Page 28: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Utilizacion de los descriptores

Una vez conocida la ubicacion de la IDT, vectoriza la interrupcion

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 16 / 1

Page 29: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Utilizacion de los descriptores

Una vez conocida la ubicacion de la IDT, vectoriza la interrupcion

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 17 / 1

Page 30: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Utilizacion de los descriptores

Una vez conocida la ubicacion de la IDT, vectoriza la interrupcion

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 18 / 1

Page 31: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Manejo de la Pila

Pila de Modo USER

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 19 / 1

Page 32: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Manejo de la Pila

Primero: Almacena los Flags

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 20 / 1

Page 33: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Manejo de la Pila

Segundo: Segmento de codigo de la Aplicacion

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 21 / 1

Page 34: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Vectorizacion en Modo Protegido Manejo de la Pila

Tercero: Valor del Puntero de Instrucciones

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 22 / 1

Page 35: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Excepciones Clasificacion

La excepciones se dividen en tres tipos

1 Fault: Excepcion que puede corregirse permitiendo al programaretomar la ejecucion de esa instruccion sin perder continuidad. Elprocesador guarda en la pila la direccion de la instruccion queprodujo la falla.

2 Traps: Excepcion producida inmediatamente a continuacion deuna instruccion de trap. Algunas permiten al procesador retomarla ejecucion sin perder continuidad. Otras no. El procesadorguarda en la pila la direccion de la instruccion a ejecutarse luegode la instruccion trapeada.

3 Aborts: Excepcion que no siempre puede determinar lainstruccion que la causo, ni permite recuperar la ejecucion de latarea que la causo. Reporta errores severos de hardware oinconsistencias en tablas del sistema.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 23 / 1

Page 36: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Excepciones Clasificacion

La excepciones se dividen en tres tipos

1 Fault: Excepcion que puede corregirse permitiendo al programaretomar la ejecucion de esa instruccion sin perder continuidad. Elprocesador guarda en la pila la direccion de la instruccion queprodujo la falla.

2 Traps: Excepcion producida inmediatamente a continuacion deuna instruccion de trap. Algunas permiten al procesador retomarla ejecucion sin perder continuidad. Otras no. El procesadorguarda en la pila la direccion de la instruccion a ejecutarse luegode la instruccion trapeada.

3 Aborts: Excepcion que no siempre puede determinar lainstruccion que la causo, ni permite recuperar la ejecucion de latarea que la causo. Reporta errores severos de hardware oinconsistencias en tablas del sistema.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 23 / 1

Page 37: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Excepciones Clasificacion

La excepciones se dividen en tres tipos

1 Fault: Excepcion que puede corregirse permitiendo al programaretomar la ejecucion de esa instruccion sin perder continuidad. Elprocesador guarda en la pila la direccion de la instruccion queprodujo la falla.

2 Traps: Excepcion producida inmediatamente a continuacion deuna instruccion de trap. Algunas permiten al procesador retomarla ejecucion sin perder continuidad. Otras no. El procesadorguarda en la pila la direccion de la instruccion a ejecutarse luegode la instruccion trapeada.

3 Aborts: Excepcion que no siempre puede determinar lainstruccion que la causo, ni permite recuperar la ejecucion de latarea que la causo. Reporta errores severos de hardware oinconsistencias en tablas del sistema.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 23 / 1

Page 38: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Excepciones Clasificacion

La excepciones se dividen en tres tipos

1 Fault: Excepcion que puede corregirse permitiendo al programaretomar la ejecucion de esa instruccion sin perder continuidad. Elprocesador guarda en la pila la direccion de la instruccion queprodujo la falla.

2 Traps: Excepcion producida inmediatamente a continuacion deuna instruccion de trap. Algunas permiten al procesador retomarla ejecucion sin perder continuidad. Otras no. El procesadorguarda en la pila la direccion de la instruccion a ejecutarse luegode la instruccion trapeada.

3 Aborts: Excepcion que no siempre puede determinar lainstruccion que la causo, ni permite recuperar la ejecucion de latarea que la causo. Reporta errores severos de hardware oinconsistencias en tablas del sistema.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 23 / 1

Page 39: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Excepciones Excepciones y Codigo de Error

Si es una Excepcion, puede haber un Codigo de error

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 24 / 1

Page 40: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Excepciones Excepciones y Codigo de Error

¿Para que sirve el codigo de error?

Una excepcion identificada con un determinado tipo (por ejemplo # GP),puede obedecer a numerosas causas, todas ellas de diferente origen.

Una vez vectorizado el handler de la interrupcion, necesitamosdeterminar cual ha sido la causa concreta de la excepcion para poderresolverla.

Por ello, en excepciones que pueden tener causas multiples, se proveeen la pila una palabra de 4 bytes denominda Codigo de Error.

El Capıtulo 6 del Vol 3A de Intel es muy detallado en este aspecto yaque allı se describen cada interrupcion con sus caracterısticas, de modoque es necesario prestar mucha atencion a esta documentacion cuandose disena un handler de Interrupcion.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 25 / 1

Page 41: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Excepciones Excepciones y Codigo de Error

Excepciones: Codigo de error

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 26 / 1

Page 42: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Excepciones Excepciones y Codigo de Error

Excepciones: Codigo de error

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 27 / 1

Page 43: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Excepciones Excepciones y Codigo de Error

Significado del Error Code

1 EXT: External Event (bit 0): Se setea para indicar que laexcepcion ha sido causada por un evento externo al procesador.

2 IDT: Descriptor Location (bit 1): Cuando esta seteado indica queel campo Segment Selector Index se refiere a un descriptor depuerta en la IDT: Cuando esta en cero indica que dicho campo serefiere a un descriptor en la GDT o en la LDT de la tarea actual.

3 TI: GDT-LDT (bit 2): Tiene significado cuando el bit anterioresta en cero. Indica a que tabla de descriptores corresponde elselector del campo Indice: 0 GDT, 1 LDT.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 28 / 1

Page 44: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Excepciones Excepciones y Codigo de Error

Significado del Error Code

1 EXT: External Event (bit 0): Se setea para indicar que laexcepcion ha sido causada por un evento externo al procesador.

2 IDT: Descriptor Location (bit 1): Cuando esta seteado indica queel campo Segment Selector Index se refiere a un descriptor depuerta en la IDT: Cuando esta en cero indica que dicho campo serefiere a un descriptor en la GDT o en la LDT de la tarea actual.

3 TI: GDT-LDT (bit 2): Tiene significado cuando el bit anterioresta en cero. Indica a que tabla de descriptores corresponde elselector del campo Indice: 0 GDT, 1 LDT.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 28 / 1

Page 45: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Excepciones Excepciones y Codigo de Error

Significado del Error Code

1 EXT: External Event (bit 0): Se setea para indicar que laexcepcion ha sido causada por un evento externo al procesador.

2 IDT: Descriptor Location (bit 1): Cuando esta seteado indica queel campo Segment Selector Index se refiere a un descriptor depuerta en la IDT: Cuando esta en cero indica que dicho campo serefiere a un descriptor en la GDT o en la LDT de la tarea actual.

3 TI: GDT-LDT (bit 2): Tiene significado cuando el bit anterioresta en cero. Indica a que tabla de descriptores corresponde elselector del campo Indice: 0 GDT, 1 LDT.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 28 / 1

Page 46: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Excepciones Excepciones y Codigo de Error

Significado del Error Code

1 EXT: External Event (bit 0): Se setea para indicar que laexcepcion ha sido causada por un evento externo al procesador.

2 IDT: Descriptor Location (bit 1): Cuando esta seteado indica queel campo Segment Selector Index se refiere a un descriptor depuerta en la IDT: Cuando esta en cero indica que dicho campo serefiere a un descriptor en la GDT o en la LDT de la tarea actual.

3 TI: GDT-LDT (bit 2): Tiene significado cuando el bit anterioresta en cero. Indica a que tabla de descriptores corresponde elselector del campo Indice: 0 GDT, 1 LDT.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 28 / 1

Page 47: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Implicancias para el kernel Niveles de privilegio

Cambio de Nivel de Privilegio de ejecucion

En un sistema Multitarea, el kernel es quien maneja lasInterrupciones, y Excepciones. ¡SIEMPRE!.Si al generase la excepcion o la Interrupcion se estabaejecutando codigo del Kernel (KERNEL Mode), el resto de estaseccion no aplica.Si la interrupcion o excepcion se ha producido en medio delcodigo de una aplicacion (Modo USER), sera el Kernel quientome el control.Conclusion: No hay cambio de contexto, pero si hay un cambio deNivel de privilegio de ejecucion.Entonces debemos tener presentes las reglas de proteccion delprocesador.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 29 / 1

Page 48: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Implicancias para el kernel Niveles de privilegio

Cambio de Nivel de Privilegio de ejecucion

En particular:

Un segmento de pila puede ser accedido por segmentos de codigo demismo nivel de privilegio (Atributo DPL de sus descriptoresrespectivos).

Los datos que se terminan de guardar, se han almacenado en lapila de la aplicacion, ya que la interrupcion no cambia el contextode ejecucion actual. Es decir la interrupcion no produce un taskswitch.

¡Importante!Por este motivo, necesariamente el procesador debe transferir losdatos resguardados en la pila de la aplicacion de USER Mode, a lapila de la aplicacion de KERNEL Mode.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 30 / 1

Page 49: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Implicancias para el kernel Niveles de privilegio

Cambio de Nivel de Privilegio de ejecucion

En particular:

Un segmento de pila puede ser accedido por segmentos de codigo demismo nivel de privilegio (Atributo DPL de sus descriptoresrespectivos).

Los datos que se terminan de guardar, se han almacenado en lapila de la aplicacion, ya que la interrupcion no cambia el contextode ejecucion actual. Es decir la interrupcion no produce un taskswitch.

¡Importante!Por este motivo, necesariamente el procesador debe transferir losdatos resguardados en la pila de la aplicacion de USER Mode, a lapila de la aplicacion de KERNEL Mode.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 30 / 1

Page 50: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Implicancias para el kernel Niveles de privilegio

El procesador resguarda lo necesario en el stack de Modo USER

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 31 / 1

Page 51: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Implicancias para el kernel Niveles de privilegio

Y luego lo copia automatica al stack Modo Kernel

Observacion

A los datos resguardados en el stack de Modo USER se suman los registros del stackde Modo USER ya que estos van a ser escritos con los nuevos valorescorrespondientes al stack de Modo KERNEL. De este modo, se recuperaran almomento de que se ejecute iret desde el handler de la interrupcion.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 32 / 1

Page 52: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Implicancias para el kernel Niveles de privilegio

Y luego lo copia automatica al stack Modo Kernel

Observacion

A los datos resguardados en el stack de Modo USER se suman los registros del stackde Modo USER ya que estos van a ser escritos con los nuevos valorescorrespondientes al stack de Modo KERNEL. De este modo, se recuperaran almomento de que se ejecute iret desde el handler de la interrupcion.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 32 / 1

Page 53: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Prioridades Simultaneidad de requerimientos.

Si hay simultaneidad de interrupciones, ¿cual se atiende primero?

Prioridad Descripcion1 (Maxima) Reset y Machine check2 Trap en Conmutacon de tarea. Flag T de TSS = 13 Eventos de Hardware Externos

-FLUSH-STOPCLK-SMI-INIT

4 Trap en la instruccion previa-Breackpoint, o Debug Trap Exception.-TF=1 o breackpoint de dato o E/S

5 NMI, Non Maskable Interrupt6 INTR, Interrupciones enmascarables7 Code Breakpoint Fault8 Fault en el ciclo de Fectch de la siguiente instruccion.

-Violacion del lımite del segmento de codigo-Code-Page Fault)

9 Faults en la decodificacion de la siguiente instruccion.-Instruction length mayor a 15 bytes-Invalid Opcode-Coprocessor Not Available

10 (Mınima) Faults en la ejecucion de una instruccion.-Overflow -Bound error -Invalid TSS -Segment Not Present -Stack fault -General Protection -Data PageFault -Alignment Check -x87 FPU Floating-point except -SIMD floating-point exception

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 33 / 1

Page 54: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

¿Que cambia en 64 bits?

En este modo de trabajo el procesador conserva todo el mecanismocentral de manejo de interrupciones. Los cambios se enumeran acontinuacion (no afectan la sustancia del sistema de interrupciones).

1 Excepto el handler de SMI (System Management ModeInterruption), todos los handlers apuntados en la IDT en el modo64-bit deben apuntar a codigo de 64 bits.

2 Cada dato que se pushea en la pila consume 64 bits (aun unsimple byte como podrıa ser un ASCII). Al ser la pila de usoautomatico en las interrupciones este punto debe tenersepresente. Si el dato guardado en la pila tiene menos de 64 bits, elprocesador utiliza 8 bytes para su apilado de todos modosextendiendo a cero su parte mas significativa.

3 La pila (ss:RSP) se pushea siempre incondicionalmente encada interrupcion.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 34 / 1

Page 55: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

¿Que cambia en 64 bits?

4 Si a causa de la vectorizacion de la interrupcion o excepcion seeleva el nivel de privilegio, el registro SS se poneautomaticamente en 0 (NULL).

5 Cambia el comportamiento de la instruccion IRET6 Cambia el mecanismo de cambio de stack7 Cambia el contenido del stack frame.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 35 / 1

Page 56: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

IDT en Modo 64-bit

Los descriptores de la IDT en el Modo 64-bit ocupaninvariablemente 16 bytesLa direccion logica que debemos almacenar requiere un offset de64 bits (van al registro RIP).Tamano maximo de una IDT es de 4 Kbytes (utilizando los 256vectores de Interrupcion)Hay ademas algun cambio menor en el descriptor.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 36 / 1

Page 57: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

Formato de Descriptores de Interrupcion/Excepcion de 64 bits

12

8

4

0

0

0

0

0

31

31

31

31

16 15

16 15 8 714 131211 2

ISTDPLP 0 00

345

Tipo 0 0 0Offset 31-16

Offset 15-0

Offset 63-32

Selector de Segmento

Reservado

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 37 / 1

Page 58: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

Las sutiles diferencias

Para vectorizar una interrupcion en el modo IA-32e, el procesadorescala el Tipo de Interrupcion por 16, ya que el tamano deldescriptor es de 16 bytes en el modo 64-bit.Los 8 primeros bytes de la entrada de la IDT son casi identicos alconocido descriptor de Interrupcion o Excepcion de 32 bits,excepto el campo IST (Interrupt Stack Table) que se emplea paraefectuar el stack switching cuando hay un cambio en el Nivel dePrivilegio en el modo 64-bit.El uso del campo IST, se describira en detalle en la seccionTareas.Los bytes 12 a 15 de estos descriptores permanecen reservadosy no deben ser utilizados, para evitar conflictos con futurasversiones de estos procesadores.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 38 / 1

Page 59: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

Cuestiones de proteccion

El segmento de codigo referenciado por el selector de segmentode estas puertas (bytes 2 y 3 del descriptor de la Figura anterior,debe ser un segmento de 64 bits. De otro modo se genera unaExcepcion #GP guardandose en el stack un codigo de error en elque se almacena el selector de IDT (Tipo de interrupcion)En el modo IA-32e no se puede incluir en la IDT descriptores de32 bits. Solo se pueden incluir en la IDT de 64 bits Descriptoresde Interrupcion o de Excepcion de 64 bits. Cualquier otrodescriptor producira al invocarse esa interrupcion una excepcion#GP.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 39 / 1

Page 60: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

Stack Frame en Modo 64-bit

1 En el modo 64-bit, el tamano del cada elemento que se apila en elstack-frame como resultado de una interrupcion o excepcion esfijo: 8 bytes siempre.

2 Cuando se vectoriza una Interrupcion o Excepcion en el Modo64-bit, el par de registros SS:RSP se guarda en la pilaincondicionalmente, independientemente de que se hayaproducido o no un cambio en el Nivel de Privilegio de ejecucion(cambio en CPL).

3 En el modo IA-32e el contenido del RSP se alinea a 16 bytesantes de generar el stack frame para asegurar su alineacion a 16bytes cuando se ingrese al handler de la interrupcion (oexcepcion). El procesador puede alinear el nuevo RSP en formaautomatica en respuesta a una Interrupcion o Excepcion, aun si elviejo RSP (que ahora se guardara incondicionalmente en el stack)no esta alineado a 16 bytes. Cuando se ejecuta iret se recupera elviejo RSP en su valor original (alineado o no).Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 40 / 1

Page 61: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

Stack Frame en Modo 64-bit

4 Las ventajas de este requerimiento de alineacion del stack a 16bytes, son claras a la hora de apilar por ejemplo registros XMM,cuyo tamano es 16 bytes. De otro modo las instrucciones dealmacenamiento de estos registros (MOVAPS y MOVUPS) sedificultan por utilizar mas ciclos de bus para acceder al stackresintiendo la performance del sistema.

5 Aunque la alineacion a 16 bytes del RSP se realizara siempre siel bit LMA del MSR IA-32 EFER 1 este en ’1’, esto es solo deinteres para el Modo Kernel en cuyo caso no hay cambio destack, ni se utiliza el contenido del campo IST del descriptor de laInterrupcion o Excepcion. Cuando se deba realizar cambio destack el procesador asume que el Sistema Operativo ha colocadolos valores de RSP en la TSS alineados a 16 bytes.

1MSR: Model Specific Register. Es un set de registros que se comenzo aincluir a partir del procesador Pentium, y que pueden no estar o cambiar enversiones futuras de estos procesadores. IA-32 EFER es un MSR cuyo bitLMA indica que el procesador esta en Modo IA-32e y se ha configurado elmodo de memoria largoAlejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 41 / 1

Page 62: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

IRET en Modo 64-bit

1 En el modo de funcionamiento IA-32e iret trabaja con operandosde 8 bytes de tamano. No hay motivo alguno para forzar esterequerimiento, pero dada la alineacion que posee el registro RSP,trabajar con un operando de tamano submultiplo exacto de laalineacion del stack no trae ningun problema.

2 Los push en el stack frame son siempre de 8 bytes en el ModoIA-32e, por lo tanto iret ejecutara pop de a 8 bytes. Para ello sedebe preceder a iret del prefijo de tamano de operando de 8bytes. De todos modos el tamano del pop se determina con eltamano de la direccion de memoria de la instruccion. El ajuste deltamano a SS/ESP/RSP esta determinado por el tamano del stack.

3 iret extrae SS:RSP incondicionalmente del stack solo en el modo64-bit. En el modo compatibilidad extrae SS:RSP del stack solo sicambia el CPL a causa de la Interrupcion o Excepcion. Esto esrazonable tratandose del modo Compatibilidad en donde seespera que las aplicaciones de 32 bits puedan funcionar.Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 42 / 1

Page 63: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

IRET en Modo 64-bit

4 En el Modo IA-32e, iret puede cargar NULL en el registro SS bajociertas condiciones.

Si el Modo de trabajo del codigo destino es 64-bit y su CPL esmayor de 11, iret puede cargar un NULL selector en SS.Como parte del mecanismo de cambio de stack una Interrupcion oExcepcion puede poner el nuevo SS en NULL, a pesar de buscarun nuevo selector de SS en el TSS y cargar su descriptor de laLDT o GDT. El nuevo selector de SS se pone en NULL a fin deresolver adecuadamente los retornos de subsiguientestransferencias far anidadas.Si el procedimiento llamado es interrumpido por si mismo (unaexcepcion tıpicamente) se apila en el stack frame un SS NULL. Enlos iret subsiguientes, el SS NULL en el stack actua como unasuerte de flag para avisarle al procesador que cargue el nuevodescriptor de SS.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 43 / 1

Page 64: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

Stack Switching en Modo 64-bit1 Cuando se produce una interrupcion en el Modo 64-bit, se

produce un cambio de stack, aun si no cambia el CPL.2 No se carga un nuevo descriptor en SS, y RSP se carga con el

siguiente valor interno de la IST.3 El nuevo SS se fuerza a NULL, (excepto su campo RPL que se

setea al valor del nuevo CPL), en toda transferencias far anidadas,con CALLF, INT n, Interrupciones de hardware, y Excepciones.

4 Siempre el par SS:RSP viejo se salva en el nuevo stack.5 Todos estos metodos retornan vıa iret, que recupera del stack que

esta a punto de abandonar los valores almacenados previamentede SS:RSP, para volver a ese procedimiento.

ResumenEl stack switch en modo IA-32e trabaja como en el modo legacyexcepto que el registro SS no se carga con el nuevo selector de laTSS, sino que se pone a NULL.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 44 / 1

Page 65: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

Stack Switching en Modo 64-bit1 Cuando se produce una interrupcion en el Modo 64-bit, se

produce un cambio de stack, aun si no cambia el CPL.2 No se carga un nuevo descriptor en SS, y RSP se carga con el

siguiente valor interno de la IST.3 El nuevo SS se fuerza a NULL, (excepto su campo RPL que se

setea al valor del nuevo CPL), en toda transferencias far anidadas,con CALLF, INT n, Interrupciones de hardware, y Excepciones.

4 Siempre el par SS:RSP viejo se salva en el nuevo stack.5 Todos estos metodos retornan vıa iret, que recupera del stack que

esta a punto de abandonar los valores almacenados previamentede SS:RSP, para volver a ese procedimiento.

ResumenEl stack switch en modo IA-32e trabaja como en el modo legacyexcepto que el registro SS no se carga con el nuevo selector de laTSS, sino que se pone a NULL.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 44 / 1

Page 66: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

Stack Frame en Modo 64-bit

0

+8

+16

+24

+32

+40SS

RSP

RFLAGS

CS

RIP

Error Code

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 45 / 1

Page 67: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

Interrupt Stack Table

A diferencia de la arquitectura legacy de 32 y 16 bits, en el Modo64 bits, se genera una conmutacion de stack cada vez que elprocesador recibe una Interrupcion de Hardware, o genera unaExcepcion, o ejecuta una instruccion INT n o CALLF.La Interrupt Stack Table (IST) es un mecanismo exclusivo delmodo IA-32e, que permite al procesador conseguir el nuevo stackcada vez que se produce una transferencia far.El mecanismo IST se habilita a nivel de cada Interrupcionindividual, completando el campo homonimo (IST) en aquellosdescriptores de IDT que corresponden a Interrupciones oExcepciones para las que queremos que el procesador activeeste mecanismo.Aquellos vectores de interrupcion cargados en IDT que no tenganeste mecanismo habilitado, trabajan en el modo legacy.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 46 / 1

Page 68: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

Interrupt Stack Table

El mecanismo IST es parte de la TSS de Modo 64-bit.Intel establece en su documentacion que este mecanismo fuepensado para interrupciones que requieran ejecutar siempresobre un stack conocido y seguro. Tal serıa el caso de las NMI,Doble Falta, Machine Check, entre otras.En el modo legacy de 32 y 16 bits, esta necesidad se satisfacıacolocando una Task Gate en el descriptor correspondiente de laIDT. De este modo al producirse esas interrupciones especıficasel procesador genera una conmutacion de tarea que lo lleva a unentorno seguro, pero a costa de una demora adicional que implicaconmutar los contextos de ejecucion en forma automatica.Este mecanismo de conmutacion de tareas no esta disponible enel Modo IA-32e.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 47 / 1

Page 69: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy?

Interrupt Stack Table

El Mecanismo IST proporciona hasta siete punteros a pilas en elTSS.Estos punteros son referenciados por un Descriptor de Puerta deInterrupcion o Excepcion en la IDT.Este descriptor contiene un campo de 3 bits denominado IST quehace las veces de ındice dentro de la seccion IST del TSS.Mediante este mecanismo de indexacion el procesador puedecargar el valor apuntado por el ındice IST en el registro RSPcuando vectoriza la interrupcion correspondiente al Tipo que llevaa esa entrada de la IDT.Por lo demas el procesamiento de la interrupcion es el habitualdel modo de 32 bits.Cuando el ındice IST esta en 000, se utiliza el modo deconmutacion de stack legacy (32 bits).

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 48 / 1

Page 70: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en una PC El PIC

El PIC: Programable Interrupt Controller

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 49 / 1

Page 71: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en una PC El PIC

Conexionado

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 50 / 1

Page 72: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en una PC El PIC

Secuencia de Inicializacion

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 51 / 1

Page 73: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en una PC El PIC

Inicialization Control Words

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 52 / 1

Page 74: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en una PC El PIC

Inicialization Control Words

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 53 / 1

Page 75: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en una PC El PIC

Inicialization Control Words

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 54 / 1

Page 76: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en una PC El PIC

Inicialization Control Words

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 55 / 1

Page 77: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en una PC El PIC

Operational Control Words

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 56 / 1

Page 78: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en una PC El PIC

Operational Control Words

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 57 / 1

Page 79: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en una PC Subsistema de Interrupciones

Conexionado de los dos PIC en una PC

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 58 / 1

Page 80: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en una PC Subsistema de Interrupciones

Asignacion de las lıneas IRQ en una PC

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 59 / 1

Page 81: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en una PC El APIC

Mucho mas que un controlador de Interrupciones...

En 1990 Intel lanza el procesador Pentium, que introduce entrevarias novedades el Advanced Programmable Interrupt Controller(APIC) cuya principal funcion, consiste en dar soporte a MultiProcesamiento Simetrico (SMP).El APIC tiene dos componentes de Hardware:

1 El APIC Local que esta incluido en el chip que contiene el Core delprocesador (actualmente hay que hablar de un APIC por cada Coreintegrado en el Chip),

2 El IO/APIC, que es el concentrador externo de Interrupciones deHardware que reside en el chipset, y que interactua con cada APIClocal, para entre otras cosas enviar a cada core una interrupcionproveniente de un dispositivo de hardware, de acuerdo a diferentescriterios.

El APIC requiere ser habilitado explıcitamente. De otro modo elprocesador no lo usa y requiere una logica externa del tipo 8259A.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 60 / 1

Page 82: Procesadores IA-32 e Intel® 64 Gestión de Interrupcionesafurfaro/descargas/Procesadores de... · Alejandro Furfaro Procesadores IA-32 e Intel R 64 Gestion de Interrupciones´ Abril

Interrupciones en una PC El APIC

...Tanto que lo dejamos para tratar especıficamente

El APIC local permite manejar lo que Intel denominaInterrupciones locales.Son las que se generan en los terminales del chip por hardware, yen algunas fuentes adicionales que provee el APIC.Interactuando con el IO/APIC, conecta los terminales externos(LINT0 o LINT1 segun se lo configure) con la senal INTR del core(que ahora no esta disponible hacia el exterior).Si el APIC no esta habilitado, LINT0 corresponde a INTR, y LINT1a NMI.Se trata de un dispositivo cuya funcionalidad excede el manejo deinterrupciones, por lo tanto se lo tratara con mas detalle alabordar el tema SMP.

Alejandro Furfaro () Procesadores IA-32 e Intel R© 64 Gestion de Interrupciones Abril 2012 61 / 1