Основы вычислительной техники. Методические рекомендации по курсовой работе. Учебное пособие
.pdfСледует отметить, что для выполнения операции сложения используетсясумматорразрядности2n.Однако«активное»сложение (свозможностьювозникновенияпереносовмеждуразрядами)выполняется только в n разрядах сумматора. Таким образом, время суммирования фактически не превышает nt∑1разр. Поэтому время умножения определяется следующим образом:
tумн = ntц = n( nt∑1разр + tсдв) ≈ n2t∑1разр.
Пример работы алгоритма. Запишем потактовое представление содержимого регистров умножителя четырехразрядных чисел младшими разрядами вперед со сдвигом множимого (см. рис. 7.2).
Для множимого А = 1101 и множителя В = 0101 потактовое представление регистров умножителя представлено на рис. 7.3. Полученный результат умножения: S = 01000001 (13 × 5 = 65).
7.2. Умножение старшими разрядами вперед со сдвигом суммы
Математическая модель. В произведении A × B раскроем В побитно, используя естественное представление числа. Для упрощения записи представим его как целое число. Результат представим в скобочной форме:
S=2n−1 Abn−1 +2n−2 Abn−2 +…+2Ab1 + Ab0 =
=((…((0×2 + Abn−1)2 + Abn−2 )2 +…)2 + Ab1)2 + Ab0 =
= |
|
|
|
|
|
|
|
1 |
1 |
|
|
|
|
+Ab |
|
|
|
|
0 |
|
|
|
|
0 |
|||||
|
|
|
|
|
|
|
Ab |
|
|
|
|
|
|
|
|
|
|
… |
|
|
|
1+ |
1 n–1 |
+Abn–2 +… |
+Ab1 |
|
|
||
|
|
|
|
|
|
|
|
1 |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вычисления начинаются с внутренней вложенной скобки, т. е. с добавления к накапливаемой сумме старшего частичного произведения Abn–1. Далее накапливаемая сумма сдвигается и к ней прибавляется следующее частичное произведение.
61
Схема алгоритма умножения старшими разрядами вперед со сдвигом суммы. Схема представлена на рис. 7.4. В начале задаются н. у. и накапливаемой сумме присваивается нулевое значение. Каждая итерация
–цикла алгоритма умножения предусматривает операцию арифметического сдвига и сложения на двоичном сумматоре. Операция сложения выполняется всегда, даже если bi = 0. Всего в цикле выполняется
×n итераций.
Фактически на первой итерации сдвиг нетребуется,ноонвключен,чтобывсеитерации цикла в алгоритме были одинаковыми. Это упрощает реализацию УУ.
Схема устройства умножения. Схема при-
ведена на рис. 7.5. Разрядность операндов равна n; разрядности сумматора ∑ и сдвигающего регистра суммы Rg∑← равны 2n; разрядности RgA и сдвигающего регистра RgB→ равны n. В сдвигающем регистре Rg∑← выполняется арифметический сдвиг
влево, в RgB→ – произвольный сдвиг влево.
Вначале УУ задает начальные установки в регистры (элементы памяти). Затем в Rg∑← записывается 0; в RgA – разряды множимого A[n–1..0]. В регистр RgB← загружается множитель B[n–1..0].
Регистр Rg∑← в данной структуре должен сдвинуть записанную в него сумму, а затем записать сумму, полученную в сумматоре. Следует отметить, что выполнить и запись, и сдвиг за один такт можно только за счет структурного сдвига.
Одна итерация цикла алгоритма реализуется за два такта. На нечетном такте работы УУ выдает команду «сдвинуть» на Rg∑. На четном такте работы УУ анализирует состояние старшего разряда RgB← и выдает на управляемый сумматор команду сложения с содержимым RgA (bi = 1) или команду сложения с нулем
62
(bi = 0, пустое сложение). На RgB← выдается команда «сдвинуть», на Rg∑– команда «записать».
Оценка быстродействия. На одну итерацию цикла работы приходится два такта. Длительность тактов одинакова, она определяется временем сложения и записи в Rg∑:
tц = (tΣ + tсдв); tумн = n (tΣ + tсдв).
Для выполнения операции сложения используется сумматор разрядности 2n. Вследствие того, что A[n–1..0], старшие разряды которого дополняются нулями, подается на младшие разряды сумматора, могут возникать переносы от самых младших разрядов сумматора к старшим разрядам. Таким образом, время суммирования 2nt∑1разр. В результате время умножения определяется как
tумн = ntц = 2n( 2nt∑1разр + tсдв) ≈ 4n2t∑1разр..
–
– –
–
–
Рис. 7.5. Структурная схема устройства умножения старшими разрядами вперед со сдвигом суммы
63
Рис. 7.6. Содержимое регистров умножителя старшими разрядами вперед со сдвигом суммы
Пример работы алгоритма. На рис. 7.6 показано потактовое представление содержимого регистров умножителя четырехразрядныхчиселприиспользованииалгоритмаумножениястаршими разрядами вперед со сдвигом суммы.
7.3. Умножение старшими разрядами вперед со сдвигом множимого
Математическая модель. В произведении A × B после раскрытия В побитно вынесем за скобки 2n и далее вычислим значение в скобках:
S=2n−1 Abn−1 +2n−2 Abn−2 +…+2Ab1 + Ab0 =
=2n (2−1 Abn−1 +2−2 Abn−2 +…+2−n+1 Ab1 +2−n Ab0 )=
|
A |
|
A |
|
A |
|
+ |
A |
b |
|
=2n |
b |
+ b |
+…+ b |
|
. |
|||||
|
1 |
n−1 |
2 |
n−2 |
n −1 |
1 |
|
0 |
|
|
|
|
|
|
|
n |
|
|
|||
Исходно имея несдвинутое значение А, после однократного сдвига множимого вправо можно получить старшее частичное
64
произведение Abn–1 и прибавить его к значению (с н. у. = 0), накапливаемому в сумматоре. Следующая операция арифметического сдвига множимого А на один разряд вправо позволит получить следующее частичное произведение Abn-2. Умножение на константу 2n игнорируется, поскольку легко достигается простым соответствующим обозначением разрядов произведения.
Алгоритм умножения старшими раз- рядами вперед со сдвигом множимого.
Всхеме на рис. 7.7, как и в других базовых алгоритмах,сначалазадаютсян.у.инакапливаемой сумме присваивается нулевое значение. Затем выполняется предварительный сдвиг А на один разряд вправо.
Всамом алгоритме необходимости выполнять этот сдвиг нет. Однако при рассмотрении структурной схемы видно, что его реализация позволяет выполнить одну итерацию цикла алгоритма за один такт. Каждая итерация цикла в алгоритме умножения предусматривает операцию сложениянадвоичномсумматореиоперацию сдвига. Операция сложения выполняется
всегда, даже если bi = 0. Всего выполняется n итераций.
–
×
Рис. 7.7. Схема алгоритма умножения старшими разрядами вперед со сдвигом множимого
Схема устройства умножения. На рис. 7.8 в показанной схе-
ме разрядность операндов – n; разрядность сумматора ∑, Rg∑, RgA→ – 2n; разрядность RgB← – n; RgB← и RgA→ – сдвигающие регистры. В RgA→ реализован арифметический сдвиг вправо,
вRgB← – произвольный сдвиг влево.
Вначале УУ задает начальные установки в регистры (элементы
памяти):вRg∑← записываетсяноль;вмладшиеn–1разрядовRgA→ загружается ноль; в старшие – разряды множимого {0, A[n–1..0]}
65
(множимое, сдвинутое на один разряд вправо); в регистр RgB← загружается множитель B[n–1..0].
На каждом такте работы УУ анализирует состояние старшего разряда RgB← и выдает на управляемый сумматор команду сложения с содержимым RgA→ (bi = 1) или команду сложения с нулем (bi =0,пустоесложение).НаRgA→ и RgB→ выдаетсякоманда«сдвинуть», на Rg∑ – команда «записать».
Оценка быстродействия. На одну итерацию цикла требуется один такт. Длительность такта определяется временем сложения и записи в Rg∑. Для n итераций цикла, где на одну итерацию цикла работы приходится один такт:
tц = (tΣ + tсдв); tумн = n (tΣ + tсдв).
Для выполнения операции сложения используется сумматор разрядности 2n. После n–1 сдвигов A[n–1..0] (старшие разряды
–
– –
–
–
Рис. 7.8. Структурная схема устройства умножения старшими разрядами вперед со сдвигом множимого
66
Рис. 7.9. Содержимое регистров умножителя старшими разрядами вперед со сдвигом множимого
при сдвиге заполняются нулями) располагается в младших разрядах сумматораи могутвозникать переносыот самыхмладшихразрядов сумматора к старшим разрядам. Следовательно, время суммирования составляет до 2nt∑1разр. В результате время умножения определяется как
tумн = ntц = n( 2nt∑1разр + tсдв) ≈ 2n2t∑1разр.
Пример работы алгоритма. На рис. 7.9 показано потактовое представление содержимого регистров умножителя четырехразрядныхчиселприиспользованииалгоритмаумножениястаршими разрядами вперед со сдвигом множимого.
7.4. Умножение младшими разрядами вперед со сдвигом суммы
Математическая модель. В данном случае при рассмотрении произведения A×B вынесем за скобки 2n и далее вычислим значение в скобках:
2n (2−1 Abn−1 +2−2 Abn−2 +…+2−n+1 Ab1 +2−n Ab0 )=
=2n (2−n Ab0 +2−n+1 Ab1 +…+2−2 Abn−2 +2−1 Abn−1)=
=2n ((((0 + Ab0 )2−1 + Ab1)2−1 +…+ Abn−2 )2−1 + Abn−1)2−1 =
67
|
|
|
|
|
1 |
1 |
|
|
… |
|
|
+ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
0 |
Ab |
+ Ab1 |
|
|
|
|
|
|
|
|
|
|
= 2n |
|
|
|
1 0 |
|
+ +Abn–2 |
|
|
|
Abn–1 |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
. |
|||||
|
|
|
|
|
|
1 |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Вычисления начинаются с внутренней вложенной скобки, т. е. с добавления к накапливаемой сумме младшего частичного произведения Ab0. Далее накапливаемая суммасдвигаетсяикнейприбавляетсяследующее частичное произведение.
Алгоритм умножения младшими разря-
×дами вперед со сдвигом суммы. В схеме на рис. 7.10 после задания н. у. на каждой итерации цикла предусмотрена операция сложения на двоичном сумматоре и операция сдвига. Операция сложения выполняется всегда, даже если bi = 0. Всего выполняется
Рис. 7.10. Схема алгоритма умножения младшими разрядами вперед со сдвигом суммы
n итераций.
Схема устройства умножения. В струк-
туре умножителя по рис. 7.11 разрядность операндов – n; разрядность сумматора ∑, RgA и RgB→ – n; разрядность Rg∑→ – n+1 (на сумматоре складываются n-разрядные числа); старший разряд не выводится, после сдвига в нем хранится ноль; RgB→ и Rg∑→ – сдвигающие регистры. В Rg∑→ выполняется арифметический сдвиг вправо, в RgB→ – неарифметический сдвиг вправо. В структуре устройства использована возможность записывать младшие разряды произведения в освобождающиеся при сдвиге разряды RgB→.
68
––
––
–
–
Рис. 7.11. Структурная схема устройства умножения младшими разрядами вперед со сдвигом суммы
Вначале УУ задает начальные установки в регистры (элементы памяти): в Rg∑→ записывается ноль; в RgA – разряды множимого A[n–1..0]. В регистр RgB→ загружается множитель B[n–1..0].
В этой структуре регистр Rg∑→ должен записать сумму, а затем сдвинуть записанную сумму. Выполнить и запись, и сдвиг за один тактможнотолькоприиспользованииструктурногосдвига.Вэтой схеме он не реализован.
Одна итерация цикла алгоритма выполняется за два такта. НанечетномтактеработыУУанализируетсостояниемладшего
разряда RgB→ и выдает на управляемый сумматор команду сложения с содержимым RgA (bi = 1) или команду сложения со значением ноль (bi = 0, пустое сложение), на Rg∑→ выдается команда «записать».НачетномтактеработыУУвыдаеткоманду«сдвинуть» в Rg∑→ и RgB→. После сдвига в старшем n-м разряде оказывается записан ноль (временное переполнение исчезло).
69
Оценкабыстродействия.Наодинциклтребуетсядватакта.Длительность тактов одинакова и определяется временем сложения и записи в Rg∑→. Для n итераций:
tц = (tΣ + tсдв); tумн = n (tΣ + tсдв).
Для выполнения операции сложения используется сумматор разрядности n. Время суммирования составляет не более nt∑1разр.. В результате время умножения определяется следующим образом:
tумн = ntц = 2n( nt∑1разр + tсдв) ≈ 2n2t∑1разр.
Пример работы алгоритма. Потактовое представление содержимого регистров умножителя четырехразрядных чисел младшими разрядами вперед со сдвигом суммы (см. рис. 7.11) показано на рис. 7.12. Состояние RgA в процессе умножения не изменяется.
Рис. 7.12. Содержимое регистров умножителя младшими разрядами вперед со сдвигом суммы
70
