Blog Personal.

Uncategorized

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

Voy a dar dos argumentos que son aplicables a cualquier hardware gráfico contemporáneo.

#1 Tipo de Instrucción y Ciclos por Instrucción.

Los Tontoflops no son más que una tasa, es decir, la cantidad de operaciones que realiza la GPU en un segundo pero la cifra tiene trampa, no es otra cosa que la repetición de una instrucción en concreto el mejor lugar de la memoria posible que son los registros… ¿Y que operación es? Pues un FMADD, F viene de Floating (Coma Flottante), la M es de Mul y ADD es una suma, tecnicamente es tener a la GPU haciendo esto:

(A*B)+C

Todo el rato sin cesar y de manera continuada y debido que es una suma y una multiplicación en un ciclo pues… ¿Os acordáis de cuando Sony publico los datos de PlayStation 2 donde hablaban de una cantidad enorme para la época de GFLOPS? Pues esto es lo mismo, obviamente no todas las instrucciones tienen el mismo ratio de FLOPS por ciclo, la mayoría lo tienen de 1 solo, ahora bien hay instrucciones que para resolverse necesitan varios ciclos de reloj por lo que durante varios ciclos la GPU no emitirá un resultado.

Si nuestra instrucción tarda… Pongamos que unos 3 ciclos entonces es una falsedad decir que durante 2/3 ciclos esta enviando un resultado al ejecutar dicha instrucción porque no es así. Lo que nos interesa es la cantidad de instrucciones que se resuelven por segundo y es aquí donde la tasa de FLOPS se rompe, de nada sirve tener una tasa alta de operaciones por ciclo si la cantidad de instrucciones resueltas por el procesador es baja.

#2 Memoria y Planificación de Instrucciones

Por otro lado no solamente se realizan instrucciones de lógica y aritmético sino que hay que leer la memoria y la tasa de FLOPS máxima tienen 0 lecturas y 0 escrituras a memoria por lo que no solo es una tasa irreal al utilizar todo el rato la misma instrucción sino que es una tasa imposible. ¿Motivo? No puedes ejecutar un programa sin tener una memoria desde la que leer y/o escribir los datos y realmente los registros son demasiado pequeños como para almacenar un programa completo y menos aún en una GPU, pero es que una GPU no ejecuta un programa tampoco.

Y ya que estamos con la memoria, al no estar cerca de las ALUs, la señal eléctrica tiene un retardo que añade ciclos de reloj, el truco para paliarla es utilizar una jerarquia de caches donde colocar los datos recientes más cercanos para poderlos recuperar antes.

A medida que nos alejamos de los registros es más lento realizar una operación. Eso si, las GPUs están pensadas para operar siempre desde los registros y tienen mecanismos pasivos que vuelcan los dato en los mismos sin que las ALUs se tengan que preocupar por ello. En una GPU al contrario que una CPU las ALUs no recorren la jerarquia de memoria para un dato y lo esperan hasta tenerlo disponible ya que puede crear un cuello de botella en los hilos posteriores de la ola y en la ola posterior.

Las ALUs de la GPU realizan la petición a memoria, pero si el dato esta a la espera y no se encuentra en el registro… ¿Ocurre que este tiene que esperarlo? No, y esa es una de las diferencias con una CPU. Cuando los datos de una instrucción no se encuentran disponibles con tal de que la GPU no se quede parada lo que hace es pasar esa instrucción al fondo de la pila hasta que los datos de esa instruccíón están disponibles, en realidad no es más que la aplicación del algoritmo Round-Robin.

El algoritmo Round-Robin le da un tiempo de ejecución fijo a cada instrucción, si la instrucción pasa el tiempo de ejecución estipulado para ese tipo de instrucción entonces lo que hace es enviarlo al final de la cola, por lo que nos podemos encontrar que las unidades SIMD no ejecuten nada por el hecho que no tienen los datos disponibles para ejecutar la instrucción por lo que no resuelven nada durante esos ciclos. Es decir, una instrucción puede entrar sin lo datos necesarios todavía a las ALUs, estas intentan ejecutarlo pero si el dato no se encuentra disponible en el registro entonces entonces esos ciclos se pierden y no cuentan para el total de FLOPS.

Con todo esto deberías saber porque la cifra de Tontoflops es un sinsentido por completo que les va muy bien a los del marketing pero que realmente no reflejan la realidad de la situación, lo triste es que los departamentos de marketing lo utilizan en pleno juego del trilero y esto va por todos los fabricantes de hardware, no por uno en concreto.

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

0 0 vote
Article Rating
6 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Tokra_Kree

Urian que la GPU funcione a un frecuencia mayor, aporta algun beneficio en el tiempo en el que se tarda en buscar un dato en memoria(sea registro, cache o ram)?

Set

Pues nada de acuerdo, no me meteré a juzgar si esto se utiliza para defender X consola. Yo hace mucho tiempo era del Team «Tflops no sirven para nada» pero conforme el tiempo me di cuenta que es una medida muy util como referencia (no es lineal, ni sustituye un Benchmark) pero cuando lo aplicas Tflops correctamente puedes aproximar el rendimiento real de una GPU, los Tflops son útiles en 2 casos: 1)GPUs de una misma arquitectura: nunca miraras una GPU de misma arquitectura con mas Tflops rendir menos que otra, por una razon simple entre mayor la gama mas… Read more »

El peluca

Los artículos de urian son muy buenos,
Pero en alguno huele un poco a defensa de un sistema concreto.

nolgan

no creo que urian trate de defender a sony si conoces a urian de tiempo.. va ser que no

nolgan

lo que explica urian.. podria afectar a xsx por el tema de que la memoria esta compartida en 3 pozos.. y ps5 la tiene unificada, como explica en los ultimos parrafos, al pasar de poco 10gb, pozo 2,5gb y pozo 3,5gb… esto podria pasar lo que coneta urian o eso entiendo yo «A medida que nos alejamos de los registros es más lento realizar una operación. Eso si, las GPUs están pensadas para operar siempre desde los registros y tienen mecanismos pasivos que vuelcan los dato en los mismos sin que las ALUs se tengan que preocupar por ello. En… Read more »

Steven

Hola una duda la tasa de texturas y polígonos son mejor que los tflops?