русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Ускоренное выполнение операции деления


Дата добавления: 2014-11-27; просмотров: 1714; Нарушение авторских прав


В быстродействующих цифровых вычислительных устройствах применение вышеописанных алгоритмов деления нецелесообразно, поскольку для формирования n-разрядного частного необходимо выполнить не менее n арифметических операций (сложения или вычитания). Рассмотрим два логических метода ускорения выполнения операции деления, позволяющих сократить число выполняемых арифметических операций. Сразу оговоримся, что число циклов деления при использовании этих методов не уменьшается. Обязательным условием правильного выполнения приведенных алгоритмов является нормализованный делитель.

Первый ускоренный метод деления с анализом одного разряда основан на следующих соображениях. Будем полагать, что очередной частичный остаток , а нормализованный делитель , т.е. делитель больше остатка, сдвинутого влево на один разряд. Очевидно, что в следующем цикле деления из удвоенного частичного остатка следует вычесть делитель. В результате на сумматоре сформируется число , что приводит к формированию очередной цифры частного, равной нулю.
В следующем цикле деления очередной отрицательный частичный остаток удвоится, к нему прибавится делитель B,и на сумматоре сформируется число .Аналогичный остаток может быть сформирован на сумматоре в случае пропуска операции вычитания делителя в -м цикле. Действительно, в результате двух сдвигов влево на один разряд остаток будет умножен на 4, а поскольку он положительный, то в -м цикле из него следует вычесть делитель. Для случая рассуждения аналогичны.

Таким образом, если удвоенный частичный остаток содержит в знаковом и старшем после запятой разрядах двоичную комбинацию «0,0», то во втором такте арифметическая операция не выполняется и очередная цифра частного формируется равной знаковому разряду сумматора, т.е. нулю. Если удвоенный частичный остаток содержит в знаковом и старшем после запятой разрядах двоичную комбинацию «1,1», то во втором такте арифметическая операция также не выполняется и очередная цифра частного равна единице. В случае несовпадения разрядов справа и слева от запятой требуется выполнение арифметической операции.



Пример.

[А]пр = 0,101001;

[В]пр = 0,110011;

С = А/В.

 

1. Определение знака частного.

ЗнС = ЗнА Å ЗнВ = 0 Å 0 = 0.

 

2. Деление мантисс.

Частное Делитель

0.

< 0, деление без переполнения

1.

2.

3.

4.

5.

6.

Таким образом, частное C = 0,110011.

 

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

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

В табл. 2.5 приведены различные сочетания пар старших разрядов регистра делителя и сумматора.

 

Таблица 2.5

Старшие разряды сумматора Старшие разряды модуля делителя
0,10 0,11
0,00 1,11 Арифм. операция не выполняется Арифм. операция не выполняется
0,01 1,10 Арифм. операция не выполняется Арифм. операция не выполняется
0,10 1,01 Требуется арифм. операция Арифм. операция не выполняется
0,11 1,00 Требуется арифм. операция Требуется арифм. операция

 

Пример.

Разделим мантиссы чисел из предыдущего примера. Частное, формируемое в первом регистре, в обоих случаях должно совпадать.

 

Частное Делитель

0.

< 0, деление без переполнения

1.

2.

3.

(окончание примера на следующей странице)

4.

5.

6.

 



<== предыдущая лекция | следующая лекция ==>
Деление прямых кодов чисел | Деление дополнительных кодов чисел


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.