#define MAX 1024 void escala_vect (float A[MAX], float B[MAX], float k) { int i; for (i=0; i < MAX; i++) B[i]=k*A[i]; }

Documentos relacionados
Arquitectura de Computadores Problemas (hoja 4). Curso

Arquitectura e Ingeniería de Computadores. Examen Parcial. 7/02/2012

Definición de prestaciones

3. SEGMENTACIÓN DEL CAUCE

Arquitectura de Computadoras Trabajo Práctico N 8 Pipeline de Instrucciones 1 Primer Cuatrimestre de 2016

Universidad Euskal Herriko del País Vasco Unibertsitatea Arquitectura de Computadores I Sistema de memoria 1

Arquitectura de Computadoras Trabajo Práctico N 7 Pipeline de Instrucciones Primer Cuatrimestre de 2010

Trabajo Práctico Número 6

Ejercicios de Paralelismo a Nivel de Instrucción

Arquitectura de Computadores Problemas (hoja 2). Curso

Arquitectura de Computadoras

Práctica 5 - Memoria Cache

Tutorías con Grupos Reducidos (TGR) Sesión 2: Paralelismo a Nivel de Instrucción

Ejercicios Jerarquía de Memoria

Organización lógica Identificación de bloque

TEORÍA (5 puntos) Puntuación: Desplazamiento

Jerarquía de memoria y memoria caché Ejercicios resueltos

ARQUITECTURA DE COMPUTADORES Problemas TEMA 4: Microprocesadores avanzados

2. SEGMENTACIÓN ENCAUZADA AVANZADA Y PARALELISMO DE INSTRUCCIONES: EJERCICIOS Y CUESTIONES

Arquitectura de Computadores I. Sistema de memoria 3 (Solución): Segmentación + Bancos

Tema 1: PROCESADORES SEGMENTADOS

Ejercicios de jerarquía de memoria

Tutorías con Grupos Reducidos (TGR) Parte 1: Evaluación de prestaciones

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Resolución de los Ejercicios de la Hoja 4

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

Departamento de Automática

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

Ejercicios del tema 5. Jerarquía de de Memoria

2. SEGMENTACIÓN ENCAUZADA AVANZADA Y PARALELISMO DE INSTRUCCIONES: EJERCICIOS Y CUESTIONES

Memoria. Otros temas sobre cachés

FUNDAMENTOS DE COMPUTADORES 18 de junio de Examen parcial del 2º cuatrimestre.

Aspectos avanzados de arquitectura de computadoras Pipeline. Facultad de Ingeniería - Universidad de la República Curso 2017

Trabajo Práctico Número 6 Arquitectura de Computadoras

202 PROBLEMAS DE ARQUITECTURA DE COMPUTADORES

Ejercicios de Arquitectura de Computadoras

Introducción a memorias cache

Procesadores segmentados. El DLX.

Práctica 5 - Memoria

Tema 6: Memoria virtual. Óscar David Robles Sánchez Sofía Bayona Beriso David Miraut Andrés Luis Rincón Córcoles

PRINCIPIOS GENERALES DE JERARQUÍA DE MEMORIA

MEMORIA EJERCICIO 1 EJERCICIO 2

Aspectos avanzados de arquitectura de computadoras Jerarquía de Memoria II. Facultad de Ingeniería - Universidad de la República Curso 2017

Organización de Computadoras. Clase 6

Paralelismo al nivel de instrucciones

int vector[100]; // en principio vector tiene al menos // cien elementos aunque pueda tener más... for (i=0; i<100; i++) vector[i] = vector[i] + 1;

Tema 5. Segmentación: conceptos básicos

Práctica 1 - Rendimiento *

Arquitectura de Computadoras

TEMA 3 PROCESADORES VECTORIALES

OBJETIVOS ALGUNAS CONSIDERACIONES SOBRE WINDLX

Autor: Longinos Recuero Bustos

UNIDAD TEM ATICA 3: ACELERACI ON DEL ACCESO A MEMORIA.

Soluciones a ejercicios de jerarquía de memoria

Introducción a la arquitectura de computadores

Estructura de Computadores. Problemas de Instrucciones y Direccionamientos

Repaso concepto de programa

3 - Arquitectura interna de un up

Arquitectura de Computadoras. Clase 4 Segmentación de Instrucciones

TEMA 4. ARQUITECTURA IA-64

CAPÍTULO 2 PROCESADORES SUPERESCALARES

Tema 2: Conceptos básicos. Escuela Politécnica Superior Ingeniería Informática Universidad Autónoma de Madrid

Estrategias de predicción dinámicas.

ARQUITECTURA DE COMPUTADORES. Práctica 8

ADDI R4,R0,#2 ADDI R1,R0,#40 LOOP: LW R2,0(R1) SUBI R3,R2,#1 MUL R2,R3,R2 DIV R2,R3,R4 SW 0(R1),R2 SUBI R1,R1,#4 BNEZ R1, LOOP ADDI R4,R0,#0

6. PROCESADORES SUPERESCALARES Y VLIW

Contenidos. Arquitectura de ordenadores (fundamentos teóricos) Elementos de un ordenador. Periféricos

HISTORIA DEL PIPELINE. Juan Antonio Romano Largo. Arquitectura de Computadores.

Estructura de Computadores Tema 1. Introducción a los computadores

EJERCICIOS DE MEMORIA:

Organización de computadoras. Clase 11. Universidad Nacional de Quilmes. Lic. Martínez Federico

TEMA 2: PARALELISMO INTERNO EN SISTEMAS COMPUTADORES SEGMENTACION

ARQUITECTURA DE COMPUTADORES. 2º INGENIERÍA INFORMÁTICA. Problemas de Gestión de Memoria.

Ejercicios del tema 4. El procesador

CPU MEMORIAS CACHE. Memorias caché. Memoria caché = memoria de tamaño pequeño y acceso rápido situada entre la CPU y la memoria principal.

Arquitectura del MIPS: Introducción

ORGANIZACIÓN Y ESTRUCTURA DE LA MEMORIA: CACHÉS Y MEMORIA VIRTUAL

Diseño de la jerarquía de memoria

Arquitectura de Computadores II Clase #5

Tratamiento de Excepciones en MIPS

Mapa de memoria. memoria CACHÉ

Arquitectura de Computadores

Arquitectura de Computadoras para Ingeniería

5. Procesador: camino de datos y control

Sección de procesamiento: El camino de datos

Unidad 5 Unidad central de proceso

Arquitectura del CPU. Organización del Computador 1 Verano 2016

Estructura de Computadores

Arquitecturas Paralelas Examen de Febrero 24 Enero 2005

Introducción. Universidad de Sonora Arquitectura de Computadoras 2

Capitulo 1 Fundamentos de Computadores - I.T.Telecomunicación - Segundo cuatrimestre. INTRODUCCION A LOS FUNDAMENTOS DE COMPUTADORES

Tema 4. Condiciones para el paralelismo: Dependencias

Práctica 4 - Microarquitectura del CPU

TEMA VI DISEÑO DEL PROCESADOR

Examen de Estructura de Computadores ( ) Solución teoría

Memoria Virtual. Ing. Jorge Castro-Godínez

Soluciones a los problemas impares. Tema 5. Memorias. Estructura de Computadores. I. T. Informática de Gestión / Sistemas

Diseño de un computador sencillo. Ejercicios

Optimizaciones avanzadas de memoria caché

Transcripción:

PROBLEMA 1 Memoria Cache (10 puntos) Supongamos un sistema con un procesador que lanza direcciones de 32 bits. Dispone de dos caches, una para instrucciones y otra para datos, de 8 KBytes cada una. La cache de datos está organizada en bloques de 32 bytes, correspondencia directa. Considera la función: #define MAX 1024 void escala_vect (float A[MAX], float B[MAX], float k) { int i; for (i=0; i < MAX; i++) B[i]=k*A[i]; Supondremos que el tipo de dato float ocupa 4 bytes, que los vectores A y B están contiguos en memoria principal a partir de la @ 0x7fff3380 (ver figura 1) y que las variables i y k se guardan en registros (no se almacenan en memoria principal). Considera 2 políticas distintas en la cache de datos: P1: escritura inmediata (write through) en acierto de escritura, no write allocate, no fetch en write miss (write around) en fallo de escritura. P2: escritura retardada (write-back) en acierto de escritura, y write allocate, fetch on write-miss (política convencional) en fallo en escritura. Teniendo en cuenta solamente los accesos de datos generados por la función escala_next(), calcula las tasas de fallos de datos. Supón que la cache de datos está inicialmente vacía. POLÍTICA TASA DE FALLOS BREVE EXPLICACIÓN / CUENTAS p1 p2

PROBLEMA 2 Estudio de un procesador segmentado (30 puntos) Considera un procesador en orden que ejecuta un repertorio de instrucciones como el subsparc visto en clase (arquitectura ld/st de 32 bits) con el añadido de instrucciones aritméticas complejas que requieren 2 ciclos de cálculo (alu). Las 6 etapas de la segmentación son las siguientes: E1: cache de isntrucciones: lectura de tag e isntrucción (B). E2: decodificación y control de dependencias (D); evaluación de condición y cálculo de @ de salto condicional (relativo al PC). Esta etapa y la anterior son las únicas en las que puede bloquearse una instrucción. E3: lectura de banco de registros o de la red de cortocircuitos (L). E4: ALU(A); cálculo de @ de salto incondicional; cálculo de @ de memoria (@). E5: transparente para operaciones sencillas de ALU; ALU 2 para operaciones complejas de ALU (A2); lectura de cache de datos y comprobación de acierto/fallo (M). En caso de store, la escritura es en el ciclo siguiente. E6: escritura en banco de registros (ciclo completo). Escritura en cache de datos (E). Al detectar un riesgo en E2, el procesador bloquea la búsqueda y decodificación de instrucciones hasta que desaparece el riesgo. Se suponen los cortocircuitos necesario para minimizar las detenciones. Una instrucción dependiente de un load sólo pasa a E3 cuando se confirma que el load ha acertado en cache. Las instrucciones de salto condicional e incondicional son 1-retrardadas. Las operaciones aritméticas complejas están completamente segmentadas (latencia de iniciación=1). Importante: en los diagramas temporales no utilices E1, E2 para referenciar las etapas, sino la actividad que realizan (B,D,L ) a) Salto incondicional: calcula los ciclos perdidos. Dibuja diagramas de tiempos y aclara que instrucciones deben ser emuladas, detenidas b) Salto condicional. b1) Calcula los ciclos perdidos para los casos de salto no tomado y de salto tomado. Supón que la instrucción anterior al salto no modifica los códigos de condición. Dibuja el diagrama de tiempos (con uno es suficiente para ambos casos) y aclara que instrucciones deben ser anuladas, detenidas b2) Calcula los ciclos perdidos para los casos de salto no tomado y de salto tomado. Supón que la instrucción anterior al salto es una aritmética sencilla que sí modifica los códigos de condificón. Dibuja el diagrama de tiempos (con uno es suficiente para ambos casos) y aclara que instrucciones deben ser anuladas c) Calcula los ciclos que debe detenerse la siguiente isntrucción a un ld en caso de ser dependiente. Suponer acierto en cache de datos. Adjuntar diagrama. d) En caso de fallo en la cache de datos se necesitan 4 ciclos más para leer el bloque correspondiente en el 2º nivel de cache (siempre será acierto y el hardware lo sabe) y escribirlo en el primer nivel. En paralelo con esta última acción se realiza el suministro a la instrucción dependiente (si lo hay). Calcular la penalización (ciclos adicionales) debidos al fallo) y dibujar el diagrama de tiempos para este código: i: ld r1, ; Fallo en L1 de la @ calculada por ld i+1: add r2, r3, r1; r2=r3+r1 e) Dibuja una dependencia alu compleja/uso entre una instrucción i y una instrucción i+k, k={1,2,3,4, mostrar los cortes utilizados y los ciclos de detención en cada caso. Recuerda: el diagrama condensa los posibles casos, no representa como se secuencia el código.

f) Se ejecuta un programa de prueba y se observa la distribución de instrucciones mostrada en la tabla. También se sabe que el 10% de los loads fallan en LiD. Supongamos que no hay detenciones por riesgo productor-consumidor (incluyendo aritmética-salto condicional). Sólo hay detención por fallo en cache y por riesgos de control. Calcula los ciclso por instrucción (CPI): CPI = INSTRUCCIÓN % INSTRUCCIÓN % load 30 jmpi 10 st 20 br 10 alu (sencilla+comp) 20,20+10 noop 0 g) Suponer ahora que el compilador ha insertado nops en los huecos de retardo y en todos los casos susceptibles de provocar riesgos por dependencias (load-uso, aritmética-salto condicional, aritmética compleja). Obtener la nueva distribución de instrucciones y calcular el valor de CPI. CPI = INSTRUCCIÓN % INSTRUCCIÓN % load jmpi st br alu (sencilla+comp) noop

a) Dibuja el grafo de dependencias del siguiente código: PROBLEMA 3 Estudio de un procesador con lanzamiento fuera de orden (30 puntos) ini ld r1, [r6] add r1, r1, r2 sub r1, r1, r3 st r1, 512[r6] add r6, #4, 16 sub r5, r5, 1 bnz ini b) Se ejecuta el código anterior con el procesador con lanzamiento fuera de orden visto en clase. Rellenar el diagrama temporal y obtener el CPI de la primera iteración. Pintar los cortocircuitos utilizados y especificar el renombre de registros (asignación y liberación) siguiendo la convención habitual del curso. Estado inicial: 1 ini: ld r1, [r6] 2 add r1, r1, r2 3 sub r1, r1, r3 4 st r1, 512[r6] 5 add r6, #4, 16 6 sub r5, r5, 1 7 ini: ld, r1, [r6] 8 <r1,p1>,<r1,p1>,<r1,p1>; resto de registros físicos disponibles B D B 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 c) Codifica un 2-desenrollado del bucle planificando las instrucciones para minimizar riesgo de datos.

PROBLEMA 4 Prácticas (30 puntos) a) Práctica 1: Simulador de memoria cache (4 puntos) Señala sobre el siguiente esquema de la @ de 32 bits que lanza el procesador, los 3 campos necesarios para la organización de la cache: marca (tag), conjunto (set) y byte dentro del bloque, en el caso de la cache unificada de 64 kb, mapeo directo y bloque de 32 B que has usado en la 1ª práctica. 31 30 29 2 1 0 b) Práctica 2: Análisis de organizaciones de memoria cahce (8 puntos) b.1) Calcula el número de ciclos que requiere un fallo de escritura que provoca el reemplazo de un bloque sucio (política copy-back con buffer de escrituras). b.2) Escribe la expresión que has utilizado para calcular el CPI en la segunda práctica. c) Práctica 3: Simulador de un procesador segmentado (8 puntos; contestar mal pruede restar hasta 8 puntos) Supón que el código de detección de riesgo y activación de los posibles cortocircuitos (i.e. incremento del correspondiente contador de uso) se ha encapsulado en una función cuentacortos. Abajo se muestran cuatro fragmentos de posibles codificaciones de la etapa de decodificación usando esa función. Escribe a continuación cuál de los fragmentos es el correcto [A, B, C ó D]: [A] if (etapa_ain.co==load && (etapa_ain.rd==etapa_ain.rs1 etapa_ain.rd==etapa_ain.rs2)){ [B] if (etapa_ain.co==load && (etapa_ain.rd==etapa_ain.rs1 etapa_ain.rd==etapa_ain.rs2)){ [C] if (etapa_ain.co==load && (etapa_ain.rd==etapa_ain.rs1 etapa_ain.rd==etapa_ain.rs2)){

[D] if (etapa_ain.co==load && (etapa_ain.rd==etapa_ain.rs1 etapa_ain.rd==etapa_ain.rs2)){ d) Práctica 4: Análisis de prestaciones (MIPS y MFLOPS) (10 puntos) Se ha obtenido este código SPARC para el bucle más interno for (j=0 )- de gauss.c:.l900000191: ldd [%02], %f40 add %q3, 1, %95 add %02, 8, %02 ldd [%01], %f46 cmp %q5, %16 fmuld %f42, %f40, %f44 fsubd %f46, %f44, %f48 std %f48, [%01] add %01, 8, %01 bl,a, pt %icc,.l9000000191 ldd [%q2], %f42 Al ejecutar gauss 32x32 50000 10 en un procesador con frecuencia 1165 MHz, obtenemos la siguiente salida: xxxxxx Resultados xxxxxx Tiempo medio de ejecución de L/U: 14.200 µseg Tiempo medio de ejecución limit: 710000 µseg Tiempo total de ejecución de repeat: 7100000 µseg Suponiendo que el tiempo de ejecución se debe principalmente a la ejecución del bucle más interno (despreciamos el coste temporal de las instrucciones que implementan el bucle externo), qué velocidad en MIPS y MFLOPS se está alcanzando? Especifica fórmula y resultado. MIPS = MFLOPS = e) Asumiendo las mismas hipótesis del apartado anterior, cuál es el ancho de banda de memoria consumido por las instrucciones buscadas? Cuál es el ancho de banda para los datos de coma flotante (agregado de lecturas y escrituras)? Especifica las fórmulas utilizadas para calcular ambos resultados: BWi = BWd= f) Calcula el IPC del bucle: