S3: Computadores y Rendimiento (II) - myTeachingURJC/Arq-computadores-01 GitHub Wiki
Sesión de Teoría 3: Computadores y Rendimiento (Parte II)
- Tiempo: 2h
- Objetivos de la sesión:
- Concepto de Rendimiento
- Cálculo del rendimiento relativo para comparar computadores
- Entender los factores que impactan en el rendimiento
- Corrección de Ejercicios de Prácticas (Sesión L2)
Contenido
- Introducción
- Rendimiento
- Lecturas del libro de referencia
- Resolución de los ejercicios de prácticas
- Ejercicios
- Autores
- Licencia
- Enlaces
Introducción
En esta segunda parte vamos a empezar a calcular el rendimiento para poder comparar computadores. Introduciremos las ecuaciones necesarias y haremos ejercicios de cómo aplicarlas correctamente
El tiempo restante lo usaremos para corregir algunos de los ejercicios de la sesión de Prácticas L2
Rendimiento
Evaluar el rendimiento de los computadores es todo un reto. Lo necesitamos calcular para poder seleccionar qué computador utilizar en cada aplicación, y tener un criterio objetivo para compararlos. Como ingeniero/a tendrás que decidir qué equipos comprar. Todos los vendedores te dirán que sus equipos son los mejores: ese es su trabajo. Sin embargo, tú necesitarás tener un criterio objetivo para decidir cuál es la mejor opción, técnicamente hablando. Necesitamos entender perfectamente cómo medir el rendimiento
Definiendo el rendimiento
El rendimiento depende del contexto en el que se utilice el computador. Si estamos ejecutando un programa en dos ordenadores de escritorio diferentes (o en dos teléfonos móviles), diríamos que el que acabe antes el programa es el más rápido, y por tanto que su rendimiento es mejor: Más rápido = mejor rendimiento
Sin embargo, si estás en el contexto de un centro de datos, donde hay muchos servidores ejecutando tareas enviadas por los usuarios, dirías que el computador más rápido es el que es capaz de completar el mayor número de tareas en un día
Así, tenemos dos métricas para evaluar el rendimiento, según el contexto de utilización del computador:
-
Tiempo de respuesta: También denominado tiempo de ejecución o tiempo de CPU: Tiempo que tarda en realizarse una tarea. Desde que se arranca hasta que se termina. Usado para los dispositivos móviles personales (PMD): móviles, tables, ordenadores de escritorio
-
Throughput: También denominado ancho de banda. Número de tareas completadas por unidad de tiempo. Se utiliza más en los servidores
En estos primeros temas, nos centraremos en evaluar el rendimiento a partir del tiempo de respuesta (tiempo de ejecución, o tiempo de CPU).
El rendimiento de un ordenador X, será mayor que el de un ordenador Y, si tarda menos tiempo en ejecutar un programa. Es decir, si su tiempo de CPU es menor (por tanto es más rápido)
- Ejemplo 1: Tenemos dos ordenadores A y B que ejecutan el mismo programa. El ordenador A tarda 1 segundo en ejecutarlo, mientras que el ordenador B tarda 2 segundos. ¿Qué ordenador tiene mejor rendimiento?
Puesto que el ordenador A tarda menos tiempo, quiere decir que es más rápido que el B. No hace falta hacer cálculos para saber que A es mejor que B (en ese caso). Pero vamos a hacerlo usando números, para practicar. Aplicando la ecuación 1 en ambos ordenadores tenemos:
El rendimiento nunca lo usamos de manera aislada, sino que lo usamos para comparar computadores entre sí y saber cuánto es mejor uno que otro. Por ello definimos el rendimiento relativo como:
Así, diremos que el computador X es n veces más rápido que el computador Y si su rendimiento relativo es n. Al calcular el rendimiento relativo, situaremos la máquina con mejor rendimiento en el numerador y la máquina con menor rendimiento en el denominador para que n sea mayor o igual a 1 (por convenio)
- Ejemplo 2: Calcular el rendimiento relativo del ejemplo 1, y decir cuántas veces es más rápida una máquina con respecto a la otra
Puesto que el rendimiento es la inversa del tiempo de CPU, la ecuación 2 del rendimiento relativo se puede escribir también en función del tiempo de CPU de las máquinas que se están comparando:
Ejercicio de ejemplo
Si el computador A ejecuta un programa en 10 segundos y el computador B ejecuta el mismo programa en 15 segundos, ¿cuanto más rápido es A que B?
- Solución:
Aplicamos directamente la ecuación 3, colocando los tiempos que tarda en ejecutarse el programa en cada máquina:
Unidades del rendimiento
En su forma general, las unidades en la que se mide el rendimiento son Programas por segundo: la cantidad de veces que se puede ejecutar el programa de prueba en 1 segundo
También se pueden usar como unidades el número de instrucciones por segundo (inst/seg). Se entiende por instrucciones las que ejecuta la CPU (código máquina). Para calcular el rendimiento en instrucciones/seg basta con suponer que el programa de pruebas tiene una única instrucción
El reloj del sistema
Todos los procesadores, y la mayoría de los circuitos digitales, utilizan una señal digital de referencia que llamamos reloj (o también reloj del sistema)
Es una señal digital periódica, que alterna entre 1 y 0 (señal cuadrada) a una frecuencia determinada. Cada repetición es un ciclo, que tiene una duración igual al periodo de la señal, que es el inverso de la frecuencia. Dentro del procesador el tiempo se mide en ciclos de reloj
Los bits dentro del procesador se mueven al ritmo indicado por esta señal. Los humanos tenemos un corazón que late a unas 70 veces por minuto (frecuencia cercana a 1Hz). Con cada latido se bombea sangre. Los procesadores tiene la señal de reloj que bombea los bits. Con cada nuevo ciclo de reloj (tic) los bits pasan de un elemento a otro dentro del procesador
En esta animación se muestra un corazón bombeando bits a la frecuencia de 1Hz (periodo de 1 segundo) hacia un LED. Cuando llega un 1 el LED se enciende, y cuando llega un 0 se apaga. Es un ejemplo visual muy sencillo, pero así es como se mueven los bits dentro del procesador
El tiempo dentro del procesador se mide en ciclos de reloj. Al ejecutarse un programa, tardará un número determinado de ciclos de reloj. Multiplicando el número de ciclos por el periodo del reloj obtenemos el tiempo de CPU de ese programa. Como la frecuencia es la inversa del periodo, también lo obtenemos dividiendo el tiempo de CPU entre la frecuencia del reloj: ecuación 4
Ejercicios de ejemplo
- Ejemplo 1: Un computador funciona a la frecuencia de 1Ghz. Se ejecuta un programa que tarda 30 ciclos de reloj. ¿Cuánto tiempo tarda el programa en ejecutarse?)
Aplicando la fórmula 4 directamente, usando los 30 ciclos de reloj y la frecuencia del reloj, obtenemos que el programa tarda 30ns en ejecutarse
- Ejemplo 2: El mismo programa anterior se ejecuta en un computador similar pero que tiene una frecuencia de reloj 1.2 Ghz. El programa sigue tardando 30 ciclos de reloj. ¿Cuánto tiempo tarda en ejecutarse ahora?
Volviendo a aplicar la fórmula 4 directamente, tenemos que ahora tarda 25ns
- Ejemplo 3: Un programa tarda 10 segundos en ejecutarse en un computador A, que tiene un reloj de 2GHz. Estamos ayudando en el diseño de un nuevo computador B, y queremos que sea capaz de ejecutar el programa en 6 segundos. El diseñador nos dice que sí se puede subir la frecuencia de reloj, pero que este incremento hará que el computador B requiera 1.2 veces más ciclos que el A. Calcula la frecuencia del reloj de B
Rendimiento de instrucción
Normalmente no conocemos el número total de ciclos de reloj que tarda un programa en ejecutarse. Lo que sí sabemos son las instrucciones del programa. Y cada instrucción tarda un número de ciclos de reloj, determinado por la implementación del procesador
El número total de ciclos que tarda un programa en ejecutarse se puede calcular multiplicando el número de instrucciones por el número medio de ciclos por instrucción (CPI). Unas instrucciones requieren más ciclos que otras, por eso se usa su valor medio. Fórmula 5:
El CPI nos permite comparar dos CPU con el mismo juego de instrucciones (misma ISA), pero diferentes implementaciones, ya que el número de instrucciones del programa será el mismo
Ejemplo
Tenemos dos implementaciones del mismo juego de instrucciones. El ordenador A tiene un periodo de reloj de 250 ps y un CPI de 2.0 para un determinado programa. El ordenador B tiene un periodo de reloj de 500 ps y un CPI de 1.2 para ese mismo programa. ¿Qué ordenador ejecuta más rápido ese programa y por cuanto?
Solución: El programa es el mismo para los dos ordenadores. No conocemos su número de instrucciones. Llamémoslo I. Aplicando la fórmula 5 obtenemos el número total de ciclos de reloj, en función de I. Y luego aplicamos la fórmula 4 para cálculos los tiempos de CPU de cada ordenador y determina cuál es más rápido
El ordenador A ejecuta el programa en menos tiempo que el B. Para saber cuánto más de rápido es, usamos la fórmula 3 del rendimiento relativo:
El ordenador A es 1.2 veces más rápido que el ordenador B
Fórmula clásica del rendimiento de la CPU
La fórmula para calcular el rendimiento en función del número de instrucciones, el CPI y el periodo (o frecuencia) del reloj es:
Esta fórmula es especialmente importante porque muestras los tres factores clave que afectan al rendimiento: el número de instrucciones, el número de ciclos por instrucción y el reloj del sistema
Ejemplo
- Un diseñador de compiladores tiene que decidir entre dos secuencias de código para un computador. El diseñador hardware le ha suministrado los datos sobre el CPI de cada uno de los tipos de instrucciones de ese computador, clasificados en tres grupos: A, B y C
A | B | C | |
---|---|---|---|
CPI | 1 | 2 | 3 |
Hay dos secuencias de código, cada uno con su número de instrucciones de cada tipo
Secuencia de código | Tipo A | Tipo B | Tipo C |
---|---|---|---|
1 | 2 | 1 | 2 |
2 | 4 | 1 | 1 |
a) ¿Qué secuencia de código tiene más instrucciones?
b) ¿Qué secuencia de código se ejecuta más rápido?
c) ¿Cuál es el CPI de cada secuencia?
- Solución:
a) Hacemos un recuento de instrucciones. La secuencia de código 1 tiene en total 2 + 1 + 2 = 5 instrucciones. La secuencia de código 2 tiene 4 + 1 + 1 = 6 instrucciones
Secuencia de código | Número de instrucciones |
---|---|
1 | 5 |
2 | 6 |
b) Para saber qué secuencia de código es más rápido calculamos el número de ciclos totales de cada secuencia de código. Para cada tipo de instrucción multiplicamos la cantidad por su CPI, y lo sumamos todo
La secuencia 2 es la más rápida, ¡¡ a pesar de tener más instrucciones !!
c) El CPI de cada secuencia lo calculamos a partir de la ecuación 5, dividiendo el número total de ciclos entre el número de instrucciones
La secuencia de código 2 es más rápida porque tiene un CPI menor
Entendiendo el rendimiento de un programa
El rendimiento de un programa depende de estos 4 factores:
-
Algoritmo: Determina el número de líneas del programa fuente, escrito en un lenguaje de alto nivel. Y por tanto determina el número de instrucciones. Unos algoritmos requieren más instrucciones, y otros menos. El algoritmo posiblemente también afecta al CPI favoreciendo instrucciones más rápidas o más lentas. Por ejemplo, las divisiones son en general más lentas. Y el algoritmo puede utilizar muchas divisiones. Otro algoritmo utilizará menos
-
Lenguaje de programación: Un mismo algoritmo se puede implementar en diferentes lenguajes de programación. Según el lenguaje elegido, el número de instrucciones que se generarán será diferente. También afecta al CPI
-
Compilador: El mismo algoritmo implementado en el mismo lenguaje de programación da lugar a diferente número de instrucciones del procesador según el compilador utilizado. También el compilador es el que elige a qué instrucciones convertir el código fuente, por lo que afecta también al CPI
-
ISA: El juego de instrucciones afecta a los tres aspectos del rendimiento: número de instrucciones, CPI y frecuencia de reloj
Ejemplo
- Una aplicación escrita en JAVA se ejecuta en 15 segundos en un procesador de un ordenador de escritorio. Se desarrolla un nuevo compilador que rebaja el número de instrucciones a un 60% del anterior, pero el CPI se incrementa un factor de 1.1. ¿Cuanto tarda la aplicación en ejecutarse usando el nuevo compilador?
Los tiempos de CPU asociados a los dos compiladores los calculamos con la ecuación 6. A partir del TCPU1 del primer compilador despejamos y obtenemos una expresión en función del número de instrucciones I1 y el CPI1. El periodo de Reloj es el mismo en ambas ecuaciones, ya que el ordenador es el mismo
Por tanto, con el nuevo compilador la aplicación tarda 9.9 segundos en ejecutarse, frente a los 15 segundos que tardaba con el compilador original
Ejercicios
Ejercicios para practicar los conceptos. Hazlos. Busca qué ecuaciones necesitas. Practica. Una vez hechos comprueba tus resultados con las soluciones
Ejercicio 1
Se tiene un procesador P1 que funciona a una frecuencia de 3 GHz y tiene un CPI de 1.5. ¿Cual es su rendimiento medido en instrucciones por segundo?
Ejercicio 2
Se tiene un procesador P2 que funciona a una frecuencia de 2.5GHz y tiene un CPI de 1.0. ¿Cual es su rendimiento medido en instrucciones por segundo?
Ejercicio 3
Se tiene un procesador P3 que funciona a una frecuencia de 4Ghz y tiene un CPI de 2.2:
a) Calcular su rendimiento en instrucciones por segundo
b) Comparar los procesadores P1, P2 y P3 de los apartados anteriores. ¿Cual tiene mejor rendimiento?
Ejercicio 4
Dado el procesador P3 del ejercicio 3: frecuencia de 4Ghz y un CPI de 2.2. Si tarda en ejecutar un cierto programa 10 segundos:
a) ¿Cuantos ciclos de reloj ha tardado en ejecutar el programa?
b) ¿Cuantas instrucciones ha ejecutado en total?
Ejercicio 5
Seguimos con el procesador P3 de los ejercicios 3 y 4. Queremos que la ejecución del programa indicado en el ejercicio 4 se reduzca en un 30%, pero esto genera un incremento del 20% en el CPI. ¿Cual debe ser la nueva frecuencia de reloj para conseguir esta reducción del tiempo de ejecución?
Ejercicio 6
Las instrucciones de una arquitectura de un procesador se pueden agrupar en 4 clases, que llamaremos A, B, C y D. Diferentes fabricantes han implementados estas instrucciones en los procesadores P1 y P2. Cada clase tiene un CPI dado por esta tabla:
Procesador | A | B | C | D |
---|---|---|---|---|
P1 | 1 | 2 | 3 | 3 |
P2 | 2 | 2 | 2 | 2 |
Por ejemplo, el procesador P1 ejecuta las instrucciones de la clase A en 1 ciclo de reloj, mientras que el procesador tarda 2 ciclos de reloj para estas mismas instrucciones.
La frecuencia del procesador P1 es de 2.5Ghz mientras que la de P2 es de 3Ghz
Se tiene un programa de prueba de un millón de instrucciones. De todas ellas, el 10% son de tipo A, el 20% del tipo B, el 50% de tipo C y el 20% de tipo D
a) ¿Cuántos ciclos tarda en ejecutar el programa el Procesador P1?
b) ¿Cuánto tiempo tarda el procesador P1 en ejecutar el programa?
c) ¿Cuántos ciclos tarda en ejecutar el programa el procesador P2?
d) ¿Cuánto tiempo tarda el procesador P2 en ejecutar el programa?
e) ¿Qué procesador es más rápido?. ¿Cuánto más rápido?
f) Calcular los CPI globales para cada procesador
Lecturas del libro de referencia
Os propongo que leais estas páginas del libro de referencia: "Computer Organization and Design. Hardware/Software interface. Risc-V"
- Apartado 1.6: Performance (Pag 28-40)
Resolución de los Ejercicios de PRACTICAS
Resolución de los ejercicios de la sesión 2 de Prácticas
Recuerda que las soluciones están disponibles, por si las quieres ver por tu cuenta
Notas para el profesor
- Título informal de la clase: "No me la dan con queso..."
- Computador A: Risc-v, 10Ghz, tri-core.. tecnología cmos powerplus nuclear,
- Computador B: Intel, core 200, paralell. Aartificitian Ingeligence manager 2.0, memoria dual plus 73 y tecnología GPT 4.0....
- Cualquier fabricante te dirá que su procesador es el mejor, y te lo querrá vender... es su trabajo. Pero tú tendrás que realizar mediciones, comparar y decididor cuál es mejor para el proyecto que estás desarrollando
Autores
- Katia Leal Algara
- Juan González-Gómez (Obijuan)