- •Предисловие
- •Введение
- •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 (падающий фронт сигнала);
- •Любое изменение логического уровня сигнала.
Cpl (текущий уровень привилегий);
Rpl (уровень привилегий источника обращений к сегменту) из селектора, используемый для спецификации сегмента назначения;
3)Dpl дескриптора сегмента назначения.
Команды могут загрузить сегментный регистр данных (и затем использовать целевой сегмент), лишь если DPL целевого сегмента численно больше или равен максимальному из значений CPL и RPL селектора. Другими словами, процедура может иметь доступ к данным того же самого или менее привилегированного уровня.
Разрешенная для адресации область задачи изменяется, когда изменяется CPL. Если CPL - нулевое, сегменты данных всех уровней привилегий доступны. Когда CPL = 1, доступны только данные с уровнями привилегий от 1 до 3. Когда CPL равно 3, доступны только сегменты данных с уровнем привилегий 3. Это свойство может быть использовано, например, чтобы предотвратить возможность чтения или изменения таблиц операционной системы прикладной программой.
Рис. 3.26. Проверка привилегий доступа к данным (CPL - текущий уровень привилегий; RPL—запрашиваемый уровень привилегий; DPL - уровень привилегий дескриптора)
Доступность данных в кодовых сегментах. Менее общий характер, чем использование сегментов данных, носит работа с данными, сохраняемыми в кодовых сегментах. Кодовые сегменты могут на совершенно законном основании содержать константы, нельзя только что-либо писать в кодовый сегмент. Возможны следующие варианты доступа к данным в кодовом сегменте:
Загрузить регистр сегмента данных селектором несогласованного, с разрешением чтения кодового сегмента;
Загрузить регистр сегмента данных селектором кодового сегмента, который является согласованным и разрешенным для чтения;
Использовать префикс переопределения cs, чтобы прочитать разрешенный для чтения кодовый сегмент, селектор которого уже загружен в cs регистр.
В 1-м случае используются те же самые правила доступа, как и для доступа к сегментам данных. Во 2-м случае доступ корректен, так как уровень привилегий согласованных сегментов , является, по существу, тем же самым, что и CPL независимо от DPL. В 3-м случае обращение I правильное, так как DPL кодового сегмента в CS является при переопределении равным CPL. |
Ограничения передач управления. Передачи управления осуществляются МП по командам JMP, CALL, INT и RET, а также при прерываниях и исключениях. В этой главе I обсуждаются передачи управления по командам JMP, CALL, и RET.
Так называемые «близкие» передачи управления по командам JMP, CALL, и RET предполагают передачи управления в пределах исполняемого (текущего) кодового сегмента, и поэтому проверяются только на границу сегмента. Процессор реализует только те передачи управления, которые не превышают границу исполняемого сегмента. Предел сегмента находится в скрытом CS-регистре, а потому проверка защиты для «близких» передач управления не требует дополнительных тактовых циклов.
Операнды так называемых «дальних» передач управления, осуществляемых по командам JMP и CALL, находятся в других сегментах. Возможны два варианта передач управления другому сегменту по командам JMP и CALL;
операнд команды - это дескриптор другого кодового сегмента;
операнд команды -это дескриптор вентиля вызова.
Векторизация передач управления через вентили вызова будет рассматриваться позднее. Рис. 3.27 показывает, что при проверке привилегий для передач управления, которые не используют вентиль вызова, контролируются два различных уровня привилегий:
1)CPL (текущий уровень привилегий);
2) DPL дескриптора вызываемого сегмента
Обычно CPL равен DPL сегмента, который в данный момент выполняет процессор, CPL может, однако, быть больше (по величине), чем DPL, если в дескрипторе выполняемого сегмента установлен бит согласования (С = 1).
Процессор разрешает обращения непосредственно к другому сегменту, если удовлетворяется одно из двух правил привилегий:
DPL целевого сегмента равен CPL
разряд согласования дескриптора целевого кодового сегмента установлен (С = 1), a DPL целевого сегмента меньше или равен CPL.
Кодовый сегмент, разряд согласования дескриптора которого установлен, называется согласованным сегментом.
Механизм согласования позволяет обращаться к процедурам из сегментов с разным уровнем привилегий и при этом выполнять их на уровне привилегий вызывающего сегмента. Примерами таких процедур являются различные библиотеки процедур и некоторые процедуры обработки исключений. Когда управление передается согласованному сегменту, CPL не изменяется, но это происходит лишь в случае неравенства CPL и DPL текущего кодового сегмента. Большинство кодовых сегментов не согласованы.
Основные правила привилегий, описанные выше, означают, что для несогласованных сегментов управление может быть передано без использования вентиля вызова лишь кодовым сегментам на том же уровне привилегий. Нужно, однако, передавать управление и сегментам с (численно) меньшим уровнем привилегий, это обеспечивается передачей управления по команде CALL через дескрипторы вентилей вызова. Команды JMP никогда не передают управление несогласованному сегменту, DPL которых не равен CPL.
Дескрипторы вентилей «охраняют» точки входа в процедуру. Для обеспечения защиты передач управления между исполняемыми сегментами с разными уровнями привилегий МП фирмы «Intel» используют дескрипторы вентилей (шлюзов). Существует четыре вида вентилей:
1) вызова;
2) ловушек;
3) прерываний,
4) задач.
В этой главе рассматриваются вентили вызова. Вентили задач используются для переключения задач. Вентили ловушек и вентили прерываний используются в механизмах прерываний и исключений. Рис. 3.28. иллюстрирует формат вентиля вызова.
Вентиль вызова может быть размещен в GDT или в LTD.
Вентиль вызова имеет две главные функции:
1) задать точку входа процедуры;
2) специфицировать уровень привилегий точки входа.
Дескрипторы вентиля вызова используются командами CALL и JMP подобно дескрипторам кодовых сегментов. В тех случаях, когда аппаратура распознает, что селектор назначения ссылается на дескриптор вентиля, выполнение команды расширяется для определения содержимого вентиля вызова.
Поля «Селектор» и «Сдвиг» вентиля обеспечивают формирование точки входа в процедуру. В целом же вентиль гарантирует, что все обращения к другому сегменту пройдут через правильную точку входа, даже, возможно, в середину процедуры (или даже в середину команды). Поле операнда команды передачи управления для «дальней» передачи задает не сегмент и не смещение целевой команды, а задает вентиль. На рис. 3.29 показан этот способ адресации.
На рис. 3.30. показано, что для проверки правильности передач управления через вентиль вызова используются 4 уровня привилегий:
1) CPL (текущий уровень привилегий);
RPL (запрашиваемый уровень привилегий) селектора, используемого для указания вентиля вызова;
DPL дескриптора вентиля;
DPL дескриптора кодового сегмента назначения.
Поле DPL дескриптора вентиля определяет, какие уровни привилегий может использовать вентиль. Кодовый сегмент может содержать несколько процедур, которые предполагается использовать на разных уровнях привилегий, например, ОС может содержать некоторые утилиты, которые могут использоваться прикладными программами, в то время как другие утилиты могут использоваться только системными программами.
Вентили позволяют передавать управление численно меньшим уровням привилегий или тому же самому уровню привилегий (хотя они и не нужны для передач тому же уровню привилегий). Использовать вентили вызова для передач управления (численно) меньшим уровням привилегий могут только команды CALL. JMP-команды предназначены для передач управления исполняемому сегменту с тем же самым уровнем привилегий для согласованного сегмента.
Для команд JMP в случае несогласованного сегмента должны быть выполнены два следующих правила привилегий (в противном случае механизм защиты вырабатывает исключение общей защиты):