Multiciclo
-
Upload
stefano-salvatori -
Category
Business
-
view
5.176 -
download
1
Transcript of Multiciclo
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, 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
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
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
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
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
Término de Load
Escribir MDR en banco de registros REG[IR[20:16]] <- MDR
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
Multiciclo MIPS
Extraído de Libro guía Qué diferencias observa respecto al uniciclo?
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
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
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
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
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
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
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)
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)
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
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
Cálculo de dirección de memoria
ALUSrcA =1
ALUSrcB = 10
ALU = Suma
Estado 2
Estado 5
Estado 3
Opcode “load” Opcode “store”
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 immediatasno están dibujadas aquí• Dibujo tomado de libro guía
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
Ejemplo PLA
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
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,
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
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
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