estructura de computadores 2 [08/09] entrada/salida en...
Post on 30-Apr-2020
1 Views
Preview:
TRANSCRIPT
Estructura de Computadores 2 [08/09]
Entrada/Salida en procesadores MIPS
GAC: Grupo de Arquitectura de ComputadoresDpt. Electronica e Sistemas. Universidade da Coruna.
Bibliografıa
Computer Organization and Design: The hardware/software interface (3rd ed.), David A.Patterson and John L. Hennessy. Morgan Kaufmann Publishers, Inc.(Tambien disponible en castellano: Estructura y diseno de computadores: interficie cir-cuiterıa/programacion)
1. Introduccion
Filosofıa RISC (Reduced Instruction Set Computer)
• Instrucciones de pocas etapas (buscando ademas longitud fija de instrucciones)
• instrucciones de carga/almacenamiento (load/store)
• reducido numero de metodos de direccionamiento
• juego de instrucciones pequeno
Ejemplos RISC: MIPS, Sun SPARC, HP PA-RISC, IBM PowerPC, Alpha, ARM. . .
Objetivos de diseno: velocidad, coste (diseno, fabricacion y testeo), tamano, consumoelectrico, fiabilidad, versatilidad (sistemas empotrados)
Principios basicos:
• simplicidad favorece regularidad
• mas pequeno ⇒ mas rapido
• hacer el caso mas frecuente lo mas rapido posible
2. MIPS: Arquitectura basica y ensamblador
E/S asignada en memoria (MMIO)
Dos modos de funcionamiento: kernel y usuario
La mitad superior del espacio de direcciones solo accesible en modo kernel : direcciones apartir de 0x8000 0000.Esta region incluye:
• Codigo para el manejo de excepciones
• Datos solo accesibles al SO
• Direcciones de E/S asignadas en memoria: a partir de 0xffff 0000
Registros del MIPS y convencion sobre su uso
Organizacion de memoria
Organizacion de un stack frame
Operandos de instrucciones MIPS
MIPS assembly languageCategory Instruction Example Meaning Comments
add add $s1, $s2, $s3 $s1 = $s2 + $s3 Three operands; data in registers
Arithmetic subtract sub $s1, $s2, $s3 $s1 = $s2 - $s3 Three operands; data in registers
add immediate addi $s1, $s2, 100 $s1 = $s2 + 100 Used to add constants
load w ord lw $s1, 100($s2) Word from memory to register
store w ord sw $s1, 100($s2) Word from register to memory
Data load byte lb $s1, 100($s2) Byte f rom memory to register
transfer store byte sb $s1, 100($s2) Byte f rom register to memory load upper immediate lui $s1, 100 Loads constant in upper 16 bits
branch on equal beq $s1, $s2, 25 Equal test; PC-relative branch
Conditional
branch on not equal bne $s1, $s2, 25 Not equal test; PC-relative
branch set on less than slt $s1, $s2, $s3 Compare less than; for beq, bne
slti $s1, $s2, 100 Compare less than constant
jump j 2500 go to 10000 Jump to target address
Uncondi- jump register jr $ra For sw itch, procedure return
tional jump jump and link jal 2500 For procedure call
$s1 = Memory[$s2 + 100]
Memory[$s2 + 100] = $s1
$s1 = Memory[$s2 + 100]
Memory[$s2 + 100] = $s1
$s1 = 100 * 216
if ($s1 == $s2) go to PC + 4 + 100
if ($s1 != $s2) go to PC + 4 + 100
if ($s2 < $s3) $s1 = 1; else $s1 = 0
set less than immediate
if ($s2 < 100) $s1 = 1; else $s1 = 0
go to $ra
$ra = PC + 4; go to 10000
Formato de instrucciones del MIPS
Modos de direccionamiento
Que se guarda y que no en una subrutina
int leaf_example (int g, int h, int i, int j) {
int f;
f = (g + h) - (i + j);
return f;
}
leaf_example:
addi $sp, $sp, -4 #adjust stack
sw $s0, 0($sp) #save reg $s0
add $t0, $a0, $a1 #g+h in $t0
add $t1, $a2, $a3 #i+j in $t1
sub $s0, $t0, $t1
add $v0, $s0, $zero
lw $s0, 0($sp)
addi $sp, $sp, 4
jr $ra
3. E/S en MIPS
E/S asignada en memoria
3.1. E/S con interrupciones
Eventos o situaciones excepcionales en flujo de ejecucion del MIPS:
1. Peticion de dispositivo de E/SOrigen: Externo. Terminologıa MIPS: Interrupcion
2. Llamada al sistema desde espacio usuarioOrigen: Interno. Terminologıa. MIPS: Excepcion
3. Desbordamiento aritmetico (overflow)Origen: Interno. Terminologıa MIPS: Excepcion
4. Uso de una instruccion no definidaOrigen: Interno. Terminologıa MIPS: Excepcion
5. Problema hardwareOrigen: Interno o Externo. Terminologıa MIPS: Excepcion o Interrupcion
Para el manejo de excepciones e interrupciones MIPS utiliza el coprocesador 0.
Identificacion del motivo de excepcion mediante un registro de estado (Registro de causao Cause register) del coprocesador 0 (no usa interrupciones vectorizadas).
Otro registro de estado (Registro de estado o Status register) permite habilitar/deshabilitarinterrupciones.
Otro registro guarda la direccion de la instruccion interrumpida, es decir, del contador deprograma: EPC register (Exception Program Counter).
Los registros del coprocesador 0 son accesibles por medio de las instrucciones mfc0 (movefrom coprocessor 0 ) y mtc0 (move to coprocessor 0 ):
mfc0 $k0, $13 # Reg. $k0 de CPU cargado con contenido de reg causa
mtc0 $0, $12 # Reg. zero de CPU almacenado en reg estado
# (se borra a cero)
La instruccion rfe (return from exception) habilita de nuevo las interrupciones (bit Inte-rrupt Enable en registro de estado) antes de devolver el control tras la ejecucion de unarutina de servicio.
Un salto incondicional a la direccion de la instruccion siguiente a la que habıa sido inte-rrumpida devuelve el control tras haber atendido la excepcion.
Algunos registros del coprocesador 0 del MIPS
Principales bits del registro de estado del C0 del MIPS
Principales bits del registro de causa del C0 del MIPS
Codigos de causas de excepcion
La arquitectura MIPS fija una direccion de memoria como direccion de comienzo delmanejador de excepciones: 0x8000 0080.
Manejo de una excepcion en MIPS
top related