Найти в Дзене
Будни инженера

Время выполнения команды процессора

Иногда надо знать, сколько времени занимает выполнение команды процессора или микроконтроллера. Как вы знаете, каждый процессор имеет свой набор команд, и в руководстве на конкретный процессор (микроконтроллер) можно найти сведения о том, за сколько тактов выполняется команда. Однако это такты, а не время. К тому же один и тот же микроконтроллер может работать с разной тактовой частотой в зависимости от устройства и задач. Например, почти у всех процессоров и микроконтроллеров есть команда NOP, которая ничего не делает, и обычно используется для создания небольших задержек в программе. Эта команда выполняется за один такт. И если мы знаем частоту тактового генератора, то мы можем вычислить, сколько времени требуется на выполнение этой команды: t = КТ / ТЧ где t - это время, затраченное на выполнение команды (команд); КТ - количество тактов, которые требуются для выполнения команды (команд); ТЧ - тактовая частота. В каких единицах измеряется время, зависит от того, в каких единицах изме

Иногда надо знать, сколько времени занимает выполнение команды процессора или микроконтроллера. Как вы знаете, каждый процессор имеет свой набор команд, и в руководстве на конкретный процессор (микроконтроллер) можно найти сведения о том, за сколько тактов выполняется команда. Однако это такты, а не время. К тому же один и тот же микроконтроллер может работать с разной тактовой частотой в зависимости от устройства и задач.

Например, почти у всех процессоров и микроконтроллеров есть команда NOP, которая ничего не делает, и обычно используется для создания небольших задержек в программе. Эта команда выполняется за один такт. И если мы знаем частоту тактового генератора, то мы можем вычислить, сколько времени требуется на выполнение этой команды:

t = КТ / ТЧ

где t - это время, затраченное на выполнение команды (команд); КТ - количество тактов, которые требуются для выполнения команды (команд); ТЧ - тактовая частота. В каких единицах измеряется время, зависит от того, в каких единицах измеряется тактовая частота.

Напомню, что частота - это количество тактов (импульсов) в секунду (измеряется в Герцах). Например, тактовый генератор на выходе успевает за секунду два раза переключиться из нуля в единицу. То есть за секунду он выдаёт два такта (два импульса). Это означает, что такой тактовый генератор работает с частотой 2 Гц. И если бы наш процессор работал на частоте 2 Гц (два такта в секунду), то команда NOP выполнялась бы за:

t = 1 / 2 = 0,5 секунды

А за секунду, соответственно, процессор может выполнить 2 таких команды, поскольку работает на тактовой частоте 2 Гц, а выполнение команды занимает 1 такт.

А вот команда PUSH, например, выполняется за два такта. И она бы выполнялась целую секунду.

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

И процессоры, конечно, работают на более высокой частоте. Например, при тактовой частоте 8 МГц время выполнения команды NOP будет:

t = 1 / 8000000 Гц = 0,000000125 секунд

или

t = 1 / 8000 кГц = 0,000125 миллисекунд

или

t = 1 / 8 МГц = 0,125 микросекунд

А вот команда PUSH, которая выполняется за два такта, при тактовой частоте 8 МГц будет выполнена за:

t = 2 / 8 МГц = 0,25 микросекунд

И если мы встретим в нашей программе что-то типа этого:

NOP
NOP
PUSH R16

То выполнение этих команд при тактовой частоте 8 МГц займёт:

t = (1 + 1 + 2) / 8 МГц = 0,5 микросекунд

Вот так вот на самом деле всё несложно.

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить…