Переупорядочить буфер
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Буфер повторного порядка ( ROB ) — это аппаратный блок, используемый в расширении алгоритма Томасуло для поддержки внеочередного и спекулятивного выполнения инструкций. Расширение требует, чтобы инструкции фиксировались по порядку.
Буфер представляет собой кольцевой буфер (обеспечивающий очередь упорядочения инструкций FIFO ), реализованный как массив/вектор (что позволяет записывать результаты выполнения инструкций по мере их выполнения не по порядку).
Алгоритм Томасуло состоит из трех этапов: «Выпуск», «Выполнение», «Запись результата». В расширении алгоритма есть дополнительный этап «Commit». На этапе фиксации результаты инструкций сохраняются в регистре или памяти. Этап «Запись результата» изменен для помещения результатов в буфер повторного порядка. Для этой цели каждая инструкция помечается на станции резервирования своим индексом в ROB.
Содержимое буфера используется для зависимостей данных других инструкций, запланированных в буфере. Головка буфера будет зафиксирована, как только его результат станет действительным. Его зависимости уже будут рассчитаны и зафиксированы, поскольку они должны находиться перед инструкцией в буфере, но не обязательно рядом с ней. Зависимости данных между инструкциями обычно приводят к остановке конвейера, пока инструкция ожидает зависимых значений. ROB позволяет конвейеру продолжать обработку других инструкций, обеспечивая при этом фиксацию результатов, чтобы предотвратить такие опасности данных , как чтение перед записью (RAW), запись перед чтением (WAR) и запись перед записью (WAW).
В каждой записи буфера есть дополнительные поля для поддержки расширенного алгоритма:
- Тип инструкции (переход, сохранение в памяти, сохранение в регистр)
- Назначение (либо адрес памяти, либо номер регистра)
- Результат (значение, идущее к месту назначения, или указание на (не)успешный прыжок)
- Валидность (существует ли уже результат?)
Последствия буфера переупорядочения включают точные исключения и простой отката контроль неверных прогнозов целевого адреса (ветвь или переход). Если прогноз перехода неверен или в потоке команд встречается неустранимое исключение, ROB очищается от всех инструкций (путем установки хвоста циклической очереди в заголовок) и станции резервирования повторно инициализируются.