0

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

Это правда?

ответ

3

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

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

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

+0

Может быть, Linux «время» даст мне более точную оценку времени, затрачиваемого на процесс, но я понимаю вашу точку зрения, спасибо. –

1

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

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

+0

Это был общий вопрос, но меня определенно интересует x86 ... –

 Смежные вопросы

  • Нет связанных вопросов^_^