Представление информации
<<  Представление результатов работы педагогов в соответствии с требованиями аттестации на квалификационную категорию Принцип интеграции в реализации образовательных областей в ДОУ  >>
Моделирование ориентированного графа управления
Моделирование ориентированного графа управления
Картинки из презентации «Система интерпретации промежуточного представления программы в оптимизирующем компиляторе» к уроку информатики на тему «Представление информации»

Автор: . Чтобы познакомиться с картинкой полного размера, нажмите на её эскиз. Чтобы можно было использовать все картинки для урока информатики, скачайте бесплатно презентацию «Система интерпретации промежуточного представления программы в оптимизирующем компиляторе.ppt» со всеми картинками в zip-архиве размером 2354 КБ.

Система интерпретации промежуточного представления программы в оптимизирующем компиляторе

содержание презентации «Система интерпретации промежуточного представления программы в оптимизирующем компиляторе.ppt»
Сл Текст Сл Текст
1Московский физико-технический институт 14переменная типа void* Получение функцией
Выпускная квалификационная работа Система параметров Копирование параметров в
интерпретации промежуточного представления регистры или в стек данных.
программы в оптимизирующем компиляторе. 15Моделирование стека данных. Стек
Студент: Битнер Вильгельм, 518 гр. Научный данных есть массив типа char Работа со
руководитель: Степанов П.А. стеком организована через 2 реперные точки
2Общие понятия. Промежуточное Rs( 8) и Rs( 9), соответствующие
представление (ПП) – особая форма указателям stack-pointer и frame-pointer
представления программы, предназначенного Стек моделируется в каждой процедуре как
для эффективной генерации кода и независимая составляющая. Исходная
проведения различных оптимизаций программа. struct TEST { int a; int b; int
программы. Основные составляющие формы ПП a1; int b1; double c; }; void foo( struct
Трехадресный код Ориентированный граф TEST test, short a1, char a2, int a3,
управления Типы ПП в оптимизирующем double a4, long long a5, int a6, int a7,
компиляторе архитектуры «Эльбрус» EIR – int a8, int a9, int a10 ) { ... } int
приближенная к языку Си форма ПП – main( void) { struct TEST test = {1, 2, 5,
основана на универсальных 8, 9.}; foo( test, 1, 2, 3, 4., 5, 6, 7,
платформо-независимых средствах языка 8, 9, 10); return 0; }.
IRE2K – платформо-зависимая форма ПП – 16Пример вызова функции и
основана на машинном коде целевой смоделированного стека данных.
архитектуры. Смоделированный код исходной программы.
3Использование форм ПП в процессе Реперные точки стека. Обработка параметров
оптимизирующей компиляции. функции. void foo( struct TEST A1,
4Проблематика. Виды проявления ошибок sint16_t A2, sint8_t A3, sint32_t A4,
Ошибки на этапе компиляции Ошибки на этапе float64_t A5, sint64_t A6, sint32_t A7,
исполнения Возникновение исключительной sint32_t A8, sint32_t A9, sint32_t A10,
ситуации Возврат неверных результатов sint32_t A11) { DefT_t( R, 1024) = {0};
Задача: Быстро и эффективно локализовать ... sint8_t Stack[size_S] = {0}; Rs( 8) =
ошибки в оптимизациях, приводящих к Stack + size_S; Rs( 9) = Stack; memcpy(
неверным результатам на этапах исполнения &Rd( 0), ( &A1) + 0), 8); memcpy(
программы Сложность диагностики ошибки: &Rd( 1), ( &A1) + 8), 8); memcpy(
Невозможно получить исполняемый файл &Rd( 2), ( &A1) + 16), 8); Rs( 3)
непосредственно после применения = A2; Rs( 4) = A3; Rs( 5) = A4; Rd( 6) =
конкретной оптимизации (без выполнения A5; Rd( 7) = A6; Rs( 8) -= 104; *(Rs( 8) +
последующих фаз) Как следствие, трудно 64) = A7; memset( (Rs( 8) + 68), 0, 4);
установить какая именно оптимизация *(Rs( 8) + 72) = A8; memset( (Rs( 8) +
выполняет некорректное преобразование. 76), 0, 4); *(Rs( 8) + 80) = A9; memset(
5Подход к решению задачи. Разработать (Rs( 8) + 84), 0, 4); *(Rs( 8) + 88) =
систему интерпретации промежуточного A10; memset( (Rs( 8) + 92), 0, 4); *(Rs(
представления (СИПП) программы с целью 8) + 96) = A11; memset( (Rs( 8) + 100), 0,
верификации оптимизаций. 4); ... }.
6Схема верификации оптимизации. 17Пример вызова функции и
7Этапы реализации транслятора СИПП. смоделированного стека данных.
Моделирование ориентированного графа Инициализация регистра подготовки передачи
управления Моделирование регистров управления. Подготовка переменных. Вызов
архитектуры «Эльбрус», представленных в ПП по косвенности. sint32_t main( void) { ...
Моделирование операций ПП Моделирование /* 30. CTPDCR [DISP 2 `foo`] -> C0 //
предикатного режима исполнения операций 30 */ C0 = &foo; /* 31. CALL C0 // 30
Моделирование типов переменных */ { struct TEST t1_31; memcpy(
Моделирование вызова функций Моделирование (&t1_31 + 0), &Bd( 0), 8); memcpy(
стека данных Моделирование APB. (&t1_31 + 8), &Bd( 1), 8); memcpy(
8Моделирование ориентированного графа (&t1_31 + 16), &Bd( 2), 8); {
управления. Средства реализации Узел ? sint16_t t2_31 = Bs(3); { sint8_t t3_31 =
метка с характерным названием Дуга ? Bs(4); { sint32_t t4_31 = Bs(5); {
оператор «goto». sint32_t main( sint32_t float64_t t5_31 = Bd(6); { sint64_t t6_31
A1) { Rs( 0) = A1; /* CFG Start Node 0 */ = Bd(7); { sint32_t t7_31 = *(Rs( 9) +
nodestart0: goto nodeif8; /* CFG If Node 8 64); { sint32_t t8_31 = *(Rs( 9) + 72); {
*/ nodeif8: /* 25. MOVs Rs0 */ Vs(1) = sint32_t t9_31 = *(Rs( 9) + 80); {
Rs(0); /* 42. CMPLEs Vs1 */ Ps(0) = ( sint32_t t10_31 = *(Rs( 9) + 88); {
Vs(1) <= 1 ); /* 9. CTPD C0 = sint32_t t11_31 = *(Rs( 9) + 96); {
&&nodereturn2; /* 10. BRANCH C0 */ typedef void proc_31( struct TEST,
if ( !Ps(0) ) goto *C0; /* 11. END */ goto sint16_t, sint8_t, sint32_t, float64_t,
nodereturn3; ... /* CFG Stop Node 4 */ sint64_t, sint32_t, sint32_t, sint32_t,
nodestop4: return ( result); }/* main */. sint32_t, sint32_t); ((proc_31
int main( int argc) { if ( argc > 1 ) { *)C0)(t1_31, t2_31, t3_31, t4_31, t5_31,
return 1; } else { return 0; } }. t6_31, t7_31, t8_31, t9_31, t10_31,
9Моделирование ориентированного графа t11_31); } }}}}}}}}}}} ... }.
управления. Условные переходы 18Моделирование APB (Array Prefetch
If-конструкции Switch-конструкции Buffer). Асинхронная предподкачка Подкачка
Особенность реализации switch-конструкции необходимых элементов массива заранее
Использование gnu-расширение компилятора перед исполнением Применение только для
gcc. void *_T_1[16]; int i_loop; for ( самых вложенных циклов APB – часть
i_loop = 0; i_loop < 16; i_loop++) { механизма предподкачки – временная память
_T_1[i_loop] = &&node96; } для подкаченных элементов массива
_T_1[13] = &&nodeif88; _T_1[11] = циклического фрагмента программы Важность
&&nodeif82; _T_1[4] = асинхронной предподкачки Ускорение
&&nodeif76; _T_1[2] = процесса обращения в память во время
&&nodeif70; _T_1[9] = исполнения и, как следствие, уменьшение
&&nodeif64; _T_1[12] = времени исполнения программы Моделирование
&&nodeif16; _T_1[15] = Определение буфера, соответствующему
&&nodeif9; _T_1[0] = физической реализации APB Предварительное
&&nodeif3; ... /* 31. CTPG */ C0 = заполнение буфера (предподкачка)
_T_1[0]; /* 10. BRANCH C0 */ goto *C0; Инициализация базы массива Заполнение
10Моделирование регистров архитектуры буфера начиная с инициализированной базы
«Эльбрус», представленных в ПП. Регистры Последующее заполнение буфера по мере его
архитектуры «Эльбрус» моделируются с освобождения, что является продолжением
помощью локальных переменных языка Си 32-х предварительного чтения.
разрядные регистры моделируются 19Моделирование асинхронной
переменными типа «int», 64-х разрядные - предподкачки. Чтение из буфера APB. Начало
переменными типа «long long int». асинхронной предподкачки в буфер APB.
11Моделирование операций ПП. Начинается загрузка программы асинхронной
Элементарные операции: замена аналогичными предподкачки в APB. Инициализация
операциями языка Си (ADD ? «+»; DIV ? «/» регистров доступа к массиву. Остановка
и т.д.) Специфические операции: асинхронной предподкачки. node 51. CTPL
моделирование функциональности операции в AAU BAP. node 50. MOVA. node 52. EAP.
отдельной процедуре с последующим вызовом nodeif50: if( !Was_Prefetch ) {
процедуры вместо операции getf insf Was_Prefetch = 1; IntroduceLDOVL(
Операции доступа к памяти load/store -> &apb, 255); BAP( &apb, 0, -1); }
чтение/запись по указателю Инициализация /* 129. ENTER // 6 */ /* 130. SHLs Vs0 0x2
указателя аргументами операции. -> Vs4 // 8 */ Vs(4) = (Vs(0) <<
12Моделирование предикатного режима 2); /* 164. MOVAW No.0 ind 0 am 1 ->
исполнения операций. Предикат – регистр, Vs6 // 8 */ Vs(6) = mova( 0, 0, 1, 1,
смоделированный аналогично регистрам &apb); /* 132. ADDs Vs1 Vs6 -> Vs1
архитектуры «Эльбрус» (переменная Ps) // 8 */ Vs(1) = (Vs(1) + Vs(6)); /* 133.
Моделируется предикатный режим исполнения ADDs Vs0 0x1 -> Vs0 // 6 */ Vs(0) =
операции передачи управления. nodeif8: /* (Vs(0) + 1); /* 134. CMPLs Vs0 0x64 ->
23. ENTER // 3 */ /* 25. MOVs Rs0 -> P1 [T] // 6 */ Ps(1) = (Vs(0) < 100);
Vs1 // 3 */ Vs(1) = Rs(0) /* 42. CMPLEs /* 135. CTPD -> C0 // 6 */ C0 =
Vs1 0x1 -> P0 [T] // 3 */ Ps(0) = &&nodeif50; /* 136. BRANCH C0 P1
(Vs(1) <= 1) /* 9. CTPD -> C0 // 3 [T] // 6 */ if ( Ps(1) ) goto *C0; /* 137.
*/ C0 = &&nodereturn2; /* 10. END // 6 */ goto node52; int foo ( int
BRANCH C0 P0 [F] // 3 */ if ( !Ps(0) ) ar[]) { int i, sum; for ( i = 0; i <
goto *C0; /* 11. END // 3 */ goto 100; i++ ) { sum += ar[i]; } return
nodereturn3; (int)(sum/100); } int main ( void) { int
13Моделирование типов переменных. i, a[100]; for ( i = 0; i < 100; i++ )
Базовые типы переменных (char, int, float { a[i] = i; } printf( "Average =
и т.д.) Сложные типы переменных – все типы %d\n", foo( a)); return 0; }`.
использованные в исходной программе в node52: /* 140. ENTER // 6 */ /* 141. END
моделирующем коде восстановлены с помощью // 6 */ STOP_APB( &apb); goto
эквивалентных средств языка Си. struct nodereturn4; node51: /* 138. ENTER // 6 */
xsym { ... }; struct xint { long xi_int; /* 145. MOVs 0x64 -> Vs10 // 6 */
}; struct xfloat { float xf_float; }; Vs(10).i = 100; ... /* 159. ADDs Vs14 Vs2
typedef union { struct xsym n_xsym; struct -> Vs3 // 6 */ Vs(3) = (Vs(14) +
xint n_xint; struct xfloat n_xfloat; Vs(2)); /* 160. AAURWs Vs3 -> AAIND //
}class152711628_t; struct node { sint8_t 6 */ AAIND(1) = Vs(3); /* 157. CTPL ->
n_type; sint8_t n_flags; class152711628_t C1 // 6 */ AAIND( 0) = 0; AAINCR( 0) = 1;
n_info; }; typedef struct node { char CTPL_node = &&continue_157; goto
n_type; char n_flags; union { struct xsym node53; continue_157: /* 163. AAURWq Vq128
{ ... } n_xsym; struct xint { long xi_int; -> AAD // 6 */ AAD(0) = Vd(128);
} n_xint; struct xfloat { float xf_float; *(&AAD(0) + 1)= *(&Vd(128) + 1);
} n_xfloat; } n_info; } NODE; /* 139. END // 6 */ goto nodeif50;
14Моделирование вызова функций. Передача 20Заключение. Разработана система
параметров функции при ее вызове интерпретации промежуточного представления
Объявление переменных необходимого программы Произведено успешное
количества и нужного типа Инициализация тестирование системы на 230 тестах пакета
переменных путем копирования участка тестов SpecPerf (пакет тестов для
памяти из регистров или стека данных Вызов операционного контроля производительности
функции Вызов по косвенности – вызов через оптимизирующего компилятора) Реализована
указатель, инициализированный возможность трансляции 20 оптимизаций
смоделированным регистром подготовки Дальнейшие развитие СИПП Завершение
передачи управления Регистр подготовки отладки на пакете тестов SpecPerf Покрытие
передачи управления моделируется как всей линейки оптимизации.
Система интерпретации промежуточного представления программы в оптимизирующем компиляторе.ppt
http://900igr.net/kartinka/informatika/sistema-interpretatsii-promezhutochnogo-predstavlenija-programmy-v-optimizirujuschem-kompiljatore-226715.html
cсылка на страницу

Система интерпретации промежуточного представления программы в оптимизирующем компиляторе

другие презентации на тему «Система интерпретации промежуточного представления программы в оптимизирующем компиляторе»

«Представление чисел в компьютере» - Особенности работы компьютера. Представление вещественных (действительных) чисел. Числа в памяти компьютера. Как разместить число -25? 32 – разрядная – числа с обычной точностью 64 – разрядная числа с двойной точностью. Машина продолжает считать, но результаты могут оказаться неправильными. Практические задания:

«Представление информации» - Представление информации в компьютере. Представление графики в компьютере. Текстовая Числовая Графическая Звуковая. Представление звуковой информации в компьютере. Содержание. Представление текстовой информации. Объективность Достоверность Полнота Адекватность Актуальность Доступность. Представление числовой информации.

«Наглядные формы представления информации» - Наглядные формы представления информации: рисунки. Схема предложения. Схема безопасного маршрута домой и в школу. Дорожные знаки. В) Ученики нашего класса? Б) Имя существительное. Тема: Наглядные формы представления информации. Наглядные формы представления информации: диаграммы. Таблица химических элементов Менделеева.

«Формы представления алгоритма» - Перечень вариативных программ (основная школа). Переход улицы через дорогу. Требования государственного образовательного стандарта к теме «Формы представления алгоритмов». Задача Угадайте, какое литературное произведение зашифровано в следующей блок-схеме. Целевые направления темы «Формы представления алгоритмов».

«Представление чисел в памяти компьютера» - Дополнительный код для положительного числа совпадает с прямым кодом. Беззнаковый целый тип. Ячейка. - Обратный код. Объясните необходимость использования целочисленных типов данных. Обратный код для положительного числа совпадает с прямым кодом. Двоичное кодирование чисел в компьютере. - Прямой код.

«Представление о мире» - Аристотель и Платон. Рафаэль Санти. Аристотелевская система мира сохранилась до эпохи Коперника. 4 спутника Юпитера. Развитие представлений о Солнечной системе. Иоганн Кеплер (1571-1630) – развив учение Коперника открыл законы движения планет. Значение гелиоцентрической системы мира. Первые представления об устройстве мира.

Представление информации

12 презентаций о представлении информации
Урок

Информатика

130 тем
Картинки
900igr.net > Презентации по информатике > Представление информации > Система интерпретации промежуточного представления программы в оптимизирующем компиляторе