Просмотр полной версии : SPEEDx
Разное про мои программы семейства 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 Угонялся под эмулятором - и так и сяк и сбоку бантик - пока вроде всё норм. Но, если мне не изменяет память, прошлый раз на эмуляторе тоже было норм, а на реальной машинке - какой-то облом..
Не работает ничего. Курсор мигающий и всё. Подождал пару минут.
https://pic.maxiol.com/thumbs2/1687374726.1401653652.230621220400300.png (https://pic.maxiol.com/?v=1687374726.1401653652.230621220400300.png&dp=2)
А эмулятор известное дело кривой, на нём например тетрис RTшный не работает, и некоторые другие проги. Если знать как он написан.... чудо, что он вообще работает.
Может в SPEEDx ввести вывод номера версии при старте? Чтобы уж точно не путаться чего на скриншоте.
Ну, такое впечатление, что не прилетают прерывания от таймера... Но ещё бы знать точно.. Ок, попробую добавить типа предварительного тестирования..
Может в SPEEDx ввести вывод номера версии при старте?
Номер версии SPEEDx?
- - - Добавлено - - -
У него, кстати (у эмулятора Э85), основа - simh
Номер версии SPEEDx?
Ага, чтобы не путаться.
У него, кстати (у эмулятора Э85), основа - simh
Но оооочень древний, 97-го года кажется.
Но оооочень древний, 97-го года кажется.
Надо будет посмотреть те исходниках, которые у меня есть, и сравнить с simh
Ну, такое впечатление, что не прилетают прерывания от таймера
Хотя вроде делаю всё как в драйвере PI...
Вывод SHO CONFIG можешь выложить?
- - - Добавлено - - -
Radon17 - ещё такая просьба - запустить SPEED3 и подождать минут 10 (если ещё такого не было). Возможно я ошибся в счётчике прерывания и получилось слишком большое значение (хотя на эмуляторе врод как ок)
Вывод 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
Ок, завтра попробую.
Я же ещё тогда выкладывал. Или нужно буржуйский RESORC подсунуть?
Аха, спасибо. Просто у меня (RT-шный) показывает PRO380, но вроде чего-то такое мы обсуждали.. Или нет? Надо будет в исходники resorc заглянуть
Radon17 уже засыпал и пришла в голову одна мысль - почему может не работать на реале и работать в эмуляторе Э85. С утра немного поменял логику работы и выложил обновленные SAV и DSK. В эмуляторах PDP-11 и Э85 по прежнему работает :)
Radon17 уже засыпал и пришла в голову одна мысль - почему может не работать на реале и работать в эмуляторе Э85. С утра немного поменял логику работы и выложил обновленные SAV и DSK. В эмуляторах PDP-11 и Э85 по прежнему работает :)
А возможно запустить эту программу без терминала на 177560 просто с записью результата в ОЗУ ?
А возможно запустить эту программу без терминала на 177560 просто с записью результата в ОЗУ ?
Если поменять исходник - возможно всё. В текущем исходнике - нет. Точнее говоря - программа сделана так, что она будет выводить свой результат - в одном варианте - на консоль (или точнее - в некое устройство, работающее аки консоль для вывода) по указанным адресам, в другом - через .TTYOUT и .PRINT
пришла в голову одна мысль - почему может не работать
Не работает
https://pic.maxiol.com/thumbs2/1687461934.1401653652.230622221205173.png (https://pic.maxiol.com/?v=1687461934.1401653652.230622221205173.png&dp=2)
подождать минут 10
Не помогает.
Не работает
Блин.. Думаю дальше...
- - - Добавлено - - -
Radon17 по крайне мере смог воспроизвести - я нашёл дискету с этой операционкой - в ней у меня тоже не тикает :)
А на какой тикает? Если можете, скиньте загрузочный образ RX50 со SPEEDами.
А на какой тикает? Если можете, скиньте загрузочный образ RX50 со SPEEDами.
Какая-то RT-11 5.7, скорее всего генерённая мной.
Выложил - там же каталог Sys
- - - Добавлено - - -
Если вдруг не будет видно такого каталога (кэширование IIS, блин) - в адресной строке добавить руками /Sys
- - - Добавлено - - -
Ещё из уже выясненного. Монитор FB сам по себе не виноват - в 5.7 под FB всё норм
- - - Добавлено - - -
В общем, проблема воспроизведена - теперь можно уточнять причина.
Под XM тоже работает
А на Немиге не пробовал ещё?
- - - Добавлено - - -
Не, ошибся - (скорее всего - дистрибутивный) 5.3 FB
Hunta урааа, заработало! Скоро будет скриншот.
заработало!
Я бы СИЛЬНО удивился, если бы не :)
У меня впечатление, что вектор другой.. Пытаюсь методом тыка
Вот оно, наконец-то!
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 прогнать? Только завтра.
Тест шёл около 11 минут.
Каждый блок работает 16 секунд :) А в SPEED3 их МНОГО :)
Наверное надо ещё SPEED0 прогнать?
Особого смысла нет - это просто УКОРОЧЕННЫЙ SPEED3 - всего две инструкции смотрятся
- - - Добавлено - - -
Судя по надписи, 5.01 тоже не генерённый.
Надо будет разные версии RT попробовать - вдруг до 5.03 такое же поведение..
- - - Добавлено - - -
Ну, для меня главное, что это НЕ МОЙ косяк :)
- - - Добавлено - - -
Всё, спать пошёл :)
Не Э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?
Возможно тоже от дистрибутива ОС зависит, но тут ситуация интереснее - обычный 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, наверное, такое вариант будет более работоспособен для всякой экзотики типа Немига :)
Это (в мониторе RT-11) ячейка, где хранится счётчик количества символов (в очереди) для вывода в консоль - перед запуском тестирования программа ждёт, пока там будет 0 - буфер пуст, всё выведено. К сожаление, его адрес не фиксирован, пришлось эвристически искать. Вроде как в 5.x работает, более ранние не проверял. На Немиге не нашлось.
Ещё есть способ - ждут сброса бита разрешения прерывания в регистре статуса терминала. Адрес регистра статуса узнаётся через RMON. Но это с нормальными регистрами терминала. Как это будет на Э-85 и Немиге, судить не берусь.
Ещё есть способ - ждут сброса бита разрешения прерывания в регистре статуса терминала
Это был первый вариант (даже закомменченный код ещё остался)
Как это будет на Э-85
Вот поэтому и полез - через задний кирилицО :)
- - - Добавлено - - -
В целом же на выходные - поиграться с (эмулятором) НЕМИГА и сделать в программе выбор - софт (пока для Э85) или хард вывод на терминал. А, да - с учётом не совсем красивого вывода на экран - переделаю все сообщения на англо-латиницу
А можно вместе с выбором способа вывода ещё выбор языка сообщений? Или это ненужное загромождение кода вторым алфавитом? А как планируется выбор? Ключиком?
К примеру:
.R SPEED3 /HARD /RUS
А можно вместе с выбором способа вывода ещё выбор языка сообщений? Или это ненужное загромождение кода вторым алфавитом?
Честно говоря, лень добавлять работу с командной строкой. Но я подумаю
- - - Добавлено - - -
То есть пока будет жёсткий вариант (условная трансляция), а там видно будет :)
Поскольку это не сильно сложно (но ошибкофф насажть могу) - переделал на вариант автоматического выбора soft-hard вывода на терминал. Теперь soft будет только на Pro/Э85, в остальных случая hard.
На эмуляторе PDP-11 Патрона и на эмуляторе Э85 Anasana (под "правильной" RT-11) вроде работает.
Radon17 - до эмулятора НЕМИГА ещё не добрался, поэтому просьба проверить :)
Лежит там же, перед скачиванием проверить, что дата сегндняшняя, а время (по Москве) в районе 15:15 (а то кэш IIS :) )
- - - Добавлено - - -
Ошибка в SPEEDx в отношении Pro/Э85. У них часы тикают с частотой 64 Гц в секунду.
@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 Гц в секунду.
Получается скриншот на прошлой странице недействителен?
Гораздо сильнее смущает вывод паразитных символов после цифр (на скриншоте видно).
Я на это налетал, но на физических компах. Возможно, действительно что-то где то не проверяет готовность - буду смотреть
А что за 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..
Полезу проверю исходник..
Надо смотреть на схему - чего там и как, потому как вроде использовалась 512ВИ1, а она вроде выдаёт 50 герц, нет?
Она выдаёт 64 Гц. В Союз-НЕОН так же из 64 Гц делается усреднённая частота 50 Гц. Т.е. большинство тиков идут через 1/64 сек и некоторые проскакивают через 1/32 сек.
Я на это налетал, но на физических компах.
Так я и тестил на физической Немиге :)
Она выдаёт 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
Еще не очень ясно что такое стрелочка ->
classic - взятое из SPEED, но с моей точки зрения там считается неправильно.
Мой вариант исходит из того, что для правильного подсчёта нужно на вход команды или блока команд нужно подавать одни и те же аргументы.
Поэтому есть блок инициализаии и команда или блок команд. empty - время выполнения только блока инициализации, следующая за ней строчка - это время выполнения блока инициализаии и команды или блока команд. А за стрелкой - чистое время выполнения команды или блока команд (без блока инициализации).
@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)
На Немиге потестить 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 оп./сек
Очень даже более-менее совпадает.
А вот увеличенное число после -> смущает как-то. Слишком прям много там выходит.
- - - Добавлено - - -
Я года два назад запускал.
Да она какая-то прямо очень БЫСТРАЯ, чудеса.
Нуууууу, начинает работать
Да, рано радовадся - на той систему дурит. На дистрибутивной 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 и т.д. Одинаковое время будет. Но я понял мысль, все верно, надо по-идее инициализировать регистры чем-то одинаковым на тест.
Не ну это чудеса уже, ничего такого нету в ВМ2
Не факт. Ну и в принципе можно и не гадать - кристалл вскрыт - можно глянуть на оптимизации
надо по-идее инициализировать регистры чем-то одинаковым на тест
Вот я так и сделал
- - - Добавлено - - -
Нуууууу, начинает работать
В общем, буду ещё смотреть и думать. К сожалению, только на эмуляторе..
- - - Добавлено - - -
Курсор перестаёт мигать и машина виснет
Частично воспроизвелось..
BlaireCas
23.06.2023, 21:37
Не факт. Ну и в принципе можно и не гадать - кристалл вскрыт - можно глянуть на оптимизации
Тут есть темка про измерение скорости ВМ2 и я даже там устраивал гадания мол почему tst (R0) работает с той-же скоростью что и tst (R0)+?
Ведь во втором случае надо еще и инкрементировать регистр, а на это должно тратиться время!
Но знающие люди сказали что это нормально, так он и работает, мол так сделано.
Да, по возможности - и на Э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 - была
Вернуться к 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 и пошёл спать...
Вроде как да - на родном PI работает, на переделанном в какой-то момент виснет, подозреваю - момент зависит от быстройдействия компа (или эмулятора)
По ссылке в первом почте всё обновил. На ДВК проверил, на Э85 под 5.01 проверил, щас запущу на Э85 под 5.3
Я смогу проверить только в четверг-пятницу. Пока за городом :)
Я смогу проверить только в четверг-пятницу. Пока за городом
Да это практически тот же вариант, что уже проверялся. Я там слегка только причесал код и всё. Но проверить, наверное, стоит. У меня тут складывается впечатление, что эмулятор anasana-ы как-то не до конца отрабатывает кнопку - reset the emulator. Потому как SPEEDx себя немного по разному ведёт. Хотя это пока только эмоциональные впечатления.
Переделал работу с векторами V4/V10 под RT-11 на использование возможностей RT-11. Теперь, если на V10 вешается какой-то обработчик типа эмуляторов EIS/FIS/FPP - SPEEDx, как и система, считает, что можно что-то ещё потестить :)
Ну и давно хотимое - теперь SPEEDx корректно всё восстанавливает, если дать два раза Ctrl/C, так что если надоело ждать - можно корректно из неё выйти.
Тестирую, что всё работает
Вроде .TRPSET и .SCCA работают.
Внутренние перетряски и оптимизации.
В том числе под standalone (без ОС) работу - но это пока не тестирую - займусь как причешу код.
Ну и на этой (под standalone) доработке опять всплыла мысль - добавить в FullODT запуск программ с томов RT-11. А может и загрузку систем - будет полезно, когда загрузчик не прописан или хочется запустить отличную от происанной в загрузчике систему. Тем более - действия не сильно хитрые :) Но это потом.
- - - Добавлено - - -
Ну и охота за периодически всплывающей... хм.. проблемой - когда блок инициализации выполняется медленней, чем полный блок. Вроде пока только на эмуляторе Патрона, но почему так - пока не понял.
- - - Добавлено - - -
Предположительно, причина найдена (вкратце - если проц слишком быстрый).
Теперь пытаюсь доказать себе, что после фикса показываются правильные числа.
В целом, вариант рабочий (то есть числа взяты не с потолка) - запуск на PDP-11X это подтверждает. Но так же видно, что скорострельность слегка упала - то есть накладные расходы влияют, хотя и не сильно (примерно 0.006 процента), но.. Как то выбивается из результата SOB - у него падение аж в два раза ни с того ни с сего :) И тут до меня дошло, что добавляя всякое для независимости НеТестового кода от железа - я промахнулся с SOB. То есть вариант ДО был собран с SOB, а вариант ПОСЛЕ - с DEC/BNE :) Так что придётся немного подправить код :)
Исправив с утра на свежую головую последнюю ошибку - реализовал достаточно давнюю задумку - всю память кода инициализации освобождать в общее использование перед запуском собственно тестирования. А за счёт наложения рабочих переменных на код инициализации - строго говоря, в .SAV файле места и для них не выделяется :)
Собственно последнее (не выделение места для рабочих переменных в .SAV файле) периодически всплывает на форуме и народ почему-то считает, что это тяжело реализуемо. Ну, если не уметь использовать макросы - то да, тяжеловато. С макросами - вообще никаких заморочек.
В SPEEDx вариант, который я не реализовал в то далёкое время, когда развлекался с RT-11 на Квант-е - некий код (обычно инициализации) то же в области рабочих переменных. Ну и поскольку количество рабочих переменных в SPEEDx очень невелико - код инициализации перекрывает их с большим запасом - я не стал использовать полный подход.
Основную проблему создало то, что некоторые рабочие переменные надо было инициализировать определёнными значениям - и вот тут как раз я насажал ошибок, пока выяснил это :) Решилось размещением рабочих переменных в определённом (по времени инициализации) порядке. Последнюю исправил как раз с утра :)
В принципе, в код инициализации теперь можно загнать и больше функционала - разборку командной строки, "локализацию" на лету сообщений, более простой код работы с векторами 4 и 10 и вывод на экран :) Но пока...
Тестирую наваянное :)
- - - Добавлено - - -
P.S. К сожалению, поскольку рабочих переменных раз два и обчёлся - это не позволяет в случае SPEEDx уменьшить размер .SAV. Но вот если их было больше... или они по своему размеру перекрывали код инициализации - могло бы быть и уменьшение .SAV файла :)
- - - Добавлено - - -
P.P.S. Похоже, разобрался и в колебаниях скорострельности. Проблема из разряда - старый подход (и новый - но без кода инициализации) не учитывает накладные расходы. Если есть код инициализации - то вроде всё ок (небольшие колебания возможны из-за округления), а вот когда кода нет.. Похоже, придётся к таким блокам добавить инициализацию пустышку - NOP.
Свободное время прошло под лозунгом - добавим оценку НР во все тестовые блоки, перенесём описание тестовых блоков в отдельный файл, грохнем все повторы (особенно текстовые).
Результат - .SAV уменьшился в размере с пяти блоков до четырёх :) Но теперь в тестовых блоках есть лишний вывод, когда на проце нет каких-то команд в тестовых блоках. Надо подумать, как от них избавиться..
Тесты тесты тесты :)
Полезно засыпать :) У меня обычно в голове крутится чего-нибудь. Чаще всего - по хобби, достаточно часто - по работе :) Вчера крутилось про SPEEDx.
Результаты:
- нашёл что ещё повторяется. Результат - программа ещё уменьшилась в размерах, пусть и, к сожалению, только в словах, а не в блоках :)
- придумал как обойти оценку блока инициализации, если тестовый блок свалится, если на проце нет каких-то команд из него.
Осталось малость - переделать :) И оттестировать :)
Сам алгоритм работы с тестовыми блоками и показа результата отрабатывается, как задумывался. Дальше тесты и оптимизация.
Из интересного. Как было описание тестового блока:
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
Оптимизация и тестирование. Опять при засыпании пришли в голову правильные идеи :)
И вот, когда уже натестировался и наоптимизировался.. И уже решил выкладывать... Решил потестить на эмуляторе ДКВ... и... БАБАХ! - свалился SPEEDx :) Ну, с FullODT найти ошибку достаточно просто.. на простых программах :) Поправил :) Опять тестирую :)
Из только что обнаруженного.. Похоже, в эмуляторе от anasana - под RT-11 - спешат часы. Проверил три варианта (5.01, 5.03 и 5.07) RT-11 - везде 60 секунд считаюся как прмиерно 110-112. В ПРОС всё норм.
Так что увы, все результаты SPEEDx на нём НЕДОСТОВЕРНЫ..
- - - Добавлено - - -
Прикинул время выполнения каждого блока - 16.6 секунды. Нуу... в пределах нормы. Должно быть 16 секунд, но у меня не нулевая по времени реакция. Так что.. Возможно и достоверны :)
Но вот что творится в RT??
А может сделать какую-нибудь простенькую программу для проверки таймера? Скажем, на каждый (или каждый 10-й) такт будет прибавлять единичку.
Чтобы с внешним секундомером сесть и проверить.
Чтобы с внешним секундомером сесть и проверить.
Так у меня блок выполняется 16 секунд - я его и проверил. Проблема не с таймером - какая-то проблема в RT..
- - - Добавлено - - -
Radon17, я щас выложу новую версию - будет возможность - проверь на реале. Каждый блок выполняется 16 секунд, по сути - каждая строчка выводится через 16 секунд. А потом глянь RT - я выложу разные версии - загрузочные образы дискет.
- - - Добавлено - - -
Щас соберу, контролный прогон - и выложу
- - - Добавлено - - -
Radon17
Выложил. В каталоге RT - загрузочные образы дискет для разных версий RT и образ с SPEEDx
проверь на реале
Э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)
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 - не оценивал время выполнения тестового блока на Э85 и Немиге?
Специально - нет. На Э85 так, считал вслух до 16, примерно это время команда и исполнялась.
С секундомером надо засечь?
С секундомером надо засечь?
Да нет, думаю не стОит - если бы была проблема как в RT - это явно было бы заметно (8 или 32 секунды - сильно отличаются от 16), а словить 60 или 64 Гц - это надо специально прогу писать - а то SPEEDx увлекается выводом на экран - и сколько на этом тратится - кто её знает.
Что можно попробовать - загрузиться с одного из образов RT-11, которые я выложил - выставить время и через минуту (по секундомеру или часам) посмотреть - что покажет RT
Пришла в голову ещё одна идея - как проверить, где зависает SPEEDx на проблемной системе, но... то ли это где-то не там, где я предположил, то ли.. (если таймер перестаёт тикать по какой-то причине) 2 в 32 степени повторов кодовых блоков - это ОЧЕНЬ много для эмулятора :) Щас попробую поуменьшать верхнюю границу счётчика (не) прерываний от таймера :)
- - - Добавлено - - -
Пришла в голову ещё одна идея - как проверить, где зависает SPEEDx на проблемной системе
Нет, не там...
Результаты с электроники-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
Результаты с электроники-60
Вообще-то лучше использовать новые версии теста..
- - - Добавлено - - -
Надо будет как-нть выбрать время - пособирать стенды и погонять на них SPEEDы, а потом добавить в первое сообщение :)
А где новые версии а то я не разобрался похоже думал что 0 3 4 крайние
А где новые версии
Как часто здесь встречается - в первом сообщении ссылка на обновляемый каталог. Теперь программа выводит свою версию (a 0 3 и 4 - это традиционно сложившиеся номера вариантов тестирования - короткий, без кэша и с кэшем)
ЭЛЕКТРОНИКА-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
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot