Sé por qué es más lento escribir DRAM que leer, pero ¿por qué es más lento escribir la memoria RAM de caché L1 y L2?

2

La DRAM es más lenta de escribir que de leer porque lleva tiempo cargar o descargar una celda de memoria DRAM. Pero ¿qué pasa con la SRAM en los cachés L1 y L2 de mi procesador? También es más lento escribir, pero AFAIK, SRAM es una memoria bloqueada basada en puertas.

Entonces, ¿por qué la velocidad de escritura SRAM más lenta?

Gracias.

    
pregunta Caladan

3 respuestas

6

¿Está realmente seguro de que los cachés son más lentos para escribir que para leer? Sospecho que lo que escuchó fue el funcionamiento general, no solo el tiempo de lectura o escritura de la SRAM. Escribir en una memoria caché es una operación más costosa porque, finalmente, se debe escribir en la memoria más lenta que respalda la memoria caché. También significa que un bloque de caché no puede reutilizarse sin vaciarlo primero si se ha escrito y que la escritura no se ha propagado a la memoria principal.

La operación de escritura real es probablemente la misma velocidad, pero el proceso general de escritura, y todo lo que finalmente pone en movimiento, es más largo.

    
respondido por el Olin Lathrop
6

En un sistema de memoria caché, el tiempo requerido para leer físicamente o escribir datos de la memoria RAM del caché representa solo una parte del tiempo requerido para realizar un acceso de lectura o escritura de caché. Especialmente en un sistema multiprocesador, también es necesario determinar qué se supone que debe hacer la caché en cualquier acceso dado. Considera, por ejemplo, un caché de conjunto asociativo que es asociativo de cuatro vías, dividido entre cuatro bancos de memoria. Cuando el procesador realiza una solicitud de lectura, el controlador de caché sabe instantáneamente que si los datos, si están en la caché, deben provenir de una dirección conocida en uno de los cuatro bancos. El controlador de caché podría iniciar inmediatamente una solicitud de lectura a los cuatro bancos en paralelo (sin habilitar la salida de activación) antes de determinar qué chip, si lo hay, retiene realmente los datos. Al menos tres de los bancos obtendrán datos inútiles, pero obtener datos inútilmente es inofensivo (además de gastar algo de electricidad). Lo importante es que para cuando el controlador descubra qué banco (si lo hay) guarda los datos y controla la salida habilitada, las memorias ya tendrán algún tiempo para procesar la solicitud de acceso.

Sin embargo, con una solicitud de escritura, el controlador de caché no puede comenzar a realizar una operación de memoria hasta que sepa qué chip se debe escribir. Una lectura inútil es inofensiva; uno puede decir efectivamente "no importa" y descartar los datos extraídos erróneamente. Una escritura inútil, sin embargo, no se puede deshacer. Por lo tanto, es importante que los datos no se escriban hasta después de que el controlador haya descubierto dónde se supone que debe ir la escritura.

Si uno solo estuviera realizando escrituras en memoria, podría realizarlas tan rápido como las lecturas canalizando el proceso. En el ciclo n, el controlador averiguaría a qué parte de la memoria se suponía que debía ir el byte n, mientras que el byte n-1 se escribía en la ubicación calculada en el ciclo anterior. Muy pocas situaciones, sin embargo, involucran muchas escrituras de memoria consecutivas sin lecturas intermedias. Si la escritura en la memoria real ocurre en el ciclo después de una solicitud de escritura, y el procesador desea realizar una lectura durante ese ciclo, la lectura tendrá que esperar.

Las escrituras, en muchos casos, se retrasan aún más por el hecho de que muchos sistemas no permiten que los bytes de memoria se escriban individualmente. Un sistema puede tener un bus de 64 bits entre la memoria caché y la memoria principal, y puede requerir que la memoria principal solo se escriba en fragmentos de 64 bits. Si el código desea escribir un solo byte, será necesario leer 64 bits de la RAM, escribir un byte en el caché y, posteriormente, volver a escribir los 64 bits en la RAM. Puede ser posible que una memoria caché realice la escritura mientras los datos se extraen de la RAM principal, y luego, una vez que estén disponibles, solo copie los 56 bits no escritos del bus de memoria principal en la memoria caché, pero dicha lógica agrega complejidad. En muchos casos es más simple simplemente retrasar la escritura hasta que la línea de caché se haya leído desde la RAM.

En los sistemas multiprocesador, las cosas se complican aún más por el hecho de que dos procesadores pueden leer repetidamente la misma línea de caché sin interferencia, pero si un procesador escribe una línea de caché, no se debe permitir que el otro procesador use esa línea de caché hasta o bien el primer procesador lo ha escrito en la RAM principal y el segundo procesador lo ha leído, o el primer procesador ha suministrado los datos al segundo procesador a través de otros medios. Una secuencia de operaciones que consta completamente de lecturas se ejecutará mucho más rápido que una secuencia de operaciones que consiste en una mezcla de lecturas y escrituras (teniendo en cuenta que, en muchos casos, las operaciones que parecen implicar solo escrituras implicarán de hecho lecturas y escrituras). ). El problema no es tanto que las escrituras en sí mismas sean más lentas, sino que una escritura en una CPU que precede o sigue a cualquier operación realizada por otra CPU requerirá que ambas CPU realicen un protocolo de enlace adicional que no sería necesario si ambas CPU solo estuvieran leyendo .

    
respondido por el supercat
3

La página web para este programa Bandwidth en el que aparentemente basa su observación, en la que no No mencione en su pregunta original, responda a su pregunta en la sección Comentario , bajo el encabezado Computadoras , observación 6 .

  

Si el caché L2 está en modo de escritura directa, la escritura L2 será muy lenta y más a la par con las velocidades de escritura de la memoria principal.

Por lo tanto, normalmente el caché L2 es más rápido, pero en el caso de que el caché L2 esté en escritura a través ( explicación alternativa desde Oracle ), el modo de escritura pura no es más rápido, pero si se accede a esa misma memoria, se recupera rápidamente, ya que ya se almacenó en caché.

Si hubiera revisado los gráficos y las tablas proporcionadas, habría visto que normalmente la mayoría de las computadoras se comportan como cabría esperar, mientras más cercana esté la memoria a la CPU, más rápida será (con CPU registers es el más rápido).

    
respondido por el mctylr

Lea otras preguntas en las etiquetas