Universidad Rey Juan Carlos ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES Camino de datos y control: implementación microprogramada Luis Rincón Córcoles Licesio J. Rodríguez-Aragón Camino de datos y control: implementación microprogramada Programa 1. Introducción. 2. Realización de la función de transición de la unidad de control mediante un secuenciador. 3. Microprogramación: definiciones. 4. Definición del formato de microinstrucción. 5. Realización de un microprograma para la unidad de control. 6. Traducción de un microprograma a circuitería. 7. Reducción del tamaño de la circuitería. 8. Conclusiones e implicaciones del diseño microprogramado. 2 Camino de datos y control: implementación microprogramada 1. Introducción  En la primera parte del tema: •Se han presentado varias instrucciones del repertorio del MIPS. •Se han estudiado los elementos básicos que forman parte de un camino de datos en un computador sencillo. •Se han presentado algunos caminos de datos sencillos para ciertas operaciones.  En la segunda parte del tema: •Se ha construido un camino de datos uniciclo para todas las instrucciones presentadas. •Se ha diseñado la circuitería de control para dicho camino de datos. •Se ha analizado el funcionamiento de dicho camino de datos. •Se han analizado las implicaciones de su utilización.  En la tercera parte del tema: •Se ha modificado el camino de datos anterior para que la ejecución de las instrucciones dure varios ciclos de reloj. •Se ha diseñado una nueva unidad de control como una máquina finita de estados.  En esta parte del tema se estudiará una técnica que permitirá especificar y diseñar de forma sencilla unidades de control arbitrariamente complejas para caminos de datos multiciclo: la microprogramación. 3 Camino de datos y control: implementación microprogramada Introducción  El control del MIPS sencillo visto en las partes anteriores del tema es sencillo. •El control para el repertorio de instrucciones completo del MIPS (unas 100) sería bastante más elaborado y difícil.  En una máquina con repertorio de instrucciones complejo existen muchos factores que complican el control: •Amplia variedad de modos de direccionamiento. •Muchas instrucciones. •Muchas variantes de las instrucciones en función de los modos de direccionamiento de los operandos. •Instrucciones con diferentes formatos y longitudes.  Cuando el control es complicado, la técnica de diseño de la unidad de control mediante un diagrama de estados es inaplicable.  Por todo ello, en el proceso de diseño de la unidad de control de un computador se hace necesario contar con técnicas o herramientas que simplifiquen la tarea. •La circuitería se suele diseñar con la ayuda de herramientas CAD. •Microprogramación: técnica que permite especificar y diseñar el control de forma análoga a como se realiza un programa de computador. 4 Camino de datos y control: implementación microprogramada Camino de datos multiciclo 5 Camino de datos y control: implementación microprogramada Señales de control del camino de datos multiciclo Señal de control Efecto cuando está inactiva Efecto cuando está activa RegDest RegDst El identificador de registro destino está en rt (bits 20-16) El identificador de registro destino está en rd (bits 1511) EscrReg RegWrite Ninguno El registro destino se escribe con el valor correspondiente SelALUA ALUSrcA El primer operando de la UAL proviene del PC El primer operando de la UAL proviene del registro A LeerMem MemRead Ninguno Se lee una posición de memoria y su contenido se coloca a la salida de datos EscrMem MemWrite Ninguno Se escribe una posición de memoria con el valor dado en la entrada de datos MemaReg MemtoReg El valor en la entrada del banco de registros procede de la UAL El valor de la entrada del banco de registros procede del registro MDR IoD IorD El PC suministra la dirección para acceder a memoria ALUOut suministra la dirección para acceder a memoria EscrIR IRWrite Ninguno La salida de memoria se escribe en el registro IR EscrPC PCWrite Ninguno Escribir el PC un valor que depende de la señal FuentePC (PCSource) EscrPCCond PCWriteCond Ninguno Escribir el PC cuando la señal de resultado nulo de la UAL está también activa 6 Camino de datos y control: implementación microprogramada Señales de control del camino de datos multiciclo Señal de control Valor ALUOp SelALUB (ALUSrcB) FuentePC PCSource Efecto 00 La UAL realiza una operación de suma 01 La UAL realiza una operación de resta 10 La operación realizada por la UAL viene dada por el campo Funct de la instrucción 00 El segundo operando de la UAL proviene del registro B 01 El segundo operando de la UAL es la constante 4 10 El segundo operando de la UAL son los 16 bits menos significativos del IR extendidos en signo a 32 bits 11 El segundo operando de la UAL son los 16 bits menos significativos del IR extendidos en signo a 32 bits y desplazados dos lugares hacia la izquierda 00 La salida de la UAL (PC+4) se envía para ser escrita en el PC 01 El contenido del registro ALUOut (destino de la ramificación condicional) se envía para ser escrito en el PC 10 La dirección de destino de salto en una instrucción J desplazada dos bits hacia la izquierda y concatenada con los 4 bits más significativos del PC se envía para ser escrita en el PC 7 Camino de datos y control: implementación microprogramada Diagrama de estados multiciclo completo Instruction decode/ register fetch Instruction fetch = (Op ') or 'LW (Op = Execution 6 ') pe) -Ty 'B EQ =R = (Op ') 'SW ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00 Branch completion 8 ALUSrcA =1 ALUSrcB = 00 ALUOp= 10 Jump completion 9 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 PCWrite PCSource = 10 (O p = W 'S ') (Op = 'LW') ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 (Op = 'JMP') Memory address computation 1 p Start MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 (O 0 Memory access 3 Memory access 5 MemRead IorD = 1 R-type completion 7 MemWrite IorD = 1 RegDst = 1 RegWrite MemtoReg = 0 Write-back step 4 RegDst = 0 RegWrite MemtoReg =1 8 Camino de datos y control: implementación microprogramada 2. Función de transición con un secuenciador  En la realización multiciclo mediante dos ROM, la mayor parte de la lógica se emplea para materializar la función de transición.  Si crece el repertorio de instrucciones, también crece el número de estados, y con él la lógica de control, especialmente la dedicada a la función de transición.  Si hay instrucciones que duran muchos ciclos de reloj, en su ejecución se producen largas secuencias de estados con un solo camino que los une. •Se producen muchísimas combinaciones estado+IR imposibles. •Sin embargo, gran parte de la lógica se dedica a la función de transición.  Por todo ello, la función de transición se puede codificar más eficientemente utilizando un contador que se incremente automáticamente en cada ciclo de reloj. •Así se evita codificar explícitamente la función de transición en la unidad de control, ahorrando gran cantidad de lógica. •Es preciso resolver situaciones en las que el estado siguiente no sea el estado anterior incrementado (“saltos”). 9 Camino de datos y control: implementación microprogramada Función de transición con un secuenciador Control unit  El contador se puede construir mediante un registro más un incrementador (sumador que suma 1 al estado anterior). PLA or ROM Outputs  Para tener en cuenta los “saltos” se añadirá: Input 1 State Adder Address select logic Op[5-0] •Una lógica (tabla) para calcular el estado (dirección) siguiente si hay un “salto”. •Una señal de control que permita seleccionar entre la dirección (estado) incrementada y la dirección de “salto” (CtrlDir o AddCtl). PCWrite PCWriteCond IorD MemRead MemWrite IRWrite BWrite MemtoReg PCSource ALUOp ALUSrcB ALUSrcA RegWrite RegDst AddrCtl Instruction register opcode field 10 Camino de datos y control: implementación microprogramada Función de transición con un secuenciador  Envío (dispatch): salto en función del código de operación.  Puede utilizarse una tabla (ROM o PLA) para cada estado en el que sea preciso realizar un envío (bits de dirección: código de operación, quizá PLA or ROM compactado). 1 State Valor de AddCtl Adder Acción 010 (002) Pasar al estado 0 110 (012) Envío con ROM 1 210 (102) Envío con ROM 2 310 (112) Usar estado incrementado 3 Mux 2 1 AddrCtl 0 0 Dispatch ROM 2 Dispatch ROM 1 Address select logic Instruction register opcode field  Podría usarse una única tabla para todos los envíos (bits de dirección: estado+código de operación, quizá compactados). 11 Camino de datos y control: implementación microprogramada Función de transición con un secuenciador Valor de AddCtl en cada estado Tabla de envío 1 Op[5-0] Instrucción Valor 000000 Instrucción R 0110 000010 Instrucción J 1001 000100 Instrucción BEQ 1000 100011 Instrucción LW 0010 101011 Instrucción SW 0010 Tabla de envío 2 Op[5-0] Instrucción Valor 100011 Instrucción LW 0011 101011 Instrucción SW 0101 Estado Acción del control de dirección Valor de AddCtl 0 Usar estado incrementado 310 (112) 1 Envío con ROM 1 110 (012) 2 Envío con ROM 2 210 (102) 3 Usar estado incrementado 310 (112) 4 Pasar al estado 0 010 (002) 5 Pasar al estado 0 010 (002) 6 Usar estado incrementado 310 (112) 7 Pasar al estado 0 010 (002) 8 Pasar al estado 0 010 (002) 9 Pasar al estado 0 010 (002) 12 Camino de datos y control: implementación microprogramada Función de transición con un secuenciador: tabla Bits de control 17-0 ALUSrcA RegWrite RegDst 0 0 0 0 0 0 0 1 0 0 0 1 1 0001 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0010 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 AddCtl MemtoReg 1 1 AddCtr IRWrite 0 0 ALUSrcB MemWrite 1 1 ALUSrcB MemRead 0 0 ALUOp IorD 1 0 ALUOp PCWriteCond 0 1 PCSource PCWrite 1 0000 PCSource ⇓ Estado actual 0011 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0100 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0101 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0110 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1000 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1001 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 Resto (estados 1010 hasta 1111) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?  Control con ROM o PLA: tabla de salidas (bits 17-2) y transiciones (AddCtl: bits 1-0), junto con las tablas de envío 1 y 2, el contador y el multiplexor de selección. 13 Camino de datos y control: implementación microprogramada 3. Microprogramación: definiciones  Microinstrucción: conjunto de valores de las señales de control en una etapa cualquiera de la ejecución de una instrucción. •Ejecución de una microinstrucción: activación de las señales de control especificadas en la misma en un instante determinado.  La ejecución de una instrucción implica la asignación de una serie de valores a las señales de control de forma ordenada en una secuencia de fases o etapas. •La ejecución de una instrucción implica la ejecución ordenada de una secuencia de microinstrucciones.  Es preciso establecer un mecanismo de secuenciamiento que permita decidir cuál es la microinstrucción siguiente a una dada. •Las secuencias de microinstrucciones suelen estar ubicadas en forma contigua, unas detrás de otras. •En ocasiones se producen “saltos” en la secuencia, y la microinstrucción que hay que ejecutar a continuación no es la que está detrás, sino otra distinta.  Microprograma o microcódigo: conjunto de microinstrucciones utilizadas para especificar el control de una máquina. 14 Camino de datos y control: implementación microprogramada Microprogramación: definiciones  Microprogramación: técnica de diseño del control como un microprograma encargado de realizar las instrucciones de la máquina en términos de microinstrucciones más simples.  Idea clave: representar los valores activados en las líneas de control en forma simbólica. •Así el microprograma es la representación de las microinstrucciones del mismo modo que el lenguaje ensamblador es una representación de las instrucciones de máquina.  La sintaxis de la microprogramación tiene una cierta analogía a la sintaxis de la programación en ensamblador: •La instrucciones de ensamblador se dividen en campos (etiqueta, código de operación, operandos, comentarios). •La sintaxis de las microinstrucciones consta de varios campos o agrupaciones de señales. •Los campos se definen de acuerdo a la función de las señales en el camino de datos.  La realización final de un microprograma coincide aproximadamente con la presentada al tratar la realización de la función de transición con un secuenciador. 15 Camino de datos y control: implementación microprogramada 4. Definición del formato de microinstrucción  En una microinstrucción se debe poder especificar la activación de todas las señales generadas por la unidad de control.  Las señales de control se pueden dividir en grupos (campos) dependiendo de la función que tengan dentro del camino de datos. •El formato de microinstrucción debe simplificar la representación y hacer sencillo diseñar y comprender el microprograma. Campo Control ALU Función Especifica la operación ejecutada en la UAL. El resultado siempre se guardará en ALUOut. Fuente1 Especifica de dónde viene el primer operando de la UAL. Fuente2 Especifica de dónde viene el segundo operando de la UAL. ControlRegistros Memoria ControlEscrPC (PCWriteControl) Secuenciación Especifica la lectura y escritura del banco de registros, y de dónde viene el valor escrito. Especifica la lectura y escritura de la memoria, y de dónde viene el valor escrito y adónde va el valor leído. Especifica la escritura en el PC. Especifica cómo se elige la siguiente microinstrucción. 16 Camino de datos y control: implementación microprogramada Formato de microinstrucción: campos Campo Valor simbólico Etiqueta Cualquier cadena ControlALU Señales activas Comentario Se usa para definir etiquetas que clarifican la secuenciación del microcódigo. No generan señales de control, pero se usan entre otras cosas para especificar los contenidos de las tablas de envío (dispatch), cuya selección se resuelve mediante la señal CtrlDir (AddCtl). Add ALUOp = 00 La UAL suma. Subt ALUOp = 01 La UAL resta y realiza la comparación para ramificaciones. FuncCode ALUOp = 10 La UAL realiza la operación indicada por el contenido del campo Func de la instrucción. PC ALUSrcA = 0 El primer operando de la UAL es el contenido del PC. A ALUSrcA = 1 El primer operando de la UAL es el contenido del registro A. B ALUSrcB = 00 El segundo operando de la UAL es el contenido del registro A. 4 ALUSrcB = 01 El segundo operando de la UAL es la constante 4. Extend ALUSrcB = 10 El segundo operando de la UAL procede de la salida de la unidad de extensión de signo de 16 bits a 32. Extshft ALUSrcB = 11 El segundo operando de la UAL procede de la salida de la unidad de desplazamiento de dos posiciones hacia la izquierda ubicado tras la unidad de extensión de signo de 16 bits a 32. Fuente1 Fuente2 17 Camino de datos y control: implementación microprogramada Formato de microinstrucción: campos Campo Valor simbólico Señales activas Se leen dos registros usando los campos rs y rt de la instrucción, y los resultados se guardan en los registros A y B. Read ControlRegistros Memoria Comentario WriteALU RegWrite RegDst = 1 MemtoReg = 0 Se escribe un registro usando el campo rd de la instrucción con el contenido del registro ALUOut. WriteMDR RegWrite RegDst = 0 MemtoReg = 1 Se escribe un registro usando el campo rt de la instrucción con el contenido del registro MDR. ReadPC MemRead IorD = 0 IRWrite Lee de memoria usando la dirección dada por el contenido del PC, y escribiendo la información leída en el IR (y en el MDR). ReadALU MemRead IorD = 1 Lee de memoria usando la dirección dada por el contenido de ALUOut, y escribiendo la información leída en el MDR). WriteALU MemWrite IorD = 1 Escribe en memoria usando la dirección dada por el contenido de ALUOut y el contenido del registro B como dato. 18 Camino de datos y control: implementación microprogramada Formato de microinstrucción: campos Campo ControlEscrPC Valor simbólico Señales activas Comentario ALU PCSource = 00 PCWrite Escribe la salida de la UAL en el PC. ALUOut-Cond PCSource = 01 PCWriteCond Si la salida Zero de la UAL está activa, escribe en el PC el contenido del registro ALUOut. JumpAddress PCSource = 10 PCWrite Escribe en el PC la dirección de salto de la instrucción. Seq AddCtl = 11 Selecciona la siguiente microinstrucción. Fetch AddCtl = 00 Selecciona la microinstrucción 0 para comenzar la fase de lectura de una nueva instrucción. Dispatch1 AddCtl = 01 Selecciona la siguiente microinstrucción mediante la tabla de envío 1. Dispatch2 AddCtl = 10 Selecciona la siguiente microinstrucción mediante la tabla de envío 2. Secuenciación 19 Camino de datos y control: implementación microprogramada Formato de microinstrucción: tablas de envío Tabla de envío 1 Op[5-0] Instrucción Valor simbólico 000000 Instrucción R Rformat1 000010 Instrucción J JUMP1 000100 Instrucción BEQ BEQ1 100011 Instrucción LW Mem1 101011 Instrucción SW Mem1 Tabla de envío 2 Op[5-0] Instrucción Valor simbólico 100011 Instrucción LW LW2 101011 Instrucción SW SW2 20 Camino de datos y control: implementación microprogramada 5. Creación del microprograma: lectura y decodificación Instruction decode/ Register fetch Instruction fetch Memory reference FSM (Figure 5.38) Etiqueta ControlALU Fuente1 Fuente2 Fetch Add PC 4 Add PC Extshft Control Registros W') = 'S = (Op yp R-T e) 'B EQ ') ') 'LW ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 R-type FSM (Figure 5.39) Branch FSM (Figure 5.40) (Op = 'JMP') = (Op Op or ( 1 = Start MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00 p Microinstrucción 0 (instruction fetch): •Leer de memoria la instrucción y cargarla en IR. •Incrementar el PC sumándole 4. Microinstrucción 1: •Decodificar la instrucción. •Leer dos registros del banco y guardarlos en A y B. •Calcular la hipotética dirección de ramificación y guardarla en ALUOut. •Saltar según tabla de envío 1. (O  Acciones: 0 Jump FSM (Figure 5.41) Memoria Control EscrPC Secuenciación ReadPC ALU Seq Read Dispatch1 21 Camino de datos y control: implementación microprogramada Creación del microprograma: ejecución de instrucciones de acceso a memoria  Acciones: From state 1 Fuente1 Fuente2 Mem1 Add A Extend Control Registros Memoria (Op = 'LW') Memory access Memory access 3 5 MemRead IorD = 1 MemWrite IorD = 1 Write-back step 4 RegWrite MemtoReg = 1 RegDst = 0 Control EscrPC To state 0 (Figure 5.37) Secuenciación Dispatch2 LW2 ReadALU WriteMDR SW2 ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00 ') W 'S ControlALU Memory address computation 2 = Etiqueta (Op = 'LW') or (Op = 'SW') p (O Microinstrucción 2: •Calcular la dirección del dato en memoria y guardarla en ALUOut. •Saltar según tabla de envío 2. Si Op=LW Microinstrucción 3: •Leer dato de memoria y guardarlo en MDR. Microinstrucción 4: •Escribir el contenido de MDR en el banco de registros. •Saltar a microinstrucción 0 (fetch). Si Op=SW Microinstrucción 5: •Grabar en memoria el contenido de B en la dirección ALUOut. •Saltar a microinstrucción 0 (fetch). Seq Fetch WriteALU Fetch 22 Camino de datos y control: implementación microprogramada Creación del microprograma: ejecución de instrucciones de tipo R From state 1 (Op = R-type) Execution  Acciones: 6 Microinstrucción 6: •Sumar los contenidos de los registros A y B y guardar el resultado en ALUOut. Microinstrucción 7: •Escribir el contenido de ALUOut en el banco de registros. •Saltar a microinstrucción 0 (fetch). ALUSrcA = 1 ALUSrcB = 00 ALUOp = 10 R-type completion 7 RegDst = 1 RegWrite MemtoReg = 0 To state 0 (Figure 5.37) Etiqueta ControlALU Fuente1 Fuente2 Rformat1 FuncCode A B Control Registros Memoria Control EscrPC Secuenciación Seq WriteALU Fetch 23 Camino de datos y control: implementación microprogramada Creación del microprograma: ejecución de la instrucción BEQ From state 1 (Op = 'BEQ')  Acciones: Microinstrucción 8: •Restar los contenidos de A y B. •En función de la condición de resultado nulo, escribir en el PC el contenido de ALUOut. •Saltar a microinstrucción 0 (fetch). Branch completion 8 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCWriteCond PCSource = 01 To state 0 (Figure 5.37) Etiqueta ControlALU Fuente1 Fuente2 BEQ1 Subt A B Control Registros Memoria Control EscrPC Secuenciación ALUOut-Cond Fetch 24 Camino de datos y control: implementación microprogramada Creación del microprograma: ejecución de la instrucción J From state 1 (Op = 'J')  Acciones: Microinstrucción 9: •Escribir en el PC la dirección de salto procedente del desplazador. •Saltar a microinstrucción 0 (fetch). Jump completion 9 PCWrite PCSource = 10 To state 0 (Figure 5.37) Etiqueta ControlALU Fuente1 Fuente2 Control Registros Memoria JUMP1 Control EscrPC Secuenciación Jump address Fetch 25 Camino de datos y control: implementación microprogramada Microcódigo completo Etiqueta ControlALU Fuente1 Fuente2 Fetch Add PC 4 Add PC Extshft Add A Extend Mem1 Control Registros Memoria Control EscrPC Secuenciación ReadPC ALU Seq Read Dispatch1 Dispatch2 LW2 ReadALU Seq WriteMDR SW2 Rformat1 Fetch WriteALU FuncCode A Fetch B Seq WriteALU BEQ1 Subt A Fetch B JUMP1 Tabla de envío 1 ALUOut-Cond Seq Jump address Fetch Op[5-0] Instrucción Valor simbólico 000000 Instrucción R Rformat1 000010 Instrucción J JUMP1 Op[5-0] Instrucción Valor simbólico 000100 Instrucción BEQ BEQ1 100011 Instrucción LW LW2 100011 Instrucción LW Mem1 101011 Instrucción SW SW2 101011 Instrucción SW Mem1 Tabla de envío 2 26 Camino de datos y control: implementación microprogramada 6. Traducción del microprograma a circuitería  El microcódigo puede residir en una ROM (llamada memoria de control) o en una PLA. Microcode storage Datapath control outputs Outputs  La lógica de selección de dirección es la misma que en el enfoque del secuenciador. Input  Las tablas de envío pueden residir en sendas ROM o PLA.  Las PLA son más pequeñas, excepto cuando la función de control es muy densa. 1 Microprogram counter Sequencing control Adder Address select logic  Las ROM son más flexibles. Inputs from instruction register opcode field  El registro de estado se llama ahora contador de microprograma.  Las señales de control forman la palabra de control, que a veces se almacena en un registro denominado registro de control. 27 Camino de datos y control: implementación microprogramada 7. Reducción del tamaño de la circuitería  Las máquinas con un control complejo pueden requerir gran cantidad de circuitería. •Hay máquinas con cientos o miles de microinstrucciones. •Hay máquinas con microinstrucciones de cien o más bits.  Reducción del número de bits en la microinstrucción (codificación vertical): •Codificación de campos: Si un campo tiene k señales de control y en un ciclo de reloj dado sólo puede activarse una de ellas, pueden codificarse con m bits siendo m el menor entero que cumple que 2m ≥ k. Cada microinstrucción tendrá m-k bits menos. A cambio, es preciso añadir un decodificador de m a 2m. Dos señales de control en el mismo campo codificado no pueden activarse simultáneamente: si fuese preciso hacerlo, se usarán dos microinstrucciones consecutivas, activándose cada señal en una de ellas. •Definición de varios formatos de microinstrucción: Los campos pueden solaparse unos con otros. El significado de cada bit de la microinstrucción vendrá dado por un bit adicional que servirá para distinguir unos formatos de otros. Será preciso añadir el bit de formato y un demultiplexor. El número de microinstrucciones puede aumentar, si bien serán más estrechas. •En ambos casos puede ser preciso aumentar el ciclo de reloj.  Codificación horizontal: codificación ancha con todos los bits de la microinstrucción. 28 Camino de datos y control: implementación microprogramada 8. Conclusiones e implicaciones del diseño  El primer diseño de unidad de control microprogramada se debe a Maurice V. Línea de condición Wilkes. 1 0 nd MUX nd nd Registro Instrucción Reg. Reloj Señales de control S1 S2 S3 Siguiente dirección Sn nd Decodificador de direcciones 000...0 000...0 000...11 Dx.c Dx.c' Biestable de condición (c) Matriz de diodos A Matriz de diodos B 29 Camino de datos y control: implementación microprogramada Conclusiones e implicaciones del diseño  La microprogramación fue inventada por Maurice V. Wilkes en 1953.  En aquellos tiempos la tecnología no estaba suficientemente adelantada como para contar con una memoria de control suficientemente rápida.  IBM rescató la microprogramación en 1964 con su familia de computadores 360. •IBM incorporó el desarrollo de tecnología para memorias en la compañía para hacer viable la microprogramación.  Las primeras máquinas microprogramadas implementaban el control mediante una memoria ROM: de ahí la terminología utilizada. •Microinstrucción: conjunto de valores binarios de las señales de control. Su función, estructura y misión es análoga a la de las instrucciones en código máquina (representación binaria de las operaciones que puede realizar un computador). •Microprograma: secuencia de microinstrucciones necesarias para ejecutar las instrucciones. Su función es análoga a la de los programas en código máquina (secuencia de instrucciones necesarias para ejecutar los algoritmos). •Micromemoria: memoria de control en ROM que contiene las microinstrucciones. Su función es análoga a la de la memoria central en RAM. •Contador de microprograma: contiene la microdirección (dirección en la micromemoria) de la siguiente microinstrucción del microprograma y recorre el mismo en su ejecución. Su función y nombre son análogos a los del contador de programa (contiene la dirección en memoria RAM de la siguiente instrucción del programa y recorre el mismo en su ejecución). 30 Camino de datos y control: implementación microprogramada Conclusiones e implicaciones del diseño  La microprogramación permite modificar y depurar fácilmente el control. •El uso de micromemorias RAM facilitó la depuración incluso con la máquina ya en el mercado.  La microprogramación abarata el coste de ampliar el repertorio de instrucciones para incluir instrucciones nuevas, complejas o cuya ejecución implique muchos ciclos de reloj. •Basta con incluir una memoria de control suficientemente grande. •Si la memoria de control tenía parte RAM el usuario incluso podía definir nuevas instrucciones.  La microprogramación puso de moda la emulación: simulación completa del repertorio de instrucciones de una máquina gracias a un control microprogramado.  La microprogramación estuvo muy de moda en los años 60 y 70. •Las UCP se diseñaban mediante componentes discretos MSI. •Alternativas: control cableado frente a control microprogramado (firmware: microcódigo en ROM).  Hoy en día el diseño de UCP con unidad de control microprogramada está en desuso. •El tiempo de acceso a la memoria de control a la RAM de instrucciones es similar: la solución microprogramada es muy lenta. •La UCP se realiza en un solo chip (microprocesador), no mediante componentes discretos. •Están en boga los diseños RISC, que implican un control más sencillo. •En cualquier caso, para realizar el control se recurre a herramientas CAD. 31 Camino de datos y control: implementación microprogramada Conclusiones e implicaciones del diseño  La microprogramación como técnica para especificar el control simplifica el proceso de diseño, ya que: •Permite especificar el control de forma simbólica. •Permite comprender más fácilmente el funcionamiento de la máquina. •Facilita la identificación de los patrones de activación de las señales de control, así como su secuenciamiento.  Una vez especificado el microcódigo, puede recurrirse a un diseño microprogramado o bien puede diseñarse un control con un secuenciador para especificar la función de transición. •Ambas opciones son equivalentes.  El microcódigo puede residir en una memoria de control (ROM o incluso RAM), en una PLA o en una red de puertas. •Si el microcódigo reside en una memoria de control ROM o RAM, se habla de firmware. •La PLA será más compacta, barata y rápida si la matriz de control tiene pocos bits a 1. •Si la función de control es densa, la PLA será grande (y lenta). •La opción de utilizar una ROM siempre es más flexible. •Una ROM es más lenta y cara que una PLA. •El control mediante una red de puertas (cableado) se realiza con la ayuda de herramientas CAD.  La microprogramación se usa actualmente en periféricos (módems, impresoras, etc). 32