Timer V2

Компьютер "Спринтер" http://sprinter.nedopc.org

Moderator: Shaos

Sayman
Maniac
Posts: 223
Joined: 05 Oct 2009 19:44
Location: 212.164.105.5

Timer V2

Post by Sayman »

Приветствую. Когда-то давно, Иван (он же Imak, он же Winglion) создал утилиту для замера "производительности" в основной памяти и быстрой памяти (исполнение разных команд).
По прошествии длительного времени я считал (наверное многие так считали), что тест довольно точный и полагался на его результаты. Однако, в какой-то момент я усомнился в "чистоте" результатов. Начал смотреть во внутренности timer.exe и обнаружил, что тесты составлены с ошибками.
1. в тестах в основных циклах (где тестируется непосредственно сами команды) допущены лишние (мусорные) команды.
2. в тесте Push/Pop допущено, что обе команды внутри одного цикла. С моей точки зрения это не верно, ведь команды выполняют разные функции и тестировать их нужно по отдельности.
3. так же в этом тесте (push/pop) были дописаны команды, которым точно не место в цикле тестирования.
Я понимаю, что команды были вписаны для выравнивания по тактам, однако, если читать комментарии, в той части где он ведёт подсчёт тактов, то можно заметить, что часть команд не подсчитаны. Когда я начал сам всё подсчитывать, то и сам ошибся несколько раз в подсчётах. чтобы подсчёт был более точным, я использовал Visual Studio Code с плагином для подсчёта тактов для мнемоники Z80. Как следствие - более точный подсчёт всех тактов в каждом тесте. По итогу, ни одна цифра не сошлась с комментариями автора, все тесты имеют завышение по затраченным тактам. Посмотрев на это всё и проведя несколько тестов я понял, что так дальше жить нельзя и надо что-то менять. Ну, т.е. я начал пилить свой тест, но на базе оригинала.
От оригинала я взял первые 2 процедуры. Это процедура контроля времени и самый первый тест для Inc/Dec (и то с правками). Так же в оригинале CMOS_TEST вызывается дважды для того, чтобы повысить точность замера, на тот случай, если первый вход попал на самый конец секундного "тика". Я этот момент доработал, отфильтровав текущую секунду. Тест не начинается. пока она не закончится. Ну и далее, все оригинальные тесты были сильно переписаны. В частности, из основного цикла убраны все мусорные команды (кроме команд организации цикла), все тесты полностью подогнаны под 10000 тактов (за секунду). Добавил так же ещё 2 тестируемые команды. На основе модификации от Shaos`а добавил поддержку для памяти ISA. при этом, в отличии от его мода, мой может работать с обоими слотами. т.е. если в оба слота вставить что-то с доступом к памяти через ISA, то оба слота будут обнаружены и протестированы. Остаётся место ещё под 1 команду. Далее, когда-нибудь (возможно), я добавлю тест производительности ldir, ldi и акселератора (в мегабитах или килобитах).
Во вложении архив с timerv2.exe и исходниками к нему.

ЗЫ. Чуть не забыл. в утилите были использованы части нового Fdisk от Дмитрия aka Hard/WCG. Спасибо за идею цветной печати! Хотя сама печаталка (printf) была выбрана из Solid C и модицифирована.

 было (timer v.1)
Image

 стало (timer v.2)
Image

You do not have the required permissions to view the files attached to this post.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Re: Timer V2

Post by Lavr »

Sayman wrote:Иван ... создал утилиту для замера "производительности" в основной памяти и быстрой памяти (исполнение разных команд).
А какова на ваш взгляд в принципе производительность Sprinter-а объективно?

Мне почему интересно: когда я переносил в своё время расчеты со "Специалиста" 2 МГц
на IBM XT i8086 (4.77MHz "Искра 1030"), я ожидал повышения производительности ну
хотя бы вдвое: и частота выше, и проц 16-разрядный.
Но к моему удивлению этого не произошло... :roll:
Было ощущение "ну вроде как оно чутка быстрее, но не на много..."

Заметный прирост производительности я ощутил явно лишь на IBM PC i286 (20MHz Harris)
с математическим сопроцессором.
iLavr
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Timer V2

Post by Shaos »

Прогнал на своём Спринтере со своей сетевушкой воткнутой во ВТОРОЙ (крайний) слот:
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Timer V2

Post by Shaos »

Lavr wrote:
Sayman wrote:Иван ... создал утилиту для замера "производительности" в основной памяти и быстрой памяти (исполнение разных команд).
А какова на ваш взгляд в принципе производительность Sprinter-а объективно?

Мне почему интересно: когда я переносил в своё время расчеты со "Специалиста" 2 МГц
на IBM XT i8086 (4.77MHz "Искра 1030"), я ожидал повышения производительности ну
хотя бы вдвое: и частота выше, и проц 16-разрядный.
Но к моему удивлению этого не произошло... :roll:
Было ощущение "ну вроде как оно чутка быстрее, но не на много..."

Заметный прирост производительности я ощутил явно лишь на IBM PC i286 (20MHz Harris)
с математическим сопроцессором.
Тут зависит от того откуда ты программу пускаешь - если из основной памяти (4 Мб), то из-за торможения при обращении к симу она работет как будто на 7-10 МГц (см. на картинку выше - зависит сколько обращений к памяти делает команда - чем больше, тем медленне и ближе к 7 МГц будет получаться эффективная скорость).
Если из быстрой памяти пускаться (64 Кб без вейтов, но доступные только по 16 Кб в одном окне), то на 21 МГц.
А если из памяти в ISA-карточке (тоже только одно окно 16 Кб, но карточка может уметь подставлять разные страницы в это окно), то 14 МГц.
Если отключить турбу, то везде будет ровно 3.5 МГц (на картинке замеры показаны оранжевым цветом), как на оригинальном ZX-спектруме и это несколько медленновато...
Я тут за главного - если что шлите мыло на me собака shaos точка net