[an error occurred while processing this directive]
|
еще как влияет. Для всех плавучих команд 32 бита 3 delay-слота - то есть 3 стадии конвейера. И нету так называемых unit latency (когда из delay-слота нельзя выполнить еще одну плавучую команду на том-же юните). То есть за каждый такт процессора при желании можно выполнить 2 плавучих умножения и 2 плавучих сложения. Итого 4 операции.
А для 64 бита - там данные хранятся уже не в регистрах, а в парах регистров. И что-бы юниту считать две пары регистров и записать в третью пару нужны дополнительные такты. Таким образом плавучка double имеет от 6-ти до 9-ти стадий конвейера (разные команды). Тут можно при ручной оптимизации можно одну плавучую операцию выполнить в среднем за такт-два (падение производительности в 4-8 раз). А компилятор С просто вставляет толпу NOP'ов в delay-слоты, не желая думать на предмет заполнения их чем либо полезным.
E-mail: info@telesys.ru