Таймер. Частоты...

Тема в разделе "WASM.ASSEMBLER", создана пользователем harlan, 27 дек 2004.

  1. harlan

    harlan New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    4
    Я не совсемъ уверенъ, что вопросъ по теме, темъ не менее, видя здесь огромное число мудрыхъ головъ, спрашиваю.

    Многочисленныя учебники утвђрждаютъ, что частота таймера i8253 на всех компьютерахъ равна 1193180Гц, но эти книги устарели. Есть информацiя, что эта частота в новых компахъ равна 3579545Гц. Следовательно, слово по адр. 40:006CH тоже прирастађтъ в 3 раза чаще? Я проверилъ съ помощью счетчика на канале 2 и выяснилъ, что это слово прирастаетъ не рђже, чемъ таймеръ совђршитъ полный оборотъ. Где истина? Какова реальная частота таймера машинъ PIII-PIV?
     
  2. harlan

    harlan New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    4
    Интернетъ подсказалъ мне кое-что. Логи FreeBSD содержатъ информацiю о том, что бОльшая частота принадлежитъ Timecounter "ACPI-safe", а частота 8254 - 1193182Гц.

    Но тутъ снова нестыковка: получаетъся, что AMD k6-350 выполняетъ инструкцiи быстрђе, чемъ PIII-600 въ несколько разъ...
     
  3. vdk

    vdk New Member

    Публикаций:
    0
    Регистрация:
    18 дек 2003
    Сообщения:
    18
    пробовал на PIII,PIV,Duron (всего на 4-х) 0x1234dc
     
  4. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105




    У АМД кеш больше, поэтому нужно аккуратно мерять.
     
  5. lis

    lis New Member

    Публикаций:
    0
    Регистрация:
    30 дек 2004
    Сообщения:
    23
    Адрес:
    Russia
    Что подразумевается под частотой таймера? Цикл полного обнуления или что?
     
  6. Ykidia

    Ykidia Member

    Публикаций:
    0
    Регистрация:
    21 июн 2005
    Сообщения:
    99
    Адрес:
    Санкт-Петербург
    Подразумевается частота циклов счета таймера, которых максимум 65535, а не частота прерываний от него.
     
  7. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    harlan

    kpnc.opennet.ru/overHAL.zip

    ответ на твой вопрос
     
  8. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    kaspersky



    > В Windows продолжительность одного тика таймера составляет 10 мс.



    Ставим эксперимент: в разных версиях Windows (в 98 напрямую, в NT/2k через какой-нибудь драйверок) многократно (например, миллион раз) читаем счетчик 0-го канала таймера, попутно вычисляя максимум и минимум. Получаем: в любом случае min=0, max=0xffff. Ясно, что результаты странные, но технически вроде бы все корректно. Ну и как это объяснить? Тем, что продолжительность тика на самом деле плавает от 0 до 55 мс ?
     
  9. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    >> В Windows продолжительность одного тика таймера

    >> составляет 10 мс.

    > читаем счетчик 0-го канала таймера

    вы не внимательно читали статью,

    win использует ACPI-таймер и поэтому к 0каналу

    продолжительность тика никакого отношения не имеет



    > Получаем: в любом случае min=0, max=0xffff

    ну и? так и должно быть...

    канал 0 - системные часы,

    режим 3 (генератор меандра)

    начальное знаечние 0 (65536)



    счетчик убывает на 1 каждый CLK,

    при достижении нуля генерируется IRQ,

    для достоверных показаний перед чтением счетичка

    его надо остановить...



    генерация IRQ и есть "тик", непостоянство тика

    обсуловленно во-первых тем, что IRQ могут теряться,

    или не могут "пробиться" из-за загрузки щины PCI,

    к которой подключена шина ISA, на которой висит таймер...
     
  10. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759




    Хех, Крис, какой у тебя комп? Таймеры уж давно на ISA не вешают, скорее либо pure internal, либо LPC.
     
  11. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    > Хех, Крис, какой у тебя комп?

    > Таймеры уж давно на ISA не вешают,

    > скорее либо pure internal, либо LPC.

    оп-с, тормознул, ну конечно, физически там LPC.

    спасибо, что поправил
     
  12. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    kaspersky

    вы не внимательно читали статью, win использует ACPI-таймер и поэтому к 0 каналу продолжительность тика никакого отношения не имеет...



    Так ведь из статьи понятно только то, что Win пытается заюзать самый "быстрый" таймер, и все. Но кто из таймеров при этом владеет IRQ0? Неужели все они сразу вразнобой, а Win просто производит поллинг, чтобы найти источник?



    счетчик убывает на 1 каждый CLK, при достижении нуля генерируется IRQ,



    Кстати, AFAIK, счетчик все-таки убывает на 2 каждый CLK, при достижении нуля инвертируется сигнал OUT, и только по фронту этого сигнала (т.е. по переходу из 0 в 1) генерируется IRQ. Нет?



    Ну и, наконец, есть ли какая-нибудь достоверная инфа по величине кванта времени не только в Win 2k, но и в Win 4, Win XP, Win 2003 и Win 9* ? А то в разных источниках приводятся ну очень разные цифры.



    P.S. И еще, вдогонку:



    какую физическую величину измеряет обыкновенный ртутный или спиртовой термометр. Температуру? Нет, объем.



    А почему не линейное перемещение верхней границы столбика жидкости? :) На самом деле в процессе работы измерительного устройства происходит пропорциональное измеряемой величине изменение многих других физических величин, но измеряется именно температура потому, что именно в ее единицах проградуировано измерительное устройство. А остальные (включая объем и перемещение) просто погулять вышли. :)
     
  13. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    iamlamer

    > Так ведь из статьи понятно только то, что Win пытается

    > заюзать самый "быстрый" таймер, и все.

    вот именно.



    >Но кто изтаймеров при этом владеет IRQ0?

    стандартный таймер, конечно, для совместимости



    > Неужели все они сразу вразнобой, а Win просто

    > производит поллинг, чтобы найти источник?

    нет, каждое ядро заранее настроено на свой таймер,

    исключение составляет высокоточный таймер,

    используемый для мультимедия, вынь поддеживает

    гибридный механизм - если он есть, использует его,

    если нет, использует дефлотный таймер для данного ядра



    > Кстати, AFAIK, счетчик все-таки убывает на 2 каждый

    > CLK,

    на один.



    > при достижении нуля инвертируется сигнал OUT,

    > и только по фронту этого сигнала

    > (т.е. по переходу из 0 в 1) генерируется IRQ. Нет?

    описание в аттаче



    > Ну и, наконец, есть ли какая-нибудь достоверная инфа

    > по величине кванта времени не только в Win 2k,

    > но и в Win 4, Win XP, Win 2003 и Win 9* ?

    > А то в разных источниках приводятся ну очень разные

    > цифры.

    тут путанца с терминами.

    что понимать под квантом.

    есть минимальный "тик" - так это от железа зависит,

    а если кол-во времени, выделенных потоку - там оно

    настраивается в реестре.

    а еще есть "квант" как производная от "тиков"...

    в общем, путаница сплошная.

    верить нельзя никому ;) лучше проверить ;)



    > измеряемой величине изменение многих других физических

    > величин, но измеряется именно температура потому,

    вот это я и хотел сказать.

    _констуктивно_ термометр меряет объем,

    но проградуирован он в градусах.





    [​IMG] 805928668__timer.zip
     
  14. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    kaspersky



    описание в аттаче



    Описание сомнительного происхождения. Лучше обратиться к первоисточнику. (Или проверить на практике. Метод измерения интервалов при помощи таймера, конечно, хуже, чем метод RDTSC, но не настолько, чтобы судить о нем лишь по книжкам и ни разу не попробовать использовать вживую :))



    Intel Corp.

    82C54

    CHMOS PROGRAMMABLE INTERVAL TIMER



    Mode 3 is implemented as follows:



    Even counts: OUT is initially high. The initial count is loaded on one CLK pulse and then is decremented by two on succeeding CLK pulses. When the count expires OUT changes value and the Counter is reloaded with the initial count. The above process is repeated indefinitely.



    Odd counts: OUT is initially high. The initial count minus one (an even number) is loaded on one CLK pulse and then is decremented by two on succeeding CLK pulses. One CLK pulse after the count expires, OUT goes low and the Counter is reloaded with the initial count minus one. Succeeding CLK

    pulses decrement the count by two. When the count expires, OUT goes high again and the Counter is reloaded with the initial count minus one.




    _констуктивно_ термометр меряет объем,

    но проградуирован он в градусах.




    Да не _меряет_ он объем. Измерение есть процесс нахождения числового значения измеряемой величины при помощи технических средств. Другое определение: измерение есть выражение значения измеряемой величины в единицах меры. Объем находится? Выражается? Нет. Значит, он не _измеряется_.
     
  15. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    Будем считать установленным, что счетчик декрементируется на 2. Но это все лирика, а интересно все-таки другое:



    kaspersky



    верить нельзя никому ;) лучше проверить ;)



    Но КАК ? Каков план эксперимента, чтобы измерить время кванта (если понимать под ним время, выделяемое потоку)?
     
  16. _staier

    _staier New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2003
    Сообщения:
    738
    Адрес:
    Ukraine
    я не спец в метрологии

    но IMHO ЛЮБОЙ датчик преобразует измеряемую величину в нечто, что может быть прочитано реципиентом

    если бы преобразование не требовалось то и датчик бы был не нужен



    в данном случае это температура- обьём- длина в делениях шкалы термометра

    поэтому говорить , что датчик измеряет обьём некорректно , это просто преобразование , притом только одно из
     
  17. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    > Но КАК ? Каков план эксперимента, чтобы измерить время

    > кванта (если понимать под ним время, выделяемое потоку)?

    у тебя есть x потоков в системе, нет x мало, возьмем y.

    замеряем промежуток времени между двумя соседними

    пробуждениями одного и того же потока, делим на y.

    или просто в цикле выполняем GetTickCount,

    сначала будет идти непрерывный поток, а затем разрыв,

    вызванный переключением контекста.

    главное только, чтобы в системе были активные потоки,

    иначе по дефлоту тебе тут же возвратят управление ;)
     
  18. iamlamer

    iamlamer New Member

    Публикаций:
    0
    Регистрация:
    20 июн 2005
    Сообщения:
    273
    Адрес:
    Russia
    kaspersky А как на практике? Ведь для этого надо, чтобы 1) количество активных потоков в системе не менялось в процессе эксперимента; 2) все они имели строго равный приоритет. Разве ж это можно искусственно обеспечить?



    Кроме того, возвращаясь к статье и таймерам. Допустим, IRQ0 действительно принадлежит системному таймеру "для совместимости". Если многозадачность висит на каком-то другом таймере, значит, она висит на каком-то другом IRQ? На каком? В раздельчике про контроллер прерываний об этом ни слова. :dntknw: И еще, а в Win95/98/ME система тоже пыталась повеситься на самый быстрый таймер или тупо обходилась системным?



    Статья возбудила вопросов больше, чем ответов, и только разожгла аппетит. И не все можно проверить экспериментально, а надо просто достоверно знать. :dntknw:
     
  19. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    iamlamer

    > А как на практике? Ведь для этого надо, чтобы

    > 1) количество активных потоков в системе не менялось

    > в процессе эксперимента;

    создай 1000 своих потоков и не убивай их,

    даже если система будет создавать свои потоки

    в процессе эксперимента это не сильно исказаит картину



    > 2) все они имели строго равный приоритет.

    создай потоки с одинаковым приоритетом ;)

    ксати, приоритет влияеет только на вытесение,

    которым в данном случае можно пренебречь,

    т.к. никакого io у нас нет



    > Разве ж это можно искусственно обеспечить?

    можно получить достаточную точность



    > Кроме того, возвращаясь к статье и таймерам. Допустим,

    > IRQ0 действительно принадлежит системному таймеру

    о чем легко узнать любой программой типа AIDA32

    или встронными средствами выни



    > "для совместимости". Если многозадачность висит на

    > каком-то другом таймере, значит, она висит на каком-то

    > другом IRQ? На каком?

    естественно, если это будет APIС,

    IRQ будет другой.



    > слова. :dntknw: И еще, а в Win95/98/ME система тоже пыталась

    > повеситься на самый быстрый таймер или тупо обходилась

    > системным?

    в 9x используется системный таймер



    > Статья возбудила вопросов больше, чем ответов, и только

    > разожгла аппетит. И не все можно проверить

    > экспериментально, а надо просто достоверно знать. :dntknw:

    используй счетчики производительности,

    настой айс на переключение контекста, благо он

    выводит время срабатывая точек останова...

    только все равно это мало что даст,

    ибо реально используются динамические кванты,

    причем MS непрерывно меняет алгоритм их изменения...
     
  20. Turkish

    Turkish New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    80
    Адрес:
    Russia
    Во демагогию развели, напишите официально писмо производителям чипсетов, процев и т.п. барахла, пусть они вам ответят. ;)