- •Введение
- •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 Анализ результатов тестирования программы
- •Перечень ссылок
- •Приложение а техническое задание на разработку микроэвм
- •Приложение б техническое задание на программу-эмулятор
- •Приложение в руководство пользователя
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 – Пример формирования физического адреса