- •Содержание
- •Лекционный курс модуль Вводный
- •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. Организация рейтингового контроля успеваемости студентов заочной формы обучения
- •Учебно-методические материалы Основная литература
- •Дополнительная литература
Лабораторная работа 2.
оценка времени выполнения арифметических операций
Цель работы: на конкретном примере определить время выполнения различных арифметических операций для различных операндов, сделать соответствующие выводы.
Краткие теоретические сведения
В данной лабораторной работе требуется оценить скорость выполнения процессором операций с операндами различных типов, например, с целыми числами и с числами с плавающей точкой. Так как оценить время выполнения одной операции для современного процессора проблематично, необходимо подсчитать время выполнения нескольких операций (для современной вычислительной машины порядка одного миллиона операций).
Замерять время выполнения операций можно с помощью функции ftime(). Выглядит это следующим образом. С помощью функции ftime() получаем некоторое начальное время выполнения. Затем в цикле выполняем необходимое количество операций и снова получаем значение времени. Далее находим разницу времен после и до цикла. Полученное значение времени и есть время, затраченное процессором на выполнение цикла операций. Оценивать время выполнения цикла операций необходимо в миллисекундах. Вместо функции ftime() можно использовать функцию GetTickCount().
Программа должна поочередно запускать на выполнение 8 циклов, каждый из которых будет выполнять различные арифметические операции (сложение, вычитание, умножение и деление). Первые четыре цикла будут выполнять операции для операндов первого типа, а вторые четыре для операндов второго типа.
В начале и в конце каждого цикла программа будет запоминать время (в миллисекундах) запуска и остановки этого цикла. Разница между этими величинами будет являться временем выполнения цикла конкретной арифметической операции.
Учитывая высокое быстродействие ЭВМ, используемых при программировании, количество итераций должно быть выбрано достаточно большим для того, чтобы заметить очевидную разницу во времени выполнения различных операций. Использование цикла для оценки времени выполнения требует дополнительных затрат процессорного времени на организацию цикла. Это означает, что сравниваться будут не реальные времена выполнения арифметических операций, а времена выполнения с добавленными к ним временными задержками на организацию циклов. Таким образом, число итераций для всех циклов должно быть выбрано одинаковым для того, чтобы оценить реальную зависимость во времени выполнения операций в одинаковых условиях. Т.е. это означает, что если для всех операций используется одинаковое количество итераций, то и задержки на организацию циклов для всех операций одинаковы. Это в свою очередь означает что мы можем сопоставлять полученные результаты и анализировать закономерности затрат процессорного времени на выполнение арифметических операций без необходимости вычисления времени задержки на организацию циклов.
Программа должна выводить на экран результаты всех измерений. Приблизительный возможный внешний вид результатов работы программы представлен ниже на рисунке 1. Как видно из рисунка операции сложения, вычитания и умножения значительно отличаются по времени выполнения от операции деления. Кроме того, есть различия во времени выполнения между целочисленными операндами и операндами с плавающей точкой.
Рисунок 1. – Возможный вид программы
Задание
Написать программу для оценки времени выполнения арифметических операций (сложение, вычитание, умножение, деление) для целочисленных операндов и для операндов с плавающей точкой на языке программирования С/С++. Допустимая среда разработки – Borland C++ Builder5.0, Borland C++ Builder6.0, Microsoft Visual C++6.0, Microsoft Visual C++7.0 и т.д.
Порядок выполнения работы
Написать программу, реализующую поставленную задачу.
Откомпилировать программу.
Запустить программу. Убедиться в ее корректной работе.
Уметь объяснить работу программы.
Оформить отчет.
Содержание отчета
Ф.И.О., группа, номер, название лабораторной работы и название дисциплины.
Цель работы.
Краткое описание алгоритма работы программы.
Результат работы программы.
Листинг программы.
Выводы.