ЮГО-ЗАПАДНЫЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ На правах рукописи –

реклама
ЮГО-ЗАПАДНЫЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
На правах рукописи
Хла Вин
МОДЕЛЬ, АЛГОРИТМЫ И РЕАЛИЗАЦИЯ
АРИФМЕТИЧЕСКОГО УСТРОЙСТВА НА ФОРМАЛЬНЫХ
НЕЙРОНАХ
Специальность 05.13.05. –Элементы и устройствавычислительной техники и
систем управления
Диссертация на соискание ученой степени
кандидата технических наук
Научный руководитель:
доктор физико-математических наук,
профессор В.П. Добрица
КУРСК 2014
2
СОДЕРЖАНИЕ
ВВЕДЕНИЕ ...........................................................................................................4
ГЛАВА 1. Анализ основных алгоритмови структур блоков
выполнения арифметических операций .........................................10
ГЛАВА 2. Математическая
модель
устройства с последовательным
переносом, выполняющего арифметические операции
в прямых кодах ............................................................................25
2.1.
Способ представления и кодировка чисел при
выполнении арифметических операций ................................................25
2.2.
Блок ввода и шифрации чисел ................................................................27
2.3.
Блок результата ………………………………………………………….28
2.4.
Искусственный нейрон …………………………………………………31
2.5.
Модуль ускоренного умножения ............................................................36
2.6 Математическая модель сумматора-вычитателя чисел
с фиксированной точкой …………………………………………………40
2.7 Выводы по главе ...........................................................................................45
ГЛАВА 3. Архитектура, алгоритм управления и моделирование работы
специализированного сумматора-вычитателя на нейронах .........46
3.1 Параллельный сумматор-вычитатель на нейронах
со сквознымпереносом…………………………………………………..46
3.2. Работа параллельного сумматора-вычитателя на нейронах
со сквозным переносом ..............................................................................48
3.3. Блок-схема алгоритма управления параллельного
сумматора-вычитателя на нейронах со сквозным переносом ………...49
3.4.Результаты моделирования работы параллельного сумматоравычитателяна нейронах со сквозным переносом ………………….........53
3.5. Выводы по главе ………………………………………………………….60
ГЛАВА 4. Структурные схемы блоков параллельного
сумматора-вычитателя .....................................................................61
3
4.1. Описание параллельного сумматора-вычитателя на нейронах
со сквозным переносом ..............................................................................61
4.2. Оценка быстродействия разработанного устройства и
альтернативных схемотехнических решений сумматоров …………….76
4. 3.Выводы по главе …………………………………………………………..80
5. ЗАКЛЮЧЕНИЕ …………………………………………………………….82
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ ………………………….84
ПРИЛОЖЕНИЕ 1 Описание программы моделирования работы
сумматора-вычитателя на нейронах ……………………93
ПРИЛОЖЕНИЕ 2 Программа моделирования работы сумматоравычитателя на нейронах ...................................................95
4
ВВЕДЕНИЕ
Актуальность рабты. Очевидно, что компьютерные технологии
сделали гигантский шаг вперед от момента своего рождения до настоящего
времени. ЭВМ стали намного более производительными, компактными,
надежными и доступными, благодаря чему стало возможным их внедрение
практически во все области человеческой деятельности. Однако основным
вектором перспективных исследований и разработок элементов и устройств
вычислительной техники и систем управления остается повышение их
быстродействия при выполнении арифметических операций, что определяет
один из основных аспектов актуальности темы диссертации.
Основная
решаемая
задача
диссертационного
исследования
заключается в минимизации затрат времени при выполнении операций
сложения-вычитания
метрических
при приемлемых аппаратных затратах и других
показателей
и
разработке
структурно-функциональной
организации устройства сложения-вычитания.
В связи с развитием вычислительной техники задача повышения
быстродействия доминирующей базовой операции сложения (вычитания)
путем создания специализированных вычислительных устройств, является
актуальной. Основными критериями, варьируемыми при выборе той или
иной схемы, являются: сложность реализации комбинационных схем
модулей; быстродействие специализированных арифметических устройств;
аппаратные
затраты
по
реализации
спецпроцессоров;
потребляемая
мощность вычислительных устройств.
Для решения этой задачи диссертационного исследования имеются
необходимые
предпосылки
и
основания.
Проблеме
создания
высокоскоростных арифметических устройств и их алгоритмическому
обеспечению посвятили свои работы Каляев А.В., Бандман О.А., Бойков
В.Д., Ачасова С.Н., Смолов В.Б., KungN.T., BооkR.V и т.д. Опыт
международного компьютерного сообщества показал, что традиционные
5
средства
выполнения
арифметических
операций
имеют
потенциал
повышения уровня эффективности в условиях возросших требований к
скорости обработки данных.
В теоретическую часть диссертации включены: анализ современного
состояния исследований и разработок быстродействующих арифметических
устройств, разработка математических аспектов выполнения операций,
создание имитационной модели процессов обработки чисел в формате с
фиксированной запятой и быстродействующего устройства сложениявычитания, а также алгоритм его работы.
Практическая
компонентов
часть
устройства
имитационного
работы
содержит
сложения-вычитания,
моделирования
и
схемные
реализации
программные
результаты
средства
экспериментальных
исследований.
Работа выполнена в рамках НИР по гранту Президента РФ МД2218.2011.8 «Теоретические основы и принципы построения параллельных
логических
мультиконтроллеров
с
распределенным
аппаратным
межмодульным взаимоконтролем коммуникационной среды», выполняемых
в ЮЗГУ.
Целью работы является повышение скорости выполнения операций
сложения-вычитания
в
прямых
кодах
путем
создания
структурно-
функциональной организации вычислительного устройства на основе
формальных нейронов и алгоритма его работы.
В соответствии с этой целью ставятся следующие частные задачи:
1.
Проведение
анализа
существующих
методов
повышения
быстродействия выполнения арифметических операций над двоичными
числами и способов их реализации на аппаратном уровне. Обоснование
основных направлений исследований.
2.
Разработка
математической
вычислителя на формальных нейронах.
модели
арифметического
6
3.
Создание алгоритма работы арифметического вычислителя на
элементах нейронной логики.
4.
Разработка структурных и функциональных схем устройства и
блоков арифметического вычислителя на формальных нейронах.
5.
Разработка функциональной схемы определения межразрядного
сквозного переноса на мажоритарных элементах; функциональной схемы
одноразрядного сумматора-вычитателя на пороговых элементах и их
экспериментальное исследование.
Объектом
исследования являются арифметические устройства
компьютеров и вычислительных систем.
Предмет
исследования
функциональная
организация
-
математические основы, структурнои
алгоритмы
функционирования
арифметических устройств.
Методы исследования. Для решения поставленных задач в работе
использовалась теория проектирования устройств ЭВМ, теория нейронных
сетей, методы математического моделирования, теория алгоритмов.
Результаты, выносимую на защиту, и их научная новизна:
1. Математическая модель арифметического вычислителя на нейронах,
отличающаяся применением мажоритарных, пороговых и нейронных
элементов в блоках устройства, которые работают в полную нагрузку и
полном
объеме,
и
обеспечивающая
работу
специализированного
арифметического устройства с максимальным быстродействием.
2. Модификация алгоритмов сложения чисел в прямых кодах,
отличающаяся применением межразрядных сквозных переносов - заёмов
при суммировании и вычитании двоичных чисел, и позволяющая повысить
быстродействие выполнения арифметических операций.
3.
Структурно-функциональная
устройства, отличающаяся
организация
арифметического
применением сети формальных нейронов в
устройстве сумматора-вычитателя для реализации ускоренного сквозного
переноса; схемотехнические решения блоков устройства, каждое из которых
7
обеспечивает уменьшения времени задержки выполнения арифметических
операций. Разработанное устройство защищено патентом РФ. (Пат. 2523942
Российская Федерация, МПК G 06 F 7/506, G 06 N 7/00.)
4. Синтезированые быстродействующие схемы всех компонентов
устройства суммирования-вычитания, одноразрядного сумматора-вычитателя
на пороговых элементах со скоростной схемой реализации сквозного
межразрядного переноса-заёма и результаты сопоставительного анализа и
имитационного моделирования.
Достоверность результатов диссертационной работы обеспечивается
корректным
и
обоснованным
применением
положений
и
методов
модификации алгоритма соложения чисел в прямых кодах; теорий: графов,
проектирования цифровых устройств, а также подтверждается результатами
программного моделирования с использованием зарегистрированных в
установленном порядке программных средств и экспертизой Роспатента.
Практическая
ценность
диссертационной
работы
состоит
в
следующем:
1. Разработано специализированное быстродействующее вычислительное арифметическое устройство, которое может быть применено для
вычисления суммы и разности двоичных чисел в прямых кодах, а также в
качестве сопpоцессоpа в составе супер-ЭВМ, пригодное для постановки
НИОКР.
2. Специальное арифметическое устройство можно использовать в
распределенных системах, как специальный модуль в вычислительной
открытой развиваемой асинхронной модульной системе "ВОРАМС", МАРС.
3. Созданная имитационная модель позволяет оценить быстродействие алгоритма сложения чисел в прямых кодах, быстродействие
вычислительного арифметического модуля, определение и применении
межразрядного сквозного переноса-заёма при вычислении суммы и разности
двоичных чисел.
8
Результаты диссертационной работы найдут применение в создании
высокопроизводительных арифметических процессоров, системах цифровой
обработки сигналов в реальном времени, системах управления и т.д.
Соответствие паспорту специальности. Тематика проведенных
научных исследований соответствует следующим областям специальности
05.13.05 - Элементы и устройства вычислительной техники и систем
управления:
П.2. Теоретический
анализ
и
экспериментальное
исследование
функционирования элементов и устройств вычислительной техники и систем
управления в нормальных и специальных условиях с целью улучшения
технико-экономических и эксплуатационных характеристик.
П.3.Разработка принципиально новых методов анализа и синтеза
элементов и устройств вычислительной техники и систем управления с
целью улучшения их технических характеристик.
Апробация работы.
Результаты работы докладывались на XI
международной научно-технической конференции «Оптико-электронные
приборы и устройства в системах распознавания образов, обработки
изображений
и символьной информации», РАСПОЗНАВАНИЕ – 2013,
Курск, Российская Федерация, 17–20 сентября 2013 года; I всероссийской
научно-практической конференции «Инфокоммуникации и информационная
безопасность: состояние, проблемы и пути решения», Курск, Российская
Федерация, 24–26 апреля
2014 года в ФГБОУ ВПО «Юго-Западный
государственный университет».
Результаты работы внедрены в учебный процесс 2, 3 и 4 - ых курсов по
дисциплинам «Организация ЭВМ и систем», «Аппаратные средства
защищённых вычислительных систем», «Специализированные вычислительные устройства и процессоры систем защиты информации» кафедр
«Защита информации и системы связи» и «Информационные системы и
технологии» Юго-Западного государственного университета.
9
Публикации. Результаты, полученные в диссертационной работе,
нашли отражения в 7 печатных работах, входящих в перечень ВАК, и одном
патенте на изобретение.
Личный вклад в работы, написанные в соавторстве состоят в
следующем: в работе [1] составил рисунок структурной схемы умножителя,
описал работу блоков схемы, написал введение и заключение статьи, в
работе [2] написал введение, составил рисунок и описал работу структурной
схемы устройства, в работе [3] выполнил описание алгоритма работы
ускоренного умножителя, сформировал рисунок алгоритма и написал
введение и заключение, в работе [4] разработал и выполнил описание блоксхемы алгоритма работы устройства, описал работу цифрового устройства, в
работе [5] написаны разделы функционирования работы блоков устройства, в
работе [6] составил структурную схему устройства выполнения логических
операций, написал заключение статьи, в работе [7] произвел патентный
поиск на заданную тему, разработал блок-схему алгоритма работы
устройства и описал ее работу, составил структурные схемы блоков автомата
и описал работу блоков, написал заключение заявки на изобретения.
Структура и объём работы. Диссертационная работа состоит из
введения, четырех глав, заключения, списка использованных источников
идвух приложений, изложена на 107 страницах, содержит 20 рисунков и 5
таблицы и 84 наименований библиографии.
10
ГЛАВА 1. АНАЛИЗ ОСНОВНЫХ АЛГОРИТМОВИ СТРУКТУР
БЛОКОВ ВЫПОЛНЕНИЯ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
В связи с непрекращающимся развитием вычислительной техники
задача оптимизации вычислительных блоков, в том числе выполняющих
основные арифметические операции (сложение, вычитание, умножение и
деление), является актуальной. Существует довольно большое количество
проведенных
исследований
по
данному
вопросу.
Разработчик
вычислительной системы, в зависимости от поставленных перед ним целей,
может
выбрать
существующую
структуру.
Основными
критериями,
варьируемыми при выборе той или иной схемы, может стать сложность
реализации, быстродействие, аппаратные затраты, потребляемая мощность.
Ниже рассмотрены основные алгоритмы и структуры блоков выполнения
арифметических операций.
Для начала рассмотрим существующие решения, касающиеся блоков
сложения. В наиболее простом случае параллельный сумматор представляет
собой n одноразрядных сумматоров, последовательно соединенных цепями
переноса от младших разрядов к старшим. Очевидно, что быстродействие
такой схемы относительно невелика, т.к. формирование сигнала суммы и
переноса в i-м разряде возможно только после поступления сигнала переноса
с (i-1)-го разряда. Следовательно, чем меньше время распространения
сигнала по цепи переноса, тем выше быстродействие сумматора. Поэтому
особое внимание при построении параллельного сумматора уделяется цепи
организации переноса[1].
Сумматор с пропуском переноса[2] – это, по существу, результат
повышения скорости распространения переноса в обычном сумматоре с
последовательным переносом,но при этомне вычисляются значения переноса
в тех разрядах, через которые сигнал переноса проходит не меняясь.
Предположим, необходимо сложить два числа, представленные следующими
двоичными
шаблонами:
A12A11A10A9010101A2A1A0и
11
B12B11B10B9101010B2B1B0.Любой перенос, возникающий при сложении битов
0-2, не меняя значения, пройдет через биты 3-8 и примет участие в сложении
битов 9-12. Таким образом, перенос в восьмой разряд равен переносу в
третий разряд, и, следовательно, этапы вычисления переноса в разрядах с 3-7
можно пропустить.
Сумматоры с одновременным переносом вычисляют биты переноса до
начала суммирования, что позволяет снизить время получения результата.
Такое снижение достигается за счет того, что сигнал в цепи переноса
проходит всего через два логических уровня. Такой способ построения цепей
переноса
характеризуется
быстрым
ростом
количества
элементов
с
увеличением разрядности слагаемых. Поэтому часто прибегают к варианту с
разбитием разрядов сумматора на группы по m разрядов в каждой. Такие
сумматоры называются сумматорами с групповым (частично-групповым)
переносом.
При
этом
между
группами
могут
использоваться
последовательный, либо параллельный перенос.
Манчестерский сумматор является наиболее популярной схемой
динамическогосумматора с одновременным переносом. Обладает быстрой,
простой и систематичной структурой, подходящей для реализации в больших
интегральных схемах (БИС). Рекурсивный характер вычисления переноса в
манчестерском сумматоре позволяет разрабатывать элементы с множеством
выходов, которые демонстрируют лучшее быстродействие и занимают
меньшую площадь, чем при использовании аналогичных элементов с одним
входом. Рекурсивный характер связей заключается в том, что логика
вычисления каждого значения переноса содержит логику, используемую для
генерации предыдущих переносов. Манчестерский сумматор генерирует
промежуточные значения переносов, используя отводы тех элементов,
которые вычисляют старший бит переноса. Не все серии логических
элементов имеют внутренние узлы, однако, комплементарная структура
металл-оксид-полупроводник (КМОП) - имеет и является основным
примером серий, используемых при построении манчестерского сумматора.
12
Основным
минусом
данного
сумматора
является
то,
что
время
распространения переноса с ростом разрядности увеличивается намного
быстрее, чем у других схем с одновременным переносом. В связи с этим
разрядность манчестерского сумматора редко превышает 4 бита.
КонцепциясумматораКогга-Стоунабылаописанавработе
[3].
Количество логических уровней данного сумматора составляет O(log2(n)).
Схема является прототипом для построения быстродействующих сумматоров
в
промышленности.Улучшения
оригинальной
реализации
включают
увеличение основания и степени разреженности сумматора. Основание
сумматора устанавливает, сколько результатов вычислений с предыдущего
уровня используется при вычислении на следующем уровне. Первоначальная
реализация имеет основание 2, хотя, возможно создать сумматор с
основанием 4 и выше. Это увеличит потребляемую мощность и задержку
сигнала на каждом уровне, но общее количество уровней
сократится.
Разреженность сумматора определяет, сколько битов переноса генерируется
деревом переноса. Сумматор, который генерирует каждый бит переноса,
имеет разреженность 1, каждый второй - разреженность 2, каждый четвертый
- 4. Полученные переносы затем используются как входные переносы для
сумматоров
с
последовательным
переносом
или
некоторых
других
сумматоров меньшей разрядности, которые получают окончательный
результат. Увеличение разреженности приводит к сокращению общего числа
вычислений и может снизить количество связей.
Другая схема сумматорас одновременным переносом - сумматор
Брента-Кунга - была предложена в 1982 г. [4]. Схема требует меньшее
количество аппаратных ресурсов, чем предыдущая, однако, имеет больший
коэффициент ветвления и, как следствие, более низкую производительность.
Сумматор с переключением переноса состоит из нескольких блоков,
которые, в свою очередь, состоят из мультиплексора и двух сумматоров с
последовательным переносом[1]. На одном сумматоре получается результат,
исходя из предположения, что перенос равен нулю, а на другом, если перенос
13
равен единице. После того, как правильный перенос становится известен, при
помощи мультиплексора выбирается правильный результат.
Особое внимание уделяется реализации арифметических блоков в
программируемой
логическойинтегральнойсхеме(ПЛИС),
т.к.
быстродействие мультимедиа устройств и устройств цифровой обработки
сигналов на их основе во многом зависит от эффективности реализаций
арифметических ядер. Быстродействующие цепи переноса, встроенные в
архитектуру производителем, являются отличительной чертой современных
программируемых логических интегральных схем. Они подключаются к
соседним логическим ячейкам, что позволяет значительно уменьшить
задержку сигнала. Кроме этого, производители применяют различные
приемы с целью увеличения быстродействия цепей переноса. Однако
реализуемый стандартными арифметическими блоками последовательный
перенос по своей природе обладает относительно большой задержкой
передачи сигнала. Применение быстродействующих схем переноса позволит
значительно увеличить производительность. Работа [5] отмечает особенности
реализации на ПЛИС схем с переключением переноса, классической схемы с
одновременным переносом, сумматора Брента-Кунга и дает оценку
увеличения производительности приих использования в 3.8 раз.
В работе [6]предложена архитектура быстродействующего сумматора
для архитектуры Virtex-5. Основная идея заключается в разбиении nразрядного сумматора на два сумматора по n/2 разрядов. Вместо того, чтобы
дожидаться переноса из сумматора, вычисляющего младшие разряды,
сумматор для вычисления старших разрядов использует начальный перенос
из специальной схемы. Быстрое распространение сигнала в цепи переноса
достигается путем оптимального использования перепрограммируемых ячеек
с шестью входами в связке с соответствующими мультиплексорами,
доступными в чипах Virtex-5. Автор отмечает, что 64-битный сумматор,
построенный по предложенной схеме, будет от 11% до 35% быстрее
14
сумматоров, имеющихся по умолчанию в составе программируемой
логической интегральной схеме.
В статье [7] подчеркивается, что интегральные схемы с низким
энергопотреблением являются перспективной областью разработок в связи с
огромным спросом на портативные устройства. Неудивительно, что в
последнее время в научной литературе появился ряд статей, в которых
описывается инновационные схемы с низким потреблением энергии,
реализующие основные логические функции. Автор также отмечает, что при
проектировании данных схем инженеры полагались, в основном, на свою
интуицию и опыт, не используя при этом формальных процедур
проектирования. Стремясь исправить этот недостаток в своей работе, автор
предлагает логический элемент, реализующий функцию суммирования по
модулю 2, формальный метод расчета и полный сумматор на основе данного
элемента.
При разработке вычислительных устройств и программ для ЭВМ
умножение встречается также часто, как и операция сложения. Однако время
выполнения
умножения
превышает
время
сложения.
Поэтому
быстродействие арифметическо-логического устройства (АЛУ) в основном
определяется скоростью выполнения операции умножения, а во время
проектирования особое внимание уделяют ускорению этой операции.
ДеревоУоллеса–
эффективнаяаппаратнаяреализацияцифровойсхемыумножениядвухчисел,
разработаннаяавстралийским
ученымКрисомУоллесомв
1964
г.
[8].
Получение результата происходит в 3 этапа. Первый этап заключается в
нахождении произведений каждого бита со всеми остальными. Результаты
имеют различные веса в зависимости от позиции умножаемых бит (точнее,
вес равен 2n+m, где m и n - позиции разрядов). На втором этапе частичные
произведения проходят через несколько уровней сумматоров, благодаря чему
число
частичных
произведений
сокращается
до
двух.
Сокращение
происходит следующим образом. Сигналы одного веса разбиваются по
15
тройкам и подаются на полные сумматоры. Сигнал суммы имеет такой же
вес, что и слагаемые сигналы. Когда остается только пара сигналов одного
веса, их подключают к полусумматору. Когда невозможно найти пару
сигналу, то его подключают к следующему уровню. На третьем этапе
находится
окончательный
результат
подачи
оставшихся
частичных
произведений на полно-разрядный сумматор. Преимущество дерева Уоллеса
заключается в том, что количество логических уровней на втором этапе
составляет O(log(n)), а задержка сигнала на каждом уровне равна O(1).
Глубина логических вентилей на третьем этапе составляет O(log(n)). В итоге
общая задержка умножения равна O(log(n)), т.е. ненамного медленнее
сложения (однако при этом требуется значительно больше аппаратных
затрат).
Умножитель
Дадда
-
аппаратный
умножитель,
предложенный
ЛуиджиДаддом в 1965 г. [9]. Схема схожа со схемой умножителя Уоллеса,
однако, имеет немного большее
быстродействие (для всех размеров
операндов) и требует несколько больше аппаратных затрат (для всех
размеров операндов, кроме самых маленьких). Подробное сравнение этих
умножителей приведено в работе [10].
Встатье
представленаоднаизвозможныхсхемпостроенияматричногоумножителя.
[11]
В
алгоритме Бо-Вули частичные произведения приводятся к такому виду,
который обеспечивает максимальную регулярность массива, что делает его
удобным для реализации на микросхемах. В процессе умножения частичные
произведения, которые имеют знак "минус", перемещаются к последней
ступени суммирования. Вычитание частичных произведений заменяется
прибавлением их инвертированных значений. Можно считать недостатком
схемы то, что в последней строчке матрицы требуется дополнительный
сумматор, из-за чего регулярность схемы нарушается.
Одним из классических вариантов ускорения умножения является
алгоритм Бута. Алгоритм предназначен для умножения двух двоичных чисел
16
в дополнительном коде. Был предложен Эндрю Дональдом Бутом в 1951
г.[12] во время проведения исследований в области кристаллографии в
колледже имени Дж. Бирбека в Блумсбери (Лондон). Бут использовал для
вычислений настольные калькуляторы, которые выполняли операцию сдвига
быстрее
сложения,
и
создал
алгоритм
для
увеличения
их
производительности.
В
работе
[13]
предложен
высокопроизводительный
алгоритм
умножения двух битовых массивов. Задача умножения параллельных
массивов здесь сводится к вопросу сложения двух массивов, где каждый бит
частичного произведения является результатом применения функции
логического «И» к биту множимого и множителя и все частичные
произведения при этом положительные.
Что касается ускорения операции деления, то существует не слишком
много вариантов для её осуществления. В ряде случаев эффекта можно
достичь применением алгоритмов, сокращающих
число итераций
в
процедуре деления. Также ускорение деления может быть достигнуто путем
более совершенной аппаратной реализации операции. При сочетании обоих
этих
подходов
обычно
достигаются
наилучшие
результаты.
Ниже
рассмотрены самые распространенные в настоящее время методы ускорения
деления.
АлгоритмделенияSRTбылназвантаквчестьегосоздателей
Robertson,
Tocher),
которыеразработалиего
(Sweeney,
[14,
15,
16]независимодруготдругаприблизительноводноитожевремя.
Онпредставляет собой модификацию деления без восстановления остатка,
где на каждой итерации помимо сдвига частичного остатка выполняется
также вычитание либо прибавление делителя. В алгоритме SRT частичный
остаток также сдвигается на каждой итерации, однако сложение или
вычитание, в зависимости от получающегося частичного остатка, на
отдельных итерациях может не выполняться, что положительно влияет на
быстродействие устройства деления. Алгоритмориентирован на выполнение
17
операций над мантиссами чисел с плавающей запятой; опирается на тот факт,
что мантиссы в таких числах нормализованы. Был впервые реализован в 91оймодели
электронных
вычислительных
машин
IBM360.
Активно
применяется в настоящее время в блоках обработки чисел с плавающей
запятой в микропроцессорах фирмы Intel.
Высоким
быстродействием,
благодаря
отсутствию
цепей
распространения переноса, которые являются наиболее значительным
фактором,
ограничивающим
скорость
выполнения
арифметических
операций, обладают алгоритмы сложения, умножения и деления чисел в
системе остаточных классов (СОК). СОК была открыта в третьем веке
китайским ученым Сунь Цзы. В пятидесятых годах двадцатого века СОК
была вновь открыта учеными, для использования в области быстрых
арифметических и отказоустойчивых вычислений. Три свойства СОК делают
ее хорошо подходящей для данных целей. Во-первых, это отсутствие схем
распространения переноса в сложении и умножении, ограничивающих, как
уже было сказано ранее, быстродействие. Во-вторых, ошибка в каком-либо
разряде не влияет на другие разряды. В-третьих, ошибочные разряды могут
быть отброшены без значительных последствий, кроме уменьшения
динамического диапазона.Новый интерес был непродолжительным. Это
объясняется тем, что, реализация деления, извлечения квадратного корня и
сравнения в СОК является сложной,как и преобразование из представления
СОК в традиционное представление. Несмотря на это, в последние годы
возникла новая волна интереса.Возникла главным образом потому, что
огромная доля вычислений сегодня имеет место во встроенных процессорах,
например, в мобильных устройствах, для которых важно быстродействие и
низкое потреблениеэнергии. Также, из-за большой сложности компьютерных
чипов
полное
тестирование
становится
невозможным.
Поэтому
использование отказоустойчивых вычислений является все более важным. В
любом случае, алгоритмы СОК чрезвычайно хороши для многих областей,
таких как цифровая обработка сигналов, телекоммуникации, компьютерная
18
безопасность, обработка изображений и речи, в которых критическими
арифметическими операциями являются сложение и умножение.
РеализациясхемыдлявыполненияоперацийсложенияивычитаниявСОКо
писанавработе [17]. Метод основан на том свойстве, что набор остатков по
модулю m формирует конечную группу по сложению и вычитанию (также по
модулю m). Предложенная структура сумматора/вычитателяотличается
высокой систематичностью и, следовательно, хорошо подходит для
интегрального исполнения.
Эффективность реализации сумматоров архитектуры СОК обсуждается
в работе [18]. Авторы анализируют три подхода (использование двоичного
сумматора, табличных значений, гибридный подход) с точки зрения
занимаемой площади и быстродействия. Также в статье предложены две
процедуры построения схем. Они отличаются гибкостью, что позволяет им
поддерживать любой тип модуля. Сложность реализации зависит от формы и
размеров модулей, но, в целом, подход, основанный на табличных значениях,
является более предпочтительным сточки зрения быстродействия и
занимаемой площади для малых модулей (до 5 бит), в то время как
гибридный подход и подход с использованием
двоичного сумматора
обладают лучшей производительностью для больших размеров модулей.
Новый метод вычисления точного произведения двух целых чисел по
модулю m и соответствующая схема умножения предложена в работе [19].
Такая схема может быть реализована с помощью нескольких двоичных
умножителей набольших интегральных схемах (БИС). При этом может быть
получено время отклика 150-200нс при выполнении модульного умножения с
модулями до 32767. Также в работе представлено сравнение постоянных
запоминающих устройств (ПЗУ) -структур. Авторами была выполнена
асимптотическая оценка модульного умножителя в соответствии с теорией
сложности БИС, и было выяснено, что схема является оптимальной.
Приведенная схема может быть использована для реализации умножителя в
арифметических вычислителях, использующих СОК. В статье получена
19
оценка сложности модульного умножителя и, оказалось, что схема имеет
меньшую сложность по различным показателям в сравнении с умножителями
на основе ПЗУ.
Построениюсумматоровпомодулю2n-1посвященаработа
[20].
Автор
предлагает две процедуры построения таких сумматоров. В первом
используется
одноуровневый
алгоритм
сложения
с
одновременным
переносом, во втором - двухуровневый.
Еще один вариант реализации сумматоров СОК на основе двоичного
сумматора описан в статье [21]. Предложенные сумматоры имеют два цикла
сложения и поддерживают любой тип модулей. Автором приведена техника
выбора правильной суммы на одном из двух циклов сложения и обоснована
её корректность. Также описаны три подхода для реализации сумматоров
СОК на БИС и даны графики производительности в зависимости от
занимаемой площади и быстродействия. Использование одного двоичного
сумматора позволяет на 30% сократить занимаемую схемой площадь, однако,
схема с двумя сумматорами обладает значительно лучшим быстродействием.
В работе [22] представлена методология построения умножителя в
СОК на основе сложения. В предложенном подходе благодаря учету не
встречаемых комбинаций входных бит достигается сокращение количества
полных одноразрядных сумматоров, требуемых для построения умножителя.
В частности, определяются пары и тройки входных бит, содержащие биты,
которые невозможно одновременно ассоциировать с корректной входной
комбинацией. В работе показано, что конкретные пары или тройки могут
быть поданы на логический элемент "ИЛИ" вместо одноразрядного
сумматора, за счет чего снижается сложность сумматора. Сравнение
производительности и аппаратной сложности предложенной схемы с
предыдущими известными аналогами говорит о том, что представленный
сумматор является более эффективным по данным показателям. Фактически,
в отдельных случаях можно достичь улучшения по критерию "занимаемая
площадь/быстродействие" на 80%.
20
В работе [23] отмечается, что разработка быстродействующего и
компактного модульного сумматора является важной задачей. Предложенная
новая архитектура модульного сумматора, основанная на известной
концепции применения двоичных сумматоров в модульных сумматорах,
отличается
высокой
производительностью.
Реализация
на
БИС
и
сравнительный анализ показывают, что аппаратные затраты и задержки
распространения сигнала в предложенной схеме значительно меньше, чем в
известных на момент выхода статьи схемах. Также в работе представлен
новый сумматор по модулю (2n+1). Сравнение с подобными сумматорами
показывает, что указанный сумматор занимает меньшую площадь и обладает
большим быстродействием.
Авторы статьи [24] предлагают технику вычисления произведения по
модулю 2N-1 двух N-битных целых чисел из их k-битной байтовой
декомпозиции. Выбор модуля 2N-1 объясняется тем, что умножение,
выполняемое в этом базисе, может быть реконструировано из циклической
свертки последовательностей k-битных байт исходных чисел. Показано, что
циклическая свертка может быть вычислена только с использованием
операций сложения и возведения в квадрат. Т.к. для возведения в квадрат
требуется только один операнд, то может быть достигнуто значительное
уменьшение количества бит, хранимых в ПЗУ, если будут использоваться
таблицы готовых значений.
Модульное умножение - очень важная арифметическая операция в
вычислительных системах реального времени, отмечается в работе [25]. При
реализации таких умножителей схемы с применением ПЗУ наиболее
эффективны для небольших значений модулей. Реализация с использованием
арифметических компонентов является более подходящей при средних и
больших значениях модулей, т.к. с ростом модуля размер ПЗУ увеличивается
экспоненциально. В работе представлен новый модульный умножитель,
эффективно работающий со средними и большими размерами модулей.
Схема данного умножителя, работающего с двумя n-битными числами,
21
представленными в нотации СОК, состоит из: (n*n) и ((n-1-k)*k) двоичных
умножителей, где (k<n), трех n-битных сумматоров и комбинаторной схемы
малых размеров. Использование данной схемы умножителя позволяет
значительно сократить время задержки сигнала при получении результата и
аппаратные
ресурсы
опубликованными
по
сравнению
в
с
аналогичными
печати.
схемами,
Отмечается,
чтосхемаотличноподходитдляреализациивБИС.
Вработе [26] представлены два новых подхода к построению быстрых
умножителей в СОК над полем Галуа GF(p), где p - простое число. Первый
подход использует изоморфное отображение из аддитивной группы с
модулем (p-1)надполемGF(p) в сумму наборов субмодулярных аддитивных
групп. Субмодулярные группы выбраны с целью минимизации аппаратных
затрат и увеличения быстродействия. Данный подход не нарушает свойств
полей Галуа. Второй подход использует симметричную арифметику СОК для
выполнения умножения. В нем используется псевдо-примитивный элемент в
качестве генератора для элементов мультипликативной группы в поле GF(p),
в результате чего сокращается количество требуемой для реализации памяти
на 50%, а размерность аппаратных сумматоров - на 1 бит. Отмечается, что
сумматоры, построенные согласно предложенным подходам - быстрее и
компактнее сумматоров, описанных ранее в научной литературе.
Новая схемная архитектура для реализации в БИС сложения и
умножения по модулю (2N-1)и(2N+1)предложенавработе [27]. Предложенная
архитектура позволяет реализовать высокоэффективные комбинаторные и
конвейерные схемы модульной арифметики. Автором показано, что
параллельная префиксная архитектура сумматора хорошо подходит для
реализации быстрых сумматоров с циклическим переносом, применяемых
для модульного сложения. Существующие схемы модульных умножителей
улучшаются с точки зрения быстродействия и регулярности. Это позволяет
использовать обычные техники ускорения умножения, такие как дерево
Уоллеса и перекодировка Бута, получая при этом самые быстрые сумматоры
22
из
всех
известных.
В
заключение,
в
работе
представлен
высокопроизводительный умножитель-сумматор для блочного алгоритма
шифрования
IDEA.
Также,
в
работе
проведено
качественное
и
количественное (на основе технологии стандартных ячеек) сравнение
предложенных
схем
с
существующими
решениями
и
обычными
целочисленными сумматорами и умножителями.
Деление, определение знака чисел и их сравнение - наиболее сложные
операции в СОК, отмечается в работе [28]. Эти недостатки ограничивают
большинство реализаций СОК сложением, вычитанием и умножением. В
данной работе предложено высокоуровневое описание алгоритма деления в
СОК. Также представлена общая аппаратная архитектура алгоритма деления
на
константу
и
его
использование
для
фрактального
кодирования
изображений.
Обобщенный алгоритм деления чисел со знаком в СОК представлен в
работе [29]. Для определения знака и обнаружения переполнения в данном
алгоритме используется техника контроля четности. В сравнении с
традиционными методами определения знака и переполнения, метод
контроля
четности
является
более
эффективным
и
практичным.
Арифметическое деление чисел со знаком реализовано с использованием
двоичного поиска. Отсутствует ограничение на делимое и делитель (кроме
нулевого делителя) и предварительная оценка частного перед началом
деления. С точки зрения аппаратной реализации, требуется хранение всего
одной таблицы для определения четности, а результаты всех других
арифметических операций получаются в результате вычислений. Для
выполнения предложенного алгоритма требуются только простейшие
операции.
Еще один алгоритм деления в СОК представлен в работе [30]. Данный
алгоритм очень прост и напоминает алгоритм деления «в столбик», в
котором
частное
выбирается
таким
образом,
чтобы
гарантировать
23
неотрицательный остаток. В этом алгоритме не требуется определения знака
и ситуации переполнения, масштабирования или избыточных модулей.
Алгоритм послужил фундаментом для следующей работы [31].
Авторыотмечают, что определение позиции старшего ненулевого бита числа
в нотации СОК является основным ограничивающим быстродействие
фактором их алгоритма. Использование алгоритма на двух конкретных
наборах модулей (2k, 2k-1, 2k-1-1) и (2k+1, 2k, 2k-1) позволяет устранить
ограничивающий фактор. Также удалось уменьшить аппаратные ресурсы,
необходимые для определения позиции старшего бита, до одного сумматора.
Следовательно, время вычисления и аппаратные затраты значительно
сократились. Авторы надеются, что это позволило сделать СОК еще более
мощным инструментом для создания компьютеров общего назначения.
Автордругогоалгоритмаделения
[32]
отмечает,
что
нахождение
мультипликативно-обратного элемента для делителя, взаимно простого с
модулем системы, может быть легко выполнено в СОК. Количество итераций
зависит только от величины делителя и модуля системы. В работе детально
проанализированы проблемы реализация алгоритма и представлено полное
решение с использованием частично определенной СОК.
Техника деления, основанная на использовании СОК и связанной с ней
гомогенной смешанной системой счисления, представлена в работе [33].
Частное получается как сумма округленных частичных частных, получаемых
при участии весов в гомогенной смешанной системе и делителя.
Предложенный алгоритм является быстродействующим, не итеративным и
реализуем в параллельной архитектуре при помощи таблиц рассчитанных
значений. В противоположность двоичному делению со сдвигом вправо,
время деления фиксировано и независит от значения делителя.
Таким
образом,
в
результате
анализа
существующей
научно-
технической и патентной литературы можно сделать следующие выводы:
24
1. Вопрос
построения
арифметических
вычислителей
является
достаточно проработанным.
2. Наиболее быстрыми являются методы, выполняющие вычисления
арифметических операций в СОК. Однако такие устройства требуют схем
предварительного перевода чисел из двоичной системы счисления в СОК, а
после обработки необходимо обратное преобразование для совместимости с
традиционной вычислительной архитектурой.
3. Схемы, работающие только в двоичной системе счисления,
позволяют получить блоки суммирования и умножения с логарифмической
сложностью.
4. Рост быстродействия ведет к увеличению количества/коэффициента
ветвления логических элементов, что, в свою очередь, приводит к
увеличению энергопотребления.
5. Недостаточно изучен вопрос построения быстродействующего
арифметического вычислителя с невысоким энергопотреблением.
25
ГЛАВА 2. МАТЕМАТИЧЕСКАЯ МОДЕЛЬ УСТРОЙСТВА С
ПОСЛЕДОВАТЕЛЬНЫМ
ПЕРЕНОСОМ,
ВЫПОЛНЯЮЩЕГО
АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ В ПРЯМЫХ КОДАХ
В
данной
главе
приводится
описание
характеристик
специализированного арифметического модуля и описание различных
блоков, входящих в состав разработанного устройства. Одним из ключевых
блоков практически любой вычислительной машины является арифметикологическое устройство. Выполняемые им элементарные операции, такие как
сложение, вычитание, умножение и деление, лежат в основе других операций
более высоко уровня, от скорости выполнения простейших арифметических
операций в существенной степени зависит производительность всего
вычислительного устройства [34].
Полностью параллельная структура арифметического устройства
позволяет достичь наибольшей скорости выполнения арифметических
операций, но при этом структура устройства становится заметно сложнее и
увеличение разрядности операндов приводит к существенным затратам на
разработку. Полностью последовательная структура существенно проще и
дешевле в разработке и незначительно отличается для операндов различной
длины, но и скорость работы такого устройства существенно меньше, что
приводит к необходимости нахождения компромисса скорости работы
арифметического устройства и сложности его разработки и производства.
2.1.
Способ представления и кодировка чисел при выполнении
арифметических операций
Числа
в
арифметическим
вычислительных
операциям
в
машинах
хранятся
определенной
и
системе
подвергаются
счисления
и
определенном представлении.
В абсолютном большинстве современных вычислительных машин
используется двоичная система счисления для хранения операндов и
26
результата арифметических операций. Хотя двоичная система счисления не
самая оптимальная она является наиболее удобной для реализации в ЭВМ
системой счисления, позволяющей выполнять арифметические операции и
свести к минимуму число ошибок при их выполнении. [35].
При хранении двоичных чисел с фиксированной точкой в памяти
вычислительной машины существует несколько вариантов их представления:
в прямом, обратном или дополнительном коде.
Прямой код.
Прямой код — один из способов представления двоичных чисел с
фиксированной точкой, применяемый в вычислительных устройствах.
Преимущественно прямой код используется для записи неотрицательных
чисел. Но в данной работе предлагается использовать как положительные,
так и отрицательные числа, представленные в прямом коде. Для работы с
отрицательными числами, представленными в прямом коде, вводится
знаковый бит для каждого числа. Для положительных чисел знаковый бит
равняется 0, а для отрицательных – 1. После чего в n-битовой записи числа
содержится n-1разрядов, в которых записан двоичный код модуля числа.
Существенным преимуществом выполнения арифметических операций
в прямом коде является отсутствие необходимости преобразования чисел в
другие способы представлений, такие как дополнительный код, что в
результате
позволяет
арифметических
достичь
операций
и
большей
скорости
существенно
выполнения
снизить
сложность
арифметического устройства [36].
Обратный код.
Другим способом представления двоичных чисел в вычислительных
устройствах, является обратный код. Как и в прямом коде, числа в обратном
коде
состоят
из
знакового
и
цифровых
разрядов.
Представление
положительных чисел в обратном коде идентично представлению их в
прямом коде. Отрицательные числа в обратном коде состоят из единицы,
27
стоящей в знаковом разряде числа, и n-1 следующих бит, содержащих
инвертированные значения двоичного кода числа.
Дополнительный код.
Дополнительный код является самым распространённым способом
представления отрицательных целых чисел в вычислительных устройствах.
Благодаря использованию дополнительного кода, операция вычитания чисел
может быть заменена сложением, таким образом, независимо от того,
выполняется сложение или вычитание, а также независимо от знаков
операндов данные операции выполняются идентично, что позволяет сделать
выполнение данных операций единообразным и упростить устройства,
выполняющие их [37]. Для получения представления отрицательного числа в
дополнительном коде необходимо добавить единицу к его обратному коду,
или вычесть данное число, представленное в прямом коде, из ноля.
Хотя числа, представленные в дополнительном коде, существенно
проще складывать и вычитать, существуют и недостатки, связанные с
применением данного метода. Для каждого введенного числа необходимо
производить проверку его знака и в случае, если число отрицательное,
выполнять его преобразование, затрачивая на это время и ресурсы системы.
Кроме того в некоторых случаях данное преобразование может быть
необходимо выполнить повторно. Например, невозможно выполнить
сравнение
величины
положительного
и
отрицательного
числа
без
вспомогательных преобразований.
По
этой
причине
в
данной
работе
приводится
описание
специализированного арифметического устройства, выполняющего все
операции только лишь в прямых кодах.
2.2.
Блок ввода и шифрации чисел
Как было отмечено выше в данной работе рассматриваются числа в
двоичной системе счисления, представленные в прямых кодах. Таким
образом, для ввода и хранения операндов имеется два регистра длины n,
28
состоящих из одного знакового разряда и n-1цифровых разрядов. Вне
зависимости от выполняемой операции входные значения хранятся в виде
чисел с фиксированной точкой и не подлежат преобразованию в другие
способы представления ни на этапе хранения, ни на этапе вычисления и
получения результата, позволяя благодаря этому достичь более высокой
скорости
арифметического
устройства.
В
таблице
2.1
содержится
представление некоторых 8 битных чисел, обрабатываемых разработанным
арифметическим устройством.
Таблица 2.1 Представление чисел в вычислительном устройстве
Число
в
десятичной
системе Представление
счисления
2.3.
числа
в
вычислительном устройстве
510
000001012
1310
000011012
+010
000000002
-010
100000002
-510
100001012
-1710
100100012
Блок результата
Результатом выполнения арифметических операций является число с
фиксированной
точкой.
При
вычислении
результата
выполнения
арифметических операций над целочисленными n-разрядными операндами
результат в общем случае будет 2n-разрядным числом, что необходимо
учитывать
для
предотвращения
переполнения.
Таким
образом,
при
29
выполнении умножения двух n-разрядных чисел результатом будет 2nразрядное число, а при выполнении сложения и вычитания двух n-разрядных
чисел – результат может содержать n+1 разряд. Операция деления в
вычислительных устройствах вне зависимости от разрядности результата
выполняется лишь с определенным уровнем точности.
Из таблицы 2.1 следует, что в выбранном представлении существует
положительный и отрицательный ноль, имеющие 0 и 1 соответственно на
местах знаковых разрядов и все нули на местах цифровых разрядов. Наличие
положительного и отрицательного ноля является одним из преимуществ
представления чисел в прямом коде, так как в дополнительном коде
отсутствует отрицательная запись ноля. Необходимость использования
положительного и отрицательного ноля следует из того, что в стандарте IEEE
574 для чисел с плавающей точкой используется положительная и
отрицательная запись ноля [38]. Хотя данный стандарт описывает
представление чисел с плавающей точкой, следование ему в некоторой
степени в выполнении арифметических операций с фиксированной точкой
позволяет достичь единообразия в представлении чисел в вычислительных
машинах.
Способ определения знака результата зависит от выполняемой
арифметической операции. При выполнении умножения и деления знаковый
разряд результата определяется из формулы 2.1, где Z r - знаковый разряд
результата, Z o1 - знаковый разряд первого операнда, Z o 2 - знаковый разряд
второго операнда.
Z r  Z o1  Z o2 .
(2.1)
Из формулы 2.1 следует, что при перемножении или делении двух
чисел с одинаковым знаком, положительным или отрицательным, знаковый
разряд будет равен нулю, что соответствует положительному знаку
результата. В случае различных знаков операндов при перемножении или
30
делении знаковым битом результата будет 1, то есть результирующее
значение будет отрицательным.
При выполнении сложения и вычитания использовать формулу 2.1
для получения знакового разряда результата невозможно, так как знак
результата при выполнении сложения и вычитания равен знаку наибольшего
по модулю операнда. При сложении чисел с одинаковым знаком знак
результата будет равен знаку любого из операндов, в случае если знаки
операндов различны или выполняется вычитание, возникает необходимость
проводить сравнение операндов для определения знака результата.
В
большинстве
реализаций
арифметико-логических
устройств
разрядность результата соответствует разрядности входных операндов,
вследствие чего возникает угроза переполнения разрядной сетки результата
[39]. Как отмечалось выше при выполнении сложения и вычитания двух nразрядных чисел результат может содержать n+1разряд, а при выполнении
умножения и деления 2nразрядов.
Выполнение переноса
При выполнении операции сложения (вычитания), в случае их
последовательной реализации, для каждого разряда необходимо вычислить
результат данного разряда и определить будет ли выполняться перенос (заем)
в старший разряд. При выполнении операции сложения значение i-го разряда
результата описывается формулой 2.2, где Ri - i-й разряд результата
суммирования, R1i - i-й разряд первого операнда, R2i - i-й разряд второго
операнда,
P
i 1
- бит переноса, полученный в предыдущем разряде. Очевидно,
что для младшего разряда перенос из предыдущего разряда отсутствует и
устанавливается равным нулю.
Ri  R  R  P .
1i
2i
i1
(2.2)
Необходимость учета переноса из предыдущего разряда не позволяет
реализовать сложение и вычитание всех разрядов чисел параллельно, как это
происходит с логическими операциями сложения и умножения. Перенос
31
выполняется, когда два и более из трех битов, среди которых перенос из
предыдущего разряда, i-й разряд первого операнда и i-й разряд второго
операнда, равны единице.
2.4.
Искусственный нейрон
Формальный нейрон – это упрощенная математическая модель
биологического нейрона, которая используется для того, чтобы проводить
построение
и
Искусственный
моделирование
нейрон
искусственных
представляет
собой
нейронных
сумматор
сетей.
сигналов,
поступающих на входы нейрона, которые имеют различный вес. На рисунке
2.1 изображена структура искусственного (формального) нейрона [40].
w1
w2
Σ
F(s)
...
wn
Рисунок 2.1 - Структура формального нейрона.
Из рисунка 2.1 следует, что каждый из входов искусственного нейрона
имеет определенный вес wi , благодаря чему сигналы, поступающие на вход
искусственного нейрона, оказывают различное влияние на выходное
значение нейрона. После поступления сигналов на входы по формуле 2.3
вычисляется их взвешенная сумма.
n
S   wi  xi .
(2.3)
i 1
После того как была получена взвешенная сумма входных сигналов
нейрона,
вычисляется
выходное
значение
нейрона
в
согласии
с
одноместнойфункцией, принимающей взвешенную сумму сигналов в
32
качестве аргумента. Данная функция называется активационной или
передаточной функцией[41].
Активационная функция искусственного нейрона f(x) определяет
влияние взвешенной суммы входных сигналов нейрона на его выходной
сигнал. В большинстве случаев функцияактивации является монотонно
возрастающей функцией с областью значений в диапазоне [0,1] или [-1,1], но
в некоторых случаях выходной сигнал искусственного нейрона может лежать
и в других диапазонах. Еще одним требованием, налагаемым на
активационную
функцию
алгоритмом
обучения,
может
являться
дифференцируемость на всем интервале входных значений.Передаточная
функция имеет ключевое значение в реализации формального нейрона.
Линейная активационная функция
В случае применения линейной активационной функции выходной
сигнал
искусственного
нейрона
зависит
линейно
от
взвешенной
суммывходных сигналов.
f ( x)  t  x .
Параметр
функции
(2.4)
tв
формуле
(2.4)
определяет
крутизну
активационной функции. Нейроны с линейной активационной функцией
зачастую применяются в качестве входных нейронов многослойной
искусственной
нейронной
сети.Полулинейная
передаточная
функция
является модификацией линейной функции. Полулинейная активационная
функция, также называемая шаговой, отличается от линейной функции тем,
что за пределами диапазона [0,1] ее значения являются фиксированными.
Шаговая активационная функция представлена формулой (2.5).
0 if x  0


f ( x)  1 if x  1

 x else

(2.5)
33
Ограничением
применения
шаговой
передаточной
функциипо
сравнению с линейной передаточной функцией является то, что она не
является гладкой, а следовательно не имеет дифференциал на всей числовой
оси, поэтому она не может применяться при использовании некоторых
алгоритмов обучения.
Пороговая активационная функция
При использовании пороговой активационной функции выходной
сигнал формального нейрона равен нулю до тех пор, покавзвешенная сумма
входных сигналов не достигнет заранее определенного порогового значения
T
, выходное значение формального нейрона является равным нулю. При
достижении
порогового
значения
выходной
сигнал
скачкообразно
устанавливается в значение равное единице, в результате чего выходной
сигнал может принимать лишь два фиксированных значения. Пороговая
активационная функция описана формулой (2.6).
1 if x  T

f ( x)  

0 else
(2.6)
Сдвиг пороговой функции по горизонтальной оси в формуле (2.6)
определяется параметром
T
, а переменной xсоответствует взвешенная
суммавходных сигналов нейрона. Данная функция, как и шаговая функция,
не является гладкой и не дифференцируема на всей оси, вследствие чего она
не
может
применяться
при
использовании
алгоритма
обратного
распространения ошибки и других алгоритмов, использующих производную
передаточной функции для вычисления поправки.
34
Рисунок 2.2 Пороговая активационная функция
Сигмоидальная пороговая функция
Сигмоидальные
передаточные
функции
получили
широкое
распространения благодаря тому, что они позволяют получать произвольное
выходное значение, находящееся в заданном диапазоне. В то время как
пороговые
функции
активации
могут
быть
эффективны
в
задачах
классификации, где бинарное выходное значения является достаточным для
решения задачи. Сигмоидальные функции имеют на выходе аналоговые
значения
и
широко
применяются
в
скрытых
слоях
многослойных
искусственных нейронных сетей.
Логистическая функция
Формулой (2.7) описана логистическая активационная функция.
 ( x) 
1
.
1  e tx
(2.7)
В формуле (2.7) x–взвешенная сумма входных сигналов нейрона, а t —
параметр
крутизныфункции.
При
стремлении
tк
бесконечности
логистическая активационная функция вырождается в пороговую функцию
активации. При t  0 функция вырождается в постоянную передаточную
функцию с фиксированным значением 0,5. Значения логистической
активационной
функции
находится
в
интервале
(0,1).
Широкое
35
распространение
логистической
активационной
функции
обусловлено
простотой вычисления ее производной, представленной формулой (2.8).
d ( x)
 t  f ( x)(1  f ( x)) .
dx
(2.8)
Поэтому при использовании алгоритма обратного распространения
ошибки
для
обучения
искусственной
нейронной
сети
производная
логистической функции может быть легко вычислена через значение самой
функции, что позволяет более эффективно вычислять поправки весовых
коэффициентов при обучении нейросети.
Нейросетевой элемент сумматора вычитателя
В данной работе в блоке арифметического устройства, выполняющего
суммирование и вычитание, предлагается использовать нейросетевой
элемент. Так как его назначение в данном случае заключается в определении
выполняемой операции, сложения или вычитания, в зависимости от входных
знаков, нет необходимости применять формальный нейрон с сигмоидальной
или
логистической
функцией,
данную
задачу
эффективно
решает
искусственный нейрон с пороговой функцией [42]. Формальный нейрон,
определяющий выполняемую арифметическую операцию, представлен на
рисунке 2.3.
Рисунок 2.3 Формальный нейрон в сумматоре-вычитателе
36
Выходной сигнал блока представленного на рисунке 2.3 определяет,
какой
из
выходных
сигналов
является
результатом
выполняемой
арифметической операции [43]. Выходной сигнал формального нейрона
может быть описан выражением 2.9.
CB  (ЗрПЧ & ЗрВЧ )  (ЗрПЧ & ЗрВЧ ) .
(2.9)
Таким образом, формальный нейрон выполняет операцию сложения по
модулю два знаковых разрядов операндов, выходное значение равное нулю
указывает на то, что необходимо выполнять операцию сложения, а сигнал
формального нейрона равный единице соответствует операции вычитания.На
рисунке 2.3 каждому входному значению соответствует число – весовой
коэффициент данного входного сигнала, а напротив выхода пороговое
значение, равное в данном случае единице. Согласно формуле 2.6 выходное
значение формального нейрона равняется единице, когда взвешенная сумма
входных значений больше или равна пороговому значению.
1 if
 1 ЗрПЧ  2  (ЗрПЧ  ЗрВЧ )  (1)  ЗрВЧ  1
CB  

0 else
(2.10)
Формула 2.10 описывает вычисление выходного значения формального
нейрона через весовые коэффициенты входных сигналов, где
знаковый разряд первого числа, а
ЗрВЧ
ЗрПЧ
-
- знаковый разряд второго числа.
2.5. Модуль ускоренного умножения
Классический способ умножения двоичных чисел в вычислительной
технике заключается в последовательном получении частичных сумм и
сдвиге промежуточного результата на один разряд [44]. Таким образом,
выполняется следующий порядок действий:
1. Ввод первого числа.
2. Ввод второго числа.
3. Установка нулевого значения регистра результата.
37
4. Для каждого разряда множителя, частичное произведение, равно
множимому, если младший разряд множителя равен единице, либо
равно нулю, если младший разряд множителя равен нулю.
5. Сдвиг результата на один разряд влево.
6. Добавление частичной суммы к регистру результата.
7. Сдвиг множителя на один разряд вправо.
8. Повторение с шага 4 до тех пор, пока в регистре множителя не
останется нулевое значение.
Из
описанной
выше
последовательности
выполняемых
арифметическим устройством операций следует, что при выполнении
умножения двоичных n-разрядных чисел результатом будет 2n-разрядное
двоичное число, а для получения результата умножения необходимо
выполнить в общем случае nсдвигов. Представленная выше схема
умножения описывает выполнение данной операции от младших разрядов к
старшим, умножение можно выполнять и от старших разрядов к младшим,
изменив лишь сдвиг регистров на противоположный [45].Кроме того,
существует два способа добавления результата частичного произведения:
сдвигать регистр результата на один разряд влево после добавления каждого
частичного произведения или добавлять результат частичного произведения,
сдвигая его на один разряд вправо при переходе к следующему разряду
множителя. Изменение способов сдвига или порядка умножения не влияет на
количество выполняемых операций, следовательно, во всех этих случаях
время выполнения умножения будет неизменным.
Для ускорения выполнения операции умножения в данной работе
предлагается реализовать анализ не одного младшего бита множителя, а
сразу двух бит, в результате чего в общем случае количество сдвигов при
умножении n-битных чисел будет равно n/2. Для двух бит существует четыре
возможных комбинации значений: 00, 01, 10, 11. Для каждого состояния двух
младших бит множителя выполняется определенный набор операций, таким
38
образом,
для
умножения
двух
чисел
выполняется
следующая
последовательность действий:
1. Ввод первого числа.
2. Ввод второго числа.
3. Установка нулевого значения регистра результата.
4. Для каждого разряда множителя, частичное произведение, равно:

нулю, если два младших разряда равны 00;

множимому, если два младших разряда равны 01;

множимому, сдвинутому на один разряд влево, если два
младших разряда равны 10;

сумме множимого, сдвинутого на один разряд влево, и
множимого без сдвига, если два младших разряда равны 11.
5. Сдвиг результата на два разряд влево.
6. Добавление частичной суммы к регистру результата.
7. Сдвиг множителя на два разряд вправо.
8. Повторение с шага 4 до тех пор, пока в регистре множителя не
останется нулевое значение.
Таким образом, для каждой из комбинаций двух бит можно заранее
вычислить соответствующее частичное произведение и впоследствии
добавлять полученное значение к промежуточному результату, уменьшив
количество сдвигов вдвое, а количество сложений на 1/8 от общего числа
данных операций.
При выполнении умножения знак результата определяется независимо
от вычисления результата умножения при помощи операции суммы по
модулю два. На рисунке 2.4 приводится схема устройства ускоренного
умножения.
На рисунке 2.4 содержится блок ввода данных (БВД), при помощи
которого выполняется ввод операндов и определяется знак результата
умножения. Блок регистра множителя (БРгМЖ) содержит введенный
39
множитель в прямом коде с фиксированной запятой. Блок регистра
множимого представлен обозначением БРгМН. Блок дешифратора (БДШ)
необходим для анализа младших анализов множителя и определения
последующих действий. Блок суммирования БСУМ предназначен для
сложения частичных произведений, получаемых после анализа младших
разрядов множителя. Блок хранения результата (БХР) содержит полученный
результата
произведения,
а
блок
управления
(БУ)
необходим
для
синхронизации работы устройства [46].
Стоит заметить, что данный метод позволяет увеличить скорость
умножения, если анализировать не два младших бита, а три или четыре бита.
Сложность реализации в таком случае будет удваиваться при добавлении
каждого последующего бита, в результате чего стоимость разработки и
сложность полученного устройства существенно возрастает, что делает
увеличение числа анализируемых бит менее эффективным.
Рис. 2.4. Структурная схема блока ускоренного умножения на нейронах
40
2.6.Математическая
модель
сумматора-вычитателя
чисел
с
фиксированной точкой
В данном разделе приводится описание математической модели
специализированного арифметического устройства, выполняющего все
операции только лишь в прямых кодах. Для ввода и хранения операндов
имеется два регистра длины n, состоящих из одного знакового разряда и n-1
цифровых разрядов. Вне зависимости от выполняемой операции входные
значения хранятся в виде чисел с фиксированной точкой и не подлежат
преобразованию в другие способы представления ни на этапе хранения, ни на
этапе вычисления и получения результата,избегая переходов к другим
представлениям,
что
позволяет
достичь
более
высокой
скорости
арифметического устройства. Результатом выполнения арифметических
операций является число с фиксированной точкой. При выполнении
сложения и вычитания двух n-разрядных чисел – результат может содержать
n+1 разряд. Это необходимо учитывать чтобы избежать переполнения. Знак
результата при выполнении сложения и вычитания равен знаку наибольшего
по модулю операнда.
Будем рассматривать числа из интервала [0;1). Номером разряда будем
считать
его
расположение
после
точки
в
представлении
числа
с
фиксированной точкой, т.е. старшим будет являться разряд с меньшим
номером. При выполнении операции сложения и вычитания, для каждого
разряда необходимо вычислить результат данного разряда и определить
будет ли выполняться перенос (заем) в старший разряд. При выполнении
операции сложения значение i-го разряда результата описывается формулой
(2.11), где Si - i-й разряд результата суммирования, Аi- i-й разряд первого
операнда, Вi - i-й разряд второго операнда, Pi+1 бит переноса, полученный в
предыдущем разряде.
Si = Ai Bi Pi+1 𝑉 Ai Bi Pi+1 𝑉Ai Bi Pi+1 𝑉 Ai Bi Pi+1 = Ai Bi  Pi+1 . (2.11)
41
Для младшего разряда перенос из предыдущего разряда отсутствует и
устанавливается
равным
нулю.Необходимость
учета
переноса
из
предыдущего разряда не позволяет реализовать сложение и вычитание всех
разрядов чисел параллельно. Перенос выполняется, когда два и более из трех
битов, среди которых перенос из предыдущего разряда,i-й разряд первого
операнда и i-й разряд второго операнда, равны единице. Перенос Piв старший
разряд вычисляется по формуле.
𝑃i = Ai Bi 𝑉Ai Pi+1 𝑉Bi Pi+1 .
(2.12)
В диссертационной работе в блоке арифметического устройства,
выполняющего суммирование и вычитание, предлагается использовать
нейросетевой
элемент.
выполняемой
операции,
Его
назначение
сложения
эффективно решает формальный
или
заключается
в
определении
вычитания,
данную
задачу
нейрон с пороговой функцией. Два
нейроподобных элемента определяют арифметическую операцию, которую
необходимо
выполнить
сумматору-вычитателю.
Нейроны
выполняют
логические операции суммы по модулю два. Выходной сигнал с выхода
второго нейрона вычисляет арифметическую операцию и может быть описан
формулой.
СВ = (ЗнРВ КОП)ЗнРА.
(2.13),
где CВ – управляющий сигнал, признак операций суммирование или
вычитание, ЗнРВ–знаковый разряд второго двоичного числа, ЗнРА–знаковый
разряд первого двоичного числа, КОП – код операции.
Формальный нейрон выполняет операцию сложения по модулю два
знаковых разрядов операндов и кода операции. Выходное значение равное
нулю указывает на то, что необходимо выполнять операцию сложения, а
сигнал формального нейрона равный единице соответствует операции
вычитания.
Классической
иллюстрацией
в
применении
пороговых
и
нейроподобных элементов является работа параллельного сумматоравычитателя со сквозным переносом на нейронах. Арифметические операции
42
суммирования или вычитанияв устройстве выполняет одноразрядный
сумматор-вычитатель. Этот блок содержит пороговые элементы, инвертор и
логические схемы. Сумматорвыполнен на пороговом элементе. Схема
определения
сквозного
переноса
выполняет
функцию
определения
межразрядного переноса при суммировании и заёма при вычитании
выполнена на мажоритарных элементах. На выходе каждой схемы
формируются логические функции.
При выполнении арифметической операции суммирования
Пi Зi = (Зрi БЧ&Зрi МЧ) V(Зрi БЧ&Пi+1 Зi+1 )V ( Зрi МЧ&Пi+1 Зi+1 ).(2.14)
при выполнении арифметической операции вычитания
Пi Зi = (Зрi БЧ&Зрi МЧ)V(Зрi БЧ&Пi+1 Зi+1 )V ((Зрi БЧ&Зрi МЧ&Пi+1 Зi+1 ). (2.15)
где Пi Зi –iсигнал переноса-заёма, Пi+1 Зi+1сигнал переноса-заёма i+1-го
разряда после точки двоичного числа, Зрi БЧ– знаковый разряд большего
числа, Зрi МЧ– знаковый разряд меньшего числа.
На входы порогового элемент параллельного сумматора-вычитателя
поступают двоичные разряды первого и второго чисел и перенос-заем из
младшего разряда в старший и перенос-заем сформированный в i разряде, а
также признак суммирования-вычитания. Логические элементы выполняют
функцию электронных ключей. Управляющим сигналом для них является
признак суммирования-вычитания – "0". Одноместный предикат "0" =(СВ=0)
зависит от знака операции СВ. Если знак операции суммирования-вычитания
будет равен нулю, то вычисляется операция суммирования, а предикат "0"
будет истинным и иметь значение 1. Если же знак операции суммированиявычитания будет равен единице, то выполняется операция вычитания, а
предикат "0" будет ложным и иметь значение 0.
Структурную схему n- разрядного сумматора-вычитателя можно
представить в виде множества локальных подсистем (вершин графа) и
обменные потоки (дуги графа). Вершинами графа являются решающие
схемы
устройства,
дугами
графа
входные
данные
или
результаты
43
функционирования
названных
структурных
компонентов.
Следует
рассмотреть получение результата в виде переноса из младших разрядов в
старшие или заёма из старших разрядов в младшие, а также вычисление
суммы или разности двоичных чисел. Рассмотрим систему логических
функций для вычисления переноса-заёма и суммы и разности для самого
правого, младшего n-ого разряда входных чисел. Для вычисления суммы
чисел определение n -огоразряда переноса вычисляется по формуле:
̅̅̅̅,
П𝑛 З𝑛 = (БРгБЧ𝑛 &БРгМЧ𝑛 &"0")  (БРгБЧ𝑛 &БРгМЧ𝑛 БРгМЧ𝑛 )&"0"
(1.16)
где значение символа “0” выбора операции равно 1.
При
вычислении
разности
определение
n–ого
разряда
заёма
вычисляется также по формуле (6), только значение символа “0” равно 0.
Вычисление n-ого разряда суммы или разности с учетом выражения
(6) при соответствующем значении символа “0” выбора
операции
производится по формуле:
̅̅̅̅.
РЕЗn = (БРгБЧn БРгМЧ𝑛 )&"0"(БРгБЧn БРгМЧ𝑛 )&"0"
(2.17)
Для i-ого двоичного разряда вычисление i-ого разряда переноса-заёма
осуществляется по формуле:
П𝑖 З𝑖 = ((БРгБЧi СУМ/ВЫЧi &Пi+1 Зi+1 )&"0"
(БРгБЧi &БРгМЧi БРгМЧi СУМ/ВЫЧi &Пi+1 Зi+1 Пi+1 Зi+1 )&̅̅̅̅
"0". (2.18)
44
Блок регистра большего числа и
БРг
БЧ
.

.
.
.
.
. . .
П/З
С/
В
.
.
БРг
МЧ
.
.
.
.
РЕЗ1
БРг
БЧ
БРг
БЧ


П/З
.
.
.
“0”
С/
В
БРг
МЧ
РЕЗn-1
БРг
Р
П/З
С/
В
.
СУМ/ВЫ
Ч
БРг
Р
БРг
МЧ
РЕЗn
БРг
Р
Блок регистра
меньшего числа
Блок регистра результата
Вычисление i-ого разряда суммы по формуле:
РЕЗi = СУМ/ВЫЧi Пi+1 Зi+1.
(2.19)
Вычислениеi-ого разряда разности по формуле:
РЕЗi = БРгМЧi БРгБЧi &БРгМЧi  Пi+1 Зi+1 
БРгБЧi &Пi+1 Зi+1 БРгБЧi &БРгМЧi &Пi+1 Зi+1.
(2.20)
А тогда общая формула вычисления i-го разряда результата имеет вид:
РЕЗi = (СУМ/ВЫЧi Пi+1 Зi+1 )&"0"(БРгМЧi БРгБЧi &БРгМЧi  Пi+1 Зi+1 
̅̅̅̅̅.
БРгБЧi &Пi+1 Зi+1 БРгБЧi &БРгМЧi &Пi+1 Зi+1 )&»0»
(2.21)
45
Полученные двоичные разряды суммы и разности двоичных чисел
параллельно поступают на входы триггеров блока регистра результата БРгР.
По команде из блока управления происходит запись и хранение результата
вычислений в памяти вычислительного модуля.
2.7.Выводы по главе
В данной главе приведена математическая модель арифметического
устройства, выполняющего арифметические операции в прямых кодах, среди
которых параллельное сложение/вычитание с последовательным переносом и
ускоренный умножитель и содержатся следующие результаты:
1. Способ представления чисел в арифметическом устройстве, их
кодировка. Входные числа будут представлены в двоичной системе
счисления в прямом коде со своим знаком.
2. Описание блока шифрации чисел, с помощью которого происходит
ввод чисел, а также преобразование из десятичного кода в двоичный.
3. Описание блока результата, процессов выполнения заёма и переноса,
анализ переполнения разрядной сетки результата.
4. Описание математической модели формального нейрона, его
структура, виды активационных функций и обоснование выбранных
характеристик.
5. Описание блока ускоренного умножения, и алгоритмическое
обоснование его эффективности.
46
ГЛАВА
3.
МОДЕЛИ-
АРХИТЕКТУРА,АЛГОРИТМ
РОВАНИЕ
РАБОТЫ
УПРАВЛЕНИЯ
И
СПЕЦИАЛИЗИРОВАННОГО
СУММАТОРА-ВЫЧИТАТЕЛЯ НА НЕЙРОНАХ
Параллельный
3.1.
сумматор-вычитатель
на
нейронах
со
сквознымпереносом
В
современных
выполняется
с
цифровых
применением
устройствах
дополнительного
операция
или
вычитания
обратного
кода.
Отрицательные числа представляются в дополнительном или обратном
кодах. Если получен отрицательный результат, то осуществляется перевод в
дополнительный или обратный код. Если получен положительный результат,
то перевода в коды не происходит.
Известен алгоритм сложения чисел в прямых кодах. Этот алгоритм
позволяет сразу получить правильный результат в прямом коде. В этом
случае необходимо применить операцию вычитания чисел. Для этого
используется комбинационная схема вычитателя чисел в прямых кодах.
Для получения суммы двух чисел возможны два случая: 1) слагаемые
имеют одинаковые знаки; 2) слагаемые имеют разные знаки. Во втором
случае необходимо применить операцию вычитания чисел. Для этого
используется комбинационная схема вычитателя чисел в прямых кодах.
Если числа имеют одинаковые знаки, то необходимо
сложить два
числа, а сумме присвоить знак одного из слагаемых. Вычисление суммы двух
чисел с разными знаками осуществляется
следующем образом: 1)
сравниваются знаки слагаемых и, если они одинаковы, то выполняется
сложение по первому алгоритму; 2) если знаки слагаемых разные, то
сравниваются числа по абсолютной величине; 3) если есть необходимость,
переставить числа местами, чтобы вычитать из большего меньшее; 4)
произвести вычитание двух чисел; 5) результату присвоить знак большего
слагаемого.
47
Параллельный
сумматор-вычитатель
на
нейронах
со
сквозным
переносомпредставлен на рис. 3.1 содержит: блок ввода чисел, блок
компарации,блок регистра большего числа, блок суммирования-вычитания,
схему определения сквозного переноса-заёма, блок регистра меньшего числа,
блок
регистра
результата,
блок
управления,
пороговые
элементы,
нейроны[47, 48].
Структурная схема параллельного сумматора-вычитателя
на нейронах со сквозным переносом
Рис.3.1
Блок ввода чисел БВЧ служит для ввода операндов и знака операции,
блок компарацииБКО служит для сравнения чисел А и В, если необходимо
48
выполнить операцию вычитания,блок регистра большего числа БРгБЧ
служит для хранения первого числа в случае выполнения операции сложения
или для хранения большего по модулю числа в случае выполнения операции
вычитания,схема определения сквозного переноса-заёма СхОСП служит для
получения сквозного переноса при сложении и заёма при вычитании, блок
суммирования-вычитания БСВ служит для выполнения операций сложения
или вычитания,блок регистра меньшего числа БРгМЧ служит для хранения
второго числа в случае выполнения операции сложения или для хранения
меньшего по модулю числа в случае выполнения операции вычитания,блок
регистра результата БРгР служит для хранения суммы при сложении или
разности при вычитании чисел, а также знака результата, блок БУ служит для
управления устройством.
3.2Работа параллельного сумматора-вычитателя на нейронах со
сквозным переносом
Внешние упpавляющие сигналы "СБPОС" и "ПУСК"
поступают в
блок упpавления. С выхода шифратора поступают в регистры большего
числа и меньшего числа двоичные числа А2 и В2. На сумматоре по модулю
два определяется знак результата. Если числа имеют одинаковые знаки, то
вычисляется сумма чисел. Знак результату присваивается знак любого из
слагаемых. Если знаки чисел разные, то выполняется операция вычитания.
Из большего по модулю числа вычитается меньшее. Знак результату в этом
случае присваивается знак большего по модулю числа. Предлагаемое
арифметическое устройство выполняет операции суммирования и вычитания
в параллельной форме. Определяется сквозной перенос в старшие разряды
при суммировании, который необходимо учитывать при сложении чисел.
Вычисляется сквозной заем из старших разрядов в младшие при вычитании.
49
3.3. Блок-схема алгоритма управленияпараллельного сумматоравычитателя на нейронах со сквозным переносом
Блок-схема алгоритма управления цифрового автомата представлена
на рис.3.2.
Для описания алгоритма работы блока управления используются
следующие идентификаторы.
1. ПЧ - первое число.
2. ВЧ - второе число.
3. ДБЧ – двоичные разряды большего числа.
4. ДМЧ - двоичные разряды меньшего числа.
5. РВ - сигнал равенства чисел, поступивший с выхода компаратора.
6. БЛ - сигнал больше, поступивший с выхода блока компаратора.
7. МН - сигнал меньше, поступивший с выхода блока компаратора.
8. ЗнР - знаковый разряд.
9. СВ - сигнал суммы-вычитания.
10. РЕЗi - двоичные разряды результата.
11. УП - информационный сигнал управления работой блока регистра
результата, включающий в себя сигналы: обнуления, синхронизации,
разрешения записи, хранения, выдачи.
12. ВБЧ - выходная двоичная информация большего числа.
13. ВМЧ - выходная двоичная информация меньшего числа.
14. СУП - информационный сигнал управления работой блока регистра
меньшего числа, включающий в себя сигналы: обнуления, синхронизации,
разрешения записи, хранения, выдачи.
15. СУ - информационный сигнал управления работой блока регистра
большего числа, включающий в себя сигналы: обнуления, синхронизации,
разрешения записи, хранения, выдачи.
16. ЗнрА - знаковый разряд первого числа.
17. ЗнрВ - знаковый разряд второго числа.
50
18. ЗрiПЧ – двоичные разряды первого числа.
19. ЗрiВЧ – двоичные разряды второго числа.
20. ЗрiБЧ - двоичные разряды большего числа.
21. ЗрiМЧ - двоичные разряды меньшего числа.
22. ЗнРР – знаковыйразрядрезультата.
23. ПП - признак получения правильного результата.
24. ПРЗМ – двоичный код полученных сквозных переносов и заемов.
25. КОП – двоичный код операции.
26. ЗП – сигнал записи двоичной информации в триггеры блока
регистра большего числа.
27. ЗАП - сигнал записи двоичной информации в триггеры блока
регистра меньшего числа.
28. СБРОС - сигнал сброса (обнуления) всех комбинационных блоков
и элементов памяти сумматора-вычитателя.
29. ПУСК - сигнал начало работы сумматора-вычитателя.
В блоке 2 алгоритма осуществляется подача сигнала установки в
нулевое состояние - “УОО” на входы всех элементов устройства, в блоке 3
алгоритма происходит установка сигнала сброса в единичное значение
“СБРОС:=1”.
В блоке 4 алгоритма осуществляется подача внешнего сигнала “ПУСК”
в блок управления сумматора-вычитателядля разрешения работы сумматоравычитателя.
В блоке 5 алгоритма осуществляется подача на вход блока компаратора
первого и второго чисел, поступивших с выходов блока ввода данных по
командам БКО:=ПЧ, БКО:=ВЧ.
В блоке 6 алгоритма определяется сигнал «сумма-вычитание»СВ,
который определяет какую операцию необходимо выполнять сложение или
вычитание, где также учитывается код операции. Этот сигнал определяется
по операции сложения по модулю два СВ:=ЗрАЗрВ КОП.
51
В блоке 7 алгоритма осуществляется анализ сигнала «суммавычитание» СВ. Если сигнал СВ равен нулевому значению, то выполняется
операция сложение - выход 0 блока, при этом количество знаков минус
равно четному числу, если единичному значению - выход 1 блока, то
выполняется операция вычитание, в этом случае количество знаков минус
нечетное при вводе знаков чисел и кода операции.
В блоке 8 алгоритма сигнал сумма-вычитание СВ принимает значение
нуля СВ := 0, при этом устройство выполняет операцию сложения, и
осуществляется блокировка работы компаратора по приходу сигнала СВ,
поступившего из блока ввода чисел. В этом случае на вход сумматоравычитателя из блока ввода чисел поступают числа с одинаковыми знаками и
код операции равен знаку плюс, или с разными знаками и код операции равен
знаку минус, при этом сравнение чисел производить не нужно.
В блоке 9 алгоритма по командам ЗП:=1, ЗАП:=1 происходит подача
разрешающих сигналов на запись двоичных кодов входных чисел. Эти
сигналы поступают на входы блоков регистров большего и меньшего числа
из блока управления. После этого происходит запись входной информации в
регистры блоков.
В блоке 10 алгоритма по командам БРгБЧ:=ПЧ, БРгМЧ:=ВЧ
осуществляется загрузка первого и второго числа в регистры блоков
большего и меньшего числа.
В блоке 11 алгоритма по командам СхОСП := ВБЧ, СхОСП := ВМЧ
происходит подача входных чисел на входы схемы определения сквозного
переноса-заёма. По командам БСВ:=ВБЧ, БСВ:=ВМЧ происходит подача
чисел на блок сумматора-вычитателя. На входы блоков поступают двоичные
коды входных чисел.
В блоке 12 алгоритма осуществляется операция суммирования чисел и
сквозного переноса-заёма по команде СУМ:=ВБЧ + ВМЧ + ПРЗМ.
52
Блок-схема алгоритма управления параллельного
сумматора-вычитателя на нейронах со сквозным переносом
Рис.3.2
В блоке 13 алгоритма по команде СВ:=1 сигнал суммы-вычитания
принимает единичное значение. В этом случае количество знаков минус
является нечетным числом. Входные числа с блока ввода данных имеют
53
разные знаки и код операции равен знаку плюс, или числа одинаковые знаки,
а код операции равен знаку минус. В этом случае необходимо выполнить
операцию сравнения модулей чисел, для того чтобы определить большее и
меньшее из чисел для выполнения операции вычитания. Компаратор
отпирается единичным сигналом «сумма-вычитание» СВ.
В блоке 14 алгоритма по командам: КОМ:=ПЧ, КОМ:=ВЧ на вход
компаратора поступают первое и второе число с выхода блока ввода данных
для выполнения операции сравнения между ними.
В блоке 15 алгоритма происходит подача отпирающих сигналов из
блока управления на входы блоков регистров большего и меньшего числа по
командам: ЗП:=1, ЗАП:=1 для записи информации в регистры.
В блоке 16 алгоритма осуществляется загрузка операндов в регистры
блоков большего и меньшего числа по командам: БРгБЧ:=БЧ, БРгМЧ:=МЧ.
В блоке 17 алгоритма по командам: СхОСП:=ВБЧ, СхОСП:=ВМЧ
происходит подача входных чисел на входы схемы определения сквозного
переноса-заёма. По командам: БСВ:=ВБЧ, БСВ:=ВМЧ на вход блока
сумматора-вычитателя поступает первое и второе число для выполнения
операции вычитания.
В
блоке
18
алгоритма
по
команде
РАЗ:=ВБЧ-ВМЧ-ПРЗМ
осуществляется операция вычитание между входными числами. Из большего
по модулю числа вычитается меньшее. По этой операции вычисляется
разность РАЗ чисел.
В блоке 19 алгоритма по командам: БРгР:=РЕЗ, БРгР:=ЗнР происходит
запись результата и его знака в регистр блока результата.
Блок 20 алгоритма является конечным.
3.4.
Результаты моделирования работы параллельного сумматоравычитателяна нейронах со сквозным переносом
На рис.3.3 представлен пример сложения положительных чисел.
Входные числа вводятся в десятичной системе счисления со своими знаками
54
в разделе “Входные операнды”. В данном случае оба числа положительные.
В разделе “Знаковые разряды” входные числа имеют нулевые знаковые
разряды. В регистрах входных чисел операнды представлены в двоичной
системе счисления в шестнадцатиразрядном двоичном коде. Способ
выполнения арифметической операции в разделе “Режим” установлен
“Автоматически”. Входные числа имеют положительные знаки, которые
определяют арифметическую операцию. В данном случае выполняется
арифметическая операция сложения.
Рис.3.3
В разделе “Знаковые разряды”определены знаковые разряды входных
чисел в двоичной системе счисления. Программа, моделирующая работу
сумматора-вычитателя, выполняет арифметическую операцию сложения
чисел в двоичной системе счисления в параллельном режиме со сквозным
переносом. В разделе “Регистр результата” выведен результат выполнения
55
операции сложения чисел и представлен в шестнадцатиразрядном двоичном
коде. В разделе “Результат вычисления” сумма чисел представлена в
десятичной системе счисления.
На рис.3.4 представлен пример вычитания чисел. Входные числа
вводятся в десятичной системе счисления со своими знаками в разделе
“Входные операнды”. В данном случае одно число отрицательное, другое
положительное. В разделе “Знаковые разряды” входные числа имеют
соответственно единичное и
нулевое значение знаковых разрядов. В
регистрах входных чисел операнды представлены в двоичной системе
счисления в шестнадцатиразрядном двоичном коде.
Рис.3.4
Способ выполнения арифметической операции в разделе “Режим”
установлен “Автоматически”. Входные числа имеют разные знаки, которые
определяют арифметическую операцию. В данном случае выполняется
56
арифметическая
операция
вычитание.
В
разделе
“Знаковые
разряды”определены знаковые разряды входных чисел в двоичной системе
счисления.
Программа,
моделирующая
работу
сумматора-вычитателя,
выполняет арифметическую операцию вычитания чисел в двоичной системе
счисления в параллельном режиме со сквозным переносом. При выполнении
операции вычитания чисел необходимо выполнить операцию сравнения
модулей операндов. От большего по модулю числа вычесть меньшее, знак
результату присвоить знак большего. В разделе “Регистр результата”
выведен результат выполнения операции вычитания чисел и представлен в
шестнадцати-разрядном двоичном коде. В разделе “Результат вычисления”
разность чисел представлена в десятичной системе счисления.
На рис.3.5 представлен пример вычитания чисел. Входные числа
вводятся в десятичной системе счисления со своими знаками в разделе
“Входные операнды”. В данном случае одно число положительное,
другоеотрицательное. В разделе “Знаковые разряды” входные числа имеют
соответственно нулевое и единичное значение знаковых разрядов. В
регистрах входных чисел операнды представлены в двоичной системе
счисления в шестнадцатиразрядном двоичном коде. Способ выполнения
арифметической операции в разделе “Режим” установлен “Автоматически”.
Входные числа имеют разные знаки, которые определяют арифметическую
операцию. В данном случае выполняется арифметическая операция
вычитания. В разделе “Знаковые разряды”определены знаковые разряды
входных чисел в двоичной системе счисления. Программа, моделирующая
работу
сумматора-вычитателя,
выполняет
арифметическую
операцию
вычитаниячисел в двоичной системе счисления в параллельном режиме со
сквозным
переносом.
При
выполнении
операции
вычитания
чисел
необходимо выполнить операцию сравнения модулей операндов. От
большего по модулю числа вычесть меньшее, результату присвоить знак
большего. В разделе “Регистр результата” выведен результат выполнения
операции вычитания чисел и представлен в шестнадцатиразрядном двоичном
57
коде. В разделе “Результат вычисления” разность чисел представлена в
десятичной системе счисления.
Рис.3.5
На рис.3.6 представлен пример сложения по модулю отрицательных
чисел. Входные числа вводятся в десятичной системе счисления со своими
знаками в разделе “Входные операнды”. В данном случае оба числа
отрицательные. В разделе “Знаковые разряды” входные числа имеют
единичные знаковые разряды. В регистрах входных чисел операнды
представлены в двоичной системе счисления в шестнадцатиразрядном
двоичном коде. Способ выполнения арифметической операции в разделе
“Режим” установлен “Автоматически”. Входные числа имеют отрицательные
знаки, которые определяют арифметическую операцию.
58
Рис.3.6
В данном случае выполняется арифметическая операция сложения. В
разделе “Знаковые разряды”определены знаковые разряды входных чисел в
двоичной системе счисления. Программа, моделирующая работу сумматоравычитателя, выполняет арифметическую операцию сложения чисел в
двоичной системе счисления в параллельном режиме со сквозным
переносом. В разделе “Регистр результата” выведен результат выполнения
операции сложения чисел и представлен в шестнадцатиразрядном двоичном
коде. В разделе “Результат вычисления” сумма чисел представлена в
десятичной системе счисления.
59
Примеры выполнения арифметических операций
Табл.3.1
Входные
Двоичные коды чисел со
Арифмети
Результат выполнения
числа
своими знаками
ческая
арифметической операции
А10
В10
78
345
-345
675
572
-896
-395 -734
481
-941
254
659
-732
859
-659 -238
491
-395
629
458
операция
А2= 0.000000001001110
В2= 0.000000101011001
А2=0.000001010100011
В2=1.000000101011001
А2=1.000001110000000
В2=0.000001000111100
А2=1.000000110001011
В2=1.000001011011110
А2=1.000001110101101
В2=0.000000111100001
А2=0.000000011111110
В2=0.000001010010011
А2=0.000001101011011
В2=1.000001011011100
А2=1.000001010010011
В2=1.000000011101110
А2=0.000000111101011
В2=1.000000110001011
А2=0.000001001110101
В2=0.000000111001010
сложение
вычитание
вычитание
сложение
вычитание
сложение
вычитание
сложение
вычитание
сложение
С2= 0.000000110100111
С10=423
С2=0.000000101001010
С10=330
С2=1.000000101000100
С10=-324
С2=1.000010001101001
С10=-1129
С2=1.000000111001100
С10=-460
С2=0.000001110010001
С10=913
С2=0.000000001111111
С10=127
С2=1.000001110000001
С10=-897
С2=0.000000001100000
С10=96
С2=0.000010000111111
С10=1087
60
3.5.Выводы по главе
1.
Разработанная
позволяет
реализовать
математическая
цифровые
модель
сумматора-вычитателя
устройства,
которыевыполняют
арифметические операции по суммированию и вычитанию двоичных чисел.
2.Использование
предлагаемого
способа
архитектурного
проектирования дает возможность построить структуру устройства для
определения
межразрядных
сквозных
переносов/заёмов,
которые
формируются в отдельном блоке и поступают на входы сумматоров
параллельно.
3.Создана
архитектура
спецпроцессора
для
выполнения
арифметических операцийдвоичных чиселсо сквозным переносом, в котором
между входом и выходом переноса одноразрядного сумматора оказывается
наименьшее число логических уровней. Поэтому цепи сквозного переноса
могут быть построены с минимальными аппаратными затратами в
многоразрядных сумматорах.
4. Применение элементов нейронной, пороговой, мажоритарной
логики, а также формирование сквозного переноса/заёма позволило
построить быстродействующее, производительное цифровое устройство по
выполнению арифметических операций суммирования и вычитания.
61
ГЛАВА
4.
СТРУКТУРНЫЕ
СХЕМЫ
БЛОКОВ
ПАРАЛЛЕЛЬНОГО СУММАТОРА-ВЫЧИТАТЕЛЯ
4.1.Описание параллельного сумматора-вычитателя на нейронах со
сквозным переносом.
В соответствие с рис. 3.1 структурной схемой параллельного
сумматора-вычитателя опишем назначение и работу блоков устройства.
Блок ввода чисел содержит шифратор ШФ DD9, сумматор по модулю
два DD10, сумматор по модулю два DD11представлен на рис. 4.1 [49, 50].
Блок ввода чисел
Рис. 4.1
Этот блок позволяет вводить двоичные числа. С выхода шифратора
формируется двоичный код чисел со своими знаками: А2, В2, ЗнР А, ЗнРВ и
код операции КОП. Знаковый разрядвторого числа ЗнР В и код операции
КОП с выхода шифратора поступают на вход нейрона, выполняющего
операцию сумматора по модулю дваDD10. Выходная функция этого нейрона
и знаковый разряд первого числа ЗнР А поступают на вход нейрона,
выполняющего
также
операцию
сумматора
по
модулю
два
62
элементDD11.Выходной сигнал суммирования-вычитания СВ формируется
на выходе нейрона двоичного элемента DD11. Сумматоры по модулю два
реализуются на формальных нейронах ФН. Выходной сигнал вычисляется по
формуле:
СВ = ЗнР В КОП ЗнР А.
(1)
Если СВ равен единице, то необходимо выполнять операцию вычитания,при нечетном количестве знаков минус. Если СВ равен нулю, то
осуществляется операция сложения, количество знаков минус является
четным числом. Выходными сигналами блока ввода чисел являются
двоичные коды первого и второго чисел ПЧ и ВЧ, представленные в прямых
кодах и признак операции СВ.
Блок компарации содержит схему управления работой компаратора
СУРКОМ DD12, двухвходовую логическую схему ИЛИ DD13 с первым
инверсным входом, схему электронных ключей логических элементов И
DD14, схему электронных ключей логических элементов с управляющим
инверсным входом DD15, двухвходовый логический элемент И DD17, схему
электронных ключей логических элементов с управляющим инверсным
входом DD18, схему электронных ключей логических элементов И DD19,
схему логических элементов ИЛИ DD16, схему логических элементов ИЛИ
DD20 представлен на рис.4.2.Этот блок предназначен для определения
большего числа по модулю при выполнении операции вычитания, и передачи
большего по модулю числа в блок регистра большего числа, и меньшего по
модулю числа в блок регистра меньшего числа. При выполнении операции
суммирования этот блок не определяет большего и меньшего из входных
чисел, а лишь передает первое число в блок регистра большего числа и
второе число в блок регистра меньшего числа. На вход компаратора
поступает управляющий сигнал признак суммирования или вычитания СВ.
Этот сигнал СВ поступает на: инверсный вход логического элемента ИЛИ
DD13,прямой входсхемы электронных ключей логических элементов с
63
управляющим инверсным входом DD15, двухвходовый логический элемент
ИDD17, прямой вход схемы электронных ключей логических элементов И
DD19 [51, 52].
Блок компарации
Рис.4.2
Если сумматор-вычитатель выполняет операцию вычитания, при этом
признак суммирования или вычитания СВ равен единичному значению, то в
блок регистра большего числа необходимо записать больший по модулю
операнд. В блок регистра меньшего числа загружается число меньшее по
модулю.
Схема
управления
работой
компаратора
СУРКОМ
DD12
представляет собой схему управления работой компаратора и схему сравнения чисел. Схема сравнения чисел выполнена на формальных нейронах.
Если управляющий сигнал суммирования-вычитания СВ равен нулю, то это
означает, что выполняется операция суммирования чисел. В этом случае
сравнение
по модулю чисел не происходит. На вход схемы управления
работой компаратора СУРКОМ DD12 подается нулевое значение, который
64
блокирует работу схемы. Схема электронных ключей логических элементов с
управляющим инверсным входом DD15, логический элемент И DD17, схема
электронных ключей логических элементов И DD19 будут заперты нулевым
управляющим сигналом СВ. На выходе логического элемента с инверсным
входом ИЛИ DD13 сформируется единичный уровень, который разрешит
работу схемы электронных ключей логических элементов И DD14. Через
открытую схему электронных ключей логических элементов И DD14 и схему
логических элементов ИЛИ DD16 первое число поступит на вход блока
регистра большего числа. Через открытую схему электронных ключей
логических элементов И DD19 и схему логических элементов ИЛИ DD20
второе число поступит на вход блока регистра меньшего числа [53].
Если сигнал СВ равен единице, то в этом случае выполняется операция
вычитания чисел. Схема управления работой компаратора СУРКОМ DD12,
схема
электронных
ключей
логических
элементов
с
управляющим
инверсным входом DD15, схема электронных ключей логических элементов
И DD19 будут открыты для работы. Сравнение чисел в этом случае
проводить необходимо для определения большего и меньшего по модулю
чисел. На вход схемы управления работой компараторов СУРКОМ DD25
поступают n-разрядные двоичные числа ПЧ и ВЧ без знаковых разрядов.
Схема управления работой компараторов СУРКОМ DD25 имеет три выхода:
БЛ - число ПЧ больше ВЧ, РВ - числа ПЧ и ВЧ равны по модулю, МН - число
ПЧ меньше ВЧ.
Схемы электронных ключей логических элементов ИDD14, DD15,
DD18, DD19, двухвходовая логическая схема И DD17 выполнены на
формальных нейронах. Схема логических элементов И описывается с
помощью формулы [w1=1, w2=1,..,wn=1;T=n-1], где w1, w2,..,wn коэффициенты усиления, а T - пороговое напряжение, n - количество входов.
Схемы логических элементов ИЛИ DD16, DD20, двухвходового логического
элемента ИDD13с первым инверсным входом,описываются с помощью
формулы [w1=1, w2=1,..,wn=1;T=0], где w1, w2,..,wn - коэффициенты
65
усиления, а T равное нулю - пороговое напряжение, n - количество
входов.Логическая операция НЕ описывается формулой [w=-1;T=-1] [54].
На входы схем электронных ключей логических элементов И DD14 и
DD19 поступает первое двоичное число ПЧ со своим знаком. На входы схем
электронных ключей логических элементов с управляющими инверсными
входами DD15 и DD18поступает второе двоичное число ВЧ со своим знаком.
Выходы схемы электронных ключей логических элементов И DD14 и схемы
электронных ключей логических элементов с управляющим инверсным
входом DD15 поступают на вход схемы логических элементов ИЛИ DD16.
Выходы схемы электронных ключей логических элементов с управляющим
инверсным входом DD18 и схемы электронных ключей логических
элементов И DD19 поступают на вход схемы логических элементов ИЛИ
DD20. Выходная информация двоичные разряды большего числа ДБЧ схемы
логических элементов ИЛИ DD16 поступает на вход блока регистра
большего числа. Выходная информация двоичные разряды меньшего числа
ДМЧ схемы логических элементов ИЛИ DD20 поступает на вход блока
регистра меньшего числа. При поступлении первого и второго двоичных
чисел ПЧ и ВЧ на вход схемы компаратора, на выходе схемы компаратора
СхКОМ формируется отношение операндов. Если на выходе БЛ будет
единица, то это означает, что первое число ПЧ больше второго ВЧ по
модулю. Остальные выходы схемы компаратора будут равны нулевому
значению. Единичный выход схемы компаратора больше БЛ через
двухвходовую логическую схему ИЛИ DD13 с первым инверсным входом
откроет схему электронных ключей логических элементов И DD14и первое
двоичное число ПЧ поступит вход схемы логических элементов ИЛИ DD16.
Схема
электронных
ключей
логических
элементов
с
управляющим
инверсным входом DD15 будет заперта т.к. управляется инверсным
сигналом.
С
выхода
схемы
логических
элементов
ИЛИ
DD16
информационный сигнал ДБЧ поступит в блок регистра большего числа.
Нулевой выход схемы компаратора меньше МН через двухвходовую
66
логическую схему ИЛИ DD17, поступает на инверсный входсхемы
электронных ключей логических элементов с управляющим инверсным
входом DD18и откроет ее, и второедвоичное число ВЧ поступит вход схемы
логических элементов ИЛИ DD20. Схема электронных ключей логических
элементов DD19 будет заперта т.к. управляется нулевым сигналом. С выхода
схемы логических элементов ИЛИ DD20 информационный сигнал ДМЧ
поступит в блок регистра меньшего числа [55, 56].
Если выходной сигнал схемы компаратора меньше МН будет равен
единичному значению, это означает, что второе число ВЧ больше по модулю,
чем первое ПЧ. В этом случае необходимо поменять местами входные числа.
Единичный выход схемы компаратора через двухвходовую логическую
схему ИЛИ DD17, поступает на инверсный входсхемы электронных ключей
логических элементов с управляющим инверсным входом DD18и закроетее,
и первоедвоичное число ПЧ поступит вход схемы логических элементов
ИЛИ DD20. Схема электронных ключей логических элементов DD19 будет
открыта т.к. управляется единичным сигналом. С выхода схемы логических
элементов ИЛИ DD20 информационный сигнал ДМЧ поступит в блок
регистра меньшего числа. Нулевой выход схемы компаратора больше БЛ
через двухвходовую логическую схему ИЛИ DD13 с первым инверсным
входом запрет схему электронных ключей логических элементов И DD14 и
второе двоичное число ВЧ поступит вход схемы логических элементов ИЛИ
DD16. Схема электронных ключей логических элементов с управляющим
инверсным входом DD15 будет открыта т.к. управляется прямым сигналом.
С выхода схемы логических элементов ИЛИ DD16информационный сигнал
ДБЧ поступит в блок регистра большего числа. Если первое и второе
двоичные числа ПЧ и ВЧ равны по модулю и выполняется операция
сложения, то сигнал равенство РВ будет равен единице, а сигналы больше БЛ
и меньше МН будут равны нулю. Схемы логических элементовИ DD14 и
DD19 будут заперты, а схемы логических элементов И DD15 и DD18 будут
открыты. На схемы логических элементов ИЛИ DD16 и DD20 поступит
67
второе двоичное число ВЧ. В этом случае, произойдет сложение двух равных
по модулю чисел ВЧ и ВЧ. Знак результата ЗнР всегда будет формироваться
с выхода схемы логических элементов ИЛИ DD16, т.к. на выходе этой схемы
будет большее по модулю число.
Схема
управления
работой
компараторов
содержит:
схему
электронных ключей логических элементов ИСхИ, выполненную на
элементах DD21, DD22, DD23, DD24, схему компараторов СхКОМDD25.
Схема управления работой компараторов предназначена для блокирования
работы компараторов, если устройством выполняется операция сложения
двоичных чисел. При сложении чисел схема компараторов СхКОМ не
сравнивает числа. При суммировании чисел, имеющие равные знаковые
разряды: оба положительные или оба отрицательные, сравнение чисел не
происходит. В этом случае модули двоичных чисел суммируются. Для
блокирования работы схем компараторов, на входе схем сравнения
применяются электронные ключи, выполненные на логических элементах
ИDD21, DD22, DD23, DD24. Входной управляющий сигнал признак
суммирования-вычитания СВ поступает параллельно на все управляющие
входы логических схем И. На вторые информационные входы элементов И
поступают двоичные разряды первого ПЧ и второго ВЧ входных чисел.
Выходы схем электронных ключей логических элементов ИСхИ поступают
на входы схем компараторов. Если сигнал суммирования-вычитания СВ
равен нулевому значению, то схемы электронных ключей логических
элементов ИСхИ будут заперты. Двоичные разряды входных чисел на вход
схем сравнения не поступают. Сравнение чисел на схеме компараторов не
произойдет. Если сигнал суммирования-вычитания СВ равен единичному
значению, то схемы электронных ключей логических элементов ИСхИ будут
открыты, в этом случае входные двоичные разряды чисел через открытые
схемы И поступают на входы схем компараторов, для выполнения операции
сравнения чисел. Схема компараторов СхКОМDD25 выполняет операцию
сравнения чисел при выполнении операции вычитания. Многоразрядные
68
компараторы строятся на базе одноразрядных компараторов. При этом
применяются логические схемы И, ИЛИ. Выходными сигналами схемы
управления работой компараторов являются сигналы, которые являются
результатом сравнения входных чисел: больше БЛ, равно РВ, меньше МЛ.
Применены структурные схемы логических элементов ИЛИ, выполненных
на микросхемах DD16 и DD20. Принципиальная схема
логических
элементов ИЛИ, выполненных на микросхемах DD26, DD27. Схемы
электронных ключей логических элементов ИDD14, DD15,
DD18, DD19
имеют аналогичную структуру схемам электронных ключей логических
элементов И СхИ [56, 57].
Схема управления работой компараторови принципиальная
схема логических элементов ИЛИ
Рис.4.3
Блок регистра большего числа содержит n - триггеров Трn, где n количество разрядов входного числа: DD28, DD29, DD30, DD31 рис.4.4. Этот
блок предназначен для хранения двоичного кода большего по модулю
операнда. Перед началом работы сумматора-вычитателя по приходу из блока
69
управления информационного сигнала СУ происходит обнуление всех
триггеров блока. По приходу из блока компарации информационного сигнала
ДБЧ - данные большего числа осуществляется загрузка двоичного кода
одного из чисел. При поступлении управляющего сигнала ЗП – разрешение
записи на входы триггеров Тр1, Тр2, Тр3,..., Трn из блока управления,
разрешающего записать информацию в триггера, происходит загрузка
поступившего двоичного кода числа в триггера блока. Сигнал ЗП является
входным управляющим сигналом для всех элементов памяти блока. В этом
блоке хранится большее по модулю число, если необходимо выполнить
операцию вычитания, и первое число, поступившее из блока ввода чисел, в
случае выполнения операции сложения.
Блокрегистрабольшегочисла
Рис.4.4
Схема определения сквозного переноса-заема,содержит n - сумматоров
по модулю два: DD32, DD33, DD34, выполненных на формальных нейронах,
n - мажоритарных элементовDD35, DD36, DD37, выполняющую функцию по
определению переноса в старшие разряды при суммировании или заёма из
70
старших разрядов при вычитаниипредставлена на рис. 4.5. На первые входы
сумматора по модулю два блока поступают двоичные разряды операнда ВБЧ
из блока регистра большего числа. На вторые входы всех сумматоров блока
поступает признак операции суммы-вычитания СВ. Если признак СВ равен
нулю, выполнение операции сложения, то сумматоры выполняют роль
повторителей. В этом случае все входные разряды в прямом коде поступают
на первые входы соответствующих мажоритарных элементов блока [58, 59].
Схема определения сквозного переноса-заема
Рис.4.5
Если признак операции СВ равен единице, выполнение операции
вычитания,
то
все
входные
двоичные коды
поступают
на
входы
мажоритарных элементов в обратном коде. В этом случае сумматоры по
модулю
два
выполняют
функцию
инверторов.
На
вторые
входы
мажоритарных элементов поступает информация с выходов предыдущих
мажоритарных элементов. В этом блоке используются трехвходовые
71
мажоритарные элементы. Единица на выходе мажоритарного элемента будет
только тогда, когда будет большинство единиц на входе, в данном случае две
или три. На третьи входы мажоритарных элементов поступают двоичные
коды ВМЧ из блока регистра меньшего числа в прямом коде. Выходной
сигнал Пi, Зi будет равен единице в том случае, когда возникнет перенос из
младших разрядов в старшие при сложении чисел и при возникновении заема
в младшие разряды из старших при выполнении операции вычитания от
большего по модулю числа меньшего.
Блок суммирования-вычитания изображен на рис.4.6
содержит n –
одноразрядных сумматоров-вычитателей СУМ-ВЫЧn, выполненных на
комбинационных схемах DD38, DD39, DD40, DD41.
Блок суммирования-вычитания
Рис.4.6
На вход каждого одноразрядного сумматора-вычитателя поступает
четыре входных двоичных числа: ЗрiБЧ – двоичный i -разряд большего по
модулю числа при выполнении операции вычитания или первого числа при
выполнении операции суммирования, ЗрiМЧ – двоичный i -разряд меньшего
по модулю числа при выполнении операции вычитания или второго числа
72
при выполнении операции суммирования, перенос Пi из младших разрядов в
старшие, Зi – заем из старших разрядов в младшие при выполнении операции
вычитания, управляющий сигнал суммирования-вычитания СВ из блока
ввода чисел. Выходом каждого сумматора-вычитателя является результат
суммы или разности – РЕЗi. Управляющий сигнал СВ поступает параллельно
на входы всех одноразрядный сумматоров-вычитателей. Если сигнал
суммирования-вычитания СВ равен нулю, то это означает, что с выхода
блока ввода чисел поступили числа с одинаковыми знаками, в этом случае
выполняется
операция
суммирования,
во
всех
блоках
СУМ-ВЫЧn
вычисляется сумма чисел. В случае равенства СВ единице
выполняется
операция вычитания. Все блоки СУМ-ВЫЧn вычисляют разность между
входными числами. Первый сумматор-вычитатель СУМ-ВЫЧi определяет
сигнал переполнения разрядной сетки ПП. Этот сигнал является выходным
управляющим сигналом блока. Выходная информация в виде результата РЕЗ
с выхода блока суммирования-вычитания поступает на вход блока регистра
результата.
Одноразрядный
сумматор-вычитатель
СУМ-ВЫЧiпредставлен
на
рис.4.7.Этот блок содержит пороговые элементы DD42, DD44, инвертор
DD45, логические схемы И DD43, DD46, логическую схему ИЛИ DD47.
Пороговый элемент DD44 составляет сумматор. На входы этого
порогового элемента поступают двоичные разряды первого и второго
чиселЗрiПЧ и ЗрiВЧ, перенос-заем Пi-1 Зi-1 из младшего разряда в старший и
перенос-заем сформированный в i разряде Пi Зi. Двоичные разряды
поступают по разрядно: ЗрiПЧ - разряд первого числа, ЗрiВЧ - разряд второго
числа, перенос-заем Пi-1 Зi-1 из младшего разряда в старший и переносзаемсформированный в i разрядеПi Зi , а также признак суммированиявычитания СВ. Пороговый элемент DD42 образует схему одноразрядного
вычитателя двоичного числа. Логические элементы DD43 и DD46
выполняют функциюэлектронных ключей. Управляющим сигналом для них
73
является признак суммирования-вычитания СВ. На пороговый элемент DD46
этот сигнал поступает через инверторы DD45.
Одноразрядный сумматор-вычитатель
Рис.4.7
Если признак операции суммирования-вычитания СВ будет равен
нулю, выполнение операции суммирования, то электронный ключ DD46
будет открыт, управляющий сигнал СВ поступает через инверторы DD45, а
пороговый элементDD43 будет заперт. Пороговый элемент DD44 вычисляет
сумму одноразрядных двоичных чисел: двоичные разряды первого и второго
чисел ЗрiПЧ и ЗрiВЧ, перенос-заемПi−1 Зi−1из младшего разряда в старший и
перенос-заем сформированный в i разрядеПi Зi При суммировании через
открытый элемент DD46 и схему ИЛИ DD47 разряд суммы СУМi поступит
на вход блока регистра результата. Если сигнал СВ равен единице, что
означает выполнение операции вычитания. Пороговый элемент DD42
образует схему одноразрядноговычитателя. На выходе элемента DD42
вычисляется разность, поступивших на вход одноразрядного сумматора-
74
вычитателя двоичных чисел: двоичные разряды первого и второго чисел
ЗрiПЧ, ЗрiВЧ, перенос-заемПi−1 Зi−1 из старшего разряда в младший и
перенос-заем сформированный в i разрядеПi Зi .Через открытый электронный
ключ DD43 и логическую схему ИЛИ пороговый элемент DD47 разряды
разности РАЗi будут поступать на вход блока регистра результата.
Блок регистра меньшего числа содержит n - триггеров Трn, где n количество разрядов меньшего по модулю входного числа: DD48, DD49,
DD50, DD51, изображен на рис.4.8. Этот блок предназначен для хранения
двоичного кода меньшего по модулю числа при выполнении операции
вычитания, и второго, введенного из блока ввода числа, если необходимо
выполнить
операцию
сложения.
Перед
началом работы
сумматора-
вычитателя по приходу из блока управления информационного сигнала СУП
происходит обнуление всех триггеров блока. По приходу из блока
компарации информационного сигнала ДМЧ - данные меньшего числа
осуществляется
загрузка
двоичного
кода
числа.
При
поступлении
управляющего сигнала ЗАП–разрешение записи на входы триггеров Тр1,
Тр2, Тр3,..., Трn из блока управления, разрешающего записать информацию в
триггера, происходит загрузка поступившего кода с выходов блока
компарации в триггера блока. Сигнал ЗАП является входным управляющим
сигналом для всех элементов памяти блока [60, 61].
Блок регистра результата содержит k - триггеров Трk, где k количество разрядов необходимое для получения результата заданной
точности: DD53, DD54, DD55 для хранения двоичных разрядов результата
представлен на рис. 4.9. В состав блока входит триггер Тр1DD52,
предназначенный для хранения знакового разряда результата. В блоке
регистра результата формируется результат в параллельном режиме при
выполнении операций сложения или вычитания.
75
Блок регистра меньшего числа
Рис.4.8
Перед началом работы сумматора-вычитателя по приходу из блока
управления информационного сигнала УП происходит обнуление всех
триггеров блока. Информационный сигнал результата РЕЗ, поступающий из
блока суммирования-вычитания, поступает на входы триггеров ТpkDD53,
DD54, DD55 блока регистра результата. Полученный результата будет
храниться в триггерах, составляющих регистр блока для хранения суммы или
разности. На вход триггера Тр1DD52 из блока компарации поступит
управляющий сигнал ЗнР – знаковый разряд. После этого в триггер Тр1DD52
запишется знаковый разряд результата –ЗнР [62, 63].
Блок регистра результата
76
Рис.4.9
4.2. Оценка быстродействия разработанного устройства
альтернативных схемотехнических решений сумматоров
и
Для оценки затраты время формирования сквозного (параллельного)
переноса. Поскольку формирование и передача переноса-заема выполняются
одновременно, то затраты времени будут равны времени задержки каждого
логического элемента
τф = τз.
(4.1)
Принимая во внимание то, что сигнал переноса в каждом разряде
двоичных чисел проходит k логических элементов до выхода схемы
формирования переноса-заема затраты времени составят
τпр = k∙τз.
(4.2)
Между тем при выполнении вычитания необходимо затрачивать
время на выполнение операции сравнения операндов с использованием
компаратора с целью определения большего и меньшего по модулю.
Полагая, что регистры операндов к моменту выполнения операции сложениявычитания уже загружены это обстоятельство приводит к затратам времени
на выполнение сравнения τср, тогда общее время выполнения операции
вычитания будет равно
τов = τпр + τср,
(4.3)
77
а время выполнения сложения
τо = τпр.
(4.4)
При этом время выполнения операции сложения-вычитания для
рассматриваемой реализации устройства не зависит от разрядности
операндов и времени формирования суммы или разности.
При увеличении разрядности операндов при выборе электронных
схемотехнических
решений
возможно
увеличение
числа
логических
элементов прохождения сигналов переноса-заема и соответствующий рост
значения k.
В альтернативных устройствах сумматоров с последовательным
переносом при выполнении операций сложения (вычитания) в обратных или
дополнительных кодах и в сумматорах с последовательно-параллельной
организацией
переносов-заемов
будет
или
возрастать
значение
k
пропорционально разрядности операндов, или зависеть от максимальной
длины группы единиц в регистре результата.
По
результатам
имитационного
моделирования
разработанное
устройство имеет двукратное скоростное преимущество по сравнению с
последовательной организацией переноса при сложении (вычитании) в
обратных или дополнительных кодах. При сопоставлении с сумматорами
при представлении чисел также в обратных или дополнительных кодах
операндов и последовательно-параллельном распространении переносов
скоростное
преимущество
разработанного
устройства
варьируется
в
диапазоне от 1,4 до 1,6 раз при 24 двоичных разрядах операндов. Выбор 24
разрядной
сетки
представления
чисел
обусловлен
сопоставимыми
аппаратными затратами. Моделирование работы альтернативных сумматоров
осуществлялось с возрастанием разрядной сетки операндов от 4 до 32
разрядов. Следует отметить, что в разработанном устройстве сложениявычитания используется параллельный принцип распространения переносов,
поэтому увеличение разрядной сетки не приводит к значимым потерям
времени.
78
Проведем сопоставление разработанного арифметического устройства
с аналогами по числу вентилей, используемых в схеме. Сравнение проведем
для 64 разрядной сетки.
Для параллельного сумматора-вычитателя
на нейронах со сквозным переносом
Количество
№
п/п
Логический элемент
Количество
вентилей в
элементов шт.
одном
элементе шт.
Количество
вентилей в
элементах шт.
1.
ШИФРАТОР
1
35
35
2.
НЕЙРОННЫЕ
66
8
528
578
4
2312
128
8
1024
64
4
256
ЭЛЕМЕНТЫ НА
4 ВХОДА
3.
ПОРОГОВЫЕ
ЭЛЕМЕНТЫ НА
2 ВХОДА
4.
ПОРОГОВЫЕ
ЭЛЕМЕНТЫ НА
4 ВХОДА
5.
МАЖОРИТАРНЫЕ
ЭЛЕМЕНТЫ НА
3 ВХОДА
6.
КОМПАРАТОРЫ
18
43
774
7.
ТРИГГЕРЫ
193
4
772
8.
ИНВЕРТОРЫ
64
1
64
9.
ИОТОГО
5765
79
Для параллельного сумматора-вычитателя
на нейронах с последовательным переносом
1. ШИФРАТОР
2. НЕЙРОННЫЕ
1
65
Количество
вентилей в
одном
элементе шт.
35
8
3.
576
4
3144
64
8
512
128
8
1024
18
193
64
43
4
1
774
772
64
№
п/п
4.
5.
6.
7.
8.
9.
Логический элемент
ЭЛЕМЕНТЫ НА
4 ВХОДА
ПОРОГОВЫЕ
ЭЛЕМЕНТЫ НА
2 ВХОДА
ПОРОГОВЫЕ
ЭЛЕМЕНТЫ НА
3 ВХОДА
ПОРОГОВЫЕ
ЭЛЕМЕНТЫ НА
4 ВХОДА
КОМПАРАТОРЫ
ТРИГГЕРЫ
ИНВЕРТОРЫ
ИОТОГО
Количество
элементов шт.
Количество
вентилей в
элементах шт.
35
528
6005
Для сумматора Когга-Стоуна (Kogge-Stone adder)
№
п/п
1.
2.
3.
4.
5.
6.
7.
Логический элемент
ШИФРАТОР
Элементов И
Элементов ИЛИ
Элементов 
ТРИГГЕРЫ
Преобразователи
из прямого кода в
дополнительный
и обратно
ИОТОГО
Количество
элементов шт.
Количество
вентилей в
одном
элементе шт.
Количество
вентилей в
элементах шт.
1
706
321
128
193
192
35
1
1
1
4
24
35
706
321
128
772
4608
В
итоге
при
6570
80
подсчете количества вентилей в устройствах имеем:
1. Для параллельного сумматора-вычитателя на нейронах
со сквозным переносом необходимо 5765 вентилей.
2. Для параллельного сумматора-вычитателя на нейронах с
последовательным переносом необходимо 6005 вентилей.
3. Для сумматора Когга-Стоуна (Kogge-Stone adder) необходимо 6570
вентилей.
4.3. Выводы по главе
1. Специализированные
модули
эффективно
решают
задачи
по
ускоренному выполнению арифметических операций. Вычислительные
специализированные процессоры не менее чем на порядок дешевле
равномощного универсального устройства.
2. Аппаратная реализация специализированного устройства позволяет
повысить быстродействие модуля за счет уменьшения времени выполнения
операции вычитания, так как выполнение происходит в прямых кодах.
3. Вычислительные
быстродействие,
модули
они
не
обеспечивают
максимальное
содержат
аппаратурной
избыточности.Использованиенейроподобных элементов в блоках устройства
позволяет
повысить
надежность
и
эффективность
конструирования
подобных устройств.
4. При разработке высокопроизводительных арифметических специализированных устройств одним из важных параметров является быстродействие схемы сумматора-вычитателя. Сигналы переноса сумматоравычитателя для каждого разряда формируются специальными схемами, на
входы которых поступают все переменные, необходимые для выработки
сигнала
переноса.
Представлен
сумматор-вычитатель
со
сквозным
переносом, в которым между входом переноса и выходом переноса
одноразрядного сумматора оказывается небольшим числом логических
уровней.
81
5. Представленное устройство может решать только определенный
круг задач, выполнять специализированные вычисления, оно имеет
собственное запоминающее устройство. Устройство выполнения логических
операций можно использовать в вычислительной системе, которое состоит из
специализированных модулей, объединенных через единый интерфейс.
6.
Сравнительный
анализ
показывает,
что
для
параллельного
сумматора-вычитателя на нейронах со сквозным переносом потребуется на
240 вентилей меньше, чем для сумматора-вычитателя на нейронах с
последовательным переносом и на 805 вентилей меньше, чем на сумматор
Когга-Стоуна (Kogge-Stone adder).
82
ЗАКЛЮЧЕНИЕ
В диссертационной работе решена научная задача по разработке и
созданию
быстродействующего
специализированного
модуля,
выполняющего арифметические операции суммирования и вычитания
двоичных чисел в прямых двоичных кодах.
При достижении поставленной цели в диссертационной работе
получены следующие результаты:
1. Разработан алгоритм сложения чисел в прямых кодах, позволяющий
значительно
повысить
скорость
выполнениябазовых
арифметических
операций (сложение-вычитание)в прямых кодах и отличается тем, что
предлагается использоватьсетьформальных нейронов для формирования и
распространения переносов и реализации арифметических операций.
2. Создана
выполняющего
структурно-функциональная
операции
организация
сложения-вычитания
в
сумматора,
прямых
кодах,
отличающееся тем, что в нем используются мажоритарные, пороговые
компоненты, нейронные элементы и комбинационные схемы, которые в
совокупности обеспечивают существенное повышение быстродействие
путем применения схем формирования и распространения переносов.
Техническая сложность устройства сложения-вычитания составляет 6700
вентилей. Разработанное устройство защищено патентом РФ . (Пат. 2523942
Российская Федерация, МПК G 06 F 7/506, G 06 N 7/00.)
3. 3. Создан программный продукт для имитационного моделирования
разработанного специализированного устройства, что позволило подтвердить
корректность алгоритма работы сумматора и построить таблицу результатов
суммирования и вычитания исходных операндов в их разнообразии и
вариациях «разряженности» 0 или 1 в структуре двоичных чисел.
4. На основе моделирования выполнен сравнительный анализ
известных и разработанного устройств. Установлено, что при фиксированной
разрядной сетке 24 бита для представления операндов скоростное
83
преимущество разработанного сумматора не менее чем в два раза выше по
сравнению с сумматорами с последовательным распространением переноса,
а также в 1,4 –1.6 раз выше, чем у сумматоров с последовательнопараллельным механизмом формирования и распространения переносов и
сопоставимых аппаратных затратах.
84
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Самофалов, К. Г. Цифровые электронные вычислительные машины /
В.И Корнейчук., В.П Тарасенко // Теория и проектирование. – Киев: Вища.
Школа, 1982. – 454 c.
2. Omondi, A. Residue Number System / A. Omondi, B. Premkumar //
London: Imperial College Press, 2007. – 296 p.
3. Kogge, P. M. A Parallel Algorithm for the Efficient Solution of a General
Class of Recurrence Equations / P.M. Kogge, H. S. Stone // IEEE Transactions on
Computers. – Washington, DC, USA, 1973. – Vol.C-22. – №8. – P. 783-791.
4. Brent, R. P. A Regular Layout for Parallel Adders / R. P. Brent, H. T. Kung
// IEEE Transactions on Computers. – Washington, DC, USA, 1982. – Vol.C-31. –
№3. – P. 260-264.
5. Hauck, S. High Performance Carry Chains for FPGAs / S. Hauck, M. M.
Hosler, T.W. Fry // IEEE Transactions on Very Large Scale Integration (VLSI)
System. – Washington, DC, USA, 2000. – Vol.8. – №2. – P. 138-147.
6. Zicari, P. A fast carry chain adder for Virtex-5 FPGAs / P. Zicari, S. Perri //
MELECON 2010-2010 15thIEEE Mediterranean Electrotechnical Conference. –
Washington, DC, USA, 2010. – P. 304-308
7. Radhakrishnan, D. Low-voltage low-power CMOS full adder / D.
Radhakrishnan // Circuits, Devices and Systems, IEE Proceedings. – Washington,
DC, USA, 2001. – Vol.41. – №1. – P. 19-24.
8. Wallace, C. S. A suggestion for a fast multiplier / C. S. Wallace // IEEE
Transactions on Electronic Computer. – Washington, DC, USA, 1964. – Vol.EC13. – №1.– P. 14-17.
9. Dadda, L. Some schemes for parallel multipliers / L. Dadda // Alta
Frequenza. – Grenoble, 1965. – P. 349-356.
10. Townsend, W.J. A Comparison of Dadda and Wallace Multiplier Delays
/ W.J. Townsend, E.E. Swartzlander, J.A. Abraham // SPIE Advanced Signal
Processing Algorithms, Architectures, and Implementations XIII. Austin, 2003.
85
11. Arvind, V.K. A multiple processor data flow machine that supports
generalized procedures / V.K. Arvind // ISCA '81 Proceedings of the 8th annual
symposium on Computer Architecture. – California, 1965. – P. 291-302.
12. Booth, A.D. A signed binary multiplication technique / A.D. Booth //
The Quarterly Journal of Mechanics and Applied Mathematics. – 1950. – Vol.4. –
№2. – P. 236-240.
13. Baugh, C.R. A Two's Complement Parallel Array Multiplication
Algorithm / C.R. Baugh, B.A. Wooley // IEEE Transactions on computer. –
Washington, DC, USA, 1973. – Vol.C-22. – №12. – P. 1045-1047.
14. Calder, B. Fast & Accurate Instruction Fetch and Branch Prediction / B.
Calder, D. Grunwald // Proceedings the 21st Annual International Symposium on
computer Architecture. – Washington, DC, USA, 1994. – P. 2-11.
15. Kai Hwang. Advanced Computer Architecture: Parallelism, Scalability,
Programmablility / Kai Hwang. – New York: McGraw-Hill Higher Education,
1993.
16. Lovett, T. Implementation and Performance of a CC-NUMA System / T.
Lovett, R. Clapp // Proceedings of the 23th Annual International Symposium on
Computer Architecture. – Philadelphia, 1996.
17. Banerji, A. Novel Implementation Method for Addition and Subtraction
in Residue Number Systems / Banerji. K. Dilip // IEEE Transactions on computer.
– Washington, DC, USA, 1974. – Vol.C-23. – №1. – P. 106-109.
18. Bayoumi, M.A. AVLS Iimplementation of residue adders / M.A.
Bayoumi, G. Jullien, W.C Miller // IEEE Transactions on Circuits and Systems. –
Washington, DC, USA, 1987. – Vol.34. – №3. – P. 284-288.
19. Alia, G. A VLSI modulo m multiplier / G. Alia, E. Martinelli // IEEE
Transactions on Computers. – Washington, DC, USA, 1992. – Vol.40. – №7. – P.
873-878.
20. Efstathiou, C. Area-time efficient modulo 2n-1 adder design / C.
Efstathiou, D. Nikolos, J. Kalamatianos // IEEE Transactions on Circuits and
86
Systems II: Analog and Digital Signal Processing. – Washington, DC, USA, 1994.
– Vol.41. – №7. – P. 463-467.
21. Dugdale, M. VLSI implementation of residue adders based on binary
adders / M. Dugdale // IEEE Transactions on Circuits and Systems II: Analog and
Digital Signal Processing. – Washington, DC, USA, 1992. – Vol.39. – №5. – P.
325-329.
22. Paliouras,V. A Low-Complexity RNS Multiplier / V. Paliouras, K
Karagianni, T. Stouraitis // IEEE Workshop on Signal Processing Systems. –
Washington, DC, USA, 2000. – P. 487-496.
23. Hiasat, A.A. High-speed and reduced-area modular adder structures for
RNS / A.A. Hiasat // IEEE Transactions on computer. – Washington, DC, USA,
2002. – Vol.51. – №1. – P. 84-89.
24. Skavantzos, A. New multipliers modulo 2N-1 / A. Skavantzos, P.B. Rao
// IEEE Transactions on Computers. – Washington, DC, USA, 1992. – Vol.41. –
№8. – P. 957-961.
25. Hiasat, A.A. New efficient structure for a modular multiplier for RNS /
A.A. Hiasat // IEEE Transactions on computer. – Washington, DC, USA, 2000. –
Vol.49. – №2. – P. 170-174.
26. Radhakrishnan, D. Novel approaches to the design of VLSI RNS
multipliers / D. Radhakrishnan, Y. Yuan // IEEE Transactions on Circuits and
Systems II: Analog and Digital Signal Processing. – Washington, DC, USA, 1992.
– Vol.39. – №1. – P. 52- 57.
27. Zimmermann, R. Efficient VLSI implementation of modulo 2N±1
addition and multiplication / R. Zimmermann // 14th IEEE Symposium on
Computer Arithmetic. – Washington, DC, USA, 1999. – P. 158-167.
28. Hitz, M.A. Integer division in residue number systems / M.A. Hitz, E.
Kaltofen // IEEE Transactions on computer. – Washington, DC, USA, 1995. –
Vol.44. – №8. – P. 983-989.
87
29. Chiang, J.-S. A general division algorithm for residue number systems /
J.-S. Chiang, Mi Lu // 14th IEEE Symposium on Computer Arithmetic. –
Washington, DC, USA, 1991. – P. 76-83.
30. Hiasat, A.A. A high-speed division algorithm for residue number system
/ A.A. Hiasat, H.S. Abdel-Aty-Zohdy // ISCAS '95, IEEE International Symposium
on Circuits and Systems. – Washington, DC, USA, 1995. – Vol.3. – P. 1996-1999.
31. Hiasat, A.A. Design and implementation of an RNS division algorithm /
A.A. Hiasat, H.S. Abdel-Aty-Zohdy // 13th IEEE Symposium on Computer
Arithmetic. – Washington, DC, USA, 1997. – P. 240-249.
32. Gamberger, D. New approach to integer division in residue number
systems / D. Gamberger // 10th IEEE Symposium on Computer Arithmetic. –
Washington, DC, USA, 1991. – P. 84-91.
33. Ulman, Z.D. Fast division in residue arithmetic, Communications / Z.D.
Ulman, M. Czyzak, J.M. Zurada // IEEE Pacific Rim Conference on
Communications, Computer and Signal Processing. – Washington, DC, USA,
1991. – Vol.2. – P. 696-699.
34. Гук, М. Ю. Аппаратные средства IBM PC / М. Ю. Гук //
Энциклопедия. – 2-е изд. – СПб.: Питер, 2004. – 923 с.
35. Акулов, О. А. Информатика: учебник для вузов / О.А. Акулов, Н.В.
Медведев. – М.: Изд- во «Омега -Л», 2009. – 574 с.
36. Хла Вин. Вычислители арифметических операций на нейронах /
Хла Вин, Б. П. Добрица, С.С. Шевелев // Известия Юго-Западного
государственного университета. – 2012. – №4 (43), – Ч. 2. – С. 11-16.
37. Самофалов, К.Г. Прикладная теория цифровых автоматов / К.Г.
Самофалов, А.М. Романкевич, В.Н. Валуйский, [и др.]. — Киев.: Вища
школа, 1987. — 375 с.
38. Яшкардин, В.Л. IEEE 754 – стандарт двоичной арифметики с
плавающей точкой [Электронный ресурс] / В.Л. Яшкардин // SoftElectro. –
2009. – Режим доступа: http://www.webcitation.org/66HxLoJLV .
88
39. Таненбаум, Э. Архитектура компьютера / Э. Таненбаум. – 4-е изд. –
СПб.: Питер, 2005. – 699 с.
40. Waser, S. Introduction to Arithmetic for Digital Systems Designers / S.
Waser, M.J. Flynn / Harcourt Brace College. – University of Michigan, 1982.
41. Чернодуб, А. Н. Обзор методов нейроуправления / А. Н. Чернодуб,
Д. А. Дзюба // Проблемы программирования. – 2011. – № 2. – С. 79-94.
42. Калацкая, Л. В. Организация и обучение искусственных нейронных
сетей: Экспериментальное учебное пособие. / Л. В. Калацкая, В. А. Новиков,
В. С. Садов. – Минск: Изд-во БГУ, 2003. – 72 с.
43. Соловьев, В.В. Проектирование цифровых систем на основе
программируемых логических интегральных схем / В.В. Соловьев. – М.:
Горячая линия - Телеком, 2007. – 636 с.
44. Шевелев, С.С. Сумматор-вычитатель старшими разрядами вперед
на нейронах / С.С. Шевелев //
Известия Тульского государственного
университета. – 2013. - № 4. – C. 155-162.
45. Солонина, А.И. Алгоритмы и процессоры цифровой обработки
сигналов / А.И. Солонина, Д.А. Улахович, Д.А. Яковлев. – СПб.: БХВПетербург, 2001. – 464 с.
46. Пат. 2322688 Российская Федерация, МПК
G
06
F 7/52.
Ускоренный умножитель на нейронах / Шевелев С.С., Кобелев Н.С., Лопин
В.Н., Кобелев В.Н., Шевелева Е.С., Фетисова Е.В. / заявитель и
патентообладатель
Курск.
Курский
государственный
технический
университет - № 2006110815/09; заявл. 03.04.2006; опубл. 20.04.2008, Бюл. №
11 – 21 с.
47. Пат. 2246752 Российская Федерация, МПК
G
06
F 7/50.
Параллельный сумматор-вычитатель на нейронах/ Шевелев С.С. / заявитель и
патентообладатель
Курск.
Курский
государственный
технический
университет - № 2003124022/09; заявл. 30.07.2003; опубл. 20.02.2005, Бюл. №
5 – 15 с.
89
48. Пат. 2523942 Российская Федерация, МПК G 06 F 7/506, G 06 N
7/00. Параллельный сумматор-вычитатель на нейронах со сквозным
переносом / Шевелев С.С., Солодовников Ф.М., Шикунов Д.А., Шикунова
Е.С., Хла Вин / заявитель и патентообладатель Курск. Юго-Западный
государственный университет - № 2012141444/08; заявл. 27.09.2012; опубл.
27.07.2014, Бюл. № 21 – 21 с.
49. Пат. 2205444 Российская Федерация, МПК G 06 F 7/50. Сумматорвычитатель старшими разрядами вперед на нейронах / Шевелев С.С. /
заявитель
и
патентообладатель
Курск.
Курский
государственный
технический университет - № 2002105816/09; заявл. 04.03.2002; опубл.
27.05.2003, Бюл. № 15 – 10 с.
50. Пат. 2292580 Российская Федерация, МПК G 06 F 7/57,
G 06 F
7/483. Арифметический вычислитель / Шевелев С.С. / заявитель и
патентообладатель
Курск.
Курский
государственный
технический
университет - № 2004136510/09; заявл. 14.12.2004; опубл. 27.01.2007, Бюл.
№ 3 – 72 с.
51. Пат. 2316047 Российская Федерация, МПК G
Арифметико-символьный
патентообладатель
процессор/
Курск.
Шевелев
Курский
С.С.
06
/
государственный
F 15/76.
заявитель
и
технический
университет - № 2005140453/09; заявл. 23.12.2005; опубл. 27.01.2008, Бюл.
№ 3 – 200 с.
52. Пат. 4918636 США, МКИ G06 F 7/02. Схема сравнения набора
двоичных чисел. Circuit for comparing a plurality of binary inputs / Iwata Jun,
Nishikawa
Takeshi,
Nakamura
Toshihiko
/
NEC
Corp.
-
№289268;
Заявл.23.12.88; Опубл.17.4.90; Пpиоp.24.12.87, N 62-325201 (Япония); НКИ
364/715.06.
53. Пат. 2249845 Российская Федерация,
Умножитель на
МПК G
06
F 7/52.
нейронах/ Шевелев С.С., Стариков Р.В. / заявитель и
патентообладательКурск.
Курский
государственный
технический
90
университет - № 2003127815/09; заявл. 15.09.2003; опубл. 10.04.2005, Бюл.
№ 10 – 15 с.
54. Пат. 2249846 Российская Федерация, МПК G 06 F 7/52. Делитель
на
нейронах/
Шевелев
патентообладательКурск.
С.С.,
Курский
Тарасов
А.В.
/
государственный
заявитель
и
технический
университет - № 2003129961/09; заявл. 08.10.2003; опубл. 10.04.2005, Бюл.
№ 10 – 20 с.
55. Пат. 2453910 Российская Федерация, МПК G
06
F 15/76.
Вычислительная открытая развиваемая асинхронная модульная система
ВОРАМС / Шевелев С.С. / заявитель и патентообладатель Курск. ЮгоЗападный
государственный
университет
-
№
2009113184/08;
заявл.
08.04.2009; опубл. 20.06.2012, Бюл. № 17 – 81 с.
56. Хорошевский, В.Г. Архитектура вычислительных систем: учебное
пособие для вузов / В.Г. Хорошевский. – М: Изд-во МГТУ им. Н.Э.Баумана,
2005. – 512с.
57. Комарцова, Л.Г. Нейрокомпьютеры / Л.Г. Комарцова, А.В.
Максимов. – М.: Изд-во МГТУ им. Н.Э.Баумана, 2005. – 399 с.
58. Галушкин, А.И. Теория нейронных сетей: учебное пособие для
вузов / А.И. Галушкин. – М.: ИПРЖР, 2000. Кн. 1. – 416 с.
59. Злобин, В. К. Нейросети и нейрокомпьютеры / В. К. Злобин, В. Н.
Ручкин. – СПб.: БХВ-Петербург, 2011. – 256 с.
60. Галушкин, А.И. Нейрокомпьютеры и их применение: учебное
пособие для вузов / А.И Галушкина. – М.: ИПРЖР, 2000. Кн. 3. - 528 с.
61. Крутчинский, С.Г. Цифровые устройства комбинационного типа:
учебное пособие по курсу "Микропроцессорная техника в системах
управления" / С.Г. Крутчинский, В.С. Григорьев. – Таганрог: Изд-во ТТИ
ЮФУ, 2008. – 88с.
62. Угрюмов, Е.П. Цифровая схемотехника: учебное пособие / Е.П.
Угрюмов. – СПб.: БХВ-Петербург, 2007. – 800с.
63. Кнут, Д.Э. Искусство программирования / Д.Э. Кнут. – М.:
91
Издательский дом « Вильяме », 2003. – 832 с.
64. Немудров, В. Системы на кристалле. Проектирование и развитие /
В. Немудров, Г. Мартин. – М.: Техносфера, 2004. – 216 с.
65. Бройдо, В.Л. Вычислительные системы, сети, коммуникации:
учебник для вузов / В.Л. Бройдо. – СПб.: Питер, 2005. – 224 с.
66. Павлов, В.П. Организация ЭВМ и систем / В.П. Павлов. – Самара:
СГАУ, 2000. – 182 с.
67. Дмитриенко, В. Д.
Основы теории нейронных сетей / В.Д.
Дмитриенко, Н.И. Корсунов. – Белгород : БИИММАП, 2001. – 159 с.
68. Андрейчиков, А.В. Интеллектуальные информационные системы:
учебник. / А.В. Андрейчиков, О.Н. Андрейчикова. – М.: Финансы и
статистика, 2006. – 424 с.
69. Уоссермен, Ф. Нейрокомпьютерная техника. Теория и практика / Ф.
Уоссермен. – М.: 2006. – 184 с.
70. Хомоненко, А. Д. Основы современных компьютерных технологий:
учебное пособие / под ред. проф. А. Д. Хомоненко. – СПб.: КОРОНА принт,
2004. – 448 с.
71. Романова Ю.Д. Информатика и информационные технологии :
учебное пособие / Под ред. Ю. Д. Романовой. – 5-е изд., испр. и доп. – М.:
Эксмо, 2011. - 704 с.
72. Китаев, Ю. В. Основы цифровой техники: учебное пособие / Ю. В.
Китаев. – СПб: СПбГУ ИТМО, 2007. – 87 с.
73. Нарышкин, А.К. Цифровые устройства и микропроцессоры:
учебное пособие / А.К. Нарышкин. – М.: ACADEMA, 2006. – 320 с.
74. Кучумов А. И. Электроника и схемотехника: Учебное пособие/ А.
И. Кучумов. – М.: Гелиос АРВ. 2004.- 336 с.
75. Андреев, А.В. Основы информатики и вычислительной техники:
учебное пособие / А.В. Андреев, Б.И. Беккерман, В.И. Гриднев. – Ростов-наДону: Феникс, 2002. – 256 с.
76. Семенов, М.И. Архитектура компьютерных систем и сетей: учебное
92
пособие / М.И. Семенов, И.Т. Трубилин, В.И. Лойко, Т.П. Барановская. – М.:
Финансы и статистика, 2004. – 256 с.
77. Пятибратов,
А.П.
Вычислительные
системы,
сети
и
телекоммуникации: учебник. / А.П. Пятибратов, Л.П. Гудыно, А.А.
Кириченко. – М.: Финансы и статистика, 2005. – 736 с.
78. Жмакин, А.П. Архитектура ЭВМ. (+CD) / А.П. Жмакин. – СПб.:
БХВ-Петербург, 2008. – 320 с.
79. Пухальский, Г.И. Проектирование микропроцессорных систем:
учебное пособие для вузов. / Г.И. Пухальский. – СПб.: Политехника, 2001. –
544 с.
80. Культин, Н. Delphi в задачах и примерах. (+CD) / Н. Культин, –
СПб.: БХВ-Петербург, 2007. – 288 с.
81. Хомоненко, А.Д. Delphi 7 /
А.Д. Хомоненко. – СПб.: БХВ-
Петербург, 2006. – 1216 с.
82. Андреева, Е. В. Системы счисления и компьютерная арифметика:
учебное пособие / Е.В. Андреева. – М.: Бином. Лаборатория знаний, 2004. –
254 с.
83. Партыка, Т. Л. Вычислительная техника. Терминология: справочное
пособие / Т. Л. Партыка, И.И. Попов. – М.: Изд-во стандартов, 2006. – 168 с.
84. Схемотехника
электронных
систем.
Цифровые
устройства/
В.И.Бойко, А.Н.Гуржий, В.Я.Жуйков, А.А.Зори, В.М.Спивак, В.В.Багрий.СПб.: БХВ-Петербург, 2004. -512с.
93
ПРИЛОЖЕНИЕ 1
ОПИСАНИЕ
ПРОГРАММЫ
МОДЕЛИРОВАНИЯ
РАБОТЫ
СУММАТОРА-ВЫЧИТАТЕЛЯ НА НЕЙРОНАХ
Для моделирования работы параллельного сумматора-вычитателя на
нейронах
было
разработано
программное
приложение
на
языке
программирования C#. В качестве входных данных приложение использует
два поля ввода знаковых чисел. Максимальное допустимое значение для
входных чисел является 32767, что соответствует шестнадцатиразрядному
знаковому двоичному числу 0111111111111111. Минимальное допустимое
число равно -32767, что соответствует двоичному числу 1111111111111111.
Кроме того, в качестве элементов управления в приложении
присутствует селективная кнопка, которая позволяет выбирать режим
запуска приложения. Существует два режима работы: автоматический и
пошаговый. В автоматическом режиме после ввода входных операндов и
нажатия кнопки запуска, выполнение операции суммирования-вычитания
выполняется безостановочно с задержкой в 1,5 секунды между различными
операциями для демонстрации процесса суммирования-вычитания. В
пошаговом режиме изначально вводятся операнды и далее после каждого
нажатия клавиши «Запуск» выполняется очередная операция процесса
вычисления, пока не будет получен результат.
Кроме полей ввода операндов в приложении присутствуют регистры
входных чисел и регистр результата, представляющих собой таблицы из
одной строки и 16 столбцов. В каждой ячейке регистра чисел содержится
шестнадцатиразрядное двоичное число, представленное в прямом коде.
Старший бит числа содержит 0, если число положительное, и 1, если число
отрицательное. Для отображения результата вычисления кроме регистра
94
результата, в котором хранится двоичное представление числа, используется
поле, хранящее результат вычисления в десятичной системе счисления.
Для отображения текущего состояния сумматора-вычитателя в нижней
части формы приложения располагается строка состояния.
После ввода входных операндов, выбора режима работы приложения и
нажатия кнопки запуска выполняется обнуление всех полей приложения.
После чего входные числа, введенные как десятичные знаковые числа,
переводятся в двоичную систему счисления и помещаются в регистры
входных чисел. Если введенные числа по модулю превосходят значение,
равное 32767 или они не были введены пользователем, то выводится
сообщение об ошибке.
Когда числа были введены, производится анализ знаковых разрядов
чисел, для чего используется формальный нейрон. Если знаки входных чисел
одинаковы, то выполняется сложение, а если они различны, то вычитание.
Дополнительный шаг выполняется при выполнении вычитания, на котором
производится
сравнение
входных
чисел
и
при
необходимости
их
перестановка для того, чтобы из большего числа по модулю вычитать
меньшее, после чего результат получит знак первого числа.
Далее
производится
моделирование
процесса
параллельного
вычисления результата сложения, и полученное значение помещается в
регистр результата в виде двоичного числа со знаком. После чего в поле
хранения результата помешается десятичное представление числа результата.
После завершения выполнения сложения чисел и получения результата
вне зависимости от выбранного режима работы все поля данных снова
обнуляются, и пользователь имеет возможность ввести новые значения
входных операндов, выбрать режим и запустить моделирование сумматоравычитателя с новыми входными данными.
95
ПРИЛОЖЕНИЕ 2
ПРОГРАММА МОДЕЛИРОВАНИЯ РАБОТЫ СУММАТОРАВЫЧИТАТЕЛЯ НА НЕЙРОНАХ
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ParallSumm16
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
96
char[] charA;
char[] charB;
int err = 0;
int operation = 0;
int step = 0;
int delay = 1500;
private void dataGridView1_CellContentClick(object sender,
DataGridViewCellEventArgs e)
{
}
private void compSigns()
{
//указатьстрелкой
if (Convert.ToInt32(opA.Text) >= 0)
{
znA.Text = "0";
}
else
{
znA.Text = "1";
}
97
if (Convert.ToInt32(opB.Text) >= 0)
{
znB.Text = "0";
}
else
{
znB.Text = "1";
}
if (znA.Text == znB.Text)
{
st.Text = "Выполняется сложение";
operation = 0;
}
else
{
st.Text = "Выполняется вычитание";
operation = 1;
}
}
private void compVal()
{
98
if (Math.Abs(Convert.ToInt32(opA.Text))
<Math.Abs(Convert.ToInt32(opB.Text)))
{
st.Text = "Перестановкаоперандов";
string s1 = opA.Text;
opA.Text = opB.Text;
opB.Text = s1;
inpOp();
compSigns();
exchangeArr.Visible = true;
}
}
private void clearAll()
{
err = 0;
operation = 0;
step = 0;
binA.ColumnCount = 0;
binB.ColumnCount = 0;
binR.ColumnCount = 0;
binA.ColumnCount = 16;
99
binB.ColumnCount = 16;
binR.ColumnCount = 16;
for (inti = 0; i< 16; i++)
{
binA.Columns[i].Width = 20;
binB.Columns[i].Width = 20;
binR.Columns[i].Width = 20;
}
//opA.Text = "0";
//opB.Text = "0";
znA.Text = "0";
znB.Text = "0";
res.Text = "";
st.Text = "Вводоперандов";
moveArr.Visible = false;
exchangeArr.Visible = false;
calcArr.Visible = false;
signArr.Visible = false;
resArr.Visible = false;
return;
}
100
private void calc()
{
char[] charR = intToBin(Convert.ToInt32(opA.Text) +
Convert.ToInt32(opB.Text));
for (inti = 0; i< 16; i++)
{
binR.Columns[i].Width = 20;
binR.Rows[0].Cells[i].Value = charR[i];
}
calcArr.Visible = true;
return;
}
private void outpRes()
{
res.Text = (Convert.ToInt32(opA.Text) + Convert.ToInt32(opB.Text)).ToString();
return;
}
private void inpOp()
{
binA.ColumnCount = 16;
binB.ColumnCount = 16;
101
if (opA.Text == "" || opB.Text == "")
{
MessageBox.Show("Введитеоперанды", "Предупреждение",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
err = 1;
return;
}
if (Convert.ToInt32(opA.Text) > 32767 || Convert.ToInt32(opA.Text) < 32767 ||
Convert.ToInt32(opB.Text) > 32767 || Convert.ToInt32(opB.Text) < 32767)
{
MessageBox.Show("Введитеоперандывпределахдиапазона",
"Предупреждение", MessageBoxButtons.OK, MessageBoxIcon.Warning);
err = 1;
return;
}
charA = intToBin(Convert.ToInt32(opA.Text));
charB = intToBin(Convert.ToInt32(opB.Text));
for (inti = 0; i< 16; i++)
{
binA.Columns[i].Width = 20;
102
binA.Rows[0].Cells[i].Value = charA[i];
binB.Columns[i].Width = 20;
binB.Rows[0].Cells[i].Value = charB[i];
}
return;
}
private char[] intToBin(int nom)
{
//string s = "0000000000000000"; // 16 char empty string
char[] str1 = new char[16];
if (nom > 32767 || nom < -32767)
return str1;
for (int j = 0; j < 16; j++)
{
str1[j] = '0';
}
if (nom < 0)
{
str1[0] = '1';
nom = nom * -1;
}
103
inti = 15;
while (nom > 0)
{
str1[i] = (nom % 2).ToString()[0];
nom = nom / 2;
i--;
}
//s = new string(str1);
return str1;
}
private void waitTime(int inter)
{
Application.DoEvents();
System.Threading.Thread.Sleep(inter);
Application.DoEvents();
}
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked)
{
button1.Enabled = false;
104
clearAll();
waitTime(delay);
inpOp();
moveArr.Visible = true;
if (err == 1) return;
waitTime(delay);
signArr.Visible = true;
moveArr.Visible = false;
compSigns();
waitTime(delay);
signArr.Visible = false;
if (operation == 1)
{
compVal();
waitTime(delay);
}
calc();
waitTime(delay);
signArr.Visible = false;
exchangeArr.Visible = false;
outpRes();
105
calcArr.Visible = false;
resArr.Visible = true;
waitTime(delay);
button1.Enabled = true;
}
else
{
switch (step)
{
case 0:
clearAll();
if (err == 1) return;
step++; break;
case 1:
inpOp();
moveArr.Visible = true;
step++;
break;
case 2:
signArr.Visible = true;
moveArr.Visible = false;
106
compSigns();
if (operation == 0)
{
step += 2;
}
else
{
step++;
}
break;
case 3:
signArr.Visible = false;
if (operation == 1)
{
compVal();
}
step++;
break;
case 4:
signArr.Visible = false;
exchangeArr.Visible = false;
107
calc();
step++;
break;
case 5:
outpRes();
calcArr.Visible = false;
resArr.Visible = true;
step++;
break;
case 6:
clearAll();
resArr.Visible = false;break;
}
}
}
}
}
Скачать