- •Предисловие
- •Введение
- •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 (падающий фронт сигнала);
- •Любое изменение логического уровня сигнала.
Содержимого базового регистра евр (вр) или евх (вх);
Содержимого индексного регистра esi (si) или edi (di);
8-, 16- или 32-разрядного смещения d8, d16 или d32, заданного в одном, двух или четырех байтах поля DISP команды (см. рис. 2.11).
Disp команды (см. Рис. 2.11).
В зависимости от значения полей MOD и R/M для формирования ЕА используются все или часть этих слагаемых в соответствии с табл. 2.9, 2.10. В этих таблицах указаны также сегментные регистры (DS: и SS:), используемые для определения базовых адресов сегмента.
Если при формировании 32-разрядного адреса значение поля R/M = 100, то команда содержит дополнительный байт адресации SIB. В таком случае правила образования ЕА определяются табл. 2.11, где (1R*FJ — масштабированный индекс; IR - содержимое индексного регистра, который задается кодом INDEX; F - масштабный коэффициент, значение которого определяется кодом SS (табл. 2.12). В качестве индексного может использоваться любой из регистров общего назначения, кроме указателя стека Е8Р(табл. 2.13).
Разрядность обрабатываемых операндов и адресов определяется режимом работы процессора. Если программы выполняются в реальном режиме или режиме виртуального 8086, то по умолчанию используются 16-разрядные относительные адреса и операнды. При работе в защищенном режиме дескриптор сегмента исполняемой команды содержит бит D, который определяет принимаемую по умолчанию разрядность адресов и операндов: 16 при D = 0,32 при D = 1. Если команде предшествуют префиксы OS, AS, то при ее выполнении принятая по умолчанию разрядность операнда или адреса изменяется. В результате разрядность операндов и относительных адресов в защищенном режиме определяется в соответствии с табл. 2.14. Для реального режима и режима виртуального 8086 выбор разрядности определяется при значениях 0 = 0.
Процессор реализует ряд способов адресации операнда, набор которых обеспечивает эффективную работу с языками высокого уровня (Си, Фортран и др.).
Непосредственная адресация. В качестве операнда Imm используются один, два или четыре последних байта команды. Такой способ адресации реализуется при выполнении ряда команд пересылки (MOV, PUSH), арифметических операциях (ADD, ADC, SUB, SBB, CMP, IMUL) и логических операциях (AND, OR, XOR, TEST). Непосредственная адресация задается определенным значением кода ОРС, содержащегося в первом байте этих команд, или поля REG/OPC байта MODR/M. Разрядность используемых непосредственных данных (8, 16 или 32 разряда) зависит от режима работы процессора и может изменяться соответствующим префиксом.
Регистровая адресация. Операнд выбирается из регистра, определяемого полем R/M в байте MODR/M. Код, содержащийся в этом поле, задает выбираемый регистр в соответствии с табл. 2.6. Данный способ реализуется при задании в байте MODR/M значения поля MOD = 11.
Косвенно-регистровая адресация. Относительный адрес ЕА содержится в индексном (SI, Dl, ESI, EDI) или базовом (ВХ, ЕВХ) регистрах или регистрах общего назначения (ЕАХ, ЕСХ, EDX). Данный способ реализуется при значении поля MOD = 00 (см. табл. 2.9,2.10).
Прямая адресация. Относительный адрес операнда ЕА содержится в команде в виде смещения d16 или d32. Этот способ адресации реализуется при значениях полей R/M = 110 и MOD = 00, R/M = 110 (см. табл. 2.9) или R/M = 101 (см. табл. 2.10).
Базовая адресация. Относительный адрес ЕА формируется путем сложения содержимого базового регистра (ВХ, ВР) и смещения d8 или d16. Базовая адресация реализуется при MOD = 01 или 10 и значениях R/M = 110 или 111 (см. табл. 2.9).
Индексная адресация. Относительный адрес ЕА формируется путем сложения содержимого индексного регистра (SI, DI) и смещения d8 или d16. Для реализации этого способа задаются значения MOD = 01 или 10 и R/M = 100 или 101 (см. табл. 2.8). При формировании 32-разрядных адресов в качестве базового или индексного может использоваться любой из регистров: ЕАХ, ЕСХ, EDX, ЕВХ, EBP, ESI, EDI (см. табл. 2.9).
Базово-индексная адресация. Относительный адрес ЕА образуется путем сложения содержимого базового (ВХ, ВР) и сегментного регистров (SI, DI). Такой способ адресации операнда реализуется при значениях поля R/M = 000,001,010,011, если задано MOD = 00 (см. табл. 2.10).
Базово-индексная адресация со смещением. Это вариант базово-индексной адресации, при котором к относительному адресу ЕА дополнительно прибавляется смещение d8 или d 16. Данный способ адресации осуществляется при значениях поля MOD = 01 или 10 (см. табл. 2.8).
Дополнительные способы адресации реализуются при использовании 32-разрядных адресов, если задано значение R/M = 100 и команда содержит байт SIB. При этом поля INDEX и BASE определяют коды регистров, содержимое которых определяет индекс и базу для формирования адреса операнда (см. табл. 2.13).
Таблица 2.13
При коде INDEX =100 значение индекса принимается равным 0. В этом случае при MOD = 00 реализуется косвенно-регистровая или прямая (при BASE = 101) адресация, а при MOD = 01 или 10-базовая адресация. Регистр ЕВР выбирается в качестве базового при значениях MOD - 01 или 10; при MOD = 00 в качестве базы используется 32-разрядное смещение (d32), задаваемое в четырех следующих байтах команды. В качестве индексного может использоваться любой из 32-разрядных регистров общего назначения, кроме ESP (см. табл. 2.6). Содержимое этого регистра умножается на масштабный коэффициент F (см. табл. 2.12), т. е. сдвигается влево на число разрядов (0, 1, 3 или 4), задаваемое содержимым поля SS в байте SIB.
Таким образом, при введении байта SIB реализуются три дополнительных варианта индексной и базово-индексной адресации (см. табл. 2.11).
Индексная адресация с масштабированием. Относительный адрес образуется сложением масштабированного индекса (содержимого индексного регистра, умноженного на коэффициент F) и смещения d32. Этот способ осуществляется при MOD = 00 и значении поля BASE = 101.
Базово-индексная адресация с масштабированием. Относительный адрес образуется сложением масштабированного индекса и базы, в качестве которой используется содержимое одного из регистров: ЕАХ, ЕВХ, ЕСХ, EDX, ESP, ESI или EDI. Выбор базового регистра задается значением поля BASE при MOD = 00 (см. табл. 2.13).
Базово-индексная адресация со смещением и масштабированием. Относительный адрес формируется сложением масштабированного индекса, базы и смещения d8 или d32. Поле BASE задает выбор базового регистра (см. табл. 2.13), а поле MOD = 01 или 10 определяет разрядность смещения (см. табл. 2.11).
При описанных способах задается относительный адрес операнда в сегменте данных DS или стека SS (см. табл. 2.11).Для адресации операндов в других сегментах перед командой необходимо ввести префиксный байт SEG.
Относительная адресация. Используется при выполнении ряда команд управления (условные и безусловные переходы, вызовы подпрограмм, управление циклами), чтобы адресовать ячейку памяти, содержащую следующую команду. При этом способе адрес формируется как сумма содержимого регистра EIP, соответствующего текущей команде, и смещения d8, d16 или d32, определяющего положение следующей команды относительно текущей.