На недельке проверю, заинтересовал тестик.
На недельке проверю, заинтересовал тестик.
ХОББИ ПК8000: http://pk8000.narod.ru, http://pk8000.8bit.lt
Mick
Если будет время, может попробуешь прошить в "картридж" и прогнать на реале прилагаемый тестик?
Его смысл - сравнить быстродействие программы из внутреннего ПЗУ и внешнего ПЗУ.
В отличие от предыдущих тестов, бейсик не используется, поэтому для упрощения программки цифры выводятся в 16ричном виде.
Верхняя цифра на реале должна быть 0399 или близко к тому.
Прилагаю конфиг, чтобы можно было и в эмуляторе попробовать, надеюсь на реале будет работать аналогично (только цифры будут другие).
Последний раз редактировалось ivagor; 04.09.2009 в 18:57.
Спасибо. Т.е. быстродействие программы при выполнении ее из внешнего ПЗУ (или SRAM) и из внутреннего одинаково и > чем из ОЗУ.
Mick
Еще 2 тестика накропал. Это еще один подход к проблеме определения быстродействия. Проверяется, сколько успеем исполнить за прерывание сначала DAD, потом INX.
spdtst2 - для ROM
SPTST3 - для RAM
Последний раз редактировалось ivagor; 04.09.2009 в 18:57.
Mick, этот подход оказался плодотворным, одна штука стала ясной. Теперь я уверен, что при выполнении программы из внутреннего ПЗУ и из памяти, подключенной к разъему расширения, на каждое чтение из памяти добавляется один такт задержки. Т.е. dad будет не 10 а 11 тактов, inx не 5 а 6 и т.д. Дополнительное подтверждение
на правом скриншоте написано 2 МГц, но это просто результат умножения на неправильное число тактов (без учета введения задержки), я пересчитал, добавляя на каждое чтение из ПЗУ по 1 такту и получилось 2,5 МГц, как и должно быть. Т.е. реклама все же обманывала, 625000 оп/сек на ПК8000 не получишь, максимум 500000.
Главный итог - теперь понятно, как с точностью до такта определить быстродействие программы, выполняющейся из внутреннего ПЗУ или из памяти, подключенной к разъему расширения (если нет обращений к внутреннему ОЗУ или портам).
А вот результаты теста при выполнении из ОЗУ меня привели в ступор, как нужно считать, чтобы получить такое жуткое торможение при выполнении dad мне не понятно.
Забыл добавить, все вышесказанное справедливо по крайней мере для SCR0, забыл другие режимы проверить.
Последний раз редактировалось ivagor; 31.01.2009 в 16:46.
Mick, сделал вариант предыдущего теста, который проверяет скорость выполнения DAD и INX во всех трех режимах (SCR0-SCR2). Чтобы доверие к результатам было чуть больше прилагаю исходники. Компилировал с использованием tasm 3.2, а т.к. он не поддерживает директив повтора, то оформление у исходника не очень. Чтобы максимально унифицировать тест, работающий из внешнего ПЗУ и из внутреннего ОЗУ даже отказался от сжатия в CAS варианте, поэтому придется немного подождать при загрузке. ПЗУшный тестик при нажатии любой клавиши рестартует, а ОЗУшный выходит в бейсик. ОЗУшный можно перезапустить без повторной загрузки, стартовый адрес 8000h.
Последний раз редактировалось ivagor; 04.09.2009 в 18:57.
Результаты теста при выполнении из внешней памяти предсказуемые и объяснимые. Видно, что режим вывода на экран на торможение внешней памяти (и скорее всего внутреннего ПЗУ тоже) не влияет.
С торможением ОЗУ стало понятнее, но нужно еще подумать. Также надо отметить, что результат sptst3 в отношении dad (04BF) был аномальный, к сожалению, причину такого "взбрыка" я не нашел, в эмуляторе все работает предсказуемо.
Последний раз редактировалось ivagor; 05.02.2009 в 11:37. Причина: Убрал лишнее
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)