Тема_8_2010 Планирование работы конвейера (Лекции (ещё одни)), страница 3
Описание файла
PDF-файл из архива "Лекции (ещё одни)", который расположен в категории "". Всё это находится в предмете "вычислительные машины, системы и сети (вмсис)" из 7 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "вмсс" в общих файлах.
Просмотр PDF-файла онлайн
Текст 3 страницы из PDF
При подобной оптимизациицикла необходимо осознавать, что команды загрузки и записи являютсянезависимыми и могут чередоваться. Анализ зависимостей по данным позволяетнам определить, являются ли команды загрузки и записи независимыми.Разворачивание циклов представляет собой простой, но полезный методувеличения размера линейного кодового фрагмента, который может эффективнооптимизироваться.
Это преобразование полезно на множестве машин от простыхконвейеров, подобных рассмотренному ранее, до суперскалярных конвейеров,которые обеспечивают выдачу для выполнения более одной команды в такте.Методы, которые используются аппаратными средствами для динамическогопланирования загрузки конвейера и сокращают приостановки из-за конфликтов10типа RAW( Read After Write) (аналогичны рассмотренным выше методамкомпиляции).Устранение зависимостей по данным и механизмы динамическогопланированияОсновная идея динамической оптимизацииГлавным ограничением методов конвейерной обработки - является выдача длявыполнения команд строго в порядке, предписанном программой: если выполнениекакой-либо команды в конвейере приостанавливалось, следующие за ней команды такжеприостанавливались.Таким образом, при наличии зависимости между двумя близко расположенными вконвейере командами возникала приостановка обработки многих команд.
Но если имеетсянесколько функциональных устройств, многие из них могут оказаться незагруженными.Если команда j зависит от длинной команды i, выполняющейся в конвейере, то всекоманды, следующие за командой j должны приостановиться до тех пор, пока команда iне завершится и не начнет выполняться команда j. Например, рассмотрим следующуюпоследовательность команд:DIVD F0,F2,F4ADDD F10,F0,F8SUBD F8,F8,F14Команда SUBD не может выполняться из-за того, что зависимость между командамиDIVD и ADDD привела к приостановке конвейера.
Однако команда SUBD не имеетникаких зависимостей от команд в конвейере. Это ограничение производительности,которое может быть устранено снятием требования о выполнении команд в строгомпорядке.В рассмотренном конвейере структурные конфликты и конфликты по даннымпроверялись во время стадии декодирования команды (ID). Если команда могланормально выполняться, она выдавалась с этой ступени конвейера в следующие.
Чтобыпозволить начать выполнение команды SUBD из предыдущего примера, необходиморазделить процесс выдачи на две части: проверку наличия структурных конфликтов иожидание отсутствия конфликта по данным.Когда мы выдаем команду для выполнения, мы можем осуществлять проверкуналичия структурных конфликтов. Таким образом, мы все еще используемупорядоченную выдачу команд.Однако мы хотим начать выполнение команды, как только станут доступными ееоперанды. Таким образом, конвейер будет осуществлять неупорядоченное выполнениекоманд, которое означает и неупорядоченное завершение команд.Неупорядоченное завершение команд создает основные трудности при обработкеисключительных ситуаций.В машинах с динамическим планированием потока команд прерывания будутнеточными, поскольку команды могут завершиться до того, как выполнение более ранней11выданной команды вызовет исключительную ситуацию.
Таким образом, очень трудноповторить запуск после прерывания.Чтобы реализовать неупорядоченное выполнение команд, мы расщепляем ступень ID надве ступени:1. Выдача - декодирование команд, проверка структурных конфликтов.2. Чтение операндов - ожидание отсутствия конфликтов по данным и последующеечтение операндов.Затем, следует ступень EX. Поскольку выполнение команд ПТ может потребоватьнескольких тактов в зависимости от типа операции, мы должны знать, когда команданачинает выполняться и когда заканчивается.
Это позволяет нескольким командамвыполняться в один и тот же момент времени. В дополнение к этим изменениямструктуры конвейера мы изменим и структуру функциональных устройств, варьируяколичество устройств, задержку операций и степень конвейеризации функциональныхустройств так, чтобы лучше использовать эти методы конвейеризации.Динамическая оптимизация с централизованной схемой обнаружения конфликтовреализуется аппаратно.12.