---------------------------------------------------------------
Корректура: Олег Мартыненко
---------------------------------------------------------------

СОДЕРЖАНИЕ

ОСНОВНЫЕ ХАРАКТЕРИСТИКИ 3
1.1 32-битная архитектура 3
1.2 Высокопроизводительная технология 4
1.3 Обеспечение работы с виртуальной памятью 5
1.4 Механизмы защиты 6
1.5 Расширенные возможности отладки 6
1.6 Совместимость с микропроцессорами 8086/80286 6
1.7 Заключение 7
ПРИКЛАДНАЯ АРХИТЕКТУРА 7
2.1 Регистры 7
2.1.1 Общие регистры 7
2.1.2 Флаги и счетчик команд 8
2.1.3 Регистры математического сопроцессора 8
2.2 Память и логическая адресация 9
2.2.1 Сегменты 9
2.2.2 Логические адреса 10
2.2.3 Регистры сегментов и дескрипторов 10
2.2.4 Способы адресации 11
2.3 Типы данных и команды 12
2.3.1 Главные типы данных 12
2.3.2 Типы данных математического сопроцессора 14
2.3.3 Другие команды 15
2.3.3.1 Команды операций со стеком 15
2.3.3.2 Команды передачи управления 15
2.3.3.3 Дополнительные команды 16
СИСТЕМНАЯ АРХИТЕКТУРА 16
3.1 Системные регистры 16
3.2 Обеспечение многозадачных операционных систем 17
3.2.1 Сегмент состояния задачи 18
3.2.2 Смена задачи 18
3.3 Адресация 19
3.3.1 Принцип трансляции адреса 19
3.3.2 Сегменты 20
3.3.3 Страницы 22
3.3.4 Виртуальная память 23
3.4 Защита 25
3.4.1 Привилегии 25
3.4.2 Привилегированные команды 26
3.4.3 Защита сегментов 26
3.4.4 Защита страниц 27
3.5 Системные вызовы 27
3.6 Прерывания и особые ситуации 29
3.6.1 Таблица дескрипторов 29
3.6.2 Особые случаи и регистры отладки 30
3.7 Ввод/вывод 31
АРХИТЕКТУРНАЯ СОВМЕСТИМОСТЬ 32
4.1 Совместимость с 80286 32
4.2 Режимы реального и виртуального 8086 32
АППАРАТУРНАЯ РЕАЛИЗАЦИЯ 34
5.1 Внутренняя структура 34
5.2 Внешний интерфейс 35
5.2.1 Синхросигнал 36
5.2.2 Шины данных и адреса 36
5.2.3 Определение циклов шины 36
5.2.4 Управление циклом шины 37
5.2.5 Динамическое управление разрядность шины 37
5.2.6 Статус процессора и управление 38
5.2.7 Управление сопроцессором 38
СВЕДЕНИЯ О ФУНКЦИОНИРОВАНИИ 39
6.1 Введение 39
6.2 Описание сигналов 40
6.2.1 Введение 40
6.2.2 Синхросигнал (CLK2) 40
6.2.3 Шина данных (D0-D31) 40
6.2.4 Шина адреса (BE0#-BE3#, A2-A31) 40
6.2.5 Сигналы определения типа цикла шины 42
6.2.6 Сигналы управления шиной 43
6.2.6.1 Введение 43
6.2.6.2 Строб адреса (ADS#) 43
6.2.6.3 Сигнал подтверждения (READY#) 43
6.2.6.4 Запрос следующего адреса (NA#) 43
6.2.6.5 Указатель 16-разрядной шины (BS16#) 43
6.2.7 Сигналы арбитража шины 44
6.2.7.1 Введение 44
6.2.7.2 Запросы на захват шины (HOLD) 44
6.2.7.3 Подтверждение захвата шины (HLDA) 44
6.2.8 Сигналы интерфейса с сопроцессором 44
6.2.8.1 Введение 44
6.2.8.2 Запрос сопроцессора (PEREQ) 45
6.2.8.3 Сопроцессор занят (BUSY#) 45
6.2.8.4 Ошибка сопроцессора (ERROR#) 45
6.2.9 Сигналы прерывания 46
6.2.9.1 Введение 46
6.2.9.2 Маскируемый запрос прерывания (INTR) 46
6.2.9.3 Немаскируемый запрос прерывания (NMI) 46
6.2.9.4 Сигнал сброса (установки в исходное состояние){RESET} 46
6.2.10 Список сигналов 47
6.3 Механизм обмена по шине 49
6.3.1 Введение 49
6.3.2 Пространства памяти и ввода/вывода 50
6.3.3 Организация памяти и ввода/вывода 50
6.3.4 Изменяемый размер шины данных 51
6.3.5 Связь с 32 и 16 разрядным устройствами памяти 52
6.3.6 Выравнивание операндов 54
6.4 Описание функционирования шины 54
6.4.1 Введение 54
6.4.2 Конвейерная адресация 55
6.4.3 Циклы чтения и записи 56
6.4.3.1 Введение 56
6.4.3.2 Неконвейерная адресация 57
6.4.3.3 Режим неконвейерной адресации при изменении размера шины данных 59
6.4.3.4 Конвейерная адресация 60
6.4.3.5 Инициализация и поддержание режима конвейерной адресации 62
6.4.3.6 Конвейерная адресация при изменении размера шины данных 63
6.4.4 Циклы подтверждения прерывания(INTA) 64
6.4.5 Цикл индикации останова 65
6.4.6 Цикл индикации выключения 65
6.5 Дополнительные сведения о функционировании 65
6.6.1 Вход и выход в/из состояния подтверждения захвата шины 65
6.6.2 Сброс в состоянии подтверждения захвата шины 66
6.6.3 Функционирование шины в течение и после действия сигнала RESET 66
6.7 Идентификаторы типа и модификации 67









ОСНОВНЫЕ ХАРАКТЕРИСТИКИ
Микропроцессор 80386 является высокопроизводительным 32-битным
процессором, предназначенным для построения наиболее совершенных
вычислительных систем сегодняшнего и завтрашнего дня. Станции
САПР, графические системы с высокой разрешающей способностью,
издательское дело, автоматизация контроля производства - вот те
области, где сегодня может быть применен 80386. Применения
завтрашнего дня скорее будут ограничены воображением разработчиков
систем, чем вычислительной мощностью и возможностями 80386.
Микропроцессор 80386 дает разработчику систем большое число новых
и эффективных возможностей, включая производительность от 3 до 4
миллион операций в секунду, полную 32-битную архитектуру, 4
гигабитное (2 байт) физическое адресное пространство и внутреннее
обеспечение работы со страничной виртуальной памятью. Несмотря на
введение в него последних достижений микропроцессорной техники,
80386 сохраняет совместимость по объект ному коду с программным
обеспечением, в большом количестве написанным для его
предшественников, 8086 и 80286. Особый интерес представляет такое
свойство 80386, как виртуальная машина, которое позволяет 80386
переключаться в выполнении программ, управляемых различными
операционными системами, например, UNIX и MS-DOS. Это свойство
позволяет производителям оригинальных систем непосредственно
вводить прикладное
программное обеспечение для 16-битных машин в системе на базе
32-битных микропроцессоров. Объединяя в себе производительность
супермини ЭВМ и низкую стоимость и функциональную гибкость
микропроцессора, 80386 может открыть новые рынки для
,(*`./`.f%aa.`-ke систем. Применения, недопустимые прежде из-за
невысокого быстродействия микропроцессоров или не экономности
использования супермини ЭВМ, стали теперь практически осуществимы
благодаря 80386. Такие новейшие применения, как машинное зрение,
распознавание речи, интеллектуальные работы и экспертные системы,
бывшие до недавнего времени в основном на стадии эксперимента,
теперь могут быть предложены на рынке. Для того, чтобы
удовлетворить требованиям будущих применений, мало иметь 32-битные
регистры, команды и шины. Эти основные свойства являются лишь
отправной точкой для 80386. В нижеследующих разделах в общих
чертах будет рассмотрена 32-битная архитектура 80386, обладающая
такими новыми дополнительными свойствами, как:
- высокопроизводительная технология,
- обеспечение работы с виртуальной памятью,
- механизмы защиты,
- расширенное отладочное обеспечение,
- совместимость по объектному коду с 8086/80286
1.1 32-битная архитектура
32-битная архитектура 80386 обеспечивает программные ресурсы,
необходимые для поддержки "больших " систем, характеризуемых
операциями с большими числами, большими структурами данных,
большими программами (или большим числом программ) и т.п.
Физическое адресное пространство 80386 состоит из 2 байт или 4
Гбайт; его логическое адресное пространство состоит из 2 байт или
64 терабайт (Тбайт). Восемь 32-битных общих регистров 80386 могут
быть взаимозаменяемо использованы как операнды команд и как
переменные различных способов адресации. Типы данных включают в
себя 8, 16 или 32 битные целые и порядковые, упакованные и
неупакованные десятичные, указатели, строки бит, байтов, слов и
двойных слов. Микропроцессор 80386 имеет полную систему команд для
операций над этими типами данных, а также для управления
выполнением программ. Способы адресации 80386 обеспечивают
эффективный доступ к элементам стандартных структур данных:
массивов, записей, массивов записей и записей, содержащих массивы.
1.2 Высокопроизводительная технология
32-битная архитектура не гарантирует высокой
производительности. Реализация потенциала архитектуры требует
новейшей микроэлектронной технологии, точного разделения функций и
внимания к внешним операциям кристалла, в особенности к
взаимодействию процессора с памятью. Включение этих свойств
обеспечивает 80386 самую высокую производительность по сравнению с
любым другим существующим микропроцессором.
Микропроцессор 80386 реализован с помощью технологии фирмы
ИНТЕЛ CH MOSIII - технологического процесса, объединяющего в себе
возможности высокого быстродействия технологии HMOS с малым
потреблением технологии КМОП. Использование геометрии 1,5 мкм и
слоев металлизации дает 80386 более 275000 транзисторов на
кристалле. Сейчас выпускаются оба варианта 80386, работающих на
частоте I2 и I6 МГц без состояний ожидания, причем вариант 80386
на 16 МГц обеспечивает скорость работы 3-4 миллиона операций в
секунду.
Микропроцессор 80386 разделен внутри на 6 автономно и
параллельно работающих блоков с соответствующей синхронизацией.
Все внутренние шины, соединяющие эти блоки, имеют разрядность 32
бит. Конвейерная организация функциональных блоков в 80386
допускает временное наложение выполнения различных стадий команды
и позволяет одновременно выполнять несколько операций. Кроме
конвейерной обработки всех команд, в 80386 выполнение ряда важных
./%` f() осуществляется специальными аппаратными узлами. Блок
умножения/деления 80386 может выполнять 32-битное умножение за 9-
41 такт синхронизации, в зависимости от числа значащих цифр; он
может разделить 32-битные операнды за 38 тактов (в случае чисел
без знаков) или за 43 такта (в случае чисел со знаками). Регистр
группового сдвига 80386 может за один такт сдвигать от 1 до 64
бит.
Во многих 32-битных применениях, в таких как, например,
перепрограммируемые ЭВМ коллективного пользования, требуется
преобразование логических адресов в физические и защита памяти с
помощью блока управления памятью, БУП. В других применениях,
например, в системах управления в реальном времени, это не
требуется. Для большинства микропроцессорных систем с 32-битной
архитектурой такое разделение функций реализуется путем
использования дополнительного корпуса блока управления памятью. В
отличие от них буп 80386 входит в состав процессора как один из
двух функциональных блоков конвейерной структуры. Операционная
система, управляющая работой буп, позволяет, например, системе
реального времени обходить страничное преобразование. Введение
управления памятью внутрь кристалла дает повышенную
производительность в системах, использующих буп и не приводит к ее
снижению в тех системах, которые БУП не используют. Такие
характеристики стали возможны благодаря снижению задержек
распространения, использованию внутреннего полупериодного
тактирования и параллельной работы.
Еще одно свойство, необходимое в одних применениях и не
требующееся в других, это обработка больших чисел, в особенности в
арифметических операциях с плавающей запятой с одинарной и двойной
точностью. Операнды с плавающей запятой имеют большую длину, а
необходимый набор команд для операций над ними является довольно
сложным; для реализации стандартного набора операций с плавающей
запятой в соответствии со стандартом IEEE754 требуется несколько
тысяч транзисторов. В этих целях в 80386 имеется аппаратное
обеспечение совместной работы с отдельным математическим
сопроцессором. К 80386 может быть подключен математический
сопроцессор либо 80287, либо более производительный 80387. Для
прикладного программного обеспечения сопроцессоры прозрачны; они
лишь расширяют архитектуру 80386 с помощью регистров, типов данных
и операций, требуемых стандартом IEEE754. Комбинация 80386 и 80387
может исполнять 1,8 миллион операций.
32-битный процессор, работающий с частотой 16 МГц, имеет
большее быстродействие, чем большинство быстродействующих памятей,
в следствии чего его производительность может быть ограничена
временами доступа к памяти. 80386 был спроектирован так, чтобы с
максимальной эффективностью использовать как наиболее
быстродействующие статистические ОЗУ, так и недорогие динамические
ОЗУ. Для обращения к быстрой памяти, например типа кэш, 80386
вырабатывает двухтактный магистральный цикл для адреса/данных.
(Памяти типа кэш 80386 могут иметь любой объем от минимального
полезного 4 Кбайт до максимального, охватывающего все физическое
адресное пространство). Обращение к более медленной памяти (или к
устройствам ввода/вывода) может производиться с использованием
конвейерного формирования адреса для увеличения времени установки
данных после адреса до 3 тактов при сохранении двухтактных циклов
в процессоре. Вследствие внутреннего конвейерного формирования
адреса при исполнении команды, 80386, как правило, вычисляет адрес
и определяет следующий магистральный цикл во время текущего
магистрального цикла. Узел конвейерного формирования адреса
передает эту опережающую информацию в подсистему памяти, позволяя,
тем самым, одному банку памяти дешифрировать следующий
, #(ab` +l-k) цикл, в то время как другой банк реагирует на
текущий магистральный цикл.
1.3 Обеспечение работы с виртуальной памятью
Виртуальная память позволяет ставить максимальный объем
программы или группы программ в зависимость от имеющегося
адресного пространства на диске, а не от объема физической памяти
(ОЗУ), которая в настоящее время приблизительно в 400 раз дороже.
Из вытекающей отсюда гибкости выигрывают изготовители оборудования
(которые могут поставлять изделия, отличающиеся лишь в
конфигурациях памяти и в уровне производительности), программисты
(которые могут предоставлять управление хранением программ
операционным системам и избегать написания программ с
перекрывающимися структурами) и конечные пользователи (которые
могут вводить новые и большие по объему
прикладные программы, не опасаясь нехватки памяти).
Виртуальная память реализуется операционной системой с
соответствующей аппаратурной поддержкой. Микропроцессор 80386
обеспечивает работу с системами виртуальной памяти с сегментной
или страничной организацией. Сегментная виртуальная память больше
подходит для небольших 16-битных систем, в которых объем сегмента
не превышает 64 Кбайт. 80386 обеспечивает работу с сегментами
объемом до 4 Гбайт; поэтому в большинстве больших систем на базе
80386 системы виртуальной памяти будут использовать возможность
страничного запроса. Для каждой страницы 80386 вырабатывает биты
присутствия, занятости или регистрации обращения, которые
необходимы для эффективной реализации виртуальной памяти со
страничными запросами. В случае обращения к несуществующей
странице 80386 автоматически делает переход к операционной
системе, если операционная система считала с диска отсутствующую
страницу, 80386 выполняет команду повторно. Высокая
производительность в работе с виртуальной памятью обеспечивается в
80386 использованием внутренней кэш-памяти для хранения страничной
информации. Эта кэш-память (называемая буфером просмотра
трансляции, TLB) содержит информацию о распределении адресов 32
страниц, использовавшихся последними. Страницы виртуальной памяти
80386 имеют объем 4 Кбайт, храня одновременно распределение 128
Кбайт памяти, буфер TLB позволяет 80386 преобразовать адреса
внутри кристалла, не обращаясь к хранящейся в памяти таблице
страниц. В типичных системах 98-99% поиска адресов будет
осуществляться через буфер TLB.
1.4 Механизмы защиты
Выполняя 3-4 миллиона операций в секунду, 80386 имеет
достаточно вычислительной мощности для обеспечения самых сложных
систем, состоящих из сотен или тысяч программных модулей. В таких
системах вопрос заключается не в том, будут ли ошибки, а в том как
их найти и по возможности быстро устранить и насколько их действие
может быть ограничено. Такие системы могут быть быстро отлажены и
сделаны более надежными при серийном освоении, если процессор
будет проверять каждую команду по критерию защиты. При этом
степень и тип используемой защиты зависит от конкретного
применения. Обычно простые системы реального времени работают
достаточно хорошо без использования защиты. Различные требования к
защите могут быть наиболее полно удовлетворены с помощью набора
выборочно используемых функций защиты, введенных в 80386:
- разделение адресных пространств задач;
- введение 0-4 уровней привилегий;
- использование привилегированных команд (например, HALT);
- разделение сегментов по типам (например, кодовый сегмент или
a%#,%-b данных);
- введение прав доступа к сегментам и страницам (например,
право только чтения или только исполнения);
- проверка границ сегмента.

Для сохранения максимальной производительности все проверки
защиты в 80386 выполняются одновременно с выполнением команды.
1.5 Расширенные возможности отладки
Четыре внутренних отладочных регистра 80386 помогают
значительно сократить время отладки программы. Эти регистры
работают независимо от системы защиты и поэтому могут быть
использованы в любых системах, включая те, которые будут работать
без защиты. Не менее важно и то, что они дают возможность
устанавливать контрольные точки данных, помимо контрольных точек
команд. 80386 отслеживает все четыре текущих адресных контрольных
точки одновременно, не снижая скорости выполнения программы.
Контрольные точки команд вызывают переход (обычно в программу-
отладчик) при выполнении команды, в большинстве процессоров это
осуществляется с помощью специальной команды, которую отладчик
записывает после команды, представляющей интерес. Задавая адреса
контрольных точек в регистрах, 80386 устраняет программные
искажения, неизбежные при внесении команд перехода в защищенную
или общую часть программы. Контрольные точки данных, наличие
которых является, для микропроцессора свойством уникальным, для
целей отладки особенно полезны. По контрольной точке данных можно
установить момент чтения адреса или же момент его записи или
чтения. Используя контрольные точки данных, программист может,
например, быстро установить команду, ответственную за ошибочную
запись в структуре данных. Кроме регистров контрольных точек,
80386 имеет и более традиционные отладочные функции в виде
контрольных точек команд и пошагового исполнения программы.
1.6 Совместимость с микропроцессорами 8086/80286
Два поколения процессоров семейства 86 предшествуют процессору
80386 - 80286 и 8086, с каждым из них 80386 совместим на уровне
двоичных кодов. Благодаря такой совместимости экономятся
программные затраты, обеспечивается быстрый выход на рынок и
доступ к обширной библиотеке программного обеспечения, написанного
для машин на базе микропроцессоров семейства 86.
Микропроцессор 80386, конечно, может выполнять программы для
8086, он также может одновременно выполнять программы для 80286 и
80386. Однако наиболее важным свойством совместимости 80386
представляется свойство, называемое VIRTUAL 86 ( виртуальный 86),
устанавливающее защищенную структуру для 8086 внутри системы задач
80386. Дополняя свойство виртуального 8086 страничной организацией
памяти, 80386 может закрепить за каждой задачей виртуального 8086
1 мегабайтное адресное пространство в любой области физического
адресного пространства 80386. Более того, если операционная
система 80386 обеспечивает работу с виртуальной памятью, то задачи
виртуального 8086 могут переноситься с диска и обратно как любые
другие задачи. Таким образом, свойство виртуального 8086 позволяет
80386 одновременно выполнять программы, написанные для трех
поколений семейства 86.
1.7 Заключение
Микропроцессор 80386 обеспечивает ту базовую
производительность, которая необходима для построения
высокопроизводительных микропроцессорных систем. архитектура 80386
$.ab b.g-. гибка: не ориентируясь на одно представление о
вычислительной машине, она дает разработчикам систем возможность
выбирать те варианты, которые наилучшим образом подходят для
конкретного применения.
Полный набор свойств для управления памятью, включающий
сегментацию, страничное разделение и обеспечение работы с
виртуальной памятью, реализуется внутри кристалла. До четырех
уровней защиты может быть использовано для возведения границ
между программными компонентами, однако защита может и не
использоваться. Задачи виртуального 8086 могут обогатить 32-битные
системы необычайно большим набором стандартных программ, уже
разработанных для машин на базе 8086. Производительность и
гибкость микропроцессора 80386 могут быть дополены другими
устройствами фирмы ИНТЕЛ и доведены до максимума. К этим
устройствам относятся контроллеры локальных сетей,
усовершенстванные контроллеры прямого доступа к памяти,
контроллеры дисков и графические сопроцессоры.

ПРИКЛАДНАЯ АРХИТЕКТУРА
Микропроцессор 80386 дает разработчику прикладных программ на
языке ассемблера или разработчику компилятора широкий набор 32-
битных ресурсов. В данной главе эти ресурсы рассматриваются в трех
разделах:

1)регистры;
2)память и логическая адресация;
3)типы данных и команды.

2.1 Регистры
Во всех вычислительных машинах, включая 80386, имеются
регистры, которые программисты могут использовать для срочного
промежуточного хранения. К данным, хранящимся в этих регистрах,
можно обратиться без магистральных циклов, что сокращает время
использования команды и предоставляет больше магистрального
времени другим процессором, например, контроллерам прямого доступа
к памяти. В 80386 имеется восемь программно доступных общих
регистров, еще восемь регистров добавляется при подключении
математического сопроцессора 80287 или 80387. Два других регистра
80386, предназначенных не для хранения данных, а для хранения
статуса и управления процессором, также важны для программистов.
Это регистр флагов и счетчик команд.
2.1.1 Общие регистры
Как видно из рис.2-1, Общие регистры 80386 имеют разрядность
32 бит, внутренние шины данных, внешние шины данных и адреса
процессора также имеют разрядность 32 бит. В соответствии с любым
обще принятым определением 80386 являются 32-битной машиной.
Однако в соответствии с практикой других процессоров,
предшественниками которых были 16-битные машины, принято, что в
80386 слово означает 16 бит, а 32-бита образуют двойное слово.
Как видно из рис.2-1 все общие регистры могут использоваться
как 16 или 32-битные регистры, а четыре из них могут быть
использованы и как 8-битные регистры. Почти во всех операциях
любой общий регистр может быть определен как операнд. Любые два
регистра, например, могут быть перемножены. Аналогичным образом,
любой регистр при вычислении адреса может быть использован в
качестве базового или индексного. Поскольку в любой практической
программе требуется стек, общий регистр ESP подразумевается как
указатель вершины стека.
2.1.2 Флаги и счетчик команд
На рис.2-2 показан формат регистра флагов 80386. Флаги делятся
на три класса: статусные, управляющие и системные. Процессор
устанавливает статусные флаги после многих команд, чтобы отразить
результат операции. Например, если два операнда при сравнении
оказываются равными, то процессор устанавливает флаг нулевого
результата. Другие команды, преимуществен но команды условного
перехода, проверяют флаг статуса и дают различные результаты в
зависимости от состояния флага. Программист может устанавливать
флаги управления для изменения семантики некоторых команд.
Например, команда просмотра строки может иметь направление в
сторону больших или меньших адресов в зависимости от состояния
флага направления. Системные флаги предназначены для использования
операционной системой и в прикладных программах могут
игнорироваться. (Системные флаги рассматриваются в главе 3). На
практике для исключения возможного изменения системных флагов
прикладными программами может быть использована система защиты
80386.

1 - статусные флаги
2 - перенос
3 - четность
4 - вспомогательный перенос
5 - ноль
6 - знак
7 - переполнение

Счетчик команд 80386, обозначаемый EIP, имеет разрядность 32
бит. Счетчик команд управляет выборкой команд (включая