- •Предисловие
- •Введение
- •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.3.4. Команды управления процессором
Команда LMSW загружает из памяти или регистра слово состояния машины MSW в младшие 16 разрядов регистра управления CRO. Так как младший бит MSW управляет включением защиты, то данная команда используется для перехода в защищенный режим. Команда SMSW пересылает содержимое 16 младших разрядов CRO в регистр или ячейку памяти, заданные в команде.
Команда NOP («пустая» команда), не вызывающая выполнения каких-либо операций, служит для реализации программных задержек или заполнения пропусков, образовавшихся в программе. Команда HLT прекращает выполнение программы и переводит процессор в состояние останова, выход из которого происходит при поступлении сигналов прерывания или перезапуска (Reset).
Отметим, что команды HLT и LMSW выполняются только при наиболее высоком уровне привилегий программы: CPL = 0. При всех других значениях CPL эти команды вызывают прерывание с номером Ne= 13(#GP- нарушение защиты).
Команда CPUID позволяет получить информацию о типе процессора, используемом в данной системе. Эта информация вводится после выполнения данной команды в регистры ЕАХ, ЕВХ, ЕСХ, EDX и может быть считана пользователем или операционной системой. Содержание этой информации зависит от содержимого ЕАХ, которое предварительно записывается в этот регистр.
Если предварительное содержимое ЕАХ = 0, то после выполнения команды CPUID в этом регистре будет установлено значение ЕАХ = 2 (идентификатор семейства Р6). В регистрах EBX:ECX:EDX будет записано «Genuinelntel» («Настоящий Интел») в коде ASCII (один символ в каждом байте), что указывает на производство данного процессора 999 на заводах компании «Intel».
Если предварительное содержимое ЕАХ = 1, то в регистрах ЕАХ, EDX будет содержаться информация о типе и модели процессора, о реализуемых процессором режимах и функциональных возможностях (регистры ЕВХ.ЕСХ при этом не используются). Формат содержимого регистров ЕАХ, EDX после выполнения команды CPUID представлен для этого случая на рис. 2.15.
Регистр ЕАХ(рис. 2.15, а) содержит поля, указывающие тип (Туре), семейство (Family) и модель (Model) процессора, которые для процессоров семейства Р6 имеют следующие значения: Туре = 00, Family = 0110, Model = 0001. Регистр EDX (рис. 2.15, б) содержит биты, единичное значение которых определяет следующие характеристики процессора:
FPU -указывает на наличие блока обработки чисел с плавающей точкой FPU;
VME - процессор реализует режим виртуального 8086, используя биты VME, PVI в регистре CRO и биты VIF, VIP в регистре EFLASGS;
DE - процессор поддерживает отладку с установкой контрольных точек, используя бит DE в регистре CRO и регистры отладки DR4, DR5;
PSE -процессор обеспечивает возможность использования страниц объемом 4 Мбайт при установке значения бита PSE = 1 в регистре CRO;
TSC - процессор содержит счетчик времени TSC, чтение содержимого которого производится командой RDTSC;
MSR - процессор содержит модельно-специфические регистры MSR, чтение и запись содержимого которых производится командами RDMSR, WRMSR;
РАЕ - реализуется 36-разрядная адресация памяти, если в регистре CR4 установлено значение бита РАЕ = 1;
МСЕ - процессор реализует прерывание машинного контроля #МС, если в регистре CR4 установлено значение бита МСЕ = 1;
СХ8 - процессор выполняет команду CMPXCHG8B;
APIC - процессор содержит усовершенствованный программируемый контроллер прерываний APIC (Advanced Programmable Interrupt Controller);
SEP - процессор реализует быстрое обращение к системным процедурам с помощью команд SYSENTER, SYSEXIT;
MTTR - процессор обеспечивает использование модельно-специфических регистров MTTR, реализующих обращение к разделам памяти с различными характеристиками;
PGE - процессор использует бит глобальности G при страничной адресации, если в регистре CR4 установлено значение бита РСЕ = 1;
МСА - процессор обеспечивает использование MSR-регистра MCG_CAP, используемого при контроле ошибок;
CMOV - процессор выполняет команды условной пересылки CMOVcc, а также (если значение бита FPU - 1) команд FCMOVcc и FCOMI;
PAT - процессор поддерживает таблицу атрибутов страниц, позволяя операционной системе задавать определенные атрибуты для каждой страницы;
PSE36 - процессор обеспечивает работу со страницами размером 4 Мбайт при 36-разрядной шине адреса;
PN - процессор имеет 96-разрядный идентификационный номер, к которому обеспечен внешний доступ (чтение):
ММХ - процессор выполняет набор ММХ - команд; ' -"».—« - г--,^,^,,«.,.*.*•, FXSR - процессор выполняет команды FXSAVE, FXRSTOR, используемые для записи в память и последующего восстановления содержимого регистров FPU, MMX, SSE;
ХММ - процессор выполняет набор SSE-команд (SIMD-команды с плавающей точкой.
Если предварительное содержимое регистра ЕАХ = 2, то после выполнения команды CPUID в регистрах ЕАХ, ЕВХ, ЕСХ, EDX будет размещаться информация о характеристиках используемой процессором кэш-памяти 1-го и 2-го уровней, а также о характеристиках буферной памяти TLB, используемой для страничной трансляции адреса. Например, для процессора Pentium Pro содержимое этих регистров будет следующим: ЕАХ = 03020101 h, ЕВХ = OOh, ЕСХ = OOh, EDX = 06040A42h. Каждый байт содержимого регистров является дескриптором, указывающим характеристики определенного вида внутренней памяти. В регистре ЕАХ байт 0 указывает число команд CPUID, которое надо выполнить, чтобы получить полную информацию о внутренней памяти процессора (для семейства Р6 - одна команда, byteO = 01 h), байт 1 определяет характеристики TLB, транслирующего адреса команд при использовании страниц по 4 Кбайт (кэш-память, организованная в виде 8 наборов по 4 строки, дескриптор bytel = 01 h), байт 2 - характеристики TLB команд при использовании страниц по 4 Мбайт (кэш-память, организованная в виде 1 набора из 2 строк, дескриптор byte2 = 02h), байт 3 - характеристики TLB, транслирующего адреса данных при использовании страниц по 4 Кбайт (кэш-память, организованная в виде 16 наборов по 4 строки, дескриптор byteS = 03h). Дескрипторы в регистре EDX имеют следующее назначение: байт 0 указывает характеристики общей кэш-памяти 2-го уровня (кэш-память команд и данных емкостью 256 Кбайт, наборы по 4 строки длиной 32 байт, дескриптор byteO=42h), байт 1 - характеристики кэш-памяти данных 1-го уровня (8 Кбайт, наборы по 2 строки длиной 32 байт, дескриптор bytel =OAh), байт 2 - характеристики TLB данных при использовании страниц по 4 Мбайт (кэш-память, организованная в виде 2 наборов по 4 строки, дескриптор byte2 = 04п), байт 3 - характеристики кэш-памяти команд 1 -го уровня (8 Кбайт, наборы по 4 строки длиной 32 байт, дескриптор byteS = 06h). Регистры ЕВХ, ЕСХ при идентификации семейства Р6 не используются (содержат нулевые дескрипторы).
Команды INVD, WBINVD, INVLPG служат для управления кэш-памятью. Они являются привилегированными, т. е. выполняются только программами с максимальным уровнем приоритета CPL = 0.
Команды INVD, WBINVD аннулируют содержимое всех ячеек (строк) внутренней кэш-памяти данных и кэш-памяти 2-го уровня, запрещая запись/считывание ее содержимого. При обращениях к памяти после этих команд осуществляется заполнение строк кэш-памяти новым содержимым из основной памяти. Отличие этих команд состоит в том, что при выполнении команды WBINVD производится обратная запись из внутренней кэш-памяти в основную память содержимого тех ячеек (строк), в которые производилась запись информации (модификация).
Команда INVLPG аннулирует (делает недействительным) содержимое строки в буфере трансляции страничных адресов TLB, где содержится базовый адрес страницы, на которой располагается адресуемая ячейка памяти (ml 6 или т32). В этом случае при последующем обращении к данной странице выполняется процедура трансляции адреса с помощью хранящихся в основной памяти таблиц, в которых записаны базовые адреса разделов и страниц.
Команда RSM возвращает процессор из режима системного управления SMM к выполнению программы, которая была прервана поступлением внешнего запроса SMI#. При этом восстанавливается содержимое регистра процессора, которое было сохранено в памяти при поступлении этого запроса.
Команды RDMSR, WRMSR позволяют загрузить содержимое одного из 64-разрядных модельно-специфических регистров MSR в пару регистров EDX:EAX или записать содержимое этой пары регистров в MSR. Выбор регистра MSR определяется его кодом, который предварительно заносится в регистр ЕСХ. Эти команды выполняются в реальном режиме или защищенном режиме при максимальном уровне привилегии программы CPL = 0. В других случаях попытка их выполнения вызовет исключение типа #GP («нарушение защиты»).
Команда RDPMC производит загрузку в пару регистров EDX:EAX содержимого одного из двух 64-разрядных счетчиков, используемых для мониторинга производительности процессора. Эти счетчики входят в состав модельно-специфических регистров процессора. Номер считываемого счетчика - 0 или 1 - задается содержимым регистра ЕСХ. Если в регистре управления CR4 установлено значение бита РСЕ = 1, то выполнение этой команды производится при любом уровне привилегии текущей программы. Если значение РСЕ = 0, то команда RDPMC выполняется только программой с уровнем привилегии CPL = 0, а при других значениях CPL будет реализовано исключение типа #GP («нарушение защиты»).
Команда RDTSC загружает в пару регистров EDX:EAX содержимое счетчика текущего времени TSC (Time-Stamp Counter), который также является одним из модельно-специфических регистров MSR. Счетчик TSC переключается в каждом такте работы процессора и сбрасывается в ноль при его перезапуске (reset). Выполнение этой команды производится при любом уровне привилегии текущей программы, если в регистре управления CR4 установлено значение бита TSD = 0. При TSD = 1 команда выполняется только программой с уровнем привилегии CPL = 0, в противном случае реализуется исключение #GP.