Micro-Operaciones En la ejecución de un programa en una computadora, se ejecutan instrucciones, que pueden subdividirse en ciclos: • Búsqueda/Ejecución • Cada ciclo se compone a su vez de una serie de operaciones más sencillas, llamadas microoperaciones • Implican movimientos de información a nivel de registros, y son las operaciones más elementales e indivisibles del computador. Elementos constituyentes de la ejecución de un programa 4 Registros básicos: • Registro de Direcciones de Memoria (memoria Address registro, MAR) — Conectado al bus de direcciones — Especifica la dirección en la que se lee o escribe un operando • Registro Separador de Memoria (Memory Buffer registro, MBR) — Conectado al bus de datos — Almacena el dato a escribir o el último dato leído • Contador de Programa (Program Counter, PC) — Almacena la dirección de la próxima dirección a ser ejecutada • Registro de Instrucción (instrucción registro,IR) — Almacena la última instrucción captada Secuencia de Búsqueda (Captación) • La dirección de la instrucción está en el PC. • El valor de la dirección (MAR) se coloca en el bus de direcciones. • La Unidad de Control genera un comando READ • El resultado (un dato desde la memoria) aparece en el bus de datos • El dato se copia al MBR desde el bus de datos. • El PC se incrementa en 1 (en paralelo con la búsqueda del dato desde la memoria) • El dato (instrución) se mueve del MBR al IR • El MBR queda libre para nuevas búsquedas de datos Secuencia de Búsqueda (simbólica) • t1: MAR (PC) (tx = ciclo de reloj) • t2: MBR (memoria) • PC (PC) +1 • t3: IR (MBR) • ó: • t1: MAR (PC) • t2: MBR (memoria) • t3: PC (PC) +1 • IR (MBR) Reglas para agrupamiento de µ-ops en un mismo ciclo de reloj • Debe seguirse la secuencia apropiada —MAR (PC) debe preceder a MBR(memoria) • Deben evitarse conflictos: —No se debe leer ni escribir el mismo registro al mismo tiempo. —MBR (memoria) & IR (MBR) no deben hacerse en el mismo ciclo • También: PC (PC)+1 involucra una suma —Se puede usar la ALU para disminuir la circuitería —Pero pueden ser necesarias más microoperaciones Ciclo indirecto • MAR (IRdirección) - campo de dirección del IR • MBR (memoria) • IRdirección (MBRdirección) • El MBR contiene una dirección • El IR está ahora en el mismo estado en que estaría si se hubiera usado un direccionamiento directo Ciclo de interrupción • • • • • t1: MBR (PC) t2: MAR dirección de salvaguarda PC dirección de la rutina t3: memoria (MBR) Esto es un ciclo mínimo, ya que si el procesador tiene más de un nivel o tipo de interrupciones, pueden ser necesarias más microoperaciones para obtener la dirección de salvaguarda Ciclo de Ejecución (ADD) • Es diferente para cada instrucción • P.ej.: ADD R1,X – suma el contenido de la posición X al registro R1, dejando el resultado en R1 • • • • t1: MAR (IRdirección) t2: MBR (memoria) t3: R1 R1 + (MBR) No hay superposición de micro-operaciones Ciclo de Ejecución (ISZ) • ISZ X - incrementar y saltar si cero —t1: —t2: —t3: —t4: — MAR (IRdirección) MBR (memoria) MBR (MBR) + 1 memoria (MBR) si (MBR) = 0 entonces PC (PC) + 1 • Notas: —if es una micro-operación simple —Se puede ejecutar al mismo tiempo que el valor actualizador de MBR se coloca en la memoria (t4). Ciclo de Ejecución (BSA) • BSA X – Saltar y guardar la dirección —La dirección de la instrucción siguiente a BSA se guarda en la posición X —La ejecución continúa desde X+1 —t1: — —t2: — —t3: MAR (IRdirección) MBR (PC) PC (IRdirección) memoria (MBR) PC (PC) + 1 Resúmen de un Ciclo de Instrucción • Cada fase puede descomponerse en una serie de micro-operaciones elementales • P.ej., para los ciclos de búsqueda, indirecto, y de interrupción • Para el ciclo de ejecución —Hay una secuencia de micro-operaciones para cada código de operación • Necesitamos unir las secuencias de microoperaciones • Suponemos un nuevo registro de 2 bits: —Código de Ciclo de Instrucción (instrucción cycle code, ICC), que determina el estado del procesador en términos de que parte del ciclo se encuentra: – – – – 00: 01: 10: 11: Búsqueda Indirecto Ejecucíón Interrupción Diagrama de flujo del Ciclo de Instrucción Requerimientos funcionales de la Unidad de Control 1) Definir los elementos básicos del procesador 2) Describir las microoperaciones que ejecuta el procesador 3) Determinar las funciones que debe realizar las unidad de control para que se ejecuten las operaciones. 1) Elementos básicos del Procesador • • • • • ALU Registros Caminos de datos internos Caminos de datos externos Unidad de Control 2) Tipos de Micro-operaciones • Transferencia de datos entre registros • Transferencia de datos desde un registro a una interfaz externa (p.ej., el bus del sistema) • Transferencia de datos desde una interfaz externa a un registro • Realizar una operación aritmética o lógica entre registros. 3) Funciones de la Unidad de Control • Secuenciamiento —Hacer que la CPU realice una serie de microoperaciones en la secuencia correcta, de acuerdo al programa que se esta ejecutando. • Ejecución —Hacer que se ejecute cada micro-operación • Esto se logra mediante la utilización de señales de control. Señales de Control - Entradas • Reloj —La señal que hace que se ejecute una microoperación (o un conjunto de microoperaciones simultáneas) por ciclo de reloj • Registro de Instrucción —Código de operación de la instrucción en curso —Determina cuales micro-instrucciones se realizan en el ciclo de ejecución • Indicadores (Flags) —Estado de la CPU —Resultado de operaciones previas • Señales de control de bus del sistema —Interrupciones —Reconocimientos Modelo de una Unidad de Control Señales de Control - Salidas • Internas de la CPU —Las que provocan movimientos de datos entre registros —Las que activan funciones específicas de la ALU • Hacia el bus de control —Para la memoria —Para los módulos de I/O Ejemplo de Secuencia de Señales de Control - Búsqueda • MAR (PC) — La Unidad de Control activa la señal para las compuertas entre el PC y el MAR • MBR (memoria) —Activa las compuertas entre MAR y el bus de direcciones —Activa la señal de control de lectura de la memoria —Activa las compuertas entre el bus de datos y el MBR Caminos de datos y Señales de Control Organización Interna • Dada la complejidad de las conexiones, lo usual es utilizar un bus interno • Las compuertas controlan el movimiento de datos desde y hacia el bus interno • Las señales de control manejan la transferencia de datos desde y hacia el bus externo. • Es necesario agregar registros temporales (de entrada y de salida) para asegurar una operación apropiada de la ALU CPU con Bus Interno Implementación Cableada (1) • La Unidad de Control es un circuito secuencial, cuyas entradas son: • Indicadores (Flags) y líneas del bus de control —Cada bit tiene un significado determinado • Registro de Instrucción —Cada código de operación genera diferentes señales de control para cada instrucción —Entoces, debe haber una entrada lógica única para cada código de operación —Esta función la realiza un decodificador —n entradas binarias y 2n salidas Implementación Cableada (2) • Reloj —Provee una secuencia repetitiva de pulsos —Permite calcular la duración de cada microoperación —Debe ser de una duración suficiente para segurar la propagación de las señal a través de las compuertas u buses —Hay señales de control diferentes en unidades de tiempo diferentes dentro de un único ciclo de instrucción. —Por lo tanto, se necesita un contador que genere una señal de control diferente para t1, t2, etc. Unidad de Control con Entradas Decodificadas Problemas del diseño de Lógica Cableada • La lógica del secuenciamiento y las microoperaciones resulta muy compleja - Esto dificulta el diseño y el testeo • El diseño resulta inflexible. - Esto impide agregar nuevas instrucciones. Control Micro-programado • Usa una secuencia de intrucciones para controlar operaciones complejas • Esta secuencia se denomina microprogramación o firmware Implementación • Todo lo que una Unidad de Control hace es generar un conjunto de señales de control para cada micro-operación • Cada señal de control está activa o inactiva • Por lo tanto, se puede representar cada señal de control con un bit • El conjunto de bits de todas las señales de control conformará una palabra de control • Cada instrucción (código de máquina) tiene una secuencia de palabras de control • Se puede adicionar una dirección que especifique la siguiente instrucción (condicionales) Tipos de Micro-instrucciones • Cada micro-instrucción especifica una(o pocas) micro-operaciones a ser realizadas — (micro-programación vertical) • Cada micro-instrucción especifica varias diferentes micro-operaciones a ser realizadas en paralelo —(micro-programación horizontal) Formatos de Microinstrucción típicos Organización de una Memoria de Control Unidad de Control Funcionamiento de una Unidad de Control microprogramada Funcionamiento de la Unidad de Control • La lógica de secunciamiento envía un comando de lectura a la memoria de control • La palabra especificada por el registro de dirección de control es leída en el registro intermedio de control. • El registro intermedio de control genera las señales de control y contiene la información de la siguiente dirección • La lógica de secuenciamiento carga la nueva dirección en el registro de dirección de control, basada en la información proporcionada por el registro intermedio de control y por los indicadores de la ALU • Todo esto sucede en un ciclo de reloj. Decisión de la Siguiente Dirección • Dependiendo de los indicadores (flags) de la ALU y del registro intermedio de control, se decide una de las siguientes tres decisiones: —Buscar la siguiente instrucción – Se suma 1 al registro de dirección de control —Saltar a una nueva rutina según indica una microinstrucción de salto – El campo de dirección del registro intermedio de control se carga en el registro de dirección de control —Saltar a la rutina de una instrucción de máquina – Se carga el registro de dirección de control en función del código de operación almacenado en IR Lectura Requerida • Stallings capítulos 14-15