para la arquitectura MIPS Diseo del control monociclo 2 Resumen de la Ruta de Datos Camino de datos con todos los multiplexores y lneas de control necesarias (segn figura del libro de texto). MemtoReg MemRead MemWrite ALUOp ALUSrc RegDst PC Instruction memory Read address Instruction [310] Instruction [20 16] Instruction [25 21] Add Instruction [50] RegWrite 4 16 32 Instruction [15 0] 0 Registers Write register Write data Write data Read data 1 Read data 2 Read register 1 Read register 2 Sign extend ALU result Zero Data memory Address Read data M u x 1 1 M u x 0 1 M u x 0 1 M u x 0 Instruction [15 11] ALU control Shift left 2 PCSrc ALU Add ALU result Diseo del control monociclo 3 Recordatorio (I) La organizacin del procesador condiciona el Tcpu 5 pasos en el diseo del procesador 1. Analizar repertorio de instrucciones Funcionalidad del camino de datos 2. Seleccionar componentes del camino de datos 3. Ensamblar camino de datos para proporcionar la funcionalidad requerida. 4. Analizar la implementacin de cada instruccin para determinar la ubicacin de los puntos de control que permitan ejecutar las transferencias entre registros. 5. Diseo de la unidad de control (a continuacin ...) Diseo del control monociclo 4 Recordatorio (II) MIPS hace fcil la implementacin de estos pasos Instrucciones del mismo tamao Registro fuente (rs) siempre en la misma posicin del formato de instruccin Valores inmediatos siempre del mismo tamao (16 bits) y en la misma posicin (bits 0-15) Operaciones siempre sobre registros/inmediatos Camino de datos monociclo CPI=1 T CLK grande A continuacin: Paso 5 (diseo de la unidad de control) Diseo del control monociclo 5 Diseo de la unidad de control: visin completa de la implementacin Camino de datos con la unidad principal de control y la unidad local de control de la ALU PC Instruction memory Read address Instruction [310] Instruction[20 16] Instruction[25 21] Add Instruction[5 0] MemtoReg ALUOp MemWrite RegWrite MemRead Branch RegDst ALUSrc Instruction[31 26] 4 16 32 Instruction[15 0] 0 0 M u x 0 1 Control Add ALU result M u x 0 1 Registers Write register Write data Read data1 Read data2 Read register 1 Read register 2 Sign extend M u x 1 ALU result Zero PCSrc Data memory Write data Read data M u x 1 Instruction[15 11] ALU control Shift left 2 ALU Address Diseo del control monociclo 6 0 3 Result Operation a 1 CarryIn CarryOut 0 1 Binvert b 2 Less a. A L U R e s u lt Z er o O v e r f lo w a b A L U o p e r a t i o n C a r r y O u t Entradas de control (ALUctr) FUNCIN 000 AND 001 OR 010 ADD 110 SUB 111 SLT La Unidad Aritmtica y Lgica (ALU) Operaciones bsicas (solo usaremos 5 de las 8 posibles) Diseo del control monociclo 7 Control de la ALU Operaciones a realizar segn la instruccin: Load (lw) y store (sw): Suma Salto (beq): Resta Aritmticas (tipo R: add,sub, or,and y slt): Definida por el campo Funct Dependencias de las seales de control Cod. Op. ALUop Instruccin FUNCT Op. deseada Entradas de control de la ALU (ALUctr) LW 00 Carga XXXXXX suma 010 SW 00 Almacena XXXXXX suma 010 Branch Equal 01 salto XXXXXX resta 110 R-Type 10 suma 100000 suma 010 R-Type 10 resta 100010 resta 110 R-Type 10 AND 100100 and 000 R-Type 10 OR 100101 or 001 R-Type 10 set on less than 101010 set on less than 111 Diseo del control monociclo 8 Control local de la ALU: Tabla de verdad ALUop funct ALUctr ALUop1 ALUop0 F5 F4 F3 F2 F1 F0 bit2 bit1 bit0 0 0 x x x x x x 0 1 0 x 1 x x x x x x 1 1 0 1 x x x 0 0 0 0 0 1 0 1 x x x 0 0 1 0 1 1 0 1 x x x 0 1 0 0 0 0 0 1 x x x 0 1 0 1 0 0 1 1 x x x 1 0 1 0 1 1 1 Main Control op 6 ALU Control (Local) func N 6 ALUop ALUctr 3 A L U op rs rt rd shamt funct 0 6 11 16 21 26 31 6 bits 6 bits 5 bits 5 bits 5 bits 5 bits Instruccin Tipo R: funct<3:0> Instruction Op. 0000 0010 0100 0101 1010 add subtract and or set-on-less-than Diseo del control monociclo 9 Implementacin del control local de la ALU ALUop funct Operacin (ALUctr) ALUop1 ALUop0 F5 F4 F3 F2 F1 F0 bit2 bit1 bit0 0 0 x x x x x x 0 1 0 x 1 x x x x x x 1 1 0 1 x x x 0 0 0 0 0 1 0 1 x x x 0 0 1 0 1 1 0 1 x x x 0 1 0 0 0 0 0 1 x x x 0 1 0 1 0 0 1 1 x x x 1 0 1 0 1 1 1 Operation2 Operation1 Operation0 Operation ALUOp1 F3 F2 F1 F0 F (50) ALUOp0 ALUOp ALU control block Diseo del control monociclo 10 MemtoReg MemRead MemWrite ALUOp ALUSrc RegDst PC Instruction memory Read address Instruction [310] Instruction[2016] Instruction[2521] Add Instruction[50] RegWrite 4 16 32 Instruction [150] 0 Registers Write register Write data Write data Read data1 Read data2 Read register 1 Read register 2 Sign extend ALU result Zero Data memory Address Read data M u x 1 1 M u x 0 1 M u x 0 1 M u x 0 Instruction[1511] ALU control Shift left 2 PCSrc ALU Add ALU result Diseo de la unidad principal de control Tipo R: op rs rt rd shamt funct Bits: 31-26 25-21 20-16 15-11 10-6 5-0
Tipo I: op rs rt Inmediato16 Bits: 31-26 25-21 20-16 15-0
Tipo J: op Direccin Bits: 31-26 26-0 Diseo del control monociclo 1 Significado de las seales de control MemtoReg MemRead MemWrite ALUOp ALUSrc RegDst PC Instruction memory Read address Instruction [310] Instruction[2016] Instruction[2521] Add Instruction[50] RegWrite 4 16 32 Instruction[150] 0 Registers Write register Write data Write data Read data1 Read data2 Read register1 Read register2 Sign extend ALU result Zero Data memory Address Read data M u x 1 1 M u x 0 1 M u x 0 1 M u x 0 Instruction[1511] ALU control Shift left 2 PCSrc ALU Add ALU result Seal Accin cuando es desactivada (0) Accin cuando se activa (1) RegDst El registro destino para las escrituras viene del campo rt (bits 20-16) El registro destino para las escrituras viene del campo rd (bits 15-11) RegWrite Ninguno Escribe el dato en "WriteData" en el registro dado por "WriteRegister". AluSrc El segundo operando de la ALU viene del banco de registro (salida 2) El segundo operando de la ALU son los 16 bits menos significativos de la instruccin extendidos en signo PCSrc Selecciona PC+4 como nuevo valor del PC Selecciona la direccin de salto computada como nuevo valor del PC MemWrite Ninguna Escribe en la direccin de memoria "Address" el dato "WriteData" MemRead Ninguna Lee un dato de la direccin de memoria "Address" y lo deja en la salida "ReadData" MemToReg El valor a realimentar al campo "WriteData" viene de la salida de la ALU El valor a realimentar al campo "WriteData" viene de la memoria Diseo del control monociclo 12 Funcionamiento del camino de datos Instruccin: Tipo R (add, sub, and, or, slt) add $t1,$t2,$t3 PC Instruction memory Read address Instruction [310] Instruction [2016] Instruction [2521] Add Instruction [50] MemtoReg ALUOp MemWrite RegWrite MemRead Branch RegDst ALUSrc Instruction [3126] 4 16 32 Instruction [150] 0 0 M u x 0 1 Control Add ALU result M u x 0 1 Registers Write register Write data Read data1 Read data2 Read register 1 Read register 2 Sign extend Shift left 2 M u x 1 ALU result Zero Data memory Write data Read data M u x 1 Instruction [1511] ALU control ALU Address Diseo del control monociclo 13 Funcionamiento del camino de datos Instruccin: lw lw $t1, desplazamiento ($t2) PC Instruction memory Read address Instruction [310] Instruction[1511] Instruction[2016] Instruction[2521] Add Instruction [50] MemtoReg ALUOp MemWrite RegWrite MemRead Branch RegDst ALUSrc Instruction[3126] 4 16 32 Instruction[150] 0 0 M u x 0 1 ALU control Control Shift left 2 Add ALU result M u x 0 1 Registers Write register Write data Read data1 Read data2 Read register 1 Read register 2 Sign extend M u x 1 ALU result Zero Data memory Write data Read data M u x 1 ALU Address Diseo del control monociclo 14 Funcionamiento del camino de datos Instruccin: sw sw $t1, desplazamiento($t2) PC Instruction memory Read address Instruction [310] Instruction[1511] Instruction[2016] Instruction[2521] Add Instruction [50] MemtoReg ALUOp MemWrite RegWrite MemRead Branch RegDst ALUSrc Instruction[3126] 4 16 32 Instruction[150] 0 0 M u x 0 1 ALU control Control Shift left 2 Add ALU result M u x 0 1 Registers Write register Write data Read data1 Read data2 Read register 1 Read register 2 Sign extend M u x 1 ALU result Zero Data memory Write data Read data M u x 1 ALU Address Diseo del control monociclo 15 Funcionamiento del camino de datos Instruccin: branch beq $t1, $t2, desplazamiento PC Instruction memory Read address Instruction [310] Instruction[1511] Instruction[2016] Instruction[2521] Add Instruction [50] MemtoReg ALUOp MemWrite RegWrite MemRead Branch RegDst ALUSrc Instruction[3126] 4 16 32 Instruction[150] Shift left 2 0 M u x 0 1 ALU control Control Registers Write register Write data Read data 1 Read register 1 Read register 2 Sign extend 1 ALU result Zero Data memory Write data Read data M u x Read data 2 Add ALU result M u x 0 1 M u x 1 0 ALU Address Diseo del control monociclo 16 Implementacin de la unidad de control principal Tabla de verdad e implementacin de las seales de control de la unidad control principal Op5-0 -> (bits 31-26) 00 0000 0D 10 0011 35D 10 1011 43D 00 0100 4D R-Format lw sw beq RegDst 1 0 x x ALUSrc 0 1 1 0 MemToReg 0 1 x x RegWrite 1 1 0 0 MemRead 0 1 0 0 MemWrite 0 0 1 0 Branch 0 0 0 1 ALUOp1 1 0 0 0 ALUOp0 0 0 0 1 R-format Iw sw beq Op0 Op1 Op2 Op3 Op4 Op5 Inputs Outputs RegDst ALUSrc MemtoReg RegWrite MemRead MemWrite Branch ALUOp1 ALUOpO Implementacin con PLA Diseo del control monociclo 17 Rendimiento de la implementacin monociclo - Ejemplo Suponiendo que los tiempos de operacin (latencia) de las unidades funcionales son: Unidad de memoria: 2 ns ALU y sumadores: 2 ns Registros (lectura o escritura): 1 ns Resto de los componentes (multiplexores, acceso al PC, etc. ): 0 ns Cul de las siguientes implementaciones ser ms rpida? 1.- Una implementacin en la que cada instruccin se ejecuta en un ciclo de reloj de duracin fija. 2.- Una implementacin donde cada instruccin se ejecuta en un ciclo de reloj pero de duracin variable (solucin no prctica, pero ilustrativa). Suponer un programa compuesto por: 24% carga (lw), 12% almacenamiento (sw), 44% R-format, 18% saltos (beq/bne) y 2% bifurcacines (j). Diseo del control monociclo 18 Solucin Instruccin Unidades funcionales utilizadas R-format bsqueda acceso a registro ALU acceso a registro Load bsqueda acceso a registro ALU acceso a memoria Acceso a registro Store bsqueda acceso a registro ALU acceso a memoria Branch bsqueda acceso a registro ALU jump bsqueda Tiempo de ciclo necesario para cada instruccin Instruccin Memoria Registro ALU Memoria Registro Total por instr. (ns) Porcentaje de uso R-format 2 1 2 0 1 6 44% Load 2 1 2 2 1 8 24% Store 2 1 2 2 7 12% Branch 2 1 2 5 18% jump 2 2 2% Tiempo de ciclo medio (44%x6 + 24%x8 + 12% x7 + 18%x5 + 2%x2 ) = 6.3 ns compleja ms n instrucci la ejecutar para necesario tiempo ns, 8 de ser fijo reloj de ciclo de tiempo El (*) T CPI N T CPI N T T iento n iento n ble CicloVaria CicloFijo ble CicloVaria CicloFijo lojFijo e lojVariabl 27 . 1 3 . 6 8 * * * * dim Re dim Re Re Re
Diseo del control monociclo 19 Inconvenientes de la implementacin monociclo Aunque funciona, la implementacin monociclo es ineficiente tanto en rendimiento como en hardware Todas las instrucciones tardan un ciclo de reloj (CPI=1) independientemente de su complejidad (ejemplo: and vs lw). El ciclo de reloj viene determinado por la instruccin ms compleja (lw). Cada unidad funcional slo puede ser utilizada una vez por ciclo. Necesidad de duplicar recursos (memoria, ALU, ..) Aumenta el costo del hardware Cmo mejorar el diseo? Implementacin multiciclo Nmero de ciclos por instruccin (CPI) variable. Las instrucciones sencillas se ejecutan en menos ciclos de reloj. Implementacin segmentada Solape de la ejecucin de varias instrucciones. Existen varias instrucciones ejecutndose simultneamente pero en distintas fases de ejecucin.