Национальный исследовательский ядерный университет «МИФИ»
Опубликован: 05.04.2005 | Доступ: свободный | Студентов: 17149 / 6009 | Оценка: 4.25 / 4.16 | Длительность: 12:55:00
Специальности: Разработчик аппаратуры
Лекция 11:

Конвейерная организация работы процессора

< Лекция 10 || Лекция 11: 123 || Лекция 12 >

Существует несколько типов конфликтов по данным.

  1. Конфликты типа RAW ( Read After Write ): команда j пытается прочитать операнд прежде, чем команда i запишет на это место свой результат. При этом команда j может получить некорректное старое значение операнда.

    Проиллюстрируем этот тип конфликта на примере выполнения команд, представленных в табл. 11.1. Пусть выполняемые команды имеют следующий вид:

    i)      ADD R1,R2;   R1 = R1+R2
    i+1=j)  SUB R3,R1;   R3 = R3-R1

    Команда i изменит состояние регистра R1 в такте 5. Но команда i+1 должна прочитать значение операнда R1 в такте 4. Если не приняты специальные меры, то из регистра R1 будет прочитано значение, которое было в нем до выполнения команды i.

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

    Конфликты типа RAW обусловлены именно конвейерной организацией обработки команд.

    Главной причиной двух других типов конфликтов по данным является возможность неупорядоченного выполнения команд в современных микропроцессорах, то есть выполнение команд не в том порядке, в котором они записаны в программе.

  2. Конфликты типа WAR ( Write After Read ): команда j пытается записать результат в приемник, прежде чем он считается оттуда командой i, При этом команда i может получить некорректное новое значение операнда:

    i)       ADD R1,R2
    i+1 =j)  SUB R2,R3

    Этот конфликт возникнет в случае, если команда j вследствие неупорядоченного выполнения завершится раньше, чем команда i прочитает старое содержимое регистра R2.

  3. Конфликты типа WAW ( Write After Write ): команда j пытается записать результат в приемник, прежде чем в этот же приемник будет записан результат выполнения команды i, то есть запись заканчивается в неверном порядке, оставляя в приемнике результата значение, записанное командой i:

    i)   ADD R1,R2
             . . .
    j)   SUB R1,R3

    Устранение конфликтов по данным типов WAR и WAW достигается путем отказа от неупорядоченного исполнения команд, но чаще всего путем введения буфера восстановления последовательности команд.

    Как отмечалось выше, наличие конфликтов приводит к значительному снижению производительности микропроцессора. Определенные типы конфликтов требуют приостановки конвейера. При этом останавливается выполнение всех команд, находящихся на различных стадиях обработки (до 20 ти команд в Pentium-4 ). Другие конфликты, например, при неверном предсказанном направлении перехода, ведут к необходимости полной перезагрузки конвейера. Потери будут тем больше, чем более длинный конвейер используется в микропроцессоре. Такая ситуация явилась одной из причин сокращения числа ступеней в микропроцессорах последних моделей. Так, в микропроцессоре Itanium конвейер содержит всего 10 ступеней. При этом его тактовая частота составляет около 1 МГц [2]. Однако на каждой ступени выполняется больше функциональных действий, чем в Pentium-4.

< Лекция 10 || Лекция 11: 123 || Лекция 12 >
Илья Бекиров
Илья Бекиров
Кирилл Кондратьев
Кирилл Кондратьев