Лекция №11

Download Report

Transcript Лекция №11

Вычислительная техника
и микропроцессоры
Тема 4
32++ разрядные МП и МК и
системы на их основе
Процессоры 80386 и 80486
Содержание
 Процессор i386
 Поддержка многозадачности
 Ассемблеры, дизассемблеры и
отладчики
 Примеры программ
 Процессор i486
МП 80386
Процессор i386 полностью совместим со своими
предшественниками — процессорами 8086-80286. Он
выполняет программы, предназначенные для них без
необходимости модификации кода (или с
минимальными модификациями).
 Вместе с тем i386 является серьезной переработкой
процессора 80286. По некоторым оценкам, ни до, ни
после i386, архитектура процессоров x86 ни разу не
переделывались столь кардинально.
 Процессор адресует до 4 Гбайт физической памяти и
до 64 Тбайт виртуальной памяти.
МП 80386
В своей основе МП 80386 состоит из шести
блоков, работающих параллельно:
 блок интерфейса с магистралью (BIU),
 блок предварительной выборки команд,
 блок декодирования команд,
 исполнительный блок (EU),
 блок управления сегментами
 блок разбиения на страницы
Структурная схема МП 80386
Блок интерфейса с магистралью
Блок BIU обеспечивает интерфейс между МП 80386 и его
окружением. Он принимает внутренние запросы для выборки
команд от блока предварительной выборки команд и для
обмена данными от блока EU и устанавливает приоритет этих
запросов. Одновременно он генерирует или обрабатывает
сигналы для исполнения текущего цикла магистрали.
К ним относятся сигналы адреса, данных и управления для
обращения к внешней памяти и устройствам ввода-вывода.
Блок BIU управляет также интерфейсом с внешними
арбитрами магистрали и сопроцессорами.
Интерфейс локальной магистрали
80386
С интерфейсом локальной магистрали МП 80386 совместимы
следующие компоненты:
 8041, 8042 Универсальный периферийный интерфейс
 8237 Контроллер ПДП
 8253, 8254 Программируемый интервальный таймер
 8255 Программируемый периферийный интерфейс
 82 59А Программируемый контроллер прерываний
 8272 Контроллер гибкого диска
 8274 Мультипротокольный последовательный контроллер
 82062, 82064 Контроллер жесткого диска
 82258 Улучшенный контроллер ПДП (удаленный узел)
Блок предвыборки команд

Когда блок BIU не занимает цикла
магистрали для исполнения команды,
блок предвыборки команд использует
его для последовательной выборки из
памяти байтов команд. Эти команды
хранятся в 16-байтовой очереди
команд в ожидании обработки блоком
декодирования команд.
Исполнительный блок



Блок EU выполняет команды из очереди
команд и взаимодействует со всеми
другими блоками, требуемыми для
завершения выполнения команды.
Для ускорения выполнения команд с
обращением к памяти блок EU приступает к
их выполнению до завершения выполнения
предыдущей команды.
В его состав входят РОНы.
Регистры 80386
В составе микропроцессора имеются 8 32-битных
регистров общего назначения (РОНов)
EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP.
Младшая, 16-битная, половина каждого из этих регистров
соответствует регистрам AX, BX, CX, DX, SI, DI, BP, SP
в предыдущих процессорах семейства x86.
Как и раньше возможна адресация младших и старших 8битных половин, младшей 16-битной половины 32разрядных регистров данных (AL и AH, BL и BH, CL и
CH, DL и DH).
РОНы 80386 и последующих МП
Регистры 80386
Регистр указатель команды и регистр флагов также стали
32-битными (EIP и EFLAGS соответственно), причем в
регистре флагов добавлены новая группа флажков.
К 4-м 16-битным сегментным регистрам (ES, CS, SS, DS)
прибавились ещё 2 16-битных регистра (FS и GS) и 16разрядные дескрипторы сегментов.
Добавлены 3 новых группы регистров (каждый регистр
размером 32 бит): 3 регистра управления (CR0 (MSW),
CR2, CR3), 8 регистров отладки (DR0, DR1, DR2, DR3,
DR6, DR7), 2 тестовых регистра (TR6, TR7).
Селекторы и дескрипторы
сегментов
Блок управления сегментами




Блок управления сегментами преобразует логические
адреса в линейные по запросу блока EU.
Для ускорения этого преобразования текущие
дескрипторы сегментов помещаются во встроенную
кэш-память. Во время трансляции адресов блок
управления сегментами проверяет, нет ли нарушения
сегментации.
Полученный линейный адрес направляется в блок
разбиения на страницы.
Если страничная трансляция отключена, то
сформированный линейный адрес считается физическим и
выставляется на шину процессора для выполнения цикла
чтения или записи памяти.
Преобразование логического
адреса в линейный




Логический адрес состоит из двух элементов: селектор
сегмента и смещение. Селектор сегмента может либо
находиться непосредственно в коде команды, либо в
одном из сегментных регистров. Смещение также может
либо непосредственно находиться в коде команды, либо
вычисляться на основе значений регистров общего
назначения.
Для вычисления линейного адреса процессор
выполняет следующие действия:
анализирует дескриптор сегмента, контролируя права
доступа (сегмент доступен с текущего уровня
привилегий) и предел сегмента (смещение не
превышает предел);
добавляет смещение к базовому адресу сегмента и
получает линейный адрес.
Механизм формирования
адреса
Механизм формирования
адреса



Индекс выбирает один из 8192 дескрипторов в
таблице дескрипторов. Процессор умножает значение
этого индекса на восемь (длину дескриптора) и
добавляет результат к базовому адресу таблицы
дескрипторов. Таким образом получается линейный
адрес требуемого дескриптора.
TI - индикатор таблицы определяет таблицу
дескрипторов, на которую ссылается селектор: TI=0
означает глобальную дескрипторную таблицу (GDT), а
TI=1 - используемую в настоящий момент локальную
дескрипторную таблицу (LDT).
RPL - запрашиваемый уровень привилегий
(Requested Privilege Level). Используется механизмом
защиты.
МП 80386
Поддержка многозадачности в процессорах x86
(начиная с 80286) обозначает аппаратную
поддержку «прозрачного» переключения с одной
обычной программы (задачи) на другую.
При переключении процессор сохраняет свое
состояние (включая адрес следующей команды, и
селекторы сегментов) в сегменте состояния
(TSS; сегмент памяти, с селектором из регистра
TR) одной задачи, после чего восстанавливает
состояние другой задачи из ее сегмента
состояния (селектор сегмента состояния новой
задачи загружается из дескриптора ее сегмента
кода).
МП 80386
Переключение между задачами обычно
осуществляется:
 прерыванием таймера; время, на которое
настроен таймер, называется квантом времени
для задачи
 системным вызовом (вызовом функции
операционной системы)
 исключением — например, при попытке выполнить
недопустимую команду или обращении к
отсутствующей памяти
 отладкой
МП 80386


В i386 механизмы защиты и многозадачности были
значительно расширены и улучшены. В
зависимости от характера нарушений, они могут
тихо игнорироваться (например, некоторые биты
регистра EFLAGS нельзя изменить загрузкой
флагов из стека), вызывать обработчик исключения
(операционной системы).
Серьезные ошибки на уровне операционной
системы (или в реальном режиме) могут привести
процессор в режим аварийного останова из
которого можно выйти только аппаратным сбросом
процессора.
Аппаратный сброс
Аппаратный сброс (hardware reset) выполняется процессором при
включении питания и по сигналу RESET#.
 В микропроцессоре предусмотрены средства проверки
функционирования трех основных программируемых
логических матриц - точки входа, управления и тестирования, а
также содержимого управляющего ПЗУ (CROM).
 Самотестирование запускается, когда в процессе
инициализации становится активным вход BUSY#. Результат
тестирования заносится в регистр ЕАХ. Если соответствующий
элемент процессора успешно проходит тестирование,
содержимое ЕАХ равно нулю. Если в ЕАХ не ноль, это значит,
что самотестирование обнаружило неисправность.
 Для МП 80386 при частоте 16 МГц на самотестирование уходит
около 219 тактов или приблизительно 33 мс.
Аппаратный сброс



После сброса процессор начинает выполнение
инструкции, считанной по физическому адресу
FFFFFFF0.
Обычно по этому адресу расположена команда JMP,
осуществляющая переход на программу начальной
загрузки. Исполняемый программный код должен
обеспечить инициализацию системы.
Из этого следует, что, по крайней мере, на начальный
период времени после сигнала RESET# компьютер
должен иметь адрес BIOS в облсти FFFFFFF0FFFFFFFF
Набор инструкций 80386




Набор инструкций i386 был расширен, в основном, за
счет добавления 32-битных вариантов существующих
инструкций (образованных 32-битными префиксами),
включая те у которых 32-битные варианты имеют другие
мнемоники (pushad/popad, pushfd/popfd, cwd*/cdq,
movsd/cmpsd/scasd/lodsd/insd/outsd, iretd), а также
команды mov для новых регистров. Другие новые
инструкции:
установка байта по условию (set*)
команды переходов (jmp, j*) с относительным 16-битным
смещением
команды загрузки полного адреса для новых сегментных
регистров (lfs, lgs)
Примеры команд 80386
add eax, ebx ; eax += ebx;
add eax, [ebx] ; eax += ebx[0];
inc eax ; eax++;
mov eax, DWORD PTR [ebx] ; Load int
from memory: eax= ebx[0];
mov eax, DWORD PTR [ebx+4] ; Load
next int: eax= ebx[1];
Директивы ассемблера





Программа на ассемблере может содержать директивы:
инструкции, не переводящиеся непосредственно в машинные
команды, а управляющие работой компилятора. Набор и
синтаксис их значительно разнятся и зависят от
используемого транслятора (порождая диалекты языков в
пределах одного семейства архитектур). В качестве общего
набора директив можно выделить следующие:
определение данных (констант и переменных)
управление организацией программы в памяти и
параметрами выходного файла
задание режима работы компилятора
всевозможные абстракции (то есть элементы языков
высокого уровня) — например, оформления процедур и
функций макросы
Hello world для MS-DOS для
архитектуры x86 на диалекте
TASM:
.MODEL TINY
CODE SEGMENT
ASSUME CS:CODE, DS:CODE
ORG 100h
START: mov ah,9
mov dx,OFFSET Msg
int 21h
int 20h
Msg DB 'Hello World',13,10,'$'
CODE ENDS
END START
Отладчик и дизассемблер
Дизассе́мблер — транслятор, преобразующий
машинный код, объектный файл или
библиотечные модули в текст программы на
языке ассемблера.
По режиму работы с пользователем делятся на
 Автоматические
 Интерактивные
Дизассемблеры бывают однопроходные и
многопроходные.
Отладчик и дизассемблер
Основная трудность при работе дизассемблера
— отличить данные от машинного кода,
поэтому на первых проходах автоматически
или интерактивно собирается информация о
границах процедур и функций, а на последнем
проходе формируется итоговый листинг.
Обычно однопроходный дизассемблер (как и
построчный ассемблер) является составной
частью отладчика.
Версии ассемблеров
(Assemblers)

Содержимое диска:
MASM 32 v7.0
Microsoft Macro Assembler v6.1
Borland Turbo Assembler v5.0
Flat Assembler v1.20
NASM for Win 32
NewBasic Assembler v00.24.87
Pass32 - 32 Bit Assembler
SpAsm v3.07d
МП 80486
Разработан фирмой Intel.
Выпускался разными фирмами в модификациях SX, DX2, DX4.
Достоинства МП 80486
 Внутренний кэш первого уровня
 Встроенный математический сопроцессор (версии DX)
 Конвейерная обработка инструкций (команд)
 Усовершенствованный модуль интерфейса шины
 Укороченные циклы памяти
 Использование буферов записи.
Процессор обладал 32-битными шинами адреса и данных. Это
требовало наличия памяти в виде четырёх 30-контактных
модулей SIMM или одного 72-контактного модуля SIMM.
Основные характеристики 80486
Полная программная совместимость с ЦПУ 386 DX, 386 SX,
встроенным 376(TM) и процессорами 80286, 8086 и 8088;
 32-разрядный CPU для выполнения арифметических и
логических операций;
 Встроенный модуль FPU для обработки арифметических
операций с плавающей точкой для поддержки 32, 64, и 80разрядных форматов, заданных в соответствии со
стандартом IEEE 754
 Сигналы управления шиной для поддержки
непротиворечивости кэша;
Кэш МП 80486


Intel486 имел, расположенную на кристалле, кэш память
объёмом 8 КБ, а позднее и 16 КБ, работающую на частоте
ядра. Наличие кэша позволило существенно увеличить
скорость выполнения операций микропроцессором.
Изначально кэш Intel486 работал по принципу сквозной
записи (англ. write-through или WT), но позже, в рамках
семейства Intel486, были выпущены модели с внутренним
кэшем работающим по принципу обратной записи (англ.
write-back или WB).
Процессор мог использовать и внешний кэш, скорость
чтения-записи которого, однако, была заметно ниже чем у
внутреннего кэша. При этом внутренний кэш стали
называть кэшем первого уровня (Level 1 Cache), а внешний
кэш, расположенный на материнской плате, кэшем второго
уровня (Level 2 Cache).
Математический сопроцессор
В Intel486 был использован встроенный
математический сопроцессор (FPU), это был
первый микропроцессор со встроенным FPU.
Встроенный FPU был программно совместим с
микросхемой Intel 80387 – математическим
сопроцессором, применявшимся в системах с
процессором Intel386. Благодаря
использованию встроенного сопроцессора
удешевлялась и ускорялась система за счёт
уменьшения общего числа контактов и
корпусов микросхем.
Математический сопроцессор

Изначально все выпускавшиеся
микропроцессоры Intel486 оснащались
работающим сопроцессором, эти процессоры
получили имя Intel486DX. Позже Intel решает
выпустить процессоры с отключённым
сопроцессором, и эти процессоры получили
наименование Intel486SX. Системы
построенные на этих процессорах могли
оснащаться отдельным сопроцессором,
например, Intel487SX или сопроцессором
других производителей.
Структурная схема МП 80486DX
Упрощенная схема 32-разр х86
Контрольные вопросы





Перечислите РОН МП 80386.
Как изменились сегментные регистры в
80386 МП?
Поясните структурную схему МП 80386.
Перечислите группы команд МП 80386.
Поясните механизм поддержки
многозадачности в 32-разрядных МП.