#performance #cpu #clock #instruction-set
Вопрос:
Я знаю процессор execution time = CPI * instruction count * 1/clock rate
.
в определенной задаче, когда у трех процессоров один и тот же набор команд, найдите процессор с самой высокой производительностью на основе значений CPI и тактовой частоты.
Итак, я думаю, что набор команд равен количеству команд, и, основываясь на приведенной выше формуле, я считал процесс с наименьшим значением CPI/clock rate
правильным ответом, но я не знаю, является ли это решение правильным. Означает ли набор инструкций и количество инструкций одно и то же?
Комментарии:
1. «Набор инструкций» — это общий набор инструкций, существующих на машине , например
mov, add
, и т. Д. «Количество инструкций» — это количество инструкций, которые выполняются при запуске определенной программы. Если все эти процессоры имеют одинаковый набор команд и все они выполняют одну и ту же программу, то количество команд будет одинаковым для всех.
Ответ №1:
Означает ли набор команд и количество команд одно и то же при расчете времени выполнения процессора?
Обычно «набор инструкций» — это имя (например, «80×86», «ARMv6»,..), используемое для описания диапазона инструкций, поддерживаемых процессором. Это влияет на количество инструкций, необходимых для выполнения определенной части работы. Например, некоторые процессоры имеют инструкции для целочисленного деления, а другие нет; и если процессор не имеет инструкции для целочисленного деления, возможно, вам придется выполнить несколько сотен команд каждый раз, когда вы хотите сделать целочисленное деление; так что в расчет как « x = y / 100 6;
» в C может оказаться небольшое количество инструкций и огромное количество инструкций.
Это важно при сравнении производительности разных процессоров (с разными наборами команд). Например; если процессор может выполнять в два раза больше инструкций в секунду, но для выполнения одной и той же работы требуется в 6 раз больше инструкций; тогда этот процессор выполняет работу в 3 раза медленнее (несмотря на возможность выполнять больше инструкций в секунду).
Если у вас есть такая формула execution time = CPI * instruction count * 1/clock rate
, вам нужно будет определить, сколько инструкций требуется для выполнения определенного объема работы, и вы могли бы (теоретически) сделать это, используя такую формулу instruction count = amount of work * instructions per unit of work
. Затем вы могли бы объединить формулы, чтобы получить execution time = CPI * amount of work * instructions per unit of work * 1/clock rate
.
Аналогичным образом, если у вас есть формула , подобной performance = amount of work / execution time
которой она могла бы стать performance = amount of work / (CPI * instruction count * 1/clock rate)
, которая могла бы стать performance = amount of work / (CPI * amount of work * instructions per unit of work * 1/clock rate)
; которую можно упростить до performance = 1 / (CPI * instructions per unit of work * 1/clock rate)
или performance = 1/CPI * 1/instructions per unit of work * clock rate
.
Обратите внимание, что в этой окончательной формуле instructions per unit of work
зависит от того, какой набор инструкций это.
Проблема, с которой вы столкнулись (частично основанная на вашем предыдущем вопросе), заключается в том, что все, чему вы пытаетесь научиться, неправильно использует слова instruction set
, когда они на самом деле означают 1/instructions per unit of work (that depends on which instruction set it is)
.