Важная информация

User Tag List

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 40

Тема: Contended memory и прочие тормоза спектрумов

  1. #11
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Адрес
    Харьков
    Сообщений
    1,406
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    20
    Поблагодарили
    14 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    А схемы посмотреть? )
    так это из схемы и видно, но как в тояности оно работает по схеме не легко разобрать, мудрено триггеры накручены
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  2. #12
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,560
    Спасибо Благодарностей отдано 
    1,223
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от ZXMAK Посмотреть сообщение
    так это из схемы и видно, но как в тояности оно работает по схеме не легко разобрать, мудрено триггеры накручены
    Надо попросить помощи зала, схемотехников тут немало.

  3. #13
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    Советский гений создал Пентагон
    Не только пентагон. Есть еще "Орель БК-08", там тоже нет никаких задержек при обращении к ОЗУ.
    Цитата Сообщение от ZXMAK Посмотреть сообщение
    на словах это конечно проще выглядит, правда насколько помню, кроме ожидания шины, у пентагона еще и порядок выборки attr/pixel меняется на pixel/attr. А вот точно проэмулировать такое поведение непростая задачка, для этого нужно четко разобрать как этот процесс на риале происходит, а детального описания и исследований этого вопроса нет
    По схеме "Орели" я могу ответить на любые вопросы (эта схема несколько лет висела у меня на стене в комнате вместо портрета любимой девушки).

    В "Орели" порядк выборки attr/pixel или pixel/attr не меняется. Просто в начале каждого такта 3.5МГц анализируется сигнал запроса памяти процессором (сигнал /CSM, который вырабатывается из /MREQ и адресных линий A14, A15). Если он активен - то процессору предоставляется шина памяти на 1 такт. Считанное из памяти за этот такт значение защелкивается на регистре ИР22 и доступно на шине данных Z80 в течение всего последующего времени, пока активен /MREQ. Что же касается записи, то она происходит в указанный такт, когда процессору предоставлен доступ к ОЗУ, а в последующем такте (или тактах) активности /MREQ запись в ОЗУ не производится. Таким образом, в течение 2х тактов Z80 видеоконтроллер сможет обратиться к ОЗУ как минимум 1 раз, и этого как раз достаточно для нормального отображения экрана без задержек процессора.

    Думаю, что подобным образом сделано и в Пентагоне. Менять порядок считывания pixel/attr сложно схемотехнически, да и не нужно, если требуется только гарантировать одно обращение видеоконтроллера к ОЗУ за период в 2 такта 3.5МГц.

    С точки зрения эмуляции мультиколора - да, тут есть некоторая сложность, т.к. если Z80 не обращается к ОЗУ - то пиксели и атрибуты считываются оттуда каждый такт (т.е. избыточно), а если обращается - то возможны варианты +-такт. Если содержимое той области памяти, к которой обращается видеоконтроллер, изменяется так, что эта разница в +-такт становится существенной - то да, мультиколор начинает вести себя сложным образом.

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

  4. #14
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Адрес
    Харьков
    Сообщений
    1,406
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    20
    Поблагодарили
    14 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение

    Думаю, что подобным образом сделано и в Пентагоне. Менять порядок считывания pixel/attr сложно схемотехнически, да и не нужно, если требуется только гарантировать одно обращение видеоконтроллера к ОЗУ за период в 2 такта 3.5МГц.

    С точки зрения эмуляции мультиколора - да, тут есть некоторая сложность, т.к. если Z80 не обращается к ОЗУ - то пиксели и атрибуты считываются оттуда каждый такт (т.е. избыточно), а если обращается - то возможны варианты +-такт. Если содержимое той области памяти, к которой обращается видеоконтроллер, изменяется так, что эта разница в +-такт становится существенной - то да, мультиколор начинает вести себя сложным образом.
    схемы под рукой нет, но насколько помню, в пентагоне шина данных процессора не лочится на время обращения видео генератора. Помню что порядок выборки attr/pixel управляется частью схемы на двух триггерах. Если происходит конфликт по памяти, то происходит смена очередности, т.е. если не удалось прочитать pixel, то он будет прочитан после attr и наоборот. Было бы интересно узнать чьи-то исследования этого вопроса, чтобы знать как в точности это происходит. Т.к. по схеме много ньюансов зависит от того, по каким фронтам сигнала меняется состояние элементов схемы.
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  5. #15
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Есть еще "Орель БК-08"
    Она же 48я? Меня интересует конечно всё, но волнуют именно 128+BDI+AY. Всех моделей конечно не охватить, но как дела хотя бы у тех, что на наших БМК?

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    если Z80 не обращается к ОЗУ - то пиксели и атрибуты считываются оттуда каждый такт
    O_o Разве? Я думал, что считываются два байта, а потом в регистре точки сдвигаются. Как заканчиваются - всасывается следующий+цвет - один раз в 4 такта.
    Последний раз редактировалось NovaStorm; 19.05.2015 в 09:15.

  6. #16
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    Она же 48я? Меня интересует конечно всё, но волнуют именно 128+BDI+AY.
    Заводская - 64К (не 48), но схем расширения до 128К, 256К и более было полно в ходу. Двое моих знакомых десятками дорабатывали "Орели", а ведь были еще и конкуренты.

    Серийно выпускались контроллеры дисковода и принтера (было две удачные модели от независимых производителей), которые подключались к штатному системному разъему. Я думаю, что большинство днепропетровских владельцев "Орелей" подвергли их расширению и подключению дисковода. Разве только те владельцы, которые до середины 1993г перешли на другие платформы (Amiga, PC) и продали/выкинули свои "Орели", пропустили этап расширения.

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    O_o Разве? Я думал, что считываются два байта, а потом в регистре точки сдвигаются.
    Конкретно в "Орели" применяется двойная буферизация. Для первичного защелкивания пикселей и атрибутов установлено два регистра (ИР27 - DD26, DD27), данные в одном из которых защелкиваются всякий раз, когда видеоконтроллер обращается к памяти. Происходит это, как я уже говорил, каждый такт 3.5МГц (если процессор не обращается к памяти) или, по крайней мере, не реже 1 раза каждые 2 такта, если процессор к памяти обращается.

    Из этих промежуточных регистров пиксели поступают в сдвигающий регистр (ИР9 - DD32), а атрибуты - в мультиплексор с памятью (2 микросхемы КП13 - DD33, DD34), на выходе которых защелкивается либо цвета атрибута, либо цвет бордюра. Таким образом, неважно, сколько раз и когда именно видеоконтроллер считал из памяти данные. В нужный момент, когда данные переносятся из первичных буферов во вторичные, данные гарантированно верны.
    Последний раз редактировалось Barmaley_m; 20.05.2015 в 02:08.

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    не реже 1 раза каждые 2 такта
    Но ведь фетч опкода операции - два такта, в течение которых на ША лежит PC, как тогда получается отсутствие задержек?

  9. #18
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    Но ведь фетч опкода операции - два такта, в течение которых на ША лежит PC, как тогда получается отсутствие задержек?
    Выборка кода операции (цикл M1) - это полтора такта, а не два, хотя при прочих обращениях к памяти (чтение/запись данных) сигнал /MREQ действительно активен два такта. Но, как я сказал выше:
    Цитата Сообщение от Barmaley_m
    Считанное из памяти за этот такт значение защелкивается на регистре ИР22
    Шина данных считывания памяти в "Орель БК-08" отделена от шины данных Z80. Данные от памяти поступают на ШД Z80 через регистр-защелку ИР22. Там они защелкиваются и остаются верными в течение всего времени, пока активен сигнал /MREQ, а сама память в это время уже может быть занята другими делами (т.е. отдавать данные видеоконтроллеру).

    Именно с этим связано то, что в фирменном Спектруме конфликт процессора и видеоконтроллера разрешается с тормозами. Разработчики сэкономили микросхему-регистр, тем самым удалось снизить стоимость компьютера. Советские же инженеры сочли такую экономию неэффективной, и реализовали полностью прозрачный доступ, поставив лишний регистр. Вероятно, стоимость регистров в 1982г и 1990г сильно различалась. И вообще регистры - это микросхемы средней степени интеграции, они появились позже, чем "мелкая логика".

    Ну и да, шина адреса памяти в "Орели", да и вообще во всех ZX, тоже не одна на всех. Есть ША процессора, есть ША видеоконтроллера. На микросхемы памяти подается адрес с одной из них через мультиплексор 4:1. В фирменном ZX этот мультиплексор находится внутри ULA.
    Последний раз редактировалось Barmaley_m; 20.05.2015 в 22:11.

  10. #19
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Адрес
    Харьков
    Сообщений
    1,406
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    20
    Поблагодарили
    14 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Разработчики сэкономили микросхему-регистр, тем самым удалось снизить стоимость компьютера. Советские же инженеры сочли такую экономию неэффективной, и реализовали полностью прозрачный доступ, поставив лишний регистр. Вероятно, стоимость регистров в 1982г и 1990г сильно различалась. И вообще регистры - это микросхемы средней степени интеграции, они появились позже, чем "мелкая логика".
    Спектрум вообщето на ПЛМ был сделан, это у нас даже в 90-е электронику еще на рассыпной комлектухе из мелкой логики в виде счетчиков, триггеров и регистров собирали
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  11. #20
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Разработчики сэкономили микросхему-регистр
    Вот *****еды =) Неужели в ULA места не осталось...

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Atari 130XE/65XE memory upgrade 1MB (4bit memory chips)
    от dkamenski в разделе Atari
    Ответов: 15
    Последнее: 12.01.2016, 16:20
  2. Дикие тормоза...
    от scl^mc в разделе Форум
    Ответов: 16
    Последнее: 02.11.2015, 13:11
  3. Времянки Contended Memory Spectrum 128
    от ZXMAK в разделе Программирование
    Ответов: 28
    Последнее: 28.09.2011, 23:32
  4. Contended memory /Медленная память/ на Original Speccy
    от MadCat! в разделе Программирование
    Ответов: 15
    Последнее: 05.03.2005, 11:18

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •