Universidad Rey Juan Carlos ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES Camino de datos y control: implementación uniciclo Luis Rincón Córcoles Licesio J. Rodríguez-Aragón Programa. Introducción. 2. Construcción incremental del camino de datos uniciclo. 3. El control de la UAL. 4. Diseño de la unidad de control para el camino de datos uniciclo.. Funcionamiento del camino de datos uniciclo. 6. Las instrucciones de salto incondicional en el camino de datos uniciclo. 7. Conclusiones e implicaciones del diseño uniciclo. 2
. 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. Con todo ello, en esta segunda parte: Se construirá un camino de datos conjunto para todas las instrucciones presentadas. Se diseñará la circuitería de control para dicho camino de datos. Se analizará el funcionamiento de dicho camino de datos. Características del camino de datos construido: Es muy sencillo, ya que responde a un subconjunto reducido del repertorio de instrucciones del MIPS. Para ejecutar otras instrucciones sería preciso ampliar el camino de datos, tanto en sus interconexiones como en la circuitería de control. Las instrucciones se ejecutan en un único ciclo de reloj. 3 2. Camino de datos uniciclo Esquema global del camino de datos: Data Register # PC Address Instruction Instruction Registers Register # ALU memory Register # Address Data memory Data El camino de datos se va a construir en forma incremental, añadiéndole gradualmente la circuitería necesaria para ejecutar nuevas instrucciones. 4
Camino de datos uniciclo Circuitería necesaria para las instrucciones de memoria y aritmético-lógicas. Camino de datos uniciclo Se añade la circuitería para la búsqueda de instrucciones. 6
Camino de datos uniciclo Se añade la circuitería para las instrucciones de ramificación incondicional. 7 3. El control de la UAL Operaciones efectuadas por la UAL: Señales de control de la UAL Función And Or Suma Resta Set on less than Supondremos que existe una señal ALUOp de 2 bits que distingue el tipo de operación en función del tipo de instrucción que se va a ejecutar: ALUOp Operación Sumar para calcular la dirección en una instrucción de memoria. Restar para calcular la dirección de salto en una ramificación. Dada por el campo Funct de la instrucción (instrucciones de tipo R). 8
El control de la UAL Así, las señales para controlar la UAL se generan mediante un circuito cuyas entradas son: Los dos bits de ALUOp. Los 6 bits del campo Funct. Cálculo de los 3 bits de control de la UAL: Código de operación ALUOp Operación Campo de función Acción deseada en la UAL Entradas de control LW Cargar palabra Suma SW Almacenar palabra Suma BEQ Ramificar si iguales Resta Tipo R Sumar Suma Tipo R Restar Resta Tipo R AND And Tipo R OR Or Tipo R Activar si menor que Activar si menor que 9 El control de la UAL Tabla de verdad para generar los 3 bits de control de la UAL: ALUOp ALUOp ALUOp F F4 Campo Funct F3 F2 F F ALU Operation
El control de la UAL Tabla de verdad para Operation2 = : ALUOp ALUOp ALUOp Campo Funct F F4 F3 F2 F F Tabla de verdad para Operation = : ALUOp ALUOp ALUOp F Campo Funct F4 F3 F2 F F Tabla de verdad para Operation = : ALUOp ALUOp ALUOp F Campo Funct F4 F3 F2 F F El control de la UAL Circuito resultante: ALUOp ALUOp ALUOp ALU control block F3 Operation2 F ( ) F2 F F Operation Operation Operation 2
4. Diseño de la unidad de control Para diseñar la unidad de control es preciso examinar los formatos de las instrucciones utilizadas. Tipo R (shamt: shift amount en instrucciones de desplazamiento) Cód. Op. 6 3-26 Registro fuente rs 2-2 Registro fuente 2 rt 2-6 Registro destino rd - shamt -6 Funct funct 6 - Carga o almacenamiento (tipo I) Cód. Op. x23 ó 2B 6 Registro base rs Registro destino rt Desplazamiento Offset 6 3-26 2-2 2-6 - Ramificación condicional (tipo I) Cód. Op. x4 6 Registro fuente rs Registro fuente 2 rt Desplazamiento Offset 6 3-26 2-2 2-6 - 3 Observaciones sobre los formatos de instrucción El campo del código de operación tiene siempre el mismo tamaño (6 bits) y está siempre en el mismo lugar (bits 3-26). En las instrucciones de tipo R, BEQ y SW los números de los registros de lectura están siempre en los campos rs (bits 2-2) y rt (bits 2-6). El número del registro base para la instrucción LW está siempre en el campo rs. El desplazamiento relativo, ya sea para BEQ o para las instrucciones de memoria, siempre ocupa 6 bits y está en los bits -. El registro destino puede estar en dos lugares: En LW está en rt (bits 2 a 6). En las instrucciones de tipo R está en rd (bits -). Esto implica que sea preciso añadir un multiplexor para seleccionar el número del registro sobre el que se va a escribir. 4
Camino de datos uniciclo Señales de control Señal de control RegDest RegDst EscrReg RegWrite FuenteALU ALUSrc FuentePC PCSrc LeerMem MemRead EscrMem MemWrite MemaReg MemtoReg Efecto cuando está inactiva El identificador de registro destino está en rt (bits 2-6) Ninguno El segundo operando de la UAL proviene del segundo registro leído El PC se incrementa normalmente (sumándole 4) Ninguno Ninguno El valor en la entrada del banco de registros procede de la UAL Efecto cuando está activa El identificador de registro destino está en rd (bits -) El registro destino se escribe con el valor correspondiente El segundo operando de la UAL es el desplazamiento extendido a 32 bits El PC se carga con una nueva dirección dada por la salida del sumador de cálculo de direcciones Se lee una posición de memoria y su contenido se coloca a la salida de datos Se escribe una posición de memoria con el valor dado en la entrada de datos El valor de la entrada del banco de registros procede de la memoria La señal PCSrc no se puede generar directamente por la unidad de control, porque hace falta conocer la señal de resultado nulo procedente de la UAL. La señal ALUOp es de dos bits, e indica a la UAL qué operación tiene que realizar. 6
Camino de datos con la unidad de control 7 Implementación de la función de control La función de control está completamente especificada por los bits del código de operación. Instrucción y código de operación RegDest RegDst FuenteALU ALUSrc MemaReg MemtoReg EscrReg RegWrite LeerMem MemRead EscrMem MemWrite Saltocond Branch ALUOp ALUOp Formato R LW SW BEQ El control es muy sencillo, porque se utilizan sólo unas pocas de las combinaciones posibles para el código de operación. La sencillez del control justifica su realización mediante una red de puertas. Si se incluyesen todas las instrucciones del repertorio, la función de control se especificaría mediante una gran tabla, y su síntesis se realizaría mediante otras técnicas: Decodificadores, ROM. PLA: simplificación asistida por métodos automáticos. 8
Tabla de la función de control Control Señal Formato R LW SW BEQ Op Op4 Entradas Op3 Op2 Op Op RegDest (RegDst) FuenteALU (ALUSrc) MemaReg (MemtoReg) EscrReg (RegWrite) Salidas LeerMem (MemRead) EscrMem (MemWrite) Saltocond (Branch) ALUOp ALUOp 9 Circuito de control Inputs Op Op4 Op3 Op2 Op Op R-format Iw sw beq Outputs RegDst ALUSrc MemtoReg RegWrite MemRead MemWrite Branch ALUOp ALUOpO 2
. Funcionamiento del camino de datos En la realización uniciclo, la unidad de control genera y activa todas las señales pertinentes para una instrucción en un único periodo de reloj. A pesar de ello, puede considerarse que, en su ejecución, las instrucciones atraviesan una serie de fases o etapas. El número y la secuencia de etapas depende de la propia instrucción. Las etapas son activadas por la unidad de control, que se encarga de generar las señales de control adecuadas en el instante preciso. Ejemplo: etapas de una instrucción de tipo R.. Lectura de la instrucción que está en memoria e incremento del PC. 2. Lectura de los operandos fuente, contenidos en sendos registros de propósito general ubicados en el banco de registros. 3. Realización de la operación en la UAL. 4. Escritura del resultado obtenido en el registro destino ubicado en el banco de registros. 2 Instrucción R: etapa Leer instrucción de memoria e incrementar el PC. 22
Instrucción R: etapa 2 Leer los registros del banco de registros. 23 Instrucción R: etapa 3 Realizar la operación en la UAL. 24
Instrucción R: etapa 4 Guardar resultado en el banco de registros. 2 Instrucción LW Etapas de una instrucción LW:. Lectura de la instrucción que está en memoria e incremento del PC. 2. Lectura de la dirección base, contenida en un registro de propósito general ubicado en el banco de registros. 3. Cálculo de la dirección del operando fuente en la UAL mediante la suma del registro base más los 6 bits menos significativos de la instrucción extendidos en signo. 4. Lectura en memoria del operando fuente. La dirección en la que se encuentra viene dada por el resultado de la suma efectuada en la etapa anterior.. Escritura del dato leído en la etapa anterior en el registro destino, ubicado en el banco de registros en la posición dada por los bits 2-6 de la instrucción. 26
Instrucción LW 27 Instrucción BEQ Etapas de una instrucción BEQ:. Lectura de la instrucción que está en memoria e incremento del PC. 2. Lectura de los operandos fuente, contenidos en sendos registros de propósito general ubicado en el banco de registros. 3. La UAL resta los operandos fuente para determinar si son iguales, lo cual es cierto si el resultado de la resta es. Al mismo tiempo, se suma el valor del PC, previamente incrementado, más los 6 bits menos significativos de la instrucción previamente desplazados dos lugares hacia la izquierda y extendidos en signo hasta 32 bits para calcular la dirección de ramificación. 4. Se almacena la dirección de la siguiente instrucción en el PC. Esta dirección puede ser la que ya contenía (en caso de que la resta no dé resultado nulo), o bien la dirección de ramificación (en caso de que el resultado de la resta sea nulo). 28
Instrucción BEQ 29 6. Instrucciones de salto incondicional Formato de la instrucción: Cód. Op. x2 6 3-26 Dirección destino target 26 2- Etapas de una instrucción J:. Lectura de la instrucción que está en memoria e incremento del PC. 2. Almacenamiento de la dirección de la siguiente instrucción en el PC, que se calculará como la concatenación de los cuatro bits más significativos del PC actual y el campo de dirección destino de la instrucción desplazado dos posiciones hacia la izquierda. Circuitería necesaria: Otro multiplexor para seleccionar el nuevo PC, con su correspondiente señal de control. Un desplazador. 3
Instrucciones de salto incondicional 3 7. Conclusiones e implicaciones del diseño Todas las instrucciones deben durar lo mismo: ciclo de reloj. El ciclo de reloj debe ser suficientemente largo como para permitir la ejecución de la instrucción más lenta de todas. Camino crítico de la ruta de datos: dado por la instrucción lw. Supongamos que las unidades funcionales tienen los siguientes retardos: Unidades de memoria: 2 ns cada una. UAL y sumadores: 2 ns cada uno. Acceso de cualquier tipo al banco de registros: ns. Multiplexores, unidad de control, cables, unidad de extensión de signo, lectura o escritura del PC: despreciable. En tal caso, el retardo de lw sería 8 ns El retardo de las demás instrucciones sería menor, pero todas ocuparían 8 ns! Habría que añadir un margen para evitar problemas debidos al sesgo del reloj. El ciclo de reloj largo hace que las instrucciones más cortas se ejecuten en más tiempo del necesario: esta implementación es ineficiente. Si hay instrucciones muy largas (coma flotante, múltiples accesos a memoria) frente a otras muy cortas, el desperdicio de tiempo es enorme. 32