
Capítulo 3 El procesador: la ruta de datos y el control (II Parte)
Mejoramiento del rendimiento • Tiempo de ciclo arreglado • Obviamente ineficiente • Tiempo de ciclo variable • Más rápido • Temporización compleja • Múltiples ciclos de reloj • Quiebre de instrucciones en pasos de un ciclo • Balance de la cantidad de trabajo por realizar • Restricciones en cada ciclo por usar una unidad funcional • Almacena valores al final de cada ciclo para ser utilizado en otros ciclos.
Implementación de múltiples ciclos de reloj • Registros se actualizan en cada ciclo • Datos • Salidas del archivo de registros • Salidas de la ALU • Instrucción se actualiza al final de la instrucción.
Ruta de datos • Utilice la ALU para • Incrementar el PC • Saltos • Direcciones de memoria • Operaciones aritméticas • Rutas de datos adicionales • Interpretación de IR depende del formato de las instrucciones
Ruta de datos con señales de control • Direcciones de memoria • R/W • Escritura en IR • Escritura en registro • Escritura en el registro destino • Escritura en el registro fuente de datos • Multiplexor de fuente de ALU • Control de ALU
Manejo del PC • La fuente del PC se selecciona por medio de un multiplexor • Salida de la ALU después de PC + 4 (instrucción normal) • Salida de la ALU después de calcular una dirección de salto condicional • Nueva dirección de una instrucción de salto • Escritura del PC • Incondicional después de una instrucción normal y salto. • Sobre escritura condicional si se realiza un salto • PCWriteCond permite cargas condicionales • El bit de Zero de ALU decide si el PC se cargará con la nueva dirección de salto.
Diseño de la multiciclo • Se pueden reutilizar las unidades funcionales • La ALU se puede reutilizar para el cálculo de direcciones y para incrementar el PC • La memoria se puede utilizar para almacenar instrucciones y datos • Las señales de control no son determinadas únicamente por la instrucción. • Se utiliza una máquina de estados finita (FSM) para implementar el control. • No solamente el uso de lógica combinacional en el diseño del sistema. • Ahora la unidad de control es secuencial por lo que se requiere de una FSM
MUX 0 1 2 3 R1id Registros R2id Memoria ALU IR M A R M D R O U t B A P C M U X M U X M U X M U X M U X 0 0 0 0 0 WRid M U X D 0 1 2 3 1 1 1 1 1 4 Shift Componentes básicos Multiplexores para enrutar Registros Extra Conductores Salida de registros Dirección de memoria Salida de memoria Palabra de instrucción Actualizar el PC Salida de ALU
MUX 1 0 1 2 3 cargue 0 0 M U X R1id Registros M U X 0 0 Memoria R2id A 1 1 O U t ALU M U X IR M A R M D R P C 0 WRid M U X 0 1 D M U X B 0 1 2 3 1 4 sume cargue Shift M U X 0 1 1 Operación de búsqueda Ruta del PC a Memoria & ALU Add 4 Load PC Load IR
Quiebra de instrucciones • Moverse de un ciclo a multiciclo • Identificar los pasos que tardan un ciclo • Misma distribución en el tiempo de ejecución • Por lo menos una operación para cada uno de los módulos • ALU • Archivo de Registros • Memoria • Nuevos registros si • La señal se genera en un ciclo y se utiliza en otro. • Las entradas del bloque que genera la señal puede cambiar en el segundo ciclo.
Los 5 pasos en la ejecución • Búsqueda de instrucción • Mover la instrucción de la memoria de instrucción al registro de instrucción IR • Decodificación de la instrucción y búsqueda de registro • Provee el contenido del registro a la ALU • Ejecución, cálculo de la dirección de memoria o salto • Acceso a memoria o finalización de instrucciones tipo R • Proceso de escritura.
Paso 1: Búsqueda de una instrucción • Utilice el PC para obtener la instrucción y colocarla en el registro de instrucción. • IR <=MEMORIA(PC) • SET Read Address Mux (IorD) • = 0 selecciona la instrucción • SET MemRead = 1 • Incremente el PC en cuatro 4 y coloque el resultado en el PC nuevamente. • PC <= PC+4 • ALUSrcA = 0 obtenga el operando de IR • ALUSrcB = 01 obtenga el operando 4 • ALUOp = 00 add • Almacene el nuevo valor del PC en PC • Incrementar el PC y el acceso a la memoria de instrucción pueden realizarse en paralelo.
Ruta de datos: IR = Memory[PC], PC = PC + 4 Control: IorD=0, MemRead=1, MemWr=0, IRwrite=1, ALUsrcA=0, etc
Paso 2: Decodificación de instrucción y búsqueda de registro • Lee los registros rs y rt en caso de que se necesiten A <= Reg[IR[25-21]] rs B <= Reg[IR[20-16]] rt • Se calculan las direcciones de salto en caso de que se ejecute el salto. ALUOut <= PC + (sign-extend(IR[15-0]) << 2); Almacénelo en el registro ALUOut ALUSrcb = 11 ALUOp = 00 add
A = Register[IR[25-21]] B = Register[IR[20-16]] ALUout = PC + (sign-extend (IR[15-0]) << 2)
Paso 3: Ejecución, cálculo de dirección de memoria o de salto • La cantidad de pasos dependen de la instrucción • Selección realizada por interpretación de op + campo de la función en la instrucción • La ALU realiza una de las tres funciones, basándose en el tipo de instrucciones. • Calcula la dirección de memoria ALUOut <= A + sign-extend(IR[15-0]) ALUSrcA = 1 obtiene el operando de A ALUSrcB = 10 obtiene el operando de la unidad de signo externo ALUOp = 00 add
Paso 3: Ejecución, cálculo de dirección de memoria o de salto (continuación) • Instrucciones tipo R: ALUOut <= A op B • ALUSrcA = 1 obtiene operando de A • ALUSrcb = 00 obtiene operando de B • ALUOp = 10 código de IR • Instrucciones con salto: if (A==B) PC <= ALUOut; • ALUSrcA = 1 obtiene operando de A • ALUSrcB = 00 obtiene operando de B • ALUOp = 01 sustracción • Escriba ALUOut en el registro PC • Salto JUMP • PC<= {PC[31-28], (IR[25-0],2’b00)}
A ALU out B • En el ciclo 1, PC se incrementa en 4 • En el ciclo 2, ALUout se pone para el salto condicional • En este ciclo, condicionalmente se pone el PC: if (A==B) PC=ALUout
Paso 4: Acceso a memoria o ejecución de instrucción tipo R • Acceso a memoria • El control de la ALU debe mantenerse estable • Ponga I o D = 1 direcciones de la ALU • MDR <= Memoria [ALUOut] • Carga con memoria • Ponga MemRead = 1 • B => Memoria [ALUOut] • Almacena en memoria • Ponga MemWrite = 1
Paso 4: Acceso a memoria o ejecución de instrucción tipo R • Finalización de instrucciones aritméticas o lógicas • Registro [IR[15-11]]<=ALUOut • Pone RegDst = 1 seleccionar el registro de escritura • Pone RegWrite = 1 permite operaciones de escritura • Pone MemToReg = 0 selecciona datos en ALU • ALUOp, ALUSrcA, ALUSrcB = CONTANTE
A B Ciclo 3: ALUout = A op B Ciclo 4:Reg[IR[15-11]] = ALUout
A ALU out B Ciclo 3: ALUout = A op B Ciclo 4: Reg[IR[15-11]] = ALUout
Paso 5: Proceso de escritura • Escribe datos de la memoria al registro • Reg[IR[20-16]]= MDR • Pone RegDst = 0 selecciona escritura en RT como registro de dirección • Pone RegWrite = 1 permite operaciones de escritura • Pone MenToReg = 1 selecciona la memoria de datos • ALUOp, ALUSrcA, ALUSrcB = CONTANTE
CONTROLANDO EL PROCESADOR • Secuencia de pasos es dependiente del tiempo (máquina de estados) • Descripción de los métodos • Diagrama de estados • Microprogramación • VHDL • Programa • ....... • En este ejemplo utilizaremos diagramas de estado y microprogramación
Descomposición general • Parte común • Búsqueda de instrucciones • Decodificación de las instrucciones/búsqueda de registro • Parte específica de la instrucción
Parte común • Búsqueda de instrucción • Descodificación de la instrucción/búsqueda de registro
Acceso a Memoria • Cálculo de dirección • Secuencia de carga • Lectura de memoria • Almacenamiento en registro • Acceso a memoria • Escritura de secuencia de almacenamiento
Instrucción tipo R • Ejecución de la instrucción • Escribir el resultado final en el registro
Instrucción de salto • Un solo estado • El PC se debe cargar con la dirección de salto • Obtener la próxima instrucción
Instrucción de salto (JUMP) • Carga el PC con el nuevo valor • Obtiene la próxima instrucción
Maquina de estados completa • Parte común • Parte específica de la instrucción
Resumen de las señales de control • Los datos en negro indican señales activas • Los datos en gris indican señales inactivas que deben establecerse • Líneas indican condiciones no importa
Rendimiento • Mezcla de instrucciones y estados • CPI
Posibilidades de implementación • Máquina de Moore: las salidas dependen de la entradas y del estado
Opciones para implementación • ROM • Bits para direcciones: 10 • Registros de estado: 4 bits • Campo para código de operación: 6 bits • Bits de salida: 17 • PLA • Calculo de las funciones de salida • Optimización • Mapear a la arquitectura PLA • Menos área • Rápida construcción
ROM vs PLA • Rompe la tabla en dos partes • 4 bits de estado para generar 16 salidas, 24X16 bits de ROM • 10 bits para definir los próximos 4 estados, 210X4 bits de ROM • Total: 4.3K bits de ROM • PLA es más pequeño • Se pueden compartir términos • Solo se necesita de entradas que producen una salida • Se puede contar con condiciones no importa • El tamaño es • (#entradas´ #producto-términos) + (#salidas ´ #producto-términos) para este ejemplo = (10x17)+(20x17) = 460 PLA celdas • Las celdas del PLA generalmente tienen el tamaño de una celda de ROM
MICROPROGRAMACION • Limitaciones en FSM basadas en los diagramas de estado y su complejidad • MIPS: más de 100 instrucciones • Largo de las instrucciones: 1 – 20 ciclos • Numero de estados: gigantesco y creciente • Otra alternativa: microprogramación • Implementación de instrucciones tipo MIPs se puede realizar como una secuencia de simples instrucciones • Diseñar un formato para las micro instrucciones • Escribir el programa
Micro instrucciones • ¿Qué es lo que necesitamos? • Señales de control para la ALU • Señales de control para el contador de programa PC • Ruta de datos completa • ¿Qué vamos a hacer? • Analizar que sucede en cada estado • Escribirlo en una tabla • Traducirlo a binario • Almacenarlo en una forma apropiada
Elementos • Almacenamiento del micro código (ROM o PLA) • Salidas para el control de la ruta de datos • Secuencia para el control de salida • Decodificador de salida (opcional) • Contador de microprograma/mux • Reset • Incrementador • Nueva dirección • Control de secuencia • Mux de control • Calculo de la próxima dirección
RUTA DE DATOS • Ruta de datos y control
Formato de las micro instrucciones • Mezcle las señales de acuerdo a la función • Las señales que nunca se utilizarán se pueden compartir al mismo tiempo • Las señales deben ponerse
Microprograma • Implementación física: ROM o PLA • Cada microinstrucción tiene una dirección • Secuencialmente ordenado • Cada paso de la secuencia es de un ciclo • Selección de la próxima instrucción • Se incrementa la dirección (campo de secuencia = seq) • Búsqueda: inicia la búsqueda de la próxima microinstrucción (campo de secuencia = fetch) • Dispatch: salta a la próxima microinstrucción el número i indica la dirección en la tabla de dispatch.