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 (IR dirección ) - campo de dirección del IR MBR (memoria) IR dirección (MBR direcció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 (IR direcció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: MAR (IR dirección ) t2: MBR (memoria) t3: MBR (MBR) + 1 t4: 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: MAR (IR dirección ) MBR (PC) t2: PC (IR dirección ) memoria (MBR) t3: 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: Búsqueda 01: Indirecto 10: Ejecucíón 11: 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 2 n 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