Означает ли набор команд и количество команд одно и то же при расчете времени выполнения процессора?

#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) .