Multiciclo

33
CPU Multiciclo Cecilia Hernández

Transcript of Multiciclo

Page 1: Multiciclo

CPU Multiciclo

Cecilia Hernández

Page 2: Multiciclo

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

Page 3: Multiciclo

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

Page 4: Multiciclo

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, 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, branches 3 y las demás 4

Page 5: Multiciclo

Búsqueda de instrucción

Dado que los campos de la instrucción son necesitados en diferentes 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 <- MEM[PC] PC <- PC + 4

Recursos requeridos Memoria ( No necesariamente diferenciada entre

instrucciones y datos, aunque en pipeline si se necesitará)

Sumador para incrementar PC IR

Page 6: Multiciclo

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 <- REG[IR[25:21]] lee rs B <- REG[IR[20:16]] lee rt

Calcular la dirección de branch por si acaso ALUout <- PC + (sign-ext(IR[15:0])||00

ALUout no es visible a la ISA

Nuevos recursos A, B, ALUout

Page 7: Multiciclo

Ejecución en ALU

Si la instrucción es tipo-R ALUout <- A op B

Si la instrucción es de tipo-I ALUout <- A op sign-ext(IR[15:0])

Si la instrucción es load/store ALUout <- A + sign-ext(IR[15:0])

Si la instrucción es un branch If (A==B) then PC <- ALUout (obtenida en ciclo

anterior) No nuevos recursos

Page 8: Multiciclo

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 <- MEM[ALUout]

Si store MEM[ALUout] <- B

Si aritmética REG[IR[15:11]] <- ALUout

Nuevos recursos MDR

Page 9: Multiciclo

Término de Load

Escribir MDR en banco de registros REG[IR[20:16]] <- MDR

Page 10: Multiciclo

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, A, B, ALUout, MDR) y multiplexores

Page 11: Multiciclo

Multiciclo MIPS

Extraído de Libro guía Qué diferencias observa respecto al uniciclo?

Page 12: Multiciclo

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, llamadas microinstrucciones ejecutadas en una micromáquina Puede usar PLAs o ROM para microinstrucciones

Page 13: Multiciclo

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

Page 14: Multiciclo

Señales de control en multiciclo en MIPS

Page 15: Multiciclo

Control completo multiciclo en MIPS

Page 16: Multiciclo

Búsqueda de instrucción

Se necesita leer la memoria Para elegir dirección de entrada (multiplexor con señal

IorD) IorD = 0, 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

Establecer los operandos fuentes para la ALU Fuente 1: ALUSrcA = 0, 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 control de ALU para seleccionar suma

Page 17: Multiciclo

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

Page 18: Multiciclo

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

Leer registros A y B No se necesitan señales de control. Esto pasa en cada ciclo. No

hay problemas porque le registro IR almacena la dirección de los registros.

Cálculo de dirección en branches. Selección de entradas a la ALU Fuente1: ALUSrcA=0, para seleccionar entrada a ALU desde PC Fuente2: ALUSrcB=11, para seleccionar, Immediato de IR,

extendido en signo, desplazado en 2 (o multiplicado por 4) Setear ALU para suma

Page 19: Multiciclo

Concepto de estado

Durante pasos 1 y 2, todas las instrucciones hacen las mismas cosas

En paso 3, 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, store, branch, add,

etc Se determina las acciones necesarias para las siguientes

etapas. Por ejemplo, leer o escribir de memoria, escribir en banco de registros, modificar PC con dirección de branch, 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, código de operación) -> (próximo estado) Esto representa el concepto de Máquina de estado finito

Page 20: Multiciclo

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, 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)

Page 21: Multiciclo

Notación

Búsqueda de instrucción

(estado 0)

Memread

ALUSrcA = 0

IorD = 0

Irwrite

ALUsrcB = 01

ALU = suma

Pcwrite

Pcsource = 00

ALUSrcA = 0

ALUsrcB = 11

ALU = sumaTransición siempre ocurre

Decodificación de instrucción y

Lectura de operandos

(estado 1)

Page 22: Multiciclo

Qué viene después de (estado 1)?

Estado 3 dependiente de transición determinada por código de operación

Estado 0 Estado 1

Comenzar

Opcode “Mem op.” Opcode “R-R.” Opcode “branch.” Opcode “jump.”

Estado 2

Opcode = etc

Page 23: Multiciclo

Cálculo de dirección de memoria

Setear fuentes a la ALU Fuente 1: ALUSrcA= 1, para seleccionar entrada

de banco de registros Fuente 2: ALUSrcB = 10, para seleccionar

Immediato extendido en signo

Setear ALU para suma Transición de estado 2

Si instrucción es “load”, transición a estado 3 Si instrucción es “store”, transición es a estado 5

Page 24: Multiciclo

Cálculo de dirección de memoria

ALUSrcA =1

ALUSrcB = 10

ALU = Suma

Estado 2

Estado 5

Estado 3

Opcode “load” Opcode “store”

Page 25: Multiciclo

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)

Page 26: Multiciclo

Implementación multiciclo

• Instrucciones immediatasno están dibujadas aquí• Dibujo tomado de libro guía

Page 27: Multiciclo

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. Op. + 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. + bits func + estado actual) genera control para ALU

Page 28: Multiciclo

Ejemplo PLA

Page 29: Multiciclo

Interpretación de macroinstrucciones

MemoriaPrincipal

Unidad deEjecución

MemoriaControl

CPU

ADDSUBAND

DATA

.

.

.

Programa y datosDe usuario

AND microsecuencia

e.d., Fetch Calc Dir. Operando Fetch Operando(s) Cálculo Salva salida(s)

Una de estas esMapeada con una Sección de estas

Page 30: Multiciclo

Diagrama implementación multiciclo

Referencia texto guía

Page 31: Multiciclo

Qué es lo real?

Implementación de procesadores es un proceso complejo Mayoría de procesadores actuales no usan multiciclo,

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, principios similares a los discutidos aquí

Procesadores modernos implementan control con cableado directo para instrucciones simples y microprogramación para instrucciones complejas

Page 32: Multiciclo

Algunas comparaciones

Algunas comparaciones generales Procesadores multiciclo, instrucciones ocupan un

número de ciclos dependiendo de tipo de instrucción

Idea pipelining, 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, replicando unidades funcionales

Page 33: Multiciclo

Desempeño de procesador multiciclo

2

3

4

5

4

CPI por tipo

10%

20%

10%

20%

40%

Frecuencia

0.6Branch

0.2Jump

1.6ALU

0.4Store

1Load

CPI * freq.Tipo de instrucción

CPI promedio = 3.8

CPI uniciclo = 1, pero período de reloj es aprox. 5 veces más lento

Desempeño multiciclo es aprox. 5/3.8 = ¡1.32 veces mejor que uniciclo!

Además, procesador multiciclo puede reusar algunas unidades funcionales, por ejemplo memoria datos/programa, ALU/nextPC