№ п/п | Наименование МО, условия ее выполнения и представление в операторах присваивания | Признаки, вырабатываемые в результате выполнения МО и комментарии |
1 | Запись исходных чисел в регистры мантисс и порядков ОА: - числа в прямом коде (модули чисел) РСМм(0/n):=|Mx(0/n)|, Р2м(0/n-1):=|Mx(n+1/2n)|, Р1м:=[My], РСМp:=[Px]2, Р1p:=[Py]2; - числа в дополнительном коде РСМм(0/n):=[Mx(0/n)]2, Р2м(0/n-1):=[Mx(n+1/2n)]2, Р1м:=[My]2, РСМn:=[Px]2 ,Р1n:=[Py]2 | Мантиссы делимого располагаются так, чтобы старший разряд мантиссы располагался в старшем разряде РСМ после кода знака делимого. Для чисел в прямом коде в знаковые разряды регистров устанавливаются нули |
2 | Проверка исходных чисел на нуль | Осуществляется так же как и для чисел с фиксированной точкой |
3 | Пробное вычитание (сложение) для анализа на переполнение выполняется так же как и для деления двоичных чисел с фиксированной точкой | При наличии переполнения для чисел с плавающей точкой осуществляется восстановление мантиссы делимого с последующей ее денормализацией |
Продолжение табл. 6
№ п/п | Наименование МО, условия ее выполнения и представление в операторах присваивания | Признаки, вырабатываемые в результате выполнения МО и комментарии |
4 | Восстановление мантиссы делимого после пробного вычитания (сложения) при РСМ(0)1=x0. Для этой цели в сумматоре выполняется: - сложение, если при анализе на переполнение выполнялось вычитание РСМм:=РСМ(0)1+P1м; - вычитание, если при анализе на переполнение выполнялось сложение | При отсутствии переполнения формируется код знака частного для чисел в дополнительном коде и осуществляется сдвиг в РСМ и Р2 после чего начинаются такты деления чисел обоих кодов |
5 | Денормализация мантиссы делимого после анализа на переполнение производится при РСМ(0)1=x0 сдвигом мантиссы Mx вправо на 1 разряд и увеличением порядка Px на единицу P¢x=Px+1; M¢x:=ARS(Mx,1); РСМp:=РСМp+1 | Знак мантиссы делимого после сдвига сохраняется, так как сдвиг арифметический |
Продолжение табл. 6
№ п/п | Наименование МО, условия ее выполнения и представление в операторах присваивания | Признаки, вырабатываемые в результате выполнения МО и комментарии |
6 | Деление мантисс после анализа на переполнение осуществляется по алгоритму деления чисел с фиксированной точкой (для p=0); при этом необходимо иметь в виду, что при наличии переполнения деление мантисс может производиться только после восстановления мантиссы делимого и ее денормализации Mz:=M¢x/My | Если переполнение имело место, то код знака частного для мантисс в дополнительном коде может сформироваться только в результате первого такта деления, выполняемого после денормализации делимого. В результате деления нор-мализованных мантисс и в случае деления денормали-зованных мантисс результат деления представляется в нормализованном виде |
Продолжение табл. 6
№ п/п | Наименование МО, условия ее выполнения и представление в операторах присваивания | Признаки, вырабатываемые в результате выполнения МО и комментарии |
7 | Определение кода знака частного и его запись в регистр частного. Если переполнения не было, то определение кода знака частного и его запись в регистр Р2 производится так же как и для чисел с фиксированной точкой. Если переполнение было, то код знака частного для мантисс в дополнительном коде определяется только в результате первого такта деления мантисс после денормализации делимого. Запись кода знака частного в младший разряд регистра Р2 при наличии переполнения осуществляется только после первого такта деления Р2(n):=z0 | Для чисел в прямом коде наличие сигнала переполнения не влияет на определение кода знака частного, так как он определяется по формуле z0=x0 Å y0 |
8 | Восстановление последнего остатка делимого и коррекция частного | Производится так же как и при делении чисел с фиксированной точкой |
Продолжение табл. 6
№ п/п | Наименование МО, условия ее выполнения и представление в операторах присваивания | Признаки, вырабатываемые в результате выполнения МО и комментарии |
9 | Определение порядка результата с учетом возможной денормализации делимого Pz=P¢x-Py | Возможны особые случаи: - при Pz > Pmax.доп. вырабатывается сигнал переполнения порядка ОV=1; - при Pz < Pmin.доп. вырабатывается сигнал антипереполнения Uп=1 |
На рис. 4 для примера представлен фрагмент ГСА операции сложения двоичных чисел с плавающей точкой - сложение мантисс после выравнивания порядков слагаемых и нормализация результата сложения. Для этого фрагмента ГСА в целях его завершенности предполагается, что начальному оператору соответствует размещение результатов выполненных микроопераций выравнивания порядков слагаемых в регистрах РСМм и Р1м, а конечному оператору - микрооперации записи результатов сложения в ОЗУ. Во фрагменте ГСА использованы два возможных способа записи логических условий: в первом случае значение сигнала переполнения разрядной сетки мантисс V, равное единице, свидетельствует о нарушении нормализации результата сложения мантисс влево; во втором случае условие нарушения нормализации результата сложения мантисс вправо записано в виде отношения HR = 0, при его ложности производится нормализация мантиссы результата влево.
Рис. 4 Фрагмент ГСА операции сложения чисел с плавающей точкой
1.3 Операционный автомат с магистральной структурой
На рис. 5 приведена структура операционого автомата c магистральной структурой.
Рис. 5 Структура операционного автомата с магистральной структурой
Операционный автомат включает:
– блок из 8-ми регистров общего назначения Р0 - Р7, предназначенных для хранения промежуточных результатов;
– регистр адреса РА, определяющий адрес оперативной памяти при чтении и записи данных;
– регистр аккумулятор АС, хранящий один из операндов или результат выполнения микрооперации;
– арифметико-логическое устройство АЛУ, в котором выполняются заданные микрооперации;
– регистр признаков РП, хранящий признаки выполненной микрооперации.
Все регистры операционного автомата 8-ми разрядные. В табл 7 приведен состав микроопераций Мj их 8-ми разрядная кодировка, а также описаны действия выполняемые каждой из них.
Таблица 7
Состав микроопераций
N | Код микрооперации | Действие |
п/п | м8 м7 м6 м5 м4 м3 м2 м1 | |
1 | 0000 0000 | АС = РА |
2 | 0000 0001 | РА = РА + АС |
3 | 0000 0010 | Арифметический сдвиг вправо АС |
4 | 0000 0011 | Арифметический сдвиг вправо Р7 |
5 | 0000 0100 | Циклический сдвиг вправо АС |
6 | 0000 0101 | Циклический сдвиг вправо Р7 |
7 | 0000 0110 | Арифметический сдвиг влево АС |
8 | 0000 0111 | Арифметический сдвиг влево Р7 |
9 | 0000 1000 | Циклический сдвиг влево АС |
10 | 0000 1001 | Циклический сдвиг влево Р7 |
11 | 0000 1010 | Пустая микрокоманда (NOP ) |
12 | 0000 1011 | Стоп |
13 | 0000 1100 | П(РА) = АС, запись в память содержимого аккумулятора по адресу в регистре РА |
14 | 0000 1101 | АС = П(РА), чтение в аккумулятор из памяти по адресу в регистре РА |
15 | 0000 1110 | АС => Стек |
16 | 0000 1111 | АС <= Стек |
Продолжение табл.7