- •Предисловие
- •Введение
- •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 (падающий фронт сигнала);
- •Любое изменение логического уровня сигнала.
Команды преобразования
PACKSS [WB, DW] -Упаковка со знаковым насыщением PACKUSWB - Упаковка с беззнаковым насыщением PUNPCKH [BW, WD, DQ] - Распаковка из старших половин PUNPCKL [BW, WD, DQ] - Распаковка из младших половин PSHUFW- Переупорядочивание слов
Арифметические команды
PADD [B, W, D]-Сложение с циклическим переносом
PSUB [B, W, D] - Вычитание с циклическим переносом
PADDS [B, W] - Знаковое сложение с насыщением
PSUBS [B, W]- Знаковое вычитание с насыщением
PADDUS [B, W] - Беззнаковое сложение с насыщением
PSUBUS [B, W] - Беззнаковое вычитание с насыщением
PMULHW - Знаковое умножение с сохранением старшей половины результата PMULLW - Знаковое умножение с сохранением младшей половины результата PMULHUW- Беззнаковое умножение с сохранением старшей половины результата PMADDWD - Знаковое умножение с накоплением
PSADBW- Сложение абсолютных разностей байтов
PAVG[B,W]*- Нахождение среднего значения
Команды нахождения максимума и минимума
PMAXSW- Нахождение большего значения (знаковые слова)
PMAXUB'- Нахождение большего значения (беззнаковые байты) PMINSW- Нахождение меньшего значения (знаковые слова)
Inub'- Нахождение меньшего значения (беззнаковые байты) Команды сравнения
PCMPEQ [B, W, D] - Сравнение на равенство
PCMPGT [B, W, D]-Сравнение на большее значение
Команды логических операций
PAND - Логическое И
PANDN-Логическое НЕ-И
POR- Логическое ИЛИ PXOR - Исключающее ИЛИ
Команды сдвига
PSLL [W, D, Q] -Логический сдвиг влево
PSRL [W, D, Q]-Логический сдвиг вправо
PSRA [W, D] - Арифметический сдвиг вправо
При выполнении ММХ-команд процессор использует для хранения операндов восемь арифметических регистров R7-0 блока FPU (см. рис. 2.4), реализующего обработку чисел с плавающей точкой. В этом случае арифметические регистры получают обозначения ММ7-0. Так как ММХ-команды обрабатывают 64-разрядные операнды, то ММХ-регистры имеют разрядность 64 бит, используя только 64 младших разряда в 80-разрядных регистрах FPU (см. рис. 2.22).
2.5.1. Форматы представления данных и выполнение операций
Почти все мнемокоды ММХ-команд начинаются с префикса Р (Packed), которые указывает, что технология ММХ имеет дело с упакованными данными. За префиксом следует полное или сокращенное название выполняемой операции, например, OR, CMP, SUB. После названия операции может стоять несколько суффиксов, имеющих следующее значение:
US (Unsigned Saturation) - беззнаковое насыщение;
S (Signed saturation) - знаковое насыщение;
В, W, D, Q (Byte, Word, Doubleword, Quadword)- формат используемых упакованных данных.
Если при выполнении ММХ-команды используется арифметика с насыщением, особенности которой описаны ниже в данном разделе, то в мнемокоде сначала указывается суффикс US или S, определяющий вид насыщения (беззнаковое или знаковое). Мнемокоды команд, не использующих принцип насыщения, не содержат этот суффикс. Далее в мнемокоде указывается суффикс, определяющий формат обрабатываемых данных. Команды, использующие различные форматы для представления исходных данных и результата, содержат два суффикса, определяющие формат: первый задает формат результата, а второй -формат исходных данных. Например, в команде PACKUSWB название операции задается мнемокодом PACK (упаковка), первый суффикс US указывает на то, что применяется беззнаковое насыщение, следующий суффикс ^определяет формат результата в виде упакованных байтов, а последний суффикс S - формат исходных данных в виде упакованных слов.
Рис. 2.21. Формат ММХ-команд
ММХ-команды поддерживают все способы адресации, реализуемые с использованием байтов MODR/M и S\B. Формат ММХ-команды показан на рис. 2.21. Любая ММХ команда начинается с байта OFh, затем идет второй байт кода операции OpCode. Для указания используемых в команде ММХ-регистров в байте MODR/M в полях REG и R/M (при MOD = 11, регистровая адресация) указываются номера используемых ММХ-регистров mmxreg. Присутствие байтов SIB, смещения DISP и непосредственного операнда IMM зависит от выбранного способа адресации. Следует отметить, что ММХ-регистры не могут служить для формирования адреса.
Для команд пересылки операнд-приемник и операнд-источник могут располагаться в памяти, регистре общего назначения или ММХ-регистре. Для остальных команд операнд-приемник всегда находится в ММХ-регистре, а операнд источник может находиться в памяти, ММХ-регистре или являться непосредственным операндом.
Если ММХ-команда использует операнды, размещенные в памяти, то перед ней могут присутствовать префиксы замены сегмента SEG и разрядности адреса AS. Префиксы разрядности операнда OS и повторения REP, REPE/REPNE, предшествующие ММХ-команде, игнорируются процессором. Наличие перед ММХ-командой префикса блокировки шины LOCK вызовет исключение типа #UD («недействительный код операции»).
При ошибках обращения к памяти ММХ-команды генерируют исключения #SS, #GP, #PF или #АС, как и остальные команды. Попытка выполнить ММХ-команду, когда в регистре управления CRO установлено значение бита ЕМ = 1, приводит к исключению типа #UD. Эмуляция ММХ-команд невозможна. Попытка выполнить ММХ-команду, когда в регистре управления CRO бит TS= 1, приводит к исключению типа #NM («устройство недоступно»). Если при обработке исключения FPU встретится ММХ-команда, то это приведет к исключению типа #MF и/или FERR#.
ММХ-команды могут выполняться в любом режиме работы процессора: реальном, защищенном и виртуального 8086.
ММХ-регистры (рис. 2.22) имеют разрядность 64 бита и отображены на поля мантиссы арифметических регистров блока FPU (см. рис. 2.4). При записи нового значения в ММХ-регистр это значение автоматически появляется в поле мантиссы (биты 63-0) соответствующего регистра FPU. При этом в поле порядка (биты 78-64) и знаковый бит (бит 79) записываются единицы. После выполнения любой ММХ-команды в поле ТОР регистра FPSR (см. рис. 2.5), указывающем вершину арифметического стека, записывается значение 000. Любая ММХ-команда (кроме EMMS) заносит во все поля регистра тегов TW значение 00. Для блока FPU это означает, что во всех регистрах находятся допустимые ненулевые числа (все регистры заняты). Команда EMMS устанавливает значения всех полей регистра тегов в 11 (для блока FPU это означает, что все арифметические регистры пусты). Значение регистра TW, содержащего теги, не оказывает никакого влияния на выполнение ММХ-команд. При выполнении ММХ-команд содержимое регистров FPU устанавливается в соответствии с табл. 2.39.
Элементами обрабатываемых данных являются соответственно байты, 16-разрядные слова, 32-разрядные двойные слова или 64-разрядные счетверенные слова. При обработке упакованных данных с помощью ММХ-команд одновременно (параллельно) выполняется одна и та же операция над всеми элементами заданного формата, каждый из которых представляет отдельное число (данные). Например, при помощи одной команды можно сложить элементы, хранящиеся в одном ММХ-регистре с элементами в другом ММХ-регистре, получив восемь отдельных результатов (сумм) в виде упакованных байтов. Одновременно можно обработать либо восемь байт, либо четыре слова, либо два двойных слова, либо одно счетверенное слово. Таким образом, реализуется принцип SMD-обработки: одновременное выполнение одной команды над многими данными (до восьми 8-разрядных элементов). В памяти упакованные данные располагаются так, как это принято в Intel-архитектуре, т. е. младший байт размещается первым - по младшему адресу (рис. 2.24).
Ряд ММХ-команд используют арифметику с насыщением (saturation arithmetic). Если произошло переполнение, то в арифметике с насыщением результатом операции будет ближайшее к полученному значению число, которое умещается в формате, определенном для результата. Таким образом, результат как бы «насыщается» до максимально возможного значения. Например, результатом сложения двух байтов без знака B8h (184) и E1h (225), при использовании арифметики с насыщением, будет байт FFh (255) (рис. 2.25,а). Если сложить байты со знаком 90h (- 112) и E1h (- 31), то результатом сложения с насыщением будет байт 80h (- 128) (рис. 2.25,6).
Арифметика с насыщением различает знаковые и беззнаковые операнды - от этого зависят пределы насыщения (табл. 2.40). Если результат операции не выходит за пределы насыщения, то арифметика с насыщением дает тот же результат, что и обычная арифметика.
Ряд ММХ-команд выполняет операции обычной арифметики с циклическим переносом (wraparound arithmetic). Мнемокоды таких команд не имеют суффикса S или US.
ММХ-команды не изменяют содержимое регистра EFLAGS. При этом переполнение разрядной сетки, возникающее при операциях с упакованными данными, нигде не фиксируется и не вызывает обработки исключения.