Sei sulla pagina 1di 49

Arquitectura de Computadores II

Clase #2

Facultad de Ingeniería
Universidad de la República

Instituto de Computación
Curso 2010
Veremos
 Ciclo de Instrucción
 “Normal”
 Con interrupciones

 La Unidad de Control

 El bus del sistema

 Procesamiento de la Entrada/Salida
Ciclo de Instrucción
 Dos pasos:
 Fetch
 Execute
Ciclo Fetch
 El Program Counter (PC) tiene la dirección de la próxima
instrucción

 El procesador trae desde memoria la instrucción apuntada por el


PC

 Se carga la instrucción en el Instruction Register (IR)

 Se incrementa el PC, a menos que se indique otra cosa


Ciclo Execute
 Procesador - memoria
 Transferencia entre CPU y memoria
 Procesador - E/S
 Transferencia entre CPU y módulo de E/S
 Procesamiento de datos
 Operación lógica o aritmética sobre los datos
 Control
 Alteración de la secuencia de operaciones
• Ej. jump
 Combinación de las anteriores
• Ej. Add [100], r1
Ejemplo de ejecución de un
programa

4 bits 12 bits
Opcode Dirección

1 bit 15 bits
S Magnitud

0001 – Cargar AC desde memoria


0010 – Almacenar AC en memoria
0101 – Sumar a AC un dato de memoria
Ciclo de Instrucciones
Diagrama de Estados
Interrupciones
 Mecanismo que permite interrumpir la secuencia normal
de procesamiento de la CPU ante condiciones particulares
 Pueden ser de alguna de las siguientes clases:
 Programa
• Ej. overflow, división por cero, protección de memoria
 Timer
• Generado por un temporizador interno del procesador
• Usado en pre-emptive multi-tasking
 E/S
• Provocada por el controlador de E/S
 Fallo de Hardware
• Ej. Error de paridad de memoria
Ciclo de Interrupciones

 Se agrega al ciclo de instrucción


 Procesador chequea por la interrupción
 Indicado por una señal de interrupción
 Si no hay interrupción, fetch próxima instrucción
 Si hay una interrupción pendiente:
 Suspender ejecución del programa corriente
 Salvar contexto
 Hacer que PC apunte a la dirección de inicio del manejador de
la interrupción
 Procesar interrupción
 Restaurar contexto y continuar el programa interrumpido
Transferencia de Control vía
Interrupciones
Control de Flujo del Programa
Tiempos de ejecución sin y
con interrupciones

E/S de corta duración E/S de larga duración


Ciclo de Instrucción con
Interrupciones
Ciclo de Instrucción con
Interrupciones
Diagrama de Estados
Ciclo de
instrucción
“normal”

Ciclo de
instrucción con
interrupciones
Múltiples Interrupciones
 Deshabilitar interrupciones
 El procesador ignorará las interrupciones mientras se procesa
otra interrupción
 Las interrupciones quedan pendientes y son atendidas una
vez que la primera interrupción ha sido procesada
 Las interrupciones son manejadas en secuencia

 Definir prioridades
 Los manejadores de interrupciones de baja prioridad pueden
ser interrumpidos por interrupciones de mayor prioridad
 Una vez que se ha procesado la interrupción de mayor
prioridad, se retorna al manejador de la interrupción previa
Múltiples Interrupciones -
Secuencial
Múltiples Interrupciones -
Anidadas (1/2)
Múltiples Interrupciones -
Anidadas (2/2)
El diseño del procesador
 La CPU ejecuta o supervisa la ejecución de las instrucciones que
componen un programa, y por lo tanto tiene un impacto
fundamental en la performance del sistema

 Está constituido por unidades funcionales que incluyen:


 El datapath (camino de datos)
• Set de registros
• ALU

 La Unidad de Control
Algunas decisiones
importantes
 Cantidad, ancho y reglas de uso del set de
registros
 Direccionamiento
 Tecnología del dispositivo
 Set de Instrucciones
 Diseño de la Unidad de Control: cableada o
microprogramada?
La Unidad de Control
 La instrucción contenida en el Instruction Register (IR) determina
la acción de la Unidad de Control
 La ejecución incluye los siguientes pasos:
• Instruction Fetch (IF)
• Instruction Decode (ID)
• Operand Fetch (OF)
• Operation Execution (OE)
• Operand Store(OS)
 La mayoría de las instrucciones son registro-memoria o registro-
registro
 La Unidad de Control debe controlar la secuencia de pasos
discretos que son necesarios para decodificar y ejecutar las
instrucciones; se puede ver como un problema que se puede
resolver en hardware o en software.
Control cableado
 Se implementa como un circuito secuencial, usando compuertas y
componentes (NAND, NOR flip-flops, contadores, etc.).

 Los sistemas cableados son rápidos pero pueden ser inflexibles


 Las funciones de control son fijas; si se necesita agregar instrucciones
extra, la circuitería debe rediseñarse
 Algunos procesadores RISC usan control cableado para aumentar la
velocidad

 Normalmente se usa una combinación de control cableado para


instrucciones sencillas y microcódigo para instrucciones complejas y
poco frecuentes
Control microprogramado
 Solución en software del control de la máquina

 Un control microprogramado se puede ver como un computador


“interno” que implementa las funciones requeridas por el set de
instrucciones del computador “externo”

 Una secuencia de microinstrucciones ejecuta una


macroinstrucción

 El código elemental necesario para implementar las


macroinstrucciones se almacena en memoria de microprograma
 Usualmente denominado firmware
Módulos del
sistema
 Todas las unidades deben
interconectarse
 El tipo de conexión varía según
el módulo
 Memoria
 Entrada/Salida
 CPU
Buses (1/2)

 Camino de comunicación
entre dispositivos
 Normalmente broadcast
 El bus del sistema
interconecta CPU,
memoria y módulos de
entrada/salida
 Líneas en paralelo,
agrupadas por función
 Ej. 32 bits de bus de
datos y 32 bits de
direcciones
Buses (2/2)

 Bus de datos
 Transporta datos
• A este nivel no hay diferencia entre “datos” e “instrucciones” (Von
Neuman)
 Performance asociada al ancho del bus
• 8, 16, 32, 64 bits
 Bus de direcciones
 Identificar fuente o destino de los datos en memoria
 Ancho del bus determina capacidad de memoria del sistema
• Ej. 8080 tiene un bus de direcciones de 16 bits, resultando 64k de
memoria direccionable
 Bus de Control
 Información de control y temporización
• Lectura/Escritura
• Pedidos de interrupción
• Señales de reloj
Esquema de interconexión del
bus

 Muchos dispositivos en el bus…


 Retardos de propagación
• Caminos de datos largos complican la coordinación y afectan
negativamente la performance
 Problemas eléctricos (“fan out”)

 En general se utilizan múltiples buses para contrarrestar


estos problemas
Buses:
Tradicional (con cache)
Buses:
Bus de Alta Performance
Arbitraje del Bus
 Bus controlado por más de un módulo
 Ej. CPU y controlador de DMA
 Solo un módulo puede controlar el bus a la vez!
 Se debe arbitrar

 Arbitraje Centralizado
 Dispositivo hardware único controlando acceso al bus
• Árbitro o Controlador del Bus
 Puede ser parte de la CPU o separado
 Arbitraje Distribuido
 Cada módulo puede reclamar el control del bus
 Lógica de control en todos los módulos
Temporización:
Caso sincrónico
 Coordinación de eventos en el bus

 Sincrónica
 Eventos determinados por las señales de reloj
 El Bus de Control incluye la línea de reloj
• Todos los dispositivos usan el reloj
• Sincronización en flanco creciente (usualmente)

 Asincrónica
 No existe línea de reloj
 Se utilizan señales de control para sincronización
 Más flexible pero también más complicado
Bus PCI (1/3)
 Peripheral Component Interconnection
 Dominio público, publicado por Intel
• PCI Special Interest Group
 32 o 64 bit
 33/66 Mhz -> hasta 528 MBytes/seg
 Temporización sincrónica
 Arbitraje centralizado
 PnP: Plug and Play
 Permite insertar placas en cualquier slot sin cambiar “jumpers” o
“switches”
 Mapeo de direcciones, IRQs, COM ports, etc., son asignados
dinámicamente cuando arranca el sistema
 Información básica (a la BIOS o SO) para que funcione PnP:
• Tipo de placa y dispositivo
• Requerimientos de memoria
• Requerimientos de Interrupciones
Bus PCI (2/3)
 PnP es posible gracias a que cada
dispositivo PCI mantiene un espacio
de configuración de 256 bytes
 Los primeros 64 bytes (en la figura)
están definidos en la especificación
PCI y contienen información
estándar
 Los restantes 192 bytes se pueden
usar para almacenar información
específica del dispositivo
Bus PCI (3/3): arbitraje
E/S:
la interfaz con el procesador
 Direccionamiento
 E/S aislada
 E/S mapeada en Memoria
 Control de E/S
 Polling
 Interrupciones
 DMA
 Controladores de E/S
 Procesadores de E/S
Tasas de transferencia de E/S
Módulo de E/S (1/2)

 Funciones
 Control &
Temporización
 Comunicación con la
CPU
 Comunicación con
dispositivos
 Almacenamiento
temporal (buffering)
de datos
 Detección de Errores
Módulo de E/S (2/2)

 Mostrar propiedades del dispositivo a la CPU?


 Soporte de múltiples dispositivos?
 Control de funcionalidades del dispositivo, o
dejar esa tarea a la CPU?
Direccionamiento de la E/S
 E/S aislada
 Espacios de direcciones separados
 Se necesitan líneas de selección entre E/S y memoria
 Instrucciones específicas para E/S

 E/S mapeada en memoria


 Dispositivos y memoria comparten espacio de direcciones
 Accesos a E/S se ven como simples accesos a memoria
• El HW debe resolver la diferencia
 No hay instrucciones especiales para E/S
 A cada dispositivo se le asigna un identificador único
 Los comandos emitidos por la CPU contienen este
identificador (dirección)
E/S Programada
 La CPU controla directamente la E/S
 Monitorizar estado
 Comandos de lectura/escritura
 Transferencia de datos
 La CPU debe esperar que el módulo de E/S complete las
operaciones indicadas
 Pérdida de tiempo de CPU!
 E/S Programada - detalle
 CPU requiere una operación de E/S
 Módulo de E/S ejecuta la operación
 Módulo de E/S setea bits de estado
 La CPU chequea los bits de estado periódicamente
 Módulo de E/S no informa directamente a la CPU
• O sea, no interrumpe a la CPU
 La CPU puede esperar (“busy wait”), o rechequear más tarde
E/S Programada:
Comandos
 La CPU emite direcciones
 Identifica módulo de E/S (y dispositivo si el módulo controla
más de uno)

 La CPU emite comando


 Control – especifica al módulo de E/S qué hacer
• Ej. Situar cabezal de disco duro en determinada posición
 Test - chequo de estado
• Ej. Error?
 Lectura/Escritura
• El módulo de E/S transfiere datos desde/hacia el dispositivo
E/S Programada (diagrama)
CPU

Hay Loop “busy wait”


Datos? no es una manera eficiente
de usar la CPU
no a menos que el dispositivo
Memoria Módulo E/S si sea muy rápido!
Leer
Datos
dispositivo

Almacenar
Datos
Fin? no
si
E/S por Interrupciones
 Resuelve las esperas de la CPU
 No se debe hacer polling del estado
 El módulo de E/S interrumpe cuando está pronto

 Como funciona? (Ej. lectura)


 La CPU emite un comando de lectura
 El módulo de E/S hace la transferencia desde el
dispositivo mientras la CPU hace otra cosa
 Una vez finalizada la transferencia, el módulo de E/S
interrumpe a la CPU
 La CPU requiere los datos
 El módulo de E/S transfiere datos
E/S por Interrupciones:
Que hace la CPU?
 Emite comando de E/S
 Hace otra tarea
 Chequea por interrupciones al fin de cada ciclo de
instrucción
 Recordar: el procesamiento de interrupciones es uno de los
desafíos complicados del control de la CPU
• Más difícil en Superescalares
 Si hay interrupciones pendientes
 Salvar contexto
 Procesa interrupción

 Problemas de diseño
 Como identificar el módulo que interrumpe?
 Como resolver múltiples interrupciones?
E/S por Interrupciones:
Identificación del módulo que interrumpe
 Líneas diferentas para cada módulo
 Número limitado de dispositivos
 Polling
 La CPU interroga cada dispositivo (por software)
 Lento…
 Daisy Chain o Polling de Hardware
 Línea de interrupción compartida
 La CPU envía “acknowledge” a una línea anidada que recorre todos
los dispositivos
 El módulo que interrumpió pone su código de identificación en el bus.
A este código se le denomina vector
 La CPU identifica el manejador mediante este código
 Arbitraje de bus
 Módulo debe conseguir el bus para poder interrumpir
 Cuando CPU reconoce la interrupción, el master pone su código de
identificación en el bus.
Interrupciones múltiples (1/2)
 Cada dispositivo tiene una prioridad determinada
 En una jerarquía de bus masters, solo el master actual puede
interrumpir
 Ejemplo - Bus del PC
 80x86 tiene una sola línea de interrupción
• Usan un controlador de interrupciones, el 8259A
• El 8259A tiene 8 líneas de interrupción
 Secuencia de eventos
 8259A acepta interrupciones
 8259A determina prioridad
 8259A interrumpe al 8086 (pone un “1” en la línea INTR)
 CPU reconoce la interrupción (pone un “1” en la línea INTA)
 8259A pone el identificador del dispositivo en el bus de datos
 CPU procesa la interrupción
Interrupciones
múltiples (2/2)
 Se pueden poner en
cascada como en la
figura
Preguntas?