Publicado el 5 de Abril del 2021
894 visualizaciones desde el 5 de Abril del 2021
475,1 KB
39 paginas
Creado hace 13a (02/10/2011)
Estructura de Computadores, Facultad de Informática, UCM, Curso 11-12
Tema 4: Rendimiento del procesador.
Objetivos:
Introducir los conceptos y criterios que permitan medir de forma cuantitativa el
rendimiento de los procesadores.
Estudiar los diferentes patrones de medida (benchmark).
Analizar de forma cualitativa y con datos reales la influencia que tienen las diferentes
alternativas de diseño, estudiadas en temas anteriores, sobre el rendimiento.
Sintetizar el resultado del anterior análisis en un conjunto de alternativas de diseño que
son determinantes para aumentar el rendimiento del procesador y que se concretan en la
alternativa RISC.
Analizar la forma de explotar al máximo el rendimiento del procesador desde análisis del
programa realizado por el compilador.
Contenido:
1. Medidas del rendimiento de un computador
2. Patrones de medida (Benchmarks)
3. Influencia en el rendimiento de las alternativas de diseño
4. Influencia de los compiladores de lenguajes de alto nivel
5. Procesadores RISC y CISC
1. Medidas del rendimiento de un computador
Cuando se quieren comparar diferentes procesadores es necesario establecer el criterio de
medida que permita cuantificar los resultados de la comparación. En este sentido existen dos
conceptos que conviene aclarar previamente: la unidad de medida y el patrón de medida. El
primero se refiere a la métrica utilizada para cuantificar la comparación. Y el segundo a la carga
de trabajo respecto a la que se realiza la comparación.
El tiempo es la unidad de medida por excelencia cuando se comparan varios
procesadores, aunque no siempre coincidan los puntos de vista de los diferentes observadores. Así,
el usuario de un procesador puede decir que el procesador A es mejor que el procesador B cuando A
ejecuta su programa en menor tiempo que B. En cambio el responsable de un centro de cálculo
entenderá que A es mejor que B si es capaz de ejecutar mayor número de trabajos por unidad de
tiempo. El primero estará interesado en el tiempo de respuesta (response time) del procesador
mientras que el segundo lo estará en la productividad (throughput). Pero en ambos casos la clave es
el tiempo: el procesador que realiza la misma cantidad de trabajo en el menor tiempo posible será
el más rápido, la diferencia estriba en si medimos una tarea (tiempo de respuesta) o muchas
(productividad).
El patrón de medida más significativo es el conjunto de programas reales que se
ejecutan en los procesadores. Sin embargo aquí surge de nuevo y con más intensidad la diversidad
de puntos de vista. En efecto, el usuario de un editor de texto querrá medir el rendimiento de un
procesador respecto a la eficiencia para ejecutar su programa, que posiblemente no coincida con el
1
Estructura de Computadores, Facultad de Informática, UCM, Curso 11-12
punto de vista del usuario de un programa de diseño gráfico. Fijar de la forma más objetiva posible
los patrones o programas respecto a los cuales se mida el rendimiento de un procesador será pues
una tarea polémica y siempre cuestionada por la comunidad de interesados en los resultados de la
medida.
1.1. Tiempo de ejecución
El tiempo que tarda un programa en ser ejecutado por un computador puede ser difícil de
medir, debido a los Sistemas Operativos Multitarea y a los dispositivos de E/S, que tienen tiempos
de respuesta que son independientes de la frecuencia de reloj del ordenador. Por ello es necesario
diferenciar entre el tiempo que tarda una CPU en ejecutar el código de un programa, el tiempo que
utiliza el S.O. para realizar sus tareas, y el tiempo necesario para acceder a los dispositivos de E/S.
El tiempo de ejecución de un programa lo dividiremos en las siguientes componentes:
• Tiempo de respuesta
• Tiempo de CPU
A su vez, el tiempo de CPU lo dividimos en:
• Tiempo de CPU utilizado por el usuario.
• Tiempo de CPU utilizado por el S.O.
Tiempo de respuesta Es el tiempo necesario para completar una tarea, incluyendo los accesos
al disco, a la memoria, las actividades de E/S y los gastos del S.O. Es el tiempo que percibe el
usuario.
Tiempo de CPU Es el tiempo que tarda en ejecutarse un programa, sin tener en cuenta el
tiempo de espera debido a la E/S o el tiempo utilizado para ejecutar otros programas. Se divide
en:
Tiempo de CPU utilizado por el usuario. Es el tiempo que la CPU utiliza para ejecutar el
programa del usuario. No se tiene en cuenta el tiempo de espera debido a la E/S o el tiempo
utilizado para ejecutar otros programas
Tiempo de CPU utilizado por el S.O. Es el tiempo que el S.O. emplea para realizar su
gestión interna.
La función time de Unix produce una salida de la forma: 90.7u 12.9s 2:39 65%, donde:
Tiempo de CPU del usuario = 90.7 segundos
Tiempo de CPU utilizado por el sistema = 12.9 segundos
Tiempo de CPU= 90.7 seg.+ 12.9seg = 103.6
Tiempo de respuesta = 2 minutos 39 segundos =159 segundos
Tiempo de CPU = 65% del tiempo de respuesta = 159 segundos*0.65 = 103.6
Tiempo esperando operaciones de E/S y/o el tiempo ejecutando otras tareas 35% del tiempo de
respuesta = 159 segundos*0.35 = 55.6 segundos
El tiempo de respuesta se utiliza como medida del rendimiento del sistema (con el sistema no
cargado), mientras que el rendimiento de la CPU normalmente hace referencia al tiempo de CPU
del usuario sobre un sistema no cargado.
El tiempo de CPU de un programa podemos expresarlo como:
Tiempo_de_CPU = Número_de_ciclos_de_reloj_de_la_ CPU • Tc
donde Tc = Duración_del_ciclo_de_reloj
Tiempo
_
de
_
CPU
Número
_
de
_
ciclos
_
_
reloj
_
de
_
la
_
CPU
de
Fc
2
donde Fc = Frecuencia_de_reloj = 1/Tc
Estructura de Computadores, Facultad de Informática, UCM, Curso 11-12
Además del número de ciclos de reloj que necesita la ejecución de un programa, también se
puede medir el número de instrucciones NI ejecutadas, y podremos calcular el número medio de
Ciclos de reloj Por Instrucción o CPI como:
_de_
_la_de_
Número
_de_
ciclos
CPU
reloj
CPI
NI
por lo que el tiempo de CPU podemos expresarlo como:
Tiempo_de_CPU = NI • CPI • Tc.
o bien:
Tiempo
_
de
_
CPU
NI
CPI
Fc
NI: depende del compilador y la arquitectura utilizada, y se expresa en
CPI: depende de la arquitectura y estructura (organización) de la máquina, y se expresa en
Tc: Depende de la estructura y la tecnología de la máquina, y se expresa en segundos/ciclo
instrucciones/programa
ciclos de reloj/instrucción
de reloj
En determinadas situaciones de diseño puede ser útil calcular el número total de ciclos de
reloj de la CPU como:
Número_de_ciclos_de_reloj_de_la_CPU =
CPI
i NI
i
n
1i
donde NIi representa el número de veces que el grupo de instrucciones i es ejecutado en un
programa, y CPIi representa el número medio de ciclos de reloj para el conjunto de instrucciones i.
El tiempo de CPU se evalúa en este caso mediante una de las 2 siguientes expresiones:
Tiempo_de_CPU =
n
i
1
CPI
i NI
i
Tc
Tiempo
_
de
_
CPU
n
i
1
CPI
i
NI
i
Fc
El número medio de ciclos por instrucción vendrá dado por:
3
Estructura de Computadores, Facultad de Informática, UCM, Curso 11-12
n
i
1
CPI
CPI
i
NI
i
NI
n
i
1
CPI
(
i
NI
i
NI
)
Esta última expresión calcula el CPI multiplicando cada CPIi individual por la fracción de
ocurrencias de las instrucciones i en el programa. CPIi debe ser medido, y no calculado a partir de
la tabla del manual de referencia, ya que se deben incluir los fallos de caché y otras ineficiencias
del sistema de memoria.
Ejemplo
Se consideran 2 alternativas para implementar el salto condicional en un procesador:
CPU A: Una instrucción de comparación genera el código de condición, y una de salto bifurca
en función del valor de código generado.
CPU B: Una única instrucción de salto que incluye la comparación.
En ambos casos la instrucción de salto consume 2 ciclos de reloj, las demás instrucciones
consumen 1 ciclo. Se ignoran las pérdidas debidas al sistema de memoria.
En la CPU A, el 20% de las instrucciones ejecutadas son saltos condicionales, y como en esta
CPU cada salto es precedido por una comparación, otro 20% de las instrucciones ejecutadas son
comparaciones.
Debido a que la CPU A no incluye la comparación en el salto, su ciclo de reloj es un 25% más
rápido que el de la CPU B.
Bajo estas condiciones ¿Qué CPU es más rápida?
Solución
Comparaciones
Saltos
Otras
instrucciones
CPU A
20 %
20 %
60 %
CPU B
20 %
60 %
100
80
Tc_B/ Tc_A = 1.25 ==> Tc_B = 1.25 • Tc_A
NI_B = 0.8 • NI_A
Tiempo de CPU_A = NI_A • CPI_A • Tc_A
Tiempo de CPU_B = NI_B • CPI_B • Tc_B
Tiempo de CPU_B = (0. 8 • NI_A ) • CPI_B• ( 1.25 • Tc_ A )
Tiempo de CPU_B = (0.8 • 1.25) • NI_A * CPI_B • Tc_A.
4
Estructura de Computadores, Facultad de Informática, UCM, Curso 11-12
CPI_A = (NI_salto_A /NI_A) •CPI_salto + (NI_resto_A/NI_A) •CPI_resto =
(20/100) •2 + (80/100)•1 = 0.2 • 2 + 0.8 • 1 = 1.2
CPI_B = (NI_salto_B /NI_B) •CPI_salto + (NI_resto_B/NI_B) •CPI_resto =
(20/80) •2 + (60/80)•1 = 0.25•2 + 0.75•1 = 1.25
Luego la alternativa de diseño correspondiente a la CPU A sería más rápida. La ganancia de
velocidad de la alternativa A sobre la B valdrá:
Tiempo de CPU_A = 1.2 • NI_A • Tc_A.
Tiempo de CPU_B = 1.25 • NI_A • Tc_A
La ganancia de velocidad valdrá:
Tiempo
25.1
Tiempo
2.1
CPU_B
CPU_A
de
de
0416
.1
1.2. Otros parámetros de rendimiento
MIPS (Millones de Instrucciones Por Segundo)
MIPS
Comentarios de: Tema 4: Rendimiento del procesador (0)
No hay comentarios