SkillGridAprende informática practicando

Memoria: un circuito que se niega a olvidar

Todas las puertas anteriores respondían al instante y olvidaban al instante. Dale a una puerta su propia salida y empezará a recordar.

14 min · 45 XP

Todo lo construido hasta ahora tiene un problema: no tiene pasado. Una puerta AND no sabe qué dio hace un segundo, solo sabe qué hay en sus entradas ahora. Quita las entradas y la salida deja de significar nada. Para guardar un bit hace falta un circuito cuya salida dependa de lo que hizo antes, y las puertas normales nunca hacen eso.

El truco es la realimentación: conecta la salida de una puerta de vuelta a su propia entrada. Ahora el circuito tiene un estado, porque el valor del cable es a la vez causa y efecto. Empújalo a 1 y se queda en 1; empújalo a 0 y se queda en 0. Nadie de fuera tiene que sostener la entrada: el bucle se sostiene solo.

stored = NOT(NOT(stored))

stored = 1  ->  NOT(1) = 0  ->  NOT(0) = 1  ->  stays 1
stored = 0  ->  NOT(0) = 1  ->  NOT(1) = 0  ->  stays 0Un bucle hecho con dos puertas NOT retiene lo que le metas

En la práctica el bucle se construye con dos puertas apuntándose mutuamente, de modo que cada una sujeta a la otra. Añade una forma de anular el bucle por un instante —una línea de escritura— y podrás empujar dentro el bit que quieras. Suelta la línea de escritura y el bucle conserva ese bit. Este circuito se llama latch, y dos latches trabajando juntos con un reloj forman un flip-flop, que cambia de estado solo en el instante del pulso de reloj.

Write lineLatchOutputnothing is being writtenoutput feeds back into inputkeeps reporting the old bitwrite 1now reports 1 and holds itthe write line goes low againstill 1, the loop remembers

Encadena 64 latches y tienes un registro: 64 bits que el procesador lee y escribe como un solo número, situados justo al lado de la unidad aritmética para tenerlos en un solo ciclo. Un puñado de registros le basta al procesador para trabajar. La RAM es la misma idea repetida miles de millones de veces, con un decodificador de direcciones delante para que el procesador pueda decir «dame el byte de esta dirección»: más lenta y mucho mayor, pero construida con exactamente el mismo bucle de realimentación.

Práctica

  1. Un latch guarda el valor 1. Después se retira por completo la señal de entrada. ¿Qué da el latch a la salida?

    Pistas
    • Pregúntate a qué está conectada la salida, no qué hace la entrada ahora mismo.
    • Una puerta cuya salida vuelve a su propia entrada no necesita nada de fuera para mantener su valor.

    15 XP

  2. Ordena los pasos de escribir un bit en un latch y conservarlo.

    Pistas
    • Nada sobrevive a que se corte la corriente, así que empieza por cómo entra el bit mientras aún hay corriente.
    • El bucle es lo que retiene el valor; todo lo que viene después es solo leer el resultado hacia fuera.

    15 XP

  3. Empareja cada tipo de almacenamiento con lo que realmente es.

    Pistas
    • Un registro está dentro del procesador y se cuenta en decenas; la RAM se cuenta en miles de millones.
    • Velocidad y cercanía al procesador van juntas: cuanto más cerca está el almacenamiento, más rápido y más pequeño es.

    15 XP