Как правильно использовать инструкцию RDTSC?

Тема в разделе "WASM.BEGINNERS", создана пользователем ADim, 14 июл 2008.

  1. ADim

    ADim New Member

    Публикаций:
    0
    Регистрация:
    6 май 2007
    Сообщения:
    28
    На процессоре Athlon 64 X2 3800+ (Manchester, socket 939) RDTSC дает несколько неожиданный результат. Выглядит это так: при последовательных чтениях TSC значения счетчика монотонно возрастают, начиная с какой-то попытки очередное значение счетчика меньше предыдущего; после чего опять сколько-то попыток чтения – значения монотонно возрастают, до очередного "провала". Касается только 32-х младших бит счетчика. Среднее количество таких аномалий для чтения 67108864 значений счетчика подряд ~ 108 (разброс 80 – 180). Фоном "прожорливых" процессов не запускал. Cool'n'Quit – отключил, в управлении электропитанием выбрал профиль "Домашний/настольный". WinXP со всеми последними обновлениями.
    Почему так происходит? Это и есть та самая проблема с рассинхронизацией счетчиков ядер процессора?
     
  2. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    у тебя поток на разных ядрах запускаеца. а при старте компа запускаеца только одно ядро, остальные в процессе инициализации ядра. Сначала выбери конкретное ядро и считай на нём.
     
  3. ADim

    ADim New Member

    Публикаций:
    0
    Регистрация:
    6 май 2007
    Сообщения:
    28
    Да, получилось, что SetThreadAffinity() решила все проблемы.