- •Предисловие
- •Введение
- •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.7.5. Реализация режима виртуального 8086 (v86)
Процессоры Р6, как и более младшие модели 386, 486, Pentium, могут выполнять в защищенном режиме все программы, написанные для микропроцессора 8086, обеспечивая при этом ряд средств защиты и возможность страничной организации памяти. Такой вариант защищенного режима называется режимом виртуального процессора 8086 (сокращенно V86) и реализуется при установке в регистре EFLAGS значения признака VM = 1. Таким образом, в режиме V86 микропроцессор работает как виртуальный процессор, состоящий из аппаратных средств процессора Р6, прикладного программного обеспечения, написанного для 8086, и системного программного обеспечения (монитор V86).
Все программы, выполняемые в режиме V86, имеют низший уровень привилегий: CPL = 3. Этим режим V86 отличается от реального режима, при котором всем программам предоставляется высший уровень привилегий: CPL = 0. При формировании линейного адреса в режиме V86 не используются дескрипторы, поэтому правила доступа к сегментам в соответствии с уровнем привилегий в этом режиме не выполняются. В режиме V86 используются следующие способы защиты.
В режиме V86 не осуществляется защита сегментов. Если используется страничная организация памяти, то ее защита при нарушении правил доступа к странице реализуется путем исключения типа #PF («ошибка обращения к странице»).
Поступление команд, которые выполняются в защищенном режиме только при уровне CPL = 0, в режиме V86 вызывает исключение типа #GP («нарушение защиты»). Это команды LIDT, LGDT, LMSW, CLTS, HLT, а также MOV для регистров управления, тестирования и отладки.
Поступление команд, выполняемых только в защищенном режиме, вызывает в режиме V86 исключение типа #UD («неразрешенный код команды»). Это команды LLDT, SLOT, LTR,STR, LAR, LSL, ARPL.VERR, VERW.
Команды PUSHF, POPF, CLI, STI, INT и IRET в режиме V86 чувствительны к значению поля IOPL в EFLAGS. Они выполняются только при IOPL = 3, в противном случае реализуется исключение типа #GP. Отметим, что команды INTO, INT3, ROUND в режиме V86(и вообще в защищенном режиме) выполняются независимо от значения поля IOPL.
Выполнение команд ввода/вывода IN, OUT, INS, OUTS в режиме V86 не зависит от значения поля IOPL (отличие от защищенного режима). Однако при вызове в режиме V86 задачи, имеющей БКВВ в сегменте TSS, данные команды учитывают значение битов разрешения для соответствующих портов. При обращении к порту, для которого в БКВВ бит разрешения установлен в «1», реализуется исключение типа #GP.
С учетом указанных выше особенностей процессор в режиме V86 выполняет весь набор команд, включая битовые операции, операции над числами с плавающей точкой и ряд других, не реализуемых микропроцессором 8086. Допускается использование всех регистров процессора Р6, включая сегментные регистры FS, GS.
По умолчанию в режиме V86 используются 16-разрядные регистры и исполнительные адреса. С помощью префиксов размера можно производить обработку 32-разрядных операндов и формировать 32-разрядные адреса. Однако значение полученного физического адреса в режиме V86 не должно превышать 65535, в противном случае возникает исключение типа #GP.
При работе в режиме V86 процессор формирует 20-разрядный линейный адрес таким же способом, как в реальном режиме. Если при этом бит страничной адресации в регистре управления CR3 имеет значение PG = 1, то используется страничная организация памяти. В этом случае адресуемая в режиме V86 память объемом 1 Мбайт делится на 256 страниц по 4 Кбайта. Младшие 12 разрядов линейного адреса выбирают адресуемый байт в кадре страницы, а старшие 8 разрядов определяют с помощью таблицы страниц базовый адрес страницы. Каталог разделов в режиме V86 не используется, и базовый адрес таблицы страниц задается содержимым регистра CR3. Отдельные страницы могут быть размещены в любом месте адресного пространства, имеющего объем 4 Гбайта. Каждая задача в режиме V86 может использовать свои варианты размещения страниц, так как при переключении задач загружается заново содержимое регистра управления CR3, определяющее базовый адрес таблицы страниц. При использовании страничной организации памяти в режиме V86 реализуются соответствующие способы защиты страниц.
Способ обработки исключений (прерываний) в режиме V86 определяется значением бита VME в регистре управления CR4 (см. рис. 2.7, в). При значении VME = 0 обработка исключений производится в защищенном режиме, если в регистре EFLAGS поле IOPL - 3. Если IOPL < 3, то реализуется исключение типа #GP. При значении VME= 1 способ обработки программных прерываний, реализуемых при поступлении команды INTn, зависит от значения соответствующего бита в таблице, располагаемой в сегменте TSS решаемой задачи. Если этот бит равен «О», и в регистре EFLAGS значение поля IOPL = 3, то прерывание обслуживается как в процессоре 8086:
в стек последовательно загружается содержимое регистра EFLAGS, в котором устанавливаются значения бита N1 = 0 и поля IOPL = 0, регистров CS, IP (младшие 16 разрядов содержимого EIP);
в регистре EFLAGS устанавливаются значения битов IF = TF = 0;
из таблицы прерываний, расположенной в начале адресуемой памяти (начиная с адреса OOOOOOOOOOh), загружается вектор соответствующего прерывания - новое одержимое CS и I Р.
Если бит в таблице обслуживания прерываний TSS равен «1», то обработка прерывания производится в защищенном режиме.
Если при VME = 1 значение поля IOPL < 3, то при обслуживании исключений используется механизм виртуальных прерываний.
Вход процессора в режим виртуального 8086 можно осуществить в защищенном режиме двумя способами.
1Переключение на выполнение задач, которая имеет в TSS поле EFLAGS с установленным битом VM = 1. При этом новая задача будет выполнять команды процессоров 8086 и Р6 и формировать базовые адреса, как 8086. Отметим, что переключение на задачу микропроцессора 80286 не может вызвать переход в режим V86, так как при этом из TSS загружается только 16 младших разрядов поля EFLAGS, в которые не входит бит VM.
2. Поступление команды IRET в ходе выполнения программы, которая имеет высший уровень привилегий CPL = 0, если в загружаемом при этом из стека содержимом регистра EFLAGS установлено значение бита VM=1. При других уровнях привилегий команда IRET не будет изменять значения VM, т. е. переход в режим V86 не реализуется.
Выход процессора из режима V86 может произойти только при обработке прерываний или исключений. При этом возможны два варианта
1. В результате прерывания происходит переход на процедуру с высшим уровнем привилегий, т. е. устанавливается CPL = 0. При этом текущее состояние регистра EFLAGS заносится в стек, а бит VM сбрасывается в нуль. Таким образом, вызванная процедура будет выполняться в защищенном режиме. Если вызванная процедура имеет более низкий уровень привилегий (CPL > 0), то происходит исключение типа #GP. 2. Прерывание вызывает переключение задачи. При этом в TSS старой задачи, выполнявшейся в режиме V86, заносится текущее содержание регистров, в том числе EFLAGS с установленным битом VM = 1. Таким образом, имеется возможность вернуться к выполнению этой задачи в режиме V86. Если загружаемый при переключении задач новый TSS является сегментом 32-разрядного процессора (386,486, Pentium или Р6) со значением бита VM=0 в поле EFLAGS, то признак VM в режиме EFLAGS сбрасывается в нуль, и процессор будет выполнять новую задачу в защищенном режиме.
Отметим, что команда POPF не изменяет значение флага VM, даже если она выполняется в защищенном режиме с наивысшим уровнем привилегий (CPL = 0). Эта команда не обеспечивает переход процессора в режим V86.
Таким образом, процессоры семейства Р6 в режиме V86 могут не только выполнять с более высокой производительностью программы, написанные для 8086, но и реализовывать новые прикладные программы, эффективно использующие расширенные возможности этого семейства. Следует отметить, что процессоры Р6 требуют для выполнения команд значительно меньше машинных тактов, чем 8086. Поэтому при реализации программных задержек на этих процессорах могут возникнуть значительные расхождения во времени по сравнению с реализацией на 8086.