
книги из ГПНТБ / Корнейчук В.И. Арифметические устройства ЭЦВМ учеб. пособие
.pdf4.Ш0Ю1 ДЛЯ ЯВЛЕНИЯ ЧИСЕЛ
4.1ОСНОВНЫЕ МЕТОДЫ РЕАЛИЗАЦИИ ДЕЛЕНИЯ ЧИСЕЛ В ПРЯМЫХ
КОДАХ |
Ш Л 2 6 ] |
|
Операция деления чисел в программах встречается до |
||
вольно |
редко / |
= 0,02/, однако реализация ее по |
подпрограмме потребовало бы значительных затрат време ни. Поэтому в большинстве современных ЦВМ эта операция реализуется схемно.т.е. имеется специальный блок,осу ществляющий деление чисел. Известно два основных алго ритма выполнения деления чисел,а именно:деление с вос становлением и без восстанопления остатка. Реализация как первого,так и второго алгоритма требует примерно одинаковых аппаратурных затрат,однако при делении по первому алгоритму требуется больше операций сложения и вычитания. Поэтому в ЦВМ используется,как правило,деле
ние |
без восстановления остатка. При этом знаковые раз |
||||||||
ряды и цифры мантисс |
обрабатываются отдельно. Знак ре |
||||||||
зультата определяется путем суммирования по модулю 2 |
|||||||||
цифр,записанных в знаковых разрядах мантисс. Как из |
|||||||||
вестно, алгоритм деления чисел без |
восстановления остат |
||||||||
ка сводится к выполнению следующих действий. |
|
||||||||
1. |
Вычесть из делимого X делитель У. Если результат |
||||||||
/?0 $ О ,то старшая цифра 2 0 |
|
частного,относящаяся |
|||||||
к разряду |
целых,равна І,а |
если |
Ro ^ 0 |
-то |
нулю. Полу |
||||
ченная разность является первым остатком. |
|
|
|||||||
2. |
Удвоить остаток. |
|
|
|
|
|
|
|
|
3. |
Если R j.< 0 ,то добавить,а |
если |
-Z О |
,то |
вычесть |
||||
делитель. Если вновь |
полученный остаток Я£+/ |
,то |
|||||||
очередная цифра частного |
= / |
, а |
если Щ+f |
|
|||||
то |
2 ;+ ,= о. |
|
|
|
|
|
|
|
|
4. |
Повторить пункты 2 и 3 |
/гараз. |
|
|
|
|
|||
При реализации данного алгоритма может |
оказаться,что |
||||||||
2# = 1 . |
Это означает переполнение разрядной сетки |
или нарушение нормализации /для машины с плавающей за пятой/. Если делитель был нормализован,то деление мож но продолжать,так как результат деления будет верным,
- 59 -
но будет находиться в ироделил /■£%<:2 . Ксли не де ятель ненормализован.то деление должно бить прекращено, так как возможна потеря старших разрядов остатка и, вследствие этого,результат будет ошибочным. Здесь и да лее предполагается, что -у- <-'/ . Пункт второй данного алгоритма можно заменить пунктом "Уменьшить и два раза делитель У". Наличие двух интерпретаций второго пункта дает два основных варианта построении о.чоков деления /БД/. В БД, построенном но первому способу.осуществля ется сдвиг влево остатка при неподвижном делителе. 13 БД,построенном но второму способу.остаток неподвижен,а взаимны;, сдвиг остатка і; делителя огущеетшшотен за счет сдвига последнего вправо. іСак в первом,так и во втором случае БД, должен содержать регистры РХ,РУ и РЛ и сумматор. Так как производится вычитание делителя У из делимого 21,то РХ и РУ должны быть соединены с сум матором 2" ,а выходы Z" должны быть подсоединены ко входам РХ. Для формирования сигнала конца операции /КО/ необходим счетчик сдвигов /СС/. Составим микроал горитм деления /:.:АД/ чисел на указанных узлах
[НЯЛ)= (ЯО)(ГСС) і 3( ВКРЛ)[Хо) t '(ВОКРУ)(Рп)(Хо) ( г1'
(ВК'РУ)іУпКРХ)(21-=\)(+!І)(л ср ф сРХ ){1 =л +і)Г *(к о)}
где с -переменная.характеризующая состояние счетчика сдвигов,а / + / с / - микрооперация увеличения па I пере менной L .
Структура БД,реализующего данный микроалгоритм, по казана на рис.4.1-1, Для формирования сигнала /КО/ ис пользован счетчик сдвигов /СС/ е периодом Т =/?■/■/.
Однако в данном случае,в силу того,что регистр РЯ перед началом деления гасится,конец операции можно
формировать с помощью Р2? |
. Для этого регистр ГЛ |
|
снабжается дополнительным |
п + 2 |
-м разрядом и перед |
началом деления /например,по сигналу НО/ в младший |
||
разряд РЛ записывается I . |
После n + f сдвигов рты I |
|
попадает в дополнительный |
П+2 |
разряд,выход которо- |
- 60 -
- 61 -
го управляет формированием сигнала /КО/ /см. пунктир на рис.4.1-1/. Рассмотрим цифрову* диаграмму работа БД
на примере деления чисел У = у |
= 0,11000 и X = |
|||
=.0,01111, при |
этом |
? |
~~у' ~ |
~в~ = 0,10100. |
Р2 |
|
|
РХ |
РУ |
00,00000 |
|
|
00,01111 |
+ У .,ІІ000 |
|
НО |
- |
|
-У,,01000 |
00. (.0001 |
-У |
|
ІІ.0І000 |
|
|
|
|
тт.тпттт |
|
00,00010* |
сдв. |
|
11,01110 |
|
|
+У |
|
00.11000 |
|
/ |
|
|
00,00110 |
|
сдв. |
|
00,01100 |
|
|
00,00101 |
|
|
||
|
-У |
|
II.0IGC0 |
|
/ |
сдв. |
|
■11,10100 |
|
00,01010 |
|
11,01000 |
|
|
|
+ У |
|
00.11000 |
|
00,10101*^ |
|
|
00,00000 |
|
сдв. |
|
00,000(00 |
|
|
|
-У |
|
ІІ.0І000 |
|
01,01010 |
сдв. |
|
10,10000 |
|
|
+ У |
ОО.ІІСОО |
|
|
/ |
сдв. |
10,10000 |
|
|
10,10100 |
|
|||
X_____________ |
КО |
|
|
|
Из цифровой диаграглмы видно,что после четвертого вы читания в регистре РХ образовался код нуля. После чего все последующие цифры Z t- частного равны нулю.т.е. в дальнейшем необходимо производить только сдвиги, в то время как операции вычитания можно опустить. Если цифры частного с равной вероятностью могут принимать значения
О и І,то |
пропуск такта вычитания' позволит сократить ' |
время деления в среднем не более чем на величину 2 |
|
/см .3 ,1 /. |
В общем же случае быстродействие и стоимость |
ҢЦ будет |
tg = ( п + t ) ( t c + t + ) , |
C=(3ct,+a.z +a.3+ач +as.-f-2a8)n + /V a / +2аг +2a v 4-2^ + ■b 3a6 -xj + */ctg).
- 62 -
Рассмотр и теперь второй способ построении БД,при котором остаток неподвижен /рис.4.1-2/. Отличие данного БД от ранее рассмотренного состоит только в том,что все регистры будут сдвиговыми,а регистры РХ,РХ*сумматор бу дут содержать удвоенное число разрядов. При этом сдвиг осуществляется только в регистрах РУ и Р£ . Микроалгоритм / іаА/ работы данного ІД аналогичен МА работы БД, построенного по первому способу. Так как результат вы читания /остаток/ неподвижен,то можно совмещать опера цию вычитания со сдвигом. Операцию сдвига в РZ можно осуществлять только после образования знака результата, т .е . после окончания процесса формирования сигнала А /рис.4.1-2/. Вследствие этого сдвиг можно осуществлять по сигналу /ІЖРХ/ и совмещение операций поэтому будет не полным. По так как ооично на сдвиг и прием кода тре буется примерно одно и то же время,то длительность од
ного такта деления |
будет равна oit^ < |
/ t e } |
|
где о(— |
— |
коэффициент близкий к І,т .е . |
|
|
|
< t y ~ (п + |
+~ £ c j. |
Аппаратурные затраты на построения данного БД можно значительно сократить,если длины РХ,РУ и £ сократить до П -f-fc разрядов,где Ar определяется из условия
А1 + €оуг
так как именно такое количество разрядов необходимо для того,чтобы погрешность от отбрасывания младших разрядов остатка и деления не превысила половины младшего разря
да |
результата. Так как при |
2 3 ^ п ^ |
3 9 |
К = 6, |
|
то |
|
. |
|
|
|
С=(3а.,+аг +as + a v ta r t3 a ^ n tp a , |
6 |
7a9 |
|
Сравнивая первый и второй ЬД по стоимости и быстродейст вию можно сделать вывод,что по стоимости второй вариант уступает первому на 10 - Щі,‘ ä по быстродействию на 15- -25% превосходит его. Следовательно,по коэффициенту эф фективности первый и второй ГД примерно равноценны,что является причиной их примерно одинакового распростране ния на практике.
- 63 -
В заключении отметим,что в БД с фиксированной запя той должна быть предусмотрена возможность фиксации пе реполнения Q разрядной сетки. Осуществить это возмож но путем формирования совпадения \ 0 с сигналом первого такта деления,который можно получить дешифрируя нулевое состояние СС или состояние В = 00...01 регистра РZ /рис.4.1-2/.
Задачи. I . Составить микроалгоритм деления с обнаруже нием переполнения разрядной сетки.
2.Нарисовать цифровую диаграмму для втооого варианта
ЬД.
3.Разработать БД с фиксацией’ переполнения разрядной сетки.
- 64 -
4 .2 . ЛОГИЧЕСКИЕ СПОСОБЫ УСКОРЕНИЯ ДЕЛЕНИЯ /1,8,25,27/
Методы ускорения деления по аналогии с ускорением умножения делятся на аппаратные,логические и комбиниро ванные. Хотя реализации операции деления уделяется зна чительно меньше времени чем,например,операции умножения, известно достаточно большое количество способов ускоре ния деления. Из известных логических методов наиболь шее распространение получили два рассмотренные ниже способа. Первый, из них применим в случае использования комбинационного .сумматора. Идея метода состоит в том, что если результат очередного -вычитания отрицательный, то вместо приема кода на регистр РХ остатка осуществ ляется сдвиг,а очередной цифре частного приписывают значение 0. Структура БД,построенного на основе дан ного алгоритма,показана на рис.4.2-1,где А - выход знакового разряда сумматора. Из рис.4.2-1 видно,что данный метод,во-первых,позволяет упростить суммирую щий блок за счет устранения цепей выдачи кода с ре гистра РУ и,во-вторых,в случае применения первого ■ метода деления - несколько повнсить быстродействие. Действительно,если предположи?,«,что Он I в частном появляется с равной вероятностью, то
=(п+<)(-г tc + ß t + ) <ft1+t)(£c + £+)*
где Ы — |
+ |
-коэфтициент близкий к I, а |
|
'Г |
Второй метод может быть использован |
как гіри первом,так и при втором способе деления. Од нако наиболее легко он реализуется при нормализован ном делителе и при первом способе деления /т .е . со сдвигом остатков/. В основе метода лежит способ быстрого/т.е. без суммирований-вычитаний/получения групп,состоящих из одинаковых цифр,т.е. групп типа
00 ...0 или I I . . . I . Рассмотрим сначала случай получения
- 65 -
групп нулей. Группа из рп -I нуля в частном может воз никнутъ,например,когда в по старшее разрядах очеред ного положительного остатка будут нули. Действительно,
если. |
00... О, /... t т о |
ди |
Rj >О |
|
|||
/?. = |
и |
||||||
1 |
|
т |
|
|
R |
|
L |
Для получения |
сдвигаем |
и вычитаем из него |
|||||
|
|
~У < |
2 т ■г-у< |
/л- / |
2 > |
||
т .е . при |
т |
> / |
и |
нормализованном делителе у |
|||
Далее |
Ъ + 1 * о |
? / |
|
|
|||
|
|
|
|
|
|
|
|
Ъ+г = г Ъ + /* У = г гъ |
|
|
= 2 % |
- J |
|||
т .е . при |
т |
> 2. |
|
|
|
|
|
|
R i , 2 < 0 |
У |
|
= |
|
||
В t + m - 1 |
такте |
получим |
|
|
|
||
' l + m - f |
|
т ~/ |
|
|
|
|
+ т ~ / = о . |
|
|
|
|
|
|
||
В следующем такте |
получим |
|
|
|
|||
Ъ + т = 2 ' ”Ъ - у < / - і = £ > |
|
||||||
т .е . сделать |
какой-то вывод о Z/ / т в данном случае |
не представляется возможным. Отсюда следует,что при
^p/r, е |
^ О |
имеют структуру?/. г .100...0. |
очередные цифры |
частного |
|
При зтом для вычисления |
достаточно сдвинуть*_/ |
|
на т разрядов влево и |
вычесть У. |
|
Аналогично может быть |
получена группа из т - / |
единицы. Действительно,пусть очередной остаток имеет вид
Ri = І І . Д І І . . . І 0 . , . ,т .е . - ^ / п < ^ < 0 ^ г ^ =О.
Тогда |
/” |
/ • |
/ |
R i+ f = 2 R ( + y > - 2 z !* + t > |
|||
т .е . при /77>/ |
и нормализованном делителе У получаем |
||
*ѵ+f |
>67 |
L-f-f = 1. |
|
Далее |
|
|
|
- 6 6 -
т .е . при |
т |
>2 |
получаем |
|
|
h |
F і+ г > О и ? i+ z ~ ; |
|
|||
i +m |
- f |
такте получаем |
|
||
F U m - t= 2 rn~ff y + p > ~ І + Т =0 и ^i+ m -r = / |
|||||
Ь |
і + т |
такте |
|
|
|
|
|
|
*i+ m =2 m X ,+ ? > - /+ ! > = - Z t |
||
т .е . сделать |
вывод |
в общем случае не представ |
|||
ляется возможным. Таким образом |
при |
||||
|
- |
~2т < |
< О |
иметь вид^-,,011.. .1 2-і+/г>. |
|
очередные цифры частного будут |
|||||
При этом для вычисления R i+ m |
достаточно сдвинуть Я/ |
||||
на |
т |
разрядов |
и прибавить У. |
Рассмотренные случаи не исчерпывают всех возможных ситуаций получения групп из одинаковых цифр частного. Действительно,как видно из приведенных выше выкладок, группа единиц может возникнуть,когда очередной остаток > 0 и близок по величине к делителю. Этот же вывод можно сделать на основании следующих зависимостей.
Так как <?■ = z / . , = .. = г.- |
= Л |
|
то |
’l-t-m |
|
|
|
|
ъ + т -г = 2 т-'7?г 2 т -гц - |
.. . - 2 у |
|
|
|
К і+ т = г т Я і - г |
2 |
О- |
|
Из последнего неравенства с л езет,что |
|
|||
|
|
|
2 го - f |
|
Но так как в любом случае |
|
|
||
ТО |
* < / * < • / - * * o '17- / ' |
|
|
|
т.е. у |
~ Р(- |
,что и требовалось |
показать. |
|
Данный случай может быть сведен к предыдущему путем |
||||
замены остатка |
остатком. |
|
|
т.е . вместо сдвига осуществляется вычитание-.
-67 -
Действительно |
/?/ ~ У ^ ^ |
|
|
|
11 |
І^і I ^ |
2 т~* |
т |
старших |
т .е, |
остаток Судет отрицательный' и в его |
|||
разрядах будут находиться единицы. При стом |
вычис |
|||
ления R i+ /77 |
достаточно сдвинуть Р/ |
на т раз |
рядов влево и прибавить У. Действительно = 2 Р {- - у = 2 R / + У ,
.= 2 Ъ + , у у г . ?* £ + ¥ . >.
R i+ m - * * W . / 2 Л ^ что и требовалось доказать. .
■Аналогично можно показать,что группа нулей может возникнуть при отрицательном и близком к делителю остат ке. Путем замены Р(- остатком Р /= Р, 7у данный случай может быть сведен к случаю положительного остат
ка. При этом для |
вычисления остатка |
достаточно |
|
сдвинуть Р- на |
/77 |
разрядов влево |
и вычесть У. |
При реализации данного метода ускорения деления необ ходимо иметь схему обнаружения каждого из четцрех рас смотренных выше случаев. Распознать первый и второй случай можно с помощью схем И,формирующих сигналы сов паденіи цифр в старших разрядах регистра остатка РХ. Естественно,при этом.использовать схемы совпадения с ми нимальным количеством входов,так как анализ большого числа цисфр остатка снижает эффективность метода из-за того,что группы разрядов частного с малым числом одина
ковых цифр /например, |
двумя/ будут вычисляться обычным |
|||||
способом /т .е . |
не ускоренно/. |
|
|
|||
Таким наименьшим количеством анализируемых цифр |
/Р/ |
|||||
является три,так как |
надо просматривать joia знаковых |
|||||
разряда и, по крайней мере,один разряд мантиссы,т.е. |
||||||
|
Л |
- |
(ОТо Р ф т ' PX)(OTt р х ) |
, |
|
|
|
Л( =(<т0 р ф т 0'р х ) ( іг ,р х ) , |
|
||||
где |
Т0 и Т ' |
- |
соответственно триггеры |
первого |
и второ |
|
го |
знаковых разрядов регистра РХ; Т/ - |
триггер |
старше |
|||
го разряда регистра мантиссы; к0 и Af |
- признаки,фор |
- 68 -