2005
НАУЧНЫЙ ВЕСТНИК МГТУГА серия Информатика. Прикладная математика
№ 92(10)
УДК 629.735.015:681.3
РАЗРЯДНО-ЧИСЛОВОЙ ЗНАКОПЕРЕМЕННЫЙ ДОПОЛНИТЕЛЬНЫЙ КОД ДЛЯ БЫСТРОГО ВЫПОЛНЕНИЯ ОПЕРАЦИЙ В ВЫЧИСЛИТЕЛЬНЫХ УСТРОЙСТВАХ РАДИОЛОКАЦИОННЫХ СИСТЕМ
Г.Г. КАЛИШ
Статья представлена доктором технических наук, профессором Подзинским В.А.
В работе обсуждается перспектива использования в вычислительных системах разрядно-числового знакопеременного дополнительного кода (РЗД-кода), обладающего свойством симметричности и дополнительности двоичнокодированных разрядов и чисел в целом при любых основаниях систем счисления. Приводятся схемы и методика быстрого выполнения основных арифметических операций.
В вычислительных системах числовое пространство обычно поделено на две равные части. Одна часть - для изображения положительных, другая - для отрицательных чисел. Каждое число, в зависимости от знака, расположено только в одном из двух пространств изображения: положительном или отрицательном. Подобное изображение, свойственное обычному дополнительному коду, следует отнести к классу числовых изображений. Но, помимо числовых, возможны и разрядно-числовые изображения, когда положительные и отрицательные числовые пространства предоставлены не только числам, но и разрядам чисел. Любой разряд, в этом случае, может быть положительным или отрицательным. Очевидно, что разрядные изображения в первую очередь следует рассмотреть на примере двоичнокодированных чисел с основанием системы счисления Р = 10, т.е. для десятичных чисел.
Разрядно-числовое изображение содержит набор из т изображений разрядов и одно общее изображение всего числа с весами разрядов Рг, где т - число десятичных разрядов, г -номер десятичного разряда. Для того, чтобы эффективно выполнялись арифметические операции, разряды чисел необходимо изображать обычным дополнительным кодом, но с искусственным исключением крайних избыточных значений, как положительных, так и отрицательных. Изображение в целом чисел и разрядов становятся при этом симметричными.
Разрядно-числовой знакопеременный дополнительный код (РЗД-код) обладает рядом преимуществ по сравнению с обычным числовым дополнительным кодом, например кодом 8421, из которых, прежде всего, следует отметить следующие.
1. Код удовлетворяет требованию дополнительности в разрядах.
2. Вне зависимости от основания системы счисления разряды кодируются одинаково, т.е. система изображения чисел универсальна.
3. Знаковый разряд увеличивает диапазон изображения чисел более чем в Р /2 раз, а не в два раза, как обычно.
4. Число возможных абсолютных значений цифр в разрядах сокращается вдвое, что особенно важно для эффективной организации умножения и деления.
5. Все разряды, включая знаковый, равноправны и участвуют в вычислениях по одному и тому же принятому алгоритму.
6. При Р Ф 24, q - целое, изображения в целом чисел и разрядов стали симметричными, т.е. одинаковыми по абсолютным значениям на правых границах положительных и левых границах отрицательных областей изображений.
7. Отпала необходимость в специальном механизме контроля выхода чисел за установленный диапазон их изображения. Таким механизмом стали служить выходной перенос из
старшего разряда и входной заем в тот же разряд чисел.
8. Изображения чисел РЗД-кодом по своим значениям на всем диапазоне равны значениям самих изображаемых чисел.
Вычисления в обычном числовом дополнительном коде [7] представляют собою некоторую модификацию вычислений по модулю Рт, где т - число разрядов. Данная модификация понятна из рис.1.
Рис. 1. Функции изображения чисел по модулю и числовым дополнительным кодом X - изображаемые числа; [X] - функции изображения чисел; Р - основание системы счисления; т - число Р-ричныхразрядов чисел; А - область изображения чисел по модулю 2Р”;
А1 - область изображения чисел обычным числовым дополнительным кодом
Суть модификации состоит в удвоении области изображения чисел, в ограничении области изображения диапазоном от - (Рт ) до (Рт - Р0) и в смещении нуля на середину области изображения. Помимо этого, арифметические операции должны выполняться с игнорированием выходных переносов из старшего разряда и входных заемов в те же разряды, с использованием специального механизма контроля выхода результатов операций за пределы левой или правой границ изображения чисел.
Очень важно, чтобы изображения разрядов РЗД-кода при любых основаниях систем счисления сохраняли бы свойство дополнительности. Данное свойство создает большие возможности для эффективной организации вычислений. Как ни странно, в широко распространенных арифметических и иных вычислительных устройствах используются такие системы изображения десятичных разрядов, которые свойством дополнительности не обладают.
Дополнительность изображения десятичных разрядов можно достичь весьма простым способом: положительным разрядам и нулю присвоить непосредственные их значения, а отрицательным - их дополнения до 24 = 16.
Двоичнокодированные десятичные разряды, в соответствии с приведенным правилом, должны принимать значения (таблица).
Таблица
-5Б -4Б -3Б -2Б -1Б 0Б 1Б 2Б 3Б 4Б 5Б
5 1 110 0В 110 1В 111 0В 111 1В 000 0В 000 1В 010В 00 011В 01 010 0В 010 1В
В таблице: Б - символ десятичных чисел, В - символ двоичных чисел.
В отличие от общепринятой системы изображения десятичных разрядов кодом прямого замещения 8421 , избыточные коды, не включенные в табл. 1, расположены не в конце, а в середине диапазона изображения разрядов. И этот принцип соблюдается для любого основания систем счисления Р. Коды разрядов чисел, таким образом, становятся одинаковыми для чисел с любым основанием Р. Скачкообразные переходы через границу между положительной и отрицательной областями изображения разрядов автоматически реализуются обычным для дополнительных кодов способом: игнорированием выходных переносов и входных заемов при выполнении арифметических операций.
Если результат сложения/вычитания в разрядах не выходит за пределы установленного диапазона их изображения, то никаких десятичных коррекций не требуется. Коррекция необходима тогда, когда результат вычисления в разряде выходит за установленный диапазон его изображения. Суть коррекции состоит в генерации выходного переноса/входного заема и в изменении из-за этого значений самого разряда в соответствии с приведенными ниже формулами:
С{ + Р (для положительного результата) или (1)
С^ + Р (для отрицательного результата).
Здесь С{, С{ - соответственно положительный, отрицательный результаты сложения/вычитания, Р - основание системы счисления в форме положительного значения, Р - то же основание, но в форме отрицательного значения. Для двоичнокодированных десятичных разрядов Р = 1010, Р = 0110. Выходные переносы генерируют компараторы СМР1 по условию >0101, а входные заемы - компараторы СМР2 по условию <1011.
Перенос из младшего разряда увеличивает значение данного разряда на одну дискретную единицу, используя для этого входной перенос основного сумматора БМ1. Заем в младший разряд, наоборот, уменьшает значение данного разряда на одну дискретную единицу, используя для этого специально введенную комбинационную схему декремента.
В соответствии с формулами (1) и изложенной логикой работы десятичного сумматора, специальная схема (СПК), в зависимости от наличия/отсутствия десятичных переносов/заемов, подключает ко второму входу корректирующего двоичного сумматора БМ2 одну из констант:
0, Р, Р.
На рис.2 представлена структура двух разрядов десятичного сумматора, предназначенного для работы с числами, изображенными РЗД-кодом. Здесь следует иметь в виду, что изменение основания системы счисления не приведет к существенному изменению схемы сумматора.
На рисунке: 8М1;,-БМ2; четырехразрядные сумматоры; СМР; - четырехразрядные схемы отношения (компараторы) на больше или меньше с константами; БЕС; - четырехразрядные комбинационные схемы декремента; СПК; - схемы подключения констант (для коррекций); аз; , Ьз; - положительные или отрицательные значения знаковых разрядов слагаемых.
Компараторы СМР1, выясняющие отношения >0101, действуют только при сложении двух положительных разрядов, а компараторы СМР2, выясняющие отношения <1011, - только двух отрицательных разрядов.
По сравнению с десятичными сумматорами, предназначенными для работы с обычным числовым дополнительным кодом, сумматор на рис.2 требует для реализации чуть больший объем аппаратуры. Но он обладает рядом отмеченных выше преимуществ. Особенно эффективен он при сложении мантисс вещественных чисел. Старший числовой разряд нормализованных мантисс всегда ненулевой, поэтому знак его всегда будет определять знак мантиссы и всего числа. Знак ненормализованного числа определяет знак ненулевого разряда мантиссы наибольшего веса, позиция которого не предсказуема. Поэтому в АЛУ следует вводить не обычную, а особую схему отношения с нулем, способную дополнительно выделять ненулевой разряд наибольшего веса.
А,
В,
|р, нн
р
тет^
БЕС,
0101
к
ЬНх^А больше
1011 1__________ь
С',
меньше
Р1+А+1
п
СПК, |
\ 8М2, /
| с,
А,
1+1
+1
трасту
-|-Р1+1 у
I
Е
БЕС
0101
к.
аз,
2з1_)
1011 1__________1_
\СМр2„1~/Г
Р1+2 е1+2
С',
,+1
112
СПК,+
I
\ зМ2,+1 / |с,+1
Рис. 2. Схема двух разрядов десятичного сумматора для работы с числами, представленными разрядно-числовым знакопеременным дополнительным кодом
Как было отмечено, сумматоры и схемы декремента не вырабатывают межразрядные десятичные переносы и заемы. Эти функции выполняют простейшие компараторы СМР1 и СМР2, определяющие отношения с константами и представляющие собою фактически одноступенчатые логические схемы для вычисления двух функций рг+1, ег+1. .
Рг +1 = а31Ь31С31С11 V а3гЬ3гС2гС1г; et+1 = а3гЬ3гС3гС2г V а3гЬ3гС3гС1гС0г.. "(2)
Здесь а3г, Ь3г - старшие знаковые двоичные разряды РЗД-кода слагаемых Аг, Д.; с3г, еъ, с1г,с0г - двоичные разряды РЗД-кода предварительных сумм С'.
Схема подклюючения констант (СПК, рис.2) также простая. Разряды корректирующего кода на входах БМ2 , ё1{, ё0г вычисляются по формулам:
43г = е. ,ё2г = Рг , 41г = Рг V ег , 40г = 0............. (3)
Схемотехника сумматоров/вычитателей для РЗД-кодов позволяет простыми средствами реализовать ускоренный перенос/заем в десятичных разрядах с задержкой не более чем на два схемных элемента. Аппаратура при этом увеличится только на организацию ускоренных двоичных переносов/заемов в основных сумматорах и в схемах декремента.
Искусственно созданная симметричность РЗД-кода привела к неоднозначности изображения граничных значений плюс пять и минус пять в десятичных разрядах. В сочетании, например, с соседним старшим незначащим разрядом оба эти значения могут быть представлены в двух вариантах: 05 = 15 и 05 = 15 (отрицательный знак обозначен над цифрой). Это, конечно, вызывает некоторые неудобства при работе с РЗД-кодами. Но свойство полной симметричности изображения положительных и отрицательных разрядов гораздо важнее. Здесь также следует иметь в виду недопустимый рост несимметричности РЗД-кода по сравнению с обычным числовым дополнительным кодом, если исключить из области изображения разрядов гра-
ничное значение плюс пять. Тогда положительные числа могут быть не более 444...44, а отрицательные - не менее 5 5 5...5 5 = -555...55 . Понятно, что вся область изображения чисел для положительных и отрицательных чисел будет поделена далеко не поровну.
Двоичнокодированные знакопеременные изображения разрядов для чисел с нечетным основанием систем счисления всегда симметричны и однозначны по определению. Например, числа с основанием Р = 5 могут принимать в разрядах любое из пяти значений: 2,1,0,1,2, и неоднозначности изображения чисел не будет. Минимальное основание системы счисления для РЗД-кодов Р = 3 .
Другая особенность присуща РЗД-кодам с основанием Р = 2q, q - целое. Если, например, Р = 16, q = 4, то данный разрядно-числовой код не может быть симметричным, т.к. изображение положительной цифры восемь в нем не существует.
В симметричных разрядных дополнительных кодах каждой положительной цифре соответствует такая же цифра в отрицательной области, поэтому процедура изменения знака числа при таком изображении простая: чтобы изменить знак числа, достаточно во всех разрядах взять их дополнения до 2я. Для реализации данной процедуры необходимо во все разряды ввести параллельно действующие четырехразрядные комбинационные схемы взятия дополнений, которые могут быть такими же быстрыми, как сумматоры и схемы декремента.
Десятичные разряды РЗД-кода изображены обычным двоичным дополнительным кодом со знаковым разрядом, поэтому изображение всего числа расположено не только в положительной, но и в такой же по размеру отрицательной области, что, конечно, не обычно. Данное обстоятельство привело, в конце концов, к тому, что значения чисел в области изображения стали равными значениям самих изображаемых чисел. Сравнивать по значениям РЗД-коды любого знака между собою и с исходными числами без каких-либо промежуточных преобразований довольно просто. Например, числу - 342 соответствует РЗД-код 342; числу 175 - РЗД-коды 235 или 225 .
Как выше было отмечено, РЗД-код существенно сокращает объем аппаратуры для умножения и ускоряет время выполнения данной операции, вплоть до одного системного такта. Причина тому - сокращение почти вдвое возможных абсолютных значений разрядов и симметричность их изображения. РЗД-код как бы создан для быстрого умножения. Он не требует особой предварительной подготовки сомножителей перед умножением. Но все же операция быстрого умножения десятичных чисел довольно сложная и требует специального рассмотрения. Рассмотрим три примера на сложение и вычитание.
Пример 1
175+328=503
Пример 2
311-456=-145
+0010
0011
_Д101 +0101 0011 1110
0011
0001
____ 0001
+ + +
1011 0100 0100
_0101 _0000 _ 0011 0000 0000 0000
1110 0101 _ 0101 -0000 -0000 - 0000
+0101 +)000 +0011
0000 0000 0000
+1110 +)101 +0101 0000 0000 0000
Пример 3
365+373=738 0100 1100 0101 + + + 0100 1101 0011
1000 _1010 _1000 “0001 0000 0000
0111 1010 +1000 + + +
0110 1010 0110
+0101 +)000 +0011 1110 0101 0101 ^1101 0100 1110
Комментарии к примерам.
1. Первое сложение - основное сложение с учетом возникающих между десятичными разрядами переносов.
2. Вычитание - учет возникающих между десятичными разрядами заемов.
3. Второе сложение - сложение с константами коррекции плюс десять (+1010) или минус десять (+0110).
4. В примерах 1 и 2 коррекций не потребовалось.
5. В третьем примере старший десятичный разряд результата неверный из-за нарушения правого положительного предела 555, о чем свидетельствует выходной перенос из этого разряда.
6. Во втором примере вычитание заменено сложением, для чего значения десятичных разрядов вычитаемого заменены их дополнениями до 16-ти.
Вычислительные системы общего назначения предназначены для решения групп задач двух направлений: прикладном и математическом. Прикладным задачам необходимы большие объёмы памяти и развитая система взаимодействия объектов и результатов вычислений. Математическим задачам прежде всего необходимы повышенная точность и увеличенная скорость вычислений, т. е. нечто другое. Последнее обстоятельство предопределило появление в вычислительных системах (ВС) структурно выделенных специальных процессоров для высокоточных вычислений, взаимодействующих с остальными устройствами ВС. Пример такого высокоточного процессора - FPU в микропроцессорных системах фирмы Intel.
Новые по архитектуре многопотоковые вычислительные системы (МПВС), ориентированные на параллельное, без прерываний, решение множества задач, идеально подходят для организации в одном или в нескольких их исполнительных процессорных каналах (ИПК) быстрых высокоточных вычислений. Любой процессорный канал в МПВС содержит все необходимые программные и аппаратурные ресурсы для независимого решения задач, и имеет средства для эффективного взаимодействия с другими процессорными каналами разного типа и назначения. Поэтому в МПВС допустима специализация ИПК по составу и содержанию исполняемых им команд, а также по размеру и способу изображения операндов. Очевидно, что наилучшая организация быстрых и высокоточных вычислений в исполнительных процессорных каналах МПВС может быть достигнута только при выполнении операций непосредственно с вещественными десятичными числами, изображенными РЗД-кодом.
МПВС, содержащие ИПК на РЗД-кодах, перспективны во многих управляющих вычислительных системах. В частности, такие МПВС могут входить в состав радиолокационных средств обнаружения, наблюдения и сопровождения движущихся объектов, в которых они способны одновременно выполнять в реальном масштабе времени все возложенные на них задачи по множеству объектов непосредственно в десятичной системе счисления.
Архитектура МПВС достаточно подробно изложена в [1-7].
Заключение
Вопреки сложившемуся мнению, арифметические операции непосредственно с двоично-кодированными десятичными числами вполне реализуемы и не требуют особых аппаратурных затрат. Более того, можно эффективно использовать уменьшение числа кодовых комбинаций в десятичных разрядах для сокращения времени выполнения умножений и делений. Особую положительную роль в этом может сыграть разрядно-числовой дополнительный код со знакопеременными десятичными разрядами (РЗД-код). Он не только обеспечивает дополнительное сокращение аппаратуры и времени выполнения арифметических операций с десятичными числами в АЛУ, но и увеличивает в пять раз диапазон изображения десятичных чисел в вычислительных системах. Особо удобен РЗЛ-код для изображения десятичных мантисс вещественных чисел, в связи с их нормализованностью.
Новые по архитектуре многопотоковые вычислительные системы, содержащие процессорные каналы на РЗД-кодах, перспективны по многим своим качествам и характеристикам. На их основе могут быть созданы высокоточные и высокопроизводительные управляющие системы различного назначения, в том числе для радиолокационных средств обнаружения, наблюде-
ния и сопровождения множества объектов с целью их параллельной обработки на фоне одновременного решения множества других задач.
ЛИТЕРАТУРА
1. Жемчужникова Т.Н., Калиш Г.Г., Смирнов Н.А. Потоковые вычислительные системы, управляемые данными и состояниями. Межканальный интерфейс. КОМПЬЮ ЛОГ. Мой компьютерный журнал. №3 (45). Май-июнь. 2001.
2. Жемчужникова Т.Н., Калиш Г.Г., Смирнов Н.А., Тювин Ю.Д. Потоковые вычислительные системы, управляемые данными и состояниями. Новые архитектурные решения. КОМПЬЮ ЛОГ. Мой компьютерный журнал. №4 (46) Июль-август. 2001.
3. Жемчужникова Т.Н., Калиш Г.Г., Тювин Ю.Д. Потоковые вычислительные системы, управляемые данными и состояниями. Множественное процессирование на уровне команд. КОМПЬЮ ЛОГ. Мой компьютерный журнал. №5-6 (47-48). 2001.
4. Калиш Г.Г., Смирнов Н.А. Потоковые вычислительные системы, управляемые данными и состояниями. Операции со структурированными операндами. КОМПЬЮ ЛОГ. Мой компьютерный журнал. №1. 2002.
5. Калиш Г.Г. Потоковые вычислительные системы, управляемые данными и состояниями. Микропрограммное управление операциями над элементами структурированных операндов. КОМПЬЮ ЛОГ. Мой компьютерный журнал. №5. 2002.
6. Жемчужникова Т.Н., Калиш Г.Г. Потоковые вычислительные системы, управляемые данными и состояниями. Организация безусловных и условных передач управлений между командами. КОМПЬЮ ЛОГ. Мой компьютерный журнал. №5. 2002.
7. Калиш Г.Г. Основы вычислительной техники. - М.: Высшая школа. 2000.
DIGIT-DATA SIGN-ALTERNATIVE ADDITIONAL CODE FOR RADAR COMPUTING DEVICES
Kalish G.G.
The article examines the perspective of Digit-data Sign-alternative Code for computing systems and gives the schemes and methods for fast execution of basic arithmetic operations.
Сведения об авторе
Калиш Георгий Германович, 1925 г. р., окончил МВТУ им. Баумана (1950), доцент МИРЭА, автор более 20 научных работ, область научных интересов - вычислительные системы специального и общего назначения.