- •Предисловие
- •Введение
- •1. Системный анализ задачи - выделяются процессы и функции, реализация которых будет возложена на мк или ип.
- •Алгоритмизация процессов и функций - разрабатываются алгоритмы решения задачи.
- •Области использования мк
- •Глава 1основы микропроцессорной техники
- •1.1. Классификация микропроцессоров, основные варианты их архитектуры и структуры
- •1.2. Общая структура и принципы функционирования микропроцессорных систем
- •1.3. Система команд и способы адресации операндов
- •Начиная с младшего байта («Little-Endian»);
- •Начиная со старшего байта («Big-Endian»).
- •1.4. Интерфейсы микропроцессорных систем
- •1.4.1. Основные понятия
- •1.4.2. Магистраль vme
- •Verbs находит широкое применение в:
- •VmEbus обеспечивает наилучшее соотношение цена - производительность для системы в целом и предоставляет практически неограниченные возможности наращивания всех ресурсов.
- •1.5. Шина usb
- •На их основе
- •2.1. Структура и функционирование процессоров intel p6
- •2.1.1. Суперскалярная архитектура и организация конвейера команд
- •2.1.2. Режимы работы процессора и организация памяти
- •2.1.3. Регистровая модель
- •1. Функциональные основные регистры:
- •Iopl -уровень привилегий ввода/вывода, задает максимальную величину уровня привилегий текущей программы, при котором разрешается выполнение команд ввода/вывода;
- •2.3 Режимы работы процессора
- •2.1.4. Внутренняя кэш-память
- •8 Зон по 64 Кбайт, занимающих диапазон адресов 0-7fffFh (512 Кбайт);
- •16 Зон по 16 Кбайт, занимающих диапазон адресов 80000h-8ffffh (256 Кбайт);
- •8 Зон размером от 4 Кбайт до максимального размера физической памяти, которые могут размещаться в любой позиции адресного пространства.
- •2.1.5. Форматы команд и способы адресации
- •Содержимого базового регистра евр (вр) или евх (вх);
- •Содержимого индексного регистра esi (si) или edi (di);
- •Disp команды (см. Рис. 2.11).
- •2.2. Система команд: операции над целыми числами
- •Пересылка данных и адресов
- •Xchg - Обмен между регистрами или памятью и регистром
- •Xlat-Преобразование кодов
- •Imul-Знаковое (целочисленное) умножение аам- ascii-коррекция результата умножения
- •Idiv-Знаковое (целочисленное) деление
- •2.2.1. Команды пересылки
- •2.2.2. Команды арифметических операций
- •2.2.3. Команды логических операций и сдвигов
- •2.2.4. Команды битовых и байтовых операций
- •2.2.5. Команды операций со строками символов
- •2.3. Система команд: операции управления
- •Управление программой
- •Прерывания
- •Int3 - Прерывание в контрольной точке
- •Iret-Возврат из подпрограммы обслуживания прерывания
- •2.3.1. Команды управления программой
- •2.3.3. Команды организации защиты памяти
- •2.3.4. Команды управления процессором
- •2.3.5. Префиксные байты
- •2.4. Система команд: операции над числами с плавающей точкой
- •2.4.3. Команды пересылки данных
- •2.4.4. Команды арифметических операций
- •2.4.6. Команды специальных операций
- •2.4.7. Команды управления fpu
- •Команды преобразования
- •Арифметические команды
- •Inub'- Нахождение меньшего значения (беззнаковые байты) Команды сравнения
- •Команды логических операций
- •2.5.1. Форматы представления данных и выполнение операций
- •2.5.2. Команды пересылки и преобразования данных
- •1 2.5.3. Команды арифметических операций '
- •2.5.4. Команды логических операций и сдвигов
- •2.5.5. Команды сравнения и нахождения максимума/минимума
- •2.6. Система команд: операции sse
- •Команды пересылки данных
- •Команды преобразования данных
- •Арифметические команды
- •Команды нахождения максимума и минимума.
- •Команды преобразования формата чисел.
- •Команды управления
- •2.6.1. Форматы представления данных и выполнение операций
- •2.6.2. Команды пересылки и преобразования данных
- •2.6.3. Команды арифметических операций
- •2.6.6. Команды преобразования формата чисел
- •2.6.7. Команды управления
- •2.6.8. Команды пересылки данных с управлением кэшированием
- •2.7. Работа процессора в защищенном и реальном режимах
- •2.7.1. Сегментация памяти в защищенном режиме
- •2.7.2. Страничная организация памяти
- •2.7.3. Защита памяти
- •2.7.4. Поддержка многозадачного режима
- •2.7.5. Реализация режима виртуального 8086 (v86)
- •2.7.6. Функционирование процессора в реальном режиме
- •2.8. Реализация прерываний и исключений. Обеспечение тестирования и отладки
- •2.8.1. Виды прерываний и исключений, реализация их обслуживания
- •2.8.2. Причины возникновения исключений
- •2.8.3. Средства обеспечения отладки
- •2.8.4. Реализация тестирования и контроля функционирования
- •2.9. Risc-микропроцессоры и risc-микроконтроллеры семейств powerpc (мрс60х, мрс50х)
- •2.9.1. Risc-микропроцессоры семейства мрс60х (powerpc)
- •I (invalid) - недостоверное (аннулированное) содержимое строки.
- •2.9.2. Risc-микроконтроллеры семейства мрс5хх ( power pc)
- •3.1. Общие принципы организации кэш-памяти
- •3.1.1. Понятия тега, индекса и блока
- •3.1.2. Механизм кэш-памяти с прямым отображением данных
- •3.1.3. Механизм кэш-памяти
- •3.1.4. Обновление информации в кэш-памяти
- •1.5. Согласованность кэш-памяти
- •3.2.2. Внутренние кэш-памяти команд и данных
- •3.2.3. Алгоритм кэш-замещений
- •3.2 4. Состояния кэш-памяти данных
- •1.При блокированном чтении:
- •3.2.5. Согласованность внутренних кэш-памятей
- •1) Хранить таблицы страниц и директорий в не копируемой в кэш-память области основной памяти или использовать режим сквозной записи страниц;
- •Процессор может быть заменен (возможен upgraded) без изменения памяти и других подсистем мп вс;
- •Без особого снижения общих характеристик системы могут быть использованы более медленные и менее емкие устройства памяти и устройства ввода/вывода.
- •3.3. Функционирование памяти
- •1) Трансляция сегмента, при которой логический адрес, состоящий из селектора сегмента и смещения (относительного адреса внутри сегмента), преобразуется в линейный адрес.
- •3.3.1. Трансляция сегментов
- •Глобальной таблице дескрипторов (gdt);
- •Локальной таблице дескрипторов (ldt).
- •3.3.2. Адресация физической памяти
- •3.3.4. Комбинирование сегментной и страничной трансляции
- •3.4. Защита памяти
- •3.4.1. Зачем нужна защита?
- •Устанавливает различие между разными форматами дескрипторов;
- •Специфицирует функциональное назначение сегмента.
- •1 Поле предела называют также полем границы.
- •2 Байты сегмента размещены в оп в порядке возрастания адресов памяти или в обратном порядке. Такое размещение также называют соответственно по принципу «младший» и «старший крайний».
- •Cpl (текущий уровень привилегий);
- •Rpl (уровень привилегий источника обращений к сегменту) из селектора, используемый для спецификации сегмента назначения;
- •3)Dpl дескриптора сегмента назначения.
- •Загрузить регистр сегмента данных селектором несогласованного, с разрешением чтения кодового сегмента;
- •Загрузить регистр сегмента данных селектором кодового сегмента, который является согласованным и разрешенным для чтения;
- •Использовать префикс переопределения cs, чтобы прочитать разрешенный для чтения кодовый сегмент, селектор которого уже загружен в cs регистр.
- •Для команды call (или для команды jmp для согласованного сегмента) должны быть выполнены следующие правила привилегий:
- •Привилегированные команды, которые нужны для систем управления вычислительным процессом;
- •Чувствительные команды (Sensitive Instructions), которые используются для ввода/вы вода и для действий, связанных с вводом/выводом.
- •1) Проверка того, имеет ли назначение, специфицированное указателем право доступа к
- •Проверка того, соответствует ли тип сегмента заданному использованию;
- •Проверка указателя на соответствие границе сегмента.
- •Verw (Verify for Writing) - проверка доступности по записи обеспечивает те же самые возможности, что и verr для проверки доступности по чтению.
- •3.4.4. Уровень защиты страниц
- •1) Ограничение адресуемой области; 2) проверка типа страницы.
- •3.4.5. Комбинирование защиты сегментов и страниц
- •Глава 4
- •4.1. Структура современных 8-разрядных микроконтроллеров
- •4.1.1. Модульный принцип построения
- •Tiny avr - mk в 8-выводном корпусе низкой стоимости;
- •Classic avr - основная линия мк с производительностью до 16 mips, Flash память программ объемом до 8 Кбайт и статическим озу данных 128. ..512 байт;
- •Mega avr - мк для сложных приложений, требующих большого объема памяти (Flash пзу до 128 Кбайт), озу до 4 Кбайт, производительностью до 6 mips.
- •4.1.4. Резидентная память мк
- •4.1.5. Порты ввода/вывода
- •Однонаправленные порты, предназначенные в соответствие со спецификацией мк только для ввода или только для вывода информации.
- •Двунаправленные порты, направление передачи которых (ввод или вывод) определяется в процессе инициализации системы.
- •4.1.6. Таймеры и процессоры событий
- •Импульсную последовательность с выхода управляемого делителя частоты fBijs;
- •Внешнюю импульсную последовательность, поступающую на один из входов мк.
- •Простое увеличение числа модулей таймеров; этот путь характерен для части мк компаний «Pfilips» и «Atmel» со структурой msc-51, для мк компаний «Mitsubishi» и «Hitachi».
- •Изменение логического уровня с 0 на 1 (нарастающий фронт сигнала);
- •Изменение логического уровня с 1 на 0 (падающий фронт сигнала);
- •Любое изменение логического уровня сигнала.
2.8. Реализация прерываний и исключений. Обеспечение тестирования и отладки
При работе микропроцессорной системы часто возникают ситуации, когда требуется прервать выполнение текущей программы и перейти к подпрограмме, обеспечивающей необходимую реакцию системы на создавшиеся обстоятельства. Такие ситуации называются прерываниями или исключениями в зависимости от причин, вызывающих их возникновение. Специальные виды таких прерываний реализуются при отладке программ, для чего в состав процессора введены необходимые функциональные блоки, работа которых контролируется с помощью регистров отладки DR7-0.
Особенно большое значение для современных процессоров и систем, реализуемых на их основе, имеют тестирование и самотестирование. Процессоры семейства Р6 содержат ряд средств, которые обеспечивают выполнение данных процедур.
2.8.1. Виды прерываний и исключений, реализация их обслуживания
Прерываниями (interruption) являются штатные ситуации, возникающие при поступлении соответствующих команд (программные прерывания) или внешних сигналов (аппаратные прерывания). Исключениями (exeption) являются нештатные ситуации (ошибки), возникающие при работе процессора. При выявлении таких ошибок соответствующие блоки, контролирующие работу процессора, вырабатывают внутренние сигналы запроса, обеспечивающие вызов необходимой подпрограммы обслуживания. Классификация прерываний и исключений иллюстрируется на рис. 2.56.
Процессор способен обеспечить обслуживание 256 различных типов исключений и прерываний. Соответствующая обработка информации при возникновении таких ситуаций выполняется с помощью специальных подпрограмм обслуживания, начальные адреса (вектора) которых хранятся в таблице, размещаемой в памяти системы.
Запросы на выполнение аппаратных прерываний поступают от внешних устройств на входы LINTO/INTR, LINT1/NMI процессора. В мультипроцессорной системе, когда включен внутренний контроллер локальных прерываний APIC, сигналы LINT1-0 на этих входах определяют номер запроса, поступающего от других устройств (процессоров) системы. В однопроцессорной системе, когда функционирование контроллера APIC запрещено, эти входы служат соответственно для подачи маскируемых INTR и немаскируемых NMI запросов прерывания от различных внешних устройств.
На вход INTR поступают маскируемые запросы прерываний, обслуживание которых может быть запрещено (замаскировано) путем установки значения признака IF = 1 в регистре состояний EFLAGS. Обычно такой запрос поступает от внешнего устройства через специальный контроллер прерываний, который собирает запросы от различных внешних устройств и передает их для обработки процессору, указав для них также номер п., определяющий вид прерывания (INTR п). На вход NMI поступает запрос на немаскируемое
прерывание, процедура обслуживания которого имеет фиксированный номер п = 2 (табл. 2.60). Значение признака IF в регистре EFLAGS не влияет на обслуживание процессором немаскируемого запроса прерывания NMI. При работе процессора в мультипроцессорной системе, когда функционирует контроллер локальных прерываний APIC, запросы аппаратных прерываний (маскируемые и немаскируемые) поступают по специальной APIC-шине.
Программные прерывания реализуются при поступлении команд: INT n, INT3, INTO, BOUND. Эти команды вызывают переход к выполнению подпрограмм обслуживания, вектора которых выбираются согласно табл. 2.60.
Таблица 2.60
В реальном режиме процессор не заносит в стек кед ошибки и использует только младшие 16 разрядов регистра EIP (регистр IP) и EFLAGS (регистр FLAGS). Возврат из подпрограммы обслуживания прерывания выполняется с помощью команды I RET, которая восстанавливает сохраненное в стеке содержимое регистров FLAGS, CS и IP, обеспечивая возвращение к выполнению прерванной программы.
Обработка прерываний в защищенном режиме. Вызов подпрограмм обслуживания прерываний осуществляется через дескрипторную таблицу прерываний IDT (Interrupt Descriptor Table), которая может располагаться в любом месте адресного пространства. Базовый линейный адрес этой таблицы хранится в регистре IDTR (рис. 2.58).
Загрузка содержимого регистра IDTR осуществляется с помощью команды LIDT, а его сохранение в памяти - с помощью команды SIDT. Команда LIDT является привилегированной и может выполняться только программой, имеющей высший уровень привилегий CPL = 0. Команда SIDT может быть выполнена при любом уровне привилегий программы.
Элементами таблицы ЮТ являются системные дескрипторы прерываний, имеющие размер по 8 байт. Поэтому максимальный размер таблицы ЮТ составляет 2 Кбайт при использовании всех 256 видов прерываний (исключений). В таблице могут содержаться три вида системных дескрипторов: шлюз прерывания, шлюз ловушки и шлюз задачи.
Форматы содержимого шлюзов прерывания и ловушки приведены на рис. 2.59, а, б. Они содержат селектор вызываемого при обслуживании сегмента, который поступает в регистр CS, и относительный адрес первой команды подпрограммы обслуживания, который загружается в регистр EIP. В дескрипторе также содержится бит Р, указывающий на присутствие (при значении Р = 1) в памяти сегмента, в котором находится соответствующая подпрограмма обслуживания, и двухбитовое поле gDPL, определяющее уровень привилегий шлюза. Бит D в байте доступа определяет режим работы процессора при обслуживании прерываний: если значение D = 0, то процессор функционирует как 16-разрядный процессор 80286, если D = 1, то обеспечивается 32-разрядный режим функционирования, характерный для процессоров 386,486, Pentium, Р6.
Передача управления через шлюз прерывания или шлюз ловушки может сопровождаться изменением уровня привилегий. Процессор проверяет значение gDPL в дескрипторе шлюза при выполнении программных прерываний, вызываемых командами INT n, INT3, INTO. Переход к выполнению подпрограммы обслуживания в этих случаях производится, если уровень привилегий текущей программы меньше или равен значению gDPL шлюза: CPL <= gDPL. Таким образом, величина gDPL ограничивает уровень привилегий программ, которые могут вызывать данную процедуру обслуживания. При выполнении других видов прерываний и исключений процессор игнорирует gDPL шлюза.
Уровень привилегий сегмента команд, в котором размещается подпрограмма обслуживания, должен быть меньше или равен уровню привилегий текущей программы: DPL <= CPL. Нарушение этого правила приводит к исключению типа #GP. Поэтому рекомендуется под-
программы обслуживания прерываний и исключений располагать в сегментах с уровнем привилегий DPL = 0, чтобы избежать ситуации, когда при поступлении запроса прерывания или исключения уровень текущей программы CPL окажется меньше, чем DPL сегмента команд обработчика прерывания.
При возникновении прерывания процессор сохраняет в стеке (рис. 2.60):
содержимое регистра SS прерванной процедуры (если имеет место изменение уровня привилегий);
содержимое регистра ESP прерванной процедуры (если имеет место изменение уровня привилегий);
содержимое регистра EFLAGS;
содержимое регистра CS;
содержимое регистра EIP
код ошибки (если он формируется для данного исключения).
После сохранения в стеке содержимого регистра EFLAGS процессор устанавливает в этом регистре значения признаков TF=VM=NT=0. Единственное различие между использованием шлюза ловушки и шлюза прерывания состоит в том, как процессор поступает с признаком IF. Если вызов подпрограммы обслуживания производится через шлюз прерывания, то процессор после сохранения в стеке содержимого регистра EFLAGS устанавливает значение признака IF = 0, запрещая маскируемые прерывания. Если переход к подпрограмме обслуживания осуществляется через шлюз ловушки, то значение признака IF не изменяется.
Возврат из подпрограммы обслуживания прерывания осуществляется с помощью команды IRET. При восстановлении из стека содержимого регистра EFLAGS действуют следующие правила:
поле IOPL восстанавливается, только если CPL = 0;
флаг IF изменяется, только если CPL J IOPLФормат дескриптора шлюза задачи при реализации прерываний и исключений имеет вид, представленный на рис. 2.54. Когда прерывание обрабатывается через шлюз задачи, то процессор выполняет обычную процедуру переключения задач.
При реализации некоторых исключений (табл. 2.60) процессор заносит в стек код ошибки, формат которого приведен на рис. 2.61.
Индекс селектора (биты 15-3) - указывает на дескриптор, использование которого вызвало исключение. Биты IDT, TI указывают на таблицу, в которой находится неверный дескриптор. Бит IDT = 1, если дескриптор находится в таблице IDT. При значении бита IDT = О размещение дескриптора определяется битом TI: если TI = 0, то дескриптор находится в таблице GDT, если TI = 1 — в таблице LDT. Бит ЕХТ = 1, если исключение вызвано не выполняемой программой, а внешним сигналом прерывания.
