User Tag List

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

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

  1. #1

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

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

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

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

  3. #2

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    3д конечно, а какие они числа перемножали? 16 битные или 32 битные?
    С уважением,
    Jerri / Red Triangle.

  4. #3

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

    По умолчанию

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

  5. #4

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,822
    Спасибо Благодарностей отдано 
    274
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 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

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 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.

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


  7. #6

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  8. #7

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

    По умолчанию

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

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

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

  9. #8

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

    По умолчанию

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

  10. #9

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

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

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

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

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

  11. #10

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

    По умолчанию

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

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

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

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

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

Похожие темы

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

Ваши права

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