Главная » Файлы » Методы достижения производительности

Методы достижения производительности

Основные возможности драйвера

Пункт менюПоддержка регистра статуса прерываний шириной в 8, 16, 32, 64 бита;
Пункт менюАвтоматическое определение формата регистра статуса прерываний, если таковой реализован в оборудовании;
Пункт менюПоддержка как Port I/O, так и Memory Mapped I/O оборудования;
Пункт менюПолная поддержка PNP в соответствии с требованиями Windows 2000/XP/2003;
Пункт менюПоддержка всех распространённых Super IO контроллеров;
Пункт менюОбслуживание COM-портов в соответствии с требованиями Windows DDK к драйверам последовательных асинхронных портов;
Пункт менюПоиск ISA-карт, на которых расположены последовательные порты, и автоматическое определение IRQ (практически полный PNP);
Пункт менюПоддержка мультипортовых плат как с регистром статуса прерываний, так и без него;
Пункт менюАвтоматическое определение реальной глубины FIFO-буфферов, как на прием, так и на передачу;
Пункт менюАвтоматическое определение наличия аппаратного flow-control;
Пункт менюОпределение реальной скорости UART-портов и соответствующее управление;
Пункт менюУправление питанием по спецификации «OnNow»;
Пункт менюВозможность обслуживания UART-портов размещенных на другом комбинированном устройстве через Serial_XP_Lik_Interface;
Пункт менюПолный loopback-тест всех портов.

Методология подхода

При разработке программной модели драйвера последовательных портов SerialXp.sys исповедовались следующие принципы, которые, по мнению автора, должны обеспечить эффективность кода и оптимизацию загрузки центрального процессора при обработке операций в пространстве портов ввода-вывода:

Пункт менюНесколько обработчиков прерываний, каждый из которых оптимизирован под конкретный режим работы UART в зависимости от требований приложения;
Пункт менюНикогда не используется «Global Cancel Spin Lock»;
Пункт менюНа платформах Windows XP/W2K3 используются «Queued Spin Locks»;
Пункт менюИспользуется более быстрые чем системные «Cancelable IRP Queues»;
Пункт менюБолее оптимальный, по сравнению с serial.sys, исходных код;
Пункт менюАлгоритмическая совместимость с условиями «no aliasing» для возможности более существенной оптимизации средствами компилятора;
Пункт менюИспользуется оптимизирующий компилятор MS C++ 13.0, в режиме единой глобальной оптимизации по всему исполняемому модулю;
Пункт менюИспользуются прямые Interlocked-инструкции и набор команд процессоров Intel.

Объем проделанной работы

Исходный код драйвера (не включая Windows DDK) состоит из 46 файлов С++, 49 h-файлов; всего более 47 тысяч строк, более полутора мегабайт исходного кода. Драйвер SerialXP (также как ExactPerformance, StreamLabs Alpha и CronyxDvbBundle) основывается на библиотеке шаблонов C++ для разработки драйверов Windows 2000/XP/W2K3 (C++ templates and classes library for Windows 2000/XP/W2K3 device drivers).

Реклама на V-Comp:


21.11.2017