Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Л3 Организация и работа процессоров IBM PC

.pdf
Скачиваний:
14
Добавлен:
29.03.2015
Размер:
418.23 Кб
Скачать

ЭВМ и ПУ

. Лекции 3.

Щемелева Т.К.

ЛЕКЦИЯ 3. ОРГАНИЗАЦИЯ И РЕЖИМЫ РАБОТЫ ПРОЦЕССОРОВ IBM

PC.

Новые понятия: реальный режим; защищенный режим; физический адрес; логический адрес; адрес сегмента; адрес смещения (указатель);

полный указатель; сегмент стека, сегмент данных, сегмент дополнительных данных, сегмент кода; физическая память; виртуальная память; дескриптор; селектор.

Основные вопросы:. 1.Режимы работы процессоров Intel. 2. Сегментная

организация памяти реального режима. 3. Регистровая структура процессора реального режима. 3.Формирование физического адреса в реальном режиме. 3.Особенности организации защищенного режима.

3.1. Режимы работы процессоров Intel.

Все процессоры (МП) фирмы Intel., начиная 80286, имеют два существенно отличающихся режима работы, между которыми программным путем обеспечивается достаточно быстрое переключение:

1)Real Mode – реальный режим. В этом режиме возможна адресация до 1 Мб физической памяти. Режим Real Mode поддерживается ОС MS DOS.

2)Protected Mode – защищенный режим. В этом режиме процессор позволяет адресовать до 4 Гб физической памяти и до 16 Тб виртуальной памяти для

каждой запущенной

на выполнение задачи. Режим Protected

Mode

поддерживается ОС WINDOWS.

 

Оба режима основаны на

представлении памяти для программиста

в виде

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

Но физическая память имеет линейную организацию.

3.2. Сегментная организация памяти реального режима

Каждая программа по назначению определяет не более 4-х типов сегментов:

сегмент стека, сегмент данных, сегмент дополнительных данных, сегмент кода.

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

-Сегмент данных и сегмент дополнительных данных хранят операнды и результаты в виде текстовых и числовых констант. В них также резервируется место под будущие результаты.

-Сегмент кода хранит оттранслированные команды МП.

1

ЭВМ и ПУ

. Лекции 3.

Щемелева Т.К.

Число сегментов каждого типа, кроме сегмента стека, в программе любое. По умолчанию размер сегмента не менее 16 Кб.

Полное название режима – режим реальной адресации, т.к. физический адрес ячейки (А физ), выставляемый из МП на ША, равен линейному, т.е. реальному номеру ячейки по порядку. Однако, - А физ формируется как сумма двух логических составляющих (об этом - ниже);

-адресное пространство (АП) ОЗУ и ПЗУ делится на сегменты по 64 Кб, сегменты памяти могут перекрываться;

-максимальное значение физического адреса равно 0FFFFFh, т.е. 1MbВ;

-одновременно в памяти могут храниться сегменты только одной исполняемой программы;

- т.к. режим поддерживается ОС MS-DOS, то схема распределения АП памяти определена и фиксирована ОС MS-DOS.

Загрузка программы в ОЗУ в реальном режиме показан на рис. 3.1. Сначала загружаются по порядку полностью все сегменты исполняемой программы, затем программа исполняется.

ВЗУ

ОЗУ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сегм 0

 

 

 

сегм 1

Программа 1

сегм 0

 

сегм 2

 

сегм 1

 

 

 

 

 

сегм 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 3.1. – Механизм загрузки сегментов памяти в реальном режиме.

Каждое машинное слово адресуется в пределах своего сегмента, т.е. имеет свой адрес относительно начала сегмента. Поэтому адрес машинного слова в сегменте называется адресом смещения (эффективным адресом - ЕА) или

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

Адрес сегмента и адрес смещения составляют логический адрес или полный указатель.

Карта памяти произвольного сегмента представлена на рис. 3.2. Для изображенного сегмента заливкой серого цвета выделен элемент (байт) с адресом смещения равным 3.

7………….0 бит

2

ЭВМ и ПУ

. Лекции 3.

 

 

Щемелева Т.К.

 

 

 

 

 

 

Адрес сегмента

 

 

 

0

 

 

 

 

 

 

 

 

1

 

 

 

Адрес смещения

2

 

Сегмент

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 3.2. – Размещение байта с адресом смещения 3 в сегменте памяти

Физическая (реальная) память остается линейной, т.е. каждая ячейка имеет свой уникальный номер (адрес) в пределах всего адресного пространства памяти, причем каждый последующий адрес отличается от предыдущего на единицу. Отметим, что во всех моделях IBМ PC минимальным адресуемым машинным словом является байт, но передаваться по ШД может и не один байт, например, для МП Pentium – 8 байт. Адресом машинного слова любой разрядности является адрес его младшего байта. Диапазон значений физических адресов (АП) зависит

от разрядности ША МП. Для i80486

и Pentium ША 32-х разрядная и позволяет

адресовать до 4 Гб.

 

МП формирует физический

адрес ячейки памяти из 2-х логических

составляющих и выставляет его как номер ячейки на ША. Адрес сегмента

представляет собой 16-ти битовое значение и является содержимым одного из

сегментных регистров.

Адрес смещения (эффективный адрес)

может быть

константой или чаще

содержимым регистра РОН или других

16-разрядных

регистров. Таким образом, физический адрес операнда или команды формируется суммированием начального адреса соответствующего сегмента (содержимого сегментного регистра, сдвинутого на четыре разряда влево, т.е. дополненного нулями в четырех младших разрядах) и адреса смещения, называемого эффективным адресом. Адрес смещения вычисляется в МП на основе содержащейся в команде информации о способе формирования адреса операнда. Формирования физического адреса показано на рис. 3.3.

15

 

 

0 бит

 

 

Рг (Эффективный адрес)

 

 

19

 

 

 

 

 

 

 

4

0

 

 

 

 

 

 

 

Рг сегментный (Сегментный адрес)

 

Сумматор

19

0

Рг Адреса (Исполнительный (физический) адрес)

Рисунок 3.3.- Формирование физического адреса в МП

3

ЭВМ и ПУ . Лекции 3. Щемелева Т.К.

3.3. Регистровая структура процессора реального режима

В целом регистровая архитектура базового МП представлена программистской моделью МП на рис. 3.3.

Рисунок 3.3. - Регистровая архитектура базового МП

По назначению выделяют следующие группы регистров, в т.ч., поддерживающих сегментную организацию памяти:

-регистры общего назначения (сокращенно - РОН). Всего 4 регистров с именами AX,BX,CX,DX;

-указательные и индексные регистры SI,DI,BP,SP;

-указатель команд – IP;

-сегментные регистры – CS,DS,SS,ES;

-регистр флагов – FLAGS.

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

1) Сегментные регистры:

Регистр CS. Регистр сегмента кода содержит адрес сегмента кода текущей программы. Для обычных программ не нужно делать ссылки на регистр CS.

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

Регистр SS. Регистр сегмента стека содержит начальный адрес сегмента стека.

Регистр ES. Регистр сегмента дополнительных данных содержит адрес сегмента дополнительных данных.

2) Регистры общего назначения:

4

ЭВМ и ПУ

. Лекции 3.

Щемелева Т.К.

Регистр AX. Регистр AX является основным, применяется во многих

арифметических

операциях

и во всех операциях ввода-вывода. Например,

команды умножения, деления и сдвига обязательно используют регистр AX. Регистр BX. Регистр BX называется базовым регистром. Это единственный

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

Регистр CX. Используется для управления числом повторений циклов в командах организации циклов, как счетчик циклов в операциях сдвига кода операнда влево или вправо. Кроме того, регистр CX, как и регистры AX и BX, применяется в арифметических операциях.

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

Все регистры общего назначения могут использоваться как 8-ми, так и 16разрядные для хранения операндов и результатов операций. Имена регистров этой группы как 8-ми, так и 16-разрядных приведены на рис.3.3.

2) Регистровые указатели

Регистры SP и BP обеспечивают доступ к данным в сегменте стека. Регистр SP - указатель стека. Обеспечивает использование стека в памяти,

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

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

3) Индексные регистры

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

5) Указатель команд

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

6)Регистр флагов:

Врегистре используются 9 из 16 битов. Каждый из 9 флагов отражает одно из текущих состояний ЭВМ или один из признаков результата выполненной в МП операции. Флаг может принимать истинное (1) или ложное (0) значение.

5

ЭВМ и ПУ

. Лекции 3.

Щемелева Т.К.

Арифметические и логические команды изменяют состояние большинство флагов.

Флаги процессора:

O(Переполнение) - Указывает на переполнение старшего бита при арифметических командах.

D(Направление) - Обозначает левое или правое направление пересылки или сравнения строковых данных (данных в памяти превышающих длину одного слова).

I(Прерывание) - Указывает на возможность внешних прерываний (1-да, 0-нет).

T(Пошаговый режим) - Обеспечивает возможность работы процессора в пошаговом режиме.

S(Знак) - Содержит знак результата арифметической операции (0 - плюс,1 - минус).

Z(Ноль) - Показывает результат арифметической операции или операции сравнения (0 - ненулевой, 1 - нулевой результат).

A(Внутренний перенос) - Содержит перенос из 3-го бита для 8-битных данных, используется для специальных арифметических операций (1 - был произведен перенос из разряда 3 в 4 разряд и 0 - нет).

P(Контроль четности) - Показывает четность числа единиц в младшем 8- битовом коде (1 - четное и 0 - нечетное число).

C(Перенос) - Содержит перенос из старшего бита после арифметических операций, и последний бит при сдвигах (1 - был перенос и 0 – не было).

При программировании на ассемблере наиболее часто используются флаги O, S, Z, и C для арифметических операций и операций сравнения, а флаг D для обозначения направления в операциях над строками. Каждый флаг – это один из разрядов данного регистра (некоторые разряды регистров не заняты). Содержимое регистра флагов приведено на рис. 3.3. Расположение флагов в регистре запоминать его не нужно, т.к. программист оперирует именами флагов.

15

0

Flags

 

 

 

 

O

D

IF

TF

SF

ZF

 

A

 

PF

 

CF

Рисунок 3.3. – Регистр флагов МП

3.4. Особенности организации защищенного режима

3.4.1.Общие возможности

Защищенный режим работы - это режим виртуальной (не настоящей, кажущейся пользователю) адресации. Этот режим позволяет полностью реализовать операционной системе все возможности, заложенные в МП:

-сегментную и страничную организацию памяти (страница - блок памяти,

имеющий фиксированный размер 4кб);

-защиту сегмента в зависимости от присвоенного уровня привилегии и др. атрибутов;

6

ЭВМ и ПУ

. Лекции 3.

Щемелева Т.К.

-мультизадачность – одновременное исполнение нескольких задач.

-виртуальную память, основанную на использовании виртуального адресного

пространства, значительного большего, чем реально существующая физическая память;

Программист работает не с реальными адресами ОЗУ , а с виртуальными адресами информации, размещенной на ВЗУ, обычно дисковой памяти. Поэтому программа может иметь размер, значительно превышающий размер физической памяти ОЗУ. Если ОЗУ полностью загружено, то данные и программы, не поместившиеся в память, остаются на ВЗУ и программа-менеджер виртуальной памяти ОС по мере необходимости освобождает некоторые сегменты и страницы ОЗУ и подкачивает туда новую информацию (блоки программы и данных). Этот механизм и называется виртуальной памятью. Таким образом, в отличие от реального режима в защищенном режиме программа может исполняться при загрузки в ОЗУ отдельных ее сегментов, необязательно всего исполняемого файла.

Все современные многозадачные ОС используют защищенный режим МП..

3.4.2. Дескриптор и селектор сегмента.

Архитектура режима основана на применении специального 64-х битового описателя каждого сегмента – дескриптор (далее - Д).

При адресации памяти МП использует Д для следующих целей:

1)определить разрешено ли обращение к данному сегменту,

2)вычислить адрес ячейки памяти,

3)проверить, находится ли этот адрес в пределах выбранного сегмента. Дескриптор сегмента содержит 3 основных поля:

базовый адрес (адрес базы) сегмента - указывает на местоположение сегмента в физической памяти - адрес 1-го байта.;

предел сегмента - адрес последнего байта сегмента, и этот адрес на единицу меньше размера сегмента.;

поле атрибутов - прав доступа к сегменту, содержит много различных признаков сегмента, в т. ч.

o бит Р – бит присутствия сегмента в ОЗУ: если сегмент в ОЗУ, то Р=1. o бит А – устанавливается в «1» при каждом обращении к сегменту. ОС

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

Дескрипторы хранятся в памяти в виде массивов, которые сформированы в

виде таблиц. Имеется три типа таблиц дескрипторов (ДТ). Каждая ДТ хранится в отдельном сегменте и также имеет свой Д.:

локальная ДТ (LDT) - содержит дескрипторы сегментов программ

одной задачи.

7

ЭВМ и ПУ

. Лекции 3.

Щемелева Т.К.

глобальная ДТ (GDT) - содержит дескрипторы, которые могут использоваться при выполнении различных задач, обычно в ней находятся описания сегментов ОС;

–ДТ прерываний (IDT) – содержит похожие на дескрипторы

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

Итак, в защищенном режиме любое обращение к сегменту ОЗУ начинается с обращения в ДТ для чтения Д сегмента, т.к. в нем содержатся все параметры сегмента, необходимые ОС для защиты сегмента от несанкционированного доступа как со стороны другой задачи, так и в пределах текущей задачи. Обращение к Д в таблице осуществляется с помощью селектора - адреса сегмента на дисковой памяти.

Механизмы сегментной адресации в защищенном и реальном режиме весьма отличаются. На рис.3.7 показаны эти отличия.

В современных моделях МП для ПЭВМ класса IBM PC существуют сложные взаимосвязи между запоминающими устройствами и МП, которые здесь опущены. Эти взаимосвязи прозрачны для прикладного программиста, он их знание необходимо для разработчика ЭВМ и системного программиста. Поэтому

 

 

Реальный режим

 

 

 

 

 

 

 

 

Защищенный режим

 

 

 

7

0

 

 

 

 

 

 

 

 

 

 

 

15

0

 

 

 

 

15

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица

 

 

 

 

 

Сегмент

 

 

DS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Д

дескрипт.

Рг. смещ

 

 

данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Д

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А базы

 

 

 

 

15

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВX или

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DI,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

32

Рг. смещ

0

 

 

 

Сегмент

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

EBX

Рисунок 3.7. – Адресация сегмента в двух режимах МП

более детально эволюция МП

фирмы Intel, в т.ч., МП класса Pentium,

рассматривается после изложения

лекций по организации памяти ЭВМ.

Литература.

1.Максимов Н. В., Партыка Т. Л., Попов И. И. Архитектура ЭВМ и вычислительных систем. – М.: Форум : Инфра-М, 2003. – 512 с., Гл.3.

8

ЭВМ и ПУ

. Лекции 3.

Щемелева Т.К.

Контрольные вопросы и задания:

1)Какими параметрами характеризуется сегмент в реальном режиме и какими – в защищенном.

2)В каком режиме МП исполняемая программа может иметь размер значительно больший, чем ОЗУ ЭВМ.

3)Какой из регистров указывает на сегмент, содержащий данные для текущей (исполняемой) программы: 1)CS 2)ES 3)IP 6)F 7)DS 8)BH

4)Какой из регистров указывает на смещение в сегменте кода программы:

1)IP 2)SР и ВР 3)АХ 4)BX, SI, DI

5)Какие из регистров могут указывать на смещение в сегменте стека: 1)IР 2)SР и ВР 3)АХ 4)BX, SI, DI

6)Что такое «полный указатель».

7)Из каких компонентов состоит адрес ЛЮБОЙ ячейки памяти:

8)Адреса сегмента данных и адреса текущего элемента данных;

9)Адреса сегмента и адреса смещения;

10)Адреса сегмента кода и адреса сегмента данных;

11)Каков может быть размер сегмента для 16-разрядного МП:

12)Вычислить физический адрес ячейки в реальном режиме и представить его в b – и h -кодах, если адрес сегмента =005Аh, а адрес смещения в сегменте = 0025h.

13)Приведите пример результата (в b-коде и формате байта) некоторой

операции, выполненной в АЛУ, если известно, что флаг Р = 1.

14) Приведите

значение флага Z в b-коде некоторой операции,

выполненной

в АЛУ, если известно, что результат этой операции в b-

коде равен 00011100.

15)С помощью какого параметра система в защищенном режиме определяет, находится ли нужный сегмент в ОЗУ.

16)Как с помощью дескриптора система может защищать сегмент.

17)Чему соответствует селектор в реальном режиме.

9