Объявление форума |
Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС. |
Полигон-2 » Старый софт » Бенчмарки I/O портов и записи в видеопамять |
<<Назад Вперед>> | Печать |
Mickle
Newbie
Откуда: г. Рыбинск Всего сообщений: 30 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 16 авг. 2015 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 4 апреля 2018 23:34 Сообщение отредактировано: 15 апреля 2018 21:58
Две крошечные консольные DOS-утилиты для оперативного контроля пропускной способности (кбайт/сек) портов ввода-вывода и видеопамяти. Написаны давно, около 20 лет назад. Использовал при изучении влияния wait-states, частот, делителей, буферов и т.п. 386+ материнских плат. Исходники на TP7 в архивах. 1) IOSpeed - скоростемер портов. Строка запуска: IOSpeed.exe port [options] port - шестнадцатиричный номер порта ввода-вывода, [options] - опциональные параметры. Параметры: R - режим чтения, W - режим записи, 1 - чтение/запись байтами, 2 - словами, 4 - двойными словами (только на 80386). Пример использования: IOSpeed.exe 378 RW12 По завершении выводится сводная таблица с результатами 5-ти итераций в каждом выбранном режиме. 2) VIDSpeed - скоростемер видеопамяти на запись. Строка запуска: VIDSpeed.exe [Mode] [Mode] - шестнадцатиричный номер видеорежима. Пример использования: VIDSpeed.exe 101 Краткое описание: Программа предназначена для сравнительной оценки эффективности различных методов пересылки данных между основной памятью и памятью видеоадаптера. В качестве параметров командной строки задается номер видеорежима в шестнадцатиричной форме (можно задавать любой графический режим, в том числе VESA, но с сегментом видеопамяти A000:0). Далее, при успешной установке требуемого видеорежима выполняется последовательно 5 (4 - в случае отсутствия сопроцессора) пересылок 64000 байт данных из RAM в VRAM видеокарты следующим образом: 1. rep movsb (8 bit) 2. rep movsw (16 bit) 3. rep movsd (32 bit) 4. mov eax,[esi+xx] / mov [edi+xx],eax (32 bit x 256) 5. через FPU (2 x qword) 128 bit Отсчет времени выполнения тестов проводится по второму каналу таймера с дополнением слева битом переполнения (динамический диапазон 0..131071 тиков, 1 тик 1/1193180 с, прерывания можно запрещать). Последний тест показывает возможные резервы видеосистемы, так как в нем используется 64-х битовые пересылки. Для более объективных результатов необходимо наличие быстрого математического сопроцессора (Pentium). По полученным результатам можно судить об особенностях цепочки: [ RAM -> BUS ->] CPU -> BUS -> VRAM и сделать некоторые выводы... |
wbcbz7
Full Member
Откуда: omsk || nsk Всего сообщений: 230 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 17 фев. 2014 |
спасибо за утилиты, особенно за IOSpeed (не припомню бенчей для портов ввода-вывода) По поводу бенчей видеопамяти - я недавно писал VIDBENCH, он тестирует и VESA LFB-режимы + чтение/запись из/в видеопамять (правда только 8/16/32 бит, было лень впиливать FPU/MMX пересылки, плюс замеры идут через таймер RTC), надо как-нибудь сесть и доделать |
Mickle
Newbie
Откуда: г. Рыбинск Всего сообщений: 30 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 16 авг. 2015 |
Отличная программа VIDBENCH! Поддержка LFB может особенно пригодиться, к примеру, при настройке write combining / MTRR MSR на AMD K6-х. Таймеры, особенно на ретрокомпьютерах - та ещё головная боль. TSC в допентиумную эру отсутствует. 2-й канал 8254 очень короткий, максимум 0,11 сек для DOS и 0,055 сек для Windows VDM/NTVDM виртуальных машин. RTC перепрограммировать на ускоренный счёт с прерываниями - дело потенциально опасное для BIOS функций. То же можно сказать и про нулевой канал 8254. В итоге лично я пришёл к выводу, что на 386+ (и даже 286+) компах всё же удобнее использовать нулевой системный канал таймера без перепрограммирования и перехвата прерывания, т.е. as is. Текущее время считывается квазиатомарно: сначала BIOS счётчик тиков, затем защёлкивается счётчик 8254 и после проверяется условие переполнения, которое может произойти из-за не атомарности операций чтения. В итоге получаем стабильный длинный счётчик с дискретой около 1 мкс и гарантией монотонности хоть на AT 286, хоть на пентиуме. Единственное, что может нарушить монотонность хода, это SMI. Включенная legacy поддержка мышей, клавиатур, USB накопителей гарантированно будет давать случайные отрицательные приращения текущего времени. На платформах Cyrix MediaGX/NS Geode с их VSA архитектурой добавится ещё куча неотключаемых SMI источников. var FPUStore: double; const i8254Time:double = 8.3809581278950972233047626470753e-7; function GetSystemTime:double; code; {use i8254} asm xor eax,eax mov ebx,dword [46Ch] out 43h,al mov edx,dword [46Ch] in al,40h mov ah,al in al,40h xchg al,ah cmp ebx,edx je @SkipCorrection or ax,ax js @SkipCorrection mov edx,ebx @SkipCorrection: not ax mov word [FPUStore],ax mov dword [FPUStore+2],edx mov word [FPUStore+6],0 fild qword [FPUStore] fmul qword [i8254Time] ret end; |
Ekb
Advanced Member
Всего сообщений: 1628 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 15 июня 2014 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 12 апреля 2018 13:38 Сообщение отредактировано: 12 апреля 2018 13:39
IOSpeed VIDSpeed - обе программы требуют сопроцессора ( |
Mickle
Newbie
Откуда: г. Рыбинск Всего сообщений: 30 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 16 авг. 2015 |
Виноват. Привык, что во всех моих ПК, начиная с СМ 1810, были сопроцессоры. Перекомпилировал и перезалил в шапку. Протестировать пока не на чем. |
Ekb
Advanced Member
Всего сообщений: 1628 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 15 июня 2014 |
Профиль | Сообщить модератору
NEW! Сообщение отправлено: 15 апреля 2018 23:20 Сообщение отредактировано: 15 апреля 2018 23:26
Хорошо, позже проверю сопроцессор COM-порт - я не особо разобрался, какие-то нолики. (может кабель нужно подключить "сам в себя" ?) VID - работает только с эмулятором 386 .. а так, зависает (проц 286, синий экран и завис). Получится ли убрать 32-битные инструкции? Или это необходимо для подсчета DWORD ? |
Mickle
Newbie
Откуда: г. Рыбинск Всего сообщений: 30 Рейтинг пользователя: 0 Ссылка Дата регистрации на форуме: 16 авг. 2015 |
IOSpeed измеряет скорость чтения/записи в пространстве портов ввода-вывода, но не передачи через интерфейсы. COM, LPT и пр. здесь не при чём Как только запущу 286, проги переделаю под него. |
<<Назад Вперед>> | Печать |
Полигон-2 » Старый софт » Бенчмарки I/O портов и записи в видеопамять |
1 посетитель просмотрел эту тему за последние 15 минут |
В том числе: 1 гость, 0 скрытых пользователей |
Последние | |
[Москва] LIQUID-Акция. Сливаются разъемы CF МС7004 и 7004А на AT и XT Пайка термотрубок Проммать s478 PEAK 715VL2-HT ( Full-Size SBC) Подскажите по 386 материке по джамперам. |
Самые активные 5 тем | |