Таблица 1.2. Коды передачи байтов по системной шине.
/BЕ3 /ВЕ2 /ВЕ1 /ВЕ0 БАЙТЫ В 32-БИТОВОМ СЛОВЕ ДАННЫХ D(D24/31) C(D16/23) B(D8/15) A(D0/7) 1 1 1 0 - - - A 1 1 0 1 - - B - 1 0 1 1 - C - C 0 1 1 1 D - D - 1 1 0 0 - - B A 1 0 0 1 - C B - 0 0 1 1 D C D C 1 0 0 0 - C B A 0 0 0 1 D C B A 0 0 0 0 D C B A
Таблица 1.3. Типы циклов шины.
M/IO# D/C# W/R# 0 0 0 - подтверждение прерывания 0 0 1 - не используется 0 1 0 - чтение данных из УВВ 0 1 1 - запись данных в УВВ 1 0 0 - чтение команды из ОЗУ 1 0 1 - 1) останов: Addr=2, /BE0-/BE3=1101, A[31/2]=0 - 2) отключение: Addr=0, /BE0-BE3=1111,A[31/2]=0 1 1 0 - чтение данных из ОЗУ 1 1 1 - запись данных в ОЗУ
Из таблицы типов циклов шины видно, что циклов шины может быть восемь:
1) чтение ОЗУ без блокировки шины (/LOCK=H),
2) чтение ОЗУ с блокировкой шины (/LOCK=L),
3) запись в ОЗУ без блокировки шины (/LOCK=H),
4) запись в ОЗУ с блокировкой шины (/LOCK=L),
5) чтение из УВВ или регистров FPU,
6) запись в УВВ или в регистры FPU,
7) подтверждение прерывания,
8) цикл останова или выключения.
Но основных, обменных циклов, – четыре: чтение ОЗУ, запись в ОЗУ, чтение порта ввода-вывода и запись в порт ввода-вывода. Остальные циклы шины либо варианты основных (с блокировкой или без блокировки), либо служебные, а не обменные.
1.4.3.3) Конвейерная обработка команд в CPU
Шесть автономных блоков микропроцессора i386 составляют систему конвейерного выполнения команд.
Исполнение команды, в общем виде, состоит из 6 тактов:
ФАК──>ВК──>ФАО──>ВО──>ОП──>ЗпРез
здесь:
ФАК – формирование адреса команды,
ВК – выборка команды,
ФАО – формирование адреса операнда,
ВО – выборка операнда,
ОП – выполнение текущей операции,
ЗпРез – запись результата операции.
Конвейерное выполнение программы – это когда в разных автономных блоках микропроцессора одновременно выполняются разные такты нескольких смежных команд. Например, ЗпРез команды n-1, собственно ОП команды n, ФАК команды n+1, ВК команды n+2 и ФАК команды n+3.
Обработка команды в CPU i386, в свою очередь, состоит из четырех этапов:
1) преобразование адресов при сегментированной или страничной организации памяти (выполняется в блоке MMU);
2) выборка полей команды из ОЗУ и накопление их в стеке очереди команд (выполняется в PU);
3) дешифрация команд из очереди и накопление дешифрованных кодов операций в стеке декодированных команд (выполняется в блоке IDU);
4) выполнение операции в EU, под микропрограммным управлением, и формирование статусных флагов.
Для ускорения выполнения команд в CPU, моделей i386 и старше, организован конвейер команд:
- каждая из команд в свое время находится в стадии выборки, хранения, дешифрации, формирования адреса и – выполнения;
- для смежных команд эти стадии (такты выполнения) обычно выполняются разными узлами CPU одновременно, в режиме совмещения, если соответствующие узлы микропроцессора в это время свободны;
- работа CPU, по отношению к системной магистрали, синхронна, а между узлами BIU, PU, IDU, EU – асинхронна.
Счетчик команд EIP в EU автоматически модифицирует адрес следующей команды по словам или двойным словам, в зависимости от длины команды, задаваемой входом /BS16. Информация в EIP, системных и сегментных регистрах блока MMU используется при формировании физического адреса для выборки следующей команды.
Одновременно с адресным формированием в EU, в работе находится одна из команд очереди в IDU, в которое, в свой черед, подгружается команда из PU.
Обмен данными между CPU и системой осуществляет BIU по запросу от EU, либо при наличии свободного места в очереди команд.
Если EU выполняет длинную команду, не требующую новых данных из системы, а узлы очередей заполнены, то BIU может находиться в, так называемом, холостом цикле.
В многопроцессорных системах, когда шина передается от одного ведущего модуля другому, отключаемые модули переводят свои шины в состояние высокого импеданса – Z-состояние. В это время отключенный от шины CPU, или контроллер имеет возможность автономно выполнять все команды, находящиеся в стеках, до тех пор, пока CPU не потребуется шина для обмена. Если же в это время шина все еще занята, то CPU прекращает работу, находясь в состоянии ожидания (Time-Out), пока шина не освободится (линия /READY=H, т. е. пассивна).
Контрольные вопросы.
1. Из каких тактов состоит выполнение команды в CPU?
2. Что такое цикл шины в РС?
3. В чем смысл сигнала HOLD?
4. В чем смысл сигнала HLDA?
5. Как реагирует микропроцессор на сигнал INTR?
6. В чем особенность сигнала NMI?
1.4.3.4) Режимы работы микропроцессора i386
CPU i386 допускает работу в четырех режимах:
- RM – реальном,
- РМ – защищенном,
- VM-86 – виртуальном и
- РРМ – страничном.
1. RM – режим реальной адресации, соответствует работе системы i8086 и используется только в MS DOS. Область адресов, шириной в 1 Мбайт, не защищена, реализовано до 20 адресных линий (из 32-х, возможных для микропроцессора i386), режим однопользовательский. Для работы с 32-разрядными операндами и реализации дополнительных режимов адресации используется префикс переадресации, двухбайтовый адрес не превышает границы сегмента в 64 Кбайт (0000 - FFFF), иначе фиксируется особая ситуация с прерыванием типа 13h. Для доступа к 1 Мбайт адресного пространства используются линии адреса [A19-А02] и /BE0 – /BE3. Страничный механизм доступа к памяти отключен, исполнительный адрес всегда соответствует физическому, все сегменты могут находиться в состоянии записи, считывания или выполнения.
2. РМ – защищенный режим, или режим виртуальной адресации. При включении РС всегда устанавливается режим RM, а для перевода его в РМ используются системные команды LMSW и SMSW. При установке бита PF=1 в MSW, CPU переходит в РМ. В режиме РМ реализуется доступ к 4 Гбайт ОЗУ в 32-битовом пространстве исполнительных адресов, а доступ к 64 Тбайт ОЗУ реализуется в логическом (виртуальном) адресном пространстве. Виртуальная адресация – это способ организации доступа к информации, большая часть которой располагается не в физическом ОЗУ, а во внешней (дисковой) памяти, откуда она, по мере необходимости, перекачивается в ОЗУ (swapping), но программа видит иллюзию размеров ОЗУ в 64 Тбайт. Предусмотрена защита памяти по многоуровневому принципу защиты ОС и прикладных программ и реализуется мультипрограммность. Для обратного перевода из режима РМ в RM, команды LMSW и SMSW не используются, а система должна быть перезагружена либо аппаратно ("холодный" рестарт), либо аппаратно-программно – через порты 64h и 60h контроллера 8048 (KBD), командой OUT и далее, через сигнал RS и узел Shut Down, – к входу RESET CPU, как при "теплом" рестарте, осуществляемом нажатием комбинации клавиш Ctrl+Alt+Del.
Для программного перехода из режима PM в RM может быть также использована ассемблерная команда MOV CR0 (LCR0).
3. VM-86 – это режим виртуальной адресации i86. Режим устанавливает исполнительную среду i8086 внутри многозадачной среды PM CPU i386. При этом поддерживается выполнение всех программ для предыдущих поколений микропроцессоров ix86. Сначала, в рамках VM86, формируется 20-разрядный линейный адрес по системе RM, но включается механизм страничной адресации и система двухуровневой защиты памяти. Адрес, шириной в 1 Мбайт, может быть разбит на 256 страниц по 4 Кбайт каждая и размещен в физическом адресном пространстве до 4 Гбайт. В этом объеме адресов ОЗУ можно, в окнах (frame) по 1 Мбайт, расположить множество копий MS DOS, или других ОС и пользовательских программ, представляющих отдельные виртуальные машины, работающие в многозадачном режиме.
Вход и выход в режим VM86 возможен следующими способами:
- загрузкой регистра флагов EFLAGS [17];
- переключением с задачи на задачу с использованием сегмента состояния задачи (TSS);
- в процедуре прерывания (команда IRET);
- ассемблерной командой POPF.
4. РРМ – режим страничной адресации. Это режим управления памятью, позволяющий разделить большие объемы информации на компактные блоки по 4 Кбайт.
Для реализации режима РРМ в CPU i386 дополнительно включается страничный механизм, транслирующий линейный адрес – в физический.
Переход из RM в РРМ – программный, командами LMSW, SMSW, MOV CR0, MOV CR3. Обратный переход осуществляется либо перезагрузкой, либо программно, с помощью бита 31 в регистре CR0.
1. Что представляет собой и для чего предназначен режим RM CPU i386?
2. Что такое виртуальная адресация в режиме РМ CPU i386?
3. Для чего предназначен режим VM86 CPU i386?
4. Какой режим устанавливается при включении CPU i386?
5. Как можно перейти из режимов РМ, РРМ в режим RM?
1.4.4 Математический сопроцессор
Равнозначны следующие аббревиатуры обозначения математического сопроцессора:
NDP (Numeral Data Processor),
MCP (Math Co-Processor),
FPU (Floating Point Unit),
APU (Accelerate Processor Unit).
Для однозначности – примем обозначение FPU.
FPU выполняет следующие функции:
- операции с плавающей точкой;
- вычисление тригонометрических функций;
- логарифмирование;
- работу с двоично-десятичными числами.
Эти операции выполняются FPU по собственной микропрограмме, значительно (до 150 раз) быстрее, чем CPU, хотя CPU может их выполнять и сам, при наличии программ-эмуляторов режима совместимой с FPU работы, но медленнее. Так что FPU необязателен, и целесообразен только при больших объемах вычислений с плавающей точкой и т.п. Впрочем, успехи технологии СБИС позволяют интегрировать FPU прямо в кристалл CPU, так что современные CPU, начиная с i486 и Pentium, имеют встроенный в CPU математический сопроцессор.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51