Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Unsorted (http://zx-pk.ru/forumdisplay.php?f=13)
-   -   Pentagon 1024SL 1.4 - сборка и наладка. (http://zx-pk.ru/showthread.php?t=12844)

Northwood 21st November 2011 18:55

У меня есть идея, как в Пентагоне-1024 в режиме Турбо-14 МГц использовать процессором не задействованные циклы доступа к ОЗУ с целью значительного повышения быстродействия. Теоретически достаточно будет в мою схему турбирования добавить ещё 1 логический элемент, и это должно снизить коэффициент торможения в 2 раза.

Немного теории:

Ещё до введения каких-либо доработок связанные с турбированием, когда мы имели Пентагон-1024 в чистом виде, ОЗУ работало на тактовой частоте 3.5 МГц и за одну смену адреса видеоконтроллером предоставляло 4 цикла доступа, которые распределялись следующим образом:

1 цикл - Z84
2 цикл - видеоконтроллер, пиксели
3 цикл - Z84
4 цикл - видеоконтроллер, атрибуты.

Далее видеоконтроллер увеличивает значение адреса ОЗУ на единицу и 4 цикла повторяются.

Когда же турбируют процессор по классической схеме без разгона ОЗУ, то процессор хотел бы обращаться к ОЗУ в 2 раза чаще, но не может - свободных циклов доступа к ОЗУ нету, поэтому и применяли WAIT.

Таким образом, во время операций чтения и записи ОЗУ, производительность турбированного процессора оставалась неизменной, и увеличивалась в 2 раза при обращении к ПЗУ, операциях с регистрами и при обращении к портам ввода-вывода. Т.е. производительность процессора скакала от 100% до 200%.

В среднем же производительность получалась где-то 120-140%, т.е. коэффициент турбирования равен примерно 1.2 - 1.4.

В нашем же случае, мы разогнали ОЗУ в 2 раза, и теперь за 1 смену адреса видеоконтроллером, ОЗУ предоставляет не 4, а уже 8 циклов доступа, поэтому при турбировании процессора на 7 МГц WAIT и не используется - процессор хочет обращаться к ОЗУ в 2 раза чаще, и он это получает. Т.к. за одну смену адреса видеоконтроллером ему нужно всего 2 обращения к ОЗУ, то циклы доступа к ОЗУ распределяются следующим образом:

1 цикл - Z84
2 цикл - видеоконтроллер, пиксели
3 цикл - Z84
4 цикл - видеоконтроллер, атрибуты
5 цикл - Z84
6 цикл - не используется
7 цикл - Z84
8 цикл - не используется

Далее видеоконтроллер увеличивает адрес ОЗУ на единицу и 8 циклов доступа повторяются.

Таким образом производительность компьютера получается = 200%, т.е. коэффициент турбирования = 2.

При турбировании процессора на 14 МГц, я пока что использовал классическую схему формирования WAIT-а, которая не предполагает наличие свободных циклов доступа к ОЗУ, поэтому мы и получаем точно такой же коэффициент турбирования 1.2 - 1.4 относительно турбы 7 МГц, и 2.4 - 2.8 относительно режима нормал 3.5 МГц.

Т.е. производительность компьютера получается 240-280%.

Теперь же я хочу попытаться задействовать незадействованные циклы доступа к ОЗУ в режиме Турбо-14 МГц, чтобы получить следующее распределение циклов:

1 цикл - Z84
2 цикл - видеоконтроллер, атрибуты
3 цикл - Z84
4 цикл - видеоконтроллер, пиксели
5 цикл - Z84
6 цикл - Z84
7 цикл - Z84
8 цикл - Z84

Если получится задуманное, то коэффициент турбирования должен вырасти до 1.6 - 1.7 относительно турбы 7 МГц, и до 3.2 - 3.4 относительно режима нормал 3.5 МГц.

Таким образом производительность компьютера в режиме Турбо-14 МГц должен будет вырасти с 240-280% до 320-340%.

Northwood 23rd November 2011 02:12

Только что обнаружил одну свою недоработку турбирования на 14 МГц. Если тактовый сигнал "CLK_14" взять противоположной фазы, т.е. взять с выхода не 4-го элемента ЛН1, а 3-го, то производительность компьютера значительно возрастает, после этого все 3 теста практически уровнялись в показаниях тактов за ИНТ. Финальная часть демки RAGE тоже подтверждает увеличение скорости компьютера - бордюрные полоски ещё сильнее сжались вверху.

Пока я заодно продолжаю работу над попыткой задействовать не задействованные циклы доступа к ОЗУ в режиме Турбо-14 МГц, и когда я закончу с этим, тогда и внесу изменение на схему.

Northwood 24th November 2011 05:17

На предыдущей странице выложил схему турбирования с исправлением, о котором я рассказал в предыдущем сообщении.

По поводу попыток задействовать не используемые циклы доступа к ОЗУ в режиме Турбо-14 МГц:

Детальное изучение таймингов процессора Z80 по ссылке (спасибо ChipManyak) показало, что если тактовая частота процессора в 2 раза выше тактовой частоты ОЗУ, то это в принципе не возможно. Точнее, возможно задействовать только небольшую часть свободных циклов:

1. В режиме выборки кода операции, Z80 выделяет на эту операцию 4 такта, при этом время ожидания готовности ОЗУ (время, когда активна линия MREQ для чтения из ОЗУ кода операции) - всего 1,5 такта. На фоне того, что ОЗУ готово отдать или записать данные 1 раз за 2 полных такта Z80, только лишь каждая 2-я такая операция будет попадать по времени в тот момент, когда ОЗУ готово. Таким образом остальные 50% случае процессор нужно будет тормозить WAIT-ом на 1 такт.

2. В режиме чтения и записи в ОЗУ произвольных данных, Z80 выделяет на это дело 3 такта, при этом линия MREQ активна полные 2 такта, в результате на каждый 3-й цикл чтения или записи в ОЗУ придётся притормаживать процессор WAIT-ом на 1 такт.

Итого, в среднем только лишь (100%-(50+33)/2) = 58.5% свободных циклов ОЗУ возможно использовать. А учитывая, что свободные циклы ОЗУ составляют примерно лишь 20% от общего кол-ва запросов, которые тормозятся WAIT-ом, (за 8 тактов ОЗУ процессору требуется доступ максимум примерно 5,3 раза, из которых лишь 4 раза у процессора есть доступ к ОЗУ, при этом на каждый запрос к ОЗУ процессор тормозится WAIT-ом на 1 такт, а в самых неблагоприятных редких условиях на 2 такта), то попытка их выиграть в конечном итоге даст примерно лишь 10% прироста производительности, зато усложение схемы будет посерьёзней.

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

Скрины в режиме Турбо-14 МГц для сравнения, слева - до исправления, справа - после исправления - просто тактовый сигнал CLK_14 взял с предыдущего инвертора ЛН1.

В демке RAGE видно, что бордюрные полоски больше сжались вверху, что указывает на увеличение скорости работы компьютера.

http://s46.radikal.ru/i112/1111/3d/778e3728dda3t.jpg http://s45.radikal.ru/i110/1111/64/d28127f00463t.jpg

Здесь в %% ничего не изменилось - как было 295% скорости компьютера, так 295% и осталось, зато в тактах за INT показал прирост. За одно увеличилось показываемое тестом кол-во строк экрана :) Хорошо что ещё FullHD не написали :-D

http://s12.radikal.ru/i185/1111/df/14d0fefa332bt.jpg http://s017.radikal.ru/i434/1111/63/5099da830e6ct.jpg

Тест Horror в этот раз перестал распознавать торможение, хотя оно есть, и стал больше показывать производительность:
32% = #20, добавляем недостающий разряд = #120 = 288% было,
69% = #45, добавляем недостающий разряд = #145 = 325% стало.

http://s56.radikal.ru/i154/1111/08/51a0b12a8b1ct.jpg http://s017.radikal.ru/i434/1111/f1/7781f2fd0a6dt.jpg

И тест RamDoctor тоже показал значительное увеличение количество тактов за INT:

http://s03.radikal.ru/i176/1111/65/85de879435det.jpg http://s45.radikal.ru/i108/1111/1b/0fd86f0fa847t.jpg

Prusak 24th November 2011 11:01

1 Attachment(s)
В этой теме вроде бы нигде не было упомянуто о глюке появления яркости на черном фоне. Предлагаю такой вариант - перерезается дорожка от 11DD43 (на верхней части платы) и в разрыв включается одна из стандартных схем отключения яркостного сигнала, которая паяется на свободном монтажном поле. Один из вариантов схемы для отключения яркостного сигнала находится в приложении. Выходной сигнал Y с микросхемы доработки подаётся туда, куда раньше шёл сигнал с 11DD43 (на диоды VD13-VD15). Проверено при подключении монитора МС6106.

AlexFantasy 24th November 2011 19:47

Northwood, А после чего это у тебя Ramdoctor на этом Pentagon`е запускатся стал???

Northwood 24th November 2011 19:51

Quote:

Originally Posted by AlexFantasy (Post 438920)
Northwood, А после чего это у тебя Ramdoctor на этом Pentagon`е запускатся стал???

RamDoctor не дружит с любым Спектрумом, у которого не доступен порт с коротким адресом #FD. Если порт #FD не доступен, он это определяет, показывает на экране и благополучно зависает.

Ты вроде как делал или собирался делать доработку - порт #FD, который становится доступным после блокировки порта #1FFD командой
OUT 8189,32 ? Если делал, то выполни эту команду, чтобы было доступно только 128 Кб ОЗУ, и RamDoctor начинает нормально работать.

Ещё RamDoctor не дружит с не правильным подключением AY, толи с засоренной шиной в IM2 в TR-DOS-е. Пока я не сделал доработки - на ножку BC2 AY приходил сигнал M1, и сигнал M1 не использовался в схеме дешифратора портов, и шина данных в IM2 в TR-DOSе была засорена, т.е. до введения этих доработок, RamDoctor сразу после тестирования Турбо-DOS, когда начинал тестировать длительность INT-а, весь экран заполнял разными цифрами и буквами, в конце концов мог вообще вывалиться. Потом я сделал сразу 2 доработки - AY подключил правильно и устранил засорение шины в IM2 TR-DOS, всё стало на свои места. После какой из этих двух доработок RamDoctor перестал вываливаться и стал корректно отображать, сколько мс длится INT, не знаю, не проверял.

AlexFantasy 25th November 2011 00:11

Ясьненько!

AlexFantasy 26th November 2011 13:56

Northwood, вопрос по турбированию уже закрыт или нет? Просто хотелось-бы для турбины платку протравить, да в падлу потом все переделывать!

Northwood 26th November 2011 14:25

Quote:

Originally Posted by AlexFantasy (Post 439597)
Northwood, вопрос по турбированию уже закрыт или нет? Просто хотелось-бы турбины платку протравить, да в падлу потом все переделывать!

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

По схеме закрыт, но с одной оговоркой - делай сразу по второму варианту схемы тактового генератора, т.к. именно второй вариант проверен в работе у меня. А с 1531ЛП5, её и достать будет трудней, чем 1531ЛА3 и 1531ЛЛ1, и за не имением её у меня, проверить не как.

И по схеме начал смотреть, как будет работать вариант с ЛП5 - полярность переключения триггера DD7 (ТМ8) будет противоположной, чем во втором варианте, я этого сразу не увидел, а проверить было нечем. А значит компьютер по первому варианту конечно заработает, и в режимах Нормал и Турбо-7 различий не будет, а в Турбо-14 будет значительное снижение производительности, как до доработки. Поэтому в первом варианте с ЛП5 нужно один из входов ЛП5, который идёт на ТМ8 на выв. 3 и 4 соединить не на выв. 3 и 4, а на 2, тогда полярность переключения триггера будет такой же, как и в проверенном варианте с ЛА3 и ЛЛ1.

P.s. соответствующее изменение, касающееся 1 варианта тактового генератора, внёс на схему на предыдущей странице.
Вот теперь точно всё, вопрос турбирования закрыт полносью и окончательно.

AlexFantasy 26th November 2011 16:50

Northwood, Как раз-таки совпало, что делать с применением элемента ЛП5 делать (из-за задействования всего одного элемента), таки и не планировал! И всё-таки я лучше попридержусь как ты сказал - "кучи проводов"(кстати совсем не кучи), чем кучи "тра...ающихся" тараканов!!! А это в первую очередь неудобно при ремонте компутера!


All times are GMT +4. The time now is 18:34.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.