показаны три основных шага, необходимых для каждого разряда. Наименьший значащий разряд множителя определяет, добавлено ли множимое к регистру Произведения. Сдвиг влево во втором шаге вызывает перемещение промежуточных операндов влево, точно так же как с помощью карандаша и бумаги.
Также вам может показаться, что такая тема как http://fabriz.ru/catalog/funds-from-bugs/ никак не связана и даже не тематична. Хотя, может быть и связана. В любом случае все-таки зайдите на сайт fabriz.ru. Тема средства от клопов купить там представлена весьма широко. На том сайте можно узнать много интересного на тему средства от клопов купить. Что означает вообще тема средства от клопов купить, где найти средства от клопов купить - про это написано на сайте fabriz.ru. Это очень важная для многих людей тема - средства от клопов купить. Спасибо сайту fabriz.ru за информацию на тему средства от клопов купить.
Сдвиг вправо в третьем шаге дает нам следующий бит множителя для тестирования следующей итерации. Эти три шага повторяются 32 раза для получения произведения. Если для каждого шага требуется тактовый цикл, этот алгоритм для умножения двух 32-разрядных чисел потребует почти 100 тактовых циклов.
Относительная важность таких арифметических операций как умножение, варьируется от программы к программе, но сложение и вычитание могут быть в разных случаях от пяти до ста раз более востребованными, чем умножение. Соответственно во многих приложениях умножение может потребовать большого количества тактовых циклов без существенного влияния на производительноегь. Тем не менее закон А м дал а напоминает нам, что даже весьма умеренная частота использования медленных операций может ограничить производительность.
Этот алгоритм и оборудование довольно просто усовершенствовать, добившись одного тактового цикла на один шаг. Ускорение возникает за счет параллельного выполнения операций: Множитель и Множимое сдвигаются в тот самый момент, когда Множимое добавляется к Произведению, если разряд Множимого равен 1. Остается только убедиться в том, что отслежен сдвиг вправо Множителя, и получить предварительно прошедшую сдвиг версию Множимого. Обычно оборудование проходит еще более глубокую оптимизацию, нацеленную на то, чтобы поделить на два ширину сумматора и регистров, определяя, где находится неиспользуемая часть регистров и сумматоров. Видоизмененное оборудование показано на рис. 3.4
Замена арифметических операций сдвигом может также использоваться при умножении с использованием констант. Некоторые компиляторы заменяют операции умножения короткими константами с серией сдвигов и сложений. Поскольку сдвиг на один разряд влево представляет вдвое большее число по основанию два, сдвиг разрядов влево имеет тот же эффект, что и умножение на два. Как уже упоминалось в главе 2, практически каждый компилятор будет оптимизировать код, упрощая его путем подстановки сдвига влево для умножения на два.
Получается, что последний алгоритм будет работать для чисел со знаками при условии, что мы помним, что имеем дело с числами, имеющими бесконечное количество цифр, и только лишь представляем их, используя 32-разрядный формат, для расширения знака произведения для чисел со знаками потребуются шаги сдвига. Когда действия согласно алгоритму будут завершены, слово в младших разрядах будет содержать 32-разрядное произведение.
Опубликовал katy
June 28 2015 15:53:05 ·
0 Комментариев ·
2789 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.