Введение

Проблемы с конвейером команд в микроархитектурах центрального процессора (CPU)

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

Предыстория

Инструкции в конвейерном процессоре выполняются в несколько стадий, поэтому в любой момент времени несколько инструкций находятся в обработке на разных стадиях конвейера, таких как выборка и выполнение. Существует множество различных микроархитектур конвейера команд, и инструкции могут выполняться вне порядка. Конфликт (или опа́сность) возникает, когда две или более одновременно обрабатываемых (возможно, выполняемых вне порядка) инструкций вступают в противоречие.

Опасности управления (опасности в отрасли или опасности в инструкции)

Опасность управления возникает, когда конвейер принимает неверные решения при предсказании переходов и, следовательно, загружает в конвейер инструкции, которые впоследствии необходимо отменить. Термин "опасность перехода" также относится к опасности управления.

Пузырьки в трубопроводе

Пузырькообразование в конвейере, также называемое разрывом конвейера или остановкой конвейера, — это метод предотвращения конфликтов данных, структурных конфликтов и конфликтов переходов. По мере выборки инструкций, управляющая логика определяет, может ли возникнуть конфликт. Если это так, то управляющая логика вставляет "пузырь" (s) в конвейер. Таким образом, до выполнения следующей инструкции (которая вызовет конфликт), предыдущая успеет завершиться и предотвратить его. Если количество "пузырей" равно количеству стадий в конвейере, процессор очищается от всех инструкций и может продолжить работу без конфликтов. Любые формы остановки конвейера вносят задержку перед возобновлением выполнения. Очистка конвейера происходит, когда инструкция перехода переходит к новому адресу памяти, делая недействительными все предыдущие стадии конвейера. Эти предыдущие стадии очищаются, позволяя конвейеру продолжить работу с новой инструкцией, указанной переходом.

Другие методы

Задержка памяти — еще один фактор, на который должны обращать внимание разработчики, поскольку задержка может снизить производительность. Различные типы памяти имеют разное время доступа. Таким образом, выбирая подходящий тип памяти, разработчики могут повысить производительность конвейерного тракта данных.