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

User Tag List

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

Тема: умножение/деление в алгоритмах ZX игр

  1. #1
    Veteran Аватар для bigral
    Регистрация
    12.07.2006
    Адрес
    Kiev/Ukraine
    Сообщений
    1,827
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию умножение/деление в алгоритмах ZX игр

    В советское время было выпущенно ряд микросхем умножителей, например 1802вр2 (по идее может умножить 2 числа за 500нс, это менее 2х тактов z80 на 3.5mhz). Предположим эту микруху можно подключить к спектруму, но в каких алгоритмах она могла бы помочь? 3D?

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

  3. #2
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    3,649
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    3д конечно, а какие они числа перемножали? 16 битные или 32 битные?
    С уважением,
    Jerri / Red Triangle.
    [02.05.2014] не забудь этот день. Чубайс должен умереть. Dixi.
    [l'Abbey des morts TSEvo EV...5%] kiwi кошелек +79178162712

  4. #3
    Moderator Аватар для CodeMaster
    Регистрация
    26.04.2009
    Адрес
    Воронеж
    Сообщений
    4,843
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    8
    Поблагодарили
    7 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    16 битные или 32 битные?
    8-ми, но серия масштабируемая, можно было и 32 сделать.
    Последний раз редактировалось CodeMaster; 11.10.2019 в 17:13.
    Рыцарь ордена Хламовников

    Мои магазины на Мешке: Retro store и Компьютерные комплектующие

  5. #4
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,596
    Спасибо Благодарностей отдано 
    14
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от bigral Посмотреть сообщение
    3D?
    В 3D самую прорву занимает вывод, а вычисления - уже давно насобачились по табличкам, так что особой погоды не сделает.
    Разве что в демах всякие декрюнчеры будут шустрей...
    Вот если-бы эта микруха умела float умножения/деления + целочисленные знаковые */ да чтоб с выбором разрядности - тогда да, подспорье было-бы очень даже.
    А так - баловство, больше требуется микруха которая строила-бы в экранной памяти полигоны (ну типа указываешь адрес где хранятся данные и команда "рисуй"). Оно само там рисует в экран что-то а проц занимается дальше чем нужно...

    Aber, meine Herren, das ist keine Spectrum...
    (нем."Но, господа, это ведь не Спектрум..." (С) П. Эренфест (в оригинале фраза была про физику))
    Последний раз редактировалось Destr; 11.10.2019 в 18:19.

  6. #5
    Guru Аватар для NEO SPECTRUMAN
    Регистрация
    22.05.2011
    Адрес
    Дзержинск
    Сообщений
    3,145
    Спасибо Благодарностей отдано 
    26
    Спасибо Благодарностей получено 
    30
    Поблагодарили
    25 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от bigral Посмотреть сообщение
    (по идее может умножить 2 числа за 500нс, это менее 2х тактов z80 на 3.5mhz)
    до
    только это
    24 такта как минимум на 2 OUT
    +2 такта на само умножение
    +11 тактов как минимум на чтение 8 битного результата
    итого 37 тактов

    если же у нас для операндов 2 регистра
    то на OUT 28 тактов
    2 такта умножение
    и при чтении 16 битного результата из 2-х регистров
    28 тактов на IN

    58 тактов...



    самое быстрое софтварное умножение
    через логарифмы 8b*8b=8b
    по моему дето 52-56 тактов
    если не все 47 (давно не использовал забыл)


    Цитата Сообщение от bigral Посмотреть сообщение
    1802вр2
    мало того хардварной умножение давно есть на спектруме
    и реализовано оно в zxmc2
    и считает там avr и по идеи явно быстрей чем 1802вр2

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

    Цитата Сообщение от Destr Посмотреть сообщение
    умела float умножения/деления
    зачем оно на спектруме?
    когда 16 бит integer хватает всем?
    Последний раз редактировалось NEO SPECTRUMAN; 16.10.2019 в 07:15.

  7. #6
    Guru Аватар для Lethargeek
    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    2,716
    Записей в дневнике
    2
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от bigral Посмотреть сообщение
    в каких алгоритмах она могла бы помочь?
    да любая выборка из двухмерного+ массива с "некруглыми" размерностями
    .
    Прихожу без разрешения, сею смерть и разрушение...

  8. #7
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    4,365
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    83
    Поблагодарили
    46 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    через логарифмы 8b*8b=8b
    по моему дето 52-56 тактов
    если не все 47 (давно не использовал забыл)
    Знаю вариант на 51 такт, возможно есть и более быстрые. Только логарифмическое приближенное, не для всех задач годится.
    А порты умножителя можно и на память отобразить, будет намного удобнее и быстрее. Тут надо, конечно, смотреть конкретные схемы спектрумов, но по крайней мере с записью проблем не должно быть, разве что с чтением. Можно гибридно - писать "в память", читать из портов.

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

    Очевидно, что отдельный умножитель будет наиболее эффективен при перемножении чисел сравнительно большой разрядности, хотя в играх это вряд ли сильно востребовано.

  9. #8
    Veteran Аватар для bigral
    Регистрация
    12.07.2006
    Адрес
    Kiev/Ukraine
    Сообщений
    1,827
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    А порты умножителя можно и на память отобразить, будет намного удобнее и быстрее. Тут надо, конечно, смотреть конкретные схемы спектрумов, но по крайней мере с записью проблем не должно быть, разве что с чтением. Можно гибридно - писать "в память", читать из портов.
    Да порты это тормоз, да еще и проблемы со "стандартизацией", наверно имеет смысл врубить кудато в адреса SOS48 (типа 0x3900), там зашито 0xff потому при чтении будет работать схема "проводное И". Но видимо сам по себе умножитель слабо применим, надо еще к нему какой-то микропрограммный автомат прикручивать на РТ2 + РТ5 + SRAM тогда можно уже думаю намутить какието толковые "макросы" но заносить в экран данные или копировать с памяти в память наверно не выйдет (сильно схемы арбитров памяти видео и z80 разные бывают).

  10. #9
    Guru Аватар для NEO SPECTRUMAN
    Регистрация
    22.05.2011
    Адрес
    Дзержинск
    Сообщений
    3,145
    Спасибо Благодарностей отдано 
    26
    Спасибо Благодарностей получено 
    30
    Поблагодарили
    25 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Очевидно, что отдельный умножитель будет наиболее эффективен при перемножении чисел сравнительно большой разрядности, хотя в играх это вряд ли сильно востребовано.
    да и нафик один умножитель
    тогда ужо приручивать стм и пусть он делает все подряд

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

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

    так понимаю умножалка zxmc2 нигде не эмулируется

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

    Цитата Сообщение от ivagor Посмотреть сообщение
    Знаю вариант на 51 такт,
    там где 2 обращение к таблице логарифма
    и одно возведение числа (степени того логарифма) в сумму тех 2-х

    тобешь
    10^(logA+LogB)
    можот и 51

    но там не работает умножение на 0
    хотя я думая при снижении точности ответа в 2 раза
    можно это обойти не теряя скорости

  11. #10
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    4,365
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    83
    Поблагодарили
    46 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    да и нафик один умножитель
    тогда ужо приручивать стм и пусть он делает все подряд
    Если не привязываться к 1802ВР2, то конечно еще круче делать "интеллектуальный" математический сопроцессор. Например для 3d вращения такому внешнему устройству передавать координаты и углы поворота, а внутри оно уже перемножает матрицы как может и на что хочет - хранит таблицы синусов/косинусов или быстро считает их (если умеет) на ходу. А спеку остается нарисовать. А можно всю картинку внутри "отрендерить" и передать в спектрум уже в виде копии экрана/части экрана.

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

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

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

  1. haywire

Похожие темы

  1. Деление/умножение
    от Serdjuk в разделе Программирование
    Ответов: 51
    Последнее: 25.04.2018, 15:54
  2. Быстрое умножение на 10000
    от litwr в разделе БК-0010/0011
    Ответов: 9
    Последнее: 06.02.2017, 22:56
  3. Процедуры на асме (умножение деления)
    от gres8 в разделе Программирование
    Ответов: 3
    Последнее: 25.01.2007, 10:26
  4. деление синхросигнала
    от Splinter в разделе Unsorted
    Ответов: 3
    Последнее: 01.08.2005, 02:53

Ваши права

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