МПС РГР АВТ-409 Журкин. Министерство образования и науки российской федерации новосибирский государственный технический университет
Скачать 0.76 Mb.
|
4. Функциональное описание.Отличительной особенностью архитектуры процессора I8086 является наличие двух основных асинхронно работающих устройств, как показано на блок-схеме Рисунка 2. А именно устройства обработки (EU) и устройства сопряжения канала (BIU). Устройство обработки состоит из: арифметико-логического устройства (ALU) с тремя регистрами временного хранения операндов (RGB) и регистром признаков (RS), а так же группы регистров общего назначения (R0 - R7) и микропрограммного устройства управления (MCU) для управления выполнением команд. Устройство сопряжения канала состоит из: сумматора адреса (Sm), служащего для вычисления 20-разрядного физического адреса, указателя команд (IP), выполняющего функции программного счетчика, сегментных регистров (RGS), содержащих базовые адреса программ, данных и стека, регистров очереди команд (RI), предназначенных для формирования шестибайтовой очереди команд готовых к исполнению. Устройство сопряжения канала обеспечивает функции, относящиеся к выборке инструкций и организации очередей, выборке операнда, и адресации памяти и внешних устройств. Этот блок также обеспечивает основное управление шиной. Для увеличения быстродействия процессора и эффективного использования системных магистралей системы используется потоковая обработка инструкций. Поток инструкций может быть поставлен в очередь (до 6 байт инструкций) для ожидания декодирования и исполнения. Организация механизма очереди инструкции позволяет BIU использовать память более эффективно. В момент, когда в очереди свободно 2 байта, BIU попытается произвести цикл чтения памяти. Это существенно уменьшает “время простоя'' памяти. Очередь действует как First-In-First-Out буфера (FIFO), из которого байты инструкции передаются в EU при первой необходимости. Устройство обработки получает предустановленные инструкции из BIU, которые были установлены в нем в очередь, и обеспечивает формирование адреса операнда для BIU. Операнды из памяти, пройдя через BIU, попадают в EU для обработки и вычислений, а затем результаты могут возвращаются в BIU для последующей их передачи в память. Процессор I8086 содержит двенадцать 16-разрядных программно-адресуемых регистров, которые принято объединять в три группы: регистры данных, регистры-указатели и сегментные регистры. Кроме того, в состав процессора входят счетчик команд и регистр флагов. В группу регистров данных включаются следующие регистры: AX - аккумулятор; BX - базовый регистр; CX - регистр счетчика; DX - регистр данных. Каждый из этих регистров состоит из двух 8-разрядных частей, которые могут хранить данные независимо друг от друга. В группу регистров-указателей (индексных регистров) входят: SI - индекс источника; DI - индекс приемника; BP - указатель базы; SP - указатель стека. Группа сегментных регистров включает в себя: SS - сегмент стека; DS - сегмент данных; ES - дополнительный сегмент; CS - сегмент кода. К прочим регистрам можно отнести регистр адреса команд (IP) и регистр флагов (или регистр признаков). Рис 2. Регистр признаков содержит 16 бит, но семь из них не используются. Флаги i8086 разделяются на условные, отражающие результат предыдущей операции ALU, и управляющие, от которых зависит выполнение специальных функций. Ниже приведено описание флагов регистра признаков: 0. CF (бит 0) - перенос; PF (бит 2) - четность; AF (бит 4) - вспомогательный перенос; ZF (бит 6) - ноль; SF (бит 7) - знак; TF (бит 8) - пошаговый режим; IF (бит 9) - разрешение прерываний; DF (бит 10) - направление; OF (бит 11) - переполнение. Флаги TF, IF, DF относятся к управляющим флагам, остальные - к условным (флагам состояния). 5. Формат командСистема команд i8086 включает 133 базовые команды и позволяет обрабатывать 8- и 16-разрядные данные. Команды могут быть безоперандными, а также содержать один или два операнда. Длина команд может составлять от 1 до 6 байт. Код операции находится в первом байте команды, а остальные байты содержат информацию об адресах операндов. Чтобы различать операции над байтами или словами, в первом байте команды используется специальный разряд W. При W=1 операции выполняются с 16-разрядными данными. В микропроцессоре используются почти все известные способы адресации, что связано с наличием большого набора регистров. При выполнении команд по умолчанию возможны дополнительные варианты адресации, которые задаются с помощью специального однобайтового префикса замены сегмента, записываемого перед командой. Он информирует микропроцессор об использовании для адресации операнда сегментного регистра, отличающегося от регистра, выбираемого по умолчанию. Сегментные регистры ES, CS, SS, DS в 2-разрядном поле reg задаются кодами 00, 01, 10, 11 соответственно. Вид адресации в команде чаще всего задается байтом, следующим за кодом операции. Байт адресации может определять один или два операнда, его структура представлена ниже. Он содержит поле режима (mod), поле регистра (reg) и поле регистр-память (r/m). Для вычисления исполнительного адреса (ЕА) применяется поле mod или r/m, а также байты смещения (DISP), расположенные в команде непосредственно за байтом адресации. При прямой адресации исполнительный адрес находится непосредственно в поле смещения кода команды. В командах безусловных переходов и обращения к подпрограммам прямой адрес формируется из 16-разрядного адреса сегмента (SEG) и 16-разрядного смещения (DISP) (см. ниже). В процессе выполнения команды смещение передается в указатель команд IP, а базовый адрес сегмента - в регистр CS: В командах обработки данных прямой адрес представляется смещением, следующим за байтом адресации, в формате, изображенном ниже. Разряд d в поле кода операции cop задает направление передачи данных, определяемых полем reg в байте адресации. При d=1 передача операнда производится в регистр задаваемый полем reg в соответствии с кодировкой. Прямая адресация используется и в командах передачи данных между аккумулятором и памятью: В командах с регистровой адресацией операнд находится в одном из регистров общего назначения. Эти команды наиболее компактны и быстро выполнимы т.к. для адресации регистров необходимы 2-3 разряда кода команды, а выполнение этих команд полностью осуществляется внутри микропроцессора. Регистровая адресация может задаваться в байте кода операции: или с помощью байта адресации: В командах с двумя операндами при mod=1 используются два регистра, и второй регистр указывается кодом в поле r/m: Непосредственная адресация позволяет задавать постоянные данные в виде составных частей команды и используется в большинстве команд с двумя операндами. Непосредственный операнд data занимает один или два байта в конце кода команды причем младший байт всегда предшествует старшему. Однобайтовый непосредственный операнд записывается в дополнительном коде и может представлять константы в диапазоне от -128 до +127. Закрашенные участки при изображении байтов указывают на возможность отсутствия их в формате команды, при выполнении определенных условий. Например,16-разрядный непосредственный операнд используется только при w=1. Представленные два формата команд применяются в командах передачи данных и позволяют загрузить непосредственный операнд по адресу памяти, вычисленному с помощью байта адресации, или в некоторый регистр, определяемый полем reg. Ниже изображен формат арифметических команд, позволяющих использовать непосредственный операнд длиной в слово при sw=01, или, при s=1, непосредственный операнд в диапазоне от -128 до +127, записываемый в дополнительном коде. В этом формате 3-разрядный код ссс в поле reg служит для идентификации разновидности арифметической операции. Формат, представленный ниже, используется в командах арифметических и логических операций, содержащих второй операнд в аккумуляторе AX: Непосредственный операнд, представляющий константу, добавляемую к содержимому указателя стека SP, может использоваться в команде возврата из подпрограммы, формат которой представлен ниже: В командах с регистровой косвенной адресацией 16-разрядный исполнительный адрес EA находится в одном из регистров reg, задаваемых полем r/m байта адресации (см. ниже). В этом способе адресации может использоваться только один из регистров - BX, SI или DI. |