Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 8 лет назад пользователемВадим Балабанов
1 Имитационное моделирование в исследовании и разработке информационных систем Лекция 2 Кафедра АСВК, Лаборатория Вычислительных комплексов с.н.с. Бахмуров Анатолий Геннадьевич Наблюдение за работой ИС
2 Industrial Engineering - EMJАнтоненко В.А. Волканов Д.Ю Содержание лекции Наблюдение за работой системы –Аппаратные наблюдатели –Программные наблюдатели –Анализ результатов наблюдения Роль наблюдения в ходе отладки программы
3 Отладка программы (или управляющей системы) Наблюдение за поведением системы Проверка соблюдения заданных свойств поведения Воздействие на систему Программные и аппаратные наблюдатели
4 Аппаратные наблюдатели Встроенные в аппаратуру вич. сист. Отладочные регистры процессора JTAG Универсальные внешние Электронный (цифровой) осциллограф Логический анализатор Специализированные Анализаторы периферийного интерфейса
5 Отладочные регистры на x86 6 регистров: DR0-DR3,DR6,DR7 Точки останова (4 шт.): по чтению; по записи и чтению; по выполнению; по обращению к порту ввода-вывода. Нельзя задать условие по диапазону адресов
6 Встроенные отладочные средства (JTAG – Joint Test Action Group) Набор специальных блоков в составе ИС (существенно зависит от типа ИС) Управление этими блоками по интерфейсу JTAG Возможность разрывать связи между блоками ИС, устанавливать заданные значения на разорванных связях Управление микропроцессором в целях отладки: точки останова, просмотр и запись регистров
7 Универсальные наблюдатели Индикаторы Электронный осциллограф Непрерывные и дискретные сигналы Обычно 1-4 канала Непрерывная и ждущая развертка Задержка запуска развертки Логический анализатор Цифровой сигнал Десятки-сотни каналов Задание условий запуска и окончания регистрации
8 Шинный интерфейс Объединяет несколько устройств (абонентов) (десятки-сотни) Один набор сигнальных линий для обменов между всеми абонентами (есть исключения для служебных линий) В каждый момент времени возможна передача только одним абонентом Процедура арбитража для избежания конфликтов Стандартизованы: протоколы, электрические и механические характеристики
9 Анализаторы шины Гранит-ВТ Silicon Control Inc Curtiss-Wright Electronics systems (быв. VMETRO) LeCroy Inc Tektronix Inc VME, PCI, PCI-Express и т.д. Ethernet, USB, LPT Доп. входы ПО отображения и управления x86-windows
10 Настройки анализатора шины Условия начала и окончания регистрации Что регистрировать (фильтр) Как отображать
11 Вид 1: таблица обменов
12 Вид 2: временная диаграмма
13 Выбор событий для регистрации Регистрация обменов Регистрация сигналов Выбор отдельных сигналов Условие начала регистрации Условие записи сигнала (фильтр)
14 Выбор событий для регистрации (2)
15 Выбор событий (3) Элементарное событие Условие на состояние групп сигналов шины (=,, от.. до) Ограниченное число событий (8, 32) Выражение над событиями (И, ИЛИ, НЕ) Конечный автомат (8 состояний) Условие перехода в новое состояние Что записывать, находясь в данном состоянии Возбуждать ли триггер Положение триггера относительно буфера
16 Анализатор: интерфейс пользователя Прокрутка Измерение интервалов времени Фильтр по группам сигналов шины Поиск по группам сигналов шины Сохранение трассы Сравнение трасс Программное управление (API)
17 Анализ производительности Загруженность BusBusy, BusIdle, DataPhase, WaitState Пропускная способность Все обмены, или по приоритетам По диапазонам адресов Запаздывание Master от выставления адреса до первого слова данных Target от запроса первого слова данных до выставления Arbitration от запроса до разрешения
18 Имитация абонента шины Инициатор (master) Адрес, длина Режим (пословный, пакетный) Запись, чтение, запись с проверкой Подчиненное устройство (target) Диапазон адресов Число тактов ожидания Ответ (OK, retry, fail) Инициализация памяти Просмотр и сохранение
19 Имитация протокола шины
20 Программные наблюдатели: уровень операционной системы Трассировка системных вызовов % strace /bin/cat // Динамическая загрузка open("/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\226\1\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size= ,...}) = 0 mmap2(NULL, , PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb75a0000 mmap2(0xb , 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a4) = 0xb mmap2(0xb , 10972, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb close(3) = 0
21 Вывод strace(2) read(0, "fkjdfkjfd\n", 32768) = 10 write(1, "fkjdfkjfd\n", 10) = 10 read(0, "sdcdscdsv\n", 32768) = 10 write(1, "sdcdscdsv\n", 10) = 10 read(0, "fbfb\n", 32768) = 5 write(1, "fbfb\n", 5) = 5 read(0, "", 32768) = 0 close(0) = 0 close(1) = 0 close(2) = 0 exit_group(0) = ?
22 Трассировка библиотечных функций % ltrace /bin/cat 2> ltrace.out __libc_start_main(0x , 1, 0xbfb66534, 0x80500d0, 0x getpagesize() = 4096 strrchr("/bin/cat", '/') = "/cat" setlocale(6, "") = "en_US.UTF-8" bindtextdomain("coreutils", "/usr/share/locale") = "/usr/share/locale" textdomain("coreutils") = "coreutils" __cxa_atexit(0x804a2f0, 0, 0, 0xb7769ff4, 0) = 0 getopt_long(1, 0xbfb66534, "benstuvAET", 0x , NULL) = -1 __fxstat64(3, 1, 0xbfb6641c) = 0 __fxstat64(3, 0, 0xbfb6641c) = 0
23 Трассировка библиотечных функций (2) posix_fadvise64(0, 0, 0, 0, 0) = 0 malloc(36863) = 0x097e0890 read(0, "qwerty\n", 32768) = 7 write(1, "qwerty\n", 7) = 7 read(0, "", 32768) = 0 free(0x097e0890) = close(0) = 0 exit(0
24 Время в операционной системе #include struct timespec { time_t tv_sec; int tv_usec; // нано }; struct tm {} time() sleep()
25 Измерение времени в ОС (2) /usr/bin/time myfile real user sys Команда rdtsc в x86 – число тактов ЦП с момента запуска
26 Профилирование программ: gprof % gcc –pg a.c % a.out(создаётся gmon.out) % gprof Выборка 100 раз в секунду Число вызовов функций Время, проведённое в каждой функции Граф вызовов
27 valgrind % valgrind myfile % valgrind -- tool=cachegrind myfile Проверка некоторых условий корректности работы с указателями и malloc/free Анализ работы гипотетической кэш-памяти Построение графа вызовов функций Возможность добавления инструментов
28 Лабораторная работа 1 Измерение времени выполнения программы (файл b.c) Используйте команду time rdtsc (как вставлять asm в Си?) Повторите замер несколько раз Как уменьшить разброс результатов? Поменяйте порядок обхода массива. Почему изменилось время? Попробуйте разные уровни оптимизации компилятора
29 Программа для замера времени выполнения #include #define SIZE float a[SIZE][SIZE]; void main( int argc, char **argv ) { float b; int i,k; b=0; for( i = 0; i < SIZE; i++ ) for( k = 0; k < SIZE; k++ ) b = b + a[i][k]; }
30 Варианты задания Замер любых других временных характеристик вичислительной системы: Объяснение, как проводилось измерение; меры по снижению погрешности; Результаты; Изменение настроек, что получилось и почему?
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.