- •Предисловие
- •Введение
- •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.4. Команды битовых и байтовых операций
Команды данной группы приведены в табл. 2.19.
Команды битовых операций ВТ, BTS, BTR, ВТС выбирают из регистра или ячейки памяти значение определенного бита и копируют его в признак CF. Номер бита п задается пятью или четырьмя младшими разрядами содержимого регистра г или непосредственного операнда \т8 (в зависимости от разрядности обрабатываемого слова r/m32 или г/т 16). При выполнении команды ВТ значение выбранного бита в исходном 16- или 32-разрядном слове остается неизменным; при выполнении BTS значение этого бита устанавливается в 1; при выполнении BTR - сбрасывается в нуль; при выполнении ВТС - инвертируется.
Команды условной установки байтов SETcc производят установку содержимого байта в регистре или ячейке памяти r/m8, указанных в команде.
Таблица 2.19
Команды сканирования битов BSF, BSR производят анализ битов операнда г/т, содержащегося в адресуемом регистре или ячейке памяти, и заносят значение п1 - номер первого встреченного бита, имеющего значение единица, в регистр-приемник г, заданный в команде. При выполнении команды BSF сканирование начинается с младшего разряда операнда, при выполнении BSR-co старшего разряда. Если операнд равен нулю (единичные биты отсутствуют), то устанавливается признак ZF = 1. При этом содержимое регистра-приемника будет неопределенным. Если единичный бит найден, то устанавливается ZF = 0.
Команды условной установки байта SETcc устанавливают определенное значение байта, который содержится в регистре или ячейке памяти г/т, указанных в команде. Условие установки байта определяется суффиксом ее, который добавляется к мнемокоду команды. В соответствии с этим суффиксом команда проверяет выполнение определенного условия (ее), которое задается различными значениями признаков, установленных в регистре EFLAGS. Виды проверяемых условий и соответствующие суффиксы ее указаны в табл. 2.22. Они аналогичны условиям, используемым в командах условных пересылок CMOVcc и условных переходов Jcc. Если условие выполняется (ее = 1), то все разряды адресованного байта устанавливаются в единицу (записывается OFFh), если не выполняется — все разряды байта сбрасываются в нуль (запись OOh).
2.2.5. Команды операций со строками символов
Команды данной группы приведены в табл. 2.20. При выполнении этих команд символом является 8-, 16- или 32-разрядный операнд, являющийся элементом строки, которая представляет последовательность символов, расположенных в смежных ячейках памяти. При программировании на языке Ассемблера мнемокоды команд дополняются суффиксом В (байт), W (слово) или D (двойное слово), указывающим разрядность обрабатываемых операндов (символов).
Различаются два типа строк символов. Строка-источник обычно (по умолчанию) располагается в сегменте DS. Размещение этой строки в других сегментах (см. табл. 2.8) обеспечивается путем введения соответствующего префикса SEG перед командой обработки строк символов. Относительный адрес символа в строке задается содержимым регистра SI. Полный указатель адреса для символа строки-источника имеет вид DS:[SI], если не используется префикс замены сегмента SEG. Строка-приемник всегда размещается в сегменте ES (см. табл. 2.8). Относительный адрес символа в этой строке задается содержимым регистра DI, поэтому полный указатель адреса для символа строки-приемника имеет вид ES:[SI]. После выполнения очередной команды со строкой содержимое SI и DI изменяется на +1 или - 1, +2 или - 2, +4 или - 4 в зависимости от разрядности символа (8, 16 или 32). Направление изменения адресов определяется значением признака DF в регистре EFLAGS. Если значение DF = 0, осуществляется увеличение адреса (автоинкремент) на 1,2 или 4; если DF = 1, осуществляется его уменьшение (автодекремент).
Если перед командами отсутствует префикс повторения, то соответствующие операции выполняются только для одного символа в строке, адресуемого содержимым регистров SI, DI. Префиксы повторения REP, REPE(REPZ) и RERNE(REPNZ) обеспечивают последовательное выполнение команд над символами строки. При этом количество повторений определяется содержимым регистра ЕСХ или выполнением определенного условия. Так как
регистр ЕСХ имеет 32 разряда, то максимальная длина обрабатываемых строк составляет 232 символа. Префикс REP используется для последовательного выполнения команд LODS, STOS, INS, OUTS, MOVS, префиксы REPE (синоним REPZ), REPNE (синоним REPNZ) используются с командами CMPS и SCAS.
Команда LODS осуществляет загрузку символа из строки-источника в аккумулятор (AL, АХ или ЕАХ). Команда STOS заносит содержимое аккумулятора в качестве символа в строку-приемник. Команда MOVS пересылает символ из строки-источника в строку-приемник. При наличии префикса REP эти команды повторяются п раз, где п = (ЕСХ). В результате после выполнения команды REP LODS в аккумулятор будет помещен n-й символ строки-источника, а после REP STOS содержимое аккумулятора будет введено п раз в качестве п символов строки-приемника. Команда REP MOVS осуществляет пересылку п символов из строки-источника в строку-приемник.
Команды ввода-вывода символов INS и OUTS выполняют ввод символа в строку-приемник или вывод символа из строки-источника. Номер адресуемого порта задается содержимым регистра DX. Команды с префиксом REP INS и REP OUTS осуществляют ввод последовательности из п символов в строку-приемник или их вывод из строки-источника. Выполнение этих команд в защищенном режиме производится, как и команд IN, OUT, в зависимости от значения уровней привилегий CPL и IOPL.
При выполнении команды сравнения CMPS происходит вычитание символа строки-приемника из символа строки-источника с установкой соответствующих признаков. Команда сканирования SCAS производит аналогичное вычитание символа строки-приемника из содержимого аккумулятора. Установка признаков для команд CMPS, SCAS выполняется также, как для команды СМР (см. табл. 2.17). Результат вычитания в командах CMPS, SCAS не сохраняется, поэтому эти команды используются для сравнения значений символов двух строк между собой или сравнения символа строки-приемника и эталонного символа, размещенного в аккумуляторе.
Наличие префикса REPE(nnn REPNZ) останавливает повторение операций при обнаружении одинаковых символов в строках (команда CMPS) или в строке-источнике и аккумуляторе (команда SCAS). Если одинаковые символы отсутствуют, то выполнение команды продолжается до конца строки. Префикс REPNE (или REPNZ) останавливает выполнение команд CMPS и SCAS при обнаружении неодинаковых символов. Если все символы одинаковы, то команды выполняются п = (ЕСХ) раз. Команда CMPS используется для поиска одинаковых (с префиксом REPE) или различных (префикс REPNE) символов в строках. Команда SCAS с префиксом REPE(REPNZ) или REPNE (REPNZ) служит для поиска в строке-источнике символа, совпадающего или не совпадающего с заданным в аккумуляторе эталоном.
Чтобы сократить время реакции на внешние прерывания, процессор при выполнении команд этой группы может принимать и обслуживать запросы прерывания INTR после обработки каждого символа строки.