· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Быстродействие out dx, al

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Дек 20, 2003 15:42:59

Кто подскажет, чем ограничивается быстродействие команды out dx, al?

Если использовать в качестве порта вывода порт данных принтера (378h), то выполнение этой команды затягивается примерно на 1 мкс.

Это архитектура процессора дает такие тормоза, чипсет материнской платы, либо что-то еще?


Дата: Дек 20, 2003 17:53:46

Windows или DOS?


Дата: Дек 20, 2003 20:14:41

А разве есть разница?
Тестировал под Win95, Win98 с помощью бесконечного цикла смены 1-0-1-0-1. Измерял осциллографом: т.е. именно "чистое" время исполнения команды.

Непрерывная цепочка импульсов, естественно, прерывалась из-за многоздачности Windows.


Дата: Дек 20, 2003 23:21:29

Конечно есть разница, Windows работает в защищённом режиме, а в нём перед обращением к порту проверяется доступ, к тому же многозадачность хорошо подтормаживает. Из DOS'а должны быть быстрее, там всё уже будет ограничиваться пропускной способностью параллельного порта.


Дата: Дек 21, 2003 02:52:05

Canvas
чипсет материнской платы + скорость работы параллельного порта.


Дата: Дек 21, 2003 13:00:43

В ДОС-е надо всё делать. Переходить в защищенный режим. Только там можно добиться максимума производительности. И никакой Виндовс мешать не будет!!!


Дата: Дек 21, 2003 14:09:27

Ну вариант нумбер 2 - linux + RT extensions.
А вообще не понимаю - нафига извращаться, и добиваться производительности LPT. Порт для этого не предназначен. 115200 там макс, ну или че-то по-более на новых версиях ECP. Так почему не заюзать PCI? Там пропускная способность по-шустрее будет. И не надо извращаться.


Дата: Дек 21, 2003 14:26:37 · Поправил: Canvas

Люди, да ведь непринципиально, исполняется ли команда out за 10 или 30 тактов процессора (как и должно вроде быть в привел. и неприв. режимах)!

При тактовой частоте за 1 ГГц это должны были быть сотые доли микросекунды! А тут на несколько порядков больше! Я пока склонен думать, что это чипсет, в который интегрирован этот порт.

Проверял на двух компьютерах -- 486-ноутбуке и настольном 1,8 ГГц. Всюду около 1 мкС. К сожалению, в этих компьютерах нет возможности поиграться с тактовыми частотами. Дома можно, но нет осциллографа.

dragon, многозадачность тут ни при чем, т.к. интересует (да и меряется) пиковая производительность, когда задача уже получает свой квант времени.

Вопрос появился из идеи использовать эту команду для задания сверхточных временных интервалов. Если на ВСЕХ компьютерах это время около 1 мкС (+/- хотя бы 50%), то это меня вполне устроит.


Дата: Дек 21, 2003 16:31:37

Бред. Нельзя на это полагаться - попробуй LPT порт перепрограммировать в разные режимы ECP и посмотри результаты. Помимо этого - этот порт не предназначен для измерения временных интервалов. Со всеми вытекающими. Если ты собираешься делать это "для себя" то ради бога. А если для широкой публики - могу дать гарантию, что больше чем у 50 процентов это работать не будет.


Дата: Дек 21, 2003 19:10:49

Canvas
При тактовой частоте за 1 ГГц это должны были быть сотые доли микросекунды!
??? Читаем 12 главу первого тома IA32.

Вопрос появился из идеи использовать эту команду для задания сверхточных временных интервалов.
Вы для своей программы время измеряете или для внешнего устройства, подлюченного через параллельный порт? Если второе, то существуют более "нормальные" способы.


Дата: Дек 21, 2003 20:50:18

rst, обращение к порту всегда в режиме Standard Mode, т.к. производятся обращения по адресу 378h. От того, какой режим выставлен в BIOS SETUP (ECP, EPP), это время не зависит (уже пробовал!).

Quantum, время не измеряю, а задаю. Да, для внешних устройств, подключенных к этому же порту.

Подскажите тогда эти "нормальные" способы (нужны именно микросекундные интервалы).


Дата: Дек 21, 2003 21:03:27

Canvas
Подскажите тогда эти "нормальные" способы (нужны именно микросекундные интервалы).
Вариантов море, самый лучший (точность/стабильность/цена) - это кварцевый генератор (1 - 2 МГц).


Дата: Дек 21, 2003 21:30:25 · Поправил: Canvas

Ой, наверно, мы неправильно поняли друг друга :(

Мне надо формировать компьютером не однообразную последовательность (1-0-1-0 просто взято для примера), а кодовые посылки (и даже несколько в параллель) с длительностью имульса/паузы порядка нескольких микросекунд. То, что эти посылки могут прерываться из-за многозадачности, значения не имеет.


Дата: Дек 21, 2003 21:43:16

Ясно. А длительность должна быть очень точной? Подряд идущие нули и единицы вы и так можете отличить через сигнал nStrobe (первая ножка порта).


Дата: Дек 21, 2003 21:53:39 · Поправил: Canvas

У меня еще такая мысль.
Если порт был бы на ISA мультикарте, то быстродействие команды OUT определялось бы скорострельностью шины ISA (CLK ~8 МГц). И работой логики мультикарты, т.к. на ISA есть возможность затормозить обращение к устр.вв-выв. до 2,5 мкс.

Но производителю чипсетов нужно же обеспечивать совместимость снизу вверх (даже по времени обращения)!

PS(вдогонку, относ. предыд постинга). Управляющие сигналы затрагивать не хочу, только линии данных. Точность +/- 0,5 мкс.

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.048