690 likes | 892 Views
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
E N D
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.