информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяЗа кого нас держат?Атака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 На GitHub пугают ложными предупреждениями... 
 Атака на пользователей больших... 
 Notepad++ полгода раздавал зараженные... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
лучше использовать rdtsc 16.04.03 10:00  Число просмотров: 1424
Автор: ukv Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> делая в цикле по 100 nop'ов и потом общее число тактов деля
> на время у меня получается число в три раза большее, чем
> частота проца
>
> так и должно быть?
> т.е. частота проца показывает сколько трёх-тактнах команд в
> секунду выполняет процессор?

Не совсем понятно, чем мерялось время и такты. Для современных процессоров такты измеряются командой rdtsc (код 0f 31), а время - могут быть варианты. Проще всего сделать 2 команды rdtsc, разделенные Sleep'ом на секунду - разность тактов сразу даст неплохое приближение частоты процессора. Если нужна большая точность, то нужно или частоту привести к кратной 33/50/66 Мгц, или задать больший интервал времени, или лучше учитывать время начала/конца Sleep (хотя бы через GetLocalTime), или сделать все это сразу.

Что касается трех инструкций за такт - вполне ожидаемый результат. Начиная с Пентиум3 за один такт может быть декодировано до 3 команд, выполнение Nop'ов времени не занимает вовсе - что и наблюдалось.
<programming>
определение частоты процессора 15.04.03 22:07  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
(в том числе и в 98, где нет ключа в реестре)

делая в цикле по 100 nop'ов и потом общее число тактов деля на время у меня получается число в три раза большее, чем частота проца

так и должно быть?
т.е. частота проца показывает сколько трёх-тактнах команд в секунду выполняет процессор?
лучше использовать rdtsc 16.04.03 10:00  
Автор: ukv Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> делая в цикле по 100 nop'ов и потом общее число тактов деля
> на время у меня получается число в три раза большее, чем
> частота проца
>
> так и должно быть?
> т.е. частота проца показывает сколько трёх-тактнах команд в
> секунду выполняет процессор?

Не совсем понятно, чем мерялось время и такты. Для современных процессоров такты измеряются командой rdtsc (код 0f 31), а время - могут быть варианты. Проще всего сделать 2 команды rdtsc, разделенные Sleep'ом на секунду - разность тактов сразу даст неплохое приближение частоты процессора. Если нужна большая точность, то нужно или частоту привести к кратной 33/50/66 Мгц, или задать больший интервал времени, или лучше учитывать время начала/конца Sleep (хотя бы через GetLocalTime), или сделать все это сразу.

Что касается трех инструкций за такт - вполне ожидаемый результат. Начиная с Пентиум3 за один такт может быть декодировано до 3 команд, выполнение Nop'ов времени не занимает вовсе - что и наблюдалось.
спасибо, по rdtsc в яндексе полно ссылок 16.04.03 13:16  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach