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

User Tag List

Страница 18 из 18 ПерваяПервая ... 1415161718
Показано с 171 по 178 из 178

Тема: Вектор-06Ц, 580хх на ПЛИС

  1. #171
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,844
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,822
    Поблагодарили
    1,045 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Оффтопный пример про то, насколько ускоряется выполнение всей задачи при оптимизации одной команды

    Решил сравнить в рамках вектора, что даст быстрое умножение шринклеру (на примере распаковки теста устройств). Для этого добавил в z80 (emu80) команду MULUW HL,BC из R800. Оригинальный распаковщик для z80 - 1 минута 11 секунд. Распаковщик для R800 - 25 секунд. Т.е. ускорение распаковки в 2.84 раза, при том что умножение быстрее более чем на два десятичных порядка (MULUW не стал тормозить до 36 тактов как в R800, сделал 8 тактов).
    [свернуть]

  2. #172
    Veteran
    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,657
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    301
    Поблагодарили
    212 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как-то так получилось:
    https://disk.yandex.ru/i/QVrF9rpCvF-VnA
    96 символов, если не сбился.
    Без использования стека.

    Надо подумать над оптимизацией расчёта экранного адреса курсорной позиции символа.
    Сейчас эти расчёты занимают больше времени, чем сам символ выводится на экран.
    Последний раз редактировалось KTSerg; 08.10.2022 в 14:38.

  3. #173
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,116
    Спасибо Благодарностей отдано 
    795
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    403 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от KTSerg Посмотреть сообщение
    Как-то так получилось:
    https://disk.yandex.ru/i/QVrF9rpCvF-VnA
    96 символов, если не сбился.
    Без использования стека.
    По одной фотке не совсем понятно -- на что именно мы смотрим? Это работает ПЛИС-ный 8080 с какими-то дополнительными инструкциями?
    Больше игр нет

  4. #174
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,844
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,822
    Поблагодарили
    1,045 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хороший результат, стоит посчитать и достижимый максимум. Пусть в символе 8 строк и шрифт хранится внутри ПЛИС, 2 Кб не так уж много. На одну строку 2 чтения и 2 записи VRAM. Плюс на каждый символ одно чтение кода символа. ((2+2)*8+1)*4=132 такта/символ, за прерывание 453 двухцветных символа в режиме высокого разрешения.

  5. #175
    Veteran
    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,657
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    301
    Поблагодарили
    212 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    По одной фотке не совсем понятно -- на что именно мы смотрим? Это работает ПЛИС-ный 8080 с какими-то дополнительными инструкциями?
    Да, инструкции читают, накладывают маску, складывают с данными спрайта, записывают обратно, сдвигают указатели.
    Для упрощения, две инструкции. Одна со смещением указателей вверх, вторая - вниз.

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

    Цитата Сообщение от ivagor Посмотреть сообщение
    Хороший результат, стоит посчитать и достижимый максимум. Пусть в символе 8 строк и шрифт хранится внутри ПЛИС, 2 Кб не так уж много. На одну строку 2 чтения и 2 записи VRAM. Плюс на каждый символ одно чтение кода символа. ((2+2)*8+1)*4=132 такта/символ, за прерывание 453 двухцветных символа в режиме высокого разрешения.
    Намекаешь на эксперимент с разворачиванием всех циклов в линейный код?
    Чтение кода символа в 1 цикл - это жесткач если учитывать, что даже "inr r" - это 8 тактов.
    Единственный выход это типа "add a,r" - держать один регистр для "1".
    Плюс смещение позиции на экране.
    В одно знакоместо может и получится 453, но идентифицировать результат не получится.
    Последний раз редактировалось KTSerg; 08.10.2022 в 17:45.

  6. Этот пользователь поблагодарил KTSerg за это полезное сообщение:

    svofski (08.10.2022)

  7. #176
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,844
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,822
    Поблагодарили
    1,045 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Пардон, я привел расчет только для удобного случая. Для неудобных будет ((4+4)*8+1)*4=260 тактов. "Удобных" 6/8, неудобных - 2/8 (это если 80 символов в строке), поэтому 132*6/8+260*2/8=164 такта/символ в среднем. Уточненный максимум - 365 символов за прерывание.

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

    Цитата Сообщение от KTSerg Посмотреть сообщение
    Намекаешь на эксперимент с разворачиванием всех циклов в линейный код?
    Это теоретический максимум исходя из пропускной способности шины. Способы достижения могут быть разные, например "высокоинтеллектуальный DMA-сопроцессор".

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

    Если в плисине есть еще 16 Кб под копию VRAM, то убираем с внешней шины процессора чтение VRAM и получаем 713 символов/прерывание, это абсолютный максимум, быстрее не получится.

  8. #177
    Veteran
    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,657
    Спасибо Благодарностей отдано 
    218
    Спасибо Благодарностей получено 
    301
    Поблагодарили
    212 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хотелось развёрнутых циклов...
    Распишитесь в получении:
    https://disk.yandex.ru/i/_o63DMADDFux1A
    Что тут... 225 символов получилось.

    Это без модификации текущего ПЛИС.
    Просто в тестовой программе, только вывод символов, без подпрограмм, ветвлений, проверок.
    Минимальная обвязка только смещение координат на экране, увеличение кода символа.

    Да, ещё, не стал в одну команду пикать вывод всего спрайта. Соответственно, выбрал самый затратный, но простой для реализации вариант - одна команда на один байт. Соответственно, только на чтение/запись одного символа тратится не 32 (или 64) цикла, а с командой 48 (или 96) циклов (если в подсчётах не ошибся).
    Последний раз редактировалось KTSerg; 08.10.2022 в 19:25.

  9. Эти 2 пользователя(ей) поблагодарили KTSerg за это полезное сообщение:

    ivagor (08.10.2022), svofski (08.10.2022)

  10. #178
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,844
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,822
    Поблагодарили
    1,045 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот это уже серьезно, почти в 3 раза быстрее возможностей стандартного 06Ц.

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

    Хотя так некорректно сравнивать, для измененного теста нет референсной скорости 06Ц. Скорее всего выигрыш будет заметно меньше.

Страница 18 из 18 ПерваяПервая ... 1415161718

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

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

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

Похожие темы

  1. Ответов: 4
    Последнее: 23.06.2016, 00:02
  2. Продам Вектор 06Ц
    от zzz в разделе Барахолка (архив)
    Ответов: 27
    Последнее: 29.04.2011, 12:20
  3. Вектор-06Ц
    от Robusta в разделе Барахолка (архив)
    Ответов: 11
    Последнее: 17.03.2009, 23:18
  4. Вектор-06Ц: БП от PC
    от Dmitry Dubrovenko в разделе Вектор
    Ответов: 11
    Последнее: 08.03.2009, 21:53
  5. Вектор-06Ц
    от AlexBel в разделе Барахолка (архив)
    Ответов: 4
    Последнее: 20.12.2007, 08:23

Ваши права

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