Процессор Intel
Лекция, 23 Октября 2011, автор: пользователь скрыл имя
Краткое описание
Высокопроизводительный 32-х разрядный микропроцессор 80i86 ориентирован на эффективное выполнение программ в среде многозадачных ОС (типа Windows). Микропроцессор имеет 32-разрядные регистры и 32-х разрядные раздельные шины адреса и данных.
Содержимое работы - 1 файл
Архитектура ЭВМ.doc
— 1.20 Мб (Скачать файл)
Информация, хранящаяся в каждой ячейке БУП, представляется пятью полями:
- Однобитовое поле “Вход занят” (ВЗ). Единичное значение этого поля говорит о том, что ячейка занята и недоступна для новых записей.
- В поле RGr содержится номер логического регистра АРФ, для временной замены которого используется данная ячейка БУП. Это поле называется “Номер переименованного регистра”.
- В поле “Значение” хранится текущее содержимое регистра, номер которого указан в поле RGr.
- Однобитовое поле “Значение достоверно” (ЗD). Единичное значение этого поля подтверждает достоверность операнда, который находится в поле “Значение”. Если ЗD=0, то операнд еще не вычислен.
- Однобитовое поле “Последнее переименование” (ПП). Если в БУП несколько ячеек в поле RGr имеют один и тот же номер, т.е. ссылаются на один и тот же регистр в АРФ, то ПП=1 только у той ячейки, где находится последняя ссылка на данный регистр. Поле ПП введено из-за того, что регистры могут переименовываться многократно и необходимо знать, где находится последнее значение операнда.
Переупорядочивание команд
Порядок выдачи команд на исполнение может отличаться от порядка, Предписанного программой. Поэтому необходимо обеспечить команды корректными операндами и правильную последовательность занесения результатов в регистры АРФ. Частично это решается за счет переименования регистров, а также путем переупорядочивания команд.
В основе переупорядочивания команд лежит использование окна команд, т.е. буферной памяти, куда помещаются все команды, прошедшие декодирование. Окно команд обеспечивает отсрочку передачи команд на исполнение до момента готовности операндов, а также нужную очередность завершения команд и загрузки их результатов в регистры АРФ. Окно команд может быть двух видов: централизованное и распределенное.
Централизованное окно команд реализуется в виде табло (scoreboard). Табло представляет собой буферное запоминающее устройство, в котором хранится несколько последних извлеченных из памяти и декодированных команд, а также информация, необходимая для исполнения этих команд. Функциями табло является выявление команд, для исполнения которых уже доступны все необходимые операнды и ресурсы, и выдача таких команд на исполнение в соответствующие функциональные блоки. Табло можно рассматривать как систему предварительной диспетчеризации команд, наделенную функциями контроля выполнения команд.
Все извлеченные из памяти команды после их декодирования и переименования регистров записываются в табло, с соблюдением порядка их следования в программе. Физически табло реализуется на основе ассоциативной памяти, в которой каждая команда занимает одну ячейку, состоящую из следующих полей:
- поля операции, в которое записан дешифрированный код операции;
- двух полей операндов, где размещаются сами операнды, если они уже известны, либо адреса регистров и ячеек памяти, откуда эти операнды могут быть прочитаны;
- поля результата, где размещается адрес (номер) регистра или ячейки памяти, куда должен быть записан результат выполнения данной команды;
- поля битов достоверности (ЗD);
- поля доступности функциональных блоков.
Табло работает совместно с буфером переименования (БУП). Каждая команда программы после декодирования и переименования регистров записывается в свободную ячейку табло. Дешифрированный код операции команды помещается в поле операции. Если результат выполнения команды должен быть записан в регистр, то в поле результата табло записывается номер ячейки БУП, в которой находится последняя ссылка на данный регистр. После этого заполняются остальные поля табло. Процессор производит поиск операндов сначала в аппаратном регистровом файле (АРФ). Если бит достоверности (ЗD) регистра операнда в АРФ установлен в 0, то это значит, что операнда нет в АРФ, и его следует искать в БУП. Для нахождения операнда в БУП, выполняется операции ассоциативного поиска ячейки БУП, которая в поле RGr содержит номер искомого логического регистра. Если такая ячейка найдена в БУП, то проверяются значения битов достоверности ЗD и последнего переименования ПП. При единичном значении этих битов, т.е. при ЗD=ПП=1, требуемое значение операнда выбирается из буфера переименования БУП и записывается в поле операнда табло. Поле достоверности ЗD, соответствующее найденному операнду в табло при этом устанавливается в единицу.
Если
значение искомого операнда
Команда
выбирается из табло и передается
на исполнение после того, как будут заполнены
поля операндов команды в табло,
а необходимый для исполнения команды
функциональный блок ФБ свободен.
После того, как команда выполнена в
ФБ, ее результат записывается в ту ячейку
БУП, на которую указывает поле результата
табло. Одновременно, полученный результат
записывается в поле операнда тех
команд табло, которые в поле операнда
содержат ссылку на ячейку БУП, в которую
только что был записан результат выполнения
команды. При записи полученного результата
в табло значение бита достоверности
ЗD, соответствующего записанному результату,
устанавливается в единицу. После этого
выполненная команда удаляется из табло,
уступая место новой команде программы.
Удаление команды из табло является основанием
для перезаписи полученного результата
из БУП в регистр АРФ, после чего
соответствующая запись удаляется из
БУП.
ЛАБОРАТОРНЫЕ РАБОТЫ
Размещение байт и слов в памяти
Память логически организована как одномерный массив байт, каждый из которых, имеет 20-битовый физический адрес в диапазоне от 00000 – до FFFFF. Любые два смежных байта в памяти могут рассматриваться как одно 16-ти разрядное слово. Младший байт слова всегда имеет меньший адрес, а старший – больший адрес. Адресом слова считается адрес его младшего байта.
Сегментация памяти и вычисление адресов
Пространство памяти емкостью 1Мбайт рассматривается как набор сегментов, определяемых программным путем. Сегмент состоит из смежных ячеек памяти, и является независимой и отдельно адресуемой единицей памяти емкостью 64 Кбайт. Каждому сегменту программой назначается начальный (базовый) адрес, являющийся адресом первого байта сегмента в пространстве памяти. Начальные адреса четырех сегментов, выбранных в качестве текущих, записываются в сегментные регистры CS, DS, SS, ES.
Сегментные регистры
Регистр CS – сегментный программный (кодовый) регистр;
DS – регистр для обращения к сегменту данных;
SS – регистр для обращения к сегменту стека;
ES – регистр для обращения к дополнительным данным.
Для обращения к командам и данным, находящимся в других сегментах, необходимо изменить содержимое сегментных регистров, что позволяет использовать все пространство памяти. Сегментные регистры инициализируются в начале программы путем засылки в них соответствующих констант.
В сегментном регистре хранится 16 старших разрядов 20-битового начального адреса сегмента. Четыре младших бита адреса принимаются равными нулю и дописываются справа к содержимому сегментного регистра при вычислении физических адресов ячеек памяти. Поэтому начальные адреса сегментов всегда кратны 24 =16. Сегменты могут быть соседними (смежными), неперекрывающимися, частично или полностью перекрывающимися. Физическая ячейка памяти может принадлежать одному или нескольким сегментам.
Физический адрес ячейки памяти представляет собой 20-ти битовое число в диапазоне 00000 – FFFFF, которое однозначно определяет положение каждого байта в пространстве памяти емкостью 1Мбайт.
Логический адрес ячейки памяти состоит из двух 16-ти битовых без знаковых значений: начального адреса сегмента, который называется базой, и внутрисегментного смещения EA, которое определяет расстояние от начала сегмента до адресуемой ячейки. Для вычисления физического адреса база сегмента сдвигается влево на 4 разряда и суммируется со смещением EA.
Смещение ЕА – эффективный адрес, вычисляемый в соответствии с заданным способом адресации.
Сегментная структура памяти обеспечивает возможность создания позиционно независимых или динамически перемещаемых программ, что необходимо в мульти программной среде. Это позволяет произвольно перемещать программу в адресном пространстве памяти, изменяя только содержимое сегментных регистров.
Стек
организуется в ОЗУ по принципу скользящей
вершины и его положение в ОЗУ определяется
содержимым регистров SS (база) и SP
(смещение). Регистр SS хранит базовый адрес
текущего сегмента стека, а регистр SP указывает
на вершину стека, т.е. содержит смещение
вершины стека в стековом сегменте. При
каждом обращении к стеку пересылается
одно слово, причем содержимое SP изменяется
автоматически: при записи в стек слова
содержимое SP уменьшается на два, а при
чтении из стека – увеличивается на два.
Регистры микропроцессора и форматы команд
Регистры общего назначения (РОНы) разбиты на две группы:
- группа HL, состоящая из регистров Ax, Bx, Cx, Dx, которые предназначены для хранения данных и допускают раздельную адресацию их старших Н и младших L половин.
- группа PI, содержащая указательные регистры BP, SP и индексные регистры SI, DI, в которых обычно хранится адресная информация.
Команды могут адресовать один или два операнда. В двухоперандных командах один из операндов должен обязательно располагаться в регистре, поскольку имеются команды типа регистр-регистр, регистр-память, память-регистр, но команды типа память-память отсутствуют, за исключением команд пересылки цепочки байт или слов.
Формат двухоперандной (двухадресной) команды имеет следующий вид:
Первый байт команды содержит код операции COP и два однобитовых поля:
d – направление передачи, w – длина операнда.
При d=1 осуществляется передача операнда или результата операции в регистр, который определяется полем reg второго байта команды.
При d=0 осуществляется передача операнда или результата из адресуемого полем reg регистра.
Поле w идентифицирует тип (разрядность) операндов:
при w=1 команда оперирует словом, состоящим из двух байт;
при w=0 команда оперирует одним байтом.
Второй байт, называемый постбайтом, определяет участвующие в операции регистры (reg) или регистр и ячейку памяти (поле r/m).
поле md – определяет режим;
поле reg – задает регистр;
поле r/m – указывает либо регистр (r) либо память(m). (m - от memory)
Поле reg определяет операнд, который обязательно находится в одном из регистров микропроцессора и условно считается вторым операндом. Поле r/m определяет операнд, который может находиться либо в регистре, либо в памяти и условно считается первым.
Поле reg используется только для указания регистра в двухоперандных командах. Если в команде один операнд, то он идентифицируется полем r/m, а поле reg отсутствует. Вместо поля reg в этом случае используется расширение кода операции.