Работа в режиме профилировщика — КиберПедия 

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Работа в режиме профилировщика

2022-09-12 38
Работа в режиме профилировщика 0.00 из 5.00 0 оценок
Заказать работу

В режиме профилировщика программа будет исполняться, если задать опцию ‘–p’. В этом случае вместо трассы программа сгенерирует отчет о работе программы в виде текстового файла.

В процессе работы точного симулятора формируется результирующий файл, содержащий трассу выполненных команд, значения числа тактов от момента старта программы до момента выполнения команды, значения регистров и т.д. В общем случае этот файл имеет достаточно большой размер и его визуальный анализ представляется очень трудоёмким.

Для снижения трудоёмкости и времени анализа результирующего файла точного симулятора требуется создать программу-профилировщик, формирующего интегральные показатели работы симулируемой программы (в скобках приведены названия параметров в файле отчета профилировщика на английском языке):

1) общее время работы программы в тактах, в том числе:

- общее время работы программы (Total execution time);

- время работы отдельно скалярного процессора (Scalar execution time);

- время работы векторного сопроцессора (Vector execution time);

2) Количество обращений к памяти, включая:

- количество обращений к внутренней памяти (Internal memory access time);

- количество обращение к внешней памяти (External memory access time);

- суммарное время задержки обращений к памяти (Total time of memory access delays);

- для DDRAM:

-  количество переключений страниц (Number of switching pages);

- суммарное время переключений (Total switching pages time);

- доля переключений в общем времени (Persentage of switching to the whole executing time);

- время регененрации по каждому эмулируемому блоку памяти;

3) количество инструкций заданных типов, а именно:

- количество условных переходов, в том числе с выполненным условием и с невыполненным – сепаратно;

- количество взвешенных суммирований (Number of weighted sums);

- количество выполнений инструкций по указанным адресам: по каждому адресу, если по этому адресу располагается первое слово инструкции;

4) общее время простоя конвейера в тактах (Pipeline total downtime);

5) максимальное время работы функции: количество тактов между парой call‑return:

- общее время работы, включая работу вложенных функций;

- чистое время работы – без учёта времени работы вложенных функций;

- количество выполнений функции;

- %% от общего времени, как чистое время, так и время с вложенными вызовами;

6) количество условных переходов (общее время задержек на условных переходах, включая 2 составляющих: когда условие выполняется и когда нет);

7) ожидание доступности регистра или ФИФО – блокировки на этапе декодирования. Если инструкция зависает по причине недоступности нескольких ресурсов одновременно, то информация выдаётся о ресурсе, который внёс наибольший вклад в задержку;

 

При наличии в исполняемом файле информации об исходных кодах, при распечатке данных по каждой инструкции перед инструкцией выводится (при наличии) соответствующая строка на языке высокого уровня.

По умолчанию результат работы профилировщика выводится в виде текстового файла. Однако дополнительно разработана утилита makehtml, которая позволяет сгенерировать на основе текстового файла страницу в формате html. Данная утилита располагается в каталоге bin\htmler и представляет собой скрипт на языке Python.

Настройка программы

Данный раздел содержит методические рекомендации по применению программы симулятор.

Бинарный файл библиотеки эмулятора может быть загружен динамически посредством вызова стандартной функции ОС Windows LoadLibrary(«имя библиотеки»). В случае успешного выполнения данная функция возвращает дескриптор загруженной библиотеки. Затем необходимо получить адрес функции InitSys, которая создаст класс эмулятора и, в случае успеха, вернет указатель на класс TDbgInterface. Для получения адреса функций можно использовать стандартную функцию GetProcAddress, которая по имени функции возвращает ее адрес. Ниже приведен пример загрузки и инициализации эмулятора на языке С++:

// декларация типа функции CreateDevice

typedef TDbgInterface* (*tInitSys)();

// код инициализации эмулятора

HANDLE lib_handle; // дескриптор библиотеки

TDbgInterface* processor;

tInitSys    InitSystem; // указатель на функцию CreateDevice

// загрузка библиотеки

lib_handle = LoadLibrary(“simdll.dll”);

// получения адреса функции InitSys

InitSystem = (tInitSys)GetProcAddress(lib_handle,"InitSys");

// инициализация эмулятора

processor = InitSystem ();

После исполнения данного кода переменная processor будет содержать указатель на класс типа TDbgInterface, с помощью которого можно будет управлять процессом загрузки и исполнения программ на эмуляторе. Ниже приводиться пример загрузки бинарного файла test.abs в эмулятор, исполнения программы и получения результата работы программы, содержащегося в регистре gr0 процессора:

//

#define OUT_TEST_REG     0

#define OUT_TEST_REG_ARR 0 // gr[0]

TDbgInterface * processor;

// инициализация эмулятора

// запуск программы

uint 32 pc _ count;

// загрузка исполняемого файла

tDisAsmArea* elf_res = aCntr->LoadElf(“test.abs”);

// в случае ошибки загрузки файла – выходим

if(elf_res==NULL) exit(-1);

// предполагаем, что программа заканчивается по адресу pc + PC _ START _ OFFSET

pc _ count = aCntr -> GetPc (0);

// устанавливаем начальное значение регистра gr 0, gr 0 = 1

aCntr->SetReg(OUT_TEST_REG,OUT_TEST_REG_ARR,1);

// дабы избежать бесконечного цикла в случае ошибки,

// устанавливаем максимальное кол-во тактов

int num _ cycles =100000;

// цикл исполнения программы

while (num _ cycles >0)

{

     // проверка точки останова

uint 32 cur _ pc = aCntr -> GetPc (0);

     // если пришли к концу программы - выходим

if((pc_count + PC_START_OFFSET)==cur_pc) break;

// выполняем один шаг

aCntr -> StepInto ();

// декрементируем количество оставшихся циклов

num _ cycles --;

}

// получаем значение регистра gr0

int reg_res = aCntr->GetReg(OUT_TEST_REG,OUT_TEST_REG_ARR);

if (reg _ res!= REG _ TEST _ VAL) // если значение регистра не верное

{

     // выдаем сообщение об ошибке и выходим

  printf("error: wrong result: return value %d\n",reg_res);

return reg _ res;

}

// в случае успеха выходим из программы с кодом 0

exit(0);

 

Проверка программы

Назначение тестовой среды

Основное назначение тестовой среды – проверка правильности работы программного эмулятора процессора NM6406 и вспомогательных компонент, в частности трассировщика-профилировщика.

Компоненты тестовой среды

Для тестирования работы эмулятора используются следующие компоненты:

1) трассировщик (см. раздел 6);

2) ассемблер для процессоров семейства NeroMatrix NM6407;

3) линковщик для процессоров семейства NeroMatrix NM6407;

4) набор так называемых «коротких» тестов для проверки работы скалярных и векторных инструкций процессора NM6407. Программы написаны на языке ассемблера. В случае успеха, после исполнения каждого теста значения регистра gr0 будет равно 0. Если значение gr0 после окончания работы программ отлично от нуля, то считается, что тест прошел с ошибкой;

5) файл file_list.txt – содержащий список тестов, которые должны быть запущены;

6) скрипт для тестирования эмулятора под ос Windows (bach-файл);

7) скрипт для тестирования эмулятора под ос Linux (shell-скрипт);

8) программа Excel для сравнения результатов работы потактового эмулятора с эталонным временем работы тестов. Время работы тестов измеряется в тактах;

9) файл эталонных значений времен работы тестов.

 



Поделиться с друзьями:

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.023 с.