User Tag List

Показано с 1 по 10 из 95

Тема: Эмулятор БК-0010 на ESP8266

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от balu_dark Посмотреть сообщение
    Простите пожалуйста - а как количество тактов процессора необходимое для выполнения одной команды, может зависеть от скорости памяти? Еще раз уточню - мы говорим о КОЛИЧЕСТВЕ циклов, а не о периоде, длительности такта и прочих вещах связанных со временем.
    Когда у команды несколько аргументов, процессор считывает их из памяти. Пока память готовится выдать ответ, такты процессора продолжают тикать и он ждёт прихода аргумента. Медленная память - ждёт больше тактов. Быстрая память - ждёт меньше тактов. Длительность тактов постоянная, а их количество - разное.
    manwe.pdp-11.ru

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

  3. #2

    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,480
    Спасибо Благодарностей отдано 
    310
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    217 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Длительность тактов постоянная, а их количество - разное.
    А откуда дробная часть появилась на SMK?
    "Во времена всеобщей лжи говорить правду - это экстремизм" - афоризм.

  4. #3

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CodeMaster Посмотреть сообщение
    А откуда дробная часть появилась на SMK?
    Очень просто: чтобы вычислить время выполнения команды с точностью до десятых долей такта, я выполняю команду много раз подряд (команда размножена в памяти) и затем делю получившееся время на число команд.
    Так вот, поскольку частота процессора (4 МГц) не совпадает с частотой видеоконтроллера (6 МГц), одна и та же команда может выполниться за разное число тактов: процессор пытается считать из памяти аргумент, а память может быть не готова отвечать. А в другой раз может быть сразу готова.

    Итого, надо рассматривать блок из трёх команд.
    Например, в быстрой памяти MOV (R2),R1 выполняется (попутно считывая аргумент из медленной памяти) за 16 тактов, следующая такая же команда снова за 16 тактов, а вот третья уже за 32, потому что в это время контроллер памяти занял шину и не позволяет считать команду. Вот и получаем (16+16+32)/3 = 21,3 такта в среднем на команду MOV (R2),R1.
    А в медленной памяти эта команда всегда выполняется за 32 такта.

    Для демки «Good Apple» я ещё писал тест блока произвольных команд, так как разные команды в разной последовательности в разное время обращаются к памяти и перестановкой местами некоторых команд можно устранить лишние простои.
    Последний раз редактировалось Manwe; 04.11.2018 в 14:49.
    manwe.pdp-11.ru

  5. #4

    Регистрация
    03.09.2018
    Адрес
    г. Орёл
    Сообщений
    68
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Итого, надо рассматривать блок из трёх команд.
    Например, в быстрой памяти MOV (R2),R1 выполняется (попутно считывая аргумент из медленной памяти) за 16 тактов, следующая такая же команда снова за 16 тактов, а вот третья уже за 32
    Т.е. в тестах с быстрой памятью, результаты которых вы привели, из быстрой памяти выполнялся только код, а данные пересылались в/из медленную (динамическую) память? А не могли бы прогнать тест, который работает только с быстрой памятью? Или, может, где нибудь можно посмотреть растактовку команд ВМ1 без учета задержек памяти?

  6. #5

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от konst_st Посмотреть сообщение
    Т.е. в тестах с быстрой памятью, результаты которых вы привели, из быстрой памяти выполнялся только код, а данные пересылались в/из медленную (динамическую) память?
    Да, я даже написал об этом жёлтым карандашом на скриншоте

    А не могли бы прогнать тест, который работает только с быстрой памятью? Или, может, где нибудь можно посмотреть растактовку команд ВМ1 без учета задержек памяти?
    Правильной таблицы тактов, по-моему, нет нигде.
    Я собираюсь дописать тест, чтобы он прогонял все возможные сочетания быстрой и медленной памяти. У команды может быть до шести аргументов и все они могут лежать в любой памяти, как и сама команда.
    manwe.pdp-11.ru

  7. #6

    Регистрация
    03.09.2018
    Адрес
    г. Орёл
    Сообщений
    68
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Правильной таблицы тактов, по-моему, нет нигде.
    Вот здесь https://zx-pk.ru/threads/14702-rasch...l=1#post560139 Patron приводит формулы для ВМ1:

    [Время выполнения команды] = [Суммарное время всех циклов шины] + [Суммарное время всех штрафов]

    Циклы шины:
    DATI : [ 7*T+tn] - цикл чтения шины
    DATO : [10*T+tn] - цикл записи шины
    DATIO: [13*T+2*tn] - цикл чтения-записи шины (чтение + запись приемника)
    tn - время задержки памяти (для динамической памяти БК с частотой процессора 3 МГц равно 4 тактам)

    Штрафы:
    [Штраф исполнения]: 1*T (для всех команд)
    [Штраф второго операнда]: 1*T (для команд, использующих два операнда, если один из них в памяти)
    [Штраф отмены предвыборки]: 2*T (для команд, выполняющих больше одного цикла шины)
    [Штраф префиксной адресации]: 1*T - для каждого операнда с префиксной адресацией)
    [Штраф невзаимности]: 5*T (для MOV = 4*T) (для команд, у которых первый операнд не обращается к памяти, а второй - обращается)

    Так же надо учесть, что циклы шины могут начинаться только каждые 4 такта (если частота процессора 3 МГц). Т.е. если по этим формулам длительность команд не кратна 4 тактам, то ее необходимо увеличить до кратного 4 тактам значения.

    Я просчитал для всех команд MOV (длительность которых, измеренную на БК-0010, вы привели), и у меня сошлось все такт в такт.
    Могу в эмулятор внести новые тайминги с учетом этих формул, но желательно проверить теорию на других командах тоже.

    PS: Конечно, по правильному надо учитывать в какие моменты (от начала команды) начинаются циклы шины, и каждый цикл уже выравнивать (в большую сторону) до 4 тактов. Но как рассчитать время каждого цикла - это вопрос. Нужно понять где (в каком месте по тактам) вставляются штрафы и где (в каком месте по тактам) в циклах шины формируется запрос на чтение/запись контроллеру памяти (т.е. какой именно такт цикла шины должен быть кратным 4 тактам).

  8. #7

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от konst_st Посмотреть сообщение
    PS: Конечно, по правильному надо учитывать в какие моменты (от начала команды) начинаются циклы шины, и каждый цикл уже выравнивать (в большую сторону) до 4 тактов.
    Да, это нужно учитывать. Оно особенно проявится когда процессор работает на частоте 4 МГц.
    manwe.pdp-11.ru

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

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

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

Похожие темы

  1. Эмулятор БК-0010-01, БК-0011 и БК-0011М
    от Doronetty в разделе Эмуляторы отечественных компьютеров
    Ответов: 245
    Последнее: 20.12.2025, 13:35
  2. Аппаратный эмулятор Радио-86РК на ESP8266
    от heavy в разделе Радио-86РК
    Ответов: 376
    Последнее: 31.05.2024, 21:15
  3. Эмулятор "Специалиста" на ESP8266
    от heavy в разделе Эмуляторы отечественных компьютеров
    Ответов: 82
    Последнее: 11.01.2024, 23:49
  4. Ретро компьютеры на ESP8266
    от Dotoro в разделе Клоны на ПЛИС, МК и БМК
    Ответов: 40
    Последнее: 15.10.2018, 19:29
  5. WebDAV Server на ESP8266 для SD карты
    от petrov1962 в разделе Внешние накопители
    Ответов: 2
    Последнее: 11.04.2018, 17:21

Ваши права

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