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

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 22

Тема: Быстрая и медленная память 128к

  1. #1
    Veteran Аватар для Hacker VBI
    Регистрация
    05.03.2013
    Адрес
    г. Канев, Украина
    Сообщений
    1,546
    Благодарностей: 856
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Lightbulb Быстрая и медленная память 128к

    Можно что-нибудь внятное по этому поводу?
    Не совсем понимаю, что где как будет исполняться и в чём причина.

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

  3. #2
    CraZZZy CodEr Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    1,553
    Благодарностей: 740
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Все любят гипножабу

  4. Этот пользователь поблагодарил SAM style за это полезное сообщение:
    Hacker VBI (29.03.2013)

  5. #3
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Адрес
    Харьков
    Сообщений
    1,288
    Благодарностей: 749
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Причина - тактирование процессора приостанавливается, если доступ к памяти происходит в определенные моменты времени в область памяти которая шарится между процессором и ula. Самое короткое и не запутанное поведение можешь посмотреть в реализации ULA классов оригинальных спектрумов в zxmak2
    ZXMAK2 - Виртуальная Машина ZX Spectrum http://zxmak2.codeplex.com
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  6. Этот пользователь поблагодарил ZXMAK за это полезное сообщение:
    Hacker VBI (29.03.2013)

  7. #4
    Veteran Аватар для Hacker VBI
    Регистрация
    05.03.2013
    Адрес
    г. Канев, Украина
    Сообщений
    1,546
    Благодарностей: 856
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    http://zxmak2.codeplex.com/SourceCon...w/22900#391359
    Я вижу, что это связано с обращениями к памяти до #8000, и всё.
    В общем, расположение кода лучше с #8000.

  8. #5
    Member
    Регистрация
    08.01.2012
    Адрес
    г.Винница, Украина
    Сообщений
    65
    Благодарностей: 6
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

  9. #6
    Veteran Аватар для Hacker VBI
    Регистрация
    05.03.2013
    Адрес
    г. Канев, Украина
    Сообщений
    1,546
    Благодарностей: 856
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо

  10. #7
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Адрес
    Харьков
    Сообщений
    1,288
    Благодарностей: 749
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hacker VBI Посмотреть сообщение
    http://zxmak2.codeplex.com/SourceCon...w/22900#391359
    Я вижу, что это связано с обращениями к памяти до #8000, и всё.
    В общем, расположение кода лучше с #8000.
    нет, не только, вот ULA от Spectrum128:
    Код:
            protected override void WriteMem4000(ushort addr, byte value)
            {
                contendMemory();
                base.WriteMem4000(addr, value);
            }
    
            protected override void WriteMemC000(ushort addr, byte value)
            {
                if ((m_pageC000 & 1) != 0)
                    contendMemory();
                base.WriteMemC000(addr, value);
            }
    
            protected void ReadMem4000(ushort addr, ref byte value)
            {
                contendMemory();
            }
    
            protected void ReadMemC000(ushort addr, ref byte value)
            {
                if ((m_pageC000 & 1) != 0)
                    contendMemory();
            }
    
            #region The same as 48
    
            private void WritePortAll(ushort addr, byte value, ref bool iorqge)
            {
                contendPortEarly(addr);
                contendPortLate(addr);
                if ((addr & 0x0001) == 0)
                {
                    int frameTact = (int)((CPU.Tact - 2) % FrameTactCount);
                    UpdateState(frameTact);
                    PortFE = value;
                }
            }
    
            private void ReadPortAll(ushort addr, ref byte value, ref bool iorqge)
            {
                contendPortEarly(addr);
                contendPortLate(addr);
                int frameTact = (int)((CPU.Tact - 1) % FrameTactCount);
                base.ReadPortFF(frameTact, ref value);
            }
    тут есть и обращение к портам и к области #4000 и к #C000 (причем в зависимости от замапленой страницы)
    ZXMAK2 - Виртуальная Машина ZX Spectrum http://zxmak2.codeplex.com
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

  11. #8
    Veteran Аватар для Hacker VBI
    Регистрация
    05.03.2013
    Адрес
    г. Канев, Украина
    Сообщений
    1,546
    Благодарностей: 856
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Alexander Makeev, вообще некоторая неразбериха, смотрю.
    Первый случай - одновременное обращение к 4000-8000 (видео)
    второй - обращение к 1,3,5,7 страницам

  12. #9
    Master
    Регистрация
    16.09.2005
    Адрес
    Дзержинск (DustCity)
    Сообщений
    919
    Благодарностей: 507
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Есть два важных момента:
    1. Медленная и быстрая память
    2. Отображение экрана/отображение бордюра

    Тормоза на оригинальных машинах происходят когда отображается экран и идет обращение к медленной памяти. вот тока не помню обращение к 7ffd тоже считается обращению к медленной памяти или нет (вроде да).

    Обращение к медленной памяти - выполнение кода в медленной памяти, команды чтения/записи в область медленной памяти (также и все остальные где используется обращение к памяти - RR(HL), PUSH(если стек в медленной памяти) и т.п.)

    у zx128, zx+2 медленными являются страницы: 1,3,5,7 (быстрые 0,2,4,6)
    у zx+2A, zx+3 медленными являются страницы: 4,6,5,7 (быстрые 0,1,2,3)

    во всех zx с одним окном проецирования страниц память выглядит так:
    #0000-#3FFF страница 0 (перекрытое ПЗУ)
    #4000-#7FFF страница 5
    #8000-#BFFF страница 2
    #C000-#FFFF страница 0

    соответственно:
    #4000-#7FFF - всегда медленная память
    #8000-#BFFF - всегда быстрая память
    #C000-#FFFF - в зависимости от того какая страница туда впечатана

    Про задержки - они разные в зависимости от текущего такта на который попало обращение к медленной памяти и модели:
    http://www.worldofspectrum.org/faq/r...kreference.htm
    Pentagon1024sl2.2/TSFM/Z-Controller/GS128Kb/HDD/CDROM/Palcoder

  13. Эти 2 пользователя(ей) поблагодарили TmK за это полезное сообщение:
    drbars (25.04.2013), Hacker VBI (03.04.2013)

  14. #10
    Veteran Аватар для ZXMAK
    Регистрация
    30.01.2006
    Адрес
    Харьков
    Сообщений
    1,288
    Благодарностей: 749
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Смысл задержек - простой, если в момент обращения к медленной памяти юла читает память, то проц тормозится до момента когда юла закончит свои дела, по сути, пока луч летит по экранной области, т.е юла занимает память и проц вынужден ждать. Прикол еще в том что под обращением проца к памяти понимается не только реальное обращение, но и обращение к портам, а также некоторые промежуточные состояния проца, когда он активирует memrq, но rd и wr не активирует, т.е к памяти реально не обращается
    ZXMAK2 - Виртуальная Машина ZX Spectrum http://zxmak2.codeplex.com
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

Страница 1 из 3 123 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Медленная память
    от Slider в разделе Для начинающих
    Ответов: 5
    Последнее: 28.02.2012, 11:46
  2. Быстрая тригонометрия...
    от ALKO в разделе Программирование
    Ответов: 8
    Последнее: 25.01.2011, 00:29
  3. Мега быстрая загрузка с кассеты???
    от ALEXEY.GORDEEV в разделе Софт
    Ответов: 47
    Последнее: 21.11.2010, 11:06
  4. Ответов: 4
    Последнее: 16.06.2010, 18:37
  5. Contended memory /Медленная память/ на Original Speccy
    от MadCat! в разделе Программирование
    Ответов: 15
    Последнее: 05.03.2005, 11:18

Ваши права

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