Немного истории: как компьютеры помнили
Ферритовые кольца
Первым компьютерам нужна была память, которая быстро пишется, быстро читается и не забывает при выключении. В 1953 году в Массачусетском технологическом институте компьютер Whirlwind получил память на ферритовых кольцах (группа Джея Форрестера), и следующие двадцать лет почти все компьютеры помнили именно так.
Кольцо из феррита размером с маковое зерно можно намагнитить по часовой стрелке или против — это и есть бит.
Чтобы выбрать одно кольцо из тысяч, придумали совпадение токов: по каждому проводу пускают только половину тока, нужного для перемагничивания. Кольцо перевернётся только там, где встретились два провода.
Чтение разрушало бит: чтобы узнать, что в кольце, его пытались записать в 0 — если в проводе чтения проскакивал импульс, значит, там была 1, и её тут же записывали обратно. Зато при выключении кольца ничего не забывали.
Плоскости памяти плели руками: продевали тонкие провода сквозь кольца под микроскопом. Тысячи часов кропотливой работы на каждый килобайт.
ПЗУ, сплетённое руками
У бортового компьютера «Аполлона», который в 1969 году вёл корабль к Луне, была и постоянная память — тоже на кольцах, но устроенная иначе:
Программу не записывали, а вплетали на фабрике. Ошибку в программе исправляли перешиванием.
Память на кристалле
В 1969 году молодая фирма Intel выпускает первые микросхемы памяти: 3101 на 64 бита и 1101 на 256 бит — статическая память (SRAM): каждый бит держат транзисторы, пока есть питание. В 1970 году выходит Intel 1103 — динамическая память (DRAM) на 1024 бита. Бит в ней — это заряд маленького конденсатора; заряд утекает, поэтому память всё время «подзаряжают», перечитывая и перезаписывая. Зато ячейка крошечная, и уже через пару лет 1103 стала самой продаваемой микросхемой в мире — ферритовые кольца ушли.
Ячейку из одного транзистора и конденсатора придумал Роберт Деннард из IBM (1966). Почти вся оперативная память компьютеров и телефонов до сих пор устроена так.
Почему наша ячейка такая большая
В настоящей статической памяти бит — 6 транзисторов: два инвертора держат друг друга, а два ключа подключают их к общему проводу данных. Чтобы записать, внешняя схема просто «пересиливает» ячейку. Наш симулятор так не умеет: ключи в нём идеальные, у транзистора нет «силы», и две детали, тянущие провод в разные стороны, дают не победителя, а конфликт. Конденсатора, который медленно разряжается, в симуляторе тоже нет.
Поэтому наша ячейка — защёлка из вентилей первого набора плюс «кран» AND: 22 транзистора вместо 6. Она честно хранит бит, работает в любом режиме симулятора и собрана из деталей, которые вы уже знаете. А общий провод данных мы заменим вентилями ИЛИ — почему, станет видно в уроке 2.
А в Game & Watch?
У микроконтроллера Sharp SM5, который стоит в Game & Watch, память тоже статическая и лежит прямо на кристалле, рядом с процессором: несколько десятков байт 4-битных ячеек. Часть ячеек — это сегменты экрана: записал бит — сегмент загорелся. Ровно так устроена и экранная память нашей машины.