Базовая архитектура 32-разрядного микропроцессора Intel
Краткая историческая справка развития микропроцессоров
7.02.13
В 1971 году был разработан 4-битовый микропроцессор фирмы Intel MP4004. 1973 – появился 8-битовый процессор MP8080. Первый рабочий процессор - 1975 - 16-битный Intel 8086.
Командный поток - извлекает из памяти и выполняет команду. Успеху развития способствовало:
1. использование их IBM для создания нового поколения ПК;
2. разработка фирмой Microsoft 16-разрядной ОС – MS-Dos.
Базовая архитектура 32-разрядного микропроцессора Intel
14.02.13
Архитектура процессора включает в себя набор регистров, которые можно разделить на две группы: пользовательские и системные регистры. Пользовательские регистры доступны всем программам независимо от их уровня привилегий. Системные регистры предназначены для организации работы системных модулей и поддержки работы прикладных программ, напрямую пользовательским программам не доступны.
Регистр – минимальный объем памяти, который находится в самом процессоре.
Память делится на несколько уровней.
Пользовательские регистры микропроцессоров:
1. регистры общего назначения;
2. сегментные регистры;
3. указатель команд (адрес смещения);
4. регистр флагов (разряд 0 или 1).
Регистры общего назначения
Регистр аккумулятор – для хранения промежуточных данных. При этом большинство команд использующих этот регистр выполняются быстрее, чем они использовали бы другой регистр. Все команды умножения и деления обязательно должны использовать регистр аккумулятор. Также используется в командах ввода-вывода.
Базовый регистр. Используются в базовой адресации.
Счетчик используется для указания количества повторений в циклических командах.
Регистр данных. Участвует вместе с аккумулятивным регистром в командах умножения деления, ввода-вывода, используется для хранения номера порта, куда осуществляется вывод.
РОНы:
Esp – указатель стека. Предназначен для хранения вершины стека, для текущего сегмента стека. Используется неявно (по ум.) командами работы со стеком: включение/исключение в/из стек, команды вызова процедур и обработки прерывания.
Ebp – указатель базы. Предназначен для удобного доступа к объектам данных, находящихся в стеке при помощи базовой адресации.
Индексные регистры. Si – индекс источника, di – индекс приемника. Используются в командах работы со строками. Si адресует элемент строки источника, di – элемент строки приемника.
Все регистры общего назначения могут использоваться для хранения данных в соответствии с их размерами.
Сегментные регистры.
Служат для организации доступа к сегментам памяти. Для режима реального адреса содержат базовый адрес для защищенного режима, селектор, позволяющий найти этот базовый адрес.
Cs – сегментный регистр предназначенный для идентификации текущего сегмента, который содержит коды, исполняющихся программ.
Ss – сегментный регистр стека. Позволяет идентифицировать текущий сегмент стека.
Ds – используется для идентификации сегмента данных по умолчанию.
Дополнительные сегментные регистры предназначены для идентификации дополнительных сегментов данных.
Указатель команд
Указатель команд содержит адрес смещения команды, которая будет выполняться в след за текущей. Напрямую указатель команд не указывается и не изменяется.
Регистр флагов содержит флаги управления и флаги состояния.
Флаги состояния сообщают об особенностях результатов обработки данных:
1. Cf – флаг переноса. Устанавливается в единицу, если при выполнении операции умножения вычитании произошел перенос или займ. В остальных случаях равен 0.
2. Pf – флаг четности. Устанавливается в 1, если младшие 8 бит результата имеют четное число единичных бит.
3. Af – флаг дополнительного переноса.
4. Zf – флаг нуля. Устанавливается в 1, когда результат = 0, в противном случае 0.
5. Sf – флаг знака. Всегда равен знаковому (старшему) биту результата.
6. Of – флаг переполнения. Устанавливается в 1, если в арифметической операции со знаковыми операндами результат превысил диапазон предоставляемых чисел.
7. Iopl – двубитное поле – уровень привилегии ввода-вывода. Позволяет определить минимальный уровень привилегий задачи, на котором ей разрешается выполнять операции ввода-вывода.
8. Nt – флаг вложенной задачи. Используется в защищенном режиме и устанавливается в единицу, когда в рамках выполнения одной программы вызывается дочерняя задача.
9. Tf – флаг пошагового выполнения команд. Используется в механизме отладки программ.
10. If – флаг прерывания. Всегда равен 1 по умолчанию. Разрешает обработку аппаратных прерываний. Есть специальная команда, которая управляет этим процессом.
11. Df – флаг направления. Задает направление обработки цепочек данных.
12. Rf – флаг возобновления. Используется в механизме отладки для подавления особых случаев отладки по одной и той же команде. Действует в защищенном режиме.
13. Vm – флаг виртуального режима. При 0 в режиме реального адреса, в защищенном режиме, при 1 – превращается в высокопроизводительный мп, использующий только режим реального адреса.
Режимы адресации:
При адресации операндов различают:
1. неявная адресация – операнд адресуется неявно, если в команде нет полей для его определения. В команде операнд отсутствует, но команда оперирует данными.
2. регистровая адресация – операнды находятся во внутренних регистрах мп. Наиболее часто для регистровой адресации используют регистры общего назначения, но не во всех командах можно использовать любые регистры.
mov ax, bx – присвоение значения одного операнда другому (второе первому).
3. непосредственная адресация – операнд находится в самой команде и хранится в сегменте кода. При записи программы непосредственный операнд записывается своим изображением.
Mov ax, 1AFBh
4. адресация ввода-вывода. Существует адресное пространство ввода-вывода размером 64 кбайта (номера портов ввода-вывода) – in, out.
In al, 4oh
In al,dx
Out 20h, al
Out dx, al
Адресация операндов памяти:
1. прямая (абсолютная) адресации. При прямой адресации адрес данных содержится в самой команде. Как правило, задается смещение относительно текущего сегмента данных, при этом значение адреса заключается в квадратные скобки.
Mov al, [1234h]
При данном виде адресации часто используют преобразование типов.
Inc word ptr [1fh]
Байт – 1 байт (db)
Word – слово 2 байта (dw)
Dword – двойное слово 4 байта (dd)
Qword – 8 байт (dq)
Tword – 10 байт (dt)
2 директивы, содержащие адреса.
X db 10
Прямая адресация применяется к ячейкам памяти с фиксированными адресами.
2. косвенная регистровая адресация.
При базовой адресации предполагается, что адрес операндов находится в базовом регистре.
Mov al, [ecx]
Dec dword ptr [dx]
Если при использовании в качестве базового регистра используются bp, ebp то идет обращение к сегменту стека, в остальных случаях к сегменту данных.
Базовая адресация со смещением.
Mov al, [ecx+4] – к значению адреса находящемуся в регистре прибавляется константа, при этом в совокупности получается адрес смещения данных, находящихся в памяти.
Индексная адресация.
Mov ax, array [si]
Суммируется адрес array+ индекс в si. – эффективный адрес
Базовая индексная адресация с масштабированием и смещением.
Mov ax, [bx+2] [si*4]
2[bx]
Системные регистры мп
21.02.13
Предназначены для организации работы ОС по автоматизации работы прикладных программ. Они реализуют возможности защищенного режима, доступны привилегированным командам и программам супервизора и не доступны пользовательским программам. Всего используется 4 группы регистров системного назначения:
1) регистры управления памяти защищенного режима. Предназначены для организации работы памяти. Состоит из 4 регистров:
GDTR – регистр глобальной действительной таблицы.
47 15 0
ЛБА | предел |
Имеет 48 разрядов. Состоит из 2 частей: предел – определяет максимально возможный размер таблицы в байтах (максимально возможное смещение относительно начала таблицы), ЛБА (линейный базовый адрес) определяет верхнюю границу (начало таблицы), т.е. линейный адрес.
IDTR – регистр дескрипторной таблицы прерывания
47 15 0
АБА | предел |
48 разрядов. Регистр предназначен для идентификации дескрипторной таблицы прерывания.
LDTR – регистр локальной дескрипторной таблицы. Предназначен для адресации локальной дескрипторной таблицы для активной на данный момент задачи.
15 0
селектор | ||
Index | TI | RPL1 |
RPL – используется в механизме защиты по привилегиям.
TI – бит индексации таблицы. Определяет в какой таблице находится соответствующий дискриптор.
0- глобальная таблица GDTR.
1 – локальная дескрипторная таблица LDTR.
Index – порядковый номер дескриптора в таблице.
TR – регистр задач. Содержит селектор дескриптора сегмента состояния задачи, которая активна в данный момент.
Регистры управления:
CR0-CR3
ФАКС | РСД | PWT | ||||||||||||||
ЛАСН | ||||||||||||||||
резерв | ||||||||||||||||
PG | CD | NW | AM | WP | NE | ET | TS | EM | MP | PE | ||||||
Все регистры управления доступны привилегированным задачам и только при помощи команды mov.
CR0 содержит системные флаги управления режимами и флаги показа состояния относящиеся ко всему мп. Назначение:
1. PG - страничное преобразование. =1 – разрешено, =0 – запрещено.
2.CD - запрещение кэш-памяти. При=1 – запрещено
3. NW - бит не сквозной записи. При =0 разрешает сквозную запись в памяти.
4. AM – маска выравнивания. При =1 разрешается контроль выравнивания данных.
5. WP – защита от записи. При =1 защищает от записи страницы уровня пользователя от обращения супервизора.
6. NE – численная ошибка. При установке в единицу разрешается стандартный механизм обработки численных механизмов.
7. ET – тип расширения. При =1 осуществляет поддержку устаревших команд математического сопроцессора.
8. TS – задача переключена. При каждом переключении устанавливается в единицу. Сбрасывается специальная команда CLTS.
9. EM – эмуляция. При =1 указывает на эмуляцию команд математического сопроцессора.
10. MP – указывает на присутствие математического сопроцессора. Всегда на 1.
11. PE – включить защиту. При =1 разрешено использование защищенного режима.
ЛАСН – линейный адрес последнего страничного нарушения используется механизмом отладки.
Последний. Важен для страничного преобразования адреса. ФАКС (физический адрес каталога страниц). РСД – запрещение кэширования страниц. PWT – бит не сквозной записи строения.
Также есть в системных регистрах системы отладки DR0-DR7 и регистры проверки TR0-TR7 предназначены для проверки работы кэш-памяти.
Дата добавления: 2017-01-13; просмотров: 1036;