PC-01 Lviv

It is currently 29 Mar 2024, 01:28

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 25 posts ]  Go to page 1 2 Next
Author Message
PostPosted: 13 Oct 2012, 15:25 
Offline

Joined: 23 Aug 2012, 12:28
Posts: 123
Поскольку вопрос о разности в скорости выполнения кода в ОЗУ и ПЗУ уже не единожды возникал на форуме, то я создал для него отдельную тему. Постепенно постараюсь собрать здесь и прочие реплики (или ссылки на них).

Между прочим, очень легко проверить наличие торможения при обращении процессора к ОЗУ (на реале).
Записываем содержимое ПЗУ "на ленту" (удобнее, несомненно прямо в WAV через звуковую карту)
Копируем содержимое ПЗУ в ОЗУ и тоже пишем его. Сравниваем в звуковом редакторе длительности и спектры. Для записи из ОЗУ длительность скорее всего будет больше, а пики в спектре левее.

UPD.
Ссылки на реплики по заданной теме:
1) Запуск эмулятора ПК-01 "Львов" на Dingoo A320
2) Неокрепшая молодёжная психика и Луркмоар :-)
3) Недостатки и недоработки ПК-01 "Львов"


Top
   
PostPosted: 13 Oct 2012, 19:19 
Offline

Joined: 29 Mar 2012, 21:35
Posts: 115
Quote:
Записываем содержимое ПЗУ "на ленту" (удобнее, несомненно прямо в WAV через звуковую карту)
Копируем содержимое ПЗУ в ОЗУ и тоже пишем его. Сравниваем в звуковом редакторе длительности и спектры. Для записи из ОЗУ длительность скорее всего будет больше, а пики в спектре левее.
Не думаю, что отличие будет значительным. Отношение количества тактов, затраченных на чтение одного байта из ОЗУ, к общему количеству тактов, затраченных на запись байта на магнитофон, ничтожно мало.


Top
   
PostPosted: 14 Oct 2012, 05:57 
Offline

Joined: 23 Aug 2012, 12:28
Posts: 123
Согласен, что разница скорее всего будет очень маленькой, но не думаю, что она будет неизмеримой при записи 16 Кб. Это слегка похоже на обнаружение экзопланет :). Для повышения точности можно провести каждый "эксперимент" по 2-3 раза.
Но можно предложить и более четкий вариант - сначала воспроизвести звук с использованием процедуры ПЗУ (даже можно из бейсика через SOUND), потом процедурой из ОЗУ, задав D и L и использовав фрагмент аналогичный DE94-DEBE.


Top
   
PostPosted: 14 Oct 2012, 10:00 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Quote:
Но можно предложить и более четкий вариант - сначала воспроизвести звук с использованием процедуры ПЗУ (даже можно из бейсика через SOUND), потом процедурой из ОЗУ, задав D и L и использовав фрагмент аналогичный DE94-DEBE.
Ага, это верно замечено. Звук будет разниться.

Я уже писал, но повторюсь, что разница в скорости присутствовала. Смутно помню, что я копировал процедуры Chameleon DOS в ОЗУ, после чего они переставали работать с диском из-за нехватки шустрости. Нужно было заново подбирать задержки.

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
PostPosted: 14 Oct 2012, 12:36 
Offline

Joined: 29 Mar 2012, 21:35
Posts: 115
Quote:
Но можно предложить и более четкий вариант - сначала воспроизвести звук с использованием процедуры ПЗУ (даже можно из бейсика через SOUND), потом процедурой из ОЗУ, задав D и L и использовав фрагмент аналогичный DE94-DEBE.
Вот тут полностью поддерживаю идею.


Top
   
PostPosted: 14 Oct 2012, 21:46 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Но в целом я склонен думать, что решить эту загадку мы (как и прочие) сможем лишь тогда, когда в коллекцию vinxru попадет ПК-01. Наберемся терпения.

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
PostPosted: 15 Oct 2012, 09:12 
Offline

Joined: 23 Aug 2012, 12:28
Posts: 123
У меня есть надежда на Tim0xу


Top
   
PostPosted: 15 Oct 2012, 14:17 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Quote:
У меня есть надежда на Tim0xу
Теперь я и буду надеяться на Tim0xу. :)

Все-таки интересно, а из-за чего происходило такое торможение? Пока было озвучено одно предположение:
Quote:
2) Разные и некратные частоты CPU и видеоконтроллера - это приводило к тому, что программа, выполняемая из ОЗУ работала на 30% медленнее, выполняемой из ПЗУ.
UPD.
Добавил в первом посте ссылок по теме.

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
PostPosted: 17 Oct 2012, 10:12 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Завеса тайны над торможением пала. Достаточно было внимательно пересмотреть наличные материалы. И перечитать тему "Upgrade ПК-01 "Львов", где упоминается доработка под названием "турбирование". Ее суть проста:
Quote:
Турбирование. Эта доработка проста и не требует никаких дополнительных деталей. Сводится она к уменьшению задержки при работе процессора с ОЗУ. Доработка была опробована с Z80.
А если обратиться к классическому труду "ПК-02 "Львов" своими руками", то там мы найдем несколько любопытных деталей:
Quote:
Эта доработка проста и не требует никаких дополнительных деталей. Сводится она к уменьшению задержки при работе процессора с ОЗУ. Доработка была опробована с Z80.

9 D50 отрезать от всего.
Отрезанную от 9-ой ножки дорожку соединить с 10 ножкой этой же микросхемы.
11 D5 отрезать от всего (кроме проводка, идущего к ней от Z80).
11 D5 соединить с 13 (150 нс.), 14 (100 нс.) или 15 (50 нс.) ножкой D50.

В зависимости от того, с какой ножкой микросхемы D50 Вы соедините 11 D5, скорость выполнения программы будет меняться. На первый взгляд, эта доработка почти незаметна, но потом Вы поймете, как Вам ее недоставало…

После выполнения последней доработки рекомендую «погонять» ПК и убедиться, что он не сбоит. Этому могут способствовать «дубовые» КР565РУ5Д — микросхемы основного ОЗУ.
И там же:
Quote:
Если Вы удовлетворились работой Z80, то Вы можете еще слегка поднять скорость работы Вашего ПК (на 10 – 25 %).
10-25%! Какой же все-таки ПК-01 был ПК-01... :shock:

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
PostPosted: 17 Oct 2012, 11:09 
Offline

Joined: 23 Aug 2012, 12:28
Posts: 123
Материалы известные и доступные, но вопрос в том, как перевести написанное там в конкретные значения времени выполнения команд в тактах (а будет ли это время=const для каждой команды или оно будет зависеть от каких-то факторов?). Кроме того, в любом случае хотелось бы иметь хоть частичное экспериментальное подтверждение.


Top
   
PostPosted: 03 Oct 2014, 08:24 
Offline

Joined: 01 Sep 2014, 08:19
Posts: 22
Диспетчер памяти работает таким образом:

идут циклы доступа к ОЗУ строго последовательно
CPU VIDEO по 400 ns
видео свои циклы не пропускает,
CPU живет своей жизнью и может захотеть ОЗУ в любой момент,
тогда ему приходится ждать своего цикла как повезет до 400 нс + выход из wait state
фактическое торможение программы теоретически предсказать нельзя и можно только точно померять в среднем

теперь про ПЗУ:
замедлялка процессора срабатывает при любом обращении ниже адреса С000

т.о. доступ к ПЗУ всегда идет быстро, но (!) поскольку программы в ПЗУ лазят в ОЗУ, то фактически тоже будут тормоза. Не такие большие, но существенные для задач реального времени типа MFM.
Опять же, предсказать теоретически как будет тормозить - невозможно,
только мерять среднее.

Поскольку 8080 дублирует на старшие адреса, младшие адреса команд IN & OUT имеем артефакт с застреванием младших портов.
может экономили на элементах, а может просто забыли допилить диспетчер для игнорирования доступа к портам.

Тем неменее: у львова самая красивая и правильная схемотехника из всего совкового, что я видел.


Top
   
PostPosted: 03 Oct 2014, 09:40 
Offline
User avatar

Joined: 11 Aug 2008, 17:05
Posts: 1405
Location: Украина
Quote:
Опять же, предсказать теоретически как будет тормозить - невозможно,
только мерять среднее.
Хаотическое притормаживание при обращении к ОЗУ - это сильный ход. Для полноты картины приведу цитату из исходников горячо любимого MESS:
Quote:
When the CPU accesses RAM, wait states are inserted until the RAM transfer is complete.

CPU clock: 18MHz/9 = 2MHz
memory cycle time: 20MHz/8 = 2.5MHz
CPU memory access time: (min) approx. 9/20MHz = 450ns
(max) approx. 25/20MHz = 1250ns
pixel clock: 20MHz/4 = 5MHz

_________________
Carthago delenda est, Carthaginem delendam esse


Top
   
PostPosted: 03 Oct 2014, 11:25 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Извините, я немного не понял. Видео доступается до ОЗУ, замораживая доступ на 400 мс. на адреса ниже С000. Потом, как я понял, открывается окно для проца, правильно? Если правильно, то сколько это окно будет открытым, пока видео снова не залочит?


Top
   
PostPosted: 03 Oct 2014, 17:07 
Offline

Joined: 01 Sep 2014, 08:19
Posts: 22
нет. все немного хуже.
запрос от процессора будет обслужен в следующем окне CPU если он пришел во время окна VIDEO.
т.е. даже в самом лучшем случае он должен быть задержан на минимальное время гонок по логической схеме.
можно мосчитать сколько это наносекунд (один вентиль+один тригер ТМ2)


Top
   
PostPosted: 03 Oct 2014, 17:10 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
Все равно не до конца понял. Я спрашиваю про окно CPU. Какое оно по размеру? Как я понял, окно видео - 400нс. В это время процессору в память лезть никак не выдет. Но когда эти 400нс проходят, открывается "окно CPU" - какое оно по продолжительности пред следующими 400нс блокировки? Хочется прикинуть шансы попадания именно в это окно.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 25 posts ]  Go to page 1 2 Next

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
cron
Powered by phpBB® Forum Software © phpBB Limited