Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
Índice
2
Bibliografía
[PAT] D.A. PATTERSON, J.L. HENNESSY. Computer Organization and Design, 5th
ed. Morgan Kaufmann, 2014 (o la traducción española más reciente: Estructura y
Diseño de Computadores, 4ª ed. Reverté, 2011).
3
Índice
4
Medidas de rendimiento en los computadores
• Rendimiento como:
– Tiempo de ejecución: velocidad (tiempo) de ejecución.
– Productividad: número de tareas completadas en la unidad de tiempo.
1
• Rendimiento como tiempo de ejecución: 𝑅
𝑇 .
A menudo cuando se habla de rendimiento nos estamos refiriendo al tiempo que tardan en ejecutarse
los programas, conocido como tiempo de ejecución. Nos interesa que el tiempo de ejecución sea
bajo, en cuyo caso diremos que el computador tiene un rendimiento alto. Así, en este caso, se
entiende como rendimiento al inverso del tiempo de ejecución. El tiempo se puede medir en
ciclos de reloj o en segundos o fracciones de segundo.
Otras veces lo que interesa es realizar el máximo número de tareas en un tiempo determinado. En
este caso estamos hablando de productividad, y ésta se calcula como el cociente entre el número
de tareas completadas dividido por el tiempo empleado en ello.
Para comparar el rendimiento de dos máquinas calcularemos el cociente de sus rendimientos. Una
máquina es n veces más rápida que otra si el cociente entre sus rendimientos da como resultado n.
5
Índice
6
Tiempo de ejecución y CPI
• Tiempo de ejecución de UCP para un programa:
𝐶𝑖𝑐𝑙𝑜𝑠 𝑈𝐶𝑃
𝑇𝑖𝑒𝑚𝑝𝑜 𝑈𝐶𝑃 𝐶𝑖𝑐𝑙𝑜𝑠 𝑈𝐶𝑃 𝑃𝑒𝑟𝑖𝑜𝑑𝑜 𝑑𝑒 𝑟𝑒𝑙𝑜𝑗
𝐹𝑟𝑒𝑐𝑢𝑒𝑛𝑐𝑖𝑎 𝑑𝑒 𝑟𝑒𝑙𝑜𝑗
• Entonces:
𝐶𝑖𝑐𝑙𝑜𝑠 𝑈𝐶𝑃 𝐶𝑃𝐼 𝐶
El tiempo de ejecución de UCP para un programa se puede obtener multiplicando el número de ciclos
de UCP que consume por la duración del ciclo de reloj.
Por su parte, el número de ciclos de reloj depende de las instrucciones ejecutadas y su duración. Se
dice que el CPI de una instrucción es el número de ciclos de reloj que consumen la totalidad de las
fases que la componen. En general, instrucciones diferentes tendrán CPIs diferentes. El CPI de un
programa se calcula de forma dinámica, es decir, teniendo el cuenta el número de instrucciones
ejecutadas (recuento de instrucciones).
Para un cierto programa se puede calcular su CPI medio, sin más que dividir el número total de
ciclos de UCP entre el número total de instrucciones ejecutadas.
7
Tiempo de ejecución y CPI: ejemplo
50 5 40 4 10 2 430
𝐶𝑃𝐼 𝐶𝑃𝐼 4,3
50 40 10 100
430
𝑇𝑖𝑒𝑚𝑝𝑜 𝑈𝐶𝑃 8,6 10 𝑠
500 10
8
Índice
9
Alternativas de diseño
• Diseño de alto rendimiento:
– Se pretende obtener rendimiento elevado.
– El coste es secundario.
Diseñar para obtener un gran rendimiento sin tener en cuenta los costes es poco realista. Ambos
parámetros, rendimiento y coste, deben estar equilibrados. Existe un campo de diseño de alto
rendimiento, que persigue alcanzar un rendimiento muy elevado como objetivo principal, dejando el
coste en segundo plano. En este segmento nos encontramos los supercomputadores. En el extremo
opuesto está el diseño de bajo coste, donde lo importante es conseguir un diseño asequible, y
considerando el rendimiento como un aspecto secundario. Entre estos dos extremos está el diseño
de coste/rendimiento, en el que los diseñadores persiguen equilibrar los dos factores.
Las decisiones de diseño tienen efecto sobre estos tres parámetros clave, e implican un coste
determinado en el sistema final. A menudo, lo más complicado es determinar el coste de las
diferentes características del diseño, ya que cuestiones como el valor de los componentes
seleccionados, el ensamblaje de la máquina, los gastos de I+D, las ventas, el marketing y los
márgenes de beneficio tienen mucha influencia sobre el mismo.
El arte del diseño de computadores implica ser capaz de determinar de forma precisa cómo las
decisiones de diseño influyen sobre el coste y el rendimiento, y el objetivo es encontrar el equilibrio
entre ambos, teniendo en cuenta el segmento de mercado hacia el que se enfoca el diseño y los
requisitos de los potenciales clientes que pueden estar en disposición de adquirir los equipos.
10
Índice
11
Mejoras en el rendimiento: ley de Amdahl (I)
• Al mejorar un aspecto parcial de la máquina, se producirá un aumento
del rendimiento (speedup).
– El speedup se calcula comparando el rendimiento de la máquina original (sin
incorporar mejoras) y la máquina con las mejoras incorporadas.
ó
𝑆𝑝𝑒𝑒𝑑𝑢𝑝
ó
Es preciso tener en cuenta que la mejora incorporada normalmente afectará a aspectos parciales de
la máquina, mientras que habrá otros aspectos de la misma que permanecerán inalterados. Por tanto,
el impacto de la mejora incorporada será mayor cuanto mayor sea el tiempo en que esta mejora
pueda aplicarse, es decir, cuanto más se utilice el aspecto mejorado dentro de la ejecución de los
programas.
Así, el tiempo inicial sin mejora (Tosm) es el tiempo que tarda la máquina original (sin incorporar la
mejora) en ejecutar un cierto programa. Este tiempo se calcula como la suma del tiempo no
afectado por la mejora (tiempo original de las tareas que siguen durando lo mismo porque la mejora
no les afecta) más el tiempo afectado por la mejora (tiempo original que tardan las tareas cuyo
tiempo de ejecución se verá afectado por la incorporación de la mejora).
El tiempo final mejorado es el tiempo que tardaría la máquina mejorada en ejecutar el mismo
programa. Este tiempo se calcula como la suma del tiempo no afectado por la mejora (que es el
mismo de antes) más el tiempo mejorado (que es el tiempo que tarda la tarea mejorada en la
máquina mejorada).
El speedup será el cociente entre el tiempo inicial sin mejora y el tiempo final mejorado.
12
Mejoras en el rendimiento: ley de Amdahl (II)
• Supongamos que:
– Tosm: tiempo de ejecución inicial original total (sin aplicar la mejora).
– fm: fracción del tiempo total original que es susceptible de ser mejorada (en
porcentaje o en tanto por 1).
– Am: cantidad de la mejora (cuántas veces más rápido se ejecuta la tarea
parcial una vez mejorada frente a lo que tardaba sin mejorar).
Tiempo no afectado Tiempo afectado
Tiempo inicial sin mejora
Llamaremos fracción de mejora (fm) a la fracción del tiempo total en la máquina original que tarda
la tarea susceptible de ser mejorada. La fracción de mejora fm se calcula como el cociente entre el
tiempo afectado y el tiempo inicial sin mejora Tosm.
13
Mejoras en el rendimiento: ley de Amdahl (III)
• Cálculo de la mejora de rendimiento (speedup):
𝑇𝑖𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑗𝑒𝑐𝑢𝑐𝑖ó𝑛 𝑜𝑟𝑖𝑔𝑖𝑛𝑎𝑙 𝑠𝑖𝑛 𝑖𝑛𝑐𝑜𝑟𝑝𝑜𝑟𝑎𝑟 𝑙𝑎 𝑚𝑒𝑗𝑜𝑟𝑎
𝑆𝑝𝑒𝑒𝑑𝑢𝑝
𝑇𝑖𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑗𝑒𝑐𝑢𝑐𝑖ó𝑛 𝑓𝑖𝑛𝑎𝑙 𝑐𝑜𝑛 𝑚𝑒𝑗𝑜𝑟𝑎
Tiempo no afectado Tiempo afectado
Tiempo inicial sin mejora
𝑇
𝑆𝑝𝑒𝑒𝑑𝑢𝑝
𝑇 𝑓
𝑇 1 𝑓
𝐴
1
𝑆𝑝𝑒𝑒𝑑𝑢𝑝
𝑓
1 𝑓
𝐴
Incorporando las relaciones anteriores a la ecuación de cálculo del speedup, se ve que éste depende
tanto de la fracción de mejora fm como de la cantidad de la mejora Am. Cuanto mayores sean éstas,
mayor será el incremento de speedup.
Una mejora puede repercutir en un aumento del rendimiento que puede compensar el aumento de
coste al incorporarla. Si el incremento del speedup es mayor que el incremento de coste, puede
merecer la pena incorporar la mejora. En caso contrario, sólo sería justificable incorporarla casos de
diseño de alto rendimiento.
14
Mejoras en el rendimiento: ley de Amdahl (IV)
Supongamos que en la máquina del ejemplo anterior se incorpora una
mejora de modo que las instrucciones de tipo T2 pasan a ejecutarse en 2
ciclos. ¿Cuál es la mejora de rendimiento global obtenida?
• Las instrucciones de tipo T2 tardaban 4 ciclos, y ahora pasan a tardar 2.
Cálculo de la cantidad de la mejora: Am = 4 / 2 = 2
• El tiempo afectado por la mejora es el tiempo que tardaban originalmente las 40
instrucciones de tipo T2 que se ejecutan en el programa de prueba.
Tiempo afectado por la mejora = 4 x 40 = 160 ciclos
• La fracción de mejora es el cociente entre el tiempo original para la tarea que
vamos a mejorar dividido por el tiempo de ejecución total original.
Cálculo de la fracción de mejora: fm = 160 / 430 = 0,372
• Por tanto: 1
𝑆𝑝𝑒𝑒𝑑𝑢𝑝 1,229
0,372
1 0,372
2
Se obtiene una mejora de rendimiento global
de 1,229 (del 122,9%)
15
Índice
16
Comparación y resumen del rendimiento
• Carga de trabajo de un sistema: conjunto de programas ejecutados en el
mismo a lo largo del día.
A menudo los vendedores y los compradores necesitan un único número para evaluar el rendimiento
de una máquina. Este número resume el rendimiento del conjunto de programas de prueba
seleccionado, en términos que pueden ser comprensibles para el cliente, a veces engañosamente.
Una medida atractiva son los MIPS (millones de instrucciones ejecutadas por segundo). Pero esta
estrategia presenta varios problemas:
• Los MIPS varían entre diferentes programas de un mismo computador.
• No pueden compararse máquinas con repertorios de instrucciones distintos usando los MIPS.
• A veces hay instrucciones de larga duración que realizan tareas complejas (por ejemplo,
copiar una secuencia de bytes de una zona de memoria a otra), y que son muy lentas. Las
máquinas que no cuenten con dichas instrucciones deben emularlas mediante un fragmento
de código. Entonces, las máquinas del primer caso, que realizan la tarea por hardware, serán
más rápidas que las que la realizan por software, pero éstas últimas darán más MIPS.
¡Entonces los MIPS pueden variar inversamente al rendimiento!
Para evitar el problema anterior se inventaron los MIPS relativos, que dan los MIPS normalizados
respecto de una máquina de referencia. Esto puede dar una idea del cociente de tiempos de
ejecución entre la máquina analizada y la máquina de referencia, pero da una idea falsa de los MIPS.
Otra medida del rendimiento son los MIPS de pico, que dan la velocidad máxima de ejecución de
instrucciones. Esta se alcanza utilizando sólo las instrucciones más rápidas, pero esto es totalmente
absurdo (imagínese un programa cuyas instrucciones son todas iguales).
Las máquinas pensadas para cálculo científico usan el sistema de numeración en coma flotante, que
es como la notación científica (con mantisa, base y exponente), pero expresada en binario. En este
caso, una medida interesante son los MFLOPS (millones de operaciones de coma flotante por
segundo). El problema surge porque no todas las operaciones de coma flotante duran igual. De aquí
vienen los MOPS (millones de operaciones por segundo), en los que las operaciones están
normalizadas según un sistema de equivalencia.
18