Глава 18
От счетов к микросхемам
На протяжении всей записанной истории люди изобретали различные умные устройства и машины, стремясь хоть немного упростить процесс математических вычислений. Несмотря на то что человеческий вид, по-видимому, обладает врожденными способностями к вычислению, в этом нам часто требуется помощь. Нередко мы ставим такие сложные задачи, с которыми не можем справиться самостоятельно.
Развитие систем счисления можно считать самым ранним инструментом, помогавшим людям вести учет товаров и имущества. Представители многих культур, в том числе древние греки и американские индейцы, по-видимому, использовали для счета мелкие камешки и зерна. В Европе это привело к изобретению счетных досок, на востоке — счетов.
Несмотря на то что счеты обычно ассоциируются с азиатскими культурами, они, по-видимому, были завезены торговцами в Китай примерно в 1200 году н. э.
Никто никогда по-настоящему не получал удовольствия от умножения и деления, однако мало кто предпринимал какие-либо действия для решения этой проблемы. Шотландский математик Джон Непер (1550–1617) был одним из таких людей. Он изобрел логарифмы для упрощения счетных операций. Произведение двух чисел — это сумма их логарифмов. Так что, если нужно перемножить два числа, вы находите их в таблице логарифмов, складываете числа из таблицы, а затем ищете в таблице число, логарифм которого соответствует полученной сумме. Построение таблиц логарифмов на протяжении последующих 400 лет занимало одни величайшие умы, в то время как другие разрабатывали небольшие устройства, заменяющие такие таблицы. Долгая история логарифмической линейки началась со счетной линейки, созданной Эдмундом Гюнтером (1581–1626) и усовершенствованной Уильямом Отредом (1574–1660). История этой линейки практически завершилась в 1976 году, когда компания Keuffel & Esser презентовала последнюю произведенную линейку Смитсоновскому институту в Вашингтоне (округ Колумбия). Причиной ее заката послужило изобретение ручного калькулятора.
Кроме того, Непер изобрел еще одно счетное устройство для облегчения умножения, состоящее из рядов чисел, выгравированных на кости или роге, благодаря чему оно получило название «кости Непера». Самый первый механический калькулятор в какой-то мере представлял автоматизированную версию костей Непера, созданную примерно в 1620 году Вильгельмом Шиккардом (1592–1635). Другие калькуляторы, сконструированные из сцепляющихся шестеренок и рычагов, являются почти такими же старыми приспособлениями. Среди наиболее выдающихся изобретателей механических калькуляторов можно выделить двух математиков и философов: Блеза Паскаля (1623–1662) и Готфрида Вильгельма Лейбница (1646–1716).
Наверняка вы помните, какую сложность создавал перенос бита как в первоначальном 8-битном сумматоре, так и в компьютере, который, помимо всего прочего, автоматизировал операцию сложения чисел, имеющих более восьми разрядов. Поначалу этот перенос кажется просто небольшим трюком, использующимся при сложении, однако в случае с сумматорами перенос бита — основная проблема. Если вы разработали сумматор, который делает все, кроме переноса бита, считайте, что вы ни на шаг не приблизились к цели!
Ключевой фактор при оценке старых вычислительных машин — насколько успешно они справлялись с переносом. Например, конструкция механизма переноса, разработанная Паскалем, не позволяла машине производить вычитание. Для того чтобы вычесть одно число из другого, необходимо было дополнение до девяти, которое я продемонстрировал в главе 13. Эффективные механические калькуляторы, которыми могли пользоваться люди, появились только к концу XIX века.
Одним из любопытных изобретений, которому предстояло значительно повлиять на историю вычислений, а также на текстильную промышленность, был автоматический ткацкий станок, разработанный Жозефом Жаккаром (1752–1834). В станке Жаккара, созданном в 1804 году, для задания узора ткани использовались металлические карты с пробитыми в них отверстиями (вроде перфокарт для самоиграющих пианино). Величайшим достижением Жаккара стал его черно-белый автопортрет в шелке, на создание которого потребовалось около десяти тысяч карт.
В XVIII веке вычислителем назывался человек, нанятый специально для того, чтобы производить вычисления. Большим спросом пользовались таблицы логарифмов, а таблицы тригонометрических функций широко применялись для астрономической навигации. Если вам нужно было опубликовать новый набор таблиц, приходилось нанимать многочисленных «компьютеров», организовывать их работу, а затем систематизировать полученные данные. Разумеется, ошибки могли возникнуть на любой стадии, начиная от расчетов и заканчивая подготовкой к печати.
Стремлением избавить математические таблицы от ошибок руководствовался в своей работе Чарльз Бэббидж (1791–1871), британский математик и экономист, практически современник Сэмюэла Морзе.
В то время математические таблицы (например, логарифмов) создавались не путем вычисления фактического логарифма для каждой записи. Это заняло бы слишком много времени. Вместо этого логарифмы вычислялись для избранных чисел, а логарифмы остальных чисел можно было найти довольно просто — путем интерполяции с использованием так называемых разностей.
В начале 1820-х годов Бэббидж считал, что он в состоянии разработать и сконструировать машину для автоматизации процесса составления таблицы, вплоть до подготовки к печати. Это устранило бы ошибки. Он придумал «разностную машину», которая по сути была большим механическим сумматором. Многоразрядные десятичные числа представлялись с помощью зубчатых колес, каждое из которых могло находиться в любом из десяти положений. Отрицательные числа обрабатывались с использованием дополнений до десяти. Несмотря на то что ранние модели доказали работоспособность конструкции Бэббиджа, разностная машина так никогда и не была завершена, поскольку создавалась на гранты британского правительства, которых, разумеется, никогда не хватало. В 1833 году Бэббидж прекратил работу над ней.
Однако к этому времени у Бэббиджа возникла лучшая идея. Она заключалась в создании так называемой аналитической машины, разработка конструкции которой занимала ученого до самой смерти, причем ему удалось фактически собрать несколько небольших моделей и частей этого механизма.
Аналитическая машина — устройство, наиболее приближенное к компьютеру из всего, что было создано в XIX веке. Конструкция Бэббиджа предусматривала хранилище (концептуально напоминающее память компьютера) и мельницу (устройство для выполнения арифметических операций). Умножение можно было производить путем многократного сложения, а деление — путем многократного вычитания.
Самое интересное заключается в том, что аналитическую машину можно было запрограммировать с помощью карт наподобие тех, что использовались в ткацком станке Жаккара. Как выразилась Августа Ада Байрон, графиня Лавлейс (1815–1852), в примечаниях к своему переводу статьи, написанной итальянским математиком об аналитической машине Бэббиджа: «Можно сказать, что аналитическая машина плетет алгебраические узоры подобно тому, как ткацкий станок Жаккара плетет цветы и листья».
Бэббидж, кажется, был первым, кто осознал важность условных переходов в компьютерах. Снова приведем слова Ады Байрон: «Таким образом, цикл операций следует понимать как любой набор операций, выполняемый более одного раза. Цикл является циклом вне зависимости от того, повторяется он дважды или неопределенное число раз, поскольку именно факт повторения делает цикл тем, чем он является. Во многих анализируемых случаях существуют рекуррентные группы, состоящие из одного или нескольких циклов, то есть цикл цикла или цикл циклов».
Несмотря на то что разностная машина в конечном итоге была сконструирована Георгом Шютцем и его сыном Эдвардом в 1853 году, машины Бэббиджа оставались забытыми, о них вспомнили только в 1930-х, когда люди начали исследовать основы информатики. К тому времени все, чего достиг Бэббидж, уже было превзойдено более поздними технологиями, и он мало что мог предложить компьютерному инженеру XX века, кроме значительно опережающего свое время предвидения автоматизации.
Еще одним толчком для развития информатики послужила Конституция Соединенных Штатов Америки. Помимо всего прочего, в ней содержится призыв к проведению переписи населения каждые десять лет. При проведении переписи 1880 года собиралась информация о возрасте, поле и национальности. На анализ данных ушло около семи лет.
Опасаясь того, что анализ переписи 1890 года займет больше десятилетия, Бюро переписи населения изучило возможность ее автоматизации и выбрало механизм, придуманный Германом Холлеритом (1860–1929), который работал в качестве статистика в 1880 году.
Холлерит планировал использовать картонные перфокарты размером 168,278 × 82,551 мм. Маловероятно, что Холлерит знал о том, как Чарльз Бэббидж использовал карты для программирования своей аналитической машины, однако он почти наверняка был знаком с использованием карточек в ткацком станке Жаккара. Отверстия в этих карточках были организованы в 24 столбца по 12 позиций, что в общей сложности давало 288 позиций. Эти позиции соответствовали определенным характеристикам человека, участвующего в переписи. Переписчик указывал эти особенности, пробивая прямоугольные отверстия размером в четверть дюйма в соответствующем месте карты.
Читая книгу, вероятно, вы настолько привыкли мыслить в терминах двоичных кодов, что могли предположить, что карта с 288 возможными отверстиями способна хранить 288 бит информации. Однако эти карты использовались не так.
Например, перфокарта, применяемая при переписи в чисто двоичной системе, имела бы одну позицию для пола. Она была бы либо пробита — в случае, если опрашиваемый — мужчина, либо не пробита — в случае, если это женщина (или наоборот). Однако карты Холлерита предусматривали две позиции для пола: одна пробивалась для мужчин, другая — для женщин. Аналогичным образом переписчик указывал возраст субъекта, пробивая два отверстия. Первое обозначало пятилетний диапазон: от 0 до 4, от 5 до 9, от 10 до 14 и т. д. Второе отверстие пробивалось в одной из пяти позиций для обозначения точного возраста в этом диапазоне. Для кодирования возраста требовались в общей сложности 28 позиций на карте. При использовании двоичной системы нужны были бы всего семь позиций для кодирования любого возраста от 0 до 127 лет.
Мы должны простить Холлерита за то, что он не внедрил двоичную систему для записи информации, собранной при переписи населения. Преобразование возраста в двоичные числа было непосильной задачей для тех, кто проводил перепись 1890 года. Кроме того, существует практическая причина, по которой использование перфокарт не может быть полностью основанным на двоичной системе. Двоичная система предполагает вероятность того, что будут пробиты все (или почти все) отверстия, что сделает карту чрезвычайно хрупкой.
Данные переписи собираются так, чтобы их можно было подсчитать, то есть обобщают в таблицы. Разумеется, вы хотите знать, сколько людей живет в том или ином районе, однако также интересно получить сведения о распределении населения по возрасту. Для этого Холлерит сконструировал табулятор — машину, в которой ручное управление сочеталось с автоматизацией. Оператор прижимал к каждой перфокарте пресс с 288 подпружиненными штырями. В тех местах карточки, где были пробиты отверстия, эти штыри погружались в резервуар с ртутью, что приводило к замыканию электрической цепи, активировавшей электромагнит, который затем увеличивал на единицу значение десятичного счетчика.
Холлерит использовал электромагниты и в машине для сортировки перфокарт. Например, вам может понадобиться собрать отдельную возрастную статистику по каждой профессии. Сначала нужно сортировать карты по профессиям, затем отдельно для каждой из них собрать данные по возрастам. Сортировочная машина использовала тот же ручной пресс, что и табулятор, однако сортировщик применял электромагниты для того, чтобы открывать задвижки одного из 26 отделений. В это отделение оператор опускал карту и вручную закрывал задвижку.
Этот эксперимент по автоматизации переписи 1890 года оказался чрезвычайно успешным. В общей сложности было обработано более 62 миллионов карточек. Они содержали в два раза больше данных по сравнению с тем, что удалось собрать в ходе переписи 1880 года, а обработаны эти сведения были примерно в три раза быстрее. Холлерит и его изобретения стали известны во всем мире. В 1895 году он даже отправился в Москву и успешно продал свое оборудование для первой российской переписи 1897 года.
Герман Холлерит положил начало длинной последовательности событий. В 1896 году он основал компанию Tabulating Machine Company, занимающуюся сдачей в аренду и продажей оборудования для работы с перфокартами. К 1911 году в результате пары слияний она превратилась в Computing-Tabulating-Recording Company, или C-T-R. В 1915 году ее президентом стал Томас Джон Уотсон (1874–1956), который в 1924 году поменял название на International Business Machines Corporation, или IBM.
К 1928 году оригинальные карты, использовавшиеся в переписи 1890 года, превратились в знаменитые перфокарты IBM с 80 столбцами и 12 строками. Они продолжали активно использоваться на протяжении более 50 лет, и даже в последующие годы их иногда называли картами Холлерита. Об эволюции этих карт расскажу подробнее в главах 20, 21 и 24.
Прежде чем перенестись в двадцатое столетие, давайте убедимся, что у нас сложилось правильное представление об этой эпохе. По очевидным причинам в данной книге я уделял пристальное внимание изобретениям, которые являются цифровыми по своей природе. К ним относятся телеграф, азбука Брайля, машины Бэббиджа и карты Холлерита. При работе с цифровыми концепциями и устройствами вы легко можете подумать, что цифровым является весь мир. Однако открытия и изобретения XIX века были явно не цифровыми. Действительно, очень малая часть природного мира, который мы воспринимаем с помощью органов чувств, цифровая. Скорее, мир — это континуум, который нелегко представить с помощью чисел.
Несмотря на то что Холлерит использовал реле в своих карточных табуляторах и сортировщиках, компьютеры, созданные на основе реле, которые впоследствии стали называться электромеханическими, появились только в середине 1930-х годов. В этих машинах обычно использовались не телеграфные реле, а реле, разработанные для маршрутизации телефонных вызовов.
Эти первые релейные компьютеры не были похожи на то, что мы собирали в предыдущей главе (их конструкция основана на микропроцессорах, созданных в 1970-х). Сегодня для нас очевидно, что компьютеры должны использовать двоичные числа, однако так было не всегда.
Другое отличие нашего релейного компьютера от первых настоящих машин в том, что никто в 1930-х годах не был настолько сумасшедшим, чтобы собрать из реле память объемом 524 288 бит! Стоимость и требования к пространству и мощности делали невозможным создание такой памяти. Скудный объем доступной памяти использовался исключительно для хранения промежуточных результатов. Сами программы находились на физическом носителе, например на бумажной ленте с перфорацией. Действительно, наш процесс ввода кода и данных в память — более современная концепция.
Хронологически первый релейный компьютер, по-видимому, сконструировал Конрад Цузе (1910–1995), который в 1935 году, будучи студентом-инженером, начал собирать машину в квартире своих родителей в Берлине. Эта машина использовала двоичные числа, но в ее ранних версиях применялась механическая память, а не реле. Для программирования своих компьютеров Цузе пробивал отверстия в старой 35-миллиметровой кинопленке.
В 1937 году Джордж Стибиц (1904–1995) из Bell Telephone Laboratories принес домой пару телефонных реле и собрал на своем кухонном столе однобитный сумматор, который его жена позднее назвала «К-машиной» («К» — значит «кухня»). Этот эксперимент лег в основу компьютера Complex Number Computer, созданного в Bell Labs в 1939 году.
Между тем студент выпускного курса Гарварда Эйкен (1900–1973) искал способ выполнения множества однообразных вычислений, что привело к сотрудничеству Гарварда и IBM, в результате которого был создан автоматический вычислитель, управляемый последовательностями, впоследствии получивший имя «Марк I». Работа над этим устройством была завершена в 1943 году. Этот первый цифровой компьютер, способный печатать таблицы, наконец реализовал мечту Чарльза Бэббиджа. Компьютер «Марк II» был самой крупной релейной машиной, использующей 13 тысяч реле. В Гарвардской вычислительной лаборатории, возглавляемой Эйкеном, впервые был прочитан курс информатики.
Реле подходили для создания компьютеров, но были неидеальны. Поскольку они были механическими, их работа основывалась на изгибании металлической пластины. После продолжительной работы реле могли сломаться, а также выйти из строя из-за частичек грязи или бумаги, застрявших между контактами. Известен случай, когда в 1947 году из реле компьютера «Марк II» в Гарварде была извлечена мошка. Грейс Хоппер (1906–1992), сотрудничавшая с Эйкеном с 1944 года, а позднее ставшая известным специалистом в области языков программирования, приклеила эту мошку в журнал с пометкой: «Первый отловленный баг».
Возможная замена для реле — вакуумная лампа, разработанная Джоном Флемингом (1849–1945) и Ли де Форестом (1873–1961) для радио. К началу 1940-х годов вакуумные лампы повсеместно использовались для усиления телефонных сигналов. Практически в каждом доме был радиоприемник, наполненный светящимися трубками, которые усиливали радиосигналы, обеспечивая их слышимость. Как и в случае с реле, из вакуумных ламп можно собрать вентили И, ИЛИ, И-НЕ и ИЛИ-НЕ.
Не важно, из чего собраны вентили — из реле или из вакуумных ламп. Вентили всегда можно объединить в сумматоры, селекторы, дешифраторы, триггеры и счетчики. Все, что я говорил о компонентах на основе реле в предшествующих главах, остается в силе при замене реле вакуумными лампами.
Тем не менее у вакуумных ламп наблюдались свои недостатки: они были дорогими, потребляли много электричества и выделяли много тепла. Самая большая проблема заключалась в том, что лампы в итоге перегорали. Это был факт, с которым людям приходилось мириться. Владельцы ламповых радиоприемников привыкли к необходимости периодически заменять в них лампы. Телефонная система была спроектирована с избыточной надежностью, поэтому периодически перегорающие лампы не представляли большой проблемы (в любом случае никто не ожидает от телефонной системы безупречной работы). А вот если лампа перегорает в компьютере, это можно обнаружить не сразу. Кроме того, в компьютере используется так много вакуумных ламп, что они могут перегорать в среднем каждые несколько минут.
Большое преимущество использования вакуумных ламп по сравнению с реле в том, что лампы могут переключаться из одного состояния в другое примерно за одну миллионную долю секунды — за одну микросекунду. Вакуумная лампа изменяет состояние (включается или выключается) в тысячу раз быстрее, чем реле, которое переключается из одного состоянии в другое в лучшем случае примерно за одну миллисекунду, то есть тысячную долю секунды. Интересно отметить, что скорость не представляла серьезной проблемы на ранних этапах развития компьютерной индустрии, поскольку общая скорость вычислений была связана со скоростью, с которой машина считывала программу с бумажной или пластиковой ленты. Пока компьютеры работали на этом принципе, преимущество вакуумных ламп по сравнению с реле не имело значения.
Начиная с 1940-х годов вакуумные лампы стали вытеснять реле в конструкции новых компьютеров. К 1945 году реле совсем перестали использоваться. В то время как релейные машины назывались электромеханическими компьютерами, вакуумные лампы стали основой для первых электронных компьютеров.
В 1943 году в Великобритании начал работать компьютер «Колосс», использовавшийся для расшифровки сообщений, созданных с помощью немецкой шифровальной машины «Энигма». Над этим проектом (и некоторыми более поздними британскими компьютерами) среди прочих работал Алан Тьюринг (1912–1954), который в наши дни известен двумя статьями. В первой, опубликованной в 1937 году, он ввел понятие «вычислимость» — анализ того, что могут и чего не могут сделать компьютеры. Он также разработал абстрактную модель компьютера, которая теперь известна под названием машины Тьюринга. Вторая известная статья была посвящена искусственному интеллекту. Автор представил тест для машинного интеллекта — тест Тьюринга.
В Электротехнической школе Мура при Пенсильванском университете Джон Эккерт (1919–1995) и Джон Моучли (1907–1980) разработали компьютер ENIAC (Electronic Numerical Integrator and Computer, электронный числовой интегратор и вычислитель). В нем использовались 18 тысяч вакуумных ламп, и компьютер был закончен в конце 1945 года. ENIAC, вес которого составлял около 30 тонн, можно считать самым большим компьютером в истории. К 1977 году в продаже уже были гораздо более быстрые компьютеры. Однако Эккерт и Моучли не смогли запатентовать машину из-за заявки их конкурента Джона Атанасова (1903–1995), собравшего электронный компьютер раньше, который, однако, так никогда и не заработал.
Компьютер ENIAC привлек внимание математика Джона фон Неймана (1903–1957). Родившийся в Венгрии, фон Нейман проживал в Соединенных Штатах с 1930 года. Выдающийся человек, известный своей способностью выполнять в уме сложнейшие арифметические операции, фон Нейман был профессором математики в Принстонском институте перспективных исследований и изучал все — от квантовой механики до применения теории игр в экономике.
Джон фон Нейман помог разработать компьютер EDVAC (Electronic Discrete Variable Automatic Computer, электронный автоматический вычислитель с дискретными переменными), являвшийся усовершенствованной версией компьютера ENIAC. В статье 1946 года «Предварительное обсуждение логической конструкции электронной вычислительной машины», написанной в соавторстве с Артуром Берксом и Германом Голдстайном, он описал несколько особенностей компьютера, благодаря которым машина EDVAC значительно превосходила ENIAC. Разработчики EDVAC решили, что компьютер должен использовать двоичную систему счисления. В машине ENIAC использовалась десятичная. Кроме того, компьютер должен обладать максимально возможным объемом памяти, и эта память должна хранить и программный код, и данные, получаемые в процессе работы. С компьютером ENIAC дело обстояло не так. Программирование ENIAC осуществлялось с помощью переключателей и соединения кабелей. Эти инструкции должны были храниться в памяти последовательно и адресоваться с помощью счетчика команд, при этом допускались условные переходы. Такой принцип стал известен как концепция запоминаемой программы.
Эти принципы были таким важным шагом в развитии информатики, что сегодня мы говорим о них как об архитектуре фон Неймана. Компьютер, который мы собрали в предыдущей главе, представляет собой классическую машину фон Неймана. Однако у архитектуры фон Неймана есть узкое место. Машина фон Неймана обычно тратит значительное время на извлечение инструкций из памяти при подготовке к их выполнению. Напомним, что окончательная конструкция компьютера из главы 17 предполагала, что при работе с той или иной инструкцией три четверти времени затрачивается на ее извлечение.
Во времена компьютера EDVAC было нецелесообразно создавать из вакуумных ламп память большого объема. Вместо этого было предложено несколько весьма странных решений. Среди успешных было использование памяти с ртутной линией задержки, в которой применялись пятифутовые трубки с ртутью. С одного конца трубки с интервалом около одной микросекунды в ртуть посылались слабые импульсы. За одну миллисекунду они достигали другого конца трубки, где детектировались как звуковые волны и отправлялись обратно. Таким образом, каждая трубка с ртутью могла хранить около 1024 бит информации.
Только в середине 1950-х годов была разработана память, состоявшая из больших массивов маленьких намагниченных металлических колец, через которые проходили провода. Каждое такое кольцо могло хранить один бит информации.
Джон фон Нейман был не единственным человеком, который размышлял о природе компьютеров в 1940-х годах.
Клод Шеннон также был влиятельным мыслителем. В главе 11 я обсуждал его магистерскую диссертацию 1938 года, в которой была установлена взаимосвязь между переключателями, реле и булевой алгеброй. В 1948 году, работая в Bell Telephone Laboratories, он опубликовал в Bell System Technical Journal статью «Математическая теория связи», где не только впервые употребил в печати слово «бит», но и заложил основы раздела науки, известной сегодня как теория информации.
Теория информации изучает возможность передачи цифровой информации при наличии шума (который обычно препятствует передаче всей информации), а также способы его компенсации. В 1949 году Шеннон написал первую статью о программировании компьютера для игры в шахматы, а в 1952 году разработал механическую мышь, управляемую реле, которая могла находить выход из лабиринта. Помимо всего прочего, в Bell Labs Шеннон был хорошо известен еще и своим умением ездить на одноколесном велосипеде, при этом жонглируя.
Норберт Винер (1894–1964), который в возрасте 18 лет в Гарварде получил степень доктора философии по математике, наиболее известен благодаря своей книге «Кибернетика, или Управление и связь в животном и машине» (1948). Винер придумал название «кибернетика» (от греческого «кормчий») для теории о взаимосвязи биологических процессов в людях и животных с механикой компьютеров и роботов. В поп-культуре вездесущая приставка «кибер-» теперь обозначает все, что имеет отношение к компьютерам. В частности, миллионы связанных через интернет компьютеров называются киберпространством. Это слово было придумано писателем Уильямом Гибсоном и появилось в романе 1984 года «Нейромант», написанном в жанре киберпанка.
В 1948 году компания Eckert-Mauchly Computer Corporation (позднее вошедшая в Remington Rand) начала работу над тем, чему предстояло стать первым доступным широкой аудитории компьютером, — UNIVAC (Universal Automatic Computer, универсальный автоматический компьютер). Он был закончен в 1951 году, а первый экземпляр был доставлен в Бюро переписи населения. Компьютер UNIVAC дебютировал в эфире канала CBS, где использовался для прогнозирования результатов президентских выборов 1952 года. Уолтер Кронкайт называл его электронным мозгом. В 1952 году компания IBM объявила о выпуске первой коммерческой компьютерной системы — 701.
Так началась долгая история использования компьютеров корпорациями и правительством. Какой бы интересной ни была эта история, сейчас мы перейдем к обсуждению другой тенденции, зародившейся в 1947 году, которая позволила уменьшить стоимость и размер компьютеров, превратив их в бытовую технику. Этот прорыв в области электроники едва не остался незамеченным.
Корпорация Bell Telephone Laboratories на протяжении многих лет была местом, где умные люди имели возможность работать практически над любым интересовавшим их проектом. К счастью, некоторые из них увлекались компьютерами. Я уже упоминал Джорджа Стибица и Клода Шеннона, которые внесли значительный вклад в развитие вычислительной техники, работая в Bell Labs. Позднее, в 1970-х годах, в Bell Labs была разработана компьютерная операционная система Unix и язык программирования C, о которых расскажу позднее.
Корпорация Bell Labs возникла 1 января 1925 года, когда компания American Telephone and Telegraph официально отделила свои научные и технические исследовательские подразделения от остальной части бизнеса, создав дочернее предприятие. Основная цель Bell Labs заключалась в разработке технологий для улучшения работы телефонной системы. К счастью, это поручение было достаточно туманным и предполагало всевозможные направления исследований, в том числе очевидную и не теряющую своей актуальности задачу, связанную с усилением передаваемого по проводам звукового сигнала без его искажения.
Начиная с 1912 года компания Bell System работала над ламповыми усилителями. Значительная часть исследований и разработок была направлена на усовершенствование вакуумных ламп с целью их использования в телефонной системе. Несмотря на проделанную работу, вакуумные лампы по-прежнему оставляли желать лучшего. Они были большими, потребляли много электроэнергии и со временем перегорали. Однако у них не было альтернативы.
Все изменилось 16 декабря 1947 года, когда два физика из Bell Labs, Джон Бардин (1908–1991) и Уолтер Браттейн (1902–1987), собрали усилитель другого типа из германиевой пластины — элемента, известного как полупроводник, — и полоски золотой фольги. Через неделю они продемонстрировали усилитель своему шефу Уильяму Шокли (1910–1989). Это был первый транзистор, устройство, которое некоторые считают самым важным изобретением XX века.
Транзистор появился не на пустом месте. За восемь лет до этого, 29 декабря 1939 года, Шокли написал в своей записной книжке: «Сегодня мне пришло в голову, что в принципе можно создать усилитель, использующий вместо вакуумных ламп полупроводники». После демонстрации первого транзистора много лет ушло на его доработку. Только в 1956 году Шокли, Бардин и Браттейн получили Нобелевскую премию по физике «за исследования полупроводников и открытие транзисторного эффекта».
Как вы помните, электроны в атоме распределены по оболочкам, окружающим ядро. Медь, золото и серебро характеризуются наличием только одного электрона на внешней оболочке их атомов. Этот электрон легко может оторваться от остальной части атома и двигаться, создавая электрический ток. Противоположностью проводников являются изоляторы, например резина и пластик, которые практически не проводят электричество.
Германий и кремний (а также некоторые соединения) называются полупроводниками не потому, что они проводят электричество в два раза хуже, чем проводники, а потому, что их проводимостью можно управлять различными способами. Полупроводники имеют четыре электрона на внешней оболочке атома, что составляет половину от их максимально возможного количества. В чистом полупроводнике атомы образуют очень устойчивые связи, создавая кристаллическую решетку, подобную кристаллической решетке алмаза. Такие полупроводники проводят электричество не очень хорошо.
Однако полупроводники можно легировать, то есть добавить в них некоторые примеси. Один тип примесей добавляет дополнительные электроны к тем, которые необходимы для создания связи между атомами. Они называются полупроводниками n-типа (n — от английского negative — «отрицательный»). В результате добавления другого типа примесей получается полупроводник p-типа (p — от positive — «положительный»).
Чтобы создать усилитель из полупроводников, нужно между двумя слоями полупроводника n-типа расположить прослойку из полупроводника p-типа. Получившееся устройство называется NPN-транзистором, а тремя его составными частями являются коллектор, база и эмиттер.
На рисунке приведено схематическое изображение NPN-транзистора.
Небольшое напряжение на базе управляет гораздо большим током, проходящим от коллектора к эмиттеру. При отсутствии напряжения на базе транзистор закрывается.
Как правило, транзисторы имеют вид небольших металлических цилиндров диаметром примерно 6,4 миллиметра с тремя проводами.
Разработка транзистора ознаменовала начало эры твердотельной электроники, которая называется так потому, что транзисторы не требуют использования вакуумных ламп и создаются из твердых веществ, в частности из полупроводников, чаще всего из кремния (в наши дни). Помимо того, что по сравнению с вакуумными лампами транзисторы имеют куда меньшие размеры, они потребляют гораздо меньше электроэнергии, генерируют меньше тепла и дольше служат. Носить в кармане ламповый радиоприемник было невозможно. Транзисторный радиоприемник может питаться от небольшой батарейки и, в отличие от лампового, не нагревается. Ношение транзисторного радиоприемника в кармане стало возможным для некоторых счастливчиков, распаковавших подарки в рождественское утро 1954 года. В этих первых карманных радиоприемниках использовались транзисторы, выпущенные компанией Texas Instruments, сыгравшей важную роль в полупроводниковой революции.
Однако первым коммерческим применением транзисторов было их использование в слуховых аппаратах. В память о многолетней работе Александра Белла с глухими людьми корпорация AT&T разрешила изготовителям слуховых аппаратов применять транзисторные технологии, не платя за использование патентов. Первый транзисторный телевизор был выпущен в 1960 году, и сегодня ламповых приборов практически не найти. (Хотя некоторые меломаны и электрогитаристы по-прежнему предпочитают ламповые усилители их транзисторным аналогам.)
В 1956 году Шокли покинул Bell Labs, чтобы основать компанию Shockley Semiconductor Laboratories. Он переехал в Пало-Альто (Калифорния), где вырос. Его компания стала первым местным предприятием, работающим в данном направлении. Со временем в этой местности появились другие полупроводниковые и компьютерные компании, а область к югу от Сан-Франциско теперь неофициально называется Кремниевой долиной.
Вакуумные лампы изначально разрабатывались для применения в усилителях, однако их также можно было использовать в качестве переключателей в логических вентилях. То же самое касается транзистора. На следующем рисунке изображен вентиль И на основе транзисторов, структура которого напоминает версию с реле. Только когда входы A и B равны логической единице, то есть на базу подается положительное напряжение, оба транзистора проводят ток, а выход равен 1. Резистор при этом предотвращает короткое замыкание.
Соединив два транзистора так, как показано на схеме справа, вы получите вентиль ИЛИ. В вентиле И эмиттер верхнего транзистора соединен с коллектором нижнего. В вентиле ИЛИ коллекторы обоих транзисторов подключены к источнику питания. Эмиттеры соединены между собой.
Как видите, все, что мы узнали о создании логических вентилей и других компонентов из реле, справедливо и для транзисторов. Реле, лампы и транзисторы изначально разрабатывались в основном для усилителей, однако из них можно собрать логические вентили для компьютеров. Первые транзисторные компьютеры были созданы в 1956 году, и спустя несколько лет лампы перестали применяться.
Транзисторы, безусловно, делают компьютеры более надежными, компактными и экономичными. Но облегчают ли они процесс сборки?
На самом деле нет. Разумеется, транзистор позволяет уместить больше логических вентилей в меньшем пространстве, однако вам по-прежнему придется беспокоиться о соединении всех этих компонентов. Соединить транзисторы в логические вентили так же сложно, как реле и вакуумные лампы. Этот процесс усложняется еще и меньшим размером, а также тем, что транзисторы труднее держать. Если бы вы решили собрать компьютер, описанный в главе 17, и массив RAM емкостью 64 килобайт из транзисторов, то большая часть времени на этапе проектирования была бы потрачена на разработку некой структуры, где бы крепились все компоненты. Основной физический труд сводился бы к утомительному соединению миллионов транзисторов.
Как мы уже выяснили, существуют определенные комбинации часто встречающихся транзисторов. Пары транзисторов почти всегда соединены в вентили. Из вентилей часто собираются триггеры, сумматоры, селекторы или дешифраторы. Триггеры объединяются в многобитные защелки или массивы RAM. Собрать компьютер было бы проще, если бы транзисторы были предварительно объединены в распространенные конфигурации.
Эту идею, по-видимому, впервые предложил британский физик Джеффри Даммер, который в ходе выступления в мае 1952 года сказал: «Я хотел бы заглянуть в будущее. С появлением транзистора и работ по полупроводникам в целом сегодня, по-видимому, можно ставить вопрос о создании электронного оборудования в виде твердого блока без каких-либо соединительных проводов. Этот блок может состоять из слоев изолирующих, проводящих, преобразующих сигнал из переменного в постоянный и усиливающих сигнал материалов. Задание электронных функций компонентов и их соединение должным образом может быть выполнено путем вырезания участков отдельных слоев».
Однако на создание работающего продукта ушло еще несколько лет.
Ничего не зная о прогнозе Даммера, в июле 1958 года Джек Килби из компании Texas Instruments подумал, что на одном кристалле кремния можно объединить несколько транзисторов, а также резисторы и другие электрические компоненты. Шесть месяцев спустя, в январе 1959 года, практически та же идея возникла у Роберта Нойса (1927–1990). Сначала Нойс работал в компании Shockley Semiconductor Laboratories, но в 1957 году он и еще семеро ученых покинули ее, чтобы основать корпорацию Fairchild Semiconductor Corporation.
В сфере технологий одновременное изобретение — довольно распространенное явление. Несмотря на то что Килби изобрел свое устройство за шесть месяцев до Нойса, а компания Texas Instruments подала заявку на патент раньше, чем Fairchild Semiconductor, Нойс получил патент первым. Последовавшие за этим судебные тяжбы завершились с устраивающим всех результатом только спустя десять лет. Несмотря на то что Килби и Нойс никогда не работали вместе, сегодня они считаются соавторами интегральной микросхемы (ИС), обычно называемой чипом.
Создание интегральных схем — сложный процесс, который предполагает наслаивание тонких пленок легированного кремния, протравленных в разных местах для образования микроскопических компонентов. Несмотря на то что разработка новой интегральной микросхемы предполагает большие затраты, массовое производство позволяет снизить цены: чем больше производится микросхем, тем дешевле они становятся.
Кремниевый чип очень тонкий и хрупкий, поэтому он должен быть надежно защищен корпусом, позволяющим в то же время соединить его компоненты с другими чипами. Чаще всего интегральные микросхемы помещаются в прямоугольный пластиковый корпус DIP (dual inline package, корпус с двухрядным расположением штырьковых выводов) с 14, 16 или даже 40 выводами.
Вот чип с 16 выводами. Если вы возьмете его так, чтобы небольшая выемка находилась слева (как показано на рисунке), то выводы будут нумероваться с 1 по 16 против часовой стрелки, начиная с вывода в левом нижнем углу и заканчивая выводом в левом верхнем углу. Штырьки расположены на расстоянии 2,5 миллиметра друг от друга.
На протяжении 1960-х годов рынок интегральных микросхем развивался благодаря космической программе и гонке вооружений. Первым массовым коммерческим продуктом, включавшим интегральную микросхему, был слуховой аппарат, распространявшийся компанией Zenith в 1964 году. В 1971 году компания Texas Instruments начала продавать первый карманный калькулятор, а компания Pulsar — первые цифровые часы. (Очевидно, в цифровых часах корпус ИС отличается от того, что мы обсуждали в вышеприведенном примере.) Вслед за ними появилось множество других товаров, в конструкцию которых входили интегральные микросхемы.
В 1965 году Гордон Мур (в то время сотрудник компании Fairchild Semiconductor, а позднее соучредитель корпорации Intel) заметил, что технология развивается так, что начиная с 1959 года количество транзисторов, которые могут уместиться в одной микросхеме, ежегодно удваивается, и предсказал сохранение этой тенденции. Фактически такая технология развивалась немного медленнее, поэтому закон Мура (как он стал в конечном счете называться) был скорректирован и прогнозировал удвоение количества транзисторов в микросхеме каждые 18 месяцев. Это по-прежнему удивительно быстрое развитие, и закон Мура объясняет, почему домашние компьютеры устаревают всего за несколько лет.
На начальных этапах развития технологии о микросхемах, включающих в себя менее десяти логических вентилей, говорили как о схемах с малым уровнем интеграции. Схемы со средним уровнем интеграции (средние интегральные схемы, СИС) включали в себя от 10 до 100 вентилей, а схемы с высоким уровнем интеграции (большие интегральные схемы, БИС) — от 100 до 5000 вентилей. Затем были введены такие понятия, как сверхвысокий уровень интеграции (сверхбольшая интегральная схема, СБИС) — от 5 до 50 тысяч вентилей, суперсверхвысокий уровень интеграции — от 50 до 100 тысяч вентилей и ультравысокий уровень интеграции — более 100 тысяч вентилей.
Оставшуюся часть этой главы и всю следующую я предлагаю провести в середине 1970-х, в той древней эпохе, когда никто еще не слышал о фильме «Звездные войны», а схемы СБИС еще только маячили на горизонте. В то время для изготовления компонентов интегральных схем использовалось несколько различных технологий, каждая из которых определяет семейство ИС. К середине 1970-х годов преобладали семейства ТТЛ и КМОП.
Аббревиатура ТТЛ расшифровывается как транзисторно-транзисторная логика. Если бы в середине 1970-х вы работали инженером-разработчиком цифровых ИС (собирали из ИС более крупные схемы), то вашей настольной книгой был бы справочник по ТТЛ-микросхемам The TTL Data Book for Design Engineers, впервые опубликованный в 1973 году компанией Texas Instruments. Он содержал подробное описание интегральных микросхем ТТЛ серии 7400, продаваемых Texas Instruments и некоторыми другими компаниями, называемых так потому, что номер каждой ИС в этом семействе начинался с 74.
Каждая интегральная схема серии 7400 состоит из логических вентилей, сконфигурированных определенным образом. Некоторые микросхемы — простые логические вентили, из которых можно создать более крупные компоненты; другие — готовые компоненты: триггеры, сумматоры, селекторы и дешифраторы.
Первая ИС серии 7400, имеющая номер 7400, описана в справочнике The TTL Data Book как «счетверенная двухвходовая положительная схема И-НЕ». Это означает, что данная конкретная интегральная схема имеет четыре двухвходовых вентиля И-НЕ. Вентили И-НЕ называются положительными, поскольку наличие напряжения соответствует значению 1, а его отсутствие — значению 0. На следующем рисунке изображена микросхема с 14 выводами и показано, как эти выводы соотносятся со входами и выходами.
Диаграмма — это вид микросхемы сверху (выводы направлены вниз), при этом выемка в корпусе (упомянутая чуть ранее) расположена слева.
Вывод 14 обозначен символами VCC и эквивалентен символу V, который я использовал для обозначения напряжения. По традиции любой двойной подстрочный буквенный индекс рядом с буквой V — источник питания. Буква C в этом индексе — это вход коллектора транзистора, на который подается напряжение. Вывод 7 обозначен буквами GND, что значит «земля» (ground). Каждая интегральная микросхема, которую вы используете, должна быть подключена к источнику питания и земле.
Для микросхем ТТЛ серии 7400 значение VCC должно составлять от 4,75 до 5,25 вольта. Другими словами, питающее напряжение — это пять вольт ± 5%. Если напряжение упадет ниже 4,75 вольта, чип может перестать работать. Если оно превысит значение 5,25, чип может выйти из строя. Обычно для питания микросхем ТТЛ нельзя использовать батарейки. Даже если удастся найти пятивольтовую батарейку, недостаточная точность напряжения сделает ее неподходящим источником питания для этих чипов. Как правило, микросхемы ТТЛ требуют питания от розетки.
Каждый из четырех вентилей И-НЕ микросхемы 7400 имеет два входа и один выход. Они работают независимо друг от друга. В предыдущих главах мы говорили, что входной сигнал может иметь либо значение 1 (при наличии напряжения), либо значение 0 (при отсутствии напряжения). В действительности входной сигнал одного из этих вентилей И-НЕ может варьироваться от нуля вольт (земля) до пяти вольт (VCC). В микросхеме ТТЛ напряжение, находящееся в диапазоне от 0 до 0,8 вольта, соответствует логическому нулю, а напряжение от двух до пяти вольт — логической единице. Напряжения от 0,8 до 2,0 вольта следует избегать.
Напряжение на выходе вентиля ТТЛ, составляющее около 0,2 вольта, обычно соответствует логическому нулю, а 3,4 вольта — логической единице. Поскольку эти значения могут несколько отклоняться, то, говоря о входах и выходах интегральных схем, иногда вместо 0 и 1 люди используют такие понятия, как низкий и высокий уровень сигнала. Более того, низкое напряжение может означать логическую единицу, а высокое — логический ноль. Такая конфигурация характеризуется отрицательной логикой. В названии «счетверенная двухвходовая положительная схема И-НЕ» слово «положительная» означает схему с положительной логикой.
Значения напряжения на выходе вентиля ТТЛ 0,2 вольта (логический ноль) и 3,4 вольта (логическая единица) находятся в допустимых пределах — от 0 до 0,8 для логического нуля и от двух до пяти вольт для логической единицы. Таким образом микросхемы ТТЛ изолируются от шумов. Единичный выходной сигнал может уменьшиться примерно на 1,4 вольта, но по-прежнему останется достаточно высоким, чтобы его можно было квалифицировать в качестве входного единичного сигнала. Нулевой выходной сигнал может увеличиться на 0,6 вольта, но останется достаточно низким, чтобы категоризировать входной нулевой сигнал.
Вероятно, самым важным параметром конкретной интегральной схемы является время установки. Это время, необходимое для того, чтобы изменение входного сигнала привело к изменению выходного.
Время установки микросхем обычно измеряется в наносекундах. Наносекунда — очень короткий промежуток времени. Одна тысячная часть секунды — это миллисекунда. Миллионная часть секунды — микросекунда. Наносекунда — это одна миллиардная часть секунды. Время установки для вентилей И-НЕ в микросхеме 7400 гарантированно составляет менее 22 наносекунд. Это 0,000000022 секунды, или 22 миллиардные доли секунды.
Если вам сложно представить такой маленький промежуток времени, вы не одиноки. Мы можем охватить его лишь мыслью. Наносекунды намного короче всего, что доступно человеческому опыту, поэтому они навсегда останутся за пределами нашего понимания. Каждое объяснение лишь делает наносекунду более непостижимой. Например, я могу сказать, что если вы держите эту книгу на расстоянии 30 сантиметров от лица, то наносекунда — это время, за которое свет преодолевает расстояние от страницы до вашего глаза. Однако стали ли вы от этого лучше понимать, что такое наносекунда?
Тем не менее именно благодаря таким коротким промежуткам времени, как наносекунда, возможно существование компьютеров. Как вы видели в главе 17, компьютерный процессор выполняет очень простые действия: перемещает байт из памяти в регистр, складывает с другим байтом и возвращает результат обратно в память. Единственная причина, по которой результат работы компьютера — нечто существенное (в данном случае речь идет о реальном компьютере, а не о том, который описывался в главе 17), заключается в том, что эти операции происходят очень быстро. Как сказал Роберт Нойс: «Если примириться с понятием наносекунды, то компьютерные операции концептуально довольно просты».
Давайте продолжим изучение справочника по микросхемам ТТЛ. В этой книге вы увидите много уже знакомых компонентов. Микросхема 7402 содержит четыре двухвходовых вентиля ИЛИ-НЕ, микросхема 7404 — шесть инверторов, микросхема 7408 — четыре двухвходовых вентиля И, микросхема 7432 — четыре двухвходовых вентиля ИЛИ, а микросхема 7430 — восьмивходовый вентиль И-НЕ.
Аббревиатура NC означает no connection — «не подключено».
Микросхема 7474 тоже может показаться знакомой. Это сдвоенный D-триггер со сбросом и предустановкой, срабатывающий по фронту, схема которого выглядит следующим образом.
В справочник по микросхемам ТТЛ включена логическая схема для каждого из триггеров.
Эта схема может показаться похожей на схему, приведенную в конце главы 14, за исключением того, что я использовал вентили ИЛИ-НЕ. Приведенная в справочнике по микросхемам ТТЛ таблица логики также немного отличается.
В этой таблице H означает высокий (high), а L — низкий (low) уровень сигнала. Если хотите, можете считать эти обозначения единицей и нулем. В моем триггере входы «Сброс» и «Установка» обычно равны 0; в данном случае они обычно равны 1.
Далее в справочнике по микросхемам ТТЛ вы обнаружите, что микросхема 7483 — это 4-битный двоичный полный сумматор, микросхема 74151 — селектор с восемью входами и одним выходом, 74154 — дешифратор с четырьмя входами и 16 выходами, 74161 — синхронный 4-разрядный двоичный счетчик, 74175 — счетверенный D-триггер со сбросом. Вы можете использовать две из перечисленных микросхем для создания 8-битной защелки.
Итак, теперь вы знаете, откуда взялись различные компоненты, которые я использовал в главе 11, — из справочника по микросхемам ТТЛ.
Будучи инженером-разработчиком цифровых ИС, вы потратили бы множество часов на чтение справочника по микросхемам ТТЛ и изучение существующих чипов. Освоив инструменты, вы могли бы собрать из микросхем ТТЛ компьютер, описанный в главе 17. Соединить между собой микросхемы намного проще, чем отдельные транзисторы. Однако вы вряд ли бы захотели использовать схемы ТТЛ для создания массива RAM объемом 64 килобайт. Объем самого емкого чипа RAM, описанного в справочнике The TTL Data Book for Design Engineers 1973 года, составлял всего 256 × 1 бит. Для создания массива RAM объемом 64 килобайт вам понадобилось бы 2048 таких чипов! Микросхемы ТТЛ никогда не были оптимальной технологией для создания памяти. К этой теме я вернусь в главе 21.
Вероятно, вы решите использовать осциллятор. Несмотря на возможность подключения выхода ТТЛ-инвертора к его же входу, лучше иметь осциллятор с более предсказуемой частотой. Такой осциллятор можно легко собрать, используя кристалл кварца, который помещается в небольшой плоский цилиндрический корпус с двумя выводами. Эти кристаллы вибрируют с определенной частотой, которая обычно составляет по меньшей мере миллион циклов в секунду. Миллион циклов в секунду соответствует частоте один мегагерц. Если бы компьютер, описанный в главе 17, был собран из микросхем ТТЛ, он бы нормально работал с тактовой частотой десять мегагерц. На выполнение каждой инструкции уходило бы 400 наносекунд. Это, безусловно, многократно превышает скорость работы релейных устройств.
Другим популярным семейством чипов является КМОП (комплементарная структура металл — оксид — полупроводник), или CMOS (complementary metal-oxide-semiconductor). Если бы в середине 1970-х в свое свободное время вы собирали схемы из чипов КМОП, то в качестве справочника могли бы использовать книгу CMOS Databook, опубликованную компанией National Semiconductor. Эта книга содержит информацию о микросхемах КМОП серии 4000.
Потребляемая мощность микросхем ТТЛ — от 4,75 до 5,25 вольта, для микросхем КМОП — от 3 до 18 вольт. Довольно большой диапазон! Кроме того, микросхемы КМОП потребляют гораздо меньше энергии по сравнению с ТТЛ-чипами, что делает возможным создание на их основе небольших устройств, работающих от батареек. Недостаток микросхемы КМОП — низкая скорость работы. Например, гарантированное время установки 4-битного полного сумматора КМОП 4008, работающего от напряжения 5 вольт, — 750 наносекунд. Скорость увеличивается по мере роста напряжения и составляет 250 наносекунд при десяти вольтах и 190 наносекунд — при 15 вольтах. Однако по этому показателю устройство на основе микросхем КМОП сильно отстает от 4-битного ТТЛ-сумматора, время установки которого 24 наносекунды. (Двадцать пять лет назад компромисс между скоростью микросхемы ТТЛ и низким энергопотреблением микросхемы КМОП был довольно явным. Сегодня существуют версии ТТЛ-чипов с малым энергопотреблением и высокоскоростные версии микросхем КМОП.)
На практике соединение микросхем начинается на пластиковой макетной плате.
Каждые пять отверстий электрически соединены под пластмассовым основанием. Микросхема вставляется в макетную плату так, чтобы она опиралась на длинную центральную борозду, а ее выводы попадали в отверстия по обе стороны. Каждый вывод ИС при этом электрически совмещается с четырьмя другими отверстиями. Микросхемы объединяются с помощью проводов, вставляемых в другие отверстия.
Вы можете обеспечить постоянное соединение микросхем, используя технологию под названием монтаж накруткой. В данном случае каждая микросхема вставляется в гнездо с длинными квадратными штырьками.
Каждый штырек соответствует выходу микросхемы. Сами гнезда располагаются в тонких перфорированных платах. С обратной стороны платы вы используете специальный моточный агрегат для того, чтобы плотно обмотать штырек тонким изолированным проводом. Острые края штырька прорывают изоляцию, благодаря чему между штырьком и проводом возникает электрическое соединение.
Если бы вы занимались производством конкретного устройства на основе ИС, вероятно, использовали бы печатную плату. В былые времена ее мог изготовить даже любитель. Плата — это пластина с отверстиями, покрытая тонким слоем медной фольги. Те участки фольги, которые требуется сохранить, покрываются кислотостойким веществом, после чего остальная часть протравливается кислотой. Затем вы можете припаять гнезда ИС (или сами ИС) непосредственно к медному покрытию. Однако из-за большого количества взаимосвязей между ИС оставшейся области медной фольги обычно оказывается недостаточно, поэтому изготавливаемые промышленным способом печатные платы имеют несколько уровней межсоединений.
К началу 1970-х стало возможным использовать ИС для сборки компьютерного процессора целиком на единой плате. А размещение всего процессора в одном чипе было лишь вопросом времени. Несмотря на то что компания Texas Instruments запатентовала однокристальный компьютер в 1971 году, честь его создания принадлежит компании Intel, основанной в 1968 году бывшими сотрудниками Fairchild Semiconductors Робертом Нойсом и Гордоном Муром. Первым важным продуктом компании Intel в 1970 году стал чип памяти с наибольшей на тот момент емкостью 1024 бит.
Компания Intel занималась разработкой микросхем для программируемого калькулятора, который собиралась производить японская Busicom, когда ее инженеры решили использовать другой подход. Как отметил инженер Intel Тед Хофф, «вместо калькулятора с возможностью программирования я хотел создать компьютер общего назначения, запрограммированный на выполнение функций калькулятора». Это привело к разработке Intel 4004, первого «компьютера в чипе», или микропроцессора. Продажи микросхемы 4004 начались в ноябре 1971 года, она содержала 2300 транзисторов. (Согласно закону Мура, микропроцессоры, созданные 18 лет спустя, должны содержать примерно в 4000 раз больше транзисторов, или около десяти миллионов. Это предсказание оказалось довольно точным.)
Теперь, когда вам известно количество транзисторов в микросхеме 4004, опишу еще три важные характеристики.
Во-первых, схема 4004 — это 4-разрядный микропроцессор, следовательно, ширина шины данных процессора составляла всего четыре бита. При сложении или вычитании чисел он был способен обрабатывать только четыре бита за один такт. Напротив, компьютер, разработанный в главе 17, имеет 8-разрядные шины данных и является 8-разрядным процессором. Как мы вскоре увидим, 8-разрядные микропроцессоры быстро превзошли 4-разрядные. Однако на этом никто не остановился. В конце 1970-х годов появились 16-разрядные микропроцессоры. Если вы вспомните компьютер из главы 17 и несколько команд, необходимых для сложения двух 16-разрядных чисел с помощью 8-разрядного процессора, то оцените преимущество 16-разрядного процессора. В середине 1980-х были разработаны 32-разрядные микропроцессоры, которые с тех пор остаются стандартом для домашних компьютеров.
Во-вторых, максимальная тактовая частота микросхемы 4004 составляла 108 тысяч циклов в секунду, или 108 килогерц. Тактовая частота — это максимальная скорость тактового генератора, который можно подключить к микропроцессору, чтобы заставить его работать. Более высокая скорость может привести к некорректной работе. К 1999 году тактовая частота микропроцессоров, предназначенных для домашних компьютеров, достигла отметки 500 мегагерц, что примерно в 5000 раз быстрее по сравнению с аналогичным показателем микросхемы 4004.
В-третьих, объем адресуемой памяти микросхемы 4004 составлял 640 байт. Хотя это значение кажется смехотворно маленьким, оно соответствовало емкости микросхем памяти того времени. Как вы увидите далее, уже спустя два года микропроцессоры могли обращаться к 64 килобайтам памяти, что соответствует возможностям компьютера из главы 17. В 1999 году микропроцессоры Intel могли обращаться к 64 терабайтам памяти, однако это слишком много, учитывая, что оперативная память большинства домашних компьютеров не превышала 256 мегабайт.
Эти три показателя ничего не говорят о возможностях компьютера. Например, 4-разрядный процессор может складывать 32-разрядные числа, просто разделяя их на 4-разрядные фрагменты. В некотором отношении все цифровые компьютеры одинаковы. Если аппаратное обеспечение одного процессора может решить задачу, которая не под силу другому, третий способен справиться с задачей с помощью программного обеспечения; в конечном итоге все они делают одно и то же. Именно это подразумевалось в статье Алана Тьюринга 1937 года о вычислимости.
Быстродействие — одна из самых важных причин, по которой мы вообще используем компьютеры. Максимальная тактовая частота оказывает очевидное влияние на общую скорость работы процессора, поскольку определяет быстроту выполнения каждой команды. Ширина шины данных процессора также влияет на его быстродействие. Несмотря на то что 4-разрядный процессор способен складывать 32-разрядные числа, при решении этой задачи он сильно уступает 32-разрядному. Тем не менее вы можете не сразу осознать, какое влияние на быстродействие оказывает максимальный объем адресуемой памяти процессора. Поначалу может показаться, что адресуемая память не имеет ничего общего со скоростью работы, а вместо этого указывает на ограничение способности процессора выполнять определенные функции, которые могут потребовать большого объема памяти. Однако процессор всегда может обойти этот предел, используя некоторые адреса памяти, чтобы управлять другими средствами для сохранения и извлечения информации. (Представьте, что каждый байт, записанный в конкретную ячейку памяти, — это фактически отверстие, пробитое в бумажной ленте, а каждый байт, считанный из этой ячейки, считывается с ленты.) Однако этот процесс замедляет работу всего компьютера. Снова проблема в быстродействии. Конечно, эти три показателя лишь примерно отражают скорость работы микропроцессора. Они ничего не сообщают о внутренней архитектуре микропроцессора или об эффективности и возможностях команд, написанных на машинном языке. По мере усложнения процессоров многие распространенные задачи, ранее выполнявшиеся программным обеспечением, включались в функционал самого процессора. В следующих главах приведу примеры, отражающие эту тенденцию.
Все цифровые компьютеры обладают одинаковыми возможностями. Они не могут делать ничего, что выходило бы за пределы потенциала примитивной вычислительной машины, разработанной Аланом Тьюрингом. При этом скорость процессора, конечно же, влияет на общую полезность компьютерной системы. Например, любой компьютер, который считает медленнее, чем человеческий мозг, является бесполезным. И мы вряд ли сможем посмотреть фильм на экране современного компьютера, если процессору потребуется целая минута для того, чтобы нарисовать один кадр.
Вернемся в середину 1970-х. Несмотря на свои ограничения, микросхема 4004 стала началом новой эпохи. К апрелю 1972 года компания Intel выпустила микросхему 8008 — 8-разрядный микропроцессор с тактовой частотой 200 килогерц и адресуемой памятью объемом 16 килобайта. (Видите, как легко описать процессор с помощью всего лишь трех параметров?) А в 1974 году в течение пятимесячного периода компании Intel и Motorola выпустили микропроцессоры, превосходящие по своим характеристикам микросхему 8008. Эти два микропроцессора изменили мир.