2012-06-19 22 views
24

alguien puede explicar qué es el búfer de carga y cómo es diferente de las colas de invalidación. y también la diferencia entre los buffers de la tienda y los buffers de combinación de escritura? El artículo de Paul E McKenny http://www.rdrop.com/users/paulmck/scalability/paper/whymb.2010.07.23a.pdf explica muy bien acerca de los tampones de colas para almacenar y invalidación pero lamentablemente no hablar de la combinación de escritura tampones¿qué es un buffer de tienda?

Respuesta

27

Una cola invalidate es más como una memoria intermedia de almacenamiento, pero es parte del sistema de memoria, no 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 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 servicio. Por ejemplo, puede ocurrir lo siguiente

  1. CPU emitir especulativamente una carga desde X
  2. que la carga estaba en el orden del programa después de una tienda a Y, pero la dirección de Y no se resuelve, sin embargo, por lo que la tienda no procede.
  3. Y se resuelve y resulta ser igual a X. En el momento en que se resuelve la tienda en Y, esa tienda busca en la cola de carga las cargas especulativas que se han emitido, pero están presentes después de la tienda en Y en el programa orden. Notará la carga en X (que es igual a Y) y tendrá que aplastar esas instrucciones comenzando con la carga X y siguientes.

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, básicamente, requiere un montón de pequeñas escrituras (piense en escrituras de 8 bytes) y las empaqueta en una sola 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 salvar el ancho de banda del bus. Normalmente, se utiliza un búfer de combinación de escritura para las grabaciones sin caché en dispositivos de E/S (a menudo para tarjetas gráficas). En los dispositivos de E/S es típico realizar una gran cantidad 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 de la memoria caché.

+19

Me acabo de dar cuenta de la pregunta, y la iba a responder, diablos, inventé la combinación de escritura y carga de Intel, o al menos mi nombre está en muchas de las patentes, pero la respuesta anterior está perfectamente bien. –

+7

Almacenar almacenamientos intermedios = no siempre especulativo, no siempre dentro de la CPU. Puede haber almacenamientos intermedios de tienda fuera de la CPU, p. entre escribir a través de L1 y L2. –

+9

Los búfers de carga (1) mantienen cargas después de que se hayan calculado las direcciones de carga, pero hasta que la carga esté realmente lista para ejecutarse; o, después de que intentó ejecutar una carga, pero determinó que había un problema, como una falta de caché o una tienda anterior en la misma dirección que aún no está lista para datos. (2) se puede usar para verificar que las cargas fuera de orden se especifiquen correctamente, como describe Martin. –

Cuestiones relacionadas