Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КП_2007.doc
Скачиваний:
3
Добавлен:
16.09.2019
Размер:
1.02 Mб
Скачать

2 Анализ структуры микропроцессора прототипа и алгоритмов выполнения заданного подмножества команд

2.1 Структура микропроцессора-прототипа

Микропроцессор 80836 имеет интегрированное управление памятью и архитектуру защиты, которые включают регистры трансляции адреса, аппаратные средства многозадачности и механизм защиты для поддержки ряда операционных систем. Управление памятью и механизмы защиты транслируют логические адреса в физические и инициируют защиту, необходимую для поддержки целостности задач в многозадачной среде.

В своей основе МП 80386 состоит из шести блоков, работающих параллельно: блок интерфейса с магистралью (BIU), блок предварительной выборки команд, блок декодирования команд, исполнительный блок (EU), блок управления сегментами и блок разбиения на страницы (рис. 1.1).

Рисунок 1.1 – Шесть основных блоков МП 80386

Интерфейс представляет собой физическое или логическое средство, которое соединяет смежные компоненты, схемы, оборудование или системные элементы. Блок BIU обеспечивает интерфейс между МП 80386 и его окружением. Он принимает внутренние запросы для выборки команд от блока предварительной выборки команд и для обмена данными от блока EU и устанавливает приоритет этих запросов. Одновременно он генерирует или обрабатывает сигналы для исполнения текущего цикла магистрали. К ним относятся сигналы адреса, данных и управления для обращения к внешней памяти и устройствам ввода-вывода. Блок BIU управляет также интерфейсом с внешними задатчиками магистрали и сопроцессорами.

Для того чтобы заранее получить команды или данные перед их фактическим использованием, существует функция опережающего просмотра программы, которую в МП 80386 выполняет блок предвыборки команд. Когда блок BIU не занимает цикла магистрали для исполнения команды, блок предвыборки команд использует его для последовательной выборки из памяти байтов команд. Эти команды хранятся в 16-байтовой очереди команд в ожидании обработки блоком декодирования команд.

Блок декодирования команд преобразует байты команд из очереди в микрокод. Декодированные команды в ожидании обработки блоком EU хранятся в очереди команд глубиной в три команды, работающей по принципу FIFO. Непосредственные данные и относительные адреса в коде операции также берутся из очереди команд.

Блок EU выполняет команды из очереди команд и взаимодействует со всеми другими блоками, требуемыми для завершения выполнения команд. Для ускорения выполнения команд с обращением к памяти блок EU приступает к их выполнению до завершения выполнения предыдущей команды. Так как команды с обращением к памяти встречаются часто, то благодаря такому перекрытию по времени производительность повышается примерно на девять процентов.

Регистры общего назначения (РОН) встроенного типа используются для таких операций, как двоичное сложение или вычисление и модификация адресов. Они все чаще используются вместо специализированных регистров-аккумуляторов. Блок EU содержит восемь 32-разрядных РОНов, применяемых как для вычисления адресов, так и для операций с данными. Этот блок содержит также 64-разрядный регистр, применяемый для ускорения операций сдвига, циклического сдвига, умножения и деления.

Блок управления сегментами преобразует логические адреса в линейные по запросу блока EU. Для ускорения этого преобразования текущие дескрипторы сегментов помещаются во встроенную кэш-память. Во время трансляции адресов блок управления сегментами проверяет, нет ли нарушения сегментации. Эти проверки выполняются отдельно от проверок нарушений статистической сегментации, осуществляемых блоком проверки защиты. Оттранслированный линейный адрес направляется в блок разбиения на страницы.

Если механизм разбиения на страницы включен, соответствующий блок транслирует линейные адреса в физические. Если же механизм выключен, то это означает, что физический адрес совпадает с линейным и трансляция не нужна. Для ускорения трансляции адресов в кэш-память дескрипторов страниц помещаются каталог недавно использованных страниц, а также информацию о входах в таблицу страниц в буфере трансляции адресов. Затем блок разбиения на страницы пересылает физические адреса в блок BIU для выполнения цикла обращения к памяти или устройствам ввода-вывода.

Микропроцессор 80386 использует 32-разрядные регистры и шины данных для поддержки адресов и типов данных такой же разрядности. Благодаря этому доступ к 32-разрядной памяти может быть завершен всего лишь за два такта генератора, т.е. возможен обмен информацией по магистрали со скоростью до 35 Мбайт/с при частоте тактового генератора 16 МГц. Процессор адресует до 4 Гбайт физической памяти и до 64 Тбайт виртуальной памяти.

2.2 Адресация основной памяти

Обращение к памяти может делаться для выбора данных или команд. Команды, производящие обращение к данным содержат информацию, которая точно определяет метод доступа к данным. Режим адресации - это метод, используемый для доступа к памяти, а эффективный адрес - это адрес ячейки памяти. Режимы адресации могут также определять регистр 80386 как место размещения операнда. Команды могут задавать операнд в одном из трех случаев:

Неявно. Определенная команда всегда требует наличия некоторого метода адресации для операндов, находящихся в памяти или регистре. Например, команда PUSH всегда использует указатель стека для адресации.

Точно определен регистр. Команда использует код для обращения к определенному регистру в 80386, например, команда ADO AX, DX. При помощи метода адресации. Команда использует код для вычисления эффективного адреса памяти.

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

Режимы адресации 80386 позволяют точно определить какие компоненты используются в вычислении адреса. Из возможных компонентов (базы, смещения и индекс масштабирования), любой поднабор или любой компонент может быть использован при вычислении эффективного адреса. Выбранный режим адресации определяет используемые компоненты.

80386 поддерживает 32-х разрядные и 16-ти разрядные операции, и следовательно, обеспечиваются два набора режимов адресации. 32-х разрядные режимы адресации, т.е. режимы по умолчанию и используемые при 32-х разрядной операции, все вычисляют 32-х разрядный эффективный адрес. 16-ти разрядные режимы адресации, режимы по умолчанию для 16-ти разрядной операции, вычисляют 16-ти разрядный эффективный адрес. 16-ти разрядные режимы адресации полностью совместимы с 8086; 32-х разрядные режимы адресации являются супер набором, дающим высокую надежность и оптимальное масштабирование компоненты индекса.

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

Физическая память организована в виде последовательности 8-разрядных байтов. Каждому байту присвоен уникальный адрес, который может изменяться от 0 до 232 – 1, или 4 Гбайт. Процессор 80386 имеет три различных адресных пространства: физическое, логическое и линейное.

Физический адрес – это реальные адреса, используемые для выбора микросхем физической памяти, содержащих данные. Логический адрес состоит из селектора сегмента и относительного адреса внутри сегмента. Линейный адрес – это адрес, сформированный добавлением относительного адреса к базовому адресу сегмента. С точки зрения программы в модели сегментированной памяти пространство логических адресов является наибольшим и может содержать до 246байт, или 64 Тбайт. С помощью механизма трансляции адресов МП 80386 отображает логическое пространство в физическое.

Процессор 80386 преобразует логические адреса в физические в два этапа: сначала он выполняет трансляцию сегмента, преобразуя логический адрес, состоящий из селектора сегмента и относительного адреса, в линейный, а затем – трансляцию страниц, преобразуя линейный адрес в физический. Второй этап не обязателен и зависит от того, как была спроектирована система.

Механизм управления памятью полностью аппаратный. Это означает, что программа не может сама сформировать физический адрес памяти на адресной шине. Микропроцессор аппаратно поддерживает две модели использования оперативной памяти: сегментированную модель и страничную модель. Особенности использования и реализации этих моделей зависит от режима работы микропроцессора.

При подаче сигнала сброса или при включении питания устанавливается реальный режим, причем МП 80386 работает как очень быстрый МП 8086, но, по желанию программиста, с 32-разрядным расширением. В реальном режиме МП 80386 имеет такую же базовую архитектуру, что и МП 8086, но обеспечивает доступ к 32-разрядным регистрам. Механизм адресации, размеры памяти и обработка прерываний МП 8086 полностью совпадают с аналогичными функциями МП 80386 в реальном режиме.

Единственным способом выхода из реального режима является явное переключение в защищенный режим. В защищенный режим МП 80386 входит при установке бита включения защиты (РЕ) в нулевом регистре управления (CR0) с помощью команды пересылки (MOV to CR0). Для совместимости с МП 80286 с целью установки бита РЕ может быть также использована команда загрузки слова состояния машины LMSW. Процессор повторно входит в реальный режим в том случае, если программа командой пересылки сбрасывает бит РЕ регистра CR0.

2.3 Анализ способов адресации операндов и алгоритмов выполнения заданного подмножества команд.

2.3.1 Неявная адресация

Операнд адресуется неявно, если в команде нет специальных полей для его определения, т.е. операнд задается кодом операции. В ассемблерных командах с неявной ад­ресацией поле операнда пустое.

Примеры команд с неявной ад­ресацией:

ааа ;Скорректировать регистр AL после сложения

стс ;Инвертировать флажок переноса

2.3.2 Регистровая адресация

Операнд находится во внутреннем регистре процессо­ра. Регистровые операнды в ассемблерных командах указываются именами регистров в поле операнда. Привлекаемые в командах регистры определяются полями reg и mod r/m (при mod = 11). В сокращенных формах команд регист­ры могут указываться в поле кода операции; особенно это отно­сится к регистрам-аккумуляторам EAX/AX/AL.

Примеры команд с регистровой адресацией:

add al,dl ;Прибавить к AL содержимое регистра DL

movsx eax,dh ;Переслать со знаковым расширение

2.3.3 Непосредственная адресация

Операнд находится в самой команде, т.е. хранится вместе с командой в сег­менте кода. Изменить непосредственный операнд не­возможно, им может быть только константа как операнд-источник. Допускаются непосредственные операнды длиной 8, 16 и 32 бита; они всегда находятся в конце команды. Использование непосред­ственных операндов обычно определяется неявно, а байт mod r/m задает получатель.

Примеры команд с непосредственной адресацией:

and al,0fh ;Выделить младшую тетраду регистра AL

bt edi,3 ;Передать в CF бит 3 регистра EDI

2.3.4 Прямая адресация

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

Примеры команд с прямой адресацией:

mov al,[2000h]

shl word ptr [lfh]

inc dword ptr [123456h]

;Передать байт в регистр AL

;Сдвинуть слово на 5 бит влево

;Инкремент двойного слова в памяти

Во второй и третьей командах применяется спе­цификатор длины операнда, так как без него невозможно опреде­лить, с какими данными должна работать команда.

2.3.5 Базовая адресация

Эффективный адрес операнда находится в любом регистре общего назначения процессора кроме регистра ESP. Режим относится к косвенной регистровой адресации. При использовании в качестве базового регистра ЕВР эффективный адрес считается смещением в текущем сегменте стека и начальный адрес сегмента определяется регистром SS. Использование регистра для адресации указывается заключением его имени в квадратные скобки.

Примеры команд с базовой адресацией:

mov al,[ecx]

dec word ptr [esi]

xchg ebx,[ebx]

;Передать в AL байт по адресу из ЕСХ

;Декремент слова по адресу из ESI

;Обмен регистра ЕВХ и двойного слова ;по адресу из ЕВХ

2.3.6 Базовая адресация со смещением

Пред­назначен для обращения к соседним ячейкам памяти относительно эффективного адреса в базовом регистре. Очень удобен для дос­тупа к элементам структур данных и переменным, находящимся в стеке. Смещения считаются целыми двоичными числами со зна­ком. Их длина может составлять 8, 16 и 32 бита.

Примеры команд с этим режимом адресации:

mov eax,[esi+4] ;Передать двойное слово из памяти add [ecx+10h],dx ;Прибавить к слову в памяти

2.3.7 Индексная адресация со смещением

Индексирование реализует­ся, как и базовая адресация, посредством использования содержи­мого регистра общего назначения в качестве компоненты эффек­тивного адреса. Индексным регистром может быть любой регистр общего назначения кроме ESP. Индексная адресация наиболее удобна при работе с массивами: прямой адрес определяет начало массива, а индекс — текущий элемент массива

Пример команд с этим режимом адресации:

mov eax,v[ecx*4] ;взять текущий элемент в ЕАХ

2.3.8 Базовая индексная адресация со смещением

Наиболее слож­ный режим адресации. Применяется для дос­тупа к структурам данных в стеке и к массивам, базовые адреса находятся в регистре. Значение индекса разрешается масшта­бировать.

Примеры команд с данным режимом адресации:

mov eax,[ebp+8][esi] ;Массив в стеке, начиная с ЕВР+8

inc word ptr [ebx-10h][eax*2] ;Инкремент слова

inc word ptr [ecx][ebp] ;EBP - база, сегмент стека SS mov ax,array[ebp] ;EBP - база, сегмент стека SS

mov eax,[ecx][ebp*4] ;ECX - база, сегмент данных DS