Б3.Б.2 ЭВМ и периферийные устройства
.pdf1.Каковы главные функции оптимизирующего компилятора?
2.По каким критериям может осуществляться оптимизация программ?
3.Какие бывают примеры оптимизирующих преобразований, что они оптимизируют, в чем их суть?
4.Всегда ли оптимизирующая компиляция позволяет уменьшить время работы программы?
5.Чем отличается общая оптимизация от оптимизации под архитектуру?
6.Какие имеются группы ключей в GCC?
7.Какие уровни оптимизации есть в GCC, и чем они характеризуются?
Лабораторная работа 3. Высокоуровневая работа с периферийными устройствами
Цель работы
1. Ознакомиться с программированием периферийных устройств на примере ввода данных с Web-камеры с использованием библиотеки OpenCV.
Задание к лабораторной работе.
1.Реализовать программу с использованием OpenCV, которая получает поток видеоданных с камеры и выводит его на экран.
2.Выполнить произвольное преобразование изображения.
3.Измерить количество кадров, обрабатываемое программой в секунду. Оценить долю времени, затрачиваемого процессором на обработку (ввод, преобразование, показ) видеоданных, получаемых с камеры.
4.Составить отчет по лабораторной работе.
Контрольные вопросы
1.Что такое OpenCV? Какие задачи решает OpenCV?
2.Как с помощью OpenCV получить изображение с видеокамеры и вывести его на экран?
3.Какие способы преобразования изображений можно использовать, применяя OpenCV.
Лабораторная работа 4. Низкоуровневая работа с периферийными устройствами.
Цель работы
1. Знакомство с основами низкоуровневого программирования периферийных устройств на примере получения информации о доступных USB-устройствах с помощью библиоте-
ки libusb.
Задание к лабораторной работе
1.Реализовать программу, получающую список всех подключенных к машине USB устройств с использованием libusb. Для каждого найденного устройства напечатать его класс, идентификатор производителя и идентификатор изделия. За основу для разработки можно взять программу, приведенную в листинге 1.
2.Изучить состав и характеристики обнаруженных с помощью реализованной программ USB устройств.
3.Дополнить программу, реализованную в п. 2 функцией печати серийного номера USB устройства. Для написания функции рекомендуется использо-вать функции libusb_open, libusb_close, libusb_get_string_descriptor_ascii для печати поля iSerialNumber дескриптора устройства.
4.Составить отчет по лабораторной работе.
Контрольные вопросы
1. Что такое libusb? Какие задачи решает libusb?
31
2.На какие группы можно разбить функции libusb?
3.Как с помощью библиотеки libusb получить состав и конфигурацию USB-устройств?
Лабораторная работа 5. Влияние кэш-памяти на время обработки массивов.
Цели работы
1.Исследование зависимости времени доступа к данным в памяти от их объема.
2.Исследование зависимости времени доступа к данным в памяти от порядка их обхода
Задание к лабораторной работе
1.Реализовать программу с использованием OpenCV, которая получает поток видеоданных с камеры и выводит его на экран.
2.Выполнить произвольное преобразование изображения.
3.Измерить количество кадров, обрабатываемое программой в секунду. Оценить долю времени, затрачиваемого процессором на обработку (ввод, преобразование, показ) видеоданных, получаемых с камеры.
4.Составить отчет по лабораторной работе.
Контрольные вопросы
1.Что такое кэш-память? Какую проблему она решает?
2.Какой способ обхода данных в памяти является самым быстрым? Почему?
3.Какой способ обхода данных в памяти является самым медленным? Почему?
4.Для каких программ наличие кэш-памяти дает выигрыш во времени работы?
5.По каким основным причинам случайный обход массива дольше, чем прямой и обратный?
6.Почему тип обхода не сказывается на времени доступа к памяти, если массив умещается в кэш-памяти первого уровня?
7.Чем отличаются программная и аппаратная предвыборка данных?
Лабораторная работа 6. Измерение степени ассоциативности кэш-памяти.
Цель работы
Экспериментальное определение степени ассоциативности кэш-памяти.
Задание к лабораторной работе
1.Разработать программу, измеряющую время доступа к памяти при буксовании кэшпамяти и без него.
2.Измерить время доступа к памяти при различных предполагаемых степенях ассоциативности кэш-памяти.
3.Экспериментально определить степень ассоциативности кэш-памяти.
Контрольные вопросы
1.Что такое степень ассоциативности кэш-памяти?
2.Каковы достоинства и недостатки множественно-ассоциативной кэш-памяти?
3.Что такое эффект «буксования» кэш-памяти? Как его вызвать? Как его избежать?
4.Какое минимальное число элементов требуется, чтобы организовать эффект «буксования» кэш-памяти (при «наихудшем» размещении этих элементов в оперативной памяти)?
5.Какой график получится в результате тестирования, если величину смещения между фрагментами взять равной половине размера банка?
Лабораторная работа 7. Введение в архитектуру x86/x86-64.
32
Цели работы
1.Знакомство с программной архитектурой x86/x86-64.
2.Анализ ассемблерного листинга программы для архитектуры x86/x86-64.
Задание к лабораторной работе
1.Изучить программную архитектуру x86/x86-64:
набор регистров,
основные арифметико-логические команды,
способы адресации памяти,
способы передачи управления,
работу со стеком,
вызов подпрограмм,
передачу параметров в подпрограммы и возврат результатов,
работу с арифметическим сопроцессором,
работу с векторными расширениями.
2.Для программы на языке Си (из лабораторной работы 1) сгенерировать ассемблерные листинги для архитектуры x86 и архитектуры x86-64, используя различные уровни комплексной оптимизации.
3.Проанализировать полученные листинги и сделать следующее.
1.Сопоставить команды языка Си с машинными командами.
2.Определить размещение переменных языка Си в программах на ассемблере (в каких регистрах, в каких ячейках памяти).
3.Описать и объяснить оптимизационные преобразования, выполненные компилятором.
Продемонстрировать использование ключевых особенностей архитектур x86 и x86-64 на конкретных участках ассемблерного кода.
Сравнить различия в программах для архитектуры x86 и архитектуры x8664.
4.Составить отчет по лабораторной работе.
Контрольные вопросы
1.В чем заключаются отличия между архитектурами x86 и x86-64?
2.Почему в программах следует избегать лишних обращений в память?
3.Как зависимости между командами влияют на процесс исполнения программы? Как компилятор и процессор борются с ними?
Лабораторная работа 8. Введение в архитектуру ARM .
Цели работы
1.Знакомство с программной архитектурой ARM.
2.Анализ ассемблерного листинга программы для архитектуры ARM.
Задание к лабораторной работе
1.Изучить основы программной архитектуры ARM.
2.Для программы на языке Си (из лабораторной работы 1) сгенерировать ассемблерные листинги для архитектуры ARM, используя различные уровни комплексной оптимизации.
3.Проанализировать полученные листинги и сделать следующее:
Сопоставить команды языка Си с машинными командами.
Определить размещение переменных языка Си в программах на ассемблере (в ка-
33
ких регистрах, в каких ячейках памяти).
Описать и объяснить оптимизационные преобразования, выполненные компилятором.
Продемонстрировать использование ключевых особенностей архитектуры ARM на конкретных участках ассемблерного кода.
4.Составить отчет по лабораторной работе.
Контрольные вопросы
1.В чем заключаются отличия между архитектурами CISC и RISC?
2.Какие имеются отличив между CISC архитектурой x86/x86-64 и RISC архитектурой
ARM?
3.Что такое условные команды? Какие примеры условных команд имеются в архитектуре
ARM.
4.В чем заключаются особенности команд обращения в память в архитектуре ARM?
Лабораторная работа 9. Векторизация вычислений.
Цели работы
1.Изучение SIMD-расширений архитектуры x86/x86-64.
2.Изучение способов использования SIMD-расширений в программах на языке Си.
3.Получение навыков использования SIMD-расширений.
Задание к лабораторной работе
1.Реализовать алгоритм обращения матрицы через разложение в ряд в трёх вариантах.
2.Сравнить времена выполнения программ.
Вариант 1 – без ручной векторизации вычислений Вариант 2 – с ручной векторизацией
Вариант 3 – с использованием библиотеки BLAS
Контрольные вопросы:
1.Что такое SIMD-расширение архитектуры? Зачем вводятся SIMDрасширения обычных архитектур?
2.Какие SIMD-расширения архитектуры x86/x86-64 сейчас существуют? С какими регистрами и типами данных работает каждое SIMDрасширение?
3.Какие существуют способы использования SIMD-расширений в программах на языке Си?
Лабораторная работа 10. Совместный доступ нескольких потоков к данным общей памяти.
Цели работы
1.Знакомство с организацией согласованности данных в многоядерных компьютерах с общей памятью.
2.Исследование особенностей доступа нескольких параллельно работающих потоков к данным в общей памяти.
Задание к лабораторной работе:
1. Написать программу, осуществляющую одновременный доступ двух потоков к элементам одного массива длиной N элементов целочисленного типа (4 байта). Первый поток всегда обрабатывает элемент с номером N/2. Второй поток обрабатывает i-й эле-
34
мент, где индекс i пробегает по всем элементам массива. Под обработкой элемента массива будем понимать M-кратную операцию его инкремента.
2.Построить график зависимости времени одной операции инкремента во втором потоке от номера обрабатываемого элемента, при этом использовать замер времени с помощью подсчета числа тактов процессора.
3.По графику определить размер блока, который является единицей данных для протокола поддержания когерентности.
4.Составить отчет по практической работе.
Контрольные вопросы:
1.Как поддерживается согласованность данных в кэш-памяти различных ядер многоядерных процессоров?
2.Что такое протокол когерентности?
3.Как несколько потоков, одновременно работающих на различных ядрах с различными данными в одном адресном пространстве, могут влиять на скорость работы друг друга?
4.Что такое ложное разделение кэш-строк? Как оно устраняется?
Лабораторная работа 11 (дополнительная). Работа с устройства ввода видеоданных и обработка видеоданных.
Цель работы:
1.Ознакомиться с программированием ввода видеоданных с Web-камеры с использованием библиотеки OpenCV.
2.Ознакомиться с программированием обработки кадров видеопотока.
Задание к лабораторной работе:
1.Реализовать программу с использованием OpenCV, которая получает поток видеоданных с камеры и сохраняет его в файл.
2.Реализовать программу, считывающую видеопоток из файла и сохраняющую его в другой файл в заданном формате.
3.Реализовать локальные фильтры для сглаживания и оконтуривания изображений видеопотока на базе программы из п. 2 с использованием функций фильтрации OpenCV.
4.Релизовать фильтры из п. 3 с использованием попиксельной обработки изображений
5.Составить отчет по лабораторной работе.
Контрольные вопросы:
1.Какие задачи решает локальная фильтрация изображений? Какие бывают линейные локальные фильтры?
2.Чем отличаются линейный и рекурсивный фильтры?
3.Каков состав и назначение функций локальной фильтрации в библиотеке OpenCV?
4.Каким образом осущесвляется попиксельная обработка изображений в приложениях на базе библиотеки OpenCV?
Лабораторная работа 12 (дополнительная). Введение в программирование на ПЛИС.
Цель работы:
1.Ознакомиться с основами программирования ПЛИС на примере FPGA Xilinx Spartan 3E и языка VHDL.
2.Ознакомиться с основами языка описания схем VHDL (или Verilog).
3.Ознакомиться с платами разработчика на ПЛИС на примере платы Papilio One 500K.
35
Задания к лабораторной работе:
1.Установить среду Xilinx WebPack и программное обеспечение для платы разработчика на ПЛИС Papilio One 500K.
2.Собрать схему с двумя светодиодами с использованием платы разработчика на ПЛИС
Papilio One 500K.
3.Написать на языке VHDL (или Verilog) программу, включающей попеременно один из двух светодиодов с заданной частотой. Протестировать программу.
4.Написать и протестировать программу, реализующую калькулятор с четырьмя арифметическими операциями над целыми 32-битными числами, который доступен с персонального компьютера через виртуальный постедовательый порт поверх интерфейса USB.
Контрольные вопросы:
1.Какие виды ячеек и блоков имеются в ПЛИС и каковы выполняемые ими функции?
2.Какие имеются виды программных инструментов для разработчика на ПЛИС?
3.Каковы возможности и характеристики семейства Xilinx Spartan 3E?
4.Каковы возможности и характеристики платы разработчика на ПЛИС Papilio One 500K?
5.Каковы назначение и возможности языка VHDL (или Verilog)?
3. Примерные нормы времени на выполнение заданий контрольных точек
Контрольная точка |
Норма времени на выполнение |
|
(в часах) |
||
|
||
Защита лабораторной работы 1 |
1 |
|
Защита лабораторной работы 2 |
1 |
|
Защита лабораторной работы 3 |
2 |
|
Защита лабораторной работы 4 |
2 |
|
Защита лабораторной работы 5 |
2 |
|
Защита лабораторной работы 6 |
3 |
|
Коллоквиум |
1 |
|
Защита лабораторной работы 7 |
5 |
|
Защита лабораторной работы 8 |
2 |
|
Защита лабораторной работы 9 |
2 |
|
Коллоквиум |
1 |
|
Защита лабораторной работы 10 |
2 |
4. Рекомендуемая литература (основная и дополнительная)
а) основная литература:
1.Таненбаум Э. Остин Т. Архитектура компьютера. СПб.: Питер, 2013. –
816 с.
2.Многоядерные процессоры: Учебное пособие. Калачев А.В. – М.: Интернет-Университет Информационных Технологий: БИНОМ. Лаборатория знаний, 2011. – 247 с.
URL: http://www.intuit.ru/studies/courses/622/478/info
3.Гуров В.В. Архитектура микропроцессоров: Учебное пособие. – М.: Интернет-Университет Информационных Технологий: БИНОМ. Лаборатория знаний, 2010. – 272 с.
36
URL: http://www.intuit.ru/studies/courses/604/460/info
б) дополнительная литература:
4.Антошина И.В., Котов Ю.Т. Микропроцессоры и микропроцессорные системы (аналитический обзор): Учебное пособие. - М.: МГУЛ, 2005. – 432 с.
5.Зубков С.В. Assembler для DOS, Windows и UNIX. – М. ДМК, 2006. – 608
с.
6.Калачев А.В. Многоядерные процессоры: Учебное пособие. – М.: Интер- нет-Университет Информационных Технологий: БИНОМ. Лаборатория знаний, 2011. – 247 с.
7.Гук М., Юров В. Процессоры Pentium 4, Athlon и Duron. – СПб.: Питер,
2002. – 512 c.
8.Таненбаум Э. Архитектура компьютеров. СПб.: Питер, 2007. – 848 с.
9.В.В.Корнеев, А.В.Киселев Современные микропроцессоры, 3-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2003. – 440 с.
10.Корнеев В.В. Параллельные вычислительные системы. – М.: Нолидж,
1999. – 311 c.
11.Касперски К. Техника оптимизации программ. Эффективное использование памяти. – СПб.: БХВ-Петербург, 2003. – 464 с.
12.Грушин В.В. Выполнение математических операций в ЭВМ. Погрешности компьютерной арифметики: Учебное пособие / СПбГЭТУ "ЛЭТИ".
СПб., 1999. 56 с.
13.Папков В.И. Система памяти ЭВМ (Функциональный подход). Учеб. пособие. СПб.: Изд.центр СПбГМТУ. 2002. 238 с.
14.Столлингс В. Структурная организация и архитектура компьютерных систем. 5-е издание. - М.: Издательский дом "Вильямс", 2002. – 896 с.
15.D. Sima, T. Fountain, P. Kacsuk. Advanced computer architectures. New York: Addison Wesley Longman Inc., 1997.
16.Intel®64 and IA-32 Architectures Software Developer’s Manual, 2007.
в) учебно-методическая литература:
17.Эффективное программирование современных микропроцессоров: Учебное пособие. Маркова В.П., Киреев С.Е., Остапкевич М.Б., Перепелкин В.А. – Новосибирск: Изд-во НГТУ. 2014. – 148 с.
5. Требования к представлению и оформлению результатов СРС По результатам выполнения работы оформляется отчет в виде пояснитель-
ной записки. Отчет составляется в произвольной форме и должен включать следующую информацию:
Фамилию, имя и отчество студента, номер группы
Номер и название практического задания
Цель работы
Описание и обоснование хода работы
Исходные коды разработанной программы (программ)
37
Полученные результаты и их интерпретация с точки зрения поставленной цели
Заключение
Результаты выполнения практических заданий должны быть защищены перед преподавателем лично. Студент должен представить преподавателю отчет, продемонстрировать работоспособность разработанной программы (программ) и ответить на его вопросы по заданию.
6. Оценка выполнения СРС На защите результатов практической работы оценивается содержание отчета
иустный ответ студента. Критериями оценки отчета являются:
Наличие всей существенной информации по работе
Точность и полнота предоставляемых сведений
Непротиворечивость приводимой информации
Правильность интерпретаций и выводов, которые сделаны по результатам работы
Степень достижения студентом поставленной цели
Обоснованность применяемого решения
Грамотность (содержательная) используемых формулировок Критериями оценки устного ответа являются:
Демонстрация студентом понимания или непонимания теоретической основы работы
Точность ответов на поставленные вопросы
Способность рассуждать для получения ответов на дополнительные вопросы
Понимание студентом проделанной работы и ее результатов Итоговая оценка за защиту практической работы выставляется преподавателем в соответствии с предусмотренной балльно-рейтинговой системой.
38
