- •Предисловие
- •Введение
- •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.5.2. Команды пересылки и преобразования данных
Команды этой группы приведены в табл. 2.41. Команды MOVD, MOVQ, PEXTRW, PINSRW и PMOVMSKB осуществляют пересылку данных, а команды PACKSS[WB,DW], PACKUSWB, PUNPCKH[BW,WD,DQ], PUNPCKL[BW,WD,DQ] и PSHUFW-преобразование данных: упаковку, распаковку и переупорядочивание элементов. Используемые операнды задаются в синтаксисе Ассемблера номером ММХ-регистра mm, именем регистра общего назначения г32 или адресом ячейки памяти m16, m32 или т64, хранящей, соответственно 16-, 32- или 64-разрядные данные. При определении выполняемой операции в табл. 2.41 указывается формат пересылаемых упакованных данных (В, W, D или Q), а в случае необходимости также и номер соответствующего элемента: например, mm(W) - слово из ММХ-регистра с номером mm, mm(BO) -элемент (байт) ВО из ММХ-регистра с номером mm.
Таблица 2.41
Команда MOVQ производит пересылку 64-разрядного операнда - счетверенного слова mm(Q)- между двумя ММХ-регистрами или между ММХ-регистром и памятью. Эта команда не выполняет перенос данных между ММХ-регистром и регистром общего назначения. Команда MOVD производит пересылку 32-разрядного операнда -двойного слова mm(DO) -между ММХ-регистром (младший элемент) и памятью или регистром общего назначения. Если операндом-приемником является ММХ-регистр, то в его старшую половину загружается нулевое значение. Данная команда не может использоваться для передачи данных между двумя ММХ-регистрами.
Команды PEXTRWn PINSRW производят пересылки 16-разрядных элементов - слов mm(Wi) - между ММХ-регистром и регистром общего назначения или памятью. Команда PEXTRW пересылает любой элемент (слово) из ММХ-регистра в младшие разряды Ы5-0 регистра общего назначения г32. В старшие разряды Ь31-16 этого регистра загружается нулевое значение. Команда PINSRW выполняет обратную операцию, пересылая слово из младших разрядов Ы5-0 регистра общего назначения или 16-разрядной ячейки памяти с адресом гп16 на место заданного элемента mm(Wi) в ММХ-регистр. Остальные три элемента (слова) в ММХ-регистре остаются без изменения. Номер i пересылаемого или замещаемого элемента в ММХ-регистре задается двумя младшими битами непосредственного операнда im8.
Команда PMOVMSKB формирует байт (8-битовую маску) из старших (знаковых) разрядов Ь7 каждого байта Bi, хранящегося в ММХ-регистре mm. Эта маска размещается в младших разрядах регистра общего назначения г32, а его старшие разряды заполняются нулями (рис. 2.26).
Команды PACKSS[WB,DW] и PACKUSWB выполняют операцию, которая называется упаковкой данных. Исходные элементы преобразуются в элементы, имеющие в два раза меньший размер, чем исходные (разрядность элементов уменьшается вдвое). При данном преобразовании используется принцип насыщения. Если значение исходного элемента больше верхнего предела или меньше нижнего предела, установленных для формата результата операции
(см. табл. 2.40), то в качестве результирующего элемента в ММХ-регистр заносится значение соответствующего предела. Выполнение этих команд иллюстрируется на рис. 2.27.
Команда PACKSSWB (рис. 2.27, а) упаковывает знаковые слова в знаковые байты. Если значение какого-либо исходного слова больше 007Fh (+127), то значение соответствующего байта результата будет 7Fh; если значение слова меньше FF80h (- 128), то значение байта результата 80h (- 128). Аналогичную операцию реализует команда PACKUSWB, которая упаковывает знаковые слова в беззнаковые байты. Отличие от предыдущей операции состоит только в определении пределов для беззнаковых байтов результата согласно табл. 2.40: если значение исходного слова больше OOFFh (255), то значение соответствующего байта результата FFh (255), если значение слова меньше OOOOh (0), то значение байта результата OOh (0).
Команда PACKSSDW (рис. 2.27, б) упаковывает знаковые двойные слова в знаковые слова. Если значение исходного двойного слова больше 00007FFFh (+32767), то значение соответствующего слова результата будет 7FFFh; если значение исходного слова меньше FFFFSOOOh (- 32768), то значение слова результата 8000Н (- 32768).
Команды PUNPCKH[BW,WD,DQ] и PUNPCKL[BW,WD,DQ] производит операцию, которая называется распаковкой данных. Эти команды объединяют старшие (команды PUNPCKH) или младшие (команды PUNPCKL) половины исходных операндов, хранящихся в регистре mm и регистре или ячейке памяти mm/m64, в один результирующий операнд, который размещается в регистре mm. При этом элементы исходных операндов перемешиваются, располагаясь через один (рис. 2.28). Дополнительный суффикс в мнемокодах этих команд определяет, какие половины исходных операндов объединяются: старшие (мнемокоды с суффиксом Н) или младшие (мнемокоды с суффиксом L). Суффиксы BW (распаковка байтов), WD (распаковка слов), DQ (распаковка двойных слов) задают форматы представления результата и исходных операндов. Реализация операции распаковки иллюстрируется на рис. 2.28 на примере выполнения команд PUNPCKHBW, PUNPCKLWDnPUNPCKLDQ. '
Команда PSHUFW производит переупорядочивание слов, перемещая элементы (слова) операнда-источника из регистра или ячейки памяти mm/m64 в соответствующие позиции элементов операнда-приемника в регистре mm. Непосредственный операнд im8 указывает, какой из элементов операнда-источника помещается в определенной позиции операнда-приемника: биты Ы-0 этого операнда задают номер элемента в операнде-источнике, который помещается на место слова WO операнда-приемника, биты ЬЗ—2 - номер элемента, помещаемого на месте слова W1, биты Ь5—4 - номер элемента, помещаемого на месте слова W2, биты Ь7-6 - номер элемента, помещаемого на месте слова W3. Выполнение данной команды иллюстрируется на рис. 2.29.
Команда EMMS выполняет пересылку числа FFFFh в регистр тегов TW. При этом теги для всех регистров FPU и соответствующих им ММХ-регистров принимают значение 11, что соответствует их пустому состоянию. Таким образом, данная команда производит освобождение всех регистров FPU и соответственно ММХ-регистров. Данная команда используется после завершения процедуры обработки упакованных данных, чтобы освободить регистры для последующего выполнения операций блоком FPU. Если эта команда не будет выполнена, то регистры остаются заполненными упакованными данными (при ММХ-операциях теги принимают значение 00, что соответствует заполнению регистров), и обращение к ним вызовет исключение типа #MF («ошибка FPU»).