Можно ли использовать приращение регистра для определения тактовой частоты?

Можно ли использовать приращение регистра (в цикле) для определения (эффективной) тактовой частоты? Я, естественно, предполагал, что это возможно, но мне сказали, что процессор может внедрять суперскалярные методы, которые делают такие вычисления бесполезными. Также мне сказали, что увеличение регистров на процессоре может быть сделано менее чем за один такт.

это правда?

2 ответа

Решение

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

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

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

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

На какой процессор вы ориентируетесь? Есть более определенные способы определения тактовой частоты, по крайней мере, на x86.

Другие вопросы по тегам