p align="left">READY (готов) - синхронный сигнал, указывающий, что текущий ЦИКЛ ШИНЫ завершен, байты, определяемые сигналами /ВЕ0-/ВЕ3, /BS16, приняты или переданы. В первом такте цикла сигнал игнорируется, в остальных - анализируется, пока не станет активным. Внешнее оборудование, не способное закончить обмен за 2 такта, продлевает цикл, удерживая CPU в состоянии Time Out. /NA (Next Addres) - синхронный сигнал для запроса следующего адреса, сообщает CPU, что система готова принять от него новые значения адресов и сигналов управления циклом обмена, даже если завершение текущего цикла шины не подтверждено сигналом /READY. CLK - внутрипроцессорная частота CPU i386. Она вдвое ниже подводимой к входу CLK CPU от генератора тактовых импульсов. Для каждого периода CLK2 есть две фазы - Ф1 и Ф2, внутренней синхронизации микроопераций в CPU, но они могут быть синхронизированы с задним фронтом RESET. Различаются такты Ts и Tc, составляющие цикл обмена. /LOCK - выходная шина с Z-состоянием, определяет тип цикла шины с блокировкой. Активизируется установкой /ADS=L в начале цикла шины с конвейеризацией адресов, или в циклах INTA. Применяется в мультипроцессорных системах и сигнализирует о том, что CPU выполняет операцию с несколькими циклами шины, которая не должна прерываться. Сигнал вырабатывается автоматически, при выполнении префикса /LOCK в циклах INTA и при смене страничных таблиц. HOLD (Bus Hold Request) - запрос захвата шины. Синхронный входной сигнал, устанавливаемый другим CPU, или интеллектуальным УВВ для работы с шиной. Анализируется фронтом CLK2 и, пока HOLD активен, CPU следит за его уровнем, устанавливая в конце цикла обмена ответный сигнал HLDA. HLDA (Bus Hold Asknowlege) - синхронный выход подтверждения передачи управления шиной другому, активному CPU или УВВ. В ответ на запрос HOLD, CPU переходит в состояние подтверждения захвата. На входе NMI возможно появление только одного запроса, запоминающегося в CPU для обработки его после снятия сигнала HOLD. INTR (Interrupt - прерывание) - асинхронный вход, инициирующий последовательность прерывания в CPU, аналогичен для любого i80x86 CPU. NMI (Non Maskable Interrupt) - немаскируемое прерывание, сигнализирует CPU о появлении критической ошибки в ВС, не позволяющей правильно продолжить операцию (например, - ошибка адресов или данных в ОЗУ). Текущая программа прерывается и ситуация обрабатывается специальной программой для принятия решения (перезапрос данных, повторное выполнение операции, или сигнализация о неработоспособности ВС). PE REQ (Co-processor Request) - запрос прерывания от FPU. Асинхронный вход, указывающий, что FPU нужен обмен с памятью (сам FPU обменом не управляет). CPU отвечает сигналом синхронизации, после чего FPU выполняет циклы обмена между локальной шиной и портами регистров данных FPU. /BUSY (занят) - асинхронный вход, анализируемый по уровню командой WAIT, автоматически выдаваемой CPU, при обнаружении активного входа /BUSY=L (признак наличия ошибки, особой ситуации, или выполнения FPU очередной операции). На время активизации сигнала /BUSY, CPU выполняет такты ожидания. Если во время среза RESET сигнал /BUSY=L, то CPU выполняет процедуру самодиагностики. ERROR (ошибка), - асинхронный вход, анализируемый по уровню. Указывает, что при выполнении команды в FPU сформирован незамаскированный в регистре состояния FPU код ошибки. CPU вырабатывает прерывание типа 10h, но чаще - аппаратное прерывание типа 75h по линии IRQ13. Какие именно байты (A, B, C или D), из четырех возможных, машинного слова будет передаваться по системной шине ISA за один цикл обмена, определяются кодами управляющих сигналов ВЕ3# - BE0#. Коды передачи байтов по системной шине приведены в таблице 1.2. Возможные типы циклов шины приведены в таблице 1.3. Символ #, стоящий после названия сигнала означает, что активный уровень сигнала - нижний. Сигнал М означает обмен с DRAM, IO - обмен с портом, D - передача данных, С - передача команды, W - запись, R - чтение DRAM или порта соответственно. Таблица 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 возможен следующими способами:
Страницы: 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
|