Контрольная работа: Особенности арифметико-логических устройств (АЛУ) с двоично-десятичными кодами (ДДК) при вычислении операций умножения и деления и поиск путей их ускорения
В Рг1 размещается делитель, а в РгВ и Рг2-делимое. В триггерах знака сохраняются знаки операндов. Регистр 3 используется для размещения цифр частного. Общая схема алгоритма:
1.Берутся модули от операндов, которые размещаются в регистрах.
2.Делимое - на 1 разряд, для этого регистр А обнуляется и содержимое передается в регистр сумматора со сдвигом - на один разряд.В освободившийся младший разряд сумматора записывается младший разряд из регистра 2. После этого содержимое регистра сумматора записывается в регистр В. одновременно разряды регистра 2, кроме старшего, передаются в Рг2’ со сдвигом - на 1 разряд и затем в регистр 2.
3.выполняется получение значения частичных разностей путем сложения содержимого регистра В и обратного кода делителя из регистра А. Выполняется добавление 1 к младшему разряду сумматора для получения дополнительного кода делителя.
4.Если 0-й разряд регистра сумматора>0, то цифра Zi, заносимая в младший разряд регистра 3’=1. Содержимое регистра 3’ передается в регистр 3. При очередном получении частичных (текущих?)разностей содержимое регистра 3 передается в 3’ со сдвигом - на 1 разряд.
Счетчик циклов содержит количество цифровых разрядов частного. После получения очередной цифры частного значение счетчика уменьшается на 1. При достижении 0 операция заканчивается. Если в процессе получения частичных разностей текущее значение в регистре сумматора <0, то в качестве цифры Zi заносится 0, а предыдущее значение частичных разностей восстанавливается(оно хранилось в регистре В) и сдвигается - на 1 разряд; с занесением из регистра 2 очередной цифры делимого в младший разряд регистра сумматора при обнулении регистра А. Затем производится передача полученного значения текущей разности в регистр В.
В регистре В производится сдвиг - оставшейся части делимого для последующих операций.
Рассмотренный алгоритм предполагает при получении значения <0 частичного остатка его восстановление до предыдущего значения. Это требует дополнительного промежутка времени. Поэтому на практике используется алгоритм деления без восстановления остатка со сдвигаемым значением частичной разности и неподвижным делителем. Алгоритм:
1.Берутся модули от делимого и делителя.
2.Значение частичного остатка полагается равным старшим разрядам делимого
3.Значение частичного остатка удваивается путем сдвига - на 1 разряд.
4.Из значения частичных остатков вычитается делитель; если частичный остаток >0 !!!! то прибавляется делитель если <0!!!!
5.Цифра частного полагается =1, если после выполнения предыдущего шага частичные остатки >=0 и 0 в противном случае.
6.Пункты 3,4,5 выполняются до получения всех цифр частного.
7.Если в конце цикла частичный остаток <0 то он восстанавливается путем добавления делителя.
Знак частного =0, если знаки делимого и делителя совпадают, и 1 если они различны.
Содержание деления без восстановления остатков заключается в том, что при сдвиге - значение частичного остатка а удваивается 2а ,поэтому вычитание делителя эквивалентно 2а-в=2(а-в)+в его добавлению на следующем шаге.
Данный алгоритм может применяться и для деления целых операндов, представленных прямым кодом для положительных чисел и дополнительным кодом для отрицательных. При этом необходимо производить определение цифр частного в зависимости от соотношений знаков частичных остатков и делителя в соответствии со следующей таблицей:
Частичные остатки | Делитель | Операция | Цифра частного |
+ | + | Вычитание Y | 1 |
+ | - | Добавление Y | 0 |
- | + | Добавление Y | 0 |
- | - | Вычитание Y | 1 |
Если x>0,a y<0 то частное следует увеличить на 1
Если x<0,a y>0 то частное следует увеличить на 1 в случае если остаток =0
Если x<0,a y<0 то частное следует увеличить на 1если остаток=0.
Построение АЛУ для выполнения операции умножения чисел с плавающей точкой
Правила умножения:
X=±qx*SPx
Y=±qy*SPy
Z=X*Y= ± qx* qy* SPx+Py = ± qz *SPz
T.o. qz= qx* qy ; Pz= Px+ Py ;
В соответствии с данными выражениями мантисса произведения равна произведению мантисс сомножителей.
Результат нормализуется. Знаку результата соответствует: