Динамическая оперативная память была дешевле статической в 2–4 раза. Она позволила вместо 32 микросхем статической памяти, необходимых для обработки компьютером команд, ограничиться только 8 микросхемами. Но для ее работы требовались схемы, обеспечивающие процессору доступ к каждой ячейке памяти каждую 1/2000 долю секунды, чтобы он мог считывать данные этой ячейки и либо записывать новые, либо стирать старые (т. е. нужно было постоянное обновление памяти). В динамической оперативной памяти (этот тип используется во всех современных ПК) каждый бит данных стирался за 1/2000 секунды, в случае если он не был прочитан и перезаписан. Это напоминает «стекание» электронов с анода каждую 1/2000 долю секунды.
Мне пришлось создать несколько дополнительных микросхем и немного поразмыслить, чтобы собрать компьютер. Но когда я это сделал, хвала Господу, у меня уже были элементы, читающие последовательность битов, кодирующих изображения для телевизионного экрана на моем терминале. Поэтому я сказал себе: «Я просто использую эти элементы для регулярного обновления данных в оперативной памяти (RAM)». В результате у микропроцессора был бы постоянный доступ к RAM, и адреса видеоданных хранились бы в ней, хотя и не для чтения видеоданных (тогда я еще использовал созданный ранее терминал, в котором была собственная память для хранения данных, отображаемых на экране). Однако эти элементы позволяли просто записывать данные в правильной последовательности, чтобы обновлять содержимое ячеек RAM. Мне пришлось немного потрудиться над компоновкой комплектующих, но в результате удалось собрать компьютер с использованием значительно меньшего количества микросхем. К тому же он был и меньших размеров, что впечатляло всех, кто его видел. Он обошелся дешевле и работал быстрее конкурирующих моделей. При правильном подходе к делу можно добиться сразу нескольких целей.
В конце 1960‑х выпускалось огромное количество разных мини‑компьютеров, но на всех устанавливались одинаковые микросхемы: 7400 микросхем с четырьмя вентилями на каждой (на ней находился сумматор, полусумматор или мультиплексор). Все поставщики рассуждали таким образом: «Давайте соберем компьютер. Как и во всех предыдущих моделях в нем будут использоваться машинные команды, которые позволяют добавить единицу в регистр, и будут применяться многочисленные регистры, данные из них можно будет передавать в память и по отношению к ним выполнять операции И, ИЛИ, а также исключающее ИЛИ». Производители составляли набор инструкций, обеспечивающий работу компьютера: «Если мы добавим в компьютер достаточно команд, то со временем они превратятся в операционную систему и языки программирования».
А затем появилась компания Data General со своим мини‑компьютером Nova, в котором вместо использования 50 команд для выполнения различных математических операций применялась всего одна из 16 битов: шесть единиц и шесть нулей. Пара этих единиц и нулей указывала, данные каких четырех регистров будут использоваться. Вторая пара битов относилась к применению других четырех регистров. Следующая пара указывала, требуется ли смещение или сдвиг результата (что эквивалентно умножению или делению на два в двоичной системе). Также существовали биты для определения необходимости переноса. То есть все 16 битов несли какую‑то смысловую нагрузку. Я все это внимательно изучил, самостоятельно воссоздавая на бумаге принципы работы компьютера Nova. При этом я выяснил, что два бита кодируют один из четырех регистров, поэтому отправил их на вход микросхемы 4‑входового мультиплексора. Мне не пришлось придумывать последовательность выполнения тех или иных операций. Я просто реализовал все с точки зрения логики. Три бита подавались на вход логической микросхемы, чтобы определить тип битовой операции (И, ИЛИ, исключающее ИЛИ), и еще один бит – в сумматор в качестве флага переноса. В результате этого усовершенствования в Nova осталось в два раза меньше микросхем, чем в других мини‑компьютерах, созданных компаниями Varian, Digital Equipment Corp. и Hewlett‑Packard (я сконструировал на бумаге их все). Я понял, что это только ему на пользу, поскольку лишь в этом случае возникает настоящая архитектура ПК.
Всю жизнь я старался оптимизировать устройства. Вы не просто экономите детали, но уменьшаете сложность и повышаете надежность устройства. Кроме того, более простой проект легче понять, что позволяет избежать ошибок и недостатков.
Ливингстон. Вы воссоздали схему работы всех компьютеров того времени еще когда учились в школе? У себя дома, просто ради развлечения?