CPU Multiciclo

Cecilia Hernández

Desventajas de implementación uniciclo

Todas las instrucciones ocupan el mismo tiempo aunque

Algunas instrucciones son más largas que otras

Ejemplo, load es más largo que el add, dado que debe accesar la memoria

Requiere que el ciclo de reloj sea más largo para poder ejecutar instrucción más larga

Algunas unidades combinacionales deben ser replicadas ya que son usadas en el mismo ciclo

Ejemplo, ALU es usada para cálculo de dirección de un branch y para calcular expresión de branch
 

No importa tanto, porque cálculo de dirección sólo requiere sumador Sin embargo, esto también se necesitará en pipeline

Una alternativa a uniciclo


Tener un ciclo más corto y hacer que instrucciones más largas ocupen más de un ciclo para ejecutarse El ciclo de reloj más corto está determinado por el mayor retardo de una unidad funcional individual (memoria, ALU, etc) Posibilidad de reusar los mismos recursos si son utilizados en diferentes ciclos Dado que se necesita guardar información entre ciclos se necesita agregar algunos “registros” no visibles a la ISA No todas las instrucciones requerirán el mismo número de ciclos

Implementación multiciclo  Basado en la descomposición de los siguientes pasos en la ejecución de instrucciones      Ciclo1: Búsqueda de instrucción e incremento de PC Ciclo2: Decodificación de instrucción. branches 3 y las demás 4 . lectura de registros fuentes y cálculo de dirección de branch Ciclo3: Ejecución en ALU o cálculo de dirección para load/store. seteo de PC si branch es exitoso Ciclo4: Acceso a la memoria (load/store) o escritura en registro Ciclo5: Carga de registro para caso de load  Según descripción anterior loads toman 5 ciclos.

la dirección debe almacenarse en forma estable. para ello se usa un registro especial IR (Registro de Instrucción) Las acciones a nivel de transferencia de registros durante este ciclo son:   IR <. aunque en pipeline si se necesitará) Sumador para incrementar PC IR  Recursos requeridos    .MEM[PC] PC <.PC + 4 Memoria ( No necesariamente diferenciada entre instrucciones y datos.Búsqueda de instrucción   Dado que los campos de la instrucción son necesitados en diferentes ciclos.

REG[IR[20:16]] lee rt ALUout <.REG[IR[25:21]] lee rs B <.Decodificación de instrucciones y lectura de registros fuentes   Decodificación de instrucciones: envia código de operación a unidad de control Realizar operaciones en forma optimista que no produzcan daños  Lectura de registro rs y rt y almacenarlos en registros A y B no visibles a ISA que serán usados como entrada a la ALU   A <.PC + (sign-ext(IR[15:0])||00   Calcular la dirección de branch por si acaso  ALUout no es visible a la ISA  Nuevos recursos  A. B. ALUout .

A op B ALUout <.Ejecución en ALU   Si la instrucción es tipo-R  ALUout <.A op sign-ext(IR[15:0]) ALUout <.A + sign-ext(IR[15:0]) If (A==B) then PC <.ALUout (obtenida en ciclo anterior) Si la instrucción es de tipo-I    Si la instrucción es load/store  Si la instrucción es un branch   No nuevos recursos .

MEM[ALUout] MEM[ALUout] <.ALUout MDR Nuevos recursos  .Acceso a memoria o escritura a registro      Un nuevo registro se necesita para almacenar el dato extraído de memoria no visible a la ISA MDR (Memory Data Register) Si load  MDR <.B Si store  Si aritmética  REG[IR[15:11]] <.

Término de Load  Escribir MDR en banco de registros  REG[IR[20:16]] <.MDR .

A. B. ALUout. MDR) y multiplexores .Recursos    No se hace distinción entre memoria de instrucciones y memoria de datos Sólo se una ALU Se requieren algunos registros invisibles a la ISA (IR.

Multiciclo MIPS   Extraído de Libro guía Qué diferencias observa respecto al uniciclo? .

llamadas microinstrucciones ejecutadas en una micromáquina  Puede usar PLAs o ROM para microinstrucciones .Control para multiciclo  Más complejo que para uniciclo   Se necesitan definir señales de control para cada ciclo Se necesita saber en que etapa está instrucción  Dos métodos para diseñar la unidad de control   Máquina de estados finitas y control cableado (como extensión del uniciclo) Microprogramación  Representación simbólica de control en la forma de instrucciones.

Cuáles son las señales de control necesarias   Analisis para cada etapa Señales necesarias para     Lectura/escritura a memoria Lectura/escritura en registros Control de varios multiplexores Control de ALU .

Señales de control en multiciclo en MIPS .

Control completo multiciclo en MIPS .

A debe contener lo que viene por PC Fuente 2: ALUSrcB = 01. B debe contener 4 para que ALU realice suma de PC + 4  Establecer los operandos fuentes para la ALU    Establecer control de ALU para seleccionar suma . dirección de memoria proviene de PC para extraer instrucción   Setear señal MemRead para leer de memoria Setear señal IRwrite para escribir registro IR Fuente 1: ALUSrcA = 0.Búsqueda de instrucción  Se necesita leer la memoria  Para elegir dirección de entrada (multiplexor con señal IorD)  IorD = 0.

Búsqueda de instrucción (Incremento de PC)   PCSource = 00. para actualizar PC con lo que viene de la ALU Setear PCWrite. para escribir registro PC  Caso de branch exitoso se ve más adelante .

para seleccionar entrada a ALU desde PC Fuente2: ALUSrcB=11. desplazado en 2 (o multiplicado por 4) Setear ALU para suma . para seleccionar. No hay problemas porque le registro IR almacena la dirección de los registros. Selección de entradas a la ALU    Fuente1: ALUSrcA=0.Decodificación de instrucciones y búsqueda de operandos  Decodificación de la instrucción  Se establecen las señales de control para los multiplexores que eligen el registro destino y de donde viene el dato para escribir en banco de registros No se necesitan señales de control. Esto pasa en cada ciclo.  Leer registros A y B   Cálculo de dirección en branches. extendido en signo. Immediato de IR.

código de operación) -> (próximo estado) Esto representa el concepto de Máquina de estado finito . el código de operación debe determinar diferentes controles para la ejecución de las instrucciones correspondientes   Señales de control son distintas para load. add. Por ejemplo. leer o escribir de memoria. escribir en banco de registros. store. modificar PC con dirección de branch. etc Se determina las acciones necesarias para las siguientes etapas.Concepto de estado   Durante pasos 1 y 2. etc  En cada ciclo la unidad de control es puesta en un estado específico que depende sólo del estado previo y del código de operación   (estado actual. branch. todas las instrucciones hacen las mismas cosas En paso 3.

estado 0 Dado que todas las operaciones en el próximo estado son siempre el mismo. tenemos transición de estado 0 a 1  (estado 0) -> (estado 1) .Los dos primeros estados   Dado que el flujo de datos y señales de control son los mismos para todas las instrucciones en paso (búsqueda de instrucción) hay sólo un estado asociado con paso 1.

Notación Búsqueda de instrucción Decodificación de instrucción y Lectura de operandos (estado 0) Memread ALUSrcA = 0 IorD = 0 Irwrite ALUsrcB = 01 ALU = suma Pcwrite Pcsource = 00 Transición siempre ocurre (estado 1) ALUSrcA = 0 ALUsrcB = 11 ALU = suma .

” Opcode “jump.Qué viene después de (estado 1)? Estado 0 Comenzar Estado 1 Opcode “Mem op.” Opcode “R-R.” Opcode “branch.” Estado 2  Estado 3 dependiente de transición determinada por código de operación .

para seleccionar entrada de banco de registros Fuente 2: ALUSrcB = 10. transición a estado 3 Si instrucción es “store”.Cálculo de dirección de memoria  Setear fuentes a la ALU   Fuente 1: ALUSrcA= 1. transición es a estado 5 . para seleccionar Immediato extendido en signo   Setear ALU para suma Transición de estado 2   Si instrucción es “load”.

Cálculo de dirección de memoria ALUSrcA =1 ALUSrcB = 10 ALU = Suma Estado 2 Opcode “load” Opcode “store” Estado 3 Estado 5 .

Estado 5. store  Las señales de control son:    IorD = 1. para indicar que lo que se escribirá en memoria viene de ALUout (indica dirección) Setear señal de control MemWrite para indicar que se escribirá en memoria Notar que lo que se escribe en memoria viene de registro B  Una vez que se termina estado 5. al final de la escritura en memoria la ejecución de la instrucción se termina y se vuelve a estado 0  (estado 5) -> (estado 0) .

Implementación multiciclo • Instrucciones immediatas no están dibujadas aquí • Dibujo tomado de libro guía .

+ bits func + estado actual) genera control para ALU .Implementación cableada  Caso implemetación uniciclo:  Entrada (código de operación)  Se construye circuito combinacional mediante PLA (Programming Logic Array)  Señales de salida a la sección de datos  Entrada (código operación más bits func)  Determinan control de ALU  Caso implementación multiciclo   Se necesita implementar máquina de estados finitos Entrada (Cód. + estado actual + almacenamiento)  Determina circuito combinacional (PLA) y genera señales de salida para sección de datos y próximo estado  Entrada (Cod. Op. Op.

Ejemplo PLA .

Fetch Calc Dir. Operando Fetch Operando(s) Cálculo Salva salida(s) . DATA Unidad de Ejecución CPU Memoria Control Una de estas es Mapeada con una Sección de estas AND microsecuencia e.Interpretación de macroinstrucciones Memoria Principal ADD SUB AND Programa y datos De usuario . . .d..

Diagrama implementación multiciclo  Referencia texto guía .

Qué es lo real?  Implementación de procesadores es un proceso complejo  Mayoría de procesadores actuales no usan multiciclo. principios similares a los discutidos aquí  Procesadores modernos implementan control con cableado directo para instrucciones simples y microprogramación para instrucciones complejas . sino pipelining (el que veremos pronto)   Último procesador intel sin pipelining 80386 Primer MIPS usa pipelining  Complejidad de diseño de control concordante con el tipo de instrucciones soportadas por la arquitectura  Sin embargo.

Algunas comparaciones  Algunas comparaciones generales    Procesadores multiciclo. ejecutar una instrucción por ciclo Procesadores actuales usan técnicas avanzadas de pipelining  Ejemplo:superescalares que permiten la ejecución de más de una instrucción por ciclo. instrucciones ocupan un número de ciclos dependiendo de tipo de instrucción Idea pipelining. replicando unidades funcionales .

1.8 = ¡1.8 20% 10% 0.4 Branch Jump 3 2 CPI promedio = 3.6 1 0. 5/3. por ejemplo memoria datos/programa.6 0. 5 veces más lento  Desempeño multiciclo es aprox.Desempeño de procesador multiciclo Tipo de instrucción ALU Load Store CPI por tipo 4 5 4 Frecuenci a 40% 20% 10% CPI * freq. procesador multiciclo puede reusar algunas unidades funcionales.2 CPI uniciclo = 1. pero período de reloj es aprox. ALU/nextPC .32 veces mejor que uniciclo! Además.