Память: схема, которая отказывается забывать
Все вентили до сих пор отвечали мгновенно и тут же забывали. Подключи выход вентиля к его же входу — и он начнёт помнить.
У всего, что мы собрали, есть одна беда: у схемы нет прошлого. Вентиль AND не знает, что он выдавал секунду назад, он знает только то, что на его входах сейчас. Убери входы — и выход перестанет что-либо значить. Чтобы хранить бит, нужна схема, чей выход зависит от того, что она делала раньше, а обычные вентили так не умеют.
Хитрость в обратной связи: соедини выход вентиля обратно с его входом. Теперь у схемы есть состояние, потому что значение на проводе — одновременно и причина, и следствие. Толкни её в 1 — и она останется в 1; толкни в 0 — останется в 0. Ничему снаружи не нужно удерживать вход: петля держит себя сама.
stored = NOT(NOT(stored))
stored = 1 -> NOT(1) = 0 -> NOT(0) = 1 -> stays 1
stored = 0 -> NOT(0) = 1 -> NOT(1) = 0 -> stays 0Петля из двух вентилей NOT хранит то, что в неё положилиНа практике петлю собирают из двух вентилей, направленных друг на друга, так что каждый держит на месте другого. Добавь возможность на миг пересилить петлю — линию записи — и ты сможешь втолкнуть в неё нужный бит. Отпусти линию записи, и петля сохранит этот бит. Такая схема называется защёлкой, а две защёлки, работающие вместе по такту, образуют триггер, который меняет состояние только в момент тактового импульса.
Соедини 64 защёлки — и получишь регистр: 64 бита, которые процессор читает и пишет как одно число, и лежат они вплотную к арифметическому устройству, чтобы быть доступными за один такт. Горстки регистров процессору хватает для работы. Оперативная память — та же идея, повторённая миллиарды раз, только перед ней стоит дешифратор адреса, чтобы процессор мог сказать «дай байт по этому адресу»: медленнее и куда больше, но собрано из ровно той же петли обратной связи.
Практика
Защёлка хранит значение 1. Входной сигнал после этого убирают совсем. Что выдаёт защёлка?
Подсказки
- Спроси, к чему подключён выход, а не что делает вход прямо сейчас.
- Вентилю, выход которого возвращается на его же вход, ничего снаружи для удержания значения не нужно.
15 XP
Расставь шаги записи одного бита в защёлку и его хранения.
Подсказки
- Ничто не переживает пропажу питания, поэтому начни с того, как бит попадает внутрь, пока питание ещё есть.
- Значение держит петля; всё, что после, — это просто чтение результата наружу.
15 XP
Сопоставь каждый вид хранилища с тем, чем он на самом деле является.
Подсказки
- Регистр стоит внутри процессора, и его считают десятками; оперативную память считают миллиардами.
- Скорость и близость к процессору идут вместе: чем ближе хранилище, тем оно быстрее и меньше.
15 XP