Разумеется, в разговоре люди используют сокращения. Обладатель 65 536 байтов памяти скажет: «У меня 64 килобайта (и я гость из далекого 1980 года)». Пользователь компьютера с памятью 33 554 432 байт уточнит: «У меня 32 мега». А везунчик, имеющий 1 073 741 824 байт памяти, подчеркнет: «У меня целый гиг».
Иногда упоминают килобиты или мегабиты (обратите внимание на использование слова «биты» вместо «байты»), но это бывает редко. Почти всегда, когда речь идет о памяти, сообщают количество байтов, а не битов. (Чтобы преобразовать байты в биты, нужно умножить их на 8.) Обычно когда в разговоре упоминаются килобиты или мегабиты, они имеют отношение к скорости передачи данных по кабелю и используются в таких словосочетаниях, как «килобиты в секунду» и «мегабиты в секунду». Например, когда речь идет о модеме 56 K, имеется в виду именно 56 килобит в секунду, а не килобайт; технология Gigabit Ethernet обеспечивает передачу одного гигабита информации в секунду и т. д.
Теперь, научившись собирать массивы RAM любого нужного размера, постараемся не сильно увлекаться. Давайте просто представим массив RAM емкостью 65 536 байт.
Почему 64 килобайт? Почему не 32 килобайт или не 128 килобайт? Потому что 65 536 — хорошее круглое число. Оно равно 216. Этот массив RAM имеет 16-битный адрес. Другими словами, этот адрес равен двум байтам. В шестнадцатеричной системе счисления значение этого адреса находится в диапазоне от 0000h до FFFFh.
Ранее я намекнул на то, что объем памяти, равный 64 килобайт, был характерен для персональных компьютеров, купленных в 1980-х годах, хотя эта память собиралась и не из телеграфных реле. Удастся ли сконструировать такое устройство, используя реле? Надеюсь, вы не рассматриваете такую возможность всерьез. Наша конструкция предполагает использование девяти реле для каждого бита памяти, поэтому для создания массива RAM 64 Kб × 8 потребуются почти пять миллионов реле.
Нам также не помешает пульт управления, позволяющий пользоваться этой памятью: записывать значения или считывать их. Такой пульт должен иметь 16 переключателей для указания адреса, восемь переключателей для задания 8-битного значения, которое мы хотим записать, еще одного переключателя для самого сигнала записи и восемь лампочек для отображения определенного 8-битного значения.
Все переключатели изображены в положении «Выключено» (0). Я также добавил переключатель с надписью «Перехват». Цель этого переключателя — позволить другим схемам использовать ту же память, к которой подключен пульт управления. Когда этот переключатель установлен в положение 0 (как показано на рисунке), остальные переключатели пульта управления ничего не делают. Однако когда переключатель установлен в положение 1, управление памятью осуществляется исключительно с помощью пульта.
Для создания переключателя «Перехват» потребуется набор селекторов «2 на 1», а именно 25 штук: шестнадцать — для сигналов «Адрес», восемь — для переключателей, позволяющих вводить данные, и еще один — для переключателя «Запись». Ниже показана схема.
Когда переключатель «Перехват» разомкнут (как показано на рисунке), на входы массива RAM 64 Кбайт × 8 «Адрес», «Данные» и «Запись» поступают сигналы извне, как показано над левым верхним углом блока селекторов «2 на 1». Когда переключатель «Перехват» замкнут, сигналы на входы массива RAM «Адрес», «Данные» и «Запись» поступают от переключателей на пульте управления. В любом случае сигналы «Вывод данных» из массива RAM поступают на восемь лампочек и, вероятно, куда-нибудь еще.
Массив RAM 64 Kбайт × 8 с таким пультом управления можно изобразить следующим образом.
Когда переключатель «Перехват» замкнут, вы можете использовать 16 переключателей «Адрес» для выбора любого из 65 536 адресов. Лампочки показывают 8-битное значение, которое в настоящий момент хранится в памяти по этому адресу. Вы можете использовать восемь переключателей «Данные» для задания нового значения, а записать это значение в память с помощью переключателя «Запись».
Массив RAM 64 Kб × 8 и пульт управления, безусловно, помогут вам отследить любое из 65 536 8-битных значений, которое может понадобиться. Однако эта конструкция также позволяет некоторым другим схемам использовать значения, которые мы сохранили в памяти, и записывать в нее новые.
Есть еще одна важная деталь, которую необходимо знать о памяти: когда в главе 11 вы познакомились с концепцией вентилей, я перестал рисовать отдельные реле, из которых состоят эти вентили. В частности, с тех пор я больше не указывал на схемах, что каждое реле подключено к какому-то источнику питания. Всякий раз при срабатывании реле электричество течет через катушку электромагнита и удерживает металлический контакт на месте.
Итак, у вас есть массив RAM 64 Kб × 8, весь объем которого заполнен вашими любимыми байтами. Что произойдет, если вы отключите его от источника питания? Все электромагниты потеряют свои магнитные свойства, и с громким щелчком все контакты реле вернутся в свое исходное положение. А содержимое этой памяти? Оно исчезнет навсегда!
Вот почему память с произвольным доступом также называется энергозависимой. Для хранения содержимого ей требуется постоянное энергоснабжение.
Глава 17
Автоматизация
Человек часто демонстрирует удивительную находчивость и усердие, но в то же время ему присуща страшная лень. Всем известно, что люди не любят работать. Наше отвращение к работе так сильно, а изобретательность настолько выражена, что мы готовы потратить бесчисленные часы на проектирование и сборку устройств, которые могли бы урезать наш рабочий день на несколько минут. И мало что может доставить человеку больше удовольствия, чем видение, в котором он расслабленно качается в гамаке, наблюдая, как его новенькое изобретение косит газон. Боюсь, на следующих страницах вы не найдете чертежей автоматической газонокосилки. Однако в этой главе будет описан ряд устройств в порядке возрастания сложности, позволяющих автоматизировать процесс сложения и вычитания чисел. Понимаю, что подобное заявление вряд ли поразит вас. К концу этой главы мы соберем машину, которая сможет решить практически любую задачу, предполагающую выполнение сложения и вычитания, а это действительно весьма обширный класс.
Разумеется, чем устройство заковыристее, тем оно сложнее, поэтому часть информации может показаться трудной. Никто не будет винить вас, если пропустите излишне сложные фрагменты. Время от времени у вас будет возникать желание взбунтоваться и навсегда отказаться от попыток решить математическую задачу с помощью электрических и механических устройств. Обязательно следите за моей мыслью, потому что к концу главы мы изобретем машину, которую с полным правом можно назвать компьютером.