О Господи, как жаль, что эти расчеты выполнены не с помощью пара!
Аппаратное обеспечение – это осязаемая, видимая часть компьютерных систем, то есть устройства и оборудование, которые вы можете увидеть и потрогать. История вычислительных устройств интересна, но здесь я коснусь лишь основных эпизодов. Стоит отметить некоторые тенденции, особенно экспоненциальный рост количества схем и аппаратов, которые удавалось уместить в заданном объеме пространства, зачастую по фиксированной цене. По мере того как цифровое оборудование становилось дешевле и мощнее, на смену крайне разнородным механическим системам пришли электронные, гораздо более единообразные.
Вычислительная техника имеет долгую историю, однако самые ранние устройства предназначались только для решения узких задач – нередко для предсказания астрономических событий и положений. Например, согласно одной (недоказанной) теории, Стоунхендж был астрономической обсерваторией. Антикитерский механизм, датируемый примерно 100 годом до н. э., применялся для астрономических вычислений и отличается чрезвычайно замысловатой конструкцией. Арифметические устройства вроде абака или счет использовались людьми на протяжении тысячелетий, особенно в Азии. В начале 1600-х годов, вскоре после того как Джон Непер описал логарифмы, появилась счетная линейка. Я вычислял на такой, когда еще учился на инженера в 1960-х годах. Но сейчас логарифмические линейки – диковинка. Их заменили калькуляторы и компьютеры, а мои старательно приобретенные навыки стали бесполезными.
Наиболее значимый предок современных компьютеров – жаккардовый ткацкий станок, изобретенный Жозефом Мари Жаккардом во Франции около 1800 года. В этом агрегате применялись прямоугольные карточки с многочисленными рядами отверстий, которые задавали узоры плетения. Соответственно, жаккардовый станок «программировали» на создание разнообразных узоров по инструкциям, которые он получал на перфорированных карточках. Меняя карты, вы получали другие комбинации плетения12. Создание машин, которые уменьшали трудозатраты, привело к социальным потрясениям, поскольку ткачи теряли работу: так, в 1811–1816 годах движение луддитов в Англии яростно выступало против механизации. Современные вычислительные технологии аналогичным образом привели к расколу.
Рис. 1.1. Современное воплощение разностной машины Бэббиджа13
Вычислительные системы в современном понимании зародились в Англии в середине XIX века благодаря трудам Чарльза Бэббиджа. Этот ученый муж интересовался навигацией и астрономией, а в таких дисциплинах для расчета координат требовались таблицы числовых значений. Бэббидж потратил большую часть жизни, пытаясь создать вычислительное устройство, которое позволило бы механизировать утомительные и ненадежные подсчеты вручную, необходимые не только для создания таблиц, но даже для их печати. Его раздражение сквозит в цитате на предыдущей странице. По целому ряду причин, включая конфликты со спонсорами, он так и не преуспел в реализации своих замыслов, но его проекты были разумными. Современные воплощения некоторых машин Бэббиджа, созданные с применением инструментов и материалов его времени, можно увидеть в Музее науки в Лондоне и Музее компьютерной истории в Маунтин-Вью, штат Калифорния14 (см. рис. 1.1).
Чарльз поощрял интерес к математике и своим вычислительным устройствам у молодой Августы Ады Байрон – дочери поэта Джорджа Байрона, впоследствии графини Лавлейс. Она составила подробные описания о том, как использовать аналитическую машину Бэббиджа (наиболее передовое из его спроектированных устройств) для научных вычислений и предположила, что это устройство может даже выполнять нечисловые операции – в частности, сочинять музыку. «Если предположить, например, – писала она, – что основные соотношения высоких звуков в науке гармонии и музыкальной композиции поддаются таким отображениям и изменениям, то машина способна сочинять тщательно продуманные и научные музыкальные произведения любой сложности или протяженности15». Аду Лавлейс часто называют первым в мире программистом, а язык программирования Ada назван в ее честь16.
Герман Холлерит, сотрудник Бюро переписи населения США, в конце XIX века изобрел и построил устройства, которые сводили в таблицы сведения о жителях страны намного быстрее, чем при ручной обработке. Применяя идеи жаккардового ткацкого станка, Холлерит пробивал отверстия в карточках из плотной бумаги, тем самым кодируя данные переписи в формате, подходящем для обработки его машинами. Примечательно, что для получения сводных таблиц переписи 1880 года потребовалось восемь лет, но благодаря перфокартам и счетным машинам Холлерита итоги переписи 1890 года появились всего через год, а не через десять или больше, как прогнозировалось. Герман основал компанию, которая в 1924 году благодаря слияниям и приобретениям превратилась в International Business Machines, известную сегодня как IBM.
Рис. 1.2. Ада Лавлейс. Фрагмент портрета работы Маргарет Сары Карпентер, 1836 год17
Машины Бэббиджа представляли собой сложные механические конструкции из шестеренок, колес, рычагов и стержней. Развитие электроники в XX веке позволило спроектировать компьютеры, в которых уже не применялись механические компоненты. Первой серьезной электрической машиной стал ENIAC (Electronic Numerical Integrator and Computer[9]), созданный Преспером Эккертом и Джоном Мокли в 1940-х годах в Пенсильванском университете в Филадельфии. ENIAC занимал просторное помещение и требовал огромного количества электроэнергии, а выполнял при этом около 5000 операций сложения в секунду. Предполагалось, что устройство будут использовать для баллистических расчетов и тому подобного, но его достроили только в 1946 году, уже после окончания Второй мировой войны18. (Части ENIAC выставлены в Электротехнической школе Мура при Пенсильванском университете.)
Еще Бэббидж четко понимал, что вычислительные устройства могут сохранять свои командные инструкции и данные в одной и той же форме. Но в памяти ENIAC содержалась только информация, а программировали его путем настройки соединений с помощью реле и переключения кабелей. Первые компьютеры, способные совместно хранить программы и данные, создали в Кембридже в 1949 году. Они назывались EDS АС (Electronic Delay Storage Automatic Calculator – электронные автоматические вычислители с задержкой хранения).
Вычислительными элементами для первых электронных компьютеров служили вакуумные трубки. Эти электронные устройства размером и формой примерно с цилиндрическую лампочку (см. рис. 1.7 в следующей главе) были дорогими, хрупкими, громоздкими и требовали много энергии. Современная эра вычислительной техники началась после изобретения транзистора (1947 год) и интегральных схем (1958 год). Благодаря этим технологиям электронные системы равномерно становились все более компактными, дешевыми и быстродействующими.
В следующих трех главах рассказывается об аппаратных средствах компьютеров, причем наибольшее внимание уделяется логической архитектуре вычислительных систем, а не подробностям их физического конструирования. Архитектура практически не менялась за последние десятилетия, тогда как оборудование преобразилось просто ошеломительно. В первой главе приводится обзор структуры и компонентов компьютера. Во второй главе показывается, как компьютеры представляют информацию в виде битов, байтов и двоичных чисел. В третьей главе объясняется, как вычислительные машины проводят расчеты – как они обрабатывают биты и байты, чтобы достичь результата.
Поскольку готовое устройство будет представлять собой вычислительную машину общего назначения, оно должно включать в себя главные блоки, относящиеся к арифметическим операциям, хранению в памяти, управлению и связи с человеком-оператором.
Давайте начнем обсуждение аппаратного обеспечения с обзора того, что представляет собой вычислительная машина. Мы рассмотрим ее по крайней мере с двух позиций: логической или функциональной организации (какие у нее части, что они делают и как соединены) и физической структуры (как выглядят части и как они сконструированы). Цель этой главы – разобраться, что такое компьютер и что у него внутри, узнать, что выполняет каждая его часть, и получить представление о том, что значат все эти бесчисленные сокращения и циферки.
Подумайте о ваших вычислительных устройствах. У многих читателей наверняка есть ПК, то есть или ноутбук, или настольный компьютер, произошедший от тех самых PC (Personal Computer, персональный компьютер), которые продавала компания IBM в 1981 году. Если у вас такой ПК, он работает на какой-нибудь версии операционной системы Windows от Microsoft. У других имеется Apple Macintosh под управлением той или иной версии macOS20. У третьих – хромбук (Chromebook) на операционной системе ChromeOS, которая задействует интернет для большей части вычислений и хранения данных. Более специализированные устройства вроде смартфонов, планшетов и электронных книг тоже представляют собой мощные вычислительные машины. Они все выглядят по-разному, и при использовании каждое из них ощущается по-своему, но внутри они устроены в принципе одинаково. Мы поговорим о причинах этого.
Можно провести небольшую аналогию с машинами. Функционально автомобили не меняются уже больше ста лет. В каждом из них есть двигатель, который работает на каком-либо топливе и приводит машину в движение. Есть руль, с помощью которого водитель управляет автомобилем. Есть место, где содержится топливо, а также пространство для пассажиров и их вещей. Однако физически машины сильно преобразились за столетие: их изготавливают из других материалов, они стали быстрее, безопаснее, надежнее и удобнее. Есть огромная разница между моей первой машиной (подержанным Volkswagen Beetle[10] 1959 года выпуска) и Ferrari, но любая из них доставит меня и мои продукты домой из магазина или провезет через всю страну, и в этом смысле они функционально одинаковы. (Отмечу для ясности, что я никогда даже не садился в Ferrari, не говоря уже о том, чтобы владеть ею, поэтому лишь предполагаю, что там хватит места для продуктов. Правда, однажды я припарковался рядом с одной из них: см. рис. 1.1.)
Рис. 1.1. Самое близкое расстояние, на которое я когда-либо подходил к Ferrari
С вычислительными машинами все то же самое. По логической организации современные компьютеры очень похожи на своих предшественников 1950-х годов, но их физические различия выходят далеко за пределы тех изменений, которые претерпели автомобили. Сегодня компьютеры намного меньше, дешевле, быстрее и надежнее, чем 60 или 70 лет назад, и буквально в миллион раз лучше по некоторым показателям. Такие усовершенствования послужили главной причиной повсеместного распространения компьютеров.
Различия между функциями и физическими свойствами – то есть между тем, что делает объект, и тем, как он устроен или работает внутри, – имеют большое значение. Для компьютеров часть «как это устроено» меняется удивительными темпами, как и их быстродействие, но вот часть «что делает» довольно стабильна. Такое различие между абстрактным описанием и конкретным воплощением будет неоднократно обсуждаться в дальнейшем.
На первой лекции я иногда провожу опрос среди студентов: у скольких из вас есть ПК, у скольких из вас есть Мас? В начале 2000-х годов соотношение уверенно держалось в области 10 к 1 в пользу ПК, но за несколько лет быстро изменилось, и теперь на долю Mac приходится более 75 % компьютеров. Впрочем, это нетипично для мира в целом, где ПК доминируют с большим отрывом.
Вызвано ли подобное неравенство тем, что один тип компьютеров превосходит другой? Если да, то что так резко изменилось за столь короткое время? Я спрашиваю студентов, какой компьютер лучше, и прошу назвать объективные критерии их выбора. На основании чего вы решаете купить тот или иной компьютер?
Естественно, один из ответов – цена. ПК обычно дешевле из-за жесткой конкуренции на рынке. Более широкий спектр дополнительных компонентов «железа», больше программного обеспечения и возможностей посоветоваться со специалистами, к тому же все это легко доступно. Яркий пример того, что экономисты называют эффектом сетевой выгоды: чем больше других людей применяют что-то, тем полезнее оно окажется для вас, примерно пропорционально количеству других пользователей.
На стороне Mac стоят надежность, качество, эстетическая привлекательность и ощущение, что «все просто работает», а за такое многие потребители готовы приплачивать.
Дебаты продолжаются, и, хотя ни одна из сторон не убеждает другую, в головах у спорящих возникают полезные вопросы, что помогает им задуматься о том, какие есть различия между разными видами вычислительных машин и что в них работает одинаково.
Аналогичные дебаты ведутся и о телефонах. Почти у каждого есть смартфон («умный телефон»), который может запускать программы («приложения»), загруженные из Apple App Store, Google Play Store или иных магазинов приложений. Телефон служит браузером, почтой, часами, камерой, проигрывателем музыки и видео, диктофоном, картой, навигатором, средством для сравнения цен в магазинах, а иногда по нему даже звонят и общаются. Обычно примерно три четверти моих студентов владеют iPhone, и почти все остальные – смартфоном на ОС Android от разных поставщиков. iPhone стоят дороже, но они обеспечивают более плавную интеграцию с экосистемой компьютеров, планшетов, часов, музыкальных плееров и облачных сервисов от Apple: вот вам и еще один пример эффекта сетевой выгоды. Лишь изредка кто-то признаётся, что пользуется только «кнопочным телефоном», у которого нет дополнительных функций, кроме возможности совершать звонки. Я проводил исследование в США среди сравнительно обеспеченных людей, а в других странах и группах населения смартфоны на Android будут распространены гораздо шире.
И снова у людей есть веские причины для выбора: функциональность, экономичность, эстетическая привлекательность, – но за всем этим, как и в случае с ПК и Мас, скрывается весьма схожая аппаратура для вычислений. Давайте посмотрим, почему так.
Если бы нарисовали абстрактное изображение простого стандартного компьютера, его логическую и функциональную архитектуру, то оно выглядело бы как схема на рисунке 1.2, причем как для Мас, так и для ПК. Процессор, какая-нибудь оперативная память, внешняя память и многие другие компоненты, соединенные набором проводов – шиной, которая передает информацию между ними.
Если мы представим в такой форме телефон или планшет, то рисунки будут похожи, но мышь, клавиатура и дисплей объединятся в один компонент, появятся экран и многие другие скрытые компоненты, такие как компас, датчик поворота экрана, GPS-приемник для определения вашего физического местоположения.
Базовая организация – процессор, память и хранилище для инструкций и данных, а также устройства ввода и вывода – была стандартной с 1940-х годов. Ее часто называют архитектурой фон Неймана в честь Джона фон Неймана, который описал ее в цитируемой выше статье 1946 года. Хотя и сейчас порой возникают дискуссии о том, не получает ли фон Нейман слишком много славы за работу, проделанную другими, его статья написана столь ясно и познавательно, что ее стоит прочесть даже сегодня. Например, цитата в начале текущей главы – это первое предложение его статьи. В переводе на современную терминологию, процессор обеспечивает арифметические операции и управление, оперативная и внешняя память – хранение в памяти, а клавиатура, мышь и дисплей взаимодействуют с человеком-оператором.
Рис. 1.2. Архитектурная схема простого идеализированного компьютера
Примечание по терминологии: процессор исторически назывался ЦПУ, или центральное процессорное устройство, но сейчас его часто именуют просто «процессор». Оперативную память часто называют ОЗУ, или оперативное запоминающее устройство, а внешнюю память – диск или накопитель, что отражает разницу в их материальных воплощениях. В основном я буду использовать слова «процессор», «память» и «хранилище», но иногда вы встретите старые термины.
Процессор – это мозг компьютера, если такое слово можно здесь применить. Он выполняет арифметические вычисления, перемещает данные, управляет работой других элементов. Процессору доступен лишь ограниченный набор базовых операций, но он проводит их с невероятной быстротой, совершая миллиарды действий в секунду. На основе результатов предыдущих вычислений ЦПУ может решать, какие операции проводить дальше, поэтому он сравнительно независим от своих пользователей-людей. В главе 3 мы уделим этому компоненту больше времени, потому что он играет важную роль.
Если вы зайдете в магазин онлайн или офлайн, чтобы купить компьютер, то наткнетесь на описание всех компонентов, где обычно указываются загадочные аббревиатуры и не менее загадочные цифры. Например, вам может встретиться такое описание процессора – «2.2 GHz двухъядерный Intel Core 17», как в одном из моих компьютеров. Что это такое? Данный процессор произведен компанией Intel, a Core i7 – это название их обширной линейки. Он имеет два процессорных блока в одном корпусе: в этом контексте «ядро» синонимично «процессору». Любое ядро – само по себе процессор, однако в ЦПУ может входить несколько ядер, которые работают либо вместе, либо раздельно, но вычисления ускоряются в любом случае. Чаще всего приемлемо определять такую конструкцию как «процессор» независимо от того, сколько в ней ядер.
«2,2 ГГц» – это более интересная часть. Скорость процессора можно измерить, пусть даже примерно, подсчитав количество операций, команд или их частей, которые он способен произвести за секунду. Для пошагового выполнения своих основных операций процессор полагается на внутренние часы, которые «отбивают ритм», как сердцебиение или метроном. Один из показателей скорости – количество таких тактов в секунду. Один удар или такт в секунду называется одним герцем (сокращенно Гц) в честь немецкого инженера Генриха Герца, который в 1888 году открыл, как получать электромагнитное излучение, что напрямую привело к появлению радио и других беспроводных систем. Радиостанции вещают на частотах, измеряемых в мегагерцах (миллионах герц), например 102,3 МГц. Современные компьютеры, как правило, функционируют с частотой в миллиарды герц, или гигагерц – ГГц. Значит, мой довольно обычный процессор в 2,2 ГГц работает со скоростью 2 200 000 000 тактов в секунду. Человеческое сердце бьется с частотой примерно 1 Гц, или почти 100 000 ударов в день, то есть около 30 миллионов ударов в год. Итак, каждое ядро в моем процессоре за одну секунду выполняет столько операций, сколько мое сердце совершило бы за 70 лет.
Выше мы познакомились с некоторыми «числовыми» приставками вроде «мега» и «гига», которые весьма распространены в компьютерных системах. Мега – это один миллион, или 106, а гига (ударение на первый слог) – один миллиард, или 109. Вскоре мы познакомимся с другими приставками, полный список которых вы можете найти в глоссарии.
Оперативная память хранит информацию, которая активно используется процессором и другими частями компьютера, причем ЦПУ способно изменять ее содержимое. В оперативной памяти содержатся не только данные, с которыми в данный момент работает процессор, но и инструкции по совершаемым операциям. Это чрезвычайно важный момент: загружая различные инструкции в память, мы можем «поручать» процессору разные вычисления. Благодаря этому ЭВМ с хранимой программой становится устройством общего назначения. Один и тот же компьютер способен запускать текстовый редактор и электронные таблицы, просматривать веб-страницы, отправлять и получать электронную почту, поддерживать связь с друзьями на Facebook[11], помогать с налогами и проигрывать музыку. И все это благодаря размещению подходящих инструкций в памяти. Важность концепции хранимой программы невозможно переоценить.
Оперативная память предоставляет место для хранения информации во время работы компьютера. В ней содержатся инструкции программ, которые на данный момент активны, – например, Word, Photoshop или браузера. Также в ней хранятся их данные: редактируемые документы, изображения на экране, воспроизводимая в данный момент музыка. Наконец, там же размещаются инструкции оперативной системы – Windows, macOS или какой-либо иной, – которая работает за кулисами и позволяет вам запускать несколько приложений одновременно. Мы поговорим о приложениях и оперативных системах в главе 6.
Оперативную память также называют памятью с произвольным доступом (англ, random access memory, или RAM, а в русской терминологии – ОЗУ, оперативное запоминающее устройство), потому что процессор может одинаково быстро достать информацию из любой части устройства. Если немного упростить, то доступ к ячейкам памяти в случайном порядке не приводит к потере скорости. Хотя видеокассеты давно ушли в прошлое, возможно, вы помните, что если вам хотелось посмотреть конец фильма, то приходилось ускоренно перематывать вперед (плавно!) от начала. Такой доступ называется последовательным.
Как правило, ОЗУ энергозависимо, то есть содержимое памяти исчезает при отключении электричества, и вся активная в данный момент информация теряется. Вот почему разумно сохранять свою работу почаще, особенно на настольном компьютере, чтобы не навлечь на себя истинное бедствие, случайно выдернув шнур питания.
Ваш компьютер имеет фиксированный объем оперативной памяти. Ее емкость измеряется в байтах. Один байт — это минимальный объем памяти, которого достаточно для хранения одного символа вроде W или или короткого числа, такого как 42, или фрагмента более крупного значения. В главе 2 будет показано, в какой форме информация хранится в памяти и других частях компьютера, поскольку это один из фундаментальных вопросов вычислительной техники. Но пока вы можете представить себе память как громадный набор одинаковых маленьких коробочек, пронумерованных до нескольких миллиардов. Каждая из них содержит в себе небольшое количество информации.
Что такое емкость? В ноутбуке, на котором я сейчас печатаю, емкость оперативной памяти составляет 8 миллиардов байт, или 8 гигабайт (8 Гб), чего, возможно, слишком мало. Причина в том, что для ускорения вычислений обычно требуется увеличение объема памяти, поскольку ее никогда не хватает на все программы, которые одновременно хотят ее использовать, и требуется время, чтобы извлечь из нее части неактивной программы, освобождая место для чего-то нового. Если вы хотите, чтобы ваш компьютер работал быстрее, то, скорее всего, лучший вариант – купить больше «оперативки». По крайней мере, если предусмотрена возможность расширения памяти, что бывает не всегда.
Оперативная память обладает большой, но ограниченной емкостью для хранения информации, и ее содержимое исчезает при отключении питания. Внешняя память не теряет размещенные в ней данные, даже когда электричество отключается. Существует два основных вида внешней памяти: более старый – жесткий (магнитный) диск, или накопитель на жестком диске (HDD), и более современное устройство – твердотельный диск, или SSD. Оба вида накопителей гораздо объемнее, чем оперативная память, и они не энергозависимы, то есть информация на любом диске не сотрется, даже если пропадет электропитание. Данные, инструкции и все остальное содержатся во внешней памяти в течение длительного времени и лишь ненадолго переносятся в оперативную память.
Жесткий диск хранит информацию, задавая направление намагничивания крохотных участков магнитного материала на вращающихся металлических поверхностях. Данные содержатся на концентрических дорожках, которые записываются и считываются датчиком, перемещающимся с дорожки на дорожку. Жужжание и щелчки, которые вы слышите при работе старого компьютера, издает диск, перемещая датчик в нужные места на поверхности. Поверхность диска вращается с огромной скоростью, как минимум 5400 оборотов в минуту. На изображении стандартного диска ноутбука (рис. 1.3) показаны поверхность и датчик. Диаметр тарелки жесткого диска составляет 6,35 см (2,5 дюйма).
Хранение одного байта на диске примерно в 100 раз дешевле, чем на ОЗУ, но при этом доступ к информации происходит медленнее. Дисководу требуется примерно 10 миллисекунд, чтобы добраться до определенной дорожки на поверхности, и скорость передачи данных составляет около 100 Мб/с.
Рис. 1.3. Внутренняя структура жесткого диска
Десять лет назад почти во всех ноутбуках стояли магнитные жесткие диски. Сегодня почти все снабжены SSD-накопителями, которые используют не вращающееся оборудование, а флеш-память. Она энергонезависима, поскольку информация содержится в ее схемах в виде электрических зарядов. Даже при отключении питания они не исчезают из индивидуальных элементов схемы. Сохраненные заряды можно считывать для определения того, какое значение они отображают, а также стирать и перезаписывать с новым значением. Флеш-память работает быстрее, легче, надежнее, не выходит из строя при падении и требует меньше энергии, чем обычный дисковый накопитель, поэтому ее применяют в сотовых телефонах, камерах и других устройствах. Цена за байт пока что выше, чем у HDD, но снижается. Преимущества SSD-накопителей настолько убедительны, что они в значительной степени вытеснили механические диски в ноутбуках.
Обычный SSD для ноутбука вмещает от 250 до 500 Гб. Различные внешние диски, которые можно подключить к разъему USB, имеют емкость до нескольких терабайт (Тб), и они по-прежнему основываются на вращающихся механизмах. «Тера» означает триллион, или 1012, и это еще одно обозначение, с которым вы будете часто сталкиваться.
Кстати, насколько велик терабайт или гигабайт? Один байт хранит один буквенный знак стандартного английского алфавита. Роман «Гордость и предубеждение» объемом около 250 бумажных страниц содержит 680 000 знаков, и тогда 1 Гб может хранить около 1500 копий этого произведения21. Впрочем, мне бы вполне хватило одной копии, а на свободное место я записал бы какую-нибудь музыку. Одна минута музыки в формате MP3 занимает около 1 Мб. Значит, если я запишу МР3-версию одного из моих любимых звуковых компакт-дисков The Jane Austen Songbook объемом около 60 Мб, то в одном гигабайте памяти хватит места еще для 15 часов музыки. Сериал «Гордость и предубеждение» 1995 года (производство ВВС, в главных ролях Дженнифер Эль и Колин Фёрт) на двух DVD занимает менее 10 Гб, поэтому я могу сохранить на одном терабайте его и еще сотню подобных фильмов.
На примере дискового накопителя очень удобно объяснять различия между логической структурой и физической реализацией. Программы вроде File Explorer («Проводник») для Windows или Finder для macOS отображают содержимое диска в виде иерархии папок и файлов. Но хранить сами данные можно на вращающемся оборудовании, в интегральных схемах без подвижных частей или на чем-то совершенно другом. Тип накопителя на компьютере не имеет значения. Аппаратное обеспечение в виде диска и программное обеспечение в рамках ОС, называемое файловой системой, работают вместе, создавая организационную структуру. Мы вернемся к этой теме в главе 6.
Такая логическая организация настолько хорошо подходит людям (или, возможно, мы уже так сильно к ней привыкли), что ее применяют и в других устройствах, даже если там она реализуется совершенно иными аппаратными средствами. Например, программа, которая обеспечивает доступ к информации на CD или DVD, создает впечатление, что данные хранятся в файловой иерархии, независимо от того, как они располагаются физически. То же самое относится к USB-устройствам, камерам и другим гаджетам, где используются карты памяти. И даже почтенная дискета, ныне полностью вышедшая из употребления, на логическом уровне устроена аналогично. Это хороший пример абстракции, встречающейся повсюду в компьютерных системах. Согласно этой идее, детали физической реализации нужно скрывать. В случае файловой системы, независимо от того, какие технологии задействованы, данные представляются пользователю в виде иерархии файлов и папок.
Существует множество прочих устройств со специальными функциями. Мышки, клавиатуры, сенсорные экраны, микрофоны, камеры и сканеры дают людям возможность вводить данные. Дисплеи, принтеры и динамики выводят информацию. Сетевые компоненты вроде Wi-Fi и Bluetooth обеспечивают взаимодействие с другими вычислительными устройствами. Различные вспомогательные технологии содействуют пользователям со зрительными, слуховыми или другими ограничениями.
На схеме архитектуры (рис. 1.2) все такие устройства и системы соединены одним набором проводов, называемых шиной, – данный термин заимствован из электротехники. На самом деле внутри компьютера находится много шин, свойства которых зависят от их функций: короткие, быстрые и дорогие соединяют память с процессором, а длинные и медленные, но дешевые, ведут к разъему для наушников. Некоторые из них имеют выход наружу – например, вездесущая универсальная последовательная шина, или USB, которая используется для подключения устройств к компьютеру.
Сейчас мы не станем уделять много времени другим приспособлениям, но иногда я буду их упоминать в том или ином контексте. А пока попробуйте вспомнить все устройства, которые сопутствуют вашему вычислительному устройству или подключены к нему: мыши, клавиатуры, тачпады и сенсорные экраны, дисплеи, принтеры, сканеры, игровые контроллеры, наушники, динамики, микрофоны, камеры, телефоны, датчики отпечатков пальцев, каналы связи с другими компьютерами. Список можно продолжать. Все они эволюционировали так же, как процессор, память и дисковые накопители: быстро менялись физические свойства, обычно в сторону расширения возможностей и увеличения компактности при снижающейся стоимости.
Также стоит отметить, что все эти устройства объединяются. Сотовые телефоны теперь служат часами, калькуляторами, фото- и видеокамерами, проигрывателями музыки и видео, игровыми приставками, считывателями штрих-кодов, навигаторами и даже фонариками.
Смартфон имеет ту же абстрактную архитектуру, что и ноутбук, хотя и с существенными отличиями в реализации из-за ограничений по размеру и мощности. В телефонах нет жестких дисков, которые показаны на рис. 1.3, но у них есть флеш-память для хранения информации (списков контактов, изображений, приложений и тому подобного), когда телефон выключен. К ним можно присоединить не так много внешних устройств, но в них обычно есть гнездо для наушников и USB-разъем. Крошечные камеры настолько дешевы, что большинство телефонов имеют по одной с каждой стороны. Планшеты, такие как iPad и его конкуренты, занимают другую нишу в пространстве возможностей, но и они – вычислительные машины с такой же общей архитектурой и схожими компонентами.
На занятиях я раздаю всевозможные образцы «железа» (найденные за десятки лет лазания по помойкам) со снятыми кожухами. В информатике столь много абстрактного, что бывает довольно полезно увидеть и потрогать диски, чип с интегральными схемами, пластины, в которые они встроены, и т. д. Также интересно посмотреть на эволюцию некоторых устройств. Например, современный жесткий диск ноутбука внешне неотличим от своих предшественников, выпущенных десять или двадцать лет назад. Емкость более нового диска увеличилась в 10-100 раз, но эти улучшения невидимы. То же самое относится и к картам памяти (SD), которые мы используем, например, в камерах. Их современные корпуса идентичны тем, что применялись несколько лет назад (рис. 1.4), но емкость карт намного выше, а цена ниже.
Так, изображенная здесь карта на 32 Гб стоит меньше 10 долларов.
Рис. 1.4. SD-карты весьма разной емкости
С другой стороны, в печатных платах, на которых размещены компоненты компьютера, наблюдается явный прогресс. Сегодня компонентов меньше, потому что внутри находится больше микросхем, проводка тоньше, а соединительные контакты («штырьки») более многочисленны и расположены гораздо плотнее, чем 20 лет назад.
Рис. 1.5. Печатная плата для ПК, выпущена ок. 1998 года.
Размер 12 × 7,5 дюймов (30 × 19 см)
На рис. 1.5 показана печатная плата для настольного ПК конца 1990-х годов. Такие компоненты, как процессор и память, смонтированы на плате (или вставлены в нее) и соединены проводами, проложенными на другой стороне. На рис. 1.6 показана часть оборотной стороны той же печатной платы, где параллельно идущие печатные провода – это шины разного типа.
Рис. 1.6. Шины на печатной плате
Электронные схемы в компьютерах формируются из нескольких базовых элементов, представленных в большом количестве. Наиболее важный из них – логический вентиль, который вычисляет одно выходное значение на основе одного или двух входных. Он использует входные сигналы (напряжение или силу тока) для управления выходным сигналом аналогичного вида. При наличии достаточного количества таких вентилей, соединенных правильным образом, возможно производить вычисления любого типа. Чарльз Петцольд в своей книге «Код»22 удачно знакомит нас с этим процессом, а на многочисленных веб-сайтах представлены графические анимации, которые показывают, как логические схемы выполняют арифметические и другие вычисления.
Основным элементом схемы служит транзистор — устройство, изобретенное в Лабораториях Белла[12] в 1947 году учеными Джоном Бардином, Уолтером Браттейном и Уильямом Шокли, которые в 1956 году получили за это Нобелевскую премию по физике. В компьютере транзистор играет роль переключателя, который может включать и выключать ток под воздействием напряжения. На таком простом основании можно построить сколь угодно сложные системы.
Логические вентили раньше собирались из дискретных компонентов: вакуумных (электронно-лучевых) трубок размером с электрическую лампочку в ENIAC и отдельных транзисторов величиной примерно с карандашный ластик в компьютере 1960-х годов. На рис. 1.7 показаны копия первого транзистора (слева), вакуумная трубка и процессор в корпусе. Сама схема находится в центре и занимает площадь около 1 кв. см, а электронно-лучевая трубка имеет длину около 4 дюймов (10 см). Современный процессор такого размера содержал бы в себе несколько миллиардов транзисторов.
Логические вентили создаются на интегральных схемах, или ИС, которые часто называют микросхемами или микрочипами.
Интегральная схема содержит все компоненты и проводку электронной схемы на одной плоской поверхности (тонкий лист полупроводника), которая создается путем сложной последовательности оптических и химических процессов. В итоге получается схема без дискретных элементов и проводов обычного вида. Такие ИС намного компактнее и надежнее, чем схемы с дискретными компонентами. Микросхемы массово изготавливаются на круглых кристаллических пластинах (платах) диаметром 12 дюймов (30 см): из них затем нарезаются отдельные микросхемы, каждую из которых помещают в свой корпус. Обычная микросхема (рис. 1.7, внизу справа) монтируется в больший по размеру корпус с 10-100 штырьками, соединяющими ее с остальной системой. На рис. 1.8 показана интегральная схема в корпусе, где сам процессор находится в центре, и его площадь составляет около 1 кв. см.
Рис. 1.7. Вакуумная трубка, первый транзистор, микросхема процессора в корпусе
Рис. 1.8. Чип интегральной схемы
Из-за того, что интегральные схемы основаны на кремнии, регион в Калифорнии к югу от Сан-Франциско, где впервые возник бизнес по производству этих схем, стали называть Кремниевой долиной. Сейчас так условно называют все высокотехнологичные предприятия в этом регионе, а это название стало вдохновляющим для десятка подражателей, таких как Кремниевая аллея (Silicon Alley) в Нью-Йорке и Кремниевый торфяник (Silicon Fen) в Кембридже, Англия.
ИС изобрели примерно в 1958 году, причем открытие независимо друг от друга сделали Роберт Нойс и Джек Килби. Нойс умер в 1990 году, но Килби за свой вклад получил в 2000 году Нобелевскую премию по физике. Хотя интегральные схемы занимают центральное место в цифровых устройствах, другие технологии здесь также используются: магнитное запоминающее устройство для дисков, лазеры для CD и DVD и оптическое волокно для сетей. За последние 50–60 лет все они радикально изменились в размерах, производительности и стоимости.
В 1965 году Гордон Мур, который затем станет соучредителем компании Intel и будет работать там генеральным директором на протяжении многих лет, опубликовал короткую статью под названием «Втиснуть больше компонентов в интегральные схемы»23. Экстраполируя очень ограниченное количество данных, Мур заметил, что с усовершенствованием технологий количество транзисторов, которые удавалось встроить в интегральные схемы заданного размера, удваивалось примерно каждый год. Затем, пересмотрев расчеты, он изменил этот показатель на «каждые два года», а другие исследователи говорили о 18 месяцах. Поскольку вычислительную мощность можно грубо определять по количеству транзисторов, то она тоже удваивалась каждые два года, если не быстрее. За 20 лет должно было произойти 10 удвоений, и количество устройств увеличилось бы в 210, то есть примерно в 1000 раз. За 40 лет – в миллион раз или больше.
Такой экспоненциальный рост, ныне известный как закон Мура, продолжается уже почти 60 лет, и поэтому в интегральные схемы сейчас встраивают в миллион раз больше транзисторов, чем в 1965 году. График действия закона Мура, особенно для микросхем процессора, показывает рост количества транзисторов от пары тысяч для ЦПУ Intel 8008 в начале 1970-х годов до миллиарда в ЦПУ недорогих потребительских ноутбуков нашего времени.
Наилучшим образом масштабы схемы характеризует какое-либо отдельное число, обозначающее размер того или иного элемента интегральной схемы – например, ширину провода или активной части транзистора. Этот показатель неуклонно сокращается на протяжении многих лет. В первой (и единственной) интегральной схеме, которую я однажды разрабатывал в 1980 году, величина элементов равнялась 3,5 микрона (3,5 микрометра). В 2021 году для многих ИС минимальный размер элементов составлял 7 нанометров, или 7 миллиардных долей метра, а следующим шагом будет 5 нанометров. «Милли» – это одна тысячная доля, или 10-3; «микро» – одна миллионная, или 10-6; «нано» – одна миллиардная, или 10-9, а нанометр сокращенно обозначается как нм. Для сравнения: толщина листа бумаги или человеческого волоса составляет 100 микрометров, или 1/10 миллиметра.
Если ширина элементов в интегральной схеме уменьшится в 1000 раз, то количество компонентов на единицу площади увеличится в квадратной зависимости, т. е. в миллион раз. Соответственно, там, где по старому производственному процессу размещали тысячу транзисторов, теперь хватит места для миллиарда.
Разработка и изготовление интегральных схем – чрезвычайно сложный и высококонкурентный бизнес. Кроме того, производственные операции («сборочные линии») весьма дороги: новый завод может стоить миллиарды долларов. Компания, которая не успевает за финансовым и технологическим развитием, будет уступать своим соперникам на рынке, а страна, у которой нет таких ресурсов, попадет в технологическую зависимость от других государств, что потенциально может стать серьезной проблемой стратегического уровня.
Закон Мура – это не закон природы, а руководящий принцип, который применяли в индустрии полупроводников для постановки целей. В какой-то момент он перестанет действовать. В прошлом часто предсказывали, что предел миниатюризации достигнут, но до сих пор находятся способы его преодолеть. Однако мы уже приближаемся к тому, что в отдельных схемах будет находиться лишь несколько атомов, а этого слишком мало, чтобы управлять ими.
Скорость процессоров возрастает не особенно – и уж точно больше не удваивается каждые два года, – отчасти потому, что быстрые микросхемы выделяют слишком много тепла. Но объем памяти по-прежнему увеличивается. Так или иначе, процессоры могут использовать больше транзисторов, если поместить два или более ядер ЦПУ на одной микросхеме. Кроме того, в системах зачастую применяются несколько процессорных ИС. Происходит рост количества ядер, а не скорости их работы.
Интересно будет сравнить современный персональный компьютер и первый ПК от IBM, который выпустили 1981 году. Процессор того ПК работал с тактовой частотой 4,77 МГц, то есть почти в 500 раз меньше, чем у процессорного ядра 2,2 ГГц, к тому же у такого ЦПУ обычно два или четыре ядра. Компьютер от IBM располагал 64 килобайтами оперативной памяти, а у современных компьютеров ее в 125 000 раз больше – 8 Гб. («Кило» – это одна тысяча, поэтому сокращение для килобайта – Кб.) Объем памяти гибких дисков для первого ПК составлял не более 750 Кб, а жесткого диска он не имел, тогда как в современных ноутбуках внешней памяти уже почти в миллион раз больше. Первый ПК мог выводить на свой 11-дюймовый монитор только 24 ряда по 80 зеленых символов на черном фоне, а большую часть этой книги я написал, сидя перед 24-дюймовым экраном с 16 миллионами цветов. Компьютер с 64 Кб памяти и одним гибким диском объемом 160 Кб стоил 3000 долларов в 1981 году, что сейчас с учетом инфляции эквивалентно 10 000 долларов, а ноутбук с процессором 2 ГГц, 8 Гб оперативной памяти и SSD-диском на 256 Гб сегодня продается за пару сотен.
Компьютерное оборудование, то есть все виды цифрового аппаратного обеспечения, экспоненциально совершенствуется на протяжении 60 лет, начиная с изобретения интегральных схем. Термин «экспоненциально» часто понимают и употребляют неверно, но в данном случае он точно отражает ситуацию: за каждый фиксированный период времени схемы становились компактнее, дешевле или производительнее на определенный процент. Простейший пример – закон Мура: примерно каждые 18 месяцев количество элементов, помещавшихся на интегральную схему заданного размера, почти удваивается. Этот огромный рост возможностей послужил основой цифровой революции, которая так сильно изменила нашу жизнь.
Скачок возможностей и производительности также изменил наши представления о том, что такое информатика и компьютеры. Первые вычислительные машины рассматривались как сверхбыстрые арифмометры, пригодные для решения задач баллистики, проектирования оружия и других научных и инженерных расчетов. Потом они пригодились в обработке данных для бизнеса: они составляли платежные ведомости, формировали счета и так далее. Когда цена накопителей уменьшилась, ЭВМ начали управлять базами данных, где хранилась информация для подготовки тех самых ведомостей и счетов. С появлением ПК компьютеры стали настолько дешевыми, что их смог позволить себе каждый, и тогда они стали использоваться для обработки персональных данных, ведения расчетов по домашним финансам и операций с текстами (например, для написания писем). Вскоре после этого их начали применять в развлекательных целях вроде воспроизведения музыки с компакт-дисков, но в особенности для игр. А когда возник интернет, наши компьютеры заодно превратились и в устройства для общения, на которых работают электронная почта, Всемирная паутина и социальные сети.