¿Qué es un ciclo de memoria?

Agregando a las otras respuestas …

La DRAM tiende a dominar en los sistemas de CPU, y la gran cantidad de memoria implementada como DRAM necesita muchos pines de dirección. Históricamente, eso se “optimizó” al dar a la DRAM solo la mitad del número de pines de dirección, y luego presentar la dirección a los chips DRAM en dos partes usando los mismos pines, primero como la “dirección de fila” y luego como la “dirección de columna” usando el estroboscopio de dirección de fila (RAS, un borde bajo activo) y luego el estroboscópico de dirección de columna (CAS y el egde bajo activo) para decirle al chip lo que había en los pines de dirección. Entonces, la secuencia para un ciclo simple de lectura o escritura sería:

  • dirección de fila actual
  • señal RAS
  • dirección de columna actual
  • señal CAS
  • datos

Luego se dio cuenta de que la tendencia a acceder a ubicaciones consecutivas significaba que una forma eficiente de acceder a DRAM era enviar la dirección de la fila (usando el RAS) y luego enviar la dirección de la columna inicial (usando el CAS) y luego simplemente alternar el CAS varias veces para indicar que la DRAM debe acceder a direcciones de columna consecutivas. Con una ráfaga de 4 lecturas, puede obtener:

  • dirección de fila actual
  • señal RAS
  • dirección de columna actual
  • señal CAS
  • datos de la dirección de columna + 0
  • señal CAS
  • datos de la dirección de columna + 1
  • señal CAS
  • datos de la dirección de columna + 2
  • señal CAS
  • datos de la dirección de columna + 3

Entonces llegó el DDR. En lugar de tener que realizar un ciclo completo de CAS para cada dirección incremental, la dirección se incrementa tanto en el borde ascendente como en el descendente de CAS. Entonces, los 4 ciclos anteriores de CAS ahora pueden transferir 8 conjuntos de datos:

  • dirección de fila actual
  • señal RAS
  • dirección de columna actual
  • señal CAS
  • datos de la dirección de columna + 0
  • elevar CAS
  • datos de la dirección de la columna + 1
  • señal CAS
  • datos de la dirección de columna + 2
  • elevar CAS
  • datos de la dirección de columna + 3
  • señal CAS
  • datos de la dirección de columna + 4
  • elevar CAS
  • datos de la dirección de columna + 5
  • señal CAS
  • datos de la dirección de la columna + 6
  • elevar CAS
  • datos de la dirección de la columna + 7

Esto, más o menos, es lo que normalmente parecen las lecturas DRAM modernas. Además, como cabría esperar de una tecnología tan clave, hay todo tipo de ajustes y detalles adicionales (DDR2 / 3/4, oleoducto, etc.) que valen la pena buscar en Google.

Normalmente hay 2 tipos de memoria:

  • DRAM (RAM dinámica)
  • SRAM (RAM estática)

En un chip DRAM, cada bit de datos de memoria se almacena como la presencia o ausencia de una carga eléctrica en un pequeño condensador en el chip. A medida que pasa el tiempo, las cargas en las celdas de memoria se escapan, por lo que sin actualizarse, los datos almacenados eventualmente se perderían. Para evitar esto, los circuitos externos leen periódicamente cada celda y la reescriben, restaurando la carga del condensador a su nivel original. Cada ciclo de actualización de memoria actualiza un área sucesiva de celdas de memoria, actualizando así repetidamente todas las celdas en un ciclo consecutivo. Este proceso se realiza automáticamente, en segundo plano, por los circuitos de memoria, mientras la computadora está encendida y es transparente para el usuario

En la memoria estática de acceso aleatorio (SRAM), otro tipo de memoria de semiconductores, los datos no se almacenan como carga en un condensador, sino en un par de inversores de acoplamiento cruzado, por lo que no es necesario actualizar la SRAM.

Hay varios tipos de “ciclo de memoria” posibles.

El descrito por Ravi es uno.

El otro es el ciclo de lectura de memoria, donde se presenta una dirección al dispositivo de memoria, junto con una señal de lectura / escritura. Una vez que el dispositivo de memoria identifica el byte de memoria (o bytes), los datos dentro de esas ubicaciones se colocan en el bus de datos (una lectura), o los datos en el bus de datos se almacenan (una escritura).

Un tercero es posible, donde el protocolo del bus implementa un tercer ciclo de memoria: una lectura, modificación, escritura. Éste proporciona una implementación de un semáforo a medida que se cuelga el protocolo del bus, a medida que se procesa el ciclo de lectura; pero las líneas de datos se manejan como en el ciclo de escritura, pero todavía se usa la misma dirección.

More Interesting

¿Es mejor unirse a Cerner como ingeniero de software o Chai Point?

¿Workday es un excelente lugar para trabajar para ingenieros? ¿Por qué está clasificado como el "Mejor lugar para trabajar" según: En Workday, divertirse es una prioridad fundamental: San Francisco Business Times?

¿Cuáles son las mejores bibliotecas de Java?

¿Cómo se implementan las capas OSI?

¿Cuál es el futuro de un probador manual en Apple?

¿Cuál es la mejor herramienta de revisión de código / diferencia para una pequeña empresa?

¿Cómo se debe preparar su currículum para conseguir trabajo como ingeniero de software?

¿Pakistán tiene compañías de software?

¿Cuáles son las fortalezas de una industria de software?

Si tiene que crear objetos para cada número de enrutador en un archivo, ¿cuál es la mejor manera si no sabe cuántas líneas obtendrá para cada enrutador?

¿Por qué siento que Agile apesta para el desarrollo de software?

¿Cómo se estima el costo del software?

¿Cuáles son las implicaciones de las redes definidas por software para proveedores tradicionales como Cisco y Juniper? ¿Cómo se adaptarán estas empresas?

¿Es una empresa de consultoría un buen lugar para comenzar una carrera de ingeniero de software para un recién graduado, si quiero hacer la transición a Google, Apple, Blizzard, etc., después de dominar la programación?

¿Qué es un procedimiento paso a paso para convertirse en un desarrollador de código abierto de GitHub para un novato completo? ¿Cuáles son los cursos de requisitos previos que debo tomar y cómo debo elegir el mejor proyecto? Además, sugiera algunos proyectos en C ++ / Java.