- •Предисловие
- •Введение
- •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.2.1. Команды пересылки
Команды этой группы приведены в табл. 2.15. Значения признаков в регистр EFLAGS при выполнении команд пересылок не изменяются.
Таблица 2.15
Команда пересылки MOV имеет ряд модификаций, основная из которых MOV г/т,т, MOV т,г/т - выполняет передачу данных (регистр-регистр) или (регистр-память) между регистрами общего назначения и ячейками памяти. Модификация MOV A,m, MOV т,А, которая реализует загрузку или сохранение в памяти содержимого аккумулятора, имеет сокращенный формат (отсутствуют байты адресации MODR/M, SIB). При этом в команде задается относительный 16- или 32-разрядный адрес операнда d16 или d32 в адресуемом сегменте данных, т. е. используется только прямая адресация памяти. Модификация MOV r/m,im производит запись в регистр или ячейку памяти непосредственно заданного операнда. Пересылки с участием управляющих регистров CR4-CRO или регистров отладки DR7-DRO (команды MOV CRi,r, MOV r.CRi, MOV DRi.r, MOV r.DRi) выполняются только в защищенном режиме программами, имеющими высший уровень привилегии 0. Они не реализуются в режиме виртуального 8086. В качестве регистра /-должен использоваться один из 32-разрядных регистров общего назначения.
В процессорах семейства Р6 введены команды условной пересылки CMOVcc. Эти команды производят передачу данных только в случае выполнения определенного условия (ее), которое задается различными значениями признаков, установленных в регистре EFLAGS. Вид проверяемого условия указывается с помощью суффикса ее, вводимого в мнемокод команды: например, CMOVZ - пересылка, если значение признака ZF = 1. Виды условий и соответствующие суффиксы се в командах CMOVcc аналогичны используемым в командах условных переходов Jcc, которые рассмотрены в п. 2.3.1 (см. табл. 2.22).
Две модификации команды XCHG обеспечивают обмен содержимым (регистр-регистр или регистр-память). В обмене могут участвовать только регистры общего назначения.
Модификация XCHG A,r, реализующая обмен (аккумулятор-регистр), имеет сокращенный формат команды (без байтов адресации MODR/M, SIB).
Команды PUSH, POP производят запись в стек или извлечение из стека 16- или 32-разрядных операндов. В стек может быть загружено содержимое регистра, ячейки памяти или непосредственный операнд im. При извлечении из стека данные могут поступать в регистр общего назначения, ячейку памяти или указанный в команде сегментный регистр sreg. Адресация стека производится с помощью регистра ESP (или SP), который содержит относительный адрес последней заполненной ячейки памяти в сегменте стека SS. При выполнении команды PUSH содержимое ESP (или SP) уменьшается на 4 (или на 2), адресуя выше расположенную (незаполненную) ячейку стека, которая становится его новой вершиной. Эта ячейка затем заполняется поступающими данными. При выполнении команды POP производится выборка данных из ячейки стека, адресуемой содержимым регистра ESP (или SP). После выборки содержимое этого регистра увеличивается на 4 (или 2), адресуя ниже расположенную заполненную ячейку стека, которая становится его новой вершиной.
Команды PUSHA, PUSHAD и РОРА, POPAD выполняют запись в стек и извлечение из него всех восьми регистров общего назначения. При этом последовательно заполняются или освобождаются восемь 16- или 32-разрядных ячеек стека. Соответственно содержимое регистра ESP (или SP) уменьшается или увеличивается на 32 (9 или 16). Команды PUSHA, РОРА оперируют с 16-разрядными регистрами АХ, СХ, DX, BX, SP, BP, SI, DI, команды PUSHAD, POPAD-с 32-разрядными регистрами ЕАХ, ЕСХ, EDX, EBX, ESP, EBP, ESI, EDI.
При выполнении команд ввода-вывода IN, OUT производится пересылка данных между аккумулятором ЕАХ (АХ или AL) и адресуемым портом. Адрес порта может задаваться непосредственно операндом im8 (фиксированный порт) или содержимым регистра DX (изменяемый порт). При работе процессора с 8-разрядными портами возможно обращение к 256 портам, адреса которых фиксированы в программе, или к 65536 портам, адреса которых могут изменяться путем перезагрузки содержимого регистра DX. При работе с 16-разрядными портами число адресуемых портов уменьшается вдвое, а их нумерация (адресация) должна производиться четными числами: 0, 2,4...254 -для фиксированных портов; 0,2,4...65532,65534-для изменяемых портов. Соответственно для 32-разрядных портов их число сокращается еще вдвое, а нумерация производится числами, кратными четырем: 0,4, 8,...248, 252,...65528, 655332. Таким образом, номера портов должны быть выравнены по границам передаваемых данных согласно их разрядности: 1,2 или 4 байта. В этом случае пересылка осуществляется за один цикл. Если заданный в команде номер 16- или 32-разрядного порта имеет невыравненное значение, например ОЗп, то для передачи данных требуется дополнительный цикл. Отметим, что номера портов от OOFSh до OOFFh зарезервированы фирмой «Intel» для внутреннего использования. Во избежание возможных сбоев в работе системы применение этих номеров программистами должно быть исключено.
Выполнение команд IN, OUT в защищенном режиме зависит от значений уровня привилегии текущей программы CPL и уровня привилегии ввода-вывода IOPL, задаваемого соответствующим полем регистра EFLAGS. При CPL < IOPL команда выполняется. При CPL > IOPL эта возможность обращения к адресованному порту проверяется по битовой карте ввода-вывода (БКВВ), содержащейся в сегменте состояния выполняемой задачи TSS. Если БКВВ разрешает обращение к данному порту, то команда IN, OUT выполняется, если не разрешает, то реализуется прерывание типа #GP «нарушение защиты». При работе процессора в режиме виртуального 8086 проверка допустимости обращения к заданному порту производится с помощью БКВВ при любых значениях CPL, IOPL.
Команды MOVSX, MOVZX осуществляют пересылку в регистр общего назначения содержимого другого регистра или ячейки памяти с одновременным расширением разрядности операнда.
При этом производится либо преобразование байта в слово (реальный режим и режим виртуального 8086) или двойное слово (защищенный режим), либо слово преобразуется в двойное слово (защищенный режим). При выполнении команды MOVSX расширение производится путем заполнения старшего байта или слова значением знака (старшего разряда), при выполнении команды MOVZX - заполнением нулями.
Команда BSWAP осуществляет перестановку байтов в заданном 32-разрядном регистре. При этом попарно меняются местами старший и младший байты (байт 3 и байт 0) и промежуточные байты (байт 1 и байт 2), т. е. порядок следования байтов меняется справа налево. Численные значения байтов сохраняются.
Команды XLAT, XLATB заменяют содержимое младшего байта аккумулятора AL на байт, хранящийся в 256-байтовой таблице, начальный (базовый) адрес которой содержится в регистре ЕВХ (или ВХ в реальном режиме или режиме виртуального 8086). При этом содержимое AL (беззнаковое число) используется как относительный адрес (индекс) выбираемого в таблице байта. Выполнение команд XLAT, XLATB иллюстрируется на рис. 2.13. Эти команды служат для табличного преобразования одного кода в другой. Отметим, что команда XLATB всегда реализует обращение к таблице, размещенной в сегменте данных DS. Команда XLAT позволяет обращаться к таблицам в различных сегментах данных путем задания соответствующего адреса операнда. Например, обращение к таблице в сегменте ES реализуется с помощью команды XLAT ES:[EBX].
При выполнении команд LEA, LDS, LES, LFS, LGS, LSS операнд-источник <src> всегда размещается в памяти, операнд-приемник <dst> - в регистре общего назначения.
Команда LEA производит вычисление эффективного адреса ЕА операнда-источника и загружает его в указанный регистр.
Команды LDS, LES, LFS, LGS, LSS производят извлечение из памяти и запись в регистры процессора указателя адреса, который состоит из 16-разрядного селектора, поступающего в соответствующий сегментный регистр DS, ES, FS, GS, SS, и 16- или 32-разрядного относительного адреса операнда, поступающего в заданный регистр общего назначения. Разрядность адреса определяется режимом работы процессора: 16 - в реальном режиме и режиме виртуального 8086,32 - в защищенном режиме. Соответственно из памяти выбираются 4 или 6 байт, начиная с адреса, указанного в поле операндов команды. С помощью этих команд реализуется переключение программы с одного сегмента данных на другой. Например, команда LSS при заданном регистре-приемнике ESP позволяет перейти к новому сегменту стека.