Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Ну не знаю. Сам процессор не проектировал, вот выписка из... 24.08.07 11:10 Число просмотров: 5545
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
|
> > пока еще за несколько, ну а делить за log2(делитель). > > Насчет log2 - это немного устаревшие данные. По-моему уже > начиная с 386 у Интела был какой-то новый алгоритм, который > делил очень быстро и за фиксированное количество тактов.
Ну не знаю. Сам процессор не проектировал, вот выписка из книги по ссылке:
Микропроцессор 80386 разделен внутри на 6 автономно и
параллельно работающих блоков с соответствующей синхронизаци-
ей. Все внутренние шины, соединяющие эти блоки, имеют разряд-
ность 32 бит. Конвейерная организация функциональных блоков в
80386 допускает временное наложение выполнения различных ста-
дий команды и позволяет одновременно выполнять несколько опе-
раций. Кроме конвейерной обработки всех команд, в 80386 вы-
полнение ряда важных операций осуществляется специальными ап-
паратными узлами. Блок умножения/деления 80386 может выпонять
32-битное умножение за 9-41 такт синхронизации, в зависимости
от числа значащих цифр; он может разделить 32-битные операнды
за 38 тактов (в случае чисел без знаков) или за 43 такта (в
случае чисел со знаками). Регистр группового сдвига 80386 мо-
жет за один такт сдвигать от 1 до 64 бит. ---
Ну умножать можно двумя способами. При циклически-сдвиговом, можно и за 1-2 такта вложиться, если умножаем на маленькое число. Алгоритм-то адаптивный - больше бит дольше умножать. В принципе можно и в два такта вложиться, но иметь ПЗУ в процессоре на три десятка гигабайт очень накладно. Для трех тактов нужен только мегабайт.
Вот только не представляю как деление можно сократить, если делимое многобитное, а делитель малобитный. Если есть какая инфа на эту тему - надо поделиться ссылочками.
> FDIV на Пентиуме выполняется примерно за 15 тактов для > single precision и 30 - для double. Это против одного такта > для сдвига - по-моему разница существенная.
Это если сдвиг. Деление выполняется за время того же порядка.
Введение в микропроцессор 80386
|
|
|