- •Содержание
- •Лекционный курс модуль Вводный
- •1. Цели и задачи курса
- •2. Микропроцессор и микропроцессорная система
- •3. Основные понятия и определения
- •4. Характеристики микропроцессоров
- •5. Классификация микропроцессоров
- •6. Эволюция микропроцессоров
- •Модуль I. Организация микропроцессорной системы
- •1. Основные типы архитектур микропроцессорных систем. Фон-неймановская (принстонская) и гарвардская архитектуры. Организация пространств памяти и ввода-вывода.
- •5. Прямой доступ к памяти. Организация прямого доступа к памяти. Контроллер пдп.
- •6. Память микропроцессорной системы. Функции памяти. Архитектура и иерархия памяти. Организация кэш-памяти. Виртуальная память.
- •Увеличение разрядности основной памяти
- •Память с расслоением
- •Использование специфических свойств динамических зупв
- •Страничная организация памяти
- •Сегментация памяти
- •Модуль II. Универсальные микропроцессоры
- •1. Определение понятия «архитектура». Архитектура системы команд. Классификация процессоров cisc и risc. Определение понятия "архитектура"
- •Архитектура системы команд. Классификация процессоров (cisc и risc)
- •2. Методы адресации и типы данных. Типы команд. Команды управления потоком команд. Методы адресации
- •Типы команд
- •Команды управления потоком команд
- •3. Конвейеризация и параллелизм. Конвейерная организация обработки данных. Простейшая организация конвейера и оценка его производительности.
- •Простейшая организация конвейера и оценка его производительности
- •Конфликты по данным, остановы конвейера и реализация механизма обходов
- •Классификация конфликтов по данным
- •Конфликты по данным, приводящие к приостановке конвейера
- •Методика планирования компилятора для устранения конфликтов по данным
- •Сокращение потерь на выполнение команд перехода и минимизация конфликтов по управлению
- •Снижение потерь на выполнение команд условного перехода
- •5. Проблемы реализации точного прерывания в конвейере. Обработка многотактных операций и механизмы обходов в длинных конвейерах Проблемы реализации точного прерывания в конвейере
- •Обработка многотактных операций и механизмы обходов в длинных конвейерах
- •Конфликты и ускоренные пересылки в длинных конвейерах
- •Поддержка точных прерываний в длинных конвейерах
- •Параллелизм уровня команд: зависимости и конфликты по данным
- •Параллелизм уровня цикла: концепции и методы
- •Основы планирования загрузки конвейера и разворачивание циклов
- •7. Зависимости. Классификация зависимостей и их применение. Устранение зависимостей по данным и механизмы динамического планирования. Зависимости. Их классификация и применение.
- •Устранение зависимостей по данным и механизмы динамического планирования Основная идея динамической оптимизации
- •Динамическая оптимизация с централизованной схемой обнаружения конфликтов
- •Другой подход к динамическому планированию - алгоритм Томасуло
- •Дальнейшее уменьшение приостановок по управлению: буфера целевых адресов переходов
- •9. Одновременная выдача нескольких команд для выполнения и динамическое планирование.
- •10. Архитектура машин с длинным командным словом (vliw). Средства поддержки большой степени распараллеливания.
- •Средства поддержки большой степени распараллеливания
- •Обнаружение и устранение зависимостей
- •Программная конвейеризация: символическое разворачивание циклов
- •Трассировочное планирование
- •Аппаратные средства поддержки большой степени распараллеливания
- •Условные команды
- •Выполнение по предположению (speculation)
- •11. Архитектура epic.
- •Модуль III. Микроконтроллеры и специализированные микропроцессоры
- •2. Специализированные микропроцессоры. Цифровые процессоры обработки сигналов.
- •Модуль Заключительный Перспективы развития микропроцессорной техники.
- •Лабораторный курс
- •7 Семестр. Лабораторная работа 1.
- •Лабораторная работа 2.
- •Лабораторная работа 3.
- •Лабораторная работа 4.
- •8 Семестр. Лабораторная работа 1.
- •1. Общие сведения
- •2. Настройка и запуск Code Composer Studio (simulation)
- •3. Особенности проектирования в иср Code Composer Studio
- •4. Реализация проекта в иср Code Composer Studio
- •5. Тестирование проекта в иср Code Composer Studio
- •6. Аппаратная реализация проекта в иср Code Composer Studio
- •Лабораторная работа 2.
- •1. Подключение файлов ввода/вывода с помощью точек зондирования
- •2. Работа с файлами по средствам функций языка с
- •3. Работа с dsp/bios для генерации звукового сигнала платой dsk5510
- •Лабораторная работа 3.
- •1 Цифровая фильтрация
- •2. Реализация ких фильтра на симуляторе dsk5510
- •3. Реализация ких фильтра на dsk5510 для фильтрации звукового сигнала в реальном времени.
- •Лабораторная работа 4.
- •1. Фильтры с бесконечной импульсной характеристикой – бих
- •2. Реализация бих фильтра на симуляторе dsk5510
- •Фильтр низкой частоты с нормальной частотой среза 0.1
- •Фильтр низкой частоты с нормальной частотой среза 0.2
- •Полосовой фильтр с нормальной частотой среза 0.165 – 0.33
- •3. Реализация бих фильтра на dsk5510 для фильтрации звукового сигнала в реальном времени.
- •Фильтр низкой частоты с нормальной частотой среза 0.1
- •Фильтр низкой частоты с нормальной частотой среза 0.2
- •Полосовой фильтр с нормальной частотой среза 0.165 – 0.33
- •Оценка работы студентов. Рейтинговая система.
- •1. Общие положения
- •2. Организация рейтингового контроля успеваемости студентов дневной формы обучения
- •3. Выставление оценок по рейтинговой системе
- •4. Организация рейтингового контроля успеваемости студентов заочной формы обучения
- •Учебно-методические материалы Основная литература
- •Дополнительная литература
Лабораторная работа 3.
ВЫЧИСЛЕНИЯ с Использованием ММХ регистров
Цель работы: Написать программу, для исследования возможности ускорения вычислительного процесса при использовании ОКМД команд (MMX).
Краткие теоретические сведения
Типы данных
Основными типами данных для набора инструкций IA MMX являются: упакованный целочисленный с фиксированной запятой, где несколько чисел сгруппированы в одно 64-х разрядное значение. Эти 64-х разрядные значения загружаются в регистры ММХ. Позиция десятичной точки является подразумеваемой, что обеспечивает максимальную гибкость. Поддерживаются знаковые и беззнаковые числа: байт, слово, двойное и учетверенное слово (byte, word, doubleword and quadword).
Есть четыре ММХ типа:
упакованный байт – 8 байт, упакованных в одно 64-битное значение;
упакованное слово – 4 слова, упакованных в одно 64-битное значение;
упакованное двойное слово – два 32-х битных двойных слова, упакованных в одно 64-битное значение;
учетверенное слово - одно 64-битное значение.
Например, цвет пикселя обычно представляется 8-битным целым (байтом). Используя технологию ММХ можно упаковать 8 пикселей в одно 64-ти битное значение и загрузить в регистр MMX. Затем команды MMX будут сразу обрабатывать все 8 пикселей изображения.
Совместимость
Технология ММХ создавалась как полностью совместимая со всем предыдущим программным обеспечением, в том числе операционными системами. Поэтому при ее реализации не было добавлено новых регистров или состояний процессора. Для расположения 8-и регистров ММХ использованы регистры сопроцессора, что позволило оставить без изменения стандартные механизмы переключения контекстов задач в существующих операционных системах.
Инструкции сопроцессора, отвечающие за сохранение/восстановление состояния FPU, также обрабатывают и состояние расширения ММХ. Т.о. ММХ не добавило новых исключений или состояний процессора.
Инструкции
Инструкции ММХ охватывают несколько областей:
базовые арифметические операции, такие как add – сложение, sub – вычитание, mul – умножение и mul-add – умножение-сложение;
операции сравнения;
операции преобразования типов, упаковка/рапаковка данных;
логические операции типа AND, AND NOT,OR и XOR;
операции сдвига;
операции пересылки данных (MOV)
Арифметические и логические инструкции поддерживают различные типы упакованных данных. С учетом этого все расширение ММХ включает 57 кодов операций.
Краткий обзор набора инструкций MMX™
Инструкции и соответствующие мнемоники в таблице сгруппированы по категориям.
Если инструкция поддерживает тип данный байт (B), слово (W), двойное слово (DW) или учетверенное слово (QW), соответствующие аббревиатуры указаны в квадратных скобках. Например, для базовой мнемоники PADD (packed add) возможны следующие варианты: PADDB, PADDW и PADDD.
Категория |
Мнемоника |
Описание |
Арифметические операции |
PADD[B,W,D] |
Сложение (Add with wrap-around on [byte, word, doubleword]) |
PADDS[B,W] |
Сложение знаковое с насыщением (Add signed with saturation on [byte, word]) |
|
PADDUS[B,W] |
Сложение беззнаковое с насыщением (Add unsigned with saturation on [byte, word]) |
|
PSUB[B,W,D] |
Вычитание (Subtract with wrap-around on [byte, word, doubleword]) |
|
PSUBS[B,W] |
Вычитание знаковое с насыщением (Subtract signed with saturation on [byte, word]) |
|
PSUBUS[B,W] |
Вычитание беззнаковое с насыщением (Subtract unsigned with saturation on [byte, word]) |
|
PMULHW |
Packed multiply high on words |
|
PMULLW |
Packed multiply low on words |
|
PMADDWD |
Умножение упакованных байт и суммирование полученных пар слов (Packed multiply on words and add resulting pairs) |
|
Операции сравнения |
PCMPEQ[B,W,D] |
Сравнение упакованных на равенство (Packed compare for equality [byte, word,doubleword]) |
PCMPGT[B,W,D] |
Сравнение упакованных на больше (Packed compare greater than [byte, word, doubleword]) |
|
Преобразование разрядности |
PACKUSWB |
Упаковка слов в байты (беззнаковое с насыщением) Pack words into bytes (unsigned with saturation) |
PACKSS[WB,DW] |
Упаковка [слов в байты, двойных слов в слова] (знаковое с насыщением) Pack [words into bytes, doublewords into words] (signed with saturation) |
|
PUNPCKH [BW,WD,DQ] |
Распаковка старших [байт, слов, двойных слов] из ММХ регистра. Unpack (interleave) high-order [bytes, words, doublewords] from MMX register |
|
PUNPCKL [BW,WD,DQ] |
Распаковка младших [байт, слов, двойных слов] из ММХ регистра. Unpack (interleave) low-order [bytes, words, doublewords] from MMX register |
|
Логические |
PAND |
Битовый (bitwise) AND |
PANDN |
Битовый (bitwise) AND NOT |
|
POR |
Битовый (bitwise) OR |
|
PXOR |
Битовый (bitwise) XOR |
|
Сдвиги |
PSLL[W,D,Q] |
Логический сдвиг влево упакованных [слов, двойных слов, учетверенного слова] на значение указанное в ММХ регистре или в команде Packed shift left logical [word, doubleword, quadword] by amount specified in MMX register or by immediate value |
PSRL[W,D,Q] |
Логический сдвиг вправо упакованных [слов, двойных слов, учетверенного слова] на значение указанное в ММХ регистре или в команде Packed shift right logical [word, doubleword, quadword] by amount specified in MMX register or by immediate value |
|
PSRA[W,D] |
Арифметический сдвиг вправо упакованных [слов, двойных слов, учетверенного слова] на значение указанное в ММХ регистре или в команде Packed shift right arithmetic [word, doubleword] by amount specified in MMX register or by immediate value |
|
Пересылки данных |
MOV[D,Q] |
Пересылка [двойного или учетверенного] слова в/из ММХ регистра Move [doubleword, quadword] to MMX register or from MMX register |
Управление состоянием FPU и MMX |
EMMS |
Сброс состояния FPU, переключение между ММХ и FPU режимами Empty MMX state |
Примеры инструкций
В этом разделе кратко описываются несколько примеров ММХ инструкций. Для примера взяты операции с 16-битными словами, однако большинство этих операций существуют и для байт и двойных слов.
Пример 1 иллюстрирует сложение упакованных слов без насыщения. Вычисляется четыре сумма для восьми 16-битных элементов, все они выполняются независимо и параллельно. В данном случае результат самого правого сложения превышает значение, которое может быть представлено 16-ю битами, т.е. происходит переполнение. Результатом сложения FFFFh + 8000h будет 17-битное число. 17-й бит теряется из-за усечения результата, соответственно получается число 7FFFh.
Пример 1 - PADD[W]: Сложение без насыщения
В примере 2 показано сложение упакованных слов с беззнаковым насыщением. Используются те же данные, что и в предыдущем примере. Самое правое сложение дает результат, не помещающийся в 16 бит, следовательно, происходит насыщение. Термин насыщение означает, что при переполнении сложения (или вычитания) результат ограничен максимальным (или минимальным) числом, представимым в данной разрядности. Для беззнаковых 16-битных слов максимальным и минимальным будут FFFFh и 0000h, для знаковых это 7FFFh и 8000h соответственно. Насыщение может оказаться важным при работе с пикселями изображения, когда переполнене может вызвать появление точек черного цвета.
Пример 2 - PADDUS[W]: Сложение с бззнаковым насыщением
Пример 3 показывает работу инструкции PMADDWD, выполняющую умножить-сложить операцию. Эта операция часто используется в алгоритмах обработки сигналов. Эта команда меняет разрядность результата – ее операнды имеют размер слова (16 бит), а результат двойного слова (32 бита).
Пример 3 - PMADDWD: 16b x 16b -> 32b Операция умножение-сложить
Пример 4 иллюстрирует параллельное сравнение упакованных данных. Команда сравнивает четыре пары 16-битных слов. В регистр результата заноситься true/истина (FFFFh) или false/ложь (0000h) отдельно для каждого сравнения. На рисунке можно видеть сравнение по условию «больше» ("greater than"). Эта команда не изменяет флагов процессора.
Пример 4 - PCMPGT[W]: Параллельные сравнения
Результат такого сравнения может быть использован как маска для выбора элементов из другого входного потока с использованием логических операций. Такой метод позволяет в какой-то мере сократить количество инструкций перехода.
Последний пример (пример 5) показывает механизм работы инструкции упаковки (сокращения разрядности). На вход подаются четыре 32-битных двойных слова в двух различных регистрах, которые упаковываются в четыре 16-битных слова в одном регистре. Если значение исходного операнда (например, b1) превосходит разрядность результата (b1′), преобразование выполняется с насыщением.
Пример 5 - PACKSS[DW]: Инструкция упаковки
Инструкции упаковки/распаковки обычно используются, когда разрядность промежуточных результатов вычислений превосходит разрядность исходных данных.
Задание
Написать программу на языке программирования С/С++ с использованием ассемблерных вставок, выполняющую следующие действия: произвести в цикле порядка одного миллиона операций сложения и замерить время выполнения, затем сделать все то же самое для операции вычитания и умножения с использованием ММХ регистров; произвести те же действия с целочисленными операндами без использования ММХ регистров по аналогии со второй лабораторной работой; сравнить времена расчетов, сделать выводы о преимуществе использования ММХ регистров.
Допустимая среда разработки – Borland C++ Builder5.0, Borland C++ Builder6.0, Microsoft Visual C++6.0, Microsoft Visual C++7.0 и т.д.
Порядок выполнения работы
Написать программу, реализующую поставленную задачу.
Откомпилировать программу.
Запустить программу. Убедиться в ее корректной работе.
Уметь объяснить работу программы.
Оформить отчет.
Содержание отчета
Ф.И.О., группа, номер, название лабораторной работы и название дисциплины.
Цель работы.
Краткое описание алгоритма работы программы.
Результат работы программы.
Листинг программы.
Выводы.
Рекомендуемая литература
В. Юров “Assembler. Учебник”’;
В. Юров “Assembler. Краткий справочник команд”;
MSDN.