RU2131145C1 - Нейропроцессор, устройство для вычисления функций насыщения, вычислительное устройство и сумматор - Google Patents

Нейропроцессор, устройство для вычисления функций насыщения, вычислительное устройство и сумматор Download PDF

Info

Publication number
RU2131145C1
RU2131145C1 RU98110876/09A RU98110876A RU2131145C1 RU 2131145 C1 RU2131145 C1 RU 2131145C1 RU 98110876/09 A RU98110876/09 A RU 98110876/09A RU 98110876 A RU98110876 A RU 98110876A RU 2131145 C1 RU2131145 C1 RU 2131145C1
Authority
RU
Russia
Prior art keywords
input
vector
inputs
output
bit
Prior art date
Application number
RU98110876/09A
Other languages
English (en)
Other versions
RU98110876A (ru
Inventor
В.М. Черников
П.Е. Виксне
Д.В. Фомин
П.А. Шевченко
М.Ф. Яфраков
Original Assignee
Закрытое акционерное общество Научно-технический центр "Модуль"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Закрытое акционерное общество Научно-технический центр "Модуль" filed Critical Закрытое акционерное общество Научно-технический центр "Модуль"
Priority to RU98110876/09A priority Critical patent/RU2131145C1/ru
Priority to JP11556597A priority patent/JP2000514230A/ja
Priority to US09/486,495 priority patent/US6539368B1/en
Priority to KR1019997010077A priority patent/KR100336266B1/ko
Priority to PCT/RU1998/000449 priority patent/WO1999066419A1/ru
Priority to EP98965909A priority patent/EP1014274A4/en
Priority to AU21919/99A priority patent/AU2191999A/en
Application granted granted Critical
Publication of RU98110876A publication Critical patent/RU98110876A/ru
Publication of RU2131145C1 publication Critical patent/RU2131145C1/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Abstract

Изобретения относятся к вычислительной технике и могут быть использованы для формирования нейронных сетей. Техническим результатом является расширение функциональных возможностей за счет изменения разрядности результатов. Нейропроцессор содержит регистры, блоки памяти магазинного типа, коммутатор, вычислительное устройство, сдвиговый регистр и устройства для вычисления функции насыщения, устройство для вычисления функции насыщения построено на логических элементах, мультиплексорах и схемах распространения и формирования переносов. Вычислительное устройство содержит матрицу умножения, дешифраторы, триггеры, элементы ЗАПРЕТ и мультиплексоры. Сумматор выполнен на логических элементах и схеме формирования переносов. 4 с. и 4 з.п. ф-лы, 9 ил.

Description

Группа изобретений относится к области вычислительной техники и может быть использована для эмуляции нейронных сетей и цифровой обработки сигналов в реальном масштабе времени.
Известен нейропроцессор [1], содержащий регистр входных данных и четыре нейронных узла, каждый из которых состоит из сдвигового регистра, регистра весовых коэффициентов, восьми умножителей, схемы многооперандного сложения и блока для вычисления пороговой функции.
Такой нейропроцессор в каждом такте выполняет взвешенное суммирование фиксированного числа входных данных для фиксированного числа нейронов независимо от реального диапазона значений входных данных и их весовых коэффициентов. При этом каждое входное данное, так же как и каждый весовой коэффициент, представляется в виде операнда фиксированной разрядности, определяемой разрядностью аппаратных узлов нейропроцессора. Однако, значения входных данных и весовых коэффициентов могут варьироваться в очень широком диапазоне как при переходе от одной нейронной сети к другой, так и при переходе от одного фрагмента нейронной сети к другому фрагменту этой же сети. Поэтому при эмуляции нейронной сети или ее фрагмента с малыми значениями входных данных и (или) весовых коэффициентов аппаратура известного нейропроцессора используется неэффективно.
Таким образом, основным недостатком известного нейропроцессора является отсутствие возможности программно изменять разрядность обрабатываемых входных данных и их весовых коэффициентов, что в свою очередь приводит к аппаратной избыточности и относительно низкой производительности нейропроцессора при эмуляции фрагментов нейронных сетей с малыми значениями входных данных и (или) весовых коэффициентов.
Наиболее близким по технической сущности к первому изобретению является нейропроцессор [2], содержащий три регистра, мультиплексор, блок памяти магазинного типа, операционное устройство для вычисления скалярного произведения двух векторов данных программируемой разрядности с прибавлением накапливаемого результата и устройство для вычисления нелинейной функции.
На входы такого нейропроцессора подаются вектора входных данных и вектора их весовых коэффициентов. В каждом такте нейропроцессор выполняет взвешенное суммирование нескольких входных данных для одного нейрона путем вычисления скалярного произведения вектора входных данных на вектор весовых коэффициентов. Причем нейропроцессор поддерживает обработку векторов, разрядность отдельных составляющих которых может быть программно выбрана из ряда фиксированных значений. С уменьшением разрядности отдельных входных данных и весовых коэффициентов увеличивается их количество в каждом векторе и тем самым повышается производительность нейропроцессора. Однако, разрядность получаемых результатов фиксирована и определяется разрядностью аппаратных узлов нейропроцессора.
Таким образом, основным недостатком известного нейропроцессора является отсутствие возможности программно изменять разрядность выходных данных, что в свою очередь приводит к аппаратной избыточности и относительно низкой производительности нейропроцессора при эмуляции фрагментов нейронных сетей с малыми значениями входных данных и (или) весовых коэффициентов.
Известно цифровое устройство ограничения числа по модулю [3], содержащее три регистра, сумматор, два преобразователя кодов, два блока анализа знаков, блок коррекции, две группы элементов И и группу элементов ИЛИ. Такое устройство позволяет за 2N тактов вычислять функции насыщения для вектора из N входных операндов.
Недостатками известного устройства ограничения числа по модулю являются низкая производительность и большие аппаратные затраты.
Наиболее близким по технической сущности к второму изобретению является устройство для вычисления функций насыщения [4], содержащее мультиплексор, компаратор и два индикатора насыщения. Такое устройство позволяет за N тактов вычислять функции насыщения для вектора из N входных операндов.
Недостатком такого устройства для вычисления функций насыщения является низкая производительность при обработке множества операндов, имеющих малые значения.
Известно вычислительное устройство [2], содержащее умножители, сумматоры, регистры, мультиплексор и блок памяти магазинного типа. Данное устройство позволяет за один такт вычислить скалярное произведение двух векторов, каждый из которых содержит по M операндов, и за N тактов выполнить умножение матрицы, содержащей N x М операндов, на вектор, состоящий из М операндов.
Недостатками известного вычислительного устройства являются низкое быстродействие и большие аппаратные затраты.
Наиболее близким по технической сущности к третьему изобретению является вычислительное устройство [5], содержащее 3N/2 логических элементов И, N/2 дешифраторов разрядов множителя по алгоритму Бута, матрицу умножения из N столбцов по N/2 ячеек, каждая из которых состоит из схемы формирования разряда частичного произведения по алгоритму Бута и одноразрядного сумматора, 2N-разрядный сумматор, N/2 мультиплексоров, N/2 дополнительных схем формирования разряда частичного произведения по алгоритму Бута и N/2 логических элементов импликации. Данное устройство позволяет за один такт перемножить два N-разрядных операнда или перемножить поэлементно два вектора, каждый из которых содержит по два (N/2)-разрядных операнда.
Недостаток такого вычислительного устройства заключается в его ограниченных функциональных возможностях, не позволяющих выполнять умножение матрицы операндов на вектор операндов.
Известно устройство для сложения векторов операндов программируемой разрядности [6], содержащее сумматоры и логические элементы ЗАПРЕТ.
Недостатками известного устройства являются низкое быстродействие, вследствие последовательного распространения сигналов переноса между сумматорами, и ограниченные функциональные возможности.
Наиболее близким по технической сущности к четвертому изобретению является сумматор [7], содержащий схему формирования переносов и в каждом своем разряде - полусумматор и логический элемент ИСКЛЮЧАЮЩЕЕ ИЛИ. Данный сумматор позволяет за N тактов выполнить сложение двух векторов, состоящих из N операндов каждый.
Недостатком такого сумматора является низкая производительность при сложении векторов данных.
Достигаемый технический результат первого изобретения заключается в повышении производительности нейропроцессора путем обеспечения возможности программно изменять разрядности результатов.
Указанный технический результат достигается тем, что в нейропроцессор, содержащий первый, второй и третий регистры, первый блок памяти магазинного типа и мультиплексор, первый информационный вход каждого разряда которого соединен с выходом соответствующего разряда первого регистра, информационный вход каждого разряда второго регистра подключен к соответствующему разряду первой входной шины нейропроцессора, входы управления первого, второго и третьего регистров являются соответствующими управляющими входами нейропроцессора, введены четвертый, пятый и шестой регистры, сдвиговый регистр, логический элемент И, второй блок памяти магазинного типа, коммутатор с трех направлений в два, два устройства для вычисления функций насыщения, сумматор и вычислительное устройство, имеющее входы разрядов вектора первых операндов, входы разрядов вектора вторых операндов, входы разрядов вектора третьих операндов, входы установки границ данных в векторах первых операндов и результатов, входы установки границ данных в векторах вторых операндов, входы установки границ данных в векторах третьих операндов, первый и второй входы управления загрузкой векторов третьих операндов в первый блок памяти, вход управления пересылкой матрицы третьих операндов из первого блока памяти во второй блок памяти и выходы разрядов вектора первых и вектора вторых слагаемых результатов операции сложения вектора первых операндов с произведением вектора вторых операндов на матрицу третьих операндов, хранящуюся во втором блоке памяти, причем первые информационные входы разрядов коммутатора с трех направлений в два, информационные входы первого блока памяти магазинного типа, первого, третьего и четвертого регистров и параллельные информационные входы сдвигового регистра поразрядно объединены и подключены к соответствующим разрядам первой входной шины нейропроцессора, каждый разряд второй входной шины которого соединен с вторым информационным входом соответствующего разряда коммутатора с трех направлений в два, первый выход каждого разряда которого соединен с входом соответствующего разряда вектора входных операндов первого устройства для вычисления функций насыщения, управляющий вход каждого разряда которого соединен с выходом соответствующего разряда второго регистра, второй выход каждого разряда коммутатора с трех направлений в два соединен с входом соответствующего разряда вектора входных операндов второго устройства для вычисления функций насыщения, управляющий вход каждого разряда которого соединен с выходом соответствующего разряда третьего регистра, выход каждого разряда вектора результатов первого устройства для вычисления функций насыщения соединен с вторым информационным входом соответствующего разряда мультиплексора, выход каждого разряда которого соединен с входом соответствующего разряда вектора первых операндов вычислительного устройства, вход каждого разряда вектора вторых операндов которого соединен с выходом соответствующего разряда вектора результатов второго устройства для вычисления функций насыщения, информационные выходы первого блока памяти магазинного типа соединены с входами соответствующих разрядов вектора третьих операндов вычислительного устройства, выход каждого разряда вектора первых слагаемых результатов операции сложения вектора первых операндов с произведением вектора вторых операндов на матрицу третьих операндов, хранящуюся во втором блоке памяти, которого соединен с входом соответствующего разряда вектора первых слагаемых сумматора, вход каждого разряда вектора вторых слагаемых которого соединен с выходом соответствующего разряда вектора вторых слагаемых результатов операции сложения вектора первых операндов с произведением вектора вторых операндов на матрицу третьих операндов, хранящуюся во втором блоке памяти, вычислительного устройства, каждый вход установки границ данных в векторах первых операндов и результатов которого соединен с выходом соответствующего разряда пятого регистра и с соответствующим входом установки границ данных в векторах слагаемых и сумм сумматора, выход каждого разряда вектора сумм которого соединен с соответствующим информационным входом второго блока памяти магазинного типа, каждый информационный выход которого подключен к соответствующему разряду выходной шины нейропроцессора и соединен с третьим входом соответствующего разряда коммутатора с трех направлений в два, выход каждого разряда четвертого регистра соединен с информационным входом соответствующего разряда пятого регистра и соответствующим входом установки границ данных в векторах третьих операндов вычислительного устройства, каждый вход установки границ данных в векторах вторых операндов которого соединен с выходом соответствующего разряда шестого регистра, информационный вход каждого разряда которого соединен с выходом соответствующего разряда сдвигового регистра, последовательные информационные вход и выход которого объединены и подключены к первому входу управления загрузкой векторов третьих операндов в первый блок памяти вычислительного устройства и к первому входу элемента И, выход которого соединен с входом управления чтением первого блока памяти магазинного типа, второй вход элемента И, вход управления сдвигом сдвигового регистра и второй вход управления загрузкой векторов третьих операндов в первый блок памяти вычислительного устройства объединены и подключены к соответствующему управляющему входу нейропроцессора, вход управления пересылкой матрицы третьих операндов из первого блока памяти во второй блок памяти вычислительного устройства и входы управления пятого и шестого регистров объединены и подключены к соответствующему управляющему входу нейропроцессора, управляющие входы коммутатора с трех направлений в два, мультиплексора и четвертого регистра, входы управления записью сдвигового регистра и первого блока памяти магазинного типа и входы управления чтением и записью второго блока памяти магазинного типа являются соответствующими управляющими входами нейропроцессора, выходы состояния первого и второго блоков памяти магазинного типа являются выходами состояния нейропроцессора.
В нейропроцессоре может применяться вычислительное устройство, содержащее сдвиговый регистр, выполняющий за один такт арифметический сдвиг всех операндов хранящегося в нем N-разрядного вектора на J разрядов влево, где J - минимальная величина, которой кратны разрядности данных в векторах вторых операндов вычислительного устройства, элемент задержки, первый блок памяти, имеющий порт ввода магазинного типа и содержащий N/J ячеек для хранения N-разрядных данных, второй блок памяти, содержащий N/J ячеек для хранения N-разрядных данных, N/J блоков умножения, каждый из которых умножает N-разрядный вектор данных программируемой разрядности на J-разрядный множитель, и схему сложения векторов, формирующую двухрядный код суммы N/J+1 векторов данных программируемой разрядности, причем входы разрядов вектора третьих операндов вычислительного устройства подключены к информационным входам сдвигового регистра, выходы которого соединены с информационными входами первого блока памяти, выходы каждой ячейки которого соединены с информационными входами соответствующей ячейки второго блока памяти, выходы каждой ячейки которого соединены с входами разрядов вектора множимых соответствующего блока умножения, входы разрядов множителя которого подключены к входам соответствующей J-разрядной группы разрядов вектора вторых операндов вычислительного устройства, выходы каждого блока умножения соединены с входами разрядов соответствующего вектора слагаемых схемы сложения векторов, входы разрядов (N/J+1)-го вектора слагаемых которой подключены к входам разрядов вектора первых операндов вычислительного устройства, входы установки границ данных в векторах третьих операндов которого подключены к соответствующим входам установки границ данных в векторах операндов сдвигового регистра, вход режима работы которого подключен к первому входу управления загрузкой векторов третьих операндов в первый блок памяти вычислительного устройства, второй вход управления загрузкой векторов третьих операндов в первый блок памяти которого подключен к тактовому входу сдвигового регистра и входу элемента задержки, выход которого соединен с входом управления записью первого блока памяти, вход управления записью второго блока памяти подключен к входу управления пересылкой матрицы третьих операндов из первого блока памяти во второй блок памяти вычислительного устройства, каждый вход установки границ данных в векторах вторых операндов которого подключен к входу знаковой коррекции соответствующего блока умножения, входы установки границ данных в векторах первых операндов и результатов вычислительного устройства подключены к входам установки границ данных в векторах множимых и результатов каждого блока умножения и к входам установки границ данных в векторах слагаемых и результатов схемы сложения векторов, выходы разрядов векторов первых и вторых слагаемых результатов которой являются соответствующими выходами вычислительного устройства.
Достигаемый технический результат первого изобретения может быть усилен путем уменьшения длительности процессорного такта.
Указанное усиление технического результата достигается тем, что в описанном выше нейропроцессоре каждое из устройств для вычисления функций насыщения содержит регистр входных данных, информационные входы которого являются входами соответствующих разрядов вектора входных операндов этого устройства, вычислительное устройство содержит регистр входных данных, информационные входы которого являются входами соответствующих разрядов векторов первых и вторых операндов вычислительного устройства, сумматор содержит регистр входных данных, информационные входы которого являются соответствующими входами сумматора.
Достигаемый технический результат второго изобретения заключается в повышении производительности устройства для вычисления функций насыщения путем обеспечения возможности одновременной обработки вектора входных операндов программируемой разрядности.
Указанный технический результат достигается тем, что в устройство для вычисления функций насыщения, содержащее в каждом из N разрядов первый мультиплексор, второй информационный вход которого подключен к входу соответствующего разряда вектора входных операндов устройства, выход каждого разряда вектора результатов которого подключен к выходу первого мультиплексора соответствующего разряда устройства, введены схема распространения переносов и схема формирования переносов, а в его каждый разряд введены второй мультиплексор и логические элементы ИСКЛЮЧАЮЩЕЕ ИЛИ, РАВНОЗНАЧНОСТЬ, И-НЕ и ЗАПРЕТ, причем прямой вход элемента ЗАПРЕТ и первые входы элементов И-НЕ и РАВНОЗНАЧНОСТЬ каждого разряда устройства объединены и подключены к соответствующему управляющему входу устройства, выход элемента И-НЕ n-го разряда устройства соединен с входом распространения переноса через (N-n+1)-й разряд схемы формирования переносов, выход переноса в (N-n+2)-й разряд которой соединен с управляющим входом первого мультиплексора n-го разряда устройства, выход элемента ЗАПРЕТ которого соединен с управляющим входом второго мультиплексора этого же разряда устройства, входом генерации переноса в (N-n+1)-м разряде схемы формирования переносов и инверсным входом распространения переноса через (N-n+1)-й разряд схемы распространения переносов, вход переноса из (N-n+1)-го разряда которой соединен с выходом второго мультиплексора n-го разряда устройства (где n=1,2,...N), первый вход элемента ИСКЛЮЧАЮЩЕЕ ИЛИ и прямой вход элемента ЗАПРЕТ q-го разряда устройства соединены соответственно с вторым входом элемента ИСКЛЮЧАЮЩЕЕ ИЛИ и инверсным входом элемента ЗАПРЕТ (q-1)-го разряда устройства, первый информационный вход второго мультиплексора которого соединен с выходом переноса в (N-q+2)-й разряд схемы распространения переносов (где q=2,3,...,N), входы начальных переносов схемы распространения переносов и схемы формирования переносов, второй вход элемента ИСКЛЮЧАЮЩЕЕ ИЛИ, инверсный вход элемента ЗАПРЕТ и первый информационный вход второго мультиплексора N-го разряда устройства объединены и подключены к шине логического нуля, а в каждом разряде устройства выход второго мультиплексора соединен с вторым входом элемента РАВНОЗНАЧНОСТЬ, выход которого соединен с первым информационным входом первого мультиплексора, второй информационный вход которого соединен с вторым информационным входом второго мультиплексора и первым входом элемента ИСКЛЮЧАЮЩЕЕ ИЛИ, выход которого соединен с вторым входом элемента И-НЕ этого же разряда устройства.
В частных случаях применения второго изобретения, когда предъявляются жесткие требования по минимизации аппаратных затрат, в схеме распространения переносов выход переноса в q-й разряд соединен с входом переноса из (q-1)-ro разряда (где q=2,3,...,N), а схема формирования переносов содержит по N логических элементов И и ИЛИ, причем каждый вход распространения переноса через соответствующий разряд схемы формирования переносов подключен к первому входу соответствующего элемента И, выход которого соединен с первым входом соответствующего элемента ИЛИ, второй вход и выход которого подключены соответственно к входу генерации переноса в соответствующем разряде схемы формирования переносов и выходу переноса в этот же разряд схемы формирования переносов, второй вход первого элемента И является входом начального переноса схемы формирования переносов, второй вход q-го элемента И соединен с выходом (q-1)-ro элемента ИЛИ (где q=2,3,...,N).
Достигаемый технический результат третьего изобретения заключается в расширении функциональных возможностей вычислительного устройства.
Указанный технический результат достигается тем, что в вычислительное устройство, содержащее N/2 дешифраторов разрядов множителя и матрицу умножения из N столбцов по N/2 ячеек, каждая из которых состоит из схемы формирования разряда частичного произведения и одноразрядного сумматора, причем соответствующие управляющие входы схем формирования разряда частичного произведения i-x ячеек всех столбцов матрицы умножения объединены и подключены к соответствующим выходам i-го дешифратора разрядов множителя (где i= 1,2, . . . ,N/2), первый вход одноразрядного сумматора каждой ячейки матрицы умножения соединен с выходом схемы формирования разряда частичного произведения этой же ячейки матрицы умножения, введены N/2 логических элементов ЗАПРЕТ, элемент задержки и N-разрядный сдвиговый регистр, каждый разряд которого состоит из логического элемента ЗАПРЕТ, мультиплексора и триггера, а в каждую ячейку матрицы умножения введены первый и второй триггеры, выполняющие функции ячеек памяти соответственно первого и второго блоков памяти устройства, логический элемент ЗАПРЕТ и мультиплексор, причем вход каждого разряда вектора первых операндов устройства подключен к второму входу одноразрядного сумматора первой ячейки соответствующего столбца матрицы умножения, управляющие входы мультиплексоров и инверсные входы элементов ЗАПРЕТ всех ячеек каждого столбца которой объединены и подключены к соответствующему входу установки границ данных в векторах первых операндов и результатов устройства, каждый вход установки границ данных в векторах вторых операндов которого подключен к инверсному входу соответствующего элемента ЗАПРЕТ, выход которого соединен с первым входом соответствующего дешифратора разрядов множителя, второй и третий входы i-го дешифратора разрядов множителя подключены к входам соответственно (2i-1)-го и (2i)-го разрядов вектора вторых операндов устройства (где i=1,2,...,N/2), прямой вход j-го элемента ЗАПРЕТ соединен с третьим входом (j-1)-го дешифратора разрядов множителя (где j= 2,3, . ..,N/2), вход каждого разряда вектора третьих операндов устройства подключен к второму информационному входу мультиплексора соответствующего разряда сдвигового регистра, первый информационный вход которого соединен с выходом элемента ЗАПРЕТ этого же разряда сдвигового регистра, первый инверсный вход которого подключен к соответствующему входу установки границ данных в векторах третьих операндов устройства, второй инверсный вход элемента ЗАПРЕТ q-го разряда сдвигового регистра соединен с первым инверсным входом элемента ЗАПРЕТ (q-1)-го разряда сдвигового регистра (где q=2,3,..., N), прямой вход элемента ЗАПРЕТ r-го разряда сдвигового регистра соединен с выходом триггера (r-2)-го разряда сдвигового регистра (где r=3,4,...,N), управляющие входы мультиплексоров всех разрядов сдвигового регистра объединены и подключены к первому входу управления загрузкой векторов третьих операндов в первый блок памяти устройства, входы синхронизации триггеров всех разрядов сдвигового регистра и вход элемента задержки объединены и подключены к второму входу управления загрузкой векторов третьих операндов в первый блок памяти устройства, выход мультиплексора каждого разряда сдвигового регистра соединен с информационным входом триггера этого же разряда сдвигового регистра, выход которого соединен с информационным входом первого триггера последней ячейки соответствующего столбца матрицы умножения, выход первого триггера j-й ячейки каждого столбца матрицы умножения соединен с информационным входом первого триггера (j-1)-й ячейки этого же столбца матрицы умножения (где j= 2,3, ...,N/2), входы синхронизации первых триггеров всех ячеек матрицы умножения объединены и подключены к выходу элемента задержки, входы синхронизации вторых триггеров всех ячеек матрицы умножения объединены и подключены к входу управления пересылкой матрицы третьих операндов из первого блока памяти во второй блок памяти устройства, второй информационный вход схемы формирования разряда частичного произведения i-й ячейки q-го столбца матрицы умножения соединен с выходом элемента ЗАПРЕТ i-й ячейки (q-1)-го столбца матрицы умножения (где i=1,2,...,N/2 и q=2,3,...,N), второй вход одноразрядного сумматора j-й ячейки каждого столбца матрицы умножения соединен с выходом суммы одноразрядного сумматора (j-1)-й ячейки этого же столбца матрицы умножения (где j=2,3,...,N/2), третий вход одноразрядного сумматора j-й ячейки q-го столбца матрицы умножения соединен с выходом мультиплексора (j-1)-й ячейки (q-1)-го столбца матрицы умножения (где j=2,3, . . . , N/2 и q=2,3,...,N), третий вход одноразрядного сумматора j-й ячейки первого столбца матрицы умножения соединен с третьим выходом (j-1)-го дешифратора разрядов множителя (где j=2,3,...,N/2), выход суммы одноразрядного сумматора последней ячейки каждого столбца матрицы умножения является выходом соответствующего разряда вектора первых слагаемых результатов устройства, выход мультиплексора последней ячейки (q-1)-го столбца матрицы умножения является выходом q-го разряда вектора вторых слагаемых результатов устройства (где q= 2,3, ...,N), первый разряд вектора вторых слагаемых результатов которого подключен к третьему выходу (N/2)-го дешифратора разрядов множителя, второй инверсный и прямой входы элемента ЗАПРЕТ первого разряда и прямой вход элемента ЗАПРЕТ второго разряда сдвигового регистра, вторые информационные входы схем формирования разряда частичного произведения всех ячеек первого столбца матрицы умножения, третьи входы одноразрядных сумматоров первых ячеек всех столбцов матрицы умножения и прямой вход первого элемента ЗАПРЕТ объединены и подключены к шине логического нуля, а в каждой ячейке матрицы умножения выход первого триггера соединен с информационным входом второго триггера, выход которого соединен с прямым входом элемента ЗАПРЕТ и первым информационным входом схемы формирования разряда частичного произведения, третий управляющий вход которой соединен с вторым информационным входом мультиплексора, первый информационный вход которого соединен с выходом переноса одноразрядного сумматора этой же ячейки матрицы умножения.
Достигаемый технический результат четвертого изобретения заключается в повышении производительности сумматора путем введения в состав выполняемых им операций арифметических операций над векторами данных программируемой разрядности.
Указанный технический результат достигается тем, что в каждый разряд сумматора, содержащего схему формирования переносов, а в каждом из N своих разрядов - полусумматор и логический элемент ИСКЛЮЧАЮЩЕЕ ИЛИ, причем вход каждого разряда вектора первых слагаемых сумматора и вход соответствующего разряда вектора вторых слагаемых сумматора подключены соответственно к первому и второму входам полусумматора соответствующего разряда сумматора, выход суммы которого соединен с первым входом элемента ИСКЛЮЧАЮЩЕЕ ИЛИ этого же разряда сумматора, выход которого является выходом соответствующего разряда вектора сумм сумматора, второй вход элемента ИСКЛЮЧАЮЩЕЕ ИЛИ q-го разряда сумматора соединен с выходом переноса в q-й разряд схемы формирования переносов (где q= 2,3, . . .,N), вход начального переноса которой и второй вход элемента ИСКЛЮЧАЮЩЕЕ ИЛИ первого разряда сумматора подключены к шине логического нуля, введены первый и второй логические элементы ЗАПРЕТ, причем выход суммы полусумматора каждого разряда сумматора соединен с прямым входом первого элемента ЗАПРЕТ этого же разряда сумматора, выход которого соединен с входом распространения переноса через соответствующий разряд схемы формирования переносов, выход переноса полусумматора каждого разряда сумматора соединен с прямым входом второго элемента ЗАПРЕТ этого же разряда сумматора, выход которого соединен с входом генерации переноса в соответствующем разряде схемы формирования переносов, инверсные входы первого и второго элементов ЗАПРЕТ каждого разряда сумматора объединены и подключены к соответствующему входу установки границ данных в векторах слагаемых и сумм сумматора.
На фиг. 1 приведена блок-схема нейропроцессора, на фиг.2 - общий вид функций насыщения, формируемых устройствами для вычисления функций насыщения, на фиг.3 - модель слоя нейронной сети, эмулируемой нейропроцессором, на фиг. 4 - блок-схема вычислительного устройства, на фиг.5 - схема устройства для вычисления функций насыщения векторов данных программируемой разрядности, на фиг.6 - схема формирования переносов, которая может применяться в устройстве для вычисления функций насыщения, на фиг.7 - схема вычислительного устройства, на фиг.8 - примеры схемотехнической реализации дешифратора разрядов множителя и схемы формирования разряда частичного произведения по алгоритму Бута, применяемых в вычислительном устройстве, на фиг.9 - схема сумматора векторов данных программируемой разрядности.
Нейропроцессор, блок-схема которого представлена на фиг.1, содержит первый 1, второй 2, третий 3, четвертый 4, пятый 5 и шестой 6 регистры, сдвиговый регистр 7, логический элемент И 8, первый 9 и второй 10 блоки памяти магазинного типа, коммутатор с трех направлений в два 11, мультиплексор 12, первое 13 и второе 14 устройства для вычисления функций насыщения, каждое из которых имеет входы разрядов вектора входных операндов 15, управляющие входы 16 и выходы разрядов вектора результатов 17, вычислительное устройство 18, имеющее входы разрядов вектора первых 19, вектора вторых 20 и вектора третьих 21 операндов, входы установки границ данных в векторах первых операндов и результатов 22, в векторах вторых операндов 23 и векторах третьих операндов 24, первый 25 и второй 26 входы управления загрузкой векторов третьих операндов в первый блок памяти, вход управления пересылкой матрицы третьих операндов из первого блока памяти во второй блок памяти 27 и выходы разрядов вектора первых 28 и вектора вторых 29 слагаемых результатов операции сложения вектора первых операндов с произведением вектора вторых операндов на матрицу третьих операндов, хранящуюся во втором блоке памяти, и сумматор 30, имеющий входы разрядов вектора первых 31 и вектора вторых 32 слагаемых, входы установки границ данных в векторах слагаемых и сумм 33 и выходы разрядов вектора сумм 34. Нейропроцессор имеет первую 35 и вторую 36 входные шины и выходную шину 37. Управляющие входы 38 коммутатора с трех направлений в два 11, управляющий вход 39 мультиплексора 12, управляющий вход 40 первого регистра 1, управляющий вход 41 второго регистра 2, управляющий вход 42 третьего регистра 3, управляющий вход 43 четвертого регистра 4, вход управления записью 44 сдвигового регистра 7, вход управления записью 45 первого блока памяти магазинного типа 9, входы управления записью 46 и чтением 47 второго блока памяти магазинного типа 10 и указанные выше управляющие входы 26 и 27 вычислительного устройства 18 являются соответствующими управляющими входами нейропроцессора. Выходы состояния 48 первого блока памяти магазинного типа 9 и выходы состояния 49 второго блока памяти магазинного типа 10 являются выходами состояния нейропроцессора.
Первые информационные входы разрядов коммутатора с трех направлений в два 11, информационные входы первого блока памяти магазинного типа 9, первого 1, второго 2, третьего 3 и четвертого 4 регистров и параллельные информационные входы сдвигового регистра 7 поразрядно объединены и подключены к первой входной шине 35 нейропроцессора, разряды второй входной шины 36 которого соединены с вторыми информационными входами соответствующих разрядов коммутатора с трех направлений в два 11. Первые выходы разрядов коммутатора с трех направлений в два 11 соединены с входами соответствующих разрядов вектора входных операндов 15 первого устройства для вычисления функций насыщения 13, управляющие входы 16 разрядов которого соединены с выходами соответствующих разрядов второго регистра 2. Вторые выходы разрядов коммутатора с трех направлений в два 11 соединены с входами соответствующих разрядов вектора входных операндов 15 второго устройства для вычисления функций насыщения 14, управляющие входы 16 разрядов которого соединены с выходами соответствующих разрядов третьего регистра 3. Выходы разрядов первого регистра 1 соединены с первыми информационными входами соответствующих разрядов мультиплексора 12, вторые информационные входы разрядов которого соединены с выходами соответствующих разрядов вектора результатов 17 первого устройства для вычисления функций насыщения 13. Выходы разрядов мультиплексора 12 соединены с входами соответствующих разрядов вектора первых операндов 19 вычислительного устройства 18, входы разрядов вектора вторых операндов 20 которого соединены с выходами соответствующих разрядов вектора результатов 17 второго устройства для вычисления функций насыщения 14. Информационные выходы первого блока памяти магазинного типа 9 соединены с входами соответствующих разрядов вектора третьих операндов 21 вычислительного устройства 18, выходы разрядов вектора первых слагаемых результатов 28 которого соединены с входами соответствующих разрядов вектора первых слагаемых 31 сумматора 30, входы разрядов вектора вторых слагаемых 32 которого соединены с выходами соответствующих разрядов вектора вторых слагаемых результатов 29 вычислительного устройства 18, входы установки границ данных в векторах первых операндов и результатов 22 которого соединены с выходами соответствующих разрядов пятого регистра 5 и соответствующими входами установки границ данных в векторах слагаемых и сумм 33 сумматора 30, выходы разрядов вектора сумм 34 которого соединены с соответствующими информационными входами второго блока памяти магазинного типа 10, информационные выходы которого подключены к соответствующим разрядам выходной шины 37 нейропроцессора и соединены с третьими входами соответствующих разрядов коммутатора с трех направлений в два 11. Выходы разрядов четвертого регистра 4 соединены с информационными входами соответствующих разрядов пятого регистра 5 и соответствующими входами установки границ данных в векторах третьих операндов 24 вычислительного устройства 18, входы установки границ данных в векторах вторых операндов 23 которого соединены с выходами соответствующих разрядов шестого регистра 6, информационные входы которого соединены с выходами соответствующих разрядов сдвигового регистра 7, последовательные информационные вход и выход которого объединены и подключены к первому входу управления загрузкой векторов третьих операндов в первый блок памяти 25 вычислительного устройства 18 и первому входу элемента И 8, выход которого соединен с входом управления чтением первого блока памяти магазинного типа 9. Вход управления сдвигом сдвигового регистра 7 соединен с вторым входом элемента И 8 и вторым входом управления загрузкой векторов третьих операндов в первый блок памяти 26 вычислительного устройства 18, вход управления пересылкой матрицы третьих операндов из первого блока памяти во второй блок памяти 27 которого соединен с управляющими входами пятого 5 и шестого 6 регистров.
Нейропроцессор работает следующим образом.
Исполнительными узлами нейропроцессора являются первое 13 и второе 14 устройства для вычисления функций насыщения, вычислительное устройство 18 и сумматор 30. Каждое из этих устройств выполняет операции над векторами данных программируемой разрядности, представленных в дополнительном коде.
В каждом такте работы нейропроцессора вычислительное устройство 18 формирует двухрядный код результата операции умножения вектора Y = (Y1 Y2 .. . Yk), разряды которого подаются на входы 20 вычислительного устройства 18, на матрицу
Figure 00000002

предварительно загруженную и хранящуюся во втором блоке памяти вычислительного устройства 18, с прибавлением к полученному произведению вектора X = (X1 X2 ... XM), разряды которого подаются на входы 19 вычислительного устройства 18. При этом на выходах 28 и 29 вычислительного устройства 18 формируются разряды векторов A = (A1 A2 ... AM) и B = (B1 B2 ... BM), сумма которых является результатом операции X + Y • Z. То есть сумма m-х элементов векторов A и B определяется выражением
Figure 00000003
(m=1,2,...,M)
Вектор X представляет собой N-разрядное слово, в котором упаковано M данных, представленных в дополнительном коде и являющихся элементами этого вектора. При этом младшие разряды вектора X являются разрядами первого данного X1, далее следуют разряды второго данного X2 и т.д. Старшие разряды вектора X являются разрядами M-го данного XM. При такой упаковке ν- разряд m-го данного Xm является
Figure 00000004

разрядом вектора X, где Nm - разрядность m-го данного Xm вектора X, ν=1,2,...,Nm, m=1,2,...,M. Количество данных M в векторе X и количество разрядов Nm в m-м данном Xm этого вектора могут принимать любые целочисленные значения от 1 до N, где m=1,2,...,M. Единственное ограничение заключается в том, что суммарная разрядность всех данных, упакованных в одном векторе X, должна быть равна его разрядности
Figure 00000005

Вектор Y представляет собой N-разрядное слово, в котором упаковано K данных, представленных в дополнительном коде и являющихся элементами этого вектора. Формат вектора Y аналогичен формату вектора X. Однако данные векторы могут различаться количеством и разрядностью отдельных данных, упакованных в этих векторах. Минимальная разрядность J каждого данного, упакованного в векторе Y, определяется схемотехнической реализацией операции умножения в вычислительном устройстве 18. При реализации алгоритма частичных произведений J равно 1, при реализации модифицированного алгоритма Бута J равно 2. Количество разрядов N k в k-м данном Yk вектора Y может принимать целочисленное значение от J до N кратные J, где k = 1,2,...,K. Количество данных K в векторе Y может принимать любое целочисленное значение от 1 до N/J. Однако, суммарная разрядность всех данных, упакованных в одном векторе Y, должна быть равна его разрядности
Figure 00000006

k-я строка матрицы Z представляет собой вектор данных Zk=(Zk,1 Zk,2 ... Zk,M), где k= 1,2, ...,K. Причем каждый из векторов Z1, Z2, ..., ZK должен иметь точно такой же формат, что и вектор X.
Векторы A и B, формируемые на выходах 28 и 29 вычислительного устройства 18, имеют точно такой же формат, что и вектор X.
Настройка аппаратуры вычислительного устройства 18 на обработку векторов требуемых форматов осуществляется путем загрузки N-разрядного управляющего слова H в пятый регистр 5, выходы которого подключены к входам 22 вычислительного устройства 18, и (N/J)-разрядного управляющего слова E в шестой регистр 6, выходы которого подключены к входам 23 вычислительного устройства 18.
Единичное значение n-го разряда hn слова H означает, что вычислительное устройство 18 будет рассматривать n-й разряд каждого из векторов X, Z1, Z2, ..., ZK, как старший (знаковый) разряд соответствующего элемента данного вектора. Количество единичных битов в слове H равно количеству элементов в каждом из векторов X, Z1, Z2, ..., ZK
Figure 00000007

Единичное значение i-го разряда ei, слова E означает, что вычислительное устройство 18 будет рассматривать i-ю J-разрядную группу разрядов вектора Y, как группу младших разрядов соответствующего элемента данного вектора. Количество единичных битов в слове E равно количеству элементов в векторе Y
Figure 00000008

Выполнению вычислительным устройством 18 описанной выше операции должна предшествовать процедура загрузки матрицы Z во второй блок памяти вычислительного устройства 18 и управляющих слов H и E в пятый 5 и шестой 6 регистры соответственно. Данная процедура выполняется в несколько этапов.
Первоначально в первый блок памяти магазинного типа 9 с первой входной шины 35 нейропроцессора последовательно записываются векторы Z1, Z2, ..., ZK. Загрузка всей матрицы Z в первый блок памяти магазинного типа 9 выполняется за K процессорных тактов, в каждом из которых на вход 45 нейропроцессора подается активный сигнал управления записью в первый блок памяти магазинного типа 9.
Затем в четвертый регистр 4 с первой входной шины 35 нейропроцессора загружается управляющее слово H, для чего на вход 43 нейропроцессора в течение одного такта подается активный сигнал, разрешающий запись в четвертый регистр 4. В следующем такте в сдвиговый регистр 7 с первой входной шины 35 нейропроцессора загружается управляющее слово E, для чего на вход 44 нейропроцессора в течение одного такта подается активный сигнал, разрешающий запись в сдвиговый регистр 7.
В течение следующих N/J тактов матрица Z пересылается из первого блока памяти магазинного типа 9 в первый блок памяти вычислительного устройства 18. В каждом из этих N/J тактов на управляющий вход нейропроцессора, подключенный к входу управления сдвигом сдвигового регистра 7, одному из входов элемента И 8 и входу 26 вычислительного устройства 18, подается активный управляющий сигнал. В каждом такте данный сигнал инициирует сдвиг содержимого сдвигового регистра 7 на один разряд вправо и, как следствие, выдачу на его последовательный выход очередного разряда управляющего слова E. Сигнал с последовательного выхода сдвигового регистра поступает на управляющий вход 25 вычислительного устройства 18 и на один из входов элемента И 8. При единичном значении данного сигнала на выходе элемента И 8 формируется активный сигнал, поступающий на вход управления чтением первого блока памяти магазинного типа 9. В результате на входы 21 вычислительного устройства 18 из первого блока памяти магазинного типа 9 поступает один из векторов Z1, Z2, . .., ZK, который записывается в первый блок памяти вычислительного устройства 18. Количество тактов, необходимых для загрузки одного вектора Zk, зависит от разрядности N k операнда Yk, входящего в состав вектора Y, и равно N k /J (k= 1,2, ...,K). В процессе загрузки матрицы Z в первый блок памяти вычислительного устройства 18 управляющее слово H, хранящееся все это время в четвертом регистре 4, поступает на входы 24 вычислительного устройства 18 с целью настройки его аппаратных средств на прием векторов Z1, Z2, ..., ZK требуемого формата. Так как сигнал с последовательного выхода сдвигового регистра 7 поступает и на его последовательный информационный вход, а разрядность сдвигового регистра 7 равна N/J, то по окончании процесса загрузки матрицы Z в первый блок памяти вычислительного устройства 18 в сдвиговом регистре 7 будет находиться та же информация, что и до начала данного процесса, то есть управляющее слово E.
После этого на управляющий вход нейропроцессора, подключенный к управляющему входу 27 вычислительного устройства 18 и управляющим входам пятого 5 и шестого 6 регистров, подается активный сигнал. В результате этого за один такт матрица Z пересылается из первого блока во второй блок памяти вычислительного устройства 18, управляющее слово H переписывается из четвертого регистра 4 в пятый регистр 5, а управляющее слово E переписывается из сдвигового регистра 7 в шестой регистр 6.
Начиная со следующего такта вычислительное устройство 18 будет в каждом такте выполнять описанную выше операцию
A + B = X + Y • Z.
Сумматор 30 осуществляет в каждом такте сложение векторов A и B, поступающих на его входы 31 и 32 с выходов 28 и 29 вычислительного устройства 18. При этом на выходах 34 сумматора 30 формируется вектор S = (S1 S2 ... SM), m-й элемент которого равен сумме m-х элементов векторов A и B
Sm = Am + Bm,
где m=1,2,...,M
Причем вектор S будет иметь такой же формат, что и векторы A и B. Настройка аппаратуры сумматора 30 на обработку векторов требуемых форматов обеспечивается путем подачи на входы 33 сумматора 30 управляющего слова H, хранящегося в пятом регистре 5.
Таким образом, последовательное включение вычислительного устройства 18 и сумматора 30 позволяет в каждом такте выполнять операцию S = X + Y • Z над векторами данных программируемой разрядности. Результаты выполнения данной операции над различными наборами векторов входных операндов записываются во второй блок памяти магазинного типа 10, выполняющий функции аккумулятора промежуточных результатов, для чего на вход 46 нейропроцессора подается сигнал разрешения записи во второй блок памяти магазинного типа 10.
Вычислительное устройство 18 и сумматор 30 могут использоваться в качестве однотактного коммутатора K данных, упакованных в одном N-разрядном векторе Y, подаваемом на входы 20 вычислительного устройства 18, в M данных, упакованных в одном N-разрядном векторе S, формируемом на выходах 34 сумматора 30. Такая коммутация осуществляется путем выполнения операции S = X + Y • Z, при которой на входы 19 вычислительного устройства 18 подается вектор X, все разряды которого имеют нулевые значения, а во втором блоке памяти вычислительного устройства 18 хранится матрица Z, определяющая правила коммутации. При этом матрица Z должна удовлетворять следующим требованиям: элемент Zk,m, находящийся на пересечении k-й строки и m-го столбца матрицы Z, должен иметь единичное значение (00... 01)b, если требуется, чтобы m-й элемент Sm вектора S был равен k-му элементу Yk вектора Y, или нулевое значение (00. . . 00)b в противном случае; вектор Zk, представляющий собой k-ю строку элементов матрицы Z, должен иметь такой же формат, что и вектор S; а каждый столбец матрицы Z должен содержать не более одного элемента, имеющего единичное значение (k=1,2,...,K; m=1,2,...,M). Выполнению операции коммутации должна предшествовать описанная выше процедура загрузки управляющего слова H, определяющего требуемый формат вектора S, в пятый регистр 5, управляющего слова E, определяющего требуемый формат вектора Y, в шестой регистр 6 и матрицы Z, определяющей правила коммутации, во второй блок памяти вычислительного устройства 18.
Операция S = X + Y • Z выполняется за один такт, в то время как процесс загрузки матрицы Z в первый блок памяти вычислительного устройства 18 занимает не менее N/J тактов. Поэтому эффективное использование вычислительных ресурсов нейропроцессора достигается только при пакетной обработке векторов данных, для поддержки которой в вычислительное устройство 18 введен второй блок памяти, а в качестве аккумулятора промежуточных результатов 10 используется не регистр, а двухпортовый блок памяти магазинного типа.
При пакетной обработке множество векторов входных операндов, подаваемых последовательно на каждый из входов 19 и 20 вычислительного устройства 18, разбивается на последовательно обрабатываемые подмножества (пакеты). Совокупность векторов входных операндов, последовательно подаваемых на каждый из входов 19 и 20 вычислительного устройства 18 и входящих в τ-пакет, можно представить в виде вектора векторов данных
Figure 00000009

где Tτ - количество векторов, входящих в состав каждого τ-го пакета. Причем все векторы, входящие в состав одного пакета, должны иметь одинаковый формат, то есть содержимое пятого 5 и шестого 6 регистров в процессе обработки одного пакета векторов не должно измеряться.
Обработка τ-х пакетов Xτ и Yτ выполняется за Tτ тактов. При этом в t-м такте вычислительное устройство 18 и сумматор 30 выполняют операцию
Sτ,t=Xτ,t+Yτ,t•Zτ (t=1,2,...Tτ),
где Zτ - содержимое второго блока памяти вычислительного устройства 18, которое в процессе обработки τ -х пакетов Xτ и Yτ должно оставаться неизменным. Весь процесс обработки τ -х пакетов Xτ и Yτ можно рассматривать как процедуру умножения матрицы данных
Figure 00000010
на матрицу данных Zτ с накоплением результатов.
Одновременно с обработкой τ -х пакетов векторов выполняется описанная выше процедура последовательной загрузки управляющего слова Hτ+1, определяющего формат векторов (τ+1)-го пакета Xτ+1, в четвертый регистр 4, управляющего слова Eτ+1, определяющего формат векторов (τ+1)-го пакета Yτ+1, в сдвиговый регистр 7 и пересылки матрицы Zτ+1 из первого блока памяти магазинного типа 9 в первый блок памяти вычислительного устройства 18. Причем загрузка новых значений в четвертый регистр 4 требуется только в том случае, если векторы (τ+1)-го пакета Xτ+1 отличаются по формату от векторов τ- -го пакета Xτ, а загрузка новых значений в сдвиговый регистр 7 требуется только в том случае, если векторы (τ+1)-го пакета Yτ+1 отличаются по формату от векторов τ-го пакета Yτ. Данная процедура выполняется не более чем за N/J+2 тактов.
По окончании обоих указанных процессов на управляющий вход 27 нейропроцессора подается активный сигнал, инициирующий одновременную пересылку слова Hτ+1 из четвертого регистра 4 в пятый регистр 5, слова Eτ+1 из сдвигового регистра 7 в шестой регистр 6, и матрицы Zτ+1 из первого во второй блок памяти вычислительного устройства 18. Все указанные пересылки выполняются за один такт.
Количество векторов Tτ в каждом τ-м пакете может задаваться программно, но не должно превышать величины Tmax, которая равна количеству ячеек во втором блоке памяти магазинного типа 10. С другой стороны, нецелесообразно использовать пакеты векторов с Tτ меньшим, чем N/J+2, так как при этом будут простаивать вычислительные средства нейропроцессора.
Одновременно с пересылкой матрицы Zτ+1 из первого блока памяти магазинного типа 9 в первый блок памяти вычислительного устройства 18 может выполняться последовательная загрузка с первой входной шины 35 нейропроцессора векторов третьих операндов, составляющих матрицы Zτ+2, Zτ+3 и т.д., в первый блок памяти магазинного типа 9.
Синхронизация всех одновременно протекающих процессов осуществляется путем анализа сигналов состояния первого 9 и второго 10 блоков памяти магазинного типа, выдаваемых на выходы 48 и 49 нейропроцессора, и подачи управляющих сигналов на соответствующие входы нейропроцессора.
Коммутатор с трех направлений в два 11 и мультиплексор 12 образуют систему коммутации, благодаря которой, как на входы вектора первых операндов 19, так и на входы вектора вторых операндов 20 вычислительного устройства 18, может подаваться содержимое второго блока памяти магазинного типа 10 или информация, поступающая по одной из входных шин 35 или 36 нейропроцессора. Кроме того, на входы 19 вычислительного устройства 18 может подаваться содержимое регистра 1, предварительно записанное в него с первой входной шины 35 нейропроцессора путем подачи активного сигнала на управляющий вход 40 нейропроцессора. Выбор источников информации, поступающей на входы 19 и 20 вычислительного устройства 18, осуществляется подачей определенной комбинации сигналов на управляющие входы 38 и 39 нейропроцессора. Причем, если источником информации является второй блок памяти магазинного типа 10, на управляющий вход 47 нейропроцессора необходимо подать сигнал разрешения чтения из второго блока памяти магазинного типа 10.
Векторы данных, подаваемые на входы 19 и 20 вычислительного устройства 18 из второго блока памяти магазинного типа 10 или с одной из входных шин 35 или 36 нейропроцессора, проходят через устройства для вычисления функций насыщения 13 и 14. Каждое из устройств 13 и 14 вычисляет за один такт функцию насыщения от каждого элемента вектора D = (D1 D2 ... DL), поступающего на входы 15 данного устройства.
Вектор D представляет собой N-разрядное слово, в котором упаковано L данных, представленных в дополнительном коде и являющихся элементами этого вектора. Формат вектора D аналогичен формату описанного выше вектора X. Однако, данные векторы могут различаться количеством и разрядностью отдельных данных, упакованных в этих векторах. Минимальная разрядность данных, составляющих вектор D, равна двум. Количество данных L в векторе D может принимать любые целочисленные значения от 1 до N/2. Однако, суммарная разрядность всех данных, упакованных в одном векторе D, должна быть равна его разрядности
Figure 00000011

На выходах 17 устройства для вычисления функций насыщения 13 или 14 формируется вектор F = (F1 F2 ... FL), который имеет точно такой же формат, что и вектор D. Причем λ-й элемент Fλ вектора F является результатом вычисления функции насыщения от λ -го операнда Dλ вектора D
Figure 00000012

где Qλ - параметр функции насыщения, вычисляемой для операнда Dλ(λ=1,2,...,L). Общий вид функций насыщения, вычисляемых устройствами 13 и 14, представлен на фиг.2 и описывается следующими выражениями: ΨQ(D)=D, если -2Q≤D≤2Q - 1; YQ(D) = 2Q - 1, если D>2Q - 1; YQ(D) = -2Q, если D<-2Q.
Количество значащих бит в элементе Fλ вектора F без учета знакового разряда равно значению параметра Qλ(λ=1,2,...,L). Очевидно, что значение Qλ должно быть меньше разрядности
Figure 00000013
операндов Dλ и Fλ.
Настройка аппаратуры каждого из устройств для вычисления функций насыщения 13 или 14 на требуемый формат векторов D и F, а также на требуемые значения параметров реализуемых функций насыщения, осуществляется путем подачи N-разрядного управляющего слова U на управляющие входы 16 данного устройства.
При этом разряды слова U должны иметь следующие значения: разряды с первого по (Q1)-й - нулевые, разряды с (Q1+1)-го по
Figure 00000014
- единичные, разряды с
Figure 00000015
нулевые, разряды c
Figure 00000016
единичные и т.д. В общем случае разряды слова U с
Figure 00000017

должны иметь нулевые значения, а разряды c
Figure 00000018

единичные значения (λ=1,2,...,L).
Если значение n-го разряда слова U равно единице (Un=1), а значение (n+1)-го разряда равно нулю (Un+1=0), то устройство для вычисления функций насыщения 13 или 14 будет рассматривать n-й разряд вектора D, как старший (знаковый) разряд соответствующего элемента данного вектора. Количество нулевых битов в слове U равно суммарному числу значащих бит во всех элементах вектора результатов F
Figure 00000019

Если U= (100...0)b, то информация с входов 15 устройства для вычисления функций насыщения 13 или 14 будет проходить на его выходы 17 без изменения (F=D).
Управляющее слово первого устройства для вычисления функций насыщения 13 загружается с первой входной шины 35 нейропроцессора во второй регистр 2, выходы которого соединены с управляющими входами 16 устройства для вычисления функций насыщения 13. Данная загрузка выполняется за один такт путем подачи активного сигнала на управляющий вход 41 второго регистра 2.
Управляющее слово второго устройства для вычисления функций насыщения 14 загружается с первой входной шины 35 нейропроцессора в третий регистр 3, выходы которого соединены с управляющими входами 16 устройства для вычисления функций насыщения 14. Данная загрузка выполняется за один такт путем подачи активного сигнала на управляющий вход 42 третьего регистра 3.
Устройства для вычисления функций насыщения 13 и 14 являются эффективным средством для предотвращения арифметических переполнений при обработке векторов входных операндов.
Каждое из устройств для вычисления функций насыщения 13 или 14 позволяет уменьшить только количество значащих разрядов в элементах обрабатываемого вектора данных. Разрядность отдельных элементов вектора данных и его формат
остаются без изменений. Вместе с тем, в ряде случаев целесообразно выполнить вычисление функций насыщения для элементов вектора данных с уменьшением разрядности каждого элемента вектора результатов путем отбрасывания всех его старших разрядов, которые являются расширением знакового разряда данного элемента. Такое уменьшение разрядности элементов вектора F = (F1 F2. . . FL), сформированного на выходах 17 устройства для вычисления функций насыщения 14, и связанная с ним переупаковка элементов в векторе могут быть выполнены за один такт с помощью вычислительного устройства 18 и сумматора 30, работающих в режиме коммутатора данных с 2L направлений в L+1. В качестве примера ниже приводится описание операции преобразования вектора F в формируемый на выходах 34 сумматора 30 вектор S = (S1 S2... SL+1), у которого λ -й элемент Sλ представляет собой Qλ+1 младших (значащих) разрядов λ -го элемента Fλ вектора F (λ=1,2,...,L), a (L+1)-й элемент SL+1, расположенный в старших разрядах вектора S, равен (00...0)b. Вектор F, формируемый на выходах 17 устройства для вычисления функций насыщения 14, можно представить в виде поступающего на входы 20 вычислительного устройства 18 вектора Y = (Y1 Y2. . . Y2L), у которого первый Y2λ-1 и второй Y элементы λ -й пары элементов представляют собой соответственно Qλ+1 младших и
Figure 00000020
старших разрядов λ -го
Figure 00000021
разрядного элемента Fλ вектора F (λ=1,2,...,L). В режиме коммутации данных на входы 19 вычислительного устройства 18 подаются нулевые значения, в результате чего на выходах 34 сумматора 30 формируется результат операции умножения вектора Y на матрицу Z, хранящуюся во втором блоке памяти вычислительного устройства 18. Данный результат будет представлять собой вектор S требуемого формата, если в пятом регистре 5 хранится управляющее слово H, определяющее описанный выше формат вектора S, в шестом регистре 6 - управляющее слово E, определяющее описанный выше формат вектора Y, а во втором блоке памяти вычислительного устройства 18 - матрица Z, содержащая по L+1 элементов в каждой из 2L строк. Причем матрица Z должна удовлетворять следующим требованиям: разрядность каждого элемента λ -го столбца матрицы Z должна быть равна Qλ+1; элемент Z2λ-1,λ, находящийся на пересечении (2λ-1)-й строки и λ -гo столбца матрицы Z, должен иметь единичное значение (00... 01)b, а остальные элементы матрицы Z - нулевые значения (00...00)b (λ=1,2,...,L).
Если при выполнении описанной выше операции по преобразованию вектора F, формируемого на выходах 17 устройства для вычисления функций насыщения 14, на входы 19 вычислительного устройства 18 подать вектор X = (X1 X2 ... XM+1), первый элемент X1 которого равен нулю и имеет разрядность, равную
Figure 00000022

то на выходах 34 сумматора 30 будет сформирован вектор S = (S1 S2 ... SL+M), у которого λ -й элемент Sλ представляет собой Qλ+1 младших (значащих) разрядов λ -го, элемента Fλ вектора F (λ=1,2,...,L), a (L+m)-й элемент равен (m+1)-му элементу Xm+1 вектора X (m=1,2,...,M). Таким образом, нейропроцессор позволяет за один такт выполнить операцию по вычислению функций насыщения над элементами вектора входных данных и упаковать полученный результат в другой вектор входных данных.
Основное назначение нейропроцессора - это эмуляция всевозможных нейронных сетей. На фиг. 3 представлена модель слоя нейронной сети, реализуемой предлагаемым нейропроцессором. В общем случае один слой нейронной сети состоит из Ω нейронов и имеет Θ нейронных входов. При этом ω -й нейрон выполняет взвешенное суммирование Θ данных C1, C2,...,
Figure 00000023
подаваемых на соответствующие нейронные входы, с учетом порогового смещения Vω данного нейрона
Figure 00000024

где Wϑ,ω - весовой коэффициент ϑ -го входа в ω -м нейроне (ϑ=1,2,...,Θ; ω=1,2,...,Ω). Затем ω -й нейрон вычисляет функцию насыщения
Figure 00000025
от результата взвешенного суммирования Gω
Figure 00000026

Общий вид функций насыщения, реализуемых нейропроцессором, представлен на фиг.2. Все входные данные, весовые коэффициенты, пороговые значения и результаты представляются в дополнительном коде.
Специфика предлагаемого нейропроцессора заключается в том, что при его использовании пользователь может программно задавать следующие параметры нейронной сети: число слоев, число нейронов и нейронных входов в каждом слое, разрядность данных на каждом нейронном входе, разрядность каждого весового коэффициента, разрядность выходного значения каждого нейрона, параметр функции насыщения для каждого нейрона.
Один нейропроцессор позволяет эмулировать нейронную сеть практически неограниченных размеров. Эмуляция нейронной сети осуществляется послойно (последовательно слой за слоем).
Каждый слой нейронной сети разбивается на последовательно обрабатываемые фрагменты. Данное разбиение осуществляется следующим образом. Множество нейронных входов слоя разбивается на группы входов так, чтобы суммарная разрядность данных, подаваемых на все входы каждой группы входов, была равна разрядности нейропроцессора N. Множество нейронов слоя разбивается на группы нейронов так, чтобы суммарная разрядность результатов взвешенного суммирования всех входных данных для каждой группы нейронов была равна разрядности нейропроцессора N. При этом весь слой нейронной сети разбивается на фрагменты двух типов, имеющих различное функциональное назначение. Каждый фрагмент первого типа выполняет взвешенное суммирование данных, которые подаются на все нейронные входы, входящие в состав одной группы входов, для всех нейронов, входящих в состав одной группы нейронов. Каждый фрагмент второго типа формирует выходные значения для всех нейронов, входящих в состав одной группы нейронов, путем вычисления функции насыщения от результатов взвешенного суммирования всех входных данных.
Фиг.3 можно использовать в качестве иллюстрации описанного выше принципа разбиения слоя нейронной сети на фрагменты. Для этого необходимо представить, что каждый блок, приведенный на фиг.3, выполняет операции над N-разрядными векторами данных, и трактовать приведенные на фиг. 3 обозначения следующим образом: Cϑ - вектор входных данных, подаваемых на ϑ -ю группу нейронных входов (ϑ=1,2,...,Θ); Vω - вектор пороговых значений ω -й группы нейронов (ω=1,2,...,Ω); Wϑ,ω - матрица весовых коэффициентов входных данных, подаваемых на ϑ -ю группу нейронных входов, в ω -й группе нейронов (ϑ=1,2,...,Θ; ω=1,2,...,Ω); Gω - вектор результатов взвешенного суммирования входных данных в ω -й группе нейронов (ω=1,2,...Ω); Rω - вектор выходных значений ω -й группы нейронов (ω=1,2,...Ω).
При этом на фиг. 3 каждому фрагменту первого типа соответствует пара устройств, выполняющих умножение и сложение, а каждому фрагменту второго типа соответствует одно устройство вычисления функций насыщения.
Весь процесс эмуляции слоя нейронной сети на одном нейропроцессоре можно представить в виде Ω последовательно выполняемых процедур, каждая из которых осуществляет эмуляцию одной группы нейронов и состоит из Θ+1 последовательно выполняемых макроопераций, каждая из которых эмулирует один фрагмент слоя нейронной сети. Причем ϑ -я макрооперация данной процедуры осуществляет эмуляцию фрагмента первого типа, выполняющего взвешенное суммирование данных, подаваемых на ϑ -ю группу нейронных входов, с накоплением результата (ϑ=1,2,...,Θ). Последняя макрооперация процедуры эмулирует фрагмент второго типа, выполняющий вычисление функций насыщения от взвешенной суммы данных, подаваемых на все нейронные входы, для соответствующей группы нейронов.
Каждая макрооперация, выполняемая в процессе эмуляции слоя нейронной сети, имеет подготовительную и исполнительные фазы. Обработка данных, подаваемых на нейронные входы, ведется в пакетном режиме - по T наборов входных данных в каждом пакете.
В течение подготовительной фазы первой макрооперации процедуры эмуляции ω -й группы нейронов последовательно выполняются следующие операции. С первой входной шины 35 нейропроцессора в первый регистр 1 загружается вектор Vω. С первой входной шины 35 нейропроцессора в четвертый регистр 4 загружается управляющее слово, определяющее формат вектора Vω и всех векторов частичных сумм, формируемых в результате выполнения каждой ϑ -й макрооперации (ϑ=1,2,...,Θ). С первой входной шины 35 нейропроцессора в сдвиговый регистр 7 загружается управляющее слово, определяющее формат векторов данных, подаваемых на первую группу нейронных входов. Матрица W1,ω пересылается из первого блока памяти магазинного типа 9, куда данная матрица должна быть предварительно загружена с первой входной шины 35 нейропроцессора, в первый блок памяти вычислительного устройства 18.
В течение каждого t-го такта исполнительной фазы первой макрооперации процедуры эмуляции ω -й группы нейронов на входы вектора первых операндов 19 вычислительного устройства 18 из первого регистра 1 поступает вектор Vω, а на входы вектора вторых операндов 20 вычислительного устройства 18 с второй входной шины 36 нейропроцессора поступает вектор C t 1 , представляющий собой t-й набор входных данных, подаваемых на первую группу нейронных входов слоя (t=1,2,...,T). При этом вычислительное устройство 18 и сумматор 30 формируют вектор частичной суммы
G t 1,ω =Vω+C t 1 •W1,ω,
который записывается во второй блок памяти магазинного типа 10. Причем, начиная с процедуры эмуляции второй группы нейронов, одновременно с данной операцией в каждом такте будет выполняться пересылка содержимого одной из ячеек второго блока памяти магазинного типа 10 во внешнюю память через выходную шину 37 нейропроцессора.
В течение подготовительной фазы θ -й макрооперации
Figure 00000027
процедуры эмуляции ω -й группы нейронов последовательно выполняются следующие операции. С первой входной шины 35 нейропроцессора в сдвиговый регистр 7 загружается управляющее слово, определяющее формат векторов данных, подаваемых на θ -ю группу нейронных входов. Матрица Wθ,ω пересылается из первого блока памяти магазинного типа 9, куда данная матрица должна быть предварительно загружена с первой входной шины 35 нейропроцессора, в первый блок памяти вычислительного устройства 18.
В течение каждого t-го такта исполнительной фазы θ -й макрооперации (θ=2,3,...Θ) процедуры эмуляции ω -й группы нейронов на входы вектора первых операндов 19 вычислительного устройства 18 из второго блока памяти магазинного
типа 10 поступает вектор частичных сумм G t θ-1,ω , сформированный при выполнении предыдущей макрооперации, а на входы вектора вторых операндов 20 вычислительного устройства 18 с второй входной шины 36 нейропроцессора поступает вектор C t θ , представляющий собой t-й набор входных данных, подаваемых на θ-ю группу нейронных входов слоя (t=1,2,...,T). При этом вычислительное устройство 18 и сумматор 30 формируют вектор частичной суммы
G t θ,ω =G t θ-1,ω +G t θ ×Wθ,ω,
который записывается во второй блок памяти магазинного типа 10.
При выполнении Θ первых макроопераций каждой процедуры эмуляции группы нейронов устройство для вычисления функций насыщения 13 может использоваться для ограничения значений частичных сумм с целью исключения возможности арифметического переполнения при взвешенном суммировании входных данных. В этом случае подготовительная фаза макроопераций должна включать загрузку управляющего слова во второй регистр 2 с первой входной шины 35 нейропроцессора.
В течение подготовительной фазы (Θ+1)-й макрооперации процедуры эмуляции ω-й группы нейронов последовательно выполняются следующие операции. С первой входной шины 35 нейропроцессора в третий регистр 3 загружается управляющее слово, определяющее параметры функций насыщения, вычисляемых для ω-й группы нейронов. Затем в четвертый регистр 4, сдвиговый регистр 7 и в первый блок памяти вычислительного устройства 18 загружается управляющая информация, необходимая для выполнения операции по сжатию и упаковке результатов вычисления функций насыщения.
В течение каждого t-го такта исполнительной фазы (Θ+1)-й макрооперации процедуры эмуляции ω-й группы нейронов на входы 15 устройства для вычисления функций насыщения 14 из второго блока памяти магазинного типа 10 поступает вектор частичных сумм G t θ,ω , в результате чего на выходах 17 устройства для вычисления функций насыщения 14 формируется вектор
Figure 00000028

который затем поступает на входы 20 вычислительного устройства 18. Вычислительное устройство 18 и сумматор 30 осуществляют сжатие вектора R t ω путем исключения у каждого его элемента всех разрядов, являющихся расширением знакового разряда. Если при этом на входы 19 вычислительного устройства 18 подается не нулевой вектор, а вектор данных с одной из входных шин 35 или 36 нейропроцессора, то результат сжатия вектора R t ω будет упакован в этот вектор входных данных. В качестве такого вектора входных данных может использоваться результат, полученный в t-м такте исполнительной фазы (Θ+1)-й макрооперации процедуры эмуляции (ω-1)-й группы нейронов и хранившийся во внешней памяти. Результат записывается во второй блок памяти магазинного типа 10.
При выполнении любой макрооперации по эмуляции фрагмента слоя нейронной сети переход от подготовительной фазы к исполнительной осуществляется путем подачи активного сигнала на управляющий вход 27 нейропроцессора в течение одного такта, предшествующего первому такту исполнительной фазы. При этом содержимое четвертого регистра 4 переписывается в пятый регистр 5, содержимое сдвигового регистра 7 переписывается в шестой регистр 6, а содержимое первого блока памяти вычислительного устройства 18 пересылается в его второй блок памяти.
Последовательное выполнение макроопераций осуществляется нейропроцессором в конвейерном режиме, при котором исполнительная фаза очередной макрооперации выполняется одновременно с подготовительной фазой следующей макрооперации. Количество тактов, необходимых для выполнения всех операций подготовительной фазы макрооперации, колеблется в диапазоне от N/J до N/J+4 в зависимости от количества управляющих слов, загружаемых в регистры нейропроцессора. Количество тактов, необходимых для выполнения исполнительной фазы любой макрооперации, равно количеству обрабатываемых наборов входных данных T, которое задается пользователем. Таким образом, минимальный период выполнения макрооперации определяется длительностью подготовительной фазы и равен длительности N/J процессорных тактов. Значение T целесообразно выбирать равным N/J, так как при меньших значениях T будут простаивать исполнительные узлы нейропроцессора, а при больших значениях T возрастает время реакции нейропроцессора на очередной набор данных на нейронных входах, что нежелательно при эмуляции нейронных сетей реального масштаба времени.
В общем случае процесс эмуляции слоя нейронной сети, разбиваемого на Ω×(Θ+1) фрагментов, для T наборов входных данных выполняется на одном нейропроцессоре за Ω×(Θ+1)×T тактов, но не менее, чем за Ω×(Θ+1)×N/J тактов.
Небольшой слой нейронной сети, у которого суммарная разрядность данных, подаваемых на все нейронные входы, и суммарная разрядность результатов взвешенного суммирования для всех нейронов не превышают разрядности нейропроцессора N каждая, эмулируется путем выполнения двух макроопераций. Первая макрооперация эмулирует взвешенное суммирование всех входных данных для всех нейронов слоя, а вторая - вычисление функций насыщения для всех нейронов слоя.
Наличие в нейропроцессоре двух входных 35 и 36 и одной выходной 37 шин позволяет создавать на его основе эффективно работающие мультипроцессорные системы. Система, состоящая из Ξ нейропроцессоров, будет выполнять эмуляцию слоя нейронной сети в Ξ раз быстрее, чем один нейропроцессор. В предельном случае каждый фрагмент каждого слоя нейронной сети может эмулироваться отдельным нейропроцессором.
Основным узлом нейропроцессора является вычислительное устройство 18. На фиг.4 приведена блок-схема одной из возможных реализаций вычислительного устройства 18 для выполнения операций над векторами данных программируемой разрядности, содержащего сдвиговый регистр 50, выполняющий за один такт арифметический сдвиг всех операндов хранящегося в нем N-разрядного вектора на J разрядов влево, где J - минимальная величина, которой кратны разрядности данных в векторах вторых операндов вычислительного устройства 18, элемент задержки 51, первый блок памяти 52, имеющий порт ввода магазинного типа и содержащий N/J ячеек для хранения N-разрядных данных, второй блок памяти 53, содержащий N/J ячеек для хранения N-разрядных данных, N/J блоков умножения 54, каждый из которых умножает N-разрядный вектор данных программируемой разрядности на J-разрядный множитель, и схему сложения векторов 55, формирующую двухрядный код суммы N/J+1 векторов данных программируемой разрядности.
Входы разрядов вектора третьих операндов 21 вычислительного устройства 18 подключены к информационным входам сдвигового регистра 50, выходы которого соединены с информационными входами первого блока памяти 52, выходы каждой ячейки которого соединены с информационными входами соответствующей ячейки второго блока памяти 53, выходы каждой ячейки которого соединены с входами разрядов вектора множимых соответствующего блока умножения 54, входы разрядов множителя которого подключены к входам соответствующей J-разрядной группы разрядов вектора вторых операндов 20 вычислительного устройства 18. Выходы каждого блока умножения 54 соединены с входами разрядов соответствующего вектора слагаемых схемы сложения векторов 55, входы разрядов (N/J+1)-го вектора слагаемых которой подключены к входам разрядов вектора первых операндов 19 вычислительного устройства 18, входы установки границ данных в векторах третьих операндов 24 которого подключены к соответствующим входам установки границ данных в векторах операндов сдвигового регистра 50, вход режима работы которого подключен к первому входу управления загрузкой векторов третьих операндов в первый блок памяти 25 вычислительного устройства 18, второй вход управления загрузкой векторов третьих операндов в первый блок памяти 26 которого подключен к тактовому входу сдвигового регистра 50 и входу элемента задержки 51, выход которого соединен с входом управления записью первого блока памяти 52. Вход управления записью второго блока памяти 53 подключен к входу управления пересылкой матрицы третьих операндов из первого блока памяти во второй блок памяти 27 вычислительного устройства 18, каждый вход установки границ данных в векторах вторых операндов 23 которого подключен к входу знаковой коррекции соответствующего блока умножения 54. Входы установки границ данных в векторах первых операндов и результатов 22 вычислительного устройства 18 подключены к входам установки границ данных в векторах множимых и результатов каждого блока умножения 54 и к входам установки границ данных в векторах слагаемых и результатов схемы сложения векторов 55, выходы разрядов векторов первых и вторых слагаемых результатов которой являются соответствующими выходами 28 и 29 вычислительного устройства 18.
Вычислительное устройство 18 работает следующим образом.
Процедура загрузки матрицы Z во второй блок памяти 53 вычислительного устройства 18 выполняется в два этапа.
Первоначально в течение N/J тактов матрица Z преобразуется в матрицу
Figure 00000029

которая загружается в первый блок памяти 52 вычислительного устройства 18. Причем i-я строка матрицы Z' представляет собой вектор данных Z i =(Z i,1 Z i,2 ... Z i,M ), который впоследствии будет умножаться на i-ю J-разрядную группу разрядов вектора Y (i=1,2,..., N/J). Все векторы Z 1 , Z 2 ,...,Z N/J имеют точно такой же формат, что и любой из векторов Z1, Z2, . .., ZK. Преобразование матрицы Z в матрицу Z' выполняется путем замены k-й строки Zk (k=1,2,...,K) матрицы Z на N k /J строк
Figure 00000030
матрицы Z', формируемых в соответствии с выражением
Figure 00000031

где lk - суммарное количество J-разрядных групп разрядов в k первых операндах вектора Y, N k/ - разрядность k-го элемента Yk вектора Y.
Figure 00000032

Из представленного выше выражения следует, что
Figure 00000033
Figure 00000034
и т.д. То есть все строки матрицы Z будут присутствовать и в матрице Z' но, как правило, на других позициях.
Преобразование матрицы Z в матрицу Z' выполняется с помощью сдвигового регистра 50 за N/J тактов. В каждом из этих N/J тактов на управляющий вход 26 вычислительного устройства 18 подается синхросигнал, который поступает на тактовый вход сдвигового регистра 50, а на входы 24 вычислительного устройства 18 непрерывно подается описанное выше N-разрядное управляющее слово H, которое поступает на входы установки границ данных в векторах операндов сдвигового регистра 50. В i-м такте (i=1,2,...,N/J) на управляющий вход 25 вычислительного устройства 18 подается i-й разряд ei, описанного выше (N/J)-разрядного управляющего слова E. Данный сигнал поступает на вход управления режимом работы сдвигового регистра 50.
В (lk+1+1)-м такте (k= 1,2, . ..,K), когда на вход 25 вычислительного устройства 18 подается разряд слова E, имеющий единичное значение, сдвиговый регистр 50 переходит в режим загрузки вектора Zk, подаваемого на входы 21 вычислительного устройства 18. В каждом из остальных N/J-K тактов, когда на вход 25 вычислительного устройства 18 подается разряд слова E, имеющий нулевое значение, сдвиговый регистр 50 будет выполнять арифметический сдвиг на J разрядов влево хранящегося в нем вектора данных.
Таким образом, по окончании i-го такта (i=1,2,...,N/J) процесса преобразования матрицы Z в матрицу Z' в сдвиговом регистре 50 будет храниться вектор Z i . Информация с выходов сдвигового регистра 50 поступает на информационные входы первого блока памяти 52, имеющего порт ввода магазинного типа.
Синхросигнал, подаваемый на вход 26 вычислительного устройства 18 в каждом такте в течение всего процесса преобразования матрицы Z в матрицу Z', поступает через элемент задержки 51, в качестве которого может быть использован обычный инвертор, на вход управления записью первого блока памяти 52 вычислительного устройства 18. Поэтому одновременно с преобразованием матрицы Z в матрицу Z' будет происходить загрузка матрицы Z' в первый блок памяти 52 вычислительного устройства 18. По окончании процесса загрузки в i-й ячейке первого блока памяти 52 вычислительного устройства 18 будет содержаться вектор Z i (i=1,2,...,N/J).
После этого на управляющий вход 27 вычислительного устройства 18 в течение одного такта подается синхросигнал, по которому содержимое всех ячеек первого блока памяти 52 переписывается в соответствующие ячейки второго блока памяти 53 вычислительного устройства 18. Таким образом, за один такт происходит пересылка матрицы Z' из первого 52 во второй 53 блок памяти вычислительного устройства 18.
Начиная со следующего такта исполнительные узлы вычислительного устройства 18, к которым относятся блоки умножения 54 и схема сложения векторов 55, будут в каждом такте формировать двухрядный код результата операции X + Y • Z. При этом i-й блок умножения 54 служит для формирования частичного произведения вектора Z i , хранящегося в i-й ячейке второго блока памяти 53 вычислительного устройства 18 на i-ю группу разрядов Y i вектора Y, подаваемого на входы 20 вычислительного устройства 18
Pi=Z i ×Y i .
На входы 23 вычислительного устройства 18 подается управляющее слово E, j-й разряд ej которого поступает на вход знаковой коррекции (j-1)-го блока умножения 54 (j=2,3,...,N/J). На вход знаковой коррекции (N/J)-го блока умножения 54 поступает младший разряд e1 управляющего слова E. Поэтому каждый блок умножения 54, на входы разрядов множителя которого подается группа старших разрядов одного из элементов вектора Y, будет выполнять умножение в дополнительном коде. Остальные N/J-K блоков умножения 54 будут работать в прямом коде.
Схема сложения векторов 55 формирует двухрядный код суммы частичных произведений P1, P2, ..., PN/J, и вектора X, подаваемого на входы 19 вычислительного устройства 18. Данная схема может быть построена на основе сумматоров с отложенными переносами.
На входы 22 вычислительного устройства 18 подается управляющее слово H, которое поступает на входы установки границ данных в векторах множимых каждого блока умножения 54 и на входы установки границ данных в векторах слагаемых схемы сложения векторов 55. При этом в каждом исполнительном узле вычислительного устройства 18 будет блокироваться распространение переносов между разрядами этих узлов, обрабатывающими разные элементы входных векторов.
На выходах схемы сложения векторов 55 формируются векторы A и B, сумма которых равна
Figure 00000035

Сгруппировав частичные произведения, относящиеся к отдельным элементам вектора Y, последнее выражение можно представить в следующем виде
Figure 00000036

С учетом того, что каждый k-й элемент вектора Y равен
Figure 00000037

предыдущее выражение преобразуется следующим образом
Figure 00000038

Таким образом, на выходах 28 и 29 вычислительного устройства формируется двухрядный код результата операции X + Y • Z.
В общем случае длительность процессорного такта нейропроцессора определяется суммарной задержкой переключения последовательно включенных коммутатора с трех направлений в два 11, устройства для вычисления функций насыщения 14, вычислительного устройства 18 и сумматора 30. Производительность нейропроцессора можно существенно увеличить, если использовать устройства для вычисления функций насыщения 13 и 14, содержащие регистры входных данных, информационные входы которых подключены к входам 15 этих устройств, вычислительное устройство 18, содержащее регистр входных данных, информационные входы которого подключены к входам 19 и 20 вычислительного устройства 18, и сумматор 30, содержащий регистр входных данных, информационные входы которого подключены к входам 31, 32 и 33 сумматора 30. Наличие таких регистров в исполнительных узлах нейропроцессора позволяет вести обработку данных в конвейерном режиме, обеспечивающем в каждом такте параллельное выполнение трех процессов: формирования вычислительным устройством 18 двухрядного кода результата взвешенного суммирования очередного набора входных данных, сложения на сумматоре 30 двухрядного кода результата взвешенного суммирования предыдущего набора входных данных и вычисления на устройствах 13 и 14 функций насыщения для следующего набора входных операндов. Так как максимальные задержки переключения устройств для вычисления функций насыщения 13 и 14, вычислительного устройства 18 и сумматора 30 имеют приблизительно одинаковые значения, то введение конвейерных регистров позволяет практически в три раза повысить тактовую частоту работы нейропроцессора.
Устройство для вычисления функций насыщения, схема которого представлена на фиг. 5, имеет входы разрядов вектора входных операндов 15, управляющие входы 16 и выходы разрядов вектора результатов 17. Каждый из N разрядов 56 данного устройства содержит первый 57 и второй 58 мультиплексоры, логические элементы ИСКЛЮЧАЮЩЕЕ ИЛИ 59, РАВНОЗНАЧНОСТЬ 60, И-НЕ 61 и ЗАПРЕТ 62. В состав устройства входят также схема распространения переносов 63, имеющая вход начального переноса 64, инверсные входы распространения переноса через отдельные разряды 65, входы переноса из отдельных разрядов 66 и выходы переноса в отдельные разряды 67, и схема формирования переносов 68, имеющая вход начального переноса 69, входы распространения переноса через отдельные разряды 70, входы генерации переноса в отдельных разрядах 71 и выходы переноса в отдельные разряды 72.
Вторые информационные входы первого 57 и второго 58 мультиплексоров и первый вход элемента ИСКЛЮЧАЮЩЕЕ ИЛИ 59 каждого разряда 56 устройства объединены и подключены к входу соответствующего разряда вектора входных операндов 15 устройства, выход каждого разряда вектора результатов 17 которого подключен к выходу первого мультиплексора 57 соответствующего разряда 56 устройства. Прямой вход элемента ЗАПРЕТ 62 и первые входы элементов И-НЕ 61 и РАВНОЗНАЧНОСТЬ 60 каждого разряда 56 устройства объединены и подключены к соответствующему управляющему входу 16 устройства. Первый вход элемента ИСКЛЮЧАЮЩЕЕ ИЛИ 59 и прямой вход элемента ЗАПРЕТ 62 q-го разряда 56 устройства соединены соответственно с вторым входом элемента ИСКЛЮЧАЮЩЕЕ ИЛИ 59 и инверсным входом элемента ЗАПРЕТ 62 (q-1)-го разряда 56 устройства, первый информационный вход второго мультиплексора 58 которого соединен с выходом переноса в (N-q+2)-й разряд 67 схемы распространения переносов 63 (где q=2,3,. . . ,N). Выход элемента И-НЕ 61 n-го разряда 56 устройства соединен с входом распространения переноса через (N-n+1)-й разряд 70 схемы формирования переносов 68, выход переноса в (N-n+2)-й разряд 72 которой соединен с управляющим входом первого мультиплексора 57 n-го разряда 56 устройства, выход элемента ЗАПРЕТ 62 которого соединен с управляющим входом второго мультиплексора 58 этого же разряда 56 устройства, входом генерации переноса в (N-n+1)-м разряде 71 схемы формирования переносов 68 и инверсным входом распространения переноса через (N-n+1)-й разряд 65 схемы распространения переносов 63, вход переноса из (N-n+1)-го разряда 66 которой соединен с выходом второго мультиплексора 58 n-го разряда 56 устройства (n=1,2,...N). В каждом разряде 56 устройства выход второго мультиплексора 58 соединен с вторым входом элемента РАВНОЗНАЧНОСТЬ 60, выход которого соединен с первым информационным входом первого мультиплексора 57, а выход элемента ИСКЛЮЧАЮЩЕЕ ИЛИ 59 соединен с вторым входом элемента И-НЕ 61. Второй вход элемента ИСКЛЮЧАЮЩЕЕ ИЛИ 59, инверсный вход элемента ЗАПРЕТ 62 и первый информационный вход второго мультиплексора 58 N-го разряда 56 устройства, вход начального переноса 64 схемы распространения переносов 63 и вход начального переноса 69 схемы формирования переносов 68 объединены и подключены к шине логического нуля.
В качестве схем 63 и 68 в устройстве для вычисления функций насыщения могут использоваться различные схемы распространения и формирования переносов, применяемые в параллельных сумматорах.
В простейшем варианте схемы распространения переносов 63 выход переноса в q-й разряд 67 соединяется с входом переноса из (q-1)-го разряда 66 (где q= 2,3,...,N).
На фиг. 6 приведена простейшая схема формирования переносов, содержащая по N логических элементов И 73 и ИЛИ 74. Каждый вход распространения переноса через соответствующий разряд 70 схемы подключен к первому входу соответствующего элемента И 73, выход которого соединен с первым входом соответствующего элемента ИЛИ 74, второй вход и выход которого подключены соответственно к входу генерации переноса в соответствующем разряде 71 и выходу переноса в этот же разряд 72 схемы. Второй вход первого элемента И 73 является входом начального переноса 69 схемы, а второй вход q-го элемента И 73 соединен с выходом (q-1)-ro элемента ИЛИ 74 (где q=2,3,...,N).
Устройство для вычисления функций насыщения работает следующим образом.
На входы 15 устройства подаются разряды вектора входных операндов D = (D1 D2 ... DL). Вектор D представляет собой N-разрядное слово, в котором упаковано L данных, представленных в дополнительном коде и являющихся элементами этого вектора. При этом младшие разряды вектора D являются разрядами первого данного D1, далее следуют разряды второго данного D2 и т.д. Старшие разряды вектора D являются разрядами L-го данного DL. При такой упаковке ν -й разряд λ -го данного Dλ является
Figure 00000039

разрядом вектора D, где Nλ - разрядность λ -го данного Dλ вектора D, ν=1,2,...,Nλ, λ=1,2,...,L.
Минимальная разрядность данных, составляющих вектор D, равна двум. В общем случае количество разрядов Nλ в λ -м данном Dλ вектора D может принимать любое целочисленное значение от 2 до N (λ=1,2,...,L), а количество данных L, упакованных в этом векторе, - от 1 до N/2. Единственное ограничение заключается в том, что суммарная разрядность всех данных, упакованных в одном векторе D, должна быть равна его разрядности
Figure 00000040

Устройство предназначено для формирования на выходах 17 вектора F = (F1 F2 ... FL), λ -й элемент Fλ которого является результатом вычисления функции насыщения от λ -го операнда Dλ/ вектора D
Figure 00000041

где Qλ - параметр функции насыщения, вычисляемой для операнда Dλ(λ=1,2,...,L). Общий вид функций насыщения, вычисляемых устройством, представлен на фиг.2 и описывается следующими выражениями: ΨQ(D)=D, если -2Q ≤ D ≤ 2Q-1; ΨQ(D)=2Q-1, если D > 2Q-1; ΨQ(D)=-2Q, если D < -2Q.
Вектор F имеет точно такой же формат, что и вектор D. Количество значащих бит в элементе Fλ вектора F без учета знакового разряда равно значению параметра Qλ, которое должно быть меньше разрядности Nλ операндов Dλ и Fλ (λ=1,2,...,L).
Настройка аппаратуры устройства на требуемый формат векторов D и F, а также на требуемые значения параметров реализуемых функций насыщения, осуществляется путем подачи N-разрядного слова U на управляющие входы 16 устройства.
При этом разряды слова U должны иметь следующие значения: разряды первого по Q1-й - нулевые, разряды с (Q1+1)-го по N1-й - единичные, разряды с (N1+1)-го по (N1+Q2)-й - нулевые, разряды с (N1+Q2+1)-го по (N1+N2)-й - единичные и т.д. В общем случае разряды управляющего слова U с
Figure 00000042

должны иметь нулевые значения, а разряды с
Figure 00000043

единичные значения (λ=1,2,...,L).
Если значение N-го разряда слова U равно единице (Un=1), а значение (n+1)-го разряда равно нулю (Un+1=0), то устройство будет рассматривать n-й разряд вектора D, как старший (знаковый) разряд соответствующего элемента данного вектора. Количество нулевых битов в слове U равно суммарному числу значащих бит во всех элементах вектора результатов F.
Элемент ЗАПРЕТ 62 n-го разряда 56 устройства формирует сигнал
Figure 00000044
который является признаком того, что n-й разряд устройства обрабатывает знаковый разряд одного из входных операндов, составляющих вектор D (здесь и ниже n=1,2,...,N). Второй мультиплексор 58 n-го разряда 56 устройства формирует сигнал
Figure 00000045
который имеет значение знакового (старшего) разряда входного операнда, разрядом которого является n-й разряд dn вектора D.
С целью ускоренного формирования сигналов vn для всех разрядов 56 в устройстве используется схема распространения переносов 63, в качестве которой может применяться любая известная схема последовательного или обходного переноса, используемая в обычных параллельных сумматорах. Для применения схемы распространения переносов 63 в предложенном устройстве характерно, что в качестве сигналов входных и выходных переносов используются сигналы vn, а в качестве сигналов распространения переноса через отдельные разряды - инверсные значения сигналов gn. Причем перенос распространяется от старших разрядов устройства к младшим.
Элементы ИСКЛЮЧАЮЩЕЕ ИЛИ 59 и И-НЕ 61 n-го разряда 56 устройства служат для формирования сигнала
Figure 00000046
который является признаком того, что значение n-го разряда dn вектора D не приводит к превышению порога насыщения, установленного словом U для входного операнда, разрядом которого является n-й разряд dn вектора D.
Схема формирования переносов 68 формирует для каждого n-го разряда 56 устройства сигнал cn = cn+1 ∧ pn ∨ gn, который является признаком того, что значения всех разрядов вектора D, начиная с n-го разряда dn и заканчивая старшим разрядом входного операнда, разрядом которого является n-й разряд dn вектора D, не приводит к превышению порога насыщения, установленного словом U для этого входного операнда. В качестве схемы 68 может применяться любая известная схема формирования последовательных или групповых переносов, используемая в обычных параллельных сумматорах. Для применения схемы формирования переносов 68 в предложенном устройстве характерно, что в качестве сигналов генерации переноса, подаваемых на входы 71, используются сигналы gn, в качестве сигналов распространения переноса, подаваемых на входы 70, используются сигналы pn, а на выходах переноса 72 формируются сигналы cn. Причем перенос распространяется от старших разрядов устройства к младшим.
Элемент РАВНОЗНАЧНОСТЬ 60 и первый мультиплексор 57 n-го разряда 56 устройства формируют значение n-го разряда fn вектора результатов F в соответствие с выражением
Figure 00000047
Если cn=1, то на выходе первого мультиплексора 57 устанавливается значение разряда dn вектора D; если cn=0 и un=1, то на выходе первого мультиплексора 57 устанавливается прямое значение знакового разряда (vn) соответствующего операнда вектора D; если cn=0 и un= 0, то на выходе первого мультиплексора 57 устанавливается инверсное значение знакового разряда
Figure 00000048
соответствующего операнда вектора D. Полученные на выходах первых мультиплексоров 57 разряды вектора результатов поступают на выходы 17 устройства.
Необходимо отметить, что если на входы 16 устройства подается управляющее слово U=(100...0)b, то информация, поступающая на входы 15 устройства, будет проходить на его выходы 17 без изменения (F=D).
Таким образом, предложенное устройство для вычисления функций насыщения имеет задержку переключения, приблизительно равную задержке переключения обычного параллельного сумматора двух N-разрядных чисел. При этом данное устройство позволяет одновременно вычислять функции насыщения для нескольких данных, разрядность которых может программироваться пользователем.
Вычислительное устройство, схема которого представлена на фиг.7, имеет входы разрядов вектора первых 19, вектора вторых 20 и вектора третьих 21 операндов, входы установки границ данных в векторах первых операндов и результатов 22, в векторах вторых операндов 23 и в векторах третьих операндов 24, первый 25 и второй 26 входы управления загрузкой векторов третьих операндов в первый блок памяти, вход управления пересылкой матрицы третьих операндов из первого блока памяти во второй блок памяти 27 и выходы разрядов векторов первых слагаемых результатов 28 и векторов вторых слагаемых результатов 29. Данное устройство содержит сдвиговый регистр 50, элемент задержки 51, N/2 логических элементов ЗАПРЕТ 75, N/2 дешифраторов разрядов множителя 76, матрицу умножения 77 из N столбцов по N/2 ячеек в каждом. Каждый разряд сдвигового регистра 50 содержит логический элемент ЗАПРЕТ 78, мультиплексор 79 и триггер 80. Каждая ячейка матрицы умножения 77 содержит первый 81 и второй 82 триггеры, выполняющие функции ячеек памяти соответственно первого и второго блоков памяти устройства, логический элемент ЗАПРЕТ 83, схему формирования разряда частичного произведения 84, одноразрядный сумматор 85 и мультиплексор 86. Причем на фиг.7 нумерация столбцов ячеек матрицы умножения 77 выполнена справа налево, а нумерация ячеек в столбцах ячеек матрицы умножения 77 - сверху вниз.
Вход каждого разряда вектора первых операндов 19 устройства подключен к второму входу одноразрядного сумматора 85 первой ячейки соответствующего столбца матрицы умножения 77, первый вход одноразрядного сумматора 85 каждой ячейки которой соединен с выходом схемы формирования разряда частичного произведения 84 этой же ячейки матрицы умножения 77, управляющие входы мультиплексоров 86 и инверсные входы элементов ЗАПРЕТ 83 всех ячеек каждого столбца которой объединены и подключены к соответствующему входу установки границ данных в векторах первых операндов и результатов 22 устройства. Каждый вход установки границ данных в векторах вторых операндов 23 устройства подключен к инверсному входу соответствующего элемента ЗАПРЕТ 75, выход которого соединен с первым входом соответствующего дешифратора разрядов множителя 76. Соответствующие управляющие входы схем формирования разряда частичного произведения 84 i-x ячеек всех столбцов матрицы умножения 77 объединены и подключены к соответствующим выходам i-го дешифратора разрядов множителя 76, второй и третий входы которого подключены к входам соответственно (2i-1)-го и (2i)-го разрядов вектора вторых операндов 20 устройства (где i=1,2,...,N/2). Прямой вход j-го элемента ЗАПРЕТ 75 соединен с третьим входом (j-1)-го дешифратора разрядов множителя 76 (где j=2,3,..., N/2). Вход каждого разряда вектора третьих операндов 21 устройства подключен к второму информационному входу мультиплексора 79 соответствующего разряда сдвигового регистра 50, первый информационный вход которого соединен с выходом элемента ЗАПРЕТ 78 этого же разряда сдвигового регистра 50, первый инверсный вход которого подключен к соответствующему входу установки границ данных в векторах третьих операндов 24 устройства. Второй инверсный вход элемента ЗАПРЕТ 78 q-го разряда сдвигового регистра 50 соединен с первым инверсным входом элемента ЗАПРЕТ 78 (q-1)-го разряда сдвигового регистра 50 (где q= 2,3, ...,N). Прямой вход элемента ЗАПРЕТ 78 r-го разряда сдвигового регистра 50 соединен с выходом триггера 80 (r-2)-го разряда сдвигового регистра 50 (где r= 3,4, . ..,N). Управляющие входы мультиплексоров 79 всех разрядов сдвигового регистра 50 объединены и подключены к первому входу управления загрузкой векторов третьих операндов в первый блок памяти 25 устройства. Входы синхронизации триггеров 80 всех разрядов сдвигового регистра 50 и вход элемента задержки 51 объединены и подключены к второму входу управления загрузкой векторов третьих операндов в первый блок памяти 26 устройства. Выход мультиплексора 79 каждого разряда сдвигового регистра 50 соединен с информационным входом триггера 80 этого же разряда сдвигового регистра 50, выход которого соединен с информационным входом первого триггера 81 последней ячейки соответствующего столбца матрицы умножения 77. Выход первого триггера 81 j-й ячейки каждого столбца матрицы умножения 77 соединен с информационным входом первого триггера 81 (j-1)-й ячейки этого же столбца матрицы умножения 77 (где j=2,3,...,N/2). Входы синхронизации первых триггеров 81 всех ячеек матрицы умножения 77 объединены и подключены к выходу элемента задержки 51. Входы синхронизации вторых триггеров 82 всех ячеек матрицы умножения 77 объединены и подключены к входу управления пересылкой матрицы третьих операндов из первого блока памяти во второй блок памяти 27 устройства. Второй информационный вход схемы формирования разряда частичного произведения 84 i-й ячейки q-го столбца матрицы умножения 77 соединен с выходом элемента ЗАПРЕТ 83 i-й ячейки (q-1)-го столбца матрицы умножения 77 (где i= 1,2,...,N/2 и q=2,3,...,N). Второй вход одноразрядного сумматора 85 j-й ячейки каждого столбца матрицы умножения 77 соединен с выходом суммы одноразрядного сумматора 85 (j-1)-й ячейки этого же столбца матрицы умножения 77 (где j=2,3,...,N/2). Третий вход одноразрядного сумматора 85 j-й ячейки q-го столбца матрицы умножения 77 соединен с выходом мультиплексора 86 (j-1)-й ячейки (q-1)-го столбца матрицы умножения 77 (где j=2,3,...,N/2 и q= 2,3, ...,N), а третий вход одноразрядного сумматора 85 j-й ячейки первого столбца матрицы умножения 77 соединен с третьим выходом (j-1)-го дешифратора разрядов множителя 76 (где j=2,3,...,N/2).
Выход суммы одноразрядного сумматора 85 последней ячейки каждого столбца матрицы умножения 77 является выходом соответствующего разряда вектора первых слагаемых результатов 28 устройства. Выход мультиплексора 86 последней ячейки (q-1)-го столбца матрицы умножения 77 является выходом q-го разряда вектора вторых слагаемых результатов 29 устройства (где q=2,3,...,N), первый разряд вектора вторых слагаемых результатов 29 которого подключен к третьему выходу (N/2)-го дешифратора разрядов множителя 76. Второй инверсный и прямой входы элемента ЗАПРЕТ 78 первого разряда и прямой вход элемента ЗАПРЕТ 78 второго разряда сдвигового регистра 50, вторые информационные входы схем формирования разряда частичного произведения 84 всех ячеек первого столбца матрицы умножения 77, третьи входы одноразрядных сумматоров 85 первых ячеек всех столбцов матрицы умножения 77 и прямой вход первого элемента ЗАПРЕТ 75 объединены и подключены к шине логического нуля. В каждой ячейке матрицы умножения 77 выход первого триггера 81 соединен с информационным входом второго триггера 82, выход которого соединен с прямым входом элемента ЗАПРЕТ 83 и первым информационным входом схемы формирования разряда частичного произведения 84, третий управляющий вход которой соединен с вторым информационным входом мультиплексора 86, первый информационный вход которого соединен с выходом переноса одноразрядного сумматора 85 этой же ячейки матрицы умножения 77.
На фиг. 8 приведены примеры схемотехнической реализации дешифратора разрядов множителя 76 и схемы формирования разряда частичного произведения 84 в соответствие с модифицированным алгоритмом Бута. Дешифратор разрядов множителя 76 содержит логические элементы ИСКЛЮЧАЮЩЕЕ ИЛИ 87, РАВНОЗНАЧНОСТЬ 88 и ИЛИ-НЕ 89. Схема формирования разряда частичного произведения 84 содержит логические элементы И 90 и 91, ИЛИ 92 и ИСКЛЮЧАЮЩЕЕ ИЛИ 93.
Вычислительное устройство предназначено для формирования двухрядного кода результата операции умножения вектора вторых операндов Y = (Y1 Y2 ... Yk), разряды которого подаются на входы 20 устройства, на матрицу третьих операндов
Figure 00000049

предварительно загруженную и хранящуюся во втором блоке памяти устройства, с прибавлением к полученному произведению вектора первых операндов X = (X1 X2 ... XM), разряды которого подаются на входы 19 устройства. При этом в каждом такте работы устройства на его выходах 28 и 29 формируются разряды векторов A = (A1 A2 ... AM) и B = (B1 B2 ... BM), сумма которых является результатом операции X + Y • Z. То есть сумма m-х элементов векторов A и B определяется выражением
Figure 00000050

Вектор X представляет собой N-разрядное слово, в котором упаковано M данных, представленных в дополнительном коде и являющихся элементами этого вектора. При этом младшие разряды вектора X являются разрядами первого данного X1, далее следуют разряды второго данного X2 и т.д. Старшие разряды вектора X являются разрядами M-го данного XM. При такой упаковке ν -й разряд m-го данного Xm является
Figure 00000051

разрядом вектора X, где Nm - разрядность m-го данного Xm вектора X, ν = 1,2, . ..,Nm, m=1,2,...,M. Количество данных М в векторе X и количество разрядов Nm в каждом m-м данном Xm этого вектора (m=1,2,...,М) могут принимать любые целочисленные значения от 1 до N. Единственное ограничение заключается в том, что суммарная разрядность всех данных, упакованных в одном векторе X, должна быть равна его разрядности
Figure 00000052

Вектор Y представляет собой N-разрядное слово, в котором упаковано K данных, представленных в дополнительном коде и являющихся элементами этого вектора. Формат вектора Y аналогичен формату вектора X. Однако данные векторы могут различаться количеством и разрядностью отдельных данных, упакованных в этих векторах. Количество разрядов N k/ в k-м данном Yk (k=1,2,..., K) вектора Y может принимать целочисленное четное значение от 2 до N. Количество данных K в векторе Y может принимать любое целочисленное значение от 1 до N/2. Однако, суммарная разрядность всех данных, упакованных в одном векторе Y, должна быть равна его разрядности
Figure 00000053

k-я строка матрицы Z представляет собой вектор данных Zk = (Zk,1, Zk,2 . . . Zk,M), где k=1,2,...,K. Причем каждый из векторов Z1, Z2, ..., ZK должен иметь точно такой же формат, что и вектор X.
Векторы A и B, формируемые на выходах 28 и 29 устройства, имеют точно такой же формат, что и вектор X.
Настройка аппаратуры вычислительного устройства на обработку векторов требуемых форматов осуществляется путем подачи N-разрядного управляющего слова H на входы установки границ данных в векторах первых операндов и результатов 22 устройства и (N/2)-разрядного управляющего слова E на входы установки границ данных в векторах вторых операндов 23 устройства.
Единичное значение n-го разряда hn слова H означает, что устройство будет рассматривать n-й разряд каждого из векторов X, Z1, Z2, ..., ZK, как старший разряд соответствующего элемента данного вектора. Количество единичных битов в слове H равно количеству элементов в каждом из векторов X, Z1, Z2, ..., ZK
Figure 00000054

Единичное значение i-го разряда ei, слова E означает, что устройство будет рассматривать i-ю пару разрядов вектора Y, как группу младших разрядов соответствующего элемента данного вектора. Количество единичных битов в слове E равно количеству элементов в векторе Y
Figure 00000055

Выполнению описанной выше операции должна предшествовать процедура загрузки матрицы Z во второй блок памяти устройства, функции ячеек памяти которого выполняют вторые триггеры 82 ячеек матрицы умножения 77. Данная процедура выполняется в два этапа.
Первоначально в течение N/2 тактов матрица Z преобразуется в матрицу
Figure 00000056

которая загружается в первый блок памяти устройства. Причем i-я строка матрицы Z' представляет собой вектор данных Z i =(Z i,1 Z i,2 ... Z i,M ), который впоследствии будет умножаться на i-ю пару разрядов вектора Y (i=1,2,..., N/2). Все векторы Z 1 , Z 2 ,..., Z N/2 имеют точно такой же формат, что и любой из векторов Z1, Z2, ..., ZK. Преобразование матрицы Z в матрицу Z' выполняется путем замены k-й строки Zk (k=1,2,...,К) матрицы Z на N k /2 строк
Figure 00000057
матрицы Z', формируемых в соответствии с выражением
Figure 00000058

где lk - суммарное количество пар разрядов в k первых операндах вектора Y, равное
Figure 00000059

Из представленного выше выражения следует, что
Figure 00000060
Figure 00000061
и т.д. То есть все строки матрицы Z будут присутствовать и в матрице Z', но, как правило, на других позициях.
Преобразование матрицы Z в матрицу Z' выполняется с помощью сдвигового регистра 50, который имеет два режима работы. В режиме загрузки на управляющий вход 25 устройства подается единичный сигнал, и все мультиплексоры 79 сдвигового регистра 50 начинают пропускать на информационные входы триггеров 80 сдвигового регистра 50 разряды вектора данных, подаваемые на входы 21 устройства. В режиме сдвига на управляющий вход 25 устройства подается нулевой сигнал, и все мультиплексоры 79 сдвигового регистра 50 начинают пропускать на информационные входы триггеров 80 сдвигового регистра 50 информацию с выходов соответствующих элементов ЗАПРЕТ 78 сдвигового регистра 50. На выходе элемента ЗАПРЕТ 78 r-го разряда (r=3,4,...,N) сдвигового регистра 50 формируется сигнал
Figure 00000062
где wr-2 - информация, хранящаяся в триггере 80 (r-2)-го разряда сдвигового регистра 50, a hr - значение r-го разряда N-разрядного управляющего слова H, которое подается на входы 24 устройства и устанавливает границы данных в обрабатываемых векторах. Элементы ЗАПРЕТ 78 предотвращают распространение информации между разрядами сдвигового регистра 50, хранящими разряды различных элементов вектора данных, предварительно загруженного в сдвиговый регистр 50. На выходе элементов ЗАПРЕТ 78 двух младших разрядов сдвигового регистра постоянно формируются нулевые сигналы, так как их прямые входы подключены к шине логического нуля. Таким образом, сдвиговый регистр 50, находящийся в режиме сдвига, выполняет арифметический сдвиг хранящегося в нем вектора данных на два разряда влево, что эквивалентно умножению элементов этого вектора на четыре.
Преобразование матрицы Z в матрицу Z' выполняется за N/2 тактов. В каждом из этих N/2 тактов на управляющий вход 26 устройства подается синхросигнал, который поступает на входы синхронизации триггеров 80 сдвигового регистра 50, а на входы установки границ данных в векторах третьих операндов 24 устройства непрерывно подается описанное выше N-разрядное управляющее слово H, которое при выполнении операции X + Y • Z по окончании загрузки матрицы Z будет подаваться на входы 22 устройства. В i-м такте (i=1,2,..., N/2) на управляющий вход 25 устройства подается i-й разряд ei описанного выше (N/2)-разрядного управляющего слова E, которое при выполнении операции X + Y • Z по окончании процесса преобразования и загрузки матрицы Z будет подаваться на входы 23 устройства.
В (lk-1+1)-м такте (k=1,2,...,K), когда на вход 25 устройства подается разряд слова E, имеющий единичное значение, на входы 21 устройства поступают разряды вектора Zk, который будет записываться без изменений в триггеры 80 сдвигового регистра 50. В каждом из остальных N/2-K тактов, когда на вход 25 устройства подается разряд слова E, имеющий нулевое значение, в триггеры 80 сдвигового регистра 50 будут записываться увеличенные в четыре раза значения элементов вектора данных, хранящегося в сдвиговом регистре 50.
Таким образом, по окончании i-го такта (i=1,2,...,N/2) процесса преобразования матрицы Z в матрицу Z' в триггерах 80 сдвигового регистра 50 будет храниться вектор Z i .
Информация с выходов сдвигового регистра 50 поступает на информационные входы первого блока памяти устройства, который реализован на первых триггерах 81 ячеек матрицы умножения 77. Матрица N на N/2 триггеров 81 образует N параллельно включенных (N/2)-разрядных сдвиговых регистров, каждый из которых состоит из N/2 последовательно включенных триггеров 81, входящих в состав ячеек одного из столбцов матрицы умножения 77. Поэтому матрица триггеров 81 может рассматриваться как блок памяти, имеющий порт ввода магазинного типа и содержащий N/2 ячеек памяти, каждая из которых обеспечивает хранение N-разрядных слов. Функции i-й ячейки первого блока памяти выполняют триггеры 81 ячеек i-й строки матрицы умножения 77 (i=1,2,...,N/2).
Синхросигнал, подаваемый на вход 26 устройства в каждом такте в течение всего процесса преобразования матрицы Z в матрицу Z', поступает через элемент задержки 51, в качестве которого может быть использован обычный инвертор, на входы синхронизации первых триггеров 81 всех ячеек матрицы умножения 77. Поэтому одновременно с преобразованием матрицы Z в матрицу Z' будет происходить загрузка матрицы Z' в первый блок памяти устройства. По окончании процесса загрузки в первых триггерах 81 ячеек i-й строки матрицы умножения 77 будет содержаться вектор Z i (i=1,2,...,N/2).
После этого на управляющий вход 27 устройства в течение одного такта подается синхросигнал, по которому содержимое первых триггеров 81 всех ячеек матрицы умножения 77 переписывается во вторые триггеры 82 этих же ячеек матрицы умножения 77. Матрица N на N/2 триггеров 82 может рассматриваться как второй блок памяти, содержащий N/2 ячеек памяти, каждая из которых обеспечивает хранение N-разрядных слов. Функции i-й ячейки второго блока памяти выполняют вторые триггеры 82 ячеек i-й строки матрицы умножения 77 (i= 1,2,...,N/2). Таким образом, за один такт происходит пересылка матрицы Z' из первого во второй блок памяти устройства.
Начиная со следующего такта исполнительные узлы вычислительного устройства, к которым относятся элементы ЗАПРЕТ 75, дешифраторы разрядов множителей 76, а также входящие в состав ячеек матрицы умножения 77 элементы ЗАПРЕТ 83, схемы формирования разряда частичного произведения 84, одноразрядные сумматоры 85 и мультиплексоры 86, будут в каждом такте выполнять описанную выше операцию
A + B = X + Y • Z.
При этом i-й дешифратор разрядов множителя 76, i-й элемент ЗАПРЕТ 75, а также входящие в состав ячеек i-й строки матрицы умножения 77 элементы ЗАПРЕТ 83 и схемы 84 служат для формирования разрядов частичного произведения вектора Z i , хранящегося во вторых триггерах 82 ячеек i-й строки матрицы умножения 77, на i-пapy разрядов Y i вектора Y (здесь и ниже i=1,2,...,N/2)
Pi=Z i ×Y i .
Все частичные произведения вычисляются по модифицированному алгоритму Бута, в соответствии с которым значения 2i-го и (2i-1)-го разрядов вектора Y и сигнала переноса ci, из соседней младшей пары разрядов множителя определяют значение частичного произведения Pi, следующим образом: если y2i=0, y2i-1=0 и ci=0 или y2i=1, y2i-1=1 и ci=1, то Pi=0; если y2i=0, y2i-1=0 и ci= 1 или y2i= 0, y2i-1= 1 и ci=0, то Pi=Z i ; если y2i=0, y2i-1=1 и ci=1, то Pi=2×Z i ; если y2i=1, y2i-1=0 и ci=0, то Pi=-2×Z i ; если y2i=1, y2i-1=0 и ci или y2i=1, y2i-1=1 и ci=0, то Pi=-Z i .
В обычных двухоперандных умножителях Бута в качестве сигнала переноса ci, используется (2i-2)-й разряд множителя. В предложенном устройстве, где множимым является вектор операндов программируемой разрядности, сигнал переноса сi формируется на выходе i-го элемента ЗАПРЕТ 75 и описывается следующим логическим выражением
Figure 00000063

где y2i-2 - (2i-2)-й разряд вектора Y, ei, - i-й разряд управляющего слова E. Применение элементов ЗАПРЕТ 75 позволяет блокировать распространение переносов между парами разрядов вектора Y, относящимися к разным элементам вектора.
На выходах i-го дешифратора разрядов множителя 76 формируются следующие сигналы
Figure 00000064

Данные сигналы осуществляют управление схемами формирования разряда частичного произведения 84 ячеек i-й строки матрицы умножения 77, на первые информационные входы которых с выходов вторых триггеров 82 ячеек i-й строки матрицы умножения 77 подаются разряды вектора Z i , а на вторые информационные входы с выходов элементов ЗАПРЕТ 83 ячеек i-й строки матрицы умножения 77 подаются разряды вектора
Figure 00000065
Элемент ЗАПРЕТ 83 i-й ячейки n-го столбца матрицы умножения 77 формирует (n+1)-й разряд
Figure 00000066
вектора
Figure 00000067
в соответствие с выражением
Figure 00000068

где
Figure 00000069
- n-й разряд вектора Z i , хранящийся в триггере 82 i-й ячейки n-го столбца матрицы умножения 77, hn - n-й разряд управляющего слова H (i= 1,2, . . . , N/2 и n=1,2,...,N). Из данного выражения следует, что вектор
Figure 00000070
равен 2×Z i имеет точно такой же формат, что и вектор Z i .
Элементы И 90 и 91 и элемент ИЛИ 92, входящие в состав схем формирования разряда частичного произведения 84 ячеек i-й строки матрицы умножения 77, образуют N-разрядный коммутатор, на выход которого при onei=1 и twoi=0 проходит вектор Z i , при onei=0 и twoi=1 - вектор
Figure 00000071
при onei=0 и twoi=0 - вектор с нулевыми значениями всех разрядов. Таким образом, на выходах данного коммутатора формируется вектор P i , который при subi=0 равен вектору частичных произведений Pi а при subi=1 равен - Pi.
Изменение знака каждого элемента вектора P i , необходимое для получения вектора Pi при subi= 1, может быть выполнено путем инвертирования каждого разряда вектора P i и прибавления единицы к каждому элементу инвертированного вектора. Элементы ИСКЛЮЧАЮЩЕЕ ИЛИ 93, входящие в состав схем формирования разряда частичного произведения 84 ячеек i-й строки матрицы умножения 77, выполняют функции инверторов, управляемых сигналом subi. При subi=0, вектор P i проходит через элементы ИСКЛЮЧАЮЩЕЕ ИЛИ 93 на выходы схем формирования разряда частичного произведения 84 ячеек i-й строки матрицы умножения 77 без изменений. При subi=1 элементы ИСКЛЮЧАЮЩЕЕ ИЛИ 93 инвертируют каждый разряд этого вектора. Таким образом, на выходах схем формирования разряда частичного произведения 84 ячеек i-й строки матрицы умножения 77 формируется N-разрядный вектор
Figure 00000072
имеющий точно такой же формат, что и векторы X,Z 1 ,Z 2 ,..., Z N/2 , удовлетворяющий выражению
Figure 00000073

где SUBi - N-разрядный вектор, m-м элементом которого является Nm-разрядный операнд (00...0 subi)b, младший разряд которого равен subi, а остальные разряды имеют нулевые значения.
Одноразрядные сумматоры 85 и мультиплексоры 86 ячеек матрицы умножения служат для формирования двухрядного кода суммы векторов
Figure 00000074
SUB1, SUB2, . . ., SUBN/2. В данной схеме собственно сложение выполняется с помощью одноразрядных сумматоров 85, как и в обычных схемах сложения N/2+1 операндов, построенных на основе сумматоров с отложенными переносами. Мультиплексоры 86 служат для замены сигналов переноса между столбцами одноразрядных сумматоров 85, выполняющих сложение различных элементов векторов, на сигналы sub1, sub2, ..., subN/2. Если (q-1-й) разряд hq-1 управляющего слова H равен нулю, то мультиплексоры 86 ячеек (q-1)-го столбца матрицы умножения 77 пропускают на соответствующие входы одноразрядных сумматоров 85 ячеек q-го столбца матрицы умножения 77 сигналы с выходов переноса одноразрядных сумматоров 85 ячеек (q-1)-го столбца матрицы умножения 77 (q= 2,3, ...,N). Если (q-1)-й разряд hq-1 управляющего слова H равен единице, то мультиплексоры 86 ячеек (q-1)-го столбца матрицы умножения 77 пропускают на соответствующие входы одноразрядных сумматоров 85 ячеек q-го столбца матрицы умножения 77 сигналы sub1, sub2,..., subN/2 с выходов дешифраторов разрядов множителя 76 (q=2,3,...,N). В результате на выходах 28 и 29 устройства формируются векторы A и B, сумма равна
Figure 00000075

Сгруппировав частичные произведения, относящиеся к отдельным элементам вектора Y, последнее выражение можно представить в следующем виде
Figure 00000076

С учетом того, что каждый k-й элемент вектора Y равен
Figure 00000077

предыдущее выражение преобразуется следующим образом
Figure 00000078

Таким образом, на выходах 28 и 29 устройства формируется двухрядный код результата операции X + Y • Z.
Вычислительное устройство ориентировано на пакетную обработку векторов данных, при которой множество векторов входных операндов, подаваемых последовательно на каждый из входов 19 и 20 устройства, разбивается на последовательно обрабатываемые подмножества (пакеты). Совокупность векторов входных операндов, подаваемых на каждый из входов 19 и 20 устройства и входящих в
Figure 00000079
-й пакет, можно представить в виде вектора векторов данных
Figure 00000080

где Tτ - количество векторов, входящих в состав каждого τ-го пакета. Причем все векторы, входящие в состав одного пакета, должны иметь одинаковый формат, то есть информация, подаваемая на управляющие входы 22 и 23 устройства, не должна изменяться в процессе обработки одного пакета векторов.
Обработка τ -х пакетов Xτ и Yτ выполняется за Tτ тактов. При этом в каждом t-м такте вычислительное устройство выполняет операцию
Aτ,t+Bτ,t=Xτ,t+Yτ,t×Zτ (t=1,2,...,Tτ),
где Zτ - содержимое второго блока памяти устройства, которое в процессе обработки τ -х пакетов Xτ и Yτ должно оставаться неизменным.
Одновременно с обработкой τ -х пакетов векторов выполняется описанная выше процедура последовательной загрузки векторов Z τ+1 1 , Z τ+1 2 ,..., Z τ+1 K c входов 21 устройства в первый блок памяти устройства. Данная процедура выполняется за N/2 тактов.
По окончании обоих указанных процессов на управляющий вход 27 нейропроцессора подается активный сигнал, инициирующий пересылку матрицы Zτ+1 из первого во второй блок памяти устройства. Данная пересылка выполняется за один такт. После этого устройство переходит к процедурам обработки (τ+1)-x пакетов векторов Xτ+1 и Yτ+1 и загрузки матрицы Zτ+2.
Количество векторов Tτ в каждом τ-м пакете может задаваться программно. Причем нецелесообразно использовать пакеты векторов с Tτ меньшим, чем N/J+2, так как при этом будут простаивать вычислительные средства нейропроцессора.
Сумматор, схема которого представлена на фиг.9, имеет входы разрядов вектора первых 31 и вектора вторых 32 слагаемых, входы установки границ данных в векторах слагаемых и сумм 33 и выходы разрядов вектора сумм 34. Каждый из N разрядов 94 сумматора содержит полусумматор 95, логический элемент ИСКЛЮЧАЮЩЕЕ ИЛИ 96, первый 97 и второй 98 логические элементы ЗАПРЕТ. В состав сумматора входит также схема формирования переносов 99.
Входы разрядов вектора первых слагаемых 31 сумматора и входы разрядов вектора вторых слагаемых 32 сумматора подключены соответственно к первым и вторым входам полусумматоров 95 разрядов 94 сумматора. Инверсные входы первого 97 и второго 98 элементов ЗАПРЕТ каждого разряда 94 сумматора объединены и подключены к соответствующему входу установки границ данных в векторах слагаемых и сумм 33 сумматора. Выходы элементов ИСКЛЮЧАЮЩЕЕ ИЛИ 96 разрядов 94 сумматора являются выходами разрядов вектора сумм 34 сумматора. Выход первого элемента ЗАПРЕТ 97 каждого разряда 94 сумматора соединен с входом распространения переноса через соответствующий разряд схемы формирования переносов 99, вход генерации переноса в каждом разряде которой соединен с выходом второго элемента ЗАПРЕТ 98 соответствующего разряда 94 сумматора. Второй вход элемента ИСКЛЮЧАЮЩЕЕ ИЛИ 96 q-го разряда 94 сумматора соединен с выходом переноса в q-й разряд схемы формирования переносов 99 (где q= 2,3,...,N), вход начального переноса которой и второй вход элемента ИСКЛЮЧАЮЩЕЕ ИЛИ 96 первого разряда 94 сумматора подключены к шине логического нуля. В каждом разряде 94 сумматора выход суммы полусумматора 95 соединен с первым входом элемента ИСКЛЮЧАЮЩЕЕ ИЛИ 96 и прямым входом первого элемента ЗАПРЕТ 97, а выход переноса полусумматора 95 соединен с прямым входом второго элемента ЗАПРЕТ 98.
Сумматор работает следующим образом.
На входы 31 сумматора подаются разряды вектора первых слагаемых A = (A1 A2 . . . AM). Вектор A представляет собой N-разрядное слово, в котором упаковано М данных, представленных в дополнительном коде и являющихся элементами этого вектора. При этом младшие разряды вектора A являются разрядами первого данного A1, далее следуют разряды второго данного A2 и т.д. Старшие разряды вектора A являются разрядами M-го данного AM. При такой упаковке ν-й разряд m-го данного Am является
Figure 00000081

разрядом вектора A, где Nm-разрядность m-го данного Am вектора A, ν=1,2,...,Nm, m=1,2,...,M. Количество данных M в векторе A и количество разрядов Nm в каждом m-м данном Am этого вектора могут принимать любые целочисленные значения от 1 до N (m=1,2,...,М). Единственное ограничение заключается в том, что суммарная разрядность всех данных, упакованных в одном векторе A, должна быть равна его разрядности
Figure 00000082

На входы 32 сумматора подаются разряды N-разрядного вектора вторых слагаемых B = (B1 B2 ... BM), который имеет точно такой же формат, что и вектор A.
Настройка аппаратуры сумматора на обработку векторов требуемых форматов обеспечивается путем подачи на его входы 33 N-разрядного управляющего слова H. При этом единичное значение n-го разряда hn слова H означает, что сумматор будет рассматривать n-й разряд каждого из векторов A и B, как старший разряд соответствующего элемента данного вектора. Количество единичных битов в слове H равно количеству элементов в каждом из векторов A и B (здесь и ниже n=1,2,...,N)
Figure 00000083

В n-м разряде 94 сумматора на входы полусумматора 95 подаются n-й разряд аn вектора A и n-й разряд bn вектора B. На выходах суммы и переноса этого полусумматора 95 формируются вспомогательные сигналы распространения pn и генерации gn переноса для данного разряда 94 сумматора
pn=an⊕bn, gn=an∧bn.
Сигналы pn и gn поступают на прямые входы соответственно первого 97 и второго 98 элементов ЗАПРЕТ, на инверсные входы которых подается n-й разряд hn управляющего слова H. Если n-е разряды an и bn векторов A и B не являются знаковыми разрядами отдельных элементов, составляющих данные векторы, то hn= 0, и сигналы pn и gn проходят на выходы элементов ЗАПРЕТ 97 и 98 без изменения. Если n-е разряды an и bn векторов A и B являются знаковыми разрядами их элементов, то hn=1, и на выходах элементов ЗАПРЕТ 97 и 98 устанавливаются нулевые значения сигналов. Таким образом, элементы ЗАПРЕТ 97 и 98 служат для блокировки сигналов генерации и распространения переносов в тех разрядах 94 сумматора, которые обрабатывают старшие разряды отдельных элементов входных векторов A и B.
Сигналы с выходов элементов ЗАПРЕТ 97 и 98 поступают на входы распространения и генерации переносов схемы 99, которая служит для ускоренного формирования сигналов переноса в отдельные разряды сумматора. В качестве схемы 99 может быть использована любая известная схема обходного, группового или последовательного переноса, применяемая в обычных двухоперандных сумматорах. На выходах схемы 99 формируются сигналы переносов в отдельные разряды сумматора в соответствие с выражением cn+1=gn∨pn∧cn. Поэтому, если hn= 1, то pn = gn = 0, и схема 99 будет формировать сигнал cn+1 = 0.
Сигналы переносов, сформированные схемой 99, поступают на входы элементов ИСКЛЮЧАЮЩЕЕ ИЛИ 96 соответствующих разрядов 94 сумматора, на другие входы которых поступают сигналы распространения переносов с выходов суммы полусумматоров 95. На выходе элемента ИСКЛЮЧАЮЩЕЕ ИЛИ 96 каждого n-го разряда 94 сумматора формируется сигнал sn=pn⊕cn. Таким образом на выходах 34 сумматора формируется вектор S = (S1 S2 ... SM), каждый элемент которого равен сумме соответствующих элементов векторов A и B
Sm = Am + Bm (m-1,2,...,M).
Причем вектор S будет иметь точно такой же формат, что и векторы A и B.
В отличие от известных сумматоров векторов данных, в предложенном сумматоре блокировка сигнала переноса между разрядами сумматора, обрабатывающими соседние операнды входных векторов, осуществляется на уровне формирования вспомогательных функций генерации и распространения переноса. Это позволяет использовать в сумматоре схемы распространения переноса, применяемые в обычных двухоперандных сумматорах. Поэтому предложенный сумматор, предназначенный для сложения векторов данных программируемой разрядности, имеет практически такую же задержку переключения, что и двухоперандные сумматоры.
Библиографические данные
1. Основные направления разработки аппаратных средств реализации нейросетевых алгоритмов / Иванов Ю.П. и др. (Тезисы докладов Второй Всероссийской конференции "Нейрокомпьютеры и их применение", Москва, 14.02.1997) // Нейрокомпьютер. - 1996. - N 1, 2. - С. 47-49.
2. Патент США N 5278945, кл. 395/27, 1994 (прототип 1-го изобретения).
3. Авторское свидетельство СССР N 690477, кл. G 06 F 7/38, 1979.
4. Патент США N 5644519, кл. 364/736.02, 1997 (прототип 2-го изобретения).
5. Патент США N 4825401, кл. 364/760, 1989 (прототип 3-го изобретения).
6. Патент США N 5047975, кл. 364/786, 1991.
7. Патент США N 4675837, кл. 364/788, 1987 (прототип 4-го изобретения).

Claims (8)

1. Нейропроцессор, содержащий первый, второй и третий регистры, первый блок памяти магазинного типа и мультиплексор, первый информационный вход каждого разряда которого соединен с выходом соответствующего разряда первого регистра, информационный вход каждого разряда второго регистра подключен к соответствующему разряду первой входной шины нейропроцессора, входы управления первого, второго и третьего регистров являются соответствующими управляющими входами нейропроцессора, отличающийся тем, что в него введены четвертый, пятый и шестой регистры, сдвиговый регистр, логический элемент И, второй блок памяти магазинного типа, коммутатор с трех направлений в два, два устройства для вычисления функций насыщения, сумматор и вычислительное устройство, имеющее входы разрядов вектора первых операндов, входы разрядов вектора вторых операндов, входы разрядов вектора третьих операндов, входы установки границ данных в векторах первых операндов и результатов, входы установки границ данных в векторах вторых операндов, входы установки границ данных в векторах третьих операндов, первый и второй входы управления загрузкой векторов третьих операндов в первый блок памяти, вход управления пересылкой матрицы третьих операндов из первого блока памяти во второй блок памяти и выходы разрядов вектора первых и вектора вторых слагаемых результатов операции сложения вектора первых операндов с произведением вектора вторых операндов на матрицу третьих операндов, хранящуюся во втором блоке памяти, причем первые информационные входы разрядов коммутатора с трех направлений в два, информационные входы первого блока памяти магазинного типа, первого, третьего и четвертого регистров и параллельные информационные входы сдвигового регистра поразрядно объединены и подключены к соответствующим разрядам первой входной шины нейропроцессора, каждый разряд второй входной шины которого соединен с вторым информационным входом соответствующего разряда коммутатора с трех направлений в два, первый выход каждого разряда которого соединен с входом соответствующего разряда вектора входных операндов первого устройства для вычисления функций насыщения, управляющий вход каждого разряда которого соединен с выходом соответствующего разряда второго регистра, второй выход каждого разряда коммутатора с трех направлений в два соединен с входом соответствующего разряда вектора входных операндов второго устройства для вычисления функций насыщения, управляющий вход каждого разряда которого соединен с выходом соответствующего разряда третьего регистра, выход каждого разряда вектора результатов первого устройства для вычисления функций насыщения соединен с вторым информационным входом соответствующего разряда мультиплексора, выход каждого разряда которого соединен с входом соответствующего разряда вектора первых операндов вычислительного устройства, вход каждого разряда вектора вторых операндов которого соединен с выходом соответствующего разряда вектора результатов второго устройства для вычисления функций насыщения, информационные выходы первого блока памяти магазинного типа соединены с входами соответствующих разрядов вектора третьих операндов вычислительного устройства, выход каждого разряда вектора первых слагаемых результатов операции сложения вектора первых операндов с произведением вектора вторых операндов на матрицу третьих операндов, хранящуюся во втором блоке памяти, которого соединен с входом соответствующего разряда вектора первых слагаемых сумматора, вход каждого разряда вектора вторых слагаемых которого соединен с выходом соответствующего разряда вектора вторых слагаемых результатов операции сложения вектора первых операндов с произведением вектора вторых операндов на матрицу третьих операндов, хранящуюся во втором блоке памяти, вычислительного устройства, каждый вход установки границ данных в векторах первых операндов и результатов которого соединен с выходом соответствующего разряда пятого регистра и с соответствующим входом установки границ данных в векторах слагаемых и сумм сумматора, выход каждого разряда вектора сумм которого соединен с соответствующим информационным входом второго блока памяти магазинного типа, каждый информационный выход которого подключен к соответствующему разряду выходной шины нейропроцессора и соединен с третьим входом соответствующего разряда коммутатора с трех направлений в два, выход каждого разряда четвертого регистра соединен с информационным входом соответствующего разряда пятого регистра и соответствующим входом установки границ данных в векторах третьих операндов вычислительного устройства, каждый вход установки границ данных в векторах вторых операндов которого соединен с выходом соответствующего разряда шестого регистра, информационный вход каждого разряда которого соединен с выходом соответствующего разряда сдвигового регистра, последовательные информационные вход и выход которого объединены и подключены к первому входу управления загрузкой векторов третьих операндов в первый блок памяти вычислительного устройства и к первому входу элемента И, выход которого соединен с входом управления чтением первого блока памяти магазинного типа, второй вход элемента И, вход управления сдвигом сдвигового регистра и второй вход управления загрузкой векторов третьих операндов в первый блок памяти вычислительного устройства объединены и подключены к соответствующему управляющему входу нейропроцессора, вход управления пересылкой матрицы третьих операндов из первого блока памяти во второй блок памяти вычислительного устройства и входы управления пятого и шестого регистров объединены и подключены к соответствующему управляющему входу нейропроцессора, управляющие входы коммутатора с трех направлений в два, мультиплексора и четвертого регистра, входы управления записью сдвигового регистра и первого блока памяти магазинного типа и входы управления чтением и записью второго блока памяти магазинного типа являются соответствующими управляющими входами нейропроцессора, выходы состояния первого и второго блоков памяти магазинного типа являются выходами состояния нейропроцессора.
2. Нейропроцессор по п.1, отличающийся тем, что вычислительное устройство содержит сдвиговый регистр, выполняющий за один такт арифметический сдвиг всех операндов хранящегося в нем N-разрядного вектора на J разрядов влево, где J - минимальная величина, которой кратны разрядности данных в векторах вторых операндов вычислительного устройства, элемент задержки, первый блок памяти, имеющий порт ввода магазинного типа и содержащий N/J ячеек для хранения N-разрядных данных, второй блок памяти, содержащий N/J ячеек для хранения N-разрядных данных, N/J блоков умножения, каждый из которых умножает N-разрядный вектор данных программируемой разрядности на J-разрядный множитель, и схему сложения векторов, формирующую двухрядный код суммы N/J + 1 векторов данных программируемой разрядности, причем входы разрядов вектора третьих операндов вычислительного устройства подключены к информационным входам сдвигового регистра, выходы которого соединены с информационными входами первого блока памяти, выходы каждой ячейки которого соединены с информационными входами соответствующей ячейки второго блока памяти, выходы каждой ячейки которого соединены с входами разрядов вектора множимых соответствующего блока умножения, входы разрядов множителя которого подключены к входам соответствующей J-разрядной группы разрядов вектора вторых операндов вычислительного устройства, выходы каждого блока умножения соединены с входами разрядов соответствующего вектора слагаемых схемы сложения векторов, входы разрядов (N/J + 1)-го вектора слагаемых которой подключены к входам разрядов вектора первых операндов вычислительного устройства, входы установки границ данных в векторах третьих операндов которого подключены к соответствующим входам установки границ данных в векторах операндов сдвигового регистра, вход режима работы которого подключен к первому входу управления загрузкой векторов третьих операндов в первый блок памяти вычислительного устройства, второй вход управления загрузкой векторов третьих операндов в первый блок памяти которого подключен к тактовому входу сдвигового регистра и входу элемента задержки, выход которого соединен с входом управления записью первого блока памяти, вход управления записью второго блока памяти подключен к входу управления пересылкой матрицы третьих операндов из первого блока памяти во второй блок памяти вычислительного устройства, каждый вход установки границ данных в векторах вторых операндов которого подключен к входу знаковой коррекции соответствующего блока умножения, входы установки границ данных в векторах первых операндов и результатов вычислительного устройства подключены к входам установки границ данных в векторах множимых и результатов каждого блока умножения и к входам установки границ данных в векторах слагаемых и результатов схемы сложения векторов, выходы разрядов векторов первых и вторых слагаемых результатов которой являются соответствующими выходами вычислительного устройства.
3. Нейропроцессор по п.1, отличающийся тем, что каждое из устройств для вычисления функций насыщения содержит регистр входных данных, информационные входы которого являются входами соответствующих разрядов вектора входных операндов этого устройства, вычислительное устройство содержит регистр входных данных, информационные входы которого являются входами соответствующих разрядов векторов первых и вторых операндов вычислительного устройства, сумматор содержит регистр входных данных, информационные входы которого являются соответствующими входами сумматора.
4. Устройство для вычисления функций насыщения, содержащее в каждом из N разрядов первый мультиплексор, второй информационный вход которого подключен к входу соответствующего разряда вектора входных операндов устройства, выход каждого разряда вектора результатов которого подключен к выходу первого мультиплексора соответствующего разряда устройства, отличающееся тем, что в него введены схема распространения переносов и схема формирования переносов, а в его каждый разряд введены второй мультиплексор и логические элементы ИСКЛЮЧАЮЩЕЕ ИЛИ, РАВНОЗНАЧНОСТЬ, И-НЕ и ЗАПРЕТ, причем прямой вход элемента ЗАПРЕТ и первые входы элементов И-НЕ и РАВНОЗНАЧНОСТЬ каждого разряда устройства объединены и подключены к соответствующему управляющему входу устройства, выход элемента И-НЕ n-го разряда устройства соединен с входом распространения переноса через (N - n + 1)-й разряд схемы формирования переносов, выход переноса в (N - n + 2)-й разряд которой соединен с управляющим входом первого мультиплексора n-го разряда устройства, выход элемента ЗАПРЕТ которого соединен с управляющим входом второго мультиплексора этого же разряда устройства, входом генерации переноса в (N - n + 1)-м разряде схеме формирования переносов и инверсным входом распространения переноса через (N - n + 1)-й разряд схемы распространения переносов, вход переноса из (N - n + 1)-го разряда которой соединен с выходом второго мультиплексора n-го разряда устройства (где n = 1, 2, ..., N), первый вход элемента ИСКЛЮЧАЮЩЕЕ ИЛИ и прямой вход элемента ЗАПРЕТ q-го разряда устройства соединены соответственно с вторым входом элемента ИСКЛЮЧАЮЩЕЕ ИЛИ и инверсным входом элемента ЗАПРЕТ (q - 1)-го разряда устройства, первый информационный вход второго мультиплексора которого соединен с выходом переноса в (N - q + 2)-й разряд схемы распространения переносов (где q = 2, 3, ..., N), входы начальных переносов схемы распространения переносов и схемы формирования переносов, второй вход элемента ИСКЛЮЧАЮЩЕЕ ИЛИ, инверсный вход элемента ЗАПРЕТ и первый информационный вход второго мультиплексора N-го разряда устройства объединены и подключены к шине логического нуля, а в каждом разряде устройства выход второго мультиплексора соединен с вторым входом элемента РАВНОЗНАЧНОСТЬ, выход которого соединен с первым информационным входом первого мультиплексора, второй информационный вход которого соединен с вторым информационным входом второго мультиплексора и первым входом элемента ИСКЛЮЧАЮЩЕЕ ИЛИ, выход которого соединен с вторым входом элемента И-НЕ этого же разряда устройства.
5. Устройство по п.4, отличающееся тем, что в схеме распространения переносов выход переноса в q-й разряд соединен с входом переноса из (q - 1)-го разряда (где q = 2, 3, ..., N).
6. Устройство по п.4, отличающееся тем, что схема формирования переносов содержит по N логических элементов И и ИЛИ, причем каждый вход распространения переноса через соответствующий разряд схемы подключен к первому входу соответствующего элемента И, выход которого соединен с первым входом соответствующего элемента ИЛИ, второй вход и выход которого подключены соответственно к входу генерации переноса в соответствующем разряде схемы и выходу переноса в этот же разряд схемы, второй вход первого элемента И является входом начального переноса схемы, второй вход q-го элемента И соединен с выходом (q - 1)-го элемента ИЛИ (где q = 2, 3, ..., N).
7. Вычислительное устройство, содержащее N/2 дешифраторов разрядов множителя и матрицу умножения из N столбцов по N/2 ячеек, каждая из которых состоит из схемы формирования разряда частичного произведения и одноразрядного сумматора, причем соответствующие управляющие входы схем формирования разряда частичного произведения i-x ячеек всех столбцов матрицы умножения объединены и подключены к соответствующим выходам i-го дешифратора разрядов множителя (где i = 1, 2, ..., N/2), первый вход одноразрядного сумматора каждой ячейки матрицы умножения соединен с выходом схемы формирования разряда частичного произведения этой же ячейки матрицы умножения, отличающееся тем, что в него введены N/2 логических элементов ЗАПРЕТ, элемент задержки и N-разрядный сдвиговый регистр, каждый разряд которого состоит из логического элемента ЗАПРЕТ, мультиплексора и триггера, а в каждую ячейку матрицы умножения введены первый и второй триггеры, выполняющие функции ячеек памяти соответственно первого и второго блоков памяти устройства, логический элемент ЗАПРЕТ и мультиплексор, причем вход каждого разряда вектора первых операндов устройства подключен к второму входу одноразрядного сумматора первой ячейки соответствующего столбца матрицы умножения, управляющие входы мультиплексоров и инверсные входы элементов ЗАПРЕТ всех ячеек каждого столбца которой объединены и подключены к соответствующему входу установки границ данных в векторах первых операндов и результатов устройства, каждый вход установки границ данных в векторах вторых операндов которого подключен к инверсному входу соответствующего элемента ЗАПРЕТ, выход которого соединен с первым входом соответствующего дешифратора разрядов множителя, второй и третий входы i-го дешифратора разрядов множителя подключены к входам соответственно (2i - 1)-го и 2i-го разрядов вектора вторых операндов устройства (где j = 2, 3, ..., N/2), прямой вход j-го элемента ЗАПРЕТ соединен с третьим входом (j - 1)-го дешифратора разрядов множителя (где j = 2, 3, ..., N/2), вход каждого разряда вектора третьих операндов устройства подключен к второму информационному входу мультиплексора соответствующего разряда сдвигового регистра, первый информационный вход которого соединен с выходом элемента ЗАПРЕТ этого же разряда сдвигового регистра, первый инверсный вход которого подключен к соответствующему входу установки границ данных в векторах третьих операндов устройства, второй инверсный вход элемента ЗАПРЕТ q-го разряда сдвигового регистра соединен с первым инверсным входом элемента ЗАПРЕТ (q - 1)-го разряда сдвигового регистра (где q = 2, 3, ..., N), прямой вход элемента ЗАПРЕТ r-го разряда сдвигового регистра соединен с выходом триггера (r - 2)-го разряда сдвигового регистра (где r = 3, 4, ..., N), управляющие входы мультиплексоров всех разрядов сдвигового регистра объединены и подключены к первому входу управления загрузкой векторов третьих операндов в первый блок памяти устройства, входы синхронизации триггеров всех разрядов сдвигового регистра и вход элемента задержки объединены и подключены к второму входу управления загрузкой векторов третьих операндов в первый блок памяти устройства, выход мультиплексора каждого разряда сдвигового регистра соединен с информационным входом триггера этого же разряда сдвигового регистра, выход которого соединен с информационным входом первого триггера последней ячейки соответствующего столбца матрицы умножения, выход первого триггера j-й ячейки каждого столбца матрицы умножения соединен с информационным входом первого триггера (j - 1)-й ячейки этого же столбца матрицы умножения (где j = 2, 3, . . ., N/2), входы синхронизации первых триггеров всех ячеек матрицы умножения объединены и подключены к выходу элемента задержки, входы синхронизации вторых триггеров всех ячеек матрицы умножения объединены и подключены к входу управления пересылкой матрицы третьих операндов из первого блока памяти во второй блок памяти устройства, второй информационный вход схемы формирования разряда частичного произведения i-й ячейки q-го столбца матрицы умножения соединен с выходом элемента ЗАПРЕТ i -й ячейки (q - 1)-го столбца матрицы умножения (где i = 1, 2, ..., N/2 и q = 2, 3, ..., N), второй вход одноразрядного сумматора j-й ячейки каждого столбца матрицы умножения соединен с выходом суммы одноразрядного сумматора (j - 1)-й ячейки этого же столбца матрицы умножения (где j = 2, 3, ..., N/2), третий вход одноразрядного сумматора j-й ячейки q-го столбца матрицы умножения соединен с выходом мультиплексора (j - 1)-й ячейки (q - 1-)го столбца матрицы умножения (где j = 2, 3, ..., N/2 и q = 2, 3, ..., N), третий вход одноразрядного сумматора j-й ячейки первого столбца матрицы умножения соединен с третьим выходом (j - 1)-го дешифратора разрядов множителя где (j = 2, 3, ..., N/2), выход суммы одноразрядного сумматора последней ячейки каждого столбца матрицы умножения является выходом соответствующего разряда вектора слагаемых результатов устройства, выход мультиплексора последней ячейки (q - 1)-го столбца матрицы умножения является выходом q-го разряда вектора вторых слагаемых результатов устройства (где q = 2, 3, ..., N), первый разряд вектора вторых слагаемых результатов которого подключен к третьему выходу (N/2)-го дешифратора разрядов множителя, второй инверсный и прямой входы элемента ЗАПРЕТ первого разряда и прямой вход элемента ЗАПРЕТ второго разряда сдвигового регистра, вторые информационные входы схем формирования разряда частичного произведения всех ячеек первого столбца матрицы умножения, третьи входы одноразрядных сумматоров первых ячеек всех столбцов матрицы умножения и прямой вход первого элемента ЗАПРЕТ объединены и подключены к шине логического нуля, а в каждой ячейке матрицы умножения выход первого триггера соединен с информационным входом второго триггера, выход которого соединен с прямым входом элемента ЗАПРЕТ и первым информационным входом схемы формирования разряда частичного произведения, третий управляющий вход которой соединен с вторым информационным входом мультиплексора, первый информационный вход которого соединен с выходом переноса одноразрядного сумматора этой же ячейки матрицы умножения.
8. Сумматор, содержащий формирования переносов, а в каждом из N своих разрядов - полусумматор и логический элемент ИСКЛЮЧАЮЩЕЕ ИЛИ, причем вход каждого разряда вектора первых слагаемых сумматора и вход соответствующего разряда вектора вторых слагаемых сумматора подключены соответственно к первому и второму входам полусумматора соответствующего разряда сумматора, выход суммы которого соединен с первым входом элемента ИСКЛЮЧАЮЩЕЕ ИЛИ этого же разряда сумматора, выход которого является выходом соответствующего разряда вектора сумм сумматора, второй вход элемента ИСКЛЮЧАЮЩЕЕ ИЛИ или q-го разряда сумматора соединен с выходом переноса в q-й разряд схемы формирования переносов (где q = 2, 3, ..., N), вход начального переноса которой и второй вход элемента ИСКЛЮЧАЮЩЕЕ ИЛИ первого разряда сумматора подключены к шине логического нуля, отличающийся тем, что в каждый его разряд введены первый и второй логические элементы ЗАПРЕТ, причем выход суммы полусумматора каждого разряда сумматора соединен с прямым входом первого элемента ЗАПРЕТ этого же разряда сумматора, выход которого соединен с входом распространения переноса через соответствующий разряд схемы формирования переносов, выход переноса полусумматора каждого разряда сумматора соединен с прямым входом второго элемента ЗАПРЕТ этого же разряда сумматора, выход которого соединен с входом генерации переноса в соответствующем разряде схемы формирования переносов, инверсные входы первого и второго элементов ЗАПРЕТ каждого разряда сумматора объединены и подключены к соответствующему входу установки границ данных в векторах слагаемых и сумм сумматора.
RU98110876/09A 1998-06-16 1998-06-16 Нейропроцессор, устройство для вычисления функций насыщения, вычислительное устройство и сумматор RU2131145C1 (ru)

Priority Applications (7)

Application Number Priority Date Filing Date Title
RU98110876/09A RU2131145C1 (ru) 1998-06-16 1998-06-16 Нейропроцессор, устройство для вычисления функций насыщения, вычислительное устройство и сумматор
JP11556597A JP2000514230A (ja) 1998-06-16 1998-12-31 ニューラル・プロセッサ、飽和ユニット、計算ユニットおよび加算器回路
US09/486,495 US6539368B1 (en) 1998-06-16 1998-12-31 Neural processor, saturation unit, calculation unit and adder circuit
KR1019997010077A KR100336266B1 (ko) 1998-06-16 1998-12-31 신경 프로세서, 포화 유니트, 계산 유니트 및 가산기 회로
PCT/RU1998/000449 WO1999066419A1 (fr) 1998-06-16 1998-12-31 Neuroprocesseur, dispositif de calcul de fonctions de saturation, dispositif de calcul et additionneur
EP98965909A EP1014274A4 (en) 1998-06-16 1998-12-31 NEUROPROCESSOR, SATURATION FUNCTION CALCULATION DEVICE, CALCULATION DEVICE AND ADDITIONER
AU21919/99A AU2191999A (en) 1998-06-16 1998-12-31 Neuroprocessor, device for calculating saturation functions, calculation device and adder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU98110876/09A RU2131145C1 (ru) 1998-06-16 1998-06-16 Нейропроцессор, устройство для вычисления функций насыщения, вычислительное устройство и сумматор

Publications (2)

Publication Number Publication Date
RU98110876A RU98110876A (ru) 1999-05-27
RU2131145C1 true RU2131145C1 (ru) 1999-05-27

Family

ID=20206976

Family Applications (1)

Application Number Title Priority Date Filing Date
RU98110876/09A RU2131145C1 (ru) 1998-06-16 1998-06-16 Нейропроцессор, устройство для вычисления функций насыщения, вычислительное устройство и сумматор

Country Status (7)

Country Link
US (1) US6539368B1 (ru)
EP (1) EP1014274A4 (ru)
JP (1) JP2000514230A (ru)
KR (1) KR100336266B1 (ru)
AU (1) AU2191999A (ru)
RU (1) RU2131145C1 (ru)
WO (1) WO1999066419A1 (ru)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2473126C1 (ru) * 2011-10-28 2013-01-20 Федеральное государственное унитарное предприятие "Научно-производственное объединение автоматики имени академика Н.А. Семихатова" Нейропроцессор
RU2486576C1 (ru) * 2012-04-17 2013-06-27 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Вятский государственный университет ФГБОУ ВПО "ВятГУ" Однородная вычислительная среда для конвейерных вычислений суммы m n-разрядных чисел
RU2553098C2 (ru) * 2013-08-23 2015-06-10 Федеральное государственное унитарное предприятие "Научно-производственное объединение автоматики имени академика Н.А. Семихатова" Нейровычислитель
RU2595906C1 (ru) * 2015-03-13 2016-08-27 Федеральное государственное бюджетное образовательное учреждение высшего образования "Кубанский государственный технологический университет" (ФГБОУ ВО "КубГТУ") Устройство для вычисления функций
RU2708501C1 (ru) * 2019-05-21 2019-12-09 Федеральное государственное бюджетное образовательное учреждение высшего образования "Юго-Западный государственный университет" (ЮЗГУ) Параллельно-последовательный сумматор-вычитатель старшими разрядами вперед на нейронах
RU2715177C1 (ru) * 2019-06-13 2020-02-25 Федеральное государственное бюджетное образовательное учреждение высшего образования "Юго-Западный государственный университет" (ЮЗГУ) Сумматор-вычислитель на элементах нейронной логики

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60138145D1 (de) * 2000-01-07 2009-05-07 Nippon Telegraph & Telephone Funktionsrekonfigurierbare Halbleitervorrichtung und integrierte Schaltung zum Konfigurieren der Halbleitervorrichtung
US6836767B2 (en) * 2001-10-03 2004-12-28 International Business Machines Corporation Pipelined hardware implementation of a neural network circuit
DE10311323A1 (de) * 2003-03-14 2004-09-30 Infineon Technologies Ag Vorrichtung zur Synchronisation eines Mobilfunkempfängers auf eine Rahmenstruktur eines empfangenen Funksignals
US8190863B2 (en) * 2004-07-02 2012-05-29 Intel Corporation Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
US7600104B2 (en) * 2006-08-15 2009-10-06 Peter Neumann Method and system for parallel vector data processing of vector data having a number of data elements including a defined first bit-length
US8429107B2 (en) * 2009-11-04 2013-04-23 International Business Machines Corporation System for address-event-representation network simulation
FR2980586A1 (fr) * 2011-09-22 2013-03-29 St Microelectronics Grenoble 2 Dispositif et procede de determination de la distance a un objet
US9235799B2 (en) 2011-11-26 2016-01-12 Microsoft Technology Licensing, Llc Discriminative pretraining of deep neural networks
US9477925B2 (en) * 2012-11-20 2016-10-25 Microsoft Technology Licensing, Llc Deep neural networks training for speech and pattern recognition
CN106485322B (zh) * 2015-10-08 2019-02-26 上海兆芯集成电路有限公司 同时执行长短期记忆胞计算的神经网络单元
JP6890615B2 (ja) * 2016-05-26 2021-06-18 タータン エーアイ リミテッド ディープニューラルネットワークについての加速器
KR102656190B1 (ko) 2016-11-24 2024-04-11 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치의 액세스 방법
KR102224510B1 (ko) * 2016-12-09 2021-03-05 베이징 호라이즌 인포메이션 테크놀로지 컴퍼니 리미티드 데이터 관리를 위한 시스템들 및 방법들
CN108241484B (zh) * 2016-12-26 2021-10-15 上海寒武纪信息科技有限公司 基于高带宽存储器的神经网络计算装置和方法
US11144820B2 (en) * 2017-02-28 2021-10-12 Microsoft Technology Licensing, Llc Hardware node with position-dependent memories for neural network processing
US10261786B2 (en) 2017-03-09 2019-04-16 Google Llc Vector processing unit
US11615297B2 (en) 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US11238334B2 (en) 2017-04-04 2022-02-01 Hailo Technologies Ltd. System and method of input alignment for efficient vector operations in an artificial neural network
US11544545B2 (en) 2017-04-04 2023-01-03 Hailo Technologies Ltd. Structured activation based sparsity in an artificial neural network
US11551028B2 (en) 2017-04-04 2023-01-10 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network
JP7315317B2 (ja) * 2018-11-09 2023-07-26 株式会社Preferred Networks プロセッサおよびプロセッサのデータ転送方法
US20200242445A1 (en) * 2019-01-26 2020-07-30 Mipsology SAS Generic quantization of artificial neural networks
US11625583B2 (en) * 2019-02-13 2023-04-11 Mipsology SAS Quality monitoring and hidden quantization in artificial neural network computations
US11604972B2 (en) 2019-06-28 2023-03-14 Microsoft Technology Licensing, Llc Increased precision neural processing element
CN111176582A (zh) * 2019-12-31 2020-05-19 北京百度网讯科技有限公司 矩阵存储方法、矩阵访问方法、装置和电子设备
RU201114U1 (ru) * 2020-07-20 2020-11-27 Владислав Сергеевич Емельянов Устройство для расчета рационального количества изделий, подвергаемых диагностированию
US11874900B2 (en) 2020-09-29 2024-01-16 Hailo Technologies Ltd. Cluster interlayer safety mechanism in an artificial neural network processor
US11811421B2 (en) 2020-09-29 2023-11-07 Hailo Technologies Ltd. Weights safety mechanism in an artificial neural network processor
US11237894B1 (en) 2020-09-29 2022-02-01 Hailo Technologies Ltd. Layer control unit instruction addressing safety mechanism in an artificial neural network processor
US11263077B1 (en) 2020-09-29 2022-03-01 Hailo Technologies Ltd. Neural network intermediate results safety mechanism in an artificial neural network processor
US11221929B1 (en) 2020-09-29 2022-01-11 Hailo Technologies Ltd. Data stream fault detection mechanism in an artificial neural network processor

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU690477A1 (ru) * 1977-06-01 1979-10-05 Предприятие П/Я А-1639 Цифровое устройство ограничени числа по модулю
DE3323607A1 (de) 1983-06-30 1985-01-03 Siemens AG, 1000 Berlin und 8000 München Digitales rechenwerk
JPS62229440A (ja) 1986-03-31 1987-10-08 Toshiba Corp 配列乗算器
GB8612453D0 (en) * 1986-05-22 1986-07-02 Inmos Ltd Multistage digital signal multiplication & addition
DE3880409T2 (de) * 1987-09-23 1993-11-25 France Telecom Binäre Additions- und Multiplikationsvorrichtung.
GB2211966A (en) * 1987-11-02 1989-07-12 Philips Nv Digital integrated circuit
US5047975A (en) 1987-11-16 1991-09-10 Intel Corporation Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode
US5165010A (en) * 1989-01-06 1992-11-17 Hitachi, Ltd. Information processing system
JP2679738B2 (ja) * 1989-03-01 1997-11-19 富士通株式会社 ニューロコンピュータにおける学習処理方式
US5278945A (en) * 1992-01-10 1994-01-11 American Neuralogical, Inc. Neural processor apparatus
RU2022339C1 (ru) * 1992-01-31 1994-10-30 Винницкий политехнический институт Множительное устройство
RU2074414C1 (ru) * 1993-08-02 1997-02-27 Акционерное общество закрытого типа "Нейрома-РД" Нейроимитатор
US5630024A (en) * 1994-01-19 1997-05-13 Nippon Telegraph And Telephone Corporation Method and apparatus for processing using neural network with reduced calculation amount
RU2097826C1 (ru) * 1994-03-22 1997-11-27 Курский государственный технический университет Параллельный асинхронный сумматор
US5644519A (en) * 1995-04-07 1997-07-01 Motorola, Inc. Method and apparatus for a multiply and accumulate circuit having a dynamic saturation range
EP0892956A4 (en) * 1996-02-09 2002-07-24 Sarnoff Corp METHOD AND APPARATUS FOR FORMING A NEURONAL NETWORK FOR THE DETECTION AND CLASSIFICATION OF OBJECTS WITH UNCERTAINED TRAINING DATA

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Иванов Ю.П. и др. Основные направления разработки аппаратных средств реализации нейросетевых алгоритмов. Тезисы докладов Второй Всероссийской конференции "Нейрокомпьютеры и их применение". - М.: Нейрокомпьютер, 1996, N 1, 2, c.47-49. *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2473126C1 (ru) * 2011-10-28 2013-01-20 Федеральное государственное унитарное предприятие "Научно-производственное объединение автоматики имени академика Н.А. Семихатова" Нейропроцессор
RU2486576C1 (ru) * 2012-04-17 2013-06-27 Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования Вятский государственный университет ФГБОУ ВПО "ВятГУ" Однородная вычислительная среда для конвейерных вычислений суммы m n-разрядных чисел
RU2553098C2 (ru) * 2013-08-23 2015-06-10 Федеральное государственное унитарное предприятие "Научно-производственное объединение автоматики имени академика Н.А. Семихатова" Нейровычислитель
RU2595906C1 (ru) * 2015-03-13 2016-08-27 Федеральное государственное бюджетное образовательное учреждение высшего образования "Кубанский государственный технологический университет" (ФГБОУ ВО "КубГТУ") Устройство для вычисления функций
RU2708501C1 (ru) * 2019-05-21 2019-12-09 Федеральное государственное бюджетное образовательное учреждение высшего образования "Юго-Западный государственный университет" (ЮЗГУ) Параллельно-последовательный сумматор-вычитатель старшими разрядами вперед на нейронах
RU2715177C1 (ru) * 2019-06-13 2020-02-25 Федеральное государственное бюджетное образовательное учреждение высшего образования "Юго-Западный государственный университет" (ЮЗГУ) Сумматор-вычислитель на элементах нейронной логики

Also Published As

Publication number Publication date
KR20010020446A (ko) 2001-03-15
EP1014274A4 (en) 2003-10-08
KR100336266B1 (ko) 2002-05-13
JP2000514230A (ja) 2000-10-24
US6539368B1 (en) 2003-03-25
EP1014274A1 (en) 2000-06-28
WO1999066419A1 (fr) 1999-12-23
AU2191999A (en) 2000-01-05

Similar Documents

Publication Publication Date Title
RU2131145C1 (ru) Нейропроцессор, устройство для вычисления функций насыщения, вычислительное устройство и сумматор
EP3835942B1 (en) Systems and methods for loading weights into a tensor processing block
US10915297B1 (en) Hardware accelerator for systolic matrix multiplication
Kung et al. A systolic 2-D convolution chip
US10713214B1 (en) Hardware accelerator for outer-product matrix multiplication
EP0486684A1 (en) Virtual neurocomputer architectures for neural networks
RU98110876A (ru) Нейропроцессор, устройство для вычисления функций насыщения, вычислительное устройство и сумматор
US4769779A (en) Systolic complex multiplier
US7558943B2 (en) Processing unit for broadcast parallel processing
JPH08263316A (ja) モンゴメリ法によるモジュラ乗算の実施方法
EP3835940A1 (en) Implementing large multipliers in tensor arrays
US5243688A (en) Virtual neurocomputer architectures for neural networks
US3878985A (en) Serial-parallel multiplier using booth{3 s algorithm with combined carry-borrow feature
US4796219A (en) Serial two&#39;s complement multiplier
US6598061B1 (en) System and method for performing modular multiplication
Pichhode et al. FPGA implementation of efficient Vedic multiplier
US20080256165A1 (en) Full-Adder Modules and Multiplier Devices Using the Same
US20220019407A1 (en) In-memory computation circuit and method
US10908879B2 (en) Fast vector multiplication and accumulation circuit
US7167885B2 (en) Emod a fast modulus calculation for computer systems
Dey et al. An application specific processor architecture with 3D integration for recurrent neural networks
Saqib et al. A parallel architecture for computing scalar multiplication on hessian elliptic curves
US11960853B2 (en) Folded integer multiplication for field-programmable gate arrays
Bessalah et al. Left to right serial multiplier for large numbers on FPGA
Ramacher et al. A general-purpose signal processor architecture for neurocomputing and preprocessing applications

Legal Events

Date Code Title Description
NF4A Reinstatement of patent