Главная страница

кр гаряев. Чарльз Петцольд - Код_ тайный язык информатики-Манн, Иванов и Фе. Книга принадлежит Контакты владельца Культовая книга талантливого преподавателя стала для многих первым уверенным шагом в программировании


Скачать 6.11 Mb.
НазваниеКнига принадлежит Контакты владельца Культовая книга талантливого преподавателя стала для многих первым уверенным шагом в программировании
Анкоркр гаряев
Дата19.10.2022
Размер6.11 Mb.
Формат файлаpdf
Имя файлаЧарльз Петцольд - Код_ тайный язык информатики-Манн, Иванов и Фе.pdf
ТипКнига
#743064
страница18 из 28
1   ...   14   15   16   17   18   19   20   21   ...   28
Входы
Выходы
Pre
Clr
Clk
D
Q
Q
L
H
X
X
H
L
H
L
X
X
L
H
L
L
X
X
H*
H*
H
L

H
H
L
H
H

L
L
H
H
H
L
H
Q
0
Q
0
В этой таблице H означает высокий (high), а Lнизкий (low) уровень сиг- нала. Если хотите, можете считать эти обозначения единицей и нулем. В моем триггере входы «Сброс» и «Установка» обычно равны 0; в данном случае они обычно равны 1.
Далее в справочнике по микросхемам ТТЛ вы обнаружите, что микросхе- ма 7483 — это 4-битный двоичный полный сумматор, микросхема 74151 — се- лектор с восемью входами и одним выходом, 74154 — дешифратор с четырьмя входами и 16 выходами, 74161 — синхронный 4-разрядный двоичный счетчик,
74175 — счетверенный D-триггер со сбросом. Вы можете использовать две из перечисленных микросхем для создания 8-битной защелки.

Глава 18. От счетов к микросхемам
289
Итак, теперь вы знаете, откуда взялись различные компоненты, которые я использовал в главе 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 Semi- conductor. Эта книга содержит информацию о микросхемах КМОП серии 4000.
Потребляемая мощность микросхем ТТЛ — от 4,75 до 5,25 вольта, для микро- схем КМОП — от 3 до 18 вольт. Довольно большой диапазон! Кроме того, микро- схемы КМОП потребляют гораздо меньше энергии по сравнению с ТТЛ-чипами, что делает возможным создание на их основе небольших устройств, работающих от батареек. Недостаток микросхемы КМОП — низкая скорость работы. Напри- мер, гарантированное время установки 4-битного полного сумматора КМОП 4008, работающего от напряжения 5 вольт, — 750 наносекунд. Скорость увеличивает- ся по мере роста напряжения и составляет 250 наносекунд при десяти вольтах и 190 наносекунд — при 15 вольтах. Однако по этому показателю устройство

290
Код на основе микросхем КМОП сильно отстает от 4-битного ТТЛ-сумматора, вре- мя установки которого 24 наносекунды. (Двадцать пять лет назад компромисс между скоростью микросхемы ТТЛ и низким энергопотреблением микросхемы
КМОП был довольно явным. Сегодня существуют версии ТТЛ-чипов с малым энергопотреблением и высокоскоростные версии микросхем КМОП.)
На практике соединение микросхем начинается на пластиковой макет-
ной плате.
Каждые пять отверстий электрически соединены под пластмассовым ос- нованием. Микросхема вставляется в макетную плату так, чтобы она опиралась на длинную центральную борозду, а ее выводы попадали в отверстия по обе стороны. Каждый вывод ИС при этом электрически совмещается с четырь- мя другими отверстиями. Микросхемы объединяются с помощью проводов, вставляемых в другие отверстия.
Вы можете обеспечить постоянное соединение микросхем, используя тех- нологию под названием монтаж накруткой. В данном случае каждая микро- схема вставляется в гнездо с длинными квадратными штырьками.
Каждый штырек соответствует выходу микросхемы. Сами гнезда располага- ются в тонких перфорированных платах. С обратной стороны платы вы исполь- зуете специальный моточный агрегат для того, чтобы плотно обмотать штырек тонким изолированным проводом. Острые края штырька прорывают изоляцию, благодаря чему между штырьком и проводом возникает электрическое соединение.
Если бы вы занимались производством конкретного устройства на осно- ве ИС, вероятно, использовали бы печатную плату. В былые времена ее мог изготовить даже любитель. Плата — это пластина с отверстиями, покрытая

Глава 18. От счетов к микросхемам
291
тонким слоем медной фольги. Те участки фольги, которые требуется сохранить, покрываются кислотостойким веществом, после чего остальная часть протрав- ливается кислотой. Затем вы можете припаять гнезда ИС (или сами ИС) не- посредственно к медному покрытию. Однако из-за большого количества взаи- мосвязей между ИС оставшейся области медной фольги обычно оказывается недостаточно, поэтому изготавливаемые промышленным способом печатные платы имеют несколько уровней межсоединений.
К началу 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-разрядные микропро- цессоры, которые с тех пор остаются стандартом для домашних компьютеров.

292
Код
Во-вторых, максимальная тактовая частота микросхемы 4004 состав- ляла 108 тысяч циклов в секунду, или 108 килогерц. Тактовая частота — это максимальная скорость тактового генератора, который можно подключить к микропроцессору, чтобы заставить его работать. Более высокая скорость может привести к некорректной работе. К 1999 году тактовая частота микро- процессоров, предназначенных для домашних компьютеров, достигла отметки
500 мегагерц, что примерно в 5000 раз быстрее по сравнению с аналогичным показателем микросхемы 4004.
В-третьих, объем адресуемой памяти микросхемы 4004 составлял 640 байт.
Хотя это значение кажется смехотворно маленьким, оно соответствовало ем- кости микросхем памяти того времени. Как вы увидите далее, уже спустя два года микропроцессоры могли обращаться к 64 килобайтам памяти, что соот- ветствует возможностям компьютера из главы 17. В 1999 году микропроцессо- ры Intel могли обращаться к 64 терабайтам памяти, однако это слишком мно- го, учитывая, что оперативная память большинства домашних компьютеров не превышала 256 мегабайт.
Эти три показателя ничего не говорят о возможностях компьютера. Напри- мер, 4-разрядный процессор может складывать 32-разрядные числа, просто разделяя их на 4-разрядные фрагменты. В некотором отношении все цифро- вые компьютеры одинаковы. Если аппаратное обеспечение одного процессора может решить задачу, которая не под силу другому, третий способен справить- ся с задачей с помощью программного обеспечения; в конечном итоге все они делают одно и то же. Именно это подразумевалось в статье Алана Тьюринга
1937 года о вычислимости.
Быстродействие — одна из самых важных причин, по которой мы вообще используем компьютеры. Максимальная тактовая частота оказывает очевидное влияние на общую скорость работы процессора, поскольку определяет быстроту выполнения каждой команды. Ширина шины данных процессора также влияет на его быстродействие. Несмотря на то что 4-разрядный процессор способен складывать 32-разрядные числа, при решении этой задачи он сильно уступа- ет 32-разрядному. Тем не менее вы можете не сразу осознать, какое влияние на быстродействие оказывает максимальный объем адресуемой памяти про- цессора. Поначалу может показаться, что адресуемая память не имеет ничего общего со скоростью работы, а вместо этого указывает на ограничение спо- собности процессора выполнять определенные функции, которые могут потре- бовать большого объема памяти. Однако процессор всегда может обойти этот предел, используя некоторые адреса памяти, чтобы управлять другими сред- ствами для сохранения и извлечения информации. (Представьте, что каждый байт, записанный в конкретную ячейку памяти, — это фактически отверстие,

Глава 18. От счетов к микросхемам пробитое в бумажной ленте, а каждый байт, считанный из этой ячейки, счи- тывается с ленты.) Однако этот процесс замедляет работу всего компьютера.
Снова проблема в быстродействии. Конечно, эти три показателя лишь примерно отражают скорость работы микропроцессора. Они ничего не сообщают о внут- ренней архитектуре микропроцессора или об эффективности и возможностях команд, написанных на машинном языке. По мере усложнения процессоров многие распространенные задачи, ранее выполнявшиеся программным обес- печением, включались в функционал самого процессора. В следующих главах приведу примеры, отражающие эту тенденцию.
Все цифровые компьютеры обладают одинаковыми возможностями. Они не могут делать ничего, что выходило бы за пределы потенциала примитив- ной вычислительной машины, разработанной Аланом Тьюрингом. При этом скорость процессора, конечно же, влияет на общую полезность компьютер- ной системы. Например, любой компьютер, который считает медленнее, чем человеческий мозг, является бесполезным. И мы вряд ли сможем посмотреть фильм на экране современного компьютера, если процессору потребуется це- лая минута для того, чтобы нарисовать один кадр.
Вернемся в середину 1970-х. Несмотря на свои ограничения, микросхе- ма 4004 стала началом новой эпохи. К апрелю 1972 года компания Intel выпус- тила микросхему 8008 — 8-разрядный микропроцессор с тактовой частотой
200 килогерц и адресуемой памятью объемом 16 килобайта. (Видите, как лег- ко описать процессор с помощью всего лишь трех параметров?) А в 1974 году в течение пятимесячного периода компании Intel и Motorola выпустили ми- кропроцессоры, превосходящие по своим характеристикам микросхему 8008.
Эти два микропроцессора изменили мир.

294
Глава 19
Два классических микропроцессора
Микропроцессор, представляющий собой совокупность всех компонентов центрального процессорного устройства (ЦПУ), объединенных на одной крем- ниевой микросхеме, появился в 1971 году. Начало было скромным: первый микропроцессор Intel 4004 содержал около 2300 транзисторов. Сегодня ко- личество транзисторов в микропроцессорах, предназначенных для домашних компьютеров, приблизилось к отметке в десять миллионов.
Тем не менее принцип его работы на фундаментальном уровне остался прежним. Огромное количество дополнительных транзисторов в современных чипах может выполнять интересные функции; на первых этапах изучения оно скорее отвлекает, чем проясняет ситуацию. Для четкого представления работы микропроцессора рассмотрим его первые версии.
Микропроцессоры, о которых пойдет речь, появились в 1974 году. В апреле
Intel представила свою микросхему 8080, а в августе Motorola, которая с нача- ла 1950-х годов занималась производством полупроводников и транзисторных устройств, выпустила микросхему 6800. В тот год на рынке появились не толь- ко эти микропроцессоры. Тогда же компания Texas Instruments представила свою 4-разрядную микросхему TMS1000, которая устанавливалась во многие калькуляторы, игрушки и другие устройства, а National Semiconductor выпус- тила первый 16-разрядный микропроцессор PACE. Оглядываясь назад, можно сказать, что микросхемы 8080 и 6800, безусловно, сыграли наиболее значимую роль в истории развития вычислительной техники.
Компания Intel начала продавать микросхему 8080 по цене 360 долла- ров США, как бы подтрунивая над мейнфреймами System/360 компании IBM, на которые крупные корпорации тратили миллионы долларов. Нельзя сказать, что микросхема 8080 могла тягаться с мейнфреймом System/360, однако в по- следующие несколько лет IBM не могла обойти вниманием эти миниатюрные компьютеры.

Глава 19. Два классических микропроцессора
295
Чип 8080 — это 8-разрядный микропроцессор, который содержит около
6000 транзисторов, работает с тактовой частотой два мегагерца и может ад- ресовать 64 килобайта памяти. Микросхема 6800 содержит около 4000 тран- зисторов и тоже может адресовать 64 килобайта памяти. Первые чипы 6800 работали на частоте один мегагерц, но к 1977 году Motorola представила их усовершенствованные версии, работавшие с частотой 1,5 и 2 мегагерца.
Микросхемы 8080 и 6800 называются однокристальными микропроцес- сорами, или однокристальными компьютерами. Процессор — это только один из компонентов компьютера. В дополнение к нему требуются по крайней мере некоторое оперативное запоминающее устройство (ОЗУ), какой-то способ, по- зволяющий пользователю записать информацию в компьютер (устройство вво- да), а также извлечь ее из него (устройство вывода). Кроме того, необходимо еще несколько других микросхем для объединения всех компонентов. Я опи- шу их подробнее в главе 21.
А сейчас рассмотрим сам микропроцессор. Часто его описание сопровож- дается блок-схемой, которая иллюстрирует внутренние компоненты микро- процессора и то, как они связаны между собой. Однако на это мы уже на- смотрелись в главе 17. Здесь мы постараемся понять, что происходит внутри процессора, наблюдая, как он взаимодействует с внешним миром. Другими словами, мы можем представить микропроцессор в качестве «черного ящика», внутреннюю работу которого нам не обязательно досконально изучать, чтобы разобраться в его функциях. Для этого достаточно ознакомиться с входными и выходными сигналами, в частности набором команд.
Чипы 8080 и 6800 — это интегральные микросхемы с 40 выводами. Чаще всего длина их корпуса составляет пять сантиметров, ширина — около 1,5 сан- тиметра, а высота — около трех миллиметров.
Разумеется, мы говорим только о корпусе. Размер кремниевой пластины внутри намного меньше: в ранних версиях 8-разрядных микропроцессоров это квадрат со стороной около шести миллиметров. Корпус защищает кремние- вый чип и обеспечивает доступ ко всем его входам и выходам. На следующей схеме показаны функции 40 выводов микросхемы 8080.

296
Код
HLDA
1 2
3 4
5 6
7 8
9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 0
1
READY
WAIT
A
0
A
1
A
2
+12V
A
3
A
4
A
5
A
6
A
7
A
8
A
15
A
12
A
14
A
11
+5V
SYNC
DBIN
INTE
0 2
INT
HOLD
RESET
–5V
D
0
D
1
D
2
D
3
D
7
D
6
D
5
D
4
Gnd
A
10
Intel
8080
A
9
A
13
WR
Каждому из созданных нами электрических или электронных устройств нужен источник питания. Одна из особенностей микросхемы 8080 — ей необ- ходимы три различных напряжения. На контакт 20 должно подаваться напря- жение пять вольт, на контакт 11 — минус пять вольт, а на контакт 28 — 12 вольт.
Контакт 2 подключается к земле. (В 1976 году Intel выпустила микросхему 8085 с более простой системой электропитания.)
Все остальные контакты изображены в виде стрелок. Стрелка, направ- ленная от микросхемы, обозначает выходной сигнал. Это контролируемый микропроцессором сигнал, на который реагируют другие чипы. Стрелка, на- правленная к микросхеме, — входной сигнал, поступающий от другого чипа.
Некоторые контакты используются в качестве как входов, так и выходов.
Для работы процессора, описанного в главе 17, необходим осциллятор.
Микросхеме 8080 требуются два разных сигнала тактовой синхронизации с частотой два мегагерца, обозначенные на схеме символами 0 1
и 0 2
рядом с контактами 22 и 15. Эти сигналы удобнее генерировать с помощью друго- го чипа компании Intel под названием генератор тактовых импульсов 8224.
К этому чипу просто подключается кристалл кварца с частотой 18 мегагерц, а все остальное делает генератор.

Глава 19. Два классических микропроцессора
297
Микропроцессор всегда предусматривает несколько выходных сигналов для адресации памяти. Количество сигналов, используемых для этой цели, на- прямую связано с объемом памяти, к которой может обращаться микропро- цессор. Чип 8080 имеет 16 таких сигналов, обозначенных символами от A
0
до A
15
, что позволяет ему адресовать 2 16
, или 65 536 байт.
Микропроцессор 8080 является 8-разрядным, значит, он считывает дан- ные из памяти и записывает их по восемь бит за один раз. Для этого исполь- зуются контакты с D
0
по D
7
, которые работают как на вход, так и на выход.
Когда микропроцессор считывает байт из памяти, эти контакты функцио- нируют как входы; когда микропроцессор записывает байт в память — как выходы.
Еще десять контактов микропроцессора предусмотрены для управляющих сигналов. Например, для сброса микропроцессора используется входной сиг- нал RESET. Выходной сигнал WR заставляет микропроцессор записать байт в память. (Сигнал WR
соответствует входному сигналу записи памяти W.) Кро- ме того, иногда при считывании микропроцессором команд из памяти на кон- такты с D
0
по D
7
подаются другие управляющие сигналы. Для обработки этих дополнительных сигналов компьютеры, построенные на основе микропроцес- сора 8080, обычно используют системный контроллер 8228. Система управ- ляющих сигналов микропроцессора 8080 печально известна своей сложностью, поэтому, если вы не намерены собирать компьютер на основе этого чипа, луч- ше не мучайте себя, пытаясь в ней разобраться.
Предположим, что микропроцессор 8080 подключен к памяти объемом
64 килобайта, с которой мы можем обмениваться данными независимо от ми- кропроцессора.
После сброса микропроцессор 8080 считывает байт, хранящийся в ячейке памяти 0000h. Для этого на адресные контакты с A
0
по A
15
подаются 16 нулей.
Байт, который он считывает, должен соответствовать команде процессора 8080, а сам процесс его считывания называется выборкой команды.
В компьютере, который мы собрали в главе 17, все команды, за исключе- нием HLT, занимали в памяти по три байта, один байт содержал код команды, а в двух других хранился адрес. Команды процессора 8080 могут занимать один, два или три байта. Одни команды заставляют процессор 8080 считать байт из определенной ячейки памяти, другие — записать байт в определен- ную ячейку, третьи — выполнить некие внутренние операции без исполь- зования оперативной памяти. После обработки первой команды процессор
8080 обращается ко второй команде, хранящейся в памяти, и т. д. Совокуп- ность этих команд — компьютерная программа, способная выполнять ин- тересные функции.

298
Код
Когда процессор 8080 работает с максимальной частотой два мегагерца, каждый тактовый цикл длится 500 наносекунд (1 / 2 000 000 циклов в секунду =
= 0,000000500 секунды). Команды компьютера, описанного в главе 17, вы- полнялись за четыре тактовых цикла. На исполнение команд для процессора
8080 требуется от 4 до 18 тактовых циклов, то есть от двух до девяти микро- секунд (миллионных долей секунды).
Вероятно, чтобы понять, на что способен конкретный микропроцессор, нужно изучить весь набор его команд.
Итоговая модель компьютера из главы 17 выполняла всего 12 команд. На- бор 8-разрядного микропроцессора может легко содержать до 256 команд, при этом код каждой команды соответствует конкретному 8-битному значению.
(На самом деле команд может быть даже больше, если некоторым из них будет соответствовать 2-байтный код.) Микропроцессор 8080 не заходит так далеко, но его набор включает 244 кода. Это количество может показаться довольно большим, однако в целом процессор 8080 не сильно превосходит компьютер из главы 17. Например, если вам нужно произвести операцию умножения или деления с помощью процессора 8080, все равно придется написать для этого небольшую программу.
Как вы помните из главы 17, каждый код в наборе команд процессора обычно соответствует определенному мнемокоду, и некоторые из них сопро- вождаются аргументами. Однако эти мнемокоды служат исключительно для удобства при обращении к кодам команд. Процессор считывает только байты; он ничего не знает о соответствующем им тексте. (Для ясности буду несколько вольно обращаться с мнемокодами из документации к процессору Intel 8080.)
Набор компьютера из главы 17 включал две важные команды, которые мы первоначально назвали «Загрузить» и «Сохранить». Каждая из этих команд за- нимала три байта памяти. Первый байт команды «Загрузить» соответствовал ее коду, а два следующих — 16-битному адресу. Процессор загружал байт, хра- нящийся по этому адресу, в аккумулятор. Аналогично команда «Сохранить» консервировала содержимое аккумулятора по указанному адресу.
Затем мы обнаружили, что коды этих двух команд можно сократить, ис- пользуя мнемокоды.
LOD A,[aaaa]
STO [aaaa], A
Здесь A — аккумулятор (место назначения для команды «Загрузить» и ис- точник для команды «Сохранить»), а фрагмент aaaa — 16-битный адрес в памяти, который обычно записывается с помощью четырех шестнадцатеричных цифр.

Глава 19. Два классических микропроцессора
299
Восьмиразрядный аккумулятор в процессоре 8080 обозначается буквой A, как и аккумулятор в главе 17. Кроме того, в наборе этого процессора есть две команды, которые делают то же самое, что и команды «Загрузить» и «Сохра- нить» из главы 17. В процессоре 8080 этим командам соответствуют коды 32h и 3Ah, за каждым из которых следует 16-битный адрес, а мнемокодами для них являются STA (Store Accumulator — сохранить из аккумулятора) и LDA (Load
Accumulator — загрузить в аккумулятор).
1   ...   14   15   16   17   18   19   20   21   ...   28


написать администратору сайта