Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт мар 19, 2024 06:54

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Замеры времени
СообщениеДобавлено: Ср ноя 10, 2010 17:39 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
такая вот либа появилась
source file: timer.fts
\ 10.11.2010 ~mOleg
\ Copyright [C] 2010 mOleg mOlegg@ya.ru
\ измерение временных промежутков

branch/ for-next.fts
math/ asmadd.fts
memory/ double.fts
vocs/ unit.fts

Unit: TIMER

\ поместить на вершину стека данных значение сетчика команд процессора RDTC
F: READ ( --> ud )
[ 0x89 B, 0x45 B, 0xFC B, 0x0F B, 0x31 B, 0x89 B,
0x55 B, 0xF8 B, 0x8D B, 0x6D B, 0xF8 B, 0x87 B,
0x45 B, 0x00 B, ] ;F

\ измерить длительность исполнения слова, представленного своим xt
: (measure) ( xt --> dt ) TIMER READ D>R EXECUTE TIMER READ DR> D- ;

\ определить количество тиков, необходимое для выполнения xt
\ исполняется два раза минимум! Результат усредняется.
: msr ( xt # --> n )
NOW DUP >L (measure)
SINCE L@ (measure) D+ D2/
TILL LDROP ;

0`0 DVALUE nooptime \ время выполнения пустой операции
0`0 DVALUE 1ms_time \ приблизительное количество тиков в одной милисекунде

\ определить количество тиков в одной милисекунде (приблизительно)
F: calibrate ( --> )
<: ;> 100000 msr TO nooptime
<: 256 PAUSE ;> 3 msr nooptime D-
D2/ D2/ D2/ D2/ D2/ D2/ D2/ D2/ TO 1ms_time
;F

0`0 DVALUE distant

\ сохранить текущий момент времени в переменную distant
F: initial ( --> ) TIMER READ TO distant ;F

\ определить, сколько милисекунд прошло с момента вызова initial
F: interval ( --> ms ) TIMER READ distant D- 1ms_time D>S DS/ D>S ;F

EndUnit

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Замеры времени
СообщениеДобавлено: Чт ноя 11, 2010 02:13 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
RDTSC??? О боже! А если частота проца меняется динамически, как там будет со временем?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Замеры времени
СообщениеДобавлено: Чт ноя 11, 2010 17:08 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
dynamic-wind писал(а):
RDTSC??? О боже! А если частота проца меняется динамически, как там будет со временем?

Есть такое дело.
Только вы можете предложить механизм, позволяющий ловить короткие таймауты (длительностьюя в несколько сотен-тысяч тактов процессора?)
RDTC хорош тем, что для получения информации не надо обращаться к АПИ, которое довольно медлительно. Пока что предлагается периодически калибровать счетчик.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Замеры времени
СообщениеДобавлено: Чт ноя 11, 2010 17:13 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
dynamic-wind писал(а):
А если частота проца меняется динамически, как там будет со временем?

А часто бывает что время и не нужно, а нужно знать сколько тиков например при сравнении производительности разных алгоритмов.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Замеры времени
СообщениеДобавлено: Чт ноя 11, 2010 21:46 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
mOleg писал(а):
dynamic-wind писал(а):
RDTSC??? О боже! А если частота проца меняется динамически, как там будет со временем?

Есть такое дело.
Только вы можете предложить механизм, позволяющий ловить короткие таймауты (длительностьюя в несколько сотен-тысяч тактов процессора?)

Не могу, с АПИ действительно дела плохи.
Неужели нужно выдерживать очень малый интервал при общении с железом?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Замеры времени
СообщениеДобавлено: Пт ноя 12, 2010 05:39 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
dynamic-wind писал(а):
Неужели нужно выдерживать очень малый интервал при общении с железом?


Железо разное бывает. Дискету надо ждать единицы секунд, винчестер десятки миллисекунд, а бывают случаи, когда обращения должны быть рассчитаны с точностью до микросекунд (программирование flash-ПЗУ, например),

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Замеры времени
СообщениеДобавлено: Пт ноя 12, 2010 16:31 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Эти вопросы решаются кардинально, разработкой соответствующего интерфейса датчика (или самого датчика). К чему насиловать компьютер, который при всем желании не прыгнет выше головы? PC - не реалтаймовая платформа.



За это сообщение автора Hishnik поблагодарил: dynamic-wind
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Замеры времени
СообщениеДобавлено: Пт ноя 12, 2010 17:43 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Извините, что вмешиваюсь.
В свое время использовал прерывание int 70 часов реального времени.
Настроено по умолчанию на 1024 прерываний в секунду,
но есть делители.
Включается и програмируется елементарно.
была одна тонкость, не указанная тогда в докуметации,
в конце обработки прерывания, надо обязательно
прочитать регистр статуса в smos,
иначе следущее прерывание не произойдет.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Замеры времени
СообщениеДобавлено: Пт ноя 12, 2010 17:59 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
vikt писал(а):
Извините, что вмешиваюсь.
В свое время использовал прерывание int 70 часов реального времени.

Харошие тогда были времена!
А сейчас юниксёвый nanosleep имеет дискрет времени 1/1000 сек.
Хотя есть и реалтаймовые расширения. Но не везде.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Замеры времени
СообщениеДобавлено: Пт ноя 12, 2010 18:09 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
В смос есть регистр, в котором находится делитель частоты,
ее можно разогнать до очень больших значений, гораздо больших 1000.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Замеры времени
СообщениеДобавлено: Пт ноя 12, 2010 22:52 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
vikt писал(а):
В свое время использовал прерывание int 70 часов реального времени.
Настроено по умолчанию на 1024 прерываний в секунду, но есть делители.

Является ли этот таймер официальным пользовательским ресурсом, который обязан поддерживаться операционными системами?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Замеры времени
СообщениеДобавлено: Пт ноя 12, 2010 23:29 
Хищник писал(а):
vikt писал(а):
В свое время использовал прерывание int 70 часов реального времени.
Настроено по умолчанию на 1024 прерываний в секунду, но есть делители.

Является ли этот таймер официальным пользовательским ресурсом, который обязан поддерживаться операционными системами?

До XP поддерживался в DOS сессии корректно. С XP начал "кто в лес кто по дрова" . Чаще всего в сторону увеличения скорости того, что клацает. После некоторого бодания с ним :hey; в одном проекте под программатор выделили отдельную машину с совсем честным DOS-ом.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Замеры времени
СообщениеДобавлено: Пт ноя 12, 2010 23:47 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
ArtemKAD писал(а):
До XP поддерживался в DOS сессии корректно. С XP начал "кто в лес кто по дрова" . Чаще всего в сторону увеличения скорости того, что клацает. После некоторого бодания с ним в одном проекте под программатор выделили отдельную машину с совсем честным DOS-ом.

Вот-вот. В итоге устройство начинает работать с конкретно выделенным для него компьютером, хотя можно было сопоставимые усилия потратить на усовершенствование датчика. На сегодняшний день МК, опрашивающий датчик с соблюдением всех временных интервалов, ведущий журнал, и при необходимости выдающий результаты по запросу PC через переходник USB-UART, является одним из простейших вариантов.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Замеры времени
СообщениеДобавлено: Пт ноя 12, 2010 23:53 
Хищник писал(а):
Вот-вот. В итоге устройство начинает работать с конкретно выделенным для него компьютером, хотя можно было сопоставимые усилия потратить на усовершенствование датчика. На сегодняшний день МК, опрашивающий датчик с соблюдением всех временных интервалов, ведущий журнал, и при необходимости выдающий результаты по запросу PC через переходник USB-UART, является одним из простейших вариантов.

Да, но это нужно еще сделать железо и написать две программы. Я лучше вместо этой работы напишу что-то более полезное...

ЗЫ. Это был программатор KeeLoq-микросхем который должен вести счетчик (не повторять сериальник) и при этом что-то туда еще добавлять. Программа была написана и работает с 1998 и до сих пор. Программирование ведут полные юзеры ;) .


Последний раз редактировалось ArtemKAD Пт ноя 12, 2010 23:56, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Замеры времени
СообщениеДобавлено: Пт ноя 12, 2010 23:56 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Хищник писал(а):
vikt писал(а):
В свое время использовал прерывание int 70 часов реального времени.
Настроено по умолчанию на 1024 прерываний в секунду, но есть делители.

Является ли этот таймер официальным пользовательским ресурсом, который обязан поддерживаться операционными системами?


вероятнее всего да, не знаю. int 70 так же используется будильником реального
времени, и возможно так же вызывается в случае разрядки батареи смос.
В регистре статуса как раз указан источник прерывания.
В дос работает, в linux вероятно можно. Если есть низкоуровневые
функции api для установке векторов прерываний, тк в защищенном
режиме это проблематично.
Наверняка можно написать драйвер устройства.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB