1.2 Адресация основной памяти
В процессоре 80386 возможны несколько режимов адресации основной памяти (смотри рисунок 1.2). Из них нам наиболее интересен реальный режим, в котором используется сегментная организация памяти
Сегментация – механизм адресации, обеспечивающий существование нескольких независимых адресных пространств как в пределах одной задачи, так и в системе в целом для защиты от взаимного влияния. В основе механизма сегментации лежит понятие сегмента, который представляет собой независимый поддерживаемый на аппаратном уровне блок памяти.
Каждая программа в общем случае может состоять из любого количества сегментов, но непосредственный доступ она имеет только к трем основным сегментам (кода, данных и стека), а также дополнительному сегменту данных. Программа никогда не знает, по каким физическим адресам будут размещены её сегменты. Этим занимается операционная система. Операционная система размещает сегменты программы в оперативной памяти по определенным физическим адресам, после чего помещает значения этих адресов в определенные места. Куда именно, зависит от режима работы процессора. Так, в реальном режиме эти адреса помещаются непосредственно в соответствующие сегментные регистры, а в защищенном режиме они размещаются в элементы специальной дескрипторной таблицы. Внутри сегмента программа обращается к адресам относительно начала сегмента линейно, то есть, начиная с нуля и заканчивая адресом, равным размеру сегмента. Этот относительный адрес, или смещение, который процессор использует для доступа к данным внутри сегмента, называется эффективным.
ПЭВМ 80386 | |||
реальный режим (как 16-ти раз. 8086) | защищенный режим | виртуальный режим (как 8086, но подчиняемый защищенному режиму ) | |
16-ти разрядный (80286) | 32-ух разрядный |
Рисунок 1.2 – Режимы работы процессора 80386.
В режиме реальной адресации микропроцессор реализует сегментную организацию памяти, при которой физический адрес ячейки памяти формируется путем сложения базового адреса сегмента и относительного адреса ячейки внутри сегмента.
Так как микропроцессор оперирует логическими адресами, состоящими из сегмента и смещения, а оперативная память работает с линейными адресами, возникает необходимость преобразования логического адреса в линейный физический. Этой работой занимается СФА. Для получения физического адреса СФА сдвигает 16-ти битный сегмент влево на 4 разряда (тем самым, умножая его на 16) и прибавляет к этому числу 16-ти битное смещение. В результате получается 20-ти битный линейный физический адрес, необходимый для работы с оперативной памятью. На рисунке 1.3 показан пример вычисления 20-ти битного линейного физического адреса.
Таким образом, базовый адрес определяется содержимым 16-разрядного сегментного регистра. 20-разрядный базовый адрес формируется путем сдвига содержимого сегментного регистра на четыре разряда влево, младшие четыре разряда базового адреса заполняются нулями.
Линейный адрес образуется посредством сложения 20-разрядного базового адреса и 16-разрядного относительного адреса. Полученный 20-разрядный линейный адрес выдается процессором на магистраль как физический адрес для выборки соответствующего байта.
ФИЗИЧЕСКИЙ АДРЕС = СЕГМЕНТ*16 + СМЕЩЕНИЕ:
С ЕГМЕНТ = AFD1; |
| |||||||
СМЕЩЕНИЕ = 11EE |
| |||||||
|
|
|
|
|
|
| ||
|
| |||||||
|
|
| A | F | D | 1 | 0 | 0 |
+ |
|
| 1 | 1 | E | E |
| A | F | E | 2 | E | E |
Рисунок 1.3 – Пример формирования физического адреса
- Введение
- 1 Анализ структуры микропроцессора прототипа и алгоритмов выполнения заданного подмножества команд
- 1.1 Структура микропроцессора-прототипа
- 1.2 Адресация основной памяти
- 1.3 Анализ способов адресации операндов и алгоритмов выполнения заданного подмножества команд
- 2 Постановка задач проекта
- 2.1 Требования к структуре и интерфейсу гипотетического микропроцессора
- 2.2 Требования к структуре и интерфейсу алу микропроцессора
- 2.3 Требования к структуре микро эвм
- 3 Разработка алу микропроцессора
- 3.1 Разработка оа для отдельных операций алу
- 3.1.1 Разработка оа для операции сложения add
- 3.1.2 Разработка оа для операции умножения по алгоритму с младших разрядов множителя со сдвигом частичных сумм вправо mul(a)
- 3.1.3 Разработка оа для операции декремента dec
- 3.2 Разработка общего оа алу
- 3.3 Разработка микропрограмм выполнения операций в алу
- 3.3.1 Арифметическая операция сложения add
- 3.3.2 Арифметическая операция беззнакового умножения mul по алгоритму с младших разрядов множителя со сдвигом частичных сумм вправо
- 4.2 Система команд микропроцессора
- 4.2.1 Команда add al,imm8
- 4.2.2 Команда mul r8
- 5.2 Организация шин микро-эвм
- 5.3 Организация озу
- 5.4 Микропрограмма работы микро-эвм
- 6 Разработка программы эмуляции работы микро-эвм
- 6.1 Постановка задачи
- 6.2 Алгоритм работы программы эмуляции
- 6.3 Список процедур и функций
- 6.4 Анализ результатов тестирования программы
- Перечень ссылок
- Приложение а техническое задание на разработку микроэвм
- Приложение б техническое задание на программу-эмулятор
- Приложение в руководство пользователя