Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   Старый софт »   Бенчмарки I/O портов и записи в видеопамять
RSS

Бенчмарки I/O портов и записи в видеопамять

<<Назад  Вперед>> Печать
 
Mickle
Newbie


Откуда: г. Рыбинск
Всего сообщений: 30
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
16 авг. 2015
Две крошечные консольные 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
IOSpeed
VIDSpeed
- обе программы требуют сопроцессора (
Mickle
Newbie


Откуда: г. Рыбинск
Всего сообщений: 30
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
16 авг. 2015
Виноват. Привык, что во всех моих ПК, начиная с СМ 1810, были сопроцессоры.
Перекомпилировал и перезалил в шапку. Протестировать пока не на чем.
Ekb
Advanced Member


Всего сообщений: 1628
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
15 июня 2014
Хорошо, позже проверю сопроцессор :)

COM-порт - я не особо разобрался, какие-то нолики. (может кабель нужно подключить "сам в себя" ?)

VID - работает только с эмулятором 386 :) .. а так, зависает (проц 286, синий экран и завис). Получится ли убрать 32-битные инструкции? Или это необходимо для подсчета DWORD ?
Mickle
Newbie


Откуда: г. Рыбинск
Всего сообщений: 30
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
16 авг. 2015
IOSpeed измеряет скорость чтения/записи в пространстве портов ввода-вывода, но не передачи через интерфейсы. COM, LPT и пр. здесь не при чём :frown:
Как только запущу 286, проги переделаю под него.
<<Назад  Вперед>> Печать
Полигон-2 »   Старый софт »   Бенчмарки I/O портов и записи в видеопамять
RSS

0 посетителей просмотрели эту тему за последние 15 минут
В том числе: 0 гостей, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS