Структурные конфликты и способы их минимизации. Конфликты по данным, остановы конвейера и реализация механизма обходов
Существует 3 класса конфликтов: 1.Структурный конфликт, который возникает из-за конфликтов по ресурсам. 2.Конфликт по данным – выполнение команды зависит от результата предыдущей. 3.Конфликты по управлению, возникают при выполнении команд условного перехода.
Рассмотрим структурный конфликт. Совмещенный режим выполнения команд требует конвейеризацию операционных устройств и дублирование ресурсов системы для разрешения всех возможных команд в конвейере. Типичным примером является вычислительная система с наличием ОУ, выполняющая свою задачу за несколько тактов конвейера. В этом случае команды и данные не могут поступать на вход устройства. Т.е. происходит структурный конфликт по причине недостаточного дублирования ресурсов.(В системе есть один код для записи в память, а двум командам нужно произвести запись в память.) Для разрешения конфликтов первого типа широко используется принцип обходных путей. Рассмотрим конфликт по данным. Причина заложена не только в архитектуре и структуре процессора, но и структуре программы. Такой конфликт возникает везде, где между командами возникает зависимость и эти команды находятся так близко друг к другу, что совмещение операций не возможно.
Типы конфликтов по данным: 1 тип: чтение после записи (RAW); 2 тип: запись после чтения (WAR), j пытается записать данные раньше, чем i их считает. 3 тип: запись после записи (WAW), в результате в ячейке памяти оказываются не те данные. 10. Сокращение потерь на выполнение команд переходов и минимизация конфликтов по управлению. Минимизация конфликтов по уровню. Конфликты по уровню могут вызывать даже большие потери, чем конфликты по данным. Команды условного перехода может изменить значение счетчика программ (тогда такой переход называют выполняемым, а если не изменяет, то невыполняемым) Простейший способ борьбы с такими конфликтами заключается в приостановке конвейера. Как только обнаруживается команда условного перехода, конвейер останавливается, пока она не достигнет ступени, которая вычисляет новое значение счетчика программы. На втором такте происходит дешифрация команды условного перехода и конвейер останавливается. Далее возобновляет свою работу на 5ом такте в момент вычисления целевого адреса. Таким образом команда i могла быть загружена в конвейер в любом случае. Существует несколько методов по борьбе с конфликтами по управлению: статический и динамический. В 1-ом случае прогнозирование направления перехода фиксируется для каждой команды условного перехода на все время выполнения команды, то есть могут быть используемые на уровне компилятора. Во 2-ом случае схема прогнозирует реализацию автоматически.
Статическое: 1)Метод ожидания 2)Метод возврата 3)Вживания перехода 1. Представляет собой простейший способ обработки данных конфликтов и заключается в остановке выполнения всех команд в конвейере с момента дешифрации команд условного перехода до момента вычисления целевого адреса. 2. Более эффективной и не намного более сложный метод возврата состоит в том, чтобы прогнозировать условный переход как невыполнимый. В этом случае аппаратура процессора продолжает выполнение команды как будто команды условного перехода не было. Однако если условный переход оказывается выполняемым, то конвейер очищается и заново производится выборка команд. Используется и альтернативная схема, когда условный переход прогнозируется выполняемым. 3. Идея метода заключатся в том, что между моментом загрузки команды условного перехода и собственно переходом по выбранной ветке в конвейер загружаются команды, не связанные с выполнением команды условного перехода.
|