Расчет циклов по инструкции - PullRequest
0 голосов
/ 06 сентября 2018

Из того, что я понимаю, для расчета ИПЦ это процент от типа инструкции, умноженный на количество циклов, верно? Имеет ли тип машины какую-либо часть этого расчета?

У меня есть проблема, которая спрашивает меня, следует ли рекомендовать изменение.

Машина 1: 40% R - 5 циклов, 30% lw - 6 циклов, 15% sw - 6 циклов, 15% beq 3 - циклы, на машине с частотой 2,5 ГГц

Машина 2: 40% R - 5 циклов, 30% lw - 6 циклов, 15% sw - 6 циклов, 15% beq 4 - циклы, на машине с частотой 2,7 ГГц

По моим расчетам, машина 1 имеет 5,15 ИПЦ, тогда как машина 2 имеет 5,3 ИПЦ. Можно ли игнорировать ГГц машины и сказать, что изменение не будет хорошей идеей, или я должен учитывать фактор машины?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2018

Циклов на инструкцию количество циклов. GHZ не имеет значения, насколько это среднее значение. Но, сказав, что мы можем видеть из ваших цифр, что одна инструкция - это больше тактов, а процессоры - другая скорость.

Таким образом, хотя для выполнения одной и той же работы на более быстром процессоре требуется больше циклов, скорость процессора компенсирует это, поэтому кажется очевидным, что вопрос в том, учитывает ли скорость процессора дополнительные тактовые частоты?

5,15 циклов / инструкция / 2,5 (гига) циклов / с, циклы отменяются, вы получаете 2,06 секунды / (гига) инструкция или (нано) секунды / инструкция

5,30 / 2,7 = 1,96296 (нано) секунд / инструкция

Чем быстрее, тем меньше времени, чтобы запустить программу быстрее.

Еще один способ увидеть это, чтобы проверить математику.

Для 100 тактов на медленной машине 15% из них являются beq. Итак, 15 из 100 часов, что составляет 5 инструкций. Те же 5 инструкций beq занимают 20 часов на более быстрой машине, поэтому всего 105 тактов для тех же команд на более быстрой машине.

100 циклов при 2,5 ГГц против 105 при 2,7 Гц

мы хотим количество времени

Гц - это число циклов в секунду, мы хотим, чтобы секунды находились сверху поэтому мы хотим

циклов / (циклов / секунд), чтобы отменить циклы и иметь секунды сверху

1 / 2,5 = 0,400 (400 пикосекунд) 1 / 2,7 = 0,370

0,400 * 100 = 40,00 единиц времени 0,370 * 105 = 38,85 единиц времени

Таким образом, несмотря на то, что требуется еще 5 циклов, разница в скорости процессора достаточно быстрая, чтобы компенсировать.

2,7 / 2,5 = 1,08
105/100 = 1,05

, поэтому 2,5 * 1,05 = 2,625, поэтому процессор с тактовой частотой 2,625 ГГц или выше будет быстрее запускать эту программу.

Теперь, каковы правила смены компьютеров, меньше ли времени определяется как причина смены компьютеров? Какое определение для лучше? Чем больше энергии потребляет быстрее, тем быстрее может потребоваться меньше времени, но энергопотребление может быть не линейным, поэтому может потребоваться больше ватт, хотя и занимает меньше времени. Я предполагаю, что вопрос не настолько подробный, то есть он неопределенный, то есть сам по себе плохо написанный вопрос, поэтому речь идет о том, что в учебнике или лекции определено как порог для перехода на другой процессор.

Отказ от ответственности, не вините меня, если вы пропустили этот вопрос в своей домашней работе / тесте.

Вне академического упражнения, подобного этому, реальный мир полон конвейерных процессоров (не все, но большинство людей, пишущих программы, пишут программы), и в основном вы не можете поставить число в такты для каждого типа команды таким образом, чтобы Вы можете сделать этот расчет из-за списка факторов прачечной. Вы должны понять, что это хорошее упражнение, но это конкретное упражнение сложно и опасно пытаться использовать в реальных процессорах. Опасно, что, как бы тяжело вы ни работали, вы можете неправильно что-то измерять, делать неверные выводы и в результате давать плохие рекомендации. В то же время существует большая реальность того, что более быстрые ghz улучшают некоторый процент выполнения, но страдает другой процент, и есть ли чистая прибыль или убыток. Либо новый дизайн процессора, более быстрый или медленный, может иметь функции, которые работают лучше, чем старый процессор, но не все функции будут лучше, есть компромисс, и тогда мы поймем, что означает «лучше».

0 голосов
/ 06 сентября 2018

Я думаю, что смысл в том, чтобы оценить изменение дизайна, которое заставляет команду занимать больше тактов, но позволяет повысить тактовую частоту. (т. е. склонность к созданию скоростного демона, такого как Pentium 4, вместо умственного, как у ядер Apple A7 / A8 ARM. http://www.lighterra.com/papers/modernmicroprocessors/)

Таким образом, вам нужно вычислять инструкции в секунду, чтобы увидеть, какой из них получит больше работы за то же количество времени в реальном времени. т.е. (clock/sec) / (clocks/insn) = insn/sec, исключая clocks из единиц.

Ваш расчет ИПЦ выглядит нормально; Я не проверял это, но да средневзвешенное число циклов в соответствии с набором инструкций.


Эти числа явно упрощены; Любой процессор, стоящий на частоте 2,5 ГГц, будет иметь какой-то прогноз ветвления, поэтому стоимость ветвления - это не просто пузырь с 3 или 4 инструкциями. И брать ~ 5 циклов на инструкцию в среднем жалко. (Большинство конвейерных проектов рассчитаны как минимум на 1 инструкцию за такт.)

Кэши и суперскалярные процессоры также приводят к сложным взаимодействиям между инструкциями в зависимости от того, зависят они от предыдущих результатов или нет.

Но это похоже на то, что вы могли бы сделать, если бы рассмотрели возможность увеличения задержки использования нагрузки кеша L1d на 1 цикл (например), если это сняло критический путь и позволило повысить тактовую частоту. Или, наоборот, ужесточение задержки или уменьшение количества ступеней конвейера для чего-либо за счет уменьшения частоты.

...