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

StackOverflow https://stackoverflow.com/questions/646512

Вопрос

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

это правда?

Это было полезно?

Решение

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

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top