The Hidden Language of
Computer Hardware and Software
Charles Petzold
Москва 2001 г.
тайный язык информатики
Чарльз Петцольд
УДК 004
ББК 32.973.26–018
П33
Петцольд Ч.
П33
Код. — М.: Издательско-торговый дом «Русская Редакция»,
2001. — 512 с.: ил.
ISBN 5–7502–0159–7
Эта книга — азбука компьютерных технологий. Шаг за ша-
гом автор знакомит читателя с сущностью кодирования информа-
ции, рассказывает об истории возникновения компьютеров, на
практических примерах помогает освоить основные концепции ин-
формационных технологий, подробно излагает принципы рабо-
ты процессора и других устройств компьютера.
Написанная живо, доступно, иногда иронично, книга богато
иллюстрирована, состоит из 25 глав и предметного указателя.
Издание адресовано в первую очередь студентам вузов (как
гуманитарных, так и технических), а также всем, кто интересует-
ся принципами создания и работы компьютеров.
УДК 004
ББК 32.973.26–018
Подготовлено к печати по лицензионному договору с Microsoft Corporation, Редмонд,
Вашингтон, США.
Использованные в примерах и упражнениях названия компаний и продуктов, персо-
нажи и события вымышлены, за исключением особо отмеченных случаев. Любые со-
впадения с реальными компаниями, продуктами, людьми и событиями являются слу-
чайными.
Портреты Чарльза Бэббиджа, Джорджа Буля, Луи Брайля, Германа Холлерита, Сэмюэ-
ля Морзе и Джона фон Неймана публикуются с разрешения Corbis Images и отредак-
тированы для этой книги Джоэлем Пэнчотом (Joel Panchot). Обложка журнала Popular
Electronics (январь 1975 г.) воспроизводится с разрешения Ziff-Davis и семьи Ziff. Все
остальные иллюстрации подготовлены Джоэлем Пэнчотом.
Macintosh является охраняемым товарным знаком корпорации Apple Computer.
Microsoft, MS-DOS и Windows являются либо товарными знаками, либо охраняемыми
товарными знаками корпорации Microsoft в США и/или других странах. Все другие то-
варные знаки являются собственностью соответствующих фирм.
ISBN 0–7356–1131–9 (Aнгл.)
ISBN 5–7502–0159–7
© Оригинальное издание на английском
языке Microsoft Corporation, 2000
© Перевод на русский язык, Microsoft
Corporation, 2001
© Оформление и подготовка к изданию;
издательско-торговый дом «Русская
Редакция», 2001
Оглавление
Предисловие ........................................................... VII
Глава 1
Верные друзья ......................................... 1
Глава 2
Коды и комбинации ................................ 9
Глава 3
Брайль и двоичные коды ........................ 15
Глава 4
Анатомия фонарика .............................. 23
Глава 5
Там, за поворотом ................................. 35
Глава 6
Телеграф и реле ..................................... 45
Глава 7
Великолепная десятка ........................... 53
Глава 8
Альтернативы десяти ............................. 61
Глава 9
За битом бит ......................................... 77
Глава 10
Логика и переключатели ....................... 99
Глава 11
Вентили, которые не протекают ........... 119
Глава 12
Двоичный сумматор ............................. 153
Глава 13
А как же вычитание? .......................... 169
Глава 14
Обратная связь и триггеры ................... 185
Глава 15
Байты и шестнадцатеричные числа ....... 215
Глава 16
Сборка памяти .................................... 229
Глава 17
Автоматизация ................................... 249
Глава 18
От счетов к микросхемам .................... 289
Глава 19
Два классических микропроцессора ..... 321
Глава 20
ASCII — символы нашего времени ..... 357
Глава 21
Под шорох шин ................................... 377
Глава 22
Операционная система ........................ 403
Глава 23
Фиксированная точка,
плавающая точка ................................. 423
Глава 24
Языки высокие и низкие ..................... 439
Глава 25
Графическая революция ....................... 459
Предметный указатель .......................................... 486
Предисловие
Идея книги Код стучалась мне в голову в течение десятилетия,
прежде чем я начал ее писать. И все то время, что я обдумывал
книгу, писал и даже после того, как она была опубликована,
люди спрашивали меня: «О чем эта книга?»
На этот вопрос я всегда отвечал с неохотой. Мямлил что-
то об «уникальном путешествии по истории цифровых тех-
нологий, определивших облик нашего времени», надеясь, что
этого будет достаточно.
Но в конце концов мне пришлось признать: «Код — книга
о том, как работают компьютеры».
Как я и опасался, реакция оказалась неблагоприятной. «А-а,
такая книга у меня уже есть», — говорили некоторые, а я сразу
возражал: «Нет, нет, нет, вот как раз такой книги у вас и нет». И
до сих пор считаю, что это верно. Код — это не просто описание
действия компьютера. В ней нет больших цветных изображе-
ний жестких дисков со стрелками, указывающими направление
перемещения данных в компьютере. Нет рисунков, на которых
локомотивы тащили бы вагоны, груженные нулями и единица-
ми. Метафоры и сравнения, с одной стороны, украшают текст,
а с другой — мешают постичь красоту технологии.
Приходилось мне слышать и такое: «Народу нет дела до
того, как работают компьютеры». И это, по-моему, тоже вер-
но. Мне, например, доставляет удовольствие узнавать, как ра-
ботает тот или иной прибор. Но при этом я предпочитаю вы-
бирать, в чем я хочу разобраться, а в чем — нет. Мне, скажем,
трудно без насилия над собой объяснить принцип действия
холодильника.
И все же люди часто задают вопросы, которые подтверж-
дают их интерес к внутреннему устройству компьютера. Один
из них: «В чем разница между оперативной и постоянной па-
мятью?»
VIII
Предисловие
Это, без сомнения, очень важный вопрос. На подобных
понятиях основан весь рынок персональных компьютеров.
Предполагается, что даже новичок понимает, сколько мегов
одной и гигов другой потребуется его программам. Считается
также, что в самом начале знакомства с компьютером пользо-
ватель постигает концепцию файла и представляет себе, как
файлы загружаются из постоянной в оперативную память, а
затем из оперативной записываются обратно в постоянную.
На вопрос о постоянстве и оперативности часто отвечают,
используя такую аналогию: «Считайте, что оперативная память
— это ваш рабочий стол, а постоянная — шкаф с папками». И
думают, что это прекрасное сравнение! Но я его таковым не
считаю: создается впечатление, что архитектура компьютера
срисована с обычной конторы. Правда же заключается в том,
что различие между постоянной и оперативной памятью ис-
кусственно и существует лишь потому, что нам до сих пор не
удалось создать накопитель данных, который был бы одновре-
менно быстрым, объемным и способным хранить информа-
цию в течение долгого времени. То, что сегодня называется
архитектурой Неймана — доминирующая компьютерная ар-
хитектура в течение последних 50 лет, — прямое следствие
этого технического несовершенства.
Еще меня как-то спросили: «Почему программы для
Macintosh нельзя запускать под Windows?» Я уже было открыл
рот, чтобы ответить, но вдруг осознал, что ответ будет содер-
жать гораздо больше технических подробностей, чем рассчи-
тывает услышать спросивший.
Я хочу, чтобы книга Код помогла вам разобраться в подоб-
ных вещах, причем не абстрактно, а глубоко, практически на
уровне инженера или программиста. Надеюсь также, что в ней
компьютер предстанет перед вами как одно из наиболее выда-
ющихся изобретений XX века и вы поймете, что он прекрасен
сам по себе, даже без изысканных метафор и сравнений.
Компьютер представляет собой иерархию, в основании
которой лежат транзисторы, а на вершине — информация,
отображаемая на мониторе. Переходы с одного уровня этой
иерархии на следующий — а книга Код построена именно так
— далеко не так тяжелы, как думает большинство. Конечно,
действие современного компьютера состоит из бесчисленных
IX
Предисловие
операций, но среди них множество простых или сходных меж-
ду собой.
Компьютеры наших дней сложнее тех, что появились 25
или 50 лет назад, но в основе своей они остались теми же. Вот
почему изучать историю технологии так удобно: чем дальше
вы уходите в прошлое, тем проще становится технология. Рано
или поздно вы достигаете этапа, разобраться в котором уже не
представляет особого труда.
В книге Код я ушел настолько далеко в прошлое, насколько
это было возможно. К своему удивлению, я обнаружил, что
точка отсчета лежит в XIX столетии и я могу использовать для
описания работы компьютера принципы устройства телеграф-
ного оборудования. Все, что описано в первых 17-ти главах
книги, можно построить, хотя бы теоретически, из простых
электрических устройств, известных уже более 100 лет.
Мне кажется, что обращение к античным технологиям при-
дает этой книге этакий ностальгический аромат. Она не могла
бы называться Быстрее и еще быстрее или, скажем, Бизнес со
скоростью нервного импульса. Понятие «бит» определено в ней
лишь на 76-й странице, слово «байт» не встречается до 215-й.
Транзисторы не упоминаются до 167-й страницы, да и там —
лишь бегло.
Вот почему читать эту книгу довольно легко, хотя работа
компьютера разбирается в ней с глубочайшими подробностя-
ми (много ли вы знаете книг, в которых действительно описы-
валась бы суть работы процессора?). Я старался, чтобы глубина
изложения не сделала путешествие менее комфортабельным.
Но без локомотивов, которые тащат вагоны, груженные ну-
лями и единицами.
Чарльз Петцольд
16 августа 2000 г.
X
Предисловие
code n
1. 1) кодекс, свод законов 2) законы, принципы (чести, мора-
ли и т. п.)
2. 1) код; Morse ~ код /азбука/ Морзе; telegraphic ~ телеграф-
ный код 2) шифр
3. биол. генетический код
4. вчт. программа ( особ. прикладная)
5. ком. маркировка; шифр. индекс ( продукта)…
Новый большой англо-русский словарь (под общим руко-
водством академика Ю.Д.Апресяна и доктора филологических
наук, профессора Э.М. Медниковой). Издание 2-е, исправлен-
ное. М.: «Русский язык», 1997.
Глава 1
Верные друзья
Представьте себе, что вам 10 лет. Ваш лучший друг живет в
доме напротив, так что окна ваших комнат смотрят друг на
друга. Вечером, когда родители, как всегда, не вовремя отпра-
вили вас в кровать, вам хочется посекретничать, обменяться
мыслями, наблюдениями, новостями, мечтами или рассказать
свежий анекдот. В этом нет ничего зазорного. В конце концов
тяга к общению — одна из самых человеческих черт.
Как же вам пообщаться? Может, по телефону? Но часто ли
у 10-летнего ребенка в комнате стоит телефон? А если и есть,
то разговор услышат в другой комнате. Компьютер, подклю-
ченный к телефонной линии, позволяет обмениваться сооб-
щениями бесшумно, но и он тоже стоит не в вашей комнате.
Что у вас обоих есть наверняка, так это карманные фона-
рики. Всем известно: фонарики изобретены для того, чтобы
дети могли читать книжки под одеялом. Кроме того, это пре-
красное средство для общения в темноте. Фонарик достаточ-
но бесшумен, а его луч имеет определенное направление и не
просачивается под дверь спальни, так что о разговоре с помо-
щью фонарика ваше бдительное семейство не догадается.
Но можно ли заставить фонарик говорить? Давайте попро-
буем. В первом классе вы научились выводить на бумаге бук-
вы и слова, теперь пришла пора поделиться этим знанием с
фонариком. Все, что для этого нужно, — подойти к окну и
рисовать буквы лучом света. Чтобы «написать» О, включите
2
Глава первая
фонарик, обведите в воздухе круг, а затем выключите его. Буква
Г рисуется так — включите фонарик и проведите им вверх и
вбок. Впрочем, легко убедиться, что этот способ для общения
не годится. Увидев, какие кренделя выписывает в воздухе луч
фонарика вашего друга, вы поймете, что разобрать в мелька-
нии света отдельные штрихи и буквы невозможно. Все эти све-
товые росчерки недостаточно определенны.
Вы наверняка видели в каком-нибудь фильме, как моряки
на кораблях посылают друг другу сигналы с помощью мигаю-
щих огней. А в другой картине шпион, покачивая зеркальцем,
пускал солнечные зайчики в окно дома, где лежал связанным
его коллега. Может быть, это выход? Начнем с самого просто-
го, что приходит на ум. Обозначим каждую букву алфавита
определенным числом вспышек: А будем обозначать одной
вспышкой, Б — двумя, В — тремя и так до Я (33 вспышки).
Например, чтобы передать слово «бег», нужно мигнуть фона-
риком 2, 6 и 4 раза с небольшими паузами между буквами, что-
бы друг не принял их за одну букву К (12 вспышек). Между
словами паузы нужно еще увеличить.
Это уже кое-что. По крайней мере не нужно размахивать
фонариком: направляй луч в нужную сторону и щелкай кноп-
кой. Правда, у этого способа есть и недостаток — чтобы пере-
дать обычный для начала разговора вопрос «Как жизнь?», по-
надобится целых 95 вспышек, даже если забыть о знаке вопро-
са, для которого тоже нужно задать число вспышек.
Но кажется, решение где-то рядом. Наверняка кто-то уже
ломал голову над подобной проблемой, думаете вы, и вы аб-
солютно правы. Наступает утро, вы идете в библиотеку и на-
ходите там книги об удивительном изобретении, которое на-
зывают азбукой Морзе. Это в точности то, что вам нужно, хотя
теперь придется заново учиться писать все буквы.
Вот в чем отличие азбуки Морзе от вашей системы. Вы по-
ставили каждой букве в соответствие определенное число оди-
наковых вспышек (от 1 для А до 33 для Я). В азбуке Морзе ис-
пользуются вспышки двух типов — короткие и длинные. Это,
конечно, усложняет ее, но с другой стороны делает куда более
эффективной. С помощью азбуки Морзе фраза «Как жизнь?»
кодируется всего 30 вспышками (как короткими, так и длин-
ными), а не 95, причем с учетом знака вопроса.
3
Верные друзья
Говоря об азбуке Морзе, обычно говорят не о коротких и
длинных вспышках, а о точках и тире, поскольку с их помо-
щью код удобно изображать на бумаге. Каждой букве алфави-
та соответствует собственная последовательность точек и тире.
A
Б
В
Г
Д
Ж
З
И
Й
У
Ф
Х
Ц
Ч
Ш
Щ
Ъ,Ь
К
Л
М
Н
О
П
Р
С
Т
K
L
M
N
O
P
R
S
T
U
F
H
C
Q
X
Y
A
B
W
G
D
E
E
V
Z
I
J
Ы
Ю
Я
Хотя азбука Морзе не имеет к компьютерам абсолютно ни-
какого отношения, тесное знакомство с концепцией кодирова-
ния необходимо для постижения тайного языка и внутренней
сути аппаратного и программного воплощений компьютера.
В этой книге слово код обычно обозначает некую систему
для обмена информацией между людьми и машинами. Иначе
говоря, код — это средство коммуникации. И хотя коды иног-
да ассоциируются с какой-то тайной, чаще их используют для
других целей. В определенном смысле коды вообще составля-
ют основу любого человеческого общения.
В романе «Сто лет одиночества» Габриэль Гарсия Маркес
вспоминает о временах, когда «мир был так юн, что вещи еще
не обрели свои имена, и чтобы как-то обозначить их, нужно
было указать на них пальцем». Обычно имена, которые мы
даем вещам, кажутся произвольными. Непонятно, например,
почему кошку не назвали собакой, а собаку — кошкой. Мож-
но сказать, что обычный толковый словарь — это разновид-
ность кода.
Звуки, издаваемые при произнесении слова, — это код, по-
нятный любому, кто способен услышать наш голос и понима-
4
Глава первая
ет язык, на котором мы говорим. Мы называем этот код ре-
чью. Для слов, изображаемых на бумаге (или на камне, или на
дереве), существует другой код — в виде написанных или на-
печатанных символов. Мы называем этот код письмом или тек-
стом. Во многих языках между речью и письмом имеется стро-
гое соответствие. В европейских языках, например, буквам или
группам букв отвечают (в той или иной степени) определен-
ные звуки.
Для глухонемых разработан особый код — язык знаков, в
котором движения рук обозначают буквы, целые слова и поня-
тия. Для слепых письмо заменяется азбукой Брайля, в которой
буквы, группы букв и целые слова закодированы наборами вы-
пуклых точек. Когда устную речь нужно очень быстро перевес-
ти в текст, применяют особый код — стенографию (скоропись).
Для общения люди используют множество различных ко-
дов, потому что одни коды иногда удобнее других. Например,
устную речь нельзя сохранить на бумаге, поэтому вместо нее
мы применяем письмо. Беззвучный обмен информацией на
расстоянии и в темноте посредством речи или письма невозмо-
жен, поэтому в ряде случаев удобной альтернативой им оказы-
вается азбука Морзе. Код полезен, если выполняет задачу, с ко-
торой в данных обстоятельствах не справляются другие коды.
Как мы увидим ниже, в компьютерах также применяются
различные типы кодов для хранения и передачи чисел, звуков,
музыки, изображений и фильмов. Компьютер не может иметь
дело с человеческими кодами напрямую — ведь у него нет глаз,
ушей, рта и пальцев, столь необходимых людям при общении.
Правда, в последнее время появилась тенденция учить персо-
нальные компьютеры воспринимать, хранить, обрабатывать
и воспроизводить все типы информации, применяемые в че-
ловеческом общении: видимую (текст и изображения), слы-
шимую (устная речь, звуки и музыка) или их сочетание (муль-
типликация и кино). Каждый из этих видов информации тре-
бует собственного кода подобно тому, как человеку нужны
одни органы для речи (рот и уши) и другие (руки и глаза) —
для письма.
Даже таблица с расшифровкой азбуки Морзе сама по себе
— тоже своеобразный код. Из нее видно, что каждая буква пред-
ставлена набором точек и тире, однако в реальности мы не мо-
жем посылать точки и тире, а потому заменяем их вспышками.
5
Верные друзья
Чтобы передать точку азбуки Морзе с помощью фонари-
ка, нужно очень быстро включить и выключить его (короткая
вспышка). Для передачи тире фонарик остается включенным
немного дольше (долгая вспышка). Например, чтобы передать
букву А, надо включить фонарик и тут же выключить, а затем
включить опять и выключить уже с меньшей поспешностью.
Перед следующим символом нужно сделать паузу. Традици-
онно тире длится примерно в три раза дольше точки. Если,
скажем, для передачи точки фонарик горит секунду, то для
передачи тире — три (в действительности, сообщения «мор-
зянкой» передаются гораздо быстрее). Получатель, видя корот-
кую вспышку, а за ней длинную, понимает, что это буква А.
Паузы между точками и тире в азбуке Морзе имеют боль-
шое значение. При передаче буквы А между точкой и тире
фонарик следует выключить на время, примерно равное дли-
тельности точки (если точка длится секунду, то промежуток
между точками и тире также составляет одну секунду). Буквы
одного слова разделяются более длинными паузами, равными
примерно одному тире (например, трем секундам, если тако-
ва длительность тире). В следующем примере показано слово
«привет» с надлежащими паузами между буквами.
Между словами фонарик остается выключенным на время
примерно двух тире (6 секунд, если тире длится 3 секунды).
Вот код для фразы «как жизнь».
Продолжительность пауз между буквами и словами жест-
ко не зафиксирована. Все определяется только длительностью
точки, а она зависит от того, как быстро вы способны нажи-
мать кнопку фонарика, а еще от того, как долго отправитель
вспоминает код очередной буквы в азбуке Морзе. Тире опыт-
ного «морзянщика» может длиться как точка медлительного.
Это, конечно, может затруднить чтение сообщения на азбуке
Морзе, однако после одной-двух букв получатель обычно при-
норавливается различать точки и тире.
Поначалу определение азбуки Морзе — а определением я
называю соответствие между последовательностями точек и
тире и буквами алфавита — кажется столь же произвольным,
6
Глава первая
как расположение букв на клавиатуре пишущей машинки.
Однако при ближайшем рассмотрении это оказывается совсем
не так. Самые простые и короткие коды присвоены часто упот-
ребляемым буквам, например, Е и Т, а у менее популярных
букв, таких как Ш или Щ, коды подлиннее.
Есть некий минимум азбуки Морзе, известный почти каж-
дому человеку: 3 точки, 3 тире, 3 точки представляют собой
международный сигнал бедствия — SOS. Это не сокращение,
а просто легко запоминающаяся последовательность кодов.
Еще один пример из жизни. Во время второй мировой войны
радио BBC начинало некоторые передачи вступлением к Пя-
той симфонии Бетховена — БА, БА, БА, БА-А-АМММ. Ком-
позитор и не подозревал, что начинает симфонию кодом Морзе
для буквы V (Victory, т. е. победа).
Недостаток азбуки Морзе в том, что в ней не различаются
прописные и строчные буквы. Зато в ней нашлось место циф-
рам, зашифрованным наборами из пяти точек и тире.
1
2
3
4
5
6
7
8
9
0
В отличие от букв в этих кодах есть порядок. Знаки препи-
нания зашифрованы пятью, шестью или даже семью точками
и тире.
.
,
?
:
;
-
/
"
'
(
)
=
+
$
¶
_
/
7
Верные друзья
Есть еще специальные коды для букв с диакритическими
знаками (вроде знака ударения) из некоторых европейских
языков и несколько служебных последовательностей (начало
передачи, готовность к приему, ошибка и пр.). К последним
относится и код SOS — его передают без обычных пауз между
буквами.
Со временем вы обнаружите, что гораздо легче посылать
«морзянку» с помощью специально приспособленного фона-
рика. В нем, кроме обычного выключателя, есть кнопка с пру-
жиной. Фонарик горит, пока она нажата. Немного попракти-
ковавшись, можно добиться скорости передачи 5–10 слов в
минуту — это, конечно, медленнее речи (мы произносим при-
мерно 100 слов в минуту), но вполне приемлемо.
Когда вы с другом вызубрите азбуку Морзе (а зубрежка —
единственный способ стать специалистом по отправке и при-
ему «морзянки»), то сможете даже говорить азбукой Морзе,
произнося вместо точки то, а вместо тире — ти. Письмо сво-
дится азбукой Морзе к двум символам (точке и тире), а уст-
ную речь с ее помощью можно сократить до двух слогов.
Ключевое слово здесь — два. Два вида вспышек, два слога,
два чего угодно способны в соответствующих комбинациях
передать любую информацию.
Достарыңызбен бөлісу: |