Organización del Computador I Verano
Excepciones Basado en el capítulo 6 del libro de Patterson y Hennessy
Verano 2004 Profesora Borensztejn
Excepciones Unidad 2 2
Definiciones• Excepción: cambio inesperado en el flujo de control
proveniente de una causa interna o externa.• Interrupción: cambio inesperado en el flujo de
control proveniente de una causa externa.• El hardware debe ser capaz de salvar el estado
completo de la máquina, incluyendo la causa de la interrupción y el PC causante antes de pasar el control a la subrutina de servicio.
• Dificultad: cuando la excepción ocurre en el medio de una instrucción, y la instrucción requiere que el hardware restaure el estado existente antes de producirse el evento.
Excepciones Unidad 2 3
Definiciones
Excepciones
Entre instrucciones
En el medio de la instrucción
Continuar: pedido E/S, breakpoint, trace.
Continuar: Fallo Página
Terminar: Overflow Instrucción Indefinida
• Una computadora se denomina recuperable si es capaz de salvar el estado existente antes de que se produzca el evento
Excepciones Unidad 2 4
Ejemplos: excepciones en máquinas no segmentadas
• VAX, primera computadora reiniciable: instrucciones de longitud variable, de hasta 6 operandos que podían estar en memoria y además, almacenados de forma desalineada, de forma que la mitad de un operando podía estar en memoria y la mitad en disco!!! Cuando el procesador descubre que el siguiente byte de la instrucción NO está en memoria, tendrá que reiniciar una instrucción cuyo PC deberá apuntar 50 bytes más arriba!!
Excepciones Unidad 2 5
Excepciones en la máquina no segmentada multiciclo
• Dos tipos de excepciones:– ejecución de una instrucción indefinida (0)– desbordamiento aritmético (1)
• Acciones: – Guardar la dirección de la instrucción causante en el
registro EPC (Exception Program Counter)(32 bits)
– Pasarle información al S.O sobre el tipo de excepción en un registro de estado llamado Cause (32 bits en MIPS)
– Transferir el control a una dirección predeterminada: supongamos 40000000H
Excepciones Unidad 2 6
Camino de Datos con excepciones
MU
X
Pcsrc
Dst
DstW
40000040h
PC +4
Al PC
PC-4
EPCW
EP
C
IntCause
CauseW
Cause
00000000h
00000001h
Excepciones Unidad 2 7
Control para excepciones
• Cuando se detectan?– Instrucción Indefinida: cuando no está definido
el valor del estado siguiente a partir del estado 1– Desbordamiento: debe detectarlo la ALU al final
del estado de resultado para tipo R.
Excepciones Unidad 2 8
Grafo de Estados
IR<--MEM[PC];
PC<-PC+4
A<-----R[rs];
B<-----R[rt];
DST<---PC+(signext(inm16)<<2)
S<---AopB
S<---A+ signext(inm16)
Z<---AopB
si (Z) PC<--DST
dato<---MEM[S]MEM[S]<--B
R[rd]<---S R[rt]<---dato
Op=otro
Desbordamiento
Al estado 10
Al estado 11
Excepciones Unidad 2 9
Control para excepciones
Cause<--0
CauseW=1
Cause<--1
CauseW=1
ALUselA=0
ALUselB=01
Aluop=01
EPCW=1
PCW=1
PCsrc=11
Excepciones Unidad 2 10
Excepciones en la máquina segmentada lineal
M Reg
M Reg MReg
M Reg
M
M Reg M Reg
Add $1, $2, $1
Slt $15, $6, $7
Lw $16, 50($2)
Sw $25, 1000($0)
Sw $26, 1000($0)
1 2 3 4 5 6 7 8ciclos
Eliminadas !!
Reg M Reg
Excepciones Unidad 2 11
Detección de la excepción de desbordamiento y cancelar
• La lógica está en EX.
• Hay una instrucción en IF, otra en ID, y otra en EX que hay que cancelar ===> señales IFFlush, IDFlush y EXFlush.
• Ecuaciones del Control para cancelar:• Si (V=1 )
IF.Flush=1; ID.Flush=1; EX.Flush=1;
• Control para salvar el PC en EPC
Excepciones Unidad 2 12
Problemas• Las más difíciles de tratar son las excepciones que se producen en
el medio de la ejecución de una instrucción y tienen que ver con la instrucción. Son las llamadas excepciones síncronas, y deben ser recuperables
• Hay cinco instrucciones ejecutándose cuando se produce una excepción. Es importante identificar la instrucción que la produjo para saber qué instrucciones eliminar, qué PC guardar....
• Los distintos tipos de excepciones se producen en distintas etapas: por ejemplo código de op. Inválido se detecta en ID.
• Sin embargo, puede suceder que las excepciones se produzcan a la vez. Prioridades.
Excepciones Unidad 2 13
Tipos de Excepciones• Búsqueda
– Fallo de página– Fallo de alineamiento en memoria– Error de protección
• Dec/Lectura– Código de operación ilegal
• ALU– excepción arimética
• Memoria– Fallo de página– Fallo de alineamiento en memoria– Error de protección
Excepciones Unidad 2 14
Excepciones precisas
• La utilización de una arquitectura secuencial y una implementación segmentada entran en conflicto cuando se produce una excepción.
• Dada una instrucción que produce una excepción, ésta es precisa si:– El procesador puede pararse de forma que las
instrucciones :
anteriores FINALICEN
las posteriores PUEDAN REINICIARSE
15
Excepciones precisas• DIFICULTAD CON:
– Instrucciones que modifican el estado del procesador antes de que se garantice que finalizarán
• ALTERNATIVA– No actualizar el estado hasta que exista garantía de que la
instrucción finalizará.
• INFLUENCIA :– Debido a que hay dependencias entre instrucciones la no
actualización del estado del procesador es perjudicial si se quieren mantener todos los segmentos ocupados y no bloquear
16
Procesadores segmentados lineales
• Pasos para recuperarse de una excepción síncrona:– (a) Modificar el secuenciamiento– (b) Inhibir las escrituras– (c) Sistema Operativo– (d) Restaurar el estado
17
(a) Modificar el secuenciamiento
• Forzar una instrucción de trap en el próximo ciclo
i add
i+1 lw
i+2 add
i+ 3 sw
i+ 4 sub
primera instrucción del SO
IF
IF
IF
IF
ID
ID
ID
ID
EX
EX
EX
EX
MEM WB
MEM
MEM
MEM
WBIF ID EX MEM
WB
WB
WB
Fallo de Página
IF ID EX MEM
18
(b) Inhibir escrituras
• Previene cualquier cambio de estado antes de gestionar la excepción. (insertar burbuja)
i add
i+1 lw
i+2 add
i+3 sw
i+4 sub
primera instrucción del SO
IF
IF
IF
IF
ID
ID
ID
ID
EX
EX
EX
EX
MEM WB
MEM
IF ID EX
Fallo de Página
IF ID EX MEM
19
(c) Sistema Operativo
• Salvar PC de la instrucción en curso
i add
i+1 lw
i+2 add
i+3 sw
i+ 4 sub
primera instrucción del SO
IF
IF
IF
IF
ID
ID
ID
ID
EX
EX
EX
EX
MEM WB
MEM
IF ID EX
Fallo de Página
IF ID EX MEM
20
Sistema Operativo• Código rutina (para MIPS R-2000)
– $a0..$a3 corresponden a los registros $4..$7 y se utilizan para pasar parámetros
– $13 es el Registro Cause del Coprocesador 0
– $k0 es el registro $26 del procesador, es reservado para el ensamblador y sistema operativo
– $14 es el Registro EPC del coprocesador
– $k1 es el registro $27 del procesador, es reservado para el ensamblador y sistema operativo
– la instrucción rfe restaura los bits correspondientes en el registro de estado.
21
Sistema Operativo
.ktext 0x80000080
sw $a0, save0; salva para luego pasar parámetros
sw $a1, save1;
mfc0 $k0, $13; transfiere causa de interrupción
mfc0 $k1, $14; transfiere EPC
lw $a0, save0; restaura
sw $a1, save1;
rfe
jr $k1; reejecuta instrucción
tratamiento
22
(d) Restaurar Estado• Saltos indexados efectivos al final de la etapa de
búsqueda
k S.O
k+1 jr $27 (i+1)
IF
IF
IF
IF
ID
ID
ID
EX
EX
EX
MEM WB
MEM
IF ID EX
IF ID EX
i+1 lw
i+2 add
23
Orden entre excepciones• Pueden presentarse de manera desordenada
IF
IF
IF
IF
ID
ID
ID
ID
EX
EX
EX
EX
MEM WB
MEM
IF ID EX
Fallo de Página
MEM
MEM
• No tratar una excepción hasta que se tiene garantía que las instrucciones anteriores finalizarán sin excepciones
• Tratar excepciones en orden.
FIN Excepciones