вижу тут много спецов по PDP-11 собралось, поэтому напишу не в тему : не знаю как кому, а мне неинтересен сам тест скорости копирования памяти, т.к. сама скорость памяти вещь не конкретная при одинаковых процессорах PDP-11. Да и применений компьютеров много разных и далеко не всегда это так важно. Тем более еще менее интересна скорость вычисления пи. А вот по-быстрому определить быстродействие процессора и сравнить его с другими - хочется.
При этом часто - нет возможности запустить тест в операционной системе и задействовать прерывания от таймера. Вот и хочется иметь тестик, который можно быстро набить в пульте и засекая секундомером за сколько секунд он выполняется определять быстродействие. Тест для удобства должен иметь минимум команд, выполняться достаточно долго - удобно и более-менее точно - секунд 10...20 на процессорах средней производительности. Что касается конкретной команды которой циклически тестировать, то что бы не задумываться о статистике наиболее часто используемых, да еще и в разных сферах применения - взять самую короткую по времени исполнения и что бы она имелась для всех процессоров - наверное это пересылка регистр - регистр (или сумма - забыл какая из них быстрее выполняется). Чтобы как-то минимизировать влияние скорости работы памяти нужно как-то попробовать свести к минимому обращение к памяти по-возможности. Думаю что это будет 177777 циклов по 177777 циклов (или один из циклов по-короче - надо пробовать практически по комфортному для засекания времени исполнения). Кажется, что задача тривиальна, но если сильно стараться и применить всякие "трюки", то, может будет кому-то интересна. А мне пойдет любой вариант (но хотелось бы - лучший).
Последний раз редактировалось ra3qdp; 25.05.2023 в 08:21.
Там, как я понял, команды подстроены под логику в процессоре первых PDP-11(или наоборот, логика под команды???)...
С командами Cxx/Sxx всё просто. Там тупо флаги в теле команды. А с командами переходов условных, там хитрее... Там есть ещё функции взаимодействия по условиям с флагами. И в той книге была таблица этих недокументированных команд.
Но читал я эту книгу давно, библиотечная, что помню - издательство "Мир", год издания и автора не помню. Название что-то вроде: "Введение в архитектуру миниЭВМ PDP-11"" А вот про команды запомнил![]()
Точнее я там много чего запомнил. Там многие вещи на пальцах объяснялись. И мне многое стало понятнее по прочтении
Я так понимаю, что книга для американских студиосов написана.
- - - Добавлено - - -
У достопочтимого
Hunta, были версии программы по измерению быстродействия, в том числе и для CIS на F11(1811). Чего более ни у кого нет
С ним можно договоритьсяГлавное, чтобы ему это интересно было. Если интересно будет, то он горы свернёт.
Я расписал все условия - https://zx-pk.ru/threads/30199-sravn...=1#post1179145
Вот ОЧЕНЬ сильно сомневаюсь, что хоть на какой-то модели это есть. Могу только предположить, что, ВОЗМОЖНО, в книге рассматривалось МИКРОПРОГРАММИРОВАНИЕ (та же LSI-11 М1/М2 или, скажем, PDP-11/60 это позволяет) и показывалось - КАК это можно сделать. Но что бы это где-то существовало.. Ссылку в студию.
Чего это были - они и сейчас естьБольше того, программа написана так, что можно легко добавлять нужные команды или блоки команд - то есть измерение возможно не только для отдельных команд, но и блоков. Причем - как с учётом кода инициализации, так и без оного
- - - Добавлено - - -
Точнее говоря - программа одна, но есть подварианты, скажем - только BR . и MOV R0,R1 (если мне не изменяет память насчёт второй)
Ну и есть подвариант под J-11 с кэшем - сделано так, что бы уместиться в кэш
Но основной исходник один.
Правда, я его слегка сломал, пытаясь сделать под Э85 и руки никак не доходят починить![]()
Исходник не могу
Дело очень давнее, я тогда студентом ещё был...
В ней я в первый раз прочитал, что на разных моделях в режимах -(R...) и (R...)+ инкремент и декремент на разных моделях обрабатываются в разные моменты выполнения команды, в итоге результат двуадресной команды типа
MOV -(R0),-(R0) на разных моделях мог быть сильно разным ... Хотя DEC и прописала, что и как работать должно, но вот сама же и нарушала свой стандарт
К счастью сее было несмертельно...
Про микропрограммы там не упоминалось
Про изменение микропрограммы процессора, я вычитал уже в книжке про VAX. Там в качестве примера упоминалась микропрограмма вычисления какого-то хитрого полинома. Один операнд указатель на массив памяти, второй операнд на результат. Но ни текста, ни как её замикропрограммировать не объяснялось![]()
Хотя было бы прикольно сравнить скорость исполнения программы с скоростью микропрограммы
Про то, что так можно на некоторых моделях PDP-11 узнал сильно позже![]()
Но по факту с изменением микропрограммы процессора никогда не сталкивался.
В теории вроде понятно, что LSI-11 М1/М2, и процессоры на секционных комплектах(например 1804) читал в однотомнике про микропроцессорные комплекты, потом вышел уже в двух томах, чуть более мутно представляю F11, так там не просто ROM, там ROM+PGA в одном флаконе...
Последний раз редактировалось Alex; 25.05.2023 в 11:23.
В общем, пока КРАЙНЕ сомнительно.
Это известно, учитывается и в PDP-2011 и, естествнно, в PDP-11X. Единственное но - проверяется это тестами и если какой-то тест для какой-то модели особенность поведения не проверяет и/или не учитвает.. PDP-11X может и ошибаться - по таблицам, где описаны отличия моделй процов я не всё проверял.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
За что купил, за то и продаю
По поводу особенностей - DEC сама нарушила принцип ортогональности
то есть регистры ведут себя сильно по разному
С одной стороны MOV (PC)+, (PC)+ здесь всегда всё хорошо, иначе большая часть программ работать не будет
с другой MOV (R0)+,(R0)+ тут возможно западло ... А если ещё MOV -(R0),-(R0) ...
Но к счастью большая часть народа в курсе, и ничего такого не пишетЛибо если пишут, то проверяют отладчиком ...
Подробнее про выигрыш от стековых операций 8080 при копировании
Я приводил фрагменты кода для 8080 и могу расписать пару примеров для него:
Дополнительные действия в прерывании, связанные с методом Медноногова занимают в районе 146 тактов, пусть даже возьмем с запасом 200, это не принципиально. Пусть частота процессора 2.5 МГц.
При кадровых прерываниях с частотой 50 Гц длительность кадра 2.5e6/50=50000 тактов.
200/50000=0.0040 или 0.4% накладные расходы связанные с методом Медноногова. Посмотрим как это сказывается на выигрыше от стековой пересылки. Если берем развернутые циклы, то без стека 24 такта/байт, стеком - 17 тактов/байт.
1. Если пересылки исходно занимают хотя бы половину прерывания (для пересылок графики в современной насыщенной динамичной игре это даже мало), то при 24 тактах на байт 25000/24=1041 байт.
При 17 тактах/байт 1041*17=17697 тактов.
Итого: 25000-17697-200=7103 тактов чистого выигрыша/кадр при использовании метода Медноногова в описанных условиях.
7103/50000=0.1421= округлю в меньшую сторону 14.2%
2. Аналогично можно посчитать менее напряженный вариант, когда пересылки занимают 1/10 прерывания.
Сразу итог: 1264/50000=0.0253= округлю в меньшую сторону 2.5%
Можно дальше уменьшать число пересылаемых байт и в районе 30 байт на прерывание вариант без стека станет выгоднее. Но при таком незначительном количестве пересылок речь уже идет не о скорости, а о занимаем месте (значит никаких развернутых циклов) и об удобстве использования. Т.е. это предмет для обсуждения в другой ветке.[свернуть]
Архимедов было сравнительно мало не из-за качества техники, а из-за темных штучек глобального маркетинга, тесно связанного с политикой. Американцы сделали свои риски намного раньше британцев, уже к 1981 было не менее трех изделий. Одно потом стало POWER, другое после 30 лет выдержки RISC V, а третье даже немного использовалось в тени уже тогда. Однако, глобальный тренд был показывать лидерство IBM, продвигать x86, славить Вакса и тормозить сторонние инновации. Арм лишь ускорил неизбежные перемены. Хотя считаю, что ассемблер Арма был реально самым крутым среди всех процессоров. Когда столкнулся с Архимедом в начале 1991, это было очень сильное впечатление.
- - - Добавлено - - -
Интересно, откуда взялась мнемоника SOB - это же ругательство? Может там менеджмент обидел кого из инженеров? Интересно, что даже такая базовая операция как XOR есть не на всех PDP-11. Вообще писать переносимые коды для всех PDP-11 штука непростая. Не уверен, что даже MOV (PC)+,(PC)+ везде работает одинаково.
- - - Добавлено - - -
Как это не учитывать скорость памяти? Это ключевой параметр. На Raspberry Pi регулировал скорость кэша, это заметно влияло на быстродействие. Конечно, можно делать тесты на регистровые расчеты, но тут разница будет сильно зависить от числа регистров и особенностей расчета и от скорости памяти всё равно будет зависимость.
- - - Добавлено - - -
Благодарю вас за столь детальный анализ, однако, возможно вы лишь скорее подтвердили моё мнение. Писал про выигрыш от нетипичной работы с указателем стека на фоне издержек на реализацию ВСЕЙ игровой логики. Возможно выигрыш будет и чуть больше, чем 5%, но очень сомнительно, что достигнет 10%. Это для микрош совсем неплохо: когда спрайты двигаются недостаточно плавно, то это раздражает. И даже 5-10% это приятное улучшение. Но в итоге операции копирования занимают гораздо больше места, отнимая память у общей игровой логики, и тем самым превращая игру скорее в демку. О чем и писал с самого начала.
Последний раз редактировалось litwr; 26.05.2023 в 19:05.
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)