• No se han encontrado resultados

Procesadores IA-32 e Intel R 64 Gestión de Interrupciones

N/A
N/A
Protected

Academic year: 2021

Share "Procesadores IA-32 e Intel R 64 Gestión de Interrupciones"

Copied!
82
0
0

Texto completo

(1)

Procesadores IA-32 e Intel

R

64

Gesti ´on de Interrupciones

Alejandro Furfaro

Abril 2012

(2)
(3)

Inroducci ´on Sistema de Interrupciones de Procesadores x86 Fuentes de interrupci ´on

Hardware.

Se ˜nales el ´ectricas enviadas desde los dispositivos de hardware,

generalmente concentradas en un controlador externo que las prioriza y env´ıa a la CPU secuencialmente de acuerdo a este criterio.

Caracter´ısticas: Asincr ´onicas. No determin´ısticas. Software.

Se producen cuando el software ejecuta INT n.

Caracter´ıstica: Determin´ısticas. La instrucci ´on INT se intercala donde se desea generar la interrupci ´on.

Internas.

Se conocen como excepciones y son generadas por la propia CPU a consecuencia de una situaci ´on que le impide completar la ejecuci ´on de la instrucci ´on en curso. Por ejemplo, una divisi ´on por cero, un page fault, una violaci ´on de protecci ´on, entre otras.

(4)

Inroducci ´on Sistema de Interrupciones de Procesadores x86 Fuentes de interrupci ´on

Hardware.

Se ˜nales el ´ectricas enviadas desde los dispositivos de hardware,

generalmente concentradas en un controlador externo que las prioriza y env´ıa a la CPU secuencialmente de acuerdo a este criterio.

Caracter´ısticas: Asincr ´onicas. No determin´ısticas. Software.

Se producen cuando el software ejecuta INT n.

Caracter´ıstica: Determin´ısticas. La instrucci ´on INT se intercala donde se desea generar la interrupci ´on.

Internas.

(5)

Inroducci ´on Sistema de Interrupciones de Procesadores x86 Fuentes de interrupci ´on

Hardware.

Se ˜nales el ´ectricas enviadas desde los dispositivos de hardware,

generalmente concentradas en un controlador externo que las prioriza y env´ıa a la CPU secuencialmente de acuerdo a este criterio.

Caracter´ısticas: Asincr ´onicas. No determin´ısticas. Software.

Se producen cuando el software ejecuta INT n.

Caracter´ıstica: Determin´ısticas. La instrucci ´on INT se intercala donde se desea generar la interrupci ´on.

Internas.

Se conocen como excepciones y son generadas por la propia CPU a consecuencia de una situaci ´on que le impide completar la ejecuci ´on de la instrucci ´on en curso. Por ejemplo, una divisi ´on por cero, un page fault, una violaci ´on de protecci ´on, entre otras.

(6)

Inroducci ´on Sistema de Interrupciones de Procesadores x86 Fuentes de interrupci ´on

Hardware.

Se ˜nales el ´ectricas enviadas desde los dispositivos de hardware,

generalmente concentradas en un controlador externo que las prioriza y env´ıa a la CPU secuencialmente de acuerdo a este criterio.

Caracter´ısticas: Asincr ´onicas. No determin´ısticas. Software.

Se producen cuando el software ejecuta INT n.

Caracter´ıstica: Determin´ısticas. La instrucci ´on INT se intercala donde se desea generar la interrupci ´on.

Internas.

(7)

Inroducci ´on Sistema de Interrupciones de Procesadores x86 Fuentes de interrupci ´on

Hardware.

Se ˜nales el ´ectricas enviadas desde los dispositivos de hardware,

generalmente concentradas en un controlador externo que las prioriza y env´ıa a la CPU secuencialmente de acuerdo a este criterio.

Caracter´ısticas: Asincr ´onicas. No determin´ısticas. Software.

Se producen cuando el software ejecuta INT n.

Caracter´ıstica: Determin´ısticas. La instrucci ´on INT se intercala donde se desea generar la interrupci ´on.

Internas.

Se conocen como excepciones y son generadas por la propia CPU a consecuencia de una situaci ´on que le impide completar la ejecuci ´on de la instrucci ´on en curso. Por ejemplo, una divisi ´on por cero, un page fault, una violaci ´on de protecci ´on, entre otras.

(8)

Inroducci ´on Sistema de Interrupciones de Procesadores x86 Fuentes de interrupci ´on

Hardware.

Se ˜nales el ´ectricas enviadas desde los dispositivos de hardware,

generalmente concentradas en un controlador externo que las prioriza y env´ıa a la CPU secuencialmente de acuerdo a este criterio.

Caracter´ısticas: Asincr ´onicas. No determin´ısticas. Software.

Se producen cuando el software ejecuta INT n.

Caracter´ıstica: Determin´ısticas. La instrucci ´on INT se intercala donde se desea generar la interrupci ´on.

Internas.

(9)

Inroducci ´on Sistema de Interrupciones de Procesadores x86 Fuentes de interrupci ´on

Hardware.

Se ˜nales el ´ectricas enviadas desde los dispositivos de hardware,

generalmente concentradas en un controlador externo que las prioriza y env´ıa a la CPU secuencialmente de acuerdo a este criterio.

Caracter´ısticas: Asincr ´onicas. No determin´ısticas. Software.

Se producen cuando el software ejecuta INT n.

Caracter´ıstica: Determin´ısticas. La instrucci ´on INT se intercala donde se desea generar la interrupci ´on.

Internas.

Se conocen como excepciones y son generadas por la propia CPU a consecuencia de una situaci ´on que le impide completar la ejecuci ´on de la instrucci ´on en curso. Por ejemplo, una divisi ´on por cero, un page fault, una violaci ´on de protecci ´on, entre otras.

(10)

Inroducci ´on Identificaci ´on de las fuentes de interrupci ´on Caracter´ısiticas principales

El sistema de interrupciones fue dise ˜nado para el primer procesador de la familia x86, el 8086, en 1978, y se mantiene id ´entico hasta los procesadores actuales de microarquitectura Core.

Una interrupci ´on se identifica un´ıvocamente mediante un valor num ´erico de 8 bits que se denominaTipo.

Por lo tanto, un procesador x86 puede manejar 256 tipos

(11)

Inroducci ´on Identificaci ´on de las fuentes de interrupci ´on Identificando una fuente de interrupci ´on

¿Como se obtiene el tipo?

Es provisto por el hardware en interrupciones que ingresan por el pin INTRdel procesador.

Est ´a asociado a un pin del procesador, tal el caso de la Interrupci ´on No enmascarableNMIque lleva asociado el tipo 2.

Acompa ˜na al c ´odigo de operaci ´on en la instrucci ´onINT type, para el caso de las interrupciones por software, por ejemplo INT 80h. Est ´a asociado a una instrucci ´on (INTO,por ejemplo, genera una interrupci ´on de tipo 4).

Las excepciones tienen asignado un tipo espec´ıfico cada una.

(12)

Inroducci ´on Identificaci ´on de las fuentes de interrupci ´on Identificando una fuente de interrupci ´on

¿Como se obtiene el tipo?

Es provisto por el hardware en interrupciones que ingresan por el pin INTRdel procesador.

Est ´a asociado a un pin del procesador, tal el caso de la Interrupci ´on No enmascarableNMIque lleva asociado el tipo 2.

Acompa ˜na al c ´odigo de operaci ´on en la instrucci ´onINT type, para el caso de las interrupciones por software, por ejemplo INT 80h.

Est ´a asociado a una instrucci ´on (INTO,por ejemplo, genera una interrupci ´on de tipo 4).

(13)

Inroducci ´on Identificaci ´on de las fuentes de interrupci ´on Identificando una fuente de interrupci ´on

¿Como se obtiene el tipo?

Es provisto por el hardware en interrupciones que ingresan por el pin INTRdel procesador.

Est ´a asociado a un pin del procesador, tal el caso de la Interrupci ´on No enmascarableNMIque lleva asociado el tipo 2.

Acompa ˜na al c ´odigo de operaci ´on en la instrucci ´onINT type, para el caso de las interrupciones por software, por ejemplo INT 80h. Est ´a asociado a una instrucci ´on (INTO,por ejemplo, genera una interrupci ´on de tipo 4).

Las excepciones tienen asignado un tipo espec´ıfico cada una.

(14)

Inroducci ´on Identificaci ´on de las fuentes de interrupci ´on Identificando una fuente de interrupci ´on

¿Como se obtiene el tipo?

Es provisto por el hardware en interrupciones que ingresan por el pin INTRdel procesador.

Est ´a asociado a un pin del procesador, tal el caso de la Interrupci ´on No enmascarableNMIque lleva asociado el tipo 2.

Acompa ˜na al c ´odigo de operaci ´on en la instrucci ´onINT type, para el caso de las interrupciones por software, por ejemplo INT 80h.

Est ´a asociado a una instrucci ´on (INTO,por ejemplo, genera una interrupci ´on de tipo 4).

(15)

Inroducci ´on Identificaci ´on de las fuentes de interrupci ´on Identificando una fuente de interrupci ´on

¿Como se obtiene el tipo?

Es provisto por el hardware en interrupciones que ingresan por el pin INTRdel procesador.

Est ´a asociado a un pin del procesador, tal el caso de la Interrupci ´on No enmascarableNMIque lleva asociado el tipo 2.

Acompa ˜na al c ´odigo de operaci ´on en la instrucci ´onINT type, para el caso de las interrupciones por software, por ejemplo INT 80h. Est ´a asociado a una instrucci ´on (INTO,por ejemplo, genera una interrupci ´on de tipo 4).

Las excepciones tienen asignado un tipo espec´ıfico cada una.

(16)

Inroducci ´on Identificaci ´on de las fuentes de interrupci ´on Identificando una fuente de interrupci ´on

¿Como se obtiene el tipo?

Es provisto por el hardware en interrupciones que ingresan por el pin INTRdel procesador.

Est ´a asociado a un pin del procesador, tal el caso de la Interrupci ´on No enmascarableNMIque lleva asociado el tipo 2.

Acompa ˜na al c ´odigo de operaci ´on en la instrucci ´onINT type, para el caso de las interrupciones por software, por ejemplo INT 80h. Est ´a asociado a una instrucci ´on (INTO,por ejemplo, genera una interrupci ´on de tipo 4).

(17)

Inroducci ´on Identificaci ´on de las fuentes de interrupci ´on Tipos predefinidos

Tipo Mnem ´onico Descripci ´on Clase C ´odigo de Error

Fuente

0 #DE Error de Divisi ´on Fault NO Instrucciones DIV e IDIV 1 #DB Reservada Fault/Trap NO Solo para uso de Intel

2 - NMI Interrupci ´on NO Interrupci ´on No enmascarable. Pin NMI

3 #BP BreackPoint Trap NO Opcode 0xCC 4 #OF Overflow Trap NO Instrucci ´on INTO 5 #BR BOUND Range

Ex-ceeded

Fault NO Instrucci ´on BOUND

6 #UD Invalid Opcode Fault NO Instrucci ´on UD2 u Opcode Reservado 7 #NM Coprocesador No

disponible

Fault NO Instrucciones de Punto Flotante o WAIT / FWAIT

8 #DF Doble Fault Abort SI (Cero) Cualquier instrucci ´on capaz de gene-rar una excepci ´on, una se ˜nal en NMI o en INTR

9 Coprocessor Seg-ment Overrun (re-servada)

Fault SI Instrucciones de Punto Flotante

10 #TS TSS Inv ´alido Fault SI Task switch o acceso a un TSS

(18)

Inroducci ´on Identificaci ´on de las fuentes de interrupci ´on Tipos predefinidos

Tipo Mnem ´onico Descripci ´on Clase C ´odigo de Error

Fuente

11 #NP Segmento No Pre-sente

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

12 #SS Falta en el Stack Segment

Fault SI Operacioes de Pila y Carga del registro SS

13 #GP General Protection Fault SI Cualquier referencia a memoria y otros chequeos de protecci ´on

14 #PF Page Fault Fault SI Cualquier referencia a memoria 15 - Reservada por

In-tel (no usar)

NO

16 #MF X-87 FPU Error de Punto Flotante

Fault NO Instrucci ´on 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 C ´odigos de error si hubiese, as´ı como su fuente, depende del mo-delo de procesador

19 #XF Excepci ´on SIMD Floating Point

Fault NO Cualquier instrucci ´on SSEx

20-31

- Reservada por In-tel (no usar)

32-255

- A definir por el usuario

(19)

Vectorizaci ´on en Modo Protegido Estrucuras de datos asociadas Interrupt Descriptor Table

Cuando el procesador trabaja en Modo Protegido debe definirse una tabla en memoria, llamadaIDT(por Interrupt Descriptor Table), que a diferencia del funcionamiento en Modo Real, no almacena vectores de interrupci ´on, sino que como su nombre lo indica almacena

Descriptores.

Esta tabla tiene ´unicamente 256 entradas, ya que esa es la cantidad de tipos de interrupciones diferentes que maneja el microprocesador.

(20)

Vectorizaci ´on 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 en el descriptor)

(21)

Vectorizaci ´on en Modo Protegido Estrucuras de datos asociadas Formato de los Descriptores de 32 bits

(22)
(23)

Vectorizaci ´on en Modo Protegido Utilizaci ´on de los descriptores

Una vez conocida la ubicaci ´on de la IDT, vectoriza la interrupci ´on

(24)

Vectorizaci ´on en Modo Protegido Utilizaci ´on de los descriptores

(25)

Vectorizaci ´on en Modo Protegido Utilizaci ´on de los descriptores

Una vez conocida la ubicaci ´on de la IDT, vectoriza la interrupci ´on

(26)

Vectorizaci ´on en Modo Protegido Utilizaci ´on de los descriptores

(27)

Vectorizaci ´on en Modo Protegido Utilizaci ´on de los descriptores

Una vez conocida la ubicaci ´on de la IDT, vectoriza la interrupci ´on

(28)

Vectorizaci ´on en Modo Protegido Utilizaci ´on de los descriptores

(29)

Vectorizaci ´on en Modo Protegido Utilizaci ´on de los descriptores

Una vez conocida la ubicaci ´on de la IDT, vectoriza la interrupci ´on

(30)

Vectorizaci ´on en Modo Protegido Utilizaci ´on de los descriptores

(31)

Vectorizaci ´on en Modo Protegido Manejo de la Pila Pila de Modo USER

(32)
(33)

Vectorizaci ´on en Modo Protegido Manejo de la Pila Segundo: Segmento de c ´odigo de la Aplicaci ´on

(34)
(35)

Excepciones Clasificaci ´on La excepciones se dividen en tres tipos

1 Fault:Excepci ´on que puede corregirse permitiendo al programa

retomar la ejecuci ´on de esa instrucci ´on sin perder continuidad. El procesador guarda en la pila la direcci ´on de la instrucci ´on que produjo la falla.

2 Traps:Excepci ´on producida inmediatamente a continuaci ´on de

una instrucci ´on de trap. Algunas permiten al procesador retomar la ejecuci ´on sin perder continuidad. Otras no. El procesador guarda en la pila la direcci ´on de la instrucci ´on a ejecutarse luego de la instrucci ´on trapeada.

3 Aborts: Excepci ´on que no siempre puede determinar la

instrucci ´on que la caus ´o, ni permite recuperar la ejecuci ´on de la tarea que la caus ´o. Reporta errores severos de hardware o inconsistencias en tablas del sistema.

(36)

Excepciones Clasificaci ´on La excepciones se dividen en tres tipos

1 Fault:Excepci ´on que puede corregirse permitiendo al programa retomar la ejecuci ´on de esa instrucci ´on sin perder continuidad. El procesador guarda en la pila la direcci ´on de la instrucci ´on que produjo la falla.

2 Traps:Excepci ´on producida inmediatamente a continuaci ´on de

una instrucci ´on de trap. Algunas permiten al procesador retomar la ejecuci ´on sin perder continuidad. Otras no. El procesador guarda en la pila la direcci ´on de la instrucci ´on a ejecutarse luego de la instrucci ´on trapeada.

3 Aborts: Excepci ´on que no siempre puede determinar la

(37)

Excepciones Clasificaci ´on La excepciones se dividen en tres tipos

1 Fault:Excepci ´on que puede corregirse permitiendo al programa retomar la ejecuci ´on de esa instrucci ´on sin perder continuidad. El procesador guarda en la pila la direcci ´on de la instrucci ´on que produjo la falla.

2 Traps:Excepci ´on producida inmediatamente a continuaci ´on de una instrucci ´on de trap. Algunas permiten al procesador retomar la ejecuci ´on sin perder continuidad. Otras no. El procesador guarda en la pila la direcci ´on de la instrucci ´on a ejecutarse luego de la instrucci ´on trapeada.

3 Aborts: Excepci ´on que no siempre puede determinar la

instrucci ´on que la caus ´o, ni permite recuperar la ejecuci ´on de la tarea que la caus ´o. Reporta errores severos de hardware o inconsistencias en tablas del sistema.

(38)

Excepciones Clasificaci ´on La excepciones se dividen en tres tipos

1 Fault:Excepci ´on que puede corregirse permitiendo al programa retomar la ejecuci ´on de esa instrucci ´on sin perder continuidad. El procesador guarda en la pila la direcci ´on de la instrucci ´on que produjo la falla.

2 Traps:Excepci ´on producida inmediatamente a continuaci ´on de una instrucci ´on de trap. Algunas permiten al procesador retomar la ejecuci ´on sin perder continuidad. Otras no. El procesador guarda en la pila la direcci ´on de la instrucci ´on a ejecutarse luego de la instrucci ´on trapeada.

3 Aborts: Excepci ´on que no siempre puede determinar la

(39)

Excepciones Excepciones y C ´odigo de Error Si es una Excepci ´on, puede haber un C ´odigo de error

(40)

Excepciones Excepciones y C ´odigo de Error ¿Para que sirve el c ´odigo de error?

Una excepci ´on 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 interrupci ´on, necesitamos determinar cual ha sido la causa concreta de la excepci ´on para poder resolverla.

Por ello, en excepciones que pueden tener causas m ´ultiples, se provee en la pila una palabra de 4 bytes denominda C ´odigo de Error.

(41)

Excepciones Excepciones y C ´odigo de Error Excepciones: C ´odigo de error

(42)
(43)

Excepciones Excepciones y C ´odigo de Error Significado del Error Code

1 EXT:External Event (bit 0): Se setea para indicar que la

excepci ´on ha sido causada por un evento externo al procesador.

2 IDT:Descriptor Location (bit 1): Cuando est ´a seteado indica que

el campo Segment Selector Index se refiere a un descriptor de puerta en la IDT: Cuando est ´a en cero indica que dicho campo se refiere 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 anterior est ´a en cero. Indica a que tabla de descriptores corresponde el selector del campo Indice: 0 GDT, 1 LDT.

(44)

Excepciones Excepciones y C ´odigo de Error Significado del Error Code

1 EXT:External Event (bit 0): Se setea para indicar que la

excepci ´on ha sido causada por un evento externo al procesador. 2 IDT:Descriptor Location (bit 1): Cuando est ´a seteado indica que

el campo Segment Selector Index se refiere a un descriptor de puerta en la IDT: Cuando est ´a en cero indica que dicho campo se refiere 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 anterior

(45)

Excepciones Excepciones y C ´odigo de Error Significado del Error Code

1 EXT:External Event (bit 0): Se setea para indicar que la

excepci ´on ha sido causada por un evento externo al procesador. 2 IDT:Descriptor Location (bit 1): Cuando est ´a seteado indica que

el campo Segment Selector Index se refiere a un descriptor de puerta en la IDT: Cuando est ´a en cero indica que dicho campo se refiere 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 anterior

est ´a en cero. Indica a que tabla de descriptores corresponde el selector del campo Indice: 0 GDT, 1 LDT.

(46)

Excepciones Excepciones y C ´odigo de Error Significado del Error Code

1 EXT:External Event (bit 0): Se setea para indicar que la

excepci ´on ha sido causada por un evento externo al procesador. 2 IDT:Descriptor Location (bit 1): Cuando est ´a seteado indica que

el campo Segment Selector Index se refiere a un descriptor de puerta en la IDT: Cuando est ´a en cero indica que dicho campo se refiere 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 anterior

(47)

Implicancias para el kernel Niveles de privilegio Cambio de Nivel de Privilegio de ejecuci ´on

En un sistema Multitarea, el kernel es quien maneja las Interrupciones, y Excepciones.¡SIEMPRE!.

Si al generase la excepci ´on o la Interrupci ´on se estaba

ejecutando c ´odigo del Kernel (KERNEL Mode), el resto de esta secci ´on no aplica.

Si la interrupci ´on o excepci ´on se ha producido en medio del c ´odigo de una aplicaci ´on (Modo USER), ser ´a el Kernel quien tome el control.

Conclusi ´on: No hay cambio de contexto, pero si hay un cambio de Nivel de privilegio de ejecuci ´on.

Entonces debemos tener presentes las reglas de protecci ´on del procesador.

(48)

Implicancias para el kernel Niveles de privilegio Cambio de Nivel de Privilegio de ejecuci ´on

En particular:

Un segmento de pila puede ser accedido por segmentos de c ´odigo de mismo nivel de privilegio (Atributo DPL de sus descriptores

respectivos).

Los datos que se terminan de guardar, se han almacenado en la pila de la aplicaci ´on, ya que la interrupci ´on no cambia el contexto de ejecuci ´on actual. Es decir la interrupci ´on no produce un task switch.

¡Importante!

(49)

Implicancias para el kernel Niveles de privilegio Cambio de Nivel de Privilegio de ejecuci ´on

En particular:

Un segmento de pila puede ser accedido por segmentos de c ´odigo de mismo nivel de privilegio (Atributo DPL de sus descriptores

respectivos).

Los datos que se terminan de guardar, se han almacenado en la pila de la aplicaci ´on, ya que la interrupci ´on no cambia el contexto de ejecuci ´on actual. Es decir la interrupci ´on no produce un task switch.

¡Importante!

Por este motivo, necesariamente el procesador debe transferir los datos resguardados en la pila de la aplicaci ´on de USER Mode, a la pila de la aplicaci ´on de KERNEL Mode.

(50)

Implicancias para el kernel Niveles de privilegio

(51)

Implicancias para el kernel Niveles de privilegio Y luego lo copia autom ´atica al stack Modo Kernel

Observaci ´on

A los datos resguardados en el stack de Modo USER se suman los registros del stack de Modo USER ya que ´estos van a ser escritos con los nuevos valores

correspondientes al stack de Modo KERNEL. De este modo, se recuperar ´an al momento de que se ejecuteiretdesde el handler de la interrupci ´on.

(52)

Implicancias para el kernel Niveles de privilegio Y luego lo copia autom ´atica al stack Modo Kernel

Observaci ´on

A los datos resguardados en el stack de Modo USER se suman los registros del stack de Modo USER ya que ´estos van a ser escritos con los nuevos valores

(53)

Prioridades Simultaneidad de requerimientos.

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

Prioridad Descripci ´on 1 (M ´axima) Reset y Machine check

2 Trap en Conmutac ´on de tarea. Flag T de TSS = 1 3 Eventos de Hardware Externos

-FLUSH -STOPCLK -SMI -INIT

4 Trap en la instrucci ´on previa -Breackpoint, o Debug Trap Exception. -TF=1 o breackpoint de dato o E/S 5 NMI, Non Maskable Interrupt 6 INTR, Interrupciones enmascarables 7 Code Breakpoint Fault

8 Fault en el ciclo de Fectch de la siguiente instrucci ´on. -Violaci ´on del l´ımite del segmento de c ´odigo -Code-Page Fault)

9 Faults en la decodificaci ´on de la siguiente instrucci ´on. -Instruction length mayor a 15 bytes

-Invalid Opcode -Coprocessor Not Available

10 (M´ınima) Faults en la ejecuci ´on de una instrucci ´on.

-Overflow -Bound error -Invalid TSS -Segment Not Present -Stack fault -General Protection -Data Page Fault -Alignment Check -x87 FPU Floating-point except -SIMD floating-point exception

(54)

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 mecanismo central de manejo de interrupciones. Los cambios se enumeran a continuaci ´on (no afectan la sustancia del sistema de interrupciones).

1 Excepto el handler de SMI (System Management Mode

Interruption),todos los handlers apuntados en la IDT en el modo

64-bitdeben apuntar a c ´odigo de 64 bits.

2 Cada dato que se pushea en la pila consume 64 bits (a ´un un simple byte como podr´ıa ser un ASCII). Al ser la pila de uso autom ´atico en las interrupciones este punto debe tenerse

presente. Si el dato guardado en la pila tiene menos de 64 bits, el procesador utiliza 8 bytes para su apilado de todos modos

extendiendo a cero su parte mas significativa.

(55)

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

¿Que cambia en 64 bits?

4 Si a causa de la vectorizaci ´on de la interrupci ´on o excepci ´on se eleva el nivel de privilegio, el registro SS se pone

autom ´aticamente en 0 (NULL).

5 Cambia el comportamiento de la instrucci ´on IRET 6 Cambia el mecanismo de cambio de stack

7 Cambia el contenido del stack frame.

(56)

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 ocupan invariablemente 16 bytes

La direcci ´on l ´ogica que debemos almacenar requiere un offset de 64 bits (van al registro RIP).

Tama ˜no m ´aximo de una IDT es de 4 Kbytes (utilizando los 256 vectores de Interrupci ´on)

(57)

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy? Formato de Descriptores de Interrupci ´on/Excepci ´on de 64 bits

12

8

4

0

0 0 0 0 31 31 31 31 16 15 16 1514 131211 8 7 2 IST DPL P 0 0 0 3 4 5 Tipo 0 0 0 Offset 31-16 Offset 15-0 Offset 63-32 Selector de Segmento Reservado

(58)

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

Para vectorizar una interrupci ´on en el modo IA-32e, el procesador escala el Tipo de Interrupci ´on por 16, ya que el tama ˜no del

descriptor es de 16 bytes en el modo 64-bit.

Los 8 primeros bytes de la entrada de la IDT son casi id ´enticos al conocido descriptor de Interrupci ´on o Excepci ´on de 32 bits, excepto el campo IST (Interrupt Stack Table) que se emplea para efectuar el stack switching cuando hay un cambio en el Nivel de Privilegio en el modo 64-bit.

El uso del campo IST, se describir ´a en detalle en la secci ´on Tareas.

(59)

Interrupciones en Modo 64 bits ¿Que cambia respecto del Modo Legacy? Cuestiones de protecci ´on

El segmento de c ´odigo referenciado por el selector de segmento de estas puertas (bytes 2 y 3 del descriptor de la Figura anterior, debe ser un segmento de 64 bits. De otro modo se genera una Excepci ´on #GP guard ´andose en el stack un c ´odigo de error en el que se almacena el selector de IDT (Tipo de interrupci ´on)

En el modo IA-32e no se puede incluir en la IDT descriptores de 32 bits. Solo se pueden incluir en la IDT de 64 bits Descriptores de Interrupci ´on o de Excepci ´on de 64 bits. Cualquier otro

descriptor producir ´a al invocarse esa interrupci ´on una excepci ´on #GP.

(60)

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

Stack Frame en Modo 64-bit

1 En el modo 64-bit, el tama ˜no del cada elemento que se apila en el stack-frame como resultado de una interrupci ´on o excepci ´on es fijo: 8 bytes siempre.

2 Cuando se vectoriza una Interrupci ´on o Excepci ´on en el Modo 64-bit, el par de registros SS:RSP se guarda en la pila

incondicionalmente, independientemente de que se haya producido o no un cambio en el Nivel de Privilegio de ejecuci ´on (cambio en CPL).

3 En el modo IA-32e el contenido del RSP se alinea a 16 bytes antes de generar el stack frame para asegurar su alineaci ´on a 16 bytes cuando se ingrese al handler de la interrupci ´on (o

(61)

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

Stack Frame en Modo 64-bit

4 Las ventajas de este requerimiento de alineaci ´on del stack a 16 bytes, son claras a la hora de apilar por ejemplo registros XMM, cuyo tama ˜no es 16 bytes. De otro modo las instrucciones de almacenamiento de estos registros (MOVAPS y MOVUPS) se dificultan por utilizar mas ciclos de bus para acceder al stack resintiendo la performance del sistema.

5 Aunque la alineaci ´on a 16 bytes del RSP se realizar ´a siempre si el bit LMA del MSR IA-32 EFER1est ´e en ’1’, esto es solo de

inter ´es para el Modo Kernel en cuyo caso no hay cambio de stack, ni se utiliza el contenido del campo IST del descriptor de la Interrupci ´on o Excepci ´on. Cuando se deba realizar cambio de stack el procesador asume que el Sistema Operativo ha colocado los valores de RSP en la TSS alineados a 16 bytes.

1MSR: Model Specific Register. Es un set de registros que se comenz ´o a

incluir a partir del procesador Pentium, y que pueden no estar o cambiar en versiones futuras de estos procesadores. IA-32 EFER es un MSR cuyo bit LMA indica que el procesador est ´a en Modo IA-32e y se ha configurado el

(62)

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

IRET en Modo 64-bit

1 En el modo de funcionamiento IA-32eirettrabaja con operandos de 8 bytes de tama ˜no. No hay motivo alguno para forzar este requerimiento, pero dada la alineaci ´on que posee el registro RSP, trabajar con un operando de tama ˜no subm ´ultiplo exacto de la alineaci ´on del stack no trae ning ´un problema.

2 Los push en el stack frame son siempre de 8 bytes en el Modo IA-32e, por lo tantoiretejecutar ´a pop de a 8 bytes. Para ello se debe preceder airetdel prefijo de tama ˜no de operando de 8 bytes. De todos modos el tama ˜no del pop se determina con el tama ˜no de la direcci ´on de memoria de la instrucci ´on. El ajuste del tama ˜no a SS/ESP/RSP est ´a determinado por el tama ˜no del stack. 3 iretextrae SS:RSP incondicionalmente del stack solo en el modo

(63)

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

IRET en Modo 64-bit

4 En el Modo IA-32e,iretpuede cargar NULL en el registro SS bajo ciertas condiciones.

Si el Modo de trabajo del c ´odigo destino es 64-bit y su CPL es mayor de 11,iretpuede cargar un NULL selector en SS.

Como parte del mecanismo de cambio de stack una Interrupci ´on o Excepci ´on puede poner el nuevo SS en NULL, a pesar de buscar un nuevo selector de SS en el TSS y cargar su descriptor de la LDT o GDT. El nuevo selector de SS se pone en NULL a fin de resolver adecuadamente los retornos de subsiguientes

transferencias far anidadas.

Si el procedimiento llamado es interrumpido por si mismo (una excepci ´on t´ıpicamente) se apila en el stack frame un SS NULL. En losiretsubsiguientes, el SS NULL en el stack act ´ua como una suerte de flag para avisarle al procesador que cargue el nuevo descriptor de SS.

(64)

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

Stack Switching en Modo 64-bit

1 Cuando se produce una interrupci ´on 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 m ´etodos retornan v´ıairet, que recupera del stack que est ´a a punto de abandonar los valores almacenados previamente de SS:RSP, para volver a ese procedimiento.

Resumen

(65)

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

Stack Switching en Modo 64-bit

1 Cuando se produce una interrupci ´on 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 m ´etodos retornan v´ıairet, que recupera del stack que est ´a a punto de abandonar los valores almacenados previamente de SS:RSP, para volver a ese procedimiento.

Resumen

El stack switch en modo IA-32e trabaja como en el modo legacy excepto que el registro SS no se carga con el nuevo selector de la TSS, sino que se pone a NULL.

(66)

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

Stack Frame en Modo 64-bit

(67)

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 Modo 64 bits, se genera una conmutaci ´on de stack cada vez que el procesador recibe una Interrupci ´on de Hardware, o genera una Excepci ´on, o ejecuta una instrucci ´on INT n o CALLF.

La Interrupt Stack Table (IST) es un mecanismo exclusivo del modo IA-32e, que permite al procesador conseguir el nuevo stack cada vez que se produce una transferencia far.

El mecanismo IST se habilita a nivel de cada Interrupci ´on individual, completando el campo hom ´onimo (IST) en aquellos descriptores de IDT que corresponden a Interrupciones o Excepciones para las que queremos que el procesador active este mecanismo.

Aquellos vectores de interrupci ´on cargados en IDT que no tengan este mecanismo habilitado, trabajan en el modo legacy.

(68)

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 documentaci ´on que este mecanismo fue pensado para interrupciones que requieran ejecutar siempre sobre 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´ıa colocando unaTask Gateen el descriptor correspondiente de la IDT. De este modo al producirse esas interrupciones espec´ıficas el procesador genera una conmutaci ´on de tarea que lo lleva a un entorno seguro, pero a costa de una demora adicional que implica conmutar los contextos de ejecuci ´on en forma autom ´atica.

(69)

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

Interrupt Stack Table

El Mecanismo IST proporciona hasta siete punteros a pilas en el TSS.

Estos punteros son referenciados por un Descriptor de Puerta de Interrupci ´on o Excepci ´on en la IDT.

Este descriptor contiene un campo de 3 bits denominado IST que hace las veces de ´ındice dentro de la secci ´on IST del TSS. Mediante este mecanismo de indexaci ´on el procesador puede cargar el valor apuntado por el ´ındice IST en el registro RSP cuando vectoriza la interrupci ´on correspondiente al Tipo que lleva a esa entrada de la IDT.

Por lo dem ´as el procesamiento de la interrupci ´on es el habitual del modo de 32 bits.

Cuando el ´ındice IST est ´a en 000, se utiliza el modo de conmutaci ´on de stack legacy (32 bits).

(70)

Interrupciones en una PC El PIC

(71)

Interrupciones en una PC El PIC

Conexionado

(72)
(73)

Interrupciones en una PC El PIC

Inicialization Control Words

(74)
(75)

Interrupciones en una PC El PIC

Inicialization Control Words

(76)
(77)

Interrupciones en una PC El PIC

Operational Control Words

(78)
(79)

Interrupciones en una PC Subsistema de Interrupciones

Conexionado de los dos PIC en una PC

(80)
(81)

Interrupciones en una PC El APIC

Mucho mas que un controlador de Interrupciones...

En 1990 Intel lanza el procesador Pentium, que introduce entre varias novedades el Advanced Programmable Interrupt Controller (APIC) cuya principal funci ´on, consiste en dar soporte a Multi Procesamiento Sim ´etrico (SMP).

El APIC tiene dos componentes de Hardware:

1 El APIC Local que est ´a incluido en el chip que contiene el Core del procesador (actualmente hay que hablar de un APIC por cada Core integrado en el Chip),

2 El IO/APIC, que es el concentrador externo de Interrupciones de Hardware que reside en el chipset, y que interact ´ua con cada APIC local, para entre otras cosas enviar a cada core una interrupci ´on proveniente de un dispositivo de hardware, de acuerdo a diferentes criterios.

(82)

Interrupciones en una PC El APIC

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

El APIC local permite manejar lo que Intel denomina Interrupciones locales.

Son las que se generan en los terminales del chip por hardware, y en algunas fuentes adicionales que provee el APIC.

Interactuando con el IO/APIC, conecta los terminales externos (LINT0oLINT1seg ´un se lo configure) con la se ˜nalINTR del core

(que ahora no est ´a disponible hacia el exterior).

Si el APIC no est ´a habilitado,LINT0corresponde aINTR, yLINT1 aNMI.

Se trata de un dispositivo cuya funcionalidad excede el manejo de interrupciones, por lo tanto se lo tratar ´a con mas detalle al

Referencias

Documento similar