Процесс эволюции микроэлектроники, который привел к созданию современных микрокомпьютеров, можно разделить на два периода: уменьшения размеров и расширения возможностей. В течение первого периода (40 - 70-е гг. двадцатого века) по мере совершенствования технологии компонентов компьютеры становились все меньше и меньше. Кульминацией этого периода стало появление компьютера (хотя и примитивного по стандартам 1970 г.), размеры которого были не больше почтовой марки. В период расширения возможностей (с 1970 г. по настоящее время) крошечные компьютеры превратились в столь же мощные образования как и их крупные предшественники.
Уменьшение размеров. В 50-х гг. двадцатого столетия все электронные устройства, от радиоприемников и телевизоров до компьютеров, были построены на громоздких электронных лампах. Компьютеры этого периода иногда называют ЭВМ первого поколения, а примерами их служат модели 650 и 704 фирмы IBM. Эти компьютеры устанавливались в больших помещениях и состояли из нескольких стоек с электронным оборудованием. К концу 50-х гг. электронные лампы начали заменять транзисторами и другими твердотельными приборами. Компьютеры, выполненные по новой технологии, стали называть ЭВМ второго поколения (примерами их служат системы машины 7090 фирмы IBM и В5500 фирмы Burroughs).
В 60-х гг. дискретные электронные элементы (транзисторы, резисторы и др.) были объединены в более сложные электронные компоненты, названные интегральными схемами. Интегральная схема изготавливается на кремниевой пластинке, размеры которой меньше размеров почтовой марки. Пластинка монтируется в корпусе со многими выводами ("сороконожка"), который можно встроить в систему. Такая интегральная схема называется чипом (кристаллом). Компьютеры, построенные на интегральных схемах, относятся к ЭВМ третьего поколения (системы IBM 360, GE 635 и Burroughs 6700). Технология интегральных схем продолжала совершенствоваться, и в начале 70-х гг. многие компоненты ЭВМ удалось разместить в одной микросхеме (микропроцессоры 4004 и 8008 фирмы Intel). Появился термин компьютер на кристалле.
Компьютеры на кристалле называются микрокомпьютерами и микропроцессорами. Хотя этим терминам иногда придается одинаковый смысл, между ними имеется различие. Микропроцессор - это одна микросхема, содержащая схемы управления и арифметические устройства компьютера, но в ней нет памяти и устройств ввода-вывода. Микрокомпьютер - это законченная система, содержащая микропроцессор, микросхемы памяти и устройства ввода-вывода. Иногда вся система реализуется на одном кристалле (микросхема 8048 фирмы Intel), и тогда получается однокристальный микрокомпьютер.
Расширение возможностей. Эра микропроцессоров началась в 1971 г. с появлением микросхем 4004 и 8008 фирмы Intel. Они относятся к микропроцессорам первого поколения. Обе эти микросхемы разрабатывались для специализированных применений: 4004 - для калькулятора, а 8008 -для терминала. Оба микропроцессора считались в то время занимательной новинкой и всерьез не воспринимались. Но к 1974 г., когда микропроцессор 8008 был модифицирован в микропроцессор второго поколения 8080, на них обратила внимание компьютерная промышленность. Микросхема 8080 была первым микропроцессором, специально разработанным для множества применений; она быстро стала "стандартным" микропроцессором.
Теперь микропроцессор стал выполнять вычислительные задачи старых и громоздких компьютеров и оказался по стоимости доступным даже для любителей. Многие фирмы выпускали микропроцессор 8080 по лицензиям, а некоторые из них предложили улучшенный его вариант (микропроцессор Z80 фирмы Zilog). В 1976 г. появился модернизированный вариант микропроцессора 8080 - микросхема 8085 фирмы Intel. Однако до 1978 г. базовая структура микропроцессора 8080 оставалась неизменной.
В 1978 г. фирма Intel выпустила микропроцессор 8086. Это был первый микропроцессор, который работал с данными длиной 16 бит (микропроцессор 8080 работает с 8-битными данными). Вскоре еще две фирмы объявили о своих 16-битных микропроцессорах: фирма Motorola выпустила микропроцессор М68000, а фирма Zilog - микропроцессор Z8000. Все эти микропроцессоры образовали третье поколение микропроцессоров.
В 1979 г. был выпущен 8-битный вариант 8086 - микропроцессор 8088. Через два года фирма IBM вышла на рынок персональных компьютеров и использовала его в своем первом изделии - персональном компьютере IBM PC. Благодаря такой мощной поддержке микропроцессоры 8086 и 8088 стали наиболее популярными.
Семейство микропроцессоров 8086 продолжало развиваться. В 1983 г. фирма Intel разработала усовершенствованные модификации - процессоры 80186 и 80188. В этом же году был объявлен процессор 80286, который стал крупным шагом вперед по сравнению с микропроцессором 8086. Через год этот процессор был встроен в персональный компьютер фирмы IBM следующего поколения - IBM PC/AT.
Сделаем замечание по названиям процессоров. Фирма Intel называет процессоры - iАРХ186, iАРХ188 и iАРХ286. Однако вне ее их называют -80186, 80188 и 80286; этого же будем придерживаться и мы, хотя имеют хождение и сокращенные названия процессоров - 186,188 и 286.
Параллельно с расширением сферы применения микропроцессоров развивались и специализированные микропроцессоры. Под сопроцессором понимается подчиненный процессор, выполняющий специализированные функции для процессора широкого назначения. Первым популярным сопроцессором оказался 8087, который выполняет вычисления с плавающей точкой для микропроцессоров 8086 и 8088. С появлением процессоров 80186 и 80188 он стал применяться и с ними. Но поскольку в процессор 80286 встроен другой интерфейс с сопроцессором, для него потребовалось модифицировать сопроцессор 8087. Таким усовершенствованным сопроцессором стала микросхема 80287 (другие названия ее 287 и iАРХ287).
1.2. Основные сведения о компьютерах. Предполагается, что читатели знакомы с принципами построения компьютеров, поэтому мы дадим здесь только краткий обзор. Компьютер получает данные от устройств ввода, обрабатывает их и передает окончательные результаты в устройство вывода. Выполняемая обработка определяется последовательностью команд (инструкций), называемой программой. Программа хранится в памяти компьютера.
Операциями компьютера управляет центральный процессор, или просто процессор. Он выбирает команды из памяти, декодирует их и выполняет операции, предписанные командами. Чтобы выполнять операции, процессор должен посылать управляющие сигналы в другие устройства компьютера. Операции, производимые ими при выполнении команды, состоят из пересылок данных и вычислений. Память компьютера хранит исходные данные для вычислений и результаты.
Чтобы показать, как работает компьютер, рассмотрим выполнение команды сложения. Процессор посылает сигнал в память, запрашивая следующую команду, а память реагирует, передавая команду в процессор. Затем процессор декодирует команду и обнаруживает, что это команда сложения. После этого процессор предпринимает такие действия:
1) посылает сигналы в память, запрашивая передачу двух значений;
2) суммирует полученные значения;
3) посылает сигнал в память о том, чтобы она приняла результат сложения.
Память - это совокупность последовательных ячеек, каждая из которых имеет уникальный адрес. Каждая ячейка состоит из последовательности бит. Значения бит (0 или 1) образуют содержимое ячейки.
Регистры, как и память, используются для хранения промежуточных результатов. Но они находятся в составе процессора, поэтому получать значения из регистров проще и быстрее, чем из памяти. Флажки внутри процессора применяются для регистрации того, что в нем происходит. Есть два вида флажков: одни из них (флажки состояния) фиксируют информацию об особенностях ранее выполненных команд, а другие (флажки управления) управляют действиями процессора. Пример флажка состояния - флажок, показывающий, не является ли результат для компьютера слишком большим. Примером флажка управления служит флажок, заставляющий компьютер выполнять команды с меньшей скоростью. Может оказаться, что флажок одновременно является и флажком состояния, и флажком управления; примером может служить флажок NT процессора 80286.
1.3. Представление чисел. Мы привыкли представлять целые числа в виде последовательностей десятичных цифр, например 365: три сотни, шесть десятков и пять единиц. Такое представление называется представлением с основанием десять. Целые числа в компьютерах обычно представляются последовательностями двоичных цифр (бит), например 11010. Такое представление в двоичной системе обозначает: 1 - шестнадцать, 1 - восемь, 0 - четыре, 1 - два и 0 -нуль. Двоичные числа можно складывать, вычитать, умножать и делить, не превращая их в десятичные, если помнить о том, что 1 плюс 1 равно 10 (1 -два и 0 - нуль), а не 2. Приведем пример:
+1001 (двоичное представление девяти)
0101 (двоичное представление пяти)
1110 (двоичное представление четырнадцати)
Конечно, мы запутаемся в длинных последовательностях двоичных цифр, но компьютеры в них не путаются. Например, 10110101 есть двоичное представление десятичного числа 181. Чтобы упростить действия с двоичными числами, их цифры группируют по четыре бита. После этого каждая группа представляется одним символом в соответствии с табл. 1.1. Например, число 10110101 сокращенно записывается как В5. Такое представление называется шестнадцатеричным числом; если бы мы рождались с шестнадцатью пальцами на руках, то пользовались бы именно такими числами.
Таблица 1.1 Шестнадцатеричное представление | ||||
Группа из 4 бит | Шестнадцатеричная цифра | Значение | ||
Нуль | ||||
Один | ||||
Два | ||||
Три | ||||
Четыре | ||||
Пять | ||||
Шесть | ||||
Семь | ||||
Восемь | ||||
Девять | ||||
Десять | ||||
Одиннадцать | ||||
Двенадцать | ||||
Тринадцать | ||||
Четырнадцать | ||||
Пятнадцать | ||||
Двоичная запись очень удобна для представления положительных чисел и нуля. Но при переходе к отрицательным числам потребуется дополнительный механизм для указания знака числа. Проще всего использовать для знака старший (левый) бит числа, например:
0000 0100 (обозначает +4)
1000 0100 (обозначает -4)
0111 1111 (обозначает +127)
1111 1111 (обозначает -127)
У такого представления, называемого прямым кодом, имеется один серьезный недостаток: для него потребуются специальные арифметические правила. Покажем это на примере использования двоичной арифметики для вычитания +1 из 0 с ожидаемым получением -1:
-0000 0000 (0 в прямом коде)
0000 0001 (+1 в прямом коде)
1111 1111 (-127 в прямом коде)
При использовании для знаковых чисел (как и для беззнаковых) обычной двоичной арифметики требуется особое представление знаковых чисел, в котором 11111111 представляет -1, а не -127. Кроме того, вычитание +1 из -1 должно давать -2. Выполним это вычитание, чтобы посмотреть, как должно выглядеть -2:
11111111 (это -1)
00000001 (вычитаем +1)
11111110 (и называем это -2)
Рассмотренное представление называется дополнительным кодом; в этом коде операции сложения и вычитания дают правильный результат в дополнительном коде, например:
+00000011 (+3 в дополнительном коде)
11111110 (-2 в дополнительном коде)
0000 0001 (+1 в дополнительном коде)
В дополнительном коде старший бит неотрицательного (положительного или нулевого) числа содержит 0, а отрицательного числа -1. Следовательно, как и в прямом коде, этот бит является знаковым.
Знак числа в дополнительном коде можно изменить, если изменить (инвертировать) значение каждого бита и прибавить +1. Например, мы можем получить представление -5 в дополнительном коде из представления +5 в дополнительном коде следующим образом:
+00000101 (+5 в дополнительном коде)
11111010 (+5 с измененными битами)
0000 0001 (+1 в дополнительном коде)
11111011 (- 5 в дополнительном коде)
Необходимо очень осторожно подходить к увеличению длины чисел представленных в дополнительном коде. Бели 8-битное число в дополнительном коде расширяется до 16 бит (например, для сложения с 16-битным числом в дополнительном коде), нужно подумать, что же поместить в левые 8 бит.
Предположим, что мы хотим прибавить число 0000 0001 (+1 в дополнительном коде) к 0000 0000 0000 0011 (+3 в дополнительном коде). Наверное, ни у кого не возникает сомнений в том, что здесь следует просто добавить в числе +1 восемь нулей с левой стороны, а затем сложить:
+0000 0000 0000 0011 (+3 в дополнительном коде)
0000 0000 0000 0001 (+1 в дополнительном коде)
0000 0000 0000 0100 (+4 в дополнительном коде)
Однако при необходимости прибавить число 1111 1111 (-1 в дополнительном коде) к числу 0000 0000 0000 0011 (+3 в дополнительном коде) следует добавить к числу -1 слева восемь единиц (добавление нулей превратило бы -1 в положительное число). После этого производится сложение:
+0000 0000 0000 0011 (+3 в дополнительном коде)
1111 1111 1111 1111 (-1 в дополнительном коде)
0000 0000 0000 0010 (+2 в дополнительном коде)
Следовательно, расширение 8-битного числа в 16-битное выглядит так:
Значение | 8-битное представление | 16-битное представление |
+1 | 0000 0001 | 0000 0000 0000 0001 |
-1 | 1111 1111 | 1111 1111 1111 1111 |
Таким образом, для расширения числа в дополнительном коде необходимо ввести новые биты слева и поместить в каждый из них значение знакового бита. Этот процесс называется расширением со знаком.
Заключение. Познакомившись с компьютерами и представлением чисел, мы готовы к изучению конкретного процессора 80286. В следующей лекции мы рассмотрим его машинную организацию.