СХЕМОТЕХНИКА ЭВМ_18.2.17 (855859), страница 23
Текст из файла (страница 23)
В состав АЛУ входят регистры Рег. А, Рег. В, Рег. С и Рег. D, комбинационный сумматор SM, блок инвертирования ИНВ, блок выработки признаков результата(ПР) и Устройство управления(УУ).
Блок ПР вырабатывает признак результата вычисления φ. Это:
φ = (00) – результат положительный,
φ = (11) – результат отрицательный,
φ = (01) – результат нулевой,
φ = (10) – переполнение.
Регистры подсоединены к Шине данных (ШД) компьютера. На входы Устройства управления (УУ) подаются команды: K1 – "сложение", K2 – "вычитание".
Алгоритм работы АЛУ можно представить в форме псевдокода на VHDL (Русские имена регистров заменены на латинские).
If K = K1 then --сложение чисел
REG_A<=SHD; -- запись первого числа в регистр А
REG_B<=SHD; --запись второго числа в регистр В
SM <= A + B ; --сложение двух чисел
if FI /= “10” then – нет переполнения
REG_D <= SM; --запись результата в регистр D
SHD <= REG_D ;--передача результата на шину данных
end if; --при переполнении в УУ результат в память
--не передается
end if; --Таким образом, сложение двух чисел в АЛУ выполняется за 5 машинных тактов.
Else --программа вычитания чисел имеет следующий вид:
If K = K2 then
REG_A<= SHD; -- запись первого числа в регистр А
REG_B<= SHD; --запись второго числа в регистр В
REG_C<= not B; --запись инвертированного числа В в регистр С
SM <=REG_ A + REG_C +1; --вычитание в дополнительном коде
if FI = “10” then – нет переполнения
REG_D <= SM; --запись результата в регистр D
SHD <= REG_D ;--передача результата на шину данных
end if; --при переполнении в УУ результат в память
--не передается
end if; --Таким образом, вычитание двух чисел в АЛУ выполняется за 7 машинных тактов
.
Алгоритмы управления сигналами,поступающими на регистры для выполнения операций сложения и вычитания реализованы в Устройстве управления АЛУ, которое является конечным автоматом со схемной или программированной логикой.
7.5. АЛУ для умножения чисел с фиксированной запятой
7.5.1. Методы умножения чисел
1. Умножение целых чисел, начиная с младших разрядов со сдвигом множимого влево при неподвижной сумме частичных произведений.
Пример
1011 → 1110 – множимое
*
1101 → 1310 – множитель
1011 – умножение множимого на левую единицу
0000 – умножение на 0 во 2-м разряде
01011 – сумма частичных произведений
1011 – умножение на 1 в 3-м разряде
110111 – сумма частичных произведений
1011 – умножение на 1 в 4-м разряде
10001111 – сумма частичных произведений – результат = 14310
Структура аппаратной реализации этого алгоритма умножения показана на следующем рисунке [не информативное представление рисунка]
Рис. 7.2. Умножение со сдвигом множимого влево
АЛУ для умножения содержит три регистра: регистр А для множимого, регистр В для множителя и регистр С для сумм частичных произведений. Разрядность регистра В равна разрядности числа (n), разрядности регистров А и С – 2n. В состав регистра С входит комбинационный сумматор.
Умножение проводится за n тактов. На каждом такте число в регистре А сдвигается влево на один разряд. Если в соответствующем разряде числа множителя (регистр В) единица, то число из регистра А передается в регистр С и складывается с суммой частичных произведений. Иначе число из регистра А в регистр С не передается. Результат получается в регистре С.
2. Умножение целых чисел, начиная с младших разрядов со сдвигом вправо сумм частичных произведений при неподвижном множителе.
Пример
1011 → 1110 – множимое
*
1101 → 1310 – множитель
1011 – умножение множимого на левую единицу
0000 – умножение на 0 во 2-м разряде
→ → 1011 – сумма частичных произведений
1011 – умножение на 1 в 3-м разряде
→ 110111 – сумма частичных произведений
1011 – умножение на 1 в 4-м разряде
10001111 – сумма частичных произведений = 14310
Структура аппаратной реализации этого алгоритма умножения показана на следующем рисунке [не информативное представление рисунка]
Рис. 7.3. Умножение со сдвигом частичного произведения вправо
Разрядности регистров А и В равна разрядности числа (n), разрядности регистра С – 2n. В состав регистра С входит комбинационный сумматор.
Умножение проводится за n тактов, начиная с младшего разряда множителя. На каждом такте число в регистре С сдвигается вправо на один разряд. Если в соответствующем разряде числа множителя (регистр В) единица, то число из регистра А передается в регистр С и складывается с частичным произведением. Иначе число из регистра А в регистр С не передается. Результат умножения получается в регистре С.
Экономная реализация этого метода умножения получается в случае, когда множитель на каждом такте сдвигается на разряд вправо ("отработанные" младшие разряды множителя пропадают). В освободившиеся разряды регистра В записываются младшие разряды суммы частных произведений. В этом случае все три регистра А, В и С имеют разрядность n.
3. Умножение, начиная со старших разрядов множителя со сдвигом суммы частичных произведений влево при неподвижном множителе
Пример
1011 → 1110 – множимое[очень хороший пример]
*
1101 → 1310 – множитель
1011 – умножение на 1 в 4-м разряде – частичное произв.
← 1011 – сдвиг частичного произведения влево
1011 – множимое – умножение на 1 в 3-м разряде
100001 – сумма частичных произведений
← ← 100001 – сдвиг суммы частичных произведений влево
1011 – множимое – умножение на 1 в 1-м разряде
10001111 – частичное произведение – результат = 14310
Структура Аппаратной реализации этого алгоритма умножения показана на следующем рисунке [не информативное представление рисунка]
Рис. 7.4. Умножение со сдвигом частичного произведения влево
Разрядности регистров А и В равна разрядности числа (n), разрядности регистра С – 2n. В состав регистра С входит комбинационный сумматор.
Умножение проводится за n тактов, начиная со старшего разряда множителя. На каждом такте число в регистре С сдвигается влево на один разряд. Если в соответствующем разряде числа множителя (регистр В) единица, то число из регистра А передается в регистр С и складывается с суммой частичных произведений. Иначе число из регистра А в регистр С не передается. Результат умножения получается в регистре С.
Удачная реализация этого метода умножения получается в случае, когда множитель на каждом такте сдвигается на разряд влево ("отработанные" старшие разряды множителя пропадают). В освободившиеся разряды регистра В записываются старшие разряды суммы частных произведений. В этом случае все три регистра А, В и С имеют разрядность n.
4. Умножение, начиная со старшего разряда множителя, со сдвигом вправо множимого и неподвижным частичным произведением.
Пример
1011 → 1110 – множимое
*
1101 → 1310 – множитель
1011 – умножение на 1 в 4-м разряде – частичное произв.
→ 1011 – сдвиг множимого вправо
100001 – сумма частичных произведений в 3-м разряде
→ 1011 – сдвиг множимого вправо на 2 разряда
10001111 – сумма частичных произведений = 14310
Структура Аппаратной реализации этого алгоритма умножения показана на следующем рисунке
Рис. 7.5. Умножение со сдвигом множимого вправо
Разрядности регистра А равна разрядности числа (n), разрядности регистров А и С – 2n. В состав регистра С входит комбинационный сумматор.
Умножение проводится за n тактов, начиная со старшего разряда множителя. На каждом такте число в регистре А сдвигается вправо на один разряд. Если в соответствующем разряде числа множителя (регистр В) единица, то число из регистра А передается в регистр С и складывается с суммой частичных произведений. Иначе число из регистра А в регистр С не передается. Результат умножения получается в регистре С.
Удачная реализация этого метода умножения получается в случае, когда множитель на каждом такте сдвигается на разряд влево ("отработанные" старшие разряды множителя пропадают). В освободившиеся разряды регистра В записываются старшие разряды суммы частных произведений. В этом случае регистры В и С имеют разрядность n.
7.5.2. Функциональная схема АЛУ для умножения целых чисел.
Функциональная схема АЛУ для умножения чисел с фиксированной запятой, начиная с младших разрядов со сдвигом вправо сумм частичных произведений при неподвижном множителе, представлена на следующем рисунке.
Рис. 7.6. АЛУ для умножения чисел с фиксированной запятой
Число – множимое с шины данных записывается в регистр А, а число – множитель – в регистр В. Сумма частичных произведений с выхода сумматора SM записывается в регистр С. Регистры С и В образуют единый регистр сдвига вправо, в котором младший разряд C[0] переписывается в старший разряд B[n]. Регистр D служит для промежуточного хранения содержимого регистра С, что предотвращает гонки при работе АЛУ.
-
Множимое и множитель записываются в регистры А и В в прямых кодах со знаком. Регистры C и D обнуляются. В счетчик, находящийся в Устройстве управления, записывается число циклов, необходимых для умножения двух чисел.
-
Если младший разряд множителя B[0] = 1, то к сумме частичных произведений в регистре С прибавляется модуль множимого из регистра А. Если B[0] = 0, то число в регистре С не изменяется.
-
Число в регистрах С и В сдвигается вправо на один разряд. При этом в младший разряд B[0] записывается очередная цифра числа - множителя, которая определяет процесс формирования суммы частичных произведений.
-
После (n – 1) циклов процесс умножения чисел по модулю заканчивается. Производится дополнительный сдвиг суммы частичных произведений вправо, при этом в B[0] появляется старший (знаковый) разряд множителя. Знаковый разряд множимого A[n] и знаковый разряд множителя B[0] поступают на логический элемент "Исключающее ИЛИ", на выходе которого образуется число, определяющее знак произведения (если знаки множителя и множимого совпадают, то знак произведения "+", иначе знак "–").
-
Результат умножения двух чисел образуется в регистрах С и В (В регистре С находятся старшие разряды произведения, в регистре В – младшие разряды). Произведение передается из этих регистров на шину данных.
Блок признаков ПР вырабатывает признаки результата операции.
Это:
φ = (00) – результат положительный,
φ = (11) – результат отрицательный,
φ = (01) – результат нулевой,
Алгоритм умножения двух целых чисел имеет следующий вид:
(K3 – команда умножения, CT – счетчик циклов в УУ)