Основы микропроцессорной техники

Раздел 7. Организация персонального компьютера


«Структура курса | Глава 1 | Глава 2 | Глава 3 | Глава 4 | Глава 5 | Глава 6 | Раздел 7 | Глава 8 | Дополнения

Раздел 7 - Страницы: « 1 | 2 | 3 | 4 | 5 | 6 | 7 | »

7.2.3. Особенности процессора 80386

32-разрядный процессор i80386 открыл новый этап в истории микропроцессоров Intel и персональных компьютеров типа IBM PC. Естественно, он сохранял полную совместимость со своими 16-разрядными предшественниками, чтобы не отказываться от разработанного для них программного обеспечения. Но именно в 80386 преодолено жесткое ограничение на длину непрерывного сегмента памяти в 64 Кбайт, было пережитком прошлого и следствием не самых удачных архитектурных решений 8086.

В защищенном режиме 80386 длина сегмента может достигать 4 Гбайт, то есть весь объем физически адресованной памяти. Таким образом, память фактически стала непрерывной. Кроме того, 80386 обеспечивает поддержку виртуальной памяти объемом до 64 Тбайт (1 Тбайт = 1024 Гбайт). Встроенный блок управления памятью поддерживает механизмы сегментации и страничной трансляции адресов (Paging). Обеспечивается четырехуровневая система защиты памяти и ввода / вывода, а также перекмикання задач.

Процессор 80386, как и 80286, может работать в двух режимах:

  • Реальный режим, полностью совместимый с 8086.
  • Защищенный режим. В этом режиме возможна адресация до 4 Гбайт физической памяти (32 разряда), через которые при использовании механизма страничной адресации могут отображаться до 16 Тбайт виртуальной памяти каждой задачи.

Переключение между этими двумя режимами в обе стороны, в отличие от 80286, происходит достаточно быстро, с помощью простой последовательности команд, и аппаратного сброса процессора не нужно.

Процессор может оперировать с 8, 16, 32-битными операндами, строками байт, слов и двойных слов, а также с битами, битными полями и строками бит.

В архитектуру процессора введены средства отладки и тестирования.

Разрядность регистров данных (AX, BX, CX, DX) и адресов (SI, DI, BP, SP) увеличена до 32. При этом в их обозначении появилась приставка E (Extended - расширенный), например, EAX, ESI. Отсутствие приставки в имени означает ссылку на младшие 16 разрядов соответствующего регистра. Регистры данных и адресов объединенные в группу регистров общего назначе ния, которые иногда могут заменять друг друга. Это может рассматриваться как отход от идеологии специализации всех регистров.

Регистры селекторов оставлены 16-разрядными, но добавлены два новых регистры FS и GS для задания дополнительных сегментов данных. Также расширен до 32 разрядов регистра-указатель (счетчик) команд EIP. 32-разрядным стал и регистр флагов EFLAGS. Его биты, определенные для 8086 и 80286, остались прежними, но добавлены 6 новых бит (Рис. 7.6). Такой же формат используется и в процессорах 80486 и Pentium.


Рис. 7.6 Регистр признаков EFLAGS процессора 80386.

Регистры сегментов процессора содержат 16-битные указатели (в реальном режиме) или селекторы (в защищенном режиме) шести сегментов. С каждым из шести сегментных регистров связаны программно недоступны регистры дескрипторов, как и в случае 80286. В защищенном режиме в регистры дескрипторов загружается 32-битная базовая адрес сегмента, 32-битный лимит и атрибуты сегментов.

Кроме упомянутых регистров в состав процессора входят еще четыре управляющие регистра (CR0, CR1, CR2, CR3), которые сохраняют признаки состояния процессора, общие для всех задач. В процессоре Pentium к ним добавлен еще и регистр CR4. Кроме того, процессор содержит еще системные адресные регистры для ссылок на сегменты и таблицы в защищенном режиме, регистры настройки и регистры тестирования. Как видим, от модели к модели количество регистров процессора постоянно растет.

Процессор позволяет выделять в памяти сегменты и страницы. Сегменты в реальном режиме имеют фиксированный размер, в защищенном - переменный. Страницы, которых не было в предыдущих моделях, представляют собой области логической памяти размером 4 Кбайт, каждая из которой может отображаться на любую область физической памяти. Если сегменты используются на прикладном уровне, то страницы применяются на системном.

Применительно к памяти различают три адресных пространства: логическое, линейный и физический. О принципах адресации у процессора 80386 уже говорилось в разделе 3.1.2 (см. Рис. 3.8).

Процессор 80386 может использовать режимы 32-битной или 16-битной адресации. Режим 16-битной адресации соответствует режимам процессоров 8086 и 80286, при этом как компоненты адреса используются младшие 16 бит соответствующих регистров. Отличие 32-битной адресации отражено в табл. 7.1.

Табл. 7.1. Различия режимов адресации 80386.
Компонент адресации 16-битная адресация 32-битная адресация
Базовый регистр BX или BP Произвольный 32-битный общего назначения
Индексный регистр SI или DI Произвольный 32-битный общего назначения, кроме ESP
Масштаб Нет (всегда 1) 1,2, 4 или 8
Смещение 0, 8 или 16 бит 0, 8 или 32 бита

Так же, как и предшественн ики, процессор 80386 обрабатывает все виды прерываний: аппаратные (маскированных и немасковани) и программные, которые в данном случае обрабатываются как разновидность исключений; и исключение. Исключения подразделяются на отказы, ловушки и аварийные завершения.

  • Отказа (Fault) - это исключения, которые проявляются и обслуживаются к выполнению команды, вызывает ошибку.
  • Ловушки (Trap) - это исключения, которые проявляются и обслуживаются после выполнения команды, вызывает это исключение. К классу ловушек относятся и программные прерывания.
  • Сбоях (Abort) - это исключение, что не позволяет точно установить команду, которая его вызвала. Оно используется для сообщения о серьезной ошибке, такое как аппаратная ошибка или повреждение системных таблиц.

Каждому номеру прерывания (0 ... 255) или исключения соответствует элемент в таблице дескрипторов прерываний IDT (Interrupt Descriptor Table). В защищенном режиме IDT может иметь размер от 32 до 256 дескрипторов, каждый из которых состоит из 8 байт.

Отличия от предыдущего процессора 80286 в выполнении операций ввода / вывода сводятся к добавлению возможностей обращения к 32-битных портов. Важно отметить, что строковые команды процессора 80386 обеспечивают блочный ввод / вывод с большей скоростью, чем стандартный контроллер прямого доступа к памяти.

Процессор выпускался в 100-выводном корпусе. Была предусмотрена возможность подключения внешнего сопроцессора 80387.

А теперь остановимся несколько подробнее на защищенном режиме, который используется на полную мощность именно начиная с 32-разрядных процессоров, так как процессор 80286 имел существенные ограничения и в большинстве случаев работал все же в реальном режиме.

Защищенный режим был предложен для обеспечения независимости одновременного выполнения нескольких задач (как системных, так и прикладных. Для этого предусмотрена защита ресурсов каждой задачи от действий других задач. Под ресурсами здесь понимается память данным, программами, системными таблицами, а также используемая задачей аппаратура. Защита базируется на сегментации памяти, причем, в отличие от реального режима, задача не может переопределять положения своих сегментов в памяти и использует только сегменты, возложенные на него операционной системой. Сегмент определяется дескриптором сегмента, задающий положение сегмента в памяти, его размер (или лимит), назначение и характеристики защиты.

Защита с помощью сегментации не позволяет:

  • использовать сегменты не по назначению, например, трактовать область данных как область приложения;
  • нарушать права доступа (например, пытаться записывать информацию в сегмент, предназначенный только для чтения, обращаться к сегменту, не имея достаточных привилегий.
  • адресоваться к элементам, которые выходят за пределы сегмента;
  • менять дескрипторы сегментов, не имея достаточных привилегий.

Защищенный режим предусматривает средства переключения задач. Состояние каждой задачи (т.е. состояние всех регистров процессора) хранится в специальном сегменте состояния задачи, на который указывает селектор в регистре задачи. При переключении задачи достаточно загрузить в регистр задачи новый селектор, и состояние предыдущего задания автоматически сохранится, а в процессор загрузится состояние новой (или ранее прерванной) задачи. Это развитие идеи стека.

В защищенном режиме предусматриваются иерархическая четырехуровневая (уровни 0, 1, 2, 3) система привилегий, предназначенная для управления выполнением привилегирован ых команд и доступом к дескрипторов (Рис. 7.7). Уровень 0 соответствует неограниченным правам доступа и уделяется ядру операционной системы. Уровень 3 дает минимальные права и уделяется прикладным задачам. Уровни привилегий относятся к дескрипторов, селекторов и задач. Кроме того, в регистре флагов является двохбитове поле привилегий ввода / вывода (см. Рис. 7.4 и 7.6), управляющий доступом к командам ввода / вывода и флагом прерываний.

Механизм виртуальной памяти, используемый в защищенном режиме, позволяет любой задачи использовать логический пространство размером до 64 Тбайт (16 К сегментов по 4 Гбайта. Для этого каждый сегмент в своем дескриптор имеет специальный бит, указывающий на присутствие данного сегмента в оперативной памяти в данный момент. Неиспользуемый сегмент может быть выгружен из оперативной памяти во внешнюю память (обычно - на диск), о чем делается отметка в его дескриптор. На освободившееся место, из внешней памяти может закачиваться другой сегмент (это называется подкачки или подкачки. При обращении задачи к отсутствующего в оперативной памяти сегмента производится специальный исключение, и выполняет свопинг. С точки зрения выполняемой программы, виртуальная память ничем не отличается от реальной (говорят, что виртуальная память прозрачная), не считая задержки на процесс перекачки информации на диск и с диска.


Рис. 7.7 Уровни привилегий 32-разрядных процессоров.

Реальное использование системы защиты и виртуальной памяти возлагается на операционную систему, в идеале должна обеспечивать работоспособность даже в случае некорректного выполнения прикладных задач.

В памяти существует три типа таблиц дескрипторов: локальная таблица дескрипторов LDT, глобальная таблица дескрипторов GDT и таблица дескрипторов прерываний IDT. Каждой таблице соответствует свой регистр процессора (соответственно, LDTR, GDTR и IDTR), где хранятся дескрипторы сегментов. Глобальная таблица содержит дескрипторы, доступные всем задачам, а локальная может быть для каждой задачи своя. Дескрипторы состоят из 8 байт (как и в 80286. Однако их назначение различно. Для примера на Рис. 7.8 показано форматы дескрипторов сегмента программ и данных процессоров 80286 и 80386.


Рис. 7.8. Дескрипторы сегментов программы и данных.

Существуют также системные сегменты, предназначены для хранения локальных таблиц дескрипторов и таблиц состояния задач. Их дескрипторы (тоже 8-байтным) определяют базовую адрес, лимит сегмента, права доступа (чтение, чтение / запись, только выполнение или выполнение / чтение) и присутствие сегмента в оперативной памяти.

Задачи, дескрипторы и селекторы имеют свои уровни привилегий. Привилегии задач действуют на выполнение команд и использование дескрипторов. Текущий уровень привилегии задач определяется двумя младшими битами регистра CS. Привилегии дескриптора описываются полем DPL (Рис. 7.8). DPL определяет наименьший уровень привилегий, с которым возможен доступ к данному дескриптора. Привилегии селектора задаются полем RPL (см. Рис. 7.5). Привилегии проверяются при попытках записи в сегментные регистры, а также при выполнении некоторых команд.

Таким образом, начиная с процессора 80386, появляются средства обслуживания многозадачной режима. Естественно, процесс р не может обрабатывать несколько задач одновременно, выполняя по несколько команд сразу. Он только периодически переключается между задачами. Но с точки зрения пользователя получается, что компьютер параллельно работает с несколькими задачами.


«Структура курса Раздел 7 - Страницы: « 1 | 2 | 3 | 4 | 5 | 6 | 7 | »