Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

RDTSC и многопроцессорность

5 views
Skip to first unread message

Sergue E. Leontiev

unread,
Jul 19, 2005, 6:30:17 PM7/19/05
to
Здравствуйте, Все!

Как я понял, согласно документации на процессоры Intel (ia32/x64/ia64) сброс
счетчика тактов, доступного по ReadTimeStampCounter(), __rdtsc(), RDTSC или
mov ...=ar.itc, происходит по включению питания, и по сигналу RESET# (INIT#
игнорируется).

Означает ли это, что в многопроцессорных системах я могу надеяться, что во
всех нитях/процессах эти счётчики идут синхронно? Другими словами, что
Windows их не переустанавливают (в принципе эти счётчики можно записывать на
уровне привилегий ядра)?

Для Itanium Intel предупреждает, что ОС могут что-то делать с ar.itc, но
Windows его трогает ли?

--
Успехов, Сергей Леонтьев. E-mail: l...@sai.msu.ru, http://www.cryptopro.ru


Gennady Mayko

unread,
Jul 20, 2005, 2:50:42 AM7/20/05
to
Добрый день!

SEL> Как я понял, согласно документации на процессоры Intel (ia32/x64/ia64)
SEL> сброс счетчика тактов, доступного по ReadTimeStampCounter(), __rdtsc(),
SEL> RDTSC или mov ...=ar.itc, происходит по включению питания, и по сигналу
SEL> RESET# (INIT# игнорируется).

SEL> Означает ли это, что в многопроцессорных системах я могу надеяться, что
SEL> во всех нитях/процессах эти счётчики идут синхронно? Другими словами,
SEL> что Windows их не переустанавливают (в принципе эти счётчики можно
SEL> записывать на уровне привилегий ядра)?

SEL> Для Itanium Intel предупреждает, что ОС могут что-то делать с ar.itc, но

SEL> Windows его трогает ли?
--
Даже если Windows и не трогает этот регистр, написать драйвер, который сможет
переустановить этот счетчик только на одном процессоре, проблем не составит.
Поэтому я бу не стал надеяться, что разность между этими счетчиками постоянна
- вдруг кто то уже написал такой драйвер? :)

С уважением,
Геннадий Майко.

Sergue E. Leontiev

unread,
Jul 20, 2005, 5:38:18 PM7/20/05
to
Здравствуйте, Gennady!
Вы писали к Sergue E. Leontiev от Wed, 20 Jul 2005 06:50:42 +0000 (UTC):

SEL>> Означает ли это, что в многопроцессорных системах я могу надеяться,
SEL>> что во всех нитях/процессах эти счётчики идут синхронно? Другими
SEL>> словами, что Windows их не переустанавливают (в принципе эти
SEL>> счётчики можно записывать на уровне привилегий ядра)?
GM> Даже если Windows и не трогает этот регистр, написать драйвер,
GM> который сможет переустановить этот счетчик только на одном
GM> процессоре, проблем не составит. Поэтому я бу не стал надеяться,
GM> что разность между этими счетчиками постоянна - вдруг кто то
GM> уже написал такой драйвер? :)

Ну, от бешеных программ/драйверов можно всего ожидать, они и SetSystemTime()
будут дёргать как попало.

А разность по документации ожидается равной 0, в экспериментах тоже.

Gennady Mayko

unread,
Jul 21, 2005, 6:08:11 AM7/21/05
to
Добрый день!

SEL> А разность по документации ожидается равной 0, в экспериментах тоже.
--
Just curious - а как удалось добиться того, что на разных процессорах команды
чтения этого счетчика возвращают одно и то же значение, т.е., по сути,
выполняются практически в один и тот же момент времени?

С уважением,
Генадий Майко.

0 new messages