Almacenamiento en búfer múltiple


En informática , el almacenamiento en búfer múltiple es el uso de más de un búfer para almacenar un bloque de datos, de modo que un "lector" verá una versión completa (aunque quizás antigua) de los datos, en lugar de una versión parcialmente actualizada de los datos. siendo creado por un "escritor" . También se utiliza para evitar la necesidad de utilizar RAM de doble puerto (DPRAM) cuando los lectores y los escritores son dispositivos diferentes.

Una forma sencilla de explicar cómo funciona el almacenamiento en búfer múltiple es tomar un ejemplo del mundo real. Es un lindo día soleado y has decidido sacar la piscina infantil, solo que no encuentras tu manguera de jardín. Tendrás que llenar la piscina con baldes. Entonces, llena un balde (o tampón) del grifo, cierra el grifo, camina hacia la piscina, vierte el agua y regresa al grifo para repetir el ejercicio. Esto es análogo al almacenamiento en búfer simple. El grifo debe estar cerrado mientras "procesa" el cubo de agua.

Ahora considere cómo lo haría si tuviera dos cubos. Llenaría el primer cubo y luego cambiaría el segundo debajo del grifo. Luego, tiene el tiempo que tarda el segundo cubo en llenarse para vaciar el primero en la piscina infantil. Cuando regrese, simplemente puede cambiar los cubos para que el primero se esté llenando nuevamente, tiempo durante el cual puede vaciar el segundo en la piscina. Esto se puede repetir hasta que la piscina esté llena. Es evidente que esta técnica llenará la piscina mucho más rápido, ya que hay mucho menos tiempo esperando, sin hacer nada, mientras los cubos se llenan. Esto es análogo al doble búfer. El grifo puede estar abierto todo el tiempo y no tiene que esperar mientras se realiza el procesamiento.

Si contrató a otra persona para que llevara un balde a la piscina mientras uno se llena y otro se vacía, entonces esto sería análogo al almacenamiento en búfer triple. Si este paso tomara suficiente tiempo, podría emplear aún más cubos, de modo que el grifo esté continuamente llenando cubos.

En ciencias de la computación, la situación de tener un grifo abierto que no puede o no debe apagarse es común (como un flujo de audio). Además, las computadoras generalmente prefieren tratar con fragmentos de datos en lugar de flujos. En tales situaciones, a menudo se emplea doble búfer.

La red de Petri en la ilustración muestra cómo funciona el doble búfer. Las transiciones W1 y W2 representan la escritura en el búfer 1 y 2 respectivamente, mientras que R1 y R2 representan la lectura del búfer 1 y 2 respectivamente. Al principio solo está habilitada la transición W1. Después de que W1 se activa, R1 y W2 se habilitan y pueden continuar en paralelo. Cuando terminan, R2 y W1 proceden en paralelo y así sucesivamente.


Los conjuntos 1 , 2 y 3 representan la operación de almacenamiento en búfer simple, doble y triple, respectivamente, con la sincronización vertical (vsync) habilitada. En cada gráfico, el tiempo fluye de izquierda a derecha. Tenga en cuenta que 3 muestra una cadena de intercambio con tres búferes; la definición original de almacenamiento en búfer triple descartaría el marco C tan pronto como el marco D terminara, y comenzaría a dibujar el marco E en el búfer 1 sin demora. El conjunto 4 muestra lo que sucede cuando un marco (B, en este caso) tarda más de lo normal en dibujarse. En este caso, se pierde una actualización del marco. En implementaciones sensibles al tiempo, como la reproducción de video, se puede descartar todo el cuadro. Con una cadena de intercambio de tres búfer en el conjunto 5, el dibujo del fotograma B puede comenzar sin tener que esperar a que el fotograma A se copie en la memoria de vídeo, lo que reduce la posibilidad de que un fotograma retrasado pierda su retroceso vertical.
Red de Petri de doble amortiguación