ZXNet эхоконференция «code.zx»


тема: Асм алгоритмы 2 - DIV и теорема деления



от: Kirill Frolov
кому: All
дата: 16 Oct 2001
============================================================================= * Forwarded by Kirill Frolov (500:812/1.507) * Area : talks.asm (talks.asm) * From : Aleksey Malov, 2:5052/30.8 (13 Oct 01 10:29) * To : Sashka Yackubtchick * Subj : Асм алгоритмы 2 - DIV и теорема деления ============================================================================= Hi, Sashka! Sat 13 Oct 2001, at 05:39:04 Sashka Yackubtchick told Aleksey Malov about Асм алгоритмы 2 - DIV и теорема деления. SY> Спасибо за нитересный пример, Алексей. SY> Вопрос относительно 98 тактов: SY> Это чисто теоритический подсчёт или ты делал замеры? Чисто теоретический подсчет. Hа P-pro/II/III в конвейере работают 3 параллельных декодера (2 простых и один сложный). Декодеры преобразуют команды микропроцессора в микрооперации, представляющие собой примитивные команды,которые выполняются пятью параллельно работающими исполнительными устройствами микропроцессора. Многие простые команды преобразуются в одиночные микрооперации (это делает простой декодер), а некоторые камандыпреобразуются в последовательность двух и более (оптимально - 4) микроопераций (это делает сложный декодер). Декодер команд может формироавать до 6 микроопераций за такт. Для достижения наибольшей производительности работы декодеров необходимо, чтобы на их входы поступали команды, декодируемые шестью микрооперациями в последовательности 4+1+1. Если верить вышеописанным словам, то мой цикл процедуры деления максимум будет выполняться за 3 такта, а т.к. циклов 32, плюс еще пара простых команд расположены вне цикла, в сумме выходит около 98 тактов. Все равно, в подавляющем большинстве случаев деление в "столбик" быстрее циклического вычитания делителя из делимого. Hа процах, где команды деления нет (например, Z80), именно так и поступают. Для быстрого умножения 8-ми битных чисел (не используя команду mul) можно применять т.н. композиционное умножение: Если присмотреться к формуле (a+b)^2 = a^2 + 2*a*b + b^2, то можно заметить: (a+b)^2 - a^2 - b^2 a*b = -------------------- 2 Если предварительно рассчитать табличку квадратов 8-мибитных чисел (512 байт), то умножение можно производить за несколько тактов. Bye, Sashka. WBR, Vivid^Brainwave. -+- Lara Croft за 4.50 $. + Origin: http://brainwave.dax.ru (2:5052/30.8) ============================================================================= Hемедленно нажми на RESET, All! Про умножение.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Scene news - в рядах Triumph'a появилось пополнение, Ironman курит сиги, Слава Медноногов снова "отдал в народ" один из своих проектов.
Конец - А чтo, сoбственнo, былo?
Открытые письма Nemo №8.2
Система - о проблемах совместимости клонов Спектрума. Основы программирования музыкального процессора AY-8910/12.
Реклама - Имеются в продаже черно-белые электронно-лучевые трубки 31ЛМ10Б-2.

В этот день...   8 мая