Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

MASM & API & порты

316
09 сентября 2009 года
Alm3n
889 / / 29.05.2009
Дорого времени суток.
Надо высчитать за сколько времени будут произвдене несколько мат операций.Алгоритм таков:
создам поток, который будет высчитывать эти операции и завершаться
создам тамейр,который вернет время жизни потока,после его завершения
выведу результаты таймера
алгоритмбез ошибок?

и несколько вопросов:
1)можно ли и как считать,записать в порт таймера с помошью апи число?
считать из регистра счетчика,записать в регистр частоты регенерации памяти.
2)в секции биос,для дос приложений,есть информация о тактовой частоте процессора?нужно будет понизить ее с помощью системного таймера,потом повысить и вывести изменения частот.я предпологаю,что есть,если так,то она обновится,если я ее изменю без перезагрузки программы?

Заранее спасибо за ответы.
14
10 сентября 2009 года
Phodopus
3.3K / / 19.06.2008
Логика верная, только зачем таймер - меряешь время до и после выполнения операций. Берешь дельту. Только винда - система с вытесняющей многозадачностью, не реального времени, поэтому о точности каких бы то ни было измерений говорить не приходится.
Про порт таймера вообще не понял.
Частота и системынй таймер как-то не связаны вообще.
316
10 сентября 2009 года
Alm3n
889 / / 29.05.2009
Цитата: Phodopus

Про порт таймера вообще не понял.
Частота и системынй таймер как-то не связаны вообще.


Однако.Я тоже сначало не понял,но оказалось что еще как связаны.Цитирую методичку по асму,которую написал наш препод

Цитата:

В состав таймера входят:
- регистр констант пересчета CR (16 разрядов).

Каналы таймера подключаются к внешним ус*тройствам при помощи трех линий:
...
CLK (CLOCK) - вход тактовой частоты;
OUT - выход таймера.

Канал 1 работает в режиме 2, (CR) = 18 и исполь*зуется для управления регенерацией памяти. Сигнал на регенерацию появляется каждые 15 мсек (Трег =1/ (1193800/18)= 15*10). Выход OUT канала 1 подключен ко входу канала 0 ПДП, который по сигналу таймера производит регенерацию памяти. Увеличе*ние значения счетчика позволяет увеличить произ*водительность процессора, однако, это может при*вести к потере данных в ОЗУ.

Микросхема таймера использует для обмена информацией следующие порты ввода/вывода:
Адрес Операция Назначение
40h запись Загрузка счетчика канала 0
чтение Чтение счетчика канала 0
41h запись Загрузка счетчика канала 1
чтение Чтение счетчика канала 1
42h запись Загрузка счетчика канала 2
чтение Чтение счетчика канала 2
43h запись Запись управляющего слова в регистр режима канала


Вот как то так.Если я правильно понял,то таким образом можно изменять частоту процессора.Вот собственно само задание:
Написать программу, перепрограммирующую частоту регенерации памяти на 2-3 единицы в сторону увеличения и уменьшения, и вычислить скорость работы процессора при каждом изменении.

Я собирался читать из 41h порта читать текущее значение константы пересчета в al,инкреминировать и так же записывать обратно.Появилось только два вопроса:
1)можно ли в сегменете bios посотреть частоту
2)если можно,то изменится ли она в процессе выполнения программы,а не после перезапуска.

316
12 сентября 2009 года
Alm3n
889 / / 29.05.2009
Я написал какую то глупость?
14
14 сентября 2009 года
Phodopus
3.3K / / 19.06.2008
Насчет таймера не уверен - это к нашим железячникам, но вот API + порты IO это глупость :)
316
14 сентября 2009 года
Alm3n
889 / / 29.05.2009
на стчет портов я уже и сам понял :)
тогда последний вопрос,если все таки у меня получится,надо же как то посмотреть частоту процессора.как это сделать?надо что б под тасм инструкция была,для .368 и 16 разрядная.
14
14 сентября 2009 года
Phodopus
3.3K / / 19.06.2008
Да в общем случае частота процессора величина условная и определяется ее измерением - само число никуда не зашивалось. Так что считаешь количество тактов на еденицу времени. Время, имхо, с помощью RTC брать. Возможно полученное значение по таблице сопоставлять придется, таких деталей для +/- новых процессоров я уже не знаю.
42K
15 сентября 2009 года
machgun
25 / / 02.01.2009
имхо для таких целей лучше всего применить ассемблерную команду RDTSC (чтение из счетчика тактов процессора).
14
15 сентября 2009 года
Phodopus
3.3K / / 19.06.2008
Цитата: machgun
ассемблерную команду RDTSC


угу, если бы не

Цитата: Alm3n
инструкция была,для .368 и 16 разрядная.

316
15 сентября 2009 года
Alm3n
889 / / 29.05.2009
Увы,но реализация именно этой задачи мне нужна на ТАСМе,а он в количестве бит ограничен.регистр констант пересчета меняется нормально.а есть же какое нибудь стороннее ПО,которое может отображать тактовую частоту процессорав реал тайм?я видел такую программу,кажется она была из разряда спец ПО для материнок,но забыл как она называется.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог