Правильная ссылка на эту страницу
http://az-design.ru/Support/HardWare/Weitek/D19830519Elc023.shtml

Арифметико-логическое устройство и умножитель для высокоскоростного выполнения операций с плавающей точкой согласно стандарту ИИЭР

УДК 621.3.049.771 14 681.3

Боб By (Bob Woo)
Фирма Weitek Corp. (Санта-Клара, шт. Калифорния)

Лайон Лин (Lyon Lin)
Фирма Weitek Corp. (Санта-Клара, шт. Калифорния)

Роберт Е. Оуэн (Robert E. Owen)
Фирма Weitek Corp. (Санта-Клара, шт. Калифорния)

Bob Woo, Lyon Lin, Robert E. Owen. ALU, multiplier chips zip through IEEE floating-point operations, pp. 121—126.

Описаны две сверхбольшие интегральные схемы фирмы Weitek Corp., предназначенные для выполнения больших объемов вычислений в таких приложениях, как обработка сейсмических данных, визуализация органов различными способами в медицине и имитационное моделирование. Новые приборы весьма перспективны также с точки зрения применения для управления в реальном масштабе времени и для обработки сигналов, где до сих пор вынужденно используется целочисленная арифметика.

Вычисления с плавающей точкой до сих пор осуществлялись главным образом на крупных компьютерах в режиме пакетной обработки, а сейчас они используются и на малых машинах для таких приложений, как обработка сейсмических данных, визуализация органов в медицине различными способами и имитационное моделирование. Однако разработчики систем, рассчитывающие на использование тех преимуществ, которые дают высокая точность и большой динамический диапазон вычислительных устройств с плавающей точкой, ранее были вынуждены применять либо быстродействующие, но дорогие матричные процессоры, либо дешевые, но низкоскоростные сопроцессоры — или даже создавать свои собственные специальные аппаратные подсистемы.

Однако сейчас появились привлекательные альтернативные возможности в виде двух интегральных микросхем (рис.1), способных выполнять 5 млн. 32-разрядных операций с плавающей точкой в секунду согласно стандартному формату, предложенному Институтом инженеров по электротехнике и радиоэлектронике (IEEE, ИИЭР) и получившему обозначение IEEE-754. Из обширного набора возможных арифметических операций наиболее часто в высокопроизводительных системах встречаются операции сложения, вычитания, умножения и преобразования чисел с плавающей точкой в целые. Новая пара приборов предусматривает реализацию именно этих операций с приблизительно равным функциональным распределением между умножителем и арифметико-логическим устройством. (Менее часто употребляемая операция деления с плавающей точкой при необходимости также может выполняться умножителем и АЛУ по двух-шаговому алгоритму.)


Рис.1. Однокристальный умножитель WTL1032 (а), изготовляемый по стандартной n-канальной МОП-технологии с 3-мкм топологическими нормами, имеет размер около 7,6*7,4 мм и выполняет 5 млн. умножений чисел с плавающей точкой в секунду. Работающий совместно с ним прибор, арифметико-логическое устройство WTL1033 (б), имеет размер около 7,7*5,7 мм и выполняет операции сложения и вычитания с такой же скоростью. Мощность рассеяния каждого кристалла составляет всего лишь около 1,5 Вт.

Умножитель WTL1032 и АЛУ WTL1033 изготавливаются по стандартной технологии п-канальных МОП-схем с 3-мкм топологическими нормами и размещаются на кристаллах размером приблизительно 7,6*7,4 и 7,7*5,7 мм соответственно. Таким образом, эти кристаллы имеют меньший размер, чем кристаллы большинства сопроцессоров с плавающей точкой, что обеспечивает высокий процент выхода годных при производстве серийных микросхем, а не только выставочных образцов, предназначенных для привлечения пользователей. Что касается других практических соображений, то каждый кристалл характеризуется малой мощностью рассеяния (в среднем 1,5 Вт), что уменьшает требования к охлаждению и позволяет также применять более миниатюрные корпуса, например 68-контактный безвыводной носитель кристалла, в дополнение к обычному 64-контактному корпусу с двухрядным расположением выводов. Кроме того, оба прибора имеют одинаковое расположение выводов, что дает весьма ощутимые преимущества для топологического проектирования схемных плат, независимо от того включаются ли эти приборы параллельно или каскадно, как умножитель и накапливающий регистр.

Эти новые компоненты для выполнения вычислений с плавающей точкой и стандарт ИИЭР являются привлекательными не только для новых приложений, связанных с вычислениями с плавающей точкой, но также для более традиционных систем обработки сигналов и управления в реальном времени, в которых до сих пор приходилось ориентироваться на целочисленную арифметику. Для подобных приложений требуется также высокая точность вычислений — разрядность слова должна составлять от 20 до 24 бит, — чтобы обеспечить стабильность работы и высокое соотношение «сигнал/шум», возможное в случае цифровой обработки данных. Для нормальной работы подобных прикладных систем реального времени высокое быстродействие является, естественно, не просто желательным, но жизненно необходимым. Поэтому для обеспечения требуемой вычислительной мощности процессоры зачастую включаются параллельно или каскадируются.

Недостатки целочисленной арифметики

Сейчас в типичных системах реального времени динамический диапазон и точность представления параметров вынужденно ограничиваются из-за реализации на основе целочисленной арифметики. Кроме того, до сих пор существовали только 16-разрядные приборы, обладавшие достаточным быстродействием или предоставлявшие выгоды с точки зрения габаритов и стоимости, свойственные сверхбольшим интегральным схемам. Подобная ситуация приводит к серьезным потерям в скоростных характеристиках, причем дело усугубляется тем, что разработка подобных систем, как правило, начинается с моделирования на матричных процессорах с плавающей точкой.

Последующий перевод системы такого типа на производственную основу зачастую приводит к существенному увеличению времени проектирования и необходимости болезненной переработки алгоритмов, чтобы восстановить потери в скоростных характеристиках. Предусмотренный стандартом ИИЭР формат представления числа одинарной точности с плавающей точкой — с 24-разрядной мантиссой и 8-разрядным порядком, что соответствует динамическому диапазону свыше 1500 дБ, — удовлетворяет требованиям приложений реального времени с точки зрения точности и широты динамического диапазона.

Соответствие стандарту ИИЭР для всех приложений позволит улучшить транспортабельность работоспособных вариантов системы и ускорить появление реальных изделий. Правда, арифметические вычисления с плавающей точкой требуют большего числа операций и занимают больше времени; однако почти на всех системах диалогового типа и системах реального времени данные обрабатываются как векторы, так что можно использовать принцип конвейеризации, чтобы сохранить высокую скорость обработки данных, которая раньше достигалась благодаря целочисленной арифметике.

Требования стандарта

Хотя стандарт определяет полные требования по программированию, выбор распределения функций между аппаратными и программными средствами предоставляется специалисту, реализующему систему. Такие интегральные схемы, как 1032 и 1033, содержат только основные арифметические функциональные блоки, так что нельзя сказать, что они сами по себе соответствуют стандарту с точки зрения этих функций — они просто совместимы с ним. Тем не менее, чтобы реализовать стандарт в целом, они должны содержать дополнительные аппаратные блоки. Вообще говоря, термин «совместимость» означает использование предусмотренного стандартом формата, специальных величин, арифметических операций и способов обработки особых ситуаций или ошибок.

В формате, предусмотренном для представления 32-разрядных значений одинарной точности, определяется ряд величин (рис.2). Кроме нуля и уникальных представлений бесконечности со знаками плюс и минус стандарт определяет ряд двоичных кодов, которые вообще не представляют чисел. Подобное так называемое нечисло (NaN) может использоваться для передачи данных. Следует отметить, что самый старший двоичный разряд мантиссы — называемый скрытым разрядом, поскольку физически он не представляется, — всегда имеет значение 1, за исключением случая, когда представляется нулевое или ненормированное (либо с потерей значимости) число, — в этом случае скрытый разряд всегда имеет значение 0.

Наименование

Мнемоника

3начение

Порядок

Мантисса (S,F)

Не-число

NaN

Нет

255

Не все нули

бесконечность

IMF

(-1)знак(бесконечность)

255

Все нули

Нормализованное число

NOR

(-1)знак (1.S)2E-127

1-254

Любая

Ненормализованное число

DNOR

(-1)знак (0.S)2-126

0

Не все нули

Нуль

ZERO

(-1)знак 0.0

0

Нуль

Рис.2. Два кристалла, WTL1032 и 1033, обеспечивают выполнение операций с плавающей точкой и преобразований в представлении с фиксированной точкой. В соответствии со стандартом IEEE на выполнение операций одинарной точности с плавающей точкой здесь предусматривается пять основных объектов, в том числе специальные нечисловые величины.

Для всех значений, кроме не-чисел, предусмотрены арифметические операции. Последовательное выполнение арифметических операций над ненормированными числами приводит к постепенной потере значимости и к исчезновению результата. Все вычисления производятся с максимальной возможной точностью, а затем числовые результаты округляются до точности, предусмотренной форматом. Стандарт оговаривает даже способы округления и обработки представлений бесконечности. В каждом случае приводится способ по умолчанию, а также варианты, желательные для определенных приложений, например варианты округления, используемые при преобразованиях формата.

В стандарте ИИЭР по умолчанию предусматривается процедура округления до ближайшего числа или до ближайшего четного числа, если это требуется. Такой вариант будет предпочтительным для большинства приложений, поскольку он характеризуется уменьшенным отклонением получаемых значений, однако предусмотрена также возможность выбора округления до нуля либо бесконечности со знаком плюс или минус.

Действительные и недействительные

Стандарт рассматривает как действительные только нормализованные числа с плавающей точкой, а любое ненормализованное (или исчезнувшее) число должно отмечаться как особая ситуация. Однако такие ненормализованные числа должны сохраняться и давать арифметически правильный — хотя, быть может, вводящий в заблуждение — результат. Это называется постепенным исчезновением (потерей значимости).

Когда микросхема АЛУ выполняет такие арифметические действия, она нормализует числа, причем разрешается осуществлять инкремент или декремент значения смещенного порядка с переходом через предел в «положительном» или «отрицательном» направлении, т.е. порядок рассматривается как отрицательное число в дополнительном двоичном коде. После завершения; подобной операции АЛУ результат превращается в ненормализованный и помечается признаком. Эти дополнительные шаги легко делаются при помощи существующих сдвигателей мантиссы инкрементеров/декрементеров порядка, необходимых для выполнения в АЛУ операции сложения с плавающей точкой и нормализации.

Однако эти функции не являются обязательными для умножения с нормализацией чисел с плавающей точкой и не настолько широко используются при обработке ненормализованных чисел, чтобы оправдать их включение в схему и так уже большого кристалла умножителя. Поэтому ненормализованные операнды для умножителя помечаются флажками-признаками и возвращаются в АЛУ, где производится их нормализация с отрицательным порядком. Обработанные таким образом числа с соответствующими порядками возвращаются в умножитель. Данная процедура занимает много времени, причем для большинства приложений реального времени она не обязательна. В этих случаях вместо ненормализованного операнда можно поставить 0, что даст действительный результат 0, и процесс вычислений продолжится. Такой вариант предусмотрен в умножителе и выбирается при указании быстрого режима работы в его регистре режима.

Ошибки и особые ситуации

Кроме того, стандартный формат регламентирует однозначный поход к обнаружению и обработке ошибок или особых ситуаций. Недействительные числа и операции, возникающие при выполнении арифметических вычислений с плавающей точкой, рассматриваются как особые ситуации и должны, согласно стандарту, обрабатываться одним из двух способов.

В первом случае по умолчанию должны быть установлены признаки пяти раздельных ситуаций и сформированы указанные результаты. Это следующие особые ситуации: недействительные операнды, исчезновение (потеря значимости), переполнение, неточные результаты и деление на нуль.

При каждой из этих особых ситуаций в качестве результата должны формироваться определенные числовые значения по умолчанию, например бесконечность при переполнении или ненормализованные числа при потере значимости. Для компонентов, находящихся в тракте обработки данных, в подобных случаях требуется лишь установить признак особой ситуации в регистре состояния и возвратить правильный результат по умолчанию. Эти приборы предусматривают четыре стандартные особые ситуации (за исключением деления на нуль) и выдают признаки состояния в трехразрядном формате. Умножитель предусматривает обработку дополнительной особой ситуации — ненормализованных входных данных. Он обнаруживает ненормализованные операнды, которые возвращаются в АЛУ, если не установлен режим быстрых вычислений.

Второй предусмотренный стандартом случай — это возможность попытаться при помощи написанных пользователем программ произвести восстановление данных в том виде, какой они имели до возникновения особой ситуации. В этом процессе восстановления могут оказаться полезными не-числа NaN. В тракте обработки данных должны находиться логические схемы обнаружения особых ситуаций, с тем чтобы можно было формировать результаты по умолчанию и устанавливать признаки особых ситуаций. Поскольку фактическую обработку особой ситуации и необходимые для этого средства определяет разработчик, в микросхемах желательно иметь только простейшие управляющие структуры, обеспечивающие максимум гибкости и скорости.

Скорость весьма важное требование для большинства диалоговых систем. Для формирования графических изображений с высокой разрешающей способностью система должна выполнять много миллионов операций с плавающей точкой в секунду. Столь высокое быстродействие необходимо для того, чтобы время реакции системы сохранялось на уровне, приемлемом для пользователя, который работает на дисплее с обычным набором многооперационных команд. Не менее высокие требования к быстродействию системы предъявляет моделирование, поскольку здесь для получения нужных результатов необходимы большое количество точек данных и высокая разрешающая способность.

Все логические схемы являются статическими, так что можно использовать любую частоту синхронизации от 0 до 10 МГц. Время прохождения сигналов через каскад конвейера составляет максимум 200 не. Таким образом, каждые 200 не можно загружать два полных 32-разрядных исходных операнда и выдавать один 32-разрядный результат, оставляя конвейер заполненным. Это соответствует быстродействию 5 млн. операций с плавающей точкой в секунду для каждого прибора. Общее время задержки с момента поступления на прибор старшего слова операнда до выдачи младшего слова результата составляет максимум 1,1 мкс. В специальном режиме поточной обработки этот общий период задержки уменьшается до 900 нс.

В системе

Столь высокие скорости индивидуальных компонентов обеспечивают высокие скорости обработки данных в системах с самыми различными конфигурациями информационных трактов. В более ограниченном по функциям процессоре сигналов реального времени, подобно процессорам, применяемым в системах передачи данных, АЛУ и умножитель чаще всего будут включаться последовательно, конвейером. А в программируемых матричных процессорах АЛУ и умножитель будут, вероятнее всего, параллельно подключаться к двум входным шинам данных и одной выходной шине, связанным с регистрами или памятью. При 32-разрядных шинах данных и благодаря обычно применяемому индивидуальному микропрограммированию каждого прибора подобная конфигурация может в конвейерном режиме обеспечить быстродействие 10 млн. операций с плавающей точкой в секунду. Более того, эту скорость можно увеличить, если распределить обработку выборок данных между двумя или более конвейерами — вполне возможное решение, если учесть малые размеры арифметических элементов.

Более традиционные центральные процессоры можно построить, включая АЛУ и умножитель также параллельно, но с использованием одной или максимум двух шин. При этом шины могут быть 16-разрядными. Эти приборы с плавающей точкой могут быть неосновными арифметическими элементами и вряд ли будут работать одновременно, как в матричных и сигнальных процессорах. Притом зачастую их будут использовать во взаимодействии с регистровым блоком для выполнения многошаговых алгоритмов, например для извлечения квадратного корня, в дополнение к обычным операциям сложения и умножения. Из-за подобных системных ограничений скорости обработки данных снижаются от максимум 5 млн. операций/с до примерно сотен тысяч операций в секунду. Приборы 1032 и 1033 предусматривают простое прямое управление загрузкой и разгрузкой данных, выбор операций и режимы работы, позволяющие эффективно реализовать все эти конфигурации и при этом обеспечить почти оптимальное быстродействие (табл.1).

Таблица 1. Управляющие операции для умножителя WTL1032 и арифметико-логического устройства WTLI033

L1

L0

Мнемоника

Операция загрузки

0

0

NOP

Нет загрузки

0

1

LAB

Загрузка в матрицу операндов A и B

1

0

LA

Загрузка в матрицу только операнда A

1

1

LMODE

Загрузка содержимого входных регистров F и U в регистр MODE

U1

U0

Мнемоника

Операция разгрузки

1

X

DAB

Блокировка выходного регистра (переключение выходов на три состояния и высокоимпедасное состояние)

0

X

ENB

Разрешение выходного регистра

X

0

UMS

Разгрузка (выдача) старшего слова из матрицы в выходной регистр

X

1

ULS

Разгрузка (выдача) младшего слова из матрицы в выходной регистр

продолжение

F3

F2

F1

F0

U0

Мнемоника

Режим работы

X

X

X

X

0

FLOW

Данные идут потоком через матрицу без участия конвейерных регистров

X

X

X

X

1

PIPE

Данные идут по тактам через три конвейерных регистра матрицы

X

X

0

0

X

RN

Округление до ближайшего числа или четного числа, если это необходимо

X

X

0

1

X

RZ

Округление до нуля

X

X

1

0

X

RP

Округление до положительной бесконечности

X

X

1

1

X

RM

Округление до отрицательной бесконечности

X

0

X

X

X

AI

Аффинная бесконечность (знак сохраняется)

X

1

X

X

X

PI

Проективная бесконечность (знак игнорируется)

0

X

X

X

X

IEEE

Обработка ненормализованных операндов согласно стандарту IEEE (только для WTL1032)

1

X

X

X

X

FAST

Замена ненормализованных операндов нулем (только для WTL1032)

Общая архитектура

В умножителе 1032 и АЛУ 1033 имеются два входных операнда и один выходной результат, что позволяет сделать идентичными информационные тракты и управляющую структуру этих приборов (рис.3). Каждая матрица разделяется на три сегмента приблизительно с одинаковым временем распространения, а каждый сегмент изолируется своим собственным конвейерным регистром. Кроме того, коды операции (регистр функции) и состояния матрицы обрабатываются по конвейерному принципу, так что эти значения проходят по кристаллу вместе с соответствующими значениями данных.

Умножитель 1032 и арифметико-логическое устройство 1033 имеют общую архитектуру, позволяющую им выполнять их индивидуальные функции. Блоки, заштрихова
Рис.3. Умножитель 1032 и арифметико-логическое устройство 1033 имеют общую архитектуру, позволяющую им выполнять их индивидуальные функции. Блоки, заштрихованные редкими линиями, — это конвейеризованный умножитель прибора 1032 и конвейеризованное АЛУ прибора 1033. При работе в поточном режиме конвейерные регистры (выделены частой штриховкой) оказываются «прозрачными».

На кристаллах имеются буферные регистры для всех портов — входных и выходных, данных и управления. Буферные регистры в сочетании с выходными ТТЛ-схемами на три состояния и режимом работы без загрузки упрощают применение приборов в архитектурах с параллельными шинами. Хотя оба 32-разрядных операнда и выходной результат передаются через 16-разрядные порты с временным уплотнением, входные и выходные регистры работают с удвоенной частотой по отношению к частоте конвейера, так что это разделение времени портов оказывается незаметным. В случаях, когда некоторая операция выполняется с использованием константы, можно уменьшить трафик шины, если сохранять константу в одном из регистров операндов, загружая индивидуально только другой операнд. Многократное умножение или сложение с константой — самая распространенная векторная операция во многих высокоскоростных приложениях.

Конвейерные регистры повышают скорость непрерывной обработки данных при прохождении через матричную логику арифметического устройства, однако при этом для отдельно взятого значения данных наблюдается увеличенная задержка распространения. Это увеличение задержки можно исключить, если использовать режим поточной обработки, при котором конвейерные регистры являются «прозрачными» для перемещения данных.

Код состояния обрабатывается параллельно с потоком данных, так что состояние на выходе соответствует данным, выдаваемым в текущий момент. Код состояния остается постоянным в течение двух тактов для разгрузки (выдачи) младшего и старшего слов результата.

Операция, которую будет выполнять матрица, определяется содержимым регистра функции в момент загрузки старших слов операндов. Код операции проходит по конвейеру вместе с данными, так что он может меняться, не дожидаясь предварительной разгрузки всех данных с конвейера.

Многоуровневое АЛУ

АЛУ обеспечивает выполнение операций сложения и вычитания для большинства распространенных операндов со знаками и без знаков. Кроме того, как показано в табл.2, здесь предусматриваются операции нормализации и денор-мализации. Умножитель выполняет только операцию умножения, однако в режиме IEEE (ИИЭР) возможны четыре комбинации операндов с отрицательными и положительными порядками. На рис.3 показана матрица АЛУ в конвейерном режиме с регистрами после каждого уровня, а все остальные логические схемы здесь комбинационные.

Таблица 2. Арифметические операции арифметико-логического устройства с плавающей точкой WTL1033

F3

F2

Fi

Fo

Мнемоника

Операция

0

0

0

0

WRAP A

Преобразование ненормализованного операнда А в нормализованное представление с отрицательным порядком

0

0

0

1

UNWRAP A

Преобразование нормализованного операнда А с отрицательным порядком в ненормализованное представление

0

0

1

0

FLOAT A

Преобразование 24-разрядного целого в 32-разрядное нормализованное число с плавающей точкой

0

0

1

1

FIX A

Преобразование 32-разрядного нормализованного числа с плавающей точкой в 24-разрядное целое

0

1

0

0

A + B

Сложение операндов с плавающей точкой (А плюс В)

0

1

0

1

А — В

Вычитание операндов с плавающей точкой (А минус В)

0

1

1

0

—A + B

Сложение операндов с плавающей точкой (минус А плюс В)

0

1

1

1

ABS A + ABS В

Сложение абсолютных значений операндов с плавающей точкой (|А| плюс |В|)

1

0

0

0

А — В ABS

Абсолютное значение разности операндов с плавающей точкой (|А минус В|)

1

0

0

1

A + B ABS

Абсолютное значение операндов с плавающей точкой (|А плюс В|)

Вычисления начинаются на уровне 1/2 матрицы с загрузки старших слов операндов. Прежде всего устанавливается значение скрытого разряда — после анализа порядка. Если порядок равен нулю, скрытый разряд устанавливается равным 0. В противном случае он устанавливается равным 1. Для обеих операций АЛУ над операндами, независимо от преобразования форматов и положительного или отрицательного знака порядков, необходимо произвести выравнивание мантисс, с тем чтобы операция осуществлялась над разрядами равного веса. Такое выравнивание начинается с того, что выбирается операнд с большим порядком. Производится сравнение всех восьми разрядов порядка и результат запоминается в регистре в начале уровня 1, чтобы было видно, является ли операнд А большим или меньшим. Если используется только один операнд, в регистр порядка В загружается соответствующая константа.

В начале уровня 1 оба 33-разрядных операнда сформированы и любой недействительный операнд для арифметической операции может быть обнаружен и помечен флажком-признаком. Больший и меньший порядки выбираются при помощи мультиплексоров, причем меньший вычитается из большего. В результате получается число двоичных разрядов, на которое необходимо сдвинуть вправо мантиссу меньшего операнда для выравнивания с мантиссой большего операнда. Затем меньший операнд сдвигается вправо, а для большего образуется дополнительный двоичный код, если это требуется для указанной арифметической операции. Для операций с одним операндом нужный сдвиг можно обеспечить при помощи константы, введенной ранее в регистр порядка меньшего операнда, что, например, делается при преобразовании в формат целого.

В этот момент обе соответственно выровненные мантиссы складываются, а 28-разрядная сумма запоминается вместе со значением порядка, знака и состояния в конвейерном регистре в конце уровня 1. 28 двоичных разрядов суммы — это один разряд для возможного переполнения, 24 разряда основного формата, защитный разряд, дополнительный младший разряд для округления и так называемый промежуточный («прилепленный») разряд. Промежуточный разряд служит для округления, он представляет значение логической операции ИЛИ для всех младших разрядов, расположенных ниже разряда округления.

На уровне 2 вначале производится обращение полученной суммы, если это требуется, с учетом сочетания кода операции и знака суммы, определенного на предыдущем уровне. Полученное значение в общем случае пока еще не будет нормализованным, т.е. старший разряд мантиссы не будет иметь значение 1. Мантисса может иметь переполнение исходных 24 разрядов, если оба операнда были одного и того же знака, или значение мантиссы может быть очень малым, с логическими 1 в нескольких младших разрядах, если производилось вычитание двух почти равных чисел.

В соответствии с требованиями стандарта все результаты должны выдаваться в нормализованном виде или по меньшей мере в виде ненормализованного числа с минимальным возможным порядком. Первый шаг процедуры, направленной на выполнение любого из этих требований, заключается в том, чтобы определить местоположение самого старшего разряда, установленного в 1. Это делается при помощи логической схемы приоритетного кодирования, которая выдает число, соответствующее смещению самого старшего установленного разряда относительно самой левой разрядной позиции.

Смещение

Такое смещение определяет количество сдвигов влево, необходимых для нормализации результата, а также уменьшение двоичного порядка, которое должно сопровождать сдвиги мантиссы, чтобы значение результата не изменилось. Вычитание порядка производится на этом уровне, однако смещение запоминается, чтобы выполнить требующий больше времени сдвиг мантиссы на уровне 3. При исчезновении порядка в результате вычитания формируется флажок-признак. В этом случае вместо смещения в схему сдвигателя выдается первоначальный порядок. При этом производится сдвиг, необходимый для получения ненормализованного числа, которое желательно выдавать в качестве результата для такой двухоперандной операции. В то же время для порядка устанавливается значение 0. Для операции преобразования ненормализованного операнда в нормализованный с отрицательным порядком (wrapped operand) такой исчезнувший порядок — желательное представление правильного отрицательного порядка в дополнительном двоичном коде, и он сохраняется.

После определения нужного количества сдвигов влево уровень 3 может закончить нормализацию в своем многоразрядном сдвигателе. Если нормализованную 27-разрядную мантиссу нельзя обрезать до 24 разрядов выходного формата, не меняя ее значения, то необходимо произвести округление. Определить это позволяет промежуточный разряд, поскольку он показывает, какая точность теряется при отбрасывании младших разрядов. Выбранный способ округления реализуется при помощи простого сумматора, причем устанавливается флажок-признак неточного результата. При округлении мантиссы может произойти перенос в дополнительный старший разряд. В этом случае мантисса сдвигается вправо с соответствующим увеличением порядка. При приращении порядка может призойти переполнение, так что будет установлен флажок-признак переполнения порядка.

Тем самым матрица завершает вычисление; при этом обнаруживаются возможные особые ситуации с установкой флажков-признаков. Дополнительные операции, которые делаются в это время, служат для преобразований формата. Кроме того, производится кодирование флажков-признаков особых ситуаций и все мантиссы результатов ограничиваются до 23 разрядов, так что самый старший разряд опять-таки становится скрытым.

Умножитель

Матрица умножителя с плавающей точкой в принципе проще, чем АЛУ. Поскольку здесь выполнение нормализации не требуется (табл.3), уровень V2 матрицы используется только для добавления девятого разряда к 8-разрядному порядку (для операндов, имеющих отрицательные порядки) и для определения значения скрытых разрядов. Такое расширение порядков позволяет явно представлять отрицательный порядок в виде дополнительного двоичного кода (со смещением на 127).

Таблица 3. Операции умножителя с плавающей точкой WTL1032

F3

F2

F1

F0

Мнемоника

Операция

0

0

0

0

А×В

Умножение нормализованных операндов с плавающей точкой (А×В)

0

0

0

1

WA×B

Умножение операнда А с отрицательным порядком на операнд В

0

0

1

0

A×WB

Умножение операнда А на операнд В с отрицательным порядком

0

0

1

1

WA×WB

Перемножение операндов А и В с отрицательными порядками

В начале уровня 1 осуществляется загрузка и проверка полных операндов. Для ненормализованных операндов прежде всего устанавливается флажок-признак недействительного операнда, а также флажок-признак ненормализованного входного числа, являющийся сигналом для их возвращения в АЛУ, если операция выполняется в режиме IEEE. При умножении порядки складываются, причем это делается после проверки и исключения смещения одного из порядков. 10-разрядный сумматор порядка позволяет сохранять значения в случае переполнения или исчезновения порядка. Знаковые разряды обоих операндов маскируются, а знак результата определяется при помощи простой схемы исключаю-щее-ИЛИ. Такая относительно несложная обработка знаков и порядков занимает мало времени по сравнению с перемножением мантисс.

Умножитель мантисс 24*24 разряда охватывает уровни 1 и 2. Для эффективного использования площади кристалла при его реализации принят алгоритм Бута и сумматоры с запоминанием переносов (кроме последнего ряда, который предусматривает сквозной перенос). На обоих уровнях все 48 разрядов фиксируются и выдаются на выход. Это необходимо, чтобы сохранить 24-разрядную точность формата, поскольку матрицы сумматоров упростить нельзя. После последнего сложения, однако, результат ограничивается до 28 разрядов, включая промежуточный разряд, чем обеспечивается точность, достаточная для правильного округления, которое последует на уровне 3.

Выходные данные:

Журнал "Электроника" том 56, No.10 (666), 1983г - пер. с англ. М.: Мир, 1983, стр.24

Electronics Vol.56 No.10 May 19, 1983 A McGraw-Hill Publication

Bob Woo, Lyon Lin, Robert E. Owen. ALU, multiplier chips zip through IEEE floating-point operations, pp. 121—126.

Раздел: МЕТОДЫ, СХЕМЫ, АППАРАТУРА

Тема:     Полупроводниковая техника





Дата последнего изменения:
Thursday, 21-Aug-2014 09:10:44 MSK


Постоянный адрес статьи:
http://az-design.ru/Support/HardWare/Weitek/D19830519Elc023.shtml