Escribe de nuevo el búfer en lpc

2

Estaba leyendo el Manual Lpc2148 y en la sección Static Ram que encontré

  

Búfer de escritura atrás

El controlador SRAM incorpora un búfer de escritura para evitar bloqueos de CPU durante las escrituras consecutivas. El búfer de escritura siempre contiene los últimos datos enviados por Software para la SRAM. Estos datos solo se escriben en la SRAM cuando se escribe otra escritura. solicitados por el software (los datos solo se escriben en la SRAM cuando el software realiza otra escribir). Si se produce un reinicio de chip, el contenido real de SRAM no reflejará la escritura más reciente solicitud (es decir, después de un reinicio de chip "caliente", la SRAM no refleja la última operación de escritura). Cualquier software que verifique el contenido de la SRAM después del reinicio debe tener esto en cuenta. Dos las escrituras idénticas a una ubicación garantizan que los datos estarán presentes después de un reinicio.

¿Qué significa? y a qué se refería con paradas de CPU y escrituras back to back

    
pregunta Eljay

2 respuestas

1

El mecanismo de reescritura es un método que se usa generalmente para garantizar la consistencia de los datos en las memorias en un sistema de múltiples agentes (sistemas de múltiples núcleos pero también con DMAC, controlador de discos duros) por ejemplo). En este caso, se pretende evitar la escritura de datos en la RAM en caso de que se requiera en poco tiempo de la CPU.

Significa que los datos no se escriben inmediatamente en la memoria, sino que se guardan en un registro hasta que alguien los solicite. Es la alternativa a la política de escritura directa , en la que cada vez que se llama una instrucción de escritura a RAM para los datos, se escribe directamente en la RAM.

Evita paradas de la CPU (que son ciclos de reloj en los que la CPU está esperando) porque el resultado de la instrucción se guarda en el registro para el acceso futuro, y se escribe en la memoria solo si es necesario (otra instrucción de "escritura" solicita el buffer, que hay que vaciar); por lo tanto, no necesita guardar (y cargar) RAM un valor que se solicita en la siguiente instrucción.

De esta manera, el contenido de la RAM no siempre está actualizado, por lo que muestra un truco para garantizar que se escriban ciertos datos antes de un reinicio.

    
respondido por el clabacchio
0

La velocidad de escritura superior de la CPU es más alta de lo que la SRAM puede manejar. Esto se puede resolver deteniendo (deteniendo) la CPU hasta que se complete una escritura, pero esto ralentizaría la CPU. En cambio, la acción de escritura puede almacenarse en un búfer y ser manejada por la SRAM a su propia velocidad. La CPU ahora puede continuar ejecutando instrucciones. Por supuesto, la CPU todavía debe estar bloqueada si intenta realizar la siguiente acción de escritura antes de escribir el búfer de escritura en SRAM. (En lugar de una sola entrada, el búfer de escritura puede ser una cola. Las acciones de lectura de la CPU deben, por supuesto, verificar si están leyendo una dirección que está en el búfer de escritura o en la cola).

El ARM7 parece usar un único búfer de reescritura, pero el texto en el manual no es 100% claro cuando ocurre la escritura real de SRAM. Sugiere que ocurre solo cuando se realiza una próxima escritura de CPU, lo que sería IMO tonto: su único beneficio sería eliminar una segunda escritura consecuente en la misma dirección con los mismos datos.

La CPU se detiene == deteniendo la CPU porque debe esperar a que algo se complete antes de que pueda continuar. 'Algo' puede ser muchas cosas, como leer o escribir en la memoria, operación interna (segmentada), resultado de una operación previa que está disponible, etc.

escrituras consecutivas == en este contexto parece significar dos escrituras consecutivas en la misma dirección.

    
respondido por el Wouter van Ooijen

Lea otras preguntas en las etiquetas