Los benchmarks son parte esencial de nuestros análisis de hardware diario, nos permiten ofreceros una medición científicamente comparable entre diferentes componentes como CPUs, tarjetas gráficas, unidades de almacenamiento, etc. Hoy vamos a dedicar algunas lineas a su historia, a sus tipos, como funcionan, que miden, cuales son las medidas mas habituales y también os daremos algunos consejos de como realizaros y de cuales debemos fiarnos.
Lo que conocemos hoy en el mundo del PC o de los móviles como benchmarks son técnicas heredadas del entorno industrial que han permitido, desde el inicio de esta revolución, la toma de decisiones en base a datos comparables en un entorno controlado.
El mundo de la informática moderna aplica estas técnicas a casi cualquiera de sus muchos y diferentes ámbitos y los usuarios domésticos también los hemos adoptado como una forma fiable de conocer el rendimiento y las capacidades de nuestros sistemas así como un punto importante de información a la hora de tomar decisiones importantes, como la compra de nuestro nuevo ordenador, teléfono móvil, tarjeta gráfica, etc.
Hoy os hablaremos de la historia de los benchmarks de PC, los tipos de benchmarks que existen y que componentes de nuestro sistema son más adecuados para este tipo de pruebas que no solo son de rendimiento.
Índice de contenidos
Historia
El benchmark o sistema de medición aplica un entorno controlado y medidas reconocibles que sean comparables y contrastables de forma científica y lleva coexistiendo con el mundo del ordenador desde que este existe. El benchmark, como tal, se ha democratizado hasta el punto de que se ha perdido parte de su esencia fundamental que es que pueda ser auditable y verificable por terceros. Ahora lo usamos más a modo de comparativa rápida de rendimiento, pero ciertamente se ha perdido en buena medida la capacidad de trazabilidad de su veracidad por terceros.
Los métodos más clásicos de benchmark siempre se han referido a la capacidad de computo de la CPU del sistema, aunque en los últimos tiempos ha variado entre diferentes componentes según estos han ganado preponderancia e importancia dentro de un ordenador.
Las dos unidades de medida más clásicas, que se siguen aplicando son los Dhrystones y los Whetstones. Ambos se han convertido, de alguna forma, en la base de todos los benchmarks sintéticos que conocemos hoy en día.
El más antiguo es Whetstones (una localidad del reino unido donde se localizaba la división de energía atómica de la empresa eléctrica estatal del Reino Unido) y Dhrystone surgió después jugando con el nombre del primero (húmedo y seco).
El primero se diseñó en los años 70 y el segundo es ya de los años 80 y ambos son la base de comparativa de rendimiento que hemos tenido en sucesivos años. Whetstones, simplificando, ofrecía una visión de la potencia de cálculo del procesador en operaciones con coma flotante, operaciones con gran número de decimales.
El Dhrystone es su contrapartida puesto que se dedica a instrucciones básicas sin decimales, ambos daban una imagen clara del rendimiento de un procesador desde dos aproximaciones completamente diferentes, pero complementarias. El Whetstones y el Dhrystone derivaron en dos conceptos que usamos de forma mucho más habitual hoy en día, el MIPS y el FLOP.
Después de estas medidas llegaron otras como el FLOP (Floating-point Arithmetic – Aritmética de coma flotante) que es, en buena medida, mas importante ahora en un ordenador que lo que ha sido jamás porque es la base de cálculo avanzado en muchas técnicas modernas como algoritmos de inteligencia artificial, médicos, previsión meteorológica, lógica difusa, encriptación, etc.
Los FLOPS llenan nuestros artículos sobre tarjetas gráficas (seguro que os suena la precisión simple o doble), procesadores y son la base de cálculo de requerimientos de potencia y desarrollo de hardware para cualquier supercomputador que está en funcionamiento o desarrollo.
El FLOP es a día de hoy la unidad de medida de rendimiento más requerida en la industria, pero siempre se ha combinado con los MIPS (Millones de instrucciones por segundo) que es una medida interesante de medición, ya que nos da el número de instrucciones básicas de aritmética que un procesador puede realizar por segundo, pero que depende más de la arquitectura del procesador (ARM, RISC, x86, etc.) y del lenguaje de programación que otras unidades de medida.
Según ha avanzado el rendimiento los multiplicadores se han sucedido. Ahora medimos el rendimiento de CPUs domesticas en GIPS y GFLOPS. La base sigue siendo la misma, operaciones aritméticas clásicas. Sisoft Sandra nos sigue ofreciendo este tipo de medidas en algunos de sus benchmarks sintéticos.
El MIPS ha quedado también más relegado a la CPU como elemento clásico y el FLOP se ha extendido a otros ámbitos pujantes como la capacidad de proceso o calculo general de antes procesadores muy orientados a tareas concretas como las GPU que montamos todos en nuestros procesadores o en nuestras tarjetas de ampliación dedicada.
A estos conceptos básicos el tiempo ha ido añadiendo nuevas unidades de medida tanto o más importantes que estas en un ordenador o superordenador moderno. El tránsito de datos es una de estas medidas que han cobrado gran importancia y que medimos actualmente en IOPs (operaciones de entrada y salida por segundo) y también en otras formas como medidas de almacenamiento MB/GB/TB comparadas con el tiempo que tardan en realizar el tránsito de un punto a otro (MBps – Megabytes por segundo).
Actualmente también usamos la medida transfer, en sus diferentes multiplicadores, como forma de interpretar la velocidad de transito de información entre dos puntos cuando para emitir cierta información en realidad tenemos que haber generado algo más de información. Esto depende, del protocolo que se use para la transferencia de información.
Un ejemplo claro, y que usamos mucho, es en el interfaz PCI Express. Bajo este protocolo, por cada 8 bits de información que queremos mover (0 o 1s) tenemos que generar 10Bits de información ya que esa información extra es de control de la comunicación que se envía para corrección de errores, integridad de los datos, etc.
Otros protocolos muy conocidos que introducen también está “perdida” de información real es el IP, el que estas usando para leer este articulo y que hace que tu conexión de 300MT/s en realidad ofrezca algo menos de 300mbps de velocidad.
Usamos, por tanto, el Gigatransfer o el transfer cuando nos referimos a información bruta enviada por el interfaz, y no a la información que realmente se procesa en el receptor. Un Bus de datos PCI Express 3.0 de 8GT/s en realidad está enviando 6.4GBps de información por cada línea conectada entre los puntos. El Transfer ha tomado mucha importancia con la integración del protocolo PCI Express en todos los buses principales de un ordenador doméstico y profesionales.
En los últimos tiempos también empezamos a combinar medidas como forma de relacionar la potencia de proceso con otros factores muy importantes en la informática moderna siendo el consumo una de estas medidas que se introducen como baremo comparador entre el rendimiento de dos sistemas. La eficiencia energética es tanto o más importante a día de hoy que la potencia de proceso y por eso es fácil ver benchmarks que comparan la potencia de proceso según los vatios de consumo del elemento en medición.
De hecho, una de las grandes listas de supercomputadores no hace referencia tanto a la potencia bruta del ordenador entre todos sus nodos de computación sino en el desarrollo de esa potencia en base a los vatios o energía consumida por todo el sistema. La lista Green500 (FLOPS per watt – FLOPS por vatio) es un claro ejemplo de como el consumo ahora es básico para cualquier benchmark comparativo que se precie, aunque sin duda todos seguimos fijándonos mucho en la lista TOP500 que no tiene este factor como condicionante.
Tipos de benchmarks
Aunque podemos hablar de muchas más familias o tipos de benchmarks yo simplificare la lista en las dos clases más habituales de cuantos nos quedan más cercanos a todos como usuarios más o menos avanzados.
Por un lado, tenemos los benchmarks sintéticos que son en buena medida estos que nos ofrecen medidas de las que hemos hablado antes. Los benchmarks sintéticos son programas que realizan pruebas controladas con un código de programa más o menos estable y orientado para una plataforma y arquitectura concreta. Son programas que realizan test muy concretos que pueden integrar a uno o varios de nuestros componentes, pero donde siempre se realiza la misma prueba o pruebas, sin cambios en ellas.
Ofrecen un entorno controlado de prueba, donde no hay cambios salvo en versiones y donde estos cambios se documentan adecuadamente para que el usuario sepa que versiones puede comparar entre sí. Este tipo de programas pueden probar diferentes subsistemas de nuestro ordenador de forma separada, con otros trozos de código o benchmarks específicos para realizar cierto tipo de prueba, o combinados que pueden verse afectados por el rendimiento de uno, dos o más componentes del sistema. El benchmark integrado en un juego, o programas como Cinebench, Sisoft Sandra, SuperPI, 3DMark,…son claros ejemplos de benchmarks sintéticos.
Otros benchmarks sintéticos que no debemos confundir con benchmarks reales son aquellos que simulan la ejecución de programas reales, o que ejecutan scripts de acción en programas reales, son también sintéticos puesto que no hay aleatoriedad en la prueba, PC Mark es un claro ejemplo de un programa de benchmark sintético que podemos confundir con un benchmark real.
El benchmark real es un método de prueba muy diferente porque acepta la aleatoriedad de uso de un programa para medir su rendimiento. Los jugadores estamos habituados a realizar este tipo de benchmarks o prueba de rendimiento cuando ajustamos los parámetros de calidad de un juego a las posibilidades de nuestro hardware.
Cuando abres los FPS que está dando el juego e intentas lograr los deseados 60FPS de forma continuada entonces están realizando un benchmark real. Esto mismo lo podemos extrapolar a cualquier otro tipo de programa y si eres desarrollador, cuando optimizas el código de tu programa, entonces también estás haciendo pruebas de benchmark real donde lo que cambia es tu código, o la forma de ejecutarlo, sobre una plataforma de hardware estable o variable.
Ambos tipos de benchmarks son importantes, los primeros nos permiten comparar nuestro sistema con otros en un entorno controlado y los segundos son una forma de optimizar nuestro funcionamiento donde se añaden también dos factores importantes, la aleatoriedad en la ejecución y el factor humano. Ambos factores ofrecen un punto de vista adicional sobre el rendimiento del componente o componentes que queremos probar.
Consideraciones a la hora de realizar un benchmark
Para que un benchmark sea útil y efectivo tenemos que tener en cuenta ciertos factores que son realmente importantes. Comparar entre plataformas y arquitecturas diferentes introduce un factor de incertidumbre importante por lo que este tipo de benchmarks que se otorgan la capacidad para comparar teléfonos móviles iOS con ordenadores x86 con Windows, por poner un ejemplo, hay que cogerlos con pinzas puesto que no solo cambia el kernel del sistema operativo, sino que las arquitecturas de los procesadores son muy diferentes. Los desarrolladores de este tipo de benchmarks (por ejemplo, Geekbench) introducen factores de corrección entre sus diferentes versiones que difícilmente son controlables.
Por tanto, la primera clave para que un benchmark sea comparable entre diferente hardware es que el ecosistema de la prueba sea lo más similar posible a nivel de plataforma, sistema operativo, controladores y versión de software del benchmark. Ciertamente habrá elementos aquí que no podamos controlar homogeneizar, como el controlador de gráficos si probamos graficas AMD contra graficas Nvidia, pero el resto tenemos que intentar tenerlo lo más estable posible. En este caso también incluiríamos hardware puesto que para comparar tarjetas gráficas lo suyo es usar el mismo sistema operativo, el mismo procesador, las mismas memorias y todos los parámetros de funcionamiento mantenerlos igual, incluidos los parámetros de calidad, resolución y prueba en el benchmark. Cuanto más estable sea nuestro ecosistema de prueba, más fiables y comparables serán nuestros resultados.
Te recomendamos la lectura ¿Cómo saber si mi procesador tiene cuello de botella?
Otra cosa que tenemos que tener en cuenta es que normalmente las pruebas de benchmark tienen un factor de estrés sobre el hardware que vamos a probar y normalmente someten a este hardware a situaciones que no se darán habitualmente en el uso normal del sistema. Cada benchmark que sacamos de nuestro disco duro, tarjeta gráfica o procesador, los somete a situaciones que pueden ser peligrosas para el hardware por lo que debemos establecer las medidas adecuadas para que el punto de estrés no se convierta en un punto de fractura o también en un elemento de reducción de rendimiento puesto que muchos componentes tienen sistemas de protección con los que reducen su rendimiento en caso, por ejemplo, de temperaturas fuera de su rango de uso. Refrigeración adecuada, periodos de reposo entre pruebas, alimentación correcta de los componentes en prueba….todo debe estar en una situación ideal para que la prueba se realice sin problemas.
Por otro lado también usamos precisamente este tipo de benchmarks a modo de someter al sistema a estrés para ver la estabilidad del mismo en este tipo de situaciones, es una forma diferente de aplicar un benchmark puesto que no solo se busca conocer el rendimiento sino también si el sistema es estable y aun mas, si el sistema rinde como debe en estas situaciones de estrés.
Conclusión
Para los que nos dedicamos a probar hardware de ordenador profesionalmente el benchmark es una herramienta de trabajo y gracias a ella los usuarios tenemos una forma científica y contrastable de poder comparar o conocer el rendimiento de nuestro próximo ordenador en cada uno de sus subsistemas con una precisión comparable con las herramientas que se usan a nivel industrial.
Pero como toda prueba de “laboratorio” para que esta sea fiable tienen que darse las condiciones adecuadas para su consecución y más aún para que esta sea comparable entre diferentes sistemas.
Hoy os hemos hablado un poco de la historia de este tipo de programas, de sus diferentes tipos, como funcionan y como sacar de ellos información fiable. Son útiles, pero para mí no son más que un dato más a tener en cuenta y lo situaría siempre por detrás de la experiencia personal y de la prueba activa con programas reales que vamos a usar en el día a día.
[irp posts=»126522″]Un benchmarks está bien para poner unos mínimos datos de rendimiento en nuestro proceso de decisión, pero no deben ser definitorios de esas decisiones y, como último consejo, huid de los benchmarks sintéticos que presumen de poder comparar rendimientos entre arquitecturas, sistemas operativos, etc.