PDA

Просмотр полной версии : SPEEDx



Hunta
21.06.2023, 21:20
Разное про мои программы семейства SPEEDx (http://www.kpxx.ru/soft/Utils/Speed3)

На текущий момент есть три варианта

SPEED0 - оценивает быстродействие только двух инструкций (BR .+2 и R1(23456.)+R0(12345.) в правильном варианте)

SPEED3 - оценивает быстродействие большого набора инструкций, выключая кэш, если найдёт

SPEED4 - оценивает быстродействие большого набора инструкций, включая кэш, если найдёт.

Из занимательного - оценка быстродействия simh (хост - Xeon X5680, 3.33 МГц):


.RUN SPEED3
OCnt field found :)

Тест быстродействия (кэш, если он есть, выключен)

BR .+2 63 737 065 оп./сек
R1+R0 classic 54 270 173 оп./сек
R0(23456.)+R0(12345.) empty 16 475 471 оп./сек
R1(23456.)+R0(12345.) 10 231 629 оп./сек -> 26 997 945 оп./сек
R1+@R0 classic 36 533 987 оп./сек
R1(23456.)+@R0(M-12345.) empty 16 653 499 оп./сек
R1(23456.)+@R0(M-12345.) 9 269 821 оп./сек -> 20 907 595 оп./сек
R0*R0 classic 52 680 696 оп./сек
11.*12. empty 16 166 863 оп./сек
11.*12. 9 556 118 оп./сек -> 23 369 900 оп./сек
R2/R0 classic 47 527 989 оп./сек
R2-R3(34567.)/R1(321.) empty 9 468 603 оп./сек
R2-R3(34567.)/R1(321.) 7 326 263 оп./сек -> 32 380 236 оп./сек
34567./321. (FPU) empty 6 742 099 оп./сек
34567./321. (FPU) 1 873 914 оп./сек -> 2 595 241 оп./сек
34567.89022+32109.754321 empty 7 795 286 оп./сек
34567.89022+32109.754321 5 152 780 оп./сек -> 15 200 492 оп./сек
34567.89022*32109.754321 empty 7 769 410 оп./сек
34567.89022*32109.754321 3 239 106 оп./сек -> 5 555 022 оп./сек
34567.89022/32109.754321 empty 7 860 808 оп./сек
34567.89022/32109.754321 5 094 201 оп./сек -> 14 474 240 оп./сек
CIS MULPI 1 687 027 оп./сек
CIS MULP 1 empty 7 764 281 оп./сек
CIS MULP 1 645 864 оп./сек -> 704 464 оп./сек
CIS MULPI 2 835 567 оп./сек
CIS MULP 2 empty 7 654 577 оп./сек
CIS MULP 2 763 292 оп./сек -> 847 835 оп./сек
CIS ADDNI 1 1 560 771 оп./сек
CIS ADDN 1 empty 7 677 404 оп./сек
CIS ADDN 1 1 346 870 оп./сек -> 1 633 426 оп./сек
CIS ADDNI 2 4 477 657 оп./сек
CIS ADDN 2 empty 7 611 327 оп./сек
CIS ADDN 2 3 224 827 оп./сек -> 5 595 625 оп./сек
MOV 8 word 1 empty 11 439 488 оп./сек
MOV 8 word 1 997 523 оп./сек -> 1 092 816 оп./сек
MOV 8 word 2 empty 11 070 541 оп./сек
MOV 8 word 2 1 369 058 оп./сек -> 1 562 257 оп./сек
CIS MOVCI 8 word 1 1 954 742 оп./сек
CIS MOVC 8 word 2 empty 6 814 728 оп./сек
CIS MOVC 8 word 2 1 890 882 оп./сек -> 2 617 028 оп./сек
R1 := M(word) 27 820 898 оп./сек
R1 := M(even byte) 27 502 815 оп./сек
R1 := M(odd byte) 27 348 696 оп./сек
#4+R0(2000) empty 33 846 032 оп./сек
#4+R0(2000) 12 413 815 оп./сек -> 19 604 055 оп./сек
CMP (R0)+,(R0)+ empty 34 138 001 оп./сек
CMP (R0)+,(R0)+ 11 147 875 оп./сек -> 16 553 461 оп./сек
#2+R0(2000) empty 33 989 668 оп./сек
#2+R0(2000) 12 387 448 оп./сек -> 19 490 832 оп./сек
INC R0 INC R0 empty 33 764 007 оп./сек
INC R0 INC R0 11 550 123 оп./сек -> 17 555 616 оп./сек
TST (R0)+ empty 33 401 463 оп./сек
TST (R0)+ 12 733 616 оп./сек -> 20 578 892 оп./сек
CLR R0 - SOB R0, . empty 62 204 112 оп./сек
CLR R0 - SOB R0, . 277 оп./сек -> 277 оп./сек
ABS1 7 034 228 оп./сек
ABS2 16 638 676 оп./сек
ABS2+ empty 33 006 704 оп./сек
ABS2+ 10 514 606 оп./сек -> 15 429 974 оп./сек
ABS2- empty 33 000 184 оп./сек
ABS2- 7 021 280 оп./сек -> 8 918 910 оп./сек
ABS3 9 053 859 оп./сек
.

На компе идёт управление тактовой частотой, по наблюдениям - во время работы SPEED3 тактовая частоты была в районе 3 МГц

- - - Добавлено - - -
Radon17 - по ссылке выше в каталоге beta - очередная попытка побороться за вывод через RT-11. SPEED.dsk - образ дискеты RX50 - попробуй и на Э85, пожалуйста

- - - Добавлено - - -
Radon17 Угонялся под эмулятором - и так и сяк и сбоку бантик - пока вроде всё норм. Но, если мне не изменяет память, прошлый раз на эмуляторе тоже было норм, а на реальной машинке - какой-то облом..

Radon17
21.06.2023, 22:13
Не работает ничего. Курсор мигающий и всё. Подождал пару минут.

https://pic.maxiol.com/thumbs2/1687374726.1401653652.230621220400300.png (https://pic.maxiol.com/?v=1687374726.1401653652.230621220400300.png&dp=2)

А эмулятор известное дело кривой, на нём например тетрис RTшный не работает, и некоторые другие проги. Если знать как он написан.... чудо, что он вообще работает.

Может в SPEEDx ввести вывод номера версии при старте? Чтобы уж точно не путаться чего на скриншоте.

Hunta
21.06.2023, 22:52
Ну, такое впечатление, что не прилетают прерывания от таймера... Но ещё бы знать точно.. Ок, попробую добавить типа предварительного тестирования..


Может в SPEEDx ввести вывод номера версии при старте?
Номер версии SPEEDx?

- - - Добавлено - - -

У него, кстати (у эмулятора Э85), основа - simh

Radon17
21.06.2023, 23:09
Номер версии SPEEDx?
Ага, чтобы не путаться.


У него, кстати (у эмулятора Э85), основа - simh
Но оооочень древний, 97-го года кажется.

Hunta
21.06.2023, 23:52
Но оооочень древний, 97-го года кажется.
Надо будет посмотреть те исходниках, которые у меня есть, и сравнить с simh


Ну, такое впечатление, что не прилетают прерывания от таймера
Хотя вроде делаю всё как в драйвере PI...

Вывод SHO CONFIG можешь выложить?

- - - Добавлено - - -
Radon17 - ещё такая просьба - запустить SPEED3 и подождать минут 10 (если ещё такого не было). Возможно я ошибся в счётчике прерывания и получилось слишком большое значение (хотя на эмуляторе врод как ок)

Radon17
22.06.2023, 00:07
Вывод SHO CONFIG можешь выложить?
Я же ещё тогда выкладывал. Или нужно буржуйский RESORC подсунуть?
https://zx-pk.ru/threads/21450-vsjo-po-pvk-elektronika-ms-0585-mneniya-foto-voprosy.html?p=1149509&viewfull=1#post1149509


ещё такая просьба - запустить SPEED3 и подождать минут 10
Ок, завтра попробую.

Hunta
22.06.2023, 00:11
Я же ещё тогда выкладывал. Или нужно буржуйский RESORC подсунуть?
Аха, спасибо. Просто у меня (RT-шный) показывает PRO380, но вроде чего-то такое мы обсуждали.. Или нет? Надо будет в исходники resorc заглянуть

Hunta
22.06.2023, 10:14
Radon17 уже засыпал и пришла в голову одна мысль - почему может не работать на реале и работать в эмуляторе Э85. С утра немного поменял логику работы и выложил обновленные SAV и DSK. В эмуляторах PDP-11 и Э85 по прежнему работает :)

Woxem
22.06.2023, 18:50
Radon17 уже засыпал и пришла в голову одна мысль - почему может не работать на реале и работать в эмуляторе Э85. С утра немного поменял логику работы и выложил обновленные SAV и DSK. В эмуляторах PDP-11 и Э85 по прежнему работает :)

А возможно запустить эту программу без терминала на 177560 просто с записью результата в ОЗУ ?

Hunta
22.06.2023, 19:09
А возможно запустить эту программу без терминала на 177560 просто с записью результата в ОЗУ ?
Если поменять исходник - возможно всё. В текущем исходнике - нет. Точнее говоря - программа сделана так, что она будет выводить свой результат - в одном варианте - на консоль (или точнее - в некое устройство, работающее аки консоль для вывода) по указанным адресам, в другом - через .TTYOUT и .PRINT

Radon17
22.06.2023, 22:26
пришла в голову одна мысль - почему может не работать
Не работает

https://pic.maxiol.com/thumbs2/1687461934.1401653652.230622221205173.png (https://pic.maxiol.com/?v=1687461934.1401653652.230622221205173.png&dp=2)

подождать минут 10
Не помогает.

Hunta
22.06.2023, 23:05
Не работает
Блин.. Думаю дальше...

- - - Добавлено - - -
Radon17 по крайне мере смог воспроизвести - я нашёл дискету с этой операционкой - в ней у меня тоже не тикает :)

Radon17
22.06.2023, 23:24
А на какой тикает? Если можете, скиньте загрузочный образ RX50 со SPEEDами.

Hunta
22.06.2023, 23:36
А на какой тикает? Если можете, скиньте загрузочный образ RX50 со SPEEDами.
Какая-то RT-11 5.7, скорее всего генерённая мной.
Выложил - там же каталог Sys

- - - Добавлено - - -

Если вдруг не будет видно такого каталога (кэширование IIS, блин) - в адресной строке добавить руками /Sys

- - - Добавлено - - -

Ещё из уже выясненного. Монитор FB сам по себе не виноват - в 5.7 под FB всё норм

- - - Добавлено - - -

В общем, проблема воспроизведена - теперь можно уточнять причина.
Под XM тоже работает
А на Немиге не пробовал ещё?

- - - Добавлено - - -

Не, ошибся - (скорее всего - дистрибутивный) 5.3 FB

Radon17
23.06.2023, 00:15
Hunta урааа, заработало! Скоро будет скриншот.

Hunta
23.06.2023, 00:25
заработало!
Я бы СИЛЬНО удивился, если бы не :)
У меня впечатление, что вектор другой.. Пытаюсь методом тыка

Radon17
23.06.2023, 00:42
Вот оно, наконец-то!
Hunta, ОГРОМНОЕ спасибо!!

UPD! Данные на скриншоте некорректны т.к. для рассчётов используется неверная частота таймера!
Правильный скриншот далее в теме.

https://pic.maxiol.com/thumbs2/1687470012.1401653652.speed3ms0585.jpg (https://pic.maxiol.com/?v=1687470012.1401653652.speed3ms0585.jpg&dp=2)

Образ этот подсунул, ввожу название с клавиатуры, а оно же оригинальное сгенеренное без патчей, ей МС7004 не родная :)
Благо LK201 стояла совсем рядом, переключил "на горячую".

Тест шёл около 11 минут.

Наверное надо ещё SPEED0 прогнать? Только завтра.

Hunta
23.06.2023, 00:50
Тест шёл около 11 минут.
Каждый блок работает 16 секунд :) А в SPEED3 их МНОГО :)


Наверное надо ещё SPEED0 прогнать?
Особого смысла нет - это просто УКОРОЧЕННЫЙ SPEED3 - всего две инструкции смотрятся

- - - Добавлено - - -

Судя по надписи, 5.01 тоже не генерённый.
Надо будет разные версии RT попробовать - вдруг до 5.03 такое же поведение..

- - - Добавлено - - -

Ну, для меня главное, что это НЕ МОЙ косяк :)

- - - Добавлено - - -

Всё, спать пошёл :)

Radon17
23.06.2023, 00:58
Не Э85 единой сыт человек. На Немиге по-прежнему не работает.
Возможно тоже от дистрибутива ОС зависит, но тут ситуация интереснее - обычный SPEED.SAV работает.

https://pic.maxiol.com/thumbs2/1687470982.1401653652.20230623005135766.jpg (https://pic.maxiol.com/?v=1687470982.1401653652.20230623005135766.jpg&dp=2)

P.S. А обычный SPEED.SAV можно под Э85 переделать?

- - - Добавлено - - -

Кстати просвятите пожалуйста, что за OCnt field?

Hunta
23.06.2023, 09:05
Возможно тоже от дистрибутива ОС зависит, но тут ситуация интереснее - обычный SPEED.SAV работает.
Обычный SPEED работает непосредственно с регистрами терминала и вектором 100. Почему я и спросил про эмулятор - воспроизвести проблему у себя :) Сегодня поковыряюсь :) Кстати, возможно заработает, если вывод сделать через регистры, а не через операционку - я могу и такой вариант собрать


P.S. А обычный SPEED.SAV можно под Э85 переделать?
Теоретически - да - исходник я восстановил, собственно, отталкиваясь от него я и делал свои SPEEDx. Но у него неправильно сделана работа инструкции, в отношении которой идёт подсчёт быстродействия. сами инструкции выглядят так:


R1 := R1 + R0
R1 := R1 + @R0
R0 := R0 * R0
R2 := R2 / R0

Учитывая, что на каждом повторе начальное состояние регистров разное - получается, что считаем быстродействия для разных операндов. А для деления вообще интересно, так как R3 ещё используется и как счётчик количества повторов, а R2 - как счётчик (на уменьшение) времени. Вообщем, числа получаются неточные, а для деления ещё и не пойми что.


Кстати просвятите пожалуйста, что за OCnt field?
Это (в мониторе RT-11) ячейка, где хранится счётчик количества символов (в очереди) для вывода в консоль - перед запуском тестирования программа ждёт, пока там будет 0 - буфер пуст, всё выведено. К сожаление, его адрес не фиксирован, пришлось эвристически искать. Вроде как в 5.x работает, более ранние не проверял. На Немиге не нашлось.

- - - Добавлено - - -

В общем, решил переделать SPEEDx. Что бы на Э85 использовался soft вывод на консоль, а в других случаях - hard, наверное, такое вариант будет более работоспособен для всякой экзотики типа Немига :)

Alex_K
23.06.2023, 10:21
Это (в мониторе RT-11) ячейка, где хранится счётчик количества символов (в очереди) для вывода в консоль - перед запуском тестирования программа ждёт, пока там будет 0 - буфер пуст, всё выведено. К сожаление, его адрес не фиксирован, пришлось эвристически искать. Вроде как в 5.x работает, более ранние не проверял. На Немиге не нашлось.
Ещё есть способ - ждут сброса бита разрешения прерывания в регистре статуса терминала. Адрес регистра статуса узнаётся через RMON. Но это с нормальными регистрами терминала. Как это будет на Э-85 и Немиге, судить не берусь.

Hunta
23.06.2023, 10:38
Ещё есть способ - ждут сброса бита разрешения прерывания в регистре статуса терминала
Это был первый вариант (даже закомменченный код ещё остался)

Как это будет на Э-85
Вот поэтому и полез - через задний кирилицО :)

- - - Добавлено - - -

В целом же на выходные - поиграться с (эмулятором) НЕМИГА и сделать в программе выбор - софт (пока для Э85) или хард вывод на терминал. А, да - с учётом не совсем красивого вывода на экран - переделаю все сообщения на англо-латиницу

Radon17
23.06.2023, 11:03
А можно вместе с выбором способа вывода ещё выбор языка сообщений? Или это ненужное загромождение кода вторым алфавитом? А как планируется выбор? Ключиком?
К примеру:
.R SPEED3 /HARD /RUS

Hunta
23.06.2023, 11:36
А можно вместе с выбором способа вывода ещё выбор языка сообщений? Или это ненужное загромождение кода вторым алфавитом?
Честно говоря, лень добавлять работу с командной строкой. Но я подумаю

- - - Добавлено - - -

То есть пока будет жёсткий вариант (условная трансляция), а там видно будет :)

Hunta
23.06.2023, 15:45
Поскольку это не сильно сложно (но ошибкофф насажть могу) - переделал на вариант автоматического выбора soft-hard вывода на терминал. Теперь soft будет только на Pro/Э85, в остальных случая hard.

На эмуляторе PDP-11 Патрона и на эмуляторе Э85 Anasana (под "правильной" RT-11) вроде работает.
Radon17 - до эмулятора НЕМИГА ещё не добрался, поэтому просьба проверить :)

Лежит там же, перед скачиванием проверить, что дата сегндняшняя, а время (по Москве) в районе 15:15 (а то кэш IIS :) )

- - - Добавлено - - -

Ошибка в SPEEDx в отношении Pro/Э85. У них часы тикают с частотой 64 Гц в секунду.

Radon17
23.06.2023, 17:36
@Radon17 - до эмулятора НЕМИГА ещё не добрался, поэтому просьба проверить

Проверил, работает! Только прошу прощения, тестил на 64-символьном знакогенераторе, по-хорошему надо загрузить на 80 символов. Но это же тесты.
Гораздо сильнее смущает вывод паразитных символов после цифр (на скриншоте видно).
И ещё после вывода "R2-R3(34567.)/R1(321.)" и его значения экран очистился.
Такое ощущение, что что-то с управляющими символами (после последней цифры в порт летит код управлящего символа?) или скоростью записи в порт (неправильный опрос 177564?). Или железо/софт Немиги работают нестандартно.

https://pic.maxiol.com/thumbs2/1687530915.1401653652.speed301nemiga.jpg (https://pic.maxiol.com/?v=1687530915.1401653652.speed301nemiga.jpg&dp=2)


Лежит там же
А что за SPEED2?


Ошибка в SPEEDx в отношении Pro/Э85. У них часы тикают с частотой 64 Гц в секунду.
Получается скриншот на прошлой странице недействителен?

Hunta
23.06.2023, 18:43
Гораздо сильнее смущает вывод паразитных символов после цифр (на скриншоте видно).
Я на это налетал, но на физических компах. Возможно, действительно что-то где то не проверяет готовность - буду смотреть



А что за SPEED2?
Случайно выложил - это предыдущий вариант (версия 2 так сказать) - первая переделка SPEED после восстановления текста. Чего там - уже не помню.


Получается скриншот на прошлой странице недействителен?
Разбираюсь. Пока не понятно. Я тут поэкспериментировал с разными версиям RT (5.1, 5.1B, 5.1C, 5.2, 5.3). Мой вариант работы с прерываниями от таймера работае начиная с 5.1C. Вот кусок из исходника:


6$: MOV #16.,PCTIK ;;;Re-initialize PC tick counter
RTI ;;;Drop this tick on the floor

PICLOK::TST @#173030 ;;;Prime clock to interrupt on next tick
DEC (PC)+ ;;;Count off tick
PCTIK: .WORD 16.
BEQ 6$ ;;;Drop every 16th tick
LKINT = 0
JLKINT == . + 2
JMP @#LKINT ;;;Go do normal RT clock tick processing
; JLKINT is hooked with LKINT from RMON


То есть когда счётчик PCTIK обнуляется очередным прерыванием - идёт НЕ передача в RT. То есть получается, что из 16 прерывания обрабатывается 15. Технически это логично - учитывая, что стоит кварц на 32768 Гц, а из него сделать 50 или 60 герц - проблематично. Делением на два получается 64. А 64/16*15 - как раз 60 герц - и вроде бы всё логично. Если я не ошибаюсь - то да, все измерения коту под хвост. Надо смотреть на схему - чего там и как, потому как вроде использовалась 512ВИ1, а она вроде выдаёт 50 герц, нет? В общем.. буду смотреть сам и жду аргументов за и против

- - - Добавлено - - -


Такое ощущение, что что-то с управляющими символами (после последней цифры в порт летит код управлящего символа?)
Управление терминалом вообще не использую (ну, кроме CR LF), а вот

скоростью записи в порт (неправильный опрос 177564?)
Возможно..

- - - Добавлено - - -

Вообще странно, что нет радостной надписи что найдено или грустной что не - про OCnt..
Полезу проверю исходник..

Alex_K
23.06.2023, 18:49
Надо смотреть на схему - чего там и как, потому как вроде использовалась 512ВИ1, а она вроде выдаёт 50 герц, нет?
Она выдаёт 64 Гц. В Союз-НЕОН так же из 64 Гц делается усреднённая частота 50 Гц. Т.е. большинство тиков идут через 1/64 сек и некоторые проскакивают через 1/32 сек.

Radon17
23.06.2023, 18:57
Я на это налетал, но на физических компах.
Так я и тестил на физической Немиге :)

Hunta
23.06.2023, 19:49
Она выдаёт 64 Гц.
Ок, спасибо, значит на Pro/Э85 буду исходить из этого. Получается, Э85 работает чуть побыстрее, чем по (неправильным) результатам :)
И вроде проблему с мусором определил. Сейчас - проверю и выложу обновлённую версию

- - - Добавлено - - -


Так я и тестил на физической Немиге
Это я понимаю :) Просто на эмуляторах... Хм.. А на эмуляторах я частенько запускаю только SPEED0, так как он очень похож - и, похоже, поэтому проблему не замечал...

- - - Добавлено - - -
Radon17 выложил, там же. Время на файла 19:36-19:37 по Москве.
Некая эвристика - вроде как работает и на той проблемной RT11FB 5.01, с которой всё началось

BlaireCas
23.06.2023, 20:07
Запустил SPEED3 на железной УКНЦшке. Результат похож на правду.
Я так понимаю R0+R1 это повторение команд ADD R0,R1 и получилось 594 тысячи операций в секунду. Ну примерно 13-14 тиков на операцию при 8МГц где-то так оно и должно быть.
Еще не очень ясно что такое стрелочка ->

https://i.imgur.com/Y5gDli7.png

Hunta
23.06.2023, 20:33
Еще не очень ясно что такое стрелочка ->
classic - взятое из SPEED, но с моей точки зрения там считается неправильно.

Мой вариант исходит из того, что для правильного подсчёта нужно на вход команды или блока команд нужно подавать одни и те же аргументы.

Поэтому есть блок инициализаии и команда или блок команд. empty - время выполнения только блока инициализации, следующая за ней строчка - это время выполнения блока инициализаии и команды или блока команд. А за стрелкой - чистое время выполнения команды или блока команд (без блока инициализации).

Radon17
23.06.2023, 20:55
@Radon17 выложил, там же.
Потестил на Э85.

https://pic.maxiol.com/thumbs2/1687542624.1401653652.speed303ms0585.jpg (https://pic.maxiol.com/?v=1687542624.1401653652.speed303ms0585.jpg&dp=2)


Некая эвристика - вроде как работает и на той проблемной RT11FB 5.01, с которой всё началось
Нуууууу, начинает работать :)

Стабильно валится вот в этом месте (проверял три раза).
Курсор перестаёт мигать и машина виснет (ждал по несколько минут, не отвисала).
Но и это уже огромный результат. Спасибо :)

https://pic.maxiol.com/thumbs2/1687542706.1401653652.230623203452686.png (https://pic.maxiol.com/?v=1687542706.1401653652.230623203452686.png&dp=2)

Кстати результаты несколько отличаются от скриншота из 5.03 выше. Это наши в системе с таймером чего-то накрутили?

На Немиге потестить v3.0.3?

- - - Добавлено - - -


Запустил SPEED3 на железной УКНЦшке.
Я года два назад запускал. Но то старая версия, тут даже порядок тестов чуть другой вроде

https://pic.maxiol.com/thumbs2/1637440322.1559558028.speed3.png (https://pic.maxiol.com/?v=1637440322.1559558028.speed3.png&dp=2)

Hunta
23.06.2023, 21:01
На Немиге потестить v3.0.3?
Да, по возможности - и на Э85 и на Немиге

- - - Добавлено - - -


тут даже порядок тестов чуть другой вроде
Можно загнать что угодно и в каком угодно порядке :) Просто ещё некоторые вопросы возникали - а как оно, в частности - скорость чтения из памяти слов и байтов - вот на последней картинке в начале оно и есть :)

BlaireCas
23.06.2023, 21:09
classic - взятое из SPEED, но с моей точки зрения там считается неправильно

Вроде как-раз верно подсчитана строчка с R1+R0 classic. Прогнал у себя в цикле буфер заполненный add r0,r1 кучу раз и получил примерно то-же самое.

После прогрева машинки скорость слегка упала и вышло:
По SPEED3 R1+R0 classic = 572 327 оп./сек
Мой тест выдал 14.08 тик на команду add r0,r1 что при условии 8МГц получается 568 181 оп./сек

Очень даже более-менее совпадает.

А вот увеличенное число после -> смущает как-то. Слишком прям много там выходит.

- - - Добавлено - - -


Я года два назад запускал.
Да она какая-то прямо очень БЫСТРАЯ, чудеса.

Hunta
23.06.2023, 21:18
Нуууууу, начинает работать
Да, рано радовадся - на той систему дурит. На дистрибутивной RT-11 5.01 с родным PI вроде норм.

- - - Добавлено - - -


add r0,r1
А ничего, что там в R1 каждый раз разное число и вполне может прилететь и 0. Плюс какая-нибудь оптимизация в ВМ2 - и сложение может просто не выполнятся, а взять из R0 число?
А уж с classic div - когда на ВМ3 деление выполнялось почти так же быстро как умножение

Короче, надо выкидывать classic и показ промежуточного :)

BlaireCas
23.06.2023, 21:22
А ничего, что там в R1 каждый раз разное число и вполне может прилететь и 0. Плюс какая-нибудь оптимизация в ВМ2
Не ну это чудеса уже, ничего такого нету в ВМ2 :) Хоть 0+0 хоть 177777+1 и т.д. Одинаковое время будет. Но я понял мысль, все верно, надо по-идее инициализировать регистры чем-то одинаковым на тест.

Hunta
23.06.2023, 21:36
Не ну это чудеса уже, ничего такого нету в ВМ2
Не факт. Ну и в принципе можно и не гадать - кристалл вскрыт - можно глянуть на оптимизации


надо по-идее инициализировать регистры чем-то одинаковым на тест
Вот я так и сделал

- - - Добавлено - - -


Нуууууу, начинает работать
В общем, буду ещё смотреть и думать. К сожалению, только на эмуляторе..

- - - Добавлено - - -


Курсор перестаёт мигать и машина виснет
Частично воспроизвелось..

BlaireCas
23.06.2023, 21:37
Не факт. Ну и в принципе можно и не гадать - кристалл вскрыт - можно глянуть на оптимизации
Тут есть темка про измерение скорости ВМ2 и я даже там устраивал гадания мол почему tst (R0) работает с той-же скоростью что и tst (R0)+?
Ведь во втором случае надо еще и инкрементировать регистр, а на это должно тратиться время!
Но знающие люди сказали что это нормально, так он и работает, мол так сделано.

Radon17
23.06.2023, 21:41
Да, по возможности - и на Э85 и на Немиге

Есть! Спасибо, паразитные символы пропали. :)

https://pic.maxiol.com/thumbs2/1687545544.1401653652.speed303nemiga.jpg (https://pic.maxiol.com/?v=1687545544.1401653652.speed303nemiga.jpg&dp=2)

- - - Добавлено - - -

Надписи про OCnt field нету :)
На Э85 что found - была

Hunta
25.06.2023, 02:05
Вернуться к SPEEDx получилось только вечером плюс решил ещё немного порядка навести в файлах, так что.. успел немного.

Из успетого:

- Последний вариант SPEEDx нормально работает на 5.01, 5.01B, 5.01C, 5.02, 5.03

- Проблемный диск состоит из файлов, взятых с дистрибутива 5.01, но - PI.SYS - переделанный.

- Если на проблемном диске не запускать DAY.SAV (переименовав её, поскольку запуск зашит в монитор) - последний вариант SPEEDx нормально работает, но - такое впечатление, что в систему через вектор 100 отдаются 60 Гц

- Если на проблемном диске запускать DAY.SAV, то работоспособность SPEED3 зависит от фазы луны и погоды за окном. У меня вчера не работала, а сегодня работает.. Правда, в процесс разборок с файлами я пересобирал SPEEDx - приводил в порядок работу командных файлов, так что...

Из занимательного. Эмулятор Э85 работает на скорости примерно 625-630 тысяч (единичных) операций в секундну - независимо от того, что это за операция :)

- - - Добавлено - - -

Подведение итогов. Поскольку есть задумки загнать и Pro/Э85 в FPGA - буду потихоньку разбираться в PI, в том числе попробую сделать для него (восстановить) русский шрифт и клавиатуру. Но это долговременные планы.

На этом пока со SPEEDx заканчиваю, завтра планирую выложить не только собранные SAV, но и исходники обновить

- - - Добавлено - - -

А вот фигушки... зависло.. Так что, похоже, есть какая-то проблема с этим PI (не оригинальным).
Запустил на оригинальном 5.01 и пошёл спать...

Hunta
25.06.2023, 11:22
Вроде как да - на родном PI работает, на переделанном в какой-то момент виснет, подозреваю - момент зависит от быстройдействия компа (или эмулятора)

Hunta
25.06.2023, 18:05
По ссылке в первом почте всё обновил. На ДВК проверил, на Э85 под 5.01 проверил, щас запущу на Э85 под 5.3

Radon17
25.06.2023, 20:27
Я смогу проверить только в четверг-пятницу. Пока за городом :)

Hunta
25.06.2023, 21:40
Я смогу проверить только в четверг-пятницу. Пока за городом
Да это практически тот же вариант, что уже проверялся. Я там слегка только причесал код и всё. Но проверить, наверное, стоит. У меня тут складывается впечатление, что эмулятор anasana-ы как-то не до конца отрабатывает кнопку - reset the emulator. Потому как SPEEDx себя немного по разному ведёт. Хотя это пока только эмоциональные впечатления.

Hunta
26.06.2023, 21:43
Переделал работу с векторами V4/V10 под RT-11 на использование возможностей RT-11. Теперь, если на V10 вешается какой-то обработчик типа эмуляторов EIS/FIS/FPP - SPEEDx, как и система, считает, что можно что-то ещё потестить :)

Ну и давно хотимое - теперь SPEEDx корректно всё восстанавливает, если дать два раза Ctrl/C, так что если надоело ждать - можно корректно из неё выйти.

Тестирую, что всё работает

Hunta
27.06.2023, 14:31
Вроде .TRPSET и .SCCA работают.
Внутренние перетряски и оптимизации.

В том числе под standalone (без ОС) работу - но это пока не тестирую - займусь как причешу код.

Ну и на этой (под standalone) доработке опять всплыла мысль - добавить в FullODT запуск программ с томов RT-11. А может и загрузку систем - будет полезно, когда загрузчик не прописан или хочется запустить отличную от происанной в загрузчике систему. Тем более - действия не сильно хитрые :) Но это потом.

- - - Добавлено - - -

Ну и охота за периодически всплывающей... хм.. проблемой - когда блок инициализации выполняется медленней, чем полный блок. Вроде пока только на эмуляторе Патрона, но почему так - пока не понял.

- - - Добавлено - - -

Предположительно, причина найдена (вкратце - если проц слишком быстрый).
Теперь пытаюсь доказать себе, что после фикса показываются правильные числа.

Hunta
27.06.2023, 16:57
В целом, вариант рабочий (то есть числа взяты не с потолка) - запуск на PDP-11X это подтверждает. Но так же видно, что скорострельность слегка упала - то есть накладные расходы влияют, хотя и не сильно (примерно 0.006 процента), но.. Как то выбивается из результата SOB - у него падение аж в два раза ни с того ни с сего :) И тут до меня дошло, что добавляя всякое для независимости НеТестового кода от железа - я промахнулся с SOB. То есть вариант ДО был собран с SOB, а вариант ПОСЛЕ - с DEC/BNE :) Так что придётся немного подправить код :)

Hunta
28.06.2023, 10:44
Исправив с утра на свежую головую последнюю ошибку - реализовал достаточно давнюю задумку - всю память кода инициализации освобождать в общее использование перед запуском собственно тестирования. А за счёт наложения рабочих переменных на код инициализации - строго говоря, в .SAV файле места и для них не выделяется :)

Собственно последнее (не выделение места для рабочих переменных в .SAV файле) периодически всплывает на форуме и народ почему-то считает, что это тяжело реализуемо. Ну, если не уметь использовать макросы - то да, тяжеловато. С макросами - вообще никаких заморочек.

В SPEEDx вариант, который я не реализовал в то далёкое время, когда развлекался с RT-11 на Квант-е - некий код (обычно инициализации) то же в области рабочих переменных. Ну и поскольку количество рабочих переменных в SPEEDx очень невелико - код инициализации перекрывает их с большим запасом - я не стал использовать полный подход.

Основную проблему создало то, что некоторые рабочие переменные надо было инициализировать определёнными значениям - и вот тут как раз я насажал ошибок, пока выяснил это :) Решилось размещением рабочих переменных в определённом (по времени инициализации) порядке. Последнюю исправил как раз с утра :)

В принципе, в код инициализации теперь можно загнать и больше функционала - разборку командной строки, "локализацию" на лету сообщений, более простой код работы с векторами 4 и 10 и вывод на экран :) Но пока...

Тестирую наваянное :)

- - - Добавлено - - -

P.S. К сожалению, поскольку рабочих переменных раз два и обчёлся - это не позволяет в случае SPEEDx уменьшить размер .SAV. Но вот если их было больше... или они по своему размеру перекрывали код инициализации - могло бы быть и уменьшение .SAV файла :)

- - - Добавлено - - -

P.P.S. Похоже, разобрался и в колебаниях скорострельности. Проблема из разряда - старый подход (и новый - но без кода инициализации) не учитывает накладные расходы. Если есть код инициализации - то вроде всё ок (небольшие колебания возможны из-за округления), а вот когда кода нет.. Похоже, придётся к таким блокам добавить инициализацию пустышку - NOP.

Hunta
28.06.2023, 19:17
Свободное время прошло под лозунгом - добавим оценку НР во все тестовые блоки, перенесём описание тестовых блоков в отдельный файл, грохнем все повторы (особенно текстовые).

Результат - .SAV уменьшился в размере с пяти блоков до четырёх :) Но теперь в тестовых блоках есть лишний вывод, когда на проце нет каких-то команд в тестовых блоках. Надо подумать, как от них избавиться..

Тесты тесты тесты :)

Hunta
29.06.2023, 12:29
Полезно засыпать :) У меня обычно в голове крутится чего-нибудь. Чаще всего - по хобби, достаточно часто - по работе :) Вчера крутилось про SPEEDx.

Результаты:

- нашёл что ещё повторяется. Результат - программа ещё уменьшилась в размерах, пусть и, к сожалению, только в словах, а не в блоках :)
- придумал как обойти оценку блока инициализации, если тестовый блок свалится, если на проце нет каких-то команд из него.

Осталось малость - переделать :) И оттестировать :)

Hunta
29.06.2023, 18:25
Сам алгоритм работы с тестовыми блоками и показа результата отрабатывается, как задумывался. Дальше тесты и оптимизация.

Из интересного. Как было описание тестового блока:



ACTION <\BR .+2\>, Paired=YES
NOP

ACTION <\BR .+2\>
NOP
BR .+2

ACTION <<CR><LF>\34567.89022*32109.754321 empty\>, Paired=YES
LDD @#DNUM01, AC0
LDD @#DNUM02, AC1

ACTION <<CR><LF>\34567.89022*32109.754321\>
LDD @#DNUM01, AC0
LDD @#DNUM02, AC1
MULD AC0, AC1


Как теперь:



ACTION <\BR .+2\>
ACBODY
BR .+2

ACTION <\34567.89022*32109.754321\>
LDD @#DNUM01, AC0
LDD @#DNUM02, AC1
ACBODY
MULD AC0, AC1

Можно понять, какие дубли были выкинуты. И для пустого блока инициализации (проблему с которым я обошёл с помошью NOP) при работе автоматом добавляется пустышка NOP

Hunta
30.06.2023, 09:47
Оптимизация и тестирование. Опять при засыпании пришли в голову правильные идеи :)

Hunta
30.06.2023, 16:26
И вот, когда уже натестировался и наоптимизировался.. И уже решил выкладывать... Решил потестить на эмуляторе ДКВ... и... БАБАХ! - свалился SPEEDx :) Ну, с FullODT найти ошибку достаточно просто.. на простых программах :) Поправил :) Опять тестирую :)

Hunta
30.06.2023, 19:05
Из только что обнаруженного.. Похоже, в эмуляторе от anasana - под RT-11 - спешат часы. Проверил три варианта (5.01, 5.03 и 5.07) RT-11 - везде 60 секунд считаюся как прмиерно 110-112. В ПРОС всё норм.

Так что увы, все результаты SPEEDx на нём НЕДОСТОВЕРНЫ..

- - - Добавлено - - -

Прикинул время выполнения каждого блока - 16.6 секунды. Нуу... в пределах нормы. Должно быть 16 секунд, но у меня не нулевая по времени реакция. Так что.. Возможно и достоверны :)

Но вот что творится в RT??

Radon17
30.06.2023, 19:17
А может сделать какую-нибудь простенькую программу для проверки таймера? Скажем, на каждый (или каждый 10-й) такт будет прибавлять единичку.
Чтобы с внешним секундомером сесть и проверить.

Hunta
30.06.2023, 20:45
Чтобы с внешним секундомером сесть и проверить.
Так у меня блок выполняется 16 секунд - я его и проверил. Проблема не с таймером - какая-то проблема в RT..

- - - Добавлено - - -
Radon17, я щас выложу новую версию - будет возможность - проверь на реале. Каждый блок выполняется 16 секунд, по сути - каждая строчка выводится через 16 секунд. А потом глянь RT - я выложу разные версии - загрузочные образы дискет.

- - - Добавлено - - -

Щас соберу, контролный прогон - и выложу

- - - Добавлено - - -
Radon17
Выложил. В каталоге RT - загрузочные образы дискет для разных версий RT и образ с SPEEDx

Radon17
01.07.2023, 00:03
проверь на реале

Э85 и Немига

https://pic.maxiol.com/thumbs2/1688158602.782555487.ms0585speed341.png (https://pic.maxiol.com/?v=1688158602.782555487.ms0585speed341.png&dp=2) https://pic.maxiol.com/thumbs2/1688158620.782555487.nemigaspeed341.jpg (https://pic.maxiol.com/?v=1688158620.782555487.nemigaspeed341.jpg&dp=2)

На Немиге OCnt field по-прежнему не отображается.

На 5.01 всё ещё валится в случайных местах.

https://pic.maxiol.com/thumbs2/1688158998.782555487.230630223155610.png (https://pic.maxiol.com/?v=1688158998.782555487.230630223155610.png&dp=2)

Hunta
01.07.2023, 12:25
Radon17 - не оценивал время выполнения тестового блока на Э85 и Немиге?


На Немиге OCnt field по-прежнему не отображается.
Жжж, я про это успел забыть.. Посмотрю-подумаю :)


На 5.01 всё ещё валится в случайных местах.
Ну, если судить по русским буквам, это диск с допиленным PI.SYS и утилитой DAY. Я отдизассемблю DAY, что бы понять - почему после её запуска появляются русские буквы (без её запуска, ЕМНИП, их ещё не будет), а вот с PI разбираться будет дольше - этот вопрос я откладываю в доооолгий ящик.

Пока ещё много-много погоняю SPEEDx на девственном 5.01

- - - Добавлено - - -

Запустил в цикле на девственной 5.01 и на 5.01 с нашим PI.SYS (пока без day.sav). Периодически буду смотреть, но на девственном уже раза три прошёл запуск SPEED3 без проблем...

- - - Добавлено - - -

Все. С нашим PI.SYS зависла на первом проходе. На R0*R0 classic. Было у меня подозрение, что программа куда-то не туда лезет на чем-нибудь типа @R0, но нет. В общем - разбираться с PI.SYS, но это не быстро.

Так что ещё подумать над не выводом OCnt field, а потом переключусь на что-нибудь другое :)

- - - Добавлено - - -


На Немиге OCnt field по-прежнему не отображается.
Это я балда :) Это не бага - это фича :D Это поле ищется только если SPEEDx решит выводить на терминал через систему. А выводится через систему сейчас исключительно на Pro/Э85! Вот, скажем, с эмулятора Патрона:


.RUN SPEED3

Тест быстродействия V3.4.1 (кэш, если он есть выключен)

NOP empty

Radon17
01.07.2023, 12:32
Radon17 - не оценивал время выполнения тестового блока на Э85 и Немиге?
Специально - нет. На Э85 так, считал вслух до 16, примерно это время команда и исполнялась.
С секундомером надо засечь?

Hunta
01.07.2023, 13:41
С секундомером надо засечь?
Да нет, думаю не стОит - если бы была проблема как в RT - это явно было бы заметно (8 или 32 секунды - сильно отличаются от 16), а словить 60 или 64 Гц - это надо специально прогу писать - а то SPEEDx увлекается выводом на экран - и сколько на этом тратится - кто её знает.
Что можно попробовать - загрузиться с одного из образов RT-11, которые я выложил - выставить время и через минуту (по секундомеру или часам) посмотреть - что покажет RT

Пришла в голову ещё одна идея - как проверить, где зависает SPEEDx на проблемной системе, но... то ли это где-то не там, где я предположил, то ли.. (если таймер перестаёт тикать по какой-то причине) 2 в 32 степени повторов кодовых блоков - это ОЧЕНЬ много для эмулятора :) Щас попробую поуменьшать верхнюю границу счётчика (не) прерываний от таймера :)

- - - Добавлено - - -


Пришла в голову ещё одна идея - как проверить, где зависает SPEEDx на проблемной системе
Нет, не там...

Woxem
04.07.2023, 14:47
Результаты с электроники-60

79131

BR .+2 207 695 OP./SEK
R0(23456.)+R0(12345.) ЕМПТЫ 74 096 OP./SEK
R1(23456.)+R0(12345.) 54 603 OP./SEK -> 207 554 OP./SEK

Hunta
04.07.2023, 15:19
Результаты с электроники-60
Вообще-то лучше использовать новые версии теста..

- - - Добавлено - - -

Надо будет как-нть выбрать время - пособирать стенды и погонять на них SPEEDы, а потом добавить в первое сообщение :)

Woxem
04.07.2023, 20:50
А где новые версии а то я не разобрался похоже думал что 0 3 4 крайние

Hunta
04.07.2023, 21:31
А где новые версии
Как часто здесь встречается - в первом сообщении ссылка на обновляемый каталог. Теперь программа выводит свою версию (a 0 3 и 4 - это традиционно сложившиеся номера вариантов тестирования - короткий, без кэша и с кэшем)

Woxem
05.07.2023, 14:12
ЭЛЕКТРОНИКА-60

Тест быстродействия V3.4.1 (кэш, если он есть выключен)

NOP empty 207 409 оп./сек
NOP 103 691 оп./сек -> 207 355 оп./сек
BR .+2 empty 207 139 оп./сек
BR .+2 103 696 оп./сек -> 207 645 оп./сек
R1(23456.)+R0(12345.) empty 74 537 оп./сек
R1(23456.)+R0(12345.) 54 567 оп./сек -> 203 668 оп./сек
79137