Blog Personal.

Mitos

¿Por qué la métrica en TontoFLOPS es un sinsentido? (II)

Más de una vez os he hablado de la importancia de la localidad de los datos en memoria de cara al rendimiento y lo importante que es la jerarquía de memoria.

Ya os comente que la métrica de los Tontoflops es un sinsentido pero he pensado que una segunda parte centrada en la memoria y la localización de los datos es muy importante para romper por completo el mito.

Para empezar hemos de tener en cuenta que hay varias versiones de una misma instrucción en un procesador dependiendo del direccionamiento utilizado, si el direccionamiento es inmediato o por registro significa que el operando de la instrucción es el mismo dato, si en cambio el direccionamiento es directo entonces esto significa que lo que tenemos es la dirección de memoria del dato y si es indirecto la dirección de la dirección de memoria del dato.

Los FLOPS utilizados en e marketing son haciendo operaciones de suma+ multiplicación en un ciclo desde los registros y como ya explique esta situación no es realista porque no se da nunca en el código real donde los datos no van a estar siempre a nivel de registros y se han de buscar por toda la jerarquía.

La memoria en los procesadores modernos se organiza de manera virtual por páginas de tamaño fijo, por ejemplo en los x86-64 cada página es de unos 4KB de memoria y dado que los programas son secuenciales en su mayor parte (van de una instrucción a la siguiente) lo que se hace con la cache es almacenar esas páginas de 4KB desde la RAM, de tal manera que cuando la CPU le pregunta a la cache lo que hace es preguntarle si tiene esa página de memoria. ¿Y que ocurre cuando hay un salto? Simplemente si el procesador es lo suficientemente avanzado lo que hace es tener una unidad que lee el programa por adelantado donde detecta un salto y manda a cargar por adelantado a partir de la página de memoria donde se produce el salto hacia otra dirección.

Las caches funcionan de manera automática para cargar los datos más cercanos al código, no se tratan como un pozo de RAM y su utilidad es al estar cercanas al procesador que los datos lleguen lo más rápidamente posible. ¿Pero por qué existen? Bueno, el problema es que la RAM no ha evolucionado a la velocidad del procesador y cada vez ha habido un distanciamiento de rendimiento más grande entre ambos componentes clave que ha llevado a paliar dicha diferencia, siendo los más importantes las caches.

Es decir, sin la cache nos encontraríamos que el tiempo de respuesta de la RAM sería tan alto que eliminaria por completo las ventajas de rendimiento de los nuevos procesadores. Y el truco de la cache es que es lo suficientemente rápida como para buscar los datos en la misma que han sido volcados desde la RAM de antemano en menos tiempo del que tardaríamos en buscar el dato en la RAM.

¿Y que tiene que ver esto con los FLOPS? Pues que según la localización de los datos en la jeraraquía los ciclos aumentan de manera acumulativa y no solo añadiendo el tiempo de búsqueda de las etapas anteriores sino también los llamados Cache Miss que son los ciclos añadidos entre étapa y étapa cuando una búsqueda no da resultado. Para que lo entendáis mejor, puede que nuestro dato se encuentre en la Cache L1 donde hay unos 20 ciclos de distancia (es un ejemplo) por lo que el procesador va a tardar lo que tarda normalmente de ejecutar cuando lo hace en los registros+tiempo de búsqueda.

Dado que la cantidad de ciclos por operación depende de donde se encuentren los datos ya os podéis imaginar como independientemente del sistema y la marca, la cifra de FLOPS que dan los departamentos de marketing vengan de donde vengan son una mentira y gorda además.

Esto es todo, tenéis el Discord y los comentarios de esta entrada para comentarla.

5 1 vote
Article Rating
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Steven

Hola disculpa la duda la memoria protegida no hace más lento todo.

MACUZO-AUC

UN poco de todo, los FLOPS y los antiguos MIPS son sistemas anquilosados de comparación que provienen de viejas arquitecturas que no poseían capacidades multiplicación de «coma flotante. Considero humildemente un poco aventurado descartarlos y minimizarlos (absolutismo), dado que muchas de las operaciones en Infografía 3D son multiplicaciones de «coma flotante entre matrices 4×4», por no decir que es el 100% del paradigma y no hemos inventado otra forma de resvolerlo. Con ello quiero insistir: Por favor observa con detenimiento la mercadotecnia de la APU AMD, en las comparativas que puedas encontrar se establece que la métrica TFLOPS es dada… Read more »