Patrones de medida (Benchmarks)

Para evaluar el rendimiento de un computador podemos utilizar diferentes técnicas:

Modelos analíticos (matemáticos) de la máquina

Modelos de simulación (algorítmicos) de la máquina

La máquina real

Las dos primeras alternativas se utilizan cuando la máquina no está disponible. Los modelos analíticos tienen limitado su ámbito de utilización por la dificultad de expresar en forma de ecuaciones matemáticas el comportamiento detallado de la máquina y su carga de trabajo.

Se utilizan en fases muy tempranas de diseño para realizar estimaciones generales del rendimiento. Los modelos de simulación pueden construirse con mayor precisión, recogiendo especificaciones detalladas de diseño. Sin embargo, estos modelos requieren una gran capacidad computacional cuando se incorporan todos los componentes básicos de la máquina.

En la tercera alternativa es la máquina o máquinas reales las que se evalúan con el fin de disponer de algún criterio de elección. En este caso (y posiblemente en algunos modelos de simulación) será necesario disponer de un conjunto de programas representativos de la carga real de trabajo que vaya a tener la máquina, y con respecto a los cuales se realicen las medidas. Estos programas patrones se denominan benchmarks, y serán el objeto de estudio de este apartado.

Podemos utilizar diferentes criterios no excluyentes a la hora de clasificar los benchmarks que se utilizan en la actualidad para evaluar los computadores.

Comenzaremos con una clasificación general en función del ámbito de aplicación que representan, es decir, el tipo de recursos computacionales que mayoritariamente intervienen en la evaluación.

En este sentido los clasificaremos en:

Enteros: aplicaciones en las que domina la aritmética entera, incluyendo procedimientos de búsqueda, operaciones lógicas, etc. Por ejemplo, SPECint2000.

Punto flotante: aplicaciones intensivas en cálculo numérico con reales. Por ejemplo, SPECfp2000 y LINPACK.

Transacciones: aplicaciones en las que dominan las transacciones on-line y off-line sobre bases de datos. Por ejemplo, TPC-C.

En segundo lugar los agruparemos por la naturaleza del programa que implementan:

Programas reales: Compiladores, procesadores de texto, etc. Permiten diferentes opciones de ejecución. Con ellos se obtienen las medidas más precisas

Núcleos (Kernels): Trozos de programas reales. Adecuados para analizar rendimientos específicos de las características de una determinada máquina: Linpack, Livermore Loops

Patrones conjunto (benchmarks suits) Conjunto de programas que miden los diferentes modos de funcionamiento de una máquina: SPEC y TPC.

Patrones reducidos (toy benchmarks): Programas reducidos (10-100 líneas de código) y de resultado conocido. Son fáciles de introducir y ejecutar en cualquier máquina (Quicksort,…)

Patrones sintéticos (synthetic benchmarks): Código artificial no perteneciente a ningún programa de usuario y que se utiliza para determinar perfiles de ejecución. (Whetstone, Dhrystone)

Fuente: Estructura de Computadores, Facultad de Informática, UCM