stringtranslate.com

Buffer de escritura

Un búfer de escritura es un tipo de búfer de datos que se puede utilizar para almacenar datos que se escriben desde la memoria caché a la memoria principal o a la siguiente caché en la jerarquía de memoria para mejorar el rendimiento y reducir la latencia . Se utiliza en ciertas arquitecturas de caché de CPU como x86 y AMD64 de Intel. [1] En sistemas multinúcleo, los búferes de escritura destruyen la consistencia secuencial . Algunas disciplinas de software, como la libertad de carrera de datos de C11 , [2] son ​​suficientes para recuperar una vista secuencialmente consistente de la memoria.

Una variación del almacenamiento en caché de escritura simultánea se denomina escritura simultánea en búfer . [ cita requerida ]

El uso de un búfer de escritura de esta manera libera la memoria caché para atender las solicitudes de lectura mientras se lleva a cabo la escritura. Es especialmente útil para memorias principales muy lentas, ya que las lecturas posteriores pueden continuar sin esperar una latencia prolongada en la memoria principal. Cuando el búfer de escritura está lleno (es decir, todas las entradas del búfer están ocupadas), las escrituras posteriores aún tienen que esperar hasta que se liberen los espacios. Las lecturas posteriores se pueden atender desde el búfer de escritura. Para mitigar aún más este bloqueo, se puede implementar una optimización llamada fusión del búfer de escritura. La fusión del búfer de escritura combina escrituras que tienen direcciones de destino consecutivas en una entrada del búfer. De lo contrario, ocuparían entradas separadas, lo que aumenta la posibilidad de un bloqueo en la canalización.

Un buffer de víctima es un tipo de buffer de escritura que almacena líneas sucias expulsadas en cachés de escritura diferida [nota 1] para que se vuelvan a escribir en la memoria principal. Además de reducir el bloqueo de la canalización al no esperar a que se vuelvan a escribir las líneas sucias como lo hace un buffer de escritura simple, un buffer de víctima también puede servir como almacenamiento de respaldo temporal cuando los accesos posteriores a la caché exhiben localidad , solicitando esas líneas expulsadas recientemente, que aún están en el buffer de víctima.

El búfer de almacenamiento fue inventado por IBM durante el Proyecto ACS entre 1964 y 1968, [3] pero se implementó por primera vez en productos comerciales en la década de 1990.

Notas

  1. ^ Los cachés de escritura continua no necesitan escribir las líneas de caché expulsadas, ya que se escriben en la memoria principal cuando se escribe en el caché.

Referencias

  1. ^ Owens, Scott, Susmit Sarkar y Peter Sewell. "Un mejor modelo de memoria x86: x86-TSO". Demostración de teoremas en lógica de orden superior. Springer Berlin Heidelberg, 2009. 391-407.
  2. ^ Oberhauser, Jonas. "Un teorema de reducción más simple para x86-TSO". Software verificado: teorías, herramientas y experimentos. Springer International Publishing, 2015. 142-164
  3. ^ Cocke, John (2007). "La búsqueda de rendimiento en procesadores científicos". Conferencias del Premio Turing de la ACM . p. 1987. doi :10.1145/1283920.1283945. ISBN 978-1-4503-1049-9.