Sesión 8- Práctica de Medida de Rendimiento

Documentos relacionados
Fundamentos de Computadores

Tema 2 Introducción a la Programación en C.

Ensamblador x86: lazos y procedimientos

Fundamentos de Arquitectura y Código Máquina

Nombre de la asignatura: Programación Básica. Créditos: Objetivo de aprendizaje

Ejercicios del tema 4. El procesador

Práctica 1. Introducción a la programación en ensamblador

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

Trabajo Práctico Número 1

Tema 1: Introducción a Estructura de Computadores. Conceptos básicos y visión histórica

Arquitectura de Computadores II Clase #11

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Programación I. Carrera: ECM Participantes Participantes de las academias de ingeniería electrónica de los Institutos Tecnológicos.

2014 Mario Medina C. 1

UNIVERSIDAD DE GUADALAJARA

Métricas de Rendimiento

Nombre de la asignatura: Arquitectura de Computadoras. Créditos: Aportación al perfil

Notas de Teórico. Evaluación de Rendimiento

TEORÍA DE AUTÓMATAS Y LENGUAJES FORMALES TRABAJO DE PRÁCTICAS. Convocatoria de junio de 2013

Pontificia Universidad Católica del Ecuador

Tema V Generación de Código

Qué es un programa informático?

Introducción a la arquitectura de computadores

Tema 1. Introducción a la arquitectura de computadores: diseño, coste y rendimiento

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

Apuntadores (Punteros)

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

Lenguaje C Preprocesador, Compilación y Enlazado.

Construyendo Programas más Complejos

Tema 1. Introducción a la arquitectura de computadores: diseño, coste y rendimiento

Objetivo. Introducción. Tema: GENERACION DE CODIGO. Compiladores, Guía 11 1

Ficha de Aprendizaje N 13

MEMORIA EJERCICIO 1 EJERCICIO 2

Principios de Computadoras II

Uso avanzado de punteros

DOCUMENTO DE APOYO PARA PROYECTOS

Hacer ejercicios del libro (Cap. 9 Seguridad): 4,5,6,7,8,9,10,12,13

Fundamentos de Programación 2017-I

MANUAL DE PRÁCTICAS DEL TALLER DE PROGRAMACIÒN PRACTICA NO.6

Tema 1. Introducción a los computadores

Universidad Católica de Santiago del Estero Facultad de Matemática Aplicada Carrera de Ingeniería en Electrónica

OBJETIVOS ALGUNAS CONSIDERACIONES SOBRE WINDLX

PROCESADORES DE LENGUAJE EXAMEN FINAL 8-JUNIO-07

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

movl $var, %eax movl $0xf02, %ebx movb var, %ah movw %bx, %ax mov ebx, eax movl %ebx, %eax movl 3(%ebx), %eax

Programas de ordenador (software)

CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES SYLLABUS ARQUITECTURA DE COMPUTADORES

Programación (PRG) PRACTICA 3. Compilación: concepto. Ejecución de programas.

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

UNIVERSIDAD NACIONAL FEDERICO VILLARREAL FACULTAD DE INGENIERÍA ELECTRÓNICA E INFORMÁTICA SÍLABO

Introducción a C Primera parte Sofía Vitale

ARQUITECTURA DE COMPUTADORAS II. Propósito del curso : Ingeniería Ingeniería en Sistemas. Hardware. Clave de la materia: 413

Introducción a la medición Rendimiento de procesadores. Administración de Recursos Ingeniería en Sistemas de Información UTN-FRBA- ARGENTINA

Práctica 4. Organización del Computador 1 12 de septiembre de Algunas consideraciones preliminares:

TÉCNICO SUPERIOR UNIVERSITARIO EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

PROGRAMA ANALÍTICO DE ASIGNATURA

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Los siguientes cambios en un sistema de cómputo, incrementan la productividad, decrementan el tiempo de respuesta, o ambas?

Pruebas aplicaciones base (application based) las ejecuta y las cronometra.

sumas = 58 = 48 = 73 = 59 =

Universidad Centroccidental Lisandro Alvarado. Decanato de Ciencias y Tecnología Departamento de Sistemas

La eficiencia de los programas

ENTORNO DE DESARROLLO Y COMPILACIÓN DE PELLES C

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Tema: Entorno a C# y Estructuras Secuenciales.

FUNCIONAMIENTO DEL ORDENADOR

Nociones Básicas de un Sistema Computador. Clase 2 Introducción a la Programación

(1) Unidad 1. Sistemas Digitales Basados en Microprocesador SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM

4 o Ingeniería Informática

GUÍA DOCENTE Fundamentos de Computadores

CONTENIDO 1 Diagrama de flujo 2 Pseudocodigo 3 Diagrama estructurado (nassi-schneiderman)

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

TEMPORALIZACIÓN Y SECUENCIACIÓN DE CONTENIDOS

ANEXO 3. GUÍA DE ACTIVIDADES DE UNA ASIGNATURA DE EXPERIMENTACIÓN EN INGENIERÍA QUÍMICA

12 símbolos (13 si se incluye el espacio en blanco)

DES: Programa(s) Educativo(s): Tipo de materia: Clave de la materia: Semestre: Área en plan de estudios:

FUNDAMENTOS DE INFORMÁTICA

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

PR1: Programación I 6 Fb Sistemas Lógicos 6 Obligatoria IC: Introducción a los computadores 6 Fb Administración de

Tema 3. Análisis de costes

APÈNDIX: ENSAMBLADOR LINUX

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

OPTIMIZACIÓN DE CÓDIGO

FACULTAD DE INGENIERÍAS INGENIERIA DE SISTEMAS ARQUITECTURA DEL COMPUTADOR TECNICO

Unidad II: Análisis semántico

Procesos e Hilos en C

Ejercicios Jerarquía de Memoria

ANEXO 1: Tablas de las propiedades del aire a 1 atm de presión. ҪENGEL, Yunus A. y John M. CIMBALA, Mecánica de fluidos: Fundamentos y

Técnicas de Programación

Las optimizaciones pueden realizarse de diferentes formas. Las optimizaciones se realizan en base al alcance ofrecido por el compilador.

Comparativas de CPUs. Pablo Sanz Mercado.

41 Jornadas Argentinas de Informática Concurso de Trabajos Estudiantiles Categoría: Teoría de la Computación, Modelos Formales y Compiladores.

Estructuras de control

Estructuras Repetitivas

TÉCNICO SUPERIOR UNIVERSITARIO EN PROCESOS INDUSTRIALES ÁREA SISTEMAS DE GESTIÓN DE LA CALIDAD EN COMPETENCIAS PROFESIONALES

Ejercicios de jerarquía de memoria

Introducción a la Operación de Computadoras Personales

Guía para maestro. Fracciones algebraicas. Compartir Saberes.

Transcripción:

Sesión 8- Práctica de Medida de Rendimiento Arquitectura de Computadores I (IS19) Arquitectura de Computadores I (II19) Área de Arquitectura y Tecnología de Computadores Departamento de Ingeniería y Ciencia de los Computadores Curso 2002-2003 1. Objetivos El objetivo de esta práctica es la aplicación de las diferentes métricas vistas en clase en la evaluación de determinados benchmarks y la comparación entre diferentes máquinas para esos mismos programas de prueba. 2. Descripción del material a emplear Para el desarrollo de esta sesión de laboratorio se dispondrá de un computador personal PC, con el sistema operativo Linux, y una serie de benchmarks, que se encuentran en la página web de la asignatura II19 (http://icc2.act.uji.es/ii19/laboratorio.html). En concreto se emplearán los siguientes: - Linpack: Programa que resuelve un sistema de ecuaciones 100x100. El resultado se presenta en KFLOPS. - Dhrystone: Programa sintético para la eva luación del sistema mediante programación con enteros. Incluye las versiones 1.1 y 1.2 de dicho benchmark. - Whetstone: Programa sintético para la evaluación del sistema mediante programación con números en coma flotante. - gcc: Compilador del lenguaje de programación C, que sólo utiliza aritmética entera. 1

3. Desarrollo de la sesión de prácticas 3.1- Análisis de las prestaciones de las arquitecturas. En este apartado se van a medir las prestaciones de los computadores del laboratorio en el que se realizan las prácticas empleando los benchmarks citados en el apartado anterior. a) En primer lugar se ejecutarán los benchmarks linpack, Dhrystone y Whetstone, para ver su funcionamiento y qué tipo de resultados presentan. A continuación se describe el proceso de compilación y ejecución para cada uno de ellos: - Linpack: - Compilación: make linkpackc - Ejecución: lpc_dpr - Dhrystone: - Compilación: make dhry21 - Ejecución: dhry21 indicando que se van a realizar un millón de iteraciones. - Whetstone: - Compilación: gcc whteston.c lm o whet - Ejecución: whet Este proceso se debe repetir para otras dos máquinas diferentes, y extraer conclusiones sobre qué máquina presenta mejor comportamiento. b) A continuación se ejecutarán los cuatro benchmarks presentados, midie ndo los tiempos de ejecución con la ayuda de la orden time. Dicha orden presenta el tiempo de real de ejecución, el tiempo de usuario y el tiempo del sistema, medidos en segundos. El proceso de ejecución para cada uno de ellos es el siguiente: - Linpack: Se debe ejecutar time linkpackc - Dhyrstone: Se debe ejecutar time dhry21 - Whetstone: Se debe ejecutar time whes - gcc: Se debe ejecutar time gcc whetston.c lm o whet Se deben apuntar los resultados obtenidos (tiempo de usuario en segundos) para poder compararlos con otras máquinas. Este proceso se debe repetir para otras dos máquinas diferentes, con el objetivo de rellenar la siguiente tabla que mostrará los resultados obtenidos tras ejecutar dichos benchmarks en las tres máquinas: Programa/Máquina A B C Linpack Dhyrstone Whetstone gcc Comparar las prestaciones de los tres computadores empleando tres formas distintas. La primera considerará cada uno de los programas de un modo aislado, la segunda empleará la media aritmética de los tiempos de ejecución, y la tercera la media geométrica de los tiempos de ejecución normalizados a una de las tres máquinas. 2

3.2- Cálculo de los CPI. En este apartado se va a obtener el valor del CPI para el siguiente programa escrito el lenguaje C (ejemplo.c), empleando la expresión T ejec =I x CPI x tiempo_ciclo_reloj : int main(int argc, char *argv[]) { int i,final; double a1,b1,a2,b2,a3,b3,a4,b4,r1,r2,r3,r4; a1=2.0; b1=2.5; a2=3.14; b2=56.9; a3=223.3; b3=-232.555555; a4=12.021212121; b4=-202929.212125; final=atoi(argv[1]); final=final*10000; for(i=0;i<=final;i++){ r1=a1-b1; r2=a2+b2; r3=a3*b3; r4=a4/b4; } } A continuación se muestra el código generado en lenguaje ensamblador de la familia x86, obtenido tras ejecutar la orden $gcc S ejemplo.c:.file "ejemplo.c".version "01.01" gcc2_compiled.:.section.rodata.lc0:.lc1:.lc2:.lc3:.lc4:.lc5:.lc6:.lc7:.long 0x0,0x40000000.long 0x0,0x40040000.long 0x51eb851f,0x40091eb8.long 0x33333333,0x404c7333.long 0x9999999a,0x406be999.long 0x1b478423,0xc06d11c7.long 0x50abf295,0x40280adc.long 0xb26e978d,0xc108c589 3

.text.align 16.globl main.type main,@function main: pushl %ebp movl %esp,%ebp subl $120,%esp fldl.lc0 fstpl -16(%ebp) fldl.lc1 fstpl -24(%ebp) fldl.lc2 fstpl -32(%ebp) fldl.lc3 fstpl -40(%ebp) fldl.lc4 fstpl -48(%ebp) fldl.lc5 fstpl -56(%ebp) fldl.lc6 fstpl -64(%ebp) fldl.lc7 fstpl -72(%ebp) addl $-12,%esp movl 12(%ebp),%eax addl $4,%eax movl (%eax),%edx pushl %edx call atoi addl $16,%esp movl %eax,%eax movl %eax,-8(%ebp) movl -8(%ebp),%edx movl %edx,%ecx movl %ecx,%eax sall $5,%eax subl %edx,%eax sall $2,%eax addl %edx,%eax leal 0(,%eax,4),%edx addl %edx,%eax movl %eax,%edx sall $4,%edx movl %edx,-8(%ebp) movl $0,-4(%ebp).L3: movl -4(%ebp),%eax cmpl -8(%ebp),%eax jle.l6 jmp.l4.l6: fldl -16(%ebp) fsubl -24(%ebp) fstpl -80(%ebp) fldl -32(%ebp) faddl -40(%ebp) fstpl -88(%ebp) fldl -48(%ebp) fmull -56(%ebp) fstpl -96(%ebp) 4

.L5:.L4:.L2: fldl -64(%ebp) fdivl -72(%ebp) fstpl -104(%ebp) incl -4(%ebp) jmp.l3 movl %ebp,%esp popl %ebp ret.lfe1:.size main,.lfe1-main.ident "GCC: (GNU) 2.95.2 19991024 (release)" En primer lugar, se compilará y se ejecutará $gcc ejemplo.c o ejemplo $time ejemplo 1000 Se anota el tiempo de ejecución del usuario. Seguidamente, se estimarán las instrucciones que el procesador ha ejecutado, a partir del código en ensamblador mostrado anteriormente. Como se puede observar el programa comienza a partir de la etiqueta main. En la etiqueta.l3 comienza el bucle. El cuerpo del bucle tiene 18 instrucciones. El final del bucle está en la etiqueta.l4. Por tanto, el número de instrucciones ejecutadas, despreciando las instrucciones externas al bucle, es I=18N, siendo N el número de iteraciones del bucle (1000 en la ejecución realizada). Se puede conocer la frecuencia de reloj del procesador media nte $more /proc/cpuinfo. A partir de este dato ya se puede obtener el Tiempo_ciclo_reloj y el valor de CPI. A partir de estos valores se puede calcular el valor de los MIPS obtenidos por este programa, así como los MFLOPS, considerando que el programa de alto nivel realiza cuatro operaciones en coma flotante por cada iteración del bucle. 4. Evaluación Se deberá entregar una memoria con los resultados obtenidos, convenientemente justificados y comentados. Para entregar dicha memoria se establecerá una entrevista concertada entre el profesor de prácticas y el alumno durante la semana del 5 al 9 de Mayo de 2003. 5