Главная » Просмотр файлов » А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий

А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (1114947), страница 175

Файл №1114947 А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий) 175 страницаА.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (1114947) страница 1752019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 175)

Мы рассмотрим простой, но высокоэффективный алгоритм для решения этой задачи, называющийся планирование списка (1ци зсЬедц1(п8). 10.3.1 Графы зависимости данных Представим каждый базовый блок машинных команд при помощи графа зависимости данных (ба1а-береженое 8гарЬ) С = (Х, Е), содержащего множество узлов Х, представляюгдих операции в машинных командах базового блока, и множества ориентированных ребер Е, представляющих ограничения зависимостей данных между операциями. Узлы и ребра графа С строятся следующим образом.

1. Каждая операция п Е )ч' имеет таблицу резервирования ресурсов ЛТ„, которая представляет собой таблицу резервирования ресурсов для типа операции п. 2. Каждое ребро е е Е помечено задержкой с(„указывающей, что целевой узел должен быть выполнен не ранее, чем через И, тактов после выполнения исходного узла. Предположим, что за операцией п~ следует операция пз, причем обе обращаются к одной и той же ячейке памяти с запаздываниями 1~ и 1з соответственно.

Иначе говоря, значение в ячейке создается через 1~ тактов после начала первой команды и требуется второй команде через 1з тактов после ее начала (типичными являются значения 1~ = 1 и 1з = О). В таком случае в множестве Е имеется ребро п~ — из, помеченное задержкой 1~ — 1з. !) 10 г1, 2) 10 г2, 3) А1з1З т1, 4) Ь1З г2, 5) 11З гз, 6) А1зр г2, 7) АР0 г1, 8) 11З г2, 9) Ь1Э гЗ, 10) АИ1 г2, 11) АОй г1, х т2, гз т1, г2 у г г2, гз г1, г2 // // // // // // // // // // // 859 10.3. Планирование базовых блоков Пример 10.6. Рассмотрим простую машину, которая может выполнять в каждый момен~ времени две операции.

Первая должна быть либо операцией ветвления, либо операцией АЛУ вида ОР с(ат., вгс1, агс2 Вторая операция должна быть операцией загрузки или сохранения вида 10 с(ас, айдг ЯТ ас(с(г, вгс Операция загрузки (1О) полностью конвейеризуема и занимает два такта. Однако немедленно за загрузкой может следовать сохранение (ЯТ), которое записывает считанные данные в память. Все прочие операции выполняются за один такт. На рис. 10.7 приведен граф зависимости данных для примера базового блока и его требования к ресурсам. Можно представить, что 81 — указатель на стек, используемый для обращения к данным в стеке со смещениями 0 и 12.

Первая команда загружает значение в регистр В2, и это значение становится доступным только спустя два такта после начала команды. В связи с этим ребра от первой команды ко второй и пятой, в каждой из которых требуется значение 82, помечены меткой 2. Аналогично задержка 2 указана и у ребра от третьей команды к четвертой; значение, загруженное в регистр ВЗ, требуется четвертой команде и становится доступно через два такта после начала третьей команды. Поскольку мы не знаем, как связаны между собой значения 81 и В7, мы должны рассматривать возможность того, что адрес наподобие 8 ( В1 ) тот же, что и адрес 0 (В7 ) . Иначе говоря, последняя команда может сохранять значение по тому же самому адресу, из которого выполняет чтение третья.

Используемая нами модель машины позволяет выполнять сохранение в ячейке памяти через один такт после того, как мы выполнили чтение из нее, даже если за этот срок значение еще не появилось в регистре. Это замечание объясняет метку 1 у ребра от третьей команды к последней. Такая же аргументация поясняет наличие ребра от первой команды к последней и его метку 1. Оставшиеся ребра с метками ! объясняются либо явными зависимостями, либо возможными зависимостями, связанными со значением Р.7, и 10.3.2 Планирование списков базовых блоков Простейший подход к планированию базовых блоков включает посещение каждого узла графа зависимости данных в "приоритетном топологическом порядке".

Поскольку в графе зависимости данных циклы отсутствуют, всегда имеется 860 Глава 10. Параллелизм на уровне команд Таблицы резервирования ресурсов АЛУ МОП Зависимости данных ПЕ Рис. 10.7. Граф зависимости данных к примеру 10.6 как минимум одно топологическое упорядочение его узлов. Однако среди возможиых топологических упорядочений одни предпочтительнее других. В разделе 10.3.3 будут рассмотрены некоторые стратегии выбора топологического упорядочеиия, ио пока что мы просто будем считать, что существует некоторый алгоритм выбора предпочтительного упорядочения. Описанный далее алгоритм планирования списка посещает узлы в выбранном приоритетном топологичсском порядке. Узлы могут быть спланированы к выполнению как в порядке посещеиия, так и в некотором ином порядке.

Но при этом команды планируются к выполнению как можно ранее, так что порядок плаиироваиия команд приближается к порядку посещения узлов. Говоря более детально, алгоритм вычисляет наиболее раннее время, когда может быть вычислен каждый из узлов, в соответствии с ограничениями зависимости данных ранее спланированных узлов. Затем выполняется проверка наличия требующихся для узла ресурсов в таблице резервирования ресурсов, в которой собраны все выделенные к настоящему времени ресурсы. Узел планируется к выполнению в самый ранний момент, в который имеется достаточно ресурсов. 861 10.3.

Планирование базовых блоков Графическое изображение таблиц резервирования ресурсов Зачастую удобно визуализировать таблицу резервирования ресурсов для операции в виде сетки с закрашенными и пустыми ячейками. Каждый столбец соответствует одному из ресурсов машины, а каждая строка — одному из тактов выполнения операции. В предположении, что никакая операция не требует более одной единицы одного ресурса, можно представить единицы закрашенными квадратами, а нули — пустыми. Кроме того, если операция полностью конвейеризуема, то все, что нам надо, — указать используемые ресурсы в первой строке, и таблица резервирования ресурсов при этом превратится в единственную строку. Такое представление использовано, например, в примере 10.6. На рис.

10.7 таблицы резервирования ресурсов показаны в виде строк. Две операции сложения требуют ресурс АЛУ, а операции загрузки и сохранения— ресурс МОП. Алгоритм 10.7. Планирование списка базового блока ВхОд: вектор ресурсов машины К = ]гы гз,...], где г, — количество доступных единиц ресурса 1-го вида, и граф зависимости данных С = 1%, Е). Каждой операции п е Ж сопоставлена таблица резервирования ресурсов КТ„; каждое ребро е = и, — пз из Е имеет метку И„указывающую, что пз должна выполняться не ранее чем через д, тактов после пп Выход: план Я, который отображает операции из Х на временные интервалы, когда удовлетворяются все ограничения по ресурсам для данных операций и когда может начинаться выполнение последних. Метод: выполнить программу, приведенную на рис. 10.8. Вопрос о том, что такое "приоритетный топологический порядок", рассматривается в разделе 10.3.3.

и 10.3.3 Приоритетные топологические порядки Планирование списка работает без откатов: каждый узел планируется раз и только раз. Это планирование использует эвристическую функцию приоритета для выбора очередного узла среди узлов, готовых к планированию. Вот некоторые наблюдения о возможных приоритетных упорядочениях узлов. ° При отсутствии ограничений, связанных с ресурсами, кратчайший план получается при помощи критического пути 1сп11са! ра1П) — самого длинного пути в графе зависимости данных.

Метрика, используемая в качестве 862 Глава 10. Параллелизм на уровне команд ВТ = пустая таблица резервирования ресурсов; 1ог 1каждый п Е Ю в приоритетном топологическом порядке) 1 гпахб=р п)ее Ф (Р) + <~е) /* Поиск самого раннего времени возможного начала команды на основе заданного времени начала ее предшественницы. ~! тки~!е 1сушествует 1 такое, что КТ (в + 1] + ЛТ„(г( ) 72) а=а+1; !* Задержка в выполнении команды до тех пор, пока не будут доступны все необходимые ресурсы. *! Я(п) = а; 1ог 1всех 1) ггТ[а+1( = ттТ(а+1(+ КТ„[1( Рис.

10.8. Алгоритм планирования списка функции приоритета, — высота узла, представляюшая собой длину самого длинного пути от данного узла в графе. ° С другой стороны, если все операции независимы, то длина плана ограничена доступными ресурсами. Критический ресурс — это ресурс с наибольшим отношением количества использований к количеству доступных единиц ресурса. Более высокий приоритет могут иметь операции, используюшие более критические ресурсы. ° Наконец, для разрешения неопределенностей можно использовать исходный порядок операций — операция, находяшаяся в исходной программе раньше других, должна быть спланирована первой.

Пример 10.8. В случае графа зависимости данных, приведенного на рис. 10.7, критический путь имеет длину 6 тактов, включая время выполнения последней команды. Это путь, включаюший пять последних узлов, — от загрузки цЗ до сохранения Р,7. Суммарные задержки вдоль ребер этого пути равны 5, и к ним мы добавляем еше одну единицу — такт, необходимый для выполнения последней команды. При использовании высоты в качестве функции приоритета алгоритм 10.7 дает оптимальный план, показанный на рис.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее