[escepticos] RE OT Buffer

Jose Ramón Brox ambroxius en terra.es
Jue Jul 13 11:35:08 WEST 2006


----- Original Message ----- 
From: "Pepe Arlandis" <idd01hrp en wanadooadsl.net>

>No soy informático, pero siempre que he leído sobre buffers, he visto
>que la definición es una memoria intermedia entre el disco duro y los
>procesos de ordenador, el que después el programa use esa memoria de una
>determinada manera es algo accesorio, lo fundamental del buffer es que
>evita lecturas de disco duro, haciendo una lectura más grande y usando
>un almacenamiento intermedio.

No es cierto, o no es exacto. Vuelve a leer mi definición de buffer si no te importa. Lo 
fundamental es que mantiene el ritmo constante y evita lagunas de datos en un proceso al 
que el procesador no puede estar atendiendo constantemente (es el problema de tener 
multitarea).

>Lo que nunca he acabado de distinguir es la
>diferencia entre caché y tampón, digo buffer.

No los distingues porque te empeñas en definir buffer con la definición de caché. Una 
caché es una memoria rápida que basándose en un par de ideas de "localidad" de los datos, 
guarda los más usados últimamente junto con los datos más probables de usar a 
continuación, para agilizar los accesos del procesador a memoria (la memoria caché es 
pequeñita porque al ser tan rápida es muy cara). Un buffer es una memoria usada en un 
proceso aleatorio de entrada o uno de salida a un ritmo concreto. Supón que estás jugando 
a un juego 3D por ordenador. Sin caché, el ordenador tendría que ir a buscar los datos del 
mapa todo el rato a la memoria o al disco duro, y como tardaría mucho en traer tanta 
información de la memoria lenta probablemente no le daría tiempo a calcular las imágenes a 
tiempo real, por lo que verías una pantalla constante casi todo el rato, y de vez en 
cuando se actualizaría con una imagen atrasada (esto de hecho pasa si tratas de jugar con 
procesadores antiguos a juegos nuevos, por mucha caché que tengas); sin buffer de vídeo, 
el procesador mandaría las imágenes cuando le diera la gana y se pintarían automáticamente 
en pantalla, sin respetar ningún ritmo, con la consecuencia de que en momentos tendrías 
una actualización muy rápida y no verías los cambios o se perderían frames, y en otros 
tendrías actualización muy lenta y perceptible por el ojo, dando lugar a 
"correcorrequetepillos" y a saltos de imagen. Con un buffer, siempre que las imágenes 
lleguen del procesador con una determinada estadística dentro de las cotas para las que 
esté diseñado, la imagen irá a 25 o 30 frames por segundo, independientemente de que el 
procesador envíe 1000 en un ms y tarde todo un segundo en mandar la 1001.

Imagina lo que sería ver streaming de vídeo de internet*, o escuchar MP3, si no hubiera un 
buffer (virtual) dedicado a cada una de esas actividades... o tener que teclear en el 
momento justo en el que el procesador está atendiendo a la rutina de teclado para que 
capte la tecla que quieres escribir...

Un saludo. Jose Brox

* El problema en este caso suele ser que hay que calcular las características del buffer 
en función de la conexión del usuario y ésta puede cambiar bruscamente (si abres otros 
programas). La idea es ajustar la calidad de imagen para asegurar un tamaño de frame que 
pueda ser recibido y calculado antes de que le toque ser reproducido, para mantener la 
continuidad de reproducción. Por eso, si la conexión no alcanza una velocidad mínima, el 
ordenador parará la reproducción y avisará todo el rato: "llenando el buffer".



Más información sobre la lista de distribución Escepticos