Измерение латентности определенной инструкции

Тема в разделе "WASM.ASSEMBLER", создана пользователем bers, 8 сен 2006.

  1. bers

    bers New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2005
    Сообщения:
    139
    Адрес:
    Russia
    Вот, читая Агнера Фога и некоторые другие статьи, задался вопросом - как измеряют латентность той или иной команды. Притом, в одной статье ("Pentium глазами программиста" - http://wasm.ru/article.php?article=1011001 ) кусок кода, как говорит автор, выполняется, ну скажем, за 4.1 такта (точной цифры не помню, но она и не важна). Как определить результат с такой точностью? Может есть какие-то эмуляторы? RDTSC - возможно, но не до десятой же доли такта. Подобный вопрос был поднят в комментариях к данной статье, но ответа на него там не последовало.
     
  2. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    используй поиск "latency" по форуму, а для точных замеров, здается замеряли код в цикле (к примеру получалось 4100 тактов) и потом делили на 1000 :)
     
  3. bers

    bers New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2005
    Сообщения:
    139
    Адрес:
    Russia
    такая мысль естественно тоже приходила в голову, но ведь это очень усредненно
     
  4. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    bers
    Никак, потому что такой точности просто не существует в природе. Понятие тактовая частота тебе о чем нибудь говорит ? В тактируемых устройствах, каким является процессор латентности измеряются только в целых тактах (в P4 в полутактах). Поэтому все дроби это либо условные понятия (например в AMD серия нопов может выполняться со скоростью 3 штуки за такт = 0.33 такта на штуку ?!) либо усредненные цифры, которые имеют смысл для блока инструкций (цикла или репита), но не для одной конкретной инструкции