Методы параллелизма на уровне инструкций (ILP)
Я пытаюсь узнать о методах, используемых в параллелизме на уровне инструкций, и различиях между ними. Мой вопрос здесь заключается в том, что с учетом набора команд, который изначально был создан для работы на процессоре без параллелизма на уровне команд, какой из этих методов можно использовать для достижения параллелизма на уровне команд на новом процессоре и почему / как. Новый процессор выполнит тот же набор команд и запустит те же двоичные файлы программы, что и исходный, но производительность будет выше. Варианты:
1) Внеочередное исполнение (алгоритм Томасуло)
2) Конвейерная
3) Суперскалярная
4)VLIW
1 ответ
Я бы сказал, что ООО будет первым делом, которое сильно увеличит ILP. Архитектуры OOO - это аппаратные технологии, которые полностью независимы от работы компиляторов (это означает, что архитектура OOO будет выполнять те же вычисления ЦП без OOO и давать одинаковые результаты с меньшим временем без изменения структуры команд).
Обкладка трубопровода - это хорошо известный и старый метод увеличения ILP, но он имеет свои ограничения, добавляя этапы, увеличивающие сложность аппаратного обеспечения и в конечном итоге приводящие к уменьшению прибыли.
VLIW и superscalar по сути одинаковы, но они отличаются друг от друга стилем параллелизма, они требуют специального оборудования и специальных компиляторов, поэтому они не совместимы с традиционной архитектурой потока управления. Эта техника в основном полагается на то, что компиляторы упаковывают больше, чем инструкции в одно очень длинное слово инструкции (VLIW), которое может выполняться параллельно.
Начнем с конвейерной обработки. Это самый старый и лучший подход к достижению ILP путем перекрытия выборки, декодирования, выполнения... нескольких инструкций. Это настолько распространено, что любой реальный ЦП, который имеет ООО, в порядке, суперскаляр, VLIW, ... для достижения ILP, также будет конвейерным.
Да, ООО добьется ПДОДИ. Первая и третья инструкции ниже могут выполнять ООО параллельно, в то время как вторая должна ждать завершения первой (опасность RAW на r1). Планировщик ЦП должен будет динамически найти третью инструкцию ООО.
ld r1, 0(r2)
add r2, r1, r3
add r4, r3, r5
Вы не упомянули о порядке, но он также может достичь ILP. Первая и вторая инструкции могут выполняться параллельно, но третья должна будет дождаться завершения первой, поскольку она также имеет опасность RAW на r1.
ld r1, 0(r2)
add r4, r3, r5
add r2, r1, r3
Суперскаляр и VLIW существуют только для ILP. VLIW использует статическое планирование времени компиляции для достижения ILP. Суперскаляр использует планирование времени выполнения ЦП И планирование времени компиляции компилятором для достижения ILP.