Multiciclo

67 %
33 %
Information about Multiciclo

Published on August 5, 2007

Author: stefanosalvatori

Source: slideshare.net

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

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

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

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

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

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

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

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

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

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?

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

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

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

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

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

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

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)

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 = suma Transició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

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

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

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)

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

Instrucciones immediatas

no 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

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 Memoria Principal Unidad de Ejecución Memoria Control CPU ADD SUB AND DATA . . . Programa y datos De usuario AND microsecuencia e.d., Fetch Calc Dir. Operando Fetch Operando(s) Cálculo Salva salida(s) Una de estas es Mapeada con una Sección de estas

Diagrama implementación multiciclo Referencia texto guía

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

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

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 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 2 3 4 5 4 CPI por tipo 10% 20% 10% 20% 40% Frecuencia 0.6 Branch 0.2 Jump 1.6 ALU 0.4 Store 1 Load CPI * freq. Tipo de instrucción

Add a comment

Related presentations

Related pages

Multiciclo Bike - Foursquare

Multiciclo Bike. Brasil. Get directions. See More. Brazil » Paraná » Curitiba » Curitiba » Is this your business? Claim it now. Make sure your ...
Read more

einschaltverhältnis vielperiodensteuerung - Spanisch ...

Das Sprachangebot für Deutsch-Spanisch: Wörterbuch mit Übersetzungen, Flexionstabellen und Audio, interaktivem Forum und Trainer für flexibles Lernen.
Read more

multiciclo - Picture of Disney's Boardwalk, Orlando ...

Disney's Boardwalk, Orlando Picture: multiciclo - Check out TripAdvisor members' 50,406 candid photos and videos of Disney's Boardwalk
Read more

MIPS 32 bits multiciclo Clocks - YouTube

Testando o clock de uma implementação d0 mips multiciclo 32 bits da UNB, sintetizado numa DE2-70.
Read more

Photos at Multiciclo Bike - foursquare.com

Multiciclo Bike. Bike Shop. Save. Share. Tips; Photos 2; Multiciclo Bike. 2 Photos. Douglas. July 29, 2014. Thamires B. March 2, 2013. About; Blog ...
Read more

GitHub - caiopo/mips-multiciclo: Mips versão multiciclo ...

mips-multiciclo - Mips versão multiciclo feito para a disciplina de Sistemas Digitais (INE5406) da UFSC no semestre 2015/2.
Read more

A melhor opção Multiciclo - YouTube

Want to watch this again later? Sign in to add this video to a playlist. Multiciclo sistema de ajuda mutua que funciona. Para se cadastrar : www ...
Read more

Soluciones a los ejercicios multiciclo del Patterson.pdf ...

View Notes - Soluciones a los ejercicios multiciclo del Patterson.pdf from SEñALES 1 at Universidad de las Palmas de Gran Canaria. Soluciones a los
Read more

Academia.edu - Share research

Academia.edu is a place to share and follow research. Log In; Sign Up; more ; Job Board; About; Press; Blog; People; Papers; Terms; ... Multiciclo. 2 ...
Read more