Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТСвИС / (х) учебное пособие. организация Компьютеров и Систем.doc
Скачиваний:
90
Добавлен:
28.05.2015
Размер:
1.15 Mб
Скачать
    1. Внутренняя архитектура мп вм86.

МП ВМ86 состоит из двух основных блоков:

  • операционного устройства (ОУ);

  • устройства шинного интерфейса (ШИ).

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

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

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

Если процессор выполняет команду перехода (jmp, call и.т.д.), информация в очереди оказывается ненужной. Поэтому в этом случае МП автоматически очищает очередь команд и начинает заполнять ее заново.

    1. Сегментация памяти.

Как уже отмечалось выше, МП 8086 имеет 20 адресных линий, то есть может адресовать ОП объемом 1 Мбайт. Эта память логическим образом разбивается на сегменты, объемом 64 Кбайт каждый, которые могут располагаться практически в любом месте памяти. Одновременно МП может работать с четырьмя такими сегментами. Они называются:

  • сегмент кода, в нем располагается программа, которую выполняет МП;

  • сегмент стека, в нем организуется стек;

  • сегмент данных, в нем располагаются данные;

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

Каждому из этих сегментов ставится в соответствие находящийся внутри МП 16 разрядный сегментный регистр. Сегментный регистр cs соответствует сегменту кода, ss – стека, ds –данных и es – дополнительному сегменту.

Содержимое сегментного регистра задает начальный (базовый) адрес соответствующего сегмента в ОП. Однако сегментный регистр 16 разрядный, а адрес ОП должен быть 20 разрядным. Чтобы из шестнадцати разрядов получить двадцать, содержимое сегментного регистра при формировании адреса ОП сдвигают на 4 разряда влево (умножают на 16). Например, пусть cs=2231h, тогда начальный адрес сегмента кода равен 22310h. Отсюда можно сделать вывод, что начальный адрес любого сегмента всегда кратен шестнадцати. Это единственное ограничение на расположение сегментов в памяти. Других ограничений не существует, то есть сегменты могут быть полностью независимы друг от друга, а могут частично и даже полностью перекрываться.

При выполнении команды, если в ней требуется обращение к памяти, МП формирует по адресному коду, заданному в команде, так называемый эффективный адрес (Аэф).

Например, пусть

ds=2200h, bx=1000h, si=0770h

и выполняется команда

mov ax,[bx+si+2]

тогда

Аэф=(bx)+(si)+2=1000h+0770h+2=1772h

Сформированный Аэф рассматривается как внутрисегментное смещение, поэтому далее МП формирует физический адрес (Аф) по следующей формуле:

Аф = (сегментный регистр)×16 + Аэф.

Аф и является адресом ячейки ОП, к которой обращается МП. Для нашего примера (по умолчанию здесь в качестве сегментного регистра берется сегментный регистр ds):

Аф = (ds)×16 + Аэф = 22000h + 1772h = 23772h.

В процессе формирования Аэф возможно возникновение переноса из старшего разряда. При этом данный перенос попросту отбрасывается. Таким образом, после Аэф = ffffh идет Аэф = 0000h. Иначе говоря, достигнув конца сегмента мы автоматически переходим на его начало. Это так называемая кольцевая организация сегмента. Таким образом, существует только один способ выйти за пределы текущего сегмента – сменить содержимое соответствующего сегментного регистра.

В процессе формирования Аф также возможно возникновение переноса из старшего разряда. Как и в предыдущем случае, этот перенос попросту отбрасывается, Получается кольцевая организация памяти. Иначе говоря, никаким способом мы не можем сформировать адрес за пределами 1 Мбайта.