Обработка многотактных операций и механизмы обходов в длинных конвейерах
Обработка многотактных операций и механизмы обходов в длинных конвейерах
В рассмотренном нами конвейере стадия выполнения команды (EX) составляла всего один такт, что вполне приемлемо для целочисленных операций. Однако для большинства операций плавающей точки было бы непрактично требовать, чтобы все они выполнялись за один или даже за два такта. Это привело бы к существенному увеличению такта синхронизации конвейера, либо к сверхмерному увеличению количества оборудования (объема логических схем) для реализации устройств плавающей точки. Проще всего представить, что команды плавающей точки используют тот же самый конвейер, что и целочисленные команды, но с двумя важными изменениями. Во-первых, такт EX может повторяться многократно столько раз, сколько необходимо для выполнения операции. Во-вторых, в процессоре может быть несколько функциональных устройств, реализующих операции плавающей точки. При этом могут возникать приостановки конвейера, если выданная для выполнения команда либо вызывает структурный конфликт по функциональному устройству, которое она использует, либо существует конфликт по данным.
Допустим, что в нашей реализации процессора имеются четыре отдельных функциональных устройства:
- Основное целочисленное устройство.
- Устройство умножения целочисленных операндов и операндов с плавающей точкой.
- Устройство сложения с плавающей точкой.
- Устройство деления целочисленных операндов и операндов с плавающей точкой.