- •Предисловие
- •Введение
- •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 (падающий фронт сигнала);
- •Любое изменение логического уровня сигнала.
1.При блокированном чтении:
а) если требуемое данное не обнаруживается в кэш-памяти, используется данное с магистрали; оно помещается в кэш, если оно копируемое в кэш-память;
б) если требуемое данное находится в неизмененном состоянии (S или Е), используется данное с магистрали;
в) если данное находится в кэш-памяти в измененном состоянии (М), используется данное из кэш-памяти, а данное магистрали игнорируется, пока нет запроса обратной записи перед возбуждением контакта BRDY# циклом магистрали; если, однако, возникающий в процессе чтения запрос обратной записи переводит строку в S- или 1-состояние используется данное магистрали.
2. При блокированном сохранении данное вводится в кэш-память сигнала на контакте BRDY# из магистрали. Отметим, что строка, записанная при блокированном сохранении , остается в состоянии М несмотря на сквозную запись на магистраль, так как длина данного сквозной записи меньше размера строки из 32 байт.
Блокированные обращения являются полностью «выходящими» в том смысле, что:
• до ввода первого блокированного обращения все загрузки и сохранения, которые предшествуют команде «lock» вводятся на магистраль (если они кэш-промахи); блокированное обращение может быть введено до последнего сигнала на контакте BRDY# предшествующего цикла, если активирован контакт NA# в ответ на предшествующий цикл;
• никакие данные по командам загрузки или сохранения после последнего блокированного обращения не поступают в кэш или на магистраль до последнего сигнала на контакте BRDY# для всех блокированных обращений.
Для достижения максимальной производительности выборки команд в ходе выполнения блокированной последовательности являются «не выходящими». Когда сигнал на контакте NA# вызывает конвейеризацию, выборки команд могут быть осуществлены, в то время как блокированные обращения к данным остаются на магистрали
3.2.5. Согласованность внутренних кэш-памятей
Просмотры как кэш-памяти команд, так и кэш-памяти данных могут быть обусловлены генерируемыми извне запросами циклов и результат кэш-просмотра представляется сигналами на выходных контактах Н1Т# и Н1ТМ#. Эти циклы помогают осуществить согласованность с кэш-памятями других процессоров. Однако ПО должно принять на себя заботу не создавать несогласованностей, какие наблюдаются между внутренними кэш-памятями (включая и буферы страничной трансляции-TLB):
изменение адресного пространства, в то время как сохраняются теги виртуальных адресов предшествующего пространства в кэш-памяти команд или данных;
изменение команде памяти (или в кэш-памяти данных) без их изменения в кэш-памяти команд;
изменение информации в таблице страниц в памяти (или в кэш-памяти данных) без изменения той же самой информации в буферах TLB.
Некоторые обстоятельства, такие как обращение, к вводу/выводу, самоизменяющаяся машинная программа, обновления таблицы страниц или разделяемые данные в мультипроцессорной системе необходимо обойти, установить некорректность или сбросить кэш-памяти. МП фирмы «Intel» обеспечивает это так.
Обход кэш-памятей команд и данных:
Сигнал на контакте KEN# запрещает копирование данного и команды из обращения к данному, если этот сигнал сброшен в ходе выполнения кэш-промаха.
Если разряд CD из соответствующей таблицы страниц в единице, копирование в кэш-память из этой страницы замаскировано. Значение разряда CD повторяется на выходном контакте РСО#для использования внешнего кэш-копирования.
Если разряд WT из записи таблицы страниц установлен, кэш-копирование не маскируется, а записи пропускаются сквозь кэш-память. Значение разряда WT дублируется значением на выходном контакте PWT# и может быть использовано внешними кэш-памятями. (Заметим, что значение WT не воздействует на стратегию кэш-памяти команд, поскольку кэш-память команд является не записываемой. Однако, если команда из страницы, имеющей разряд WT установленным в записи РТЕ, помещается в кэш-память данных, стратегия сквозной записи применяется точно так же, как для страницы данных).
Записи с некорректностью кэш-копий - установленный разряд ITI в регистре dirbase фиксирует, что каждая строка кэш-памятей адресной трансляции и команд некорректна. В кэш-памяти данных он фиксирует некорректности виртуальных тегов, но не физических,
Сброс (очистка) кэш-памяти данных - кэш-память данных очищается программой ПО, которая использует команду «flush». Команда «flush» очень быстро реализует обратные записи в памяти. Тот же эффект (обратная запись измененной строки) можно получить по команде загрузки, но это будет сделано в два раза медленнее - загрузка должна сначала сделать 4 передачи по магистрали, чтобы получить новое данное, затем сделать обратую запись измененной строки. Команда «flush» реализует обратные записи, не требуя чтения данного из основной памяти, замещающего измененную строку.
Согласованность пространства адресов. В мультизадачных системах с виртуальной адресацией ОС может управлять памятью так, что несколько процессов используют одну и ту же физическую память при доступах по разным виртуальным адресам. Когда ОС переключает процессы, она изменяет поле DTB регистра базы таблицы страничных директорий для указания другой страничной директории, задающей новое адресное пространство, При этом все кэш-памяти должны стать некорректными: поскольку из TLB-буферов должны читаться новые страничные директории, а не кэш-памяти данных и команд, потому что, виртуальные адреса из нового адресного пространства, очевидно, не совпадают со скопированными в кэш-память виртуальными адресами из старого пространства.
Некорректность кэш-памятей фиксируется путем установки разряда ITI при записи содержимого в регистр базы таблицы страничных директорий. Некорректность кэш-команд относится как к физическим, так и виртуальным тегам, поскольку кэш-память команд имеет один разряд корректности, общий для физического и для виртуального тегов. Для кэшпамяти данных установка разряда ITI фиксирует некорректность только виртуальных тегов. Тем не менее, некоторые измененные строки будут возможно перезаписаны в память, когда их место потребуется для строк из нового адресного пространства или когда внешние устройства, подключенные к магистрали, запросят измененные данные через циклы запросов.
Как уже сказано, некорректность кэш-памятей фиксируется установкой разряда ITI при занесении содержимого в регистр базы таблицы страничных директорий. Тем не менее отметим, что программа ОС, которая очищает кэш-памяти, должна находиться в памяти в ходе очистки. Обычно эта программа имеет один и тот же виртуальный адрес для всех процессов.
Разрешение или маскирование (запрещение) адресной трансляции (с помощью разряда APG) подобно изменению поля DTB, так как в этом случае также изменяется распределение памяти. Перед изменением состояния разряда APG виртуальные теги в кэш-памятях команд и данных должны быть помечены как некорректные.
Согласованность кэш-памяти команд. Когда ПО модифицирует некоторую страницу, содержащую команды [например, отладчик помещает некоторую команду с командой «trap» (ловушка] для указания точки останова) кэш-память команд может оказаться несогласованной по следующим причинам:
• из-за того, что кэш-память данных использует стратегию обратной записи, изменения в страницах скопированных в кэш-память и содержащих команды обновляют память с задержкой;
изменения в командах не приводят к автоматическому обновлению кэш-памяти команд;
кэш-промахи при обращениях к кэш-памяти команд не проверяются в кэш-памяти данных.
ПО должно удостовериться, что измененные строки, содержащие команды, записаны в основную память до попытки прочитать их в кэш-памяти команд. Для этого пригодны два способа:
очистка кэш-памяти данных с применением команды «flush»; заметим, что для того чтобы сделать кэш-память команд согласованной с кэш-памятью данных, кэш-память данных должна быть очищена перед фиксацией некорректности кэш-памяти команд;
пометить все страницы команд как страницы со сквозной записью установкой разряда WT в записях страниц, так чтобы изменения в командах приводили к немедленной перезаписи в память; этот вариант, пожалуй, самый лучший.
В любом случае после того как страница программы будет изменена, чтобы обновленные команды читались из основной памяти, должна быть зафиксирована некорректность кэш-памяти команд (путем установки разряда ITI в содержимом регистра базы таблицы страничных директорий).
Согласованность таблиц страниц. Данные в TLB-буферах становятся некорректными, когда ОС изменяет таблицы страниц или страничных директорий по следующим причинам:
так как кэш-память данных использует стратегию обратной записи, обновления кэш-копий таблиц страниц не приводят к незамедлительному обновлению памяти;
изменения таблиц страниц не сопровождаются автоматическим обновлением TLB-буферов;
в процессе трансляции МП «Intel» обращаются за страничными директориями и таблицами страниц, размещенными только во внешней памяти; он не использует кэш-данных (данные не передаются из кэш-памяти данных в TLB-буферы в ходе циклов замещения TLB-буферов).
ПО должно удостовериться в том, что измененные строки, содержащие записи таблицы страниц, записаны в основную память, прежде чем блок страничной трансляции попытается прочитать их. Для этого можно применять два способа: