User Tag List

Страница 9 из 19 ПерваяПервая ... 5678910111213 ... ПоследняяПоследняя
Показано с 81 по 90 из 189

Тема: Сравнение скорости копирования ОЗУ разными камнями и ЭВМ

  1. #81

    Регистрация
    20.06.2014
    Адрес
    г. Орск, Оренбургская обл.
    Сообщений
    813
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    60 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Уравнял по частоте свой АГАТик со спектрумом и MSX (видео здесь). Результаты скорости копирования ОЗУ обновил в #2.
    Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

  2. #82

    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    чисто теоретические прикидки на счет к1816ве39, генератор Z (входы для кварца - CR1 CR2) способен работать на 11mhz, при этом внутренний CLK = Z/3; далее 1 машинный цикл 5 тактов CLK, т.е. 11/(3*5); загрузка в аккумулятор из внешней памяти 2 машинных цикла, значит 11/(3*5*2); ну и для переброски надо еще и выгрузить из аккумулятора в память что тоже 2 цикла, т.е. 11/(3*5*2*2) = 183333 байта/сек...

  3. #83

    Регистрация
    20.06.2014
    Адрес
    г. Орск, Оренбургская обл.
    Сообщений
    813
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    60 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ещё разогнал АГАТик: теперь уже 5 Махов. Результаты скорости копирования ОЗУ обновил в #2.
    Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

  4. #84

    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    769
    Спасибо Благодарностей отдано 
    252
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    42 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Жалко мало данных, даже по Z80 нет. Хотя это несложно посчитать, если взять Amstrad CPC/PCW, то там на LDIR/LDDR нужно 24 такта. При эффективной частоте 3.2 МГц получаем 133.33 Kбайт/сек. У Спека при работе с быстрой памятью на LDIR/LDDR - 21 такт при эффективной частоте 3.5 МГц, итого - 166.67 Kбайт/сек. Если развернуть цикл и использовать LDI/LDR, то будет 16 тактов на байт на обоих системах. Для супербыстрого заполнения можно использовать PUSH - 11 тактов на словo на Спеке - 636.36 Kбайт/сек.
    Цитата Сообщение от LeoN65816 Посмотреть сообщение
    ПЭВМ: АГАТ-9, ЦП: 6502/65802, частота: стандарт 1.021МГц, турбо 3.5 Маха и 5 Махов, операция: копирование блока памяти и заполнение блока памяти константой.
    Вложение 72499
    Немного запутывающая таблица. На 6502 можно копировать байт за примерно 14 тактов, если использовать самомодифицирующийся код. И на 6502 использовать стек для копирования/заполнения ну никак нельзя (хотя на некоторых системах с ММУ используют), адрес стека там фиксированный и его размер 256 байт. Поэтому соответствующиу данные ни о чем. Для 65816 можно копировать самомодифицирующим кодом слово в первом банке за 16 тактов, для произвольных банков 18. И использование стека на 65816, хотя и не так сильно урезано, как на 6502, но урезано - там стек всегда в первом банке.
    Последний раз редактировалось litwr; 19.05.2023 в 12:14.

  5. #85

    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    769
    Спасибо Благодарностей отдано 
    252
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    42 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Посчитал результаты для Корвета (8080, 2.5 МГц). Быстрейшее копирование блока почти наверняка можно сделать кодом
    Код:
         ld hl,FROM
         ld de,TO
         ld bc,COUNT
    loop ld a,(hl)
         ld (de),a
         inc hl
         inc de
         dec c
         jp nz,loop
         dec b
         jp nz,loop
    Получаем 39 тактов на байт, 2.5*10^6/39 ≈ 64.11 KБ/сек. Если цикл развернуть, то будет 24 тактa на байт, ≈ 104.17 KБ/сек. Тайминги брал с https://litwr2.github.io/8080-8085-z...-Z80-8088.html
    Интересно ещё по размеру коды сравнивать, для Z80 код самый короткий - 11 байт, для PDP-11 - 16 байт, для 8080 - 21 байта, для 6502 - от 38 байт.
    Последний раз редактировалось litwr; 19.05.2023 в 19:17.

  6. #86

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    8080
    Код:
    pop d
    mov m,e
    inx h
    mov m,d
    inx h
    17 тактов/байт

    - - - Добавлено - - -

    Если в спековском стиле
    Код:
    lxi sp,откуда
    pop b
    pop d
    pop h
    lxi sp,куда
    push h
    push d
    push b
    то 13.8(3) такта/байт

    - - - Добавлено - - -

    еще вариант
    Код:
    pop h
    shld
    13 тактов/байт

  7. #87

    Регистрация
    13.07.2018
    Адрес
    г. Переславль-Залесский
    Сообщений
    710
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    41 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Что касается PDP-11

    Ну если данные подготовить для копирования, считать...
    Три регистра надо:
    адрес в первый откуда
    адрес во второй куда
    в третий сколько
    далее всего две команды, пересылка MOV с автоинкрементом или автодекрементом (ну как хочется лучше)
    и затем следующий SOB
    Сама пересылка две команды или слова, или 4 байта
    если учесть инициализацию, считая по тупому пересылку память -регистр, тогда 16 байт будет...
    Но если исходные данные разместить по адресу четвёртого регистра, и считывать их инкрементом или декрементом то памяти будет менее, так как команды будут короче Но вырастет объём данных

    Так что... се ля ви...
    Последний раз редактировалось Alex; 19.05.2023 в 19:52.

  8. #88

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Посмотреть сообщение
    пересылка MOV с автоинкрементом или автодекрементом (ну как хочется лучше)
    Если у тебя блоки памяти перекрываются - то как хочется - не получится.

    Цитата Сообщение от Alex Посмотреть сообщение
    если учесть инициализацию, считая по тупому пересылку память -регистр, тогда 16 байт будет...
    Если учесть вышесказанное - больше

    Цитата Сообщение от Alex Посмотреть сообщение
    затем следующий SOB
    На котором можно легко слететь, если конкретный проц его не поддерживает

  9. #89

    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    769
    Спасибо Благодарностей отдано 
    252
    Спасибо Благодарностей получено 
    46
    Поблагодарили
    42 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    8080
    Код:
    pop d
    mov m,e
    inx h
    mov m,d
    inx h
    17 тактов/байт

    - - - Добавлено - - -

    Если в спековском стиле
    Код:
    lxi sp,откуда
    pop b
    pop d
    pop h
    lxi sp,куда
    push h
    push d
    push b
    то 13.8(3) такта/байт

    - - - Добавлено - - -

    еще вариант
    Код:
    pop h
    shld
    13 тактов/байт
    Такими кодами всех пидипишников напугать можно сильно. Только хорошо бы добавить, что нужно отключать прерывания и сохранять/восстанавливать SP, что второй код не загнать в цикл, что третий код потребует гораздо дольшей подготовки, чем само копирование. Ну и вообще странно, когда на копируемый байт нужно от 2 байт копирующего кода. Надо было мне написать "Быстрейшее НОРМАЛЬНОЕ копирование блока почти наверняка можно сделать кодом".
    Для 6502 аналогом 3-о кода будет
    Код:
    LDA
    STA
    8 тактов на байт и прерывания запрещать не надо. Команды копирования долгие и поэтому должны обеспечивать прерывания, что и сделано в Z80, 8086, 65816, ... - это кстати потребовало дополнительных усилий от разработчиков.

  10. #90

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,391
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    38 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    Только хорошо бы добавить, что нужно отключать прерывания
    Не обязательно (метод Медноногова).
    Цитата Сообщение от litwr Посмотреть сообщение
    третий код потребует гораздо дольшей подготовки, чем само копирование.
    Если подготовка один раз, а копирование постоянно, то нет проблем. Такой вариант и я сам использовал и видел в программах.
    Цитата Сообщение от litwr Посмотреть сообщение
    Быстрейшее НОРМАЛЬНОЕ копирование блока
    Поэтому начинать надо с четких условий.

Страница 9 из 19 ПерваяПервая ... 5678910111213 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Сравнение: AY8930/AY8910/YM2149F
    от newart в разделе Звук
    Ответов: 56
    Последнее: 02.07.2022, 10:27
  2. Как сопрягать микросхемы с разными VCC?
    от dhau в разделе Несортированное железо
    Ответов: 22
    Последнее: 08.06.2012, 16:59
  3. Скорости загрузки в ОЗУ
    от ASDT в разделе ZX Концепции
    Ответов: 56
    Последнее: 07.01.2011, 14:22

Ваши права

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