architecture - español - ¿Qué es un buffer de tienda?
stringbuffer java example (1)
Una cola de invalidación se parece más a un búfer de almacenamiento, pero es parte del sistema de memoria, no de la CPU. Básicamente, es una cola que realiza un seguimiento de las invalidaciones y garantiza que se completen correctamente para que una memoria caché pueda tomar posesión de una línea de memoria caché para que luego pueda escribir esa línea. Una cola de carga es una estructura especulativa que realiza un seguimiento de las cargas en vuelo en el procesador fuera de orden. Por ejemplo, puede ocurrir lo siguiente
- CPU especulativamente emitir una carga desde X
- Esa carga estaba en el orden del programa después de una tienda a Y, pero la dirección de Y no se ha resuelto todavía, por lo que la tienda no continúa.
- Y se resuelve y resulta ser igual a X. En el momento en que se resuelve el almacén a Y, ese almacén busca en la cola de carga las cargas especulativas que se han emitido, pero están presentes después del almacén en Y en el orden del programa. Notará la carga a X (que es igual a Y) y tendrá que aplastar esas instrucciones comenzando con la carga X y siguiendo.
Un búfer de tienda es una estructura especulativa que existe en la CPU, al igual que la cola de carga y es para permitir que la CPU especule en las tiendas. Un búfer de combinación de escritura es parte del sistema de memoria y esencialmente toma un montón de escrituras pequeñas (escrituras de 8 bytes) y las empaqueta en una transacción más grande (una línea de caché de 64 bytes) antes de enviarlas al sistema de memoria. Estas escrituras no son especulativas y son parte del protocolo de coherencia. El objetivo es ahorrar ancho de banda de bus. Normalmente, un búfer de combinación de escritura se usa para escrituras no en caché en dispositivos de E / S (a menudo para tarjetas gráficas). Es típico en los dispositivos de E / S hacer un montón de programación de registros de dispositivos haciendo escrituras de 8 bytes y el búfer de combinación de escritura permite que esas escrituras se combinen en transacciones más grandes cuando se envían fuera del caché.
¿Alguien puede explicar qué es el búfer de carga y en qué se diferencia de las colas de invalidación? ¿Y también la diferencia entre los buffers de tienda y los buffers de combinación de escritura? El documento de Paul E Mckenny http://www.rdrop.com/users/paulmck/scalability/paper/whymb.2010.07.23a.pdf explica muy bien sobre los buffers de la tienda y las colas de invalidación, pero desafortunadamente no habla de la combinación de escritura amortiguadores