S13 - myTeachingURJC/Arq-computadores-01 GitHub Wiki

Sesión de Teoría 13: Procesador NanoRISC-V Multiciclo

  • Tiempo: 2h
  • Diapositivas: Tema 3: El procesador
  • Objetivos de la sesión:
    • Funcionamiento básico del procesador Multiciclo
    • Entender su ruta de datos
    • Cálculo de la frecuencia máxima de funcionamiento

Contenido

Introducción

Veremos una segunda implementación del procesador NanoRisc-V: Multiciclo. Ahora las instrucciones tardan varios ciclos de reloj. Cada instrucción es independientes de las otras y tardará un número de ciclos diferente. Este procesador sigue siendo secuencial: No se empieza a ejecutar la siguiente instrucción hasta que no termina la actual

El procesador multiciclo

El NanoRISC-V multiciclo ejecuta las instrucciones en varios ciclos de reloj, por lo que tiene un CPI de MAYOR que 1. Los cálculos de cada etapa se hacen en circuitos combinacionales, y al llegar el flanco de subidoa del siguiente ciclo se captura el estado de la etapa actual

El estado del procesador está determinado por el valor de sus registros X (X1-X31) y el contador de programa (PC), pero ahora este estado sólo se actualiza en el último ciclo de la instrucción. En el resto de ciclos que componen la instrucción se actualizan los registros de captura del estado de cada etapa

Modelo de funcionamiento

En cada ciclo de reloj se ejecuta ahora una única etapa: Fetch, Decodificación, Ejecución 1, Ejecución 2, etc. Las etapas de Fetch y Decodificación son iguales para todas las instrucciones, sin embargo la etapa de ejecución y posteriores dependen de la instrucción que se esté ejecutando

Las instrucciones ahora tardan diferentes ciclos de reloj según de qué instrucción se trate. En el caso del NanoRisc-V, la instrucción que lleva más tiempo es load, que necesita 5 ciclos de reloj, sin embargo, el resto de instrucciones se ejecutan en 4

En la última etapa de cada instrucción el estado siguiente del procesador (nuevo valor del PC y de los registros) ya está disponible. Al llegar el flanco de reloj del primer ciclo de la siguiente instrucción se captura este estado, que pasa a ser el actual. Fíjate que ahora el estado no se captura en cada nuevo ciclo, sino en cada nueva instrucción

En versiones de procesadores más avanzadas, la versión multiciclo permite que se ejecuten instrucciones que realizan operaciones más complejas, como multiplicaciones o divisiones, que requieren más ciclos de reloj, pero no se penaliza a las demás, que tardan menos ciclos. Así, por ejemplo, una instrucción de load puede requerir de 5 ciclos, mientras que una de multiplicación en punto flotante 9

Estructura de las etapas

Cada una de las etapas sigue la misma estructura: está formada por uno o varios registros de etapa, que contienen la información necesaria para realizar esa etapa (es el estado de la etapa), obtenido de la etapa anterior, y una parte combinacional que realiza cálculos que se preparan para la siguiente etapa

Los registros de etapa tienen una entrada de escritura (write), de forma que sólo capturan los datos cuando su señal de escritura esté a 1 y llegue un flanco de subida del reloj. Es la unidad de control la que determina cuándo se activa esta señal de escritura

El retardo de cada estapa será igual a la suma de sus componentes en serie: el retardo debido al registro más el retardo de la parte combinacional. Y como siempre, si hay varios caminos, el retardo de la etapa será el que tiene el camino crítico (el de mayor retardo)

Frecuencia máxima de funcionamiento

Para calcular la frecuencia máxima de funcionamiento del procesador multiciclo debemos calcular el retardo de TODAS sus etapas y quedarnos con la más lenta. La denominaremos etapa crítica. Luego no hay más que aplicar la ecuación que ya conocemos:

Implementación del procesador

Los procesadores se implementan a partir de dos circuitos independientes:

  • Ruta de datos: Conexión de los elementos que realizan las operaciones. Es el "tablero" de juego por donde los datos se pueden mover
  • Control: Genera las señales de control para gobernar la ruta de datos. Hace que los datos se muevan correctamente por la ruta de datos, y que se capturen en los momentos adecuados

Esquema general

El procesador NanoRisc-V tiene en total 2 entradas y 3 salidas.

El esquema general de su implementación se muestra en esta figura

Diferencias con la implementación Monociclo

  • La unidad de control es mayor. Hay más señales de control y además ahora se trata de un circuito secuencial (tiene entrada de reloj). En el caso del monociclo era un circuito combinacional. En el multiciclo es un circuito más complejo
  • La unidad de control necesita conocer la salida Zero de la ALU. Es por tanto una entrada nueva, que antes no estaba. Esa señal será necesaria para que se pueda ejecutar la instrucción de salto
  • La parte del PC se ha simplificado: ahora el valor siguiente del PC se obtiene de la ALU, y no de un circuito adicional. Esta es una de las ventajas del multiciclo: que los elementos de las etapas se pueden reutilizar. Así, la ALU se usará en la etapa de ejecución 1 para realizar la operación que indique la instrucción y en la última etapa para calcular el valor siguiente del pc (sumar 4 o un valor inmmediato al PC)
  • La parte de las memorias también se ha simplificado: ya no necesitamos dos memorias y podemos usar la misma tanto para leer instrucciones como para leer/escribir datos.
  • Hay un total de 7 registros más que en el monociclo), que se cargan con su correspondiente señal de escritura
  • Cada etapa empieza en un registro, y termina en otro registro
  • La ALU ahora puede realizar operaciones entre registros y con el PC. Mediante las señales de control AluSrc1 y AluSrc2 se indica qué le llega por su entradas
  • En las entrada del operador de la ALU hay multiplexores de 2 a 4

Simulación del funcionamiento para la instrucción addi

  • Ejemplo de funcionamiento para una instrucción addi.

Fase IF

Esta es la fase en la que obtiene la siguiente instrucción a ejecutar, que se encuentra en la memoria.

La dirección está almacenada en el Registro PC.

El valor leido de memoria se debe almacenar en el registro IR.

Para ello, el valor del PC se debe redirigir hasta la dirección de la memoria Addr, por lo que el valor de la señal de control AddrSrc será 1.

La instrucción leida, sale por Din y se almacena en IR, por lo que la señal de control IRwr deberá ser 1

Además, siguiendo con el principio de Predicción, como lo más habitual es que el valor del PC se incremente (Salvo que la instrucción sea beq), y dado que la ALU en esta fase está libre, se puede calcular el siguiente valor del PC. Tenemos tiempo de sobra mientras se lee de memoria la instrucción.

Para ello, se deben seleccionar como entradas a la ALU el registro PC, el valor 4 y la operación Suma (AluSrc1 = 0, AluSrc2 = 2)

El resultado de la operación, se almacenará directamente en el registro PC, por lo que PCwr será 1 y MemtoReg será 1.

Esta fase es siempre igual para todas las instrucciones, por lo que la Unidad de control no necesita la entrada de instrucción para generar estas señales.

Signal Cycle 1 (IF) Cycle 2 (ID) Cycle 3 (Ex) Cycle 4 (Wb)
MemWr 0 - - -
MemtoReg 1 - - -
RegWrite 0 - - -
Alu + - - -
AluSrc1 0 - - -
AluSrc2 2 - - -
PCwr 1 - - -
IRwr 1 - - -
Rwr 0 - - -
AluWr 0 - - -
DRwr 0 - - -
AddSrc 1 - - -

Fase ID

En la fase de la decodificación se parte de que el registro IR contine la instrucción (32 bits).

Termina cuando se almacene el valor del registro seleccionado por rs1 en el registro R1

La señal de control principal por lo tanto es Rwr 1.

Signal Cycle 1 (IF) Cycle 2 (ID) Cycle 3 (Ex) Cycle 4 (Wb)
MemWr 0 0 - -
MemtoReg 1 0 - -
RegWrite 0 0 - -
Alu + 0 - -
AluSrc1 0 0 - -
AluSrc2 2 0 - -
PCwr 1 0 - -
IRwr 1 0 - -
Rwr 0 1 - -
AluWr 0 0 - -
DRwr 0 0 - -
AddSrc 1 0 - -

Fase Ex

En esta fase se realiza el cálculo requerido por la instrucción, a través de la ALU. La fase termina una vez que hay valores estables en los registros AR y ZR.

Las señales de control, para que se sume el registro R1 con el valor inmediato serán AluSrc1 = 2, AluSrc2 = 1 y Alu = "+".

Para que se almacene el resultado en AR, el valor de AluWr será 1

Signal Cycle 1 (IF) Cycle 2 (ID) Cycle 3 (Ex) Cycle 4 (Wb)
MemWr 0 0 0 -
MemtoReg 1 0 0 -
RegWrite 0 0 0 -
Alu + 0 + -
AluSrc1 0 0 2 -
AluSrc2 2 0 1 -
PCwr 1 0 0 -
IRwr 1 0 0 -
Rwr 0 1 0 -
AluWr 0 0 1 -
DRwr 0 0 0 -
AddSrc 1 0 0 -

Fase Ex

En esta última fase, sólo queda alamcenar el resultado en el registro seleccionado por rd.

Para ello, tenemos que seleccionar como entrada a los datos del banco de registros el registro AR, por lo que MemtoReg será 0, y además tendremos que habilitar la escritura en el banco de registros con la señal RegWrite a 1.

Signal Cycle 1 (IF) Cycle 2 (ID) Cycle 3 (Ex) Cycle 4 (Wb)
MemWr 0 0 0 0
MemtoReg 1 0 0 0
RegWrite 0 0 0 1
Alu + 0 + 0
AluSrc1 0 0 2 0
AluSrc2 2 0 1 0
PCwr 1 0 0 0
IRwr 1 0 0 0
Rwr 0 1 0 0
AluWr 0 0 1 0
DRwr 0 0 0 0
AddSrc 1 0 0 0

Siguiente instrucción

Con estos 4 ciclos anteriores terminaría la ejecución de la instrucción addi.

Como el valor del PC ya se ha incrementado en 4, la Unidad de Control volverá al estado de IF, donde se leerá la siguiente instrucción y continuará con la ejecución.

Otras instrucciones.

Las señales para el resto de instrucciones se dejan como trabajo para los alumnos.

  • Tablero de juego:

tablero-multiciclo.svg

Resumen: Monociclo vs Multiciclo

  • Procesadores secuenciales: Se ejecuta una instrucción al terminar la siguiente
    • Monociclo:
      • Un único ciclo de reloj
      • CPI = 1
      • Periodo del reloj: determinada por la instrucción más lenta (load)
    • Multiciclo:
      • Cada instrucción tarda un número de ciclos diferente
      • CPI > 1
      • Periodo del reloj: es mejor que para el monociclo (frecuencias más altas) y está determinado por la etapa más lenta

Conclusiones

Como hemos podido comprobar, la implementación multiciclo nos permite aumentar el rendimiento del procesador al hacer posible que cada instrucción se ejecute en un número de ciclos distinto, permitiendo acelerar la ejecución de las instrucciones más rápidas.

A cambio, como hemos comprobado, la lógica de la Unidad de Control es mucho más compleja.

En la próxima sesión veremos más ventajas del multicilo

Referencias

Libro de referencia: "Computer Organization and Design. Hardware/Software interface. Risc-V"

Videos explicativos de Sarah Harris

Ejercicios

Ejerccios para practicar y asimilar los conceptos más importantes

Ejercicio 1

Tenemos un procesador NanoRISC-V multiciclo del cual conocemos los retardos de cada una de sus fases para todas las instrucciones.

Para la instrucción addi, sabemos que el retardo de IF es de 350ps, el de ID es 200ps, el de Ex es 250ps y el de Wb es 150ps

a) Calcula la frecuencia máxima de este computador (asume que addi es la única instrucción disponible).

b) Suponiendo que el procesador funciona a la frecuencia máxima calculada, determina cuánto tiempo tardara en ejecutarse una instrucción addi

Nos proporcionan información sobre la instrucción ld, cuyos retardos son los siguientes: IF = 350ps, ID = 200ps, Ex = 250ps, Mem = 450ps Wb = 150ps

c) Calcula la nueva frecuencia máxima del procesador

d) ¿Cuánto tardará en ejecutarse el siguiente programa como mínimo?

addi x5, x0, 0x100
ld x6, 0(x5)
addi x5, x5, x5

Ejercicio 2

Para el procesador anterior, se implementa la instrucción mul por hardware. Los retardos son los mismos que para la instrucción addi, salvo la fase Ex cuyo retardo es de 900ps al ser una operación más compleja.

a) Calcula la nueva frecuencia máxima del procesador considerando sólo las instrucciones addi, ld y mul.

b) ¿Cómo podríamos reducir la frecuencia máxima del procesador sin modificar los retardos de los distintos módulos del circuito?

Ejercicio 3

Tenemos un procesador NanoRISC-V multiciclo del cual conocemos los retardos de cada uno de los elementos:

Elemento Retardo (ps)
MUX 10
Registros 20
ALU 250
Banco de Registros 120
Lectura Memoria 420

El resto de retardos se consideran despreciables

a) Calcula el retardo de cada fase de la insrtucción addi

a) Calcula el retardo de cada fase de la insrtucción ld

b) Determina la frecuencia máxima de este procesador (asumiendo que solo ejecuta las instrucciones analizadas)

Autores

Licencia

Créditos

Enlaces