Arquitectura de Computadores Tema 8 Diseño de un CPU de multiciclo Eduardo Daniel Cohen dcohen@arnet.com.ar http://www.herrera.unt.edu.ar/arqcom Diseño RISC D. Cohen UNT Arq. de Computadoras - 24
op 6 Instr<3:26> RegDst Recapitulando: procesador de ciclo único. busw Clk Main Control RegWr Rd imm6 Instr<:> Rs Rw Ra Rb -bit Registers 6 op RegDst Src : busb Extender Branch busa ExtOp Jump Clk 3 Src Instruction Fetch Unit ctr Data In Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 2 func Instr<:> 6 Clk Instruction<3:> Control <2:2> WrEn Rs <6:2> MemWr Adr Data ctr Rd <:> 3 <:> Imm6 MemtoReg
Recapitulando ejemplo simplificado 4 Add Instruction [3 26] Control RegDst Branch MemRead MemtoReg Op MemWrite Src RegWrite Shift left 2 Add result M u x PC Read address Instruction memory Instruction [3 ] Instruction [2 2] Instruction [2 6] Instruction [ ] M u x Read register Read Read data register 2 Registers Read Write data 2 register Write data M u x result Address Write data Data memory Read data M u x Instruction [ ] 6 Sign extend control Instruction [ ] Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 3
Recap: Implementación con PLA del Control Central op<>. op<> op<>.. op<>.. op<>.. op<>..... <> <> <> <> <> op<> R-type ori lw sw beq jump RegWrite Src RegDst MemtoReg MemWrite Branch Jump ExtOp op<2> op<> op<> Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 4
Recap: Panorama General del Control Simplificado Más simple que en nuestro ejemplo: sólo 4 instrucciones y 2 bits para AluOp Lógica combinacional simple (tablas de verdad) y realización con PLA Control local simplifica control central. 2 Bits centrales para distinguir los tipos de Inst. Inputs Op Op4 Op3 Op2 Op Op Op Op Op control block R-format Iw sw beq Outputs RegDst Src MemtoReg RegWrite MemRead MemWrite Branch Op F ( ) F3 F2 F F Operation2 Operation Operation O OpO Inst R define campo funct de I. Diseño RISC D. Cohen UNT Arq. de Computadoras - 24
Recap: Tiempos para el Peor Caso (LOAD por qué?) Clk PC Rs,, Rd, Op, Func ctr Old Value Clk-to-Q New Value Old Value Old Value Instruction Memoey Access Time New Value Delay through Control Logic New Value ExtOp Old Value New Value Src Old Value New Value MemtoReg Old Value New Value RegWr Old Value New Value busa busb Old Value Delay through Extender & Old Value Register Write Occurs Register File Access Time New Value New Value Delay Address Old Value New Value Data Access Time busw Old Value New Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 6
Recap: Implementación de Ciclo Unico Ej: Calcular duración ciclo despreciando todos los retardos excepto: memoria (2 ps), y sumadores ( ps), banco de reg. y Clk-to-Q ( ps) PCSrc 4 Add RegWrite Shift left 2 Add result M u x PC Read address Instruction [3 ] Instruction memory Instruction [2 2] Instruction [2 6] M u Instruction [ ] x RegDst Instruction [ ] Read register Read register 2 Write register Write data Read data Read data 2 Registers 6 Sign extend Src M u x control result MemWrite Address Write data Data memory MemRead Read data MemtoReg M u x Instruction [ ] Op Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 7
Recap: Analicemos como estamos Problemas del Ciclo Unico: No estamos compartiendo recursos (, sumadores). Derrochamos area de CPU. La duración del ciclo se realiza en función de la instrucción más lenta (Ld). Pero todas las otras instrucciones no necesitan tanto tiempo. Castigamos a todas por el problema de una. Y si tenemos una instrucción más compleja, pto flotante? PROBLEMAS DE PERFORMANCE!! Ventajas del Ciclo Unico: Apto para un desarrollo en Pipelining. Pero.. todo a su tiempo! Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 8
Propuesta de Solución: Camino de Datos Multiciclo Dividir las instrucciones en varios pasos modulares. Cualquier instrucción se forma combinando estos pasos. Cada paso se ejecuta en un ciclo T menor. permitir que las instrucciones empleen distinto número de ciclos T Cómo determino los módulos? Alternativa I que tengan similar duración. Alternativa II mediante una división funcional. Con qué alternativa me quedo? Alternativa I Tentación: una única etapa entre y Banco de Registros. Pero si tenemos que implementar una instrucción de punto flotante! Alternativa II menos eficiente (no todas las etapas iguales) pero el diseño funcional es lo que cuenta. Cuando se siguen los buenos principios de diseño siempre se gana. Uniciclo: tiene un mal principio: castiga a las buenas por las malas. Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 9
Solucion Multiciclo Reutilizaremos unidades funcionales se usará para calcular direcciones y actualizar PC Permite una única unidad de memoria para Datos e Inst. Las señales de control no dependen solo de la Instrucción. ej., qué debe hacer la para una instrucción Substract? - La respuesta sería con otra pregunta: en qué ciclo T? Emplearemos una máquina de estado finito (MEF) para el control. Separemos las instrucciones en pasos, cada paso tomaría un T hay que balancear la cantidad de trabajo en cada paso que cada paso use solo una unidad funcional importante Diseño RISC D. Cohen UNT Arq. de Computadoras - 24
Solución Multiciclo Al final de cada ciclo guardar valores para usarse en el ciclo siguiente introducir registros internos adicionales PC M u x Address Write data MemData Instruction [2 2] Instruction [2 6] Instruction [ ] Instruction register Instruction [ ] data register Instruction [ ] M u x M u x 6 Read register Read register 2 Registers Write register Write data Sign extend Read data Read data 2 Shift left 2 A B 4 M u x M u 2 x 3 result Out Diseño RISC D. Cohen UNT Arq. de Computadoras - 24
Cinco Pasos de Ejecución Instruction Fetch Instruction Decode and Register Fetch (y dirección branch) Execution, Address Computation, or Branch Completion Access or R-type instruction completion Write-back step Las Instrucciones toman entre 3 a ciclos! Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 2
Paso : Instruction Fetch Usar PC para obtener instrucción y llevarla al IR. Incrementar PC en 4 y guardar el resultado de nuevo en PC. Se puede describir suscintamente con RTL "Register-Transfer Language" IR = [PC]; PC = PC + 4; Cuáles serían las señales de control? Cuál es la ventaja de incrementar el PC ahora? Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 3
Paso 2: Instruction Decode and Register Fetch Leer los registros rs y rt en caso de que los necesitemos luego. Calcular dirección de salto por si se tratare de un BRANCH. RTL: A = Reg[IR[2-2]]; B = Reg[IR[2-6]]; Out = PC + (sign-extend(ir[-]) << 2); No establecemos señales de control basadas en la Instrucción. (Estamos ocupados decodificándolas en la unidad de control) Estamos adelantando trabajo para ganar tiempo por las dudas Aprovechando que las unidades funcionales estaban libres. Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 4
Paso 3 (dependiente de la Instrucción) realiza una de cuatro operaciones, según el tipo de instrucción Referencia a Memoria: Out = A + sign-extend(ir[-]); R-type: Out = A op B; Branch: if (A==B) PC = Out; FIN Jump PC = {PC[3:28]} concat IR[2:] concat ; FIN Diseño RISC D. Cohen UNT Arq. de Computadoras - 24
Paso 4 (R-type or memory-access) Loads y Stores acceden a memoria. MDR = [Out]; o [Out] = B; Finalizan las instrucción tipo R: Reg[IR[-]] = Out; La escritura realmente ocurre al terminar el ciclo, en la transición. Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 6
Paso (Write-back) Reg[IR[2-6]]= MDR; Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 7
En Síntesis: Nombre del Paso Instruction fetch Instruction decode/register fetch Acción para Instrucc Tipo R Acción para Instrucciones Acción para que acceden a Memoria BRANCH IR = [PC] PC = PC + 4 A = Reg [IR[2-2]] B = Reg [IR[2-6]] Out = PC + (sign-extend (IR[-]) << 2) Acción para JUMPS Execution, address Out = A op B Out = A + sign-extend if (A ==B) then PC = PC [3-28] II computation, branch/ (IR[-]) PC = Out (IR[2-]<<2) jump completion access or R-type Reg [IR[-]] = Load: MDR = [Out] completion Out or Store: [Out] = B read completion Load: Reg[IR[2-6]] = MDR Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 8
Escrituras en Memoria y Registros: Vs. Real Hasta aquí se había simplificado Memoria y Banco de Registros: La escritura ocurre en el flanco de reloj. Address, data, y write enable deben permanecer estables al menos el tiempo set-up antes del flanco de reloj. En la vida real: Ni el banco de registros ni la Memoria poseen entrada de clk El camino de escritura presenta señales con carreras potenciales: Clk - Write enable =, Din se estabiliza - Retardo de Escritura a Memoria - Din se escribe en Mem[address] Importante: Address debe estar estable antes que Write Enable se ponga en Ojo: Problemas en el caso Ciclo Único. WrEn Adr Ideal Din Dout WrEn Adr Real Din Dout Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 9
Implementación del Control El valor de las señales de control depende de: qué instrucción está siendo ejecutada cuál paso se está realizando Usaremos la información vista para especificar una MEF mediante especificación gráfica de una MEF. uso de microprogramación. La Implementación se deriva directamente de la especificación (CAD) Comenzaremos por establecer cuáles son las señales de control y qué valores toman Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 2
Camino de Datos Multiciclo PCWr PC IorD PCWrCond PCSrc BrWr MemWr IRWr RegDst RegWr SelA Target RAdr WrAdr Din Dout Instruction Reg Rs Rd Ra Rb busa Reg File Rw busw busb << 2 4 2 3 Control Imm 6 ExtOp Extend MemtoReg SelB Op Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 2
Instruction Fetch: Al comienzo Cada ciclo comienza con el flanco negativo del clock: mem[pc] PC<3:> + 4 Clk Estamos aquí! Un ciclo lógico de reloj PCWr=? Clk PC MemWr=? RAdr WrAdr Dout Din IRWr=? Instruction Reg 4 op=? Control Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 22 Clk
Instruction Fetch: al final Cada ciclo termina con el siguiente flanco negativo (se actualizan elementos de memoria): Clk IR mem[pc] PC<3:> PC<3:> + 4 Un ciclo lógico de reloj PCWr= Estamos aquí! Clk PC MemWr= IRWr= RAdr WrAdr Din Dout Instruction Reg 4 Op = Add Control Clk Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 23
PCWr= PC Instruction Fetch: Panorama Completo RAdr WrAdr Din Dout Instruction Reg Ifetch Op=Add : PCWr, IRWr x: PCWrCond RegDst, Mem2R Others: s PCWrCond=x PCSrc= BrWr=x IorD= MemWr= IRWr= SelA= Target busa busb 4 2 3 Control SelB= Op=Add Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 24
Register Fetch / Instruction Decode busa RegFile[rs] ; busb RegFile[rt] ; no se usa: ctr = xx... Pensemos un uso para la... (branch) PCWr= PC IorD=x PCWrCond= MemWr= RAdr WrAdr Din Dout Go to the Control Op Func IRWr= Instruction Reg 6 6 RegDst=x Rs Rd Imm 6 Rb busa Reg File Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 2 RegWr= Ra Rw busw busb SelA=x 4 PCSrc=x 2 3 SelB=xx Control Op=xx
Register Fetch / Instruction Decode (Continúa) busa Reg[rs] ; busb Reg[rt] ; Target PC + SignExt(Imm6)*4 PCWr= PC Beq ype Ori IorD=x PCWrCond= : MemWr= RAdr WrAdr Din Dout IRWr= Instruction Reg Op Control 6 Func 6 RegDst=x Rs Rd Imm 6 ExtOp= Rb busa Reg File Target Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 26 Extend RegWr= Ra Rw Rfetch/Decode Op=Add : BrWr, ExtOp SelB= x: RegDst, PCSrc IorD, MemtoReg Others: s busw busb SelA= << 2 4 PCSrc=x 2 3 SelB= BrWr= Control Op=Add
Completar Branch if (busa == busb) PCWr= PC PC Target IorD=x PCWrCond= MemWr= RAdr WrAdr Din Dout IRWr= Instruction Reg RegDst=x Rs Rd BrComplete Op=Sub SelB= x: IorD, Mem2Reg RegDst, ExtOp : PCWrCond SelA PCSrc RegWr= Ra Rb busa Reg File Rw busw busb SelA= << 2 4 PCSrc= 2 3 BrWr= Control Target Imm Extend 6 ExtOp=x SelB= Op=Sub Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 27
Volvamos Instruction Decode: supongamos tipo-r Próximo ciclo: Ejecución de una instrucción tipo-r PCWr= PC Beq ype Ori IorD=x PCWrCond= : MemWr= RAdr WrAdr Din Dout IRWr= Instruction Reg Op Control 6 Func 6 RegDst=x Rs Rd Imm 6 ExtOp= Rb busa Reg File Target Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 28 Extend RegWr= Ra Rw busw busb SelA= << 2 4 PCSrc=x 2 3 SelB= BrWr= Control Op=Add
Ejecución Tipo-R: RExec : RegDst Output busa op busb SelA SelB= Op=ype PCWr= PCWrCond= x: PCSrc, IorD MemtoReg ExtOp PCSrc=x BrWr= IorD=x MemWr= IRWr= RegDst= RegWr= SelA= Target PC Rs Ra RAdr Rb busa Reg File 4 WrAdr Rw Din Dout Rd busw busb 2 3 << 2 Control Instruction Reg Imm Extend 6 ExtOp=x MemtoReg=x Op=ype SelB= Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 29
Completamos Tipo-R Rfinish Op=ype R[rd] Output : RegDst, RegWr sela PCWr= PCWrCond= SelB= x: IorD, PCSrc PCSrc=x BrWr= ExtOp IorD=x MemWr= IRWr= RegDst= RegWr= SelA= Target PC Rs Ra RAdr Rb busa Reg File 4 WrAdr Rw Din Dout Rd busw busb 2 3 << 2 Control Instruction Reg Rw llegó en ciclo anterior No hay registro a la salida Imm 6 ExtOp=x Extend MemtoReg= Op=ype SelB= Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 3
Decodificación: supogamos un ORI Próximo ciclo: ejecución ORI PCWr= PC Beq ype Ori IorD=x PCWrCond= : MemWr= RAdr WrAdr Din Dout IRWr= Intruction Reg Op Control 6 Func 6 RegDst=x Rs Rd Imm 6 ExtOp= Extend RegWr= Ra Rb busa Reg File Rw busw busb SelA= << 2 4 PCSrc=x 2 3 SelB= BrWr= Control Target Op=Add Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 3
Ejecución ORI output busa or Ext[Imm6] Instruction Reg Op=Or : SelA OriExec SelB= PCWr= x: MemtoReg IorD, PCSrc PCSrc=x BrWr= IorD=x MemWr= IRWr= RegDst= RegWr= SelA= Target PC Rs Ra RAdr Rb busa Reg File 4 WrAdr Rw Din Dout Rd busw busb 2 3 << 2 Control Imm Extend 6 ExtOp= MemtoReg=x Op=Or SelB= Diseño RISC D. Cohen UNT Arq. de Computadoras - 24
Completar ORI Reg[rt] output Instruction Reg OriFinish Op=Or x: IorD, PCSrc SelB= PCWr= PCWrCond= : SelA PCSrc=x BrWr= RegWr IorD=x MemWr= IRWr= RegDst= RegWr= SelA= Target PC Rs Ra RAdr Rb busa Reg File 4 WrAdr Rw Din Dout Rd busw busb 2 3 << 2 Control Imm Extend 6 ExtOp= MemtoReg= Op=Or SelB= Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 33
Decodificación: supongamos Acceso a Memoria Next Cycle: Cálculo de la dirección de Memoria PCWr= PC Beq ype Ori IorD=x PCWrCond= : MemWr= RAdr WrAdr Din Dout IRWr= Instruction Reg Op Control 6 Func 6 RegDst=x Rs Rd Imm 6 ExtOp= Extend RegWr= Ra Rb busa Reg File Rw busw busb SelA= << 2 4 PCSrc=x 2 3 SelB= BrWr= Control Target Op=Add Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 34
Cálculo de la Dirección de Memoria output busa + SignExt[Imm6] : ExtOp SelA AdrCal SelB= PCWr= Op=Add PCWrCond= x: MemtoReg PCSrc PCSrc=x BrWr= IorD=x MemWr= IRWr= RegDst=x RegWr= SelA= Target PC Rs Ra RAdr Rb busa Reg File 4 WrAdr Rw Din Dout Rd busw busb 2 3 << 2 Control Instruction Reg Imm Extend 6 ExtOp= MemtoReg=x Op=Add SelB= Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 3
Acceso a Memoria para STORE : ExtOp SWmem mem[ output] busb MemWr SelA SelB= Op=Add PCWr= PCWrCond= x: PCSrc,RegDst PCSrc=x BrWr= MemtoReg IorD=x MemWr= IRWr= RegDst=x RegWr= SelA= Target PC Rs Ra RAdr Rb busa Reg File 4 WrAdr Rw Din Dout Rd busw busb 2 3 << 2 Control Instruction Reg Imm Extend 6 ExtOp= MemtoReg=x Op=Add SelB= Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 36
Acceso a Memoria para LOAD : ExtOp LWmem Mem Dout mem[ output] SelA, IorD SelB= Op=Add PCWr= PCWrCond= x: MemtoReg PCSrc=x BrWr= PCSrc IorD= MemWr= IRWr= RegDst= RegWr= SelA= Target PC Rs Ra RAdr Rb busa Reg File 4 WrAdr Rw Din Dout Rd busw busb 2 3 << 2 Control Instruction Reg Imm Extend 6 ExtOp= MemtoReg=x Op=Add SelB= Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 37
Escritura de Reg para LOAD LWwr : SelA Reg[rt] Mem Dout RegWr, ExtOp MemtoReg SelB= Op=Add PCWr= PCWrCond= x: PCSrc PCSrc=x BrWr= IorD: IorD= MemWr= IRWr= RegDst= RegWr= SelA= Target PC Rs Ra RAdr Rb busa Reg File 4 WrAdr Rw Din Dout Rd busw busb 2 3 << 2 Control Instruction Reg Imm Extend 6 ExtOp= MemtoReg= Op=Add SelB= Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 38
Juntando todo: Diagrama de Estados para la MEF Ifetch AdrCal : ExtOp SelA SelB= Op=Add x: MemtoReg PCSrc lw : ExtOp LWmem SelA, IorD SelB= Op=Add x: MemtoReg PCSrc LWwr Op=Add : PCWr, IRWr x: PCWrCond RegDst, Mem2R Others: s sw : SelA RegWr, ExtOp MemtoReg SelB= Op=Add x: PCSrc IorD: lw or sw SWMem : ExtOp MemWr SelA SelB= Op=Add x: PCSrc,RegDst MemtoReg Rfetch/Decode Op=Add : BrWr, ExtOp SelB= x: RegDst, PCSrc IorD, MemtoReg Others: s ype Ori RExec : RegDst SelA SelB= Op=ype x: PCSrc, IorD MemtoReg ExtOp beq Rfinish Op=ype : RegDst, RegWr sela SelB= x: IorD, PCSrc ExtOp BrComplete Op=Sub SelB= x: IorD, Mem2Reg RegDst, ExtOp : PCWrCond SelA PCSrc OriExec Op=Or : SelA SelB= x: MemtoReg IorD, PCSrc OriFinish Op=Or x: IorD, PCSrc SelB= : SelA RegWr Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 39
2 Numeremos los estados del diagrama (Moore) Ifetch AdrCal : ExtOp SelA SelB= Op=Add x: MemtoReg PCSrc lw 4 : ExtOp LWmem SelA, IorD SelB= Op=Add x: MemtoReg PCSrc LWwr 3 Op=Add : PCWr, IRWr x: PCWrCond RegDst, Mem2R Others: s sw : SelA RegWr, ExtOp MemtoReg SelB= Op=Add x: PCSrc IorD lw or sw SWMem : ExtOp MemWr SelA SelB= Op=Add x: PCSrc,RegDst MemtoReg 6 7 Rfetch/Decode 8 Op=Add : BrWr, ExtOp SelB= x: RegDst, PCSrc IorD, MemtoReg Others: s ype Ori RExec : RegDst SelA SelB= Op=ype x: PCSrc, IorD MemtoReg ExtOp beq Rfinish Op=ype : RegDst, RegWr sela SelB= x: IorD, PCSrc ExtOp BrComplete Op=Sub SelB= x: IorD, Mem2Reg RegDst, ExtOp : PCWrCond SelA PCSrc OriExec Op=Or : SelA SelB= x: MemtoReg IorD, PCSrc Op=Or x: IorD, PCSrc SelB= : SelA RegWr OriFinish Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 4
Implementación Tradicional de la MEF Control Logic Inputs O u t p u t s al Camino de Datos Opcode Estado Próximo Estado 2 estados 4 bits. Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 4
Transición de estados Próximo Estado desde el Actual Estado Estado Estado S2, S6, S8, S Estado 2 S3, S Estado 3 Estado 4 Estado 4 Estado Estado Estado Estado 6 Estado 7 Estado 7 Estado Estado 8 Estado Estado 9 Estado Estado Estado Estado Estado Alternativamente, estado anterior y condición S4, S, S7, S8, S9, S Estado Estado Estado 2 Estado 3 Estado 4 Estado2 & op = sw Estado Estado 6 Estado 6 Estado 7 Estado 8 Estado & op = jmp Estado 9 Estado Estado Estado Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 42
Implementación con PLA (Programmed Logic Arrays) Qué significa una línea horizontal abajo? y una vertical? Op Op4 Op3 Op2 Op Op S3 S2 S S = = 2 = 3 = 4 = = 6 = 7 = 8 = 9 = = = R = beq = lw = sw = ori = jmp = NS3 NS2 NS NS Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 43
Implementación con PLA Los minterms están especificados en azul, las sumas en rojo. Por ejemplo, la primera línea vertical representa que del estado siempre paso al. No está completo... Op Op4 Op3 Op2 Op Op S3 S2 S S = = 2 = 3 = 4 = = 6 = 7 = 8 = 9 = = = lw = sw = R = ori = beq = jmp = NS3 NS2 NS NS Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 44
Implementación con PLA Agregando señales de control (Ejemplo del Libro) Op Op4 Op3 Op2 Op Op S3 S2 S S PCWrite PCWriteCond IorD MemRead MemWrite IRWrite MemtoReg PCSource PCSource Op Op SrcB SrcB SrcA RegWrite RegDst NS3 NS2 NS NS Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 4
Implementación con ROM Cuántas entradas tenemos? 6 bits para el opcode, 4 bits para el estado = líneas dirección (2 = 24 palabras diferentes) Cuántas salidas tenemos? 6 salidas de control del camino de datos, 4 bits de estado = 2 ROM: 2 x 2 = 2K bits (y un tamaño algo inusual) Ineficiente: no se tienen en cuenta condiciones de indiferencia En realidad hay más de 6 salidas de control con más instrucciones (por ejemplo JUMP). Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 46
ROM vs PLA Implementación de Moore (las salidas dependen del estado actual). Separemos la tabla en dos partes y dos ROMs: 4 bits de estado dan las 6 salidas, 2 4 x 6 bits de ROM bits dan los 4 bits de próx. estado, 2 x 4 bits de ROM2 Total: 4.3K bits de ROM PLA es mucho más chica puede compartir términos de productos utiliza solo las entradas que producen una salida tiene en cuenta las condiciones de indiferencia El tamaño es (#inputs #product-terms) + (#outputs #product-terms) - En este caso = (x7)+(7x2) = 46 celdas PLA El tamaño de las celdas del PLA es similar a las de la ROM ( un poco mayor) Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 47
Mayor complejidad. Qué pasa si hay muchos más estados y condiciones de entradas para determinar el control? El manejo con tablas se hace engorroso. Se recurre a CAD. Y si luego se necesita agregar un estado? Veremos otra forma de realización del control llamado MICROPROGRAMACION. Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 48
Resumen Puntos débiles Uniciclo: Performance y duplicación recursos. Multiciclo: reusa recursos cada instrucción dura lo necesario. Requiere Control con una MEF. Camino de datos parecido a Uniciclo, con registros para permitir uso de idénticos recursos en distintos ciclos. Cada instrucción demora:? Tabla con RTL para cada instrucción. Identificación de las señales de control Construcción diagrama de Estados. Implementación PLA, ROM, comparación. CISC: por CAD o Microprogramación próximo tema. Diseño RISC D. Cohen UNT Arq. de Computadoras - 24 49