¿Cómo se comunica un procesador con la memoria de una CPU?

Mediante el uso de una arquitectura de bus

En este modelo, todo está conectado al mismo bus. Cuando algún nodo en el bus (como la CPU) quiere leer o escribir algo en la memoria, coloca la dirección del bloque de memoria para escribir en el bus de direcciones y los datos (si es necesario) en el bus de datos, luego eleva el señal apropiada en el bus de control como [matemática] \ overline {R} [/ math] (lectura), [math] \ overline {W} [/ math] (escritura), habilite … para informar a otros dispositivos. Como uno notó que la dirección le pertenece, capturará la dirección y hará las cosas necesarias, en este caso sacando los datos y colocándolos en el bus de datos para que el otro nodo los lea de nuevo.

Así es como funciona en general. Para comprender más, necesita tener algunos conocimientos sobre electrónica digital y arquitecturas informáticas.

La CPU y la RAM se comunican a través del bus frontal FSB que están conectados entre sí a través del puente norte, Ram es a través del bus de memoria y el procesador está conectado al puente norte a través del bus del procesador

No pondré ningún diagrama ya que hay suficientes en este hilo. Tan solo explicaciones.

La arquitectura del bus es el concepto más básico, pero eso no es suficiente para explicar lo que está sucediendo en la computadora que está usando (es posible que esté usando i3 / i5, yo uso AMD Bulldozer 8-core)

Aquí está, los buses (Dirección y Datos) son básicamente interconexiones para varios recuerdos. Varios recuerdos? Sí, memoria caché y memoria del sistema. El procesador hoy en día tiene cachés L1, L2 y L3 y luego memoria del sistema (RAM).

Procesador <—> L1 <—> L2 <—> L3 <—> RAM

El procesador en realidad no se comunica directamente con la RAM, lo hace a través de memorias caché. La memoria caché solicita datos de esas ubicaciones de memoria que es más probable que se usen desde una memoria caché de nivel superior. Al igual que las solicitudes L1 de L2, L2 de L3 y L3, luego las solicitudes de RAM. L1 tiene el tamaño más bajo y es el más rápido, L2 es más grande pero más lento, L3 es el más grande y más lento de todos los cachés. Y luego viene RAM, que es la memoria más grande que es más lenta que la caché L3.

El procesador solicita datos de L1, si L1 no los tiene, le pedirá a L2 esos datos, si L2 no los tiene, entonces L2 le preguntará a L3, si no, L3 le pide RAM. Pide RAM usando el IMC (controlador de memoria integrado). Luego, el IMC hace lo apropiado para acceder a esos datos, como la selección R / W, la selección de filas y columnas, etc. y luego lee esos datos de la RAM en L3 y luego encadena a través del L2 y L1 finalmente al procesador.

Esa fue la secuencia de lectura simplificada. Cosas similares suceden al escribir.

Espero que haya ayudado.

La CPU emite una dirección y una señal de lectura / escritura, y luego:

  • La memoria caché tiene contenido, y la operación se lee, proporciona datos a la CPU
  • La memoria caché tiene contenido, y la operación es escribir, actualizar la memoria caché e iniciar la escritura en el siguiente nivel de memoria caché o memoria.
  • La memoria caché no tiene contenido, la operación se lee, lee un bloque de la memoria y actualiza la memoria caché y proporciona datos a la CPU.
  • La memoria caché no tiene contenido, la operación es escribir, actualizar la memoria caché e iniciar la actualización del siguiente nivel de memoria caché o memoria

Como siempre, la respuesta depende de la CPU. 🙂

Pero, a los fines de una explicación simple a alto nivel, suponiendo una CPU simple: las instrucciones sobre la CPU solicitan elementos individuales. Si escribe c = a + b , el procesador necesita cargar los valores de a y b , agregarlos y luego escribir el resultado en c .

Entonces, en este modelo simple, la CPU se comunica en términos de elementos individuales al caché. “Dame a . Dame b . Actualice el valor de c “.

El caché, por otro lado, necesita obtener valores de la RAM más grande y lenta del sistema. También necesita volver a escribir valores actualizados en esa RAM cuando tenga que dejar espacio en el caché para otros datos. La memoria principal es lenta de dos maneras: tiene un ancho de banda menor y tiene una latencia mucho mayor.

Para aprovechar al máximo este enlace, el caché transfiere grandes bloques de datos hacia y desde la memoria principal cada vez que necesita interactuar con él. Esto amortiza el costo de comunicarse con la memoria principal. Por ejemplo, el costo de leer 1 byte de la memoria externa puede ser de 100 ciclos, pero el costo de leer 128 bytes de la memoria externa puede ser solo de 128 ciclos. El costo de leer cada byte disminuye de 100 ciclos / byte a 1 ciclo / byte. ¡No está mal!*

¿Pero cómo ayuda eso?

Consideremos esa expresión c = a + b . Es muy probable que las tres variables se almacenen una al lado de la otra en la memoria. Entonces, cuando la CPU pide a , si el caché no lo tiene, saldrá y tomará a y todo lo que esté a su alrededor, hasta el tamaño de un solo bloque de caché. Con suerte, eso también trajo tanto c . Ahora, cuando el procesador pide leer b justo después de pedir a, tiene una buena posibilidad de que b ya esté en la memoria caché, incluso si a no estaba. Asimismo para c .

Esto se llama el principio de localidad espacial. Los datos que tienden a usarse casi a tiempo también tienden a estar en direcciones cercanas. (También hay un principio de localidad temporal , que dice más o menos: “Es probable que los datos que he usado recientemente se vuelvan a usar pronto”. Los cachés se basan en ambos principios para proporcionar su beneficio).

Ahora, el mecanismo exacto por el cual el caché “redondea” un acceso único a un bloque de caché completo también depende del detalle de la implementación específica del caché. Pero, para un primer orden, es suficiente entender que eso sucede, sin profundizar mucho en los detalles.

Hace mucho tiempo, escribí conjuntamente algunos documentos que describían el sistema de memoria caché en un procesador DSP que ayudé a construir. Estos documentos entran en mayor detalle en el sistema de memoria de ese dispositivo. Los conceptos allí se aplican en diversos grados a otros cachés.

  • SPRU610C – TMS320C64x DSP Guía de referencia de memoria interna de dos niveles (Autor principal)
  • SPRU656a – TMS320C6000 DSP Cache Guía del usuario (Autor secundario. Oliver Sohm escribió la mayor parte de este excelente material, según recuerdo, y merece el crédito por ello).

* Y en caso de que te lo estés preguntando, esos números no están muy lejos de la vida real. Están bastante cerca de los números reales en un TMS320C6678 a 1.2GHz conectado a DDR3–1600 de 64 bits, si no recuerdo mal. Han pasado unos años.

Es bastante simple en muchos casos. La CPU coloca la dirección que desea en sus líneas de dirección de salida, a menudo de 32 a 64 bits. Luego, cuando las líneas se han asentado a su nuevo valor, en un nanosegundo más o menos, la CPU levantó la línea de “dirección lista”, diciéndole a la memoria que ahora es un buen momento para leer las líneas de dirección. Cuando esa línea sube, la memoria eleva su línea de “espera”. Poco tiempo después, la memoria ha encontrado los datos y los coloca en sus líneas de datos, 8, 16, 32, 64 o 128 de ellos. Poco tiempo después, cae la línea de “espera”, que le dice a la CPU que ahora es un buen momento para leer las líneas de datos.

Eso es solo un ciclo de memoria básico y simple. Hay ciclos más complejos, por ejemplo, si hay varias CPU que hablan con la memoria, la CPU primero debe solicitar y obtener acceso al bus.

Además, en muchas situaciones, la CPU necesita tener acceso exclusivo durante un ciclo o más, por lo que genera una línea de “RETENCIÓN” y le dice a otros dispositivos que ni siquiera piensen en pedir acceso a la memoria.

También con bastante frecuencia, una CPU querrá solicitar un bloque secuencial de memoria, en cuyo caso puede generar una línea de “solicitud de ráfaga”, y la memoria puede devolver 16, 32, 64, 128 o 256 elementos, sin todos los elementos Solicitar carpetas.

Algunos de los recuerdos más nuevos simplemente suponen que la CPU querrá bloques cada vez, lo cual es razonable, ya que la mayoría de las CPU tienen una memoria caché de instrucciones y datos que puede aceptar bloques de datos.

Además, los recuerdos más nuevos y más rápidos usan ambos bordes de los pulsos estroboscópicos, enviando datos tanto en los bordes ascendentes como descendentes del reloj. Esto duplica la velocidad de datos o permite que la línea del reloj sea menos crítica en su corriente de conducción y enrutamiento.

Ver: página en washington.edu

Necesita una pregunta clara para obtener una respuesta clara
El detalle completo de cómo funciona depende de qué tipo de recuerdos y arquitectura del sistema. Usted vio las respuestas de los amigos de arriba.
En general, las CPU se comunican con las memorias enviando una SOLICITUD, básicamente LEER y ESCRIBIR.
LECTURA: donde desea leer (dirección) pertenece con una señal de lectura
ESCRIBIR: dónde desea escribir y qué datos pertenecen con una señal de escritura
La CPU emite estos comandos a BUS que los tomará e irá a obtener / colocar datos de / a ADDRESS.

Fuera de mi cabeza, hay un bus de direcciones y un bus de datos interno al chip del procesador, probablemente de 16 bits de ancho, entre la CPU y el caché. Hay un bus entre el chip y el ram externo, pines individuales conectados por trazas en la placa base a los pines del chip RAM. Las palabras se transfieren en serie secuencialmente una palabra a la vez. La transferencia en bloque solo significa que hay un mecanismo para transferir un bloque de datos, digamos 256 palabras, una tras otra sin demora y sin necesidad de intervención por parte del procesador. No significa que se puedan transferir 256 palabras en un ciclo de reloj.

Puede que tenga algunos detalles equivocados. Prueba google.