Z=f(x), където x- входни данни; z


Тема 20: Умножение с фиксирана запетая



страница4/5
Дата23.03.2017
Размер0.81 Mb.
#17599
1   2   3   4   5

Тема 20: Умножение с фиксирана запетая


Две двоични числа N’ и N’’ се умножават с последователно сумиране на частичните произведения като знака на произведението се формира със сумиране по модул 2 на кодовете на знаците. Произведението на абсолютните стойности и неговият знак се пресмятат като се използва една от следните формули:

Q=(…((Xy1.2+Xy2).2+Xy3).2+…+Xyn-1).2+Xyn

Q=(…((Xyn/2+Xyn-1)/2+Xyn-2)/2+…+Xy2)/2+Xy1

Където Xyi e частичното произведение qi, приемащо стойност 0 или Х, а Zn-1-тегловният коефициент на частичното произведение. Умножението с 2 и 1 /2 става чрез изместване на множимото с един двоичен разред в съответната посока. Резултатът от умножението на 2 N разредни числа е едно 2N разредно число.

Алгоритъмът за работа на устройството е изграден на основата на следните микрооперации:


C1

:Tст:=0

нулиране на флаг Тст

C2

:Тко:=0

нулиране на флаг Тко

C3

:R1:=(X)пк

зарежд. множимото в ПК

C4

:R2:=(Y)пк

зарежд. на множителя в ПК

C5

:S:=0

нулиране на суматора

C6

:B:=n2

инициализ. на брояча

C7

:S[1-n]:=S[1n]+R1[1n]

+ към съст. на суматора

C8

:R2[1-n]:=0,R2[1(n-1)]

измест. надясно с 1

C9

:R2[1]:=S[n]

презапис на 1 разред

C10

:S[1n]:=0,S[1(n-1)]

измест. надясно с 1

C11

:B:=B-1

намаляване на брояча

C12

:S[0]:=R2[0]#(R1[0])

формиране на знак

C13

:Тко:=1

активизиране на Тко

ПК - прав код.

Блоковата схема на алгоритъма за умножение е следната:



Действието на устройството започва при активизиране на външния сигнал за стартиране на АЛУ. Отначало тригерите за състояние Тст и Тко се нулират, в регистрите R1 и R2 в пряк код се записват множимите Х и У, суматора С се нулира и в брояча Б се записва константата n2. Следващите действия се повтарят циклично до нулиране на съдържанието на брояча. После се формират знакът на резултата в суматора и признакът за край на операцията. Ако времето за изпълняване на преместването е tn, а времето за сумиране - tC, общото средно време за умножение се оценява по формулата t=n(tn+tC/2). Известните методи за ускоряване на умножението се основават на два принципа. При алгоритмичните методи се намалява броя на елементарните сумирания и измествания, чрез едновременно умножаване с два разреда от множителя. Тъй като двата разреда на множителя могат да приемат четири различни стойности (00,01,10,11), частичното произведение и неговото сумиране се изпълняват по четири различни начина. Изместванията в регистрите и суматора се извършва едновременно с два разреда, а цикълът за умножение е n/2. При равномерно разпределение на нулите и единиците в множителя средното време за ускореното по този начин умножение се оценява: t’=n(tn+3/4.tC)/2.

При втората група методи (схемни) ускоряването на умножението се основава на използването на повече апаратура за пресмятане, като времето за умножение намалява поради едновременното формиране на части от изразите.Времето за умножение на две n- разредни числа се определя единствено от времето t’ за събиране в едноразредния суматор и се оценява по следния начин: t”=(2n-1)t’C.

Тема 21: Деление с фиксирана запетая


Делението на две числа N’ è N’’ (N’>N’’) се състои в изваждане на делителя N’’ от делимото N’, и последователно формиране на разредите на частното Q. Ако с R се означи остатъка от делението, може да се запише: N’=QN’’+R.

Делението без възстановяване на остатъка се изпълнява в следната последователност:

- От делимото се изважда делителя. Ако резултата е положителен, делението се прекъсва поради препълване. Иначе се продължава нататък. Това се прави с цел да се установи дали двете числа отговарят на гореописаното изискване.

- Остатъка се удвоява чрез изместване наляво с един двоичен разред;

- Анализира се знака на удвоеният остатък: ако е отрицателен, към остатъка се прибавя делителя и съответният разред от частното получава стойност 0; при положителен знак от остатъка се изважда делителя и съответният разред от частното получава стойност 1;

- Проверява се дали е завършено делението и ако не е, последователността се изпълнява отново, иначе частното се формира окончателно.

Алгоритъма за работа на това АЛУ е реализиран на основата на следните микрооперации, непосредствено изпълними от операционните възли под управлението на стробиращите сигнали Сi


C1

:Tст:=0

нулиране на флаг Тст

C2

:Тко:=0

нулиране на флаг Тко

C3

:Tпр:=0

нулиране на флаг Тпр

C4

:S:=(X)пк

зарежд. делимото Х

C5

:R1:=(Y)пк

зарежд. на делителУ

C6

:R2:=000…01

флаг-край на итерации

C7

S:=S-(R1)ДК

Сумиране

C8

:Tпр:=1

актив. флаг за препъл.

C9

:S[1-n]:=S[2--n], 0

Shift LEFT на суматора

C10

:S:=S+R1

СУМИРАНЕ

C11

:R2:=R2[2-n],0

Shift register to left

C12

:R2[n]:=S[0]

Презапис на резред

C13

:Тко:=1

активизиране на Тко

Подробната блок-схема на алгоритъма, има следният вид:

Делението започва при активизиране на външният управляващ сигнал за стартиране на АЛУ. След това в тригерите на състоянието се зареждат началните стойности, в суматора S и регистъра R1 в пряк код се записват делимото и делителя, а в регистъра R2 се записва N разредна константа 000…01. Прави се пробно изваждане на делителя от делимото в допълнителен код, като при получаване на положителен резултат Тпр се установява в състояние 1 и делението завършва неуспешно. Ако се получи отрицателен резултат (остатък), той се удвоява чрез изместване с един разред наляво в суматора S, след което се анализира знакът му S[0]. В зависимост от знака на делителят се прибавя или изважда от остатъка и се формира съответният разред от частното. Делението завършва, щом се появи стойност 1 в старшия разред на регистъра R2 с установяване на Тко в състояние 1. Абсолютната стойност на частното се намира в младшите n-1 разреда на регистъра R2.


Въпрос 22: Десетично-двоично превръщяне

Всяко N разредно число от ПБСН с основа R=10 и к

Като при Kj се получава точно представяне на числата или двоично десетичен код (BCD).

На основата на метода за превръщане на десетично BCD кодирано число в двоично се съставя алгоритъм за работа на АЛУ с последователно действие. Неговата блок-схема има вида:

Сумирането на двоично-десетичните BCD числа се извършва чрез последователно сумиране на отделните десетични разреди. Сумирането се изпълнява с четиривходов двоичен суматор, като за по-удобно формиране на преноса pi сумирането е с добавяне на константа 6, при което двоичният пренос от суматора съвпада с десетичния пренос. За да се получи сумата zi, от резултата трябва да се извади константата 6: pi,zi=Ai+Bi+pi-1+6(?). Знакът на резултата в случая се определя въз основа на анализирането на знаците на операндите. Процедурата за сумиране на двоично-десетични операнди Х и У в код BCD обхваща стъпките:

- формира се сумата Z=A1A2…Am+66…6

- формира се сумата Z=Z+B1B2…Bm

- определя се коригиращ код К=К1К2…Кm, като Ki=0000 при наличие на пренос към старшата тетрада ; Ki=1010 (допълнителен код на 6) при липса на пренос

- формира се сумата Z=Z+К1К2…Кm, при което се блокират преносите между тетрадите на двоичните кодове на десетичното число. Алгебричното умножение на двоично-десетичните числа се състои в умножение на техните абсолютни стойности и формиране на знака на произведението в зависимост от знаците на операндите. Обикновено делението на двоично-десетичните числа се изпълнява по метода с възстановяване на остатъка. В този случай делителят се изважда от делимото (или остатъка) до получаване на отрицателен остатък. Броят на изважданията, водещи до положителни остатъци, определя стойността на текущата цифра на частното. След като се получи отрицателен остатък, прави се коригиращо сумиране на остатъка с делителя, който след това се измества наляво с четири двоични разреда (един десетичен разред). Тези действия се повтарят за определяне на всяка цифра от числото.


Тема 23: Нормализация на floating point numbers

Примерния алгоритъм за нормализация на число с плаваща запетая има следния вид:



В алгоритъма е предвидена проверка за нулев код на мантисата, при което се активизира флагът Тнм и самото нормализиране няма смисъл(мантисата е с код пълна нула). Нормализирането се извършва чрез последователни измествания на кода на мантисата наляво и коригиране на порядъка. Процесът завършва при поява на 1 в старшият разред на мантисата (двоично нормализирана мантиса). Ако операндите се означат като числа с плаваща запетая X=MXpE, Y=NYpF , където М и Е, F са съответно мантиса и порядъци, аритметичните операции се изпълняват по следните формули:

- Сумиране :

Z=MZpQ=(MX  MYp-(E-F))pE, при Е  F;

Z=MZpQ=(MXp-(E-F) +MY)pE, при F>E;

- Умножение - Z = X.Y = Mx.My.pE+F

- Деление - Z = X/Y = (Mx/My)pE-F

Обобщената структура на операционната част на АЛУ за обработка на числени данни с плаваща запетая има следният вид:



Тук са използвани два регистъра R2 и R3 за съхраняване на мантисата и порядъка на операнда Y, два суматора, S1 и S2 за съхраняване на мантисата и порядъка X и за сумиране на частичните резултати, както и помощен регистър R1 за съхраняване на мантисата или порядъка на някой от операндите. При алгебричното сумиране разликата от порядъците се формира в S2, като преди изваждането суматорът се освобождава от съхраняваният в него порядък, който се прехвърля в R1. Порядъците на операндите се изравняват чрез преместване на мантисите в суматора S1 или регистъра R2. Сумата на мантисите се нормализира в S1 чрез микрооперациите за преместване. При умножение на мантисата на множителя, намираща се в S1 се прехвърля в регистъра R1. Частичните произведения се сумират в S1, а порядъка на произведението се формира в S2. Умножението се изпълнява като се започва от младшите разреди на мантисата - множител. Делимото се записва в S1, а след това се съхраняват остатъците. След като се формират всичките разреди на частното - мантиса, то се прехвърля в суматора S1, а в суматора S2 се формира порядъка. Окончателният резултат се нормализира в суматорите S1 и S2.



Тема 24: Конвейерна обработка с плаваща зап.

Използването на принципа за конвейерна обработка позволява значително да се ускори работата на АЛУ за процесори в сравнение с АЛУ с последователно действие. Примерно разделяне на общият алгоритъм за събиране с плаваща запетая на няколко последователни фази може да се опише в следната таблица:



Фаза

Описание на фазата

1

Нормализиране на операнда с ~ запетая

2

Сравнение на порядъците

3

Коригиране на мантисата на операндите

4

Събиране на мантисите

5

Нормализиране на резултата с ~ запетая

При използване на АЛУ с последователно действие общото време за събирането на две числа с плаваща запетая е равно на сумата от отделните времена на различните фази. При конвейерната организация на изпълнението на алгоритъма изпълнението на всяка фаза от него става в самостоятелно подустройство, които устройства са свързани последователно по отношение на потока на обработвани данни.

Такта на конвейера  се избира равен на времето на най-дългата фаза (конвейерна операция), като резултатът от първото сумиране с плаваща запетая се получава на изхода от конвейера след време = к., където с К е означен броят на фазите на последователният линеен конвейер от фигурата. Всеки следващ резултат от сумирането се получава на изхода след един такт . Това е възможно тъй като след изпълнението на първата фаза от първото събиране неговият частичен резултат се премества във второто подустройство и освобождава 1 то, което може да поеме изпълнението на първата фаза от второто сумиране и т.н.



Каталог: files -> tu files
tu files -> Увод в компютърната графика
tu files -> Xii. Защита и безопасност на ос
tu files -> Електрически апарати
tu files -> Средства за описание на синтаксиса
tu files -> Stratofortress
tu files -> Начало Решаване на проблеми
tu files -> Писане на скриптове за bash шел : версия 2
tu files -> 6Технологии на компютърната графика 1Модели на изображението
tu files -> Body name библиотека global Matrix imports (достъп по име) … var m[N, N] := … end decl., proc … resource f final code imports node, Matrix end name var x: node node; if x … Matrix m[3,4] :=: … end


Сподели с приятели:
1   2   3   4   5




©obuch.info 2024
отнасят до администрацията

    Начална страница