
En informática , el almacenamiento en búfer múltiple consiste en utilizar más de un búfer para almacenar un bloque de datos , de modo que un lector vea una versión completa (aunque posiblemente antigua) de los datos en lugar de una versión parcialmente actualizada creada por un escritor . Se utiliza con mucha frecuencia para las imágenes de las pantallas de ordenador. También se emplea para evitar la necesidad de usar memoria RAM de doble puerto (DPRAM) cuando los lectores y escritores son dispositivos diferentes.
Descripción
Red de Petri con doble búfer
La red de Petri de la ilustración muestra un sistema de doble búfer. Las transiciones W1 y W2 representan la escritura en los búferes 1 y 2, respectivamente, mientras que R1 y R2 representan la lectura de los búferes 1 y 2, respectivamente. Al principio, solo la transición W1 está habilitada. Tras activarse W1, R1 y W2 se habilitan y pueden ejecutarse en paralelo. Cuando finalizan, R2 y W1 se ejecutan en paralelo, y así sucesivamente.
Tras el transitorio inicial en el que W1 se activa solo, este sistema es periódico y las transiciones se habilitan, siempre en pares (R1 con W2 y R2 con W1 respectivamente).

Doble búfer en gráficos por computadora
En gráficos por computadora , el doble búfer es una técnica para dibujar gráficos que muestra menos interrupciones, desgarros y otros artefactos.
Para un programa, es difícil dibujar una pantalla de forma que los píxeles no cambien más de una vez. Por ejemplo, al actualizar una página de texto, es mucho más fácil borrar toda la página y luego dibujar las letras que borrar solo los píxeles que se usan en las letras antiguas pero no en las nuevas. Sin embargo, esta imagen intermedia es percibida por el usuario como un parpadeo . Además, los monitores de computadora redibujan constantemente la página de video visible (tradicionalmente unas 60 veces por segundo), por lo que incluso una actualización perfecta puede ser visible momentáneamente como una división horizontal entre la imagen "nueva" y la imagen "antigua" sin redibujar, lo que se conoce como desgarro .
Doble búfer de software
Una implementación de software de doble búfer hace que todas las operaciones de dibujo almacenen sus resultados en una región de la RAM del sistema ; esta región se suele denominar "búfer trasero". Cuando se consideran completas todas las operaciones de dibujo, la región completa (o solo la parte modificada) se copia en la RAM de vídeo (el "búfer delantero"); esta copia suele estar sincronizada con el haz de trama del monitor para evitar el desgarro de la imagen. Las implementaciones de software de doble búfer requieren necesariamente más memoria y tiempo de CPU que el búfer simple debido a la memoria del sistema asignada al búfer trasero, el tiempo de la operación de copia y el tiempo de espera para la sincronización.
Los gestores de ventanas con composición suelen combinar la operación de "copia" con la de " composición ", que se utiliza para posicionar ventanas, transformarlas con efectos de escalado o deformación y hacer que algunas partes sean transparentes. De este modo, el "búfer frontal" puede contener únicamente la imagen compuesta que se ve en la pantalla, mientras que existe un "búfer posterior" diferente para cada ventana, que contiene la imagen sin componer de todo el contenido de la ventana.
pasar de página
En el método de inversión de página, en lugar de copiar los datos, ambos búferes pueden visualizarse simultáneamente. En cada momento, un búfer se muestra activamente en el monitor, mientras que el otro, el búfer de fondo, se está dibujando. Cuando el búfer de fondo se completa, se intercambian las funciones de ambos. La inversión de página se suele lograr modificando un registro de hardware en el controlador de la pantalla de vídeo : el valor de un puntero al inicio de los datos de visualización en la memoria de vídeo.
El cambio de página es mucho más rápido que la copia de datos y garantiza que no se produzcan cortes siempre que las páginas se cambien durante el intervalo de borrado vertical del monitor , es decir, el período en blanco en el que no se dibujan datos de vídeo. El búfer activo y visible se denomina búfer frontal , mientras que la página de fondo se denomina búfer posterior .
Triple búfer
En gráficos por computadora , el triple búfer es similar al doble búfer, pero puede ofrecer un rendimiento mejorado. En el doble búfer, el programa debe esperar a que el dibujo finalizado se copie o se intercambie antes de comenzar el siguiente. Este período de espera puede ser de varios milisegundos, durante los cuales no se puede acceder a ninguno de los búferes.
In triple buffering, the program has two back buffers and can immediately start drawing in the one that is not involved in such copying. The third buffer, the front buffer, is read by the graphics card to display the image on the monitor. Once the image has been sent to the monitor, the front buffer is flipped with (or copied from) the back buffer holding the most recent complete image. Since one of the back buffers is always complete, the graphics card never has to wait for the software to complete. Consequently, the software and the graphics card are completely independent and can run at their own pace. Finally, the displayed image was started without waiting for synchronization and thus with minimum lag.[1]
Due to the software algorithm not polling the graphics hardware for monitor refresh events, the algorithm may continuously draw additional frames as fast as the hardware can render them. For frames that are completed much faster than interval between refreshes, it is possible to replace a back buffers' frames with newer iterations multiple times before copying. This means frames may be written to the back buffer that are never used at all before being overwritten by successive frames. Nvidia has implemented this method under the name "Fast Sync".[2]
An alternative method sometimes referred to as triple buffering is a swap chain three buffers long. After the program has drawn both back buffers, it waits until the first one is placed on the screen, before drawing another back buffer (i.e. it is a 3-long first in, first out queue). Most Windows games seem to refer to this method when enabling triple buffering.
Quad buffering
The term quad buffering is the use of double buffering for each of the left and right eye images in stereoscopic implementations, thus four buffers total (if triple buffering was used then there would be six buffers). The command to swap or copy the buffer typically applies to both pairs at once, so at no time does one eye see an older image than the other eye.
Quad buffering requires special support in the graphics card drivers which is disabled for most consumer cards. AMD's Radeon HD 6000 Series and newer support it.[3]
3D standards like OpenGL[4] and Direct3D support quad buffering.
Double buffering for DMA
El término doble búfer se utiliza para la copia de datos entre dos búferes para transferencias de acceso directo a memoria (DMA), no para mejorar el rendimiento, sino para cumplir con los requisitos de direccionamiento específicos de un dispositivo (en particular, dispositivos de 32 bits en sistemas con direccionamiento más amplio proporcionado mediante la Extensión de Dirección Física ). [ 5 ] Los controladores de dispositivos de Windows son un lugar donde es probable que se utilice el término "doble búfer". El código fuente de Linux y BSD los denomina "búferes de rebote". [ 6 ]
Algunos programadores intentan evitar este tipo de doble búfer mediante técnicas de copia cero .
Otros usos
El doble búfer también se utiliza como técnica para facilitar el entrelazado o desentrelazado de señales de vídeo.
Véase también
Referencias
- ↑ "Triple Buffering: Por qué nos encanta" . AnandTech. 26 de junio de 2009. Consultado el 16 de julio de 2009 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ Smith, Ryan. "Análisis de las ediciones Founders de NVIDIA GeForce GTX 1080 y GTX 1070: El comienzo de la generación FinFET" . Archivado del original el 23 de julio de 2016. Consultado el 1 de agosto de 2017 .
- ↑ Comunidad AMD
- ↑ "Especificación de OpenGL 3.0, Capítulo 4" (PDF) .
- ↑ "Extensión de dirección física: memoria PAE y Windows" . Centro de desarrollo de hardware de Microsoft Windows. 2005. Consultado el 7 de abril de 2008 .
- ↑ Gorman, Mel. "Comprensión del administrador de memoria virtual de Linux, 10.4 Búferes de rebote" .
Enlaces externos
- Triple buffering: mejora el rendimiento de tus juegos de PC gratis por Mike Doolittle (24/05/2007)
- Gráficos 10 Archivados el 18/08/2016 en Wayback Machine
- Algoritmos de gráficos por computadora
- Procesamiento de imágenes
- redes de Petri