Архитектура 16-разрядного процессора первого поколения

 

Однокристальный 16-разрядный МП Intel 8086 (К1810ВМ86) имеет мультиплексную 20-разрядную ША и 16-разрядную ШД и рассчитан на работу как в одно, так и в многопроцессорных системах. Процессор 8086 на языке ассемблера совместим с МП 8080, регистры и систему команд которого можно рассматривать как подсистему регистров и команд МП 8086.

Эффективность работы МП существенно повышена за счет введения команд математических операций (включающих умножение и деление) над 8- и 16-разрядными числами, команд побитовой обработки чисел, команд работы с массивами данных, расширения видов прерываний работы МП, а также реализации конвейерного типа выполнения команд в самой БИС. МП может работать с памятью объемом до 1 Мбайт, обмениваться информацией с 64 Кбайт внешних устройств, имеет 256 типов различных прерываний.

Упрощенная структурная схема БИС К1810ВМ86 приведена на рисунке 6.2. Блок сопряжения с шинами BIU производит все пересылки данных и кодов для EU. Пересылки между памятью или внешними устройствами осуществляется по требованию EU. В то время как EU занят выполнением команды, блок BIU получает последующие в программе коды из памяти. Блок выполнения команд EU имеет 16-разрядные АЛУ с регистром состояния и флажками управления, а также РОНы. Все регистры и внутренние магистрали блоки 16-разрядные. Блок не имеет связи с внешними шинами МП.

На АЛУ поступают коды команд из конвейера команд, расположенного в BIU. Если в результате дешифрации кода команд в АЛУ необходимо получение одного или нескольких операндов по внешним магистралям МП, то EU запрашивает BIU на получение и размещение необходимых данных в BIU.

   
Рисунок 6.2 – Структурная схема 16-разрядного микропроцессора 8086    

Несмотря на то, что все адреса, с которыми оперирует EU, 16-разрядные, BIU производит необходимые преобразования адресов так, чтобы EU имел возможность обращаться по всему возможному адресному пространству (1 Мбайт) МПС. BIU считывает команды с памяти и сохраняет их в конвейере команд, где может быть размещено до 6 инструкций. Это позволяет BIU выдавать их в EU по мере надобности без дополнительной загрузки внешней шины. BIU организует получение нового кода команды как только два байта из конвейера будут переданы в EU.

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

Любая ячейка памяти МП имеет два типа адресов: физический и логический. Физический адрес представляется 20-разрядным числом и однозначно определяет любую из 1 Мбайт ячеек памяти. В 16-разрядной системе адреса расположены в диапазоне от 0 до FFFFF. Весь обмен информацией МП с памятью осуществляется с использованием физических адресов. Программы же больше используют логические или физические адреса и позволяют записывать команду без предварительных знаний места, где эта команда будет размещена в памяти. Это дает программисту возможность маневрировать при распределении памяти, увеличивает гибкость программного обеспечения.

Логический адрес состоит из двух основных частей: значения базы сегмента и значения смещения в сегменте. Базовый адрес и смещение в сегменте отображаются 16-разрядными числами. Как только BIU обращается к памяти, базовый адрес формирует физический по принципу: Значение базы сегмента смещается на четыре разряда влево, и полученное 20-разрядное число (с четырьмя нулями в младших четырех разрядах) складываются со значением смещения в сегменте. Таким образом, база сегмента (с четырьмя нулями, добавленными в качестве младших разрядов) задает для памяти сегменты длинной 64 Кбайт, а значение сегмента в смещении – расстояние от начала сегмента до искомого адреса памяти. Максимально возможное смещение в сегменте равно 64 Кбайт. В любой момент времени программа может осуществлять доступ к одному из четырех сегментов:

сегменту текущего кода (Current Code Segment – CS);

сегменту текущих данных (Current Date Segment - DS);

сегмент текущего значения стека (Current Stack Segment – ES);

дополнительный сегмент текущих значений (Current Extra Segment – ES).

Каждый из этих сегментов может быть задан с помощью записи числа в соответствующий 16-разрядный регистр сегментов МП БИС. В большинстве случаев в МПК К1810 сегменты могут быть заданы в программе произвольно по усмотрению программиста.

В зависимости от команд, блок BIU получает информацию о логическом адресе памяти из различных регистров МП. Коды команд всегда извлекаются из адреса памяти, определяемого содержимым регистра текущего кода и регистра указателя команд IP (Instruction Pointer). В IP записано смещение в сегменте текущего кода. Команды со стеком всегда используют для адресации SS и регистр – указатель стека SP (Stack Pointer), где записано смещения в сегменте текущего значения стека. Данные или переменные в командах извлекаются из памяти, адреса которых расположены в сегменте текущих данных, хотя по директивам команд это можно сделать и с помощью всех остальных сегментов. При вычислении физического адреса смещение в сегменте задается в EU, так как в нем происходит дешифрация кода команд и определение сегмента памяти, с которых будет работать БИС в текущий момент времени.








Дата добавления: 2016-02-09; просмотров: 3071;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.