Учтите, что в ЦП CPI для инструкции добавления равен 0,5 (он выполняет две инструкции добавления в одном цикле с помощью конвейерной передачи)
, но когда есть только одна инструкция добавления в соответствии с формулоймы умножаем 1 * 0,5 * 2, что неверно.
Вы путаете между задержкой и пропускной способностью.
Пропускная способность описывает количество операций, которыеможет быть выполнено в данное время.ИПЦ, как вы используете это пропускная способность.Итак, если вы говорите, что ИПЦ = 0,5, вы имеете в виду, что вы можете получить 2 дополнительных результата за циклы.
Задержка - это мера времени между началом инструкции (или операции, чтением из памяти и т. Д.) И ее концом.Он не зависит от пропускной способности и коррелирует с количеством ступеней в вашем процессоре.
Поэтому, если вы посмотрите на отдельную инструкцию add
, ее продолжительность, очевидно, не равна половине цикла.Конвейеры в недавнем Pentium работают от 14 до 19 циклов (но в более старой версии конвейеры были в два раза длиннее).А продолжительность отдельного добавления составляет ~ 15 циклов (в лучшем случае).
Поэтому, когда мы хотим вычислить время ЦП для 10 инструкций добавления, мы умножаем 10 * 0,5 * 2 (время такта составляет 2 наносекунды), и все в порядке.
Нет.Другие факторы могут оказывать влияние, как зависимости, так и в целом взаимодействия с другими инструкциями.ИПЦ был введен как мера среднего числа циклов на инструкции в полной программе.Сложность современных компьютеров такова, что почти невозможно получить точную оценку ИПЦ без выполнения программы.Итак, чтобы получить его, мы рассчитываем время программы и делим на количество выполненных инструкций.Это будет учитывать доступ к памяти, зависимости, неправильное предсказание ветвлений и т. Д., И это имеет смысл для конечного пользователя, который хочет знать, какова будет скорость его программы.Ваша оценка теоретическая, которая никогда не бывает в реальной жизни.