Departamento de Ingeniería de Sistemas Universidad de Antioquia

Slides:



Advertisements
Presentaciones similares
Arquitectura RISC & CISC y DSP
Advertisements

Procesadores Superescalares
El modelo de Von Neumann
Arquitectura de Computadores I
Diseño de la ruta de datos monociclo para la arquitectura MIPS
UNIVERSIDAD DEL VALLE DE MEXICO CAMPUS CHAPULTEPEC
Estructuras segmentadas
Arquitectura de Computadores I
Arquitectura de Computadores I PIPELINING. Pipelining Un pipeline es una serie de etapas, en donde en cada etapa se realiza una porción de una tarea.
ARQUITECTURA DE COMPUTADORES - VON NEUMANN MODEL
Hazards.
Predicción de saltos.
Departamento de Ingeniería de Sistemas Universidad de Antioquia
Departamento de Ingeniería de Sistemas Universidad de Antioquia
Departamento de Ingeniería de Sistemas Universidad de Antioquia
Arquitectura de Computadores
Pipelines: Riesgos.
El procesador: la ruta de datos y el control (II Parte)
EL Sistemas Digitales Ing. José Alberto Díaz García Escuela de Ingeniería Electrónica Arquitectura Segmentada Pipeline (Segmentación)
EMISION MULTIPLE DE INSTRUCCIONES
Mejoras a las Máquinas Von Neumann
Composición Interna de un Procesador
Este obra se publica bajo unalicencia de Creative Commons Reconocimiento- NoComercial-CompartirIgual 3.0 España.licencia de Creative Commons Reconocimiento-
CLASE 11.
Microcomputadores Prof : Tatiana Marín R.. Sistema basado en microprocesador de 8 bits.
ISA (Instruction Set Architecture)
PLANIFICACIÓN DINÁMICA DE INSTRUCCIONES
Unidad 2: Organización del CPU
Este obra se publica bajo unalicencia de Creative Commons Reconocimiento- NoComercial-CompartirIgual 3.0 España.licencia de Creative Commons Reconocimiento-
(CC) , José M. Foces-Morán.
Unidad 2: Segmentación 2.7. Dependencias de Datos Docente: Ing. José Díaz Chow.
P(C) = m * nMAXIMO GRADO DE PARALELISMO WSBS ha sido llamado el procesamiento en serie de bits, ya que se procesa un bit por vez (n = m = 1). Es el procesamiento.
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
Unidad 2: Segmentación Dependencias de Control Docente: ing. José Díaz Chow.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 18 La mayor parte del contenido de estas láminas, ha sido extraído del libro Computer Organization and.
Memoria Cachés. Universidad de SonoraArquitectura de Computadoras2 Introducción Caché es el nivel de memoria situada entre el procesador y la memoria.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.
Scheduling dinámico Algoritmo de Tomasulo.
Funcionamiento de la CPU
Organización del Computador I Verano Excepciones Basado en el capítulo 6 del libro de Patterson y Hennessy Verano 2004Profesora Borensztejn.
Unidad 2: Segmentación Excepciones en la Segmentación Docente: Ing. José Díaz Chow ARQUITECTURA DE MÁQUINAS COMPUTADORAS III.
Diseño de la Unidad de Control Multiciclo: Microprogramación
Arquitectura de Von Neumann
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11.
Organización del Computador I Verano Procesador Segmentado Basado en el capítulo 6 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
CLASE 13.
Sistemas Operativos Avanzados
El procesador Diseño del control.
Cap. 6: Pipelining. Encauzamiento de procesadores
Diseño del procesador uniciclo
CLASE 14.
Sánchez Manjarrez Silvana Ing. Daniel Domínguez C. México, D.F. a 13 de septiembre del 2006 Arquitectura de Computadoras Arquitecturas CISC Y RISC Campus.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 20 La mayor parte del contenido de estas láminas, ha sido extraído del libro Computer Organization and.
Rendimiento de la CPU y sus factores
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 14 La mayor parte del contenido de estas láminas, ha sido extraído del libro Computer Organization and.
Organización del Computador I Verano Control Multiciclo Basado en el capítulo 5 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
Principio unidad 1.
Organización del Computador I Verano Aritmética (2 de 3) Basado en el capítulo 4 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
ARQUITECTURA DE COMPUTADORES
Arquitecturas de Computadoras Capitulo 2 Aritmética de enteros.
Arquitectura de Computadoras (Taller) Semestre II de 2008.
Pipeline: Peligros de datos
El procesador Diseño del control.
Pipelining Datapath y control.
Pipelining Peligros (hazards).
Pipelining Introducción.
Organización del Computador
8. Diseño del Procesador Fundamentos de los Computadores
El procesador Datapath y control.
Transcripción de la presentación:

Departamento de Ingeniería de Sistemas Universidad de Antioquia 2010-1 ISI374 – Arquitectura de Computadores Clase 14: Repaso (Diseño del microprocesador, segmentación) Departamento de Ingeniería de Sistemas Universidad de Antioquia 2010-1

La CPU en el modelo de von Neumann Procesador (CPU) Ruta de datos (datapath) Porción del procesador que corresponde al HW necesario para ejecutar las operaciones que él demanda Unidad de control Porción del procesador (también en HW) que le indica al datapath lo que debe hacer

Implementación básica MIPS Subconjunto de la arquitectura MIPS (suficiente para ilustrar los principios que orientan el diseño de un datapath y una unidad de control para cualquiera otra ISA) Instrucciones de acceso a memoria Load word, lw Store word, sw Instrucciones aritmético-lógicas Suma, add Resta, sub AND lógica, and OR lógica, or Set on less than, slt Instrucciones de salto Branch if equal, beq Jump, j

Diseño del procesador monociclo Cinco pasos para diseñar un procesador: Analizar la arquitectura del conjunto de instrucciones (ISA) Para conocer los requerimientos del datapath Establecer los componentes del datapath y elegir el esquema de reloj Ensamblar el datapath satisfaciendo los requerimientos Analizar la implementación de las instrucciones para determinar las señales de control que tendrán efecto sobre el flujo de datos Construir la lógica de control

Datapath con la unidad de control

Control de la ALU Las líneas de control de la ALU se pueden generar usando una pequeña unidad de control (ALU control) que tiene como entradas el campo funct de 6 bits de la instrucción y un campo de control de 2 bits al que llamaremos ALUop Los valores de ALUop se generan en la unidad de control principal El uso de varios niveles de control permite reducir el tamaño de la unidad de control principal (potencialmente incrementando su velocidad) opcode ALUOp Operación funct Función ALU Control ALU lw 00 load word XXXXXX add 0010 sw store word beq 01 branch equal subtract 0110 Tipo R 10 100000 100010 AND 100100 0000 OR 100101 0001 set-on-less-than 101010 0111

Control de la ALU Tabla de verdad para las líneas de control de la ALU (Operation), cuyas entradas son ALUop y el campo funct Una posible implementación:

Función de control para el procesador MIPS monociclo La función de control se puede definir mediante una tabla de verdad Las salidas son las líneas de control y las entradas son el campo opcode de la instrucción

Datapath y unidad de control con instrucción jump

Desventajas del procesador monociclo El ciclo de reloj debe contener la instrucción más lenta Muy problemático si las instrucciones fueran más complejas (Ej: punto flotante) Muchos tipos de instrucciones soportarían un ciclo de reloj inferior Viola el principio de diseño “Hacer el caso común más rápido” El costo de la implementación hardware puede ser alto porque muchas unidades funcionales tienen que replicarse (debido a que la misma unidad no puede usarse más de una vez en el mismo ciclo de reloj) Sin embargo, es un diseño simple y fácil de comprender Soluciones alternativas: Reducir el ciclo de reloj y hacer que cada instrucción se ejecute en varios ciclos Procesador multi-ciclo Solapar la ejecución de varias instrucciones elevando la utilización del hardware y el rendimiento Segmentación (pipelining) Buscar y ejecutar varias instrucciones a la vez Procesadores superescalares

Segmentación: analogía con una lavandería La segmentación no reduce la latencia de una tarea, sino que eleva el throughput de un proceso completo Varias tareas operan simultáneamente usando recursos diferentes La rata del pipeline está limitada por la etapa más lenta Etapas desequilibradas del pipeline reducen el speedup Speedup potencial: número de etapas del pipe El speedup se reduce porque hay que llenar (fill) y vaciar (flush) el pipeline 6 PM 7 8 9 10 Time 30 T a s k O r d e B C D A

Pasos en la ejecución de una instrucción MIPS IF: (Instruction Fetch) Búsqueda de la instrucción, actualización del PC ID: (Instruction Decode) Decodificación de la instrucción, lectura del banco de registros EX: (Execution) Instrucción de acceso a memoria: Cálculo de la dirección Instrucción aritmético-lógica: Cálculo de la operación MEM: (Memory) Load: Lectura de la memoria de datos Store: Escritura de la memoria de datos WB: (Write Back) Escritura del resultado en el banco de registros

Procesador MIPS segmentado Tendremos cinco etapas, una por cada paso de ejecución de una instrucción Cada etapa del pipeline se completa en un ciclo de reloj Cada instrucción toma el mismo número de etapas (5) para ejecutarse, aunque algunas de ellas estén inactivas algunas veces Mejora el throughput aunque la latencia de cada instrucción no se reduce Time cc 1 cc 2 cc 3 cc 4 cc 5 cc 6 cc 7 cc 8 cc 9 Una vez el pipeline está lleno, se finaliza una instrucción cada ciclo (CPI = 1) IF ID EX MEM WB Instr. i Instr. i+1 Instr. i+2 Instr. i+3 Instr. i+4

Representación gráfica del pipeline Útil para: Saber cuántos ciclos de reloj toma la ejecución de un código Saber qué hace una unidad funcional en un ciclo determinado Si ocurre un riesgo (hazard), saber porqué y saber cómo resolverlo

Riesgos (Hazards) El principio de la segmentación es simple pero su implementación introduce una serie de problemas Riesgos (Hazards) Situaciones en las cuales la próxima instrucción no puede ejecutarse en el siguiente ciclo de reloj Pueden obligar a detener (stall) el pipeline, evitando que se logre el speedup ideal Los riesgos se pueden resolver esperando, pero será el controlador del pipeline quien los detecte y resuelva Tipos: Riesgos estructurales (Structural hazards) Riesgos de datos (Data hazards) Riesgos de control (Control hazards)

Riesgos estructurales ¿Qué sucede con los accesos al banco de registros? Para resolver el riesgo estructural al momento de acceder al banco de registros, las escrituras se realizan en la primera mitad del ciclo, y las lecturas en la segunda add $t0, $t1, $t2 Instr. 1 Instr. 2 add $s2, $t0, $s3 Clock Flanco de reloj que controla la escritura de resultados en el banco de registros Flanco de reloj que controla la lectura de operandos del banco de registros

Riesgos de datos Considere la ejecución segmentada de la siguiente secuencia de instrucciones: add $t0, $t1, $t2 sub $t3, $t0, $t4 and $t5, $t0, $t6 or $t7, $t0, $t8 nor $t9, $t0, $t9 Las dependencias de datos hacia atrás en el tiempo ocasionan riesgos de datos

Adelantamiento (Forwarding, bypassing, short-circuiting) Técnica hardware para solucionar algunos riesgos de datos No es necesario esperar a que una instrucción se ejecute por completo para resolver el riesgo de datos Es posible usar un resultado tan pronto como se calcula, sin tener que esperar a que sea escrito en el banco de registros Requiere conexiones extras en el datapath Los caminos de adelantamiento son válidos si la etapa de destino es posterior en el tiempo a la etapa de origen

Adelantamiento (Forwarding, bypassing, short-circuiting) Ejemplo 1: add $t0, $t1, $t2 sub $t3, $t0, $t4 and $t5, $t0, $t6 or $t7, $t0, $t8 nor $t9, $t0, $t9

Adelantamiento (Forwarding, bypassing, short-circuiting) Ejemplo 2: add $t0, $t1, $t2 lw $t3, 0($t0) sw $t3, 12($t0)

Adelantamiento (Forwarding, bypassing, short-circuiting) No todos los riesgos de datos pueden resolverse mediante adelantamiento Riesgo de datos asociado con el uso de LOAD Pipeline sin detección de riesgo ld $t1, 0(t0) sub $t3, $t1, $t2 and $t4, $t1, $t5 or $t6, $t1, $t7 Pipeline con detección de riesgo or $t6, $t1,$t7 No es posible el adelantamiento

Reordenamiento de código para evitar paradas del pipe Ejemplo: Considere un segmento de código MIPS. Determine los riesgos y reordene el código para evitar paradas del pipeline lw $t1, 0($t0) lw $t2, 4($t0) add $t3, $t1, $t2 sw $t3, 12($t0) lw $t4, 8($t0) add $t5, $t1, $t4 sw $t5, 16($t0) lw $t1, 0($t0) lw $t2, 4($t0) add $t3, $t1, $t2 sw $t3, 12($t0) lw $t4, 8($t0) add $t5, $t1, $t4 sw $t5, 16($t0) lw $t1, 0($t0) lw $t2, 4($t0) lw $t4, 8($t0) add $t3, $t1, $t2 sw $t3, 12($t0) add $t5, $t1, $t4 sw $t5, 16($t0) stall stall 13 ciclos 11 ciclos

Riesgos de control beq instr. 1 instr. 2 instr. 3 instr. 4 17% de las instrucciones MIPS ejecutadas son saltos (bne, beq) (SPECint2006) Los saltos determinan el flujo de programa La siguiente instrucción a ejecutar depende del resultado del salto beq instr. 1 instr. 2 instr. 3 instr. 4

Riesgos de control Solución inicial: Stall on branch Detenerse hasta que la decisión de salto sea tomada para buscar la siguiente instrucción Insertar burbujas (instrucciones nop, No Operation, aquellas que no hacen nada y sólo ocupan tiempo) para retrasar la búsqueda de la siguiente instrucción durante 2 ciclos En nuestro caso, los saltos toman 3 ciclos de reloj cada uno (el comparador está en la etapa EX)

Riesgos de control Optimización #1 Insertar un comparador para saltos en la segunda etapa (ID) Tan pronto como se decodifica la instrucción de salto, tomar una decisión y ajustar el nuevo valor del PC Como el salto se completa en la segunda etapa, sólo se introduce una burbuja Los saltos toman 2 ciclos de reloj cada uno (el comparador está en la etapa ID) Esto significa que los saltos están inactivos en las etapas 3, 4 y 5 (EX, MEM y WB, respectivamente)

Riesgos de control Optimización #2. Redefinición de los saltos Antes: Si el salto se toma, ninguna de las instrucciones que siguen al salto se ejecutan por accidente Ahora: Se tome o no el salto, la instrucción inmediatamente posterior al salto se ejecuta (y se denomina branch delay slot, hueco de salto diferido o retardado) El término delayed branch (salto diferido o retardado) significa que la instrucción que sigue al salto siempre se ejecuta Esta optimización es la que emplea MIPS

Riesgos de control Comportamiento del salto diferido (delayed branch) Es trabajo del compilador lograr que la instrucción que ocupa el hueco diferido sea válida y útil

Riesgos de control Branch delay slot (Comentarios) Como la instrucción que sigue al salto siempre se ejecuta: Escenario del peor caso: insertar una burbuja en el hueco de salto retardado porque no hay otra alternativa Escenario del caso más favorable: es posible encontrar una instrucción anterior al salto que pueda insertarse en el hueco de salto diferido sin que el flujo de programa se vea afectado El reordenamiento de instrucciones es una práctica común para acelerar programas El compilador debe ser muy hábil para encontrar las instrucciones adecuadas Normalmente el 50% de las veces se hallan estas instrucciones

Riesgos de control Gestión del hueco de salto diferido por parte del compilador En las dos últimas opciones, la ejecución de la instrucción que se mueve no debe producir problemas si el salto va en la dirección contraria a la esperada add $s1, $s2, $s3 beq $s2, $zero, LBL . . . LBL: LBL: sub $t4, $t5, $t6 . . . add $s1, $s2, $s3 beq $s1, $zero, LBL add $s1, $s2, $s3 beq $s1, $zero, LBL or $t1, $t2, $t3 . . . LBL: sub $t4, $t5, $t6 hueco de salto hueco de salto hueco de salto se transforma en se transforma en se transforma en beq $s2, $zero, LBL . . . LBL: LBL: sub $t4, $t5, $t6 LBLx: . . . add $s1, $s2, $s3 beq $s1, $zero, LBLx add $s1, $s2, $s3 beq $s1, $zero, LBL . . . LBL: sub $t4, $t5, $t6 add $s1, $s2, $s3 or $t1, $t2, $t3 sub $t4, $t5, $t6

Lecturas recomendadas Computer organization and design. The hardware/software Interface, 3rd ed., Chapter 5. D. Patterson & J. Hennessy. Morgan Kaufmann Publishers