Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ПРИБОРОСТРОЕНИЯ ИНФОРМАТИКИ
Кафедра ТИ-1 «ТЕХНОЛОГИЧЕСКАЯ ИНФОРМАТИКА И ТЕХНОЛОГИЯ МАШИНОСТРОЕНИЯ»
УТВЕРЖДАЮ
Заведующий кафедрой ТИ-1
_________ (_____________)
«___»_________200__г.
Для студентов 3 курса факультета ТИ
Специальности 220301
К.т.н., доцент Холопов В.А.
(ученая степень, ученое звание, фамилия и инициалы автора)
ЛЕКЦИЯ № 5
по дисциплине 3421 «Вычислительные машины, системы и сети»
Раздел №2 Микропроцессоры с однозадачным режимом работы
(часть 1)
Обсуждена на заседании кафедры
(предметно-методической секции)
«__»___________200__г.
Протокол № __
МГУПИ 200__г.
Тема лекции: Микропроцессоры с однозадачным режимом работы (часть 1)
Время: 2 академических часа (90 мин.).
Литература (основная и дополнительная):
Новиков Ю.В. Основы микропроцессорной техники. Учебное пособие. М.: Интуит.ру, 2006 г. 357 с.
Корнеев В.В. Киселев А.В. Современные микропроцессоры. 3-е изд. И доп. СПб.: БХВ-Петербург, 2003. 448 с.: ил.
Гук М., Юров В. Процессоры Pentium 4, Athlon и Durun. СПб,: Питер Бук, 2002 512 с.: ил.
Гордеев А.В., Молчанов А.Ю. Системное программное обеспечение СПб,: Питер, 2003. 736 с.: ил.
ПЛАН ЛЕКЦИИ:
Введение до 5 мин.
Основная часть (учебные вопросы) до 80 мин.
Заключение до 5 мин.
ТЕКСТ ЛЕКЦИИ
Введение до 5 мин.
Настоящая глава содержит подробное описание принципов работы 16-разрядных микропроцессоров 8086 и 8088 фирмы Intel и их советских аналогов К1810ВМ86 и К1810ВМ88. Микропроцессоры описываются с точки зрения программиста, но не электронщика, т. е. приводится описание регистров, системы команд и т. п., но отсутствуют сведения об организации обмена по внешним шинам, о количестве и расположении выводов микросхем и др.
Основная часть до 80 мин.
Процессор 8086 стал первым 16-разрядным микропроцессором, разработанным фирмой Intel. Он был выпущен в 1978 году и содержал 29 тыс. транзисторов (для сравнения: в первых Pentiumах число транзисторов превышало 3 млн.). Почти одновременно был выпущен микропроцессор 8088. С точки зрения программиста, эти микропроцессоры абсолютно идентичны, однако микропроцессор 8086 имел 16-разрядную шину данных, а 8088 8-разрядную. Благодаря этому обстоятельству микропроцессор 8088 мог легко использоваться совместно с большим количеством разнообразных периферийных микросхем, разработанных к тому времени и ориентированных на работу с 8-разрядными микропроцессорами, в том числе с микропроцессором 8080 фирмы Intel (советский аналог К580ВМ80). Однако его производительность оказывалась ощутимо меньше, чем у микропроцессора 8086, поскольку в процессе работы ему требовалось практически в два раза больше обращений к памяти.
16-разрядные микропроцессоры фирмы Intel позволяли адресовать до 1 Мбайта памяти, для чего с помощью механизма сегментации формировался 20-разрядный адрес памяти. Адресное пространство ввода-вывода достигало 64 Кбайт (адрес порта занимал 16 разрядов). Для сравнения: 8-разрядный микропроцессор 8080 был способен адресовать 64 Кбайта памяти и 256 портов ввода-вывода.
Процессоры 8086 и 8088 могли работать с максимальной тактовой частотой 8 МГц, обеспечивая быстродействие до 4 млн. операций в секунду. Фирма IBM, взявшись за разработку своего персонального компьютера, для ускорения и удешевления работы воспользовалась микропроцессором 8088, работающим с тактовой частотой всего 4,77 МГц, т.е. почти в два раза меньше предельно допустимой. Поэтому первые персональные компьютеры семейства IBM PC использовали далеко не все возможности, уже тогда предоставляемые микропроцессором.
Специально для работы совместно с микропроцессорами 8086/8088 предназначался математический сопроцессор 8087. Описание принципов его работы не входит в задачу данной книги.
Несколько западных фирм выпустили свои варианты процессоров 8086 и 8088. Некоторые из этих клонов имели расширенную систему команд, однако все они были совместимы “снизу вверх” с изделиями фирмы Intel. В СССР был выпущен микропроцессорный комплект К1810, в который входили микропроцессоры К1810ВМ86 и К1810ВМ88, полностью совпадающие со своими американскими прототипами, а также другие микросхемы, обеспечивающие работу процессоров в составе вычислительной системы и также являющиеся копиями аналогичных изделий фирмы Intel.
Поскольку, с точки зрения программиста, микропроцессоры 8086 и 8088 идентичны, в дальнейшем для простоты будет говориться только о микропроцессоре 8086, хотя всё сказанное, если не указывается противное, в равной мере относится и к микропроцессору 8088. Аналоги, выпускавшиеся другими фирмами, упоминаться не будут, поскольку всё, что было реализовано в изделиях фирмы Intel, имелось и в их клонах.
Микропроцессор Intel 8086 существенно отличается от i8080. В нем применена новая значительно более мощная и гибкая система команд, есть возможность адресации 1 Мбайта памяти, обращения к 65536 устройствам ввода и такому же количеству устройств вывода информации.
В i8086 имеется возможность изменения внутренней аппаратной конфигурации с помощью специального управляющего сигнала. В более простом режиме 8086 ориентирован на использование в простых вычислительных и управляющих устройствах. При этом микропроцессор сам вырабатывает сигналы управления шиной и обеспечивает прямой доступ к ней посредством контроллера Intel 8257. В режиме полной конфигурации обеспечивается работа с контроллером шины 8288, который декодирует три сигнала состояния процессора и в зависимости от них выдает семь сигналов управления шиной. Такой режим используется в мультипроцессорных системах и в сложных вычислительных устройствах, в частности, в компьютере IBM PC/XT.
Интересно организована память: хранение 16-разрядных слов осуществляется в виде отдельных байтов, причем байты, передающиеся по восьми младшим линиям шины данных (D7-D0), собраны в банк 0, а передаваемые по восьми старшим линиям в банк 1. Объем каждого банка составляет 512 Кбайт. Таким образом, нечетные байты хранятся в банке 1, а четные. в банке 0. Выбор банка осуществляется с помощью младшего адреса и сигнала управления старшими разрядами шины данных.
Еще одна важная особенность возможность обработки 256 типов прерываний (от 0 до 255), в том числе есть прерывания, определяемые пользователем, и пошаговые прерывания.
Микропроцессор Intel 8086 приспособлен для работы с несколькими процессорами в одной системе, причем возможно использование как независимых процессоров, так и сопроцессоров. Отличие заключается в том, что независимый процессор выполняет свою собственную последовательность команд, а сопроцессор следит за потоком команд центрального процессора и выделяет из него "свои" команды, расширяя набор команд основного процессора и улучшая таким образом характеристики системы. Для поддержки этих режимов используются команды ESC, LOCK и XCHG, а также специальные управляющие сигналы, позволяющие разрешать конфликты доступа к общим ресурсам.
Внешние шины адреса и данных в 8086 объединены, и поэтому наличие на шине в данный момент времени информации или адреса определяется порядковым номером такта внутри цикла. Процессор ориентирован на параллельное выполнение команды и выборки следующей команды. В целом выполнение команды происходит примерно так же, как и в 8080. Команда выбирается из памяти и принимается микропроцессором в свободный регистр очереди команд, причем в то же самое время выполняется предыдущая команда. Конвейеризация команд позволяет значительно повысить быстродействие системы. При выполнении команд проверяются состояния входов запросов прерываний и захвата шины, и при необходимости выполняются соответствующие действия.
Микропроцессор i8086 состоит из трех основных частей: устройства сопряжения шины, устройства обработки и устройства управления и синхронизации.
Устройство сопряжения шины состоит из шести 8-разрядных регистров очереди команд, четырех 16-разрядных регистров адреса команды, 16-разрядного регистра команды и 16-разрядного сумматора адреса (см. рис. 2). Оно выполняет следующие функции: выбирает команды из памяти и записывает их в регистр очереди команд, вычисляет и формирует физический адрес, читает операнды из памяти или из регистров и записывает результат выполнения команд в память или в регистры.
Устройство обработки преобразует данные. Команда из очереди команд по запросу устройства обработки поступает на внутреннюю шину команд, а с нее на микропрограммное устройство управления, декодирующее ее и генерирующее соответствующие последовательности микрокоманд, необходимые для выполнения текущей операции. В отличие от первых микропроцессоров, устройство обработки в 8086 не связано с внешней шиной, а обменивается с ней информации через регистр обмена устройства сопряжения шины.
Устройство обработки содержит 16-разрядное арифметико-логическое устройство, восемь 16-разрядных регистров общего назначения и 16-разрядный регистр флагов. Регистры могут использоваться как 16-разрядные или как пары 8-разрядных (при этом их количество удваивается).
Основные устройства и сигналы микропроцессора:
BFAD - буффер адреса и данных (УУ - микропрограммное устройство управления);
RG=>6- 8-ми разрядные регистры очереди комманд (принцип конвеерной об- работки);
CS - сегмент команд;
DS - сегмент данных;
SS - сегмент стека;
ES - дополнительный сегмент;
IP - 16-ти разрядный счетчик команд (все регистры 16-ти разрядные);
POH - регистры общего назначения (АL - младший байт; АН - старший байт;
АХ - можно работать с 16-тью разрядами; ЕАХ - 32 разряда).
MOV AL - 8 разрядов
MOV EAХ - 32 разряда
СU - схема управления;
RG' - сегментные регистры (16-ти разрядные);
RG - регистры очереди команд (8-ми разрядные);
УОИ - устройство обработки информации;
УСК - устройство связи с каналом;
АХ - аккумулятор (16-ти разрядный, может быть разбит на 2 8-ми разряд- ных АН и АL);
ВХ - база;
СХ - счетчик;
D - данные;
SP - указатель стека (16-ти разрядный регистр);
ВР - указатель базы (16-ти разрядный);
IS - индекс источника (16-ти разрядный);
DI - индекс приемника (16-ти разрядный);
MCU - микропрограммное устройство;
ALU - арифметическо-логическое устройство с регистром признаков;
AD(15-0) - совмещенная шина адреса и данных 16 -ти проводниковая;
А19-А16 - шина адреса;
56, 53 - сигналы состояния;
INT - маскируемый запрос на прерывание;
NMI - немаскируемый запрос на прерывание;
C - тактовые импульсы с генератора;
SR - сигнал "Установка;
RDY - готовность;
TEST - тестирование;
MN (MX) - минимальное (максимальное) включение;
BHE - разрешение передачи по старшей половине шины данных (D15-D8), если 1, то передается 1 байт;
SA7 - сигнал состояния;
ALE - стробирование адреса;
INTA - разрешение прерывания;
RD - чтение;
WD - запись;
M/IO - выбор между памятью и внешним устройством;
DT/R - выдача-прием данных;
DEN - разрешение передачи данных;
HLD - запрос прямого доступа к памяти;
HLDA - предоставление шин или разрешение.
Максимальное включение:
Проводники, обозначение которых заключено в скобки, используются при максимальном включении.
QS1-QS0 - сигналы состояния очереди команд;
SA0-SA2 - сигналы состояния цикла команд;
LOCK - канал занят;
RQ(GT1) - запрос, разрешение
RQ(GT0) - доступа к магистрали.
С точки зрения программиста микропроцессор 8086 включает следующие регистры:
регистры общего назначения;
сегментные регистры;
регистр флагов;
регистр указателя инструкции.
Вычислительная мощь процессора 8086 (и 8088) строилась на наборе из четырнадцати 16-битных регистров, объединенных в несколько групп (они изображены на рис. 4). Основа набора - регистры общего назначения: AX (аккумулятор), BX (база), CX (счетчик) и DX (данные). Размерность каждого из них - 16 бит, но для совместимости с программным обеспечением процессоров 8080 и 8085 к регистрам общего назначения программа могла обращаться и как к 8-битным.
Регистры микропроцессора Intel 8086 (8088).
Для этого каждый регистр был разделен на две части: старший байт (Height) и младший (Low). Если программист собирался обратиться к регистру как к 16-битному, то после имени регистра (A, B, C или D) ставил символ X (AX, BX, CX, DX). Но если ему требовалось использовать регистры общего назначения как 8-битные, то он к имени регистра прибавлял литеру H или L в зависимости от того, к какому байту регистра (старшему или младшему) нужно было обратиться. Это позволяло легко адаптировать старое 8-битное ПО, поскольку литеры A, B, C и D (но без второй буквы) в качестве имен регистров применялись еще в процессоре 8085.
Процессор 8086 имеет восемь 16-разрядных регистров общего назначения, обозначаемых AX, BX, CX, DX, SI, DI, BP и SP.
Старший и младший байты регистров AX, BX, CX и DX могут использоваться отдельно. Они носят обозначения AH, BH, CH и DH для старших байтов и AL, BL, CL и DL для младших байтов.
Несмотря на то, что эти регистры именуются регистрами общего назначения, каждый из них имеет специальные функции, которые не могут быть переданы какому-либо другому регистру. Общим является то, что все регистры общего назначения могут использоваться в командах пересылки, сложения, вычитания и логических операциях. О специальном назначении каждого регистра будет упоминаться в описании тех функций микропроцессора, где этот регистр используется. Ниже приведён краткий список специфических особенностей использования этих регистров.
Регистр AX является одним из операндов команд умножения и деления; хранит операнд, подвергающийся десятичной или символьной коррекции в операциях двоично-десятичной арифметики; используется в командах ввода-вывода в качестве регистра данных.
Регистр BX используется при адресации операндов.
Регистр CX содержит счётчик повторения цикла или количество разрядов, на которое производится сдвиг операнда в инструкциях сдвига.
Регистр DX расширяет разрядность регистра AX в операциях умножения, деления и двойного сдвига; он содержит адрес порта ввода-вывода в инструкциях ввода-вывода.
Регистр SI содержит смещение строки-источника в строковых операциях и может использоваться при адресации операндов.
Регистр DI содержит смещение строки-приёмника в строковых операциях и может использоваться при адресации операндов.
Регистр BP используется при адресации данных, расположенных в сегменте стека; может использоваться при адресации данных, расположенных в других сегментах.
Регистр SP является указателем стека.
Процессор 8086 содержит четыре 16-разрядных сегментных регистра: CS, DS, ES и SS, называемые соответственно сегментными регистрами кода, данных, дополнительных данных и стека.
Процессор использует содержимое сегментных регистров (так называемые селекторы сегментов) для формирования 20-разрядных физических адресов памяти, о чём говорилось выше, в подразделе “”. При обращениях к кодам команд всегда используется сегментный регистр CS, а при обращении к стеку (с использованием указателя стека или при адресации посредством регистра BP) сегментный регистр SS, причём если адресация данных производится с помощью регистра BP, вместо сегментного регистра SS можно указать любой другой сегментный регистр. При обращении к данным в большинстве случаев по умолчанию используется регистр сегментный регистр DS, однако вместо него в этих ситуациях можно использовать любой другой сегментный регистр. Сегментный регистр ES используется при доступе к строкам-приёмникам в строковых операциях, в этом качестве он не может быть заменён каким-либо другим сегментным регистром.
Сегментные регистры не могут являться операндами арифметико-логических инструкций. В регистры DS, ES и SS значение может быть загружено из какого-либо регистра общего назначения с помощью инструкции MOV либо извлечено из вершины стека инструкцией POP. Регистр CS не может быть загружен с помощью инструкции MOV или POP, новое значение в него загружается только при выполнении операций длинных переходов (инструкции JMP, CALL и RET), при возврате из прерывания (инструкция IRET) и при возникновении прерывания. Короткие переходы не изменяют регистр CS. Содержимое всех четырёх сегментных регистров может быть переслано в любой регистр общего назначения инструкцией MOV или занесено в стек инструкцией PUSH.
В состав микропроцессора входит 16-разрядный регистр флагов, обозначаемый Flags. Он состоит из отдельных разрядов, имеющих самостоятельное значение. Формат регистра Flags и назначение его битов приведено ниже.
┌───┬───┬───┬───┬────┬────┬────┬────╥────┬────┬───┬────┬───┬────┬───┬────┐
│ 1 │ 1 │ 1 │ 1 │ OF │ DF │ IF │ TF ║ SF │ ZF │ 0 │ AF │ 0 │ PF │ 1 │ CF │
└───┴───┴───┴───┴────┴────┴────┴────╨────┴────┴───┴────┴───┴────┴───┴────┘
15 0
Разряды 15-12, 5, 3 и 1 не используются. При записи они должны содержать значения, показанные на приведённом выше рисунке. В последующих микропроцессорах (80286, 80386 и т.д.) часть этих разрядов была задействована для выполнения новых функций.
OF (разряд 11) флаг переполнения. Он устанавливается в арифметических операциях, свидетельствуя о возникновении переполнения при обработке чисел со знаком.
DF (разряд 10) флаг направления. Нулевое значение этого флага соответствует обработке строковых операндов в порядке возрастания их адресов, единичное в порядке убывания.
IF (разряд 9) флаг разрешения прерывания. Нулевое значение этого флага запрещает обработку маскируемых прерываний, единичное разрешает.
TF (разряд 8) флаг трассировки. Когда он установлен, после выполнения каждой инструкции микропроцессора происходит прерывание, используемое обычно в отладочных целях. Когда этот флаг сброшен, прерывание по окончании инструкции не возникает.
SF (разряд 7) флаг знака. Изменяется большинством арифметико-логических команд. Нулевое значение показывает, что в операции над числами со знаком было получено неотрицательное число, единичное значение что результатом является отрицательное число. Таким образом, этот флаг повторяет значение старшего (знакового) разряда результата.
ZF (разряд 6) флаг нуля. Изменяется большинством арифметико-логических команд. Этот флаг сбрасывается в нуль, если результат операции отличен от нуля, и устанавливается, если результат равен нулю.
AF (разряд 4) флаг вспомогательного переноса. Устанавливается в командах сложения и вычитания при возникновении переноса из третьего или заёма в третий разряд соответственно. Этот флаг используется командами десятичной коррекции DAA и DAS.
PF (разряд 2) флаг чётности. Устанавливается, если младший байт результата операции содержит чётное число единичных разрядов, сбрасывается в противном случае.
CF (разряд 0) флаг переноса. Устанавливается при возникновении переноса или заёма из/в старший разряд результата при выполнении команд сложения и вычитания, а также содержит значение выдвигаемого разряда в операциях сдвига.
При описании каждой инструкции будет указано, какие разряды регистра Flags могут быть изменены при её выполнении и в каких случаях это происходит.
Содержимое регистра флагов целиком доступно только для инструкций PUSHF и POPF, которые соответственно сохраняют его значение в стеке или извлекают из стека. Младший байт регистра Flags может быть загружен в регистр AH инструкцией LAHF, содержимое регистра AH может быть переслано в младший байт регистра Flags посредством инструкции SAHF. Кроме того, при возникновении прерывания состояние регистра Flags сохраняется в стеке. Инструкция IRET, обеспечивающая возврат из прерывания, подобно инструкции POPF восстанавливает содержимое регистра флагов из стека.
Некоторые разряды регистра флагов могут быть проверены или изменены с помощью предназначенных для этого инструкций микропроцессора.
Для арифметико-логических команд содержимое регистра Flags напрямую недоступно.
В состав микропроцессора 8086 входит 16-разрядный указатель инструкции IP. Он содержит смещение следующей команды в текущем сегменте кода (сегментный адрес хранится в регистре сегмента кода CS). При выборке очередной команды содержимое IP увеличивается на количество байтов, входящих в код команды.
Регистр IP не может напрямую использоваться в арифметико-логических командах. Его содержимое сохраняется в стеке при обращении к подпрограмме с помощью инструкции CALL, а также при возникновении прерывания. Восстановление содержимого регистра IP из стека возможно только с помощью инструкций возврата из прерывания IRET и возврата из подпрограммы RET. Кроме того, в регистр IP загружается новое значение при выполнении любых инструкций переходов.
Заключение до 5 мин.
Лекция разработана «___»________200__г.
_______________________(___________)
(подпись, фамилия и инициалы автора)