Можно ли использовать приращение регистра для определения тактовой частоты? - PullRequest
0 голосов
/ 14 марта 2009

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

это правда?

Ответы [ 2 ]

3 голосов
/ 14 марта 2009

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

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

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

1 голос
/ 14 марта 2009

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

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

...