Your SlideShare is downloading. ×
0
CPU Multiciclo Cecilia Hernández
Desventajas de implementación uniciclo <ul><li>Todas las instrucciones ocupan el mismo tiempo aunque </li></ul><ul><ul><li...
Una alternativa a uniciclo <ul><li>Tener un ciclo más corto y hacer que instrucciones más largas ocupen más de un ciclo pa...
Implementación multiciclo <ul><li>Basado en la descomposición de los siguientes pasos en la ejecución de instrucciones </l...
Búsqueda de instrucción <ul><li>Dado que los campos de la instrucción son necesitados en diferentes ciclos, la dirección d...
Decodificación de instrucciones y lectura de registros fuentes <ul><li>Decodificación de instrucciones: envia código de op...
Ejecución en ALU <ul><li>Si la instrucción es tipo-R </li></ul><ul><ul><li>ALUout <- A op B </li></ul></ul><ul><li>Si la i...
Acceso a memoria o escritura a registro <ul><li>Un nuevo registro se necesita para almacenar el dato extraído de memoria n...
Término de Load <ul><li>Escribir MDR en banco de registros </li></ul><ul><ul><li>REG[IR[20:16]] <- MDR </li></ul></ul>
Recursos <ul><li>No se hace distinción entre memoria de instrucciones y memoria de datos </li></ul><ul><li>Sólo se una ALU...
Multiciclo MIPS <ul><li>Extraído de Libro guía </li></ul><ul><li>Qué diferencias observa respecto al uniciclo? </li></ul>
Control para multiciclo <ul><li>Más complejo que para uniciclo </li></ul><ul><ul><li>Se necesitan definir señales de contr...
Cuáles son las señales de control necesarias <ul><li>Analisis para cada etapa </li></ul><ul><li>Señales necesarias para </...
Señales de control en multiciclo en MIPS
Control completo multiciclo en MIPS
Búsqueda de instrucción <ul><li>Se necesita leer la memoria </li></ul><ul><ul><li>Para elegir dirección de entrada (multip...
Búsqueda de instrucción (Incremento de PC) <ul><li>PCSource = 00, para actualizar PC con lo que viene de la ALU </li></ul>...
Decodificación de instrucciones y búsqueda de operandos <ul><li>Decodificación de la instrucción </li></ul><ul><ul><li>Se ...
Concepto de estado <ul><li>Durante pasos 1 y 2, todas las instrucciones hacen las mismas cosas </li></ul><ul><li>En paso 3...
Los dos primeros estados <ul><li>Dado que el flujo de datos y señales de control son los mismos para todas las instruccion...
Notación Búsqueda de instrucción (estado 0) Memread ALUSrcA = 0 IorD = 0 Irwrite ALUsrcB = 01 ALU = suma Pcwrite Pcsource ...
Qué viene después de (estado 1)? <ul><li>Estado 3 dependiente de transición determinada por código de operación </li></ul>...
Cálculo de dirección de memoria <ul><li>Setear fuentes a la ALU </li></ul><ul><ul><li>Fuente 1: ALUSrcA= 1, para seleccion...
Cálculo de dirección de memoria ALUSrcA =1  ALUSrcB = 10 ALU = Suma Estado 2 Estado  5 Estado 3 Opcode “load ” Opcode “sto...
Estado 5, store <ul><li>Las señales de control son: </li></ul><ul><ul><li>IorD = 1, para indicar que lo que se escribirá e...
Implementación multiciclo <ul><li>Instrucciones immediatas </li></ul><ul><li>no están dibujadas aquí </li></ul><ul><li>Dib...
Implementación cableada <ul><li>Caso implemetación uniciclo: </li></ul><ul><ul><li>Entrada (código de operación) </li></ul...
Ejemplo PLA
Interpretación de macroinstrucciones Memoria Principal Unidad de Ejecución Memoria Control CPU ADD SUB AND DATA . . . Prog...
Diagrama implementación multiciclo <ul><li>Referencia texto guía </li></ul>
Qué es lo real? <ul><li>Implementación de procesadores es un proceso complejo </li></ul><ul><ul><li>Mayoría de procesadore...
Algunas comparaciones <ul><li>Algunas comparaciones generales </li></ul><ul><ul><li>Procesadores multiciclo, instrucciones...
Desempeño de procesador multiciclo CPI promedio = 3.8 CPI uniciclo = 1, pero período de reloj es aprox. 5 veces más lento ...
Upcoming SlideShare
Loading in...5
×

Multiciclo

5,189

Published on

Published in: Business, Technology
1 Comment
1 Like
Statistics
Notes
  • muy buen trabajo, gracias
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
5,189
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
155
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Multiciclo"

  1. 1. CPU Multiciclo Cecilia Hernández
  2. 2. Desventajas de implementación uniciclo <ul><li>Todas las instrucciones ocupan el mismo tiempo aunque </li></ul><ul><ul><li>Algunas instrucciones son más largas que otras </li></ul></ul><ul><ul><ul><li>Ejemplo, load es más largo que el add, dado que debe accesar la memoria </li></ul></ul></ul><ul><ul><li>Requiere que el ciclo de reloj sea más largo para poder ejecutar instrucción más larga </li></ul></ul><ul><li>Algunas unidades combinacionales deben ser replicadas ya que son usadas en el mismo ciclo </li></ul><ul><ul><li>Ejemplo, ALU es usada para cálculo de dirección de un branch y para calcular expresión de branch </li></ul></ul><ul><ul><ul><li>No importa tanto, porque cálculo de dirección sólo requiere sumador </li></ul></ul></ul><ul><ul><ul><li>Sin embargo, esto también se necesitará en pipeline </li></ul></ul></ul>
  3. 3. Una alternativa a uniciclo <ul><li>Tener un ciclo más corto y hacer que instrucciones más largas ocupen más de un ciclo para ejecutarse </li></ul><ul><li>El ciclo de reloj más corto está determinado por el mayor retardo de una unidad funcional individual (memoria, ALU, etc) </li></ul><ul><li>Posibilidad de reusar los mismos recursos si son utilizados en diferentes ciclos </li></ul><ul><li>Dado que se necesita guardar información entre ciclos se necesita agregar algunos “registros” no visibles a la ISA </li></ul><ul><li>No todas las instrucciones requerirán el mismo número de ciclos </li></ul>
  4. 4. Implementación multiciclo <ul><li>Basado en la descomposición de los siguientes pasos en la ejecución de instrucciones </li></ul><ul><ul><li>Ciclo1: Búsqueda de instrucción e incremento de PC </li></ul></ul><ul><ul><li>Ciclo2: Decodificación de instrucción, lectura de registros fuentes y cálculo de dirección de branch </li></ul></ul><ul><ul><li>Ciclo3: Ejecución en ALU o cálculo de dirección para load/store, seteo de PC si branch es exitoso </li></ul></ul><ul><ul><li>Ciclo4: Acceso a la memoria (load/store) o escritura en registro </li></ul></ul><ul><ul><li>Ciclo5: Carga de registro para caso de load </li></ul></ul><ul><li>Según descripción anterior loads toman 5 ciclos, branches 3 y las demás 4 </li></ul>
  5. 5. Búsqueda de instrucción <ul><li>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) </li></ul><ul><li>Las acciones a nivel de transferencia de registros durante este ciclo son: </li></ul><ul><ul><li>IR <- MEM[PC] </li></ul></ul><ul><ul><li>PC <- PC + 4 </li></ul></ul><ul><li>Recursos requeridos </li></ul><ul><ul><li>Memoria ( No necesariamente diferenciada entre instrucciones y datos, aunque en pipeline si se necesitará) </li></ul></ul><ul><ul><li>Sumador para incrementar PC </li></ul></ul><ul><ul><li>IR </li></ul></ul>
  6. 6. Decodificación de instrucciones y lectura de registros fuentes <ul><li>Decodificación de instrucciones: envia código de operación a unidad de control </li></ul><ul><li>Realizar operaciones en forma optimista que no produzcan daños </li></ul><ul><ul><li>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 </li></ul></ul><ul><ul><ul><li>A <- REG[IR[25:21]] lee rs </li></ul></ul></ul><ul><ul><ul><li>B <- REG[IR[20:16]] lee rt </li></ul></ul></ul><ul><ul><li>Calcular la dirección de branch por si acaso </li></ul></ul><ul><ul><ul><li>ALUout <- PC + (sign-ext(IR[15:0])||00 </li></ul></ul></ul><ul><ul><ul><ul><li>ALUout no es visible a la ISA </li></ul></ul></ul></ul><ul><li>Nuevos recursos </li></ul><ul><ul><li>A, B, ALUout </li></ul></ul>
  7. 7. Ejecución en ALU <ul><li>Si la instrucción es tipo-R </li></ul><ul><ul><li>ALUout <- A op B </li></ul></ul><ul><li>Si la instrucción es de tipo-I </li></ul><ul><ul><li>ALUout <- A op sign-ext(IR[15:0]) </li></ul></ul><ul><li>Si la instrucción es load/store </li></ul><ul><ul><li>ALUout <- A + sign-ext(IR[15:0]) </li></ul></ul><ul><li>Si la instrucción es un branch </li></ul><ul><ul><li>If (A==B) then PC <- ALUout (obtenida en ciclo anterior) </li></ul></ul><ul><li>No nuevos recursos </li></ul>
  8. 8. Acceso a memoria o escritura a registro <ul><li>Un nuevo registro se necesita para almacenar el dato extraído de memoria no visible a la ISA MDR (Memory Data Register) </li></ul><ul><li>Si load </li></ul><ul><ul><li>MDR <- MEM[ALUout] </li></ul></ul><ul><li>Si store </li></ul><ul><ul><li>MEM[ALUout] <- B </li></ul></ul><ul><li>Si aritmética </li></ul><ul><ul><li>REG[IR[15:11]] <- ALUout </li></ul></ul><ul><li>Nuevos recursos </li></ul><ul><ul><li>MDR </li></ul></ul>
  9. 9. Término de Load <ul><li>Escribir MDR en banco de registros </li></ul><ul><ul><li>REG[IR[20:16]] <- MDR </li></ul></ul>
  10. 10. Recursos <ul><li>No se hace distinción entre memoria de instrucciones y memoria de datos </li></ul><ul><li>Sólo se una ALU </li></ul><ul><li>Se requieren algunos registros invisibles a la ISA (IR, A, B, ALUout, MDR) y multiplexores </li></ul>
  11. 11. Multiciclo MIPS <ul><li>Extraído de Libro guía </li></ul><ul><li>Qué diferencias observa respecto al uniciclo? </li></ul>
  12. 12. Control para multiciclo <ul><li>Más complejo que para uniciclo </li></ul><ul><ul><li>Se necesitan definir señales de control para cada ciclo </li></ul></ul><ul><ul><li>Se necesita saber en que etapa está instrucción </li></ul></ul><ul><li>Dos métodos para diseñar la unidad de control </li></ul><ul><ul><li>Máquina de estados finitas y control cableado (como extensión del uniciclo) </li></ul></ul><ul><ul><li>Microprogramación </li></ul></ul><ul><ul><ul><li>Representación simbólica de control en la forma de instrucciones, llamadas microinstrucciones ejecutadas en una micromáquina </li></ul></ul></ul><ul><ul><ul><ul><li>Puede usar PLAs o ROM para microinstrucciones </li></ul></ul></ul></ul>
  13. 13. Cuáles son las señales de control necesarias <ul><li>Analisis para cada etapa </li></ul><ul><li>Señales necesarias para </li></ul><ul><ul><li>Lectura/escritura a memoria </li></ul></ul><ul><ul><li>Lectura/escritura en registros </li></ul></ul><ul><ul><li>Control de varios multiplexores </li></ul></ul><ul><ul><li>Control de ALU </li></ul></ul>
  14. 14. Señales de control en multiciclo en MIPS
  15. 15. Control completo multiciclo en MIPS
  16. 16. Búsqueda de instrucción <ul><li>Se necesita leer la memoria </li></ul><ul><ul><li>Para elegir dirección de entrada (multiplexor con señal IorD) </li></ul></ul><ul><ul><ul><li>IorD = 0, dirección de memoria proviene de PC para extraer instrucción </li></ul></ul></ul><ul><ul><li>Setear señal MemRead para leer de memoria </li></ul></ul><ul><ul><li>Setear señal IRwrite para escribir registro IR </li></ul></ul><ul><li>Establecer los operandos fuentes para la ALU </li></ul><ul><ul><li>Fuente 1: ALUSrcA = 0, A debe contener lo que viene por PC </li></ul></ul><ul><ul><li>Fuente 2: ALUSrcB = 01, B debe contener 4 para que ALU realice suma de PC + 4 </li></ul></ul><ul><li>Establecer control de ALU para seleccionar suma </li></ul>
  17. 17. Búsqueda de instrucción (Incremento de PC) <ul><li>PCSource = 00, para actualizar PC con lo que viene de la ALU </li></ul><ul><li>Setear PCWrite, para escribir registro PC </li></ul><ul><ul><li>Caso de branch exitoso se ve más adelante </li></ul></ul>
  18. 18. Decodificación de instrucciones y búsqueda de operandos <ul><li>Decodificación de la instrucción </li></ul><ul><ul><li>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 </li></ul></ul><ul><li>Leer registros A y B </li></ul><ul><ul><li>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. </li></ul></ul><ul><li>Cálculo de dirección en branches. Selección de entradas a la ALU </li></ul><ul><ul><li>Fuente1: ALUSrcA=0, para seleccionar entrada a ALU desde PC </li></ul></ul><ul><ul><li>Fuente2: ALUSrcB=11, para seleccionar, Immediato de IR, extendido en signo, desplazado en 2 (o multiplicado por 4) </li></ul></ul><ul><ul><li>Setear ALU para suma </li></ul></ul>
  19. 19. Concepto de estado <ul><li>Durante pasos 1 y 2, todas las instrucciones hacen las mismas cosas </li></ul><ul><li>En paso 3, el código de operación debe determinar diferentes controles para la ejecución de las instrucciones correspondientes </li></ul><ul><ul><li>Señales de control son distintas para load, store, branch, add, etc </li></ul></ul><ul><ul><li>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 </li></ul></ul><ul><li>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 </li></ul><ul><ul><li>(estado actual, código de operación) -> (próximo estado) </li></ul></ul><ul><ul><li>Esto representa el concepto de Máquina de estado finito </li></ul></ul>
  20. 20. Los dos primeros estados <ul><li>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 </li></ul><ul><li>Dado que todas las operaciones en el próximo estado son siempre el mismo, tenemos transición de estado 0 a 1 </li></ul><ul><ul><li>(estado 0) -> (estado 1) </li></ul></ul>
  21. 21. 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)
  22. 22. Qué viene después de (estado 1)? <ul><li>Estado 3 dependiente de transición determinada por código de operación </li></ul>Estado 0 Estado 1 Comenzar Opcode “Mem op.” Opcode “R-R.” Opcode “branch.” Opcode “jump.” Estado 2 Opcode = etc
  23. 23. Cálculo de dirección de memoria <ul><li>Setear fuentes a la ALU </li></ul><ul><ul><li>Fuente 1: ALUSrcA= 1, para seleccionar entrada de banco de registros </li></ul></ul><ul><ul><li>Fuente 2: ALUSrcB = 10, para seleccionar Immediato extendido en signo </li></ul></ul><ul><li>Setear ALU para suma </li></ul><ul><li>Transición de estado 2 </li></ul><ul><ul><li>Si instrucción es “load”, transición a estado 3 </li></ul></ul><ul><ul><li>Si instrucción es “store”, transición es a estado 5 </li></ul></ul>
  24. 24. Cálculo de dirección de memoria ALUSrcA =1 ALUSrcB = 10 ALU = Suma Estado 2 Estado 5 Estado 3 Opcode “load ” Opcode “store ”
  25. 25. Estado 5, store <ul><li>Las señales de control son: </li></ul><ul><ul><li>IorD = 1, para indicar que lo que se escribirá en memoria viene de ALUout (indica dirección) </li></ul></ul><ul><ul><li>Setear señal de control MemWrite para indicar que se escribirá en memoria </li></ul></ul><ul><ul><li>Notar que lo que se escribe en memoria viene de registro B </li></ul></ul><ul><li>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 </li></ul><ul><ul><li>(estado 5) -> (estado 0) </li></ul></ul>
  26. 26. Implementación multiciclo <ul><li>Instrucciones immediatas </li></ul><ul><li>no están dibujadas aquí </li></ul><ul><li>Dibujo tomado de libro guía </li></ul>
  27. 27. Implementación cableada <ul><li>Caso implemetación uniciclo: </li></ul><ul><ul><li>Entrada (código de operación) </li></ul></ul><ul><ul><ul><li>Se construye circuito combinacional mediante PLA (Programming Logic Array) </li></ul></ul></ul><ul><ul><ul><ul><li>Señales de salida a la sección de datos </li></ul></ul></ul></ul><ul><ul><li>Entrada (código operación más bits func) </li></ul></ul><ul><ul><ul><li>Determinan control de ALU </li></ul></ul></ul><ul><li>Caso implementación multiciclo </li></ul><ul><ul><li>Se necesita implementar máquina de estados finitos </li></ul></ul><ul><ul><li>Entrada (Cód. Op. + estado actual + almacenamiento) </li></ul></ul><ul><ul><ul><li>Determina circuito combinacional (PLA) y genera señales de salida para sección de datos y próximo estado </li></ul></ul></ul><ul><ul><li>Entrada (Cod. Op. + bits func + estado actual) genera control para ALU </li></ul></ul>
  28. 28. Ejemplo PLA
  29. 29. 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
  30. 30. Diagrama implementación multiciclo <ul><li>Referencia texto guía </li></ul>
  31. 31. Qué es lo real? <ul><li>Implementación de procesadores es un proceso complejo </li></ul><ul><ul><li>Mayoría de procesadores actuales no usan multiciclo, sino pipelining (el que veremos pronto) </li></ul></ul><ul><ul><ul><li>Último procesador intel sin pipelining 80386 </li></ul></ul></ul><ul><ul><ul><li>Primer MIPS usa pipelining </li></ul></ul></ul><ul><ul><li>Complejidad de diseño de control concordante con el tipo de instrucciones soportadas por la arquitectura </li></ul></ul><ul><ul><ul><li>Sin embargo, principios similares a los discutidos aquí </li></ul></ul></ul><ul><ul><li>Procesadores modernos implementan control con cableado directo para instrucciones simples y microprogramación para instrucciones complejas </li></ul></ul>
  32. 32. Algunas comparaciones <ul><li>Algunas comparaciones generales </li></ul><ul><ul><li>Procesadores multiciclo, instrucciones ocupan un número de ciclos dependiendo de tipo de instrucción </li></ul></ul><ul><ul><li>Idea pipelining, ejecutar una instrucción por ciclo </li></ul></ul><ul><ul><li>Procesadores actuales usan técnicas avanzadas de pipelining </li></ul></ul><ul><ul><ul><li>Ejemplo:superescalares que permiten la ejecución de más de una instrucción por ciclo, replicando unidades funcionales </li></ul></ul></ul>
  33. 33. 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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×