
- •Предисловие
- •Введение
- •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.6.3. Команды арифметических операций
Команды этой группы (табл. 2.47) имеют две формы: пакетную (суффикс PS) и скалярную (суффикс SS). Пакетная форма команды обрабатывает пакеты одинарной точности: четыре элемента F3-FO одинарной точности, упакованные в 128 разрядов. Скалярная форма команды работает только с одним элементом одинарной точности FO (младшие 32 разряда SSE-регистра), остальные 96 разрядов (старшие элементы F3F1) содержимого этого регистра не изменяются. Для всех команд данной группы результат операции размещается в SSE-регистре xmm, а исходные операнды - в SSE-регистре xmm или ячейке памяти с адресом m128 (пакетная форма), либо т32 (скалярная форма).
Таблица 2.47
Команды ADD[PS,SS], SUB[PS,SS], DIV[PS,SS], MUL[PS,SS] производят соответственно операции сложения, вычитания, деления и умножения. Если при выполнении операций с какими-либо элементами происходит переполнение, то устанавливаются значения признаков ошибки ОЕ = РЕ = 1 и реализуется исключение типа #ХМ (при значении бита маски ОМ=0). Если соответствующее исключение замаскировано (установлено значение ОМ = 1), то результатом операции является число, округленное в соответствии с полем RC в регистре MXCSR (см. табл. 2.1). В случае антипереполнения устанавливаются значения признаков UE = РЕ = 1. При значении бита маски UM=0 реализуется исключение #ХМ, а при значении UM = 1 результатом становится округленное число. Команда DIV[PS,SS] вызывает установку признака ошибки ZE = 1, если операнд-делитель равен нулю. В этом случае реализуется исключение #ХМ, если соответствующий бит маски ZM = 0. Если данная ошибка маскирована (значение бита ZM = 1), то результатом операции будет код бесконечности соответствующего знака (7F800000h или FF800000h, см. табл. 2.16).
При выполнении данных команд элементами исходных операндов могут быть не-числа QNaN или SNaN. Результаты операций в этих случаях приведены в табл. 2.48. В случаях, когда установлено значение бита маски IM = 1 (исключение типа #1 маскировано), элементом результата будет не-число QNaN, являющееся элементом одного из операндов, или полученное из не-числа SNaN, являющегося элементом операнда, путем изменения значения бита Ь22 (первого разряда мантиссы) с «О» на «1»(SNaN -> QNaN)*. В случаях, когда значение бита маски IM = 0 (исключение #1 не маскировано), реализуется переход к подпрограмме обслуживания данного исключения, если элементами операндов являются не-числа SNaN. Если же элементами являются не-числа QNaN, то они представляются в качестве результата операции, а исключение не реализуется.
В табл. 2.48 указан также результат выполнения ряда арифметических операций, когда элементами операндов являются «О» или «бесконечность», В этих случаях элементом результата становится код FFCOOOOOh («неопределенность», см. табл.2.16), если установлено значение бита маски IM = 1 (исключение #1 маскировано). Если же значение IM = 0, то реализуется исключение Таблица 2.48
Команда SQRT[PS,SS] вычисляет значение квадратного корня из элементов исходного операнда (у = ^). Результаты этой операции в случаях, если элементом операнда является He-число или отрицательное число, указаны в табл. 2.49. Отметим, что данные результаты аналогичны приведенным в табл. 2.48 для исключительных случаев, возникающих при выполнении других арифметических операций.
Таблица 2.49 -
Все рассмотренные выше команды данной группы устанавливают значение признака DE = 1 и реализуют исключение #ХМ, если один из элементов исходных операндов представлен в денормализованном виде.
Команда RCP[PS,SS] вычисляет обратную величину операнда, а команда RSQRT[PS,SS] - обратную величину квадратного корня из операнда (/ = i/VJ). Правила округления, определяемые значением поля RC в регистре MXCSR, не оказывают влияния на выполнение этих команд. Денормализованные операнды воспринимаются как нули со ответствующего знака. Результат антипереполнения всегда округляется до нуля. Макси- мальная величина ошибки при выполнении этих команд составляет 1,5х2>12. Команды RSQRT[PS,SS] и RCP[PS,SS] не реализуют какие-либо исключения, поэтому контроль ошибок при их выполнении должен выполняться программными средствами.
ние бита маски IM = 0 (исключение #1 не маскировано), реализуется переход к подпрограмме обслуживания данного исключения, если элементами операндов являются не-числа SNaN. Если же элементами являются не-числа QNaN, то они представляются в качестве результата операции, а исключение не реализуется.
В табл. 2.48 указан также результат выполнения ряда арифметических операций, когда элементами операндов являются «О» или «бесконечность», В этих случаях элементом результата становится код FFCOOOOOh («неопределенность», см. табл.2.16), если установлено значение бита маски IM = 1 (исключение #1 маскировано). Если же значение IM = 0, то реализуется исключение #l. ;
Таблица 2.48
Команда SQRT[PS,SS] вычисляет значение квадратного корня из элементов исходного операнда (у = ^). Результаты этой операции в случаях, если элементом операнда является He-число или отрицательное число, указаны в табл. 2.49. Отметим, что данные результаты аналогичны приведенным в табл. 2.48 для исключительных случаев, возникающих при выполнении других арифметических операций.
Таблица 2.49 -
Все рассмотренные выше команды данной группы устанавливают значение признака DE = 1 и реализуют исключение #ХМ, если один из элементов исходных операндов представлен в денормализованном виде.
Команда RCP[PS,SS] вычисляет обратную величину операнда (/ = '/•»), а команда RSQRT[PS,SS] - обратную величину квадратного корня из операнда (/ = i/VJ). Правила округления, определяемые значением поля RC в регистре MXCSR, не оказывают влияния на выполнение этих команд. Денормализованные операнды воспринимаются как нули со ответствующего знака. Результат антипереполнения всегда округляется до нуля. Макси мальная величина ошибки при выполнении этих команд составляет 1,5х2>12. Команды RSQRT[PS,SS] и RCP[PS,SS] не реализуют какие-либо исключения, поэтому контроль ошибок при их выполнении должен выполняться программными средствами. Команды сравнения по-разному реагируют на поступление операндов - не-чисел. Если элементом сравниваемых операндов является NaN, то для одних команд результатом сравнения может быть число FFFFFFFFh, а для других OOOOOOOOh (табл. 2.53). Команды CMPUNORD[PS, SS] и CMPORD[PS, SS] специально предназначены для сравнения нечисел. Результатом выполнения команды CMPUNORD[PS, SS] будет FFFFFFFFh, если хотя бы один из элементов является He-числом (NaN), и OOOOOOOOh, если оба операнда являются достоверными числами. Результатом выполнения команды CMPORDfPS, SS] будет, наоборот, FFFFFFFFh - при сравнении достоверных чисел и OOOOOOOOh - при сравнении не-чисел. Различные команды сравнения могут вызывать или не вызывать исключение типа #1 при NAN операндах (табл. 2.53).
' Таблица 2.53
Команды COMISS и UCOMISS производят сравнение двух чисел одинарной точности с установкой признаков в регистре EFLAGS. При этом признаки OF.SF.AF принимают значение «О», а признаки ZF.PF.CF устанавливаются в зависимости от результатов сравнения (табл. 2.54). Команда COMISS реализует исключение типа #1, если элемент хотя бы одного из операндов является не-числом (SNaN или QNaN), а команда UCOMISS — если элемент одного из операндов является SNaN. Состояние регистра EFLAGS при реализации данного исключения не изменяется. В случае, если соответствующий бит маски имеет значение IM = 1 (исключение маскировано), то исключение не реализуется, а признаки ZF, PF, CF устанавливаются в «1».
Таблица 2.54
Команды MAX[PS,SS] и MIN[PS,SS] выделяют из исходных операндов элементы с наибольшими или наименьшими значениями. Элементы операндов попарно сравниваются между собой, и в качестве соответствующего элемента результата в регистр xmm заносится элемент с наибольшим (команда МАХ) или наименьшим (команда MIN) значением. Если хотя бы один из сравниваемых элементов является не-числом, и значение бита маски IM = 1, то соответствующим элементом результата становится элемент из операнда-источника xmm/m128 или xmm/m32 независимо от того, является ли он достоверным числом или NaN.